43,47d42
< # generate code block objects
< ea_cblk = CodeBlock(ea_code)
< memacc_cblk = CodeBlock(memacc_code)
< postacc_cblk = CodeBlock(postacc_code)
<
54,55c49,60
< # generate InstObjParams for EAComp object
< ea_iop = InstObjParams(name, Name, base_class, ea_cblk, inst_flags)
---
> # Generate InstObjParams for each of the three objects. Note that
> # they differ only in the set of code objects contained (which in
> # turn affects the object's overall operand list).
> iop = InstObjParams(name, Name, base_class,
> { 'ea_code':ea_code, 'memacc_code':memacc_code, 'postacc_code':postacc_code },
> inst_flags)
> ea_iop = InstObjParams(name, Name, base_class,
> { 'ea_code':ea_code },
> inst_flags)
> memacc_iop = InstObjParams(name, Name, base_class,
> { 'memacc_code':memacc_code, 'postacc_code':postacc_code },
> inst_flags)
57,100d61
< # generate InstObjParams for MemAcc object
< memacc_iop = InstObjParams(name, Name, base_class, memacc_cblk, inst_flags)
< # in the split execution model, the MemAcc portion is responsible
< # 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.startswith('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.startswith('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)
<
< iop.ea_constructor = ea_cblk.constructor
< iop.ea_code = ea_cblk.code
< iop.memacc_constructor = memacc_cblk.constructor
< iop.memacc_code = memacc_cblk.code
< iop.postacc_code = postacc_cblk.code
<
120c81,84
< return (LoadStoreDeclare.subst(iop), LoadStoreConstructor.subst(iop),
---
> return (LoadStoreDeclare.subst(iop),
> EACompConstructor.subst(ea_iop)
> + MemAccConstructor.subst(memacc_iop)
> + LoadStoreConstructor.subst(iop),
125,126c89,90
< + initiateAccTemplate.subst(initiateacc_iop)
< + completeAccTemplate.subst(completeacc_iop))
---
> + initiateAccTemplate.subst(iop)
> + completeAccTemplate.subst(iop))
127a92,93
>
>