llvm-project/llvm/lib/IR
Maksim Panchenko cce239c45d HHVM calling conventions.
HHVM calling convention, hhvmcc, is used by HHVM JIT for
functions in translated cache. We currently support LLVM back end to
generate code for X86-64 and may support other architectures in the
future.

In HHVM calling convention any GP register could be used to pass and
return values, with the exception of R12 which is reserved for
thread-local area and is callee-saved. Other than R12, we always
pass RBX and RBP as args, which are our virtual machine's stack pointer
and frame pointer respectively.

When we enter translation cache via hhvmcc function, we expect
the stack to be aligned at 16 bytes, i.e. skewed by 8 bytes as opposed
to standard ABI alignment. This affects stack object alignment and stack
adjustments for function calls.

One extra calling convention, hhvm_ccc, is used to call C++ helpers from
HHVM's translation cache. It is almost identical to standard C calling
convention with an exception of first argument which is passed in RBP
(before we use RDI, RSI, etc.)

Differential Revision: http://reviews.llvm.org/D12681

llvm-svn: 248832
2015-09-29 22:09:16 +00:00
..
AsmWriter.cpp HHVM calling conventions. 2015-09-29 22:09:16 +00:00
AttributeImpl.h llvm/lib/IR/AttributeImpl.h: Move comment block not to cover typedef, introduced in r244164. [-Wdocumentation] 2015-08-06 09:49:17 +00:00
Attributes.cpp [IR] Have AttrBuilder::clear clear `TargetDepAttrs`. 2015-09-03 22:27:42 +00:00
AutoUpgrade.cpp [X86][SSE] Replace 128-bit SSE41 PMOVSX intrinsics with native IR 2015-09-23 08:48:33 +00:00
BasicBlock.cpp Convert a bunch of loops to foreach. NFC. 2015-08-06 20:22:46 +00:00
CMakeLists.txt [PR24785] Appease MSC18 to tweak optimizations. 2015-09-11 17:08:02 +00:00
Comdat.cpp IR: Add COMDATs to the IR 2014-06-27 18:19:56 +00:00
ConstantFold.cpp Remove roundingMode argument in APFloat::mod 2015-09-21 19:29:25 +00:00
ConstantFold.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
ConstantRange.cpp [ConstantRange] Split makeICmpRegion in two. 2015-03-18 00:41:24 +00:00
Constants.cpp [opaque pointer type]: Pass explicit pointee type when building a constant GEP. 2015-08-21 20:16:51 +00:00
ConstantsContext.h [opaque pointer type] Avoid using pointee types to retrieve InlineAsm's function type 2015-07-28 00:06:38 +00:00
Core.cpp Revert "[opaque pointer type] Pass GlobalAlias the actual pointer type rather than decomposing it into pointee type + address space" 2015-09-14 18:01:59 +00:00
DIBuilder.cpp AsmPrinter: Allow null subroutine type 2015-08-28 21:38:24 +00:00
DataLayout.cpp Revert "Add const to a bunch of Type* in DataLayout. NFC." 2015-07-27 17:15:28 +00:00
DebugInfo.cpp DI: Simplify DebugInfoFinder::processType(), NFC 2015-07-24 20:56:10 +00:00
DebugInfoMetadata.cpp DI: Set DILexicalBlock columns >= 65536 to 0/unknown 2015-08-28 22:58:50 +00:00
DebugLoc.cpp IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
DiagnosticInfo.cpp Print vectorization analysis when loop hint is specified. 2015-08-11 01:09:15 +00:00
DiagnosticPrinter.cpp MIR Serialization: Connect the machine function analysis pass to the MIR parser. 2015-06-15 20:30:22 +00:00
Dominators.cpp Constant propagation after hitting assume(cmp) bugfix 2015-09-02 19:59:59 +00:00
Function.cpp [TableGen] Allow TokenTy in intrinsic signatures 2015-09-02 13:36:25 +00:00
GCOV.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
GVMaterializer.cpp
Globals.cpp [opaque pointer types] Add an explicit value type to GlobalObject 2015-09-14 21:47:27 +00:00
IRBuilder.cpp IRBuilder: Allow globals to be constructed in a specific address space 2015-06-19 02:12:07 +00:00
IRPrintingPasses.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
InlineAsm.cpp Fix SEGV in InlineAsm::ConstraintInfo::Parse. 2015-09-03 15:41:37 +00:00
Instruction.cpp [IR] Conservatively mark 'catchpad' as accessing memory 2015-09-10 18:50:09 +00:00
Instructions.cpp [IR] Add operand bundles to CallInst and InvokeInst. 2015-09-24 19:14:18 +00:00
IntrinsicInst.cpp IR: Split Metadata from Value 2014-12-09 18:38:53 +00:00
LLVMBuild.txt
LLVMContext.cpp Introduce !align metadata for load instruction 2015-09-28 17:41:08 +00:00
LLVMContextImpl.cpp [IR] Add operand bundles to CallInst and InvokeInst. 2015-09-24 19:14:18 +00:00
LLVMContextImpl.h [IR] Add operand bundles to CallInst and InvokeInst. 2015-09-24 19:14:18 +00:00
LegacyPassManager.cpp [LPM] Simplify this code and fix a compile error for compilers that 2015-09-10 04:22:36 +00:00
MDBuilder.cpp add unpredictable metadata type for control flow 2015-09-02 19:06:43 +00:00
Makefile
Mangler.cpp Remove unused arguments and move ManglerPrefixTy to the implementation. 2015-06-23 14:11:09 +00:00
Metadata.cpp Rollback of commit "Repress sanitization on User dtor." 2015-08-31 21:06:08 +00:00
MetadataImpl.h DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
MetadataTracking.cpp IR: Store RAUW support and Context in the same pointer, NFC 2015-01-19 19:02:06 +00:00
Module.cpp [IR] Add operand bundles to CallInst and InvokeInst. 2015-09-24 19:14:18 +00:00
Operator.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Pass.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
PassManager.cpp [PM] Push the debug option for the new pass manager into the opt tool 2015-01-13 22:42:38 +00:00
PassRegistry.cpp Revert r231276 (including r231277): Add a lock() function in PassRegistry to speed up multi-thread synchronization. 2015-03-05 17:53:00 +00:00
Statepoint.cpp Add invoke related functionality into StatepointSite classes. 2015-02-19 11:02:11 +00:00
SymbolTableListTraitsImpl.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Type.cpp [IR] Simplify code. No functionality change. 2015-08-16 21:16:26 +00:00
TypeFinder.cpp Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
Use.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
User.cpp [IR] Teach `llvm::User` to co-allocate a descriptor. 2015-09-24 01:00:49 +00:00
Value.cpp Remove handling of AddrSpaceCast in stripAndAccumulateInBoundsConstantOffsets 2015-09-23 19:48:43 +00:00
ValueSymbolTable.cpp Changed renaming of local symbols by inserting a dot vefore the numeric suffix. 2015-05-12 16:47:30 +00:00
ValueTypes.cpp SelectionDAG: Support Expand of f16 extloads 2015-09-09 01:12:27 +00:00
Verifier.cpp [WinEH] Add llvm.eh.exceptionpointer intrinsic 2015-09-03 09:15:32 +00:00
module.modulemap [modules] Add module maps for LLVM. These are not quite ready for prime-time 2014-05-21 02:46:14 +00:00