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