summaryrefslogtreecommitdiff
path: root/usr/src/uts
diff options
context:
space:
mode:
authorRobert Mustacchi <rm@joyent.com>2019-04-06 01:05:16 +0000
committerRobert Mustacchi <rm@joyent.com>2019-04-19 23:05:44 +0000
commit415cf8a5eb8e0e24078e9823addd997910540da3 (patch)
treeb456a6ef7174a0ccae3d15e8ac3deba973f6392f /usr/src/uts
parentdc2a4177cf7c52e616cda6ed9f21279440d7122c (diff)
downloadillumos-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.h6
-rw-r--r--usr/src/uts/i86pc/os/cpuid.c13
-rw-r--r--usr/src/uts/intel/sys/x86_archext.h5
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);