@@ -160,6 +160,78 @@ func.func @selNotCond(%arg0: i1, %arg1 : i32, %arg2 : i32, %arg3 : i32, %arg4 :
160
160
return %res1 , %res2 : i32 , i32
161
161
}
162
162
163
+ // CHECK-LABEL: @cmpiI1eq
164
+ // CHECK-SAME: (%[[ARG:.*]]: i1)
165
+ // CHECK: return %[[ARG]]
166
+ func.func @cmpiI1eq (%arg0: i1 ) -> i1 {
167
+ %one = arith.constant 1 : i1
168
+ %res = arith.cmpi eq , %arg0 , %one : i1
169
+ return %res : i1
170
+ }
171
+
172
+ // CHECK-LABEL: @cmpiI1eqVec
173
+ // CHECK-SAME: (%[[ARG:.*]]: vector<4xi1>)
174
+ // CHECK: return %[[ARG]]
175
+ func.func @cmpiI1eqVec (%arg0: vector <4 xi1 >) -> vector <4 xi1 > {
176
+ %one = arith.constant dense <1 > : vector <4 xi1 >
177
+ %res = arith.cmpi eq , %arg0 , %one : vector <4 xi1 >
178
+ return %res : vector <4 xi1 >
179
+ }
180
+
181
+ // CHECK-LABEL: @cmpiI1ne
182
+ // CHECK-SAME: (%[[ARG:.*]]: i1)
183
+ // CHECK: return %[[ARG]]
184
+ func.func @cmpiI1ne (%arg0: i1 ) -> i1 {
185
+ %zero = arith.constant 0 : i1
186
+ %res = arith.cmpi ne , %arg0 , %zero : i1
187
+ return %res : i1
188
+ }
189
+
190
+ // CHECK-LABEL: @cmpiI1neVec
191
+ // CHECK-SAME: (%[[ARG:.*]]: vector<4xi1>)
192
+ // CHECK: return %[[ARG]]
193
+ func.func @cmpiI1neVec (%arg0: vector <4 xi1 >) -> vector <4 xi1 > {
194
+ %zero = arith.constant dense <0 > : vector <4 xi1 >
195
+ %res = arith.cmpi ne , %arg0 , %zero : vector <4 xi1 >
196
+ return %res : vector <4 xi1 >
197
+ }
198
+
199
+ // CHECK-LABEL: @cmpiI1eqLhs
200
+ // CHECK-SAME: (%[[ARG:.*]]: i1)
201
+ // CHECK: return %[[ARG]]
202
+ func.func @cmpiI1eqLhs (%arg0: i1 ) -> i1 {
203
+ %one = arith.constant 1 : i1
204
+ %res = arith.cmpi eq , %one , %arg0 : i1
205
+ return %res : i1
206
+ }
207
+
208
+ // CHECK-LABEL: @cmpiI1eqVecLhs
209
+ // CHECK-SAME: (%[[ARG:.*]]: vector<4xi1>)
210
+ // CHECK: return %[[ARG]]
211
+ func.func @cmpiI1eqVecLhs (%arg0: vector <4 xi1 >) -> vector <4 xi1 > {
212
+ %one = arith.constant dense <1 > : vector <4 xi1 >
213
+ %res = arith.cmpi eq , %one , %arg0 : vector <4 xi1 >
214
+ return %res : vector <4 xi1 >
215
+ }
216
+
217
+ // CHECK-LABEL: @cmpiI1neLhs
218
+ // CHECK-SAME: (%[[ARG:.*]]: i1)
219
+ // CHECK: return %[[ARG]]
220
+ func.func @cmpiI1neLhs (%arg0: i1 ) -> i1 {
221
+ %zero = arith.constant 0 : i1
222
+ %res = arith.cmpi ne , %zero , %arg0 : i1
223
+ return %res : i1
224
+ }
225
+
226
+ // CHECK-LABEL: @cmpiI1neVecLhs
227
+ // CHECK-SAME: (%[[ARG:.*]]: vector<4xi1>)
228
+ // CHECK: return %[[ARG]]
229
+ func.func @cmpiI1neVecLhs (%arg0: vector <4 xi1 >) -> vector <4 xi1 > {
230
+ %zero = arith.constant dense <0 > : vector <4 xi1 >
231
+ %res = arith.cmpi ne , %zero , %arg0 : vector <4 xi1 >
232
+ return %res : vector <4 xi1 >
233
+ }
234
+
163
235
// Test case: Folding of comparisons with equal operands.
164
236
// CHECK-LABEL: @cmpi_equal_operands
165
237
// CHECK-DAG: %[[T:.*]] = arith.constant true
0 commit comments