llvm-6502/test/CodeGen/PowerPC
Bill Schmidt 5ff776bfde This patch addresses bug 15031.
The common code in the post-RA scheduler to break anti-dependencies on the
critical path contained a flaw.  In the reported case, an anti-dependency
between the overlapping registers %X4 and %R4 exists:

	%X29<def> = OR8 %X4, %X4
	%R4<def>, %X3<def,dead,tied3> = LBZU 1, %X3<kill,tied1>

The unpatched code breaks the dependency by replacing %R4 and its uses
with %R3, the first register on the available list.  However, %R3 and
%X3 overlap, so this creates two overlapping definitions on the same
instruction.

The fix is straightforward, preventing selection of a register that
overlaps any other defined register on the same instruction.

The test case is reduced from the bug report, and verifies that we no
longer produce "lbzu 3, 1(3)" when breaking this anti-dependency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173706 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-28 18:36:58 +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
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
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
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
2011-12-06-SpillAndRestoreCR.ll
2011-12-08-DemandedBitsMiscompile.ll
2012-09-16-TOC-entry-check.ll This patch is in preparation for adding medium code model support to the 2012-11-14 23:23:27 +00:00
2012-10-11-dynalloc.ll Do not consider a machine instruction that uses and defines the same 2012-11-13 18:40:58 +00:00
2012-10-12-bitcast.ll llvm/test/CodeGen/PowerPC/2012-10-12-bitcast.ll: Try to fix failure on non-ppc hosts, to add -mattr=+altivec. 2012-10-12 16:01:08 +00:00
2012-11-16-mischedcall.ll Use a full triple for a PPC test case for asm syntax. 2012-11-18 06:21:03 +00:00
a2-fp-basic.ll
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
asm-Zy.ll Add support for the PowerPC-specific inline asm Z constraint and y modifier. 2012-11-05 18:18:42 +00:00
atomic-1.ll
atomic-2.ll Expand PPC64 atomic load and store 2012-12-25 17:22:53 +00:00
Atomics-32.ll
Atomics-64.ll
available-externally.ll PPC: MCize most of the darwin PIC emission. 2012-11-24 13:18:25 +00:00
big-endian-actual-args.ll
big-endian-call-result.ll
big-endian-formal-args.ll Allow remat of LI on PPC. 2012-08-28 02:10:33 +00:00
branch-opt.ll
bswap-load-store.ll
buildvec_canonicalize.ll test/CodeGen/PowerPC: Add explicit -march=ppc32. 2012-11-30 13:28:31 +00:00
calls.ll
can-lower-ret.ll
cmp-cmp.ll
coalesce-ext.ll On PowerPC64, integer return values (as well as arguments) are supposed 2012-11-05 19:39:45 +00:00
compare-duplicate.ll
compare-simm.ll
complex-return.ll This patch fixes the PPC calling convention to handle returns of 2013-01-17 17:45:19 +00:00
constants.ll
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
ctrloop-s000.ll
ctrloop-sums.ll
ctrloops.ll
cttz.ll
darwin-labels.ll
dbg.ll
dcbt-sched.ll Loosen scheduling restrictions on the PPC dcbt intrinsic 2012-12-25 18:51:18 +00:00
delete-node.ll
div-2.ll
empty-functions.ll
emptystruct.ll This patch addresses an ABI compatibility issue with empty aggregate 2012-10-31 01:15:05 +00:00
eqv-andc-orc-nor.ll
extsh.ll
fabs.ll
float-asmprint.ll Simplify writing floating types to assembly. 2013-01-11 10:36:13 +00:00
floatPSA.ll This patch addresses PR13947. 2012-10-11 15:38:20 +00:00
fma.ll
fnabs.ll
fneg.ll
fold-li.ll
fp_to_uint.ll
fp-branch.ll
fp-int-fp.ll
fpcopy.ll
Frames-alloca.ll
Frames-large.ll
Frames-leaf.ll
Frames-small.ll
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
hello.ll
hidden-vis-2.ll
hidden-vis.ll
i64_fp_round.ll Rewrite test to not use a FileCheck variable and redefine it on the same line. 2012-11-26 14:09:46 +00:00
i64_fp.ll
i128-and-beyond.ll
iabs.ll
illegal-element-type.ll
in-asm-f64-reg.ll Simplify the testcase a bit. 2012-12-20 17:47:27 +00:00
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 In various places throughout the code generator, there were special 2012-10-29 18:35:49 +00:00
inverted-bool-compares.ll
isel.ll
ispositive.ll
itofp128.ll
jaggedstructs.ll This patch addresses a PPC64 ELF issue with passing parameters consisting of 2012-10-25 13:38:09 +00:00
LargeAbsoluteAddr.ll
lbzux.ll
lha.ll
lit.local.cfg
load-constant-addr.ll
load-shift-combine.ll This patch addresses an incorrect transformation in the DAG combiner. 2013-01-14 22:04:38 +00:00
long-compare.ll
longdbl-truncate.ll
lsr-postinc-pos.ll
mask64.ll
mcm-1.ll This patch implements medium code model support for 64-bit PowerPC. 2012-11-27 17:35:46 +00:00
mcm-2.ll This patch implements medium code model support for 64-bit PowerPC. 2012-11-27 17:35:46 +00:00
mcm-3.ll This patch implements medium code model support for 64-bit PowerPC. 2012-11-27 17:35:46 +00:00
mcm-4.ll This patch implements medium code model support for 64-bit PowerPC. 2012-11-27 17:35:46 +00:00
mcm-5.ll This patch implements medium code model support for 64-bit PowerPC. 2012-11-27 17:35:46 +00:00
mcm-6.ll This patch implements medium code model support for 64-bit PowerPC. 2012-11-27 17:35:46 +00:00
mcm-7.ll This patch implements medium code model support for 64-bit PowerPC. 2012-11-27 17:35:46 +00:00
mcm-8.ll This patch addresses bug 14678 by fixing two problems in medium code model 2013-01-07 19:29:18 +00:00
mcm-9.ll This patch addresses bug 14678 by fixing two problems in medium code model 2013-01-07 19:29:18 +00:00
mcm-default.ll This patch makes medium code model the default for 64-bit PowerPC ELF. 2012-11-27 23:36:26 +00:00
mcm-obj.ll This patch implements medium code model support for 64-bit PowerPC. 2012-11-27 17:35:46 +00:00
mem_update.ll This patch is in preparation for adding medium code model support to the 2012-11-14 23:23:27 +00:00
mem-rr-addr-mode.ll
misched-inorder-latency.ll MIsched: add an ILP window property to machine model. 2013-01-09 03:36:49 +00:00
misched.ll Fix assertions in updateRegMaskSlots(). 2012-11-09 19:18:49 +00:00
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
novrsave.ll The PowerPC VRSAVE register has been somewhat of an odd beast since 2012-10-10 20:54:15 +00:00
or-addressing-mode.ll
ppc64-32bit-addic.ll
ppc64-abi-extend.ll On PowerPC64, integer return values (as well as arguments) are supposed 2012-11-05 19:39:45 +00:00
ppc64-align-long-double.ll This patch adds alignment information for long double to the 64-bit PowerPC 2012-10-29 14:59:36 +00:00
ppc64-calls.ll Add test for r164155 and remove two tests superseded by ppc64-calls.ll. 2012-09-18 19:51:44 +00:00
ppc64-crash.ll
ppc64-cyclecounter.ll
ppc64-linux-func-size.ll On PPC64 emit the environment pointer. Patch by Adhemerval Zanella. 2012-09-18 16:55:29 +00:00
ppc64-prefetch.ll
ppc64-toc.ll This patch is in preparation for adding medium code model support to the 2012-11-14 23:23:27 +00:00
ppc64-vaarg-int.ll
ppc64-zext.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
pr3711_widen_bit.ll
pr12757.ll Allow i32/i64 for 'f' constraint on PowerPC. 2012-10-29 17:49:34 +00:00
pr13641.ll Reserve space for the mandatory traceback fields on PPC64. 2012-08-29 20:22:24 +00:00
pr13891.ll Specify MachinePointerInfo as refering to the argument value and offset of the 2012-09-24 20:47:19 +00:00
pr15031.ll This patch addresses bug 15031. 2013-01-28 18:36:58 +00:00
private.ll
quadint-return.ll Restore reverted test case, this time with REQUIRES: asserts 2013-01-17 19:46:51 +00:00
reg-coalesce-simple.ll
remat-imm.ll Allow remat of LI on PPC. 2012-08-28 02:10:33 +00:00
retaddr.ll
return-val-i128.ll
rlwimi2.ll
rlwimi3.ll
rlwimi-commute.ll
rlwimi-keep-rsh.ll
rlwimi.ll
rlwinm2.ll
rlwinm.ll
rotl-2.ll
rotl-64.ll
rotl.ll
s000-alias-misched.ll Use GetUnderlyingObjects in misched 2012-12-10 18:49:16 +00:00
sdag-ppcf128.ll Support ppcf128 in SelectionDAG::getConstantFP 2012-12-30 19:03:32 +00:00
sections.ll
select_lt0.ll
select-cc.ll
setcc_no_zext.ll
seteq-0.ll
shift128.ll
shl_elim.ll
shl_sext.ll
sign_ext_inreg1.ll
small-arguments.ll
stack-protector.ll
stfiwx-2.ll
stfiwx.ll
store-load-fwd.ll
structsinmem.ll This patch addresses PR13949. 2012-10-16 13:30:53 +00:00
structsinregs.ll This patch addresses a PPC64 ELF issue with passing parameters consisting of 2012-10-25 13:38:09 +00:00
stubs.ll PPC: MCize most of the darwin PIC emission. 2012-11-24 13:18:25 +00:00
stwu8.ll
stwu-gta.ll
stwux.ll
subc.ll
tailcall1-64.ll
tailcall1.ll
tailcallpic1.ll
tls-gd-obj.ll This patch implements the general dynamic TLS model for 64-bit PowerPC. 2012-12-11 20:30:11 +00:00
tls-gd.ll This patch implements the general dynamic TLS model for 64-bit PowerPC. 2012-12-11 20:30:11 +00:00
tls-ie-obj.ll This patch improves the 64-bit PowerPC InitialExec TLS support by providing 2012-12-14 17:02:38 +00:00
tls-ie.ll This patch improves the 64-bit PowerPC InitialExec TLS support by providing 2012-12-14 17:02:38 +00:00
tls-ld-obj.ll This patch removes some nondeterminism from direct object file output 2012-12-14 20:28:38 +00:00
tls-ld.ll This patch implements local-dynamic TLS model support for the 64-bit 2012-12-12 19:29:35 +00:00
tls.ll
trampoline.ll
unsafe-math.ll
varargs-struct-float.ll This patch solves a problem with passing varargs parameters under the PPC64 2012-10-29 21:18:16 +00:00
varargs.ll
vcmp-fold.ll
vec_auto_constant.ll
vec_br_cmp.ll
vec_buildvector_loadstore.ll
vec_call.ll
vec_cmp.ll PowerPC: More support for Altivec compare operations 2012-10-30 13:50:19 +00:00
vec_constants.ll
vec_conv.ll Add floating-point to and from integer conversion 2012-10-08 17:27:24 +00:00
vec_extload.ll When lowering an inreg sext first shift left, then right arithmetically. 2013-01-12 19:06:44 +00:00
vec_fneg.ll
vec_insert.ll
vec_misaligned.ll
vec_mul.ll test/CodeGen/PowerPC/vec_mul.ll: Add a triple. Thanks, Hal. 2012-11-30 19:15:10 +00:00
vec_perf_shuffle.ll
vec_rounding.ll PowerPC: Lowering floor intrinsic for Altivec 2012-11-15 20:56:03 +00:00
vec_select.ll PowerPC: Expand VSELECT nodes. 2012-12-19 15:49:14 +00:00
vec_shift.ll
vec_shuffle.ll
vec_splat_constant.ll
vec_splat.ll
vec_sqrt.ll PowerPC: Expand FSRQT for vector types 2012-10-30 18:29:42 +00:00
vec_vrsave.ll
vec_zero.ll
vector-identity-shuffle.ll
vector.ll
vrspill.ll Add -mattr=+altivec and remove XFAIL. 2012-10-10 22:25:11 +00:00