; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 ; RUN: llc -mtriple=riscv64 -regalloc-csr-first-time-cost=0 < %s | FileCheck %s -check-prefix=ZERO-COST ; RUN: llc -mtriple=riscv64 < %s | FileCheck %s -check-prefix=DEFAULT-COST define fastcc void @Perl_sv_setnv(i8 %c, ptr %.str.54.3682) nounwind { ; ZERO-COST-LABEL: Perl_sv_setnv: ; ZERO-COST: # %bb.0: # %entry ; ZERO-COST-NEXT: addi sp, sp, -32 ; ZERO-COST-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; ZERO-COST-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; ZERO-COST-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; ZERO-COST-NEXT: zext.b a0, a0 ; ZERO-COST-NEXT: li a2, 2 ; ZERO-COST-NEXT: blt a2, a0, .LBB0_3 ; ZERO-COST-NEXT: # %bb.1: # %entry ; ZERO-COST-NEXT: beqz a0, .LBB0_4 ; ZERO-COST-NEXT: # %bb.2: # %entry ; ZERO-COST-NEXT: mv s0, a1 ; ZERO-COST-NEXT: li a1, 1 ; ZERO-COST-NEXT: beq a0, a1, .LBB0_6 ; ZERO-COST-NEXT: j .LBB0_7 ; ZERO-COST-NEXT: .LBB0_3: # %entry ; ZERO-COST-NEXT: li a2, 3 ; ZERO-COST-NEXT: bne a0, a2, .LBB0_5 ; ZERO-COST-NEXT: .LBB0_4: # %sw.bb3 ; ZERO-COST-NEXT: ld ra, 24(sp) # 8-byte Folded Reload ; ZERO-COST-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; ZERO-COST-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; ZERO-COST-NEXT: addi sp, sp, 32 ; ZERO-COST-NEXT: ret ; ZERO-COST-NEXT: .LBB0_5: # %entry ; ZERO-COST-NEXT: mv s0, a1 ; ZERO-COST-NEXT: li a1, 12 ; ZERO-COST-NEXT: bne a0, a1, .LBB0_7 ; ZERO-COST-NEXT: .LBB0_6: # %sw.bb34.i ; ZERO-COST-NEXT: li s0, 0 ; ZERO-COST-NEXT: .LBB0_7: # %Perl_sv_reftype.exit ; ZERO-COST-NEXT: li s1, 0 ; ZERO-COST-NEXT: li a0, 0 ; ZERO-COST-NEXT: li a1, 0 ; ZERO-COST-NEXT: jalr s1 ; ZERO-COST-NEXT: li a0, 0 ; ZERO-COST-NEXT: mv a1, s0 ; ZERO-COST-NEXT: li a2, 0 ; ZERO-COST-NEXT: jalr s1 ; ; DEFAULT-COST-LABEL: Perl_sv_setnv: ; DEFAULT-COST: # %bb.0: # %entry ; DEFAULT-COST-NEXT: addi sp, sp, -32 ; DEFAULT-COST-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; DEFAULT-COST-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; DEFAULT-COST-NEXT: zext.b a0, a0 ; DEFAULT-COST-NEXT: li a2, 2 ; DEFAULT-COST-NEXT: blt a2, a0, .LBB0_3 ; DEFAULT-COST-NEXT: # %bb.1: # %entry ; DEFAULT-COST-NEXT: beqz a0, .LBB0_4 ; DEFAULT-COST-NEXT: # %bb.2: # %entry ; DEFAULT-COST-NEXT: sd a1, 8(sp) # 8-byte Folded Spill ; DEFAULT-COST-NEXT: li a1, 1 ; DEFAULT-COST-NEXT: beq a0, a1, .LBB0_6 ; DEFAULT-COST-NEXT: j .LBB0_7 ; DEFAULT-COST-NEXT: .LBB0_3: # %entry ; DEFAULT-COST-NEXT: li a2, 3 ; DEFAULT-COST-NEXT: bne a0, a2, .LBB0_5 ; DEFAULT-COST-NEXT: .LBB0_4: # %sw.bb3 ; DEFAULT-COST-NEXT: ld ra, 24(sp) # 8-byte Folded Reload ; DEFAULT-COST-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; DEFAULT-COST-NEXT: addi sp, sp, 32 ; DEFAULT-COST-NEXT: ret ; DEFAULT-COST-NEXT: .LBB0_5: # %entry ; DEFAULT-COST-NEXT: sd a1, 8(sp) # 8-byte Folded Spill ; DEFAULT-COST-NEXT: li a1, 12 ; DEFAULT-COST-NEXT: bne a0, a1, .LBB0_7 ; DEFAULT-COST-NEXT: .LBB0_6: # %sw.bb34.i ; DEFAULT-COST-NEXT: sd zero, 8(sp) # 8-byte Folded Spill ; DEFAULT-COST-NEXT: .LBB0_7: # %Perl_sv_reftype.exit ; DEFAULT-COST-NEXT: li s0, 0 ; DEFAULT-COST-NEXT: li a0, 0 ; DEFAULT-COST-NEXT: li a1, 0 ; DEFAULT-COST-NEXT: jalr s0 ; DEFAULT-COST-NEXT: li a0, 0 ; DEFAULT-COST-NEXT: ld a1, 8(sp) # 8-byte Folded Reload ; DEFAULT-COST-NEXT: li a2, 0 ; DEFAULT-COST-NEXT: jalr s0 entry: switch i8 %c, label %Perl_sv_reftype.exit [ i8 1, label %sw.bb4 i8 12, label %sw.bb34.i i8 3, label %sw.bb3 i8 0, label %sw.bb3 ] sw.bb3: ; preds = %entry, %entry ret void sw.bb4: ; preds = %entry br label %Perl_sv_reftype.exit sw.bb34.i: ; preds = %entry br label %Perl_sv_reftype.exit Perl_sv_reftype.exit: ; preds = %sw.bb34.i, %sw.bb4, %entry %retval.0.i = phi ptr [ null, %sw.bb34.i ], [ null, %sw.bb4 ], [ %.str.54.3682, %entry ] %call17 = tail call fastcc i64 null(ptr null, i32 0) tail call void (ptr, ...) null(ptr null, ptr %retval.0.i, ptr null) unreachable }