+typedef struct { uint64_t lo64, hi64; }__attribute__ ((packed)) reg128_t;
+typedef struct { reg128_t lo128, hi128; }__attribute__ ((packed)) reg256_t;
+typedef struct { reg256_t lo256, hi256; }__attribute__ ((packed)) reg512_t;
+
+struct x86_avx_thread_state {
+ struct x86_fx_thread_state fp;
+ struct xsave_header _xh; /* Offset 512, xsave header */
+ reg128_t x_YMM_Hi128[16]; /* Offset 576, high YMMs `*/
+ /* Offset 832, end */
+}__attribute__ ((packed));
+
+struct x86_avx512_thread_state {
+ struct x86_fx_thread_state fp;
+ struct xsave_header _xh; /* Offset 512, xsave header */
+ reg128_t x_YMM_Hi128[16]; /* Offset 576, high YMMs */
+
+ uint64_t x_pad[16]; /* Offset 832, unused AMD LWP */
+ uint64_t x_BNDREGS[8]; /* Offset 960, unused MPX */
+ uint64_t x_BNDCTL[8]; /* Offset 1024, unused MPX */
+
+ uint64_t x_Opmask[8]; /* Offset 1088, K0-K7 */
+ reg256_t x_ZMM_Hi256[16]; /* Offset 1152, ZMM0..15[511:256] */
+ reg512_t x_Hi16_ZMM[16]; /* Offset 1664, ZMM16..31[511:0] */
+ /* Offset 2688, end */
+}__attribute__ ((packed));
+
+typedef union {
+ struct x86_fx_thread_state fx;
+ struct x86_avx_thread_state avx;
+#if !defined(RC_HIDE_XNU_J137)
+ struct x86_avx512_thread_state avx512;
+#endif
+} x86_ext_thread_state_t;
+
+#define EVEX_PREFIX 0x62 /* AVX512's EVEX vector operation prefix */
+#define VEX2_PREFIX 0xC5 /* VEX 2-byte prefix for Opmask instructions */
+#define VEX3_PREFIX 0xC4 /* VEX 3-byte prefix for Opmask instructions */