| /* { dg-do compile } */ |
| /* { dg-options "-O" } */ |
| /* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */ |
| |
| /* |
| ** zero_q: |
| ** movi v0.2d, #0 |
| ** ret |
| */ |
| void |
| zero_q () |
| { |
| register _Float128 q0 asm ("q0"); |
| q0 = 0; |
| asm volatile ("" :: "w" (q0)); |
| } |
| |
| /* |
| ** load_q: |
| ** ldr q0, \[x0\] |
| ** ret |
| */ |
| void |
| load_q (_Float128 *ptr) |
| { |
| register _Float128 q0 asm ("q0"); |
| q0 = *ptr; |
| asm volatile ("" :: "w" (q0)); |
| } |
| |
| /* |
| ** store_q: |
| ** str q0, \[x0\] |
| ** ret |
| */ |
| void |
| store_q (_Float128 *ptr) |
| { |
| register _Float128 q0 asm ("q0"); |
| asm volatile ("" : "=w" (q0)); |
| *ptr = q0; |
| } |
| |
| /* |
| ** zero_x: |
| ** ( |
| ** mov x0, #?0 |
| ** mov x1, #?0 |
| ** | |
| ** mov x1, #?0 |
| ** mov x0, #?0 |
| ** ) |
| ** ret |
| */ |
| void |
| zero_x () |
| { |
| register _Float128 x0 asm ("x0"); |
| x0 = 0; |
| asm volatile ("" :: "r" (x0)); |
| } |
| |
| /* |
| ** load_x: |
| ** ldp x2, x3, \[x0\] |
| ** ret |
| */ |
| void |
| load_x (_Float128 *ptr) |
| { |
| register _Float128 x2 asm ("x2"); |
| x2 = *ptr; |
| asm volatile ("" :: "r" (x2)); |
| } |
| |
| /* |
| ** store_x: |
| ** stp x2, x3, \[x0\] |
| ** ret |
| */ |
| void |
| store_x (_Float128 *ptr) |
| { |
| register _Float128 x2 asm ("x2"); |
| asm volatile ("" : "=r" (x2)); |
| *ptr = x2; |
| } |