[StackMaps] Increase the size of the "location size" field
Summary:
In some cases LLVM (especially the SLP vectorizer) will create vectors
that are 256 bytes (or larger). Given that this is intentional[0] is
likely to get more common, this patch updates the StackMap binary
format to deal with the spill locations for said vectors.
This change also bumps the stack map version from 2 to 3.
[0]: https://reviews.llvm.org/D32533#738350
Reviewers: reames, kavon, skatkov, javed.absar
Subscribers: mcrosier, nemanjai, llvm-commits
Differential Revision: https://reviews.llvm.org/D32629
llvm-svn: 301615
diff --git a/llvm/docs/StackMaps.rst b/llvm/docs/StackMaps.rst
index 0cb40d5..99c5e5f 100644
--- a/llvm/docs/StackMaps.rst
+++ b/llvm/docs/StackMaps.rst
@@ -319,7 +319,7 @@
.. code-block:: none
Header {
- uint8 : Stack Map Version (current version is 2)
+ uint8 : Stack Map Version (current version is 3)
uint8 : Reserved (expected to be 0)
uint16 : Reserved (expected to be 0)
}
@@ -341,10 +341,13 @@
uint16 : NumLocations
Location[NumLocations] {
uint8 : Register | Direct | Indirect | Constant | ConstantIndex
- uint8 : Location Size
+ uint8 : Reserved (expected to be 0)
+ uint16 : Location Size
uint16 : Dwarf RegNum
+ uint16 : Reserved (expected to be 0)
int32 : Offset or SmallConstant
}
+ uint32 : Padding (only if required to align to 8 byte)
uint16 : Padding
uint16 : NumLiveOuts
LiveOuts[NumLiveOuts]