changeset 2aec993cdd8f in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=2aec993cdd8f
description:
        X86: Implement the mask move instructions.

diffstat:

3 files changed, 17 insertions(+), 4 deletions(-)
src/arch/x86/isa/decoder/two_byte_opcodes.isa                             |    
4 ++--
src/arch/x86/isa/insts/simd128/integer/data_transfer/move_non_temporal.py |   
10 +++++++++-
src/arch/x86/isa/insts/simd64/integer/data_transfer/move_non_temporal.py  |    
7 ++++++-

diffs (54 lines):

diff -r a5dbea7ba3f9 -r 2aec993cdd8f 
src/arch/x86/isa/decoder/two_byte_opcodes.isa
--- a/src/arch/x86/isa/decoder/two_byte_opcodes.isa     Mon Aug 17 20:22:56 
2009 -0700
+++ b/src/arch/x86/isa/decoder/two_byte_opcodes.isa     Mon Aug 17 20:22:56 
2009 -0700
@@ -1067,7 +1067,7 @@
                         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)
@@ -1078,7 +1078,7 @@
                         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)
diff -r a5dbea7ba3f9 -r 2aec993cdd8f 
src/arch/x86/isa/insts/simd128/integer/data_transfer/move_non_temporal.py
--- a/src/arch/x86/isa/insts/simd128/integer/data_transfer/move_non_temporal.py 
Mon Aug 17 20:22:56 2009 -0700
+++ b/src/arch/x86/isa/insts/simd128/integer/data_transfer/move_non_temporal.py 
Mon Aug 17 20:22:56 2009 -0700
@@ -55,5 +55,13 @@
 
 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
+};
 '''
diff -r a5dbea7ba3f9 -r 2aec993cdd8f 
src/arch/x86/isa/insts/simd64/integer/data_transfer/move_non_temporal.py
--- a/src/arch/x86/isa/insts/simd64/integer/data_transfer/move_non_temporal.py  
Mon Aug 17 20:22:56 2009 -0700
+++ b/src/arch/x86/isa/insts/simd64/integer/data_transfer/move_non_temporal.py  
Mon Aug 17 20:22:56 2009 -0700
@@ -55,5 +55,10 @@
 
 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
+};
 '''
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to