X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=deps%2Flightning%2Flib%2Fjit_size.c;h=b3e1caea85cbdbb206ea4b9b60f3d41f5caab33b;hb=24d91c0d04f99eed9a89e8d180a067e13ce8a0b2;hp=61f1aa4c5b4fc3fc5a3f00724726328e4f8e1db6;hpb=70575e81838e2c8d842dd28c3fc7fbb91b395061;p=pcsx_rearmed.git diff --git a/deps/lightning/lib/jit_size.c b/deps/lightning/lib/jit_size.c index 61f1aa4c..b3e1caea 100644 --- a/deps/lightning/lib/jit_size.c +++ b/deps/lightning/lib/jit_size.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013-2019 Free Software Foundation, Inc. + * Copyright (C) 2013-2022 Free Software Foundation, Inc. * * This file is part of GNU lightning. * @@ -28,7 +28,7 @@ */ static jit_int16_t _szs[jit_code_last_code] = { #if GET_JIT_SIZE -# define JIT_INSTR_MAX 256 +# define JIT_INSTR_MAX 512 #else # if defined(__i386__) || defined(__x86_64__) # include "jit_x86-sz.c" @@ -52,6 +52,8 @@ static jit_int16_t _szs[jit_code_last_code] = { # include "jit_alpha-sz.c" # elif defined(__riscv) # include "jit_riscv-sz.c" +# elif defined(__loongarch__) +# include "jit_loongarch-sz.c" # endif #endif }; @@ -101,11 +103,32 @@ _jit_get_size(jit_state_t *_jit) { jit_word_t size; jit_node_t *node; +# if __riscv && __WORDSIZE == 64 + jit_word_t extra = 0; +# endif - for (size = JIT_INSTR_MAX, node = _jitc->head; node; node = node->next) + for (size = JIT_INSTR_MAX, node = _jitc->head; node; node = node->next) { +# if __riscv && __WORDSIZE == 64 + /* Get estimative of extra memory for constants at end of code. */ + switch (node->code) { + case jit_code_movi: + case jit_code_movi_f: + case jit_code_movi_d: + case jit_code_jmpi: + case jit_code_calli: + extra += sizeof(jit_word_t); + default: + break; + } +# endif size += _szs[node->code]; + } +# if __riscv && __WORDSIZE == 64 + /* Heuristically only 20% of constants are unique. */ + size += extra / 5; +# endif - return ((size + 4095) & -4096); + return size; } #endif