mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 15:47:53 +02:00
A big update of x86 instruction table, part 1 (mostly SIMD instructions):
* Using ot_mmxrm and ot_xmmrm operand types to match arguments, reduces number of required entries by half. * Replaced all literal $66, $F2 and $F3 prefixes with control codes (\361, \334 and \333, respectively). * Prefix control codes imply writing REX, so code \323 after them is no longer necessary, removed. * Fixed technology flags (SSSE3, SSE4.1, SSE4.2) - Removed codes \300 and \301 (intended to generate address size prefix). FPC does not support this feature (the prefix itself is generated, but process_ea rejects operands needing non-default address size). Probably we don't even need to support it. But if we do, a much simpler solution is check all operands, like today's NASM does. * Fixed/added some instructions along the way, namely CRC32, UNPCKHPD, CMPNEQSD. git-svn-id: trunk@17437 -
This commit is contained in:
parent
de8ae0f873
commit
1d81a1244b
@ -512,6 +512,7 @@
|
||||
'cmpltpd',
|
||||
'cmpltsd',
|
||||
'cmpneqpd',
|
||||
'cmpneqsd',
|
||||
'cmpnlepd',
|
||||
'cmpnlesd',
|
||||
'cmpnltpd',
|
||||
@ -666,6 +667,7 @@
|
||||
'roundpd',
|
||||
'roundss',
|
||||
'roundsd',
|
||||
'crc32',
|
||||
'pcmpestri',
|
||||
'pcmpestrm',
|
||||
'pcmpistri',
|
||||
|
@ -530,6 +530,7 @@ attsufNONE,
|
||||
attsufNONE,
|
||||
attsufNONE,
|
||||
attsufNONE,
|
||||
attsufNONE,
|
||||
attsufINT,
|
||||
attsufNONE,
|
||||
attsufINT,
|
||||
@ -666,6 +667,7 @@ attsufNONE,
|
||||
attsufNONE,
|
||||
attsufNONE,
|
||||
attsufNONE,
|
||||
attsufINT,
|
||||
attsufNONE,
|
||||
attsufNONE,
|
||||
attsufNONE,
|
||||
|
@ -512,6 +512,7 @@
|
||||
'cmpltpd',
|
||||
'cmpltsd',
|
||||
'cmpneqpd',
|
||||
'cmpneqsd',
|
||||
'cmpnlepd',
|
||||
'cmpnlesd',
|
||||
'cmpnltpd',
|
||||
@ -666,6 +667,7 @@
|
||||
'roundpd',
|
||||
'roundss',
|
||||
'roundsd',
|
||||
'crc32',
|
||||
'pcmpestri',
|
||||
'pcmpestrm',
|
||||
'pcmpistri',
|
||||
|
@ -1,2 +1,2 @@
|
||||
{ don't edit, this file is generated from x86ins.dat }
|
||||
1560;
|
||||
1215;
|
||||
|
@ -512,6 +512,7 @@ A_CMPLESD,
|
||||
A_CMPLTPD,
|
||||
A_CMPLTSD,
|
||||
A_CMPNEQPD,
|
||||
A_CMPNEQSD,
|
||||
A_CMPNLEPD,
|
||||
A_CMPNLESD,
|
||||
A_CMPNLTPD,
|
||||
@ -666,6 +667,7 @@ A_ROUNDPS,
|
||||
A_ROUNDPD,
|
||||
A_ROUNDSS,
|
||||
A_ROUNDSD,
|
||||
A_CRC32,
|
||||
A_PCMPESTRI,
|
||||
A_PCMPESTRM,
|
||||
A_PCMPISTRI,
|
||||
|
@ -522,6 +522,7 @@
|
||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||
(Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
|
||||
(Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
|
||||
(Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
|
||||
@ -666,6 +667,7 @@
|
||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||
(Ch: (Ch_Mop1, Ch_Rop2, Ch_None)),
|
||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -530,6 +530,7 @@ attsufNONE,
|
||||
attsufNONE,
|
||||
attsufNONE,
|
||||
attsufNONE,
|
||||
attsufNONE,
|
||||
attsufINT,
|
||||
attsufNONE,
|
||||
attsufINT,
|
||||
@ -666,6 +667,7 @@ attsufNONE,
|
||||
attsufNONE,
|
||||
attsufNONE,
|
||||
attsufNONE,
|
||||
attsufINT,
|
||||
attsufNONE,
|
||||
attsufNONE,
|
||||
attsufNONE,
|
||||
|
@ -512,6 +512,7 @@
|
||||
'cmpltpd',
|
||||
'cmpltsd',
|
||||
'cmpneqpd',
|
||||
'cmpneqsd',
|
||||
'cmpnlepd',
|
||||
'cmpnlesd',
|
||||
'cmpnltpd',
|
||||
@ -666,6 +667,7 @@
|
||||
'roundpd',
|
||||
'roundss',
|
||||
'roundsd',
|
||||
'crc32',
|
||||
'pcmpestri',
|
||||
'pcmpestrm',
|
||||
'pcmpistri',
|
||||
|
@ -512,6 +512,7 @@
|
||||
'cmpltpd',
|
||||
'cmpltsd',
|
||||
'cmpneqpd',
|
||||
'cmpneqsd',
|
||||
'cmpnlepd',
|
||||
'cmpnlesd',
|
||||
'cmpnltpd',
|
||||
@ -666,6 +667,7 @@
|
||||
'roundpd',
|
||||
'roundss',
|
||||
'roundsd',
|
||||
'crc32',
|
||||
'pcmpestri',
|
||||
'pcmpestrm',
|
||||
'pcmpistri',
|
||||
|
@ -1,2 +1,2 @@
|
||||
{ don't edit, this file is generated from x86ins.dat }
|
||||
1526;
|
||||
1188;
|
||||
|
@ -512,6 +512,7 @@ A_CMPLESD,
|
||||
A_CMPLTPD,
|
||||
A_CMPLTSD,
|
||||
A_CMPNEQPD,
|
||||
A_CMPNEQSD,
|
||||
A_CMPNLEPD,
|
||||
A_CMPNLESD,
|
||||
A_CMPNLTPD,
|
||||
@ -666,6 +667,7 @@ A_ROUNDPS,
|
||||
A_ROUNDPD,
|
||||
A_ROUNDSS,
|
||||
A_ROUNDSD,
|
||||
A_CRC32,
|
||||
A_PCMPESTRI,
|
||||
A_PCMPESTRM,
|
||||
A_PCMPISTRI,
|
||||
|
@ -522,6 +522,7 @@
|
||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||
(Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
|
||||
(Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
|
||||
(Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
|
||||
@ -666,6 +667,7 @@
|
||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||
(Ch: (Ch_Mop1, Ch_Rop2, Ch_None)),
|
||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user