aboutsummaryrefslogtreecommitdiff
path: root/src/shader_recompiler/frontend/ir/opcodes.cpp
diff options
context:
space:
mode:
authorlizzie <lizzie@eden-emu.dev>2026-07-07 19:50:56 +0200
committercrueter <crueter@eden-emu.dev>2026-07-07 19:50:56 +0200
commit072be286d1f784cdd8f2f975bb57454f42606ad3 (patch)
tree27c39cd7dc7755800f34554e5e788c0606862122 /src/shader_recompiler/frontend/ir/opcodes.cpp
parent66b073ab8d427d8fc06ffd715151f372cdde818c (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.cpp24
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;
}