diff options
Diffstat (limited to 'compiler/rustc_error_codes/src/error_codes/E0511.md')
-rw-r--r-- | compiler/rustc_error_codes/src/error_codes/E0511.md | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/compiler/rustc_error_codes/src/error_codes/E0511.md b/compiler/rustc_error_codes/src/error_codes/E0511.md new file mode 100644 index 000000000..5351a685e --- /dev/null +++ b/compiler/rustc_error_codes/src/error_codes/E0511.md @@ -0,0 +1,33 @@ +Invalid monomorphization of an intrinsic function was used. + +Erroneous code example: + +```compile_fail,E0511 +#![feature(platform_intrinsics)] + +extern "platform-intrinsic" { + 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(platform_intrinsics)] + +#[repr(simd)] +#[derive(Copy, Clone)] +struct i32x2(i32, i32); + +extern "platform-intrinsic" { + fn simd_add<T>(a: T, b: T) -> T; +} + +unsafe { simd_add(i32x2(0, 0), i32x2(1, 2)); } // ok! +``` |