[Migrated] SPIR-V wishlist
Opened this issue · 5 comments
Issue automatically imported from old repo: EmbarkStudios/rust-gpu#17
Old labels: t: tracking issue
Originally creatd by Jasper-Bekkers on 2020-08-20T13:53:30Z
Tracking issue for features we think are missing or useful in to have in SPIR-V
OpTrap: trigger a breakpoint
Comment from Jasper-Bekkers (CONTRIBUTOR) on 2020-09-01T09:17:14Z
Noticed a few comments other things in the codebase yesterday:
- Checked math as native SPIR-V ops could help slightly more optimized checked math routines https://github.com/EmbarkStudios/rust-gpu/blob/f79ca6cfef6316a516f366cfed3d248ee5d387ec/rustc_codegen_spirv/src/builder/builder_methods.rs#L218-L226
- Saturating math ops (already supported by some GPU ISAs - so should be easier to drive adoption for): https://github.com/EmbarkStudios/rust-gpu/blob/17814d69d1b2ddf6976357bd5a313e849883b7d6/rustc_codegen_spirv/src/builder/mod.rs#L350-L360
- Equivalent of
llvm.expect: https://github.com/EmbarkStudios/rust-gpu/blob/17814d69d1b2ddf6976357bd5a313e849883b7d6/rustc_codegen_spirv/src/builder/mod.rs#L386-L390 - Equivalent of
llvm.sideeffects: https://github.com/EmbarkStudios/rust-gpu/blob/17814d69d1b2ddf6976357bd5a313e849883b7d6/rustc_codegen_spirv/src/builder/mod.rs#L391-L395 - Equivalent of
llvm.assume: https://github.com/EmbarkStudios/rust-gpu/blob/17814d69d1b2ddf6976357bd5a313e849883b7d6/rustc_codegen_spirv/src/builder/mod.rs#L382-L385
Comment from khyperia (CONTRIBUTOR) on 2020-09-01T12:30:36Z
For the "equivalent of llvm.*", there are a lot of these, those are just the ones that have been hit so far - I've just been JITting them into the codebase. For a reasonably full list, look at this file - for example, llvm.expect.i1 (sym::likely/sym::unlikely), llvm.debugtrap (sym::breakpoint), and so forth. (including llvm.trap (sym::abort), which was already mentioned at the start of this thread)
Comment from Jasper-Bekkers (CONTRIBUTOR) on 2020-09-11T16:21:20Z
- Potentially request OpControlBarrier for non-uniform controlflow (useful for #29)
Comment from nhaehnle on 2020-09-11T16:23:55Z
* Potentially request OpControlBarrier for non-uniform controlflow (useful for #29)
To clarify, for #29 the thinking is that OpControlBarrier without undefined behavior may be useful. This would be done by making the behavior a guaranteed hang when it's not executed in uniform control flow...
Comment from Jasper-Bekkers (CONTRIBUTOR) on 2020-10-13T15:43:20Z
@khyperia
not only is this legal spir-v, it is unspecified what the return value is (like, it's not specified as undefined, it's unspecified)
%f_ = OpFunction %int None %7
%9 = OpLabel
%x = OpVariable %_ptr_Function_int Function
%12 = OpLoad %int %x
OpReturnValue %12
OpFunctionEnd
can we get this fixed in the spec, please?
this is equivalent to the glsl
int f() {
int x; // explicitly uninitialized
return x;
}