x86.ml 151 KB
Newer Older
mb0's avatar
Track.    
mb0 committed
1
granularity = 8
mb0's avatar
mb0 committed
2
export = decode
mb0's avatar
Track.    
mb0 committed
3
4
5
6
7
8
9
10
11
12
13
14
15

# Optional arguments
#
# Limit:
#   - Restricts the maximium size of the decode-stream
# Recursion-depth:
#   - Annotate the maximum number of recursion steps for
#     the given decoder. This way, we can compute an upper
#     bound for the maximum used storage for the emitted AST.
#     Additionally, the decoder may fail if during runtime
#     a recrusion depth violation occurs.
#
# limit = 120
mb0's avatar
mb0 committed
16
# recursion-depth = p64 = 4
mb0's avatar
Track.    
mb0 committed
17
18
19
20
21
22
23
24
25
26
27
28
29

val decode = do
   update
      @{mode64='1',
        repne='0',
        rep='0',
        rex='0',
        rexw='0',
        rexb='0',
        rexr='0',
        rexx='0',
        opndsz='0',
        addrsz='0',
mb0's avatar
mb0 committed
30
        lock='0',
mb0's avatar
Track.    
mb0 committed
31
        segment=DS,
mb0's avatar
mb0 committed
32
        ptrty=32}; #TODO: check
mb0's avatar
Track.    
mb0 committed
33
34
35
   p64
end

Axel Simon's avatar
Axel Simon committed
36
37
val complement v = not v

mb0's avatar
Track.    
mb0 committed
38
39
40
41
42
43
44
45
46
47
val set-opndsz = update@{opndsz='1'}
val set-repne = update@{repne='1'}
val set-rep = update@{rep='1'}

val set-CS = update@{segment=CS}
val set-DS = update@{segment=DS}
val set-ES = update@{segment=ES}
val set-FS = update@{segment=FS}
val set-GS = update@{segment=GS}
val set-SS = update@{segment=SS}
mb0's avatar
mb0 committed
48
val set-lock = update@{lock='1'}
mb0's avatar
Track.    
mb0 committed
49
50
51
52
val set-addrsz = update@{addrsz='1'}

## Decoding prefixes

mb0's avatar
mb0 committed
53
# The functions 'after' and 'continue' are used to try different decoders
Axel Simon's avatar
Axel Simon committed
54
55
56
# in sequence. The first function takes two arguments and runs the first
# one until it calls 'continue', at which point the second decoder is run.

mb0's avatar
mb0 committed
57
val after fst snd = do
58
59
60
  update@{tab=snd};
  r <- fst;
  # make the type checker happy
Axel Simon's avatar
Axel Simon committed
61
  update@{~tab};
62
  return r
Axel Simon's avatar
Axel Simon committed
63
64
65
end

val continue = do
66
67
  t <- query$tab;
  # make the type checker happy
Julian Kranz's avatar
Julian Kranz committed
68
  update@{~tab};
69
70
  # make the type checker happy
  r <- t;
Axel Simon's avatar
Axel Simon committed
71
  update@{~tab};
72
  return r
Axel Simon's avatar
Axel Simon committed
73
74
end

75
76
77
78
# val after fst snd = do
#    update@{tab=snd};
#    fst
# end
Julian Kranz's avatar
Julian Kranz committed
79
#
80
81
82
83
84
# val continue = do
#    t <- query$tab;
#    t
# end

Axel Simon's avatar
Axel Simon committed
85
86
87
88
val /66 [] = continue
val /f2 [] = continue
val /f3 [] = continue

Axel Simon's avatar
Axel Simon committed
89
90
91
92
val /rex-p ['0100 w:1 r:1 x:1 b:1'] =
   update @{rex='1', rexw=w, rexb=b, rexx=x, rexr=r}
val clear-rex = update @{rex='0',rexw='0',rexb='0',rexr='0',rexx='0'}

mb0's avatar
mb0 committed
93
94
95
96
97
98
99
100
val /legacy-p [0x2e] = do clear-rex; set-CS end
val /legacy-p [0x36] = do clear-rex; set-SS end
val /legacy-p [0x3e] = do clear-rex; set-DS end
val /legacy-p [0x26] = do clear-rex; set-ES end
val /legacy-p [0x64] = do clear-rex; set-FS end
val /legacy-p [0x65] = do clear-rex; set-GS end
val /legacy-p [0x67] = do clear-rex; set-addrsz end
val /legacy-p [0xf0] = do clear-rex; set-lock end
mb0's avatar
Track.    
mb0 committed
101

mb0's avatar
mb0 committed
102
val p/vex/0f [0xc4 'r:1 x:1 b:1 00001' 'w:1 v:4 l:1 00'] = do
mb0's avatar
mb0 committed
103
104
105
106
107
108
109
110
   update
      @{rex='1',
        rexw=w,
        vexw=w,
        rexr=not r,
        rexb=not b,
        rexx=not x,
        vexl=l,
111
        vexv=complement v,
mb0's avatar
mb0 committed
112
113
114
        vexm='00001'}
end

mb0's avatar
mb0 committed
115
val p/vex/0f [0xc5 'r:1 v:4 l:1 00'] = do
mb0's avatar
mb0 committed
116
117
118
119
120
121
   update
      @{rex='1',
        rexw='0',
        vexw='0',
        rexr=not r,
        vexl=l,
122
        vexv=complement v,
mb0's avatar
mb0 committed
123
124
125
        vexm='00001'} #TODO: sane default value for vexm,rexw,rexb,..
end

mb0's avatar
mb0 committed
126
val p/vex/66/0f [0xc4 'r:1 x:1 b:1 00001' 'w:1 v:4 l:1 01'] = do
mb0's avatar
mb0 committed
127
128
129
130
131
132
133
134
   update
      @{rex='1',
        rexw=w,
        vexw=w,
        rexr=not r,
        rexb=not b,
        rexx=not x,
        vexl=l,
135
        vexv=complement v,
Julian Kranz's avatar
Julian Kranz committed
136

mb0's avatar
mb0 committed
137
138
139
        vexm='00001'}
end

mb0's avatar
mb0 committed
140
val p/vex/66/0f [0xc5 'r:1 v:4 l:1 01'] = do
mb0's avatar
mb0 committed
141
142
143
144
145
146
   update
      @{rex='1',
        rexw='0',
        vexw='0',
        rexr=not r,
        vexl=l,
147
        vexv=complement v,
mb0's avatar
mb0 committed
148
149
150
        vexm='00001'} #TODO: sane default value for vexm,rexw,rexb,..
end

mb0's avatar
mb0 committed
151
val p/vex/f3/0f [0xc4 'r:1 x:1 b:1 00001' 'w:1 v:4 l:1 10'] = do
mb0's avatar
mb0 committed
152
153
154
155
156
157
158
159
   update
      @{rex='1',
        rexw=w,
        vexw=w,
        rexr=not r,
        rexb=not b,
        rexx=not x,
        vexl=l,
160
        vexv=complement v,
mb0's avatar
mb0 committed
161
162
163
        vexm='00001'}
end

mb0's avatar
mb0 committed
164
val p/vex/f3/0f [0xc5 'r:1 v:4 l:1 10'] = do
mb0's avatar
mb0 committed
165
166
167
168
169
170
   update
      @{rex='1',
        rexw='0',
        vexw='0',
        rexr=not r,
        vexl=l,
171
        vexv=complement v,
mb0's avatar
mb0 committed
172
173
174
        vexm='00001'} #TODO: sane default value for vexm,rexw,rexb,..
end

mb0's avatar
mb0 committed
175
val p/vex/f2/0f [0xc4 'r:1 x:1 b:1 00001' 'w:1 v:4 l:1 11'] = do
mb0's avatar
mb0 committed
176
177
178
179
180
181
182
183
   update
      @{rex='1',
        rexw=w,
        vexw=w,
        rexr=not r,
        rexb=not b,
        rexx=not x,
        vexl=l,
184
        vexv=complement v,
mb0's avatar
mb0 committed
185
186
187
        vexm='00001'}
end

mb0's avatar
mb0 committed
188
val p/vex/f2/0f [0xc5 'r:1 v:4 l:1 11'] = do
mb0's avatar
mb0 committed
189
190
191
192
193
194
   update
      @{rex='1',
        rexw='0',
        vexw='0',
        rexr=not r,
        vexl=l,
195
        vexv=complement v,
mb0's avatar
mb0 committed
196
197
198
        vexm='00001'} #TODO: sane default value for vexm,rexw,rexb,..
end

mb0's avatar
mb0 committed
199
val p/vex/0f/38 [0xc4 'r:1 x:1 b:1 00010' 'w:1 v:4 l:1 00'] = do
mb0's avatar
mb0 committed
200
201
202
203
204
205
206
207
   update
      @{rex='1',
        rexw=w,
        vexw=w,
        rexr=not r,
        rexb=not b,
        rexx=not x,
        vexl=l,
208
        vexv=complement v,
mb0's avatar
mb0 committed
209
210
211
        vexm='00010'}
end

mb0's avatar
mb0 committed
212
val p/vex/66/0f/38 [0xc4 'r:1 x:1 b:1 00010' 'w:1 v:4 l:1 01'] = do
mb0's avatar
mb0 committed
213
214
215
216
217
218
219
220
   update
      @{rex='1',
        rexw=w,
        vexw=w,
        rexr=not r,
        rexb=not b,
        rexx=not x,
        vexl=l,
221
        vexv=complement v,
mb0's avatar
mb0 committed
222
223
224
        vexm='00010'}
end

mb0's avatar
mb0 committed
225
val p/vex/f2/0f/38 [0xc4 'r:1 x:1 b:1 00010' 'w:1 v:4 l:1 11'] = do
mb0's avatar
mb0 committed
226
227
228
229
230
231
232
233
   update
      @{rex='1',
        rexw=w,
        vexw=w,
        rexr=not r,
        rexb=not b,
        rexx=not x,
        vexl=l,
234
        vexv=complement v,
mb0's avatar
mb0 committed
235
236
237
        vexm='00010'}
end

mb0's avatar
mb0 committed
238
val p/vex/f3/0f/38 [0xc4 'r:1 x:1 b:1 00010' 'w:1 v:4 l:1 10'] = do
mb0's avatar
mb0 committed
239
240
241
242
243
244
245
246
   update
      @{rex='1',
        rexw=w,
        vexw=w,
        rexr=not r,
        rexb=not b,
        rexx=not x,
        vexl=l,
247
        vexv=complement v,
mb0's avatar
mb0 committed
248
249
250
        vexm='00010'}
end

mb0's avatar
mb0 committed
251
val p/vex/0f/3a [0xc4 'r:1 x:1 b:1 00011' 'w:1 v:4 l:1 00'] = do
mb0's avatar
mb0 committed
252
253
254
255
256
257
258
259
   update
      @{rex='1',
        rexw=w,
        vexw=w,
        rexr=not r,
        rexb=not b,
        rexx=not x,
        vexl=l,
260
        vexv=complement v,
mb0's avatar
mb0 committed
261
262
263
        vexm='00011'}
end

mb0's avatar
mb0 committed
264
val p/vex/66/0f/3a [0xc4 'r:1 x:1 b:1 00011' 'w:1 v:4 l:1 01'] = do
mb0's avatar
mb0 committed
265
266
267
268
269
270
271
272
   update
      @{rex='1',
        rexw=w,
        vexw=w,
        rexr=not r,
        rexb=not b,
        rexx=not x,
        vexl=l,
273
        vexv=complement v,
mb0's avatar
mb0 committed
274
275
276
        vexm='00011'}
end

mb0's avatar
mb0 committed
277
val p/vex/f2/0f/3a [0xc4 'r:1 x:1 b:1 00011' 'w:1 v:4 l:1 11'] = do
mb0's avatar
mb0 committed
278
279
   update
      @{rex='1',
Julian Kranz's avatar
Julian Kranz committed
280
	rexw=w,
mb0's avatar
mb0 committed
281
282
283
284
285
        vexw=w,
        rexr=not r,
        rexb=not b,
        rexx=not x,
        vexl=l,
286
        vexv=complement v,
mb0's avatar
mb0 committed
287
288
289
        vexm='00011'}
end

mb0's avatar
mb0 committed
290
val p/vex/f3/0f/3a [0xc4 'r:1 x:1 b:1 00011' 'w:1 v:4 l:1 10'] = do
mb0's avatar
mb0 committed
291
292
293
294
295
296
297
298
   update
      @{rex='1',
        rexw=w,
        vexw=w,
        rexr=not r,
        rexb=not b,
        rexx=not x,
        vexl=l,
299
        vexv=complement v,
mb0's avatar
mb0 committed
300
301
302
        vexm='00011'}
end

mb0's avatar
Track.    
mb0 committed
303
304
305
306
val p64 [0x66] = do set-opndsz; p/66 end
val p64 [0xf2] = do set-repne; p/f2 end
val p64 [0xf3] = do set-rep; p/f3 end
val p64 [/legacy-p] = p64
Julian Kranz's avatar
Julian Kranz committed
307
308
309
val p64 [/rex-p]
 | mode64? = p64
 | mode32? = unop INC rex/reg32
mb0's avatar
mb0 committed
310
311
312
313
#val p64 [p/vex/0f] = /vex/0f
val p64 [p/vex/f2/0f] = /vex/f2/0f
val p64 [p/vex/f3/0f] = /vex/f3/0f
val p64 [p/vex/66/0f] = /vex/66/0f
mb0's avatar
mb0 committed
314
315
val p64 [p/vex/66/0f/38] = /vex/66/0f/38
val p64 [p/vex/66/0f/3a] = /vex/66/0f/3a
mb0's avatar
mb0 committed
316
317
#val p64 [p/vex/66/f2/0f] = /vex/66/f2/0f
#val p64 [p/vex/66/f3/0f] = /vex/66/f3/0f
mb0's avatar
mb0 committed
318
val p64 [] = /
mb0's avatar
Track.    
mb0 committed
319
320
321

val p/66 [0xf2] = do set-repne; p/66/f2 end
val p/66 [0xf3] = do set-rep; p/66/f3 end
mb0's avatar
mb0 committed
322
val p/66 [0x66] = do set-opndsz; p/66 end
mb0's avatar
mb0 committed
323
val p/66 [/legacy-p] = p/66
Julian Kranz's avatar
Julian Kranz committed
324
325
326
val p/66 [/rex-p]
 | mode64? = p/66
 | mode32? = unop INC rex/reg16
mb0's avatar
mb0 committed
327
val p/66 [] = after /66 /
mb0's avatar
Track.    
mb0 committed
328

mb0's avatar
mb0 committed
329
val p/f2 [0x66] = do set-opndsz; p/66/f2 end
mb0's avatar
mb0 committed
330
val p/f2 [0xf2] = do set-repne; p/f2 end
mb0's avatar
Track.    
mb0 committed
331
val p/f2 [0xf3] = do set-rep; p/f2/f3 end
mb0's avatar
mb0 committed
332
val p/f2 [/legacy-p] = p/f2
Julian Kranz's avatar
Julian Kranz committed
333
334
335
val p/f2 [/rex-p]
 | mode64? = p/f2
 | mode32? = unop INC rex/reg32
Julian Kranz's avatar
Julian Kranz committed
336
val p/f2 [] = after /f2 /
mb0's avatar
Track.    
mb0 committed
337

mb0's avatar
mb0 committed
338
val p/f3 [0x66] = do set-opndsz; p/66/f3 end
mb0's avatar
Track.    
mb0 committed
339
val p/f3 [0xf2] = do set-repne; p/f3/f2 end
mb0's avatar
mb0 committed
340
val p/f3 [0xf3] = do set-rep; p/f3 end
mb0's avatar
mb0 committed
341
val p/f3 [/legacy-p] = p/f3
Julian Kranz's avatar
Julian Kranz committed
342
343
344
val p/f3 [/rex-p]
 | mode64? = p/f3
 | mode32? = unop INC rex/reg32
Julian Kranz's avatar
Julian Kranz committed
345
val p/f3 [] = after /f3 /
mb0's avatar
Track.    
mb0 committed
346

mb0's avatar
mb0 committed
347
val p/f2/f3 [0x66] = do set-opndsz; p/66/f2/f3 end
mb0's avatar
mb0 committed
348
349
val p/f2/f3 [0xf2] = do set-repne; p/f3/f2 end
val p/f2/f3 [0xf3] = do set-rep; p/f2/f3 end
mb0's avatar
mb0 committed
350
val p/f2/f3 [/legacy-p] = p/f2/f3
Julian Kranz's avatar
Julian Kranz committed
351
352
353
val p/f2/f3 [/rex-p]
 | mode64? = p/f2/f3
 | mode32? = unop INC rex/reg32
mb0's avatar
mb0 committed
354
val p/f2/f3 [] = after /f3 (after /f2 /)
mb0's avatar
Track.    
mb0 committed
355

mb0's avatar
mb0 committed
356
val p/f3/f2 [0x66] = do set-opndsz; p/66/f2/f3 end
mb0's avatar
mb0 committed
357
358
val p/f3/f2 [0xf2] = do set-repne; p/f3/f2 end
val p/f3/f2 [0xf3] = do set-rep; p/f2/f3 end
mb0's avatar
mb0 committed
359
val p/f3/f2 [/legacy-p] = p/f3/f2
Julian Kranz's avatar
Julian Kranz committed
360
361
362
val p/f3/f2 [/rex-p]
 | mode64? = p/f3/f2
 | mode32? = unop INC rex/reg32
mb0's avatar
mb0 committed
363
val p/f3/f2 [] = after /f2 (after /f3 /)
mb0's avatar
Track.    
mb0 committed
364

mb0's avatar
mb0 committed
365
val p/66/f2 [0x66] = do set-opndsz; p/66/f2 end
mb0's avatar
mb0 committed
366
val p/66/f2 [0xf2] = do set-repne; p/66/f2 end
mb0's avatar
Track.    
mb0 committed
367
val p/66/f2 [0xf3] = do set-rep; p/66/f2/f3 end
mb0's avatar
mb0 committed
368
val p/66/f2 [/legacy-p] = p/66/f2
Julian Kranz's avatar
Julian Kranz committed
369
370
371
val p/66/f2 [/rex-p]
 | mode64? = p/66/f2
 | mode32? = unop INC rex/reg16
mb0's avatar
mb0 committed
372
val p/66/f2 [] = after /f2 (after /66 /)
mb0's avatar
Track.    
mb0 committed
373

mb0's avatar
mb0 committed
374
val p/66/f3 [0x66] = do set-opndsz; p/66/f3 end
mb0's avatar
Track.    
mb0 committed
375
val p/66/f3 [0xf2] = do set-repne; p/66/f3/f2 end
mb0's avatar
mb0 committed
376
val p/66/f3 [0xf3] = do set-rep; p/66/f3 end
mb0's avatar
mb0 committed
377
val p/66/f3 [/legacy-p] = p/66/f3
Julian Kranz's avatar
Julian Kranz committed
378
379
380
val p/66/f3 [/rex-p]
 | mode64? = p/66/f3
 | mode32? = unop INC rex/reg16
mb0's avatar
mb0 committed
381
382
383
val p/66/f3 [] = after /f3 (after /66 /)

val p/66/f2/f3 [0x66] = do clear-rex; p/66/f2/f3 end
mb0's avatar
mb0 committed
384
385
val p/66/f2/f3 [0xf2] = do clear-rex; p/66/f3/f2 end
val p/66/f2/f3 [0xf3] = do clear-rex; p/66/f2/f3 end
mb0's avatar
mb0 committed
386
val p/66/f2/f3 [/legacy-p] = p/66/f2/f3
Julian Kranz's avatar
Julian Kranz committed
387
388
389
val p/66/f2/f3 [/rex-p]
 | mode64? = p/66/f2/f3
 | mode32? = unop INC rex/reg16
mb0's avatar
mb0 committed
390
val p/66/f2/f3 [] = after /f3 (after /f2 (after /66 /))
mb0's avatar
Track.    
mb0 committed
391

mb0's avatar
mb0 committed
392
val p/66/f3/f2 [0x66] = do clear-rex; p/66/f3/f2 end
mb0's avatar
mb0 committed
393
394
val p/66/f3/f2 [0xf2] = do clear-rex; p/66/f3/f2 end
val p/66/f3/f2 [0xf3] = do clear-rex; p/66/f2/f3 end
mb0's avatar
mb0 committed
395
val p/66/f3/f2 [/legacy-p] = p/66/f3/f2
Julian Kranz's avatar
Julian Kranz committed
396
397
398
val p/66/f3/f2 [/rex-p]
 | mode64? = p/66/f3/f2
 | mode32? = unop INC rex/reg16
mb0's avatar
mb0 committed
399
val p/66/f3/f2 [] = after /f2 (after /f3 (after /66 /))
mb0's avatar
mb0 committed
400

mb0's avatar
Foo.    
mb0 committed
401
type register =
mb0's avatar
Track.    
mb0 committed
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
   AL
 | AH
 | AX
 | EAX
 | RAX
 | BL
 | BH
 | BX
 | EBX
 | RBX
 | CL
 | CH
 | CX
 | ECX
 | RCX
 | DL
 | DH
 | DX
 | EDX
 | RDX
 | R8B
 | R8L
 | R8D
Julian Kranz's avatar
Julian Kranz committed
425
 | R8
mb0's avatar
Track.    
mb0 committed
426
427
428
 | R9B
 | R9L
 | R9D
Julian Kranz's avatar
Julian Kranz committed
429
 | R9
mb0's avatar
Track.    
mb0 committed
430
431
432
 | R10B
 | R10L
 | R10D
Julian Kranz's avatar
Julian Kranz committed
433
 | R10
mb0's avatar
Track.    
mb0 committed
434
435
436
 | R11B
 | R11L
 | R11D
Julian Kranz's avatar
Julian Kranz committed
437
 | R11
mb0's avatar
Track.    
mb0 committed
438
439
440
 | R12B
 | R12L
 | R12D
Julian Kranz's avatar
Julian Kranz committed
441
 | R12
mb0's avatar
Track.    
mb0 committed
442
443
444
 | R13B
 | R13L
 | R13D
Julian Kranz's avatar
Julian Kranz committed
445
 | R13
mb0's avatar
Track.    
mb0 committed
446
447
448
 | R14B
 | R14L
 | R14D
Julian Kranz's avatar
Julian Kranz committed
449
 | R14
mb0's avatar
Track.    
mb0 committed
450
451
452
 | R15B
 | R15L
 | R15D
Julian Kranz's avatar
Julian Kranz committed
453
 | R15
mb0's avatar
Track.    
mb0 committed
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
 | SP
 | ESP
 | RSP
 | BP
 | EBP
 | RBP
 | SI
 | ESI
 | RSI
 | DI
 | EDI
 | RDI
 | XMM0
 | XMM1
 | XMM2
 | XMM3
 | XMM4
 | XMM5
 | XMM6
 | XMM7
 | XMM8
 | XMM9
 | XMM10
 | XMM11
 | XMM12
 | XMM13
 | XMM14
 | XMM15
 | YMM0
 | YMM1
 | YMM2
 | YMM3
 | YMM4
 | YMM5
 | YMM6
 | YMM7
 | YMM8
 | YMM9
 | YMM10
 | YMM11
 | YMM12
 | YMM13
 | YMM14
 | YMM15
 | MM0
 | MM1
 | MM2
 | MM3
 | MM4
 | MM5
 | MM6
 | MM7
 | MM8
 | MM9
 | MM10
 | MM11
 | MM12
 | MM13
 | MM14
 | MM15
 | ES
 | SS
 | DS
 | FS
 | GS
 | CS
mb0's avatar
mb0 committed
520
521
522
523
524
525
526
527
 | ST0
 | ST1
 | ST2
 | ST3
 | ST4
 | ST5
 | ST6
 | ST7
mb0's avatar
mb0 committed
528
 | RIP
mb0's avatar
Track.    
mb0 committed
529

mb0's avatar
Foo.    
mb0 committed
530
type opnd =
mb0's avatar
Track.    
mb0 committed
531
532
533
534
535
   IMM8 of 8
 | IMM16 of 16
 | IMM32 of 32
 | IMM64 of 64
 | REG of register
mb0's avatar
Foo.    
mb0 committed
536
 | MEM of {sz:int,psz:int,segment:register,opnd:opnd}
mb0's avatar
sem.    
mb0 committed
537
538
 | SUM of {a:opnd,b:opnd}
 | SCALE of {imm:2,opnd:opnd}
mb0's avatar
Track.    
mb0 committed
539

mb0's avatar
Foo.    
mb0 committed
540
type flowopnd =
mb0's avatar
Track.    
mb0 committed
541
542
543
544
   REL8 of 8
 | REL16 of 16
 | REL32 of 32
 | REL64 of 64
Julian Kranz's avatar
Julian Kranz committed
545
546
 | PTR16/16 of 32
 | PTR16/32 of 48
mb0's avatar
Track.    
mb0 committed
547
548
549
 | NEARABS of opnd
 | FARABS of opnd

550
551
type flow1 = {opnd1:flowopnd}
type arity1 = {opnd1:opnd}
Julian Kranz's avatar
Julian Kranz committed
552
553
554
type arity2 = {opnd1:opnd,opnd2:opnd}
type arity3 = {opnd1:opnd,opnd2:opnd,opnd3:opnd}
type arity4 = {opnd1:opnd,opnd2:opnd,opnd3:opnd,opnd4:opnd}
mb0's avatar
Track.    
mb0 committed
555

mb0's avatar
Foo.    
mb0 committed
556
type varity =
mb0's avatar
mb0 committed
557
558
559
560
561
562
   VA0
 | VA1 of arity1
 | VA2 of arity2
 | VA3 of arity3
 | VA4 of arity4

mb0's avatar
Foo.    
mb0 committed
563
type insn =
mb0's avatar
Merge.    
mb0 committed
564
565
566
567
568
   AAA
 | AAD of arity1
 | AAM of arity1
 | AAS
 | ADC of arity2
mb0's avatar
mb0 committed
569
 | ADD of arity2
mb0's avatar
Merge.    
mb0 committed
570
 | ADDPD of arity2
Julian Kranz's avatar
Merge    
Julian Kranz committed
571
572
573
574
575
576
577
578
579
580
581
 | ADDPS of arity2
 | ADDSD of arity2
 | ADDSS of arity2
 | ADDSUBPD of arity2
 | ADDSUBPS of arity2
 | AESDEC of arity2
 | AESDECLAST of arity2
 | AESENC of arity2
 | AESENCLAST of arity2
 | AESIMC of arity2
 | AESKEYGENASSIST of arity3
mb0's avatar
mb0 committed
582
 | AND of arity2
Julian Kranz's avatar
Julian Kranz committed
583
584
 | ANDNPD of arity2
 | ANDNPS of arity2
Julian Kranz's avatar
Julian Kranz committed
585
586
 | ANDPD of arity2
 | ANDPS of arity2
Julian Kranz's avatar
Julian Kranz committed
587
588
589
 | ARPL of arity2
 | BLENDPD of arity3
 | BLENDPS of arity3
Julian Kranz's avatar
Julian Kranz committed
590
 | BLENDVPD of arity3
Julian Kranz's avatar
Julian Kranz committed
591
 | BLENDVPS of arity3
Julian Kranz's avatar
Julian Kranz committed
592
 | BOUND of arity2
mb0's avatar
mb0 committed
593
594
 | BSF of arity2
 | BSR of arity2
mb0's avatar
mb0 committed
595
 | BSWAP of arity1
mb0's avatar
mb0 committed
596
 | BT of arity2
Julian Kranz's avatar
Julian Kranz committed
597
598
599
 | BTC of arity2
 | BTR of arity2
 | BTS of arity2
mb0's avatar
mb0 committed
600
 | CALL of flow1
mb0's avatar
mb0 committed
601
 | CBW
Julian Kranz's avatar
Julian Kranz committed
602
 | CDQ
mb0's avatar
mb0 committed
603
 | CDQE
Julian Kranz's avatar
Julian Kranz committed
604
 | CLC
mb0's avatar
mb0 committed
605
 | CLD
Julian Kranz's avatar
Julian Kranz committed
606
607
608
609
 | CLFLUSH of arity1
 | CLI
 | CLTS
 | CMC
mb0's avatar
mb0 committed
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
 | CMOVA of arity2
 | CMOVAE of arity2
 | CMOVB of arity2
 | CMOVBE of arity2
 | CMOVC of arity2
 | CMOVE of arity2
 | CMOVG of arity2
 | CMOVGE of arity2
 | CMOVL of arity2
 | CMOVLE of arity2
 | CMOVNA of arity2
 | CMOVNAE of arity2
 | CMOVNB of arity2
 | CMOVNBE of arity2
 | CMOVNC of arity2
 | CMOVNE of arity2
 | CMOVNG of arity2
 | CMOVNGE of arity2
 | CMOVNL of arity2
 | CMOVNLE of arity2
 | CMOVNO of arity2
 | CMOVNP of arity2
 | CMOVNS of arity2
 | CMOVNZ of arity2
 | CMOVO of arity2
 | CMOVP of arity2
 | CMOVPE of arity2
 | CMOVPO of arity2
 | CMOVS of arity2
 | CMOVZ of arity2
 | CMP of arity2
Julian Kranz's avatar
Julian Kranz committed
641
642
 | CMPPD of arity3
 | CMPPS of arity3
mb0's avatar
mb0 committed
643
 | CMPSB
Julian Kranz's avatar
Julian Kranz committed
644
 | CMPSD of varity
mb0's avatar
mb0 committed
645
 | CMPSQ
Julian Kranz's avatar
Julian Kranz committed
646
 | CMPSS of arity3
Julian Kranz's avatar
Julian Kranz committed
647
 | CMPSW
mb0's avatar
mb0 committed
648
 | CMPXCHG of arity2
Julian Kranz's avatar
Julian Kranz committed
649
 | CMPXCHG16B of arity1
Julian Kranz's avatar
Julian Kranz committed
650
 | CMPXCHG8B of arity1
Julian Kranz's avatar
Julian Kranz committed
651
652
 | COMISD of arity2
 | COMISS of arity2
mb0's avatar
mb0 committed
653
 | CPUID
Julian Kranz's avatar
Julian Kranz committed
654
 | CQO
Julian Kranz's avatar
Julian Kranz committed
655
 | CRC32 of arity2
Julian Kranz's avatar
Julian Kranz committed
656
657
658
 | CVTDQ2PD of arity2
 | CVTDQ2PS of arity2
 | CVTPD2DQ of arity2
mb0's avatar
mb0 committed
659
 | CVTPD2PI of arity2
Julian Kranz's avatar
Julian Kranz committed
660
661
662
663
664
665
666
667
 | CVTPD2PS of arity2
 | CVTPI2PD of arity2
 | CVTPI2PS of arity2
 | CVTPS2DQ of arity2
 | CVTPS2PD of arity2
 | CVTPS2PI of arity2
 | CVTSD2SI of arity2
 | CVTSD2SS of arity2
mb0's avatar
mb0 committed
668
 | CVTSI2SD of arity2
Julian Kranz's avatar
Julian Kranz committed
669
670
671
672
673
674
675
676
677
678
 | CVTSI2SS of arity2
 | CVTSS2SD of arity2
 | CVTSS2SI of arity2
 | CVTTPD2DQ of arity2
 | CVTTPD2PI of arity2
 | CVTTPS2DQ of arity2
 | CVTTPS2PI of arity2
 | CVTTSD2SI of arity2
 | CVTTSS2SI of arity2
 | CWD
Julian Kranz's avatar
Julian Kranz committed
679
 | CWDE
Julian Kranz's avatar
Julian Kranz committed
680
681
 | DAA
 | DAS
mb0's avatar
mb0 committed
682
683
 | DEC of arity1
 | DIV of arity1
Julian Kranz's avatar
Julian Kranz committed
684
685
686
687
688
689
690
691
692
 | DIVPD of arity2
 | DIVPS of arity2
 | DIVSD of arity2
 | DIVSS of arity2
 | DPPD of arity3
 | DPPS of arity3
 | EMMS
 | ENTER of arity2
 | EXTRACTPS of arity3
Julian Kranz's avatar
Julian Kranz committed
693
694
 | F2XM1
 | FABS
Julian Kranz's avatar
Julian Kranz committed
695
 | FADD of arity2
Julian Kranz's avatar
Julian Kranz committed
696
 | FADDP of arity2
Julian Kranz's avatar
Julian Kranz committed
697
698
 | FBLD of arity1
 | FBSTP of arity1
mb0's avatar
mb0 committed
699
 | FCHS
Julian Kranz's avatar
Julian Kranz committed
700
 | FCLEX
mb0's avatar
mb0 committed
701
702
703
704
705
706
707
708
 | FCMOVB of arity2
 | FCMOVBE of arity2
 | FCMOVE of arity2
 | FCMOVNB of arity2
 | FCMOVNBE of arity2
 | FCMOVNE of arity2
 | FCMOVNU of arity2
 | FCMOVU of arity2
Julian Kranz's avatar
Julian Kranz committed
709
 | FCOM of arity1
mb0's avatar
mb0 committed
710
711
 | FCOMI of arity2
 | FCOMIP of arity2
Julian Kranz's avatar
Julian Kranz committed
712
713
 | FCOMP of arity1
 | FCOMPP
Julian Kranz's avatar
Julian Kranz committed
714
715
716
717
718
719
720
 | FCOS
 | FDECSTP
 | FDIV of arity2
 | FDIVP of arity2
 | FDIVR of arity2
 | FDIVRP of arity2
 | FFREE of arity1
Julian Kranz's avatar
Julian Kranz committed
721
 | FIADD of arity1
Julian Kranz's avatar
Julian Kranz committed
722
723
 | FICOM of arity1
 | FICOMP of arity1
Julian Kranz's avatar
Julian Kranz committed
724
725
 | FIDIV of arity2
 | FIDIVR of arity1
Julian Kranz's avatar
Julian Kranz committed
726
 | FILD of arity1
Julian Kranz's avatar
Julian Kranz committed
727
 | FIMUL of arity1
Julian Kranz's avatar
Julian Kranz committed
728
729
730
731
732
 | FINCSTP
 | FINIT
 | FIST of arity1
 | FISTP of arity1
 | FISTTP of arity1
Julian Kranz's avatar
Julian Kranz committed
733
734
 | FISUB of arity1
 | FISUBR of arity1
mb0's avatar
mb0 committed
735
 | FLD of arity1
Julian Kranz's avatar
Julian Kranz committed
736
737
738
 | FLD1
 | FLDCW of arity1
 | FLDENV of arity1
mb0's avatar
mb0 committed
739
740
741
742
743
744
 | FLDL2E
 | FLDL2T
 | FLDLG2
 | FLDLN2
 | FLDPI
 | FLDZ
Julian Kranz's avatar
Julian Kranz committed
745
746
 | FMUL of arity2
 | FMULP of arity2
Julian Kranz's avatar
Julian Kranz committed
747
748
 | FNCLEX
 | FNINIT
Julian Kranz's avatar
Julian Kranz committed
749
 | FNOP
Julian Kranz's avatar
Julian Kranz committed
750
751
752
753
 | FNSAVE of arity1
 | FNSTCW of arity1
 | FNSTENV of arity1
 | FNSTSW of arity1
Julian Kranz's avatar
Julian Kranz committed
754
755
756
757
758
 | FPATAN
 | FPREM
 | FPREM1
 | FPTAN
 | FRNDINT
Julian Kranz's avatar
Julian Kranz committed
759
760
 | FRSTOR of arity1
 | FSAVE of arity1
Julian Kranz's avatar
Julian Kranz committed
761
762
763
764
 | FSCALE
 | FSIN
 | FSINCOS
 | FSQRT
mb0's avatar
mb0 committed
765
 | FST of arity1
Julian Kranz's avatar
Julian Kranz committed
766
 | FSTCW of arity1
Julian Kranz's avatar
Julian Kranz committed
767
 | FSTENV of arity1
Julian Kranz's avatar
Julian Kranz committed
768
 | FSTP of arity1
Julian Kranz's avatar
Julian Kranz committed
769
770
771
772
773
774
775
 | FSTSW of arity1
 | FSUB of arity2
 | FSUBP of arity2
 | FSUBR of arity2
 | FSUBRP of arity2
 | FTST
 | FUCOM of arity1
Julian Kranz's avatar
Julian Kranz committed
776
777
 | FUCOMI of arity1
 | FUCOMIP of arity1
Julian Kranz's avatar
Julian Kranz committed
778
779
780
781
 | FUCOMP of arity1
 | FUCOMPP
 | FXAM
 | FXCH of arity1
Julian Kranz's avatar
Julian Kranz committed
782
 | FXRSTOR of arity1
Julian Kranz's avatar
Julian Kranz committed
783
 | FXRSTOR64 of arity1
Julian Kranz's avatar
Julian Kranz committed
784
 | FXSAVE of arity1
Julian Kranz's avatar
Julian Kranz committed
785
 | FXSAVE64 of arity1
Julian Kranz's avatar
Julian Kranz committed
786
787
788
789
790
 | FXTRACT
 | FYL2X
 | FYL2XP1
 | HADDPD of arity2
 | HADDPS of arity2
mb0's avatar
mb0 committed
791
 | HLT
Julian Kranz's avatar
Julian Kranz committed
792
 | HSUBPD of arity2
Julian Kranz's avatar
Julian Kranz committed
793
 | HSUBPS of arity2
mb0's avatar
mb0 committed
794
 | IDIV of arity1
Julian Kranz's avatar
Julian Kranz committed
795
796
 | IMUL of varity
 | IN of arity2
mb0's avatar
mb0 committed
797
 | INC of arity1
Julian Kranz's avatar
Julian Kranz committed
798
799
 | INSB
 | INSD
Julian Kranz's avatar
Julian Kranz committed
800
 | INSERTPS of arity3
Julian Kranz's avatar
Julian Kranz committed
801
 | INSW
Julian Kranz's avatar
Julian Kranz committed
802
803
 | INT of arity1
 | INT0
Julian Kranz's avatar
Julian Kranz committed
804
 | INT3
Julian Kranz's avatar
Julian Kranz committed
805
806
 | INVD
 | INVLPG of arity1
Julian Kranz's avatar
Julian Kranz committed
807
808
809
810
 | INVPCID of arity2
 | IRET
 | IRETD
 | IRETQ
mb0's avatar
mb0 committed
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
 | JA of flow1
 | JAE of flow1
 | JB of flow1
 | JBE of flow1
 | JC of flow1
 | JCXZ of flow1
 | JE of flow1
 | JECXZ of flow1
 | JG of flow1
 | JGE of flow1
 | JL of flow1
 | JLE of flow1
 | JMP of flow1
 | JNA of flow1
 | JNAE of flow1
 | JNB of flow1
 | JNBE of flow1
 | JNC of flow1
 | JNE of flow1
 | JNG of flow1
 | JNGE of flow1
 | JNL of flow1
 | JNLE of flow1
 | JNO of flow1
 | JNP of flow1
 | JNS of flow1
 | JNZ of flow1
 | JO of flow1
 | JP of flow1
 | JPE of flow1
 | JPO of flow1
 | JRCXZ of flow1
 | JS of flow1
 | JZ of flow1
Julian Kranz's avatar
Julian Kranz committed
845
846
 | LAHF
 | LAR of arity2
mb0's avatar
mb0 committed
847
 | LDDQU of arity2
Julian Kranz's avatar
Julian Kranz committed
848
849
 | LDMXCSR of arity1
 | LDS of arity2
mb0's avatar
mb0 committed
850
 | LEA of arity2
mb0's avatar
mb0 committed
851
 | LEAVE
Julian Kranz's avatar
Julian Kranz committed
852
 | LES of arity2
mb0's avatar
mb0 committed
853
 | LFENCE
Julian Kranz's avatar
Julian Kranz committed
854
 | LFS of arity2
Julian Kranz's avatar
Julian Kranz committed
855
 | LGDT of arity1
Julian Kranz's avatar
Julian Kranz committed
856
 | LGS of arity2
Julian Kranz's avatar
Julian Kranz committed
857
 | LIDT of arity1
Julian Kranz's avatar
Julian Kranz committed
858
859
860
861
862
863
 | LLDT of arity1
 | LMSW of arity1
 | LOCK
 | LODSB
 | LODSD
 | LODSQ
Julian Kranz's avatar
Julian Kranz committed
864
 | LODSW
Julian Kranz's avatar
Julian Kranz committed
865
866
867
868
 | LOOP of flow1
 | LOOPE of flow1
 | LOOPNE of flow1
 | LSL of arity2
Julian Kranz's avatar
Julian Kranz committed
869
 | LSS of arity2
Julian Kranz's avatar
Julian Kranz committed
870
 | LTR of arity1
mb0's avatar
mb0 committed
871
872
873
874
875
876
 | MASKMOVDQU of arity2
 | MASKMOVQ of arity2
 | MAXPD of arity2
 | MAXPS of arity2
 | MAXSD of arity2
 | MAXSS of arity2
mb0's avatar
Track.    
mb0 committed
877
 | MFENCE
mb0's avatar
mb0 committed
878
879
880
881
 | MINPD of arity2
 | MINPS of arity2
 | MINSD of arity2
 | MINSS of arity2
mb0's avatar
Track.    
mb0 committed
882
 | MONITOR
mb0's avatar
mb0 committed
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
 | MOV of arity2
 | MOVAPD of arity2
 | MOVAPS of arity2
 | MOVBE of arity2
 | MOVD of arity2
 | MOVDDUP of arity2
 | MOVDQ2Q of arity2
 | MOVDQA of arity2
 | MOVDQU of arity2
 | MOVHLPS of arity2
 | MOVHPD of arity2
 | MOVHPS of arity2
 | MOVLHPS of arity2
 | MOVLPD of arity2
 | MOVLPS of arity2
 | MOVMSKPD of arity2
 | MOVMSKPS of arity2
 | MOVNTDQ of arity2
 | MOVNTDQA of arity2
 | MOVNTI of arity2
 | MOVNTPD of arity2
 | MOVNTPS of arity2
 | MOVNTQ of arity2
 | MOVQ of arity2
 | MOVQ2DQ of arity2
mb0's avatar
mb0 committed
908
 | MOVSB
mb0's avatar
mb0 committed
909
 | MOVSD of varity
mb0's avatar
mb0 committed
910
911
 | MOVSHDUP of arity2
 | MOVSLDUP of arity2
mb0's avatar
mb0 committed
912
 | MOVSQ
mb0's avatar
mb0 committed
913
914
915
916
917
918
919
920
921
922
923
924
925
 | MOVSS of arity2
 | MOVSW of arity2
 | MOVSX of arity2
 | MOVSXD of arity2
 | MOVUPD of arity2
 | MOVUPS of arity2
 | MOVZX of arity2
 | MPSADBW of arity3
 | MUL of arity1
 | MULPD of arity2
 | MULPS of arity2
 | MULSD of arity2
 | MULSS of arity2
Julian Kranz's avatar
Julian Kranz committed
926
 | MWAIT
mb0's avatar
mb0 committed
927
928
929
930
931
932
933
 | NEG of arity1
 | NOP of varity
 | NOT of arity1
 | OR of arity2
 | ORPD of arity2
 | ORPS of arity2
 | OUT of arity2
Julian Kranz's avatar
Julian Kranz committed
934
935
936
 | OUTS
 | OUTSB
 | OUTSD
Julian Kranz's avatar
Julian Kranz committed
937
 | OUTSW
Julian Kranz's avatar
Julian Kranz committed
938
939
 | PABSB of arity2
 | PABSD of arity2
Julian Kranz's avatar
Julian Kranz committed
940
 | PABSW of arity2
Julian Kranz's avatar
Julian Kranz committed
941
 | PACKSSDW of arity2
Julian Kranz's avatar
Julian Kranz committed
942
 | PACKSSWB of arity2
Julian Kranz's avatar
Julian Kranz committed
943
 | PACKUSDW of arity2
Julian Kranz's avatar
Julian Kranz committed
944
 | PACKUSWB of arity2
Julian Kranz's avatar
Julian Kranz committed
945
946
 | PADDB of arity2
 | PADDD of arity2
Julian Kranz's avatar
Julian Kranz committed
947
 | PADDQ of arity2
Julian Kranz's avatar
Julian Kranz committed
948
949
 | PADDSB of arity2
 | PADDSW of arity2
Julian Kranz's avatar
Julian Kranz committed
950
951
 | PADDUSB of arity2
 | PADDUSW of arity2
Julian Kranz's avatar
Julian Kranz committed
952
 | PADDW of arity2
mb0's avatar
mb0 committed
953
954
 | PALIGNR of arity3
 | PAND of arity2
Julian Kranz's avatar
Julian Kranz committed
955
 | PANDN of arity2
Julian Kranz's avatar
Julian Kranz committed
956
 | PAUSE
Julian Kranz's avatar
Julian Kranz committed
957
958
 | PAVGB of arity2
 | PAVGW of arity2
Julian Kranz's avatar
Julian Kranz committed
959
 | PBLENDVB of arity2
Julian Kranz's avatar
Julian Kranz committed
960
 | PBLENDW of arity3
Julian Kranz's avatar
Julian Kranz committed
961
 | PCLMULQDQ of arity3
mb0's avatar
mb0 committed
962
963
964
965
966
 | PCMPEQB of arity2
 | PCMPEQD of arity2
 | PCMPEQQ of arity2
 | PCMPEQW of arity2
 | PCMPESTRI of arity3
Julian Kranz's avatar
Julian Kranz committed
967
 | PCMPESTRM of arity3
mb0's avatar
mb0 committed
968
969
970
 | PCMPGRD of arity2
 | PCMPGTB of arity2
 | PCMPGTD of arity2
Julian Kranz's avatar
Julian Kranz committed
971
 | PCMPGTQ of arity2
Julian Kranz's avatar
Julian Kranz committed
972
 | PCMPGTW of arity2
mb0's avatar
mb0 committed
973
 | PCMPISTRI of arity3
Julian Kranz's avatar
Julian Kranz committed
974
 | PCMPISTRM of arity3
Julian Kranz's avatar
Julian Kranz committed
975
976
977
 | PEXTRB of arity3
 | PEXTRD of arity3
 | PEXTRQ of arity3
Julian Kranz's avatar
Julian Kranz committed
978
 | PEXTRW of arity3
mb0's avatar
mb0 committed
979
 | PHADDD of arity2
Julian Kranz's avatar
Julian Kranz committed
980
 | PHADDSW of arity2
Julian Kranz's avatar
Julian Kranz committed
981
 | PHADDW of arity2
Julian Kranz's avatar
Julian Kranz committed
982
 | PHMINPOSUW of arity2
Julian Kranz's avatar
Julian Kranz committed
983
 | PHSUBD of arity2
Julian Kranz's avatar
Julian Kranz committed
984
 | PHSUBSW of arity2
Julian Kranz's avatar
Julian Kranz committed
985
 | PHSUBW of arity2
mb0's avatar
mb0 committed
986
987
988
 | PINSRB of arity3
 | PINSRD of arity3
 | PINSRQ of arity3
Julian Kranz's avatar
Julian Kranz committed
989
 | PINSRW of arity3
Julian Kranz's avatar
Julian Kranz committed
990
 | PMADDUBSW of arity2
Julian Kranz's avatar
Julian Kranz committed
991
992
 | PMADDWD of arity2
 | PMAXSB of arity2
Julian Kranz's avatar
Julian Kranz committed
993
 | PMAXSD of arity2
Julian Kranz's avatar
Julian Kranz committed
994
 | PMAXSW of arity2
Julian Kranz's avatar
Julian Kranz committed
995
 | PMAXUB of arity2
Julian Kranz's avatar
Julian Kranz committed
996
 | PMAXUD of arity2
Julian Kranz's avatar
Julian Kranz committed
997
998
 | PMAXUW of arity2
 | PMINSB of arity2
Julian Kranz's avatar
Julian Kranz committed
999
 | PMINSD of arity2
Julian Kranz's avatar
Julian Kranz committed
1000
1001
 | PMINSW of arity2
 | PMINUB of arity2
Julian Kranz's avatar
Julian Kranz committed
1002
1003
 | PMINUD of arity2
 | PMINUW of arity2
mb0's avatar
mb0 committed
1004
 | PMOVMSKB of arity2
Julian Kranz's avatar
Julian Kranz committed
1005
1006
 | PMOVSXBD of arity2
 | PMOVSXBQ of arity2
Julian Kranz's avatar
Julian Kranz committed
1007
1008
 | PMOVSXBW of arity2
 | PMOVSXDQ of arity2
Julian Kranz's avatar
Julian Kranz committed
1009
1010
1011
1012
 | PMOVSXWD of arity2
 | PMOVSXWQ of arity2
 | PMOVZXBD of arity2
 | PMOVZXBQ of arity2
Julian Kranz's avatar
Julian Kranz committed
1013
1014
 | PMOVZXBW of arity2
 | PMOVZXDQ of arity2
Julian Kranz's avatar
Julian Kranz committed
1015
1016
1017
1018
1019
1020
1021
1022
 | PMOVZXWD of arity2
 | PMOVZXWQ of arity2
 | PMULDQ of arity2
 | PMULHRSW of arity2
 | PMULHUW of arity2
 | PMULHW of arity2
 | PMULLD of arity2
 | PMULLW of arity2
Julian Kranz's avatar
Julian Kranz committed
1023
 | PMULUDQ of arity2
Julian Kranz's avatar
Julian Kranz committed
1024
 | POP of arity1
Julian Kranz's avatar
Julian Kranz committed
1025
1026
1027
1028
1029
1030
 | POPA
 | POPAD
 | POPCNT of arity2
 | POPF
 | POPFD
 | POPFQ
mb0's avatar
mb0 committed
1031
1032
1033
1034
1035
1036
 | POR of arity2
 | PREFETCHNTA of arity1
 | PREFETCHT0 of arity1
 | PREFETCHT1 of arity1
 | PREFETCHT2 of arity1
 | PREFETCHW of arity1
Julian Kranz's avatar
Julian Kranz committed
1037
 | PSADBW of arity2
mb0's avatar
mb0 committed
1038
1039
 | PSHUFB of arity2
 | PSHUFD of arity3
Julian Kranz's avatar
Julian Kranz committed
1040
1041
1042
1043
1044
 | PSHUFHW of arity3
 | PSHUFLW of arity3
 | PSHUFW of arity3
 | PSIGNB of arity2
 | PSIGND of arity2
Julian Kranz's avatar
Julian Kranz committed
1045
 | PSIGNW of arity2
Julian Kranz's avatar
Julian Kranz committed
1046
 | PSLLD of arity2
Julian Kranz's avatar
Julian Kranz committed
1047
 | PSLLDQ of arity2
Julian Kranz's avatar
Julian Kranz committed
1048
 | PSLLQ of arity2
Julian Kranz's avatar
Julian Kranz committed
1049
 | PSLLW of arity2
Julian Kranz's avatar
Julian Kranz committed
1050
 | PSRAD of arity2
Julian Kranz's avatar
Julian Kranz committed
1051
 | PSRAW of arity2
Julian Kranz's avatar
Julian Kranz committed
1052
 | PSRLD of arity2
Julian Kranz's avatar
Julian Kranz committed
1053
 | PSRLDQ of arity2
Julian Kranz's avatar
Julian Kranz committed
1054
 | PSRLQ of arity2
Julian Kranz's avatar
Julian Kranz committed
1055
 | PSRLW of arity2
mb0's avatar
mb0 committed
1056
1057
 | PSUBB of arity2
 | PSUBD of arity2
Julian Kranz's avatar
Julian Kranz committed
1058
1059
1060
1061
1062
 | PSUBQ of arity2
 | PSUBSB of arity2
 | PSUBSW of arity2
 | PSUBUSB of arity2
 | PSUBUSW of arity2
Julian Kranz's avatar
Julian Kranz committed
1063
 | PSUBW of arity2
mb0's avatar
mb0 committed
1064
 | PTEST of arity2
Julian Kranz's avatar
Julian Kranz committed
1065
1066
1067
 | PUNPCKHBW of arity2
 | PUNPCKHDQ of arity2
 | PUNPCKHQDQ of arity2
Julian Kranz's avatar
Julian Kranz committed
1068
 | PUNPCKHWD of arity2
mb0's avatar
mb0 committed
1069
 | PUNPCKLBW of arity2
Julian Kranz's avatar
Julian Kranz committed
1070
 | PUNPCKLDQ of arity2
mb0's avatar
mb0 committed
1071
 | PUNPCKLQDQ of arity2
Julian Kranz's avatar
Julian Kranz committed
1072
 | PUNPCKLWD of arity2
mb0's avatar
mb0 committed
1073
 | PUSH of arity1
Julian Kranz's avatar
Julian Kranz committed
1074
1075
1076
1077
1078
 | PUSHA
 | PUSHAD
 | PUSHF
 | PUSHFD
 | PUSHFQ
mb0's avatar
mb0 committed
1079
1080
 | PXOR of arity2
 | RCL of arity2
Julian Kranz's avatar
Julian Kranz committed
1081
1082
 | RCPPS of arity2
 | RCPSS of arity2
Julian Kranz's avatar
Julian Kranz committed
1083
 | RCR of arity2
Julian Kranz's avatar
Julian Kranz committed
1084
1085
1086
 | RDFSBASE of arity1
 | RDGSBASE of arity1
 | RDMSR
Julian Kranz's avatar
Julian Kranz committed
1087
1088
 | RDPMC
 | RDRAND of arity1
mb0's avatar
mb0 committed
1089
1090
 | RDTSC
 | RDTSCP
mb0's avatar
mb0 committed
1091
1092
 | RET of varity
 | RET_FAR of varity
Julian Kranz's avatar
Julian Kranz committed
1093
1094
 | ROL of arity2
 | ROR of arity2
Julian Kranz's avatar
Julian Kranz committed
1095
1096
1097
1098
1099
1100
1101
1102
 | ROUNDPD of arity3
 | ROUNDPS of arity3
 | ROUNDSD of arity3
 | ROUNDSS of arity3
 | RSM
 | RSQRTPS of arity2
 | RSQRTSS of arity2
 | SAHF
mb0's avatar
mb0 committed
1103
1104
1105
 | SAL of arity2
 | SAR of arity2
 | SBB of arity2
mb0's avatar
mb0 committed
1106
1107
1108
1109
 | SCASB
 | SCASD
 | SCASQ
 | SCASW
mb0's avatar
mb0 committed
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
 | SETA of arity1
 | SETAE of arity1
 | SETB of arity1
 | SETBE of arity1
 | SETC of arity1
 | SETE of arity1
 | SETG of arity1
 | SETGE of arity1
 | SETL of arity1
 | SETLE of arity1
 | SETNA of arity1
 | SETNAE of arity1
 | SETNB of arity1
 | SETNBE of arity1
 | SETNC of arity1
 | SETNE of arity1
 | SETNG of arity1
 | SETNGE of arity1
 | SETNL of arity1
 | SETNLE of arity1
 | SETNO of arity1
 | SETNP of arity1
 | SETNS of arity1
 | SETNZ of arity1
 | SETO of arity1
 | SETP of arity1
 | SETPE of arity1
 | SETPO of arity1
 | SETS of arity1
 | SETZ of arity1
mb0's avatar
mb0 committed
1140
 | SFENCE
Julian Kranz's avatar
Julian Kranz committed
1141
 | SGDT of arity1
Julian Kranz's avatar
Julian Kranz committed
1142
 | SHL of arity2
mb0's avatar
mb0 committed
1143
 | SHLD of arity3
Julian Kranz's avatar
Julian Kranz committed
1144
 | SHR of arity2
mb0's avatar
mb0 committed
1145
 | SHRD of arity3
Julian Kranz's avatar
Julian Kranz committed
1146
1147
1148
1149
1150
1151
 | SHUFPD of arity3
 | SHUFPS of arity3
 | SIDT of arity1
 | SLDT of arity1
 | SMSW of arity1
 | SQRTPD of arity2
Julian Kranz's avatar
Julian Kranz committed
1152
 | SQRTPS of arity2
Julian Kranz's avatar
Julian Kranz committed
1153
1154
1155
1156
1157
1158
 | SQRTSD of arity2
 | SQRTSS of arity2
 | STC
 | STD
 | STI
 | STMXCSR of arity1