@@ -12,8 +12,9 @@ declare void @use_i32(i32)
12
12
13
13
define i32 @select_ult_shl_clamp_and_i32 (i32 %a0 , i32 %a1 , i32 %a2 ) {
14
14
; CHECK-LABEL: @select_ult_shl_clamp_and_i32(
15
- ; CHECK-NEXT: [[C :%.*]] = icmp ult i32 [[A1 :%.*]], 32
15
+ ; CHECK-NEXT: [[A1 :%.*]] = freeze i32 [[A3 :%.*]]
16
16
; CHECK-NEXT: [[TMP1:%.*]] = shl i32 [[A0:%.*]], [[A1]]
17
+ ; CHECK-NEXT: [[C:%.*]] = icmp ult i32 [[A1]], 32
17
18
; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[TMP1]], i32 [[A2:%.*]]
18
19
; CHECK-NEXT: ret i32 [[R]]
19
20
;
@@ -26,8 +27,9 @@ define i32 @select_ult_shl_clamp_and_i32(i32 %a0, i32 %a1, i32 %a2) {
26
27
27
28
define i32 @select_ule_ashr_clamp_and_i32 (i32 %a0 , i32 %a1 , i32 %a2 ) {
28
29
; CHECK-LABEL: @select_ule_ashr_clamp_and_i32(
29
- ; CHECK-NEXT: [[C :%.*]] = icmp ult i32 [[A1 :%.*]], 32
30
+ ; CHECK-NEXT: [[A1 :%.*]] = freeze i32 [[A3 :%.*]]
30
31
; CHECK-NEXT: [[TMP1:%.*]] = ashr i32 [[A0:%.*]], [[A1]]
32
+ ; CHECK-NEXT: [[C:%.*]] = icmp ult i32 [[A1]], 32
31
33
; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[TMP1]], i32 [[A2:%.*]]
32
34
; CHECK-NEXT: ret i32 [[R]]
33
35
;
@@ -40,8 +42,9 @@ define i32 @select_ule_ashr_clamp_and_i32(i32 %a0, i32 %a1, i32 %a2) {
40
42
41
43
define i32 @select_ugt_lshr_clamp_and_i32 (i32 %a0 , i32 %a1 , i32 %a2 ) {
42
44
; CHECK-LABEL: @select_ugt_lshr_clamp_and_i32(
43
- ; CHECK-NEXT: [[C :%.*]] = icmp ugt i32 [[A1 :%.*]], 31
45
+ ; CHECK-NEXT: [[A1 :%.*]] = freeze i32 [[A3 :%.*]]
44
46
; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[A0:%.*]], [[A1]]
47
+ ; CHECK-NEXT: [[C:%.*]] = icmp ugt i32 [[A1]], 31
45
48
; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[A2:%.*]], i32 [[TMP1]]
46
49
; CHECK-NEXT: ret i32 [[R]]
47
50
;
@@ -54,8 +57,9 @@ define i32 @select_ugt_lshr_clamp_and_i32(i32 %a0, i32 %a1, i32 %a2) {
54
57
55
58
define i32 @select_uge_shl_clamp_and_i32 (i32 %a0 , i32 %a1 , i32 %a2 ) {
56
59
; CHECK-LABEL: @select_uge_shl_clamp_and_i32(
57
- ; CHECK-NEXT: [[C :%.*]] = icmp ugt i32 [[A1 :%.*]], 31
60
+ ; CHECK-NEXT: [[A1 :%.*]] = freeze i32 [[A3 :%.*]]
58
61
; CHECK-NEXT: [[TMP1:%.*]] = shl i32 [[A0:%.*]], [[A1]]
62
+ ; CHECK-NEXT: [[C:%.*]] = icmp ugt i32 [[A1]], 31
59
63
; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[A2:%.*]], i32 [[TMP1]]
60
64
; CHECK-NEXT: ret i32 [[R]]
61
65
;
@@ -124,8 +128,9 @@ define i17 @select_uge_lshr_clamp_and_i17_nonpow2(i17 %a0, i17 %a1, i17 %a2) {
124
128
125
129
define i32 @select_ult_shl_clamp_umin_i32 (i32 %a0 , i32 %a1 , i32 %a2 ) {
126
130
; CHECK-LABEL: @select_ult_shl_clamp_umin_i32(
127
- ; CHECK-NEXT: [[C :%.*]] = icmp ult i32 [[A1 :%.*]], 32
131
+ ; CHECK-NEXT: [[A1 :%.*]] = freeze i32 [[A3 :%.*]]
128
132
; CHECK-NEXT: [[TMP1:%.*]] = shl i32 [[A0:%.*]], [[A1]]
133
+ ; CHECK-NEXT: [[C:%.*]] = icmp ult i32 [[A1]], 32
129
134
; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[TMP1]], i32 [[A2:%.*]]
130
135
; CHECK-NEXT: ret i32 [[R]]
131
136
;
@@ -138,8 +143,9 @@ define i32 @select_ult_shl_clamp_umin_i32(i32 %a0, i32 %a1, i32 %a2) {
138
143
139
144
define i17 @select_ule_ashr_clamp_umin_i17 (i17 %a0 , i17 %a1 , i17 %a2 ) {
140
145
; CHECK-LABEL: @select_ule_ashr_clamp_umin_i17(
141
- ; CHECK-NEXT: [[C :%.*]] = icmp ult i17 [[A1 :%.*]], 17
146
+ ; CHECK-NEXT: [[A1 :%.*]] = freeze i17 [[A3 :%.*]]
142
147
; CHECK-NEXT: [[TMP1:%.*]] = ashr i17 [[A0:%.*]], [[A1]]
148
+ ; CHECK-NEXT: [[C:%.*]] = icmp ult i17 [[A1]], 17
143
149
; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i17 [[TMP1]], i17 [[A2:%.*]]
144
150
; CHECK-NEXT: ret i17 [[R]]
145
151
;
@@ -152,8 +158,9 @@ define i17 @select_ule_ashr_clamp_umin_i17(i17 %a0, i17 %a1, i17 %a2) {
152
158
153
159
define i32 @select_ugt_shl_clamp_umin_i32 (i32 %a0 , i32 %a1 , i32 %a2 ) {
154
160
; CHECK-LABEL: @select_ugt_shl_clamp_umin_i32(
155
- ; CHECK-NEXT: [[C :%.*]] = icmp ugt i32 [[A1 :%.*]], 31
161
+ ; CHECK-NEXT: [[A1 :%.*]] = freeze i32 [[A3 :%.*]]
156
162
; CHECK-NEXT: [[S:%.*]] = shl i32 [[A0:%.*]], [[A1]]
163
+ ; CHECK-NEXT: [[C:%.*]] = icmp ugt i32 [[A1]], 31
157
164
; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[A2:%.*]], i32 [[S]]
158
165
; CHECK-NEXT: ret i32 [[R]]
159
166
;
@@ -166,8 +173,9 @@ define i32 @select_ugt_shl_clamp_umin_i32(i32 %a0, i32 %a1, i32 %a2) {
166
173
167
174
define <2 x i32 > @select_uge_lshr_clamp_umin_v2i32 (<2 x i32 > %a0 , <2 x i32 > %a1 , <2 x i32 > %a2 ) {
168
175
; CHECK-LABEL: @select_uge_lshr_clamp_umin_v2i32(
169
- ; CHECK-NEXT: [[C :%.*]] = icmp ugt <2 x i32> [[A1 :%.*]], <i32 31, i32 31>
176
+ ; CHECK-NEXT: [[A1 :%.*]] = freeze <2 x i32> [[A3 :%.*]]
170
177
; CHECK-NEXT: [[S:%.*]] = lshr <2 x i32> [[A0:%.*]], [[A1]]
178
+ ; CHECK-NEXT: [[C:%.*]] = icmp ugt <2 x i32> [[A1]], <i32 31, i32 31>
171
179
; CHECK-NEXT: [[R:%.*]] = select <2 x i1> [[C]], <2 x i32> [[A2:%.*]], <2 x i32> [[S]]
172
180
; CHECK-NEXT: ret <2 x i32> [[R]]
173
181
;
@@ -214,8 +222,9 @@ define i17 @select_uge_lshr_clamp_umin_i17_badlimit(i17 %a0, i17 %a1, i17 %a2) {
214
222
215
223
define range(i64 0 , -9223372036854775807 ) <4 x i64 > @PR109888 (<4 x i64 > %0 ) {
216
224
; CHECK-LABEL: @PR109888(
217
- ; CHECK-NEXT: [[C :%.*]] = icmp ult <4 x i64> [[TMP0 :%.*]], <i64 64, i64 64, i64 64, i64 64>
225
+ ; CHECK-NEXT: [[TMP0 :%.*]] = freeze <4 x i64> [[TMP1 :%.*]]
218
226
; CHECK-NEXT: [[TMP2:%.*]] = shl nuw <4 x i64> <i64 1, i64 1, i64 1, i64 1>, [[TMP0]]
227
+ ; CHECK-NEXT: [[C:%.*]] = icmp ult <4 x i64> [[TMP0]], <i64 64, i64 64, i64 64, i64 64>
219
228
; CHECK-NEXT: [[R:%.*]] = select <4 x i1> [[C]], <4 x i64> [[TMP2]], <4 x i64> zeroinitializer
220
229
; CHECK-NEXT: ret <4 x i64> [[R]]
221
230
;
0 commit comments