1 DEF_ASM_OP0(clc
, 0xf8) /* must be first OP0 */
4 DEF_ASM_OP0(clts
, 0x0f06)
6 DEF_ASM_OP0(lahf
, 0x9f)
7 DEF_ASM_OP0(sahf
, 0x9e)
8 DEF_ASM_OP0(pusha
, 0x60)
9 DEF_ASM_OP0(popa
, 0x61)
10 DEF_ASM_OP0(pushfl
, 0x9c)
11 DEF_ASM_OP0(popfl
, 0x9d)
12 DEF_ASM_OP0(pushf
, 0x9c)
13 DEF_ASM_OP0(popf
, 0x9d)
14 DEF_ASM_OP0(stc
, 0xf9)
15 DEF_ASM_OP0(std
, 0xfd)
16 DEF_ASM_OP0(sti
, 0xfb)
17 DEF_ASM_OP0(aaa
, 0x37)
18 DEF_ASM_OP0(aas
, 0x3f)
19 DEF_ASM_OP0(daa
, 0x27)
20 DEF_ASM_OP0(das
, 0x2f)
21 DEF_ASM_OP0(aad
, 0xd50a)
22 DEF_ASM_OP0(aam
, 0xd40a)
23 DEF_ASM_OP0(cbw
, 0x6698)
24 DEF_ASM_OP0(cwd
, 0x6699)
25 DEF_ASM_OP0(cwde
, 0x98)
26 DEF_ASM_OP0(cdq
, 0x99)
27 DEF_ASM_OP0(cbtw
, 0x6698)
28 DEF_ASM_OP0(cwtl
, 0x98)
29 DEF_ASM_OP0(cwtd
, 0x6699)
30 DEF_ASM_OP0(cltd
, 0x99)
31 DEF_ASM_OP0(int3
, 0xcc)
32 DEF_ASM_OP0(into
, 0xce)
33 DEF_ASM_OP0(iret
, 0xcf)
34 DEF_ASM_OP0(rsm
, 0x0faa)
35 DEF_ASM_OP0(hlt
, 0xf4)
36 DEF_ASM_OP0(nop
, 0x90)
37 DEF_ASM_OP0(xlat
, 0xd7)
40 ALT(DEF_ASM_OP0L(cmpsb
, 0xa6, 0, OPC_BWL
))
41 ALT(DEF_ASM_OP0L(scmpb
, 0xa6, 0, OPC_BWL
))
43 ALT(DEF_ASM_OP0L(insb
, 0x6c, 0, OPC_BWL
))
44 ALT(DEF_ASM_OP0L(outsb
, 0x6e, 0, OPC_BWL
))
46 ALT(DEF_ASM_OP0L(lodsb
, 0xac, 0, OPC_BWL
))
47 ALT(DEF_ASM_OP0L(slodb
, 0xac, 0, OPC_BWL
))
49 ALT(DEF_ASM_OP0L(movsb
, 0xa4, 0, OPC_BWL
))
50 ALT(DEF_ASM_OP0L(smovb
, 0xa4, 0, OPC_BWL
))
52 ALT(DEF_ASM_OP0L(scasb
, 0xae, 0, OPC_BWL
))
53 ALT(DEF_ASM_OP0L(sscab
, 0xae, 0, OPC_BWL
))
55 ALT(DEF_ASM_OP0L(stosb
, 0xaa, 0, OPC_BWL
))
56 ALT(DEF_ASM_OP0L(sstob
, 0xaa, 0, OPC_BWL
))
60 ALT(DEF_ASM_OP2(bsfw
, 0x0fbc, 0, OPC_MODRM
| OPC_WL
, OPT_REGW
| OPT_EA
, OPT_REGW
))
61 ALT(DEF_ASM_OP2(bsrw
, 0x0fbd, 0, OPC_MODRM
| OPC_WL
, OPT_REGW
| OPT_EA
, OPT_REGW
))
63 ALT(DEF_ASM_OP2(btw
, 0x0fa3, 0, OPC_MODRM
| OPC_WL
, OPT_REGW
, OPT_REGW
| OPT_EA
))
64 ALT(DEF_ASM_OP2(btw
, 0x0fba, 4, OPC_MODRM
| OPC_WL
, OPT_IM8
, OPT_REGW
| OPT_EA
))
66 ALT(DEF_ASM_OP2(btsw
, 0x0fab, 0, OPC_MODRM
| OPC_WL
, OPT_REGW
, OPT_REGW
| OPT_EA
))
67 ALT(DEF_ASM_OP2(btsw
, 0x0fba, 5, OPC_MODRM
| OPC_WL
, OPT_IM8
, OPT_REGW
| OPT_EA
))
69 ALT(DEF_ASM_OP2(btrw
, 0x0fb3, 0, OPC_MODRM
| OPC_WL
, OPT_REGW
, OPT_REGW
| OPT_EA
))
70 ALT(DEF_ASM_OP2(btrw
, 0x0fba, 6, OPC_MODRM
| OPC_WL
, OPT_IM8
, OPT_REGW
| OPT_EA
))
72 ALT(DEF_ASM_OP2(btcw
, 0x0fbb, 0, OPC_MODRM
| OPC_WL
, OPT_REGW
, OPT_REGW
| OPT_EA
))
73 ALT(DEF_ASM_OP2(btcw
, 0x0fba, 7, OPC_MODRM
| OPC_WL
, OPT_IM8
, OPT_REGW
| OPT_EA
))
76 DEF_ASM_OP0(wait
, 0x9b)
77 DEF_ASM_OP0(fwait
, 0x9b)
79 DEF_ASM_OP0(a32
, 0x67)
80 DEF_ASM_OP0(o32
, 0x66)
82 DEF_ASM_OP0(aword
, 0x67)
83 DEF_ASM_OP0(addr16
, 0x67)
84 ALT(DEF_ASM_OP0(word
, 0x66))
85 DEF_ASM_OP0(data16
, 0x66)
87 DEF_ASM_OP0(lock
, 0xf0)
88 DEF_ASM_OP0(rep
, 0xf3)
89 DEF_ASM_OP0(repe
, 0xf3)
90 DEF_ASM_OP0(repz
, 0xf3)
91 DEF_ASM_OP0(repne
, 0xf2)
92 DEF_ASM_OP0(repnz
, 0xf2)
94 DEF_ASM_OP0(invd
, 0x0f08)
95 DEF_ASM_OP0(wbinvd
, 0x0f09)
96 DEF_ASM_OP0(cpuid
, 0x0fa2)
97 DEF_ASM_OP0(wrmsr
, 0x0f30)
98 DEF_ASM_OP0(rdtsc
, 0x0f31)
99 DEF_ASM_OP0(rdmsr
, 0x0f32)
100 DEF_ASM_OP0(rdpmc
, 0x0f33)
101 DEF_ASM_OP0(ud2
, 0x0f0b)
103 /* NOTE: we took the same order as gas opcode definition order */
104 ALT(DEF_ASM_OP2(movb
, 0xa0, 0, OPC_BWL
, OPT_ADDR
, OPT_EAX
))
105 ALT(DEF_ASM_OP2(movb
, 0xa2, 0, OPC_BWL
, OPT_EAX
, OPT_ADDR
))
106 ALT(DEF_ASM_OP2(movb
, 0x88, 0, OPC_MODRM
| OPC_BWL
, OPT_REG
, OPT_EA
| OPT_REG
))
107 ALT(DEF_ASM_OP2(movb
, 0x8a, 0, OPC_MODRM
| OPC_BWL
, OPT_EA
| OPT_REG
, OPT_REG
))
108 ALT(DEF_ASM_OP2(movb
, 0xb0, 0, OPC_REG
| OPC_BWL
, OPT_IM
, OPT_REG
))
109 ALT(DEF_ASM_OP2(movb
, 0xc6, 0, OPC_MODRM
| OPC_BWL
, OPT_IM
, OPT_REG
| OPT_EA
))
111 ALT(DEF_ASM_OP2(movw
, 0x8c, 0, OPC_MODRM
| OPC_WL
, OPT_SEG
, OPT_EA
| OPT_REG
))
112 ALT(DEF_ASM_OP2(movw
, 0x8e, 0, OPC_MODRM
| OPC_WL
, OPT_EA
| OPT_REG
, OPT_SEG
))
114 ALT(DEF_ASM_OP2(movw
, 0x0f20, 0, OPC_MODRM
| OPC_WL
, OPT_CR
, OPT_REG32
))
115 ALT(DEF_ASM_OP2(movw
, 0x0f21, 0, OPC_MODRM
| OPC_WL
, OPT_DB
, OPT_REG32
))
116 ALT(DEF_ASM_OP2(movw
, 0x0f24, 0, OPC_MODRM
| OPC_WL
, OPT_TR
, OPT_REG32
))
117 ALT(DEF_ASM_OP2(movw
, 0x0f22, 0, OPC_MODRM
| OPC_WL
, OPT_REG32
, OPT_CR
))
118 ALT(DEF_ASM_OP2(movw
, 0x0f23, 0, OPC_MODRM
| OPC_WL
, OPT_REG32
, OPT_DB
))
119 ALT(DEF_ASM_OP2(movw
, 0x0f26, 0, OPC_MODRM
| OPC_WL
, OPT_REG32
, OPT_TR
))
121 ALT(DEF_ASM_OP2(movsbl
, 0x0fbe, 0, OPC_MODRM
, OPT_REG8
| OPT_EA
, OPT_REG32
))
122 ALT(DEF_ASM_OP2(movsbw
, 0x0fbe, 0, OPC_MODRM
| OPC_D16
, OPT_REG8
| OPT_EA
, OPT_REG16
))
123 ALT(DEF_ASM_OP2(movswl
, 0x0fbf, 0, OPC_MODRM
, OPT_REG16
| OPT_EA
, OPT_REG32
))
124 ALT(DEF_ASM_OP2(movzbw
, 0x0fb6, 0, OPC_MODRM
| OPC_WL
, OPT_REG8
| OPT_EA
, OPT_REGW
))
125 ALT(DEF_ASM_OP2(movzwl
, 0x0fb7, 0, OPC_MODRM
, OPT_REG16
| OPT_EA
, OPT_REG32
))
127 ALT(DEF_ASM_OP1(pushw
, 0x50, 0, OPC_REG
| OPC_WL
, OPT_REGW
))
128 ALT(DEF_ASM_OP1(pushw
, 0xff, 6, OPC_MODRM
| OPC_WL
, OPT_REGW
| OPT_EA
))
129 ALT(DEF_ASM_OP1(pushw
, 0x6a, 0, OPC_WL
, OPT_IM8S
))
130 ALT(DEF_ASM_OP1(pushw
, 0x68, 0, OPC_WL
, OPT_IM32
))
131 ALT(DEF_ASM_OP1(pushw
, 0x06, 0, OPC_WL
, OPT_SEG
))
133 ALT(DEF_ASM_OP1(popw
, 0x58, 0, OPC_REG
| OPC_WL
, OPT_REGW
))
134 ALT(DEF_ASM_OP1(popw
, 0x8f, 0, OPC_MODRM
| OPC_WL
, OPT_REGW
| OPT_EA
))
135 ALT(DEF_ASM_OP1(popw
, 0x07, 0, OPC_WL
, OPT_SEG
))
137 ALT(DEF_ASM_OP2(xchgw
, 0x90, 0, OPC_REG
| OPC_WL
, OPT_REG
, OPT_EAX
))
138 ALT(DEF_ASM_OP2(xchgw
, 0x90, 0, OPC_REG
| OPC_WL
, OPT_EAX
, OPT_REG
))
139 ALT(DEF_ASM_OP2(xchgb
, 0x86, 0, OPC_MODRM
| OPC_BWL
, OPT_REG
, OPT_EA
| OPT_REG
))
140 ALT(DEF_ASM_OP2(xchgb
, 0x86, 0, OPC_MODRM
| OPC_BWL
, OPT_EA
| OPT_REG
, OPT_REG
))
142 ALT(DEF_ASM_OP2(inb
, 0xe4, 0, OPC_BWL
, OPT_IM8
, OPT_EAX
))
143 ALT(DEF_ASM_OP1(inb
, 0xe4, 0, OPC_BWL
, OPT_IM8
))
144 ALT(DEF_ASM_OP2(inb
, 0xec, 0, OPC_BWL
, OPT_DX
, OPT_EAX
))
145 ALT(DEF_ASM_OP1(inb
, 0xec, 0, OPC_BWL
, OPT_DX
))
147 ALT(DEF_ASM_OP2(outb
, 0xe6, 0, OPC_BWL
, OPT_EAX
, OPT_IM8
))
148 ALT(DEF_ASM_OP1(outb
, 0xe6, 0, OPC_BWL
, OPT_IM8
))
149 ALT(DEF_ASM_OP2(outb
, 0xee, 0, OPC_BWL
, OPT_EAX
, OPT_DX
))
150 ALT(DEF_ASM_OP1(outb
, 0xee, 0, OPC_BWL
, OPT_DX
))
152 ALT(DEF_ASM_OP2(leaw
, 0x8d, 0, OPC_MODRM
| OPC_WL
, OPT_EA
, OPT_REG
))
154 ALT(DEF_ASM_OP2(les
, 0xc4, 0, OPC_MODRM
, OPT_EA
, OPT_REG32
))
155 ALT(DEF_ASM_OP2(lds
, 0xc5, 0, OPC_MODRM
, OPT_EA
, OPT_REG32
))
156 ALT(DEF_ASM_OP2(lss
, 0x0fb2, 0, OPC_MODRM
, OPT_EA
, OPT_REG32
))
157 ALT(DEF_ASM_OP2(lfs
, 0x0fb4, 0, OPC_MODRM
, OPT_EA
, OPT_REG32
))
158 ALT(DEF_ASM_OP2(lgs
, 0x0fb5, 0, OPC_MODRM
, OPT_EA
, OPT_REG32
))
161 ALT(DEF_ASM_OP2(addb
, 0x00, 0, OPC_ARITH
| OPC_MODRM
| OPC_BWL
, OPT_REG
, OPT_EA
| OPT_REG
)) /* XXX: use D bit ? */
162 ALT(DEF_ASM_OP2(addb
, 0x02, 0, OPC_ARITH
| OPC_MODRM
| OPC_BWL
, OPT_EA
| OPT_REG
, OPT_REG
))
163 ALT(DEF_ASM_OP2(addb
, 0x04, 0, OPC_ARITH
| OPC_BWL
, OPT_IM
, OPT_EAX
))
164 ALT(DEF_ASM_OP2(addb
, 0x80, 0, OPC_ARITH
| OPC_MODRM
| OPC_BWL
, OPT_IM
, OPT_EA
| OPT_REG
))
165 ALT(DEF_ASM_OP2(addw
, 0x83, 0, OPC_ARITH
| OPC_MODRM
| OPC_WL
, OPT_IM8S
, OPT_EA
| OPT_REG
))
167 ALT(DEF_ASM_OP2(testb
, 0x84, 0, OPC_MODRM
| OPC_BWL
, OPT_EA
| OPT_REG
, OPT_REG
))
168 ALT(DEF_ASM_OP2(testb
, 0x84, 0, OPC_MODRM
| OPC_BWL
, OPT_REG
, OPT_EA
| OPT_REG
))
169 ALT(DEF_ASM_OP2(testb
, 0xa8, 0, OPC_BWL
, OPT_IM
, OPT_EAX
))
170 ALT(DEF_ASM_OP2(testb
, 0xf6, 0, OPC_MODRM
| OPC_BWL
, OPT_IM
, OPT_EA
| OPT_REG
))
172 ALT(DEF_ASM_OP1(incw
, 0x40, 0, OPC_REG
| OPC_WL
, OPT_REGW
))
173 ALT(DEF_ASM_OP1(incb
, 0xfe, 0, OPC_MODRM
| OPC_BWL
, OPT_REG
| OPT_EA
))
174 ALT(DEF_ASM_OP1(decw
, 0x48, 0, OPC_REG
| OPC_WL
, OPT_REGW
))
175 ALT(DEF_ASM_OP1(decb
, 0xfe, 1, OPC_MODRM
| OPC_BWL
, OPT_REG
| OPT_EA
))
177 ALT(DEF_ASM_OP1(notb
, 0xf6, 2, OPC_MODRM
| OPC_BWL
, OPT_REG
| OPT_EA
))
178 ALT(DEF_ASM_OP1(negb
, 0xf6, 3, OPC_MODRM
| OPC_BWL
, OPT_REG
| OPT_EA
))
180 ALT(DEF_ASM_OP1(mulb
, 0xf6, 4, OPC_MODRM
| OPC_BWL
, OPT_REG
| OPT_EA
))
181 ALT(DEF_ASM_OP1(imulb
, 0xf6, 5, OPC_MODRM
| OPC_BWL
, OPT_REG
| OPT_EA
))
183 ALT(DEF_ASM_OP2(imulw
, 0x0faf, 0, OPC_MODRM
| OPC_WL
, OPT_REG
| OPT_EA
, OPT_REG
))
184 ALT(DEF_ASM_OP3(imulw
, 0x6b, 0, OPC_MODRM
| OPC_WL
, OPT_IM8S
, OPT_REGW
| OPT_EA
, OPT_REGW
))
185 ALT(DEF_ASM_OP2(imulw
, 0x6b, 0, OPC_MODRM
| OPC_WL
, OPT_IM8S
, OPT_REGW
))
186 ALT(DEF_ASM_OP3(imulw
, 0x69, 0, OPC_MODRM
| OPC_WL
, OPT_IMW
, OPT_REGW
| OPT_EA
, OPT_REGW
))
187 ALT(DEF_ASM_OP2(imulw
, 0x69, 0, OPC_MODRM
| OPC_WL
, OPT_IMW
, OPT_REGW
))
189 ALT(DEF_ASM_OP1(divb
, 0xf6, 6, OPC_MODRM
| OPC_BWL
, OPT_REG
| OPT_EA
))
190 ALT(DEF_ASM_OP2(divb
, 0xf6, 6, OPC_MODRM
| OPC_BWL
, OPT_REG
| OPT_EA
, OPT_EAX
))
191 ALT(DEF_ASM_OP1(idivb
, 0xf6, 7, OPC_MODRM
| OPC_BWL
, OPT_REG
| OPT_EA
))
192 ALT(DEF_ASM_OP2(idivb
, 0xf6, 7, OPC_MODRM
| OPC_BWL
, OPT_REG
| OPT_EA
, OPT_EAX
))
195 ALT(DEF_ASM_OP2(rolb
, 0xc0, 0, OPC_MODRM
| OPC_BWL
| OPC_SHIFT
, OPT_IM8
, OPT_EA
| OPT_REG
))
196 ALT(DEF_ASM_OP2(rolb
, 0xd2, 0, OPC_MODRM
| OPC_BWL
| OPC_SHIFT
, OPT_CL
, OPT_EA
| OPT_REG
))
197 ALT(DEF_ASM_OP1(rolb
, 0xd0, 0, OPC_MODRM
| OPC_BWL
| OPC_SHIFT
, OPT_EA
| OPT_REG
))
199 ALT(DEF_ASM_OP3(shldw
, 0x0fa4, 0, OPC_MODRM
| OPC_WL
, OPT_IM8
, OPT_REGW
, OPT_EA
| OPT_REGW
))
200 ALT(DEF_ASM_OP3(shldw
, 0x0fa5, 0, OPC_MODRM
| OPC_WL
, OPT_CL
, OPT_REGW
, OPT_EA
| OPT_REGW
))
201 ALT(DEF_ASM_OP2(shldw
, 0x0fa5, 0, OPC_MODRM
| OPC_WL
, OPT_REGW
, OPT_EA
| OPT_REGW
))
202 ALT(DEF_ASM_OP3(shrdw
, 0x0fac, 0, OPC_MODRM
| OPC_WL
, OPT_IM8
, OPT_REGW
, OPT_EA
| OPT_REGW
))
203 ALT(DEF_ASM_OP3(shrdw
, 0x0fad, 0, OPC_MODRM
| OPC_WL
, OPT_CL
, OPT_REGW
, OPT_EA
| OPT_REGW
))
204 ALT(DEF_ASM_OP2(shrdw
, 0x0fad, 0, OPC_MODRM
| OPC_WL
, OPT_REGW
, OPT_EA
| OPT_REGW
))
206 ALT(DEF_ASM_OP1(call
, 0xff, 2, OPC_MODRM
, OPT_INDIR
))
207 ALT(DEF_ASM_OP1(call
, 0xe8, 0, OPC_JMP
, OPT_ADDR
))
208 ALT(DEF_ASM_OP1(jmp
, 0xff, 4, OPC_MODRM
, OPT_INDIR
))
209 ALT(DEF_ASM_OP1(jmp
, 0xeb, 0, OPC_SHORTJMP
| OPC_JMP
, OPT_ADDR
))
211 ALT(DEF_ASM_OP1(jmp
, 0xff, 0, OPC_JMP
| OPC_WL
, OPT_REGW
))
214 ALT(DEF_ASM_OP2(lcall
, 0x9a, 0, 0, OPT_IM16
, OPT_IM32
))
215 ALT(DEF_ASM_OP1(lcall
, 0xff, 3, 0, OPT_EA
))
216 ALT(DEF_ASM_OP2(ljmp
, 0xea, 0, 0, OPT_IM16
, OPT_IM32
))
217 ALT(DEF_ASM_OP1(ljmp
, 0xff, 5, 0, OPT_EA
))
219 ALT(DEF_ASM_OP1(int, 0xcd, 0, 0, OPT_IM8
))
220 ALT(DEF_ASM_OP1(seto
, 0x0f90, 0, OPC_MODRM
| OPC_TEST
, OPT_REG8
| OPT_EA
))
221 DEF_ASM_OP2(enter
, 0xc8, 0, 0, OPT_IM16
, OPT_IM8
)
222 DEF_ASM_OP0(leave
, 0xc9)
223 DEF_ASM_OP0(ret
, 0xc3)
224 DEF_ASM_OP0(retl
,0xc3)
225 ALT(DEF_ASM_OP1(retl
,0xc2, 0, 0, OPT_IM16
))
226 ALT(DEF_ASM_OP1(ret
, 0xc2, 0, 0, OPT_IM16
))
227 DEF_ASM_OP0(lret
, 0xcb)
228 ALT(DEF_ASM_OP1(lret
, 0xca, 0, 0, OPT_IM16
))
230 ALT(DEF_ASM_OP1(jo
, 0x70, 0, OPC_SHORTJMP
| OPC_JMP
| OPC_TEST
, OPT_ADDR
))
231 DEF_ASM_OP1(loopne
, 0xe0, 0, OPC_SHORTJMP
, OPT_ADDR
)
232 DEF_ASM_OP1(loopnz
, 0xe0, 0, OPC_SHORTJMP
, OPT_ADDR
)
233 DEF_ASM_OP1(loope
, 0xe1, 0, OPC_SHORTJMP
, OPT_ADDR
)
234 DEF_ASM_OP1(loopz
, 0xe1, 0, OPC_SHORTJMP
, OPT_ADDR
)
235 DEF_ASM_OP1(loop
, 0xe2, 0, OPC_SHORTJMP
, OPT_ADDR
)
236 DEF_ASM_OP1(jecxz
, 0xe3, 0, OPC_SHORTJMP
, OPT_ADDR
)
239 /* specific fcomp handling */
240 ALT(DEF_ASM_OP0L(fcomp
, 0xd8d9, 0, 0))
242 ALT(DEF_ASM_OP1(fadd
, 0xd8c0, 0, OPC_FARITH
| OPC_REG
, OPT_ST
))
243 ALT(DEF_ASM_OP2(fadd
, 0xd8c0, 0, OPC_FARITH
| OPC_REG
, OPT_ST
, OPT_ST0
))
244 ALT(DEF_ASM_OP2(fadd
, 0xdcc0, 0, OPC_FARITH
| OPC_REG
, OPT_ST0
, OPT_ST
))
245 ALT(DEF_ASM_OP2(fmul
, 0xdcc8, 0, OPC_FARITH
| OPC_REG
, OPT_ST0
, OPT_ST
))
246 ALT(DEF_ASM_OP0L(fadd
, 0xdec1, 0, OPC_FARITH
))
247 ALT(DEF_ASM_OP1(faddp
, 0xdec0, 0, OPC_FARITH
| OPC_REG
, OPT_ST
))
248 ALT(DEF_ASM_OP2(faddp
, 0xdec0, 0, OPC_FARITH
| OPC_REG
, OPT_ST
, OPT_ST0
))
249 ALT(DEF_ASM_OP2(faddp
, 0xdec0, 0, OPC_FARITH
| OPC_REG
, OPT_ST0
, OPT_ST
))
250 ALT(DEF_ASM_OP0L(faddp
, 0xdec1, 0, OPC_FARITH
))
251 ALT(DEF_ASM_OP1(fadds
, 0xd8, 0, OPC_FARITH
| OPC_MODRM
, OPT_EA
))
252 ALT(DEF_ASM_OP1(fiaddl
, 0xda, 0, OPC_FARITH
| OPC_MODRM
, OPT_EA
))
253 ALT(DEF_ASM_OP1(faddl
, 0xdc, 0, OPC_FARITH
| OPC_MODRM
, OPT_EA
))
254 ALT(DEF_ASM_OP1(fiadds
, 0xde, 0, OPC_FARITH
| OPC_MODRM
, OPT_EA
))
256 DEF_ASM_OP0(fucompp
, 0xdae9)
257 DEF_ASM_OP0(ftst
, 0xd9e4)
258 DEF_ASM_OP0(fxam
, 0xd9e5)
259 DEF_ASM_OP0(fld1
, 0xd9e8)
260 DEF_ASM_OP0(fldl2t
, 0xd9e9)
261 DEF_ASM_OP0(fldl2e
, 0xd9ea)
262 DEF_ASM_OP0(fldpi
, 0xd9eb)
263 DEF_ASM_OP0(fldlg2
, 0xd9ec)
264 DEF_ASM_OP0(fldln2
, 0xd9ed)
265 DEF_ASM_OP0(fldz
, 0xd9ee)
267 DEF_ASM_OP0(f2xm1
, 0xd9f0)
268 DEF_ASM_OP0(fyl2x
, 0xd9f1)
269 DEF_ASM_OP0(fptan
, 0xd9f2)
270 DEF_ASM_OP0(fpatan
, 0xd9f3)
271 DEF_ASM_OP0(fxtract
, 0xd9f4)
272 DEF_ASM_OP0(fprem1
, 0xd9f5)
273 DEF_ASM_OP0(fdecstp
, 0xd9f6)
274 DEF_ASM_OP0(fincstp
, 0xd9f7)
275 DEF_ASM_OP0(fprem
, 0xd9f8)
276 DEF_ASM_OP0(fyl2xp1
, 0xd9f9)
277 DEF_ASM_OP0(fsqrt
, 0xd9fa)
278 DEF_ASM_OP0(fsincos
, 0xd9fb)
279 DEF_ASM_OP0(frndint
, 0xd9fc)
280 DEF_ASM_OP0(fscale
, 0xd9fd)
281 DEF_ASM_OP0(fsin
, 0xd9fe)
282 DEF_ASM_OP0(fcos
, 0xd9ff)
283 DEF_ASM_OP0(fchs
, 0xd9e0)
284 DEF_ASM_OP0(fabs
, 0xd9e1)
285 DEF_ASM_OP0(fninit
, 0xdbe3)
286 DEF_ASM_OP0(fnclex
, 0xdbe2)
287 DEF_ASM_OP0(fnop
, 0xd9d0)
290 DEF_ASM_OP1(fld
, 0xd9c0, 0, OPC_REG
, OPT_ST
)
291 DEF_ASM_OP1(fldl
, 0xd9c0, 0, OPC_REG
, OPT_ST
)
292 DEF_ASM_OP1(flds
, 0xd9, 0, OPC_MODRM
, OPT_EA
)
293 ALT(DEF_ASM_OP1(fldl
, 0xdd, 0, OPC_MODRM
, OPT_EA
))
294 DEF_ASM_OP1(fildl
, 0xdb, 0, OPC_MODRM
, OPT_EA
)
295 DEF_ASM_OP1(fildq
, 0xdf, 5, OPC_MODRM
, OPT_EA
)
296 DEF_ASM_OP1(fildll
, 0xdf, 5, OPC_MODRM
,OPT_EA
)
297 DEF_ASM_OP1(fldt
, 0xdb, 5, OPC_MODRM
, OPT_EA
)
298 DEF_ASM_OP1(fbld
, 0xdf, 4, OPC_MODRM
, OPT_EA
)
301 DEF_ASM_OP1(fst
, 0xddd0, 0, OPC_REG
, OPT_ST
)
302 DEF_ASM_OP1(fstl
, 0xddd0, 0, OPC_REG
, OPT_ST
)
303 DEF_ASM_OP1(fsts
, 0xd9, 2, OPC_MODRM
, OPT_EA
)
304 DEF_ASM_OP1(fstps
, 0xd9, 3, OPC_MODRM
, OPT_EA
)
305 ALT(DEF_ASM_OP1(fstl
, 0xdd, 2, OPC_MODRM
, OPT_EA
))
306 DEF_ASM_OP1(fstpl
, 0xdd, 3, OPC_MODRM
, OPT_EA
)
307 DEF_ASM_OP1(fist
, 0xdf, 2, OPC_MODRM
, OPT_EA
)
308 DEF_ASM_OP1(fistp
, 0xdf, 3, OPC_MODRM
, OPT_EA
)
309 DEF_ASM_OP1(fistl
, 0xdb, 2, OPC_MODRM
, OPT_EA
)
310 DEF_ASM_OP1(fistpl
, 0xdb, 3, OPC_MODRM
, OPT_EA
)
312 DEF_ASM_OP1(fstp
, 0xddd8, 0, OPC_REG
, OPT_ST
)
313 DEF_ASM_OP1(fistpq
, 0xdf, 7, OPC_MODRM
, OPT_EA
)
314 DEF_ASM_OP1(fistpll
, 0xdf, 7, OPC_MODRM
, OPT_EA
)
315 DEF_ASM_OP1(fstpt
, 0xdb, 7, OPC_MODRM
, OPT_EA
)
316 DEF_ASM_OP1(fbstp
, 0xdf, 6, OPC_MODRM
, OPT_EA
)
319 DEF_ASM_OP0(fxch
, 0xd9c9)
320 ALT(DEF_ASM_OP1(fxch
, 0xd9c8, 0, OPC_REG
, OPT_ST
))
323 DEF_ASM_OP1(fucom
, 0xdde0, 0, OPC_REG
, OPT_ST
)
324 DEF_ASM_OP1(fucomp
, 0xdde8, 0, OPC_REG
, OPT_ST
)
326 DEF_ASM_OP0L(finit
, 0xdbe3, 0, OPC_FWAIT
)
327 DEF_ASM_OP1(fldcw
, 0xd9, 5, OPC_MODRM
, OPT_EA
)
328 DEF_ASM_OP1(fnstcw
, 0xd9, 7, OPC_MODRM
, OPT_EA
)
329 DEF_ASM_OP1(fstcw
, 0xd9, 7, OPC_MODRM
| OPC_FWAIT
, OPT_EA
)
330 DEF_ASM_OP0(fnstsw
, 0xdfe0)
331 ALT(DEF_ASM_OP1(fnstsw
, 0xdfe0, 0, 0, OPT_EAX
))
332 ALT(DEF_ASM_OP1(fnstsw
, 0xdd, 7, OPC_MODRM
, OPT_EA
))
333 DEF_ASM_OP1(fstsw
, 0xdfe0, 0, OPC_FWAIT
, OPT_EAX
)
334 ALT(DEF_ASM_OP0L(fstsw
, 0xdfe0, 0, OPC_FWAIT
))
335 ALT(DEF_ASM_OP1(fstsw
, 0xdd, 7, OPC_MODRM
| OPC_FWAIT
, OPT_EA
))
336 DEF_ASM_OP0L(fclex
, 0xdbe2, 0, OPC_FWAIT
)
337 DEF_ASM_OP1(fnstenv
, 0xd9, 6, OPC_MODRM
, OPT_EA
)
338 DEF_ASM_OP1(fstenv
, 0xd9, 6, OPC_MODRM
| OPC_FWAIT
, OPT_EA
)
339 DEF_ASM_OP1(fldenv
, 0xd9, 4, OPC_MODRM
, OPT_EA
)
340 DEF_ASM_OP1(fnsave
, 0xdd, 6, OPC_MODRM
, OPT_EA
)
341 DEF_ASM_OP1(fsave
, 0xdd, 6, OPC_MODRM
| OPC_FWAIT
, OPT_EA
)
342 DEF_ASM_OP1(frstor
, 0xdd, 4, OPC_MODRM
, OPT_EA
)
343 DEF_ASM_OP1(ffree
, 0xddc0, 4, OPC_REG
, OPT_ST
)
344 DEF_ASM_OP1(ffreep
, 0xdfc0, 4, OPC_REG
, OPT_ST
)
345 DEF_ASM_OP1(fxsave
, 0x0fae, 0, OPC_MODRM
, OPT_EA
)
346 DEF_ASM_OP1(fxrstor
, 0x0fae, 1, OPC_MODRM
, OPT_EA
)
349 DEF_ASM_OP2(arpl
, 0x63, 0, OPC_MODRM
, OPT_REG16
, OPT_REG16
| OPT_EA
)
350 DEF_ASM_OP2(lar
, 0x0f02, 0, OPC_MODRM
, OPT_REG32
| OPT_EA
, OPT_REG32
)
351 DEF_ASM_OP1(lgdt
, 0x0f01, 2, OPC_MODRM
, OPT_EA
)
352 DEF_ASM_OP1(lidt
, 0x0f01, 3, OPC_MODRM
, OPT_EA
)
353 DEF_ASM_OP1(lldt
, 0x0f00, 2, OPC_MODRM
, OPT_EA
| OPT_REG
)
354 DEF_ASM_OP1(lmsw
, 0x0f01, 6, OPC_MODRM
, OPT_EA
| OPT_REG
)
355 ALT(DEF_ASM_OP2(lslw
, 0x0f03, 0, OPC_MODRM
| OPC_WL
, OPT_EA
| OPT_REG
, OPT_REG
))
356 DEF_ASM_OP1(ltr
, 0x0f00, 3, OPC_MODRM
, OPT_EA
| OPT_REG
)
357 DEF_ASM_OP1(sgdt
, 0x0f01, 0, OPC_MODRM
, OPT_EA
)
358 DEF_ASM_OP1(sidt
, 0x0f01, 1, OPC_MODRM
, OPT_EA
)
359 DEF_ASM_OP1(sldt
, 0x0f00, 0, OPC_MODRM
, OPT_REG
| OPT_EA
)
360 DEF_ASM_OP1(smsw
, 0x0f01, 4, OPC_MODRM
, OPT_REG
| OPT_EA
)
361 DEF_ASM_OP1(str
, 0x0f00, 1, OPC_MODRM
, OPT_REG16
| OPT_EA
)
362 DEF_ASM_OP1(verr
, 0x0f00, 4, OPC_MODRM
, OPT_REG
| OPT_EA
)
363 DEF_ASM_OP1(verw
, 0x0f00, 5, OPC_MODRM
, OPT_REG
| OPT_EA
)
367 DEF_ASM_OP0(loadall386
, 0x0f07)
371 DEF_ASM_OP1(bswap
, 0x0fc8, 0, OPC_REG
, OPT_REG32
)
372 ALT(DEF_ASM_OP2(xaddb
, 0x0fc0, 0, OPC_MODRM
| OPC_BWL
, OPT_REG
, OPT_REG
| OPT_EA
))
373 ALT(DEF_ASM_OP2(cmpxchgb
, 0x0fb0, 0, OPC_MODRM
| OPC_BWL
, OPT_REG
, OPT_REG
| OPT_EA
))
374 DEF_ASM_OP1(invlpg
, 0x0f01, 7, OPC_MODRM
, OPT_EA
)
376 DEF_ASM_OP2(boundl
, 0x62, 0, OPC_MODRM
, OPT_REG32
, OPT_EA
)
377 DEF_ASM_OP2(boundw
, 0x62, 0, OPC_MODRM
| OPC_D16
, OPT_REG16
, OPT_EA
)
380 DEF_ASM_OP1(cmpxchg8b
, 0x0fc7, 1, OPC_MODRM
, OPT_EA
)
383 ALT(DEF_ASM_OP2(cmovo
, 0x0f40, 0, OPC_MODRM
| OPC_TEST
, OPT_REG32
| OPT_EA
, OPT_REG32
))
385 ALT(DEF_ASM_OP2(cmovno
, 0x0f41, 0, OPC_MODRM
| OPC_TEST
, OPT_REG32
| OPT_EA
, OPT_REG32
))
386 ALT(DEF_ASM_OP2(cmovc
, 0x0f42, 0, OPC_MODRM
| OPC_TEST
, OPT_REG32
| OPT_EA
, OPT_REG32
))
387 ALT(DEF_ASM_OP2(cmovnc
, 0x0f43, 0, OPC_MODRM
| OPC_TEST
, OPT_REG32
| OPT_EA
, OPT_REG32
))
388 ALT(DEF_ASM_OP2(cmovz
, 0x0f44, 0, OPC_MODRM
| OPC_TEST
, OPT_REG32
| OPT_EA
, OPT_REG32
))
389 ALT(DEF_ASM_OP2(cmovnz
, 0x0f45, 0, OPC_MODRM
| OPC_TEST
, OPT_REG32
| OPT_EA
, OPT_REG32
))
390 ALT(DEF_ASM_OP2(cmovna
, 0x0f46, 0, OPC_MODRM
| OPC_TEST
, OPT_REG32
| OPT_EA
, OPT_REG32
))
391 ALT(DEF_ASM_OP2(cmova
, 0x0f47, 0, OPC_MODRM
| OPC_TEST
, OPT_REG32
| OPT_EA
, OPT_REG32
))
393 DEF_ASM_OP2(fcmovb
, 0xdac0, 0, OPC_REG
, OPT_ST
, OPT_ST0
)
394 DEF_ASM_OP2(fcmove
, 0xdac8, 0, OPC_REG
, OPT_ST
, OPT_ST0
)
395 DEF_ASM_OP2(fcmovbe
, 0xdad0, 0, OPC_REG
, OPT_ST
, OPT_ST0
)
396 DEF_ASM_OP2(fcmovu
, 0xdad8, 0, OPC_REG
, OPT_ST
, OPT_ST0
)
397 DEF_ASM_OP2(fcmovnb
, 0xdbc0, 0, OPC_REG
, OPT_ST
, OPT_ST0
)
398 DEF_ASM_OP2(fcmovne
, 0xdbc8, 0, OPC_REG
, OPT_ST
, OPT_ST0
)
399 DEF_ASM_OP2(fcmovnbe
, 0xdbd0, 0, OPC_REG
, OPT_ST
, OPT_ST0
)
400 DEF_ASM_OP2(fcmovnu
, 0xdbd8, 0, OPC_REG
, OPT_ST
, OPT_ST0
)
402 DEF_ASM_OP2(fucomi
, 0xdbe8, 0, OPC_REG
, OPT_ST
, OPT_ST0
)
403 DEF_ASM_OP2(fcomi
, 0xdbf0, 0, OPC_REG
, OPT_ST
, OPT_ST0
)
404 DEF_ASM_OP2(fucomip
, 0xdfe8, 0, OPC_REG
, OPT_ST
, OPT_ST0
)
405 DEF_ASM_OP2(fcomip
, 0xdff0, 0, OPC_REG
, OPT_ST
, OPT_ST0
)
408 DEF_ASM_OP0(emms
, 0x0f77) /* must be last OP0 */
410 DEF_ASM_OP2(movd
, 0x0f6e, 0, OPC_MODRM
, OPT_EA
| OPT_REG32
, OPT_MMX
)
411 ALT(DEF_ASM_OP2(movd
, 0x0f7e, 0, OPC_MODRM
, OPT_MMX
, OPT_EA
| OPT_REG32
))
412 DEF_ASM_OP2(movq
, 0x0f6f, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
413 ALT(DEF_ASM_OP2(movq
, 0x0f7f, 0, OPC_MODRM
, OPT_MMX
, OPT_EA
| OPT_MMX
))
414 DEF_ASM_OP2(packssdw
, 0x0f6b, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
415 DEF_ASM_OP2(packsswb
, 0x0f63, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
416 DEF_ASM_OP2(packuswb
, 0x0f67, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
417 DEF_ASM_OP2(paddb
, 0x0ffc, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
418 DEF_ASM_OP2(paddw
, 0x0ffd, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
419 DEF_ASM_OP2(paddd
, 0x0ffe, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
420 DEF_ASM_OP2(paddsb
, 0x0fec, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
421 DEF_ASM_OP2(paddsw
, 0x0fed, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
422 DEF_ASM_OP2(paddusb
, 0x0fdc, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
423 DEF_ASM_OP2(paddusw
, 0x0fdd, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
424 DEF_ASM_OP2(pand
, 0x0fdb, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
425 DEF_ASM_OP2(pandn
, 0x0fdf, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
426 DEF_ASM_OP2(pcmpeqb
, 0x0f74, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
427 DEF_ASM_OP2(pcmpeqw
, 0x0f75, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
428 DEF_ASM_OP2(pcmpeqd
, 0x0f76, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
429 DEF_ASM_OP2(pcmpgtb
, 0x0f64, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
430 DEF_ASM_OP2(pcmpgtw
, 0x0f65, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
431 DEF_ASM_OP2(pcmpgtd
, 0x0f66, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
432 DEF_ASM_OP2(pmaddwd
, 0x0ff5, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
433 DEF_ASM_OP2(pmulhw
, 0x0fe5, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
434 DEF_ASM_OP2(pmullw
, 0x0fd5, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
435 DEF_ASM_OP2(por
, 0x0feb, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
436 DEF_ASM_OP2(psllw
, 0x0ff1, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
437 ALT(DEF_ASM_OP2(psllw
, 0x0f71, 6, OPC_MODRM
, OPT_IM8
, OPT_MMX
))
438 DEF_ASM_OP2(pslld
, 0x0ff2, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
439 ALT(DEF_ASM_OP2(pslld
, 0x0f72, 6, OPC_MODRM
, OPT_IM8
, OPT_MMX
))
440 DEF_ASM_OP2(psllq
, 0x0ff3, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
441 ALT(DEF_ASM_OP2(psllq
, 0x0f73, 6, OPC_MODRM
, OPT_IM8
, OPT_MMX
))
442 DEF_ASM_OP2(psraw
, 0x0fe1, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
443 ALT(DEF_ASM_OP2(psraw
, 0x0f71, 4, OPC_MODRM
, OPT_IM8
, OPT_MMX
))
444 DEF_ASM_OP2(psrad
, 0x0fe2, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
445 ALT(DEF_ASM_OP2(psrad
, 0x0f72, 4, OPC_MODRM
, OPT_IM8
, OPT_MMX
))
446 DEF_ASM_OP2(psrlw
, 0x0fd1, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
447 ALT(DEF_ASM_OP2(psrlw
, 0x0f71, 2, OPC_MODRM
, OPT_IM8
, OPT_MMX
))
448 DEF_ASM_OP2(psrld
, 0x0fd2, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
449 ALT(DEF_ASM_OP2(psrld
, 0x0f72, 2, OPC_MODRM
, OPT_IM8
, OPT_MMX
))
450 DEF_ASM_OP2(psrlq
, 0x0fd3, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
451 ALT(DEF_ASM_OP2(psrlq
, 0x0f73, 2, OPC_MODRM
, OPT_IM8
, OPT_MMX
))
452 DEF_ASM_OP2(psubb
, 0x0ff8, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
453 DEF_ASM_OP2(psubw
, 0x0ff9, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
454 DEF_ASM_OP2(psubd
, 0x0ffa, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
455 DEF_ASM_OP2(psubsb
, 0x0fe8, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
456 DEF_ASM_OP2(psubsw
, 0x0fe9, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
457 DEF_ASM_OP2(psubusb
, 0x0fd8, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
458 DEF_ASM_OP2(psubusw
, 0x0fd9, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
459 DEF_ASM_OP2(punpckhbw
, 0x0f68, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
460 DEF_ASM_OP2(punpckhwd
, 0x0f69, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
461 DEF_ASM_OP2(punpckhdq
, 0x0f6a, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
462 DEF_ASM_OP2(punpcklbw
, 0x0f60, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
463 DEF_ASM_OP2(punpcklwd
, 0x0f61, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
464 DEF_ASM_OP2(punpckldq
, 0x0f62, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)
465 DEF_ASM_OP2(pxor
, 0x0fef, 0, OPC_MODRM
, OPT_EA
| OPT_MMX
, OPT_MMX
)