Skip to content

Commit 5c5c15d

Browse files
committed
Ported tests/ui/simd to use the intrinsic macro
1 parent 65d7296 commit 5c5c15d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+538
-362
lines changed

tests/ui/liveness/liveness-unused.rs

+6
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#![deny(unused_variables)]
33
#![deny(unused_assignments)]
44
#![allow(dead_code, non_camel_case_types, trivial_numeric_casts, dropping_copy_types)]
5+
#![feature(intrinsics)]
56

67
use std::ops::AddAssign;
78

@@ -137,5 +138,10 @@ fn f7() {
137138
drop(a);
138139
}
139140

141+
// unused params warnings are not needed for intrinsic functions without bodies
142+
#[rustc_intrinsic]
143+
unsafe fn simd_shuffle<T, I, U>(a: T, b: T, i: I) -> U;
144+
145+
140146
fn main() {
141147
}

tests/ui/liveness/liveness-unused.stderr

+14-14
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
warning: unreachable statement
2-
--> $DIR/liveness-unused.rs:92:9
2+
--> $DIR/liveness-unused.rs:93:9
33
|
44
LL | continue;
55
| -------- any code following this expression is unreachable
@@ -14,7 +14,7 @@ LL | #![warn(unused)]
1414
= note: `#[warn(unreachable_code)]` implied by `#[warn(unused)]`
1515

1616
error: unused variable: `x`
17-
--> $DIR/liveness-unused.rs:8:7
17+
--> $DIR/liveness-unused.rs:9:7
1818
|
1919
LL | fn f1(x: isize) {
2020
| ^ help: if this is intentional, prefix it with an underscore: `_x`
@@ -26,33 +26,33 @@ LL | #![deny(unused_variables)]
2626
| ^^^^^^^^^^^^^^^^
2727

2828
error: unused variable: `x`
29-
--> $DIR/liveness-unused.rs:12:8
29+
--> $DIR/liveness-unused.rs:13:8
3030
|
3131
LL | fn f1b(x: &mut isize) {
3232
| ^ help: if this is intentional, prefix it with an underscore: `_x`
3333

3434
error: unused variable: `x`
35-
--> $DIR/liveness-unused.rs:20:9
35+
--> $DIR/liveness-unused.rs:21:9
3636
|
3737
LL | let x: isize;
3838
| ^ help: if this is intentional, prefix it with an underscore: `_x`
3939

4040
error: unused variable: `x`
41-
--> $DIR/liveness-unused.rs:25:9
41+
--> $DIR/liveness-unused.rs:26:9
4242
|
4343
LL | let x = 3;
4444
| ^ help: if this is intentional, prefix it with an underscore: `_x`
4545

4646
error: variable `x` is assigned to, but never used
47-
--> $DIR/liveness-unused.rs:30:13
47+
--> $DIR/liveness-unused.rs:31:13
4848
|
4949
LL | let mut x = 3;
5050
| ^
5151
|
5252
= note: consider using `_x` instead
5353

5454
error: value assigned to `x` is never read
55-
--> $DIR/liveness-unused.rs:32:5
55+
--> $DIR/liveness-unused.rs:33:5
5656
|
5757
LL | x += 4;
5858
| ^
@@ -65,47 +65,47 @@ LL | #![deny(unused_assignments)]
6565
| ^^^^^^^^^^^^^^^^^^
6666

6767
error: variable `z` is assigned to, but never used
68-
--> $DIR/liveness-unused.rs:37:13
68+
--> $DIR/liveness-unused.rs:38:13
6969
|
7070
LL | let mut z = 3;
7171
| ^
7272
|
7373
= note: consider using `_z` instead
7474

7575
error: unused variable: `i`
76-
--> $DIR/liveness-unused.rs:59:12
76+
--> $DIR/liveness-unused.rs:60:12
7777
|
7878
LL | Some(i) => {
7979
| ^ help: if this is intentional, prefix it with an underscore: `_i`
8080

8181
error: unused variable: `x`
82-
--> $DIR/liveness-unused.rs:79:9
82+
--> $DIR/liveness-unused.rs:80:9
8383
|
8484
LL | for x in 1..10 { }
8585
| ^ help: if this is intentional, prefix it with an underscore: `_x`
8686

8787
error: unused variable: `x`
88-
--> $DIR/liveness-unused.rs:84:10
88+
--> $DIR/liveness-unused.rs:85:10
8989
|
9090
LL | for (x, _) in [1, 2, 3].iter().enumerate() { }
9191
| ^ help: if this is intentional, prefix it with an underscore: `_x`
9292

9393
error: unused variable: `x`
94-
--> $DIR/liveness-unused.rs:89:13
94+
--> $DIR/liveness-unused.rs:90:13
9595
|
9696
LL | for (_, x) in [1, 2, 3].iter().enumerate() {
9797
| ^ help: if this is intentional, prefix it with an underscore: `_x`
9898

9999
error: variable `x` is assigned to, but never used
100-
--> $DIR/liveness-unused.rs:112:9
100+
--> $DIR/liveness-unused.rs:113:9
101101
|
102102
LL | let x;
103103
| ^
104104
|
105105
= note: consider using `_x` instead
106106

107107
error: value assigned to `x` is never read
108-
--> $DIR/liveness-unused.rs:116:9
108+
--> $DIR/liveness-unused.rs:117:9
109109
|
110110
LL | x = 0;
111111
| ^

tests/ui/simd/array-trait.rs

+6-4
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@ pub struct T<S: Simd>([S::Lane; S::SIZE]);
2424
//~| ERROR SIMD vector element type should be a primitive scalar
2525
//~| ERROR unconstrained generic constant
2626

27-
extern "rust-intrinsic" {
28-
fn simd_insert<T, E>(x: T, idx: u32, y: E) -> T;
29-
fn simd_extract<T, E>(x: T, idx: u32) -> E;
30-
}
27+
#[rustc_intrinsic]
28+
unsafe fn simd_insert<T, E>(x: T, idx: u32, y: E) -> T;
29+
30+
#[rustc_intrinsic]
31+
unsafe fn simd_extract<T, E>(x: T, idx: u32) -> E;
32+
3133

3234
pub fn main() {
3335
let mut t = T::<i32x4>([0; 4]);

tests/ui/simd/array-type.rs

+6-4
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ struct S([i32; 4]);
1212
#[derive(Copy, Clone)]
1313
struct T<const N: usize>([i32; N]);
1414

15-
extern "rust-intrinsic" {
16-
fn simd_insert<T, E>(x: T, idx: u32, y: E) -> T;
17-
fn simd_extract<T, E>(x: T, idx: u32) -> E;
18-
}
15+
#[rustc_intrinsic]
16+
unsafe fn simd_insert<T, E>(x: T, idx: u32, y: E) -> T;
17+
18+
#[rustc_intrinsic]
19+
unsafe fn simd_extract<T, E>(x: T, idx: u32) -> E;
20+
1921

2022
pub fn main() {
2123
let mut s = S([0; 4]);

tests/ui/simd/generics.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,8 @@ struct B<T>([T; 4]);
2121
struct C<T, const N: usize>([T; N]);
2222

2323

24-
extern "rust-intrinsic" {
25-
fn simd_add<T>(x: T, y: T) -> T;
26-
}
24+
#[rustc_intrinsic]
25+
unsafe fn simd_add<T>(x: T, y: T) -> T;
2726

2827
fn add<T: ops::Add<Output=T>>(lhs: T, rhs: T) -> T {
2928
lhs + rhs

tests/ui/simd/intrinsic/float-math-pass.rs

+53-21
Original file line numberDiff line numberDiff line change
@@ -15,27 +15,59 @@
1515
#[derive(Copy, Clone, PartialEq, Debug)]
1616
struct f32x4(pub [f32; 4]);
1717

18-
extern "rust-intrinsic" {
19-
fn simd_fsqrt<T>(x: T) -> T;
20-
fn simd_fabs<T>(x: T) -> T;
21-
fn simd_fsin<T>(x: T) -> T;
22-
fn simd_fcos<T>(x: T) -> T;
23-
fn simd_fexp<T>(x: T) -> T;
24-
fn simd_fexp2<T>(x: T) -> T;
25-
fn simd_fma<T>(x: T, y: T, z: T) -> T;
26-
fn simd_relaxed_fma<T>(x: T, y: T, z: T) -> T;
27-
fn simd_flog<T>(x: T) -> T;
28-
fn simd_flog10<T>(x: T) -> T;
29-
fn simd_flog2<T>(x: T) -> T;
30-
fn simd_fpow<T>(x: T, y: T) -> T;
31-
fn simd_fpowi<T>(x: T, y: i32) -> T;
32-
33-
// rounding functions
34-
fn simd_ceil<T>(x: T) -> T;
35-
fn simd_floor<T>(x: T) -> T;
36-
fn simd_round<T>(x: T) -> T;
37-
fn simd_trunc<T>(x: T) -> T;
38-
}
18+
#[rustc_intrinsic]
19+
unsafe fn simd_fsqrt<T>(x: T) -> T;
20+
21+
#[rustc_intrinsic]
22+
unsafe fn simd_fabs<T>(x: T) -> T;
23+
24+
#[rustc_intrinsic]
25+
unsafe fn simd_fsin<T>(x: T) -> T;
26+
27+
#[rustc_intrinsic]
28+
unsafe fn simd_fcos<T>(x: T) -> T;
29+
30+
#[rustc_intrinsic]
31+
unsafe fn simd_fexp<T>(x: T) -> T;
32+
33+
#[rustc_intrinsic]
34+
unsafe fn simd_fexp2<T>(x: T) -> T;
35+
36+
#[rustc_intrinsic]
37+
unsafe fn simd_fma<T>(x: T, y: T, z: T) -> T;
38+
39+
#[rustc_intrinsic]
40+
unsafe fn simd_relaxed_fma<T>(x: T, y: T, z: T) -> T;
41+
42+
#[rustc_intrinsic]
43+
unsafe fn simd_flog<T>(x: T) -> T;
44+
45+
#[rustc_intrinsic]
46+
unsafe fn simd_flog10<T>(x: T) -> T;
47+
48+
#[rustc_intrinsic]
49+
unsafe fn simd_flog2<T>(x: T) -> T;
50+
51+
#[rustc_intrinsic]
52+
unsafe fn simd_fpow<T>(x: T, y: T) -> T;
53+
54+
#[rustc_intrinsic]
55+
unsafe fn simd_fpowi<T>(x: T, y: i32) -> T;
56+
57+
58+
// rounding functions
59+
#[rustc_intrinsic]
60+
unsafe fn simd_ceil<T>(x: T) -> T;
61+
62+
#[rustc_intrinsic]
63+
unsafe fn simd_floor<T>(x: T) -> T;
64+
65+
#[rustc_intrinsic]
66+
unsafe fn simd_round<T>(x: T) -> T;
67+
68+
#[rustc_intrinsic]
69+
unsafe fn simd_trunc<T>(x: T) -> T;
70+
3971

4072
macro_rules! assert_approx_eq_f32 {
4173
($a:expr, $b:expr) => ({

tests/ui/simd/intrinsic/generic-arithmetic-2.rs

+48-19
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,54 @@ pub struct u32x4(pub [u32; 4]);
1414
#[derive(Copy, Clone)]
1515
pub struct f32x4(pub [f32; 4]);
1616

17-
extern "rust-intrinsic" {
18-
fn simd_add<T>(x: T, y: T) -> T;
19-
fn simd_sub<T>(x: T, y: T) -> T;
20-
fn simd_mul<T>(x: T, y: T) -> T;
21-
fn simd_div<T>(x: T, y: T) -> T;
22-
fn simd_rem<T>(x: T, y: T) -> T;
23-
fn simd_shl<T>(x: T, y: T) -> T;
24-
fn simd_shr<T>(x: T, y: T) -> T;
25-
fn simd_and<T>(x: T, y: T) -> T;
26-
fn simd_or<T>(x: T, y: T) -> T;
27-
fn simd_xor<T>(x: T, y: T) -> T;
28-
29-
fn simd_neg<T>(x: T) -> T;
30-
fn simd_bswap<T>(x: T) -> T;
31-
fn simd_bitreverse<T>(x: T) -> T;
32-
fn simd_ctlz<T>(x: T) -> T;
33-
fn simd_ctpop<T>(x: T) -> T;
34-
fn simd_cttz<T>(x: T) -> T;
35-
}
17+
#[rustc_intrinsic]
18+
unsafe fn simd_add<T>(x: T, y: T) -> T;
19+
20+
#[rustc_intrinsic]
21+
unsafe fn simd_sub<T>(x: T, y: T) -> T;
22+
23+
#[rustc_intrinsic]
24+
unsafe fn simd_mul<T>(x: T, y: T) -> T;
25+
26+
#[rustc_intrinsic]
27+
unsafe fn simd_div<T>(x: T, y: T) -> T;
28+
29+
#[rustc_intrinsic]
30+
unsafe fn simd_rem<T>(x: T, y: T) -> T;
31+
32+
#[rustc_intrinsic]
33+
unsafe fn simd_shl<T>(x: T, y: T) -> T;
34+
35+
#[rustc_intrinsic]
36+
unsafe fn simd_shr<T>(x: T, y: T) -> T;
37+
38+
#[rustc_intrinsic]
39+
unsafe fn simd_and<T>(x: T, y: T) -> T;
40+
41+
#[rustc_intrinsic]
42+
unsafe fn simd_or<T>(x: T, y: T) -> T;
43+
44+
#[rustc_intrinsic]
45+
unsafe fn simd_xor<T>(x: T, y: T) -> T;
46+
47+
48+
#[rustc_intrinsic]
49+
unsafe fn simd_neg<T>(x: T) -> T;
50+
51+
#[rustc_intrinsic]
52+
unsafe fn simd_bswap<T>(x: T) -> T;
53+
54+
#[rustc_intrinsic]
55+
unsafe fn simd_bitreverse<T>(x: T) -> T;
56+
57+
#[rustc_intrinsic]
58+
unsafe fn simd_ctlz<T>(x: T) -> T;
59+
60+
#[rustc_intrinsic]
61+
unsafe fn simd_ctpop<T>(x: T) -> T;
62+
63+
#[rustc_intrinsic]
64+
unsafe fn simd_cttz<T>(x: T) -> T;
3665

3766
fn main() {
3867
let x = i32x4([0, 0, 0, 0]);

0 commit comments

Comments
 (0)