diff options
author | Tamar Christina <tamar.christina@arm.com> | 2022-12-12 15:15:07 +0000 |
---|---|---|
committer | Tamar Christina <tamar.christina@arm.com> | 2022-12-12 15:15:07 +0000 |
commit | 2cba118e538ba0b7582af7f9fb5ba2dfbb772f8e (patch) | |
tree | f688319ff5d5d4249083adc46bfef7c2707b9006 /gcc/tree.h | |
parent | dc94eaab008165698a1161c757db96fc701103a2 (diff) | |
download | gcc-2cba118e538ba0b7582af7f9fb5ba2dfbb772f8e.zip gcc-2cba118e538ba0b7582af7f9fb5ba2dfbb772f8e.tar.gz gcc-2cba118e538ba0b7582af7f9fb5ba2dfbb772f8e.tar.bz2 |
aarch64: Make existing V2HF be usable.
The backend has an existing V2HFmode that is used by pairwise operations.
This mode was however never made fully functional. Amongst other things it was
never declared as a vector type which made it unusable from the mid-end.
It's also lacking an implementation for load/stores so reload ICEs if this mode
is every used. This finishes the implementation by providing the above.
Note that I have created a new iterator VHSDF_P instead of extending VHSDF
because the previous iterator is used in far more things than just load/stores.
It's also used for instance in intrinsics and extending this would force me to
provide support for mangling the type while we never expose it through
intrinsics.
gcc/ChangeLog:
* config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
(mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
@aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
(aarch64_simd_dupv2hf): New.
* config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
Add E_V2HFmode.
* config/aarch64/iterators.md (VHSDF_P): New.
(V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
Vel, q, vp): Add V2HF.
* config/arm/types.md (neon_fp_reduc_add_h): New.
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/sve/slp_1.c: Update testcase.
Diffstat (limited to 'gcc/tree.h')
0 files changed, 0 insertions, 0 deletions