llvm-6502/test/CodeGen/PowerPC
Hal Finkel f0c1388dd1 Improve instruction scheduling for the PPC POWER7
Aside from a few minor latency corrections, the major change here is a new
hazard recognizer which focuses on better dispatch-group formation on the
POWER7. As with the PPC970's hazard recognizer, the most important thing it
does is avoid load-after-store hazards within the same dispatch group. It uses
the POWER7's special dispatch-group-terminating nop instruction (instead of
inserting multiple regular nop instructions). This new hazard recognizer makes
use of the scheduling dependency graph itself, built using AA information, to
robustly detect the possibility of load-after-store hazards.

significant test-suite performance changes (the error bars are 99.5% confidence
intervals based on 5 test-suite runs both with and without the change --
speedups are negative):

speedups:

MultiSource/Benchmarks/FreeBench/pcompress2/pcompress2
	-0.55171% +/- 0.333168%

MultiSource/Benchmarks/TSVC/CrossingThresholds-dbl/CrossingThresholds-dbl
	-17.5576% +/- 14.598%

MultiSource/Benchmarks/TSVC/Reductions-dbl/Reductions-dbl
	-29.5708% +/- 7.09058%

MultiSource/Benchmarks/TSVC/Reductions-flt/Reductions-flt
	-34.9471% +/- 11.4391%

SingleSource/Benchmarks/BenchmarkGame/puzzle
	-25.1347% +/- 11.0104%

SingleSource/Benchmarks/Misc/flops-8
	-17.7297% +/- 9.79061%

SingleSource/Benchmarks/Shootout-C++/ary3
	-35.5018% +/- 23.9458%

SingleSource/Regression/C/uint64_to_float
	-56.3165% +/- 25.4234%

SingleSource/UnitTests/Vectorizer/gcc-loops
	-18.5309% +/- 6.8496%

regressions:

MultiSource/Benchmarks/ASCI_Purple/SMG2000/smg2000
	18.351% +/- 12.156%

SingleSource/Benchmarks/Shootout-C++/methcall
	27.3086% +/- 14.4733%

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197099 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-12 00:19:11 +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 Update the cpu specified on some PPC regression tests 2013-11-30 19:39:27 +00:00
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 PPC: Enable aggressive anti-dependency breaking 2013-09-12 05:24:49 +00:00
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
2011-12-06-SpillAndRestoreCR.ll
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
addc.ll
addi-reassoc.ll
addrfuncstr.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 Update the cpu specified on some PPC regression tests 2013-11-30 19:39:27 +00:00
ashr-neg1.ll
asm-dialect.ll
asm-Zy.ll
asym-regclass-copy.ll
atomic-1.ll
atomic-2.ll
Atomics-32.ll
Atomics-64.ll
available-externally.ll
bdzlr.ll
big-endian-actual-args.ll
big-endian-call-result.ll
big-endian-formal-args.ll
branch-opt.ll
bswap-load-store.ll
buildvec_canonicalize.ll
bv-pres-v8i1.ll
bv-widen-undef.ll
calls.ll
can-lower-ret.ll
cmp-cmp.ll
coalesce-ext.ll Update the cpu specified on some PPC regression tests 2013-11-30 19:39:27 +00:00
compare-duplicate.ll
compare-simm.ll
complex-return.ll Update the cpu specified on some PPC regression tests 2013-11-30 19:39:27 +00:00
constants.ll
copysignl.ll
cr1eq-no-extra-moves.ll
cr1eq.ll
cr_spilling.ll
cr-spills.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 Update PPC loop tests after SCEV non-unit-stride checkin r193015. 2013-10-19 00:14:04 +00:00
ctrloop-lt.ll Update PPC loop tests after SCEV non-unit-stride checkin r193015. 2013-10-19 00:14:04 +00:00
ctrloop-ne.ll
ctrloop-reg.ll
ctrloop-s000.ll
ctrloop-sums.ll
ctrloops.ll
cttz.ll
darwin-labels.ll
dbg.ll Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
DbgValueOtherTargets.test
dcbt-sched.ll
delete-node.ll
div-2.ll
dyn-alloca-aligned.ll TBAA: remove !tbaa from testing cases when they are not needed. 2013-09-30 18:17:35 +00:00
early-ret2.ll
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 [PowerPC] Call support for fast-isel. 2013-08-30 22:18:55 +00:00
fast-isel-cmp-imm.ll [PowerPC] Handle selection of compare instructions in fast-isel. 2013-08-30 03:16:48 +00:00
fast-isel-conversion.ll [PowerPC] Add handling for conversions to fast-isel. 2013-08-30 15:18:11 +00:00
fast-isel-crash.ll [PowerPC] Miscellaneous fast-isel test cases. 2013-08-30 02:43:08 +00:00
fast-isel-ext.ll
fast-isel-fold.ll [PowerPC] Call support for fast-isel. 2013-08-30 22:18:55 +00:00
fast-isel-GEP-coalesce.ll [PowerPC] Miscellaneous fast-isel test cases. 2013-08-30 02:43:08 +00:00
fast-isel-indirectbr.ll
fast-isel-load-store.ll
fast-isel-redefinition.ll [PowerPC] Miscellaneous fast-isel test cases. 2013-08-30 02:43:08 +00:00
fast-isel-ret.ll
fast-isel-shifter.ll [PowerPC] Miscellaneous fast-isel test cases. 2013-08-30 02:43:08 +00:00
fastisel-gep-promote-before-add.ll Avoid illegal integer promotion in fastisel 2013-11-15 19:09:27 +00:00
fcpsgn.ll
float-asmprint.ll
float-to-int.ll
floatPSA.ll
fma.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
glob-comp-aa-crash.ll TBAA: update tbaa format from scalar format to struct-path aware format. 2013-09-30 18:17:55 +00:00
hello-reloc.s
hello.ll
hidden-vis-2.ll
hidden-vis.ll
i32-to-float.ll
i64_fp_round.ll
i64_fp.ll
i64-to-float.ll
i128-and-beyond.ll
iabs.ll
ifcvt.ll
illegal-element-type.ll
in-asm-f64-reg.ll
indirectbr.ll
inlineasm-copy.ll
inlineasm-i64-reg.ll
int-fp-conv-0.ll
int-fp-conv-1.ll
inverted-bool-compares.ll
isel-rc-nox0.ll TBAA: remove !tbaa from testing cases when they are not needed. 2013-09-30 18:17:35 +00:00
isel.ll
ispositive.ll
itofp128.ll
jaggedstructs.ll Update the cpu specified on some PPC regression tests 2013-11-30 19:39:27 +00:00
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 Update the cpu specified on some PPC regression tests 2013-11-30 19:39:27 +00:00
lsr-postinc-pos.ll
mask64.ll
mcm-1.ll
mcm-2.ll [PowerPC] Fix problems with large code model (PR17169). 2013-09-17 20:03:25 +00:00
mcm-3.ll [PowerPC] Fix problems with large code model (PR17169). 2013-09-17 20:03:25 +00:00
mcm-4.ll [PowerPC] Fix problems with large code model (PR17169). 2013-09-17 20:03:25 +00:00
mcm-5.ll
mcm-6.ll
mcm-7.ll
mcm-8.ll
mcm-9.ll Error if we see an alias to a declaration. 2013-11-14 13:58:06 +00:00
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
neg.ll
negctr.ll
no-dead-strip.ll
novrsave.ll
optcmp.ll PPC popcnt[dw] do not have record forms 2013-11-20 20:54:55 +00:00
or-addressing-mode.ll
popcnt.ll
ppc32-vacopy.ll Update the cpu specified on some PPC regression tests 2013-11-30 19:39:27 +00:00
ppc64-32bit-addic.ll
ppc64-abi-extend.ll
ppc64-align-long-double.ll
ppc64-calls.ll
ppc64-crash.ll
ppc64-cyclecounter.ll
ppc64-linux-func-size.ll
ppc64-prefetch.ll
ppc64-toc.ll
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
pr13641.ll
pr13891.ll
pr15031.ll
pr15359.ll
pr15630.ll
pr15632.ll
pr16556-2.ll
pr16556.ll
pr16573.ll
pr17168.ll Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
pr17354.ll [PowerPC] Fix PR17354: Generate nop after local calls for PIC code. 2013-09-26 17:09:28 +00:00
private.ll
pwr3-6x.ll
pwr7-gt-nop.ll Improve instruction scheduling for the PPC POWER7 2013-12-12 00:19:11 +00:00
quadint-return.ll
r31.ll
recipest.ll Make the PPC fast-math sqrt expansion safe at 0 2013-09-12 19:04:12 +00:00
reg-coalesce-simple.ll
reg-names.ll Add PPC option for full register names in asm 2013-11-11 14:58:40 +00:00
reloc-align.ll
remap-crash.ll
remat-imm.ll
retaddr.ll
return-val-i128.ll
rlwimi2.ll
rlwimi3.ll
rlwimi-and.ll Replace sra with srl if a single sign bit is required 2013-10-17 11:16:57 +00:00
rlwimi-commute.ll
rlwimi-keep-rsh.ll
rlwimi.ll
rlwinm2.ll
rlwinm.ll
rotl-2.ll
rotl-64.ll
rotl.ll
rounding-ops.ll
rs-undef-use.ll
s000-alias-misched.ll
sdag-ppcf128.ll
sections.ll
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 Desensitize a couple of PPC regression tests 2013-11-30 19:52:28 +00:00
small-arguments.ll
srl-mask.ll PPC: Optimize rldicl generation for masked shifts 2013-11-20 01:10:15 +00:00
stack-protector.ll
stack-realign.ll TBAA: remove !tbaa from testing cases when they are not needed. 2013-09-30 18:17:35 +00:00
std-unal-fi.ll
stdux-constuse.ll
stfiwx-2.ll
stfiwx.ll Convert a PPC test from grep to FileCheck 2013-11-30 20:04:33 +00:00
store-load-fwd.ll
store-update.ll
structsinmem.ll Update the cpu specified on some PPC regression tests 2013-11-30 19:39:27 +00:00
structsinregs.ll Update the cpu specified on some PPC regression tests 2013-11-30 19:39:27 +00:00
stubs.ll
stwu8.ll
stwu-gta.ll
stwux.ll
sub-bv-types.ll
subc.ll
subsumes-pred-regs.ll Fix the PPC subsumes-predicate check 2013-12-11 23:12:25 +00:00
svr4-redzone.ll
tailcall1-64.ll
tailcall1.ll
tailcallpic1.ll
tls-pic.ll Merge all tls tests to two files. One for normal codegen (initial and local 2013-12-11 22:25:39 +00:00
tls.ll Merge all tls tests to two files. One for normal codegen (initial and local 2013-12-11 22:25:39 +00:00
trampoline.ll
unal4-std.ll
unal-altivec2.ll PPC: Don't restrict lvsl generation to after type legalization 2013-09-15 22:09:58 +00:00
unal-altivec.ll
unaligned.ll Desensitize a couple of PPC regression tests 2013-11-30 19:52:28 +00:00
unsafe-math.ll
unwind-dw2-g.ll Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +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 Correct word hyphenations 2013-12-05 05:44:44 +00:00
vec_constants.ll
vec_conv.ll
vec_extload.ll Fix spelling intruction -> instruction. 2013-09-28 11:46:15 +00:00
vec_fmuladd.ll
vec_fneg.ll
vec_insert.ll
vec_misaligned.ll
vec_mul.ll
vec_perf_shuffle.ll
vec_rounding.ll
vec_select.ll
vec_shift.ll
vec_shuffle.ll
vec_splat_constant.ll
vec_splat.ll
vec_sqrt.ll
vec_vrsave.ll
vec_zero.ll
vec-abi-align.ll Remove unnecessary TBAA metadata from r190636's test case 2013-09-12 23:23:12 +00:00
vector-identity-shuffle.ll
vector.ll
vrsave-spill.ll
vrspill.ll
weak_def_can_be_hidden.ll on darwin<10, fallback to .weak_definition (PPC,X86) 2013-12-10 21:37:41 +00:00
zero-not-run.ll