@@ -29,3 +29,30 @@ define i1 @PR114901(<4 x i32> %a) {
29
29
%r = ashr i1 %cmp3 , %cmp1
30
30
ret i1 %r
31
31
}
32
+
33
+ define i1 @PR114901_flip (<4 x i32 > %a ) {
34
+ ; SSE-LABEL: define i1 @PR114901_flip(
35
+ ; SSE-SAME: <4 x i32> [[A:%.*]]) #[[ATTR0]] {
36
+ ; SSE-NEXT: [[E1:%.*]] = extractelement <4 x i32> [[A]], i32 1
37
+ ; SSE-NEXT: [[E3:%.*]] = extractelement <4 x i32> [[A]], i32 3
38
+ ; SSE-NEXT: [[CMP1:%.*]] = icmp sgt i32 [[E1]], -8
39
+ ; SSE-NEXT: [[CMP3:%.*]] = icmp sgt i32 [[E3]], 42
40
+ ; SSE-NEXT: [[R:%.*]] = ashr i1 [[CMP1]], [[CMP3]]
41
+ ; SSE-NEXT: ret i1 [[R]]
42
+ ;
43
+ ; AVX-LABEL: define i1 @PR114901_flip(
44
+ ; AVX-SAME: <4 x i32> [[A:%.*]]) #[[ATTR0]] {
45
+ ; AVX-NEXT: [[E1:%.*]] = extractelement <4 x i32> [[A]], i32 1
46
+ ; AVX-NEXT: [[E3:%.*]] = extractelement <4 x i32> [[A]], i32 3
47
+ ; AVX-NEXT: [[CMP1:%.*]] = icmp sgt i32 [[E1]], -8
48
+ ; AVX-NEXT: [[CMP3:%.*]] = icmp sgt i32 [[E3]], 42
49
+ ; AVX-NEXT: [[R:%.*]] = ashr i1 [[CMP1]], [[CMP3]]
50
+ ; AVX-NEXT: ret i1 [[R]]
51
+ ;
52
+ %e1 = extractelement <4 x i32 > %a , i32 1
53
+ %e3 = extractelement <4 x i32 > %a , i32 3
54
+ %cmp1 = icmp sgt i32 %e1 , 4294967288
55
+ %cmp3 = icmp sgt i32 %e3 , 42
56
+ %r = ashr i1 %cmp1 , %cmp3
57
+ ret i1 %r
58
+ }
0 commit comments