mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-10-06 22:10:49 +00:00
312c1cc0f6
Function polymorphism where it wasn't needed? especially on tight code loops like translating code and whatnot? You may think the compiler was fine with this but nah, it just made codegen for all those paths; I didn't check LTO but I'd assume it behaves the same (since the "black box" from most walkers suck) - basically bunch of code that isn't longer used Also uniformly declaring all functions (i.e same args, return value) makes the entire switch statment way nicer Signed-off-by: lizzie lizzie@eden-emu.dev Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2972 Reviewed-by: crueter <crueter@eden-emu.dev> Reviewed-by: MaranBr <maranbr@eden-emu.dev> Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
290 lines
6.0 KiB
C++
290 lines
6.0 KiB
C++
// SPDX-FileCopyrightText: Copyright 2025 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
|
|
|
|
#include "common/common_types.h"
|
|
#include "shader_recompiler/exception.h"
|
|
#include "shader_recompiler/frontend/maxwell/opcodes.h"
|
|
#include "shader_recompiler/frontend/maxwell/translate/impl/impl.h"
|
|
|
|
namespace Shader::Maxwell {
|
|
|
|
[[noreturn]] static void ThrowNotImplemented(Opcode opcode) {
|
|
throw NotImplementedException("Instruction {} is not implemented", opcode);
|
|
}
|
|
|
|
void TranslatorVisitor::ATOM_cas(u64) {
|
|
ThrowNotImplemented(Opcode::ATOM_cas);
|
|
}
|
|
|
|
void TranslatorVisitor::ATOMS_cas(u64) {
|
|
ThrowNotImplemented(Opcode::ATOMS_cas);
|
|
}
|
|
|
|
void TranslatorVisitor::B2R(u64) {
|
|
ThrowNotImplemented(Opcode::B2R);
|
|
}
|
|
|
|
void TranslatorVisitor::BPT(u64) {
|
|
ThrowNotImplemented(Opcode::BPT);
|
|
}
|
|
|
|
void TranslatorVisitor::BRA(u64) {
|
|
ThrowNotImplemented(Opcode::BRA);
|
|
}
|
|
|
|
void TranslatorVisitor::BRK(u64) {
|
|
ThrowNotImplemented(Opcode::BRK);
|
|
}
|
|
|
|
void TranslatorVisitor::CAL(u64) {
|
|
// CAL is a no-op
|
|
}
|
|
|
|
void TranslatorVisitor::CCTL(u64) {
|
|
ThrowNotImplemented(Opcode::CCTL);
|
|
}
|
|
|
|
void TranslatorVisitor::CCTLL(u64) {
|
|
ThrowNotImplemented(Opcode::CCTLL);
|
|
}
|
|
|
|
void TranslatorVisitor::CCTLT(u64) {
|
|
ThrowNotImplemented(Opcode::CCTLT);
|
|
}
|
|
|
|
void TranslatorVisitor::CONT(u64) {
|
|
ThrowNotImplemented(Opcode::CONT);
|
|
}
|
|
|
|
void TranslatorVisitor::CS2R(u64) {
|
|
ThrowNotImplemented(Opcode::CS2R);
|
|
}
|
|
|
|
void TranslatorVisitor::FCHK_reg(u64) {
|
|
ThrowNotImplemented(Opcode::FCHK_reg);
|
|
}
|
|
|
|
void TranslatorVisitor::FCHK_cbuf(u64) {
|
|
ThrowNotImplemented(Opcode::FCHK_cbuf);
|
|
}
|
|
|
|
void TranslatorVisitor::FCHK_imm(u64) {
|
|
ThrowNotImplemented(Opcode::FCHK_imm);
|
|
}
|
|
|
|
void TranslatorVisitor::GETCRSPTR(u64) {
|
|
ThrowNotImplemented(Opcode::GETCRSPTR);
|
|
}
|
|
|
|
void TranslatorVisitor::GETLMEMBASE(u64) {
|
|
ThrowNotImplemented(Opcode::GETLMEMBASE);
|
|
}
|
|
|
|
void TranslatorVisitor::IDE(u64) {
|
|
ThrowNotImplemented(Opcode::IDE);
|
|
}
|
|
|
|
void TranslatorVisitor::IDP_reg(u64) {
|
|
ThrowNotImplemented(Opcode::IDP_reg);
|
|
}
|
|
|
|
void TranslatorVisitor::IDP_imm(u64) {
|
|
ThrowNotImplemented(Opcode::IDP_imm);
|
|
}
|
|
|
|
void TranslatorVisitor::IMAD_reg(u64) {
|
|
ThrowNotImplemented(Opcode::IMAD_reg);
|
|
}
|
|
|
|
void TranslatorVisitor::IMAD_rc(u64) {
|
|
ThrowNotImplemented(Opcode::IMAD_rc);
|
|
}
|
|
|
|
void TranslatorVisitor::IMAD_cr(u64) {
|
|
ThrowNotImplemented(Opcode::IMAD_cr);
|
|
}
|
|
|
|
void TranslatorVisitor::IMAD_imm(u64) {
|
|
ThrowNotImplemented(Opcode::IMAD_imm);
|
|
}
|
|
|
|
void TranslatorVisitor::IMAD32I(u64) {
|
|
ThrowNotImplemented(Opcode::IMAD32I);
|
|
}
|
|
|
|
void TranslatorVisitor::IMADSP_reg(u64) {
|
|
ThrowNotImplemented(Opcode::IMADSP_reg);
|
|
}
|
|
|
|
void TranslatorVisitor::IMADSP_rc(u64) {
|
|
ThrowNotImplemented(Opcode::IMADSP_rc);
|
|
}
|
|
|
|
void TranslatorVisitor::IMADSP_cr(u64) {
|
|
ThrowNotImplemented(Opcode::IMADSP_cr);
|
|
}
|
|
|
|
void TranslatorVisitor::IMADSP_imm(u64) {
|
|
ThrowNotImplemented(Opcode::IMADSP_imm);
|
|
}
|
|
|
|
void TranslatorVisitor::IMUL_reg(u64) {
|
|
ThrowNotImplemented(Opcode::IMUL_reg);
|
|
}
|
|
|
|
void TranslatorVisitor::IMUL_cbuf(u64) {
|
|
ThrowNotImplemented(Opcode::IMUL_cbuf);
|
|
}
|
|
|
|
void TranslatorVisitor::IMUL_imm(u64) {
|
|
ThrowNotImplemented(Opcode::IMUL_imm);
|
|
}
|
|
|
|
void TranslatorVisitor::IMUL32I(u64) {
|
|
ThrowNotImplemented(Opcode::IMUL32I);
|
|
}
|
|
|
|
void TranslatorVisitor::JCAL(u64) {
|
|
ThrowNotImplemented(Opcode::JCAL);
|
|
}
|
|
|
|
void TranslatorVisitor::JMP(u64) {
|
|
ThrowNotImplemented(Opcode::JMP);
|
|
}
|
|
|
|
void TranslatorVisitor::KIL(u64) {
|
|
// KIL is a no-op
|
|
}
|
|
|
|
void TranslatorVisitor::LD(u64) {
|
|
ThrowNotImplemented(Opcode::LD);
|
|
}
|
|
|
|
void TranslatorVisitor::LEPC(u64) {
|
|
ThrowNotImplemented(Opcode::LEPC);
|
|
}
|
|
|
|
void TranslatorVisitor::LONGJMP(u64) {
|
|
ThrowNotImplemented(Opcode::LONGJMP);
|
|
}
|
|
|
|
void TranslatorVisitor::NOP(u64) {
|
|
// NOP is a no-op
|
|
}
|
|
|
|
void TranslatorVisitor::PBK(u64) {
|
|
// PBK is a no-op
|
|
}
|
|
|
|
void TranslatorVisitor::PCNT(u64) {
|
|
// PCNT is a no-op
|
|
}
|
|
|
|
void TranslatorVisitor::PEXIT(u64) {
|
|
ThrowNotImplemented(Opcode::PEXIT);
|
|
}
|
|
|
|
void TranslatorVisitor::PLONGJMP(u64) {
|
|
ThrowNotImplemented(Opcode::PLONGJMP);
|
|
}
|
|
|
|
void TranslatorVisitor::PRET(u64) {
|
|
ThrowNotImplemented(Opcode::PRET);
|
|
}
|
|
|
|
void TranslatorVisitor::PRMT_reg(u64) {
|
|
ThrowNotImplemented(Opcode::PRMT_reg);
|
|
}
|
|
|
|
void TranslatorVisitor::PRMT_rc(u64) {
|
|
ThrowNotImplemented(Opcode::PRMT_rc);
|
|
}
|
|
|
|
void TranslatorVisitor::PRMT_cr(u64) {
|
|
ThrowNotImplemented(Opcode::PRMT_cr);
|
|
}
|
|
|
|
void TranslatorVisitor::PRMT_imm(u64) {
|
|
ThrowNotImplemented(Opcode::PRMT_imm);
|
|
}
|
|
|
|
void TranslatorVisitor::R2B(u64) {
|
|
ThrowNotImplemented(Opcode::R2B);
|
|
}
|
|
|
|
void TranslatorVisitor::RAM(u64) {
|
|
LOG_WARNING(Shader, "(STUBBED) RAM Instruction");
|
|
}
|
|
|
|
void TranslatorVisitor::RET(u64) {
|
|
ThrowNotImplemented(Opcode::RET);
|
|
}
|
|
|
|
void TranslatorVisitor::RTT(u64) {
|
|
ThrowNotImplemented(Opcode::RTT);
|
|
}
|
|
|
|
void TranslatorVisitor::SAM(u64) {
|
|
LOG_WARNING(Shader, "(STUBBED) SAM Instruction");
|
|
}
|
|
|
|
void TranslatorVisitor::SETCRSPTR(u64) {
|
|
ThrowNotImplemented(Opcode::SETCRSPTR);
|
|
}
|
|
|
|
void TranslatorVisitor::SETLMEMBASE(u64) {
|
|
ThrowNotImplemented(Opcode::SETLMEMBASE);
|
|
}
|
|
|
|
void TranslatorVisitor::SSY(u64) {
|
|
// SSY is a no-op
|
|
}
|
|
|
|
void TranslatorVisitor::ST(u64) {
|
|
ThrowNotImplemented(Opcode::ST);
|
|
}
|
|
|
|
void TranslatorVisitor::STP(u64) {
|
|
ThrowNotImplemented(Opcode::STP);
|
|
}
|
|
|
|
void TranslatorVisitor::SUATOM_cas(u64) {
|
|
ThrowNotImplemented(Opcode::SUATOM_cas);
|
|
}
|
|
|
|
void TranslatorVisitor::SYNC(u64) {
|
|
ThrowNotImplemented(Opcode::SYNC);
|
|
}
|
|
|
|
void TranslatorVisitor::TXA(u64) {
|
|
ThrowNotImplemented(Opcode::TXA);
|
|
}
|
|
|
|
void TranslatorVisitor::VABSDIFF(u64) {
|
|
ThrowNotImplemented(Opcode::VABSDIFF);
|
|
}
|
|
|
|
void TranslatorVisitor::VABSDIFF4(u64) {
|
|
ThrowNotImplemented(Opcode::VABSDIFF4);
|
|
}
|
|
|
|
void TranslatorVisitor::VADD(u64) {
|
|
ThrowNotImplemented(Opcode::VADD);
|
|
}
|
|
|
|
void TranslatorVisitor::VSET(u64) {
|
|
ThrowNotImplemented(Opcode::VSET);
|
|
}
|
|
void TranslatorVisitor::VSHL(u64) {
|
|
ThrowNotImplemented(Opcode::VSHL);
|
|
}
|
|
|
|
void TranslatorVisitor::VSHR(u64) {
|
|
ThrowNotImplemented(Opcode::VSHR);
|
|
}
|
|
|
|
} // namespace Shader::Maxwell
|