2017-01-10 23:15:17 +03:00
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
|
|
// $Id$
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Copyright (c) 2017 Stanislav Shwartsman
|
|
|
|
// Written by Stanislav Shwartsman [sshwarts at sourceforge net]
|
|
|
|
//
|
|
|
|
// This library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// This library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with this library; if not, write to the Free Software
|
|
|
|
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA B 02110-1301 USA
|
|
|
|
//
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
#ifndef BX_FETCHDECODE_OPMAP_0F38_H
|
|
|
|
#define BX_FETCHDECODE_OPMAP_0F38_H
|
|
|
|
|
|
|
|
#if BX_CPU_LEVEL >= 6
|
|
|
|
|
|
|
|
/* ************************************************************************ */
|
|
|
|
/* 3-byte opcode table (Table A-4, 0F 38) */
|
|
|
|
|
|
|
|
// opcode 0F 38 00
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3800[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_PSHUFB_PqQq },
|
|
|
|
/* 66 */ { 0, BX_IA_PSHUFB_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 01
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3801[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_PHADDW_PqQq },
|
|
|
|
/* 66 */ { 0, BX_IA_PHADDW_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 02
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3802[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_PHADDD_PqQq },
|
|
|
|
/* 66 */ { 0, BX_IA_PHADDD_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 03
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3803[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_PHADDSW_PqQq },
|
|
|
|
/* 66 */ { 0, BX_IA_PHADDSW_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 04
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3804[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_PMADDUBSW_PqQq },
|
|
|
|
/* 66 */ { 0, BX_IA_PMADDUBSW_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 05
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3805[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_PHSUBW_PqQq },
|
|
|
|
/* 66 */ { 0, BX_IA_PHSUBW_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 06
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3806[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_PHSUBD_PqQq },
|
|
|
|
/* 66 */ { 0, BX_IA_PHSUBD_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 07
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3807[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_PHSUBSW_PqQq },
|
|
|
|
/* 66 */ { 0, BX_IA_PHSUBSW_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 08
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3808[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_PSIGNB_PqQq },
|
|
|
|
/* 66 */ { 0, BX_IA_PSIGNB_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 09
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3809[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_PSIGNW_PqQq },
|
|
|
|
/* 66 */ { 0, BX_IA_PSIGNW_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 0A
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F380A[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_PSIGND_PqQq },
|
|
|
|
/* 66 */ { 0, BX_IA_PSIGND_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 0B
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F380B[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_PMULHRSW_PqQq },
|
|
|
|
/* 66 */ { 0, BX_IA_PMULHRSW_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 10
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3810[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PBLENDVB_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 14
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3814[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_BLENDVPS_VpsWps },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 15
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3815[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_BLENDVPD_VpdWpd },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 17
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3817[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PTEST_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 1C
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F381C[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_PABSB_PqQq },
|
|
|
|
/* 66 */ { 0, BX_IA_PABSB_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 1D
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F381D[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_PABSW_PqQq },
|
|
|
|
/* 66 */ { 0, BX_IA_PABSW_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 1E
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F381E[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_PABSD_PqQq },
|
|
|
|
/* 66 */ { 0, BX_IA_PABSD_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 20
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3820[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMOVSXBW_VdqWq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 21
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3821[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMOVSXBD_VdqWd },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 22
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3822[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMOVSXBQ_VdqWw },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 23
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3823[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMOVSXWD_VdqWq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 24
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3824[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMOVSXWQ_VdqWd },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 25
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3825[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMOVSXDQ_VdqWq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 28
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3828[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMULDQ_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 29
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3829[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PCMPEQQ_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 2A
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F382A[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_MOVNTDQA_VdqMdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 2B
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F382B[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PACKUSDW_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 30
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3830[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMOVZXBW_VdqWq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 31
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3831[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMOVZXBD_VdqWd },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 32
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3832[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMOVZXBQ_VdqWw },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 33
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3833[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMOVZXWD_VdqWq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 34
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3834[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMOVZXWQ_VdqWd },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 35
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3835[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMOVZXDQ_VdqWq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 37
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3837[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PCMPGTQ_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 38
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3838[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMINSB_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 39
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3839[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMINSD_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 3A
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F383A[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMINUW_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 3B
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F383B[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMINUD_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 3C
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F383C[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMAXSB_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 3D
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F383D[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMAXSD_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 3E
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F383E[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMAXUW_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 3F
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F383F[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMAXUD_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 40
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3840[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PMULLD_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 41
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3841[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_PHMINPOSUW_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 80
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3880[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_INVEPT },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 81
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3881[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_INVVPID },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 82
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3882[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_INVPCID },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 C8
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F38C8[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_SHA1NEXTE_VdqWdq },
|
|
|
|
/* 66 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 C9
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F38C9[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_SHA1MSG1_VdqWdq },
|
|
|
|
/* 66 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 CA
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F38CA[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_SHA1MSG2_VdqWdq },
|
|
|
|
/* 66 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 CB
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F38CB[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_SHA256RNDS2_VdqWdq },
|
|
|
|
/* 66 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 CC
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F38CC[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_SHA256MSG1_VdqWdq },
|
|
|
|
/* 66 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 CD
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F38CD[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_SHA256MSG2_VdqWdq },
|
|
|
|
/* 66 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
2017-10-21 22:57:12 +03:00
|
|
|
// opcode 0F 38 CF
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F38CF[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_GF2P8MULB_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
2017-01-10 23:15:17 +03:00
|
|
|
// opcode 0F 38 DB
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F38DB[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_AESIMC_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 DC
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F38DC[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_AESENC_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 DD
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F38DD[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_AESENCLAST_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 DE
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F38DE[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_AESDEC_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 DF
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F38DF[4] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_AESDECLAST_VdqWdq },
|
|
|
|
/* F3 */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 F0
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F38F0[] = {
|
|
|
|
// osize = 16 bit
|
|
|
|
/* -- /w */ { 0, BX_IA_MOVBE_GwMw },
|
|
|
|
/* 66 /w */ { 0, BX_IA_MOVBE_GwMw },
|
|
|
|
/* F3 /w */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 /w */ { 0, BX_IA_CRC32_GdEb },
|
|
|
|
// osize = 32 bit
|
|
|
|
/* -- /d */ { 0, BX_IA_MOVBE_GdMd },
|
|
|
|
/* 66 /d */ { 0, BX_IA_MOVBE_GdMd },
|
|
|
|
/* F3 /d */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 /d */ { 0, BX_IA_CRC32_GdEb },
|
|
|
|
#if BX_SUPPORT_X86_64
|
|
|
|
// osize = 64 bit
|
|
|
|
/* -- /q */ { 0, BX_IA_MOVBE_GqMq },
|
|
|
|
/* 66 /q */ { 0, BX_IA_MOVBE_GqMq },
|
|
|
|
/* F3 /q */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 /q */ { 0, BX_IA_CRC32_GdEb },
|
|
|
|
#endif
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 F1
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F38F1[] = {
|
|
|
|
// osize = 16 bit
|
|
|
|
/* -- /w */ { 0, BX_IA_MOVBE_MwGw },
|
|
|
|
/* 66 /w */ { 0, BX_IA_MOVBE_MwGw },
|
|
|
|
/* F3 /w */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 /w */ { 0, BX_IA_CRC32_GdEw },
|
|
|
|
// osize = 32 bit
|
|
|
|
/* -- /d */ { 0, BX_IA_MOVBE_MdGd },
|
|
|
|
/* 66 /d */ { 0, BX_IA_MOVBE_MdGd },
|
|
|
|
/* F3 /d */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 /d */ { 0, BX_IA_CRC32_GdEd },
|
|
|
|
#if BX_SUPPORT_X86_64
|
|
|
|
// osize = 64 bit
|
|
|
|
/* -- /q */ { 0, BX_IA_MOVBE_MqGq },
|
2018-01-23 22:53:34 +03:00
|
|
|
/* 66 /q */ { 0, BX_IA_MOVBE_MqGq },
|
2017-01-10 23:15:17 +03:00
|
|
|
/* F3 /q */ { 0, BX_IA_ERROR },
|
|
|
|
/* F2 /q */ { 0, BX_IA_CRC32_GdEq },
|
|
|
|
#endif
|
|
|
|
};
|
|
|
|
|
|
|
|
// opcode 0F 38 F6
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F38F6[] = {
|
|
|
|
/* -- */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 */ { 0, BX_IA_ADCX_GdEd },
|
2017-11-11 13:42:21 +03:00
|
|
|
/* F3 */ { 0, BX_IA_ADOX_GdEd },
|
|
|
|
/* F2 */ { 0, BX_IA_ERROR },
|
2017-01-10 23:15:17 +03:00
|
|
|
#if BX_SUPPORT_X86_64
|
|
|
|
/* -- /q */ { 0, BX_IA_ERROR },
|
|
|
|
/* 66 /q */ { 0, BX_IA_ADCX_GqEq },
|
2017-11-11 13:42:21 +03:00
|
|
|
/* F3 /q */ { 0, BX_IA_ADOX_GqEq },
|
|
|
|
/* F2 /q */ { 0, BX_IA_ERROR },
|
2017-01-10 23:15:17 +03:00
|
|
|
#endif
|
|
|
|
};
|
|
|
|
|
2018-04-06 08:06:36 +03:00
|
|
|
// opcode 0F 38 F9
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeTable0F38F9_32[] = {
|
|
|
|
/* 0F C3 /w */ { BxNoPrefixSSE, BX_IA_MOVDIRI_Op32_MdGd },
|
|
|
|
/* 0F C3 /d */ { BxNoPrefixSSE, BX_IA_MOVDIRI_Op32_MdGd },
|
|
|
|
};
|
|
|
|
#if BX_SUPPORT_X86_64
|
|
|
|
static const BxOpcodeInfo_t BxOpcodeTable0F38F9_64[] = {
|
|
|
|
/* 0F C3 /w */ { BxNoPrefixSSE, BX_IA_MOVDIRI_Op64_MdGd },
|
|
|
|
/* 0F C3 /d */ { BxNoPrefixSSE, BX_IA_MOVDIRI_Op64_MdGd },
|
|
|
|
/* 0F C3 /q */ { BxNoPrefixSSE, BX_IA_MOVDIRI_MqGq },
|
|
|
|
};
|
|
|
|
#endif
|
|
|
|
|
2017-01-10 23:15:17 +03:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif // BX_FETCHDECODE_OPMAP_0F38_H
|