i386: Enable VxHF vector modes lower ABI levels [PR103571]
authorUros Bizjak <ubizjak@gmail.com>
Thu, 16 Dec 2021 18:34:50 +0000 (19:34 +0100)
committerUros Bizjak <ubizjak@gmail.com>
Thu, 16 Dec 2021 18:35:37 +0000 (19:35 +0100)
commit271e36d9d5b3a75e7f1a927e594477e6a5dd6fc0
tree4c372e5c814b45814d28facb3b76afa2af6cded3
parent06cd44b4387a9f6ab46f377f42ee5be9cf11bf15
i386: Enable VxHF vector modes lower ABI levels [PR103571]

Enable VxHF vector modes for SSE2, AVX and AVX512F ABIs.

2021-12-16  Uroš Bizjak  <ubizjak@gmail.com>

gcc/ChangeLog:

PR target/103571
* config/i386/i386.h (VALID_AVX256_REG_MODE): Add V16HFmode.
(VALID_AVX256_REG_OR_OI_VHF_MODE): Replace with ...
(VALID_AVX256_REG_OR_OI_MODE): ... this.  Remove V16HFmode.
(VALID_AVX512F_SCALAR_MODE): Remove HImode and HFmode.
(VALID_AVX512FP16_SCALAR_MODE): New.
(VALID_AVX512F_REG_MODE): Add V32HFmode.
(VALID_SSE2_REG_MODE): Add V8HFmode, V4HFmode and V2HFmode.
(VALID_SSE2_REG_VHF_MODE): Remove.
(VALID_INT_MODE_P): Add V2HFmode.
* config/i386/i386.c (function_arg_advance_64):
Remove explicit mention of V16HFmode and V32HFmode.
(ix86_hard_regno_mode_ok): Remove explicit mention of XImode
and V32HFmode, use VALID_AVX512F_REG_OR_XI_MODE instead.
Use VALID_AVX512FP_SCALAR_MODE for TARGET_aVX512FP16.
Use VALID_AVX256_REG_OR_OI_MODE instead of
VALID_AVX256_REG_OR_OI_VHF_MODE and VALID_SSE2_REG_MODE instead
of VALID_SSE2_REG_VHF_MODE.
(ix86_set_reg_reg_cost): Remove usge of VALID_AVX512FP16_REG_MODE.
(ix86_vector_mode_supported): Ditto.

gcc/testsuite/ChangeLog:

PR target/103571
* gcc.target/i386/pr102812.c (dg-final): Do not scan for movdqa.
gcc/config/i386/i386.c
gcc/config/i386/i386.h
gcc/testsuite/gcc.target/i386/pr102812.c