diff options
Diffstat (limited to 'src/lj_opt_split.c')
-rw-r--r-- | src/lj_opt_split.c | 22 |
1 files changed, 3 insertions, 19 deletions
diff --git a/src/lj_opt_split.c b/src/lj_opt_split.c index 72720e86..77b8e2dd 100644 --- a/src/lj_opt_split.c +++ b/src/lj_opt_split.c | |||
@@ -78,8 +78,7 @@ | |||
78 | ** 0105 int HIOP 0103 +0 | 78 | ** 0105 int HIOP 0103 +0 |
79 | ** 0106 p32 ADD base +16 | 79 | ** 0106 p32 ADD base +16 |
80 | ** 0107 int XSTORE 0106 0104 | 80 | ** 0107 int XSTORE 0106 0104 |
81 | ** 0108 p32 ADD base +20 | 81 | ** 0108 int HIOP 0106 0105 |
82 | ** 0109 int XSTORE 0108 0105 | ||
83 | ** | 82 | ** |
84 | ** mov eax, [esi+0x8] | 83 | ** mov eax, [esi+0x8] |
85 | ** mov ecx, [esi+0xc] | 84 | ** mov ecx, [esi+0xc] |
@@ -328,19 +327,9 @@ static void split_ir(jit_State *J) | |||
328 | #endif | 327 | #endif |
329 | break; | 328 | break; |
330 | } | 329 | } |
331 | case IR_ASTORE: case IR_HSTORE: case IR_USTORE: | 330 | case IR_ASTORE: case IR_HSTORE: case IR_USTORE: case IR_XSTORE: |
332 | split_emit(J, IRT(IR_HIOP, IRT_SOFTFP), nir->op1, hisubst[ir->op2]); | 331 | split_emit(J, IRT(IR_HIOP, IRT_SOFTFP), nir->op1, hisubst[ir->op2]); |
333 | break; | 332 | break; |
334 | case IR_XSTORE: { | ||
335 | #if LJ_LE | ||
336 | IRRef hiref = hisubst[ir->op2]; | ||
337 | #else | ||
338 | IRRef hiref = nir->op2; nir->op2 = hisubst[ir->op2]; | ||
339 | #endif | ||
340 | split_emit(J, IRT(IR_XSTORE, IRT_SOFTFP), | ||
341 | split_ptr(J, oir, ir->op1), hiref); | ||
342 | break; | ||
343 | } | ||
344 | case IR_CONV: { /* Conversion to number. Others handled below. */ | 333 | case IR_CONV: { /* Conversion to number. Others handled below. */ |
345 | IRType st = (IRType)(ir->op2 & IRCONV_SRCMASK); | 334 | IRType st = (IRType)(ir->op2 & IRCONV_SRCMASK); |
346 | UNUSED(st); | 335 | UNUSED(st); |
@@ -434,12 +423,7 @@ static void split_ir(jit_State *J) | |||
434 | #endif | 423 | #endif |
435 | break; | 424 | break; |
436 | case IR_XSTORE: | 425 | case IR_XSTORE: |
437 | #if LJ_LE | 426 | split_emit(J, IRTI(IR_HIOP), nir->op1, hisubst[ir->op2]); |
438 | hiref = hisubst[ir->op2]; | ||
439 | #else | ||
440 | hiref = nir->op2; nir->op2 = hisubst[ir->op2]; | ||
441 | #endif | ||
442 | split_emit(J, IRTI(IR_XSTORE), split_ptr(J, oir, ir->op1), hiref); | ||
443 | break; | 427 | break; |
444 | case IR_CONV: { /* Conversion to 64 bit integer. Others handled below. */ | 428 | case IR_CONV: { /* Conversion to 64 bit integer. Others handled below. */ |
445 | IRType st = (IRType)(ir->op2 & IRCONV_SRCMASK); | 429 | IRType st = (IRType)(ir->op2 & IRCONV_SRCMASK); |