|
|
@ -930,20 +930,26 @@ private: |
|
|
if (instr.alu.lop.invert_b) |
|
|
if (instr.alu.lop.invert_b) |
|
|
imm = ~imm; |
|
|
imm = ~imm; |
|
|
|
|
|
|
|
|
|
|
|
std::string op_b = std::to_string(imm); |
|
|
|
|
|
|
|
|
switch (instr.alu.lop.operation) { |
|
|
switch (instr.alu.lop.operation) { |
|
|
case Tegra::Shader::LogicOperation::And: { |
|
|
case Tegra::Shader::LogicOperation::And: { |
|
|
regs.SetRegisterToInteger(instr.gpr0, true, 0, |
|
|
|
|
|
'(' + op_a + " & " + std::to_string(imm) + ')', 1, 1); |
|
|
|
|
|
|
|
|
regs.SetRegisterToInteger(instr.gpr0, true, 0, '(' + op_a + " & " + op_b + ')', |
|
|
|
|
|
1, 1); |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
case Tegra::Shader::LogicOperation::Or: { |
|
|
case Tegra::Shader::LogicOperation::Or: { |
|
|
regs.SetRegisterToInteger(instr.gpr0, true, 0, |
|
|
|
|
|
'(' + op_a + " | " + std::to_string(imm) + ')', 1, 1); |
|
|
|
|
|
|
|
|
regs.SetRegisterToInteger(instr.gpr0, true, 0, '(' + op_a + " | " + op_b + ')', |
|
|
|
|
|
1, 1); |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
case Tegra::Shader::LogicOperation::Xor: { |
|
|
case Tegra::Shader::LogicOperation::Xor: { |
|
|
regs.SetRegisterToInteger(instr.gpr0, true, 0, |
|
|
|
|
|
'(' + op_a + " ^ " + std::to_string(imm) + ')', 1, 1); |
|
|
|
|
|
|
|
|
regs.SetRegisterToInteger(instr.gpr0, true, 0, '(' + op_a + " ^ " + op_b + ')', |
|
|
|
|
|
1, 1); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
case Tegra::Shader::LogicOperation::PassB: { |
|
|
|
|
|
regs.SetRegisterToInteger(instr.gpr0, true, 0, op_b, 1, 1); |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
default: |
|
|
default: |
|
|
|