Hi Richard,

> On 8/20/25 04:21, Kohei Tokunaga wrote:
> > +static void tcg_wasm_out_bswap64(
> > +    TCGContext *s, TCGReg dest, TCGReg src)
> > +{
> > +    tcg_wasm_out_op_idx(s, OPC_GLOBAL_GET, REG_IDX(src));
> > +    tcg_wasm_out_op_const(s, OPC_I64_CONST, 32);
> > +    tcg_wasm_out_op(s, OPC_I64_ROTR);
> > +    tcg_wasm_out_op_idx(s, OPC_LOCAL_SET, TMP64_LOCAL_0_IDX);
> > +
> > +    tcg_wasm_out_op_idx(s, OPC_LOCAL_GET, TMP64_LOCAL_0_IDX);
> > +    tcg_wasm_out_op_const(s, OPC_I64_CONST, 0xff000000ff000000);
> > +    tcg_wasm_out_op(s, OPC_I64_AND);
> > +    tcg_wasm_out_op_const(s, OPC_I64_CONST, 24);
> > +    tcg_wasm_out_op(s, OPC_I64_SHR_U);
> > +
> > +    tcg_wasm_out_op_idx(s, OPC_LOCAL_GET, TMP64_LOCAL_0_IDX);
> > +    tcg_wasm_out_op_const(s, OPC_I64_CONST, 0x00ff000000ff0000);
> > +    tcg_wasm_out_op(s, OPC_I64_AND);
> > +    tcg_wasm_out_op_const(s, OPC_I64_CONST, 8);
> > +    tcg_wasm_out_op(s, OPC_I64_SHR_U);
> > +
> > +    tcg_wasm_out_op(s, OPC_I64_OR);
> > +
> > +    tcg_wasm_out_op_idx(s, OPC_LOCAL_GET, TMP64_LOCAL_0_IDX);
> > +    tcg_wasm_out_op_const(s, OPC_I64_CONST, 0x0000ff000000ff00);
> > +    tcg_wasm_out_op(s, OPC_I64_AND);
> > +    tcg_wasm_out_op_const(s, OPC_I64_CONST, 8);
> > +    tcg_wasm_out_op(s, OPC_I64_SHL);
> > +
> > +    tcg_wasm_out_op_idx(s, OPC_LOCAL_GET, TMP64_LOCAL_0_IDX);
> > +    tcg_wasm_out_op_const(s, OPC_I64_CONST, 0x000000ff000000ff);
> > +    tcg_wasm_out_op(s, OPC_I64_AND);
> > +    tcg_wasm_out_op_const(s, OPC_I64_CONST, 24);
> > +    tcg_wasm_out_op(s, OPC_I64_SHL);
> > +
> > +    tcg_wasm_out_op(s, OPC_I64_OR);
> > +
> > +    tcg_wasm_out_op(s, OPC_I64_OR);
> > +    tcg_wasm_out_op_idx(s, OPC_GLOBAL_SET, REG_IDX(dest));
> > +}
>
> Is this any better than the default expansion?

Thank you for pointing this out. I think it can rely on the the default
expansion, so I'll remove it in the next version of the patch series.

Regards,
Kohei

Reply via email to