60 likes | 167 Views
Implementation. How to describe effectively? An example:- BRC=10; (Block Repeat Count) RSA=L1;REA=EN[L1]; (Repeat Start Address and Repeat End Address) L1: w[0]=w[0]+1;W[w[0]]=0; PC=BRC>0,L1;BRC=BRC-1;. Issues (ZOLB).
E N D
Implementation • How to describe effectively? An example:- BRC=10; (Block Repeat Count) RSA=L1;REA=EN[L1]; (Repeat Start Address and Repeat End Address) L1: w[0]=w[0]+1;W[w[0]]=0; PC=BRC>0,L1;BRC=BRC-1;
Issues (ZOLB) • How to bind the rpt instruction to the start of the rpt block (on the tms320c54x, the start of the rpt block is implicitly the instruction after the rpt instruction) • Changing vpo to support ‘binding’ of an instruction to the next would be overkill. • Solution: Make fixentry() take care of this. (after vpo has finished its optimization loop).
Issues (ZOLB) • How to describe unrepeatable instructions? • The machine description sets the UNREPEATABLE flag for each unrepeatable instruction. • Machine description also provides an ignore list because some UNREPEATABLE instructions may disappear after conversion.
Issues (ZOLB) • How to specify end-label? • If we simply label the next-block, vpo wont print the label since it cannot see a jump to that label. • Solution: Use mangled version of the start label (eg. L1_end) as the end label for the rpt instruction. Output same mangled version of the start label when the last instruction in the rptblock is encountered in fixentry. Note that this last instruction contains the start label.
Future work • How to implement the special single repeat instruction? • How to prevent vpo from changing block size (for eg. when spills are added)?