llvm-6502/test/CodeGen/ARM
Dan Gohman 30fc5bbfd1 Fix a bug which prevented tail merging of return instructions in
beneficial cases. See the changes in test/CodeGen/X86/tail-opts.ll and
test/CodeGen/ARM/ifcvt2.ll for details.

The fix is to change HashEndOfMBB to hash at most one instruction,
instead of trying to apply heuristics about when it will be profitable to
consider more than one instruction. The regular tail-merging heuristics
are already prepared to handle the same cases, and they're more precise.

Also, make test/CodeGen/ARM/ifcvt5.ll and
test/CodeGen/Thumb2/thumb2-branch.ll slightly more complex so that they
continue to test what they're intended to test.

And, this eliminates the problem in
test/CodeGen/Thumb2/2009-10-15-ITBlockBranch.ll, the testcase from
PR5204. Update it accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102907 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-03 14:35:47 +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 Remove the -enable-sjlj-eh option, which doesn't do anything. 2010-05-02 15:36:26 +00:00
2007-05-09-tailmerge-2.ll Remove the -enable-sjlj-eh option, which doesn't do anything. 2010-05-02 15:36:26 +00:00
2007-05-14-InlineAsmCstCrash.ll
2007-05-14-RegScavengerAssert.ll
2007-05-22-tailmerge-3.ll Remove the -enable-sjlj-eh option, which doesn't do anything. 2010-05-02 15:36:26 +00:00
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-PostRAKill4.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 Start function numbering at 0. 2010-04-17 16:29:15 +00:00
2009-08-31-TwoRegShuffle.ll
2009-09-01-PostRAProlog.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-21-InvalidFNeg.ll
2009-10-27-double-align.ll Added sub-formats to the NeonI/NeonXI instructions to further refine the NEONFrm 2010-03-17 17:52:21 +00:00
2009-10-30.ll Added sub-formats to the NeonI/NeonXI instructions to further refine the NEONFrm 2010-03-17 17:52:21 +00:00
2009-11-01-NeonMoves.ll
2009-11-02-NegativeLane.ll
2009-11-07-SubRegAsmPrinting.ll move fconst[sd] to UAL. <rdar://7414913> 2009-11-23 21:08:25 +00:00
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 Fix PR5614: parts of a physical register def may be killed the rest. 2009-12-01 00:44:45 +00:00
2009-12-02-vtrn-undef.ll Recognize canonical forms of vector shuffles where the same vector is used for 2009-12-03 06:40:55 +00:00
2010-03-04-eabi-fp-spill.ll pr6478: The frame pointer spill frame index is only defined when there is a 2010-03-04 21:42:36 +00:00
2010-03-04-stm-undef-addr.ll pr6480: Don't try producing ld/st-multiple instructions when the address is 2010-03-04 21:04:38 +00:00
2010-03-18-ldm-rtrn.ll pr6652: Use LDM to restore PC to the return address on ARMv4. 2010-03-20 22:20:40 +00:00
2010-04-07-DbgValueOtherTargets.ll Split big test into multiple directories to cater to 2010-04-07 20:43:35 +00:00
2010-04-09-NeonSelect.ll Add a testcase for svn r100568. 2010-04-09 18:29:29 +00:00
2010-04-13-v2f64SplitArg.ll Handle a v2f64 formal parameter that is split between registers and memory 2010-04-13 22:03:22 +00:00
2010-04-14-SplitVector.ll Don't custom lower bit converts to ARM VMOVDRRD or VMOVDRR when the operand 2010-04-14 20:45:23 +00:00
2010-04-15-ScavengerDebugValue.ll Fix PR6847. RegScavenger should ignore DebugValues. 2010-04-15 20:28:39 +00:00
addrmode.ll
aliases.ll emit jump table an alias ".set" directives through MCStreamer as 2010-01-26 21:53:08 +00:00
align.ll Emit .comm alignment in bytes but .align in powers of 2 for ARM ELF. 2010-01-26 20:21:43 +00:00
alloca.ll
argaddr.ll
arguments2.ll
arguments3.ll Eliminate more uses of llvm-as and llvm-dis. 2009-09-09 00:09:15 +00:00
arguments4.ll
arguments5.ll
arguments6.ll
arguments7.ll Fix declarations in a few more tests. 2010-04-17 21:29:25 +00:00
arguments8.ll Fix declarations in a few more tests. 2010-04-17 21:29:25 +00:00
arguments_f64_backfill.ll
arguments-nosplit-double.ll
arguments-nosplit-i64.ll
arguments.ll
arm-asm.ll
arm-frameaddr.ll
arm-negative-stride.ll Added sub-formats to the NeonI/NeonXI instructions to further refine the NEONFrm 2010-03-17 17:52:21 +00:00
armv4.ll Initial bits of ARMv4-only support. 2010-03-06 19:39:36 +00:00
bfc.ll
bfx.ll Update ARM DAGtoDAG for matching UBFX instruction for unsigned bitfield 2010-04-22 23:24:18 +00:00
bic.ll Forgot to alter RUN line when converting to FileCheck. 2009-11-22 13:09:48 +00:00
bits.ll
bx_fold.ll
call_nolink.ll
call.ll Fix pr6111: Avoid using the LR register for the target address of an indirect 2010-02-16 17:24:15 +00:00
carry.ll
clz.ll
compare-call.ll
constants.ll
cse-libcalls.ll
ctors_dtors.ll
ctz.ll Test case for r93758. 2010-01-19 00:35:20 +00:00
dg.exp
div.ll
dyn-stackalloc.ll
extloadi1.ll
fabss.ll switch the flag for using NEON for SP floating point to a subtarget 'feature'. 2010-03-25 23:47:34 +00:00
fadds.ll switch the flag for using NEON for SP floating point to a subtarget 'feature'. 2010-03-25 23:47:34 +00:00
fcopysign.ll
fdivs.ll switch the flag for using NEON for SP floating point to a subtarget 'feature'. 2010-03-25 23:47:34 +00:00
fixunsdfdi.ll
fmacs.ll switch the flag for using NEON for SP floating point to a subtarget 'feature'. 2010-03-25 23:47:34 +00:00
fmdrr-fmrrd.ll
fmscs.ll switch the flag for using NEON for SP floating point to a subtarget 'feature'. 2010-03-25 23:47:34 +00:00
fmuls.ll switch the flag for using NEON for SP floating point to a subtarget 'feature'. 2010-03-25 23:47:34 +00:00
fnegs.ll switch the flag for using NEON for SP floating point to a subtarget 'feature'. 2010-03-25 23:47:34 +00:00
fnmacs.ll switch the flag for using NEON for SP floating point to a subtarget 'feature'. 2010-03-25 23:47:34 +00:00
fnmscs.ll switch the flag for using NEON for SP floating point to a subtarget 'feature'. 2010-03-25 23:47:34 +00:00
fnmul.ll
fnmuls.ll
formal.ll
fp16.ll Fix typo 2010-03-14 18:42:52 +00:00
fp_convert.ll switch the flag for using NEON for SP floating point to a subtarget 'feature'. 2010-03-25 23:47:34 +00:00
fp.ll
fparith.ll
fpcmp_ueq.ll
fpcmp.ll
fpconsts.ll move fconst[sd] to UAL. <rdar://7414913> 2009-11-23 21:08:25 +00:00
fpconv.ll
fpmem.ll
fpow.ll
fpowi.ll Make this more likely to generate a libcall. 2010-01-01 03:26:51 +00:00
fptoint.ll Fix for bad FileCheck converts in revision 89584. 2009-11-22 12:50:05 +00:00
fsubs.ll switch the flag for using NEON for SP floating point to a subtarget 'feature'. 2010-03-25 23:47:34 +00:00
globals.ll Start function numbering at 0. 2010-04-17 16:29:15 +00:00
hardfloat_neon.ll
hello.ll Revert 89562. We're being sneakier than I was giving us credit for, and this 2009-11-21 23:34:09 +00:00
hidden-vis-2.ll
hidden-vis-3.ll Start function numbering at 0. 2010-04-17 16:29:15 +00:00
hidden-vis.ll
iabs.ll convert to filecheck. 2010-02-08 23:47:34 +00:00
ifcvt1.ll
ifcvt2.ll Fix a bug which prevented tail merging of return instructions in 2010-05-03 14:35:47 +00:00
ifcvt3.ll
ifcvt4.ll
ifcvt5.ll Fix a bug which prevented tail merging of return instructions in 2010-05-03 14:35:47 +00:00
ifcvt6.ll Stop using the old pre-UAL syntax for LDM/STM instruction suffixes. 2010-03-16 16:19:07 +00:00
ifcvt7.ll Stop using the old pre-UAL syntax for LDM/STM instruction suffixes. 2010-03-16 16:19:07 +00:00
ifcvt8.ll Stop using the old pre-UAL syntax for LDM/STM instruction suffixes. 2010-03-16 16:19:07 +00:00
ifcvt9.ll
illegal-vector-bitcast.ll
imm.ll
indirectbr.ll fix AsmPrinter::GetBlockAddressSymbol to always return a unique 2010-03-14 17:53:23 +00:00
inlineasm2.ll
inlineasm3.ll Handle ARM inline asm "w" constraints with 64-bit ("d") registers. 2009-12-18 01:03:29 +00:00
inlineasm-imm-arm.ll
inlineasm.ll
insn-sched1.ll Revert 89562. We're being sneakier than I was giving us credit for, and this 2009-11-21 23:34:09 +00:00
ispositive.ll
large-stack.ll
ldm.ll Stop using the old pre-UAL syntax for LDM/STM instruction suffixes. 2010-03-16 16:19:07 +00:00
ldr_ext.ll
ldr_frame.ll
ldr_post.ll
ldr_pre.ll
ldr.ll
ldrd.ll Added sub-formats to the NeonI/NeonXI instructions to further refine the NEONFrm 2010-03-17 17:52:21 +00:00
load.ll
long_shift.ll Run codegen dce pass for all targets at all optimization levels. Previously it's 2010-02-06 09:07:11 +00:00
long-setcc.ll
long.ll
lsr-code-insertion.ll Reapply the new LoopStrengthReduction code, with compile time and 2010-02-12 10:34:29 +00:00
lsr-scale-addr-mode.ll
mem.ll
memcpy-inline.ll
memfunc.ll
mls.ll Convert a few tests to FileCheck for PR5307. 2009-11-22 11:45:44 +00:00
movt-movw-global.ll Materialize global addresses via movt/movw pair, this is always better 2009-11-24 00:44:37 +00:00
movt.ll
mul_const.ll
mul.ll
mulhi.ll
mvn.ll
neon_arith1.ll
neon_ld1.ll
neon_ld2.ll
neon_minmax.ll Check for comparisons of +/- zero when optimizing less-than-or-equal and 2010-02-24 22:15:53 +00:00
pack.ll
pr3502.ll
private.ll Delete useless trailing semicolons. 2010-01-05 17:55:26 +00:00
remat.ll Delete dead PHI machine instructions. These can be created due to type 2010-02-10 22:58:57 +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 Eliminate more uses of llvm-as and llvm-dis. 2009-09-09 00:09:15 +00:00
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
sbfx.ll add a simple dag combine to replace trivial shl+lshr with 2010-04-15 05:28:43 +00:00
section.ll
select_xform.ll
select-imm.ll Fix codegen of conditional move of immediates. We were not making use of the immediate forms of cmov instructions at all. 2009-11-20 00:54:03 +00:00
select.ll
shifter_operand.ll
smul.ll
spill-q.ll
stack-frame.ll
stm.ll
str_post.ll
str_pre-2.ll Added sub-formats to the NeonI/NeonXI instructions to further refine the NEONFrm 2010-03-17 17:52:21 +00:00
str_pre.ll
str_trunc.ll
sxt_rot.ll
t2-imm.ll
tail-opts.ll Delete useless trailing semicolons. 2010-01-05 17:55:26 +00:00
thread_pointer.ll
tls1.ll
tls2.ll Added sub-formats to the NeonI/NeonXI instructions to further refine the NEONFrm 2010-03-17 17:52:21 +00:00
tls3.ll
trunc_ldr.ll
truncstore-dag-combine.ll
tst_teq.ll
uint64tof64.ll
unaligned_load_store.ll Fix a gross typo: ARMv6+ may or may not support unaligned memory operations. 2010-01-30 14:08:12 +00:00
unord.ll
uxt_rot.ll
uxtb.ll
vaba.ll
vabd.ll
vabs.ll
vadd.ll
vargs_align.ll
vargs.ll
vbits.ll The Neon "vtst" instruction takes a suffix that is the element size alone -- 2010-01-17 06:35:17 +00:00
vbsl.ll
vceq.ll
vcge.ll
vcgt.ll
vcnt.ll
vcombine.ll
vcvt.ll
vdup.ll
vext.ll
vfcmp.ll
vfp.ll
vget_lane.ll
vhadd.ll
vhsub.ll
vicmp.ll
vld1.ll Fix tests for Neon load/store intrinsics to match the i8* types expected by 2010-04-20 00:17:16 +00:00
vld2.ll Fix tests for Neon load/store intrinsics to match the i8* types expected by 2010-04-20 00:17:16 +00:00
vld3.ll Fix tests for Neon load/store intrinsics to match the i8* types expected by 2010-04-20 00:17:16 +00:00
vld4.ll Fix tests for Neon load/store intrinsics to match the i8* types expected by 2010-04-20 00:17:16 +00:00
vldlane.ll Fix tests for Neon load/store intrinsics to match the i8* types expected by 2010-04-20 00:17:16 +00:00
vminmax.ll
vmla.ll
vmls.ll
vmov.ll
vmul.ll
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 Fix tests for Neon load/store intrinsics to match the i8* types expected by 2010-04-20 00:17:16 +00:00
vst2.ll Fix tests for Neon load/store intrinsics to match the i8* types expected by 2010-04-20 00:17:16 +00:00
vst3.ll Fix tests for Neon load/store intrinsics to match the i8* types expected by 2010-04-20 00:17:16 +00:00
vst4.ll Fix tests for Neon load/store intrinsics to match the i8* types expected by 2010-04-20 00:17:16 +00:00
vstlane.ll Fix tests for Neon load/store intrinsics to match the i8* types expected by 2010-04-20 00:17:16 +00:00
vsub.ll
vtbl.ll
vtrn.ll
vuzp.ll
vzip.ll
weak2.ll
weak.ll