Skip to content

Commit 97176bd

Browse files
committed
[InstCombine][NFC] Revisit tests in reuse-constant-from-select-in-icmp.ll
llvm-svn: 369163
1 parent eaff844 commit 97176bd

File tree

1 file changed

+30
-8
lines changed

1 file changed

+30
-8
lines changed

llvm/test/Transforms/InstCombine/reuse-constant-from-select-in-icmp.ll

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -211,41 +211,41 @@ define i32 @p15_commutativity2(i32 %x, i32 %y) {
211211
define <2 x i32> @n17_ult_zero(<2 x i32> %x, <2 x i32> %y) {
212212
; CHECK-LABEL: @n17_ult_zero(
213213
; CHECK-NEXT: [[T:%.*]] = icmp ult <2 x i32> [[X:%.*]], <i32 65536, i32 0>
214-
; CHECK-NEXT: [[R:%.*]] = select <2 x i1> [[T]], <2 x i32> [[Y:%.*]], <2 x i32> <i32 65535, i32 65535>
214+
; CHECK-NEXT: [[R:%.*]] = select <2 x i1> [[T]], <2 x i32> [[Y:%.*]], <2 x i32> <i32 65535, i32 -1>
215215
; CHECK-NEXT: ret <2 x i32> [[R]]
216216
;
217217
%t = icmp ult <2 x i32> %x, <i32 65536, i32 0>
218-
%r = select <2 x i1> %t, <2 x i32> %y, <2 x i32> <i32 65535, i32 65535>
218+
%r = select <2 x i1> %t, <2 x i32> %y, <2 x i32> <i32 65535, i32 -1>
219219
ret <2 x i32> %r
220220
}
221221
define <2 x i32> @n18_ugt_allones(<2 x i32> %x, <2 x i32> %y) {
222222
; CHECK-LABEL: @n18_ugt_allones(
223223
; CHECK-NEXT: [[T:%.*]] = icmp ugt <2 x i32> [[X:%.*]], <i32 65534, i32 -1>
224-
; CHECK-NEXT: [[R:%.*]] = select <2 x i1> [[T]], <2 x i32> [[Y:%.*]], <2 x i32> <i32 65535, i32 65535>
224+
; CHECK-NEXT: [[R:%.*]] = select <2 x i1> [[T]], <2 x i32> [[Y:%.*]], <2 x i32> <i32 65535, i32 0>
225225
; CHECK-NEXT: ret <2 x i32> [[R]]
226226
;
227227
%t = icmp ugt <2 x i32> %x, <i32 65534, i32 -1>
228-
%r = select <2 x i1> %t, <2 x i32> %y, <2 x i32> <i32 65535, i32 65535>
228+
%r = select <2 x i1> %t, <2 x i32> %y, <2 x i32> <i32 65535, i32 0>
229229
ret <2 x i32> %r
230230
}
231231
define <2 x i32> @n19_slt_int_min(<2 x i32> %x, <2 x i32> %y) {
232232
; CHECK-LABEL: @n19_slt_int_min(
233233
; CHECK-NEXT: [[T:%.*]] = icmp slt <2 x i32> [[X:%.*]], <i32 65536, i32 -2147483648>
234-
; CHECK-NEXT: [[R:%.*]] = select <2 x i1> [[T]], <2 x i32> [[Y:%.*]], <2 x i32> <i32 65535, i32 65535>
234+
; CHECK-NEXT: [[R:%.*]] = select <2 x i1> [[T]], <2 x i32> [[Y:%.*]], <2 x i32> <i32 65535, i32 2147483647>
235235
; CHECK-NEXT: ret <2 x i32> [[R]]
236236
;
237237
%t = icmp slt <2 x i32> %x, <i32 65536, i32 -2147483648>
238-
%r = select <2 x i1> %t, <2 x i32> %y, <2 x i32> <i32 65535, i32 65535>
238+
%r = select <2 x i1> %t, <2 x i32> %y, <2 x i32> <i32 65535, i32 2147483647>
239239
ret <2 x i32> %r
240240
}
241241
define <2 x i32> @n20_sgt_int_max(<2 x i32> %x, <2 x i32> %y) {
242242
; CHECK-LABEL: @n20_sgt_int_max(
243243
; CHECK-NEXT: [[T:%.*]] = icmp sgt <2 x i32> [[X:%.*]], <i32 65534, i32 2147483647>
244-
; CHECK-NEXT: [[R:%.*]] = select <2 x i1> [[T]], <2 x i32> [[Y:%.*]], <2 x i32> <i32 65535, i32 65535>
244+
; CHECK-NEXT: [[R:%.*]] = select <2 x i1> [[T]], <2 x i32> [[Y:%.*]], <2 x i32> <i32 65535, i32 -2147483648>
245245
; CHECK-NEXT: ret <2 x i32> [[R]]
246246
;
247247
%t = icmp sgt <2 x i32> %x, <i32 65534, i32 2147483647>
248-
%r = select <2 x i1> %t, <2 x i32> %y, <2 x i32> <i32 65535, i32 65535>
248+
%r = select <2 x i1> %t, <2 x i32> %y, <2 x i32> <i32 65535, i32 -2147483648>
249249
ret <2 x i32> %r
250250
}
251251

@@ -296,3 +296,25 @@ define i32 @n24_ult_65534(i32 %x, i32 %y) {
296296
%r = select i1 %t, i32 %y, i32 65535
297297
ret i32 %r
298298
}
299+
300+
; If we already have a match, it's good enough.
301+
define i32 @n25_all_good0(i32 %x, i32 %y) {
302+
; CHECK-LABEL: @n25_all_good0(
303+
; CHECK-NEXT: [[T:%.*]] = icmp ult i32 [[X:%.*]], 65536
304+
; CHECK-NEXT: [[R:%.*]] = select i1 [[T]], i32 65535, i32 65536
305+
; CHECK-NEXT: ret i32 [[R]]
306+
;
307+
%t = icmp ult i32 %x, 65536
308+
%r = select i1 %t, i32 65535, i32 65536
309+
ret i32 %r
310+
}
311+
define i32 @n26_all_good1(i32 %x, i32 %y) {
312+
; CHECK-LABEL: @n26_all_good1(
313+
; CHECK-NEXT: [[T:%.*]] = icmp ult i32 [[X:%.*]], 65536
314+
; CHECK-NEXT: [[R:%.*]] = select i1 [[T]], i32 65536, i32 65535
315+
; CHECK-NEXT: ret i32 [[R]]
316+
;
317+
%t = icmp ult i32 %x, 65536
318+
%r = select i1 %t, i32 65536, i32 65535
319+
ret i32 %r
320+
}

0 commit comments

Comments
 (0)