1 /* { dg-do assemble } */
2 /* { dg-options "-O -mtune=neoverse-v1 --save-temps" } */
3 /* { dg-final { check-function-bodies "**" "" "" } } */
4
5 #pragma GCC target "+nothing+nosimd+fp"
6
7 typedef unsigned char v8qi __attribute__((vector_size(8)));
8
9 /*
10 ** fpr_to_fpr:
11 ** fmov d0, d1
12 ** ret
13 */
14 v8qi
15 fpr_to_fpr (v8qi q0, v8qi q1)
16 {
17 return q1;
18 }
19
20 /*
21 ** gpr_to_fpr:
22 ** fmov d0, x0
23 ** ret
24 */
25 v8qi
26 gpr_to_fpr ()
27 {
28 register v8qi x0 asm ("x0");
29 asm volatile ("" : "=r" (x0));
30 return x0;
31 }
32
33 /*
34 ** zero_to_fpr:
35 ** fmov d0, xzr
36 ** ret
37 */
38 v8qi
39 zero_to_fpr ()
40 {
41 return (v8qi) {};
42 }
43
44 /*
45 ** fpr_to_gpr:
46 ** fmov x0, d0
47 ** ret
48 */
49 void
50 fpr_to_gpr (v8qi q0)
51 {
52 register v8qi x0 asm ("x0");
53 x0 = q0;
54 asm volatile ("" :: "r" (x0));
55 }
56
57 /*
58 ** gpr_to_gpr:
59 ** mov x0, x1
60 ** ret
61 */
62 void
63 gpr_to_gpr ()
64 {
65 register v8qi x0 asm ("x0");
66 register v8qi x1 asm ("x1");
67 asm volatile ("" : "=r" (x1));
68 x0 = x1;
69 asm volatile ("" :: "r" (x0));
70 }