[PATCH] X86: Implement the vectorcall calling convention

Reid Kleckner rnk at google.com
Thu Oct 23 15:00:40 PDT 2014


Hi majnemer,

This is a Microsoft calling convention that supports both x86 and x86_64
subtargets. It passes vector and floating point arguments in XMM0-XMM5,
and passes them indirectly once they are consumed.

Homogenous vector aggregates of up to four elements can be passed in
sequential vector registers, but this part is not yet implemented in
LLVM.

On 32-bit x86, it is similar to fastcall in that it uses ecx:edx as
integer register parameters and is callee cleanup. On x86_64, it
delegates to the normal win64 calling convention.

http://reviews.llvm.org/D5943

Files:
  include/llvm/IR/CallingConv.h
  lib/AsmParser/LLLexer.cpp
  lib/AsmParser/LLParser.cpp
  lib/AsmParser/LLToken.h
  lib/IR/AsmWriter.cpp
  lib/IR/Mangler.cpp
  lib/Target/X86/X86CallingConv.h
  lib/Target/X86/X86CallingConv.td
  test/CodeGen/X86/vectorcall.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D5943.15351.patch
Type: text/x-patch
Size: 16315 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141023/8fd2f504/attachment.bin>


More information about the llvm-commits mailing list