25
25
26
26
define i32 @t0_ult_slt_128 (i32 %x , i32 %replacement_low , i32 %replacement_high ) {
27
27
; CHECK-LABEL: @t0_ult_slt_128(
28
- ; CHECK-NEXT: [[T0:%.*]] = icmp slt i32 [[X:%.*]], 128
29
- ; CHECK-NEXT: [[T1:%.*]] = select i1 [[T0]], i32 [[REPLACEMENT_LOW:%.*]], i32 [[REPLACEMENT_HIGH:%.*]]
30
- ; CHECK-NEXT: [[T2:%.*]] = add i32 [[X]], 16
31
- ; CHECK-NEXT: [[T3:%.*]] = icmp ult i32 [[T2]], 144
32
- ; CHECK-NEXT: [[R:%.*]] = select i1 [[T3]], i32 [[X]], i32 [[T1]]
28
+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[X:%.*]], -16
29
+ ; CHECK-NEXT: [[TMP2:%.*]] = icmp slt i32 [[X]], 128
30
+ ; CHECK-NEXT: [[TMP3:%.*]] = select i1 [[TMP1]], i32 [[REPLACEMENT_LOW:%.*]], i32 [[X]]
31
+ ; CHECK-NEXT: [[R:%.*]] = select i1 [[TMP2]], i32 [[TMP3]], i32 [[REPLACEMENT_HIGH:%.*]]
33
32
; CHECK-NEXT: ret i32 [[R]]
34
33
;
35
34
%t0 = icmp slt i32 %x , 128
@@ -41,11 +40,10 @@ define i32 @t0_ult_slt_128(i32 %x, i32 %replacement_low, i32 %replacement_high)
41
40
}
42
41
define i32 @t1_ult_slt_0 (i32 %x , i32 %replacement_low , i32 %replacement_high ) {
43
42
; CHECK-LABEL: @t1_ult_slt_0(
44
- ; CHECK-NEXT: [[T0:%.*]] = icmp slt i32 [[X:%.*]], -16
45
- ; CHECK-NEXT: [[T1:%.*]] = select i1 [[T0]], i32 [[REPLACEMENT_LOW:%.*]], i32 [[REPLACEMENT_HIGH:%.*]]
46
- ; CHECK-NEXT: [[T2:%.*]] = add i32 [[X]], 16
47
- ; CHECK-NEXT: [[T3:%.*]] = icmp ult i32 [[T2]], 144
48
- ; CHECK-NEXT: [[R:%.*]] = select i1 [[T3]], i32 [[X]], i32 [[T1]]
43
+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[X:%.*]], -16
44
+ ; CHECK-NEXT: [[TMP2:%.*]] = icmp slt i32 [[X]], 128
45
+ ; CHECK-NEXT: [[TMP3:%.*]] = select i1 [[TMP1]], i32 [[REPLACEMENT_LOW:%.*]], i32 [[X]]
46
+ ; CHECK-NEXT: [[R:%.*]] = select i1 [[TMP2]], i32 [[TMP3]], i32 [[REPLACEMENT_HIGH:%.*]]
49
47
; CHECK-NEXT: ret i32 [[R]]
50
48
;
51
49
%t0 = icmp slt i32 %x , -16
@@ -58,11 +56,10 @@ define i32 @t1_ult_slt_0(i32 %x, i32 %replacement_low, i32 %replacement_high) {
58
56
59
57
define i32 @t2_ult_sgt_128 (i32 %x , i32 %replacement_low , i32 %replacement_high ) {
60
58
; CHECK-LABEL: @t2_ult_sgt_128(
61
- ; CHECK-NEXT: [[T0:%.*]] = icmp sgt i32 [[X:%.*]], 127
62
- ; CHECK-NEXT: [[T1:%.*]] = select i1 [[T0]], i32 [[REPLACEMENT_HIGH:%.*]], i32 [[REPLACEMENT_LOW:%.*]]
63
- ; CHECK-NEXT: [[T2:%.*]] = add i32 [[X]], 16
64
- ; CHECK-NEXT: [[T3:%.*]] = icmp ult i32 [[T2]], 144
65
- ; CHECK-NEXT: [[R:%.*]] = select i1 [[T3]], i32 [[X]], i32 [[T1]]
59
+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[X:%.*]], -16
60
+ ; CHECK-NEXT: [[TMP2:%.*]] = icmp slt i32 [[X]], 128
61
+ ; CHECK-NEXT: [[TMP3:%.*]] = select i1 [[TMP1]], i32 [[REPLACEMENT_LOW:%.*]], i32 [[X]]
62
+ ; CHECK-NEXT: [[R:%.*]] = select i1 [[TMP2]], i32 [[TMP3]], i32 [[REPLACEMENT_HIGH:%.*]]
66
63
; CHECK-NEXT: ret i32 [[R]]
67
64
;
68
65
%t0 = icmp sgt i32 %x , 127
@@ -74,11 +71,10 @@ define i32 @t2_ult_sgt_128(i32 %x, i32 %replacement_low, i32 %replacement_high)
74
71
}
75
72
define i32 @t3_ult_sgt_neg1 (i32 %x , i32 %replacement_low , i32 %replacement_high ) {
76
73
; CHECK-LABEL: @t3_ult_sgt_neg1(
77
- ; CHECK-NEXT: [[T0:%.*]] = icmp sgt i32 [[X:%.*]], -17
78
- ; CHECK-NEXT: [[T1:%.*]] = select i1 [[T0]], i32 [[REPLACEMENT_HIGH:%.*]], i32 [[REPLACEMENT_LOW:%.*]]
79
- ; CHECK-NEXT: [[T2:%.*]] = add i32 [[X]], 16
80
- ; CHECK-NEXT: [[T3:%.*]] = icmp ult i32 [[T2]], 144
81
- ; CHECK-NEXT: [[R:%.*]] = select i1 [[T3]], i32 [[X]], i32 [[T1]]
74
+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[X:%.*]], -16
75
+ ; CHECK-NEXT: [[TMP2:%.*]] = icmp slt i32 [[X]], 128
76
+ ; CHECK-NEXT: [[TMP3:%.*]] = select i1 [[TMP1]], i32 [[REPLACEMENT_LOW:%.*]], i32 [[X]]
77
+ ; CHECK-NEXT: [[R:%.*]] = select i1 [[TMP2]], i32 [[TMP3]], i32 [[REPLACEMENT_HIGH:%.*]]
82
78
; CHECK-NEXT: ret i32 [[R]]
83
79
;
84
80
%t0 = icmp sgt i32 %x , -17
@@ -91,11 +87,10 @@ define i32 @t3_ult_sgt_neg1(i32 %x, i32 %replacement_low, i32 %replacement_high)
91
87
92
88
define i32 @t4_ugt_slt_128 (i32 %x , i32 %replacement_low , i32 %replacement_high ) {
93
89
; CHECK-LABEL: @t4_ugt_slt_128(
94
- ; CHECK-NEXT: [[T0:%.*]] = icmp slt i32 [[X:%.*]], 128
95
- ; CHECK-NEXT: [[T1:%.*]] = select i1 [[T0]], i32 [[REPLACEMENT_LOW:%.*]], i32 [[REPLACEMENT_HIGH:%.*]]
96
- ; CHECK-NEXT: [[T2:%.*]] = add i32 [[X]], 16
97
- ; CHECK-NEXT: [[T3:%.*]] = icmp ugt i32 [[T2]], 143
98
- ; CHECK-NEXT: [[R:%.*]] = select i1 [[T3]], i32 [[T1]], i32 [[X]]
90
+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[X:%.*]], -16
91
+ ; CHECK-NEXT: [[TMP2:%.*]] = icmp slt i32 [[X]], 128
92
+ ; CHECK-NEXT: [[TMP3:%.*]] = select i1 [[TMP1]], i32 [[REPLACEMENT_LOW:%.*]], i32 [[X]]
93
+ ; CHECK-NEXT: [[R:%.*]] = select i1 [[TMP2]], i32 [[TMP3]], i32 [[REPLACEMENT_HIGH:%.*]]
99
94
; CHECK-NEXT: ret i32 [[R]]
100
95
;
101
96
%t0 = icmp slt i32 %x , 128
@@ -107,11 +102,10 @@ define i32 @t4_ugt_slt_128(i32 %x, i32 %replacement_low, i32 %replacement_high)
107
102
}
108
103
define i32 @t5_ugt_slt_0 (i32 %x , i32 %replacement_low , i32 %replacement_high ) {
109
104
; CHECK-LABEL: @t5_ugt_slt_0(
110
- ; CHECK-NEXT: [[T0:%.*]] = icmp slt i32 [[X:%.*]], -16
111
- ; CHECK-NEXT: [[T1:%.*]] = select i1 [[T0]], i32 [[REPLACEMENT_LOW:%.*]], i32 [[REPLACEMENT_HIGH:%.*]]
112
- ; CHECK-NEXT: [[T2:%.*]] = add i32 [[X]], 16
113
- ; CHECK-NEXT: [[T3:%.*]] = icmp ugt i32 [[T2]], 143
114
- ; CHECK-NEXT: [[R:%.*]] = select i1 [[T3]], i32 [[T1]], i32 [[X]]
105
+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[X:%.*]], -16
106
+ ; CHECK-NEXT: [[TMP2:%.*]] = icmp slt i32 [[X]], 128
107
+ ; CHECK-NEXT: [[TMP3:%.*]] = select i1 [[TMP1]], i32 [[REPLACEMENT_LOW:%.*]], i32 [[X]]
108
+ ; CHECK-NEXT: [[R:%.*]] = select i1 [[TMP2]], i32 [[TMP3]], i32 [[REPLACEMENT_HIGH:%.*]]
115
109
; CHECK-NEXT: ret i32 [[R]]
116
110
;
117
111
%t0 = icmp slt i32 %x , -16
@@ -124,11 +118,10 @@ define i32 @t5_ugt_slt_0(i32 %x, i32 %replacement_low, i32 %replacement_high) {
124
118
125
119
define i32 @t6_ugt_sgt_128 (i32 %x , i32 %replacement_low , i32 %replacement_high ) {
126
120
; CHECK-LABEL: @t6_ugt_sgt_128(
127
- ; CHECK-NEXT: [[T0:%.*]] = icmp sgt i32 [[X:%.*]], 127
128
- ; CHECK-NEXT: [[T1:%.*]] = select i1 [[T0]], i32 [[REPLACEMENT_HIGH:%.*]], i32 [[REPLACEMENT_LOW:%.*]]
129
- ; CHECK-NEXT: [[T2:%.*]] = add i32 [[X]], 16
130
- ; CHECK-NEXT: [[T3:%.*]] = icmp ugt i32 [[T2]], 143
131
- ; CHECK-NEXT: [[R:%.*]] = select i1 [[T3]], i32 [[T1]], i32 [[X]]
121
+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[X:%.*]], -16
122
+ ; CHECK-NEXT: [[TMP2:%.*]] = icmp slt i32 [[X]], 128
123
+ ; CHECK-NEXT: [[TMP3:%.*]] = select i1 [[TMP1]], i32 [[REPLACEMENT_LOW:%.*]], i32 [[X]]
124
+ ; CHECK-NEXT: [[R:%.*]] = select i1 [[TMP2]], i32 [[TMP3]], i32 [[REPLACEMENT_HIGH:%.*]]
132
125
; CHECK-NEXT: ret i32 [[R]]
133
126
;
134
127
%t0 = icmp sgt i32 %x , 127
@@ -140,11 +133,10 @@ define i32 @t6_ugt_sgt_128(i32 %x, i32 %replacement_low, i32 %replacement_high)
140
133
}
141
134
define i32 @t7_ugt_sgt_neg1 (i32 %x , i32 %replacement_low , i32 %replacement_high ) {
142
135
; CHECK-LABEL: @t7_ugt_sgt_neg1(
143
- ; CHECK-NEXT: [[T0:%.*]] = icmp sgt i32 [[X:%.*]], -17
144
- ; CHECK-NEXT: [[T1:%.*]] = select i1 [[T0]], i32 [[REPLACEMENT_HIGH:%.*]], i32 [[REPLACEMENT_LOW:%.*]]
145
- ; CHECK-NEXT: [[T2:%.*]] = add i32 [[X]], 16
146
- ; CHECK-NEXT: [[T3:%.*]] = icmp ugt i32 [[T2]], 143
147
- ; CHECK-NEXT: [[R:%.*]] = select i1 [[T3]], i32 [[T1]], i32 [[X]]
136
+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[X:%.*]], -16
137
+ ; CHECK-NEXT: [[TMP2:%.*]] = icmp slt i32 [[X]], 128
138
+ ; CHECK-NEXT: [[TMP3:%.*]] = select i1 [[TMP1]], i32 [[REPLACEMENT_LOW:%.*]], i32 [[X]]
139
+ ; CHECK-NEXT: [[R:%.*]] = select i1 [[TMP2]], i32 [[TMP3]], i32 [[REPLACEMENT_HIGH:%.*]]
148
140
; CHECK-NEXT: ret i32 [[R]]
149
141
;
150
142
%t0 = icmp sgt i32 %x , -17
@@ -205,10 +197,10 @@ define i32 @t10_oneuse0(i32 %x, i32 %replacement_low, i32 %replacement_high) {
205
197
; CHECK-LABEL: @t10_oneuse0(
206
198
; CHECK-NEXT: [[T0:%.*]] = icmp slt i32 [[X:%.*]], 64
207
199
; CHECK-NEXT: call void @use1(i1 [[T0]])
208
- ; CHECK-NEXT: [[T1 :%.*]] = select i1 [[T0]], i32 [[REPLACEMENT_LOW:%.* ]], i32 [[REPLACEMENT_HIGH:%.*]]
209
- ; CHECK-NEXT: [[T2 :%.*]] = add i32 [[X]], 16
210
- ; CHECK-NEXT: [[T3 :%.*]] = icmp ult i32 [[T2 ]], 144
211
- ; CHECK-NEXT: [[R:%.*]] = select i1 [[T3 ]], i32 [[X ]], i32 [[T1 ]]
200
+ ; CHECK-NEXT: [[TMP1 :%.*]] = icmp slt i32 [[X ]], -16
201
+ ; CHECK-NEXT: [[TMP2 :%.*]] = icmp slt i32 [[X]], 128
202
+ ; CHECK-NEXT: [[TMP3 :%.*]] = select i1 [[TMP1]], i32 [[REPLACEMENT_LOW:%.* ]], i32 [[X]]
203
+ ; CHECK-NEXT: [[R:%.*]] = select i1 [[TMP2 ]], i32 [[TMP3 ]], i32 [[REPLACEMENT_HIGH:%.* ]]
212
204
; CHECK-NEXT: ret i32 [[R]]
213
205
;
214
206
%t0 = icmp slt i32 %x , 64
@@ -241,12 +233,12 @@ define i32 @n11_oneuse1(i32 %x, i32 %replacement_low, i32 %replacement_high) {
241
233
; This one is ok.
242
234
define i32 @t12_oneuse2 (i32 %x , i32 %replacement_low , i32 %replacement_high ) {
243
235
; CHECK-LABEL: @t12_oneuse2(
244
- ; CHECK-NEXT: [[T0:%.*]] = icmp slt i32 [[X:%.*]], 64
245
- ; CHECK-NEXT: [[T1:%.*]] = select i1 [[T0]], i32 [[REPLACEMENT_LOW:%.*]], i32 [[REPLACEMENT_HIGH:%.*]]
246
- ; CHECK-NEXT: [[T2:%.*]] = add i32 [[X]], 16
236
+ ; CHECK-NEXT: [[T2:%.*]] = add i32 [[X:%.*]], 16
247
237
; CHECK-NEXT: call void @use32(i32 [[T2]])
248
- ; CHECK-NEXT: [[T3:%.*]] = icmp ult i32 [[T2]], 144
249
- ; CHECK-NEXT: [[R:%.*]] = select i1 [[T3]], i32 [[X]], i32 [[T1]]
238
+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[X]], -16
239
+ ; CHECK-NEXT: [[TMP2:%.*]] = icmp slt i32 [[X]], 128
240
+ ; CHECK-NEXT: [[TMP3:%.*]] = select i1 [[TMP1]], i32 [[REPLACEMENT_LOW:%.*]], i32 [[X]]
241
+ ; CHECK-NEXT: [[R:%.*]] = select i1 [[TMP2]], i32 [[TMP3]], i32 [[REPLACEMENT_HIGH:%.*]]
250
242
; CHECK-NEXT: ret i32 [[R]]
251
243
;
252
244
%t0 = icmp slt i32 %x , 64
@@ -414,11 +406,10 @@ define i32 @n19_oneuse9(i32 %x, i32 %replacement_low, i32 %replacement_high) {
414
406
415
407
define <2 x i32 > @t20_ult_slt_vec_splat (<2 x i32 > %x , <2 x i32 > %replacement_low , <2 x i32 > %replacement_high ) {
416
408
; CHECK-LABEL: @t20_ult_slt_vec_splat(
417
- ; CHECK-NEXT: [[T0:%.*]] = icmp slt <2 x i32> [[X:%.*]], <i32 128, i32 128>
418
- ; CHECK-NEXT: [[T1:%.*]] = select <2 x i1> [[T0]], <2 x i32> [[REPLACEMENT_LOW:%.*]], <2 x i32> [[REPLACEMENT_HIGH:%.*]]
419
- ; CHECK-NEXT: [[T2:%.*]] = add <2 x i32> [[X]], <i32 16, i32 16>
420
- ; CHECK-NEXT: [[T3:%.*]] = icmp ult <2 x i32> [[T2]], <i32 144, i32 144>
421
- ; CHECK-NEXT: [[R:%.*]] = select <2 x i1> [[T3]], <2 x i32> [[X]], <2 x i32> [[T1]]
409
+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt <2 x i32> [[X:%.*]], <i32 -16, i32 -16>
410
+ ; CHECK-NEXT: [[TMP2:%.*]] = icmp slt <2 x i32> [[X]], <i32 128, i32 128>
411
+ ; CHECK-NEXT: [[TMP3:%.*]] = select <2 x i1> [[TMP1]], <2 x i32> [[REPLACEMENT_LOW:%.*]], <2 x i32> [[X]]
412
+ ; CHECK-NEXT: [[R:%.*]] = select <2 x i1> [[TMP2]], <2 x i32> [[TMP3]], <2 x i32> [[REPLACEMENT_HIGH:%.*]]
422
413
; CHECK-NEXT: ret <2 x i32> [[R]]
423
414
;
424
415
%t0 = icmp slt <2 x i32 > %x , <i32 128 , i32 128 >
@@ -430,11 +421,10 @@ define <2 x i32> @t20_ult_slt_vec_splat(<2 x i32> %x, <2 x i32> %replacement_low
430
421
}
431
422
define <2 x i32 > @t21_ult_slt_vec_nonsplat (<2 x i32 > %x , <2 x i32 > %replacement_low , <2 x i32 > %replacement_high ) {
432
423
; CHECK-LABEL: @t21_ult_slt_vec_nonsplat(
433
- ; CHECK-NEXT: [[T0:%.*]] = icmp slt <2 x i32> [[X:%.*]], <i32 128, i32 64>
434
- ; CHECK-NEXT: [[T1:%.*]] = select <2 x i1> [[T0]], <2 x i32> [[REPLACEMENT_LOW:%.*]], <2 x i32> [[REPLACEMENT_HIGH:%.*]]
435
- ; CHECK-NEXT: [[T2:%.*]] = add <2 x i32> [[X]], <i32 16, i32 8>
436
- ; CHECK-NEXT: [[T3:%.*]] = icmp ult <2 x i32> [[T2]], <i32 144, i32 264>
437
- ; CHECK-NEXT: [[R:%.*]] = select <2 x i1> [[T3]], <2 x i32> [[X]], <2 x i32> [[T1]]
424
+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt <2 x i32> [[X:%.*]], <i32 -16, i32 -8>
425
+ ; CHECK-NEXT: [[TMP2:%.*]] = icmp slt <2 x i32> [[X]], <i32 128, i32 256>
426
+ ; CHECK-NEXT: [[TMP3:%.*]] = select <2 x i1> [[TMP1]], <2 x i32> [[REPLACEMENT_LOW:%.*]], <2 x i32> [[X]]
427
+ ; CHECK-NEXT: [[R:%.*]] = select <2 x i1> [[TMP2]], <2 x i32> [[TMP3]], <2 x i32> [[REPLACEMENT_HIGH:%.*]]
438
428
; CHECK-NEXT: ret <2 x i32> [[R]]
439
429
;
440
430
%t0 = icmp slt <2 x i32 > %x , <i32 128 , i32 64 >
@@ -473,10 +463,10 @@ define <2 x i32> @t23_ult_sge(<2 x i32> %x, <2 x i32> %replacement_low, <2 x i32
473
463
; CHECK-LABEL: @t23_ult_sge(
474
464
; CHECK-NEXT: [[T0:%.*]] = icmp sge <2 x i32> [[X:%.*]], <i32 128, i32 -2147483648>
475
465
; CHECK-NEXT: call void @use2xi1(<2 x i1> [[T0]])
476
- ; CHECK-NEXT: [[T1 :%.*]] = select <2 x i1 > [[T0 ]], <2 x i32> [[REPLACEMENT_HIGH:%.*]], <2 x i32> [[REPLACEMENT_LOW:%.*]]
477
- ; CHECK-NEXT: [[T2 :%.*]] = add <2 x i32> [[X]], <i32 16 , i32 -2147483648 >
478
- ; CHECK-NEXT: [[T3 :%.*]] = icmp ult <2 x i32 > [[T2 ]], <i32 144, i32 -1>
479
- ; CHECK-NEXT: [[R:%.*]] = select <2 x i1> [[T3 ]], <2 x i32> [[X ]], <2 x i32> [[T1 ]]
466
+ ; CHECK-NEXT: [[TMP1 :%.*]] = icmp slt <2 x i32 > [[X ]], <i32 -16, i32 -2147483648>
467
+ ; CHECK-NEXT: [[TMP2 :%.*]] = icmp slt <2 x i32> [[X]], <i32 128 , i32 2147483647 >
468
+ ; CHECK-NEXT: [[TMP3 :%.*]] = select <2 x i1 > [[TMP1 ]], <2 x i32> [[REPLACEMENT_LOW:%.*]], <2 x i32> [[X]]
469
+ ; CHECK-NEXT: [[R:%.*]] = select <2 x i1> [[TMP2 ]], <2 x i32> [[TMP3 ]], <2 x i32> [[REPLACEMENT_HIGH:%.* ]]
480
470
; CHECK-NEXT: ret <2 x i32> [[R]]
481
471
;
482
472
%t0 = icmp sge <2 x i32 > %x , <i32 128 , i32 -2147483648 >
0 commit comments