[TTI] getTypeBasedIntrinsicInstrCost - add basic handling for strided load/store...
[llvm-project.git] / llvm / test / Transforms / PhaseOrdering / switch-sext.ll
blob3fbb02d0462931cb0f962b1c31a3beca60209b76
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4
2 ; RUN: opt -S -passes="default<O3>" < %s | FileCheck %s
4 define i8 @test_switch_with_sext_phi(i8 %code) {
5 ; CHECK-LABEL: define noundef i8 @test_switch_with_sext_phi(
6 ; CHECK-SAME: i8 [[CODE:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {
7 ; CHECK-NEXT:  entry:
8 ; CHECK-NEXT:    switch i8 [[CODE]], label [[SW_EPILOG:%.*]] [
9 ; CHECK-NEXT:      i8 108, label [[SW_BB2:%.*]]
10 ; CHECK-NEXT:      i8 76, label [[SW_BB3:%.*]]
11 ; CHECK-NEXT:    ]
12 ; CHECK:       sw.bb2:
13 ; CHECK-NEXT:    br label [[SW_EPILOG]]
14 ; CHECK:       sw.bb3:
15 ; CHECK-NEXT:    br label [[SW_EPILOG]]
16 ; CHECK:       sw.epilog:
17 ; CHECK-NEXT:    [[PEP_CODE:%.*]] = phi i8 [ 81, [[SW_BB3]] ], [ 113, [[SW_BB2]] ], [ [[CODE]], [[ENTRY:%.*]] ]
18 ; CHECK-NEXT:    ret i8 [[PEP_CODE]]
20 entry:
21   %conv = sext i8 %code to i32
22   switch i32 %conv, label %sw.default [
23   i32 105, label %sw.epilog
24   i32 73, label %sw.bb1
25   i32 108, label %sw.bb2
26   i32 76, label %sw.bb3
27   i32 63, label %sw.bb4
28   ]
30 sw.bb1:
31   br label %sw.epilog
33 sw.bb2:
34   br label %sw.epilog
36 sw.bb3:
37   br label %sw.epilog
39 sw.bb4:
40   br label %sw.epilog
42 sw.default:
43   br label %sw.epilog
45 sw.epilog:
46   %pep_code = phi i8 [ %code, %sw.default ], [ 63, %sw.bb4 ], [ 81, %sw.bb3 ], [ 113, %sw.bb2 ], [ 73, %sw.bb1 ], [ 105, %entry ]
47   ret i8 %pep_code