diff options
author | liuhongt <hongtao.liu@intel.com> | 2021-07-05 17:05:45 +0800 |
---|---|---|
committer | liuhongt <hongtao.liu@intel.com> | 2021-09-02 14:11:57 +0800 |
commit | 7cbc870c495cebc61f5d0ebb975856c207a42fab (patch) | |
tree | dc0987718dc7d33ca83bacaa77ced32361ff548e /gcc/lto/lto-lang.c | |
parent | e42d2d2a20f2bb59928bc895ec9f46503a1b5c73 (diff) | |
download | gcc-7cbc870c495cebc61f5d0ebb975856c207a42fab.zip gcc-7cbc870c495cebc61f5d0ebb975856c207a42fab.tar.gz gcc-7cbc870c495cebc61f5d0ebb975856c207a42fab.tar.bz2 |
Enable _Float16 type for TARGET_SSE2 and above.
gcc/ChangeLog:
* config/i386/i386-modes.def (FLOAT_MODE): Define ieee HFmode.
* config/i386/i386.c (enum x86_64_reg_class): Add
X86_64_SSEHF_CLASS.
(merge_classes): Handle X86_64_SSEHF_CLASS.
(examine_argument): Ditto.
(construct_container): Ditto.
(classify_argument): Ditto, and set HFmode/HCmode to
X86_64_SSEHF_CLASS.
(function_value_32): Return _FLoat16/Complex Float16 by
%xmm0.
(function_value_64): Return _Float16/Complex Float16 by SSE
register.
(ix86_print_operand): Handle CONST_DOUBLE HFmode.
(ix86_secondary_reload): Require gpr as intermediate register
to store _Float16 from sse register when sse4 is not
available.
(ix86_libgcc_floating_mode_supported_p): Enable _FLoat16 under
sse2.
(ix86_scalar_mode_supported_p): Ditto.
(TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P): Defined.
* config/i386/i386.h (VALID_SSE2_REG_MODE): Add HFmode.
(VALID_INT_MODE_P): Add HFmode and HCmode.
* config/i386/i386.md (*pushhf_rex64): New define_insn.
(*pushhf): Ditto.
(*movhf_internal): Ditto.
* doc/extend.texi (Half-Precision Floating Point): Documemt
_Float16 for x86.
gcc/lto/ChangeLog:
* lto-lang.c (lto_type_for_mode): Return float16_type_node
when mode == TYPE_MODE (float16_type_node).
gcc/testsuite/ChangeLog
* gcc.target/i386/sse2-float16-1.c: New test.
* gcc.target/i386/sse2-float16-2.c: Ditto.
* gcc.target/i386/sse2-float16-3.c: Ditto.
* gcc.target/i386/float16-5.c: New test.
Diffstat (limited to 'gcc/lto/lto-lang.c')
-rw-r--r-- | gcc/lto/lto-lang.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/lto/lto-lang.c b/gcc/lto/lto-lang.c index c13c7e4..92f4996 100644 --- a/gcc/lto/lto-lang.c +++ b/gcc/lto/lto-lang.c @@ -992,6 +992,9 @@ lto_type_for_mode (machine_mode mode, int unsigned_p) return unsigned_p ? unsigned_intTI_type_node : intTI_type_node; #endif + if (float16_type_node && mode == TYPE_MODE (float16_type_node)) + return float16_type_node; + if (mode == TYPE_MODE (float_type_node)) return float_type_node; |