diff options
author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2020-03-16 11:40:43 +0000 |
---|---|---|
committer | Jerry Jelinek <jerry.jelinek@joyent.com> | 2020-03-16 11:40:43 +0000 |
commit | a24006240222cb87b3dc787960d97c3fdcbadc69 (patch) | |
tree | e65f036782dabbf23f392670eac46bf058084d6c | |
parent | 7e2a00efe240b326a184e01b87d73c18421ce847 (diff) | |
parent | 17abec598417b0120193b3ad4e5390d5d8682014 (diff) | |
download | illumos-joyent-a24006240222cb87b3dc787960d97c3fdcbadc69.tar.gz |
[illumos-gate merge]
commit 17abec598417b0120193b3ad4e5390d5d8682014
12385 tst.subr.d needs fixing for NULL as a pointer
commit 584b574a3b16c6772c8204ec1d1c957c56f22a87
12174 i86pc: variable may be used uninitialized
commit 34a4e6b53d2e6f2605fd77cda5b161201d7d0f20
12377 aggr: may be used uninitialized
commit c9ffe217655ce62448bdb45d6f113f43b4dfcc54
12367 aac: variable may be used uninitialized
commit a25e615d76804404e5fc63897a9196d4f92c3f5e
12371 dis x86 EVEX prefix mishandled
12372 dis EVEX encoding SIB mishandled
12373 dis support for EVEX vaes instructions
12374 dis support for EVEX vpclmulqdq instructions
12375 dis support for gfni instructions
commit c1e9bf00765d7ac9cf1986575e4489dd8710d9b1
12369 dis WBNOINVD support
Conflicts:
usr/src/common/dis/i386/dis_tables.c
exception_lists/wscheck
63 files changed, 1742 insertions, 185 deletions
diff --git a/exception_lists/wscheck b/exception_lists/wscheck index 9a8a753e43..31291664ff 100644 --- a/exception_lists/wscheck +++ b/exception_lists/wscheck @@ -105,6 +105,7 @@ usr/src/uts/i86pc/sys/vmm_dev.h usr/src/uts/i86pc/sys/vmm_instruction_emul.h usr/src/uts/common/io/qede/* usr/src/uts/common/io/i40e/core/* +usr/src/test/util-tests/tests/dis/i386/*.out usr/src/tools/smatch/src/* usr/src/uts/common/io/cxgbe/* usr/src/uts/common/io/qede/* diff --git a/usr/src/cmd/dtrace/test/tst/common/aggs/tst.subr.d b/usr/src/cmd/dtrace/test/tst/common/aggs/tst.subr.d index ccafc2edd1..04ce1eefe5 100644 --- a/usr/src/cmd/dtrace/test/tst/common/aggs/tst.subr.d +++ b/usr/src/cmd/dtrace/test/tst/common/aggs/tst.subr.d @@ -22,7 +22,7 @@ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. - * Copyright (c) 2012, Joyent, Inc. All rights reserved. + * Copyright 2020 Joyent, Inc. */ #include <sys/dtrace.h> @@ -61,8 +61,8 @@ INTFUNC(mutex_type_spin(&`cpu_lock)) INTFUNC(rw_read_held(&`vfssw_lock)) INTFUNC(rw_write_held(&`vfssw_lock)) INTFUNC(rw_iswriter(&`vfssw_lock)) -INTFUNC(copyin(NULL, 1)) -STRFUNC(copyinstr(NULL, 1)) +INTFUNC(copyin((uintptr_t)NULL, 1)) +STRFUNC(copyinstr((uintptr_t)NULL, 1)) INTFUNC(speculation()) INTFUNC(progenyof($pid)) INTFUNC(strlen("fooey")) diff --git a/usr/src/common/dis/i386/dis_tables.c b/usr/src/common/dis/i386/dis_tables.c index ddca678f1c..4d26a7ac2c 100644 --- a/usr/src/common/dis/i386/dis_tables.c +++ b/usr/src/common/dis/i386/dis_tables.c @@ -22,6 +22,7 @@ /* * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2019 Joyent, Inc. + * Copyright 2020 Robert Mustacchi */ /* @@ -246,7 +247,8 @@ enum { ADX, /* ADX instructions, support REX.w, mod_rm->mod_reg */ EVEX_RX, /* EVEX mod_reg -> mod_rm */ EVEX_MX, /* EVEX mod_rm -> mod_reg */ - EVEX_RMrX /* EVEX EVEX.vvvv, mod_rm -> mod_reg */ + EVEX_RMrX, /* EVEX EVEX.vvvv, mod_rm -> mod_reg */ + EVEX_RMRX /* EVEX EVEX.vvvv, mod_rm, imm8 -> mod_reg */ }; /* @@ -343,7 +345,6 @@ enum { #define TSZ(name, amode, sz) {TERM, amode, name, 1, 0, 0, 0, 0} #define TSaZ(name, amode, sz) {TERM, amode, name, 1, 0, 0, 0, 0, 0, AVS2} #define TSq(name, amode) {TERM, amode, name, 0, 0, 0, 0, 0, 0, AVS5Q} -#define TSd(name, amode) {TERM, amode, name, 0, 0, 0, 0, 0, 0, AVS5D} #define TSZx(name, amode, sz) {TERM, amode, name, 1, 1, 0, 0, 0} #define TSZy(name, amode, sz) {TERM, amode, name, 1, 0, 1, 0, 0} #define INVALID {TERM, UNKNOWN, "", 0, 0, 0, 0, 0} @@ -366,7 +367,6 @@ enum { #define TSZ(name, amode, sz) {TERM, amode, sz, 0, 0, 0, 0} #define TSaZ(name, amode, sz) {TERM, amode, sz, 0, 0, 0, 0, 0, AVS2} #define TSq(name, amode) {TERM, amode, 0, 0, 0, 0, 0, 0, AVS5Q} -#define TSd(name, amode) {TERM, amode, 0, 0, 0, 0, 0, 0, AVS5D} #define TSZx(name, amode, sz) {TERM, amode, sz, 1, 0, 0, 0} #define TSZy(name, amode, sz) {TERM, amode, sz, 0, 1, 0, 0} #define INVALID {TERM, UNKNOWN, 0, 0, 0, 0, 0} @@ -1461,22 +1461,22 @@ const instable_t dis_opAVXF30F[256] = { }; /* - * Table for instructions with an EVEX prefix. + * Table for instructions with an EVEX prefix followed by 0F. */ -const instable_t dis_opAVX62[256] = { +const instable_t dis_opEVEX0F[256] = { /* [00] */ INVALID, INVALID, INVALID, INVALID, /* [04] */ INVALID, INVALID, INVALID, INVALID, /* [08] */ INVALID, INVALID, INVALID, INVALID, /* [0C] */ INVALID, INVALID, INVALID, INVALID, -/* [10] */ TSd("vmovup",EVEX_MX), TSd("vmovup",EVEX_RX), INVALID, INVALID, +/* [10] */ TNS("vmovups",EVEX_MX), TNS("vmovups",EVEX_RX), INVALID, INVALID, /* [14] */ INVALID, INVALID, INVALID, INVALID, /* [18] */ INVALID, INVALID, INVALID, INVALID, /* [1C] */ INVALID, INVALID, INVALID, INVALID, /* [20] */ INVALID, INVALID, INVALID, INVALID, /* [24] */ INVALID, INVALID, INVALID, INVALID, -/* [28] */ TSd("vmovap",EVEX_MX), TSd("vmovap",EVEX_RX), INVALID, INVALID, +/* [28] */ TNS("vmovaps",EVEX_MX), TNS("vmovaps",EVEX_RX), INVALID, INVALID, /* [2C] */ INVALID, INVALID, INVALID, INVALID, /* [30] */ INVALID, INVALID, INVALID, INVALID, @@ -1489,20 +1489,105 @@ const instable_t dis_opAVX62[256] = { /* [48] */ INVALID, INVALID, INVALID, INVALID, /* [4C] */ 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), +/* [50] */ INVALID, INVALID, INVALID, INVALID, +/* [54] */ TNS("vandps",EVEX_RMrX),TNS("vandnps",EVEX_RMrX),TNS("vorps",EVEX_RMrX),TNS("vxorps",EVEX_RMrX), +/* [58] */ INVALID, INVALID, INVALID, INVALID, +/* [5C] */ INVALID, INVALID, INVALID, INVALID, + +/* [60] */ INVALID, INVALID, INVALID, INVALID, +/* [64] */ INVALID, INVALID, INVALID, INVALID, +/* [68] */ INVALID, INVALID, INVALID, INVALID, +/* [6C] */ INVALID, INVALID, INVALID, INVALID, + +/* [70] */ INVALID, INVALID, INVALID, INVALID, +/* [74] */ INVALID, INVALID, INVALID, INVALID, +/* [78] */ INVALID, INVALID, INVALID, INVALID, +/* [7C] */ INVALID, INVALID, INVALID, INVALID, + +/* [80] */ INVALID, INVALID, INVALID, INVALID, +/* [84] */ INVALID, INVALID, INVALID, INVALID, +/* [88] */ INVALID, INVALID, INVALID, INVALID, +/* [0C] */ INVALID, INVALID, INVALID, INVALID, + +/* [90] */ INVALID, INVALID, INVALID, INVALID, +/* [94] */ INVALID, INVALID, INVALID, INVALID, +/* [98] */ INVALID, INVALID, INVALID, INVALID, +/* [9C] */ INVALID, INVALID, INVALID, INVALID, + +/* [A0] */ INVALID, INVALID, INVALID, INVALID, +/* [A4] */ INVALID, INVALID, INVALID, INVALID, +/* [A8] */ INVALID, INVALID, INVALID, INVALID, +/* [AC] */ INVALID, INVALID, INVALID, INVALID, + +/* [B0] */ INVALID, INVALID, INVALID, INVALID, +/* [B4] */ INVALID, INVALID, INVALID, INVALID, +/* [B8] */ INVALID, INVALID, INVALID, INVALID, +/* [BC] */ INVALID, INVALID, INVALID, INVALID, + +/* [C0] */ INVALID, INVALID, INVALID, INVALID, +/* [C4] */ INVALID, INVALID, INVALID, INVALID, +/* [C8] */ INVALID, INVALID, INVALID, INVALID, +/* [CC] */ INVALID, INVALID, INVALID, INVALID, + +/* [D0] */ INVALID, INVALID, INVALID, INVALID, +/* [D4] */ INVALID, INVALID, INVALID, INVALID, +/* [D8] */ INVALID, INVALID, INVALID, INVALID, +/* [DC] */ INVALID, INVALID, INVALID, INVALID, + +/* [E0] */ INVALID, INVALID, INVALID, INVALID, +/* [E4] */ INVALID, INVALID, INVALID, INVALID, +/* [E8] */ INVALID, INVALID, INVALID, INVALID, +/* [EC] */ INVALID, INVALID, INVALID, INVALID, + +/* [F0] */ INVALID, INVALID, INVALID, INVALID, +/* [F4] */ INVALID, INVALID, INVALID, INVALID, +/* [F8] */ INVALID, INVALID, INVALID, INVALID, +/* [FC] */ INVALID, INVALID, INVALID, INVALID, +}; + +/* + * Decode tables for EVEX 66 0F + */ +const instable_t dis_opEVEX660F[256] = { +/* [00] */ INVALID, INVALID, INVALID, INVALID, +/* [04] */ INVALID, INVALID, INVALID, INVALID, +/* [08] */ INVALID, INVALID, INVALID, INVALID, +/* [0C] */ INVALID, INVALID, INVALID, INVALID, + +/* [10] */ TNS("vmovupd",EVEX_MX), TNS("vmovupd",EVEX_RX), INVALID, INVALID, +/* [14] */ INVALID, INVALID, INVALID, INVALID, +/* [18] */ INVALID, INVALID, INVALID, INVALID, +/* [1C] */ INVALID, INVALID, INVALID, INVALID, + +/* [20] */ INVALID, INVALID, INVALID, INVALID, +/* [24] */ INVALID, INVALID, INVALID, INVALID, +/* [28] */ TNS("vmovapd",EVEX_MX), TNS("vmovapd",EVEX_RX), INVALID, INVALID, +/* [2C] */ INVALID, INVALID, INVALID, INVALID, + +/* [30] */ INVALID, INVALID, INVALID, INVALID, +/* [34] */ INVALID, INVALID, INVALID, INVALID, +/* [38] */ INVALID, INVALID, INVALID, INVALID, +/* [3C] */ INVALID, INVALID, INVALID, INVALID, + +/* [40] */ INVALID, INVALID, INVALID, INVALID, +/* [44] */ INVALID, INVALID, INVALID, INVALID, +/* [48] */ INVALID, INVALID, INVALID, INVALID, +/* [4C] */ INVALID, INVALID, INVALID, INVALID, + +/* [50] */ INVALID, INVALID, INVALID, INVALID, +/* [54] */ TNS("vandpd",EVEX_RMrX),TNS("vandnpd",EVEX_RMrX),TNS("vorpd",EVEX_RMrX),TNS("vxorpd",EVEX_RMrX), /* [58] */ INVALID, INVALID, INVALID, INVALID, /* [5C] */ INVALID, INVALID, INVALID, INVALID, /* [60] */ INVALID, INVALID, INVALID, INVALID, /* [64] */ INVALID, INVALID, INVALID, INVALID, /* [68] */ INVALID, INVALID, INVALID, INVALID, -/* [6C] */ INVALID, INVALID, INVALID, TNS("vmovdq",EVEX_MX), +/* [6C] */ INVALID, INVALID, INVALID, TNS("vmovdqa",EVEX_MX), /* [70] */ INVALID, INVALID, INVALID, INVALID, /* [74] */ INVALID, INVALID, INVALID, INVALID, /* [78] */ INVALID, INVALID, INVALID, INVALID, -/* [7C] */ INVALID, INVALID, INVALID, TNS("vmovdq",EVEX_RX), +/* [7C] */ INVALID, INVALID, INVALID, TNS("vmovdqa",EVEX_RX), /* [80] */ INVALID, INVALID, INVALID, INVALID, /* [84] */ INVALID, INVALID, INVALID, INVALID, @@ -1545,6 +1630,334 @@ const instable_t dis_opAVX62[256] = { /* [FC] */ INVALID, INVALID, INVALID, INVALID, }; +const instable_t dis_opEVEX660F38[256] = { +/* [00] */ INVALID, INVALID, INVALID, INVALID, +/* [04] */ INVALID, INVALID, INVALID, INVALID, +/* [08] */ INVALID, INVALID, INVALID, INVALID, +/* [0C] */ INVALID, INVALID, INVALID, INVALID, + +/* [10] */ INVALID, INVALID, INVALID, INVALID, +/* [14] */ INVALID, INVALID, INVALID, INVALID, +/* [18] */ INVALID, INVALID, INVALID, INVALID, +/* [1C] */ INVALID, INVALID, INVALID, INVALID, + +/* [20] */ INVALID, INVALID, INVALID, INVALID, +/* [24] */ INVALID, INVALID, INVALID, INVALID, +/* [28] */ INVALID, INVALID, INVALID, INVALID, +/* [2C] */ INVALID, INVALID, INVALID, INVALID, + +/* [30] */ INVALID, INVALID, INVALID, INVALID, +/* [34] */ INVALID, INVALID, INVALID, INVALID, +/* [38] */ INVALID, INVALID, INVALID, INVALID, +/* [3C] */ INVALID, INVALID, INVALID, INVALID, + +/* [40] */ INVALID, INVALID, INVALID, INVALID, +/* [44] */ INVALID, INVALID, INVALID, INVALID, +/* [48] */ INVALID, INVALID, INVALID, INVALID, +/* [4C] */ 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] */ INVALID, INVALID, INVALID, INVALID, +/* [58] */ INVALID, INVALID, INVALID, INVALID, +/* [5C] */ INVALID, INVALID, INVALID, INVALID, + +/* [60] */ INVALID, INVALID, INVALID, INVALID, +/* [64] */ INVALID, INVALID, INVALID, INVALID, +/* [68] */ INVALID, INVALID, INVALID, INVALID, +/* [6C] */ INVALID, INVALID, INVALID, INVALID, + +/* [70] */ INVALID, INVALID, INVALID, INVALID, +/* [74] */ INVALID, INVALID, INVALID, INVALID, +/* [78] */ INVALID, INVALID, INVALID, INVALID, +/* [7C] */ INVALID, INVALID, INVALID, INVALID, + +/* [80] */ INVALID, INVALID, INVALID, INVALID, +/* [84] */ INVALID, INVALID, INVALID, INVALID, +/* [88] */ INVALID, INVALID, INVALID, INVALID, +/* [8C] */ INVALID, INVALID, INVALID, INVALID, + +/* [90] */ INVALID, INVALID, INVALID, INVALID, +/* [94] */ INVALID, INVALID, INVALID, INVALID, +/* [98] */ INVALID, INVALID, INVALID, INVALID, +/* [9C] */ INVALID, INVALID, INVALID, INVALID, + +/* [A0] */ INVALID, INVALID, INVALID, INVALID, +/* [A4] */ INVALID, INVALID, INVALID, INVALID, +/* [A8] */ INVALID, INVALID, INVALID, INVALID, +/* [AC] */ INVALID, INVALID, INVALID, INVALID, + +/* [B0] */ INVALID, INVALID, INVALID, INVALID, +/* [B4] */ INVALID, INVALID, INVALID, INVALID, +/* [B8] */ INVALID, INVALID, INVALID, INVALID, +/* [BC] */ INVALID, INVALID, INVALID, INVALID, + +/* [C0] */ INVALID, INVALID, INVALID, INVALID, +/* [C4] */ INVALID, INVALID, INVALID, INVALID, +/* [C8] */ INVALID, INVALID, INVALID, INVALID, +/* [CC] */ INVALID, INVALID, INVALID, TNS("vgf2p8mulb",EVEX_RMrX), + +/* [D0] */ INVALID, INVALID, INVALID, INVALID, +/* [D4] */ INVALID, INVALID, INVALID, INVALID, +/* [D8] */ INVALID, INVALID, INVALID, INVALID, +/* [DC] */ TNSZ("vaesenc",EVEX_RMrX,16),TNSZ("vaesenclast",EVEX_RMrX,16),TNSZ("vaesdec",EVEX_RMrX,16),TNSZ("vaesdeclast",EVEX_RMrX,16), + +/* [E0] */ INVALID, INVALID, INVALID, INVALID, +/* [E4] */ INVALID, INVALID, INVALID, INVALID, +/* [E8] */ INVALID, INVALID, INVALID, INVALID, +/* [EC] */ INVALID, INVALID, INVALID, INVALID, + +/* [F0] */ INVALID, INVALID, INVALID, INVALID, +/* [F4] */ INVALID, INVALID, INVALID, INVALID, +/* [F8] */ INVALID, INVALID, INVALID, INVALID, +/* [FC] */ INVALID, INVALID, INVALID, INVALID, +}; + +const instable_t dis_opEVEX660F3A[256] = { +/* [00] */ INVALID, INVALID, INVALID, INVALID, +/* [04] */ INVALID, INVALID, INVALID, INVALID, +/* [08] */ INVALID, INVALID, INVALID, INVALID, +/* [0C] */ INVALID, INVALID, INVALID, INVALID, + +/* [10] */ INVALID, INVALID, INVALID, INVALID, +/* [14] */ INVALID, INVALID, INVALID, INVALID, +/* [18] */ INVALID, INVALID, INVALID, INVALID, +/* [1C] */ INVALID, INVALID, INVALID, INVALID, + +/* [20] */ INVALID, INVALID, INVALID, INVALID, +/* [24] */ INVALID, INVALID, INVALID, INVALID, +/* [28] */ INVALID, INVALID, INVALID, INVALID, +/* [2C] */ INVALID, INVALID, INVALID, INVALID, + +/* [30] */ INVALID, INVALID, INVALID, INVALID, +/* [34] */ INVALID, INVALID, INVALID, INVALID, +/* [38] */ INVALID, INVALID, INVALID, INVALID, +/* [3C] */ INVALID, INVALID, INVALID, INVALID, + +/* [40] */ INVALID, INVALID, INVALID, INVALID, +/* [44] */ TNSZ("vpclmulqdq",EVEX_RMRX,16),INVALID, INVALID, INVALID, +/* [48] */ INVALID, INVALID, INVALID, INVALID, +/* [4C] */ INVALID, INVALID, INVALID, INVALID, + +/* [50] */ INVALID, INVALID, INVALID, INVALID, +/* [54] */ INVALID, INVALID, INVALID, INVALID, +/* [58] */ INVALID, INVALID, INVALID, INVALID, +/* [5C] */ INVALID, INVALID, INVALID, INVALID, + +/* [60] */ INVALID, INVALID, INVALID, INVALID, +/* [64] */ INVALID, INVALID, INVALID, INVALID, +/* [68] */ INVALID, INVALID, INVALID, INVALID, +/* [6C] */ INVALID, INVALID, INVALID, INVALID, + +/* [70] */ INVALID, INVALID, INVALID, INVALID, +/* [74] */ INVALID, INVALID, INVALID, INVALID, +/* [78] */ INVALID, INVALID, INVALID, INVALID, +/* [7C] */ INVALID, INVALID, INVALID, INVALID, + +/* [80] */ INVALID, INVALID, INVALID, INVALID, +/* [84] */ INVALID, INVALID, INVALID, INVALID, +/* [88] */ INVALID, INVALID, INVALID, INVALID, +/* [8C] */ INVALID, INVALID, INVALID, INVALID, + +/* [90] */ INVALID, INVALID, INVALID, INVALID, +/* [94] */ INVALID, INVALID, INVALID, INVALID, +/* [98] */ INVALID, INVALID, INVALID, INVALID, +/* [9C] */ INVALID, INVALID, INVALID, INVALID, + +/* [A0] */ INVALID, INVALID, INVALID, INVALID, +/* [A4] */ INVALID, INVALID, INVALID, INVALID, +/* [A8] */ INVALID, INVALID, INVALID, INVALID, +/* [AC] */ INVALID, INVALID, INVALID, INVALID, + +/* [B0] */ INVALID, INVALID, INVALID, INVALID, +/* [B4] */ INVALID, INVALID, INVALID, INVALID, +/* [B8] */ INVALID, INVALID, INVALID, INVALID, +/* [BC] */ INVALID, INVALID, INVALID, INVALID, + +/* [C0] */ INVALID, INVALID, INVALID, INVALID, +/* [C4] */ INVALID, INVALID, INVALID, INVALID, +/* [C8] */ INVALID, INVALID, INVALID, INVALID, +/* [CC] */ INVALID, INVALID, TNS("vgf2p8affineqb",EVEX_RMRX),TNS("vgf2p8affineinvqb",EVEX_RMRX), + +/* [D0] */ INVALID, INVALID, INVALID, INVALID, +/* [D4] */ INVALID, INVALID, INVALID, INVALID, +/* [D8] */ INVALID, INVALID, INVALID, INVALID, +/* [DC] */ INVALID, INVALID, INVALID, INVALID, + +/* [E0] */ INVALID, INVALID, INVALID, INVALID, +/* [E4] */ INVALID, INVALID, INVALID, INVALID, +/* [E8] */ INVALID, INVALID, INVALID, INVALID, +/* [EC] */ INVALID, INVALID, INVALID, INVALID, + +/* [F0] */ INVALID, INVALID, INVALID, INVALID, +/* [F4] */ INVALID, INVALID, INVALID, INVALID, +/* [F8] */ INVALID, INVALID, INVALID, INVALID, +/* [FC] */ INVALID, INVALID, INVALID, INVALID, +}; + + +const instable_t dis_opEVEXF20F[256] = { +/* [00] */ INVALID, INVALID, INVALID, INVALID, +/* [04] */ INVALID, INVALID, INVALID, INVALID, +/* [08] */ INVALID, INVALID, INVALID, INVALID, +/* [0C] */ INVALID, INVALID, INVALID, INVALID, + +/* [10] */ INVALID, INVALID, INVALID, INVALID, +/* [14] */ INVALID, INVALID, INVALID, INVALID, +/* [18] */ INVALID, INVALID, INVALID, INVALID, +/* [1C] */ INVALID, INVALID, INVALID, INVALID, + +/* [20] */ INVALID, INVALID, INVALID, INVALID, +/* [24] */ INVALID, INVALID, INVALID, INVALID, +/* [28] */ INVALID, INVALID, INVALID, INVALID, +/* [2C] */ INVALID, INVALID, INVALID, INVALID, + +/* [30] */ INVALID, INVALID, INVALID, INVALID, +/* [34] */ INVALID, INVALID, INVALID, INVALID, +/* [38] */ INVALID, INVALID, INVALID, INVALID, +/* [3C] */ INVALID, INVALID, INVALID, INVALID, + +/* [40] */ INVALID, INVALID, INVALID, INVALID, +/* [44] */ INVALID, INVALID, INVALID, INVALID, +/* [48] */ INVALID, INVALID, INVALID, INVALID, +/* [4C] */ INVALID, INVALID, INVALID, INVALID, + +/* [50] */ INVALID, INVALID, INVALID, INVALID, +/* [54] */ INVALID, INVALID, INVALID, INVALID, +/* [58] */ INVALID, INVALID, INVALID, INVALID, +/* [5C] */ INVALID, INVALID, INVALID, INVALID, + +/* [60] */ INVALID, INVALID, INVALID, INVALID, +/* [64] */ INVALID, INVALID, INVALID, INVALID, +/* [68] */ INVALID, INVALID, INVALID, INVALID, +/* [6C] */ INVALID, INVALID, INVALID, TNS("vmovdqu",EVEX_MX), + +/* [70] */ INVALID, INVALID, INVALID, INVALID, +/* [74] */ INVALID, INVALID, INVALID, INVALID, +/* [78] */ INVALID, INVALID, INVALID, INVALID, +/* [7C] */ INVALID, INVALID, INVALID, TNS("vmovdqu",EVEX_RX), + +/* [80] */ INVALID, INVALID, INVALID, INVALID, +/* [84] */ INVALID, INVALID, INVALID, INVALID, +/* [88] */ INVALID, INVALID, INVALID, INVALID, +/* [0C] */ INVALID, INVALID, INVALID, INVALID, + +/* [90] */ INVALID, INVALID, INVALID, INVALID, +/* [94] */ INVALID, INVALID, INVALID, INVALID, +/* [98] */ INVALID, INVALID, INVALID, INVALID, +/* [9C] */ INVALID, INVALID, INVALID, INVALID, + +/* [A0] */ INVALID, INVALID, INVALID, INVALID, +/* [A4] */ INVALID, INVALID, INVALID, INVALID, +/* [A8] */ INVALID, INVALID, INVALID, INVALID, +/* [AC] */ INVALID, INVALID, INVALID, INVALID, + +/* [B0] */ INVALID, INVALID, INVALID, INVALID, +/* [B4] */ INVALID, INVALID, INVALID, INVALID, +/* [B8] */ INVALID, INVALID, INVALID, INVALID, +/* [BC] */ INVALID, INVALID, INVALID, INVALID, + +/* [C0] */ INVALID, INVALID, INVALID, INVALID, +/* [C4] */ INVALID, INVALID, INVALID, INVALID, +/* [C8] */ INVALID, INVALID, INVALID, INVALID, +/* [CC] */ INVALID, INVALID, INVALID, INVALID, + +/* [D0] */ INVALID, INVALID, INVALID, INVALID, +/* [D4] */ INVALID, INVALID, INVALID, INVALID, +/* [D8] */ INVALID, INVALID, INVALID, INVALID, +/* [DC] */ INVALID, INVALID, INVALID, INVALID, + +/* [E0] */ INVALID, INVALID, INVALID, INVALID, +/* [E4] */ INVALID, INVALID, INVALID, INVALID, +/* [E8] */ INVALID, INVALID, INVALID, INVALID, +/* [EC] */ INVALID, INVALID, INVALID, INVALID, + +/* [F0] */ INVALID, INVALID, INVALID, INVALID, +/* [F4] */ INVALID, INVALID, INVALID, INVALID, +/* [F8] */ INVALID, INVALID, INVALID, INVALID, +/* [FC] */ INVALID, INVALID, INVALID, INVALID, +}; + +const instable_t dis_opEVEXF30F[256] = { +/* [00] */ INVALID, INVALID, INVALID, INVALID, +/* [04] */ INVALID, INVALID, INVALID, INVALID, +/* [08] */ INVALID, INVALID, INVALID, INVALID, +/* [0C] */ INVALID, INVALID, INVALID, INVALID, + +/* [10] */ INVALID, INVALID, INVALID, INVALID, +/* [14] */ INVALID, INVALID, INVALID, INVALID, +/* [18] */ INVALID, INVALID, INVALID, INVALID, +/* [1C] */ INVALID, INVALID, INVALID, INVALID, + +/* [20] */ INVALID, INVALID, INVALID, INVALID, +/* [24] */ INVALID, INVALID, INVALID, INVALID, +/* [28] */ INVALID, INVALID, INVALID, INVALID, +/* [2C] */ INVALID, INVALID, INVALID, INVALID, + +/* [30] */ INVALID, INVALID, INVALID, INVALID, +/* [34] */ INVALID, INVALID, INVALID, INVALID, +/* [38] */ INVALID, INVALID, INVALID, INVALID, +/* [3C] */ INVALID, INVALID, INVALID, INVALID, + +/* [40] */ INVALID, INVALID, INVALID, INVALID, +/* [44] */ INVALID, INVALID, INVALID, INVALID, +/* [48] */ INVALID, INVALID, INVALID, INVALID, +/* [4C] */ INVALID, INVALID, INVALID, INVALID, + +/* [50] */ INVALID, INVALID, INVALID, INVALID, +/* [54] */ INVALID, INVALID, INVALID, INVALID, +/* [58] */ INVALID, INVALID, INVALID, INVALID, +/* [5C] */ INVALID, INVALID, INVALID, INVALID, + +/* [60] */ INVALID, INVALID, INVALID, INVALID, +/* [64] */ INVALID, INVALID, INVALID, INVALID, +/* [68] */ INVALID, INVALID, INVALID, INVALID, +/* [6C] */ INVALID, INVALID, INVALID, TNS("vmovdqu",EVEX_MX), + +/* [70] */ INVALID, INVALID, INVALID, INVALID, +/* [74] */ INVALID, INVALID, INVALID, INVALID, +/* [78] */ INVALID, INVALID, INVALID, INVALID, +/* [7C] */ INVALID, INVALID, INVALID, TNS("vmovdqu",EVEX_RX), + +/* [80] */ INVALID, INVALID, INVALID, INVALID, +/* [84] */ INVALID, INVALID, INVALID, INVALID, +/* [88] */ INVALID, INVALID, INVALID, INVALID, +/* [0C] */ INVALID, INVALID, INVALID, INVALID, + +/* [90] */ INVALID, INVALID, INVALID, INVALID, +/* [94] */ INVALID, INVALID, INVALID, INVALID, +/* [98] */ INVALID, INVALID, INVALID, INVALID, +/* [9C] */ INVALID, INVALID, INVALID, INVALID, + +/* [A0] */ INVALID, INVALID, INVALID, INVALID, +/* [A4] */ INVALID, INVALID, INVALID, INVALID, +/* [A8] */ INVALID, INVALID, INVALID, INVALID, +/* [AC] */ INVALID, INVALID, INVALID, INVALID, + +/* [B0] */ INVALID, INVALID, INVALID, INVALID, +/* [B4] */ INVALID, INVALID, INVALID, INVALID, +/* [B8] */ INVALID, INVALID, INVALID, INVALID, +/* [BC] */ INVALID, INVALID, INVALID, INVALID, + +/* [C0] */ INVALID, INVALID, INVALID, INVALID, +/* [C4] */ INVALID, INVALID, INVALID, INVALID, +/* [C8] */ INVALID, INVALID, INVALID, INVALID, +/* [CC] */ INVALID, INVALID, INVALID, INVALID, + +/* [D0] */ INVALID, INVALID, INVALID, INVALID, +/* [D4] */ INVALID, INVALID, INVALID, INVALID, +/* [D8] */ INVALID, INVALID, INVALID, INVALID, +/* [DC] */ INVALID, INVALID, INVALID, INVALID, + +/* [E0] */ INVALID, INVALID, INVALID, INVALID, +/* [E4] */ INVALID, INVALID, INVALID, INVALID, +/* [E8] */ INVALID, INVALID, INVALID, INVALID, +/* [EC] */ INVALID, INVALID, INVALID, INVALID, + +/* [F0] */ INVALID, INVALID, INVALID, INVALID, +/* [F4] */ INVALID, INVALID, INVALID, INVALID, +/* [F8] */ INVALID, INVALID, INVALID, INVALID, +/* [FC] */ INVALID, INVALID, INVALID, INVALID, +}; /* * The following two tables are used to encode crc32 and movbe * since they share the same opcodes. @@ -1632,7 +2045,7 @@ const instable_t dis_op0F38[256] = { /* [C0] */ INVALID, INVALID, INVALID, INVALID, /* [C4] */ INVALID, INVALID, INVALID, INVALID, /* [C8] */ TNSZ("sha1nexte",XMM,16),TNSZ("sha1msg1",XMM,16),TNSZ("sha1msg2",XMM,16),TNSZ("sha256rnds2",XMM,16), -/* [CC] */ TNSZ("sha256msg1",XMM,16),TNSZ("sha256msg2",XMM,16),INVALID, INVALID, +/* [CC] */ TNSZ("sha256msg1",XMM,16),TNSZ("sha256msg2",XMM,16),INVALID, TNS("gf2p8mulb",XMM_66r), /* [D0] */ INVALID, INVALID, INVALID, INVALID, /* [D4] */ INVALID, INVALID, INVALID, INVALID, @@ -1713,7 +2126,7 @@ const instable_t dis_opAVX660F38[256] = { /* [C0] */ INVALID, INVALID, INVALID, INVALID, /* [C4] */ INVALID, INVALID, INVALID, INVALID, /* [C8] */ INVALID, INVALID, INVALID, INVALID, -/* [CC] */ INVALID, INVALID, INVALID, INVALID, +/* [CC] */ INVALID, INVALID, INVALID, TNS("vgf2p8mulb",VEX_RMrX), /* [D0] */ INVALID, INVALID, INVALID, INVALID, /* [D4] */ INVALID, INVALID, INVALID, INVALID, @@ -1794,7 +2207,7 @@ const instable_t dis_op0F3A[256] = { /* [C0] */ INVALID, INVALID, INVALID, INVALID, /* [C4] */ INVALID, INVALID, INVALID, INVALID, /* [C8] */ INVALID, INVALID, INVALID, INVALID, -/* [CC] */ TNSZ("sha1rnds4",XMMP,16),INVALID, INVALID, INVALID, +/* [CC] */ TNSZ("sha1rnds4",XMMP,16),INVALID, TNS("gf2p8affineqb",XMMP_66r),TNS("gf2p8affineinvqb",XMMP_66r), /* [D0] */ INVALID, INVALID, INVALID, INVALID, /* [D4] */ INVALID, INVALID, INVALID, INVALID, @@ -1876,7 +2289,7 @@ const instable_t dis_opAVX660F3A[256] = { /* [C0] */ INVALID, INVALID, INVALID, INVALID, /* [C4] */ INVALID, INVALID, INVALID, INVALID, /* [C8] */ INVALID, INVALID, INVALID, INVALID, -/* [CC] */ INVALID, INVALID, INVALID, INVALID, +/* [CC] */ INVALID, INVALID, TNS("vgf2p8affineqb",VEX_RMRX),TNS("vgf2p8affineinvqb",VEX_RMRX), /* [D0] */ INVALID, INVALID, INVALID, INVALID, /* [D4] */ INVALID, INVALID, INVALID, INVALID, @@ -2669,45 +3082,36 @@ dtrace_evex_mnem_adjust(dis86_t *x, const 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_opEVEX660F[0x7f] || /* vmovdqa */ + dp == &dis_opEVEX660F[0x6f]) { + (void) strlcat(x->d86_mnem, vex_W != 0 ? "64" : "32", + OPLEN); } - if (dp == &dis_opAVX62[0x7f] || /* vmovdq */ - dp == &dis_opAVX62[0x6f]) { - /* Aligned or Unaligned? */ - if ((evex_byte2 & 0x3) == 0x01) { - (void) strlcat(x->d86_mnem, "a", OPLEN); - (void) strlcat(x->d86_mnem, vex_W != 0 ? "64" : "32", - OPLEN); - } else { - (void) strlcat(x->d86_mnem, "u", OPLEN); - switch (evex_byte2 & 0x81) { - case 0x0: - (void) strlcat(x->d86_mnem, "32", OPLEN); - break; - case 0x1: - (void) strlcat(x->d86_mnem, "8", OPLEN); - break; - case 0x80: - (void) strlcat(x->d86_mnem, "64", OPLEN); - break; - case 0x81: - (void) strlcat(x->d86_mnem, "16", OPLEN); - break; - } - } - } else { - if (dp->it_avxsuf == AVS5Q) { - (void) strlcat(x->d86_mnem, vex_W != 0 ? "q" : "d", - OPLEN); - } else { - (void) strlcat(x->d86_mnem, vex_W != 0 ? "d" : "s", - OPLEN); + if (dp == &dis_opEVEXF20F[0x7f] || /* vmovdqu */ + dp == &dis_opEVEXF20F[0x6f] || + dp == &dis_opEVEXF30F[0x7f] || + dp == &dis_opEVEXF30F[0x6f]) { + switch (evex_byte2 & 0x81) { + case 0x0: + (void) strlcat(x->d86_mnem, "32", OPLEN); + break; + case 0x1: + (void) strlcat(x->d86_mnem, "8", OPLEN); + break; + case 0x80: + (void) strlcat(x->d86_mnem, "64", OPLEN); + break; + case 0x81: + (void) strlcat(x->d86_mnem, "16", OPLEN); + break; } } + + if (dp->it_avxsuf == AVS5Q) { + (void) strlcat(x->d86_mnem, vex_W != 0 ? "q" : "d", + OPLEN); + } #endif } @@ -3032,10 +3436,12 @@ dtrace_get_operand(dis86_t *x, uint_t mode, uint_t r_m, int wbit, int opindex) } /* - * 32 and 64 bit addressing modes are more complex since they - * can involve an SIB (scaled index and base) byte to decode. + * 32 and 64 bit addressing modes are more complex since they can + * involve an SIB (scaled index and base) byte to decode. When using VEX + * and EVEX encodings, the r_m indicator for a SIB may be offset by 8 + * and 24 (8 + 16) respectively. */ - if (r_m == ESP_REGNO || r_m == ESP_REGNO + 8) { + if (r_m == ESP_REGNO || r_m == ESP_REGNO + 8 || r_m == ESP_REGNO + 24) { have_SIB = 1; dtrace_get_SIB(x, &ss, &index, &base); if (x->d86_error) @@ -3220,7 +3626,7 @@ dtrace_get_operand(dis86_t *x, uint_t mode, uint_t r_m, int wbit, int opindex) int dtrace_disx86(dis86_t *x, uint_t cpu_mode) { - const instable_t *dp; /* decode table being used */ + const instable_t *dp = NULL; /* decode table being used */ #ifdef DIS_TEXT uint_t i; #endif @@ -3296,6 +3702,7 @@ dtrace_disx86(dis86_t *x, uint_t cpu_mode) uint_t vex_L = 0; uint_t evex_L = 0; uint_t evex_modrm = 0; + uint_t evex_prefix = 0; dis_gather_regs_t *vreg; #ifdef DIS_TEXT @@ -3430,6 +3837,8 @@ dtrace_disx86(dis86_t *x, uint_t cpu_mode) * EVEX prefix and the 2nd byte must have bits 2 & 3 set to 0. */ if (opcode1 == 0x6 && opcode2 == 0x2) { + evex_prefix = 0x62; + /* * An EVEX prefix is 4 bytes long, get the next 3 bytes. */ @@ -3486,10 +3895,60 @@ dtrace_disx86(dis86_t *x, uint_t cpu_mode) vex_W = (opcode6 & VEX_W) >> 3; vex_p = opcode7 & VEX_p; + /* + * Store the corresponding prefix information for later use when + * calculating the SIB. + */ + if ((evex_byte1 & VEX_R) == 0) + x->d86_rex_prefix |= REX_R; + if ((evex_byte1 & VEX_X) == 0) + x->d86_rex_prefix |= REX_X; + if ((evex_byte1 & VEX_B) == 0) + x->d86_rex_prefix |= REX_B; + /* Currently only 3 valid values for evex L'L: 00, 01, 10 */ evex_L = (opcode8 & EVEX_L) >> 1; - dp = (instable_t *)&dis_opAVX62[(opcode1 << 4) | opcode2]; + switch (vex_p) { + case VEX_p_66: + switch (vex_m) { + case VEX_m_0F: + dp = &dis_opEVEX660F[(opcode1 << 4) | opcode2]; + break; + case VEX_m_0F38: + dp = &dis_opEVEX660F38[(opcode1 << 4) | + opcode2]; + break; + case VEX_m_0F3A: + dp = &dis_opEVEX660F3A[(opcode1 << 4) | + opcode2]; + break; + default: + goto error; + } + break; + case VEX_p_F3: + switch (vex_m) { + case VEX_m_0F: + dp = &dis_opEVEXF30F[(opcode1 << 4) | opcode2]; + break; + default: + goto error; + } + break; + case VEX_p_F2: + switch (vex_m) { + case VEX_m_0F: + dp = &dis_opEVEXF20F[(opcode1 << 4) | opcode2]; + break; + default: + goto error; + } + break; + default: + dp = &dis_opEVEX0F[(opcode1 << 4) | opcode2]; + break; + } } not_avx512: @@ -4171,7 +4630,7 @@ not_avx512: /* * In vex mode the rex_prefix has no meaning */ - if (!vex_prefix) + if (!vex_prefix && evex_prefix == 0) x->d86_rex_prefix = rex_prefix; x->d86_opnd_size = opnd_size; x->d86_addr_size = addr_size; @@ -5909,6 +6368,29 @@ L_VEX_RM: dtrace_evex_adjust_disp8_n(x, 0, evex_L, evex_modrm); dtrace_evex_adjust_z_opmask(x, 2, evex_byte3); break; + case EVEX_RMRX: + /* ModR/M.reg := op(EVEX.vvvv, ModR/M.r_m, imm8) */ + x->d86_numopnds = 4; + + dtrace_evex_mnem_adjust(x, dp, vex_W, evex_byte2); + dtrace_get_modrm(x, &mode, ®, &r_m); + evex_modrm = x->d86_bytes[x->d86_len - 1] & 0xff; + dtrace_evex_adjust_reg(evex_byte1, ®); + dtrace_evex_adjust_rm(evex_byte1, &r_m); + dtrace_evex_adjust_reg_name(evex_L, &wbit); + dtrace_get_operand(x, REG_ONLY, reg, wbit, 3); + /* + * EVEX.vvvv is the same as VEX.vvvv (ones complement of the + * register specifier). The EVEX prefix handling uses the vex_v + * variable for these bits. + */ + dtrace_get_operand(x, REG_ONLY, (0xF - vex_v), wbit, 2); + dtrace_get_operand(x, mode, r_m, wbit, 1); + dtrace_evex_adjust_disp8_n(x, 0, evex_L, evex_modrm); + dtrace_evex_adjust_z_opmask(x, 3, evex_byte3); + + dtrace_imm_opnd(x, wbit, 1, 0); + break; /* an invalid op code */ case AM: case DM: @@ -5924,6 +6406,8 @@ L_VEX_RM: done: #ifdef DIS_MEM + if (dp == NULL) + return (1); /* * compute the size of any memory accessed by the instruction */ @@ -6179,7 +6663,6 @@ dtrace_disx86_str(dis86_t *dis, uint_t mode, uint64_t pc, char *buf, save_mask = mask; } (void) strlcat(buf, op->d86_opnd, buflen); - break; case MODE_IPREL: diff --git a/usr/src/common/fs/hsfs.c b/usr/src/common/fs/hsfs.c index 9efe265cfa..e648d03360 100644 --- a/usr/src/common/fs/hsfs.c +++ b/usr/src/common/fs/hsfs.c @@ -23,8 +23,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - /* * Basic file system reading code for standalone I/O system. * Simulates a primitive UNIX I/O system (read(), write(), open(), etc). @@ -174,7 +172,7 @@ opendir(ino_t inode, fileid_t *filep) filep->fi_blocknum = hdbtodb(inode); if (inode != root_ino) - return (0); + return (0); if (parse_dir(filep, 0, &hsdep) > 0) { struct inode *ip; @@ -198,6 +196,7 @@ find(char *path, fileid_t *filep) char c; ino_t n; + n = 0; dprintf("find: %s\n", path); if (path == NULL || *path == '\0') return (0); diff --git a/usr/src/common/fs/ufsops.c b/usr/src/common/fs/ufsops.c index 52e716f1de..a467f41202 100644 --- a/usr/src/common/fs/ufsops.c +++ b/usr/src/common/fs/ufsops.c @@ -69,15 +69,15 @@ static fileid_t *head; devid_t *ufs_devp; struct dirinfo { - int loc; + int loc; fileid_t *fi; }; static int bufs_close(int); static void bufs_closeall(int); -static ino_t find(fileid_t *filep, char *path); +static ino_t find(fileid_t *filep, char *path); static ino_t dlook(fileid_t *filep, char *path); -static daddr32_t sbmap(fileid_t *filep, daddr32_t bn); +static daddr32_t sbmap(fileid_t *filep, daddr32_t bn); static struct direct *readdir(struct dirinfo *dstuff); static void set_cache(int, void *, uint_t); static void *get_cache(int); @@ -151,9 +151,10 @@ find(fileid_t *filep, char *path) int len, r; devid_t *devp; + inode = 0; if (path == NULL || *path == '\0') { printf("null path\n"); - return ((ino_t)0); + return (inode); } dprintf("openi: %s\n", path); diff --git a/usr/src/common/util/string.c b/usr/src/common/util/string.c index 5fe5ddab13..2ed2791eda 100644 --- a/usr/src/common/util/string.c +++ b/usr/src/common/util/string.c @@ -80,6 +80,8 @@ vsnprintf(char *buf, size_t buflen, const char *fmt, va_list aargs) int numwidth; va_list args; + ul = 0; + bs = NULL; /* * Make a copy so that all our callers don't have to make a copy */ diff --git a/usr/src/pkg/manifests/system-test-utiltest.mf b/usr/src/pkg/manifests/system-test-utiltest.mf index a33bea9e2e..9c41f4a108 100644 --- a/usr/src/pkg/manifests/system-test-utiltest.mf +++ b/usr/src/pkg/manifests/system-test-utiltest.mf @@ -1184,6 +1184,8 @@ file path=opt/util-tests/tests/dis/i386/32.avx512.out mode=0444 file path=opt/util-tests/tests/dis/i386/32.avx512.s mode=0444 file path=opt/util-tests/tests/dis/i386/32.avx512_vnni.out mode=0444 file path=opt/util-tests/tests/dis/i386/32.avx512_vnni.s mode=0444 +file path=opt/util-tests/tests/dis/i386/32.avx512_vpclmulqdq.out mode=0444 +file path=opt/util-tests/tests/dis/i386/32.avx512_vpclmulqdq.s mode=0444 file path=opt/util-tests/tests/dis/i386/32.bmi1.out mode=0444 file path=opt/util-tests/tests/dis/i386/32.bmi1.s mode=0444 file path=opt/util-tests/tests/dis/i386/32.bmi2.out mode=0444 @@ -1200,6 +1202,8 @@ file path=opt/util-tests/tests/dis/i386/32.fma-sd.out mode=0444 file path=opt/util-tests/tests/dis/i386/32.fma-sd.s mode=0444 file path=opt/util-tests/tests/dis/i386/32.fma-ss.out mode=0444 file path=opt/util-tests/tests/dis/i386/32.fma-ss.s mode=0444 +file path=opt/util-tests/tests/dis/i386/32.gfni.out mode=0444 +file path=opt/util-tests/tests/dis/i386/32.gfni.s mode=0444 file path=opt/util-tests/tests/dis/i386/32.lzcnt.out mode=0444 file path=opt/util-tests/tests/dis/i386/32.lzcnt.s mode=0444 file path=opt/util-tests/tests/dis/i386/32.movbe.out mode=0444 @@ -1220,6 +1224,8 @@ file path=opt/util-tests/tests/dis/i386/32.sse-4.2.out mode=0444 file path=opt/util-tests/tests/dis/i386/32.sse-4.2.s mode=0444 file path=opt/util-tests/tests/dis/i386/32.ssse3.out mode=0444 file path=opt/util-tests/tests/dis/i386/32.ssse3.s mode=0444 +file path=opt/util-tests/tests/dis/i386/32.vaes.out mode=0444 +file path=opt/util-tests/tests/dis/i386/32.vaes.s mode=0444 file path=opt/util-tests/tests/dis/i386/32.xsave.out mode=0444 file path=opt/util-tests/tests/dis/i386/32.xsave.s mode=0444 file path=opt/util-tests/tests/dis/i386/64.adx.out mode=0444 @@ -1236,6 +1242,8 @@ file path=opt/util-tests/tests/dis/i386/64.avx512.out mode=0444 file path=opt/util-tests/tests/dis/i386/64.avx512.s mode=0444 file path=opt/util-tests/tests/dis/i386/64.avx512_vnni.out mode=0444 file path=opt/util-tests/tests/dis/i386/64.avx512_vnni.s mode=0444 +file path=opt/util-tests/tests/dis/i386/64.avx512_vpclmulqdq.out mode=0444 +file path=opt/util-tests/tests/dis/i386/64.avx512_vpclmulqdq.s mode=0444 file path=opt/util-tests/tests/dis/i386/64.bmi1.out mode=0444 file path=opt/util-tests/tests/dis/i386/64.bmi1.s mode=0444 file path=opt/util-tests/tests/dis/i386/64.bmi2.out mode=0444 @@ -1256,6 +1264,8 @@ file path=opt/util-tests/tests/dis/i386/64.fma-ss.out mode=0444 file path=opt/util-tests/tests/dis/i386/64.fma-ss.s mode=0444 file path=opt/util-tests/tests/dis/i386/64.fsbase.out mode=0444 file path=opt/util-tests/tests/dis/i386/64.fsbase.s mode=0444 +file path=opt/util-tests/tests/dis/i386/64.gfni.out mode=0444 +file path=opt/util-tests/tests/dis/i386/64.gfni.s mode=0444 file path=opt/util-tests/tests/dis/i386/64.lzcnt.out mode=0444 file path=opt/util-tests/tests/dis/i386/64.lzcnt.s mode=0444 file path=opt/util-tests/tests/dis/i386/64.movbe.out mode=0444 @@ -1278,6 +1288,8 @@ file path=opt/util-tests/tests/dis/i386/64.sse-4.2.out mode=0444 file path=opt/util-tests/tests/dis/i386/64.sse-4.2.s mode=0444 file path=opt/util-tests/tests/dis/i386/64.ssse3.out mode=0444 file path=opt/util-tests/tests/dis/i386/64.ssse3.s mode=0444 +file path=opt/util-tests/tests/dis/i386/64.vaes.out mode=0444 +file path=opt/util-tests/tests/dis/i386/64.vaes.s mode=0444 file path=opt/util-tests/tests/dis/i386/64.vmx.out mode=0444 file path=opt/util-tests/tests/dis/i386/64.vmx.s mode=0444 file path=opt/util-tests/tests/dis/i386/64.xsave.out mode=0444 @@ -1300,6 +1312,8 @@ file path=opt/util-tests/tests/dis/i386/tst.tsc.out mode=0444 file path=opt/util-tests/tests/dis/i386/tst.tsc.s mode=0444 file path=opt/util-tests/tests/dis/i386/tst.vmx.out mode=0444 file path=opt/util-tests/tests/dis/i386/tst.vmx.s mode=0444 +file path=opt/util-tests/tests/dis/i386/tst.wbnovind.out mode=0444 +file path=opt/util-tests/tests/dis/i386/tst.wbnovind.s mode=0444 file path=opt/util-tests/tests/dis/risc-v-c/32.ldsr.out mode=0444 file path=opt/util-tests/tests/dis/risc-v-c/32.ldsr.s mode=0444 file path=opt/util-tests/tests/dis/risc-v-c/64.int.out mode=0444 diff --git a/usr/src/test/util-tests/tests/dis/i386/32.avx512_vpclmulqdq.out b/usr/src/test/util-tests/tests/dis/i386/32.avx512_vpclmulqdq.out new file mode 100644 index 0000000000..fa7b7814f1 --- /dev/null +++ b/usr/src/test/util-tests/tests/dis/i386/32.avx512_vpclmulqdq.out @@ -0,0 +1,11 @@ + libdis_test: c4 e3 75 44 d0 23 vpclmulqdq $0x23,%ymm0,%ymm1,%ymm2 + libdis_test+0x6: c4 e3 65 44 a0 45 vpclmulqdq $0x42,0x12345(%eax),%ymm3,%ymm4 + 23 01 00 42 + libdis_test+0x10: c4 e3 65 44 a4 8b vpclmulqdq $-0x17,0x678(%ebx,%ecx,4),%ymm3,%ymm4 <0xe9> + 78 06 00 00 e9 + libdis_test+0x1b: 62 f3 75 48 44 d0 vpclmulqdq $0x23,%zmm0,%zmm1,%zmm2 + 23 + libdis_test+0x22: 62 f3 65 48 44 a0 vpclmulqdq $0x42,0x12345(%eax),%zmm3,%zmm4 + 45 23 01 00 42 + libdis_test+0x2d: 62 f3 65 48 44 a4 vpclmulqdq $-0x17,0x678(%ebx,%ecx,4),%zmm3,%zmm4 <0xe9> + 8b 78 06 00 00 e9 diff --git a/usr/src/test/util-tests/tests/dis/i386/32.avx512_vpclmulqdq.s b/usr/src/test/util-tests/tests/dis/i386/32.avx512_vpclmulqdq.s new file mode 100644 index 0000000000..d795517bdc --- /dev/null +++ b/usr/src/test/util-tests/tests/dis/i386/32.avx512_vpclmulqdq.s @@ -0,0 +1,32 @@ +/* + * This file and its contents are supplied under the terms of the + * Common Development and Distribution License ("CDDL"), version 1.0. + * You may only use this file in accordance with the terms of version + * 1.0 of the CDDL. + * + * A full copy of the text of the CDDL should have accompanied this + * source. A copy of the CDDL is also available via the Internet at + * http://www.illumos.org/license/CDDL. + */ + +/* + * Copyright 2020 Robert Mustacchi + */ + +/* + * Test AVX512 vpclmulqdq related instructions + */ + +.text +.align 16 +.globl libdis_test +.type libdis_test, @function +libdis_test: + vpclmulqdq $0x23, %ymm0, %ymm1, %ymm2 + vpclmulqdq $0x42, 0x12345(%eax), %ymm3, %ymm4 + vpclmulqdq $-0x17, 0x678(%ebx, %ecx, 4), %ymm3, %ymm4 + + vpclmulqdq $0x23, %zmm0, %zmm1, %zmm2 + vpclmulqdq $0x42, 0x12345(%eax), %zmm3, %zmm4 + vpclmulqdq $-0x17, 0x678(%ebx, %ecx, 4), %zmm3, %zmm4 +.size libdis_test, [.-libdis_test] diff --git a/usr/src/test/util-tests/tests/dis/i386/32.gfni.out b/usr/src/test/util-tests/tests/dis/i386/32.gfni.out new file mode 100644 index 0000000000..4ea2c1c863 --- /dev/null +++ b/usr/src/test/util-tests/tests/dis/i386/32.gfni.out @@ -0,0 +1,205 @@ + libdis_test: 66 0f 3a cf c8 23 gf2p8affineinvqb $0x23,%xmm0,%xmm1 + libdis_test+0x6: 66 0f 3a cf 10 51 gf2p8affineinvqb $0x51,(%eax),%xmm2 + libdis_test+0xc: 66 0f 3a cf 5b 12 gf2p8affineinvqb $0x19,0x12(%ebx),%xmm3 + 19 + libdis_test+0x13: 66 0f 3a cf 64 91 gf2p8affineinvqb $0x77,0x12(%ecx,%edx,4),%xmm4 + 12 77 + libdis_test+0x1b: 66 0f 3a ce f7 23 gf2p8affineqb $0x23,%xmm7,%xmm6 + libdis_test+0x21: 66 0f 3a ce 28 51 gf2p8affineqb $0x51,(%eax),%xmm5 + libdis_test+0x27: 66 0f 3a ce 63 12 gf2p8affineqb $0x19,0x12(%ebx),%xmm4 + 19 + libdis_test+0x2e: 66 0f 3a ce 5c 91 gf2p8affineqb $0x77,0x12(%ecx,%edx,4),%xmm3 + 12 77 + libdis_test+0x36: 66 0f 38 cf da gf2p8mulb %xmm2,%xmm3 + libdis_test+0x3b: 66 0f 38 cf 20 gf2p8mulb (%eax),%xmm4 + libdis_test+0x40: 66 0f 38 cf 5b 12 gf2p8mulb 0x12(%ebx),%xmm3 + libdis_test+0x46: 66 0f 38 cf 54 91 gf2p8mulb 0x17(%ecx,%edx,4),%xmm2 + 17 + libdis_test+0x4d: c4 e3 f1 cf e8 23 vgf2p8affineinvqb $0x23,%xmm0,%xmm1,%xmm5 + libdis_test+0x53: c4 e3 e9 cf 30 51 vgf2p8affineinvqb $0x51,(%eax),%xmm2,%xmm6 + libdis_test+0x59: c4 e3 e1 cf 7b 12 vgf2p8affineinvqb $0x19,0x12(%ebx),%xmm3,%xmm7 + 19 + libdis_test+0x60: c4 e3 d9 cf 44 91 vgf2p8affineinvqb $0x77,0x12(%ecx,%edx,4),%xmm4,%xmm0 + 12 77 + libdis_test+0x68: c4 e3 c9 ce c7 23 vgf2p8affineqb $0x23,%xmm7,%xmm6,%xmm0 + libdis_test+0x6e: c4 e3 d1 ce 08 51 vgf2p8affineqb $0x51,(%eax),%xmm5,%xmm1 + libdis_test+0x74: c4 e3 d9 ce 53 12 vgf2p8affineqb $0x19,0x12(%ebx),%xmm4,%xmm2 + 19 + libdis_test+0x7b: c4 e3 e1 ce 74 91 vgf2p8affineqb $0x77,0x12(%ecx,%edx,4),%xmm3,%xmm6 + 12 77 + libdis_test+0x83: c4 e2 61 cf c2 vgf2p8mulb %xmm2,%xmm3,%xmm0 + libdis_test+0x88: c4 e2 59 cf 08 vgf2p8mulb (%eax),%xmm4,%xmm1 + libdis_test+0x8d: c4 e2 61 cf 53 12 vgf2p8mulb 0x12(%ebx),%xmm3,%xmm2 + libdis_test+0x93: c4 e2 69 cf 5c 91 vgf2p8mulb 0x17(%ecx,%edx,4),%xmm2,%xmm3 + 17 + libdis_test+0x9a: c4 e3 f5 cf e8 23 vgf2p8affineinvqb $0x23,%ymm0,%ymm1,%ymm5 + libdis_test+0xa0: c4 e3 ed cf 30 51 vgf2p8affineinvqb $0x51,(%eax),%ymm2,%ymm6 + libdis_test+0xa6: c4 e3 e5 cf 7b 12 vgf2p8affineinvqb $0x19,0x12(%ebx),%ymm3,%ymm7 + 19 + libdis_test+0xad: c4 e3 dd cf 44 91 vgf2p8affineinvqb $0x77,0x12(%ecx,%edx,4),%ymm4,%ymm0 + 12 77 + libdis_test+0xb5: c4 e3 cd ce c7 23 vgf2p8affineqb $0x23,%ymm7,%ymm6,%ymm0 + libdis_test+0xbb: c4 e3 d5 ce 08 51 vgf2p8affineqb $0x51,(%eax),%ymm5,%ymm1 + libdis_test+0xc1: c4 e3 dd ce 53 12 vgf2p8affineqb $0x19,0x12(%ebx),%ymm4,%ymm2 + 19 + libdis_test+0xc8: c4 e3 e5 ce 74 91 vgf2p8affineqb $0x77,0x12(%ecx,%edx,4),%ymm3,%ymm6 + 12 77 + libdis_test+0xd0: c4 e2 65 cf c2 vgf2p8mulb %ymm2,%ymm3,%ymm0 + libdis_test+0xd5: c4 e2 5d cf 08 vgf2p8mulb (%eax),%ymm4,%ymm1 + libdis_test+0xda: c4 e2 65 cf 53 12 vgf2p8mulb 0x12(%ebx),%ymm3,%ymm2 + libdis_test+0xe0: c4 e2 6d cf 5c 91 vgf2p8mulb 0x17(%ecx,%edx,4),%ymm2,%ymm3 + 17 + libdis_test+0xe7: 62 f3 f5 48 cf e8 vgf2p8affineinvqb $0x23,%zmm0,%zmm1,%zmm5 + 23 + libdis_test+0xee: 62 f3 ed 48 cf 30 vgf2p8affineinvqb $0x51,(%eax),%zmm2,%zmm6 + 51 + libdis_test+0xf5: 62 f3 e5 48 cf bb vgf2p8affineinvqb $0x19,0x12(%ebx),%zmm3,%zmm7 + 12 00 00 00 19 + libdis_test+0x100: 62 f3 dd 48 cf 84 vgf2p8affineinvqb $0x77,0x12(%ecx,%edx,4),%zmm4,%zmm0 + 91 12 00 00 00 77 + libdis_test+0x10c: 62 f3 cd 48 ce c7 vgf2p8affineqb $0x23,%zmm7,%zmm6,%zmm0 + 23 + libdis_test+0x113: 62 f3 d5 48 ce 08 vgf2p8affineqb $0x51,(%eax),%zmm5,%zmm1 + 51 + libdis_test+0x11a: 62 f3 dd 48 ce 93 vgf2p8affineqb $0x19,0x12(%ebx),%zmm4,%zmm2 + 12 00 00 00 19 + libdis_test+0x125: 62 f3 e5 48 ce b4 vgf2p8affineqb $0x77,0x12(%ecx,%edx,4),%zmm3,%zmm6 + 91 12 00 00 00 77 + libdis_test+0x131: 62 f2 65 48 cf c2 vgf2p8mulb %zmm2,%zmm3,%zmm0 + libdis_test+0x137: 62 f2 5d 48 cf 08 vgf2p8mulb (%eax),%zmm4,%zmm1 + libdis_test+0x13d: 62 f2 65 48 cf 93 vgf2p8mulb 0x12(%ebx),%zmm3,%zmm2 + 12 00 00 00 + libdis_test+0x147: 62 f2 6d 48 cf 9c vgf2p8mulb 0x17(%ecx,%edx,4),%zmm2,%zmm3 + 91 17 00 00 00 + libdis_test+0x152: 62 f3 f5 49 cf e8 vgf2p8affineinvqb $0x23,%zmm0,%zmm1,%zmm5{%k1} + 23 + libdis_test+0x159: 62 f3 f5 ca cf e8 vgf2p8affineinvqb $0x23,%zmm0,%zmm1,%zmm5{%k2}{z} + 23 + libdis_test+0x160: 62 f3 ed 4b cf 30 vgf2p8affineinvqb $0x51,(%eax),%zmm2,%zmm6{%k3} + 51 + libdis_test+0x167: 62 f3 ed cc cf 30 vgf2p8affineinvqb $0x51,(%eax),%zmm2,%zmm6{%k4}{z} + 51 + libdis_test+0x16e: 62 f3 e5 4d cf bb vgf2p8affineinvqb $0x19,0x12(%ebx),%zmm3,%zmm7{%k5} + 12 00 00 00 19 + libdis_test+0x179: 62 f3 e5 ce cf bb vgf2p8affineinvqb $0x19,0x12(%ebx),%zmm3,%zmm7{%k6}{z} + 12 00 00 00 19 + libdis_test+0x184: 62 f3 dd 4f cf 84 vgf2p8affineinvqb $0x77,0x12(%ecx,%edx,4),%zmm4,%zmm0{%k7} + 91 12 00 00 00 77 + libdis_test+0x190: 62 f3 dd cf cf 84 vgf2p8affineinvqb $0x77,0x12(%ecx,%edx,4),%zmm4,%zmm0{%k7}{z} + 91 12 00 00 00 77 + libdis_test+0x19c: 62 f3 cd 4f ce c7 vgf2p8affineqb $0x23,%zmm7,%zmm6,%zmm0{%k7} + 23 + libdis_test+0x1a3: 62 f3 cd ce ce c7 vgf2p8affineqb $0x23,%zmm7,%zmm6,%zmm0{%k6}{z} + 23 + libdis_test+0x1aa: 62 f3 d5 4d ce 08 vgf2p8affineqb $0x51,(%eax),%zmm5,%zmm1{%k5} + 51 + libdis_test+0x1b1: 62 f3 d5 cc ce 08 vgf2p8affineqb $0x51,(%eax),%zmm5,%zmm1{%k4}{z} + 51 + libdis_test+0x1b8: 62 f3 dd 4b ce 93 vgf2p8affineqb $0x19,0x12(%ebx),%zmm4,%zmm2{%k3} + 12 00 00 00 19 + libdis_test+0x1c3: 62 f3 dd ca ce 93 vgf2p8affineqb $0x19,0x12(%ebx),%zmm4,%zmm2{%k2}{z} + 12 00 00 00 19 + libdis_test+0x1ce: 62 f3 e5 49 ce b4 vgf2p8affineqb $0x77,0x12(%ecx,%edx,4),%zmm3,%zmm6{%k1} + 91 12 00 00 00 77 + libdis_test+0x1da: 62 f3 e5 ca ce b4 vgf2p8affineqb $0x77,0x12(%ecx,%edx,4),%zmm3,%zmm6{%k2}{z} + 91 12 00 00 00 77 + libdis_test+0x1e6: 62 f2 65 4b cf c2 vgf2p8mulb %zmm2,%zmm3,%zmm0{%k3} + libdis_test+0x1ec: 62 f2 65 ca cf c2 vgf2p8mulb %zmm2,%zmm3,%zmm0{%k2}{z} + libdis_test+0x1f2: 62 f2 5d 4c cf 08 vgf2p8mulb (%eax),%zmm4,%zmm1{%k4} + libdis_test+0x1f8: 62 f2 5d cd cf 08 vgf2p8mulb (%eax),%zmm4,%zmm1{%k5}{z} + libdis_test+0x1fe: 62 f2 65 49 cf 93 vgf2p8mulb 0x12(%ebx),%zmm3,%zmm2{%k1} + 12 00 00 00 + libdis_test+0x208: 62 f2 65 ca cf 93 vgf2p8mulb 0x12(%ebx),%zmm3,%zmm2{%k2}{z} + 12 00 00 00 + libdis_test+0x212: 62 f2 6d 4f cf 9c vgf2p8mulb 0x17(%ecx,%edx,4),%zmm2,%zmm3{%k7} + 91 17 00 00 00 + libdis_test+0x21d: 62 f2 6d ce cf 9c vgf2p8mulb 0x17(%ecx,%edx,4),%zmm2,%zmm3{%k6}{z} + 91 17 00 00 00 + libdis_test+0x228: 62 f3 f5 29 cf e8 vgf2p8affineinvqb $0x23,%ymm0,%ymm1,%ymm5{%k1} + 23 + libdis_test+0x22f: 62 f3 f5 aa cf e8 vgf2p8affineinvqb $0x23,%ymm0,%ymm1,%ymm5{%k2}{z} + 23 + libdis_test+0x236: 62 f3 ed 2b cf 30 vgf2p8affineinvqb $0x51,(%eax),%ymm2,%ymm6{%k3} + 51 + libdis_test+0x23d: 62 f3 ed ac cf 30 vgf2p8affineinvqb $0x51,(%eax),%ymm2,%ymm6{%k4}{z} + 51 + libdis_test+0x244: 62 f3 e5 2d cf bb vgf2p8affineinvqb $0x19,0x12(%ebx),%ymm3,%ymm7{%k5} + 12 00 00 00 19 + libdis_test+0x24f: 62 f3 e5 ae cf bb vgf2p8affineinvqb $0x19,0x12(%ebx),%ymm3,%ymm7{%k6}{z} + 12 00 00 00 19 + libdis_test+0x25a: 62 f3 dd 2f cf 84 vgf2p8affineinvqb $0x77,0x12(%ecx,%edx,4),%ymm4,%ymm0{%k7} + 91 12 00 00 00 77 + libdis_test+0x266: 62 f3 dd af cf 84 vgf2p8affineinvqb $0x77,0x12(%ecx,%edx,4),%ymm4,%ymm0{%k7}{z} + 91 12 00 00 00 77 + libdis_test+0x272: 62 f3 cd 2f ce c7 vgf2p8affineqb $0x23,%ymm7,%ymm6,%ymm0{%k7} + 23 + libdis_test+0x279: 62 f3 cd ae ce c7 vgf2p8affineqb $0x23,%ymm7,%ymm6,%ymm0{%k6}{z} + 23 + libdis_test+0x280: 62 f3 d5 2d ce 08 vgf2p8affineqb $0x51,(%eax),%ymm5,%ymm1{%k5} + 51 + libdis_test+0x287: 62 f3 d5 ac ce 08 vgf2p8affineqb $0x51,(%eax),%ymm5,%ymm1{%k4}{z} + 51 + libdis_test+0x28e: 62 f3 dd 2b ce 93 vgf2p8affineqb $0x19,0x12(%ebx),%ymm4,%ymm2{%k3} + 12 00 00 00 19 + libdis_test+0x299: 62 f3 dd aa ce 93 vgf2p8affineqb $0x19,0x12(%ebx),%ymm4,%ymm2{%k2}{z} + 12 00 00 00 19 + libdis_test+0x2a4: 62 f3 e5 29 ce b4 vgf2p8affineqb $0x77,0x12(%ecx,%edx,4),%ymm3,%ymm6{%k1} + 91 12 00 00 00 77 + libdis_test+0x2b0: 62 f3 e5 aa ce b4 vgf2p8affineqb $0x77,0x12(%ecx,%edx,4),%ymm3,%ymm6{%k2}{z} + 91 12 00 00 00 77 + libdis_test+0x2bc: 62 f2 65 2b cf c2 vgf2p8mulb %ymm2,%ymm3,%ymm0{%k3} + libdis_test+0x2c2: 62 f2 65 aa cf c2 vgf2p8mulb %ymm2,%ymm3,%ymm0{%k2}{z} + libdis_test+0x2c8: 62 f2 5d 2c cf 08 vgf2p8mulb (%eax),%ymm4,%ymm1{%k4} + libdis_test+0x2ce: 62 f2 5d ad cf 08 vgf2p8mulb (%eax),%ymm4,%ymm1{%k5}{z} + libdis_test+0x2d4: 62 f2 65 29 cf 93 vgf2p8mulb 0x12(%ebx),%ymm3,%ymm2{%k1} + 12 00 00 00 + libdis_test+0x2de: 62 f2 65 aa cf 93 vgf2p8mulb 0x12(%ebx),%ymm3,%ymm2{%k2}{z} + 12 00 00 00 + libdis_test+0x2e8: 62 f2 6d 2f cf 9c vgf2p8mulb 0x17(%ecx,%edx,4),%ymm2,%ymm3{%k7} + 91 17 00 00 00 + libdis_test+0x2f3: 62 f2 6d ae cf 9c vgf2p8mulb 0x17(%ecx,%edx,4),%ymm2,%ymm3{%k6}{z} + 91 17 00 00 00 + libdis_test+0x2fe: 62 f3 f5 09 cf e8 vgf2p8affineinvqb $0x23,%xmm0,%xmm1,%xmm5{%k1} + 23 + libdis_test+0x305: 62 f3 f5 8a cf e8 vgf2p8affineinvqb $0x23,%xmm0,%xmm1,%xmm5{%k2}{z} + 23 + libdis_test+0x30c: 62 f3 ed 0b cf 30 vgf2p8affineinvqb $0x51,(%eax),%xmm2,%xmm6{%k3} + 51 + libdis_test+0x313: 62 f3 ed 8c cf 30 vgf2p8affineinvqb $0x51,(%eax),%xmm2,%xmm6{%k4}{z} + 51 + libdis_test+0x31a: 62 f3 e5 0d cf bb vgf2p8affineinvqb $0x19,0x12(%ebx),%xmm3,%xmm7{%k5} + 12 00 00 00 19 + libdis_test+0x325: 62 f3 e5 8e cf bb vgf2p8affineinvqb $0x19,0x12(%ebx),%xmm3,%xmm7{%k6}{z} + 12 00 00 00 19 + libdis_test+0x330: 62 f3 dd 0f cf 84 vgf2p8affineinvqb $0x77,0x12(%ecx,%edx,4),%xmm4,%xmm0{%k7} + 91 12 00 00 00 77 + libdis_test+0x33c: 62 f3 dd 8f cf 84 vgf2p8affineinvqb $0x77,0x12(%ecx,%edx,4),%xmm4,%xmm0{%k7}{z} + 91 12 00 00 00 77 + libdis_test+0x348: 62 f3 cd 0f ce c7 vgf2p8affineqb $0x23,%xmm7,%xmm6,%xmm0{%k7} + 23 + libdis_test+0x34f: 62 f3 cd 8e ce c7 vgf2p8affineqb $0x23,%xmm7,%xmm6,%xmm0{%k6}{z} + 23 + libdis_test+0x356: 62 f3 d5 0d ce 08 vgf2p8affineqb $0x51,(%eax),%xmm5,%xmm1{%k5} + 51 + libdis_test+0x35d: 62 f3 d5 8c ce 08 vgf2p8affineqb $0x51,(%eax),%xmm5,%xmm1{%k4}{z} + 51 + libdis_test+0x364: 62 f3 dd 0b ce 93 vgf2p8affineqb $0x19,0x12(%ebx),%xmm4,%xmm2{%k3} + 12 00 00 00 19 + libdis_test+0x36f: 62 f3 dd 8a ce 93 vgf2p8affineqb $0x19,0x12(%ebx),%xmm4,%xmm2{%k2}{z} + 12 00 00 00 19 + libdis_test+0x37a: 62 f3 e5 09 ce b4 vgf2p8affineqb $0x77,0x12(%ecx,%edx,4),%xmm3,%xmm6{%k1} + 91 12 00 00 00 77 + libdis_test+0x386: 62 f3 e5 8a ce b4 vgf2p8affineqb $0x77,0x12(%ecx,%edx,4),%xmm3,%xmm6{%k2}{z} + 91 12 00 00 00 77 + libdis_test+0x392: 62 f2 65 0b cf c2 vgf2p8mulb %xmm2,%xmm3,%xmm0{%k3} + libdis_test+0x398: 62 f2 65 8a cf c2 vgf2p8mulb %xmm2,%xmm3,%xmm0{%k2}{z} + libdis_test+0x39e: 62 f2 5d 0c cf 08 vgf2p8mulb (%eax),%xmm4,%xmm1{%k4} + libdis_test+0x3a4: 62 f2 5d 8d cf 08 vgf2p8mulb (%eax),%xmm4,%xmm1{%k5}{z} + libdis_test+0x3aa: 62 f2 65 09 cf 93 vgf2p8mulb 0x12(%ebx),%xmm3,%xmm2{%k1} + 12 00 00 00 + libdis_test+0x3b4: 62 f2 65 8a cf 93 vgf2p8mulb 0x12(%ebx),%xmm3,%xmm2{%k2}{z} + 12 00 00 00 + libdis_test+0x3be: 62 f2 6d 0f cf 9c vgf2p8mulb 0x17(%ecx,%edx,4),%xmm2,%xmm3{%k7} + 91 17 00 00 00 + libdis_test+0x3c9: 62 f2 6d 8e cf 9c vgf2p8mulb 0x17(%ecx,%edx,4),%xmm2,%xmm3{%k6}{z} + 91 17 00 00 00 diff --git a/usr/src/test/util-tests/tests/dis/i386/32.gfni.s b/usr/src/test/util-tests/tests/dis/i386/32.gfni.s new file mode 100644 index 0000000000..a9bfa07aa8 --- /dev/null +++ b/usr/src/test/util-tests/tests/dis/i386/32.gfni.s @@ -0,0 +1,172 @@ +/* + * This file and its contents are supplied under the terms of the + * Common Development and Distribution License ("CDDL"), version 1.0. + * You may only use this file in accordance with the terms of version + * 1.0 of the CDDL. + * + * A full copy of the text of the CDDL should have accompanied this + * source. A copy of the CDDL is also available via the Internet at + * http://www.illumos.org/license/CDDL. + */ + +/* + * Copyright 2020 Robert Mustacchi + */ + +/* + * Test GFNI related instructions + */ + +.text +.align 16 +.globl libdis_test +.type libdis_test, @function +libdis_test: + /* SSE Form */ + gf2p8affineinvqb $0x23, %xmm0, %xmm1 + gf2p8affineinvqb $0x51, (%eax), %xmm2 + gf2p8affineinvqb $0x19, 0x12(%ebx), %xmm3 + gf2p8affineinvqb $0x77, 0x12(%ecx, %edx, 4), %xmm4 + + gf2p8affineqb $0x23, %xmm7, %xmm6 + gf2p8affineqb $0x51, (%eax), %xmm5 + gf2p8affineqb $0x19, 0x12(%ebx), %xmm4 + gf2p8affineqb $0x77, 0x12(%ecx, %edx, 4), %xmm3 + + gf2p8mulb %xmm2, %xmm3 + gf2p8mulb (%eax), %xmm4 + gf2p8mulb 0x12(%ebx), %xmm3 + gf2p8mulb 0x17(%ecx, %edx, 4), %xmm2 + + /* VEX Form - xmm */ + vgf2p8affineinvqb $0x23, %xmm0, %xmm1, %xmm5 + vgf2p8affineinvqb $0x51, (%eax), %xmm2, %xmm6 + vgf2p8affineinvqb $0x19, 0x12(%ebx), %xmm3, %xmm7 + vgf2p8affineinvqb $0x77, 0x12(%ecx, %edx, 4), %xmm4, %xmm0 + + vgf2p8affineqb $0x23, %xmm7, %xmm6, %xmm0 + vgf2p8affineqb $0x51, (%eax), %xmm5, %xmm1 + vgf2p8affineqb $0x19, 0x12(%ebx), %xmm4, %xmm2 + vgf2p8affineqb $0x77, 0x12(%ecx, %edx, 4), %xmm3, %xmm6 + + vgf2p8mulb %xmm2, %xmm3, %xmm0 + vgf2p8mulb (%eax), %xmm4, %xmm1 + vgf2p8mulb 0x12(%ebx), %xmm3, %xmm2 + vgf2p8mulb 0x17(%ecx, %edx, 4), %xmm2, %xmm3 + + /* VEX Form - ymm */ + vgf2p8affineinvqb $0x23, %ymm0, %ymm1, %ymm5 + vgf2p8affineinvqb $0x51, (%eax), %ymm2, %ymm6 + vgf2p8affineinvqb $0x19, 0x12(%ebx), %ymm3, %ymm7 + vgf2p8affineinvqb $0x77, 0x12(%ecx, %edx, 4), %ymm4, %ymm0 + + vgf2p8affineqb $0x23, %ymm7, %ymm6, %ymm0 + vgf2p8affineqb $0x51, (%eax), %ymm5, %ymm1 + vgf2p8affineqb $0x19, 0x12(%ebx), %ymm4, %ymm2 + vgf2p8affineqb $0x77, 0x12(%ecx, %edx, 4), %ymm3, %ymm6 + + vgf2p8mulb %ymm2, %ymm3, %ymm0 + vgf2p8mulb (%eax), %ymm4, %ymm1 + vgf2p8mulb 0x12(%ebx), %ymm3, %ymm2 + vgf2p8mulb 0x17(%ecx, %edx, 4), %ymm2, %ymm3 + + /* EVEX Form - basic zmm */ + vgf2p8affineinvqb $0x23, %zmm0, %zmm1, %zmm5 + vgf2p8affineinvqb $0x51, (%eax), %zmm2, %zmm6 + vgf2p8affineinvqb $0x19, 0x12(%ebx), %zmm3, %zmm7 + vgf2p8affineinvqb $0x77, 0x12(%ecx, %edx, 4), %zmm4, %zmm0 + + vgf2p8affineqb $0x23, %zmm7, %zmm6, %zmm0 + vgf2p8affineqb $0x51, (%eax), %zmm5, %zmm1 + vgf2p8affineqb $0x19, 0x12(%ebx), %zmm4, %zmm2 + vgf2p8affineqb $0x77, 0x12(%ecx, %edx, 4), %zmm3, %zmm6 + + vgf2p8mulb %zmm2, %zmm3, %zmm0 + vgf2p8mulb (%eax), %zmm4, %zmm1 + vgf2p8mulb 0x12(%ebx), %zmm3, %zmm2 + vgf2p8mulb 0x17(%ecx, %edx, 4), %zmm2, %zmm3 + + /* EVEX Form - zmm, masks */ + vgf2p8affineinvqb $0x23, %zmm0, %zmm1, %zmm5{%k1} + vgf2p8affineinvqb $0x23, %zmm0, %zmm1, %zmm5{%k2}{z} + vgf2p8affineinvqb $0x51, (%eax), %zmm2, %zmm6{%k3} + vgf2p8affineinvqb $0x51, (%eax), %zmm2, %zmm6{%k4}{z} + vgf2p8affineinvqb $0x19, 0x12(%ebx), %zmm3, %zmm7{%k5} + vgf2p8affineinvqb $0x19, 0x12(%ebx), %zmm3, %zmm7{%k6}{z} + vgf2p8affineinvqb $0x77, 0x12(%ecx, %edx, 4), %zmm4, %zmm0{%k7} + vgf2p8affineinvqb $0x77, 0x12(%ecx, %edx, 4), %zmm4, %zmm0{%k7}{z} + + vgf2p8affineqb $0x23, %zmm7, %zmm6, %zmm0{%k7} + vgf2p8affineqb $0x23, %zmm7, %zmm6, %zmm0{%k6}{z} + vgf2p8affineqb $0x51, (%eax), %zmm5, %zmm1{%k5} + vgf2p8affineqb $0x51, (%eax), %zmm5, %zmm1{%k4}{z} + vgf2p8affineqb $0x19, 0x12(%ebx), %zmm4, %zmm2{%k3} + vgf2p8affineqb $0x19, 0x12(%ebx), %zmm4, %zmm2{%k2}{z} + vgf2p8affineqb $0x77, 0x12(%ecx, %edx, 4), %zmm3, %zmm6{%k1} + vgf2p8affineqb $0x77, 0x12(%ecx, %edx, 4), %zmm3, %zmm6{%k2}{z} + + vgf2p8mulb %zmm2, %zmm3, %zmm0{%k3} + vgf2p8mulb %zmm2, %zmm3, %zmm0{%k2}{z} + vgf2p8mulb (%eax), %zmm4, %zmm1{%k4} + vgf2p8mulb (%eax), %zmm4, %zmm1{%k5}{z} + vgf2p8mulb 0x12(%ebx), %zmm3, %zmm2{%k1} + vgf2p8mulb 0x12(%ebx), %zmm3, %zmm2{%k2}{z} + vgf2p8mulb 0x17(%ecx, %edx, 4), %zmm2, %zmm3{%k7} + vgf2p8mulb 0x17(%ecx, %edx, 4), %zmm2, %zmm3{%k6}{z} + + /* EVEX Form - ymm, masks */ + vgf2p8affineinvqb $0x23, %ymm0, %ymm1, %ymm5{%k1} + vgf2p8affineinvqb $0x23, %ymm0, %ymm1, %ymm5{%k2}{z} + vgf2p8affineinvqb $0x51, (%eax), %ymm2, %ymm6{%k3} + vgf2p8affineinvqb $0x51, (%eax), %ymm2, %ymm6{%k4}{z} + vgf2p8affineinvqb $0x19, 0x12(%ebx), %ymm3, %ymm7{%k5} + vgf2p8affineinvqb $0x19, 0x12(%ebx), %ymm3, %ymm7{%k6}{z} + vgf2p8affineinvqb $0x77, 0x12(%ecx, %edx, 4), %ymm4, %ymm0{%k7} + vgf2p8affineinvqb $0x77, 0x12(%ecx, %edx, 4), %ymm4, %ymm0{%k7}{z} + + vgf2p8affineqb $0x23, %ymm7, %ymm6, %ymm0{%k7} + vgf2p8affineqb $0x23, %ymm7, %ymm6, %ymm0{%k6}{z} + vgf2p8affineqb $0x51, (%eax), %ymm5, %ymm1{%k5} + vgf2p8affineqb $0x51, (%eax), %ymm5, %ymm1{%k4}{z} + vgf2p8affineqb $0x19, 0x12(%ebx), %ymm4, %ymm2{%k3} + vgf2p8affineqb $0x19, 0x12(%ebx), %ymm4, %ymm2{%k2}{z} + vgf2p8affineqb $0x77, 0x12(%ecx, %edx, 4), %ymm3, %ymm6{%k1} + vgf2p8affineqb $0x77, 0x12(%ecx, %edx, 4), %ymm3, %ymm6{%k2}{z} + + vgf2p8mulb %ymm2, %ymm3, %ymm0{%k3} + vgf2p8mulb %ymm2, %ymm3, %ymm0{%k2}{z} + vgf2p8mulb (%eax), %ymm4, %ymm1{%k4} + vgf2p8mulb (%eax), %ymm4, %ymm1{%k5}{z} + vgf2p8mulb 0x12(%ebx), %ymm3, %ymm2{%k1} + vgf2p8mulb 0x12(%ebx), %ymm3, %ymm2{%k2}{z} + vgf2p8mulb 0x17(%ecx, %edx, 4), %ymm2, %ymm3{%k7} + vgf2p8mulb 0x17(%ecx, %edx, 4), %ymm2, %ymm3{%k6}{z} + + /* EVEX Form - ymm, masks */ + vgf2p8affineinvqb $0x23, %xmm0, %xmm1, %xmm5{%k1} + vgf2p8affineinvqb $0x23, %xmm0, %xmm1, %xmm5{%k2}{z} + vgf2p8affineinvqb $0x51, (%eax), %xmm2, %xmm6{%k3} + vgf2p8affineinvqb $0x51, (%eax), %xmm2, %xmm6{%k4}{z} + vgf2p8affineinvqb $0x19, 0x12(%ebx), %xmm3, %xmm7{%k5} + vgf2p8affineinvqb $0x19, 0x12(%ebx), %xmm3, %xmm7{%k6}{z} + vgf2p8affineinvqb $0x77, 0x12(%ecx, %edx, 4), %xmm4, %xmm0{%k7} + vgf2p8affineinvqb $0x77, 0x12(%ecx, %edx, 4), %xmm4, %xmm0{%k7}{z} + + vgf2p8affineqb $0x23, %xmm7, %xmm6, %xmm0{%k7} + vgf2p8affineqb $0x23, %xmm7, %xmm6, %xmm0{%k6}{z} + vgf2p8affineqb $0x51, (%eax), %xmm5, %xmm1{%k5} + vgf2p8affineqb $0x51, (%eax), %xmm5, %xmm1{%k4}{z} + vgf2p8affineqb $0x19, 0x12(%ebx), %xmm4, %xmm2{%k3} + vgf2p8affineqb $0x19, 0x12(%ebx), %xmm4, %xmm2{%k2}{z} + vgf2p8affineqb $0x77, 0x12(%ecx, %edx, 4), %xmm3, %xmm6{%k1} + vgf2p8affineqb $0x77, 0x12(%ecx, %edx, 4), %xmm3, %xmm6{%k2}{z} + + vgf2p8mulb %xmm2, %xmm3, %xmm0{%k3} + vgf2p8mulb %xmm2, %xmm3, %xmm0{%k2}{z} + vgf2p8mulb (%eax), %xmm4, %xmm1{%k4} + vgf2p8mulb (%eax), %xmm4, %xmm1{%k5}{z} + vgf2p8mulb 0x12(%ebx), %xmm3, %xmm2{%k1} + vgf2p8mulb 0x12(%ebx), %xmm3, %xmm2{%k2}{z} + vgf2p8mulb 0x17(%ecx, %edx, 4), %xmm2, %xmm3{%k7} + vgf2p8mulb 0x17(%ecx, %edx, 4), %xmm2, %xmm3{%k6}{z} +.size libdis_test, [.-libdis_test] diff --git a/usr/src/test/util-tests/tests/dis/i386/32.vaes.out b/usr/src/test/util-tests/tests/dis/i386/32.vaes.out new file mode 100644 index 0000000000..fdf2d813be --- /dev/null +++ b/usr/src/test/util-tests/tests/dis/i386/32.vaes.out @@ -0,0 +1,24 @@ + libdis_test: c4 e2 71 dc d0 vaesenc %xmm0,%xmm1,%xmm2 + libdis_test+0x5: c4 e2 71 dc 10 vaesenc (%eax),%xmm1,%xmm2 + libdis_test+0xa: c4 e2 5d dc eb vaesenc %ymm3,%ymm4,%ymm5 + libdis_test+0xf: c4 e2 5d dc 2b vaesenc (%ebx),%ymm4,%ymm5 + libdis_test+0x14: 62 f2 45 48 dc c6 vaesenc %zmm6,%zmm7,%zmm0 + libdis_test+0x1a: 62 f2 45 48 dc 01 vaesenc (%ecx),%zmm7,%zmm0 + libdis_test+0x20: c4 e2 71 dd d0 vaesenclast %xmm0,%xmm1,%xmm2 + libdis_test+0x25: c4 e2 71 dd 10 vaesenclast (%eax),%xmm1,%xmm2 + libdis_test+0x2a: c4 e2 5d dd eb vaesenclast %ymm3,%ymm4,%ymm5 + libdis_test+0x2f: c4 e2 5d dd 2b vaesenclast (%ebx),%ymm4,%ymm5 + libdis_test+0x34: 62 f2 45 48 dd c6 vaesenclast %zmm6,%zmm7,%zmm0 + libdis_test+0x3a: 62 f2 45 48 dd 01 vaesenclast (%ecx),%zmm7,%zmm0 + libdis_test+0x40: c4 e2 71 de d0 vaesdec %xmm0,%xmm1,%xmm2 + libdis_test+0x45: c4 e2 71 de 10 vaesdec (%eax),%xmm1,%xmm2 + libdis_test+0x4a: c4 e2 5d de eb vaesdec %ymm3,%ymm4,%ymm5 + libdis_test+0x4f: c4 e2 5d de 2b vaesdec (%ebx),%ymm4,%ymm5 + libdis_test+0x54: 62 f2 45 48 de c6 vaesdec %zmm6,%zmm7,%zmm0 + libdis_test+0x5a: 62 f2 45 48 de 01 vaesdec (%ecx),%zmm7,%zmm0 + libdis_test+0x60: c4 e2 71 df d0 vaesdeclast %xmm0,%xmm1,%xmm2 + libdis_test+0x65: c4 e2 71 df 10 vaesdeclast (%eax),%xmm1,%xmm2 + libdis_test+0x6a: c4 e2 5d df eb vaesdeclast %ymm3,%ymm4,%ymm5 + libdis_test+0x6f: c4 e2 5d df 2b vaesdeclast (%ebx),%ymm4,%ymm5 + libdis_test+0x74: 62 f2 45 48 df c6 vaesdeclast %zmm6,%zmm7,%zmm0 + libdis_test+0x7a: 62 f2 45 48 df 01 vaesdeclast (%ecx),%zmm7,%zmm0 diff --git a/usr/src/test/util-tests/tests/dis/i386/32.vaes.s b/usr/src/test/util-tests/tests/dis/i386/32.vaes.s new file mode 100644 index 0000000000..fcc1edd976 --- /dev/null +++ b/usr/src/test/util-tests/tests/dis/i386/32.vaes.s @@ -0,0 +1,52 @@ +/* + * This file and its contents are supplied under the terms of the + * Common Development and Distribution License ("CDDL"), version 1.0. + * You may only use this file in accordance with the terms of version + * 1.0 of the CDDL. + * + * A full copy of the text of the CDDL should have accompanied this + * source. A copy of the CDDL is also available via the Internet at + * http://www.illumos.org/license/CDDL. + */ + +/* + * Copyright 2020 Robert Mustacchi + */ + +/* + * Test VAES related instructions + */ + +.text +.align 16 +.globl libdis_test +.type libdis_test, @function +libdis_test: + vaesenc %xmm0, %xmm1, %xmm2 + vaesenc (%eax), %xmm1, %xmm2 + vaesenc %ymm3, %ymm4, %ymm5 + vaesenc (%ebx), %ymm4, %ymm5 + vaesenc %zmm6, %zmm7, %zmm0 + vaesenc (%ecx), %zmm7, %zmm0 + + vaesenclast %xmm0, %xmm1, %xmm2 + vaesenclast (%eax), %xmm1, %xmm2 + vaesenclast %ymm3, %ymm4, %ymm5 + vaesenclast (%ebx), %ymm4, %ymm5 + vaesenclast %zmm6, %zmm7, %zmm0 + vaesenclast (%ecx), %zmm7, %zmm0 + + vaesdec %xmm0, %xmm1, %xmm2 + vaesdec (%eax), %xmm1, %xmm2 + vaesdec %ymm3, %ymm4, %ymm5 + vaesdec (%ebx), %ymm4, %ymm5 + vaesdec %zmm6, %zmm7, %zmm0 + vaesdec (%ecx), %zmm7, %zmm0 + + vaesdeclast %xmm0, %xmm1, %xmm2 + vaesdeclast (%eax), %xmm1, %xmm2 + vaesdeclast %ymm3, %ymm4, %ymm5 + vaesdeclast (%ebx), %ymm4, %ymm5 + vaesdeclast %zmm6, %zmm7, %zmm0 + vaesdeclast (%ecx), %zmm7, %zmm0 +.size libdis_test, [.-libdis_test] diff --git a/usr/src/test/util-tests/tests/dis/i386/64.avx512_vpclmulqdq.out b/usr/src/test/util-tests/tests/dis/i386/64.avx512_vpclmulqdq.out new file mode 100644 index 0000000000..a98d4b9c5f --- /dev/null +++ b/usr/src/test/util-tests/tests/dis/i386/64.avx512_vpclmulqdq.out @@ -0,0 +1,13 @@ + libdis_test: c4 43 25 44 e2 23 vpclmulqdq $0x23,%ymm10,%ymm11,%ymm12 + libdis_test+0x6: 67 c4 63 15 44 b0 addr32 vpclmulqdq $0x42,0x12345(%rax),%ymm13,%ymm14 + 45 23 01 00 42 + libdis_test+0x11: 67 62 e3 05 28 44 addr32 vpclmulqdq $-0x17,0x678(%rbx,%rcx,4),%ymm15,%ymm16 <0xe9> + 84 8b 78 06 00 00 + e9 + libdis_test+0x1e: 62 53 25 48 44 d4 vpclmulqdq $0x23,%zmm12,%zmm11,%zmm10 + 23 + libdis_test+0x25: 67 62 73 3d 48 44 addr32 vpclmulqdq $0x42,0x12345(%rax),%zmm8,%zmm8 + 80 45 23 01 00 42 + libdis_test+0x31: 67 62 f3 45 48 44 addr32 vpclmulqdq $-0x17,0x678(%rbx,%rcx,4),%zmm7,%zmm6 <0xe9> + b4 8b 78 06 00 00 + e9 diff --git a/usr/src/test/util-tests/tests/dis/i386/64.avx512_vpclmulqdq.s b/usr/src/test/util-tests/tests/dis/i386/64.avx512_vpclmulqdq.s new file mode 100644 index 0000000000..26ddfe1e08 --- /dev/null +++ b/usr/src/test/util-tests/tests/dis/i386/64.avx512_vpclmulqdq.s @@ -0,0 +1,32 @@ +/* + * This file and its contents are supplied under the terms of the + * Common Development and Distribution License ("CDDL"), version 1.0. + * You may only use this file in accordance with the terms of version + * 1.0 of the CDDL. + * + * A full copy of the text of the CDDL should have accompanied this + * source. A copy of the CDDL is also available via the Internet at + * http://www.illumos.org/license/CDDL. + */ + +/* + * Copyright 2020 Robert Mustacchi + */ + +/* + * Test AVX512 vpclmulqdq related instructions + */ + +.text +.align 16 +.globl libdis_test +.type libdis_test, @function +libdis_test: + vpclmulqdq $0x23, %ymm10, %ymm11, %ymm12 + vpclmulqdq $0x42, 0x12345(%eax), %ymm13, %ymm14 + vpclmulqdq $-0x17, 0x678(%ebx, %ecx, 4), %ymm15, %ymm16 + + vpclmulqdq $0x23, %zmm12, %zmm11, %zmm10 + vpclmulqdq $0x42, 0x12345(%eax), %zmm8, %zmm8 + vpclmulqdq $-0x17, 0x678(%ebx, %ecx, 4), %zmm7, %zmm6 +.size libdis_test, [.-libdis_test] diff --git a/usr/src/test/util-tests/tests/dis/i386/64.gfni.out b/usr/src/test/util-tests/tests/dis/i386/64.gfni.out new file mode 100644 index 0000000000..42ddd4529b --- /dev/null +++ b/usr/src/test/util-tests/tests/dis/i386/64.gfni.out @@ -0,0 +1,205 @@ + libdis_test: 66 0f 3a cf c8 23 gf2p8affineinvqb $0x23,%xmm0,%xmm1 + libdis_test+0x6: 66 0f 3a cf 10 51 gf2p8affineinvqb $0x51,(%rax),%xmm2 + libdis_test+0xc: 66 0f 3a cf 5b 12 gf2p8affineinvqb $0x19,0x12(%rbx),%xmm3 + 19 + libdis_test+0x13: 66 43 0f 3a cf 64 gf2p8affineinvqb $0x77,0x12(%r10,%r12,4),%xmm4 + a2 12 77 + libdis_test+0x1c: 66 0f 3a ce f7 23 gf2p8affineqb $0x23,%xmm7,%xmm6 + libdis_test+0x22: 66 0f 3a ce 28 51 gf2p8affineqb $0x51,(%rax),%xmm5 + libdis_test+0x28: 66 0f 3a ce 63 12 gf2p8affineqb $0x19,0x12(%rbx),%xmm4 + 19 + libdis_test+0x2f: 66 43 0f 3a ce 5c gf2p8affineqb $0x77,0x12(%r10,%r12,4),%xmm3 + a2 12 77 + libdis_test+0x38: 66 0f 38 cf da gf2p8mulb %xmm2,%xmm3 + libdis_test+0x3d: 66 0f 38 cf 20 gf2p8mulb (%rax),%xmm4 + libdis_test+0x42: 66 0f 38 cf 5b 12 gf2p8mulb 0x12(%rbx),%xmm3 + libdis_test+0x48: 66 43 0f 38 cf 54 gf2p8mulb 0x17(%r10,%r12,4),%xmm2 + a2 17 + libdis_test+0x50: c4 e3 f1 cf e8 23 vgf2p8affineinvqb $0x23,%xmm0,%xmm1,%xmm5 + libdis_test+0x56: c4 e3 e9 cf 30 51 vgf2p8affineinvqb $0x51,(%rax),%xmm2,%xmm6 + libdis_test+0x5c: c4 e3 e1 cf 7b 12 vgf2p8affineinvqb $0x19,0x12(%rbx),%xmm3,%xmm7 + 19 + libdis_test+0x63: c4 83 d9 cf 44 a2 vgf2p8affineinvqb $0x77,0x12(%r10,%r12,4),%xmm4,%xmm0 + 12 77 + libdis_test+0x6b: c4 e3 c9 ce c7 23 vgf2p8affineqb $0x23,%xmm7,%xmm6,%xmm0 + libdis_test+0x71: c4 e3 d1 ce 08 51 vgf2p8affineqb $0x51,(%rax),%xmm5,%xmm1 + libdis_test+0x77: c4 e3 d9 ce 53 12 vgf2p8affineqb $0x19,0x12(%rbx),%xmm4,%xmm2 + 19 + libdis_test+0x7e: c4 83 e1 ce 74 a2 vgf2p8affineqb $0x77,0x12(%r10,%r12,4),%xmm3,%xmm6 + 12 77 + libdis_test+0x86: c4 e2 61 cf c2 vgf2p8mulb %xmm2,%xmm3,%xmm0 + libdis_test+0x8b: c4 e2 59 cf 08 vgf2p8mulb (%rax),%xmm4,%xmm1 + libdis_test+0x90: c4 e2 61 cf 53 12 vgf2p8mulb 0x12(%rbx),%xmm3,%xmm2 + libdis_test+0x96: c4 82 69 cf 5c a2 vgf2p8mulb 0x17(%r10,%r12,4),%xmm2,%xmm3 + 17 + libdis_test+0x9d: c4 e3 f5 cf e8 23 vgf2p8affineinvqb $0x23,%ymm0,%ymm1,%ymm5 + libdis_test+0xa3: c4 e3 ed cf 30 51 vgf2p8affineinvqb $0x51,(%rax),%ymm2,%ymm6 + libdis_test+0xa9: c4 e3 e5 cf 7b 12 vgf2p8affineinvqb $0x19,0x12(%rbx),%ymm3,%ymm7 + 19 + libdis_test+0xb0: c4 83 dd cf 44 a2 vgf2p8affineinvqb $0x77,0x12(%r10,%r12,4),%ymm4,%ymm0 + 12 77 + libdis_test+0xb8: c4 e3 cd ce c7 23 vgf2p8affineqb $0x23,%ymm7,%ymm6,%ymm0 + libdis_test+0xbe: c4 e3 d5 ce 08 51 vgf2p8affineqb $0x51,(%rax),%ymm5,%ymm1 + libdis_test+0xc4: c4 e3 dd ce 53 12 vgf2p8affineqb $0x19,0x12(%rbx),%ymm4,%ymm2 + 19 + libdis_test+0xcb: c4 83 e5 ce 74 a2 vgf2p8affineqb $0x77,0x12(%r10,%r12,4),%ymm3,%ymm6 + 12 77 + libdis_test+0xd3: c4 e2 65 cf c2 vgf2p8mulb %ymm2,%ymm3,%ymm0 + libdis_test+0xd8: c4 e2 5d cf 08 vgf2p8mulb (%rax),%ymm4,%ymm1 + libdis_test+0xdd: c4 e2 65 cf 53 12 vgf2p8mulb 0x12(%rbx),%ymm3,%ymm2 + libdis_test+0xe3: c4 82 6d cf 5c a2 vgf2p8mulb 0x17(%r10,%r12,4),%ymm2,%ymm3 + 17 + libdis_test+0xea: 62 f3 f5 48 cf e8 vgf2p8affineinvqb $0x23,%zmm0,%zmm1,%zmm5 + 23 + libdis_test+0xf1: 62 f3 ed 48 cf 30 vgf2p8affineinvqb $0x51,(%rax),%zmm2,%zmm6 + 51 + libdis_test+0xf8: 62 f3 e5 48 cf bb vgf2p8affineinvqb $0x19,0x12(%rbx),%zmm3,%zmm7 + 12 00 00 00 19 + libdis_test+0x103: 62 93 dd 48 cf 84 vgf2p8affineinvqb $0x77,0x12(%r10,%r12,4),%zmm4,%zmm0 + a2 12 00 00 00 77 + libdis_test+0x10f: 62 f3 cd 48 ce c7 vgf2p8affineqb $0x23,%zmm7,%zmm6,%zmm0 + 23 + libdis_test+0x116: 62 f3 d5 48 ce 08 vgf2p8affineqb $0x51,(%rax),%zmm5,%zmm1 + 51 + libdis_test+0x11d: 62 f3 dd 48 ce 93 vgf2p8affineqb $0x19,0x12(%rbx),%zmm4,%zmm2 + 12 00 00 00 19 + libdis_test+0x128: 62 93 e5 48 ce b4 vgf2p8affineqb $0x77,0x12(%r10,%r12,4),%zmm3,%zmm6 + a2 12 00 00 00 77 + libdis_test+0x134: 62 f2 65 48 cf c2 vgf2p8mulb %zmm2,%zmm3,%zmm0 + libdis_test+0x13a: 62 f2 5d 48 cf 08 vgf2p8mulb (%rax),%zmm4,%zmm1 + libdis_test+0x140: 62 f2 65 48 cf 93 vgf2p8mulb 0x12(%rbx),%zmm3,%zmm2 + 12 00 00 00 + libdis_test+0x14a: 62 92 6d 48 cf 9c vgf2p8mulb 0x17(%r10,%r12,4),%zmm2,%zmm3 + a2 17 00 00 00 + libdis_test+0x155: 62 f3 f5 49 cf e8 vgf2p8affineinvqb $0x23,%zmm0,%zmm1,%zmm5{%k1} + 23 + libdis_test+0x15c: 62 f3 f5 ca cf e8 vgf2p8affineinvqb $0x23,%zmm0,%zmm1,%zmm5{%k2}{z} + 23 + libdis_test+0x163: 62 f3 ed 4b cf 30 vgf2p8affineinvqb $0x51,(%rax),%zmm2,%zmm6{%k3} + 51 + libdis_test+0x16a: 62 f3 ed cc cf 30 vgf2p8affineinvqb $0x51,(%rax),%zmm2,%zmm6{%k4}{z} + 51 + libdis_test+0x171: 62 f3 e5 4d cf bb vgf2p8affineinvqb $0x19,0x12(%rbx),%zmm3,%zmm7{%k5} + 12 00 00 00 19 + libdis_test+0x17c: 62 f3 e5 ce cf bb vgf2p8affineinvqb $0x19,0x12(%rbx),%zmm3,%zmm7{%k6}{z} + 12 00 00 00 19 + libdis_test+0x187: 62 93 dd 4f cf 84 vgf2p8affineinvqb $0x77,0x12(%r10,%r12,4),%zmm4,%zmm0{%k7} + a2 12 00 00 00 77 + libdis_test+0x193: 62 93 dd cf cf 84 vgf2p8affineinvqb $0x77,0x12(%r10,%r12,4),%zmm4,%zmm0{%k7}{z} + a2 12 00 00 00 77 + libdis_test+0x19f: 62 f3 cd 4f ce c7 vgf2p8affineqb $0x23,%zmm7,%zmm6,%zmm0{%k7} + 23 + libdis_test+0x1a6: 62 f3 cd ce ce c7 vgf2p8affineqb $0x23,%zmm7,%zmm6,%zmm0{%k6}{z} + 23 + libdis_test+0x1ad: 62 f3 d5 4d ce 08 vgf2p8affineqb $0x51,(%rax),%zmm5,%zmm1{%k5} + 51 + libdis_test+0x1b4: 62 f3 d5 cc ce 08 vgf2p8affineqb $0x51,(%rax),%zmm5,%zmm1{%k4}{z} + 51 + libdis_test+0x1bb: 62 f3 dd 4b ce 93 vgf2p8affineqb $0x19,0x12(%rbx),%zmm4,%zmm2{%k3} + 12 00 00 00 19 + libdis_test+0x1c6: 62 f3 dd ca ce 93 vgf2p8affineqb $0x19,0x12(%rbx),%zmm4,%zmm2{%k2}{z} + 12 00 00 00 19 + libdis_test+0x1d1: 62 93 e5 49 ce b4 vgf2p8affineqb $0x77,0x12(%r10,%r12,4),%zmm3,%zmm6{%k1} + a2 12 00 00 00 77 + libdis_test+0x1dd: 62 93 e5 ca ce b4 vgf2p8affineqb $0x77,0x12(%r10,%r12,4),%zmm3,%zmm6{%k2}{z} + a2 12 00 00 00 77 + libdis_test+0x1e9: 62 f2 65 4b cf c2 vgf2p8mulb %zmm2,%zmm3,%zmm0{%k3} + libdis_test+0x1ef: 62 f2 65 ca cf c2 vgf2p8mulb %zmm2,%zmm3,%zmm0{%k2}{z} + libdis_test+0x1f5: 62 f2 5d 4c cf 08 vgf2p8mulb (%rax),%zmm4,%zmm1{%k4} + libdis_test+0x1fb: 62 f2 5d cd cf 08 vgf2p8mulb (%rax),%zmm4,%zmm1{%k5}{z} + libdis_test+0x201: 62 f2 65 49 cf 93 vgf2p8mulb 0x12(%rbx),%zmm3,%zmm2{%k1} + 12 00 00 00 + libdis_test+0x20b: 62 f2 65 ca cf 93 vgf2p8mulb 0x12(%rbx),%zmm3,%zmm2{%k2}{z} + 12 00 00 00 + libdis_test+0x215: 62 92 6d 4f cf 9c vgf2p8mulb 0x17(%r10,%r12,4),%zmm2,%zmm3{%k7} + a2 17 00 00 00 + libdis_test+0x220: 62 92 6d ce cf 9c vgf2p8mulb 0x17(%r10,%r12,4),%zmm2,%zmm3{%k6}{z} + a2 17 00 00 00 + libdis_test+0x22b: 62 f3 f5 29 cf e8 vgf2p8affineinvqb $0x23,%ymm0,%ymm1,%ymm5{%k1} + 23 + libdis_test+0x232: 62 f3 f5 aa cf e8 vgf2p8affineinvqb $0x23,%ymm0,%ymm1,%ymm5{%k2}{z} + 23 + libdis_test+0x239: 62 f3 ed 2b cf 30 vgf2p8affineinvqb $0x51,(%rax),%ymm2,%ymm6{%k3} + 51 + libdis_test+0x240: 62 f3 ed ac cf 30 vgf2p8affineinvqb $0x51,(%rax),%ymm2,%ymm6{%k4}{z} + 51 + libdis_test+0x247: 62 f3 e5 2d cf bb vgf2p8affineinvqb $0x19,0x12(%rbx),%ymm3,%ymm7{%k5} + 12 00 00 00 19 + libdis_test+0x252: 62 f3 e5 ae cf bb vgf2p8affineinvqb $0x19,0x12(%rbx),%ymm3,%ymm7{%k6}{z} + 12 00 00 00 19 + libdis_test+0x25d: 62 93 dd 2f cf 84 vgf2p8affineinvqb $0x77,0x12(%r10,%r12,4),%ymm4,%ymm0{%k7} + a2 12 00 00 00 77 + libdis_test+0x269: 62 93 dd af cf 84 vgf2p8affineinvqb $0x77,0x12(%r10,%r12,4),%ymm4,%ymm0{%k7}{z} + a2 12 00 00 00 77 + libdis_test+0x275: 62 f3 cd 2f ce c7 vgf2p8affineqb $0x23,%ymm7,%ymm6,%ymm0{%k7} + 23 + libdis_test+0x27c: 62 f3 cd ae ce c7 vgf2p8affineqb $0x23,%ymm7,%ymm6,%ymm0{%k6}{z} + 23 + libdis_test+0x283: 62 f3 d5 2d ce 08 vgf2p8affineqb $0x51,(%rax),%ymm5,%ymm1{%k5} + 51 + libdis_test+0x28a: 62 f3 d5 ac ce 08 vgf2p8affineqb $0x51,(%rax),%ymm5,%ymm1{%k4}{z} + 51 + libdis_test+0x291: 62 f3 dd 2b ce 93 vgf2p8affineqb $0x19,0x12(%rbx),%ymm4,%ymm2{%k3} + 12 00 00 00 19 + libdis_test+0x29c: 62 f3 dd aa ce 93 vgf2p8affineqb $0x19,0x12(%rbx),%ymm4,%ymm2{%k2}{z} + 12 00 00 00 19 + libdis_test+0x2a7: 62 93 e5 29 ce b4 vgf2p8affineqb $0x77,0x12(%r10,%r12,4),%ymm3,%ymm6{%k1} + a2 12 00 00 00 77 + libdis_test+0x2b3: 62 93 e5 aa ce b4 vgf2p8affineqb $0x77,0x12(%r10,%r12,4),%ymm3,%ymm6{%k2}{z} + a2 12 00 00 00 77 + libdis_test+0x2bf: 62 f2 65 2b cf c2 vgf2p8mulb %ymm2,%ymm3,%ymm0{%k3} + libdis_test+0x2c5: 62 f2 65 aa cf c2 vgf2p8mulb %ymm2,%ymm3,%ymm0{%k2}{z} + libdis_test+0x2cb: 62 f2 5d 2c cf 08 vgf2p8mulb (%rax),%ymm4,%ymm1{%k4} + libdis_test+0x2d1: 62 f2 5d ad cf 08 vgf2p8mulb (%rax),%ymm4,%ymm1{%k5}{z} + libdis_test+0x2d7: 62 f2 65 29 cf 93 vgf2p8mulb 0x12(%rbx),%ymm3,%ymm2{%k1} + 12 00 00 00 + libdis_test+0x2e1: 62 f2 65 aa cf 93 vgf2p8mulb 0x12(%rbx),%ymm3,%ymm2{%k2}{z} + 12 00 00 00 + libdis_test+0x2eb: 62 92 6d 2f cf 9c vgf2p8mulb 0x17(%r10,%r12,4),%ymm2,%ymm3{%k7} + a2 17 00 00 00 + libdis_test+0x2f6: 62 92 6d ae cf 9c vgf2p8mulb 0x17(%r10,%r12,4),%ymm2,%ymm3{%k6}{z} + a2 17 00 00 00 + libdis_test+0x301: 62 f3 f5 09 cf e8 vgf2p8affineinvqb $0x23,%xmm0,%xmm1,%xmm5{%k1} + 23 + libdis_test+0x308: 62 f3 f5 8a cf e8 vgf2p8affineinvqb $0x23,%xmm0,%xmm1,%xmm5{%k2}{z} + 23 + libdis_test+0x30f: 62 f3 ed 0b cf 30 vgf2p8affineinvqb $0x51,(%rax),%xmm2,%xmm6{%k3} + 51 + libdis_test+0x316: 62 f3 ed 8c cf 30 vgf2p8affineinvqb $0x51,(%rax),%xmm2,%xmm6{%k4}{z} + 51 + libdis_test+0x31d: 62 f3 e5 0d cf bb vgf2p8affineinvqb $0x19,0x12(%rbx),%xmm3,%xmm7{%k5} + 12 00 00 00 19 + libdis_test+0x328: 62 f3 e5 8e cf bb vgf2p8affineinvqb $0x19,0x12(%rbx),%xmm3,%xmm7{%k6}{z} + 12 00 00 00 19 + libdis_test+0x333: 62 93 dd 0f cf 84 vgf2p8affineinvqb $0x77,0x12(%r10,%r12,4),%xmm4,%xmm0{%k7} + a2 12 00 00 00 77 + libdis_test+0x33f: 62 93 dd 8f cf 84 vgf2p8affineinvqb $0x77,0x12(%r10,%r12,4),%xmm4,%xmm0{%k7}{z} + a2 12 00 00 00 77 + libdis_test+0x34b: 62 f3 cd 0f ce c7 vgf2p8affineqb $0x23,%xmm7,%xmm6,%xmm0{%k7} + 23 + libdis_test+0x352: 62 f3 cd 8e ce c7 vgf2p8affineqb $0x23,%xmm7,%xmm6,%xmm0{%k6}{z} + 23 + libdis_test+0x359: 62 f3 d5 0d ce 08 vgf2p8affineqb $0x51,(%rax),%xmm5,%xmm1{%k5} + 51 + libdis_test+0x360: 62 f3 d5 8c ce 08 vgf2p8affineqb $0x51,(%rax),%xmm5,%xmm1{%k4}{z} + 51 + libdis_test+0x367: 62 f3 dd 0b ce 93 vgf2p8affineqb $0x19,0x12(%rbx),%xmm4,%xmm2{%k3} + 12 00 00 00 19 + libdis_test+0x372: 62 f3 dd 8a ce 93 vgf2p8affineqb $0x19,0x12(%rbx),%xmm4,%xmm2{%k2}{z} + 12 00 00 00 19 + libdis_test+0x37d: 62 93 e5 09 ce b4 vgf2p8affineqb $0x77,0x12(%r10,%r12,4),%xmm3,%xmm6{%k1} + a2 12 00 00 00 77 + libdis_test+0x389: 62 93 e5 8a ce b4 vgf2p8affineqb $0x77,0x12(%r10,%r12,4),%xmm3,%xmm6{%k2}{z} + a2 12 00 00 00 77 + libdis_test+0x395: 62 f2 65 0b cf c2 vgf2p8mulb %xmm2,%xmm3,%xmm0{%k3} + libdis_test+0x39b: 62 f2 65 8a cf c2 vgf2p8mulb %xmm2,%xmm3,%xmm0{%k2}{z} + libdis_test+0x3a1: 62 f2 5d 0c cf 08 vgf2p8mulb (%rax),%xmm4,%xmm1{%k4} + libdis_test+0x3a7: 62 f2 5d 8d cf 08 vgf2p8mulb (%rax),%xmm4,%xmm1{%k5}{z} + libdis_test+0x3ad: 62 f2 65 09 cf 93 vgf2p8mulb 0x12(%rbx),%xmm3,%xmm2{%k1} + 12 00 00 00 + libdis_test+0x3b7: 62 f2 65 8a cf 93 vgf2p8mulb 0x12(%rbx),%xmm3,%xmm2{%k2}{z} + 12 00 00 00 + libdis_test+0x3c1: 62 92 6d 0f cf 9c vgf2p8mulb 0x17(%r10,%r12,4),%xmm2,%xmm3{%k7} + a2 17 00 00 00 + libdis_test+0x3cc: 62 92 6d 8e cf 9c vgf2p8mulb 0x17(%r10,%r12,4),%xmm2,%xmm3{%k6}{z} + a2 17 00 00 00 diff --git a/usr/src/test/util-tests/tests/dis/i386/64.gfni.s b/usr/src/test/util-tests/tests/dis/i386/64.gfni.s new file mode 100644 index 0000000000..56b0c19939 --- /dev/null +++ b/usr/src/test/util-tests/tests/dis/i386/64.gfni.s @@ -0,0 +1,172 @@ +/* + * This file and its contents are supplied under the terms of the + * Common Development and Distribution License ("CDDL"), version 1.0. + * You may only use this file in accordance with the terms of version + * 1.0 of the CDDL. + * + * A full copy of the text of the CDDL should have accompanied this + * source. A copy of the CDDL is also available via the Internet at + * http://www.illumos.org/license/CDDL. + */ + +/* + * Copyright 2020 Robert Mustacchi + */ + +/* + * Test GFNI related instructions + */ + +.text +.align 16 +.globl libdis_test +.type libdis_test, @function +libdis_test: + /* SSE Form */ + gf2p8affineinvqb $0x23, %xmm0, %xmm1 + gf2p8affineinvqb $0x51, (%rax), %xmm2 + gf2p8affineinvqb $0x19, 0x12(%rbx), %xmm3 + gf2p8affineinvqb $0x77, 0x12(%r10, %r12, 4), %xmm4 + + gf2p8affineqb $0x23, %xmm7, %xmm6 + gf2p8affineqb $0x51, (%rax), %xmm5 + gf2p8affineqb $0x19, 0x12(%rbx), %xmm4 + gf2p8affineqb $0x77, 0x12(%r10, %r12, 4), %xmm3 + + gf2p8mulb %xmm2, %xmm3 + gf2p8mulb (%rax), %xmm4 + gf2p8mulb 0x12(%rbx), %xmm3 + gf2p8mulb 0x17(%r10, %r12, 4), %xmm2 + + /* VEX Form - xmm */ + vgf2p8affineinvqb $0x23, %xmm0, %xmm1, %xmm5 + vgf2p8affineinvqb $0x51, (%rax), %xmm2, %xmm6 + vgf2p8affineinvqb $0x19, 0x12(%rbx), %xmm3, %xmm7 + vgf2p8affineinvqb $0x77, 0x12(%r10, %r12, 4), %xmm4, %xmm0 + + vgf2p8affineqb $0x23, %xmm7, %xmm6, %xmm0 + vgf2p8affineqb $0x51, (%rax), %xmm5, %xmm1 + vgf2p8affineqb $0x19, 0x12(%rbx), %xmm4, %xmm2 + vgf2p8affineqb $0x77, 0x12(%r10, %r12, 4), %xmm3, %xmm6 + + vgf2p8mulb %xmm2, %xmm3, %xmm0 + vgf2p8mulb (%rax), %xmm4, %xmm1 + vgf2p8mulb 0x12(%rbx), %xmm3, %xmm2 + vgf2p8mulb 0x17(%r10, %r12, 4), %xmm2, %xmm3 + + /* VEX Form - ymm */ + vgf2p8affineinvqb $0x23, %ymm0, %ymm1, %ymm5 + vgf2p8affineinvqb $0x51, (%rax), %ymm2, %ymm6 + vgf2p8affineinvqb $0x19, 0x12(%rbx), %ymm3, %ymm7 + vgf2p8affineinvqb $0x77, 0x12(%r10, %r12, 4), %ymm4, %ymm0 + + vgf2p8affineqb $0x23, %ymm7, %ymm6, %ymm0 + vgf2p8affineqb $0x51, (%rax), %ymm5, %ymm1 + vgf2p8affineqb $0x19, 0x12(%rbx), %ymm4, %ymm2 + vgf2p8affineqb $0x77, 0x12(%r10, %r12, 4), %ymm3, %ymm6 + + vgf2p8mulb %ymm2, %ymm3, %ymm0 + vgf2p8mulb (%rax), %ymm4, %ymm1 + vgf2p8mulb 0x12(%rbx), %ymm3, %ymm2 + vgf2p8mulb 0x17(%r10, %r12, 4), %ymm2, %ymm3 + + /* EVEX Form - basic zmm */ + vgf2p8affineinvqb $0x23, %zmm0, %zmm1, %zmm5 + vgf2p8affineinvqb $0x51, (%rax), %zmm2, %zmm6 + vgf2p8affineinvqb $0x19, 0x12(%rbx), %zmm3, %zmm7 + vgf2p8affineinvqb $0x77, 0x12(%r10, %r12, 4), %zmm4, %zmm0 + + vgf2p8affineqb $0x23, %zmm7, %zmm6, %zmm0 + vgf2p8affineqb $0x51, (%rax), %zmm5, %zmm1 + vgf2p8affineqb $0x19, 0x12(%rbx), %zmm4, %zmm2 + vgf2p8affineqb $0x77, 0x12(%r10, %r12, 4), %zmm3, %zmm6 + + vgf2p8mulb %zmm2, %zmm3, %zmm0 + vgf2p8mulb (%rax), %zmm4, %zmm1 + vgf2p8mulb 0x12(%rbx), %zmm3, %zmm2 + vgf2p8mulb 0x17(%r10, %r12, 4), %zmm2, %zmm3 + + /* EVEX Form - zmm, masks */ + vgf2p8affineinvqb $0x23, %zmm0, %zmm1, %zmm5{%k1} + vgf2p8affineinvqb $0x23, %zmm0, %zmm1, %zmm5{%k2}{z} + vgf2p8affineinvqb $0x51, (%rax), %zmm2, %zmm6{%k3} + vgf2p8affineinvqb $0x51, (%rax), %zmm2, %zmm6{%k4}{z} + vgf2p8affineinvqb $0x19, 0x12(%rbx), %zmm3, %zmm7{%k5} + vgf2p8affineinvqb $0x19, 0x12(%rbx), %zmm3, %zmm7{%k6}{z} + vgf2p8affineinvqb $0x77, 0x12(%r10, %r12, 4), %zmm4, %zmm0{%k7} + vgf2p8affineinvqb $0x77, 0x12(%r10, %r12, 4), %zmm4, %zmm0{%k7}{z} + + vgf2p8affineqb $0x23, %zmm7, %zmm6, %zmm0{%k7} + vgf2p8affineqb $0x23, %zmm7, %zmm6, %zmm0{%k6}{z} + vgf2p8affineqb $0x51, (%rax), %zmm5, %zmm1{%k5} + vgf2p8affineqb $0x51, (%rax), %zmm5, %zmm1{%k4}{z} + vgf2p8affineqb $0x19, 0x12(%rbx), %zmm4, %zmm2{%k3} + vgf2p8affineqb $0x19, 0x12(%rbx), %zmm4, %zmm2{%k2}{z} + vgf2p8affineqb $0x77, 0x12(%r10, %r12, 4), %zmm3, %zmm6{%k1} + vgf2p8affineqb $0x77, 0x12(%r10, %r12, 4), %zmm3, %zmm6{%k2}{z} + + vgf2p8mulb %zmm2, %zmm3, %zmm0{%k3} + vgf2p8mulb %zmm2, %zmm3, %zmm0{%k2}{z} + vgf2p8mulb (%rax), %zmm4, %zmm1{%k4} + vgf2p8mulb (%rax), %zmm4, %zmm1{%k5}{z} + vgf2p8mulb 0x12(%rbx), %zmm3, %zmm2{%k1} + vgf2p8mulb 0x12(%rbx), %zmm3, %zmm2{%k2}{z} + vgf2p8mulb 0x17(%r10, %r12, 4), %zmm2, %zmm3{%k7} + vgf2p8mulb 0x17(%r10, %r12, 4), %zmm2, %zmm3{%k6}{z} + + /* EVEX Form - ymm, masks */ + vgf2p8affineinvqb $0x23, %ymm0, %ymm1, %ymm5{%k1} + vgf2p8affineinvqb $0x23, %ymm0, %ymm1, %ymm5{%k2}{z} + vgf2p8affineinvqb $0x51, (%rax), %ymm2, %ymm6{%k3} + vgf2p8affineinvqb $0x51, (%rax), %ymm2, %ymm6{%k4}{z} + vgf2p8affineinvqb $0x19, 0x12(%rbx), %ymm3, %ymm7{%k5} + vgf2p8affineinvqb $0x19, 0x12(%rbx), %ymm3, %ymm7{%k6}{z} + vgf2p8affineinvqb $0x77, 0x12(%r10, %r12, 4), %ymm4, %ymm0{%k7} + vgf2p8affineinvqb $0x77, 0x12(%r10, %r12, 4), %ymm4, %ymm0{%k7}{z} + + vgf2p8affineqb $0x23, %ymm7, %ymm6, %ymm0{%k7} + vgf2p8affineqb $0x23, %ymm7, %ymm6, %ymm0{%k6}{z} + vgf2p8affineqb $0x51, (%rax), %ymm5, %ymm1{%k5} + vgf2p8affineqb $0x51, (%rax), %ymm5, %ymm1{%k4}{z} + vgf2p8affineqb $0x19, 0x12(%rbx), %ymm4, %ymm2{%k3} + vgf2p8affineqb $0x19, 0x12(%rbx), %ymm4, %ymm2{%k2}{z} + vgf2p8affineqb $0x77, 0x12(%r10, %r12, 4), %ymm3, %ymm6{%k1} + vgf2p8affineqb $0x77, 0x12(%r10, %r12, 4), %ymm3, %ymm6{%k2}{z} + + vgf2p8mulb %ymm2, %ymm3, %ymm0{%k3} + vgf2p8mulb %ymm2, %ymm3, %ymm0{%k2}{z} + vgf2p8mulb (%rax), %ymm4, %ymm1{%k4} + vgf2p8mulb (%rax), %ymm4, %ymm1{%k5}{z} + vgf2p8mulb 0x12(%rbx), %ymm3, %ymm2{%k1} + vgf2p8mulb 0x12(%rbx), %ymm3, %ymm2{%k2}{z} + vgf2p8mulb 0x17(%r10, %r12, 4), %ymm2, %ymm3{%k7} + vgf2p8mulb 0x17(%r10, %r12, 4), %ymm2, %ymm3{%k6}{z} + + /* EVEX Form - ymm, masks */ + vgf2p8affineinvqb $0x23, %xmm0, %xmm1, %xmm5{%k1} + vgf2p8affineinvqb $0x23, %xmm0, %xmm1, %xmm5{%k2}{z} + vgf2p8affineinvqb $0x51, (%rax), %xmm2, %xmm6{%k3} + vgf2p8affineinvqb $0x51, (%rax), %xmm2, %xmm6{%k4}{z} + vgf2p8affineinvqb $0x19, 0x12(%rbx), %xmm3, %xmm7{%k5} + vgf2p8affineinvqb $0x19, 0x12(%rbx), %xmm3, %xmm7{%k6}{z} + vgf2p8affineinvqb $0x77, 0x12(%r10, %r12, 4), %xmm4, %xmm0{%k7} + vgf2p8affineinvqb $0x77, 0x12(%r10, %r12, 4), %xmm4, %xmm0{%k7}{z} + + vgf2p8affineqb $0x23, %xmm7, %xmm6, %xmm0{%k7} + vgf2p8affineqb $0x23, %xmm7, %xmm6, %xmm0{%k6}{z} + vgf2p8affineqb $0x51, (%rax), %xmm5, %xmm1{%k5} + vgf2p8affineqb $0x51, (%rax), %xmm5, %xmm1{%k4}{z} + vgf2p8affineqb $0x19, 0x12(%rbx), %xmm4, %xmm2{%k3} + vgf2p8affineqb $0x19, 0x12(%rbx), %xmm4, %xmm2{%k2}{z} + vgf2p8affineqb $0x77, 0x12(%r10, %r12, 4), %xmm3, %xmm6{%k1} + vgf2p8affineqb $0x77, 0x12(%r10, %r12, 4), %xmm3, %xmm6{%k2}{z} + + vgf2p8mulb %xmm2, %xmm3, %xmm0{%k3} + vgf2p8mulb %xmm2, %xmm3, %xmm0{%k2}{z} + vgf2p8mulb (%rax), %xmm4, %xmm1{%k4} + vgf2p8mulb (%rax), %xmm4, %xmm1{%k5}{z} + vgf2p8mulb 0x12(%rbx), %xmm3, %xmm2{%k1} + vgf2p8mulb 0x12(%rbx), %xmm3, %xmm2{%k2}{z} + vgf2p8mulb 0x17(%r10, %r12, 4), %xmm2, %xmm3{%k7} + vgf2p8mulb 0x17(%r10, %r12, 4), %xmm2, %xmm3{%k6}{z} +.size libdis_test, [.-libdis_test] diff --git a/usr/src/test/util-tests/tests/dis/i386/64.vaes.out b/usr/src/test/util-tests/tests/dis/i386/64.vaes.out new file mode 100644 index 0000000000..80e87ea6c6 --- /dev/null +++ b/usr/src/test/util-tests/tests/dis/i386/64.vaes.out @@ -0,0 +1,24 @@ + libdis_test: c4 e2 71 dc d0 vaesenc %xmm0,%xmm1,%xmm2 + libdis_test+0x5: c4 e2 71 dc 10 vaesenc (%rax),%xmm1,%xmm2 + libdis_test+0xa: c4 e2 5d dc eb vaesenc %ymm3,%ymm4,%ymm5 + libdis_test+0xf: c4 e2 5d dc 2b vaesenc (%rbx),%ymm4,%ymm5 + libdis_test+0x14: 62 f2 45 48 dc c6 vaesenc %zmm6,%zmm7,%zmm0 + libdis_test+0x1a: 62 f2 45 48 dc 01 vaesenc (%rcx),%zmm7,%zmm0 + libdis_test+0x20: c4 e2 71 dd d0 vaesenclast %xmm0,%xmm1,%xmm2 + libdis_test+0x25: c4 e2 71 dd 10 vaesenclast (%rax),%xmm1,%xmm2 + libdis_test+0x2a: c4 e2 5d dd eb vaesenclast %ymm3,%ymm4,%ymm5 + libdis_test+0x2f: c4 e2 5d dd 2b vaesenclast (%rbx),%ymm4,%ymm5 + libdis_test+0x34: 62 f2 45 48 dd c6 vaesenclast %zmm6,%zmm7,%zmm0 + libdis_test+0x3a: 62 f2 45 48 dd 01 vaesenclast (%rcx),%zmm7,%zmm0 + libdis_test+0x40: c4 e2 71 de d0 vaesdec %xmm0,%xmm1,%xmm2 + libdis_test+0x45: c4 e2 71 de 10 vaesdec (%rax),%xmm1,%xmm2 + libdis_test+0x4a: c4 e2 5d de eb vaesdec %ymm3,%ymm4,%ymm5 + libdis_test+0x4f: c4 e2 5d de 2b vaesdec (%rbx),%ymm4,%ymm5 + libdis_test+0x54: 62 f2 45 48 de c6 vaesdec %zmm6,%zmm7,%zmm0 + libdis_test+0x5a: 62 f2 45 48 de 01 vaesdec (%rcx),%zmm7,%zmm0 + libdis_test+0x60: c4 e2 71 df d0 vaesdeclast %xmm0,%xmm1,%xmm2 + libdis_test+0x65: c4 e2 71 df 10 vaesdeclast (%rax),%xmm1,%xmm2 + libdis_test+0x6a: c4 e2 5d df eb vaesdeclast %ymm3,%ymm4,%ymm5 + libdis_test+0x6f: c4 e2 5d df 2b vaesdeclast (%rbx),%ymm4,%ymm5 + libdis_test+0x74: 62 f2 45 48 df c6 vaesdeclast %zmm6,%zmm7,%zmm0 + libdis_test+0x7a: 62 f2 45 48 df 01 vaesdeclast (%rcx),%zmm7,%zmm0 diff --git a/usr/src/test/util-tests/tests/dis/i386/64.vaes.s b/usr/src/test/util-tests/tests/dis/i386/64.vaes.s new file mode 100644 index 0000000000..7c5f53e7ae --- /dev/null +++ b/usr/src/test/util-tests/tests/dis/i386/64.vaes.s @@ -0,0 +1,52 @@ +/* + * This file and its contents are supplied under the terms of the + * Common Development and Distribution License ("CDDL"), version 1.0. + * You may only use this file in accordance with the terms of version + * 1.0 of the CDDL. + * + * A full copy of the text of the CDDL should have accompanied this + * source. A copy of the CDDL is also available via the Internet at + * http://www.illumos.org/license/CDDL. + */ + +/* + * Copyright 2020 Robert Mustacchi + */ + +/* + * Test VAES related instructions + */ + +.text +.align 16 +.globl libdis_test +.type libdis_test, @function +libdis_test: + vaesenc %xmm0, %xmm1, %xmm2 + vaesenc (%rax), %xmm1, %xmm2 + vaesenc %ymm3, %ymm4, %ymm5 + vaesenc (%rbx), %ymm4, %ymm5 + vaesenc %zmm6, %zmm7, %zmm0 + vaesenc (%rcx), %zmm7, %zmm0 + + vaesenclast %xmm0, %xmm1, %xmm2 + vaesenclast (%rax), %xmm1, %xmm2 + vaesenclast %ymm3, %ymm4, %ymm5 + vaesenclast (%rbx), %ymm4, %ymm5 + vaesenclast %zmm6, %zmm7, %zmm0 + vaesenclast (%rcx), %zmm7, %zmm0 + + vaesdec %xmm0, %xmm1, %xmm2 + vaesdec (%rax), %xmm1, %xmm2 + vaesdec %ymm3, %ymm4, %ymm5 + vaesdec (%rbx), %ymm4, %ymm5 + vaesdec %zmm6, %zmm7, %zmm0 + vaesdec (%rcx), %zmm7, %zmm0 + + vaesdeclast %xmm0, %xmm1, %xmm2 + vaesdeclast (%rax), %xmm1, %xmm2 + vaesdeclast %ymm3, %ymm4, %ymm5 + vaesdeclast (%rbx), %ymm4, %ymm5 + vaesdeclast %zmm6, %zmm7, %zmm0 + vaesdeclast (%rcx), %zmm7, %zmm0 +.size libdis_test, [.-libdis_test] diff --git a/usr/src/uts/common/disp/cmt.c b/usr/src/uts/common/disp/cmt.c index 80b5340543..30a69a23f0 100644 --- a/usr/src/uts/common/disp/cmt.c +++ b/usr/src/uts/common/disp/cmt.c @@ -1355,7 +1355,7 @@ cmt_pad_disable(pghw_type_t type) /* ARGSUSED */ static void cmt_ev_thread_swtch(pg_t *pg, cpu_t *cp, hrtime_t now, kthread_t *old, - kthread_t *new) + kthread_t *new) { pg_cmt_t *cmt_pg = (pg_cmt_t *)pg; @@ -1749,6 +1749,8 @@ pg_cmt_lineage_validate(pg_cmt_t **lineage, int *sz, cpu_pg_t *pgdata) lgrp_handle_t lgrp; ASSERT(MUTEX_HELD(&cpu_lock)); + pg = NULL; + pg_next = NULL; revalidate: size = *sz; diff --git a/usr/src/uts/common/io/aac/aac.c b/usr/src/uts/common/io/aac/aac.c index f9d3672963..caf3300f3f 100644 --- a/usr/src/uts/common/io/aac/aac.c +++ b/usr/src/uts/common/io/aac/aac.c @@ -2297,6 +2297,10 @@ aac_check_firmware(struct aac_softstate *softs) uint32_t max_sectors; uint32_t status; + max_fibs = 0; + max_sectors = 0; + sg_tablesize = 0; + /* Get supported options */ if ((aac_sync_mbcommand(softs, AAC_MONKER_GETINFO, 0, 0, 0, 0, &status)) != AACOK) { @@ -5136,7 +5140,7 @@ aac_cmd_dma_alloc(struct aac_softstate *softs, struct aac_cmd *acp, { int kf = (cb == SLEEP_FUNC) ? KM_SLEEP : KM_NOSLEEP; uint_t oldcookiec; - int bioerr; + int bioerr = 0; int rval; oldcookiec = acp->left_cookien; @@ -7413,7 +7417,7 @@ aac_tran_bus_config(dev_info_t *parent, uint_t flags, ddi_bus_config_op_t op, { struct aac_softstate *softs; int circ = 0; - int rval; + int rval = NDI_FAILURE; if ((softs = ddi_get_soft_state(aac_softstatep, ddi_get_instance(parent))) == NULL) @@ -7423,7 +7427,7 @@ aac_tran_bus_config(dev_info_t *parent, uint_t flags, ddi_bus_config_op_t op, mutex_enter(&softs->io_lock); if (softs->state & AAC_STATE_QUIESCED) { AACDB_PRINT(softs, CE_NOTE, - "bus_config abroted because bus is quiesced"); + "bus_config aborted because bus is quiesced"); mutex_exit(&softs->io_lock); return (NDI_FAILURE); } diff --git a/usr/src/uts/common/io/aggr/aggr_ctl.c b/usr/src/uts/common/io/aggr/aggr_ctl.c index 1bbad3d904..f0e74ec328 100644 --- a/usr/src/uts/common/io/aggr/aggr_ctl.c +++ b/usr/src/uts/common/io/aggr/aggr_ctl.c @@ -46,6 +46,11 @@ aggr_ioc_modify(void *karg, intptr_t arg, int mode, cred_t *cred, int *rvalp) aggr_lacp_mode_t lacp_mode; aggr_lacp_timer_t lacp_timer; + policy = 0; + mac_fixed = B_FALSE; + lacp_mode = AGGR_LACP_OFF; + lacp_timer = AGGR_LACP_TIMER_LONG; + modify_mask_arg = modify_arg->lu_modify_mask; if (modify_mask_arg & LAIOC_MODIFY_POLICY) { @@ -235,6 +240,9 @@ aggr_ioc_add_remove(laioc_add_rem_t *add_rem_arg, intptr_t arg, int cmd, case LAIOC_REMOVE: rc = aggr_grp_rem_ports(add_rem_arg->la_linkid, nports, ports); break; + default: + rc = 0; + break; } done: diff --git a/usr/src/uts/common/io/aggr/aggr_grp.c b/usr/src/uts/common/io/aggr/aggr_grp.c index 82f3989f42..dc6f03b247 100644 --- a/usr/src/uts/common/io/aggr/aggr_grp.c +++ b/usr/src/uts/common/io/aggr/aggr_grp.c @@ -753,6 +753,8 @@ aggr_add_pseudo_rx_group(aggr_port_t *port, aggr_pseudo_rx_group_t *rx_grp) ASSERT3U(g_idx, <, MAX_GROUPS_PER_PORT); mac_perim_enter_by_mh(port->lp_mh, &pmph); + i = 0; + addr = NULL; /* * This function must be called after the aggr registers its * MAC and its Rx groups have been initialized. diff --git a/usr/src/uts/common/io/ppm/ppm.c b/usr/src/uts/common/io/ppm/ppm.c index c53f1d723b..0e5c45e466 100644 --- a/usr/src/uts/common/io/ppm/ppm.c +++ b/usr/src/uts/common/io/ppm/ppm.c @@ -764,9 +764,10 @@ ppm_ctlops(dev_info_t *dip, dev_info_t *rdip, ppm_owned_t *owned; int mode; int ret = DDI_SUCCESS; - int *res = (int *)result; + int *res = (int *)result; s3a_t s3args; + domp = NULL; #ifdef DEBUG char *str = "ppm_ctlops"; int mask = ppm_debug & (D_CTLOPS1 | D_CTLOPS2); @@ -827,6 +828,9 @@ ppm_ctlops(dev_info_t *dip, dev_info_t *rdip, ppmd = ppm_get_dev(rdip, domp); } + if (domp == NULL) + return (DDI_FAILURE); + PPMD(D_LOCKS, ("ppm_lock_%s: %s, %s\n", (domp->dflags & PPMD_LOCK_ALL) ? "all" : "one", ppmd->path, ppm_get_ctlstr(reqp->request_type, D_LOCKS))) @@ -840,14 +844,17 @@ ppm_ctlops(dev_info_t *dip, dev_info_t *rdip, case PMR_PPM_POWER_LOCK_OWNER: ASSERT(reqp->req.ppm_power_lock_owner_req.who == rdip); ppmd = PPM_GET_PRIVATE(rdip); - if (ppmd) + if (ppmd) { domp = ppmd->domp; - else { + } else { domp = ppm_lookup_dev(rdip); ASSERT(domp); ppmd = ppm_get_dev(rdip, domp); } + if (domp == NULL) + return (DDI_FAILURE); + /* * In case of LOCK_ALL, effective owner of the power lock * is the owner of the domain lock. otherwise, it is the owner @@ -1400,6 +1407,9 @@ ppm_cpr_callb(void *arg, int code) mutex_exit(&ppm_cpr_window_lock); break; + default: + ret = DDI_SUCCESS; + break; } return (ret == DDI_SUCCESS); diff --git a/usr/src/uts/common/krtld/kobj.c b/usr/src/uts/common/krtld/kobj.c index 8925e017a2..711fe6db82 100644 --- a/usr/src/uts/common/krtld/kobj.c +++ b/usr/src/uts/common/krtld/kobj.c @@ -1176,7 +1176,6 @@ bind_primary(val_t *bootaux, int lmid) if (mp->flags & KOBJ_EXEC) { Dyn *dyn; Word relasz = 0, relaent = 0; - Word shtype; char *rela = NULL; for (dyn = (Dyn *)bootaux[BA_DYNAMIC].ba_ptr; @@ -1191,11 +1190,9 @@ bind_primary(val_t *bootaux, int lmid) relaent = dyn->d_un.d_val; break; case DT_RELA: - shtype = SHT_RELA; rela = (char *)dyn->d_un.d_ptr; break; case DT_REL: - shtype = SHT_REL; rela = (char *)dyn->d_un.d_ptr; break; } @@ -1212,8 +1209,8 @@ bind_primary(val_t *bootaux, int lmid) _kobj_printf(ops, "krtld: relocating: file=%s " "KOBJ_EXEC\n", mp->filename); #endif - if (do_relocate(mp, rela, shtype, relasz/relaent, - relaent, (Addr)mp->text) < 0) + if (do_relocate(mp, rela, relasz/relaent, relaent, + (Addr)mp->text) < 0) return (-1); } else { if (do_relocations(mp) < 0) @@ -2103,6 +2100,7 @@ kobj_load_primary_module(struct modctl *modp) if (kobj_load_module(modp, 0) != 0) return (-1); + dep = NULL; mp = modp->mod_mp; mp->flags |= KOBJ_PRIM; @@ -2118,7 +2116,8 @@ kobj_load_primary_module(struct modctl *modp) return (-1); } - add_dependent(mp, dep->mod_mp); + if (dep != NULL) + add_dependent(mp, dep->mod_mp); /* * Relocate it. This module may not be part of a link map, so we diff --git a/usr/src/uts/common/os/bp_map.c b/usr/src/uts/common/os/bp_map.c index 0fd5a5d216..b031514095 100644 --- a/usr/src/uts/common/os/bp_map.c +++ b/usr/src/uts/common/os/bp_map.c @@ -23,8 +23,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include <sys/types.h> #include <sys/sysmacros.h> #include <sys/systm.h> @@ -94,6 +92,7 @@ bp_mapin_common(struct buf *bp, int flag) pgcnt_t npages; int color; + as = NULL; /* return if already mapped in, no pageio/physio, or physio to kas */ if ((bp->b_flags & B_REMAPPED) || !(bp->b_flags & (B_PAGEIO | B_PHYS)) || @@ -283,8 +282,8 @@ bp_copy_common(bp_copydir_t dir, struct buf *bp, void *driverbuf, page_t *pp; pfn_t pfn; - ASSERT((offset + size) <= bp->b_bcount); + as = NULL; /* if the buf_t already has a KVA, just do a bcopy */ if (!(bp->b_flags & (B_PHYS | B_PAGEIO))) { diff --git a/usr/src/uts/common/os/lgrp.c b/usr/src/uts/common/os/lgrp.c index d8039f1a1f..f3404a1cdf 100644 --- a/usr/src/uts/common/os/lgrp.c +++ b/usr/src/uts/common/os/lgrp.c @@ -848,6 +848,7 @@ lgrp_create(void) int i; ASSERT(!lgrp_initialized || MUTEX_HELD(&cpu_lock)); + lgrpid = 0; /* * Find an open slot in the lgroup table and recycle unused lgroup @@ -1346,6 +1347,10 @@ lgrp_mem_init(int mnode, lgrp_handle_t hand, boolean_t is_copy_rename) klgrpset_add(changed, lgrp->lgrp_id); count++; } + } else { + if (drop_lock) + mutex_exit(&cpu_lock); + return; } /* @@ -3570,6 +3575,8 @@ lgrp_shm_policy_get(struct anon_map *amp, ulong_t anon_index, vnode_t *vp, avl_tree_t *tree; avl_index_t where; + shm_locality = NULL; + tree = NULL; /* * Get policy segment tree from anon_map or vnode and use specified * anon index or vnode offset as offset diff --git a/usr/src/uts/common/os/mem_config.c b/usr/src/uts/common/os/mem_config.c index 6be46fa422..285b76347b 100644 --- a/usr/src/uts/common/os/mem_config.c +++ b/usr/src/uts/common/os/mem_config.c @@ -145,7 +145,7 @@ kphysm_add_memory_dynamic(pfn_t base, pgcnt_t npgs) void *mapva; void *metabase = (void *)base; pgcnt_t nkpmpgs = 0; - offset_t kpm_pages_off; + offset_t kpm_pages_off = 0; cmn_err(CE_CONT, "?kphysm_add_memory_dynamic: adding %ldK at 0x%" PRIx64 "\n", @@ -411,7 +411,7 @@ mapalloc: * * If a memseg is reused, invalidate memseg pointers in * all cpu vm caches. We need to do this this since the check - * pp >= seg->pages && pp < seg->epages + * pp >= seg->pages && pp < seg->epages * used in various places is not atomic and so the first compare * can happen before reuse and the second compare after reuse. * The invalidation ensures that a memseg is not deferenced while @@ -2643,7 +2643,7 @@ kphysm_del_cleanup(struct mem_handle *mhp) { struct memdelspan *mdsp; struct memseg *seg; - struct memseg **segpp; + struct memseg **segpp; struct memseg *seglist; pfn_t p_end; uint64_t avmem; diff --git a/usr/src/uts/common/sys/kobj_impl.h b/usr/src/uts/common/sys/kobj_impl.h index 8b3ce3fdeb..a8488365b9 100644 --- a/usr/src/uts/common/sys/kobj_impl.h +++ b/usr/src/uts/common/sys/kobj_impl.h @@ -164,7 +164,7 @@ extern void kobj_init(void *romvec, void *dvec, extern int kobj_notify_add(kobj_notify_list_t *); extern int kobj_notify_remove(kobj_notify_list_t *); extern int do_relocations(struct module *); -extern int do_relocate(struct module *, char *, Word, int, int, Addr); +extern int do_relocate(struct module *, char *, int, int, Addr); extern struct bootops *ops; extern void exitto(caddr_t); extern void kobj_sync_instruction_memory(caddr_t, size_t); diff --git a/usr/src/uts/common/vm/vm_pagelist.c b/usr/src/uts/common/vm/vm_pagelist.c index f494c3d2b4..950b142588 100644 --- a/usr/src/uts/common/vm/vm_pagelist.c +++ b/usr/src/uts/common/vm/vm_pagelist.c @@ -318,16 +318,16 @@ static int mnode_maxmrange[MAX_MEM_NODES]; #define PAGE_COUNTERS(mnode, rg_szc, idx) \ (page_counters[(rg_szc)][(mnode)].hpm_counters[(idx)]) -#define PAGE_COUNTERS_COUNTERS(mnode, rg_szc) \ +#define PAGE_COUNTERS_COUNTERS(mnode, rg_szc) \ (page_counters[(rg_szc)][(mnode)].hpm_counters) -#define PAGE_COUNTERS_SHIFT(mnode, rg_szc) \ +#define PAGE_COUNTERS_SHIFT(mnode, rg_szc) \ (page_counters[(rg_szc)][(mnode)].hpm_shift) -#define PAGE_COUNTERS_ENTRIES(mnode, rg_szc) \ +#define PAGE_COUNTERS_ENTRIES(mnode, rg_szc) \ (page_counters[(rg_szc)][(mnode)].hpm_entries) -#define PAGE_COUNTERS_BASE(mnode, rg_szc) \ +#define PAGE_COUNTERS_BASE(mnode, rg_szc) \ (page_counters[(rg_szc)][(mnode)].hpm_base) #define PAGE_COUNTERS_CURRENT_COLOR_ARRAY(mnode, rg_szc, g) \ @@ -341,7 +341,7 @@ static int mnode_maxmrange[MAX_MEM_NODES]; (((pnum) - PAGE_COUNTERS_BASE((mnode), (rg_szc))) >> \ PAGE_COUNTERS_SHIFT((mnode), (rg_szc))) -#define IDX_TO_PNUM(mnode, rg_szc, index) \ +#define IDX_TO_PNUM(mnode, rg_szc, index) \ (PAGE_COUNTERS_BASE((mnode), (rg_szc)) + \ ((index) << PAGE_COUNTERS_SHIFT((mnode), (rg_szc)))) @@ -546,7 +546,7 @@ page_ctrs_sz(void) pfn_t physbase; pfn_t physmax; uint_t ctrs_sz = 0; - int i; + int i; pgcnt_t colors_per_szc[MMU_PAGE_SIZES]; /* @@ -1925,7 +1925,7 @@ static uint_t page_promote_noreloc_err; * accounting which needs to be done for a returned page. * * RFE: For performance pass in pp instead of pfnum so - * we can avoid excessive calls to page_numtopp_nolock(). + * we can avoid excessive calls to page_numtopp_nolock(). * This would depend on an assumption that all contiguous * pages are in the same memseg so we can just add/dec * our pp. @@ -1970,7 +1970,7 @@ page_promote(int mnode, pfn_t pfnum, uchar_t new_szc, int flags, int mtype) uint_t bin; pgcnt_t tmpnpgs, pages_left; uint_t noreloc; - int which_list; + int which_list; ulong_t index; kmutex_t *phm; @@ -2270,9 +2270,9 @@ page_t * page_freelist_coalesce(int mnode, uchar_t szc, uint_t color, uint_t ceq_mask, int mtype, pfn_t pfnhi) { - int r = szc; /* region size */ + int r = szc; /* region size */ int mrange; - uint_t full, bin, color_mask, wrap = 0; + uint_t full, bin, color_mask, wrap = 0; pfn_t pfnum, lo, hi; size_t len, idx, idx0; pgcnt_t cands = 0, szcpgcnt = page_get_pagecnt(szc); @@ -2420,7 +2420,7 @@ page_freelist_coalesce(int mnode, uchar_t szc, uint_t color, uint_t ceq_mask, /* * RFE: For performance maybe we can do something less * brutal than locking the entire freelist. So far - * this doesn't seem to be a performance problem? + * this doesn't seem to be a performance problem? */ page_freelist_lock(mnode); if (PAGE_COUNTERS(mnode, r, idx) == full) { @@ -2490,8 +2490,8 @@ wrapit: void page_freelist_coalesce_all(int mnode) { - int r; /* region size */ - int idx, full; + int r; /* region size */ + int idx, full; size_t len; int doall = interleaved_mnodes || mnode < 0; int mlo = doall ? 0 : mnode; @@ -2584,7 +2584,7 @@ page_freelist_split(uchar_t szc, uint_t color, int mnode, int mtype, pfn_t pfnlo, pfn_t pfnhi, page_list_walker_t *plw) { uchar_t nszc = szc + 1; - uint_t bin, sbin, bin_prev; + uint_t bin, sbin, bin_prev; page_t *pp, *firstpp; page_t *ret_pp = NULL; uint_t color_mask; @@ -4147,6 +4147,8 @@ page_get_replacement_page(page_t *orig_like_pp, struct lgrp *lgrp_target, lgrp_mnode_cookie_t lgrp_cookie; lgrp_t *lgrp; + mnode = 0; + lgrp = NULL; REPL_STAT_INCR(ngets); like_pp = orig_like_pp; ASSERT(PAGE_EXCL(like_pp)); diff --git a/usr/src/uts/common/xen/io/xpvd.c b/usr/src/uts/common/xen/io/xpvd.c index 5f8966fce7..4609580437 100644 --- a/usr/src/uts/common/xen/io/xpvd.c +++ b/usr/src/uts/common/xen/io/xpvd.c @@ -377,9 +377,11 @@ got_xs_prop: break; } - if ((rv == DDI_PROP_SUCCESS) && (prop_len > 0)) { - bcopy(prop_str, buff, prop_len); - *lengthp = prop_len; + if (rv == DDI_PROP_SUCCESS) { + if (prop_op != PROP_LEN) { + bcopy(prop_str, buff, prop_len); + *lengthp = prop_len; + } } kmem_free(prop_str, len); return (rv); @@ -874,7 +876,7 @@ i_xpvd_parse_devname(char *name, xendev_devclass_t *devclassp, int len = strlen(name) + 1; char *device_name = i_ddi_strdup(name, KM_SLEEP); char *cname = NULL, *caddr = NULL; - boolean_t ret; + boolean_t ret = B_FALSE; i_ddi_parse_name(device_name, &cname, &caddr, NULL); diff --git a/usr/src/uts/i86pc/boot/boot_console.c b/usr/src/uts/i86pc/boot/boot_console.c index f23baf2f8b..cfd4da40d0 100644 --- a/usr/src/uts/i86pc/boot/boot_console.c +++ b/usr/src/uts/i86pc/boot/boot_console.c @@ -1207,6 +1207,7 @@ bcons_post_bootenvrc(char *inputdev, char *outputdev, char *consoledev) int i; extern int post_fastreboot; + ttyn = 0; if (post_fastreboot && console == CONS_SCREEN_GRAPHICS) console = CONS_SCREEN_TEXT; diff --git a/usr/src/uts/i86pc/cpu/generic_cpu/gcpu_mca.c b/usr/src/uts/i86pc/cpu/generic_cpu/gcpu_mca.c index 348ec93761..962bf52e89 100644 --- a/usr/src/uts/i86pc/cpu/generic_cpu/gcpu_mca.c +++ b/usr/src/uts/i86pc/cpu/generic_cpu/gcpu_mca.c @@ -854,6 +854,8 @@ gcpu_ereport_post(const gcpu_logout_t *gcl, int bankidx, } else { ereport = fm_nvlist_create(NULL); nva = NULL; + eqep = NULL; + scr_eqep = NULL; } if (ereport == NULL) @@ -1808,6 +1810,7 @@ gcpu_mca_logout(cmi_hdl_t hdl, struct regs *rp, uint64_t bankmask, if (ismc) { gcl = mca->gcpu_mca_logout[GCPU_MCA_LOGOUT_EXCEPTION]; + pgcl = NULL; } else { int pidx = mca->gcpu_mca_nextpoll_idx; int ppidx = (pidx == GCPU_MCA_LOGOUT_POLLER_1) ? diff --git a/usr/src/uts/i86pc/dboot/dboot_elfload.c b/usr/src/uts/i86pc/dboot/dboot_elfload.c index 417729bfda..7d1f34fc32 100644 --- a/usr/src/uts/i86pc/dboot/dboot_elfload.c +++ b/usr/src/uts/i86pc/dboot/dboot_elfload.c @@ -84,6 +84,7 @@ dboot_elfload64(uintptr_t file_image) paddr_t dst; paddr_t next_addr; + next_addr = 0; elf_file = (caddr_t)file_image; allphdrs = NULL; diff --git a/usr/src/uts/i86pc/io/acpi/acpidev/acpidev_drv.c b/usr/src/uts/i86pc/io/acpi/acpidev/acpidev_drv.c index 1668a4fcad..7d4245ce2b 100644 --- a/usr/src/uts/i86pc/io/acpi/acpidev/acpidev_drv.c +++ b/usr/src/uts/i86pc/io/acpi/acpidev/acpidev_drv.c @@ -1092,6 +1092,7 @@ acpidev_filter_device(acpidev_walk_info_t *infop, ACPI_HANDLE hdl, { acpidev_filter_result_t res; + res = ACPIDEV_FILTER_FAILED; /* Evaluate filtering rules. */ for (; entries > 0; entries--, afrp++) { if (afrp->adf_filter_func != NULL) { diff --git a/usr/src/uts/i86pc/io/amd_iommu/amd_iommu_acpi.c b/usr/src/uts/i86pc/io/amd_iommu/amd_iommu_acpi.c index 825c661c2d..1857cb2292 100644 --- a/usr/src/uts/i86pc/io/amd_iommu/amd_iommu_acpi.c +++ b/usr/src/uts/i86pc/io/amd_iommu/amd_iommu_acpi.c @@ -548,6 +548,7 @@ add_deventry_info(ivhd_t *ivhdp, ivhd_deventry_t *deventry, last = acpi_ivhdp; break; case DEVENTRY_RANGE_END: + idx = 0; cmn_err(CE_PANIC, "%s: Unexpected Range End Deventry", amd_iommu_modname); /*NOTREACHED*/ @@ -589,9 +590,10 @@ add_deventry_info(ivhd_t *ivhdp, ivhd_deventry_t *deventry, idx = AMD_IOMMU_ACPI_INFO_HASH_SZ; break; default: + idx = 0; cmn_err(CE_PANIC, "%s: Unsupported deventry type", amd_iommu_modname); - /* FALLTHROUGH */ + /*NOTREACHED*/ } acpi_ivhdp->ach_Lint1Pass = deventry->idev_Lint1Pass; @@ -717,6 +719,7 @@ set_ivmd_info(ivmd_t *ivmdp, amd_iommu_acpi_ivmd_t **hash) idx = AMD_IOMMU_ACPI_INFO_HASH_SZ; break; default: + idx = 0; cmn_err(CE_PANIC, "Unknown AMD IOMMU ACPI IVMD deviceid type: " "%x", ivmdp->ivmd_type); /*NOTREACHED*/ diff --git a/usr/src/uts/i86pc/io/amd_iommu/amd_iommu_page_tables.c b/usr/src/uts/i86pc/io/amd_iommu/amd_iommu_page_tables.c index 7d70b5d4e4..255a5f7479 100644 --- a/usr/src/uts/i86pc/io/amd_iommu/amd_iommu_page_tables.c +++ b/usr/src/uts/i86pc/io/amd_iommu/amd_iommu_page_tables.c @@ -1302,6 +1302,7 @@ amd_iommu_destroy_pgtables(amd_iommu_t *iommu, dev_info_t *rdip, int instance = ddi_get_instance(iommu->aiomt_dip); const char *f = "amd_iommu_destroy_pgtables"; + tear_level = -1; if (amd_iommu_debug & AMD_IOMMU_DEBUG_PAGE_TABLES) { cmn_err(CE_NOTE, "%s: %s%d: idx = %u, domainid = %d, " "deviceid = %u, va = %p, path = %s", @@ -1347,7 +1348,6 @@ amd_iommu_destroy_pgtables(amd_iommu_t *iommu, dev_info_t *rdip, } } - tear_level = -1; invalidate_pde = 0; invalidate_pte = 0; for (++level; level <= AMD_IOMMU_PGTABLE_MAXLEVEL; level++) { @@ -1401,7 +1401,7 @@ invalidate: } passthru: - if (tear_level == AMD_IOMMU_PGTABLE_MAXLEVEL) { + if (tear_level == AMD_IOMMU_PGTABLE_MAXLEVEL) { error = amd_iommu_clear_devtbl_entry(iommu, rdip, domainid, deviceid, dp, domain_freed, path); } else { diff --git a/usr/src/uts/i86pc/io/cpudrv_mach.c b/usr/src/uts/i86pc/io/cpudrv_mach.c index 772ad33ccb..d8cde4b61e 100644 --- a/usr/src/uts/i86pc/io/cpudrv_mach.c +++ b/usr/src/uts/i86pc/io/cpudrv_mach.c @@ -142,6 +142,7 @@ cpudrv_set_topspeed(void *ctx, int plat_level) int instance; int i; + top_spd = NULL; dip = ctx; instance = ddi_get_instance(dip); cpudsp = ddi_get_soft_state(cpudrv_state, instance); diff --git a/usr/src/uts/i86pc/io/dr/dr.c b/usr/src/uts/i86pc/io/dr/dr.c index 65cc469d71..c1156cfe98 100644 --- a/usr/src/uts/i86pc/io/dr/dr.c +++ b/usr/src/uts/i86pc/io/dr/dr.c @@ -1570,6 +1570,7 @@ dr_dev_make_list(dr_handle_t *hp, sbd_comp_type_t type, int present_only, nunits = MAX_IO_UNITS_PER_BOARD; break; default: + nunits = 0; /* catch this in debug kernels */ ASSERT(0); break; diff --git a/usr/src/uts/i86pc/io/gfx_private/gfxp_fb.c b/usr/src/uts/i86pc/io/gfx_private/gfxp_fb.c index 483498b5fd..6d1a99ea05 100644 --- a/usr/src/uts/i86pc/io/gfx_private/gfxp_fb.c +++ b/usr/src/uts/i86pc/io/gfx_private/gfxp_fb.c @@ -272,7 +272,7 @@ gfxp_fb_detach(dev_info_t *devi, ddi_detach_cmd_t cmd, gfxp_fb_softc_ptr_t ptr) case DDI_DETACH: (void) ddi_prop_remove(DDI_DEV_T_ANY, devi, "primary-controller"); - + error = DDI_SUCCESS; switch (softc->fb_type) { case GFXP_BITMAP: error = gfxp_bm_detach(devi, softc); diff --git a/usr/src/uts/i86pc/io/gfx_private/gfxp_segmap.c b/usr/src/uts/i86pc/io/gfx_private/gfxp_segmap.c index 1c4c849b51..6e3f8e0066 100644 --- a/usr/src/uts/i86pc/io/gfx_private/gfxp_segmap.c +++ b/usr/src/uts/i86pc/io/gfx_private/gfxp_segmap.c @@ -75,6 +75,9 @@ gfxp_ddi_segmap_setup(dev_t dev, off_t offset, struct as *as, caddr_t *addrp, if ((flags & MAP_TYPE) != MAP_SHARED) return (EINVAL); + if (len == 0) + return (EINVAL); + /* * Check that this region is indeed mappable on this platform. * Use the mapping function. @@ -102,20 +105,16 @@ gfxp_ddi_segmap_setup(dev_t dev, off_t offset, struct as *as, caddr_t *addrp, * legal and we are not trying to map in * more than the device will let us. */ - for (i = 0; i < len; i += PAGESIZE) { - if (i == 0) { - /* - * Save the pfn at offset here. This pfn will be - * used later to get user address. - */ - if ((pfn = (pfn_t)cdev_mmap(mapfunc, dev, offset, - maxprot)) == PFN_INVALID) - return (ENXIO); - } else { - if (cdev_mmap(mapfunc, dev, offset + i, maxprot) == - PFN_INVALID) - return (ENXIO); - } + /* + * Save the pfn at offset here. This pfn will be + * used later to get user address. + */ + pfn = (pfn_t)cdev_mmap(mapfunc, dev, offset, maxprot); + if (pfn == PFN_INVALID) + return (ENXIO); + for (i = PAGESIZE; i < len; i += PAGESIZE) { + if (cdev_mmap(mapfunc, dev, offset + i, maxprot) == PFN_INVALID) + return (ENXIO); } as_rangelock(as); diff --git a/usr/src/uts/i86pc/io/immu_dvma.c b/usr/src/uts/i86pc/io/immu_dvma.c index f1db9ee317..98ec560e90 100644 --- a/usr/src/uts/i86pc/io/immu_dvma.c +++ b/usr/src/uts/i86pc/io/immu_dvma.c @@ -1014,7 +1014,7 @@ map_unity_domain(domain_t *domain) /* * create_xlate_arena() - * Create the dvma arena for a domain with translation + * Create the dvma arena for a domain with translation * mapping */ static void @@ -1158,7 +1158,7 @@ set_domain( /* * device_domain() - * Get domain for a device. The domain may be global in which case it + * Get domain for a device. The domain may be global in which case it * is shared between all IOMMU units. Due to potential AGAW differences * between IOMMU units, such global domains *have to be* UNITY mapping * domains. Alternatively, the domain may be local to a IOMMU unit. @@ -2570,6 +2570,8 @@ immu_map_dvmaseg(dev_info_t *rdip, ddi_dma_handle_t handle, immu_dcookie_t *dcookies; int pde_set; + rwmask = 0; + page = NULL; domain = IMMU_DEVI(rdip)->imd_domain; immu = domain->dom_immu; immu_flags = dma_to_immu_flags(dmareq); diff --git a/usr/src/uts/i86pc/io/ioat/ioat_chan.c b/usr/src/uts/i86pc/io/ioat/ioat_chan.c index 7337ef9d07..4fca64aef3 100644 --- a/usr/src/uts/i86pc/io/ioat/ioat_chan.c +++ b/usr/src/uts/i86pc/io/ioat/ioat_chan.c @@ -824,6 +824,7 @@ ioat_ring_loop(ioat_channel_ring_t *ring, dcopy_cmd_t cmd) ioat_cmd_private_t *prevpriv; ioat_cmd_private_t *currpriv; + currpriv = NULL; channel = ring->cr_chan; ASSERT(channel->ic_ver == IOAT_CBv1); diff --git a/usr/src/uts/i86pc/io/pci/pci_common.c b/usr/src/uts/i86pc/io/pci/pci_common.c index 1cea07237f..1907ea104b 100644 --- a/usr/src/uts/i86pc/io/pci/pci_common.c +++ b/usr/src/uts/i86pc/io/pci/pci_common.c @@ -533,6 +533,7 @@ SUPPORTED_TYPES_OUT: * First check the config space and/or * MSI capability register(s) */ + pci_rval = DDI_FAILURE; if (DDI_INTR_IS_MSI_OR_MSIX(hdlp->ih_type)) pci_rval = pci_msi_get_cap(rdip, hdlp->ih_type, &pci_status); @@ -699,6 +700,7 @@ SUPPORTED_TYPES_OUT: * First check the config space and/or * MSI capability register(s) */ + pci_rval = DDI_FAILURE; if (DDI_INTR_IS_MSI_OR_MSIX(hdlp->ih_type)) pci_rval = pci_msi_get_pending(rdip, hdlp->ih_type, hdlp->ih_inum, &pci_status); @@ -989,7 +991,7 @@ int pci_common_get_reg_prop(dev_info_t *dip, pci_regspec_t *pci_rp) { int i; - int number; + int number; int assigned_addr_len; uint_t phys_hi = pci_rp->pci_phys_hi; pci_regspec_t *assigned_addr; @@ -1473,7 +1475,7 @@ pci_common_ctlops_peek(peekpoke_ctlops_t *in_args) /*ARGSUSED*/ int pci_common_peekpoke(dev_info_t *dip, dev_info_t *rdip, - ddi_ctl_enum_t ctlop, void *arg, void *result) + ddi_ctl_enum_t ctlop, void *arg, void *result) { if (ctlop == DDI_CTLOPS_PEEK) return (pci_common_ctlops_peek((peekpoke_ctlops_t *)arg)); @@ -1516,7 +1518,7 @@ pci_config_rd8(ddi_acc_impl_t *hdlp, uint8_t *addr) void pci_config_rep_rd8(ddi_acc_impl_t *hdlp, uint8_t *host_addr, - uint8_t *dev_addr, size_t repcount, uint_t flags) + uint8_t *dev_addr, size_t repcount, uint_t flags) { uint8_t *h, *d; @@ -1552,7 +1554,7 @@ pci_config_rd16(ddi_acc_impl_t *hdlp, uint16_t *addr) void pci_config_rep_rd16(ddi_acc_impl_t *hdlp, uint16_t *host_addr, - uint16_t *dev_addr, size_t repcount, uint_t flags) + uint16_t *dev_addr, size_t repcount, uint_t flags) { uint16_t *h, *d; @@ -1588,7 +1590,7 @@ pci_config_rd32(ddi_acc_impl_t *hdlp, uint32_t *addr) void pci_config_rep_rd32(ddi_acc_impl_t *hdlp, uint32_t *host_addr, - uint32_t *dev_addr, size_t repcount, uint_t flags) + uint32_t *dev_addr, size_t repcount, uint_t flags) { uint32_t *h, *d; @@ -1622,7 +1624,7 @@ pci_config_wr8(ddi_acc_impl_t *hdlp, uint8_t *addr, uint8_t value) void pci_config_rep_wr8(ddi_acc_impl_t *hdlp, uint8_t *host_addr, - uint8_t *dev_addr, size_t repcount, uint_t flags) + uint8_t *dev_addr, size_t repcount, uint_t flags) { uint8_t *h, *d; @@ -1655,7 +1657,7 @@ pci_config_wr16(ddi_acc_impl_t *hdlp, uint16_t *addr, uint16_t value) void pci_config_rep_wr16(ddi_acc_impl_t *hdlp, uint16_t *host_addr, - uint16_t *dev_addr, size_t repcount, uint_t flags) + uint16_t *dev_addr, size_t repcount, uint_t flags) { uint16_t *h, *d; @@ -1688,7 +1690,7 @@ pci_config_wr32(ddi_acc_impl_t *hdlp, uint32_t *addr, uint32_t value) void pci_config_rep_wr32(ddi_acc_impl_t *hdlp, uint32_t *host_addr, - uint32_t *dev_addr, size_t repcount, uint_t flags) + uint32_t *dev_addr, size_t repcount, uint_t flags) { uint32_t *h, *d; @@ -1736,7 +1738,7 @@ pci_config_wr64(ddi_acc_impl_t *hdlp, uint64_t *addr, uint64_t value) void pci_config_rep_rd64(ddi_acc_impl_t *hdlp, uint64_t *host_addr, - uint64_t *dev_addr, size_t repcount, uint_t flags) + uint64_t *dev_addr, size_t repcount, uint_t flags) { if (flags == DDI_DEV_AUTOINCR) { for (; repcount; repcount--) @@ -1749,7 +1751,7 @@ pci_config_rep_rd64(ddi_acc_impl_t *hdlp, uint64_t *host_addr, void pci_config_rep_wr64(ddi_acc_impl_t *hdlp, uint64_t *host_addr, - uint64_t *dev_addr, size_t repcount, uint_t flags) + uint64_t *dev_addr, size_t repcount, uint_t flags) { if (flags == DDI_DEV_AUTOINCR) { for (; repcount; repcount--) diff --git a/usr/src/uts/i86pc/io/pci/pci_tools.c b/usr/src/uts/i86pc/io/pci/pci_tools.c index c28ca5f0b7..7fb496bc10 100644 --- a/usr/src/uts/i86pc/io/pci/pci_tools.c +++ b/usr/src/uts/i86pc/io/pci/pci_tools.c @@ -278,12 +278,11 @@ pcitool_get_intr(dev_info_t *dip, void *arg, int mode) pcitool_intr_get_t partial_iget; pcitool_intr_get_t *iget = &partial_iget; size_t iget_kmem_alloc_size = 0; - uint8_t num_devs_ret; + uint8_t num_devs_ret = 0; int copyout_rval; int rval = SUCCESS; int circ; int i; - ddi_intr_handle_impl_t info_hdl; apic_get_intr_t intr_info; apic_get_type_t type_info; @@ -640,6 +639,9 @@ pcitool_cfg_access(pcitool_reg_t *prg, boolean_t write_flag, case 8: local_data = VAL64(&req); break; + default: + prg->status = PCITOOL_INVALID_ADDRESS; + return (ENOTSUP); } if (big_endian) { prg->data = diff --git a/usr/src/uts/i86pc/io/rootnex.c b/usr/src/uts/i86pc/io/rootnex.c index 972f726287..757d73dc5e 100644 --- a/usr/src/uts/i86pc/io/rootnex.c +++ b/usr/src/uts/i86pc/io/rootnex.c @@ -1142,6 +1142,8 @@ rootnex_map_regspec(ddi_map_req_t *mp, caddr_t *vaddrp) case DDI_STORECACHING_OK_ACC: hat_acc_flags = HAT_STORECACHING_OK; break; + default: + return (DDI_ME_INVAL); } ap = (ddi_acc_impl_t *)hp->ah_platform_private; ap->ahi_acc_attr |= DDI_ACCATTR_CPU_VADDR; @@ -2762,7 +2764,7 @@ rootnex_need_bounce_seg(ddi_dma_obj_t *dmar_object, rootnex_sglinfo_t *sglinfo) uint_t pcnt; page_t *pp; - + pp = NULL; /* shortcuts */ pplist = dmar_object->dmao_obj.virt_obj.v_priv; vaddr = dmar_object->dmao_obj.virt_obj.v_addr; @@ -2891,7 +2893,7 @@ rootnex_get_sgl(ddi_dma_obj_t *dmar_object, ddi_dma_cookie_t *sgl, page_t *pp; uint_t cnt; - + pp = NULL; /* shortcuts */ pplist = dmar_object->dmao_obj.virt_obj.v_priv; vaddr = dmar_object->dmao_obj.virt_obj.v_addr; @@ -4226,7 +4228,7 @@ rootnex_copybuf_window_boundary(ddi_dma_impl_t *hp, rootnex_dma_t *dma, uint_t pidx; off_t poff; - + pidx = 0; sinfo = &dma->dp_sglinfo; /* diff --git a/usr/src/uts/i86pc/io/tzmon/tzmon.c b/usr/src/uts/i86pc/io/tzmon/tzmon.c index 6841299373..df19882879 100644 --- a/usr/src/uts/i86pc/io/tzmon/tzmon.c +++ b/usr/src/uts/i86pc/io/tzmon/tzmon.c @@ -397,7 +397,7 @@ tzmon_enumerate_zone(ACPI_HANDLE obj, thermal_zone_t *tzp, int enum_flag) ACPI_STATUS status; ACPI_BUFFER zone_name; int level; - int instance; + int instance = 0; char abuf[5]; /* diff --git a/usr/src/uts/i86pc/io/xsvc/xsvc.c b/usr/src/uts/i86pc/io/xsvc/xsvc.c index de3b727544..734a8a6472 100644 --- a/usr/src/uts/i86pc/io/xsvc/xsvc.c +++ b/usr/src/uts/i86pc/io/xsvc/xsvc.c @@ -65,7 +65,7 @@ static int xsvc_detach(dev_info_t *devi, ddi_detach_cmd_t cmd); static int xsvc_getinfo(dev_info_t *dip, ddi_info_cmd_t cmd, void *arg, void **result); -static struct cb_ops xsvc_cb_ops = { +static struct cb_ops xsvc_cb_ops = { xsvc_open, /* cb_open */ xsvc_close, /* cb_close */ nodev, /* cb_strategy */ @@ -468,7 +468,6 @@ xsvc_ioctl_alloc_memory(xsvc_state_t *state, void *arg, int mode) int err; int i; - /* Copy in the params, then get the size and key */ if (ddi_model_convert_from(mode & FMODELS) == DDI_MODEL_ILP32) { err = ddi_copyin(arg, ¶ms32, sizeof (xsvc_mem_req_32), @@ -525,6 +524,7 @@ xsvc_ioctl_alloc_memory(xsvc_state_t *state, void *arg, int mode) usgl32 = (xsvc_mloc_32 *)(uintptr_t)params32.xsvc_sg_list; mp->xm_dma_attr.dma_attr_align = P2ROUNDUP( params32.xsvc_mem_align, PAGESIZE); + usgl = NULL; } else { mp->xm_dma_attr.dma_attr_addr_lo = params.xsvc_mem_addr_lo; mp->xm_dma_attr.dma_attr_addr_hi = params.xsvc_mem_addr_hi; @@ -532,6 +532,7 @@ xsvc_ioctl_alloc_memory(xsvc_state_t *state, void *arg, int mode) usgl = (xsvc_mloc *)(uintptr_t)params.xsvc_sg_list; mp->xm_dma_attr.dma_attr_align = P2ROUNDUP( params.xsvc_mem_align, PAGESIZE); + usgl32 = NULL; } mp->xm_device_attr = xsvc_device_attr; diff --git a/usr/src/uts/i86pc/os/cpuid.c b/usr/src/uts/i86pc/os/cpuid.c index 3f7a031e3f..d452e00cd5 100644 --- a/usr/src/uts/i86pc/os/cpuid.c +++ b/usr/src/uts/i86pc/os/cpuid.c @@ -2272,7 +2272,8 @@ cpuid_intel_getids(cpu_t *cpu, void *feature) * Multi-core (and possibly multi-threaded) * processors. */ - uint_t ncpu_per_core; + uint_t ncpu_per_core = 0; + if (cpi->cpi_ncore_per_chip == 1) ncpu_per_core = cpi->cpi_ncpu_per_chip; else if (cpi->cpi_ncore_per_chip > 1) diff --git a/usr/src/uts/i86pc/os/cpupm/cpupm_mach.c b/usr/src/uts/i86pc/os/cpupm/cpupm_mach.c index 72302fcf07..af14349807 100644 --- a/usr/src/uts/i86pc/os/cpupm/cpupm_mach.c +++ b/usr/src/uts/i86pc/os/cpupm/cpupm_mach.c @@ -613,7 +613,7 @@ cpupm_state_change(cpu_t *cp, int level, int state) cpupm_mach_state_t *mach_state = (cpupm_mach_state_t *)(cp->cpu_m.mcpu_pm_mach_state); cpupm_state_ops_t *state_ops; - cpupm_state_domains_t *state_domain; + cpupm_state_domains_t *state_domain; cpuset_t set; DTRACE_PROBE2(cpupm__state__change, cpu_t *, cp, int, level); @@ -632,7 +632,7 @@ cpupm_state_change(cpu_t *cp, int level, int state) state_domain = mach_state->ms_tstate.cma_domain; break; default: - break; + return; } switch (state_domain->pm_type) { @@ -872,9 +872,9 @@ int cpupm_get_top_speed(cpu_t *cp) { #ifndef __xpv - cpupm_mach_state_t *mach_state; - cpu_acpi_handle_t handle; - int plat_level; + cpupm_mach_state_t *mach_state; + cpu_acpi_handle_t handle; + int plat_level; uint_t nspeeds; int max_level; diff --git a/usr/src/uts/i86pc/os/ddi_impl.c b/usr/src/uts/i86pc/os/ddi_impl.c index 0a856cbbf2..e5a2aad350 100644 --- a/usr/src/uts/i86pc/os/ddi_impl.c +++ b/usr/src/uts/i86pc/os/ddi_impl.c @@ -1415,7 +1415,7 @@ kalloca(size_t size, size_t align, int cansleep, int physcontig, size_t *addr, *raddr, rsize; size_t hdrsize = 4 * sizeof (size_t); /* must be power of 2 */ int a, i, c; - vmem_t *vmp; + vmem_t *vmp = NULL; kmem_cache_t *cp = NULL; if (attr->dma_attr_addr_lo > mmu_ptob((uint64_t)ddiphysmin)) diff --git a/usr/src/uts/i86pc/os/fakebop.c b/usr/src/uts/i86pc/os/fakebop.c index aee332aaf4..166791b2c1 100644 --- a/usr/src/uts/i86pc/os/fakebop.c +++ b/usr/src/uts/i86pc/os/fakebop.c @@ -2411,6 +2411,7 @@ find_fw_table(ACPI_TABLE_RSDP *rsdp, char *signature) * use the XSDT. If the XSDT address is 0, though, fall back to * revision 1 and use the RSDT. */ + xsdt_addr = 0; if (revision == 0) { if (rsdp == NULL) return (NULL); diff --git a/usr/src/uts/i86pc/os/lgrpplat.c b/usr/src/uts/i86pc/os/lgrpplat.c index 7e5bc36295..1a4818bba6 100644 --- a/usr/src/uts/i86pc/os/lgrpplat.c +++ b/usr/src/uts/i86pc/os/lgrpplat.c @@ -1347,7 +1347,7 @@ lgrp_plat_root_hand(void) /* * Update CPU to node mapping for given CPU and proximity domain. * Return values: - * - zero for success + * - zero for success * - positive numbers for warnings * - negative numbers for errors */ @@ -1693,6 +1693,7 @@ lgrp_plat_latency_adjust(memnode_phys_addr_map_t *memnode_info, const lgrp_config_flag_t cflag = LGRP_CONFIG_LAT_CHANGE_ALL; int lat_corrected[MAX_NODES][MAX_NODES]; + t = 0; /* * Nothing to do when this is an UMA machine or don't have args needed */ @@ -3492,7 +3493,7 @@ opt_get_numa_config(uint_t *node_cnt, int *mem_intrlv, uint_t node_info[MAX_NODES]; uint_t off_hi; uint_t off_lo; - uint64_t nb_cfg_reg; + uint64_t nb_cfg_reg; /* * Read configuration registers from PCI configuration space to @@ -3527,6 +3528,7 @@ opt_get_numa_config(uint_t *node_cnt, int *mem_intrlv, * For Greyhound, PCI Extended Configuration Space must be enabled to * read high DRAM address map base and limit registers */ + nb_cfg_reg = 0; if (opt_family == AMD_FAMILY_GREYHOUND) { nb_cfg_reg = rdmsr(MSR_AMD_NB_CFG); if ((nb_cfg_reg & AMD_GH_NB_CFG_EN_ECS) == 0) diff --git a/usr/src/uts/i86pc/os/mp_machdep.c b/usr/src/uts/i86pc/os/mp_machdep.c index bb25cc26fc..f36f5f052d 100644 --- a/usr/src/uts/i86pc/os/mp_machdep.c +++ b/usr/src/uts/i86pc/os/mp_machdep.c @@ -350,6 +350,9 @@ pg_plat_hw_rank(pghw_type_t hw1, pghw_type_t hw2) PGHW_NUM_COMPONENTS }; + rank1 = 0; + rank2 = 0; + for (i = 0; hw_hier[i] != PGHW_NUM_COMPONENTS; i++) { if (hw_hier[i] == hw1) rank1 = i; diff --git a/usr/src/uts/i86pc/os/smb_dev.c b/usr/src/uts/i86pc/os/smb_dev.c index 11567548ea..876df1ed2a 100644 --- a/usr/src/uts/i86pc/os/smb_dev.c +++ b/usr/src/uts/i86pc/os/smb_dev.c @@ -148,7 +148,7 @@ smbios_open(const char *file, int version, int flags, int *errp) } else if (smb3 != NULL) { ep_type = SMBIOS_ENTRY_POINT_30; p = smb3; - } else if (smb2 != NULL) { + } else { ep_type = SMBIOS_ENTRY_POINT_21; p = smb2; } diff --git a/usr/src/uts/i86pc/os/startup.c b/usr/src/uts/i86pc/os/startup.c index 64193f62d2..636e58280a 100644 --- a/usr/src/uts/i86pc/os/startup.c +++ b/usr/src/uts/i86pc/os/startup.c @@ -2579,9 +2579,7 @@ add_physmem_cb(page_t *pp, pfn_t pnum) * kphysm_init() initializes physical memory. */ static pgcnt_t -kphysm_init( - page_t *pp, - pgcnt_t npages) +kphysm_init(page_t *pp, pgcnt_t npages) { struct memlist *pmem; struct memseg *cur_memseg; @@ -2655,9 +2653,8 @@ kphysm_init( * of these large pages, configure the memsegs based on the * memory node ranges which had been made non-contiguous. */ + end_pfn = base_pfn + num - 1; if (mnode_xwa > 1) { - - end_pfn = base_pfn + num - 1; ms = PFN_2_MEM_NODE(base_pfn); me = PFN_2_MEM_NODE(end_pfn); @@ -2716,8 +2713,14 @@ kphysm_init( /* process next memory node range */ ms++; base_pfn = mem_node_config[ms].physbase; - num = MIN(mem_node_config[ms].physmax, - end_pfn) - base_pfn + 1; + + if (mnode_xwa > 1) { + num = MIN(mem_node_config[ms].physmax, + end_pfn) - base_pfn + 1; + } else { + num = mem_node_config[ms].physmax - + base_pfn + 1; + } } } diff --git a/usr/src/uts/i86pc/os/trap.c b/usr/src/uts/i86pc/os/trap.c index c97255fae7..979da2f3c5 100644 --- a/usr/src/uts/i86pc/os/trap.c +++ b/usr/src/uts/i86pc/os/trap.c @@ -489,6 +489,9 @@ trap(struct regs *rp, caddr_t addr, processorid_t cpuid) ASSERT_STACK_ALIGNED(); + errcode = 0; + mstate = 0; + rw = S_OTHER; type = rp->r_trapno; CPU_STATS_ADDQ(CPU, sys, trap, 1); ASSERT(ct->t_schedflag & TS_DONT_SWAP); diff --git a/usr/src/uts/i86pc/vm/htable.c b/usr/src/uts/i86pc/vm/htable.c index a2d59d98ab..08e2130117 100644 --- a/usr/src/uts/i86pc/vm/htable.c +++ b/usr/src/uts/i86pc/vm/htable.c @@ -1382,6 +1382,7 @@ htable_create( if (level < 0 || level > TOP_LEVEL(hat)) panic("htable_create(): level %d out of range\n", level); + ht = NULL; /* * Create the page tables in top down order. */ diff --git a/usr/src/uts/i86pc/vm/vm_dep.h b/usr/src/uts/i86pc/vm/vm_dep.h index e1f04fd5d7..9b0c513a1c 100644 --- a/usr/src/uts/i86pc/vm/vm_dep.h +++ b/usr/src/uts/i86pc/vm/vm_dep.h @@ -127,7 +127,7 @@ extern page_t ****page_freelists; */ extern page_t ***page_cachelists; -#define PAGE_CACHELISTS(mnode, color, mtype) \ +#define PAGE_CACHELISTS(mnode, color, mtype) \ (*(page_cachelists[mtype] + (color))) /* @@ -154,7 +154,7 @@ extern page_t *page_get_mnode_cachelist(uint_t, uint_t, int, int); * simply return the limits of the given mnode, which then * determines the length of hpm_counters array for the mnode. */ -#define HPM_COUNTERS_LIMITS(mnode, physbase, physmax, first) \ +#define HPM_COUNTERS_LIMITS(mnode, physbase, physmax, first) \ { \ (physbase) = mem_node_config[(mnode)].physbase; \ (physmax) = mem_node_config[(mnode)].physmax; \ @@ -183,6 +183,7 @@ extern page_t *page_get_mnode_cachelist(uint_t, uint_t, int, int); pgcnt_t _np; \ pfn_t _pfn = (pfn); \ pfn_t _endpfn = _pfn + _cnt; \ + rv = 0; \ while (_pfn < _endpfn) { \ _mn = PFN_2_MEM_NODE(_pfn); \ _np = MIN(_endpfn, mem_node_config[_mn].physmax + 1) - _pfn; \ diff --git a/usr/src/uts/intel/amd64/krtld/kobj_reloc.c b/usr/src/uts/intel/amd64/krtld/kobj_reloc.c index 9d34ec1310..c284865769 100644 --- a/usr/src/uts/intel/amd64/krtld/kobj_reloc.c +++ b/usr/src/uts/intel/amd64/krtld/kobj_reloc.c @@ -27,8 +27,6 @@ * Copyright (c) 2017 Joyent, Inc. */ -#pragma ident "%Z%%M% %I% %E% SMI" - /* * x86 relocation code. */ @@ -174,9 +172,8 @@ smap_reloc_resolve(struct module *mp, char *symname, uint8_t *instr) } int -/* ARGSUSED2 */ -do_relocate(struct module *mp, char *reltbl, Word relshtype, int nreloc, - int relocsize, Addr baseaddr) +do_relocate(struct module *mp, char *reltbl, int nreloc, int relocsize, + Addr baseaddr) { unsigned long stndx; unsigned long off; /* can't be register for tnf_reloc_resolve() */ @@ -184,7 +181,7 @@ do_relocate(struct module *mp, char *reltbl, Word relshtype, int nreloc, register unsigned int rtype; unsigned long value; Elf64_Sxword addend; - Sym *symref; + Sym *symref = NULL; int err = 0; tnf_probe_control_t *probelist = NULL; tnf_tag_data_t *taglist = NULL; @@ -385,8 +382,8 @@ do_relocations(struct module *mp) } #endif - if (do_relocate(mp, (char *)rshp->sh_addr, rshp->sh_type, - nreloc, rshp->sh_entsize, shp->sh_addr) < 0) { + if (do_relocate(mp, (char *)rshp->sh_addr, nreloc, + rshp->sh_entsize, shp->sh_addr) < 0) { _kobj_printf(ops, "do_relocations: %s do_relocate failed\n", mp->filename); diff --git a/usr/src/uts/intel/os/fmsmb.c b/usr/src/uts/intel/os/fmsmb.c index 3a4785475b..51ca9dd693 100644 --- a/usr/src/uts/intel/os/fmsmb.c +++ b/usr/src/uts/intel/os/fmsmb.c @@ -1073,7 +1073,8 @@ bad: } int -fm_smb_mc_chipinst(uint_t bdf, uint_t *chip_inst) { +fm_smb_mc_chipinst(uint_t bdf, uint_t *chip_inst) +{ int i, j; smbios_hdl_t *shp; @@ -1101,10 +1102,12 @@ fm_smb_mc_chipinst(uint_t bdf, uint_t *chip_inst) { mastypes->type = SUN_OEM_EXT_MEMARRAY; smb_strcnt(shp, mastypes); + pstypes = NULL; + p_strcnt = 0; for (i = 0; i < mastypes->count; i++) { ext_id = mastypes->ids[i]->id; (void) smbios_info_extmemarray(shp, ext_id, &em); - if (em.smbmae_bdf == bdf) { + if (em.smbmae_bdf == bdf) { p_strcnt = smb_cnttypes(shp, SMB_TYPE_PROCESSOR); if (p_strcnt == 0) { smb_free_strcnt(mastypes, ma_strcnt); diff --git a/usr/src/uts/sparc/krtld/kobj_reloc.c b/usr/src/uts/sparc/krtld/kobj_reloc.c index 05e207810a..cc7df40d7c 100644 --- a/usr/src/uts/sparc/krtld/kobj_reloc.c +++ b/usr/src/uts/sparc/krtld/kobj_reloc.c @@ -24,8 +24,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - /* * SPARC relocation code. */ @@ -146,14 +144,8 @@ sdt_reloc_resolve(struct module *mp, char *symname, uint32_t *instr, long roff) } int -/* ARGSUSED2 */ -do_relocate( - struct module *mp, - char *reltbl, - Word relshtype, - int nreloc, - int relocsize, - Addr baseaddr) +do_relocate(struct module *mp, char *reltbl, int nreloc, int relocsize, + Addr baseaddr) { Word stndx; long off, roff; @@ -382,8 +374,8 @@ do_relocations(struct module *mp) _kobj_printf(ops, " section=%d\n", shn); } #endif - if (do_relocate(mp, (char *)rshp->sh_addr, rshp->sh_type, - nreloc, rshp->sh_entsize, shp->sh_addr) < 0) { + if (do_relocate(mp, (char *)rshp->sh_addr, nreloc, + rshp->sh_entsize, shp->sh_addr) < 0) { _kobj_printf(ops, "do_relocations: %s do_relocate failed\n", mp->filename); diff --git a/usr/src/uts/sun4/vm/vm_dep.h b/usr/src/uts/sun4/vm/vm_dep.h index 4923173d81..1bff35f69e 100644 --- a/usr/src/uts/sun4/vm/vm_dep.h +++ b/usr/src/uts/sun4/vm/vm_dep.h @@ -473,6 +473,7 @@ typedef struct { spgcnt_t _cnt = (spgcnt_t)(cnt); \ int _mn; \ pgcnt_t _np; \ + rv = 0; \ if (&plat_mem_node_intersect_range != NULL) { \ for (_mn = 0; _mn < max_mem_nodes; _mn++) { \ plat_mem_node_intersect_range((pfn), _cnt, _mn, &_np); \ @@ -527,7 +528,7 @@ extern plcnt_t plcnt; * if allocation from the RELOC pool failed and there is sufficient cage * memory, attempt to allocate from the NORELOC pool. */ -#define MTYPE_NEXT(mnode, mtype, flags) { \ +#define MTYPE_NEXT(mnode, mtype, flags) { \ if (!(flags & (PG_NORELOC | PGI_NOCAGE | PGI_RELOCONLY)) && \ (kcage_freemem >= kcage_lotsfree)) { \ if (plcnt[mnode][MTYPE_NORELOC].plc_mt_pgmax == 0) { \ |