…
AArch64 WWC+pos+posWppteva-tlbi-sync.ishsptevapteoa.va
"Rfe PosRW Rfe PosRWPPteVA TLBI-sync.ISHsWWPteVAPteOA.VA CoePteOA.VAP"
Variant=imprecise
Cycle=Rfe PosRW Rfe PosRWPPteVA TLBI-sync.ISHsWWPteVAPteOA.VA CoePteOA.VAP
Relax=[PteVA,TLBI-sync.ISHsWW,PteOA,PteVA]
Safe=Rfe Coe PosRW
Generator=diy7 (version 7.56+02~dev)
Com=Rf Rf Co
Orig=Rfe PosRW Rfe PosRWPPteVA TLBI-sync.ISHsWWPteVAPteOA.VA CoePteOA.VAP
{ int x=0; int y=4;
0:X1=x;
1:X0=x;
2:X0=x; 2:X2=PTE(x); 2:X3=(oa:PA(x), valid:0); 2:X4=(oa:PA(y));
}
P0 | P1 | P2 ;
MOV W0,#1 | LDR W1,[X0] | LDR W1,[X0] ;
STR W0,[X1] | MOV W2,#2 | STR X3,[X2] ;
| STR W2,[X0] | LSR X5,X0,#12 ;
| | DSB ISH ;
| | TLBI VAAE1IS,X5 ;
| | DSB ISH ;
| | STR X4,[X2] ;
exists (1:X1=0 /\ 2:X1=0 /\ [x]=1 /\ fault(P0,x,MMU:Translation) /\ ~fault(P1,x) /\ ~fault(P2,x)) \/ (1:X1=0 /\ 2:X1=0 /\ [x]=1 /\ fault(P0,x,MMU:Translation) /\ fault(P1,x,MMU:Translation) /\ ~fault(P2,x)) \/ (1:X1=0 /\ 2:X1=0 /\ [x]=2 /\ fault(P0,x,MMU:Translation) /\ fault(P1,x,MMU:Translation) /\ ~fault(P2,x)) \/ (1:X1=0 /\ 2:X1=0 /\ [x]=2 /\ fault(P1,x,MMU:Translation) /\ ~fault(P0,x) /\ ~fault(P2,x)) \/ (1:X1=0 /\ 2:X1=1 /\ [x]=1 /\ fault(P0,x,MMU:Translation) /\ ~fault(P1,x) /\ ~fault(P2,x)) \/ (1:X1=0 /\ 2:X1=1 /\ [x]=1 /\ fault(P0,x,MMU:Translation) /\ fault(P1,x,MMU:Translation) /\ ~fault(P2,x)) \/ (1:X1=0 /\ 2:X1=1 /\ [x]=2 /\ fault(P0,x,MMU:Translation) /\ ~fault(P1,x) /\ ~fault(P2,x)) \/ (1:X1=0 /\ 2:X1=1 /\ [x]=2 /\ fault(P0,x,MMU:Translation) /\ fault(P1,x,MMU:Translation) /\ ~fault(P2,x)) \/ (1:X1=0 /\ 2:X1=1 /\ [x]=2 /\ fault(P1,x,MMU:Translation) /\ ~fault(P0,x) /\ ~fault(P2,x)) \/ (1:X1=0 /\ 2:X1=2 /\ [x]=1 /\ fault(P0,x,MMU:Translation) /\ ~fault(P1,x) /\ ~fault(P2,x)) \/ (1:X1=0 /\ 2:X1=2 /\ [x]=1 /\ fault(P0,x,MMU:Translation) /\ fault(P1,x,MMU:Translation) /\ ~fault(P2,x)) \/ (1:X1=0 /\ 2:X1=2 /\ [x]=1 /\ fault(P1,x,MMU:Translation) /\ ~fault(P0,x) /\ ~fault(P2,x)) \/ (1:X1=0 /\ 2:X1=2 /\ [x]=2 /\ fault(P0,x,MMU:Translation) /\ fault(P1,x,MMU:Translation) /\ ~fault(P2,x)) \/ (1:X1=0 /\ 2:X1=2 /\ [x]=2 /\ fault(P1,x,MMU:Translation) /\ ~fault(P0,x) /\ ~fault(P2,x)) \/ (1:X1=1 /\ 2:X1=0 /\ [x]=1 /\ fault(P0,x,MMU:Translation) /\ ~fault(P1,x) /\ ~fault(P2,x)) \/ (1:X1=1 /\ 2:X1=0 /\ [x]=1 /\ fault(P0,x,MMU:Translation) /\ fault(P1,x,MMU:Translation) /\ ~fault(P2,x)) \/ (1:X1=1 /\ 2:X1=0 /\ [x]=2 /\ fault(P0,x,MMU:Translation) /\ ~fault(P1,x) /\ ~fault(P2,x)) \/ (1:X1=1 /\ 2:X1=0 /\ [x]=2 /\ fault(P0,x,MMU:Translation) /\ fault(P1,x,MMU:Translation) /\ ~fault(P2,x)) \/ (1:X1=1 /\ 2:X1=0 /\ [x]=2 /\ fault(P1,x,MMU:Translation) /\ ~fault(P0,x) /\ ~fault(P2,x)) \/ (1:X1=1 /\ 2:X1=1 /\ [x]=1 /\ fault(P0,x,MMU:Translation) /\ ~fault(P1,x) /\ ~fault(P2,x)) \/ (1:X1=1 /\ 2:X1=1 /\ [x]=1 /\ fault(P0,x,MMU:Translation) /\ fault(P1,x,MMU:Translation) /\ ~fault(P2,x)) \/ (1:X1=1 /\ 2:X1=1 /\ [x]=2 /\ fault(P0,x,MMU:Translation) /\ ~fault(P1,x) /\ ~fault(P2,x)) \/ (1:X1=1 /\ 2:X1=1 /\ [x]=2 /\ fault(P0,x,MMU:Translation) /\ fault(P1,x,MMU:Translation) /\ ~fault(P2,x)) \/ (1:X1=1 /\ 2:X1=1 /\ [x]=2 /\ fault(P1,x,MMU:Translation) /\ ~fault(P0,x) /\ ~fault(P2,x)) \/ (1:X1=1 /\ 2:X1=2 /\ [x]=2 /\ fault(P0,x,MMU:Translation) /\ ~fault(P1,x) /\ ~fault(P2,x)) \/ (1:X1=1 /\ 2:X1=2 /\ [x]=2 /\ fault(P0,x,MMU:Translation) /\ fault(P1,x,MMU:Translation) /\ ~fault(P2,x)) \/ (1:X1=1 /\ 2:X1=2 /\ [x]=2 /\ fault(P1,x,MMU:Translation) /\ ~fault(P0,x) /\ ~fault(P2,x)) \/ (1:X1=4 /\ 2:X1=0 /\ [x]=1 /\ fault(P0,x,MMU:Translation) /\ ~fault(P1,x) /\ ~fault(P2,x)) \/ (1:X1=4 /\ 2:X1=0 /\ [x]=1 /\ fault(P0,x,MMU:Translation) /\ fault(P1,x,MMU:Translation) /\ ~fault(P2,x)) \/ (1:X1=4 /\ 2:X1=1 /\ [x]=1 /\ fault(P0,x,MMU:Translation) /\ ~fault(P1,x) /\ ~fault(P2,x)) \/ (1:X1=4 /\ 2:X1=1 /\ [x]=1 /\ fault(P0,x,MMU:Translation) /\ fault(P1,x,MMU:Translation) /\ ~fault(P2,x))