diff --git a/src/xenia/cpu/backend/a64/a64_seq_vector.cc b/src/xenia/cpu/backend/a64/a64_seq_vector.cc index 02300072c..90bd3db33 100644 --- a/src/xenia/cpu/backend/a64/a64_seq_vector.cc +++ b/src/xenia/cpu/backend/a64/a64_seq_vector.cc @@ -192,15 +192,12 @@ struct LOAD_VECTOR_SHR_I8 if (i.src1.is_constant) { auto sh = i.src1.constant(); assert_true(sh < xe::countof(lvsr_table)); - // e.mov(e.rax, (uintptr_t)&lvsr_table[sh]); - // e.vmovaps(i.dest, e.ptr[e.rax]); + e.MOVP2R(X0, &lvsr_table[sh]); + e.LDR(i.dest, X0); } else { - // TODO(benvanik): find a cheaper way of doing this. - // e.movzx(e.rdx, i.src1); - // e.and_(e.dx, 0xF); - // e.shl(e.dx, 4); - // e.mov(e.rax, (uintptr_t)lvsr_table); - // e.vmovaps(i.dest, e.ptr[e.rax + e.rdx]); + e.MOVP2R(X0, lvsr_table); + e.AND(X1, i.src1.reg().toX(), 0xf); + e.LDR(i.dest, X0, X1, IndexExt::LSL, 4); } } };