llvm-6502/test/CodeGen/ARM
Cameron Zwarich 4071a71112 Do some peephole optimizations to remove pointless VMOVs from Neon to integer
registers that arise from argument shuffling with the soft float ABI. These
instructions are particularly slow on Cortex A8. This fixes one half of
<rdar://problem/8674845>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128759 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-02 02:40:43 +00:00
..
2006-11-10-CycleInDAG.ll
2007-01-19-InfiniteLoop.ll
2007-03-07-CombinerCrash.ll
2007-03-13-InstrSched.ll
2007-03-21-JoinIntervalsCrash.ll
2007-03-26-RegScavengerAssert.ll
2007-03-27-RegScavengerAssert.ll
2007-03-30-RegScavengerAssert.ll
2007-04-02-RegScavengerAssert.ll
2007-04-03-PEIBug.ll
2007-04-03-UndefinedSymbol.ll
2007-04-30-CombinerCrash.ll
2007-05-03-BadPostIndexedLd.ll
2007-05-07-jumptoentry.ll
2007-05-07-tailmerge-1.ll
2007-05-09-tailmerge-2.ll
2007-05-14-InlineAsmCstCrash.ll
2007-05-14-RegScavengerAssert.ll
2007-05-22-tailmerge-3.ll
2007-05-23-BadPreIndexedStore.ll
2007-05-31-RegScavengerInfiniteLoop.ll
2007-08-15-ReuseBug.ll
2008-02-04-LocalRegAllocBug.ll
2008-02-29-RegAllocLocal.ll
2008-03-05-SxtInRegBug.ll
2008-03-07-RegScavengerAssert.ll
2008-04-04-ScavengerAssert.ll
2008-04-10-ScavengerAssert.ll
2008-04-11-PHIofImpDef.ll
2008-05-19-LiveIntervalsBug.ll
2008-05-19-ScavengerAssert.ll
2008-07-17-Fdiv.ll
2008-07-24-CodeGenPrepCrash.ll
2008-08-07-AsmPrintBug.ll
2008-09-14-CoalescerBug.ll
2008-09-17-CoalescerBug.ll
2008-11-18-ScavengerAssert.ll
2009-02-16-SpillerBug.ll
2009-02-22-SoftenFloatVaArg.ll
2009-02-27-SpillerBug.ll
2009-03-07-SpillerBug.ll
2009-03-09-AddrModeBug.ll
2009-04-06-AsmModifier.ll
2009-04-08-AggregateAddr.ll
2009-04-08-FloatUndef.ll
2009-04-08-FREM.ll
2009-04-09-RegScavengerAsm.ll
2009-05-05-DAGCombineBug.ll Correct some bogus target triples. 2010-05-07 17:03:48 +00:00
2009-05-07-RegAllocLocal.ll
2009-05-11-CodePlacementCrash.ll
2009-05-18-InlineAsmMem.ll
2009-06-02-ISelCrash.ll
2009-06-04-MissingLiveIn.ll
2009-06-12-RegScavengerAssert.ll
2009-06-15-RegScavengerAssert.ll
2009-06-19-RegScavengerAssert.ll
2009-06-22-CoalescerBug.ll
2009-06-30-RegScavengerAssert2.ll
2009-06-30-RegScavengerAssert3.ll
2009-06-30-RegScavengerAssert4.ll
2009-06-30-RegScavengerAssert5.ll
2009-06-30-RegScavengerAssert.ll
2009-07-01-CommuteBug.ll
2009-07-09-asm-p-constraint.ll
2009-07-18-RewriterBug.ll
2009-07-22-ScavengerAssert.ll
2009-07-22-SchedulerAssert.ll
2009-07-29-VFP3Registers.ll
2009-08-02-RegScavengerAssert-Neon.ll
2009-08-04-RegScavengerAssert-2.ll
2009-08-04-RegScavengerAssert.ll
2009-08-15-RegScavenger-EarlyClobber.ll
2009-08-15-RegScavengerAssert.ll
2009-08-21-PostRAKill2.ll
2009-08-21-PostRAKill3.ll
2009-08-21-PostRAKill.ll
2009-08-23-linkerprivate.ll
2009-08-26-ScalarToVector.ll
2009-08-27-ScalarToVector.ll
2009-08-29-ExtractEltf32.ll
2009-08-29-TooLongSplat.ll
2009-08-31-LSDA-Name.ll
2009-08-31-TwoRegShuffle.ll
2009-09-09-AllOnes.ll
2009-09-09-fpcmp-ole.ll
2009-09-10-postdec.ll
2009-09-13-InvalidSubreg.ll
2009-09-13-InvalidSuperReg.ll
2009-09-20-LiveIntervalsBug.ll
2009-09-21-LiveVariablesBug.ll
2009-09-22-LiveVariablesBug.ll
2009-09-23-LiveVariablesBug.ll
2009-09-24-spill-align.ll
2009-09-27-CoalescerBug.ll
2009-09-28-LdStOptiBug.ll
2009-10-02-NEONSubregsBug.ll
2009-10-16-Scope.ll
2009-10-21-InvalidFNeg.ll
2009-10-27-double-align.ll Fix ARM tests to be register allocator independent. 2011-03-31 22:14:03 +00:00
2009-10-30.ll
2009-11-01-NeonMoves.ll
2009-11-02-NegativeLane.ll
2009-11-07-SubRegAsmPrinting.ll
2009-11-13-CoalescerCrash.ll
2009-11-13-ScavengerAssert2.ll
2009-11-13-ScavengerAssert.ll
2009-11-13-VRRewriterCrash.ll
2009-11-30-LiveVariablesBug.ll
2009-12-02-vtrn-undef.ll
2010-03-04-eabi-fp-spill.ll
2010-03-04-stm-undef-addr.ll
2010-03-18-ldm-rtrn.ll
2010-04-07-DbgValueOtherTargets.ll
2010-04-09-NeonSelect.ll
2010-04-13-v2f64SplitArg.ll
2010-04-14-SplitVector.ll
2010-04-15-ScavengerDebugValue.ll
2010-05-14-IllegalType.ll
2010-05-17-FastAllocCrash.ll
2010-05-18-LocalAllocCrash.ll
2010-05-18-PostIndexBug.ll
2010-05-19-Shuffles.ll
2010-05-20-NEONSpillCrash.ll
2010-05-21-BuildVector.ll
2010-06-11-vmovdrr-bitcast.ll
2010-06-21-LdStMultipleBug.ll
2010-06-21-nondarwin-tc.ll
2010-06-25-Thumb2ITInvalidIterator.ll
2010-06-29-PartialRedefFastAlloc.ll
2010-06-29-SubregImpDefs.ll
2010-07-26-GlobalMerge.ll
2010-08-04-EHCrash.ll
2010-08-04-StackVariable.ll
2010-09-21-OptCmpBug.ll
2010-09-29-mc-asm-header-test.ll
2010-10-19-mc-elf-objheader.ll
2010-10-25-ifcvt-ldm.ll
2010-11-15-SpillEarlyClobber.ll Fix PR8612 in the standard spiller, take two. 2010-11-16 00:40:59 +00:00
2010-11-29-PrologueBug.ll
2010-11-30-reloc-movt.ll
2010-12-07-PEIBug.ll
2010-12-08-tpsoft.ll
2010-12-13-reloc-pic.ll
2010-12-15-elf-lcomm.ll Write the section table and the section data in the same order that 2011-03-20 18:44:20 +00:00
2010-12-17-LocalStackSlotCrash.ll
2011-01-19-MergedGlobalDbg.ll Enable GlobalMerge on darwin. 2011-03-23 23:34:19 +00:00
2011-02-04-AntidepMultidef.ll
2011-02-07-AntidepClobber.ll
2011-03-10-DAGCombineCrash.ll
2011-03-15-LdStMultipleBug.ll
2011-03-23-PeepholeBug.ll Cmp peephole optimization isn't always safe for signed arithmetics. 2011-03-23 22:52:04 +00:00
addrmode.ll
aliases.ll
align.ll
alloca.ll
argaddr.ll
arguments2.ll
arguments3.ll
arguments4.ll
arguments5.ll
arguments6.ll
arguments7.ll
arguments8.ll
arguments_f64_backfill.ll
arguments-nosplit-double.ll
arguments-nosplit-i64.ll
arguments.ll Fix ARM tests to be register allocator independent. 2011-03-31 22:14:03 +00:00
arm-and-tst-peephole.ll Fix ARM tests to be register allocator independent. 2011-03-31 22:14:03 +00:00
arm-asm.ll
arm-frameaddr.ll
arm-negative-stride.ll
arm-returnaddr.ll Fix ARM tests to be register allocator independent. 2011-03-31 22:14:03 +00:00
armv4.ll
atomic-cmp.ll
available_externally.ll
bfc.ll
bfi.ll
bfx.ll
bic.ll
bits.ll
bswap-inline-asm.ll
bx_fold.ll
call_nolink.ll
call-tc.ll
call.ll
carry.ll
clz.ll
code-placement.ll
compare-call.ll
constants.ll
crash-greedy.ll Pick a conservative register class when creating a small live range for remat. 2011-03-31 03:54:44 +00:00
crash-O0.ll
crash.ll
cse-libcalls.ll
ctors_dtors.ll
ctz.ll
dg.exp
div.ll
divmod.ll Add test case. 2011-04-01 06:27:25 +00:00
dyn-stackalloc.ll
extloadi1.ll
fabss.ll
fadds.ll
fast-isel-crash.ll
fast-isel-pred.ll
fast-isel-static.ll
fast-isel.ll
fcopysign.ll
fdivs.ll
fixunsdfdi.ll
flag-crash.ll
fmacs.ll
fmdrr-fmrrd.ll
fmscs.ll
fmuls.ll
fnegs.ll
fnmacs.ll
fnmscs.ll Fix ARM tests to be register allocator independent. 2011-03-31 22:14:03 +00:00
fnmul.ll
fnmuls.ll
formal.ll
fp16.ll
fp_convert.ll
fp-arg-shuffle.ll Do some peephole optimizations to remove pointless VMOVs from Neon to integer 2011-04-02 02:40:43 +00:00
fp.ll
fparith.ll
fpcmp_ueq.ll
fpcmp-opt.ll LDRD/STRD instructions should print both Rt and Rt2 in the asm string. 2011-04-01 20:26:57 +00:00
fpcmp.ll
fpconsts.ll
fpconv.ll
fpmem.ll
fpow.ll
fpowi.ll
fptoint.ll
fsubs.ll
global-merge.ll Enable GlobalMerge on darwin. 2011-03-23 23:34:19 +00:00
globals.ll
hardfloat_neon.ll
hello.ll
hidden-vis-2.ll
hidden-vis-3.ll
hidden-vis.ll
iabs.ll
ifcvt1.ll
ifcvt2.ll
ifcvt3.ll
ifcvt4.ll
ifcvt5.ll
ifcvt6.ll
ifcvt7.ll
ifcvt8.ll
ifcvt9.ll
ifcvt10.ll
ifcvt11.ll
illegal-vector-bitcast.ll
imm.ll
indirectbr.ll Fix ARM tests to be register allocator independent. 2011-03-31 22:14:03 +00:00
inlineasm2.ll
inlineasm3.ll
inlineasm-imm-arm.ll
inlineasm.ll
insn-sched1.ll
int-to-fp.ll Add Neon SINT_TO_FP and UINT_TO_FP lowering from v4i16 to v4f32. Fixes 2011-03-29 21:41:55 +00:00
ispositive.ll
large-stack.ll
ldm.ll
ldr_ext.ll
ldr_frame.ll
ldr_post.ll
ldr_pre.ll
ldr.ll
ldrd.ll LDRD/STRD instructions should print both Rt and Rt2 in the asm string. 2011-04-01 20:26:57 +00:00
ldst-f32-2-i32.ll
load-global.ll
load.ll
long_shift.ll Cmp peephole optimization isn't always safe for signed arithmetics. 2011-03-23 22:52:04 +00:00
long-setcc.ll Eliminate more uses of llvm-as and llvm-dis. 2009-09-09 00:09:15 +00:00
long.ll
lsr-code-insertion.ll
lsr-on-unrolled-loops.ll Add some missing isel predicates on def : pat patterns to avoid generating VFP vmla / vmls (they cause stalls). Disabling them in isel is properly not a right solution, I'll look into a proper solution next. 2010-11-12 20:32:20 +00:00
lsr-scale-addr-mode.ll
machine-cse-cmp.ll
machine-licm.ll
mem.ll
memcpy-inline.ll Fix ARM tests to be register allocator independent. 2011-03-31 22:14:03 +00:00
memfunc.ll
mls.ll
movt-movw-global.ll
movt.ll
mul_const.ll
mul.ll
mulhi.ll
mult-alt-generic-arm.ll
mvn.ll
neon_arith1.ll
neon_div.ll
neon_ld1.ll
neon_ld2.ll
neon_minmax.ll
neon_shift.ll
pack.ll
peephole-bitcast.ll Fix ARM tests to be register allocator independent. 2011-03-31 22:14:03 +00:00
phi.ll
pr3502.ll
prefetch.ll
private.ll
reg_sequence.ll Fix ARM tests to be register allocator independent. 2011-03-31 22:14:03 +00:00
ret0.ll
ret_arg1.ll
ret_arg2.ll
ret_arg3.ll
ret_arg4.ll
ret_arg5.ll
ret_f32_arg2.ll
ret_f32_arg5.ll
ret_f64_arg2.ll
ret_f64_arg_reg_split.ll
ret_f64_arg_split.ll
ret_f64_arg_stack.ll
ret_i64_arg2.ll
ret_i64_arg3.ll
ret_i64_arg_split.ll
ret_i128_arg2.ll
ret_void.ll
rev.ll Match a few more obvious patterns to revsh. rdar://9147637. 2011-03-18 21:52:42 +00:00
sbfx.ll
section.ll
select_xform.ll
select-imm.ll
select.ll
shifter_operand.ll
shuffle.ll
smul.ll FileCheck'ify test. 2011-04-01 03:36:33 +00:00
spill-q.ll
stack-frame.ll
stm.ll
str_post.ll
str_pre-2.ll Fix ARM tests to be register allocator independent. 2011-03-31 22:14:03 +00:00
str_pre.ll
str_trunc.ll
sub.ll
sxt_rot.ll
t2-imm.ll
tail-opts.ll
thread_pointer.ll
thumb1-varalloc.ll Fix ARM tests to be register allocator independent. 2011-03-31 22:14:03 +00:00
tls1.ll
tls2.ll
tls3.ll
trap.ll
trunc_ldr.ll
truncstore-dag-combine.ll
tst_teq.ll
uint64tof64.ll
umulo-32.ll
unaligned_load_store.ll
undef-sext.ll
unord.ll
uxt_rot.ll
uxtb.ll Eliminate more uses of llvm-as and llvm-dis. 2009-09-09 00:09:15 +00:00
va_arg.ll
vaba.ll
vabd.ll
vabs.ll
vadd.ll
vargs_align.ll
vargs.ll
vbits.ll
vbsl-constant.ll Add a ARM-specific SD node for VBSL so that forms with a constant first operand 2011-03-30 23:01:21 +00:00
vbsl.ll
vceq.ll
vcge.ll
vcgt.ll Fix ARM tests to be register allocator independent. 2011-03-31 22:14:03 +00:00
vcnt.ll
vcombine.ll
vcvt.ll
vdup.ll
vector-DAGCombine.ll
vext.ll Some minor cleanups based on feedback. 2011-03-15 20:47:26 +00:00
vfcmp.ll
vfp.ll Fix ARM tests to be register allocator independent. 2011-03-31 22:14:03 +00:00
vget_lane.ll
vhadd.ll
vhsub.ll
vicmp.ll
vld1.ll Fix ARM tests to be register allocator independent. 2011-03-31 22:14:03 +00:00
vld2.ll
vld3.ll Fix ARM tests to be register allocator independent. 2011-03-31 22:14:03 +00:00
vld4.ll
vlddup.ll
vldlane.ll Fix ARM tests to be register allocator independent. 2011-03-31 22:14:03 +00:00
vminmax.ll
vmla.ll
vmls.ll
vmov.ll
vmul.ll Distribute (A + B) * C to (A * C) + (B * C) to make use of NEON multiplier 2011-03-31 19:38:48 +00:00
vneg.ll
vpadal.ll
vpadd.ll
vpminmax.ll
vqadd.ll
vqdmul.ll
vqshl.ll
vqshrn.ll
vqsub.ll
vrec.ll
vrev.ll
vshift.ll
vshiftins.ll
vshl.ll
vshll.ll
vshrn.ll
vsra.ll
vst1.ll
vst2.ll
vst3.ll
vst4.ll
vstlane.ll
vsub.ll
vtbl.ll
vtrn.ll
vuzp.ll
vzip.ll
weak2.ll
weak.ll