Skip to content

Commit f6989a7

Browse files
committed
count_ones: add failing tests for count_ones and bit_reverse
1 parent 1fb0301 commit f6989a7

File tree

2 files changed

+138
-0
lines changed

2 files changed

+138
-0
lines changed

tests/ui/lang/u32/bit_reverse.rs

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
// Test all trailing and leading zeros. No need to test ones, they just call the zero variant with !value
2+
3+
// build-pass
4+
5+
use spirv_std::spirv;
6+
7+
#[spirv(fragment)]
8+
pub fn count_zeros_u8(
9+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &u8,
10+
out: &mut u8,
11+
) {
12+
*out = u8::reverse_bits(*buffer);
13+
}
14+
15+
#[spirv(fragment)]
16+
pub fn count_zeros_u16(
17+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &u16,
18+
out: &mut u16,
19+
) {
20+
*out = u16::reverse_bits(*buffer);
21+
}
22+
23+
#[spirv(fragment)]
24+
pub fn count_zeros_u32(
25+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &u32,
26+
out: &mut u32,
27+
) {
28+
*out = u32::reverse_bits(*buffer);
29+
}
30+
31+
#[spirv(fragment)]
32+
pub fn count_zeros_u64(
33+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &u64,
34+
out: &mut u64,
35+
) {
36+
*out = u64::reverse_bits(*buffer);
37+
}
38+
39+
#[spirv(fragment)]
40+
pub fn count_zeros_i8(
41+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &i8,
42+
out: &mut i8,
43+
) {
44+
*out = i8::reverse_bits(*buffer);
45+
}
46+
47+
#[spirv(fragment)]
48+
pub fn count_zeros_i16(
49+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &i16,
50+
out: &mut i16,
51+
) {
52+
*out = i16::reverse_bits(*buffer);
53+
}
54+
55+
#[spirv(fragment)]
56+
pub fn count_zeros_i32(
57+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &i32,
58+
out: &mut i32,
59+
) {
60+
*out = i32::reverse_bits(*buffer);
61+
}
62+
63+
#[spirv(fragment)]
64+
pub fn count_zeros_i64(
65+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &i64,
66+
out: &mut i64,
67+
) {
68+
*out = i64::reverse_bits(*buffer);
69+
}

tests/ui/lang/u32/count_ones.rs

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
// Test all trailing and leading zeros. No need to test ones, they just call the zero variant with !value
2+
3+
// build-pass
4+
5+
use spirv_std::spirv;
6+
7+
#[spirv(fragment)]
8+
pub fn count_ones_u8(
9+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &u8,
10+
out: &mut u32,
11+
) {
12+
*out = u8::count_ones(*buffer);
13+
}
14+
15+
#[spirv(fragment)]
16+
pub fn count_ones_u16(
17+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &u16,
18+
out: &mut u32,
19+
) {
20+
*out = u16::count_ones(*buffer);
21+
}
22+
23+
#[spirv(fragment)]
24+
pub fn count_ones_u32(
25+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &u32,
26+
out: &mut u32,
27+
) {
28+
*out = u32::count_ones(*buffer);
29+
}
30+
31+
#[spirv(fragment)]
32+
pub fn count_ones_u64(
33+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &u64,
34+
out: &mut u32,
35+
) {
36+
*out = u64::count_ones(*buffer);
37+
}
38+
39+
#[spirv(fragment)]
40+
pub fn count_ones_i8(
41+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &i8,
42+
out: &mut u32,
43+
) {
44+
*out = i8::count_ones(*buffer);
45+
}
46+
47+
#[spirv(fragment)]
48+
pub fn count_ones_i16(
49+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &i16,
50+
out: &mut u32,
51+
) {
52+
*out = i16::count_ones(*buffer);
53+
}
54+
55+
#[spirv(fragment)]
56+
pub fn count_ones_i32(
57+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &i32,
58+
out: &mut u32,
59+
) {
60+
*out = i32::count_ones(*buffer);
61+
}
62+
63+
#[spirv(fragment)]
64+
pub fn count_ones_i64(
65+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &i64,
66+
out: &mut u32,
67+
) {
68+
*out = i64::count_ones(*buffer);
69+
}

0 commit comments

Comments
 (0)