Get rid of ASM_TYPE_DIRECTIVE{,_PREFIX}.
This commit is contained in:
parent
2747bf9adf
commit
b67e9372b2
81
ChangeLog
81
ChangeLog
|
@ -1,3 +1,84 @@
|
|||
2012-08-02 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
[BZ#14150]
|
||||
* configure.in (libc_cv_asm_type_prefix): Remove test. Replace
|
||||
libc_cv_asm_type_prefix with %.
|
||||
* configure: Regenerated.
|
||||
* include/libc-symbols.h: Remove comment about ASM_TYPE_DIRECTIVE_PREFIX.
|
||||
Replace ASM_TYPE_DIRECTIVE_PREFIX with %.
|
||||
(declare_symbol_alias_1_paste) [__ASSEMBLER__]: Do not define.
|
||||
(declare_symbol_alias_1_paste_1) [__ASSEMBLER__]: Likewise.
|
||||
(declare_symbol_alias_1_stringify) [!__ASSEMBLER__]: Likewise.
|
||||
(declare_symbol_alias_1_stringify_1) [!__ASSEMBLER__]: Likewise.
|
||||
* elf/tst-unique2mod2.c: Replace ASM_TYPE_DIRECTIVE_PREFIX with %.
|
||||
[HAVE_ASM_UNIQUE_OBJECT]: Do not define S.
|
||||
[HAVE_ASM_UNIQUE_OBJECT]: Do not define _S.
|
||||
* elf/tst-unique2mod1.c: Likewise.
|
||||
* elf/tst-unique1mod2.c: Likewise.
|
||||
* elf/tst-unique1mod1.c: Likewise.
|
||||
* config.h.in: Do not undef ASM_TYPE_DIRECTIVE_PREFIX.
|
||||
* sysdeps/s390/s390-32/sysdep.h: Do not define ASM_TYPE_DIRECTIVE.
|
||||
Replace ASM_TYPE_DIRECTIVE with .type.
|
||||
* sysdeps/s390/s390-64/sysdep.h: Likewise.
|
||||
* sysdeps/i386/sysdep.h: Likewise.
|
||||
* sysdeps/x86_64/sysdep.h: Likewise.
|
||||
* sysdeps/sh/sysdep.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: Do not define ASM_TYPE_DIRECTIVE.
|
||||
* sysdeps/powerpc/sysdep.h: Likewise.
|
||||
* sysdeps/powerpc/powerpc32/sysdep.h: Replace ASM_TYPE_DIRECTIVE with .type.
|
||||
* sysdeps/s390/s390-32/s390-mcount.S: Likewise.
|
||||
* sysdeps/s390/s390-64/s390x-mcount.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_powf.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_expl.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_atanhf.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_acosh.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_pow.S: Likewise.
|
||||
* sysdeps/i386/fpu/s_asinhl.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_acoshl.S: Likewise.
|
||||
* sysdeps/i386/fpu/s_expm1.S: Likewise.
|
||||
* sysdeps/i386/fpu/s_frexpf.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_log2.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_log2l.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_scalb.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_powl.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_log10f.S: Likewise.
|
||||
* sysdeps/i386/fpu/s_cbrtf.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_logl.S: Likewise.
|
||||
* sysdeps/i386/fpu/s_cbrt.S: Likewise.
|
||||
* sysdeps/i386/fpu/s_frexpl.S: Likewise.
|
||||
* sysdeps/i386/fpu/s_expm1f.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_log2f.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_acoshf.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_log.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_scalbf.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_logf.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_log10l.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_atanh.S: Likewise.
|
||||
* sysdeps/i386/fpu/s_asinhf.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_log10.S: Likewise.
|
||||
* sysdeps/i386/fpu/s_frexp.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_atanhl.S: Likewise.
|
||||
* sysdeps/i386/fpu/s_asinh.S: Likewise.
|
||||
* sysdeps/i386/fpu/s_cbrtl.S: Likewise.
|
||||
* sysdeps/i386/fpu/e_scalbl.S: Likewise.
|
||||
* sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S: Likewise.
|
||||
* sysdeps/i386/i686/fpu/e_logl.S: Likewise.
|
||||
* sysdeps/i386/i686/strtok.S: Likewise.
|
||||
* sysdeps/i386/i386-mcount.S: Likewise.
|
||||
* sysdeps/i386/strtok.S: Likewise.
|
||||
* sysdeps/x86_64/fpu/e_expl.S: Likewise.
|
||||
* sysdeps/x86_64/fpu/e_log2l.S: Likewise.
|
||||
* sysdeps/x86_64/fpu/e_powl.S: Likewise.
|
||||
* sysdeps/x86_64/fpu/e_logl.S: Likewise.
|
||||
* sysdeps/x86_64/fpu/e_expf.S: Likewise.
|
||||
* sysdeps/x86_64/fpu/e_log10l.S: Likewise.
|
||||
* sysdeps/x86_64/fpu/s_copysignf.S: Likewise.
|
||||
* sysdeps/x86_64/fpu/s_copysign.S: Likewise.
|
||||
* sysdeps/x86_64/fpu/e_scalbl.S: Likewise.
|
||||
* sysdeps/x86_64/_mcount.S: Likewise.
|
||||
* sysdeps/x86_64/strtok.S: Likewise.
|
||||
* sysdeps/sh/_mcount.S: Likewise.
|
||||
|
||||
2012-08-01 Roland McGrath <roland@hack.frob.com>
|
||||
|
||||
* libio/iofopen.c: Include <fcntl.h>.
|
||||
|
|
4
NEWS
4
NEWS
|
@ -9,8 +9,8 @@ Version 2.17
|
|||
|
||||
* The following bugs are resolved with this release:
|
||||
|
||||
6778, 6808, 14042, 14151, 14154, 14157, 14173, 14283, 14298, 14328, 14331,
|
||||
14337, 14347, 14349
|
||||
6778, 6808, 14042, 14150, 14151, 14154, 14157, 14173, 14283, 14298, 14328,
|
||||
14331, 14337, 14347, 14349
|
||||
|
||||
* Support for STT_GNU_IFUNC symbols added for s390 and s390x.
|
||||
Optimized versions of memcpy, memset, and memcmp added for System z10 and
|
||||
|
|
|
@ -37,10 +37,6 @@
|
|||
/* Define if the assembler supports the `.set' directive. */
|
||||
#undef HAVE_ASM_SET_DIRECTIVE
|
||||
|
||||
/* Define to the prefix before `object' or `function' in the
|
||||
assembler's `.type' directive, if it has one. */
|
||||
#undef ASM_TYPE_DIRECTIVE_PREFIX
|
||||
|
||||
/* Define if the assembler supports the gnu_unique_object symbol type. */
|
||||
#undef HAVE_ASM_UNIQUE_OBJECT
|
||||
|
||||
|
|
40
configure
vendored
40
configure
vendored
|
@ -4076,43 +4076,7 @@ else
|
|||
$as_echo "yes" >&6; }
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for assembler .type directive prefix" >&5
|
||||
$as_echo_n "checking for assembler .type directive prefix... " >&6; }
|
||||
if ${libc_cv_asm_type_prefix+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
libc_cv_asm_type_prefix=no
|
||||
for ac_try_prefix in '@' '%' '#'; do
|
||||
cat > conftest.s <<EOF
|
||||
${libc_cv_dot_text}
|
||||
.globl foo
|
||||
.type foo, ${ac_try_prefix}object
|
||||
.size foo, 1
|
||||
foo:
|
||||
.byte 1
|
||||
EOF
|
||||
if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
|
||||
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||
test $ac_status = 0; }; }; then
|
||||
libc_cv_asm_type_prefix=${ac_try_prefix}
|
||||
fi
|
||||
rm -f conftest*
|
||||
test "x$libc_cv_asm_type_prefix" != xno && break
|
||||
done
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_asm_type_prefix" >&5
|
||||
$as_echo "$libc_cv_asm_type_prefix" >&6; }
|
||||
if test "x$libc_cv_asm_type_prefix" != xno; then
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define ASM_TYPE_DIRECTIVE_PREFIX ${libc_cv_asm_type_prefix}
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
|
||||
if test x"$libc_cv_asm_gnu_indirect_function" != xyes -o x"$libc_cv_asm_type_prefix" = xno; then
|
||||
if test x"$libc_cv_asm_gnu_indirect_function" != xyes; then
|
||||
if test x"$multi_arch" = xyes; then
|
||||
as_fn_error $? "--enable-multi-arch support requires assembler and linker support" "$LINENO" 5
|
||||
else
|
||||
|
@ -5728,7 +5692,7 @@ else
|
|||
cat > conftest.s <<EOF
|
||||
${libc_cv_dot_text}
|
||||
_sym:
|
||||
.type _sym, ${libc_cv_asm_type_prefix}gnu_unique_object
|
||||
.type _sym, %gnu_unique_object
|
||||
EOF
|
||||
if ${CC-cc} -c $ASFLAGS conftest.s 1>&5 2>&5; then
|
||||
libc_cv_asm_unique_object=yes
|
||||
|
|
26
configure.in
26
configure.in
|
@ -581,29 +581,7 @@ else
|
|||
AC_MSG_RESULT(yes)
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK(for assembler .type directive prefix,
|
||||
libc_cv_asm_type_prefix, [dnl
|
||||
libc_cv_asm_type_prefix=no
|
||||
for ac_try_prefix in '@' '%' '#'; do
|
||||
cat > conftest.s <<EOF
|
||||
${libc_cv_dot_text}
|
||||
.globl foo
|
||||
.type foo, ${ac_try_prefix}object
|
||||
.size foo, 1
|
||||
foo:
|
||||
.byte 1
|
||||
EOF
|
||||
if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
|
||||
libc_cv_asm_type_prefix=${ac_try_prefix}
|
||||
fi
|
||||
rm -f conftest*
|
||||
test "x$libc_cv_asm_type_prefix" != xno && break
|
||||
done])
|
||||
if test "x$libc_cv_asm_type_prefix" != xno; then
|
||||
AC_DEFINE_UNQUOTED(ASM_TYPE_DIRECTIVE_PREFIX, ${libc_cv_asm_type_prefix})
|
||||
fi
|
||||
|
||||
if test x"$libc_cv_asm_gnu_indirect_function" != xyes -o x"$libc_cv_asm_type_prefix" = xno; then
|
||||
if test x"$libc_cv_asm_gnu_indirect_function" != xyes; then
|
||||
if test x"$multi_arch" = xyes; then
|
||||
AC_MSG_ERROR([--enable-multi-arch support requires assembler and linker support])
|
||||
else
|
||||
|
@ -1125,7 +1103,7 @@ AC_CACHE_CHECK(for assembler gnu_unique_object symbol type,
|
|||
cat > conftest.s <<EOF
|
||||
${libc_cv_dot_text}
|
||||
_sym:
|
||||
.type _sym, ${libc_cv_asm_type_prefix}gnu_unique_object
|
||||
.type _sym, %gnu_unique_object
|
||||
EOF
|
||||
if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
|
||||
libc_cv_asm_unique_object=yes
|
||||
|
|
|
@ -1,12 +1,9 @@
|
|||
#include <config.h>
|
||||
|
||||
#ifdef HAVE_ASM_UNIQUE_OBJECT
|
||||
# define S(s) _S (s)
|
||||
# define _S(s) #s
|
||||
|
||||
asm (".data;"
|
||||
".globl var\n"
|
||||
".type var, " S (ASM_TYPE_DIRECTIVE_PREFIX) "gnu_unique_object\n"
|
||||
".type var, %gnu_unique_object\n"
|
||||
".size var, 4\n"
|
||||
"var:.zero 4\n"
|
||||
".previous");
|
||||
|
|
|
@ -1,12 +1,9 @@
|
|||
#include <config.h>
|
||||
|
||||
#ifdef HAVE_ASM_UNIQUE_OBJECT
|
||||
# define S(s) _S (s)
|
||||
# define _S(s) #s
|
||||
|
||||
asm (".data;"
|
||||
".globl var\n"
|
||||
".type var, " S (ASM_TYPE_DIRECTIVE_PREFIX) "gnu_unique_object\n"
|
||||
".type var, %gnu_unique_object\n"
|
||||
".size var, 4\n"
|
||||
"var:.zero 4\n"
|
||||
".previous");
|
||||
|
|
|
@ -1,12 +1,9 @@
|
|||
#include <config.h>
|
||||
|
||||
#ifdef HAVE_ASM_UNIQUE_OBJECT
|
||||
# define S(s) _S (s)
|
||||
# define _S(s) #s
|
||||
|
||||
asm (".data;"
|
||||
".globl var\n"
|
||||
".type var, " S (ASM_TYPE_DIRECTIVE_PREFIX) "gnu_unique_object\n"
|
||||
".type var, %gnu_unique_object\n"
|
||||
".size var, 4\n"
|
||||
"var:.zero 4\n"
|
||||
".previous");
|
||||
|
|
|
@ -1,12 +1,9 @@
|
|||
#include <config.h>
|
||||
|
||||
#ifdef HAVE_ASM_UNIQUE_OBJECT
|
||||
# define S(s) _S (s)
|
||||
# define _S(s) #s
|
||||
|
||||
asm (".data;"
|
||||
".globl var\n"
|
||||
".type var, " S (ASM_TYPE_DIRECTIVE_PREFIX) "gnu_unique_object\n"
|
||||
".type var, %gnu_unique_object\n"
|
||||
".size var, 4\n"
|
||||
"var:.zero 4\n"
|
||||
".previous");
|
||||
|
|
|
@ -27,8 +27,6 @@
|
|||
It should define for us the following symbols:
|
||||
|
||||
* HAVE_ASM_SET_DIRECTIVE if we have `.set B, A' instead of `A = B'.
|
||||
* ASM_TYPE_DIRECTIVE_PREFIX with `@' or `#' or whatever for .type,
|
||||
or leave it undefined if there is no .type directive.
|
||||
* HAVE_ASM_WEAK_DIRECTIVE if we have weak symbols using `.weak'.
|
||||
* HAVE_ASM_WEAKEXT_DIRECTIVE if we have weak symbols using `.weakext'.
|
||||
|
||||
|
@ -252,37 +250,26 @@ for linking")
|
|||
thinks it is. */
|
||||
#define declare_symbol_alias(symbol, original, type, size) \
|
||||
declare_symbol_alias_1 (symbol, original, type, size)
|
||||
#ifdef ASM_TYPE_DIRECTIVE_PREFIX
|
||||
# ifdef __ASSEMBLER__
|
||||
# define declare_symbol_alias_1(symbol, original, type, size) \
|
||||
strong_alias (original, symbol); \
|
||||
.type C_SYMBOL_NAME (symbol), \
|
||||
declare_symbol_alias_1_paste (ASM_TYPE_DIRECTIVE_PREFIX, type); \
|
||||
.size C_SYMBOL_NAME (symbol), size
|
||||
# define declare_symbol_alias_1_paste(a, b) \
|
||||
declare_symbol_alias_1_paste_1 (a,b)
|
||||
# define declare_symbol_alias_1_paste_1(a,b) a##b
|
||||
# else /* Not __ASSEMBLER__. */
|
||||
# define declare_symbol_alias_1(symbol, original, type, size) \
|
||||
asm (".globl " __SYMBOL_PREFIX #symbol \
|
||||
"\n\t" declare_symbol_alias_1_alias (symbol, original) \
|
||||
"\n\t.type " __SYMBOL_PREFIX #symbol ", " \
|
||||
declare_symbol_alias_1_stringify (ASM_TYPE_DIRECTIVE_PREFIX) #type \
|
||||
"\n\t.size " __SYMBOL_PREFIX #symbol ", " #size);
|
||||
# define declare_symbol_alias_1_stringify(x) \
|
||||
declare_symbol_alias_1_stringify_1 (x)
|
||||
# define declare_symbol_alias_1_stringify_1(x) #x
|
||||
# ifdef HAVE_ASM_SET_DIRECTIVE
|
||||
# define declare_symbol_alias_1_alias(symbol, original) \
|
||||
".set " __SYMBOL_PREFIX #symbol ", " __SYMBOL_PREFIX #original
|
||||
# else
|
||||
# define declare_symbol_alias_1_alias(symbol, original) \
|
||||
__SYMBOL_PREFIX #symbol " = " __SYMBOL_PREFIX #original
|
||||
# endif /* HAVE_ASM_SET_DIRECTIVE */
|
||||
# endif /* __ASSEMBLER__ */
|
||||
#else
|
||||
# define declare_symbol_1(symbol, type, size) /* Nothing. */
|
||||
#endif
|
||||
#ifdef __ASSEMBLER__
|
||||
# define declare_symbol_alias_1(symbol, original, type, size) \
|
||||
strong_alias (original, symbol); \
|
||||
.type C_SYMBOL_NAME (symbol), %##type; \
|
||||
.size C_SYMBOL_NAME (symbol), size
|
||||
#else /* Not __ASSEMBLER__. */
|
||||
# define declare_symbol_alias_1(symbol, original, type, size) \
|
||||
asm (".globl " __SYMBOL_PREFIX #symbol \
|
||||
"\n\t" declare_symbol_alias_1_alias (symbol, original) \
|
||||
"\n\t.type " __SYMBOL_PREFIX #symbol ", " \
|
||||
"%" #type \
|
||||
"\n\t.size " __SYMBOL_PREFIX #symbol ", " #size);
|
||||
# ifdef HAVE_ASM_SET_DIRECTIVE
|
||||
# define declare_symbol_alias_1_alias(symbol, original) \
|
||||
".set " __SYMBOL_PREFIX #symbol ", " __SYMBOL_PREFIX #original
|
||||
# else
|
||||
# define declare_symbol_alias_1_alias(symbol, original) \
|
||||
__SYMBOL_PREFIX #symbol " = " __SYMBOL_PREFIX #original
|
||||
# endif /* HAVE_ASM_SET_DIRECTIVE */
|
||||
#endif /* __ASSEMBLER__ */
|
||||
|
||||
|
||||
/*
|
||||
|
|
|
@ -22,10 +22,10 @@
|
|||
.section .rodata.cst8,"aM",@progbits,8
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
|
||||
|
|
|
@ -22,10 +22,10 @@
|
|||
.section .rodata.cst8,"aM",@progbits,8
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
|
||||
|
|
|
@ -25,13 +25,13 @@
|
|||
/* Please note that we use double value for 1.0. This number
|
||||
has an exact representation and so we don't get accuracy
|
||||
problems. The advantage is that the code is simpler. */
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
/* It is not important that this constant is precise. It is only
|
||||
a value which is known to be on the safe side for using the
|
||||
fyl2xp1 instruction. */
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
|
||||
|
|
|
@ -22,16 +22,16 @@
|
|||
.section .rodata
|
||||
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(half,@object)
|
||||
.type half,@object
|
||||
half: .double 0.5
|
||||
ASM_SIZE_DIRECTIVE(half)
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
ASM_TYPE_DIRECTIVE(ln2_2,@object)
|
||||
.type ln2_2,@object
|
||||
ln2_2: .tfloat 0.3465735902799726547086160
|
||||
ASM_SIZE_DIRECTIVE(ln2_2)
|
||||
|
||||
|
|
|
@ -22,17 +22,17 @@
|
|||
.section .rodata
|
||||
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(half,@object)
|
||||
.type half,@object
|
||||
half: .double 0.5
|
||||
ASM_SIZE_DIRECTIVE(half)
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(ln2_2,@object)
|
||||
.type ln2_2,@object
|
||||
ln2_2: .tfloat 0.3465735902799726547086160
|
||||
ASM_SIZE_DIRECTIVE(ln2_2)
|
||||
|
||||
|
|
|
@ -25,20 +25,20 @@
|
|||
/* Please note that we use double values for 0.5 and 1.0. These
|
||||
numbers have exact representations and so we don't get accuracy
|
||||
problems. The advantage is that the code is simpler. */
|
||||
ASM_TYPE_DIRECTIVE(half,@object)
|
||||
.type half,@object
|
||||
half: .double 0.5
|
||||
ASM_SIZE_DIRECTIVE(half)
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
/* It is not important that this constant is precise. It is only
|
||||
a value which is known to be on the safe side for using the
|
||||
fyl2xp1 instruction. */
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(ln2_2,@object)
|
||||
.type ln2_2,@object
|
||||
ln2_2: .tfloat 0.3465735902799726547086160
|
||||
ASM_SIZE_DIRECTIVE(ln2_2)
|
||||
|
||||
|
|
|
@ -42,26 +42,26 @@
|
|||
|
||||
.p2align 4
|
||||
#ifdef USE_AS_EXP10L
|
||||
ASM_TYPE_DIRECTIVE(c0,@object)
|
||||
.type c0,@object
|
||||
c0: .byte 0, 0, 0, 0, 0, 0, 0x9a, 0xd4, 0x00, 0x40
|
||||
.byte 0, 0, 0, 0, 0, 0
|
||||
ASM_SIZE_DIRECTIVE(c0)
|
||||
ASM_TYPE_DIRECTIVE(c1,@object)
|
||||
.type c1,@object
|
||||
c1: .byte 0x58, 0x92, 0xfc, 0x15, 0x37, 0x9a, 0x97, 0xf0, 0xef, 0x3f
|
||||
.byte 0, 0, 0, 0, 0, 0
|
||||
ASM_SIZE_DIRECTIVE(c1)
|
||||
#else
|
||||
ASM_TYPE_DIRECTIVE(c0,@object)
|
||||
.type c0,@object
|
||||
c0: .byte 0, 0, 0, 0, 0, 0, 0xaa, 0xb8, 0xff, 0x3f
|
||||
.byte 0, 0, 0, 0, 0, 0
|
||||
ASM_SIZE_DIRECTIVE(c0)
|
||||
ASM_TYPE_DIRECTIVE(c1,@object)
|
||||
.type c1,@object
|
||||
c1: .byte 0x20, 0xfa, 0xee, 0xc2, 0x5f, 0x70, 0xa5, 0xec, 0xed, 0x3f
|
||||
.byte 0, 0, 0, 0, 0, 0
|
||||
ASM_SIZE_DIRECTIVE(c1)
|
||||
#endif
|
||||
#ifndef USE_AS_EXPM1L
|
||||
ASM_TYPE_DIRECTIVE(csat,@object)
|
||||
.type csat,@object
|
||||
csat: .byte 0, 0, 0, 0, 0, 0, 0, 0x80, 0x0e, 0x40
|
||||
.byte 0, 0, 0, 0, 0, 0
|
||||
ASM_SIZE_DIRECTIVE(csat)
|
||||
|
|
|
@ -10,13 +10,13 @@
|
|||
.section .rodata.cst8,"aM",@progbits,8
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
/* It is not important that this constant is precise. It is only
|
||||
a value which is known to be on the safe side for using the
|
||||
fyl2xp1 instruction. */
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
|
||||
|
|
|
@ -10,13 +10,13 @@
|
|||
.section .rodata.cst8,"aM",@progbits,8
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
/* It is not important that this constant is precise. It is only
|
||||
a value which is known to be on the safe side for using the
|
||||
fyl2xp1 instruction. */
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
|
||||
|
|
|
@ -11,13 +11,13 @@
|
|||
.section .rodata.cst8,"aM",@progbits,8
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
/* It is not important that this constant is precise. It is only
|
||||
a value which is known to be on the safe side for using the
|
||||
fyl2xp1 instruction. */
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
|
||||
|
|
|
@ -12,13 +12,13 @@
|
|||
.section .rodata.cst8,"aM",@progbits,8
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
/* It is not important that this constant is precise. It is only
|
||||
a value which is known to be on the safe side for using the
|
||||
fyl2xp1 instruction. */
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
|
||||
|
|
|
@ -11,13 +11,13 @@
|
|||
.section .rodata.cst8,"aM",@progbits,8
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
/* It is not important that this constant is precise. It is only
|
||||
a value which is known to be on the safe side for using the
|
||||
fyl2xp1 instruction. */
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
|
||||
|
|
|
@ -11,13 +11,13 @@
|
|||
.section .rodata.cst8,"aM",@progbits,8
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
/* It is not important that this constant is precise. It is only
|
||||
a value which is known to be on the safe side for using the
|
||||
fyl2xp1 instruction. */
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
|
||||
|
|
|
@ -11,13 +11,13 @@
|
|||
.section .rodata.cst8,"aM",@progbits,8
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
/* It is not important that this constant is precise. It is only
|
||||
a value which is known to be on the safe side for using the
|
||||
fyl2xp1 instruction. */
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
|
||||
|
|
|
@ -11,13 +11,13 @@
|
|||
.section .rodata.cst8,"aM",@progbits,8
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
/* It is not important that this constant is precise. It is only
|
||||
a value which is known to be on the safe side for using the
|
||||
fyl2xp1 instruction. */
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
|
||||
|
|
|
@ -11,13 +11,13 @@
|
|||
.section .rodata.cst8,"aM",@progbits,8
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
/* It is not important that this constant is precise. It is only
|
||||
a value which is known to be on the safe side for using the
|
||||
fyl2xp1 instruction. */
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
|
||||
|
|
|
@ -23,31 +23,31 @@
|
|||
.section .rodata.cst8,"aM",@progbits,8
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
ASM_TYPE_DIRECTIVE(p63,@object)
|
||||
.type p63,@object
|
||||
p63: .byte 0, 0, 0, 0, 0, 0, 0xe0, 0x43
|
||||
ASM_SIZE_DIRECTIVE(p63)
|
||||
ASM_TYPE_DIRECTIVE(p10,@object)
|
||||
.type p10,@object
|
||||
p10: .byte 0, 0, 0, 0, 0, 0, 0x90, 0x40
|
||||
ASM_SIZE_DIRECTIVE(p10)
|
||||
|
||||
.section .rodata.cst16,"aM",@progbits,16
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(infinity,@object)
|
||||
.type infinity,@object
|
||||
inf_zero:
|
||||
infinity:
|
||||
.byte 0, 0, 0, 0, 0, 0, 0xf0, 0x7f
|
||||
ASM_SIZE_DIRECTIVE(infinity)
|
||||
ASM_TYPE_DIRECTIVE(zero,@object)
|
||||
.type zero,@object
|
||||
zero: .double 0.0
|
||||
ASM_SIZE_DIRECTIVE(zero)
|
||||
ASM_TYPE_DIRECTIVE(minf_mzero,@object)
|
||||
.type minf_mzero,@object
|
||||
minf_mzero:
|
||||
minfinity:
|
||||
.byte 0, 0, 0, 0, 0, 0, 0xf0, 0xff
|
||||
|
|
|
@ -23,28 +23,28 @@
|
|||
.section .rodata.cst8,"aM",@progbits,8
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
ASM_TYPE_DIRECTIVE(p31,@object)
|
||||
.type p31,@object
|
||||
p31: .byte 0, 0, 0, 0, 0, 0, 0xe0, 0x41
|
||||
ASM_SIZE_DIRECTIVE(p31)
|
||||
|
||||
.section .rodata.cst16,"aM",@progbits,16
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(infinity,@object)
|
||||
.type infinity,@object
|
||||
inf_zero:
|
||||
infinity:
|
||||
.byte 0, 0, 0, 0, 0, 0, 0xf0, 0x7f
|
||||
ASM_SIZE_DIRECTIVE(infinity)
|
||||
ASM_TYPE_DIRECTIVE(zero,@object)
|
||||
.type zero,@object
|
||||
zero: .double 0.0
|
||||
ASM_SIZE_DIRECTIVE(zero)
|
||||
ASM_TYPE_DIRECTIVE(minf_mzero,@object)
|
||||
.type minf_mzero,@object
|
||||
minf_mzero:
|
||||
minfinity:
|
||||
.byte 0, 0, 0, 0, 0, 0, 0xf0, 0xff
|
||||
|
|
|
@ -23,34 +23,34 @@
|
|||
.section .rodata.cst8,"aM",@progbits,8
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
ASM_TYPE_DIRECTIVE(p63,@object)
|
||||
.type p63,@object
|
||||
p63: .byte 0, 0, 0, 0, 0, 0, 0xe0, 0x43
|
||||
ASM_SIZE_DIRECTIVE(p63)
|
||||
ASM_TYPE_DIRECTIVE(p64,@object)
|
||||
.type p64,@object
|
||||
p64: .byte 0, 0, 0, 0, 0, 0, 0xf0, 0x43
|
||||
ASM_SIZE_DIRECTIVE(p64)
|
||||
ASM_TYPE_DIRECTIVE(p78,@object)
|
||||
.type p78,@object
|
||||
p78: .byte 0, 0, 0, 0, 0, 0, 0xd0, 0x44
|
||||
ASM_SIZE_DIRECTIVE(p78)
|
||||
|
||||
.section .rodata.cst16,"aM",@progbits,16
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(infinity,@object)
|
||||
.type infinity,@object
|
||||
inf_zero:
|
||||
infinity:
|
||||
.byte 0, 0, 0, 0, 0, 0, 0xf0, 0x7f
|
||||
ASM_SIZE_DIRECTIVE(infinity)
|
||||
ASM_TYPE_DIRECTIVE(zero,@object)
|
||||
.type zero,@object
|
||||
zero: .double 0.0
|
||||
ASM_SIZE_DIRECTIVE(zero)
|
||||
ASM_TYPE_DIRECTIVE(minf_mzero,@object)
|
||||
.type minf_mzero,@object
|
||||
minf_mzero:
|
||||
minfinity:
|
||||
.byte 0, 0, 0, 0, 0, 0, 0xf0, 0xff
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
.section .rodata
|
||||
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(zero_nan,@object)
|
||||
.type zero_nan,@object
|
||||
zero_nan:
|
||||
.double 0.0
|
||||
nan: .byte 0, 0, 0, 0, 0, 0, 0xff, 0x7f
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
.section .rodata
|
||||
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(zero_nan,@object)
|
||||
.type zero_nan,@object
|
||||
zero_nan:
|
||||
.double 0.0
|
||||
nan: .byte 0, 0, 0, 0, 0, 0, 0xff, 0x7f
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
.section .rodata
|
||||
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(zero_nan,@object)
|
||||
.type zero_nan,@object
|
||||
zero_nan:
|
||||
.double 0.0
|
||||
nan: .byte 0, 0, 0, 0, 0, 0, 0xff, 0x7f
|
||||
|
|
|
@ -22,13 +22,13 @@
|
|||
.section .rodata
|
||||
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(huge,@object)
|
||||
.type huge,@object
|
||||
huge: .double 1e+300
|
||||
ASM_SIZE_DIRECTIVE(huge)
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
|
||||
|
|
|
@ -22,13 +22,13 @@
|
|||
.section .rodata
|
||||
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(huge,@object)
|
||||
.type huge,@object
|
||||
huge: .double 1e+36
|
||||
ASM_SIZE_DIRECTIVE(huge)
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
|
||||
|
|
|
@ -22,20 +22,20 @@
|
|||
.section .rodata
|
||||
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(huge,@object)
|
||||
.type huge,@object
|
||||
huge: .tfloat 1e+4930
|
||||
ASM_SIZE_DIRECTIVE(huge)
|
||||
.align ALIGNARG(4)
|
||||
/* Please note that we use double value for 1.0. This number
|
||||
has an exact representation and so we don't get accuracy
|
||||
problems. The advantage is that the code is simpler. */
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
/* It is not important that this constant is precise. It is only
|
||||
a value which is known to be on the safe side for using the
|
||||
fyl2xp1 instruction. */
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
|
||||
|
|
|
@ -23,25 +23,25 @@
|
|||
.section .rodata
|
||||
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(f7,@object)
|
||||
.type f7,@object
|
||||
f7: .double -0.145263899385486377
|
||||
ASM_SIZE_DIRECTIVE(f7)
|
||||
ASM_TYPE_DIRECTIVE(f6,@object)
|
||||
.type f6,@object
|
||||
f6: .double 0.784932344976639262
|
||||
ASM_SIZE_DIRECTIVE(f6)
|
||||
ASM_TYPE_DIRECTIVE(f5,@object)
|
||||
.type f5,@object
|
||||
f5: .double -1.83469277483613086
|
||||
ASM_SIZE_DIRECTIVE(f5)
|
||||
ASM_TYPE_DIRECTIVE(f4,@object)
|
||||
.type f4,@object
|
||||
f4: .double 2.44693122563534430
|
||||
ASM_SIZE_DIRECTIVE(f4)
|
||||
ASM_TYPE_DIRECTIVE(f3,@object)
|
||||
.type f3,@object
|
||||
f3: .double -2.11499494167371287
|
||||
ASM_SIZE_DIRECTIVE(f3)
|
||||
ASM_TYPE_DIRECTIVE(f2,@object)
|
||||
.type f2,@object
|
||||
f2: .double 1.50819193781584896
|
||||
ASM_SIZE_DIRECTIVE(f2)
|
||||
ASM_TYPE_DIRECTIVE(f1,@object)
|
||||
.type f1,@object
|
||||
f1: .double 0.354895765043919860
|
||||
ASM_SIZE_DIRECTIVE(f1)
|
||||
|
||||
|
@ -50,7 +50,7 @@ f1: .double 0.354895765043919860
|
|||
#define SQR_CBRT2 1.5874010519681994748
|
||||
#define ONE_SQR_CBRT2 0.629960524947436582364439673883
|
||||
|
||||
ASM_TYPE_DIRECTIVE(factor,@object)
|
||||
.type factor,@object
|
||||
factor: .double ONE_SQR_CBRT2
|
||||
.double ONE_CBRT2
|
||||
.double 1.0
|
||||
|
@ -58,7 +58,7 @@ factor: .double ONE_SQR_CBRT2
|
|||
.double SQR_CBRT2
|
||||
ASM_SIZE_DIRECTIVE(factor)
|
||||
|
||||
ASM_TYPE_DIRECTIVE(two54,@object)
|
||||
.type two54,@object
|
||||
two54: .byte 0, 0, 0, 0, 0, 0, 0x50, 0x43
|
||||
ASM_SIZE_DIRECTIVE(two54)
|
||||
|
||||
|
|
|
@ -23,13 +23,13 @@
|
|||
.section .rodata
|
||||
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(f3,@object)
|
||||
.type f3,@object
|
||||
f3: .double 0.191502161678719066
|
||||
ASM_SIZE_DIRECTIVE(f3)
|
||||
ASM_TYPE_DIRECTIVE(f2,@object)
|
||||
.type f2,@object
|
||||
f2: .double 0.697570460207922770
|
||||
ASM_SIZE_DIRECTIVE(f2)
|
||||
ASM_TYPE_DIRECTIVE(f1,@object)
|
||||
.type f1,@object
|
||||
f1: .double 0.492659620528969547
|
||||
ASM_SIZE_DIRECTIVE(f1)
|
||||
|
||||
|
@ -38,7 +38,7 @@ f1: .double 0.492659620528969547
|
|||
#define SQR_CBRT2 1.5874010519681994748
|
||||
#define ONE_SQR_CBRT2 0.629960524947436582364439673883
|
||||
|
||||
ASM_TYPE_DIRECTIVE(factor,@object)
|
||||
.type factor,@object
|
||||
.align ALIGNARG(4)
|
||||
factor: .double ONE_SQR_CBRT2
|
||||
.double ONE_CBRT2
|
||||
|
@ -47,7 +47,7 @@ factor: .double ONE_SQR_CBRT2
|
|||
.double SQR_CBRT2
|
||||
ASM_SIZE_DIRECTIVE(factor)
|
||||
|
||||
ASM_TYPE_DIRECTIVE(two25,@object)
|
||||
.type two25,@object
|
||||
two25: .byte 0, 0, 0, 0x4c
|
||||
ASM_SIZE_DIRECTIVE(two25)
|
||||
|
||||
|
|
|
@ -23,35 +23,35 @@
|
|||
.section .rodata
|
||||
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(f8,@object)
|
||||
.type f8,@object
|
||||
f8: .tfloat 0.161617097923756032
|
||||
ASM_SIZE_DIRECTIVE(f8)
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(f7,@object)
|
||||
.type f7,@object
|
||||
f7: .tfloat -0.988553671195413709
|
||||
ASM_SIZE_DIRECTIVE(f7)
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(f6,@object)
|
||||
.type f6,@object
|
||||
f6: .tfloat 2.65298938441952296
|
||||
ASM_SIZE_DIRECTIVE(f6)
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(f5,@object)
|
||||
.type f5,@object
|
||||
f5: .tfloat -4.11151425200350531
|
||||
ASM_SIZE_DIRECTIVE(f5)
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(f4,@object)
|
||||
.type f4,@object
|
||||
f4: .tfloat 4.09559907378707839
|
||||
ASM_SIZE_DIRECTIVE(f4)
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(f3,@object)
|
||||
.type f3,@object
|
||||
f3: .tfloat -2.82414939754975962
|
||||
ASM_SIZE_DIRECTIVE(f3)
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(f2,@object)
|
||||
.type f2,@object
|
||||
f2: .tfloat 1.67595307700780102
|
||||
ASM_SIZE_DIRECTIVE(f2)
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(f1,@object)
|
||||
.type f1,@object
|
||||
f1: .tfloat 0.338058687610520237
|
||||
ASM_SIZE_DIRECTIVE(f1)
|
||||
|
||||
|
@ -62,7 +62,7 @@ f1: .tfloat 0.338058687610520237
|
|||
|
||||
/* We make the entries in the following table all 16 bytes
|
||||
wide to avoid having to implement a multiplication by 10. */
|
||||
ASM_TYPE_DIRECTIVE(factor,@object)
|
||||
.type factor,@object
|
||||
.align ALIGNARG(4)
|
||||
factor: .tfloat ONE_SQR_CBRT2
|
||||
.byte 0, 0, 0, 0, 0, 0
|
||||
|
@ -75,7 +75,7 @@ factor: .tfloat ONE_SQR_CBRT2
|
|||
.tfloat SQR_CBRT2
|
||||
ASM_SIZE_DIRECTIVE(factor)
|
||||
|
||||
ASM_TYPE_DIRECTIVE(two64,@object)
|
||||
.type two64,@object
|
||||
.align ALIGNARG(4)
|
||||
two64: .byte 0, 0, 0, 0, 0, 0, 0xf0, 0x43
|
||||
ASM_SIZE_DIRECTIVE(two64)
|
||||
|
|
|
@ -27,13 +27,13 @@
|
|||
.section .rodata
|
||||
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(minus1,@object)
|
||||
.type minus1,@object
|
||||
minus1: .double -1.0
|
||||
ASM_SIZE_DIRECTIVE(minus1)
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
ASM_TYPE_DIRECTIVE(l2e,@object)
|
||||
.type l2e,@object
|
||||
l2e: .tfloat 1.442695040888963407359924681002
|
||||
ASM_SIZE_DIRECTIVE(l2e)
|
||||
|
||||
|
|
|
@ -27,13 +27,13 @@
|
|||
.section .rodata
|
||||
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(minus1,@object)
|
||||
.type minus1,@object
|
||||
minus1: .double -1.0
|
||||
ASM_SIZE_DIRECTIVE(minus1)
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
ASM_TYPE_DIRECTIVE(l2e,@object)
|
||||
.type l2e,@object
|
||||
l2e: .tfloat 1.442695040888963407359924681002
|
||||
ASM_SIZE_DIRECTIVE(l2e)
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
.section .rodata
|
||||
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(two54,@object)
|
||||
.type two54,@object
|
||||
two54: .byte 0, 0, 0, 0, 0, 0, 0x50, 0x43
|
||||
ASM_SIZE_DIRECTIVE(two54)
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
.section .rodata
|
||||
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(two25,@object)
|
||||
.type two25,@object
|
||||
two25: .byte 0, 0, 0, 0x4c
|
||||
ASM_SIZE_DIRECTIVE(two25)
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
.section .rodata
|
||||
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(two64,@object)
|
||||
.type two64,@object
|
||||
two64: .byte 0, 0, 0, 0, 0, 0, 0xf0, 0x43
|
||||
ASM_SIZE_DIRECTIVE(two64)
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
- some (future) systems might want to pass parameters in registers. */
|
||||
|
||||
.globl C_SYMBOL_NAME(_mcount)
|
||||
ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(_mcount), @function)
|
||||
.type C_SYMBOL_NAME(_mcount), @function
|
||||
.align ALIGNARG(4)
|
||||
C_LABEL(_mcount)
|
||||
/* Save the caller-clobbered registers. */
|
||||
|
@ -55,7 +55,7 @@ weak_alias (_mcount, mcount)
|
|||
|
||||
/* Same as above, but doesn't require a frame pointer */
|
||||
.globl C_SYMBOL_NAME(__fentry__)
|
||||
ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(__fentry__), @function)
|
||||
.type C_SYMBOL_NAME(__fentry__), @function
|
||||
.align ALIGNARG(4)
|
||||
C_LABEL(__fentry__)
|
||||
/* Save the caller-clobbered registers. */
|
||||
|
|
|
@ -12,13 +12,13 @@
|
|||
.section .rodata.cst8,"aM",@progbits,8
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
/* It is not important that this constant is precise. It is only
|
||||
a value which is known to be on the safe side for using the
|
||||
fyl2xp1 instruction. */
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
|
||||
|
|
|
@ -243,82 +243,82 @@ L(DP_T): /* table of double precision values 2^(j/K) for j=[0..K-1] */
|
|||
.long 0xee615a27, 0x3ffefa1b
|
||||
.long 0x5b6e4540, 0x3fff5076
|
||||
.long 0x819e90d8, 0x3fffa7c1
|
||||
ASM_TYPE_DIRECTIVE(L(DP_T), @object)
|
||||
.type L(DP_T), @object
|
||||
ASM_SIZE_DIRECTIVE(L(DP_T))
|
||||
|
||||
.section .rodata.cst8,"aM",@progbits,8
|
||||
.p2align 3
|
||||
L(DP_KLN2): /* double precision K/log(2) */
|
||||
.long 0x652b82fe, 0x40571547
|
||||
ASM_TYPE_DIRECTIVE(L(DP_KLN2), @object)
|
||||
.type L(DP_KLN2), @object
|
||||
ASM_SIZE_DIRECTIVE(L(DP_KLN2))
|
||||
|
||||
.p2align 3
|
||||
L(DP_NLN2K): /* double precision -log(2)/K */
|
||||
.long 0xfefa39ef, 0xbf862e42
|
||||
ASM_TYPE_DIRECTIVE(L(DP_NLN2K), @object)
|
||||
.type L(DP_NLN2K), @object
|
||||
ASM_SIZE_DIRECTIVE(L(DP_NLN2K))
|
||||
|
||||
.p2align 3
|
||||
L(DP_RS): /* double precision 2^23+2^22 */
|
||||
.long 0x00000000, 0x41680000
|
||||
ASM_TYPE_DIRECTIVE(L(DP_RS), @object)
|
||||
.type L(DP_RS), @object
|
||||
ASM_SIZE_DIRECTIVE(L(DP_RS))
|
||||
|
||||
.p2align 3
|
||||
L(DP_P3): /* double precision polynomial coefficient P3 */
|
||||
.long 0xeb78fa85, 0x3fa56420
|
||||
ASM_TYPE_DIRECTIVE(L(DP_P3), @object)
|
||||
.type L(DP_P3), @object
|
||||
ASM_SIZE_DIRECTIVE(L(DP_P3))
|
||||
|
||||
.p2align 3
|
||||
L(DP_P1): /* double precision polynomial coefficient P1 */
|
||||
.long 0x008d6118, 0x3fe00000
|
||||
ASM_TYPE_DIRECTIVE(L(DP_P1), @object)
|
||||
.type L(DP_P1), @object
|
||||
ASM_SIZE_DIRECTIVE(L(DP_P1))
|
||||
|
||||
.p2align 3
|
||||
L(DP_P2): /* double precision polynomial coefficient P2 */
|
||||
.long 0xda752d4f, 0x3fc55550
|
||||
ASM_TYPE_DIRECTIVE(L(DP_P2), @object)
|
||||
.type L(DP_P2), @object
|
||||
ASM_SIZE_DIRECTIVE(L(DP_P2))
|
||||
|
||||
.p2align 3
|
||||
L(DP_P0): /* double precision polynomial coefficient P0 */
|
||||
.long 0xffffe7c6, 0x3fefffff
|
||||
ASM_TYPE_DIRECTIVE(L(DP_P0), @object)
|
||||
.type L(DP_P0), @object
|
||||
ASM_SIZE_DIRECTIVE(L(DP_P0))
|
||||
|
||||
.p2align 2
|
||||
L(SP_INF_0):
|
||||
.long 0x7f800000 /* single precision Inf */
|
||||
.long 0 /* single precision zero */
|
||||
ASM_TYPE_DIRECTIVE(L(SP_INF_0), @object)
|
||||
.type L(SP_INF_0), @object
|
||||
ASM_SIZE_DIRECTIVE(L(SP_INF_0))
|
||||
|
||||
.section .rodata.cst4,"aM",@progbits,4
|
||||
.p2align 2
|
||||
L(SP_RS): /* single precision 2^23+2^22 */
|
||||
.long 0x4b400000
|
||||
ASM_TYPE_DIRECTIVE(L(SP_RS), @object)
|
||||
.type L(SP_RS), @object
|
||||
ASM_SIZE_DIRECTIVE(L(SP_RS))
|
||||
|
||||
.p2align 2
|
||||
L(SP_SMALL): /* single precision small value 2^(-100) */
|
||||
.long 0x0d800000
|
||||
ASM_TYPE_DIRECTIVE(L(SP_SMALL), @object)
|
||||
.type L(SP_SMALL), @object
|
||||
ASM_SIZE_DIRECTIVE(L(SP_SMALL))
|
||||
|
||||
.p2align 2
|
||||
L(SP_LARGE): /* single precision large value 2^100 */
|
||||
.long 0x71800000
|
||||
ASM_TYPE_DIRECTIVE(L(SP_LARGE), @object)
|
||||
.type L(SP_LARGE), @object
|
||||
ASM_SIZE_DIRECTIVE(L(SP_LARGE))
|
||||
|
||||
.p2align 2
|
||||
L(SP_ONE): /* single precision 1.0 */
|
||||
.long 0x3f800000
|
||||
ASM_TYPE_DIRECTIVE(L(SP_ONE), @object)
|
||||
.type L(SP_ONE), @object
|
||||
ASM_SIZE_DIRECTIVE(L(SP_ONE))
|
||||
|
||||
strong_alias (__ieee754_expf_sse2, __expf_finite_sse2)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* strtok (str, delim) -- Return next DELIM separated token from STR.
|
||||
For Intel 80686.
|
||||
Copyright (C) 1998, 2000, 2001, 2005, 2006 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998-2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
|
||||
|
||||
|
@ -43,7 +43,7 @@
|
|||
#else
|
||||
.bss
|
||||
.local save_ptr
|
||||
ASM_TYPE_DIRECTIVE (save_ptr, @object)
|
||||
.type save_ptr, @object
|
||||
.size save_ptr, 4
|
||||
save_ptr:
|
||||
# if __BOUNDED_POINTERS__
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* strtok (str, delim) -- Return next DELIM separated token from STR.
|
||||
For Intel 80x86, x>=3.
|
||||
Copyright (C) 1996-1998,2000,2001,2005,2006 Free Software Foundation, Inc.
|
||||
Copyright (C) 1996-2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
|
||||
|
||||
|
@ -43,7 +43,7 @@
|
|||
#else
|
||||
.bss
|
||||
.local save_ptr
|
||||
ASM_TYPE_DIRECTIVE (save_ptr, @object)
|
||||
.type save_ptr, @object
|
||||
.size save_ptr, 4
|
||||
save_ptr:
|
||||
# if __BOUNDED_POINTERS__
|
||||
|
|
|
@ -50,8 +50,6 @@
|
|||
|
||||
/* ELF uses byte-counts for .align, most others use log2 of count of bytes. */
|
||||
#define ALIGNARG(log2) 1<<log2
|
||||
/* For ELF we need the `.type' directive to make shared libs work right. */
|
||||
#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg;
|
||||
#define ASM_SIZE_DIRECTIVE(name) .size name,.-name;
|
||||
|
||||
|
||||
|
@ -63,8 +61,8 @@
|
|||
#define ENTRY(name) \
|
||||
STABS_CURRENT_FILE1("") \
|
||||
STABS_CURRENT_FILE(name) \
|
||||
.globl C_SYMBOL_NAME(name); \
|
||||
ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
|
||||
.globl C_SYMBOL_NAME(name); \
|
||||
.type C_SYMBOL_NAME(name),@function; \
|
||||
.align ALIGNARG(4); \
|
||||
STABS_FUN(name) \
|
||||
C_LABEL(name) \
|
||||
|
|
|
@ -30,15 +30,15 @@
|
|||
# define CALL_MCOUNT \
|
||||
mflr r0; \
|
||||
stw r0,4(r1); \
|
||||
cfi_offset (lr, 4); \
|
||||
cfi_offset (lr, 4); \
|
||||
bl JUMPTARGET(_mcount);
|
||||
#else /* PROF */
|
||||
# define CALL_MCOUNT /* Do nothing. */
|
||||
#endif /* PROF */
|
||||
|
||||
#define ENTRY(name) \
|
||||
.globl C_SYMBOL_NAME(name); \
|
||||
ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
|
||||
.globl C_SYMBOL_NAME(name); \
|
||||
.type C_SYMBOL_NAME(name),@function; \
|
||||
.align ALIGNARG(2); \
|
||||
C_LABEL(name) \
|
||||
cfi_startproc; \
|
||||
|
@ -46,7 +46,7 @@
|
|||
|
||||
/* helper macro for accessing the 32-bit powerpc GOT. */
|
||||
|
||||
#define SETUP_GOT_ACCESS(regname,GOT_LABEL) \
|
||||
#define SETUP_GOT_ACCESS(regname,GOT_LABEL) \
|
||||
bcl 20,31,GOT_LABEL ; \
|
||||
GOT_LABEL: ; \
|
||||
mflr (regname)
|
||||
|
@ -64,8 +64,8 @@ GOT_LABEL: ; \
|
|||
past a 2^align boundary. */
|
||||
#ifdef PROF
|
||||
# define EALIGN(name, alignt, words) \
|
||||
.globl C_SYMBOL_NAME(name); \
|
||||
ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
|
||||
.globl C_SYMBOL_NAME(name); \
|
||||
.type C_SYMBOL_NAME(name),@function; \
|
||||
.align ALIGNARG(2); \
|
||||
C_LABEL(name) \
|
||||
cfi_startproc; \
|
||||
|
@ -76,8 +76,8 @@ GOT_LABEL: ; \
|
|||
0:
|
||||
#else /* PROF */
|
||||
# define EALIGN(name, alignt, words) \
|
||||
.globl C_SYMBOL_NAME(name); \
|
||||
ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
|
||||
.globl C_SYMBOL_NAME(name); \
|
||||
.type C_SYMBOL_NAME(name),@function; \
|
||||
.align ALIGNARG(alignt); \
|
||||
EALIGN_W_##words; \
|
||||
C_LABEL(name) \
|
||||
|
@ -89,7 +89,7 @@ GOT_LABEL: ; \
|
|||
cfi_endproc; \
|
||||
ASM_SIZE_DIRECTIVE(name)
|
||||
|
||||
#define DO_CALL(syscall) \
|
||||
#define DO_CALL(syscall) \
|
||||
li 0,syscall; \
|
||||
sc
|
||||
|
||||
|
|
|
@ -147,8 +147,6 @@
|
|||
|
||||
/* This seems to always be the case on PPC. */
|
||||
#define ALIGNARG(log2) log2
|
||||
/* For ELF we need the `.type' directive to make shared libs work right. */
|
||||
#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg;
|
||||
#define ASM_SIZE_DIRECTIVE(name) .size name,.-name
|
||||
|
||||
#endif /* __ASSEMBLER__ */
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
*/
|
||||
|
||||
.globl C_SYMBOL_NAME(_mcount)
|
||||
ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(_mcount), @function)
|
||||
.type C_SYMBOL_NAME(_mcount), @function
|
||||
cfi_startproc
|
||||
.align ALIGNARG(4)
|
||||
C_LABEL(_mcount)
|
||||
|
|
|
@ -25,15 +25,13 @@
|
|||
|
||||
/* ELF uses byte-counts for .align, most others use log2 of count of bytes. */
|
||||
#define ALIGNARG(log2) 1<<log2
|
||||
/* For ELF we need the `.type' directive to make shared libs work right. */
|
||||
#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg;
|
||||
#define ASM_SIZE_DIRECTIVE(name) .size name,.-name;
|
||||
|
||||
|
||||
/* Define an entry point visible from C. */
|
||||
#define ENTRY(name) \
|
||||
.globl C_SYMBOL_NAME(name); \
|
||||
ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
|
||||
.globl C_SYMBOL_NAME(name); \
|
||||
.type C_SYMBOL_NAME(name),@function; \
|
||||
.align ALIGNARG(2); \
|
||||
C_LABEL(name) \
|
||||
cfi_startproc; \
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
_mcount may not modify any register. */
|
||||
|
||||
.globl C_SYMBOL_NAME(_mcount)
|
||||
ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(_mcount), @function)
|
||||
.type C_SYMBOL_NAME(_mcount), @function
|
||||
cfi_startproc
|
||||
.align ALIGNARG(4)
|
||||
C_LABEL(_mcount)
|
||||
|
|
|
@ -25,15 +25,13 @@
|
|||
|
||||
/* ELF uses byte-counts for .align, most others use log2 of count of bytes. */
|
||||
#define ALIGNARG(log2) 1<<log2
|
||||
/* For ELF we need the `.type' directive to make shared libs work right. */
|
||||
#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg;
|
||||
#define ASM_SIZE_DIRECTIVE(name) .size name,.-name;
|
||||
|
||||
|
||||
/* Define an entry point visible from C. */
|
||||
#define ENTRY(name) \
|
||||
.globl C_SYMBOL_NAME(name); \
|
||||
ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
|
||||
.globl C_SYMBOL_NAME(name); \
|
||||
.type C_SYMBOL_NAME(name),@function; \
|
||||
.align ALIGNARG(2); \
|
||||
C_LABEL(name) \
|
||||
cfi_startproc; \
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
#include <sysdep.h>
|
||||
|
||||
.globl C_SYMBOL_NAME(_mcount)
|
||||
ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(_mcount),function)
|
||||
.type C_SYMBOL_NAME(_mcount),@function
|
||||
cfi_startproc
|
||||
.align 5
|
||||
C_LABEL(_mcount)
|
||||
|
|
|
@ -23,8 +23,6 @@
|
|||
/* Syntactic details of assembler. */
|
||||
|
||||
#define ALIGNARG(log2) log2
|
||||
/* For ELF we need the `.type' directive to make shared libs work right. */
|
||||
#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,@##typearg;
|
||||
#define ASM_SIZE_DIRECTIVE(name) .size name,.-name
|
||||
|
||||
#ifdef SHARED
|
||||
|
@ -36,8 +34,8 @@
|
|||
|
||||
/* Define an entry point visible from C. */
|
||||
#define ENTRY(name) \
|
||||
.globl C_SYMBOL_NAME(name); \
|
||||
ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),function) \
|
||||
.globl C_SYMBOL_NAME(name); \
|
||||
.type C_SYMBOL_NAME(name),@function; \
|
||||
.align ALIGNARG(5); \
|
||||
C_LABEL(name) \
|
||||
cfi_startproc; \
|
||||
|
|
|
@ -58,8 +58,6 @@
|
|||
|
||||
/* This seems to always be the case on PPC. */
|
||||
# define ALIGNARG(log2) log2
|
||||
/* For ELF we need the `.type' directive to make shared libs work right. */
|
||||
# define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg;
|
||||
# define ASM_SIZE_DIRECTIVE(name) .size name,.-name
|
||||
|
||||
#endif /* __ASSEMBLER__ */
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
#include <sysdep.h>
|
||||
|
||||
.globl C_SYMBOL_NAME(_mcount)
|
||||
ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(_mcount), @function)
|
||||
.type C_SYMBOL_NAME(_mcount), @function
|
||||
.align ALIGNARG(4)
|
||||
C_LABEL(_mcount)
|
||||
/* Allocate space for 7 registers. */
|
||||
|
@ -66,7 +66,7 @@ C_LABEL(_mcount)
|
|||
weak_alias (_mcount, mcount)
|
||||
|
||||
.globl C_SYMBOL_NAME(__fentry__)
|
||||
ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(__fentry__), @function)
|
||||
.type C_SYMBOL_NAME(__fentry__), @function
|
||||
.align ALIGNARG(4)
|
||||
C_LABEL(__fentry__)
|
||||
/* Allocate space for 7 registers. */
|
||||
|
|
|
@ -251,89 +251,89 @@ L(DP_T): /* table of double precision values 2^(j/K) for j=[0..K-1] */
|
|||
.long 0xee615a27, 0x3ffefa1b
|
||||
.long 0x5b6e4540, 0x3fff5076
|
||||
.long 0x819e90d8, 0x3fffa7c1
|
||||
ASM_TYPE_DIRECTIVE(L(DP_T), @object)
|
||||
.type L(DP_T), @object
|
||||
ASM_SIZE_DIRECTIVE(L(DP_T))
|
||||
|
||||
.section .rodata.cst8,"aM",@progbits,8
|
||||
.p2align 3
|
||||
L(DP_KLN2): /* double precision K/log(2) */
|
||||
.long 0x652b82fe, 0x40571547
|
||||
ASM_TYPE_DIRECTIVE(L(DP_KLN2), @object)
|
||||
.type L(DP_KLN2), @object
|
||||
ASM_SIZE_DIRECTIVE(L(DP_KLN2))
|
||||
|
||||
.p2align 3
|
||||
L(DP_NLN2K): /* double precision -log(2)/K */
|
||||
.long 0xfefa39ef, 0xbf862e42
|
||||
ASM_TYPE_DIRECTIVE(L(DP_NLN2K), @object)
|
||||
.type L(DP_NLN2K), @object
|
||||
ASM_SIZE_DIRECTIVE(L(DP_NLN2K))
|
||||
|
||||
.p2align 3
|
||||
L(DP_RS): /* double precision 2^23+2^22 */
|
||||
.long 0x00000000, 0x41680000
|
||||
ASM_TYPE_DIRECTIVE(L(DP_RS), @object)
|
||||
.type L(DP_RS), @object
|
||||
ASM_SIZE_DIRECTIVE(L(DP_RS))
|
||||
|
||||
.p2align 3
|
||||
L(DP_P3): /* double precision polynomial coefficient P3 */
|
||||
.long 0xeb78fa85, 0x3fa56420
|
||||
ASM_TYPE_DIRECTIVE(L(DP_P3), @object)
|
||||
.type L(DP_P3), @object
|
||||
ASM_SIZE_DIRECTIVE(L(DP_P3))
|
||||
|
||||
.p2align 3
|
||||
L(DP_P1): /* double precision polynomial coefficient P1 */
|
||||
.long 0x008d6118, 0x3fe00000
|
||||
ASM_TYPE_DIRECTIVE(L(DP_P1), @object)
|
||||
.type L(DP_P1), @object
|
||||
ASM_SIZE_DIRECTIVE(L(DP_P1))
|
||||
|
||||
.p2align 3
|
||||
L(DP_P2): /* double precision polynomial coefficient P2 */
|
||||
.long 0xda752d4f, 0x3fc55550
|
||||
ASM_TYPE_DIRECTIVE(L(DP_P2), @object)
|
||||
.type L(DP_P2), @object
|
||||
ASM_SIZE_DIRECTIVE(L(DP_P2))
|
||||
|
||||
.p2align 3
|
||||
L(DP_P0): /* double precision polynomial coefficient P0 */
|
||||
.long 0xffffe7c6, 0x3fefffff
|
||||
ASM_TYPE_DIRECTIVE(L(DP_P0), @object)
|
||||
.type L(DP_P0), @object
|
||||
ASM_SIZE_DIRECTIVE(L(DP_P0))
|
||||
|
||||
.p2align 2
|
||||
L(SP_RANGE): /* single precision overflow/underflow bounds */
|
||||
.long 0x42b17217 /* if x>this bound, then result overflows */
|
||||
.long 0x42cff1b4 /* if x<this bound, then result underflows */
|
||||
ASM_TYPE_DIRECTIVE(L(SP_RANGE), @object)
|
||||
.type L(SP_RANGE), @object
|
||||
ASM_SIZE_DIRECTIVE(L(SP_RANGE))
|
||||
|
||||
.p2align 2
|
||||
L(SP_INF_0):
|
||||
.long 0x7f800000 /* single precision Inf */
|
||||
.long 0 /* single precision zero */
|
||||
ASM_TYPE_DIRECTIVE(L(SP_INF_0), @object)
|
||||
.type L(SP_INF_0), @object
|
||||
ASM_SIZE_DIRECTIVE(L(SP_INF_0))
|
||||
|
||||
.section .rodata.cst4,"aM",@progbits,4
|
||||
.p2align 2
|
||||
L(SP_RS): /* single precision 2^23+2^22 */
|
||||
.long 0x4b400000
|
||||
ASM_TYPE_DIRECTIVE(L(SP_RS), @object)
|
||||
.type L(SP_RS), @object
|
||||
ASM_SIZE_DIRECTIVE(L(SP_RS))
|
||||
|
||||
.p2align 2
|
||||
L(SP_SMALL): /* single precision small value 2^(-100) */
|
||||
.long 0x0d800000
|
||||
ASM_TYPE_DIRECTIVE(L(SP_SMALL), @object)
|
||||
.type L(SP_SMALL), @object
|
||||
ASM_SIZE_DIRECTIVE(L(SP_SMALL))
|
||||
|
||||
.p2align 2
|
||||
L(SP_LARGE): /* single precision large value 2^100 */
|
||||
.long 0x71800000
|
||||
ASM_TYPE_DIRECTIVE(L(SP_LARGE), @object)
|
||||
.type L(SP_LARGE), @object
|
||||
ASM_SIZE_DIRECTIVE(L(SP_LARGE))
|
||||
|
||||
.p2align 2
|
||||
L(SP_ONE): /* single precision 1.0 */
|
||||
.long 0x3f800000
|
||||
ASM_TYPE_DIRECTIVE(L(SP_ONE), @object)
|
||||
.type L(SP_ONE), @object
|
||||
ASM_SIZE_DIRECTIVE(L(SP_ONE))
|
||||
|
||||
strong_alias (__ieee754_expf, __expf_finite)
|
||||
|
|
|
@ -42,26 +42,26 @@
|
|||
|
||||
.p2align 4
|
||||
#ifdef USE_AS_EXP10L
|
||||
ASM_TYPE_DIRECTIVE(c0,@object)
|
||||
.type c0,@object
|
||||
c0: .byte 0, 0, 0, 0, 0, 0, 0x9a, 0xd4, 0x00, 0x40
|
||||
.byte 0, 0, 0, 0, 0, 0
|
||||
ASM_SIZE_DIRECTIVE(c0)
|
||||
ASM_TYPE_DIRECTIVE(c1,@object)
|
||||
.type c1,@object
|
||||
c1: .byte 0x58, 0x92, 0xfc, 0x15, 0x37, 0x9a, 0x97, 0xf0, 0xef, 0x3f
|
||||
.byte 0, 0, 0, 0, 0, 0
|
||||
ASM_SIZE_DIRECTIVE(c1)
|
||||
#else
|
||||
ASM_TYPE_DIRECTIVE(c0,@object)
|
||||
.type c0,@object
|
||||
c0: .byte 0, 0, 0, 0, 0, 0, 0xaa, 0xb8, 0xff, 0x3f
|
||||
.byte 0, 0, 0, 0, 0, 0
|
||||
ASM_SIZE_DIRECTIVE(c0)
|
||||
ASM_TYPE_DIRECTIVE(c1,@object)
|
||||
.type c1,@object
|
||||
c1: .byte 0x20, 0xfa, 0xee, 0xc2, 0x5f, 0x70, 0xa5, 0xec, 0xed, 0x3f
|
||||
.byte 0, 0, 0, 0, 0, 0
|
||||
ASM_SIZE_DIRECTIVE(c1)
|
||||
#endif
|
||||
#ifndef USE_AS_EXPM1L
|
||||
ASM_TYPE_DIRECTIVE(csat,@object)
|
||||
.type csat,@object
|
||||
csat: .byte 0, 0, 0, 0, 0, 0, 0, 0x80, 0x0e, 0x40
|
||||
.byte 0, 0, 0, 0, 0, 0
|
||||
ASM_SIZE_DIRECTIVE(csat)
|
||||
|
|
|
@ -13,13 +13,13 @@
|
|||
.section .rodata.cst8,"aM",@progbits,8
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
/* It is not important that this constant is precise. It is only
|
||||
a value which is known to be on the safe side for using the
|
||||
fyl2xp1 instruction. */
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
|
||||
|
|
|
@ -12,13 +12,13 @@
|
|||
.section .rodata.cst8,"aM",@progbits,8
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
/* It is not important that this constant is precise. It is only
|
||||
a value which is known to be on the safe side for using the
|
||||
fyl2xp1 instruction. */
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
|
||||
|
|
|
@ -12,13 +12,13 @@
|
|||
.section .rodata.cst8,"aM",@progbits,8
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
/* It is not important that this constant is precise. It is only
|
||||
a value which is known to be on the safe side for using the
|
||||
fyl2xp1 instruction. */
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
|
||||
|
|
|
@ -23,34 +23,34 @@
|
|||
.section .rodata.cst8,"aM",@progbits,8
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(one,@object)
|
||||
.type one,@object
|
||||
one: .double 1.0
|
||||
ASM_SIZE_DIRECTIVE(one)
|
||||
ASM_TYPE_DIRECTIVE(limit,@object)
|
||||
.type limit,@object
|
||||
limit: .double 0.29
|
||||
ASM_SIZE_DIRECTIVE(limit)
|
||||
ASM_TYPE_DIRECTIVE(p63,@object)
|
||||
.type p63,@object
|
||||
p63: .byte 0, 0, 0, 0, 0, 0, 0xe0, 0x43
|
||||
ASM_SIZE_DIRECTIVE(p63)
|
||||
ASM_TYPE_DIRECTIVE(p64,@object)
|
||||
.type p64,@object
|
||||
p64: .byte 0, 0, 0, 0, 0, 0, 0xf0, 0x43
|
||||
ASM_SIZE_DIRECTIVE(p64)
|
||||
ASM_TYPE_DIRECTIVE(p78,@object)
|
||||
.type p78,@object
|
||||
p78: .byte 0, 0, 0, 0, 0, 0, 0xd0, 0x44
|
||||
ASM_SIZE_DIRECTIVE(p78)
|
||||
|
||||
.section .rodata.cst16,"aM",@progbits,16
|
||||
|
||||
.p2align 3
|
||||
ASM_TYPE_DIRECTIVE(infinity,@object)
|
||||
.type infinity,@object
|
||||
inf_zero:
|
||||
infinity:
|
||||
.byte 0, 0, 0, 0, 0, 0, 0xf0, 0x7f
|
||||
ASM_SIZE_DIRECTIVE(infinity)
|
||||
ASM_TYPE_DIRECTIVE(zero,@object)
|
||||
.type zero,@object
|
||||
zero: .double 0.0
|
||||
ASM_SIZE_DIRECTIVE(zero)
|
||||
ASM_TYPE_DIRECTIVE(minf_mzero,@object)
|
||||
.type minf_mzero,@object
|
||||
minf_mzero:
|
||||
minfinity:
|
||||
.byte 0, 0, 0, 0, 0, 0, 0xf0, 0xff
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
.section .rodata
|
||||
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(zero_nan,@object)
|
||||
.type zero_nan,@object
|
||||
zero_nan:
|
||||
.double 0.0
|
||||
nan: .byte 0, 0, 0, 0, 0, 0, 0xff, 0x7f
|
||||
|
|
|
@ -22,12 +22,12 @@
|
|||
.section .rodata.cst16,"aM",@progbits,16
|
||||
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(signmask,@object)
|
||||
.type signmask,@object
|
||||
signmask:
|
||||
.byte 0, 0, 0, 0, 0, 0, 0, 0x80
|
||||
.byte 0, 0, 0, 0, 0, 0, 0, 0
|
||||
ASM_SIZE_DIRECTIVE(signmask)
|
||||
ASM_TYPE_DIRECTIVE(othermask,@object)
|
||||
.type othermask,@object
|
||||
othermask:
|
||||
.byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f
|
||||
.byte 0, 0, 0, 0, 0, 0, 0, 0
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
.section .rodata
|
||||
|
||||
.align ALIGNARG(4)
|
||||
ASM_TYPE_DIRECTIVE(mask,@object)
|
||||
.type mask,@object
|
||||
mask:
|
||||
.byte 0xff, 0xff, 0xff, 0x7f
|
||||
ASM_SIZE_DIRECTIVE(mask)
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
#else
|
||||
.bss
|
||||
.local save_ptr
|
||||
ASM_TYPE_DIRECTIVE (save_ptr, @object)
|
||||
.type save_ptr, @object
|
||||
.size save_ptr, LP_SIZE
|
||||
save_ptr:
|
||||
.space LP_SIZE
|
||||
|
|
|
@ -27,15 +27,13 @@
|
|||
|
||||
/* ELF uses byte-counts for .align, most others use log2 of count of bytes. */
|
||||
#define ALIGNARG(log2) 1<<log2
|
||||
/* For ELF we need the `.type' directive to make shared libs work right. */
|
||||
#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg;
|
||||
#define ASM_SIZE_DIRECTIVE(name) .size name,.-name;
|
||||
|
||||
|
||||
/* Define an entry point visible from C. */
|
||||
#define ENTRY(name) \
|
||||
.globl C_SYMBOL_NAME(name); \
|
||||
ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
|
||||
.globl C_SYMBOL_NAME(name); \
|
||||
.type C_SYMBOL_NAME(name),@function; \
|
||||
.align ALIGNARG(4); \
|
||||
C_LABEL(name) \
|
||||
cfi_startproc; \
|
||||
|
|
Loading…
Reference in a new issue