llvm/llvm/test/Transforms/PhaseOrdering/switch-sext.ll

; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4
; RUN: opt -S -passes='default<O3>' < %s | FileCheck %s

define i8 @test_switch_with_sext_phi(i8 %code) {
; CHECK-LABEL: define noundef i8 @test_switch_with_sext_phi(
; CHECK-SAME: i8 [[CODE:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {
; CHECK-NEXT:  entry:
; CHECK-NEXT:    switch i8 [[CODE]], label [[SW_EPILOG:%.*]] [
; CHECK-NEXT:      i8 76, label [[SW_BB3:%.*]]
; CHECK-NEXT:      i8 108, label [[SW_BB2:%.*]]
; CHECK-NEXT:    ]
; CHECK:       sw.bb2:
; CHECK-NEXT:    br label [[SW_EPILOG]]
; CHECK:       sw.bb3:
; CHECK-NEXT:    br label [[SW_EPILOG]]
; CHECK:       sw.epilog:
; CHECK-NEXT:    [[PEP_CODE:%.*]] = phi i8 [ 81, [[SW_BB3]] ], [ 113, [[SW_BB2]] ], [ [[CODE]], [[ENTRY:%.*]] ]
; CHECK-NEXT:    ret i8 [[PEP_CODE]]
;
entry:
  %conv = sext i8 %code to i32
  switch i32 %conv, label %sw.default [
  i32 105, label %sw.epilog
  i32 73, label %sw.bb1
  i32 108, label %sw.bb2
  i32 76, label %sw.bb3
  i32 63, label %sw.bb4
  ]

sw.bb1:
  br label %sw.epilog

sw.bb2:
  br label %sw.epilog

sw.bb3:
  br label %sw.epilog

sw.bb4:
  br label %sw.epilog

sw.default:
  br label %sw.epilog

sw.epilog:
  %pep_code = phi i8 [ %code, %sw.default ], [ 63, %sw.bb4 ], [ 81, %sw.bb3 ], [ 113, %sw.bb2 ], [ 73, %sw.bb1 ], [ 105, %entry ]
  ret i8 %pep_code
}