mirror of
https://github.com/RPCS3/llvm.git
synced 2025-03-07 10:07:17 +00:00

What this does is make all symbols that would otherwise start with a .L (or L on MachO) unnamed. Some of these symbols still show up in the symbol table, but we can just make them unnamed. In order to make sure we produce identical results when going thought assembly, all .L (not just the compiler produced ones), are now unnamed. Running llc on llvm-as.opt.bc, the peak memory usage goes from 208.24MB to 205.57MB. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@240130 91177308-0d34-0410-b5e6-96231b3b80d8
112 lines
2.9 KiB
ArmAsm
112 lines
2.9 KiB
ArmAsm
# RUN: llvm-mc -triple mips64-unknown-unknown -target-abi o32 -filetype=obj -o - %s | \
|
|
# RUN: llvm-objdump -d -r -arch=mips64 - | \
|
|
# RUN: FileCheck -check-prefix=O32 %s
|
|
|
|
# RUN: llvm-mc -triple mips64-unknown-unknown -target-abi o32 %s | \
|
|
# RUN: FileCheck -check-prefix=ASM %s
|
|
|
|
# RUN: llvm-mc -triple mips64-unknown-unknown -target-abi n32 -filetype=obj -o - %s | \
|
|
# RUN: llvm-objdump -d -r -t -arch=mips64 - | \
|
|
# RUN: FileCheck -check-prefix=NXX -check-prefix=N32 %s
|
|
|
|
# RUN: llvm-mc -triple mips64-unknown-unknown -target-abi n32 %s | \
|
|
# RUN: FileCheck -check-prefix=ASM %s
|
|
|
|
# RUN: llvm-mc -triple mips64-unknown-unknown %s -filetype=obj -o - | \
|
|
# RUN: llvm-objdump -d -r -t -arch=mips64 - | \
|
|
# RUN: FileCheck -check-prefix=NXX -check-prefix=N64 %s
|
|
|
|
# RUN: llvm-mc -triple mips64-unknown-unknown %s | \
|
|
# RUN: FileCheck -check-prefix=ASM %s
|
|
|
|
.text
|
|
.option pic2
|
|
t1:
|
|
.cpsetup $25, 8, __cerror
|
|
|
|
|
|
# O32-NOT: __cerror
|
|
|
|
# FIXME: Direct object emission for N32 is still under development.
|
|
# N32 doesn't allow 3 operations to be specified in the same relocation
|
|
# record like N64 does.
|
|
|
|
# NXX: sd $gp, 8($sp)
|
|
# NXX: lui $gp, 0
|
|
# NXX: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16 __cerror
|
|
# NXX: addiu $gp, $gp, 0
|
|
# NXX: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16 __cerror
|
|
# N32: addu $gp, $gp, $25
|
|
# N64: daddu $gp, $gp, $25
|
|
|
|
# ASM: .cpsetup $25, 8, __cerror
|
|
|
|
t2:
|
|
|
|
.cpsetup $25, $2, __cerror
|
|
|
|
# O32-NOT: __cerror
|
|
|
|
# FIXME: Direct object emission for N32 is still under development.
|
|
# N32 doesn't allow 3 operations to be specified in the same relocation
|
|
# record like N64 does.
|
|
|
|
# NXX: move $2, $gp
|
|
# NXX: lui $gp, 0
|
|
# NXX: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16 __cerror
|
|
# NXX: addiu $gp, $gp, 0
|
|
# NXX: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16 __cerror
|
|
# N32: addu $gp, $gp, $25
|
|
# N64: daddu $gp, $gp, $25
|
|
|
|
# ASM: .cpsetup $25, $2, __cerror
|
|
|
|
# .cpsetup with local labels (PR22518):
|
|
1:
|
|
.cpsetup $25, $2, 1b
|
|
nop
|
|
sub $3, $3, $2
|
|
nop
|
|
|
|
# O32: t2:
|
|
# O32: nop
|
|
# O32: sub $3, $3, $2
|
|
# O32: nop
|
|
|
|
# FIXME: Direct object emission for N32 is still under development.
|
|
# N32 doesn't allow 3 operations to be specified in the same relocation
|
|
# record like N64 does.
|
|
|
|
# NXX: move $2, $gp
|
|
# NXX: lui $gp, 0
|
|
# NXX: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16
|
|
# NXX: addiu $gp, $gp, 0
|
|
# NXX: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16
|
|
# N32: addu $gp, $gp, $25
|
|
# N64: daddu $gp, $gp, $25
|
|
# NXX: nop
|
|
# NXX: sub $3, $3, $2
|
|
# NXX: nop
|
|
|
|
# ASM: .cpsetup $25, $2, $tmp0
|
|
|
|
t3:
|
|
.option pic0
|
|
nop
|
|
.cpsetup $25, 8, __cerror
|
|
nop
|
|
|
|
# Testing that .cpsetup expands to nothing in this case
|
|
# by checking that the next instruction after the first
|
|
# nop is also a 'nop'.
|
|
# NXX: nop
|
|
# NXX-NEXT: nop
|
|
|
|
# ASM: nop
|
|
# ASM: .cpsetup $25, 8, __cerror
|
|
# ASM: nop
|
|
|
|
# For .cpsetup with local labels, we need to check if $tmp0 is in the symbol
|
|
# table:
|
|
# NXX: .text 00000000 {{$}}
|