[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