diff --git a/src/lj_intrinsic.c b/src/lj_intrinsic.c index c5ee7a94..845e0e62 100644 --- a/src/lj_intrinsic.c +++ b/src/lj_intrinsic.c @@ -780,6 +780,8 @@ int lj_intrinsic_fromcdef(lua_State *L, CTypeID fid, GCstr *opstr, uint32_t imm) /* Use opcode unmodified in its SSE form */ intrins->flags &= ~INTRINSFLAG_VEX; } + } else if(!LJ_64 && (intrins->flags & INTRINSFLAG_REXW)) { + intrins->flags &= ~INTRINSFLAG_REXW; } #endif diff --git a/tests/intrinsic_spec.lua b/tests/intrinsic_spec.lua index 563209b0..eacf94a5 100644 --- a/tests/intrinsic_spec.lua +++ b/tests/intrinsic_spec.lua @@ -429,7 +429,7 @@ context("__mcode", function() end) it("output pointers", function() - assert_cdef([[const char* addptr(const char* nptr, int32_t n) __mcode("03rM");]], "addptr") + assert_cdef([[const char* addptr(const char* nptr, int32_t n) __mcode("03rMX");]], "addptr") local s = "0123456789abcdefghijklmnopqrstvwxyz" local ptr = ffi.C.addptr(s, 0)