llvm-6502/test/CodeGen/PowerPC
Roman Divacky 9d760ae5c6 This patch corrects logic in PPCFrameLowering for save and restore of
nonvolatile condition register fields across calls under the SVR4 ABIs.                                            
                                                                                                                   
 * With the 64-bit ABI, the save location is at a fixed offset of 8 from                                           
the stack pointer.  The frame pointer cannot be used to access this                                                
portion of the stack frame since the distance from the frame pointer may                                           
change with alloca calls.                                                                                          
                                                                                                                   
 * With the 32-bit ABI, the save location is just below the general
register save area, and is accessed via the frame pointer like the rest
of the save areas.  This is an optional slot, so it must only be created                                           
if any of CR2, CR3, and CR4 were modified.                                                                      
                                                                                                                   
 * For both ABIs, save/restore logic is generated only if one of the     
nonvolatile CR fields were modified.                                   

I also took this opportunity to clean up an extra FIXME in
PPCFrameLowering.h.  Save area offsets for 32-bit GPRs are meaningless
for the 64-bit ABI, so I removed them for correctness and efficiency.


Fixes PR13708 and partially also PR13623. It lets us enable exception handling
on PPC64.

Patch by William J. Schmidt!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163713 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-12 14:47:47 +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 Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
2005-10-08-ArithmeticRotate.ll
2005-11-30-vastart-crash.ll
2006-01-11-darwin-fp-argument.ll Fix the remaining TCL-style quotes found in the testsuite. This is 2012-07-02 19:09:46 +00:00
2006-01-20-ShiftPartsCrash.ll
2006-04-01-FloatDoubleExtend.ll
2006-04-05-splat-ish.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
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 Manually upgrade the test suite to specify the flag to cttz and ctlz. 2011-12-12 11:59:10 +00:00
2007-03-30-SpillerCrash.ll
2007-04-24-InlineAsm-I-Modifier.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
2007-04-30-InlineAsmEarlyClobber.ll Don't run RAFast in the optimizing regalloc pipeline. 2012-06-08 23:15:12 +00:00
2007-05-03-InlineAsm-S-Constraint.ll
2007-05-14-InlineAsmSelectCrash.ll
2007-05-22-tailmerge-3.ll Enable tail merging on PPC. 2012-06-09 03:14:50 +00:00
2007-05-30-dagcombine-miscomp.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
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 Don't run RAFast in the optimizing regalloc pipeline. 2012-06-08 23:15:12 +00:00
2007-10-21-LocalRegAllocAssert.ll Don't run RAFast in the optimizing regalloc pipeline. 2012-06-08 23:15:12 +00:00
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 Don't run RAFast in the optimizing regalloc pipeline. 2012-06-08 23:15:12 +00:00
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
2008-12-12-EH.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 Enable ILP scheduling for all nodes by default on PPC. 2012-06-10 19:32:29 +00:00
2009-08-23-linkerprivate.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 Cleanup stack/frame register define/kill states. This fixes two bugs: 2011-12-30 00:34:00 +00:00
2010-03-09-indirect-call.ll Allow overlaps between virtreg and physreg live ranges. 2012-09-06 18:15:23 +00:00
2010-04-01-MachineCSEBug.ll
2010-04-07-DbgValueOtherTargets.ll
2010-05-03-retaddr1.ll
2010-10-11-Fast-Varargs.ll
2010-12-18-PPCStackRefs.ll
2011-12-05-NoSpillDupCR.ll Enable ILP scheduling for all nodes by default on PPC. 2012-06-10 19:32:29 +00:00
2011-12-06-SpillAndRestoreCR.ll
2011-12-08-DemandedBitsMiscompile.ll
a2-fp-basic.ll Rename fp-op fusion option (yet again) for compatibility with GCC option. 2012-06-22 22:31:00 +00:00
addc.ll
addi-reassoc.ll
align.ll
and_add.ll
and_sext.ll
and_sra.ll
and-branch.ll
and-elim.ll
and-imm.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
atomic-1.ll
atomic-2.ll
Atomics-32.ll
Atomics-64.ll
available-externally.ll
big-endian-actual-args.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
big-endian-call-result.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
big-endian-formal-args.ll Allow remat of LI on PPC. 2012-08-28 02:10:33 +00:00
bl8_elf_nop.ll Add a test case to make sure that the nop really does follow the bl on ppc64 elf 2011-12-15 17:59:23 +00:00
branch-opt.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
bswap-load-store.ll
buildvec_canonicalize.ll
calls.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
can-lower-ret.ll
cmp-cmp.ll
coalesce-ext.ll Add a triple. 2012-06-19 21:46:25 +00:00
compare-duplicate.ll
compare-simm.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
constants.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
cr1eq-no-extra-moves.ll Eliminate redundant CR moves on PPC32. 2012-08-28 02:10:27 +00:00
cr1eq.ll
cr_spilling.ll
crsave.ll This patch corrects logic in PPCFrameLowering for save and restore of 2012-09-12 14:47:47 +00:00
ctrloop-reg.ll Enable PPC CTR loop formation by default. 2012-06-08 19:19:53 +00:00
ctrloop-s000.ll Cleanup trip-count finding for PPC CTR loops (and some bug fixes). 2012-06-16 20:34:07 +00:00
ctrloop-sums.ll Cleanup trip-count finding for PPC CTR loops (and some bug fixes). 2012-06-16 20:34:07 +00:00
ctrloops.ll Improve ext/trunc patterns on PPC64. 2012-06-09 22:10:19 +00:00
cttz.ll Manually upgrade the test suite to specify the flag to cttz and ctlz. 2011-12-12 11:59:10 +00:00
darwin-labels.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
dbg.ll AggressiveAntiDepBreaker needs to skip debug values because a debug value does not have a corresponding SUnit 2012-01-16 22:53:41 +00:00
delete-node.ll
div-2.ll
empty-functions.ll
eqv-andc-orc-nor.ll
extsh.ll
fabs.ll Refactor and check "onlyReadsMemory" before optimizing builtins. 2012-08-03 23:29:17 +00:00
fma.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
fnabs.ll Refactor and check "onlyReadsMemory" before optimizing builtins. 2012-08-03 23:29:17 +00:00
fneg.ll
fold-li.ll
fp_to_uint.ll
fp-branch.ll
fp-int-fp.ll
fpcopy.ll
Frames-alloca.ll
Frames-large.ll Cleanup stack/frame register define/kill states. This fixes two bugs: 2011-12-30 00:34:00 +00:00
Frames-leaf.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
Frames-small.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
frounds.ll
fsl-e500mc.ll Add PPC Freescale e500mc and e5500 subtargets. 2012-08-28 16:12:39 +00:00
fsl-e5500.ll Add PPC Freescale e500mc and e5500 subtargets. 2012-08-28 16:12:39 +00:00
fsqrt.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
hello.ll
hidden-vis-2.ll
hidden-vis.ll
i64_fp.ll
i128-and-beyond.ll
iabs.ll Convert the uses of '|&' to use '2>&1 |' instead, which works on old 2012-07-02 18:37:59 +00:00
illegal-element-type.ll
indirectbr.ll
inlineasm-copy.ll Move tie checks into MachineVerifier::visitMachineOperand. 2012-09-04 18:38:28 +00:00
int-fp-conv-0.ll
int-fp-conv-1.ll
inverted-bool-compares.ll
isel.ll Add support for the PPC isel instruction. 2012-06-22 23:10:08 +00:00
ispositive.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
itofp128.ll
LargeAbsoluteAddr.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
lbzux.ll During the CodeGenPrepare we often lower intrinsics (such as objsize) 2012-08-14 05:19:07 +00:00
lha.ll
lit.local.cfg Continue cleanup of LIT, getting rid of the remaining artifacts from dejagnu 2012-03-25 09:02:19 +00:00
load-constant-addr.ll
long-compare.ll Fix the remaining TCL-style quotes found in the testsuite. This is 2012-07-02 19:09:46 +00:00
longdbl-truncate.ll
lsr-postinc-pos.ll Convert the uses of '|&' to use '2>&1 |' instead, which works on old 2012-07-02 18:37:59 +00:00
mask64.ll
mem_update.ll Enable generating PPC pre-increment (r+imm) instructions by default. 2012-06-04 02:21:00 +00:00
mem-rr-addr-mode.ll
mul-neg-power-2.ll
mul-with-overflow.ll
mulhs.ll
mult-alt-generic-powerpc64.ll
mult-alt-generic-powerpc.ll
neg.ll
no-dead-strip.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
or-addressing-mode.ll
ppc64-32bit-addic.ll
ppc64-crash.ll
ppc64-cyclecounter.ll MFTB on PPC64 should really be encoded using MFSPR. 2012-08-06 21:21:44 +00:00
ppc64-ind-call.ll X11/X2 loads around indirect calls on ppc64 should not be deleted. 2012-02-24 17:54:01 +00:00
ppc64-linux-func-size.ll Test the section specification. 2012-02-27 20:42:19 +00:00
ppc64-prefetch.ll Enable prefetch generation on PPC64. 2012-04-01 20:08:17 +00:00
ppc64-toc.ll Lower constant pools and jump tables via TOC on PPC64/SVR4. 2012-08-24 16:26:02 +00:00
ppc64-vaarg-int.ll Fix small-integer VAARG on SVR4 ABI PPC64. 2012-03-24 03:53:55 +00:00
ppc64-zext.ll Optimize zext on PPC64. 2012-08-28 02:10:15 +00:00
ppc440-fp-basic.ll Rename fp-op fusion option (yet again) for compatibility with GCC option. 2012-06-22 22:31:00 +00:00
ppc440-msync.ll
ppc-prologue.ll
ppc-vaarg-agg.ll Remove dead SD nodes after the combining pass. Fixes PR12201. 2012-04-16 03:33:22 +00:00
ppcf128-1-opt.ll
ppcf128-1.ll
ppcf128-2.ll
ppcf128-3.ll
ppcf128-4.ll
pr3711_widen_bit.ll
pr13641.ll Reserve space for the mandatory traceback fields on PPC64. 2012-08-29 20:22:24 +00:00
private.ll
reg-coalesce-simple.ll
remat-imm.ll Allow remat of LI on PPC. 2012-08-28 02:10:33 +00:00
retaddr.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
return-val-i128.ll
rlwimi2.ll
rlwimi3.ll Convert the uses of '|&' to use '2>&1 |' instead, which works on old 2012-07-02 18:37:59 +00:00
rlwimi-commute.ll Fix the remaining TCL-style quotes found in the testsuite. This is 2012-07-02 19:09:46 +00:00
rlwimi-keep-rsh.ll
rlwimi.ll
rlwinm2.ll
rlwinm.ll
rotl-2.ll
rotl-64.ll
rotl.ll
sections.ll
select_lt0.ll
select-cc.ll
setcc_no_zext.ll
seteq-0.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
shift128.ll
shl_elim.ll
shl_sext.ll
sign_ext_inreg1.ll
small-arguments.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
stack-protector.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
stfiwx-2.ll
stfiwx.ll
store-load-fwd.ll
stubs.ll
stwu8.ll Enable generating PPC pre-increment (r+imm) instructions by default. 2012-06-04 02:21:00 +00:00
stwu-gta.ll Treat TargetGlobalAddress as a constant for the purpose of matching pre-inc stores on PPC. 2012-06-21 20:10:48 +00:00
stwux.ll Add support for generating reg+reg preinc stores on PPC. 2012-06-19 02:34:32 +00:00
subc.ll
tailcall1-64.ll
tailcall1.ll
tailcallpic1.ll
tls.ll Implement local-exec TLS on PowerPC. 2012-06-04 17:36:38 +00:00
trampoline.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
unsafe-math.ll
varargs.ll
vcmp-fold.ll
vec_auto_constant.ll
vec_br_cmp.ll
vec_buildvector_loadstore.ll Enable ILP scheduling for all nodes by default on PPC. 2012-06-10 19:32:29 +00:00
vec_call.ll
vec_constants.ll
vec_fneg.ll
vec_insert.ll
vec_misaligned.ll
vec_mul.ll
vec_perf_shuffle.ll
vec_shift.ll
vec_shuffle.ll
vec_splat_constant.ll
vec_splat.ll
vec_vrsave.ll
vec_zero.ll
vector-identity-shuffle.ll
vector.ll