X86: (Re)implement XORPS and XORPD.
authorGabe Black <gblack@eecs.umich.edu>
Tue, 18 Aug 2009 01:22:37 +0000 (18:22 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Tue, 18 Aug 2009 01:22:37 +0000 (18:22 -0700)
src/arch/x86/isa/decoder/two_byte_opcodes.isa
src/arch/x86/isa/insts/simd128/floating_point/logical/exclusive_or.py

index 3e1bc5cfb14e4d98d28e8b433432da61540420f0..5bfe69dc5c1770b105959d1b3425fe390f96b30a 100644 (file)
                     0x4: andps_Vo_Wo();
                     0x5: andnps_Vo_Wo();
                     0x6: orps_Vo_Wo();
-                    0x7: xorps_Vo_Wo();
+                    0x7: Inst::XORPS(Vo,Wo);
                 }
                 // repe (0xF3)
                 0x4: decode OPCODE_OP_BOTTOM3 {
index 40477a8f2896d606759b18a373ba4e70a448e8f3..5c20db204c70571e4b1ef124b8146d5826f8bb66 100644 (file)
 # Authors: Gabe Black
 
 microcode = '''
-# XORPS
-
 def macroop XORPD_XMM_XMM {
-    xorfp xmml, xmml, xmmlm
-    xorfp xmmh, xmmh, xmmhm
+    mxor xmml, xmml, xmmlm
+    mxor xmmh, xmmh, xmmhm
 };
 
 def macroop XORPD_XMM_M {
     ldfp ufp1, seg, sib, disp, dataSize=8
     ldfp ufp2, seg, sib, "DISPLACEMENT + 8", dataSize=8
-    xorfp xmml, xmml, ufp1
-    xorfp xmmh, xmmh, ufp2
+    mxor xmml, xmml, ufp1
+    mxor xmmh, xmmh, ufp2
 };
 
 def macroop XORPD_XMM_P {
     rdip t7
     ldfp ufp1, seg, riprel, disp, dataSize=8
     ldfp ufp2, seg, riprel, "DISPLACEMENT + 8", dataSize=8
-    xorfp xmml, xmml, ufp1
-    xorfp xmmh, xmmh, ufp2
+    mxor xmml, xmml, ufp1
+    mxor xmmh, xmmh, ufp2
+};
+
+def macroop XORPS_XMM_XMM {
+    mxor xmml, xmml, xmmlm
+    mxor xmmh, xmmh, xmmhm
+};
+
+def macroop XORPS_XMM_M {
+    ldfp ufp1, seg, sib, disp, dataSize=8
+    ldfp ufp2, seg, sib, "DISPLACEMENT + 8", dataSize=8
+    mxor xmml, xmml, ufp1
+    mxor xmmh, xmmh, ufp2
+};
+
+def macroop XORPS_XMM_P {
+    rdip t7
+    ldfp ufp1, seg, riprel, disp, dataSize=8
+    ldfp ufp2, seg, riprel, "DISPLACEMENT + 8", dataSize=8
+    mxor xmml, xmml, ufp1
+    mxor xmmh, xmmh, ufp2
 };
 '''