blob: 27894870a62708f7e74ee33bb1b01e9de9351059 [file] [edit]
// Make sure that no 0-sized padding is inserted in structs and that
// structs are represented as expected by Neon intrinsics in LLVM.
// See #87254.
//@ add-minicore
//@ compile-flags: -Cno-prepopulate-passes --target aarch64-unknown-linux-gnu
//@ needs-llvm-components: aarch64
#![crate_type = "lib"]
#![feature(link_llvm_intrinsics, no_core)]
#![no_core]
extern crate minicore;
use minicore::simd::i16x4;
#[repr(C)]
struct int16x4x2_t(i16x4, i16x4);
unsafe extern "llvm-intrinsic" {
#[link_name = "llvm.aarch64.neon.ld1x2.v4i16.p0"]
fn vld1_s16_x2(t: *const i16) -> int16x4x2_t;
}
#[no_mangle]
unsafe extern "C" fn returns_int16x4x2_t(a: *const i16) -> int16x4x2_t {
// CHECK: call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x2.v4i16.p0
vld1_s16_x2(a)
}