From a491e99f17cc978aee1dda67ee736fb53f50a6c4 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Fri, 22 Jul 2016 20:21:52 +0300 Subject: [PATCH] vp: ignore swizzles on ARL opcode (#4) --- rsx_decompiler/rsx_vp_decompiler.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rsx_decompiler/rsx_vp_decompiler.cpp b/rsx_decompiler/rsx_vp_decompiler.cpp index e14cf7b..918fbe7 100644 --- a/rsx_decompiler/rsx_vp_decompiler.cpp +++ b/rsx_decompiler/rsx_vp_decompiler.cpp @@ -189,9 +189,9 @@ namespace rsx return (instruction.data.d2.iaddrh << 3) | instruction.data.d3.iaddrl; } - integer_expr<1> address_register() + integer_expr<4> address_register() { - return{ context.address_register(instruction.data.d0.addr_reg_sel_1), context.address_mask(instruction.data.d0.addr_swz), true, 4 }; + return context.address_register(instruction.data.d0.addr_reg_sel_1); } float_point_expr<4> swizzle_as_dst(float_point_expr<4> arg) const @@ -667,7 +667,7 @@ namespace rsx case (u32)vec_opcode_t::max: return set_dst(base::max(src_swizzled_as_dst(0), src_swizzled_as_dst(1))); case (u32)vec_opcode_t::slt: return set_dst(compare(base::compare_function::less, src_swizzled_as_dst(0), src_swizzled_as_dst(1))); case (u32)vec_opcode_t::sge: return set_dst(compare(base::compare_function::greater_equal, src_swizzled_as_dst(0), src_swizzled_as_dst(1))); - case (u32)vec_opcode_t::arl: return typename base::writer_t{} += address_register() = base::clamp(integer_t<1>::ctor(src(0).x()), -512, 511); + case (u32)vec_opcode_t::arl: return typename base::writer_t{} += address_register() = base::clamp(integer_t<4>::ctor(src(0)), -512, 511); case (u32)vec_opcode_t::frc: return set_dst(base::fract(src_swizzled_as_dst(0))); case (u32)vec_opcode_t::flr: return set_dst(base::floor(src_swizzled_as_dst(0)));; case (u32)vec_opcode_t::seq: return set_dst(compare(base::compare_function::equal, src_swizzled_as_dst(0), src_swizzled_as_dst(1)));