rust-gpu/tests/ui/dis/ptr_read.rs
Sylvester Hesp c3a9b9fd3e
Migration from register_attr to register_tool (#926)
* Accept `#[rust_gpu::spirv()]` attributes rather than `#[spirv()]` in backend
* Implemented `#[spirv(..)]` proc macro attribute for all platforms that conditionally translates to `#[rust_gpu::spirv()]` based on platform
* Changed `SpirvBuilder` to always apply `register_tool(rust_gpu)` attribute to shader crates
* Updated docs
* Added changelog
2022-10-19 09:50:24 +00:00

18 lines
566 B
Rust

// build-pass
// compile-flags: -C llvm-args=--disassemble-fn=ptr_read::copy_via_raw_ptr
use spirv_std::spirv;
fn copy_via_raw_ptr(src: &f32, dst: &mut f32) {
unsafe { *dst = core::ptr::read(src) }
}
#[spirv(fragment)]
pub fn main(i: f32, o: &mut f32) {
copy_via_raw_ptr(&i, o);
// FIXME(eddyb) above call results in inlining `copy_via_raw_ptr`,
// due to the to `Output` storage classe, so to get the disassembled
// function we also need `Function`-local pointers:
let (src, mut dst) = (0.0, 0.0);
copy_via_raw_ptr(&src, &mut dst);
}