1 /* { dg-do assemble } */
2 /* { dg-options "-O --save-temps" } */
3 /* { dg-final { check-function-bodies "**" "" "" } } */
4
5 #pragma GCC target "+nothing+nosimd+fp"
6
7 /*
8 ** fpr_to_fpr:
9 ** fmov d0, d1
10 ** ret
11 */
12 double
13 fpr_to_fpr (double q0, double q1)
14 {
15 return q1;
16 }
17
18 /*
19 ** gpr_to_fpr:
20 ** fmov d0, x0
21 ** ret
22 */
23 double
24 gpr_to_fpr ()
25 {
26 register double x0 asm ("x0");
27 asm volatile ("" : "=r" (x0));
28 return x0;
29 }
30
31 /*
32 ** zero_to_fpr:
33 ** fmov d0, xzr
34 ** ret
35 */
36 double
37 zero_to_fpr ()
38 {
39 return 0;
40 }
41
42 /*
43 ** fpr_to_gpr:
44 ** fmov x0, d0
45 ** ret
46 */
47 void
48 fpr_to_gpr (double q0)
49 {
50 register double x0 asm ("x0");
51 x0 = q0;
52 asm volatile ("" :: "r" (x0));
53 }