107 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple riscv32 -mattr=+experimental-zicfilp < %s | FileCheck %s3; RUN: llc -mtriple riscv64 -mattr=+experimental-zicfilp < %s | FileCheck %s4; RUN: llc -mtriple riscv32 < %s | FileCheck %s --check-prefix=NO-ZICFILP5; RUN: llc -mtriple riscv64 < %s | FileCheck %s --check-prefix=NO-ZICFILP6 7; Test using t2 to jump table branch.8define void @above_threshold(i32 signext %in, ptr %out) nounwind {9; CHECK-LABEL: above_threshold:10; CHECK: # %bb.0: # %entry11; CHECK-NEXT: lpad 012; CHECK-NEXT: addi a0, a0, -113; CHECK-NEXT: li a2, 514; CHECK-NEXT: bltu a2, a0, .LBB0_915; CHECK-NEXT: # %bb.1: # %entry16; CHECK-NEXT: slli a0, a0, 217; CHECK-NEXT: lui a2, %hi(.LJTI0_0)18; CHECK-NEXT: addi a2, a2, %lo(.LJTI0_0)19; CHECK-NEXT: add a0, a2, a020; CHECK-NEXT: lw t2, 0(a0)21; CHECK-NEXT: jr t222; CHECK-NEXT: .LBB0_2: # %bb123; CHECK-NEXT: li a0, 424; CHECK-NEXT: j .LBB0_825; CHECK-NEXT: .LBB0_3: # %bb526; CHECK-NEXT: li a0, 10027; CHECK-NEXT: j .LBB0_828; CHECK-NEXT: .LBB0_4: # %bb329; CHECK-NEXT: li a0, 230; CHECK-NEXT: j .LBB0_831; CHECK-NEXT: .LBB0_5: # %bb432; CHECK-NEXT: li a0, 133; CHECK-NEXT: j .LBB0_834; CHECK-NEXT: .LBB0_6: # %bb235; CHECK-NEXT: li a0, 336; CHECK-NEXT: j .LBB0_837; CHECK-NEXT: .LBB0_7: # %bb638; CHECK-NEXT: li a0, 20039; CHECK-NEXT: .LBB0_8: # %exit40; CHECK-NEXT: sw a0, 0(a1)41; CHECK-NEXT: .LBB0_9: # %exit42; CHECK-NEXT: ret43;44; NO-ZICFILP-LABEL: above_threshold:45; NO-ZICFILP: # %bb.0: # %entry46; NO-ZICFILP-NEXT: addi a0, a0, -147; NO-ZICFILP-NEXT: li a2, 548; NO-ZICFILP-NEXT: bltu a2, a0, .LBB0_949; NO-ZICFILP-NEXT: # %bb.1: # %entry50; NO-ZICFILP-NEXT: slli a0, a0, 251; NO-ZICFILP-NEXT: lui a2, %hi(.LJTI0_0)52; NO-ZICFILP-NEXT: addi a2, a2, %lo(.LJTI0_0)53; NO-ZICFILP-NEXT: add a0, a2, a054; NO-ZICFILP-NEXT: lw a0, 0(a0)55; NO-ZICFILP-NEXT: jr a056; NO-ZICFILP-NEXT: .LBB0_2: # %bb157; NO-ZICFILP-NEXT: li a0, 458; NO-ZICFILP-NEXT: j .LBB0_859; NO-ZICFILP-NEXT: .LBB0_3: # %bb560; NO-ZICFILP-NEXT: li a0, 10061; NO-ZICFILP-NEXT: j .LBB0_862; NO-ZICFILP-NEXT: .LBB0_4: # %bb363; NO-ZICFILP-NEXT: li a0, 264; NO-ZICFILP-NEXT: j .LBB0_865; NO-ZICFILP-NEXT: .LBB0_5: # %bb466; NO-ZICFILP-NEXT: li a0, 167; NO-ZICFILP-NEXT: j .LBB0_868; NO-ZICFILP-NEXT: .LBB0_6: # %bb269; NO-ZICFILP-NEXT: li a0, 370; NO-ZICFILP-NEXT: j .LBB0_871; NO-ZICFILP-NEXT: .LBB0_7: # %bb672; NO-ZICFILP-NEXT: li a0, 20073; NO-ZICFILP-NEXT: .LBB0_8: # %exit74; NO-ZICFILP-NEXT: sw a0, 0(a1)75; NO-ZICFILP-NEXT: .LBB0_9: # %exit76; NO-ZICFILP-NEXT: ret77entry:78 switch i32 %in, label %exit [79 i32 1, label %bb180 i32 2, label %bb281 i32 3, label %bb382 i32 4, label %bb483 i32 5, label %bb584 i32 6, label %bb685 ]86bb1:87 store i32 4, ptr %out88 br label %exit89bb2:90 store i32 3, ptr %out91 br label %exit92bb3:93 store i32 2, ptr %out94 br label %exit95bb4:96 store i32 1, ptr %out97 br label %exit98bb5:99 store i32 100, ptr %out100 br label %exit101bb6:102 store i32 200, ptr %out103 br label %exit104exit:105 ret void106}107