소스 검색

* x86 instruction table updated to nasm 0.98.37:
- sse3 aka prescott support
- small fixes

florian 22 년 전
부모
커밋
f495796796

+ 16 - 2
compiler/i386/i386att.inc

@@ -1,4 +1,4 @@
-{ don't edit, this file is generated from i386ins.dat }
+{ don't edit, this file is generated from x86ins.dat }
 (
 'none',
 'aaa',
@@ -83,6 +83,7 @@
 'finit',
 'fist',
 'fistp',
+'fisttp',
 'fisub',
 'fisubr',
 'fld',
@@ -191,6 +192,7 @@
 'lsl',
 'lss',
 'ltr',
+'monitor',
 'mov',
 'movd',
 'movq',
@@ -200,6 +202,7 @@
 'movs',
 'movz',
 'mul',
+'mwait',
 'neg',
 'nop',
 'not',
@@ -375,6 +378,7 @@
 'xlat',
 'xlatb',
 'xor',
+'xstore',
 'cmov',
 'j',
 'set',
@@ -546,5 +550,15 @@
 'ucomisd',
 'unpckhpd',
 'unpcklpd',
-'xorpd'
+'xorpd',
+'addsubpd',
+'addsubps',
+'haddpd',
+'haddps',
+'hsubpd',
+'hsubps',
+'lddqu',
+'movddup',
+'movshdup',
+'movsldup'
 );

+ 15 - 1
compiler/i386/i386atts.inc

@@ -1,4 +1,4 @@
-{ don't edit, this file is generated from i386ins.dat }
+{ don't edit, this file is generated from x86ins.dat }
 (
 attsufNONE,
 attsufNONE,
@@ -83,6 +83,7 @@ attsufNONE,
 attsufNONE,
 attsufFPUint,
 attsufFPUint,
+attsufNONE,
 attsufFPUint,
 attsufFPUint,
 attsufFPU,
@@ -191,6 +192,7 @@ attsufNONE,
 attsufINT,
 attsufINT,
 attsufINT,
+attsufNONE,
 attsufINT,
 attsufNONE,
 attsufNONE,
@@ -200,6 +202,7 @@ attsufNONE,
 attsufINT,
 attsufINT,
 attsufINT,
+attsufNONE,
 attsufINT,
 attsufNONE,
 attsufINT,
@@ -375,6 +378,7 @@ attsufINT,
 attsufNONE,
 attsufNONE,
 attsufINT,
+attsufNONE,
 attsufINT,
 attsufNONE,
 attsufINT,
@@ -546,5 +550,15 @@ attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
 attsufNONE
 );

+ 16 - 2
compiler/i386/i386int.inc

@@ -1,4 +1,4 @@
-{ don't edit, this file is generated from i386ins.dat }
+{ don't edit, this file is generated from x86ins.dat }
 (
 'none',
 'aaa',
@@ -83,6 +83,7 @@
 'finit',
 'fist',
 'fistp',
+'fisttp',
 'fisub',
 'fisubr',
 'fld',
@@ -191,6 +192,7 @@
 'lsl',
 'lss',
 'ltr',
+'monitor',
 'mov',
 'movd',
 'movq',
@@ -200,6 +202,7 @@
 'movsx',
 'movzx',
 'mul',
+'mwait',
 'neg',
 'nop',
 'not',
@@ -375,6 +378,7 @@
 'xlat',
 'xlatb',
 'xor',
+'xstore',
 'cmov',
 'j',
 'set',
@@ -546,5 +550,15 @@
 'ucomisd',
 'unpckhpd',
 'unpcklpd',
-'xorpd'
+'xorpd',
+'addsubpd',
+'addsubps',
+'haddpd',
+'haddps',
+'hsubpd',
+'hsubps',
+'lddqu',
+'movddup',
+'movshdup',
+'movsldup'
 );

+ 2 - 2
compiler/i386/i386nop.inc

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

+ 16 - 2
compiler/i386/i386op.inc

@@ -1,4 +1,4 @@
-{ don't edit, this file is generated from i386ins.dat }
+{ don't edit, this file is generated from x86ins.dat }
 (
 A_NONE,
 A_AAA,
@@ -83,6 +83,7 @@ A_FINCSTP,
 A_FINIT,
 A_FIST,
 A_FISTP,
+A_FISTTP,
 A_FISUB,
 A_FISUBR,
 A_FLD,
@@ -191,6 +192,7 @@ A_LOOPZ,
 A_LSL,
 A_LSS,
 A_LTR,
+A_MONITOR,
 A_MOV,
 A_MOVD,
 A_MOVQ,
@@ -200,6 +202,7 @@ A_MOVSW,
 A_MOVSX,
 A_MOVZX,
 A_MUL,
+A_MWAIT,
 A_NEG,
 A_NOP,
 A_NOT,
@@ -375,6 +378,7 @@ A_XCHG,
 A_XLAT,
 A_XLATB,
 A_XOR,
+A_XSTORE,
 A_CMOVcc,
 A_Jcc,
 A_SETcc,
@@ -546,5 +550,15 @@ A_SUBSD,
 A_UCOMISD,
 A_UNPCKHPD,
 A_UNPCKLPD,
-A_XORPD
+A_XORPD,
+A_ADDSUBPD,
+A_ADDSUBPS,
+A_HADDPD,
+A_HADDPS,
+A_HSUBPD,
+A_HSUBPS,
+A_LDDQU,
+A_MOVDDUP,
+A_MOVSHDUP,
+A_MOVSLDUP
 );

+ 15 - 1
compiler/i386/i386prop.inc

@@ -1,4 +1,4 @@
-{ don't edit, this file is generated from i386ins.dat }
+{ don't edit, this file is generated from x86ins.dat }
 (
 (Ch: (Ch_None, Ch_None, Ch_None)),
 (Ch: (Ch_MEAX, Ch_WFlags, Ch_None)),
@@ -83,6 +83,7 @@
 (Ch: (Ch_FPU, Ch_None, Ch_None)),
 (Ch: (Ch_Wop1, Ch_None, Ch_None)),
 (Ch: (Ch_Wop1, Ch_None, Ch_None)),
+(Ch: (Ch_Wop1, Ch_None, Ch_None)),
 (Ch: (Ch_FPU, Ch_ROp1, Ch_None)),
 (Ch: (Ch_FPU, Ch_ROp1, Ch_None)),
 (Ch: (Ch_Rop1, Ch_FPU, Ch_None)),
@@ -191,6 +192,7 @@
 (Ch: (Ch_Wop2, Ch_WFlags, Ch_None)),
 (Ch: (Ch_Wop2, Ch_ROP1, Ch_None)),
 (Ch: (Ch_None, Ch_None, Ch_None)),
+(Ch: (Ch_None, Ch_None, Ch_None)),
 (Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
 (Ch: (Ch_Rop1, Ch_Wop2, Ch_None)),
 (Ch: (Ch_Rop1, Ch_Wop2, Ch_None)),
@@ -200,6 +202,7 @@
 (Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
 (Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
 (Ch: (Ch_RWEAX, Ch_WEDX, Ch_WFlags)),
+(Ch: (Ch_None, Ch_None, Ch_None)),
 (Ch: (Ch_Mop1, Ch_None, Ch_None)),
 (Ch: (Ch_None, Ch_None, Ch_None)),
 (Ch: (Ch_Mop1, Ch_WFlags, Ch_None)),
@@ -375,6 +378,7 @@
 (Ch: (Ch_WEAX, Ch_REBX, Ch_None)),
 (Ch: (Ch_WEAX, Ch_REBX, Ch_None)),
 (Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
+(Ch: void                  \3\x0F\xA7\xC0                  P6,CYRIX),
 (Ch: (Ch_ROp1, Ch_WOp2, Ch_RFLAGS)),
 (Ch: (Ch_None, Ch_None, Ch_None)),
 (Ch: (Ch_RFLAGS, Ch_WOp1, Ch_None)),
@@ -546,5 +550,15 @@
 (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_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_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_All, Ch_None, Ch_None)),
 (Ch: (Ch_All, Ch_None, Ch_None))
 );

+ 201 - 19
compiler/i386/i386tab.inc

@@ -1,4 +1,4 @@
-{ don't edit, this file is generated from i386ins.dat }
+{ don't edit, this file is generated from x86ins.dat }
 (
   (
     opcode  : A_NONE;
@@ -2156,6 +2156,27 @@
     code    : #192#1#223#135;
     flags   : if_8086 or if_fpu
   ),
+  (
+    opcode  : A_FISTTP;
+    ops     : 1;
+    optypes : (ot_memory or ot_bits32,ot_none,ot_none);
+    code    : #192#1#221#129;
+    flags   : if_prescott or if_fpu
+  ),
+  (
+    opcode  : A_FISTTP;
+    ops     : 1;
+    optypes : (ot_memory or ot_bits16,ot_none,ot_none);
+    code    : #192#1#219#129;
+    flags   : if_prescott or if_fpu
+  ),
+  (
+    opcode  : A_FISTTP;
+    ops     : 1;
+    optypes : (ot_memory or ot_bits64,ot_none,ot_none);
+    code    : #192#1#223#129;
+    flags   : if_prescott or if_fpu
+  ),
   (
     opcode  : A_FISUB;
     ops     : 1;
@@ -3990,6 +4011,20 @@
     code    : #192#1#15#15#131;
     flags   : if_286 or if_prot or if_priv
   ),
+  (
+    opcode  : A_MONITOR;
+    ops     : 0;
+    optypes : (ot_none,ot_none,ot_none);
+    code    : #3#15#1#200;
+    flags   : if_prescott
+  ),
+  (
+    opcode  : A_MONITOR;
+    ops     : 3;
+    optypes : (ot_reg_eax,ot_reg_ecx,ot_reg_edx);
+    code    : #3#15#1#200;
+    flags   : if_prescott
+  ),
   (
     opcode  : A_MOV;
     ops     : 2;
@@ -4578,6 +4613,20 @@
     code    : #209#192#1#247#132;
     flags   : if_386
   ),
+  (
+    opcode  : A_MWAIT;
+    ops     : 0;
+    optypes : (ot_none,ot_none,ot_none);
+    code    : #3#15#1#201;
+    flags   : if_prescott
+  ),
+  (
+    opcode  : A_MWAIT;
+    ops     : 2;
+    optypes : (ot_reg_eax,ot_reg_ecx,ot_none);
+    code    : #3#15#1#201;
+    flags   : if_prescott
+  ),
   (
     opcode  : A_NEG;
     ops     : 1;
@@ -7816,9 +7865,16 @@
     opcode  : A_SLDT;
     ops     : 1;
     optypes : (ot_reg16,ot_none,ot_none);
-    code    : #192#1#15#15#128;
+    code    : #208#1#15#15#128;
     flags   : if_286
   ),
+  (
+    opcode  : A_SLDT;
+    ops     : 1;
+    optypes : (ot_reg32,ot_none,ot_none);
+    code    : #209#1#15#15#128;
+    flags   : if_386
+  ),
   (
     opcode  : A_SMI;
     ops     : 0;
@@ -7858,9 +7914,16 @@
     opcode  : A_SMSW;
     ops     : 1;
     optypes : (ot_reg16,ot_none,ot_none);
-    code    : #192#2#15#1#132;
+    code    : #208#2#15#1#132;
     flags   : if_286
   ),
+  (
+    opcode  : A_SMSW;
+    ops     : 1;
+    optypes : (ot_reg32,ot_none,ot_none);
+    code    : #209#2#15#1#132;
+    flags   : if_386
+  ),
   (
     opcode  : A_STC;
     ops     : 0;
@@ -8124,7 +8187,7 @@
     opcode  : A_SYSEXIT;
     ops     : 0;
     optypes : (ot_none,ot_none,ot_none);
-    code    : #2#15#54;
+    code    : #2#15#53;
     flags   : if_p6 or if_priv
   ),
   (
@@ -9401,13 +9464,6 @@
     code    : #192#2#15#23#65;
     flags   : if_katmai or if_sse
   ),
-  (
-    opcode  : A_MOVHPS;
-    ops     : 2;
-    optypes : (ot_xmmreg,ot_xmmreg,ot_none);
-    code    : #2#15#22#65;
-    flags   : if_katmai or if_sse
-  ),
   (
     opcode  : A_MOVLHPS;
     ops     : 2;
@@ -9429,13 +9485,6 @@
     code    : #192#2#15#19#65;
     flags   : if_katmai or if_sse
   ),
-  (
-    opcode  : A_MOVLPS;
-    ops     : 2;
-    optypes : (ot_xmmreg,ot_xmmreg,ot_none);
-    code    : #2#15#18#65;
-    flags   : if_katmai or if_sse
-  ),
   (
     opcode  : A_MOVHLPS;
     ops     : 2;
@@ -11337,7 +11386,7 @@
     opcode  : A_UNPCKHPD;
     ops     : 2;
     optypes : (ot_memory,ot_xmmreg,ot_none);
-    code    : #192#3#102#15#21#65;
+    code    : #192#3#102#15#21#72;
     flags   : if_willamette or if_sse2 or if_sm
   ),
   (
@@ -11367,5 +11416,138 @@
     optypes : (ot_xmmreg,ot_memory,ot_none);
     code    : #193#3#102#15#87#72;
     flags   : if_willamette or if_sse2 or if_sm
+  ),
+  (
+    opcode  : A_ADDSUBPD;
+    ops     : 2;
+    optypes : (ot_xmmreg,ot_memory,ot_none);
+    code    : #193#3#102#15#208#72;
+    flags   : if_prescott or if_sse3 or if_sm
+  ),
+  (
+    opcode  : A_ADDSUBPD;
+    ops     : 2;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_none);
+    code    : #3#102#15#208#72;
+    flags   : if_prescott or if_sse3
+  ),
+  (
+    opcode  : A_ADDSUBPS;
+    ops     : 2;
+    optypes : (ot_xmmreg,ot_memory,ot_none);
+    code    : #193#3#242#15#208#72;
+    flags   : if_prescott or if_sse3 or if_sm
+  ),
+  (
+    opcode  : A_ADDSUBPS;
+    ops     : 2;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_none);
+    code    : #3#242#15#208#72;
+    flags   : if_prescott or if_sse3
+  ),
+  (
+    opcode  : A_HADDPD;
+    ops     : 2;
+    optypes : (ot_xmmreg,ot_memory,ot_none);
+    code    : #193#3#102#15#124#72;
+    flags   : if_prescott or if_sse3 or if_sm
+  ),
+  (
+    opcode  : A_HADDPD;
+    ops     : 2;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_none);
+    code    : #3#102#15#124#72;
+    flags   : if_prescott or if_sse3
+  ),
+  (
+    opcode  : A_HADDPS;
+    ops     : 2;
+    optypes : (ot_xmmreg,ot_memory,ot_none);
+    code    : #193#3#242#15#124#72;
+    flags   : if_prescott or if_sse3 or if_sm
+  ),
+  (
+    opcode  : A_HADDPS;
+    ops     : 2;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_none);
+    code    : #3#242#15#124#72;
+    flags   : if_prescott or if_sse3
+  ),
+  (
+    opcode  : A_HSUBPD;
+    ops     : 2;
+    optypes : (ot_xmmreg,ot_memory,ot_none);
+    code    : #193#3#102#15#125#72;
+    flags   : if_prescott or if_sse3 or if_sm
+  ),
+  (
+    opcode  : A_HSUBPD;
+    ops     : 2;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_none);
+    code    : #3#102#15#125#72;
+    flags   : if_prescott or if_sse3
+  ),
+  (
+    opcode  : A_HSUBPS;
+    ops     : 2;
+    optypes : (ot_xmmreg,ot_memory,ot_none);
+    code    : #193#3#242#15#125#72;
+    flags   : if_prescott or if_sse3 or if_sm
+  ),
+  (
+    opcode  : A_HSUBPS;
+    ops     : 2;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_none);
+    code    : #3#242#15#125#72;
+    flags   : if_prescott or if_sse3
+  ),
+  (
+    opcode  : A_LDDQU;
+    ops     : 2;
+    optypes : (ot_xmmreg,ot_memory,ot_none);
+    code    : #3#242#15#240#72;
+    flags   : if_prescott or if_sse3
+  ),
+  (
+    opcode  : A_MOVDDUP;
+    ops     : 2;
+    optypes : (ot_xmmreg,ot_memory,ot_none);
+    code    : #193#3#242#15#18#72;
+    flags   : if_prescott or if_sse3
+  ),
+  (
+    opcode  : A_MOVDDUP;
+    ops     : 2;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_none);
+    code    : #3#242#15#18#72;
+    flags   : if_prescott or if_sse3
+  ),
+  (
+    opcode  : A_MOVSHDUP;
+    ops     : 2;
+    optypes : (ot_xmmreg,ot_memory,ot_none);
+    code    : #193#3#243#15#22#72;
+    flags   : if_prescott or if_sse3
+  ),
+  (
+    opcode  : A_MOVSHDUP;
+    ops     : 2;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_none);
+    code    : #3#243#15#22#72;
+    flags   : if_prescott or if_sse3
+  ),
+  (
+    opcode  : A_MOVSLDUP;
+    ops     : 2;
+    optypes : (ot_xmmreg,ot_memory,ot_none);
+    code    : #193#3#243#15#18#72;
+    flags   : if_prescott or if_sse3
+  ),
+  (
+    opcode  : A_MOVSLDUP;
+    ops     : 2;
+    optypes : (ot_xmmreg,ot_xmmreg,ot_none);
+    code    : #3#243#15#18#72;
+    flags   : if_prescott or if_sse3
   )
 );

+ 7 - 2
compiler/utils/mkx86ins.pp

@@ -220,7 +220,7 @@ begin
    insns:=0;
    maxinfolen:=0;
    { open dat file }
-   assign(infile,'i386ins.dat');
+   assign(infile,'..\x86\x86ins.dat');
    reset(infile);
    { create inc files }
    openinc(insfile,'i386tab.inc');
@@ -429,7 +429,12 @@ begin
 end.
 {
   $Log$
-  Revision 1.2  2003-09-03 15:55:02  peter
+  Revision 1.3  2003-09-09 12:54:45  florian
+    * x86 instruction table updated to nasm 0.98.37:
+        - sse3 aka prescott support
+        - small fixes
+
+  Revision 1.2  2003/09/03 15:55:02  peter
     * NEWRA branch merged
 
   Revision 1.1.2.1  2003/08/27 19:13:10  peter

+ 11 - 1
compiler/x86/aasmcpu.pas

@@ -103,6 +103,7 @@ interface
       OT_REG_RCX   = $00221008;
 {$endif x86_64}
       OT_REG_DX    = $00241002;
+      OT_REG_EDX   = $00241004;
 
       OT_REG_SREG  = $00081002;  { any segment register  }
       OT_REG_CS    = $01081002;  { CS  }
@@ -263,6 +264,8 @@ implementation
        IF_SSE    = $00010000;
        { SSE2 instructions  }
        IF_SSE2   = $00020000;
+       { SSE3 instructions  }
+       IF_SSE3   = $00040000;
        { the mask for processor types  }
        {IF_PMASK  = longint($FF000000);}
        { the mask for disassembly "prefer"  }
@@ -277,6 +280,8 @@ implementation
        IF_KATMAI = $07000000;  { Katmai instructions  }
        { Willamette instructions }
        IF_WILLAMETTE = $08000000;
+       { Prescott instructions }
+       IF_PRESCOTT = $09000000;
        IF_CYRIX  = $10000000;  { Cyrix-specific instruction  }
        IF_AMD    = $20000000;  { AMD-specific instruction  }
        { added flags }
@@ -2228,7 +2233,12 @@ implementation
 end.
 {
   $Log$
-  Revision 1.18  2003-09-07 22:09:35  peter
+  Revision 1.19  2003-09-09 12:54:45  florian
+    * x86 instruction table updated to nasm 0.98.37:
+        - sse3 aka prescott support
+        - small fixes
+
+  Revision 1.18  2003/09/07 22:09:35  peter
     * preparations for different default calling conventions
     * various RA fixes
 

+ 85 - 7
compiler/x86/x86ins.dat

@@ -570,6 +570,12 @@ mem32                 \300\1\xDB\203                  8086,FPU
 mem16                 \320\300\1\xDF\203              8086,FPU
 mem64                 \300\1\xDF\207                  8086,FPU
 
+[FISTTP]
+(Ch_Wop1, Ch_None, Ch_None)
+mem32                 \300\1\xDD\201                  PRESCOTT,FPU
+mem16                 \300\1\xDB\201                  PRESCOTT,FPU
+mem64                 \300\1\xDF\201                  PRESCOTT,FPU
+
 [FISUB,fisubR]
 (Ch_FPU, Ch_ROp1, Ch_None)
 mem16                 \300\1\xDE\204                  8086,FPU
@@ -1157,6 +1163,11 @@ mem                   \300\1\x0F\17\203               286,PROT,PRIV
 mem16                 \300\1\x0F\17\203               286,PROT,PRIV
 reg16                 \300\1\x0F\17\203               286,PROT,PRIV
 
+[MONITOR]
+(Ch_None, Ch_None, Ch_None)
+void		      \3\x0F\x01\xC8		      PRESCOTT
+reg_eax,reg_ecx,reg_edx      \3\x0F\x01\xC8           PRESCOTT,ND
+
 [MOV,movX]
 (Ch_Wop2, Ch_Rop1, Ch_None)
 mem,reg_cs            \320\300\1\x8C\201              8086,SM
@@ -1269,6 +1280,12 @@ rm8                   \300\1\xF6\204                  8086
 rm16                  \320\300\1\xF7\204              8086
 rm32                  \321\300\1\xF7\204              386
 
+[MWAIT]
+(Ch_None, Ch_None, Ch_None)
+void                  \3\x0F\x01\xC9                  PRESCOTT
+reg_eax,reg_ecx       \3\x0F\x01\xC9		      PRESCOTT,ND
+
+
 [NEG,negX]
 (Ch_Mop1, Ch_None, Ch_None)
 rm8                   \300\1\xF6\203                  8086
@@ -2150,7 +2167,8 @@ mem                   \300\2\x0F\x01\201              286
 (Ch_Wop1, Ch_None, Ch_None)
 mem                   \300\1\x0F\17\200               286
 mem16                 \300\1\x0F\17\200               286
-reg16                 \300\1\x0F\17\200               286
+reg16                 \320\1\x0F\17\200               286
+reg32                 \321\1\x0F\17\200               386
 
 [SMI]
 (Ch_All, Ch_None, Ch_None)
@@ -2168,7 +2186,8 @@ void                  \2\x0F\x7E                      486,CYRIX,ND
 (Ch_Wop1, Ch_None, Ch_None)
 mem                   \300\2\x0F\x01\204              286
 mem16                 \300\2\x0F\x01\204              286
-reg16                 \300\2\x0F\x01\204              286
+reg16                 \320\2\x0F\x01\204              286
+reg32                 \321\2\x0F\x01\204              386
 
 [STC]
 (Ch_WFlags, Ch_None, Ch_None)
@@ -2248,7 +2267,7 @@ void                  \2\x0F\x34                      P6
 
 [SYSEXIT]
 (Ch_All, Ch_None, Ch_None)
-void                  \2\x0F\x36                      P6,PRIV
+void                  \2\x0F\x35                      P6,PRIV
 
 [SYSRET]
 (Ch_All, Ch_None, Ch_None)
@@ -2395,6 +2414,10 @@ mem,imm8              \300\1\x80\206\21               8086,SM
 mem,imm16             \320\300\1\x81\206\31           8086,SM
 mem,imm32             \321\300\1\x81\206\41           386,SM
 
+[XSTORE]
+void                  \3\x0F\xA7\xC0                  P6,CYRIX
+
+
 [CMOVcc,cmovCCX]
 (Ch_ROp1, Ch_WOp2, Ch_RFLAGS)
 reg16,mem             \320\301\1\x0F\330\x40\110      P6,SM
@@ -2614,7 +2637,6 @@ xmmreg,xmmreg         \2\x0F\x29\101                  KATMAI,SSE
 (Ch_All, Ch_None, Ch_None)
 xmmreg,mem            \301\2\x0F\x16\110              KATMAI,SSE
 mem,xmmreg            \300\2\x0F\x17\101              KATMAI,SSE
-xmmreg,xmmreg         \2\x0F\x16\101                  KATMAI,SSE,ND
 
 [MOVLHPS]
 (Ch_All, Ch_None, Ch_None)
@@ -2624,7 +2646,6 @@ xmmreg,xmmreg         \2\x0F\x16\110                  KATMAI,SSE
 (Ch_All, Ch_None, Ch_None)
 xmmreg,mem            \301\2\x0F\x12\110              KATMAI,SSE
 mem,xmmreg            \300\2\x0F\x13\101              KATMAI,SSE
-xmmreg,xmmreg         \2\x0F\x12\101                  KATMAI,SSE,ND
 
 [MOVHLPS]
 (Ch_All, Ch_None, Ch_None)
@@ -3306,7 +3327,7 @@ xmmreg,mem              \301\3\x66\x0F\x2E\110          WILLAMETTE,SSE2
 [UNPCKHPD]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg           \3\x66\x0F\x15\110              WILLAMETTE,SSE2
-mem,xmmreg              \300\3\x66\x0F\x15\101          WILLAMETTE,SSE2,SM
+mem,xmmreg              \300\3\x66\x0F\x15\110          WILLAMETTE,SSE2,SM
 
 [UNPCKLPD]
 (Ch_All, Ch_None, Ch_None)
@@ -3318,9 +3339,66 @@ xmmreg,mem              \301\3\x66\x0F\x14\110          WILLAMETTE,SSE2,SM
 xmmreg,xmmreg           \3\x66\x0F\x57\110              WILLAMETTE,SSE2
 xmmreg,mem              \301\3\x66\x0F\x57\110          WILLAMETTE,SSE2,SM
 
+;
+; Prescott New Instructions (SSE3)
+;
+[ADDSUBPD]
+(Ch_All, Ch_None, Ch_None)
+xmmreg,mem              \301\3\x66\x0F\xD0\110          PRESCOTT,SSE3,SM
+xmmreg,xmmreg           \3\x66\x0F\xD0\110              PRESCOTT,SSE3
+
+[ADDSUBPS]
+(Ch_All, Ch_None, Ch_None)
+xmmreg,mem		\301\3\xF2\x0F\xD0\110		PRESCOTT,SSE3,SM
+xmmreg,xmmreg           \3\xF2\x0F\xD0\110              PRESCOTT,SSE3
+
+[HADDPD]
+(Ch_All, Ch_None, Ch_None)
+xmmreg,mem              \301\3\x66\x0F\x7C\110          PRESCOTT,SSE3,SM
+xmmreg,xmmreg           \3\x66\x0F\x7C\110              PRESCOTT,SSE3
+
+[HADDPS]
+(Ch_All, Ch_None, Ch_None)
+xmmreg,mem		\301\3\xF2\x0F\x7C\110		PRESCOTT,SSE3,SM
+xmmreg,xmmreg           \3\xF2\x0F\x7C\110              PRESCOTT,SSE3
+
+[HSUBPD]
+(Ch_All, Ch_None, Ch_None)
+xmmreg,mem              \301\3\x66\x0F\x7D\110          PRESCOTT,SSE3,SM
+xmmreg,xmmreg           \3\x66\x0F\x7D\110              PRESCOTT,SSE3
+
+[HSUBPS]
+(Ch_All, Ch_None, Ch_None)
+xmmreg,mem		\301\3\xF2\x0F\x7D\110		PRESCOTT,SSE3,SM
+xmmreg,xmmreg           \3\xF2\x0F\x7D\110              PRESCOTT,SSE3
+
+[LDDQU]
+(Ch_All, Ch_None, Ch_None)
+xmmreg,mem		\3\xF2\x0F\xF0\110		PRESCOTT,SSE3
+
+[MOVDDUP]
+(Ch_All, Ch_None, Ch_None)
+xmmreg,mem		\301\3\xF2\x0F\x12\110		PRESCOTT,SSE3
+xmmreg,xmmreg           \3\xF2\x0F\x12\110              PRESCOTT,SSE3
+
+[MOVSHDUP]
+(Ch_All, Ch_None, Ch_None)
+xmmreg,mem		\301\3\xF3\x0F\x16\110		PRESCOTT,SSE3
+xmmreg,xmmreg		\3\xF3\x0F\x16\110		PRESCOTT,SSE3
+
+[MOVSLDUP]
+(Ch_All, Ch_None, Ch_None)
+xmmreg,mem		\301\3\xF3\x0F\x12\110		PRESCOTT,SSE3
+xmmreg,xmmreg           \3\xF3\x0F\x12\110              PRESCOTT,SSE3
+
 ;
 ; $Log$
-; Revision 1.2  2003-09-03 15:55:02  peter
+; Revision 1.3  2003-09-09 12:54:45  florian
+;   * x86 instruction table updated to nasm 0.98.37:
+;       - sse3 aka prescott support
+;       - small fixes
+;
+; Revision 1.2  2003/09/03 15:55:02  peter
 ;   * NEWRA branch merged
 ;
 ; Revision 1.1.2.1  2003/08/27 19:55:54  peter