llvm-6502/test/CodeGen/PowerPC
Dan Gohman e8be6c6391 Add a new function, ReplaceAllUsesOfValuesWith, which handles bulk
replacement of multiple values. This is slightly more efficient
than doing multiple ReplaceAllUsesOfValueWith calls, and theoretically
could be optimized even further. However, an important property of this
new function is that it handles the case where the source value set and
destination value set overlap. This makes it feasible for isel to use
SelectNodeTo in many very common cases, which is advantageous because
SelectNodeTo avoids a temporary node and it doesn't require CSEMap
updates for users of values that don't change position.

Revamp MorphNodeTo, which is what does all the work of SelectNodeTo, to
handle operand lists more efficiently, and to correctly handle a number
of corner cases to which its new wider use exposes it.

This commit also includes a change to the encoding of post-isel opcodes
in SDNodes; now instead of being sandwiched between the target-independent
pre-isel opcodes and the target-dependent pre-isel opcodes, post-isel
opcodes are now represented as negative values. This makes it possible
to test if an opcode is pre-isel or post-isel without having to know
the size of the current target's post-isel instruction set.

These changes speed up llc overall by 3% and reduce memory usage by 10%
on the InstructionCombining.cpp testcase with -fast and -regalloc=local.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53728 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-17 19:10:17 +00:00
..
2004-11-29-ShrCrash.ll upgrade this test 2008-03-09 00:32:10 +00:00
2004-11-30-shift-crash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2004-11-30-shr-var-crash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2004-12-12-ZeroSizeCommon.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2005-01-14-SetSelectCrash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2005-01-14-UndefLong.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2005-08-12-rlwimi-crash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2005-09-02-LegalizeDuplicatesCalls.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2005-10-08-ArithmeticRotate.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2005-11-30-vastart-crash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-01-11-darwin-fp-argument.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-01-20-ShiftPartsCrash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-04-01-FloatDoubleExtend.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-04-05-splat-ish.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-04-19-vmaddfp-crash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-05-12-rlwimi-crash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-07-07-ComputeMaskedBits.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-07-19-stwbrx-crash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-08-11-RetVector.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-08-15-SelectionCrash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-09-28-shift_64.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-10-11-combiner-aa-regression.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-10-13-Miscompile.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-10-17-brcc-miscompile.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-10-17-ppc64-alloca.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-11-10-DAGCombineMiscompile.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-11-29-AltivecFPSplat.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-12-07-LargeAlloca.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-12-07-SelectCrash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
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 Implement a signficant optimization for inline asm: 2008-04-27 00:37:18 +00:00
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
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-01-25-EmptyFunction.ll
2008-02-05-LiveIntervalsAssert.ll If a vr is already marked alive in a bb, then it has PHI uses that are visited earlier, then it is not killed in the def block (i.e. not dead). 2008-02-05 20:04:18 +00:00
2008-02-09-LocalRegAllocAssert.ll Determine whether a spill kills the register it's spilling before insertion rather than trying to undo the kill marker afterwards. 2008-02-11 08:30:52 +00:00
2008-03-05-RegScavengerAssert.ll Update llc flags for PPC register scavenger. 2008-03-10 22:59:08 +00:00
2008-03-06-KillInfo.ll Update llc flags for PPC register scavenger. 2008-03-10 22:59:08 +00:00
2008-03-17-RegScavengerCrash.ll Rewrite code that propagate isDead information after a dead copy is coalesced. This remove some ugly spaghetti code and fixed a number of subtle bugs. 2008-03-18 08:26:47 +00:00
2008-03-18-RegScavengerAssert.ll Fix live variables issues: 2008-03-19 00:52:20 +00:00
2008-03-24-AddressRegImm.ll Use the bit size of the operand instead of the hard-coded 32 to generate the 2008-03-24 23:16:37 +00:00
2008-03-24-CoalescerBug.ll lastRegisterUse() should ignore identity copies. Those will be erased. 2008-03-25 02:02:19 +00:00
2008-03-26-CoalescerBug.ll One more coalescer fix wrt deadness propagation. 2008-03-26 20:15:49 +00:00
2008-04-10-LiveIntervalCrash.ll A copy instruction may use a register multiple times on some targets. Change them all. 2008-04-10 18:38:47 +00:00
2008-04-16-CoalescerBug.ll After reading memory that's already freed. 2008-04-16 20:24:25 +00:00
2008-04-23-CoalescerCrash.ll New test. 2008-04-24 20:01:58 +00:00
2008-05-01-ppc_fp128.ll Adding testcase. 2008-05-01 18:41:09 +00:00
2008-06-19-LegalizerCrash.ll ISD::UNDEF should be expanded recursively / iteratively. 2008-06-19 22:01:11 +00:00
2008-06-21-F128LoadStore.ll Support for load/store of expanded float types. I 2008-06-21 17:00:47 +00:00
2008-06-23-LiveVariablesCrash.ll This situation can occur: 2008-06-23 23:41:14 +00:00
2008-07-10-SplatMiscompile.ll Fix an altivec constant miscompilation that Duncan found through 2008-07-10 16:33:38 +00:00
2008-07-15-Bswap.ll LegalizeTypes support for promotion of bswap. 2008-07-15 10:18:22 +00:00
2008-07-15-Fabs.ll LegalizeTypes support for fabs on ppc long double. 2008-07-15 15:02:44 +00:00
2008-07-15-SignExtendInreg.ll LegalizeTypes support for promotion of SIGN_EXTEND_INREG. 2008-07-15 10:14:24 +00:00
2008-07-17-Fneg.ll LegalizeTypes support for what seems to be the 2008-07-17 17:35:14 +00:00
addc.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
addi-reassoc.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
align.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
and_add.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
and_sext.ll
and_sra.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
and-branch.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
and-elim.ll
and-imm.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
atomic-1.ll The atomic.cmp.swap promotion logic is wrong: it 2008-07-16 08:09:48 +00:00
atomic-2.ll Added MemOperands to Atomic operations since Atomics touches memory. 2008-06-25 08:15:39 +00:00
big-endian-actual-args.ll
big-endian-call-result.ll
big-endian-formal-args.ll
branch-opt.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
bswap-load-store.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
buildvec_canonicalize.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
calls.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
cmp-cmp.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
compare-duplicate.ll
compare-fcmp-ord.ll Remove -unwind-tables-optional everywhere, since 2008-04-14 17:56:54 +00:00
compare-simm.ll
constants.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
cttz.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
darwin-labels.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
dg.exp sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
div-2.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
eqv-andc-orc-nor.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
extsh.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
fabs.ll
fma.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
fnabs.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
fneg.ll
fnegsel.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
fold-li.ll Remove -unwind-tables-optional everywhere, since 2008-04-14 17:56:54 +00:00
fp_to_uint.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
fp-branch.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
fp-int-fp.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
fpcopy.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
Frames-alloca.ll Update llc flags for PPC register scavenger. 2008-03-10 22:59:08 +00:00
Frames-large.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
Frames-leaf.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
Frames-small.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
frounds.ll Really feed llvm-as with the testcase, do not let it read from stdin. This fixes the hangs seen on solaris10. 2008-02-26 13:37:13 +00:00
fsqrt.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
hello.ll
i64_fp.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
iabs.ll
illegal-element-type.ll
inlineasm-copy.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
int-fp-conv-0.ll Generalize ExpandIntToFP to handle the case where the operand is legal 2008-03-11 01:59:03 +00:00
int-fp-conv-1.ll Generalize ExpandIntToFP to handle the case where the operand is legal 2008-03-11 01:59:03 +00:00
invalid-memcpy.ll
inverted-bool-compares.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
ispositive.ll
itofp128.ll Implement more support for fp-to-i128 and i128-to-fp conversions. 2008-03-10 23:03:31 +00:00
LargeAbsoluteAddr.ll Add a new function, ReplaceAllUsesOfValuesWith, which handles bulk 2008-07-17 19:10:17 +00:00
lha.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
load-constant-addr.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
long-compare.ll
longdbl-truncate.ll
mask64.ll Don't hard-code the mask size to be 32, which is incorrect on ppc64 2008-02-27 21:12:32 +00:00
mem_update.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
mem-rr-addr-mode.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
mul-neg-power-2.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
mulhs.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
multiple-return-values.ll Add support for multiple return values for the PPC target by 2008-03-19 21:39:28 +00:00
neg.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
no-dead-strip.ll
or-addressing-mode.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
ppcf128-1-opt.ll
ppcf128-1.ll
ppcf128-2.ll More APInt-ification. 2008-03-13 22:13:53 +00:00
ppcf128-3.ll Make conversions of i8/i16 to ppcf128 work. 2008-03-18 17:28:38 +00:00
ppcf128-4.ll New testcase. 2008-03-22 22:27:01 +00:00
reg-coalesce-simple.ll Remove -unwind-tables-optional everywhere, since 2008-04-14 17:56:54 +00:00
retaddr.ll
return-val-i128.ll Add support for calls with i128 return values on ppc64. 2008-03-08 00:19:12 +00:00
rlwimi2.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
rlwimi3.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
rlwimi-commute.ll Evan implemented this. 2008-03-02 17:56:29 +00:00
rlwimi.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
rlwinm2.ll
rlwinm.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
rotl-2.ll Remove -unwind-tables-optional everywhere, since 2008-04-14 17:56:54 +00:00
rotl-64.ll
rotl.ll
select_lt0.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
setcc_no_zext.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
seteq-0.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
shift128.ll Add support for lowering 128-bit shifts on ppc64. 2008-03-07 20:36:53 +00:00
shl_elim.ll
shl_sext.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
sign_ext_inreg1.ll
small-arguments.ll
stfiwx-2.ll
stfiwx.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
store-load-fwd.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
subc.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
tailcall1-64.ll Tail call optimization improvements: 2008-04-30 09:16:33 +00:00
tailcall1.ll Tail call optimization improvements: 2008-04-30 09:16:33 +00:00
tailcallpic1.ll Tail call optimization improvements: 2008-04-30 09:16:33 +00:00
unsafe-math.ll
vcmp-fold.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vec_br_cmp.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vec_call.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vec_constants.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vec_fneg.ll
vec_insert.ll Add testcase for recent legalizer change 2008-02-13 06:48:40 +00:00
vec_misaligned.ll New test for misaligned Altivec laod/store. 2008-02-27 23:14:50 +00:00
vec_mul.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vec_perf_shuffle.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vec_shuffle.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vec_spat.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vec_vrsave.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vec_zero.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vector-identity-shuffle.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vector.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00