author | pcpa <paulo.cesar.pereira.de.andrade@gmail.com> | 2023年04月11日 11:05:27 -0300 |
---|---|---|
committer | pcpa <paulo.cesar.pereira.de.andrade@gmail.com> | 2023年04月11日 11:05:27 -0300 |
commit | 3daf1c1a37f61cf42bffa1d3dc3b306b2793ea71 (patch) | |
tree | 441761118f9af979f256c9709212bc92761bd868 | |
parent | 5f69efdb6348dfd45cbc18cc00292ff8fdfb2dd1 (diff) | |
download | lightning-3daf1c1a37f61cf42bffa1d3dc3b306b2793ea71.tar.gz |
-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 |
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); |