[llvm] 278062f - [CVP] Add test showing how a call-site range can pessimize opt (NFC)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 22 07:45:42 PDT 2025


Author: Nikita Popov
Date: 2025-04-22T16:45:33+02:00
New Revision: 278062f119795373c5e43a62280b4b6f2bffbd48

URL: https://github.com/llvm/llvm-project/commit/278062f119795373c5e43a62280b4b6f2bffbd48
DIFF: https://github.com/llvm/llvm-project/commit/278062f119795373c5e43a62280b4b6f2bffbd48.diff

LOG: [CVP] Add test showing how a call-site range can pessimize opt (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 72012e4c09db8..c42a685b21c76 100644
--- a/llvm/test/Transforms/CorrelatedValuePropagation/uscmp.ll
+++ b/llvm/test/Transforms/CorrelatedValuePropagation/uscmp.ll
@@ -308,6 +308,59 @@ default:
   ret i8 123
 }
 
+define i8 @ucmp_switch_callsite_range(i32 %x, i32 %y) {
+; CHECK-LABEL: @ucmp_switch_callsite_range(
+; CHECK-NEXT:    [[CMP:%.*]] = call range(i8 -2, 3) 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.unreachable:
+; CHECK-NEXT:    unreachable
+; CHECK:       default:
+; CHECK-NEXT:    ret i8 123
+;
+  %cmp = call range(i8 -2, 3) 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:%.*]])


        


More information about the llvm-commits mailing list