summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2014-06-11 22:44:08 +0200
committerMike Pall <mike>2014-06-11 22:44:08 +0200
commit7dc9e5ade487ff2cd81c0c644f4f0953166b1375 (patch)
tree2ff02dbc36be09c0e0360a30d38a9dc3a7ff74c4
parente7c6a1afa2b62888ff78679a7a48b4e303b4a8a6 (diff)
downloadluajit-7dc9e5ade487ff2cd81c0c644f4f0953166b1375.tar.gz
luajit-7dc9e5ade487ff2cd81c0c644f4f0953166b1375.tar.bz2
luajit-7dc9e5ade487ff2cd81c0c644f4f0953166b1375.zip
x86: lj_math_random_step() clobbers XMM regs on OSX Clang.
-rw-r--r--src/lj_ircall.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/lj_ircall.h b/src/lj_ircall.h
index af30ba8f..92d61dfa 100644
--- a/src/lj_ircall.h
+++ b/src/lj_ircall.h
@@ -86,6 +86,12 @@ typedef struct CCallInfo {
86#define IRCALLCOND_FFI32(x) NULL 86#define IRCALLCOND_FFI32(x) NULL
87#endif 87#endif
88 88
89#if LJ_TARGET_X86
90#define CCI_RANDFPR 0 /* Clang on OSX/x86 is overzealous. */
91#else
92#define CCI_RANDFPR CCI_NOFPRCLOBBER
93#endif
94
89#if LJ_SOFTFP 95#if LJ_SOFTFP
90#define ARG1_FP 2 /* Treat as 2 32 bit arguments. */ 96#define ARG1_FP 2 /* Treat as 2 32 bit arguments. */
91#else 97#else
@@ -112,7 +118,7 @@ typedef struct CCallInfo {
112 _(ANY, lj_gc_step_jit, 2, FS, NIL, CCI_L) \ 118 _(ANY, lj_gc_step_jit, 2, FS, NIL, CCI_L) \
113 _(ANY, lj_gc_barrieruv, 2, FS, NIL, 0) \ 119 _(ANY, lj_gc_barrieruv, 2, FS, NIL, 0) \
114 _(ANY, lj_mem_newgco, 2, FS, P32, CCI_L) \ 120 _(ANY, lj_mem_newgco, 2, FS, P32, CCI_L) \
115 _(ANY, lj_math_random_step, 1, FS, NUM, CCI_CASTU64|CCI_NOFPRCLOBBER) \ 121 _(ANY, lj_math_random_step, 1, FS, NUM, CCI_CASTU64|CCI_RANDFPR)\
116 _(ANY, lj_vm_modi, 2, FN, INT, 0) \ 122 _(ANY, lj_vm_modi, 2, FN, INT, 0) \
117 _(ANY, sinh, ARG1_FP, N, NUM, 0) \ 123 _(ANY, sinh, ARG1_FP, N, NUM, 0) \
118 _(ANY, cosh, ARG1_FP, N, NUM, 0) \ 124 _(ANY, cosh, ARG1_FP, N, NUM, 0) \