Skip to content

Commit f907323

Browse files
committed
[SimplifyCFG] Add pre-commit tests from PR67843. NFC.
1 parent fcb160e commit f907323

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed

llvm/test/Transforms/SimplifyCFG/X86/switch_to_lookup_table.ll

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2068,3 +2068,90 @@ cond.end: ; preds = %entry, %cond.false
20682068
%conv = sext i3 %cond to i8
20692069
ret i8 %conv
20702070
}
2071+
2072+
define i32 @pr67843(i8 %0) {
2073+
; CHECK-LABEL: @pr67843(
2074+
; CHECK-NEXT: start:
2075+
; CHECK-NEXT: [[SWITCH_TABLEIDX:%.*]] = sub nsw i8 [[TMP0:%.*]], -1
2076+
; CHECK-NEXT: [[SWITCH_GEP:%.*]] = getelementptr inbounds [3 x i32], ptr @switch.table.pr67843, i32 0, i8 [[SWITCH_TABLEIDX]]
2077+
; CHECK-NEXT: [[SWITCH_LOAD:%.*]] = load i32, ptr [[SWITCH_GEP]], align 4
2078+
; CHECK-NEXT: ret i32 [[SWITCH_LOAD]]
2079+
;
2080+
start:
2081+
switch i8 %0, label %bb2 [
2082+
i8 0, label %bb5
2083+
i8 1, label %bb4
2084+
i8 -1, label %bb1
2085+
]
2086+
2087+
bb2: ; preds = %start
2088+
unreachable
2089+
2090+
bb4: ; preds = %start
2091+
br label %bb5
2092+
2093+
bb1: ; preds = %start
2094+
br label %bb5
2095+
2096+
bb5: ; preds = %start, %bb1, %bb4
2097+
%.0 = phi i32 [ 255, %bb1 ], [ 1, %bb4 ], [ 0, %start ]
2098+
ret i32 %.0
2099+
}
2100+
2101+
define i32 @linearmap_masked_with_common_highbits(i8 %0) {
2102+
; CHECK-LABEL: @linearmap_masked_with_common_highbits(
2103+
; CHECK-NEXT: start:
2104+
; CHECK-NEXT: [[SWITCH_TABLEIDX:%.*]] = sub nsw i8 [[TMP0:%.*]], -1
2105+
; CHECK-NEXT: [[SWITCH_GEP:%.*]] = getelementptr inbounds [3 x i32], ptr @switch.table.linearmap_masked_with_common_highbits, i32 0, i8 [[SWITCH_TABLEIDX]]
2106+
; CHECK-NEXT: [[SWITCH_LOAD:%.*]] = load i32, ptr [[SWITCH_GEP]], align 4
2107+
; CHECK-NEXT: ret i32 [[SWITCH_LOAD]]
2108+
;
2109+
start:
2110+
switch i8 %0, label %bb2 [
2111+
i8 0, label %bb5
2112+
i8 1, label %bb4
2113+
i8 -1, label %bb1
2114+
]
2115+
2116+
bb2: ; preds = %start
2117+
unreachable
2118+
2119+
bb4: ; preds = %start
2120+
br label %bb5
2121+
2122+
bb1: ; preds = %start
2123+
br label %bb5
2124+
2125+
bb5: ; preds = %start, %bb1, %bb4
2126+
%.0 = phi i32 [ 511, %bb1 ], [ 257, %bb4 ], [ 256, %start ]
2127+
ret i32 %.0
2128+
}
2129+
2130+
define i32 @linearmap_masked_with_common_highbits_fail(i8 %0) {
2131+
; CHECK-LABEL: @linearmap_masked_with_common_highbits_fail(
2132+
; CHECK-NEXT: start:
2133+
; CHECK-NEXT: [[SWITCH_TABLEIDX:%.*]] = sub nsw i8 [[TMP0:%.*]], -1
2134+
; CHECK-NEXT: [[SWITCH_GEP:%.*]] = getelementptr inbounds [3 x i32], ptr @switch.table.linearmap_masked_with_common_highbits_fail, i32 0, i8 [[SWITCH_TABLEIDX]]
2135+
; CHECK-NEXT: [[SWITCH_LOAD:%.*]] = load i32, ptr [[SWITCH_GEP]], align 4
2136+
; CHECK-NEXT: ret i32 [[SWITCH_LOAD]]
2137+
;
2138+
start:
2139+
switch i8 %0, label %bb2 [
2140+
i8 0, label %bb5
2141+
i8 1, label %bb4
2142+
i8 -1, label %bb1
2143+
]
2144+
2145+
bb2: ; preds = %start
2146+
unreachable
2147+
2148+
bb4: ; preds = %start
2149+
br label %bb5
2150+
2151+
bb1: ; preds = %start
2152+
br label %bb5
2153+
2154+
bb5: ; preds = %start, %bb1, %bb4
2155+
%.0 = phi i32 [ 1023, %bb1 ], [ 257, %bb4 ], [ 256, %start ]
2156+
ret i32 %.0
2157+
}

0 commit comments

Comments
 (0)