1/* { dg-do run } */ 2/* { dg-options "-O3 -mzarch -march=z13 --save-temps" } */ 3/* { dg-require-effective-target vector } */ 4 5typedef unsigned char uv16qi __attribute__((vector_size(16))); 6typedef unsigned short uv8hi __attribute__((vector_size(16))); 7typedef unsigned int uv4si __attribute__((vector_size(16))); 8typedef unsigned long long uv2di __attribute__((vector_size(16))); 9 10uv2di __attribute__((noinline)) 11foo1 () 12{ 13 return (uv2di){ 0x7f0f, 0x7f0f }; 14} 15/* { dg-final { scan-assembler-times "vrepig\t%v24,32527" 1 } } */ 16 17uv4si __attribute__((noinline)) 18foo2 () 19{ 20 return (uv4si){ 0x7f0f, 0x7f0f, 0x7f0f, 0x7f0f }; 21} 22/* { dg-final { scan-assembler-times "vrepif\t%v24,32527" 1 } } */ 23 24uv8hi __attribute__((noinline)) 25foo3 () 26{ 27 return (uv8hi){ 0x7f0f, 0x7f0f, 0x7f0f, 0x7f0f, 28 0x7f0f, 0x7f0f, 0x7f0f, 0x7f0f }; 29} 30/* { dg-final { scan-assembler-times "vrepih\t%v24,32527" 1 } } */ 31 32uv16qi __attribute__((noinline)) 33foo4 () 34{ 35 return (uv16qi){ 0x77, 0x77, 0x77, 0x77, 36 0x77, 0x77, 0x77, 0x77, 37 0x77, 0x77, 0x77, 0x77, 38 0x77, 0x77, 0x77, 0x77 }; 39} 40/* { dg-final { scan-assembler-times "vrepib\t%v24,119" 1 } } */ 41 42int 43main () 44{ 45 if (foo1()[1] != 0x7f0f) 46 __builtin_abort (); 47 48 if (foo2()[1] != 0x7f0f) 49 __builtin_abort (); 50 51 if (foo3()[1] != 0x7f0f) 52 __builtin_abort (); 53 54 if (foo4()[1] != 0x77) 55 __builtin_abort (); 56 57 return 0; 58} 59