diff options
author | Mike Pall <mike> | 2014-06-11 22:44:08 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2014-06-11 22:44:08 +0200 |
commit | 7dc9e5ade487ff2cd81c0c644f4f0953166b1375 (patch) | |
tree | 2ff02dbc36be09c0e0360a30d38a9dc3a7ff74c4 | |
parent | e7c6a1afa2b62888ff78679a7a48b4e303b4a8a6 (diff) | |
download | luajit-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.h | 8 |
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) \ |