diff options
author | Torbjorn Granlund <tege@gmplib.org> | 2013-09-16 19:57:46 +0200 |
---|---|---|
committer | Torbjorn Granlund <tege@gmplib.org> | 2013-09-16 19:57:46 +0200 |
commit | 7408e93f3c7f499f9a2194206afe57dff996b623 (patch) | |
tree | bc0c5e3108e594812deb15be4a1da5de06c3d4b8 /mpn/x86_64 | |
parent | 97eeb8cee315ee6c69f67198480a5d5fb5a96938 (diff) | |
download | gmp-7408e93f3c7f499f9a2194206afe57dff996b623.tar.gz |
Preserve xmm6-xmm8 under DOS.
Diffstat (limited to 'mpn/x86_64')
-rw-r--r-- | mpn/x86_64/fastsse/copyi-palignr.asm | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/mpn/x86_64/fastsse/copyi-palignr.asm b/mpn/x86_64/fastsse/copyi-palignr.asm index f8cb7e6b2..d0a825a57 100644 --- a/mpn/x86_64/fastsse/copyi-palignr.asm +++ b/mpn/x86_64/fastsse/copyi-palignr.asm @@ -125,6 +125,11 @@ C Code handling up - rp = 8 (mod 16) cmp $16, n jc L(ued0) +IFDOS(` add $-48, %rsp ') +IFDOS(` movdqa %xmm6, (%rsp) ') +IFDOS(` movdqa %xmm7, 16(%rsp) ') +IFDOS(` movdqa %xmm8, 32(%rsp) ') + movaps 120(up), %xmm7 movaps 104(up), %xmm6 movaps 88(up), %xmm5 @@ -187,20 +192,25 @@ L(ued1):movaps -104(up), %xmm1 movdqa %xmm0, (rp) lea 128(rp), rp +IFDOS(` movdqa (%rsp), %xmm6 ') +IFDOS(` movdqa 16(%rsp), %xmm7 ') +IFDOS(` movdqa 32(%rsp), %xmm8 ') +IFDOS(` add $48, %rsp ') + L(ued0):test $8, R8(n) jz 1f movaps 56(up), %xmm3 movaps 40(up), %xmm2 movaps 24(up), %xmm1 movaps 8(up), %xmm0 - movaps -8(up), %xmm8 + movaps -8(up), %xmm4 palignr($8, %xmm2, %xmm3) movdqa %xmm3, 48(rp) palignr($8, %xmm1, %xmm2) movdqa %xmm2, 32(rp) palignr($8, %xmm0, %xmm1) movdqa %xmm1, 16(rp) - palignr($8, %xmm8, %xmm0) + palignr($8, %xmm4, %xmm0) lea 64(up), up movdqa %xmm0, (rp) lea 64(rp), rp |