llvm-6502/lib/Transforms
Chris Lattner b7300fa8d2 Implement Transforms/InstCombine/vec_extract_elt.ll, transforming:
define i32 @test(float %f) {
        %tmp7 = insertelement <4 x float> undef, float %f, i32 0
        %tmp17 = bitcast <4 x float> %tmp7 to <4 x i32>
        %tmp19 = extractelement <4 x i32> %tmp17, i32 0
        ret i32 %tmp19
}

into:

define i32 @test(float %f) {
        %tmp19 = bitcast float %f to i32                ; <i32> [#uses=1]
        ret i32 %tmp19
}

On PPC, this is the difference between:

_test:
        mfspr r2, 256
        oris r3, r2, 8192
        mtspr 256, r3
        stfs f1, -16(r1)
        addi r3, r1, -16
        addi r4, r1, -32
        lvx v2, 0, r3
        stvx v2, 0, r4
        lwz r3, -32(r1)
        mtspr 256, r2
        blr

and:

_test:
        stfs f1, -4(r1)
        nop
        nop
        nop
        lwz r3, -4(r1)
        blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36025 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-14 23:02:14 +00:00
..
Hello Remove use of SlowOperationInformer. 2007-04-13 18:58:18 +00:00
Instrumentation remove reoptimizer-specific passes 2007-02-20 05:31:49 +00:00
IPO avoid iterator invalidation. 2007-04-14 18:06:52 +00:00
Scalar Implement Transforms/InstCombine/vec_extract_elt.ll, transforming: 2007-04-14 23:02:14 +00:00
Utils avoid copying sets and vectors around. 2007-04-14 22:10:17 +00:00
Makefile Build Hello by default so it can be used in test cases. 2007-04-11 21:03:37 +00:00