; Test that vectors are scalarized/lowered correctly.
; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32-- -mcpu=g5 > %t
; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32-- -mcpu=g3 >> %t

%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
}

define void @test_rem(ptr %P, ptr %Q, ptr %S) {
        %p = load %f8, ptr %P               ; <%f8> [#uses=1]
        %q = load %f8, ptr %Q               ; <%f8> [#uses=1]
        %R = frem %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=1]
        store %f4 %R, ptr %S
        ret void
}

define void @test_variable_buildvector(float %F, ptr %S) {
        %R = insertelement %f4 zeroinitializer, float %F, i32 0        
        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           
        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 >           
        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>               
        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        
        %tmp2 = insertelement %f4 %tmp, float %X, i32 1       
        %tmp4 = insertelement %f4 %tmp2, float %X, i32 2    
        %tmp6 = insertelement %f4 %tmp4, float %X, i32 3   
        %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          
        %tmp2 = insertelement %i4 %tmp, i32 %X, i32 1         
        %tmp4 = insertelement %i4 %tmp2, i32 %X, i32 2       
        %tmp6 = insertelement %i4 %tmp4, i32 %X, i32 3     
        %q = load %i4, ptr %Q               ; <%i4> [#uses=1]
        %R = add %i4 %q, %tmp6          ; <%i4> [#uses=1]
        store %i4 %R, ptr %P
        ret void
}

