From 3f2295d99bc813be3dfba7135de0f96b4e8fbf85 Mon Sep 17 00:00:00 2001 From: Christian Gmeiner Date: Tue, 19 Mar 2024 10:43:01 +0100 Subject: [PATCH] isaspec: decode: Add libisaspec Create a static library that just contains isa_print(..). We need to do this step to make lto happy. Signed-off-by: Christian Gmeiner Reviewed-by: Rob Clark Part-of: --- src/compiler/isaspec/isaspec.c | 60 ++++++++++++++++++++++ src/compiler/isaspec/isaspec_decode_impl.c | 31 ----------- src/compiler/isaspec/meson.build | 7 +++ src/etnaviv/isa/meson.build | 1 + src/freedreno/afuc/meson.build | 1 + src/freedreno/isa/meson.build | 1 + 6 files changed, 70 insertions(+), 31 deletions(-) create mode 100644 src/compiler/isaspec/isaspec.c diff --git a/src/compiler/isaspec/isaspec.c b/src/compiler/isaspec/isaspec.c new file mode 100644 index 00000000000..adb1ed08fee --- /dev/null +++ b/src/compiler/isaspec/isaspec.c @@ -0,0 +1,60 @@ +/* + * Copyright © 2020 Google, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "isaspec.h" + +#include +#include + +#include "util/u_string.h" + +void +isa_print(struct isa_print_state *state, const char *fmt, ...) +{ + char *buffer; + va_list args; + int ret; + + va_start(args, fmt); + ret = vasprintf(&buffer, fmt, args); + va_end(args); + + if (ret != -1) { + const size_t len = strlen(buffer); + + for (size_t i = 0; i < len; i++) { + const char c = buffer[i]; + + fputc(c, state->out); + state->line_column++; + + if (c == '\n') { + state->line_column = 0; + } + } + + free(buffer); + + return; + } +} diff --git a/src/compiler/isaspec/isaspec_decode_impl.c b/src/compiler/isaspec/isaspec_decode_impl.c index 1e59e9996f1..bf396aba0f0 100644 --- a/src/compiler/isaspec/isaspec_decode_impl.c +++ b/src/compiler/isaspec/isaspec_decode_impl.c @@ -176,37 +176,6 @@ struct decode_state { char *errors[4]; }; -void -isa_print(struct isa_print_state *state, const char *fmt, ...) -{ - char *buffer; - va_list args; - int ret; - - va_start(args, fmt); - ret = vasprintf(&buffer, fmt, args); - va_end(args); - - if (ret != -1) { - const size_t len = strlen(buffer); - - for (size_t i = 0; i < len; i++) { - const char c = buffer[i]; - - fputc(c, state->out); - state->line_column++; - - if (c == '\n') { - state->line_column = 0; - } - } - - free(buffer); - - return; - } -} - static void display(struct decode_scope *scope); static void decode_error(struct decode_state *state, const char *fmt, ...) _util_printf_format(2,3); diff --git a/src/compiler/isaspec/meson.build b/src/compiler/isaspec/meson.build index 37b6721a097..bcb31331ffd 100644 --- a/src/compiler/isaspec/meson.build +++ b/src/compiler/isaspec/meson.build @@ -24,3 +24,10 @@ idep_isaspec_decode = declare_dependency(include_directories : include_directori prog_isaspec_encode = find_program('encode.py') isaspec_py_deps = files('isa.py') + +libisaspec = static_library( + 'isaspec', + ['isaspec.c'], + dependencies: [idep_mesautil], + gnu_symbol_visibility: 'hidden', +) diff --git a/src/etnaviv/isa/meson.build b/src/etnaviv/isa/meson.build index 76aa07dfdcb..b6a3d0c9578 100644 --- a/src/etnaviv/isa/meson.build +++ b/src/etnaviv/isa/meson.build @@ -28,6 +28,7 @@ _libetnaviv_decode = static_library( 'etnaviv_decode', decode_files, dependencies: [idep_mesautil, idep_isaspec_decode], + link_with: [libisaspec], include_directories: [ inc_include, inc_src, diff --git a/src/freedreno/afuc/meson.build b/src/freedreno/afuc/meson.build index b8e567164b2..a15e8b9f6c5 100644 --- a/src/freedreno/afuc/meson.build +++ b/src/freedreno/afuc/meson.build @@ -126,6 +126,7 @@ if cc.sizeof('size_t') > 4 ], link_with: [ libfreedreno_rnn, + libisaspec ], dependencies: [idep_mesautil, idep_isaspec_decode], build_by_default : with_tools.contains('freedreno'), diff --git a/src/freedreno/isa/meson.build b/src/freedreno/isa/meson.build index ae7a4e896dd..9f49d948337 100644 --- a/src/freedreno/isa/meson.build +++ b/src/freedreno/isa/meson.build @@ -51,6 +51,7 @@ _libir3decode = static_library( 'ir3decode', decode_files, dependencies: [idep_mesautil, idep_isaspec_decode], + link_with: [libisaspec], include_directories: [ inc_include, inc_src,