aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/jit/dump.lua4
-rw-r--r--src/lj_asm_arm64.h2
-rw-r--r--src/lj_asm_mips.h2
-rw-r--r--src/lj_asm_x86.h2
-rw-r--r--src/lj_ir.h1
5 files changed, 7 insertions, 4 deletions
diff --git a/src/jit/dump.lua b/src/jit/dump.lua
index abd72287..34ced76d 100644
--- a/src/jit/dump.lua
+++ b/src/jit/dump.lua
@@ -278,7 +278,9 @@ local litname = {
278 s = irtype[band(shr(mode, 5), 31)].."."..s 278 s = irtype[band(shr(mode, 5), 31)].."."..s
279 if band(mode, 0x800) ~= 0 then s = s.." sext" end 279 if band(mode, 0x800) ~= 0 then s = s.." sext" end
280 local c = shr(mode, 12) 280 local c = shr(mode, 12)
281 if c == 2 then s = s.." index" elseif c == 3 then s = s.." check" end 281 if c == 1 then s = s.." none"
282 elseif c == 2 then s = s.." index"
283 elseif c == 3 then s = s.." check" end
282 t[mode] = s 284 t[mode] = s
283 return s 285 return s
284 end}), 286 end}),
diff --git a/src/lj_asm_arm64.h b/src/lj_asm_arm64.h
index f6e99d9c..c9ba7b7b 100644
--- a/src/lj_asm_arm64.h
+++ b/src/lj_asm_arm64.h
@@ -602,7 +602,7 @@ static void asm_conv(ASMState *as, IRIns *ir)
602 emit_dn(as, A64I_SXTW, dest, left); 602 emit_dn(as, A64I_SXTW, dest, left);
603 } 603 }
604 } else { 604 } else {
605 if (st64) { 605 if (st64 && !(ir->op2 & IRCONV_NONE)) {
606 /* This is either a 32 bit reg/reg mov which zeroes the hiword 606 /* This is either a 32 bit reg/reg mov which zeroes the hiword
607 ** or a load of the loword from a 64 bit address. 607 ** or a load of the loword from a 64 bit address.
608 */ 608 */
diff --git a/src/lj_asm_mips.h b/src/lj_asm_mips.h
index a3ab2f8e..f775d08b 100644
--- a/src/lj_asm_mips.h
+++ b/src/lj_asm_mips.h
@@ -751,7 +751,7 @@ static void asm_conv(ASMState *as, IRIns *ir)
751 } 751 }
752 } 752 }
753 } else { 753 } else {
754 if (st64) { 754 if (st64 && !(ir->op2 & IRCONV_NONE)) {
755 /* This is either a 32 bit reg/reg mov which zeroes the hiword 755 /* This is either a 32 bit reg/reg mov which zeroes the hiword
756 ** or a load of the loword from a 64 bit address. 756 ** or a load of the loword from a 64 bit address.
757 */ 757 */
diff --git a/src/lj_asm_x86.h b/src/lj_asm_x86.h
index 060ed974..715e1535 100644
--- a/src/lj_asm_x86.h
+++ b/src/lj_asm_x86.h
@@ -924,7 +924,7 @@ static void asm_conv(ASMState *as, IRIns *ir)
924 } 924 }
925 } else { 925 } else {
926 Reg dest = ra_dest(as, ir, RSET_GPR); 926 Reg dest = ra_dest(as, ir, RSET_GPR);
927 if (st64) { 927 if (st64 && !(ir->op2 & IRCONV_NONE)) {
928 Reg left = asm_fuseload(as, lref, RSET_GPR); 928 Reg left = asm_fuseload(as, lref, RSET_GPR);
929 /* This is either a 32 bit reg/reg mov which zeroes the hiword 929 /* This is either a 32 bit reg/reg mov which zeroes the hiword
930 ** or a load of the loword from a 64 bit address. 930 ** or a load of the loword from a 64 bit address.
diff --git a/src/lj_ir.h b/src/lj_ir.h
index f953ff0e..ea8616ec 100644
--- a/src/lj_ir.h
+++ b/src/lj_ir.h
@@ -250,6 +250,7 @@ IRFLDEF(FLENUM)
250#define IRCONV_ANY (1<<IRCONV_CSH) /* Any FP number is ok. */ 250#define IRCONV_ANY (1<<IRCONV_CSH) /* Any FP number is ok. */
251#define IRCONV_INDEX (2<<IRCONV_CSH) /* Check + special backprop rules. */ 251#define IRCONV_INDEX (2<<IRCONV_CSH) /* Check + special backprop rules. */
252#define IRCONV_CHECK (3<<IRCONV_CSH) /* Number checked for integerness. */ 252#define IRCONV_CHECK (3<<IRCONV_CSH) /* Number checked for integerness. */
253#define IRCONV_NONE IRCONV_ANY /* INT|*64 no conv, but change type. */
253 254
254/* TOSTR mode, stored in op2. */ 255/* TOSTR mode, stored in op2. */
255#define IRTOSTR_INT 0 /* Convert integer to string. */ 256#define IRTOSTR_INT 0 /* Convert integer to string. */