5
5
6
6
define i32 @test_eq (i32 %x ) {
7
7
; CHECK-LABEL: @test_eq(
8
- ; CHECK-NEXT: [[SHL_MASK:%.*]] = and i32 [[X:%.*]], 1073741823
9
- ; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq i32 [[SHL_MASK]], 0
10
- ; CHECK-NEXT: [[MUL:%.*]] = shl i32 [[X]], 2
11
- ; CHECK-NEXT: [[COND:%.*]] = select i1 [[TOBOOL]], i32 0, i32 [[MUL]]
12
- ; CHECK-NEXT: ret i32 [[COND]]
8
+ ; CHECK-NEXT: [[MUL:%.*]] = shl i32 [[X:%.*]], 2
9
+ ; CHECK-NEXT: ret i32 [[MUL]]
13
10
;
14
11
%shl.mask = and i32 %x , 1073741823
15
12
%tobool = icmp eq i32 %shl.mask , 0
@@ -20,11 +17,8 @@ define i32 @test_eq(i32 %x) {
20
17
21
18
define <2 x i32 > @test_eq_vect (<2 x i32 > %x ) {
22
19
; CHECK-LABEL: @test_eq_vect(
23
- ; CHECK-NEXT: [[SHL_MASK:%.*]] = and <2 x i32> [[X:%.*]], <i32 1073741823, i32 1073741823>
24
- ; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq <2 x i32> [[SHL_MASK]], zeroinitializer
25
- ; CHECK-NEXT: [[MUL:%.*]] = shl <2 x i32> [[X]], <i32 2, i32 2>
26
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[TOBOOL]], <2 x i32> zeroinitializer, <2 x i32> [[MUL]]
27
- ; CHECK-NEXT: ret <2 x i32> [[COND]]
20
+ ; CHECK-NEXT: [[MUL:%.*]] = shl <2 x i32> [[X:%.*]], <i32 2, i32 2>
21
+ ; CHECK-NEXT: ret <2 x i32> [[MUL]]
28
22
;
29
23
%shl.mask = and <2 x i32 > %x , <i32 1073741823 , i32 1073741823 >
30
24
%tobool = icmp eq <2 x i32 > %shl.mask , zeroinitializer
@@ -35,11 +29,8 @@ define <2 x i32> @test_eq_vect(<2 x i32> %x) {
35
29
36
30
define i32 @test_ne (i32 %x ) {
37
31
; CHECK-LABEL: @test_ne(
38
- ; CHECK-NEXT: [[SHL_MASK:%.*]] = and i32 [[X:%.*]], 1073741823
39
- ; CHECK-NEXT: [[TOBOOL_NOT_NOT:%.*]] = icmp eq i32 [[SHL_MASK]], 0
40
- ; CHECK-NEXT: [[MUL:%.*]] = shl i32 [[X]], 2
41
- ; CHECK-NEXT: [[COND:%.*]] = select i1 [[TOBOOL_NOT_NOT]], i32 0, i32 [[MUL]]
42
- ; CHECK-NEXT: ret i32 [[COND]]
32
+ ; CHECK-NEXT: [[MUL:%.*]] = shl i32 [[X:%.*]], 2
33
+ ; CHECK-NEXT: ret i32 [[MUL]]
43
34
;
44
35
%shl.mask = and i32 %x , 1073741823
45
36
%tobool.not = icmp ne i32 %shl.mask , 0
@@ -50,11 +41,8 @@ define i32 @test_ne(i32 %x) {
50
41
51
42
define <2 x i32 > @test_ne_vect (<2 x i32 > %x ) {
52
43
; CHECK-LABEL: @test_ne_vect(
53
- ; CHECK-NEXT: [[SHL_MASK:%.*]] = and <2 x i32> [[X:%.*]], <i32 1073741823, i32 1073741823>
54
- ; CHECK-NEXT: [[TOBOOL_NOT_NOT:%.*]] = icmp eq <2 x i32> [[SHL_MASK]], zeroinitializer
55
- ; CHECK-NEXT: [[MUL:%.*]] = shl <2 x i32> [[X]], <i32 2, i32 2>
56
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[TOBOOL_NOT_NOT]], <2 x i32> zeroinitializer, <2 x i32> [[MUL]]
57
- ; CHECK-NEXT: ret <2 x i32> [[COND]]
44
+ ; CHECK-NEXT: [[MUL:%.*]] = shl <2 x i32> [[X:%.*]], <i32 2, i32 2>
45
+ ; CHECK-NEXT: ret <2 x i32> [[MUL]]
58
46
;
59
47
%shl.mask = and <2 x i32 > %x , <i32 1073741823 , i32 1073741823 >
60
48
%tobool.not = icmp ne <2 x i32 > %shl.mask , zeroinitializer
@@ -65,11 +53,8 @@ define <2 x i32> @test_ne_vect(<2 x i32> %x) {
65
53
66
54
define i32 @test_nuw_dropped (i32 %x ) {
67
55
; CHECK-LABEL: @test_nuw_dropped(
68
- ; CHECK-NEXT: [[SHL_MASK:%.*]] = and i32 [[X:%.*]], 1073741823
69
- ; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq i32 [[SHL_MASK]], 0
70
- ; CHECK-NEXT: [[MUL:%.*]] = shl nuw i32 [[X]], 2
71
- ; CHECK-NEXT: [[COND:%.*]] = select i1 [[TOBOOL]], i32 0, i32 [[MUL]]
72
- ; CHECK-NEXT: ret i32 [[COND]]
56
+ ; CHECK-NEXT: [[MUL:%.*]] = shl i32 [[X:%.*]], 2
57
+ ; CHECK-NEXT: ret i32 [[MUL]]
73
58
;
74
59
%shl.mask = and i32 %x , 1073741823
75
60
%tobool = icmp eq i32 %shl.mask , 0
@@ -80,11 +65,8 @@ define i32 @test_nuw_dropped(i32 %x) {
80
65
81
66
define i32 @test_nsw_dropped (i32 %x ) {
82
67
; CHECK-LABEL: @test_nsw_dropped(
83
- ; CHECK-NEXT: [[SHL_MASK:%.*]] = and i32 [[X:%.*]], 1073741823
84
- ; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq i32 [[SHL_MASK]], 0
85
- ; CHECK-NEXT: [[MUL:%.*]] = shl nsw i32 [[X]], 2
86
- ; CHECK-NEXT: [[COND:%.*]] = select i1 [[TOBOOL]], i32 0, i32 [[MUL]]
87
- ; CHECK-NEXT: ret i32 [[COND]]
68
+ ; CHECK-NEXT: [[MUL:%.*]] = shl i32 [[X:%.*]], 2
69
+ ; CHECK-NEXT: ret i32 [[MUL]]
88
70
;
89
71
%shl.mask = and i32 %x , 1073741823
90
72
%tobool = icmp eq i32 %shl.mask , 0
@@ -101,9 +83,8 @@ define i32 @test_multi_use(i32 %x) {
101
83
; CHECK-NEXT: [[SHL_MASK:%.*]] = and i32 [[X:%.*]], 1073741823
102
84
; CHECK-NEXT: [[TOBOOL_NOT:%.*]] = icmp ne i32 [[SHL_MASK]], 0
103
85
; CHECK-NEXT: [[MUL:%.*]] = shl i32 [[X]], 2
104
- ; CHECK-NEXT: [[COND:%.*]] = select i1 [[TOBOOL_NOT]], i32 [[MUL]], i32 0
105
86
; CHECK-NEXT: call void @use_multi(i32 [[SHL_MASK]], i1 [[TOBOOL_NOT]], i32 [[MUL]])
106
- ; CHECK-NEXT: ret i32 [[COND ]]
87
+ ; CHECK-NEXT: ret i32 [[MUL ]]
107
88
;
108
89
%shl.mask = and i32 %x , 1073741823
109
90
%tobool.not = icmp ne i32 %shl.mask , 0
@@ -117,10 +98,9 @@ define i32 @test_multi_use_nuw_dropped(i32 %x) {
117
98
; CHECK-LABEL: @test_multi_use_nuw_dropped(
118
99
; CHECK-NEXT: [[SHL_MASK:%.*]] = and i32 [[X:%.*]], 1073741823
119
100
; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq i32 [[SHL_MASK]], 0
120
- ; CHECK-NEXT: [[MUL:%.*]] = shl nuw i32 [[X]], 2
121
- ; CHECK-NEXT: [[COND:%.*]] = select i1 [[TOBOOL]], i32 0, i32 [[MUL]]
101
+ ; CHECK-NEXT: [[MUL:%.*]] = shl i32 [[X]], 2
122
102
; CHECK-NEXT: call void @use_multi(i32 [[SHL_MASK]], i1 [[TOBOOL]], i32 [[MUL]])
123
- ; CHECK-NEXT: ret i32 [[COND ]]
103
+ ; CHECK-NEXT: ret i32 [[MUL ]]
124
104
;
125
105
%shl.mask = and i32 %x , 1073741823
126
106
%tobool = icmp eq i32 %shl.mask , 0
0 commit comments