diff options
| author | lizzie <lizzie@eden-emu.dev> | 2026-07-07 19:50:56 +0200 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2026-07-07 19:50:56 +0200 |
| commit | 072be286d1f784cdd8f2f975bb57454f42606ad3 (patch) | |
| tree | 27c39cd7dc7755800f34554e5e788c0606862122 /src/shader_recompiler/frontend/ir/opcodes.cpp | |
| parent | 66b073ab8d427d8fc06ffd715151f372cdde818c (diff) | |
[shader_recompiler] fix META_TABLE/NUM_ARGS table being duplicated per TU that included opcodes.h (#4180)
small oopsie; we dont need 6 copies of the same 22KB table
(removes 5*22 = 110 KB worth of redundant stuff)
this also enforces static on the types defined in the header so they arent memoized into a non-inlined value (aka. compiler just grabs value instead of well, yknow, assuming its a constant area)
Signed-off-by: lizzie <lizzie@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4180
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Diffstat (limited to 'src/shader_recompiler/frontend/ir/opcodes.cpp')
| -rw-r--r-- | src/shader_recompiler/frontend/ir/opcodes.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/shader_recompiler/frontend/ir/opcodes.cpp b/src/shader_recompiler/frontend/ir/opcodes.cpp index 9e4d9e65a8..7fb6694a9b 100644 --- a/src/shader_recompiler/frontend/ir/opcodes.cpp +++ b/src/shader_recompiler/frontend/ir/opcodes.cpp @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -5,6 +8,27 @@ namespace Shader::IR { +namespace Detail { + +OpcodeMeta META_TABLE[532] = { +#define OPCODE(name_token, type_token, ...) \ + { \ + .name{#name_token}, \ + .type = type_token, \ + .arg_types{__VA_ARGS__}, \ + }, +#include "opcodes.inc" +#undef OPCODE +}; + +u8 NUM_ARGS[532] = { +#define OPCODE(name_token, type_token, ...) u8(CalculateNumArgsOf(Opcode::name_token)), +#include "opcodes.inc" +#undef OPCODE +}; + +} + std::string_view NameOf(Opcode op) { return Detail::META_TABLE[static_cast<size_t>(op)].name; } |
