An online tutorial can be found in this link that covers diy7, diycross7 and diyone7.
We document some extra information here.
Tool diy7 enforces some filter by default, that is, function choice_default in source code file gen/alt.ml.
Given an unfinished cycle choice_default passes, returning true, the new unfinished/finished cycle will be, lhs and rhs, the following cases pass the default filter choice_default lhs rhs in AArch64:
lhs |
rhs |
|---|---|
| internal communication edge or insert edge | dependency edge or program order edge between different locations such as PodWR |
dependency edge or program order edge between different locations such as PodWR |
internal communication edge or insert edge |
dependency edge between different locations such as DpAddrdW |
program order edge between different locations such as PodWR, or same-location write-write edge such as PosWW, treated like Coi |
dependency edge between different locations such as DpAddrdR |
same-location read-write edge such as PosRW, treated like Fri |
program order edge between different locations such as PodWR |
dependency edge between different locations such as DpAddrdW |
same-location write-read edge such as PosWR, treated like Rfi |
dependency edge between different locations such as DpAddrdW |
| RMW edge | any edge |
| any edge | RMW edge |
| external edge | any edge |
| any edge | external edge |
The command diy7 -filter-check <lhs> <rhs> provides the filter result between <lhs> and <rhs>.