llvm-6502/test/CodeGen/PowerPC
Hal Finkel c9e5247ea7 [PowerPC] Ensure that the TOC reload directly follows bctrl on PPC64
On non-Darwin PPC64, the TOC reload needs to come directly after the bctrl
instruction (for indirect calls) because the 'bctrl/ld 2, 40(1)' instruction
sequence is interpreted by the unwinding code in libgcc. To make sure these
occur as a pair, as with other pairings interpreted by the linker, fuse the two
instructions into one instruction (for code generation only).

In the future, we might wish to do this by emitting CFI directives instead,
but this solution is simpler, and mirrors what GCC does. Additional discussion
on this point is contained in the PR.

Fixes PR22015.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@224788 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-23 22:29:40 +00:00
..
2004-11-29-ShrCrash.ll
2004-11-30-shift-crash.ll
2004-11-30-shr-var-crash.ll
2004-12-12-ZeroSizeCommon.ll
2005-01-14-SetSelectCrash.ll
2005-01-14-UndefLong.ll
2005-08-12-rlwimi-crash.ll
2005-09-02-LegalizeDuplicatesCalls.ll
2005-10-08-ArithmeticRotate.ll
2005-11-30-vastart-crash.ll
2006-01-11-darwin-fp-argument.ll
2006-01-20-ShiftPartsCrash.ll
2006-04-01-FloatDoubleExtend.ll
2006-04-05-splat-ish.ll
2006-04-19-vmaddfp-crash.ll
2006-05-12-rlwimi-crash.ll
2006-07-07-ComputeMaskedBits.ll
2006-07-19-stwbrx-crash.ll
2006-08-11-RetVector.ll
2006-08-15-SelectionCrash.ll
2006-09-28-shift_64.ll
2006-10-13-Miscompile.ll
2006-10-17-brcc-miscompile.ll
2006-10-17-ppc64-alloca.ll
2006-11-10-DAGCombineMiscompile.ll
2006-11-29-AltivecFPSplat.ll
2006-12-07-LargeAlloca.ll
2006-12-07-SelectCrash.ll
2007-01-04-ArgExtension.ll
2007-01-15-AsmDialect.ll
2007-01-29-lbrx-asm.ll
2007-01-31-InlineAsmAddrMode.ll
2007-02-16-AlignPacked.ll
2007-02-16-InlineAsmNConstraint.ll
2007-02-23-lr-saved-twice.ll
2007-03-24-cntlzd.ll
2007-03-30-SpillerCrash.ll
2007-04-24-InlineAsm-I-Modifier.ll
2007-04-30-InlineAsmEarlyClobber.ll
2007-05-03-InlineAsm-S-Constraint.ll
2007-05-14-InlineAsmSelectCrash.ll
2007-05-22-tailmerge-3.ll
2007-05-30-dagcombine-miscomp.ll
2007-06-28-BCCISelBug.ll
2007-08-04-CoalescerAssert.ll
2007-09-04-AltivecDST.ll
2007-09-07-LoadStoreIdxForms.ll
2007-09-08-unaligned.ll
2007-09-11-RegCoalescerAssert.ll
2007-09-12-LiveIntervalsAssert.ll
2007-10-16-InlineAsmFrameOffset.ll
2007-10-18-PtrArithmetic.ll
2007-10-21-LocalRegAllocAssert2.ll
2007-10-21-LocalRegAllocAssert.ll
2007-11-04-CoalescerCrash.ll
2007-11-16-landingpad-split.ll
2007-11-19-VectorSplitting.ll
2008-02-05-LiveIntervalsAssert.ll
2008-02-09-LocalRegAllocAssert.ll
2008-03-05-RegScavengerAssert.ll
2008-03-17-RegScavengerCrash.ll
2008-03-18-RegScavengerAssert.ll
2008-03-24-AddressRegImm.ll
2008-03-24-CoalescerBug.ll
2008-03-26-CoalescerBug.ll
2008-04-10-LiveIntervalCrash.ll
2008-04-16-CoalescerBug.ll
2008-04-23-CoalescerCrash.ll
2008-05-01-ppc_fp128.ll
2008-06-19-LegalizerCrash.ll
2008-06-21-F128LoadStore.ll
2008-06-23-LiveVariablesCrash.ll
2008-07-10-SplatMiscompile.ll
2008-07-15-Bswap.ll
2008-07-15-Fabs.ll
2008-07-15-SignExtendInreg.ll
2008-07-17-Fneg.ll
2008-07-24-PPC64-CCBug.ll
2008-09-12-CoalescerBug.ll
2008-10-17-AsmMatchingOperands.ll
2008-10-28-f128-i32.ll
2008-10-28-UnprocessedNode.ll
2008-10-31-PPCF128Libcalls.ll
2008-12-02-LegalizeTypeAssert.ll
2009-01-16-DeclareISelBug.ll
2009-03-17-LSRBug.ll
2009-05-28-LegalizeBRCC.ll
2009-07-16-InlineAsm-M-Operand.ll
2009-08-17-inline-asm-addr-mode-breakage.ll
2009-09-18-carrybit.ll
2009-11-15-ProcImpDefsBug.ll
2009-11-25-ImpDefBug.ll
2010-02-04-EmptyGlobal.ll
2010-02-12-saveCR.ll
2010-03-09-indirect-call.ll
2010-04-01-MachineCSEBug.ll
2010-05-03-retaddr1.ll
2010-10-11-Fast-Varargs.ll
2010-12-18-PPCStackRefs.ll
2011-12-05-NoSpillDupCR.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
2011-12-06-SpillAndRestoreCR.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
2011-12-08-DemandedBitsMiscompile.ll
2012-09-16-TOC-entry-check.ll
2012-10-11-dynalloc.ll
2012-10-12-bitcast.ll
2012-11-16-mischedcall.ll
2013-05-15-preinc-fold.ll
2013-07-01-PHIElimBug.ll
a2-fp-basic.ll
a2q-stackalign.ll
a2q.ll
aa-tbaa.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
add-fi.ll [PowerPC] Better lowering for add/or of a FrameIndex 2014-12-11 22:51:06 +00:00
addc.ll
addi-reassoc.ll
addrfuncstr.ll
alias.ll
align.ll
allocate-r0.ll
altivec-ord.ll
and_add.ll
and_sext.ll
and_sra.ll
and-branch.ll
and-elim.ll
and-imm.ll
anon_aggr.ll
ashr-neg1.ll
asm-constraints.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
asm-dialect.ll
asm-Zy.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
asym-regclass-copy.ll
atomic-1.ll
atomic-2.ll
Atomics-64.ll
atomics-fences.ll
atomics-indexed.ll
atomics.ll
available-externally.ll
bdzlr.ll
big-endian-actual-args.ll
big-endian-call-result.ll
big-endian-formal-args.ll
blockaddress.ll [PowerPC] Load BlockAddress values from the TOC in 64-bit SVR4 code 2014-10-31 10:33:14 +00:00
bperm.ll [PowerPC] Improve instruction selection bit-permuting operations (32-bit) 2014-12-16 05:51:41 +00:00
branch-opt.ll
bswap-load-store.ll
buildvec_canonicalize.ll
bv-pres-v8i1.ll
bv-widen-undef.ll
byval-agg-info.ll
byval-aliased.ll
calls.ll
can-lower-ret.ll
cc.ll [PowerPC] 'cc' should be an alias only to 'cr0' 2014-12-04 00:46:20 +00:00
cmp-cmp.ll
coalesce-ext.ll
compare-duplicate.ll
compare-simm.ll
complex-return.ll
constants.ll
copysignl.ll
cr1eq-no-extra-moves.ll
cr1eq.ll
cr_spilling.ll
cr-spills.ll
crash.ll
crbit-asm.ll
crbits.ll
crsave.ll
ctr-cleanup.ll
ctrloop-asm.ll
ctrloop-cpsgn.ll
ctrloop-fp64.ll
ctrloop-i64.ll
ctrloop-large-ec.ll
ctrloop-le.ll
ctrloop-lt.ll
ctrloop-ne.ll
ctrloop-reg.ll
ctrloop-s000.ll
ctrloop-sh.ll
ctrloop-sums.ll
ctrloop-udivti3.ll
ctrloops.ll
cttz.ll
darwin-labels.ll
dbg.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
DbgValueOtherTargets.test
dcbt-sched.ll
delete-node.ll
div-2.ll
dyn-alloca-aligned.ll
early-ret2.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
early-ret.ll
empty-functions.ll
emptystruct.ll
eqv-andc-orc-nor.ll
extsh.ll
fabs.ll
fast-isel-binary.ll
fast-isel-br-const.ll
fast-isel-call.ll
fast-isel-cmp-imm.ll
fast-isel-conversion-p5.ll
fast-isel-conversion.ll
fast-isel-crash.ll
fast-isel-ext.ll
fast-isel-fold.ll
fast-isel-GEP-coalesce.ll
fast-isel-indirectbr.ll
fast-isel-load-store.ll
fast-isel-redefinition.ll
fast-isel-ret.ll
fast-isel-shifter.ll
fastisel-gep-promote-before-add.ll
fcpsgn.ll
fdiv-combine.ll [PowerPC] Implement combineRepeatedFPDivisors 2014-11-24 23:45:21 +00:00
float-asmprint.ll
float-to-int.ll
floatPSA.ll
fma-mutate.ll [PowerPC] Avoid VSX FMA mutate when killed product reg = addend reg 2014-10-21 13:02:37 +00:00
fma.ll
fmaxnum.ll
fminnum.ll
fnabs.ll
fneg.ll
fold-li.ll
fold-zero.ll
fp_to_uint.ll
fp-branch.ll
fp-int-fp.ll
fpcopy.ll
frame-size.ll
frameaddr.ll
Frames-alloca.ll
Frames-large.ll
Frames-leaf.ll
Frames-small.ll
frounds.ll
fsel.ll
fsl-e500mc.ll
fsl-e5500.ll
fsqrt.ll
func-addr.ll
glob-comp-aa-crash.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
hello-reloc.s llvm-readobj: fix MachO relocatoin printing a bit. 2014-07-04 10:57:56 +00:00
hello.ll
hidden-vis-2.ll
hidden-vis.ll
i1-to-double.ll
i32-to-float.ll
i64_fp_round.ll
i64_fp.ll
i64-to-float.ll
i128-and-beyond.ll
ia-mem-r0.ll [PowerPC] Fix inline asm memory operands not to use r0 2014-12-03 23:40:13 +00:00
ia-neg-const.ll [PowerPC] Print all inline-asm consts as signed numbers 2014-12-03 09:37:50 +00:00
iabs.ll
ifcvt.ll
illegal-element-type.ll
in-asm-f64-reg.ll
indexed-load.ll
indirectbr.ll
inlineasm-copy.ll
inlineasm-i64-reg.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
int-fp-conv-0.ll
int-fp-conv-1.ll
inverted-bool-compares.ll
isel-rc-nox0.ll
isel.ll
ispositive.ll
itofp128.ll
jaggedstructs.ll
LargeAbsoluteAddr.ll
lbzux.ll
lha.ll
lit.local.cfg
load-constant-addr.ll
load-shift-combine.ll
long-compare.ll
longdbl-truncate.ll
lsa.ll
lsr-postinc-pos.ll
mask64.ll
mature-mc-support.ll
mcm-1.ll
mcm-2.ll
mcm-3.ll
mcm-4.ll
mcm-5.ll
mcm-6.ll
mcm-7.ll
mcm-8.ll
mcm-9.ll
mcm-10.ll
mcm-11.ll
mcm-12.ll
mcm-default.ll
mcm-obj-2.ll
mcm-obj.ll
mem_update.ll
mem-rr-addr-mode.ll
misched-inorder-latency.ll
misched.ll
mul-neg-power-2.ll
mul-with-overflow.ll
mulhs.ll
mulli64.ll
mult-alt-generic-powerpc64.ll
mult-alt-generic-powerpc.ll
named-reg-alloc-r0.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
named-reg-alloc-r1-64.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
named-reg-alloc-r1.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
named-reg-alloc-r2-64.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
named-reg-alloc-r2.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
named-reg-alloc-r13-64.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
named-reg-alloc-r13.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
neg.ll
negctr.ll
no-dead-strip.ll
novrsave.ll
optcmp.ll
or-addressing-mode.ll
popcnt.ll
post-ra-ec.ll Handle early-clobber registers in the aggressive anti-dep breaker 2014-12-09 01:00:59 +00:00
ppc32-cyclecounter.ll [PowerPC] Fix readcyclecounter to be custom expanded for all 32-bit targets 2014-12-03 00:19:17 +00:00
ppc32-i1-vaarg.ll
ppc32-lshrti3.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
ppc32-pic-large.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
ppc32-pic.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
ppc32-vacopy.ll
ppc64-32bit-addic.ll
ppc64-abi-extend.ll
ppc64-align-long-double.ll
ppc64-altivec-abi.ll
ppc64-byval-align.ll
ppc64-calls.ll [PowerPC] Ensure that the TOC reload directly follows bctrl on PPC64 2014-12-23 22:29:40 +00:00
ppc64-crash.ll Fix a few places where 32bit instructions/registerset were used on PPC64. 2011-06-17 15:21:10 +00:00
ppc64-cyclecounter.ll
ppc64-elf-abi.ll
ppc64-gep-opt.ll [PPC] Use SeparateConstOffsetFromGEP 2014-11-21 04:35:51 +00:00
ppc64-linux-func-size.ll
ppc64-prefetch.ll
ppc64-smallarg.ll
ppc64-toc.ll
ppc64-vaarg-int.ll [PowerPC] Better lowering for add/or of a FrameIndex 2014-12-11 22:51:06 +00:00
ppc64-zext.ll
ppc64le-aggregates.ll [PowerPC 1/4] Little-endian adjustments for VSX loads/stores 2014-12-09 16:35:51 +00:00
ppc64le-calls.ll
ppc64le-crsave.ll
ppc64le-localentry.ll
ppc64le-smallarg.ll
ppc440-fp-basic.ll
ppc440-msync.ll
ppc-prologue.ll
ppc-vaarg-agg.ll
ppcf128-1-opt.ll
ppcf128-1.ll
ppcf128-2.ll
ppcf128-3.ll
ppcf128-4.ll
ppcf128-endian.ll [PowerPC 1/4] Little-endian adjustments for VSX loads/stores 2014-12-09 16:35:51 +00:00
pr3711_widen_bit.ll
pr12757.ll
pr13641.ll
pr13891.ll
pr15031.ll
pr15359.ll
pr15630.ll
pr15632.ll
pr16556-2.ll
pr16556.ll
pr16573.ll
pr17168.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
pr17354.ll
pr18663-2.ll
pr18663.ll
pr20442.ll
private.ll
pwr3-6x.ll
pwr7-gt-nop.ll
quadint-return.ll
r31.ll
recipest.ll
reg-coalesce-simple.ll
reg-names.ll
reloc-align.ll
remap-crash.ll
remat-imm.ll
resolvefi-basereg.ll
resolvefi-disp.ll
retaddr2.ll [PowerPC] Don't mark the return-address slot as immutable 2014-12-23 09:45:06 +00:00
retaddr.ll
return-val-i128.ll
rlwimi2.ll [PowerPC] Improve instruction selection bit-permuting operations (32-bit) 2014-12-16 05:51:41 +00:00
rlwimi3.ll
rlwimi-and.ll [PowerPC] Improve instruction selection bit-permuting operations (32-bit) 2014-12-16 05:51:41 +00:00
rlwimi-commute.ll
rlwimi-dyn-and.ll
rlwimi-keep-rsh.ll
rlwimi.ll
rlwinm2.ll
rlwinm.ll
rm-zext.ll [PowerPC] Handle cmp op promotion for SELECT[_CC] nodes in PPCTL::DAGCombineExtBoolTrunc 2014-12-14 05:53:19 +00:00
rotl-2.ll
rotl-64.ll
rotl.ll
rounding-ops.ll
rs-undef-use.ll
s000-alias-misched.ll
sdag-ppcf128.ll
sdiv-pow2.ll [PowerPC] Don't attempt a 64-bit pow2 division on PPC32 2014-12-23 08:38:50 +00:00
sections.ll Add support for small-model PIC for PowerPC. 2014-11-12 15:16:30 +00:00
select_lt0.ll
select-cc.ll
set0-v8i16.ll
setcc_no_zext.ll
seteq-0.ll
shift128.ll
shl_elim.ll
shl_sext.ll
sign_ext_inreg1.ll
sj-ctr-loop.ll
sjlj.ll
small-arguments.ll
spill-nor0.ll
splat-bug.ll
split-index-tc.ll
srl-mask.ll
stack-protector.ll
stack-realign.ll [PowerPC] Fix unwind info with dynamic stack realignment 2014-12-01 09:42:32 +00:00
std-unal-fi.ll
stdux-constuse.ll
stfiwx-2.ll
stfiwx.ll
store-load-fwd.ll
store-update.ll
structsinmem.ll
structsinregs.ll
stubs.ll
stwu8.ll
stwu-gta.ll
stwux.ll
sub-bv-types.ll
subc.ll
subreg-postra-2.ll [PowerPC] Don't use a non-allocatable register to implement the 'cc' alias 2014-12-08 22:54:22 +00:00
subreg-postra.ll [PowerPC] Don't use a non-allocatable register to implement the 'cc' alias 2014-12-08 22:54:22 +00:00
subsumes-pred-regs.ll
svr4-redzone.ll
tailcall1-64.ll
tailcall1.ll
tailcallpic1.ll
tls-pic.ll Revert part of the PIC tests (TLS part) 2014-11-12 16:50:15 +00:00
tls-store2.ll [PowerPC] Replace foul hackery with real calls to __tls_get_addr 2014-11-11 20:44:09 +00:00
tls.ll
toc-load-sched-bug.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
trampoline.ll
unal4-std.ll
unal-altivec2.ll
unal-altivec-wint.ll
unal-altivec.ll
unaligned.ll
unsafe-math.ll
unwind-dw2-g.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
unwind-dw2.ll
vaddsplat.ll
varargs-struct-float.ll
varargs.ll
vcmp-fold.ll
vec_auto_constant.ll
vec_br_cmp.ll
vec_buildvector_loadstore.ll
vec_call.ll
vec_cmp.ll
vec_constants.ll
vec_conv.ll
vec_extload.ll
vec_fmuladd.ll
vec_fneg.ll
vec_insert.ll
vec_misaligned.ll [PowerPC 1/4] Little-endian adjustments for VSX loads/stores 2014-12-09 16:35:51 +00:00
vec_mul.ll
vec_perf_shuffle.ll
vec_rounding.ll
vec_select.ll
vec_shift.ll
vec_shuffle_le.ll [PowerPC 1/4] Little-endian adjustments for VSX loads/stores 2014-12-09 16:35:51 +00:00
vec_shuffle.ll
vec_splat_constant.ll
vec_splat.ll
vec_sqrt.ll
vec_urem_const.ll
vec_vrsave.ll
vec_zero.ll
vec-abi-align.ll
vector-identity-shuffle.ll
vector.ll
vperm-instcombine.ll
vperm-lowering.ll
vrsave-spill.ll
vrspill.ll
vsx_insert_extract_le.ll [PowerPC 4/4] Enable little-endian support for VSX. 2014-12-09 16:59:57 +00:00
vsx_shuffle_le.ll [PowerPC 4/4] Enable little-endian support for VSX. 2014-12-09 16:59:57 +00:00
vsx-args.ll [PowerPC]Update Power VSX test cases to also test fast-isel 2014-12-05 20:32:05 +00:00
vsx-div.ll [PowerPC] Add VSX builtins for vec_div 2014-11-14 12:10:40 +00:00
vsx-fma-m.ll [PowerPC]Update Power VSX test cases to also test fast-isel 2014-12-05 20:32:05 +00:00
vsx-ldst-builtin-le.ll [PowerPC 4/4] Enable little-endian support for VSX. 2014-12-09 16:59:57 +00:00
vsx-ldst.ll [PowerPC 4/4] Enable little-endian support for VSX. 2014-12-09 16:59:57 +00:00
vsx-minmax.ll [PowerPC] Initial VSX intrinsic support, with min/max for vector double 2014-10-31 19:19:07 +00:00
vsx-p8.ll [PowerPC]Update Power VSX test cases to also test fast-isel 2014-12-05 20:32:05 +00:00
vsx-self-copy.ll [PowerPC]Update Power VSX test cases to also test fast-isel 2014-12-05 20:32:05 +00:00
vsx-spill.ll [PowerPC]Update Power VSX test cases to also test fast-isel 2014-12-05 20:32:05 +00:00
vsx.ll [PowerPC]Update Power VSX test cases to also test fast-isel 2014-12-05 20:32:05 +00:00
vtable-reloc.ll
weak_def_can_be_hidden.ll
zero-not-run.ll