Description
Hi there,
We are working on compiling go to wasm and run them universally on browsers. And I noticed that newer WebAssembly features (like bulk memory operations) are not universally supported across all browsers and environments.
For compiler like tinygo, it has LLVM as backend. Hence we can control the target machine code by setting llvm features like "-mbulk-memory" or "-mno-bulk-memory" to control whether we want a 0xFC extension. It might not be only limited to 0xFC, I believes it could potentially apply to all "extensional" opcodes whose prefix is 0xF ( like 0xFD SIMD).
In principle it would be nice if users could decide whether to use extension opcodes, by providing a feature set like LLVM does. But I do understand golang directly reduces to SSA so it might be quite different. Meanwhile, I'd like to know where to control the codegen so it would be really appreciated if someone could show me some pointers about it, regardless whether you want to support it or not : )