diff options
author | Mike Pall <mike> | 2011-05-23 20:20:34 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2011-05-23 20:20:34 +0200 |
commit | 185554b682c1e3dab74d4fa310797033a32815ef (patch) | |
tree | 86469fab270d8de92d48b6829c386a09407408a3 /src/lj_ffrecord.c | |
parent | 7b21a660a89367db4ab50a85aa32a1ffd5a88623 (diff) | |
download | luajit-185554b682c1e3dab74d4fa310797033a32815ef.tar.gz luajit-185554b682c1e3dab74d4fa310797033a32815ef.tar.bz2 luajit-185554b682c1e3dab74d4fa310797033a32815ef.zip |
ARM: Unify rotates to simplify assembler backend.
Diffstat (limited to 'src/lj_ffrecord.c')
-rw-r--r-- | src/lj_ffrecord.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/lj_ffrecord.c b/src/lj_ffrecord.c index 0de54f04..8cc42406 100644 --- a/src/lj_ffrecord.c +++ b/src/lj_ffrecord.c | |||
@@ -570,10 +570,17 @@ static void LJ_FASTCALL recff_bit_shift(jit_State *J, RecordFFData *rd) | |||
570 | { | 570 | { |
571 | TRef tr = lj_opt_narrow_tobit(J, J->base[0]); | 571 | TRef tr = lj_opt_narrow_tobit(J, J->base[0]); |
572 | TRef tsh = lj_opt_narrow_tobit(J, J->base[1]); | 572 | TRef tsh = lj_opt_narrow_tobit(J, J->base[1]); |
573 | if (!(rd->data < IR_BROL ? LJ_TARGET_MASKSHIFT : LJ_TARGET_MASKROT) && | 573 | IROp op = (IROp)rd->data; |
574 | if (!(op < IR_BROL ? LJ_TARGET_MASKSHIFT : LJ_TARGET_MASKROT) && | ||
574 | !tref_isk(tsh)) | 575 | !tref_isk(tsh)) |
575 | tsh = emitir(IRTI(IR_BAND), tsh, lj_ir_kint(J, 31)); | 576 | tsh = emitir(IRTI(IR_BAND), tsh, lj_ir_kint(J, 31)); |
576 | J->base[0] = emitir(IRTI(rd->data), tr, tsh); | 577 | #ifdef LJ_TARGET_UNIFYROT |
578 | if (op == (LJ_TARGET_UNIFYROT == 1 ? IR_BROR : IR_BROL)) { | ||
579 | op = LJ_TARGET_UNIFYROT == 1 ? IR_BROL : IR_BROR; | ||
580 | tsh = emitir(IRTI(IR_NEG), tsh, tsh); | ||
581 | } | ||
582 | #endif | ||
583 | J->base[0] = emitir(IRTI(op), tr, tsh); | ||
577 | } | 584 | } |
578 | 585 | ||
579 | /* -- String library fast functions --------------------------------------- */ | 586 | /* -- String library fast functions --------------------------------------- */ |