catdep
include "aarch64util.cat"
let lws = [M]; (po & same-loc); [W | MMU & FAULT]
let lrs = [W]; ((po & same-loc) & ~(intervening(W,(po & same-loc)))); [R]
let rec dtrm =
[~range(lxsx)]; rf-reg
| lrs
| iico_data
| dtrm; dtrm
let ADDR = Rreg \ DATA
let basic-dep =
[Exp & R | Rreg]; dtrm?
let data = (basic-dep; [DATA]; iico_data+; [W]) \ same-instance
let addr = [Exp & M]; (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 =
[Exp & 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-addr-dep =
pick-basic-dep; [ADDR]; iico_data+; [M]
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"