/* { dg-options "-O3" } */ #pragma GCC target "+nosve" int test(unsigned array[4][4]); int foo(unsigned short *a, unsigned long n) { unsigned array[4][4]; for (unsigned i = 0; i < 4; i++, a += n) { array[i][0] = a[0] << 6; array[i][1] = a[1] << 6; array[i][2] = a[2] << 6; array[i][3] = a[3] << 6; } return test(array); } /* { dg-final { scan-assembler-times {\tushll\t} 4 } } */ /* { dg-final { scan-assembler-not {\tzip.\t} } } */ /* { dg-final { scan-assembler-not {\tins\t} } } */ /* { dg-final { scan-assembler-not {\tshl\t} } } */