Skip to content

Commit adc648e

Browse files
authored
Merge pull request #82 from mrexodia/vinsertf128_addition
Added vinsertf128
2 parents f265a01 + eda3297 commit adc648e

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

src/dumpulator/dumpulator.py

+13-2
Original file line numberDiff line numberDiff line change
@@ -1756,14 +1756,25 @@ def cip_next():
17561756
# TODO: PRNG based on dmp hash
17571757
op_write(0, 42)
17581758
cip_next()
1759-
elif instr.id == X86_INS_VMOVDQU:
1759+
elif instr.id in [X86_INS_VMOVDQU, X86_INS_VMOVUPS]:
17601760
src = op_read(1)
17611761
op_write(0, src)
17621762
cip_next()
1763-
elif instr.id in [X86_INS_VMOVDQA, X86_INS_MOVNTDQ]:
1763+
elif instr.id in [X86_INS_VMOVDQA, X86_INS_MOVNTDQ, X86_INS_VMOVAPS]:
17641764
src = op_read(1, aligned=True)
17651765
op_write(0, src, aligned=True)
17661766
cip_next()
1767+
elif instr.id == X86_INS_VINSERTF128:
1768+
src = op_read(1)
1769+
xmm1 = op_read(2)
1770+
imm8 = op_read(3)
1771+
if imm8 == 0:
1772+
src = (src & 0xffffffffffffffffffffffffffffffff00000000000000000000000000000000) | xmm1
1773+
elif imm8 == 1:
1774+
src = (src & 0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff) | (xmm1 << 128)
1775+
op_write(0, src)
1776+
cip_next()
1777+
17671778
else:
17681779
dp.error(f"unsupported: {instr.mnemonic} {instr.op_str}")
17691780
# Unsupported instruction

0 commit comments

Comments
 (0)