3
0
Fork 0
forked from suyu/suyu

shader: Stub ISBERD

This commit is contained in:
ReinUsesLisp 2021-04-11 21:33:18 -03:00 committed by ameerj
parent 2516829e4c
commit f712084147
3 changed files with 56 additions and 4 deletions

View file

@ -120,6 +120,7 @@ add_library(shader_recompiler STATIC
frontend/maxwell/translate/impl/integer_shift_right.cpp
frontend/maxwell/translate/impl/integer_short_multiply_add.cpp
frontend/maxwell/translate/impl/integer_to_integer_conversion.cpp
frontend/maxwell/translate/impl/internal_stage_buffer_entry_read.cpp
frontend/maxwell/translate/impl/load_constant.cpp
frontend/maxwell/translate/impl/load_constant.h
frontend/maxwell/translate/impl/load_effective_address.cpp

View file

@ -0,0 +1,55 @@
// Copyright 2021 yuzu Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "common/bit_field.h"
#include "common/common_types.h"
#include "shader_recompiler/frontend/maxwell/translate/impl/impl.h"
#pragma optimize("", off)
namespace Shader::Maxwell {
namespace {
enum class Mode : u64 {
Default,
Patch,
Prim,
Attr,
};
enum class Shift : u64 {
Default,
U16,
B32,
};
} // Anonymous namespace
void TranslatorVisitor::ISBERD(u64 insn) {
union {
u64 raw;
BitField<0, 8, IR::Reg> dest_reg;
BitField<8, 8, IR::Reg> src_reg;
BitField<31, 1, u64> skew;
BitField<32, 1, u64> o;
BitField<33, 2, Mode> mode;
BitField<47, 2, Shift> shift;
} const isberd{insn};
if (isberd.skew != 0) {
throw NotImplementedException("SKEW");
}
if (isberd.o != 0) {
throw NotImplementedException("O");
}
if (isberd.mode != Mode::Default) {
throw NotImplementedException("Mode {}", isberd.mode.Value());
}
if (isberd.shift != Shift::Default) {
throw NotImplementedException("Shift {}", isberd.shift.Value());
}
// LOG_WARNING(..., "ISBERD is stubbed");
X(isberd.dest_reg, X(isberd.src_reg));
}
} // namespace Shader::Maxwell

View file

@ -141,10 +141,6 @@ void TranslatorVisitor::IMUL32I(u64) {
ThrowNotImplemented(Opcode::IMUL32I);
}
void TranslatorVisitor::ISBERD(u64) {
ThrowNotImplemented(Opcode::ISBERD);
}
void TranslatorVisitor::JCAL(u64) {
ThrowNotImplemented(Opcode::JCAL);
}