AVX512 support for MMRegister xmm16..31 and ymm16..31, zmm0..31, vpaddsb support AVX512

git-svn-id: branches/tg74/avx512@39196 -
This commit is contained in:
tg74 2018-06-08 06:53:35 +00:00
parent a014ddf3f0
commit 31e4d4ef5e
60 changed files with 1765 additions and 170 deletions

View File

@ -1,2 +1,2 @@
{ don't edit, this file is generated from x86ins.dat }
2117;
2118;

View File

@ -11358,14 +11358,21 @@
opcode : A_VPADDSB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
code : #241#242#248#1#236#61#80;
code : #232#241#242#248#1#236#61#80;
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPADDSB;
ops : 3;
optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
code : #241#242#244#248#1#236#61#80;
code : #232#241#242#244#248#1#236#61#80;
flags : [if_avx2]
),
(
opcode : A_VPADDSB;
ops : 3;
optypes : (ot_zmmreg,ot_zmmreg,ot_zmmrm,ot_none);
code : #232#233#241#248#1#236#61#80;
flags : [if_avx2]
),
(

View File

@ -88,4 +88,12 @@
88,
89,
36,
90,
91,
92,
93,
94,
95,
96,
97,
0

View File

@ -88,4 +88,12 @@
'%ymm4',
'%ymm5',
'%ymm6',
'%ymm7'
'%ymm7',
'%zmm0',
'%zmm1',
'%zmm2',
'%zmm3',
'%zmm4',
'%zmm5',
'%zmm6',
'%zmm7'

View File

@ -89,3 +89,11 @@ NR_YMM4 = tregister($040D0004);
NR_YMM5 = tregister($040D0005);
NR_YMM6 = tregister($040D0006);
NR_YMM7 = tregister($040D0007);
NR_ZMM0 = tregister($040E0000);
NR_ZMM1 = tregister($040E0001);
NR_ZMM2 = tregister($040E0002);
NR_ZMM3 = tregister($040E0003);
NR_ZMM4 = tregister($040E0004);
NR_ZMM5 = tregister($040E0005);
NR_ZMM6 = tregister($040E0006);
NR_ZMM7 = tregister($040E0007);

View File

@ -88,4 +88,12 @@
25,
26,
27,
28,
21,
22,
23,
24,
25,
26,
27,
28

View File

@ -88,4 +88,12 @@
'ymm4',
'ymm5',
'ymm6',
'ymm7'
'ymm7',
'zmm0',
'zmm1',
'zmm2',
'zmm3',
'zmm4',
'zmm5',
'zmm6',
'zmm7'

View File

@ -88,4 +88,12 @@
87,
88,
89,
36
36,
90,
91,
92,
93,
94,
95,
96,
97

View File

@ -88,4 +88,12 @@
'ymm4',
'ymm5',
'ymm6',
'ymm7'
'ymm7',
'zmm0',
'zmm1',
'zmm2',
'zmm3',
'zmm4',
'zmm5',
'zmm6',
'zmm7'

View File

@ -1,2 +1,2 @@
{ don't edit, this file is generated from x86reg.dat }
90
98

View File

@ -88,4 +88,12 @@
87,
88,
89,
36
36,
90,
91,
92,
93,
94,
95,
96,
97

View File

@ -88,4 +88,12 @@ tregister($040D0003),
tregister($040D0004),
tregister($040D0005),
tregister($040D0006),
tregister($040D0007)
tregister($040D0007),
tregister($040E0000),
tregister($040E0001),
tregister($040E0002),
tregister($040E0003),
tregister($040E0004),
tregister($040E0005),
tregister($040E0006),
tregister($040E0007)

View File

@ -88,4 +88,12 @@ OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
OT_YMMREG
OT_YMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG

View File

@ -57,6 +57,14 @@
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
25,
26,
27,

View File

@ -88,4 +88,12 @@
87,
88,
89,
36
36,
90,
91,
92,
93,
94,
95,
96,
97

View File

@ -88,4 +88,12 @@
25,
26,
27,
28,
21,
22,
23,
24,
25,
26,
27,
28

View File

@ -88,4 +88,12 @@
'ymm4',
'ymm5',
'ymm6',
'ymm7'
'ymm7',
'zmm0',
'zmm1',
'zmm2',
'zmm3',
'zmm4',
'zmm5',
'zmm6',
'zmm7'

View File

@ -1,2 +1,2 @@
{ don't edit, this file is generated from x86ins.dat }
2149;
2150;

View File

@ -11386,14 +11386,21 @@
opcode : A_VPADDSB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
code : #241#242#248#1#236#61#80;
code : #232#241#242#248#1#236#61#80;
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPADDSB;
ops : 3;
optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
code : #241#242#244#248#1#236#61#80;
code : #232#241#242#244#248#1#236#61#80;
flags : [if_avx2]
),
(
opcode : A_VPADDSB;
ops : 3;
optypes : (ot_zmmreg,ot_zmmreg,ot_zmmrm,ot_none);
code : #232#233#241#248#1#236#61#80;
flags : [if_avx2]
),
(

View File

@ -88,4 +88,12 @@
88,
89,
36,
90,
91,
92,
93,
94,
95,
96,
97,
0

View File

@ -88,4 +88,12 @@
'%ymm4',
'%ymm5',
'%ymm6',
'%ymm7'
'%ymm7',
'%zmm0',
'%zmm1',
'%zmm2',
'%zmm3',
'%zmm4',
'%zmm5',
'%zmm6',
'%zmm7'

View File

@ -89,3 +89,11 @@ NR_YMM4 = tregister($040D0004);
NR_YMM5 = tregister($040D0005);
NR_YMM6 = tregister($040D0006);
NR_YMM7 = tregister($040D0007);
NR_ZMM0 = tregister($040E0000);
NR_ZMM1 = tregister($040E0001);
NR_ZMM2 = tregister($040E0002);
NR_ZMM3 = tregister($040E0003);
NR_ZMM4 = tregister($040E0004);
NR_ZMM5 = tregister($040E0005);
NR_ZMM6 = tregister($040E0006);
NR_ZMM7 = tregister($040E0007);

View File

@ -88,4 +88,12 @@
25,
26,
27,
28,
21,
22,
23,
24,
25,
26,
27,
28

View File

@ -88,4 +88,12 @@
'ymm4',
'ymm5',
'ymm6',
'ymm7'
'ymm7',
'zmm0',
'zmm1',
'zmm2',
'zmm3',
'zmm4',
'zmm5',
'zmm6',
'zmm7'

View File

@ -88,4 +88,12 @@
87,
88,
89,
36
36,
90,
91,
92,
93,
94,
95,
96,
97

View File

@ -88,4 +88,12 @@
'ymm4',
'ymm5',
'ymm6',
'ymm7'
'ymm7',
'zmm0',
'zmm1',
'zmm2',
'zmm3',
'zmm4',
'zmm5',
'zmm6',
'zmm7'

View File

@ -1,2 +1,2 @@
{ don't edit, this file is generated from x86reg.dat }
90
98

View File

@ -88,4 +88,12 @@
87,
88,
89,
36
36,
90,
91,
92,
93,
94,
95,
96,
97

View File

@ -88,4 +88,12 @@ tregister($040D0003),
tregister($040D0004),
tregister($040D0005),
tregister($040D0006),
tregister($040D0007)
tregister($040D0007),
tregister($040E0000),
tregister($040E0001),
tregister($040E0002),
tregister($040E0003),
tregister($040E0004),
tregister($040E0005),
tregister($040E0006),
tregister($040E0007)

View File

@ -88,4 +88,12 @@ OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
OT_YMMREG
OT_YMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG

View File

@ -57,6 +57,14 @@
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
25,
26,
27,

View File

@ -88,4 +88,12 @@
87,
88,
89,
36
36,
90,
91,
92,
93,
94,
95,
96,
97

View File

@ -88,4 +88,12 @@
25,
26,
27,
28,
21,
22,
23,
24,
25,
26,
27,
28

View File

@ -88,4 +88,12 @@
'ymm4',
'ymm5',
'ymm6',
'ymm7'
'ymm7',
'zmm0',
'zmm1',
'zmm2',
'zmm3',
'zmm4',
'zmm5',
'zmm6',
'zmm7'

View File

@ -1,4 +1,4 @@
<?xml version="1.0"?>
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="9"/>
@ -19,14 +19,14 @@
</BuildModes>
<PublishOptions>
<Version Value="2"/>
<DestinationDirectory Value="$(TestDir)\publishedproject\"/>
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
</PublishOptions>
<RunParams>
<local>
<FormatVersion Value="1"/>
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
<CommandLineParams Value="\home\torsten\tmp\test.pp"/>
<LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/>
</local>
</RunParams>
<Units Count="2">

View File

@ -57,7 +57,7 @@ var
function formatop(s:string;allowsizeonly:boolean):string;
const
replaces=28;
replaces=29;
replacetab : array[1..replaces,1..2] of string[32]=(
(':',' or ot_colon'),
('reg','regnorm'),
@ -73,6 +73,7 @@ function formatop(s:string;allowsizeonly:boolean):string;
('mem64','memory or ot_bits64'),
('mem128','memory or ot_bits128'),
('mem256','memory or ot_bits256'),
('mem512','memory or ot_bits512'),
('mem80','memory or ot_bits80'),
('mem','memory'),
('memory_offs','mem_offs'),
@ -282,6 +283,7 @@ begin
begin
{ handle comment }
readln(infile,s);
while (s[1]=' ') do
delete(s,1,1);
if (s='') or (s[1]=';') then

View File

@ -17,7 +17,7 @@
program mkx86reg;
const Version = '1.00';
max_regcount = 200;
max_regcount = 255;
var s : string;
i : longint;
@ -246,7 +246,7 @@ var infile:text;
begin
{ open dat file }
assign(infile,'x86reg.dat');
assign(infile,'../x86/x86reg.dat');
reset(infile);
while not(eof(infile)) do
begin

File diff suppressed because it is too large Load Diff

View File

@ -386,6 +386,7 @@ implementation
writer.AsmWrite('word ptr ');
S_XMM: writer.AsmWrite('xmmword ptr ');
S_YMM: writer.AsmWrite('ymmword ptr ');
S_ZMM: writer.AsmWrite('zmmword ptr ');
{$ifdef x86_64}
S_BQ : if dest then
writer.AsmWrite('qword ptr ')

View File

@ -589,8 +589,18 @@ implementation
{ for the name the sub reg doesn't matter }
hr:=r;
if (getregtype(hr)=R_MMREGISTER) and
(getsubreg(hr)<>R_SUBMMY) then
(getsubreg(hr)<>R_SUBMMY) and
(getsubreg(hr)<>R_SUBMMZ) then
setsubreg(hr,R_SUBMMX);
//// TG TODO check
//if (getregtype(hr)=R_MMREGISTER) then
// case getsubreg(hr) of
// R_SUBMMX: setsubreg(hr,R_SUBMMX);
// R_SUBMMY: setsubreg(hr,R_SUBMMY);
// R_SUBMMZ: setsubreg(hr,R_SUBMMZ);
// else setsubreg(hr,R_SUBMMX);
// end;
result:=findreg_by_number_table(hr,regnumber_index);
end;

View File

@ -195,6 +195,7 @@ begin
case _size of
16: size := OS_M128;
32: size := OS_M256;
64: size := OS_M512;
end;
{$ifdef i8086}
@ -420,6 +421,7 @@ begin
S_Q : memrefsize := 64;
S_XMM : memrefsize := 128;
S_YMM : memrefsize := 256;
S_ZMM : memrefsize := 512;
else Internalerror(777200);
end;
break;
@ -579,6 +581,21 @@ begin
Message2(asmr_w_check_mem_operand_automap_multiple_size, std_op2str[opcode], '"256 bit memory operand"');
end;
msiMem512:
begin
tx86operand(operands[i]).opsize := S_ZMM;
tx86operand(operands[i]).size := OS_M512;
opsize := S_ZMM;
end;
msiMultiple512:
begin
tx86operand(operands[i]).opsize := S_ZMM;
tx86operand(operands[i]).size := OS_M512;
opsize := S_ZMM;
Message2(asmr_w_check_mem_operand_automap_multiple_size, std_op2str[opcode], '"512 bit memory operand"');
end;
msiMemRegSize:
begin
// mem-ref-size = register size
@ -750,7 +767,9 @@ begin
// in this case is we need the old handling ("S_NO")
// =>> ignore
if (tx86operand(operands[operand2]).opsize <> S_XMM) and
(tx86operand(operands[operand2]).opsize <> S_YMM) then
(tx86operand(operands[operand2]).opsize <> S_YMM) and
(tx86operand(operands[operand2]).opsize <> S_ZMM) then
tx86operand(operands[i]).opsize:=tx86operand(operands[operand2]).opsize
else tx86operand(operands[operand2]).opsize := S_NO;
end;

View File

@ -43,7 +43,7 @@ Unit Rax86int;
{------------------ Assembler directives --------------------}
AS_ALIGN,AS_DB,AS_DW,AS_DD,AS_DQ,AS_PUBLIC,AS_END,
{------------------ Assembler Operators --------------------}
AS_BYTE,AS_WORD,AS_DWORD,AS_QWORD,AS_TBYTE,AS_DQWORD,AS_OWORD,AS_XMMWORD,AS_YWORD,AS_YMMWORD,AS_NEAR,AS_FAR,
AS_BYTE,AS_WORD,AS_DWORD,AS_QWORD,AS_TBYTE,AS_DQWORD,AS_OWORD,AS_XMMWORD,AS_YWORD,AS_YMMWORD,AS_ZWORD,AS_ZMMWORD,AS_NEAR,AS_FAR,
AS_HIGH,AS_LOW,AS_OFFSET,AS_SIZEOF,AS_VMTOFFSET,AS_SEG,AS_TYPE,AS_PTR,AS_MOD,AS_SHL,AS_SHR,AS_NOT,
AS_AND,AS_OR,AS_XOR,AS_WRT,AS___GOTPCREL,AS_TARGET_DIRECTIVE);
@ -143,7 +143,7 @@ Unit Rax86int;
{ problems with shl,shr,not,and,or and xor, they are }
{ context sensitive. }
_asmoperators : array[firstoperator..lastoperator] of tasmkeyword = (
'BYTE','WORD','DWORD','QWORD','TBYTE','DQWORD','OWORD','XMMWORD','YWORD','YMMWORD','NEAR','FAR','HIGH',
'BYTE','WORD','DWORD','QWORD','TBYTE','DQWORD','OWORD','XMMWORD','YWORD','YMMWORD','ZWORD','ZMMWORD','NEAR','FAR','HIGH',
'LOW','OFFSET','SIZEOF','VMTOFFSET','SEG','TYPE','PTR','MOD','SHL','SHR','NOT','AND',
'OR','XOR','WRT','GOTPCREL');
@ -153,11 +153,12 @@ Unit Rax86int;
')',':','.','+','-','*',
';','identifier','register','opcode','/',
'','','','','','','END',
'','','','','','','','','','','','',
'','','','','','','','','','','','','','',
'','','','sizeof','vmtoffset','','type','ptr','mod','shl','shr','not',
'and','or','xor','wrt','..gotpcrel',''
);
constructor tx86intreader.create;
var
i : tasmop;
@ -261,6 +262,15 @@ Unit Rax86int;
begin
is_register:=true;
actasmtoken:=AS_REGISTER;
//TG TODO CHECK
if getregtype(actasmregister) = R_MMREGISTER then
begin
// actasmpattern:=actasmpattern + c;
// c:=current_scanner.asmgetchar;
end;
end;
end;
@ -1012,7 +1022,7 @@ Unit Rax86int;
while (actasmtoken=AS_DOT) do
begin
Consume(AS_DOT);
if actasmtoken in [AS_BYTE,AS_ID,AS_WORD,AS_DWORD,AS_QWORD,AS_OWORD,AS_XMMWORD,AS_YWORD,AS_YMMWORD,AS_REGISTER] then
if actasmtoken in [AS_BYTE,AS_ID,AS_WORD,AS_DWORD,AS_QWORD,AS_OWORD,AS_XMMWORD,AS_YWORD,AS_YMMWORD,AS_ZWORD,AS_ZMMWORD,AS_REGISTER] then
begin
s:=s+'.'+actasmpattern;
consume(actasmtoken);
@ -2363,7 +2373,10 @@ Unit Rax86int;
AS_OWORD,
AS_XMMWORD,
AS_YWORD,
AS_YMMWORD:
AS_YMMWORD,
AS_ZWORD,
AS_ZMMWORD
:
begin
{ Type specifier }
oper.hastype:=true;
@ -2379,6 +2392,8 @@ Unit Rax86int;
AS_XMMWORD: oper.typesize:=16;
AS_YWORD,
AS_YMMWORD: oper.typesize:=32;
AS_ZWORD,
AS_ZMMWORD: oper.typesize:=64;
else
internalerror(2010061101);
end;

View File

@ -4513,8 +4513,9 @@ ymmreg,ymmreg,ymmrm \361\362\364\370\1\xD4\75\120 AVX2
[VPADDSB]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)
xmmreg,xmmreg,xmmrm \361\362\370\1\xEC\75\120 AVX,SANDYBRIDGE
ymmreg,ymmreg,ymmrm \361\362\364\370\1\xEC\75\120 AVX2
xmmreg,xmmreg,xmmrm \350\361\362\370\1\xEC\75\120 AVX,SANDYBRIDGE
ymmreg,ymmreg,ymmrm \350\361\362\364\370\1\xEC\75\120 AVX2
zmmreg,zmmreg,zmmrm \350\351\361\370\1\xEC\75\120 AVX2
[VPADDSW]
(Ch_Rop1, Ch_Rop2, Ch_Wop3)

View File

@ -159,6 +159,23 @@ NR_XMM12,$040C000c,xmm12,%xmm12,xmm12,xmm12,-1,-1,29,OT_XMMREG,4,64
NR_XMM13,$040C000d,xmm13,%xmm13,xmm13,xmm13,-1,-1,30,OT_XMMREG,5,64
NR_XMM14,$040C000e,xmm14,%xmm14,xmm14,xmm14,-1,-1,31,OT_XMMREG,6,64
NR_XMM15,$040C000f,xmm15,%xmm15,xmm15,xmm15,-1,-1,32,OT_XMMREG,7,64
NR_XMM16,$040C0010,xmm16,%xmm16,xmm16,xmm16,-1,-1,33,OT_XMMREG,0,64
NR_XMM17,$040C0011,xmm17,%xmm17,xmm17,xmm17,-1,-1,34,OT_XMMREG,1,64
NR_XMM18,$040C0012,xmm18,%xmm18,xmm18,xmm18,-1,-1,35,OT_XMMREG,2,64
NR_XMM19,$040C0013,xmm19,%xmm19,xmm19,xmm19,-1,-1,36,OT_XMMREG,3,64
NR_XMM20,$040C0014,xmm20,%xmm20,xmm20,xmm20,-1,-1,37,OT_XMMREG,4,64
NR_XMM21,$040C0015,xmm21,%xmm21,xmm21,xmm21,-1,-1,38,OT_XMMREG,5,64
NR_XMM22,$040C0016,xmm22,%xmm22,xmm22,xmm22,-1,-1,39,OT_XMMREG,6,64
NR_XMM23,$040C0017,xmm23,%xmm23,xmm23,xmm23,-1,-1,40,OT_XMMREG,7,64
NR_XMM24,$040C0018,xmm24,%xmm24,xmm24,xmm24,-1,-1,41,OT_XMMREG,0,64
NR_XMM25,$040C0019,xmm25,%xmm25,xmm25,xmm25,-1,-1,42,OT_XMMREG,1,64
NR_XMM26,$040C001A,xmm26,%xmm26,xmm26,xmm26,-1,-1,43,OT_XMMREG,2,64
NR_XMM27,$040C001B,xmm27,%xmm27,xmm27,xmm27,-1,-1,44,OT_XMMREG,3,64
NR_XMM28,$040C001C,xmm28,%xmm28,xmm28,xmm28,-1,-1,45,OT_XMMREG,4,64
NR_XMM29,$040C001D,xmm29,%xmm29,xmm29,xmm29,-1,-1,46,OT_XMMREG,5,64
NR_XMM30,$040C001E,xmm30,%xmm30,xmm30,xmm30,-1,-1,47,OT_XMMREG,6,64
NR_XMM31,$040C001F,xmm31,%xmm31,xmm31,xmm31,-1,-1,48,OT_XMMREG,7,64
NR_YMM0,$040D0000,ymm0,%ymm0,ymm0,ymm0,21,21,17,OT_YMMREG,0
NR_YMM1,$040D0001,ymm1,%ymm1,ymm1,ymm1,22,22,18,OT_YMMREG,1
@ -176,3 +193,54 @@ NR_YMM12,$040D000c,ymm12,%ymm12,ymm12,ymm12,-1,-1,29,OT_YMMREG,4,64
NR_YMM13,$040D000d,ymm13,%ymm13,ymm13,ymm13,-1,-1,30,OT_YMMREG,5,64
NR_YMM14,$040D000e,ymm14,%ymm14,ymm14,ymm14,-1,-1,31,OT_YMMREG,6,64
NR_YMM15,$040D000f,ymm15,%ymm15,ymm15,ymm15,-1,-1,32,OT_YMMREG,7,64
NR_YMM16,$040D0010,ymm16,%ymm16,ymm16,ymm16,-1,-1,33,OT_YMMREG,0,64
NR_YMM17,$040D0011,ymm17,%ymm17,ymm17,ymm17,-1,-1,34,OT_YMMREG,1,64
NR_YMM18,$040D0012,ymm18,%ymm18,ymm18,ymm18,-1,-1,35,OT_YMMREG,2,64
NR_YMM19,$040D0013,ymm19,%ymm19,ymm19,ymm19,-1,-1,36,OT_YMMREG,3,64
NR_YMM20,$040D0014,ymm20,%ymm20,ymm20,ymm20,-1,-1,37,OT_YMMREG,4,64
NR_YMM21,$040D0015,ymm21,%ymm21,ymm21,ymm21,-1,-1,38,OT_YMMREG,5,64
NR_YMM22,$040D0016,ymm22,%ymm22,ymm22,ymm22,-1,-1,39,OT_YMMREG,6,64
NR_YMM23,$040D0017,ymm23,%ymm23,ymm23,ymm23,-1,-1,40,OT_YMMREG,7,64
NR_YMM24,$040D0018,ymm24,%ymm24,ymm24,ymm24,-1,-1,41,OT_YMMREG,0,64
NR_YMM25,$040D0019,ymm25,%ymm25,ymm25,ymm25,-1,-1,42,OT_YMMREG,1,64
NR_YMM26,$040D001a,ymm26,%ymm26,ymm26,ymm26,-1,-1,43,OT_YMMREG,2,64
NR_YMM27,$040D001b,ymm27,%ymm27,ymm27,ymm27,-1,-1,44,OT_YMMREG,3,64
NR_YMM28,$040D001c,ymm28,%ymm28,ymm28,ymm28,-1,-1,45,OT_YMMREG,4,64
NR_YMM29,$040D001d,ymm29,%ymm29,ymm29,ymm29,-1,-1,46,OT_YMMREG,5,64
NR_YMM30,$040D001e,ymm30,%ymm30,ymm30,ymm30,-1,-1,47,OT_YMMREG,6,64
NR_YMM31,$040D001f,ymm31,%ymm31,ymm31,ymm31,-1,-1,48,OT_YMMREG,7,64
NR_ZMM0,$040E0000,zmm0,%zmm0,zmm0,zmm0,21,21,17,OT_ZMMREG,0
NR_ZMM1,$040E0001,zmm1,%zmm1,zmm1,zmm1,22,22,18,OT_ZMMREG,1
NR_ZMM2,$040E0002,zmm2,%zmm2,zmm2,zmm2,23,23,19,OT_ZMMREG,2
NR_ZMM3,$040E0003,zmm3,%zmm3,zmm3,zmm3,24,24,20,OT_ZMMREG,3
NR_ZMM4,$040E0004,zmm4,%zmm4,zmm4,zmm4,25,25,21,OT_ZMMREG,4
NR_ZMM5,$040E0005,zmm5,%zmm5,zmm5,zmm5,26,26,22,OT_ZMMREG,5
NR_ZMM6,$040E0006,zmm6,%zmm6,zmm6,zmm6,27,27,23,OT_ZMMREG,6
NR_ZMM7,$040E0007,zmm7,%zmm7,zmm7,zmm7,28,28,24,OT_ZMMREG,7
NR_ZMM8,$040E0008,zmm8,%zmm8,zmm8,zmm8,-1,-1,25,OT_ZMMREG,0,64
NR_ZMM9,$040E0009,zmm9,%zmm9,zmm9,zmm9,-1,-1,26,OT_ZMMREG,1,64
NR_ZMM10,$040E000A,zmm10,%zmm10,zmm10,zmm10,-1,-1,27,OT_ZMMREG,2,64
NR_ZMM11,$040E000B,zmm11,%zmm11,zmm11,zmm11,-1,-1,28,OT_ZMMREG,3,64
NR_ZMM12,$040E000C,zmm12,%zmm12,zmm12,zmm12,-1,-1,29,OT_ZMMREG,4,64
NR_ZMM13,$040E000D,zmm13,%zmm13,zmm13,zmm13,-1,-1,30,OT_ZMMREG,5,64
NR_ZMM14,$040E000E,zmm14,%zmm14,zmm14,zmm14,-1,-1,31,OT_ZMMREG,6.64
NR_ZMM15,$040E000F,zmm15,%zmm15,zmm15,zmm15,-1,-1,32,OT_ZMMREG,7,64
NR_ZMM16,$040E0010,zmm16,%zmm16,zmm16,zmm16,-1,-1,33,OT_ZMMREG,0,64
NR_ZMM17,$040E0011,zmm17,%zmm17,zmm17,zmm17,-1,-1,34,OT_ZMMREG,1,64
NR_ZMM18,$040E0012,zmm18,%zmm18,zmm18,zmm18,-1,-1,35,OT_ZMMREG,2,64
NR_ZMM19,$040E0013,zmm19,%zmm19,zmm19,zmm19,-1,-1,36,OT_ZMMREG,3,64
NR_ZMM20,$040E0014,zmm20,%zmm20,zmm20,zmm20,-1,-1,37,OT_ZMMREG,4,64
NR_ZMM21,$040E0015,zmm21,%zmm21,zmm21,zmm21,-1,-1,38,OT_ZMMREG,5,64
NR_ZMM22,$040E0016,zmm22,%zmm22,zmm22,zmm22,-1,-1,39,OT_ZMMREG,6,64
NR_ZMM23,$040E0017,zmm23,%zmm23,zmm23,zmm23,-1,-1,40,OT_ZMMREG,7,64
NR_ZMM24,$040E0018,zmm24,%zmm24,zmm24,zmm24,-1,-1,41,OT_ZMMREG,0,64
NR_ZMM25,$040E0019,zmm25,%zmm25,zmm25,zmm25,-1,-1,42,OT_ZMMREG,1,64
NR_ZMM26,$040E001A,zmm26,%zmm26,zmm26,zmm26,-1,-1,43,OT_ZMMREG,2,64
NR_ZMM27,$040E001B,zmm27,%zmm27,zmm27,zmm27,-1,-1,44,OT_ZMMREG,3,64
NR_ZMM28,$040E001C,zmm28,%zmm28,zmm28,zmm28,-1,-1,45,OT_ZMMREG,4,64
NR_ZMM29,$040E001D,zmm29,%zmm29,zmm29,zmm29,-1,-1,46,OT_ZMMREG,5,64
NR_ZMM30,$040E001E,zmm30,%zmm30,zmm30,zmm30,-1,-1,47,OT_ZMMREG,6,64
NR_ZMM31,$040E001F,zmm31,%zmm31,zmm31,zmm31,-1,-1,48,OT_ZMMREG,7,64

View File

@ -125,29 +125,93 @@
133,
134,
135,
122,
123,
124,
125,
126,
127,
128,
129,
136,
137,
146,
147,
148,
149,
150,
151,
138,
139,
122,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
123,
150,
151,
124,
125,
126,
127,
128,
129,
152,
153,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
154,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
155,
182,
183,
156,
157,
158,
159,
160,
161,
81,
184,
185,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
186,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
187,
214,
215,
188,
189,
190,
191,
192,
193,
0

View File

@ -135,6 +135,22 @@
'%xmm13',
'%xmm14',
'%xmm15',
'%xmm16',
'%xmm17',
'%xmm18',
'%xmm19',
'%xmm20',
'%xmm21',
'%xmm22',
'%xmm23',
'%xmm24',
'%xmm25',
'%xmm26',
'%xmm27',
'%xmm28',
'%xmm29',
'%xmm30',
'%xmm31',
'%ymm0',
'%ymm1',
'%ymm2',
@ -150,4 +166,52 @@
'%ymm12',
'%ymm13',
'%ymm14',
'%ymm15'
'%ymm15',
'%ymm16',
'%ymm17',
'%ymm18',
'%ymm19',
'%ymm20',
'%ymm21',
'%ymm22',
'%ymm23',
'%ymm24',
'%ymm25',
'%ymm26',
'%ymm27',
'%ymm28',
'%ymm29',
'%ymm30',
'%ymm31',
'%zmm0',
'%zmm1',
'%zmm2',
'%zmm3',
'%zmm4',
'%zmm5',
'%zmm6',
'%zmm7',
'%zmm8',
'%zmm9',
'%zmm10',
'%zmm11',
'%zmm12',
'%zmm13',
'%zmm14',
'%zmm15',
'%zmm16',
'%zmm17',
'%zmm18',
'%zmm19',
'%zmm20',
'%zmm21',
'%zmm22',
'%zmm23',
'%zmm24',
'%zmm25',
'%zmm26',
'%zmm27',
'%zmm28',
'%zmm29',
'%zmm30',
'%zmm31'

View File

@ -135,6 +135,22 @@ NR_XMM12 = tregister($040C000c);
NR_XMM13 = tregister($040C000d);
NR_XMM14 = tregister($040C000e);
NR_XMM15 = tregister($040C000f);
NR_XMM16 = tregister($040C0010);
NR_XMM17 = tregister($040C0011);
NR_XMM18 = tregister($040C0012);
NR_XMM19 = tregister($040C0013);
NR_XMM20 = tregister($040C0014);
NR_XMM21 = tregister($040C0015);
NR_XMM22 = tregister($040C0016);
NR_XMM23 = tregister($040C0017);
NR_XMM24 = tregister($040C0018);
NR_XMM25 = tregister($040C0019);
NR_XMM26 = tregister($040C001A);
NR_XMM27 = tregister($040C001B);
NR_XMM28 = tregister($040C001C);
NR_XMM29 = tregister($040C001D);
NR_XMM30 = tregister($040C001E);
NR_XMM31 = tregister($040C001F);
NR_YMM0 = tregister($040D0000);
NR_YMM1 = tregister($040D0001);
NR_YMM2 = tregister($040D0002);
@ -151,3 +167,51 @@ NR_YMM12 = tregister($040D000c);
NR_YMM13 = tregister($040D000d);
NR_YMM14 = tregister($040D000e);
NR_YMM15 = tregister($040D000f);
NR_YMM16 = tregister($040D0010);
NR_YMM17 = tregister($040D0011);
NR_YMM18 = tregister($040D0012);
NR_YMM19 = tregister($040D0013);
NR_YMM20 = tregister($040D0014);
NR_YMM21 = tregister($040D0015);
NR_YMM22 = tregister($040D0016);
NR_YMM23 = tregister($040D0017);
NR_YMM24 = tregister($040D0018);
NR_YMM25 = tregister($040D0019);
NR_YMM26 = tregister($040D001a);
NR_YMM27 = tregister($040D001b);
NR_YMM28 = tregister($040D001c);
NR_YMM29 = tregister($040D001d);
NR_YMM30 = tregister($040D001e);
NR_YMM31 = tregister($040D001f);
NR_ZMM0 = tregister($040E0000);
NR_ZMM1 = tregister($040E0001);
NR_ZMM2 = tregister($040E0002);
NR_ZMM3 = tregister($040E0003);
NR_ZMM4 = tregister($040E0004);
NR_ZMM5 = tregister($040E0005);
NR_ZMM6 = tregister($040E0006);
NR_ZMM7 = tregister($040E0007);
NR_ZMM8 = tregister($040E0008);
NR_ZMM9 = tregister($040E0009);
NR_ZMM10 = tregister($040E000A);
NR_ZMM11 = tregister($040E000B);
NR_ZMM12 = tregister($040E000C);
NR_ZMM13 = tregister($040E000D);
NR_ZMM14 = tregister($040E000E);
NR_ZMM15 = tregister($040E000F);
NR_ZMM16 = tregister($040E0010);
NR_ZMM17 = tregister($040E0011);
NR_ZMM18 = tregister($040E0012);
NR_ZMM19 = tregister($040E0013);
NR_ZMM20 = tregister($040E0014);
NR_ZMM21 = tregister($040E0015);
NR_ZMM22 = tregister($040E0016);
NR_ZMM23 = tregister($040E0017);
NR_ZMM24 = tregister($040E0018);
NR_ZMM25 = tregister($040E0019);
NR_ZMM26 = tregister($040E001A);
NR_ZMM27 = tregister($040E001B);
NR_ZMM28 = tregister($040E001C);
NR_ZMM29 = tregister($040E001D);
NR_ZMM30 = tregister($040E001E);
NR_ZMM31 = tregister($040E001F);

View File

@ -135,6 +135,22 @@
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
17,
18,
19,
@ -150,4 +166,52 @@
29,
30,
31,
32
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48

View File

@ -135,6 +135,22 @@
'xmm13',
'xmm14',
'xmm15',
'xmm16',
'xmm17',
'xmm18',
'xmm19',
'xmm20',
'xmm21',
'xmm22',
'xmm23',
'xmm24',
'xmm25',
'xmm26',
'xmm27',
'xmm28',
'xmm29',
'xmm30',
'xmm31',
'ymm0',
'ymm1',
'ymm2',
@ -150,4 +166,52 @@
'ymm12',
'ymm13',
'ymm14',
'ymm15'
'ymm15',
'ymm16',
'ymm17',
'ymm18',
'ymm19',
'ymm20',
'ymm21',
'ymm22',
'ymm23',
'ymm24',
'ymm25',
'ymm26',
'ymm27',
'ymm28',
'ymm29',
'ymm30',
'ymm31',
'zmm0',
'zmm1',
'zmm2',
'zmm3',
'zmm4',
'zmm5',
'zmm6',
'zmm7',
'zmm8',
'zmm9',
'zmm10',
'zmm11',
'zmm12',
'zmm13',
'zmm14',
'zmm15',
'zmm16',
'zmm17',
'zmm18',
'zmm19',
'zmm20',
'zmm21',
'zmm22',
'zmm23',
'zmm24',
'zmm25',
'zmm26',
'zmm27',
'zmm28',
'zmm29',
'zmm30',
'zmm31'

View File

@ -126,28 +126,92 @@
133,
134,
135,
122,
123,
124,
125,
126,
127,
128,
129,
136,
137,
146,
147,
148,
149,
150,
151,
138,
139,
122,
140,
141,
142,
143,
144,
145,
81
146,
147,
148,
149,
123,
150,
151,
124,
125,
126,
127,
128,
129,
152,
153,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
154,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
155,
182,
183,
156,
157,
158,
159,
160,
161,
81,
184,
185,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
186,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
187,
214,
215,
188,
189,
190,
191,
192,
193

View File

@ -135,6 +135,22 @@
'xmm13',
'xmm14',
'xmm15',
'xmm16',
'xmm17',
'xmm18',
'xmm19',
'xmm20',
'xmm21',
'xmm22',
'xmm23',
'xmm24',
'xmm25',
'xmm26',
'xmm27',
'xmm28',
'xmm29',
'xmm30',
'xmm31',
'ymm0',
'ymm1',
'ymm2',
@ -150,4 +166,52 @@
'ymm12',
'ymm13',
'ymm14',
'ymm15'
'ymm15',
'ymm16',
'ymm17',
'ymm18',
'ymm19',
'ymm20',
'ymm21',
'ymm22',
'ymm23',
'ymm24',
'ymm25',
'ymm26',
'ymm27',
'ymm28',
'ymm29',
'ymm30',
'ymm31',
'zmm0',
'zmm1',
'zmm2',
'zmm3',
'zmm4',
'zmm5',
'zmm6',
'zmm7',
'zmm8',
'zmm9',
'zmm10',
'zmm11',
'zmm12',
'zmm13',
'zmm14',
'zmm15',
'zmm16',
'zmm17',
'zmm18',
'zmm19',
'zmm20',
'zmm21',
'zmm22',
'zmm23',
'zmm24',
'zmm25',
'zmm26',
'zmm27',
'zmm28',
'zmm29',
'zmm30',
'zmm31'

View File

@ -1,2 +1,2 @@
{ don't edit, this file is generated from x86reg.dat }
152
216

View File

@ -135,6 +135,22 @@ tregister($040C000c),
tregister($040C000d),
tregister($040C000e),
tregister($040C000f),
tregister($040C0010),
tregister($040C0011),
tregister($040C0012),
tregister($040C0013),
tregister($040C0014),
tregister($040C0015),
tregister($040C0016),
tregister($040C0017),
tregister($040C0018),
tregister($040C0019),
tregister($040C001A),
tregister($040C001B),
tregister($040C001C),
tregister($040C001D),
tregister($040C001E),
tregister($040C001F),
tregister($040D0000),
tregister($040D0001),
tregister($040D0002),
@ -150,4 +166,52 @@ tregister($040D000b),
tregister($040D000c),
tregister($040D000d),
tregister($040D000e),
tregister($040D000f)
tregister($040D000f),
tregister($040D0010),
tregister($040D0011),
tregister($040D0012),
tregister($040D0013),
tregister($040D0014),
tregister($040D0015),
tregister($040D0016),
tregister($040D0017),
tregister($040D0018),
tregister($040D0019),
tregister($040D001a),
tregister($040D001b),
tregister($040D001c),
tregister($040D001d),
tregister($040D001e),
tregister($040D001f),
tregister($040E0000),
tregister($040E0001),
tregister($040E0002),
tregister($040E0003),
tregister($040E0004),
tregister($040E0005),
tregister($040E0006),
tregister($040E0007),
tregister($040E0008),
tregister($040E0009),
tregister($040E000A),
tregister($040E000B),
tregister($040E000C),
tregister($040E000D),
tregister($040E000E),
tregister($040E000F),
tregister($040E0010),
tregister($040E0011),
tregister($040E0012),
tregister($040E0013),
tregister($040E0014),
tregister($040E0015),
tregister($040E0016),
tregister($040E0017),
tregister($040E0018),
tregister($040E0019),
tregister($040E001A),
tregister($040E001B),
tregister($040E001C),
tregister($040E001D),
tregister($040E001E),
tregister($040E001F)

View File

@ -135,6 +135,22 @@ OT_XMMREG,
OT_XMMREG,
OT_XMMREG,
OT_XMMREG,
OT_XMMREG,
OT_XMMREG,
OT_XMMREG,
OT_XMMREG,
OT_XMMREG,
OT_XMMREG,
OT_XMMREG,
OT_XMMREG,
OT_XMMREG,
OT_XMMREG,
OT_XMMREG,
OT_XMMREG,
OT_XMMREG,
OT_XMMREG,
OT_XMMREG,
OT_XMMREG,
OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
@ -150,4 +166,52 @@ OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
OT_YMMREG
OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
OT_YMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG,
OT_ZMMREG

View File

@ -117,6 +117,70 @@
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
69,
70,
71,

View File

@ -126,28 +126,92 @@
133,
134,
135,
122,
123,
124,
125,
126,
127,
128,
129,
136,
137,
146,
147,
148,
149,
150,
151,
138,
139,
122,
140,
141,
142,
143,
144,
145,
81
146,
147,
148,
149,
123,
150,
151,
124,
125,
126,
127,
128,
129,
152,
153,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
154,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
155,
182,
183,
156,
157,
158,
159,
160,
161,
81,
184,
185,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
186,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
187,
214,
215,
188,
189,
190,
191,
192,
193

View File

@ -135,6 +135,22 @@
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
17,
18,
19,
@ -150,4 +166,52 @@
29,
30,
31,
32
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48

View File

@ -135,6 +135,22 @@
'xmm13',
'xmm14',
'xmm15',
'xmm16',
'xmm17',
'xmm18',
'xmm19',
'xmm20',
'xmm21',
'xmm22',
'xmm23',
'xmm24',
'xmm25',
'xmm26',
'xmm27',
'xmm28',
'xmm29',
'xmm30',
'xmm31',
'ymm0',
'ymm1',
'ymm2',
@ -150,4 +166,52 @@
'ymm12',
'ymm13',
'ymm14',
'ymm15'
'ymm15',
'ymm16',
'ymm17',
'ymm18',
'ymm19',
'ymm20',
'ymm21',
'ymm22',
'ymm23',
'ymm24',
'ymm25',
'ymm26',
'ymm27',
'ymm28',
'ymm29',
'ymm30',
'ymm31',
'zmm0',
'zmm1',
'zmm2',
'zmm3',
'zmm4',
'zmm5',
'zmm6',
'zmm7',
'zmm8',
'zmm9',
'zmm10',
'zmm11',
'zmm12',
'zmm13',
'zmm14',
'zmm15',
'zmm16',
'zmm17',
'zmm18',
'zmm19',
'zmm20',
'zmm21',
'zmm22',
'zmm23',
'zmm24',
'zmm25',
'zmm26',
'zmm27',
'zmm28',
'zmm29',
'zmm30',
'zmm31'

View File

@ -1,2 +1,2 @@
{ don't edit, this file is generated from x86ins.dat }
2170;
2171;

View File

@ -11687,14 +11687,21 @@
opcode : A_VPADDSB;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_xmmrm,ot_none);
code : #241#242#248#1#236#61#80;
code : #232#241#242#248#1#236#61#80;
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VPADDSB;
ops : 3;
optypes : (ot_ymmreg,ot_ymmreg,ot_ymmrm,ot_none);
code : #241#242#244#248#1#236#61#80;
code : #232#241#242#244#248#1#236#61#80;
flags : [if_avx2]
),
(
opcode : A_VPADDSB;
ops : 3;
optypes : (ot_zmmreg,ot_zmmreg,ot_zmmrm,ot_none);
code : #232#233#241#248#1#236#61#80;
flags : [if_avx2]
),
(