Hi,

Thanks for the update and sorry for the slow reply.

When I try the patch locally I get:

FAIL: gcc.target/aarch64/advsimd-intrinsics/bfcvt-nosimd.c   -O0  (test for 
excess errors)
FAIL: gcc.target/aarch64/advsimd-intrinsics/bfcvt-nosimd.c   -O1  (test for 
excess errors)
FAIL: gcc.target/aarch64/advsimd-intrinsics/bfcvt-nosimd.c   -O2  (test for 
excess errors)
FAIL: gcc.target/aarch64/advsimd-intrinsics/bfcvt-nosimd.c   -O2 -flto 
-fno-use-linker-plugin -flto-partition=none  (test for excess errors)
FAIL: gcc.target/aarch64/advsimd-intrinsics/bfcvt-nosimd.c   -O2 -flto 
-fuse-linker-plugin -fno-fat-lto-objects  (test for excess errors)
FAIL: gcc.target/aarch64/advsimd-intrinsics/bfcvt-nosimd.c   -O3 -g  (test for 
excess errors)
FAIL: gcc.target/aarch64/advsimd-intrinsics/bfcvt-nosimd.c   -Og -g  (test for 
excess errors)
FAIL: gcc.target/aarch64/advsimd-intrinsics/bfcvt-nosimd.c   -Os  (test for 
excess errors)

I think that's because:

Delia Burduv <delia.bur...@arm.com> writes:
> diff --git a/gcc/config/aarch64/arm_bf16.h b/gcc/config/aarch64/arm_bf16.h
> index 
> 3759c0d1cb449a7f0125cc2a1433127564d66622..fa7080c2953bc3254f01d842a8afef917d469080
>  100644
> --- a/gcc/config/aarch64/arm_bf16.h
> +++ b/gcc/config/aarch64/arm_bf16.h
> @@ -27,6 +27,19 @@
>  #ifndef _AARCH64_BF16_H_
>  #define _AARCH64_BF16_H_
>  
> +#pragma GCC push_options
> +#pragma GCC target ("+nothing+bf16")
> +
>  typedef __bf16 bfloat16_t;
> +typedef float float32_t;
> +
> +__extension__ extern __inline bfloat16_t
> +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
> +vcvth_bf16_f32 (float32_t __a)
> +{
> +  return __builtin_aarch64_bfcvtbf (__a);
> +}
> +
> +#pragma GCC pop_options

"+bf16" implicitly enables "+simd", so functions guarded with
"+nothing+bf16" are only available when "+simd" is available.
I think we want "+nothing+bf16+nosimd" instead.  (Haven't tested
that though.)

Very minor, but: it might be clearer to leave the typedefs outside
of the #pragma block.  It doesn't make any difference to the behaviour,
but it emphasises that the typedefs really are available unconditionally.

Looks ready to go otherwise.

Thanks,
Richard

Reply via email to