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.