diff options
author | Robert Mustacchi <rm@joyent.com> | 2019-04-06 01:05:16 +0000 |
---|---|---|
committer | Robert Mustacchi <rm@joyent.com> | 2019-05-04 15:16:05 +0000 |
commit | e4f6ce7088a7dd335b9edf4774325f888692e5fb (patch) | |
tree | f8a4e8c8185cc189e509dbceb0522cafca3357b9 /usr/src/common | |
parent | 5392d11ac74a493636fce7ed2e9598b095b68151 (diff) | |
download | illumos-joyent-e4f6ce7088a7dd335b9edf4774325f888692e5fb.tar.gz |
10893 Need support for new Cascade Lake Instructions
Reviewed by: Hans Rosenfeld <hans.rosenfeld@joyent.com>
Reviewed by: Dan McDonald <danmcd@joyent.com>
Reviewed by: Richard Lowe <richlowe@richlowe.net>
Approved by: Gordon Ross <gwr@nexenta.com>
Diffstat (limited to 'usr/src/common')
-rw-r--r-- | usr/src/common/dis/i386/dis_tables.c | 11 | ||||
-rw-r--r-- | usr/src/common/elfcap/elfcap.c | 6 | ||||
-rw-r--r-- | usr/src/common/elfcap/elfcap.h | 4 |
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 /* |