Merge pull request #7 from akihikodaki:template PiperOrigin-RevId: 718087600 Change-Id: I935e8de167bb5118acffc0b5818b80b595dbe66a
diff --git a/riscv/riscv_state.h b/riscv/riscv_state.h index 3c4bbd2..a09c8d6 100644 --- a/riscv/riscv_state.h +++ b/riscv/riscv_state.h
@@ -230,21 +230,6 @@ return std::make_pair(AddRegister<RegisterType>(name), true); } - // Specialization for RiscV vector registers. - template <> - std::pair<RVVectorRegister *, bool> GetRegister<RVVectorRegister>( - absl::string_view name) { - int vector_byte_width = vector_register_width(); - if (vector_byte_width == 0) return std::make_pair(nullptr, false); - auto ptr = registers()->find(std::string(name)); - if (ptr != registers()->end()) - return std::make_pair(static_cast<RVVectorRegister *>(ptr->second), - false); - // Create a new register and return a pointer to the object. - return std::make_pair( - AddRegister<RVVectorRegister>(name, vector_byte_width), true); - } - // Add register alias. template <typename RegisterType> absl::Status AddRegisterAlias(absl::string_view current_name, @@ -448,6 +433,20 @@ generic::SimpleCounter<int64_t> counter_interrupt_returns_; }; +// Specialization for RiscV vector registers. +template <> +inline std::pair<RVVectorRegister *, bool> +RiscVState::GetRegister<RVVectorRegister>(absl::string_view name) { + int vector_byte_width = vector_register_width(); + if (vector_byte_width == 0) return std::make_pair(nullptr, false); + auto ptr = registers()->find(std::string(name)); + if (ptr != registers()->end()) + return std::make_pair(static_cast<RVVectorRegister *>(ptr->second), false); + // Create a new register and return a pointer to the object. + return std::make_pair(AddRegister<RVVectorRegister>(name, vector_byte_width), + true); +} + } // namespace riscv } // namespace sim } // namespace mpact