lightning.git - Portable just-in-time compiler library

index : lightning.git
Portable just-in-time compiler library
summary refs log tree commit diff
path: root/lib/jit_mips-cpu.c
diff options
context:
space:
mode:
authorpcpa <paulo.cesar.pereira.de.andrade@gmail.com>2023年04月24日 17:55:50 -0300
committerpcpa <paulo.cesar.pereira.de.andrade@gmail.com>2023年04月24日 17:55:50 -0300
commit7c418d4722cc28537d48a276a0b555be3c02f5bf (patch)
treeeeade368f63bcf347e71b0404233529fa830ddc9 /lib/jit_mips-cpu.c
parent56af4f3bb25ad635de9b443cf1cf6f73fb0aace1 (diff)
downloadlightning-7c418d4722cc28537d48a276a0b555be3c02f5bf.tar.gz
Add back earlier unld* implementation
It has been also made default, as it generates shorter code. Verified to work on several ports that need specialized code for unaligned memory access.
Diffstat (limited to 'lib/jit_mips-cpu.c')
-rw-r--r--lib/jit_mips-cpu.c 20
1 files changed, 14 insertions, 6 deletions
diff --git a/lib/jit_mips-cpu.c b/lib/jit_mips-cpu.c
index 78871a9..5bdd39f 100644
--- a/lib/jit_mips-cpu.c
+++ b/lib/jit_mips-cpu.c
@@ -3144,9 +3144,13 @@ _unldr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
static void
_unldi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0, jit_word_t i1)
{
- jit_int32_t t0, r2;
- if (jit_unaligned_p())
- fallback_unldi(r0, i0, i1);
+ jit_int32_t t0;
+ if (jit_unaligned_p()) {
+ t0 = jit_get_reg(jit_class_gpr);
+ movi(rn(t0), i0);
+ unldr(r0, rn(t0), i1);
+ jit_unget_reg(t0);
+ }
else
generic_unldi(r0, i0, i1);
}
@@ -3235,9 +3239,13 @@ _unldr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
static void
_unldi_u(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0, jit_word_t i1)
{
- jit_int32_t t0, r2;
- if (jit_unaligned_p())
- fallback_unldi_u(r0, i0, i1);
+ jit_int32_t t0;
+ if (jit_unaligned_p()) {
+ t0 = jit_get_reg(jit_class_gpr);
+ movi(rn(t0), i0);
+ unldr_u(r0, rn(t0), i1);
+ jit_unget_reg(t0);
+ }
else
generic_unldi_u(r0, i0, i1);
}
generated by cgit v1.2.3 (git 2.25.1) at 2025年09月10日 21:19:25 +0000

AltStyle によって変換されたページ (->オリジナル) /