LLVM: lib/Target/VE/VEISelLowering.cpp File Reference (original) (raw)
Go to the source code of this file.
| Macros | |
|---|---|
| #define | DEBUG_TYPE "ve-lower" |
| #define | HANDLE_VP_TO_VVP(VP_OPC, VVP_NAME) |
| #define | ADD_VVP_OP(VVP_NAME, ISD_NAME) |
| #define | ADD_UNARY_VVP_OP(VVPNAME, SDNAME) |
| #define | ADD_BINARY_VVP_OP(VVPNAME, VPNAME, SDNAME) |
| #define | ADD_TERNARY_VVP_OP(VVPNAME, SDNAME) |
| #define | ADD_BINARY_VVP_OP_COMPACT(NAME) |
| #define | REGISTER_PACKED(OPC) |
| #define | ADD_REDUCE_VVP_OP(OPC, SDNAME) |
| #define | HANDLE_VVP_REDUCE_TO_SCALAR(VVP_RED_ISD, REDUCE_ISD) |
| #define | HELPER_REDUCTION(OPC, SCALAR_OPC) |
| #define | ADD_VVP_OP(VVP_NAME, ...) |
| #define | HANDLE_VP_TO_VVP(VPOPC, VVPOPC) |
| #define | ADD_UNARY_VVP_OP(VVPNAME, SDNAME) |
| #define | ADD_BINARY_VVP_OP(VVPNAME, VPNAME, SDNAME) |
| #define | ADD_TERNARY_VVP_OP(VVPNAME, SDNAME) |
| #define | ADD_BINARY_VVP_OP_COMPACT(NAME) |
| #define | REGISTER_PACKED(OPC) |
| #define | ADD_REDUCE_VVP_OP(OPC, SDNAME) |
| #define | HANDLE_VVP_REDUCE_TO_SCALAR(VVP_RED_ISD, REDUCE_ISD) |
| #define | HELPER_REDUCTION(OPC, SCALAR_OPC) |
| #define | ADD_VVP_OP(VVP_NAME, ISD_NAME) |
| #define | HANDLE_VP_TO_VVP(VPOPC, VVPOPC) |
| #define | ADD_UNARY_VVP_OP(VVPNAME, SDNAME) |
| #define | ADD_BINARY_VVP_OP(VVPNAME, VPNAME, SDNAME) |
| #define | ADD_TERNARY_VVP_OP(VVPNAME, SDNAME) |
| #define | ADD_BINARY_VVP_OP_COMPACT(NAME) |
| #define | REGISTER_PACKED(OPC) |
| #define | ADD_REDUCE_VVP_OP(OPC, SDNAME) |
| #define | HANDLE_VVP_REDUCE_TO_SCALAR(VVP_RED_ISD, REDUCE_ISD) |
| #define | HELPER_REDUCTION(OPC, SCALAR_OPC) |
◆ ADD_BINARY_VVP_OP [1/3]
| #define ADD_BINARY_VVP_OP | ( | VVPNAME, |
|---|---|---|
| VPNAME, | ||
| SDNAME ) |
Value:
ADD_VVP_OP(VVPNAME,SDNAME) \
HANDLE_VP_TO_VVP(VPNAME, VVPNAME)
◆ ADD_BINARY_VVP_OP [2/3]
| #define ADD_BINARY_VVP_OP | ( | VVPNAME, |
|---|---|---|
| VPNAME, | ||
| SDNAME ) |
Value:
ADD_VVP_OP(VVPNAME,SDNAME) \
HANDLE_VP_TO_VVP(VPNAME, VVPNAME)
◆ ADD_BINARY_VVP_OP [3/3]
| #define ADD_BINARY_VVP_OP | ( | VVPNAME, |
|---|---|---|
| VPNAME, | ||
| SDNAME ) |
Value:
ADD_VVP_OP(VVPNAME,SDNAME) \
HANDLE_VP_TO_VVP(VPNAME, VVPNAME)
◆ ADD_BINARY_VVP_OP_COMPACT [1/3]
| #define ADD_BINARY_VVP_OP_COMPACT | ( | NAME | ) |
|---|
Value:
ADD_BINARY_VVP_OP(VVP_##NAME,VP_##NAME,NAME)
◆ ADD_BINARY_VVP_OP_COMPACT [2/3]
| #define ADD_BINARY_VVP_OP_COMPACT | ( | NAME | ) |
|---|
Value:
ADD_BINARY_VVP_OP(VVP_##NAME,VP_##NAME,NAME)
◆ ADD_BINARY_VVP_OP_COMPACT [3/3]
| #define ADD_BINARY_VVP_OP_COMPACT | ( | NAME | ) |
|---|
Value:
ADD_BINARY_VVP_OP(VVP_##NAME,VP_##NAME,NAME)
◆ ADD_REDUCE_VVP_OP [1/3]
| #define ADD_REDUCE_VVP_OP | ( | OPC, |
|---|---|---|
| SDNAME ) |
◆ ADD_REDUCE_VVP_OP [2/3]
| #define ADD_REDUCE_VVP_OP | ( | OPC, |
|---|---|---|
| SDNAME ) |
◆ ADD_REDUCE_VVP_OP [3/3]
| #define ADD_REDUCE_VVP_OP | ( | OPC, |
|---|---|---|
| SDNAME ) |
◆ ADD_TERNARY_VVP_OP [1/3]
| #define ADD_TERNARY_VVP_OP | ( | VVPNAME, |
|---|---|---|
| SDNAME ) |
Value:
ADD_VVP_OP(VVPNAME,SDNAME)
◆ ADD_TERNARY_VVP_OP [2/3]
| #define ADD_TERNARY_VVP_OP | ( | VVPNAME, |
|---|---|---|
| SDNAME ) |
Value:
ADD_VVP_OP(VVPNAME,SDNAME)
◆ ADD_TERNARY_VVP_OP [3/3]
| #define ADD_TERNARY_VVP_OP | ( | VVPNAME, |
|---|---|---|
| SDNAME ) |
Value:
ADD_VVP_OP(VVPNAME,SDNAME)
◆ ADD_UNARY_VVP_OP [1/3]
| #define ADD_UNARY_VVP_OP | ( | VVPNAME, |
|---|---|---|
| SDNAME ) |
Value:
ADD_VVP_OP(VVPNAME,SDNAME)
◆ ADD_UNARY_VVP_OP [2/3]
| #define ADD_UNARY_VVP_OP | ( | VVPNAME, |
|---|---|---|
| SDNAME ) |
Value:
ADD_VVP_OP(VVPNAME,SDNAME)
◆ ADD_UNARY_VVP_OP [3/3]
| #define ADD_UNARY_VVP_OP | ( | VVPNAME, |
|---|---|---|
| SDNAME ) |
Value:
ADD_VVP_OP(VVPNAME,SDNAME)
◆ ADD_VVP_OP [1/3]
| #define ADD_VVP_OP | ( | VVP_NAME, |
|---|---|---|
| ISD_NAME ) |
Value:
setOperationAction(ISD::ISD_NAME, LegalVecVT, Custom);
◆ ADD_VVP_OP [2/3]
| #define ADD_VVP_OP | ( | VVP_NAME, |
|---|---|---|
| ISD_NAME ) |
◆ ADD_VVP_OP [3/3]
| #define ADD_VVP_OP | ( | VVP_NAME, |
|---|---|---|
| ... ) |
◆ DEBUG_TYPE
#define DEBUG_TYPE "ve-lower"
◆ HANDLE_VP_TO_VVP [1/3]
| #define HANDLE_VP_TO_VVP | ( | VP_OPC, |
|---|---|---|
| VVP_NAME ) |
Value:
setOperationAction(ISD::VP_OPC, LegalVecVT, Custom);
◆ HANDLE_VP_TO_VVP [2/3]
| #define HANDLE_VP_TO_VVP | ( | VPOPC, |
|---|---|---|
| VVPOPC ) |
◆ HANDLE_VP_TO_VVP [3/3]
| #define HANDLE_VP_TO_VVP | ( | VPOPC, |
|---|---|---|
| VVPOPC ) |
◆ HANDLE_VVP_REDUCE_TO_SCALAR [1/3]
| #define HANDLE_VVP_REDUCE_TO_SCALAR | ( | VVP_RED_ISD, |
|---|---|---|
| REDUCE_ISD ) |
◆ HANDLE_VVP_REDUCE_TO_SCALAR [2/3]
| #define HANDLE_VVP_REDUCE_TO_SCALAR | ( | VVP_RED_ISD, |
|---|---|---|
| REDUCE_ISD ) |
◆ HANDLE_VVP_REDUCE_TO_SCALAR [3/3]
| #define HANDLE_VVP_REDUCE_TO_SCALAR | ( | VVP_RED_ISD, |
|---|---|---|
| REDUCE_ISD ) |
◆ HELPER_REDUCTION [1/3]
| #define HELPER_REDUCTION | ( | OPC, |
|---|---|---|
| SCALAR_OPC ) |
Value:
ADD_REDUCE_VVP_OP(VVP_REDUCE_##OPC,VECREDUCE_##OPC) \
HANDLE_VP_TO_VVP(VP_REDUCE_##OPC, VVP_REDUCE_##OPC) \
HANDLE_VVP_REDUCE_TO_SCALAR(VVP_REDUCE_##OPC, SCALAR_OPC)
◆ HELPER_REDUCTION [2/3]
| #define HELPER_REDUCTION | ( | OPC, |
|---|---|---|
| SCALAR_OPC ) |
Value:
ADD_REDUCE_VVP_OP(VVP_REDUCE_##OPC,VECREDUCE_##OPC) \
HANDLE_VP_TO_VVP(VP_REDUCE_##OPC, VVP_REDUCE_##OPC) \
HANDLE_VVP_REDUCE_TO_SCALAR(VVP_REDUCE_##OPC, SCALAR_OPC)
◆ HELPER_REDUCTION [3/3]
| #define HELPER_REDUCTION | ( | OPC, |
|---|---|---|
| SCALAR_OPC ) |
Value:
ADD_REDUCE_VVP_OP(VVP_REDUCE_##OPC,VECREDUCE_##OPC) \
HANDLE_VP_TO_VVP(VP_REDUCE_##OPC, VVP_REDUCE_##OPC) \
HANDLE_VVP_REDUCE_TO_SCALAR(VVP_REDUCE_##OPC, SCALAR_OPC)
◆ REGISTER_PACKED [1/3]
| #define REGISTER_PACKED | ( | OPC | ) |
|---|
◆ REGISTER_PACKED [2/3]
| #define REGISTER_PACKED | ( | OPC | ) |
|---|
◆ REGISTER_PACKED [3/3]
| #define REGISTER_PACKED | ( | OPC | ) |
|---|
◆ decideComp()
◆ decideCompType()
| EVT decideCompType ( EVT SrcVT) | static |
|---|
◆ finalizeTS1AM()
◆ generateComparison()
◆ getParamCC()
| CCAssignFn * getParamCC | ( | CallingConv::ID | CallConv, |
|---|---|---|---|
| bool | IsVarArg ) |
◆ getReturnCC()
| CCAssignFn * getReturnCC | ( | CallingConv::ID | CallConv | ) |
|---|
◆ getSplatValue()
◆ getUniqueInsertion()
◆ isI32Insn()
Definition at line 2840 of file VEISelLowering.cpp.
References llvm::ISD::ADD, llvm::ISD::AND, llvm::ISD::BSWAP, llvm::ISD::CopyToReg, llvm::User::getOperand(), llvm::isa(), isI32InsnAllUses(), llvm::isIntVECondCode(), llvm::ISD::MUL, N, llvm::ISD::OR, llvm::ISD::SDIV, llvm::ISD::SELECT, llvm::ISD::SELECT_CC, llvm::ISD::SETCC, llvm::ISD::SHL, llvm::ISD::SINT_TO_FP, llvm::ISD::SMAX, llvm::ISD::SMIN, llvm::ISD::SRA, llvm::ISD::SRL, llvm::ISD::SUB, llvm::ISD::UDIV, llvm::ISD::UINT_TO_FP, and llvm::ISD::XOR.
Referenced by llvm::VETargetLowering::combineTRUNCATE(), and isI32InsnAllUses().
◆ isI32InsnAllUses()
◆ isMImm()
◆ isSimm7()
◆ lowerFRAMEADDR()
Definition at line 1673 of file VEISelLowering.cpp.
References llvm::Depth, DL, llvm::SelectionDAG::getCopyFromReg(), llvm::MachineFunction::getDataLayout(), llvm::SelectionDAG::getEntryNode(), llvm::MachineFunction::getFrameInfo(), llvm::SelectionDAG::getLoad(), llvm::SelectionDAG::getMachineFunction(), llvm::TargetLoweringBase::getPointerTy(), llvm::VESubtarget::getRegisterInfo(), and llvm::MachineFrameInfo::setFrameAddressIsTaken().
Referenced by llvm::VETargetLowering::LowerOperation(), and lowerRETURNADDR().
◆ lowerLoadF128()
Definition at line 1275 of file VEISelLowering.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, llvm::ISD::ADD, assert(), DL, llvm::dyn_cast(), llvm::MemSDNode::getAlign(), llvm::LoadSDNode::getBasePtr(), llvm::MemSDNode::getChain(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getLoad(), llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getMergeValues(), llvm::SDValue::getNode(), llvm::SelectionDAG::getNode(), llvm::LoadSDNode::getOffset(), llvm::MemSDNode::getPointerInfo(), llvm::SelectionDAG::getTargetConstant(), llvm::SDValue::getValueType(), llvm::SDValue::isUndef(), llvm::MemSDNode::isVolatile(), llvm::MachineMemOperand::MONone, llvm::MachineMemOperand::MOVolatile, SDValue(), and llvm::ISD::TokenFactor.
Referenced by llvm::VETargetLowering::lowerLOAD().
◆ lowerLoadI1()
Definition at line 1320 of file VEISelLowering.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, llvm::ISD::ADD, assert(), DL, llvm::dyn_cast(), llvm::MemSDNode::getAlign(), llvm::LoadSDNode::getBasePtr(), llvm::MemSDNode::getChain(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getLoad(), llvm::SelectionDAG::getMachineNode(), llvm::MemSDNode::getMemoryVT(), llvm::SelectionDAG::getMergeValues(), llvm::SDValue::getNode(), llvm::SelectionDAG::getNode(), llvm::LoadSDNode::getOffset(), llvm::MemSDNode::getPointerInfo(), llvm::SelectionDAG::getTargetConstant(), llvm::SDValue::isUndef(), llvm::MemSDNode::isVolatile(), llvm::MachineMemOperand::MONone, llvm::MachineMemOperand::MOVolatile, SDValue(), and llvm::ISD::TokenFactor.
Referenced by llvm::VETargetLowering::lowerLOAD().
◆ lowerRETURNADDR()
Definition at line 1694 of file VEISelLowering.cpp.
References llvm::ISD::ADD, DL, llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getEntryNode(), llvm::MachineFunction::getFrameInfo(), llvm::SelectionDAG::getLoad(), llvm::SelectionDAG::getMachineFunction(), llvm::SelectionDAG::getNode(), lowerFRAMEADDR(), llvm::Offset, and llvm::MachineFrameInfo::setReturnAddressIsTaken().
Referenced by llvm::VETargetLowering::LowerOperation().
◆ lowerStoreF128()
Definition at line 1404 of file VEISelLowering.cpp.
References llvm::ISD::ADD, assert(), DL, llvm::dyn_cast(), llvm::MemSDNode::getAlign(), llvm::StoreSDNode::getBasePtr(), llvm::MemSDNode::getChain(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getNode(), llvm::StoreSDNode::getOffset(), llvm::SelectionDAG::getStore(), llvm::SelectionDAG::getTargetConstant(), llvm::StoreSDNode::getValue(), llvm::SDValue::getValueType(), llvm::SDValue::isUndef(), llvm::MemSDNode::isVolatile(), llvm::MachineMemOperand::MONone, llvm::MachineMemOperand::MOVolatile, and llvm::ISD::TokenFactor.
Referenced by llvm::VETargetLowering::lowerSTORE().
◆ lowerStoreI1()
Definition at line 1445 of file VEISelLowering.cpp.
References llvm::ISD::ADD, assert(), DL, llvm::dyn_cast(), llvm::MemSDNode::getAlign(), llvm::StoreSDNode::getBasePtr(), llvm::MemSDNode::getChain(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getMachineNode(), llvm::MemSDNode::getMemoryVT(), llvm::SelectionDAG::getNode(), llvm::StoreSDNode::getOffset(), llvm::SelectionDAG::getStore(), llvm::SelectionDAG::getTargetConstant(), llvm::StoreSDNode::getValue(), llvm::SDValue::isUndef(), llvm::MemSDNode::isVolatile(), llvm::MachineMemOperand::MONone, llvm::MachineMemOperand::MOVolatile, SDValue(), and llvm::ISD::TokenFactor.
Referenced by llvm::VETargetLowering::lowerSTORE().
◆ prepareTS1AM()
◆ safeWithoutCompWithNull()
◆ AllMaskVTs
| const MVT AllMaskVTs[] = {MVT::v256i1, MVT::v512i1} | static |
|---|
◆ AllPackedVTs
| const MVT AllPackedVTs[] = {MVT::v512i32, MVT::v512f32} | static |
|---|
◆ AllVectorVTs
Initial value:
= {MVT::v256i32, MVT::v512i32, MVT::v256i64,
MVT::v256f32, MVT::v512f32, MVT::v256f64}
Definition at line 77 of file VEISelLowering.cpp.