HVX packets with Vx.tmp/Vx reg writes were incorrectly rejected.

Cc: Taylor Simpson <[email protected]>
Signed-off-by: Brian Cain <[email protected]>
---
 target/hexagon/translate.h | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/target/hexagon/translate.h b/target/hexagon/translate.h
index e17261761b2..7bc6207a08c 100644
--- a/target/hexagon/translate.h
+++ b/target/hexagon/translate.h
@@ -237,12 +237,13 @@ static inline void ctx_log_vreg_write(DisasContext *ctx,
             ctx->has_hvx_overlap = true;
         }
     }
-    if (!test_bit(rnum, ctx->vregs_written)) {
-        set_bit(rnum, ctx->vregs_written);
-    } else {
-        set_bit(rnum, ctx->vregs_multi_write);
-    }
+
     if (type != EXT_TMP) {
+        if (!test_bit(rnum, ctx->vregs_written)) {
+            set_bit(rnum, ctx->vregs_written);
+        } else {
+            set_bit(rnum, ctx->vregs_multi_write);
+        }
         if (!test_bit(rnum, ctx->vregs_updated)) {
             ctx->vreg_log[ctx->vreg_log_idx] = rnum;
             ctx->vreg_log_idx++;
@@ -263,8 +264,6 @@ static inline void ctx_log_vreg_write(DisasContext *ctx,
         set_bit(rnum, ctx->vregs_updated_tmp);
         if (is_predicated) {
             set_bit(rnum, ctx->predicated_tmp_vregs);
-        } else {
-            set_bit(rnum, ctx->vregs_uncond);
         }
     }
 }
-- 
2.34.1

Reply via email to