llvm-6502/test/CodeGen/Thumb2
Chandler Carruth a6425604c2 [SDAG] Make the DAGCombine worklist not grow endlessly due to duplicate
insertions.

The old behavior could cause arbitrarily bad memory usage in the DAG
combiner if there was heavy traffic of adding nodes already on the
worklist to it. This commit switches the DAG combine worklist to work
the same way as the instcombine worklist where we null-out removed
entries and only add new entries to the worklist. My measurements of
codegen time shows slight improvement. The memory utilization is
unsurprisingly dominated by other factors (the IR and DAG itself
I suspect).

This change results in subtle, frustrating churn in the particular order
in which DAG combines are applied which causes a number of minor
regressions where we fail to match a pattern previously matched by
accident. AFAICT, all of these should be using AddToWorklist to directly
or should be written in a less brittle way. None of the changes seem
drastically bad, and a few of the changes seem distinctly better.

A major change required to make this work is to significantly harden the
way in which the DAG combiner handle nodes which become dead
(zero-uses). Previously, we relied on the ability to "priority-bump"
them on the combine worklist to achieve recursive deletion of these
nodes and ensure that the frontier of remaining live nodes all were
added to the worklist. Instead, I've introduced a routine to just
implement that precise logic with no indirection. It is a significantly
simpler operation than that of the combiner worklist proper. I suspect
this will also fix some other problems with the combiner.

I think the x86 changes are really minor and uninteresting, but the
avx512 change at least is hiding a "regression" (despite the test case
being just noise, not testing some performance invariant) that might be
looked into. Not sure if any of the others impact specific "important"
code paths, but they didn't look terribly interesting to me, or the
changes were really minor. The consensus in review is to fix any
regressions that show up after the fact here.

Thanks to the other reviewers for checking the output on other
architectures. There is a specific regression on ARM that Tim already
has a fix prepped to commit.

Differential Revision: http://reviews.llvm.org/D4616

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@213727 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-23 07:08:53 +00:00
..
2009-07-17-CrossRegClassCopy.ll
2009-07-21-ISelBug.ll Mass update to CodeGen tests to use CHECK-LABEL for labels corresponding to function definitions for more informative error messages. No functionality change and all updated tests passed locally. 2013-07-14 06:24:09 +00:00
2009-07-23-CPIslandBug.ll
2009-07-30-PEICrash.ll
2009-08-01-WrongLDRBOpc.ll ARM & AArch64: make use of common cmpxchg idioms after expansion 2014-05-30 10:09:59 +00:00
2009-08-02-CoalescerBug.ll
2009-08-04-CoalescerAssert.ll
2009-08-04-CoalescerBug.ll
2009-08-04-ScavengerAssert.ll
2009-08-04-SubregLoweringBug2.ll
2009-08-04-SubregLoweringBug3.ll
2009-08-04-SubregLoweringBug.ll
2009-08-06-SpDecBug.ll ARM & AArch64: make use of common cmpxchg idioms after expansion 2014-05-30 10:09:59 +00:00
2009-08-07-CoalescerBug.ll
2009-08-07-NeonFPBug.ll
2009-08-08-ScavengerAssert.ll
2009-08-10-ISelBug.ll
2009-08-21-PostRAKill4.ll
2009-09-01-PostRAProlog.ll
2009-09-28-ITBlockBug.ll ARM & AArch64: make use of common cmpxchg idioms after expansion 2014-05-30 10:09:59 +00:00
2009-10-15-ITBlockBranch.ll Mass update to CodeGen tests to use CHECK-LABEL for labels corresponding to function definitions for more informative error messages. No functionality change and all updated tests passed locally. 2013-07-14 06:24:09 +00:00
2009-11-01-CopyReg2RegBug.ll
2009-11-11-ScavengerAssert.ll
2009-11-13-STRDBug.ll
2009-12-01-LoopIVUsers.ll
2010-01-06-TailDuplicateLabels.ll Fix the remaining TCL-style quotes found in the testsuite. This is 2012-07-02 19:09:46 +00:00
2010-01-19-RemovePredicates.ll
2010-02-11-phi-cycle.ll Convert CodeGen/*/*.ll tests to use the new CHECK-LABEL for easier debugging. No functionality change and all tests pass after conversion. 2013-07-13 20:38:47 +00:00
2010-02-24-BigStack.ll
2010-03-08-addi12-ccout.ll
2010-03-15-AsmCCClobber.ll
2010-04-15-DynAllocBug.ll ARM & AArch64: make use of common cmpxchg idioms after expansion 2014-05-30 10:09:59 +00:00
2010-04-26-CopyRegCrash.ll
2010-05-24-rsbs.ll
2010-06-14-NEONCoalescer.ll
2010-06-19-ITBlockCrash.ll
2010-06-21-TailMergeBug.ll ARM & AArch64: make use of common cmpxchg idioms after expansion 2014-05-30 10:09:59 +00:00
2010-08-10-VarSizedAllocaBug.ll Mass update to CodeGen tests to use CHECK-LABEL for labels corresponding to function definitions for more informative error messages. No functionality change and all updated tests passed locally. 2013-07-14 06:24:09 +00:00
2010-11-22-EpilogueBug.ll ARM & AArch64: make use of common cmpxchg idioms after expansion 2014-05-30 10:09:59 +00:00
2010-12-03-AddSPNarrowing.ll
2011-04-21-FILoweringBug.ll Mass update to CodeGen tests to use CHECK-LABEL for labels corresponding to function definitions for more informative error messages. No functionality change and all updated tests passed locally. 2013-07-14 06:24:09 +00:00
2011-06-07-TwoAddrEarlyClobber.ll ARM & AArch64: make use of common cmpxchg idioms after expansion 2014-05-30 10:09:59 +00:00
2011-12-16-T2SizeReduceAssert.ll [Thumbv8] Fix the value of BLXOperandIndex of isV8EligibleForIT 2014-01-23 19:55:33 +00:00
2012-01-13-CBNZBug.ll Mass update to CodeGen tests to use CHECK-LABEL for labels corresponding to function definitions for more informative error messages. No functionality change and all updated tests passed locally. 2013-07-14 06:24:09 +00:00
2013-02-19-tail-call-register-hint.ll TBAA: remove !tbaa from testing cases if not used. 2013-04-30 17:52:57 +00:00
2013-03-02-vduplane-nonconstant-source-index.ll ARM: Creating a vector from a lane of another. 2013-03-02 20:16:24 +00:00
2013-03-06-vector-sext-operand-scalarize.ll Convert CodeGen/*/*.ll tests to use the new CHECK-LABEL for easier debugging. No functionality change and all tests pass after conversion. 2013-07-13 20:38:47 +00:00
aligned-constants.ll
aligned-spill.ll Make ARMAsmPrinter generate the correct alignment specifier syntax in instructions. 2013-02-22 10:01:33 +00:00
bfi.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
bfx.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
buildvector-crash.ll ARM & AArch64: make use of common cmpxchg idioms after expansion 2014-05-30 10:09:59 +00:00
carry.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
constant-islands.ll Remove -arm-disable-ehabi option 2014-02-07 20:12:49 +00:00
cortex-fp.ll Add extra CHECK prefix to tests with explicit prefix 2014-02-16 13:28:15 +00:00
crash.ll Make RAFast::UsedInInstr indexed by register units. 2013-02-21 19:35:21 +00:00
cross-rc-coalescing-1.ll
cross-rc-coalescing-2.ll ARM & AArch64: make use of common cmpxchg idioms after expansion 2014-05-30 10:09:59 +00:00
div.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
frameless2.ll
frameless.ll
ifcvt-neon.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
inflate-regs.ll Add a test case for global live range splitting. 2012-05-23 23:42:23 +00:00
inlineasm.ll Added a regress test for the bug #9964 before close it. 2012-05-09 19:07:04 +00:00
large-call.ll Fix ARM FastISel tests, as a first step to enabling ARM FastISel 2013-05-14 16:26:38 +00:00
large-stack.ll Enabling thumb2 mode used to force support for armv6t2. Replace this 2013-12-13 11:16:00 +00:00
ldr-str-imm12.ll ARM & AArch64: make use of common cmpxchg idioms after expansion 2014-05-30 10:09:59 +00:00
lit.local.cfg Reduce verbiage of lit.local.cfg files 2014-06-09 22:42:55 +00:00
longMACt.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
lsr-deficiency.ll Mass update to CodeGen tests to use CHECK-LABEL for labels corresponding to function definitions for more informative error messages. No functionality change and all updated tests passed locally. 2013-07-14 06:24:09 +00:00
machine-licm.ll Mass update to CodeGen tests to use CHECK-LABEL for labels corresponding to function definitions for more informative error messages. No functionality change and all updated tests passed locally. 2013-07-14 06:24:09 +00:00
mul_const.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
pic-load.ll Mass update to CodeGen tests to use CHECK-LABEL for labels corresponding to function definitions for more informative error messages. No functionality change and all updated tests passed locally. 2013-07-14 06:24:09 +00:00
segmented-stacks.ll Move the segmented stack switch to a function attribute 2014-04-10 22:58:43 +00:00
tail-call-r9.ll Fix broken CHECK lines. 2014-01-11 21:06:00 +00:00
thumb2-adc.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-add2.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-add3.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-add4.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-add5.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-add6.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-add.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-and2.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-and.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-asr2.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-asr.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-bcc.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-bfc.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-bic.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-branch.ll ARM & AArch64: make use of common cmpxchg idioms after expansion 2014-05-30 10:09:59 +00:00
thumb2-call-tc.ll Mass update to CodeGen tests to use CHECK-LABEL for labels corresponding to function definitions for more informative error messages. No functionality change and all updated tests passed locally. 2013-07-14 06:24:09 +00:00
thumb2-call.ll Mass update to CodeGen tests to use CHECK-LABEL for labels corresponding to function definitions for more informative error messages. No functionality change and all updated tests passed locally. 2013-07-14 06:24:09 +00:00
thumb2-cbnz.ll ARM & AArch64: make use of common cmpxchg idioms after expansion 2014-05-30 10:09:59 +00:00
thumb2-clz.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-cmn2.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-cmn.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-cmp2.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-cmp.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-eor2.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-eor.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-ifcvt1-tc.ll Mass update to CodeGen tests to use CHECK-LABEL for labels corresponding to function definitions for more informative error messages. No functionality change and all updated tests passed locally. 2013-07-14 06:24:09 +00:00
thumb2-ifcvt1.ll Enable generating legacy IT block for AArch32 2013-11-13 18:29:49 +00:00
thumb2-ifcvt2.ll ARM & AArch64: make use of common cmpxchg idioms after expansion 2014-05-30 10:09:59 +00:00
thumb2-ifcvt3.ll ARM & AArch64: make use of common cmpxchg idioms after expansion 2014-05-30 10:09:59 +00:00
thumb2-jtb.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-ldm.ll Fix the Load/Store optimization pass to work with Thumb1. 2014-05-16 14:14:30 +00:00
thumb2-ldr_ext.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-ldr_post.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-ldr_pre.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-ldr.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-ldrb.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-ldrd.ll
thumb2-ldrh.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-lsl2.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-lsl.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-lsr2.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-lsr3.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-lsr.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-mla.ll ARM: fix test case missed in previous roundup 2014-04-04 01:19:56 +00:00
thumb2-mls.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-mov.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-mul.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-mulhi.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-mvn2.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-mvn.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-neg.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-orn2.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-orn.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-orr2.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-orr.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-pack.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-rev16.ll Enabling thumb2 mode used to force support for armv6t2. Replace this 2013-12-13 11:16:00 +00:00
thumb2-rev.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-ror.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-rsb2.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-rsb.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-sbc.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-select_xform.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-select.ll ARM: update even more tests 2014-04-03 17:35:22 +00:00
thumb2-shifter.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-smla.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-smul.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-spill-q.ll ARM & AArch64: make use of common cmpxchg idioms after expansion 2014-05-30 10:09:59 +00:00
thumb2-str_post.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-str_pre.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-str.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-strb.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-strh.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-sub2.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-sub3.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-sub4.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-sub5.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-sub.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-sxt_rot.ll [SDAG] Make the DAGCombine worklist not grow endlessly due to duplicate 2014-07-23 07:08:53 +00:00
thumb2-sxt-uxt.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-tbb.ll Mass update to CodeGen tests to use CHECK-LABEL for labels corresponding to function definitions for more informative error messages. No functionality change and all updated tests passed locally. 2013-07-14 06:24:09 +00:00
thumb2-tbh.ll Mass update to CodeGen tests to use CHECK-LABEL for labels corresponding to function definitions for more informative error messages. No functionality change and all updated tests passed locally. 2013-07-14 06:24:09 +00:00
thumb2-teq2.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-teq.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-tst2.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-tst.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
thumb2-uxt_rot.ll [SDAG] Make the DAGCombine worklist not grow endlessly due to duplicate 2014-07-23 07:08:53 +00:00
thumb2-uxtb.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
tls1.ll Add support for parsing ARM symbol variants on ELF targets 2013-12-04 22:43:20 +00:00
tls2.ll Add support for parsing ARM symbol variants on ELF targets 2013-12-04 22:43:20 +00:00
tpsoft.ll ARM: Fix TPsoft for Thumb mode 2014-06-24 15:45:59 +00:00
v8_IT_1.ll Enable generating legacy IT block for AArch32 2013-11-13 18:29:49 +00:00
v8_IT_2.ll Enable generating legacy IT block for AArch32 2013-11-13 18:29:49 +00:00
v8_IT_3.ll ARM & AArch64: make use of common cmpxchg idioms after expansion 2014-05-30 10:09:59 +00:00
v8_IT_4.ll Enable generating legacy IT block for AArch32 2013-11-13 18:29:49 +00:00
v8_IT_5.ll ARM & AArch64: make use of common cmpxchg idioms after expansion 2014-05-30 10:09:59 +00:00
v8_IT_6.ll ARMv8 IfConversion must skip narrow instructions that a) define CPSR and b) wouldn't affect CPSR in an IT block 2014-02-26 11:27:28 +00:00