diff options
author | Robert Mustacchi <rm@joyent.com> | 2019-04-06 01:05:16 +0000 |
---|---|---|
committer | Robert Mustacchi <rm@joyent.com> | 2019-04-19 23:05:44 +0000 |
commit | 415cf8a5eb8e0e24078e9823addd997910540da3 (patch) | |
tree | b456a6ef7174a0ccae3d15e8ac3deba973f6392f /usr/src/uts | |
parent | dc2a4177cf7c52e616cda6ed9f21279440d7122c (diff) | |
download | illumos-joyent-415cf8a5eb8e0e24078e9823addd997910540da3.tar.gz |
OS-7710 Need support for new Cascade Lake Instructions
Reviewed by: Hans Rosenfeld <hans.rosenfeld@joyent.com>
Reviewed by: Dan McDonald <danmcd@joyent.com>
Approved by: Dan McDonald <danmcd@joyent.com>
Diffstat (limited to 'usr/src/uts')
-rw-r--r-- | usr/src/uts/common/sys/auxv_386.h | 6 | ||||
-rw-r--r-- | usr/src/uts/i86pc/os/cpuid.c | 13 | ||||
-rw-r--r-- | usr/src/uts/intel/sys/x86_archext.h | 5 |
3 files changed, 18 insertions, 6 deletions
diff --git a/usr/src/uts/common/sys/auxv_386.h b/usr/src/uts/common/sys/auxv_386.h index 151912fd03..a1183b9c6b 100644 --- a/usr/src/uts/common/sys/auxv_386.h +++ b/usr/src/uts/common/sys/auxv_386.h @@ -20,7 +20,7 @@ */ /* * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright (c) 2018, Joyent, Inc. + * Copyright 2019, Joyent, Inc. */ #ifndef _SYS_AUXV_386_H @@ -112,9 +112,11 @@ extern "C" { #define AV_386_2_CLWB 0x00800000 /* CLWB insn */ #define AV_386_2_MONITORX 0x01000000 /* MONITORX insns */ #define AV_386_2_CLZERO 0x02000000 /* CLZERO */ +#define AV_386_2_AVX512_VNNI 0x04000000 /* AVX512_VNNI */ #define FMT_AV_386_2 \ - "\32clzero\31monitorx\030clwb\027clflushopt\026fsgsbase" \ + "\033avx512_vnni" \ + "\032clzero\031monitorx\030clwb\027clflushopt\026fsgsbase" \ "\025sha\024avx512_4fmaps\023avx512_4nniw\022avx512vpopcntdq" \ "\021avx512vbmi\020avx512vl\017avx512bw\016avx512cd" \ "\015avx512er\014avx512pf\013avx512ifma\012avx512dq\011avx512f" \ diff --git a/usr/src/uts/i86pc/os/cpuid.c b/usr/src/uts/i86pc/os/cpuid.c index cf4ee31df7..619239343f 100644 --- a/usr/src/uts/i86pc/os/cpuid.c +++ b/usr/src/uts/i86pc/os/cpuid.c @@ -32,7 +32,7 @@ * Portions Copyright 2009 Advanced Micro Devices, Inc. */ /* - * Copyright (c) 2019, Joyent, Inc. + * Copyright 2019, Joyent, Inc. */ /* @@ -1035,7 +1035,8 @@ static char *x86_feature_names[NUM_X86_FEATURES] = { "clzero", "xop", "fma4", - "tbm" + "tbm", + "avx512_vnni" }; boolean_t @@ -2907,6 +2908,10 @@ cpuid_pass1(cpu_t *cpu, uchar_t *featureset) add_x86_feature(featureset, X86FSET_AVX512VBMI); if (cpi->cpi_std[7].cp_ecx & + CPUID_INTC_ECX_7_0_AVX512VNNI) + add_x86_feature(featureset, + X86FSET_AVX512VNNI); + if (cpi->cpi_std[7].cp_ecx & CPUID_INTC_ECX_7_0_AVX512VPOPCDQ) add_x86_feature(featureset, X86FSET_AVX512VPOPCDQ); @@ -3576,6 +3581,8 @@ cpuid_pass2(cpu_t *cpu) remove_x86_feature(x86_featureset, X86FSET_AVX512VBMI); remove_x86_feature(x86_featureset, + X86FSET_AVX512VNNI); + remove_x86_feature(x86_featureset, X86FSET_AVX512VPOPCDQ); remove_x86_feature(x86_featureset, X86FSET_AVX512NNIW); @@ -4390,6 +4397,8 @@ cpuid_pass4(cpu_t *cpu, uint_t *hwcap_out) if (*ecx_7 & CPUID_INTC_ECX_7_0_AVX512VBMI) hwcap_flags_2 |= AV_386_2_AVX512VBMI; + if (*ecx_7 & CPUID_INTC_ECX_7_0_AVX512VNNI) + hwcap_flags_2 |= AV_386_2_AVX512_VNNI; if (*ecx_7 & CPUID_INTC_ECX_7_0_AVX512VPOPCDQ) hwcap_flags_2 |= AV_386_2_AVX512VPOPCDQ; diff --git a/usr/src/uts/intel/sys/x86_archext.h b/usr/src/uts/intel/sys/x86_archext.h index 0b94d9f986..74a6c11837 100644 --- a/usr/src/uts/intel/sys/x86_archext.h +++ b/usr/src/uts/intel/sys/x86_archext.h @@ -27,7 +27,7 @@ * All rights reserved. */ /* - * Copyright (c) 2019, Joyent, Inc. + * Copyright 2019, Joyent, Inc. * Copyright 2012 Jens Elkner <jel+illumos@cs.uni-magdeburg.de> * Copyright 2012 Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org> * Copyright 2014 Josef 'Jeff' Sipek <jeffpc@josefsipek.net> @@ -599,6 +599,7 @@ extern "C" { #define X86FSET_XOP 88 #define X86FSET_FMA4 89 #define X86FSET_TBM 90 +#define X86FSET_AVX512VNNI 91 /* * Intel Deep C-State invariant TSC in leaf 0x80000007. @@ -968,7 +969,7 @@ extern "C" { #if defined(_KERNEL) || defined(_KMEMUSER) -#define NUM_X86_FEATURES 91 +#define NUM_X86_FEATURES 92 extern uchar_t x86_featureset[]; extern void free_x86_featureset(void *featureset); |