shader: Stub ISBERD
This commit is contained in:
		@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
@@ -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);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user