Adds capability to specify delay line to use for register destination operands. PiperOrigin-RevId: 866529433 Change-Id: I8b04947dfb59daf8737a59f7fa7dd78015f74510
diff --git a/mpact/sim/generic/register.h b/mpact/sim/generic/register.h index 36c042b..817b19a 100644 --- a/mpact/sim/generic/register.h +++ b/mpact/sim/generic/register.h
@@ -91,7 +91,12 @@ // Constructor and Destructor RegisterDestinationOperand(RegisterBase* reg, int latency); RegisterDestinationOperand(RegisterBase* reg, int latency, + DataBufferDelayLine* delay_line); + RegisterDestinationOperand(RegisterBase* reg, int latency, std::string op_name); + RegisterDestinationOperand(RegisterBase* reg, int latency, + std::string op_name, + DataBufferDelayLine* delay_line); RegisterDestinationOperand() = delete; // Initializes the DataBuffer instance so that when Submit is called, it can @@ -280,18 +285,31 @@ template <typename T> RegisterDestinationOperand<T>::RegisterDestinationOperand(RegisterBase* reg, - int latency, - std::string op_name) - : register_(reg), - db_factory_(reg->arch_state()->db_factory()), - latency_(latency), - delay_line_(reg->arch_state()->data_buffer_delay_line()), - op_name_(op_name) {} + int latency) + : RegisterDestinationOperand(reg, latency, reg->name(), + reg->arch_state()->data_buffer_delay_line()) {} + +template <typename T> +RegisterDestinationOperand<T>::RegisterDestinationOperand( + RegisterBase* reg, int latency, DataBufferDelayLine* delay_line) + : RegisterDestinationOperand(reg, latency, reg->name(), delay_line) {} template <typename T> RegisterDestinationOperand<T>::RegisterDestinationOperand(RegisterBase* reg, - int latency) - : RegisterDestinationOperand(reg, latency, reg->name()) {} + int latency, + std::string op_name) + : RegisterDestinationOperand(reg, latency, op_name, + reg->arch_state()->data_buffer_delay_line()) {} + +template <typename T> +RegisterDestinationOperand<T>::RegisterDestinationOperand( + RegisterBase* reg, int latency, std::string op_name, + DataBufferDelayLine* delay_line) + : register_(reg), + db_factory_(reg->arch_state()->db_factory()), + latency_(latency), + delay_line_(delay_line), + op_name_(op_name) {} template <typename T> void RegisterDestinationOperand<T>::InitializeDataBuffer(DataBuffer* db) {