summaryrefslogtreecommitdiff
path: root/usr/src/common
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/common
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/common')
-rw-r--r--usr/src/common/dis/i386/dis_tables.c11
-rw-r--r--usr/src/common/elfcap/elfcap.c6
-rw-r--r--usr/src/common/elfcap/elfcap.h4
3 files changed, 15 insertions, 6 deletions
diff --git a/usr/src/common/dis/i386/dis_tables.c b/usr/src/common/dis/i386/dis_tables.c
index afb2b551b2..12a1112d8a 100644
--- a/usr/src/common/dis/i386/dis_tables.c
+++ b/usr/src/common/dis/i386/dis_tables.c
@@ -21,7 +21,7 @@
*/
/*
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2018 Joyent, Inc.
+ * Copyright 2019, Joyent, Inc.
*/
/*
@@ -1484,7 +1484,7 @@ const instable_t dis_opAVX62[256] = {
/* [48] */ INVALID, INVALID, INVALID, INVALID,
/* [4C] */ INVALID, INVALID, INVALID, INVALID,
-/* [50] */ INVALID, INVALID, INVALID, INVALID,
+/* [50] */ TNSZ("vpdpbusd",EVEX_RMrX,16),TNSZ("vpdpbusds",EVEX_RMrX,16),TNSZ("vpdpwssd",EVEX_RMrX,16),TNSZ("vpdpwssds",EVEX_RMrX,16),
/* [54] */ TSd("vandp",EVEX_RMrX), TSd("vandnp",EVEX_RMrX), TSd("vorp",EVEX_RMrX), TSd("vxorp",EVEX_RMrX),
/* [58] */ INVALID, INVALID, INVALID, INVALID,
/* [5C] */ INVALID, INVALID, INVALID, INVALID,
@@ -2664,6 +2664,12 @@ dtrace_evex_mnem_adjust(dis86_t *x, instable_t *dp, uint_t vex_W,
uint_t evex_byte2)
{
#ifdef DIS_TEXT
+ /* No adjustments needed for VNNI instructions. */
+ if (dp == &dis_opAVX62[0x50] || dp == &dis_opAVX62[0x51] ||
+ dp == &dis_opAVX62[0x52] || dp == &dis_opAVX62[0x53]) {
+ return;
+ }
+
if (dp == &dis_opAVX62[0x7f] || /* vmovdq */
dp == &dis_opAVX62[0x6f]) {
/* Aligned or Unaligned? */
@@ -2688,7 +2694,6 @@ dtrace_evex_mnem_adjust(dis86_t *x, instable_t *dp, uint_t vex_W,
break;
}
}
-
} else {
if (dp->it_avxsuf == AVS5Q) {
(void) strlcat(x->d86_mnem, vex_W != 0 ? "q" : "d",
diff --git a/usr/src/common/elfcap/elfcap.c b/usr/src/common/elfcap/elfcap.c
index c57d54cb01..a5366da1ae 100644
--- a/usr/src/common/elfcap/elfcap.c
+++ b/usr/src/common/elfcap/elfcap.c
@@ -21,7 +21,7 @@
/*
* Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2018, Joyent, Inc.
+ * Copyright 2019, Joyent, Inc.
*/
/* LINTLIBRARY */
@@ -411,6 +411,10 @@ static const elfcap_desc_t hw2_386[ELFCAP_NUM_HW2_386] = {
{ /* 0x02000000 */
AV_386_2_CLZERO, STRDESC("AV_386_2_CLZERO"),
STRDESC("CLZERO"), STRDESC("clzero")
+ },
+ { /* 0x04000000 */
+ AV_386_2_AVX512_VNNI, STRDESC("AV_386_2_AVX512_VNNI"),
+ STRDESC("AVX512_VNNI"), STRDESC("avx512_vnni")
}
};
diff --git a/usr/src/common/elfcap/elfcap.h b/usr/src/common/elfcap/elfcap.h
index ff95763800..2a9d64f279 100644
--- a/usr/src/common/elfcap/elfcap.h
+++ b/usr/src/common/elfcap/elfcap.h
@@ -21,7 +21,7 @@
/*
* Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2018, Joyent, Inc.
+ * Copyright 2019, Joyent, Inc.
*/
#ifndef _ELFCAP_DOT_H
@@ -115,7 +115,7 @@ typedef enum {
#define ELFCAP_NUM_SF1 3
#define ELFCAP_NUM_HW1_SPARC 17
#define ELFCAP_NUM_HW1_386 32
-#define ELFCAP_NUM_HW2_386 26
+#define ELFCAP_NUM_HW2_386 27
/*