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

« back to all changes in this revision

Viewing changes to books/workshops/2004/manolios-srinivasan/support/Benchmark-Problems/fxs-bp-safety.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 ((nextdmem (x3 x2 x1) t))
 
17
     (local (defun nextdmem (x3 x2 x1)
 
18
              (declare (ignore x3) (ignore x2) (ignore x1))
 
19
              1))
 
20
     (defthm nextdmem-type (integerp (nextdmem x3 x2 x1))))
 
21
 
 
22
(encapsulate ((dmem_read (x2 x1) t))
 
23
     (local (defun dmem_read (x2 x1)
 
24
              (declare (ignore x2) (ignore x1))
 
25
              1))
 
26
     (defthm dmem_read-type (integerp (dmem_read x2 x1))))
 
27
 
 
28
(encapsulate ((rf0 (x1) t))
 
29
     (local (defun rf0 (x1) (declare (ignore x1)) 1))
 
30
     (defthm rf0-type (integerp (rf0 x1))))
 
31
 
 
32
(encapsulate ((imem0 (x1) t))
 
33
     (local (defun imem0 (x1) (declare (ignore x1)) 1))
 
34
     (defthm imem0-type (integerp (imem0 x1))))
 
35
 
 
36
(encapsulate ((src1 (x1) t))
 
37
     (local (defun src1 (x1) (declare (ignore x1)) 1))
 
38
     (defthm src1-type (integerp (src1 x1))))
 
39
 
 
40
(encapsulate ((src2 (x1) t))
 
41
     (local (defun src2 (x1) (declare (ignore x1)) 1))
 
42
     (defthm src2-type (integerp (src2 x1))))
 
43
 
 
44
(encapsulate ((opcode (x1) t))
 
45
     (local (defun opcode (x1) (declare (ignore x1)) 1))
 
46
     (defthm op-type (integerp (opcode x1))))
 
47
 
 
48
(encapsulate ((dest (x1) t))
 
49
     (local (defun dest (x1) (declare (ignore x1)) 1))
 
50
     (defthm dest-type (integerp (dest x1))))
 
51
 
 
52
(encapsulate ((alu (x3 x2 x1) t))
 
53
     (local (defun alu (x3 x2 x1)
 
54
              (declare (ignore x3) (ignore x2) (ignore x1))
 
55
              1))
 
56
     (defthm alu-type (integerp (alu x3 x2 x1))))
 
57
 
 
58
(encapsulate ((getregwrite (x1) t))
 
59
     (local (defun getregwrite (x1) (declare (ignore x1)) nil))
 
60
     (defthm getregwrite-type (booleanp (getregwrite x1))))
 
61
 
 
62
(encapsulate ((getmemtoreg (x1) t))
 
63
     (local (defun getmemtoreg (x1) (declare (ignore x1)) nil))
 
64
     (defthm getmemtoreg-type (booleanp (getmemtoreg x1))))
 
65
 
 
66
(encapsulate ((getuseimm (x1) t))
 
67
     (local (defun getuseimm (x1) (declare (ignore x1)) nil))
 
68
     (defthm getuseimm-type (booleanp (getuseimm x1))))
 
69
 
 
70
(encapsulate ((getimm (x1) t))
 
71
     (local (defun getimm (x1) (declare (ignore x1)) 1))
 
72
     (defthm getimm-type (integerp (getimm x1))))
 
73
 
 
74
(encapsulate ((getmemwrite (x1) t))
 
75
     (local (defun getmemwrite (x1) (declare (ignore x1)) nil))
 
76
     (defthm getmemwrite-type (booleanp (getmemwrite x1))))
 
77
 
 
78
(encapsulate ((getisbranch (x1) t))
 
79
     (local (defun getisbranch (x1) (declare (ignore x1)) nil))
 
80
     (defthm getisbranch-type (booleanp (getisbranch x1))))
 
81
 
 
82
(encapsulate ((takebranch (x3 x2 x1) t))
 
83
     (local (defun takebranch (x3 x2 x1)
 
84
              (declare (ignore x3) (ignore x2) (ignore x1))
 
85
              nil))
 
86
     (defthm takebranch-type (booleanp (takebranch x3 x2 x1))))
 
87
 
 
88
(encapsulate ((selecttargetpc (x3 x2 x1) t))
 
89
     (local (defun selecttargetpc (x3 x2 x1)
 
90
              (declare (ignore x3) (ignore x2) (ignore x1))
 
91
              1))
 
92
     (defthm selecttargetpc-type (integerp (selecttargetpc x3 x2 x1))))
 
93
 
 
94
(encapsulate ((nextbpstate (x1) t))
 
95
     (local (defun nextbpstate (x1) (declare (ignore x1)) 1))
 
96
     (defthm nextbpstate-type (integerp (nextbpstate x1))))
 
97
 
 
98
(encapsulate ((predictdirection (x1) t))
 
99
     (local (defun predictdirection (x1) (declare (ignore x1)) nil))
 
100
     (defthm predictdirection-type (booleanp (predictdirection x1))))
 
101
 
 
102
(encapsulate ((predicttarget (x1) t))
 
103
     (local (defun predicttarget (x1) (declare (ignore x1)) 1))
 
104
     (defthm predicttarget-type (integerp (predicttarget x1))))
 
105
 
 
106
(defun read-pimem_a (a pimem)
 
107
   (declare (xargs :measure (acl2-count pimem)))
 
108
   (if (endp pimem) (imem0 a)
 
109
       (if (g 0 (car pimem)) (imem0 a) (read-pimem_a a (cdr pimem)))))
 
110
 
 
111
(defun read-prf_a (a prf)
 
112
   (declare (xargs :measure (acl2-count prf)))
 
113
   (if (endp prf) (rf0 a)
 
114
       (if (g 0 (car prf)) (rf0 a)
 
115
           (cond
 
116
             ((g 1 (car prf)) (rf0 a))
 
117
             ((and (and (g 2 (car prf)) (equal a (g 3 (car prf))))
 
118
                   (g 4 (car prf)))
 
119
              (g 5 (car prf)))
 
120
             (t (read-prf_a a (cdr prf)))))))
 
121
 
 
122
(defun read-simem_a (a simem)
 
123
   (declare (xargs :measure (acl2-count simem)))
 
124
   (if (endp simem) (imem0 a)
 
125
       (if (g 0 (car simem)) (imem0 a)
 
126
           (cond
 
127
             ((g 1 (car simem)) (imem0 a))
 
128
             (t (read-simem_a a (cdr simem)))))))
 
129
 
 
130
(defun read-srf_a (a srf)
 
131
   (declare (xargs :measure (acl2-count srf)))
 
132
   (if (endp srf) (rf0 a)
 
133
       (if (g 0 (car srf)) (rf0 a)
 
134
           (cond
 
135
             ((g 1 (car srf)) (rf0 a))
 
136
             ((g 2 (car srf)) (read-prf_a a (g 3 (car srf))))
 
137
             ((and (and (g 4 (car srf))
 
138
                        (equal a (dest (g 5 (car srf)))))
 
139
                   (g 6 (car srf)))
 
140
              (g 7 (car srf)))
 
141
             (t (read-srf_a a (cdr srf)))))))
 
142
 
 
143
(defun u-state_a (impl spec) (seq nil 'impl impl 'spec spec))
 
144
 
 
145
(defun impl-state_a
 
146
        (pimem ppc bpstate ffpredicteddirection ffpredictedtarget ffwrt
 
147
               ffinst ffppc prf fdppc fdwrt fdinst fdpredicteddirection
 
148
               fdpredictedtarget deppc desrc1 desrc2 dearg1 dearg2
 
149
               dedest deop deimm deuseimm deregwrite dememwrite
 
150
               dememtoreg deisbranch dewrt depredicteddirection
 
151
               depredictedtarget emppc emis_taken_branch emtargetpc
 
152
               emarg2 emresult emdest emwrt emmispredictedtaken
 
153
               emmispredictednottaken emregwrite emmemwrite emmemtoreg
 
154
               pdmemhist_2 pdmemhist_1 pdmem mmppc mmval mmdest mmwrt
 
155
               mmregwrite mwppc mwval mwdest mwwrt mwregwrite)
 
156
   (seq nil 'pimem pimem 'ppc ppc 'bpstate bpstate
 
157
        'ffpredicteddirection ffpredicteddirection 'ffpredictedtarget
 
158
        ffpredictedtarget 'ffwrt ffwrt 'ffinst ffinst 'ffppc ffppc 'prf
 
159
        prf 'fdppc fdppc 'fdwrt fdwrt 'fdinst fdinst
 
160
        'fdpredicteddirection fdpredicteddirection 'fdpredictedtarget
 
161
        fdpredictedtarget 'deppc deppc 'desrc1 desrc1 'desrc2 desrc2
 
162
        'dearg1 dearg1 'dearg2 dearg2 'dedest dedest 'deop deop 'deimm
 
163
        deimm 'deuseimm deuseimm 'deregwrite deregwrite 'dememwrite
 
164
        dememwrite 'dememtoreg dememtoreg 'deisbranch deisbranch 'dewrt
 
165
        dewrt 'depredicteddirection depredicteddirection
 
166
        'depredictedtarget depredictedtarget 'emppc emppc
 
167
        'emis_taken_branch emis_taken_branch 'emtargetpc emtargetpc
 
168
        'emarg2 emarg2 'emresult emresult 'emdest emdest 'emwrt emwrt
 
169
        'emmispredictedtaken emmispredictedtaken
 
170
        'emmispredictednottaken emmispredictednottaken 'emregwrite
 
171
        emregwrite 'emmemwrite emmemwrite 'emmemtoreg emmemtoreg
 
172
        'pdmemhist_2 pdmemhist_2 'pdmemhist_1 pdmemhist_1 'pdmem pdmem
 
173
        'mmppc mmppc 'mmval mmval 'mmdest mmdest 'mmwrt mmwrt
 
174
        'mmregwrite mmregwrite 'mwppc mwppc 'mwval mwval 'mwdest mwdest
 
175
        'mwwrt mwwrt 'mwregwrite mwregwrite))
 
176
 
 
177
(defun initpimem_a (pimem) (cons (s 0 t (s 1 nil nil)) pimem))
 
178
 
 
179
(defun nextpimem_a (pimem) (cons (s 0 nil (s 1 nil nil)) pimem))
 
180
 
 
181
(defun initppc_a (pc0) pc0)
 
182
 
 
183
(defun nextppc_a
 
184
        (initi pc0 mem1_mispredicted_taken emppc
 
185
               mem1_mispredicted_nottaken emtargetpc stall flush ppc
 
186
               if_predict_branch_taken predicted_target)
 
187
   (cond
 
188
     (initi pc0)
 
189
     (mem1_mispredicted_taken emppc)
 
190
     (mem1_mispredicted_nottaken emtargetpc)
 
191
     ((or stall flush) ppc)
 
192
     (if_predict_branch_taken predicted_target)
 
193
     (t (add-1 ppc))))
 
194
 
 
195
(defun initbpstate_a (bpstate0) bpstate0)
 
196
 
 
197
(defun nextbpstate_a (initi bpstate0 stall bpstate)
 
198
   (cond (initi bpstate0) (stall bpstate) (t (nextbpstate bpstate))))
 
199
 
 
200
(defun initffpredicteddirection_a (ffpredicteddirection0)
 
201
   ffpredicteddirection0)
 
202
 
 
203
(defun nextffpredicteddirection_a
 
204
        (initi ffpredicteddirection0 stall ffpredicteddirection
 
205
               if_predict_branch_taken)
 
206
   (cond
 
207
     (initi ffpredicteddirection0)
 
208
     (stall ffpredicteddirection)
 
209
     (t if_predict_branch_taken)))
 
210
 
 
211
(defun initffpredictedtarget_a (ffpredictedtarget0)
 
212
   ffpredictedtarget0)
 
213
 
 
214
(defun nextffpredictedtarget_a
 
215
        (initi ffpredictedtarget0 stall ffpredictedtarget
 
216
               predicted_target)
 
217
   (cond
 
218
     (initi ffpredictedtarget0)
 
219
     (stall ffpredictedtarget)
 
220
     (t predicted_target)))
 
221
 
 
222
(defun initffwrt_a (ffwrt0) ffwrt0)
 
223
 
 
224
(defun nextffwrt_a (initi ffwrt0 squash stall ffwrt flush)
 
225
   (cond (initi ffwrt0) (squash nil) (stall ffwrt) (flush nil) (t t)))
 
226
 
 
227
(defun initffinst_a (ffinst0) ffinst0)
 
228
 
 
229
(defun nextffinst_a (initi ffinst0 stall ffinst if_inst)
 
230
   (cond (initi ffinst0) (stall ffinst) (t if_inst)))
 
231
 
 
232
(defun initffppc_a (ffppc0) ffppc0)
 
233
 
 
234
(defun nextffppc_a (initi ffppc0 stall ffppc ppc)
 
235
   (cond (initi ffppc0) (stall ffppc) (t ppc)))
 
236
 
 
237
(defun initprf_a (prf) (cons (s 0 t (s 1 nil nil)) prf))
 
238
 
 
239
(defun nextprf_a (prf initi mwwrt mwdest mwregwrite mwval)
 
240
   (cons (s 0 nil
 
241
            (s 1 initi
 
242
               (s 2 mwwrt
 
243
                  (s 3 mwdest (s 4 mwregwrite (s 5 mwval nil))))))
 
244
         prf))
 
245
 
 
246
(defun initfdppc_a (fdppc0) fdppc0)
 
247
 
 
248
(defun nextfdppc_a (initi fdppc0 stall fdppc ffppc)
 
249
   (cond (initi fdppc0) (stall fdppc) (t ffppc)))
 
250
 
 
251
(defun initfdwrt_a (fdwrt0) fdwrt0)
 
252
 
 
253
(defun nextfdwrt_a (initi fdwrt0 squash stall fdwrt ffwrt)
 
254
   (cond (initi fdwrt0) (squash nil) (stall fdwrt) (t ffwrt)))
 
255
 
 
256
(defun initfdinst_a (fdinst0) fdinst0)
 
257
 
 
258
(defun nextfdinst_a (initi fdinst0 stall fdinst ffinst)
 
259
   (cond (initi fdinst0) (stall fdinst) (t ffinst)))
 
260
 
 
261
(defun initfdpredicteddirection_a (fdpredicteddirection0)
 
262
   fdpredicteddirection0)
 
263
 
 
264
(defun nextfdpredicteddirection_a
 
265
        (initi fdpredicteddirection0 stall fdpredicteddirection
 
266
               ffpredicteddirection)
 
267
   (cond
 
268
     (initi fdpredicteddirection0)
 
269
     (stall fdpredicteddirection)
 
270
     (t ffpredicteddirection)))
 
271
 
 
272
(defun initfdpredictedtarget_a (fdpredictedtarget0)
 
273
   fdpredictedtarget0)
 
274
 
 
275
(defun nextfdpredictedtarget_a
 
276
        (initi fdpredictedtarget0 stall fdpredictedtarget
 
277
               ffpredictedtarget)
 
278
   (cond
 
279
     (initi fdpredictedtarget0)
 
280
     (stall fdpredictedtarget)
 
281
     (t ffpredictedtarget)))
 
282
 
 
283
(defun initdeppc_a (deppc0) deppc0)
 
284
 
 
285
(defun nextdeppc_a (initi deppc0 fdppc)
 
286
   (cond (initi deppc0) (t fdppc)))
 
287
 
 
288
(defun initdesrc1_a (desrc10) desrc10)
 
289
 
 
290
(defun nextdesrc1_a (initi desrc10 if_id_src1)
 
291
   (cond (initi desrc10) (t if_id_src1)))
 
292
 
 
293
(defun initdesrc2_a (desrc20) desrc20)
 
294
 
 
295
(defun nextdesrc2_a (initi desrc20 if_id_src2)
 
296
   (cond (initi desrc20) (t if_id_src2)))
 
297
 
 
298
(defun initdearg1_a (a1) a1)
 
299
 
 
300
(defun nextdearg1_a
 
301
        (initi a1 if_id_src1 prf mwwrt mwdest mwregwrite mwval)
 
302
   (cond
 
303
     (initi a1)
 
304
     (t (read-prf_a if_id_src1
 
305
            (nextprf_a prf initi mwwrt mwdest mwregwrite mwval)))))
 
306
 
 
307
(defun initdearg2_a (a2) a2)
 
308
 
 
309
(defun nextdearg2_a
 
310
        (initi a2 if_id_src2 prf mwwrt mwdest mwregwrite mwval)
 
311
   (cond
 
312
     (initi a2)
 
313
     (t (read-prf_a if_id_src2
 
314
            (nextprf_a prf initi mwwrt mwdest mwregwrite mwval)))))
 
315
 
 
316
(defun initdedest_a (dedest0) dedest0)
 
317
 
 
318
(defun nextdedest_a (initi dedest0 fdinst)
 
319
   (cond (initi dedest0) (t (dest fdinst))))
 
320
 
 
321
(defun initdeop_a (deop0) deop0)
 
322
 
 
323
(defun nextdeop_a (initi deop0 fdinst)
 
324
   (cond (initi deop0) (t (opcode fdinst))))
 
325
 
 
326
(defun initdeimm_a (deimm0) deimm0)
 
327
 
 
328
(defun nextdeimm_a (initi deimm0 fdinst)
 
329
   (cond (initi deimm0) (t (getimm fdinst))))
 
330
 
 
331
(defun initdeuseimm_a (deuseimm0) deuseimm0)
 
332
 
 
333
(defun nextdeuseimm_a (initi deuseimm0 fdinst)
 
334
   (cond (initi deuseimm0) (t (getuseimm fdinst))))
 
335
 
 
336
(defun initderegwrite_a (deregwrite0) deregwrite0)
 
337
 
 
338
(defun nextderegwrite_a (initi deregwrite0 id_regwrite)
 
339
   (cond (initi deregwrite0) (t id_regwrite)))
 
340
 
 
341
(defun initdememwrite_a (dememwrite0) dememwrite0)
 
342
 
 
343
(defun nextdememwrite_a (initi dememwrite0 id_memwrite)
 
344
   (cond (initi dememwrite0) (t id_memwrite)))
 
345
 
 
346
(defun initdememtoreg_a (dememtoreg0) dememtoreg0)
 
347
 
 
348
(defun nextdememtoreg_a (initi dememtoreg0 fdinst)
 
349
   (cond (initi dememtoreg0) (t (getmemtoreg fdinst))))
 
350
 
 
351
(defun initdeisbranch_a (deisbranch0) deisbranch0)
 
352
 
 
353
(defun nextdeisbranch_a (initi deisbranch0 fdinst)
 
354
   (cond (initi deisbranch0) (t (getisbranch fdinst))))
 
355
 
 
356
(defun initdewrt_a (dewrt0) dewrt0)
 
357
 
 
358
(defun nextdewrt_a (initi dewrt0 squash stall fdwrt)
 
359
   (cond (initi dewrt0) (squash nil) (t (and (not stall) fdwrt))))
 
360
 
 
361
(defun initdepredicteddirection_a (depredicteddirection0)
 
362
   depredicteddirection0)
 
363
 
 
364
(defun nextdepredicteddirection_a
 
365
        (initi depredicteddirection0 stall depredicteddirection
 
366
               fdpredicteddirection)
 
367
   (cond
 
368
     (initi depredicteddirection0)
 
369
     (stall depredicteddirection)
 
370
     (t fdpredicteddirection)))
 
371
 
 
372
(defun initdepredictedtarget_a (depredictedtarget0)
 
373
   depredictedtarget0)
 
374
 
 
375
(defun nextdepredictedtarget_a
 
376
        (initi depredictedtarget0 stall depredictedtarget
 
377
               fdpredictedtarget)
 
378
   (cond
 
379
     (initi depredictedtarget0)
 
380
     (stall depredictedtarget)
 
381
     (t fdpredictedtarget)))
 
382
 
 
383
(defun initemppc_a (emppc0) emppc0)
 
384
 
 
385
(defun nextemppc_a (initi emppc0 deppc)
 
386
   (cond (initi emppc0) (t deppc)))
 
387
 
 
388
(defun initemis_taken_branch_a (emis_taken_branch0)
 
389
   emis_taken_branch0)
 
390
 
 
391
(defun nextemis_taken_branch_a
 
392
        (initi emis_taken_branch0 ex_is_taken_branch)
 
393
   (cond (initi emis_taken_branch0) (t ex_is_taken_branch)))
 
394
 
 
395
(defun initemtargetpc_a (emtargetpc0) emtargetpc0)
 
396
 
 
397
(defun nextemtargetpc_a (initi emtargetpc0 ex_targetpc)
 
398
   (cond (initi emtargetpc0) (t ex_targetpc)))
 
399
 
 
400
(defun initemarg2_a (emarg20) emarg20)
 
401
 
 
402
(defun nextemarg2_a (initi emarg20 ex_fwd_src2)
 
403
   (cond (initi emarg20) (t ex_fwd_src2)))
 
404
 
 
405
(defun initemresult_a (emresult0) emresult0)
 
406
 
 
407
(defun nextemresult_a (initi emresult0 ex_result)
 
408
   (cond (initi emresult0) (t ex_result)))
 
409
 
 
410
(defun initemdest_a (emdest0) emdest0)
 
411
 
 
412
(defun nextemdest_a (initi emdest0 dedest)
 
413
   (cond (initi emdest0) (t dedest)))
 
414
 
 
415
(defun initemwrt_a (emwrt0) emwrt0)
 
416
 
 
417
(defun nextemwrt_a (initi emwrt0 squash dewrt)
 
418
   (cond (initi emwrt0) (squash nil) (t dewrt)))
 
419
 
 
420
(defun initemmispredictedtaken_a (emmispredictedtaken0)
 
421
   emmispredictedtaken0)
 
422
 
 
423
(defun nextemmispredictedtaken_a
 
424
        (initi emmispredictedtaken0 mispredicted_taken)
 
425
   (cond (initi emmispredictedtaken0) (t mispredicted_taken)))
 
426
 
 
427
(defun initemmispredictednottaken_a (emmispredictednottaken0)
 
428
   emmispredictednottaken0)
 
429
 
 
430
(defun nextemmispredictednottaken_a
 
431
        (initi emmispredictednottaken0 mispredicted_nottaken)
 
432
   (cond (initi emmispredictednottaken0) (t mispredicted_nottaken)))
 
433
 
 
434
(defun initemregwrite_a (emregwrite0) emregwrite0)
 
435
 
 
436
(defun nextemregwrite_a (initi emregwrite0 deregwrite)
 
437
   (cond (initi emregwrite0) (t deregwrite)))
 
438
 
 
439
(defun initemmemwrite_a (emmemwrite0) emmemwrite0)
 
440
 
 
441
(defun nextemmemwrite_a (initi emmemwrite0 dememwrite)
 
442
   (cond (initi emmemwrite0) (t dememwrite)))
 
443
 
 
444
(defun initemmemtoreg_a (emmemtoreg0) emmemtoreg0)
 
445
 
 
446
(defun nextemmemtoreg_a (initi emmemtoreg0 dememtoreg)
 
447
   (cond (initi emmemtoreg0) (t dememtoreg)))
 
448
 
 
449
(defun initpdmemhist_2_a (dmem0) dmem0)
 
450
 
 
451
(defun nextpdmemhist_2_a (initi dmem0 pdmemhist_1)
 
452
   (cond (initi dmem0) (t pdmemhist_1)))
 
453
 
 
454
(defun initpdmemhist_1_a (dmem0) dmem0)
 
455
 
 
456
(defun nextpdmemhist_1_a (initi dmem0 pdmem)
 
457
   (cond (initi dmem0) (t pdmem)))
 
458
 
 
459
(defun initpdmem_a (dmem0) dmem0)
 
460
 
 
461
(defun nextpdmem_a
 
462
        (initi dmem0 emwrt emmemwrite pdmem emresult emarg2)
 
463
   (cond
 
464
     (initi dmem0)
 
465
     ((and emwrt emmemwrite) (nextdmem pdmem emresult emarg2))
 
466
     (t pdmem)))
 
467
 
 
468
(defun initmmppc_a (mmppc0) mmppc0)
 
469
 
 
470
(defun nextmmppc_a (initi mmppc0 emppc)
 
471
   (cond (initi mmppc0) (t emppc)))
 
472
 
 
473
(defun initmmval_a (mmval0) mmval0)
 
474
 
 
475
(defun nextmmval_a (initi mmval0 emmemtoreg mem1_readdata emresult)
 
476
   (cond (initi mmval0) (emmemtoreg mem1_readdata) (t emresult)))
 
477
 
 
478
(defun initmmdest_a (mmdest0) mmdest0)
 
479
 
 
480
(defun nextmmdest_a (initi mmdest0 emdest)
 
481
   (cond (initi mmdest0) (t emdest)))
 
482
 
 
483
(defun initmmwrt_a (mmwrt0) mmwrt0)
 
484
 
 
485
(defun nextmmwrt_a (initi mmwrt0 emwrt)
 
486
   (cond (initi mmwrt0) (t emwrt)))
 
487
 
 
488
(defun initmmregwrite_a (mmregwrite0) mmregwrite0)
 
489
 
 
490
(defun nextmmregwrite_a (initi mmregwrite0 emregwrite)
 
491
   (cond (initi mmregwrite0) (t emregwrite)))
 
492
 
 
493
(defun initmwppc_a (mwppc0) mwppc0)
 
494
 
 
495
(defun nextmwppc_a (initi mwppc0 mmppc)
 
496
   (cond (initi mwppc0) (t mmppc)))
 
497
 
 
498
(defun initmwval_a (mwval0) mwval0)
 
499
 
 
500
(defun nextmwval_a (initi mwval0 mmval)
 
501
   (cond (initi mwval0) (t mmval)))
 
502
 
 
503
(defun initmwdest_a (mwdest0) mwdest0)
 
504
 
 
505
(defun nextmwdest_a (initi mwdest0 mmdest)
 
506
   (cond (initi mwdest0) (t mmdest)))
 
507
 
 
508
(defun initmwwrt_a (mwwrt0) mwwrt0)
 
509
 
 
510
(defun nextmwwrt_a (initi mwwrt0 mmwrt)
 
511
   (cond (initi mwwrt0) (t mmwrt)))
 
512
 
 
513
(defun initmwregwrite_a (mwregwrite0) mwregwrite0)
 
514
 
 
515
(defun nextmwregwrite_a (initi mwregwrite0 mmregwrite)
 
516
   (cond (initi mwregwrite0) (t mmregwrite)))
 
517
 
 
518
(defun impl-simulate_a
 
519
        (impl initi pc0 flush bpstate0 ffpredicteddirection0
 
520
              ffpredictedtarget0 ffwrt0 ffinst0 ffppc0 fdppc0 fdwrt0
 
521
              fdinst0 fdpredicteddirection0 fdpredictedtarget0 deppc0
 
522
              desrc10 desrc20 a1 a2 dedest0 deop0 deimm0 deuseimm0
 
523
              deregwrite0 dememwrite0 dememtoreg0 deisbranch0 dewrt0
 
524
              depredicteddirection0 depredictedtarget0 emppc0
 
525
              emis_taken_branch0 emtargetpc0 emarg20 emresult0 emdest0
 
526
              emwrt0 emmispredictedtaken0 emmispredictednottaken0
 
527
              emregwrite0 emmemwrite0 emmemtoreg0 dmem0 mmppc0 mmval0
 
528
              mmdest0 mmwrt0 mmregwrite0 mwppc0 mwval0 mwdest0 mwwrt0
 
529
              mwregwrite0)
 
530
   (let* ((pimem (g 'pimem impl)) (ppc (g 'ppc impl))
 
531
          (bpstate (g 'bpstate impl))
 
532
          (ffpredicteddirection (g 'ffpredicteddirection impl))
 
533
          (ffpredictedtarget (g 'ffpredictedtarget impl))
 
534
          (ffwrt (g 'ffwrt impl)) (ffinst (g 'ffinst impl))
 
535
          (ffppc (g 'ffppc impl)) (prf (g 'prf impl))
 
536
          (fdppc (g 'fdppc impl)) (fdwrt (g 'fdwrt impl))
 
537
          (fdinst (g 'fdinst impl))
 
538
          (fdpredicteddirection (g 'fdpredicteddirection impl))
 
539
          (fdpredictedtarget (g 'fdpredictedtarget impl))
 
540
          (deppc (g 'deppc impl)) (desrc1 (g 'desrc1 impl))
 
541
          (desrc2 (g 'desrc2 impl)) (dearg1 (g 'dearg1 impl))
 
542
          (dearg2 (g 'dearg2 impl)) (dedest (g 'dedest impl))
 
543
          (deop (g 'deop impl)) (deimm (g 'deimm impl))
 
544
          (deuseimm (g 'deuseimm impl))
 
545
          (deregwrite (g 'deregwrite impl))
 
546
          (dememwrite (g 'dememwrite impl))
 
547
          (dememtoreg (g 'dememtoreg impl))
 
548
          (deisbranch (g 'deisbranch impl)) (dewrt (g 'dewrt impl))
 
549
          (depredicteddirection (g 'depredicteddirection impl))
 
550
          (depredictedtarget (g 'depredictedtarget impl))
 
551
          (emppc (g 'emppc impl))
 
552
          (emis_taken_branch (g 'emis_taken_branch impl))
 
553
          (emtargetpc (g 'emtargetpc impl)) (emarg2 (g 'emarg2 impl))
 
554
          (emresult (g 'emresult impl)) (emdest (g 'emdest impl))
 
555
          (emwrt (g 'emwrt impl))
 
556
          (emmispredictedtaken (g 'emmispredictedtaken impl))
 
557
          (emmispredictednottaken (g 'emmispredictednottaken impl))
 
558
          (emregwrite (g 'emregwrite impl))
 
559
          (emmemwrite (g 'emmemwrite impl))
 
560
          (emmemtoreg (g 'emmemtoreg impl))
 
561
          (pdmemhist_2 (g 'pdmemhist_2 impl))
 
562
          (pdmemhist_1 (g 'pdmemhist_1 impl)) (pdmem (g 'pdmem impl))
 
563
          (mmppc (g 'mmppc impl)) (mmval (g 'mmval impl))
 
564
          (mmdest (g 'mmdest impl)) (mmwrt (g 'mmwrt impl))
 
565
          (mmregwrite (g 'mmregwrite impl)) (mwppc (g 'mwppc impl))
 
566
          (mwval (g 'mwval impl)) (mwdest (g 'mwdest impl))
 
567
          (mwwrt (g 'mwwrt impl)) (mwregwrite (g 'mwregwrite impl)))
 
568
     (let* ((if_inst (read-pimem_a ppc pimem))
 
569
            (predicted_direction (predictdirection bpstate))
 
570
            (predicted_target (predicttarget bpstate))
 
571
            (if_predict_branch_taken
 
572
                (and (getisbranch if_inst) predicted_direction))
 
573
            (if_id_src1 (src1 fdinst)) (if_id_src2 (src2 fdinst))
 
574
            (stall (and (and deregwrite dewrt)
 
575
                        (or (equal if_id_src1 dedest)
 
576
                            (equal if_id_src2 dedest))))
 
577
            (id_regwrite (getregwrite fdinst))
 
578
            (id_memwrite (getmemwrite fdinst))
 
579
            (ex_wb_equal_src1
 
580
                (and (and mwwrt (equal desrc1 mwdest)) mwregwrite))
 
581
            (ex_wb_equal_src2
 
582
                (and (and mwwrt (equal desrc2 mwdest)) mwregwrite))
 
583
            (ex_mem2_equal_src1
 
584
                (and (and mmwrt (equal desrc1 mmdest)) mmregwrite))
 
585
            (ex_mem2_equal_src2
 
586
                (and (and mmwrt (equal desrc2 mmdest)) mmregwrite))
 
587
            (ex_fwd_src1
 
588
                (cond
 
589
                  (ex_mem2_equal_src1 mmval)
 
590
                  (ex_wb_equal_src1 mwval)
 
591
                  (t dearg1)))
 
592
            (ex_fwd_src2
 
593
                (cond
 
594
                  (ex_mem2_equal_src2 mmval)
 
595
                  (ex_wb_equal_src2 mwval)
 
596
                  (t dearg2)))
 
597
            (ex_data2 (cond (deuseimm deimm) (t ex_fwd_src2)))
 
598
            (ex_result (alu deop ex_fwd_src1 ex_data2))
 
599
            (ex_is_taken_branch_temp
 
600
                (takebranch deop ex_fwd_src1 ex_fwd_src2))
 
601
            (ex_is_taken_branch
 
602
                (and (and ex_is_taken_branch_temp dewrt) deisbranch))
 
603
            (ex_targetpc (selecttargetpc deop ex_fwd_src1 deppc))
 
604
            (equal_targetpc (equal ex_targetpc depredictedtarget))
 
605
            (equal_targetpc_bar (not equal_targetpc))
 
606
            (ex_predicteddirection depredicteddirection)
 
607
            (mispredicted_nottaken_case1
 
608
                (and ex_is_taken_branch (not ex_predicteddirection)))
 
609
            (mispredicted_nottaken_case2
 
610
                (and ex_is_taken_branch equal_targetpc_bar))
 
611
            (mispredicted_nottaken
 
612
                (or mispredicted_nottaken_case1
 
613
                    mispredicted_nottaken_case2))
 
614
            (mispredicted_taken
 
615
                (and (and ex_predicteddirection deisbranch)
 
616
                     (not ex_is_taken_branch)))
 
617
            (mem1_readdata (dmem_read pdmem emresult))
 
618
            (mem1_is_taken_branch (and emwrt emis_taken_branch))
 
619
            (mem1_mispredicted_taken (and emmispredictedtaken emwrt))
 
620
            (mem1_mispredicted_nottaken
 
621
                (and emmispredictednottaken emwrt))
 
622
            (mem1_mispredicted
 
623
                (or mem1_mispredicted_nottaken mem1_mispredicted_taken))
 
624
            (squash mem1_mispredicted))
 
625
       (impl-state_a (nextpimem_a pimem)
 
626
           (nextppc_a initi pc0 mem1_mispredicted_taken emppc
 
627
               mem1_mispredicted_nottaken emtargetpc stall flush ppc
 
628
               if_predict_branch_taken predicted_target)
 
629
           (nextbpstate_a initi bpstate0 stall bpstate)
 
630
           (nextffpredicteddirection_a initi ffpredicteddirection0
 
631
               stall ffpredicteddirection if_predict_branch_taken)
 
632
           (nextffpredictedtarget_a initi ffpredictedtarget0 stall
 
633
               ffpredictedtarget predicted_target)
 
634
           (nextffwrt_a initi ffwrt0 squash stall ffwrt flush)
 
635
           (nextffinst_a initi ffinst0 stall ffinst if_inst)
 
636
           (nextffppc_a initi ffppc0 stall ffppc ppc)
 
637
           (nextprf_a prf initi mwwrt mwdest mwregwrite mwval)
 
638
           (nextfdppc_a initi fdppc0 stall fdppc ffppc)
 
639
           (nextfdwrt_a initi fdwrt0 squash stall fdwrt ffwrt)
 
640
           (nextfdinst_a initi fdinst0 stall fdinst ffinst)
 
641
           (nextfdpredicteddirection_a initi fdpredicteddirection0
 
642
               stall fdpredicteddirection ffpredicteddirection)
 
643
           (nextfdpredictedtarget_a initi fdpredictedtarget0 stall
 
644
               fdpredictedtarget ffpredictedtarget)
 
645
           (nextdeppc_a initi deppc0 fdppc)
 
646
           (nextdesrc1_a initi desrc10 if_id_src1)
 
647
           (nextdesrc2_a initi desrc20 if_id_src2)
 
648
           (nextdearg1_a initi a1 if_id_src1 prf mwwrt mwdest
 
649
               mwregwrite mwval)
 
650
           (nextdearg2_a initi a2 if_id_src2 prf mwwrt mwdest
 
651
               mwregwrite mwval)
 
652
           (nextdedest_a initi dedest0 fdinst)
 
653
           (nextdeop_a initi deop0 fdinst)
 
654
           (nextdeimm_a initi deimm0 fdinst)
 
655
           (nextdeuseimm_a initi deuseimm0 fdinst)
 
656
           (nextderegwrite_a initi deregwrite0 id_regwrite)
 
657
           (nextdememwrite_a initi dememwrite0 id_memwrite)
 
658
           (nextdememtoreg_a initi dememtoreg0 fdinst)
 
659
           (nextdeisbranch_a initi deisbranch0 fdinst)
 
660
           (nextdewrt_a initi dewrt0 squash stall fdwrt)
 
661
           (nextdepredicteddirection_a initi depredicteddirection0
 
662
               stall depredicteddirection fdpredicteddirection)
 
663
           (nextdepredictedtarget_a initi depredictedtarget0 stall
 
664
               depredictedtarget fdpredictedtarget)
 
665
           (nextemppc_a initi emppc0 deppc)
 
666
           (nextemis_taken_branch_a initi emis_taken_branch0
 
667
               ex_is_taken_branch)
 
668
           (nextemtargetpc_a initi emtargetpc0 ex_targetpc)
 
669
           (nextemarg2_a initi emarg20 ex_fwd_src2)
 
670
           (nextemresult_a initi emresult0 ex_result)
 
671
           (nextemdest_a initi emdest0 dedest)
 
672
           (nextemwrt_a initi emwrt0 squash dewrt)
 
673
           (nextemmispredictedtaken_a initi emmispredictedtaken0
 
674
               mispredicted_taken)
 
675
           (nextemmispredictednottaken_a initi emmispredictednottaken0
 
676
               mispredicted_nottaken)
 
677
           (nextemregwrite_a initi emregwrite0 deregwrite)
 
678
           (nextemmemwrite_a initi emmemwrite0 dememwrite)
 
679
           (nextemmemtoreg_a initi emmemtoreg0 dememtoreg)
 
680
           (nextpdmemhist_2_a initi dmem0 pdmemhist_1)
 
681
           (nextpdmemhist_1_a initi dmem0 pdmem)
 
682
           (nextpdmem_a initi dmem0 emwrt emmemwrite pdmem emresult
 
683
               emarg2)
 
684
           (nextmmppc_a initi mmppc0 emppc)
 
685
           (nextmmval_a initi mmval0 emmemtoreg mem1_readdata emresult)
 
686
           (nextmmdest_a initi mmdest0 emdest)
 
687
           (nextmmwrt_a initi mmwrt0 emwrt)
 
688
           (nextmmregwrite_a initi mmregwrite0 emregwrite)
 
689
           (nextmwppc_a initi mwppc0 mmppc)
 
690
           (nextmwval_a initi mwval0 mmval)
 
691
           (nextmwdest_a initi mwdest0 mmdest)
 
692
           (nextmwwrt_a initi mwwrt0 mmwrt)
 
693
           (nextmwregwrite_a initi mwregwrite0 mmregwrite)))))
 
694
 
 
695
(defun impl-initialize_a
 
696
        (impl pc0 bpstate0 ffpredicteddirection0 ffpredictedtarget0
 
697
              ffwrt0 ffinst0 ffppc0 fdppc0 fdwrt0 fdinst0
 
698
              fdpredicteddirection0 fdpredictedtarget0 deppc0 desrc10
 
699
              desrc20 a1 a2 dedest0 deop0 deimm0 deuseimm0 deregwrite0
 
700
              dememwrite0 dememtoreg0 deisbranch0 dewrt0
 
701
              depredicteddirection0 depredictedtarget0 emppc0
 
702
              emis_taken_branch0 emtargetpc0 emarg20 emresult0 emdest0
 
703
              emwrt0 emmispredictedtaken0 emmispredictednottaken0
 
704
              emregwrite0 emmemwrite0 emmemtoreg0 dmem0 mmppc0 mmval0
 
705
              mmdest0 mmwrt0 mmregwrite0 mwppc0 mwval0 mwdest0 mwwrt0
 
706
              mwregwrite0)
 
707
   (let* ((pimem (g 'pimem impl)) (ppc (g 'ppc impl))
 
708
          (bpstate (g 'bpstate impl))
 
709
          (ffpredicteddirection (g 'ffpredicteddirection impl))
 
710
          (ffpredictedtarget (g 'ffpredictedtarget impl))
 
711
          (ffwrt (g 'ffwrt impl)) (ffinst (g 'ffinst impl))
 
712
          (ffppc (g 'ffppc impl)) (prf (g 'prf impl))
 
713
          (fdppc (g 'fdppc impl)) (fdwrt (g 'fdwrt impl))
 
714
          (fdinst (g 'fdinst impl))
 
715
          (fdpredicteddirection (g 'fdpredicteddirection impl))
 
716
          (fdpredictedtarget (g 'fdpredictedtarget impl))
 
717
          (deppc (g 'deppc impl)) (desrc1 (g 'desrc1 impl))
 
718
          (desrc2 (g 'desrc2 impl)) (dearg1 (g 'dearg1 impl))
 
719
          (dearg2 (g 'dearg2 impl)) (dedest (g 'dedest impl))
 
720
          (deop (g 'deop impl)) (deimm (g 'deimm impl))
 
721
          (deuseimm (g 'deuseimm impl))
 
722
          (deregwrite (g 'deregwrite impl))
 
723
          (dememwrite (g 'dememwrite impl))
 
724
          (dememtoreg (g 'dememtoreg impl))
 
725
          (deisbranch (g 'deisbranch impl)) (dewrt (g 'dewrt impl))
 
726
          (depredicteddirection (g 'depredicteddirection impl))
 
727
          (depredictedtarget (g 'depredictedtarget impl))
 
728
          (emppc (g 'emppc impl))
 
729
          (emis_taken_branch (g 'emis_taken_branch impl))
 
730
          (emtargetpc (g 'emtargetpc impl)) (emarg2 (g 'emarg2 impl))
 
731
          (emresult (g 'emresult impl)) (emdest (g 'emdest impl))
 
732
          (emwrt (g 'emwrt impl))
 
733
          (emmispredictedtaken (g 'emmispredictedtaken impl))
 
734
          (emmispredictednottaken (g 'emmispredictednottaken impl))
 
735
          (emregwrite (g 'emregwrite impl))
 
736
          (emmemwrite (g 'emmemwrite impl))
 
737
          (emmemtoreg (g 'emmemtoreg impl))
 
738
          (pdmemhist_2 (g 'pdmemhist_2 impl))
 
739
          (pdmemhist_1 (g 'pdmemhist_1 impl)) (pdmem (g 'pdmem impl))
 
740
          (mmppc (g 'mmppc impl)) (mmval (g 'mmval impl))
 
741
          (mmdest (g 'mmdest impl)) (mmwrt (g 'mmwrt impl))
 
742
          (mmregwrite (g 'mmregwrite impl)) (mwppc (g 'mwppc impl))
 
743
          (mwval (g 'mwval impl)) (mwdest (g 'mwdest impl))
 
744
          (mwwrt (g 'mwwrt impl)) (mwregwrite (g 'mwregwrite impl)))
 
745
     (let* ((if_inst (read-pimem_a ppc pimem))
 
746
            (predicted_direction (predictdirection bpstate))
 
747
            (predicted_target (predicttarget bpstate))
 
748
            (if_predict_branch_taken
 
749
                (and (getisbranch if_inst) predicted_direction))
 
750
            (if_id_src1 (src1 fdinst)) (if_id_src2 (src2 fdinst))
 
751
            (stall (and (and deregwrite dewrt)
 
752
                        (or (equal if_id_src1 dedest)
 
753
                            (equal if_id_src2 dedest))))
 
754
            (id_regwrite (getregwrite fdinst))
 
755
            (id_memwrite (getmemwrite fdinst))
 
756
            (ex_wb_equal_src1
 
757
                (and (and mwwrt (equal desrc1 mwdest)) mwregwrite))
 
758
            (ex_wb_equal_src2
 
759
                (and (and mwwrt (equal desrc2 mwdest)) mwregwrite))
 
760
            (ex_mem2_equal_src1
 
761
                (and (and mmwrt (equal desrc1 mmdest)) mmregwrite))
 
762
            (ex_mem2_equal_src2
 
763
                (and (and mmwrt (equal desrc2 mmdest)) mmregwrite))
 
764
            (ex_fwd_src1
 
765
                (cond
 
766
                  (ex_mem2_equal_src1 mmval)
 
767
                  (ex_wb_equal_src1 mwval)
 
768
                  (t dearg1)))
 
769
            (ex_fwd_src2
 
770
                (cond
 
771
                  (ex_mem2_equal_src2 mmval)
 
772
                  (ex_wb_equal_src2 mwval)
 
773
                  (t dearg2)))
 
774
            (ex_data2 (cond (deuseimm deimm) (t ex_fwd_src2)))
 
775
            (ex_result (alu deop ex_fwd_src1 ex_data2))
 
776
            (ex_is_taken_branch_temp
 
777
                (takebranch deop ex_fwd_src1 ex_fwd_src2))
 
778
            (ex_is_taken_branch
 
779
                (and (and ex_is_taken_branch_temp dewrt) deisbranch))
 
780
            (ex_targetpc (selecttargetpc deop ex_fwd_src1 deppc))
 
781
            (equal_targetpc (equal ex_targetpc depredictedtarget))
 
782
            (equal_targetpc_bar (not equal_targetpc))
 
783
            (ex_predicteddirection depredicteddirection)
 
784
            (mispredicted_nottaken_case1
 
785
                (and ex_is_taken_branch (not ex_predicteddirection)))
 
786
            (mispredicted_nottaken_case2
 
787
                (and ex_is_taken_branch equal_targetpc_bar))
 
788
            (mispredicted_nottaken
 
789
                (or mispredicted_nottaken_case1
 
790
                    mispredicted_nottaken_case2))
 
791
            (mispredicted_taken
 
792
                (and (and ex_predicteddirection deisbranch)
 
793
                     (not ex_is_taken_branch)))
 
794
            (mem1_readdata (dmem_read pdmem emresult))
 
795
            (mem1_is_taken_branch (and emwrt emis_taken_branch))
 
796
            (mem1_mispredicted_taken (and emmispredictedtaken emwrt))
 
797
            (mem1_mispredicted_nottaken
 
798
                (and emmispredictednottaken emwrt))
 
799
            (mem1_mispredicted
 
800
                (or mem1_mispredicted_nottaken mem1_mispredicted_taken))
 
801
            (squash mem1_mispredicted))
 
802
       (impl-state_a (initpimem_a pimem) (initppc_a pc0)
 
803
           (initbpstate_a bpstate0)
 
804
           (initffpredicteddirection_a ffpredicteddirection0)
 
805
           (initffpredictedtarget_a ffpredictedtarget0)
 
806
           (initffwrt_a ffwrt0) (initffinst_a ffinst0)
 
807
           (initffppc_a ffppc0) (initprf_a prf) (initfdppc_a fdppc0)
 
808
           (initfdwrt_a fdwrt0) (initfdinst_a fdinst0)
 
809
           (initfdpredicteddirection_a fdpredicteddirection0)
 
810
           (initfdpredictedtarget_a fdpredictedtarget0)
 
811
           (initdeppc_a deppc0) (initdesrc1_a desrc10)
 
812
           (initdesrc2_a desrc20) (initdearg1_a a1) (initdearg2_a a2)
 
813
           (initdedest_a dedest0) (initdeop_a deop0)
 
814
           (initdeimm_a deimm0) (initdeuseimm_a deuseimm0)
 
815
           (initderegwrite_a deregwrite0)
 
816
           (initdememwrite_a dememwrite0)
 
817
           (initdememtoreg_a dememtoreg0)
 
818
           (initdeisbranch_a deisbranch0) (initdewrt_a dewrt0)
 
819
           (initdepredicteddirection_a depredicteddirection0)
 
820
           (initdepredictedtarget_a depredictedtarget0)
 
821
           (initemppc_a emppc0)
 
822
           (initemis_taken_branch_a emis_taken_branch0)
 
823
           (initemtargetpc_a emtargetpc0) (initemarg2_a emarg20)
 
824
           (initemresult_a emresult0) (initemdest_a emdest0)
 
825
           (initemwrt_a emwrt0)
 
826
           (initemmispredictedtaken_a emmispredictedtaken0)
 
827
           (initemmispredictednottaken_a emmispredictednottaken0)
 
828
           (initemregwrite_a emregwrite0)
 
829
           (initemmemwrite_a emmemwrite0)
 
830
           (initemmemtoreg_a emmemtoreg0) (initpdmemhist_2_a dmem0)
 
831
           (initpdmemhist_1_a dmem0) (initpdmem_a dmem0)
 
832
           (initmmppc_a mmppc0) (initmmval_a mmval0)
 
833
           (initmmdest_a mmdest0) (initmmwrt_a mmwrt0)
 
834
           (initmmregwrite_a mmregwrite0) (initmwppc_a mwppc0)
 
835
           (initmwval_a mwval0) (initmwdest_a mwdest0)
 
836
           (initmwwrt_a mwwrt0) (initmwregwrite_a mwregwrite0)))))
 
837
 
 
838
(defun spec-state_a (simem spc srf sdmem)
 
839
   (seq nil 'simem simem 'spc spc 'srf srf 'sdmem sdmem))
 
840
 
 
841
(defun initsimem_a (simem) (cons (s 0 t (s 1 nil nil)) simem))
 
842
 
 
843
(defun nextsimem_a (simem initi)
 
844
   (cons (s 0 nil (s 1 initi nil)) simem))
 
845
 
 
846
(defun initspc_a (pc0) pc0)
 
847
 
 
848
(defun nextspc_a
 
849
        (initi pc0 project_impl impl.ppc isa is_taken_branch targetpc
 
850
               spc)
 
851
   (cond
 
852
     (initi pc0)
 
853
     (project_impl impl.ppc)
 
854
     ((and isa is_taken_branch) targetpc)
 
855
     (isa (add-1 spc))
 
856
     (t spc)))
 
857
 
 
858
(defun initsrf_a (srf) (cons (s 0 t (s 1 nil nil)) srf))
 
859
 
 
860
(defun nextsrf_a
 
861
        (srf initi project_impl impl.prf isa inst regwrite val)
 
862
   (cons (s 0 nil
 
863
            (s 1 initi
 
864
               (s 2 project_impl
 
865
                  (s 3 impl.prf
 
866
                     (s 4 isa (s 5 inst (s 6 regwrite (s 7 val nil))))))))
 
867
         srf))
 
868
 
 
869
(defun initsdmem_a (dmem0) dmem0)
 
870
 
 
871
(defun nextsdmem_a
 
872
        (initi dmem0 project_impl impl.pdmem isa memwrite sdmem result
 
873
               arg2_temp)
 
874
   (cond
 
875
     (initi dmem0)
 
876
     (project_impl impl.pdmem)
 
877
     ((and isa memwrite) (nextdmem sdmem result arg2_temp))
 
878
     (t sdmem)))
 
879
 
 
880
(defun spec-simulate_a
 
881
        (spec initi pc0 project_impl impl.ppc isa impl.prf dmem0
 
882
              impl.pdmem)
 
883
   (let* ((simem (g 'simem spec)) (spc (g 'spc spec))
 
884
          (srf (g 'srf spec)) (sdmem (g 'sdmem spec)))
 
885
     (let* ((inst (read-simem_a spc simem))
 
886
            (regwrite (getregwrite inst)) (memtoreg (getmemtoreg inst))
 
887
            (memwrite (getmemwrite inst)) (isbranch (getisbranch inst))
 
888
            (useimm (getuseimm inst)) (imm (getimm inst))
 
889
            (arg1 (read-srf_a (src1 inst) srf))
 
890
            (arg2_temp (read-srf_a (src2 inst) srf))
 
891
            (arg2 (cond (useimm imm) (t arg2_temp)))
 
892
            (result (alu (opcode inst) arg1 arg2))
 
893
            (is_taken_branch_temp
 
894
                (takebranch (opcode inst) arg1 arg2_temp))
 
895
            (is_taken_branch (and is_taken_branch_temp isbranch))
 
896
            (targetpc (selecttargetpc (opcode inst) arg1 spc))
 
897
            (readdata (dmem_read sdmem result))
 
898
            (val (cond (memtoreg readdata) (t result))))
 
899
       (spec-state_a (nextsimem_a simem initi)
 
900
           (nextspc_a initi pc0 project_impl impl.ppc isa
 
901
               is_taken_branch targetpc spc)
 
902
           (nextsrf_a srf initi project_impl impl.prf isa inst regwrite
 
903
               val)
 
904
           (nextsdmem_a initi dmem0 project_impl impl.pdmem isa
 
905
               memwrite sdmem result arg2_temp)))))
 
906
 
 
907
(defun spec-initialize_a (spec pc0 dmem0)
 
908
   (let* ((simem (g 'simem spec)) (spc (g 'spc spec))
 
909
          (srf (g 'srf spec)) (sdmem (g 'sdmem spec)))
 
910
     (let* ((inst (read-simem_a spc simem))
 
911
            (regwrite (getregwrite inst)) (memtoreg (getmemtoreg inst))
 
912
            (memwrite (getmemwrite inst)) (isbranch (getisbranch inst))
 
913
            (useimm (getuseimm inst)) (imm (getimm inst))
 
914
            (arg1 (read-srf_a (src1 inst) srf))
 
915
            (arg2_temp (read-srf_a (src2 inst) srf))
 
916
            (arg2 (cond (useimm imm) (t arg2_temp)))
 
917
            (result (alu (opcode inst) arg1 arg2))
 
918
            (is_taken_branch_temp
 
919
                (takebranch (opcode inst) arg1 arg2_temp))
 
920
            (is_taken_branch (and is_taken_branch_temp isbranch))
 
921
            (targetpc (selecttargetpc (opcode inst) arg1 spc))
 
922
            (readdata (dmem_read sdmem result))
 
923
            (val (cond (memtoreg readdata) (t result))))
 
924
       (spec-state_a (initsimem_a simem) (initspc_a pc0)
 
925
           (initsrf_a srf) (initsdmem_a dmem0)))))
 
926
 
 
927
(defun simulate_a
 
928
        (st flush isa project_impl initi pc0 bpstate0
 
929
            ffpredicteddirection0 ffpredictedtarget0 ffwrt0 ffinst0
 
930
            ffppc0 fdppc0 fdwrt0 fdinst0 fdpredicteddirection0
 
931
            fdpredictedtarget0 deppc0 desrc10 desrc20 a1 a2 dedest0
 
932
            deop0 deimm0 deuseimm0 deregwrite0 dememwrite0 dememtoreg0
 
933
            deisbranch0 dewrt0 depredicteddirection0 depredictedtarget0
 
934
            emppc0 emis_taken_branch0 emtargetpc0 emarg20 emresult0
 
935
            emdest0 emwrt0 emmispredictedtaken0 emmispredictednottaken0
 
936
            emregwrite0 emmemwrite0 emmemtoreg0 dmem0 mmppc0 mmval0
 
937
            mmdest0 mmwrt0 mmregwrite0 mwppc0 mwval0 mwdest0 mwwrt0
 
938
            mwregwrite0 impl.ppc impl.prf impl.pdmem)
 
939
   (u-state_a
 
940
       (impl-simulate_a (g 'impl st) initi pc0 flush bpstate0
 
941
           ffpredicteddirection0 ffpredictedtarget0 ffwrt0 ffinst0
 
942
           ffppc0 fdppc0 fdwrt0 fdinst0 fdpredicteddirection0
 
943
           fdpredictedtarget0 deppc0 desrc10 desrc20 a1 a2 dedest0
 
944
           deop0 deimm0 deuseimm0 deregwrite0 dememwrite0 dememtoreg0
 
945
           deisbranch0 dewrt0 depredicteddirection0 depredictedtarget0
 
946
           emppc0 emis_taken_branch0 emtargetpc0 emarg20 emresult0
 
947
           emdest0 emwrt0 emmispredictedtaken0 emmispredictednottaken0
 
948
           emregwrite0 emmemwrite0 emmemtoreg0 dmem0 mmppc0 mmval0
 
949
           mmdest0 mmwrt0 mmregwrite0 mwppc0 mwval0 mwdest0 mwwrt0
 
950
           mwregwrite0)
 
951
       (spec-simulate_a (g 'spec st) initi pc0 project_impl impl.ppc
 
952
           isa impl.prf dmem0 impl.pdmem)))
 
953
 
 
954
(defun initialize_a
 
955
        (st flush isa project_impl initi pc0 bpstate0
 
956
            ffpredicteddirection0 ffpredictedtarget0 ffwrt0 ffinst0
 
957
            ffppc0 fdppc0 fdwrt0 fdinst0 fdpredicteddirection0
 
958
            fdpredictedtarget0 deppc0 desrc10 desrc20 a1 a2 dedest0
 
959
            deop0 deimm0 deuseimm0 deregwrite0 dememwrite0 dememtoreg0
 
960
            deisbranch0 dewrt0 depredicteddirection0 depredictedtarget0
 
961
            emppc0 emis_taken_branch0 emtargetpc0 emarg20 emresult0
 
962
            emdest0 emwrt0 emmispredictedtaken0 emmispredictednottaken0
 
963
            emregwrite0 emmemwrite0 emmemtoreg0 dmem0 mmppc0 mmval0
 
964
            mmdest0 mmwrt0 mmregwrite0 mwppc0 mwval0 mwdest0 mwwrt0
 
965
            mwregwrite0)
 
966
   (u-state_a
 
967
       (impl-initialize_a (g 'impl st) pc0 bpstate0
 
968
           ffpredicteddirection0 ffpredictedtarget0 ffwrt0 ffinst0
 
969
           ffppc0 fdppc0 fdwrt0 fdinst0 fdpredicteddirection0
 
970
           fdpredictedtarget0 deppc0 desrc10 desrc20 a1 a2 dedest0
 
971
           deop0 deimm0 deuseimm0 deregwrite0 dememwrite0 dememtoreg0
 
972
           deisbranch0 dewrt0 depredicteddirection0 depredictedtarget0
 
973
           emppc0 emis_taken_branch0 emtargetpc0 emarg20 emresult0
 
974
           emdest0 emwrt0 emmispredictedtaken0 emmispredictednottaken0
 
975
           emregwrite0 emmemwrite0 emmemtoreg0 dmem0 mmppc0 mmval0
 
976
           mmdest0 mmwrt0 mmregwrite0 mwppc0 mwval0 mwdest0 mwwrt0
 
977
           mwregwrite0)
 
978
       (spec-initialize_a (g 'spec st) pc0 dmem0)))
 
979
 
 
980
(defthm web_core_a
 
981
        (implies (and (integerp pc0) (integerp dmem0)
 
982
                      (integerp bpstate0) (integerp a) (integerp zero)
 
983
                      (booleanp ffwrt0) (booleanp fdwrt0)
 
984
                      (booleanp dewrt0) (booleanp emwrt0)
 
985
                      (booleanp mmwrt0) (booleanp mwwrt0)
 
986
                      (integerp fdbpstate0)
 
987
                      (booleanp fdpredicteddirection0)
 
988
                      (integerp fdpredictedtarget0)
 
989
                      (booleanp emmispredictednottaken0)
 
990
                      (integerp debpstate0)
 
991
                      (booleanp depredicteddirection0)
 
992
                      (integerp depredictedtarget0)
 
993
                      (booleanp emmispredictedtaken0)
 
994
                      (integerp embpstate0) (integerp mmbpstate0)
 
995
                      (integerp mwbpstate0)
 
996
                      (integerp ffpredictedtarget0)
 
997
                      (integerp ffbpstate0)
 
998
                      (booleanp ffpredicteddirection0)
 
999
                      (integerp emppc0) (integerp mmppc0)
 
1000
                      (integerp mwppc0) (booleanp deisbranch0)
 
1001
                      (booleanp emis_taken_branch0)
 
1002
                      (integerp emtargetpc0) (integerp ffppc0)
 
1003
                      (integerp fdppc0) (integerp deppc0)
 
1004
                      (integerp mwval0) (integerp emresult0)
 
1005
                      (booleanp deregwrite0) (booleanp emregwrite0)
 
1006
                      (booleanp mwregwrite0) (integerp mwdest0)
 
1007
                      (integerp deop0) (integerp fddest0)
 
1008
                      (integerp dedest0) (integerp op0) (integerp s0)
 
1009
                      (integerp a1) (integerp a2) (integerp d0)
 
1010
                      (integerp d1) (integerp x0) (integerp fdop0)
 
1011
                      (booleanp w0) (booleanp w1) (integerp fdsrc10)
 
1012
                      (integerp fdsrc20) (integerp emdest0)
 
1013
                      (integerp emval0) (integerp desrc10)
 
1014
                      (integerp desrc20) (integerp fdinst0)
 
1015
                      (integerp deimm0) (booleanp deuseimm0)
 
1016
                      (booleanp dememtoreg0) (booleanp emmemtoreg0)
 
1017
                      (integerp emimm0) (booleanp emuseimm0)
 
1018
                      (booleanp dememwrite0) (booleanp emmemwrite0)
 
1019
                      (integerp emarg20) (integerp ffinst0)
 
1020
                      (integerp mmval0) (integerp mmdest0)
 
1021
                      (booleanp mmregwrite0) (integerp mmresult0)
 
1022
                      (booleanp mmmemwrite0) (integerp mmarg20))
 
1023
                 (let* ((st0 (initialize_a nil nil nil nil nil pc0
 
1024
                                 bpstate0 ffpredicteddirection0
 
1025
                                 ffpredictedtarget0 ffwrt0 ffinst0
 
1026
                                 ffppc0 fdppc0 fdwrt0 fdinst0
 
1027
                                 fdpredicteddirection0
 
1028
                                 fdpredictedtarget0 deppc0 desrc10
 
1029
                                 desrc20 a1 a2 dedest0 deop0 deimm0
 
1030
                                 deuseimm0 deregwrite0 dememwrite0
 
1031
                                 dememtoreg0 deisbranch0 dewrt0
 
1032
                                 depredicteddirection0
 
1033
                                 depredictedtarget0 emppc0
 
1034
                                 emis_taken_branch0 emtargetpc0 emarg20
 
1035
                                 emresult0 emdest0 emwrt0
 
1036
                                 emmispredictedtaken0
 
1037
                                 emmispredictednottaken0 emregwrite0
 
1038
                                 emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1039
                                 mmval0 mmdest0 mmwrt0 mmregwrite0
 
1040
                                 mwppc0 mwval0 mwdest0 mwwrt0
 
1041
                                 mwregwrite0))
 
1042
                        (st1 (simulate_a st0 t nil nil nil pc0 bpstate0
 
1043
                                 ffpredicteddirection0
 
1044
                                 ffpredictedtarget0 ffwrt0 ffinst0
 
1045
                                 ffppc0 fdppc0 fdwrt0 fdinst0
 
1046
                                 fdpredicteddirection0
 
1047
                                 fdpredictedtarget0 deppc0 desrc10
 
1048
                                 desrc20 a1 a2 dedest0 deop0 deimm0
 
1049
                                 deuseimm0 deregwrite0 dememwrite0
 
1050
                                 dememtoreg0 deisbranch0 dewrt0
 
1051
                                 depredicteddirection0
 
1052
                                 depredictedtarget0 emppc0
 
1053
                                 emis_taken_branch0 emtargetpc0 emarg20
 
1054
                                 emresult0 emdest0 emwrt0
 
1055
                                 emmispredictedtaken0
 
1056
                                 emmispredictednottaken0 emregwrite0
 
1057
                                 emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1058
                                 mmval0 mmdest0 mmwrt0 mmregwrite0
 
1059
                                 mwppc0 mwval0 mwdest0 mwwrt0
 
1060
                                 mwregwrite0 (g 'ppc (g 'impl st0))
 
1061
                                 (g 'prf (g 'impl st0))
 
1062
                                 (g 'pdmem (g 'impl st0))))
 
1063
                        (st2 (simulate_a st1 t nil nil nil pc0 bpstate0
 
1064
                                 ffpredicteddirection0
 
1065
                                 ffpredictedtarget0 ffwrt0 ffinst0
 
1066
                                 ffppc0 fdppc0 fdwrt0 fdinst0
 
1067
                                 fdpredicteddirection0
 
1068
                                 fdpredictedtarget0 deppc0 desrc10
 
1069
                                 desrc20 a1 a2 dedest0 deop0 deimm0
 
1070
                                 deuseimm0 deregwrite0 dememwrite0
 
1071
                                 dememtoreg0 deisbranch0 dewrt0
 
1072
                                 depredicteddirection0
 
1073
                                 depredictedtarget0 emppc0
 
1074
                                 emis_taken_branch0 emtargetpc0 emarg20
 
1075
                                 emresult0 emdest0 emwrt0
 
1076
                                 emmispredictedtaken0
 
1077
                                 emmispredictednottaken0 emregwrite0
 
1078
                                 emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1079
                                 mmval0 mmdest0 mmwrt0 mmregwrite0
 
1080
                                 mwppc0 mwval0 mwdest0 mwwrt0
 
1081
                                 mwregwrite0 (g 'ppc (g 'impl st1))
 
1082
                                 (g 'prf (g 'impl st1))
 
1083
                                 (g 'pdmem (g 'impl st1))))
 
1084
                        (st3 (simulate_a st2 t nil nil nil pc0 bpstate0
 
1085
                                 ffpredicteddirection0
 
1086
                                 ffpredictedtarget0 ffwrt0 ffinst0
 
1087
                                 ffppc0 fdppc0 fdwrt0 fdinst0
 
1088
                                 fdpredicteddirection0
 
1089
                                 fdpredictedtarget0 deppc0 desrc10
 
1090
                                 desrc20 a1 a2 dedest0 deop0 deimm0
 
1091
                                 deuseimm0 deregwrite0 dememwrite0
 
1092
                                 dememtoreg0 deisbranch0 dewrt0
 
1093
                                 depredicteddirection0
 
1094
                                 depredictedtarget0 emppc0
 
1095
                                 emis_taken_branch0 emtargetpc0 emarg20
 
1096
                                 emresult0 emdest0 emwrt0
 
1097
                                 emmispredictedtaken0
 
1098
                                 emmispredictednottaken0 emregwrite0
 
1099
                                 emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1100
                                 mmval0 mmdest0 mmwrt0 mmregwrite0
 
1101
                                 mwppc0 mwval0 mwdest0 mwwrt0
 
1102
                                 mwregwrite0 (g 'ppc (g 'impl st2))
 
1103
                                 (g 'prf (g 'impl st2))
 
1104
                                 (g 'pdmem (g 'impl st2))))
 
1105
                        (st4 (simulate_a st3 t nil nil nil pc0 bpstate0
 
1106
                                 ffpredicteddirection0
 
1107
                                 ffpredictedtarget0 ffwrt0 ffinst0
 
1108
                                 ffppc0 fdppc0 fdwrt0 fdinst0
 
1109
                                 fdpredicteddirection0
 
1110
                                 fdpredictedtarget0 deppc0 desrc10
 
1111
                                 desrc20 a1 a2 dedest0 deop0 deimm0
 
1112
                                 deuseimm0 deregwrite0 dememwrite0
 
1113
                                 dememtoreg0 deisbranch0 dewrt0
 
1114
                                 depredicteddirection0
 
1115
                                 depredictedtarget0 emppc0
 
1116
                                 emis_taken_branch0 emtargetpc0 emarg20
 
1117
                                 emresult0 emdest0 emwrt0
 
1118
                                 emmispredictedtaken0
 
1119
                                 emmispredictednottaken0 emregwrite0
 
1120
                                 emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1121
                                 mmval0 mmdest0 mmwrt0 mmregwrite0
 
1122
                                 mwppc0 mwval0 mwdest0 mwwrt0
 
1123
                                 mwregwrite0 (g 'ppc (g 'impl st3))
 
1124
                                 (g 'prf (g 'impl st3))
 
1125
                                 (g 'pdmem (g 'impl st3))))
 
1126
                        (st5 (simulate_a st4 t nil nil nil pc0 bpstate0
 
1127
                                 ffpredicteddirection0
 
1128
                                 ffpredictedtarget0 ffwrt0 ffinst0
 
1129
                                 ffppc0 fdppc0 fdwrt0 fdinst0
 
1130
                                 fdpredicteddirection0
 
1131
                                 fdpredictedtarget0 deppc0 desrc10
 
1132
                                 desrc20 a1 a2 dedest0 deop0 deimm0
 
1133
                                 deuseimm0 deregwrite0 dememwrite0
 
1134
                                 dememtoreg0 deisbranch0 dewrt0
 
1135
                                 depredicteddirection0
 
1136
                                 depredictedtarget0 emppc0
 
1137
                                 emis_taken_branch0 emtargetpc0 emarg20
 
1138
                                 emresult0 emdest0 emwrt0
 
1139
                                 emmispredictedtaken0
 
1140
                                 emmispredictednottaken0 emregwrite0
 
1141
                                 emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1142
                                 mmval0 mmdest0 mmwrt0 mmregwrite0
 
1143
                                 mwppc0 mwval0 mwdest0 mwwrt0
 
1144
                                 mwregwrite0 (g 'ppc (g 'impl st4))
 
1145
                                 (g 'prf (g 'impl st4))
 
1146
                                 (g 'pdmem (g 'impl st4))))
 
1147
                        (st6 (simulate_a st5 t nil nil nil pc0 bpstate0
 
1148
                                 ffpredicteddirection0
 
1149
                                 ffpredictedtarget0 ffwrt0 ffinst0
 
1150
                                 ffppc0 fdppc0 fdwrt0 fdinst0
 
1151
                                 fdpredicteddirection0
 
1152
                                 fdpredictedtarget0 deppc0 desrc10
 
1153
                                 desrc20 a1 a2 dedest0 deop0 deimm0
 
1154
                                 deuseimm0 deregwrite0 dememwrite0
 
1155
                                 dememtoreg0 deisbranch0 dewrt0
 
1156
                                 depredicteddirection0
 
1157
                                 depredictedtarget0 emppc0
 
1158
                                 emis_taken_branch0 emtargetpc0 emarg20
 
1159
                                 emresult0 emdest0 emwrt0
 
1160
                                 emmispredictedtaken0
 
1161
                                 emmispredictednottaken0 emregwrite0
 
1162
                                 emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1163
                                 mmval0 mmdest0 mmwrt0 mmregwrite0
 
1164
                                 mwppc0 mwval0 mwdest0 mwwrt0
 
1165
                                 mwregwrite0 (g 'ppc (g 'impl st5))
 
1166
                                 (g 'prf (g 'impl st5))
 
1167
                                 (g 'pdmem (g 'impl st5))))
 
1168
                        (t1 (not (or (or
 
1169
                                      (or
 
1170
                                       (or
 
1171
                                        (or (g 'ffwrt (g 'impl st6))
 
1172
                                         (g 'fdwrt (g 'impl st6)))
 
1173
                                        (g 'dewrt (g 'impl st6)))
 
1174
                                       (g 'emwrt (g 'impl st6)))
 
1175
                                      (g 'mmwrt (g 'impl st6)))
 
1176
                                     (g 'mwwrt (g 'impl st6)))))
 
1177
                        (st7 (simulate_a st6 t nil nil nil pc0 bpstate0
 
1178
                                 ffpredicteddirection0
 
1179
                                 ffpredictedtarget0 ffwrt0 ffinst0
 
1180
                                 ffppc0 fdppc0 fdwrt0 fdinst0
 
1181
                                 fdpredicteddirection0
 
1182
                                 fdpredictedtarget0 deppc0 desrc10
 
1183
                                 desrc20 a1 a2 dedest0 deop0 deimm0
 
1184
                                 deuseimm0 deregwrite0 dememwrite0
 
1185
                                 dememtoreg0 deisbranch0 dewrt0
 
1186
                                 depredicteddirection0
 
1187
                                 depredictedtarget0 emppc0
 
1188
                                 emis_taken_branch0 emtargetpc0 emarg20
 
1189
                                 emresult0 emdest0 emwrt0
 
1190
                                 emmispredictedtaken0
 
1191
                                 emmispredictednottaken0 emregwrite0
 
1192
                                 emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1193
                                 mmval0 mmdest0 mmwrt0 mmregwrite0
 
1194
                                 mwppc0 mwval0 mwdest0 mwwrt0
 
1195
                                 mwregwrite0 (g 'ppc (g 'impl st6))
 
1196
                                 (g 'prf (g 'impl st6))
 
1197
                                 (g 'pdmem (g 'impl st6))))
 
1198
                        (t2 (not (or (or
 
1199
                                      (or
 
1200
                                       (or
 
1201
                                        (or (g 'ffwrt (g 'impl st7))
 
1202
                                         (g 'fdwrt (g 'impl st7)))
 
1203
                                        (g 'dewrt (g 'impl st7)))
 
1204
                                       (g 'emwrt (g 'impl st7)))
 
1205
                                      (g 'mmwrt (g 'impl st7)))
 
1206
                                     (g 'mwwrt (g 'impl st7)))))
 
1207
                        (st8 (simulate_a st7 t nil nil nil pc0 bpstate0
 
1208
                                 ffpredicteddirection0
 
1209
                                 ffpredictedtarget0 ffwrt0 ffinst0
 
1210
                                 ffppc0 fdppc0 fdwrt0 fdinst0
 
1211
                                 fdpredicteddirection0
 
1212
                                 fdpredictedtarget0 deppc0 desrc10
 
1213
                                 desrc20 a1 a2 dedest0 deop0 deimm0
 
1214
                                 deuseimm0 deregwrite0 dememwrite0
 
1215
                                 dememtoreg0 deisbranch0 dewrt0
 
1216
                                 depredicteddirection0
 
1217
                                 depredictedtarget0 emppc0
 
1218
                                 emis_taken_branch0 emtargetpc0 emarg20
 
1219
                                 emresult0 emdest0 emwrt0
 
1220
                                 emmispredictedtaken0
 
1221
                                 emmispredictednottaken0 emregwrite0
 
1222
                                 emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1223
                                 mmval0 mmdest0 mmwrt0 mmregwrite0
 
1224
                                 mwppc0 mwval0 mwdest0 mwwrt0
 
1225
                                 mwregwrite0 (g 'ppc (g 'impl st7))
 
1226
                                 (g 'prf (g 'impl st7))
 
1227
                                 (g 'pdmem (g 'impl st7))))
 
1228
                        (counter (cond
 
1229
                                   (t1 zero)
 
1230
                                   (t2 (add-1 zero))
 
1231
                                   (t (add-1 (add-1 zero)))))
 
1232
                        (st9 (simulate_a st8 nil nil t nil pc0 bpstate0
 
1233
                                 ffpredicteddirection0
 
1234
                                 ffpredictedtarget0 ffwrt0 ffinst0
 
1235
                                 ffppc0 fdppc0 fdwrt0 fdinst0
 
1236
                                 fdpredicteddirection0
 
1237
                                 fdpredictedtarget0 deppc0 desrc10
 
1238
                                 desrc20 a1 a2 dedest0 deop0 deimm0
 
1239
                                 deuseimm0 deregwrite0 dememwrite0
 
1240
                                 dememtoreg0 deisbranch0 dewrt0
 
1241
                                 depredicteddirection0
 
1242
                                 depredictedtarget0 emppc0
 
1243
                                 emis_taken_branch0 emtargetpc0 emarg20
 
1244
                                 emresult0 emdest0 emwrt0
 
1245
                                 emmispredictedtaken0
 
1246
                                 emmispredictednottaken0 emregwrite0
 
1247
                                 emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1248
                                 mmval0 mmdest0 mmwrt0 mmregwrite0
 
1249
                                 mwppc0 mwval0 mwdest0 mwwrt0
 
1250
                                 mwregwrite0 (g 'ppc (g 'impl st8))
 
1251
                                 (g 'prf (g 'impl st8))
 
1252
                                 (g 'pdmem (g 'impl st8))))
 
1253
                        (s_pc0 (g 'spc (g 'spec st9)))
 
1254
                        (s_rf0 (g 'srf (g 'spec st9)))
 
1255
                        (s_dmem0 (g 'sdmem (g 'spec st9)))
 
1256
                        (st10 (simulate_a st9 nil t nil nil pc0
 
1257
                                  bpstate0 ffpredicteddirection0
 
1258
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1259
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1260
                                  fdpredicteddirection0
 
1261
                                  fdpredictedtarget0 deppc0 desrc10
 
1262
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1263
                                  deuseimm0 deregwrite0 dememwrite0
 
1264
                                  dememtoreg0 deisbranch0 dewrt0
 
1265
                                  depredicteddirection0
 
1266
                                  depredictedtarget0 emppc0
 
1267
                                  emis_taken_branch0 emtargetpc0
 
1268
                                  emarg20 emresult0 emdest0 emwrt0
 
1269
                                  emmispredictedtaken0
 
1270
                                  emmispredictednottaken0 emregwrite0
 
1271
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1272
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1273
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1274
                                  mwregwrite0 (g 'ppc (g 'impl st9))
 
1275
                                  (g 'prf (g 'impl st9))
 
1276
                                  (g 'pdmem (g 'impl st9))))
 
1277
                        (s_pc1 (g 'spc (g 'spec st10)))
 
1278
                        (s_rf1 (g 'srf (g 'spec st10)))
 
1279
                        (s_dmem1 (g 'sdmem (g 'spec st10)))
 
1280
                        (st11 (simulate_a st10 nil nil nil t pc0
 
1281
                                  bpstate0 ffpredicteddirection0
 
1282
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1283
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1284
                                  fdpredicteddirection0
 
1285
                                  fdpredictedtarget0 deppc0 desrc10
 
1286
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1287
                                  deuseimm0 deregwrite0 dememwrite0
 
1288
                                  dememtoreg0 deisbranch0 dewrt0
 
1289
                                  depredicteddirection0
 
1290
                                  depredictedtarget0 emppc0
 
1291
                                  emis_taken_branch0 emtargetpc0
 
1292
                                  emarg20 emresult0 emdest0 emwrt0
 
1293
                                  emmispredictedtaken0
 
1294
                                  emmispredictednottaken0 emregwrite0
 
1295
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1296
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1297
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1298
                                  mwregwrite0 (g 'ppc (g 'impl st10))
 
1299
                                  (g 'prf (g 'impl st10))
 
1300
                                  (g 'pdmem (g 'impl st10))))
 
1301
                        (st12 (simulate_a st11 nil nil nil nil pc0
 
1302
                                  bpstate0 ffpredicteddirection0
 
1303
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1304
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1305
                                  fdpredicteddirection0
 
1306
                                  fdpredictedtarget0 deppc0 desrc10
 
1307
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1308
                                  deuseimm0 deregwrite0 dememwrite0
 
1309
                                  dememtoreg0 deisbranch0 dewrt0
 
1310
                                  depredicteddirection0
 
1311
                                  depredictedtarget0 emppc0
 
1312
                                  emis_taken_branch0 emtargetpc0
 
1313
                                  emarg20 emresult0 emdest0 emwrt0
 
1314
                                  emmispredictedtaken0
 
1315
                                  emmispredictednottaken0 emregwrite0
 
1316
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1317
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1318
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1319
                                  mwregwrite0 (g 'ppc (g 'impl st11))
 
1320
                                  (g 'prf (g 'impl st11))
 
1321
                                  (g 'pdmem (g 'impl st11))))
 
1322
                        (st13 (simulate_a st12 nil nil nil nil pc0
 
1323
                                  bpstate0 ffpredicteddirection0
 
1324
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1325
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1326
                                  fdpredicteddirection0
 
1327
                                  fdpredictedtarget0 deppc0 desrc10
 
1328
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1329
                                  deuseimm0 deregwrite0 dememwrite0
 
1330
                                  dememtoreg0 deisbranch0 dewrt0
 
1331
                                  depredicteddirection0
 
1332
                                  depredictedtarget0 emppc0
 
1333
                                  emis_taken_branch0 emtargetpc0
 
1334
                                  emarg20 emresult0 emdest0 emwrt0
 
1335
                                  emmispredictedtaken0
 
1336
                                  emmispredictednottaken0 emregwrite0
 
1337
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1338
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1339
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1340
                                  mwregwrite0 (g 'ppc (g 'impl st12))
 
1341
                                  (g 'prf (g 'impl st12))
 
1342
                                  (g 'pdmem (g 'impl st12))))
 
1343
                        (st14 (simulate_a st13 nil nil nil nil pc0
 
1344
                                  bpstate0 ffpredicteddirection0
 
1345
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1346
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1347
                                  fdpredicteddirection0
 
1348
                                  fdpredictedtarget0 deppc0 desrc10
 
1349
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1350
                                  deuseimm0 deregwrite0 dememwrite0
 
1351
                                  dememtoreg0 deisbranch0 dewrt0
 
1352
                                  depredicteddirection0
 
1353
                                  depredictedtarget0 emppc0
 
1354
                                  emis_taken_branch0 emtargetpc0
 
1355
                                  emarg20 emresult0 emdest0 emwrt0
 
1356
                                  emmispredictedtaken0
 
1357
                                  emmispredictednottaken0 emregwrite0
 
1358
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1359
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1360
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1361
                                  mwregwrite0 (g 'ppc (g 'impl st13))
 
1362
                                  (g 'prf (g 'impl st13))
 
1363
                                  (g 'pdmem (g 'impl st13))))
 
1364
                        (st15 (simulate_a st14 nil nil nil nil pc0
 
1365
                                  bpstate0 ffpredicteddirection0
 
1366
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1367
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1368
                                  fdpredicteddirection0
 
1369
                                  fdpredictedtarget0 deppc0 desrc10
 
1370
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1371
                                  deuseimm0 deregwrite0 dememwrite0
 
1372
                                  dememtoreg0 deisbranch0 dewrt0
 
1373
                                  depredicteddirection0
 
1374
                                  depredictedtarget0 emppc0
 
1375
                                  emis_taken_branch0 emtargetpc0
 
1376
                                  emarg20 emresult0 emdest0 emwrt0
 
1377
                                  emmispredictedtaken0
 
1378
                                  emmispredictednottaken0 emregwrite0
 
1379
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1380
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1381
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1382
                                  mwregwrite0 (g 'ppc (g 'impl st14))
 
1383
                                  (g 'prf (g 'impl st14))
 
1384
                                  (g 'pdmem (g 'impl st14))))
 
1385
                        (st16 (simulate_a st15 nil nil nil nil pc0
 
1386
                                  bpstate0 ffpredicteddirection0
 
1387
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1388
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1389
                                  fdpredicteddirection0
 
1390
                                  fdpredictedtarget0 deppc0 desrc10
 
1391
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1392
                                  deuseimm0 deregwrite0 dememwrite0
 
1393
                                  dememtoreg0 deisbranch0 dewrt0
 
1394
                                  depredicteddirection0
 
1395
                                  depredictedtarget0 emppc0
 
1396
                                  emis_taken_branch0 emtargetpc0
 
1397
                                  emarg20 emresult0 emdest0 emwrt0
 
1398
                                  emmispredictedtaken0
 
1399
                                  emmispredictednottaken0 emregwrite0
 
1400
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1401
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1402
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1403
                                  mwregwrite0 (g 'ppc (g 'impl st15))
 
1404
                                  (g 'prf (g 'impl st15))
 
1405
                                  (g 'pdmem (g 'impl st15))))
 
1406
                        (st17 (simulate_a st16 nil nil nil nil pc0
 
1407
                                  bpstate0 ffpredicteddirection0
 
1408
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1409
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1410
                                  fdpredicteddirection0
 
1411
                                  fdpredictedtarget0 deppc0 desrc10
 
1412
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1413
                                  deuseimm0 deregwrite0 dememwrite0
 
1414
                                  dememtoreg0 deisbranch0 dewrt0
 
1415
                                  depredicteddirection0
 
1416
                                  depredictedtarget0 emppc0
 
1417
                                  emis_taken_branch0 emtargetpc0
 
1418
                                  emarg20 emresult0 emdest0 emwrt0
 
1419
                                  emmispredictedtaken0
 
1420
                                  emmispredictednottaken0 emregwrite0
 
1421
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1422
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1423
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1424
                                  mwregwrite0 (g 'ppc (g 'impl st16))
 
1425
                                  (g 'prf (g 'impl st16))
 
1426
                                  (g 'pdmem (g 'impl st16))))
 
1427
                        (t1 (g 'mwwrt (g 'impl st17)))
 
1428
                        (st18 (simulate_a st17 nil nil nil nil pc0
 
1429
                                  bpstate0 ffpredicteddirection0
 
1430
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1431
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1432
                                  fdpredicteddirection0
 
1433
                                  fdpredictedtarget0 deppc0 desrc10
 
1434
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1435
                                  deuseimm0 deregwrite0 dememwrite0
 
1436
                                  dememtoreg0 deisbranch0 dewrt0
 
1437
                                  depredicteddirection0
 
1438
                                  depredictedtarget0 emppc0
 
1439
                                  emis_taken_branch0 emtargetpc0
 
1440
                                  emarg20 emresult0 emdest0 emwrt0
 
1441
                                  emmispredictedtaken0
 
1442
                                  emmispredictednottaken0 emregwrite0
 
1443
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1444
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1445
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1446
                                  mwregwrite0 (g 'ppc (g 'impl st17))
 
1447
                                  (g 'prf (g 'impl st17))
 
1448
                                  (g 'pdmem (g 'impl st17))))
 
1449
                        (t2 (g 'mwwrt (g 'impl st18)))
 
1450
                        (st19 (simulate_a st18 nil nil nil nil pc0
 
1451
                                  bpstate0 ffpredicteddirection0
 
1452
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1453
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1454
                                  fdpredicteddirection0
 
1455
                                  fdpredictedtarget0 deppc0 desrc10
 
1456
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1457
                                  deuseimm0 deregwrite0 dememwrite0
 
1458
                                  dememtoreg0 deisbranch0 dewrt0
 
1459
                                  depredicteddirection0
 
1460
                                  depredictedtarget0 emppc0
 
1461
                                  emis_taken_branch0 emtargetpc0
 
1462
                                  emarg20 emresult0 emdest0 emwrt0
 
1463
                                  emmispredictedtaken0
 
1464
                                  emmispredictednottaken0 emregwrite0
 
1465
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1466
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1467
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1468
                                  mwregwrite0 (g 'ppc (g 'impl st18))
 
1469
                                  (g 'prf (g 'impl st18))
 
1470
                                  (g 'pdmem (g 'impl st18))))
 
1471
                        (t3 (g 'mwwrt (g 'impl st19)))
 
1472
                        (st20 (simulate_a st19 nil nil nil nil pc0
 
1473
                                  bpstate0 ffpredicteddirection0
 
1474
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1475
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1476
                                  fdpredicteddirection0
 
1477
                                  fdpredictedtarget0 deppc0 desrc10
 
1478
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1479
                                  deuseimm0 deregwrite0 dememwrite0
 
1480
                                  dememtoreg0 deisbranch0 dewrt0
 
1481
                                  depredicteddirection0
 
1482
                                  depredictedtarget0 emppc0
 
1483
                                  emis_taken_branch0 emtargetpc0
 
1484
                                  emarg20 emresult0 emdest0 emwrt0
 
1485
                                  emmispredictedtaken0
 
1486
                                  emmispredictednottaken0 emregwrite0
 
1487
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1488
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1489
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1490
                                  mwregwrite0 (g 'ppc (g 'impl st19))
 
1491
                                  (g 'prf (g 'impl st19))
 
1492
                                  (g 'pdmem (g 'impl st19))))
 
1493
                        (t4 (g 'mwwrt (g 'impl st20)))
 
1494
                        (st21 (simulate_a st20 nil nil nil nil pc0
 
1495
                                  bpstate0 ffpredicteddirection0
 
1496
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1497
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1498
                                  fdpredicteddirection0
 
1499
                                  fdpredictedtarget0 deppc0 desrc10
 
1500
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1501
                                  deuseimm0 deregwrite0 dememwrite0
 
1502
                                  dememtoreg0 deisbranch0 dewrt0
 
1503
                                  depredicteddirection0
 
1504
                                  depredictedtarget0 emppc0
 
1505
                                  emis_taken_branch0 emtargetpc0
 
1506
                                  emarg20 emresult0 emdest0 emwrt0
 
1507
                                  emmispredictedtaken0
 
1508
                                  emmispredictednottaken0 emregwrite0
 
1509
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1510
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1511
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1512
                                  mwregwrite0 (g 'ppc (g 'impl st20))
 
1513
                                  (g 'prf (g 'impl st20))
 
1514
                                  (g 'pdmem (g 'impl st20))))
 
1515
                        (t5 (g 'mwwrt (g 'impl st21)))
 
1516
                        (st22 (simulate_a st21 nil nil nil nil pc0
 
1517
                                  bpstate0 ffpredicteddirection0
 
1518
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1519
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1520
                                  fdpredicteddirection0
 
1521
                                  fdpredictedtarget0 deppc0 desrc10
 
1522
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1523
                                  deuseimm0 deregwrite0 dememwrite0
 
1524
                                  dememtoreg0 deisbranch0 dewrt0
 
1525
                                  depredicteddirection0
 
1526
                                  depredictedtarget0 emppc0
 
1527
                                  emis_taken_branch0 emtargetpc0
 
1528
                                  emarg20 emresult0 emdest0 emwrt0
 
1529
                                  emmispredictedtaken0
 
1530
                                  emmispredictednottaken0 emregwrite0
 
1531
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1532
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1533
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1534
                                  mwregwrite0 (g 'ppc (g 'impl st21))
 
1535
                                  (g 'prf (g 'impl st21))
 
1536
                                  (g 'pdmem (g 'impl st21))))
 
1537
                        (t6 (g 'mwwrt (g 'impl st22)))
 
1538
                        (rank_w (cond
 
1539
                                  ((and (equal counter zero) t1)
 
1540
                                   (add-1 counter))
 
1541
                                  ((and
 
1542
                                    (or (equal counter zero)
 
1543
                                     (equal counter (add-1 zero)))
 
1544
                                    t2)
 
1545
                                   (add-1 (add-1 counter)))
 
1546
                                  (t3 (add-1 (add-1 (add-1 counter))))
 
1547
                                  (t4 (add-1
 
1548
                                       (add-1 (add-1 (add-1 counter)))))
 
1549
                                  (t5 (add-1
 
1550
                                       (add-1
 
1551
                                        (add-1 (add-1 (add-1 counter))))))
 
1552
                                  (t6 (add-1
 
1553
                                       (add-1
 
1554
                                        (add-1
 
1555
                                         (add-1
 
1556
                                          (add-1 (add-1 counter)))))))
 
1557
                                  (t (add-1
 
1558
                                      (add-1
 
1559
                                       (add-1
 
1560
                                        (add-1
 
1561
                                         (add-1
 
1562
                                          (add-1 (add-1 counter))))))))))
 
1563
                        (st23 (simulate_a st22 nil nil nil t pc0
 
1564
                                  bpstate0 ffpredicteddirection0
 
1565
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1566
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1567
                                  fdpredicteddirection0
 
1568
                                  fdpredictedtarget0 deppc0 desrc10
 
1569
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1570
                                  deuseimm0 deregwrite0 dememwrite0
 
1571
                                  dememtoreg0 deisbranch0 dewrt0
 
1572
                                  depredicteddirection0
 
1573
                                  depredictedtarget0 emppc0
 
1574
                                  emis_taken_branch0 emtargetpc0
 
1575
                                  emarg20 emresult0 emdest0 emwrt0
 
1576
                                  emmispredictedtaken0
 
1577
                                  emmispredictednottaken0 emregwrite0
 
1578
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1579
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1580
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1581
                                  mwregwrite0 (g 'ppc (g 'impl st22))
 
1582
                                  (g 'prf (g 'impl st22))
 
1583
                                  (g 'pdmem (g 'impl st22))))
 
1584
                        (st24 (simulate_a st23 nil nil nil nil pc0
 
1585
                                  bpstate0 ffpredicteddirection0
 
1586
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1587
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1588
                                  fdpredicteddirection0
 
1589
                                  fdpredictedtarget0 deppc0 desrc10
 
1590
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1591
                                  deuseimm0 deregwrite0 dememwrite0
 
1592
                                  dememtoreg0 deisbranch0 dewrt0
 
1593
                                  depredicteddirection0
 
1594
                                  depredictedtarget0 emppc0
 
1595
                                  emis_taken_branch0 emtargetpc0
 
1596
                                  emarg20 emresult0 emdest0 emwrt0
 
1597
                                  emmispredictedtaken0
 
1598
                                  emmispredictednottaken0 emregwrite0
 
1599
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1600
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1601
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1602
                                  mwregwrite0 (g 'ppc (g 'impl st23))
 
1603
                                  (g 'prf (g 'impl st23))
 
1604
                                  (g 'pdmem (g 'impl st23))))
 
1605
                        (st25 (simulate_a st24 t nil nil nil pc0
 
1606
                                  bpstate0 ffpredicteddirection0
 
1607
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1608
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1609
                                  fdpredicteddirection0
 
1610
                                  fdpredictedtarget0 deppc0 desrc10
 
1611
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1612
                                  deuseimm0 deregwrite0 dememwrite0
 
1613
                                  dememtoreg0 deisbranch0 dewrt0
 
1614
                                  depredicteddirection0
 
1615
                                  depredictedtarget0 emppc0
 
1616
                                  emis_taken_branch0 emtargetpc0
 
1617
                                  emarg20 emresult0 emdest0 emwrt0
 
1618
                                  emmispredictedtaken0
 
1619
                                  emmispredictednottaken0 emregwrite0
 
1620
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1621
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1622
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1623
                                  mwregwrite0 (g 'ppc (g 'impl st24))
 
1624
                                  (g 'prf (g 'impl st24))
 
1625
                                  (g 'pdmem (g 'impl st24))))
 
1626
                        (st26 (simulate_a st25 t nil nil nil pc0
 
1627
                                  bpstate0 ffpredicteddirection0
 
1628
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1629
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1630
                                  fdpredicteddirection0
 
1631
                                  fdpredictedtarget0 deppc0 desrc10
 
1632
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1633
                                  deuseimm0 deregwrite0 dememwrite0
 
1634
                                  dememtoreg0 deisbranch0 dewrt0
 
1635
                                  depredicteddirection0
 
1636
                                  depredictedtarget0 emppc0
 
1637
                                  emis_taken_branch0 emtargetpc0
 
1638
                                  emarg20 emresult0 emdest0 emwrt0
 
1639
                                  emmispredictedtaken0
 
1640
                                  emmispredictednottaken0 emregwrite0
 
1641
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1642
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1643
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1644
                                  mwregwrite0 (g 'ppc (g 'impl st25))
 
1645
                                  (g 'prf (g 'impl st25))
 
1646
                                  (g 'pdmem (g 'impl st25))))
 
1647
                        (st27 (simulate_a st26 t nil nil nil pc0
 
1648
                                  bpstate0 ffpredicteddirection0
 
1649
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1650
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1651
                                  fdpredicteddirection0
 
1652
                                  fdpredictedtarget0 deppc0 desrc10
 
1653
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1654
                                  deuseimm0 deregwrite0 dememwrite0
 
1655
                                  dememtoreg0 deisbranch0 dewrt0
 
1656
                                  depredicteddirection0
 
1657
                                  depredictedtarget0 emppc0
 
1658
                                  emis_taken_branch0 emtargetpc0
 
1659
                                  emarg20 emresult0 emdest0 emwrt0
 
1660
                                  emmispredictedtaken0
 
1661
                                  emmispredictednottaken0 emregwrite0
 
1662
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1663
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1664
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1665
                                  mwregwrite0 (g 'ppc (g 'impl st26))
 
1666
                                  (g 'prf (g 'impl st26))
 
1667
                                  (g 'pdmem (g 'impl st26))))
 
1668
                        (st28 (simulate_a st27 t nil nil nil pc0
 
1669
                                  bpstate0 ffpredicteddirection0
 
1670
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1671
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1672
                                  fdpredicteddirection0
 
1673
                                  fdpredictedtarget0 deppc0 desrc10
 
1674
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1675
                                  deuseimm0 deregwrite0 dememwrite0
 
1676
                                  dememtoreg0 deisbranch0 dewrt0
 
1677
                                  depredicteddirection0
 
1678
                                  depredictedtarget0 emppc0
 
1679
                                  emis_taken_branch0 emtargetpc0
 
1680
                                  emarg20 emresult0 emdest0 emwrt0
 
1681
                                  emmispredictedtaken0
 
1682
                                  emmispredictednottaken0 emregwrite0
 
1683
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1684
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1685
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1686
                                  mwregwrite0 (g 'ppc (g 'impl st27))
 
1687
                                  (g 'prf (g 'impl st27))
 
1688
                                  (g 'pdmem (g 'impl st27))))
 
1689
                        (st29 (simulate_a st28 t nil nil nil pc0
 
1690
                                  bpstate0 ffpredicteddirection0
 
1691
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1692
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1693
                                  fdpredicteddirection0
 
1694
                                  fdpredictedtarget0 deppc0 desrc10
 
1695
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1696
                                  deuseimm0 deregwrite0 dememwrite0
 
1697
                                  dememtoreg0 deisbranch0 dewrt0
 
1698
                                  depredicteddirection0
 
1699
                                  depredictedtarget0 emppc0
 
1700
                                  emis_taken_branch0 emtargetpc0
 
1701
                                  emarg20 emresult0 emdest0 emwrt0
 
1702
                                  emmispredictedtaken0
 
1703
                                  emmispredictednottaken0 emregwrite0
 
1704
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1705
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1706
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1707
                                  mwregwrite0 (g 'ppc (g 'impl st28))
 
1708
                                  (g 'prf (g 'impl st28))
 
1709
                                  (g 'pdmem (g 'impl st28))))
 
1710
                        (st30 (simulate_a st29 t nil nil nil pc0
 
1711
                                  bpstate0 ffpredicteddirection0
 
1712
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1713
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1714
                                  fdpredicteddirection0
 
1715
                                  fdpredictedtarget0 deppc0 desrc10
 
1716
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1717
                                  deuseimm0 deregwrite0 dememwrite0
 
1718
                                  dememtoreg0 deisbranch0 dewrt0
 
1719
                                  depredicteddirection0
 
1720
                                  depredictedtarget0 emppc0
 
1721
                                  emis_taken_branch0 emtargetpc0
 
1722
                                  emarg20 emresult0 emdest0 emwrt0
 
1723
                                  emmispredictedtaken0
 
1724
                                  emmispredictednottaken0 emregwrite0
 
1725
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1726
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1727
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1728
                                  mwregwrite0 (g 'ppc (g 'impl st29))
 
1729
                                  (g 'prf (g 'impl st29))
 
1730
                                  (g 'pdmem (g 'impl st29))))
 
1731
                        (t1 (not (or (or
 
1732
                                      (or
 
1733
                                       (or
 
1734
                                        (or (g 'ffwrt (g 'impl st30))
 
1735
                                         (g 'fdwrt (g 'impl st30)))
 
1736
                                        (g 'dewrt (g 'impl st30)))
 
1737
                                       (g 'emwrt (g 'impl st30)))
 
1738
                                      (g 'mmwrt (g 'impl st30)))
 
1739
                                     (g 'mwwrt (g 'impl st30)))))
 
1740
                        (st31 (simulate_a st30 t nil nil nil pc0
 
1741
                                  bpstate0 ffpredicteddirection0
 
1742
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1743
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1744
                                  fdpredicteddirection0
 
1745
                                  fdpredictedtarget0 deppc0 desrc10
 
1746
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1747
                                  deuseimm0 deregwrite0 dememwrite0
 
1748
                                  dememtoreg0 deisbranch0 dewrt0
 
1749
                                  depredicteddirection0
 
1750
                                  depredictedtarget0 emppc0
 
1751
                                  emis_taken_branch0 emtargetpc0
 
1752
                                  emarg20 emresult0 emdest0 emwrt0
 
1753
                                  emmispredictedtaken0
 
1754
                                  emmispredictednottaken0 emregwrite0
 
1755
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1756
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1757
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1758
                                  mwregwrite0 (g 'ppc (g 'impl st30))
 
1759
                                  (g 'prf (g 'impl st30))
 
1760
                                  (g 'pdmem (g 'impl st30))))
 
1761
                        (t2 (not (or (or
 
1762
                                      (or
 
1763
                                       (or
 
1764
                                        (or (g 'ffwrt (g 'impl st31))
 
1765
                                         (g 'fdwrt (g 'impl st31)))
 
1766
                                        (g 'dewrt (g 'impl st31)))
 
1767
                                       (g 'emwrt (g 'impl st31)))
 
1768
                                      (g 'mmwrt (g 'impl st31)))
 
1769
                                     (g 'mwwrt (g 'impl st31)))))
 
1770
                        (st32 (simulate_a st31 t nil nil nil pc0
 
1771
                                  bpstate0 ffpredicteddirection0
 
1772
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1773
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1774
                                  fdpredicteddirection0
 
1775
                                  fdpredictedtarget0 deppc0 desrc10
 
1776
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1777
                                  deuseimm0 deregwrite0 dememwrite0
 
1778
                                  dememtoreg0 deisbranch0 dewrt0
 
1779
                                  depredicteddirection0
 
1780
                                  depredictedtarget0 emppc0
 
1781
                                  emis_taken_branch0 emtargetpc0
 
1782
                                  emarg20 emresult0 emdest0 emwrt0
 
1783
                                  emmispredictedtaken0
 
1784
                                  emmispredictednottaken0 emregwrite0
 
1785
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1786
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1787
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1788
                                  mwregwrite0 (g 'ppc (g 'impl st31))
 
1789
                                  (g 'prf (g 'impl st31))
 
1790
                                  (g 'pdmem (g 'impl st31))))
 
1791
                        (counter (cond
 
1792
                                   (t1 zero)
 
1793
                                   (t2 (add-1 zero))
 
1794
                                   (t (add-1 (add-1 zero)))))
 
1795
                        (i_pc (g 'ppc (g 'impl st32)))
 
1796
                        (i_rf (g 'prf (g 'impl st32)))
 
1797
                        (i_dmem (g 'pdmem (g 'impl st32)))
 
1798
                        (st33 (simulate_a st32 nil nil nil t pc0
 
1799
                                  bpstate0 ffpredicteddirection0
 
1800
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1801
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1802
                                  fdpredicteddirection0
 
1803
                                  fdpredictedtarget0 deppc0 desrc10
 
1804
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1805
                                  deuseimm0 deregwrite0 dememwrite0
 
1806
                                  dememtoreg0 deisbranch0 dewrt0
 
1807
                                  depredicteddirection0
 
1808
                                  depredictedtarget0 emppc0
 
1809
                                  emis_taken_branch0 emtargetpc0
 
1810
                                  emarg20 emresult0 emdest0 emwrt0
 
1811
                                  emmispredictedtaken0
 
1812
                                  emmispredictednottaken0 emregwrite0
 
1813
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1814
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1815
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1816
                                  mwregwrite0 (g 'ppc (g 'impl st32))
 
1817
                                  (g 'prf (g 'impl st32))
 
1818
                                  (g 'pdmem (g 'impl st32))))
 
1819
                        (st34 (simulate_a st33 nil nil nil nil pc0
 
1820
                                  bpstate0 ffpredicteddirection0
 
1821
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1822
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1823
                                  fdpredicteddirection0
 
1824
                                  fdpredictedtarget0 deppc0 desrc10
 
1825
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1826
                                  deuseimm0 deregwrite0 dememwrite0
 
1827
                                  dememtoreg0 deisbranch0 dewrt0
 
1828
                                  depredicteddirection0
 
1829
                                  depredictedtarget0 emppc0
 
1830
                                  emis_taken_branch0 emtargetpc0
 
1831
                                  emarg20 emresult0 emdest0 emwrt0
 
1832
                                  emmispredictedtaken0
 
1833
                                  emmispredictednottaken0 emregwrite0
 
1834
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1835
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1836
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1837
                                  mwregwrite0 (g 'ppc (g 'impl st33))
 
1838
                                  (g 'prf (g 'impl st33))
 
1839
                                  (g 'pdmem (g 'impl st33))))
 
1840
                        (st35 (simulate_a st34 nil nil nil nil pc0
 
1841
                                  bpstate0 ffpredicteddirection0
 
1842
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1843
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1844
                                  fdpredicteddirection0
 
1845
                                  fdpredictedtarget0 deppc0 desrc10
 
1846
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1847
                                  deuseimm0 deregwrite0 dememwrite0
 
1848
                                  dememtoreg0 deisbranch0 dewrt0
 
1849
                                  depredicteddirection0
 
1850
                                  depredictedtarget0 emppc0
 
1851
                                  emis_taken_branch0 emtargetpc0
 
1852
                                  emarg20 emresult0 emdest0 emwrt0
 
1853
                                  emmispredictedtaken0
 
1854
                                  emmispredictednottaken0 emregwrite0
 
1855
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1856
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1857
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1858
                                  mwregwrite0 (g 'ppc (g 'impl st34))
 
1859
                                  (g 'prf (g 'impl st34))
 
1860
                                  (g 'pdmem (g 'impl st34))))
 
1861
                        (st36 (simulate_a st35 nil nil nil nil pc0
 
1862
                                  bpstate0 ffpredicteddirection0
 
1863
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1864
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1865
                                  fdpredicteddirection0
 
1866
                                  fdpredictedtarget0 deppc0 desrc10
 
1867
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1868
                                  deuseimm0 deregwrite0 dememwrite0
 
1869
                                  dememtoreg0 deisbranch0 dewrt0
 
1870
                                  depredicteddirection0
 
1871
                                  depredictedtarget0 emppc0
 
1872
                                  emis_taken_branch0 emtargetpc0
 
1873
                                  emarg20 emresult0 emdest0 emwrt0
 
1874
                                  emmispredictedtaken0
 
1875
                                  emmispredictednottaken0 emregwrite0
 
1876
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1877
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1878
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1879
                                  mwregwrite0 (g 'ppc (g 'impl st35))
 
1880
                                  (g 'prf (g 'impl st35))
 
1881
                                  (g 'pdmem (g 'impl st35))))
 
1882
                        (st37 (simulate_a st36 nil nil nil nil pc0
 
1883
                                  bpstate0 ffpredicteddirection0
 
1884
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1885
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1886
                                  fdpredicteddirection0
 
1887
                                  fdpredictedtarget0 deppc0 desrc10
 
1888
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1889
                                  deuseimm0 deregwrite0 dememwrite0
 
1890
                                  dememtoreg0 deisbranch0 dewrt0
 
1891
                                  depredicteddirection0
 
1892
                                  depredictedtarget0 emppc0
 
1893
                                  emis_taken_branch0 emtargetpc0
 
1894
                                  emarg20 emresult0 emdest0 emwrt0
 
1895
                                  emmispredictedtaken0
 
1896
                                  emmispredictednottaken0 emregwrite0
 
1897
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1898
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1899
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1900
                                  mwregwrite0 (g 'ppc (g 'impl st36))
 
1901
                                  (g 'prf (g 'impl st36))
 
1902
                                  (g 'pdmem (g 'impl st36))))
 
1903
                        (st38 (simulate_a st37 nil nil nil nil pc0
 
1904
                                  bpstate0 ffpredicteddirection0
 
1905
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1906
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1907
                                  fdpredicteddirection0
 
1908
                                  fdpredictedtarget0 deppc0 desrc10
 
1909
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1910
                                  deuseimm0 deregwrite0 dememwrite0
 
1911
                                  dememtoreg0 deisbranch0 dewrt0
 
1912
                                  depredicteddirection0
 
1913
                                  depredictedtarget0 emppc0
 
1914
                                  emis_taken_branch0 emtargetpc0
 
1915
                                  emarg20 emresult0 emdest0 emwrt0
 
1916
                                  emmispredictedtaken0
 
1917
                                  emmispredictednottaken0 emregwrite0
 
1918
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1919
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1920
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1921
                                  mwregwrite0 (g 'ppc (g 'impl st37))
 
1922
                                  (g 'prf (g 'impl st37))
 
1923
                                  (g 'pdmem (g 'impl st37))))
 
1924
                        (st39 (simulate_a st38 nil nil nil nil pc0
 
1925
                                  bpstate0 ffpredicteddirection0
 
1926
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1927
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1928
                                  fdpredicteddirection0
 
1929
                                  fdpredictedtarget0 deppc0 desrc10
 
1930
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1931
                                  deuseimm0 deregwrite0 dememwrite0
 
1932
                                  dememtoreg0 deisbranch0 dewrt0
 
1933
                                  depredicteddirection0
 
1934
                                  depredictedtarget0 emppc0
 
1935
                                  emis_taken_branch0 emtargetpc0
 
1936
                                  emarg20 emresult0 emdest0 emwrt0
 
1937
                                  emmispredictedtaken0
 
1938
                                  emmispredictednottaken0 emregwrite0
 
1939
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1940
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1941
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1942
                                  mwregwrite0 (g 'ppc (g 'impl st38))
 
1943
                                  (g 'prf (g 'impl st38))
 
1944
                                  (g 'pdmem (g 'impl st38))))
 
1945
                        (st40 (simulate_a st39 nil nil nil nil pc0
 
1946
                                  bpstate0 ffpredicteddirection0
 
1947
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1948
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1949
                                  fdpredicteddirection0
 
1950
                                  fdpredictedtarget0 deppc0 desrc10
 
1951
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1952
                                  deuseimm0 deregwrite0 dememwrite0
 
1953
                                  dememtoreg0 deisbranch0 dewrt0
 
1954
                                  depredicteddirection0
 
1955
                                  depredictedtarget0 emppc0
 
1956
                                  emis_taken_branch0 emtargetpc0
 
1957
                                  emarg20 emresult0 emdest0 emwrt0
 
1958
                                  emmispredictedtaken0
 
1959
                                  emmispredictednottaken0 emregwrite0
 
1960
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1961
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1962
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1963
                                  mwregwrite0 (g 'ppc (g 'impl st39))
 
1964
                                  (g 'prf (g 'impl st39))
 
1965
                                  (g 'pdmem (g 'impl st39))))
 
1966
                        (t1 (g 'mwwrt (g 'impl st40)))
 
1967
                        (st41 (simulate_a st40 nil nil nil nil pc0
 
1968
                                  bpstate0 ffpredicteddirection0
 
1969
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1970
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1971
                                  fdpredicteddirection0
 
1972
                                  fdpredictedtarget0 deppc0 desrc10
 
1973
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1974
                                  deuseimm0 deregwrite0 dememwrite0
 
1975
                                  dememtoreg0 deisbranch0 dewrt0
 
1976
                                  depredicteddirection0
 
1977
                                  depredictedtarget0 emppc0
 
1978
                                  emis_taken_branch0 emtargetpc0
 
1979
                                  emarg20 emresult0 emdest0 emwrt0
 
1980
                                  emmispredictedtaken0
 
1981
                                  emmispredictednottaken0 emregwrite0
 
1982
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
1983
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
1984
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
1985
                                  mwregwrite0 (g 'ppc (g 'impl st40))
 
1986
                                  (g 'prf (g 'impl st40))
 
1987
                                  (g 'pdmem (g 'impl st40))))
 
1988
                        (t2 (g 'mwwrt (g 'impl st41)))
 
1989
                        (st42 (simulate_a st41 nil nil nil nil pc0
 
1990
                                  bpstate0 ffpredicteddirection0
 
1991
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
1992
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
1993
                                  fdpredicteddirection0
 
1994
                                  fdpredictedtarget0 deppc0 desrc10
 
1995
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
1996
                                  deuseimm0 deregwrite0 dememwrite0
 
1997
                                  dememtoreg0 deisbranch0 dewrt0
 
1998
                                  depredicteddirection0
 
1999
                                  depredictedtarget0 emppc0
 
2000
                                  emis_taken_branch0 emtargetpc0
 
2001
                                  emarg20 emresult0 emdest0 emwrt0
 
2002
                                  emmispredictedtaken0
 
2003
                                  emmispredictednottaken0 emregwrite0
 
2004
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
2005
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
2006
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
2007
                                  mwregwrite0 (g 'ppc (g 'impl st41))
 
2008
                                  (g 'prf (g 'impl st41))
 
2009
                                  (g 'pdmem (g 'impl st41))))
 
2010
                        (t3 (g 'mwwrt (g 'impl st42)))
 
2011
                        (st43 (simulate_a st42 nil nil nil nil pc0
 
2012
                                  bpstate0 ffpredicteddirection0
 
2013
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
2014
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
2015
                                  fdpredicteddirection0
 
2016
                                  fdpredictedtarget0 deppc0 desrc10
 
2017
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
2018
                                  deuseimm0 deregwrite0 dememwrite0
 
2019
                                  dememtoreg0 deisbranch0 dewrt0
 
2020
                                  depredicteddirection0
 
2021
                                  depredictedtarget0 emppc0
 
2022
                                  emis_taken_branch0 emtargetpc0
 
2023
                                  emarg20 emresult0 emdest0 emwrt0
 
2024
                                  emmispredictedtaken0
 
2025
                                  emmispredictednottaken0 emregwrite0
 
2026
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
2027
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
2028
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
2029
                                  mwregwrite0 (g 'ppc (g 'impl st42))
 
2030
                                  (g 'prf (g 'impl st42))
 
2031
                                  (g 'pdmem (g 'impl st42))))
 
2032
                        (t4 (g 'mwwrt (g 'impl st43)))
 
2033
                        (st44 (simulate_a st43 nil nil nil nil pc0
 
2034
                                  bpstate0 ffpredicteddirection0
 
2035
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
2036
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
2037
                                  fdpredicteddirection0
 
2038
                                  fdpredictedtarget0 deppc0 desrc10
 
2039
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
2040
                                  deuseimm0 deregwrite0 dememwrite0
 
2041
                                  dememtoreg0 deisbranch0 dewrt0
 
2042
                                  depredicteddirection0
 
2043
                                  depredictedtarget0 emppc0
 
2044
                                  emis_taken_branch0 emtargetpc0
 
2045
                                  emarg20 emresult0 emdest0 emwrt0
 
2046
                                  emmispredictedtaken0
 
2047
                                  emmispredictednottaken0 emregwrite0
 
2048
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
2049
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
2050
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
2051
                                  mwregwrite0 (g 'ppc (g 'impl st43))
 
2052
                                  (g 'prf (g 'impl st43))
 
2053
                                  (g 'pdmem (g 'impl st43))))
 
2054
                        (t5 (g 'mwwrt (g 'impl st44)))
 
2055
                        (st45 (simulate_a st44 nil nil nil nil pc0
 
2056
                                  bpstate0 ffpredicteddirection0
 
2057
                                  ffpredictedtarget0 ffwrt0 ffinst0
 
2058
                                  ffppc0 fdppc0 fdwrt0 fdinst0
 
2059
                                  fdpredicteddirection0
 
2060
                                  fdpredictedtarget0 deppc0 desrc10
 
2061
                                  desrc20 a1 a2 dedest0 deop0 deimm0
 
2062
                                  deuseimm0 deregwrite0 dememwrite0
 
2063
                                  dememtoreg0 deisbranch0 dewrt0
 
2064
                                  depredicteddirection0
 
2065
                                  depredictedtarget0 emppc0
 
2066
                                  emis_taken_branch0 emtargetpc0
 
2067
                                  emarg20 emresult0 emdest0 emwrt0
 
2068
                                  emmispredictedtaken0
 
2069
                                  emmispredictednottaken0 emregwrite0
 
2070
                                  emmemwrite0 emmemtoreg0 dmem0 mmppc0
 
2071
                                  mmval0 mmdest0 mmwrt0 mmregwrite0
 
2072
                                  mwppc0 mwval0 mwdest0 mwwrt0
 
2073
                                  mwregwrite0 (g 'ppc (g 'impl st44))
 
2074
                                  (g 'prf (g 'impl st44))
 
2075
                                  (g 'pdmem (g 'impl st44))))
 
2076
                        (t6 (g 'mwwrt (g 'impl st45)))
 
2077
                        (rank_v (cond
 
2078
                                  ((and (equal counter zero) t1)
 
2079
                                   (add-1 counter))
 
2080
                                  ((and
 
2081
                                    (or (equal counter zero)
 
2082
                                     (equal counter (add-1 zero)))
 
2083
                                    t2)
 
2084
                                   (add-1 (add-1 counter)))
 
2085
                                  (t3 (add-1 (add-1 (add-1 counter))))
 
2086
                                  (t4 (add-1
 
2087
                                       (add-1 (add-1 (add-1 counter)))))
 
2088
                                  (t5 (add-1
 
2089
                                       (add-1
 
2090
                                        (add-1 (add-1 (add-1 counter))))))
 
2091
                                  (t6 (add-1
 
2092
                                       (add-1
 
2093
                                        (add-1
 
2094
                                         (add-1
 
2095
                                          (add-1 (add-1 counter)))))))
 
2096
                                  (t (add-1
 
2097
                                      (add-1
 
2098
                                       (add-1
 
2099
                                        (add-1
 
2100
                                         (add-1
 
2101
                                          (add-1 (add-1 counter)))))))))))
 
2102
                   (or (and (and (equal s_pc1 i_pc)
 
2103
                                 (equal (read-srf_a a1 s_rf1)
 
2104
                                        (read-prf_a a1 i_rf)))
 
2105
                            (equal s_dmem1 i_dmem))
 
2106
                       (and (and (equal s_pc0 i_pc)
 
2107
                                 (equal (read-srf_a a1 s_rf0)
 
2108
                                        (read-prf_a a1 i_rf)))
 
2109
                            (equal s_dmem0 i_dmem)))))
 
2110
        :rule-classes nil)