Hi,
This is v2 of the patch series I sent in
https://gcc.gnu.org/pipermail/gcc-patches/2024-July/657065.html.
I have taken into account the feedback I received, and added more
patches to the series, converting more MVE intrinsics to the new
framework.
Changes v1-v2:
- I kept patch #1 as-is (so, no change): the comment is a bit verbose,
but I don't this this causes any harm.
- patch #3: use conditionals in a few more places, making the code
more compact and hopefully easier to read.
- patch #5: use "su64" instead of "ss8" for the immediate parameter.
- patch #6: restore alphabetical order in arm-mve-builtins-base.def
- patch #7: remove trailing ')' in comments in mve.md
- patch #10: remove trailing ')' in comments in mve.md
- patch #11: remove unused parameter names to avoid warnings.
- patch #13: fix a comment.
- patch #15: fix a comment.
Patches 16-36 are new:
- #16: rework vctp
- #17-21: rework v[id]dup + cleanups
- #22: fix checks of immediate arguments, noticed after the discussion
on patch #5
- #23-27: rework v[id]wdup + cleanups
- #28-30: rework vshlc
- #31-35: rework vadc/vadci/vsbc/vsbci
- #36: introduce long_type_suffix and half_type_suffix helpers to
avoid some code duplication.
Tested on arm-eabi with
--target_board=arm-qemu{-mthumb/-mfloat-abi=hard/-march=armv8.1-m.main+mve.fp+fp.dp}
Christophe Lyon (36):
arm: [MVE intrinsics] improve comment for orrq shape
arm: [MVE intrinsics] remove useless resolve from create shape
arm: [MVE intrinsics] Cleanup arm-mve-builtins-functions.h
arm: [MVE intrinsics] factorize vcvtq
arm: [MVE intrinsics] add vcvt shape
arm: [MVE intrinsics] rework vcvtq
arm: [MVE intrinsics] factorize vcvtbq vcvttq
arm: [MVE intrinsics] add vcvt_f16_f32 and vcvt_f32_f16 shapes
arm: [MVE intrinsics] rework vcvtbq_f16_f32 vcvttq_f16_f32
vcvtbq_f32_f16 vcvttq_f32_f16
arm: [MVE intrinsics] factorize vcvtaq vcvtmq vcvtnq vcvtpq
arm: [MVE intrinsics] add vcvtx shape
arm: [MVE intrinsics] rework vcvtaq vcvtmq vcvtnq vcvtpq
arm: [MVE intrinsics] rework vbicq
arm: [MVE intrinsics] factorize vorn
arm: [MVE intrinsics] rework vorn
arm: [MVE intrinsics] rework vctp
arm: [MVE intrinsics] factorize vddup vidup
arm: [MVE intrinsics] add viddup shape
arm: [MVE intrinsics] rework vddup vidup
arm: [MVE intrinsics] update v[id]dup tests
arm: [MVE intrinsics] remove v[id]dup expanders
arm: [MVE intrinsics] fix checks of immediate arguments
arm: [MVE intrinsics] factorize vdwdup viwdup
arm: [MVE intrinsics] add vidwdup shape
arm: [MVE intrinsics] rework vdwdup viwdup
arm: [MVE intrinsics] update v[id]wdup tests
arm: [MVE intrinsics] remove useless v[id]wdup expanders
arm: [MVE intrinsics] add vshlc shape
arm: [MVE intrinsics] rework vshlcq
arm: [MVE intrinsics] remove vshlcq useless expanders
arm: [MVE intrinsics] add vadc_vsbc shape
arm: [MVE intrinsics] factorize vadc vadci vsbc vsbci
arm: [MVE intrinsics] rework vadciq
arm: [MVE intrinsics] rework vadcq
arm: [MVE intrinsics] rework vsbcq vsbciq
arm: [MVE intrinsics] use long_type_suffix / half_type_suffix helpers
gcc/config/arm/arm-builtins.cc | 20 -
gcc/config/arm/arm-mve-builtins-base.cc | 593 ++
gcc/config/arm/arm-mve-builtins-base.def | 44 +-
gcc/config/arm/arm-mve-builtins-base.h | 22 +
gcc/config/arm/arm-mve-builtins-functions.h | 815 +--
gcc/config/arm/arm-mve-builtins-shapes.cc | 645 +-
gcc/config/arm/arm-mve-builtins-shapes.h | 9 +
gcc/config/arm/arm-mve-builtins.cc | 95 +-
gcc/config/arm/arm-mve-builtins.def | 1 +
gcc/config/arm/arm-mve-builtins.h | 12 +-
gcc/config/arm/arm_mve.h | 6353 +++--------------
gcc/config/arm/arm_mve_builtins.def | 20 -
gcc/config/arm/iterators.md | 68 +-
gcc/config/arm/mve.md | 832 +--
.../arm/mve/intrinsics/vddupq_m_wb_u16.c | 18 +-
.../arm/mve/intrinsics/vddupq_m_wb_u32.c | 18 +-
.../arm/mve/intrinsics/vddupq_m_wb_u8.c | 18 +-
.../arm/mve/intrinsics/vddupq_wb_u16.c | 14 +-
.../arm/mve/intrinsics/vddupq_wb_u32.c | 14 +-
.../arm/mve/intrinsics/vddupq_wb_u8.c | 14 +-
.../arm/mve/intrinsics/vddupq_x_wb_u16.c | 18 +-
.../arm/mve/intrinsics/vddupq_x_wb_u32.c | 18 +-
.../arm/mve/intrinsics/vddupq_x_wb_u8.c | 18 +-
.../arm/mve/intrinsics/vdwdupq_m_wb_u16.c | 6 +-
.../arm/mve/intrinsics/vdwdupq_m_wb_u32.c | 6 +-
.../arm/mve/intrinsics/vdwdupq_m_wb_u8.c | 6 +-
.../arm/mve/intrinsics/vdwdupq_wb_u16.c | 6 +-
.../arm/mve/intrinsics/vdwdupq_wb_u32.c | 6 +-
.../arm/mve/intrinsics/vdwdupq_wb_u8.c | 6 +-
.../arm/mve/intrinsics/vdwdupq_x_wb_u16.c | 6 +-
.../arm/mve/intrinsics/vdwdupq_x_wb_u32.c | 6 +-
.../arm/mve/intrinsics/vdwdupq_x_wb_u8.c | 6 +-
.../arm/mve/intrinsics/vidupq_m_wb_u16.c | 18 +-
.../arm/mve/intrinsics/vidupq_m_wb_u32.c | 18 +-
.../arm/mve/intrinsics/vidupq_m_wb_u8.c | 18 +-
.../arm/mve/intrinsics/vidupq_wb_u16.c | 14 +-
.../arm/mve/intrinsics/vidupq_wb_u32.c | 14 +-
.../arm/mve/intrinsics/vidupq_wb_u8.c | 14 +-
.../arm/mve/intrinsics/vidupq_x_wb_u16.c | 18 +-
.../arm/mve/intrinsics/vidupq_x_wb_u32.c | 18 +-
.../arm/mve/intrinsics/vidupq_x_wb_u8.c | 18 +-
.../arm/mve/intrinsics/viwdupq_m_wb_u16.c | 6 +-
.../arm/mve/intrinsics/viwdupq_m_wb_u32.c | 6 +-
.../arm/mve/intrinsics/viwdupq_m_wb_u8.c | 6 +-
.../arm/mve/intrinsics/viwdupq_wb_u16.c | 6 +-
.../arm/mve/intrinsics/viwdupq_wb_u32.c | 6 +-
.../arm/mve/intrinsics/viwdupq_wb_u8.c | 6 +-
.../arm/mve/intrinsics/viwdupq_x_wb_u16.c | 6 +-
.../arm/mve/intrinsics/viwdupq_x_wb_u32.c | 6 +-
.../arm/mve/intrinsics/viwdupq_x_wb_u8.c | 6 +-
50 files changed, 2975 insertions(+), 6962 deletions(-)
--
2.34.1