| /* Make sure the vector load and zero instruction is being used for |
| initializing a 32 bit vector with the first element taken from |
| memory. */ |
| |
| /* { dg-do run } */ |
| /* { dg-options "-O3 -mzarch -march=arch12 --save-temps" } */ |
| /* { dg-require-effective-target s390_vxe } */ |
| |
| typedef unsigned int uv4si __attribute__((vector_size(16))); |
| |
| uv4si __attribute__((noinline)) |
| foo (int *a) |
| { |
| return (uv4si){ *a, 0, 0, 0 }; |
| } |
| |
| int |
| main () |
| { |
| int b = 4; |
| uv4si a = (uv4si){ 1, 2, 3, 4 }; |
| |
| a = foo (&b); |
| |
| if (a[0] != 4 || a[1] != 0 || a[2] != 0 || a[3] != 0) |
| __builtin_abort (); |
| |
| return 0; |
| } |
| /* { dg-final { scan-assembler-times "vllezlf\t%v24,0\\(%r2\\)" 1 } } */ |