From 86f16a313c999d64b1ed2c1190fbfe43c701eda0 Mon Sep 17 00:00:00 2001 From: Firestar99 <31222740+Firestar99@users.noreply.github.com> Date: Sun, 13 Oct 2024 11:56:37 +0200 Subject: [PATCH 1/4] indirect command structs: added, mostly copied from ash --- crates/spirv-std/src/indirect_command.rs | 135 +++++++++++++++++++++++ crates/spirv-std/src/lib.rs | 1 + 2 files changed, 136 insertions(+) create mode 100644 crates/spirv-std/src/indirect_command.rs diff --git a/crates/spirv-std/src/indirect_command.rs b/crates/spirv-std/src/indirect_command.rs new file mode 100644 index 0000000000..02a1ee956f --- /dev/null +++ b/crates/spirv-std/src/indirect_command.rs @@ -0,0 +1,135 @@ +use glam::UVec3; + +#[doc = ""] +pub type DeviceSize = u64; +#[doc = ""] +pub type DeviceAddress = u64; + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default)] +#[doc = ""] +pub struct DrawIndirectCommand { + pub vertex_count: u32, + pub instance_count: u32, + pub first_vertex: u32, + pub first_instance: u32, +} + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default)] +#[doc = ""] +pub struct DrawIndexedIndirectCommand { + pub index_count: u32, + pub instance_count: u32, + pub first_index: u32, + pub vertex_offset: i32, + pub first_instance: u32, +} + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default)] +#[doc = ""] +pub struct DispatchIndirectCommand { + pub x: u32, + pub y: u32, + pub z: u32, +} + +impl From for DispatchIndirectCommand { + fn from(v: UVec3) -> Self { + Self { + x: v.x, + y: v.y, + z: v.z, + } + } +} + +impl From for UVec3 { + fn from(v: DispatchIndirectCommand) -> Self { + Self { + x: v.x, + y: v.y, + z: v.z, + } + } +} + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default)] +#[doc = ""] +pub struct DrawMeshTasksIndirectCommandEXT { + pub group_count_x: u32, + pub group_count_y: u32, + pub group_count_z: u32, +} + +impl From for DrawMeshTasksIndirectCommandEXT { + fn from(v: UVec3) -> Self { + Self { + group_count_x: v.x, + group_count_y: v.y, + group_count_z: v.z, + } + } +} + +impl From for UVec3 { + fn from(v: DrawMeshTasksIndirectCommandEXT) -> Self { + Self { + x: v.group_count_x, + y: v.group_count_y, + z: v.group_count_z, + } + } +} + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default)] +#[doc = ""] +pub struct TraceRaysIndirectCommandKHR { + pub width: u32, + pub height: u32, + pub depth: u32, +} + +impl From for TraceRaysIndirectCommandKHR { + fn from(v: UVec3) -> Self { + Self { + width: v.x, + height: v.y, + depth: v.z, + } + } +} + +impl From for UVec3 { + fn from(v: TraceRaysIndirectCommandKHR) -> Self { + Self { + x: v.width, + y: v.height, + z: v.depth, + } + } +} + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default)] +#[doc = ""] +#[must_use] +pub struct TraceRaysIndirectCommand2KHR { + pub raygen_shader_record_address: DeviceAddress, + pub raygen_shader_record_size: DeviceSize, + pub miss_shader_binding_table_address: DeviceAddress, + pub miss_shader_binding_table_size: DeviceSize, + pub miss_shader_binding_table_stride: DeviceSize, + pub hit_shader_binding_table_address: DeviceAddress, + pub hit_shader_binding_table_size: DeviceSize, + pub hit_shader_binding_table_stride: DeviceSize, + pub callable_shader_binding_table_address: DeviceAddress, + pub callable_shader_binding_table_size: DeviceSize, + pub callable_shader_binding_table_stride: DeviceSize, + pub width: u32, + pub height: u32, + pub depth: u32, +} diff --git a/crates/spirv-std/src/lib.rs b/crates/spirv-std/src/lib.rs index 175099537a..f50e719fe0 100644 --- a/crates/spirv-std/src/lib.rs +++ b/crates/spirv-std/src/lib.rs @@ -99,6 +99,7 @@ pub mod arch; pub mod byte_addressable_buffer; pub mod float; pub mod image; +pub mod indirect_command; pub mod integer; pub mod memory; pub mod number; From 6ea946e12e90b2df1d41252d565dbd5fbaa12b8e Mon Sep 17 00:00:00 2001 From: Firestar99 <31222740+Firestar99@users.noreply.github.com> Date: Sun, 13 Oct 2024 12:31:06 +0200 Subject: [PATCH 2/4] indirect command structs: fixed doc lints --- crates/spirv-std/src/indirect_command.rs | 63 +++++++++++++++++++++--- 1 file changed, 55 insertions(+), 8 deletions(-) diff --git a/crates/spirv-std/src/indirect_command.rs b/crates/spirv-std/src/indirect_command.rs index 02a1ee956f..de9cdf41e5 100644 --- a/crates/spirv-std/src/indirect_command.rs +++ b/crates/spirv-std/src/indirect_command.rs @@ -1,37 +1,58 @@ +//! Indirect command structs from vulkan + use glam::UVec3; -#[doc = ""] +/// pub type DeviceSize = u64; -#[doc = ""] + +/// pub type DeviceAddress = u64; +/// Structure specifying an indirect drawing command +/// +/// #[repr(C)] #[derive(Copy, Clone, Debug, Default)] -#[doc = ""] pub struct DrawIndirectCommand { + /// vertexCount is the number of vertices to draw. pub vertex_count: u32, + /// instanceCount is the number of instances to draw. pub instance_count: u32, + /// firstVertex is the index of the first vertex to draw. pub first_vertex: u32, + /// firstInstance is the instance ID of the first instance to draw. pub first_instance: u32, } +/// Structure specifying an indexed indirect drawing command +/// +/// #[repr(C)] #[derive(Copy, Clone, Debug, Default)] -#[doc = ""] pub struct DrawIndexedIndirectCommand { + /// indexCount is the number of vertices to draw. pub index_count: u32, + /// instanceCount is the number of instances to draw. pub instance_count: u32, + /// firstIndex is the base index within the index buffer. pub first_index: u32, + /// vertexOffset is the value added to the vertex index before indexing into the vertex buffer. pub vertex_offset: i32, + /// firstInstance is the instance ID of the first instance to draw. pub first_instance: u32, } +/// Structure specifying an indirect dispatching command +/// +/// #[repr(C)] #[derive(Copy, Clone, Debug, Default)] -#[doc = ""] pub struct DispatchIndirectCommand { + /// x is the number of local workgroups to dispatch in the X dimension. pub x: u32, + /// y is the number of local workgroups to dispatch in the Y dimension. pub y: u32, + /// z is the number of local workgroups to dispatch in the Z dimension. pub z: u32, } @@ -55,12 +76,17 @@ impl From for UVec3 { } } +/// Structure specifying a mesh tasks draw indirect command +/// +/// #[repr(C)] #[derive(Copy, Clone, Debug, Default)] -#[doc = ""] pub struct DrawMeshTasksIndirectCommandEXT { + /// groupCountX is the number of local workgroups to dispatch in the X dimension. pub group_count_x: u32, + /// groupCountY is the number of local workgroups to dispatch in the Y dimension. pub group_count_y: u32, + /// groupCountZ is the number of local workgroups to dispatch in the Z dimension. pub group_count_z: u32, } @@ -84,12 +110,17 @@ impl From for UVec3 { } } +/// Structure specifying the parameters of an indirect ray tracing command +/// +/// #[repr(C)] #[derive(Copy, Clone, Debug, Default)] -#[doc = ""] pub struct TraceRaysIndirectCommandKHR { + /// width is the width of the ray trace query dimensions. pub width: u32, + /// height is height of the ray trace query dimensions. pub height: u32, + /// depth is depth of the ray trace query dimensions. pub depth: u32, } @@ -113,23 +144,39 @@ impl From for UVec3 { } } +/// Structure specifying the parameters of an indirect trace ray command with indirect shader binding tables +/// +/// #[repr(C)] #[derive(Copy, Clone, Debug, Default)] -#[doc = ""] #[must_use] pub struct TraceRaysIndirectCommand2KHR { + /// raygenShaderRecordAddress is a `VkDeviceAddress` of the ray generation shader binding table record used by this command. pub raygen_shader_record_address: DeviceAddress, + /// raygenShaderRecordSize is a `VkDeviceSize` number of bytes corresponding to the ray generation shader binding table record at base address raygenShaderRecordAddress. pub raygen_shader_record_size: DeviceSize, + /// missShaderBindingTableAddress is a `VkDeviceAddress` of the first record in the miss shader binding table used by this command. pub miss_shader_binding_table_address: DeviceAddress, + /// missShaderBindingTableSize is a `VkDeviceSize` number of bytes corresponding to the total size of the miss shader binding table at missShaderBindingTableAddress that may be accessed by this command. pub miss_shader_binding_table_size: DeviceSize, + /// missShaderBindingTableStride is a `VkDeviceSize` number of bytes between records of the miss shader binding table. pub miss_shader_binding_table_stride: DeviceSize, + /// hitShaderBindingTableAddress is a `VkDeviceAddress` of the first record in the hit shader binding table used by this command. pub hit_shader_binding_table_address: DeviceAddress, + /// hitShaderBindingTableSize is a `VkDeviceSize` number of bytes corresponding to the total size of the hit shader binding table at hitShaderBindingTableAddress that may be accessed by this command. pub hit_shader_binding_table_size: DeviceSize, + /// hitShaderBindingTableStride is a `VkDeviceSize` number of bytes between records of the hit shader binding table. pub hit_shader_binding_table_stride: DeviceSize, + /// callableShaderBindingTableAddress is a `VkDeviceAddress` of the first record in the callable shader binding table used by this command. pub callable_shader_binding_table_address: DeviceAddress, + /// callableShaderBindingTableSize is a `VkDeviceSize` number of bytes corresponding to the total size of the callable shader binding table at callableShaderBindingTableAddress that may be accessed by this command. pub callable_shader_binding_table_size: DeviceSize, + /// callableShaderBindingTableStride is a `VkDeviceSize` number of bytes between records of the callable shader binding table. pub callable_shader_binding_table_stride: DeviceSize, + /// width is the width of the ray trace query dimensions. pub width: u32, + /// height is height of the ray trace query dimensions. pub height: u32, + /// depth is depth of the ray trace query dimensions. pub depth: u32, } From 6df3860ab760068bdd6b4e02a738e62ee94c36e8 Mon Sep 17 00:00:00 2001 From: Firestar99 <31222740+Firestar99@users.noreply.github.com> Date: Sun, 13 Oct 2024 13:48:06 +0200 Subject: [PATCH 3/4] project: add optional bytemuck dependency to mark structs as Pod --- Cargo.lock | 2 ++ crates/spirv-std/Cargo.toml | 2 ++ crates/spirv-std/src/arch/subgroup.rs | 2 ++ crates/spirv-std/src/indirect_command.rs | 7 ++++++- crates/spirv-std/src/memory.rs | 2 ++ crates/spirv-std/src/ray_tracing.rs | 2 ++ examples/shaders/shared/Cargo.toml | 2 +- 7 files changed, 17 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ee0abc2c3a..77d2c96589 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1102,6 +1102,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28091a37a5d09b555cb6628fd954da299b536433834f5b8e59eba78e0cbbf8a" dependencies = [ + "bytemuck", "libm", ] @@ -2490,6 +2491,7 @@ name = "spirv-std" version = "0.9.0" dependencies = [ "bitflags 1.3.2", + "bytemuck", "glam", "num-traits", "spirv-std-macros", diff --git a/crates/spirv-std/Cargo.toml b/crates/spirv-std/Cargo.toml index 00f6031dc5..44590a02c4 100644 --- a/crates/spirv-std/Cargo.toml +++ b/crates/spirv-std/Cargo.toml @@ -14,6 +14,7 @@ unexpected_cfgs = { level = "allow", check-cfg = ['cfg(target_arch, values("spir spirv-std-types.workspace = true spirv-std-macros.workspace = true bitflags = "1.2.1" +bytemuck = { version = "1.18.0", features = ["derive"], optional = true } [target.'cfg(target_arch = "spirv")'.dependencies] num-traits = { workspace = true, features = ["libm"] } @@ -25,3 +26,4 @@ glam = { workspace = true, default-features = true } [features] default = [] +bytemuck = ["dep:bytemuck", "glam/bytemuck"] diff --git a/crates/spirv-std/src/arch/subgroup.rs b/crates/spirv-std/src/arch/subgroup.rs index b587f0e0ad..564c9be859 100644 --- a/crates/spirv-std/src/arch/subgroup.rs +++ b/crates/spirv-std/src/arch/subgroup.rs @@ -13,7 +13,9 @@ const SUBGROUP: u32 = Scope::Subgroup as u32; /// `SubgroupMask` is a [`glam::UVec4`] representing a bitmask of all invocations within a subgroup. /// Mostly used in group ballot operations. +#[repr(transparent)] #[derive(Copy, Clone, Default, Eq, PartialEq)] +#[cfg_attr(feature = "bytemuck", derive(bytemuck::Zeroable, bytemuck::Pod))] pub struct SubgroupMask(pub glam::UVec4); /// Defines the class of group operation. diff --git a/crates/spirv-std/src/indirect_command.rs b/crates/spirv-std/src/indirect_command.rs index de9cdf41e5..4376ee04a1 100644 --- a/crates/spirv-std/src/indirect_command.rs +++ b/crates/spirv-std/src/indirect_command.rs @@ -13,6 +13,7 @@ pub type DeviceAddress = u64; /// #[repr(C)] #[derive(Copy, Clone, Debug, Default)] +#[cfg_attr(feature = "bytemuck", derive(bytemuck::Zeroable, bytemuck::Pod))] pub struct DrawIndirectCommand { /// vertexCount is the number of vertices to draw. pub vertex_count: u32, @@ -29,6 +30,7 @@ pub struct DrawIndirectCommand { /// #[repr(C)] #[derive(Copy, Clone, Debug, Default)] +#[cfg_attr(feature = "bytemuck", derive(bytemuck::Zeroable, bytemuck::Pod))] pub struct DrawIndexedIndirectCommand { /// indexCount is the number of vertices to draw. pub index_count: u32, @@ -47,6 +49,7 @@ pub struct DrawIndexedIndirectCommand { /// #[repr(C)] #[derive(Copy, Clone, Debug, Default)] +#[cfg_attr(feature = "bytemuck", derive(bytemuck::Zeroable, bytemuck::Pod))] pub struct DispatchIndirectCommand { /// x is the number of local workgroups to dispatch in the X dimension. pub x: u32, @@ -81,6 +84,7 @@ impl From for UVec3 { /// #[repr(C)] #[derive(Copy, Clone, Debug, Default)] +#[cfg_attr(feature = "bytemuck", derive(bytemuck::Zeroable, bytemuck::Pod))] pub struct DrawMeshTasksIndirectCommandEXT { /// groupCountX is the number of local workgroups to dispatch in the X dimension. pub group_count_x: u32, @@ -115,6 +119,7 @@ impl From for UVec3 { /// #[repr(C)] #[derive(Copy, Clone, Debug, Default)] +#[cfg_attr(feature = "bytemuck", derive(bytemuck::Zeroable, bytemuck::Pod))] pub struct TraceRaysIndirectCommandKHR { /// width is the width of the ray trace query dimensions. pub width: u32, @@ -149,7 +154,7 @@ impl From for UVec3 { /// #[repr(C)] #[derive(Copy, Clone, Debug, Default)] -#[must_use] +#[cfg_attr(feature = "bytemuck", derive(bytemuck::AnyBitPattern))] pub struct TraceRaysIndirectCommand2KHR { /// raygenShaderRecordAddress is a `VkDeviceAddress` of the ray generation shader binding table record used by this command. pub raygen_shader_record_address: DeviceAddress, diff --git a/crates/spirv-std/src/memory.rs b/crates/spirv-std/src/memory.rs index b8eccfaab3..8710482d15 100644 --- a/crates/spirv-std/src/memory.rs +++ b/crates/spirv-std/src/memory.rs @@ -29,6 +29,8 @@ pub enum Scope { bitflags::bitflags! { /// Memory semantics to determine how some operations should function - used when calling such /// configurable operations. + #[repr(transparent)] + #[cfg_attr(feature = "bytemuck", derive(bytemuck::Zeroable, bytemuck::Pod))] pub struct Semantics: u32 { /// No memory semantics. const NONE = 0; diff --git a/crates/spirv-std/src/ray_tracing.rs b/crates/spirv-std/src/ray_tracing.rs index 39803599b8..4c9f345f54 100644 --- a/crates/spirv-std/src/ray_tracing.rs +++ b/crates/spirv-std/src/ray_tracing.rs @@ -141,6 +141,8 @@ bitflags::bitflags! { /// `NO_OPAQUE`, `CULL_OPAQUE`, `CULL_NO_OPAQUE`, only one of /// `CULL_BACK_FACING_TRIANGLES` and `CULL_FRONT_FACING_TRIANGLES` may /// be set. + #[repr(transparent)] + #[cfg_attr(feature = "bytemuck", derive(bytemuck::Zeroable, bytemuck::Pod))] pub struct RayFlags: u32 { /// No flags specified. const NONE = 0; diff --git a/examples/shaders/shared/Cargo.toml b/examples/shaders/shared/Cargo.toml index 830b48d02c..66b69c4369 100644 --- a/examples/shaders/shared/Cargo.toml +++ b/examples/shaders/shared/Cargo.toml @@ -9,4 +9,4 @@ repository.workspace = true [dependencies] spirv-std = { workspace = true } -bytemuck = { version = "1.6.3", features = ["derive"] } +bytemuck = { version = "1.18.0", features = ["derive"] } From 6cc7f95376db29529cc23885a2fa170ebb8772b1 Mon Sep 17 00:00:00 2001 From: Firestar99 <31222740+Firestar99@users.noreply.github.com> Date: Sun, 13 Oct 2024 13:50:37 +0200 Subject: [PATCH 4/4] bless compiletest --- .../ui/arch/debug_printf_type_checking.stderr | 20 +++++++++---------- tests/ui/arch/subgroup/subgroup_ballot.stderr | 4 ++-- .../subgroup/subgroup_ballot_bit_count.stderr | 2 +- .../subgroup/subgroup_broadcast_first.stderr | 2 +- tests/ui/arch/subgroup/subgroup_elect.stderr | 2 +- .../subgroup/subgroup_i_add_clustered.stderr | 2 +- .../subgroup_i_add_exclusive_scan.stderr | 2 +- .../subgroup_i_add_inclusive_scan.stderr | 2 +- .../subgroup/subgroup_i_add_reduce.stderr | 2 +- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/tests/ui/arch/debug_printf_type_checking.stderr b/tests/ui/arch/debug_printf_type_checking.stderr index b027cc7b34..7213a02020 100644 --- a/tests/ui/arch/debug_printf_type_checking.stderr +++ b/tests/ui/arch/debug_printf_type_checking.stderr @@ -75,9 +75,9 @@ help: the return type of this call is `u32` due to the type of the argument pass | | | this argument influences the return type of `spirv_std` note: function defined here - --> $SPIRV_STD_SRC/lib.rs:138:8 + --> $SPIRV_STD_SRC/lib.rs:139:8 | -138 | pub fn debug_printf_assert_is_type(ty: T) -> T { +139 | pub fn debug_printf_assert_is_type(ty: T) -> T { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ = note: this error originates in the macro `debug_printf` (in Nightly builds, run with -Z macro-backtrace for more info) help: change the type of the numeric literal from `u32` to `f32` @@ -102,9 +102,9 @@ help: the return type of this call is `f32` due to the type of the argument pass | | | this argument influences the return type of `spirv_std` note: function defined here - --> $SPIRV_STD_SRC/lib.rs:138:8 + --> $SPIRV_STD_SRC/lib.rs:139:8 | -138 | pub fn debug_printf_assert_is_type(ty: T) -> T { +139 | pub fn debug_printf_assert_is_type(ty: T) -> T { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ = note: this error originates in the macro `debug_printf` (in Nightly builds, run with -Z macro-backtrace for more info) help: change the type of the numeric literal from `f32` to `u32` @@ -129,12 +129,12 @@ error[E0277]: the trait bound `{float}: Vector` is not satisfied > and 5 others note: required by a bound in `debug_printf_assert_is_vector` - --> $SPIRV_STD_SRC/lib.rs:145:8 + --> $SPIRV_STD_SRC/lib.rs:146:8 | -143 | pub fn debug_printf_assert_is_vector< +144 | pub fn debug_printf_assert_is_vector< | ----------------------------- required by a bound in this function -144 | TY: crate::scalar::Scalar, -145 | V: crate::vector::Vector, +145 | TY: crate::scalar::Scalar, +146 | V: crate::vector::Vector, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `debug_printf_assert_is_vector` = note: this error originates in the macro `debug_printf` (in Nightly builds, run with -Z macro-backtrace for more info) @@ -155,9 +155,9 @@ help: the return type of this call is `Vec2` due to the type of the argument pas | | | this argument influences the return type of `spirv_std` note: function defined here - --> $SPIRV_STD_SRC/lib.rs:138:8 + --> $SPIRV_STD_SRC/lib.rs:139:8 | -138 | pub fn debug_printf_assert_is_type(ty: T) -> T { +139 | pub fn debug_printf_assert_is_type(ty: T) -> T { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ = note: this error originates in the macro `debug_printf` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/tests/ui/arch/subgroup/subgroup_ballot.stderr b/tests/ui/arch/subgroup/subgroup_ballot.stderr index 13676166e7..b0e37a1e11 100644 --- a/tests/ui/arch/subgroup/subgroup_ballot.stderr +++ b/tests/ui/arch/subgroup/subgroup_ballot.stderr @@ -1,9 +1,9 @@ %1 = OpFunction %2 None %3 %4 = OpFunctionParameter %2 %5 = OpLabel -OpLine %6 379 8 +OpLine %6 381 8 %7 = OpGroupNonUniformBallot %8 %9 %4 -OpLine %6 415 8 +OpLine %6 417 8 %10 = OpGroupNonUniformInverseBallot %2 %9 %7 OpNoLine OpReturnValue %10 diff --git a/tests/ui/arch/subgroup/subgroup_ballot_bit_count.stderr b/tests/ui/arch/subgroup/subgroup_ballot_bit_count.stderr index 319877327e..4db8589b64 100644 --- a/tests/ui/arch/subgroup/subgroup_ballot_bit_count.stderr +++ b/tests/ui/arch/subgroup/subgroup_ballot_bit_count.stderr @@ -1,7 +1,7 @@ %1 = OpFunction %2 None %3 %4 = OpFunctionParameter %5 %6 = OpLabel -OpLine %7 491 8 +OpLine %7 493 8 %8 = OpGroupNonUniformBallotBitCount %2 %9 Reduce %4 OpNoLine OpReturnValue %8 diff --git a/tests/ui/arch/subgroup/subgroup_broadcast_first.stderr b/tests/ui/arch/subgroup/subgroup_broadcast_first.stderr index 84f784d58e..d0ce7e733b 100644 --- a/tests/ui/arch/subgroup/subgroup_broadcast_first.stderr +++ b/tests/ui/arch/subgroup/subgroup_broadcast_first.stderr @@ -1,7 +1,7 @@ %1 = OpFunction %2 None %3 %4 = OpFunctionParameter %2 %5 = OpLabel -OpLine %6 346 8 +OpLine %6 348 8 %7 = OpGroupNonUniformBroadcastFirst %2 %8 %4 OpNoLine OpReturnValue %7 diff --git a/tests/ui/arch/subgroup/subgroup_elect.stderr b/tests/ui/arch/subgroup/subgroup_elect.stderr index 73bf0b2778..b142160f81 100644 --- a/tests/ui/arch/subgroup/subgroup_elect.stderr +++ b/tests/ui/arch/subgroup/subgroup_elect.stderr @@ -1,6 +1,6 @@ %1 = OpFunction %2 None %3 %4 = OpLabel -OpLine %5 181 8 +OpLine %5 183 8 %6 = OpGroupNonUniformElect %2 %7 OpNoLine OpReturnValue %6 diff --git a/tests/ui/arch/subgroup/subgroup_i_add_clustered.stderr b/tests/ui/arch/subgroup/subgroup_i_add_clustered.stderr index f52c1c0632..df82e0a5c5 100644 --- a/tests/ui/arch/subgroup/subgroup_i_add_clustered.stderr +++ b/tests/ui/arch/subgroup/subgroup_i_add_clustered.stderr @@ -1,7 +1,7 @@ %1 = OpFunction %2 None %3 %4 = OpFunctionParameter %2 %5 = OpLabel -OpLine %6 782 8 +OpLine %6 784 8 %7 = OpGroupNonUniformIAdd %2 %8 ClusteredReduce %4 %9 OpNoLine OpReturnValue %7 diff --git a/tests/ui/arch/subgroup/subgroup_i_add_exclusive_scan.stderr b/tests/ui/arch/subgroup/subgroup_i_add_exclusive_scan.stderr index bf7dd9f2b9..1f496bf279 100644 --- a/tests/ui/arch/subgroup/subgroup_i_add_exclusive_scan.stderr +++ b/tests/ui/arch/subgroup/subgroup_i_add_exclusive_scan.stderr @@ -1,7 +1,7 @@ %1 = OpFunction %2 None %3 %4 = OpFunctionParameter %2 %5 = OpLabel -OpLine %6 741 8 +OpLine %6 743 8 %7 = OpGroupNonUniformIAdd %2 %8 ExclusiveScan %4 OpNoLine OpReturnValue %7 diff --git a/tests/ui/arch/subgroup/subgroup_i_add_inclusive_scan.stderr b/tests/ui/arch/subgroup/subgroup_i_add_inclusive_scan.stderr index cb69054815..15694c1f66 100644 --- a/tests/ui/arch/subgroup/subgroup_i_add_inclusive_scan.stderr +++ b/tests/ui/arch/subgroup/subgroup_i_add_inclusive_scan.stderr @@ -1,7 +1,7 @@ %1 = OpFunction %2 None %3 %4 = OpFunctionParameter %2 %5 = OpLabel -OpLine %6 741 8 +OpLine %6 743 8 %7 = OpGroupNonUniformIAdd %2 %8 InclusiveScan %4 OpNoLine OpReturnValue %7 diff --git a/tests/ui/arch/subgroup/subgroup_i_add_reduce.stderr b/tests/ui/arch/subgroup/subgroup_i_add_reduce.stderr index 6501d5ce1d..fe9ead48a9 100644 --- a/tests/ui/arch/subgroup/subgroup_i_add_reduce.stderr +++ b/tests/ui/arch/subgroup/subgroup_i_add_reduce.stderr @@ -1,7 +1,7 @@ %1 = OpFunction %2 None %3 %4 = OpFunctionParameter %2 %5 = OpLabel -OpLine %6 741 8 +OpLine %6 743 8 %7 = OpGroupNonUniformIAdd %2 %8 Reduce %4 OpNoLine OpReturnValue %7