]> git.proxmox.com Git - rustc.git/blame - src/test/ui/simd-intrinsic/simd-intrinsic-inlining-issue67557.rs
New upstream version 1.52.0~beta.3+dfsg1
[rustc.git] / src / test / ui / simd-intrinsic / simd-intrinsic-inlining-issue67557.rs
CommitLineData
dfeec247
XL
1// This used to cause assert_10_13 to unexpectingly fail, due to simd_shuffle_indices being passed
2// the wrong Instance, causing issues with inlining. See #67557.
3//
4// run-pass
6a06907d 5// compile-flags: -Zmir-opt-level=4
dfeec247
XL
6#![feature(platform_intrinsics, repr_simd)]
7
8extern "platform-intrinsic" {
9 fn simd_shuffle2<T, U>(x: T, y: T, idx: [u32; 2]) -> U;
10}
11
12#[repr(simd)]
13#[derive(Debug, PartialEq)]
14struct Simd2(u8, u8);
15
16fn main() {
17 unsafe {
18 let p_res: Simd2 = simd_shuffle2(Simd2(10, 11), Simd2(12, 13), [0, 1]);
19 let a_res: Simd2 = inline_me();
20
21 assert_10_11(p_res);
22 assert_10_13(a_res);
23 }
24}
25
26#[inline(never)]
27fn assert_10_11(x: Simd2) {
28 assert_eq!(x, Simd2(10, 11));
29}
30
31#[inline(never)]
32fn assert_10_13(x: Simd2) {
33 assert_eq!(x, Simd2(10, 13));
34}
35
36
37#[inline(always)]
38unsafe fn inline_me() -> Simd2 {
39 simd_shuffle2(Simd2(10, 11), Simd2(12, 13), [0, 3])
40}