catdep
let rec dtrm =
rf-reg \ ([W & range(lxsx)];rf-reg)
| rfi
| iico_data
| dtrm; dtrm
let ADDR = Rreg \ DATA
let basic-dep =
[R|Rreg]; dtrm?
let data = (basic-dep; [DATA]; iico_data+; [W]) \ same-instance
let addr = (basic-dep; [ADDR]; iico_data+; [M | TLBI | IC.IVAU | DC.CVAU]) \ same-instance
let ctrl = (basic-dep; [BCC]; po) \ same-instance
let pick-dtrm = (dtrm|iico_ctrl)+
let pick-basic-dep =
[R|Rreg]; pick-dtrm?
let pick-addr-dep =
pick-basic-dep; [ADDR]; iico_data+; [M]
let pick-data-dep =
pick-basic-dep; [DATA]; iico_data+; [W]
let pick-ctrl-dep =
pick-basic-dep; [BCC]; po
let pick-dep =
(
pick-basic-dep |
pick-addr-dep |
pick-data-dep |
pick-ctrl-dep
) \ same-instance
include "aarch64show.cat"
let addr = [Exp]; (addr \ same-instance)
let data = data \ same-instance
let ctrl = ctrl \ same-instance
let pick-dep = pick-dep \ same-instance