Shader/F2I: Implemented the F2I_C instruction variant.

This commit is contained in:
Subv 2018-08-15 09:16:35 -05:00
parent 11c221cc62
commit 5ef447cc0e
1 changed files with 10 additions and 2 deletions

View File

@ -1298,9 +1298,17 @@ private:
regs.SetRegisterToFloat(instr.gpr0, 0, op_a, 1, 1, instr.alu.saturate_d); regs.SetRegisterToFloat(instr.gpr0, 0, op_a, 1, 1, instr.alu.saturate_d);
break; break;
} }
case OpCode::Id::F2I_R: { case OpCode::Id::F2I_R:
case OpCode::Id::F2I_C: {
ASSERT_MSG(instr.conversion.src_size == Register::Size::Word, "Unimplemented"); ASSERT_MSG(instr.conversion.src_size == Register::Size::Word, "Unimplemented");
std::string op_a = regs.GetRegisterAsFloat(instr.gpr20); std::string op_a{};
if (instr.is_b_gpr) {
op_a = regs.GetRegisterAsFloat(instr.gpr20);
} else {
op_a = regs.GetUniform(instr.cbuf34.index, instr.cbuf34.offset,
GLSLRegister::Type::Float);
}
if (instr.conversion.abs_a) { if (instr.conversion.abs_a) {
op_a = "abs(" + op_a + ')'; op_a = "abs(" + op_a + ')';