gl_shader_decompiler: Implement ISETP_IMM instruction.

This commit is contained in:
bunnei 2018-06-05 23:01:51 -04:00
parent 0ff2929644
commit 0a49c46353
1 changed files with 9 additions and 8 deletions

View File

@ -1278,17 +1278,18 @@ private:
} }
case OpCode::Type::IntegerSetPredicate: { case OpCode::Type::IntegerSetPredicate: {
std::string op_a = regs.GetRegisterAsInteger(instr.gpr8, 0, instr.isetp.is_signed); std::string op_a = regs.GetRegisterAsInteger(instr.gpr8, 0, instr.isetp.is_signed);
std::string op_b;
std::string op_b{}; if (instr.is_b_imm) {
op_b += '(' + std::to_string(instr.alu.GetSignedImm20_20()) + ')';
ASSERT_MSG(!instr.is_b_imm, "ISETP_IMM not implemented"); } else {
if (instr.is_b_gpr) { if (instr.is_b_gpr) {
op_b += regs.GetRegisterAsInteger(instr.gpr20, 0, instr.isetp.is_signed); op_b += regs.GetRegisterAsInteger(instr.gpr20, 0, instr.isetp.is_signed);
} else { } else {
op_b += regs.GetUniform(instr.cbuf34.index, instr.cbuf34.offset, op_b += regs.GetUniform(instr.cbuf34.index, instr.cbuf34.offset,
GLSLRegister::Type::Integer); GLSLRegister::Type::Integer);
} }
}
using Tegra::Shader::Pred; using Tegra::Shader::Pred;
// We can't use the constant predicate as destination. // We can't use the constant predicate as destination.