libstdc++: Move gcc.gnu.org and sourceware.org links to https
[official-gcc.git] / gcc / testsuite / gcc.target / arm / bfloat16_scalar_1_2.c
blob8293cafcc147c958d6adebcf058d76e00f8c29c0
1 /* { dg-do assemble { target { arm*-*-* } } } */
2 /* { dg-require-effective-target arm_v8_neon_ok } */
3 /* { dg-require-effective-target arm_v8_2a_bf16_neon_ok } */
4 /* { dg-additional-options "-march=armv8.2-a+bf16 -mfloat-abi=softfp -mfpu=auto" } */
5 /* { dg-additional-options "-O3 --save-temps -std=gnu90" } */
6 /* { dg-final { check-function-bodies "**" "" } } */
8 #include <arm_bf16.h>
11 **stacktest1:
12 ** ...
13 ** strh r[0-9]+, \[r[0-9]+\] @ __bf16
14 ** ldrh r[0-9]+, \[sp, #[0-9]+\] @ __bf16
15 ** ...
16 ** bx lr
18 bfloat16_t stacktest1 (bfloat16_t __a)
20 volatile bfloat16_t b = __a;
21 return b;
25 **bfloat_mov_ww:
26 ** ...
27 ** vmov.f32 s1, s15
28 ** ...
29 ** bx lr
31 void bfloat_mov_ww (void)
33 register bfloat16_t x asm ("s15");
34 register bfloat16_t y asm ("s1");
35 asm volatile ("#foo" : "=t" (x));
36 y = x;
37 asm volatile ("#foo" :: "t" (y));
41 **bfloat_mov_rw:
42 ** ...
43 ** vmov s1, r4
44 ** ...
45 ** bx lr
47 void bfloat_mov_rw (void)
49 register bfloat16_t x asm ("r4");
50 register bfloat16_t y asm ("s1");
51 asm volatile ("#foo" : "=r" (x));
52 y = x;
53 asm volatile ("#foo" :: "t" (y));
57 **bfloat_mov_wr:
58 ** ...
59 ** vmov r4, s1
60 ** ...
61 ** bx lr
63 void bfloat_mov_wr (void)
65 register bfloat16_t x asm ("s1");
66 register bfloat16_t y asm ("r4");
67 asm volatile ("#foo" : "=t" (x));
68 y = x;
69 asm volatile ("#foo" :: "r" (y));
73 **bfloat_mov_rr:
74 ** ...
75 ** mov r4, r5 @ __bf16
76 ** ...
77 ** bx lr
79 void bfloat_mov_rr (void)
81 register bfloat16_t x asm ("r5");
82 register bfloat16_t y asm ("r4");
83 asm volatile ("#foo" : "=r" (x));
84 y = x;
85 asm volatile ("#foo" :: "r" (y));
89 **bfloat_mov_rm:
90 ** ...
91 ** strh r4, \[.*\] @ __bf16
92 ** ...
93 ** bx lr
95 void bfloat_mov_rm (void)
97 register bfloat16_t x asm ("r4");
98 volatile bfloat16_t y;
99 asm volatile ("#foo" : "=r" (x));
100 y = x;
101 asm volatile ("#foo" : : : "memory");
105 **bfloat_mov_mr:
106 ** ...
107 ** ldrh r4, \[.*\] @ __bf16
108 ** ...
109 ** bx lr
111 void bfloat_mov_mr (void)
113 volatile bfloat16_t x;
114 register bfloat16_t y asm ("r4");
115 asm volatile ("#foo" : : : "memory");
116 y = x;
117 asm volatile ("#foo" :: "r" (y));