changeset a60405212dea in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=a60405212dea
description:
        arm: add preliminary ISA splits for ARM arch

diffstat:

 src/arch/arm/isa/insts/insts.isa  |  10 +++++++++-
 src/arch/arm/isa/insts/neon.isa   |  22 ++++++++++++++--------
 src/arch/arm/isa/insts/neon64.isa |   3 +++
 3 files changed, 26 insertions(+), 9 deletions(-)

diffs (113 lines):

diff -r be0e1724eb39 -r a60405212dea src/arch/arm/isa/insts/insts.isa
--- a/src/arch/arm/isa/insts/insts.isa  Fri May 09 18:58:47 2014 -0400
+++ b/src/arch/arm/isa/insts/insts.isa  Fri May 09 18:58:47 2014 -0400
@@ -53,6 +53,9 @@
 ##include "misc.isa"
 ##include "misc64.isa"
 
+split exec;
+split decoder;
+
 //Stores of a single item, AArch64
 ##include "str64.isa"
 
@@ -65,6 +68,8 @@
 //Load/store multiple
 ##include "macromem.isa"
 
+split exec;
+
 //Data processing instructions
 ##include "data.isa"
 
@@ -85,12 +90,15 @@
 ##include "fp.isa"
 ##include "fp64.isa"
 
+split exec;
+
 //Neon
 ##include "neon.isa"
 
 //AArch64 Neon
 ##include "neon64.isa"
+split decoder;
 ##include "neon64_mem.isa"
 
-//m5 Psuedo-ops
+//m5 Pseudo-ops
 ##include "m5ops.isa"
diff -r be0e1724eb39 -r a60405212dea src/arch/arm/isa/insts/neon.isa
--- a/src/arch/arm/isa/insts/neon.isa   Fri May 09 18:58:47 2014 -0400
+++ b/src/arch/arm/isa/insts/neon.isa   Fri May 09 18:58:47 2014 -0400
@@ -1058,7 +1058,11 @@
     }
 }};
 
-output exec {{
+let {{
+    header_output = ""
+    exec_output = ""
+
+    vcompares = '''
     static float
     vcgtFunc(float op1, float op2)
     {
@@ -1082,7 +1086,8 @@
             return 2.0;
         return (op1 == op2) ? 0.0 : 1.0;
     }
-
+'''
+    vcomparesL = '''
     static float
     vcleFunc(float op1, float op2)
     {
@@ -1098,7 +1103,8 @@
             return 2.0;
         return (op1 < op2) ? 0.0 : 1.0;
     }
-
+'''
+    vacomparesG = '''
     static float
     vacgtFunc(float op1, float op2)
     {
@@ -1114,12 +1120,9 @@
             return 2.0;
         return (fabsf(op1) >= fabsf(op2)) ? 0.0 : 1.0;
     }
-}};
+'''
 
-let {{
-
-    header_output = ""
-    exec_output = ""
+    exec_output += vcompares + vacomparesG
 
     smallUnsignedTypes = ("uint8_t", "uint16_t", "uint32_t")
     unsignedTypes = smallUnsignedTypes + ("uint64_t",)
@@ -3414,6 +3417,9 @@
     twoRegMiscInst("vrev64", "NVrev64D", "SimdAluOp", smallUnsignedTypes, 2, 
vrev64Code)
     twoRegMiscInst("vrev64", "NVrev64Q", "SimdAluOp", smallUnsignedTypes, 4, 
vrev64Code)
 
+    split('exec')
+    exec_output += vcompares + vcomparesL
+
     vpaddlCode = '''
         destElem = (BigElement)srcElem1 + (BigElement)srcElem2;
     '''
diff -r be0e1724eb39 -r a60405212dea src/arch/arm/isa/insts/neon64.isa
--- a/src/arch/arm/isa/insts/neon64.isa Fri May 09 18:58:47 2014 -0400
+++ b/src/arch/arm/isa/insts/neon64.isa Fri May 09 18:58:47 2014 -0400
@@ -1959,6 +1959,9 @@
                       2, minAcrossCode)
     twoRegAcrossInstX("sminv", "SminvQX", "SimdCmpOp", smallSignedTypes, 4,
                       minAcrossCode)
+
+    split('exec')
+
     # SMLAL, SMLAL2 (by element)
     mlalCode = "destElem += (BigElement)srcElem1 * (BigElement)srcElem2;"
     threeRegLongInstX("smlal", "SmlalElemX", "SimdMultAccOp",
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to