changeset 36131e4dfb6e in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=36131e4dfb6e
description:
        X86: Create a common flag with a name to indicate scalar media 
instructions.

diffstat:

16 files changed, 134 insertions(+), 115 deletions(-)
src/arch/x86/insts/micromediaop.hh                                              
                          |   16 ++
src/arch/x86/isa/insts/simd128/floating_point/arithmetic/addition.py            
                          |   12 +-
src/arch/x86/isa/insts/simd128/floating_point/arithmetic/division.py            
                          |   12 +-
src/arch/x86/isa/insts/simd128/floating_point/arithmetic/horizontal_addition.py 
                          |   12 +-
src/arch/x86/isa/insts/simd128/floating_point/arithmetic/multiplication.py      
                          |   12 +-
src/arch/x86/isa/insts/simd128/floating_point/arithmetic/square_root.py         
                          |   12 +-
src/arch/x86/isa/insts/simd128/floating_point/arithmetic/subtraction.py         
                          |   12 +-
src/arch/x86/isa/insts/simd128/floating_point/compare/compare_and_write_mask.py 
                          |   12 +-
src/arch/x86/isa/insts/simd128/floating_point/compare/compare_and_write_minimum_or_maximum.py
             |   24 ++--
src/arch/x86/isa/insts/simd128/floating_point/data_conversion/convert_floating_point_to_floating_point.py
 |   12 +-
src/arch/x86/isa/insts/simd128/floating_point/data_conversion/convert_floating_point_to_gpr_integer.py
    |   24 ++--
src/arch/x86/isa/insts/simd128/integer/arithmetic/multiplication.py             
                          |   12 +-
src/arch/x86/isa/insts/simd128/integer/data_conversion/convert_gpr_integer_to_floating_point.py
           |   12 +-
src/arch/x86/isa/insts/simd64/integer/arithmetic/multiplication.py              
                          |    6 -
src/arch/x86/isa/microasm.isa                                                   
                          |    3 
src/arch/x86/isa/microops/mediaop.isa                                           
                          |   56 +++++-----

diffs (truncated from 885 to 300 lines):

diff -r 289ac904233d -r 36131e4dfb6e src/arch/x86/insts/micromediaop.hh
--- a/src/arch/x86/insts/micromediaop.hh        Wed Nov 18 18:00:41 2009 -0800
+++ b/src/arch/x86/insts/micromediaop.hh        Sat Dec 19 01:47:30 2009 -0800
@@ -35,6 +35,10 @@
 
 namespace X86ISA
 {
+    enum MediaFlag {
+        MediaScalarOp = 128
+    };
+
     class MediaOpBase : public X86MicroopBase
     {
       protected:
@@ -59,6 +63,18 @@
             src1(_src1.idx), dest(_dest.idx),
             srcSize(_srcSize), destSize(_destSize), ext(_ext)
         {}
+
+        bool
+        scalarOp() const
+        {
+            return ext & MediaScalarOp;
+        }
+        
+        int
+        numItems(int size) const
+        {
+            return scalarOp() ? 1 : (sizeof(FloatRegBits) / size);
+        }
     };
 
     class MediaOpReg : public MediaOpBase
diff -r 289ac904233d -r 36131e4dfb6e 
src/arch/x86/isa/insts/simd128/floating_point/arithmetic/addition.py
--- a/src/arch/x86/isa/insts/simd128/floating_point/arithmetic/addition.py      
Wed Nov 18 18:00:41 2009 -0800
+++ b/src/arch/x86/isa/insts/simd128/floating_point/arithmetic/addition.py      
Sat Dec 19 01:47:30 2009 -0800
@@ -55,33 +55,33 @@
 
 microcode = '''
 def macroop ADDSS_XMM_XMM {
-    maddf xmml, xmml, xmmlm, size=4, ext=1
+    maddf xmml, xmml, xmmlm, size=4, ext=Scalar
 };
 
 def macroop ADDSS_XMM_M {
     ldfp ufp1, seg, sib, disp, dataSize=8
-    maddf xmml, xmml, ufp1, size=4, ext=1
+    maddf xmml, xmml, ufp1, size=4, ext=Scalar
 };
 
 def macroop ADDSS_XMM_P {
     rdip t7
     ldfp ufp1, seg, riprel, disp, dataSize=8
-    maddf xmml, xmml, ufp1, size=4, ext=1
+    maddf xmml, xmml, ufp1, size=4, ext=Scalar
 };
 
 def macroop ADDSD_XMM_XMM {
-    maddf xmml, xmml, xmmlm, size=8, ext=1
+    maddf xmml, xmml, xmmlm, size=8, ext=Scalar
 };
 
 def macroop ADDSD_XMM_M {
     ldfp ufp1, seg, sib, disp, dataSize=8
-    maddf xmml, xmml, ufp1, size=8, ext=1
+    maddf xmml, xmml, ufp1, size=8, ext=Scalar
 };
 
 def macroop ADDSD_XMM_P {
     rdip t7
     ldfp ufp1, seg, riprel, disp, dataSize=8
-    maddf xmml, xmml, ufp1, size=8, ext=1
+    maddf xmml, xmml, ufp1, size=8, ext=Scalar
 };
 
 def macroop ADDPS_XMM_XMM {
diff -r 289ac904233d -r 36131e4dfb6e 
src/arch/x86/isa/insts/simd128/floating_point/arithmetic/division.py
--- a/src/arch/x86/isa/insts/simd128/floating_point/arithmetic/division.py      
Wed Nov 18 18:00:41 2009 -0800
+++ b/src/arch/x86/isa/insts/simd128/floating_point/arithmetic/division.py      
Sat Dec 19 01:47:30 2009 -0800
@@ -55,33 +55,33 @@
 
 microcode = '''
 def macroop DIVSS_XMM_XMM {
-    mdivf xmml, xmml, xmmlm, size=4, ext=1
+    mdivf xmml, xmml, xmmlm, size=4, ext=Scalar
 };
 
 def macroop DIVSS_XMM_M {
     ldfp ufp1, seg, sib, disp, dataSize=8
-    mdivf xmml, xmml, ufp1, size=4, ext=1
+    mdivf xmml, xmml, ufp1, size=4, ext=Scalar
 };
 
 def macroop DIVSS_XMM_P {
     rdip t7
     ldfp ufp1, seg, riprel, disp, dataSize=8
-    mdivf xmml, xmml, ufp1, size=4, ext=1
+    mdivf xmml, xmml, ufp1, size=4, ext=Scalar
 };
 
 def macroop DIVSD_XMM_XMM {
-    mdivf xmml, xmml, xmmlm, size=8, ext=1
+    mdivf xmml, xmml, xmmlm, size=8, ext=Scalar
 };
 
 def macroop DIVSD_XMM_M {
     ldfp ufp1, seg, sib, disp, dataSize=8
-    mdivf xmml, xmml, ufp1, size=8, ext=1
+    mdivf xmml, xmml, ufp1, size=8, ext=Scalar
 };
 
 def macroop DIVSD_XMM_P {
     rdip t7
     ldfp ufp1, seg, riprel, disp, dataSize=8
-    mdivf xmml, xmml, ufp1, size=8, ext=1
+    mdivf xmml, xmml, ufp1, size=8, ext=Scalar
 };
 
 def macroop DIVPS_XMM_XMM {
diff -r 289ac904233d -r 36131e4dfb6e 
src/arch/x86/isa/insts/simd128/floating_point/arithmetic/horizontal_addition.py
--- 
a/src/arch/x86/isa/insts/simd128/floating_point/arithmetic/horizontal_addition.py
   Wed Nov 18 18:00:41 2009 -0800
+++ 
b/src/arch/x86/isa/insts/simd128/floating_point/arithmetic/horizontal_addition.py
   Sat Dec 19 01:47:30 2009 -0800
@@ -57,23 +57,23 @@
 # HADDPS
 
 def macroop HADDPD_XMM_XMM {
-    maddf ufp1, xmmh , xmml, size=8, ext=1
-    maddf xmmh, xmmlm, xmmhm, size=8, ext=1
+    maddf ufp1, xmmh , xmml, size=8, ext=Scalar
+    maddf xmmh, xmmlm, xmmhm, size=8, ext=Scalar
     movfp xmml, ufp1
 };
 
 def macroop HADDPD_XMM_M {
     ldfp ufp1, seg, sib, disp, dataSize=8
     ldfp ufp2, seg, sib, "DISPLACEMENT+8", dataSize=8
-    maddf xmml, xmmh, xmml, size=8, ext=1
-    maddf xmmh, ufp1, ufp2, size=8, ext=1
+    maddf xmml, xmmh, xmml, size=8, ext=Scalar
+    maddf xmmh, ufp1, ufp2, size=8, ext=Scalar
 };
 
 def macroop HADDPD_XMM_P {
     rdip t7
     ldfp ufp1, seg, riprel, disp, dataSize=8
     ldfp ufp2, seg, riprel, "DISPLACEMENT+8", dataSize=8
-    maddf xmml, xmmh, xmml, size=8, ext=1
-    maddf xmmh, ufp1, ufp2, size=8, ext=1
+    maddf xmml, xmmh, xmml, size=8, ext=Scalar
+    maddf xmmh, ufp1, ufp2, size=8, ext=Scalar
 };
 '''
diff -r 289ac904233d -r 36131e4dfb6e 
src/arch/x86/isa/insts/simd128/floating_point/arithmetic/multiplication.py
--- 
a/src/arch/x86/isa/insts/simd128/floating_point/arithmetic/multiplication.py    
    Wed Nov 18 18:00:41 2009 -0800
+++ 
b/src/arch/x86/isa/insts/simd128/floating_point/arithmetic/multiplication.py    
    Sat Dec 19 01:47:30 2009 -0800
@@ -55,33 +55,33 @@
 
 microcode = '''
 def macroop MULSS_XMM_XMM {
-    mmulf xmml, xmml, xmmlm, size=4, ext=1
+    mmulf xmml, xmml, xmmlm, size=4, ext=Scalar
 };
 
 def macroop MULSS_XMM_M {
     ldfp ufp1, seg, sib, disp, dataSize=8
-    mmulf xmml, xmml, ufp1, size=4, ext=1
+    mmulf xmml, xmml, ufp1, size=4, ext=Scalar
 };
 
 def macroop MULSS_XMM_P {
     rdip t7
     ldfp ufp1, seg, riprel, disp, dataSize=8
-    mmulf xmml, xmml, ufp1, size=4, ext=1
+    mmulf xmml, xmml, ufp1, size=4, ext=Scalar
 };
 
 def macroop MULSD_XMM_XMM {
-    mmulf xmml, xmml, xmmlm, size=8, ext=1
+    mmulf xmml, xmml, xmmlm, size=8, ext=Scalar
 };
 
 def macroop MULSD_XMM_M {
     ldfp ufp1, seg, sib, disp, dataSize=8
-    mmulf xmml, xmml, ufp1, size=8, ext=1
+    mmulf xmml, xmml, ufp1, size=8, ext=Scalar
 };
 
 def macroop MULSD_XMM_P {
     rdip t7
     ldfp ufp1, seg, riprel, disp, dataSize=8
-    mmulf xmml, xmml, ufp1, size=8, ext=1
+    mmulf xmml, xmml, ufp1, size=8, ext=Scalar
 };
 
 def macroop MULPS_XMM_XMM {
diff -r 289ac904233d -r 36131e4dfb6e 
src/arch/x86/isa/insts/simd128/floating_point/arithmetic/square_root.py
--- a/src/arch/x86/isa/insts/simd128/floating_point/arithmetic/square_root.py   
Wed Nov 18 18:00:41 2009 -0800
+++ b/src/arch/x86/isa/insts/simd128/floating_point/arithmetic/square_root.py   
Sat Dec 19 01:47:30 2009 -0800
@@ -55,18 +55,18 @@
 
 microcode = '''
 def macroop SQRTSS_XMM_XMM {
-    msqrt xmml, xmmlm, size=4, ext=1
+    msqrt xmml, xmmlm, size=4, ext=Scalar
 };
 
 def macroop SQRTSS_XMM_M {
     ldfp ufp1, seg, sib, disp, dataSize=8
-    msqrt xmml, ufp1, size=4, ext=1
+    msqrt xmml, ufp1, size=4, ext=Scalar
 };
 
 def macroop SQRTSS_XMM_P {
     rdip t7
     ldfp ufp1, seg, riprel, disp, dataSize=8
-    msqrt xmml, ufp1, size=4, ext=1
+    msqrt xmml, ufp1, size=4, ext=Scalar
 };
 
 def macroop SQRTPS_XMM_XMM {
@@ -90,18 +90,18 @@
 };
 
 def macroop SQRTSD_XMM_XMM {
-    msqrt xmml, xmmlm, size=8, ext=1
+    msqrt xmml, xmmlm, size=8, ext=Scalar
 };
 
 def macroop SQRTSD_XMM_M {
     ldfp ufp1, seg, sib, disp, dataSize=8
-    msqrt xmml, ufp1, size=8, ext=1
+    msqrt xmml, ufp1, size=8, ext=Scalar
 };
 
 def macroop SQRTSD_XMM_P {
     rdip t7
     ldfp ufp1, seg, riprel, disp, dataSize=8
-    msqrt xmml, ufp1, size=8, ext=1
+    msqrt xmml, ufp1, size=8, ext=Scalar
 };
 
 def macroop SQRTPD_XMM_XMM {
diff -r 289ac904233d -r 36131e4dfb6e 
src/arch/x86/isa/insts/simd128/floating_point/arithmetic/subtraction.py
--- a/src/arch/x86/isa/insts/simd128/floating_point/arithmetic/subtraction.py   
Wed Nov 18 18:00:41 2009 -0800
+++ b/src/arch/x86/isa/insts/simd128/floating_point/arithmetic/subtraction.py   
Sat Dec 19 01:47:30 2009 -0800
@@ -55,33 +55,33 @@
 
 microcode = '''
 def macroop SUBSS_XMM_XMM {
-    msubf xmml, xmml, xmmlm, size=4, ext=1
+    msubf xmml, xmml, xmmlm, size=4, ext=Scalar
 };
 
 def macroop SUBSS_XMM_M {
     ldfp ufp1, seg, sib, disp, dataSize=8
-    msubf xmml, xmml, ufp1, size=4, ext=1
+    msubf xmml, xmml, ufp1, size=4, ext=Scalar
 };
 
 def macroop SUBSS_XMM_P {
     rdip t7
     ldfp ufp1, seg, riprel, disp, dataSize=8
-    msubf xmml, xmml, ufp1, size=4, ext=1
+    msubf xmml, xmml, ufp1, size=4, ext=Scalar
 };
 
 def macroop SUBSD_XMM_XMM {
-    msubf xmml, xmml, xmmlm, size=8, ext=1
+    msubf xmml, xmml, xmmlm, size=8, ext=Scalar
 };
 
 def macroop SUBSD_XMM_M {
     ldfp ufp1, seg, sib, disp, dataSize=8
-    msubf xmml, xmml, ufp1, size=8, ext=1
+    msubf xmml, xmml, ufp1, size=8, ext=Scalar
 };
 
 def macroop SUBSD_XMM_P {
     rdip t7
     ldfp ufp1, seg, riprel, disp, dataSize=8
-    msubf xmml, xmml, ufp1, size=8, ext=1
+    msubf xmml, xmml, ufp1, size=8, ext=Scalar
 };
 
 def macroop SUBPS_XMM_XMM {
diff -r 289ac904233d -r 36131e4dfb6e 
src/arch/x86/isa/insts/simd128/floating_point/compare/compare_and_write_mask.py
--- 
a/src/arch/x86/isa/insts/simd128/floating_point/compare/compare_and_write_mask.py
   Wed Nov 18 18:00:41 2009 -0800
+++ 
b/src/arch/x86/isa/insts/simd128/floating_point/compare/compare_and_write_mask.py
   Sat Dec 19 01:47:30 2009 -0800
@@ -95,32 +95,32 @@
 };
 
 def macroop CMPSS_XMM_XMM_I {
-    mcmpf2r xmml, xmml, xmmlm, size=4, ext="IMMEDIATE | 0x8"
+    mcmpf2r xmml, xmml, xmmlm, size=4, ext="IMMEDIATE |" + Scalar
 };
 
 def macroop CMPSS_XMM_M_I {
     ldfp ufp1, seg, sib, "DISPLACEMENT", dataSize=8
-    mcmpf2r xmml, xmml, ufp1, size=4, ext="IMMEDIATE | 0x8"
+    mcmpf2r xmml, xmml, ufp1, size=4, ext="IMMEDIATE |" + Scalar
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to