| ; 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 |
| } |