15#ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYISELLOWERING_H
16#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYISELLOWERING_H
26#define HANDLE_NODETYPE(NODE) NODE,
27#include "WebAssemblyISD.def"
49 shouldExpandPartialReductionIntrinsic(
const IntrinsicInst *
I)
const override;
51 bool shouldScalarizeBinop(
SDValue VecOp)
const override;
58 const char *getTargetNodeName(
unsigned Opcode)
const override;
59 std::pair<unsigned, const TargetRegisterClass *>
62 bool isCheapToSpeculateCttz(
Type *Ty)
const override;
63 bool isCheapToSpeculateCtlz(
Type *Ty)
const override;
67 bool allowsMisalignedMemoryAccesses(
EVT,
unsigned AddrSpace,
Align Alignment,
69 unsigned *
Fast)
const override;
70 bool isIntDivCheap(
EVT VT, AttributeList Attr)
const override;
71 bool isVectorLoadExtDesirable(
SDValue ExtVal)
const override;
74 EVT VT)
const override;
80 const APInt &DemandedElts,
82 unsigned Depth)
const override;
85 getPreferredVectorAction(
MVT VT)
const override;
93 const Type *RetTy)
const override;
108 shouldSimplifyDemandedVectorElts(
SDValue Op,
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
Function Alias Analysis Results
Analysis containing CSE Info
Register const TargetRegisterInfo * TRI
This file describes how to lower LLVM code to machine code.
Class for arbitrary precision integers.
an instruction that atomically reads a memory location, combines it with another value,...
This class represents a function call, abstracting a target machine's calling convention.
A parsed version of the target data layout string in and methods for querying it.
This is a fast-path instruction selection class that generates poor code and doesn't support illegal ...
FunctionLoweringInfo - This contains information that is global to a function that is used when lower...
A wrapper class for inspecting calls to intrinsic functions.
This is an important class for using LLVM in a threaded context.
Representation of each machine instruction.
Flags
Flags values. These may be or'd together.
Wrapper class for IR location info (IR ordering and DebugLoc) to be passed into SDNode creation funct...
Represents one node in the SelectionDAG.
Unlike LLVM values, Selection DAG nodes may return multiple values as the result of a computation.
This is used to represent a portion of an LLVM function in a low-level Data Dependence DAG representa...
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
StringRef - Represent a constant reference to a string, i.e.
Provides information about what library functions are available for the current target.
LegalizeTypeAction
This enum indicates whether a types are legal for a target, and if not, what action should be used to...
AtomicExpansionKind
Enum that specifies what an atomic load/AtomicRMWInst is expanded to, if at all.
TargetLowering(const TargetLowering &)=delete
Primary interface to the complete machine description for the target machine.
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.
WebAssemblyTargetLowering(const TargetMachine &TM, const WebAssemblySubtarget &STI)
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...
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 ...
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
@ Fast
Attempts to make calls as fast as possible (e.g.
@ BUILTIN_OP_END
BUILTIN_OP_END - This must be the last enum value in this list.
This namespace contains an enum with a value for every intrinsic/builtin function known by LLVM.
FastISel * createFastISel(FunctionLoweringInfo &funcInfo, const TargetLibraryInfo *libInfo)
This is an optimization pass for GlobalISel generic memory operations.
DWARFExpression::Operation Op
This struct is a compact representation of a valid (non-zero power of two) alignment.
This represents an addressing mode of: BaseGV + BaseOffs + BaseReg + Scale*ScaleReg + ScalableOffset*...
This structure contains all information that is necessary for lowering calls.
A convenience struct that encapsulates a DAG, and two SDValues for returning information from TargetL...