llvm-6502/test/CodeGen/ARM
Evan Cheng 31959b19a7 Given a pair of floating point load and store, if there are no other uses of
the load, then it may be legal to transform the load and store to integer
load and store of the same width.

This is done if the target specified the transformation as profitable. e.g.
On arm, this can transform:
vldr.32 s0, []
vstr.32 s0, []

to

ldr r12, []
str r12, []

rdar://8944252


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124708 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-02 01:06:55 +00:00
..
2006-11-10-CycleInDAG.ll
2007-01-19-InfiniteLoop.ll Fix test. 2010-11-03 18:21:33 +00:00
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
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 User proper libcall names & condcodes while compiling for ARM EABI. 2010-09-28 21:39:26 +00:00
2009-10-02-NEONSubregsBug.ll
2009-10-21-InvalidFNeg.ll
2009-10-27-double-align.ll
2009-10-30.ll
2009-11-01-NeonMoves.ll
2009-11-02-NegativeLane.ll Add NEON VLD1-dup instructions (load 1 element to all lanes). 2010-11-27 06:35:16 +00:00
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 PR8921: LDM/POP do not support interworking prior to v5t. 2011-01-06 19:24:41 +00:00
2010-04-07-DbgValueOtherTargets.ll If dbg_declare() or dbg_value() is not lowered by isel then emit DEBUG message instead of creating DBG_VALUE for undefined value in reg0. 2010-12-06 22:39:26 +00:00
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 Change register allocation order for ARM VFP and NEON registers to put the 2010-10-08 06:15:13 +00:00
2010-06-29-SubregImpDefs.ll
2010-07-26-GlobalMerge.ll
2010-08-04-EHCrash.ll
2010-09-21-OptCmpBug.ll OptimizeCompareInstr should avoid iterating pass the beginning of the MBB when the 'and' instruction is after the comparison. 2010-09-21 23:49:07 +00:00
2010-09-29-mc-asm-header-test.ll Tiny patch for proof-of-concept cleanup of ARMAsmPrinter::EmitStartOfAsmFile() 2010-09-30 02:45:56 +00:00
2010-10-19-mc-elf-objheader.ll Revert 118422 in search of bot verdancy. 2010-11-08 19:17:22 +00:00
2010-10-25-ifcvt-ldm.ll Rewrite stack callee saved spills and restores to use push/pop instructions. 2010-11-18 19:40:05 +00:00
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 Mark Darwin call instructions as using "r7" to prevent the frame-register 2010-11-29 22:43:27 +00:00
2010-11-30-reloc-movt.ll Materialize GA addresses with movw + movt pairs for Darwin in PIC mode. e.g. 2011-01-17 08:03:18 +00:00
2010-12-07-PEIBug.ll Fix a bad prologue / epilogue codegen bug where the compiler would emit illegal 2010-12-07 23:08:38 +00:00
2010-12-08-tpsoft.ll ARM/MC/ELF TPsoft is now a proper pseudo inst. 2010-12-08 23:14:44 +00:00
2010-12-13-reloc-pic.ll Materialize GA addresses with movw + movt pairs for Darwin in PIC mode. e.g. 2011-01-17 08:03:18 +00:00
2010-12-15-elf-lcomm.ll Materialize GA addresses with movw + movt pairs for Darwin in PIC mode. e.g. 2011-01-17 08:03:18 +00:00
2010-12-17-LocalStackSlotCrash.ll During local stack slot allocation, the materializeFrameBaseRegister function 2010-12-17 23:09:14 +00:00
2011-01-19-MergedGlobalDbg.ll Fix debug info for merged global. 2011-01-20 00:02:16 +00:00
addrmode.ll
aliases.ll
align.ll Increase ARM APCS preferred alignment for i64 and f64 from 32 bits to 64 bits. 2010-09-29 17:54:10 +00:00
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 - Add TargetInstrInfo::getOperandLatency() to compute operand latencies. This 2010-10-06 06:27:31 +00:00
arm-and-tst-peephole.ll Remove ARM isel hacks that fold large immediates into a pair of add, sub, and, 2010-11-17 20:13:28 +00:00
arm-asm.ll
arm-frameaddr.ll
arm-negative-stride.ll
arm-returnaddr.ll
armv4.ll
bfc.ll
bfi.ll bfi A, (and B, C1), C2) -> bfi A, B, C2 iff C1 & C2 == C1. rdar://8458663 2010-12-14 03:22:07 +00:00
bfx.ll
bic.ll
bits.ll FileCheck-ize 2010-09-17 21:46:16 +00:00
bswap-inline-asm.ll Recognize inline asm 'rev /bin/bash, ' as a bswap intrinsic call. 2011-01-08 01:24:27 +00:00
bx_fold.ll PR8921: LDM/POP do not support interworking prior to v5t. 2011-01-06 19:24:41 +00:00
call_nolink.ll
call-tc.ll Don't merge restore with tail call instruction. 2011-01-25 01:28:33 +00:00
call.ll
carry.ll
clz.ll FileCheck-ize a few tests. 2010-10-22 21:55:03 +00:00
code-placement.ll Explicitly disable CGP critical edge splitting for this test so it won't break 2010-09-27 18:43:43 +00:00
compare-call.ll
constants.ll tidy up 2010-10-22 23:46:04 +00:00
crash-O0.ll
crash.ll Simplify test and move into a generic "crash" ll file. 2010-10-09 00:29:04 +00:00
cse-libcalls.ll
ctors_dtors.ll
ctz.ll
dg.exp
div.ll These tests are looking for library function names that 2010-11-17 21:57:32 +00:00
dyn-stackalloc.ll
extloadi1.ll
fabss.ll Re-commit 117518 and 117519 now that ARM MC test failures are out of the way. 2010-10-28 06:47:08 +00:00
fadds.ll Re-commit 117518 and 117519 now that ARM MC test failures are out of the way. 2010-10-28 06:47:08 +00:00
fast-isel-crash.ll Add a testcase for my last checkin. 2011-01-27 06:01:17 +00:00
fast-isel-static.ll Don't handle -arm-long-calls in fast isel for now. 2010-12-15 23:47:29 +00:00
fast-isel.ll Recommit this change and remove the failing part of the test - it didn't 2010-11-15 21:11:06 +00:00
fcopysign.ll
fdivs.ll Re-commit 117518 and 117519 now that ARM MC test failures are out of the way. 2010-10-28 06:47:08 +00:00
fixunsdfdi.ll
flag-crash.ll
fmacs.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
fmdrr-fmrrd.ll
fmscs.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
fmuls.ll Re-commit 117518 and 117519 now that ARM MC test failures are out of the way. 2010-10-28 06:47:08 +00:00
fnegs.ll Convert -enable-sched-cycles and -enable-sched-hazard to -disable 2011-01-21 05:51:33 +00:00
fnmacs.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
fnmscs.ll Convert -enable-sched-cycles and -enable-sched-hazard to -disable 2011-01-21 05:51:33 +00:00
fnmul.ll
fnmuls.ll
formal.ll
fp16.ll
fp_convert.ll
fp.ll tweak test to check instructions rather than relying on the comment string 2010-09-17 20:21:03 +00:00
fparith.ll
fpcmp_ueq.ll These tests are looking for library function names that 2010-11-17 21:57:32 +00:00
fpcmp-opt.ll Radar 8803471: Fix expansion of ARM BCCi64 pseudo instructions. 2010-12-23 22:45:49 +00:00
fpcmp.ll
fpconsts.ll Convert -enable-sched-cycles and -enable-sched-hazard to -disable 2011-01-21 05:51:33 +00:00
fpconv.ll These tests are looking for library function names that 2010-11-17 21:57:32 +00:00
fpmem.ll
fpow.ll
fpowi.ll
fptoint.ll
fsubs.ll
global-merge.ll Change ARMGlobalMerge to keep BSS globals in separate pools. 2010-11-17 21:25:39 +00:00
globals.ll
hardfloat_neon.ll
hello.ll Fix epilogue codegen to avoid leaving the stack pointer in an invalid 2010-11-22 18:12:04 +00:00
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 PR8921: LDM/POP do not support interworking prior to v5t. 2011-01-06 19:24:41 +00:00
ifcvt7.ll PR8921: LDM/POP do not support interworking prior to v5t. 2011-01-06 19:24:41 +00:00
ifcvt8.ll PR8921: LDM/POP do not support interworking prior to v5t. 2011-01-06 19:24:41 +00:00
ifcvt9.ll
ifcvt10.ll Two sets of changes. Sorry they are intermingled. 2010-11-03 00:45:17 +00:00
ifcvt11.ll Two sets of changes. Sorry they are intermingled. 2010-11-03 00:45:17 +00:00
illegal-vector-bitcast.ll
imm.ll
indirectbr.ll
inlineasm2.ll
inlineasm3.ll Change register allocation order for ARM VFP and NEON registers to put the 2010-10-08 06:15:13 +00:00
inlineasm-imm-arm.ll
inlineasm.ll
insn-sched1.ll
ispositive.ll Update tests to handle MC-inst instruction printing of shift operations. The 2010-09-17 21:58:46 +00:00
large-stack.ll
ldm.ll PR8921: LDM/POP do not support interworking prior to v5t. 2011-01-06 19:24:41 +00:00
ldr_ext.ll
ldr_frame.ll
ldr_post.ll
ldr_pre.ll
ldr.ll
ldrd.ll
ldst-f32-2-i32.ll Given a pair of floating point load and store, if there are no other uses of 2011-02-02 01:06:55 +00:00
load-global.ll Last round of fixes for movw + movt global address codegen. 2011-01-21 18:55:51 +00:00
load.ll
long_shift.ll When we look at instructions to convert to setting the 's' flag, we need to look 2010-11-01 20:41:43 +00:00
long-setcc.ll
long.ll tweak test to check instructions rather than relying on the comment string 2010-09-17 20:27:26 +00:00
lsr-code-insertion.ll PR8921: LDM/POP do not support interworking prior to v5t. 2011-01-06 19:24:41 +00:00
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 Last round of fixes for movw + movt global address codegen. 2011-01-21 18:55:51 +00:00
mem.ll
memcpy-inline.ll
memfunc.ll
mls.ll
movt-movw-global.ll
movt.ll
mul_const.ll Update tests to handle MC-inst instruction printing of shift operations. The 2010-09-17 21:58:46 +00:00
mul.ll
mulhi.ll
mult-alt-generic-arm.ll Inline asm mult-alt constraint tests. 2010-11-02 23:01:44 +00:00
mvn.ll
neon_arith1.ll
neon_ld1.ll
neon_ld2.ll
neon_minmax.ll
pack.ll Remove duplicate test. 2010-10-22 22:04:28 +00:00
phi.ll move this test into the ARM test so that it is only run when the arm backend 2010-12-19 02:58:14 +00:00
pr3502.ll
prefetch.ll Fix @llvm.prefetch isel. Selecting between pld / pldw using the first immediate rw. There is currently no intrinsic that matches to pli. 2010-11-04 05:19:35 +00:00
private.ll
reg_sequence.ll Making use of VFP / NEON floating point multiply-accumulate / subtraction is 2010-12-05 22:04:16 +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 FileCheck-ize a few tests. 2010-10-22 21:55:03 +00:00
sbfx.ll
section.ll
select_xform.ll Remove ARM isel hacks that fold large immediates into a pair of add, sub, and, 2010-11-17 20:13:28 +00:00
select-imm.ll Add conditional move of large immediate. 2010-11-13 02:25:14 +00:00
select.ll These tests are looking for library function names that 2010-11-17 21:57:32 +00:00
shifter_operand.ll Re-commit 117518 and 117519 now that ARM MC test failures are out of the way. 2010-10-28 06:47:08 +00:00
smul.ll
spill-q.ll Add ARM patterns to match EXTRACT_SUBVECTOR nodes. 2011-01-07 04:59:04 +00:00
stack-frame.ll
stm.ll Teach the (non-MC) instruction printer to use the cannonical names for push/pop, 2010-09-17 22:36:38 +00:00
str_post.ll
str_pre-2.ll Update the test 2011-01-01 20:57:26 +00:00
str_pre.ll
str_trunc.ll
sub.ll
sxt_rot.ll
t2-imm.ll
tail-opts.ll Last round of fixes for movw + movt global address codegen. 2011-01-21 18:55:51 +00:00
thread_pointer.ll
thumb1-varalloc.ll Even if we don't have 7 bytes of stack space we may need to save and 2011-01-11 00:16:04 +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 If we can, lower the multiply part of a umulo/smulo call to a libcall 2011-01-20 00:29:24 +00:00
unaligned_load_store.ll Convert -enable-sched-cycles and -enable-sched-hazard to -disable 2011-01-21 05:51:33 +00:00
unord.ll
uxt_rot.ll
uxtb.ll
va_arg.ll
vaba.ll
vabd.ll
vabs.ll
vadd.ll
vargs_align.ll
vargs.ll
vbits.ll Add missing colon. 2010-11-29 22:39:38 +00:00
vbsl.ll
vceq.ll Add support for ARM's specialized vector-compare-against-zero instructions. 2010-11-08 23:21:22 +00:00
vcge.ll Fix result type of Neon floating-point comparisons against zero. 2010-12-18 00:04:33 +00:00
vcgt.ll Enable support for precise scheduling of the instruction selection 2011-01-21 06:19:05 +00:00
vcnt.ll
vcombine.ll Add testcases for PR8411 (vget_low and vget_high implemented as shuffles). 2011-01-07 06:44:14 +00:00
vcvt.ll Add Neon VCVT instructions for f32 <-> f16 conversions. 2010-12-15 22:14:12 +00:00
vdup.ll Add float patterns for Neon vld1-lane/dup and vst1-lane operations. 2010-12-10 22:13:32 +00:00
vector-DAGCombine.ll Add ARM-specific DAG combining to cast i64 vector element load/stores to f64. 2010-12-21 06:43:19 +00:00
vext.ll Lower some BUILD_VECTORS using VEXT+shuffle. 2011-01-07 21:37:30 +00:00
vfcmp.ll
vfp.ll
vget_lane.ll Add codegen patterns for VST1-lane instructions. Radar 8599955. 2010-11-03 16:24:53 +00:00
vhadd.ll
vhsub.ll
vicmp.ll
vld1.ll Change register allocation order for ARM VFP and NEON registers to put the 2010-10-08 06:15:13 +00:00
vld2.ll Change register allocation order for ARM VFP and NEON registers to put the 2010-10-08 06:15:13 +00:00
vld3.ll Change register allocation order for ARM VFP and NEON registers to put the 2010-10-08 06:15:13 +00:00
vld4.ll Change register allocation order for ARM VFP and NEON registers to put the 2010-10-08 06:15:13 +00:00
vlddup.ll Add float patterns for Neon vld1-lane/dup and vst1-lane operations. 2010-12-10 22:13:32 +00:00
vldlane.ll Fix crash compiling a QQQQ REG_SEQUENCE for a Neon vld3_lane operation. 2010-12-17 01:21:12 +00:00
vminmax.ll
vmla.ll Remove DAG combiner patch to fold vector splats. Instcombiner does it now. 2010-10-29 22:03:02 +00:00
vmls.ll
vmov.ll NEON does not support truncating vector stores. Radar 8598391. 2010-11-01 18:31:39 +00:00
vmul.ll Recognize sign/zero-extended constant BUILD_VECTORs for VMULL operations. 2010-11-23 19:38:38 +00:00
vneg.ll
vpadal.ll
vpadd.ll
vpminmax.ll
vqadd.ll
vqdmul.ll
vqshl.ll
vqshrn.ll
vqsub.ll
vrec.ll
vrev.ll SelectionDAG shuffle nodes do not allow operands with different numbers of 2010-10-27 20:38:28 +00:00
vshift.ll
vshiftins.ll
vshl.ll
vshll.ll
vshrn.ll
vsra.ll
vst1.ll Change register allocation order for ARM VFP and NEON registers to put the 2010-10-08 06:15:13 +00:00
vst2.ll Change register allocation order for ARM VFP and NEON registers to put the 2010-10-08 06:15:13 +00:00
vst3.ll Set alignment operand for NEON VST instructions. 2010-09-23 23:42:37 +00:00
vst4.ll Change register allocation order for ARM VFP and NEON registers to put the 2010-10-08 06:15:13 +00:00
vstlane.ll Add float patterns for Neon vld1-lane/dup and vst1-lane operations. 2010-12-10 22:13:32 +00:00
vsub.ll
vtbl.ll
vtrn.ll
vuzp.ll
vzip.ll
weak2.ll
weak.ll