From 283e092eda0b739a3c28bfa6293822e57ca67db6 Mon Sep 17 00:00:00 2001 From: Andrea Mondelli Date: Thu, 14 Mar 2019 18:20:54 -0400 Subject: dev-arm: Correct cast of template parameter Clang with -Wconstant-conversion is _very_ restrictive on casting. The shift operator results in an incorrect promotion. This patch add a compile-time static cast that remove the error when clang is used. Change-Id: I3aa1e77da2565799feadc32317d5faa111b2de86 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17308 Reviewed-by: Giacomo Travaglini Maintainer: Andreas Sandberg --- src/arch/arm/isa/insts/sve.isa | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/arch/arm/isa/insts') diff --git a/src/arch/arm/isa/insts/sve.isa b/src/arch/arm/isa/insts/sve.isa index 647ceafe3..e5e9e2450 100644 --- a/src/arch/arm/isa/insts/sve.isa +++ b/src/arch/arm/isa/insts/sve.isa @@ -4278,7 +4278,9 @@ let {{ bool negSrc1 = (srcElem1 < 0); bool negSrc2 = (srcElem2 < 0); if ((negDest != negSrc1) && (negSrc1 == negSrc2)) { - destElem = (Element)1 << (sizeof(Element) * 8 - 1); + destElem = static_cast( + (Element)1 << (sizeof(Element) * 8 - 1) + ); if (negDest) destElem -= 1; } @@ -4293,7 +4295,9 @@ let {{ bool negSrc = (srcElem1 < 0); bool posCount = ((count * imm) >= 0); if ((negDest != negSrc) && (negSrc == posCount)) { - destElem = (%(dstType)s)1 << (sizeof(%(dstType)s) * 8 - 1); + destElem = static_cast<%(dstType)s>( + (%(dstType)s)1 << (sizeof(%(dstType)s) * 8 - 1) + ); if (negDest) destElem -= 1; } @@ -4350,7 +4354,9 @@ let {{ bool negSrc = (srcElem1 < 0); bool negCount = ((count * imm) < 0); if ((negDest != negSrc) && (negSrc == negCount)) { - destElem = (%(dstType)s)1 << (sizeof(%(dstType)s) * 8 - 1); + destElem = static_cast<%(dstType)s>( + (%(dstType)s)1 << (sizeof(%(dstType)s) * 8 - 1) + ); if (negDest) destElem -= 1; } @@ -4407,7 +4413,9 @@ let {{ bool negSrc1 = (srcElem1 < 0); bool posSrc2 = (srcElem2 >= 0); if ((negDest != negSrc1) && (negSrc1 == posSrc2)) { - destElem = (Element)1 << (sizeof(Element) * 8 - 1); + destElem = static_cast( + (Element)1 << (sizeof(Element) * 8 - 1) + ); if (negDest) destElem -= 1; } -- cgit v1.2.3