1 /* { dg-do assemble { target { arm*-*-* } } } */
2 /* { dg-require-effective-target arm_hard_ok } */
3 /* { dg-require-effective-target arm_v8_2a_bf16_neon_ok } */
4 /* { dg-add-options arm_v8_2a_bf16_neon } */
5 /* { dg-additional-options "-O3 --save-temps -std=gnu90 -mfloat-abi=hard" } */
6 /* { dg-final { check-function-bodies "**" "" } } */
13 ** vst1.16 {d[0-9]+\[[0-9]+\]}, \[r[0-9]+\]
14 ** vld1.16 {d[0-9]+\[[0-9]+\]}, \[r[0-9]+\]
18 bfloat16_t
stacktest1 (bfloat16_t __a
)
20 volatile bfloat16_t b
= __a
;
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
));
37 asm volatile ("#foo" :: "t" (y
));
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
));
53 asm volatile ("#foo" :: "t" (y
));
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
));
69 asm volatile ("#foo" :: "r" (y
));
75 ** mov r4, r5 @ __bf16
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
));
85 asm volatile ("#foo" :: "r" (y
));
91 ** strh r4, \[.*\] @ __bf16
95 void bfloat_mov_rm (void)
97 register bfloat16_t x
asm ("r4");
98 volatile bfloat16_t y
;
99 asm volatile ("#foo" : "=r" (x
));
101 asm volatile ("#foo" : : : "memory");
107 ** ldrh r4, \[.*\] @ __bf16
111 void bfloat_mov_mr (void)
113 volatile bfloat16_t x
;
114 register bfloat16_t y
asm ("r4");
115 asm volatile ("#foo" : : : "memory");
117 asm volatile ("#foo" :: "r" (y
));