You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This issue will track the discussion into changing the Patmos ISA to allow branches in the second issue slot.
Motivation
The limitation of not allowing branch instructions in the second issue slot is slightly "artificial" in that there are no technical reasons for it (as there is for load instructions.)
However, allowing branches in the second issue slot can provide significant benefit. One example is string copying, where we can use it in an implementation that only uses 3 cycles per character (amortized):
pmov$p1 =$p0loop:{ ($p1) lbuc$r1 = [$r2] ; Load next char ($p1) br loop }; Loop if not done{ ($p1) add$r2 =$r2,1 ; Increment source pointer ($p1) add$r3 =$r3,1 }; Increment target pointer{ ($p1) sbc [$r3-1] =$r1 ; Save char cmpneq$p1 =$r1,0 }; Check whether null was reached
Note: There might be a better way to do this by loading 4 chars at a time, but this is the fastest way to do it while loading only 1 char at a time.
Todo:
Implement in simulator
Benchmark on simulator
The text was updated successfully, but these errors were encountered:
This issue will track the discussion into changing the Patmos ISA to allow branches in the second issue slot.
Motivation
The limitation of not allowing branch instructions in the second issue slot is slightly "artificial" in that there are no technical reasons for it (as there is for load instructions.)
However, allowing branches in the second issue slot can provide significant benefit. One example is string copying, where we can use it in an implementation that only uses 3 cycles per character (amortized):
Note: There might be a better way to do this by loading 4 chars at a time, but this is the fastest way to do it while loading only 1 char at a time.
Todo:
The text was updated successfully, but these errors were encountered: