181657922SJonathon Penix; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 281657922SJonathon Penix; RUN: llc -mtriple riscv64 < %s | FileCheck %s 381657922SJonathon Penix 481657922SJonathon Penixdeclare signext i32 @func1(ptr noundef) local_unnamed_addr 581657922SJonathon Penixdeclare signext i32 @func2(ptr noundef) local_unnamed_addr 681657922SJonathon Penixdeclare signext i32 @func3(ptr noundef) local_unnamed_addr 781657922SJonathon Penixdeclare signext i32 @func4(ptr noundef) local_unnamed_addr 881657922SJonathon Penixdeclare signext i32 @func5(ptr noundef) local_unnamed_addr 981657922SJonathon Penixdeclare signext i32 @default_func(ptr noundef) local_unnamed_addr 1081657922SJonathon Penix 1181657922SJonathon Penixdefine dso_local signext i32 @test_shrinkwrap_jump_table(ptr noundef %m) local_unnamed_addr { 1281657922SJonathon Penix; CHECK-LABEL: test_shrinkwrap_jump_table: 1381657922SJonathon Penix; CHECK: # %bb.0: # %entry 1481657922SJonathon Penix; CHECK-NEXT: lw a1, 0(a0) 1581657922SJonathon Penix; CHECK-NEXT: addi a1, a1, -1 1681657922SJonathon Penix; CHECK-NEXT: li a2, 4 17e3cf80c5SMatthias Braun; CHECK-NEXT: bltu a2, a1, .LBB0_7 1881657922SJonathon Penix; CHECK-NEXT: # %bb.1: # %entry 1981657922SJonathon Penix; CHECK-NEXT: slli a1, a1, 2 2081657922SJonathon Penix; CHECK-NEXT: lui a2, %hi(.LJTI0_0) 2181657922SJonathon Penix; CHECK-NEXT: addi a2, a2, %lo(.LJTI0_0) 2281657922SJonathon Penix; CHECK-NEXT: add a1, a1, a2 2381657922SJonathon Penix; CHECK-NEXT: lw a1, 0(a1) 2481657922SJonathon Penix; CHECK-NEXT: jr a1 2581657922SJonathon Penix; CHECK-NEXT: .LBB0_2: # %sw.bb 26eabaee0cSFangrui Song; CHECK-NEXT: tail func1 27e3cf80c5SMatthias Braun; CHECK-NEXT: .LBB0_3: # %sw.bb7 28eabaee0cSFangrui Song; CHECK-NEXT: tail func5 29e3cf80c5SMatthias Braun; CHECK-NEXT: .LBB0_4: # %sw.bb3 30eabaee0cSFangrui Song; CHECK-NEXT: tail func3 31e3cf80c5SMatthias Braun; CHECK-NEXT: .LBB0_5: # %sw.bb5 32eabaee0cSFangrui Song; CHECK-NEXT: tail func4 33e3cf80c5SMatthias Braun; CHECK-NEXT: .LBB0_6: # %sw.bb1 34eabaee0cSFangrui Song; CHECK-NEXT: tail func2 35e3cf80c5SMatthias Braun; CHECK-NEXT: .LBB0_7: # %sw.default 3681657922SJonathon Penix; CHECK-NEXT: addi sp, sp, -16 3781657922SJonathon Penix; CHECK-NEXT: .cfi_def_cfa_offset 16 3881657922SJonathon Penix; CHECK-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 3981657922SJonathon Penix; CHECK-NEXT: .cfi_offset ra, -8 40eabaee0cSFangrui Song; CHECK-NEXT: call default_func 4181657922SJonathon Penix; CHECK-NEXT: li a0, 0 4281657922SJonathon Penix; CHECK-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 43*97982a8cSdlav-sc; CHECK-NEXT: .cfi_restore ra 4481657922SJonathon Penix; CHECK-NEXT: addi sp, sp, 16 45*97982a8cSdlav-sc; CHECK-NEXT: .cfi_def_cfa_offset 0 4681657922SJonathon Penix; CHECK-NEXT: ret 4781657922SJonathon Penixentry: 4881657922SJonathon Penix %0 = load i32, ptr %m, align 4 4981657922SJonathon Penix switch i32 %0, label %sw.default [ 5081657922SJonathon Penix i32 1, label %sw.bb 5181657922SJonathon Penix i32 2, label %sw.bb1 5281657922SJonathon Penix i32 3, label %sw.bb3 5381657922SJonathon Penix i32 4, label %sw.bb5 5481657922SJonathon Penix i32 5, label %sw.bb7 5581657922SJonathon Penix ] 5681657922SJonathon Penix 5781657922SJonathon Penixsw.bb: 5881657922SJonathon Penix %call = tail call signext i32 @func1(ptr noundef nonnull %m) 5981657922SJonathon Penix br label %sw.epilog 6081657922SJonathon Penix 6181657922SJonathon Penixsw.bb1: 6281657922SJonathon Penix %call2 = tail call signext i32 @func2(ptr noundef nonnull %m) 6381657922SJonathon Penix br label %sw.epilog 6481657922SJonathon Penix 6581657922SJonathon Penixsw.bb3: 6681657922SJonathon Penix %call4 = tail call signext i32 @func3(ptr noundef nonnull %m) 6781657922SJonathon Penix br label %sw.epilog 6881657922SJonathon Penix 6981657922SJonathon Penixsw.bb5: 7081657922SJonathon Penix %call6 = tail call signext i32 @func4(ptr noundef nonnull %m) 7181657922SJonathon Penix br label %sw.epilog 7281657922SJonathon Penix 7381657922SJonathon Penixsw.bb7: 7481657922SJonathon Penix %call8 = tail call signext i32 @func5(ptr noundef nonnull %m) 7581657922SJonathon Penix br label %sw.epilog 7681657922SJonathon Penix 7781657922SJonathon Penixsw.default: 7881657922SJonathon Penix %call9 = tail call signext i32 @default_func(ptr noundef nonnull %m) 7981657922SJonathon Penix br label %sw.epilog 8081657922SJonathon Penix 8181657922SJonathon Penixsw.epilog: 8281657922SJonathon Penix %ret.0 = phi i32 [ 0, %sw.default ], [ %call8, %sw.bb7 ], [ %call6, %sw.bb5 ], [ %call4, %sw.bb3 ], [ %call2, %sw.bb1 ], [ %call, %sw.bb ] 8381657922SJonathon Penix ret i32 %ret.0 8481657922SJonathon Penix} 85