summaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/generic/ldsodefs.h5
-rw-r--r--sysdeps/i386/fpu/s_expm1l.S7
-rw-r--r--sysdeps/mach/i386/machine-lock.h8
-rw-r--r--sysdeps/posix/clock_getres.c4
-rw-r--r--sysdeps/powerpc/dl-procinfo.c10
-rw-r--r--sysdeps/powerpc/dl-procinfo.h10
-rw-r--r--sysdeps/powerpc/fpu/bits/mathinline.h10
-rw-r--r--sysdeps/powerpc/powerpc32/dl-machine.c5
-rw-r--r--sysdeps/powerpc/sysdep.h2
-rw-r--r--sysdeps/unix/sysv/linux/bits/in.h2
-rw-r--r--sysdeps/unix/sysv/linux/clock_getres.c6
-rw-r--r--sysdeps/unix/sysv/linux/dl-origin.c47
-rw-r--r--sysdeps/unix/sysv/linux/i386/bits/mman.h1
-rw-r--r--sysdeps/unix/sysv/linux/ifaddrs.c22
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/mathinline.h132
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/mman.h3
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/bits/mman.h1
-rw-r--r--sysdeps/x86_64/fpu/s_expm1l.S7
-rw-r--r--sysdeps/x86_64/memset.S868
19 files changed, 530 insertions, 620 deletions
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
index 27c8fb620d..4d857404a3 100644
--- a/sysdeps/generic/ldsodefs.h
+++ b/sysdeps/generic/ldsodefs.h
@@ -593,13 +593,8 @@ struct rtld_global_ro
/* 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
diff --git a/sysdeps/i386/fpu/s_expm1l.S b/sysdeps/i386/fpu/s_expm1l.S
index 2dc379b790..b69b22bc62 100644
--- a/sysdeps/i386/fpu/s_expm1l.S
+++ b/sysdeps/i386/fpu/s_expm1l.S
@@ -1,5 +1,5 @@
/* 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>.
@@ -48,6 +48,11 @@ l2e: .tfloat 1.442695040888963407359924681002
.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
diff --git a/sysdeps/mach/i386/machine-lock.h b/sysdeps/mach/i386/machine-lock.h
index d786628170..33602f43a7 100644
--- a/sysdeps/mach/i386/machine-lock.h
+++ b/sysdeps/mach/i386/machine-lock.h
@@ -1,5 +1,5 @@
/* 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
@@ -40,7 +40,8 @@ __spin_unlock (__spin_lock_t *__lock)
{
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. */
@@ -50,7 +51,8 @@ __spin_try_lock (__spin_lock_t *__lock)
{
register int __locked;
__asm__ __volatile ("xchgl %0, %1"
- : "=&r" (__locked), "=m" (*__lock) : "0" (1));
+ : "=&r" (__locked), "=m" (*__lock) : "0" (1)
+ : "memory");
return !__locked;
}
diff --git a/sysdeps/posix/clock_getres.c b/sysdeps/posix/clock_getres.c
index f4dc21f8af..7d7cd05ff9 100644
--- a/sysdeps/posix/clock_getres.c
+++ b/sysdeps/posix/clock_getres.c
@@ -1,5 +1,5 @@
/* 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
@@ -28,7 +28,7 @@
#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))
diff --git a/sysdeps/powerpc/dl-procinfo.c b/sysdeps/powerpc/dl-procinfo.c
index a732e94fa8..1c74c2a905 100644
--- a/sysdeps/powerpc/dl-procinfo.c
+++ b/sysdeps/powerpc/dl-procinfo.c
@@ -46,11 +46,12 @@
#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",
@@ -67,7 +68,7 @@ PROCINFO_CLASS const char _dl_powerpc_cap_flags[23][10]
#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
= {
@@ -77,7 +78,8 @@ PROCINFO_CLASS const char _dl_powerpc_platforms[7][12]
[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
diff --git a/sysdeps/powerpc/dl-procinfo.h b/sysdeps/powerpc/dl-procinfo.h
index 0bf935385a..254195a94c 100644
--- a/sysdeps/powerpc/dl-procinfo.h
+++ b/sysdeps/powerpc/dl-procinfo.h
@@ -23,15 +23,15 @@
#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. */
@@ -46,6 +46,7 @@
#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))
@@ -103,6 +104,9 @@ _dl_string_platform (const char *str)
++str;
}
break;
+ case '7':
+ ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER7;
+ break;
default:
return -1;
}
diff --git a/sysdeps/powerpc/fpu/bits/mathinline.h b/sysdeps/powerpc/fpu/bits/mathinline.h
index 4d4612dac0..4fa4bcaf16 100644
--- a/sysdeps/powerpc/fpu/bits/mathinline.h
+++ b/sysdeps/powerpc/fpu/bits/mathinline.h
@@ -1,5 +1,5 @@
/* 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.
@@ -72,6 +72,14 @@ __NTH (__signbit (double __x))
__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 */
diff --git a/sysdeps/powerpc/powerpc32/dl-machine.c b/sysdeps/powerpc/powerpc32/dl-machine.c
index fc2ce7c1d9..731d23956d 100644
--- a/sysdeps/powerpc/powerpc32/dl-machine.c
+++ b/sysdeps/powerpc/powerpc32/dl-machine.c
@@ -557,11 +557,6 @@ __process_machine_rela (struct link_map *map,
}
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. \
diff --git a/sysdeps/powerpc/sysdep.h b/sysdeps/powerpc/sysdep.h
index 2ae52b78c0..43edeb71eb 100644
--- a/sysdeps/powerpc/sysdep.h
+++ b/sysdeps/powerpc/sysdep.h
@@ -44,6 +44,8 @@
#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__
diff --git a/sysdeps/unix/sysv/linux/bits/in.h b/sysdeps/unix/sysv/linux/bits/in.h
index 433c033c70..b457a1790f 100644
--- a/sysdeps/unix/sysv/linux/bits/in.h
+++ b/sysdeps/unix/sysv/linux/bits/in.h
@@ -70,6 +70,7 @@
#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
@@ -162,6 +163,7 @@ struct in_pktinfo
#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
diff --git a/sysdeps/unix/sysv/linux/clock_getres.c b/sysdeps/unix/sysv/linux/clock_getres.c
index 813d3ebbf9..581ff22c7c 100644
--- a/sysdeps/unix/sysv/linux/clock_getres.c
+++ b/sysdeps/unix/sysv/linux/clock_getres.c
@@ -1,5 +1,5 @@
/* 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
@@ -121,7 +121,7 @@ maybe_syscall_getres_cpu (clockid_t clock_id, struct timespec *res)
return 0;
e = INTERNAL_SYSCALL_ERRNO (r, err);
-# ifndef __ASSUME_POSIX_TIMERS
+# ifndef __ASSUME_POSIX_TIMERS
if (e == ENOSYS)
{
__libc_missing_posix_timers = 1;
@@ -129,7 +129,7 @@ maybe_syscall_getres_cpu (clockid_t clock_id, struct timespec *res)
e = EINVAL;
}
else
-# endif
+# endif
{
if (e == EINVAL)
{
diff --git a/sysdeps/unix/sysv/linux/dl-origin.c b/sysdeps/unix/sysv/linux/dl-origin.c
index 64e865b92a..a7fa53ea1d 100644
--- a/sysdeps/unix/sysv/linux/dl-origin.c
+++ b/sysdeps/unix/sysv/linux/dl-origin.c
@@ -1,5 +1,5 @@
/* 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.
@@ -36,28 +36,29 @@ const char *
_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)
@@ -75,20 +76,6 @@ _dl_get_origin (void)
}
}
}
- 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;
}
diff --git a/sysdeps/unix/sysv/linux/i386/bits/mman.h b/sysdeps/unix/sysv/linux/i386/bits/mman.h
index 00cb982395..2b90c8d7d5 100644
--- a/sysdeps/unix/sysv/linux/i386/bits/mman.h
+++ b/sysdeps/unix/sysv/linux/i386/bits/mman.h
@@ -63,6 +63,7 @@
# 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'. */
diff --git a/sysdeps/unix/sysv/linux/ifaddrs.c b/sysdeps/unix/sysv/linux/ifaddrs.c
index 9aa9abac3b..150ec8a9b0 100644
--- a/sysdeps/unix/sysv/linux/ifaddrs.c
+++ b/sysdeps/unix/sysv/linux/ifaddrs.c
@@ -1,5 +1,5 @@
/* 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
@@ -49,6 +49,22 @@ int __no_netlink_support attribute_hidden;
#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
@@ -59,7 +75,7 @@ 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;
@@ -307,7 +323,7 @@ map_newlink (int index, struct ifaddrs_storage *ifas, int *map, int max)
/* 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)
{
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/mathinline.h b/sysdeps/unix/sysv/linux/powerpc/bits/mathinline.h
deleted file mode 100644
index 4f173912ed..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/bits/mathinline.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/* 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 */
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/mman.h b/sysdeps/unix/sysv/linux/powerpc/bits/mman.h
index e03ab7ff80..d5729a1f1c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/mman.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/mman.h
@@ -1,5 +1,5 @@
/* 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
@@ -34,6 +34,7 @@
#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
diff --git a/sysdeps/unix/sysv/linux/x86_64/bits/mman.h b/sysdeps/unix/sysv/linux/x86_64/bits/mman.h
index 535c9edcf9..7810682536 100644
--- a/sysdeps/unix/sysv/linux/x86_64/bits/mman.h
+++ b/sysdeps/unix/sysv/linux/x86_64/bits/mman.h
@@ -64,6 +64,7 @@
# 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'. */
diff --git a/sysdeps/x86_64/fpu/s_expm1l.S b/sysdeps/x86_64/fpu/s_expm1l.S
index b4f5a3efda..05a1bfcce1 100644
--- a/sysdeps/x86_64/fpu/s_expm1l.S
+++ b/sysdeps/x86_64/fpu/s_expm1l.S
@@ -1,5 +1,5 @@
/* 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>.
@@ -48,6 +48,11 @@ l2e: .tfloat 1.442695040888963407359924681002
.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
diff --git a/sysdeps/x86_64/memset.S b/sysdeps/x86_64/memset.S
index c7bf2318de..681ab870e0 100644
--- a/sysdeps/x86_64/memset.S
+++ b/sysdeps/x86_64/memset.S
@@ -55,12 +55,14 @@ L(now_dw_aligned):
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
@@ -115,177 +117,177 @@ L(setPxQx):
# 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
@@ -499,18 +501,20 @@ L(ck_mem_ops_method):
# 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
@@ -525,23 +529,23 @@ L(AliPxQx):
.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
@@ -634,12 +638,14 @@ L(8byte_move_loop):
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
@@ -676,11 +682,13 @@ L(8byte_stos_skip):
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
@@ -722,11 +730,13 @@ L(8byte_nt_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
@@ -736,15 +746,17 @@ L(SSE_pre):
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
@@ -1012,13 +1024,15 @@ L(byte32sse2):
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
@@ -1044,13 +1058,15 @@ L(sse2_nt_move):
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
@@ -1109,221 +1125,221 @@ L(SSExDx):
.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