+2008-08-26 Aurelien Jarno <aurelien@aurel32.net>
+
+ [BZ #6860]
+ * hurd/hurd/signal.h (HURD_MSGPORT_RPC): Fix a typo.
+
+2008-07-18 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * Makefile (check-data): Check data directory in add-ons.
+ * elf/Makefile (check-data): Likewise.
+
+2008-08-18 Roland McGrath <roland@redhat.com>
+
+ * configure.in (--with-cpu): Check compiler support for -march/-mcpu.
+ * configure: Regenerated.
+ * config.make.in (cflags-cpu): New substituted variable.
+ (with-cpu): Variable removed.
+ * Makeconfig (+cflags): Use $(cflags-cpu), not $(with-cpu).
+
+2008-08-14 Ryan S. Arnold <rsa@us.ibm.com>
+
+ [BZ #6845]
+ * sysdeps/powerpc/fpu/bits/mathinline.h (__signbitl): Copy new
+ __signbitl definition and __LONG_DOUBLE_128__ guard from:
+ * sysdeps/unix/sysv/linux/powerpc/bits/mathinline.h: Remove as
+ redundant. Functions which call floating point assembler operations
+ should go into a sysdeps powerpc/fpu directory.
+
+2008-08-15 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/x86_64/bits/mman.h: Define MAP_STACK.
+ * sysdeps/unix/sysv/linux/i386/bits/mman.h: Likewise.
+
+2008-08-14 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/memset.S: Reduce size of tables for PIC.
+
+ * sysdeps/unix/sysv/linux/dl-origin.c (_dl_get_origin): Undo all
+ change related to AT_EXECFN. We cannot use that string.
+ * sysdeps/generic/ldsodefs.h (struct rtld_global_ro): Remove
+ _dl_execfn member.
+ * elf/dl-support.c: Remove _dl_execfn variable.
+ (_dl_aux_init): Remove handling of AT_EXECFN.
+ * elf/dl-sysdep.c (_dl_sysdep_start): Remove handling of AT_EXECFN.
+ * elf/rtld.c (process_envvars): Remove use of __ASSUME_AT_EXECFN.
+
+2008-08-13 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #6544]
+ * libio/fmemopen.c: Implement binary mode. In this mode no NUL
+ byte gets added to writes and seeks from the end use the length of
+ the buffer and not the currently terminating NUL byte.
+
+ [BZ #6634]
+ * login/utmp_file.c (getutent_r_file): Take additional parameter.
+ Set to true if locking failed.
+ (getutid_r_file): Adjust caller.
+ (pututline_file): Likewise. Return NULL in this case.
+ Patch mostly by halesh.s@gmail.com.
+
+2008-08-12 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #6589]
+ * sysdeps/unix/sysv/linux/ifaddrs.c (struct sockaddr_ll_max):
+ Define.
+ (struct ifaddrs_storage): Use it instead of sockaddr_ll.
+
+2008-08-12 Ryan S. Arnold <rsa@us.ibm.com>
+
+ [BZ #6839]
+ * sysdeps/powerpc/powerpc32/dl-machine.c (CHECK_STATIC_TLS): Remove
+ macro since it is now available in elf/dynamic-link.h.
+
+2008-08-12 Roland McGrath <roland@frob.com>
+
+ * hurd/hurd/signal.h (HURD_MSGPORT_RPC): Avoid -Wparenthesis triggers,
+ in case used outside of libc.
+ Reported by Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+2008-08-11 Ulrich Drepper <drepper@redhat.com>
+
+ * resolv/res_mkquery.c (res_nmkquery): Call ns_name_compress
+ directly instead of going through dn_comp.
+
+2008-08-11 Aurelien Jarno <aurel32@debian.org>
+
+ * sysdeps/mach/i386/machine-lock.h (__spin_unlock, __spin_try_lock):
+ Fix asm constraints.
+
+2008-08-07 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #6790]
+ * sysdeps/unix/sysv/linux/bits/in.h (IP_PMTUDISC_PROBE): Define.
+ (IPV6_PMTUDISC_PROBE): Likewise.
+
+2008-08-07 Pete Eberlein <eberlein@us.ibm.com>
+
+ [BZ #6791]
+ * sysdeps/unix/sysv/linux/powerpc/bits/mman.h (PROT_SAO): Define.
+
+2008-08-01 Steven Munroe <sjmunroe@us.ibm.com>
+ Carlos Eduardo Seo <cseo@linux.vnet.ibm.com>
+
+ [BZ #6817]
+ * sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_cap_flags):
+ Added the members 'vsx' and 'arch_2_06'.
+ (_dl_powerpc_platforms): Add the member 'power7'.
+ * sysdeps/powerpc/dl-procinfo.h: Modify _DL_HWCAP_FIRST
+ to reflect the changes required by VSX and ISA 2.06.
+ Modify _DL_PLATFORMS_COUNT to reflect the addition of
+ 'power7'.
+ Defined PPC_PLATFORM_POWER7.
+ (_dl_string_platform): Add support for POWER7.
+ * sysdeps/powerpc/sysdep.h: Define bit masks for VSX
+ capability and ISA 2.06.
+
+2008-08-07 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #6824]
+ * sysdeps/unix/sysv/linux/powerpc/bits/mathinline.h: Use correct
+ macro to detect use of 128 bit long double.
+ Patch by Ryan S. Arnold <rsa@us.ibm.com>.
+
+2008-08-05 Ulrich Drepper <drepper@redhat.com>
+
+ * scripts/gen-as-const.awk: Use 32-bit values on 32-bit platforms.
+
+ [BZ #5794]
+ * sysdeps/i386/fpu/s_expm1l.S: Simply use exp implementation for large
+ parameters.
+ * sysdeps/x86_64/fpu/s_expm1l.S: Likewise.
+ Patch by Denys Vlasenko <dvlasenk@redhat.com>.
+
+2008-08-03 Ulrich Drepper <drepper@redhat.com>
+
+ * nscd/connections.c (main_loop_poll): Pass a buffer which is
+ guaranteed to be large enough to read inotify event. Ignore
+ EAGAIN error. Better error message. Add branch predicition.
+ (main_loop_epoll): Likewise.
+
+2008-08-02 Roland McGrath <roland@frob.com>
+
+ * sysdeps/mach/i386/machine-lock.h (__spin_unlock, __spin_try_lock):
+ Add memory clobbers.
+
+2008-08-02 Ulrich Drepper <drepper@redhat.com>
+
+ * manual/arith.texi: Avoid @strong{Note:}.
+ * manual/creature.texi: Likewise.
+ * manual/filesys.texi: Likewise.
+ * manual/math.texi: Likewise.
+ * manual/memory.texi: Likewise.
+ * manual/resource.texi: Likewise.
+ * manual/syslog.texi: Likewise.
+ * manual/time.texi: Likewise.
+
+ * sysdeps/posix/clock_getres.c (hp_timing_getres): Remove inline
+ to prevent warning.
+
2008-08-01 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/Versions: Fix changes due to old patch for
* sysdeps/posix/getaddrinfo.c (gaih_inet): Raise size of initial
buffer passed to NSS functions.
- * nscd/connections.c (nscd_init): Type if preprocessor directive.
+ * nscd/connections.c (nscd_init): Typo in preprocessor directive.
* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_PACCEPT):
Define.
+cflags := $(default_cflags)
endif # $(+cflags) == ""
-+cflags += $(addprefix -mcpu=,$(with-cpu)) $(+gccwarn) $(+merge-constants)
++cflags += $(cflags-cpu) $(+gccwarn) $(+merge-constants)
+gcc-nowarn := -w
# Don't duplicate options if we inherited variables from the parent.
tests: $(objpfx)c++-types-check.out $(objpfx)check-local-headers.out
ifneq ($(CXX),no)
check-data := $(firstword $(wildcard \
- $(foreach D,$(add-ons) scripts/data,\
- $(patsubst %,$D/c++-types-%.data,\
+ $(foreach D,$(add-ons) scripts,\
+ $(patsubst %,$D/data/c++-types-%.data,\
$(abi-name) \
$(addsuffix -$(config-os),\
$(config-machine) \
-GNU C Library NEWS -- history of user-visible changes. 2008-8-1
+GNU C Library NEWS -- history of user-visible changes. 2008-8-2
Copyright (C) 1992-2007, 2008 Free Software Foundation, Inc.
See the end for copying conditions.
* Implement "e" option for popen to open file descriptor with the
close-on-exec flag set. Implemented by Ulrich Drepper.
+* Implement "b" mode for fmemopen. In this mode writes writes don't
+ implicitly add a NUL byte and seeks from the end of the buffer really
+ use the buffer end, not the string length as the basis.
+ Implemented by Ulrich Drepper.
+
* Many functions, exported and internal, now atomically set the close-on-exec
flag when run on a sufficiently new kernel. Implemented by Ulrich Drepper.
+
+* Sorting rules for some Indian languages (Kannada, Gurumukhi, Telugu)
+ Implemented by Pravin Satpute.
\f
Version 2.8
config-vendor = @host_vendor@
config-os = @host_os@
config-sysdirs = @sysnames@
-with-cpu = @submachine@
+cflags-cpu = @libc_cv_cc_submachine@
defines = @DEFINES@
sysincludes = @SYSINCLUDES@
libc_cv_have_initfini
no_whole_archive
exceptions
+libc_cv_cc_submachine
LIBGD
have_libaudit
have_libcap
fi
-
# An add-on can set this when it wants to disable the sanity check below.
libc_config_ok=no
fi
fi
+if test -n "$submachine"; then
+ { echo "$as_me:$LINENO: checking for compiler option for CPU variant" >&5
+echo $ECHO_N "checking for compiler option for CPU variant... $ECHO_C" >&6; }
+if test "${libc_cv_cc_submachine+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ libc_cv_cc_submachine=no
+ for opt in "-march=$submachine" "-mcpu=$submachine"; do
+ if { ac_try='${CC-cc} $opt -xc /dev/null -S -o /dev/null'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ libc_cv_cc_submachine="$opt"
+ break
+ fi
+ done
+fi
+{ echo "$as_me:$LINENO: result: $libc_cv_cc_submachine" >&5
+echo "${ECHO_T}$libc_cv_cc_submachine" >&6; }
+ if test "x$libc_cv_cc_submachine" = xno; then
+ { { echo "$as_me:$LINENO: error: ${CC-cc} does not support $submachine" >&5
+echo "$as_me: error: ${CC-cc} does not support $submachine" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+fi
+
+
{ echo "$as_me:$LINENO: checking for libgd" >&5
echo $ECHO_N "checking for libgd... $ECHO_C" >&6; }
if test "$with_gd" != "no"; then
libc_cv_have_initfini!$libc_cv_have_initfini$ac_delim
no_whole_archive!$no_whole_archive$ac_delim
exceptions!$exceptions$ac_delim
+libc_cv_cc_submachine!$libc_cv_cc_submachine$ac_delim
LIBGD!$LIBGD$ac_delim
have_libaudit!$have_libaudit$ac_delim
have_libcap!$have_libcap$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 52; then
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 53; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
esac
])
-
# An add-on can set this when it wants to disable the sanity check below.
libc_config_ok=no
fi
fi
+if test -n "$submachine"; then
+ AC_CACHE_CHECK([for compiler option for CPU variant],
+ libc_cv_cc_submachine, [dnl
+ libc_cv_cc_submachine=no
+ for opt in "-march=$submachine" "-mcpu=$submachine"; do
+ if AC_TRY_COMMAND([${CC-cc} $opt -xc /dev/null -S -o /dev/null]); then
+ libc_cv_cc_submachine="$opt"
+ break
+ fi
+ done])
+ if test "x$libc_cv_cc_submachine" = xno; then
+ AC_MSG_ERROR([${CC-cc} does not support $submachine])
+ fi
+fi
+AC_SUBST(libc_cv_cc_submachine)
+
dnl Check whether we have the gd library available.
AC_MSG_CHECKING(for libgd)
if test "$with_gd" != "no"; then
$(objpfx)tst-dlmodcount.out: $(test-modules)
check-data := $(firstword $(wildcard \
- $(foreach D,$(add-ons) scripts/data,\
- $(patsubst %,$(..)$D/localplt-%.data,\
+ $(foreach D,$(add-ons) scripts,\
+ $(patsubst %,$(..)$D/data/localplt-%.data,\
$(abi-name) \
$(addsuffix -$(config-os),\
$(config-machine) \
/* This is the address of the last stack address ever used. */
void *__libc_stack_end;
-#ifndef __ASSUME_AT_EXECFN
/* Path where the binary is found. */
const char *_dl_origin_path;
-#endif
-/* File Name of the executable. */
-const char *_dl_execfn;
/* Nonzero if runtime lookup should not update the .got/.plt. */
int _dl_bind_not;
__libc_enable_secure = av->a_un.a_val;
__libc_enable_secure_decided = 1;
break;
- case AT_EXECFN:
- GLRO(dl_execfn) = (void *) av->a_un.a_val;
- break;
# ifdef DL_PLATFORM_AUXV
DL_PLATFORM_AUXV
# endif
GLRO(dl_sysinfo_dso) = (void *) av->a_un.a_val;
break;
#endif
- case AT_EXECFN:
- GLRO(dl_execfn) = (void *) av->a_un.a_val;
- break;
#ifdef DL_PLATFORM_AUXV
DL_PLATFORM_AUXV
#endif
break;
case 11:
-#ifndef __ASSUME_AT_EXECFN
/* Path where the binary is found. */
if (!INTUSE(__libc_enable_secure)
&& memcmp (envline, "ORIGIN_PATH", 11) == 0)
GLRO(dl_origin_path) = &envline[12];
-#endif
break;
case 12:
glibc-base := HEAD
DIST_BRANCH := devel
COLLECTION := dist-f8
-fedora-sync-date := 2008-08-02 08:09 UTC
-fedora-sync-tag := fedora-glibc-20080802T0809
+fedora-sync-date := 2008-08-28 16:23 UTC
+fedora-sync-tag := fedora-glibc-20080828T1623
Summary: The GNU libc libraries
Name: glibc
Version: @glibcversion@
-Release: 11
+Release: 12
# GPLv2+ is used in a bunch of programs, LGPLv2+ is used for libraries.
# Things that are linked directly into dynamically linked programs
# and shared libraries (e.g. crt files, lib*_nonshared.a) have an additional
%endif
%changelog
+* Fri Aug 29 2008 Jakub Jelinek <jakub@redhat.com> 2.8.90-12
+- update from trunk
+ - revert origin changes (#457849)
+ - use MAP_STACK for thread stacks
+ - misc fixes (BZ#6845, BZ#6544, BZ#6634, BZ#6589, BZ#6790, BZ#6791,
+ BZ#6824)
+ - power7 bits (BZ#6817)
+ - fix expm1 on i?86/x86_64 (#43354, BZ#5794)
+
* Sat Aug 2 2008 Jakub Jelinek <jakub@redhat.com> 2.8.90-11
- update from trunk
- fix non-absolute $ORIGIN handling (#457560)
/* Implementing POSIX.1 signals under the Hurd.
- Copyright (C) 1993,94,95,96,98,99,2002,2007 Free Software Foundation, Inc.
+ Copyright (C) 1993,94,95,96,98,99,2002,2007,2008
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
do \
{ \
/* Get the message port. */ \
- if (__err = (fetch_msgport_expr)) \
+ __err = (fetch_msgport_expr); \
+ if (__err) \
break; \
/* Get the reference port. */ \
- if (__err = (fetch_refport_expr)) \
+ __err = (fetch_refport_expr); \
+ if (__err) \
{ \
/* Couldn't get it; deallocate MSGPORT and fail. */ \
__mach_port_deallocate (__mach_task_self (), msgport); \
/* Fmemopen implementation.
- Copyright (C) 2000, 2002, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2002, 2005, 2006, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
- Contributed by Hanno Mueller, kontakt@hanno.de, 2000.
+ Contributed by Hanno Mueller, kontakt@hanno.de, 2000.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
{
char *buffer;
int mybuffer;
+ int binmode;
size_t size;
_IO_off64_t pos;
size_t maxpos;
c = (fmemopen_cookie_t *) cookie;
- addnullc = s == 0 || b[s - 1] != '\0';
+ addnullc = c->binmode == 0 && (s == 0 || b[s - 1] != '\0');
if (c->pos + s + addnullc > c->size)
{
break;
case SEEK_END:
- np = c->maxpos - *p;
+ np = (c->binmode ? c->size : c->maxpos) - *p;
break;
default:
else
c->pos = 0;
+ c->binmode = mode[0] != '\0' && mode[1] == 'b';
+
iof.read = fmemopen_read;
iof.write = fmemopen_write;
iof.seek = fmemopen_seek;
#include <errno.h>
#include <fcntl.h>
#include <signal.h>
+#include <stdbool.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
static int
-internal_getut_r (const struct utmp *id, struct utmp *buffer)
+internal_getut_r (const struct utmp *id, struct utmp *buffer,
+ bool *lock_failed)
{
int result = -1;
LOCK_FILE (file_fd, F_RDLCK)
- LOCKING_FAILED ();
+ {
+ *lock_failed = true;
+ LOCKING_FAILED ();
+ }
#if _HAVE_UT_TYPE - 0
if (id->ut_type == RUN_LVL || id->ut_type == BOOT_TIME
return -1;
}
- if (internal_getut_r (id, &last_entry) < 0)
+ /* We don't have to distinguish whether we can lock the file or
+ whether there is no entry. */
+ bool lock_failed = false;
+ if (internal_getut_r (id, &last_entry, &lock_failed) < 0)
{
*result = NULL;
return -1;
__utmp_equal (&last_entry, data)))
found = 1;
else
- found = internal_getut_r (data, &buffer);
+ {
+ bool lock_failed = false;
+ found = internal_getut_r (data, &buffer, &lock_failed);
+
+ if (__builtin_expect (lock_failed, false))
+ {
+ __set_errno (EAGAIN);
+ return NULL;
+ }
+ }
LOCK_FILE (file_fd, F_WRLCK)
{
This function returns a nonzero value if @var{x} is a ``not a number''
value, and zero otherwise.
-@strong{Note:} The @code{isnan} macro defined by @w{ISO C99} overrides
+@strong{NB:} The @code{isnan} macro defined by @w{ISO C99} overrides
the BSD function. This is normally not a problem, because the two
routines behave identically. However, if you really need to get the BSD
function for some reason, you can write
bits in the @dfn{control word}. In C, traps result in the program
receiving the @code{SIGFPE} signal; see @ref{Signal Handling}.
-@strong{Note:} @w{IEEE 754} says that trap handlers are given details of
+@strong{NB:} @w{IEEE 754} says that trap handlers are given details of
the exceptional situation, and can set the result value. C signals do
not provide any mechanism to pass this information back and forth.
Trapping exceptions in C is therefore not very useful.
machines that don't, the macros can be very slow. Therefore, you should
not use these functions when NaN is not a concern.
-@strong{Note:} There are no macros @code{isequal} or @code{isunequal}.
+@strong{NB:} There are no macros @code{isequal} or @code{isunequal}.
They are unnecessary, because the @code{==} and @code{!=} operators do
@emph{not} throw an exception if one or both of the operands are NaN.
Note that if you do this, you must link your program with the BSD
compatibility library by passing the @samp{-lbsd-compat} option to the
-compiler or linker. @strong{Note:} If you forget to do this, you may
+compiler or linker. @strong{NB:} If you forget to do this, you may
get very strange errors at run time.
@end defvr
file name. Usually the template string is something like
@samp{/tmp/@var{prefix}XXXXXX}, and each program uses a unique @var{prefix}.
-@strong{Note:} Because @code{mktemp} and @code{mkstemp} modify the
+@strong{NB:} Because @code{mktemp} and @code{mkstemp} modify the
template string, you @emph{must not} pass string constants to them.
String constants are normally in read-only storage, so your program
would crash when @code{mktemp} or @code{mkstemp} tried to modify the
This function returns the next pseudo-random number in the sequence.
The value returned ranges from @code{0} to @code{RAND_MAX}.
-@strong{Note:} Temporarily this function was defined to return a
+@strong{NB:} Temporarily this function was defined to return a
@code{int32_t} value to indicate that the return value always contains
32 bits even if @code{long int} is wider. The standard demands it
differently. Users must always be aware of the 32-bit limitation,
variable-sized arrays.
@end itemize
-@strong{Note:} If you mix use of @code{alloca} and variable-sized arrays
+@strong{NB:} If you mix use of @code{alloca} and variable-sized arrays
within one function, exiting a scope in which a variable-sized array was
declared frees all blocks allocated with @code{alloca} during the
execution of that scope.
for something like I/O, its absolute priority is irrelevant.
@cindex runnable process
-@strong{Note:} The term ``runnable'' is a synonym for ``ready to run.''
+@strong{NB:} The term ``runnable'' is a synonym for ``ready to run.''
When two processes are running or ready to run and both have the same
absolute priority, it's more interesting. In that case, who gets the
its absolute priority when the process isn't getting its entitled share
and lowers it when the process is exceeding it.
-@strong{Note:} The absolute priority is sometimes called the ``static
+@strong{NB:} The absolute priority is sometimes called the ``static
priority.'' We don't use that term in this manual because it misses the
most important feature of the absolute priority: its absoluteness.
Results are undefined if the facility code is anything else.
-@strong{note:} @code{syslog} recognizes one other facility code: that of
+@strong{NB:} @code{syslog} recognizes one other facility code: that of
the kernel. But you can't specify that facility code with these
functions. If you try, it looks the same to @code{syslog} as if you are
requesting the default facility. But you wouldn't want to anyway,
Leading zeroes are permitted but not required.
-@strong{Note:} The Unix specification says the upper bound on this value
+@strong{NB:} The Unix specification says the upper bound on this value
is @code{61}, a result of a decision to allow double leap seconds. You
will not see the value @code{61} because no minute has more than one
leap second, but the myth persists.
+2008-08-15 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/pthreaddef.h: Remove ARCH_MAP_FLAGS and
+ ARCH_RETRY_MMAP definitions.
+ * allocatestack.c: Remove definition of ARCH_MAP_FLAGS.
+ Define MAP_STACK when not defined.
+ (allocate_stack): Use MAP_STACK instead of ARCH_MAP_FLAGS. Remove
+ handling of ARCH_RETRY_MMAP.
+
2008-07-30 Ulrich Drepper <drepper@redhat.com>
* tst-align2.c (f): Print message that f is reached.
#endif
-/* Let the architecture add some flags to the mmap() call used to
- allocate stacks. */
-#ifndef ARCH_MAP_FLAGS
-# define ARCH_MAP_FLAGS 0
+/* Newer kernels have the MAP_STACK flag to indicate a mapping is used for
+ a stack. Use it when possible. */
+#ifndef MAP_STACK
+# define MAP_STACK 0
#endif
/* This yields the pointer that TLS support code calls the thread pointer. */
#endif
mem = mmap (NULL, size, prot,
- MAP_PRIVATE | MAP_ANONYMOUS | ARCH_MAP_FLAGS, -1, 0);
+ MAP_PRIVATE | MAP_ANONYMOUS | MAP_STACK, -1, 0);
if (__builtin_expect (mem == MAP_FAILED, 0))
{
-#ifdef ARCH_RETRY_MMAP
- mem = ARCH_RETRY_MMAP (size, prot);
- if (__builtin_expect (mem == MAP_FAILED, 0))
-#endif
- {
- if (errno == ENOMEM)
- errno = EAGAIN;
+ if (errno == ENOMEM)
+ __set_errno (EAGAIN);
- return errno;
- }
+ return errno;
}
/* SIZE is guaranteed to be greater than zero.
({ char *frame; asm ("movq %%rsp, %0" : "=r" (frame)); frame; })
-/* We prefer to have the stack allocated in the low 4GB since this
- allows faster context switches. */
-#define ARCH_MAP_FLAGS MAP_32BIT
-
-/* If it is not possible to allocate memory there retry without that
- flag. */
-#define ARCH_RETRY_MMAP(size, prot) \
- mmap (NULL, size, prot, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0)
-
-
/* XXX Until we have a better place keep the definitions here. */
/* While there is no such syscall. */
bool to_clear[lastdb] = { false, };
union
{
+# ifndef PATH_MAX
+# define PATH_MAX 1024
+# endif
struct inotify_event i;
- char buf[100];
+ char buf[sizeof (struct inotify_event) + PATH_MAX];
} inev;
while (1)
sizeof (inev)));
if (nb < (ssize_t) sizeof (struct inotify_event))
{
- if (nb == -1)
+ if (__builtin_expect (nb == -1 && errno != EAGAIN,
+ 0))
{
/* Something went wrong when reading the inotify
data. Better disable inotify. */
+ dbg_log (_("\
+disabled inotify after read error %d"),
+ errno);
conns[1].fd = -1;
firstfree = 1;
if (nused == 2)
nused = 1;
close (inotify_fd);
inotify_fd = -1;
- dbg_log (_("disabled inotify after read error"));
}
break;
}
union
{
struct inotify_event i;
- char buf[100];
+ char buf[sizeof (struct inotify_event) + PATH_MAX];
} inev;
while (1)
sizeof (inev)));
if (nb < (ssize_t) sizeof (struct inotify_event))
{
- if (nb == -1)
+ if (__builtin_expect (nb == -1 && errno != EAGAIN, 0))
{
/* Something went wrong when reading the inotify
data. Better disable inotify. */
+ dbg_log (_("disabled inotify after read error %d"),
+ errno);
(void) epoll_ctl (efd, EPOLL_CTL_DEL, inotify_fd,
NULL);
close (inotify_fd);
inotify_fd = -1;
- dbg_log (_("disabled inotify after read error"));
}
break;
}
if ((buflen -= QFIXEDSZ) < 0)
return (-1);
compose:
- if ((n = dn_comp(dname, cp, buflen, dnptrs, lastdnptr)) < 0)
+ n = ns_name_compress(dname, cp, buflen,
+ (const u_char **) dnptrs,
+ (const u_char **) lastdnptr);
+ if (n < 0)
return (-1);
cp += n;
buflen -= n;
/*
* Make an additional record for completion domain.
*/
- n = dn_comp((char *)data, cp, buflen, dnptrs, lastdnptr);
+ n = ns_name_compress((char *)data, cp, buflen,
+ (const u_char **) dnptrs,
+ (const u_char **) lastdnptr);
if (__builtin_expect (n < 0, 0))
return (-1);
cp += n;
if (test) {
print "\n#include <inttypes.h>";
print "\n#include <stdio.h>";
+ print "\n#if __WORDSIZE__ == 64";
+ print "\ntypedef uint64_t c_t;";
print "\n#define U(n) UINT64_C (n)";
+ print "\n#define PRI PRId64";
+ print "\n#else";
+ print "\ntypedef uint32_t c_t;";
+ print "\n#define U(n) UINT32_C (n)";
+ print "\n#define PRI PRId32";
+ print "\n#endif";
print "\nstatic int do_test (void)\n{\n int bad = 0, good = 0;\n";
print "#define TEST(name, source, expr) \\\n" \
- " if (U (asconst_##name) != (uint64_t) (expr)) { ++bad;" \
- " fprintf (stderr, \"%s: %s is %\" PRId64 \" but %s is %\"PRId64 \"\\n\"," \
- " source, #name, U (asconst_##name), #expr, (uint64_t) (expr));" \
+ " if (U (asconst_##name) != (c_t) (expr)) { ++bad;" \
+ " fprintf (stderr, \"%s: %s is %\" PRI \" but %s is %\"PRI \"\\n\"," \
+ " source, #name, U (asconst_##name), #expr, (c_t) (expr));" \
" } else ++good;\n";
}
else
/* Names of shared object for which the RPATH should be ignored. */
EXTERN const char *_dl_inhibit_rpath;
-#ifndef __ASSUME_AT_EXECFN
/* Location of the binary. */
EXTERN const char *_dl_origin_path;
-#endif
-
- /* If set, points to the file name of the executable. */
- EXTERN const char *_dl_execfn;
/* -1 if the dynamic linker should honor library load bias,
0 if not, -2 use the default (honor biases for normal
/* ix87 specific implementation of exp(x)-1.
- Copyright (C) 1996, 1997, 2002, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2002, 2005, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
Based on code by John C. Bowman <bowman@ipp-garching.mpg.de>.
.text
ENTRY(__expm1l)
+ movzwl 4+8(%esp), %eax // load sign bit and 15-bit exponent
+ xorb $0x80, %ah // invert sign bit (now 1 is "positive")
+ cmpl $0xc006, %eax // is num positive and exp >= 6 (number is >= 128.0)?
+ jae __ieee754_expl // (if num is denormal, it is at least >= 64.0)
+
fldt 4(%esp) // x
fxam // Is NaN or +-Inf?
fstsw %ax
/* Machine-specific definition for spin locks. i386 version.
- Copyright (C) 1994, 1997, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1994,1997,2007,2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
{
register int __unlocked;
__asm__ __volatile ("xchgl %0, %1"
- : "=&r" (__unlocked), "=m" (*__lock) : "0" (0));
+ : "=&r" (__unlocked), "=m" (*__lock) : "0" (0)
+ : "memory");
}
/* Try to lock LOCK; return nonzero if we locked it, zero if another has. */
{
register int __locked;
__asm__ __volatile ("xchgl %0, %1"
- : "=&r" (__locked), "=m" (*__lock) : "0" (1));
+ : "=&r" (__locked), "=m" (*__lock) : "0" (1)
+ : "memory");
return !__locked;
}
/* clock_getres -- Get the resolution of a POSIX clockid_t.
- Copyright (C) 1999, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1999,2000,2001,2003,2004,2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
#if HP_TIMING_AVAIL
static long int nsec; /* Clock frequency of the processor. */
-static inline int
+static int
hp_timing_getres (struct timespec *res)
{
if (__builtin_expect (nsec == 0, 0))
#if !defined PROCINFO_DECL && defined SHARED
._dl_powerpc_cap_flags
#else
-PROCINFO_CLASS const char _dl_powerpc_cap_flags[23][10]
+PROCINFO_CLASS const char _dl_powerpc_cap_flags[25][10]
#endif
#ifndef PROCINFO_DECL
= {
- "power6x", "dfp", "pa6t",
+ "vsx",
+ "arch_2_06", "power6x", "dfp", "pa6t",
"arch_2_05", "ic_snoop", "smt", "booke",
"cellbe", "power5+", "power5", "power4",
"notb", "efpdouble", "efpsingle", "spe",
#if !defined PROCINFO_DECL && defined SHARED
._dl_powerpc_platforms
#else
-PROCINFO_CLASS const char _dl_powerpc_platforms[7][12]
+PROCINFO_CLASS const char _dl_powerpc_platforms[8][12]
#endif
#ifndef PROCINFO_DECL
= {
[PPC_PLATFORM_POWER5_PLUS] = "power5+",
[PPC_PLATFORM_POWER6] = "power6",
[PPC_PLATFORM_CELL_BE] = "ppc-cell-be",
- [PPC_PLATFORM_POWER6X] = "power6x"
+ [PPC_PLATFORM_POWER6X] = "power6x",
+ [PPC_PLATFORM_POWER7] = "power7"
}
#endif
#if !defined SHARED || defined PROCINFO_DECL
#include <ldsodefs.h>
#include <sysdep.h> /* This defines the PPC_FEATURE_* macros. */
-/* There are 20 bits used, but they are bits 12..31. */
-#define _DL_HWCAP_FIRST 9
+/* There are 25 bits used, but they are bits 7..31. */
+#define _DL_HWCAP_FIRST 7
#define _DL_HWCAP_COUNT 32
/* These bits influence library search. */
#define HWCAP_IMPORTANT (PPC_FEATURE_HAS_ALTIVEC \
+ PPC_FEATURE_HAS_DFP)
-#define _DL_PLATFORMS_COUNT 7
+#define _DL_PLATFORMS_COUNT 8
#define _DL_FIRST_PLATFORM 32
/* Mask to filter out platforms. */
#define PPC_PLATFORM_POWER6 4
#define PPC_PLATFORM_CELL_BE 5
#define PPC_PLATFORM_POWER6X 6
+#define PPC_PLATFORM_POWER7 7
static inline const char *
__attribute__ ((unused))
++str;
}
break;
+ case '7':
+ ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER7;
+ break;
default:
return -1;
}
/* Inline math functions for powerpc.
- Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2004, 2006, 2007
+ Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2004, 2006, 2007, 2008
Free Software Foundation, Inc.
This file is part of the GNU C Library.
__extension__ union { double __d; int __i[2]; } __u = { __d: __x };
return __u.__i[0] < 0;
}
+# ifdef __LONG_DOUBLE_128__
+__MATH_INLINE int
+__NTH (__signbitl (long double __x))
+{
+ __extension__ union { long double __d; int __i[4]; } __u = { __d: __x };
+ return __u.__i[0] < 0;
+}
+# endif
# endif
#endif /* __USE_ISOC99 */
}
break;
-#define CHECK_STATIC_TLS(map, sym_map) \
- do { \
- if (__builtin_expect ((sym_map)->l_tls_offset == NO_TLS_OFFSET, 0)) \
- _dl_allocate_static_tls (sym_map); \
- } while (0)
#define DO_TLS_RELOC(suffix) \
case R_PPC_DTPREL##suffix: \
/* During relocation all TLS symbols are defined and used. \
#define PPC_FEATURE_PA6T 0x00000800 /* PA Semi 6T Core */
#define PPC_FEATURE_HAS_DFP 0x00000400 /* Decimal FP Unit */
#define PPC_FEATURE_POWER6_EXT 0x00000200 /* P6 + mffgpr/mftgpr */
+#define PPC_FEATURE_HAS_VSX 0x00000100 /* P7 Vector Extension. */
+#define PPC_FEATURE_ARCH_2_06 0x00000080 /* ISA 2.06 */
#define PPC_FEATURE_970 (PPC_FEATURE_POWER4 + PPC_FEATURE_HAS_ALTIVEC)
#ifdef __ASSEMBLER__
#define IP_PMTUDISC_DONT 0 /* Never send DF frames. */
#define IP_PMTUDISC_WANT 1 /* Use per route hints. */
#define IP_PMTUDISC_DO 2 /* Always DF. */
+#define IP_PMTUDISC_PROBE 3 /* Ignore dst pmtu. */
/* To select the IP level. */
#define SOL_IP 0
#define IPV6_PMTUDISC_DONT 0 /* Never send DF frames. */
#define IPV6_PMTUDISC_WANT 1 /* Use per route hints. */
#define IPV6_PMTUDISC_DO 2 /* Always DF. */
+#define IPV6_PMTUDISC_PROBE 3 /* Ignore dst pmtu. */
/* Socket level values for IPv6. */
#define SOL_IPV6 41
/* clock_getres -- Get the resolution of a POSIX clockid_t. Linux version.
- Copyright (C) 2003,2004,2005,2006 Free Software Foundation, Inc.
+ Copyright (C) 2003,2004,2005,2006, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
return 0;
e = INTERNAL_SYSCALL_ERRNO (r, err);
-# ifndef __ASSUME_POSIX_TIMERS
+# ifndef __ASSUME_POSIX_TIMERS
if (e == ENOSYS)
{
__libc_missing_posix_timers = 1;
e = EINVAL;
}
else
-# endif
+# endif
{
if (e == EINVAL)
{
/* Find path of executable.
- Copyright (C) 1998-2000, 2002, 2004, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2002, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
_dl_get_origin (void)
{
char linkval[PATH_MAX];
- const char *str;
- char *result = (char *) -1l;
+ char *result;
int len;
+ INTERNAL_SYSCALL_DECL (err);
- str = GLRO(dl_execfn);
- if (str == NULL || str[0] != '/')
+ len = INTERNAL_SYSCALL (readlink, err, 3, "/proc/self/exe", linkval,
+ sizeof (linkval));
+ if (! INTERNAL_SYSCALL_ERROR_P (len, err) && len > 0 && linkval[0] != '[')
{
- INTERNAL_SYSCALL_DECL (err);
-
- len = INTERNAL_SYSCALL (readlink, err, 3, "/proc/self/exe", linkval,
- sizeof (linkval));
- if (! INTERNAL_SYSCALL_ERROR_P (len, err)
- && len > 0 && linkval[0] != '[')
- str = linkval;
+ /* We can use this value. */
+ assert (linkval[0] == '/');
+ while (len > 1 && linkval[len - 1] != '/')
+ --len;
+ result = (char *) malloc (len + 1);
+ if (result == NULL)
+ result = (char *) -1;
+ else if (len == 1)
+ memcpy (result, "/", 2);
else
- str = NULL;
+ *((char *) __mempcpy (result, linkval, len - 1)) = '\0';
}
else
- len = strlen (str);
-
- if (str == NULL)
{
+ result = (char *) -1;
/* We use the environment variable LD_ORIGIN_PATH. If it is set make
a copy and strip out trailing slashes. */
if (GLRO(dl_origin_path) != NULL)
}
}
}
- else
- {
- /* We can use this value. */
- assert (str[0] == '/');
- while (len > 1 && str[len - 1] != '/')
- --len;
- result = (char *) malloc (len + 1);
- if (result == NULL)
- result = (char *) -1;
- else if (len == 1)
- memcpy (result, "/", 2);
- else
- *((char *) __mempcpy (result, str, len - 1)) = '\0';
- }
return result;
}
# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
+# define MAP_STACK 0x20000 /* Allocation is for a stack. */
#endif
/* Flags to `msync'. */
/* getifaddrs -- get names and addresses of all network interfaces
- Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2003-2007, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
#endif
+/* There is a problem with this type. The address length for
+ Infiniband sockets is much longer than the 8 bytes allocated in the
+ sockaddr_ll definition. Hence we use here a special
+ definition. */
+struct sockaddr_ll_max
+ {
+ unsigned short int sll_family;
+ unsigned short int sll_protocol;
+ int sll_ifindex;
+ unsigned short int sll_hatype;
+ unsigned char sll_pkttype;
+ unsigned char sll_halen;
+ unsigned char sll_addr[24];
+ };
+
+
/* struct to hold the data for one ifaddrs entry, so we can allocate
everything at once. */
struct ifaddrs_storage
/* Save space for the biggest of the four used sockaddr types and
avoid a lot of casts. */
struct sockaddr sa;
- struct sockaddr_ll sl;
+ struct sockaddr_ll_max sl;
struct sockaddr_in s4;
struct sockaddr_in6 s6;
} addr, netmask, broadaddr;
/* Create a linked list of `struct ifaddrs' structures, one for each
network interface on the host machine. If successful, store the
- list in *IFAP and return 0. On errors, return -1 and set `errno'. */
+ list in *IFAP and 2004, 2005, 2006, return 0. On errors, return -1 and set `errno'. */
int
getifaddrs (struct ifaddrs **ifap)
{
+++ /dev/null
-/* Inline math functions for powerpc.
- Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2004, 2006, 2007, 2008
- Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _MATH_H
-# error "Never use <bits/mathinline.h> directly; include <math.h> instead."
-#endif
-
-#ifndef __extern_inline
-# define __MATH_INLINE __inline
-#else
-# define __MATH_INLINE __extern_inline
-#endif /* __cplusplus */
-
-#if defined __GNUC__ && !defined _SOFT_FLOAT
-
-#ifdef __USE_ISOC99
-# if !__GNUC_PREREQ (2,97)
-# define __unordered_cmp(x, y) \
- (__extension__ \
- ({ __typeof__(x) __x = (x); __typeof__(y) __y = (y); \
- unsigned __r; \
- __asm__("fcmpu 7,%1,%2 ; mfcr %0" : "=r" (__r) : "f" (__x), "f"(__y) \
- : "cr7"); \
- __r; }))
-
-# undef isgreater
-# undef isgreaterequal
-# undef isless
-# undef islessequal
-# undef islessgreater
-# undef isunordered
-
-# define isgreater(x, y) (__unordered_cmp (x, y) >> 2 & 1)
-# define isgreaterequal(x, y) ((__unordered_cmp (x, y) & 6) != 0)
-# define isless(x, y) (__unordered_cmp (x, y) >> 3 & 1)
-# define islessequal(x, y) ((__unordered_cmp (x, y) & 0xA) != 0)
-# define islessgreater(x, y) ((__unordered_cmp (x, y) & 0xC) != 0)
-# define isunordered(x, y) (__unordered_cmp (x, y) & 1)
-
-# endif /* __GNUC_PREREQ (2,97) */
-
-/* The gcc, version 2.7 or below, has problems with all this inlining
- code. So disable it for this version of the compiler. */
-# if __GNUC_PREREQ (2, 8)
-/* Test for negative number. Used in the signbit() macro. */
-__MATH_INLINE int
-__NTH (__signbitf (float __x))
-{
- __extension__ union { float __f; int __i; } __u = { __f: __x };
- return __u.__i < 0;
-}
-__MATH_INLINE int
-__NTH (__signbit (double __x))
-{
- __extension__ union { double __d; int __i[2]; } __u = { __d: __x };
- return __u.__i[0] < 0;
-}
-# ifdef __LONGDOUBLE128
-__MATH_INLINE int
-__NTH (__signbitl (long double __x))
-{
- __extension__ union { long double __d; int __i[4]; } __u = { __d: __x };
- return __u.__i[0] < 0;
-}
-# endif
-# endif
-#endif /* __USE_ISOC99 */
-
-#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__
-
-#ifdef __USE_ISOC99
-
-# ifndef __powerpc64__
-__MATH_INLINE long int lrint (double __x) __THROW;
-__MATH_INLINE long int
-__NTH (lrint (double __x))
-{
- union {
- double __d;
- int __ll[2];
- } __u;
- __asm__ ("fctiw %0,%1" : "=f"(__u.__d) : "f"(__x));
- return __u.__ll[1];
-}
-
-__MATH_INLINE long int lrintf (float __x) __THROW;
-__MATH_INLINE long int
-__NTH (lrintf (float __x))
-{
- union {
- double __d;
- int __ll[2];
- } __u;
- __asm__ ("fctiw %0,%1" : "=f"(__u.__d) : "f"(__x));
- return __u.__ll[1];
-}
-# endif
-
-__MATH_INLINE double fdim (double __x, double __y) __THROW;
-__MATH_INLINE double
-__NTH (fdim (double __x, double __y))
-{
- return __x <= __y ? 0 : __x - __y;
-}
-
-__MATH_INLINE float fdimf (float __x, float __y) __THROW;
-__MATH_INLINE float
-__NTH (fdimf (float __x, float __y))
-{
- return __x <= __y ? 0 : __x - __y;
-}
-
-#endif /* __USE_ISOC99 */
-#endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */
-#endif /* __GNUC__ && !_SOFT_FLOAT */
/* Definitions for POSIX memory map interface. Linux/PowerPC version.
- Copyright (C) 1997, 2000, 2003, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,2000,2003,2005,2006,2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
#define PROT_WRITE 0x2 /* Page can be written. */
#define PROT_EXEC 0x4 /* Page can be executed. */
#define PROT_NONE 0x0 /* Page can not be accessed. */
+#define PROT_SAO 0x10 /* Strong Access Ordering. */
#define PROT_GROWSDOWN 0x01000000 /* Extend change to start of
growsdown vma (mprotect only). */
#define PROT_GROWSUP 0x02000000 /* Extend change to start of
# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
+# define MAP_STACK 0x20000 /* Allocation is for a stack. */
#endif
/* Flags to `msync'. */
/* ix87 specific implementation of exp(x)-1.
- Copyright (C) 1996, 1997, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2001, 2002, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
Based on code by John C. Bowman <bowman@ipp-garching.mpg.de>.
.text
ENTRY(__expm1l)
+ movzwl 8+8(%rsp), %eax // load sign bit and 15-bit exponent
+ xorb $0x80, %ah // invert sign bit (now 1 is "positive")
+ cmpl $0xc006, %eax // is num positive and exp >= 6 (number is >= 128.0)?
+ jae __ieee754_expl // (if num is denormal, it is at least >= 64.0)
+
fldt 8(%rsp) // x
fxam // Is NaN or +-Inf?
fstsw %ax
cmp $0x90,%r8
jg L(ck_mem_ops_method)
L(now_dw_aligned_small):
- lea L(setPxQx)(%rip),%r11
add %r8,%rdi
#ifndef PIC
+ lea L(setPxQx)(%rip),%r11
jmpq *(%r11,%r8,8)
#else
- movslq (%r11,%r8,4),%rcx
+ lea L(Got0)(%rip),%r11
+ lea L(setPxQx)(%rip),%rcx
+ movswq (%rcx,%r8,2),%rcx
lea (%rcx,%r11,1),%r11
jmpq *%r11
#endif
# endif
#else
L(setPxQx):
- .int L(Got0)-L(setPxQx)
- .int L(P1Q0)-L(setPxQx)
- .int L(P2Q0)-L(setPxQx)
- .int L(P3Q0)-L(setPxQx)
- .int L(P4Q0)-L(setPxQx)
- .int L(P5Q0)-L(setPxQx)
- .int L(P6Q0)-L(setPxQx)
- .int L(P7Q0)-L(setPxQx)
-
- .int L(P0Q1)-L(setPxQx)
- .int L(P1Q1)-L(setPxQx)
- .int L(P2Q1)-L(setPxQx)
- .int L(P3Q1)-L(setPxQx)
- .int L(P4Q1)-L(setPxQx)
- .int L(P5Q1)-L(setPxQx)
- .int L(P6Q1)-L(setPxQx)
- .int L(P7Q1)-L(setPxQx)
-
- .int L(P0Q2)-L(setPxQx)
- .int L(P1Q2)-L(setPxQx)
- .int L(P2Q2)-L(setPxQx)
- .int L(P3Q2)-L(setPxQx)
- .int L(P4Q2)-L(setPxQx)
- .int L(P5Q2)-L(setPxQx)
- .int L(P6Q2)-L(setPxQx)
- .int L(P7Q2)-L(setPxQx)
-
- .int L(P0Q3)-L(setPxQx)
- .int L(P1Q3)-L(setPxQx)
- .int L(P2Q3)-L(setPxQx)
- .int L(P3Q3)-L(setPxQx)
- .int L(P4Q3)-L(setPxQx)
- .int L(P5Q3)-L(setPxQx)
- .int L(P6Q3)-L(setPxQx)
- .int L(P7Q3)-L(setPxQx)
-
- .int L(P0Q4)-L(setPxQx)
- .int L(P1Q4)-L(setPxQx)
- .int L(P2Q4)-L(setPxQx)
- .int L(P3Q4)-L(setPxQx)
- .int L(P4Q4)-L(setPxQx)
- .int L(P5Q4)-L(setPxQx)
- .int L(P6Q4)-L(setPxQx)
- .int L(P7Q4)-L(setPxQx)
-
- .int L(P0Q5)-L(setPxQx)
- .int L(P1Q5)-L(setPxQx)
- .int L(P2Q5)-L(setPxQx)
- .int L(P3Q5)-L(setPxQx)
- .int L(P4Q5)-L(setPxQx)
- .int L(P5Q5)-L(setPxQx)
- .int L(P6Q5)-L(setPxQx)
- .int L(P7Q5)-L(setPxQx)
-
- .int L(P0Q6)-L(setPxQx)
- .int L(P1Q6)-L(setPxQx)
- .int L(P2Q6)-L(setPxQx)
- .int L(P3Q6)-L(setPxQx)
- .int L(P4Q6)-L(setPxQx)
- .int L(P5Q6)-L(setPxQx)
- .int L(P6Q6)-L(setPxQx)
- .int L(P7Q6)-L(setPxQx)
-
- .int L(P0Q7)-L(setPxQx)
- .int L(P1Q7)-L(setPxQx)
- .int L(P2Q7)-L(setPxQx)
- .int L(P3Q7)-L(setPxQx)
- .int L(P4Q7)-L(setPxQx)
- .int L(P5Q7)-L(setPxQx)
- .int L(P6Q7)-L(setPxQx)
- .int L(P7Q7)-L(setPxQx)
-
- .int L(P0Q8)-L(setPxQx)
- .int L(P1Q8)-L(setPxQx)
- .int L(P2Q8)-L(setPxQx)
- .int L(P3Q8)-L(setPxQx)
- .int L(P4Q8)-L(setPxQx)
- .int L(P5Q8)-L(setPxQx)
- .int L(P6Q8)-L(setPxQx)
- .int L(P7Q8)-L(setPxQx)
-
- .int L(P0Q9)-L(setPxQx)
- .int L(P1Q9)-L(setPxQx)
- .int L(P2Q9)-L(setPxQx)
- .int L(P3Q9)-L(setPxQx)
- .int L(P4Q9)-L(setPxQx)
- .int L(P5Q9)-L(setPxQx)
- .int L(P6Q9)-L(setPxQx)
- .int L(P7Q9)-L(setPxQx)
-
- .int L(P0QA)-L(setPxQx)
- .int L(P1QA)-L(setPxQx)
- .int L(P2QA)-L(setPxQx)
- .int L(P3QA)-L(setPxQx)
- .int L(P4QA)-L(setPxQx)
- .int L(P5QA)-L(setPxQx)
- .int L(P6QA)-L(setPxQx)
- .int L(P7QA)-L(setPxQx)
-
- .int L(P0QB)-L(setPxQx)
- .int L(P1QB)-L(setPxQx)
- .int L(P2QB)-L(setPxQx)
- .int L(P3QB)-L(setPxQx)
- .int L(P4QB)-L(setPxQx)
- .int L(P5QB)-L(setPxQx)
- .int L(P6QB)-L(setPxQx)
- .int L(P7QB)-L(setPxQx)
-
- .int L(P0QC)-L(setPxQx)
- .int L(P1QC)-L(setPxQx)
- .int L(P2QC)-L(setPxQx)
- .int L(P3QC)-L(setPxQx)
- .int L(P4QC)-L(setPxQx)
- .int L(P5QC)-L(setPxQx)
- .int L(P6QC)-L(setPxQx)
- .int L(P7QC)-L(setPxQx)
-
- .int L(P0QD)-L(setPxQx)
- .int L(P1QD)-L(setPxQx)
- .int L(P2QD)-L(setPxQx)
- .int L(P3QD)-L(setPxQx)
- .int L(P4QD)-L(setPxQx)
- .int L(P5QD)-L(setPxQx)
- .int L(P6QD)-L(setPxQx)
- .int L(P7QD)-L(setPxQx)
-
- .int L(P0QE)-L(setPxQx)
- .int L(P1QE)-L(setPxQx)
- .int L(P2QE)-L(setPxQx)
- .int L(P3QE)-L(setPxQx)
- .int L(P4QE)-L(setPxQx)
- .int L(P5QE)-L(setPxQx)
- .int L(P6QE)-L(setPxQx)
- .int L(P7QE)-L(setPxQx)
-
- .int L(P0QF)-L(setPxQx)
- .int L(P1QF)-L(setPxQx)
- .int L(P2QF)-L(setPxQx)
- .int L(P3QF)-L(setPxQx)
- .int L(P4QF)-L(setPxQx)
- .int L(P5QF)-L(setPxQx)
- .int L(P6QF)-L(setPxQx)
- .int L(P7QF)-L(setPxQx)
-
- .int L(P0QG)-L(setPxQx)
- .int L(P1QG)-L(setPxQx)
- .int L(P2QG)-L(setPxQx)
- .int L(P3QG)-L(setPxQx)
- .int L(P4QG)-L(setPxQx)
- .int L(P5QG)-L(setPxQx)
- .int L(P6QG)-L(setPxQx)
- .int L(P7QG)-L(setPxQx)
-
- .int L(P0QH)-L(setPxQx)
- .int L(P1QH)-L(setPxQx)
- .int L(P2QH)-L(setPxQx)
- .int L(P3QH)-L(setPxQx)
- .int L(P4QH)-L(setPxQx)
- .int L(P5QH)-L(setPxQx)
- .int L(P6QH)-L(setPxQx)
- .int L(P7QH)-L(setPxQx)
-
- .int L(P0QI)-L(setPxQx)
+ .short L(Got0)-L(Got0)
+ .short L(P1Q0)-L(Got0)
+ .short L(P2Q0)-L(Got0)
+ .short L(P3Q0)-L(Got0)
+ .short L(P4Q0)-L(Got0)
+ .short L(P5Q0)-L(Got0)
+ .short L(P6Q0)-L(Got0)
+ .short L(P7Q0)-L(Got0)
+
+ .short L(P0Q1)-L(Got0)
+ .short L(P1Q1)-L(Got0)
+ .short L(P2Q1)-L(Got0)
+ .short L(P3Q1)-L(Got0)
+ .short L(P4Q1)-L(Got0)
+ .short L(P5Q1)-L(Got0)
+ .short L(P6Q1)-L(Got0)
+ .short L(P7Q1)-L(Got0)
+
+ .short L(P0Q2)-L(Got0)
+ .short L(P1Q2)-L(Got0)
+ .short L(P2Q2)-L(Got0)
+ .short L(P3Q2)-L(Got0)
+ .short L(P4Q2)-L(Got0)
+ .short L(P5Q2)-L(Got0)
+ .short L(P6Q2)-L(Got0)
+ .short L(P7Q2)-L(Got0)
+
+ .short L(P0Q3)-L(Got0)
+ .short L(P1Q3)-L(Got0)
+ .short L(P2Q3)-L(Got0)
+ .short L(P3Q3)-L(Got0)
+ .short L(P4Q3)-L(Got0)
+ .short L(P5Q3)-L(Got0)
+ .short L(P6Q3)-L(Got0)
+ .short L(P7Q3)-L(Got0)
+
+ .short L(P0Q4)-L(Got0)
+ .short L(P1Q4)-L(Got0)
+ .short L(P2Q4)-L(Got0)
+ .short L(P3Q4)-L(Got0)
+ .short L(P4Q4)-L(Got0)
+ .short L(P5Q4)-L(Got0)
+ .short L(P6Q4)-L(Got0)
+ .short L(P7Q4)-L(Got0)
+
+ .short L(P0Q5)-L(Got0)
+ .short L(P1Q5)-L(Got0)
+ .short L(P2Q5)-L(Got0)
+ .short L(P3Q5)-L(Got0)
+ .short L(P4Q5)-L(Got0)
+ .short L(P5Q5)-L(Got0)
+ .short L(P6Q5)-L(Got0)
+ .short L(P7Q5)-L(Got0)
+
+ .short L(P0Q6)-L(Got0)
+ .short L(P1Q6)-L(Got0)
+ .short L(P2Q6)-L(Got0)
+ .short L(P3Q6)-L(Got0)
+ .short L(P4Q6)-L(Got0)
+ .short L(P5Q6)-L(Got0)
+ .short L(P6Q6)-L(Got0)
+ .short L(P7Q6)-L(Got0)
+
+ .short L(P0Q7)-L(Got0)
+ .short L(P1Q7)-L(Got0)
+ .short L(P2Q7)-L(Got0)
+ .short L(P3Q7)-L(Got0)
+ .short L(P4Q7)-L(Got0)
+ .short L(P5Q7)-L(Got0)
+ .short L(P6Q7)-L(Got0)
+ .short L(P7Q7)-L(Got0)
+
+ .short L(P0Q8)-L(Got0)
+ .short L(P1Q8)-L(Got0)
+ .short L(P2Q8)-L(Got0)
+ .short L(P3Q8)-L(Got0)
+ .short L(P4Q8)-L(Got0)
+ .short L(P5Q8)-L(Got0)
+ .short L(P6Q8)-L(Got0)
+ .short L(P7Q8)-L(Got0)
+
+ .short L(P0Q9)-L(Got0)
+ .short L(P1Q9)-L(Got0)
+ .short L(P2Q9)-L(Got0)
+ .short L(P3Q9)-L(Got0)
+ .short L(P4Q9)-L(Got0)
+ .short L(P5Q9)-L(Got0)
+ .short L(P6Q9)-L(Got0)
+ .short L(P7Q9)-L(Got0)
+
+ .short L(P0QA)-L(Got0)
+ .short L(P1QA)-L(Got0)
+ .short L(P2QA)-L(Got0)
+ .short L(P3QA)-L(Got0)
+ .short L(P4QA)-L(Got0)
+ .short L(P5QA)-L(Got0)
+ .short L(P6QA)-L(Got0)
+ .short L(P7QA)-L(Got0)
+
+ .short L(P0QB)-L(Got0)
+ .short L(P1QB)-L(Got0)
+ .short L(P2QB)-L(Got0)
+ .short L(P3QB)-L(Got0)
+ .short L(P4QB)-L(Got0)
+ .short L(P5QB)-L(Got0)
+ .short L(P6QB)-L(Got0)
+ .short L(P7QB)-L(Got0)
+
+ .short L(P0QC)-L(Got0)
+ .short L(P1QC)-L(Got0)
+ .short L(P2QC)-L(Got0)
+ .short L(P3QC)-L(Got0)
+ .short L(P4QC)-L(Got0)
+ .short L(P5QC)-L(Got0)
+ .short L(P6QC)-L(Got0)
+ .short L(P7QC)-L(Got0)
+
+ .short L(P0QD)-L(Got0)
+ .short L(P1QD)-L(Got0)
+ .short L(P2QD)-L(Got0)
+ .short L(P3QD)-L(Got0)
+ .short L(P4QD)-L(Got0)
+ .short L(P5QD)-L(Got0)
+ .short L(P6QD)-L(Got0)
+ .short L(P7QD)-L(Got0)
+
+ .short L(P0QE)-L(Got0)
+ .short L(P1QE)-L(Got0)
+ .short L(P2QE)-L(Got0)
+ .short L(P3QE)-L(Got0)
+ .short L(P4QE)-L(Got0)
+ .short L(P5QE)-L(Got0)
+ .short L(P6QE)-L(Got0)
+ .short L(P7QE)-L(Got0)
+
+ .short L(P0QF)-L(Got0)
+ .short L(P1QF)-L(Got0)
+ .short L(P2QF)-L(Got0)
+ .short L(P3QF)-L(Got0)
+ .short L(P4QF)-L(Got0)
+ .short L(P5QF)-L(Got0)
+ .short L(P6QF)-L(Got0)
+ .short L(P7QF)-L(Got0)
+
+ .short L(P0QG)-L(Got0)
+ .short L(P1QG)-L(Got0)
+ .short L(P2QG)-L(Got0)
+ .short L(P3QG)-L(Got0)
+ .short L(P4QG)-L(Got0)
+ .short L(P5QG)-L(Got0)
+ .short L(P6QG)-L(Got0)
+ .short L(P7QG)-L(Got0)
+
+ .short L(P0QH)-L(Got0)
+ .short L(P1QH)-L(Got0)
+ .short L(P2QH)-L(Got0)
+ .short L(P3QH)-L(Got0)
+ .short L(P4QH)-L(Got0)
+ .short L(P5QH)-L(Got0)
+ .short L(P6QH)-L(Got0)
+ .short L(P7QH)-L(Got0)
+
+ .short L(P0QI)-L(Got0)
# ifdef USE_EXTRA_TABLE
- .int L(P1QI)-L(setPxQx)
- .int L(P2QI)-L(setPxQx)
- .int L(P3QI)-L(setPxQx)
- .int L(P4QI)-L(setPxQx)
- .int L(P5QI)-L(setPxQx)
- .int L(P6QI)-L(setPxQx)
- .int L(P7QI)-L(setPxQx)
+ .short L(P1QI)-L(Got0)
+ .short L(P2QI)-L(Got0)
+ .short L(P3QI)-L(Got0)
+ .short L(P4QI)-L(Got0)
+ .short L(P5QI)-L(Got0)
+ .short L(P6QI)-L(Got0)
+ .short L(P7QI)-L(Got0)
# endif
#endif
.popsection
# align to 16 byte boundary first
#test $0xf,%rdi
#jz L(aligned_now)
- lea L(AliPxQx)(%rip),%r11
- mov $0x10,%r10
- mov %rdi,%r9
- and $0xf,%r9
- sub %r9,%r10
- and $0xf,%r10
- add %r10,%rdi
- sub %r10,%r8
+ mov $0x10,%r10
+ mov %rdi,%r9
+ and $0xf,%r9
+ sub %r9,%r10
+ and $0xf,%r10
+ add %r10,%rdi
+ sub %r10,%r8
#ifndef PIC
+ lea L(AliPxQx)(%rip),%r11
jmpq *(%r11,%r10,8)
#else
- movslq (%r11,%r10,4),%rcx
+ lea L(aligned_now)(%rip), %r11
+ lea L(AliPxQx)(%rip),%rcx
+ movswq (%rcx,%r10,2),%rcx
lea (%rcx,%r11,1),%r11
jmpq *%r11
#endif
.quad L(A4Q1), L(A5Q1), L(A6Q1), L(A7Q1)
#else
L(AliPxQx):
- .int L(aligned_now)-L(AliPxQx)
- .int L(A1Q0)-L(AliPxQx)
- .int L(A2Q0)-L(AliPxQx)
- .int L(A3Q0)-L(AliPxQx)
- .int L(A4Q0)-L(AliPxQx)
- .int L(A5Q0)-L(AliPxQx)
- .int L(A6Q0)-L(AliPxQx)
- .int L(A7Q0)-L(AliPxQx)
-
- .int L(A0Q1)-L(AliPxQx)
- .int L(A1Q1)-L(AliPxQx)
- .int L(A2Q1)-L(AliPxQx)
- .int L(A3Q1)-L(AliPxQx)
- .int L(A4Q1)-L(AliPxQx)
- .int L(A5Q1)-L(AliPxQx)
- .int L(A6Q1)-L(AliPxQx)
- .int L(A7Q1)-L(AliPxQx)
+ .short L(aligned_now)-L(aligned_now)
+ .short L(A1Q0)-L(aligned_now)
+ .short L(A2Q0)-L(aligned_now)
+ .short L(A3Q0)-L(aligned_now)
+ .short L(A4Q0)-L(aligned_now)
+ .short L(A5Q0)-L(aligned_now)
+ .short L(A6Q0)-L(aligned_now)
+ .short L(A7Q0)-L(aligned_now)
+
+ .short L(A0Q1)-L(aligned_now)
+ .short L(A1Q1)-L(aligned_now)
+ .short L(A2Q1)-L(aligned_now)
+ .short L(A3Q1)-L(aligned_now)
+ .short L(A4Q1)-L(aligned_now)
+ .short L(A5Q1)-L(aligned_now)
+ .short L(A6Q1)-L(aligned_now)
+ .short L(A7Q1)-L(aligned_now)
#endif
.popsection
L(8byte_move_skip):
andl $127,%r8d
lea (%rdi,%r8,1),%rdi
- lea L(setPxQx)(%rip),%r11
#ifndef PIC
+ lea L(setPxQx)(%rip),%r11
jmpq *(%r11,%r8,8) # old scheme remained for nonPIC
#else
- movslq (%r11,%r8,4),%rcx
+ lea L(Got0)(%rip),%r11
+ lea L(setPxQx)(%rip),%rcx
+ movswq (%rcx,%r8,2),%rcx
lea (%rcx,%r11,1),%r11
jmpq *%r11
#endif
andl $7,%r8d
lea (%rdi,%r8,1),%rdi
- lea L(setPxQx)(%rip),%r11
#ifndef PIC
+ lea L(setPxQx)(%rip),%r11
jmpq *(%r11,%r8,8) # old scheme remained for nonPIC
#else
- movslq (%r11,%r8,4),%rcx
+ lea L(Got0)(%rip),%r11
+ lea L(setPxQx)(%rip),%rcx
+ movswq (%rcx,%r8,2),%rcx
lea (%rcx,%r11,1),%r11
jmpq *%r11
#endif
andl $127,%r8d
lea (%rdi,%r8,1),%rdi
- lea L(setPxQx)(%rip),%r11
#ifndef PIC
+ lea L(setPxQx)(%rip),%r11
jmpq *(%r11,%r8,8) # old scheme remained for nonPIC
#else
- movslq (%r11,%r8,4),%rcx
+ lea L(Got0)(%rip),%r11
+ lea L(setPxQx)(%rip),%rcx
+ movswq (%rcx,%r8,2),%rcx
lea (%rcx,%r11,1),%r11
jmpq *%r11
#endif
movd %rdx,%xmm0
punpcklqdq %xmm0,%xmm0
- lea L(SSExDx)(%rip),%r9 # for later after the alignment
cmp $0xb0,%r8 # 176
jge L(byte32sse2_pre)
add %r8,%rdi
#ifndef PIC
+ lea L(SSExDx)(%rip),%r9
jmpq *(%r9,%r8,8)
#else
- movslq (%r9,%r8,4),%rcx
+ lea L(SSE0Q0)(%rip),%r9
+ lea L(SSExDx)(%rip),%rcx
+ movswq (%rcx,%r8,2),%rcx
lea (%rcx,%r9,1),%r9
jmpq *%r9
#endif
lea 0x80(%rdi),%rdi
jge L(byte32sse2)
- lea L(SSExDx)(%rip),%r11
add %r8,%rdi
#ifndef PIC
+ lea L(SSExDx)(%rip),%r11
jmpq *(%r11,%r8,8)
#else
- movslq (%r11,%r8,4),%rcx
- lea (%rcx,%r11,1),%r11
+ lea L(SSE0Q0)(%rip),%r11
+ lea L(SSExDx)(%rip),%rcx
+ movswq (%rcx,%r8,2),%rcx
+ lea (%rcx,%r11,1),%r11
jmpq *%r11
#endif
lea 0x80(%rdi),%rdi
jge L(sse2_nt_move)
- lea L(SSExDx)(%rip),%r11
sfence
add %r8,%rdi
#ifndef PIC
+ lea L(SSExDx)(%rip),%r11
jmpq *(%r11,%r8,8)
#else
- movslq (%r11,%r8,4),%rcx
+ lea L(SSE0Q0)(%rip),%r11
+ lea L(SSExDx)(%rip),%rcx
+ movswq (%rcx,%r8,2),%rcx
lea (%rcx,%r11,1),%r11
jmpq *%r11
#endif
.quad L(SSE12QB), L(SSE13QB), L(SSE14QB), L(SSE15QB)
#else
L(SSExDx):
- .int L(SSE0Q0) -L(SSExDx)
- .int L(SSE1Q0) -L(SSExDx)
- .int L(SSE2Q0) -L(SSExDx)
- .int L(SSE3Q0) -L(SSExDx)
- .int L(SSE4Q0) -L(SSExDx)
- .int L(SSE5Q0) -L(SSExDx)
- .int L(SSE6Q0) -L(SSExDx)
- .int L(SSE7Q0) -L(SSExDx)
-
- .int L(SSE8Q0) -L(SSExDx)
- .int L(SSE9Q0) -L(SSExDx)
- .int L(SSE10Q0)-L(SSExDx)
- .int L(SSE11Q0)-L(SSExDx)
- .int L(SSE12Q0)-L(SSExDx)
- .int L(SSE13Q0)-L(SSExDx)
- .int L(SSE14Q0)-L(SSExDx)
- .int L(SSE15Q0)-L(SSExDx)
-
- .int L(SSE0Q1) -L(SSExDx)
- .int L(SSE1Q1) -L(SSExDx)
- .int L(SSE2Q1) -L(SSExDx)
- .int L(SSE3Q1) -L(SSExDx)
- .int L(SSE4Q1) -L(SSExDx)
- .int L(SSE5Q1) -L(SSExDx)
- .int L(SSE6Q1) -L(SSExDx)
- .int L(SSE7Q1) -L(SSExDx)
-
- .int L(SSE8Q1) -L(SSExDx)
- .int L(SSE9Q1) -L(SSExDx)
- .int L(SSE10Q1)-L(SSExDx)
- .int L(SSE11Q1)-L(SSExDx)
- .int L(SSE12Q1)-L(SSExDx)
- .int L(SSE13Q1)-L(SSExDx)
- .int L(SSE14Q1)-L(SSExDx)
- .int L(SSE15Q1)-L(SSExDx)
-
- .int L(SSE0Q2) -L(SSExDx)
- .int L(SSE1Q2) -L(SSExDx)
- .int L(SSE2Q2) -L(SSExDx)
- .int L(SSE3Q2) -L(SSExDx)
- .int L(SSE4Q2) -L(SSExDx)
- .int L(SSE5Q2) -L(SSExDx)
- .int L(SSE6Q2) -L(SSExDx)
- .int L(SSE7Q2) -L(SSExDx)
-
- .int L(SSE8Q2) -L(SSExDx)
- .int L(SSE9Q2) -L(SSExDx)
- .int L(SSE10Q2)-L(SSExDx)
- .int L(SSE11Q2)-L(SSExDx)
- .int L(SSE12Q2)-L(SSExDx)
- .int L(SSE13Q2)-L(SSExDx)
- .int L(SSE14Q2)-L(SSExDx)
- .int L(SSE15Q2)-L(SSExDx)
-
- .int L(SSE0Q3) -L(SSExDx)
- .int L(SSE1Q3) -L(SSExDx)
- .int L(SSE2Q3) -L(SSExDx)
- .int L(SSE3Q3) -L(SSExDx)
- .int L(SSE4Q3) -L(SSExDx)
- .int L(SSE5Q3) -L(SSExDx)
- .int L(SSE6Q3) -L(SSExDx)
- .int L(SSE7Q3) -L(SSExDx)
-
- .int L(SSE8Q3) -L(SSExDx)
- .int L(SSE9Q3) -L(SSExDx)
- .int L(SSE10Q3)-L(SSExDx)
- .int L(SSE11Q3)-L(SSExDx)
- .int L(SSE12Q3)-L(SSExDx)
- .int L(SSE13Q3)-L(SSExDx)
- .int L(SSE14Q3)-L(SSExDx)
- .int L(SSE15Q3)-L(SSExDx)
-
- .int L(SSE0Q4) -L(SSExDx)
- .int L(SSE1Q4) -L(SSExDx)
- .int L(SSE2Q4) -L(SSExDx)
- .int L(SSE3Q4) -L(SSExDx)
- .int L(SSE4Q4) -L(SSExDx)
- .int L(SSE5Q4) -L(SSExDx)
- .int L(SSE6Q4) -L(SSExDx)
- .int L(SSE7Q4) -L(SSExDx)
-
- .int L(SSE8Q4) -L(SSExDx)
- .int L(SSE9Q4) -L(SSExDx)
- .int L(SSE10Q4)-L(SSExDx)
- .int L(SSE11Q4)-L(SSExDx)
- .int L(SSE12Q4)-L(SSExDx)
- .int L(SSE13Q4)-L(SSExDx)
- .int L(SSE14Q4)-L(SSExDx)
- .int L(SSE15Q4)-L(SSExDx)
-
- .int L(SSE0Q5) -L(SSExDx)
- .int L(SSE1Q5) -L(SSExDx)
- .int L(SSE2Q5) -L(SSExDx)
- .int L(SSE3Q5) -L(SSExDx)
- .int L(SSE4Q5) -L(SSExDx)
- .int L(SSE5Q5) -L(SSExDx)
- .int L(SSE6Q5) -L(SSExDx)
- .int L(SSE7Q5) -L(SSExDx)
-
- .int L(SSE8Q5) -L(SSExDx)
- .int L(SSE9Q5) -L(SSExDx)
- .int L(SSE10Q5)-L(SSExDx)
- .int L(SSE11Q5)-L(SSExDx)
- .int L(SSE12Q5)-L(SSExDx)
- .int L(SSE13Q5)-L(SSExDx)
- .int L(SSE14Q5)-L(SSExDx)
- .int L(SSE15Q5)-L(SSExDx)
-
- .int L(SSE0Q6) -L(SSExDx)
- .int L(SSE1Q6) -L(SSExDx)
- .int L(SSE2Q6) -L(SSExDx)
- .int L(SSE3Q6) -L(SSExDx)
- .int L(SSE4Q6) -L(SSExDx)
- .int L(SSE5Q6) -L(SSExDx)
- .int L(SSE6Q6) -L(SSExDx)
- .int L(SSE7Q6) -L(SSExDx)
-
- .int L(SSE8Q6) -L(SSExDx)
- .int L(SSE9Q6) -L(SSExDx)
- .int L(SSE10Q6)-L(SSExDx)
- .int L(SSE11Q6)-L(SSExDx)
- .int L(SSE12Q6)-L(SSExDx)
- .int L(SSE13Q6)-L(SSExDx)
- .int L(SSE14Q6)-L(SSExDx)
- .int L(SSE15Q6)-L(SSExDx)
-
- .int L(SSE0Q7) -L(SSExDx)
- .int L(SSE1Q7) -L(SSExDx)
- .int L(SSE2Q7) -L(SSExDx)
- .int L(SSE3Q7) -L(SSExDx)
- .int L(SSE4Q7) -L(SSExDx)
- .int L(SSE5Q7) -L(SSExDx)
- .int L(SSE6Q7) -L(SSExDx)
- .int L(SSE7Q7) -L(SSExDx)
-
- .int L(SSE8Q7) -L(SSExDx)
- .int L(SSE9Q7) -L(SSExDx)
- .int L(SSE10Q7)-L(SSExDx)
- .int L(SSE11Q7)-L(SSExDx)
- .int L(SSE12Q7)-L(SSExDx)
- .int L(SSE13Q7)-L(SSExDx)
- .int L(SSE14Q7)-L(SSExDx)
- .int L(SSE15Q7)-L(SSExDx)
-
- .int L(SSE0Q8) -L(SSExDx)
- .int L(SSE1Q8) -L(SSExDx)
- .int L(SSE2Q8) -L(SSExDx)
- .int L(SSE3Q8) -L(SSExDx)
- .int L(SSE4Q8) -L(SSExDx)
- .int L(SSE5Q8) -L(SSExDx)
- .int L(SSE6Q8) -L(SSExDx)
- .int L(SSE7Q8) -L(SSExDx)
-
- .int L(SSE8Q8) -L(SSExDx)
- .int L(SSE9Q8) -L(SSExDx)
- .int L(SSE10Q8)-L(SSExDx)
- .int L(SSE11Q8)-L(SSExDx)
- .int L(SSE12Q8)-L(SSExDx)
- .int L(SSE13Q8)-L(SSExDx)
- .int L(SSE14Q8)-L(SSExDx)
- .int L(SSE15Q8)-L(SSExDx)
-
- .int L(SSE0Q9) -L(SSExDx)
- .int L(SSE1Q9) -L(SSExDx)
- .int L(SSE2Q9) -L(SSExDx)
- .int L(SSE3Q9) -L(SSExDx)
- .int L(SSE4Q9) -L(SSExDx)
- .int L(SSE5Q9) -L(SSExDx)
- .int L(SSE6Q9) -L(SSExDx)
- .int L(SSE7Q9) -L(SSExDx)
-
- .int L(SSE8Q9) -L(SSExDx)
- .int L(SSE9Q9) -L(SSExDx)
- .int L(SSE10Q9)-L(SSExDx)
- .int L(SSE11Q9)-L(SSExDx)
- .int L(SSE12Q9)-L(SSExDx)
- .int L(SSE13Q9)-L(SSExDx)
- .int L(SSE14Q9)-L(SSExDx)
- .int L(SSE15Q9)-L(SSExDx)
-
- .int L(SSE0QA) -L(SSExDx)
- .int L(SSE1QA) -L(SSExDx)
- .int L(SSE2QA) -L(SSExDx)
- .int L(SSE3QA) -L(SSExDx)
- .int L(SSE4QA) -L(SSExDx)
- .int L(SSE5QA) -L(SSExDx)
- .int L(SSE6QA) -L(SSExDx)
- .int L(SSE7QA) -L(SSExDx)
-
- .int L(SSE8QA) -L(SSExDx)
- .int L(SSE9QA) -L(SSExDx)
- .int L(SSE10QA)-L(SSExDx)
- .int L(SSE11QA)-L(SSExDx)
- .int L(SSE12QA)-L(SSExDx)
- .int L(SSE13QA)-L(SSExDx)
- .int L(SSE14QA)-L(SSExDx)
- .int L(SSE15QA)-L(SSExDx)
-
- .int L(SSE0QB) -L(SSExDx)
- .int L(SSE1QB) -L(SSExDx)
- .int L(SSE2QB) -L(SSExDx)
- .int L(SSE3QB) -L(SSExDx)
- .int L(SSE4QB) -L(SSExDx)
- .int L(SSE5QB) -L(SSExDx)
- .int L(SSE6QB) -L(SSExDx)
- .int L(SSE7QB) -L(SSExDx)
-
- .int L(SSE8QB) -L(SSExDx)
- .int L(SSE9QB) -L(SSExDx)
- .int L(SSE10QB)-L(SSExDx)
- .int L(SSE11QB)-L(SSExDx)
- .int L(SSE12QB)-L(SSExDx)
- .int L(SSE13QB)-L(SSExDx)
- .int L(SSE14QB)-L(SSExDx)
- .int L(SSE15QB)-L(SSExDx)
+ .short L(SSE0Q0) -L(SSE0Q0)
+ .short L(SSE1Q0) -L(SSE0Q0)
+ .short L(SSE2Q0) -L(SSE0Q0)
+ .short L(SSE3Q0) -L(SSE0Q0)
+ .short L(SSE4Q0) -L(SSE0Q0)
+ .short L(SSE5Q0) -L(SSE0Q0)
+ .short L(SSE6Q0) -L(SSE0Q0)
+ .short L(SSE7Q0) -L(SSE0Q0)
+
+ .short L(SSE8Q0) -L(SSE0Q0)
+ .short L(SSE9Q0) -L(SSE0Q0)
+ .short L(SSE10Q0)-L(SSE0Q0)
+ .short L(SSE11Q0)-L(SSE0Q0)
+ .short L(SSE12Q0)-L(SSE0Q0)
+ .short L(SSE13Q0)-L(SSE0Q0)
+ .short L(SSE14Q0)-L(SSE0Q0)
+ .short L(SSE15Q0)-L(SSE0Q0)
+
+ .short L(SSE0Q1) -L(SSE0Q0)
+ .short L(SSE1Q1) -L(SSE0Q0)
+ .short L(SSE2Q1) -L(SSE0Q0)
+ .short L(SSE3Q1) -L(SSE0Q0)
+ .short L(SSE4Q1) -L(SSE0Q0)
+ .short L(SSE5Q1) -L(SSE0Q0)
+ .short L(SSE6Q1) -L(SSE0Q0)
+ .short L(SSE7Q1) -L(SSE0Q0)
+
+ .short L(SSE8Q1) -L(SSE0Q0)
+ .short L(SSE9Q1) -L(SSE0Q0)
+ .short L(SSE10Q1)-L(SSE0Q0)
+ .short L(SSE11Q1)-L(SSE0Q0)
+ .short L(SSE12Q1)-L(SSE0Q0)
+ .short L(SSE13Q1)-L(SSE0Q0)
+ .short L(SSE14Q1)-L(SSE0Q0)
+ .short L(SSE15Q1)-L(SSE0Q0)
+
+ .short L(SSE0Q2) -L(SSE0Q0)
+ .short L(SSE1Q2) -L(SSE0Q0)
+ .short L(SSE2Q2) -L(SSE0Q0)
+ .short L(SSE3Q2) -L(SSE0Q0)
+ .short L(SSE4Q2) -L(SSE0Q0)
+ .short L(SSE5Q2) -L(SSE0Q0)
+ .short L(SSE6Q2) -L(SSE0Q0)
+ .short L(SSE7Q2) -L(SSE0Q0)
+
+ .short L(SSE8Q2) -L(SSE0Q0)
+ .short L(SSE9Q2) -L(SSE0Q0)
+ .short L(SSE10Q2)-L(SSE0Q0)
+ .short L(SSE11Q2)-L(SSE0Q0)
+ .short L(SSE12Q2)-L(SSE0Q0)
+ .short L(SSE13Q2)-L(SSE0Q0)
+ .short L(SSE14Q2)-L(SSE0Q0)
+ .short L(SSE15Q2)-L(SSE0Q0)
+
+ .short L(SSE0Q3) -L(SSE0Q0)
+ .short L(SSE1Q3) -L(SSE0Q0)
+ .short L(SSE2Q3) -L(SSE0Q0)
+ .short L(SSE3Q3) -L(SSE0Q0)
+ .short L(SSE4Q3) -L(SSE0Q0)
+ .short L(SSE5Q3) -L(SSE0Q0)
+ .short L(SSE6Q3) -L(SSE0Q0)
+ .short L(SSE7Q3) -L(SSE0Q0)
+
+ .short L(SSE8Q3) -L(SSE0Q0)
+ .short L(SSE9Q3) -L(SSE0Q0)
+ .short L(SSE10Q3)-L(SSE0Q0)
+ .short L(SSE11Q3)-L(SSE0Q0)
+ .short L(SSE12Q3)-L(SSE0Q0)
+ .short L(SSE13Q3)-L(SSE0Q0)
+ .short L(SSE14Q3)-L(SSE0Q0)
+ .short L(SSE15Q3)-L(SSE0Q0)
+
+ .short L(SSE0Q4) -L(SSE0Q0)
+ .short L(SSE1Q4) -L(SSE0Q0)
+ .short L(SSE2Q4) -L(SSE0Q0)
+ .short L(SSE3Q4) -L(SSE0Q0)
+ .short L(SSE4Q4) -L(SSE0Q0)
+ .short L(SSE5Q4) -L(SSE0Q0)
+ .short L(SSE6Q4) -L(SSE0Q0)
+ .short L(SSE7Q4) -L(SSE0Q0)
+
+ .short L(SSE8Q4) -L(SSE0Q0)
+ .short L(SSE9Q4) -L(SSE0Q0)
+ .short L(SSE10Q4)-L(SSE0Q0)
+ .short L(SSE11Q4)-L(SSE0Q0)
+ .short L(SSE12Q4)-L(SSE0Q0)
+ .short L(SSE13Q4)-L(SSE0Q0)
+ .short L(SSE14Q4)-L(SSE0Q0)
+ .short L(SSE15Q4)-L(SSE0Q0)
+
+ .short L(SSE0Q5) -L(SSE0Q0)
+ .short L(SSE1Q5) -L(SSE0Q0)
+ .short L(SSE2Q5) -L(SSE0Q0)
+ .short L(SSE3Q5) -L(SSE0Q0)
+ .short L(SSE4Q5) -L(SSE0Q0)
+ .short L(SSE5Q5) -L(SSE0Q0)
+ .short L(SSE6Q5) -L(SSE0Q0)
+ .short L(SSE7Q5) -L(SSE0Q0)
+
+ .short L(SSE8Q5) -L(SSE0Q0)
+ .short L(SSE9Q5) -L(SSE0Q0)
+ .short L(SSE10Q5)-L(SSE0Q0)
+ .short L(SSE11Q5)-L(SSE0Q0)
+ .short L(SSE12Q5)-L(SSE0Q0)
+ .short L(SSE13Q5)-L(SSE0Q0)
+ .short L(SSE14Q5)-L(SSE0Q0)
+ .short L(SSE15Q5)-L(SSE0Q0)
+
+ .short L(SSE0Q6) -L(SSE0Q0)
+ .short L(SSE1Q6) -L(SSE0Q0)
+ .short L(SSE2Q6) -L(SSE0Q0)
+ .short L(SSE3Q6) -L(SSE0Q0)
+ .short L(SSE4Q6) -L(SSE0Q0)
+ .short L(SSE5Q6) -L(SSE0Q0)
+ .short L(SSE6Q6) -L(SSE0Q0)
+ .short L(SSE7Q6) -L(SSE0Q0)
+
+ .short L(SSE8Q6) -L(SSE0Q0)
+ .short L(SSE9Q6) -L(SSE0Q0)
+ .short L(SSE10Q6)-L(SSE0Q0)
+ .short L(SSE11Q6)-L(SSE0Q0)
+ .short L(SSE12Q6)-L(SSE0Q0)
+ .short L(SSE13Q6)-L(SSE0Q0)
+ .short L(SSE14Q6)-L(SSE0Q0)
+ .short L(SSE15Q6)-L(SSE0Q0)
+
+ .short L(SSE0Q7) -L(SSE0Q0)
+ .short L(SSE1Q7) -L(SSE0Q0)
+ .short L(SSE2Q7) -L(SSE0Q0)
+ .short L(SSE3Q7) -L(SSE0Q0)
+ .short L(SSE4Q7) -L(SSE0Q0)
+ .short L(SSE5Q7) -L(SSE0Q0)
+ .short L(SSE6Q7) -L(SSE0Q0)
+ .short L(SSE7Q7) -L(SSE0Q0)
+
+ .short L(SSE8Q7) -L(SSE0Q0)
+ .short L(SSE9Q7) -L(SSE0Q0)
+ .short L(SSE10Q7)-L(SSE0Q0)
+ .short L(SSE11Q7)-L(SSE0Q0)
+ .short L(SSE12Q7)-L(SSE0Q0)
+ .short L(SSE13Q7)-L(SSE0Q0)
+ .short L(SSE14Q7)-L(SSE0Q0)
+ .short L(SSE15Q7)-L(SSE0Q0)
+
+ .short L(SSE0Q8) -L(SSE0Q0)
+ .short L(SSE1Q8) -L(SSE0Q0)
+ .short L(SSE2Q8) -L(SSE0Q0)
+ .short L(SSE3Q8) -L(SSE0Q0)
+ .short L(SSE4Q8) -L(SSE0Q0)
+ .short L(SSE5Q8) -L(SSE0Q0)
+ .short L(SSE6Q8) -L(SSE0Q0)
+ .short L(SSE7Q8) -L(SSE0Q0)
+
+ .short L(SSE8Q8) -L(SSE0Q0)
+ .short L(SSE9Q8) -L(SSE0Q0)
+ .short L(SSE10Q8)-L(SSE0Q0)
+ .short L(SSE11Q8)-L(SSE0Q0)
+ .short L(SSE12Q8)-L(SSE0Q0)
+ .short L(SSE13Q8)-L(SSE0Q0)
+ .short L(SSE14Q8)-L(SSE0Q0)
+ .short L(SSE15Q8)-L(SSE0Q0)
+
+ .short L(SSE0Q9) -L(SSE0Q0)
+ .short L(SSE1Q9) -L(SSE0Q0)
+ .short L(SSE2Q9) -L(SSE0Q0)
+ .short L(SSE3Q9) -L(SSE0Q0)
+ .short L(SSE4Q9) -L(SSE0Q0)
+ .short L(SSE5Q9) -L(SSE0Q0)
+ .short L(SSE6Q9) -L(SSE0Q0)
+ .short L(SSE7Q9) -L(SSE0Q0)
+
+ .short L(SSE8Q9) -L(SSE0Q0)
+ .short L(SSE9Q9) -L(SSE0Q0)
+ .short L(SSE10Q9)-L(SSE0Q0)
+ .short L(SSE11Q9)-L(SSE0Q0)
+ .short L(SSE12Q9)-L(SSE0Q0)
+ .short L(SSE13Q9)-L(SSE0Q0)
+ .short L(SSE14Q9)-L(SSE0Q0)
+ .short L(SSE15Q9)-L(SSE0Q0)
+
+ .short L(SSE0QA) -L(SSE0Q0)
+ .short L(SSE1QA) -L(SSE0Q0)
+ .short L(SSE2QA) -L(SSE0Q0)
+ .short L(SSE3QA) -L(SSE0Q0)
+ .short L(SSE4QA) -L(SSE0Q0)
+ .short L(SSE5QA) -L(SSE0Q0)
+ .short L(SSE6QA) -L(SSE0Q0)
+ .short L(SSE7QA) -L(SSE0Q0)
+
+ .short L(SSE8QA) -L(SSE0Q0)
+ .short L(SSE9QA) -L(SSE0Q0)
+ .short L(SSE10QA)-L(SSE0Q0)
+ .short L(SSE11QA)-L(SSE0Q0)
+ .short L(SSE12QA)-L(SSE0Q0)
+ .short L(SSE13QA)-L(SSE0Q0)
+ .short L(SSE14QA)-L(SSE0Q0)
+ .short L(SSE15QA)-L(SSE0Q0)
+
+ .short L(SSE0QB) -L(SSE0Q0)
+ .short L(SSE1QB) -L(SSE0Q0)
+ .short L(SSE2QB) -L(SSE0Q0)
+ .short L(SSE3QB) -L(SSE0Q0)
+ .short L(SSE4QB) -L(SSE0Q0)
+ .short L(SSE5QB) -L(SSE0Q0)
+ .short L(SSE6QB) -L(SSE0Q0)
+ .short L(SSE7QB) -L(SSE0Q0)
+
+ .short L(SSE8QB) -L(SSE0Q0)
+ .short L(SSE9QB) -L(SSE0Q0)
+ .short L(SSE10QB)-L(SSE0Q0)
+ .short L(SSE11QB)-L(SSE0Q0)
+ .short L(SSE12QB)-L(SSE0Q0)
+ .short L(SSE13QB)-L(SSE0Q0)
+ .short L(SSE14QB)-L(SSE0Q0)
+ .short L(SSE15QB)-L(SSE0Q0)
#endif
.popsection