diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2007-08-29 20:38:22 -0700 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2007-08-29 20:38:22 -0700 |
commit | c1a776de8a89c624d3e047bf40863e05180a7958 (patch) | |
tree | 8320c5230d5d07c583af36d793683102a3a19cc2 /src/arch/x86 | |
parent | 3da3190f0750bf38e6c13c691c1146f26d0d1dd8 (diff) | |
download | gem5-c1a776de8a89c624d3e047bf40863e05180a7958.tar.xz |
X86: Implement the movaps instruction.
--HG--
extra : convert_revision : 2aeb1c05205f8ea8f7484e8bacf3fbbc581defd2
Diffstat (limited to 'src/arch/x86')
-rw-r--r-- | src/arch/x86/isa/decoder/two_byte_opcodes.isa | 6 | ||||
-rw-r--r-- | src/arch/x86/isa/insts/sse/move.py | 27 |
2 files changed, 31 insertions, 2 deletions
diff --git a/src/arch/x86/isa/decoder/two_byte_opcodes.isa b/src/arch/x86/isa/decoder/two_byte_opcodes.isa index c426c6b0f..6d5a04e2d 100644 --- a/src/arch/x86/isa/decoder/two_byte_opcodes.isa +++ b/src/arch/x86/isa/decoder/two_byte_opcodes.isa @@ -164,8 +164,10 @@ 0x05: decode LEGACY_DECODEVAL { // no prefix 0x0: decode OPCODE_OP_BOTTOM3 { - 0x0: movaps_Vo_Wo(); - 0x1: movaps_Wo_Vo(); + //These moves should really use size o (octword), but + //because they are split in two, they use q (quadword). + 0x0: Inst::MOVAPS(Vq,Wq); + 0x1: Inst::MOVAPS(Wq,Vq); 0x2: decode MODRM_MOD { 0x3: cvtpi2pS_Vq_Pq(); default: cvtpi2ps_Vq_Mq(); diff --git a/src/arch/x86/isa/insts/sse/move.py b/src/arch/x86/isa/insts/sse/move.py index 05e28d74d..c03658c7c 100644 --- a/src/arch/x86/isa/insts/sse/move.py +++ b/src/arch/x86/isa/insts/sse/move.py @@ -99,4 +99,31 @@ def macroop MOVSD_P_R { def macroop MOVSD_R_R { movfp xmml, xmml, xmmlm, dataSize=8 }; + +def macroop MOVAPS_R_M { + ldfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8 + ldfp xmml, seg, sib, disp, dataSize=8 +}; + +def macroop MOVAPS_R_P { + rdip t7 + ldfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8 + ldfp xmml, seg, riprel, disp, dataSize=8 +}; + +def macroop MOVAPS_M_R { + stfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8 + stfp xmml, seg, sib, disp, dataSize=8 +}; + +def macroop MOVAPS_P_R { + rdip t7 + stfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8 + stfp xmml, seg, riprel, disp, dataSize=8 +}; + +def macroop MOVAPS_R_R { + movfp xmml, xmml, xmmlm, dataSize=8 + movfp xmmh, xmmh, xmmhm, dataSize=8 +}; ''' |