[RS6000] dg-do !compile and scan-assembler
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / direct-move-vector.c
blob16f2674fc7117e25e1c60f1d7f0b7f029ccc5be1
1 /* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */
2 /* { dg-require-effective-target powerpc_p9vector_ok } */
3 /* { dg-options "-mdejagnu-cpu=power9 -O2" } */
5 /* Check code generation for direct move for long types. */
7 void
8 test (vector double *p)
10 vector double v1 = *p;
11 vector double v2;
12 vector double v3;
13 vector double v4;
15 /* Force memory -> FPR load. */
16 __asm__ (" # reg %x0" : "+d" (v1));
18 /* force VSX -> GPR direct move. */
19 v2 = v1;
20 __asm__ (" # reg %0" : "+r" (v2));
22 /* Force GPR -> Altivec direct move. */
23 v3 = v2;
24 __asm__ (" # reg %x0" : "+v" (v3));
25 *p = v3;
28 /* { dg-final { scan-assembler "mfvsrd" } } */
29 /* { dg-final { scan-assembler "mfvsrld" } } */
30 /* { dg-final { scan-assembler "mtvsrdd" } } */