diff options
| author | Tim Northover <tnorthover@apple.com> | 2017-02-08 17:57:20 +0000 |
|---|---|---|
| committer | Tim Northover <tnorthover@apple.com> | 2017-02-08 17:57:20 +0000 |
| commit | f19d467ff6c7c14af97b0bdc52f1980488fca0e3 (patch) | |
| tree | f3756bb377092a26251a082249080b32e7d41ce1 /llvm/include | |
| parent | 3bceebb0e0644e97e4c0f181c2be5dc1554004cf (diff) | |
| download | bcm5719-llvm-f19d467ff6c7c14af97b0bdc52f1980488fca0e3.tar.gz bcm5719-llvm-f19d467ff6c7c14af97b0bdc52f1980488fca0e3.zip | |
GlobalISel: translate @llvm.va_start intrinsic.
Because we need to preserve the memory access being performed we need a
separate instruction to represent this.
llvm-svn: 294492
Diffstat (limited to 'llvm/include')
| -rw-r--r-- | llvm/include/llvm/Target/GenericOpcodes.td | 7 | ||||
| -rw-r--r-- | llvm/include/llvm/Target/TargetLowering.h | 5 | ||||
| -rw-r--r-- | llvm/include/llvm/Target/TargetOpcodes.def | 3 |
3 files changed, 15 insertions, 0 deletions
diff --git a/llvm/include/llvm/Target/GenericOpcodes.td b/llvm/include/llvm/Target/GenericOpcodes.td index d3b2835d1bd..6352a6990f2 100644 --- a/llvm/include/llvm/Target/GenericOpcodes.td +++ b/llvm/include/llvm/Target/GenericOpcodes.td @@ -91,6 +91,13 @@ def G_FCONSTANT : Instruction { let hasSideEffects = 0; } +def G_VASTART : Instruction { + let OutOperandList = (outs); + let InOperandList = (ins type0:$list); + let hasSideEffects = 0; + let mayStore = 1; +} + //------------------------------------------------------------------------------ // Binary ops. //------------------------------------------------------------------------------ diff --git a/llvm/include/llvm/Target/TargetLowering.h b/llvm/include/llvm/Target/TargetLowering.h index bc98673e029..68696763fca 100644 --- a/llvm/include/llvm/Target/TargetLowering.h +++ b/llvm/include/llvm/Target/TargetLowering.h @@ -987,6 +987,11 @@ public: return GatherAllAliasesMaxDepth; } + /// Returns the size of the platform's va_list object. + virtual unsigned getVaListSizeInBits(const DataLayout &DL) const { + return getPointerTy(DL).getSizeInBits(); + } + /// \brief Get maximum # of store operations permitted for llvm.memset /// /// This function returns the maximum number of store operations permitted diff --git a/llvm/include/llvm/Target/TargetOpcodes.def b/llvm/include/llvm/Target/TargetOpcodes.def index 290e3ff78f0..a0d6a6309dc 100644 --- a/llvm/include/llvm/Target/TargetOpcodes.def +++ b/llvm/include/llvm/Target/TargetOpcodes.def @@ -280,6 +280,9 @@ HANDLE_TARGET_OPCODE(G_CONSTANT) /// Generic floating constant. HANDLE_TARGET_OPCODE(G_FCONSTANT) +/// Generic va_start instruction. Stores to its one pointer operand. +HANDLE_TARGET_OPCODE(G_VASTART) + // Generic sign extend HANDLE_TARGET_OPCODE(G_SEXT) |

