mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-21 11:26:56 +02:00
shader: fix the Linux and macOS build (#285)
* fixed linux build - added correct uint long translation - replaced throw with non-constexpr function so that it fails in case of malformed table * shader: remove redundant opcode table comment * shader: use EXIT for invalid opcode tables --------- Co-authored-by: nmzik <Nmzik@mail.ru>
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
#ifndef EMULATOR_INCLUDE_EMULATOR_GRAPHICS_SHADER_RECOMPILER_DECOMPILER_OPCODETABLE_H_
|
#ifndef EMULATOR_INCLUDE_EMULATOR_GRAPHICS_SHADER_RECOMPILER_DECOMPILER_OPCODETABLE_H_
|
||||||
#define EMULATOR_INCLUDE_EMULATOR_GRAPHICS_SHADER_RECOMPILER_DECOMPILER_OPCODETABLE_H_
|
#define EMULATOR_INCLUDE_EMULATOR_GRAPHICS_SHADER_RECOMPILER_DECOMPILER_OPCODETABLE_H_
|
||||||
|
|
||||||
|
#include "common/assert.h"
|
||||||
#include "graphics/shader/recompiler/frontend/decode/ShaderDecoder.h"
|
#include "graphics/shader/recompiler/frontend/decode/ShaderDecoder.h"
|
||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
@@ -27,7 +28,7 @@ consteval auto MakeOpcodeTable(const Entry (&entries)[EntryCount]) {
|
|||||||
for (size_t i = 0; i < EntryCount; i++) {
|
for (size_t i = 0; i < EntryCount; i++) {
|
||||||
const auto encoding = entries[i].encoding;
|
const auto encoding = entries[i].encoding;
|
||||||
if (encoding >= EncodingCount || table.indices[encoding] != 0) {
|
if (encoding >= EncodingCount || table.indices[encoding] != 0) {
|
||||||
throw "invalid opcode table";
|
EXIT("invalid opcode table\n");
|
||||||
}
|
}
|
||||||
table.entries[i] = entries[i];
|
table.entries[i] = entries[i];
|
||||||
table.indices[encoding] = static_cast<uint16_t>(i + 1);
|
table.indices[encoding] = static_cast<uint16_t>(i + 1);
|
||||||
|
|||||||
@@ -321,7 +321,7 @@ IR::U64 Translator::ExpandWholeQuadMask(IR::U64 value) {
|
|||||||
const auto merged2 = ir.Emit(IR::ValueOpcode::BitwiseOr64, {merged1, shifted2});
|
const auto merged2 = ir.Emit(IR::ValueOpcode::BitwiseOr64, {merged1, shifted2});
|
||||||
const auto merged3 = ir.Emit(IR::ValueOpcode::BitwiseOr64, {merged2, shifted3});
|
const auto merged3 = ir.Emit(IR::ValueOpcode::BitwiseOr64, {merged2, shifted3});
|
||||||
const auto low_bits =
|
const auto low_bits =
|
||||||
ir.Emit(IR::ValueOpcode::BitwiseAnd64, {merged3, IR::Value(0x1111111111111111ull)});
|
ir.Emit(IR::ValueOpcode::BitwiseAnd64, {merged3, IR::Value(uint64_t {0x1111111111111111})});
|
||||||
return IR::U64(ir.Emit(IR::ValueOpcode::IMul64, {low_bits, IR::Value(uint64_t {0xfull})}));
|
return IR::U64(ir.Emit(IR::ValueOpcode::IMul64, {low_bits, IR::Value(uint64_t {0xfull})}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user