1 /* { dg-do compile } */
2 /* { dg-options "-O" } */
3 /* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
4
5 /*
6 ** zero_q:
7 ** movi v0.2d, #0
8 ** ret
9 */
10 void
11 zero_q ()
12 {
13 register _Float128 q0 asm ("q0");
14 q0 = 0;
15 asm volatile ("" :: "w" (q0));
16 }
17
18 /*
19 ** load_q:
20 ** ldr q0, \[x0\]
21 ** ret
22 */
23 void
24 load_q (_Float128 *ptr)
25 {
26 register _Float128 q0 asm ("q0");
27 q0 = *ptr;
28 asm volatile ("" :: "w" (q0));
29 }
30
31 /*
32 ** store_q:
33 ** str q0, \[x0\]
34 ** ret
35 */
36 void
37 store_q (_Float128 *ptr)
38 {
39 register _Float128 q0 asm ("q0");
40 asm volatile ("" : "=w" (q0));
41 *ptr = q0;
42 }
43
44 /*
45 ** zero_x:
46 ** (
47 ** mov x0, #?0
48 ** mov x1, #?0
49 ** |
50 ** mov x1, #?0
51 ** mov x0, #?0
52 ** )
53 ** ret
54 */
55 void
56 zero_x ()
57 {
58 register _Float128 x0 asm ("x0");
59 x0 = 0;
60 asm volatile ("" :: "r" (x0));
61 }
62
63 /*
64 ** load_x:
65 ** ldp x2, x3, \[x0\]
66 ** ret
67 */
68 void
69 load_x (_Float128 *ptr)
70 {
71 register _Float128 x2 asm ("x2");
72 x2 = *ptr;
73 asm volatile ("" :: "r" (x2));
74 }
75
76 /*
77 ** store_x:
78 ** stp x2, x3, \[x0\]
79 ** ret
80 */
81 void
82 store_x (_Float128 *ptr)
83 {
84 register _Float128 x2 asm ("x2");
85 asm volatile ("" : "=r" (x2));
86 *ptr = x2;
87 }