i386: Implement VxHF vector set/insert/extract with lower ABI levels
authorUros Bizjak <ubizjak@gmail.com>
Tue, 14 Dec 2021 17:27:22 +0000 (18:27 +0100)
committerUros Bizjak <ubizjak@gmail.com>
Tue, 14 Dec 2021 17:28:21 +0000 (18:28 +0100)
commit7a54d3deecf967029f18aa5ed1fcbdb752e213b9
tree849f669059e68fe9a6a5315740601242f58e6664
parent2cf62ef5aa80e3659a8150a48d93a1d333f1d292
i386: Implement VxHF vector set/insert/extract with lower ABI levels

This is a preparation patch that moves VxHF vector set/insert/extract
expansions from AVX512FP16 ABI to lower ABIs.  There are no functional
changes for -mavx512fp16 and a follow-up patch is needed to actually
enable VxHF vector modes for lower ABIs.

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

gcc/ChangeLog:

PR target/103571
* config/i386/i386-expand.c (ix86_expand_vector_init_duplicate)
<case E_V8HFmode>: Implement for TARGET_SSE2.
<case E_V16HFmode>: Implement for TARGET_AVX.
<case E_V32HFmode>: Implement for TARGET_AVX512F.
(ix86_expand_vector_set_var): Handle V32HFmode
without TARGET_AVX512BW.
(ix86_expand_vector_extract)
<case E_V8HFmode>: Implement for TARGET_SSE2.
<case E_V16HFmode>: Implement for TARGET_AVX.
<case E_V32HFmode>: Implement for TARGET_AVX512BW.
(expand_vec_perm_broadcast_1) <case E_V8HFmode>: New.
* config/i386/sse.md (VI12HF_AVX512VL): Remove
TARGET_AVX512FP16 condition.
(V): Ditto.
(V_256_512): Ditto.
(avx_vbroadcastf128_<mode>): Use V_256H mode iterator.
gcc/config/i386/i386-expand.c
gcc/config/i386/sse.md