@@ -29,3 +29,30 @@ define i1 @PR114901(<4 x i32> %a) {
2929 %r = ashr i1 %cmp3 , %cmp1
3030 ret i1 %r
3131}
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