|
@@ -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 + ')';
|