aboutsummaryrefslogtreecommitdiff
path: root/src/lj_asm_arm64.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lj_asm_arm64.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/lj_asm_arm64.h b/src/lj_asm_arm64.h
index eea957b5..fff0b3fd 100644
--- a/src/lj_asm_arm64.h
+++ b/src/lj_asm_arm64.h
@@ -277,7 +277,7 @@ static void asm_fusexref(ASMState *as, A64Ins ai, Reg rd, IRRef ref,
277 if (!emit_checkofs(ai, ofs)) { 277 if (!emit_checkofs(ai, ofs)) {
278 Reg rn = ra_alloc1(as, ref, allow); 278 Reg rn = ra_alloc1(as, ref, allow);
279 Reg rm = ra_allock(as, ofs, rset_exclude(allow, rn)); 279 Reg rm = ra_allock(as, ofs, rset_exclude(allow, rn));
280 emit_dnm(as, (ai ^ 0x01204800), rd, rn, rm); 280 emit_dnm(as, (ai^A64I_LS_R)|A64I_LS_UXTWx, rd, rn, rm);
281 return; 281 return;
282 } 282 }
283 } 283 }
@@ -936,7 +936,7 @@ static void asm_ahuvload(ASMState *as, IRIns *ir)
936 ra_allock(as, (irt_toitype(ir->t) << 15) | 0x7fff, allow), tmp); 936 ra_allock(as, (irt_toitype(ir->t) << 15) | 0x7fff, allow), tmp);
937 } 937 }
938 if (ofs & FUSE_REG) 938 if (ofs & FUSE_REG)
939 emit_dnm(as, (A64I_LDRx^A64I_LS_R)|A64I_LS_UXTWx, tmp, idx, (ofs & 31)); 939 emit_dnm(as, (A64I_LDRx^A64I_LS_R)|A64I_LS_UXTWx|A64I_LS_SH, tmp, idx, (ofs & 31));
940 else 940 else
941 emit_lso(as, A64I_LDRx, tmp, idx, ofs); 941 emit_lso(as, A64I_LDRx, tmp, idx, ofs);
942} 942}
@@ -951,7 +951,7 @@ static void asm_ahustore(ASMState *as, IRIns *ir)
951 src = ra_alloc1(as, ir->op2, RSET_FPR); 951 src = ra_alloc1(as, ir->op2, RSET_FPR);
952 idx = asm_fuseahuref(as, ir->op1, &ofs, allow, A64I_STRd); 952 idx = asm_fuseahuref(as, ir->op1, &ofs, allow, A64I_STRd);
953 if (ofs & FUSE_REG) 953 if (ofs & FUSE_REG)
954 emit_dnm(as, (A64I_STRd^A64I_LS_R)|A64I_LS_UXTWx, (src & 31), idx, (ofs &31)); 954 emit_dnm(as, (A64I_STRd^A64I_LS_R)|A64I_LS_UXTWx|A64I_LS_SH, (src & 31), idx, (ofs &31));
955 else 955 else
956 emit_lso(as, A64I_STRd, (src & 31), idx, ofs); 956 emit_lso(as, A64I_STRd, (src & 31), idx, ofs);
957 } else { 957 } else {
@@ -968,7 +968,7 @@ static void asm_ahustore(ASMState *as, IRIns *ir)
968 idx = asm_fuseahuref(as, ir->op1, &ofs, rset_exclude(allow, type), 968 idx = asm_fuseahuref(as, ir->op1, &ofs, rset_exclude(allow, type),
969 A64I_STRx); 969 A64I_STRx);
970 if (ofs & FUSE_REG) 970 if (ofs & FUSE_REG)
971 emit_dnm(as, (A64I_STRx^A64I_LS_R)|A64I_LS_UXTWx, tmp, idx, (ofs & 31)); 971 emit_dnm(as, (A64I_STRx^A64I_LS_R)|A64I_LS_UXTWx|A64I_LS_SH, tmp, idx, (ofs & 31));
972 else 972 else
973 emit_lso(as, A64I_STRx, tmp, idx, ofs); 973 emit_lso(as, A64I_STRx, tmp, idx, ofs);
974 if (ra_hasreg(src)) { 974 if (ra_hasreg(src)) {