X86: Implement the mask move instructions.

This commit is contained in:
Gabe Black 2009-08-17 20:22:56 -07:00
parent 75528a497c
commit d9970f139a
3 changed files with 17 additions and 4 deletions

View file

@ -1067,7 +1067,7 @@
0x4: PMULUDQ(Pq,Qq); 0x4: PMULUDQ(Pq,Qq);
0x5: PMADDWD(Pq,Qq); 0x5: PMADDWD(Pq,Qq);
0x6: PSADBW(Pq,Qq); 0x6: PSADBW(Pq,Qq);
0x7: WarnUnimpl::maskmovq_Pq_PRq(); 0x7: MASKMOVQ(Pq,PRq);
default: UD2(); default: UD2();
} }
// operand size (0x66) // operand size (0x66)
@ -1078,7 +1078,7 @@
0x4: PMULUDQ(Vo,Wo); 0x4: PMULUDQ(Vo,Wo);
0x5: PMADDWD(Vo,Wo); 0x5: PMADDWD(Vo,Wo);
0x6: PSADBW(Vo,Wo); 0x6: PSADBW(Vo,Wo);
0x7: WarnUnimpl::maskmovdqu_Vo_VRo(); 0x7: MASKMOVDQU(Vo,VRo);
default: UD2(); default: UD2();
} }
// repne (0xF2) // repne (0xF2)

View file

@ -55,5 +55,13 @@
microcode = ''' microcode = '''
# MOVNTDQ # 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
};
''' '''

View file

@ -55,5 +55,10 @@
microcode = ''' microcode = '''
# MOVNTQ # 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
};
''' '''