From 88fc6dc369394f3ae31a1db1c10e88cee59eefb5 Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Fri, 4 Aug 2017 00:19:58 +0000 Subject: [PATCH] Add support for Vector Pack Pixel on PowerPC The llvm intrinsic uses signed integers. --- src/etc/platform-intrinsics/powerpc.json | 7 +++++++ src/librustc_platform_intrinsics/powerpc.rs | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/src/etc/platform-intrinsics/powerpc.json b/src/etc/platform-intrinsics/powerpc.json index 2667dd5f7266..a5da54b1e93d 100644 --- a/src/etc/platform-intrinsics/powerpc.json +++ b/src/etc/platform-intrinsics/powerpc.json @@ -135,6 +135,13 @@ "llvm": "vpk{1.kind}{1.data_type_short}{0.kind}s", "ret": "u(8-16)", "args": ["0Ws", "1"] + }, + { + "intrinsic": "packpx", + "width": [128], + "llvm": "vpkpx", + "ret": "s16", + "args": ["s32", "s32"] } ] } diff --git a/src/librustc_platform_intrinsics/powerpc.rs b/src/librustc_platform_intrinsics/powerpc.rs index 985b470ab692..c3eaf3d821e1 100644 --- a/src/librustc_platform_intrinsics/powerpc.rs +++ b/src/librustc_platform_intrinsics/powerpc.rs @@ -312,6 +312,11 @@ pub fn find(name: &str) -> Option { output: &::U16x8, definition: Named("llvm.ppc.altivec.vpkswus") }, + "_vec_packpx" => Intrinsic { + inputs: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS }, + output: &::I16x8, + definition: Named("llvm.ppc.altivec.vpkpx") + }, _ => return None, }) }