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
This commit is contained in:
Uros Bizjak 2016-06-12 21:38:42 +02:00 committed by Uros Bizjak
parent ee38bd2e97
commit e449556dc8
3 changed files with 40 additions and 34 deletions

View file

@ -1,3 +1,10 @@
2016-06-12 Uros Bizjak <ubizjak@gmail.com>
* 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 <ubizjak@gmail.com>
PR target/71241

View file

@ -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;
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;
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_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 ();

View file

@ -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.