libgomp: Document 'GOMP_teams4'
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / movtf_4.c
blobfaf9703e2b6d14019d5ce0a2ab801ea325234a52
1 /* { dg-do assemble } */
2 /* { dg-require-effective-target large_long_double } */
3 /* { dg-options "-O -mtune=neoverse-v1 --save-temps" } */
4 /* { dg-final { check-function-bodies "**" "" "" } } */
6 #pragma GCC target "+sve"
8 /*
9 ** fpr_to_fpr:
10 ** mov z0.d, z1.d
11 ** ret
13 long double
14 fpr_to_fpr (long double q0, long double q1) [[arm::streaming_compatible]]
16 return q1;
20 ** gpr_to_fpr: { target aarch64_little_endian }
21 ** fmov d0, x0
22 ** fmov v0.d\[1\], x1
23 ** ret
26 ** gpr_to_fpr: { target aarch64_big_endian }
27 ** fmov d0, x1
28 ** fmov v0.d\[1\], x0
29 ** ret
31 long double
32 gpr_to_fpr () [[arm::streaming_compatible]]
34 register long double x0 asm ("x0");
35 asm volatile ("" : "=r" (x0));
36 return x0;
40 ** zero_to_fpr:
41 ** fmov s0, wzr
42 ** ret
44 long double
45 zero_to_fpr () [[arm::streaming_compatible]]
47 return 0;
51 ** fpr_to_gpr: { target aarch64_little_endian }
52 ** (
53 ** fmov x0, d0
54 ** fmov x1, v0.d\[1\]
55 ** |
56 ** fmov x1, v0.d\[1\]
57 ** fmov x0, d0
58 ** )
59 ** ret
62 ** fpr_to_gpr: { target aarch64_big_endian }
63 ** (
64 ** fmov x1, d0
65 ** fmov x0, v0.d\[1\]
66 ** |
67 ** fmov x0, v0.d\[1\]
68 ** fmov x1, d0
69 ** )
70 ** ret
72 void
73 fpr_to_gpr (long double q0) [[arm::streaming_compatible]]
75 register long double x0 asm ("x0");
76 x0 = q0;
77 asm volatile ("" :: "r" (x0));