1 /* { dg-do compile { target { ! ia32 } } } */
2 /* { dg-options "-O2 -fomit-frame-pointer -march=x86-64" } */
3 
4 struct S
5 {
6   long long s1 __attribute__ ((aligned (8)));
7   unsigned s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14;
8 };
9 
10 extern struct S a[];
11 
12 void bar (struct S);
13 
14 void
foo(void)15 foo (void)
16 {
17   bar (a[0]);
18 }
19 
20 /* { dg-final { scan-assembler-not "pushq" } } */
21 /* { dg-final { scan-assembler-times "movups\[\\t \]%xmm\[0-9\]+, \\(%\[\^,\]+\\)" 1 } } */
22 /* { dg-final { scan-assembler-times "movups\[\\t \]%xmm\[0-9\]+, 16\\(%\[\^,\]+\\)" 1 } } */
23 /* { dg-final { scan-assembler-times "movups\[\\t \]%xmm\[0-9\]+, 32\\(%\[\^,\]+\\)" 1 } } */
24 /* { dg-final { scan-assembler-times "movups\[\\t \]%xmm\[0-9\]+, 48\\(%\[\^,\]+\\)" 1 } } */
25