-; $Id: instrs.dat,v 1.28 2001/07/05 09:30:04 peter Exp $
+; $Id: instrs.dat,v 1.29 2001/07/05 09:39:30 peter Exp $
; List of valid instruction/operand combinations
;
; Copyright (C) 2001 Peter Johnson
; KEY
;
; !Grp Operands OpSize Opcode EffAddr Imm CPU
-; Inst Operands OpSize Opcode EffAddr Imm CPU
+; Inst Operands OpSize Opcode EffAddr Imm CPU
; Inst!Grp Parameters CPU @0 CPU @1
;
; Groupings used throughout
; Move instructions
;
; opcode arbitrarily picked for next 3 (could be 8A/8B instead of 88/89).
-mov reg8,reg8 nil 88 $1r,$2 nil 8086
-mov reg16,reg16 16 89 $1r,$2 nil 8086
-mov reg32,reg32 32 89 $1r,$2 nil 386
-mov mem,reg8 nil 88 $1,$2 nil 8086
-mov mem8x,reg8 nil 88 $1,$2 nil 8086
-mov mem,reg16 16 89 $1,$2 nil 8086
-mov mem16x,reg16 16 89 $1,$2 nil 8086
-mov mem,reg32 32 89 $1,$2 nil 386
-mov mem32x,reg32 32 89 $1,$2 nil 386
-mov reg8,mem8 nil 8A $2,$1 nil 8086
-mov reg16,mem16 16 8B $2,$1 nil 8086
-mov reg32,mem32 32 8B $2,$1 nil 386
-mov mem,segreg nil 8C $1,$2 nil 8086
-mov reg16,segreg 16 8C $1r,$2 nil 8086
-mov mem16x,segreg 16 8C $1,$2 nil 8086
-mov reg32,segreg 32 8C $1r,$2 nil 386
-mov mem32x,segreg 32 8C $1,$2 nil 386
-mov segreg,mem nil 8E $2,$1 nil 8086
-mov segreg,rm16x nil 8E $2,$1 nil 8086
-mov segreg,rm32x nil 8E $2,$1 nil 386
+mov reg8,reg8 nil 88 $1r,$2 nil 8086
+mov reg16,reg16 16 89 $1r,$2 nil 8086
+mov reg32,reg32 32 89 $1r,$2 nil 386
+mov mem,reg8 nil 88 $1,$2 nil 8086
+mov mem8x,reg8 nil 88 $1,$2 nil 8086
+mov mem,reg16 16 89 $1,$2 nil 8086
+mov mem16x,reg16 16 89 $1,$2 nil 8086
+mov mem,reg32 32 89 $1,$2 nil 386
+mov mem32x,reg32 32 89 $1,$2 nil 386
+mov reg8,mem8 nil 8A $2,$1 nil 8086
+mov reg16,mem16 16 8B $2,$1 nil 8086
+mov reg32,mem32 32 8B $2,$1 nil 386
+mov mem,segreg nil 8C $1,$2 nil 8086
+mov reg16,segreg 16 8C $1r,$2 nil 8086
+mov mem16x,segreg 16 8C $1,$2 nil 8086
+mov reg32,segreg 32 8C $1r,$2 nil 386
+mov mem32x,segreg 32 8C $1,$2 nil 386
+mov segreg,mem nil 8E $2,$1 nil 8086
+mov segreg,rm16x nil 8E $2,$1 nil 8086
+mov segreg,rm32x nil 8E $2,$1 nil 386
;mov REG_AL,memoff8
;mov REG_AX,memoff16
;mov REG_EAX,memoff32
;mov memoff8,REG_AL
;mov memoff16,REG_AX
;mov memoff32,REG_EAX
-mov reg8,imm8 nil B0+$1 nil $2,8 8086
-mov reg16,imm16 16 B8+$1 nil $2,16 8086
-mov reg32,imm32 32 B8+$1 nil $2,32 386
-mov mem8x,imm8 nil C6 $1,0 $2,8 8086
-mov mem,imm8x nil C6 $1,0 $2,8 8086
-mov mem16x,imm16 16 C7 $1,0 $2,16 8086
-mov mem,imm16x 16 C7 $1,0 $2,16 8086
-mov mem32x,imm32 32 C7 $1,0 $2,32 8086
-mov mem,imm32x 32 C7 $1,0 $2,32 8086
-mov CRREG_NOTCR4,reg32 nil 0F,22 $2r,$1 nil 386,PRIV
-mov CR4,reg32 nil 0F,22 $2r,$1 nil P5,PRIV
-mov reg32,CRREG_NOTCR4 nil 0F,20 $1r,$2 nil 386,PRIV
-mov reg32,CR4 nil 0F,20 $1r,$2 nil P5,PRIV
-mov reg32,DRREG nil 0F,21 $1r,$2 nil 386,PRIV
-mov DRREG,reg32 nil 0F,23 $2r,$1 nil 386,PRIV
+mov reg8,imm8 nil B0+$1 nil $2,8 8086
+mov reg16,imm16 16 B8+$1 nil $2,16 8086
+mov reg32,imm32 32 B8+$1 nil $2,32 386
+mov mem8x,imm8 nil C6 $1,0 $2,8 8086
+mov mem,imm8x nil C6 $1,0 $2,8 8086
+mov mem16x,imm16 16 C7 $1,0 $2,16 8086
+mov mem,imm16x 16 C7 $1,0 $2,16 8086
+mov mem32x,imm32 32 C7 $1,0 $2,32 8086
+mov mem,imm32x 32 C7 $1,0 $2,32 8086
+mov CRREG_NOTCR4,reg32 nil 0F,22 $2r,$1 nil 386,PRIV
+mov CR4,reg32 nil 0F,22 $2r,$1 nil P5,PRIV
+mov reg32,CRREG_NOTCR4 nil 0F,20 $1r,$2 nil 386,PRIV
+mov reg32,CR4 nil 0F,20 $1r,$2 nil P5,PRIV
+mov reg32,DRREG nil 0F,21 $1r,$2 nil 386,PRIV
+mov DRREG,reg32 nil 0F,23 $2r,$1 nil 386,PRIV
;
; Move with sign/zero extend
;
;
; Push instructions
;
-push mem16x 16 FF $1,6 nil 8086
-push mem32x 32 FF $1,6 nil 386
-push reg16 16 50+$1 nil nil 8086
-push reg32 32 50+$1 nil nil 386
-push imm8x nil 6A nil $1,8 8086
-push imm16x 16 68 nil $1,16 8086
-push imm32x 32 68 nil $1,32 386
-push REG_CS nil 0E nil nil 8086
-push REG_SS nil 16 nil nil 8086
-push REG_DS nil 1E nil nil 8086
-push REG_ES nil 06 nil nil 8086
-push REG_FS nil 0F,A0 nil nil 386
-push REG_GS nil 0F,A8 nil nil 386
+push mem16x 16 FF $1,6 nil 8086
+push mem32x 32 FF $1,6 nil 386
+push reg16 16 50+$1 nil nil 8086
+push reg32 32 50+$1 nil nil 386
+push imm8x nil 6A nil $1,8 8086
+push imm16x 16 68 nil $1,16 8086
+push imm32x 32 68 nil $1,32 386
+push REG_CS nil 0E nil nil 8086
+push REG_SS nil 16 nil nil 8086
+push REG_DS nil 1E nil nil 8086
+push REG_ES nil 06 nil nil 8086
+push REG_FS nil 0F,A0 nil nil 386
+push REG_GS nil 0F,A8 nil nil 386
pusha!onebyte nil,60 186
pushad!onebyte 20,60 386
pushaw!onebyte 10,60 186
;
; Pop instructions
;
-pop mem16x 16 8F $1,0 nil 8086
-pop mem32x 32 8F $1,0 nil 386
-pop reg16 16 58+$1 nil nil 8086
-pop reg32 32 58+$1 nil nil 386
-pop REG_DS nil 1F nil nil 8086
-pop REG_ES nil 07 nil nil 8086
-pop REG_SS nil 17 nil nil 8086
-pop REG_FS nil 0F,A1 nil nil 386
-pop REG_GS nil 0F,A9 nil nil 386
+pop mem16x 16 8F $1,0 nil 8086
+pop mem32x 32 8F $1,0 nil 386
+pop reg16 16 58+$1 nil nil 8086
+pop reg32 32 58+$1 nil nil 386
+pop REG_DS nil 1F nil nil 8086
+pop REG_ES nil 07 nil nil 8086
+pop REG_SS nil 17 nil nil 8086
+pop REG_FS nil 0F,A1 nil nil 386
+pop REG_GS nil 0F,A9 nil nil 386
popa!onebyte nil,61 186
popad!onebyte 20,61 386
popaw!onebyte 10,61 186
; Exchange instructions
;
; arbitrary encoding, picked $1r,$2 instead of $2r,$1
-xchg reg8,reg8 nil 86 $1r,$2 nil 8086
-xchg mem,reg8 nil 86 $1,$2 nil 8086
-xchg mem8x,reg8 nil 86 $1,$2 nil 8086
-xchg reg8,mem8 nil 86 $2,$1 nil 8086
-xchg REG_AX,reg16 16 90+$2 nil nil 8086
-xchg reg16,REG_AX 16 90+$1 nil nil 8086
+xchg reg8,reg8 nil 86 $1r,$2 nil 8086
+xchg mem,reg8 nil 86 $1,$2 nil 8086
+xchg mem8x,reg8 nil 86 $1,$2 nil 8086
+xchg reg8,mem8 nil 86 $2,$1 nil 8086
+xchg REG_AX,reg16 16 90+$2 nil nil 8086
+xchg reg16,REG_AX 16 90+$1 nil nil 8086
; arbitrary encoding, picked $1r,$2 instead of $2r,$1
-xchg reg16,reg16 16 87 $1r,$2 nil 8086
-xchg mem,reg16 16 87 $1,$2 nil 8086
-xchg mem16x,reg16 16 87 $1,$2 nil 8086
-xchg reg16,mem16 16 87 $2,$1 nil 8086
-xchg REG_EAX,reg32 32 90+$2 nil nil 386
-xchg reg32,REG_EAX 32 90+$1 nil nil 386
+xchg reg16,reg16 16 87 $1r,$2 nil 8086
+xchg mem,reg16 16 87 $1,$2 nil 8086
+xchg mem16x,reg16 16 87 $1,$2 nil 8086
+xchg reg16,mem16 16 87 $2,$1 nil 8086
+xchg REG_EAX,reg32 32 90+$2 nil nil 386
+xchg reg32,REG_EAX 32 90+$1 nil nil 386
; arbitrary encoding, picked $1r,$2 instead of $2r,$1
-xchg reg32,reg32 32 87 $1r,$2 nil 386
-xchg mem,reg32 32 87 $1,$2 nil 386
-xchg mem32x,reg32 32 87 $1,$2 nil 386
-xchg reg32,mem32 32 87 $2,$1 nil 386
+xchg reg32,reg32 32 87 $1r,$2 nil 386
+xchg mem,reg32 32 87 $1,$2 nil 386
+xchg mem32x,reg32 32 87 $1,$2 nil 386
+xchg reg32,mem32 32 87 $2,$1 nil 386
;
; In/out from ports
;
-in REG_AL,imm8 nil E4 nil $2,8 8086
-in REG_AX,imm8 16 E5 nil $2,8 8086
-in REG_EAX,imm8 32 E5 nil $2,8 386
-in REG_AL,REG_DX nil EC nil nil 8086
-in REG_AX,REG_DX 16 ED nil nil 8086
-in REG_EAX,REG_DX 32 ED nil nil 386
-out imm8,REG_AL nil E6 nil $1,8 8086
-out imm8,REG_AX 16 E7 nil $1,8 8086
-out imm8,REG_EAX 32 E7 nil $1,8 386
-out REG_DX,REG_AL nil EE nil nil 8086
-out REG_DX,REG_AX 16 EF nil nil 8086
-out REG_DX,REG_EAX 32 EF nil nil 386
+in REG_AL,imm8 nil E4 nil $2,8 8086
+in REG_AX,imm8 16 E5 nil $2,8 8086
+in REG_EAX,imm8 32 E5 nil $2,8 386
+in REG_AL,REG_DX nil EC nil nil 8086
+in REG_AX,REG_DX 16 ED nil nil 8086
+in REG_EAX,REG_DX 32 ED nil nil 386
+out imm8,REG_AL nil E6 nil $1,8 8086
+out imm8,REG_AX 16 E7 nil $1,8 8086
+out imm8,REG_EAX 32 E7 nil $1,8 386
+out REG_DX,REG_AL nil EE nil nil 8086
+out REG_DX,REG_AX 16 EF nil nil 8086
+out REG_DX,REG_EAX 32 EF nil nil 386
;
; Load effective address
;
-lea reg16,mem16 16 8D $2,$1 nil 8086
-lea reg32,mem32 32 8D $2,$1 nil 386
+lea reg16,mem16 16 8D $2,$1 nil 8086
+lea reg32,mem32 32 8D $2,$1 nil 386
;
; Load segment registers from memory
;
-lds reg16,mem 16 C5 $2,$1 nil 8086
-lds reg32,mem 32 C5 $2,$1 nil 386
-les reg16,mem 16 C4 $2,$1 nil 8086
-les reg32,mem 32 C4 $2,$1 nil 386
-lfs reg16,mem 16 0F,B4 $2,$1 nil 386
-lfs reg32,mem 32 0F,B4 $2,$1 nil 386
-lgs reg16,mem 16 0F,B5 $2,$1 nil 386
-lgs reg32,mem 32 0F,B5 $2,$1 nil 386
-lss reg16,mem 16 0F,B2 $2,$1 nil 386
-lss reg32,mem 32 0F,B2 $2,$1 nil 386
+lds reg16,mem 16 C5 $2,$1 nil 8086
+lds reg32,mem 32 C5 $2,$1 nil 386
+les reg16,mem 16 C4 $2,$1 nil 8086
+les reg32,mem 32 C4 $2,$1 nil 386
+lfs reg16,mem 16 0F,B4 $2,$1 nil 386
+lfs reg32,mem 32 0F,B4 $2,$1 nil 386
+lgs reg16,mem 16 0F,B5 $2,$1 nil 386
+lgs reg32,mem 32 0F,B5 $2,$1 nil 386
+lss reg16,mem 16 0F,B2 $2,$1 nil 386
+lss reg32,mem 32 0F,B2 $2,$1 nil 386
;
; Flags register instructions
;
dec!incdec 1,48
sbb!arith 18,3
cmp!arith 38,7
-test REG_AL,imm8 nil A8 nil $2,8 8086
-test REG_AX,imm16 16 A9 nil $2,16 8086
-test REG_EAX,imm32 32 A9 nil $2,32 386
-test reg8,imm8 nil F6 $1r,0 $2,8 8086
-test mem8x,imm nil F6 $1,0 $2,8 8086
-test mem,imm8x nil F6 $1,0 $2,8 8086
-test reg16,imm16 16 F7 $1r,0 $2,16 8086
-test mem16x,imm 16 F7 $1,0 $2,16 8086
-test mem,imm16x 16 F7 $1,0 $2,16 8086
-test reg32,imm32 32 F7 $1r,0 $2,32 386
-test mem32x,imm 32 F7 $1,0 $2,32 386
-test mem,imm32x 32 F7 $1,0 $2,32 386
+test REG_AL,imm8 nil A8 nil $2,8 8086
+test REG_AX,imm16 16 A9 nil $2,16 8086
+test REG_EAX,imm32 32 A9 nil $2,32 386
+test reg8,imm8 nil F6 $1r,0 $2,8 8086
+test mem8x,imm nil F6 $1,0 $2,8 8086
+test mem,imm8x nil F6 $1,0 $2,8 8086
+test reg16,imm16 16 F7 $1r,0 $2,16 8086
+test mem16x,imm 16 F7 $1,0 $2,16 8086
+test mem,imm16x 16 F7 $1,0 $2,16 8086
+test reg32,imm32 32 F7 $1r,0 $2,32 386
+test mem32x,imm 32 F7 $1,0 $2,32 386
+test mem,imm32x 32 F7 $1,0 $2,32 386
; arbitrary encoding for next 3, picked $1r,$2 instead of $2r,$1
-test reg8,reg8 nil 84 $1r,$2 nil 8086
-test reg16,reg16 16 85 $1r,$2 nil 8086
-test reg32,reg32 32 85 $1r,$2 nil 386
-test mem,reg8 nil 84 $1,$2 nil 8086
-test mem8x,reg8 nil 84 $1,$2 nil 8086
-test mem,reg16 16 85 $1,$2 nil 8086
-test mem16x,reg16 16 85 $1,$2 nil 8086
-test mem,reg32 32 85 $1,$2 nil 386
-test mem32x,reg32 32 85 $1,$2 nil 386
-test reg8,mem8 nil 84 $2,$1 nil 8086
-test reg16,mem16 16 85 $2,$1 nil 8086
-test reg32,mem32 32 85 $2,$1 nil 386
+test reg8,reg8 nil 84 $1r,$2 nil 8086
+test reg16,reg16 16 85 $1r,$2 nil 8086
+test reg32,reg32 32 85 $1r,$2 nil 386
+test mem,reg8 nil 84 $1,$2 nil 8086
+test mem8x,reg8 nil 84 $1,$2 nil 8086
+test mem,reg16 16 85 $1,$2 nil 8086
+test mem16x,reg16 16 85 $1,$2 nil 8086
+test mem,reg32 32 85 $1,$2 nil 386
+test mem32x,reg32 32 85 $1,$2 nil 386
+test reg8,mem8 nil 84 $2,$1 nil 8086
+test reg16,mem16 16 85 $2,$1 nil 8086
+test reg32,mem32 32 85 $2,$1 nil 386
and!arith 20,4
or!arith 08,1
xor!arith 30,6
aas!onebyte nil,3F 8086
daa!onebyte nil,27 8086
das!onebyte nil,2F 8086
-aad nil nil D5,0A nil nil 8086
-aad imm8 nil D5 nil $1,8 8086
-aam nil nil D4,0A nil nil 8086
-aam imm8 nil D4 nil $1,8 8086
+aad nil nil D5,0A nil nil 8086
+aad imm8 nil D5 nil $1,8 8086
+aam nil nil D4,0A nil nil 8086
+aam imm8 nil D4 nil $1,8 8086
;
; Conversion instructions
;
; Multiplication and division
;
mul!groupf6 4
-imul rm8x nil F6 $1,5 nil 8086
-imul rm16x 16 F7 $1,5 nil 8086
-imul rm32x 32 F7 $1,5 nil 386
-imul reg16,rm16 16 0F,AF $2,$1 nil 386
-imul reg32,rm32 32 0F,AF $2,$1 nil 386
-imul reg16,rm16,imm8x 16 6B $2,$1 $3,8s 186
-imul reg32,rm32,imm8x 32 6B $2,$1 $3,8s 386
-imul reg16,imm8x 16 6B $1r,$1 $2,8s 186
-imul reg32,imm8x 32 6B $1r,$1 $2,8s 386
-imul reg16,rm16,imm16 16 69 $2,$1 $3,16s 186
-imul reg32,rm32,imm32 32 69 $2,$1 $3,32s 386
-imul reg16,imm16 16 69 $1r,$1 $2,16s 186
-imul reg32,imm32 32 69 $1r,$1 $2,32s 386
+imul rm8x nil F6 $1,5 nil 8086
+imul rm16x 16 F7 $1,5 nil 8086
+imul rm32x 32 F7 $1,5 nil 386
+imul reg16,rm16 16 0F,AF $2,$1 nil 386
+imul reg32,rm32 32 0F,AF $2,$1 nil 386
+imul reg16,rm16,imm8x 16 6B $2,$1 $3,8s 186
+imul reg32,rm32,imm8x 32 6B $2,$1 $3,8s 386
+imul reg16,imm8x 16 6B $1r,$1 $2,8s 186
+imul reg32,imm8x 32 6B $1r,$1 $2,8s 386
+imul reg16,rm16,imm16 16 69 $2,$1 $3,16s 186
+imul reg32,rm32,imm32 32 69 $2,$1 $3,32s 386
+imul reg16,imm16 16 69 $1r,$1 $2,16s 186
+imul reg32,imm32 32 69 $1r,$1 $2,32s 386
div!groupf6 6
idiv!groupf6 7
;
; call
; jmp
ret!onebyte nil,C3 8086
-retn nil nil C3 nil nil 8086
-retf nil nil CB nil nil 8086
-retn imm16 nil C2 nil $1,16 8086
-retf imm16 nil CA nil $1,16 8086
-enter imm16,imm8 nil C8 $1i,16 $2,8 186
+retn nil nil C3 nil nil 8086
+retf nil nil CB nil nil 8086
+retn imm16 nil C2 nil $1,16 8086
+retf imm16 nil CA nil $1,16 8086
+enter imm16,imm8 nil C8 $1i,16 $2,8 186
leave!onebyte nil,C9 186
;
; Conditional jumps
; loop
; loopcc:
;:loope loopz
-;loopz imm1632 nil E1 nil $1r,8s 8086
-;loopz imm1632,REG_CX 16 E1 nil $1r,8s 8086
-;loopz imm1632,REG_ECX 32 E1 nil $1r,8s 386
+;loopz imm1632 nil E1 nil $1r,8s 8086
+;loopz imm1632,REG_CX 16 E1 nil $1r,8s 8086
+;loopz imm1632,REG_ECX 32 E1 nil $1r,8s 386
;:loopne loopnz
-;loopnz imm1632 nil E1 nil $1r,8s 8086
-;loopnz imm1632,REG_CX 16 E1 nil $1r,8s 8086
-;loopnz imm1632,REG_ECX 32 E1 nil $1r,8s 386
+;loopnz imm1632 nil E1 nil $1r,8s 8086
+;loopnz imm1632,REG_CX 16 E1 nil $1r,8s 8086
+;loopnz imm1632,REG_ECX 32 E1 nil $1r,8s 386
;
; Set byte on flag instructions
;
; NOTE: cmpsd,movsd can't go to !onebyte group because of other variations
cmpsb!onebyte nil,A6 8086
cmpsw!onebyte 10,A7 8086
-cmpsd nil 32 A7 nil nil 386
+cmpsd nil 32 A7 nil nil 386
insb!onebyte nil,6C 8086
insw!onebyte 10,6D 8086
insd!onebyte 20,6D 386
lodsd!onebyte 20,AD 386
movsb!onebyte nil,A4 8086
movsw!onebyte 10,A5 8086
-movsd nil 32 A5 nil nil 386
+movsd nil 32 A5 nil nil 386
scasb!onebyte nil,AE 8086
scasw!onebyte 10,AF 8086
scasd!onebyte 20,AF 386
;
; Interrupts and operating system instructions
;
-int imm8 nil CD nil $1,8 8086
+int imm8 nil CD nil $1,8 8086
int3!onebyte nil,CC 8086
int03!onebyte nil,CC 8086
into!onebyte nil,CE 8086
iretw!onebyte 10,CF 8086
iretd!onebyte 20,CF 386
rsm!twobyte 0F,AA P5,SMM
-bound reg16,mem16 16 62 $2,$1 nil 186
-bound reg32,mem32 32 62 $2,$1 nil 386
+bound reg16,mem16 16 62 $2,$1 nil 186
+bound reg32,mem32 32 62 $2,$1 nil 386
hlt!onebyte nil,F4 8086,PRIV
nop!onebyte nil,90 8086
;
;
; 286 rm16 protected mode group (LLDT/LTR/STR/VERR/VERW):
!prot286 rm16 nil 0F,00 $1,$0.1 nil 286,PROT,@0
-arpl rm16,reg16 nil 63 $1,$2 nil 286,PROT
-lar reg16,rm16 16 0F,02 $2,$1 nil 286,PROT
-lar reg32,rm32 32 0F,02 $2,$1 nil 386,PROT
+arpl rm16,reg16 nil 63 $1,$2 nil 286,PROT
+lar reg16,rm16 16 0F,02 $2,$1 nil 286,PROT
+lar reg32,rm32 32 0F,02 $2,$1 nil 386,PROT
lgdt!twobytemem 0F,01,2 286,PRIV
lidt!twobytemem 0F,01,3 286,PRIV
lldt!prot286 2 PRIV
-lmsw rm16 nil 0F,01 $1,6 nil 286,PRIV
-lsl reg16,rm16 16 0F,03 $2,$1 nil 286,PROT
-lsl reg32,rm32 32 0F,03 $2,$1 nil 286,PROT
+lmsw rm16 nil 0F,01 $1,6 nil 286,PRIV
+lsl reg16,rm16 16 0F,03 $2,$1 nil 286,PROT
+lsl reg32,rm32 32 0F,03 $2,$1 nil 286,PROT
ltr!prot286 3 PRIV
sgdt!twobytemem 0F,01,0 286
sidt!twobytemem 0F,01,1 286
-sldt mem1632 nil 0F,00 $1,0 nil 286
-sldt reg16 16 0F,00 $1r,0 nil 286
-sldt reg32 32 0F,00 $1r,0 nil 386
-smsw mem1632 nil 0F,01 $1,4 nil 286
-smsw reg16 16 0F,01 $1r,4 nil 286
-smsw reg32 32 0F,01 $1r,4 nil 386
+sldt mem1632 nil 0F,00 $1,0 nil 286
+sldt reg16 16 0F,00 $1r,0 nil 286
+sldt reg32 32 0F,00 $1r,0 nil 386
+smsw mem1632 nil 0F,01 $1,4 nil 286
+smsw reg16 16 0F,01 $1r,4 nil 286
+smsw reg32 32 0F,01 $1r,4 nil 386
str!prot286 1
verr!prot286 4
verw!prot286 5
; Floating point instructions
;
; Load
-fld mem32x nil D9 $1,0 nil 8086,FPU
-fld mem64x nil DD $1,0 nil 8086,FPU
-fld mem80x nil DB $1,5 nil 8086,FPU
-fld fpureg nil D9,C0+$1 nil nil 8086,FPU
-fild mem16x nil DF $1,0 nil 8086,FPU
-fild mem32x nil DB $1,0 nil 8086,FPU
-fild mem64x nil DF $1,5 nil 8086,FPU
-fbld mem80 nil DF $1,4 nil 8086,FPU
+fld mem32x nil D9 $1,0 nil 8086,FPU
+fld mem64x nil DD $1,0 nil 8086,FPU
+fld mem80x nil DB $1,5 nil 8086,FPU
+fld fpureg nil D9,C0+$1 nil nil 8086,FPU
+fild mem16x nil DF $1,0 nil 8086,FPU
+fild mem32x nil DB $1,0 nil 8086,FPU
+fild mem64x nil DF $1,5 nil 8086,FPU
+fbld mem80 nil DF $1,4 nil 8086,FPU
; Store
-fst mem32x nil D9 $1,2 nil 8086,FPU
-fst mem64x nil DD $1,2 nil 8086,FPU
-fst fpureg nil DD,D0+$1 nil nil 8086,FPU
-fist mem16x nil DF $1,2 nil 8086,FPU
-fist mem32x nil DB $1,2 nil 8086,FPU
+fst mem32x nil D9 $1,2 nil 8086,FPU
+fst mem64x nil DD $1,2 nil 8086,FPU
+fst fpureg nil DD,D0+$1 nil nil 8086,FPU
+fist mem16x nil DF $1,2 nil 8086,FPU
+fist mem32x nil DB $1,2 nil 8086,FPU
; Store (with pop)
-fstp mem32x nil D9 $1,3 nil 8086,FPU
-fstp mem64x nil DD $1,3 nil 8086,FPU
-fstp mem80x nil DB $1,7 nil 8086,FPU
-fstp fpureg nil DD,D8+$1 nil nil 8086,FPU
-fistp mem16x nil DF $1,3 nil 8086,FPU
-fistp mem32x nil DB $1,3 nil 8086,FPU
-fistp mem64x nil DF $1,7 nil 8086,FPU
-fbstp mem80 nil DF $1,6 nil 8086,FPU
+fstp mem32x nil D9 $1,3 nil 8086,FPU
+fstp mem64x nil DD $1,3 nil 8086,FPU
+fstp mem80x nil DB $1,7 nil 8086,FPU
+fstp fpureg nil DD,D8+$1 nil nil 8086,FPU
+fistp mem16x nil DF $1,3 nil 8086,FPU
+fistp mem32x nil DB $1,3 nil 8086,FPU
+fistp mem64x nil DF $1,7 nil 8086,FPU
+fbstp mem80 nil DF $1,6 nil 8086,FPU
; Exchange (with ST0)
-fxch fpureg nil D9,C8+$1 nil nil 8086,FPU
-fxch ST0,ST0 nil D9,C8 nil nil 8086,FPU
-fxch ST0,FPUREG_NOTST0 nil D9,C8+$2 nil nil 8086,FPU
-fxch FPUREG_NOTST0,ST0 nil D9,C8+$1 nil nil 8086,FPU
-fxch nil nil D9,C9 nil nil 8086,FPU
+fxch fpureg nil D9,C8+$1 nil nil 8086,FPU
+fxch ST0,ST0 nil D9,C8 nil nil 8086,FPU
+fxch ST0,FPUREG_NOTST0 nil D9,C8+$2 nil nil 8086,FPU
+fxch FPUREG_NOTST0,ST0 nil D9,C8+$1 nil nil 8086,FPU
+fxch nil nil D9,C9 nil nil 8086,FPU
; Comparisons
!fcomg mem32x nil D8 $1,$0.1 nil 8086,FPU
!fcomg mem64x nil DC $1,$0.1 nil 8086,FPU
!fcomg2 ST0,fpureg nil $0.1,$0.2+$2 nil nil @0,FPU
; Comparison (without pop)
fcom!fcomg 2,D0
-ficom mem16x nil DE $1,2 nil 8086,FPU
-ficom mem32x nil DA $1,2 nil 8086,FPU
+ficom mem16x nil DE $1,2 nil 8086,FPU
+ficom mem32x nil DA $1,2 nil 8086,FPU
; Comparison (with pop)
fcomp!fcomg 3,D8
-ficomp mem16x nil DE $1,3 nil 8086,FPU
-ficomp mem32x nil DA $1,3 nil 8086,FPU
+ficomp mem16x nil DE $1,3 nil 8086,FPU
+ficomp mem32x nil DA $1,3 nil 8086,FPU
fcompp!twobyte DE,D9 8086,FPU
; Unordered comparison (with pop)
fucom!fcomg2 DD,E0 286
; Processor control
fninit!twobyte DB,E3 8086,FPU
finit!threebyte 9B,DB,E3 8086,FPU
-fldcw mem16 nil D9 $1,5 nil 8086,FPU
-fnstcw mem16 nil D9 $1,7 nil 8086,FPU
-fstcw mem16 nil 9B,D9 $1,7 nil 8086,FPU
-fnstsw mem16 nil DD $1,7 nil 8086,FPU
-fnstsw REG_AX nil DF,E0 nil nil 8086,FPU
-fstsw mem16 nil 9B,DD $1,7 nil 8086,FPU
-fstsw REG_AX nil 9B,DF,E0 nil nil 8086,FPU
+fldcw mem16 nil D9 $1,5 nil 8086,FPU
+fnstcw mem16 nil D9 $1,7 nil 8086,FPU
+fstcw mem16 nil 9B,D9 $1,7 nil 8086,FPU
+fnstsw mem16 nil DD $1,7 nil 8086,FPU
+fnstsw REG_AX nil DF,E0 nil nil 8086,FPU
+fstsw mem16 nil 9B,DD $1,7 nil 8086,FPU
+fstsw REG_AX nil 9B,DF,E0 nil nil 8086,FPU
fnclex!twobyte DB,E2 8086,FPU
fclex!threebyte 9B,DB,E2 8086,FPU
fnstenv!onebytemem D9,6 8086,FPU
fnsave!onebytemem DD,6 8086,FPU
fsave!twobytemem 9B,DD,6 8086,FPU
frstor!onebytemem DD,4 8086,FPU
-ffree fpureg nil DD,C0+$1 nil nil 8086,FPU
-ffreep fpureg nil DF,C0+$1 nil nil P6,FPU,UNDOC
+ffree fpureg nil DD,C0+$1 nil nil 8086,FPU
+ffreep fpureg nil DF,C0+$1 nil nil P6,FPU,UNDOC
fnop!twobyte D9,D0 8086,FPU
fwait!onebyte nil,9B 8086,FPU
;
;
; Compare & exchange, exchange & add
; arbitrary encoding, picked $1r,$2 instead of $2r,$1
-!cmpxchgxadd reg8,reg8 nil 0F,$0.1 $1r,$2 nil @0
-!cmpxchgxadd mem,reg8 nil 0F,$0.1 $1,$2 nil @0
-!cmpxchgxadd mem8x,reg8 nil 0F,$0.1 $1,$2 nil @0
+!cmpxchgxadd reg8,reg8 nil 0F,$0.1 $1r,$2 nil @0
+!cmpxchgxadd mem,reg8 nil 0F,$0.1 $1,$2 nil @0
+!cmpxchgxadd mem8x,reg8 nil 0F,$0.1 $1,$2 nil @0
; arbitrary encoding, picked $1r,$2 instead of $2r,$1
-!cmpxchgxadd reg16,reg16 16 0F,$0.1+1 $1r,$2 nil @0
-!cmpxchgxadd mem,reg16 16 0F,$0.1+1 $1,$2 nil @0
-!cmpxchgxadd mem16x,reg16 16 0F,$0.1+1 $1,$2 nil @0
+!cmpxchgxadd reg16,reg16 16 0F,$0.1+1 $1r,$2 nil @0
+!cmpxchgxadd mem,reg16 16 0F,$0.1+1 $1,$2 nil @0
+!cmpxchgxadd mem16x,reg16 16 0F,$0.1+1 $1,$2 nil @0
; arbitrary encoding, picked $1r,$2 instead of $2r,$1
-!cmpxchgxadd reg32,reg32 32 0F,$0.1+1 $1r,$2 nil @0
-!cmpxchgxadd mem,reg32 32 0F,$0.1+1 $1,$2 nil @0
-!cmpxchgxadd mem32x,reg32 32 0F,$0.1+1 $1,$2 nil @0
-bswap reg32 32 0F,C8+$1 nil nil 486
+!cmpxchgxadd reg32,reg32 32 0F,$0.1+1 $1r,$2 nil @0
+!cmpxchgxadd mem,reg32 32 0F,$0.1+1 $1,$2 nil @0
+!cmpxchgxadd mem32x,reg32 32 0F,$0.1+1 $1,$2 nil @0
+bswap reg32 32 0F,C8+$1 nil nil 486
xadd!cmpxchgxadd C0 486
cmpxchg!cmpxchgxadd B0 486
cmpxchg486!cmpxchgxadd A6 486,UNDOC
wrmsr!twobyte 0F,30 P5,PRIV
rdtsc!twobyte 0F,31 P5
rdmsr!twobyte 0F,32 P5,PRIV
-cmpxchg8b mem64 nil 0F,C7 $1,1 nil P5
+cmpxchg8b mem64 nil 0F,C7 $1,1 nil P5
;
; Pentium II/Pentium Pro extensions
;
;
; Pentium4 extensions
;
-movnti mem32,reg32 nil 0F,C3 $1,$2 nil P4
-clflush mem8 nil 0F,AE $1,7 nil KATMAI
+movnti mem32,reg32 nil 0F,C3 $1,$2 nil P4
+clflush mem8 nil 0F,AE $1,7 nil KATMAI
lfence!threebyte 0F,AE,E8 KATMAI
mfence!threebyte 0F,AE,F0 KATMAI
pause!twobyte F3,90 P4
!pshift MMXREG,imm8 nil 0F,$0.2 $1r,$0.3 $2,8 P5,MMX
!pshift XMMREG,imm8 nil 66,0F,$0.2 $1r,$0.3 $2,8 P4,SSE2
emms!twobyte 0F,77 P5,MMX
-movd MMXREG,rm32 nil 0F,6E $2,$1 nil P5,MMX
-movd rm32,MMXREG nil 0F,7E $1,$2 nil P5,MMX
-movd XMMREG,rm32 nil 66,0F,6E $2,$1 nil P4,SSE2
-movd rm32,XMMREG nil 66,0F,7E $1,$2 nil P4,SSE2
+movd MMXREG,rm32 nil 0F,6E $2,$1 nil P5,MMX
+movd rm32,MMXREG nil 0F,7E $1,$2 nil P5,MMX
+movd XMMREG,rm32 nil 66,0F,6E $2,$1 nil P4,SSE2
+movd rm32,XMMREG nil 66,0F,7E $1,$2 nil P4,SSE2
; arbitrary encoding, picked $2r,$1 instead of $1r,$2
-movq MMXREG,MMXREG nil 0F,6F $2r,$1 nil P5,MMX
-movq MMXREG,mem64 nil 0F,6F $2,$1 nil P5,MMX
-movq mem64,MMXREG nil 0F,7F $1,$2 nil P5,MMX
+movq MMXREG,MMXREG nil 0F,6F $2r,$1 nil P5,MMX
+movq MMXREG,mem64 nil 0F,6F $2,$1 nil P5,MMX
+movq mem64,MMXREG nil 0F,7F $1,$2 nil P5,MMX
; arbitrary encoding, picked $2r,$1 instead of $1r,$2
-movq XMMREG,XMMREG nil F3,0F,7E $2r,$1 nil P4,SSE2
-movq XMMREG,mem64 nil F3,0F,7E $2,$1 nil P4,SSE2
-movq mem64,XMMREG nil 66,0F,D6 $1,$2 nil P4,SSE2
+movq XMMREG,XMMREG nil F3,0F,7E $2r,$1 nil P4,SSE2
+movq XMMREG,mem64 nil F3,0F,7E $2,$1 nil P4,SSE2
+movq mem64,XMMREG nil 66,0F,D6 $1,$2 nil P4,SSE2
packssdw!mmxsse 6B P5 P4,SSE2
packsswb!mmxsse 63 P5 P4,SSE2
packuswb!mmxsse 67 P5 P4,SSE2
psrlw!pshift D1,71,2
psrld!pshift D2,72,2
psrlq!pshift D3,73,2
-psubb MMXREG,imm8 nil 0F,F8 $1r,2 $2,8 P5,MMX
-psubb XMMREG,imm8 nil 66,0F,F8 $1r,2 $2,8 P4,SSE2
-psubw MMXREG,imm8 nil 0F,F9 $1r,2 $2,8 P5,MMX
-psubw XMMREG,imm8 nil 66,0F,F9 $1r,2 $2,8 P4,SSE2
+psubb MMXREG,imm8 nil 0F,F8 $1r,2 $2,8 P5,MMX
+psubb XMMREG,imm8 nil 66,0F,F8 $1r,2 $2,8 P4,SSE2
+psubw MMXREG,imm8 nil 0F,F9 $1r,2 $2,8 P5,MMX
+psubw XMMREG,imm8 nil 66,0F,F9 $1r,2 $2,8 P4,SSE2
psubd!mmxsse FA P5 P4,SSE2
psubq!mmxsse FB P5 P4,SSE2
psubsb!mmxsse E8 P5 P4,SSE2
cmpunordps!ssecmpps 3
cmpunordss!ssecmpss 3
cmpps!ssepsimm C2
-cmpss XMMREG,rm128,imm8 nil F3,0F,C2 $2,$1 $3,8 KATMAI,SSE
+cmpss XMMREG,rm128,imm8 nil F3,0F,C2 $2,$1 $3,8 KATMAI,SSE
comiss!sseps 2F KATMAI,SSE
cvtpi2ps!sseps 2A KATMAI,SSE
cvtps2pi!sseps 2D KATMAI,SSE
cvttss2si!ssess 2C KATMAI,SSE
divps!sseps 5E KATMAI,SSE
divss!ssess 5E KATMAI,SSE
-ldmxcsr mem32 nil 0F,AE $1,2 nil KATMAI,SSE
-maskmovq MMXREG,MMXREG nil 0F,F7 $2r,$1 nil KATMAI,MMX
+ldmxcsr mem32 nil 0F,AE $1,2 nil KATMAI,SSE
+maskmovq MMXREG,MMXREG nil 0F,F7 $2r,$1 nil KATMAI,MMX
maxps!sseps 5F KATMAI,SSE
maxss!ssess 5F KATMAI,SSE
minps!sseps 5D KATMAI,SSE
minss!ssess 5D KATMAI,SSE
; arbitrary encoding, picked $2r,$1 instead of $1r,$2
-movaps XMMREG,XMMREG nil 0F,28 $2r,$1 nil KATMAI,SSE
-movaps XMMREG,mem128 nil 0F,28 $2,$1 nil KATMAI,SSE
-movaps mem128,XMMREG nil 0F,29 $1,$2 nil KATMAI,SSE
-movhlps XMMREG,XMMREG nil 0F,12 $2r,$1 nil KATMAI,SSE
-movhps XMMREG,mem64 nil 0F,16 $2,$1 nil KATMAI,SSE
-movhps mem64,XMMREG nil 0F,17 $1,$2 nil KATMAI,SSE
-movlhps XMMREG,XMMREG nil 0F,16 $2r,$1 nil KATMAI,SSE
-movlps XMMREG,mem64 nil 0F,12 $2,$1 nil KATMAI,SSE
-movlps mem64,XMMREG nil 0F,13 $1,$2 nil KATMAI,SSE
-movmskps reg32,XMMREG nil 0F,50 $1r,$2 nil KATMAI,SSE
-movntps mem128,XMMREG nil 0F,2B $1,$2 nil KATMAI,SSE
-movntq mem64,MMXREG nil 0F,E7 $1,$2 nil KATMAI,MMX
-movntdq mem128,XMMREG nil 66,0F,E7 $1,$2 nil P4,SSE2
+movaps XMMREG,XMMREG nil 0F,28 $2r,$1 nil KATMAI,SSE
+movaps XMMREG,mem128 nil 0F,28 $2,$1 nil KATMAI,SSE
+movaps mem128,XMMREG nil 0F,29 $1,$2 nil KATMAI,SSE
+movhlps XMMREG,XMMREG nil 0F,12 $2r,$1 nil KATMAI,SSE
+movhps XMMREG,mem64 nil 0F,16 $2,$1 nil KATMAI,SSE
+movhps mem64,XMMREG nil 0F,17 $1,$2 nil KATMAI,SSE
+movlhps XMMREG,XMMREG nil 0F,16 $2r,$1 nil KATMAI,SSE
+movlps XMMREG,mem64 nil 0F,12 $2,$1 nil KATMAI,SSE
+movlps mem64,XMMREG nil 0F,13 $1,$2 nil KATMAI,SSE
+movmskps reg32,XMMREG nil 0F,50 $1r,$2 nil KATMAI,SSE
+movntps mem128,XMMREG nil 0F,2B $1,$2 nil KATMAI,SSE
+movntq mem64,MMXREG nil 0F,E7 $1,$2 nil KATMAI,MMX
+movntdq mem128,XMMREG nil 66,0F,E7 $1,$2 nil P4,SSE2
; arbitrary encoding, picked $2r,$1 instead of $1r,$2
-movss XMMREG,XMMREG nil F3,0F,10 $2r,$1 nil KATMAI,SSE
-movss XMMREG,mem64 nil F3,0F,10 $2,$1 nil KATMAI,SSE
-movss mem64,XMMREG nil F3,0F,11 $1,$2 nil KATMAI,SSE
+movss XMMREG,XMMREG nil F3,0F,10 $2r,$1 nil KATMAI,SSE
+movss XMMREG,mem64 nil F3,0F,10 $2,$1 nil KATMAI,SSE
+movss mem64,XMMREG nil F3,0F,11 $1,$2 nil KATMAI,SSE
; arbitrary encoding, picked $2r,$1 instead of $1r,$2
-movups XMMREG,XMMREG nil 0F,10 $2r,$1 nil KATMAI,SSE
-movups XMMREG,mem64 nil 0F,10 $2,$1 nil KATMAI,SSE
-movups mem64,XMMREG nil 0F,11 $1,$2 nil KATMAI,SSE
+movups XMMREG,XMMREG nil 0F,10 $2r,$1 nil KATMAI,SSE
+movups XMMREG,mem64 nil 0F,10 $2,$1 nil KATMAI,SSE
+movups mem64,XMMREG nil 0F,11 $1,$2 nil KATMAI,SSE
mulps!sseps 59 KATMAI,SSE
mulss!ssess 59 KATMAI,SSE
orps!sseps 56 KATMAI,SSE
pavgb!mmxsse E0 KATMAI P4,SSE2
pavgw!mmxsse E3 KATMAI P4,SSE2
-pextrw reg32,MMXREG,imm8 nil 0F,C5 $1r,$2 $3,8 KATMAI,MMX
-pextrw reg32,XMMREG,imm8 nil 66,0F,C5 $1r,$2 $3,8 P4,SSE2
-pinsrw MMXREG,reg32,imm8 nil 0F,C4 $2r,$1 $3,8 KATMAI,MMX
-pinsrw MMXREG,rm16,imm8 nil 0F,C4 $2,$1 $3,8 KATMAI,MMX
-pinsrw XMMREG,reg32,imm8 nil 66,0F,C4 $2r,$1 $3,8 P4,SSE2
-pinsrw XMMREG,rm16,imm8 nil 66,0F,C4 $2,$1 $3,8 P4,SSE2
+pextrw reg32,MMXREG,imm8 nil 0F,C5 $1r,$2 $3,8 KATMAI,MMX
+pextrw reg32,XMMREG,imm8 nil 66,0F,C5 $1r,$2 $3,8 P4,SSE2
+pinsrw MMXREG,reg32,imm8 nil 0F,C4 $2r,$1 $3,8 KATMAI,MMX
+pinsrw MMXREG,rm16,imm8 nil 0F,C4 $2,$1 $3,8 KATMAI,MMX
+pinsrw XMMREG,reg32,imm8 nil 66,0F,C4 $2r,$1 $3,8 P4,SSE2
+pinsrw XMMREG,rm16,imm8 nil 66,0F,C4 $2,$1 $3,8 P4,SSE2
pmaxsw!mmxsse EE KATMAI P4,SSE2
pmaxub!mmxsse DE KATMAI P4,SSE2
pminsw!mmxsse EA KATMAI P4,SSE2
pminub!mmxsse DA KATMAI P4,SSE2
-pmovmskb reg32,MMXREG nil 0F,D7 $1r,$2 nil KATMAI,SSE
-pmovmskb reg32,XMMREG nil 66,0F,D7 $1r,$2 nil P4,SSE2
+pmovmskb reg32,MMXREG nil 0F,D7 $1r,$2 nil KATMAI,SSE
+pmovmskb reg32,XMMREG nil 66,0F,D7 $1r,$2 nil P4,SSE2
pmulhuw!mmxsse E4 KATMAI P4,SSE2
prefetchnta!twobytemem 0F,18,0 KATMAI
prefetcht0!twobytemem 0F,18,1 KATMAI
prefetcht1!twobytemem 0F,18,2 KATMAI
prefetcht2!twobytemem 0F,18,3 KATMAI
psadbw!mmxsse F6 KATMAI KATMAI,SSE
-pshufw MMXREG,rm64,imm8 nil 0F,70 $2,$1 $3,8 KATMAI,MMX
+pshufw MMXREG,rm64,imm8 nil 0F,70 $2,$1 $3,8 KATMAI,MMX
rcpps!sseps 53 KATMAI,SSE
rcpss!ssess 53 KATMAI,SSE
rsqrtps!sseps 52 KATMAI,SSE
shufps!ssepsimm C6
sqrtps!sseps 51 KATMAI,SSE
sqrtss!ssess 51 KATMAI,SSE
-stmxcsr mem32 nil 0F,AE $1,3 nil KATMAI,SSE
+stmxcsr mem32 nil 0F,AE $1,3 nil KATMAI,SSE
subps!sseps 5C KATMAI,SSE
subss!ssess 5C KATMAI,SSE
ucomiss!ssess 2E KATMAI,SSE
cmpunordpd!sse2cmppd 3
cmpunordsd!sse2cmpsd 3
cmppd!sse2pdimm C2
-cmpsd XMMREG,rm128,imm8 nil F2,0F,C2 $2,$1 $3,8 P4,SSE2
+cmpsd XMMREG,rm128,imm8 nil F2,0F,C2 $2,$1 $3,8 P4,SSE2
comisd!sse2pd 2F
cvtpi2pd!sse2pd 2A
cvtsi2sd!sse2sd 2A
minpd!sse2pd 5D
minsd!sse2sd 5D
; arbitrary encoding, picked $2r,$1 instead of $1r,$2
-movapd XMMREG,XMMREG nil 66,0F,28 $2r,$1 nil P4,SSE2
-movapd XMMREG,mem128 nil 66,0F,28 $2,$1 nil P4,SSE2
-movapd mem128,XMMREG nil 66,0F,29 $1,$2 nil P4,SSE2
-movhpd XMMREG,mem64 nil 66,0F,16 $2,$1 nil P4,SSE2
-movhpd mem64,XMMREG nil 66,0F,17 $1,$2 nil P4,SSE2
-movlpd XMMREG,mem64 nil 66,0F,12 $2,$1 nil P4,SSE2
-movlpd mem64,XMMREG nil 66,0F,13 $1,$2 nil P4,SSE2
-movmskpd reg32,XMMREG nil 66,0F,50 $1r,$2 nil P4,SSE2
-movntpd mem128,XMMREG nil 66,0F,2B $1,$2 nil P4,SSE2
+movapd XMMREG,XMMREG nil 66,0F,28 $2r,$1 nil P4,SSE2
+movapd XMMREG,mem128 nil 66,0F,28 $2,$1 nil P4,SSE2
+movapd mem128,XMMREG nil 66,0F,29 $1,$2 nil P4,SSE2
+movhpd XMMREG,mem64 nil 66,0F,16 $2,$1 nil P4,SSE2
+movhpd mem64,XMMREG nil 66,0F,17 $1,$2 nil P4,SSE2
+movlpd XMMREG,mem64 nil 66,0F,12 $2,$1 nil P4,SSE2
+movlpd mem64,XMMREG nil 66,0F,13 $1,$2 nil P4,SSE2
+movmskpd reg32,XMMREG nil 66,0F,50 $1r,$2 nil P4,SSE2
+movntpd mem128,XMMREG nil 66,0F,2B $1,$2 nil P4,SSE2
; arbitrary encoding, picked $2r,$1 instead of $1r,$2
-movsd XMMREG,XMMREG nil F2,0F,10 $2r,$1 nil P4,SSE2
-movsd XMMREG,mem64 nil F2,0F,10 $2,$1 nil P4,SSE2
-movsd mem64,XMMREG nil F2,0F,11 $1,$2 nil P4,SSE2
+movsd XMMREG,XMMREG nil F2,0F,10 $2r,$1 nil P4,SSE2
+movsd XMMREG,mem64 nil F2,0F,10 $2,$1 nil P4,SSE2
+movsd mem64,XMMREG nil F2,0F,11 $1,$2 nil P4,SSE2
; arbitrary encoding, picked $2r,$1 instead of $1r,$2
-movupd XMMREG,XMMREG nil 66,0F,10 $2r,$1 nil P4,SSE2
-movupd XMMREG,mem64 nil 66,0F,10 $2,$1 nil P4,SSE2
-movupd mem64,XMMREG nil 66,0F,11 $1,$2 nil P4,SSE2
+movupd XMMREG,XMMREG nil 66,0F,10 $2r,$1 nil P4,SSE2
+movupd XMMREG,mem64 nil 66,0F,10 $2,$1 nil P4,SSE2
+movupd mem64,XMMREG nil 66,0F,11 $1,$2 nil P4,SSE2
mulpd!sse2pd 59
mulsd!sse2sd 59
orpd!sse2pd 56
cvttsd2si!sse2sd 2C
cvttpd2dq!sse2pd E6
cvttps2dq!ssess 5B P4,SSE2
-maskmovdqu XMMREG,XMMREG nil 66,0F,F7 $2r,$1 nil P4,SSE2
+maskmovdqu XMMREG,XMMREG nil 66,0F,F7 $2r,$1 nil P4,SSE2
; arbitrary encoding, picked $2r,$1 instead of $1r,$2
-movdqa XMMREG,XMMREG nil 66,0F,6F $2r,$1 nil P4,SSE2
-movdqa XMMREG,mem128 nil 66,0F,6F $2,$1 nil P4,SSE2
-movdqa mem128,XMMREG nil 66,0F,7F $1,$2 nil P4,SSE2
+movdqa XMMREG,XMMREG nil 66,0F,6F $2r,$1 nil P4,SSE2
+movdqa XMMREG,mem128 nil 66,0F,6F $2,$1 nil P4,SSE2
+movdqa mem128,XMMREG nil 66,0F,7F $1,$2 nil P4,SSE2
; arbitrary encoding, picked $2r,$1 instead of $1r,$2
-movdqu XMMREG,XMMREG nil F3,0F,6F $2r,$1 nil P4,SSE2
-movdqu XMMREG,mem128 nil F3,0F,6F $2,$1 nil P4,SSE2
-movdqu mem128,XMMREG nil F3,0F,7F $1,$2 nil P4,SSE2
-movdq2q MMXREG,XMMREG nil F2,0F,D6 $2r,$1 nil P4,SSE2
-movq2dq XMMREG,MMXREG nil F3,0F,D6 $2r,$1 nil P4,SSE2
+movdqu XMMREG,XMMREG nil F3,0F,6F $2r,$1 nil P4,SSE2
+movdqu XMMREG,mem128 nil F3,0F,6F $2,$1 nil P4,SSE2
+movdqu mem128,XMMREG nil F3,0F,7F $1,$2 nil P4,SSE2
+movdq2q MMXREG,XMMREG nil F2,0F,D6 $2r,$1 nil P4,SSE2
+movq2dq XMMREG,MMXREG nil F3,0F,D6 $2r,$1 nil P4,SSE2
pmuludq!mmxsse F4 P4 P4,SSE2
pshufd!sse2pdimm 70
-pshufhw XMMREG,rm128,imm8 nil F3,0F,70 $2,$1 $3,8 P4,SSE2
-pshuflw XMMREG,rm128,imm8 nil F2,0F,70 $2,$1 $3,8 P4,SSE2
-pslldq XMMREG,imm8 nil 66,0F,73 $1r,7 $2,8 P4,SSE2
-psrldq XMMREG,imm8 nil 66,0F,73 $1r,3 $2,8 P4,SSE2
+pshufhw XMMREG,rm128,imm8 nil F3,0F,70 $2,$1 $3,8 P4,SSE2
+pshuflw XMMREG,rm128,imm8 nil F2,0F,70 $2,$1 $3,8 P4,SSE2
+pslldq XMMREG,imm8 nil 66,0F,73 $1r,7 $2,8 P4,SSE2
+psrldq XMMREG,imm8 nil 66,0F,73 $1r,3 $2,8 P4,SSE2
punpckhqdq!sse2pd 6D
punpcklqdq!sse2pd 6C
;
paddsiw!cyrixmmx 51
paveb!cyrixmmx 50
pdistib!cyrixmmx 54
-pmachriw MMXREG,mem64 nil 0F,5E $2,$1 nil P5,MMX,CYRIX
+pmachriw MMXREG,mem64 nil 0F,5E $2,$1 nil P5,MMX,CYRIX
pmagw!cyrixmmx 52
pmulhriw!cyrixmmx 5D
pmulhrwc!cyrixmmx 59
;
!cyrixsmm mem80 nil 0F,$0.1 $1,0 nil 486,CYRIX,SMM
rdshr!twobyte 0F,36 P6,CYRIX,SMM
-rsdc segreg,mem80 nil 0F,79 $2,$1 nil 486,CYRIX,SMM
+rsdc segreg,mem80 nil 0F,79 $2,$1 nil 486,CYRIX,SMM
rsldt!cyrixsmm 7B
rsts!cyrixsmm 7D
-svdc mem80,segreg nil 0F,78 $1,$2 nil 486,CYRIX,SMM
+svdc mem80,segreg nil 0F,78 $1,$2 nil 486,CYRIX,SMM
svldt!cyrixsmm 7A
svts!cyrixsmm 7C
smint!twobyte 0F,38 P6,CYRIX
;
fsetpm!twobyte DB,E4 286,FPU,OBS
; arbitrary encoding, picked $1r,$2 instead of $2r,$1
-ibts reg16,reg16 16 0F,A7 $1r,$2 nil 386,UNDOC,OBS
-ibts mem,reg16 16 0F,A7 $1,$2 nil 386,UNDOC,OBS
-ibts mem16x,reg16 16 0F,A7 $1,$2 nil 386,UNDOC,OBS
+ibts reg16,reg16 16 0F,A7 $1r,$2 nil 386,UNDOC,OBS
+ibts mem,reg16 16 0F,A7 $1,$2 nil 386,UNDOC,OBS
+ibts mem16x,reg16 16 0F,A7 $1,$2 nil 386,UNDOC,OBS
; arbitrary encoding, picked $1r,$2 instead of $2r,$1
-ibts reg32,reg32 32 0F,A7 $1r,$2 nil 386,UNDOC,OBS
-ibts mem,reg32 32 0F,A7 $1,$2 nil 386,UNDOC,OBS
-ibts mem32x,reg32 32 0F,A7 $1,$2 nil 386,UNDOC,OBS
+ibts reg32,reg32 32 0F,A7 $1r,$2 nil 386,UNDOC,OBS
+ibts mem,reg32 32 0F,A7 $1,$2 nil 386,UNDOC,OBS
+ibts mem32x,reg32 32 0F,A7 $1,$2 nil 386,UNDOC,OBS
loadall!twobyte 0F,07 386,UNDOC
loadall286!twobyte 0F,05 286,UNDOC
-;pop REG_CS nil 0F nil nil 8086,UNDOC,OBS
+;pop REG_CS nil 0F nil nil 8086,UNDOC,OBS
salc!onebyte nil,D6 8086,UNDOC
smi!onebyte nil,F1 386,UNDOC
; opcode arbitrarily picked for next 3 (could be 12/13 instead of 10/11).
-umov reg8,reg8 nil 0F,10 $1r,$2 nil 386,UNDOC
-umov reg16,reg16 16 0F,11 $1r,$2 nil 386,UNDOC
-umov reg32,reg32 32 0F,11 $1r,$2 nil 386,UNDOC
-umov mem,reg8 nil 0F,10 $1,$2 nil 386,UNDOC
-umov mem8x,reg8 nil 0F,10 $1,$2 nil 386,UNDOC
-umov mem,reg16 16 0F,11 $1,$2 nil 386,UNDOC
-umov mem16x,reg16 16 0F,11 $1,$2 nil 386,UNDOC
-umov mem,reg32 32 0F,11 $1,$2 nil 386,UNDOC
-umov mem32x,reg32 32 0F,11 $1,$2 nil 386,UNDOC
-umov reg8,mem8 nil 0F,12 $2,$1 nil 386,UNDOC
-umov reg16,mem16 16 0F,13 $2,$1 nil 386,UNDOC
-umov reg32,mem32 32 0F,13 $2,$1 nil 386,UNDOC
-xbts reg16,mem16 16 0F,A6 $2,$1 nil 386,UNDOC,OBS
-xbts reg32,mem32 32 0F,A6 $2,$1 nil 386,UNDOC,OBS
+umov reg8,reg8 nil 0F,10 $1r,$2 nil 386,UNDOC
+umov reg16,reg16 16 0F,11 $1r,$2 nil 386,UNDOC
+umov reg32,reg32 32 0F,11 $1r,$2 nil 386,UNDOC
+umov mem,reg8 nil 0F,10 $1,$2 nil 386,UNDOC
+umov mem8x,reg8 nil 0F,10 $1,$2 nil 386,UNDOC
+umov mem,reg16 16 0F,11 $1,$2 nil 386,UNDOC
+umov mem16x,reg16 16 0F,11 $1,$2 nil 386,UNDOC
+umov mem,reg32 32 0F,11 $1,$2 nil 386,UNDOC
+umov mem32x,reg32 32 0F,11 $1,$2 nil 386,UNDOC
+umov reg8,mem8 nil 0F,12 $2,$1 nil 386,UNDOC
+umov reg16,mem16 16 0F,13 $2,$1 nil 386,UNDOC
+umov reg32,mem32 32 0F,13 $2,$1 nil 386,UNDOC
+xbts reg16,mem16 16 0F,A6 $2,$1 nil 386,UNDOC,OBS
+xbts reg32,mem32 32 0F,A6 $2,$1 nil 386,UNDOC,OBS