llvm: Add support for vectorcall (X86_VectorCall) convention

This commit is contained in:
Steffen 2015-12-26 21:29:28 +01:00
parent 3150dddb0f
commit 9af75d2bec
4 changed files with 7 additions and 1 deletions

View file

@ -478,6 +478,7 @@ are:
* `aapcs` * `aapcs`
* `cdecl` * `cdecl`
* `fastcall` * `fastcall`
* `vectorcall`
* `Rust` * `Rust`
* `rust-intrinsic` * `rust-intrinsic`
* `system` * `system`

View file

@ -85,6 +85,7 @@ pub enum CallConv {
X86StdcallCallConv = 64, X86StdcallCallConv = 64,
X86FastcallCallConv = 65, X86FastcallCallConv = 65,
X86_64_Win64 = 79, X86_64_Win64 = 79,
X86_VectorCall = 80
} }
#[derive(Copy, Clone)] #[derive(Copy, Clone)]

View file

@ -35,7 +35,8 @@ use std::cmp;
use std::iter::once; use std::iter::once;
use libc::c_uint; use libc::c_uint;
use syntax::abi::{Cdecl, Aapcs, C, Win64, Abi}; 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::attr;
use syntax::codemap::Span; use syntax::codemap::Span;
use syntax::parse::token::{InternedString, special_idents}; use syntax::parse::token::{InternedString, special_idents};
@ -104,6 +105,7 @@ pub fn llvm_calling_convention(ccx: &CrateContext,
Stdcall => llvm::X86StdcallCallConv, Stdcall => llvm::X86StdcallCallConv,
Fastcall => llvm::X86FastcallCallConv, Fastcall => llvm::X86FastcallCallConv,
Vectorcall => llvm::X86_VectorCall,
C => llvm::CCallConv, C => llvm::CCallConv,
Win64 => llvm::X86_64_Win64, Win64 => llvm::X86_64_Win64,

View file

@ -39,6 +39,7 @@ pub enum Abi {
Cdecl, Cdecl,
Stdcall, Stdcall,
Fastcall, Fastcall,
Vectorcall,
Aapcs, Aapcs,
Win64, Win64,
@ -85,6 +86,7 @@ const AbiDatas: &'static [AbiData] = &[
AbiData {abi: Cdecl, name: "cdecl" }, AbiData {abi: Cdecl, name: "cdecl" },
AbiData {abi: Stdcall, name: "stdcall" }, AbiData {abi: Stdcall, name: "stdcall" },
AbiData {abi: Fastcall, name: "fastcall" }, AbiData {abi: Fastcall, name: "fastcall" },
AbiData {abi: Vectorcall, name: "vectorcall"},
AbiData {abi: Aapcs, name: "aapcs" }, AbiData {abi: Aapcs, name: "aapcs" },
AbiData {abi: Win64, name: "win64" }, AbiData {abi: Win64, name: "win64" },