Giacomo Travaglini has submitted this change. (
https://gem5-review.googlesource.com/c/public/gem5/+/51867 )
Change subject: arch: Fixed Packed register view for VecPredReg
......................................................................
arch: Fixed Packed register view for VecPredReg
A bug in the VecPredRegContainer::as method was introduced by
a past commit [1]. The commit was not properly handling the case of
a Packed representation
If Packed == true -> NumElement = NumBits instead of
NumElements = NumBits / sizeof(VecElem)
This patch is fixing it
[1]: https://gem5-review.googlesource.com/c/public/gem5/+/42000
Change-Id: I308769c3938d0fac84316936f732a6c383146484
Signed-off-by: Giacomo Travaglini <giacomo.travagl...@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/51867
Reviewed-by: Jason Lowe-Power <power...@gmail.com>
Maintainer: Jason Lowe-Power <power...@gmail.com>
Tested-by: kokoro <noreply+kok...@google.com>
---
M src/arch/generic/vec_pred_reg.hh
1 file changed, 34 insertions(+), 7 deletions(-)
Approvals:
Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved
kokoro: Regressions pass
diff --git a/src/arch/generic/vec_pred_reg.hh
b/src/arch/generic/vec_pred_reg.hh
index eb96949..ad6bcce 100644
--- a/src/arch/generic/vec_pred_reg.hh
+++ b/src/arch/generic/vec_pred_reg.hh
@@ -1,4 +1,4 @@
-// Copyright (c) 2017 ARM Limited
+// Copyright (c) 2017, 2021 Arm Limited
// All rights reserved
//
// The license below extends only to copyright in the software and shall
@@ -344,23 +344,25 @@
/// @tparam VecElem Type of the vector elements.
/// @{
template <typename VecElem>
- VecPredRegT<VecElem, NumBits / sizeof(VecElem), Packed, true>
+ auto
as() const
{
static_assert(NumBits % sizeof(VecElem) == 0,
"Container size incompatible with view size.");
- return VecPredRegT<VecElem, NumBits / sizeof(VecElem), Packed,
true>(
- *this);
+ return VecPredRegT<VecElem,
+ Packed ? NumBits : (NumBits / sizeof(VecElem)),
+ Packed, true>(*this);
}
template <typename VecElem>
- VecPredRegT<VecElem, NumBits / sizeof(VecElem), Packed, false>
+ auto
as()
{
static_assert(NumBits % sizeof(VecElem) == 0,
"Container size incompatible with view size.");
- return VecPredRegT<VecElem, NumBits / sizeof(VecElem), Packed,
false>(
- *this);
+ return VecPredRegT<VecElem,
+ Packed ? NumBits : (NumBits / sizeof(VecElem)),
+ Packed, false>(*this);
}
/// @}
};
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/51867
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: I308769c3938d0fac84316936f732a6c383146484
Gerrit-Change-Number: 51867
Gerrit-PatchSet: 2
Gerrit-Owner: Giacomo Travaglini <giacomo.travagl...@arm.com>
Gerrit-Reviewer: Gabe Black <gabe.bl...@gmail.com>
Gerrit-Reviewer: Giacomo Travaglini <giacomo.travagl...@arm.com>
Gerrit-Reviewer: Jason Lowe-Power <power...@gmail.com>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s