diff options
author | Jan Beulich <jbeulich@suse.com> | 2023-08-07 11:45:20 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2023-08-07 11:45:20 +0200 |
commit | 9ac69f2d92d6efde2d31f08d400fc1ec9a0b2d39 (patch) | |
tree | 50a7625b95420b6970c38ef737db2a9b7bf24f6c /gcc/tree-vect-patterns.cc | |
parent | 98e9edad8c537ec415c5481eb9c93d53df6e3a40 (diff) | |
download | gcc-9ac69f2d92d6efde2d31f08d400fc1ec9a0b2d39.zip gcc-9ac69f2d92d6efde2d31f08d400fc1ec9a0b2d39.tar.gz gcc-9ac69f2d92d6efde2d31f08d400fc1ec9a0b2d39.tar.bz2 |
x86: "ssemuladd" adjustments
They're all VEX3- (also covering XOP) or EVEX-encoded. Express that in
the default calculation of "prefix". FMA4 insns also all have a 1-byte
immediate operand.
Where the default calculation is not sufficient / applicable, add
explicit "prefix" attributes. While there also add a "mode" attribute to
fma_<complexpairopname>_<mode>_pair.
gcc/
* config/i386/i386.md (isa): Move up.
(length_immediate): Handle "fma4".
(prefix): Handle "ssemuladd".
* config/i386/sse.md (*fma_fmadd_<mode>): Add "prefix" attribute.
(<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name><round_name>):
Likewise.
(<avx512>_fmadd_<mode>_mask<round_name>): Likewise.
(<avx512>_fmadd_<mode>_mask3<round_name>): Likewise.
(<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name><round_name>):
Likewise.
(<avx512>_fmsub_<mode>_mask<round_name>): Likewise.
(<avx512>_fmsub_<mode>_mask3<round_name>): Likewise.
(*fma_fnmadd_<mode>): Likewise.
(<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name><round_name>):
Likewise.
(<avx512>_fnmadd_<mode>_mask<round_name>): Likewise.
(<avx512>_fnmadd_<mode>_mask3<round_name>): Likewise.
(<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name><round_name>):
Likewise.
(<avx512>_fnmsub_<mode>_mask<round_name>): Likewise.
(<avx512>_fnmsub_<mode>_mask3<round_name>): Likewise.
(<sd_mask_codefor>fma_fmaddsub_<mode><sd_maskz_name><round_name>):
Likewise.
(<avx512>_fmaddsub_<mode>_mask<round_name>): Likewise.
(<avx512>_fmaddsub_<mode>_mask3<round_name>): Likewise.
(<sd_mask_codefor>fma_fmsubadd_<mode><sd_maskz_name><round_name>):
Likewise.
(<avx512>_fmsubadd_<mode>_mask<round_name>): Likewise.
(<avx512>_fmsubadd_<mode>_mask3<round_name>): Likewise.
(*fmai_fmadd_<mode>): Likewise.
(*fmai_fmsub_<mode>): Likewise.
(*fmai_fnmadd_<mode><round_name>): Likewise.
(*fmai_fnmsub_<mode><round_name>): Likewise.
(avx512f_vmfmadd_<mode>_mask<round_name>): Likewise.
(avx512f_vmfmadd_<mode>_mask3<round_name>): Likewise.
(avx512f_vmfmadd_<mode>_maskz_1<round_name>): Likewise.
(*avx512f_vmfmsub_<mode>_mask<round_name>): Likewise.
(avx512f_vmfmsub_<mode>_mask3<round_name>): Likewise.
(*avx512f_vmfmsub_<mode>_maskz_1<round_name>): Likewise.
(avx512f_vmfnmadd_<mode>_mask<round_name>): Likewise.
(avx512f_vmfnmadd_<mode>_mask3<round_name>): Likewise.
(avx512f_vmfnmadd_<mode>_maskz_1<round_name>): Likewise.
(*avx512f_vmfnmsub_<mode>_mask<round_name>): Likewise.
(*avx512f_vmfnmsub_<mode>_mask3<round_name>): Likewise.
(*avx512f_vmfnmsub_<mode>_maskz_1<round_name>): Likewise.
(*fma4i_vmfmadd_<mode>): Likewise.
(*fma4i_vmfmsub_<mode>): Likewise.
(*fma4i_vmfnmadd_<mode>): Likewise.
(*fma4i_vmfnmsub_<mode>): Likewise.
(fma_<complexopname>_<mode><sdc_maskz_name><round_name>): Likewise.
(<avx512>_<complexopname>_<mode>_mask<round_name>): Likewise.
(avx512fp16_fma_<complexopname>sh_v8hf<mask_scalarcz_name><round_scalarcz_name>):
Likewise.
(avx512fp16_<complexopname>sh_v8hf_mask<round_name>): Likewise.
(xop_p<macs><ssemodesuffix><ssemodesuffix>): Likewise.
(xop_p<macs>dql): Likewise.
(xop_p<macs>dqh): Likewise.
(xop_p<macs>wd): Likewise.
(xop_p<madcs>wd): Likewise.
(fma_<complexpairopname>_<mode>_pair): Likewise. Add "mode" attribute.
Diffstat (limited to 'gcc/tree-vect-patterns.cc')
0 files changed, 0 insertions, 0 deletions