Skip to content

Commit 4f3a11d

Browse files
authored
Rollup merge of #136022 - vayunbiyani:port_tests, r=RalfJung
Port ui/simd tests to use the intrinsic macro
2 parents 67e52b9 + 0878692 commit 4f3a11d

Some content is hidden

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

53 files changed

+518
-348
lines changed

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]);

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

+24-24
Original file line numberDiff line numberDiff line change
@@ -1,143 +1,143 @@
11
error[E0511]: invalid monomorphization of `simd_add` intrinsic: expected SIMD input type, found non-SIMD `i32`
2-
--> $DIR/generic-arithmetic-2.rs:81:9
2+
--> $DIR/generic-arithmetic-2.rs:110:9
33
|
44
LL | simd_add(0, 0);
55
| ^^^^^^^^^^^^^^
66

77
error[E0511]: invalid monomorphization of `simd_sub` intrinsic: expected SIMD input type, found non-SIMD `i32`
8-
--> $DIR/generic-arithmetic-2.rs:83:9
8+
--> $DIR/generic-arithmetic-2.rs:112:9
99
|
1010
LL | simd_sub(0, 0);
1111
| ^^^^^^^^^^^^^^
1212

1313
error[E0511]: invalid monomorphization of `simd_mul` intrinsic: expected SIMD input type, found non-SIMD `i32`
14-
--> $DIR/generic-arithmetic-2.rs:85:9
14+
--> $DIR/generic-arithmetic-2.rs:114:9
1515
|
1616
LL | simd_mul(0, 0);
1717
| ^^^^^^^^^^^^^^
1818

1919
error[E0511]: invalid monomorphization of `simd_div` intrinsic: expected SIMD input type, found non-SIMD `i32`
20-
--> $DIR/generic-arithmetic-2.rs:87:9
20+
--> $DIR/generic-arithmetic-2.rs:116:9
2121
|
2222
LL | simd_div(0, 0);
2323
| ^^^^^^^^^^^^^^
2424

2525
error[E0511]: invalid monomorphization of `simd_shl` intrinsic: expected SIMD input type, found non-SIMD `i32`
26-
--> $DIR/generic-arithmetic-2.rs:89:9
26+
--> $DIR/generic-arithmetic-2.rs:118:9
2727
|
2828
LL | simd_shl(0, 0);
2929
| ^^^^^^^^^^^^^^
3030

3131
error[E0511]: invalid monomorphization of `simd_shr` intrinsic: expected SIMD input type, found non-SIMD `i32`
32-
--> $DIR/generic-arithmetic-2.rs:91:9
32+
--> $DIR/generic-arithmetic-2.rs:120:9
3333
|
3434
LL | simd_shr(0, 0);
3535
| ^^^^^^^^^^^^^^
3636

3737
error[E0511]: invalid monomorphization of `simd_and` intrinsic: expected SIMD input type, found non-SIMD `i32`
38-
--> $DIR/generic-arithmetic-2.rs:93:9
38+
--> $DIR/generic-arithmetic-2.rs:122:9
3939
|
4040
LL | simd_and(0, 0);
4141
| ^^^^^^^^^^^^^^
4242

4343
error[E0511]: invalid monomorphization of `simd_or` intrinsic: expected SIMD input type, found non-SIMD `i32`
44-
--> $DIR/generic-arithmetic-2.rs:95:9
44+
--> $DIR/generic-arithmetic-2.rs:124:9
4545
|
4646
LL | simd_or(0, 0);
4747
| ^^^^^^^^^^^^^
4848

4949
error[E0511]: invalid monomorphization of `simd_xor` intrinsic: expected SIMD input type, found non-SIMD `i32`
50-
--> $DIR/generic-arithmetic-2.rs:97:9
50+
--> $DIR/generic-arithmetic-2.rs:126:9
5151
|
5252
LL | simd_xor(0, 0);
5353
| ^^^^^^^^^^^^^^
5454

5555
error[E0511]: invalid monomorphization of `simd_neg` intrinsic: expected SIMD input type, found non-SIMD `i32`
56-
--> $DIR/generic-arithmetic-2.rs:100:9
56+
--> $DIR/generic-arithmetic-2.rs:129:9
5757
|
5858
LL | simd_neg(0);
5959
| ^^^^^^^^^^^
6060

6161
error[E0511]: invalid monomorphization of `simd_bswap` intrinsic: expected SIMD input type, found non-SIMD `i32`
62-
--> $DIR/generic-arithmetic-2.rs:102:9
62+
--> $DIR/generic-arithmetic-2.rs:131:9
6363
|
6464
LL | simd_bswap(0);
6565
| ^^^^^^^^^^^^^
6666

6767
error[E0511]: invalid monomorphization of `simd_bitreverse` intrinsic: expected SIMD input type, found non-SIMD `i32`
68-
--> $DIR/generic-arithmetic-2.rs:104:9
68+
--> $DIR/generic-arithmetic-2.rs:133:9
6969
|
7070
LL | simd_bitreverse(0);
7171
| ^^^^^^^^^^^^^^^^^^
7272

7373
error[E0511]: invalid monomorphization of `simd_ctlz` intrinsic: expected SIMD input type, found non-SIMD `i32`
74-
--> $DIR/generic-arithmetic-2.rs:106:9
74+
--> $DIR/generic-arithmetic-2.rs:135:9
7575
|
7676
LL | simd_ctlz(0);
7777
| ^^^^^^^^^^^^
7878

7979
error[E0511]: invalid monomorphization of `simd_cttz` intrinsic: expected SIMD input type, found non-SIMD `i32`
80-
--> $DIR/generic-arithmetic-2.rs:108:9
80+
--> $DIR/generic-arithmetic-2.rs:137:9
8181
|
8282
LL | simd_cttz(0);
8383
| ^^^^^^^^^^^^
8484

8585
error[E0511]: invalid monomorphization of `simd_shl` intrinsic: unsupported operation on `f32x4` with element `f32`
86-
--> $DIR/generic-arithmetic-2.rs:111:9
86+
--> $DIR/generic-arithmetic-2.rs:140:9
8787
|
8888
LL | simd_shl(z, z);
8989
| ^^^^^^^^^^^^^^
9090

9191
error[E0511]: invalid monomorphization of `simd_shr` intrinsic: unsupported operation on `f32x4` with element `f32`
92-
--> $DIR/generic-arithmetic-2.rs:113:9
92+
--> $DIR/generic-arithmetic-2.rs:142:9
9393
|
9494
LL | simd_shr(z, z);
9595
| ^^^^^^^^^^^^^^
9696

9797
error[E0511]: invalid monomorphization of `simd_and` intrinsic: unsupported operation on `f32x4` with element `f32`
98-
--> $DIR/generic-arithmetic-2.rs:115:9
98+
--> $DIR/generic-arithmetic-2.rs:144:9
9999
|
100100
LL | simd_and(z, z);
101101
| ^^^^^^^^^^^^^^
102102

103103
error[E0511]: invalid monomorphization of `simd_or` intrinsic: unsupported operation on `f32x4` with element `f32`
104-
--> $DIR/generic-arithmetic-2.rs:117:9
104+
--> $DIR/generic-arithmetic-2.rs:146:9
105105
|
106106
LL | simd_or(z, z);
107107
| ^^^^^^^^^^^^^
108108

109109
error[E0511]: invalid monomorphization of `simd_xor` intrinsic: unsupported operation on `f32x4` with element `f32`
110-
--> $DIR/generic-arithmetic-2.rs:119:9
110+
--> $DIR/generic-arithmetic-2.rs:148:9
111111
|
112112
LL | simd_xor(z, z);
113113
| ^^^^^^^^^^^^^^
114114

115115
error[E0511]: invalid monomorphization of `simd_bswap` intrinsic: unsupported operation on `f32x4` with element `f32`
116-
--> $DIR/generic-arithmetic-2.rs:121:9
116+
--> $DIR/generic-arithmetic-2.rs:150:9
117117
|
118118
LL | simd_bswap(z);
119119
| ^^^^^^^^^^^^^
120120

121121
error[E0511]: invalid monomorphization of `simd_bitreverse` intrinsic: unsupported operation on `f32x4` with element `f32`
122-
--> $DIR/generic-arithmetic-2.rs:123:9
122+
--> $DIR/generic-arithmetic-2.rs:152:9
123123
|
124124
LL | simd_bitreverse(z);
125125
| ^^^^^^^^^^^^^^^^^^
126126

127127
error[E0511]: invalid monomorphization of `simd_ctlz` intrinsic: unsupported operation on `f32x4` with element `f32`
128-
--> $DIR/generic-arithmetic-2.rs:125:9
128+
--> $DIR/generic-arithmetic-2.rs:154:9
129129
|
130130
LL | simd_ctlz(z);
131131
| ^^^^^^^^^^^^
132132

133133
error[E0511]: invalid monomorphization of `simd_ctpop` intrinsic: unsupported operation on `f32x4` with element `f32`
134-
--> $DIR/generic-arithmetic-2.rs:127:9
134+
--> $DIR/generic-arithmetic-2.rs:156:9
135135
|
136136
LL | simd_ctpop(z);
137137
| ^^^^^^^^^^^^^
138138

139139
error[E0511]: invalid monomorphization of `simd_cttz` intrinsic: unsupported operation on `f32x4` with element `f32`
140-
--> $DIR/generic-arithmetic-2.rs:129:9
140+
--> $DIR/generic-arithmetic-2.rs:158:9
141141
|
142142
LL | simd_cttz(z);
143143
| ^^^^^^^^^^^^

0 commit comments

Comments
 (0)