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) {