ia64: Do a better code size estimate - 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日 13:23:24 -0300
committerpcpa <paulo.cesar.pereira.de.andrade@gmail.com>2023年04月11日 13:23:24 -0300
commit03729793119651ffd38c0545ef3fd15d6b4e9218 (patch)
tree05f8df422fd54881eb508f6bf7c74c5e46f9ff7d
parentd5499f8f1b521e66b097878f7362fe0ad7ab60bd (diff)
downloadlightning-03729793119651ffd38c0545ef3fd15d6b4e9218.tar.gz
ia64: Do a better code size estimate
Since 3 instructions are emitted at a time, and it is always aligned at 16 bytes, use a better procedure to compute expected code size. This is required because when building with --devel-get-jit-size, it also flushes all instructions after generating every Lightning instruction.
Diffstat
-rw-r--r--lib/jit_ia64-sz.c 606
-rw-r--r--size.c 7
2 files changed, 309 insertions, 304 deletions
diff --git a/lib/jit_ia64-sz.c b/lib/jit_ia64-sz.c
index a0c5452..4b98116 100644
--- a/lib/jit_ia64-sz.c
+++ b/lib/jit_ia64-sz.c
@@ -1,15 +1,15 @@
#if __WORDSIZE == 64
-#define JIT_INSTR_MAX 1104
+#define JIT_INSTR_MAX 384
0, /* data */
0, /* live */
- 48, /* align */
+ 32, /* align */
0, /* save */
0, /* load */
16, /* skip */
0, /* #name */
0, /* #note */
0, /* label */
- 224, /* prolog */
+ 80, /* prolog */
0, /* ellipsis */
0, /* va_push */
0, /* allocai */
@@ -40,46 +40,46 @@
0, /* putargr_l */
0, /* putargi_l */
16, /* va_start */
- 32, /* va_arg */
- 32, /* va_arg_d */
+ 16, /* va_arg */
+ 16, /* va_arg_d */
0, /* va_end */
16, /* addr */
- 32, /* addi */
- 32, /* addcr */
- 48, /* addci */
- 64, /* addxr */
- 64, /* addxi */
+ 16, /* addi */
+ 16, /* addcr */
+ 32, /* addci */
+ 32, /* addxr */
+ 32, /* addxi */
16, /* subr */
- 32, /* subi */
- 32, /* subcr */
- 48, /* subci */
- 64, /* subxr */
- 64, /* subxi */
- 32, /* rsbi */
- 48, /* mulr */
- 64, /* muli */
- 112, /* qmulr */
- 112, /* qmuli */
- 112, /* qmulr_u */
- 112, /* qmuli_u */
- 80, /* divr */
- 96, /* divi */
- 80, /* divr_u */
- 96, /* divi_u */
- 144, /* qdivr */
- 144, /* qdivi */
- 144, /* qdivr_u */
- 144, /* qdivi_u */
- 80, /* remr */
- 96, /* remi */
- 80, /* remr_u */
- 96, /* remi_u */
+ 16, /* subi */
+ 16, /* subcr */
+ 32, /* subci */
+ 32, /* subxr */
+ 32, /* subxi */
+ 16, /* rsbi */
+ 32, /* mulr */
+ 32, /* muli */
+ 48, /* qmulr */
+ 48, /* qmuli */
+ 48, /* qmulr_u */
+ 48, /* qmuli_u */
+ 32, /* divr */
+ 48, /* divi */
+ 32, /* divr_u */
+ 48, /* divi_u */
+ 64, /* qdivr */
+ 64, /* qdivi */
+ 64, /* qdivr_u */
+ 64, /* qdivi_u */
+ 32, /* remr */
+ 48, /* remi */
+ 32, /* remr_u */
+ 48, /* remi_u */
16, /* andr */
- 32, /* andi */
+ 16, /* andi */
16, /* orr */
- 32, /* ori */
+ 16, /* ori */
16, /* xorr */
- 32, /* xori */
+ 16, /* xori */
16, /* lshr */
16, /* lshi */
16, /* rshr */
@@ -88,132 +88,132 @@
16, /* rshi_u */
16, /* negr */
16, /* comr */
- 32, /* ltr */
- 32, /* lti */
- 32, /* ltr_u */
- 32, /* lti_u */
- 32, /* ler */
- 32, /* lei */
- 32, /* ler_u */
- 32, /* lei_u */
- 32, /* eqr */
- 32, /* eqi */
- 32, /* ger */
- 32, /* gei */
- 32, /* ger_u */
- 32, /* gei_u */
- 32, /* gtr */
- 32, /* gti */
- 32, /* gtr_u */
- 32, /* gti_u */
- 32, /* ner */
- 32, /* nei */
+ 16, /* ltr */
+ 16, /* lti */
+ 16, /* ltr_u */
+ 16, /* lti_u */
+ 16, /* ler */
+ 16, /* lei */
+ 16, /* ler_u */
+ 16, /* lei_u */
+ 16, /* eqr */
+ 16, /* eqi */
+ 16, /* ger */
+ 16, /* gei */
+ 16, /* ger_u */
+ 16, /* gei_u */
+ 16, /* gtr */
+ 16, /* gti */
+ 16, /* gtr_u */
+ 16, /* gti_u */
+ 16, /* ner */
+ 16, /* nei */
16, /* movr */
16, /* movi */
16, /* movnr */
16, /* movzr */
- 48, /* casr */
- 64, /* casi */
+ 32, /* casr */
+ 32, /* casi */
16, /* extr_c */
16, /* extr_uc */
16, /* extr_s */
16, /* extr_us */
16, /* extr_i */
16, /* extr_ui */
- 32, /* bswapr_us */
- 32, /* bswapr_ui */
+ 16, /* bswapr_us */
+ 16, /* bswapr_ui */
16, /* bswapr_ul */
- 32, /* htonr_us */
- 32, /* htonr_ui */
+ 16, /* htonr_us */
+ 16, /* htonr_ui */
16, /* htonr_ul */
16, /* ldr_c */
- 32, /* ldi_c */
+ 16, /* ldi_c */
16, /* ldr_uc */
- 32, /* ldi_uc */
+ 16, /* ldi_uc */
16, /* ldr_s */
- 32, /* ldi_s */
+ 16, /* ldi_s */
16, /* ldr_us */
- 32, /* ldi_us */
+ 16, /* ldi_us */
16, /* ldr_i */
- 32, /* ldi_i */
+ 16, /* ldi_i */
16, /* ldr_ui */
- 32, /* ldi_ui */
+ 16, /* ldi_ui */
16, /* ldr_l */
- 32, /* ldi_l */
- 32, /* ldxr_c */
- 48, /* ldxi_c */
+ 16, /* ldi_l */
+ 16, /* ldxr_c */
+ 32, /* ldxi_c */
16, /* ldxr_uc */
- 32, /* ldxi_uc */
- 32, /* ldxr_s */
- 48, /* ldxi_s */
+ 16, /* ldxi_uc */
+ 16, /* ldxr_s */
+ 32, /* ldxi_s */
16, /* ldxr_us */
- 32, /* ldxi_us */
- 32, /* ldxr_i */
- 48, /* ldxi_i */
+ 16, /* ldxi_us */
+ 16, /* ldxr_i */
+ 32, /* ldxi_i */
16, /* ldxr_ui */
- 32, /* ldxi_ui */
+ 16, /* ldxi_ui */
16, /* ldxr_l */
- 32, /* ldxi_l */
+ 16, /* ldxi_l */
16, /* str_c */
- 32, /* sti_c */
+ 16, /* sti_c */
16, /* str_s */
- 32, /* sti_s */
+ 16, /* sti_s */
16, /* str_i */
- 32, /* sti_i */
+ 16, /* sti_i */
16, /* str_l */
- 32, /* sti_l */
+ 16, /* sti_l */
16, /* stxr_c */
- 32, /* stxi_c */
+ 16, /* stxi_c */
16, /* stxr_s */
- 32, /* stxi_s */
+ 16, /* stxi_s */
16, /* stxr_i */
- 32, /* stxi_i */
+ 16, /* stxi_i */
16, /* stxr_l */
- 32, /* stxi_l */
- 32, /* bltr */
- 32, /* blti */
- 32, /* bltr_u */
- 32, /* blti_u */
- 32, /* bler */
- 32, /* blei */
- 32, /* bler_u */
- 32, /* blei_u */
- 32, /* beqr */
- 48, /* beqi */
- 32, /* bger */
- 32, /* bgei */
- 32, /* bger_u */
- 32, /* bgei_u */
- 32, /* bgtr */
- 32, /* bgti */
- 32, /* bgtr_u */
- 32, /* bgti_u */
- 32, /* bner */
- 48, /* bnei */
- 32, /* bmsr */
- 48, /* bmsi */
- 32, /* bmcr */
- 48, /* bmci */
- 96, /* boaddr */
- 112, /* boaddi */
- 64, /* boaddr_u */
- 64, /* boaddi_u */
- 96, /* bxaddr */
- 112, /* bxaddi */
- 64, /* bxaddr_u */
- 64, /* bxaddi_u */
- 112, /* bosubr */
- 112, /* bosubi */
- 64, /* bosubr_u */
- 64, /* bosubi_u */
- 112, /* bxsubr */
- 112, /* bxsubi */
- 64, /* bxsubr_u */
- 64, /* bxsubi_u */
+ 16, /* stxi_l */
+ 16, /* bltr */
+ 16, /* blti */
+ 16, /* bltr_u */
+ 16, /* blti_u */
+ 16, /* bler */
+ 16, /* blei */
+ 16, /* bler_u */
+ 16, /* blei_u */
+ 16, /* beqr */
+ 32, /* beqi */
+ 16, /* bger */
+ 16, /* bgei */
+ 16, /* bger_u */
+ 16, /* bgei_u */
+ 16, /* bgtr */
+ 16, /* bgti */
+ 16, /* bgtr_u */
+ 16, /* bgti_u */
+ 16, /* bner */
+ 32, /* bnei */
+ 16, /* bmsr */
+ 32, /* bmsi */
+ 16, /* bmcr */
+ 32, /* bmci */
+ 48, /* boaddr */
+ 48, /* boaddi */
+ 32, /* boaddr_u */
+ 32, /* boaddi_u */
+ 48, /* bxaddr */
+ 48, /* bxaddi */
+ 32, /* bxaddr_u */
+ 32, /* bxaddi_u */
+ 48, /* bosubr */
+ 48, /* bosubi */
+ 32, /* bosubr_u */
+ 32, /* bosubi_u */
+ 48, /* bxsubr */
+ 48, /* bxsubi */
+ 32, /* bxsubr_u */
+ 32, /* bxsubi_u */
16, /* jmpr */
16, /* jmpi */
- 32, /* callr */
- 48, /* calli */
+ 16, /* callr */
+ 32, /* calli */
0, /* prepare */
0, /* pushargr_c */
0, /* pushargi_c */
@@ -253,93 +253,93 @@
0, /* retval_i */
0, /* retval_ui */
0, /* retval_l */
- 128, /* epilog */
+ 48, /* epilog */
0, /* arg_f */
0, /* getarg_f */
0, /* putargr_f */
0, /* putargi_f */
16, /* addr_f */
- 48, /* addi_f */
+ 32, /* addi_f */
16, /* subr_f */
- 48, /* subi_f */
- 48, /* rsbi_f */
+ 32, /* subi_f */
+ 32, /* rsbi_f */
16, /* mulr_f */
- 48, /* muli_f */
- 160, /* divr_f */
- 192, /* divi_f */
+ 32, /* muli_f */
+ 64, /* divr_f */
+ 80, /* divi_f */
16, /* negr_f */
16, /* absr_f */
- 80, /* sqrtr_f */
- 32, /* ltr_f */
- 64, /* lti_f */
- 32, /* ler_f */
- 64, /* lei_f */
- 32, /* eqr_f */
- 64, /* eqi_f */
- 32, /* ger_f */
- 64, /* gei_f */
- 32, /* gtr_f */
- 64, /* gti_f */
- 32, /* ner_f */
- 64, /* nei_f */
- 32, /* unltr_f */
- 64, /* unlti_f */
- 32, /* unler_f */
- 64, /* unlei_f */
- 48, /* uneqr_f */
- 96, /* uneqi_f */
- 32, /* unger_f */
- 64, /* ungei_f */
- 32, /* ungtr_f */
- 64, /* ungti_f */
- 48, /* ltgtr_f */
- 96, /* ltgti_f */
- 32, /* ordr_f */
- 64, /* ordi_f */
- 32, /* unordr_f */
- 64, /* unordi_f */
- 32, /* truncr_f_i */
- 32, /* truncr_f_l */
- 48, /* extr_f */
+ 32, /* sqrtr_f */
+ 16, /* ltr_f */
+ 32, /* lti_f */
+ 16, /* ler_f */
+ 32, /* lei_f */
+ 16, /* eqr_f */
+ 32, /* eqi_f */
+ 16, /* ger_f */
+ 32, /* gei_f */
+ 16, /* gtr_f */
+ 32, /* gti_f */
+ 16, /* ner_f */
+ 32, /* nei_f */
+ 16, /* unltr_f */
+ 32, /* unlti_f */
+ 16, /* unler_f */
+ 32, /* unlei_f */
+ 32, /* uneqr_f */
+ 48, /* uneqi_f */
+ 16, /* unger_f */
+ 32, /* ungei_f */
+ 16, /* ungtr_f */
+ 32, /* ungti_f */
+ 32, /* ltgtr_f */
+ 48, /* ltgti_f */
+ 16, /* ordr_f */
+ 32, /* ordi_f */
+ 16, /* unordr_f */
+ 32, /* unordi_f */
+ 16, /* truncr_f_i */
+ 16, /* truncr_f_l */
+ 32, /* extr_f */
16, /* extr_d_f */
16, /* movr_f */
- 32, /* movi_f */
+ 16, /* movi_f */
16, /* ldr_f */
- 32, /* ldi_f */
+ 16, /* ldi_f */
16, /* ldxr_f */
- 32, /* ldxi_f */
+ 16, /* ldxi_f */
16, /* str_f */
- 32, /* sti_f */
+ 16, /* sti_f */
16, /* stxr_f */
- 32, /* stxi_f */
- 32, /* bltr_f */
- 64, /* blti_f */
- 32, /* bler_f */
- 64, /* blei_f */
- 32, /* beqr_f */
- 64, /* beqi_f */
- 32, /* bger_f */
- 64, /* bgei_f */
- 32, /* bgtr_f */
- 64, /* bgti_f */
- 32, /* bner_f */
- 64, /* bnei_f */
- 32, /* bunltr_f */
- 64, /* bunlti_f */
- 32, /* bunler_f */
- 64, /* bunlei_f */
- 80, /* buneqr_f */
- 112, /* buneqi_f */
- 32, /* bunger_f */
- 64, /* bungei_f */
- 32, /* bungtr_f */
- 64, /* bungti_f */
- 80, /* bltgtr_f */
- 112, /* bltgti_f */
- 32, /* bordr_f */
- 64, /* bordi_f */
- 32, /* bunordr_f */
- 64, /* bunordi_f */
+ 16, /* stxi_f */
+ 16, /* bltr_f */
+ 32, /* blti_f */
+ 16, /* bler_f */
+ 32, /* blei_f */
+ 16, /* beqr_f */
+ 32, /* beqi_f */
+ 16, /* bger_f */
+ 32, /* bgei_f */
+ 16, /* bgtr_f */
+ 32, /* bgti_f */
+ 16, /* bner_f */
+ 32, /* bnei_f */
+ 16, /* bunltr_f */
+ 32, /* bunlti_f */
+ 16, /* bunler_f */
+ 32, /* bunlei_f */
+ 32, /* buneqr_f */
+ 48, /* buneqi_f */
+ 16, /* bunger_f */
+ 32, /* bungei_f */
+ 16, /* bungtr_f */
+ 32, /* bungti_f */
+ 32, /* bltgtr_f */
+ 48, /* bltgti_f */
+ 16, /* bordr_f */
+ 32, /* bordi_f */
+ 16, /* bunordr_f */
+ 32, /* bunordi_f */
0, /* pushargr_f */
0, /* pushargi_f */
0, /* retr_f */
@@ -350,87 +350,87 @@
0, /* putargr_d */
0, /* putargi_d */
16, /* addr_d */
- 48, /* addi_d */
+ 32, /* addi_d */
16, /* subr_d */
- 48, /* subi_d */
- 48, /* rsbi_d */
+ 32, /* subi_d */
+ 32, /* rsbi_d */
16, /* mulr_d */
- 48, /* muli_d */
- 160, /* divr_d */
- 192, /* divi_d */
+ 32, /* muli_d */
+ 64, /* divr_d */
+ 80, /* divi_d */
16, /* negr_d */
16, /* absr_d */
- 80, /* sqrtr_d */
- 32, /* ltr_d */
- 64, /* lti_d */
- 32, /* ler_d */
- 64, /* lei_d */
- 32, /* eqr_d */
- 64, /* eqi_d */
- 32, /* ger_d */
- 64, /* gei_d */
- 32, /* gtr_d */
- 64, /* gti_d */
- 32, /* ner_d */
- 64, /* nei_d */
- 32, /* unltr_d */
- 64, /* unlti_d */
- 32, /* unler_d */
- 64, /* unlei_d */
- 48, /* uneqr_d */
- 96, /* uneqi_d */
- 32, /* unger_d */
- 64, /* ungei_d */
- 32, /* ungtr_d */
- 64, /* ungti_d */
- 48, /* ltgtr_d */
- 96, /* ltgti_d */
- 32, /* ordr_d */
- 64, /* ordi_d */
- 32, /* unordr_d */
- 64, /* unordi_d */
- 32, /* truncr_d_i */
- 32, /* truncr_d_l */
- 48, /* extr_d */
+ 32, /* sqrtr_d */
+ 16, /* ltr_d */
+ 32, /* lti_d */
+ 16, /* ler_d */
+ 32, /* lei_d */
+ 16, /* eqr_d */
+ 32, /* eqi_d */
+ 16, /* ger_d */
+ 32, /* gei_d */
+ 16, /* gtr_d */
+ 32, /* gti_d */
+ 16, /* ner_d */
+ 32, /* nei_d */
+ 16, /* unltr_d */
+ 32, /* unlti_d */
+ 16, /* unler_d */
+ 32, /* unlei_d */
+ 32, /* uneqr_d */
+ 48, /* uneqi_d */
+ 16, /* unger_d */
+ 32, /* ungei_d */
+ 16, /* ungtr_d */
+ 32, /* ungti_d */
+ 32, /* ltgtr_d */
+ 48, /* ltgti_d */
+ 16, /* ordr_d */
+ 32, /* ordi_d */
+ 16, /* unordr_d */
+ 32, /* unordi_d */
+ 16, /* truncr_d_i */
+ 16, /* truncr_d_l */
+ 32, /* extr_d */
16, /* extr_f_d */
16, /* movr_d */
- 32, /* movi_d */
+ 16, /* movi_d */
16, /* ldr_d */
- 32, /* ldi_d */
+ 16, /* ldi_d */
16, /* ldxr_d */
- 32, /* ldxi_d */
+ 16, /* ldxi_d */
16, /* str_d */
- 32, /* sti_d */
+ 16, /* sti_d */
16, /* stxr_d */
- 32, /* stxi_d */
- 32, /* bltr_d */
- 64, /* blti_d */
- 32, /* bler_d */
- 64, /* blei_d */
- 32, /* beqr_d */
- 64, /* beqi_d */
- 32, /* bger_d */
- 64, /* bgei_d */
- 32, /* bgtr_d */
- 64, /* bgti_d */
- 32, /* bner_d */
- 64, /* bnei_d */
- 32, /* bunltr_d */
- 64, /* bunlti_d */
- 32, /* bunler_d */
- 64, /* bunlei_d */
- 80, /* buneqr_d */
- 112, /* buneqi_d */
- 32, /* bunger_d */
- 64, /* bungei_d */
- 32, /* bungtr_d */
- 64, /* bungti_d */
- 80, /* bltgtr_d */
- 112, /* bltgti_d */
- 32, /* bordr_d */
- 64, /* bordi_d */
- 32, /* bunordr_d */
- 64, /* bunordi_d */
+ 16, /* stxi_d */
+ 16, /* bltr_d */
+ 32, /* blti_d */
+ 16, /* bler_d */
+ 32, /* blei_d */
+ 16, /* beqr_d */
+ 32, /* beqi_d */
+ 16, /* bger_d */
+ 32, /* bgei_d */
+ 16, /* bgtr_d */
+ 32, /* bgti_d */
+ 16, /* bner_d */
+ 32, /* bnei_d */
+ 16, /* bunltr_d */
+ 32, /* bunlti_d */
+ 16, /* bunler_d */
+ 32, /* bunlei_d */
+ 32, /* buneqr_d */
+ 48, /* buneqi_d */
+ 16, /* bunger_d */
+ 32, /* bungei_d */
+ 16, /* bungtr_d */
+ 32, /* bungti_d */
+ 32, /* bltgtr_d */
+ 48, /* bltgti_d */
+ 16, /* bordr_d */
+ 32, /* bordi_d */
+ 16, /* bunordr_d */
+ 32, /* bunordi_d */
0, /* pushargr_d */
0, /* pushargi_d */
0, /* retr_d */
@@ -445,19 +445,19 @@
0, /* movi_d_ww */
16, /* movr_d_w */
16, /* movi_d_w */
- 240, /* clor */
- 176, /* clzr */
- 176, /* ctor */
- 112, /* ctzr */
- 144, /* rbitr */
+ 96, /* clor */
+ 64, /* clzr */
+ 64, /* ctor */
+ 48, /* ctzr */
+ 64, /* rbitr */
16, /* popcntr */
- 48, /* lrotr */
- 48, /* lroti */
- 48, /* rrotr */
- 48, /* rroti */
+ 32, /* lrotr */
+ 32, /* lroti */
+ 32, /* rrotr */
+ 32, /* rroti */
16, /* extr */
16, /* extr_u */
- 48, /* depr */
+ 32, /* depr */
16, /* depi */
16, /* negi */
16, /* comi */
@@ -487,25 +487,25 @@
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 */
+ 48, /* qlshr */
+ 16, /* qlshi */
+ 48, /* qlshr_u */
+ 16, /* qlshi_u */
+ 48, /* qrshr */
+ 16, /* qrshi */
+ 48, /* qrshr_u */
+ 16, /* qrshi_u */
+ 384, /* unldr */
+ 64, /* unldi */
+ 384, /* unldr_u */
+ 64, /* unldi_u */
+ 192, /* unstr */
+ 64, /* unsti */
+ 384, /* unldr_x */
+ 64, /* unldi_x */
+ 208, /* unstr_x */
+ 64, /* unsti_x */
+ 16, /* movi_w_f */
+ 16, /* movi_w_d */
0, /* movi_ww_d */
#endif /* __WORDSIZE */
diff --git a/size.c b/size.c
index 1f31ed6..855e7bc 100644
--- a/size.c
+++ b/size.c
@@ -40,9 +40,14 @@ main(int argc, char *argv[])
fclose(fp);
max = 0;
- for (offset = 0; offset < jit_code_last_code; offset++)
+ for (offset = 0; offset < jit_code_last_code; offset++) {
+#if defined(__ia64__)
+ if (_szs[offset] > 16)
+ _szs[offset] = _szs[offset] / 3 + 16 & -16;
+#endif
if (max < _szs[offset])
max = _szs[offset];
+ }
if ((fp = fopen(JIT_SIZE_PATH, "w")) == NULL)
exit(-1);
generated by cgit v1.2.3 (git 2.39.1) at 2025年09月25日 18:56:46 +0000

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