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