LLVM: include/llvm/CodeGen/SelectionDAGTargetInfo.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#ifndef LLVM_CODEGEN_SELECTIONDAGTARGETINFO_H
16#define LLVM_CODEGEN_SELECTIONDAGTARGETINFO_H
17
22#include
23
24namespace llvm {
25
28
29
30
31
32
34public:
39
40
41
45
46
47
48
50
51
52
54
55
56
58
59
62
63
64
65
66
67
68
69
70
71
72
73
74
75
79 Align Alignment, bool isVolatile,
80 bool AlwaysInline,
84 }
85
86
87
88
89
90
91
98
99
100
101
102
103
104
105
109 Align Alignment, bool isVolatile,
110 bool AlwaysInline,
113 }
114
115
116
117
118
119 virtual std::pair<SDValue, SDValue>
125
126
127
128
129
130 virtual std::pair<SDValue, SDValue>
136
137
138
139
140
141
142
143 virtual std::pair<SDValue, SDValue>
150
151
152
153
154
155 virtual std::pair<SDValue, SDValue>
162
163 virtual std::pair<SDValue, SDValue>
168
169 virtual std::pair<SDValue, SDValue>
175
180 bool ZeroData) const {
182 }
183
184
188};
189
190
191
193protected:
195
198
199public:
201
204 "The name should be provided by the derived class");
205 return GenNodeInfo.getName(Opcode).data();
206 }
207
213
219
221 const SDNode *N) const override {
224 }
225};
226
227}
228
229#endif
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
This class represents a function call, abstracting a target machine's calling convention.
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.
const char * getTargetNodeName(unsigned Opcode) const override
Returns the name of the given target-specific opcode, suitable for debug printing.
Definition SelectionDAGTargetInfo.h:202
bool isTargetStrictFPOpcode(unsigned Opcode) const override
Returns true if a node with the given target-specific opcode has strict floating-point semantics.
Definition SelectionDAGTargetInfo.h:214
const SDNodeInfo & GenNodeInfo
Definition SelectionDAGTargetInfo.h:194
SelectionDAGGenTargetInfo(const SDNodeInfo &GenNodeInfo)
Definition SelectionDAGTargetInfo.h:196
~SelectionDAGGenTargetInfo() override
bool isTargetMemoryOpcode(unsigned Opcode) const override
Returns true if a node with the given target-specific opcode has a memory operand.
Definition SelectionDAGTargetInfo.h:208
void verifyTargetNode(const SelectionDAG &DAG, const SDNode *N) const override
Checks that the given target-specific node is valid. Aborts if it is not.
Definition SelectionDAGTargetInfo.h:220
virtual bool isTargetStrictFPOpcode(unsigned Opcode) const
Returns true if a node with the given target-specific opcode has strict floating-point semantics.
Definition SelectionDAGTargetInfo.h:53
virtual bool mayRaiseFPException(unsigned Opcode) const
Returns true if a node with the given target-specific opcode may raise a floating-point exception.
virtual bool isTargetMemoryOpcode(unsigned Opcode) const
Returns true if a node with the given target-specific opcode has a memory operand.
Definition SelectionDAGTargetInfo.h:49
virtual void verifyTargetNode(const SelectionDAG &DAG, const SDNode *N) const
Checks that the given target-specific node is valid. Aborts if it is not.
Definition SelectionDAGTargetInfo.h:60
virtual SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, const SDLoc &dl, SDValue Chain, SDValue Op1, SDValue Op2, SDValue Op3, Align Alignment, bool isVolatile, bool AlwaysInline, MachinePointerInfo DstPtrInfo) const
Emit target-specific code that performs a memset.
Definition SelectionDAGTargetInfo.h:106
virtual std::pair< SDValue, SDValue > EmitTargetCodeForStrnlen(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Src, SDValue MaxLength, MachinePointerInfo SrcPtrInfo) const
Definition SelectionDAGTargetInfo.h:170
virtual std::pair< SDValue, SDValue > EmitTargetCodeForStrlen(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Src, const CallInst *CI) const
Definition SelectionDAGTargetInfo.h:164
virtual SDValue EmitTargetCodeForMemmove(SelectionDAG &DAG, const SDLoc &dl, SDValue Chain, SDValue Op1, SDValue Op2, SDValue Op3, Align Alignment, bool isVolatile, MachinePointerInfo DstPtrInfo, MachinePointerInfo SrcPtrInfo) const
Emit target-specific code that performs a memmove.
Definition SelectionDAGTargetInfo.h:92
virtual std::pair< SDValue, SDValue > EmitTargetCodeForStrcpy(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Dest, SDValue Src, MachinePointerInfo DestPtrInfo, MachinePointerInfo SrcPtrInfo, bool isStpcpy) const
Emit target-specific code that performs a strcpy or stpcpy, in cases where that is faster than a libc...
Definition SelectionDAGTargetInfo.h:144
virtual SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, const SDLoc &dl, SDValue Chain, SDValue Op1, SDValue Op2, SDValue Op3, Align Alignment, bool isVolatile, bool AlwaysInline, MachinePointerInfo DstPtrInfo, MachinePointerInfo SrcPtrInfo) const
Emit target-specific code that performs a memcpy.
Definition SelectionDAGTargetInfo.h:76
virtual std::pair< SDValue, SDValue > EmitTargetCodeForMemchr(SelectionDAG &DAG, const SDLoc &dl, SDValue Chain, SDValue Src, SDValue Char, SDValue Length, MachinePointerInfo SrcPtrInfo) const
Emit target-specific code that performs a memchr, in cases where that is faster than a libcall.
Definition SelectionDAGTargetInfo.h:131
virtual const char * getTargetNodeName(unsigned Opcode) const
Returns the name of the given target-specific opcode, suitable for debug printing.
Definition SelectionDAGTargetInfo.h:42
SelectionDAGTargetInfo & operator=(const SelectionDAGTargetInfo &)=delete
virtual std::pair< SDValue, SDValue > EmitTargetCodeForMemcmp(SelectionDAG &DAG, const SDLoc &dl, SDValue Chain, SDValue Op1, SDValue Op2, SDValue Op3, const CallInst *CI) const
Emit target-specific code that performs a memcmp/bcmp, in cases where that is faster than a libcall.
Definition SelectionDAGTargetInfo.h:120
virtual std::pair< SDValue, SDValue > EmitTargetCodeForStrcmp(SelectionDAG &DAG, const SDLoc &dl, SDValue Chain, SDValue Op1, SDValue Op2, MachinePointerInfo Op1PtrInfo, MachinePointerInfo Op2PtrInfo) const
Emit target-specific code that performs a strcmp, in cases where that is faster than a libcall.
Definition SelectionDAGTargetInfo.h:156
virtual bool disableGenericCombines(CodeGenOptLevel OptLevel) const
Definition SelectionDAGTargetInfo.h:185
SelectionDAGTargetInfo(const SelectionDAGTargetInfo &)=delete
SelectionDAGTargetInfo()=default
virtual SDValue EmitTargetCodeForSetTag(SelectionDAG &DAG, const SDLoc &dl, SDValue Chain, SDValue Addr, SDValue Size, MachinePointerInfo DstPtrInfo, bool ZeroData) const
Definition SelectionDAGTargetInfo.h:176
virtual ~SelectionDAGTargetInfo()
This is used to represent a portion of an LLVM function in a low-level Data Dependence DAG representa...
This is an optimization pass for GlobalISel generic memory operations.
CodeGenOptLevel
Code generation optimization level.
This struct is a compact representation of a valid (non-zero power of two) alignment.
This class contains a discriminated union of information about pointers in memory operands,...