@@ -309,3 +309,28 @@ define <2 x float> @select_fcmp_fadd_une_zero_vec(<2 x float> %x, <2 x float> %y
309
309
%retval = select <2 x i1 > %fcmp , <2 x float > %x , <2 x float > %fadd
310
310
ret <2 x float > %retval
311
311
}
312
+
313
+ define <2 x i8 > @select_vec_op_const_no_undef (<2 x i8 > %x ) {
314
+ ; CHECK-LABEL: define <2 x i8> @select_vec_op_const_no_undef(
315
+ ; CHECK-SAME: <2 x i8> [[X:%.*]]) {
316
+ ; CHECK-NEXT: [[XZ:%.*]] = icmp eq <2 x i8> [[X]], <i8 1, i8 2>
317
+ ; CHECK-NEXT: [[XR:%.*]] = select <2 x i1> [[XZ]], <2 x i8> <i8 1, i8 2>, <2 x i8> <i8 4, i8 3>
318
+ ; CHECK-NEXT: ret <2 x i8> [[XR]]
319
+ ;
320
+ %xz = icmp eq <2 x i8 > %x , <i8 1 , i8 2 >
321
+ %xr = select <2 x i1 > %xz , <2 x i8 > %x , <2 x i8 > <i8 4 , i8 3 >
322
+ ret <2 x i8 > %xr
323
+ }
324
+
325
+ ; FIXME: This is a miscompile.
326
+ define <2 x i8 > @select_vec_op_const_undef (<2 x i8 > %x ) {
327
+ ; CHECK-LABEL: define <2 x i8> @select_vec_op_const_undef(
328
+ ; CHECK-SAME: <2 x i8> [[X:%.*]]) {
329
+ ; CHECK-NEXT: [[XZ:%.*]] = icmp eq <2 x i8> [[X]], <i8 1, i8 undef>
330
+ ; CHECK-NEXT: [[XR:%.*]] = select <2 x i1> [[XZ]], <2 x i8> <i8 1, i8 undef>, <2 x i8> <i8 4, i8 3>
331
+ ; CHECK-NEXT: ret <2 x i8> [[XR]]
332
+ ;
333
+ %xz = icmp eq <2 x i8 > %x , <i8 1 , i8 undef >
334
+ %xr = select <2 x i1 > %xz , <2 x i8 > %x , <2 x i8 > <i8 4 , i8 3 >
335
+ ret <2 x i8 > %xr
336
+ }
0 commit comments