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