diff options
| author | bjorn3 <17426603+bjorn3@users.noreply.github.com> | 2022-11-03 18:10:28 +0000 |
|---|---|---|
| committer | bjorn3 <17426603+bjorn3@users.noreply.github.com> | 2022-12-01 17:45:59 +0000 |
| commit | 3df425e11e4cef5f9c4c08cd545db2bffdbb97bd (patch) | |
| tree | 604b9cf328002c4fe37ece4a96ec768433e09830 /src | |
| parent | 83dc7d1a123d2b2e0b0b84aa3d0ae6dc4a59fd4e (diff) | |
| download | rust-3df425e11e4cef5f9c4c08cd545db2bffdbb97bd.tar.gz rust-3df425e11e4cef5f9c4c08cd545db2bffdbb97bd.zip | |
bswap.i128 is now supported
Diffstat (limited to 'src')
| -rw-r--r-- | src/intrinsics/mod.rs | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/src/intrinsics/mod.rs b/src/intrinsics/mod.rs index 76fc399097a..7a380acf798 100644 --- a/src/intrinsics/mod.rs +++ b/src/intrinsics/mod.rs @@ -636,16 +636,10 @@ fn codegen_regular_intrinsic_call<'tcx>( intrinsic_args!(fx, args => (arg); intrinsic); let val = arg.load_scalar(fx); - let res = match fx.bcx.func.dfg.value_type(val) { - types::I8 => val, - types::I128 => { - // FIXME(bytecodealliance/wasmtime#1092) bswap.i128 is not yet implemented - let (lsb, msb) = fx.bcx.ins().isplit(val); - let lsb_swap = fx.bcx.ins().bswap(lsb); - let msb_swap = fx.bcx.ins().bswap(msb); - fx.bcx.ins().iconcat(msb_swap, lsb_swap) - } - _ => fx.bcx.ins().bswap(val), + let res = if fx.bcx.func.dfg.value_type(val) == types::I8 { + val + } else { + fx.bcx.ins().bswap(val) }; let res = CValue::by_val(res, arg.layout()); ret.write_cvalue(fx, res); |
