llvm.org GIT mirror llvm / 8673b54
Improve some x86 type constraints. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200120 91177308-0d34-0410-b5e6-96231b3b80d8 Craig Topper 6 years ago
1 changed file(s) with 22 addition(s) and 11 deletion(s). Raw diff Collapse all Expand all
2424 def SDTX86FPShiftOp : SDTypeProfile<1, 2, [ SDTCisSameAs<0, 1>,
2525 SDTCisFP<0>, SDTCisInt<2> ]>;
2626 def SDTX86VFCMP : SDTypeProfile<1, 3, [SDTCisInt<0>, SDTCisSameAs<1, 2>,
27 SDTCisFP<1>, SDTCisVT<3, i8>]>;
27 SDTCisFP<1>, SDTCisVT<3, i8>,
28 SDTCisVec<1>]>;
2829
2930 def X86umin : SDNode<"X86ISD::UMIN", SDTIntBinOp>;
3031 def X86umax : SDNode<"X86ISD::UMAX", SDTIntBinOp>;
8788
8889 def X86vzmovly : SDNode<"X86ISD::VZEXT_MOVL",
8990 SDTypeProfile<1, 1, [SDTCisVec<0>, SDTCisVec<1>,
91 SDTCisInt<0>, SDTCisInt<1>,
9092 SDTCisOpSmallerThanOp<1, 0> ]>>;
9193
9294 def X86vsmovl : SDNode<"X86ISD::VSEXT_MOVL",
9395 SDTypeProfile<1, 1,
94 [SDTCisVec<0>, SDTCisInt<1>, SDTCisInt<0>]>>;
96 [SDTCisVec<0>, SDTCisVec<1>, SDTCisInt<0>, SDTCisInt<1>,
97 SDTCisOpSmallerThanOp<1, 0>]>>;
9598
9699 def X86vzload : SDNode<"X86ISD::VZEXT_LOAD", SDTLoad,
97100 [SDNPHasChain, SDNPMayLoad, SDNPMemOperand]>;
98101
99102 def X86vzext : SDNode<"X86ISD::VZEXT",
100103 SDTypeProfile<1, 1, [SDTCisVec<0>, SDTCisVec<1>,
101 SDTCisInt<0>, SDTCisInt<1>]>>;
104 SDTCisInt<0>, SDTCisInt<1>,
105 SDTCisOpSmallerThanOp<1, 0>]>>;
102106
103107 def X86vsext : SDNode<"X86ISD::VSEXT",
104108 SDTypeProfile<1, 1, [SDTCisVec<0>, SDTCisVec<1>,
105 SDTCisInt<0>, SDTCisInt<1>]>>;
109 SDTCisInt<0>, SDTCisInt<1>,
110 SDTCisOpSmallerThanOp<1, 0>]>>;
106111
107112 def X86vtrunc : SDNode<"X86ISD::VTRUNC",
108113 SDTypeProfile<1, 1, [SDTCisVec<0>, SDTCisVec<1>,
109 SDTCisInt<0>, SDTCisInt<1>]>>;
114 SDTCisInt<0>, SDTCisInt<1>,
115 SDTCisOpSmallerThanOp<0, 1>]>>;
110116 def X86trunc : SDNode<"X86ISD::TRUNC",
111 SDTypeProfile<1, 1, [SDTCisInt<0>, SDTCisInt<1>]>>;
112
117 SDTypeProfile<1, 1, [SDTCisInt<0>, SDTCisInt<1>,
118 SDTCisOpSmallerThanOp<0, 1>]>>;
119
113120 def X86vtruncm : SDNode<"X86ISD::VTRUNCM",
114121 SDTypeProfile<1, 2, [SDTCisVec<0>, SDTCisVec<1>,
115122 SDTCisInt<0>, SDTCisInt<1>,
116 SDTCisVec<2>, SDTCisInt<2>]>>;
123 SDTCisVec<2>, SDTCisInt<2>,
124 SDTCisOpSmallerThanOp<0, 2>]>>;
117125 def X86vfpext : SDNode<"X86ISD::VFPEXT",
118126 SDTypeProfile<1, 1, [SDTCisVec<0>, SDTCisVec<1>,
119 SDTCisFP<0>, SDTCisFP<1>]>>;
127 SDTCisFP<0>, SDTCisFP<1>,
128 SDTCisOpSmallerThanOp<1, 0>]>>;
120129 def X86vfpround: SDNode<"X86ISD::VFPROUND",
121130 SDTypeProfile<1, 1, [SDTCisVec<0>, SDTCisVec<1>,
122 SDTCisFP<0>, SDTCisFP<1>]>>;
131 SDTCisFP<0>, SDTCisFP<1>,
132 SDTCisOpSmallerThanOp<0, 1>]>>;
123133
124134 def X86vshldq : SDNode<"X86ISD::VSHLDQ", SDTIntShiftOp>;
125135 def X86vshrdq : SDNode<"X86ISD::VSRLDQ", SDTIntShiftOp>;
133143 def X86pcmpgtm : SDNode<"X86ISD::PCMPGTM", X86IntCmpMask>;
134144
135145 def X86CmpMaskCC :
136 SDTypeProfile<1, 3, [SDTCisVec<0>, SDTCisSameAs<1, 2>, SDTCisVT<3, i8>]>;
146 SDTypeProfile<1, 3, [SDTCisVec<0>, SDTCisInt<0>, SDTCisVec<1>,
147 SDTCisSameAs<1, 2>, SDTCisVT<3, i8>]>;
137148 def X86CmpMaskCCScalar :
138149 SDTypeProfile<1, 3, [SDTCisInt<0>, SDTCisSameAs<1, 2>, SDTCisVT<3, i8>]>;
139150