i386: vcvtph2ps and vcvtps2ph should be used to convert _Float16 to SFmode with ...
authorkonglin1 <lingling.kong@intel.com>
Wed, 10 Nov 2021 01:37:32 +0000 (09:37 +0800)
committerliuhongt <hongtao.liu@intel.com>
Fri, 26 Nov 2021 01:29:10 +0000 (09:29 +0800)
commit90cb088ece8d8cc1019d25629d1585e5b0234179
treece1812f25dde7047424ece6eb586cca8478b1ac0
parent379be00f45f65e0e8de72a50553dd9d2bab6cc08
i386: vcvtph2ps and vcvtps2ph should be used to convert _Float16 to SFmode with -mf16c [PR 102811]

Add define_insn extendhfsf2 and truncsfhf2 for target_f16c.

gcc/ChangeLog:

PR target/102811
* config/i386/i386.c (ix86_can_change_mode_class): Allow 16 bit data in XMM register
for TARGET_SSE2.
* config/i386/i386.md (extendhfsf2): Add extenndhfsf2 for TARGET_F16C.
(extendhfdf2): Restrict extendhfdf for TARGET_AVX512FP16 only.
(*extendhf<mode>2): Rename from extendhf<mode>2.
(truncsfhf2): Likewise.
(truncdfhf2): Likewise.
(*trunc<mode>2): Likewise.

gcc/testsuite/ChangeLog:

PR target/102811
* gcc.target/i386/pr90773-21.c: Allow pextrw instead of movw.
* gcc.target/i386/pr90773-23.c: Ditto.
* gcc.target/i386/avx512vl-vcvtps2ph-pr102811.c: New test.
gcc/config/i386/i386.c
gcc/config/i386/i386.md
gcc/testsuite/gcc.target/i386/avx512vl-vcvtps2ph-pr102811.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr90773-21.c
gcc/testsuite/gcc.target/i386/pr90773-23.c