From: Gabe Black Date: Tue, 18 Aug 2009 03:22:56 +0000 (-0700) Subject: X86: Implement the mask move instructions. X-Git-Tag: Calvin_Submission~58 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d9970f139acfb2a3d19854d082cc30000bf09d35;p=gem5.git X86: Implement the mask move instructions. --- diff --git a/src/arch/x86/isa/decoder/two_byte_opcodes.isa b/src/arch/x86/isa/decoder/two_byte_opcodes.isa index 7e0f19fb1..91e2f2b2f 100644 --- a/src/arch/x86/isa/decoder/two_byte_opcodes.isa +++ b/src/arch/x86/isa/decoder/two_byte_opcodes.isa @@ -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 --git a/src/arch/x86/isa/insts/simd128/integer/data_transfer/move_non_temporal.py b/src/arch/x86/isa/insts/simd128/integer/data_transfer/move_non_temporal.py index 413dddb84..c8df3b403 100644 --- a/src/arch/x86/isa/insts/simd128/integer/data_transfer/move_non_temporal.py +++ b/src/arch/x86/isa/insts/simd128/integer/data_transfer/move_non_temporal.py @@ -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 --git a/src/arch/x86/isa/insts/simd64/integer/data_transfer/move_non_temporal.py b/src/arch/x86/isa/insts/simd64/integer/data_transfer/move_non_temporal.py index edd55d35a..f43d75e68 100644 --- a/src/arch/x86/isa/insts/simd64/integer/data_transfer/move_non_temporal.py +++ b/src/arch/x86/isa/insts/simd64/integer/data_transfer/move_non_temporal.py @@ -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 +}; '''