summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86CallingConv.h
diff options
context:
space:
mode:
authorOren Ben Simhon <oren.ben.simhon@intel.com>2016-11-17 09:59:40 +0000
committerOren Ben Simhon <oren.ben.simhon@intel.com>2016-11-17 09:59:40 +0000
commit489d6eff4fecd00aa2a384dbe1991251b1175a01 (patch)
tree1dfdcca75f40a02363028b5afe97567889e06a3b /llvm/lib/Target/X86/X86CallingConv.h
parent9230db94b7b5c6b370fe7c297db79a3128fd4637 (diff)
downloadbcm5719-llvm-489d6eff4fecd00aa2a384dbe1991251b1175a01.tar.gz
bcm5719-llvm-489d6eff4fecd00aa2a384dbe1991251b1175a01.zip
[X86] RegCall - Handling v64i1 in 32/64 bit target
Register Calling Convention defines a new behavior for v64i1 types. This type should be saved in GPR. However for 32 bit machine we need to split the value into 2 GPRs (because each is 32 bit). Differential Revision: https://reviews.llvm.org/D26181 llvm-svn: 287217
Diffstat (limited to 'llvm/lib/Target/X86/X86CallingConv.h')
-rw-r--r--llvm/lib/Target/X86/X86CallingConv.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86CallingConv.h b/llvm/lib/Target/X86/X86CallingConv.h
index 39f442c2ea6..41fbd2e4474 100644
--- a/llvm/lib/Target/X86/X86CallingConv.h
+++ b/llvm/lib/Target/X86/X86CallingConv.h
@@ -21,6 +21,14 @@
namespace llvm {
+/// When regcall calling convention compiled to 32 bit arch, special treatment
+/// is required for 64 bit masks.
+/// The value should be assigned to two GPRs.
+/// @return true if registers were allocated and false otherwise
+bool CC_X86_32_RegCall_Assign2Regs(unsigned &ValNo, MVT &ValVT, MVT &LocVT,
+ CCValAssign::LocInfo &LocInfo,
+ ISD::ArgFlagsTy &ArgFlags, CCState &State);
+
inline bool CC_X86_32_VectorCallIndirect(unsigned &ValNo, MVT &ValVT,
MVT &LocVT,
CCValAssign::LocInfo &LocInfo,
OpenPOWER on IntegriCloud