Commit 05964538 authored by Martin Storsjö's avatar Martin Storsjö Committed by Niels Möller

Use movdqu instead of movdqa for saving xmm registers

The stack is not guaranteed to be 16-byte aligned on win64.
parent 508a312a
2013-04-23 Niels Möller <nisse@lysator.liu.se>
From Martin Storsjö:
* x86_64/machine.m4 (W64_ENTRY): Use movdqu instead of movdqa for
saving xmm registers, since the stack is not guaranteed to be
16-byte aligned on win64.
* Makefile.in: Consistently use EXEEXT_FOR_BUILD.
2013-04-21 Niels Möller <nisse@lysator.liu.se>
......
......@@ -71,34 +71,34 @@ define(<W64_ENTRY>, <
ifelse(W64_ABI,yes,[
ifelse(eval($2 > 6), 1, [
sub [$]eval(8 + 16*($2 - 6)), %rsp
movdqa %xmm6, 0(%rsp)
movdqu %xmm6, 0(%rsp)
])
ifelse(eval($2 > 7), 1, [
movdqa %xmm7, 16(%rsp)
movdqu %xmm7, 16(%rsp)
])
ifelse(eval($2 > 8), 1, [
movdqa %xmm8, 32(%rsp)
movdqu %xmm8, 32(%rsp)
])
ifelse(eval($2 > 9), 1, [
movdqa %xmm9, 48(%rsp)
movdqu %xmm9, 48(%rsp)
])
ifelse(eval($2 > 10), 1, [
movdqa %xmm10, 64(%rsp)
movdqu %xmm10, 64(%rsp)
])
ifelse(eval($2 > 11), 1, [
movdqa %xmm11, 80(%rsp)
movdqu %xmm11, 80(%rsp)
])
ifelse(eval($2 > 12), 1, [
movdqa %xmm12, 96(%rsp)
movdqu %xmm12, 96(%rsp)
])
ifelse(eval($2 > 13), 1, [
movdqa %xmm13, 112(%rsp)
movdqu %xmm13, 112(%rsp)
])
ifelse(eval($2 > 14), 1, [
movdqa %xmm14, 128(%rsp)
movdqu %xmm14, 128(%rsp)
])
ifelse(eval($2 > 15), 1, [
movdqa %xmm15, 144(%rsp)
movdqu %xmm15, 144(%rsp)
])
ifelse(eval($1 >= 1), 1, [
push %rdi
......@@ -133,34 +133,34 @@ define(<W64_EXIT>, <
pop %rdi
])
ifelse(eval($2 > 15), 1, [
movdqa 144(%rsp), %xmm15
movdqu 144(%rsp), %xmm15
])
ifelse(eval($2 > 14), 1, [
movdqa 128(%rsp), %xmm14
movdqu 128(%rsp), %xmm14
])
ifelse(eval($2 > 13), 1, [
movdqa 112(%rsp), %xmm13
movdqu 112(%rsp), %xmm13
])
ifelse(eval($2 > 12), 1, [
movdqa 96(%rsp), %xmm12
movdqu 96(%rsp), %xmm12
])
ifelse(eval($2 > 11), 1, [
movdqa 80(%rsp), %xmm11
movdqu 80(%rsp), %xmm11
])
ifelse(eval($2 > 10), 1, [
movdqa 64(%rsp), %xmm10
movdqu 64(%rsp), %xmm10
])
ifelse(eval($2 > 9), 1, [
movdqa 48(%rsp), %xmm9
movdqu 48(%rsp), %xmm9
])
ifelse(eval($2 > 8), 1, [
movdqa 32(%rsp), %xmm8
movdqu 32(%rsp), %xmm8
])
ifelse(eval($2 > 7), 1, [
movdqa 16(%rsp), %xmm7
movdqu 16(%rsp), %xmm7
])
ifelse(eval($2 > 6), 1, [
movdqa 0(%rsp), %xmm6
movdqu 0(%rsp), %xmm6
add [$]eval(8 + 16*($2 - 6)), %rsp
])
])
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment