/* { dg-do compile } */ /* { dg-options "-O2 -misa=sm_53 -mptx=6.3 -ffast-math" } */ _Float16 var; float load() { return var; } void store(float x) { var = x; } void move(_Float16 *dst, _Float16 *src) { *dst = *src; } double plus(double x, double y) { _Float16 hx = x; _Float16 hy = y; _Float16 hz = hx + hy; return hz; } double minus(double x, double y) { _Float16 hx = x; _Float16 hy = y; _Float16 hz = hx - hy; return hz; } double mult(double x, double y) { _Float16 hx = x; _Float16 hy = y; _Float16 hz = hx * hy; return hz; } /* { dg-final { scan-assembler-times "ld.b16" 2 } } */ /* { dg-final { scan-assembler-times "cvt.f32.f16" 1 } } */ /* { dg-final { scan-assembler-times "cvt.rn.f16.f32" 1 } } */ /* { dg-final { scan-assembler-times "st.b16" 2 } } */ /* { dg-final { scan-assembler-times "add.f16" 1 } } */ /* { dg-final { scan-assembler-times "sub.f16" 1 } } */ /* { dg-final { scan-assembler-times "mul.f16" 1 } } */ /* { dg-final { scan-assembler-times "cvt.rn.f16.f64" 6 } } */ /* { dg-final { scan-assembler-times "cvt.f64.f16" 3 } } */