Fix a crash where ConstantVec nodes were being generated with the wrong
authorNate Begeman <natebegeman@mac.com>
Wed, 7 Dec 2005 19:48:11 +0000 (19:48 +0000)
committerNate Begeman <natebegeman@mac.com>
Wed, 7 Dec 2005 19:48:11 +0000 (19:48 +0000)
commitcc827e60b67b2cbcf08a37b119e68081e4171b8a
treea92f56150edfae3684ceb2c637831e3a6c8dd046
parentcc2210b4fa9debfaafa2d385549b0c30448e9c12
Fix a crash where ConstantVec nodes were being generated with the wrong
type when the target did not support them.  Also teach Legalize how to
expand ConstantVecs.

This allows us to generate

_test:
        lwz r2, 12(r3)
        lwz r4, 8(r3)
        lwz r5, 4(r3)
        lwz r6, 0(r3)
        addi r2, r2, 4
        addi r4, r4, 3
        addi r5, r5, 2
        addi r6, r6, 1
        stw r2, 12(r3)
        stw r4, 8(r3)
        stw r5, 4(r3)
        stw r6, 0(r3)
        blr

For:

void %test(%v4i *%P) {
        %T = load %v4i* %P
        %S = add %v4i %T, <int 1, int 2, int 3, int 4>
        store %v4i %S, %v4i * %P
        ret void
}

On PowerPC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24633 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp