diff --git a/common/h/registers/x86_regs.h b/common/h/registers/x86_regs.h index 1a7b3a4e1f..4c44345b43 100644 --- a/common/h/registers/x86_regs.h +++ b/common/h/registers/x86_regs.h @@ -64,6 +64,7 @@ namespace Dyninst { namespace x86 { const signed int OCT = 0x00000700; // 128-bit SSE, FC16, XOP, AVX, and FMA3/4 const signed int YMMS = 0x00000800; // 256-bit SSE, AVX2, FMA3/4 const signed int ZMMS = 0x00000900; // 512-bit AVX-512/AVX10 + const signed int KMSKS = 0x00000A00; // 64-bit mask from AVX-512/AVX10 /* Register Categories */ const signed int GPR = 0x00010000; // General-Purpose Registers @@ -190,14 +191,14 @@ namespace Dyninst { namespace x86 { DEF_REGISTER( fsbase, 0x1 | FULL | MISC | Arch_x86, "x86"); DEF_REGISTER( gsbase, 0x2 | FULL | MISC | Arch_x86, "x86"); - DEF_REGISTER( k0, 0x00 | OCT | KMASK | Arch_x86, "x86"); - DEF_REGISTER( k1, 0x01 | OCT | KMASK | Arch_x86, "x86"); - DEF_REGISTER( k2, 0x02 | OCT | KMASK | Arch_x86, "x86"); - DEF_REGISTER( k3, 0x03 | OCT | KMASK | Arch_x86, "x86"); - DEF_REGISTER( k4, 0x04 | OCT | KMASK | Arch_x86, "x86"); - DEF_REGISTER( k5, 0x05 | OCT | KMASK | Arch_x86, "x86"); - DEF_REGISTER( k6, 0x06 | OCT | KMASK | Arch_x86, "x86"); - DEF_REGISTER( k7, 0x07 | OCT | KMASK | Arch_x86, "x86"); + DEF_REGISTER( k0, 0x00 | KMSKS | KMASK | Arch_x86, "x86"); + DEF_REGISTER( k1, 0x01 | KMSKS | KMASK | Arch_x86, "x86"); + DEF_REGISTER( k2, 0x02 | KMSKS | KMASK | Arch_x86, "x86"); + DEF_REGISTER( k3, 0x03 | KMSKS | KMASK | Arch_x86, "x86"); + DEF_REGISTER( k4, 0x04 | KMSKS | KMASK | Arch_x86, "x86"); + DEF_REGISTER( k5, 0x05 | KMSKS | KMASK | Arch_x86, "x86"); + DEF_REGISTER( k6, 0x06 | KMSKS | KMASK | Arch_x86, "x86"); + DEF_REGISTER( k7, 0x07 | KMSKS | KMASK | Arch_x86, "x86"); DEF_REGISTER( xmm0, 0x00 | OCT | XMM | Arch_x86, "x86"); DEF_REGISTER( xmm1, 0x01 | OCT | XMM | Arch_x86, "x86"); diff --git a/common/src/registers/MachRegister.C b/common/src/registers/MachRegister.C index 8efcf8ad75..6947d7bd46 100644 --- a/common/src/registers/MachRegister.C +++ b/common/src/registers/MachRegister.C @@ -131,6 +131,7 @@ namespace Dyninst { case x86::YMMS: return 32; case x86::ZMMS: return 64; case x86::MMS: return 8; + case x86::KMSKS: return 8; default: return 0; } @@ -976,6 +977,7 @@ namespace Dyninst { case Arch_x86: switch(subrange) { case x86::OCT: + case x86::KMSKS: case x86::FPDBL: p = x86_regpos_qword; break; case x86::MMS: p = x86_regpos_qword; break; case x86::H_REG: p = x86_regpos_high_byte; break;