---
x86-64-ABI/low-level-sys-info.tex | 33 +++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/x86-64-ABI/low-level-sys-info.tex b/x86-64-ABI/low-level-sys-info.tex
index e4fd6d9..9372eb3 100644
--- a/x86-64-ABI/low-level-sys-info.tex
+++ b/x86-64-ABI/low-level-sys-info.tex
@@ -274,6 +274,33 @@ but otherwise behave identically. The only exceptions are that
\code{__m128}, \code{__m256} and \code{__m512} must always be aligned
properly.
+\subsubsection{Fundamental Types of N-bit Integers}
+
+\texttt{_BitInt(N)} from ISO/IEC WG14 N2763, where \code{N} is an
+integral constant expression representing the exact number of bits to
+be used to represent the type, is a family of integer types.
+
+\begin{itemize}
+ \item \texttt{_BitInt(N)} types are signed by default, and
+ \texttt{unsigned _BitInt(N)} types are unsigned.
+ \item \texttt{_BitInt(N)} types are stored in little-endian order in
+ memory. Bits in each byte are allocated from bit 0 to bit 7.
+ \item For N <= 64, they have the same size and alignment as
+ the smallest of (signed and unsigned) \code{char}, \code{short},
+ \code{int}, \code{long} and \code{long long} types that can contain
+ them.
+ \item For N > 64, they are treated as struct of 64-bit integer chunks
+ and are aligned to 64 bits. The number of chunks is the smallest
+ number that can contain the type. The size of these types is the
+ smallest multiple of the 64-bit chunks greater than or equal to N.
+ \item The value of the unused bits beyond the width of the
+ \texttt{_BitInt(N)} value but within the size of the
+ \texttt{_BitInt(N)} are unspecified when stored in memory or register.
+\end{itemize}
+
+This permits the use of these types in allocated arrays using the common
+sizeof(Array)/sizeof(ElementType) pattern.
+
\subsubsection{Aggregates and Unions}
Structures and unions assume the alignment of their most strictly
@@ -563,6 +590,12 @@ typedef struct {