summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/x86/isa')
-rw-r--r--src/arch/x86/isa/insts/simd128/floating_point/data_reordering/unpack_and_interleave.py24
-rw-r--r--src/arch/x86/isa/insts/simd128/integer/data_reordering/unpack_and_interleave.py72
-rw-r--r--src/arch/x86/isa/insts/simd64/integer/data_reordering/unpack_and_interleave.py36
-rw-r--r--src/arch/x86/isa/microops/mediaop.isa46
4 files changed, 89 insertions, 89 deletions
diff --git a/src/arch/x86/isa/insts/simd128/floating_point/data_reordering/unpack_and_interleave.py b/src/arch/x86/isa/insts/simd128/floating_point/data_reordering/unpack_and_interleave.py
index 9244f5e6d..0bf654b15 100644
--- a/src/arch/x86/isa/insts/simd128/floating_point/data_reordering/unpack_and_interleave.py
+++ b/src/arch/x86/isa/insts/simd128/floating_point/data_reordering/unpack_and_interleave.py
@@ -55,21 +55,21 @@
microcode = '''
def macroop UNPCKLPS_XMM_XMM {
- unpack xmmh, xmml, xmmlm, sel=1, size=4
- unpack xmml, xmml, xmmlm, sel=0, size=4
+ unpack xmmh, xmml, xmmlm, ext=1, size=4
+ unpack xmml, xmml, xmmlm, ext=0, size=4
};
def macroop UNPCKLPS_XMM_M {
ldfp ufp1, seg, sib, disp, dataSize=8
- unpack xmmh, xmml, ufp1, sel=1, size=4
- unpack xmml, xmml, ufp1, sel=0, size=4
+ unpack xmmh, xmml, ufp1, ext=1, size=4
+ unpack xmml, xmml, ufp1, ext=0, size=4
};
def macroop UNPCKLPS_XMM_P {
rdip t7
ldfp ufp1, seg, riprel, disp, dataSize=8
- unpack xmmh, xmml, ufp1, sel=1, size=4
- unpack xmml, xmml, ufp1, sel=0, size=4
+ unpack xmmh, xmml, ufp1, ext=1, size=4
+ unpack xmml, xmml, ufp1, ext=0, size=4
};
def macroop UNPCKLPD_XMM_XMM {
@@ -86,23 +86,23 @@ def macroop UNPCKLPD_XMM_P {
};
def macroop UNPCKHPS_XMM_XMM {
- unpack xmml, xmmh, xmmhm, sel=0, size=4
- unpack xmmh, xmmh, xmmhm, sel=1, size=4
+ unpack xmml, xmmh, xmmhm, ext=0, size=4
+ unpack xmmh, xmmh, xmmhm, ext=1, size=4
};
def macroop UNPCKHPS_XMM_M {
lea t1, seg, sib, disp, dataSize=asz
ldfp ufp1, seg, [1, t0, t1], 8, dataSize=8
- unpack xmml, xmmh, ufp1, sel=0, size=4
- unpack xmmh, xmmh, ufp1, sel=1, size=4
+ unpack xmml, xmmh, ufp1, ext=0, size=4
+ unpack xmmh, xmmh, ufp1, ext=1, size=4
};
def macroop UNPCKHPS_XMM_P {
rdip t7
lea t1, seg, riprel, disp, dataSize=asz
ldfp ufp1, seg, [1, t0, t1], 8, dataSize=8
- unpack xmml, xmmh, ufp1, sel=0, size=4
- unpack xmmh, xmmh, ufp1, sel=1, size=4
+ unpack xmml, xmmh, ufp1, ext=0, size=4
+ unpack xmmh, xmmh, ufp1, ext=1, size=4
};
def macroop UNPCKHPD_XMM_XMM {
diff --git a/src/arch/x86/isa/insts/simd128/integer/data_reordering/unpack_and_interleave.py b/src/arch/x86/isa/insts/simd128/integer/data_reordering/unpack_and_interleave.py
index be58a2551..b4dfb4607 100644
--- a/src/arch/x86/isa/insts/simd128/integer/data_reordering/unpack_and_interleave.py
+++ b/src/arch/x86/isa/insts/simd128/integer/data_reordering/unpack_and_interleave.py
@@ -55,117 +55,117 @@
microcode = '''
def macroop PUNPCKLBW_XMM_XMM {
- unpack xmmh, xmml, xmmlm, sel=1, size=1
- unpack xmml, xmml, xmmlm, sel=0, size=1
+ unpack xmmh, xmml, xmmlm, ext=1, size=1
+ unpack xmml, xmml, xmmlm, ext=0, size=1
};
def macroop PUNPCKLBW_XMM_M {
ldfp ufp1, seg, sib, disp, dataSize=8
- unpack xmmh, xmml, ufp1, sel=1, size=1
- unpack xmml, xmml, ufp1, sel=0, size=1
+ unpack xmmh, xmml, ufp1, ext=1, size=1
+ unpack xmml, xmml, ufp1, ext=0, size=1
};
def macroop PUNPCKLBW_XMM_P {
rdip t7
ldfp ufp1, seg, riprel, disp, dataSize=8
- unpack xmmh, xmml, ufp1, sel=1, size=1
- unpack xmml, xmml, ufp1, sel=0, size=1
+ unpack xmmh, xmml, ufp1, ext=1, size=1
+ unpack xmml, xmml, ufp1, ext=0, size=1
};
def macroop PUNPCKLWD_XMM_XMM {
- unpack xmmh, xmml, xmmlm, sel=1, size=2
- unpack xmml, xmml, xmmlm, sel=0, size=2
+ unpack xmmh, xmml, xmmlm, ext=1, size=2
+ unpack xmml, xmml, xmmlm, ext=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
+ unpack xmmh, xmml, ufp1, ext=1, size=2
+ unpack xmml, xmml, ufp1, ext=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
+ unpack xmmh, xmml, ufp1, ext=1, size=2
+ unpack xmml, xmml, ufp1, ext=0, size=2
};
def macroop PUNPCKLDQ_XMM_XMM {
- unpack xmmh, xmml, xmmlm, sel=1, size=4
- unpack xmml, xmml, xmmlm, sel=0, size=4
+ unpack xmmh, xmml, xmmlm, ext=1, size=4
+ unpack xmml, xmml, xmmlm, ext=0, size=4
};
def macroop PUNPCKLDQ_XMM_M {
ldfp ufp1, seg, sib, disp, dataSize=8
- unpack xmmh, xmml, ufp1, sel=1, size=4
- unpack xmml, xmml, ufp1, sel=0, size=4
+ unpack xmmh, xmml, ufp1, ext=1, size=4
+ unpack xmml, xmml, ufp1, ext=0, size=4
};
def macroop PUNPCKLDQ_XMM_P {
rdip t7
ldfp ufp1, seg, riprel, disp, dataSize=8
- unpack xmmh, xmml, ufp1, sel=1, size=4
- unpack xmml, xmml, ufp1, sel=0, size=4
+ unpack xmmh, xmml, ufp1, ext=1, size=4
+ unpack xmml, xmml, ufp1, ext=0, size=4
};
def macroop PUNPCKHBW_XMM_XMM {
- unpack xmml, xmmh, xmmhm, sel=0, size=1
- unpack xmmh, xmmh, xmmhm, sel=1, size=1
+ unpack xmml, xmmh, xmmhm, ext=0, size=1
+ unpack xmmh, xmmh, xmmhm, ext=1, size=1
};
def macroop PUNPCKHBW_XMM_M {
lea t1, seg, sib, disp, dataSize=asz
ldfp ufp1, seg, [1, t0, t1], 8, dataSize=8
- unpack xmml, xmmh, ufp1, sel=0, size=1
- unpack xmmh, xmmh, ufp1, sel=1, size=1
+ unpack xmml, xmmh, ufp1, ext=0, size=1
+ unpack xmmh, xmmh, ufp1, ext=1, size=1
};
def macroop PUNPCKHBW_XMM_P {
rdip t7
lea t1, seg, riprel, disp, dataSize=asz
ldfp ufp1, seg, [1, t0, t1], 8, dataSize=8
- unpack xmml, xmmh, ufp1, sel=0, size=1
- unpack xmmh, xmmh, ufp1, sel=1, size=1
+ unpack xmml, xmmh, ufp1, ext=0, size=1
+ unpack xmmh, xmmh, ufp1, ext=1, size=1
};
def macroop PUNPCKHWD_XMM_XMM {
- unpack xmml, xmmh, xmmhm, sel=0, size=2
- unpack xmmh, xmmh, xmmhm, sel=1, size=2
+ unpack xmml, xmmh, xmmhm, ext=0, size=2
+ unpack xmmh, xmmh, xmmhm, ext=1, size=2
};
def macroop PUNPCKHWD_XMM_M {
lea t1, seg, sib, disp, dataSize=asz
ldfp ufp1, seg, [1, t0, t1], 8, dataSize=8
- unpack xmml, xmmh, ufp1, sel=0, size=2
- unpack xmmh, xmmh, ufp1, sel=1, size=2
+ unpack xmml, xmmh, ufp1, ext=0, size=2
+ unpack xmmh, xmmh, ufp1, ext=1, size=2
};
def macroop PUNPCKHWD_XMM_P {
rdip t7
lea t1, seg, riprel, disp, dataSize=asz
ldfp ufp1, seg, [1, t0, t1], 8, dataSize=8
- unpack xmml, xmmh, ufp1, sel=0, size=2
- unpack xmmh, xmmh, ufp1, sel=1, size=2
+ unpack xmml, xmmh, ufp1, ext=0, size=2
+ unpack xmmh, xmmh, ufp1, ext=1, size=2
};
def macroop PUNPCKHDQ_XMM_XMM {
- unpack xmml, xmmh, xmmhm, sel=0, size=4
- unpack xmmh, xmmh, xmmhm, sel=1, size=4
+ unpack xmml, xmmh, xmmhm, ext=0, size=4
+ unpack xmmh, xmmh, xmmhm, ext=1, size=4
};
def macroop PUNPCKHDQ_XMM_M {
lea t1, seg, sib, disp, dataSize=asz
ldfp ufp1, seg, [1, t0, t1], 8, dataSize=8
- unpack xmml, xmmh, ufp1, sel=0, size=4
- unpack xmmh, xmmh, ufp1, sel=1, size=4
+ unpack xmml, xmmh, ufp1, ext=0, size=4
+ unpack xmmh, xmmh, ufp1, ext=1, size=4
};
def macroop PUNPCKHDQ_XMM_P {
rdip t7
lea t1, seg, riprel, disp, dataSize=asz
ldfp ufp1, seg, [1, t0, t1], 8, dataSize=8
- unpack xmml, xmmh, ufp1, sel=0, size=4
- unpack xmmh, xmmh, ufp1, sel=1, size=4
+ unpack xmml, xmmh, ufp1, ext=0, size=4
+ unpack xmmh, xmmh, ufp1, ext=1, size=4
};
def macroop PUNPCKHQDQ_XMM_XMM {
diff --git a/src/arch/x86/isa/insts/simd64/integer/data_reordering/unpack_and_interleave.py b/src/arch/x86/isa/insts/simd64/integer/data_reordering/unpack_and_interleave.py
index 0743b43c5..5a58beca3 100644
--- a/src/arch/x86/isa/insts/simd64/integer/data_reordering/unpack_and_interleave.py
+++ b/src/arch/x86/isa/insts/simd64/integer/data_reordering/unpack_and_interleave.py
@@ -55,92 +55,92 @@
microcode = '''
def macroop PUNPCKLBW_MMX_MMX {
- unpack mmx, mmx, mmxm, sel=0, size=1
+ unpack mmx, mmx, mmxm, ext=0, size=1
};
def macroop PUNPCKLBW_MMX_M {
ldfp ufp1, seg, sib, disp, dataSize=8
- unpack mmx, mmx, ufp1, sel=0, size=1
+ unpack mmx, mmx, ufp1, ext=0, size=1
};
def macroop PUNPCKLBW_MMX_P {
rdip t7
ldfp ufp1, seg, riprel, disp, dataSize=8
- unpack mmx, mmx, ufp1, sel=0, size=1
+ unpack mmx, mmx, ufp1, ext=0, size=1
};
def macroop PUNPCKLWD_MMX_MMX {
- unpack mmx, mmx, mmxm, sel=0, size=2
+ unpack mmx, mmx, mmxm, ext=0, size=2
};
def macroop PUNPCKLWD_MMX_M {
ldfp ufp1, seg, sib, disp, dataSize=8
- unpack mmx, mmx, ufp1, sel=0, size=2
+ unpack mmx, mmx, ufp1, ext=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
+ unpack mmx, mmx, ufp1, ext=0, size=2
};
def macroop PUNPCKLDQ_MMX_MMX {
- unpack mmx, mmx, mmxm, sel=0, size=4
+ unpack mmx, mmx, mmxm, ext=0, size=4
};
def macroop PUNPCKLDQ_MMX_M {
ldfp ufp1, seg, sib, disp, dataSize=8
- unpack mmx, mmx, ufp1, sel=0, size=4
+ unpack mmx, mmx, ufp1, ext=0, size=4
};
def macroop PUNPCKLDQ_MMX_P {
rdip t7
ldfp ufp1, seg, riprel, disp, dataSize=8
- unpack mmx, mmx, ufp1, sel=0, size=4
+ unpack mmx, mmx, ufp1, ext=0, size=4
};
def macroop PUNPCKHBW_MMX_MMX {
- unpack mmx, mmx, mmxm, sel=1, size=1
+ unpack mmx, mmx, mmxm, ext=1, size=1
};
def macroop PUNPCKHBW_MMX_M {
ldfp ufp1, seg, sib, disp, dataSize=8
- unpack mmx, mmx, ufp1, sel=1, size=1
+ unpack mmx, mmx, ufp1, ext=1, size=1
};
def macroop PUNPCKHBW_MMX_P {
rdip t7
ldfp ufp1, seg, riprel, disp, dataSize=8
- unpack mmx, mmx, ufp1, sel=1, size=1
+ unpack mmx, mmx, ufp1, ext=1, size=1
};
def macroop PUNPCKHWD_MMX_MMX {
- unpack mmx, mmx, mmxm, sel=1, size=2
+ unpack mmx, mmx, mmxm, ext=1, size=2
};
def macroop PUNPCKHWD_MMX_M {
ldfp ufp1, seg, sib, disp, dataSize=8
- unpack mmx, mmx, ufp1, sel=1, size=2
+ unpack mmx, mmx, ufp1, ext=1, size=2
};
def macroop PUNPCKHWD_MMX_P {
rdip t7
ldfp ufp1, seg, riprel, disp, dataSize=8
- unpack mmx, mmx, ufp1, sel=1, size=2
+ unpack mmx, mmx, ufp1, ext=1, size=2
};
def macroop PUNPCKHDQ_MMX_MMX {
- unpack mmx, mmx, mmxm, sel=1, size=4
+ unpack mmx, mmx, mmxm, ext=1, size=4
};
def macroop PUNPCKHDQ_MMX_M {
ldfp ufp1, seg, sib, disp, dataSize=8
- unpack mmx, mmx, ufp1, sel=1, size=4
+ unpack mmx, mmx, ufp1, ext=1, size=4
};
def macroop PUNPCKHDQ_MMX_P {
rdip t7
ldfp ufp1, seg, riprel, disp, dataSize=8
- unpack mmx, mmx, ufp1, sel=1, size=4
+ unpack mmx, mmx, ufp1, ext=1, size=4
};
'''
diff --git a/src/arch/x86/isa/microops/mediaop.isa b/src/arch/x86/isa/microops/mediaop.isa
index 35e0f8f35..048a856f9 100644
--- a/src/arch/x86/isa/microops/mediaop.isa
+++ b/src/arch/x86/isa/microops/mediaop.isa
@@ -57,12 +57,12 @@ def template MediaOpRegDeclare {{
const char * instMnem,
bool isMicro, bool isDelayed, bool isFirst, bool isLast,
InstRegIndex _src1, InstRegIndex _src2, InstRegIndex _dest,
- uint8_t _srcSize, uint8_t _destSize, uint16_t _sel);
+ uint8_t _srcSize, uint8_t _destSize, uint16_t _ext);
%(class_name)s(ExtMachInst _machInst,
const char * instMnem,
InstRegIndex _src1, InstRegIndex _src2, InstRegIndex _dest,
- uint8_t _srcSize, uint8_t _destSize, uint16_t _sel);
+ uint8_t _srcSize, uint8_t _destSize, uint16_t _ext);
%(BasicExecDeclare)s
};
@@ -80,12 +80,12 @@ def template MediaOpImmDeclare {{
const char * instMnem,
bool isMicro, bool isDelayed, bool isFirst, bool isLast,
InstRegIndex _src1, uint16_t _imm8, InstRegIndex _dest,
- uint8_t _srcSize, uint8_t _destSize, uint16_t _sel);
+ uint8_t _srcSize, uint8_t _destSize, uint16_t _ext);
%(class_name)s(ExtMachInst _machInst,
const char * instMnem,
InstRegIndex _src1, uint16_t _imm8, InstRegIndex _dest,
- uint8_t _srcSize, uint8_t _destSize, uint16_t _sel);
+ uint8_t _srcSize, uint8_t _destSize, uint16_t _ext);
%(BasicExecDeclare)s
};
@@ -101,10 +101,10 @@ def template MediaOpRegConstructor {{
inline %(class_name)s::%(class_name)s(
ExtMachInst machInst, const char * instMnem,
InstRegIndex _src1, InstRegIndex _src2, InstRegIndex _dest,
- uint8_t _srcSize, uint8_t _destSize, uint16_t _sel) :
+ uint8_t _srcSize, uint8_t _destSize, uint16_t _ext) :
%(base_class)s(machInst, "%(mnemonic)s", instMnem,
false, false, false, false,
- _src1, _src2, _dest, _srcSize, _destSize, _sel,
+ _src1, _src2, _dest, _srcSize, _destSize, _ext,
%(op_class)s)
{
buildMe();
@@ -114,10 +114,10 @@ def template MediaOpRegConstructor {{
ExtMachInst machInst, const char * instMnem,
bool isMicro, bool isDelayed, bool isFirst, bool isLast,
InstRegIndex _src1, InstRegIndex _src2, InstRegIndex _dest,
- uint8_t _srcSize, uint8_t _destSize, uint16_t _sel) :
+ uint8_t _srcSize, uint8_t _destSize, uint16_t _ext) :
%(base_class)s(machInst, "%(mnemonic)s", instMnem,
isMicro, isDelayed, isFirst, isLast,
- _src1, _src2, _dest, _srcSize, _destSize, _sel,
+ _src1, _src2, _dest, _srcSize, _destSize, _ext,
%(op_class)s)
{
buildMe();
@@ -134,10 +134,10 @@ def template MediaOpImmConstructor {{
inline %(class_name)s::%(class_name)s(
ExtMachInst machInst, const char * instMnem,
InstRegIndex _src1, uint16_t _imm8, InstRegIndex _dest,
- uint8_t _srcSize, uint8_t _destSize, uint16_t _sel) :
+ uint8_t _srcSize, uint8_t _destSize, uint16_t _ext) :
%(base_class)s(machInst, "%(mnemonic)s", instMnem,
false, false, false, false,
- _src1, _imm8, _dest, _srcSize, _destSize, _sel,
+ _src1, _imm8, _dest, _srcSize, _destSize, _ext,
%(op_class)s)
{
buildMe();
@@ -147,10 +147,10 @@ def template MediaOpImmConstructor {{
ExtMachInst machInst, const char * instMnem,
bool isMicro, bool isDelayed, bool isFirst, bool isLast,
InstRegIndex _src1, uint16_t _imm8, InstRegIndex _dest,
- uint8_t _srcSize, uint8_t _destSize, uint16_t _sel) :
+ uint8_t _srcSize, uint8_t _destSize, uint16_t _ext) :
%(base_class)s(machInst, "%(mnemonic)s", instMnem,
isMicro, isDelayed, isFirst, isLast,
- _src1, _imm8, _dest, _srcSize, _destSize, _sel,
+ _src1, _imm8, _dest, _srcSize, _destSize, _ext,
%(op_class)s)
{
buildMe();
@@ -252,7 +252,7 @@ let {{
abstract = True
def __init__(self, dest, src1, op2,
- size = None, destSize = None, srcSize = None, sel = None):
+ size = None, destSize = None, srcSize = None, ext = None):
self.dest = dest
self.src1 = src1
self.op2 = op2
@@ -267,10 +267,10 @@ let {{
raise Exception, "Source size not set."
if self.destSize is None:
raise Exception, "Dest size not set."
- if sel is None:
- self.sel = 0
+ if ext is None:
+ self.ext = 0
else:
- self.sel = sel
+ self.ext = ext
def getAllocator(self, *microFlags):
className = self.className
@@ -278,21 +278,21 @@ let {{
className += "Imm"
allocator = '''new %(class_name)s(machInst, macrocodeBlock
%(flags)s, %(src1)s, %(op2)s, %(dest)s,
- %(srcSize)s, %(destSize)s, %(sel)s)''' % {
+ %(srcSize)s, %(destSize)s, %(ext)s)''' % {
"class_name" : className,
"flags" : self.microFlagsText(microFlags),
"src1" : self.src1, "op2" : self.op2,
"dest" : self.dest,
"srcSize" : self.srcSize,
"destSize" : self.destSize,
- "sel" : self.sel}
+ "ext" : self.ext}
return allocator
class Mov2int(MediaOp):
def __init__(self, dest, src, \
- size = None, destSize = None, srcSize = None, sel = None):
+ size = None, destSize = None, srcSize = None, ext = None):
super(Mov2int, self).__init__(dest, src,\
- "InstRegIndex(0)", size, destSize, srcSize, sel)
+ "InstRegIndex(0)", size, destSize, srcSize, ext)
code = '''
uint64_t fpSrcReg1 = bits(FpSrcReg1.uqw, srcSize * 8 - 1, 0);
DestReg = merge(DestReg, fpSrcReg1, destSize);
@@ -300,9 +300,9 @@ let {{
class Mov2fp(MediaOp):
def __init__(self, dest, src, \
- size = None, destSize = None, srcSize = None, sel = None):
+ size = None, destSize = None, srcSize = None, ext = None):
super(Mov2fp, self).__init__(dest, src,\
- "InstRegIndex(0)", size, destSize, srcSize, sel)
+ "InstRegIndex(0)", size, destSize, srcSize, ext)
code = '''
uint64_t srcReg1 = pick(SrcReg1, 0, srcSize);
FpDestReg.uqw =
@@ -314,7 +314,7 @@ let {{
assert(srcSize == destSize);
int size = destSize;
int items = (sizeof(FloatRegBits) / size) / 2;
- int offset = sel ? items : 0;
+ int offset = ext ? items : 0;
uint64_t result = 0;
for (int i = 0; i < items; i++) {
uint64_t pickedLow =