(Hopefully) fix the handing of MMX instructions with prefixes
authorH. Peter Anvin <hpa@zytor.com>
Tue, 25 Dec 2007 23:18:12 +0000 (15:18 -0800)
committerH. Peter Anvin <hpa@zytor.com>
Tue, 25 Dec 2007 23:18:12 +0000 (15:18 -0800)
Mark MMX instructions with \323 (do not add REX.W) unless they involve
the integer instruction file.

Change SM -> SQ for MMX instructions.

Something not complete attached, so my understanding is
mmxreg,mmxrm needs SQ

Something like xmmreg,reg32 needs SD
xmmreg,xmmrm needs SO

insns.dat

index 01bf08d..4c76cdb 100644 (file)
--- a/insns.dat
+++ b/insns.dat
@@ -868,54 +868,54 @@ OUT               reg_dx,reg_eax          \321\1\xEF                      386
 OUTSB          void                    \1\x6E                          186
 OUTSD          void                    \321\1\x6F                      386
 OUTSW          void                    \320\1\x6F                      186
-PACKSSDW       mmxreg,mmxrm            \2\x0F\x6B\110                  PENT,MMX,SM
-PACKSSWB       mmxreg,mmxrm            \2\x0F\x63\110                  PENT,MMX,SM
-PACKUSWB       mmxreg,mmxrm            \2\x0F\x67\110                  PENT,MMX,SM
-PADDB          mmxreg,mmxrm            \2\x0F\xFC\110                  PENT,MMX,SM
-PADDD          mmxreg,mmxrm            \2\x0F\xFE\110                  PENT,MMX,SM
-PADDSB         mmxreg,mmxrm            \2\x0F\xEC\110                  PENT,MMX,SM
-PADDSIW                mmxreg,mmxrm            \2\x0F\x51\110                  PENT,MMX,SM,CYRIX
-PADDSW         mmxreg,mmxrm            \2\x0F\xED\110                  PENT,MMX,SM
-PADDUSB                mmxreg,mmxrm            \2\x0F\xDC\110                  PENT,MMX,SM
-PADDUSW                mmxreg,mmxrm            \2\x0F\xDD\110                  PENT,MMX,SM
-PADDW          mmxreg,mmxrm            \2\x0F\xFD\110                  PENT,MMX,SM
-PAND           mmxreg,mmxrm            \2\x0F\xDB\110                  PENT,MMX,SM
-PANDN          mmxreg,mmxrm            \2\x0F\xDF\110                  PENT,MMX,SM
+PACKSSDW       mmxreg,mmxrm            \2\x0F\x6B\110                  PENT,MMX,SQ
+PACKSSWB       mmxreg,mmxrm            \2\x0F\x63\110                  PENT,MMX,SQ
+PACKUSWB       mmxreg,mmxrm            \2\x0F\x67\110                  PENT,MMX,SQ
+PADDB          mmxreg,mmxrm            \2\x0F\xFC\110                  PENT,MMX,SQ
+PADDD          mmxreg,mmxrm            \2\x0F\xFE\110                  PENT,MMX,SQ
+PADDSB         mmxreg,mmxrm            \2\x0F\xEC\110                  PENT,MMX,SQ
+PADDSIW                mmxreg,mmxrm            \2\x0F\x51\110                  PENT,MMX,SQ,CYRIX
+PADDSW         mmxreg,mmxrm            \2\x0F\xED\110                  PENT,MMX,SQ
+PADDUSB                mmxreg,mmxrm            \2\x0F\xDC\110                  PENT,MMX,SQ
+PADDUSW                mmxreg,mmxrm            \2\x0F\xDD\110                  PENT,MMX,SQ
+PADDW          mmxreg,mmxrm            \2\x0F\xFD\110                  PENT,MMX,SQ
+PAND           mmxreg,mmxrm            \2\x0F\xDB\110                  PENT,MMX,SQ
+PANDN          mmxreg,mmxrm            \2\x0F\xDF\110                  PENT,MMX,SQ
 PAUSE          void                    \314\333\1\x90                  8086
-PAVEB          mmxreg,mmxrm            \2\x0F\x50\110                  PENT,MMX,SM,CYRIX
-PAVGUSB                mmxreg,mmxrm            \2\x0F\x0F\110\01\xBF           PENT,3DNOW,SM
-PCMPEQB                mmxreg,mmxrm            \2\x0F\x74\110                  PENT,MMX,SM
-PCMPEQD                mmxreg,mmxrm            \2\x0F\x76\110                  PENT,MMX,SM
-PCMPEQW                mmxreg,mmxrm            \2\x0F\x75\110                  PENT,MMX,SM
-PCMPGTB                mmxreg,mmxrm            \2\x0F\x64\110                  PENT,MMX,SM
-PCMPGTD                mmxreg,mmxrm            \2\x0F\x66\110                  PENT,MMX,SM
-PCMPGTW                mmxreg,mmxrm            \2\x0F\x65\110                  PENT,MMX,SM
+PAVEB          mmxreg,mmxrm            \2\x0F\x50\110                  PENT,MMX,SQ,CYRIX
+PAVGUSB                mmxreg,mmxrm            \2\x0F\x0F\110\01\xBF           PENT,3DNOW,SQ
+PCMPEQB                mmxreg,mmxrm            \2\x0F\x74\110                  PENT,MMX,SQ
+PCMPEQD                mmxreg,mmxrm            \2\x0F\x76\110                  PENT,MMX,SQ
+PCMPEQW                mmxreg,mmxrm            \2\x0F\x75\110                  PENT,MMX,SQ
+PCMPGTB                mmxreg,mmxrm            \2\x0F\x64\110                  PENT,MMX,SQ
+PCMPGTD                mmxreg,mmxrm            \2\x0F\x66\110                  PENT,MMX,SQ
+PCMPGTW                mmxreg,mmxrm            \2\x0F\x65\110                  PENT,MMX,SQ
 PDISTIB                mmxreg,mem              \2\x0F\x54\110                  PENT,MMX,SM,CYRIX
-PF2ID          mmxreg,mmxrm            \2\x0F\x0F\110\01\x1D           PENT,3DNOW,SM
-PFACC          mmxreg,mmxrm            \2\x0F\x0F\110\01\xAE           PENT,3DNOW,SM
-PFADD          mmxreg,mmxrm            \2\x0F\x0F\110\01\x9E           PENT,3DNOW,SM
-PFCMPEQ                mmxreg,mmxrm            \2\x0F\x0F\110\01\xB0           PENT,3DNOW,SM
-PFCMPGE                mmxreg,mmxrm            \2\x0F\x0F\110\01\x90           PENT,3DNOW,SM
-PFCMPGT                mmxreg,mmxrm            \2\x0F\x0F\110\01\xA0           PENT,3DNOW,SM
-PFMAX          mmxreg,mmxrm            \2\x0F\x0F\110\01\xA4           PENT,3DNOW,SM
-PFMIN          mmxreg,mmxrm            \2\x0F\x0F\110\01\x94           PENT,3DNOW,SM
-PFMUL          mmxreg,mmxrm            \2\x0F\x0F\110\01\xB4           PENT,3DNOW,SM
-PFRCP          mmxreg,mmxrm            \2\x0F\x0F\110\01\x96           PENT,3DNOW,SM
-PFRCPIT1       mmxreg,mmxrm            \2\x0F\x0F\110\01\xA6           PENT,3DNOW,SM
-PFRCPIT2       mmxreg,mmxrm            \2\x0F\x0F\110\01\xB6           PENT,3DNOW,SM
-PFRSQIT1       mmxreg,mmxrm            \2\x0F\x0F\110\01\xA7           PENT,3DNOW,SM
-PFRSQRT                mmxreg,mmxrm            \2\x0F\x0F\110\01\x97           PENT,3DNOW,SM
-PFSUB          mmxreg,mmxrm            \2\x0F\x0F\110\01\x9A           PENT,3DNOW,SM
-PFSUBR         mmxreg,mmxrm            \2\x0F\x0F\110\01\xAA           PENT,3DNOW,SM
-PI2FD          mmxreg,mmxrm            \2\x0F\x0F\110\01\x0D           PENT,3DNOW,SM
+PF2ID          mmxreg,mmxrm            \2\x0F\x0F\110\01\x1D           PENT,3DNOW,SQ
+PFACC          mmxreg,mmxrm            \2\x0F\x0F\110\01\xAE           PENT,3DNOW,SQ
+PFADD          mmxreg,mmxrm            \2\x0F\x0F\110\01\x9E           PENT,3DNOW,SQ
+PFCMPEQ                mmxreg,mmxrm            \2\x0F\x0F\110\01\xB0           PENT,3DNOW,SQ
+PFCMPGE                mmxreg,mmxrm            \2\x0F\x0F\110\01\x90           PENT,3DNOW,SQ
+PFCMPGT                mmxreg,mmxrm            \2\x0F\x0F\110\01\xA0           PENT,3DNOW,SQ
+PFMAX          mmxreg,mmxrm            \2\x0F\x0F\110\01\xA4           PENT,3DNOW,SQ
+PFMIN          mmxreg,mmxrm            \2\x0F\x0F\110\01\x94           PENT,3DNOW,SQ
+PFMUL          mmxreg,mmxrm            \2\x0F\x0F\110\01\xB4           PENT,3DNOW,SQ
+PFRCP          mmxreg,mmxrm            \2\x0F\x0F\110\01\x96           PENT,3DNOW,SQ
+PFRCPIT1       mmxreg,mmxrm            \2\x0F\x0F\110\01\xA6           PENT,3DNOW,SQ
+PFRCPIT2       mmxreg,mmxrm            \2\x0F\x0F\110\01\xB6           PENT,3DNOW,SQ
+PFRSQIT1       mmxreg,mmxrm            \2\x0F\x0F\110\01\xA7           PENT,3DNOW,SQ
+PFRSQRT                mmxreg,mmxrm            \2\x0F\x0F\110\01\x97           PENT,3DNOW,SQ
+PFSUB          mmxreg,mmxrm            \2\x0F\x0F\110\01\x9A           PENT,3DNOW,SQ
+PFSUBR         mmxreg,mmxrm            \2\x0F\x0F\110\01\xAA           PENT,3DNOW,SQ
+PI2FD          mmxreg,mmxrm            \2\x0F\x0F\110\01\x0D           PENT,3DNOW,SQ
 PMACHRIW       mmxreg,mem              \2\x0F\x5E\110                  PENT,MMX,SM,CYRIX
-PMADDWD                mmxreg,mmxrm            \2\x0F\xF5\110                  PENT,MMX,SM
-PMAGW          mmxreg,mmxrm            \2\x0F\x52\110                  PENT,MMX,SM,CYRIX
-PMULHRIW       mmxreg,mmxrm            \2\x0F\x5D\110                  PENT,MMX,SM,CYRIX
-PMULHRWA       mmxreg,mmxrm            \2\x0F\x0F\110\1\xB7            PENT,3DNOW,SM
-PMULHRWC       mmxreg,mmxrm            \2\x0F\x59\110                  PENT,MMX,SM,CYRIX
-PMULHW         mmxreg,mmxrm            \2\x0F\xE5\110                  PENT,MMX,SM
-PMULLW         mmxreg,mmxrm            \2\x0F\xD5\110                  PENT,MMX,SM
+PMADDWD                mmxreg,mmxrm            \2\x0F\xF5\110                  PENT,MMX,SQ
+PMAGW          mmxreg,mmxrm            \2\x0F\x52\110                  PENT,MMX,SQ,CYRIX
+PMULHRIW       mmxreg,mmxrm            \2\x0F\x5D\110                  PENT,MMX,SQ,CYRIX
+PMULHRWA       mmxreg,mmxrm            \2\x0F\x0F\110\1\xB7            PENT,3DNOW,SQ
+PMULHRWC       mmxreg,mmxrm            \2\x0F\x59\110                  PENT,MMX,SQ,CYRIX
+PMULHW         mmxreg,mmxrm            \2\x0F\xE5\110                  PENT,MMX,SQ
+PMULLW         mmxreg,mmxrm            \2\x0F\xD5\110                  PENT,MMX,SQ
 PMVGEZB                mmxreg,mem              \2\x0F\x5C\110                  PENT,MMX,SM,CYRIX
 PMVLZB         mmxreg,mem              \2\x0F\x5B\110                  PENT,MMX,SM,CYRIX
 PMVNZB         mmxreg,mem              \2\x0F\x5A\110                  PENT,MMX,SM,CYRIX
@@ -936,43 +936,43 @@ POPF              void                    \322\1\x9D                      8086
 POPFD          void                    \321\1\x9D                      386,NOLONG
 POPFQ          void                    \321\1\x9D                      X64
 POPFW          void                    \320\1\x9D                      8086
-POR            mmxreg,mmxrm            \2\x0F\xEB\110                  PENT,MMX,SM
+POR            mmxreg,mmxrm            \2\x0F\xEB\110                  PENT,MMX,SQ
 PREFETCH       mem                     \2\x0F\x0D\200                  PENT,3DNOW,SM
 PREFETCHW      mem                     \2\x0F\x0D\201                  PENT,3DNOW,SM
 PREFETCHNTA    mem                     \2\x0F\x18\200                  X64,AMD,SM
 PREFETCHT0     mem                     \2\x0F\x18\200                  X64,AMD,SM
 PREFETCHT1     mem                     \2\x0F\x18\201                  X64,AMD,SM
 PREFETCHT2     mem                     \2\x0F\x18\202                  X64,AMD,SM
-PSLLD          mmxreg,mmxrm            \2\x0F\xF2\110                  PENT,MMX,SM
+PSLLD          mmxreg,mmxrm            \2\x0F\xF2\110                  PENT,MMX,SQ
 PSLLD          mmxreg,imm              \2\x0F\x72\206\25               PENT,MMX
-PSLLQ          mmxreg,mmxrm            \2\x0F\xF3\110                  PENT,MMX,SM
+PSLLQ          mmxreg,mmxrm            \2\x0F\xF3\110                  PENT,MMX,SQ
 PSLLQ          mmxreg,imm              \2\x0F\x73\206\25               PENT,MMX
-PSLLW          mmxreg,mmxrm            \2\x0F\xF1\110                  PENT,MMX,SM
+PSLLW          mmxreg,mmxrm            \2\x0F\xF1\110                  PENT,MMX,SQ
 PSLLW          mmxreg,imm              \2\x0F\x71\206\25               PENT,MMX
-PSRAD          mmxreg,mmxrm            \2\x0F\xE2\110                  PENT,MMX,SM
+PSRAD          mmxreg,mmxrm            \2\x0F\xE2\110                  PENT,MMX,SQ
 PSRAD          mmxreg,imm              \2\x0F\x72\204\25               PENT,MMX
-PSRAW          mmxreg,mmxrm            \2\x0F\xE1\110                  PENT,MMX,SM
+PSRAW          mmxreg,mmxrm            \2\x0F\xE1\110                  PENT,MMX,SQ
 PSRAW          mmxreg,imm              \2\x0F\x71\204\25               PENT,MMX
-PSRLD          mmxreg,mmxrm            \2\x0F\xD2\110                  PENT,MMX,SM
+PSRLD          mmxreg,mmxrm            \2\x0F\xD2\110                  PENT,MMX,SQ
 PSRLD          mmxreg,imm              \2\x0F\x72\202\25               PENT,MMX
-PSRLQ          mmxreg,mmxrm            \2\x0F\xD3\110                  PENT,MMX,SM
+PSRLQ          mmxreg,mmxrm            \2\x0F\xD3\110                  PENT,MMX,SQ
 PSRLQ          mmxreg,imm              \2\x0F\x73\202\25               PENT,MMX
-PSRLW          mmxreg,mmxrm            \2\x0F\xD1\110                  PENT,MMX,SM
+PSRLW          mmxreg,mmxrm            \2\x0F\xD1\110                  PENT,MMX,SQ
 PSRLW          mmxreg,imm              \2\x0F\x71\202\25               PENT,MMX
-PSUBB          mmxreg,mmxrm            \2\x0F\xF8\110                  PENT,MMX,SM
-PSUBD          mmxreg,mmxrm            \2\x0F\xFA\110                  PENT,MMX,SM
-PSUBSB         mmxreg,mmxrm            \2\x0F\xE8\110                  PENT,MMX,SM
-PSUBSIW                mmxreg,mmxrm            \2\x0F\x55\110                  PENT,MMX,SM,CYRIX
-PSUBSW         mmxreg,mmxrm            \2\x0F\xE9\110                  PENT,MMX,SM
-PSUBUSB                mmxreg,mmxrm            \2\x0F\xD8\110                  PENT,MMX,SM
-PSUBUSW                mmxreg,mmxrm            \2\x0F\xD9\110                  PENT,MMX,SM
-PSUBW          mmxreg,mmxrm            \2\x0F\xF9\110                  PENT,MMX,SM
-PUNPCKHBW      mmxreg,mmxrm            \2\x0F\x68\110                  PENT,MMX,SM
-PUNPCKHDQ      mmxreg,mmxrm            \2\x0F\x6A\110                  PENT,MMX,SM
-PUNPCKHWD      mmxreg,mmxrm            \2\x0F\x69\110                  PENT,MMX,SM
-PUNPCKLBW      mmxreg,mmxrm            \2\x0F\x60\110                  PENT,MMX,SM
-PUNPCKLDQ      mmxreg,mmxrm            \2\x0F\x62\110                  PENT,MMX,SM
-PUNPCKLWD      mmxreg,mmxrm            \2\x0F\x61\110                  PENT,MMX,SM
+PSUBB          mmxreg,mmxrm            \2\x0F\xF8\110                  PENT,MMX,SQ
+PSUBD          mmxreg,mmxrm            \2\x0F\xFA\110                  PENT,MMX,SQ
+PSUBSB         mmxreg,mmxrm            \2\x0F\xE8\110                  PENT,MMX,SQ
+PSUBSIW                mmxreg,mmxrm            \2\x0F\x55\110                  PENT,MMX,SQ,CYRIX
+PSUBSW         mmxreg,mmxrm            \2\x0F\xE9\110                  PENT,MMX,SQ
+PSUBUSB                mmxreg,mmxrm            \2\x0F\xD8\110                  PENT,MMX,SQ
+PSUBUSW                mmxreg,mmxrm            \2\x0F\xD9\110                  PENT,MMX,SQ
+PSUBW          mmxreg,mmxrm            \2\x0F\xF9\110                  PENT,MMX,SQ
+PUNPCKHBW      mmxreg,mmxrm            \2\x0F\x68\110                  PENT,MMX,SQ
+PUNPCKHDQ      mmxreg,mmxrm            \2\x0F\x6A\110                  PENT,MMX,SQ
+PUNPCKHWD      mmxreg,mmxrm            \2\x0F\x69\110                  PENT,MMX,SQ
+PUNPCKLBW      mmxreg,mmxrm            \2\x0F\x60\110                  PENT,MMX,SQ
+PUNPCKLDQ      mmxreg,mmxrm            \2\x0F\x62\110                  PENT,MMX,SQ
+PUNPCKLWD      mmxreg,mmxrm            \2\x0F\x61\110                  PENT,MMX,SQ
 PUSH           reg16                   \320\10\x50                     8086
 PUSH           reg32                   \321\10\x50                     386,NOLONG
 PUSH           reg64                   \323\10\x50                     X64
@@ -995,7 +995,7 @@ PUSHF               void                    \322\1\x9C                      8086
 PUSHFD         void                    \321\1\x9C                      386,NOLONG
 PUSHFQ         void                    \321\1\x9C                      X64
 PUSHFW         void                    \320\1\x9C                      8086
-PXOR           mmxreg,mmxrm            \2\x0F\xEF\110                  PENT,MMX,SM
+PXOR           mmxreg,mmxrm            \2\x0F\xEF\110                  PENT,MMX,SQ
 RCL            rm8,unity               \1\xD0\202                      8086
 RCL            rm8,reg_cl              \1\xD2\202                      8086
 RCL            rm8,imm                 \1\xC0\202\25                   186,SB
@@ -1485,21 +1485,21 @@ PINSRW          mmxreg,reg16,imm        \2\x0F\xC4\110\26               KATMAI,MMX,SB,AR2
 PINSRW         mmxreg,reg32,imm        \2\x0F\xC4\110\26               KATMAI,MMX,SB,AR2,ND
 PINSRW         mmxreg,mem,imm          \2\x0F\xC4\110\26               KATMAI,MMX,SB,AR2
 PINSRW         mmxreg,mem16,imm        \2\x0F\xC4\110\26               KATMAI,MMX,SB,AR2,ND
-PMAXSW         mmxreg,mmxrm            \2\x0F\xEE\110                  KATMAI,MMX,SM
-PMAXUB         mmxreg,mmxrm            \2\x0F\xDE\110                  KATMAI,MMX,SM
-PMINSW         mmxreg,mmxrm            \2\x0F\xEA\110                  KATMAI,MMX,SM
-PMINUB         mmxreg,mmxrm            \2\x0F\xDA\110                  KATMAI,MMX,SM
+PMAXSW         mmxreg,mmxrm            \2\x0F\xEE\110                  KATMAI,MMX,SQ
+PMAXUB         mmxreg,mmxrm            \2\x0F\xDE\110                  KATMAI,MMX,SQ
+PMINSW         mmxreg,mmxrm            \2\x0F\xEA\110                  KATMAI,MMX,SQ
+PMINUB         mmxreg,mmxrm            \2\x0F\xDA\110                  KATMAI,MMX,SQ
 PMOVMSKB       reg32,mmxreg            \2\x0F\xD7\110                  KATMAI,MMX
-PMULHUW                mmxreg,mmxrm            \2\x0F\xE4\110                  KATMAI,MMX,SM
-PSADBW         mmxreg,mmxrm            \2\x0F\xF6\110                  KATMAI,MMX,SM
+PMULHUW                mmxreg,mmxrm            \2\x0F\xE4\110                  KATMAI,MMX,SQ
+PSADBW         mmxreg,mmxrm            \2\x0F\xF6\110                  KATMAI,MMX,SQ
 PSHUFW         mmxreg,mmxrm,imm        \2\x0F\x70\110\22               KATMAI,MMX,SM2,SB,AR2
 
 ; AMD Enhanced 3DNow! (Athlon) instructions
-PF2IW          mmxreg,mmxrm            \2\x0F\x0F\110\01\x1C           PENT,3DNOW,SM
-PFNACC         mmxreg,mmxrm            \2\x0F\x0F\110\01\x8A           PENT,3DNOW,SM
-PFPNACC                mmxreg,mmxrm            \2\x0F\x0F\110\01\x8E           PENT,3DNOW,SM
-PI2FW          mmxreg,mmxrm            \2\x0F\x0F\110\01\x0C           PENT,3DNOW,SM
-PSWAPD         mmxreg,mmxrm            \2\x0F\x0F\110\01\xBB           PENT,3DNOW,SM
+PF2IW          mmxreg,mmxrm            \2\x0F\x0F\110\01\x1C           PENT,3DNOW,SQ
+PFNACC         mmxreg,mmxrm            \2\x0F\x0F\110\01\x8A           PENT,3DNOW,SQ
+PFPNACC                mmxreg,mmxrm            \2\x0F\x0F\110\01\x8E           PENT,3DNOW,SQ
+PI2FW          mmxreg,mmxrm            \2\x0F\x0F\110\01\x0C           PENT,3DNOW,SQ
+PSWAPD         mmxreg,mmxrm            \2\x0F\x0F\110\01\xBB           PENT,3DNOW,SQ
 
 ; Willamette SSE2 Cacheability Instructions
 MASKMOVDQU     xmmreg,xmmreg           \366\2\x0F\xF7\110              WILLAMETTE,SSE2