| Invalid monomorphization of an intrinsic function was used. |
| |
| Erroneous code example: |
| |
| ```compile_fail,E0511 |
| #![feature(intrinsics)] |
| |
| #[rustc_intrinsic] |
| unsafe fn simd_add<T>(a: T, b: T) -> T; |
| |
| fn main() { |
| unsafe { simd_add(0, 1); } |
| // error: invalid monomorphization of `simd_add` intrinsic |
| } |
| ``` |
| |
| The generic type has to be a SIMD type. Example: |
| |
| ``` |
| #![feature(repr_simd)] |
| #![feature(intrinsics)] |
| |
| #[repr(simd)] |
| #[derive(Copy, Clone)] |
| struct i32x2([i32; 2]); |
| |
| #[rustc_intrinsic] |
| unsafe fn simd_add<T>(a: T, b: T) -> T; |
| |
| unsafe { simd_add(i32x2([0, 0]), i32x2([1, 2])); } // ok! |
| ``` |