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: ["comisd", "ucomisd"] operands: - class: "register" name: "xmm" source: true destination: false - class: "register" name: "xmm" 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: ["comisd", "ucomisd"] operands: - class: "register" name: "xmm" 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: 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