llvm-6502/lib/CodeGen/SelectionDAG
Nate Begeman ab48be3772 Check in code to scalarize arbitrarily wide packed types for some simple
vector operations (load, add, sub, mul).

This allows us to codegen:
void %foo(<4 x float> * %a) {
entry:
  %tmp1 = load <4 x float> * %a;
  %tmp2 = add <4 x float> %tmp1, %tmp1
  store <4 x float> %tmp2, <4 x float> *%a
  ret void
}

on ppc as:
_foo:
        lfs f0, 12(r3)
        lfs f1, 8(r3)
        lfs f2, 4(r3)
        lfs f3, 0(r3)
        fadds f0, f0, f0
        fadds f1, f1, f1
        fadds f2, f2, f2
        fadds f3, f3, f3
        stfs f0, 12(r3)
        stfs f1, 8(r3)
        stfs f2, 4(r3)
        stfs f3, 0(r3)
        blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24484 91177308-0d34-0410-b5e6-96231b3b80d8
2005-11-22 18:16:00 +00:00
..
DAGCombiner.cpp Fix operator precedence bug caught by VC++. 2005-11-12 00:59:01 +00:00
LegalizeDAG.cpp Check in code to scalarize arbitrarily wide packed types for some simple 2005-11-22 18:16:00 +00:00
Makefile Change Library Names Not To Conflict With Others When Installed 2004-10-27 23:18:45 +00:00
ScheduleDAG.cpp Switch the allnodes list from a vector of pointers to an ilist of nodes.This eliminates the vector, allows constant time removal of a node froma graph, and makes iteration over the all nodes list stable when adding 2005-11-09 23:47:37 +00:00
SelectionDAG.cpp Check in code to scalarize arbitrarily wide packed types for some simple 2005-11-22 18:16:00 +00:00
SelectionDAGISel.cpp Check in code to scalarize arbitrarily wide packed types for some simple 2005-11-22 18:16:00 +00:00
SelectionDAGPrinter.cpp more progress towards bug 291 being finished. Patch by Owen Anderson, 2005-11-20 03:45:52 +00:00
TargetLowering.cpp Rather than attempting to legalize 1 x float, make sure the SD ISel never 2005-11-22 01:29:36 +00:00