LLVM  14.0.0git
Macros | Functions | Variables
VEISelLowering.cpp File Reference
#include "VEISelLowering.h"
#include "MCTargetDesc/VEMCExpr.h"
#include "VEInstrBuilder.h"
#include "VEMachineFunctionInfo.h"
#include "VERegisterInfo.h"
#include "VETargetMachine.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/CodeGen/CallingConvLower.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineJumpTableInfo.h"
#include "llvm/CodeGen/MachineModuleInfo.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/SelectionDAG.h"
#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Module.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/KnownBits.h"
#include "VEGenCallingConv.inc"
#include "VVPNodes.def"
Include dependency graph for VEISelLowering.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "ve-lower"
 
#define HANDLE_VP_TO_VVP(VP_OPC, VVP_NAME)   setOperationAction(ISD::VP_OPC, LegalVecVT, Custom);
 
#define ADD_VVP_OP(VVP_NAME, ISD_NAME)   setOperationAction(ISD::ISD_NAME, LegalVecVT, Custom);
 
#define TARGET_NODE_CASE(NAME)
 
#define ADD_VVP_OP(VVP_NAME, ...)   TARGET_NODE_CASE(VVP_NAME)
 
#define ADD_BINARY_VVP_OP(VVP_NAME, ISD_NAME)   case ISD::ISD_NAME:
 
#define HANDLE_VP_TO_VVP(VPOPC, VVPNAME)
 
#define ADD_VVP_OP(VVPNAME, SDNAME)
 
#define ADD_BINARY_VVP_OP(VVPNAME, ...)
 

Functions

CCAssignFn * getReturnCC (CallingConv::ID CallConv)
 
CCAssignFn * getParamCC (CallingConv::ID CallConv, bool IsVarArg)
 
static SDValue prepareTS1AM (SDValue Op, SelectionDAG &DAG, SDValue &Flag, SDValue &Bits)
 
static SDValue finalizeTS1AM (SDValue Op, SelectionDAG &DAG, SDValue Data, SDValue Bits)
 
static SDValue lowerLoadF128 (SDValue Op, SelectionDAG &DAG)
 
static SDValue lowerStoreF128 (SDValue Op, SelectionDAG &DAG)
 
static SDValue lowerFRAMEADDR (SDValue Op, SelectionDAG &DAG, const VETargetLowering &TLI, const VESubtarget *Subtarget)
 
static SDValue lowerRETURNADDR (SDValue Op, SelectionDAG &DAG, const VETargetLowering &TLI, const VESubtarget *Subtarget)
 
static bool getUniqueInsertion (SDNode *N, unsigned &UniqueIdx)
 
static SDValue getSplatValue (SDNode *N)
 
static bool isI32Insn (const SDNode *User, const SDNode *N)
 
static Optional< unsigned > getVVPOpcode (unsigned Opcode)
 

Variables

static const MVT AllVectorVTs []
 
static const MVT AllPackedVTs [] = {MVT::v512i32, MVT::v512f32}
 

Macro Definition Documentation

◆ ADD_BINARY_VVP_OP [1/2]

#define ADD_BINARY_VVP_OP (   VVP_NAME,
  ISD_NAME 
)    case ISD::ISD_NAME:

◆ ADD_BINARY_VVP_OP [2/2]

#define ADD_BINARY_VVP_OP (   VVPNAME,
  ... 
)
Value:
case VEISD::VVPNAME: \
IsBinaryOp = true; \
break;

◆ ADD_VVP_OP [1/3]

#define ADD_VVP_OP (   VVP_NAME,
  ISD_NAME 
)    setOperationAction(ISD::ISD_NAME, LegalVecVT, Custom);

◆ ADD_VVP_OP [2/3]

#define ADD_VVP_OP (   VVP_NAME,
  ... 
)    TARGET_NODE_CASE(VVP_NAME)

◆ ADD_VVP_OP [3/3]

#define ADD_VVP_OP (   VVPNAME,
  SDNAME 
)
Value:
case VEISD::VVPNAME: \
case ISD::SDNAME: \
return VEISD::VVPNAME;

◆ DEBUG_TYPE

#define DEBUG_TYPE   "ve-lower"

Definition at line 38 of file VEISelLowering.cpp.

◆ HANDLE_VP_TO_VVP [1/2]

#define HANDLE_VP_TO_VVP (   VP_OPC,
  VVP_NAME 
)    setOperationAction(ISD::VP_OPC, LegalVecVT, Custom);

◆ HANDLE_VP_TO_VVP [2/2]

#define HANDLE_VP_TO_VVP (   VPOPC,
  VVPNAME 
)
Value:
case ISD::VPOPC: \
return VEISD::VVPNAME;

◆ TARGET_NODE_CASE

#define TARGET_NODE_CASE (   NAME)
Value:
case VEISD::NAME: \
return "VEISD::" #NAME;

Function Documentation

◆ finalizeTS1AM()

static SDValue finalizeTS1AM ( SDValue  Op,
SelectionDAG DAG,
SDValue  Data,
SDValue  Bits 
)
static

◆ getParamCC()

CCAssignFn* getParamCC ( CallingConv::ID  CallConv,
bool  IsVarArg 
)

◆ getReturnCC()

CCAssignFn* getReturnCC ( CallingConv::ID  CallConv)

◆ getSplatValue()

static SDValue getSplatValue ( SDNode N)
static

Definition at line 1634 of file VEISelLowering.cpp.

References N.

◆ getUniqueInsertion()

static bool getUniqueInsertion ( SDNode N,
unsigned &  UniqueIdx 
)
static

Definition at line 1608 of file VEISelLowering.cpp.

References N.

Referenced by llvm::VETargetLowering::lowerBUILD_VECTOR().

◆ getVVPOpcode()

static Optional<unsigned> getVVPOpcode ( unsigned  Opcode)
static
Returns
the VVP_* SDNode opcode corresponsing to OC.

Definition at line 2674 of file VEISelLowering.cpp.

References llvm::None.

Referenced by llvm::VETargetLowering::lowerToVVP().

◆ isI32Insn()

static bool isI32Insn ( const SDNode User,
const SDNode N 
)
static

◆ lowerFRAMEADDR()

static SDValue lowerFRAMEADDR ( SDValue  Op,
SelectionDAG DAG,
const VETargetLowering TLI,
const VESubtarget Subtarget 
)
static

◆ lowerLoadF128()

static SDValue lowerLoadF128 ( SDValue  Op,
SelectionDAG DAG 
)
static

◆ lowerRETURNADDR()

static SDValue lowerRETURNADDR ( SDValue  Op,
SelectionDAG DAG,
const VETargetLowering TLI,
const VESubtarget Subtarget 
)
static

◆ lowerStoreF128()

static SDValue lowerStoreF128 ( SDValue  Op,
SelectionDAG DAG 
)
static

◆ prepareTS1AM()

static SDValue prepareTS1AM ( SDValue  Op,
SelectionDAG DAG,
SDValue Flag,
SDValue Bits 
)
static

Variable Documentation

◆ AllPackedVTs

const MVT AllPackedVTs[] = {MVT::v512i32, MVT::v512f32}
static

Definition at line 78 of file VEISelLowering.cpp.

◆ AllVectorVTs

const MVT AllVectorVTs[]
static
Initial value:
= {MVT::v256i32, MVT::v512i32, MVT::v256i64,
MVT::v256f32, MVT::v512f32, MVT::v256f64}

Definition at line 75 of file VEISelLowering.cpp.