aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorDaniel Santos <daniel.santos@pobox.com>2017-09-17 22:04:40 +0000
committerDaniel Santos <dansan@gcc.gnu.org>2017-09-17 22:04:40 +0000
commit3cb626e4f7cebadf907f5e09f2432f0838f73ff9 (patch)
treee791665e16c2e5c65230207cf93169c1a71c3801 /libgcc
parent01f44e44faf37fc34775b9e28e46d1c9243b247d (diff)
downloadgcc-3cb626e4f7cebadf907f5e09f2432f0838f73ff9.zip
gcc-3cb626e4f7cebadf907f5e09f2432f0838f73ff9.tar.gz
gcc-3cb626e4f7cebadf907f5e09f2432f0838f73ff9.tar.bz2
PR target/82196 correct choice of avx/sse stubs for -mcall-ms2sysv-xlogues
gcc: config/i386/i386.c: (xlogue_layout::STUB_NAME_MAX_LEN): Increase to 20 bytes. (xlogue_layout::s_stub_names): Add an additional size-2 diminsion. (xlogue_layout::get_stub_name): Modify to select the appropairate sse or avx version of the stub. gcc/testsuite: gcc.target/i386/pr82196-1.c: New test. gcc.target/i386/pr82196-2.c: Likewise. libgcc: config/i386/i386-asm.h (PASTE2): New macro. (ASMNAME): Modify to use PASTE2. (MS2SYSV_STUB_PREFIX): New macro for isa prefix. (MS2SYSV_STUB_BEGIN, MS2SYSV_STUB_END): New macros for stub headers. config/i386/resms64.S: Rename to a header file, use MS2SYSV_STUB_BEGIN instead of HIDDEN_FUNC and MS2SYSV_STUB_END instead of FUNC_END. config/i386/resms64f.S: Likewise. config/i386/resms64fx.S: Likewise. config/i386/resms64x.S: Likewise. config/i386/savms64.S: Likewise. config/i386/savms64f.S: Likewise. config/i386/avx_resms64.S: New file that only defines a macro and includes it's corresponding header file. config/i386/avx_resms64f.S: Likewise. config/i386/avx_resms64fx.S: Likewise. config/i386/avx_resms64x.S: Likewise. config/i386/avx_savms64.S: Likewise. config/i386/avx_savms64f.S: Likewise. config/i386/sse_resms64.S: Likewise. config/i386/sse_resms64f.S: Likewise. config/i386/sse_resms64fx.S: Likewise. config/i386/sse_resms64x.S: Likewise. config/i386/sse_savms64.S: Likewise. config/i386/sse_savms64f.S: Likewise. config/i386/t-msabi: Modified to add avx and sse versions of stubs. From-SVN: r252896
Diffstat (limited to 'libgcc')
-rw-r--r--libgcc/ChangeLog28
-rw-r--r--libgcc/config/i386/avx_resms64.S2
-rw-r--r--libgcc/config/i386/avx_resms64f.S2
-rw-r--r--libgcc/config/i386/avx_resms64fx.S2
-rw-r--r--libgcc/config/i386/avx_resms64x.S2
-rw-r--r--libgcc/config/i386/avx_savms64.S2
-rw-r--r--libgcc/config/i386/avx_savms64f.S2
-rw-r--r--libgcc/config/i386/i386-asm.h34
-rw-r--r--libgcc/config/i386/resms64.h (renamed from libgcc/config/i386/resms64.S)28
-rw-r--r--libgcc/config/i386/resms64f.h (renamed from libgcc/config/i386/resms64f.S)24
-rw-r--r--libgcc/config/i386/resms64fx.h (renamed from libgcc/config/i386/resms64fx.S)24
-rw-r--r--libgcc/config/i386/resms64x.h (renamed from libgcc/config/i386/resms64x.S)28
-rw-r--r--libgcc/config/i386/savms64.h (renamed from libgcc/config/i386/savms64.S)28
-rw-r--r--libgcc/config/i386/savms64f.h (renamed from libgcc/config/i386/savms64f.S)24
-rw-r--r--libgcc/config/i386/sse_resms64.S2
-rw-r--r--libgcc/config/i386/sse_resms64f.S2
-rw-r--r--libgcc/config/i386/sse_resms64fx.S2
-rw-r--r--libgcc/config/i386/sse_resms64x.S2
-rw-r--r--libgcc/config/i386/sse_savms64.S2
-rw-r--r--libgcc/config/i386/sse_savms64f.S2
-rw-r--r--libgcc/config/i386/t-msabi18
21 files changed, 164 insertions, 96 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 8c1e173..b548922 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,31 @@
+2017-09-17 Daniel Santos <daniel.santos@pobox.com>
+
+ config/i386/i386-asm.h (PASTE2): New macro.
+ (ASMNAME): Modify to use PASTE2.
+ (MS2SYSV_STUB_PREFIX): New macro for isa prefix.
+ (MS2SYSV_STUB_BEGIN, MS2SYSV_STUB_END): New macros for stub headers.
+ config/i386/resms64.S: Rename to a header file, use MS2SYSV_STUB_BEGIN
+ instead of HIDDEN_FUNC and MS2SYSV_STUB_END instead of FUNC_END.
+ config/i386/resms64f.S: Likewise.
+ config/i386/resms64fx.S: Likewise.
+ config/i386/resms64x.S: Likewise.
+ config/i386/savms64.S: Likewise.
+ config/i386/savms64f.S: Likewise.
+ config/i386/avx_resms64.S: New file that only defines a macro and
+ includes it's corresponding header file.
+ config/i386/avx_resms64f.S: Likewise.
+ config/i386/avx_resms64fx.S: Likewise.
+ config/i386/avx_resms64x.S: Likewise.
+ config/i386/avx_savms64.S: Likewise.
+ config/i386/avx_savms64f.S: Likewise.
+ config/i386/sse_resms64.S: Likewise.
+ config/i386/sse_resms64f.S: Likewise.
+ config/i386/sse_resms64fx.S: Likewise.
+ config/i386/sse_resms64x.S: Likewise.
+ config/i386/sse_savms64.S: Likewise.
+ config/i386/sse_savms64f.S: Likewise.
+ config/i386/t-msabi: Modified to add avx and sse versions of stubs.
+
2017-09-01 Olivier Hainque <hainque@adacore.com>
* config.host (*-*-vxworks7): Widen scope to vxworks7*.
diff --git a/libgcc/config/i386/avx_resms64.S b/libgcc/config/i386/avx_resms64.S
new file mode 100644
index 0000000..2be74493
--- /dev/null
+++ b/libgcc/config/i386/avx_resms64.S
@@ -0,0 +1,2 @@
+#define MS2SYSV_STUB_AVX
+#include "resms64.h"
diff --git a/libgcc/config/i386/avx_resms64f.S b/libgcc/config/i386/avx_resms64f.S
new file mode 100644
index 0000000..76a1340
--- /dev/null
+++ b/libgcc/config/i386/avx_resms64f.S
@@ -0,0 +1,2 @@
+#define MS2SYSV_STUB_AVX
+#include "resms64f.h"
diff --git a/libgcc/config/i386/avx_resms64fx.S b/libgcc/config/i386/avx_resms64fx.S
new file mode 100644
index 0000000..2ea4738
--- /dev/null
+++ b/libgcc/config/i386/avx_resms64fx.S
@@ -0,0 +1,2 @@
+#define MS2SYSV_STUB_AVX
+#include "resms64fx.h"
diff --git a/libgcc/config/i386/avx_resms64x.S b/libgcc/config/i386/avx_resms64x.S
new file mode 100644
index 0000000..14a53d4
--- /dev/null
+++ b/libgcc/config/i386/avx_resms64x.S
@@ -0,0 +1,2 @@
+#define MS2SYSV_STUB_AVX
+#include "resms64x.h"
diff --git a/libgcc/config/i386/avx_savms64.S b/libgcc/config/i386/avx_savms64.S
new file mode 100644
index 0000000..fed1620
--- /dev/null
+++ b/libgcc/config/i386/avx_savms64.S
@@ -0,0 +1,2 @@
+#define MS2SYSV_STUB_AVX
+#include "savms64.h"
diff --git a/libgcc/config/i386/avx_savms64f.S b/libgcc/config/i386/avx_savms64f.S
new file mode 100644
index 0000000..3227965
--- /dev/null
+++ b/libgcc/config/i386/avx_savms64f.S
@@ -0,0 +1,2 @@
+#define MS2SYSV_STUB_AVX
+#include "savms64f.h"
diff --git a/libgcc/config/i386/i386-asm.h b/libgcc/config/i386/i386-asm.h
index 1387fd24..424e0f7 100644
--- a/libgcc/config/i386/i386-asm.h
+++ b/libgcc/config/i386/i386-asm.h
@@ -28,6 +28,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#include "auto-host.h"
+#define PASTE2(a, b) PASTE2a(a, b)
+#define PASTE2a(a, b) a ## b
+
/* These macros currently support GNU/Linux, Solaris and Darwin. */
#ifdef __ELF__
@@ -46,9 +49,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#endif
#ifdef __USER_LABEL_PREFIX__
-# define ASMNAME2(prefix, name) prefix ## name
-# define ASMNAME1(prefix, name) ASMNAME2(prefix, name)
-# define ASMNAME(name) ASMNAME1(__USER_LABEL_PREFIX__, name)
+# define ASMNAME(name) PASTE2(__USER_LABEL_PREFIX__, name)
#else
# define ASMNAME(name) name
#endif
@@ -66,15 +67,24 @@ ASMNAME(fn):
#define FUNC_END(fn) FN_SIZE(ASMNAME(fn))
-#ifdef __SSE2__
-# ifdef __AVX__
-# define MOVAPS vmovaps
-# else
-# define MOVAPS movaps
-# endif
+#ifdef MS2SYSV_STUB_AVX
+# define MS2SYSV_STUB_PREFIX __avx_
+# define MOVAPS vmovaps
+#elif defined(MS2SYSV_STUB_SSE)
+# define MS2SYSV_STUB_PREFIX __sse_
+# define MOVAPS movaps
+#endif
+
+#if defined (MS2SYSV_STUB_PREFIX) && defined (MOVAPS)
+
+# define MS2SYSV_STUB_BEGIN(base_name) \
+ HIDDEN_FUNC(PASTE2(MS2SYSV_STUB_PREFIX, base_name))
+
+# define MS2SYSV_STUB_END(base_name) \
+ FUNC_END(PASTE2(MS2SYSV_STUB_PREFIX, base_name))
/* Save SSE registers 6-15. off is the offset of rax to get to xmm6. */
-#define SSE_SAVE \
+# define SSE_SAVE \
MOVAPS %xmm15,-0x30(%rax); \
MOVAPS %xmm14,-0x20(%rax); \
MOVAPS %xmm13,-0x10(%rax); \
@@ -87,7 +97,7 @@ ASMNAME(fn):
MOVAPS %xmm6, 0x60(%rax)
/* Restore SSE registers 6-15. off is the offset of rsi to get to xmm6. */
-#define SSE_RESTORE \
+# define SSE_RESTORE \
MOVAPS -0x30(%rsi), %xmm15; \
MOVAPS -0x20(%rsi), %xmm14; \
MOVAPS -0x10(%rsi), %xmm13; \
@@ -99,5 +109,5 @@ ASMNAME(fn):
MOVAPS 0x50(%rsi), %xmm7 ; \
MOVAPS 0x60(%rsi), %xmm6
-#endif /* __SSE2__ */
+#endif /* defined (MS2SYSV_STUB_ISA) && defined (MOVAPS) */
#endif /* I386_ASM_H */
diff --git a/libgcc/config/i386/resms64.S b/libgcc/config/i386/resms64.h
index f842c20..f01b418 100644
--- a/libgcc/config/i386/resms64.S
+++ b/libgcc/config/i386/resms64.h
@@ -29,29 +29,29 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
/* Epilogue routine for restoring 64-bit ms/sysv registers. */
.text
-HIDDEN_FUNC(__resms64_18)
+MS2SYSV_STUB_BEGIN(resms64_18)
mov -0x70(%rsi),%r15
-HIDDEN_FUNC(__resms64_17)
+MS2SYSV_STUB_BEGIN(resms64_17)
mov -0x68(%rsi),%r14
-HIDDEN_FUNC(__resms64_16)
+MS2SYSV_STUB_BEGIN(resms64_16)
mov -0x60(%rsi),%r13
-HIDDEN_FUNC(__resms64_15)
+MS2SYSV_STUB_BEGIN(resms64_15)
mov -0x58(%rsi),%r12
-HIDDEN_FUNC(__resms64_14)
+MS2SYSV_STUB_BEGIN(resms64_14)
mov -0x50(%rsi),%rbp
-HIDDEN_FUNC(__resms64_13)
+MS2SYSV_STUB_BEGIN(resms64_13)
mov -0x48(%rsi),%rbx
-HIDDEN_FUNC(__resms64_12)
+MS2SYSV_STUB_BEGIN(resms64_12)
mov -0x40(%rsi),%rdi
SSE_RESTORE
mov -0x38(%rsi),%rsi
ret
-FUNC_END(__resms64_12)
-FUNC_END(__resms64_13)
-FUNC_END(__resms64_14)
-FUNC_END(__resms64_15)
-FUNC_END(__resms64_16)
-FUNC_END(__resms64_17)
-FUNC_END(__resms64_18)
+MS2SYSV_STUB_END(resms64_12)
+MS2SYSV_STUB_END(resms64_13)
+MS2SYSV_STUB_END(resms64_14)
+MS2SYSV_STUB_END(resms64_15)
+MS2SYSV_STUB_END(resms64_16)
+MS2SYSV_STUB_END(resms64_17)
+MS2SYSV_STUB_END(resms64_18)
#endif /* __x86_64__ */
diff --git a/libgcc/config/i386/resms64f.S b/libgcc/config/i386/resms64f.h
index 81946cd..743ec51 100644
--- a/libgcc/config/i386/resms64f.S
+++ b/libgcc/config/i386/resms64f.h
@@ -30,26 +30,26 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
pointer is used. */
.text
-HIDDEN_FUNC(__resms64f_17)
+MS2SYSV_STUB_BEGIN(resms64f_17)
mov -0x68(%rsi),%r15
-HIDDEN_FUNC(__resms64f_16)
+MS2SYSV_STUB_BEGIN(resms64f_16)
mov -0x60(%rsi),%r14
-HIDDEN_FUNC(__resms64f_15)
+MS2SYSV_STUB_BEGIN(resms64f_15)
mov -0x58(%rsi),%r13
-HIDDEN_FUNC(__resms64f_14)
+MS2SYSV_STUB_BEGIN(resms64f_14)
mov -0x50(%rsi),%r12
-HIDDEN_FUNC(__resms64f_13)
+MS2SYSV_STUB_BEGIN(resms64f_13)
mov -0x48(%rsi),%rbx
-HIDDEN_FUNC(__resms64f_12)
+MS2SYSV_STUB_BEGIN(resms64f_12)
mov -0x40(%rsi),%rdi
SSE_RESTORE
mov -0x38(%rsi),%rsi
ret
-FUNC_END(__resms64f_12)
-FUNC_END(__resms64f_13)
-FUNC_END(__resms64f_14)
-FUNC_END(__resms64f_15)
-FUNC_END(__resms64f_16)
-FUNC_END(__resms64f_17)
+MS2SYSV_STUB_END(resms64f_12)
+MS2SYSV_STUB_END(resms64f_13)
+MS2SYSV_STUB_END(resms64f_14)
+MS2SYSV_STUB_END(resms64f_15)
+MS2SYSV_STUB_END(resms64f_16)
+MS2SYSV_STUB_END(resms64f_17)
#endif /* __x86_64__ */
diff --git a/libgcc/config/i386/resms64fx.S b/libgcc/config/i386/resms64fx.h
index acf34fa..965807a 100644
--- a/libgcc/config/i386/resms64fx.S
+++ b/libgcc/config/i386/resms64fx.h
@@ -31,27 +31,27 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
* from the function. */
.text
-HIDDEN_FUNC(__resms64fx_17)
+MS2SYSV_STUB_BEGIN(resms64fx_17)
mov -0x68(%rsi),%r15
-HIDDEN_FUNC(__resms64fx_16)
+MS2SYSV_STUB_BEGIN(resms64fx_16)
mov -0x60(%rsi),%r14
-HIDDEN_FUNC(__resms64fx_15)
+MS2SYSV_STUB_BEGIN(resms64fx_15)
mov -0x58(%rsi),%r13
-HIDDEN_FUNC(__resms64fx_14)
+MS2SYSV_STUB_BEGIN(resms64fx_14)
mov -0x50(%rsi),%r12
-HIDDEN_FUNC(__resms64fx_13)
+MS2SYSV_STUB_BEGIN(resms64fx_13)
mov -0x48(%rsi),%rbx
-HIDDEN_FUNC(__resms64fx_12)
+MS2SYSV_STUB_BEGIN(resms64fx_12)
mov -0x40(%rsi),%rdi
SSE_RESTORE
mov -0x38(%rsi),%rsi
leaveq
ret
-FUNC_END(__resms64fx_12)
-FUNC_END(__resms64fx_13)
-FUNC_END(__resms64fx_14)
-FUNC_END(__resms64fx_15)
-FUNC_END(__resms64fx_16)
-FUNC_END(__resms64fx_17)
+MS2SYSV_STUB_END(resms64fx_12)
+MS2SYSV_STUB_END(resms64fx_13)
+MS2SYSV_STUB_END(resms64fx_14)
+MS2SYSV_STUB_END(resms64fx_15)
+MS2SYSV_STUB_END(resms64fx_16)
+MS2SYSV_STUB_END(resms64fx_17)
#endif /* __x86_64__ */
diff --git a/libgcc/config/i386/resms64x.S b/libgcc/config/i386/resms64x.h
index e27aab7..689a1de 100644
--- a/libgcc/config/i386/resms64x.S
+++ b/libgcc/config/i386/resms64x.h
@@ -30,30 +30,30 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
* function. */
.text
-HIDDEN_FUNC(__resms64x_18)
+MS2SYSV_STUB_BEGIN(resms64x_18)
mov -0x70(%rsi),%r15
-HIDDEN_FUNC(__resms64x_17)
+MS2SYSV_STUB_BEGIN(resms64x_17)
mov -0x68(%rsi),%r14
-HIDDEN_FUNC(__resms64x_16)
+MS2SYSV_STUB_BEGIN(resms64x_16)
mov -0x60(%rsi),%r13
-HIDDEN_FUNC(__resms64x_15)
+MS2SYSV_STUB_BEGIN(resms64x_15)
mov -0x58(%rsi),%r12
-HIDDEN_FUNC(__resms64x_14)
+MS2SYSV_STUB_BEGIN(resms64x_14)
mov -0x50(%rsi),%rbp
-HIDDEN_FUNC(__resms64x_13)
+MS2SYSV_STUB_BEGIN(resms64x_13)
mov -0x48(%rsi),%rbx
-HIDDEN_FUNC(__resms64x_12)
+MS2SYSV_STUB_BEGIN(resms64x_12)
mov -0x40(%rsi),%rdi
SSE_RESTORE
mov -0x38(%rsi),%rsi
mov %r10,%rsp
ret
-FUNC_END(__resms64x_12)
-FUNC_END(__resms64x_13)
-FUNC_END(__resms64x_14)
-FUNC_END(__resms64x_15)
-FUNC_END(__resms64x_16)
-FUNC_END(__resms64x_17)
-FUNC_END(__resms64x_18)
+MS2SYSV_STUB_END(resms64x_12)
+MS2SYSV_STUB_END(resms64x_13)
+MS2SYSV_STUB_END(resms64x_14)
+MS2SYSV_STUB_END(resms64x_15)
+MS2SYSV_STUB_END(resms64x_16)
+MS2SYSV_STUB_END(resms64x_17)
+MS2SYSV_STUB_END(resms64x_18)
#endif /* __x86_64__ */
diff --git a/libgcc/config/i386/savms64.S b/libgcc/config/i386/savms64.h
index 44dda46..28d5e35 100644
--- a/libgcc/config/i386/savms64.S
+++ b/libgcc/config/i386/savms64.h
@@ -29,29 +29,29 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
/* Prologue routine for saving 64-bit ms/sysv registers. */
.text
-HIDDEN_FUNC(__savms64_18)
+MS2SYSV_STUB_BEGIN(savms64_18)
mov %r15,-0x70(%rax)
-HIDDEN_FUNC(__savms64_17)
+MS2SYSV_STUB_BEGIN(savms64_17)
mov %r14,-0x68(%rax)
-HIDDEN_FUNC(__savms64_16)
+MS2SYSV_STUB_BEGIN(savms64_16)
mov %r13,-0x60(%rax)
-HIDDEN_FUNC(__savms64_15)
+MS2SYSV_STUB_BEGIN(savms64_15)
mov %r12,-0x58(%rax)
-HIDDEN_FUNC(__savms64_14)
+MS2SYSV_STUB_BEGIN(savms64_14)
mov %rbp,-0x50(%rax)
-HIDDEN_FUNC(__savms64_13)
+MS2SYSV_STUB_BEGIN(savms64_13)
mov %rbx,-0x48(%rax)
-HIDDEN_FUNC(__savms64_12)
+MS2SYSV_STUB_BEGIN(savms64_12)
mov %rdi,-0x40(%rax)
mov %rsi,-0x38(%rax)
SSE_SAVE
ret
-FUNC_END(__savms64_12)
-FUNC_END(__savms64_13)
-FUNC_END(__savms64_14)
-FUNC_END(__savms64_15)
-FUNC_END(__savms64_16)
-FUNC_END(__savms64_17)
-FUNC_END(__savms64_18)
+MS2SYSV_STUB_END(savms64_12)
+MS2SYSV_STUB_END(savms64_13)
+MS2SYSV_STUB_END(savms64_14)
+MS2SYSV_STUB_END(savms64_15)
+MS2SYSV_STUB_END(savms64_16)
+MS2SYSV_STUB_END(savms64_17)
+MS2SYSV_STUB_END(savms64_18)
#endif /* __x86_64__ */
diff --git a/libgcc/config/i386/savms64f.S b/libgcc/config/i386/savms64f.h
index 64e91ac..723e108 100644
--- a/libgcc/config/i386/savms64f.S
+++ b/libgcc/config/i386/savms64f.h
@@ -30,26 +30,26 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
* needed or hard frame pointer used. */
.text
-HIDDEN_FUNC(__savms64f_17)
+MS2SYSV_STUB_BEGIN(savms64f_17)
mov %r15,-0x68(%rax)
-HIDDEN_FUNC(__savms64f_16)
+MS2SYSV_STUB_BEGIN(savms64f_16)
mov %r14,-0x60(%rax)
-HIDDEN_FUNC(__savms64f_15)
+MS2SYSV_STUB_BEGIN(savms64f_15)
mov %r13,-0x58(%rax)
-HIDDEN_FUNC(__savms64f_14)
+MS2SYSV_STUB_BEGIN(savms64f_14)
mov %r12,-0x50(%rax)
-HIDDEN_FUNC(__savms64f_13)
+MS2SYSV_STUB_BEGIN(savms64f_13)
mov %rbx,-0x48(%rax)
-HIDDEN_FUNC(__savms64f_12)
+MS2SYSV_STUB_BEGIN(savms64f_12)
mov %rdi,-0x40(%rax)
mov %rsi,-0x38(%rax)
SSE_SAVE
ret
-FUNC_END(__savms64f_12)
-FUNC_END(__savms64f_13)
-FUNC_END(__savms64f_14)
-FUNC_END(__savms64f_15)
-FUNC_END(__savms64f_16)
-FUNC_END(__savms64f_17)
+MS2SYSV_STUB_END(savms64f_12)
+MS2SYSV_STUB_END(savms64f_13)
+MS2SYSV_STUB_END(savms64f_14)
+MS2SYSV_STUB_END(savms64f_15)
+MS2SYSV_STUB_END(savms64f_16)
+MS2SYSV_STUB_END(savms64f_17)
#endif /* __x86_64__ */
diff --git a/libgcc/config/i386/sse_resms64.S b/libgcc/config/i386/sse_resms64.S
new file mode 100644
index 0000000..c87f5cc
--- /dev/null
+++ b/libgcc/config/i386/sse_resms64.S
@@ -0,0 +1,2 @@
+#define MS2SYSV_STUB_SSE
+#include "resms64.h"
diff --git a/libgcc/config/i386/sse_resms64f.S b/libgcc/config/i386/sse_resms64f.S
new file mode 100644
index 0000000..3a066bc
--- /dev/null
+++ b/libgcc/config/i386/sse_resms64f.S
@@ -0,0 +1,2 @@
+#define MS2SYSV_STUB_SSE
+#include "resms64f.h"
diff --git a/libgcc/config/i386/sse_resms64fx.S b/libgcc/config/i386/sse_resms64fx.S
new file mode 100644
index 0000000..142667a
--- /dev/null
+++ b/libgcc/config/i386/sse_resms64fx.S
@@ -0,0 +1,2 @@
+#define MS2SYSV_STUB_SSE
+#include "resms64fx.h"
diff --git a/libgcc/config/i386/sse_resms64x.S b/libgcc/config/i386/sse_resms64x.S
new file mode 100644
index 0000000..2cfc2b0
--- /dev/null
+++ b/libgcc/config/i386/sse_resms64x.S
@@ -0,0 +1,2 @@
+#define MS2SYSV_STUB_SSE
+#include "resms64x.h"
diff --git a/libgcc/config/i386/sse_savms64.S b/libgcc/config/i386/sse_savms64.S
new file mode 100644
index 0000000..52f4307
--- /dev/null
+++ b/libgcc/config/i386/sse_savms64.S
@@ -0,0 +1,2 @@
+#define MS2SYSV_STUB_SSE
+#include "savms64.h"
diff --git a/libgcc/config/i386/sse_savms64f.S b/libgcc/config/i386/sse_savms64f.S
new file mode 100644
index 0000000..426be35
--- /dev/null
+++ b/libgcc/config/i386/sse_savms64f.S
@@ -0,0 +1,2 @@
+#define MS2SYSV_STUB_SSE
+#include "savms64f.h"
diff --git a/libgcc/config/i386/t-msabi b/libgcc/config/i386/t-msabi
index f9806a6..ffc9c4f 100644
--- a/libgcc/config/i386/t-msabi
+++ b/libgcc/config/i386/t-msabi
@@ -1,7 +1,13 @@
# Makefile fragment to support -mcall-ms2sysv-xlogues
-LIB2ADD_ST += $(srcdir)/config/i386/savms64.S \
- $(srcdir)/config/i386/resms64.S \
- $(srcdir)/config/i386/resms64x.S \
- $(srcdir)/config/i386/savms64f.S \
- $(srcdir)/config/i386/resms64f.S \
- $(srcdir)/config/i386/resms64fx.S
+LIB2ADD_ST += $(srcdir)/config/i386/avx_savms64.S \
+ $(srcdir)/config/i386/avx_resms64.S \
+ $(srcdir)/config/i386/avx_resms64x.S \
+ $(srcdir)/config/i386/avx_savms64f.S \
+ $(srcdir)/config/i386/avx_resms64f.S \
+ $(srcdir)/config/i386/avx_resms64fx.S \
+ $(srcdir)/config/i386/sse_savms64.S \
+ $(srcdir)/config/i386/sse_resms64.S \
+ $(srcdir)/config/i386/sse_resms64x.S \
+ $(srcdir)/config/i386/sse_savms64f.S \
+ $(srcdir)/config/i386/sse_resms64f.S \
+ $(srcdir)/config/i386/sse_resms64fx.S