From 9af75d2bec9e98dd1cf4a24bd93a94a4e9ba47f9 Mon Sep 17 00:00:00 2001 From: Steffen Date: Sat, 26 Dec 2015 21:29:28 +0100 Subject: [PATCH] llvm: Add support for vectorcall (X86_VectorCall) convention --- src/doc/book/ffi.md | 1 + src/librustc_llvm/lib.rs | 1 + src/librustc_trans/trans/foreign.rs | 4 +++- src/libsyntax/abi.rs | 2 ++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/doc/book/ffi.md b/src/doc/book/ffi.md index c3896e4e9c55..e4a67112f18d 100644 --- a/src/doc/book/ffi.md +++ b/src/doc/book/ffi.md @@ -478,6 +478,7 @@ are: * `aapcs` * `cdecl` * `fastcall` +* `vectorcall` * `Rust` * `rust-intrinsic` * `system` diff --git a/src/librustc_llvm/lib.rs b/src/librustc_llvm/lib.rs index e2217e367a08..fc7fa299fb8f 100644 --- a/src/librustc_llvm/lib.rs +++ b/src/librustc_llvm/lib.rs @@ -85,6 +85,7 @@ pub enum CallConv { X86StdcallCallConv = 64, X86FastcallCallConv = 65, X86_64_Win64 = 79, + X86_VectorCall = 80 } #[derive(Copy, Clone)] diff --git a/src/librustc_trans/trans/foreign.rs b/src/librustc_trans/trans/foreign.rs index 9012ecaa2134..6d264fc7813e 100644 --- a/src/librustc_trans/trans/foreign.rs +++ b/src/librustc_trans/trans/foreign.rs @@ -35,7 +35,8 @@ use std::cmp; use std::iter::once; use libc::c_uint; use syntax::abi::{Cdecl, Aapcs, C, Win64, Abi}; -use syntax::abi::{PlatformIntrinsic, RustIntrinsic, Rust, RustCall, Stdcall, Fastcall, System}; +use syntax::abi::{PlatformIntrinsic, RustIntrinsic, Rust, RustCall, Stdcall}; +use syntax::abi::{Fastcall, Vectorcall, System}; use syntax::attr; use syntax::codemap::Span; use syntax::parse::token::{InternedString, special_idents}; @@ -104,6 +105,7 @@ pub fn llvm_calling_convention(ccx: &CrateContext, Stdcall => llvm::X86StdcallCallConv, Fastcall => llvm::X86FastcallCallConv, + Vectorcall => llvm::X86_VectorCall, C => llvm::CCallConv, Win64 => llvm::X86_64_Win64, diff --git a/src/libsyntax/abi.rs b/src/libsyntax/abi.rs index ca44dec627e3..a16f232f4a1c 100644 --- a/src/libsyntax/abi.rs +++ b/src/libsyntax/abi.rs @@ -39,6 +39,7 @@ pub enum Abi { Cdecl, Stdcall, Fastcall, + Vectorcall, Aapcs, Win64, @@ -85,6 +86,7 @@ const AbiDatas: &'static [AbiData] = &[ AbiData {abi: Cdecl, name: "cdecl" }, AbiData {abi: Stdcall, name: "stdcall" }, AbiData {abi: Fastcall, name: "fastcall" }, + AbiData {abi: Vectorcall, name: "vectorcall"}, AbiData {abi: Aapcs, name: "aapcs" }, AbiData {abi: Win64, name: "win64" },