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 #include <stdint.h>
8
9 /*
10 ** fpr_to_fpr:
11 ** fmov s0, s1
12 ** ret
13 */
14 void
15 fpr_to_fpr (void)
16 {
17 register uint8_t q0 asm ("q0");
18 register uint8_t q1 asm ("q1");
19 asm volatile ("" : "=w" (q1));
20 q0 = q1;
21 asm volatile ("" :: "w" (q0));
22 }
23
24 /*
25 ** gpr_to_fpr:
26 ** fmov s0, w0
27 ** ret
28 */
29 void
30 gpr_to_fpr (uint8_t w0)
31 {
32 register uint8_t q0 asm ("q0");
33 q0 = w0;
34 asm volatile ("" :: "w" (q0));
35 }
36
37 /*
38 ** zero_to_fpr:
39 ** fmov s0, wzr
40 ** ret
41 */
42 void
43 zero_to_fpr ()
44 {
45 register uint8_t q0 asm ("q0");
46 q0 = 0;
47 asm volatile ("" :: "w" (q0));
48 }
49
50 /*
51 ** fpr_to_gpr:
52 ** fmov w0, s0
53 ** ret
54 */
55 uint8_t
56 fpr_to_gpr ()
57 {
58 register uint8_t q0 asm ("q0");
59 asm volatile ("" : "=w" (q0));
60 return q0;
61 }