diff --git a/src/arch/arm/isa/insts/neon.isa b/src/arch/arm/isa/insts/neon.isa index aa67353b77..d536d5b8d0 100644 --- a/src/arch/arm/isa/insts/neon.isa +++ b/src/arch/arm/isa/insts/neon.isa @@ -1416,7 +1416,7 @@ let {{ if readDest: readDestCode = 'destElem = letoh(destReg.elements[i]);' eWalkCode += ''' - if (imm < 0 && imm >= eCount) { + if (imm >= eCount) { fault = std::make_shared(machInst, false, mnemonic); } else { @@ -1468,7 +1468,7 @@ let {{ if readDest: readDestCode = 'destElem = letoh(destReg.elements[i]);' eWalkCode += ''' - if (imm < 0 && imm >= eCount) { + if (imm >= eCount) { fault = std::make_shared(machInst, false, mnemonic); } else { @@ -1518,7 +1518,7 @@ let {{ if readDest: readDestCode = 'destReg = destRegs[i];' eWalkCode += ''' - if (imm < 0 && imm >= eCount) { + if (imm >= eCount) { fault = std::make_shared(machInst, false, mnemonic); } else { diff --git a/src/arch/arm/isa/insts/sve.isa b/src/arch/arm/isa/insts/sve.isa index 9314ba9a62..4e49e9294e 100644 --- a/src/arch/arm/isa/insts/sve.isa +++ b/src/arch/arm/isa/insts/sve.isa @@ -4335,13 +4335,10 @@ let {{ 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) ); - if (negDest) - destElem -= 1; } ''' sveElemCountInst('sqdec', 'Sqdec32', 'SimdAluOp', signedTypes, @@ -4394,13 +4391,11 @@ let {{ 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) ); - if (negDest) - destElem -= 1; + destElem -= 1; } ''' sveElemCountInst('sqinc', 'Sqinc32', 'SimdAluOp', signedTypes,