X86: Implement the mask move instructions.
authorGabe Black <gblack@eecs.umich.edu>
Tue, 18 Aug 2009 03:22:56 +0000 (20:22 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Tue, 18 Aug 2009 03:22:56 +0000 (20:22 -0700)
src/arch/x86/isa/decoder/two_byte_opcodes.isa
src/arch/x86/isa/insts/simd128/integer/data_transfer/move_non_temporal.py
src/arch/x86/isa/insts/simd64/integer/data_transfer/move_non_temporal.py

index 7e0f19fb145846f47dd04535480f518be28db390..91e2f2b2f1942a623d20f3cbafb17c162bc86ce7 100644 (file)
                         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)
index 413dddb849134b9abd7cae7c4c4fa91600789764..c8df3b4035b2699e3a4b85228a95e7f0628258ea 100644 (file)
 
 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
+};
 '''
index edd55d35a93831a67a6b912c5c8f1fc21793c250..f43d75e680c28da24e4fe1201cbe1ef5f9a5228e 100644 (file)
 
 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
+};
 '''