Skip to content

Commit 7f72f25

Browse files
committed
subgroup: added non group-op tests
1 parent d3a91ee commit 7f72f25

6 files changed

+75
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// build-pass
2+
// compile-flags: -C target-feature=+GroupNonUniform,+GroupNonUniformBallot,+ext:SPV_KHR_vulkan_memory_model
3+
// compile-flags: -C llvm-args=--disassemble-fn=subgroup_non_uniform_ballot::subgroup_non_uniform_ballot
4+
5+
use spirv_std::spirv;
6+
7+
unsafe fn subgroup_non_uniform_ballot(predicate: bool) -> bool {
8+
let ballot = spirv_std::arch::subgroup_non_uniform_ballot(predicate);
9+
spirv_std::arch::subgroup_non_uniform_inverse_ballot(ballot)
10+
}
11+
12+
#[spirv(compute(threads(1, 1, 1)))]
13+
pub fn main() {
14+
unsafe {
15+
subgroup_non_uniform_ballot(true);
16+
}
17+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
%1 = OpFunction %2 None %3
2+
%4 = OpFunctionParameter %2
3+
%5 = OpLabel
4+
OpLine %6 376 8
5+
%7 = OpGroupNonUniformBallot %8 %9 %4
6+
OpLine %6 412 8
7+
%10 = OpGroupNonUniformInverseBallot %2 %9 %7
8+
OpNoLine
9+
OpReturnValue %10
10+
OpFunctionEnd
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// build-pass
2+
// compile-flags: -C target-feature=+GroupNonUniform,+GroupNonUniformBallot,+ext:SPV_KHR_vulkan_memory_model
3+
// compile-flags: -C llvm-args=--disassemble-fn=subgroup_non_uniform_broadcast_first::subgroup_non_uniform_broadcast_first
4+
5+
use glam::Vec3;
6+
use spirv_std::spirv;
7+
8+
unsafe fn subgroup_non_uniform_broadcast_first(vec: Vec3) -> Vec3 {
9+
spirv_std::arch::subgroup_non_uniform_broadcast_first::<Vec3>(vec)
10+
}
11+
12+
#[spirv(compute(threads(1, 1, 1)))]
13+
pub fn main() {
14+
unsafe {
15+
subgroup_non_uniform_broadcast_first(Vec3::new(1., 2., 3.));
16+
}
17+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
%1 = OpFunction %2 None %3
2+
%4 = OpFunctionParameter %2
3+
%5 = OpLabel
4+
OpLine %6 343 8
5+
%7 = OpGroupNonUniformBroadcastFirst %2 %8 %4
6+
OpNoLine
7+
OpReturnValue %7
8+
OpFunctionEnd
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// build-pass
2+
// compile-flags: -C target-feature=+GroupNonUniform,+ext:SPV_KHR_vulkan_memory_model
3+
// compile-flags: -C llvm-args=--disassemble-fn=subgroup_non_uniform_elect::subgroup_non_uniform_elect
4+
5+
use spirv_std::spirv;
6+
7+
unsafe fn subgroup_non_uniform_elect() -> bool {
8+
spirv_std::arch::subgroup_non_uniform_elect()
9+
}
10+
11+
#[spirv(compute(threads(1, 1, 1)))]
12+
pub fn main() {
13+
unsafe {
14+
subgroup_non_uniform_elect();
15+
}
16+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
%1 = OpFunction %2 None %3
2+
%4 = OpLabel
3+
OpLine %5 178 8
4+
%6 = OpGroupNonUniformElect %2 %7
5+
OpNoLine
6+
OpReturnValue %6
7+
OpFunctionEnd

0 commit comments

Comments
 (0)