Skip to content

Commit c53e03c

Browse files
committed
leading_zeros: add tests for non 32bit integers, failing
1 parent 7d8ab7c commit c53e03c

File tree

5 files changed

+640
-37
lines changed

5 files changed

+640
-37
lines changed

tests/ui/lang/u32/leading_zeros.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 leading_zeros_u8(
9+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &u8,
10+
out: &mut u32,
11+
) {
12+
*out = u8::leading_zeros(*buffer);
13+
}
14+
15+
#[spirv(fragment)]
16+
pub fn leading_zeros_u16(
17+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &u16,
18+
out: &mut u32,
19+
) {
20+
*out = u16::leading_zeros(*buffer);
21+
}
22+
23+
#[spirv(fragment)]
24+
pub fn leading_zeros_u32(
25+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &u32,
26+
out: &mut u32,
27+
) {
28+
*out = u32::leading_zeros(*buffer);
29+
}
30+
31+
#[spirv(fragment)]
32+
pub fn leading_zeros_u64(
33+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &u64,
34+
out: &mut u32,
35+
) {
36+
*out = u64::leading_zeros(*buffer);
37+
}
38+
39+
#[spirv(fragment)]
40+
pub fn leading_zeros_i8(
41+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &i8,
42+
out: &mut u32,
43+
) {
44+
*out = i8::leading_zeros(*buffer);
45+
}
46+
47+
#[spirv(fragment)]
48+
pub fn leading_zeros_i16(
49+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &i16,
50+
out: &mut u32,
51+
) {
52+
*out = i16::leading_zeros(*buffer);
53+
}
54+
55+
#[spirv(fragment)]
56+
pub fn leading_zeros_i32(
57+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &i32,
58+
out: &mut u32,
59+
) {
60+
*out = i32::leading_zeros(*buffer);
61+
}
62+
63+
#[spirv(fragment)]
64+
pub fn leading_zeros_i64(
65+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buffer: &i64,
66+
out: &mut u32,
67+
) {
68+
*out = i64::leading_zeros(*buffer);
69+
}
+251
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,251 @@
1+
error: cannot cast between pointer types
2+
from `*u32`
3+
to `*u8`
4+
--> /home/firestar99/.rustup/toolchains/nightly-2024-11-22-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/mod.rs:535:5
5+
|
6+
535 | / uint_impl! {
7+
536 | | Self = u8,
8+
537 | | ActualT = u8,
9+
538 | | SignedT = i8,
10+
... |
11+
552 | | bound_condition = "",
12+
553 | | }
13+
| |_____^
14+
|
15+
note: used from within `<u8>::leading_zeros`
16+
--> /home/firestar99/.rustup/toolchains/nightly-2024-11-22-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/mod.rs:535:5
17+
|
18+
535 | / uint_impl! {
19+
536 | | Self = u8,
20+
537 | | ActualT = u8,
21+
538 | | SignedT = i8,
22+
... |
23+
552 | | bound_condition = "",
24+
553 | | }
25+
| |_____^
26+
note: called by `leading_zeros::leading_zeros_u8`
27+
--> $DIR/leading_zeros.rs:12:12
28+
|
29+
12 | *out = u8::leading_zeros(*buffer);
30+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
31+
note: called by `leading_zeros_u8`
32+
--> $DIR/leading_zeros.rs:8:8
33+
|
34+
8 | pub fn leading_zeros_u8(
35+
| ^^^^^^^^^^^^^^^^
36+
37+
error: cannot cast between pointer types
38+
from `*u32`
39+
to `*u16`
40+
--> /home/firestar99/.rustup/toolchains/nightly-2024-11-22-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/mod.rs:1151:5
41+
|
42+
1151 | / uint_impl! {
43+
1152 | | Self = u16,
44+
1153 | | ActualT = u16,
45+
1154 | | SignedT = i16,
46+
... |
47+
1168 | | bound_condition = "",
48+
1169 | | }
49+
| |_____^
50+
|
51+
note: used from within `<u16>::leading_zeros`
52+
--> /home/firestar99/.rustup/toolchains/nightly-2024-11-22-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/mod.rs:1151:5
53+
|
54+
1151 | / uint_impl! {
55+
1152 | | Self = u16,
56+
1153 | | ActualT = u16,
57+
1154 | | SignedT = i16,
58+
... |
59+
1168 | | bound_condition = "",
60+
1169 | | }
61+
| |_____^
62+
note: called by `leading_zeros::leading_zeros_u16`
63+
--> $DIR/leading_zeros.rs:20:12
64+
|
65+
20 | *out = u16::leading_zeros(*buffer);
66+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
67+
note: called by `leading_zeros_u16`
68+
--> $DIR/leading_zeros.rs:16:8
69+
|
70+
16 | pub fn leading_zeros_u16(
71+
| ^^^^^^^^^^^^^^^^^
72+
73+
error: cannot cast between pointer types
74+
from `*u32`
75+
to `*u64`
76+
--> /home/firestar99/.rustup/toolchains/nightly-2024-11-22-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/mod.rs:1223:5
77+
|
78+
1223 | / uint_impl! {
79+
1224 | | Self = u64,
80+
1225 | | ActualT = u64,
81+
1226 | | SignedT = i64,
82+
... |
83+
1240 | | bound_condition = "",
84+
1241 | | }
85+
| |_____^
86+
|
87+
note: used from within `<u64>::leading_zeros`
88+
--> /home/firestar99/.rustup/toolchains/nightly-2024-11-22-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/mod.rs:1223:5
89+
|
90+
1223 | / uint_impl! {
91+
1224 | | Self = u64,
92+
1225 | | ActualT = u64,
93+
1226 | | SignedT = i64,
94+
... |
95+
1240 | | bound_condition = "",
96+
1241 | | }
97+
| |_____^
98+
note: called by `leading_zeros::leading_zeros_u64`
99+
--> $DIR/leading_zeros.rs:36:12
100+
|
101+
36 | *out = u64::leading_zeros(*buffer);
102+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
103+
note: called by `leading_zeros_u64`
104+
--> $DIR/leading_zeros.rs:32:8
105+
|
106+
32 | pub fn leading_zeros_u64(
107+
| ^^^^^^^^^^^^^^^^^
108+
109+
error: cannot cast between pointer types
110+
from `*u32`
111+
to `*u8`
112+
--> /home/firestar99/.rustup/toolchains/nightly-2024-11-22-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/mod.rs:535:5
113+
|
114+
535 | / uint_impl! {
115+
536 | | Self = u8,
116+
537 | | ActualT = u8,
117+
538 | | SignedT = i8,
118+
... |
119+
552 | | bound_condition = "",
120+
553 | | }
121+
| |_____^
122+
|
123+
note: used from within `<u8>::leading_zeros`
124+
--> /home/firestar99/.rustup/toolchains/nightly-2024-11-22-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/mod.rs:535:5
125+
|
126+
535 | / uint_impl! {
127+
536 | | Self = u8,
128+
537 | | ActualT = u8,
129+
538 | | SignedT = i8,
130+
... |
131+
552 | | bound_condition = "",
132+
553 | | }
133+
| |_____^
134+
note: called by `<i8>::leading_zeros`
135+
--> /home/firestar99/.rustup/toolchains/nightly-2024-11-22-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/mod.rs:335:5
136+
|
137+
335 | / int_impl! {
138+
336 | | Self = i8,
139+
337 | | ActualT = i8,
140+
338 | | UnsignedT = u8,
141+
... |
142+
353 | | bound_condition = "",
143+
354 | | }
144+
| |_____^
145+
note: called by `leading_zeros::leading_zeros_i8`
146+
--> $DIR/leading_zeros.rs:44:12
147+
|
148+
44 | *out = i8::leading_zeros(*buffer);
149+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
150+
note: called by `leading_zeros_i8`
151+
--> $DIR/leading_zeros.rs:40:8
152+
|
153+
40 | pub fn leading_zeros_i8(
154+
| ^^^^^^^^^^^^^^^^
155+
156+
error: cannot cast between pointer types
157+
from `*u32`
158+
to `*u16`
159+
--> /home/firestar99/.rustup/toolchains/nightly-2024-11-22-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/mod.rs:1151:5
160+
|
161+
1151 | / uint_impl! {
162+
1152 | | Self = u16,
163+
1153 | | ActualT = u16,
164+
1154 | | SignedT = i16,
165+
... |
166+
1168 | | bound_condition = "",
167+
1169 | | }
168+
| |_____^
169+
|
170+
note: used from within `<u16>::leading_zeros`
171+
--> /home/firestar99/.rustup/toolchains/nightly-2024-11-22-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/mod.rs:1151:5
172+
|
173+
1151 | / uint_impl! {
174+
1152 | | Self = u16,
175+
1153 | | ActualT = u16,
176+
1154 | | SignedT = i16,
177+
... |
178+
1168 | | bound_condition = "",
179+
1169 | | }
180+
| |_____^
181+
note: called by `<i16>::leading_zeros`
182+
--> /home/firestar99/.rustup/toolchains/nightly-2024-11-22-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/mod.rs:359:5
183+
|
184+
359 | / int_impl! {
185+
360 | | Self = i16,
186+
361 | | ActualT = i16,
187+
362 | | UnsignedT = u16,
188+
... |
189+
377 | | bound_condition = "",
190+
378 | | }
191+
| |_____^
192+
note: called by `leading_zeros::leading_zeros_i16`
193+
--> $DIR/leading_zeros.rs:52:12
194+
|
195+
52 | *out = i16::leading_zeros(*buffer);
196+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
197+
note: called by `leading_zeros_i16`
198+
--> $DIR/leading_zeros.rs:48:8
199+
|
200+
48 | pub fn leading_zeros_i16(
201+
| ^^^^^^^^^^^^^^^^^
202+
203+
error: cannot cast between pointer types
204+
from `*u32`
205+
to `*u64`
206+
--> /home/firestar99/.rustup/toolchains/nightly-2024-11-22-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/mod.rs:1223:5
207+
|
208+
1223 | / uint_impl! {
209+
1224 | | Self = u64,
210+
1225 | | ActualT = u64,
211+
1226 | | SignedT = i64,
212+
... |
213+
1240 | | bound_condition = "",
214+
1241 | | }
215+
| |_____^
216+
|
217+
note: used from within `<u64>::leading_zeros`
218+
--> /home/firestar99/.rustup/toolchains/nightly-2024-11-22-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/mod.rs:1223:5
219+
|
220+
1223 | / uint_impl! {
221+
1224 | | Self = u64,
222+
1225 | | ActualT = u64,
223+
1226 | | SignedT = i64,
224+
... |
225+
1240 | | bound_condition = "",
226+
1241 | | }
227+
| |_____^
228+
note: called by `<i64>::leading_zeros`
229+
--> /home/firestar99/.rustup/toolchains/nightly-2024-11-22-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/mod.rs:407:5
230+
|
231+
407 | / int_impl! {
232+
408 | | Self = i64,
233+
409 | | ActualT = i64,
234+
410 | | UnsignedT = u64,
235+
... |
236+
425 | | bound_condition = "",
237+
426 | | }
238+
| |_____^
239+
note: called by `leading_zeros::leading_zeros_i64`
240+
--> $DIR/leading_zeros.rs:68:12
241+
|
242+
68 | *out = i64::leading_zeros(*buffer);
243+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
244+
note: called by `leading_zeros_i64`
245+
--> $DIR/leading_zeros.rs:64:8
246+
|
247+
64 | pub fn leading_zeros_i64(
248+
| ^^^^^^^^^^^^^^^^^
249+
250+
error: aborting due to 6 previous errors
251+

tests/ui/lang/u32/trailing_leading_bits.rs

-37
This file was deleted.

0 commit comments

Comments
 (0)