1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 04:32:44 +01:00
llvm-mirror/test/CodeGen/Mips
Francis Visoiu Mistrih f191e5a702 [FastISel] Skip creating unnecessary vregs for arguments
This behavior was added in r130928 for both FastISel and SD, and then
disabled in r131156 for FastISel.

This re-enables it for FastISel with the corresponding fix.

This is triggered only when FastISel can't lower the arguments and falls
back to SelectionDAG for it.

FastISel contains a map of "register fixups" where at the end of the
selection phase it replaces all uses of a register with another
register that FastISel sometimes pre-assigned. Code at the end of
SelectionDAGISel::runOnMachineFunction is doing the replacement at the
very end of the function, while other pieces that come in before that
look through the MachineFunction and assume everything is done. In this
case, the real issue is that the code emitting COPY instructions for the
liveins (physreg to vreg) (EmitLiveInCopies) is checking if the vreg
assigned to the physreg is used, and if it's not, it will skip the COPY.
If a register wasn't replaced with its assigned fixup yet, the copy will
be skipped and we'll end up with uses of undefined registers.

This fix moves the replacement of registers before the emission of
copies for the live-ins.

The initial motivation for this fix is to enable tail calls for
swiftself functions, which were blocked because we couldn't prove that
the swiftself argument (which is callee-save) comes from a function
argument (live-in), because there was an extra copy (vreg to vreg).

A few tests are affected by this:

* llvm/test/CodeGen/AArch64/swifterror.ll: we used to spill x21
(callee-save) but never reload it because it's attached to the return.
We now don't even spill it anymore.
* llvm/test/CodeGen/*/swiftself.ll: we tail-call now.
* llvm/test/CodeGen/AMDGPU/mubuf-legalize-operands.ll: I believe this
test was not really testing the right thing, but it worked because the
same registers were re-used.
* llvm/test/CodeGen/ARM/cmpxchg-O0.ll: regalloc changes
* llvm/test/CodeGen/ARM/swifterror.ll: get rid of a copy
* llvm/test/CodeGen/Mips/*: get rid of spills and copies
* llvm/test/CodeGen/SystemZ/swift-return.ll: smaller stack
* llvm/test/CodeGen/X86/atomic-unordered.ll: smaller stack
* llvm/test/CodeGen/X86/swifterror.ll: same as AArch64
* llvm/test/DebugInfo/X86/dbg-declare-arg.ll: stack size changed

Differential Revision: https://reviews.llvm.org/D62361

llvm-svn: 362963
2019-06-10 16:53:37 +00:00
..
cconv [mips] Emit .reloc R_{MICRO}MIPS_JALR along with j(al)r(c) $25 2019-01-17 21:50:37 +00:00
compactbranches
cstmaterialization
Fast-ISel RegAllocFast: Remove early selection loop, the spill calculation will report cost 0 anyway for free regs 2019-03-19 19:01:34 +00:00
GlobalISel [MIPS GlobalISel] Select sqrt 2019-06-06 10:00:41 +00:00
indirect-jump-hazard Revert r356996 "[DAG] Avoid smart constructor-based dangling nodes." 2019-03-27 19:54:41 +00:00
instverify
llvm-ir [mips] Use reg-exp in tests to tolerate register indexes changing. NFC 2019-05-29 14:59:07 +00:00
longbranch [Mips] Supplement long branch pseudo instructions 2018-11-05 14:37:41 +00:00
micromips-sizereduction
mips32r6
mips64r6
mirparser
msa [mips] Extend range of register indexes accepted by cfcmsa/ctcmsa 2019-06-01 13:55:18 +00:00
tailcall
2008-06-05-Carry.ll
2008-07-03-SRet.ll
2008-07-06-fadd64.ll
2008-07-07-Float2Int.ll Regenerate FP_TO_INT tests. 2018-10-27 15:00:38 +00:00
2008-07-07-FPExtend.ll
2008-07-07-IntDoubleConvertions.ll
2008-07-15-InternalConstant.ll
2008-07-15-SmallSection.ll
2008-07-16-SignExtInReg.ll
2008-07-22-Cstpool.ll
2008-07-23-fpcmp.ll
2008-07-29-icmp.ll
2008-07-31-fcopysign.ll
2008-08-01-AsmInline.ll
2008-08-03-fabs64.ll
2008-08-03-ReturnDouble.ll
2008-08-04-Bitconvert.ll
2008-08-06-Alloca.ll
2008-08-07-CC.ll
2008-08-07-FPRound.ll
2008-08-08-ctlz.ll
2008-10-13-LegalizerBug.ll
2008-11-10-xint_to_fp.ll
2009-11-16-CstPoolLoad.ll
2010-07-20-Switch.ll
2010-11-09-CountLeading.ll
2010-11-09-Mul.ll
2011-05-26-BranchKillsVreg.ll
2012-12-12-ExpandMemcpy.ll
2013-11-18-fp64-const0.ll [MIPS] Remove fcmp undef from reduced test 2019-03-30 20:16:16 +00:00
abicalls.ll
abiflags32.ll [mips] Emit .module softfloat directive 2019-02-26 14:45:17 +00:00
abiflags-xx.ll
addc.ll
addi.ll
address-selection.ll
addressing-mode.ll
adjust-callstack-sp.ll
align16.ll
alloca16.ll
alloca.ll
analyzebranch.ll
and1.ll
ase_warnings.ll
asm-large-immediate.ll
assertzext-trunc.ll
atomic64.ll [FastISel] Skip creating unnecessary vregs for arguments 2019-06-10 16:53:37 +00:00
atomic.ll [FastISel] Skip creating unnecessary vregs for arguments 2019-06-10 16:53:37 +00:00
atomicCmpSwapPW.ll [FastISel] Skip creating unnecessary vregs for arguments 2019-06-10 16:53:37 +00:00
atomicops.ll
beqzc1.ll
beqzc.ll
biggot.ll
blez_bgez.ll
blockaddr.ll
br-jmp.ll
branch-relaxation-with-hazard.ll
brconeq.ll
brconeqk.ll
brconeqz.ll
brconge.ll
brcongt.ll
brconle.ll
brconlt.ll
brconne.ll
brconnek.ll
brconnez.ll
brdelayslot.ll
brind-tailcall.ll
brind.ll
brsize3.ll
brsize3a.ll
brundef.ll
bswap.ll
buildpairextractelementf64.ll
buildpairf64-extractelementf64-implicit-sp.ll
cache-intrinsic.ll
call-optimization.ll
cfi_offset.ll
check-adde-redundant-moves.ll
check-noat.ll
ci2.ll
cins.ll
cmov.ll
cmplarge.ll
coalesce-partial-redundant-reguse-terminator.mir
const1.ll
const4a.ll
const6.ll
const6a.ll
const-mult.ll [DAGCombine][X86][AArch64][MIPS][LANAI] (C - x) - y -> C - (x + y) fold (PR41952) 2019-06-04 11:06:21 +00:00
constantfp0.ll
constraint-c-err.ll
constraint-c.ll
countleading.ll
cprestore.ll
ctlz-v.ll
ctlz.ll
cttz-v.ll
dagcombine_crash.ll
dagcombine-store-gep-chain-slow.ll
DbgValueOtherTargets.test
delay-slot-fill-forward.ll
delay-slot-kill.ll
dext.ll
dins.ll
disable-tail-merge.ll
div_rem.ll
div.ll
divrem.ll
divu_remu.ll
divu.ll
double2int.ll
dsp-patterns-cmp-vselect.ll
dsp-patterns.ll
dsp-r1.ll
dsp-r2.ll
dsp-spill-reload.ll [FastISel] Skip creating unnecessary vregs for arguments 2019-06-10 16:53:37 +00:00
dsp-vec-load-store.ll
dynamic-stack-realignment.ll [MIPS][microMIPS] Enable dynamic stack realignment 2019-03-19 17:01:24 +00:00
eh-dwarf-cfa.ll
eh-return32.ll
eh-return64.ll
eh.ll
ehframe-indirect.ll
elf_eflags.ll
emergency-spill-slot-near-fp.ll
emit-big-cst.ll
emutls_generic.ll
ex2.ll
extins.ll
f16abs.ll
f32-to-i64-single-float.ll
fabs.ll [mips] Support for +abs2008 attribute 2019-01-28 14:59:30 +00:00
fastcc_byval.ll
fastcc.ll [DAGCombine] Improve alias analysis for chain of independent stores. 2018-11-08 19:14:20 +00:00
fcmp.ll
fcopysign-f32-f64.ll
fcopysign.ll
fixdfsf.ll
fmadd1.ll
fneg.ll
fp16-promote.ll
fp16instrinsmc.ll
fp16mix.ll
fp16static.ll
fp64a.ll
fp-contract.ll
fp-indexed-ls.ll
fp-spill-reload.ll
fpbr.ll
fpneeded.ll
fpnotneeded.ll
fpxx.ll
frame-address-err.ll [mips] Replace assertion by error message while lowering RETURNADDR and FRAMEADDR 2019-03-06 22:40:28 +00:00
frame-address.ll
frameindex.ll
frem.ll
global-address.ll
global-pointer-reg.ll
gpopt-explict-section.ll
gpreg-lazy-binding.ll
gprestore.ll [mips] Emit .reloc R_{MICRO}MIPS_JALR along with j(al)r(c) $25 2019-01-17 21:50:37 +00:00
helloworld.ll
hf1_body.ll
hf16_1.ll
hf16call32_body.ll
hf16call32.ll
hfptrcall.ll
i32k.ll
i64arg.ll
imm.ll
indirectcall.ll
init-array.ll [IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format 2019-05-15 02:35:32 +00:00
inline-asm-i-constraint-i1.ll [TargetLowering] Extend bool args to inline-asm according to getBooleanType 2019-05-22 16:16:15 +00:00
inlineasm64.ll
inlineasm_constraint_m.ll
inlineasm_constraint_R.ll
inlineasm_constraint_ZC.ll
inlineasm_constraint.ll
inlineasm-assembler-directives.ll
inlineasm-cnstrnt-bad-I-1.ll
inlineasm-cnstrnt-bad-J.ll
inlineasm-cnstrnt-bad-K.ll
inlineasm-cnstrnt-bad-l1.ll
inlineasm-cnstrnt-bad-L.ll
inlineasm-cnstrnt-bad-N.ll
inlineasm-cnstrnt-bad-O.ll
inlineasm-cnstrnt-bad-P.ll
inlineasm-cnstrnt-reg64.ll
inlineasm-cnstrnt-reg.ll
inlineasm-constraint_ZC_2.ll
inlineasm-opcode-bad-y.ll
inlineasm-operand-code.ll
inlineasm-output-template.ll [AsmPrinter] refactor to support %c w/ GlobalAddress' 2019-04-26 18:45:04 +00:00
inlineasmmemop.ll
insn-zero-size-bb.ll
int-to-float-conversion.ll
internalfunc.ll Revert r361356: "[MIR] Add simple PRE pass to MachineCSE" 2019-05-27 06:00:00 +00:00
interrupt-attr-64-error.ll
interrupt-attr-args-error.ll
interrupt-attr-error.ll
interrupt-attr.ll
jtstat.ll
jump-table-mul.ll
jumptable_labels.ll
l3mc.ll
largeimm1.ll
largeimmprinting.ll
lazy-binding.ll
lb1.ll
lbu1.ll
lcb2.ll
lcb3c.ll
lcb4a.ll
lcb5.ll
lh1.ll
lhu1.ll
lit.local.cfg
llcarry.ll
llrint-conv.ll [CodeGen] Add lrint/llrint builtins 2019-05-28 20:47:44 +00:00
llround-conv.ll [CodeGen] Add lround/llround builtins 2019-05-16 13:15:27 +00:00
load-store-left-right.ll
long-call-attr.ll [mips] Emit .reloc R_{MICRO}MIPS_JALR along with j(al)r(c) $25 2019-01-17 21:50:37 +00:00
long-call-mcount.ll [mips] Emit .reloc R_{MICRO}MIPS_JALR along with j(al)r(c) $25 2019-01-17 21:50:37 +00:00
long-calls.ll
longbranch.ll
lrint-conv.ll [CodeGen] Add lrint/llrint builtins 2019-05-28 20:47:44 +00:00
lround-conv.ll [CodeGen] Add lround/llround builtins 2019-05-16 13:15:27 +00:00
lw16-base-reg.ll
machineverifier.ll
madd-msub.ll [DAGCombine][X86][AArch64][MIPS][LANAI] (C - x) - y -> C - (x + y) fold (PR41952) 2019-06-04 11:06:21 +00:00
mature-mc-support.ll
mbrsize4a.ll
memcpy.ll
micromips64-unsupported.ll
micromips-addiu.ll
micromips-addu16.ll
micromips-and16.ll
micromips-andi.ll
micromips-ase-function-attribute.ll [llvm-readobj] Change -long-option to --long-option in tests. NFC 2019-05-01 05:27:20 +00:00
micromips-atomic1.ll
micromips-atomic.ll
micromips-attr.ll
micromips-b-range.ll [mips][micromips] Fix how values in .gcc_except_table are calculated 2019-02-07 22:57:33 +00:00
micromips-compact-branches.ll
micromips-compact-jump.ll
micromips-delay-slot-jr.ll
micromips-delay-slot.ll
micromips-directives.ll
micromips-eva.mir
micromips-gcc-except-table.ll [mips][micromips] Fix how values in .gcc_except_table are calculated 2018-10-16 08:27:28 +00:00
micromips-gp-rc.ll
micromips-jal.ll
micromips-li.ll
micromips-load-effective-address.ll
micromips-lwc1-swc1.ll
micromips-mtc-mfc.ll [mips] Fix encoding of the mov.d command for microMIPS R6 2019-03-13 14:23:12 +00:00
micromips-not16.ll
micromips-or16.ll
micromips-pseudo-mtlohi-expand.ll [mips] Use reg-exp in tests to tolerate register indexes changing. NFC 2019-05-29 14:59:07 +00:00
micromips-rdhwr-directives.ll
micromips-shift.ll
micromips-short-delay-slot.mir
micromips-subu16.ll
micromips-sw-lw-16.ll
micromips-sw.ll [mips] Map SW instruction to its microMIPS R6 variant 2019-03-13 13:09:30 +00:00
micromips-target-external-symbol-reloc.ll [mips][micromips] Fix JmpLink to TargetExternalSymbol 2018-11-01 13:57:54 +00:00
micromips-xor16.ll
mips3-spill-slot.ll
mips16_32_1.ll
mips16_32_3.ll
mips16_32_4.ll
mips16_32_5.ll
mips16_32_6.ll
mips16_32_7.ll
mips16_32_8.ll
mips16_32_9.ll
mips16_32_10.ll
mips16_fpret.ll
mips16-hf-attr-2.ll
mips16-hf-attr.ll
mips16ex.ll
mips16fpe.ll
mips64-f128-call.ll
mips64-f128.ll
mips64-libcall.ll
mips64-sret.ll
mips64directive.ll
mips64ext.ll
mips64extins.ll
mips64fpimm0.ll
mips64fpldst.ll
mips64imm.ll
mips64instrs.ll
mips64intldst.ll
mips64lea.ll
mips64muldiv.ll
mips64shift.ll
mips64signextendsesf.ll
mips64sinttofpsf.ll
mips-shf-gprel.s [llvm-readobj] Change -long-option to --long-option in tests. NFC 2019-05-01 05:27:20 +00:00
mipslopat.ll
misha.ll
mno-ldc1-sdc1.ll
mul.ll
mulll.ll
mulull.ll
nacl-align.ll
nacl-branch-delay.ll
nacl-reserved-regs.ll
named-register-n32.ll
named-register-n64.ll
named-register-o32.ll
neg1.ll
nmadd.ll
no-odd-spreg-msa.ll [mips] Use AltOrders to prevent using odd FP-registers 2019-04-02 13:57:32 +00:00
no-odd-spreg.ll
nomips16.ll
not1.ll
null-streamer.ll
null.ll
o32_cc_byval.ll [mips] Emit .reloc R_{MICRO}MIPS_JALR along with j(al)r(c) $25 2019-01-17 21:50:37 +00:00
o32_cc_vararg.ll
o32_cc.ll
octeon_popcnt.ll
octeon.ll
optimize-fp-math.ll
optimize-pic-o0.ll
or1.ll
pbqp-reserved-physreg.ll
powif64_16.ll
pr33682.ll
pr33978.ll
pr34975.ll
pr35071.ll
pr36061.ll
prevent-hoisting.ll
private-addr.ll
private.ll
pseudo-jump-fill.ll [mips][micromips] fix filling delay slots for PseudoIndirectBranch_MM 2019-02-22 14:53:58 +00:00
ra-allocatable.ll
rdhwr-directives.ll
reloc-jalr.ll [mips] Emit .reloc R_{MICRO}MIPS_JALR along with j(al)r(c) $25 2019-01-17 21:50:37 +00:00
rem.ll
remat-immed-load.ll
remu.ll
return_address_err.ll [mips] Replace assertion by error message while lowering RETURNADDR and FRAMEADDR 2019-03-06 22:40:28 +00:00
return_address.ll
return-vector.ll
rotate.ll
s2rem.ll
sb1.ll
sel1c.ll
sel2c.ll
select.ll
selectcc.ll
selectiondag-optlevel.ll
seleq.ll
seleqk.ll
selgek.ll
selgt.ll
selle.ll
selltk.ll
selne.ll
selnek.ll
selpat.ll
selTBteqzCmpi.ll
selTBtnezCmpi.ll
selTBtnezSlti.ll
setcc-se.ll
seteq.ll
seteqz.ll
setge.ll
setgek.ll
setle.ll
setlt.ll
setltk.ll
setne.ll
setuge.ll
setugt.ll
setule.ll
setult.ll
setultk.ll
sh1.ll
shift-parts.ll
shrink-wrap-buildpairf64-extractelementf64.mir
shrink-wrapping.ll [mips] Emit .reloc R_{MICRO}MIPS_JALR along with j(al)r(c) $25 2019-01-17 21:50:37 +00:00
simplebr.ll
sint-fp-store_pattern.ll
sitofp-selectcc-opt.ll
sll1.ll
sll2.ll
sll-micromips-r6-encoding.mir [MIPS] Fix a incorrect test. (NFC) 2019-02-23 15:56:32 +00:00
slt.ll
small-section-reserve-gp.ll
spill-copy-acreg.ll
sr1.ll
sra1.ll
sra2.ll
srl1.ll
srl2.ll
stack-alignment.ll
stackcoloring.ll
stacksize.ll
start-asm-file.ll
stchar.ll
stldst.ll
sub1.ll
sub2.ll
swzero.ll
tail16.ll
tglobaladdr-wrapper.ll
thread-pointer.ll
tls16_2.ll
tls16.ll
tls-alias.ll
tls-models.ll
tls.ll
tnaked.ll
trap1.ll
trap.ll
uitofp.ll
ul1.ll
unaligned-memops-mapping.mir
unaligned-memops.ll
unalignedload.ll
unsized-global.ll
v2i16tof32.ll [DAGCombiner] If a TokenFactor would be merged into its user, consider the user later. 2019-03-13 17:07:09 +00:00
vector-load-store.ll
vector-setcc.ll
weak.ll
whitespace.ll
xor1.ll
xray-mips-attribute-instrumentation.ll
xray-section-group.ll [llvm-readobj] Change -long-option to --long-option in tests. NFC 2019-05-01 05:27:20 +00:00
zeroreg.ll