llvm-6502/test/CodeGen/CellSPU
Dan Gohman 2ba60e5930 Eliminate LegalizeOps' LegalizedNodes map and have it just call RAUW
on every node as it legalizes them. This makes it easier to use
hasOneUse() heuristics, since unneeded nodes can be removed from the
DAG earlier.

Make LegalizeOps visit the DAG in an operands-last order. It previously
used operands-first, because LegalizeTypes has to go operands-first, and
LegalizeTypes used to be part of LegalizeOps, but they're now split.
The operands-last order is more natural for several legalization tasks.
For example, it allows lowering code for nodes with floating-point or
vector constants to see those constants directly instead of seeing the
lowered form (often constant-pool loads). This makes some things
somewhat more complicated today, though it ought to allow things to be
simpler in the future. It also fixes some bugs exposed by Legalizing
using RAUW aggressively.

Remove the part of LegalizeOps that attempted to patch up invalid chain
operands on libcalls generated by LegalizeTypes, since it doesn't work
with the new LegalizeOps traversal order. Instead, define what
LegalizeTypes is doing to be correct, and transfer the responsibility
of keeping calls from having overlapping calling sequences into the
scheduler.

Teach the scheduler to model callseq_begin/end pairs as having a
physical register definition/use to prevent calls from having
overlapping calling sequences. This is also somewhat complicated, though
there are ways it might be simplified in the future.

This addresses rdar://9816668, rdar://10043614, rdar://8434668, and others.
Please direct high-level questions about this patch to management.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143177 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-28 01:29:32 +00:00
..
useful-harnesses Teach lit that the .c files in 'test/CodeGen/CellSPU/useful-harnesses' aren't tests. 2009-10-19 03:53:55 +00:00
2009-01-01-BrCond.ll Revert the main portion of r31856. It was causing BranchFolding 2009-10-22 00:03:58 +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
and_ops.ll Eliminate LegalizeOps' LegalizedNodes map and have it just call RAUW 2011-10-28 01:29:32 +00:00
arg_ret.ll Fix memory access lowering on SPU, adding 2010-11-12 10:14:03 +00:00
bigstack.ll Have SPU handle halfvec stores aligned by 8 bytes. 2010-08-09 16:33:00 +00:00
bss.ll Be nice to Xcore and the XMOS assembler and avoid quoting section names 2011-03-04 20:03:14 +00:00
call_indirect.ll Eliminate LegalizeOps' LegalizedNodes map and have it just call RAUW 2011-10-28 01:29:32 +00:00
call.ll Fix SPU BE to use all the available return registers. 2010-08-24 11:50:48 +00:00
crash.ll teach cellspu how to return i8 and i16 from calls, 2010-04-20 05:36:09 +00:00
ctpop.ll Convert more tests to avoid llvm-as. 2009-09-11 18:36:27 +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_ops.ll Division by pow-of-2 is not cheap on SPU, do it with 2010-11-23 13:27:59 +00:00
dp_farith.ll Delete useless trailing semicolons. 2010-01-05 17:55:26 +00:00
eqv.ll manually upgrade a bunch of tests to modern syntax, and remove some that 2011-06-17 03:14:27 +00:00
extract_elt.ll Convert more tests to avoid llvm-as. 2009-09-11 18:36:27 +00:00
fcmp32.ll Allow for 'fcmp ogt' in SPU. 2010-11-24 11:42:17 +00:00
fcmp64.ll Convert more tests to avoid llvm-as. 2009-09-11 18:36:27 +00:00
fdiv.ll Convert more tests to avoid llvm-as. 2009-09-11 18:36:27 +00:00
fneg-fabs.ll Convert more tests to avoid llvm-as. 2009-09-11 18:36:27 +00:00
i8ops.ll Convert more tests to avoid llvm-as. 2009-09-11 18:36:27 +00:00
i64ops.ll Convert more tests to avoid llvm-as. 2009-09-11 18:36:27 +00:00
icmp8.ll Convert more tests to avoid llvm-as. 2009-09-11 18:36:27 +00:00
icmp16.ll Convert more tests to avoid llvm-as. 2009-09-11 18:36:27 +00:00
icmp32.ll Convert more tests to avoid llvm-as. 2009-09-11 18:36:27 +00:00
icmp64.ll Convert more tests to avoid llvm-as. 2009-09-11 18:36:27 +00:00
immed16.ll Convert more tests to avoid llvm-as. 2009-09-11 18:36:27 +00:00
immed32.ll Don't feed 19 bit immediates to ILA. 2010-12-17 09:36:09 +00:00
immed64.ll Convert more tests to avoid llvm-as. 2009-09-11 18:36:27 +00:00
int2fp.ll Convert more tests to avoid llvm-as. 2009-09-11 18:36:27 +00:00
intrinsics_branch.ll Convert more tests to avoid llvm-as. 2009-09-11 18:36:27 +00:00
intrinsics_float.ll Convert more tests to avoid llvm-as. 2009-09-11 18:36:27 +00:00
intrinsics_logical.ll Convert more tests to avoid llvm-as. 2009-09-11 18:36:27 +00:00
jumptable.ll Mark 'branch indirect' instruction as an indirect branch. 2011-10-13 11:40:03 +00:00
loads.ll Allow load from constant on SPU. 2011-03-04 12:00:11 +00:00
mul_ops.ll Teach dag combine to fold the following transformation more aggressively: 2010-01-06 19:38:29 +00:00
mul-with-overflow.ll manually upgrade a bunch of tests to modern syntax, and remove some that 2011-06-17 03:14:27 +00:00
nand.ll Eliminate LegalizeOps' LegalizedNodes map and have it just call RAUW 2011-10-28 01:29:32 +00:00
or_ops.ll Eliminate LegalizeOps' LegalizedNodes map and have it just call RAUW 2011-10-28 01:29:32 +00:00
private.ll make the asmparser reject function and type redefinitions. 'Merging' hasn't been 2011-06-17 07:06:44 +00:00
rotate_ops.ll Fix mistyped CHECK lines. 2011-03-09 22:07:31 +00:00
select_bits.ll Eliminate LegalizeOps' LegalizedNodes map and have it just call RAUW 2011-10-28 01:29:32 +00:00
sext128.ll Allow sign-extending of i8 and i16 to i128 on SPU. 2011-01-20 15:49:06 +00:00
shift_ops.ll Enable element promotion type legalization by deafault. 2011-10-16 20:31:33 +00:00
shuffles.ll Enable element promotion type legalization by deafault. 2011-10-16 20:31:33 +00:00
sp_farith.ll Convert more tests to avoid llvm-as. 2009-09-11 18:36:27 +00:00
stores.ll Allow load from constant on SPU. 2011-03-04 12:00:11 +00:00
storestruct.ll "on the rare occasion the SPU BE produces illegal assembly - it tries to emit an add instruction of the form 'a reg, reg, imm'." 2010-05-04 17:58:46 +00:00
struct_1.ll Eliminate LegalizeOps' LegalizedNodes map and have it just call RAUW 2011-10-28 01:29:32 +00:00
sub_ops.ll Fix encoding of 'sf' and 'sfh' instructions. 2010-05-10 08:13:49 +00:00
trunc.ll Convert more tests to avoid llvm-as. 2009-09-11 18:36:27 +00:00
v2f32.ll don't test for codegen of 'store undef' 2011-04-09 02:31:26 +00:00
v2i32.ll Enable element promotion type legalization by deafault. 2011-10-16 20:31:33 +00:00
vec_const.ll Convert more tests to avoid llvm-as. 2009-09-11 18:36:27 +00:00
vecinsert.ll Fix SPU to cope with vector insertelement to an undef position. 2010-06-09 09:58:17 +00:00