Go to the documentation of this file.
15 #ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYISELLOWERING_H
16 #define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYISELLOWERING_H
22 namespace WebAssemblyISD {
26 #define HANDLE_NODETYPE(NODE) NODE,
27 #define HANDLE_MEM_NODETYPE(NODE)
28 #include "WebAssemblyISD.def"
30 #undef HANDLE_NODETYPE
31 #undef HANDLE_MEM_NODETYPE
32 #define HANDLE_NODETYPE(NODE)
33 #define HANDLE_MEM_NODETYPE(NODE) NODE,
34 #include "WebAssemblyISD.def"
35 #undef HANDLE_NODETYPE
36 #undef HANDLE_MEM_NODETYPE
41 class WebAssemblySubtarget;
57 bool shouldScalarizeBinop(
SDValue VecOp)
const override;
64 const char *getTargetNodeName(
unsigned Opcode)
const override;
65 std::pair<unsigned, const TargetRegisterClass *>
68 bool isCheapToSpeculateCttz(
Type *Ty)
const override;
69 bool isCheapToSpeculateCtlz(
Type *Ty)
const override;
73 bool allowsMisalignedMemoryAccesses(
EVT,
unsigned AddrSpace,
Align Alignment,
75 unsigned *Fast)
const override;
77 bool isVectorLoadExtDesirable(
SDValue ExtVal)
const override;
80 EVT VT)
const override;
83 unsigned Intrinsic)
const override;
86 const APInt &DemandedElts,
88 unsigned Depth)
const override;
91 getPreferredVectorAction(
MVT VT)
const override;
112 const char *getClearCacheBuiltinName()
const override {
117 shouldSimplifyDemandedVectorElts(
SDValue Op,
154 namespace WebAssembly {
This is an optimization pass for GlobalISel generic memory operations.
Wrapper class for IR location info (IR ordering and DebugLoc) to be passed into SDNode creation funct...
A parsed version of the target data layout string in and methods for querying it.
Represents one node in the SelectionDAG.
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
The instances of the Type class are immutable: once they are created, they are never changed.
Function Alias Analysis Results
unsigned const TargetRegisterInfo * TRI
WebAssemblyTargetLowering(const TargetMachine &TM, const WebAssemblySubtarget &STI)
FastISel * createFastISel(FunctionLoweringInfo &funcInfo, const TargetLibraryInfo *libInfo)
This is used to represent a portion of an LLVM function in a low-level Data Dependence DAG representa...
This class defines information used to lower LLVM code to legal SelectionDAG operators that the targe...
void report_fatal_error(Error Err, bool gen_crash_diag=true)
Report a serious error, calling any installed error handler.
Analysis containing CSE Info
This struct is a compact representation of a valid (non-zero power of two) alignment.
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
A convenience struct that encapsulates a DAG, and two SDValues for returning information from TargetL...
Representation of each machine instruction.
This is an important class for using LLVM in a threaded context.
Flags
Flags values. These may be or'd together.
This structure contains all information that is necessary for lowering calls.
Primary interface to the complete machine description for the target machine.
FunctionLoweringInfo - This contains information that is global to a function that is used when lower...
This is a fast-path instruction selection class that generates poor code and doesn't support illegal ...
Class for arbitrary precision integers.
StringRef - Represent a constant reference to a string, i.e.
MVT getPointerTy(const DataLayout &DL, uint32_t AS=0) const override
Return the pointer type for the given address space, defaults to the pointer type from the data layou...
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
@ BUILTIN_OP_END
BUILTIN_OP_END - This must be the last enum value in this list.
an instruction that atomically reads a memory location, combines it with another value,...
AtomicExpansionKind
Enum that specifies what an atomic load/AtomicRMWInst is expanded to, if at all.
LegalizeTypeAction
This enum indicates whether a types are legal for a target, and if not, what action should be used to...
Provides information about what library functions are available for the current target.
Unlike LLVM values, Selection DAG nodes may return multiple values as the result of a computation.
MVT getPointerMemTy(const DataLayout &DL, uint32_t AS=0) const override
Return the in-memory pointer type for the given address space, defaults to the pointer type from the ...
static const int FIRST_TARGET_MEMORY_OPCODE
FIRST_TARGET_MEMORY_OPCODE - Target-specific pre-isel operations which do not reference a specific me...
This represents an addressing mode of: BaseGV + BaseOffs + BaseReg + Scale*ScaleReg If BaseGV is null...
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
const char LLVMTargetMachineRef TM
This class represents a function call, abstracting a target machine's calling convention.