Iru Cai has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/33154 )

Change subject: arch-arm: Fix build errors with gcc 10.x
......................................................................

arch-arm: Fix build errors with gcc 10.x

This fixes the errors found by the GCC "-Werror=type-limits" flag.

Change-Id: I33934357f578a9fc1040a6d9c08ea929fb36eb47
Signed-off-by: Iru Cai <[email protected]>
---
M src/arch/arm/isa/insts/neon.isa
M src/arch/arm/isa/insts/sve.isa
2 files changed, 23 insertions(+), 40 deletions(-)



diff --git a/src/arch/arm/isa/insts/neon.isa b/src/arch/arm/isa/insts/neon.isa
index aa67353..864d157 100644
--- a/src/arch/arm/isa/insts/neon.isa
+++ b/src/arch/arm/isa/insts/neon.isa
@@ -1416,18 +1416,13 @@
         if readDest:
             readDestCode = 'destElem = letoh(destReg.elements[i]);'
         eWalkCode += '''
-        if (imm < 0 && imm >= eCount) {
-            fault = std::make_shared<UndefinedInstruction>(machInst, false,
-                                                           mnemonic);
-        } else {
-            for (unsigned i = 0; i < eCount; i++) {
-                Element srcElem1 = letoh(srcReg1.elements[i]);
-                Element srcElem2 = letoh(srcReg2.elements[imm]);
-                Element destElem;
-                %(readDest)s
-                %(op)s
-                destReg.elements[i] = htole(destElem);
-            }
+        for (unsigned i = 0; i < eCount; i++) {
+            Element srcElem1 = letoh(srcReg1.elements[i]);
+            Element srcElem2 = letoh(srcReg2.elements[imm]);
+            Element destElem;
+            %(readDest)s
+            %(op)s
+            destReg.elements[i] = htole(destElem);
         }
         ''' % { "op" : op, "readDest" : readDestCode }
         for reg in range(rCount):
@@ -1468,18 +1463,13 @@
         if readDest:
             readDestCode = 'destElem = letoh(destReg.elements[i]);'
         eWalkCode += '''
-        if (imm < 0 && imm >= eCount) {
-            fault = std::make_shared<UndefinedInstruction>(machInst, false,
-                                                          mnemonic);
-        } else {
-            for (unsigned i = 0; i < eCount; i++) {
-                Element srcElem1 = letoh(srcReg1.elements[i]);
-                Element srcElem2 = letoh(srcReg2.elements[imm]);
-                BigElement destElem;
-                %(readDest)s
-                %(op)s
-                destReg.elements[i] = htole(destElem);
-            }
+        for (unsigned i = 0; i < eCount; i++) {
+            Element srcElem1 = letoh(srcReg1.elements[i]);
+            Element srcElem2 = letoh(srcReg2.elements[imm]);
+            BigElement destElem;
+            %(readDest)s
+            %(op)s
+            destReg.elements[i] = htole(destElem);
         }
         ''' % { "op" : op, "readDest" : readDestCode }
         for reg in range(2 * rCount):
@@ -1518,18 +1508,13 @@
         if readDest:
             readDestCode = 'destReg = destRegs[i];'
         eWalkCode += '''
-        if (imm < 0 && imm >= eCount) {
-            fault = std::make_shared<UndefinedInstruction>(machInst, false,
-                                                           mnemonic);
-        } else {
-            for (unsigned i = 0; i < rCount; i++) {
-                float srcReg1 = srcRegs1[i];
-                float srcReg2 = srcRegs2[imm];
-                float destReg;
-                %(readDest)s
-                %(op)s
-                destRegs[i] = destReg;
-            }
+        for (unsigned i = 0; i < rCount; i++) {
+            float srcReg1 = srcRegs1[i];
+            float srcReg2 = srcRegs2[imm];
+            float destReg;
+            %(readDest)s
+            %(op)s
+            destRegs[i] = destReg;
         }
         ''' % { "op" : op, "readDest" : readDestCode }
         for reg in range(rCount):
diff --git a/src/arch/arm/isa/insts/sve.isa b/src/arch/arm/isa/insts/sve.isa
index 9314ba9..d7e65e1 100644
--- a/src/arch/arm/isa/insts/sve.isa
+++ b/src/arch/arm/isa/insts/sve.isa
@@ -4335,8 +4335,7 @@
         destElem = srcElem1 - (count * imm);
         bool negDest = (destElem < 0);
         bool negSrc = (srcElem1 < 0);
-        bool posCount = ((count * imm) >= 0);
-        if ((negDest != negSrc) && (negSrc == posCount)) {
+        if (!negDest && negSrc) {
             destElem = static_cast<%(dstType)s>(
                 (%(dstType)s)1 << (sizeof(%(dstType)s) * 8 - 1)
                 );
@@ -4394,8 +4393,7 @@
         destElem = srcElem1 + (count * imm);
         bool negDest = (destElem < 0);
         bool negSrc = (srcElem1 < 0);
-        bool negCount = ((count * imm) < 0);
-        if ((negDest != negSrc) && (negSrc == negCount)) {
+        if (negDest && !negSrc) {
             destElem = static_cast<%(dstType)s>(
                 (%(dstType)s)1 << (sizeof(%(dstType)s) * 8 - 1)
                 );

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33154
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I33934357f578a9fc1040a6d9c08ea929fb36eb47
Gerrit-Change-Number: 33154
Gerrit-PatchSet: 1
Gerrit-Owner: Iru Cai <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to