//@ add-minicore
//@ revisions: x86 x86-avx2 x86-avx512 aarch64
//@ [x86] compile-flags: --target=x86_64-unknown-linux-gnu -C llvm-args=-x86-asm-syntax=intel
//@ [x86] needs-llvm-components: x86
//@ [x86-avx2] compile-flags: --target=x86_64-unknown-linux-gnu -C llvm-args=-x86-asm-syntax=intel
//@ [x86-avx2] compile-flags: -C target-feature=+avx2
//@ [x86-avx2] needs-llvm-components: x86
//@ [x86-avx512] compile-flags: --target=x86_64-unknown-linux-gnu -C llvm-args=-x86-asm-syntax=intel
//@ [x86-avx512] compile-flags: -C target-feature=+avx512f,+avx512vl,+avx512bw,+avx512dq
//@ [x86-avx512] needs-llvm-components: x86
//@ [aarch64] compile-flags: --target=aarch64-unknown-linux-gnu
//@ [aarch64] needs-llvm-components: aarch64
//@ assembly-output: emit-asm
//@ compile-flags: --crate-type=lib -Copt-level=3 -C panic=abort

#![feature(no_core, lang_items, repr_simd, intrinsics)]
#![no_core]
#![allow(non_camel_case_types)]

extern crate minicore;
use minicore::*;

#[repr(simd)]
pub struct m8x16([i8; 16]);

#[repr(simd)]
pub struct m8x64([i8; 64]);

#[repr(simd)]
pub struct m32x4([i32; 4]);

#[repr(simd)]
pub struct m64x2([i64; 2]);

#[repr(simd)]
pub struct m64x4([i64; 4]);

#[rustc_intrinsic]
unsafe fn simd_bitmask<V, B>(mask: V) -> B;

// CHECK-LABEL: bitmask_m8x16
#[no_mangle]
pub unsafe extern "C" fn bitmask_m8x16(mask: m8x16) -> u16 {
    // The simd_bitmask intrinsic already uses the most significant bit, so no shift is necessary.
    // Note that x86 has no byte shift, llvm uses a word shift to move the least significant bit
    // of each byte into the right position.
    //
    // x86-NOT: psllw
    // x86: movmskb eax, xmm0
    //
    // x86-avx2-NOT: vpsllw
    // x86-avx2: vpmovmskb eax, xmm0
    //
    // x86-avx512-NOT: vpsllw xmm0
    // x86-avx512: vpmovmskb eax, xmm0
    //
    // aarch64: adrp
    // aarch64-NEXT: cmlt
    // aarch64-NEXT: ldr
    // aarch64-NEXT: and
    // aarch64-NEXT: ext
    // aarch64-NEXT: zip1
    // aarch64-NEXT: addv
    // aarch64-NEXT: fmov
    simd_bitmask(mask)
}

// x86-avx512-LABEL: bitmask_m8x64
#[no_mangle]
#[cfg(x86_avx512)]
pub unsafe extern "C" fn bitmask_m8x64(mask: m8x64) -> u64 {
    // The simd_bitmask intrinsic already uses the most significant bit, so no shift is necessary.
    // Note that x86 has no byte shift, llvm uses a word shift to move the least significant bit
    // of each byte into the right position.
    //
    // The parameter is a 512 bit vector which in the C abi is only valid for avx512 targets.
    //
    // x86-avx512-NOT: vpsllw
    // x86-avx512: vpmovb2m k0, zmm0
    // x86-avx512: kmovq rax, k0
    simd_bitmask(mask)
}

// CHECK-LABEL: bitmask_m32x4
#[no_mangle]
pub unsafe extern "C" fn bitmask_m32x4(mask: m32x4) -> u8 {
    // The simd_bitmask intrinsic already uses the most significant bit, so no shift is necessary.
    //
    // x86-NOT: psllq
    // x86: movmskps eax, xmm0
    //
    // x86-avx2-NOT: vpsllq
    // x86-avx2: vmovmskps eax, xmm0
    //
    // x86-avx512-NOT: vpsllq
    // x86-avx512: vmovmskps eax, xmm0
    //
    // aarch64: adrp
    // aarch64-NEXT: cmlt
    // aarch64-NEXT: ldr
    // aarch64-NEXT: and
    // aarch64-NEXT: addv
    // aarch64-NEXT: fmov
    // aarch64-NEXT: and
    simd_bitmask(mask)
}

// CHECK-LABEL: bitmask_m64x2
#[no_mangle]
pub unsafe extern "C" fn bitmask_m64x2(mask: m64x2) -> u8 {
    // The simd_bitmask intrinsic already uses the most significant bit, so no shift is necessary.
    //
    // x86-NOT: psllq
    // x86: movmskpd eax, xmm0
    //
    // x86-avx2-NOT: vpsllq
    // x86-avx2: vmovmskpd eax, xmm0
    //
    // x86-avx512-NOT: vpsllq
    // x86-avx512: vmovmskpd eax, xmm0
    //
    // aarch64: adrp
    // aarch64-NEXT: cmlt
    // aarch64-NEXT: ldr
    // aarch64-NEXT: and
    // aarch64-NEXT: addp
    // aarch64-NEXT: fmov
    // aarch64-NEXT: and
    simd_bitmask(mask)
}

// x86-avx2-LABEL: bitmask_m64x4
// x86-avx512-LABEL: bitmask_m64x4
#[no_mangle]
#[cfg(any(x86_avx2, x86_avx512))]
pub unsafe extern "C" fn bitmask_m64x4(mask: m64x4) -> u8 {
    // The simd_bitmask intrinsic already uses the most significant bit, so no shift is necessary.
    //
    // The parameter is a 256 bit vector which in the C abi is only valid for avx/avx512 targets.
    //
    // x86-avx2-NOT: vpsllq
    // x86-avx2: vmovmskpd eax, ymm0
    //
    // x86-avx512-NOT: vpsllq
    // x86-avx512: vmovmskpd eax, ymm0
    simd_bitmask(mask)
}
