On 3/5/21 5:26 AM, Bastian Koppelmann wrote:
@@ -6989,6 +6989,7 @@ static void decode_rrpw_extract_insert(DisasContext *ctx)
      uint32_t op2;
      int r1, r2, r3;
      int32_t pos, width;
+    TCGv temp;
op2 = MASK_OP_RRPW_OP2(ctx->opcode);
      r1 = MASK_OP_RRPW_S1(ctx->opcode);
@@ -7021,10 +7022,15 @@ static void decode_rrpw_extract_insert(DisasContext 
*ctx)
          break;
      case OPC2_32_RRPW_IMASK:
          CHECK_REG_PAIR(r3);
+        temp = tcg_temp_new();
+
          if (pos + width <= 32) {
-            tcg_gen_movi_tl(cpu_gpr_d[r3+1], ((1u << width) - 1) << pos);
+            tcg_gen_movi_tl(temp, ((1u << width) - 1) << pos);
              tcg_gen_shli_tl(cpu_gpr_d[r3], cpu_gpr_d[r2], pos);
+            tcg_gen_mov_tl(cpu_gpr_d[r3+1], temp);
          }
+
+        tcg_temp_free(temp);

You could restrict the variable to the if block.

Either way,
Reviewed-by: Richard Henderson <richard.hender...@linaro.org>

r~

Reply via email to