LLVM: lib/Target/NVPTX/NVPTXISelDAGToDAG.h Source File (original) (raw)

35 bool empty() const;

36

37private:

40};

44

46 bool usePrecSqrtF32(const SDNode *N) const;

47 bool useF32FTZ() const;

48 bool allowFMA() const;

49 bool doRsqrtOpt() const;

50 bool doMADWideOpt() const;

51

53

54public:

56

58

61

64 std::vector &OutOps) override;

65

66private:

67

68#include "NVPTXGenDAGISel.inc"

69

71 bool tryIntrinsicChain(SDNode *N);

72 bool tryIntrinsicVoid(SDNode *N);

73 void SelectTexSurfHandle(SDNode *N);

75 bool tryLoadVector(SDNode *N);

79 bool tryStoreVector(SDNode *N);

81 void SelectAddrSpaceCast(SDNode *N);

83 bool tryBF16ArithToFMA(SDNode *N);

84 bool tryConstantFP(SDNode *N);

85 bool SelectSETP_F16X2(SDNode *N);

86 bool SelectSETP_BF16X2(SDNode *N);

87 bool tryUNPACK_VECTOR(SDNode *N);

88 bool tryEXTRACT_VECTOR_ELEMENT(SDNode *N);

89 void SelectV2I64toI128(SDNode *N);

90 void SelectI128toV2I64(SDNode *N);

91 void SelectCpAsyncBulkTensorReduceCommon(SDNode *N, unsigned RedOp,

92 bool IsIm2Col = false);

93 void SelectTcgen05Ld(SDNode *N, bool hasOffset = false);

94 void SelectTcgen05St(SDNode *N, bool hasOffset = false);

95 void selectAtomicSwap128(SDNode *N);

96

97 inline SDValue getI32Imm(unsigned Imm, const SDLoc &DL) {

98 return CurDAG->getTargetConstant(Imm, DL, MVT::i32);

99 }

102

106

107

108

109

110

111 std::pair<NVPTX::Ordering, NVPTX::Scope>

114

115public:

117 static unsigned getFromTypeWidthForLoad(const MemSDNode *Mem);

118};

This is an important class for using LLVM in a threaded context.