1 /* { dg-do assemble { target { aarch64*-*-* } } } */
2 /* { dg-require-effective-target arm_v8_2a_bf16_neon_ok } */
3 /* { dg-add-options arm_v8_2a_bf16_neon } */
4 /* { dg-additional-options "-O3 --save-temps -std=gnu90" } */
5 /* { dg-final { check-function-bodies "**" "" } } */
17 bfloat16_t
stacktest1 (bfloat16_t __a
)
19 volatile bfloat16_t b
= __a
;
25 ** mov v1.h\[0\], v2.h\[0\]
28 void bfloat_mov_ww (void)
30 register bfloat16_t x
asm ("h2");
31 register bfloat16_t y
asm ("h1");
32 asm volatile ("" : "=w" (x
));
34 asm volatile ("" :: "w" (y
));
42 void bfloat_mov_rw (void)
44 register bfloat16_t x
asm ("w1");
45 register bfloat16_t y
asm ("h1");
46 asm volatile ("" : "=r" (x
));
48 asm volatile ("" :: "w" (y
));
56 void bfloat_mov_wr (void)
58 register bfloat16_t x
asm ("h1");
59 register bfloat16_t y
asm ("w1");
60 asm volatile ("" : "=w" (x
));
62 asm volatile ("" :: "r" (y
));
70 void bfloat_mov_rr (void)
72 register bfloat16_t x
asm ("w2");
73 register bfloat16_t y
asm ("w1");
74 asm volatile ("" : "=r" (x
));
76 asm volatile ("" :: "r" (y
));
84 void bfloat_mov_rm (bfloat16_t
*ptr
)
86 register bfloat16_t x
asm ("w2");
87 asm volatile ("" : "=r" (x
));
96 void bfloat_mov_mr (bfloat16_t
*ptr
)
98 register bfloat16_t y
asm ("w2");
100 asm volatile ("" :: "r" (y
));