Skip to content
Snippets Groups Projects
Commit cdacb32b authored by Richard Sandiford's avatar Richard Sandiford
Browse files

aarch64: Add support for SME_B16B16

This patch adds support for the SME_B16B16 extension.  It follows
similar lines to the SME_F16F16 extension added earlier.

gcc/
	* config/aarch64/aarch64-option-extensions.def
	(sme-b16b16): New extension.
	* doc/invoke.texi: Document it.
	* config/aarch64/aarch64.h (TARGET_STREAMING_SME_B16B16): New macro.
	* config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins):
	Conditionally define __ARM_FEATURE_SME_B16B16.
	* config/aarch64/aarch64-sve-builtins-sme.def: Add SME_B16B16 forms
	of existing intrinsics.
	* config/aarch64/aarch64-sme.md
	(@aarch64_sme_<SME_BINARY_SLICE_HSDF:optab><mode>)
	(*aarch64_sme_<SME_BINARY_SLICE_HSDF:optab><mode>_plus)
	(@aarch64_sme_<SME_FP_TERNARY_SLICE:optab><mode><mode>)
	(*aarch64_sme_<SME_FP_TERNARY_SLICE:optab><mode><mode>_plus)
	(@aarch64_sme_single_<SME_FP_TERNARY_SLICE:optab><mode><mode>)
	(*aarch64_sme_single_<SME_FP_TERNARY_SLICE:optab><mode><mode>_plus)
	(@aarch64_sme_lane_<SME_FP_TERNARY_SLICE:optab><mode><mode>)
	(*aarch64_sme_lane_<SME_FP_TERNARY_SLICE:optab><mode><mode>)
	(@aarch64_sme_<SME_FP_MOP:optab><mode><mode>): Extend to BF16 modes.
	* config/aarch64/aarch64-sve-builtins.cc (TYPES_za_h_bfloat): New
	type macro.
	* config/aarch64/iterators.md (SME_ZA_HSDFx24): Add BF16 modes.
	(SME_MOP_HSDF): Likewise.

gcc/testsuite/
	* lib/target-supports.exp: Test the assembler for sve-b16b16 support.
	* gcc.target/aarch64/pragma_cpp_predefs_4.c: Add tests for
	__ARM_FEATURE_SME_B16B16.
	* gcc.target/aarch64/sme2/acle-asm/add_za16_bf16_vg1x2.c: New test.
	* gcc.target/aarch64/sme2/acle-asm/add_za16_bf16_vg1x4.c: Likewise.
	* gcc.target/aarch64/sme2/acle-asm/mla_lane_za16_bf16_vg1x2.c: Likewise.
	* gcc.target/aarch64/sme2/acle-asm/mla_lane_za16_bf16_vg1x4.c: Likewise.
	* gcc.target/aarch64/sme2/acle-asm/mla_za16_bf16_vg1x2.c: Likewise.
	* gcc.target/aarch64/sme2/acle-asm/mla_za16_bf16_vg1x4.c: Likewise.
	* gcc.target/aarch64/sme2/acle-asm/mls_lane_za16_bf16_vg1x2.c: Likewise.
	* gcc.target/aarch64/sme2/acle-asm/mls_lane_za16_bf16_vg1x4.c: Likewise.
	* gcc.target/aarch64/sme2/acle-asm/mls_za16_bf16_vg1x2.c: Likewise.
	* gcc.target/aarch64/sme2/acle-asm/mls_za16_bf16_vg1x4.c: Likewise.
	* gcc.target/aarch64/sme2/acle-asm/mopa_za16_bf16.c: Likewise.
	* gcc.target/aarch64/sme2/acle-asm/mops_za16_bf16.c: Likewise.
	* gcc.target/aarch64/sme2/acle-asm/sub_za16_bf16_vg1x2.c: Likewise.
	* gcc.target/aarch64/sme2/acle-asm/sub_za16_bf16_vg1x4.c: Likewise.
parent e6751e1d
Loading
Showing
with 1522 additions and 10 deletions
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment