; Test that vectors are scalarized/lowered correctly.
; RUN: llc < %s -mtriple=i686-- -mcpu=i386
; RUN: llc < %s -mtriple=i686-- -mcpu=yonah

%d8 = type <8 x double>
%f1 = type <1 x float>
%f2 = type <2 x float>
%f4 = type <4 x float>
%f8 = type <8 x float>
%i4 = type <4 x i32>


;;; TEST HANDLING OF VARIOUS VECTOR SIZES

define void @test_f1(ptr %P, ptr %Q, ptr %S) {
        %p = load %f1, ptr %P               ; <%f1> [#uses=1]
        %q = load %f1, ptr %Q               ; <%f1> [#uses=1]
        %R = fadd %f1 %p, %q             ; <%f1> [#uses=1]
        store %f1 %R, ptr %S
        ret void
}

define void @test_f2(ptr %P, ptr %Q, ptr %S) {
        %p = load %f2, ptr %P               ; <%f2> [#uses=1]
        %q = load %f2, ptr %Q               ; <%f2> [#uses=1]
        %R = fadd %f2 %p, %q             ; <%f2> [#uses=1]
        store %f2 %R, ptr %S
        ret void
}

define void @test_f4(ptr %P, ptr %Q, ptr %S) {
        %p = load %f4, ptr %P               ; <%f4> [#uses=1]
        %q = load %f4, ptr %Q               ; <%f4> [#uses=1]
        %R = fadd %f4 %p, %q             ; <%f4> [#uses=1]
        store %f4 %R, ptr %S
        ret void
}

define void @test_f8(ptr %P, ptr %Q, ptr %S) {
        %p = load %f8, ptr %P               ; <%f8> [#uses=1]
        %q = load %f8, ptr %Q               ; <%f8> [#uses=1]
        %R = fadd %f8 %p, %q             ; <%f8> [#uses=1]
        store %f8 %R, ptr %S
        ret void
}

define void @test_fmul(ptr %P, ptr %Q, ptr %S) {
        %p = load %f8, ptr %P               ; <%f8> [#uses=1]
        %q = load %f8, ptr %Q               ; <%f8> [#uses=1]
        %R = fmul %f8 %p, %q             ; <%f8> [#uses=1]
        store %f8 %R, ptr %S
        ret void
}

define void @test_div(ptr %P, ptr %Q, ptr %S) {
        %p = load %f8, ptr %P               ; <%f8> [#uses=1]
        %q = load %f8, ptr %Q               ; <%f8> [#uses=1]
        %R = fdiv %f8 %p, %q            ; <%f8> [#uses=1]
        store %f8 %R, ptr %S
        ret void
}

;;; TEST VECTOR CONSTRUCTS

define void @test_cst(ptr %P, ptr %S) {
        %p = load %f4, ptr %P               ; <%f4> [#uses=1]
        %R = fadd %f4 %p, < float 0x3FB99999A0000000, float 1.000000e+00, float 2.000000e+00, float 4.500000e+00 >             ; <%f4> [#uses=1]
        store %f4 %R, ptr %S
        ret void
}

define void @test_zero(ptr %P, ptr %S) {
        %p = load %f4, ptr %P               ; <%f4> [#uses=1]
        %R = fadd %f4 %p, zeroinitializer                ; <%f4> [#uses=1]
        store %f4 %R, ptr %S
        ret void
}

define void @test_undef(ptr %P, ptr %S) {
        %p = load %f4, ptr %P               ; <%f4> [#uses=1]
        %R = fadd %f4 %p, undef          ; <%f4> [#uses=1]
        store %f4 %R, ptr %S
        ret void
}

define void @test_constant_insert(ptr %S) {
        %R = insertelement %f4 zeroinitializer, float 1.000000e+01, i32 0               ; <%f4> [#uses
        store %f4 %R, ptr %S
        ret void
}

define void @test_variable_buildvector(float %F, ptr %S) {
        %R = insertelement %f4 zeroinitializer, float %F, i32 0         ; <%f4> [#uses=1]
        store %f4 %R, ptr %S
        ret void
}

define void @test_scalar_to_vector(float %F, ptr %S) {
        %R = insertelement %f4 undef, float %F, i32 0           ; <%f4> [#uses=1]
        store %f4 %R, ptr %S
        ret void
}

define float @test_extract_elt(ptr %P) {
        %p = load %f8, ptr %P               ; <%f8> [#uses=1]
        %R = extractelement %f8 %p, i32 3               ; <float> [#uses=1]
        ret float %R
}

define double @test_extract_elt2(ptr %P) {
        %p = load %d8, ptr %P               ; <%d8> [#uses=1]
        %R = extractelement %d8 %p, i32 3               ; <double> [#uses=1]
        ret double %R
}

define void @test_cast_1(ptr %b, ptr %a) {
        %tmp = load %f4, ptr %b             ; <%f4> [#uses=1]
        %tmp2 = fadd %f4 %tmp, < float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 4.000000e+00 >              ; <%f4> [#uses=1]
        %tmp3 = bitcast %f4 %tmp2 to %i4                ; <%i4> [#uses=1]
        %tmp4 = add %i4 %tmp3, < i32 1, i32 2, i32 3, i32 4 >           ; <%i4> [#uses=1]
        store %i4 %tmp4, ptr %a
        ret void
}

define void @test_cast_2(ptr %a, ptr %b) {
        %T = load %f8, ptr %a               ; <%f8> [#uses=1]
        %T2 = bitcast %f8 %T to <8 x i32>               ; <<8 x i32>> [#uses=1]
        store <8 x i32> %T2, ptr %b
        ret void
}


;;; TEST IMPORTANT IDIOMS

define void @splat(ptr %P, ptr %Q, float %X) {
        %tmp = insertelement %f4 undef, float %X, i32 0         ; <%f4> [#uses=1]
        %tmp2 = insertelement %f4 %tmp, float %X, i32 1         ; <%f4> [#uses=1]
        %tmp4 = insertelement %f4 %tmp2, float %X, i32 2                ; <%f4> [#uses=1]
        %tmp6 = insertelement %f4 %tmp4, float %X, i32 3                ; <%f4> [#uses=1]
        %q = load %f4, ptr %Q               ; <%f4> [#uses=1]
        %R = fadd %f4 %q, %tmp6          ; <%f4> [#uses=1]
        store %f4 %R, ptr %P
        ret void
}

define void @splat_i4(ptr %P, ptr %Q, i32 %X) {
        %tmp = insertelement %i4 undef, i32 %X, i32 0           ; <%i4> [#uses=1]
        %tmp2 = insertelement %i4 %tmp, i32 %X, i32 1           ; <%i4> [#uses=1]
        %tmp4 = insertelement %i4 %tmp2, i32 %X, i32 2          ; <%i4> [#uses=1]
        %tmp6 = insertelement %i4 %tmp4, i32 %X, i32 3          ; <%i4> [#uses=1]
        %q = load %i4, ptr %Q               ; <%i4> [#uses=1]
        %R = add %i4 %q, %tmp6          ; <%i4> [#uses=1]
        store %i4 %R, ptr %P
        ret void
}

