On 7/20/21 11:53 PM, Song Gao wrote:
+/* Fixed point shift operation instruction translation */
+static bool trans_sll_w(DisasContext *ctx, arg_sll_w *a)
+{
+ TCGv t0, t1;
+ TCGv Rd = cpu_gpr[a->rd];
+
+ if (a->rd == 0) {
+ /* Nop */
+ return true;
+ }
+
+ t0 = tcg_temp_new();
+ t1 = get_gpr(a->rj);
+
+ gen_load_gpr(t0, a->rk);
+
+ tcg_gen_andi_tl(t0, t0, 0x1f);
+ tcg_gen_shl_tl(t0, t1, t0);
+ tcg_gen_ext32s_tl(Rd, t0);
+
+ tcg_temp_free(t0);
+
+ return true;
+}
Again, you should be using common helper functions for this instead of replicating the
same pattern 16 times.
r~