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,...