ia64: build and pass all tests - lightning.git - Portable just-in-time compiler library

index : lightning.git
Portable just-in-time compiler library
summary refs log tree commit diff
diff options
context:
space:
mode:
authorpcpa <paulo.cesar.pereira.de.andrade@gmail.com>2023年04月11日 11:05:27 -0300
committerpcpa <paulo.cesar.pereira.de.andrade@gmail.com>2023年04月11日 11:05:27 -0300
commit3daf1c1a37f61cf42bffa1d3dc3b306b2793ea71 (patch)
tree441761118f9af979f256c9709212bc92761bd868
parent5f69efdb6348dfd45cbc18cc00292ff8fdfb2dd1 (diff)
downloadlightning-3daf1c1a37f61cf42bffa1d3dc3b306b2793ea71.tar.gz
ia64: build and pass all tests
Diffstat
-rw-r--r--lib/jit_ia64-cpu.c 16
-rw-r--r--lib/jit_ia64-sz.c 71
-rw-r--r--lib/jit_ia64.c 11
3 files changed, 75 insertions, 23 deletions
diff --git a/lib/jit_ia64-cpu.c b/lib/jit_ia64-cpu.c
index 22f551c..1553eef 100644
--- a/lib/jit_ia64-cpu.c
+++ b/lib/jit_ia64-cpu.c
@@ -4235,18 +4235,18 @@ _xlshr(jit_state_t *_jit, jit_bool_t sign,
zero = beqi(_jit->pc.w, t3, 0);
over = beqi(_jit->pc.w, t3, __WORDSIZE);
done = jmpi(_jit->pc.w);
- patch_at(over, _jit->pc.w);
+ patch_at(jit_code_beqi, over, _jit->pc.w);
/* overflow */
movi(r0, 0);
done_over = jmpi(_jit->pc.w);
/* zero */
- patch_at(zero, _jit->pc.w);
+ patch_at(jit_code_beqi, zero, _jit->pc.w);
if (sign)
rshi(r1, t2, __WORDSIZE - 1);
else
movi(r1, 0);
- patch_at(done, _jit->pc.w);
- patch_at(done_over, _jit->pc.w);
+ patch_at(jit_code_jmpi, done, _jit->pc.w);
+ patch_at(jit_code_jmpi, done_over, _jit->pc.w);
}
else {
if (sign)
@@ -4334,7 +4334,7 @@ _xrshr(jit_state_t *_jit, jit_bool_t sign,
zero = beqi(_jit->pc.w, t3, 0);
over = beqi(_jit->pc.w, t3, __WORDSIZE);
done = jmpi(_jit->pc.w);
- patch_at(over, _jit->pc.w);
+ patch_at(jit_code_beqi, over, _jit->pc.w);
/* underflow */
if (sign)
rshi(r0, t2, __WORDSIZE - 1);
@@ -4342,13 +4342,13 @@ _xrshr(jit_state_t *_jit, jit_bool_t sign,
movi(r0, 0);
done_over = jmpi(_jit->pc.w);
/* zero */
- patch_at(zero, _jit->pc.w);
+ patch_at(jit_code_beqi, zero, _jit->pc.w);
if (sign)
rshi(r1, t2, __WORDSIZE - 1);
else
movi(r1, 0);
- patch_at(done, _jit->pc.w);
- patch_at(done_over, _jit->pc.w);
+ patch_at(jit_code_jmpi, done, _jit->pc.w);
+ patch_at(jit_code_jmpi, done_over, _jit->pc.w);
jit_unget_reg(s1);
}
else {
diff --git a/lib/jit_ia64-sz.c b/lib/jit_ia64-sz.c
index b2ad9a7..a0c5452 100644
--- a/lib/jit_ia64-sz.c
+++ b/lib/jit_ia64-sz.c
@@ -1,5 +1,5 @@
#if __WORDSIZE == 64
-#define JIT_INSTR_MAX 240
+#define JIT_INSTR_MAX 1104
0, /* data */
0, /* live */
48, /* align */
@@ -436,15 +436,15 @@
0, /* retr_d */
0, /* reti_d */
0, /* retval_d */
- 0, /* movr_w_f */
+ 16, /* movr_w_f */
0, /* movr_ww_d */
- 0, /* movr_w_d */
- 0, /* movr_f_w */
- 0, /* movi_f_w */
+ 16, /* movr_w_d */
+ 16, /* movr_f_w */
+ 16, /* movi_f_w */
0, /* movr_d_ww */
0, /* movi_d_ww */
16, /* movr_d_w */
- 32, /* movi_d_w */
+ 16, /* movi_d_w */
240, /* clor */
176, /* clzr */
176, /* ctor */
@@ -458,13 +458,54 @@
16, /* extr */
16, /* extr_u */
48, /* depr */
- /* FIXME guessed values */
- 208, /* qlshr */
- 16, /* qlshi */
- 208, /* qlshr_u */
- 16, /* qlshi_u */
- 208, /* qrshr */
- 16, /* qrshi */
- 208, /* qrshr_u */
- 16, /* qrshi_u */
+ 16, /* depi */
+ 16, /* negi */
+ 16, /* comi */
+ 16, /* exti_c */
+ 16, /* exti_uc */
+ 16, /* exti_s */
+ 16, /* exti_us */
+ 16, /* exti_i */
+ 16, /* exti_ui */
+ 16, /* bswapi_us */
+ 16, /* bswapi_ui */
+ 16, /* bswapi_ul */
+ 16, /* htoni_us */
+ 16, /* htoni_ui */
+ 16, /* htoni_ul */
+ 0, /* negi_f */
+ 0, /* absi_f */
+ 0, /* sqrti_f */
+ 0, /* negi_d */
+ 0, /* absi_d */
+ 0, /* sqrti_d */
+ 16, /* cloi */
+ 16, /* clzi */
+ 16, /* ctoi */
+ 16, /* ctzi */
+ 16, /* rbiti */
+ 16, /* popcnti */
+ 16, /* exti */
+ 16, /* exti_u */
+ 112, /* qlshr */
+ 32, /* qlshi */
+ 96, /* qlshr_u */
+ 32, /* qlshi_u */
+ 96, /* qrshr */
+ 32, /* qrshi */
+ 96, /* qrshr_u */
+ 32, /* qrshi_u */
+ 1104, /* unldr */
+ 176, /* unldi */
+ 1104, /* unldr_u */
+ 176, /* unldi_u */
+ 560, /* unstr */
+ 176, /* unsti */
+ 1104, /* unldr_x */
+ 176, /* unldi_x */
+ 576, /* unstr_x */
+ 176, /* unsti_x */
+ 32, /* movi_w_f */
+ 32, /* movi_w_d */
+ 0, /* movi_ww_d */
#endif /* __WORDSIZE */
diff --git a/lib/jit_ia64.c b/lib/jit_ia64.c
index be37275..cbbc2db 100644
--- a/lib/jit_ia64.c
+++ b/lib/jit_ia64.c
@@ -1189,6 +1189,14 @@ _emit_code(jit_state_t *_jit)
case_rrw(xor,);
case_rrr(lsh,);
case_rrw(lsh,);
+ case_rrrr(qlsh,);
+ case_rrrw(qlsh,);
+ case_rrrr(qlsh, _u);
+ case_rrrw(qlsh, _u);
+ case_rrrr(qrsh,);
+ case_rrrw(qrsh,);
+ case_rrrr(qrsh, _u);
+ case_rrrw(qrsh, _u);
case_rrr(rsh,);
case_rrw(rsh,);
case_rrr(rsh, _u);
@@ -1323,6 +1331,9 @@ _emit_code(jit_state_t *_jit)
case jit_code_unldr_u:
unldr_u(rn(node->u.w), rn(node->v.w), node->w.w);
break;
+ case jit_code_unldi_u:
+ unldi_u(rn(node->u.w), node->v.w, node->w.w);
+ break;
case_rr(st, _c);
case_wr(st, _c);
case_rr(st, _s);
generated by cgit v1.2.3 (git 2.39.1) at 2025年10月02日 17:56:00 +0000

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