~ubuntu-branches/ubuntu/wily/acl2/wily

« back to all changes in this revision

Viewing changes to books/workshops/2004/manolios-srinivasan/support/Benchmark-Problems/5s.lisp

  • Committer: Package Import Robot
  • Author(s): Camm Maguire
  • Date: 2015-01-16 10:35:45 UTC
  • mfrom: (3.3.26 sid)
  • Revision ID: package-import@ubuntu.com-20150116103545-prehe9thgo79o8w8
Tags: 7.0-1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
(in-package "ACL2")
 
2
(include-book "../Supporting-Books/seq")
 
3
(include-book "../Supporting-Books/meta")
 
4
(include-book "../Supporting-Books/det-macros")
 
5
(include-book "../Supporting-Books/records")
 
6
 
 
7
:set-ignore-ok t
 
8
:set-irrelevant-formals-ok t
 
9
 
 
10
(defun equalb (a b) (equal a b))
 
11
 
 
12
(defun nequal (a b) (not (equal a b))) (defun add-1 (a) (+ a 1))
 
13
 
 
14
(defun sub-1 (a) (- a 1))
 
15
  
 
16
(encapsulate ((rf0 (x1) t))
 
17
     (local (defun rf0 (x1) (declare (ignore x1)) 1))
 
18
     (defthm rf0-type (integerp (rf0 x1))))
 
19
 
 
20
(encapsulate ((imem0 (x1) t))
 
21
     (local (defun imem0 (x1) (declare (ignore x1)) 1))
 
22
     (defthm imem0-type (integerp (imem0 x1))))
 
23
 
 
24
(encapsulate ((src1 (x1) t))
 
25
     (local (defun src1 (x1) (declare (ignore x1)) 1))
 
26
     (defthm src1-type (integerp (src1 x1))))
 
27
 
 
28
(encapsulate ((src2 (x1) t))
 
29
     (local (defun src2 (x1) (declare (ignore x1)) 1))
 
30
     (defthm src2-type (integerp (src2 x1))))
 
31
 
 
32
(encapsulate ((opcode (x1) t))
 
33
     (local (defun opcode (x1) (declare (ignore x1)) 1))
 
34
     (defthm op-type (integerp (opcode x1))))
 
35
 
 
36
(encapsulate ((dest (x1) t))
 
37
     (local (defun dest (x1) (declare (ignore x1)) 1))
 
38
     (defthm dest-type (integerp (dest x1))))
 
39
 
 
40
(encapsulate ((alu (x3 x2 x1) t))
 
41
     (local (defun alu (x3 x2 x1)
 
42
              (declare (ignore x3) (ignore x2) (ignore x1))
 
43
              1))
 
44
     (defthm alu-type (integerp (alu x3 x2 x1))))
 
45
 
 
46
(encapsulate ((getregwrite (x1) t))
 
47
     (local (defun getregwrite (x1) (declare (ignore x1)) nil))
 
48
     (defthm getregwrite-type (booleanp (getregwrite x1))))
 
49
 
 
50
(encapsulate ((getmemtoreg (x1) t))
 
51
     (local (defun getmemtoreg (x1) (declare (ignore x1)) nil))
 
52
     (defthm getmemtoreg-type (booleanp (getmemtoreg x1))))
 
53
 
 
54
(encapsulate ((getuseimm (x1) t))
 
55
     (local (defun getuseimm (x1) (declare (ignore x1)) nil))
 
56
     (defthm getuseimm-type (booleanp (getuseimm x1))))
 
57
 
 
58
(encapsulate ((getimm (x1) t))
 
59
     (local (defun getimm (x1) (declare (ignore x1)) 1))
 
60
     (defthm getimm-type (integerp (getimm x1))))
 
61
 
 
62
(encapsulate ((getmemwrite (x1) t))
 
63
     (local (defun getmemwrite (x1) (declare (ignore x1)) nil))
 
64
     (defthm getmemwrite-type (booleanp (getmemwrite x1))))
 
65
 
 
66
(encapsulate ((writerf (x3 x2 x1) t))
 
67
     (local (defun writerf (x3 x2 x1)
 
68
              (declare (ignore x3) (ignore x2) (ignore x1))
 
69
              1))
 
70
     (defthm writerf-type (integerp (writerf x3 x2 x1))))
 
71
 
 
72
(encapsulate ((readrf (x2 x1) t))
 
73
     (local (defun readrf (x2 x1) (declare (ignore x2) (ignore x1)) 1))
 
74
     (defthm readrf-type (integerp (readrf x2 x1))))
 
75
 
 
76
(encapsulate ((writedmem (x3 x2 x1) t))
 
77
     (local (defun writedmem (x3 x2 x1)
 
78
              (declare (ignore x3) (ignore x2) (ignore x1))
 
79
              1))
 
80
     (defthm writedmem-type (integerp (writedmem x3 x2 x1))))
 
81
 
 
82
(encapsulate ((readdmem (x2 x1) t))
 
83
     (local (defun readdmem (x2 x1)
 
84
              (declare (ignore x2) (ignore x1))
 
85
              1))
 
86
     (defthm readdmem-type (integerp (readdmem x2 x1))))
 
87
 
 
88
(defun read-pimem_a (a pimem)
 
89
   (declare (xargs :measure (acl2-count pimem)))
 
90
   (if (endp pimem) (imem0 a)
 
91
       (if (g 0 (car pimem)) (imem0 a) (read-pimem_a a (cdr pimem)))))
 
92
 
 
93
(defun read-prf_a (a prf)
 
94
   (declare (xargs :measure (acl2-count prf)))
 
95
   (if (endp prf) (rf0 a)
 
96
       (if (g 0 (car prf)) (rf0 a)
 
97
           (cond
 
98
             ((g 1 (car prf)) (rf0 a))
 
99
             ((g 2 (car prf)) (read-prf_a a (cdr prf)))
 
100
             ((and (and (g 3 (car prf)) (equal a (g 4 (car prf))))
 
101
                   (g 5 (car prf)))
 
102
              (g 6 (car prf)))
 
103
             (t (read-prf_a a (cdr prf)))))))
 
104
 
 
105
(defun read-simem_a (a simem)
 
106
   (declare (xargs :measure (acl2-count simem)))
 
107
   (if (endp simem) (imem0 a)
 
108
       (if (g 0 (car simem)) (imem0 a) (read-simem_a a (cdr simem)))))
 
109
 
 
110
(defun read-srf_a (a srf)
 
111
   (declare (xargs :measure (acl2-count srf)))
 
112
   (if (endp srf) (rf0 a)
 
113
       (if (g 0 (car srf)) (rf0 a)
 
114
           (cond
 
115
             ((g 1 (car srf)) (rf0 a))
 
116
             ((g 2 (car srf)) (read-prf_a a (g 3 (car srf))))
 
117
             ((and (and (g 4 (car srf))
 
118
                        (equal a (dest (g 5 (car srf)))))
 
119
                   (g 6 (car srf)))
 
120
              (g 7 (car srf)))
 
121
             (t (read-srf_a a (cdr srf)))))))
 
122
 
 
123
(defun u-state_a (impl spec) (seq nil 'impl impl 'spec spec))
 
124
 
 
125
(defun impl-state_a
 
126
        (pimem ppc prf fdwrt fdinst fdppc deppc desrc1 desrc2 dearg1
 
127
               dearg2 dedest deop deimm deuseimm deregwrite dememwrite
 
128
               dememtoreg dewrt emppc emarg2 emresult emdest emwrt
 
129
               emregwrite emmemwrite emmemtoreg pdmemhist_1 pdmem mwval
 
130
               mwppc mwdest mwwrt mwregwrite)
 
131
   (seq nil 'pimem pimem 'ppc ppc 'prf prf 'fdwrt fdwrt 'fdinst fdinst
 
132
        'fdppc fdppc 'deppc deppc 'desrc1 desrc1 'desrc2 desrc2 'dearg1
 
133
        dearg1 'dearg2 dearg2 'dedest dedest 'deop deop 'deimm deimm
 
134
        'deuseimm deuseimm 'deregwrite deregwrite 'dememwrite
 
135
        dememwrite 'dememtoreg dememtoreg 'dewrt dewrt 'emppc emppc
 
136
        'emarg2 emarg2 'emresult emresult 'emdest emdest 'emwrt emwrt
 
137
        'emregwrite emregwrite 'emmemwrite emmemwrite 'emmemtoreg
 
138
        emmemtoreg 'pdmemhist_1 pdmemhist_1 'pdmem pdmem 'mwval mwval
 
139
        'mwppc mwppc 'mwdest mwdest 'mwwrt mwwrt 'mwregwrite
 
140
        mwregwrite))
 
141
  
 
142
(defun initpimem_a (pimem) (cons (s 0 t (s 1 nil nil)) pimem))
 
143
 
 
144
(defun nextpimem_a (pimem) (cons (s 0 nil (s 1 nil nil)) pimem))
 
145
 
 
146
(defun initppc_a (pc0) pc0)
 
147
 
 
148
(defun nextppc_a (initi pc0 commit_impl commit_pc stall ppc)
 
149
   (cond (initi pc0) (commit_impl commit_pc) (stall ppc) (t (add-1 ppc))))
 
150
 
 
151
(defun initprf_a (prf) (cons (s 0 t (s 1 nil nil)) prf))
 
152
 
 
153
(defun nextprf_a (prf initi commit_impl mwwrt mwdest mwregwrite mwval)
 
154
   (cons (s 0 nil
 
155
            (s 1 initi
 
156
               (s 2 commit_impl
 
157
                  (s 3 mwwrt
 
158
                     (s 4 mwdest
 
159
                        (s 5 mwregwrite (s 6 mwval nil)))))))
 
160
         prf))
 
161
 
 
162
 
 
163
(defun initfdwrt_a () nil)
 
164
 
 
165
(defun nextfdwrt_a (initi commit_impl stall fdwrt)
 
166
   (cond (initi nil) (commit_impl nil) (stall fdwrt) (t t)))
 
167
 
 
168
(defun initfdinst_a (fdinst0) fdinst0)
 
169
 
 
170
(defun nextfdinst_a (initi fdinst0 stall fdinst inst)
 
171
   (cond (initi fdinst0) (stall fdinst) (t inst)))
 
172
 
 
173
(defun initfdppc_a (fdppc0) fdppc0)
 
174
 
 
175
(defun nextfdppc_a (initi fdppc0 stall fdppc ppc)
 
176
   (cond (initi fdppc0) (stall fdppc) (t ppc)))
 
177
 
 
178
(defun initdeppc_a (deppc0) deppc0)
 
179
 
 
180
(defun nextdeppc_a (initi deppc0 fdppc)
 
181
   (cond (initi deppc0) (t fdppc)))
 
182
 
 
183
(defun initdesrc1_a (desrc10) desrc10)
 
184
 
 
185
(defun nextdesrc1_a (initi desrc10 if_id_src1)
 
186
   (cond (initi desrc10) (t if_id_src1)))
 
187
 
 
188
(defun initdesrc2_a (desrc20) desrc20)
 
189
 
 
190
(defun nextdesrc2_a (initi desrc20 if_id_src2)
 
191
   (cond (initi desrc20) (t if_id_src2)))
 
192
 
 
193
(defun initdearg1_a (a1) a1)
 
194
 
 
195
(defun nextdearg1_a
 
196
        (initi a1 if_id_src1 prf commit_impl mwwrt mwdest mwregwrite
 
197
               mwval)
 
198
   (cond
 
199
     (initi a1)
 
200
     (t (read-prf_a if_id_src1
 
201
            (nextprf_a prf initi commit_impl mwwrt mwdest mwregwrite
 
202
                mwval)))))
 
203
 
 
204
(defun initdearg2_a (a2) a2)
 
205
 
 
206
(defun nextdearg2_a
 
207
        (initi a2 if_id_src2 prf commit_impl mwwrt mwdest mwregwrite
 
208
               mwval)
 
209
   (cond
 
210
     (initi a2)
 
211
     (t (read-prf_a if_id_src2
 
212
            (nextprf_a prf initi commit_impl mwwrt mwdest mwregwrite
 
213
                mwval)))))
 
214
 
 
215
(defun initdedest_a (dedest0) dedest0)
 
216
 
 
217
(defun nextdedest_a (initi dedest0 fdinst)
 
218
   (cond (initi dedest0) (t (dest fdinst))))
 
219
 
 
220
(defun initdeop_a (deop0) deop0)
 
221
 
 
222
(defun nextdeop_a (initi deop0 fdinst)
 
223
   (cond (initi deop0) (t (opcode fdinst))))
 
224
 
 
225
(defun initdeimm_a (deimm0) deimm0)
 
226
 
 
227
(defun nextdeimm_a (initi deimm0 fdinst)
 
228
   (cond (initi deimm0) (t (getimm fdinst))))
 
229
 
 
230
(defun initdeuseimm_a (deuseimm0) deuseimm0)
 
231
 
 
232
(defun nextdeuseimm_a (initi deuseimm0 fdinst)
 
233
   (cond (initi deuseimm0) (t (getuseimm fdinst))))
 
234
 
 
235
(defun initderegwrite_a (deregwrite0) deregwrite0)
 
236
 
 
237
(defun nextderegwrite_a (initi deregwrite0 id_regwrite)
 
238
   (cond (initi deregwrite0) (t id_regwrite)))
 
239
 
 
240
(defun initdememwrite_a (dememwrite0) dememwrite0)
 
241
 
 
242
(defun nextdememwrite_a (initi dememwrite0 id_memwrite)
 
243
   (cond (initi dememwrite0) (t id_memwrite)))
 
244
 
 
245
(defun initdememtoreg_a (dememtoreg0) dememtoreg0)
 
246
 
 
247
(defun nextdememtoreg_a (initi dememtoreg0 fdinst)
 
248
   (cond (initi dememtoreg0) (t (getmemtoreg fdinst))))
 
249
 
 
250
(defun initdewrt_a () nil)
 
251
 
 
252
(defun nextdewrt_a (initi commit_impl stall fdwrt)
 
253
   (cond (initi nil) (commit_impl nil) (t (and (not stall) fdwrt))))
 
254
 
 
255
(defun initemppc_a (emppc0) emppc0)
 
256
 
 
257
(defun nextemppc_a (initi emppc0 deppc)
 
258
   (cond (initi emppc0) (t deppc)))
 
259
 
 
260
(defun initemarg2_a (emarg20) emarg20)
 
261
 
 
262
(defun nextemarg2_a (initi emarg20 dearg2)
 
263
   (cond (initi emarg20) (t dearg2)))
 
264
 
 
265
(defun initemresult_a (emresult0) emresult0)
 
266
 
 
267
(defun nextemresult_a (initi emresult0 result)
 
268
   (cond (initi emresult0) (t result)))
 
269
 
 
270
(defun initemdest_a (emdest0) emdest0)
 
271
 
 
272
(defun nextemdest_a (initi emdest0 dedest)
 
273
   (cond (initi emdest0) (t dedest)))
 
274
 
 
275
(defun initemwrt_a () nil)
 
276
 
 
277
(defun nextemwrt_a (initi commit_impl dewrt)
 
278
   (cond (initi nil) (commit_impl nil) (t dewrt)))
 
279
 
 
280
(defun initemregwrite_a (emregwrite0) emregwrite0)
 
281
 
 
282
(defun nextemregwrite_a (initi emregwrite0 deregwrite)
 
283
   (cond (initi emregwrite0) (t deregwrite)))
 
284
 
 
285
(defun initemmemwrite_a (emmemwrite0) emmemwrite0)
 
286
 
 
287
(defun nextemmemwrite_a (initi emmemwrite0 dememwrite)
 
288
   (cond (initi emmemwrite0) (t dememwrite)))
 
289
 
 
290
(defun initemmemtoreg_a (emmemtoreg0) emmemtoreg0)
 
291
 
 
292
(defun nextemmemtoreg_a (initi emmemtoreg0 dememtoreg)
 
293
   (cond (initi emmemtoreg0) (t dememtoreg)))
 
294
 
 
295
(defun initpdmemhist_1_a (dmem0) dmem0)
 
296
 
 
297
(defun nextpdmemhist_1_a (initi dmem0 pdmem)
 
298
   (cond (initi dmem0) (t pdmem)))
 
299
 
 
300
(defun initpdmem_a (dmem0) dmem0)
 
301
 
 
302
(defun nextpdmem_a
 
303
        (initi dmem0 commit_impl pdmemhist_1 emwrt emmemwrite emarg2
 
304
               emresult pdmem)
 
305
   (cond
 
306
     (initi dmem0)
 
307
     (commit_impl pdmemhist_1)
 
308
     ((and emwrt emmemwrite) (writedmem emarg2 emresult pdmem))
 
309
     (t pdmem)))
 
310
 
 
311
(defun initmwval_a (mwval0) mwval0)
 
312
 
 
313
(defun nextmwval_a (initi mwval0 emmemtoreg readdata emresult)
 
314
   (cond (initi mwval0) (emmemtoreg readdata) (t emresult)))
 
315
 
 
316
(defun initmwppc_a (mwppc0) mwppc0)
 
317
 
 
318
(defun nextmwppc_a (initi mwppc0 emppc)
 
319
   (cond (initi mwppc0) (t emppc)))
 
320
 
 
321
(defun initmwdest_a (mwdest0) mwdest0)
 
322
 
 
323
(defun nextmwdest_a (initi mwdest0 emdest)
 
324
   (cond (initi mwdest0) (t emdest)))
 
325
 
 
326
(defun initmwwrt_a () nil)
 
327
 
 
328
(defun nextmwwrt_a (initi commit_impl emwrt)
 
329
   (cond (initi nil) (commit_impl nil) (t emwrt)))
 
330
 
 
331
(defun initmwregwrite_a (mwregwrite0) mwregwrite0)
 
332
 
 
333
(defun nextmwregwrite_a (initi mwregwrite0 emregwrite)
 
334
   (cond (initi mwregwrite0) (t emregwrite)))
 
335
 
 
336
(defun impl-simulate_a
 
337
        (impl initi pc0 commit_impl commit_pc fdinst0 fdppc0 deppc0
 
338
              desrc10 desrc20 a1 a2 dedest0 deop0 deimm0 deuseimm0
 
339
              deregwrite0 dememwrite0 dememtoreg0 emppc0 emarg20
 
340
              emresult0 emdest0 emregwrite0 emmemwrite0 emmemtoreg0
 
341
              dmem0 mwval0 mwppc0 mwdest0 mwregwrite0)
 
342
   (let  ((pimem (g 'pimem impl)) (ppc (g 'ppc impl))
 
343
          (prf (g 'prf impl)) (fdwrt (g 'fdwrt impl))
 
344
          (fdinst (g 'fdinst impl)) (fdppc (g 'fdppc impl))
 
345
          (deppc (g 'deppc impl)) (desrc1 (g 'desrc1 impl))
 
346
          (desrc2 (g 'desrc2 impl)) (dearg1 (g 'dearg1 impl))
 
347
          (dearg2 (g 'dearg2 impl)) (dedest (g 'dedest impl))
 
348
          (deop (g 'deop impl)) (deimm (g 'deimm impl))
 
349
          (deuseimm (g 'deuseimm impl))
 
350
          (deregwrite (g 'deregwrite impl))
 
351
          (dememwrite (g 'dememwrite impl))
 
352
          (dememtoreg (g 'dememtoreg impl)) (dewrt (g 'dewrt impl))
 
353
          (emppc (g 'emppc impl)) (emarg2 (g 'emarg2 impl))
 
354
          (emresult (g 'emresult impl)) (emdest (g 'emdest impl))
 
355
          (emwrt (g 'emwrt impl)) (emregwrite (g 'emregwrite impl))
 
356
          (emmemwrite (g 'emmemwrite impl))
 
357
          (emmemtoreg (g 'emmemtoreg impl))
 
358
          (pdmemhist_1 (g 'pdmemhist_1 impl)) (pdmem (g 'pdmem impl))
 
359
          (mwval (g 'mwval impl)) (mwppc (g 'mwppc impl))
 
360
          (mwdest (g 'mwdest impl)) (mwwrt (g 'mwwrt impl))
 
361
          (mwregwrite (g 'mwregwrite impl)))
 
362
     (let* ((inst (read-pimem_a ppc pimem)) (if_id_src1 (src1 fdinst))
 
363
            (if_id_src2 (src2 fdinst))
 
364
            (stall (and (and deregwrite dewrt)
 
365
                        (or (equal if_id_src1 dedest)
 
366
                            (equal if_id_src2 dedest))))
 
367
            (id_regwrite (getregwrite fdinst))
 
368
            (id_memwrite (getmemwrite fdinst))
 
369
            (ex_wb_equal_src1
 
370
                (and (and mwwrt (equal desrc1 mwdest)) mwregwrite))
 
371
            (ex_wb_equal_src2
 
372
                (and (and mwwrt (equal desrc2 mwdest)) mwregwrite))
 
373
            (ex_wb_fwd_src1 (cond (ex_wb_equal_src1 mwval) (t dearg1)))
 
374
            (ex_wb_fwd_src2 (cond (ex_wb_equal_src2 mwval) (t dearg2)))
 
375
            (ex_data2 (cond (deuseimm deimm) (t ex_wb_fwd_src2)))
 
376
            (result (alu deop ex_wb_fwd_src1 ex_data2))
 
377
            (readdata (readdmem emresult pdmem)))
 
378
       (impl-state_a (nextpimem_a pimem)
 
379
           (nextppc_a initi pc0 commit_impl commit_pc stall ppc)
 
380
           (nextprf_a prf initi commit_impl mwwrt mwdest mwregwrite
 
381
               mwval)
 
382
           (nextfdwrt_a initi commit_impl stall fdwrt)
 
383
           (nextfdinst_a initi fdinst0 stall fdinst inst)
 
384
           (nextfdppc_a initi fdppc0 stall fdppc ppc)
 
385
           (nextdeppc_a initi deppc0 fdppc)
 
386
           (nextdesrc1_a initi desrc10 if_id_src1)
 
387
           (nextdesrc2_a initi desrc20 if_id_src2)
 
388
           (nextdearg1_a initi a1 if_id_src1 prf commit_impl mwwrt
 
389
               mwdest mwregwrite mwval)
 
390
           (nextdearg2_a initi a2 if_id_src2 prf commit_impl mwwrt
 
391
               mwdest mwregwrite mwval)
 
392
           (nextdedest_a initi dedest0 fdinst)
 
393
           (nextdeop_a initi deop0 fdinst)
 
394
           (nextdeimm_a initi deimm0 fdinst)
 
395
           (nextdeuseimm_a initi deuseimm0 fdinst)
 
396
           (nextderegwrite_a initi deregwrite0 id_regwrite)
 
397
           (nextdememwrite_a initi dememwrite0 id_memwrite)
 
398
           (nextdememtoreg_a initi dememtoreg0 fdinst)
 
399
           (nextdewrt_a initi commit_impl stall fdwrt)
 
400
           (nextemppc_a initi emppc0 deppc)
 
401
           (nextemarg2_a initi emarg20 dearg2)
 
402
           (nextemresult_a initi emresult0 result)
 
403
           (nextemdest_a initi emdest0 dedest)
 
404
           (nextemwrt_a initi commit_impl dewrt)
 
405
           (nextemregwrite_a initi emregwrite0 deregwrite)
 
406
           (nextemmemwrite_a initi emmemwrite0 dememwrite)
 
407
           (nextemmemtoreg_a initi emmemtoreg0 dememtoreg)
 
408
           (nextpdmemhist_1_a initi dmem0 pdmem)
 
409
           (nextpdmem_a initi dmem0 commit_impl pdmemhist_1 emwrt
 
410
               emmemwrite emarg2 emresult pdmem)
 
411
           (nextmwval_a initi mwval0 emmemtoreg readdata emresult)
 
412
           (nextmwppc_a initi mwppc0 emppc)
 
413
           (nextmwdest_a initi mwdest0 emdest)
 
414
           (nextmwwrt_a initi commit_impl emwrt)
 
415
           (nextmwregwrite_a initi mwregwrite0 emregwrite)))))
 
416
 
 
417
(defun impl-initialize_a
 
418
        (impl pc0 fdinst0 fdppc0 deppc0 desrc10 desrc20 a1 a2 dedest0
 
419
              deop0 deimm0 deuseimm0 deregwrite0 dememwrite0
 
420
              dememtoreg0 emppc0 emarg20 emresult0 emdest0 emregwrite0
 
421
              emmemwrite0 emmemtoreg0 dmem0 mwval0 mwppc0 mwdest0
 
422
              mwregwrite0)
 
423
   (let  ((pimem (g 'pimem impl)) (ppc (g 'ppc impl))
 
424
          (prf (g 'prf impl)) (fdwrt (g 'fdwrt impl))
 
425
          (fdinst (g 'fdinst impl)) (fdppc (g 'fdppc impl))
 
426
          (deppc (g 'deppc impl)) (desrc1 (g 'desrc1 impl))
 
427
          (desrc2 (g 'desrc2 impl)) (dearg1 (g 'dearg1 impl))
 
428
          (dearg2 (g 'dearg2 impl)) (dedest (g 'dedest impl))
 
429
          (deop (g 'deop impl)) (deimm (g 'deimm impl))
 
430
          (deuseimm (g 'deuseimm impl))
 
431
          (deregwrite (g 'deregwrite impl))
 
432
          (dememwrite (g 'dememwrite impl))
 
433
          (dememtoreg (g 'dememtoreg impl)) (dewrt (g 'dewrt impl))
 
434
          (emppc (g 'emppc impl)) (emarg2 (g 'emarg2 impl))
 
435
          (emresult (g 'emresult impl)) (emdest (g 'emdest impl))
 
436
          (emwrt (g 'emwrt impl)) (emregwrite (g 'emregwrite impl))
 
437
          (emmemwrite (g 'emmemwrite impl))
 
438
          (emmemtoreg (g 'emmemtoreg impl))
 
439
          (pdmemhist_1 (g 'pdmemhist_1 impl)) (pdmem (g 'pdmem impl))
 
440
          (mwval (g 'mwval impl)) (mwppc (g 'mwppc impl))
 
441
          (mwdest (g 'mwdest impl)) (mwwrt (g 'mwwrt impl))
 
442
          (mwregwrite (g 'mwregwrite impl)))
 
443
     (let* ((inst (read-pimem_a ppc pimem)) (if_id_src1 (src1 fdinst))
 
444
            (if_id_src2 (src2 fdinst))
 
445
            (stall (and (and deregwrite dewrt)
 
446
                        (or (equal if_id_src1 dedest)
 
447
                            (equal if_id_src2 dedest))))
 
448
            (id_regwrite (getregwrite fdinst))
 
449
            (id_memwrite (getmemwrite fdinst))
 
450
            (ex_wb_equal_src1
 
451
                (and (and mwwrt (equal desrc1 mwdest)) mwregwrite))
 
452
            (ex_wb_equal_src2
 
453
                (and (and mwwrt (equal desrc2 mwdest)) mwregwrite))
 
454
            (ex_wb_fwd_src1 (cond (ex_wb_equal_src1 mwval) (t dearg1)))
 
455
            (ex_wb_fwd_src2 (cond (ex_wb_equal_src2 mwval) (t dearg2)))
 
456
            (ex_data2 (cond (deuseimm deimm) (t ex_wb_fwd_src2)))
 
457
            (result (alu deop ex_wb_fwd_src1 ex_data2))
 
458
            (readdata (readdmem emresult pdmem)))
 
459
       (impl-state_a (initpimem_a pimem) (initppc_a pc0)
 
460
           (initprf_a prf) (initfdwrt_a) (initfdinst_a fdinst0)
 
461
           (initfdppc_a fdppc0) (initdeppc_a deppc0)
 
462
           (initdesrc1_a desrc10) (initdesrc2_a desrc20)
 
463
           (initdearg1_a a1) (initdearg2_a a2) (initdedest_a dedest0)
 
464
           (initdeop_a deop0) (initdeimm_a deimm0)
 
465
           (initdeuseimm_a deuseimm0) (initderegwrite_a deregwrite0)
 
466
           (initdememwrite_a dememwrite0)
 
467
           (initdememtoreg_a dememtoreg0) (initdewrt_a)
 
468
           (initemppc_a emppc0) (initemarg2_a emarg20)
 
469
           (initemresult_a emresult0) (initemdest_a emdest0)
 
470
           (initemwrt_a) (initemregwrite_a emregwrite0)
 
471
           (initemmemwrite_a emmemwrite0)
 
472
           (initemmemtoreg_a emmemtoreg0) (initpdmemhist_1_a dmem0)
 
473
           (initpdmem_a dmem0) (initmwval_a mwval0)
 
474
           (initmwppc_a mwppc0) (initmwdest_a mwdest0) (initmwwrt_a)
 
475
           (initmwregwrite_a mwregwrite0)))))
 
476
 
 
477
(defun spec-state_a (simem spc srf sdmem)
 
478
   (seq nil 'simem simem 'spc spc 'srf srf 'sdmem sdmem))
 
479
 
 
480
(defun initsimem_a (simem) (cons (s 0 t (s 1 nil nil)) simem))
 
481
 
 
482
(defun nextsimem_a (simem) (cons (s 0 nil (s 1 nil nil)) simem))
 
483
 
 
484
(defun initspc_a (pc0) pc0)
 
485
 
 
486
(defun nextspc_a (initi pc0 project_impl project_pc isa spc)
 
487
   (cond (initi pc0) (project_impl project_pc) (isa (add-1 spc)) (t spc)))
 
488
 
 
489
(defun initsrf_a (srf) (cons  (s 0 t (s 1 nil nil)) srf))
 
490
 
 
491
(defun nextsrf_a
 
492
  (srf initi project_impl impl.prf isa inst regwrite val)
 
493
  (cons  (S 0 NIL
 
494
            (S 1 INITI
 
495
               (S 2 PROJECT_IMPL
 
496
                  (S 3 |IMPL.PRF|
 
497
                     (S 4 ISA
 
498
                        (S 5
 
499
                           INST (S 6 REGWRITE (S 7 VAL NIL))))))))
 
500
         srf))
 
501
 
 
502
(defun initsdmem_a (dmem0) dmem0)
 
503
 
 
504
(defun nextsdmem_a
 
505
        (initi dmem0 project_impl impl.pdmemhist_1 isa memwrite
 
506
               arg2_temp result sdmem)
 
507
   (cond
 
508
     (initi dmem0)
 
509
     (project_impl impl.pdmemhist_1)
 
510
     ((and isa memwrite) (writedmem arg2_temp result sdmem))
 
511
     (t sdmem)))
 
512
 
 
513
(defun spec-simulate_a
 
514
        (spec initi pc0 project_impl project_pc isa impl.prf dmem0
 
515
              impl.pdmemhist_1)
 
516
   (let  ((simem (g 'simem spec)) (spc (g 'spc spec))
 
517
          (srf (g 'srf spec)) (sdmem (g 'sdmem spec)))
 
518
     (let* ((inst (read-simem_a spc simem))
 
519
            (regwrite (getregwrite inst)) (memtoreg (getmemtoreg inst))
 
520
            (memwrite (getmemwrite inst)) (useimm (getuseimm inst))
 
521
            (imm (getimm inst)) (arg1 (read-srf_a (src1 inst) srf))
 
522
            (arg2_temp (read-srf_a (src2 inst) srf))
 
523
            (arg2 (cond (useimm imm) (t arg2_temp)))
 
524
            (result (alu (opcode inst) arg1 arg2))
 
525
            (readdata (readdmem result sdmem))
 
526
            (val (cond (memtoreg readdata) (t result))))
 
527
       (spec-state_a (nextsimem_a simem)
 
528
           (nextspc_a initi pc0 project_impl project_pc isa spc)
 
529
           (nextsrf_a srf initi project_impl impl.prf isa inst regwrite
 
530
               val)
 
531
           (nextsdmem_a initi dmem0 project_impl impl.pdmemhist_1 isa
 
532
               memwrite arg2_temp result sdmem)))))
 
533
 
 
534
(defun spec-initialize_a (spec pc0 dmem0)
 
535
   (let  ((simem (g 'simem spec)) (spc (g 'spc spec))
 
536
          (srf (g 'srf spec)) (sdmem (g 'sdmem spec)))
 
537
     (let* ((inst (read-simem_a spc simem))
 
538
            (regwrite (getregwrite inst)) (memtoreg (getmemtoreg inst))
 
539
            (memwrite (getmemwrite inst)) (useimm (getuseimm inst))
 
540
            (imm (getimm inst)) (arg1 (read-srf_a (src1 inst) srf))
 
541
            (arg2_temp (read-srf_a (src2 inst) srf))
 
542
            (arg2 (cond (useimm imm) (t arg2_temp)))
 
543
            (result (alu (opcode inst) arg1 arg2))
 
544
            (readdata (readdmem result sdmem))
 
545
            (val (cond (memtoreg readdata) (t result))))
 
546
       (spec-state_a (initsimem_a simem) (initspc_a pc0)
 
547
           (initsrf_a srf) (initsdmem_a dmem0)))))
 
548
 
 
549
(defun simulate_a
 
550
        (st initi isa project_impl project_pc commit_impl commit_pc pc0
 
551
            fdinst0 fdppc0 deppc0 desrc10 desrc20 a1 a2 dedest0 deop0
 
552
            deimm0 deuseimm0 deregwrite0 dememwrite0 dememtoreg0 emppc0
 
553
            emarg20 emresult0 emdest0 emregwrite0 emmemwrite0
 
554
            emmemtoreg0 dmem0 mwval0 mwppc0 mwdest0 mwregwrite0
 
555
            impl.prf impl.pdmemhist_1)
 
556
   (u-state_a
 
557
       (impl-simulate_a (g 'impl st) initi pc0 commit_impl commit_pc
 
558
           fdinst0 fdppc0 deppc0 desrc10 desrc20 a1 a2 dedest0 deop0
 
559
           deimm0 deuseimm0 deregwrite0 dememwrite0 dememtoreg0 emppc0
 
560
           emarg20 emresult0 emdest0 emregwrite0 emmemwrite0
 
561
           emmemtoreg0 dmem0 mwval0 mwppc0 mwdest0 mwregwrite0)
 
562
       (spec-simulate_a (g 'spec st) initi pc0 project_impl project_pc
 
563
           isa impl.prf dmem0 impl.pdmemhist_1)))
 
564
 
 
565
(defun initialize_a
 
566
        (st initi isa project_impl project_pc commit_impl commit_pc pc0
 
567
            fdinst0 fdppc0 deppc0 desrc10 desrc20 a1 a2 dedest0 deop0
 
568
            deimm0 deuseimm0 deregwrite0 dememwrite0 dememtoreg0 emppc0
 
569
            emarg20 emresult0 emdest0 emregwrite0 emmemwrite0
 
570
            emmemtoreg0 dmem0 mwval0 mwppc0 mwdest0 mwregwrite0)
 
571
   (u-state_a
 
572
       (impl-initialize_a (g 'impl st) pc0 fdinst0 fdppc0 deppc0
 
573
           desrc10 desrc20 a1 a2 dedest0 deop0 deimm0 deuseimm0
 
574
           deregwrite0 dememwrite0 dememtoreg0 emppc0 emarg20 emresult0
 
575
           emdest0 emregwrite0 emmemwrite0 emmemtoreg0 dmem0 mwval0
 
576
           mwppc0 mwdest0 mwregwrite0)
 
577
       (spec-initialize_a (g 'spec st) pc0 dmem0)))
 
578
 
 
579
(defun equiv_ma
 
580
        (ppc_v impl.ppc prf_v a1 impl.prf pimem_v impl.pimem pdmem_v
 
581
               impl.pdmem fdwrt_v impl.fdwrt fdinst_v impl.fdinst
 
582
               dewrt_v impl.dewrt deop_v impl.deop dearg1_v impl.dearg1
 
583
               dearg2_v impl.dearg2 dedest_v impl.dedest desrc1_v
 
584
               impl.desrc1 desrc2_v impl.desrc2 deimm_v impl.deimm
 
585
               deuseimm_v impl.deuseimm dememtoreg_v impl.dememtoreg
 
586
               dememwrite_v impl.dememwrite deregwrite_v
 
587
               impl.deregwrite emwrt_v impl.emwrt emdest_v impl.emdest
 
588
               emregwrite_v impl.emregwrite emresult_v impl.emresult
 
589
               emmemtoreg_v impl.emmemtoreg emmemwrite_v
 
590
               impl.emmemwrite mwwrt_v impl.mwwrt mwval_v impl.mwval
 
591
               mwdest_v impl.mwdest mwregwrite_v impl.mwregwrite)
 
592
   (and (and (and (and (and (and (and (and
 
593
                                       (and
 
594
                                        (and
 
595
                                         (and (equal ppc_v impl.ppc)
 
596
                                          (equal (read-prf_a a1 prf_v)
 
597
                                           (read-prf_a a1 impl.prf)))
 
598
                                         (equal
 
599
                                          (read-pimem_a a1 pimem_v)
 
600
                                          (read-pimem_a a1 impl.pimem)))
 
601
                                        (equal pdmem_v impl.pdmem))
 
602
                                       (or (and fdwrt_v impl.fdwrt)
 
603
                                        (and (not fdwrt_v)
 
604
                                         (not impl.fdwrt))))
 
605
                                      (implies fdwrt_v
 
606
                                       (and impl.fdwrt
 
607
                                        (equal fdinst_v impl.fdinst))))
 
608
                                 (or (and dewrt_v impl.dewrt)
 
609
                                     (and (not dewrt_v)
 
610
                                      (not impl.dewrt))))
 
611
                            (implies dewrt_v
 
612
                                     (and
 
613
                                      (and
 
614
                                       (and
 
615
                                        (and
 
616
                                         (and
 
617
                                          (and
 
618
                                           (and
 
619
                                            (and
 
620
                                             (and
 
621
                                              (and
 
622
                                               (and impl.dewrt
 
623
                                                (equal deop_v
 
624
                                                 impl.deop))
 
625
                                               (equal dearg1_v
 
626
                                                impl.dearg1))
 
627
                                              (equal dearg2_v
 
628
                                               impl.dearg2))
 
629
                                             (equal dedest_v
 
630
                                              impl.dedest))
 
631
                                            (equal desrc1_v
 
632
                                             impl.desrc1))
 
633
                                           (equal desrc2_v impl.desrc2))
 
634
                                          (equal deimm_v impl.deimm))
 
635
                                         (or
 
636
                                          (and deuseimm_v
 
637
                                           impl.deuseimm)
 
638
                                          (and (not deuseimm_v)
 
639
                                           (not impl.deuseimm))))
 
640
                                        (or
 
641
                                         (and dememtoreg_v
 
642
                                          impl.dememtoreg)
 
643
                                         (and (not dememtoreg_v)
 
644
                                          (not impl.dememtoreg))))
 
645
                                       (or
 
646
                                        (and dememwrite_v
 
647
                                         impl.dememwrite)
 
648
                                        (and (not dememwrite_v)
 
649
                                         (not impl.dememwrite))))
 
650
                                      (or
 
651
                                       (and deregwrite_v
 
652
                                        impl.deregwrite)
 
653
                                       (and (not deregwrite_v)
 
654
                                        (not impl.deregwrite))))))
 
655
                       (or (and emwrt_v impl.emwrt)
 
656
                           (and (not emwrt_v) (not impl.emwrt))))
 
657
                  (implies emwrt_v
 
658
                           (and (and (and
 
659
                                      (and
 
660
                                       (and impl.emwrt
 
661
                                        (equal emdest_v impl.emdest))
 
662
                                       (or
 
663
                                        (and emregwrite_v
 
664
                                         impl.emregwrite)
 
665
                                        (and (not emregwrite_v)
 
666
                                         (not impl.emregwrite))))
 
667
                                      (equal emresult_v impl.emresult))
 
668
                                     (or
 
669
                                      (and emmemtoreg_v
 
670
                                       impl.emmemtoreg)
 
671
                                      (and (not emmemtoreg_v)
 
672
                                       (not impl.emmemtoreg))))
 
673
                                (or (and emmemwrite_v impl.emmemwrite)
 
674
                                    (and (not emmemwrite_v)
 
675
                                     (not impl.emmemwrite))))))
 
676
             (or (and mwwrt_v impl.mwwrt)
 
677
                 (and (not mwwrt_v) (not impl.mwwrt))))
 
678
        (implies mwwrt_v
 
679
                 (and (and (and impl.mwwrt (equal mwval_v impl.mwval))
 
680
                           (equal mwdest_v impl.mwdest))
 
681
                      (or (and mwregwrite_v impl.mwregwrite)
 
682
                          (and (not mwregwrite_v)
 
683
                               (not impl.mwregwrite)))))))
 
684
 
 
685
(defun rank (impl.mwwrt zero impl.emwrt impl.dewrt impl.fdwrt)
 
686
   (cond
 
687
     (impl.mwwrt zero)
 
688
     (impl.emwrt (add-1 zero))
 
689
     (impl.dewrt (add-1 (add-1 zero)))
 
690
     (impl.fdwrt (add-1 (add-1 (add-1 zero))))
 
691
     (t (add-1 (add-1 (add-1 (add-1 zero)))))))
 
692
 
 
693
(defun committedpc
 
694
        (impl.mwwrt impl.mwppc impl.emwrt impl.emppc impl.dewrt
 
695
            impl.deppc impl.fdwrt impl.fdppc impl.ppc)
 
696
   (cond
 
697
     (impl.mwwrt impl.mwppc)
 
698
     (impl.emwrt impl.emppc)
 
699
     (impl.dewrt impl.deppc)
 
700
     (impl.fdwrt impl.fdppc)
 
701
     (t impl.ppc)))
 
702
 
 
703
(defthm web_core_a
 
704
         (implies (and (integerp pc0) (integerp dmem0) (integerp a)
 
705
                       (integerp zero) (integerp mwval0)
 
706
                       (integerp emresult0) (booleanp deregwrite0)
 
707
                       (booleanp emregwrite0) (booleanp mwregwrite0)
 
708
                       (integerp mwdest0) (integerp deop0)
 
709
                       (integerp fddest0) (integerp dedest0)
 
710
                       (integerp op0) (integerp s0) (integerp a1)
 
711
                       (integerp a2) (integerp d0) (integerp d1)
 
712
                       (integerp x0) (integerp fdop0) (booleanp w0)
 
713
                       (booleanp w1) (integerp fdsrc10)
 
714
                       (integerp fdsrc20) (integerp emdest0)
 
715
                       (integerp emval0) (integerp desrc10)
 
716
                       (integerp desrc20) (integerp fdinst0)
 
717
                       (integerp deimm0) (booleanp deuseimm0)
 
718
                       (booleanp dememtoreg0) (booleanp emmemtoreg0)
 
719
                       (integerp emimm0) (booleanp emuseimm0)
 
720
                       (booleanp dememwrite0) (booleanp emmemwrite0)
 
721
                       (integerp emarg20) (integerp fdppc0)
 
722
                       (integerp deppc0) (integerp emppc0)
 
723
                       (integerp mwppc0))
 
724
                  (let* ((st0 (initialize_a nil nil nil nil pc0 nil pc0
 
725
                                  pc0 fdinst0 fdppc0 deppc0 desrc10
 
726
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
727
                                  deuseimm0 deregwrite0 dememwrite0
 
728
                                  dememtoreg0 emppc0 emarg20 emresult0
 
729
                                  emdest0 emregwrite0 emmemwrite0
 
730
                                  emmemtoreg0 dmem0 mwval0 mwppc0
 
731
                                  mwdest0 mwregwrite0))
 
732
                         (st1 (simulate_a st0 nil nil nil pc0 nil pc0
 
733
                                  pc0 fdinst0 fdppc0 deppc0 desrc10
 
734
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
735
                                  deuseimm0 deregwrite0 dememwrite0
 
736
                                  dememtoreg0 emppc0 emarg20 emresult0
 
737
                                  emdest0 emregwrite0 emmemwrite0
 
738
                                  emmemtoreg0 dmem0 mwval0 mwppc0
 
739
                                  mwdest0 mwregwrite0
 
740
                                  (g 'prf (g 'impl st0))
 
741
                                  (g 'pdmemhist_1 (g 'impl st0))))
 
742
                         (st2 (simulate_a st1 nil nil nil pc0 nil pc0
 
743
                                  pc0 fdinst0 fdppc0 deppc0 desrc10
 
744
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
745
                                  deuseimm0 deregwrite0 dememwrite0
 
746
                                  dememtoreg0 emppc0 emarg20 emresult0
 
747
                                  emdest0 emregwrite0 emmemwrite0
 
748
                                  emmemtoreg0 dmem0 mwval0 mwppc0
 
749
                                  mwdest0 mwregwrite0
 
750
                                  (g 'prf (g 'impl st1))
 
751
                                  (g 'pdmemhist_1 (g 'impl st1))))
 
752
                         (st3 (simulate_a st2 nil nil nil pc0 nil pc0
 
753
                                  pc0 fdinst0 fdppc0 deppc0 desrc10
 
754
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
755
                                  deuseimm0 deregwrite0 dememwrite0
 
756
                                  dememtoreg0 emppc0 emarg20 emresult0
 
757
                                  emdest0 emregwrite0 emmemwrite0
 
758
                                  emmemtoreg0 dmem0 mwval0 mwppc0
 
759
                                  mwdest0 mwregwrite0
 
760
                                  (g 'prf (g 'impl st2))
 
761
                                  (g 'pdmemhist_1 (g 'impl st2))))
 
762
                         (st4 (simulate_a st3 nil nil nil pc0 nil pc0
 
763
                                  pc0 fdinst0 fdppc0 deppc0 desrc10
 
764
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
765
                                  deuseimm0 deregwrite0 dememwrite0
 
766
                                  dememtoreg0 emppc0 emarg20 emresult0
 
767
                                  emdest0 emregwrite0 emmemwrite0
 
768
                                  emmemtoreg0 dmem0 mwval0 mwppc0
 
769
                                  mwdest0 mwregwrite0
 
770
                                  (g 'prf (g 'impl st3))
 
771
                                  (g 'pdmemhist_1 (g 'impl st3))))
 
772
                         (st5 (simulate_a st4 nil nil nil pc0 nil pc0
 
773
                                  pc0 fdinst0 fdppc0 deppc0 desrc10
 
774
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
775
                                  deuseimm0 deregwrite0 dememwrite0
 
776
                                  dememtoreg0 emppc0 emarg20 emresult0
 
777
                                  emdest0 emregwrite0 emmemwrite0
 
778
                                  emmemtoreg0 dmem0 mwval0 mwppc0
 
779
                                  mwdest0 mwregwrite0
 
780
                                  (g 'prf (g 'impl st4))
 
781
                                  (g 'pdmemhist_1 (g 'impl st4))))
 
782
                         (ppc_v (g 'ppc (g 'impl st5)))
 
783
                         (prf_v (g 'prf (g 'impl st5)))
 
784
                         (pdmem_v (g 'pdmem (g 'impl st5)))
 
785
                         (pimem_v (g 'pimem (g 'impl st5)))
 
786
                         (deop_v (g 'deop (g 'impl st5)))
 
787
                         (desrc2_v (g 'desrc2 (g 'impl st5)))
 
788
                         (dearg1_v (g 'dearg1 (g 'impl st5)))
 
789
                         (dearg2_v (g 'dearg2 (g 'impl st5)))
 
790
                         (dedest_v (g 'dedest (g 'impl st5)))
 
791
                         (dewrt_v (g 'dewrt (g 'impl st5)))
 
792
                         (mwval_v (g 'mwval (g 'impl st5)))
 
793
                         (mwdest_v (g 'mwdest (g 'impl st5)))
 
794
                         (mwwrt_v (g 'mwwrt (g 'impl st5)))
 
795
                         (fdwrt_v (g 'fdwrt (g 'impl st5)))
 
796
                         (fdinst_v (g 'fdinst (g 'impl st5)))
 
797
                         (emdest_v (g 'emdest (g 'impl st5)))
 
798
                         (emwrt_v (g 'emwrt (g 'impl st5)))
 
799
                         (desrc1_v (g 'desrc1 (g 'impl st5)))
 
800
                         (desrc2_v (g 'desrc2 (g 'impl st5)))
 
801
                         (deregwrite_v (g 'deregwrite (g 'impl st5)))
 
802
                         (emregwrite_v (g 'emregwrite (g 'impl st5)))
 
803
                         (mwregwrite_v (g 'mwregwrite (g 'impl st5)))
 
804
                         (deimm_v (g 'deimm (g 'impl st5)))
 
805
                         (deuseimm_v (g 'deuseimm (g 'impl st5)))
 
806
                         (emresult_v (g 'emresult (g 'impl st5)))
 
807
                         (dememtoreg_v (g 'dememtoreg (g 'impl st5)))
 
808
                         (emmemtoreg_v (g 'emmemtoreg (g 'impl st5)))
 
809
                         (dememwrite_v (g 'dememwrite (g 'impl st5)))
 
810
                         (emmemwrite_v (g 'emmemwrite (g 'impl st5)))
 
811
                         (emarg2_v (g 'emarg2 (g 'impl st5)))
 
812
                         (committedpc_0
 
813
                             (committedpc (g 'mwwrt (g 'impl st5))
 
814
                                 (g 'mwppc (g 'impl st5))
 
815
                                 (g 'emwrt (g 'impl st5))
 
816
                                 (g 'emppc (g 'impl st5))
 
817
                                 (g 'dewrt (g 'impl st5))
 
818
                                 (g 'deppc (g 'impl st5))
 
819
                                 (g 'fdwrt (g 'impl st5))
 
820
                                 (g 'fdppc (g 'impl st5))
 
821
                                 (g 'ppc (g 'impl st5))))
 
822
                         (st6 (simulate_a st5 nil nil nil pc0 t
 
823
                                  committedpc_0 pc0 fdinst0 fdppc0
 
824
                                  deppc0 desrc10 desrc20 a1 a2 dedest0
 
825
                                  deop0 deimm0 deuseimm0 deregwrite0
 
826
                                  dememwrite0 dememtoreg0 emppc0
 
827
                                  emarg20 emresult0 emdest0 emregwrite0
 
828
                                  emmemwrite0 emmemtoreg0 dmem0 mwval0
 
829
                                  mwppc0 mwdest0 mwregwrite0
 
830
                                  (g 'prf (g 'impl st5))
 
831
                                  (g 'pdmemhist_1 (g 'impl st5))))
 
832
                         (equiv_ma_0
 
833
                             (equiv_ma ppc_v (g 'ppc (g 'impl st6))
 
834
                                 prf_v a1 (g 'prf (g 'impl st6))
 
835
                                 pimem_v (g 'pimem (g 'impl st6))
 
836
                                 pdmem_v (g 'pdmem (g 'impl st6))
 
837
                                 fdwrt_v (g 'fdwrt (g 'impl st6))
 
838
                                 fdinst_v (g 'fdinst (g 'impl st6))
 
839
                                 dewrt_v (g 'dewrt (g 'impl st6))
 
840
                                 deop_v (g 'deop (g 'impl st6))
 
841
                                 dearg1_v (g 'dearg1 (g 'impl st6))
 
842
                                 dearg2_v (g 'dearg2 (g 'impl st6))
 
843
                                 dedest_v (g 'dedest (g 'impl st6))
 
844
                                 desrc1_v (g 'desrc1 (g 'impl st6))
 
845
                                 desrc2_v (g 'desrc2 (g 'impl st6))
 
846
                                 deimm_v (g 'deimm (g 'impl st6))
 
847
                                 deuseimm_v (g 'deuseimm (g 'impl st6))
 
848
                                 dememtoreg_v
 
849
                                 (g 'dememtoreg (g 'impl st6))
 
850
                                 dememwrite_v
 
851
                                 (g 'dememwrite (g 'impl st6))
 
852
                                 deregwrite_v
 
853
                                 (g 'deregwrite (g 'impl st6)) emwrt_v
 
854
                                 (g 'emwrt (g 'impl st6)) emdest_v
 
855
                                 (g 'emdest (g 'impl st6)) emregwrite_v
 
856
                                 (g 'emregwrite (g 'impl st6))
 
857
                                 emresult_v (g 'emresult (g 'impl st6))
 
858
                                 emmemtoreg_v
 
859
                                 (g 'emmemtoreg (g 'impl st6))
 
860
                                 emmemwrite_v
 
861
                                 (g 'emmemwrite (g 'impl st6)) mwwrt_v
 
862
                                 (g 'mwwrt (g 'impl st6)) mwval_v
 
863
                                 (g 'mwval (g 'impl st6)) mwdest_v
 
864
                                 (g 'mwdest (g 'impl st6)) mwregwrite_v
 
865
                                 (g 'mwregwrite (g 'impl st6))))
 
866
                         (st7 (simulate_a st6 nil nil nil pc0 nil pc0
 
867
                                  pc0 fdinst0 fdppc0 deppc0 desrc10
 
868
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
869
                                  deuseimm0 deregwrite0 dememwrite0
 
870
                                  dememtoreg0 emppc0 emarg20 emresult0
 
871
                                  emdest0 emregwrite0 emmemwrite0
 
872
                                  emmemtoreg0 dmem0 mwval0 mwppc0
 
873
                                  mwdest0 mwregwrite0
 
874
                                  (g 'prf (g 'impl st6))
 
875
                                  (g 'pdmemhist_1 (g 'impl st6))))
 
876
                         (equiv_ma_1
 
877
                             (equiv_ma ppc_v (g 'ppc (g 'impl st7))
 
878
                                 prf_v a1 (g 'prf (g 'impl st7))
 
879
                                 pimem_v (g 'pimem (g 'impl st7))
 
880
                                 pdmem_v (g 'pdmem (g 'impl st7))
 
881
                                 fdwrt_v (g 'fdwrt (g 'impl st7))
 
882
                                 fdinst_v (g 'fdinst (g 'impl st7))
 
883
                                 dewrt_v (g 'dewrt (g 'impl st7))
 
884
                                 deop_v (g 'deop (g 'impl st7))
 
885
                                 dearg1_v (g 'dearg1 (g 'impl st7))
 
886
                                 dearg2_v (g 'dearg2 (g 'impl st7))
 
887
                                 dedest_v (g 'dedest (g 'impl st7))
 
888
                                 desrc1_v (g 'desrc1 (g 'impl st7))
 
889
                                 desrc2_v (g 'desrc2 (g 'impl st7))
 
890
                                 deimm_v (g 'deimm (g 'impl st7))
 
891
                                 deuseimm_v (g 'deuseimm (g 'impl st7))
 
892
                                 dememtoreg_v
 
893
                                 (g 'dememtoreg (g 'impl st7))
 
894
                                 dememwrite_v
 
895
                                 (g 'dememwrite (g 'impl st7))
 
896
                                 deregwrite_v
 
897
                                 (g 'deregwrite (g 'impl st7)) emwrt_v
 
898
                                 (g 'emwrt (g 'impl st7)) emdest_v
 
899
                                 (g 'emdest (g 'impl st7)) emregwrite_v
 
900
                                 (g 'emregwrite (g 'impl st7))
 
901
                                 emresult_v (g 'emresult (g 'impl st7))
 
902
                                 emmemtoreg_v
 
903
                                 (g 'emmemtoreg (g 'impl st7))
 
904
                                 emmemwrite_v
 
905
                                 (g 'emmemwrite (g 'impl st7)) mwwrt_v
 
906
                                 (g 'mwwrt (g 'impl st7)) mwval_v
 
907
                                 (g 'mwval (g 'impl st7)) mwdest_v
 
908
                                 (g 'mwdest (g 'impl st7)) mwregwrite_v
 
909
                                 (g 'mwregwrite (g 'impl st7))))
 
910
                         (st8 (simulate_a st7 nil nil nil pc0 nil pc0
 
911
                                  pc0 fdinst0 fdppc0 deppc0 desrc10
 
912
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
913
                                  deuseimm0 deregwrite0 dememwrite0
 
914
                                  dememtoreg0 emppc0 emarg20 emresult0
 
915
                                  emdest0 emregwrite0 emmemwrite0
 
916
                                  emmemtoreg0 dmem0 mwval0 mwppc0
 
917
                                  mwdest0 mwregwrite0
 
918
                                  (g 'prf (g 'impl st7))
 
919
                                  (g 'pdmemhist_1 (g 'impl st7))))
 
920
                         (equiv_ma_2
 
921
                             (equiv_ma ppc_v (g 'ppc (g 'impl st8))
 
922
                                 prf_v a1 (g 'prf (g 'impl st8))
 
923
                                 pimem_v (g 'pimem (g 'impl st8))
 
924
                                 pdmem_v (g 'pdmem (g 'impl st8))
 
925
                                 fdwrt_v (g 'fdwrt (g 'impl st8))
 
926
                                 fdinst_v (g 'fdinst (g 'impl st8))
 
927
                                 dewrt_v (g 'dewrt (g 'impl st8))
 
928
                                 deop_v (g 'deop (g 'impl st8))
 
929
                                 dearg1_v (g 'dearg1 (g 'impl st8))
 
930
                                 dearg2_v (g 'dearg2 (g 'impl st8))
 
931
                                 dedest_v (g 'dedest (g 'impl st8))
 
932
                                 desrc1_v (g 'desrc1 (g 'impl st8))
 
933
                                 desrc2_v (g 'desrc2 (g 'impl st8))
 
934
                                 deimm_v (g 'deimm (g 'impl st8))
 
935
                                 deuseimm_v (g 'deuseimm (g 'impl st8))
 
936
                                 dememtoreg_v
 
937
                                 (g 'dememtoreg (g 'impl st8))
 
938
                                 dememwrite_v
 
939
                                 (g 'dememwrite (g 'impl st8))
 
940
                                 deregwrite_v
 
941
                                 (g 'deregwrite (g 'impl st8)) emwrt_v
 
942
                                 (g 'emwrt (g 'impl st8)) emdest_v
 
943
                                 (g 'emdest (g 'impl st8)) emregwrite_v
 
944
                                 (g 'emregwrite (g 'impl st8))
 
945
                                 emresult_v (g 'emresult (g 'impl st8))
 
946
                                 emmemtoreg_v
 
947
                                 (g 'emmemtoreg (g 'impl st8))
 
948
                                 emmemwrite_v
 
949
                                 (g 'emmemwrite (g 'impl st8)) mwwrt_v
 
950
                                 (g 'mwwrt (g 'impl st8)) mwval_v
 
951
                                 (g 'mwval (g 'impl st8)) mwdest_v
 
952
                                 (g 'mwdest (g 'impl st8)) mwregwrite_v
 
953
                                 (g 'mwregwrite (g 'impl st8))))
 
954
                         (st9 (simulate_a st8 nil nil nil pc0 nil pc0
 
955
                                  pc0 fdinst0 fdppc0 deppc0 desrc10
 
956
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
957
                                  deuseimm0 deregwrite0 dememwrite0
 
958
                                  dememtoreg0 emppc0 emarg20 emresult0
 
959
                                  emdest0 emregwrite0 emmemwrite0
 
960
                                  emmemtoreg0 dmem0 mwval0 mwppc0
 
961
                                  mwdest0 mwregwrite0
 
962
                                  (g 'prf (g 'impl st8))
 
963
                                  (g 'pdmemhist_1 (g 'impl st8))))
 
964
                         (equiv_ma_3
 
965
                             (equiv_ma ppc_v (g 'ppc (g 'impl st9))
 
966
                                 prf_v a1 (g 'prf (g 'impl st9))
 
967
                                 pimem_v (g 'pimem (g 'impl st9))
 
968
                                 pdmem_v (g 'pdmem (g 'impl st9))
 
969
                                 fdwrt_v (g 'fdwrt (g 'impl st9))
 
970
                                 fdinst_v (g 'fdinst (g 'impl st9))
 
971
                                 dewrt_v (g 'dewrt (g 'impl st9))
 
972
                                 deop_v (g 'deop (g 'impl st9))
 
973
                                 dearg1_v (g 'dearg1 (g 'impl st9))
 
974
                                 dearg2_v (g 'dearg2 (g 'impl st9))
 
975
                                 dedest_v (g 'dedest (g 'impl st9))
 
976
                                 desrc1_v (g 'desrc1 (g 'impl st9))
 
977
                                 desrc2_v (g 'desrc2 (g 'impl st9))
 
978
                                 deimm_v (g 'deimm (g 'impl st9))
 
979
                                 deuseimm_v (g 'deuseimm (g 'impl st9))
 
980
                                 dememtoreg_v
 
981
                                 (g 'dememtoreg (g 'impl st9))
 
982
                                 dememwrite_v
 
983
                                 (g 'dememwrite (g 'impl st9))
 
984
                                 deregwrite_v
 
985
                                 (g 'deregwrite (g 'impl st9)) emwrt_v
 
986
                                 (g 'emwrt (g 'impl st9)) emdest_v
 
987
                                 (g 'emdest (g 'impl st9)) emregwrite_v
 
988
                                 (g 'emregwrite (g 'impl st9))
 
989
                                 emresult_v (g 'emresult (g 'impl st9))
 
990
                                 emmemtoreg_v
 
991
                                 (g 'emmemtoreg (g 'impl st9))
 
992
                                 emmemwrite_v
 
993
                                 (g 'emmemwrite (g 'impl st9)) mwwrt_v
 
994
                                 (g 'mwwrt (g 'impl st9)) mwval_v
 
995
                                 (g 'mwval (g 'impl st9)) mwdest_v
 
996
                                 (g 'mwdest (g 'impl st9)) mwregwrite_v
 
997
                                 (g 'mwregwrite (g 'impl st9))))
 
998
                         (st10 (simulate_a st9 nil nil nil pc0 nil pc0
 
999
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1000
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1001
                                   deuseimm0 deregwrite0 dememwrite0
 
1002
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1003
                                   emdest0 emregwrite0 emmemwrite0
 
1004
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1005
                                   mwdest0 mwregwrite0
 
1006
                                   (g 'prf (g 'impl st9))
 
1007
                                   (g 'pdmemhist_1 (g 'impl st9))))
 
1008
                         (equiv_ma_4
 
1009
                             (equiv_ma ppc_v (g 'ppc (g 'impl st10))
 
1010
                                 prf_v a1 (g 'prf (g 'impl st10))
 
1011
                                 pimem_v (g 'pimem (g 'impl st10))
 
1012
                                 pdmem_v (g 'pdmem (g 'impl st10))
 
1013
                                 fdwrt_v (g 'fdwrt (g 'impl st10))
 
1014
                                 fdinst_v (g 'fdinst (g 'impl st10))
 
1015
                                 dewrt_v (g 'dewrt (g 'impl st10))
 
1016
                                 deop_v (g 'deop (g 'impl st10))
 
1017
                                 dearg1_v (g 'dearg1 (g 'impl st10))
 
1018
                                 dearg2_v (g 'dearg2 (g 'impl st10))
 
1019
                                 dedest_v (g 'dedest (g 'impl st10))
 
1020
                                 desrc1_v (g 'desrc1 (g 'impl st10))
 
1021
                                 desrc2_v (g 'desrc2 (g 'impl st10))
 
1022
                                 deimm_v (g 'deimm (g 'impl st10))
 
1023
                                 deuseimm_v
 
1024
                                 (g 'deuseimm (g 'impl st10))
 
1025
                                 dememtoreg_v
 
1026
                                 (g 'dememtoreg (g 'impl st10))
 
1027
                                 dememwrite_v
 
1028
                                 (g 'dememwrite (g 'impl st10))
 
1029
                                 deregwrite_v
 
1030
                                 (g 'deregwrite (g 'impl st10)) emwrt_v
 
1031
                                 (g 'emwrt (g 'impl st10)) emdest_v
 
1032
                                 (g 'emdest (g 'impl st10))
 
1033
                                 emregwrite_v
 
1034
                                 (g 'emregwrite (g 'impl st10))
 
1035
                                 emresult_v
 
1036
                                 (g 'emresult (g 'impl st10))
 
1037
                                 emmemtoreg_v
 
1038
                                 (g 'emmemtoreg (g 'impl st10))
 
1039
                                 emmemwrite_v
 
1040
                                 (g 'emmemwrite (g 'impl st10)) mwwrt_v
 
1041
                                 (g 'mwwrt (g 'impl st10)) mwval_v
 
1042
                                 (g 'mwval (g 'impl st10)) mwdest_v
 
1043
                                 (g 'mwdest (g 'impl st10))
 
1044
                                 mwregwrite_v
 
1045
                                 (g 'mwregwrite (g 'impl st10))))
 
1046
                         (good_ma_v
 
1047
                             (or (or (or (or equiv_ma_0 equiv_ma_1)
 
1048
                                      equiv_ma_2)
 
1049
                                     equiv_ma_3)
 
1050
                                 equiv_ma_4))
 
1051
                         (st11 (simulate_a st10 t nil nil pc0 nil pc0
 
1052
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1053
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1054
                                   deuseimm0 deregwrite0 dememwrite0
 
1055
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1056
                                   emdest0 emregwrite0 emmemwrite0
 
1057
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1058
                                   mwdest0 mwregwrite0
 
1059
                                   (g 'prf (g 'impl st10))
 
1060
                                   (g 'pdmemhist_1 (g 'impl st10))))
 
1061
                         (st12 (simulate_a st11 nil nil nil pc0 nil pc0
 
1062
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1063
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1064
                                   deuseimm0 deregwrite0 dememwrite0
 
1065
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1066
                                   emdest0 emregwrite0 emmemwrite0
 
1067
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1068
                                   mwdest0 mwregwrite0
 
1069
                                   (g 'prf (g 'impl st11))
 
1070
                                   (g 'pdmemhist_1 (g 'impl st11))))
 
1071
                         (st13 (simulate_a st12 nil nil nil pc0 nil pc0
 
1072
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1073
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1074
                                   deuseimm0 deregwrite0 dememwrite0
 
1075
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1076
                                   emdest0 emregwrite0 emmemwrite0
 
1077
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1078
                                   mwdest0 mwregwrite0
 
1079
                                   (g 'prf (g 'impl st12))
 
1080
                                   (g 'pdmemhist_1 (g 'impl st12))))
 
1081
                         (st14 (simulate_a st13 nil nil nil pc0 nil pc0
 
1082
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1083
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1084
                                   deuseimm0 deregwrite0 dememwrite0
 
1085
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1086
                                   emdest0 emregwrite0 emmemwrite0
 
1087
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1088
                                   mwdest0 mwregwrite0
 
1089
                                   (g 'prf (g 'impl st13))
 
1090
                                   (g 'pdmemhist_1 (g 'impl st13))))
 
1091
                         (st15 (simulate_a st14 nil nil nil pc0 nil pc0
 
1092
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1093
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1094
                                   deuseimm0 deregwrite0 dememwrite0
 
1095
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1096
                                   emdest0 emregwrite0 emmemwrite0
 
1097
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1098
                                   mwdest0 mwregwrite0
 
1099
                                   (g 'prf (g 'impl st14))
 
1100
                                   (g 'pdmemhist_1 (g 'impl st14))))
 
1101
                         (i_pc0 (committedpc (g 'mwwrt (g 'impl st15))
 
1102
                                    (g 'mwppc (g 'impl st15))
 
1103
                                    (g 'emwrt (g 'impl st15))
 
1104
                                    (g 'emppc (g 'impl st15))
 
1105
                                    (g 'dewrt (g 'impl st15))
 
1106
                                    (g 'deppc (g 'impl st15))
 
1107
                                    (g 'fdwrt (g 'impl st15))
 
1108
                                    (g 'fdppc (g 'impl st15))
 
1109
                                    (g 'ppc (g 'impl st15))))
 
1110
                         (i_rf0 (g 'prf (g 'impl st15)))
 
1111
                         (i_dmem0 (g 'pdmemhist_1 (g 'impl st15)))
 
1112
                         (rank_w (rank (g 'mwwrt (g 'impl st15)) zero
 
1113
                                       (g 'emwrt (g 'impl st15))
 
1114
                                       (g 'dewrt (g 'impl st15))
 
1115
                                       (g 'fdwrt (g 'impl st15))))
 
1116
                         (st16 (simulate_a st15 nil nil t i_pc0 nil pc0
 
1117
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1118
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1119
                                   deuseimm0 deregwrite0 dememwrite0
 
1120
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1121
                                   emdest0 emregwrite0 emmemwrite0
 
1122
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1123
                                   mwdest0 mwregwrite0
 
1124
                                   (g 'prf (g 'impl st15))
 
1125
                                   (g 'pdmemhist_1 (g 'impl st15))))
 
1126
                         (s_pc0 (g 'spc (g 'spec st16)))
 
1127
                         (s_rf0 (g 'srf (g 'spec st16)))
 
1128
                         (s_dmem0 (g 'sdmem (g 'spec st16)))
 
1129
                         (i_pc (committedpc (g 'mwwrt (g 'impl st16))
 
1130
                                   (g 'mwppc (g 'impl st16))
 
1131
                                   (g 'emwrt (g 'impl st16))
 
1132
                                   (g 'emppc (g 'impl st16))
 
1133
                                   (g 'dewrt (g 'impl st16))
 
1134
                                   (g 'deppc (g 'impl st16))
 
1135
                                   (g 'fdwrt (g 'impl st16))
 
1136
                                   (g 'fdppc (g 'impl st16))
 
1137
                                   (g 'ppc (g 'impl st16))))
 
1138
                         (i_rf (g 'prf (g 'impl st16)))
 
1139
                         (i_dmem (g 'pdmemhist_1 (g 'impl st16)))
 
1140
                         (rank_v (rank (g 'mwwrt (g 'impl st16)) zero
 
1141
                                       (g 'emwrt (g 'impl st16))
 
1142
                                       (g 'dewrt (g 'impl st16))
 
1143
                                       (g 'fdwrt (g 'impl st16))))
 
1144
                         (st17 (simulate_a st16 nil t nil pc0 nil pc0
 
1145
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1146
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1147
                                   deuseimm0 deregwrite0 dememwrite0
 
1148
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1149
                                   emdest0 emregwrite0 emmemwrite0
 
1150
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1151
                                   mwdest0 mwregwrite0
 
1152
                                   (g 'prf (g 'impl st16))
 
1153
                                   (g 'pdmemhist_1 (g 'impl st16))))
 
1154
                         (s_pc1 (g 'spc (g 'spec st17)))
 
1155
                         (s_rf1 (g 'srf (g 'spec st17)))
 
1156
                         (s_dmem1 (g 'sdmem (g 'spec st17)))
 
1157
                         (st18 (simulate_a st17 t nil nil pc0 nil pc0
 
1158
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1159
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1160
                                   deuseimm0 deregwrite0 dememwrite0
 
1161
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1162
                                   emdest0 emregwrite0 emmemwrite0
 
1163
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1164
                                   mwdest0 mwregwrite0
 
1165
                                   (g 'prf (g 'impl st17))
 
1166
                                   (g 'pdmemhist_1 (g 'impl st17))))
 
1167
                         (st19 (simulate_a st18 nil nil nil pc0 nil pc0
 
1168
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1169
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1170
                                   deuseimm0 deregwrite0 dememwrite0
 
1171
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1172
                                   emdest0 emregwrite0 emmemwrite0
 
1173
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1174
                                   mwdest0 mwregwrite0
 
1175
                                   (g 'prf (g 'impl st18))
 
1176
                                   (g 'pdmemhist_1 (g 'impl st18))))
 
1177
                         (st20 (simulate_a st19 nil nil nil pc0 nil pc0
 
1178
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1179
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1180
                                   deuseimm0 deregwrite0 dememwrite0
 
1181
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1182
                                   emdest0 emregwrite0 emmemwrite0
 
1183
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1184
                                   mwdest0 mwregwrite0
 
1185
                                   (g 'prf (g 'impl st19))
 
1186
                                   (g 'pdmemhist_1 (g 'impl st19))))
 
1187
                         (st21 (simulate_a st20 nil nil nil pc0 nil pc0
 
1188
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1189
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1190
                                   deuseimm0 deregwrite0 dememwrite0
 
1191
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1192
                                   emdest0 emregwrite0 emmemwrite0
 
1193
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1194
                                   mwdest0 mwregwrite0
 
1195
                                   (g 'prf (g 'impl st20))
 
1196
                                   (g 'pdmemhist_1 (g 'impl st20))))
 
1197
                         (i_pc0_2 (committedpc
 
1198
                                      (g 'mwwrt (g 'impl st21))
 
1199
                                      (g 'mwppc (g 'impl st21))
 
1200
                                      (g 'emwrt (g 'impl st21))
 
1201
                                      (g 'emppc (g 'impl st21))
 
1202
                                      (g 'dewrt (g 'impl st21))
 
1203
                                      (g 'deppc (g 'impl st21))
 
1204
                                      (g 'fdwrt (g 'impl st21))
 
1205
                                      (g 'fdppc (g 'impl st21))
 
1206
                                      (g 'ppc (g 'impl st21))))
 
1207
                         (i_rf0_2 (g 'prf (g 'impl st21)))
 
1208
                         (i_dmem0_2 (g 'pdmemhist_1 (g 'impl st21)))
 
1209
                         (rank_w_2
 
1210
                             (rank (g 'mwwrt (g 'impl st21)) zero
 
1211
                                   (g 'emwrt (g 'impl st21))
 
1212
                                   (g 'dewrt (g 'impl st21))
 
1213
                                   (g 'fdwrt (g 'impl st21))))
 
1214
                         (st22 (simulate_a st21 nil nil t i_pc0_2 nil
 
1215
                                   pc0 pc0 fdinst0 fdppc0 deppc0
 
1216
                                   desrc10 desrc20 a1 a2 dedest0 deop0
 
1217
                                   deimm0 deuseimm0 deregwrite0
 
1218
                                   dememwrite0 dememtoreg0 emppc0
 
1219
                                   emarg20 emresult0 emdest0
 
1220
                                   emregwrite0 emmemwrite0 emmemtoreg0
 
1221
                                   dmem0 mwval0 mwppc0 mwdest0
 
1222
                                   mwregwrite0 (g 'prf (g 'impl st21))
 
1223
                                   (g 'pdmemhist_1 (g 'impl st21))))
 
1224
                         (s_pc0_2 (g 'spc (g 'spec st22)))
 
1225
                         (s_rf0_2 (g 'srf (g 'spec st22)))
 
1226
                         (s_dmem0_2 (g 'sdmem (g 'spec st22)))
 
1227
                         (i_pc_2 (committedpc (g 'mwwrt (g 'impl st22))
 
1228
                                     (g 'mwppc (g 'impl st22))
 
1229
                                     (g 'emwrt (g 'impl st22))
 
1230
                                     (g 'emppc (g 'impl st22))
 
1231
                                     (g 'dewrt (g 'impl st22))
 
1232
                                     (g 'deppc (g 'impl st22))
 
1233
                                     (g 'fdwrt (g 'impl st22))
 
1234
                                     (g 'fdppc (g 'impl st22))
 
1235
                                     (g 'ppc (g 'impl st22))))
 
1236
                         (i_rf_2 (g 'prf (g 'impl st22)))
 
1237
                         (i_dmem_2 (g 'pdmemhist_1 (g 'impl st22)))
 
1238
                         (rank_v_2
 
1239
                             (rank (g 'mwwrt (g 'impl st22)) zero
 
1240
                                   (g 'emwrt (g 'impl st22))
 
1241
                                   (g 'dewrt (g 'impl st22))
 
1242
                                   (g 'fdwrt (g 'impl st22))))
 
1243
                         (st23 (simulate_a st22 nil t nil pc0 nil pc0
 
1244
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1245
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1246
                                   deuseimm0 deregwrite0 dememwrite0
 
1247
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1248
                                   emdest0 emregwrite0 emmemwrite0
 
1249
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1250
                                   mwdest0 mwregwrite0
 
1251
                                   (g 'prf (g 'impl st22))
 
1252
                                   (g 'pdmemhist_1 (g 'impl st22))))
 
1253
                         (s_pc1_2 (g 'spc (g 'spec st23)))
 
1254
                         (s_rf1_2 (g 'srf (g 'spec st23)))
 
1255
                         (s_dmem1_2 (g 'sdmem (g 'spec st23)))
 
1256
                         (st24 (simulate_a st23 t nil nil pc0 nil pc0
 
1257
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1258
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1259
                                   deuseimm0 deregwrite0 dememwrite0
 
1260
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1261
                                   emdest0 emregwrite0 emmemwrite0
 
1262
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1263
                                   mwdest0 mwregwrite0
 
1264
                                   (g 'prf (g 'impl st23))
 
1265
                                   (g 'pdmemhist_1 (g 'impl st23))))
 
1266
                         (st25 (simulate_a st24 nil nil nil pc0 nil pc0
 
1267
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1268
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1269
                                   deuseimm0 deregwrite0 dememwrite0
 
1270
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1271
                                   emdest0 emregwrite0 emmemwrite0
 
1272
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1273
                                   mwdest0 mwregwrite0
 
1274
                                   (g 'prf (g 'impl st24))
 
1275
                                   (g 'pdmemhist_1 (g 'impl st24))))
 
1276
                         (st26 (simulate_a st25 nil nil nil pc0 nil pc0
 
1277
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1278
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1279
                                   deuseimm0 deregwrite0 dememwrite0
 
1280
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1281
                                   emdest0 emregwrite0 emmemwrite0
 
1282
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1283
                                   mwdest0 mwregwrite0
 
1284
                                   (g 'prf (g 'impl st25))
 
1285
                                   (g 'pdmemhist_1 (g 'impl st25))))
 
1286
                         (i_pc0_3 (committedpc
 
1287
                                      (g 'mwwrt (g 'impl st26))
 
1288
                                      (g 'mwppc (g 'impl st26))
 
1289
                                      (g 'emwrt (g 'impl st26))
 
1290
                                      (g 'emppc (g 'impl st26))
 
1291
                                      (g 'dewrt (g 'impl st26))
 
1292
                                      (g 'deppc (g 'impl st26))
 
1293
                                      (g 'fdwrt (g 'impl st26))
 
1294
                                      (g 'fdppc (g 'impl st26))
 
1295
                                      (g 'ppc (g 'impl st26))))
 
1296
                         (i_rf0_3 (g 'prf (g 'impl st26)))
 
1297
                         (i_dmem0_3 (g 'pdmemhist_1 (g 'impl st26)))
 
1298
                         (rank_w_3
 
1299
                             (rank (g 'mwwrt (g 'impl st26)) zero
 
1300
                                   (g 'emwrt (g 'impl st26))
 
1301
                                   (g 'dewrt (g 'impl st26))
 
1302
                                   (g 'fdwrt (g 'impl st26))))
 
1303
                         (st27 (simulate_a st26 nil nil t i_pc0_3 nil
 
1304
                                   pc0 pc0 fdinst0 fdppc0 deppc0
 
1305
                                   desrc10 desrc20 a1 a2 dedest0 deop0
 
1306
                                   deimm0 deuseimm0 deregwrite0
 
1307
                                   dememwrite0 dememtoreg0 emppc0
 
1308
                                   emarg20 emresult0 emdest0
 
1309
                                   emregwrite0 emmemwrite0 emmemtoreg0
 
1310
                                   dmem0 mwval0 mwppc0 mwdest0
 
1311
                                   mwregwrite0 (g 'prf (g 'impl st26))
 
1312
                                   (g 'pdmemhist_1 (g 'impl st26))))
 
1313
                         (s_pc0_3 (g 'spc (g 'spec st27)))
 
1314
                         (s_rf0_3 (g 'srf (g 'spec st27)))
 
1315
                         (s_dmem0_3 (g 'sdmem (g 'spec st27)))
 
1316
                         (i_pc_3 (committedpc (g 'mwwrt (g 'impl st27))
 
1317
                                     (g 'mwppc (g 'impl st27))
 
1318
                                     (g 'emwrt (g 'impl st27))
 
1319
                                     (g 'emppc (g 'impl st27))
 
1320
                                     (g 'dewrt (g 'impl st27))
 
1321
                                     (g 'deppc (g 'impl st27))
 
1322
                                     (g 'fdwrt (g 'impl st27))
 
1323
                                     (g 'fdppc (g 'impl st27))
 
1324
                                     (g 'ppc (g 'impl st27))))
 
1325
                         (i_rf_3 (g 'prf (g 'impl st27)))
 
1326
                         (i_dmem_3 (g 'pdmemhist_1 (g 'impl st27)))
 
1327
                         (rank_v_3
 
1328
                             (rank (g 'mwwrt (g 'impl st27)) zero
 
1329
                                   (g 'emwrt (g 'impl st27))
 
1330
                                   (g 'dewrt (g 'impl st27))
 
1331
                                   (g 'fdwrt (g 'impl st27))))
 
1332
                         (st28 (simulate_a st27 nil t nil pc0 nil pc0
 
1333
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1334
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1335
                                   deuseimm0 deregwrite0 dememwrite0
 
1336
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1337
                                   emdest0 emregwrite0 emmemwrite0
 
1338
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1339
                                   mwdest0 mwregwrite0
 
1340
                                   (g 'prf (g 'impl st27))
 
1341
                                   (g 'pdmemhist_1 (g 'impl st27))))
 
1342
                         (s_pc1_3 (g 'spc (g 'spec st28)))
 
1343
                         (s_rf1_3 (g 'srf (g 'spec st28)))
 
1344
                         (s_dmem1_3 (g 'sdmem (g 'spec st28)))
 
1345
                         (st29 (simulate_a st28 t nil nil pc0 nil pc0
 
1346
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1347
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1348
                                   deuseimm0 deregwrite0 dememwrite0
 
1349
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1350
                                   emdest0 emregwrite0 emmemwrite0
 
1351
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1352
                                   mwdest0 mwregwrite0
 
1353
                                   (g 'prf (g 'impl st28))
 
1354
                                   (g 'pdmemhist_1 (g 'impl st28))))
 
1355
                         (st30 (simulate_a st29 nil nil nil pc0 nil pc0
 
1356
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1357
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1358
                                   deuseimm0 deregwrite0 dememwrite0
 
1359
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1360
                                   emdest0 emregwrite0 emmemwrite0
 
1361
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1362
                                   mwdest0 mwregwrite0
 
1363
                                   (g 'prf (g 'impl st29))
 
1364
                                   (g 'pdmemhist_1 (g 'impl st29))))
 
1365
                         (i_pc0_4 (committedpc
 
1366
                                      (g 'mwwrt (g 'impl st30))
 
1367
                                      (g 'mwppc (g 'impl st30))
 
1368
                                      (g 'emwrt (g 'impl st30))
 
1369
                                      (g 'emppc (g 'impl st30))
 
1370
                                      (g 'dewrt (g 'impl st30))
 
1371
                                      (g 'deppc (g 'impl st30))
 
1372
                                      (g 'fdwrt (g 'impl st30))
 
1373
                                      (g 'fdppc (g 'impl st30))
 
1374
                                      (g 'ppc (g 'impl st30))))
 
1375
                         (i_rf0_4 (g 'prf (g 'impl st30)))
 
1376
                         (i_dmem0_4 (g 'pdmemhist_1 (g 'impl st30)))
 
1377
                         (rank_w_4
 
1378
                             (rank (g 'mwwrt (g 'impl st30)) zero
 
1379
                                   (g 'emwrt (g 'impl st30))
 
1380
                                   (g 'dewrt (g 'impl st30))
 
1381
                                   (g 'fdwrt (g 'impl st30))))
 
1382
                         (st31 (simulate_a st30 nil nil t i_pc0_4 nil
 
1383
                                   pc0 pc0 fdinst0 fdppc0 deppc0
 
1384
                                   desrc10 desrc20 a1 a2 dedest0 deop0
 
1385
                                   deimm0 deuseimm0 deregwrite0
 
1386
                                   dememwrite0 dememtoreg0 emppc0
 
1387
                                   emarg20 emresult0 emdest0
 
1388
                                   emregwrite0 emmemwrite0 emmemtoreg0
 
1389
                                   dmem0 mwval0 mwppc0 mwdest0
 
1390
                                   mwregwrite0 (g 'prf (g 'impl st30))
 
1391
                                   (g 'pdmemhist_1 (g 'impl st30))))
 
1392
                         (s_pc0_4 (g 'spc (g 'spec st31)))
 
1393
                         (s_rf0_4 (g 'srf (g 'spec st31)))
 
1394
                         (s_dmem0_4 (g 'sdmem (g 'spec st31)))
 
1395
                         (i_pc_4 (committedpc (g 'mwwrt (g 'impl st31))
 
1396
                                     (g 'mwppc (g 'impl st31))
 
1397
                                     (g 'emwrt (g 'impl st31))
 
1398
                                     (g 'emppc (g 'impl st31))
 
1399
                                     (g 'dewrt (g 'impl st31))
 
1400
                                     (g 'deppc (g 'impl st31))
 
1401
                                     (g 'fdwrt (g 'impl st31))
 
1402
                                     (g 'fdppc (g 'impl st31))
 
1403
                                     (g 'ppc (g 'impl st31))))
 
1404
                         (i_rf_4 (g 'prf (g 'impl st31)))
 
1405
                         (i_dmem_4 (g 'pdmemhist_1 (g 'impl st31)))
 
1406
                         (rank_v_4
 
1407
                             (rank (g 'mwwrt (g 'impl st31)) zero
 
1408
                                   (g 'emwrt (g 'impl st31))
 
1409
                                   (g 'dewrt (g 'impl st31))
 
1410
                                   (g 'fdwrt (g 'impl st31))))
 
1411
                         (st32 (simulate_a st31 nil t nil pc0 nil pc0
 
1412
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1413
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1414
                                   deuseimm0 deregwrite0 dememwrite0
 
1415
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1416
                                   emdest0 emregwrite0 emmemwrite0
 
1417
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1418
                                   mwdest0 mwregwrite0
 
1419
                                   (g 'prf (g 'impl st31))
 
1420
                                   (g 'pdmemhist_1 (g 'impl st31))))
 
1421
                         (s_pc1_4 (g 'spc (g 'spec st32)))
 
1422
                         (s_rf1_4 (g 'srf (g 'spec st32)))
 
1423
                         (s_dmem1_4 (g 'sdmem (g 'spec st32)))
 
1424
                         (st33 (simulate_a st32 t nil nil pc0 nil pc0
 
1425
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1426
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1427
                                   deuseimm0 deregwrite0 dememwrite0
 
1428
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1429
                                   emdest0 emregwrite0 emmemwrite0
 
1430
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1431
                                   mwdest0 mwregwrite0
 
1432
                                   (g 'prf (g 'impl st32))
 
1433
                                   (g 'pdmemhist_1 (g 'impl st32))))
 
1434
                         (i_pc0_5 (committedpc
 
1435
                                      (g 'mwwrt (g 'impl st33))
 
1436
                                      (g 'mwppc (g 'impl st33))
 
1437
                                      (g 'emwrt (g 'impl st33))
 
1438
                                      (g 'emppc (g 'impl st33))
 
1439
                                      (g 'dewrt (g 'impl st33))
 
1440
                                      (g 'deppc (g 'impl st33))
 
1441
                                      (g 'fdwrt (g 'impl st33))
 
1442
                                      (g 'fdppc (g 'impl st33))
 
1443
                                      (g 'ppc (g 'impl st33))))
 
1444
                         (i_rf0_5 (g 'prf (g 'impl st33)))
 
1445
                         (i_dmem0_5 (g 'pdmemhist_1 (g 'impl st33)))
 
1446
                         (rank_w_5
 
1447
                             (rank (g 'mwwrt (g 'impl st33)) zero
 
1448
                                   (g 'emwrt (g 'impl st33))
 
1449
                                   (g 'dewrt (g 'impl st33))
 
1450
                                   (g 'fdwrt (g 'impl st33))))
 
1451
                         (st34 (simulate_a st33 nil nil t i_pc0_5 nil
 
1452
                                   pc0 pc0 fdinst0 fdppc0 deppc0
 
1453
                                   desrc10 desrc20 a1 a2 dedest0 deop0
 
1454
                                   deimm0 deuseimm0 deregwrite0
 
1455
                                   dememwrite0 dememtoreg0 emppc0
 
1456
                                   emarg20 emresult0 emdest0
 
1457
                                   emregwrite0 emmemwrite0 emmemtoreg0
 
1458
                                   dmem0 mwval0 mwppc0 mwdest0
 
1459
                                   mwregwrite0 (g 'prf (g 'impl st33))
 
1460
                                   (g 'pdmemhist_1 (g 'impl st33))))
 
1461
                         (s_pc0_5 (g 'spc (g 'spec st34)))
 
1462
                         (s_rf0_5 (g 'srf (g 'spec st34)))
 
1463
                         (s_dmem0_5 (g 'sdmem (g 'spec st34)))
 
1464
                         (i_pc_5 (committedpc (g 'mwwrt (g 'impl st34))
 
1465
                                     (g 'mwppc (g 'impl st34))
 
1466
                                     (g 'emwrt (g 'impl st34))
 
1467
                                     (g 'emppc (g 'impl st34))
 
1468
                                     (g 'dewrt (g 'impl st34))
 
1469
                                     (g 'deppc (g 'impl st34))
 
1470
                                     (g 'fdwrt (g 'impl st34))
 
1471
                                     (g 'fdppc (g 'impl st34))
 
1472
                                     (g 'ppc (g 'impl st34))))
 
1473
                         (i_rf_5 (g 'prf (g 'impl st34)))
 
1474
                         (i_dmem_5 (g 'pdmemhist_1 (g 'impl st34)))
 
1475
                         (rank_v_5
 
1476
                             (rank (g 'mwwrt (g 'impl st34)) zero
 
1477
                                   (g 'emwrt (g 'impl st34))
 
1478
                                   (g 'dewrt (g 'impl st34))
 
1479
                                   (g 'fdwrt (g 'impl st34))))
 
1480
                         (st35 (simulate_a st34 nil t nil pc0 nil pc0
 
1481
                                   pc0 fdinst0 fdppc0 deppc0 desrc10
 
1482
                                   desrc20 a1 a2 dedest0 deop0 deimm0
 
1483
                                   deuseimm0 deregwrite0 dememwrite0
 
1484
                                   dememtoreg0 emppc0 emarg20 emresult0
 
1485
                                   emdest0 emregwrite0 emmemwrite0
 
1486
                                   emmemtoreg0 dmem0 mwval0 mwppc0
 
1487
                                   mwdest0 mwregwrite0
 
1488
                                   (g 'prf (g 'impl st34))
 
1489
                                   (g 'pdmemhist_1 (g 'impl st34))))
 
1490
                         (s_pc1_5 (g 'spc (g 'spec st35)))
 
1491
                         (s_rf1_5 (g 'srf (g 'spec st35)))
 
1492
                         (s_dmem1_5 (g 'sdmem (g 'spec st35))))
 
1493
                    (and (and (and (and
 
1494
                                    (and good_ma_v
 
1495
                                     (or
 
1496
                                      (or
 
1497
                                       (not
 
1498
                                        (and
 
1499
                                         (and (equal s_pc0 i_pc0)
 
1500
                                          (equal (read-srf_a a1 s_rf0)
 
1501
                                           (read-prf_a a1 i_rf0)))
 
1502
                                         (equal s_dmem0 i_dmem0)))
 
1503
                                       (and
 
1504
                                        (and (equal s_pc1 i_pc)
 
1505
                                         (equal (read-srf_a a1 s_rf1)
 
1506
                                          (read-prf_a a1 i_rf)))
 
1507
                                        (equal s_dmem1 i_dmem)))
 
1508
                                      (and
 
1509
                                       (and
 
1510
                                        (and (equal s_pc0 i_pc)
 
1511
                                         (equal (read-srf_a a1 s_rf0)
 
1512
                                          (read-prf_a a1 i_rf)))
 
1513
                                        (equal s_dmem0 i_dmem))
 
1514
                                       (< rank_v rank_w))))
 
1515
                                    (or
 
1516
                                     (or
 
1517
                                      (not
 
1518
                                       (and
 
1519
                                        (and (equal s_pc0_2 i_pc0_2)
 
1520
                                         (equal (read-srf_a a1 s_rf0_2)
 
1521
                                          (read-prf_a a1 i_rf0_2)))
 
1522
                                        (equal s_dmem0_2 i_dmem0_2)))
 
1523
                                      (and
 
1524
                                       (and (equal s_pc1_2 i_pc_2)
 
1525
                                        (equal (read-srf_a a1 s_rf1_2)
 
1526
                                         (read-prf_a a1 i_rf_2)))
 
1527
                                       (equal s_dmem1_2 i_dmem_2)))
 
1528
                                     (and
 
1529
                                      (and
 
1530
                                       (and (equal s_pc0_2 i_pc_2)
 
1531
                                        (equal (read-srf_a a1 s_rf0_2)
 
1532
                                         (read-prf_a a1 i_rf_2)))
 
1533
                                       (equal s_dmem0_2 i_dmem_2))
 
1534
                                      (< rank_v_2 rank_w_2))))
 
1535
                                   (or
 
1536
                                    (or
 
1537
                                     (not
 
1538
                                      (and
 
1539
                                       (and (equal s_pc0_3 i_pc0_3)
 
1540
                                        (equal (read-srf_a a1 s_rf0_3)
 
1541
                                         (read-prf_a a1 i_rf0_3)))
 
1542
                                       (equal s_dmem0_3 i_dmem0_3)))
 
1543
                                     (and
 
1544
                                      (and (equal s_pc1_3 i_pc_3)
 
1545
                                       (equal (read-srf_a a1 s_rf1_3)
 
1546
                                        (read-prf_a a1 i_rf_3)))
 
1547
                                      (equal s_dmem1_3 i_dmem_3)))
 
1548
                                    (and
 
1549
                                     (and
 
1550
                                      (and (equal s_pc0_3 i_pc_3)
 
1551
                                       (equal (read-srf_a a1 s_rf0_3)
 
1552
                                        (read-prf_a a1 i_rf_3)))
 
1553
                                      (equal s_dmem0_3 i_dmem_3))
 
1554
                                     (< rank_v_3 rank_w_3))))
 
1555
                              (or (or (not
 
1556
                                       (and
 
1557
                                        (and (equal s_pc0_4 i_pc0_4)
 
1558
                                         (equal (read-srf_a a1 s_rf0_4)
 
1559
                                          (read-prf_a a1 i_rf0_4)))
 
1560
                                        (equal s_dmem0_4 i_dmem0_4)))
 
1561
                                      (and
 
1562
                                       (and (equal s_pc1_4 i_pc_4)
 
1563
                                        (equal (read-srf_a a1 s_rf1_4)
 
1564
                                         (read-prf_a a1 i_rf_4)))
 
1565
                                       (equal s_dmem1_4 i_dmem_4)))
 
1566
                                  (and (and
 
1567
                                        (and (equal s_pc0_4 i_pc_4)
 
1568
                                         (equal (read-srf_a a1 s_rf0_4)
 
1569
                                          (read-prf_a a1 i_rf_4)))
 
1570
                                        (equal s_dmem0_4 i_dmem_4))
 
1571
                                       (< rank_v_4 rank_w_4))))
 
1572
                         (or (or (not (and
 
1573
                                       (and (equal s_pc0_5 i_pc0_5)
 
1574
                                        (equal (read-srf_a a1 s_rf0_5)
 
1575
                                         (read-prf_a a1 i_rf0_5)))
 
1576
                                       (equal s_dmem0_5 i_dmem0_5)))
 
1577
                                 (and (and (equal s_pc1_5 i_pc_5)
 
1578
                                       (equal (read-srf_a a1 s_rf1_5)
 
1579
                                        (read-prf_a a1 i_rf_5)))
 
1580
                                      (equal s_dmem1_5 i_dmem_5)))
 
1581
                             (and (and (and (equal s_pc0_5 i_pc_5)
 
1582
                                        (equal (read-srf_a a1 s_rf0_5)
 
1583
                                         (read-prf_a a1 i_rf_5)))
 
1584
                                       (equal s_dmem0_5 i_dmem_5))
 
1585
                                  (< rank_v_5 rank_w_5))))))
 
1586
         :rule-classes nil)
 
1587