[llvm] 88c3e0e - [CVP] Add tests for ucmp/scmp with switch (NFC)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 14 09:30:11 PDT 2025


Author: Nikita Popov
Date: 2025-04-14T18:30:01+02:00
New Revision: 88c3e0eecffd42c6743638db51ad6db379996ff2

URL: https://github.com/llvm/llvm-project/commit/88c3e0eecffd42c6743638db51ad6db379996ff2
DIFF: https://github.com/llvm/llvm-project/commit/88c3e0eecffd42c6743638db51ad6db379996ff2.diff

LOG: [CVP] Add tests for ucmp/scmp with switch (NFC)

Added: 
    

Modified: 
    llvm/test/Transforms/CorrelatedValuePropagation/uscmp.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/CorrelatedValuePropagation/uscmp.ll b/llvm/test/Transforms/CorrelatedValuePropagation/uscmp.ll
index 503c715e3bf7c..a4fb9e7f5369a 100644
--- a/llvm/test/Transforms/CorrelatedValuePropagation/uscmp.ll
+++ b/llvm/test/Transforms/CorrelatedValuePropagation/uscmp.ll
@@ -256,3 +256,105 @@ define i8 @ucmp_6(i32 %x, i32 %y) {
   %1 = call i8 @llvm.ucmp(i32 %x, i32 %y)
   ret i8 %1
 }
+
+define i8 @ucmp_switch(i32 %x, i32 %y) {
+; CHECK-LABEL: @ucmp_switch(
+; CHECK-NEXT:    [[CMP:%.*]] = call i8 @llvm.ucmp.i8.i32(i32 [[X:%.*]], i32 [[Y:%.*]])
+; CHECK-NEXT:    switch i8 [[CMP]], label [[DEFAULT_UNREACHABLE:%.*]] [
+; CHECK-NEXT:      i8 -2, label [[BB_NEG2:%.*]]
+; CHECK-NEXT:      i8 -1, label [[BB_NEG1:%.*]]
+; CHECK-NEXT:      i8 0, label [[BB_0:%.*]]
+; CHECK-NEXT:      i8 1, label [[BB_1:%.*]]
+; CHECK-NEXT:      i8 2, label [[BB_2:%.*]]
+; CHECK-NEXT:    ]
+; CHECK:       bb.neg2:
+; CHECK-NEXT:    ret i8 -2
+; CHECK:       bb.neg1:
+; CHECK-NEXT:    ret i8 -1
+; CHECK:       bb.0:
+; CHECK-NEXT:    ret i8 0
+; CHECK:       bb.1:
+; CHECK-NEXT:    ret i8 1
+; CHECK:       bb.2:
+; CHECK-NEXT:    ret i8 2
+; CHECK:       default:
+; CHECK-NEXT:    ret i8 123
+;
+  %cmp = call i8 @llvm.ucmp(i32 %x, i32 %y)
+  switch i8 %cmp, label %default [
+  i8 -2, label %bb.neg2
+  i8 -1, label %bb.neg1
+  i8 0, label %bb.0
+  i8 1, label %bb.1
+  i8 2, label %bb.2
+  ]
+
+bb.neg2:
+  ret i8 -2
+
+bb.neg1:
+  ret i8 -1
+
+bb.0:
+  ret i8 0
+
+bb.1:
+  ret i8 1
+
+bb.2:
+  ret i8 2
+
+default:
+  ret i8 123
+}
+
+define i8 @scmp_switch(i32 %x, i32 %y) {
+; CHECK-LABEL: @scmp_switch(
+; CHECK-NEXT:    [[CMP:%.*]] = call i8 @llvm.scmp.i8.i32(i32 [[X:%.*]], i32 [[Y:%.*]])
+; CHECK-NEXT:    switch i8 [[CMP]], label [[DEFAULT_UNREACHABLE:%.*]] [
+; CHECK-NEXT:      i8 -2, label [[BB_NEG2:%.*]]
+; CHECK-NEXT:      i8 -1, label [[BB_NEG1:%.*]]
+; CHECK-NEXT:      i8 0, label [[BB_0:%.*]]
+; CHECK-NEXT:      i8 1, label [[BB_1:%.*]]
+; CHECK-NEXT:      i8 2, label [[BB_2:%.*]]
+; CHECK-NEXT:    ]
+; CHECK:       bb.neg2:
+; CHECK-NEXT:    ret i8 -2
+; CHECK:       bb.neg1:
+; CHECK-NEXT:    ret i8 -1
+; CHECK:       bb.0:
+; CHECK-NEXT:    ret i8 0
+; CHECK:       bb.1:
+; CHECK-NEXT:    ret i8 1
+; CHECK:       bb.2:
+; CHECK-NEXT:    ret i8 2
+; CHECK:       default:
+; CHECK-NEXT:    ret i8 123
+;
+  %cmp = call i8 @llvm.scmp(i32 %x, i32 %y)
+  switch i8 %cmp, label %default [
+  i8 -2, label %bb.neg2
+  i8 -1, label %bb.neg1
+  i8 0, label %bb.0
+  i8 1, label %bb.1
+  i8 2, label %bb.2
+  ]
+
+bb.neg2:
+  ret i8 -2
+
+bb.neg1:
+  ret i8 -1
+
+bb.0:
+  ret i8 0
+
+bb.1:
+  ret i8 1
+
+bb.2:
+  ret i8 2
+
+default:
+  ret i8 123
+}


        


More information about the llvm-commits mailing list