#include "LegalizeTypes.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
usingnamespacellvm;
#define DEBUG_TYPE …
static RTLIB::Libcall GetFPLibCall(EVT VT,
RTLIB::Libcall Call_F32,
RTLIB::Libcall Call_F64,
RTLIB::Libcall Call_F80,
RTLIB::Libcall Call_F128,
RTLIB::Libcall Call_PPCF128) { … }
void DAGTypeLegalizer::SoftenFloatResult(SDNode *N, unsigned ResNo) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_Unary(SDNode *N, RTLIB::Libcall LC) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_Binary(SDNode *N, RTLIB::Libcall LC) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_BITCAST(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FREEZE(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_ARITH_FENCE(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_MERGE_VALUES(SDNode *N,
unsigned ResNo) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_BUILD_PAIR(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_ConstantFP(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_EXTRACT_ELEMENT(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_EXTRACT_VECTOR_ELT(SDNode *N, unsigned ResNo) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FABS(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FMINNUM(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FMAXNUM(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FMINIMUMNUM(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FMAXIMUMNUM(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FADD(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FACOS(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FASIN(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FATAN(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FCBRT(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FCEIL(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FCOPYSIGN(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FCOS(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FCOSH(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FDIV(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FEXP(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FEXP2(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FEXP10(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FFLOOR(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FLOG(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FLOG2(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FLOG10(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FMA(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FMUL(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FNEARBYINT(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FNEG(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FP_EXTEND(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FP16_TO_FP(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_BF16_TO_FP(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FP_ROUND(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FPOW(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_ExpOp(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FFREXP(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FREM(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FRINT(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FROUND(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FROUNDEVEN(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FSIN(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FSINH(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FSQRT(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FSUB(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FTAN(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FTANH(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_FTRUNC(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_LOAD(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_ATOMIC_LOAD(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_SELECT(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_SELECT_CC(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_UNDEF(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_VAARG(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_XINT_TO_FP(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_VECREDUCE(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatRes_VECREDUCE_SEQ(SDNode *N) { … }
bool DAGTypeLegalizer::SoftenFloatOperand(SDNode *N, unsigned OpNo) { … }
SDValue DAGTypeLegalizer::SoftenFloatOp_BITCAST(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatOp_FP_ROUND(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatOp_BR_CC(SDNode *N) { … }
static RTLIB::Libcall findFPToIntLibcall(EVT SrcVT, EVT RetVT, EVT &Promoted,
bool Signed) { … }
SDValue DAGTypeLegalizer::SoftenFloatOp_FP_TO_XINT(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatOp_FP_TO_XINT_SAT(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatOp_SELECT_CC(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatOp_SETCC(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatOp_STORE(SDNode *N, unsigned OpNo) { … }
SDValue DAGTypeLegalizer::SoftenFloatOp_ATOMIC_STORE(SDNode *N, unsigned OpNo) { … }
SDValue DAGTypeLegalizer::SoftenFloatOp_FCOPYSIGN(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatOp_Unary(SDNode *N, RTLIB::Libcall LC) { … }
SDValue DAGTypeLegalizer::SoftenFloatOp_LROUND(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatOp_LLROUND(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatOp_LRINT(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftenFloatOp_LLRINT(SDNode *N) { … }
void DAGTypeLegalizer::ExpandFloatResult(SDNode *N, unsigned ResNo) { … }
void DAGTypeLegalizer::ExpandFloatRes_ConstantFP(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_Unary(SDNode *N, RTLIB::Libcall LC,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_Binary(SDNode *N, RTLIB::Libcall LC,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FABS(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FMINNUM(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FMAXNUM(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FMINIMUMNUM(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FMAXIMUMNUM(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FADD(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FACOS(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FASIN(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FATAN(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FCBRT(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FCEIL(SDNode *N,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FCOPYSIGN(SDNode *N,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FCOS(SDNode *N,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FCOSH(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FDIV(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FEXP(SDNode *N,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FEXP2(SDNode *N,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FEXP10(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FFLOOR(SDNode *N,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FLOG(SDNode *N,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FLOG2(SDNode *N,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FLOG10(SDNode *N,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FMA(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FMUL(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FNEARBYINT(SDNode *N,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FNEG(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FP_EXTEND(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FPOW(SDNode *N,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FPOWI(SDNode *N,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FLDEXP(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FREEZE(SDNode *N,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FREM(SDNode *N,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FRINT(SDNode *N,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FROUND(SDNode *N,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FROUNDEVEN(SDNode *N,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FSIN(SDNode *N,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FSINH(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FSQRT(SDNode *N,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FSUB(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FTAN(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FTANH(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_FTRUNC(SDNode *N,
SDValue &Lo, SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_LOAD(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
void DAGTypeLegalizer::ExpandFloatRes_XINT_TO_FP(SDNode *N, SDValue &Lo,
SDValue &Hi) { … }
bool DAGTypeLegalizer::ExpandFloatOperand(SDNode *N, unsigned OpNo) { … }
void DAGTypeLegalizer::FloatExpandSetCCOperands(SDValue &NewLHS,
SDValue &NewRHS,
ISD::CondCode &CCCode,
const SDLoc &dl, SDValue &Chain,
bool IsSignaling) { … }
SDValue DAGTypeLegalizer::ExpandFloatOp_BR_CC(SDNode *N) { … }
SDValue DAGTypeLegalizer::ExpandFloatOp_FCOPYSIGN(SDNode *N) { … }
SDValue DAGTypeLegalizer::ExpandFloatOp_FP_ROUND(SDNode *N) { … }
SDValue DAGTypeLegalizer::ExpandFloatOp_FP_TO_XINT(SDNode *N) { … }
SDValue DAGTypeLegalizer::ExpandFloatOp_SELECT_CC(SDNode *N) { … }
SDValue DAGTypeLegalizer::ExpandFloatOp_SETCC(SDNode *N) { … }
SDValue DAGTypeLegalizer::ExpandFloatOp_STORE(SDNode *N, unsigned OpNo) { … }
SDValue DAGTypeLegalizer::ExpandFloatOp_LROUND(SDNode *N) { … }
SDValue DAGTypeLegalizer::ExpandFloatOp_LLROUND(SDNode *N) { … }
SDValue DAGTypeLegalizer::ExpandFloatOp_LRINT(SDNode *N) { … }
SDValue DAGTypeLegalizer::ExpandFloatOp_LLRINT(SDNode *N) { … }
static ISD::NodeType GetPromotionOpcode(EVT OpVT, EVT RetVT) { … }
static ISD::NodeType GetPromotionOpcodeStrict(EVT OpVT, EVT RetVT) { … }
bool DAGTypeLegalizer::PromoteFloatOperand(SDNode *N, unsigned OpNo) { … }
SDValue DAGTypeLegalizer::PromoteFloatOp_BITCAST(SDNode *N, unsigned OpNo) { … }
SDValue DAGTypeLegalizer::PromoteFloatOp_FAKE_USE(SDNode *N, unsigned OpNo) { … }
SDValue DAGTypeLegalizer::PromoteFloatOp_FCOPYSIGN(SDNode *N, unsigned OpNo) { … }
SDValue DAGTypeLegalizer::PromoteFloatOp_UnaryOp(SDNode *N, unsigned OpNo) { … }
SDValue DAGTypeLegalizer::PromoteFloatOp_FP_TO_XINT_SAT(SDNode *N,
unsigned OpNo) { … }
SDValue DAGTypeLegalizer::PromoteFloatOp_FP_EXTEND(SDNode *N, unsigned OpNo) { … }
SDValue DAGTypeLegalizer::PromoteFloatOp_STRICT_FP_EXTEND(SDNode *N,
unsigned OpNo) { … }
SDValue DAGTypeLegalizer::PromoteFloatOp_SELECT_CC(SDNode *N, unsigned OpNo) { … }
SDValue DAGTypeLegalizer::PromoteFloatOp_SETCC(SDNode *N, unsigned OpNo) { … }
SDValue DAGTypeLegalizer::PromoteFloatOp_STORE(SDNode *N, unsigned OpNo) { … }
SDValue DAGTypeLegalizer::PromoteFloatOp_ATOMIC_STORE(SDNode *N,
unsigned OpNo) { … }
void DAGTypeLegalizer::PromoteFloatResult(SDNode *N, unsigned ResNo) { … }
SDValue DAGTypeLegalizer::PromoteFloatRes_BITCAST(SDNode *N) { … }
SDValue DAGTypeLegalizer::PromoteFloatRes_ConstantFP(SDNode *N) { … }
SDValue DAGTypeLegalizer::PromoteFloatRes_EXTRACT_VECTOR_ELT(SDNode *N) { … }
SDValue DAGTypeLegalizer::PromoteFloatRes_FCOPYSIGN(SDNode *N) { … }
SDValue DAGTypeLegalizer::PromoteFloatRes_UnaryOp(SDNode *N) { … }
SDValue DAGTypeLegalizer::PromoteFloatRes_BinOp(SDNode *N) { … }
SDValue DAGTypeLegalizer::PromoteFloatRes_FMAD(SDNode *N) { … }
SDValue DAGTypeLegalizer::PromoteFloatRes_ExpOp(SDNode *N) { … }
SDValue DAGTypeLegalizer::PromoteFloatRes_FFREXP(SDNode *N) { … }
SDValue DAGTypeLegalizer::PromoteFloatRes_FP_ROUND(SDNode *N) { … }
SDValue DAGTypeLegalizer::PromoteFloatRes_STRICT_FP_ROUND(SDNode *N) { … }
SDValue DAGTypeLegalizer::PromoteFloatRes_LOAD(SDNode *N) { … }
SDValue DAGTypeLegalizer::PromoteFloatRes_ATOMIC_LOAD(SDNode *N) { … }
SDValue DAGTypeLegalizer::PromoteFloatRes_SELECT(SDNode *N) { … }
SDValue DAGTypeLegalizer::PromoteFloatRes_SELECT_CC(SDNode *N) { … }
SDValue DAGTypeLegalizer::PromoteFloatRes_XINT_TO_FP(SDNode *N) { … }
SDValue DAGTypeLegalizer::PromoteFloatRes_UNDEF(SDNode *N) { … }
SDValue DAGTypeLegalizer::PromoteFloatRes_VECREDUCE(SDNode *N) { … }
SDValue DAGTypeLegalizer::PromoteFloatRes_VECREDUCE_SEQ(SDNode *N) { … }
SDValue DAGTypeLegalizer::BitcastToInt_ATOMIC_SWAP(SDNode *N) { … }
void DAGTypeLegalizer::SoftPromoteHalfResult(SDNode *N, unsigned ResNo) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfRes_ARITH_FENCE(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfRes_BITCAST(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfRes_ConstantFP(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfRes_EXTRACT_VECTOR_ELT(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfRes_FCOPYSIGN(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfRes_FMAD(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfRes_ExpOp(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfRes_FFREXP(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfRes_FP_ROUND(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfRes_LOAD(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfRes_ATOMIC_LOAD(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfRes_SELECT(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfRes_SELECT_CC(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfRes_XINT_TO_FP(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfRes_UNDEF(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfRes_UnaryOp(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfRes_BinOp(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfRes_VECREDUCE(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfRes_VECREDUCE_SEQ(SDNode *N) { … }
bool DAGTypeLegalizer::SoftPromoteHalfOperand(SDNode *N, unsigned OpNo) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfOp_BITCAST(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfOp_FAKE_USE(SDNode *N, unsigned OpNo) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfOp_FCOPYSIGN(SDNode *N,
unsigned OpNo) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfOp_FP_EXTEND(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfOp_FP_TO_XINT(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfOp_FP_TO_XINT_SAT(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfOp_SELECT_CC(SDNode *N,
unsigned OpNo) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfOp_SETCC(SDNode *N) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfOp_STORE(SDNode *N, unsigned OpNo) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfOp_ATOMIC_STORE(SDNode *N,
unsigned OpNo) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfOp_STACKMAP(SDNode *N, unsigned OpNo) { … }
SDValue DAGTypeLegalizer::SoftPromoteHalfOp_PATCHPOINT(SDNode *N,
unsigned OpNo) { … }