|
| 1 | +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 |
| 2 | +; RUN: llc -mtriple=riscv64 -regalloc-csr-first-time-cost=0 < %s | FileCheck %s -check-prefix=ZERO-COST |
| 3 | +; RUN: llc -mtriple=riscv64 < %s | FileCheck %s -check-prefix=DEFAULT-COST |
| 4 | + |
| 5 | +define fastcc void @Perl_sv_setnv(i8 %c, ptr %.str.54.3682) nounwind { |
| 6 | +; ZERO-COST-LABEL: Perl_sv_setnv: |
| 7 | +; ZERO-COST: # %bb.0: # %entry |
| 8 | +; ZERO-COST-NEXT: addi sp, sp, -32 |
| 9 | +; ZERO-COST-NEXT: sd ra, 24(sp) # 8-byte Folded Spill |
| 10 | +; ZERO-COST-NEXT: sd s0, 16(sp) # 8-byte Folded Spill |
| 11 | +; ZERO-COST-NEXT: sd s1, 8(sp) # 8-byte Folded Spill |
| 12 | +; ZERO-COST-NEXT: andi a0, a0, 255 |
| 13 | +; ZERO-COST-NEXT: li a2, 2 |
| 14 | +; ZERO-COST-NEXT: blt a2, a0, .LBB0_3 |
| 15 | +; ZERO-COST-NEXT: # %bb.1: # %entry |
| 16 | +; ZERO-COST-NEXT: beqz a0, .LBB0_4 |
| 17 | +; ZERO-COST-NEXT: # %bb.2: # %entry |
| 18 | +; ZERO-COST-NEXT: mv s0, a1 |
| 19 | +; ZERO-COST-NEXT: li a1, 1 |
| 20 | +; ZERO-COST-NEXT: beq a0, a1, .LBB0_6 |
| 21 | +; ZERO-COST-NEXT: j .LBB0_7 |
| 22 | +; ZERO-COST-NEXT: .LBB0_3: # %entry |
| 23 | +; ZERO-COST-NEXT: li a2, 3 |
| 24 | +; ZERO-COST-NEXT: bne a0, a2, .LBB0_5 |
| 25 | +; ZERO-COST-NEXT: .LBB0_4: # %sw.bb3 |
| 26 | +; ZERO-COST-NEXT: ld ra, 24(sp) # 8-byte Folded Reload |
| 27 | +; ZERO-COST-NEXT: ld s0, 16(sp) # 8-byte Folded Reload |
| 28 | +; ZERO-COST-NEXT: ld s1, 8(sp) # 8-byte Folded Reload |
| 29 | +; ZERO-COST-NEXT: addi sp, sp, 32 |
| 30 | +; ZERO-COST-NEXT: ret |
| 31 | +; ZERO-COST-NEXT: .LBB0_5: # %entry |
| 32 | +; ZERO-COST-NEXT: mv s0, a1 |
| 33 | +; ZERO-COST-NEXT: li a1, 12 |
| 34 | +; ZERO-COST-NEXT: bne a0, a1, .LBB0_7 |
| 35 | +; ZERO-COST-NEXT: .LBB0_6: # %sw.bb34.i |
| 36 | +; ZERO-COST-NEXT: li s0, 0 |
| 37 | +; ZERO-COST-NEXT: .LBB0_7: # %Perl_sv_reftype.exit |
| 38 | +; ZERO-COST-NEXT: li s1, 0 |
| 39 | +; ZERO-COST-NEXT: li a0, 0 |
| 40 | +; ZERO-COST-NEXT: li a1, 0 |
| 41 | +; ZERO-COST-NEXT: jalr s1 |
| 42 | +; ZERO-COST-NEXT: li a0, 0 |
| 43 | +; ZERO-COST-NEXT: mv a1, s0 |
| 44 | +; ZERO-COST-NEXT: li a2, 0 |
| 45 | +; ZERO-COST-NEXT: jalr s1 |
| 46 | +; |
| 47 | +; DEFAULT-COST-LABEL: Perl_sv_setnv: |
| 48 | +; DEFAULT-COST: # %bb.0: # %entry |
| 49 | +; DEFAULT-COST-NEXT: addi sp, sp, -32 |
| 50 | +; DEFAULT-COST-NEXT: sd ra, 24(sp) # 8-byte Folded Spill |
| 51 | +; DEFAULT-COST-NEXT: sd s0, 16(sp) # 8-byte Folded Spill |
| 52 | +; DEFAULT-COST-NEXT: andi a0, a0, 255 |
| 53 | +; DEFAULT-COST-NEXT: li a2, 2 |
| 54 | +; DEFAULT-COST-NEXT: blt a2, a0, .LBB0_3 |
| 55 | +; DEFAULT-COST-NEXT: # %bb.1: # %entry |
| 56 | +; DEFAULT-COST-NEXT: beqz a0, .LBB0_4 |
| 57 | +; DEFAULT-COST-NEXT: # %bb.2: # %entry |
| 58 | +; DEFAULT-COST-NEXT: sd a1, 8(sp) # 8-byte Folded Spill |
| 59 | +; DEFAULT-COST-NEXT: li a1, 1 |
| 60 | +; DEFAULT-COST-NEXT: beq a0, a1, .LBB0_6 |
| 61 | +; DEFAULT-COST-NEXT: j .LBB0_7 |
| 62 | +; DEFAULT-COST-NEXT: .LBB0_3: # %entry |
| 63 | +; DEFAULT-COST-NEXT: li a2, 3 |
| 64 | +; DEFAULT-COST-NEXT: bne a0, a2, .LBB0_5 |
| 65 | +; DEFAULT-COST-NEXT: .LBB0_4: # %sw.bb3 |
| 66 | +; DEFAULT-COST-NEXT: ld ra, 24(sp) # 8-byte Folded Reload |
| 67 | +; DEFAULT-COST-NEXT: ld s0, 16(sp) # 8-byte Folded Reload |
| 68 | +; DEFAULT-COST-NEXT: addi sp, sp, 32 |
| 69 | +; DEFAULT-COST-NEXT: ret |
| 70 | +; DEFAULT-COST-NEXT: .LBB0_5: # %entry |
| 71 | +; DEFAULT-COST-NEXT: sd a1, 8(sp) # 8-byte Folded Spill |
| 72 | +; DEFAULT-COST-NEXT: li a1, 12 |
| 73 | +; DEFAULT-COST-NEXT: bne a0, a1, .LBB0_7 |
| 74 | +; DEFAULT-COST-NEXT: .LBB0_6: # %sw.bb34.i |
| 75 | +; DEFAULT-COST-NEXT: sd zero, 8(sp) # 8-byte Folded Spill |
| 76 | +; DEFAULT-COST-NEXT: .LBB0_7: # %Perl_sv_reftype.exit |
| 77 | +; DEFAULT-COST-NEXT: li s0, 0 |
| 78 | +; DEFAULT-COST-NEXT: li a0, 0 |
| 79 | +; DEFAULT-COST-NEXT: li a1, 0 |
| 80 | +; DEFAULT-COST-NEXT: jalr s0 |
| 81 | +; DEFAULT-COST-NEXT: li a0, 0 |
| 82 | +; DEFAULT-COST-NEXT: ld a1, 8(sp) # 8-byte Folded Reload |
| 83 | +; DEFAULT-COST-NEXT: li a2, 0 |
| 84 | +; DEFAULT-COST-NEXT: jalr s0 |
| 85 | +entry: |
| 86 | + switch i8 %c, label %Perl_sv_reftype.exit [ |
| 87 | + i8 1, label %sw.bb4 |
| 88 | + i8 12, label %sw.bb34.i |
| 89 | + i8 3, label %sw.bb3 |
| 90 | + i8 0, label %sw.bb3 |
| 91 | + ] |
| 92 | + |
| 93 | +sw.bb3: ; preds = %entry, %entry |
| 94 | + ret void |
| 95 | + |
| 96 | +sw.bb4: ; preds = %entry |
| 97 | + br label %Perl_sv_reftype.exit |
| 98 | + |
| 99 | +sw.bb34.i: ; preds = %entry |
| 100 | + br label %Perl_sv_reftype.exit |
| 101 | + |
| 102 | +Perl_sv_reftype.exit: ; preds = %sw.bb34.i, %sw.bb4, %entry |
| 103 | + %retval.0.i = phi ptr [ null, %sw.bb34.i ], [ null, %sw.bb4 ], [ %.str.54.3682, %entry ] |
| 104 | + %call17 = tail call fastcc i64 null(ptr null, i32 0) |
| 105 | + tail call void (ptr, ...) null(ptr null, ptr %retval.0.i, ptr null) |
| 106 | + unreachable |
| 107 | +} |
0 commit comments