
The comment shows that at the time we were worried about producing the alias in assembly that might be ingested by a binutils version that doesn't yet support it. binutils gained support over 4 years ago <https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=c2137f55ad04e451d834048d4bfec1de2daea20e>. With all the changes in areas such as ELF attributes, if you tried to use LLVM's RISC-V assembler output with a binutils that old then zext.b would be the least of your worries.
108 lines
4.2 KiB
LLVM
108 lines
4.2 KiB
LLVM
; 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
|
|
}
|