gcc/libgcc/soft-fp
Jakub Jelinek 13071c3c7d aarch64: Add bfloat16_t support for aarch64
x86_64/i686 has for a few months working std::bfloat16_t support, __bf16
there is no longer a storage only type, but can be used for arithmetics
and is supported in libgcc and libstdc++.

The following patch adds similar support for AArch64.

Unlike the x86 changes, this one keeps the old __bf16 mangling of
u6__bf16 rather than DF16b (so an exception from Itanium ABI), but
otherwise __bf16 and decltype (0.0bf16) are the same type and both
in C++ act as extended floating-point type.

2023-03-13  Jakub Jelinek  <jakub@redhat.com>

gcc/
	* config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
	(aarch64_bf16_ptr_type_node): Adjust comment.
	* config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
	bfloat16_type_node rather than aarch64_bf16_type_node.
	(aarch64_libgcc_floating_mode_supported_p,
	aarch64_scalar_mode_supported_p): Also support BFmode.
	(aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
	(aarch64_invalid_binary_op): Remove BFmode related rejections.
	(TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
	* config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
	(aarch64_int_or_fp_type): Use bfloat16_type_node rather than
	aarch64_bf16_type_node.
	(aarch64_init_simd_builtin_types): Likewise.
	(aarch64_init_bf16_types): Likewise.  Don't create bfloat16_type_node,
	which is created in tree.cc already.
	* config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
gcc/testsuite/
	* gcc.target/aarch64/sve/acle/general-c/ternary_bfloat16_opt_n_1.c:
	Don't expect one __bf16 related error.
	* gcc.target/aarch64/bfloat16_vector_typecheck_1.c: Adjust or remove
	dg-error directives for __bf16 being an extended arithmetic type.
	* gcc.target/aarch64/bfloat16_vector_typecheck_2.c: Likewise.
	* gcc.target/aarch64/bfloat16_scalar_typecheck.c: Likewise.
	* g++.target/aarch64/bfloat_cpp_typecheck.C: Don't expect two __bf16
	related errors.
libgcc/
	* config/aarch64/t-softfp (softfp_extensions): Add bfsf.
	(softfp_truncations): Add tfbf dfbf sfbf hfbf.
	(softfp_extras): Add floatdibf floatundibf floattibf floatuntibf.
	* config/aarch64/libgcc-softfp.ver (GCC_13.0.0): Export
	__extendbfsf2 and __trunc{s,d,t,h}fbf2.
	* config/aarch64/sfp-machine.h (_FP_NANFRAC_B, _FP_NANSIGN_B): Define.
	* soft-fp/floatundibf.c: New file.
	* soft-fp/floatdibf.c: New file.
libstdc++-v3/
	* config/abi/pre/gnu.ver (CXXABI_1.3.14): Also export __bf16 tinfos
	if it isn't mangled as DF16b but u6__bf16.
2023-03-13 00:16:45 +01:00
..
adddf3.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
addsf3.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
addtf3.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
brain.h middle-end, c++, i386, libgcc: std::bfloat16_t and __bf16 arithmetic support 2022-10-14 09:37:01 +02:00
divdf3.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
divsf3.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
divtf3.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
double.h soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
eqdf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
eqhf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
eqsf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
eqtf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
extendbfsf2.c middle-end, c++, i386, libgcc: std::bfloat16_t and __bf16 arithmetic support 2022-10-14 09:37:01 +02:00
extenddftf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
extended.h soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
extendhfdf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
extendhfsf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
extendhftf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
extendhfxf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
extendsfdf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
extendsftf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
extendxftf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixdfdi.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixdfsi.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixdfti.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixhfdi.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixhfsi.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixhfti.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixsfdi.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixsfsi.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixsfti.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixtfdi.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixtfsi.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixtfti.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixunsdfdi.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixunsdfsi.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixunsdfti.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixunshfdi.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixunshfsi.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixunshfti.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixunssfdi.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixunssfsi.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixunssfti.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixunstfdi.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixunstfsi.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
fixunstfti.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floatdibf.c aarch64: Add bfloat16_t support for aarch64 2023-03-13 00:16:45 +01:00
floatdidf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floatdihf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floatdisf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floatditf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floatsidf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floatsihf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floatsisf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floatsitf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floattibf.c libgcc, i386: Add __fix{,uns}bfti and __float{,un}tibf [PR107703] 2023-03-10 20:39:54 +01:00
floattidf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floattihf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floattisf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floattitf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floatundibf.c aarch64: Add bfloat16_t support for aarch64 2023-03-13 00:16:45 +01:00
floatundidf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floatundihf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floatundisf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floatunditf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floatunsidf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floatunsihf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floatunsisf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floatunsitf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floatuntibf.c libgcc, i386: Add __fix{,uns}bfti and __float{,un}tibf [PR107703] 2023-03-10 20:39:54 +01:00
floatuntidf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floatuntihf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floatuntisf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
floatuntitf.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
gedf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
gesf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
getf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
half.h soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
ledf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
lesf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
letf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
muldf3.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
mulsf3.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
multf3.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
negdf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
negsf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
negtf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
op-1.h soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
op-2.h soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
op-4.h soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
op-8.h soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
op-common.h soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
quad.h PR target/107299: Fix build issue when long double is IEEE 128-bit 2023-03-06 17:38:33 -05:00
README
single.h soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
soft-fp.h soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
subdf3.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
subsf3.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
subtf3.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
truncbfhf2.c middle-end, c++, i386, libgcc: std::bfloat16_t and __bf16 arithmetic support 2022-10-14 09:37:01 +02:00
truncdfbf2.c middle-end, c++, i386, libgcc: std::bfloat16_t and __bf16 arithmetic support 2022-10-14 09:37:01 +02:00
truncdfhf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
truncdfsf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
trunchfbf2.c middle-end, c++, i386, libgcc: std::bfloat16_t and __bf16 arithmetic support 2022-10-14 09:37:01 +02:00
truncsfbf2.c middle-end, c++, i386, libgcc: std::bfloat16_t and __bf16 arithmetic support 2022-10-14 09:37:01 +02:00
truncsfhf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
trunctfbf2.c middle-end, c++, i386, libgcc: std::bfloat16_t and __bf16 arithmetic support 2022-10-14 09:37:01 +02:00
trunctfdf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
trunctfhf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
trunctfsf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
trunctfxf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
truncxfbf2.c middle-end, c++, i386, libgcc: std::bfloat16_t and __bf16 arithmetic support 2022-10-14 09:37:01 +02:00
truncxfhf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
unorddf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
unordsf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00
unordtf2.c soft-fp: Update soft-fp from glibc 2022-08-16 23:32:30 +08:00

The files in this directory are part of the GNU C Library, not part of
GCC.  As described at <http://gcc.gnu.org/codingconventions.html>,
changes should be made to the GNU C Library and the changed files then
imported into GCC.