File: apx-cond.asm

package info (click to toggle)
nasm 3.01-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 23,660 kB
  • sloc: ansic: 129,101; asm: 40,471; perl: 8,238; sh: 4,146; makefile: 1,281; xml: 726; python: 582; lisp: 578; sed: 11
file content (459 lines) | stat: -rw-r--r-- 28,769 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
; APX legacy conditional testcases

%macro testcase 2
 %ifdef BIN
  db %1
 %endif
 %ifdef SRC
  %2
 %endif
%endmacro

bits 64

; --- cmovcc - conditional move instruction ---
; - cmovb/cmovnae/cmovc - cmov if below -
testcase	{0x66, 0x0F, 0x42, 0x0A},		{cmovb cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x42, 0x0A},			{cmovb ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x42, 0x0A},		{cmovb r9, [rdx]}	; r/m64 -> reg64
testcase	{0x66, 0x0F, 0x42, 0x0A},		{cmovnae cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x42, 0x0A},			{cmovnae ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x42, 0x0A},		{cmovnae r9, [rdx]}	; r/m64 -> reg64

; implicit evex through ND
testcase	{0x62, 0xF4, 0x35, 0x10, 0x42, 0x0A},	{cmovb r25w, cx, [rdx]}		; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x42, 0x0A},	{cmovb r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x42, 0x0A},	{cmovb r25, rcx, [rdx]}		; ndd64 = cond ? r/m64 : reg64
testcase	{0x62, 0xF4, 0x35, 0x10, 0x42, 0x0A},	{cmovnae r25w, cx, [rdx]}	; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x42, 0x0A},	{cmovnae r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x42, 0x0A},	{cmovnae r25, rcx, [rdx]}	; ndd64 = cond ? r/m64 : reg64

; rex2 variant
testcase	{0x66, 0xD5, 0xC4, 0x42, 0x0A},		{cmovb r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x42, 0x0A},		{cmovb r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x42, 0x0A},		{cmovb r25, [rdx]}	; r/m64 -> ereg64
testcase	{0x66, 0xD5, 0xC4, 0x42, 0x0A},		{cmovnae r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x42, 0x0A},		{cmovnae r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x42, 0x0A},		{cmovnae r25, [rdx]}	; r/m64 -> ereg64

; - cmovbe/cmovna - cmov if below or equal -
testcase	{0x66, 0x0F, 0x46, 0x0A},		{cmovbe cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x46, 0x0A},			{cmovbe ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x46, 0x0A},		{cmovbe r9, [rdx]}	; r/m64 -> reg64
testcase	{0x66, 0x0F, 0x46, 0x0A},		{cmovna cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x46, 0x0A},			{cmovna ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x46, 0x0A},		{cmovna r9, [rdx]}	; r/m64 -> reg64

; implicit evex through ND
testcase	{0x62, 0xF4, 0x35, 0x10, 0x46, 0x0A},	{cmovbe r25w, cx, [rdx]}	; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x46, 0x0A},	{cmovbe r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x46, 0x0A},	{cmovbe r25, rcx, [rdx]}	; ndd64 = cond ? r/m64 : reg64
testcase	{0x62, 0xF4, 0x35, 0x10, 0x46, 0x0A},	{cmovna r25w, cx, [rdx]}	; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x46, 0x0A},	{cmovna r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x46, 0x0A},	{cmovna r25, rcx, [rdx]}	; ndd64 = cond ? r/m64 : reg64

; rex2 variant
testcase	{0x66, 0xD5, 0xC4, 0x46, 0x0A},		{cmovbe r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x46, 0x0A},		{cmovbe r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x46, 0x0A},		{cmovbe r25, [rdx]}	; r/m64 -> ereg64
testcase	{0x66, 0xD5, 0xC4, 0x46, 0x0A},		{cmovna r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x46, 0x0A},		{cmovna r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x46, 0x0A},		{cmovna r25, [rdx]}	; r/m64 -> ereg64

; - cmovl/cmovnge - cmov if less -
testcase	{0x66, 0x0F, 0x4C, 0x0A},		{cmovl cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x4C, 0x0A},			{cmovl ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x4C, 0x0A},		{cmovl r9, [rdx]}	; r/m64 -> reg64
testcase	{0x66, 0x0F, 0x4C, 0x0A},		{cmovnge cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x4C, 0x0A},			{cmovnge ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x4C, 0x0A},		{cmovnge r9, [rdx]}	; r/m64 -> reg64

; implicit evex through ND
testcase	{0x62, 0xF4, 0x35, 0x10, 0x4C, 0x0A},	{cmovl r25w, cx, [rdx]}		; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x4C, 0x0A},	{cmovl r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x4C, 0x0A},	{cmovl r25, rcx, [rdx]}		; ndd64 = cond ? r/m64 : reg64
testcase	{0x62, 0xF4, 0x35, 0x10, 0x4C, 0x0A},	{cmovnge r25w, cx, [rdx]}	; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x4C, 0x0A},	{cmovnge r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x4C, 0x0A},	{cmovnge r25, rcx, [rdx]}	; ndd64 = cond ? r/m64 : reg64

; rex2 variant
testcase	{0x66, 0xD5, 0xC4, 0x4C, 0x0A},		{cmovl r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x4C, 0x0A},		{cmovl r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x4C, 0x0A},		{cmovl r25, [rdx]}	; r/m64 -> ereg64
testcase	{0x66, 0xD5, 0xC4, 0x4C, 0x0A},		{cmovnge r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x4C, 0x0A},		{cmovnge r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x4C, 0x0A},		{cmovnge r25, [rdx]}	; r/m64 -> ereg64

; - cmovle/cmovng - cmov if less or equal -
testcase	{0x66, 0x0F, 0x4E, 0x0A},		{cmovle cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x4E, 0x0A},			{cmovle ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x4E, 0x0A},		{cmovle r9, [rdx]}	; r/m64 -> reg64
testcase	{0x66, 0x0F, 0x4E, 0x0A},		{cmovng cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x4E, 0x0A},			{cmovng ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x4E, 0x0A},		{cmovng r9, [rdx]}	; r/m64 -> reg64

; implicit evex through ND
testcase	{0x62, 0xF4, 0x35, 0x10, 0x4E, 0x0A},	{cmovle r25w, cx, [rdx]}	; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x4E, 0x0A},	{cmovle r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x4E, 0x0A},	{cmovle r25, rcx, [rdx]}	; ndd64 = cond ? r/m64 : reg64
testcase	{0x62, 0xF4, 0x35, 0x10, 0x4E, 0x0A},	{cmovng r25w, cx, [rdx]}	; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x4E, 0x0A},	{cmovng r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x4E, 0x0A},	{cmovng r25, rcx, [rdx]}	; ndd64 = cond ? r/m64 : reg64

; rex2 variant
testcase	{0x66, 0xD5, 0xC4, 0x4E, 0x0A},		{cmovle r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x4E, 0x0A},		{cmovle r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x4E, 0x0A},		{cmovle r25, [rdx]}	; r/m64 -> ereg64
testcase	{0x66, 0xD5, 0xC4, 0x4E, 0x0A},		{cmovng r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x4E, 0x0A},		{cmovng r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x4E, 0x0A},		{cmovng r25, [rdx]}	; r/m64 -> ereg64

; - cmovnb/cmovae/cmovnc - cmov if not below -
testcase	{0x66, 0x0F, 0x43, 0x0A},		{cmovnb cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x43, 0x0A},			{cmovnb ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x43, 0x0A},		{cmovnb r9, [rdx]}	; r/m64 -> reg64
testcase	{0x66, 0x0F, 0x43, 0x0A},		{cmovae cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x43, 0x0A},			{cmovae ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x43, 0x0A},		{cmovae r9, [rdx]}	; r/m64 -> reg64

; implicit evex through ND
testcase	{0x62, 0xF4, 0x35, 0x10, 0x43, 0x0A},	{cmovnb r25w, cx, [rdx]}	; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x43, 0x0A},	{cmovnb r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x43, 0x0A},	{cmovnb r25, rcx, [rdx]}	; ndd64 = cond ? r/m64 : reg64
testcase	{0x62, 0xF4, 0x35, 0x10, 0x43, 0x0A},	{cmovae r25w, cx, [rdx]}	; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x43, 0x0A},	{cmovae r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x43, 0x0A},	{cmovae r25, rcx, [rdx]}	; ndd64 = cond ? r/m64 : reg64

; rex2 variant
testcase	{0x66, 0xD5, 0xC4, 0x43, 0x0A},		{cmovnb r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x43, 0x0A},		{cmovnb r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x43, 0x0A},		{cmovnb r25, [rdx]}	; r/m64 -> ereg64
testcase	{0x66, 0xD5, 0xC4, 0x43, 0x0A},		{cmovae r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x43, 0x0A},		{cmovae r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x43, 0x0A},		{cmovae r25, [rdx]}	; r/m64 -> ereg64

; - cmovnbe/cmova - cmov if not below or equal -
testcase	{0x66, 0x0F, 0x47, 0x0A},		{cmovnbe cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x47, 0x0A},			{cmovnbe ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x47, 0x0A},		{cmovnbe r9, [rdx]}	; r/m64 -> reg64
testcase	{0x66, 0x0F, 0x47, 0x0A},		{cmova cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x47, 0x0A},			{cmova ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x47, 0x0A},		{cmova r9, [rdx]}	; r/m64 -> reg64

; implicit evex through ND
testcase	{0x62, 0xF4, 0x35, 0x10, 0x47, 0x0A},	{cmovnbe r25w, cx, [rdx]}	; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x47, 0x0A},	{cmovnbe r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x47, 0x0A},	{cmovnbe r25, rcx, [rdx]}	; ndd64 = cond ? r/m64 : reg64
testcase	{0x62, 0xF4, 0x35, 0x10, 0x47, 0x0A},	{cmova r25w, cx, [rdx]}		; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x47, 0x0A},	{cmova r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x47, 0x0A},	{cmova r25, rcx, [rdx]}		; ndd64 = cond ? r/m64 : reg64

; rex2 variant
testcase	{0x66, 0xD5, 0xC4, 0x47, 0x0A},		{cmovnbe r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x47, 0x0A},		{cmovnbe r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x47, 0x0A},		{cmovnbe r25, [rdx]}	; r/m64 -> ereg64
testcase	{0x66, 0xD5, 0xC4, 0x47, 0x0A},		{cmova r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x47, 0x0A},		{cmova r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x47, 0x0A},		{cmova r25, [rdx]}	; r/m64 -> ereg64

; - cmovnl/cmovge - cmov if not less -
testcase	{0x66, 0x0F, 0x4D, 0x0A},		{cmovnl cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x4D, 0x0A},			{cmovnl ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x4D, 0x0A},		{cmovnl r9, [rdx]}	; r/m64 -> reg64
testcase	{0x66, 0x0F, 0x4D, 0x0A},		{cmovge cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x4D, 0x0A},			{cmovge ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x4D, 0x0A},		{cmovge r9, [rdx]}	; r/m64 -> reg64

; implicit evex through ND
testcase	{0x62, 0xF4, 0x35, 0x10, 0x4D, 0x0A},	{cmovnl r25w, cx, [rdx]}	; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x4D, 0x0A},	{cmovnl r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x4D, 0x0A},	{cmovnl r25, rcx, [rdx]}	; ndd64 = cond ? r/m64 : reg64
testcase	{0x62, 0xF4, 0x35, 0x10, 0x4D, 0x0A},	{cmovge r25w, cx, [rdx]}	; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x4D, 0x0A},	{cmovge r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x4D, 0x0A},	{cmovge r25, rcx, [rdx]}	; ndd64 = cond ? r/m64 : reg64

; rex2 variant
testcase	{0x66, 0xD5, 0xC4, 0x4D, 0x0A},		{cmovnl r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x4D, 0x0A},		{cmovnl r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x4D, 0x0A},		{cmovnl r25, [rdx]}	; r/m64 -> ereg64
testcase	{0x66, 0xD5, 0xC4, 0x4D, 0x0A},		{cmovge r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x4D, 0x0A},		{cmovge r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x4D, 0x0A},		{cmovge r25, [rdx]}	; r/m64 -> ereg64

; - cmovnle/cmovg - cmov if not less or equal -
testcase	{0x66, 0x0F, 0x4F, 0x0A},		{cmovnle cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x4F, 0x0A},			{cmovnle ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x4F, 0x0A},		{cmovnle r9, [rdx]}	; r/m64 -> reg64
testcase	{0x66, 0x0F, 0x4F, 0x0A},		{cmovg cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x4F, 0x0A},			{cmovg ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x4F, 0x0A},		{cmovg r9, [rdx]}	; r/m64 -> reg64

; implicit evex through ND
testcase	{0x62, 0xF4, 0x35, 0x10, 0x4F, 0x0A},	{cmovnle r25w, cx, [rdx]}	; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x4F, 0x0A},	{cmovnle r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x4F, 0x0A},	{cmovnle r25, rcx, [rdx]}	; ndd64 = cond ? r/m64 : reg64
testcase	{0x62, 0xF4, 0x35, 0x10, 0x4F, 0x0A},	{cmovg r25w, cx, [rdx]}		; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x4F, 0x0A},	{cmovg r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x4F, 0x0A},	{cmovg r25, rcx, [rdx]}		; ndd64 = cond ? r/m64 : reg64

; rex2 variant
testcase	{0x66, 0xD5, 0xC4, 0x4F, 0x0A},		{cmovnle r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x4F, 0x0A},		{cmovnle r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x4F, 0x0A},		{cmovnle r25, [rdx]}	; r/m64 -> ereg64
testcase	{0x66, 0xD5, 0xC4, 0x4F, 0x0A},		{cmovg r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x4F, 0x0A},		{cmovg r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x4F, 0x0A},		{cmovg r25, [rdx]}	; r/m64 -> ereg64

; - cmovno - cmov if not overflow -
testcase	{0x66, 0x0F, 0x41, 0x0A},		{cmovno cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x41, 0x0A},			{cmovno ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x41, 0x0A},		{cmovno r9, [rdx]}	; r/m64 -> reg64

; implicit evex through ND
testcase	{0x62, 0xF4, 0x35, 0x10, 0x41, 0x0A},	{cmovno r25w, cx, [rdx]}	; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x41, 0x0A},	{cmovno r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x41, 0x0A},	{cmovno r25, rcx, [rdx]}	; ndd64 = cond ? r/m64 : reg64

; rex2 variant
testcase	{0x66, 0xD5, 0xC4, 0x41, 0x0A},		{cmovno r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x41, 0x0A},		{cmovno r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x41, 0x0A},		{cmovno r25, [rdx]}	; r/m64 -> ereg64

; - cmovnp/cmovpo - cmov if not parity -
testcase	{0x66, 0x0F, 0x4B, 0x0A},		{cmovnp cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x4B, 0x0A},			{cmovnp ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x4B, 0x0A},		{cmovnp r9, [rdx]}	; r/m64 -> reg64
testcase	{0x66, 0x0F, 0x4B, 0x0A},		{cmovpo cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x4B, 0x0A},			{cmovpo ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x4B, 0x0A},		{cmovpo r9, [rdx]}	; r/m64 -> reg64

; implicit evex through ND
testcase	{0x62, 0xF4, 0x35, 0x10, 0x4B, 0x0A},	{cmovnp r25w, cx, [rdx]}	; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x4B, 0x0A},	{cmovnp r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x4B, 0x0A},	{cmovnp r25, rcx, [rdx]}	; ndd64 = cond ? r/m64 : reg64
testcase	{0x62, 0xF4, 0x35, 0x10, 0x4B, 0x0A},	{cmovpo r25w, cx, [rdx]}	; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x4B, 0x0A},	{cmovpo r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x4B, 0x0A},	{cmovpo r25, rcx, [rdx]}	; ndd64 = cond ? r/m64 : reg64

; rex2 variant
testcase	{0x66, 0xD5, 0xC4, 0x4B, 0x0A},		{cmovnp r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x4B, 0x0A},		{cmovnp r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x4B, 0x0A},		{cmovnp r25, [rdx]}	; r/m64 -> ereg64
testcase	{0x66, 0xD5, 0xC4, 0x4B, 0x0A},		{cmovpo r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x4B, 0x0A},		{cmovpo r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x4B, 0x0A},		{cmovpo r25, [rdx]}	; r/m64 -> ereg64

; - cmovns - cmov if not signed -
testcase	{0x66, 0x0F, 0x49, 0x0A},		{cmovns cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x49, 0x0A},			{cmovns ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x49, 0x0A},		{cmovns r9, [rdx]}	; r/m64 -> reg64

; implicit evex through ND
testcase	{0x62, 0xF4, 0x35, 0x10, 0x49, 0x0A},	{cmovns r25w, cx, [rdx]}	; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x49, 0x0A},	{cmovns r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x49, 0x0A},	{cmovns r25, rcx, [rdx]}	; ndd64 = cond ? r/m64 : reg64

; rex2 variant
testcase	{0x66, 0xD5, 0xC4, 0x49, 0x0A},		{cmovns r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x49, 0x0A},		{cmovns r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x49, 0x0A},		{cmovns r25, [rdx]}	; r/m64 -> ereg64

; - cmovnz/cmovne - cmov if not zero -
testcase	{0x66, 0x0F, 0x45, 0x0A},		{cmovnz cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x45, 0x0A},			{cmovnz ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x45, 0x0A},		{cmovnz r9, [rdx]}	; r/m64 -> reg64
testcase	{0x66, 0x0F, 0x45, 0x0A},		{cmovne cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x45, 0x0A},			{cmovne ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x45, 0x0A},		{cmovne r9, [rdx]}	; r/m64 -> reg64

; implicit evex through ND
testcase	{0x62, 0xF4, 0x35, 0x10, 0x45, 0x0A},	{cmovnz r25w, cx, [rdx]}	; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x45, 0x0A},	{cmovnz r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x45, 0x0A},	{cmovnz r25, rcx, [rdx]}	; ndd64 = cond ? r/m64 : reg64
testcase	{0x62, 0xF4, 0x35, 0x10, 0x45, 0x0A},	{cmovne r25w, cx, [rdx]}	; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x45, 0x0A},	{cmovne r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x45, 0x0A},	{cmovne r25, rcx, [rdx]}	; ndd64 = cond ? r/m64 : reg64

; rex2 variant
testcase	{0x66, 0xD5, 0xC4, 0x45, 0x0A},		{cmovnz r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x45, 0x0A},		{cmovnz r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x45, 0x0A},		{cmovnz r25, [rdx]}	; r/m64 -> ereg64
testcase	{0x66, 0xD5, 0xC4, 0x45, 0x0A},		{cmovne r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x45, 0x0A},		{cmovne r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x45, 0x0A},		{cmovne r25, [rdx]}	; r/m64 -> ereg64

; - cmovo - cmov if overflow -
testcase	{0x66, 0x0F, 0x40, 0x0A},		{cmovo cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x40, 0x0A},			{cmovo ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x40, 0x0A},		{cmovo r9, [rdx]}	; r/m64 -> reg64

; implicit evex through ND
testcase	{0x62, 0xF4, 0x35, 0x10, 0x40, 0x0A},	{cmovo r25w, cx, [rdx]}		; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x40, 0x0A},	{cmovo r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x40, 0x0A},	{cmovo r25, rcx, [rdx]}		; ndd64 = cond ? r/m64 : reg64

; rex2 variant
testcase	{0x66, 0xD5, 0xC4, 0x40, 0x0A},		{cmovo r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x40, 0x0A},		{cmovo r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x40, 0x0A},		{cmovo r25, [rdx]}	; r/m64 -> ereg64

; - cmovp/cmovpe - cmov if parity -
testcase	{0x66, 0x0F, 0x4A, 0x0A},		{cmovp cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x4A, 0x0A},			{cmovp ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x4A, 0x0A},		{cmovp r9, [rdx]}	; r/m64 -> reg64
testcase	{0x66, 0x0F, 0x4A, 0x0A},		{cmovpe cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x4A, 0x0A},			{cmovpe ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x4A, 0x0A},		{cmovpe r9, [rdx]}	; r/m64 -> reg64

; implicit evex through ND
testcase	{0x62, 0xF4, 0x35, 0x10, 0x4A, 0x0A},	{cmovp r25w, cx, [rdx]}		; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x4A, 0x0A},	{cmovp r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x4A, 0x0A},	{cmovp r25, rcx, [rdx]}		; ndd64 = cond ? r/m64 : reg64
testcase	{0x62, 0xF4, 0x35, 0x10, 0x4A, 0x0A},	{cmovpe r25w, cx, [rdx]}	; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x4A, 0x0A},	{cmovpe r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x4A, 0x0A},	{cmovpe r25, rcx, [rdx]}	; ndd64 = cond ? r/m64 : reg64

; rex2 variant
testcase	{0x66, 0xD5, 0xC4, 0x4A, 0x0A},		{cmovp r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x4A, 0x0A},		{cmovp r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x4A, 0x0A},		{cmovp r25, [rdx]}	; r/m64 -> ereg64
testcase	{0x66, 0xD5, 0xC4, 0x4A, 0x0A},		{cmovpe r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x4A, 0x0A},		{cmovpe r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x4A, 0x0A},		{cmovpe r25, [rdx]}	; r/m64 -> ereg64

; - cmovs - cmov if signed -
testcase	{0x66, 0x0F, 0x48, 0x0A},		{cmovs cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x48, 0x0A},			{cmovs ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x48, 0x0A},		{cmovs r9, [rdx]}	; r/m64 -> reg64

; implicit evex through ND
testcase	{0x62, 0xF4, 0x35, 0x10, 0x48, 0x0A},	{cmovs r25w, cx, [rdx]}		; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x48, 0x0A},	{cmovs r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x48, 0x0A},	{cmovs r25, rcx, [rdx]}		; ndd64 = cond ? r/m64 : reg64

; rex2 variant
testcase	{0x66, 0xD5, 0xC4, 0x48, 0x0A},		{cmovs r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x48, 0x0A},		{cmovs r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x48, 0x0A},		{cmovs r25, [rdx]}	; r/m64 -> ereg64

; - cmovz/cmove - cmov if zero -
testcase	{0x66, 0x0F, 0x44, 0x0A},		{cmovz cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x44, 0x0A},			{cmovz ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x44, 0x0A},		{cmovz r9, [rdx]}	; r/m64 -> reg64
testcase	{0x66, 0x0F, 0x44, 0x0A},		{cmove cx, [rdx]}	; r/m16 -> reg16
testcase	{0x0F, 0x44, 0x0A},			{cmove ecx, [rdx]}	; r/m32 -> reg32
testcase	{0x4C, 0x0F, 0x44, 0x0A},		{cmove r9, [rdx]}	; r/m64 -> reg64

; implicit evex through ND
testcase	{0x62, 0xF4, 0x35, 0x10, 0x44, 0x0A},	{cmovz r25w, cx, [rdx]}		; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x44, 0x0A},	{cmovz r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x44, 0x0A},	{cmovz r25, rcx, [rdx]}		; ndd64 = cond ? r/m64 : reg64
testcase	{0x62, 0xF4, 0x35, 0x10, 0x44, 0x0A},	{cmove r25w, cx, [rdx]}	; ndd16 = cond ? r/m16 : reg16
testcase	{0x62, 0xF4, 0x34, 0x10, 0x44, 0x0A},	{cmove r25d, ecx, [rdx]}	; ndd32 = cond ? r/m32 : reg32
testcase	{0x62, 0xF4, 0xB4, 0x10, 0x44, 0x0A},	{cmove r25, rcx, [rdx]}	; ndd64 = cond ? r/m64 : reg64

; rex2 variant
testcase	{0x66, 0xD5, 0xC4, 0x44, 0x0A},		{cmovz r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x44, 0x0A},		{cmovz r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x44, 0x0A},		{cmovz r25, [rdx]}	; r/m64 -> ereg64
testcase	{0x66, 0xD5, 0xC4, 0x44, 0x0A},		{cmove r25w, [rdx]}	; r/m16 -> ereg16
testcase	{0xD5, 0xC4, 0x44, 0x0A},		{cmove r25d, [rdx]}	; r/m32 -> ereg32
testcase	{0xD5, 0xCC, 0x44, 0x0A},		{cmove r25, [rdx]}	; r/m64 -> ereg64

; --- cmpccxadd - conditional add instruction ---
; - cmpbexadd - add if below or equal -
testcase	{0xC4, 0x62, 0x71, 0xE6, 0x0A},		{cmpbexadd [rdx], r9d, ecx}	; r/m32 += r32
testcase	{0xC4, 0x62, 0xF1, 0xE6, 0x0A},		{cmpbexadd [rdx], r9, rcx}	; r/m64 += r64
testcase	{0x62, 0x4A, 0x75, 0x08, 0xE6, 0x0A},	{cmpbexadd [r26], r25d, ecx}	; r/m32 += r32
testcase	{0x62, 0x4A, 0xF5, 0x08, 0xE6, 0x0A},	{cmpbexadd [r26], r25, rcx}	; r/m64 += r64

; - cmpbxadd - add if below -
testcase	{0xC4, 0x62, 0x71, 0xE2, 0x0A},		{cmpbxadd [rdx], r9d, ecx}	; r/m32 += r32
testcase	{0xC4, 0x62, 0xF1, 0xE2, 0x0A},		{cmpbxadd [rdx], r9, rcx}	; r/m64 += r64
testcase	{0x62, 0x4A, 0x75, 0x08, 0xE2, 0x0A},	{cmpbxadd [r26], r25d, ecx}	; r/m32 += r32
testcase	{0x62, 0x4A, 0xF5, 0x08, 0xE2, 0x0A},	{cmpbxadd [r26], r25, rcx}	; r/m64 += r64

; - cmplexadd - add if less or equal -
testcase	{0xC4, 0x62, 0x71, 0xEE, 0x0A},		{cmplexadd [rdx], r9d, ecx}	; r/m32 += r32
testcase	{0xC4, 0x62, 0xF1, 0xEE, 0x0A},		{cmplexadd [rdx], r9, rcx}	; r/m64 += r64
testcase	{0x62, 0x4A, 0x75, 0x08, 0xEE, 0x0A},	{cmplexadd [r26], r25d, ecx}	; r/m32 += r32
testcase	{0x62, 0x4A, 0xF5, 0x08, 0xEE, 0x0A},	{cmplexadd [r26], r25, rcx}	; r/m64 += r64

; - cmplxadd - add if less or equal -
testcase	{0xC4, 0x62, 0x71, 0xEC, 0x0A},		{cmplxadd [rdx], r9d, ecx}	; r/m32 += r32
testcase	{0xC4, 0x62, 0xF1, 0xEC, 0x0A},		{cmplxadd [rdx], r9, rcx}	; r/m64 += r64
testcase	{0x62, 0x4A, 0x75, 0x08, 0xEC, 0x0A},	{cmplxadd [r26], r25d, ecx}	; r/m32 += r32
testcase	{0x62, 0x4A, 0xF5, 0x08, 0xEC, 0x0A},	{cmplxadd [r26], r25, rcx}	; r/m64 += r64

; - cmpnbexadd - add if not below or equal -
testcase	{0xC4, 0x62, 0x71, 0xE7, 0x0A},		{cmpnbexadd [rdx], r9d, ecx}	; r/m32 += r32
testcase	{0xC4, 0x62, 0xF1, 0xE7, 0x0A},		{cmpnbexadd [rdx], r9, rcx}	; r/m64 += r64
testcase	{0x62, 0x4A, 0x75, 0x08, 0xE7, 0x0A},	{cmpnbexadd [r26], r25d, ecx}	; r/m32 += r32
testcase	{0x62, 0x4A, 0xF5, 0x08, 0xE7, 0x0A},	{cmpnbexadd [r26], r25, rcx}	; r/m64 += r64

; - cmpnbxadd - add if not below -
testcase	{0xC4, 0x62, 0x71, 0xE3, 0x0A},		{cmpnbxadd [rdx], r9d, ecx}	; r/m32 += r32
testcase	{0xC4, 0x62, 0xF1, 0xE3, 0x0A},		{cmpnbxadd [rdx], r9, rcx}	; r/m64 += r64
testcase	{0x62, 0x4A, 0x75, 0x08, 0xE3, 0x0A},	{cmpnbxadd [r26], r25d, ecx}	; r/m32 += r32
testcase	{0x62, 0x4A, 0xF5, 0x08, 0xE3, 0x0A},	{cmpnbxadd [r26], r25, rcx}	; r/m64 += r64

; - cmpnlexadd - add if not less or equal -
testcase	{0xC4, 0x62, 0x71, 0xEF, 0x0A},		{cmpnlexadd [rdx], r9d, ecx}	; r/m32 += r32
testcase	{0xC4, 0x62, 0xF1, 0xEF, 0x0A},		{cmpnlexadd [rdx], r9, rcx}	; r/m64 += r64
testcase	{0x62, 0x4A, 0x75, 0x08, 0xEF, 0x0A},	{cmpnlexadd [r26], r25d, ecx}	; r/m32 += r32
testcase	{0x62, 0x4A, 0xF5, 0x08, 0xEF, 0x0A},	{cmpnlexadd [r26], r25, rcx}	; r/m64 += r64

; - cmpnlxadd - add if not less -
testcase	{0xC4, 0x62, 0x71, 0xED, 0x0A},		{cmpnlxadd [rdx], r9d, ecx}	; r/m32 += r32
testcase	{0xC4, 0x62, 0xF1, 0xED, 0x0A},		{cmpnlxadd [rdx], r9, rcx}	; r/m64 += r64
testcase	{0x62, 0x4A, 0x75, 0x08, 0xED, 0x0A},	{cmpnlxadd [r26], r25d, ecx}	; r/m32 += r32
testcase	{0x62, 0x4A, 0xF5, 0x08, 0xED, 0x0A},	{cmpnlxadd [r26], r25, rcx}	; r/m64 += r64

; - cmpnoxadd - add if not overflow -
testcase	{0xC4, 0x62, 0x71, 0xE1, 0x0A},		{cmpnoxadd [rdx], r9d, ecx}	; r/m32 += r32
testcase	{0xC4, 0x62, 0xF1, 0xE1, 0x0A},		{cmpnoxadd [rdx], r9, rcx}	; r/m64 += r64
testcase	{0x62, 0x4A, 0x75, 0x08, 0xE1, 0x0A},	{cmpnoxadd [r26], r25d, ecx}	; r/m32 += r32
testcase	{0x62, 0x4A, 0xF5, 0x08, 0xE1, 0x0A},	{cmpnoxadd [r26], r25, rcx}	; r/m64 += r64

; - cmpnpxadd - add if not parity -
testcase	{0xC4, 0x62, 0x71, 0xEB, 0x0A},		{cmpnpxadd [rdx], r9d, ecx}	; r/m32 += r32
testcase	{0xC4, 0x62, 0xF1, 0xEB, 0x0A},		{cmpnpxadd [rdx], r9, rcx}	; r/m64 += r64
testcase	{0x62, 0x4A, 0x75, 0x08, 0xEB, 0x0A},	{cmpnpxadd [r26], r25d, ecx}	; r/m32 += r32
testcase	{0x62, 0x4A, 0xF5, 0x08, 0xEB, 0x0A},	{cmpnpxadd [r26], r25, rcx}	; r/m64 += r64

; - cmpnsxadd - add if not sign -
testcase	{0xC4, 0x62, 0x71, 0xE9, 0x0A},		{cmpnsxadd [rdx], r9d, ecx}	; r/m32 += r32
testcase	{0xC4, 0x62, 0xF1, 0xE9, 0x0A},		{cmpnsxadd [rdx], r9, rcx}	; r/m64 += r64
testcase	{0x62, 0x4A, 0x75, 0x08, 0xE9, 0x0A},	{cmpnsxadd [r26], r25d, ecx}	; r/m32 += r32
testcase	{0x62, 0x4A, 0xF5, 0x08, 0xE9, 0x0A},	{cmpnsxadd [r26], r25, rcx}	; r/m64 += r64

; - cmpnzxadd - add if not zero -
testcase	{0xC4, 0x62, 0x71, 0xE5, 0x0A},		{cmpnzxadd [rdx], r9d, ecx}	; r/m32 += r32
testcase	{0xC4, 0x62, 0xF1, 0xE5, 0x0A},		{cmpnzxadd [rdx], r9, rcx}	; r/m64 += r64
testcase	{0x62, 0x4A, 0x75, 0x08, 0xE5, 0x0A},	{cmpnzxadd [r26], r25d, ecx}	; r/m32 += r32
testcase	{0x62, 0x4A, 0xF5, 0x08, 0xE5, 0x0A},	{cmpnzxadd [r26], r25, rcx}	; r/m64 += r64

; - cmpoxadd - add if overflow -
testcase	{0xC4, 0x62, 0x71, 0xE0, 0x0A},		{cmpoxadd [rdx], r9d, ecx}	; r/m32 += r32
testcase	{0xC4, 0x62, 0xF1, 0xE0, 0x0A},		{cmpoxadd [rdx], r9, rcx}	; r/m64 += r64
testcase	{0x62, 0x4A, 0x75, 0x08, 0xE0, 0x0A},	{cmpoxadd [r26], r25d, ecx}	; r/m32 += r32
testcase	{0x62, 0x4A, 0xF5, 0x08, 0xE0, 0x0A},	{cmpoxadd [r26], r25, rcx}	; r/m64 += r64

; - cmppxadd - add if parity -
testcase	{0xC4, 0x62, 0x71, 0xEA, 0x0A},		{cmppxadd [rdx], r9d, ecx}	; r/m32 += r32
testcase	{0xC4, 0x62, 0xF1, 0xEA, 0x0A},		{cmppxadd [rdx], r9, rcx}	; r/m64 += r64
testcase	{0x62, 0x4A, 0x75, 0x08, 0xEA, 0x0A},	{cmppxadd [r26], r25d, ecx}	; r/m32 += r32
testcase	{0x62, 0x4A, 0xF5, 0x08, 0xEA, 0x0A},	{cmppxadd [r26], r25, rcx}	; r/m64 += r64

; - cmpsxadd - add if sign -
testcase	{0xC4, 0x62, 0x71, 0xE8, 0x0A},		{cmpsxadd [rdx], r9d, ecx}	; r/m32 += r32
testcase	{0xC4, 0x62, 0xF1, 0xE8, 0x0A},		{cmpsxadd [rdx], r9, rcx}	; r/m64 += r64
testcase	{0x62, 0x4A, 0x75, 0x08, 0xE8, 0x0A},	{cmpsxadd [r26], r25d, ecx}	; r/m32 += r32
testcase	{0x62, 0x4A, 0xF5, 0x08, 0xE8, 0x0A},	{cmpsxadd [r26], r25, rcx}	; r/m64 += r64

; - cmpzxadd - add if zero -
testcase	{0xC4, 0x62, 0x71, 0xE4, 0x0A},		{cmpzxadd [rdx], r9d, ecx}	; r/m32 += r32
testcase	{0xC4, 0x62, 0xF1, 0xE4, 0x0A},		{cmpzxadd [rdx], r9, rcx}	; r/m64 += r64
testcase	{0x62, 0x4A, 0x75, 0x08, 0xE4, 0x0A},	{cmpzxadd [r26], r25d, ecx}	; r/m32 += r32
testcase	{0x62, 0x4A, 0xF5, 0x08, 0xE4, 0x0A},	{cmpzxadd [r26], r25, rcx}	; r/m64 += r64