Skip to content

Commit af5032d

Browse files
committed
Update compare-3way.ll
1 parent 8bda157 commit af5032d

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

llvm/test/Transforms/InstCombine/compare-3way.ll

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -585,6 +585,19 @@ define i16 @smax_smin_to_scmp_i16(i16 %x) {
585585
ret i16 %cond5
586586
}
587587

588+
; Test the reversed pattern: smax(smin(X, 1), -1) -> scmp(X, 0)
589+
define i32 @smin_smax_to_scmp(i32 %x) {
590+
; CHECK-LABEL: define i32 @smin_smax_to_scmp
591+
; CHECK-SAME: (i32 [[X:%.*]]) {
592+
; CHECK-NEXT: [[TMP1:%.*]] = call i32 @llvm.smax.i32(i32 [[X]], i32 -1)
593+
; CHECK-NEXT: [[COND5:%.*]] = call i32 @llvm.smin.i32(i32 [[TMP1]], i32 1)
594+
; CHECK-NEXT: ret i32 [[COND5]]
595+
;
596+
%cond = call i32 @llvm.smin.i32(i32 %x, i32 1)
597+
%cond5 = call i32 @llvm.smax.i32(i32 %cond, i32 -1)
598+
ret i32 %cond5
599+
}
600+
588601
define i32 @test_max_min_neg(i32 %x) {
589602
; CHECK-LABEL: define i32 @test_max_min_neg
590603
; CHECK-SAME: (i32 [[X:%.*]]) {
@@ -597,8 +610,8 @@ define i32 @test_max_min_neg(i32 %x) {
597610
ret i32 %cond5
598611
}
599612

600-
define i32 @test_no_optimization_multiple_uses(i32 %x) {
601-
; CHECK-LABEL: define i32 @test_no_optimization_multiple_uses
613+
define i32 @test_multiple_uses(i32 %x) {
614+
; CHECK-LABEL: define i32 @test_multiple_uses
602615
; CHECK-SAME: (i32 [[X:%.*]]) {
603616
; CHECK-NEXT: [[COND:%.*]] = call i32 @llvm.smax.i32(i32 [[X]], i32 -1)
604617
; CHECK-NEXT: [[COND5:%.*]] = call i32 @llvm.smin.i32(i32 [[COND]], i32 1)

0 commit comments

Comments
 (0)