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.travaglini@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/51867 Reviewed-by: Jason Lowe-Power <power.jg@gmail.com> Maintainer: Jason Lowe-Power <power.jg@gmail.com> Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
@@ -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 @@ class VecPredRegContainer
|
||||
/// @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);
|
||||
}
|
||||
/// @}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user