mirror of
https://github.com/RRZE-HPC/OSACA.git
synced 2025-12-15 16:40:05 +01:00
4430 lines
105 KiB
YAML
4430 lines
105 KiB
YAML
osaca_version: 0.3.4
|
|
isa: "x86"
|
|
# Contains all operand-irregular instruction forms OSACA supports for x86.
|
|
# Operand-regular for a x86 AT&T instruction form with N operands in the shape of
|
|
# mnemonic op1 ... opN
|
|
# means that opN is the only destination operand and op1 to op(N-1) are source operands.
|
|
instruction_forms:
|
|
- name: adc
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
- name: adc
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
- name: add
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: false
|
|
destination: true
|
|
operation: "op2['value'] += op1['value']"
|
|
- name: add
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: false
|
|
destination: true
|
|
- name: add
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: false
|
|
destination: true
|
|
- name: add
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: false
|
|
destination: true
|
|
- name: divsd
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: addsd
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [addss, addps, addpd]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [addsubps, addsubpd]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [aesdec, aesdeclast, aesenc, aesenclast]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: not
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
- name: not
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: true
|
|
- name: or
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
- name: or
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
- name: or
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: true
|
|
- name: or
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: true
|
|
- name: and
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
- name: and
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
- name: and
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: true
|
|
- name: and
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: true
|
|
- name: andn
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
- name: [blendvps, blendvpd]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "register"
|
|
name: "xmm0"
|
|
source: true
|
|
destination: false
|
|
- name: blsr
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
- name: bsf
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
- name: bsr
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
- name: bts
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
- name: bts
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
- name: bts
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: true
|
|
- name: bts
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: true
|
|
- name: cld
|
|
operands: []
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "DF"
|
|
source: false
|
|
destination: true
|
|
- name: cbtw
|
|
operands: []
|
|
hidden_operands:
|
|
- class: "register"
|
|
name: "al"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "ax"
|
|
source: false
|
|
destination: true
|
|
- name: [cwtl, cwde]
|
|
operands: []
|
|
hidden_operands:
|
|
- class: "register"
|
|
name: "ax"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "eax"
|
|
source: false
|
|
destination: true
|
|
- name: cwtd
|
|
operands: []
|
|
hidden_operands:
|
|
- class: "register"
|
|
name: "ax"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "dx"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ax"
|
|
source: false
|
|
destination: true
|
|
- name: cltd
|
|
operands: []
|
|
hidden_operands:
|
|
- class: "register"
|
|
name: "eax"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "edx"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "eax"
|
|
source: false
|
|
destination: true
|
|
- name: [cqo, cqto]
|
|
operands: []
|
|
hidden_operands:
|
|
- class: "register"
|
|
name: "rax"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "rdx"
|
|
source: false
|
|
destination: true
|
|
- name: [cltq, cdqe]
|
|
operands: []
|
|
hidden_operands:
|
|
- class: "register"
|
|
name: "eax"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "rax"
|
|
source: false
|
|
destination: true
|
|
- name: cqtq
|
|
operands: []
|
|
hidden_operands:
|
|
- class: "register"
|
|
name: "rax"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "rdx"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "rax"
|
|
source: false
|
|
destination: true
|
|
- name: [ja, jbe, jna, jnbe]
|
|
operands:
|
|
- class: identifier
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: [jae, jb, jc, jnae, jnb, jnc]
|
|
operands:
|
|
- class: identifier
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- name: [je, jne, jnz, jz]
|
|
operands:
|
|
- class: identifier
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: [jg, jle, jng, jnle]
|
|
operands:
|
|
- class: identifier
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: [jge, jl, jnge, jnl]
|
|
operands:
|
|
- class: identifier
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: [jno, jo]
|
|
operands:
|
|
- class: identifier
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: [jnp, jp, jpe, jpo]
|
|
operands:
|
|
- class: identifier
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: true
|
|
destination: false
|
|
- name: [jns, js]
|
|
operands:
|
|
- class: identifier
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- name: [seta, setbe, setna, setnbe]
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: [setae, setb, setc, setnae, setnb, setnc]
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- name: [sete, setne, setnz, setz]
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: [setg, setle, setng, setnle]
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: [setge, setl, setnge, setnl]
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: [setno, seto]
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: [setnp, setp, setpe, setpo]
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: true
|
|
destination: false
|
|
- name: [setns, sets]
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- name: cmova
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmova
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmova
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovae
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovae
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovae
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovb
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovb
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovb
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovbe
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovbe
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovbe
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovc
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovc
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovc
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- name: cmove
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmove
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmove
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovg
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovg
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovg
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovge
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovge
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovge
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovl
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovl
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovl
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovle
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovle
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovle
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovna
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovna
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovna
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnae
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnae
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnae
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnb
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnb
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnb
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnbe
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnbe
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnbe
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnc
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnc
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnc
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovne
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovne
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovne
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovng
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovng
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovng
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnge
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnge
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnge
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnl
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnl
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnl
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnle
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnle
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnle
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovno
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovno
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovno
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnp
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnp
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnp
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovns
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovns
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovns
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnz
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnz
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovnz
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovo
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovo
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovo
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovp
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovp
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovp
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovpe
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovpe
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovpe
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovpo
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovpo
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovpo
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovs
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovs
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovs
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovz
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovz
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmovz
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- name: cmp
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
- name: cmp
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
- name: cmp
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
- name: cmp
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
- name: cmpxchg
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "register"
|
|
name: "rax"
|
|
source: true
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: true
|
|
- name: cmpxchg
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "register"
|
|
name: "rax"
|
|
source: true
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: true
|
|
- name: cmpxchg
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "register"
|
|
name: "rax"
|
|
source: true
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: true
|
|
- name: dec
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
operation: "op1['value'] -= 1"
|
|
- name: dec
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
- name: imul
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: false
|
|
destination: true
|
|
- name: imul
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: false
|
|
destination: true
|
|
- name: inc
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
operation: "op1['value'] += 1"
|
|
- name: inc
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
- name: lea
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: register
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
# TODO
|
|
#operation: "op2['value'] = None if None in [op1['offset'], op1['base']] else op1['offset'] + op1['base'] + op1['index'] * op1['scale']"
|
|
- name: ldmxcsr
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
# TODO sets MXCSR
|
|
- name: mov
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
operation: "op2['name'] = op1['name']; op2['value'] = op1['value']"
|
|
- name: [maxpd, maxps, maxsd, maxss, minpd, minps, minsd, minss]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: mulsd
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: mulss
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [mulpd, mulps]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [packssdw, packsswb, packusdw, packuswb]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [packssdw, packsswb, packusdw, packuswb]
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: [paddb, paddw, paddd, paddq, paddsb, paddsw, paddusb, paddusw]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [paddb, paddw, paddd, paddq, paddsb, paddsw, paddusb, paddusw]
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: [pand, por, pandn]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [pxor]
|
|
breaks_dependency_on_equal_operands: true
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [pand, por, pandn]
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: [pxor]
|
|
breaks_dependency_on_equal_operands: true
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: [pavgb, pavgw]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [pavgb, pavgw]
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: [pcmpeqb, pcmpeqw, pcmpeqd, pcmpeqq]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [pcmpeqb, pcmpeqw, pcmpeqd, pcmpeqq]
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: [pcmpgtb, pcmpgtw, pcmpgtd, pcmpgtq]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [pcmpgtb, pcmpgtw, pcmpgtd, pcmpgtq]
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: pmaddubsw
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: pmaddubsw
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: pmaddwd
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: pmaddwd
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: [pmaxsb, pmaxsw, pmaxsd, pmaxsq]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [pmaxsb, pmaxsw, pmaxsd, pmaxsq]
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: [pmaxub, pmaxuw, pmaxud, pmaxuq]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [pmaxub, pmaxuw]
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: [pminsb, pminsw, pminsd, pminsq]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [pminsb, pminsw, pminsd, pminsq]
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: [pminub, pminuw, pminud, pminuq]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [pminub, pminuw]
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: pmuldq
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [pmulhrsw, pmulhuw, pmulhw, pmullw]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [pmulhrsw, pmulhuw, pmulhw, pmullw]
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: pmuludq
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: pmuludq
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: psadbw
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: psadbw
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: pshufb
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: pshufb
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: [psignb, psignw, psignd]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [psignb, psignw, psignd]
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: [psllw, pslld, psllq]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [psllw, pslld, psllq]
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: [psllw, pslld, psllq]
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [psllw, pslld, psllq]
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: pslldq
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [psraw, psrad, psraq]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [psraw, psrad, psraq]
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: [psraw, psrad, psraq]
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [psraw, psrad, psraq]
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: [psrlw, psrld, psrlq]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [psrlw, psrld, psrlq]
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: [psrlw, psrld, psrlq]
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [psrlw, psrld, psrlq]
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: psrldq
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [psubb, psubw, psubd, psubq]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [psubb, psubw, psubd, psubq]
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: [psubsb, psubsw]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [psubsb, psubsw]
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: [psubusb, psubusw]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [psubusb, psubusw]
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: [punpckhbw, punpckhwd, punpckhdq, punpckhqdq]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [punpckhbw, punpckhwd, punpckhdq, punpckhqdq]
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: [punpcklbw, punpcklwd, punpckldq, punpcklqdq]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [punpcklbw, punpcklwd, punpckldq, punpcklqdq]
|
|
operands:
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "mm"
|
|
source: true
|
|
destination: true
|
|
- name: [sha1msg2, sha1nexte]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: push
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
hidden_operands:
|
|
- class: "memory"
|
|
base: {name: 'rsp'}
|
|
offset: ~
|
|
index: ~
|
|
scale: 1
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "rsp"
|
|
source: true
|
|
destination: true
|
|
- name: push
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
hidden_operands:
|
|
- class: "memory"
|
|
base: {name: 'rsp'}
|
|
offset: ~
|
|
index: ~
|
|
scale: 1
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "rsp"
|
|
source: true
|
|
destination: true
|
|
- name: pop
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: false
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "memory"
|
|
base: {name: 'rsp'}
|
|
offset: ~
|
|
index: ~
|
|
scale: 1
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "rsp"
|
|
source: true
|
|
destination: true
|
|
- name: pushfq
|
|
operands: []
|
|
hidden_operands:
|
|
- class: "memory"
|
|
base: {name: 'rsp'}
|
|
offset: ~
|
|
index: ~
|
|
scale: 1
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "rsp"
|
|
source: true
|
|
destination: true
|
|
# All of EFLAGS and RFLAGS, without VM and RF
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "TF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "IF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "DF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "IOPL"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "NT"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "AC"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "VIF"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "VIP"
|
|
source: true
|
|
destination: false
|
|
- class: "flag"
|
|
name: "ID"
|
|
source: true
|
|
destination: false
|
|
- name: [sar, sal, shl, shr]
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
- name: sbb
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: true
|
|
destination: true
|
|
operation: "op2['value'] -= (op1['value'])" # + CF['value'])" TODO
|
|
- name: sub
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: false
|
|
destination: true
|
|
operation: "op2['value'] -= op1['value']"
|
|
- name: sub
|
|
breaks_dependency_on_equal_operands: true
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: false
|
|
destination: true
|
|
- name: sub
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: false
|
|
destination: true
|
|
- name: sub
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: true
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "OF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "CF"
|
|
source: false
|
|
destination: true
|
|
- name: [subsd, subpd]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [subss, subps]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: test
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
- name: test
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
- name: test
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
- name: test
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
- name: [unpcklps, unpcklpd]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: vldmxcsr
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
# TODO sets MXCSR
|
|
- name: [vfmadd132pd, vfmadd213pd, vfmadd231pd]
|
|
operands:
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: true
|
|
- name: [vfmadd132ps, vfmadd213ps, vfmadd231ps]
|
|
operands:
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: true
|
|
- name: [vfmadd132sd, vfmadd213sd, vfmadd231sd]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [vfmadd132ss, vfmadd213ss, vfmadd231ss]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [vfmaddsub132pd, vfmaddsub213pd, vfmaddsub231pd]
|
|
operands:
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: true
|
|
- name: [vfmaddsub132ps, vfmaddsub213ps, vfmaddsub231ps]
|
|
operands:
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: true
|
|
- name: [vfmsub132pd, vfmsub213pd, vfmsub231pd]
|
|
operands:
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: true
|
|
- name: [vfmsub132ps, vfmsub213ps, vfmsub231ps]
|
|
operands:
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: true
|
|
- name: [vfmsub132sd, vfmsub213sd, vfmsub231sd]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [vfmsub132ss, vfmsub213ss, vfmsub231ss]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [vfmsubadd132pd, vfmsubadd213pd, vfmsubadd231pd]
|
|
operands:
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: true
|
|
- name: [vfmsubadd132ps, vfmsubadd213ps, vfmsubadd231ps]
|
|
operands:
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: true
|
|
- name: [vptest, ptest]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
- name: vptest
|
|
operands:
|
|
- class: "register"
|
|
name: "ymm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "ymm"
|
|
source: true
|
|
destination: false
|
|
hidden_operands:
|
|
- class: "flag"
|
|
name: "AF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "SF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "ZF"
|
|
source: false
|
|
destination: true
|
|
- class: "flag"
|
|
name: "PF"
|
|
source: false
|
|
destination: true
|
|
- name: vzeroall
|
|
breaks_dependency_on_equal_operands: true
|
|
operands: []
|
|
hidden_operands:
|
|
- class: "register"
|
|
name: "ymm0"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm1"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm2"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm3"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm4"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm5"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm6"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm7"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm8"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm9"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm10"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm11"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm12"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm13"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm14"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm15"
|
|
source: false
|
|
destination: true
|
|
- name: vzeroupper
|
|
operands: []
|
|
# TODO not quite correct:
|
|
# only upper half is zeroed, not the xmm part
|
|
hidden_operands:
|
|
- class: "register"
|
|
name: "ymm0"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm1"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm2"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm3"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm4"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm5"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm6"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm7"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm8"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm9"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm10"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm11"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm12"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm13"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm14"
|
|
source: false
|
|
destination: true
|
|
- class: "register"
|
|
name: "ymm15"
|
|
source: false
|
|
destination: true
|
|
- name: [unpckhps, unpckhpd]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [andps, andpd, andnps, andnpd, orps, orpd]
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [xorps, xorpd]
|
|
breaks_dependency_on_equal_operands: true
|
|
operands:
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "xmm"
|
|
source: true
|
|
destination: true
|
|
- name: [shl, shr, shlq, shrq]
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|
|
- name: [vxorpd, vxorps]
|
|
breaks_dependency_on_equal_operands: true
|
|
operands:
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "*"
|
|
source: false
|
|
destination: true
|
|
- name: xor
|
|
operands:
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- name: xor
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: true
|
|
- name: xor
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "memory"
|
|
base: "*"
|
|
offset: "*"
|
|
index: "*"
|
|
scale: "*"
|
|
source: true
|
|
destination: true
|
|
- name: xor
|
|
operands:
|
|
- class: "immediate"
|
|
imd: "int"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- name: xor
|
|
breaks_dependency_on_equal_operands: true
|
|
operands:
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: false
|
|
- class: "register"
|
|
name: "gpr"
|
|
source: true
|
|
destination: true
|