{
         Addr EA;
         Fault fault = No_Fault;
-        %(mem_acc_type)s Mem = 0;
 
         %(fp_enable_check)s;
         %(op_src_decl)s;
                                       Trace::InstRecord *traceData) const
     {
         Fault fault = No_Fault;
-        %(mem_acc_type)s Mem = 0;
 
         %(fp_enable_check)s;
+        %(op_src_decl)s;
         %(op_dest_decl)s;
 
         memcpy(&Mem, data, sizeof(Mem));
         Addr EA;
         Fault fault = No_Fault;
         uint64_t write_result = 0;
-        %(mem_acc_type)s Mem = 0;
 
         %(fp_enable_check)s;
         %(op_src_decl)s;
+        %(op_dest_decl)s;
         %(op_rd)s;
         %(ea_code)s;
 
     Fault %(class_name)s::initiateAcc(%(CPU_exec_context)s *xc,
                                       Trace::InstRecord *traceData) const
     {
-        Addr EA;
-        Fault fault = No_Fault;
-
-        %(fp_enable_check)s;
-        %(op_decl)s;
-        %(op_rd)s;
-        %(ea_code)s;
-
-        if (fault == No_Fault) {
-            %(memacc_code)s;
-        }
+        panic("Misc instruction does not support split access method!");
 
         return No_Fault;
     }
                                       %(CPU_exec_context)s *xc,
                                       Trace::InstRecord *traceData) const
     {
+        panic("Misc instruction does not support split access method!");
+
         return No_Fault;
     }
 }};
     # for the post-access code.
     memacc_iop.postacc_code = postacc_cblk.code
 
+    # generate InstObjParams for InitiateAcc, CompleteAcc object
+    # The code used depends on the template being used
+    if (exec_template_base == 'Load'):
+        initiateacc_cblk = CodeBlock(ea_code + memacc_code)
+        completeacc_cblk = CodeBlock(memacc_code + postacc_code)
+    elif (exec_template_base == 'Store'):
+        initiateacc_cblk = CodeBlock(ea_code + memacc_code)
+        completeacc_cblk = CodeBlock(postacc_code)
+    else:
+        initiateacc_cblk = ''
+        completeacc_cblk = ''
+
+    initiateacc_iop = InstObjParams(name, Name, base_class, initiateacc_cblk,
+                                    inst_flags)
+
+    completeacc_iop = InstObjParams(name, Name, base_class, completeacc_cblk,
+                                    inst_flags)
+
+    if (exec_template_base == 'Load'):
+        initiateacc_iop.ea_code = ea_cblk.code
+        initiateacc_iop.memacc_code = memacc_cblk.code
+        completeacc_iop.memacc_code = memacc_cblk.code
+        completeacc_iop.postacc_code = postacc_cblk.code
+    elif (exec_template_base == 'Store'):
+        initiateacc_iop.ea_code = ea_cblk.code
+        initiateacc_iop.memacc_code = memacc_cblk.code
+        completeacc_iop.postacc_code = postacc_cblk.code
+
     # generate InstObjParams for unified execution
     cblk = CodeBlock(ea_code + memacc_code + postacc_code)
     iop = InstObjParams(name, Name, base_class, cblk, inst_flags)
             EACompExecute.subst(ea_iop)
             + memAccExecTemplate.subst(memacc_iop)
             + fullExecTemplate.subst(iop)
-            + initiateAccTemplate.subst(iop)
-            + completeAccTemplate.subst(iop))
+            + initiateAccTemplate.subst(initiateacc_iop)
+            + completeAccTemplate.subst(completeacc_iop))
 }};