| /* { dg-do compile } */ |
| /* { dg-options "-O3" } */ |
| /* { dg-require-effective-target arm_v8_2a_fp16_scalar_ok } */ |
| /* { dg-add-options arm_v8_2a_fp16_scalar } */ |
| |
| #include <arm_fp16.h> |
| |
| float16_t f0(void) |
| { |
| float16_t x = 0.0f; |
| return x; |
| } |
| |
| float16_t fn1(void) |
| { |
| float16_t x = -0.0f; |
| return x; |
| } |
| |
| float16_t f1(void) |
| { |
| float16_t x = 256.0f; |
| return x; |
| } |
| |
| float16_t f2(void) |
| { |
| float16_t x = 123256.0f; |
| return x; |
| } |
| |
| float16_t f3(void) |
| { |
| float16_t x = 17.0; |
| return x; |
| } |
| |
| /* { dg-final { scan-assembler-times "movi\tv\[0-9\]+\\\.4h, ?#0" 1 } } */ |
| /* { dg-final { scan-assembler-times "movi\tv\[0-9\]+\\\.4h, 0x80, lsl 8" 1 } } */ |
| /* { dg-final { scan-assembler-times "movi\tv\[0-9\]+\\\.4h, 0x5c, lsl 8" 1 } } */ |
| /* { dg-final { scan-assembler-times "movi\tv\[0-9\]+\\\.4h, 0x7c, lsl 8" 1 } } */ |
| |
| /* { dg-final { scan-assembler-times {fmov\th[0-9]+, #?1.7e\+1} 1 } } */ |