aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-patterns.cc
diff options
context:
space:
mode:
authorliuhongt <hongtao.liu@intel.com>2023-06-02 12:38:17 +0800
committerliuhongt <hongtao.liu@intel.com>2023-06-12 17:15:08 +0800
commite52be6034fa0171c26f571f4ad1a5686594f32a9 (patch)
tree9ebad8a6168b0bd99a9ee0cb6e2d4c8a9add755d /gcc/tree-vect-patterns.cc
parent820d1aec89c43dbbc70d3d0b888201878388454c (diff)
downloadgcc-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