summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@igalia.com>2019-04-26 15:57:25 +0200
committerAndy Wingo <wingo@igalia.com>2019-04-26 15:57:25 +0200
commit19da79c8c1f38c09d1901cc3608b094b498c657c (patch)
treefa5e06ed22d8b1ec790c0eae3b1204a6f1a9069a
parentb1163145915e652c4b82b66b1e921c811a90c46a (diff)
downloadguile-19da79c8c1f38c09d1901cc3608b094b498c657c.tar.gz
Fix 32-bit movi_d
* lightening/x86-sse.c (movi_d): Fix combining of low and high double halves.
-rw-r--r--lightening/x86-sse.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/lightening/x86-sse.c b/lightening/x86-sse.c
index c304919d0..34a39e895 100644
--- a/lightening/x86-sse.c
+++ b/lightening/x86-sse.c
@@ -316,6 +316,11 @@ xorpdr(jit_state_t *_jit, int32_t r0, int32_t r1)
ssexr(_jit, 0x66, X86_SSE_XOR, r0, r1);
}
static void
+orpdr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ssexr(_jit, 0x66, X86_SSE_OR, r0, r1);
+}
+static void
pcmpeqlr(jit_state_t *_jit, int32_t r0, int32_t r1)
{
ssexr(_jit, 0x66, X86_SSE_EQD, r0, r1);
@@ -410,7 +415,7 @@ movi_d(jit_state_t *_jit, int32_t r0, jit_float64_t i0)
pslq(_jit, jit_fpr_regno(freg), 32);
movi(_jit, jit_gpr_regno(ireg), data.ii[0]);
movdlxr(_jit, r0, jit_gpr_regno(ireg));
- xorpdr(_jit, r0, jit_fpr_regno(freg));
+ orpdr(_jit, r0, jit_fpr_regno(freg));
unget_temp_xpr(_jit);
unget_temp_gpr(_jit);
#endif