X86: Implement PUNPCKLWD.
authorGabe Black <gblack@eecs.umich.edu>
Tue, 18 Aug 2009 01:18:40 +0000 (18:18 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Tue, 18 Aug 2009 01:18:40 +0000 (18:18 -0700)
src/arch/x86/isa/decoder/two_byte_opcodes.isa
src/arch/x86/isa/insts/simd128/integer/data_reordering/unpack_and_interleave.py
src/arch/x86/isa/insts/simd64/integer/data_reordering/unpack_and_interleave.py

index 6b24b38262ccad32452c8f35e2a95836ac4872f7..763b661ca683b5090a3445b70f2a8f74ed394e63 100644 (file)
                 // no prefix
                 0x0: decode OPCODE_OP_BOTTOM3 {
                     0x0: Inst::PUNPCKLBW(Pq,Qd);
-                    0x1: punpcklwd_Pq_Qd();
+                    0x1: Inst::PUNPCKLWD(Pq,Qd);
                     0x2: punpckldq_Pq_Qd();
                     0x3: packsswb_Pq_Qq();
                     0x4: pcmpgtb_Pq_Qq();
                 // operand size (0x66)
                 0x1: decode OPCODE_OP_BOTTOM3 {
                     0x0: Inst::PUNPCKLBW(Vo,Wq);
-                    0x1: punpcklwd_Vo_Wq();
+                    0x1: Inst::PUNPCKLWD(Vo,Wq);
                     0x2: punpckldq_Vo_Wq();
                     0x3: packsswb_Vo_Wo();
                     0x4: pcmpgtb_Vo_Wo();
index 96419b1ad7d044d8d61135102e6c332016756275..0bf063eded8c4393bc331d71b729de8a46fb24b8 100644 (file)
@@ -71,11 +71,28 @@ def macroop PUNPCKLBW_XMM_P {
     unpack xmmh, xmml, ufp1, sel=1, size=1
     unpack xmml, xmml, ufp1, sel=0, size=1
 };
+
+def macroop PUNPCKLWD_XMM_XMM {
+    unpack xmmh, xmml, xmmlm, sel=1, size=2
+    unpack xmml, xmml, xmmlm, sel=0, size=2
+};
+
+def macroop PUNPCKLWD_XMM_M {
+    ldfp ufp1, seg, sib, disp, dataSize=8
+    unpack xmmh, xmml, ufp1, sel=1, size=2
+    unpack xmml, xmml, ufp1, sel=0, size=2
+};
+
+def macroop PUNPCKLWD_XMM_P {
+    rdip t7
+    ldfp ufp1, seg, riprel, disp, dataSize=8
+    unpack xmmh, xmml, ufp1, sel=1, size=2
+    unpack xmml, xmml, ufp1, sel=0, size=2
+};
 '''
 # PUNPCKHBW
 # PUNPCKHWD
 # PUNPCKHDQ
 # PUNPCKHQDQ
-# PUNPCKLWD
 # PUNPCKLDQ
 # PUNPCKLQDQ
index 8f3c35749b3f819caa9f5cae9c1aba5540d61a21..196706c9b623d508b63f4eff708c335862e5a135 100644 (file)
@@ -68,9 +68,23 @@ def macroop PUNPCKLBW_MMX_P {
     ldfp ufp1, seg, riprel, disp, dataSize=8
     unpack mmx, mmx, ufp1, sel=0, size=1
 };
+
+def macroop PUNPCKLWD_MMX_MMX {
+    unpack mmx, mmx, mmxm, sel=0, size=2
+};
+
+def macroop PUNPCKLWD_MMX_M {
+    ldfp ufp1, seg, sib, disp, dataSize=8
+    unpack mmx, mmx, ufp1, sel=0, size=2
+};
+
+def macroop PUNPCKLWD_MMX_P {
+    rdip t7
+    ldfp ufp1, seg, riprel, disp, dataSize=8
+    unpack mmx, mmx, ufp1, sel=0, size=2
+};
 '''
 # PUNPCKHBW
 # PUNPCKHWD
 # PUNPCKHDQ
-# PUNPCKLWD
 # PUNPCKLDQ