|
|
|
@ -80,7 +80,7 @@ u32 ShaderIR::DecodeMemory(BasicBlock& bb, const BasicBlock& code, u32 pc) { |
|
|
|
Node index = GetRegister(instr.gpr8); |
|
|
|
|
|
|
|
const Node op_a = |
|
|
|
GetConstBufferIndirect(instr.cbuf36.index, instr.cbuf36.offset + 0, index); |
|
|
|
GetConstBufferIndirect(instr.cbuf36.index, instr.cbuf36.GetOffset() + 0, index); |
|
|
|
|
|
|
|
switch (instr.ld_c.type.Value()) { |
|
|
|
case Tegra::Shader::UniformType::Single: |
|
|
|
@ -89,7 +89,7 @@ u32 ShaderIR::DecodeMemory(BasicBlock& bb, const BasicBlock& code, u32 pc) { |
|
|
|
|
|
|
|
case Tegra::Shader::UniformType::Double: { |
|
|
|
const Node op_b = |
|
|
|
GetConstBufferIndirect(instr.cbuf36.index, instr.cbuf36.offset + 4, index); |
|
|
|
GetConstBufferIndirect(instr.cbuf36.index, instr.cbuf36.GetOffset() + 4, index); |
|
|
|
|
|
|
|
SetTemporal(bb, 0, op_a); |
|
|
|
SetTemporal(bb, 1, op_b); |
|
|
|
@ -142,7 +142,7 @@ u32 ShaderIR::DecodeMemory(BasicBlock& bb, const BasicBlock& code, u32 pc) { |
|
|
|
ASSERT(cbuf != nullptr); |
|
|
|
const auto cbuf_offset_imm = std::get_if<ImmediateNode>(cbuf->GetOffset()); |
|
|
|
ASSERT(cbuf_offset_imm != nullptr); |
|
|
|
const auto cbuf_offset = cbuf_offset_imm->GetValue() * 4; |
|
|
|
const auto cbuf_offset = cbuf_offset_imm->GetValue(); |
|
|
|
|
|
|
|
bb.push_back(Comment( |
|
|
|
fmt::format("Base address is c[0x{:x}][0x{:x}]", cbuf->GetIndex(), cbuf_offset))); |
|
|
|
|