aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Hansen <dave.hansen@linux.intel.com>2015-09-02 19:31:29 -0400
committerIngo Molnar <mingo@kernel.org>2015-09-14 06:22:01 -0400
commit060dd0f712562925662c65b90d225d82304764f7 (patch)
tree15970b793b9b290ab676e863849a6a6ee6ce8e12
parent83aa3c45307228af4329cbb915a2f2142e5479ad (diff)
x86/fpu: Add C structures for AVX-512 state components
AVX-512 has 3 separate state components: 1. opmask registers 2. zmm upper half of registers 0-15 3. new zmm registers (16-31) This patch adds C structures for the three components along with a few comments mostly lifted from the SDM to explain what they do. This will allow us to check our structures against what the hardware tells us about the sizes of the components. Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com> Cc: Andy Lutomirski <luto@amacapital.net> Cc: Borislav Petkov <bp@alien8.de> Cc: Brian Gerst <brgerst@gmail.com> Cc: Denys Vlasenko <dvlasenk@redhat.com> Cc: Fenghua Yu <fenghua.yu@intel.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Tim Chen <tim.c.chen@linux.intel.com> Cc: dave@sr71.net Cc: linux-kernel@vger.kernel.org Link: http://lkml.kernel.org/r/20150902233129.F2433B98@viggo.jf.intel.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r--arch/x86/include/asm/fpu/types.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/arch/x86/include/asm/fpu/types.h b/arch/x86/include/asm/fpu/types.h
index eb0c9a237afa..1c6f6ac52ad0 100644
--- a/arch/x86/include/asm/fpu/types.h
+++ b/arch/x86/include/asm/fpu/types.h
@@ -131,6 +131,12 @@ enum xfeature {
131struct reg_128_bit { 131struct reg_128_bit {
132 u8 regbytes[128/8]; 132 u8 regbytes[128/8];
133}; 133};
134struct reg_256_bit {
135 u8 regbytes[256/8];
136};
137struct reg_512_bit {
138 u8 regbytes[512/8];
139};
134 140
135/* 141/*
136 * State component 2: 142 * State component 2:
@@ -179,6 +185,33 @@ struct mpx_bndcsr_state {
179 }; 185 };
180} __packed; 186} __packed;
181 187
188/* AVX-512 Components: */
189
190/*
191 * State component 5 is used for the 8 64-bit opmask registers
192 * k0-k7 (opmask state).
193 */
194struct avx_512_opmask_state {
195 u64 opmask_reg[8];
196} __packed;
197
198/*
199 * State component 6 is used for the upper 256 bits of the
200 * registers ZMM0-ZMM15. These 16 256-bit values are denoted
201 * ZMM0_H-ZMM15_H (ZMM_Hi256 state).
202 */
203struct avx_512_zmm_uppers_state {
204 struct reg_256_bit zmm_upper[16];
205} __packed;
206
207/*
208 * State component 7 is used for the 16 512-bit registers
209 * ZMM16-ZMM31 (Hi16_ZMM state).
210 */
211struct avx_512_hi16_state {
212 struct reg_512_bit hi16_zmm[16];
213} __packed;
214
182struct xstate_header { 215struct xstate_header {
183 u64 xfeatures; 216 u64 xfeatures;
184 u64 xcomp_bv; 217 u64 xcomp_bv;