// Check that appropriate errors are reported if an intrinsic is defined
// with the wrong number of generic lifetime/type/const parameters, and
// that no ICE occurs in these cases.

#![feature(intrinsics)]
#![crate_type="lib"]

extern "rust-intrinsic" {
    fn simd_saturating_add<'a, T: 'a>(x: T, y: T);
    //~^ ERROR: intrinsic has wrong number of lifetime parameters

    fn simd_add<'a, T>(x: T, y: T) -> T;

    fn simd_sub<T, U>(x: T, y: U);
    //~^ ERROR: intrinsic has wrong number of type parameters

    fn simd_mul<T, const N: usize>(x: T, y: T);
    //~^ ERROR: intrinsic has wrong number of const parameters
}
