diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/jit/dump.lua | 4 | ||||
| -rw-r--r-- | src/lj_asm_arm64.h | 2 | ||||
| -rw-r--r-- | src/lj_asm_mips.h | 2 | ||||
| -rw-r--r-- | src/lj_asm_x86.h | 2 | ||||
| -rw-r--r-- | src/lj_ir.h | 1 |
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. */ |
