1/* { dg-do run } */ 2/* { dg-options "-O3 -mzarch -march=z13 --save-temps" } */ 3/* { dg-require-effective-target vector } */ 4/* { dg-require-effective-target int128 } */ 5 6typedef unsigned char uv16qi __attribute__((vector_size(16))); 7typedef unsigned short uv8hi __attribute__((vector_size(16))); 8typedef unsigned int uv4si __attribute__((vector_size(16))); 9typedef unsigned long long uv2di __attribute__((vector_size(16))); 10typedef unsigned __int128 uv1ti __attribute__((vector_size(16))); 11 12uv2di __attribute__((noinline)) 13foo1 () 14{ 15 return (uv2di){ 0xff00ff00ff00ff00, 0x00ff00ff00ff00ff }; 16} 17/* { dg-final { scan-assembler-times "vgbm\t%v24,43605" 1 } } */ 18 19uv4si __attribute__((noinline)) 20foo2 () 21{ 22 return (uv4si){ 0xff0000ff, 0x0000ffff, 0xffff0000, 0x00ffff00 }; 23} 24/* { dg-final { scan-assembler-times "vgbm\t%v24,37830" 1 } } */ 25 26uv8hi __attribute__((noinline)) 27foo3a () 28{ 29 return (uv8hi){ 0xff00, 0xff00, 0xff00, 0xff00, 30 0xff00, 0xff00, 0xff00, 0xff00 }; 31} 32/* { dg-final { scan-assembler-times "vgbm\t%v24,43690" 1 } } */ 33 34uv8hi __attribute__((noinline)) 35foo3b () 36{ 37 return (uv8hi){ 0x00ff, 0x00ff, 0x00ff, 0x00ff, 38 0x00ff, 0x00ff, 0x00ff, 0x00ff }; 39} 40/* { dg-final { scan-assembler-times "vgbm\t%v24,21845" 1 } } */ 41 42uv16qi __attribute__((noinline)) 43foo4 () 44{ 45 return (uv16qi){ 0xff, 0xff, 0xff, 0xff, 46 0, 0, 0, 0, 47 0xff, 0, 0xff, 0, 48 0, 0xff, 0, 0xff }; 49} 50 51uv1ti __attribute__((noinline)) 52foo5 () 53{ 54 return (uv1ti){ 0xff00ff00ff00ff00ULL }; 55} 56 57/* { dg-final { scan-assembler-times "vgbm\t%v24,61605" 1 } } */ 58 59int 60main () 61{ 62 if (foo1()[1] != 0x00ff00ff00ff00ffULL) 63 __builtin_abort (); 64 65 if (foo2()[1] != 0x0000ffff) 66 __builtin_abort (); 67 68 if (foo3a()[1] != 0xff00) 69 __builtin_abort (); 70 71 if (foo3b()[1] != 0x00ff) 72 __builtin_abort (); 73 74 if (foo4()[1] != 0xff) 75 __builtin_abort (); 76 77 if (foo5()[0] != 0xff00ff00ff00ff00ULL) 78 __builtin_abort (); 79 80 return 0; 81} 82 83/* { dg-final { cleanup-saved-temps } } */ 84