From e449556dc8336f52b754997e4a4a7f8f1b6963a5 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Sun, 12 Jun 2016 21:38:42 +0200 Subject: [PATCH] i386.c (ix86_init_builtins): Calculate FLOAT128_FTYPE_CONST_STRING function type only once. * config/i386/i386.c (ix86_init_builtins): Calculate FLOAT128_FTYPE_CONST_STRING function type only once. * doc/extend.texi (x86 Built-in Functions): Update text, __float128 built-in functions are available for x86-32 and x86-64 targets. From-SVN: r237342 --- gcc/ChangeLog | 7 +++++++ gcc/config/i386/i386.c | 44 +++++++++++++++++++++--------------------- gcc/doc/extend.texi | 25 ++++++++++++------------ 3 files changed, 41 insertions(+), 35 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0a48316e0f9..c2f2a0b88ea 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2016-06-12 Uros Bizjak + + * config/i386/i386.c (ix86_init_builtins): Calculate + FLOAT128_FTYPE_CONST_STRING function type only once. + * doc/extend.texi (x86 Built-in Functions): Update text, __float128 + built-in functions are available for x86-32 and x86-64 targets. + 2016-06-12 Uros Bizjak PR target/71241 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index dd47305c5b0..c5e5e1238a5 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -38260,7 +38260,7 @@ ix86_init_builtin_types (void) static void ix86_init_builtins (void) { - tree t; + tree ftype, decl; ix86_init_builtin_types (); @@ -38273,31 +38273,31 @@ ix86_init_builtins (void) def_builtin_const (0, "__builtin_huge_valq", FLOAT128_FTYPE_VOID, IX86_BUILTIN_HUGE_VALQ); - t = ix86_get_builtin_func_type (FLOAT128_FTYPE_CONST_STRING); - t = add_builtin_function ("__builtin_nanq", t, IX86_BUILTIN_NANQ, - BUILT_IN_MD, "nanq", NULL_TREE); - TREE_READONLY (t) = 1; - ix86_builtins[(int) IX86_BUILTIN_NANQ] = t; + ftype = ix86_get_builtin_func_type (FLOAT128_FTYPE_CONST_STRING); + decl = add_builtin_function ("__builtin_nanq", ftype, IX86_BUILTIN_NANQ, + BUILT_IN_MD, "nanq", NULL_TREE); + TREE_READONLY (decl) = 1; + ix86_builtins[(int) IX86_BUILTIN_NANQ] = decl; - t = ix86_get_builtin_func_type (FLOAT128_FTYPE_CONST_STRING); - t = add_builtin_function ("__builtin_nansq", t, IX86_BUILTIN_NANSQ, - BUILT_IN_MD, "nansq", NULL_TREE); - TREE_READONLY (t) = 1; - ix86_builtins[(int) IX86_BUILTIN_NANSQ] = t; + decl = add_builtin_function ("__builtin_nansq", ftype, IX86_BUILTIN_NANSQ, + BUILT_IN_MD, "nansq", NULL_TREE); + TREE_READONLY (decl) = 1; + ix86_builtins[(int) IX86_BUILTIN_NANSQ] = decl; /* We will expand them to normal call if SSE isn't available since they are used by libgcc. */ - t = ix86_get_builtin_func_type (FLOAT128_FTYPE_FLOAT128); - t = add_builtin_function ("__builtin_fabsq", t, IX86_BUILTIN_FABSQ, - BUILT_IN_MD, "__fabstf2", NULL_TREE); - TREE_READONLY (t) = 1; - ix86_builtins[(int) IX86_BUILTIN_FABSQ] = t; - - t = ix86_get_builtin_func_type (FLOAT128_FTYPE_FLOAT128_FLOAT128); - t = add_builtin_function ("__builtin_copysignq", t, IX86_BUILTIN_COPYSIGNQ, - BUILT_IN_MD, "__copysigntf3", NULL_TREE); - TREE_READONLY (t) = 1; - ix86_builtins[(int) IX86_BUILTIN_COPYSIGNQ] = t; + ftype = ix86_get_builtin_func_type (FLOAT128_FTYPE_FLOAT128); + decl = add_builtin_function ("__builtin_fabsq", ftype, IX86_BUILTIN_FABSQ, + BUILT_IN_MD, "__fabstf2", NULL_TREE); + TREE_READONLY (decl) = 1; + ix86_builtins[(int) IX86_BUILTIN_FABSQ] = decl; + + ftype = ix86_get_builtin_func_type (FLOAT128_FTYPE_FLOAT128_FLOAT128); + decl = add_builtin_function ("__builtin_copysignq", ftype, + IX86_BUILTIN_COPYSIGNQ, BUILT_IN_MD, + "__copysigntf3", NULL_TREE); + TREE_READONLY (decl) = 1; + ix86_builtins[(int) IX86_BUILTIN_COPYSIGNQ] = decl; ix86_init_tm_builtins (); ix86_init_mmx_sse_builtins (); diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 96b4f04234b..a0633543602 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -18445,28 +18445,19 @@ integers, these use @code{V4SI}. Finally, some instructions operate on an entire vector register, interpreting it as a 128-bit integer, these use mode @code{TI}. -In 64-bit mode, the x86-64 family of processors uses additional built-in +The x86-32 and x86-64 family of processors use additional built-in functions for efficient use of @code{TF} (@code{__float128}) 128-bit floating point and @code{TC} 128-bit complex floating-point values. -The following floating-point built-in functions are available in 64-bit -mode. All of them implement the function that is part of the name. +The following floating-point built-in functions are always available. All +of them implement the function that is part of the name. @smallexample __float128 __builtin_fabsq (__float128) __float128 __builtin_copysignq (__float128, __float128) @end smallexample -The following built-in function is always available. - -@table @code -@item void __builtin_ia32_pause (void) -Generates the @code{pause} machine instruction with a compiler memory -barrier. -@end table - -The following floating-point built-in functions are made available in the -64-bit mode. +The following built-in functions are always available. @table @code @item __float128 __builtin_infq (void) @@ -18486,6 +18477,14 @@ Similar to @code{__builtin_nans}, except the return type is @code{__float128}. @findex __builtin_nansq @end table +The following built-in function is always available. + +@table @code +@item void __builtin_ia32_pause (void) +Generates the @code{pause} machine instruction with a compiler memory +barrier. +@end table + The following built-in functions are always available and can be used to check the target platform type. -- 2.30.2