llvm-6502/test/CodeGen/PowerPC
Hal Finkel ff56d1a201 Enable early if conversion on PPC
On cores for which we know the misprediction penalty, and we have
the isel instruction, we can profitably perform early if conversion.
This enables us to replace some small branch sequences with selects
and avoid the potential stalls from mispredicting the branches.

Enabling this feature required implementing canInsertSelect and
insertSelect in PPCInstrInfo; isel code in PPCISelLowering was
refactored to use these functions as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178926 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-05 23:29:01 +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 Protect PPC Altivec patterns with a predicate 2013-03-15 13:21:21 +00:00
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 Don't reserve R2 on Darwin/PPC 2013-03-12 15:18:14 +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 PPC CR-spill kill flags and 32- vs. 64-bit instructions 2013-03-28 03:38:16 +00:00
2010-03-09-indirect-call.ll
2010-04-01-MachineCSEBug.ll
2010-05-03-retaddr1.ll Don't reserve R2 on Darwin/PPC 2013-03-12 15:18:14 +00:00
2010-10-11-Fast-Varargs.ll
2010-12-18-PPCStackRefs.ll Don't reserve R2 on Darwin/PPC 2013-03-12 15:18:14 +00:00
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
a2-fp-basic.ll
a2q-stackalign.ll
a2q.ll
addc.ll
addi-reassoc.ll
align.ll
allocate-r0.ll Allocate r0 on PPC 2013-03-27 06:52:27 +00:00
and_add.ll
and_sext.ll
and_sra.ll
and-branch.ll
and-elim.ll
and-imm.ll
anon_aggr.ll
asm-Zy.ll
asym-regclass-copy.ll Fix a register-class comparison bug in PPCCTRLoops 2013-03-21 23:23:34 +00:00
atomic-1.ll Print PPC ZERO as 0 (not r0) even on Darwin 2013-03-27 13:20:52 +00:00
atomic-2.ll
Atomics-32.ll
Atomics-64.ll
available-externally.ll
big-endian-actual-args.ll
big-endian-call-result.ll
big-endian-formal-args.ll
branch-opt.ll
bswap-load-store.ll Specify CPUs on the PPC bswap-load-store test 2013-03-28 20:35:18 +00:00
buildvec_canonicalize.ll
calls.ll
can-lower-ret.ll
cmp-cmp.ll
coalesce-ext.ll
compare-duplicate.ll
compare-simm.ll
complex-return.ll
constants.ll
cr1eq-no-extra-moves.ll
cr1eq.ll
cr_spilling.ll
cr-spills.ll Cleanup PPC CR-spill kill flags and 32- vs. 64-bit instructions 2013-03-28 03:38:16 +00:00
crsave.ll
ctr-cleanup.ll Cleanup initial-value constants in PPCCTRLoops 2013-03-18 17:40:27 +00:00
ctrloop-reg.ll
ctrloop-s000.ll
ctrloop-sums.ll
ctrloops.ll
cttz.ll Fix PowerPC/cttz.ll to specify a cpu (and use FileCheck) 2013-04-01 16:31:56 +00:00
darwin-labels.ll
dbg.ll Remove unused field in DISubprogram 2013-03-21 20:28:52 +00:00
DbgValueOtherTargets.test Remove unnecessary leading comment characters in lit-only file 2013-03-18 22:08:16 +00:00
dcbt-sched.ll
delete-node.ll
div-2.ll
empty-functions.ll
emptystruct.ll
eqv-andc-orc-nor.ll
extsh.ll
fabs.ll
float-asmprint.ll
float-to-int.ll Fix a bad assert in PPCTargetLowering 2013-04-01 18:42:58 +00:00
floatPSA.ll
fma.ll
fnabs.ll
fneg.ll
fold-li.ll
fp_to_uint.ll
fp-branch.ll
fp-int-fp.ll
fpcopy.ll
frame-size.ll Allocate the RS spill slot for any PPC function with spills and a large stack frame 2013-03-15 05:06:04 +00:00
frameaddr.ll Correct PPC FRAMEADDR lowering using a pseudo-register 2013-03-21 19:03:19 +00:00
Frames-alloca.ll
Frames-large.ll
Frames-leaf.ll
Frames-small.ll
frounds.ll
fsl-e500mc.ll
fsl-e5500.ll
fsqrt.ll
hello.ll
hidden-vis-2.ll
hidden-vis.ll
i32-to-float.ll Add more PPC floating-point conversion instructions 2013-04-01 17:52:07 +00:00
i64_fp_round.ll Add more PPC floating-point conversion instructions 2013-04-01 17:52:07 +00:00
i64_fp.ll
i64-to-float.ll Add more PPC floating-point conversion instructions 2013-04-01 17:52:07 +00:00
i128-and-beyond.ll
iabs.ll Revert the test moves from 176733. Use "REQUIRES: asserts" instead. 2013-03-12 16:27:52 +00:00
ifcvt.ll Enable early if conversion on PPC 2013-04-05 23:29:01 +00:00
illegal-element-type.ll
in-asm-f64-reg.ll
indirectbr.ll
inlineasm-copy.ll
int-fp-conv-0.ll
int-fp-conv-1.ll
inverted-bool-compares.ll
isel.ll
ispositive.ll
itofp128.ll
jaggedstructs.ll Remove the link register from the GPR classes on PowerPC. 2013-03-27 02:40:14 +00:00
LargeAbsoluteAddr.ll Don't reserve R2 on Darwin/PPC 2013-03-12 15:18:14 +00:00
lbzux.ll Enable unaligned memory access on PPC for scalar types 2013-03-15 15:27:13 +00:00
lha.ll
lit.local.cfg Include '.test' suffix in target specific lit configs that need it 2013-03-18 20:31:44 +00:00
load-constant-addr.ll
load-shift-combine.ll
long-compare.ll
longdbl-truncate.ll
lsr-postinc-pos.ll
mask64.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
mult-alt-generic-powerpc64.ll
mult-alt-generic-powerpc.ll
neg.ll
negctr.ll Fix a sign-extension bug in PPCCTRLoops 2013-03-18 23:58:28 +00:00
no-dead-strip.ll
novrsave.ll
or-addressing-mode.ll
popcnt.ll Add the PPC popcntw instruction 2013-04-01 15:58:15 +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 Fix PR15359. 2013-02-26 16:41:03 +00:00
pr15630.ll Fix PR15630: Replace faulty stdcx. with stwcx. 2013-04-02 18:37:08 +00:00
pr15632.ll Fix PR15632: No support for ppcf128 floating-point remainder on PowerPC. 2013-04-03 13:05:44 +00:00
private.ll
pwr3-6x.ll
quadint-return.ll
r31.ll Don't reserve R31 on PPC64 unless the frame pointer is needed 2013-03-19 08:09:38 +00:00
recipest.ll PPC: Improve code generation for mixed-precision reciprocal sqrt 2013-04-04 22:44:12 +00:00
reg-coalesce-simple.ll
remat-imm.ll
retaddr.ll
return-val-i128.ll
rlwimi2.ll
rlwimi3.ll Revert the test moves from 176733. Use "REQUIRES: asserts" instead. 2013-03-12 16:27:52 +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 Implement FRINT lowering on PPC using frin 2013-03-29 19:41:55 +00:00
s000-alias-misched.ll
sdag-ppcf128.ll
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
sjlj.ll Don't spill PPC VRSAVE on non-Darwin (even in SjLj) 2013-03-27 00:02:20 +00:00
small-arguments.ll
stack-protector.ll
stdux-constuse.ll
stfiwx-2.ll Add triple to test/CodeGen/PowerPC/stfiwx-2 2013-04-01 18:18:44 +00:00
stfiwx.ll
store-load-fwd.ll
store-update.ll Rewrite pre-increment store patterns to use standard memory operands. 2013-03-19 19:52:04 +00:00
structsinmem.ll Remove the link register from the GPR classes on PowerPC. 2013-03-27 02:40:14 +00:00
structsinregs.ll Remove the link register from the GPR classes on PowerPC. 2013-03-27 02:40:14 +00:00
stubs.ll
stwu8.ll Enable unaligned memory access on PPC for scalar types 2013-03-15 15:27:13 +00:00
stwu-gta.ll
stwux.ll
subc.ll
svr4-redzone.ll Fix PR15332 (patch by Florian Zeitz). 2013-02-26 21:28:57 +00:00
tailcall1-64.ll
tailcall1.ll
tailcallpic1.ll
tls-2.ll
tls-gd-obj.ll
tls-gd.ll Remove the link register from the GPR classes on PowerPC. 2013-03-27 02:40:14 +00:00
tls-ie-obj.ll
tls-ie.ll
tls-ld-2.ll Remove the link register from the GPR classes on PowerPC. 2013-03-27 02:40:14 +00:00
tls-ld-obj.ll
tls-ld.ll Remove the link register from the GPR classes on PowerPC. 2013-03-27 02:40:14 +00:00
tls.ll Remove the link register from the GPR classes on PowerPC. 2013-03-27 02:40:14 +00:00
trampoline.ll
unal4-std.ll Cleanup PPC64 unaligned i64 load/store 2013-03-19 15:23:39 +00:00
unaligned.ll Enable unaligned memory access on PPC for scalar types 2013-03-15 15:27:13 +00:00
unsafe-math.ll
vaddsplat.ll
varargs-struct-float.ll
varargs.ll Don't reserve R2 on Darwin/PPC 2013-03-12 15:18:14 +00:00
vcmp-fold.ll
vec_auto_constant.ll
vec_br_cmp.ll
vec_buildvector_loadstore.ll
vec_call.ll
vec_cmp.ll Test case hygiene. 2013-03-09 18:25:40 +00:00
vec_constants.ll
vec_conv.ll
vec_extload.ll
vec_fneg.ll
vec_insert.ll
vec_misaligned.ll
vec_mul.ll
vec_perf_shuffle.ll
vec_rounding.ll Add PPC FP rounding instructions fri[mnpz] 2013-03-29 08:57:48 +00:00
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
vector-identity-shuffle.ll
vector.ll
vrsave-spill.ll Don't spill PPC VRSAVE on non-Darwin (even in SjLj) 2013-03-27 00:02:20 +00:00
vrspill.ll Improve PPC VR (Altivec) register spilling 2013-03-17 04:43:44 +00:00