0x4: PMULUDQ(Pq,Qq);
0x5: PMADDWD(Pq,Qq);
0x6: PSADBW(Pq,Qq);
- 0x7: WarnUnimpl::maskmovq_Pq_PRq();
+ 0x7: MASKMOVQ(Pq,PRq);
default: UD2();
}
// operand size (0x66)
0x4: PMULUDQ(Vo,Wo);
0x5: PMADDWD(Vo,Wo);
0x6: PSADBW(Vo,Wo);
- 0x7: WarnUnimpl::maskmovdqu_Vo_VRo();
+ 0x7: MASKMOVDQU(Vo,VRo);
default: UD2();
}
// repne (0xF2)
microcode = '''
# MOVNTDQ
-# MASKMOVDQU
+
+def macroop MASKMOVDQU_XMM_XMM {
+ ldfp ufp1, ds, [1, t0, rdi], dataSize=8
+ ldfp ufp2, ds, [1, t0, rdi], 8, dataSize=8
+ maskmov ufp1, xmml, xmmlm, size=1
+ maskmov ufp2, xmmh, xmmhm, size=1
+ stfp ufp1, ds, [1, t0, rdi], dataSize=8
+ stfp ufp2, ds, [1, t0, rdi], 8, dataSize=8
+};
'''
microcode = '''
# MOVNTQ
-# MASKMOVQ
+
+def macroop MASKMOVQ_MMX_MMX {
+ ldfp ufp1, ds, [1, t0, rdi], dataSize=8
+ maskmov ufp1, mmx, mmxm, size=1
+ stfp ufp1, ds, [1, t0, rdi], dataSize=8
+};
'''