| /* { dg-do compile { target { powerpc*-*-* } } } */ |
| /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ |
| /* { dg-require-effective-target powerpc_p8vector_ok } */ |
| /* { dg-options "-mcpu=power8 -O2 -mupper-regs-df -mupper-regs-sf" } */ |
| |
| float load_sf (float *p) |
| { |
| float f = *p; |
| __asm__ ("# reg %x0" : "+v" (f)); |
| return f; |
| } |
| |
| double load_df (double *p) |
| { |
| double d = *p; |
| __asm__ ("# reg %x0" : "+v" (d)); |
| return d; |
| } |
| |
| double load_dfsf (float *p) |
| { |
| double d = (double) *p; |
| __asm__ ("# reg %x0" : "+v" (d)); |
| return d; |
| } |
| |
| void store_sf (float *p, float f) |
| { |
| __asm__ ("# reg %x0" : "+v" (f)); |
| *p = f; |
| } |
| |
| void store_df (double *p, double d) |
| { |
| __asm__ ("# reg %x0" : "+v" (d)); |
| *p = d; |
| } |
| |
| /* { dg-final { scan-assembler "lxsspx" } } */ |
| /* { dg-final { scan-assembler "lxsdx" } } */ |
| /* { dg-final { scan-assembler "stxsspx" } } */ |
| /* { dg-final { scan-assembler "stxsdx" } } */ |