[llvm] [SimplifyCFG] Transform switch to select when common bits uniquely identify one case (PR #145233)
Antonio Frighetto via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 1 05:25:13 PDT 2025
================
@@ -309,3 +309,291 @@ end:
%t0 = phi i8 [ 42, %case1 ], [ 42, %case2 ], [ 44, %case3 ], [ 44, %case4 ]
ret i8 %t0
}
+
+define i1 @range0to4odd(i8 range(i8 0, 4) %f) {
+; CHECK-LABEL: @range0to4odd(
+; CHECK-NEXT: bb3:
+; CHECK-NEXT: [[TMP0:%.*]] = and i8 [[F:%.*]], 1
+; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i8 [[TMP0]], 1
+; CHECK-NEXT: [[TMP2:%.*]] = select i1 [[TMP1]], i1 true, i1 false
+; CHECK-NEXT: ret i1 [[TMP2]]
+;
+ switch i8 %f, label %bb1 [
+ i8 1, label %bb2
+ i8 3, label %bb2
+ ]
+bb1:
+ br label %bb3
+bb2:
+ br label %bb3
+bb3:
+ %_0.sroa.0.0 = phi i1 [ false, %bb1 ], [ true, %bb2 ]
+ ret i1 %_0.sroa.0.0
----------------
antoniofrighetto wrote:
```suggestion
%phi = phi i1 [ false, %bb1 ], [ true, %bb2 ]
ret i1 %phi
```
Same below for the others.
https://github.com/llvm/llvm-project/pull/145233
More information about the llvm-commits
mailing list