|
1 | | -vmsa-neg-exists |
2 | | - $ diyone7 -arch AArch64 -variant kvm Amo.Cas TLBI-sync.ISHdWW PteV1 PteAF0 PteOA Rfe Pte PodRW PteHD Rfe -neg true -info "User-define=User-define" |
3 | | - AArch64 LB+popteptehd+amo.cas-tlbi-sync.ishppteoa.v1.af0 |
4 | | - Variant=vmsa |
| 1 | +valid-cycle-with-p-annotation |
| 2 | + $ diyone7 -arch AArch64 PodWR P Fre PodWR Fre |
| 3 | + AArch64 SB |
| 4 | + "PodWR Fre PodWR Fre" |
5 | 5 | Generator=diyone7 (version 7.58+1) |
6 | | - Prefetch=0:x=F,0:y=W,1:y=F,1:x=W |
7 | | - Com=Rf Rf |
8 | | - Orig=Amo.Cas TLBI-sync.ISHdWWPPteOA.V1.AF0 RfePteOA.V1.AF0Pte PodRWPtePteHD RfePteHDP |
9 | | - TTHM=HD |
10 | | - User-define=User-define |
11 | | - "Amo.Cas TLBI-sync.ISHdWWPPteOA.V1.AF0 RfePteOA.V1.AF0Pte PodRWPtePteHD RfePteHDP" |
12 | | - { |
13 | | - [x]=1; |
14 | | - [PTE(x)]=(oa:PA(x), db:0, dbm:1); |
15 | | - [y]=5; |
16 | | - [PTE(y)]=(oa:PA(y), valid:0); |
17 | | - 0:X0=x; 0:X3=PTE(y); 0:X4=(oa:PA(x), af:0); |
18 | | - 1:X0=x; pteval_t 1:X1=0; 1:X3=PTE(y); |
19 | | - } |
20 | | - P0 | P1 ; |
21 | | - MOV W1,#2 | LDR X1,[X3] ; |
22 | | - MOV W2,#3 | MOV W2,#2 ; |
23 | | - L01: CAS W1,W2,[X0] | L00: STR W2,[X0] ; |
24 | | - DSB ISH | ; |
25 | | - LSR X5,X0,#12 | ; |
26 | | - TLBI VAAE1IS,X5 | ; |
27 | | - DSB ISH | ; |
28 | | - STR X4,[X3] | ; |
29 | | - |
30 | | - ~exists ([x]=3 /\ 0:X1=2 /\ 1:X1=(oa:PA(x), af:0) /\ not (fault(P0:L01,x)) /\ not (fault(P1:L00,x))) |
31 | | -vmsa-forall |
32 | | - $ diyone7 -arch AArch64 -variant kvm Amo.Cas TLBI-sync.ISHdWW PteV1 PteAF0 PteOA Rfe Pte PodRW PteHD Rfe -info "User-define=User-define" -cond observe |
33 | | - AArch64 LB+popteptehd+amo.cas-tlbi-sync.ishppteoa.v1.af0 |
34 | | - Variant=vmsa |
35 | | - Generator=diyone7 (version 7.58+1) |
36 | | - Prefetch=0:x=F,0:y=W,1:y=F,1:x=W |
37 | | - Com=Rf Rf |
38 | | - Orig=Amo.Cas TLBI-sync.ISHdWWPPteOA.V1.AF0 RfePteOA.V1.AF0Pte PodRWPtePteHD RfePteHDP |
39 | | - TTHM=HD |
40 | | - User-define=User-define |
41 | | - "Amo.Cas TLBI-sync.ISHdWWPPteOA.V1.AF0 RfePteOA.V1.AF0Pte PodRWPtePteHD RfePteHDP" |
42 | | - { |
43 | | - [x]=1; |
44 | | - [PTE(x)]=(oa:PA(x), db:0, dbm:1); |
45 | | - [y]=5; |
46 | | - [PTE(y)]=(oa:PA(y), valid:0); |
47 | | - 0:X0=x; 0:X3=PTE(y); 0:X4=(oa:PA(x), af:0); |
48 | | - 1:X0=x; pteval_t 1:X1=0; 1:X3=PTE(y); |
49 | | - } |
50 | | - P0 | P1 ; |
51 | | - MOV W1,#2 | LDR X1,[X3] ; |
52 | | - MOV W2,#3 | MOV W2,#2 ; |
53 | | - L01: CAS W1,W2,[X0] | L00: STR W2,[X0] ; |
54 | | - DSB ISH | ; |
55 | | - LSR X5,X0,#12 | ; |
56 | | - TLBI VAAE1IS,X5 | ; |
57 | | - DSB ISH | ; |
58 | | - STR X4,[X3] | ; |
59 | | - |
60 | | - locations [x; 0:X1; 1:X1; fault(P0:L01,x); fault(P1:L00,x);] |
61 | | - forall (true) |
62 | | -vmsa-location |
63 | | - $ diyone7 -arch AArch64 -variant kvm Amo.Cas TLBI-sync.ISHdWW PteV1 PteAF0 PteOA Rfe Pte PodRW PteHD Rfe -info "User-define=User-define" -cond unicond |
64 | | - AArch64 LB+popteptehd+amo.cas-tlbi-sync.ishppteoa.v1.af0 |
65 | | - Variant=vmsa |
66 | | - Generator=diyone7 (version 7.58+1) |
67 | | - Prefetch=0:x=F,0:y=W,1:y=F,1:x=W |
68 | | - Com=Rf Rf |
69 | | - Orig=Amo.Cas TLBI-sync.ISHdWWPPteOA.V1.AF0 RfePteOA.V1.AF0Pte PodRWPtePteHD RfePteHDP |
70 | | - TTHM=HD |
71 | | - User-define=User-define |
72 | | - "Amo.Cas TLBI-sync.ISHdWWPPteOA.V1.AF0 RfePteOA.V1.AF0Pte PodRWPtePteHD RfePteHDP" |
73 | | - { |
74 | | - [x]=1; |
75 | | - [PTE(x)]=(oa:PA(x), db:0, dbm:1); |
76 | | - [y]=5; |
77 | | - [PTE(y)]=(oa:PA(y), valid:0); |
78 | | - 0:X0=x; 0:X3=PTE(y); 0:X4=(oa:PA(x), af:0); |
79 | | - 1:X0=x; pteval_t 1:X1=0; 1:X3=PTE(y); |
80 | | - } |
81 | | - P0 | P1 ; |
82 | | - MOV W1,#2 | LDR X1,[X3] ; |
83 | | - MOV W2,#3 | MOV W2,#2 ; |
84 | | - L01: CAS W1,W2,[X0] | L00: STR W2,[X0] ; |
85 | | - DSB ISH | ; |
86 | | - LSR X5,X0,#12 | ; |
87 | | - TLBI VAAE1IS,X5 | ; |
88 | | - DSB ISH | ; |
89 | | - STR X4,[X3] | ; |
90 | | - |
91 | | - forall (not (fault(P0:L01,x)) /\ not (fault(P1:L00,x)) /\ ([y]=(oa:PA(x), af:0) /\ (0:X1=2 /\ ([x]=3 /\ (1:X1=(oa:PA(x), af:0) \/ 1:X1=0)) \/ 0:X1=0 /\ (1:X1=(oa:PA(x), af:0) /\ ([x]=3 \/ [x]=2) \/ 1:X1=0 /\ ([x]=3 \/ [x]=2))))) |
92 | | -memtag |
93 | | - $ diyone7 -arch AArch64 -variant memtag DpDatadW T PosWW T Rfe PodRW Rfe T -info "Variant=memtag" |
94 | | - AArch64 LB+po+dataWtt-postt |
95 | | - Variant=memtag memtag |
96 | | - Generator=diyone7 (version 7.58+1) |
97 | | - Prefetch=0:x=F,0:y=W,1:y=F,1:x=W |
98 | | - Com=Rf Rf |
99 | | - Orig=DpDatadWTT PosWWTT RfeTP PodRW RfePT |
100 | | - "DpDatadWTT PosWWTT RfeTP PodRW RfePT" |
| 6 | + Prefetch=0:x=F,0:y=T,1:y=F,1:x=T |
| 7 | + Com=Fr Fr |
| 8 | + Orig=PodWR Fre PodWR Fre |
101 | 9 | { |
102 | | - 0:X1=x:green; 0:X3=y:red; 0:X5=y:green; 0:X6=y:blue; |
103 | | - 1:X1=x:green; 1:X6=y:blue; |
| 10 | + 0:X1=x; 0:X2=y; |
| 11 | + 1:X2=y; 1:X1=x; |
104 | 12 | } |
105 | | - P0 | P1 ; |
106 | | - MOV X0,X1 | L00: LDR W0,[X6] ; |
107 | | - LDG X0,[X1] | MOV W2,#1 ; |
108 | | - EOR X2,X0,X0 | STR W2,[X1] ; |
109 | | - ADD X4,X3,W2,SXTW | ; |
110 | | - STG X4,[X5] | ; |
111 | | - STG X6,[X3] | ; |
112 | | - |
113 | | - exists ([tag(y)]=:blue /\ 0:X0=x:green /\ 1:X0=0 /\ not (fault(P1:L00,y))) |
114 | | -ifetch |
115 | | - $ diyone7 -arch AArch64 -variant ifetch CacheSyncStrongIsbdWRPI FreIP PodWR Fre |
116 | | - AArch64 SB+cachesyncstrongisbpi+po |
117 | | - Variant=ifetch |
| 13 | + P0 | P1 ; |
| 14 | + MOV W0,#1 | MOV W0,#1 ; |
| 15 | + STR W0,[X1] | STR W0,[X2] ; |
| 16 | + LDR W3,[X2] | LDR W3,[X1] ; |
| 17 | + exists (0:X3=0 /\ 1:X3=0) |
| 18 | +valid-cycle-with-duplicate-annotations |
| 19 | + $ diyone7 -arch AArch64 PodWR A A Fre PodWR Fre |
| 20 | + AArch64 SB+po+popa |
| 21 | + "PodWRPA FreAP PodWR Fre" |
118 | 22 | Generator=diyone7 (version 7.58+1) |
| 23 | + Prefetch=0:x=F,0:y=T,1:y=F,1:x=T |
119 | 24 | Com=Fr Fr |
120 | | - Orig=CacheSyncStrongIsbdWRPI FreIP PodWR Fre |
121 | | - "CacheSyncStrongIsbdWRPI FreIP PodWR Fre" |
| 25 | + Orig=PodWRPA FreAP PodWR Fre |
122 | 26 | { |
123 | | - 0:X1=x; 0:X3=P0:Lself00; |
124 | | - 1:X0=instr:"NOP"; 1:X1=x; 1:X3=P0:Lself00; |
| 27 | + 0:X1=x; 0:X2=y; |
| 28 | + 1:X2=y; 1:X1=x; |
125 | 29 | } |
126 | | - P0 | P1 ; |
127 | | - MOV W0,#1 | STR W0,[X3] ; |
128 | | - STR W0,[X1] | LDR W2,[X1] ; |
129 | | - DC CIVAC,X3 | ; |
130 | | - DSB ISH | ; |
131 | | - IC IVAU,X3 | ; |
132 | | - DSB ISH | ; |
133 | | - ISB | ; |
134 | | - Lself00: B .+12 | ; |
135 | | - MOV W2,#2 | ; |
136 | | - B .+8 | ; |
137 | | - MOV W2,#1 | ; |
138 | | - |
139 | | - exists (0:X2=1 /\ 1:X2=0) |
140 | | -base-int64-and-array |
141 | | - $ diyone7 -arch AArch64 -type int64_t X PodWW Coe PodWR Pa Fre |
142 | | - AArch64 R+poxp+poppa |
| 30 | + P0 | P1 ; |
| 31 | + MOV W0,#1 | MOV W0,#1 ; |
| 32 | + STR W0,[X1] | STR W0,[X2] ; |
| 33 | + LDAR W3,[X2] | LDR W3,[X1] ; |
| 34 | + exists (0:X3=0 /\ 1:X3=0) |
| 35 | + $ diyone7 -arch AArch64 PodWR A A A Fre PodWR Fre |
| 36 | + AArch64 SB+po+popa |
| 37 | + "PodWRPA FreAP PodWR Fre" |
143 | 38 | Generator=diyone7 (version 7.58+1) |
144 | | - Prefetch=0:x=F,0:y=W,1:y=F,1:x=T |
145 | | - Com=Co Fr |
146 | | - Orig=PodWWXP Coe PodWRPPa FrePaX |
147 | | - "PodWWXP Coe PodWRPPa FrePaX" |
| 39 | + Prefetch=0:x=F,0:y=T,1:y=F,1:x=T |
| 40 | + Com=Fr Fr |
| 41 | + Orig=PodWRPA FreAP PodWR Fre |
148 | 42 | { |
149 | | - int64_t x[2]={0,0}; |
150 | | - int64_t y=0; |
151 | | - 0:X0=x; int64_t 0:X2=0; 0:X5=y; |
152 | | - 1:X0=x; int64_t 1:X2=0; 1:X5=y; |
153 | | - } |
154 | | - P0 | P1 ; |
155 | | - MOV X1,#1 | MOV X1,#2 ; |
156 | | - Loop00: | STR X1,[X5] ; |
157 | | - LDXR X2,[X0] | LDP X2,X3,[X0] ; |
158 | | - STXR W3,X1,[X0] | ADD X2,X2,X3 ; |
159 | | - CBNZ X3,Loop00 | ; |
160 | | - MOV X4,#1 | ; |
161 | | - STR X4,[X5] | ; |
162 | | - |
163 | | - exists (x={1,0} /\ [y]=2 /\ 0:X2=0 /\ 1:X2=0) |
164 | | -C-exists |
165 | | - $ diyone7 -arch C PodWW Coe PodWR Fre |
166 | | - Warning: optimised conditions are not supported by C arch |
167 | | - C R |
168 | | - "PodWW Coe PodWR Fre" |
169 | | - Generator=diyone7 (version 7.58+1) |
170 | | - Prefetch=0:x=F,0:y=W,1:y=F,1:x=T |
171 | | - Com=Co Fr |
172 | | - Orig=PodWW Coe PodWR Fre |
173 | | - |
174 | | - {} |
175 | | - |
176 | | - P0 (volatile int* y,volatile int* x) { |
177 | | - *x = 1; |
178 | | - *y = 1; |
179 | | - } |
180 | | - |
181 | | - P1 (volatile int* y,volatile int* x) { |
182 | | - *y = 2; |
183 | | - int r0 = *x; |
184 | | - } |
185 | | - |
186 | | - exists ([y]=2 /\ 1:r0=0) |
187 | | -C-neg-exists |
188 | | - $ diyone7 -arch C FencedWW Rfe DpAddrdW Coe |
189 | | - Warning: optimised conditions are not supported by C arch |
190 | | - C S+fencesc+addr |
191 | | - "FenceScdWW Rfe DpAddrdW Coe" |
192 | | - Generator=diyone7 (version 7.58+1) |
193 | | - Prefetch=0:x=F,0:y=W,1:y=F,1:x=W |
194 | | - Com=Rf Co |
195 | | - Orig=FenceScdWW Rfe DpAddrdW Coe |
196 | | - |
197 | | - {} |
198 | | - |
199 | | - P0 (volatile int* y,volatile int* x) { |
200 | | - *x = 2; |
201 | | - atomic_thread_fence(memory_order_seq_cst); |
202 | | - *y = 1; |
203 | | - } |
204 | | - |
205 | | - P1 (volatile int* y,volatile int* x) { |
206 | | - int r0 = *y; |
207 | | - *(x + (r0 & 128)) = 1; |
208 | | - } |
209 | | - |
210 | | - exists ([x]=2 /\ 1:r0=1) |
211 | | -C-forall |
212 | | - $ diyone7 -arch C FencedWW Sc Rfe Acq PodRW Coe -cond unicond |
213 | | - Warning: optimised conditions are not supported by C arch |
214 | | - C S+fencescnasc+poacqna |
215 | | - "FenceScdWWNaSc RfeScAcq PodRWAcqNa Coe" |
216 | | - Generator=diyone7 (version 7.58+1) |
217 | | - Prefetch=0:x=F,0:y=W,1:y=F,1:x=W |
218 | | - Com=Rf Co |
219 | | - Orig=FenceScdWWNaSc RfeScAcq PodRWAcqNa Coe |
220 | | - |
221 | | - {} |
222 | | - |
223 | | - P0 (atomic_int* y,volatile int* x) { |
224 | | - *x = 2; |
225 | | - atomic_thread_fence(memory_order_seq_cst); |
226 | | - atomic_store_explicit(y,1,memory_order_seq_cst); |
227 | | - } |
228 | | - |
229 | | - P1 (atomic_int* y,volatile int* x) { |
230 | | - int r0 = atomic_load_explicit(y,memory_order_acquire); |
231 | | - *x = 1; |
| 43 | + 0:X1=x; 0:X2=y; |
| 44 | + 1:X2=y; 1:X1=x; |
232 | 45 | } |
233 | | - |
234 | | - forall (true /\ ([y]=1 /\ ([x]=2 /\ (1:r0=1 \/ 1:r0=0) \/ [x]=1 /\ (1:r0=1 \/ 1:r0=0)))) |
| 46 | + P0 | P1 ; |
| 47 | + MOV W0,#1 | MOV W0,#1 ; |
| 48 | + STR W0,[X1] | STR W0,[X2] ; |
| 49 | + LDAR W3,[X2] | LDR W3,[X1] ; |
| 50 | + exists (0:X3=0 /\ 1:X3=0) |
| 51 | +invalid-cycle-with-incorrect-annotations |
| 52 | + $ diyone7 -arch AArch64 PodWR A L Fre PodWR Fre |
| 53 | + diyone7: Fatal error: Annotations mismatch between A L. |
| 54 | + [2] |
| 55 | + $ diyone7 -arch AArch64 PodWR L A Fre PodWR Fre |
| 56 | + diyone7: Fatal error: Annotations mismatch between L A. |
| 57 | + [2] |
| 58 | + $ diyone7 -arch AArch64 PodWR L Fre PodWR Fre |
| 59 | + diyone7: Fatal error: Test SB+po+popl [PodWRPL FreLP PodWR Fre] failed: |
| 60 | + annotation mismatch on edge FreLP, annotation 'L' on R |
| 61 | + [2] |
| 62 | + $ diyone7 -arch AArch64 PodWR A L A Fre PodWR Fre |
| 63 | + diyone7: Fatal error: Invalid extra annotation L |
| 64 | + [2] |
0 commit comments