diff options
author | liuhongt <hongtao.liu@intel.com> | 2023-06-02 12:38:17 +0800 |
---|---|---|
committer | liuhongt <hongtao.liu@intel.com> | 2023-06-12 17:15:08 +0800 |
commit | e52be6034fa0171c26f571f4ad1a5686594f32a9 (patch) | |
tree | 9ebad8a6168b0bd99a9ee0cb6e2d4c8a9add755d /gcc/tree-vect-patterns.cc | |
parent | 820d1aec89c43dbbc70d3d0b888201878388454c (diff) | |
download | gcc-e52be6034fa0171c26f571f4ad1a5686594f32a9.zip gcc-e52be6034fa0171c26f571f4ad1a5686594f32a9.tar.gz gcc-e52be6034fa0171c26f571f4ad1a5686594f32a9.tar.bz2 |
Add missing vec_pack/unpacks patterns for _Float16 <-> int/float conversion.
This patch only support optabs for vector modes whose lenth >= 128.
For 32/64-bit vector, they're more hanlded by BB vectorizer with
truncmn2/extendmn2/fix{,uns}_truncmn2.
gcc/ChangeLog:
* config/i386/sse.md (vec_pack<floatprefix>_float_<mode>): New expander.
(vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
(vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
(vec_unpacks_lo_<mode>): Ditto.
(vec_unpacks_hi_<mode>): Ditto.
(sse_movlhps_<mode>): New define_insn.
(ssse3_palignr<mode>_perm): Extend to V_128H.
(V_128H): New mode iterator.
(ssepackPHmode): New mode attribute.
(vunpck_extract_mode): Ditto.
(vpckfloat_concat_mode): Extend to VxSI/VxSF for _Float16.
(vpckfloat_temp_mode): Ditto.
(vpckfloat_op_mode): Ditto.
(vunpckfixt_mode): Extend to VxHF.
(vunpckfixt_model): Ditto.
(vunpckfixt_extract_mode): Ditto.
gcc/testsuite/ChangeLog:
* gcc.target/i386/vec_pack_fp16-1.c: New test.
* gcc.target/i386/vec_pack_fp16-2.c: New test.
* gcc.target/i386/vec_pack_fp16-3.c: New test.
Diffstat (limited to 'gcc/tree-vect-patterns.cc')
0 files changed, 0 insertions, 0 deletions