70 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc < %s -mtriple=riscv64 -o - | FileCheck %s3 4define void @foo(i32 %i) nounwind {5; CHECK-LABEL: foo:6; CHECK: # %bb.0: # %entry7; CHECK-NEXT: addi sp, sp, -168; CHECK-NEXT: sd ra, 8(sp) # 8-byte Folded Spill9; CHECK-NEXT: sext.w a0, a010; CHECK-NEXT: li a1, 711; CHECK-NEXT: beq a0, a1, .LBB0_312; CHECK-NEXT: # %bb.1: # %entry13; CHECK-NEXT: li a1, 514; CHECK-NEXT: bne a0, a1, .LBB0_415; CHECK-NEXT: # %bb.2: # %if.then16; CHECK-NEXT: call bar17; CHECK-NEXT: j .LBB0_418; CHECK-NEXT: .LBB0_3: # %if.then219; CHECK-NEXT: call bar20; CHECK-NEXT: .LBB0_4: # %if.end321; CHECK-NEXT: ld ra, 8(sp) # 8-byte Folded Reload22; CHECK-NEXT: addi sp, sp, 1623; CHECK-NEXT: tail bar24entry:25 switch i32 %i, label %if.end3 [26 i32 5, label %if.then27 i32 7, label %if.then228 ]29 30if.then:31 tail call void @bar() #032 br label %if.end333 34if.then2:35 tail call void @bar() #036 br label %if.end337 38if.end3:39 tail call void @bar() #040 ret void41}42 43define void @foo_tail(i1 %i) nounwind {44; CHECK-LABEL: foo_tail:45; CHECK: # %bb.0: # %entry46; CHECK-NEXT: andi a0, a0, 147; CHECK-NEXT: beqz a0, .LBB1_248; CHECK-NEXT: # %bb.1: # %if.then49; CHECK-NEXT: tail bar50; CHECK-NEXT: .LBB1_2: # %if.else51; CHECK-NEXT: tail bar52entry:53 br i1 %i, label %if.then, label %if.else54 55if.then:56 tail call void @bar() #057 br label %if.end58 59if.else:60 tail call void @bar() #061 br label %if.end62 63if.end:64 ret void65}66 67declare void @bar()68 69attributes #0 = { nomerge }70