On 11/19/21 7:13 AM, Song Gao wrote:
+static bool gen_fload_imm(DisasContext *ctx, arg_fr_i *a,
+                          MemOp mop, bool nanbox)

Don't pass nanbox, as it can be determined from mop.

I think you should split out

static void maybe_nanbox_load(TCGv freg, MemOp mop)
{
    if ((mop & MO_SIZE) == MO_32) {
        gen_nanbox_s(freg, freg);
    }
}

for use in the 4 different fload functions.

+static bool gen_fstore_imm(DisasContext *ctx, arg_fr_i *a,
+                           MemOp mop, bool nanbox)

Don't pass nanbox, because it's useless for stores.

+    if (nanbox) {
+        gen_nanbox_s(cpu_fpr[a->fd], cpu_fpr[a->fd]);
+    }

(1) nanboxing not needed for store,
(2) incorrect to modify fd.

+static bool gen_fload_tl(DisasContext *ctx, arg_frr *a,
+                         MemOp mop, bool nanbox)

Similarly.

Since the integer version is called gen_loadx, should this one be called 
gen_floadx?

+static bool gen_fstore_tl(DisasContext *ctx, arg_frr *a,
+                          MemOp mop, bool nanbox)
...
+static bool gen_fload_gt(DisasContext *ctx, arg_frr *a,
+                         MemOp mop, bool nanbox)
...
+static bool gen_fstore_gt(DisasContext *ctx, arg_frr *a,
+                          MemOp mop, bool nanbox)
...
+static bool gen_fload_le(DisasContext *ctx, arg_frr *a,
+                         MemOp mop, bool nanbox)
...
+static bool gen_fstore_le(DisasContext *ctx, arg_frr *a,
+                          MemOp mop, bool nanbox)

Simiarly.

+TRANS(fld_s, gen_fload_imm, MO_TESL, true)

Use TEUL for everything here, because you don't need sign extension.


r~

Reply via email to