]> git.proxmox.com Git - rustc.git/blame - src/test/ui/simd/array-type.rs
New upstream version 1.67.1+dfsg1
[rustc.git] / src / test / ui / simd / array-type.rs
CommitLineData
fc512014
XL
1// run-pass
2#![allow(dead_code)]
3
4// pretty-expanded FIXME #23616
5
5869c6ff 6#![feature(repr_simd, platform_intrinsics)]
fc512014
XL
7
8#[repr(simd)]
9#[derive(Copy, Clone)]
10struct S([i32; 4]);
11
12#[repr(simd)]
13#[derive(Copy, Clone)]
14struct T<const N: usize>([i32; N]);
15
16extern "platform-intrinsic" {
17 fn simd_insert<T, E>(x: T, idx: u32, y: E) -> T;
18 fn simd_extract<T, E>(x: T, idx: u32) -> E;
19}
20
21pub fn main() {
22 let mut s = S([0; 4]);
23
24 unsafe {
25 for i in 0_i32..4 {
26 s = simd_insert(s, i as u32, i);
27 }
28 for i in 0_i32..4 {
29 assert_eq!(i, simd_extract(s, i as u32));
30 }
31 }
32
33 let mut t = T::<4>([0; 4]);
34 unsafe {
35 for i in 0_i32..4 {
36 t = simd_insert(t, i as u32, i);
37 }
38 for i in 0_i32..4 {
39 assert_eq!(i, simd_extract(t, i as u32));
40 }
41 }
42}