Updates namespace in type_helpers.
Change the namespace for type_helpers.h which was mpact::riscv to
mpact::sim::generic, which aligns with its location.
General cleanup of include files.
PiperOrigin-RevId: 563156458
diff --git a/sim/decoder.cc b/sim/decoder.cc
index eeb1d43..a98f6b3 100644
--- a/sim/decoder.cc
+++ b/sim/decoder.cc
@@ -1,7 +1,11 @@
#include "sim/decoder.h"
+#include "mpact/sim/generic/type_helpers.h"
+
namespace kelvin::sim {
+using ::mpact::sim::generic::operator*; // NOLINT: is used below (clang error).
+
KelvinDecoder::KelvinDecoder(KelvinState *state,
mpact::sim::util::MemoryInterface *memory)
: state_(state), memory_(memory) {
diff --git a/sim/kelvin_instructions.cc b/sim/kelvin_instructions.cc
index dbc25d6..1d2605a 100644
--- a/sim/kelvin_instructions.cc
+++ b/sim/kelvin_instructions.cc
@@ -4,9 +4,14 @@
#include <string>
#include "sim/kelvin_state.h"
+#include "riscv/riscv_state.h"
+#include "mpact/sim/generic/instruction.h"
+#include "mpact/sim/generic/type_helpers.h"
namespace kelvin::sim {
+using ::mpact::sim::generic::operator*; // NOLINT: is used below (clang error).
+
void KelvinIllegalInstruction(mpact::sim::generic::Instruction *inst) {
auto *state = static_cast<KelvinState *>(inst->state());
state->Trap(/*is_interrupt*/ false, /*trap_value*/ 0,
diff --git a/sim/kelvin_top.cc b/sim/kelvin_top.cc
index d3b7f03..a18cc08 100644
--- a/sim/kelvin_top.cc
+++ b/sim/kelvin_top.cc
@@ -46,7 +46,7 @@
namespace kelvin::sim {
-using ::mpact::sim::riscv::operator*; // NOLINT: clang-tidy false positive.
+using ::mpact::sim::generic::operator*; // NOLINT: clang-tidy false positive.
constexpr char kKelvinName[] = "Kelvin";
diff --git a/sim/kelvin_vector_convolution_instructions.cc b/sim/kelvin_vector_convolution_instructions.cc
index 2f7fbf1..4557362 100644
--- a/sim/kelvin_vector_convolution_instructions.cc
+++ b/sim/kelvin_vector_convolution_instructions.cc
@@ -10,9 +10,12 @@
#include "riscv/riscv_state.h"
#include "mpact/sim/generic/data_buffer.h"
#include "mpact/sim/generic/instruction.h"
+#include "mpact/sim/generic/type_helpers.h"
namespace kelvin::sim {
+using ::mpact::sim::generic::operator*; // NOLINT: is used below (clang error).
+
using mpact::sim::generic::GetInstructionSource;
using mpact::sim::riscv::RV32VectorSourceOperand;
diff --git a/sim/kelvin_vector_instructions.cc b/sim/kelvin_vector_instructions.cc
index 241789d..fb3f361 100644
--- a/sim/kelvin_vector_instructions.cc
+++ b/sim/kelvin_vector_instructions.cc
@@ -18,6 +18,7 @@
namespace kelvin::sim {
+using ::mpact::sim::generic::operator*;
using mpact::sim::generic::DataBuffer;
using mpact::sim::generic::GetInstructionSource;
using mpact::sim::riscv::RV32VectorDestinationOperand;
@@ -532,7 +533,7 @@
// Halving addition with optional rounding bit.
template <typename T>
T KelvinVHaddHelper(bool round, T vs1, T vs2) {
- using WT = typename mpact::sim::riscv::WideType<T>::type;
+ using WT = typename mpact::sim::generic::WideType<T>::type;
return static_cast<T>(
(static_cast<WT>(vs1) + static_cast<WT>(vs2) + (round ? 1 : 0)) >> 1);
}
@@ -553,7 +554,7 @@
// Halving subtraction with optional rounding bit.
template <typename T>
T KelvinVHsubHelper(bool round, T vs1, T vs2) {
- using WT = typename mpact::sim::riscv::WideType<T>::type;
+ using WT = typename mpact::sim::generic::WideType<T>::type;
return static_cast<T>(
(static_cast<WT>(vs1) - static_cast<WT>(vs2) + (round ? 1 : 0)) >> 1);
}
@@ -712,7 +713,7 @@
// result.
template <typename T>
T KelvinVShiftHelper(bool round, T vs1, T vs2) {
- using WT = typename mpact::sim::riscv::WideType<T>::type;
+ using WT = typename mpact::sim::generic::WideType<T>::type;
if (std::is_signed<T>::value == true) {
constexpr int kMaxShiftBit = sizeof(T) * 8;
int shamt = vs2;
@@ -734,7 +735,7 @@
CHECK_LE(ushamt, kMaxShiftBit);
CHECK_GE(ushamt, 0);
// Use unsigned WideType to prevent undefined negative shift.
- using UWT = typename mpact::sim::riscv::WideType<UT>::type;
+ using UWT = typename mpact::sim::generic::WideType<UT>::type;
shift = static_cast<WT>(static_cast<UWT>(vs1) << ushamt);
}
T neg_max = std::numeric_limits<T>::min();
@@ -863,7 +864,7 @@
static_assert(2 * sizeof(Td) == sizeof(Ts) || 4 * sizeof(Td) == sizeof(Ts));
constexpr int src_bits = sizeof(Ts) * 8;
vs2 &= (src_bits - 1);
- using WTs = typename mpact::sim::riscv::WideType<Ts>::type;
+ using WTs = typename mpact::sim::generic::WideType<Ts>::type;
WTs res = (static_cast<WTs>(vs1) +
(vs2 && round ? static_cast<WTs>(1ll << (vs2 - 1)) : 0)) >>
vs2;
@@ -897,7 +898,7 @@
void KelvinVMul(bool scalar, bool strip_mine, Instruction *inst) {
KelvinBinaryVectorOp(
inst, scalar, strip_mine, std::function<T(T, T)>([](T vs1, T vs2) -> T {
- using WT = typename mpact::sim::riscv::WideType<T>::type;
+ using WT = typename mpact::sim::generic::WideType<T>::type;
return static_cast<T>(static_cast<WT>(vs1) * static_cast<WT>(vs2));
}));
@@ -911,7 +912,7 @@
void KelvinVMuls(bool scalar, bool strip_mine, Instruction *inst) {
KelvinBinaryVectorOp(
inst, scalar, strip_mine, std::function<T(T, T)>([](T vs1, T vs2) -> T {
- using WT = typename mpact::sim::riscv::WideType<T>::type;
+ using WT = typename mpact::sim::generic::WideType<T>::type;
WT result = static_cast<WT>(vs1) * static_cast<WT>(vs2);
if (std::is_signed<T>::value) {
result = std::max(
@@ -949,7 +950,7 @@
// Returns high half.
template <typename T>
T KelvinVMulhHelper(bool round, T vs1, T vs2) {
- using WT = typename mpact::sim::riscv::WideType<T>::type;
+ using WT = typename mpact::sim::generic::WideType<T>::type;
constexpr int n = sizeof(T) * 8;
WT result = static_cast<WT>(vs1) * static_cast<WT>(vs2);
@@ -975,7 +976,7 @@
template <typename T>
T KelvinVDmulhHelper(bool round, bool round_neg, T vs1, T vs2) {
constexpr int n = sizeof(T) * 8;
- using WT = typename mpact::sim::riscv::WideType<T>::type;
+ using WT = typename mpact::sim::generic::WideType<T>::type;
WT result = static_cast<WT>(vs1) * static_cast<WT>(vs2);
if (round) {
WT rnd = static_cast<WT>(0x40000000ll >> (32 - n));
@@ -1008,7 +1009,7 @@
KelvinBinaryVectorOp<false /* halftype */, false /* widen_dst */, T, T, T, T>(
inst, scalar, strip_mine,
std::function<T(T, T, T)>([](T vd, T vs1, T vs2) -> T {
- using WT = typename mpact::sim::riscv::WideType<T>::type;
+ using WT = typename mpact::sim::generic::WideType<T>::type;
return static_cast<WT>(vd) +
static_cast<WT>(vs1) * static_cast<WT>(vs2);
}));
@@ -1023,7 +1024,7 @@
KelvinBinaryVectorOp<false /* halftype */, false /* widen_dst */, T, T, T, T>(
inst, scalar, strip_mine,
std::function<T(T, T, T)>([](T vd, T vs1, T vs2) -> T {
- using WT = typename mpact::sim::riscv::WideType<T>::type;
+ using WT = typename mpact::sim::generic::WideType<T>::type;
return static_cast<WT>(vs1) +
static_cast<WT>(vd) * static_cast<WT>(vs2);
}));
diff --git a/sim/renode/kelvin_renode_reigster_info.cc b/sim/renode/kelvin_renode_reigster_info.cc
index 8a3be56..5af05bb 100644
--- a/sim/renode/kelvin_renode_reigster_info.cc
+++ b/sim/renode/kelvin_renode_reigster_info.cc
@@ -4,6 +4,8 @@
namespace kelvin::sim {
+using ::mpact::sim::generic::operator*; // NOLINT: used below (clange error).
+
KelvinRenodeRegisterInfo *KelvinRenodeRegisterInfo::instance_ = nullptr;
void KelvinRenodeRegisterInfo::InitializeRenodeRegisterInfo() {
diff --git a/sim/renode/renode_mpact.cc b/sim/renode/renode_mpact.cc
index e01903f..f8a796d 100644
--- a/sim/renode/renode_mpact.cc
+++ b/sim/renode/renode_mpact.cc
@@ -243,7 +243,7 @@
// If the previous halt reason was a semihost halt request, then we shouldn't
// step any further. Just return with "waiting for interrupt" code.
using HaltReason = RenodeDebugInterface::HaltReason;
- using mpact::sim::riscv::operator*; // NOLINT: used below.
+ using mpact::sim::generic::operator*; // NOLINT: used below.
if (halt_res.value() == *HaltReason::kSemihostHaltRequest) {
if (status != nullptr) {
*status = static_cast<int32_t>(ExecutionResult::kAborted);
@@ -334,7 +334,7 @@
}
// Map the halt status appropriately.
using HaltReason = RenodeDebugInterface::HaltReason;
- using mpact::sim::riscv::operator*; // NOLINT: used below.
+ using mpact::sim::generic::operator*; // NOLINT: used below.
if (status != nullptr) {
switch (halt_res.value()) {
case *HaltReason::kSemihostHaltRequest:
diff --git a/sim/test/kelvin_vector_instructions_test_base.h b/sim/test/kelvin_vector_instructions_test_base.h
index d5c4f70..8c9fb57 100644
--- a/sim/test/kelvin_vector_instructions_test_base.h
+++ b/sim/test/kelvin_vector_instructions_test_base.h
@@ -202,7 +202,7 @@
SetRegisterValues<RV32Register::ValueType>({{kRs1Name, rs2_reg_value}});
// Cast the value to the appropriate width, sign-extending if needed.
rs2_value = static_cast<Ts2>(
- static_cast<typename mpact::sim::riscv::SameSignedType<
+ static_cast<typename mpact::sim::generic::SameSignedType<
RV32Register::ValueType, Ts2>::type>(rs2_reg_value));
} else if (!halftype_op) {
// Use the value slightly greater than min so VShift won't complain