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};