LLVM: lib/Target/Mips/MipsISelDAGToDAG.h Source File (original) (raw)
32public:
34
37
39
40protected:
42
43
44
46
47private:
48
49 #include "MipsGenDAGISel.inc"
50
51
52
55
56
59
60
63
66
69
72
75
76
79
82
85
88
91
92
93 virtual bool selectVSplat(SDNode *N, APInt &Imm,
94 unsigned MinSizeInBits) const;
96 unsigned ImmBitSize) const;
97
98 template
100 return selectVSplatCommon(N, Imm, false, Bits);
101 }
102
103 template
105 return selectVSplatCommon(N, Imm, true, Bits);
106 }
107
108 virtual bool selectVSplatUimmPow2(SDValue N, SDValue &Imm) const;
109
110
111 virtual bool selectVSplatUimmInvPow2(SDValue N, SDValue &Imm) const;
112
113
114 virtual bool selectVSplatMaskL(SDValue N, SDValue &Imm) const;
115
116
117 virtual bool selectVSplatMaskR(SDValue N, SDValue &Imm) const;
118
119
120 virtual bool selectVSplatImmEq1(SDValue N) const;
121
122
123
124
125 bool selectVecAddAsVecSubIfProfitable(SDNode *Node);
126
127 void Select(SDNode *N) override;
128
129 virtual bool trySelect(SDNode *Node) = 0;
130
131
134 }
135
136 inline SDValue getSignedImm(const SDNode *Node, int64_t Imm) {
137 return CurDAG->getSignedTargetConstant(Imm, SDLoc(Node),
138 Node->getValueType(0));
139 }
140
141 virtual void processFunctionAfterISel(MachineFunction &MF) = 0;
142
143 bool SelectInlineAsmMemoryOperand(const SDValue &Op,
145 std::vector &OutOps) override;
146 bool isUnneededShiftMask(SDNode *N, unsigned ShAmtBits) const;
147};