/* APPLE LOCAL file AltiVec */
/* { dg-do compile { target powerpc*-*-darwin* } } */
/* { dg-options "-O -faltivec" } */
/* { dg-final { scan-assembler "vspltisw v2,1" } } */
/* { dg-final { scan-assembler "vspltisw v3,2" } } */
/* { dg-final { scan-assembler "vspltisw v4,3" } } */
/* { dg-final { scan-assembler "vspltisw v5,4" } } */
/* { dg-final { scan-assembler "vspltisw v6,5" } } */
/* { dg-final { scan-assembler "vspltisw v7,6" } } */
/* { dg-final { scan-assembler "vspltisw v8,7" } } */
/* { dg-final { scan-assembler "vspltisw v9,8" } } */
/* { dg-final { scan-assembler "vspltisw v10,9" } } */
/* { dg-final { scan-assembler "vspltisw v11,10" } } */
/* { dg-final { scan-assembler "vspltisw v12,11" } } */
/* { dg-final { scan-assembler "vspltisw v13,12" } } */

void
foo (vector signed int v0, vector signed int v1, vector signed int v2,
     vector signed int v3, vector signed int v4, vector signed int v5,
     vector signed int v6, vector signed int v7, vector signed int v8,
     vector signed int v9, vector signed int v10, vector signed int v11,
     vector signed int v12,
     int z, double u);

int main(void) 
{
  foo ((vector signed int) ( 1 ), (vector signed int) ( 2 ), 
       (vector signed int) ( 3 ), 
       (vector signed int) ( 4 ), (vector signed int) ( 5 ), 
       (vector signed int) ( 6 ), (vector signed int) ( 7 ), 
       (vector signed int) ( 8 ), (vector signed int) ( 9 ), 
       (vector signed int) ( 10 ), (vector signed int) ( 11 ), 
       (vector signed int) ( 12 ), (vector signed int) ( 13 ),
       20, 3.0);
}

    
		 
		 
