1(* cheriScript.sml - generated by L3 - Mon Oct 16 11:55:39 2017 *)
2open HolKernel boolLib bossLib Import
3
4val () = Import.start "cheri"
5
6val _ = Record
7  ("EntryLo",
8   [("C",FTy 3),("D",bTy),("G",bTy),("L",bTy),("PFN",FTy 28),("S",bTy),
9    ("V",bTy),("entrylo'rst",FTy 28)])
10;
11val _ = Record
12  ("TLBEntry",
13   [("ASID",F8),("C0",FTy 3),("C1",FTy 3),("D0",bTy),("D1",bTy),("G",bTy),
14    ("L0",bTy),("L1",bTy),("Mask",FTy 12),("PFN0",FTy 28),("PFN1",FTy 28),
15    ("R",FTy 2),("S0",bTy),("S1",bTy),("V0",bTy),("V1",bTy),
16    ("VPN2",FTy 27)])
17;
18val _ = Construct [("AccessType",[("LOAD",[]),("STORE",[])])]
19;
20val _ = Record ("Index",[("Index",FTy 9),("P",bTy),("index'rst",FTy 22)])
21;
22val _ = Record ("Random",[("Random",F8),("random'rst",FTy 24)])
23;
24val _ = Record ("Wired",[("Wired",F8),("wired'rst",FTy 24)])
25;
26val _ = Record ("PageMask",[("Mask",FTy 12),("pagemask'rst",FTy 20)])
27;
28val _ = Record
29  ("EntryHi",
30   [("ASID",F8),("R",FTy 2),("VPN2",FTy 27),("entryhi'rst",FTy 27)])
31;
32val _ = Record
33  ("StatusRegister",
34   [("BEV",bTy),("CU0",bTy),("CU1",bTy),("CU2",bTy),("CU3",bTy),
35    ("ERL",bTy),("EXL",bTy),("FR",bTy),("IE",bTy),("IM",F8),("KSU",FTy 2),
36    ("KX",bTy),("RE",bTy),("SX",bTy),("UX",bTy),
37    ("statusregister'rst",FTy 9)])
38;
39val _ = Record
40  ("ConfigRegister",
41   [("AR",FTy 3),("AT",FTy 2),("BE",bTy),("K0",FTy 3),("M",bTy),
42    ("MT",FTy 3),("configregister'rst",FTy 19)])
43;
44val _ = Record
45  ("ConfigRegister1",
46   [("C2",bTy),("CA",bTy),("DA",FTy 3),("DL",FTy 3),("DS",FTy 3),
47    ("EP",bTy),("FP",bTy),("IA",FTy 3),("IL",FTy 3),("IS",FTy 3),
48    ("M",bTy),("MD",bTy),("MMUSize",FTy 6),("PCR",bTy),("WR",bTy)])
49;
50val _ = Record
51  ("ConfigRegister2",
52   [("M",bTy),("SA",F4),("SL",F4),("SS",F4),("SU",F4),("TA",F4),("TL",F4),
53    ("TS",F4),("TU",FTy 3)])
54;
55val _ = Record
56  ("ConfigRegister3",
57   [("DSPP",bTy),("LPA",bTy),("M",bTy),("MT",bTy),("SM",bTy),("SP",bTy),
58    ("TL",bTy),("ULRI",bTy),("VEIC",bTy),("VInt",bTy),
59    ("configregister3'rst",FTy 22)])
60;
61val _ = Record
62  ("ConfigRegister6",
63   [("LTLB",bTy),("TLBSize",F16),("configregister6'rst",FTy 15)])
64;
65val _ = Record
66  ("CauseRegister",
67   [("BD",bTy),("CE",FTy 2),("ExcCode",FTy 5),("IP",F8),("TI",bTy),
68    ("causeregister'rst",FTy 15)])
69;
70val _ = Record
71  ("Context",[("BadVPN2",FTy 19),("PTEBase",FTy 41),("context'rst",F4)])
72;
73val _ = Record
74  ("XContext",
75   [("BadVPN2",FTy 27),("PTEBase",FTy 31),("R",FTy 2),("xcontext'rst",F4)])
76;
77val _ = Record
78  ("HWREna",
79   [("CC",bTy),("CCRes",bTy),("CPUNum",bTy),("DS",bTy),("KS",bTy),
80    ("RS",bTy),("UL",bTy),("hwrena'rst",FTy 25)])
81;
82val _ = Record
83  ("CP0",
84   [("BadVAddr",F64),("Cause",CTy"CauseRegister"),("Compare",F32),
85    ("Config",CTy"ConfigRegister"),("Config1",CTy"ConfigRegister1"),
86    ("Config2",CTy"ConfigRegister2"),("Config3",CTy"ConfigRegister3"),
87    ("Config6",CTy"ConfigRegister6"),("Context",CTy"Context"),
88    ("Count",F32),("Debug",F32),("EInstr",F32),("EPC",F64),
89    ("EntryHi",CTy"EntryHi"),("EntryLo0",CTy"EntryLo"),
90    ("EntryLo1",CTy"EntryLo"),("ErrCtl",F32),("ErrorEPC",F64),
91    ("HWREna",CTy"HWREna"),("Index",CTy"Index"),("LLAddr",F64),
92    ("PRId",F32),("PageMask",CTy"PageMask"),("Random",CTy"Random"),
93    ("Status",CTy"StatusRegister"),("UsrLocal",F64),("Wired",CTy"Wired"),
94    ("XContext",CTy"XContext")])
95;
96val _ = Record
97  ("CoreStats",[("branch_not_taken",nTy),("branch_taken",nTy)])
98;
99val _ = Record
100  ("procState",
101   [("c_BranchDelay",OTy F64),("c_BranchTo",OTy F64),("c_CP0",CTy"CP0"),
102    ("c_CoreStats",CTy"CoreStats"),("c_LLbit",OTy bTy),("c_PC",F64),
103    ("c_exceptionSignalled",bTy),("c_hi",OTy F64),("c_lo",OTy F64)])
104;
105val _ = Record ("UPerms",[("Reserved",FTy 28),("soft",F4)])
106;
107val _ = Record
108  ("Perms",
109   [("Access_System_Registers",bTy),("Global",bTy),("Permit_CCall",bTy),
110    ("Permit_Execute",bTy),("Permit_Load",bTy),
111    ("Permit_Load_Capability",bTy),("Permit_Seal",bTy),
112    ("Permit_Store",bTy),("Permit_Store_Capability",bTy),
113    ("Permit_Store_Local_Capability",bTy),("Reserved",FTy 22)])
114;
115val _ = Record
116  ("Capability",
117   [("base",F64),("cursor",F64),("length",F64),("otype",FTy 24),
118    ("perms",FTy 15),("reserved",F8),("sealed",bTy),("tag",bTy),
119    ("uperms",F16)])
120;
121val _ = Record ("CapCause",[("ExcCode",F8),("RegNum",F8)])
122;
123val _ = Construct
124  [("ExceptionType",
125    [("Int",[]),("Mod",[]),("TLBL",[]),("TLBS",[]),("AdEL",[]),
126     ("AdES",[]),("Sys",[]),("Bp",[]),("ResI",[]),("CpU",[]),("Ov",[]),
127     ("Tr",[]),("CTLBL",[]),("CTLBS",[]),("C2E",[]),("MCheck",[]),
128     ("XTLBRefillL",[]),("XTLBRefillS",[])])]
129;
130val _ = Construct
131  [("CapExceptionType",
132    [("capExcNone",[]),("capExcLength",[]),("capExcTag",[]),
133     ("capExcSeal",[]),("capExcType",[]),("capExcCall",[]),
134     ("capExcRet",[]),("capExcUnderflowTSS",[]),("capExcUser",[]),
135     ("capExcTLBNoStore",[]),("capExcInexact",[]),("capExcGlobal",[]),
136     ("capExcPermExe",[]),("capExcPermLoad",[]),("capExcPermStore",[]),
137     ("capExcPermLoadCap",[]),("capExcPermStoreCap",[]),
138     ("capExcPermStoreLocalCap",[]),("capExcPermSeal",[]),
139     ("capExcAccessSysReg",[]),("capExcPermCCall",[])])]
140;
141val _ = Construct
142  [("DataType",[("Cap",[CTy"Capability"]),("Raw",[FTy 256])])]
143;
144val _ = Record
145  ("FCSR",
146   [("ABS2008",bTy),("CauseE",bTy),("CauseI",bTy),("CauseO",bTy),
147    ("CauseU",bTy),("CauseV",bTy),("CauseZ",bTy),("EnableI",bTy),
148    ("EnableO",bTy),("EnableU",bTy),("EnableV",bTy),("EnableZ",bTy),
149    ("FCC",F8),("FS",bTy),("FlagI",bTy),("FlagO",bTy),("FlagU",bTy),
150    ("FlagV",bTy),("FlagZ",bTy),("NAN2008",bTy),("RM",FTy 2),
151    ("fcsr'rst",FTy 3)])
152;
153val _ = Record
154  ("FIR",
155   [("ASE",bTy),("D",bTy),("F64",bTy),("L",bTy),("PS",bTy),("PrID",F8),
156    ("Rev",F8),("S",bTy),("W",bTy),("fir'rst",FTy 9)])
157;
158val _ = Construct
159  [("Branch",
160    [("BEQ",[PTy(FTy 5,PTy(FTy 5,F16))]),
161     ("BEQL",[PTy(FTy 5,PTy(FTy 5,F16))]),("BGEZ",[PTy(FTy 5,F16)]),
162     ("BGEZAL",[PTy(FTy 5,F16)]),("BGEZALL",[PTy(FTy 5,F16)]),
163     ("BGEZL",[PTy(FTy 5,F16)]),("BGTZ",[PTy(FTy 5,F16)]),
164     ("BGTZL",[PTy(FTy 5,F16)]),("BLEZ",[PTy(FTy 5,F16)]),
165     ("BLEZL",[PTy(FTy 5,F16)]),("BLTZ",[PTy(FTy 5,F16)]),
166     ("BLTZAL",[PTy(FTy 5,F16)]),("BLTZALL",[PTy(FTy 5,F16)]),
167     ("BLTZL",[PTy(FTy 5,F16)]),("BNE",[PTy(FTy 5,PTy(FTy 5,F16))]),
168     ("BNEL",[PTy(FTy 5,PTy(FTy 5,F16))]),("J",[FTy 26]),("JAL",[FTy 26]),
169     ("JALR",[PTy(FTy 5,FTy 5)]),("JR",[FTy 5])])]
170;
171val _ = Construct
172  [("CP",
173    [("DMFC0",[PTy(FTy 5,PTy(FTy 5,FTy 3))]),
174     ("DMTC0",[PTy(FTy 5,PTy(FTy 5,FTy 3))]),
175     ("MFC0",[PTy(FTy 5,PTy(FTy 5,FTy 3))]),
176     ("MTC0",[PTy(FTy 5,PTy(FTy 5,FTy 3))])])]
177;
178val _ = Construct
179  [("Store",
180    [("SB",[PTy(FTy 5,PTy(FTy 5,F16))]),
181     ("SC",[PTy(FTy 5,PTy(FTy 5,F16))]),
182     ("SCD",[PTy(FTy 5,PTy(FTy 5,F16))]),
183     ("SD",[PTy(FTy 5,PTy(FTy 5,F16))]),
184     ("SDL",[PTy(FTy 5,PTy(FTy 5,F16))]),
185     ("SDR",[PTy(FTy 5,PTy(FTy 5,F16))]),
186     ("SH",[PTy(FTy 5,PTy(FTy 5,F16))]),
187     ("SW",[PTy(FTy 5,PTy(FTy 5,F16))]),
188     ("SWL",[PTy(FTy 5,PTy(FTy 5,F16))]),
189     ("SWR",[PTy(FTy 5,PTy(FTy 5,F16))])])]
190;
191val _ = Construct
192  [("Load",
193    [("LB",[PTy(FTy 5,PTy(FTy 5,F16))]),
194     ("LBU",[PTy(FTy 5,PTy(FTy 5,F16))]),
195     ("LD",[PTy(FTy 5,PTy(FTy 5,F16))]),
196     ("LDL",[PTy(FTy 5,PTy(FTy 5,F16))]),
197     ("LDR",[PTy(FTy 5,PTy(FTy 5,F16))]),
198     ("LH",[PTy(FTy 5,PTy(FTy 5,F16))]),
199     ("LHU",[PTy(FTy 5,PTy(FTy 5,F16))]),
200     ("LL",[PTy(FTy 5,PTy(FTy 5,F16))]),
201     ("LLD",[PTy(FTy 5,PTy(FTy 5,F16))]),
202     ("LW",[PTy(FTy 5,PTy(FTy 5,F16))]),
203     ("LWL",[PTy(FTy 5,PTy(FTy 5,F16))]),
204     ("LWR",[PTy(FTy 5,PTy(FTy 5,F16))]),
205     ("LWU",[PTy(FTy 5,PTy(FTy 5,F16))])])]
206;
207val _ = Construct
208  [("Trap",
209    [("TEQ",[PTy(FTy 5,FTy 5)]),("TEQI",[PTy(FTy 5,F16)]),
210     ("TGE",[PTy(FTy 5,FTy 5)]),("TGEI",[PTy(FTy 5,F16)]),
211     ("TGEIU",[PTy(FTy 5,F16)]),("TGEU",[PTy(FTy 5,FTy 5)]),
212     ("TLT",[PTy(FTy 5,FTy 5)]),("TLTI",[PTy(FTy 5,F16)]),
213     ("TLTIU",[PTy(FTy 5,F16)]),("TLTU",[PTy(FTy 5,FTy 5)]),
214     ("TNE",[PTy(FTy 5,FTy 5)]),("TNEI",[PTy(FTy 5,F16)])])]
215;
216val _ = Construct
217  [("Shift",
218    [("DSLL",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
219     ("DSLL32",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
220     ("DSLLV",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
221     ("DSRA",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
222     ("DSRA32",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
223     ("DSRAV",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
224     ("DSRL",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
225     ("DSRL32",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
226     ("DSRLV",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
227     ("SLL",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
228     ("SLLV",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
229     ("SRA",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
230     ("SRAV",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
231     ("SRL",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
232     ("SRLV",[PTy(FTy 5,PTy(FTy 5,FTy 5))])])]
233;
234val _ = Construct
235  [("MultDiv",
236    [("DDIV",[PTy(FTy 5,FTy 5)]),("DDIVU",[PTy(FTy 5,FTy 5)]),
237     ("DIV",[PTy(FTy 5,FTy 5)]),("DIVU",[PTy(FTy 5,FTy 5)]),
238     ("DMULT",[PTy(FTy 5,FTy 5)]),("DMULTU",[PTy(FTy 5,FTy 5)]),
239     ("MADD",[PTy(FTy 5,FTy 5)]),("MADDU",[PTy(FTy 5,FTy 5)]),
240     ("MFHI",[FTy 5]),("MFLO",[FTy 5]),("MSUB",[PTy(FTy 5,FTy 5)]),
241     ("MSUBU",[PTy(FTy 5,FTy 5)]),("MTHI",[FTy 5]),("MTLO",[FTy 5]),
242     ("MUL",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),("MULT",[PTy(FTy 5,FTy 5)]),
243     ("MULTU",[PTy(FTy 5,FTy 5)])])]
244;
245val _ = Construct
246  [("ArithR",
247    [("ADD",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
248     ("ADDU",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
249     ("AND",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
250     ("DADD",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
251     ("DADDU",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
252     ("DSUB",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
253     ("DSUBU",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
254     ("MOVN",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
255     ("MOVZ",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
256     ("NOR",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
257     ("OR",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
258     ("SLT",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
259     ("SLTU",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
260     ("SUB",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
261     ("SUBU",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
262     ("XOR",[PTy(FTy 5,PTy(FTy 5,FTy 5))])])]
263;
264val _ = Construct
265  [("ArithI",
266    [("ADDI",[PTy(FTy 5,PTy(FTy 5,F16))]),
267     ("ADDIU",[PTy(FTy 5,PTy(FTy 5,F16))]),
268     ("ANDI",[PTy(FTy 5,PTy(FTy 5,F16))]),
269     ("DADDI",[PTy(FTy 5,PTy(FTy 5,F16))]),
270     ("DADDIU",[PTy(FTy 5,PTy(FTy 5,F16))]),("LUI",[PTy(FTy 5,F16)]),
271     ("ORI",[PTy(FTy 5,PTy(FTy 5,F16))]),
272     ("SLTI",[PTy(FTy 5,PTy(FTy 5,F16))]),
273     ("SLTIU",[PTy(FTy 5,PTy(FTy 5,F16))]),
274     ("XORI",[PTy(FTy 5,PTy(FTy 5,F16))])])]
275;
276val _ = Construct
277  [("CGet",
278    [("CGetBase",[PTy(FTy 5,FTy 5)]),("CGetCause",[FTy 5]),
279     ("CGetLen",[PTy(FTy 5,FTy 5)]),("CGetOffset",[PTy(FTy 5,FTy 5)]),
280     ("CGetPCC",[FTy 5]),("CGetPCCSetOffset",[PTy(FTy 5,FTy 5)]),
281     ("CGetPerm",[PTy(FTy 5,FTy 5)]),("CGetSealed",[PTy(FTy 5,FTy 5)]),
282     ("CGetTag",[PTy(FTy 5,FTy 5)]),("CGetType",[PTy(FTy 5,FTy 5)]),
283     ("CToPtr",[PTy(FTy 5,PTy(FTy 5,FTy 5))])])]
284;
285val _ = Construct
286  [("CSet",
287    [("CAndPerm",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
288     ("CClearRegs",[PTy(FTy 5,F16)]),("CClearTag",[PTy(FTy 5,FTy 5)]),
289     ("CFromPtr",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
290     ("CIncOffset",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
291     ("CIncOffsetImmediate",[PTy(FTy 5,PTy(FTy 5,FTy 11))]),
292     ("CSetBounds",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
293     ("CSetBoundsExact",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
294     ("CSetBoundsImmediate",[PTy(FTy 5,PTy(FTy 5,FTy 11))]),
295     ("CSetCause",[FTy 5]),("CSetOffset",[PTy(FTy 5,PTy(FTy 5,FTy 5))])])]
296;
297val _ = Construct
298  [("CCheck",
299    [("CCheckPerm",[PTy(FTy 5,FTy 5)]),("CCheckType",[PTy(FTy 5,FTy 5)])])]
300;
301val _ = Construct
302  [("CHERICOP2",
303    [("CBTS",[PTy(FTy 5,F16)]),("CBTU",[PTy(FTy 5,F16)]),
304     ("CCall0",[PTy(FTy 5,FTy 5)]),("CCall1",[PTy(FTy 5,FTy 5)]),
305     ("CCheck",[CTy"CCheck"]),("CGet",[CTy"CGet"]),
306     ("CJALR",[PTy(FTy 5,FTy 5)]),("CJR",[FTy 5]),
307     ("CLLC",[PTy(FTy 5,FTy 5)]),("CLLx",[PTy(FTy 5,PTy(FTy 5,FTy 3))]),
308     ("CMOVN",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
309     ("CMOVZ",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
310     ("CPtrCmp",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 3)))]),("CReturn",[]),
311     ("CSCC",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
312     ("CSCx",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 2)))]),
313     ("CSeal",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),("CSet",[CTy"CSet"]),
314     ("CSub",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
315     ("CUnseal",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),("DumpCapReg",[]),
316     ("UnknownCapInstruction",[])])]
317;
318val _ = Construct [("COP2",[("CHERICOP2",[CTy"CHERICOP2"])])]
319;
320val _ = Construct
321  [("CHERISWC2",
322    [("CStore",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,PTy(F8,FTy 2))))])])]
323;
324val _ = Construct [("SWC2",[("CHERISWC2",[CTy"CHERISWC2"])])]
325;
326val _ = Construct
327  [("CHERILWC2",
328    [("CLoad",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,PTy(F8,PTy(F1,FTy 2)))))])])]
329;
330val _ = Construct [("LWC2",[("CHERILWC2",[CTy"CHERILWC2"])])]
331;
332val _ = Construct
333  [("CHERILDC2",[("CLC",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 11)))])])]
334;
335val _ = Construct [("LDC2",[("CHERILDC2",[CTy"CHERILDC2"])])]
336;
337val _ = Construct
338  [("CHERISDC2",[("CSC",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 11)))])])]
339;
340val _ = Construct [("SDC2",[("CHERISDC2",[CTy"CHERISDC2"])])]
341;
342val _ = Construct
343  [("COP1",
344    [("ABS_D",[PTy(FTy 5,FTy 5)]),("ABS_S",[PTy(FTy 5,FTy 5)]),
345     ("ADD_D",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
346     ("ADD_S",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),("BC1F",[PTy(F16,FTy 3)]),
347     ("BC1FL",[PTy(F16,FTy 3)]),("BC1T",[PTy(F16,FTy 3)]),
348     ("BC1TL",[PTy(F16,FTy 3)]),("CEIL_L_D",[PTy(FTy 5,FTy 5)]),
349     ("CEIL_L_S",[PTy(FTy 5,FTy 5)]),("CEIL_W_D",[PTy(FTy 5,FTy 5)]),
350     ("CEIL_W_S",[PTy(FTy 5,FTy 5)]),("CFC1",[PTy(FTy 5,FTy 5)]),
351     ("CTC1",[PTy(FTy 5,FTy 5)]),("CVT_D_L",[PTy(FTy 5,FTy 5)]),
352     ("CVT_D_S",[PTy(FTy 5,FTy 5)]),("CVT_D_W",[PTy(FTy 5,FTy 5)]),
353     ("CVT_L_D",[PTy(FTy 5,FTy 5)]),("CVT_L_S",[PTy(FTy 5,FTy 5)]),
354     ("CVT_S_D",[PTy(FTy 5,FTy 5)]),("CVT_S_L",[PTy(FTy 5,FTy 5)]),
355     ("CVT_S_W",[PTy(FTy 5,FTy 5)]),("CVT_W_D",[PTy(FTy 5,FTy 5)]),
356     ("CVT_W_S",[PTy(FTy 5,FTy 5)]),
357     ("C_cond_D",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 3,FTy 3)))]),
358     ("C_cond_S",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 3,FTy 3)))]),
359     ("DIV_D",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
360     ("DIV_S",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),("DMFC1",[PTy(FTy 5,FTy 5)]),
361     ("DMTC1",[PTy(FTy 5,FTy 5)]),("FLOOR_L_D",[PTy(FTy 5,FTy 5)]),
362     ("FLOOR_L_S",[PTy(FTy 5,FTy 5)]),("FLOOR_W_D",[PTy(FTy 5,FTy 5)]),
363     ("FLOOR_W_S",[PTy(FTy 5,FTy 5)]),
364     ("LDC1",[PTy(FTy 5,PTy(F16,FTy 5))]),
365     ("LDXC1",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
366     ("LWC1",[PTy(FTy 5,PTy(F16,FTy 5))]),
367     ("LWXC1",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
368     ("MADD_D",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5)))]),
369     ("MADD_S",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5)))]),
370     ("MFC1",[PTy(FTy 5,FTy 5)]),("MOVF",[PTy(FTy 5,PTy(FTy 5,FTy 3))]),
371     ("MOVF_D",[PTy(FTy 5,PTy(FTy 5,FTy 3))]),
372     ("MOVF_S",[PTy(FTy 5,PTy(FTy 5,FTy 3))]),
373     ("MOVN_D",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
374     ("MOVN_S",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
375     ("MOVT",[PTy(FTy 5,PTy(FTy 5,FTy 3))]),
376     ("MOVT_D",[PTy(FTy 5,PTy(FTy 5,FTy 3))]),
377     ("MOVT_S",[PTy(FTy 5,PTy(FTy 5,FTy 3))]),
378     ("MOVZ_D",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
379     ("MOVZ_S",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
380     ("MOV_D",[PTy(FTy 5,FTy 5)]),("MOV_S",[PTy(FTy 5,FTy 5)]),
381     ("MSUB_D",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5)))]),
382     ("MSUB_S",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5)))]),
383     ("MTC1",[PTy(FTy 5,FTy 5)]),("MUL_D",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
384     ("MUL_S",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),("NEG_D",[PTy(FTy 5,FTy 5)]),
385     ("NEG_S",[PTy(FTy 5,FTy 5)]),("ROUND_L_D",[PTy(FTy 5,FTy 5)]),
386     ("ROUND_L_S",[PTy(FTy 5,FTy 5)]),("ROUND_W_D",[PTy(FTy 5,FTy 5)]),
387     ("ROUND_W_S",[PTy(FTy 5,FTy 5)]),
388     ("SDC1",[PTy(FTy 5,PTy(F16,FTy 5))]),
389     ("SDXC1",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
390     ("SQRT_D",[PTy(FTy 5,FTy 5)]),("SQRT_S",[PTy(FTy 5,FTy 5)]),
391     ("SUB_D",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
392     ("SUB_S",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
393     ("SWC1",[PTy(FTy 5,PTy(F16,FTy 5))]),
394     ("SWXC1",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
395     ("TRUNC_L_D",[PTy(FTy 5,FTy 5)]),("TRUNC_L_S",[PTy(FTy 5,FTy 5)]),
396     ("TRUNC_W_D",[PTy(FTy 5,FTy 5)]),("TRUNC_W_S",[PTy(FTy 5,FTy 5)]),
397     ("UnknownFPInstruction",[])])]
398;
399val _ = Construct
400  [("instruction",
401    [("ArithI",[CTy"ArithI"]),("ArithR",[CTy"ArithR"]),("BREAK",[]),
402     ("Branch",[CTy"Branch"]),("CACHE",[PTy(FTy 5,PTy(FTy 5,F16))]),
403     ("COP1",[CTy"COP1"]),("COP2",[CTy"COP2"]),("CP",[CTy"CP"]),
404     ("ERET",[]),("LDC2",[CTy"LDC2"]),("LWC2",[CTy"LWC2"]),
405     ("Load",[CTy"Load"]),("MultDiv",[CTy"MultDiv"]),
406     ("RDHWR",[PTy(FTy 5,FTy 5)]),("ReservedInstruction",[]),
407     ("SDC2",[CTy"SDC2"]),("SWC2",[CTy"SWC2"]),("SYNC",[FTy 5]),
408     ("SYSCALL",[]),("Shift",[CTy"Shift"]),("Store",[CTy"Store"]),
409     ("TLBP",[]),("TLBR",[]),("TLBWI",[]),("TLBWR",[]),
410     ("Trap",[CTy"Trap"]),("Unpredictable",[]),("WAIT",[])])]
411;
412val _ = Construct
413  [("exception",[("NoException",[]),("UNPREDICTABLE",[sTy])])]
414;
415val _ = Record
416  ("cheri_state",
417   [("BranchDelayPCC",OTy(PTy(F64,CTy"Capability"))),
418    ("BranchToPCC",OTy(PTy(F64,CTy"Capability"))),("CCallBranch",bTy),
419    ("CCallBranchDelay",bTy),("UNPREDICTABLE_HI",ATy(uTy,uTy)),
420    ("UNPREDICTABLE_LO",ATy(uTy,uTy)),("UNPREDICTABLE_TLB",ATy(uTy,uTy)),
421    ("all_BranchDelayPCC",ATy(F8,OTy(PTy(F64,CTy"Capability")))),
422    ("all_BranchToPCC",ATy(F8,OTy(PTy(F64,CTy"Capability")))),
423    ("all_CCallBranch",ATy(F8,bTy)),("all_CCallBranchDelay",ATy(F8,bTy)),
424    ("all_TLB_assoc",ATy(F8,ATy(F4,OTy(CTy"TLBEntry")))),
425    ("all_TLB_direct",ATy(F8,ATy(F8,OTy(CTy"TLBEntry")))),
426    ("all_capcause",ATy(F8,CTy"CapCause")),
427    ("all_capr",ATy(F8,ATy(FTy 5,CTy"Capability"))),
428    ("all_gpr",ATy(F8,ATy(FTy 5,F64))),
429    ("all_pcc",ATy(F8,CTy"Capability")),
430    ("all_state",ATy(F8,CTy"procState")),
431    ("c_TLB_assoc",ATy(F4,OTy(CTy"TLBEntry"))),
432    ("c_TLB_direct",ATy(F8,OTy(CTy"TLBEntry"))),
433    ("c_capr",ATy(FTy 5,CTy"Capability")),("c_gpr",ATy(FTy 5,F64)),
434    ("c_pcc",CTy"Capability"),("c_state",CTy"procState"),
435    ("capcause",CTy"CapCause"),("csv_stats_header_done",bTy),
436    ("currentInst",OTy F32),("done",bTy),("exception",CTy"exception"),
437    ("fcsr",CTy"FCSR"),("fgr",ATy(FTy 5,F64)),("fir",CTy"FIR"),
438    ("instCnt",nTy),("log",ATy(nTy,sTy)),
439    ("mem",ATy(FTy 35,CTy"DataType")),("print",ATy(sTy,uTy)),
440    ("procID",F8),("totalCore",nTy),("trace_level",nTy),
441    ("unknown_counters",ATy(sTy,nTy)),("watchOOBCap",bTy),
442    ("watchPaddr",OTy(FTy 40)),("watcher",sTy)])
443;
444val qTy = CTy "cheri_state";
445fun qVar v = Term.mk_var (v, ParseDatatype.pretypeToType qTy);
446val raise'exception_def = Def
447  ("raise'exception",Var("e",CTy"exception"),
448   Close
449     (qVar"state",
450      TP[LX(VTy"a"),
451         ITE(EQ(Dest("exception",CTy"exception",qVar"state"),
452                Const("NoException",CTy"exception")),
453             Rupd("exception",TP[qVar"state",Var("e",CTy"exception")]),
454             qVar"state")]))
455;
456val rec'EntryLo_def = Def
457  ("rec'EntryLo",Var("x",F64),
458   Rec(CTy"EntryLo",
459       [EX(Var("x",F64),LN 5,LN 3,FTy 3),Bop(Bit,Var("x",F64),LN 2),
460        Bop(Bit,Var("x",F64),LN 0),Bop(Bit,Var("x",F64),LN 62),
461        EX(Var("x",F64),LN 33,LN 6,FTy 28),Bop(Bit,Var("x",F64),LN 63),
462        Bop(Bit,Var("x",F64),LN 1),EX(Var("x",F64),LN 61,LN 34,FTy 28)]))
463;
464val reg'EntryLo_def = Def
465  ("reg'EntryLo",Var("x",CTy"EntryLo"),
466   CS(Var("x",CTy"EntryLo"),
467      [(Rec(CTy"EntryLo",
468            [Var("C",FTy 3),bVar"D",bVar"G",bVar"L",Var("PFN",FTy 28),
469             bVar"S",bVar"V",Var("entrylo'rst",FTy 28)]),
470        CC[Mop(Cast F1,bVar"S"),Mop(Cast F1,bVar"L"),
471           Var("entrylo'rst",FTy 28),Var("PFN",FTy 28),Var("C",FTy 3),
472           Mop(Cast F1,bVar"D"),Mop(Cast F1,bVar"V"),Mop(Cast F1,bVar"G")])]))
473;
474val write'rec'EntryLo_def = Def
475  ("write'rec'EntryLo",TP[AVar F64,Var("x",CTy"EntryLo")],
476   Call("reg'EntryLo",F64,Var("x",CTy"EntryLo")))
477;
478val write'reg'EntryLo_def = Def
479  ("write'reg'EntryLo",TP[AVar(CTy"EntryLo"),Var("x",F64)],
480   Call("rec'EntryLo",CTy"EntryLo",Var("x",F64)))
481;
482val rec'Index_def = Def
483  ("rec'Index",Var("x",F32),
484   Rec(CTy"Index",
485       [EX(Var("x",F32),LN 8,LN 0,FTy 9),Bop(Bit,Var("x",F32),LN 31),
486        EX(Var("x",F32),LN 30,LN 9,FTy 22)]))
487;
488val reg'Index_def = Def
489  ("reg'Index",Var("x",CTy"Index"),
490   CS(Var("x",CTy"Index"),
491      [(Rec(CTy"Index",
492            [Var("Index",FTy 9),bVar"P",Var("index'rst",FTy 22)]),
493        CC[Mop(Cast F1,bVar"P"),Var("index'rst",FTy 22),Var("Index",FTy 9)])]))
494;
495val write'rec'Index_def = Def
496  ("write'rec'Index",TP[AVar F32,Var("x",CTy"Index")],
497   Call("reg'Index",F32,Var("x",CTy"Index")))
498;
499val write'reg'Index_def = Def
500  ("write'reg'Index",TP[AVar(CTy"Index"),Var("x",F32)],
501   Call("rec'Index",CTy"Index",Var("x",F32)))
502;
503val rec'Random_def = Def
504  ("rec'Random",Var("x",F32),
505   Rec(CTy"Random",
506       [EX(Var("x",F32),LN 7,LN 0,F8),EX(Var("x",F32),LN 31,LN 8,FTy 24)]))
507;
508val reg'Random_def = Def
509  ("reg'Random",Var("x",CTy"Random"),
510   CS(Var("x",CTy"Random"),
511      [(Rec(CTy"Random",[Var("Random",F8),Var("random'rst",FTy 24)]),
512        CC[Var("random'rst",FTy 24),Var("Random",F8)])]))
513;
514val write'rec'Random_def = Def
515  ("write'rec'Random",TP[AVar F32,Var("x",CTy"Random")],
516   Call("reg'Random",F32,Var("x",CTy"Random")))
517;
518val write'reg'Random_def = Def
519  ("write'reg'Random",TP[AVar(CTy"Random"),Var("x",F32)],
520   Call("rec'Random",CTy"Random",Var("x",F32)))
521;
522val rec'Wired_def = Def
523  ("rec'Wired",Var("x",F32),
524   Rec(CTy"Wired",
525       [EX(Var("x",F32),LN 7,LN 0,F8),EX(Var("x",F32),LN 31,LN 8,FTy 24)]))
526;
527val reg'Wired_def = Def
528  ("reg'Wired",Var("x",CTy"Wired"),
529   CS(Var("x",CTy"Wired"),
530      [(Rec(CTy"Wired",[Var("Wired",F8),Var("wired'rst",FTy 24)]),
531        CC[Var("wired'rst",FTy 24),Var("Wired",F8)])]))
532;
533val write'rec'Wired_def = Def
534  ("write'rec'Wired",TP[AVar F32,Var("x",CTy"Wired")],
535   Call("reg'Wired",F32,Var("x",CTy"Wired")))
536;
537val write'reg'Wired_def = Def
538  ("write'reg'Wired",TP[AVar(CTy"Wired"),Var("x",F32)],
539   Call("rec'Wired",CTy"Wired",Var("x",F32)))
540;
541val rec'PageMask_def = Def
542  ("rec'PageMask",Var("x",F32),
543   Rec(CTy"PageMask",
544       [EX(Var("x",F32),LN 24,LN 13,FTy 12),
545        CC[EX(Var("x",F32),LN 12,LN 0,FTy 13),
546           EX(Var("x",F32),LN 31,LN 25,FTy 7)]]))
547;
548val reg'PageMask_def = Def
549  ("reg'PageMask",Var("x",CTy"PageMask"),
550   CS(Var("x",CTy"PageMask"),
551      [(Rec(CTy"PageMask",[Var("Mask",FTy 12),Var("pagemask'rst",FTy 20)]),
552        CC[EX(Var("pagemask'rst",FTy 20),LN 6,LN 0,FTy 7),
553           Var("Mask",FTy 12),
554           EX(Var("pagemask'rst",FTy 20),LN 19,LN 7,FTy 13)])]))
555;
556val write'rec'PageMask_def = Def
557  ("write'rec'PageMask",TP[AVar F32,Var("x",CTy"PageMask")],
558   Call("reg'PageMask",F32,Var("x",CTy"PageMask")))
559;
560val write'reg'PageMask_def = Def
561  ("write'reg'PageMask",TP[AVar(CTy"PageMask"),Var("x",F32)],
562   Call("rec'PageMask",CTy"PageMask",Var("x",F32)))
563;
564val rec'EntryHi_def = Def
565  ("rec'EntryHi",Var("x",F64),
566   Rec(CTy"EntryHi",
567       [EX(Var("x",F64),LN 7,LN 0,F8),EX(Var("x",F64),LN 63,LN 62,FTy 2),
568        EX(Var("x",F64),LN 39,LN 13,FTy 27),
569        CC[EX(Var("x",F64),LN 12,LN 8,FTy 5),
570           EX(Var("x",F64),LN 61,LN 40,FTy 22)]]))
571;
572val reg'EntryHi_def = Def
573  ("reg'EntryHi",Var("x",CTy"EntryHi"),
574   CS(Var("x",CTy"EntryHi"),
575      [(Rec(CTy"EntryHi",
576            [Var("ASID",F8),Var("R",FTy 2),Var("VPN2",FTy 27),
577             Var("entryhi'rst",FTy 27)]),
578        CC[Var("R",FTy 2),EX(Var("entryhi'rst",FTy 27),LN 21,LN 0,FTy 22),
579           Var("VPN2",FTy 27),
580           EX(Var("entryhi'rst",FTy 27),LN 26,LN 22,FTy 5),Var("ASID",F8)])]))
581;
582val write'rec'EntryHi_def = Def
583  ("write'rec'EntryHi",TP[AVar F64,Var("x",CTy"EntryHi")],
584   Call("reg'EntryHi",F64,Var("x",CTy"EntryHi")))
585;
586val write'reg'EntryHi_def = Def
587  ("write'reg'EntryHi",TP[AVar(CTy"EntryHi"),Var("x",F64)],
588   Call("rec'EntryHi",CTy"EntryHi",Var("x",F64)))
589;
590val rec'StatusRegister_def = Def
591  ("rec'StatusRegister",Var("x",F32),
592   Rec(CTy"StatusRegister",
593       [Bop(Bit,Var("x",F32),LN 22),Bop(Bit,Var("x",F32),LN 28),
594        Bop(Bit,Var("x",F32),LN 29),Bop(Bit,Var("x",F32),LN 30),
595        Bop(Bit,Var("x",F32),LN 31),Bop(Bit,Var("x",F32),LN 2),
596        Bop(Bit,Var("x",F32),LN 1),Bop(Bit,Var("x",F32),LN 26),
597        Bop(Bit,Var("x",F32),LN 0),EX(Var("x",F32),LN 15,LN 8,F8),
598        EX(Var("x",F32),LN 4,LN 3,FTy 2),Bop(Bit,Var("x",F32),LN 7),
599        Bop(Bit,Var("x",F32),LN 25),Bop(Bit,Var("x",F32),LN 6),
600        Bop(Bit,Var("x",F32),LN 5),
601        CC[EX(Var("x",F32),LN 21,LN 16,FTy 6),
602           EX(Var("x",F32),LN 24,LN 23,FTy 2),
603           EX(Var("x",F32),LN 27,LN 27,F1)]]))
604;
605val reg'StatusRegister_def = Def
606  ("reg'StatusRegister",Var("x",CTy"StatusRegister"),
607   CS(Var("x",CTy"StatusRegister"),
608      [(Rec(CTy"StatusRegister",
609            [bVar"BEV",bVar"CU0",bVar"CU1",bVar"CU2",bVar"CU3",bVar"ERL",
610             bVar"EXL",bVar"FR",bVar"IE",Var("IM",F8),Var("KSU",FTy 2),
611             bVar"KX",bVar"RE",bVar"SX",bVar"UX",
612             Var("statusregister'rst",FTy 9)]),
613        CC[Mop(Cast F1,bVar"CU3"),Mop(Cast F1,bVar"CU2"),
614           Mop(Cast F1,bVar"CU1"),Mop(Cast F1,bVar"CU0"),
615           EX(Var("statusregister'rst",FTy 9),LN 0,LN 0,F1),
616           Mop(Cast F1,bVar"FR"),Mop(Cast F1,bVar"RE"),
617           EX(Var("statusregister'rst",FTy 9),LN 2,LN 1,FTy 2),
618           Mop(Cast F1,bVar"BEV"),
619           EX(Var("statusregister'rst",FTy 9),LN 8,LN 3,FTy 6),
620           Var("IM",F8),Mop(Cast F1,bVar"KX"),Mop(Cast F1,bVar"SX"),
621           Mop(Cast F1,bVar"UX"),Var("KSU",FTy 2),Mop(Cast F1,bVar"ERL"),
622           Mop(Cast F1,bVar"EXL"),Mop(Cast F1,bVar"IE")])]))
623;
624val write'rec'StatusRegister_def = Def
625  ("write'rec'StatusRegister",TP[AVar F32,Var("x",CTy"StatusRegister")],
626   Call("reg'StatusRegister",F32,Var("x",CTy"StatusRegister")))
627;
628val write'reg'StatusRegister_def = Def
629  ("write'reg'StatusRegister",TP[AVar(CTy"StatusRegister"),Var("x",F32)],
630   Call("rec'StatusRegister",CTy"StatusRegister",Var("x",F32)))
631;
632val rec'ConfigRegister_def = Def
633  ("rec'ConfigRegister",Var("x",F32),
634   Rec(CTy"ConfigRegister",
635       [EX(Var("x",F32),LN 12,LN 10,FTy 3),
636        EX(Var("x",F32),LN 14,LN 13,FTy 2),Bop(Bit,Var("x",F32),LN 15),
637        EX(Var("x",F32),LN 2,LN 0,FTy 3),Bop(Bit,Var("x",F32),LN 31),
638        EX(Var("x",F32),LN 9,LN 7,FTy 3),
639        CC[EX(Var("x",F32),LN 6,LN 3,F4),
640           EX(Var("x",F32),LN 30,LN 16,FTy 15)]]))
641;
642val reg'ConfigRegister_def = Def
643  ("reg'ConfigRegister",Var("x",CTy"ConfigRegister"),
644   CS(Var("x",CTy"ConfigRegister"),
645      [(Rec(CTy"ConfigRegister",
646            [Var("AR",FTy 3),Var("AT",FTy 2),bVar"BE",Var("K0",FTy 3),
647             bVar"M",Var("MT",FTy 3),Var("configregister'rst",FTy 19)]),
648        CC[Mop(Cast F1,bVar"M"),
649           EX(Var("configregister'rst",FTy 19),LN 14,LN 0,FTy 15),
650           Mop(Cast F1,bVar"BE"),Var("AT",FTy 2),Var("AR",FTy 3),
651           Var("MT",FTy 3),
652           EX(Var("configregister'rst",FTy 19),LN 18,LN 15,F4),
653           Var("K0",FTy 3)])]))
654;
655val write'rec'ConfigRegister_def = Def
656  ("write'rec'ConfigRegister",TP[AVar F32,Var("x",CTy"ConfigRegister")],
657   Call("reg'ConfigRegister",F32,Var("x",CTy"ConfigRegister")))
658;
659val write'reg'ConfigRegister_def = Def
660  ("write'reg'ConfigRegister",TP[AVar(CTy"ConfigRegister"),Var("x",F32)],
661   Call("rec'ConfigRegister",CTy"ConfigRegister",Var("x",F32)))
662;
663val rec'ConfigRegister1_def = Def
664  ("rec'ConfigRegister1",Var("x",F32),
665   Rec(CTy"ConfigRegister1",
666       [Bop(Bit,Var("x",F32),LN 6),Bop(Bit,Var("x",F32),LN 2),
667        EX(Var("x",F32),LN 9,LN 7,FTy 3),
668        EX(Var("x",F32),LN 12,LN 10,FTy 3),
669        EX(Var("x",F32),LN 15,LN 13,FTy 3),Bop(Bit,Var("x",F32),LN 1),
670        Bop(Bit,Var("x",F32),LN 0),EX(Var("x",F32),LN 18,LN 16,FTy 3),
671        EX(Var("x",F32),LN 21,LN 19,FTy 3),
672        EX(Var("x",F32),LN 24,LN 22,FTy 3),Bop(Bit,Var("x",F32),LN 31),
673        Bop(Bit,Var("x",F32),LN 5),EX(Var("x",F32),LN 30,LN 25,FTy 6),
674        Bop(Bit,Var("x",F32),LN 4),Bop(Bit,Var("x",F32),LN 3)]))
675;
676val reg'ConfigRegister1_def = Def
677  ("reg'ConfigRegister1",Var("x",CTy"ConfigRegister1"),
678   CS(Var("x",CTy"ConfigRegister1"),
679      [(Rec(CTy"ConfigRegister1",
680            [bVar"C2",bVar"CA",Var("DA",FTy 3),Var("DL",FTy 3),
681             Var("DS",FTy 3),bVar"EP",bVar"FP",Var("IA",FTy 3),
682             Var("IL",FTy 3),Var("IS",FTy 3),bVar"M",bVar"MD",
683             Var("MMUSize",FTy 6),bVar"PCR",bVar"WR"]),
684        CC[Mop(Cast F1,bVar"M"),Var("MMUSize",FTy 6),Var("IS",FTy 3),
685           Var("IL",FTy 3),Var("IA",FTy 3),Var("DS",FTy 3),
686           Var("DL",FTy 3),Var("DA",FTy 3),Mop(Cast F1,bVar"C2"),
687           Mop(Cast F1,bVar"MD"),Mop(Cast F1,bVar"PCR"),
688           Mop(Cast F1,bVar"WR"),Mop(Cast F1,bVar"CA"),
689           Mop(Cast F1,bVar"EP"),Mop(Cast F1,bVar"FP")])]))
690;
691val write'rec'ConfigRegister1_def = Def
692  ("write'rec'ConfigRegister1",TP[AVar F32,Var("x",CTy"ConfigRegister1")],
693   Call("reg'ConfigRegister1",F32,Var("x",CTy"ConfigRegister1")))
694;
695val write'reg'ConfigRegister1_def = Def
696  ("write'reg'ConfigRegister1",
697   TP[AVar(CTy"ConfigRegister1"),Var("x",F32)],
698   Call("rec'ConfigRegister1",CTy"ConfigRegister1",Var("x",F32)))
699;
700val rec'ConfigRegister2_def = Def
701  ("rec'ConfigRegister2",Var("x",F32),
702   Rec(CTy"ConfigRegister2",
703       [Bop(Bit,Var("x",F32),LN 31),EX(Var("x",F32),LN 3,LN 0,F4),
704        EX(Var("x",F32),LN 7,LN 4,F4),EX(Var("x",F32),LN 11,LN 8,F4),
705        EX(Var("x",F32),LN 15,LN 12,F4),EX(Var("x",F32),LN 19,LN 16,F4),
706        EX(Var("x",F32),LN 23,LN 20,F4),EX(Var("x",F32),LN 27,LN 24,F4),
707        EX(Var("x",F32),LN 30,LN 28,FTy 3)]))
708;
709val reg'ConfigRegister2_def = Def
710  ("reg'ConfigRegister2",Var("x",CTy"ConfigRegister2"),
711   CS(Var("x",CTy"ConfigRegister2"),
712      [(Rec(CTy"ConfigRegister2",
713            [bVar"M",Var("SA",F4),Var("SL",F4),Var("SS",F4),Var("SU",F4),
714             Var("TA",F4),Var("TL",F4),Var("TS",F4),Var("TU",FTy 3)]),
715        CC[Mop(Cast F1,bVar"M"),Var("TU",FTy 3),Var("TS",F4),Var("TL",F4),
716           Var("TA",F4),Var("SU",F4),Var("SS",F4),Var("SL",F4),
717           Var("SA",F4)])]))
718;
719val write'rec'ConfigRegister2_def = Def
720  ("write'rec'ConfigRegister2",TP[AVar F32,Var("x",CTy"ConfigRegister2")],
721   Call("reg'ConfigRegister2",F32,Var("x",CTy"ConfigRegister2")))
722;
723val write'reg'ConfigRegister2_def = Def
724  ("write'reg'ConfigRegister2",
725   TP[AVar(CTy"ConfigRegister2"),Var("x",F32)],
726   Call("rec'ConfigRegister2",CTy"ConfigRegister2",Var("x",F32)))
727;
728val rec'ConfigRegister3_def = Def
729  ("rec'ConfigRegister3",Var("x",F32),
730   Rec(CTy"ConfigRegister3",
731       [Bop(Bit,Var("x",F32),LN 10),Bop(Bit,Var("x",F32),LN 7),
732        Bop(Bit,Var("x",F32),LN 31),Bop(Bit,Var("x",F32),LN 2),
733        Bop(Bit,Var("x",F32),LN 1),Bop(Bit,Var("x",F32),LN 4),
734        Bop(Bit,Var("x",F32),LN 0),Bop(Bit,Var("x",F32),LN 13),
735        Bop(Bit,Var("x",F32),LN 6),Bop(Bit,Var("x",F32),LN 5),
736        CC[EX(Var("x",F32),LN 3,LN 3,F1),EX(Var("x",F32),LN 9,LN 8,FTy 2),
737           EX(Var("x",F32),LN 12,LN 11,FTy 2),
738           EX(Var("x",F32),LN 30,LN 14,FTy 17)]]))
739;
740val reg'ConfigRegister3_def = Def
741  ("reg'ConfigRegister3",Var("x",CTy"ConfigRegister3"),
742   CS(Var("x",CTy"ConfigRegister3"),
743      [(Rec(CTy"ConfigRegister3",
744            [bVar"DSPP",bVar"LPA",bVar"M",bVar"MT",bVar"SM",bVar"SP",
745             bVar"TL",bVar"ULRI",bVar"VEIC",bVar"VInt",
746             Var("configregister3'rst",FTy 22)]),
747        CC[Mop(Cast F1,bVar"M"),
748           EX(Var("configregister3'rst",FTy 22),LN 16,LN 0,FTy 17),
749           Mop(Cast F1,bVar"ULRI"),
750           EX(Var("configregister3'rst",FTy 22),LN 18,LN 17,FTy 2),
751           Mop(Cast F1,bVar"DSPP"),
752           EX(Var("configregister3'rst",FTy 22),LN 20,LN 19,FTy 2),
753           Mop(Cast F1,bVar"LPA"),Mop(Cast F1,bVar"VEIC"),
754           Mop(Cast F1,bVar"VInt"),Mop(Cast F1,bVar"SP"),
755           EX(Var("configregister3'rst",FTy 22),LN 21,LN 21,F1),
756           Mop(Cast F1,bVar"MT"),Mop(Cast F1,bVar"SM"),
757           Mop(Cast F1,bVar"TL")])]))
758;
759val write'rec'ConfigRegister3_def = Def
760  ("write'rec'ConfigRegister3",TP[AVar F32,Var("x",CTy"ConfigRegister3")],
761   Call("reg'ConfigRegister3",F32,Var("x",CTy"ConfigRegister3")))
762;
763val write'reg'ConfigRegister3_def = Def
764  ("write'reg'ConfigRegister3",
765   TP[AVar(CTy"ConfigRegister3"),Var("x",F32)],
766   Call("rec'ConfigRegister3",CTy"ConfigRegister3",Var("x",F32)))
767;
768val rec'ConfigRegister6_def = Def
769  ("rec'ConfigRegister6",Var("x",F32),
770   Rec(CTy"ConfigRegister6",
771       [Bop(Bit,Var("x",F32),LN 2),EX(Var("x",F32),LN 31,LN 16,F16),
772        CC[EX(Var("x",F32),LN 1,LN 0,FTy 2),
773           EX(Var("x",F32),LN 15,LN 3,FTy 13)]]))
774;
775val reg'ConfigRegister6_def = Def
776  ("reg'ConfigRegister6",Var("x",CTy"ConfigRegister6"),
777   CS(Var("x",CTy"ConfigRegister6"),
778      [(Rec(CTy"ConfigRegister6",
779            [bVar"LTLB",Var("TLBSize",F16),
780             Var("configregister6'rst",FTy 15)]),
781        CC[Var("TLBSize",F16),
782           EX(Var("configregister6'rst",FTy 15),LN 12,LN 0,FTy 13),
783           Mop(Cast F1,bVar"LTLB"),
784           EX(Var("configregister6'rst",FTy 15),LN 14,LN 13,FTy 2)])]))
785;
786val write'rec'ConfigRegister6_def = Def
787  ("write'rec'ConfigRegister6",TP[AVar F32,Var("x",CTy"ConfigRegister6")],
788   Call("reg'ConfigRegister6",F32,Var("x",CTy"ConfigRegister6")))
789;
790val write'reg'ConfigRegister6_def = Def
791  ("write'reg'ConfigRegister6",
792   TP[AVar(CTy"ConfigRegister6"),Var("x",F32)],
793   Call("rec'ConfigRegister6",CTy"ConfigRegister6",Var("x",F32)))
794;
795val rec'CauseRegister_def = Def
796  ("rec'CauseRegister",Var("x",F32),
797   Rec(CTy"CauseRegister",
798       [Bop(Bit,Var("x",F32),LN 31),EX(Var("x",F32),LN 29,LN 28,FTy 2),
799        EX(Var("x",F32),LN 6,LN 2,FTy 5),EX(Var("x",F32),LN 15,LN 8,F8),
800        Bop(Bit,Var("x",F32),LN 30),
801        CC[EX(Var("x",F32),LN 1,LN 0,FTy 2),EX(Var("x",F32),LN 7,LN 7,F1),
802           EX(Var("x",F32),LN 27,LN 16,FTy 12)]]))
803;
804val reg'CauseRegister_def = Def
805  ("reg'CauseRegister",Var("x",CTy"CauseRegister"),
806   CS(Var("x",CTy"CauseRegister"),
807      [(Rec(CTy"CauseRegister",
808            [bVar"BD",Var("CE",FTy 2),Var("ExcCode",FTy 5),Var("IP",F8),
809             bVar"TI",Var("causeregister'rst",FTy 15)]),
810        CC[Mop(Cast F1,bVar"BD"),Mop(Cast F1,bVar"TI"),Var("CE",FTy 2),
811           EX(Var("causeregister'rst",FTy 15),LN 11,LN 0,FTy 12),
812           Var("IP",F8),
813           EX(Var("causeregister'rst",FTy 15),LN 12,LN 12,F1),
814           Var("ExcCode",FTy 5),
815           EX(Var("causeregister'rst",FTy 15),LN 14,LN 13,FTy 2)])]))
816;
817val write'rec'CauseRegister_def = Def
818  ("write'rec'CauseRegister",TP[AVar F32,Var("x",CTy"CauseRegister")],
819   Call("reg'CauseRegister",F32,Var("x",CTy"CauseRegister")))
820;
821val write'reg'CauseRegister_def = Def
822  ("write'reg'CauseRegister",TP[AVar(CTy"CauseRegister"),Var("x",F32)],
823   Call("rec'CauseRegister",CTy"CauseRegister",Var("x",F32)))
824;
825val rec'Context_def = Def
826  ("rec'Context",Var("x",F64),
827   Rec(CTy"Context",
828       [EX(Var("x",F64),LN 22,LN 4,FTy 19),
829        EX(Var("x",F64),LN 63,LN 23,FTy 41),EX(Var("x",F64),LN 3,LN 0,F4)]))
830;
831val reg'Context_def = Def
832  ("reg'Context",Var("x",CTy"Context"),
833   CS(Var("x",CTy"Context"),
834      [(Rec(CTy"Context",
835            [Var("BadVPN2",FTy 19),Var("PTEBase",FTy 41),
836             Var("context'rst",F4)]),
837        CC[Var("PTEBase",FTy 41),Var("BadVPN2",FTy 19),
838           Var("context'rst",F4)])]))
839;
840val write'rec'Context_def = Def
841  ("write'rec'Context",TP[AVar F64,Var("x",CTy"Context")],
842   Call("reg'Context",F64,Var("x",CTy"Context")))
843;
844val write'reg'Context_def = Def
845  ("write'reg'Context",TP[AVar(CTy"Context"),Var("x",F64)],
846   Call("rec'Context",CTy"Context",Var("x",F64)))
847;
848val rec'XContext_def = Def
849  ("rec'XContext",Var("x",F64),
850   Rec(CTy"XContext",
851       [EX(Var("x",F64),LN 30,LN 4,FTy 27),
852        EX(Var("x",F64),LN 63,LN 33,FTy 31),
853        EX(Var("x",F64),LN 32,LN 31,FTy 2),EX(Var("x",F64),LN 3,LN 0,F4)]))
854;
855val reg'XContext_def = Def
856  ("reg'XContext",Var("x",CTy"XContext"),
857   CS(Var("x",CTy"XContext"),
858      [(Rec(CTy"XContext",
859            [Var("BadVPN2",FTy 27),Var("PTEBase",FTy 31),Var("R",FTy 2),
860             Var("xcontext'rst",F4)]),
861        CC[Var("PTEBase",FTy 31),Var("R",FTy 2),Var("BadVPN2",FTy 27),
862           Var("xcontext'rst",F4)])]))
863;
864val write'rec'XContext_def = Def
865  ("write'rec'XContext",TP[AVar F64,Var("x",CTy"XContext")],
866   Call("reg'XContext",F64,Var("x",CTy"XContext")))
867;
868val write'reg'XContext_def = Def
869  ("write'reg'XContext",TP[AVar(CTy"XContext"),Var("x",F64)],
870   Call("rec'XContext",CTy"XContext",Var("x",F64)))
871;
872val rec'HWREna_def = Def
873  ("rec'HWREna",Var("x",F32),
874   Rec(CTy"HWREna",
875       [Bop(Bit,Var("x",F32),LN 2),Bop(Bit,Var("x",F32),LN 3),
876        Bop(Bit,Var("x",F32),LN 0),Bop(Bit,Var("x",F32),LN 28),
877        Bop(Bit,Var("x",F32),LN 26),Bop(Bit,Var("x",F32),LN 27),
878        Bop(Bit,Var("x",F32),LN 29),
879        CC[EX(Var("x",F32),LN 1,LN 1,F1),
880           EX(Var("x",F32),LN 25,LN 4,FTy 22),
881           EX(Var("x",F32),LN 31,LN 30,FTy 2)]]))
882;
883val reg'HWREna_def = Def
884  ("reg'HWREna",Var("x",CTy"HWREna"),
885   CS(Var("x",CTy"HWREna"),
886      [(Rec(CTy"HWREna",
887            [bVar"CC",bVar"CCRes",bVar"CPUNum",bVar"DS",bVar"KS",bVar"RS",
888             bVar"UL",Var("hwrena'rst",FTy 25)]),
889        CC[EX(Var("hwrena'rst",FTy 25),LN 1,LN 0,FTy 2),
890           Mop(Cast F1,bVar"UL"),Mop(Cast F1,bVar"DS"),
891           Mop(Cast F1,bVar"RS"),Mop(Cast F1,bVar"KS"),
892           EX(Var("hwrena'rst",FTy 25),LN 23,LN 2,FTy 22),
893           Mop(Cast F1,bVar"CCRes"),Mop(Cast F1,bVar"CC"),
894           EX(Var("hwrena'rst",FTy 25),LN 24,LN 24,F1),
895           Mop(Cast F1,bVar"CPUNum")])]))
896;
897val write'rec'HWREna_def = Def
898  ("write'rec'HWREna",TP[AVar F32,Var("x",CTy"HWREna")],
899   Call("reg'HWREna",F32,Var("x",CTy"HWREna")))
900;
901val write'reg'HWREna_def = Def
902  ("write'reg'HWREna",TP[AVar(CTy"HWREna"),Var("x",F32)],
903   Call("rec'HWREna",CTy"HWREna",Var("x",F32)))
904;
905val BYTE_def = Def0 ("BYTE",LW(0,3))
906;
907val HALFWORD_def = Def0 ("HALFWORD",LW(1,3))
908;
909val WORD_def = Def0 ("WORD",LW(3,3))
910;
911val DOUBLEWORD_def = Def0 ("DOUBLEWORD",LW(7,3))
912;
913val println_def = Def ("println",sVar"s",Close(qVar"state",LU))
914;
915val cpr_def = Def
916  ("cpr",Var("r",FTy 5),
917   CC[LS"c0_",
918      CS(Var("r",FTy 5),
919         [(LW(0,5),LS"index"),(LW(1,5),LS"random"),(LW(2,5),LS"entrylo0"),
920          (LW(3,5),LS"entrylo1"),(LW(4,5),LS"context"),
921          (LW(5,5),LS"pagemask"),(LW(6,5),LS"wired"),(LW(7,5),LS"hwrena"),
922          (LW(8,5),LS"badvaddr"),(LW(9,5),LS"count"),
923          (LW(10,5),LS"entryhi"),(LW(11,5),LS"compare"),
924          (LW(12,5),LS"status"),(LW(13,5),LS"cause"),(LW(14,5),LS"epc"),
925          (LW(15,5),LS"prid"),(LW(16,5),LS"config"),(LW(17,5),LS"lladdr"),
926          (LW(18,5),LS"watchlo"),(LW(19,5),LS"watchhi"),
927          (LW(20,5),LS"xcontext"),(LW(21,5),LS"21"),(LW(22,5),LS"22"),
928          (LW(23,5),LS"debug"),(LW(24,5),LS"depc"),(LW(25,5),LS"perfcnt"),
929          (LW(26,5),LS"errctl"),(LW(27,5),LS"cacheerr"),
930          (LW(28,5),LS"taglo"),(LW(29,5),LS"taghi"),
931          (LW(30,5),LS"errorepc"),(LW(31,5),LS"kscratch")])])
932;
933val hex_def = Def
934  ("hex",Var("x",BTy"N"),
935   Let(TP[iVar"q",iVar"r"],
936       Mop(QuotRem,TP[Mop(Cast iTy,Mop(Size,LY(0,"N"))),LI 4]),
937       CC[LS"0x",
938          Mop(PadLeft,
939              TP[LSC #"0",
940                 Mop(Cast nTy,
941                     Bop(Add,iVar"q",ITE(EQ(iVar"r",LI 0),LI 0,LI 1))),
942                 Mop(ToLower,Mop(Cast sTy,Var("x",BTy"N")))])]))
943;
944val log_sig_exception_def = Def
945  ("log_sig_exception",Var("ExceptionCode",FTy 5),
946   CC[LS"MIPS exception ",Call("hex",sTy,Var("ExceptionCode",FTy 5))])
947;
948val log_w_gpr_def = Def
949  ("log_w_gpr",TP[Var("r",FTy 5),Var("data",F64)],
950   CC[LS"Reg ",Mop(Cast sTy,Mop(Cast nTy,Var("r",FTy 5))),LS" <- ",
951      Call("hex",sTy,Var("data",F64))])
952;
953val log_w_hi_def = Def
954  ("log_w_hi",Var("data",F64),
955   CC[LS"HI <- ",Call("hex",sTy,Var("data",F64))])
956;
957val log_w_lo_def = Def
958  ("log_w_lo",Var("data",F64),
959   CC[LS"LO <- ",Call("hex",sTy,Var("data",F64))])
960;
961val log_w_c0_def = Def
962  ("log_w_c0",TP[Var("r",FTy 5),Var("data",F64)],
963   CC[Call("cpr",sTy,Var("r",FTy 5)),LS" <- ",
964      Call("hex",sTy,Var("data",F64))])
965;
966val log_w_mem_def = Def
967  ("log_w_mem",TP[Var("addr",FTy 37),Var("mask",F64),Var("data",F64)],
968   CC[LS"MEM[",Call("hex",sTy,CC[Var("addr",FTy 37),LW(0,3)]),
969      LS"] <- (data: ",Call("hex",sTy,Var("data",F64)),LS", mask: ",
970      Call("hex",sTy,Var("mask",F64)),LS")"])
971;
972val log_r_mem_def = Def
973  ("log_r_mem",TP[Var("addr",FTy 37),Var("data",F64)],
974   CC[LS"data <- MEM[",Call("hex",sTy,CC[Var("addr",FTy 37),LW(0,3)]),
975      LS"]: ",Call("hex",sTy,Var("data",F64))])
976;
977val clear_watcher_def = Def0 ("clear_watcher",LU)
978;
979val clear_logs_def = Def0 ("clear_logs",LU)
980;
981val gpr_def = Def
982  ("gpr",Var("n",FTy 5),
983   Close
984     (qVar"state",
985      Apply(Dest("c_gpr",ATy(FTy 5,F64),qVar"state"),Var("n",FTy 5))))
986;
987val write'gpr_def = Def
988  ("write'gpr",TP[Var("value",F64),Var("n",FTy 5)],
989   Close
990     (qVar"state",
991      Rupd
992        ("c_gpr",
993         TP[qVar"state",
994            Fupd
995              (Dest("c_gpr",ATy(FTy 5,F64),qVar"state"),Var("n",FTy 5),
996               Var("value",F64))])))
997;
998val GPR_def = Def
999  ("GPR",Var("n",FTy 5),
1000   Close
1001     (qVar"state",
1002      ITE(EQ(Var("n",FTy 5),LW(0,5)),LW(0,64),
1003          Apply(Call("gpr",ATy(qTy,F64),Var("n",FTy 5)),qVar"state"))))
1004;
1005val write'GPR_def = Def
1006  ("write'GPR",TP[Var("value",F64),Var("n",FTy 5)],
1007   Close
1008     (qVar"state",
1009      ITE(Mop(Not,EQ(Var("n",FTy 5),LW(0,5))),
1010          Apply
1011            (Call
1012               ("write'gpr",ATy(qTy,qTy),
1013                TP[Var("value",F64),Var("n",FTy 5)]),qVar"state"),
1014          qVar"state")))
1015;
1016val PC_def = Def
1017  ("PC",qVar"state",
1018   Dest("c_PC",F64,Dest("c_state",CTy"procState",qVar"state")))
1019;
1020val write'PC_def = Def
1021  ("write'PC",Var("value",F64),
1022   Close
1023     (qVar"state",
1024      Rupd
1025        ("c_state",
1026         TP[qVar"state",
1027            Rupd
1028              ("c_PC",
1029               TP[Dest("c_state",CTy"procState",qVar"state"),
1030                  Var("value",F64)])])))
1031;
1032val hi_def = Def
1033  ("hi",qVar"state",
1034   Dest("c_hi",OTy F64,Dest("c_state",CTy"procState",qVar"state")))
1035;
1036val write'hi_def = Def
1037  ("write'hi",Var("value",OTy F64),
1038   Close
1039     (qVar"state",
1040      Rupd
1041        ("c_state",
1042         TP[qVar"state",
1043            Rupd
1044              ("c_hi",
1045               TP[Dest("c_state",CTy"procState",qVar"state"),
1046                  Var("value",OTy F64)])])))
1047;
1048val lo_def = Def
1049  ("lo",qVar"state",
1050   Dest("c_lo",OTy F64,Dest("c_state",CTy"procState",qVar"state")))
1051;
1052val write'lo_def = Def
1053  ("write'lo",Var("value",OTy F64),
1054   Close
1055     (qVar"state",
1056      Rupd
1057        ("c_state",
1058         TP[qVar"state",
1059            Rupd
1060              ("c_lo",
1061               TP[Dest("c_state",CTy"procState",qVar"state"),
1062                  Var("value",OTy F64)])])))
1063;
1064val CP0_def = Def
1065  ("CP0",qVar"state",
1066   Dest("c_CP0",CTy"CP0",Dest("c_state",CTy"procState",qVar"state")))
1067;
1068val write'CP0_def = Def
1069  ("write'CP0",Var("value",CTy"CP0"),
1070   Close
1071     (qVar"state",
1072      Rupd
1073        ("c_state",
1074         TP[qVar"state",
1075            Rupd
1076              ("c_CP0",
1077               TP[Dest("c_state",CTy"procState",qVar"state"),
1078                  Var("value",CTy"CP0")])])))
1079;
1080val BranchDelay_def = Def
1081  ("BranchDelay",qVar"state",
1082   Dest
1083     ("c_BranchDelay",OTy F64,Dest("c_state",CTy"procState",qVar"state")))
1084;
1085val write'BranchDelay_def = Def
1086  ("write'BranchDelay",Var("value",OTy F64),
1087   Close
1088     (qVar"state",
1089      Rupd
1090        ("c_state",
1091         TP[qVar"state",
1092            Rupd
1093              ("c_BranchDelay",
1094               TP[Dest("c_state",CTy"procState",qVar"state"),
1095                  Var("value",OTy F64)])])))
1096;
1097val BranchTo_def = Def
1098  ("BranchTo",qVar"state",
1099   Dest("c_BranchTo",OTy F64,Dest("c_state",CTy"procState",qVar"state")))
1100;
1101val write'BranchTo_def = Def
1102  ("write'BranchTo",Var("value",OTy F64),
1103   Close
1104     (qVar"state",
1105      Rupd
1106        ("c_state",
1107         TP[qVar"state",
1108            Rupd
1109              ("c_BranchTo",
1110               TP[Dest("c_state",CTy"procState",qVar"state"),
1111                  Var("value",OTy F64)])])))
1112;
1113val LLbit_def = Def
1114  ("LLbit",qVar"state",
1115   Dest("c_LLbit",OTy bTy,Dest("c_state",CTy"procState",qVar"state")))
1116;
1117val write'LLbit_def = Def
1118  ("write'LLbit",Var("value",OTy bTy),
1119   Close
1120     (qVar"state",
1121      Rupd
1122        ("c_state",
1123         TP[qVar"state",
1124            Rupd
1125              ("c_LLbit",
1126               TP[Dest("c_state",CTy"procState",qVar"state"),
1127                  Var("value",OTy bTy)])])))
1128;
1129val exceptionSignalled_def = Def
1130  ("exceptionSignalled",qVar"state",
1131   Dest
1132     ("c_exceptionSignalled",bTy,
1133      Dest("c_state",CTy"procState",qVar"state")))
1134;
1135val write'exceptionSignalled_def = Def
1136  ("write'exceptionSignalled",bVar"value",
1137   Close
1138     (qVar"state",
1139      Rupd
1140        ("c_state",
1141         TP[qVar"state",
1142            Rupd
1143              ("c_exceptionSignalled",
1144               TP[Dest("c_state",CTy"procState",qVar"state"),bVar"value"])])))
1145;
1146val UserMode_def = Def
1147  ("UserMode",qVar"state",
1148   Bop(And,
1149       EQ(Dest
1150            ("KSU",FTy 2,
1151             Dest
1152               ("Status",CTy"StatusRegister",
1153                Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
1154          LW(2,2)),
1155       Mop(Not,
1156           Bop(Or,
1157               Dest
1158                 ("EXL",bTy,
1159                  Dest
1160                    ("Status",CTy"StatusRegister",
1161                     Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
1162               Dest
1163                 ("ERL",bTy,
1164                  Dest
1165                    ("Status",CTy"StatusRegister",
1166                     Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))))))
1167;
1168val SupervisorMode_def = Def
1169  ("SupervisorMode",qVar"state",
1170   Bop(And,
1171       EQ(Dest
1172            ("KSU",FTy 2,
1173             Dest
1174               ("Status",CTy"StatusRegister",
1175                Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
1176          LW(1,2)),
1177       Mop(Not,
1178           Bop(Or,
1179               Dest
1180                 ("EXL",bTy,
1181                  Dest
1182                    ("Status",CTy"StatusRegister",
1183                     Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
1184               Dest
1185                 ("ERL",bTy,
1186                  Dest
1187                    ("Status",CTy"StatusRegister",
1188                     Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))))))
1189;
1190val KernelMode_def = Def
1191  ("KernelMode",qVar"state",
1192   Bop(Or,
1193       EQ(Dest
1194            ("KSU",FTy 2,
1195             Dest
1196               ("Status",CTy"StatusRegister",
1197                Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
1198          LW(0,2)),
1199       Bop(Or,
1200           Dest
1201             ("EXL",bTy,
1202              Dest
1203                ("Status",CTy"StatusRegister",
1204                 Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
1205           Dest
1206             ("ERL",bTy,
1207              Dest
1208                ("Status",CTy"StatusRegister",
1209                 Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))))))
1210;
1211val BigEndianMem_def = Def
1212  ("BigEndianMem",qVar"state",
1213   Dest
1214     ("BE",bTy,
1215      Dest
1216        ("Config",CTy"ConfigRegister",
1217         Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))))
1218;
1219val ReverseEndian_def = Def
1220  ("ReverseEndian",qVar"state",
1221   Mop(Cast F1,
1222       Bop(And,
1223           Dest
1224             ("RE",bTy,
1225              Dest
1226                ("Status",CTy"StatusRegister",
1227                 Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
1228           Apply(Const("UserMode",ATy(qTy,bTy)),qVar"state"))))
1229;
1230val BigEndianCPU_def = Def
1231  ("BigEndianCPU",qVar"state",
1232   Bop(BXor,
1233       Mop(Cast F1,Apply(Const("BigEndianMem",ATy(qTy,bTy)),qVar"state")),
1234       Apply(Const("ReverseEndian",ATy(qTy,F1)),qVar"state")))
1235;
1236val NotWordValue_def = Def
1237  ("NotWordValue",Var("value",F64),
1238   Let(Var("top",FTy 33),EX(Var("value",F64),LN 63,LN 31,FTy 33),
1239       Bop(And,Mop(Not,EQ(Var("top",FTy 33),LW(0,33))),
1240           Mop(Not,EQ(Var("top",FTy 33),LW(8589934591,33))))))
1241;
1242val CheckBranch_def = Def
1243  ("CheckBranch",qVar"state",
1244   ITE(Mop(IsSome,Apply(Const("BranchDelay",ATy(qTy,OTy F64)),qVar"state")),
1245       Mop(Snd,
1246           Apply
1247             (Call
1248                ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
1249                 Call
1250                   ("UNPREDICTABLE",CTy"exception",
1251                    LS"Not permitted in delay slot")),qVar"state")),
1252       qVar"state"))
1253;
1254val dumpRegs_def = Def ("dumpRegs",AVar uTy,LU)
1255;
1256val coreStats_def = Def
1257  ("coreStats",qVar"state",
1258   Dest
1259     ("c_CoreStats",CTy"CoreStats",
1260      Dest("c_state",CTy"procState",qVar"state")))
1261;
1262val write'coreStats_def = Def
1263  ("write'coreStats",Var("value",CTy"CoreStats"),
1264   Close
1265     (qVar"state",
1266      Rupd
1267        ("c_state",
1268         TP[qVar"state",
1269            Rupd
1270              ("c_CoreStats",
1271               TP[Dest("c_state",CTy"procState",qVar"state"),
1272                  Var("value",CTy"CoreStats")])])))
1273;
1274val initCoreStats_def = Def
1275  ("initCoreStats",qVar"state",
1276   Let(TP[Var("v",CTy"CoreStats"),qVar"s"],
1277       Let(qVar"s0",
1278           Apply
1279             (Call
1280                ("write'coreStats",ATy(qTy,qTy),
1281                 Rupd
1282                   ("branch_taken",
1283                    TP[Apply
1284                         (Const("coreStats",ATy(qTy,CTy"CoreStats")),
1285                          qVar"state"),LN 0])),qVar"state"),
1286           TP[Apply(Const("coreStats",ATy(qTy,CTy"CoreStats")),qVar"s0"),
1287              qVar"s0"]),
1288       Apply
1289         (Call
1290            ("write'coreStats",ATy(qTy,qTy),
1291             Rupd("branch_not_taken",TP[Var("v",CTy"CoreStats"),LN 0])),
1292          qVar"s")))
1293;
1294val printCoreStats_def = Def
1295  ("printCoreStats",qVar"state",
1296   CC[Mop(PadRight,TP[LSC #" ",LN 16,LS"branch_taken"]),LS" = ",
1297      Mop(PadLeft,
1298          TP[LSC #" ",LN 9,
1299             Mop(Cast sTy,
1300                 Dest
1301                   ("branch_taken",nTy,
1302                    Apply
1303                      (Const("coreStats",ATy(qTy,CTy"CoreStats")),
1304                       qVar"state")))]),LS"\n",
1305      Mop(PadRight,TP[LSC #" ",LN 16,LS"branch_not_taken"]),LS" = ",
1306      Mop(PadLeft,
1307          TP[LSC #" ",LN 9,
1308             Mop(Cast sTy,
1309                 Dest
1310                   ("branch_not_taken",nTy,
1311                    Apply
1312                      (Const("coreStats",ATy(qTy,CTy"CoreStats")),
1313                       qVar"state")))])])
1314;
1315val csvHeaderCoreStats_def = Def0
1316  ("csvHeaderCoreStats",LS"branch_taken,branch_not_taken")
1317;
1318val csvCoreStats_def = Def
1319  ("csvCoreStats",qVar"state",
1320   CC[Mop(Cast sTy,
1321          Dest
1322            ("branch_taken",nTy,
1323             Apply(Const("coreStats",ATy(qTy,CTy"CoreStats")),qVar"state"))),
1324      LS",",
1325      Mop(Cast sTy,
1326          Dest
1327            ("branch_not_taken",nTy,
1328             Apply(Const("coreStats",ATy(qTy,CTy"CoreStats")),qVar"state")))])
1329;
1330val next_unknown_def = Def
1331  ("next_unknown",sVar"s",
1332   Close
1333     (qVar"state",
1334      Let(nVar"v",
1335          Apply(Dest("unknown_counters",ATy(sTy,nTy),qVar"state"),sVar"s"),
1336          TP[TP[nVar"v",sVar"s"],
1337             Rupd
1338               ("unknown_counters",
1339                TP[qVar"state",
1340                   Fupd
1341                     (Dest("unknown_counters",ATy(sTy,nTy),qVar"state"),
1342                      sVar"s",Bop(Add,nVar"v",LN 1))])])))
1343;
1344val CAPBYTEWIDTH_def = Def0 ("CAPBYTEWIDTH",LN 32)
1345;
1346val UPERMS_def = Def0 ("UPERMS",LN 16)
1347;
1348val OTYPEWIDTH_def = Def0 ("OTYPEWIDTH",LN 24)
1349;
1350val rec'UPerms_def = Def
1351  ("rec'UPerms",Var("x",F32),
1352   Rec(CTy"UPerms",
1353       [EX(Var("x",F32),LN 31,LN 4,FTy 28),EX(Var("x",F32),LN 3,LN 0,F4)]))
1354;
1355val reg'UPerms_def = Def
1356  ("reg'UPerms",Var("x",CTy"UPerms"),
1357   CS(Var("x",CTy"UPerms"),
1358      [(Rec(CTy"UPerms",[Var("Reserved",FTy 28),Var("soft",F4)]),
1359        CC[Var("Reserved",FTy 28),Var("soft",F4)])]))
1360;
1361val write'rec'UPerms_def = Def
1362  ("write'rec'UPerms",TP[AVar F32,Var("x",CTy"UPerms")],
1363   Call("reg'UPerms",F32,Var("x",CTy"UPerms")))
1364;
1365val write'reg'UPerms_def = Def
1366  ("write'reg'UPerms",TP[AVar(CTy"UPerms"),Var("x",F32)],
1367   Call("rec'UPerms",CTy"UPerms",Var("x",F32)))
1368;
1369val rec'Perms_def = Def
1370  ("rec'Perms",Var("x",F32),
1371   Rec(CTy"Perms",
1372       [Bop(Bit,Var("x",F32),LN 10),Bop(Bit,Var("x",F32),LN 0),
1373        Bop(Bit,Var("x",F32),LN 8),Bop(Bit,Var("x",F32),LN 1),
1374        Bop(Bit,Var("x",F32),LN 2),Bop(Bit,Var("x",F32),LN 4),
1375        Bop(Bit,Var("x",F32),LN 7),Bop(Bit,Var("x",F32),LN 3),
1376        Bop(Bit,Var("x",F32),LN 5),Bop(Bit,Var("x",F32),LN 6),
1377        CC[EX(Var("x",F32),LN 31,LN 11,FTy 21),
1378           EX(Var("x",F32),LN 9,LN 9,F1)]]))
1379;
1380val reg'Perms_def = Def
1381  ("reg'Perms",Var("x",CTy"Perms"),
1382   CS(Var("x",CTy"Perms"),
1383      [(Rec(CTy"Perms",
1384            [bVar"Access_System_Registers",bVar"Global",
1385             bVar"Permit_CCall",bVar"Permit_Execute",bVar"Permit_Load",
1386             bVar"Permit_Load_Capability",bVar"Permit_Seal",
1387             bVar"Permit_Store",bVar"Permit_Store_Capability",
1388             bVar"Permit_Store_Local_Capability",Var("Reserved",FTy 22)]),
1389        CC[EX(Var("Reserved",FTy 22),LN 21,LN 1,FTy 21),
1390           Mop(Cast F1,bVar"Access_System_Registers"),
1391           EX(Var("Reserved",FTy 22),LN 0,LN 0,F1),
1392           Mop(Cast F1,bVar"Permit_CCall"),Mop(Cast F1,bVar"Permit_Seal"),
1393           Mop(Cast F1,bVar"Permit_Store_Local_Capability"),
1394           Mop(Cast F1,bVar"Permit_Store_Capability"),
1395           Mop(Cast F1,bVar"Permit_Load_Capability"),
1396           Mop(Cast F1,bVar"Permit_Store"),Mop(Cast F1,bVar"Permit_Load"),
1397           Mop(Cast F1,bVar"Permit_Execute"),Mop(Cast F1,bVar"Global")])]))
1398;
1399val write'rec'Perms_def = Def
1400  ("write'rec'Perms",TP[AVar F32,Var("x",CTy"Perms")],
1401   Call("reg'Perms",F32,Var("x",CTy"Perms")))
1402;
1403val write'reg'Perms_def = Def
1404  ("write'reg'Perms",TP[AVar(CTy"Perms"),Var("x",F32)],
1405   Call("rec'Perms",CTy"Perms",Var("x",F32)))
1406;
1407val rec'Capability_def = Def
1408  ("rec'Capability",Var("x",FTy 257),
1409   Rec(CTy"Capability",
1410       [EX(Var("x",FTy 257),LN 191,LN 128,F64),
1411        EX(Var("x",FTy 257),LN 127,LN 64,F64),
1412        EX(Var("x",FTy 257),LN 255,LN 192,F64),
1413        EX(Var("x",FTy 257),LN 55,LN 32,FTy 24),
1414        EX(Var("x",FTy 257),LN 15,LN 1,FTy 15),
1415        EX(Var("x",FTy 257),LN 63,LN 56,F8),
1416        Bop(Bit,Var("x",FTy 257),LN 0),Bop(Bit,Var("x",FTy 257),LN 256),
1417        EX(Var("x",FTy 257),LN 31,LN 16,F16)]))
1418;
1419val reg'Capability_def = Def
1420  ("reg'Capability",Var("x",CTy"Capability"),
1421   CS(Var("x",CTy"Capability"),
1422      [(Rec(CTy"Capability",
1423            [Var("base",F64),Var("cursor",F64),Var("length",F64),
1424             Var("otype",FTy 24),Var("perms",FTy 15),Var("reserved",F8),
1425             bVar"sealed",bVar"tag",Var("uperms",F16)]),
1426        CC[Mop(Cast F1,bVar"tag"),Var("length",F64),Var("base",F64),
1427           Var("cursor",F64),Var("reserved",F8),Var("otype",FTy 24),
1428           Var("uperms",F16),Var("perms",FTy 15),Mop(Cast F1,bVar"sealed")])]))
1429;
1430val write'rec'Capability_def = Def
1431  ("write'rec'Capability",TP[AVar(FTy 257),Var("x",CTy"Capability")],
1432   Call("reg'Capability",FTy 257,Var("x",CTy"Capability")))
1433;
1434val write'reg'Capability_def = Def
1435  ("write'reg'Capability",TP[AVar(CTy"Capability"),Var("x",FTy 257)],
1436   Call("rec'Capability",CTy"Capability",Var("x",FTy 257)))
1437;
1438val defaultCap_def = Def0
1439  ("defaultCap",
1440   Rupd
1441     ("reserved",
1442      TP[Rupd
1443           ("perms",
1444            TP[Rupd
1445                 ("uperms",
1446                  TP[Rupd
1447                       ("otype",
1448                        TP[Rupd
1449                             ("length",
1450                              TP[Rupd
1451                                   ("base",
1452                                    TP[Rupd
1453                                         ("cursor",
1454                                          TP[Rupd
1455                                               ("sealed",
1456                                                TP[Rupd
1457                                                     ("tag",
1458                                                      TP[LX(CTy"Capability"),
1459                                                         LT]),LF]),
1460                                             LW(0,64)]),LW(0,64)]),
1461                                 Mop(BNot,LW(0,64))]),LW(0,24)]),
1462                     Mop(BNot,LW(0,16))]),Mop(BNot,LW(0,15))]),LW(0,8)]))
1463;
1464val nullCap_def = Def0
1465  ("nullCap",
1466   Rupd
1467     ("reserved",
1468      TP[Rupd
1469           ("perms",
1470            TP[Rupd
1471                 ("uperms",
1472                  TP[Rupd
1473                       ("otype",
1474                        TP[Rupd
1475                             ("length",
1476                              TP[Rupd
1477                                   ("base",
1478                                    TP[Rupd
1479                                         ("cursor",
1480                                          TP[Rupd
1481                                               ("sealed",
1482                                                TP[Rupd
1483                                                     ("tag",
1484                                                      TP[LX(CTy"Capability"),
1485                                                         LF]),LF]),
1486                                             LW(0,64)]),LW(0,64)]),
1487                                 LW(0,64)]),LW(0,24)]),LW(0,16)]),LW(0,15)]),
1488         LW(0,8)]))
1489;
1490val canRepOffset_def = Def
1491  ("canRepOffset",TP[Var("cap",CTy"Capability"),Var("newOffset",F64)],LT)
1492;
1493val canRepSeal_def = Def
1494  ("canRepSeal",TP[Var("cap",CTy"Capability"),bVar"newSeal"],LT)
1495;
1496val canRepBounds_def = Def
1497  ("canRepBounds",TP[Var("cap",CTy"Capability"),Var("newLength",F64)],LT)
1498;
1499val getTag_def = Def
1500  ("getTag",Var("cap",CTy"Capability"),
1501   Dest("tag",bTy,Var("cap",CTy"Capability")))
1502;
1503val getType_def = Def
1504  ("getType",Var("cap",CTy"Capability"),
1505   Dest("otype",FTy 24,Var("cap",CTy"Capability")))
1506;
1507val getPerms_def = Def
1508  ("getPerms",Var("cap",CTy"Capability"),
1509   Call
1510     ("rec'Perms",CTy"Perms",
1511      Mop(Cast F32,Dest("perms",FTy 15,Var("cap",CTy"Capability")))))
1512;
1513val getUPerms_def = Def
1514  ("getUPerms",Var("cap",CTy"Capability"),
1515   Call
1516     ("rec'UPerms",CTy"UPerms",
1517      Mop(Cast F32,Dest("uperms",F16,Var("cap",CTy"Capability")))))
1518;
1519val getSealed_def = Def
1520  ("getSealed",Var("cap",CTy"Capability"),
1521   Dest("sealed",bTy,Var("cap",CTy"Capability")))
1522;
1523val getOffset_def = Def
1524  ("getOffset",Var("cap",CTy"Capability"),
1525   Bop(Sub,Dest("cursor",F64,Var("cap",CTy"Capability")),
1526       Dest("base",F64,Var("cap",CTy"Capability"))))
1527;
1528val getBase_def = Def
1529  ("getBase",Var("cap",CTy"Capability"),
1530   Dest("base",F64,Var("cap",CTy"Capability")))
1531;
1532val getLength_def = Def
1533  ("getLength",Var("cap",CTy"Capability"),
1534   Dest("length",F64,Var("cap",CTy"Capability")))
1535;
1536val getBaseAndLength_def = Def
1537  ("getBaseAndLength",Var("cap",CTy"Capability"),
1538   TP[Dest("base",F64,Var("cap",CTy"Capability")),
1539      Dest("length",F64,Var("cap",CTy"Capability"))])
1540;
1541val setTag_def = Def
1542  ("setTag",TP[Var("cap",CTy"Capability"),bVar"tag"],
1543   Rupd("tag",TP[Var("cap",CTy"Capability"),bVar"tag"]))
1544;
1545val setType_def = Def
1546  ("setType",TP[Var("cap",CTy"Capability"),Var("otype",FTy 24)],
1547   Rupd("otype",TP[Var("cap",CTy"Capability"),Var("otype",FTy 24)]))
1548;
1549val setPerms_def = Def
1550  ("setPerms",TP[Var("cap",CTy"Capability"),Var("perms",CTy"Perms")],
1551   Rupd
1552     ("perms",
1553      TP[Var("cap",CTy"Capability"),
1554         EX(Call("reg'Perms",F32,Var("perms",CTy"Perms")),LN 14,LN 0,
1555            FTy 15)]))
1556;
1557val setUPerms_def = Def
1558  ("setUPerms",TP[Var("cap",CTy"Capability"),Var("uperms",CTy"UPerms")],
1559   Rupd
1560     ("uperms",
1561      TP[Var("cap",CTy"Capability"),
1562         EX(Call("reg'UPerms",F32,Var("uperms",CTy"UPerms")),LN 15,LN 0,
1563            F16)]))
1564;
1565val setSealed_def = Def
1566  ("setSealed",TP[Var("cap",CTy"Capability"),bVar"sealed"],
1567   Rupd("sealed",TP[Var("cap",CTy"Capability"),bVar"sealed"]))
1568;
1569val setOffset_def = Def
1570  ("setOffset",TP[Var("cap",CTy"Capability"),Var("offset",F64)],
1571   Rupd
1572     ("cursor",
1573      TP[Var("cap",CTy"Capability"),
1574         Bop(Add,Var("offset",F64),
1575             Dest("base",F64,Var("cap",CTy"Capability")))]))
1576;
1577val setBounds_def = Def
1578  ("setBounds",TP[Var("cap",CTy"Capability"),Var("length",F64)],
1579   Rupd
1580     ("length",
1581      TP[Rupd
1582           ("base",
1583            TP[Var("cap",CTy"Capability"),
1584               Dest("cursor",F64,Var("cap",CTy"Capability"))]),
1585         Var("length",F64)]))
1586;
1587val log_cap_write_def = Def
1588  ("log_cap_write",Var("cap",CTy"Capability"),
1589   CC[LS"t:",
1590      ITE(Call("getTag",bTy,Var("cap",CTy"Capability")),LS"1",LS"0"),
1591      LS" s:",
1592      ITE(Call("getSealed",bTy,Var("cap",CTy"Capability")),LS"1",LS"0"),
1593      LS" perms:",
1594      Call
1595        ("hex",sTy,
1596         CC[Dest("uperms",F16,Var("cap",CTy"Capability")),
1597            Dest("perms",FTy 15,Var("cap",CTy"Capability"))]),LS" type:",
1598      Call("hex",sTy,Call("getType",FTy 24,Var("cap",CTy"Capability"))),
1599      LS" offset:",
1600      Call("hex",sTy,Call("getOffset",F64,Var("cap",CTy"Capability"))),
1601      LS" base:",
1602      Call("hex",sTy,Call("getBase",F64,Var("cap",CTy"Capability"))),
1603      LS" length:",
1604      Call("hex",sTy,Call("getLength",F64,Var("cap",CTy"Capability")))])
1605;
1606val log_cpp_write_def = Def
1607  ("log_cpp_write",Var("cap",CTy"Capability"),
1608   CC[LS"PCC <- ",Call("log_cap_write",sTy,Var("cap",CTy"Capability"))])
1609;
1610val log_creg_write_def = Def
1611  ("log_creg_write",TP[Var("r",FTy 5),Var("cap",CTy"Capability")],
1612   CC[LS"CapReg ",Mop(Cast sTy,Mop(Cast nTy,Var("r",FTy 5))),LS" <- ",
1613      Call("log_cap_write",sTy,Var("cap",CTy"Capability"))])
1614;
1615val log_store_cap_def = Def
1616  ("log_store_cap",TP[Var("pAddr",FTy 40),Var("cap",CTy"Capability")],
1617   CC[LS"MEM[",Call("hex",sTy,Var("pAddr",FTy 40)),LS"] <- ",
1618      Call("log_cap_write",sTy,Var("cap",CTy"Capability"))])
1619;
1620val log_load_cap_def = Def
1621  ("log_load_cap",TP[Var("pAddr",FTy 40),Var("cap",CTy"Capability")],
1622   CC[Call("log_cap_write",sTy,Var("cap",CTy"Capability")),LS" <- MEM[",
1623      Call("hex",sTy,Var("pAddr",FTy 40)),LS"]"])
1624;
1625val isCapAligned_def = Def
1626  ("isCapAligned",Var("addr",F64),
1627   EQ(EX(Var("addr",F64),LN 4,LN 0,FTy 5),LW(0,5)))
1628;
1629val capToBits_def = Def
1630  ("capToBits",Var("cap",CTy"Capability"),
1631   EX(Call("reg'Capability",FTy 257,Var("cap",CTy"Capability")),LN 255,
1632      LN 0,FTy 256))
1633;
1634val bitsToCap_def = Def
1635  ("bitsToCap",Var("raw",FTy 256),
1636   Call("rec'Capability",CTy"Capability",CC[LW(0,1),Var("raw",FTy 256)]))
1637;
1638val readDwordFromRaw_def = Def
1639  ("readDwordFromRaw",TP[Var("dwordAddr",FTy 37),Var("raw",FTy 256)],
1640   CS(EX(Var("dwordAddr",FTy 37),LN 1,LN 0,FTy 2),
1641      [(LW(0,2),EX(Var("raw",FTy 256),LN 63,LN 0,F64)),
1642       (LW(1,2),EX(Var("raw",FTy 256),LN 127,LN 64,F64)),
1643       (LW(2,2),EX(Var("raw",FTy 256),LN 191,LN 128,F64)),
1644       (LW(3,2),EX(Var("raw",FTy 256),LN 255,LN 192,F64))]))
1645;
1646val updateDwordInRaw_def = Def
1647  ("updateDwordInRaw",
1648   TP[Var("dwordAddr",FTy 37),Var("data",F64),Var("mask",F64),
1649      Var("old_blob",FTy 256)],
1650   CS(EX(Var("dwordAddr",FTy 37),LN 1,LN 0,FTy 2),
1651      [(LW(0,2),
1652        CC[EX(Var("old_blob",FTy 256),LN 255,LN 64,FTy 192),
1653           Bop(BOr,
1654               Bop(BAnd,EX(Var("old_blob",FTy 256),LN 63,LN 0,F64),
1655                   Mop(BNot,Var("mask",F64))),
1656               Bop(BAnd,Var("data",F64),Var("mask",F64)))]),
1657       (LW(1,2),
1658        CC[EX(Var("old_blob",FTy 256),LN 255,LN 128,FTy 128),
1659           Bop(BOr,
1660               Bop(BAnd,EX(Var("old_blob",FTy 256),LN 127,LN 64,F64),
1661                   Mop(BNot,Var("mask",F64))),
1662               Bop(BAnd,Var("data",F64),Var("mask",F64))),
1663           EX(Var("old_blob",FTy 256),LN 63,LN 0,F64)]),
1664       (LW(2,2),
1665        CC[EX(Var("old_blob",FTy 256),LN 255,LN 192,F64),
1666           Bop(BOr,
1667               Bop(BAnd,EX(Var("old_blob",FTy 256),LN 191,LN 128,F64),
1668                   Mop(BNot,Var("mask",F64))),
1669               Bop(BAnd,Var("data",F64),Var("mask",F64))),
1670           EX(Var("old_blob",FTy 256),LN 127,LN 0,FTy 128)]),
1671       (LW(3,2),
1672        CC[Bop(BOr,
1673               Bop(BAnd,EX(Var("old_blob",FTy 256),LN 255,LN 192,F64),
1674                   Mop(BNot,Var("mask",F64))),
1675               Bop(BAnd,Var("data",F64),Var("mask",F64))),
1676           EX(Var("old_blob",FTy 256),LN 191,LN 0,FTy 192)])]))
1677;
1678val rec'CapCause_def = Def
1679  ("rec'CapCause",Var("x",F16),
1680   Rec(CTy"CapCause",
1681       [EX(Var("x",F16),LN 15,LN 8,F8),EX(Var("x",F16),LN 7,LN 0,F8)]))
1682;
1683val reg'CapCause_def = Def
1684  ("reg'CapCause",Var("x",CTy"CapCause"),
1685   CS(Var("x",CTy"CapCause"),
1686      [(Rec(CTy"CapCause",[Var("ExcCode",F8),Var("RegNum",F8)]),
1687        CC[Var("ExcCode",F8),Var("RegNum",F8)])]))
1688;
1689val write'rec'CapCause_def = Def
1690  ("write'rec'CapCause",TP[AVar F16,Var("x",CTy"CapCause")],
1691   Call("reg'CapCause",F16,Var("x",CTy"CapCause")))
1692;
1693val write'reg'CapCause_def = Def
1694  ("write'reg'CapCause",TP[AVar(CTy"CapCause"),Var("x",F16)],
1695   Call("rec'CapCause",CTy"CapCause",Var("x",F16)))
1696;
1697val switchCoreCAP_def = Def
1698  ("switchCoreCAP",Var("i",F8),
1699   Close
1700     (qVar"state",
1701      Let(qVar"s",
1702          Rupd
1703            ("all_BranchDelayPCC",
1704             TP[qVar"state",
1705                Fupd
1706                  (Dest
1707                     ("all_BranchDelayPCC",
1708                      ATy(F8,OTy(PTy(F64,CTy"Capability"))),qVar"state"),
1709                   Dest("procID",F8,qVar"state"),
1710                   Dest
1711                     ("BranchDelayPCC",OTy(PTy(F64,CTy"Capability")),
1712                      qVar"state"))]),
1713          Let(qVar"s",
1714              Rupd
1715                ("all_BranchToPCC",
1716                 TP[qVar"s",
1717                    Fupd
1718                      (Dest
1719                         ("all_BranchToPCC",
1720                          ATy(F8,OTy(PTy(F64,CTy"Capability"))),qVar"s"),
1721                       Dest("procID",F8,qVar"s"),
1722                       Dest
1723                         ("BranchToPCC",OTy(PTy(F64,CTy"Capability")),
1724                          qVar"s"))]),
1725              Let(qVar"s",
1726                  Rupd
1727                    ("all_CCallBranchDelay",
1728                     TP[qVar"s",
1729                        Fupd
1730                          (Dest
1731                             ("all_CCallBranchDelay",ATy(F8,bTy),qVar"s"),
1732                           Dest("procID",F8,qVar"s"),
1733                           Dest("CCallBranchDelay",bTy,qVar"s"))]),
1734                  Let(qVar"s",
1735                      Rupd
1736                        ("all_CCallBranch",
1737                         TP[qVar"s",
1738                            Fupd
1739                              (Dest("all_CCallBranch",ATy(F8,bTy),qVar"s"),
1740                               Dest("procID",F8,qVar"s"),
1741                               Dest("CCallBranch",bTy,qVar"s"))]),
1742                      Let(qVar"s",
1743                          Rupd
1744                            ("all_capcause",
1745                             TP[qVar"s",
1746                                Fupd
1747                                  (Dest
1748                                     ("all_capcause",
1749                                      ATy(F8,CTy"CapCause"),qVar"s"),
1750                                   Dest("procID",F8,qVar"s"),
1751                                   Dest("capcause",CTy"CapCause",qVar"s"))]),
1752                          Let(qVar"s",
1753                              Rupd
1754                                ("all_pcc",
1755                                 TP[qVar"s",
1756                                    Fupd
1757                                      (Dest
1758                                         ("all_pcc",
1759                                          ATy(F8,CTy"Capability"),qVar"s"),
1760                                       Dest("procID",F8,qVar"s"),
1761                                       Dest
1762                                         ("c_pcc",CTy"Capability",qVar"s"))]),
1763                              Let(qVar"s",
1764                                  Rupd
1765                                    ("all_capr",
1766                                     TP[qVar"s",
1767                                        Fupd
1768                                          (Dest
1769                                             ("all_capr",
1770                                              ATy(F8,
1771                                                  ATy(FTy 5,
1772                                                      CTy"Capability")),
1773                                              qVar"s"),
1774                                           Dest("procID",F8,qVar"s"),
1775                                           Dest
1776                                             ("c_capr",
1777                                              ATy(FTy 5,CTy"Capability"),
1778                                              qVar"s"))]),
1779                                  Let(qVar"s",
1780                                      Rupd
1781                                        ("BranchDelayPCC",
1782                                         TP[qVar"s",
1783                                            Apply
1784                                              (Dest
1785                                                 ("all_BranchDelayPCC",
1786                                                  ATy(F8,
1787                                                      OTy(PTy(F64,
1788                                                              CTy"Capability"))),
1789                                                  qVar"s"),Var("i",F8))]),
1790                                      Let(qVar"s",
1791                                          Rupd
1792                                            ("BranchToPCC",
1793                                             TP[qVar"s",
1794                                                Apply
1795                                                  (Dest
1796                                                     ("all_BranchToPCC",
1797                                                      ATy(F8,
1798                                                          OTy(PTy(F64,
1799                                                                  CTy"Capability"))),
1800                                                      qVar"s"),Var("i",F8))]),
1801                                          Let(qVar"s",
1802                                              Rupd
1803                                                ("CCallBranchDelay",
1804                                                 TP[qVar"s",
1805                                                    Apply
1806                                                      (Dest
1807                                                         ("all_CCallBranchDelay",
1808                                                          ATy(F8,bTy),
1809                                                          qVar"s"),
1810                                                       Var("i",F8))]),
1811                                              Let(qVar"s",
1812                                                  Rupd
1813                                                    ("CCallBranch",
1814                                                     TP[qVar"s",
1815                                                        Apply
1816                                                          (Dest
1817                                                             ("all_CCallBranch",
1818                                                              ATy(F8,bTy),
1819                                                              qVar"s"),
1820                                                           Var("i",F8))]),
1821                                                  Let(qVar"s",
1822                                                      Rupd
1823                                                        ("capcause",
1824                                                         TP[qVar"s",
1825                                                            Apply
1826                                                              (Dest
1827                                                                 ("all_capcause",
1828                                                                  ATy(F8,
1829                                                                      CTy"CapCause"),
1830                                                                  qVar"s"),
1831                                                               Var("i",F8))]),
1832                                                      Let(qVar"s",
1833                                                          Rupd
1834                                                            ("c_pcc",
1835                                                             TP[qVar"s",
1836                                                                Apply
1837                                                                  (Dest
1838                                                                     ("all_pcc",
1839                                                                      ATy(F8,
1840                                                                          CTy"Capability"),
1841                                                                      qVar"s"),
1842                                                                   Var("i",
1843                                                                       F8))]),
1844                                                          Rupd
1845                                                            ("c_capr",
1846                                                             TP[qVar"s",
1847                                                                Apply
1848                                                                  (Dest
1849                                                                     ("all_capr",
1850                                                                      ATy(F8,
1851                                                                          ATy(FTy 5,
1852                                                                              CTy"Capability")),
1853                                                                      qVar"s"),
1854                                                                   Var("i",
1855                                                                       F8))]))))))))))))))))
1856;
1857val dumpCRegs_def = Def ("dumpCRegs",AVar uTy,LU)
1858;
1859val PCC_def = Def
1860  ("PCC",qVar"state",Dest("c_pcc",CTy"Capability",qVar"state"))
1861;
1862val write'PCC_def = Def
1863  ("write'PCC",Var("value",CTy"Capability"),
1864   Close
1865     (qVar"state",
1866      Rupd("c_pcc",TP[qVar"state",Var("value",CTy"Capability")])))
1867;
1868val CAPR_def = Def
1869  ("CAPR",Var("n",FTy 5),
1870   Close
1871     (qVar"state",
1872      Apply
1873        (Dest("c_capr",ATy(FTy 5,CTy"Capability"),qVar"state"),
1874         Var("n",FTy 5))))
1875;
1876val write'CAPR_def = Def
1877  ("write'CAPR",TP[Var("value",CTy"Capability"),Var("n",FTy 5)],
1878   Close
1879     (qVar"state",
1880      Rupd
1881        ("c_capr",
1882         TP[qVar"state",
1883            Fupd
1884              (Dest("c_capr",ATy(FTy 5,CTy"Capability"),qVar"state"),
1885               Var("n",FTy 5),Var("value",CTy"Capability"))])))
1886;
1887val RCC_def = Def
1888  ("RCC",qVar"state",
1889   Apply(Call("CAPR",ATy(qTy,CTy"Capability"),LW(24,5)),qVar"state"))
1890;
1891val write'RCC_def = Def
1892  ("write'RCC",Var("value",CTy"Capability"),
1893   Close
1894     (qVar"state",
1895      Apply
1896        (Call
1897           ("write'CAPR",ATy(qTy,qTy),
1898            TP[Var("value",CTy"Capability"),LW(24,5)]),qVar"state")))
1899;
1900val IDC_def = Def
1901  ("IDC",qVar"state",
1902   Apply(Call("CAPR",ATy(qTy,CTy"Capability"),LW(26,5)),qVar"state"))
1903;
1904val write'IDC_def = Def
1905  ("write'IDC",Var("value",CTy"Capability"),
1906   Close
1907     (qVar"state",
1908      Apply
1909        (Call
1910           ("write'CAPR",ATy(qTy,qTy),
1911            TP[Var("value",CTy"Capability"),LW(26,5)]),qVar"state")))
1912;
1913val KR1C_def = Def
1914  ("KR1C",qVar"state",
1915   Apply(Call("CAPR",ATy(qTy,CTy"Capability"),LW(27,5)),qVar"state"))
1916;
1917val write'KR1C_def = Def
1918  ("write'KR1C",Var("value",CTy"Capability"),
1919   Close
1920     (qVar"state",
1921      Apply
1922        (Call
1923           ("write'CAPR",ATy(qTy,qTy),
1924            TP[Var("value",CTy"Capability"),LW(27,5)]),qVar"state")))
1925;
1926val KR2C_def = Def
1927  ("KR2C",qVar"state",
1928   Apply(Call("CAPR",ATy(qTy,CTy"Capability"),LW(28,5)),qVar"state"))
1929;
1930val write'KR2C_def = Def
1931  ("write'KR2C",Var("value",CTy"Capability"),
1932   Close
1933     (qVar"state",
1934      Apply
1935        (Call
1936           ("write'CAPR",ATy(qTy,qTy),
1937            TP[Var("value",CTy"Capability"),LW(28,5)]),qVar"state")))
1938;
1939val KCC_def = Def
1940  ("KCC",qVar"state",
1941   Apply(Call("CAPR",ATy(qTy,CTy"Capability"),LW(29,5)),qVar"state"))
1942;
1943val write'KCC_def = Def
1944  ("write'KCC",Var("value",CTy"Capability"),
1945   Close
1946     (qVar"state",
1947      Apply
1948        (Call
1949           ("write'CAPR",ATy(qTy,qTy),
1950            TP[Var("value",CTy"Capability"),LW(29,5)]),qVar"state")))
1951;
1952val KDC_def = Def
1953  ("KDC",qVar"state",
1954   Apply(Call("CAPR",ATy(qTy,CTy"Capability"),LW(30,5)),qVar"state"))
1955;
1956val write'KDC_def = Def
1957  ("write'KDC",Var("value",CTy"Capability"),
1958   Close
1959     (qVar"state",
1960      Apply
1961        (Call
1962           ("write'CAPR",ATy(qTy,qTy),
1963            TP[Var("value",CTy"Capability"),LW(30,5)]),qVar"state")))
1964;
1965val EPCC_def = Def
1966  ("EPCC",qVar"state",
1967   Apply(Call("CAPR",ATy(qTy,CTy"Capability"),LW(31,5)),qVar"state"))
1968;
1969val write'EPCC_def = Def
1970  ("write'EPCC",Var("value",CTy"Capability"),
1971   Close
1972     (qVar"state",
1973      Apply
1974        (Call
1975           ("write'CAPR",ATy(qTy,qTy),
1976            TP[Var("value",CTy"Capability"),LW(31,5)]),qVar"state")))
1977;
1978val allow_system_reg_access_def = Def
1979  ("allow_system_reg_access",TP[Var("p",CTy"Perms"),Var("r",FTy 5)],
1980   Close
1981     (qVar"state",
1982      ITE(Bop(And,Bop(Uge,Var("r",FTy 5),LW(27,5)),
1983              Mop(Not,
1984                  Dest("Access_System_Registers",bTy,Var("p",CTy"Perms")))),
1985          LF,
1986          Mop(Not,
1987              Bop(And,EQ(Var("r",FTy 5),LW(26,5)),
1988                  Dest("CCallBranchDelay",bTy,qVar"state"))))))
1989;
1990val ExceptionCode_def = Def
1991  ("ExceptionCode",Var("e",CTy"ExceptionType"),
1992   CS(Var("e",CTy"ExceptionType"),
1993      [(LC("Int",CTy"ExceptionType"),LW(0,5)),
1994       (LC("Mod",CTy"ExceptionType"),LW(1,5)),
1995       (LC("TLBL",CTy"ExceptionType"),LW(2,5)),
1996       (LC("TLBS",CTy"ExceptionType"),LW(3,5)),
1997       (LC("AdEL",CTy"ExceptionType"),LW(4,5)),
1998       (LC("AdES",CTy"ExceptionType"),LW(5,5)),
1999       (LC("Sys",CTy"ExceptionType"),LW(8,5)),
2000       (LC("Bp",CTy"ExceptionType"),LW(9,5)),
2001       (LC("ResI",CTy"ExceptionType"),LW(10,5)),
2002       (LC("CpU",CTy"ExceptionType"),LW(11,5)),
2003       (LC("Ov",CTy"ExceptionType"),LW(12,5)),
2004       (LC("Tr",CTy"ExceptionType"),LW(13,5)),
2005       (LC("CTLBL",CTy"ExceptionType"),LW(16,5)),
2006       (LC("CTLBS",CTy"ExceptionType"),LW(17,5)),
2007       (LC("C2E",CTy"ExceptionType"),LW(18,5)),
2008       (LC("MCheck",CTy"ExceptionType"),LW(24,5)),
2009       (LC("XTLBRefillL",CTy"ExceptionType"),LW(2,5)),
2010       (LC("XTLBRefillS",CTy"ExceptionType"),LW(3,5))]))
2011;
2012val capExcCode_def = Def
2013  ("capExcCode",Var("e",CTy"CapExceptionType"),
2014   CS(Var("e",CTy"CapExceptionType"),
2015      [(LC("capExcNone",CTy"CapExceptionType"),LW(0,8)),
2016       (LC("capExcLength",CTy"CapExceptionType"),LW(1,8)),
2017       (LC("capExcTag",CTy"CapExceptionType"),LW(2,8)),
2018       (LC("capExcSeal",CTy"CapExceptionType"),LW(3,8)),
2019       (LC("capExcType",CTy"CapExceptionType"),LW(4,8)),
2020       (LC("capExcCall",CTy"CapExceptionType"),LW(5,8)),
2021       (LC("capExcRet",CTy"CapExceptionType"),LW(6,8)),
2022       (LC("capExcUnderflowTSS",CTy"CapExceptionType"),LW(7,8)),
2023       (LC("capExcUser",CTy"CapExceptionType"),LW(8,8)),
2024       (LC("capExcTLBNoStore",CTy"CapExceptionType"),LW(9,8)),
2025       (LC("capExcInexact",CTy"CapExceptionType"),LW(10,8)),
2026       (LC("capExcGlobal",CTy"CapExceptionType"),LW(16,8)),
2027       (LC("capExcPermExe",CTy"CapExceptionType"),LW(17,8)),
2028       (LC("capExcPermLoad",CTy"CapExceptionType"),LW(18,8)),
2029       (LC("capExcPermStore",CTy"CapExceptionType"),LW(19,8)),
2030       (LC("capExcPermLoadCap",CTy"CapExceptionType"),LW(20,8)),
2031       (LC("capExcPermStoreCap",CTy"CapExceptionType"),LW(21,8)),
2032       (LC("capExcPermStoreLocalCap",CTy"CapExceptionType"),LW(22,8)),
2033       (LC("capExcPermSeal",CTy"CapExceptionType"),LW(23,8)),
2034       (LC("capExcAccessSysReg",CTy"CapExceptionType"),LW(24,8)),
2035       (LC("capExcPermCCall",CTy"CapExceptionType"),LW(25,8))]))
2036;
2037val SignalException_def = Def
2038  ("SignalException",Var("ExceptionType",CTy"ExceptionType"),
2039   Close
2040     (qVar"state",
2041      Let(qVar"s",
2042          ITE(Mop(Not,
2043                  Dest
2044                    ("EXL",bTy,
2045                     Dest
2046                       ("Status",CTy"StatusRegister",
2047                        Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
2048              ITE(Bop(Or,
2049                      Mop(IsSome,
2050                          Apply
2051                            (Const("BranchDelay",ATy(qTy,OTy F64)),
2052                             qVar"state")),
2053                      Mop(IsSome,
2054                          Dest
2055                            ("BranchDelayPCC",
2056                             OTy(PTy(F64,CTy"Capability")),qVar"state"))),
2057                  Let(TP[Var("v",CTy"CP0"),qVar"s"],
2058                      Let(qVar"s0",
2059                          Apply
2060                            (Call
2061                               ("write'CP0",ATy(qTy,qTy),
2062                                Rupd
2063                                  ("EPC",
2064                                   TP[Apply
2065                                        (Const("CP0",ATy(qTy,CTy"CP0")),
2066                                         qVar"state"),
2067                                      Bop(Sub,
2068                                          Apply
2069                                            (Const("PC",ATy(qTy,F64)),
2070                                             qVar"state"),LW(4,64))])),
2071                             qVar"state"),
2072                          TP[Apply
2073                               (Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"),
2074                             qVar"s0"]),
2075                      Apply
2076                        (Call
2077                           ("write'CP0",ATy(qTy,qTy),
2078                            Rupd
2079                              ("Cause",
2080                               TP[Var("v",CTy"CP0"),
2081                                  Rupd
2082                                    ("BD",
2083                                     TP[Dest
2084                                          ("Cause",CTy"CauseRegister",
2085                                           Var("v",CTy"CP0")),LT])])),
2086                         qVar"s")),
2087                  Let(TP[Var("v",CTy"CP0"),qVar"s"],
2088                      Let(qVar"s0",
2089                          Apply
2090                            (Call
2091                               ("write'CP0",ATy(qTy,qTy),
2092                                Rupd
2093                                  ("EPC",
2094                                   TP[Apply
2095                                        (Const("CP0",ATy(qTy,CTy"CP0")),
2096                                         qVar"state"),
2097                                      Apply
2098                                        (Const("PC",ATy(qTy,F64)),
2099                                         qVar"state")])),qVar"state"),
2100                          TP[Apply
2101                               (Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"),
2102                             qVar"s0"]),
2103                      Apply
2104                        (Call
2105                           ("write'CP0",ATy(qTy,qTy),
2106                            Rupd
2107                              ("Cause",
2108                               TP[Var("v",CTy"CP0"),
2109                                  Rupd
2110                                    ("BD",
2111                                     TP[Dest
2112                                          ("Cause",CTy"CauseRegister",
2113                                           Var("v",CTy"CP0")),LF])])),
2114                         qVar"s"))),qVar"state"),
2115          Let(TP[Var("v0",CTy"CP0"),qVar"s0"],
2116              Let(qVar"s0",
2117                  ITE(Mop(IsSome,Dest("currentInst",OTy F32,qVar"s")),
2118                      Apply
2119                        (Call
2120                           ("write'CP0",ATy(qTy,qTy),
2121                            Rupd
2122                              ("EInstr",
2123                               TP[Apply
2124                                    (Const("CP0",ATy(qTy,CTy"CP0")),
2125                                     qVar"s"),
2126                                  Mop(ValOf,
2127                                      Dest("currentInst",OTy F32,qVar"s"))])),
2128                         qVar"s"),qVar"s"),
2129                  TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"),
2130                     qVar"s0"]),
2131              Let(TP[Var("v0",CTy"CP0"),qVar"s0"],
2132                  Let(qVar"s",
2133                      Apply
2134                        (Call
2135                           ("write'CP0",ATy(qTy,qTy),
2136                            Rupd
2137                              ("Cause",
2138                               TP[Var("v0",CTy"CP0"),
2139                                  Rupd
2140                                    ("ExcCode",
2141                                     TP[Dest
2142                                          ("Cause",CTy"CauseRegister",
2143                                           Var("v0",CTy"CP0")),
2144                                        Call
2145                                          ("ExceptionCode",FTy 5,
2146                                           Var("ExceptionType",
2147                                               CTy"ExceptionType"))])])),
2148                         qVar"s0"),
2149                      TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s"),
2150                         qVar"s"]),
2151                  Let(Var("v0",F64),
2152                      ITE(Dest
2153                            ("BEV",bTy,
2154                             Dest
2155                               ("Status",CTy"StatusRegister",
2156                                Var("v0",CTy"CP0"))),
2157                          LW(18446744072631616000,64),
2158                          LW(18446744071562067968,64)),
2159                      Let(TP[Var("v1",CTy"Capability"),qVar"s0"],
2160                          Let(qVar"s",
2161                              Apply
2162                                (Call
2163                                   ("write'exceptionSignalled",
2164                                    ATy(qTy,qTy),LT),
2165                                 Rupd
2166                                   ("BranchToPCC",
2167                                    TP[Rupd
2168                                         ("BranchDelayPCC",
2169                                          TP[Apply
2170                                               (Call
2171                                                  ("write'BranchTo",
2172                                                   ATy(qTy,qTy),LO F64),
2173                                                Apply
2174                                                  (Call
2175                                                     ("write'BranchDelay",
2176                                                      ATy(qTy,qTy),LO F64),
2177                                                   qVar"s0")),
2178                                             LO(PTy(F64,CTy"Capability"))]),
2179                                       LO(PTy(F64,CTy"Capability"))])),
2180                              TP[Apply
2181                                   (Const("PCC",ATy(qTy,CTy"Capability")),
2182                                    qVar"s"),qVar"s"]),
2183                          Let(qVar"s2",
2184                              ITE(Mop(Not,
2185                                      Dest
2186                                        ("EXL",bTy,
2187                                         Dest
2188                                           ("Status",CTy"StatusRegister",
2189                                            Apply
2190                                              (Const
2191                                                 ("CP0",ATy(qTy,CTy"CP0")),
2192                                               qVar"s0")))),
2193                                  Apply
2194                                    (Call
2195                                       ("write'EPCC",ATy(qTy,qTy),
2196                                        ITE(Mop(Not,
2197                                                Call
2198                                                  ("canRepOffset",bTy,
2199                                                   TP[Apply
2200                                                        (Const
2201                                                           ("PCC",
2202                                                            ATy(qTy,
2203                                                                CTy"Capability")),
2204                                                         qVar"s0"),
2205                                                      Apply
2206                                                        (Const
2207                                                           ("PC",
2208                                                            ATy(qTy,F64)),
2209                                                         qVar"s0")])),
2210                                            Call
2211                                              ("setOffset",
2212                                               CTy"Capability",
2213                                               TP[Const
2214                                                    ("nullCap",
2215                                                     CTy"Capability"),
2216                                                  Bop(Add,
2217                                                      Call
2218                                                        ("getBase",F64,
2219                                                         Apply
2220                                                           (Const
2221                                                              ("PCC",
2222                                                               ATy(qTy,
2223                                                                   CTy"Capability")),
2224                                                            qVar"s0")),
2225                                                      Apply
2226                                                        (Const
2227                                                           ("PC",
2228                                                            ATy(qTy,F64)),
2229                                                         qVar"s0"))]),
2230                                            Call
2231                                              ("setOffset",
2232                                               CTy"Capability",
2233                                               TP[Var("v1",CTy"Capability"),
2234                                                  Apply
2235                                                    (Const
2236                                                       ("PC",ATy(qTy,F64)),
2237                                                     qVar"s0")]))),
2238                                     qVar"s0"),qVar"s0"),
2239                              Let(qVar"s2",
2240                                  Apply
2241                                    (Call
2242                                       ("write'PCC",ATy(qTy,qTy),
2243                                        Apply
2244                                          (Const
2245                                             ("KCC",
2246                                              ATy(qTy,CTy"Capability")),
2247                                           qVar"s2")),qVar"s2"),
2248                                  Let(qVar"s1",
2249                                      Apply
2250                                        (Call
2251                                           ("write'PC",ATy(qTy,qTy),
2252                                            Bop(Sub,
2253                                                CC[EX(Var("v0",F64),LN 63,
2254                                                      LN 30,FTy 34),
2255                                                   Bop(Add,
2256                                                       EX(Var("v0",F64),
2257                                                          LN 29,LN 0,
2258                                                          FTy 30),
2259                                                       ITB([(Bop(And,
2260                                                                 Bop(Or,
2261                                                                     EQ(Var("ExceptionType",
2262                                                                            CTy"ExceptionType"),
2263                                                                        LC("XTLBRefillL",
2264                                                                           CTy"ExceptionType")),
2265                                                                     EQ(Var("ExceptionType",
2266                                                                            CTy"ExceptionType"),
2267                                                                        LC("XTLBRefillS",
2268                                                                           CTy"ExceptionType"))),
2269                                                                 Mop(Not,
2270                                                                     Dest
2271                                                                       ("EXL",
2272                                                                        bTy,
2273                                                                        Dest
2274                                                                          ("Status",
2275                                                                           CTy"StatusRegister",
2276                                                                           Apply
2277                                                                             (Const
2278                                                                                ("CP0",
2279                                                                                 ATy(qTy,
2280                                                                                     CTy"CP0")),
2281                                                                              qVar"s"))))),
2282                                                             LW(128,30)),
2283                                                            (Bop(And,
2284                                                                 EQ(Var("ExceptionType",
2285                                                                        CTy"ExceptionType"),
2286                                                                    LC("C2E",
2287                                                                       CTy"ExceptionType")),
2288                                                                 Bop(Or,
2289                                                                     EQ(Dest
2290                                                                          ("ExcCode",
2291                                                                           F8,
2292                                                                           Dest
2293                                                                             ("capcause",
2294                                                                              CTy"CapCause",
2295                                                                              qVar"s")),
2296                                                                        LW(5,
2297                                                                           8)),
2298                                                                     EQ(Dest
2299                                                                          ("ExcCode",
2300                                                                           F8,
2301                                                                           Dest
2302                                                                             ("capcause",
2303                                                                              CTy"CapCause",
2304                                                                              qVar"s")),
2305                                                                        LW(6,
2306                                                                           8)))),
2307                                                             LW(640,30))],
2308                                                           LW(384,30)))],
2309                                                Call
2310                                                  ("getBase",F64,
2311                                                   Apply
2312                                                     (Const
2313                                                        ("PCC",
2314                                                         ATy(qTy,
2315                                                             CTy"Capability")),
2316                                                      qVar"s2")))),
2317                                         qVar"s2"),
2318                                      Let(Var("v",CTy"CP0"),
2319                                          Apply
2320                                            (Const
2321                                               ("CP0",ATy(qTy,CTy"CP0")),
2322                                             qVar"s1"),
2323                                          Apply
2324                                            (Call
2325                                               ("write'CP0",ATy(qTy,qTy),
2326                                                Rupd
2327                                                  ("Status",
2328                                                   TP[Var("v",CTy"CP0"),
2329                                                      Rupd
2330                                                        ("EXL",
2331                                                         TP[Dest
2332                                                              ("Status",
2333                                                               CTy"StatusRegister",
2334                                                               Var("v",
2335                                                                   CTy"CP0")),
2336                                                            LT])])),
2337                                             qVar"s1"))))))))))))
2338;
2339val SignalCP1UnusableException_def = Def
2340  ("SignalCP1UnusableException",qVar"state",
2341   Let(Var("v",CTy"CP0"),
2342       Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
2343       Apply
2344         (Call
2345            ("SignalException",ATy(qTy,qTy),LC("CpU",CTy"ExceptionType")),
2346          Apply
2347            (Call
2348               ("write'CP0",ATy(qTy,qTy),
2349                Rupd
2350                  ("Cause",
2351                   TP[Var("v",CTy"CP0"),
2352                      Rupd
2353                        ("CE",
2354                         TP[Dest
2355                              ("Cause",CTy"CauseRegister",
2356                               Var("v",CTy"CP0")),LW(1,2)])])),qVar"state"))))
2357;
2358val SignalCP2UnusableException_def = Def
2359  ("SignalCP2UnusableException",qVar"state",
2360   Let(Var("v",CTy"CP0"),
2361       Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
2362       Apply
2363         (Call
2364            ("SignalException",ATy(qTy,qTy),LC("CpU",CTy"ExceptionType")),
2365          Apply
2366            (Call
2367               ("write'CP0",ATy(qTy,qTy),
2368                Rupd
2369                  ("Cause",
2370                   TP[Var("v",CTy"CP0"),
2371                      Rupd
2372                        ("CE",
2373                         TP[Dest
2374                              ("Cause",CTy"CauseRegister",
2375                               Var("v",CTy"CP0")),LW(2,2)])])),qVar"state"))))
2376;
2377val SignalCapException_internal_def = Def
2378  ("SignalCapException_internal",
2379   TP[Var("capException",CTy"CapExceptionType"),Var("regNum",F8)],
2380   Close
2381     (qVar"state",
2382      Let(qVar"s",
2383          Rupd
2384            ("capcause",
2385             TP[qVar"state",
2386                Rupd
2387                  ("ExcCode",
2388                   TP[Dest("capcause",CTy"CapCause",qVar"state"),
2389                      Call
2390                        ("capExcCode",F8,
2391                         Var("capException",CTy"CapExceptionType"))])]),
2392          Apply
2393            (Call
2394               ("SignalException",ATy(qTy,qTy),
2395                LC("C2E",CTy"ExceptionType")),
2396             Rupd
2397               ("capcause",
2398                TP[qVar"s",
2399                   Rupd
2400                     ("RegNum",
2401                      TP[Dest("capcause",CTy"CapCause",qVar"s"),
2402                         Var("regNum",F8)])])))))
2403;
2404val SignalCapException_def = Def
2405  ("SignalCapException",
2406   TP[Var("capException",CTy"CapExceptionType"),Var("regNum",FTy 5)],
2407   Close
2408     (qVar"state",
2409      Apply
2410        (Call
2411           ("SignalCapException_internal",ATy(qTy,qTy),
2412            TP[Var("capException",CTy"CapExceptionType"),
2413               Mop(Cast F8,Var("regNum",FTy 5))]),qVar"state")))
2414;
2415val SignalCapException_noReg_def = Def
2416  ("SignalCapException_noReg",Var("capException",CTy"CapExceptionType"),
2417   Close
2418     (qVar"state",
2419      Apply
2420        (Call
2421           ("SignalCapException_internal",ATy(qTy,qTy),
2422            TP[Var("capException",CTy"CapExceptionType"),LW(255,8)]),
2423         qVar"state")))
2424;
2425val dfn'ERET_def = Def
2426  ("dfn'ERET",qVar"state",
2427   Let(TP[Var("v",CTy"CP0"),qVar"s"],
2428       Let(qVar"s",Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"),
2429           TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s"),qVar"s"]),
2430       ITE(Bop(Or,
2431               Dest
2432                 ("CU0",bTy,
2433                  Dest("Status",CTy"StatusRegister",Var("v",CTy"CP0"))),
2434               Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"s")),
2435           Let(TP[Var("v",CTy"Capability"),qVar"s"],
2436               Let(qVar"s0",
2437                   Apply
2438                     (Call("write'LLbit",ATy(qTy,qTy),Mop(Some,LF)),
2439                      ITE(Dest
2440                            ("ERL",bTy,
2441                             Dest
2442                               ("Status",CTy"StatusRegister",
2443                                Apply
2444                                  (Const("CP0",ATy(qTy,CTy"CP0")),qVar"s"))),
2445                          Let(TP[Var("v",CTy"CP0"),qVar"s"],
2446                              Let(qVar"s0",
2447                                  Apply
2448                                    (Call
2449                                       ("write'PC",ATy(qTy,qTy),
2450                                        Bop(Sub,
2451                                            Dest
2452                                              ("ErrorEPC",F64,
2453                                               Apply
2454                                                 (Const
2455                                                    ("CP0",
2456                                                     ATy(qTy,CTy"CP0")),
2457                                                  qVar"s")),LW(4,64))),
2458                                     qVar"s"),
2459                                  TP[Apply
2460                                       (Const("CP0",ATy(qTy,CTy"CP0")),
2461                                        qVar"s0"),qVar"s0"]),
2462                              Apply
2463                                (Call
2464                                   ("write'CP0",ATy(qTy,qTy),
2465                                    Rupd
2466                                      ("Status",
2467                                       TP[Var("v",CTy"CP0"),
2468                                          Rupd
2469                                            ("ERL",
2470                                             TP[Dest
2471                                                  ("Status",
2472                                                   CTy"StatusRegister",
2473                                                   Var("v",CTy"CP0")),LF])])),
2474                                 qVar"s")),
2475                          Let(TP[Var("v",CTy"CP0"),qVar"s"],
2476                              Let(qVar"s0",
2477                                  Apply
2478                                    (Call
2479                                       ("write'PC",ATy(qTy,qTy),
2480                                        Bop(Sub,
2481                                            Dest
2482                                              ("EPC",F64,
2483                                               Apply
2484                                                 (Const
2485                                                    ("CP0",
2486                                                     ATy(qTy,CTy"CP0")),
2487                                                  qVar"s")),LW(4,64))),
2488                                     qVar"s"),
2489                                  TP[Apply
2490                                       (Const("CP0",ATy(qTy,CTy"CP0")),
2491                                        qVar"s0"),qVar"s0"]),
2492                              Apply
2493                                (Call
2494                                   ("write'CP0",ATy(qTy,qTy),
2495                                    Rupd
2496                                      ("Status",
2497                                       TP[Var("v",CTy"CP0"),
2498                                          Rupd
2499                                            ("EXL",
2500                                             TP[Dest
2501                                                  ("Status",
2502                                                   CTy"StatusRegister",
2503                                                   Var("v",CTy"CP0")),LF])])),
2504                                 qVar"s")))),
2505                   TP[Apply
2506                        (Const("EPCC",ATy(qTy,CTy"Capability")),qVar"s0"),
2507                      qVar"s0"]),
2508               Apply
2509                 (Call("write'PCC",ATy(qTy,qTy),Var("v",CTy"Capability")),
2510                  qVar"s")),
2511           Apply
2512             (Call
2513                ("SignalException",ATy(qTy,qTy),
2514                 LC("CpU",CTy"ExceptionType")),qVar"s"))))
2515;
2516val TLBAssocEntries_def = Def0 ("TLBAssocEntries",LN 16)
2517;
2518val TLBDirectEntries_def = Def0 ("TLBDirectEntries",LN 256)
2519;
2520val TLBEntries_def = Def0
2521  ("TLBEntries",
2522   Bop(Add,Const("TLBAssocEntries",nTy),Const("TLBDirectEntries",nTy)))
2523;
2524val TLB_direct_def = Def
2525  ("TLB_direct",Var("i",F8),
2526   Close
2527     (qVar"state",
2528      Apply
2529        (Dest("c_TLB_direct",ATy(F8,OTy(CTy"TLBEntry")),qVar"state"),
2530         Var("i",F8))))
2531;
2532val write'TLB_direct_def = Def
2533  ("write'TLB_direct",TP[Var("value",OTy(CTy"TLBEntry")),Var("i",F8)],
2534   Close
2535     (qVar"state",
2536      Rupd
2537        ("c_TLB_direct",
2538         TP[qVar"state",
2539            Fupd
2540              (Dest("c_TLB_direct",ATy(F8,OTy(CTy"TLBEntry")),qVar"state"),
2541               Var("i",F8),Var("value",OTy(CTy"TLBEntry")))])))
2542;
2543val TLB_assoc_def = Def
2544  ("TLB_assoc",Var("i",F4),
2545   Close
2546     (qVar"state",
2547      Apply
2548        (Dest("c_TLB_assoc",ATy(F4,OTy(CTy"TLBEntry")),qVar"state"),
2549         Var("i",F4))))
2550;
2551val write'TLB_assoc_def = Def
2552  ("write'TLB_assoc",TP[Var("value",OTy(CTy"TLBEntry")),Var("i",F4)],
2553   Close
2554     (qVar"state",
2555      Rupd
2556        ("c_TLB_assoc",
2557         TP[qVar"state",
2558            Fupd
2559              (Dest("c_TLB_assoc",ATy(F4,OTy(CTy"TLBEntry")),qVar"state"),
2560               Var("i",F4),Var("value",OTy(CTy"TLBEntry")))])))
2561;
2562val switchCoreTLB_def = Def
2563  ("switchCoreTLB",Var("i",F8),
2564   Close
2565     (qVar"state",
2566      Let(qVar"s",
2567          Rupd
2568            ("all_TLB_direct",
2569             TP[qVar"state",
2570                Fupd
2571                  (Dest
2572                     ("all_TLB_direct",ATy(F8,ATy(F8,OTy(CTy"TLBEntry"))),
2573                      qVar"state"),Dest("procID",F8,qVar"state"),
2574                   Dest
2575                     ("c_TLB_direct",ATy(F8,OTy(CTy"TLBEntry")),
2576                      qVar"state"))]),
2577          Let(qVar"s",
2578              Rupd
2579                ("all_TLB_assoc",
2580                 TP[qVar"s",
2581                    Fupd
2582                      (Dest
2583                         ("all_TLB_assoc",
2584                          ATy(F8,ATy(F4,OTy(CTy"TLBEntry"))),qVar"s"),
2585                       Dest("procID",F8,qVar"s"),
2586                       Dest
2587                         ("c_TLB_assoc",ATy(F4,OTy(CTy"TLBEntry")),qVar"s"))]),
2588              Let(qVar"s",
2589                  Rupd
2590                    ("c_TLB_direct",
2591                     TP[qVar"s",
2592                        Apply
2593                          (Dest
2594                             ("all_TLB_direct",
2595                              ATy(F8,ATy(F8,OTy(CTy"TLBEntry"))),qVar"s"),
2596                           Var("i",F8))]),
2597                  Rupd
2598                    ("c_TLB_assoc",
2599                     TP[qVar"s",
2600                        Apply
2601                          (Dest
2602                             ("all_TLB_assoc",
2603                              ATy(F8,ATy(F4,OTy(CTy"TLBEntry"))),qVar"s"),
2604                           Var("i",F8))]))))))
2605;
2606val LookupTLB_def = Def
2607  ("LookupTLB",TP[Var("r",FTy 2),Var("vpn2",FTy 27)],
2608   Close
2609     (qVar"state",
2610      Let(Var("s0",LTy(PTy(FTy 9,CTy"TLBEntry"))),
2611          LNL(PTy(FTy 9,CTy"TLBEntry")),
2612          Mop(Fst,
2613              Mop(Snd,
2614                  Apply
2615                    (For(TP[LN 0,
2616                            Bop(Sub,Const("TLBAssocEntries",nTy),LN 1),
2617                            Close
2618                              (nVar"i",
2619                               Close
2620                                 (Var("state",
2621                                      PTy(LTy(PTy(FTy 9,CTy"TLBEntry")),
2622                                          qTy)),
2623                                  CS(Apply
2624                                       (Call
2625                                          ("TLB_assoc",
2626                                           ATy(qTy,OTy(CTy"TLBEntry")),
2627                                           Mop(Cast F4,nVar"i")),
2628                                        Mop(Snd,
2629                                            Var("state",
2630                                                PTy(LTy(PTy(FTy 9,
2631                                                            CTy"TLBEntry")),
2632                                                    qTy)))),
2633                                     [(Mop(Some,Var("e",CTy"TLBEntry")),
2634                                       TP[LU,
2635                                          ITE(Bop(And,
2636                                                  Bop(And,
2637                                                      EQ(Dest
2638                                                           ("R",FTy 2,
2639                                                            Var("e",
2640                                                                CTy"TLBEntry")),
2641                                                         Var("r",FTy 2)),
2642                                                      Bop(Or,
2643                                                          Dest
2644                                                            ("G",bTy,
2645                                                             Var("e",
2646                                                                 CTy"TLBEntry")),
2647                                                          EQ(Dest
2648                                                               ("ASID",F8,
2649                                                                Var("e",
2650                                                                    CTy"TLBEntry")),
2651                                                             Dest
2652                                                               ("ASID",F8,
2653                                                                Dest
2654                                                                  ("EntryHi",
2655                                                                   CTy"EntryHi",
2656                                                                   Apply
2657                                                                     (Const
2658                                                                        ("CP0",
2659                                                                         ATy(qTy,
2660                                                                             CTy"CP0")),
2661                                                                      Mop(Snd,
2662                                                                          Var("state",
2663                                                                              PTy(LTy(PTy(FTy 9,
2664                                                                                          CTy"TLBEntry")),
2665                                                                                  qTy))))))))),
2666                                                  Let(Var("nmask",FTy 27),
2667                                                      Mop(BNot,
2668                                                          Mop(Cast(FTy 27),
2669                                                              Dest
2670                                                                ("Mask",
2671                                                                 FTy 12,
2672                                                                 Var("e",
2673                                                                     CTy"TLBEntry")))),
2674                                                      EQ(Bop(BAnd,
2675                                                             Dest
2676                                                               ("VPN2",
2677                                                                FTy 27,
2678                                                                Var("e",
2679                                                                    CTy"TLBEntry")),
2680                                                             Var("nmask",
2681                                                                 FTy 27)),
2682                                                         Bop(BAnd,
2683                                                             Var("vpn2",
2684                                                                 FTy 27),
2685                                                             Var("nmask",
2686                                                                 FTy 27))))),
2687                                              TP[LLC([TP[Mop(Cast(FTy 9),
2688                                                             nVar"i"),
2689                                                         Var("e",
2690                                                             CTy"TLBEntry")]],
2691                                                     Mop(Fst,
2692                                                         Var("state",
2693                                                             PTy(LTy(PTy(FTy 9,
2694                                                                         CTy"TLBEntry")),
2695                                                                 qTy)))),
2696                                                 Mop(Snd,
2697                                                     Var("state",
2698                                                         PTy(LTy(PTy(FTy 9,
2699                                                                     CTy"TLBEntry")),
2700                                                             qTy)))],
2701                                              Var("state",
2702                                                  PTy(LTy(PTy(FTy 9,
2703                                                              CTy"TLBEntry")),
2704                                                      qTy)))]),
2705                                      (AVar(OTy(CTy"TLBEntry")),
2706                                       TP[LU,
2707                                          Var("state",
2708                                              PTy(LTy(PTy(FTy 9,
2709                                                          CTy"TLBEntry")),
2710                                                  qTy))])])))]),
2711                     ITE(Dest
2712                           ("LTLB",bTy,
2713                            Dest
2714                              ("Config6",CTy"ConfigRegister6",
2715                               Apply
2716                                 (Const("CP0",ATy(qTy,CTy"CP0")),
2717                                  qVar"state"))),
2718                         Let(Var("b",F8),
2719                             EX(Var("vpn2",FTy 27),LN 7,LN 0,F8),
2720                             CS(Apply
2721                                  (Call
2722                                     ("TLB_direct",
2723                                      ATy(qTy,OTy(CTy"TLBEntry")),
2724                                      Var("b",F8)),qVar"state"),
2725                                [(Mop(Some,Var("e",CTy"TLBEntry")),
2726                                  TP[ITE(Bop(And,
2727                                             Bop(And,
2728                                                 EQ(Dest
2729                                                      ("R",FTy 2,
2730                                                       Var("e",
2731                                                           CTy"TLBEntry")),
2732                                                    Var("r",FTy 2)),
2733                                                 Bop(Or,
2734                                                     Dest
2735                                                       ("G",bTy,
2736                                                        Var("e",
2737                                                            CTy"TLBEntry")),
2738                                                     EQ(Dest
2739                                                          ("ASID",F8,
2740                                                           Var("e",
2741                                                               CTy"TLBEntry")),
2742                                                        Dest
2743                                                          ("ASID",F8,
2744                                                           Dest
2745                                                             ("EntryHi",
2746                                                              CTy"EntryHi",
2747                                                              Apply
2748                                                                (Const
2749                                                                   ("CP0",
2750                                                                    ATy(qTy,
2751                                                                        CTy"CP0")),
2752                                                                 qVar"state")))))),
2753                                             Let(Var("nmask",FTy 27),
2754                                                 Mop(BNot,
2755                                                     Mop(Cast(FTy 27),
2756                                                         Dest
2757                                                           ("Mask",FTy 12,
2758                                                            Var("e",
2759                                                                CTy"TLBEntry")))),
2760                                                 EQ(Bop(BAnd,
2761                                                        Dest
2762                                                          ("VPN2",FTy 27,
2763                                                           Var("e",
2764                                                               CTy"TLBEntry")),
2765                                                        Var("nmask",FTy 27)),
2766                                                    Bop(BAnd,
2767                                                        Var("vpn2",FTy 27),
2768                                                        Var("nmask",FTy 27))))),
2769                                         LL[TP[ITE(Bop(Le,
2770                                                       Const
2771                                                         ("TLBAssocEntries",
2772                                                          nTy),
2773                                                       Mop(Cast nTy,
2774                                                           Var("b",F8))),
2775                                                   Mop(Cast(FTy 9),
2776                                                       Var("b",F8)),
2777                                                   Bop(Add,
2778                                                       Mop(Cast(FTy 9),
2779                                                           Const
2780                                                             ("TLBDirectEntries",
2781                                                              nTy)),
2782                                                       Mop(Cast(FTy 9),
2783                                                           Var("b",F8)))),
2784                                               Var("e",CTy"TLBEntry")]],
2785                                         Var("s0",
2786                                             LTy(PTy(FTy 9,CTy"TLBEntry")))),
2787                                     qVar"state"]),
2788                                 (AVar(OTy(CTy"TLBEntry")),
2789                                  TP[Var("s0",
2790                                         LTy(PTy(FTy 9,CTy"TLBEntry"))),
2791                                     qVar"state"])])),
2792                         TP[Var("s0",LTy(PTy(FTy 9,CTy"TLBEntry"))),
2793                            qVar"state"])))))))
2794;
2795val SignalTLBException_internal_def = Def
2796  ("SignalTLBException_internal",TP[Var("asid",F8),Var("vAddr",F64)],
2797   Close
2798     (qVar"state",
2799      Let(Var("r",FTy 2),EX(Var("vAddr",F64),LN 63,LN 62,FTy 2),
2800          Let(Var("vpn2",FTy 27),EX(Var("vAddr",F64),LN 39,LN 13,FTy 27),
2801              Let(TP[Var("v",CTy"CP0"),qVar"s"],
2802                  Let(qVar"s0",
2803                      Apply
2804                        (Call
2805                           ("write'CP0",ATy(qTy,qTy),
2806                            Rupd
2807                              ("BadVAddr",
2808                               TP[Apply
2809                                    (Const("CP0",ATy(qTy,CTy"CP0")),
2810                                     qVar"state"),Var("vAddr",F64)])),
2811                         qVar"state"),
2812                      TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"),
2813                         qVar"s0"]),
2814                  Let(TP[Var("v",CTy"CP0"),qVar"s"],
2815                      Let(qVar"s0",
2816                          Apply
2817                            (Call
2818                               ("write'CP0",ATy(qTy,qTy),
2819                                Rupd
2820                                  ("EntryHi",
2821                                   TP[Var("v",CTy"CP0"),
2822                                      Rupd
2823                                        ("R",
2824                                         TP[Dest
2825                                              ("EntryHi",CTy"EntryHi",
2826                                               Var("v",CTy"CP0")),
2827                                            Var("r",FTy 2)])])),qVar"s"),
2828                          TP[Apply
2829                               (Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"),
2830                             qVar"s0"]),
2831                      Let(TP[Var("v",CTy"CP0"),qVar"s"],
2832                          Let(qVar"s0",
2833                              Apply
2834                                (Call
2835                                   ("write'CP0",ATy(qTy,qTy),
2836                                    Rupd
2837                                      ("EntryHi",
2838                                       TP[Var("v",CTy"CP0"),
2839                                          Rupd
2840                                            ("VPN2",
2841                                             TP[Dest
2842                                                  ("EntryHi",CTy"EntryHi",
2843                                                   Var("v",CTy"CP0")),
2844                                                Var("vpn2",FTy 27)])])),
2845                                 qVar"s"),
2846                              TP[Apply
2847                                   (Const("CP0",ATy(qTy,CTy"CP0")),
2848                                    qVar"s0"),qVar"s0"]),
2849                          Let(TP[Var("v",CTy"CP0"),qVar"s"],
2850                              Let(qVar"s0",
2851                                  Apply
2852                                    (Call
2853                                       ("write'CP0",ATy(qTy,qTy),
2854                                        Rupd
2855                                          ("EntryHi",
2856                                           TP[Var("v",CTy"CP0"),
2857                                              Rupd
2858                                                ("ASID",
2859                                                 TP[Dest
2860                                                      ("EntryHi",
2861                                                       CTy"EntryHi",
2862                                                       Var("v",CTy"CP0")),
2863                                                    Var("asid",F8)])])),
2864                                     qVar"s"),
2865                                  TP[Apply
2866                                       (Const("CP0",ATy(qTy,CTy"CP0")),
2867                                        qVar"s0"),qVar"s0"]),
2868                              Let(TP[Var("v",CTy"CP0"),qVar"s"],
2869                                  Let(qVar"s0",
2870                                      Apply
2871                                        (Call
2872                                           ("write'CP0",ATy(qTy,qTy),
2873                                            Rupd
2874                                              ("XContext",
2875                                               TP[Var("v",CTy"CP0"),
2876                                                  Rupd
2877                                                    ("R",
2878                                                     TP[Dest
2879                                                          ("XContext",
2880                                                           CTy"XContext",
2881                                                           Var("v",
2882                                                               CTy"CP0")),
2883                                                        Var("r",FTy 2)])])),
2884                                         qVar"s"),
2885                                      TP[Apply
2886                                           (Const("CP0",ATy(qTy,CTy"CP0")),
2887                                            qVar"s0"),qVar"s0"]),
2888                                  Let(TP[Var("v",CTy"CP0"),qVar"s"],
2889                                      Let(qVar"s0",
2890                                          Apply
2891                                            (Call
2892                                               ("write'CP0",ATy(qTy,qTy),
2893                                                Rupd
2894                                                  ("XContext",
2895                                                   TP[Var("v",CTy"CP0"),
2896                                                      Rupd
2897                                                        ("BadVPN2",
2898                                                         TP[Dest
2899                                                              ("XContext",
2900                                                               CTy"XContext",
2901                                                               Var("v",
2902                                                                   CTy"CP0")),
2903                                                            Var("vpn2",
2904                                                                FTy 27)])])),
2905                                             qVar"s"),
2906                                          TP[Apply
2907                                               (Const
2908                                                  ("CP0",ATy(qTy,CTy"CP0")),
2909                                                qVar"s0"),qVar"s0"]),
2910                                      Apply
2911                                        (Call
2912                                           ("write'CP0",ATy(qTy,qTy),
2913                                            Rupd
2914                                              ("Context",
2915                                               TP[Var("v",CTy"CP0"),
2916                                                  Rupd
2917                                                    ("BadVPN2",
2918                                                     TP[Dest
2919                                                          ("Context",
2920                                                           CTy"Context",
2921                                                           Var("v",
2922                                                               CTy"CP0")),
2923                                                        EX(Var("vAddr",F64),
2924                                                           LN 31,LN 13,
2925                                                           FTy 19)])])),
2926                                         qVar"s")))))))))))
2927;
2928val SignalTLBException_def = Def
2929  ("SignalTLBException",
2930   TP[Var("e",CTy"ExceptionType"),Var("asid",F8),Var("vAddr",F64)],
2931   Close
2932     (qVar"state",
2933      Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
2934          Apply
2935            (Call
2936               ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)),
2937                LS"tlb-translation"),
2938             Apply
2939               (Call
2940                  ("SignalException",ATy(qTy,qTy),
2941                   Var("e",CTy"ExceptionType")),
2942                Apply
2943                  (Call
2944                     ("SignalTLBException_internal",ATy(qTy,qTy),
2945                      TP[Var("asid",F8),Var("vAddr",F64)]),qVar"state"))),
2946          TP[Apply
2947               (LX(ATy(PTy(nTy,sTy),PTy(FTy 40,FTy 3))),
2948                Var("v",PTy(nTy,sTy))),qVar"s"])))
2949;
2950val CheckSegment_def = Def
2951  ("CheckSegment",Var("vAddr",F64),
2952   Close
2953     (qVar"state",
2954      ITB([(Apply(Const("UserMode",ATy(qTy,bTy)),qVar"state"),
2955            TP[LO(PTy(FTy 40,FTy 3)),
2956               Bop(Ult,Var("vAddr",F64),LW(1099511627776,64))]),
2957           (Apply(Const("SupervisorMode",ATy(qTy,bTy)),qVar"state"),
2958            TP[LO(PTy(FTy 40,FTy 3)),
2959               Bop(Or,Bop(Ult,Var("vAddr",F64),LW(1099511627776,64)),
2960                   Bop(Or,
2961                       Bop(And,
2962                           Bop(Ule,LW(4611686018427387904,64),
2963                               Var("vAddr",F64)),
2964                           Bop(Ult,Var("vAddr",F64),
2965                               LW(4611687117939015680,64))),
2966                       Bop(And,
2967                           Bop(Ule,LW(18446744072635809792,64),
2968                               Var("vAddr",F64)),
2969                           Bop(Ult,Var("vAddr",F64),
2970                               LW(18446744073172680704,64)))))]),
2971           (Bop(Ult,Var("vAddr",F64),LW(13835058055282163712,64)),
2972            ITB([(Bop(Ult,Var("vAddr",F64),LW(4611686018427387904,64)),
2973                  TP[LO(PTy(FTy 40,FTy 3)),
2974                     Bop(Ult,Var("vAddr",F64),LW(1099511627776,64))]),
2975                 (Bop(Ule,LW(9223372036854775808,64),Var("vAddr",F64)),
2976                  TP[Mop(Some,
2977                         TP[EX(Var("vAddr",F64),LN 39,LN 0,FTy 40),
2978                            EX(Var("vAddr",F64),LN 61,LN 59,FTy 3)]),
2979                     EQ(EX(Var("vAddr",F64),LN 58,LN 40,FTy 19),LW(0,19))])],
2980                TP[LO(PTy(FTy 40,FTy 3)),
2981                   Bop(Ult,Var("vAddr",F64),LW(4611687117939015680,64))])),
2982           (Bop(Ult,Var("vAddr",F64),LW(18446744072098938880,64)),
2983            ITE(Bop(Ule,LW(18446744071562067968,64),Var("vAddr",F64)),
2984                TP[Mop(Some,
2985                       TP[Bop(Sub,EX(Var("vAddr",F64),LN 39,LN 0,FTy 40),
2986                              LW(1097364144128,40)),
2987                          Dest
2988                            ("K0",FTy 3,
2989                             Dest
2990                               ("Config",CTy"ConfigRegister",
2991                                Apply
2992                                  (Const("CP0",ATy(qTy,CTy"CP0")),
2993                                   qVar"state")))]),LT],
2994                TP[LO(PTy(FTy 40,FTy 3)),
2995                   Bop(Ult,Var("vAddr",F64),LW(13835059152646307840,64))])),
2996           (Bop(Ult,Var("vAddr",F64),LW(18446744072635809792,64)),
2997            TP[Mop(Some,
2998                   TP[Bop(Sub,EX(Var("vAddr",F64),LN 39,LN 0,FTy 40),
2999                          LW(1097901015040,40)),LW(2,3)]),LT])],
3000          TP[LO(PTy(FTy 40,FTy 3)),
3001             Bop(Ule,LW(18446744072635809792,64),Var("vAddr",F64))])))
3002;
3003val checkMask_def = Def
3004  ("checkMask",Var("mask",FTy 12),
3005   CS(Var("mask",FTy 12),
3006      [(LW(0,12),Mop(Some,LN 12)),(LW(3,12),Mop(Some,LN 14)),
3007       (LW(15,12),Mop(Some,LN 16)),(LW(63,12),Mop(Some,LN 18)),
3008       (LW(255,12),Mop(Some,LN 20)),(LW(1023,12),Mop(Some,LN 22)),
3009       (LW(4095,12),Mop(Some,LN 24)),(AVar(FTy 12),LO nTy)]))
3010;
3011val check_cca_def = Def
3012  ("check_cca",Var("cca",FTy 3),
3013   Close
3014     (qVar"state",
3015      ITE(Bop(In,Var("cca",FTy 3),SL[LW(0,3),LW(1,3),LW(7,3)]),
3016          Mop(Snd,
3017              Apply
3018                (Call
3019                   ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
3020                    Call
3021                      ("UNPREDICTABLE",CTy"exception",
3022                       CC[LS"CCA ",Mop(Cast sTy,Var("cca",FTy 3)),
3023                          LS" Reserved"])),qVar"state")),qVar"state")))
3024;
3025val AddressTranslation_def = Def
3026  ("AddressTranslation",
3027   TP[Var("vAddr",F64),Var("AccessType",CTy"AccessType")],
3028   Close
3029     (qVar"state",
3030      Let(TP[Var("unmapped",OTy(PTy(FTy 40,FTy 3))),bVar"valid"],
3031          Apply
3032            (Call
3033               ("CheckSegment",ATy(qTy,PTy(OTy(PTy(FTy 40,FTy 3)),bTy)),
3034                Var("vAddr",F64)),qVar"state"),
3035          ITE(bVar"valid",
3036              CS(Var("unmapped",OTy(PTy(FTy 40,FTy 3))),
3037                 [(Mop(Some,TP[Var("addr",FTy 40),Var("cca",FTy 3)]),
3038                   TP[TP[Var("addr",FTy 40),Var("cca",FTy 3),LF,LF],
3039                      Apply
3040                        (Call("check_cca",ATy(qTy,qTy),Var("cca",FTy 3)),
3041                         qVar"state")]),
3042                  (AVar(OTy(PTy(FTy 40,FTy 3))),
3043                   TP[TP[Mop(Cast(FTy 40),Var("vAddr",F64)),LW(0,3),LF,LF],
3044                      qVar"state"])]),
3045              Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
3046                  Apply
3047                    (Call
3048                       ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)),
3049                        LS"tlb-translation"),
3050                     Apply
3051                       (Call
3052                          ("SignalException",ATy(qTy,qTy),
3053                           ITE(EQ(Var("AccessType",CTy"AccessType"),
3054                                  LC("LOAD",CTy"AccessType")),
3055                               LC("AdEL",CTy"ExceptionType"),
3056                               LC("AdES",CTy"ExceptionType"))),
3057                        Apply
3058                          (Call
3059                             ("write'CP0",ATy(qTy,qTy),
3060                              Rupd
3061                                ("BadVAddr",
3062                                 TP[Apply
3063                                      (Const("CP0",ATy(qTy,CTy"CP0")),
3064                                       qVar"state"),Var("vAddr",F64)])),
3065                           qVar"state"))),
3066                  TP[Apply
3067                       (LX(ATy(PTy(nTy,sTy),
3068                               PTy(FTy 40,PTy(FTy 3,PTy(bTy,bTy))))),
3069                        Var("v",PTy(nTy,sTy))),qVar"s"])))))
3070;
3071val tlbTryTranslation_def = Def
3072  ("tlbTryTranslation",Var("vAddr",F64),LO(FTy 40))
3073;
3074val CP0TLBEntry_def = Def
3075  ("CP0TLBEntry",AVar uTy,
3076   Close
3077     (qVar"state",
3078      Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
3079          Apply
3080            (Call
3081               ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)),
3082                LS"tlb-entry"),qVar"state"),
3083          TP[Apply
3084               (LX(ATy(PTy(nTy,sTy),CTy"TLBEntry")),Var("v",PTy(nTy,sTy))),
3085             qVar"s"])))
3086;
3087val SignalTLBCapException_def = Def
3088  ("SignalTLBCapException",
3089   TP[Var("capException",CTy"CapExceptionType"),Var("asid",F8),
3090      Var("vAddr",F64)],
3091   Close
3092     (qVar"state",
3093      Mop(Snd,
3094          Apply
3095            (Call
3096               ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)),
3097                LS"tlb-cap-exception"),
3098             Apply
3099               (Call
3100                  ("SignalCapException_noReg",ATy(qTy,qTy),
3101                   Var("capException",CTy"CapExceptionType")),
3102                Apply
3103                  (Call
3104                     ("SignalTLBException_internal",ATy(qTy,qTy),
3105                      TP[Var("asid",F8),Var("vAddr",F64)]),qVar"state"))))))
3106;
3107val dfn'TLBP_def = Def
3108  ("dfn'TLBP",qVar"state",
3109   ITE(Bop(And,
3110           Mop(Not,
3111               Dest
3112                 ("CU0",bTy,
3113                  Dest
3114                    ("Status",CTy"StatusRegister",
3115                     Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
3116           Mop(Not,Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state"))),
3117       Apply
3118         (Call
3119            ("SignalException",ATy(qTy,qTy),LC("CpU",CTy"ExceptionType")),
3120          qVar"state"),
3121       CS(Apply
3122            (Call
3123               ("LookupTLB",ATy(qTy,LTy(PTy(FTy 9,CTy"TLBEntry"))),
3124                TP[Dest
3125                     ("R",FTy 2,
3126                      Dest
3127                        ("EntryHi",CTy"EntryHi",
3128                         Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
3129                   Dest
3130                     ("VPN2",FTy 27,
3131                      Dest
3132                        ("EntryHi",CTy"EntryHi",
3133                         Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))]),
3134             qVar"state"),
3135          [(LNL(PTy(FTy 9,CTy"TLBEntry")),
3136            Let(Var("v",CTy"CP0"),
3137                Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
3138                Let(TP[Var("v",CTy"CP0"),qVar"s"],
3139                    Let(qVar"s0",
3140                        Apply
3141                          (Call
3142                             ("write'CP0",ATy(qTy,qTy),
3143                              Rupd
3144                                ("Index",
3145                                 TP[Var("v",CTy"CP0"),
3146                                    Rupd
3147                                      ("P",
3148                                       TP[Dest
3149                                            ("Index",CTy"Index",
3150                                             Var("v",CTy"CP0")),LT])])),
3151                           qVar"state"),
3152                        TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"),
3153                           qVar"s0"]),
3154                    Let(TP[Var("v0",PTy(nTy,sTy)),qVar"s"],
3155                        Apply
3156                          (Call
3157                             ("next_unknown",
3158                              ATy(qTy,PTy(PTy(nTy,sTy),qTy)),LS"tlb-index"),
3159                           qVar"s"),
3160                        Apply
3161                          (Call
3162                             ("write'CP0",ATy(qTy,qTy),
3163                              Rupd
3164                                ("Index",
3165                                 TP[Var("v",CTy"CP0"),
3166                                    Rupd
3167                                      ("Index",
3168                                       TP[Dest
3169                                            ("Index",CTy"Index",
3170                                             Var("v",CTy"CP0")),
3171                                          Apply
3172                                            (LX(ATy(PTy(nTy,sTy),FTy 9)),
3173                                             Var("v0",PTy(nTy,sTy)))])])),
3174                           qVar"s"))))),
3175           (LL[TP[Var("i",FTy 9),AVar(CTy"TLBEntry")]],
3176            Let(Var("v",CTy"CP0"),
3177                Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
3178                Let(TP[Var("v",CTy"CP0"),qVar"s"],
3179                    Let(qVar"s0",
3180                        Apply
3181                          (Call
3182                             ("write'CP0",ATy(qTy,qTy),
3183                              Rupd
3184                                ("Index",
3185                                 TP[Var("v",CTy"CP0"),
3186                                    Rupd
3187                                      ("P",
3188                                       TP[Dest
3189                                            ("Index",CTy"Index",
3190                                             Var("v",CTy"CP0")),LF])])),
3191                           qVar"state"),
3192                        TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"),
3193                           qVar"s0"]),
3194                    Apply
3195                      (Call
3196                         ("write'CP0",ATy(qTy,qTy),
3197                          Rupd
3198                            ("Index",
3199                             TP[Var("v",CTy"CP0"),
3200                                Rupd
3201                                  ("Index",
3202                                   TP[Dest
3203                                        ("Index",CTy"Index",
3204                                         Var("v",CTy"CP0")),Var("i",FTy 9)])])),
3205                       qVar"s")))),
3206           (AVar(LTy(PTy(FTy 9,CTy"TLBEntry"))),
3207            Mop(Snd,
3208                Apply
3209                  (Call
3210                     ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
3211                      Call
3212                        ("UNPREDICTABLE",CTy"exception",
3213                         LS"TLB: multiple matches")),qVar"state")))])))
3214;
3215val dfn'TLBR_def = Def
3216  ("dfn'TLBR",qVar"state",
3217   ITE(Bop(And,
3218           Mop(Not,
3219               Dest
3220                 ("CU0",bTy,
3221                  Dest
3222                    ("Status",CTy"StatusRegister",
3223                     Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
3224           Mop(Not,Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state"))),
3225       Apply
3226         (Call
3227            ("SignalException",ATy(qTy,qTy),LC("CpU",CTy"ExceptionType")),
3228          qVar"state"),
3229       Let(Var("v",FTy 9),
3230           Dest
3231             ("Index",FTy 9,
3232              Dest
3233                ("Index",CTy"Index",
3234                 Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
3235           CS(ITE(Bop(Ge,Mop(Cast nTy,Var("v",FTy 9)),
3236                      Const("TLBAssocEntries",nTy)),
3237                  Apply
3238                    (Call
3239                       ("TLB_direct",ATy(qTy,OTy(CTy"TLBEntry")),
3240                        EX(Var("v",FTy 9),LN 7,LN 0,F8)),qVar"state"),
3241                  Apply
3242                    (Call
3243                       ("TLB_assoc",ATy(qTy,OTy(CTy"TLBEntry")),
3244                        Mop(Cast F4,Var("v",FTy 9))),qVar"state")),
3245              [(Mop(Some,Var("e",CTy"TLBEntry")),
3246                Let(Var("v",CTy"CP0"),
3247                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
3248                    Let(TP[Var("v",CTy"CP0"),qVar"s"],
3249                        Let(qVar"s0",
3250                            Apply
3251                              (Call
3252                                 ("write'CP0",ATy(qTy,qTy),
3253                                  Rupd
3254                                    ("PageMask",
3255                                     TP[Var("v",CTy"CP0"),
3256                                        Rupd
3257                                          ("Mask",
3258                                           TP[Dest
3259                                                ("PageMask",CTy"PageMask",
3260                                                 Var("v",CTy"CP0")),
3261                                              Dest
3262                                                ("Mask",FTy 12,
3263                                                 Var("e",CTy"TLBEntry"))])])),
3264                               qVar"state"),
3265                            TP[Apply
3266                                 (Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"),
3267                               qVar"s0"]),
3268                        Let(TP[Var("v",CTy"CP0"),qVar"s"],
3269                            Let(qVar"s0",
3270                                Apply
3271                                  (Call
3272                                     ("write'CP0",ATy(qTy,qTy),
3273                                      Rupd
3274                                        ("EntryHi",
3275                                         TP[Var("v",CTy"CP0"),
3276                                            Rupd
3277                                              ("R",
3278                                               TP[Dest
3279                                                    ("EntryHi",
3280                                                     CTy"EntryHi",
3281                                                     Var("v",CTy"CP0")),
3282                                                  Dest
3283                                                    ("R",FTy 2,
3284                                                     Var("e",CTy"TLBEntry"))])])),
3285                                   qVar"s"),
3286                                TP[Apply
3287                                     (Const("CP0",ATy(qTy,CTy"CP0")),
3288                                      qVar"s0"),qVar"s0"]),
3289                            Let(TP[Var("v",CTy"CP0"),qVar"s"],
3290                                Let(qVar"s0",
3291                                    Apply
3292                                      (Call
3293                                         ("write'CP0",ATy(qTy,qTy),
3294                                          Rupd
3295                                            ("EntryHi",
3296                                             TP[Var("v",CTy"CP0"),
3297                                                Rupd
3298                                                  ("VPN2",
3299                                                   TP[Dest
3300                                                        ("EntryHi",
3301                                                         CTy"EntryHi",
3302                                                         Var("v",CTy"CP0")),
3303                                                      Dest
3304                                                        ("VPN2",FTy 27,
3305                                                         Var("e",
3306                                                             CTy"TLBEntry"))])])),
3307                                       qVar"s"),
3308                                    TP[Apply
3309                                         (Const("CP0",ATy(qTy,CTy"CP0")),
3310                                          qVar"s0"),qVar"s0"]),
3311                                Let(TP[Var("v",CTy"CP0"),qVar"s"],
3312                                    Let(qVar"s0",
3313                                        Apply
3314                                          (Call
3315                                             ("write'CP0",ATy(qTy,qTy),
3316                                              Rupd
3317                                                ("EntryHi",
3318                                                 TP[Var("v",CTy"CP0"),
3319                                                    Rupd
3320                                                      ("ASID",
3321                                                       TP[Dest
3322                                                            ("EntryHi",
3323                                                             CTy"EntryHi",
3324                                                             Var("v",
3325                                                                 CTy"CP0")),
3326                                                          Dest
3327                                                            ("ASID",F8,
3328                                                             Var("e",
3329                                                                 CTy"TLBEntry"))])])),
3330                                           qVar"s"),
3331                                        TP[Apply
3332                                             (Const
3333                                                ("CP0",ATy(qTy,CTy"CP0")),
3334                                              qVar"s0"),qVar"s0"]),
3335                                    Let(TP[Var("v",CTy"CP0"),qVar"s"],
3336                                        Let(qVar"s0",
3337                                            Apply
3338                                              (Call
3339                                                 ("write'CP0",
3340                                                  ATy(qTy,qTy),
3341                                                  Rupd
3342                                                    ("EntryLo1",
3343                                                     TP[Var("v",CTy"CP0"),
3344                                                        Rupd
3345                                                          ("PFN",
3346                                                           TP[Dest
3347                                                                ("EntryLo1",
3348                                                                 CTy"EntryLo",
3349                                                                 Var("v",
3350                                                                     CTy"CP0")),
3351                                                              Dest
3352                                                                ("PFN1",
3353                                                                 FTy 28,
3354                                                                 Var("e",
3355                                                                     CTy"TLBEntry"))])])),
3356                                               qVar"s"),
3357                                            TP[Apply
3358                                                 (Const
3359                                                    ("CP0",
3360                                                     ATy(qTy,CTy"CP0")),
3361                                                  qVar"s0"),qVar"s0"]),
3362                                        Let(TP[Var("v",CTy"CP0"),qVar"s"],
3363                                            Let(qVar"s0",
3364                                                Apply
3365                                                  (Call
3366                                                     ("write'CP0",
3367                                                      ATy(qTy,qTy),
3368                                                      Rupd
3369                                                        ("EntryLo1",
3370                                                         TP[Var("v",
3371                                                                CTy"CP0"),
3372                                                            Rupd
3373                                                              ("C",
3374                                                               TP[Dest
3375                                                                    ("EntryLo1",
3376                                                                     CTy"EntryLo",
3377                                                                     Var("v",
3378                                                                         CTy"CP0")),
3379                                                                  Dest
3380                                                                    ("C1",
3381                                                                     FTy 3,
3382                                                                     Var("e",
3383                                                                         CTy"TLBEntry"))])])),
3384                                                   qVar"s"),
3385                                                TP[Apply
3386                                                     (Const
3387                                                        ("CP0",
3388                                                         ATy(qTy,CTy"CP0")),
3389                                                      qVar"s0"),qVar"s0"]),
3390                                            Let(TP[Var("v",CTy"CP0"),
3391                                                   qVar"s"],
3392                                                Let(qVar"s0",
3393                                                    Apply
3394                                                      (Call
3395                                                         ("write'CP0",
3396                                                          ATy(qTy,qTy),
3397                                                          Rupd
3398                                                            ("EntryLo1",
3399                                                             TP[Var("v",
3400                                                                    CTy"CP0"),
3401                                                                Rupd
3402                                                                  ("D",
3403                                                                   TP[Dest
3404                                                                        ("EntryLo1",
3405                                                                         CTy"EntryLo",
3406                                                                         Var("v",
3407                                                                             CTy"CP0")),
3408                                                                      Dest
3409                                                                        ("D1",
3410                                                                         bTy,
3411                                                                         Var("e",
3412                                                                             CTy"TLBEntry"))])])),
3413                                                       qVar"s"),
3414                                                    TP[Apply
3415                                                         (Const
3416                                                            ("CP0",
3417                                                             ATy(qTy,
3418                                                                 CTy"CP0")),
3419                                                          qVar"s0"),
3420                                                       qVar"s0"]),
3421                                                Let(TP[Var("v",CTy"CP0"),
3422                                                       qVar"s"],
3423                                                    Let(qVar"s0",
3424                                                        Apply
3425                                                          (Call
3426                                                             ("write'CP0",
3427                                                              ATy(qTy,qTy),
3428                                                              Rupd
3429                                                                ("EntryLo1",
3430                                                                 TP[Var("v",
3431                                                                        CTy"CP0"),
3432                                                                    Rupd
3433                                                                      ("V",
3434                                                                       TP[Dest
3435                                                                            ("EntryLo1",
3436                                                                             CTy"EntryLo",
3437                                                                             Var("v",
3438                                                                                 CTy"CP0")),
3439                                                                          Dest
3440                                                                            ("V1",
3441                                                                             bTy,
3442                                                                             Var("e",
3443                                                                                 CTy"TLBEntry"))])])),
3444                                                           qVar"s"),
3445                                                        TP[Apply
3446                                                             (Const
3447                                                                ("CP0",
3448                                                                 ATy(qTy,
3449                                                                     CTy"CP0")),
3450                                                              qVar"s0"),
3451                                                           qVar"s0"]),
3452                                                    Let(TP[Var("v",
3453                                                               CTy"CP0"),
3454                                                           qVar"s"],
3455                                                        Let(qVar"s0",
3456                                                            Apply
3457                                                              (Call
3458                                                                 ("write'CP0",
3459                                                                  ATy(qTy,
3460                                                                      qTy),
3461                                                                  Rupd
3462                                                                    ("EntryLo1",
3463                                                                     TP[Var("v",
3464                                                                            CTy"CP0"),
3465                                                                        Rupd
3466                                                                          ("G",
3467                                                                           TP[Dest
3468                                                                                ("EntryLo1",
3469                                                                                 CTy"EntryLo",
3470                                                                                 Var("v",
3471                                                                                     CTy"CP0")),
3472                                                                              Dest
3473                                                                                ("G",
3474                                                                                 bTy,
3475                                                                                 Var("e",
3476                                                                                     CTy"TLBEntry"))])])),
3477                                                               qVar"s"),
3478                                                            TP[Apply
3479                                                                 (Const
3480                                                                    ("CP0",
3481                                                                     ATy(qTy,
3482                                                                         CTy"CP0")),
3483                                                                  qVar"s0"),
3484                                                               qVar"s0"]),
3485                                                        Let(TP[Var("v",
3486                                                                   CTy"CP0"),
3487                                                               qVar"s"],
3488                                                            Let(qVar"s0",
3489                                                                Apply
3490                                                                  (Call
3491                                                                     ("write'CP0",
3492                                                                      ATy(qTy,
3493                                                                          qTy),
3494                                                                      Rupd
3495                                                                        ("EntryLo0",
3496                                                                         TP[Var("v",
3497                                                                                CTy"CP0"),
3498                                                                            Rupd
3499                                                                              ("PFN",
3500                                                                               TP[Dest
3501                                                                                    ("EntryLo0",
3502                                                                                     CTy"EntryLo",
3503                                                                                     Var("v",
3504                                                                                         CTy"CP0")),
3505                                                                                  Dest
3506                                                                                    ("PFN0",
3507                                                                                     FTy 28,
3508                                                                                     Var("e",
3509                                                                                         CTy"TLBEntry"))])])),
3510                                                                   qVar"s"),
3511                                                                TP[Apply
3512                                                                     (Const
3513                                                                        ("CP0",
3514                                                                         ATy(qTy,
3515                                                                             CTy"CP0")),
3516                                                                      qVar"s0"),
3517                                                                   qVar"s0"]),
3518                                                            Let(TP[Var("v",
3519                                                                       CTy"CP0"),
3520                                                                   qVar"s"],
3521                                                                Let(qVar"s0",
3522                                                                    Apply
3523                                                                      (Call
3524                                                                         ("write'CP0",
3525                                                                          ATy(qTy,
3526                                                                              qTy),
3527                                                                          Rupd
3528                                                                            ("EntryLo0",
3529                                                                             TP[Var("v",
3530                                                                                    CTy"CP0"),
3531                                                                                Rupd
3532                                                                                  ("C",
3533                                                                                   TP[Dest
3534                                                                                        ("EntryLo0",
3535                                                                                         CTy"EntryLo",
3536                                                                                         Var("v",
3537                                                                                             CTy"CP0")),
3538                                                                                      Dest
3539                                                                                        ("C0",
3540                                                                                         FTy 3,
3541                                                                                         Var("e",
3542                                                                                             CTy"TLBEntry"))])])),
3543                                                                       qVar"s"),
3544                                                                    TP[Apply
3545                                                                         (Const
3546                                                                            ("CP0",
3547                                                                             ATy(qTy,
3548                                                                                 CTy"CP0")),
3549                                                                          qVar"s0"),
3550                                                                       qVar"s0"]),
3551                                                                Let(TP[Var("v",
3552                                                                           CTy"CP0"),
3553                                                                       qVar"s"],
3554                                                                    Let(qVar"s0",
3555                                                                        Apply
3556                                                                          (Call
3557                                                                             ("write'CP0",
3558                                                                              ATy(qTy,
3559                                                                                  qTy),
3560                                                                              Rupd
3561                                                                                ("EntryLo0",
3562                                                                                 TP[Var("v",
3563                                                                                        CTy"CP0"),
3564                                                                                    Rupd
3565                                                                                      ("D",
3566                                                                                       TP[Dest
3567                                                                                            ("EntryLo0",
3568                                                                                             CTy"EntryLo",
3569                                                                                             Var("v",
3570                                                                                                 CTy"CP0")),
3571                                                                                          Dest
3572                                                                                            ("D0",
3573                                                                                             bTy,
3574                                                                                             Var("e",
3575                                                                                                 CTy"TLBEntry"))])])),
3576                                                                           qVar"s"),
3577                                                                        TP[Apply
3578                                                                             (Const
3579                                                                                ("CP0",
3580                                                                                 ATy(qTy,
3581                                                                                     CTy"CP0")),
3582                                                                              qVar"s0"),
3583                                                                           qVar"s0"]),
3584                                                                    Let(TP[Var("v",
3585                                                                               CTy"CP0"),
3586                                                                           qVar"s"],
3587                                                                        Let(qVar"s0",
3588                                                                            Apply
3589                                                                              (Call
3590                                                                                 ("write'CP0",
3591                                                                                  ATy(qTy,
3592                                                                                      qTy),
3593                                                                                  Rupd
3594                                                                                    ("EntryLo0",
3595                                                                                     TP[Var("v",
3596                                                                                            CTy"CP0"),
3597                                                                                        Rupd
3598                                                                                          ("V",
3599                                                                                           TP[Dest
3600                                                                                                ("EntryLo0",
3601                                                                                                 CTy"EntryLo",
3602                                                                                                 Var("v",
3603                                                                                                     CTy"CP0")),
3604                                                                                              Dest
3605                                                                                                ("V0",
3606                                                                                                 bTy,
3607                                                                                                 Var("e",
3608                                                                                                     CTy"TLBEntry"))])])),
3609                                                                               qVar"s"),
3610                                                                            TP[Apply
3611                                                                                 (Const
3612                                                                                    ("CP0",
3613                                                                                     ATy(qTy,
3614                                                                                         CTy"CP0")),
3615                                                                                  qVar"s0"),
3616                                                                               qVar"s0"]),
3617                                                                        Apply
3618                                                                          (Call
3619                                                                             ("write'CP0",
3620                                                                              ATy(qTy,
3621                                                                                  qTy),
3622                                                                              Rupd
3623                                                                                ("EntryLo0",
3624                                                                                 TP[Var("v",
3625                                                                                        CTy"CP0"),
3626                                                                                    Rupd
3627                                                                                      ("G",
3628                                                                                       TP[Dest
3629                                                                                            ("EntryLo0",
3630                                                                                             CTy"EntryLo",
3631                                                                                             Var("v",
3632                                                                                                 CTy"CP0")),
3633                                                                                          Dest
3634                                                                                            ("G",
3635                                                                                             bTy,
3636                                                                                             Var("e",
3637                                                                                                 CTy"TLBEntry"))])])),
3638                                                                           qVar"s")))))))))))))))),
3639               (AVar(OTy(CTy"TLBEntry")),
3640                Mop(Snd,
3641                    Apply
3642                      (Call
3643                         ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
3644                          Call
3645                            ("UNPREDICTABLE",CTy"exception",
3646                             LS"TLB: reading from invalid entry")),
3647                       qVar"state")))]))))
3648;
3649val dfn'TLBWI_def = Def
3650  ("dfn'TLBWI",qVar"state",
3651   ITB([(Bop(And,
3652             Mop(Not,
3653                 Dest
3654                   ("CU0",bTy,
3655                    Dest
3656                      ("Status",CTy"StatusRegister",
3657                       Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
3658             Mop(Not,Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state"))),
3659         Apply
3660           (Call
3661              ("SignalException",ATy(qTy,qTy),LC("CpU",CTy"ExceptionType")),
3662            qVar"state")),
3663        (Mop(Not,
3664             Mop(IsSome,
3665                 Call
3666                   ("checkMask",OTy nTy,
3667                    Dest
3668                      ("Mask",FTy 12,
3669                       Dest
3670                         ("PageMask",CTy"PageMask",
3671                          Apply
3672                            (Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))))),
3673         Apply
3674           (Call
3675              ("SignalException",ATy(qTy,qTy),
3676               LC("MCheck",CTy"ExceptionType")),qVar"state")),
3677        (Bop(Lt,
3678             Mop(Cast nTy,
3679                 Dest
3680                   ("Index",FTy 9,
3681                    Dest
3682                      ("Index",CTy"Index",
3683                       Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
3684             Const("TLBAssocEntries",nTy)),
3685         Let(TP[Var("v0",CTy"TLBEntry"),qVar"s0"],
3686             Apply
3687               (Call("CP0TLBEntry",ATy(qTy,PTy(CTy"TLBEntry",qTy)),LU),
3688                qVar"state"),
3689             Apply
3690               (Call
3691                  ("write'TLB_assoc",ATy(qTy,qTy),
3692                   TP[Mop(Some,Var("v0",CTy"TLBEntry")),
3693                      Mop(Cast F4,
3694                          Dest
3695                            ("Index",FTy 9,
3696                             Dest
3697                               ("Index",CTy"Index",
3698                                Apply
3699                                  (Const("CP0",ATy(qTy,CTy"CP0")),
3700                                   qVar"state"))))]),qVar"s0"))),
3701        (Bop(Lt,
3702             Mop(Cast nTy,
3703                 Dest
3704                   ("Index",FTy 9,
3705                    Dest
3706                      ("Index",CTy"Index",
3707                       Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
3708             Const("TLBEntries",nTy)),
3709         Let(TP[Var("v0",CTy"TLBEntry"),qVar"s0"],
3710             Apply
3711               (Call("CP0TLBEntry",ATy(qTy,PTy(CTy"TLBEntry",qTy)),LU),
3712                qVar"state"),
3713             Apply
3714               (Call
3715                  ("write'TLB_direct",ATy(qTy,qTy),
3716                   TP[Mop(Some,Var("v0",CTy"TLBEntry")),
3717                      EX(Dest
3718                           ("VPN2",FTy 27,
3719                            Dest
3720                              ("EntryHi",CTy"EntryHi",
3721                               Apply
3722                                 (Const("CP0",ATy(qTy,CTy"CP0")),
3723                                  qVar"state"))),LN 7,LN 0,F8)]),qVar"s0")))],
3724       Apply
3725         (Call
3726            ("SignalException",ATy(qTy,qTy),
3727             LC("MCheck",CTy"ExceptionType")),qVar"state")))
3728;
3729val dfn'TLBWR_def = Def
3730  ("dfn'TLBWR",qVar"state",
3731   ITB([(Bop(And,
3732             Mop(Not,
3733                 Dest
3734                   ("CU0",bTy,
3735                    Dest
3736                      ("Status",CTy"StatusRegister",
3737                       Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
3738             Mop(Not,Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state"))),
3739         Apply
3740           (Call
3741              ("SignalException",ATy(qTy,qTy),LC("CpU",CTy"ExceptionType")),
3742            qVar"state")),
3743        (Mop(Not,
3744             Mop(IsSome,
3745                 Call
3746                   ("checkMask",OTy nTy,
3747                    Dest
3748                      ("Mask",FTy 12,
3749                       Dest
3750                         ("PageMask",CTy"PageMask",
3751                          Apply
3752                            (Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))))),
3753         Apply
3754           (Call
3755              ("SignalException",ATy(qTy,qTy),
3756               LC("MCheck",CTy"ExceptionType")),qVar"state")),
3757        (Dest
3758           ("LTLB",bTy,
3759            Dest
3760              ("Config6",CTy"ConfigRegister6",
3761               Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
3762         Let(Var("v",F8),
3763             EX(Dest
3764                  ("VPN2",FTy 27,
3765                   Dest
3766                     ("EntryHi",CTy"EntryHi",
3767                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
3768                LN 7,LN 0,F8),
3769             Let(TP[Var("v0",CTy"TLBEntry"),qVar"s"],
3770                 Apply
3771                   (Call("CP0TLBEntry",ATy(qTy,PTy(CTy"TLBEntry",qTy)),LU),
3772                    CS(Apply
3773                         (Call
3774                            ("TLB_direct",ATy(qTy,OTy(CTy"TLBEntry")),
3775                             Var("v",F8)),qVar"state"),
3776                       [(Mop(Some,Var("old",CTy"TLBEntry")),
3777                         Apply
3778                           (Call
3779                              ("write'TLB_assoc",ATy(qTy,qTy),
3780                               TP[Mop(Some,Var("old",CTy"TLBEntry")),
3781                                  Mop(Cast F4,
3782                                      Dest
3783                                        ("Random",F8,
3784                                         Dest
3785                                           ("Random",CTy"Random",
3786                                            Apply
3787                                              (Const
3788                                                 ("CP0",ATy(qTy,CTy"CP0")),
3789                                               qVar"state"))))]),
3790                            qVar"state")),
3791                        (AVar(OTy(CTy"TLBEntry")),qVar"state")])),
3792                 Apply
3793                   (Call
3794                      ("write'TLB_direct",ATy(qTy,qTy),
3795                       TP[Mop(Some,Var("v0",CTy"TLBEntry")),Var("v",F8)]),
3796                    qVar"s"))))],
3797       Let(TP[Var("v0",CTy"TLBEntry"),qVar"s0"],
3798           Apply
3799             (Call("CP0TLBEntry",ATy(qTy,PTy(CTy"TLBEntry",qTy)),LU),
3800              qVar"state"),
3801           Apply
3802             (Call
3803                ("write'TLB_assoc",ATy(qTy,qTy),
3804                 TP[Mop(Some,Var("v0",CTy"TLBEntry")),
3805                    Mop(Cast F4,
3806                        Dest
3807                          ("Random",F8,
3808                           Dest
3809                             ("Random",CTy"Random",
3810                              Apply
3811                                (Const("CP0",ATy(qTy,CTy"CP0")),
3812                                 qVar"state"))))]),qVar"s0"))))
3813;
3814val reg_name_def = Def
3815  ("reg_name",Var("n",FTy 5),
3816   CC[LS"$",
3817      CS(Var("n",FTy 5),
3818         [(LW(0,5),LS"zero"),(LW(1,5),LS"at"),(LW(2,5),LS"v0"),
3819          (LW(3,5),LS"v1"),(LW(4,5),LS"a0"),(LW(5,5),LS"a1"),
3820          (LW(6,5),LS"a2"),(LW(7,5),LS"a3"),(LW(8,5),LS"t0"),
3821          (LW(9,5),LS"t1"),(LW(10,5),LS"t2"),(LW(11,5),LS"t3"),
3822          (LW(12,5),LS"t4"),(LW(13,5),LS"t5"),(LW(14,5),LS"t6"),
3823          (LW(15,5),LS"t7"),(LW(16,5),LS"s0"),(LW(17,5),LS"s1"),
3824          (LW(18,5),LS"s2"),(LW(19,5),LS"s3"),(LW(20,5),LS"s4"),
3825          (LW(21,5),LS"s5"),(LW(22,5),LS"s6"),(LW(23,5),LS"s7"),
3826          (LW(24,5),LS"t8"),(LW(25,5),LS"t9"),(LW(26,5),LS"k0"),
3827          (LW(27,5),LS"k1"),(LW(28,5),LS"gp"),(LW(29,5),LS"sp"),
3828          (LW(30,5),LS"fp"),(LW(31,5),LS"ra")])])
3829;
3830val ihex_def = Def
3831  ("ihex",Var("n",BTy"N"),
3832   CC[ITE(Bop(Ult,Var("n",BTy"N"),LY(10,"N")),LS"",LS"0x"),
3833      Mop(ToLower,Mop(Cast sTy,Var("n",BTy"N")))])
3834;
3835val op1i_def = Def
3836  ("op1i",TP[sVar"s",Var("n",BTy"N")],
3837   CC[Mop(PadRight,TP[LSC #" ",LN 12,CC[sVar"s",LS" "]]),
3838      Call("ihex",sTy,Var("n",BTy"N"))])
3839;
3840val op1ai_def = Def
3841  ("op1ai",TP[sVar"s",Var("n",BTy"N")],
3842   CC[Mop(PadRight,TP[LSC #" ",LN 12,CC[sVar"s",LS" "]]),
3843      Call("ihex",sTy,Bop(Lsl,Mop(Cast F32,Var("n",BTy"N")),LN 2))])
3844;
3845val op1lai_def = Def
3846  ("op1lai",TP[sVar"s",Var("n",BTy"N")],
3847   CC[Mop(PadRight,TP[LSC #" ",LN 12,CC[sVar"s",LS" "]]),
3848      Call
3849        ("ihex",sTy,
3850         Bop(Lsl,Mop(Cast F32,Bop(Add,Var("n",BTy"N"),LY(1,"N"))),LN 2))])
3851;
3852val op1r_def = Def
3853  ("op1r",TP[sVar"s",Var("n",FTy 5)],
3854   CC[Mop(PadRight,TP[LSC #" ",LN 12,CC[sVar"s",LS" "]]),
3855      Call("reg_name",sTy,Var("n",FTy 5))])
3856;
3857val op1ri_def = Def
3858  ("op1ri",TP[sVar"s",Var("r1",FTy 5),Var("n",BTy"N")],
3859   CC[Call("op1r",sTy,TP[sVar"s",Var("r1",FTy 5)]),LS", ",
3860      Call("ihex",sTy,Var("n",BTy"N"))])
3861;
3862val op1rai_def = Def
3863  ("op1rai",TP[sVar"s",Var("r1",FTy 5),Var("n",BTy"N")],
3864   CC[Call("op1r",sTy,TP[sVar"s",Var("r1",FTy 5)]),LS", ",
3865      Call("ihex",sTy,Bop(Lsl,Mop(Cast F32,Var("n",BTy"N")),LN 2))])
3866;
3867val op1rlai_def = Def
3868  ("op1rlai",TP[sVar"s",Var("r1",FTy 5),Var("n",BTy"N")],
3869   CC[Call("op1r",sTy,TP[sVar"s",Var("r1",FTy 5)]),LS", ",
3870      Call
3871        ("ihex",sTy,
3872         Bop(Lsl,Mop(Cast F32,Bop(Add,Var("n",BTy"N"),LY(1,"N"))),LN 2))])
3873;
3874val op2r_def = Def
3875  ("op2r",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5)],
3876   CC[Call("op1r",sTy,TP[sVar"s",Var("r1",FTy 5)]),LS", ",
3877      Call("reg_name",sTy,Var("r2",FTy 5))])
3878;
3879val op2ri_def = Def
3880  ("op2ri",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("n",BTy"N")],
3881   CC[Call("op2r",sTy,TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5)]),LS", ",
3882      Call("ihex",sTy,Var("n",BTy"N"))])
3883;
3884val op2rai_def = Def
3885  ("op2rai",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("n",BTy"N")],
3886   CC[Call("op2r",sTy,TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5)]),LS", ",
3887      Call("ihex",sTy,Bop(Lsl,Mop(Cast F32,Var("n",BTy"N")),LN 2))])
3888;
3889val op2rlai_def = Def
3890  ("op2rlai",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("n",BTy"N")],
3891   CC[Call("op2r",sTy,TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5)]),LS", ",
3892      Call
3893        ("ihex",sTy,
3894         Bop(Lsl,Mop(Cast F32,Bop(Add,Var("n",BTy"N"),LY(1,"N"))),LN 2))])
3895;
3896val op3r_def = Def
3897  ("op3r",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("r3",FTy 5)],
3898   CC[Call("op2r",sTy,TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5)]),LS", ",
3899      Call("reg_name",sTy,Var("r3",FTy 5))])
3900;
3901val op2roi_def = Def
3902  ("op2roi",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("n",BTy"N")],
3903   CC[Call("op1r",sTy,TP[sVar"s",Var("r1",FTy 5)]),LS", ",
3904      Call("cpr",sTy,Var("r2",FTy 5)),
3905      ITE(EQ(Var("n",BTy"N"),LY(0,"N")),LS"",
3906          Call("ihex",sTy,Var("n",BTy"N")))])
3907;
3908val opmem_def = Def
3909  ("opmem",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("n",BTy"N")],
3910   CC[Call("op1ri",sTy,TP[sVar"s",Var("r1",FTy 5),Var("n",BTy"N")]),LS"(",
3911      Call("reg_name",sTy,Var("r2",FTy 5)),LS")"])
3912;
3913val op1fpr_def = Def
3914  ("op1fpr",TP[sVar"s",Var("n",FTy 5)],
3915   CC[Mop(PadRight,TP[LSC #" ",LN 12,CC[sVar"s",LS" "]]),LS"$f",
3916      Mop(Cast sTy,Mop(Cast nTy,Var("n",FTy 5)))])
3917;
3918val op1fpri_def = Def
3919  ("op1fpri",TP[sVar"s",Var("r1",FTy 5),Var("n",BTy"N")],
3920   CC[Call("op1fpr",sTy,TP[sVar"s",Var("r1",FTy 5)]),LS", ",
3921      Call("ihex",sTy,Var("n",BTy"N"))])
3922;
3923val op2fpr_def = Def
3924  ("op2fpr",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5)],
3925   CC[Call("op1fpr",sTy,TP[sVar"s",Var("r1",FTy 5)]),LS", ",LS"$f",
3926      Mop(Cast sTy,Mop(Cast nTy,Var("r2",FTy 5)))])
3927;
3928val op2rfpr_def = Def
3929  ("op2rfpr",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5)],
3930   CC[Call("op1r",sTy,TP[sVar"s",Var("r1",FTy 5)]),LS", ",LS"$f",
3931      Mop(Cast sTy,Mop(Cast nTy,Var("r2",FTy 5)))])
3932;
3933val op2rcfpr_def = Def
3934  ("op2rcfpr",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5)],
3935   CC[Call("op1r",sTy,TP[sVar"s",Var("r1",FTy 5)]),LS", $",
3936      Mop(Cast sTy,Mop(Cast nTy,Var("r2",FTy 5)))])
3937;
3938val op2ccfpr_def = Def
3939  ("op2ccfpr",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("n",FTy 3)],
3940   CC[Mop(PadRight,TP[LSC #" ",LN 12,CC[sVar"s",LS" "]]),
3941      ITE(EQ(Var("n",FTy 3),LW(0,3)),LS"",
3942          CC[LS"$fcc",Mop(Cast sTy,Mop(Cast nTy,Var("n",FTy 3))),LS", "]),
3943      CC[LS"$f",Mop(Cast sTy,Mop(Cast nTy,Var("r1",FTy 5)))],LS", ",
3944      LS"$f",Mop(Cast sTy,Mop(Cast nTy,Var("r2",FTy 5)))])
3945;
3946val op3fpr_def = Def
3947  ("op3fpr",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("r3",FTy 5)],
3948   CC[Call("op2fpr",sTy,TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5)]),
3949      LS", ",LS"$f",Mop(Cast sTy,Mop(Cast nTy,Var("r3",FTy 5)))])
3950;
3951val op4fpr_def = Def
3952  ("op4fpr",
3953   TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("r3",FTy 5),
3954      Var("r4",FTy 5)],
3955   CC[Call
3956        ("op3fpr",sTy,
3957         TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("r3",FTy 5)]),
3958      LS", ",LS"$f",Mop(Cast sTy,Mop(Cast nTy,Var("r4",FTy 5)))])
3959;
3960val opfpmem_def = Def
3961  ("opfpmem",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("n",BTy"N")],
3962   CC[Call("op1fpri",sTy,TP[sVar"s",Var("r1",FTy 5),Var("n",BTy"N")]),
3963      LS"(",Call("reg_name",sTy,Var("r2",FTy 5)),LS")"])
3964;
3965val opfpmem2_def = Def
3966  ("opfpmem2",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("r3",FTy 5)],
3967   CC[Call("op1fpr",sTy,TP[sVar"s",Var("r1",FTy 5)]),LS", ",
3968      Call("reg_name",sTy,Var("r3",FTy 5)),LS"(",
3969      Call("reg_name",sTy,Var("r2",FTy 5)),LS")"])
3970;
3971val form1_def = Def
3972  ("form1",
3973   TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5),
3974      Var("function",FTy 6)],
3975   CC[LW(0,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
3976      Var("imm5",FTy 5),Var("function",FTy 6)])
3977;
3978val form2_def = Def
3979  ("form2",TP[Var("rs",FTy 5),Var("function",FTy 5),Var("imm",F16)],
3980   CC[LW(1,6),Var("rs",FTy 5),Var("function",FTy 5),Var("imm",F16)])
3981;
3982val form3_def = Def
3983  ("form3",
3984   TP[Var("function",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
3985      Var("sel",FTy 3)],
3986   CC[LW(16,6),Var("function",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
3987      LW(0,8),Var("sel",FTy 3)])
3988;
3989val form4_def = Def
3990  ("form4",
3991   TP[Var("function",FTy 6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)],
3992   CC[Var("function",FTy 6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])
3993;
3994val form5_def = Def
3995  ("form5",
3996   TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
3997      Var("function",FTy 6)],
3998   CC[LW(28,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
3999      Var("function",FTy 6)])
4000;
4001val form6_def = Def
4002  ("form6",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("function",FTy 6)],
4003   CC[LW(31,6),LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
4004      Var("function",FTy 6)])
4005;
4006val L1ISIZE_def = Def0 ("L1ISIZE",LN 32768)
4007;
4008val L1IWAYS_def = Def0 ("L1IWAYS",LN 2)
4009;
4010val L1DSIZE_def = Def0 ("L1DSIZE",LN 32768)
4011;
4012val L1DWAYS_def = Def0 ("L1DWAYS",LN 4)
4013;
4014val L1LINESIZE_def = Def0 ("L1LINESIZE",LN 128)
4015;
4016val L2SIZE_def = Def0 ("L2SIZE",LN 262144)
4017;
4018val L2WAYS_def = Def0 ("L2WAYS",LN 4)
4019;
4020val L2LINESIZE_def = Def0 ("L2LINESIZE",LN 128)
4021;
4022val isAligned_def = Def
4023  ("isAligned",TP[Var("vAddr",F64),Var("MemType",FTy 3)],
4024   EQ(Bop(BAnd,Mop(Cast(FTy 3),Var("vAddr",F64)),Var("MemType",FTy 3)),
4025      LW(0,3)))
4026;
4027val AdjustEndian_def = Def
4028  ("AdjustEndian",TP[Var("MemType",FTy 3),Var("pAddr",FTy 40)],
4029   Close
4030     (qVar"state",
4031      CS(Var("MemType",FTy 3),
4032         [(LW(0,3),
4033           TP[Bop(BXor,Var("pAddr",FTy 40),
4034                  Mop(Cast(FTy 40),
4035                      REP(Apply
4036                            (Const("ReverseEndian",ATy(qTy,F1)),
4037                             qVar"state"),LN 3,FTy 3))),qVar"state"]),
4038          (LW(1,3),
4039           TP[Bop(BXor,Var("pAddr",FTy 40),
4040                  Mop(Cast(FTy 40),
4041                      CC[REP(Apply
4042                               (Const("ReverseEndian",ATy(qTy,F1)),
4043                                qVar"state"),LN 2,FTy 2),LW(0,1)])),
4044              qVar"state"]),
4045          (LW(3,3),
4046           TP[Bop(BXor,Var("pAddr",FTy 40),
4047                  Mop(Cast(FTy 40),
4048                      CC[Apply
4049                           (Const("ReverseEndian",ATy(qTy,F1)),qVar"state"),
4050                         LW(0,2)])),qVar"state"]),
4051          (LW(7,3),TP[Var("pAddr",FTy 40),qVar"state"]),
4052          (AVar(FTy 3),
4053           Apply
4054             (Call
4055                ("raise'exception",ATy(qTy,PTy(FTy 40,qTy)),
4056                 Call
4057                   ("UNPREDICTABLE",CTy"exception",LS"bad access length")),
4058              qVar"state"))])))
4059;
4060val InitMEM_def = Def
4061  ("InitMEM",qVar"state",
4062   Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
4063       Apply
4064         (Call("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)),LS"mem-data"),
4065          qVar"state"),
4066       Rupd
4067         ("mem",
4068          TP[qVar"s",
4069             Mop(K1(FTy 35),
4070                 Call
4071                   ("Raw",CTy"DataType",
4072                    Apply
4073                      (LX(ATy(PTy(nTy,sTy),FTy 256)),Var("v",PTy(nTy,sTy)))))])))
4074;
4075val ReadData_def = Def
4076  ("ReadData",Var("dwordAddr",FTy 37),
4077   Close
4078     (qVar"state",
4079      CS(Apply
4080           (Dest("mem",ATy(FTy 35,CTy"DataType"),qVar"state"),
4081            EX(Var("dwordAddr",FTy 37),LN 36,
4082               Bop(Sub,Mop(Log,Const("CAPBYTEWIDTH",nTy)),LN 3),FTy 35)),
4083         [(Call("Cap",CTy"DataType",Var("cap",CTy"Capability")),
4084           Call
4085             ("readDwordFromRaw",F64,
4086              TP[Var("dwordAddr",FTy 37),
4087                 Call("capToBits",FTy 256,Var("cap",CTy"Capability"))])),
4088          (Call("Raw",CTy"DataType",Var("raw",FTy 256)),
4089           Call
4090             ("readDwordFromRaw",F64,
4091              TP[Var("dwordAddr",FTy 37),Var("raw",FTy 256)]))])))
4092;
4093val WriteData_def = Def
4094  ("WriteData",
4095   TP[Var("dwordAddr",FTy 37),Var("data",F64),Var("mask",F64)],
4096   Close
4097     (qVar"state",
4098      Rupd
4099        ("mem",
4100         TP[qVar"state",
4101            Fupd
4102              (Dest("mem",ATy(FTy 35,CTy"DataType"),qVar"state"),
4103               EX(Var("dwordAddr",FTy 37),LN 36,
4104                  Bop(Sub,Mop(Log,Const("CAPBYTEWIDTH",nTy)),LN 3),FTy 35),
4105               Call
4106                 ("Raw",CTy"DataType",
4107                  Call
4108                    ("updateDwordInRaw",FTy 256,
4109                     TP[Var("dwordAddr",FTy 37),Var("data",F64),
4110                        Var("mask",F64),
4111                        CS(Apply
4112                             (Dest
4113                                ("mem",ATy(FTy 35,CTy"DataType"),
4114                                 qVar"state"),
4115                              EX(Var("dwordAddr",FTy 37),LN 36,
4116                                 Bop(Sub,
4117                                     Mop(Log,Const("CAPBYTEWIDTH",nTy)),
4118                                     LN 3),FTy 35)),
4119                           [(Call
4120                               ("Cap",CTy"DataType",
4121                                Var("cap",CTy"Capability")),
4122                             Call
4123                               ("capToBits",FTy 256,
4124                                Var("cap",CTy"Capability"))),
4125                            (Call("Raw",CTy"DataType",Var("raw",FTy 256)),
4126                             Var("raw",FTy 256))])])))])))
4127;
4128val ReadInst_def = Def
4129  ("ReadInst",Var("a",FTy 40),
4130   Close
4131     (qVar"state",
4132      Let(Var("v",F64),
4133          CS(Apply
4134               (Dest("mem",ATy(FTy 35,CTy"DataType"),qVar"state"),
4135                EX(Var("a",FTy 40),LN 39,
4136                   Mop(Log,Const("CAPBYTEWIDTH",nTy)),FTy 35)),
4137             [(Call("Cap",CTy"DataType",Var("cap",CTy"Capability")),
4138               Call
4139                 ("readDwordFromRaw",F64,
4140                  TP[EX(Var("a",FTy 40),LN 39,LN 3,FTy 37),
4141                     Call("capToBits",FTy 256,Var("cap",CTy"Capability"))])),
4142              (Call("Raw",CTy"DataType",Var("raw",FTy 256)),
4143               Call
4144                 ("readDwordFromRaw",F64,
4145                  TP[EX(Var("a",FTy 40),LN 39,LN 3,FTy 37),
4146                     Var("raw",FTy 256)]))]),
4147          ITE(Bop(Bit,Var("a",FTy 40),LN 2),
4148              EX(Var("v",F64),LN 31,LN 0,F32),
4149              EX(Var("v",F64),LN 63,LN 32,F32)))))
4150;
4151val ReadCap_def = Def
4152  ("ReadCap",Var("capAddr",FTy 35),
4153   Close
4154     (qVar"state",
4155      CS(Apply
4156           (Dest("mem",ATy(FTy 35,CTy"DataType"),qVar"state"),
4157            Var("capAddr",FTy 35)),
4158         [(Call("Cap",CTy"DataType",Var("cap",CTy"Capability")),
4159           Var("cap",CTy"Capability")),
4160          (Call("Raw",CTy"DataType",Var("raw",FTy 256)),
4161           Call("bitsToCap",CTy"Capability",Var("raw",FTy 256)))])))
4162;
4163val WriteCap_def = Def
4164  ("WriteCap",TP[Var("capAddr",FTy 35),Var("cap",CTy"Capability")],
4165   Close
4166     (qVar"state",
4167      Rupd
4168        ("mem",
4169         TP[qVar"state",
4170            Fupd
4171              (Dest("mem",ATy(FTy 35,CTy"DataType"),qVar"state"),
4172               Var("capAddr",FTy 35),
4173               Call("Cap",CTy"DataType",Var("cap",CTy"Capability")))])))
4174;
4175val WriteDWORD_def = Def
4176  ("WriteDWORD",TP[Var("dwordAddr",FTy 37),Var("data",F64)],
4177   Close
4178     (qVar"state",
4179      Rupd
4180        ("mem",
4181         TP[qVar"state",
4182            Fupd
4183              (Dest("mem",ATy(FTy 35,CTy"DataType"),qVar"state"),
4184               EX(Var("dwordAddr",FTy 37),LN 36,
4185                  Bop(Sub,Mop(Log,Const("CAPBYTEWIDTH",nTy)),LN 3),FTy 35),
4186               Call
4187                 ("Raw",CTy"DataType",
4188                  Call
4189                    ("updateDwordInRaw",FTy 256,
4190                     TP[Var("dwordAddr",FTy 37),Var("data",F64),
4191                        Mop(BNot,LW(0,64)),
4192                        CS(Apply
4193                             (Dest
4194                                ("mem",ATy(FTy 35,CTy"DataType"),
4195                                 qVar"state"),
4196                              EX(Var("dwordAddr",FTy 37),LN 36,
4197                                 Bop(Sub,
4198                                     Mop(Log,Const("CAPBYTEWIDTH",nTy)),
4199                                     LN 3),FTy 35)),
4200                           [(Call
4201                               ("Cap",CTy"DataType",
4202                                Var("cap",CTy"Capability")),
4203                             Mop(Cast(FTy 256),
4204                                 Call
4205                                   ("reg'Capability",FTy 257,
4206                                    Var("cap",CTy"Capability")))),
4207                            (Call("Raw",CTy"DataType",Var("raw",FTy 256)),
4208                             Var("raw",FTy 256))])])))])))
4209;
4210val Write256_def = Def
4211  ("Write256",TP[Var("addr",FTy 35),Var("data",FTy 256)],
4212   Close
4213     (qVar"state",
4214      Rupd
4215        ("mem",
4216         TP[qVar"state",
4217            Fupd
4218              (Dest("mem",ATy(FTy 35,CTy"DataType"),qVar"state"),
4219               Var("addr",FTy 35),
4220               Call("Raw",CTy"DataType",Var("data",FTy 256)))])))
4221;
4222val getVirtualAddress_def = Def
4223  ("getVirtualAddress",Var("addr",F64),
4224   Close
4225     (qVar"state",
4226      Bop(Add,
4227          Bop(Add,Var("addr",F64),
4228              Call
4229                ("getBase",F64,
4230                 Apply
4231                   (Call("CAPR",ATy(qTy,CTy"Capability"),LW(0,5)),
4232                    qVar"state"))),
4233          Call
4234            ("getOffset",F64,
4235             Apply
4236               (Call("CAPR",ATy(qTy,CTy"Capability"),LW(0,5)),qVar"state")))))
4237;
4238val LoadMemoryCap_def = Def
4239  ("LoadMemoryCap",
4240   TP[Var("MemType",FTy 3),bVar"needAlign",Var("vAddr",F64),bVar"link"],
4241   Close
4242     (qVar"state",
4243      ITE(Bop(And,bVar"needAlign",
4244              Mop(Not,
4245                  Call
4246                    ("isAligned",bTy,
4247                     TP[Var("vAddr",F64),Var("MemType",FTy 3)]))),
4248          Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
4249              Apply
4250                (Call
4251                   ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)),
4252                    LS"mem-data"),
4253                 Apply
4254                   (Call
4255                      ("SignalException",ATy(qTy,qTy),
4256                       LC("AdEL",CTy"ExceptionType")),
4257                    Apply
4258                      (Call
4259                         ("write'CP0",ATy(qTy,qTy),
4260                          Rupd
4261                            ("BadVAddr",
4262                             TP[Apply
4263                                  (Const("CP0",ATy(qTy,CTy"CP0")),
4264                                   qVar"state"),Var("vAddr",F64)])),
4265                       qVar"state"))),
4266              TP[Apply(LX(ATy(PTy(nTy,sTy),F64)),Var("v",PTy(nTy,sTy))),
4267                 qVar"s"]),
4268          Let(TP[Var("v",FTy 40),qVar"s"],
4269              Apply
4270                (Call
4271                   ("AdjustEndian",ATy(qTy,PTy(FTy 40,qTy)),
4272                    TP[Var("MemType",FTy 3),
4273                       Mop(Cast(FTy 40),Var("vAddr",F64))]),qVar"state"),
4274              Let(qVar"s0",
4275                  ITE(bVar"link",
4276                      Let(TP[Var("v0",CTy"CP0"),qVar"s"],
4277                          Let(qVar"s0",
4278                              Apply
4279                                (Call
4280                                   ("write'LLbit",ATy(qTy,qTy),
4281                                    Mop(Some,LT)),qVar"s"),
4282                              TP[Apply
4283                                   (Const("CP0",ATy(qTy,CTy"CP0")),
4284                                    qVar"s0"),qVar"s0"]),
4285                          Apply
4286                            (Call
4287                               ("write'CP0",ATy(qTy,qTy),
4288                                Rupd
4289                                  ("LLAddr",
4290                                   TP[Var("v0",CTy"CP0"),
4291                                      Mop(Cast F64,Var("v",FTy 40))])),
4292                             qVar"s")),
4293                      Apply
4294                        (Call("write'LLbit",ATy(qTy,qTy),LO bTy),qVar"s")),
4295                  TP[Apply
4296                       (Call
4297                          ("ReadData",ATy(qTy,F64),
4298                           EX(Var("v",FTy 40),LN 39,LN 3,FTy 37)),qVar"s0"),
4299                     qVar"s0"])))))
4300;
4301val LoadMemory_def = Def
4302  ("LoadMemory",
4303   TP[Var("MemType",FTy 3),Var("AccessLength",FTy 3),bVar"needAlign",
4304      Var("vAddr",F64),bVar"link"],
4305   Close
4306     (qVar"state",
4307      Let(Var("v",CTy"Capability"),
4308          Apply(Call("CAPR",ATy(qTy,CTy"Capability"),LW(0,5)),qVar"state"),
4309          Let(TP[Var("base",F64),Var("len",F64)],
4310              Call
4311                ("getBaseAndLength",PTy(F64,F64),
4312                 Apply
4313                   (Call("CAPR",ATy(qTy,CTy"Capability"),LW(0,5)),
4314                    qVar"state")),
4315              ITB([(Mop(Not,Call("getTag",bTy,Var("v",CTy"Capability"))),
4316                    Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
4317                        Apply
4318                          (Call
4319                             ("next_unknown",
4320                              ATy(qTy,PTy(PTy(nTy,sTy),qTy)),LS"mem-data"),
4321                           Apply
4322                             (Call
4323                                ("SignalCapException",ATy(qTy,qTy),
4324                                 TP[LC("capExcTag",CTy"CapExceptionType"),
4325                                    LW(0,5)]),qVar"state")),
4326                        TP[Apply
4327                             (LX(ATy(PTy(nTy,sTy),F64)),
4328                              Var("v",PTy(nTy,sTy))),qVar"s"])),
4329                   (Call("getSealed",bTy,Var("v",CTy"Capability")),
4330                    Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
4331                        Apply
4332                          (Call
4333                             ("next_unknown",
4334                              ATy(qTy,PTy(PTy(nTy,sTy),qTy)),LS"mem-data"),
4335                           Apply
4336                             (Call
4337                                ("SignalCapException",ATy(qTy,qTy),
4338                                 TP[LC("capExcSeal",CTy"CapExceptionType"),
4339                                    LW(0,5)]),qVar"state")),
4340                        TP[Apply
4341                             (LX(ATy(PTy(nTy,sTy),F64)),
4342                              Var("v",PTy(nTy,sTy))),qVar"s"])),
4343                   (Mop(Not,
4344                        Dest
4345                          ("Permit_Load",bTy,
4346                           Call
4347                             ("getPerms",CTy"Perms",
4348                              Var("v",CTy"Capability")))),
4349                    Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
4350                        Apply
4351                          (Call
4352                             ("next_unknown",
4353                              ATy(qTy,PTy(PTy(nTy,sTy),qTy)),LS"mem-data"),
4354                           Apply
4355                             (Call
4356                                ("SignalCapException",ATy(qTy,qTy),
4357                                 TP[LC("capExcPermLoad",
4358                                       CTy"CapExceptionType"),LW(0,5)]),
4359                              qVar"state")),
4360                        TP[Apply
4361                             (LX(ATy(PTy(nTy,sTy),F64)),
4362                              Var("v",PTy(nTy,sTy))),qVar"s"])),
4363                   (Bop(Ult,Var("vAddr",F64),
4364                        Call("getBase",F64,Var("v",CTy"Capability"))),
4365                    Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
4366                        Apply
4367                          (Call
4368                             ("next_unknown",
4369                              ATy(qTy,PTy(PTy(nTy,sTy),qTy)),LS"mem-data"),
4370                           Apply
4371                             (Call
4372                                ("SignalCapException",ATy(qTy,qTy),
4373                                 TP[LC("capExcLength",
4374                                       CTy"CapExceptionType"),LW(0,5)]),
4375                              qVar"state")),
4376                        TP[Apply
4377                             (LX(ATy(PTy(nTy,sTy),F64)),
4378                              Var("v",PTy(nTy,sTy))),qVar"s"])),
4379                   (Bop(Ugt,
4380                        Bop(Add,
4381                            Bop(Add,CC[LW(0,1),Var("vAddr",F64)],
4382                                Mop(Cast(FTy 65),Var("AccessLength",FTy 3))),
4383                            LW(1,65)),
4384                        Bop(Add,CC[LW(0,1),Var("base",F64)],
4385                            CC[LW(0,1),Var("len",F64)])),
4386                    Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
4387                        Apply
4388                          (Call
4389                             ("next_unknown",
4390                              ATy(qTy,PTy(PTy(nTy,sTy),qTy)),LS"mem-data"),
4391                           Apply
4392                             (Call
4393                                ("SignalCapException",ATy(qTy,qTy),
4394                                 TP[LC("capExcLength",
4395                                       CTy"CapExceptionType"),LW(0,5)]),
4396                              qVar"state")),
4397                        TP[Apply
4398                             (LX(ATy(PTy(nTy,sTy),F64)),
4399                              Var("v",PTy(nTy,sTy))),qVar"s"]))],
4400                  Apply
4401                    (Call
4402                       ("LoadMemoryCap",ATy(qTy,PTy(F64,qTy)),
4403                        TP[Var("MemType",FTy 3),bVar"needAlign",
4404                           Var("vAddr",F64),bVar"link"]),qVar"state"))))))
4405;
4406val LoadCap_def = Def
4407  ("LoadCap",TP[Var("vAddr",F64),bVar"link"],
4408   Close
4409     (qVar"state",
4410      Let(qVar"s",
4411          ITE(bVar"link",
4412              Let(TP[Var("v",CTy"CP0"),qVar"s"],
4413                  Let(qVar"s",
4414                      Apply
4415                        (Call("write'LLbit",ATy(qTy,qTy),Mop(Some,LT)),
4416                         qVar"state"),
4417                      TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s"),
4418                         qVar"s"]),
4419                  Apply
4420                    (Call
4421                       ("write'CP0",ATy(qTy,qTy),
4422                        Rupd
4423                          ("LLAddr",TP[Var("v",CTy"CP0"),Var("vAddr",F64)])),
4424                     qVar"s")),
4425              Apply(Call("write'LLbit",ATy(qTy,qTy),LO bTy),qVar"state")),
4426          TP[Apply
4427               (Call
4428                  ("ReadCap",ATy(qTy,CTy"Capability"),
4429                   EX(Var("vAddr",F64),LN 39,
4430                      Mop(Log,Const("CAPBYTEWIDTH",nTy)),FTy 35)),qVar"s"),
4431             qVar"s"])))
4432;
4433val StoreMemoryCap_def = Def
4434  ("StoreMemoryCap",
4435   TP[Var("MemType",FTy 3),Var("AccessLength",FTy 3),Var("MemElem",F64),
4436      bVar"needAlign",Var("vAddr",F64),bVar"cond"],
4437   Close
4438     (qVar"state",
4439      ITE(Bop(And,bVar"needAlign",
4440              Mop(Not,
4441                  Call
4442                    ("isAligned",bTy,
4443                     TP[Var("vAddr",F64),Var("MemType",FTy 3)]))),
4444          Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
4445              Apply
4446                (Call
4447                   ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)),
4448                    LS"sc-success"),
4449                 Apply
4450                   (Call
4451                      ("SignalException",ATy(qTy,qTy),
4452                       LC("AdES",CTy"ExceptionType")),
4453                    Apply
4454                      (Call
4455                         ("write'CP0",ATy(qTy,qTy),
4456                          Rupd
4457                            ("BadVAddr",
4458                             TP[Apply
4459                                  (Const("CP0",ATy(qTy,CTy"CP0")),
4460                                   qVar"state"),Var("vAddr",F64)])),
4461                       qVar"state"))),
4462              TP[Apply(LX(ATy(PTy(nTy,sTy),bTy)),Var("v",PTy(nTy,sTy))),
4463                 qVar"s"]),
4464          Let(TP[Var("v",FTy 40),qVar"s"],
4465              Apply
4466                (Call
4467                   ("AdjustEndian",ATy(qTy,PTy(FTy 40,qTy)),
4468                    TP[Var("MemType",FTy 3),
4469                       Mop(Cast(FTy 40),Var("vAddr",F64))]),qVar"state"),
4470              Let(TP[bVar"v0",qVar"s"],
4471                  ITE(bVar"cond",
4472                      CS(Apply(Const("LLbit",ATy(qTy,OTy bTy)),qVar"s"),
4473                         [(LO bTy,
4474                           Apply
4475                             (Call
4476                                ("raise'exception",ATy(qTy,PTy(bTy,qTy)),
4477                                 Call
4478                                   ("UNPREDICTABLE",CTy"exception",
4479                                    LS"conditional store: LLbit not set")),
4480                              qVar"s")),(Mop(Some,LF),TP[LF,qVar"s"]),
4481                          (Mop(Some,LT),
4482                           ITE(EQ(Dest
4483                                    ("LLAddr",F64,
4484                                     Apply
4485                                       (Const("CP0",ATy(qTy,CTy"CP0")),
4486                                        qVar"s")),
4487                                  Mop(Cast F64,Var("v",FTy 40))),
4488                               TP[LT,qVar"s"],
4489                               Apply
4490                                 (Call
4491                                    ("raise'exception",
4492                                     ATy(qTy,PTy(bTy,qTy)),
4493                                     Call
4494                                       ("UNPREDICTABLE",CTy"exception",
4495                                        LS
4496                                         "conditional store: address does not match previous LL address")),
4497                                  qVar"s")))]),TP[LF,qVar"s"]),
4498                  Let(qVar"s",
4499                      Apply
4500                        (Call("write'LLbit",ATy(qTy,qTy),LO bTy),qVar"s"),
4501                      Let(qVar"s",
4502                          Mop(Snd,
4503                              Apply
4504                                (For(TP[LN 0,
4505                                        Bop(Sub,
4506                                            Dest("totalCore",nTy,qVar"s"),
4507                                            LN 1),
4508                                        Close
4509                                          (nVar"core",
4510                                           Close
4511                                             (qVar"state",
4512                                              Let(Var("i",F8),
4513                                                  Mop(Cast F8,nVar"core"),
4514                                                  Let(Var("v1",
4515                                                          CTy"procState"),
4516                                                      Apply
4517                                                        (Dest
4518                                                           ("all_state",
4519                                                            ATy(F8,
4520                                                                CTy"procState"),
4521                                                            qVar"state"),
4522                                                         Var("i",F8)),
4523                                                      TP[LU,
4524                                                         ITE(Bop(And,
4525                                                                 Mop(Not,
4526                                                                     EQ(Var("i",
4527                                                                            F8),
4528                                                                        Dest
4529                                                                          ("procID",
4530                                                                           F8,
4531                                                                           qVar"state"))),
4532                                                                 Bop(And,
4533                                                                     Bop(Or,
4534                                                                         Mop(Not,
4535                                                                             bVar"cond"),
4536                                                                         bVar"v0"),
4537                                                                     Bop(And,
4538                                                                         EQ(Dest
4539                                                                              ("c_LLbit",
4540                                                                               OTy bTy,
4541                                                                               Var("v1",
4542                                                                                   CTy"procState")),
4543                                                                            Mop(Some,
4544                                                                                LT)),
4545                                                                         EQ(EX(Dest
4546                                                                                 ("LLAddr",
4547                                                                                  F64,
4548                                                                                  Dest
4549                                                                                    ("c_CP0",
4550                                                                                     CTy"CP0",
4551                                                                                     Var("v1",
4552                                                                                         CTy"procState"))),
4553                                                                               LN
4554                                                                                39,
4555                                                                               LN
4556                                                                                3,
4557                                                                               FTy 37),
4558                                                                            EX(Var("v",
4559                                                                                   FTy 40),
4560                                                                               LN
4561                                                                                39,
4562                                                                               LN
4563                                                                                3,
4564                                                                               FTy 37))))),
4565                                                             Rupd
4566                                                               ("all_state",
4567                                                                TP[qVar"state",
4568                                                                   Fupd
4569                                                                     (Dest
4570                                                                        ("all_state",
4571                                                                         ATy(F8,
4572                                                                             CTy"procState"),
4573                                                                         qVar"state"),
4574                                                                      Var("i",
4575                                                                          F8),
4576                                                                      Rupd
4577                                                                        ("c_LLbit",
4578                                                                         TP[Apply
4579                                                                              (Dest
4580                                                                                 ("all_state",
4581                                                                                  ATy(F8,
4582                                                                                      CTy"procState"),
4583                                                                                  qVar"state"),
4584                                                                               Var("i",
4585                                                                                   F8)),
4586                                                                            Mop(Some,
4587                                                                                LF)]))]),
4588                                                             qVar"state")]))))]),
4589                                 qVar"s")),
4590                          TP[bVar"v0",
4591                             ITE(Bop(Or,Mop(Not,bVar"cond"),bVar"v0"),
4592                                 Let(nVar"x",
4593                                     Bop(Mul,LN 8,
4594                                         Bop(Add,
4595                                             Mop(Cast nTy,
4596                                                 Var("AccessLength",FTy 3)),
4597                                             LN 1)),
4598                                     Apply
4599                                       (Call
4600                                          ("WriteData",ATy(qTy,qTy),
4601                                           TP[EX(Var("v",FTy 40),LN 39,
4602                                                 LN 3,FTy 37),
4603                                              Var("MemElem",F64),
4604                                              Bop(Lsl,
4605                                                  Bop(Sub,
4606                                                      Bop(Lsl,LW(1,64),
4607                                                          nVar"x"),
4608                                                      LW(1,64)),
4609                                                  Bop(Sub,LN 64,
4610                                                      Bop(Add,nVar"x",
4611                                                          Bop(Mul,LN 8,
4612                                                              Mop(Cast nTy,
4613                                                                  EX(Var("vAddr",
4614                                                                         F64),
4615                                                                     LN 2,
4616                                                                     LN 0,
4617                                                                     FTy 3))))))]),
4618                                        qVar"s")),qVar"s")])))))))
4619;
4620val StoreMemory_def = Def
4621  ("StoreMemory",
4622   TP[Var("MemType",FTy 3),Var("AccessLength",FTy 3),bVar"needAlign",
4623      Var("MemElem",F64),Var("vAddr",F64),bVar"cond"],
4624   Close
4625     (qVar"state",
4626      Let(Var("v",CTy"Capability"),
4627          Apply(Call("CAPR",ATy(qTy,CTy"Capability"),LW(0,5)),qVar"state"),
4628          Let(TP[Var("base",F64),Var("len",F64)],
4629              Call
4630                ("getBaseAndLength",PTy(F64,F64),Var("v",CTy"Capability")),
4631              ITB([(Mop(Not,Call("getTag",bTy,Var("v",CTy"Capability"))),
4632                    Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
4633                        Apply
4634                          (Call
4635                             ("next_unknown",
4636                              ATy(qTy,PTy(PTy(nTy,sTy),qTy)),
4637                              LS"sc-success"),
4638                           Apply
4639                             (Call
4640                                ("SignalCapException",ATy(qTy,qTy),
4641                                 TP[LC("capExcTag",CTy"CapExceptionType"),
4642                                    LW(0,5)]),qVar"state")),
4643                        TP[Apply
4644                             (LX(ATy(PTy(nTy,sTy),bTy)),
4645                              Var("v",PTy(nTy,sTy))),qVar"s"])),
4646                   (Call("getSealed",bTy,Var("v",CTy"Capability")),
4647                    Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
4648                        Apply
4649                          (Call
4650                             ("next_unknown",
4651                              ATy(qTy,PTy(PTy(nTy,sTy),qTy)),
4652                              LS"sc-success"),
4653                           Apply
4654                             (Call
4655                                ("SignalCapException",ATy(qTy,qTy),
4656                                 TP[LC("capExcSeal",CTy"CapExceptionType"),
4657                                    LW(0,5)]),qVar"state")),
4658                        TP[Apply
4659                             (LX(ATy(PTy(nTy,sTy),bTy)),
4660                              Var("v",PTy(nTy,sTy))),qVar"s"])),
4661                   (Mop(Not,
4662                        Dest
4663                          ("Permit_Store",bTy,
4664                           Call
4665                             ("getPerms",CTy"Perms",
4666                              Var("v",CTy"Capability")))),
4667                    Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
4668                        Apply
4669                          (Call
4670                             ("next_unknown",
4671                              ATy(qTy,PTy(PTy(nTy,sTy),qTy)),
4672                              LS"sc-success"),
4673                           Apply
4674                             (Call
4675                                ("SignalCapException",ATy(qTy,qTy),
4676                                 TP[LC("capExcPermStore",
4677                                       CTy"CapExceptionType"),LW(0,5)]),
4678                              qVar"state")),
4679                        TP[Apply
4680                             (LX(ATy(PTy(nTy,sTy),bTy)),
4681                              Var("v",PTy(nTy,sTy))),qVar"s"])),
4682                   (Bop(Ult,Var("vAddr",F64),
4683                        Call("getBase",F64,Var("v",CTy"Capability"))),
4684                    Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
4685                        Apply
4686                          (Call
4687                             ("next_unknown",
4688                              ATy(qTy,PTy(PTy(nTy,sTy),qTy)),
4689                              LS"sc-success"),
4690                           Apply
4691                             (Call
4692                                ("SignalCapException",ATy(qTy,qTy),
4693                                 TP[LC("capExcLength",
4694                                       CTy"CapExceptionType"),LW(0,5)]),
4695                              qVar"state")),
4696                        TP[Apply
4697                             (LX(ATy(PTy(nTy,sTy),bTy)),
4698                              Var("v",PTy(nTy,sTy))),qVar"s"])),
4699                   (Bop(Ugt,
4700                        Bop(Add,
4701                            Bop(Add,CC[LW(0,1),Var("vAddr",F64)],
4702                                Mop(Cast(FTy 65),Var("AccessLength",FTy 3))),
4703                            LW(1,65)),
4704                        Bop(Add,CC[LW(0,1),Var("base",F64)],
4705                            CC[LW(0,1),Var("len",F64)])),
4706                    Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
4707                        Apply
4708                          (Call
4709                             ("next_unknown",
4710                              ATy(qTy,PTy(PTy(nTy,sTy),qTy)),
4711                              LS"sc-success"),
4712                           Apply
4713                             (Call
4714                                ("SignalCapException",ATy(qTy,qTy),
4715                                 TP[LC("capExcLength",
4716                                       CTy"CapExceptionType"),LW(0,5)]),
4717                              qVar"state")),
4718                        TP[Apply
4719                             (LX(ATy(PTy(nTy,sTy),bTy)),
4720                              Var("v",PTy(nTy,sTy))),qVar"s"]))],
4721                  Apply
4722                    (Call
4723                       ("StoreMemoryCap",ATy(qTy,PTy(bTy,qTy)),
4724                        TP[Var("MemType",FTy 3),Var("AccessLength",FTy 3),
4725                           Var("MemElem",F64),bVar"needAlign",
4726                           Var("vAddr",F64),bVar"cond"]),qVar"state"))))))
4727;
4728val StoreCap_def = Def
4729  ("StoreCap",TP[Var("vAddr",F64),Var("cap",CTy"Capability"),bVar"cond"],
4730   Close
4731     (qVar"state",
4732      Let(TP[bVar"r",Var("s1",PTy(bTy,qTy))],
4733          Let(Var("s",PTy(bTy,qTy)),
4734              ITE(bVar"cond",
4735                  CS(Apply(Const("LLbit",ATy(qTy,OTy bTy)),qVar"state"),
4736                     [(LO bTy,
4737                       TP[LF,
4738                          Mop(Snd,
4739                              Apply
4740                                (Call
4741                                   ("raise'exception",
4742                                    ATy(qTy,PTy(uTy,qTy)),
4743                                    Call
4744                                      ("UNPREDICTABLE",CTy"exception",
4745                                       LS
4746                                        "conditional store of capability: LLbit not set")),
4747                                 qVar"state"))]),
4748                      (Mop(Some,LF),TP[LF,qVar"state"]),
4749                      (Mop(Some,LT),
4750                       ITE(EQ(Dest
4751                                ("LLAddr",F64,
4752                                 Apply
4753                                   (Const("CP0",ATy(qTy,CTy"CP0")),
4754                                    qVar"state")),Var("vAddr",F64)),
4755                           TP[LT,qVar"state"],
4756                           TP[LF,
4757                              Mop(Snd,
4758                                  Apply
4759                                    (Call
4760                                       ("raise'exception",
4761                                        ATy(qTy,PTy(uTy,qTy)),
4762                                        Call
4763                                          ("UNPREDICTABLE",CTy"exception",
4764                                           LS
4765                                            "conditional store of capability: address does not match previous LL address")),
4766                                     qVar"state"))]))]),TP[LF,qVar"state"]),
4767              Let(qVar"s1",
4768                  Apply
4769                    (Call("write'LLbit",ATy(qTy,qTy),LO bTy),
4770                     Mop(Snd,Var("s",PTy(bTy,qTy)))),
4771                  Let(Var("s",PTy(bTy,qTy)),
4772                      Let(Var("s",PTy(bTy,qTy)),
4773                          Mop(Snd,
4774                              Apply
4775                                (For(TP[LN 0,
4776                                        Bop(Sub,
4777                                            Dest("totalCore",nTy,qVar"s1"),
4778                                            LN 1),
4779                                        Close
4780                                          (nVar"core",
4781                                           Close
4782                                             (Var("state",PTy(bTy,qTy)),
4783                                              Let(Var("i",F8),
4784                                                  Mop(Cast F8,nVar"core"),
4785                                                  Let(Var("v",
4786                                                          CTy"procState"),
4787                                                      Apply
4788                                                        (Dest
4789                                                           ("all_state",
4790                                                            ATy(F8,
4791                                                                CTy"procState"),
4792                                                            Mop(Snd,
4793                                                                Var("state",
4794                                                                    PTy(bTy,
4795                                                                        qTy)))),
4796                                                         Var("i",F8)),
4797                                                      TP[LU,
4798                                                         ITE(Bop(And,
4799                                                                 Mop(Not,
4800                                                                     EQ(Var("i",
4801                                                                            F8),
4802                                                                        Dest
4803                                                                          ("procID",
4804                                                                           F8,
4805                                                                           Mop(Snd,
4806                                                                               Var("state",
4807                                                                                   PTy(bTy,
4808                                                                                       qTy)))))),
4809                                                                 Bop(And,
4810                                                                     Bop(Or,
4811                                                                         Mop(Not,
4812                                                                             bVar"cond"),
4813                                                                         Mop(Fst,
4814                                                                             Var("state",
4815                                                                                 PTy(bTy,
4816                                                                                     qTy)))),
4817                                                                     Bop(And,
4818                                                                         EQ(Dest
4819                                                                              ("c_LLbit",
4820                                                                               OTy bTy,
4821                                                                               Var("v",
4822                                                                                   CTy"procState")),
4823                                                                            Mop(Some,
4824                                                                                LT)),
4825                                                                         EQ(EX(Dest
4826                                                                                 ("LLAddr",
4827                                                                                  F64,
4828                                                                                  Dest
4829                                                                                    ("c_CP0",
4830                                                                                     CTy"CP0",
4831                                                                                     Var("v",
4832                                                                                         CTy"procState"))),
4833                                                                               LN
4834                                                                                39,
4835                                                                               Mop(Log,
4836                                                                                   Const
4837                                                                                     ("CAPBYTEWIDTH",
4838                                                                                      nTy)),
4839                                                                               FTy 35),
4840                                                                            EX(Var("vAddr",
4841                                                                                   F64),
4842                                                                               LN
4843                                                                                39,
4844                                                                               Mop(Log,
4845                                                                                   Const
4846                                                                                     ("CAPBYTEWIDTH",
4847                                                                                      nTy)),
4848                                                                               FTy 35))))),
4849                                                             TP[Mop(Fst,
4850                                                                    Var("state",
4851                                                                        PTy(bTy,
4852                                                                            qTy))),
4853                                                                Rupd
4854                                                                  ("all_state",
4855                                                                   TP[Mop(Snd,
4856                                                                          Var("state",
4857                                                                              PTy(bTy,
4858                                                                                  qTy))),
4859                                                                      Fupd
4860                                                                        (Dest
4861                                                                           ("all_state",
4862                                                                            ATy(F8,
4863                                                                                CTy"procState"),
4864                                                                            Mop(Snd,
4865                                                                                Var("state",
4866                                                                                    PTy(bTy,
4867                                                                                        qTy)))),
4868                                                                         Var("i",
4869                                                                             F8),
4870                                                                         Rupd
4871                                                                           ("c_LLbit",
4872                                                                            TP[Apply
4873                                                                                 (Dest
4874                                                                                    ("all_state",
4875                                                                                     ATy(F8,
4876                                                                                         CTy"procState"),
4877                                                                                     Mop(Snd,
4878                                                                                         Var("state",
4879                                                                                             PTy(bTy,
4880                                                                                                 qTy)))),
4881                                                                                  Var("i",
4882                                                                                      F8)),
4883                                                                               Mop(Some,
4884                                                                                   LF)]))])],
4885                                                             Var("state",
4886                                                                 PTy(bTy,
4887                                                                     qTy)))]))))]),
4888                                 TP[Mop(Fst,Var("s",PTy(bTy,qTy))),
4889                                    qVar"s1"])),
4890                          ITE(Bop(Or,Mop(Not,bVar"cond"),
4891                                  Mop(Fst,Var("s",PTy(bTy,qTy)))),
4892                              TP[Mop(Fst,Var("s",PTy(bTy,qTy))),
4893                                 Apply
4894                                   (Call
4895                                      ("WriteCap",ATy(qTy,qTy),
4896                                       TP[EX(Var("vAddr",F64),LN 39,
4897                                             Mop(Log,
4898                                                 Const("CAPBYTEWIDTH",nTy)),
4899                                             FTy 35),
4900                                          Var("cap",CTy"Capability")]),
4901                                    Mop(Snd,Var("s",PTy(bTy,qTy))))],
4902                              Var("s",PTy(bTy,qTy)))),
4903                      TP[Mop(Fst,Var("s",PTy(bTy,qTy))),
4904                         Var("s",PTy(bTy,qTy))]))),
4905          TP[bVar"r",Mop(Snd,Var("s1",PTy(bTy,qTy)))])))
4906;
4907val Fetch_def = Def
4908  ("Fetch",qVar"state",
4909   Let(Var("v",CTy"CP0"),
4910       Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
4911       Let(TP[Var("v",CTy"CP0"),qVar"s"],
4912           Let(qVar"s0",
4913               Apply
4914                 (Call
4915                    ("write'CP0",ATy(qTy,qTy),
4916                     Rupd
4917                       ("Random",
4918                        TP[Var("v",CTy"CP0"),
4919                           Rupd
4920                             ("Random",
4921                              TP[Dest
4922                                   ("Random",CTy"Random",Var("v",CTy"CP0")),
4923                                 ITE(EQ(Dest
4924                                          ("Random",F8,
4925                                           Dest
4926                                             ("Random",CTy"Random",
4927                                              Apply
4928                                                (Const
4929                                                   ("CP0",
4930                                                    ATy(qTy,CTy"CP0")),
4931                                                 qVar"state"))),
4932                                        Dest
4933                                          ("Wired",F8,
4934                                           Dest
4935                                             ("Wired",CTy"Wired",
4936                                              Apply
4937                                                (Const
4938                                                   ("CP0",
4939                                                    ATy(qTy,CTy"CP0")),
4940                                                 qVar"state")))),
4941                                     Mop(Cast F8,
4942                                         Bop(Sub,
4943                                             Const("TLBAssocEntries",nTy),
4944                                             LN 1)),
4945                                     Bop(Sub,
4946                                         Dest
4947                                           ("Random",F8,
4948                                            Dest
4949                                              ("Random",CTy"Random",
4950                                               Apply
4951                                                 (Const
4952                                                    ("CP0",
4953                                                     ATy(qTy,CTy"CP0")),
4954                                                  qVar"state"))),LW(1,8)))])])),
4955                  qVar"state"),
4956               TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"),qVar"s0"]),
4957           Let(TP[Var("v",CTy"CP0"),qVar"s"],
4958               Let(qVar"s0",
4959                   ITE(EQ(Dest("Compare",F32,Var("v",CTy"CP0")),
4960                          Dest
4961                            ("Count",F32,
4962                             Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s"))),
4963                       Let(Var("v",CTy"CP0"),
4964                           Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s"),
4965                           Let(TP[Var("v",CTy"CP0"),qVar"s"],
4966                               Let(qVar"s0",
4967                                   Let(Var("x0",CTy"CauseRegister"),
4968                                       Dest
4969                                         ("Cause",CTy"CauseRegister",
4970                                          Var("v",CTy"CP0")),
4971                                       Apply
4972                                         (Call
4973                                            ("write'CP0",ATy(qTy,qTy),
4974                                             Rupd
4975                                               ("Cause",
4976                                                TP[Var("v",CTy"CP0"),
4977                                                   Rupd
4978                                                     ("IP",
4979                                                      TP[Var("x0",
4980                                                             CTy"CauseRegister"),
4981                                                         BFI(LN 7,LN 7,
4982                                                             Mop(Cast F1,
4983                                                                 LT),
4984                                                             Dest
4985                                                               ("IP",F8,
4986                                                                Var("x0",
4987                                                                    CTy"CauseRegister")))])])),
4988                                          qVar"s")),
4989                                   TP[Apply
4990                                        (Const("CP0",ATy(qTy,CTy"CP0")),
4991                                         qVar"s0"),qVar"s0"]),
4992                               Apply
4993                                 (Call
4994                                    ("write'CP0",ATy(qTy,qTy),
4995                                     Rupd
4996                                       ("Cause",
4997                                        TP[Var("v",CTy"CP0"),
4998                                           Rupd
4999                                             ("TI",
5000                                              TP[Dest
5001                                                   ("Cause",
5002                                                    CTy"CauseRegister",
5003                                                    Var("v",CTy"CP0")),LT])])),
5004                                  qVar"s"))),qVar"s"),
5005                   TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"),
5006                      qVar"s0"]),
5007               Let(TP[bVar"v",qVar"s"],
5008                   Let(qVar"s0",
5009                       ITE(Bop(And,
5010                               Dest
5011                                 ("IE",bTy,
5012                                  Dest
5013                                    ("Status",CTy"StatusRegister",
5014                                     Var("v",CTy"CP0"))),
5015                               Mop(Not,
5016                                   Bop(Or,
5017                                       Dest
5018                                         ("EXL",bTy,
5019                                          Dest
5020                                            ("Status",CTy"StatusRegister",
5021                                             Apply
5022                                               (Const
5023                                                  ("CP0",ATy(qTy,CTy"CP0")),
5024                                                qVar"s"))),
5025                                       Dest
5026                                         ("ERL",bTy,
5027                                          Dest
5028                                            ("Status",CTy"StatusRegister",
5029                                             Apply
5030                                               (Const
5031                                                  ("CP0",ATy(qTy,CTy"CP0")),
5032                                                qVar"s")))))),
5033                           ITE(Mop(Not,
5034                                   EQ(Bop(BAnd,
5035                                          EX(Dest
5036                                               ("IM",F8,
5037                                                Dest
5038                                                  ("Status",
5039                                                   CTy"StatusRegister",
5040                                                   Apply
5041                                                     (Const
5042                                                        ("CP0",
5043                                                         ATy(qTy,CTy"CP0")),
5044                                                      qVar"s"))),LN 7,
5045                                             LN 2,FTy 6),
5046                                          EX(Dest
5047                                               ("IP",F8,
5048                                                Dest
5049                                                  ("Cause",
5050                                                   CTy"CauseRegister",
5051                                                   Apply
5052                                                     (Const
5053                                                        ("CP0",
5054                                                         ATy(qTy,CTy"CP0")),
5055                                                      qVar"s"))),LN 7,
5056                                             LN 2,FTy 6)),LW(0,6))),
5057                               Apply
5058                                 (Call
5059                                    ("SignalException",ATy(qTy,qTy),
5060                                     LC("Int",CTy"ExceptionType")),qVar"s"),
5061                               qVar"s"),qVar"s"),
5062                       TP[Apply
5063                            (Const("exceptionSignalled",ATy(qTy,bTy)),
5064                             qVar"s0"),qVar"s0"]),
5065                   ITB([(bVar"v",TP[LO F32,qVar"s"]),
5066                        (EQ(EX(Apply(Const("PC",ATy(qTy,F64)),qVar"s"),
5067                               LN 1,LN 0,FTy 2),LW(0,2)),
5068                         Let(Var("v",F64),
5069                             Bop(Add,
5070                                 Apply(Const("PC",ATy(qTy,F64)),qVar"s"),
5071                                 Call
5072                                   ("getBase",F64,
5073                                    Apply
5074                                      (Const
5075                                         ("PCC",ATy(qTy,CTy"Capability")),
5076                                       qVar"s"))),
5077                             ITB([(Mop(Not,
5078                                       Call
5079                                         ("getTag",bTy,
5080                                          Apply
5081                                            (Const
5082                                               ("PCC",
5083                                                ATy(qTy,CTy"Capability")),
5084                                             qVar"s"))),
5085                                   TP[LO F32,
5086                                      Apply
5087                                        (Call
5088                                           ("SignalCapException_noReg",
5089                                            ATy(qTy,qTy),
5090                                            LC("capExcTag",
5091                                               CTy"CapExceptionType")),
5092                                         qVar"s")]),
5093                                  (Call
5094                                     ("getSealed",bTy,
5095                                      Apply
5096                                        (Const
5097                                           ("PCC",ATy(qTy,CTy"Capability")),
5098                                         qVar"s")),
5099                                   TP[LO F32,
5100                                      Apply
5101                                        (Call
5102                                           ("SignalCapException_noReg",
5103                                            ATy(qTy,qTy),
5104                                            LC("capExcSeal",
5105                                               CTy"CapExceptionType")),
5106                                         qVar"s")]),
5107                                  (Bop(Ult,Var("v",F64),
5108                                       Call
5109                                         ("getBase",F64,
5110                                          Apply
5111                                            (Const
5112                                               ("PCC",
5113                                                ATy(qTy,CTy"Capability")),
5114                                             qVar"s"))),
5115                                   TP[LO F32,
5116                                      Apply
5117                                        (Call
5118                                           ("SignalCapException_noReg",
5119                                            ATy(qTy,qTy),
5120                                            LC("capExcLength",
5121                                               CTy"CapExceptionType")),
5122                                         qVar"s")]),
5123                                  (Bop(Ugt,
5124                                       Bop(Add,CC[LW(0,1),Var("v",F64)],
5125                                           LW(4,65)),
5126                                       Bop(Add,
5127                                           Mop(Cast(FTy 65),
5128                                               Call
5129                                                 ("getBase",F64,
5130                                                  Apply
5131                                                    (Const
5132                                                       ("PCC",
5133                                                        ATy(qTy,
5134                                                            CTy"Capability")),
5135                                                     qVar"s"))),
5136                                           Mop(Cast(FTy 65),
5137                                               Call
5138                                                 ("getLength",F64,
5139                                                  Apply
5140                                                    (Const
5141                                                       ("PCC",
5142                                                        ATy(qTy,
5143                                                            CTy"Capability")),
5144                                                     qVar"s"))))),
5145                                   TP[LO F32,
5146                                      Apply
5147                                        (Call
5148                                           ("SignalCapException_noReg",
5149                                            ATy(qTy,qTy),
5150                                            LC("capExcLength",
5151                                               CTy"CapExceptionType")),
5152                                         qVar"s")]),
5153                                  (Mop(Not,
5154                                       Dest
5155                                         ("Permit_Execute",bTy,
5156                                          Call
5157                                            ("getPerms",CTy"Perms",
5158                                             Apply
5159                                               (Const
5160                                                  ("PCC",
5161                                                   ATy(qTy,CTy"Capability")),
5162                                                qVar"s")))),
5163                                   TP[LO F32,
5164                                      Apply
5165                                        (Call
5166                                           ("SignalCapException_noReg",
5167                                            ATy(qTy,qTy),
5168                                            LC("capExcPermExe",
5169                                               CTy"CapExceptionType")),
5170                                         qVar"s")])],
5171                                 TP[ITE(Apply
5172                                          (Const
5173                                             ("exceptionSignalled",
5174                                              ATy(qTy,bTy)),qVar"s"),
5175                                        LO F32,
5176                                        Mop(Some,
5177                                            Apply
5178                                              (Call
5179                                                 ("ReadInst",ATy(qTy,F32),
5180                                                  Mop(Cast(FTy 40),
5181                                                      Var("v",F64))),
5182                                               qVar"s"))),qVar"s"])))],
5183                       TP[LO F32,
5184                          Apply
5185                            (Call
5186                               ("SignalException",ATy(qTy,qTy),
5187                                LC("AdEL",CTy"ExceptionType")),
5188                             Apply
5189                               (Call
5190                                  ("write'CP0",ATy(qTy,qTy),
5191                                   Rupd
5192                                     ("BadVAddr",
5193                                      TP[Apply
5194                                           (Const("CP0",ATy(qTy,CTy"CP0")),
5195                                            qVar"s"),
5196                                         Bop(Add,
5197                                             Call
5198                                               ("getBase",F64,
5199                                                Apply
5200                                                  (Const
5201                                                     ("PCC",
5202                                                      ATy(qTy,
5203                                                          CTy"Capability")),
5204                                                   qVar"s")),
5205                                             Apply
5206                                               (Const("PC",ATy(qTy,F64)),
5207                                                qVar"s"))])),qVar"s"))]))))))
5208;
5209val PSIZE_def = Def0 ("PSIZE",LN 40)
5210;
5211val switchCore_def = Def
5212  ("switchCore",nVar"n",
5213   Close
5214     (qVar"state",
5215      Let(nVar"v",Mop(Cast nTy,Dest("procID",F8,qVar"state")),
5216          TP[nVar"v",
5217             ITE(Mop(Not,EQ(nVar"n",nVar"v")),
5218                 Let(Var("i",F8),Mop(Cast F8,nVar"n"),
5219                     Let(qVar"s",
5220                         Apply
5221                           (Call("switchCoreCAP",ATy(qTy,qTy),Var("i",F8)),
5222                            Apply
5223                              (Call
5224                                 ("switchCoreTLB",ATy(qTy,qTy),Var("i",F8)),
5225                               qVar"state")),
5226                         Let(qVar"s",
5227                             Rupd
5228                               ("all_gpr",
5229                                TP[qVar"s",
5230                                   Fupd
5231                                     (Dest
5232                                        ("all_gpr",ATy(F8,ATy(FTy 5,F64)),
5233                                         qVar"s"),
5234                                      Dest("procID",F8,qVar"s"),
5235                                      Dest("c_gpr",ATy(FTy 5,F64),qVar"s"))]),
5236                             Let(qVar"s",
5237                                 Rupd
5238                                   ("all_state",
5239                                    TP[qVar"s",
5240                                       Fupd
5241                                         (Dest
5242                                            ("all_state",
5243                                             ATy(F8,CTy"procState"),
5244                                             qVar"s"),
5245                                          Dest("procID",F8,qVar"s"),
5246                                          Dest
5247                                            ("c_state",CTy"procState",
5248                                             qVar"s"))]),
5249                                 Let(qVar"s",
5250                                     Rupd
5251                                       ("c_gpr",
5252                                        TP[qVar"s",
5253                                           Apply
5254                                             (Dest
5255                                                ("all_gpr",
5256                                                 ATy(F8,ATy(FTy 5,F64)),
5257                                                 qVar"s"),Var("i",F8))]),
5258                                     Rupd
5259                                       ("procID",
5260                                        TP[Rupd
5261                                             ("c_state",
5262                                              TP[qVar"s",
5263                                                 Apply
5264                                                   (Dest
5265                                                      ("all_state",
5266                                                       ATy(F8,
5267                                                           CTy"procState"),
5268                                                       qVar"s"),
5269                                                    Var("i",F8))]),
5270                                           Var("i",F8)])))))),qVar"state")])))
5271;
5272val resetStats_def = Def
5273  ("resetStats",qVar"state",
5274   Apply(Const("initCoreStats",ATy(qTy,qTy)),qVar"state"))
5275;
5276val dumpStats_def = Def
5277  ("dumpStats",TP[nVar"inst",sVar"ips",Var("fmt",OTy sTy)],LS"")
5278;
5279val clearDynamicStats_def = Def ("clearDynamicStats",AVar uTy,LU)
5280;
5281val HI_def = Def
5282  ("HI",qVar"state",
5283   CS(Apply(Const("hi",ATy(qTy,OTy F64)),qVar"state"),
5284      [(Mop(Some,Var("v",F64)),TP[Var("v",F64),qVar"state"]),
5285       (LO F64,
5286        Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
5287            Apply
5288              (Call
5289                 ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)),LS"hi-reg"),
5290               qVar"state"),
5291            TP[Apply(LX(ATy(PTy(nTy,sTy),F64)),Var("v",PTy(nTy,sTy))),
5292               qVar"s"]))]))
5293;
5294val write'HI_def = Def
5295  ("write'HI",Var("value",F64),
5296   Close
5297     (qVar"state",
5298      Apply
5299        (Call("write'hi",ATy(qTy,qTy),Mop(Some,Var("value",F64))),
5300         qVar"state")))
5301;
5302val LO_def = Def
5303  ("LO",qVar"state",
5304   CS(Apply(Const("lo",ATy(qTy,OTy F64)),qVar"state"),
5305      [(Mop(Some,Var("v",F64)),TP[Var("v",F64),qVar"state"]),
5306       (LO F64,
5307        Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
5308            Apply
5309              (Call
5310                 ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)),LS"lo-reg"),
5311               qVar"state"),
5312            TP[Apply(LX(ATy(PTy(nTy,sTy),F64)),Var("v",PTy(nTy,sTy))),
5313               qVar"s"]))]))
5314;
5315val write'LO_def = Def
5316  ("write'LO",Var("value",F64),
5317   Close
5318     (qVar"state",
5319      Apply
5320        (Call("write'lo",ATy(qTy,qTy),Mop(Some,Var("value",F64))),
5321         qVar"state")))
5322;
5323val CPR_def = Def
5324  ("CPR",TP[nVar"n",Var("reg",FTy 5),Var("sel",FTy 3)],
5325   Close
5326     (qVar"state",
5327      CS(TP[nVar"n",Var("reg",FTy 5),Var("sel",FTy 3)],
5328         [(TP[LN 0,LW(0,5),LW(0,3)],
5329           TP[Mop(Cast F64,
5330                  Call
5331                    ("reg'Index",F32,
5332                     Dest
5333                       ("Index",CTy"Index",
5334                        Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
5335              qVar"state"]),
5336          (TP[LN 0,LW(1,5),LW(0,3)],
5337           TP[Mop(Cast F64,
5338                  Call
5339                    ("reg'Random",F32,
5340                     Dest
5341                       ("Random",CTy"Random",
5342                        Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
5343              qVar"state"]),
5344          (TP[LN 0,LW(2,5),LW(0,3)],
5345           TP[Call
5346                ("reg'EntryLo",F64,
5347                 Dest
5348                   ("EntryLo0",CTy"EntryLo",
5349                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
5350              qVar"state"]),
5351          (TP[LN 0,LW(3,5),LW(0,3)],
5352           TP[Call
5353                ("reg'EntryLo",F64,
5354                 Dest
5355                   ("EntryLo1",CTy"EntryLo",
5356                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
5357              qVar"state"]),
5358          (TP[LN 0,LW(4,5),LW(0,3)],
5359           TP[Call
5360                ("reg'Context",F64,
5361                 Dest
5362                   ("Context",CTy"Context",
5363                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
5364              qVar"state"]),
5365          (TP[LN 0,LW(4,5),LW(2,3)],
5366           TP[Dest
5367                ("UsrLocal",F64,
5368                 Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")),
5369              qVar"state"]),
5370          (TP[LN 0,LW(5,5),LW(0,3)],
5371           TP[Mop(Cast F64,
5372                  Call
5373                    ("reg'PageMask",F32,
5374                     Dest
5375                       ("PageMask",CTy"PageMask",
5376                        Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
5377              qVar"state"]),
5378          (TP[LN 0,LW(6,5),LW(0,3)],
5379           TP[Mop(Cast F64,
5380                  Call
5381                    ("reg'Wired",F32,
5382                     Dest
5383                       ("Wired",CTy"Wired",
5384                        Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
5385              qVar"state"]),
5386          (TP[LN 0,LW(7,5),LW(0,3)],
5387           TP[Mop(Cast F64,
5388                  Call
5389                    ("reg'HWREna",F32,
5390                     Dest
5391                       ("HWREna",CTy"HWREna",
5392                        Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
5393              qVar"state"]),
5394          (TP[LN 0,LW(8,5),LW(0,3)],
5395           TP[Dest
5396                ("BadVAddr",F64,
5397                 Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")),
5398              qVar"state"]),
5399          (TP[LN 0,LW(8,5),LW(1,3)],
5400           TP[Mop(Cast F64,
5401                  Dest
5402                    ("EInstr",F32,
5403                     Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
5404              qVar"state"]),
5405          (TP[LN 0,LW(9,5),LW(0,3)],
5406           TP[Mop(Cast F64,
5407                  Dest
5408                    ("Count",F32,
5409                     Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
5410              qVar"state"]),
5411          (TP[LN 0,LW(10,5),LW(0,3)],
5412           TP[Call
5413                ("reg'EntryHi",F64,
5414                 Dest
5415                   ("EntryHi",CTy"EntryHi",
5416                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
5417              qVar"state"]),
5418          (TP[LN 0,LW(11,5),LW(0,3)],
5419           TP[Mop(Cast F64,
5420                  Dest
5421                    ("Compare",F32,
5422                     Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
5423              qVar"state"]),
5424          (TP[LN 0,LW(12,5),LW(0,3)],
5425           TP[Mop(Cast F64,
5426                  Call
5427                    ("reg'StatusRegister",F32,
5428                     Dest
5429                       ("Status",CTy"StatusRegister",
5430                        Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
5431              qVar"state"]),
5432          (TP[LN 0,LW(13,5),LW(0,3)],
5433           TP[Mop(Cast F64,
5434                  Call
5435                    ("reg'CauseRegister",F32,
5436                     Dest
5437                       ("Cause",CTy"CauseRegister",
5438                        Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
5439              qVar"state"]),
5440          (TP[LN 0,LW(14,5),LW(0,3)],
5441           TP[Dest
5442                ("EPC",F64,
5443                 Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")),
5444              qVar"state"]),
5445          (TP[LN 0,LW(15,5),LW(0,3)],
5446           TP[Mop(Cast F64,
5447                  Dest
5448                    ("PRId",F32,
5449                     Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
5450              qVar"state"]),
5451          (TP[LN 0,LW(15,5),LW(1,3)],
5452           TP[Mop(Cast F64,
5453                  CC[Mop(Cast F16,
5454                         Bop(Sub,Dest("totalCore",nTy,qVar"state"),LN 1)),
5455                     Mop(Cast F16,Dest("procID",F8,qVar"state"))]),
5456              qVar"state"]),
5457          (TP[LN 0,LW(15,5),LW(6,3)],
5458           TP[Mop(Cast F64,
5459                  CC[Mop(Cast F16,
5460                         Bop(Sub,Dest("totalCore",nTy,qVar"state"),LN 1)),
5461                     Mop(Cast F16,Dest("procID",F8,qVar"state"))]),
5462              qVar"state"]),
5463          (TP[LN 0,LW(16,5),LW(0,3)],
5464           TP[Mop(Cast F64,
5465                  Call
5466                    ("reg'ConfigRegister",F32,
5467                     Dest
5468                       ("Config",CTy"ConfigRegister",
5469                        Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
5470              qVar"state"]),
5471          (TP[LN 0,LW(16,5),LW(1,3)],
5472           TP[Mop(Cast F64,
5473                  Call
5474                    ("reg'ConfigRegister1",F32,
5475                     Dest
5476                       ("Config1",CTy"ConfigRegister1",
5477                        Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
5478              qVar"state"]),
5479          (TP[LN 0,LW(16,5),LW(2,3)],
5480           TP[Mop(Cast F64,
5481                  Call
5482                    ("reg'ConfigRegister2",F32,
5483                     Dest
5484                       ("Config2",CTy"ConfigRegister2",
5485                        Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
5486              qVar"state"]),
5487          (TP[LN 0,LW(16,5),LW(3,3)],
5488           TP[Mop(Cast F64,
5489                  Call
5490                    ("reg'ConfigRegister3",F32,
5491                     Dest
5492                       ("Config3",CTy"ConfigRegister3",
5493                        Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
5494              qVar"state"]),
5495          (TP[LN 0,LW(16,5),LW(4,3)],TP[LW(1,64),qVar"state"]),
5496          (TP[LN 0,LW(16,5),LW(5,3)],TP[LW(1,64),qVar"state"]),
5497          (TP[LN 0,LW(16,5),LW(6,3)],
5498           TP[Mop(Cast F64,
5499                  Call
5500                    ("reg'ConfigRegister6",F32,
5501                     Dest
5502                       ("Config6",CTy"ConfigRegister6",
5503                        Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
5504              qVar"state"]),
5505          (TP[LN 0,LW(17,5),LW(0,3)],
5506           TP[Dest
5507                ("LLAddr",F64,
5508                 Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")),
5509              qVar"state"]),
5510          (TP[LN 0,LW(20,5),LW(0,3)],
5511           TP[Call
5512                ("reg'XContext",F64,
5513                 Dest
5514                   ("XContext",CTy"XContext",
5515                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
5516              qVar"state"]),
5517          (TP[LN 0,LW(23,5),LW(0,3)],
5518           TP[Mop(Cast F64,
5519                  Dest
5520                    ("Debug",F32,
5521                     Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
5522              qVar"state"]),
5523          (TP[LN 0,LW(26,5),LW(0,3)],
5524           TP[Mop(Cast F64,
5525                  Dest
5526                    ("ErrCtl",F32,
5527                     Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
5528              qVar"state"]),
5529          (TP[LN 0,LW(30,5),LW(0,3)],
5530           TP[Dest
5531                ("ErrorEPC",F64,
5532                 Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")),
5533              qVar"state"]),
5534          (AVar(PTy(nTy,PTy(FTy 5,FTy 3))),
5535           Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
5536               Apply
5537                 (Call
5538                    ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)),
5539                     LS"cop-reg"),qVar"state"),
5540               TP[Apply(LX(ATy(PTy(nTy,sTy),F64)),Var("v",PTy(nTy,sTy))),
5541                  qVar"s"]))])))
5542;
5543val write'CPR_def = Def
5544  ("write'CPR",
5545   TP[Var("value",F64),nVar"n",Var("reg",FTy 5),Var("sel",FTy 3)],
5546   Close
5547     (qVar"state",
5548      CS(TP[nVar"n",Var("reg",FTy 5),Var("sel",FTy 3)],
5549         [(TP[LN 0,LW(0,5),LW(0,3)],
5550           Let(Var("v",CTy"CP0"),
5551               Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
5552               Apply
5553                 (Call
5554                    ("write'CP0",ATy(qTy,qTy),
5555                     Rupd
5556                       ("Index",
5557                        TP[Var("v",CTy"CP0"),
5558                           Rupd
5559                             ("Index",
5560                              TP[Dest
5561                                   ("Index",CTy"Index",Var("v",CTy"CP0")),
5562                                 EX(Var("value",F64),LN 8,LN 0,FTy 9)])])),
5563                  qVar"state"))),
5564          (TP[LN 0,LW(2,5),LW(0,3)],
5565           Let(Var("v",CTy"CP0"),
5566               Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
5567               Apply
5568                 (Call
5569                    ("write'CP0",ATy(qTy,qTy),
5570                     Rupd
5571                       ("EntryLo0",
5572                        TP[Var("v",CTy"CP0"),
5573                           Call
5574                             ("write'reg'EntryLo",CTy"EntryLo",
5575                              TP[Dest
5576                                   ("EntryLo0",CTy"EntryLo",
5577                                    Var("v",CTy"CP0")),Var("value",F64)])])),
5578                  qVar"state"))),
5579          (TP[LN 0,LW(3,5),LW(0,3)],
5580           Let(Var("v",CTy"CP0"),
5581               Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
5582               Apply
5583                 (Call
5584                    ("write'CP0",ATy(qTy,qTy),
5585                     Rupd
5586                       ("EntryLo1",
5587                        TP[Var("v",CTy"CP0"),
5588                           Call
5589                             ("write'reg'EntryLo",CTy"EntryLo",
5590                              TP[Dest
5591                                   ("EntryLo1",CTy"EntryLo",
5592                                    Var("v",CTy"CP0")),Var("value",F64)])])),
5593                  qVar"state"))),
5594          (TP[LN 0,LW(4,5),LW(0,3)],
5595           Let(Var("v",CTy"CP0"),
5596               Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
5597               Apply
5598                 (Call
5599                    ("write'CP0",ATy(qTy,qTy),
5600                     Rupd
5601                       ("Context",
5602                        TP[Var("v",CTy"CP0"),
5603                           Rupd
5604                             ("PTEBase",
5605                              TP[Dest
5606                                   ("Context",CTy"Context",
5607                                    Var("v",CTy"CP0")),
5608                                 EX(Var("value",F64),LN 63,LN 23,FTy 41)])])),
5609                  qVar"state"))),
5610          (TP[LN 0,LW(4,5),LW(2,3)],
5611           Apply
5612             (Call
5613                ("write'CP0",ATy(qTy,qTy),
5614                 Rupd
5615                   ("UsrLocal",
5616                    TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
5617                       Var("value",F64)])),qVar"state")),
5618          (TP[LN 0,LW(5,5),LW(0,3)],
5619           Let(Var("v",CTy"CP0"),
5620               Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
5621               Apply
5622                 (Call
5623                    ("write'CP0",ATy(qTy,qTy),
5624                     Rupd
5625                       ("PageMask",
5626                        TP[Var("v",CTy"CP0"),
5627                           Rupd
5628                             ("Mask",
5629                              TP[Dest
5630                                   ("PageMask",CTy"PageMask",
5631                                    Var("v",CTy"CP0")),
5632                                 EX(Var("value",F64),LN 24,LN 13,FTy 12)])])),
5633                  qVar"state"))),
5634          (TP[LN 0,LW(6,5),LW(0,3)],
5635           Let(Var("v",CTy"CP0"),
5636               Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
5637               Let(TP[Var("v",CTy"CP0"),qVar"s"],
5638                   Let(qVar"s0",
5639                       Apply
5640                         (Call
5641                            ("write'CP0",ATy(qTy,qTy),
5642                             Rupd
5643                               ("Wired",
5644                                TP[Var("v",CTy"CP0"),
5645                                   Rupd
5646                                     ("Wired",
5647                                      TP[Dest
5648                                           ("Wired",CTy"Wired",
5649                                            Var("v",CTy"CP0")),
5650                                         EX(Var("value",F64),LN 7,LN 0,F8)])])),
5651                          qVar"state"),
5652                       TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"),
5653                          qVar"s0"]),
5654                   Apply
5655                     (Call
5656                        ("write'CP0",ATy(qTy,qTy),
5657                         Rupd
5658                           ("Random",
5659                            TP[Var("v",CTy"CP0"),
5660                               Rupd
5661                                 ("Random",
5662                                  TP[Dest
5663                                       ("Random",CTy"Random",
5664                                        Var("v",CTy"CP0")),
5665                                     Mop(Cast F8,
5666                                         Bop(Sub,
5667                                             Const("TLBAssocEntries",nTy),
5668                                             LN 1))])])),qVar"s")))),
5669          (TP[LN 0,LW(7,5),LW(0,3)],
5670           Let(Var("v",CTy"CP0"),
5671               Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
5672               Let(TP[Var("v",CTy"CP0"),qVar"s"],
5673                   Let(qVar"s0",
5674                       Apply
5675                         (Call
5676                            ("write'CP0",ATy(qTy,qTy),
5677                             Rupd
5678                               ("HWREna",
5679                                TP[Var("v",CTy"CP0"),
5680                                   Rupd
5681                                     ("CPUNum",
5682                                      TP[Dest
5683                                           ("HWREna",CTy"HWREna",
5684                                            Var("v",CTy"CP0")),
5685                                         Bop(Bit,Var("value",F64),LN 0)])])),
5686                          qVar"state"),
5687                       TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"),
5688                          qVar"s0"]),
5689                   Let(TP[Var("v",CTy"CP0"),qVar"s"],
5690                       Let(qVar"s0",
5691                           Apply
5692                             (Call
5693                                ("write'CP0",ATy(qTy,qTy),
5694                                 Rupd
5695                                   ("HWREna",
5696                                    TP[Var("v",CTy"CP0"),
5697                                       Rupd
5698                                         ("CC",
5699                                          TP[Dest
5700                                               ("HWREna",CTy"HWREna",
5701                                                Var("v",CTy"CP0")),
5702                                             Bop(Bit,Var("value",F64),LN 2)])])),
5703                              qVar"s"),
5704                           TP[Apply
5705                                (Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"),
5706                              qVar"s0"]),
5707                       Let(TP[Var("v",CTy"CP0"),qVar"s"],
5708                           Let(qVar"s0",
5709                               Apply
5710                                 (Call
5711                                    ("write'CP0",ATy(qTy,qTy),
5712                                     Rupd
5713                                       ("HWREna",
5714                                        TP[Var("v",CTy"CP0"),
5715                                           Rupd
5716                                             ("CCRes",
5717                                              TP[Dest
5718                                                   ("HWREna",CTy"HWREna",
5719                                                    Var("v",CTy"CP0")),
5720                                                 Bop(Bit,Var("value",F64),
5721                                                     LN 3)])])),qVar"s"),
5722                               TP[Apply
5723                                    (Const("CP0",ATy(qTy,CTy"CP0")),
5724                                     qVar"s0"),qVar"s0"]),
5725                           Let(TP[Var("v",CTy"CP0"),qVar"s"],
5726                               Let(qVar"s0",
5727                                   Apply
5728                                     (Call
5729                                        ("write'CP0",ATy(qTy,qTy),
5730                                         Rupd
5731                                           ("HWREna",
5732                                            TP[Var("v",CTy"CP0"),
5733                                               Rupd
5734                                                 ("RS",
5735                                                  TP[Dest
5736                                                       ("HWREna",
5737                                                        CTy"HWREna",
5738                                                        Var("v",CTy"CP0")),
5739                                                     Bop(Bit,
5740                                                         Var("value",F64),
5741                                                         LN 27)])])),
5742                                      qVar"s"),
5743                                   TP[Apply
5744                                        (Const("CP0",ATy(qTy,CTy"CP0")),
5745                                         qVar"s0"),qVar"s0"]),
5746                               Let(TP[Var("v",CTy"CP0"),qVar"s"],
5747                                   Let(qVar"s0",
5748                                       Apply
5749                                         (Call
5750                                            ("write'CP0",ATy(qTy,qTy),
5751                                             Rupd
5752                                               ("HWREna",
5753                                                TP[Var("v",CTy"CP0"),
5754                                                   Rupd
5755                                                     ("DS",
5756                                                      TP[Dest
5757                                                           ("HWREna",
5758                                                            CTy"HWREna",
5759                                                            Var("v",
5760                                                                CTy"CP0")),
5761                                                         Bop(Bit,
5762                                                             Var("value",
5763                                                                 F64),
5764                                                             LN 28)])])),
5765                                          qVar"s"),
5766                                       TP[Apply
5767                                            (Const
5768                                               ("CP0",ATy(qTy,CTy"CP0")),
5769                                             qVar"s0"),qVar"s0"]),
5770                                   Apply
5771                                     (Call
5772                                        ("write'CP0",ATy(qTy,qTy),
5773                                         Rupd
5774                                           ("HWREna",
5775                                            TP[Var("v",CTy"CP0"),
5776                                               Rupd
5777                                                 ("UL",
5778                                                  TP[Dest
5779                                                       ("HWREna",
5780                                                        CTy"HWREna",
5781                                                        Var("v",CTy"CP0")),
5782                                                     Bop(Bit,
5783                                                         Var("value",F64),
5784                                                         LN 29)])])),
5785                                      qVar"s")))))))),
5786          (TP[LN 0,LW(9,5),LW(0,3)],
5787           Apply
5788             (Call
5789                ("write'CP0",ATy(qTy,qTy),
5790                 Rupd
5791                   ("Count",
5792                    TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
5793                       EX(Var("value",F64),LN 31,LN 0,F32)])),qVar"state")),
5794          (TP[LN 0,LW(10,5),LW(0,3)],
5795           Let(Var("v",CTy"CP0"),
5796               Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
5797               Apply
5798                 (Call
5799                    ("write'CP0",ATy(qTy,qTy),
5800                     Rupd
5801                       ("EntryHi",
5802                        TP[Var("v",CTy"CP0"),
5803                           Call
5804                             ("write'reg'EntryHi",CTy"EntryHi",
5805                              TP[Dest
5806                                   ("EntryHi",CTy"EntryHi",
5807                                    Var("v",CTy"CP0")),Var("value",F64)])])),
5808                  qVar"state"))),
5809          (TP[LN 0,LW(11,5),LW(0,3)],
5810           Let(TP[Var("v",CTy"CP0"),qVar"s"],
5811               Let(qVar"s0",
5812                   Apply
5813                     (Call
5814                        ("write'CP0",ATy(qTy,qTy),
5815                         Rupd
5816                           ("Compare",
5817                            TP[Apply
5818                                 (Const("CP0",ATy(qTy,CTy"CP0")),
5819                                  qVar"state"),
5820                               EX(Var("value",F64),LN 31,LN 0,F32)])),
5821                      qVar"state"),
5822                   TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"),
5823                      qVar"s0"]),
5824               Let(TP[Var("v",CTy"CP0"),qVar"s"],
5825                   Let(qVar"s0",
5826                       Let(Var("x0",CTy"CauseRegister"),
5827                           Dest
5828                             ("Cause",CTy"CauseRegister",Var("v",CTy"CP0")),
5829                           Apply
5830                             (Call
5831                                ("write'CP0",ATy(qTy,qTy),
5832                                 Rupd
5833                                   ("Cause",
5834                                    TP[Var("v",CTy"CP0"),
5835                                       Rupd
5836                                         ("IP",
5837                                          TP[Var("x0",CTy"CauseRegister"),
5838                                             BFI(LN 7,LN 7,
5839                                                 Mop(Cast F1,LF),
5840                                                 Dest
5841                                                   ("IP",F8,
5842                                                    Var("x0",
5843                                                        CTy"CauseRegister")))])])),
5844                              qVar"s")),
5845                       TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"),
5846                          qVar"s0"]),
5847                   Apply
5848                     (Call
5849                        ("write'CP0",ATy(qTy,qTy),
5850                         Rupd
5851                           ("Cause",
5852                            TP[Var("v",CTy"CP0"),
5853                               Rupd
5854                                 ("TI",
5855                                  TP[Dest
5856                                       ("Cause",CTy"CauseRegister",
5857                                        Var("v",CTy"CP0")),LF])])),qVar"s")))),
5858          (TP[LN 0,LW(12,5),LW(0,3)],
5859           Let(Var("v",CTy"CP0"),
5860               Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
5861               Apply
5862                 (Call
5863                    ("write'CP0",ATy(qTy,qTy),
5864                     Rupd
5865                       ("Status",
5866                        TP[Var("v",CTy"CP0"),
5867                           Call
5868                             ("write'reg'StatusRegister",
5869                              CTy"StatusRegister",
5870                              TP[Dest
5871                                   ("Status",CTy"StatusRegister",
5872                                    Var("v",CTy"CP0")),
5873                                 EX(Var("value",F64),LN 31,LN 0,F32)])])),
5874                  qVar"state"))),
5875          (TP[LN 0,LW(13,5),LW(0,3)],
5876           Let(Var("v",CTy"CP0"),
5877               Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
5878               Let(Var("x0",CTy"CauseRegister"),
5879                   Dest("Cause",CTy"CauseRegister",Var("v",CTy"CP0")),
5880                   Apply
5881                     (Call
5882                        ("write'CP0",ATy(qTy,qTy),
5883                         Rupd
5884                           ("Cause",
5885                            TP[Var("v",CTy"CP0"),
5886                               Rupd
5887                                 ("IP",
5888                                  TP[Var("x0",CTy"CauseRegister"),
5889                                     BFI(LN 1,LN 0,
5890                                         EX(Var("value",F64),LN 9,LN 8,
5891                                            FTy 2),
5892                                         Dest
5893                                           ("IP",F8,
5894                                            Var("x0",CTy"CauseRegister")))])])),
5895                      qVar"state")))),
5896          (TP[LN 0,LW(14,5),LW(0,3)],
5897           Apply
5898             (Call
5899                ("write'CP0",ATy(qTy,qTy),
5900                 Rupd
5901                   ("EPC",
5902                    TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
5903                       Var("value",F64)])),qVar"state")),
5904          (TP[LN 0,LW(16,5),LW(0,3)],
5905           Let(Var("v",CTy"CP0"),
5906               Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
5907               Apply
5908                 (Call
5909                    ("write'CP0",ATy(qTy,qTy),
5910                     Rupd
5911                       ("Config",
5912                        TP[Var("v",CTy"CP0"),
5913                           Rupd
5914                             ("K0",
5915                              TP[Dest
5916                                   ("Config",CTy"ConfigRegister",
5917                                    Var("v",CTy"CP0")),
5918                                 EX(Var("value",F64),LN 2,LN 0,FTy 3)])])),
5919                  qVar"state"))),
5920          (TP[LN 0,LW(16,5),LW(2,3)],
5921           Let(Var("v",CTy"CP0"),
5922               Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
5923               Apply
5924                 (Call
5925                    ("write'CP0",ATy(qTy,qTy),
5926                     Rupd
5927                       ("Config2",
5928                        TP[Var("v",CTy"CP0"),
5929                           Rupd
5930                             ("SU",
5931                              TP[Dest
5932                                   ("Config2",CTy"ConfigRegister2",
5933                                    Var("v",CTy"CP0")),
5934                                 EX(Var("value",F64),LN 15,LN 12,F4)])])),
5935                  qVar"state"))),
5936          (TP[LN 0,LW(16,5),LW(6,3)],
5937           Let(Var("v",CTy"CP0"),
5938               Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
5939               Apply
5940                 (Call
5941                    ("write'CP0",ATy(qTy,qTy),
5942                     Rupd
5943                       ("Config6",
5944                        TP[Var("v",CTy"CP0"),
5945                           Rupd
5946                             ("LTLB",
5947                              TP[Dest
5948                                   ("Config6",CTy"ConfigRegister6",
5949                                    Var("v",CTy"CP0")),
5950                                 Bop(Bit,Var("value",F64),LN 2)])])),
5951                  qVar"state"))),
5952          (TP[LN 0,LW(20,5),LW(0,3)],
5953           Let(Var("v",CTy"CP0"),
5954               Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
5955               Apply
5956                 (Call
5957                    ("write'CP0",ATy(qTy,qTy),
5958                     Rupd
5959                       ("XContext",
5960                        TP[Var("v",CTy"CP0"),
5961                           Rupd
5962                             ("PTEBase",
5963                              TP[Dest
5964                                   ("XContext",CTy"XContext",
5965                                    Var("v",CTy"CP0")),
5966                                 EX(Var("value",F64),LN 63,LN 33,FTy 31)])])),
5967                  qVar"state"))),
5968          (TP[LN 0,LW(23,5),LW(0,3)],
5969           Rupd
5970             ("done",
5971              TP[Apply
5972                   (Call
5973                      ("write'CP0",ATy(qTy,qTy),
5974                       Rupd
5975                         ("Debug",
5976                          TP[Apply
5977                               (Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
5978                             EX(Var("value",F64),LN 31,LN 0,F32)])),
5979                    qVar"state"),LT])),
5980          (TP[LN 0,LW(26,5),LW(0,3)],
5981           Apply
5982             (Call
5983                ("write'CP0",ATy(qTy,qTy),
5984                 Rupd
5985                   ("ErrCtl",
5986                    TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
5987                       EX(Var("value",F64),LN 31,LN 0,F32)])),qVar"state")),
5988          (TP[LN 0,LW(30,5),LW(0,3)],
5989           Apply
5990             (Call
5991                ("write'CP0",ATy(qTy,qTy),
5992                 Rupd
5993                   ("ErrorEPC",
5994                    TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"),
5995                       Var("value",F64)])),qVar"state")),
5996          (AVar(PTy(nTy,PTy(FTy 5,FTy 3))),qVar"state")])))
5997;
5998val log_w_fgr_def = Def
5999  ("log_w_fgr",TP[Var("r",FTy 5),Var("data",F64)],
6000   CC[LS"FP Reg ",Mop(Cast sTy,Mop(Cast nTy,Var("r",FTy 5))),LS" <- ",
6001      Call("hex",sTy,Var("data",F64))])
6002;
6003val rec'FCSR_def = Def
6004  ("rec'FCSR",Var("x",F32),
6005   Rec(CTy"FCSR",
6006       [Bop(Bit,Var("x",F32),LN 19),Bop(Bit,Var("x",F32),LN 17),
6007        Bop(Bit,Var("x",F32),LN 12),Bop(Bit,Var("x",F32),LN 14),
6008        Bop(Bit,Var("x",F32),LN 13),Bop(Bit,Var("x",F32),LN 16),
6009        Bop(Bit,Var("x",F32),LN 15),Bop(Bit,Var("x",F32),LN 7),
6010        Bop(Bit,Var("x",F32),LN 9),Bop(Bit,Var("x",F32),LN 8),
6011        Bop(Bit,Var("x",F32),LN 11),Bop(Bit,Var("x",F32),LN 10),
6012        CC[EX(Var("x",F32),LN 31,LN 25,FTy 7),
6013           EX(Var("x",F32),LN 23,LN 23,F1)],Bop(Bit,Var("x",F32),LN 24),
6014        Bop(Bit,Var("x",F32),LN 2),Bop(Bit,Var("x",F32),LN 4),
6015        Bop(Bit,Var("x",F32),LN 3),Bop(Bit,Var("x",F32),LN 6),
6016        Bop(Bit,Var("x",F32),LN 5),Bop(Bit,Var("x",F32),LN 18),
6017        EX(Var("x",F32),LN 1,LN 0,FTy 2),
6018        EX(Var("x",F32),LN 22,LN 20,FTy 3)]))
6019;
6020val reg'FCSR_def = Def
6021  ("reg'FCSR",Var("x",CTy"FCSR"),
6022   CS(Var("x",CTy"FCSR"),
6023      [(Rec(CTy"FCSR",
6024            [bVar"ABS2008",bVar"CauseE",bVar"CauseI",bVar"CauseO",
6025             bVar"CauseU",bVar"CauseV",bVar"CauseZ",bVar"EnableI",
6026             bVar"EnableO",bVar"EnableU",bVar"EnableV",bVar"EnableZ",
6027             Var("FCC",F8),bVar"FS",bVar"FlagI",bVar"FlagO",bVar"FlagU",
6028             bVar"FlagV",bVar"FlagZ",bVar"NAN2008",Var("RM",FTy 2),
6029             Var("fcsr'rst",FTy 3)]),
6030        CC[EX(Var("FCC",F8),LN 7,LN 1,FTy 7),Mop(Cast F1,bVar"FS"),
6031           EX(Var("FCC",F8),LN 0,LN 0,F1),Var("fcsr'rst",FTy 3),
6032           Mop(Cast F1,bVar"ABS2008"),Mop(Cast F1,bVar"NAN2008"),
6033           Mop(Cast F1,bVar"CauseE"),Mop(Cast F1,bVar"CauseV"),
6034           Mop(Cast F1,bVar"CauseZ"),Mop(Cast F1,bVar"CauseO"),
6035           Mop(Cast F1,bVar"CauseU"),Mop(Cast F1,bVar"CauseI"),
6036           Mop(Cast F1,bVar"EnableV"),Mop(Cast F1,bVar"EnableZ"),
6037           Mop(Cast F1,bVar"EnableO"),Mop(Cast F1,bVar"EnableU"),
6038           Mop(Cast F1,bVar"EnableI"),Mop(Cast F1,bVar"FlagV"),
6039           Mop(Cast F1,bVar"FlagZ"),Mop(Cast F1,bVar"FlagO"),
6040           Mop(Cast F1,bVar"FlagU"),Mop(Cast F1,bVar"FlagI"),
6041           Var("RM",FTy 2)])]))
6042;
6043val write'rec'FCSR_def = Def
6044  ("write'rec'FCSR",TP[AVar F32,Var("x",CTy"FCSR")],
6045   Call("reg'FCSR",F32,Var("x",CTy"FCSR")))
6046;
6047val write'reg'FCSR_def = Def
6048  ("write'reg'FCSR",TP[AVar(CTy"FCSR"),Var("x",F32)],
6049   Call("rec'FCSR",CTy"FCSR",Var("x",F32)))
6050;
6051val rec'FIR_def = Def
6052  ("rec'FIR",Var("x",F32),
6053   Rec(CTy"FIR",
6054       [Bop(Bit,Var("x",F32),LN 19),Bop(Bit,Var("x",F32),LN 17),
6055        Bop(Bit,Var("x",F32),LN 22),Bop(Bit,Var("x",F32),LN 21),
6056        Bop(Bit,Var("x",F32),LN 18),EX(Var("x",F32),LN 15,LN 8,F8),
6057        EX(Var("x",F32),LN 7,LN 0,F8),Bop(Bit,Var("x",F32),LN 16),
6058        Bop(Bit,Var("x",F32),LN 20),EX(Var("x",F32),LN 31,LN 23,FTy 9)]))
6059;
6060val reg'FIR_def = Def
6061  ("reg'FIR",Var("x",CTy"FIR"),
6062   CS(Var("x",CTy"FIR"),
6063      [(Rec(CTy"FIR",
6064            [bVar"ASE",bVar"D",bVar"F64",bVar"L",bVar"PS",Var("PrID",F8),
6065             Var("Rev",F8),bVar"S",bVar"W",Var("fir'rst",FTy 9)]),
6066        CC[Var("fir'rst",FTy 9),Mop(Cast F1,bVar"F64"),
6067           Mop(Cast F1,bVar"L"),Mop(Cast F1,bVar"W"),
6068           Mop(Cast F1,bVar"ASE"),Mop(Cast F1,bVar"PS"),
6069           Mop(Cast F1,bVar"D"),Mop(Cast F1,bVar"S"),Var("PrID",F8),
6070           Var("Rev",F8)])]))
6071;
6072val write'rec'FIR_def = Def
6073  ("write'rec'FIR",TP[AVar F32,Var("x",CTy"FIR")],
6074   Call("reg'FIR",F32,Var("x",CTy"FIR")))
6075;
6076val write'reg'FIR_def = Def
6077  ("write'reg'FIR",TP[AVar(CTy"FIR"),Var("x",F32)],
6078   Call("rec'FIR",CTy"FIR",Var("x",F32)))
6079;
6080val FGR_def = Def
6081  ("FGR",Var("n",FTy 5),
6082   Close
6083     (qVar"state",
6084      Apply(Dest("fgr",ATy(FTy 5,F64),qVar"state"),Var("n",FTy 5))))
6085;
6086val write'FGR_def = Def
6087  ("write'FGR",TP[Var("value",F64),Var("n",FTy 5)],
6088   Close
6089     (qVar"state",
6090      Rupd
6091        ("fgr",
6092         TP[qVar"state",
6093            Fupd
6094              (Dest("fgr",ATy(FTy 5,F64),qVar"state"),Var("n",FTy 5),
6095               Var("value",F64))])))
6096;
6097val IntToWordMIPS_def = Def
6098  ("IntToWordMIPS",iVar"v",
6099   ITB([(Bop(Gt,iVar"v",LI 2147483647),LW(2147483647,32)),
6100        (Bop(Lt,iVar"v",Mop(Neg,LI 2147483648)),LW(2147483647,32))],
6101       Mop(Cast F32,iVar"v")))
6102;
6103val IntToDWordMIPS_def = Def
6104  ("IntToDWordMIPS",iVar"v",
6105   ITB([(Bop(Gt,iVar"v",LI 9223372036854775807),LW(9223372036854775807,64)),
6106        (Bop(Lt,iVar"v",Mop(Neg,LI 9223372036854775808)),
6107         LW(9223372036854775807,64))],Mop(Cast F64,iVar"v")))
6108;
6109val FP32_Abs1985_def = Def
6110  ("FP32_Abs1985",Var("a",F32),
6111   ITE(Mop(FPIsNan 32,Var("a",F32)),Var("a",F32),
6112       Mop(FPAbs 32,Var("a",F32))))
6113;
6114val FP32_Neg1985_def = Def
6115  ("FP32_Neg1985",Var("a",F32),
6116   ITE(Mop(FPIsNan 32,Var("a",F32)),Var("a",F32),
6117       Mop(FPNeg 32,Var("a",F32))))
6118;
6119val FP64_Abs1985_def = Def
6120  ("FP64_Abs1985",Var("a",F64),
6121   ITE(Mop(FPIsNan 64,Var("a",F64)),Var("a",F64),
6122       Mop(FPAbs 64,Var("a",F64))))
6123;
6124val FP64_Neg1985_def = Def
6125  ("FP64_Neg1985",Var("a",F64),
6126   ITE(Mop(FPIsNan 64,Var("a",F64)),Var("a",F64),
6127       Mop(FPNeg 64,Var("a",F64))))
6128;
6129val PostOpF32_def = Def
6130  ("PostOpF32",Var("v",F32),
6131   Close
6132     (qVar"state",
6133      ITE(Bop(And,Dest("FS",bTy,Dest("fcsr",CTy"FCSR",qVar"state")),
6134              Mop(FPIsSubnormal 32,Var("v",F32))),LW(0,32),Var("v",F32))))
6135;
6136val PostOpF64_def = Def
6137  ("PostOpF64",Var("v",F64),
6138   Close
6139     (qVar"state",
6140      ITE(Bop(And,Dest("FS",bTy,Dest("fcsr",CTy"FCSR",qVar"state")),
6141              Mop(FPIsSubnormal 64,Var("v",F64))),LW(0,64),Var("v",F64))))
6142;
6143val FP64_Unordered_def = Def
6144  ("FP64_Unordered",TP[Var("a",F64),Var("b",F64)],
6145   Bop(Or,Mop(FPIsNan 64,Var("a",F64)),Mop(FPIsNan 64,Var("b",F64))))
6146;
6147val FP32_Unordered_def = Def
6148  ("FP32_Unordered",TP[Var("a",F32),Var("b",F32)],
6149   Bop(Or,Mop(FPIsNan 32,Var("a",F32)),Mop(FPIsNan 32,Var("b",F32))))
6150;
6151val Rounding_Mode_def = Def
6152  ("Rounding_Mode",qVar"state",
6153   CS(Dest("RM",FTy 2,Dest("fcsr",CTy"FCSR",qVar"state")),
6154      [(LW(0,2),binary_ieeeSyntax.roundTiesToEven_tm),
6155       (LW(1,2),binary_ieeeSyntax.roundTowardZero_tm),
6156       (LW(2,2),binary_ieeeSyntax.roundTowardPositive_tm),
6157       (LW(3,2),binary_ieeeSyntax.roundTowardNegative_tm)]))
6158;
6159val dfn'ABS_D_def = Def
6160  ("dfn'ABS_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
6161   Close
6162     (qVar"state",
6163      ITB([(Mop(Not,
6164                Dest
6165                  ("CU1",bTy,
6166                   Dest
6167                     ("Status",CTy"StatusRegister",
6168                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
6169            Apply
6170              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
6171               qVar"state")),
6172           (Dest("ABS2008",bTy,Dest("fcsr",CTy"FCSR",qVar"state")),
6173            Apply
6174              (Call
6175                 ("write'FGR",ATy(qTy,qTy),
6176                  TP[Mop(FPAbs 64,
6177                         Apply
6178                           (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
6179                            qVar"state")),Var("fd",FTy 5)]),qVar"state"))],
6180          Apply
6181            (Call
6182               ("write'FGR",ATy(qTy,qTy),
6183                TP[Apply
6184                     (Call
6185                        ("PostOpF64",ATy(qTy,F64),
6186                         Call
6187                           ("FP64_Abs1985",F64,
6188                            Apply
6189                              (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
6190                               qVar"state"))),qVar"state"),Var("fd",FTy 5)]),
6191             qVar"state"))))
6192;
6193val dfn'ABS_S_def = Def
6194  ("dfn'ABS_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
6195   Close
6196     (qVar"state",
6197      ITB([(Mop(Not,
6198                Dest
6199                  ("CU1",bTy,
6200                   Dest
6201                     ("Status",CTy"StatusRegister",
6202                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
6203            Apply
6204              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
6205               qVar"state")),
6206           (Dest("ABS2008",bTy,Dest("fcsr",CTy"FCSR",qVar"state")),
6207            Apply
6208              (Call
6209                 ("write'FGR",ATy(qTy,qTy),
6210                  TP[Mop(SE F64,
6211                         Mop(FPAbs 32,
6212                             EX(Apply
6213                                  (Call
6214                                     ("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
6215                                   qVar"state"),LN 31,LN 0,F32))),
6216                     Var("fd",FTy 5)]),qVar"state"))],
6217          Apply
6218            (Call
6219               ("write'FGR",ATy(qTy,qTy),
6220                TP[Mop(SE F64,
6221                       Apply
6222                         (Call
6223                            ("PostOpF32",ATy(qTy,F32),
6224                             Call
6225                               ("FP32_Abs1985",F32,
6226                                EX(Apply
6227                                     (Call
6228                                        ("FGR",ATy(qTy,F64),
6229                                         Var("fs",FTy 5)),qVar"state"),
6230                                   LN 31,LN 0,F32))),qVar"state")),
6231                   Var("fd",FTy 5)]),qVar"state"))))
6232;
6233val dfn'ADD_D_def = Def
6234  ("dfn'ADD_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
6235   Close
6236     (qVar"state",
6237      ITE(Mop(Not,
6238              Dest
6239                ("CU1",bTy,
6240                 Dest
6241                   ("Status",CTy"StatusRegister",
6242                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
6243          Apply
6244            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
6245          Apply
6246            (Call
6247               ("write'FGR",ATy(qTy,qTy),
6248                TP[Apply
6249                     (Call
6250                        ("PostOpF64",ATy(qTy,F64),
6251                         Mop(FPAdd 64,
6252                             TP[Apply
6253                                  (Const("Rounding_Mode",ATy(qTy,rTy)),
6254                                   qVar"state"),
6255                                Apply
6256                                  (Call
6257                                     ("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
6258                                   qVar"state"),
6259                                Apply
6260                                  (Call
6261                                     ("FGR",ATy(qTy,F64),Var("ft",FTy 5)),
6262                                   qVar"state")])),qVar"state"),
6263                   Var("fd",FTy 5)]),qVar"state"))))
6264;
6265val dfn'ADD_S_def = Def
6266  ("dfn'ADD_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
6267   Close
6268     (qVar"state",
6269      ITE(Mop(Not,
6270              Dest
6271                ("CU1",bTy,
6272                 Dest
6273                   ("Status",CTy"StatusRegister",
6274                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
6275          Apply
6276            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
6277          Apply
6278            (Call
6279               ("write'FGR",ATy(qTy,qTy),
6280                TP[Mop(SE F64,
6281                       Apply
6282                         (Call
6283                            ("PostOpF32",ATy(qTy,F32),
6284                             Mop(FPAdd 32,
6285                                 TP[Apply
6286                                      (Const("Rounding_Mode",ATy(qTy,rTy)),
6287                                       qVar"state"),
6288                                    EX(Apply
6289                                         (Call
6290                                            ("FGR",ATy(qTy,F64),
6291                                             Var("fs",FTy 5)),qVar"state"),
6292                                       LN 31,LN 0,F32),
6293                                    EX(Apply
6294                                         (Call
6295                                            ("FGR",ATy(qTy,F64),
6296                                             Var("ft",FTy 5)),qVar"state"),
6297                                       LN 31,LN 0,F32)])),qVar"state")),
6298                   Var("fd",FTy 5)]),qVar"state"))))
6299;
6300val dfn'BC1F_def = Def
6301  ("dfn'BC1F",TP[Var("i",F16),Var("cc",FTy 3)],
6302   Close
6303     (qVar"state",
6304      ITB([(Mop(Not,
6305                Dest
6306                  ("CU1",bTy,
6307                   Dest
6308                     ("Status",CTy"StatusRegister",
6309                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
6310            Apply
6311              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
6312               qVar"state")),
6313           (Mop(Not,
6314                Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")),
6315                    Mop(Cast nTy,Var("cc",FTy 3)))),
6316            Apply
6317              (Call
6318                 ("write'BranchTo",ATy(qTy,qTy),
6319                  Mop(Some,
6320                      Bop(Add,
6321                          Bop(Add,
6322                              Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
6323                              LW(4,64)),
6324                          Bop(Lsl,Mop(SE F64,Var("i",F16)),LN 2)))),
6325               qVar"state"))],
6326          Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"))))
6327;
6328val dfn'BC1FL_def = Def
6329  ("dfn'BC1FL",TP[Var("i",F16),Var("cc",FTy 3)],
6330   Close
6331     (qVar"state",
6332      ITB([(Mop(Not,
6333                Dest
6334                  ("CU1",bTy,
6335                   Dest
6336                     ("Status",CTy"StatusRegister",
6337                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
6338            Apply
6339              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
6340               qVar"state")),
6341           (Mop(Not,
6342                Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")),
6343                    Mop(Cast nTy,Var("cc",FTy 3)))),
6344            Apply
6345              (Call
6346                 ("write'BranchTo",ATy(qTy,qTy),
6347                  Mop(Some,
6348                      Bop(Add,
6349                          Bop(Add,
6350                              Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
6351                              LW(4,64)),
6352                          Bop(Lsl,Mop(SE F64,Var("i",F16)),LN 2)))),
6353               qVar"state"))],
6354          Let(TP[Var("v",F64),qVar"s"],
6355              Let(qVar"s0",
6356                  Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"),
6357                  TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]),
6358              Apply
6359                (Call
6360                   ("write'PC",ATy(qTy,qTy),Bop(Add,Var("v",F64),LW(4,64))),
6361                 qVar"s")))))
6362;
6363val dfn'BC1T_def = Def
6364  ("dfn'BC1T",TP[Var("i",F16),Var("cc",FTy 3)],
6365   Close
6366     (qVar"state",
6367      ITB([(Mop(Not,
6368                Dest
6369                  ("CU1",bTy,
6370                   Dest
6371                     ("Status",CTy"StatusRegister",
6372                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
6373            Apply
6374              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
6375               qVar"state")),
6376           (Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")),
6377                Mop(Cast nTy,Var("cc",FTy 3))),
6378            Apply
6379              (Call
6380                 ("write'BranchTo",ATy(qTy,qTy),
6381                  Mop(Some,
6382                      Bop(Add,
6383                          Bop(Add,
6384                              Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
6385                              LW(4,64)),
6386                          Bop(Lsl,Mop(SE F64,Var("i",F16)),LN 2)))),
6387               qVar"state"))],
6388          Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"))))
6389;
6390val dfn'BC1TL_def = Def
6391  ("dfn'BC1TL",TP[Var("i",F16),Var("cc",FTy 3)],
6392   Close
6393     (qVar"state",
6394      ITB([(Mop(Not,
6395                Dest
6396                  ("CU1",bTy,
6397                   Dest
6398                     ("Status",CTy"StatusRegister",
6399                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
6400            Apply
6401              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
6402               qVar"state")),
6403           (Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")),
6404                Mop(Cast nTy,Var("cc",FTy 3))),
6405            Apply
6406              (Call
6407                 ("write'BranchTo",ATy(qTy,qTy),
6408                  Mop(Some,
6409                      Bop(Add,
6410                          Bop(Add,
6411                              Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
6412                              LW(4,64)),
6413                          Bop(Lsl,Mop(SE F64,Var("i",F16)),LN 2)))),
6414               qVar"state"))],
6415          Let(TP[Var("v",F64),qVar"s"],
6416              Let(qVar"s0",
6417                  Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"),
6418                  TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]),
6419              Apply
6420                (Call
6421                   ("write'PC",ATy(qTy,qTy),Bop(Add,Var("v",F64),LW(4,64))),
6422                 qVar"s")))))
6423;
6424val dfn'C_cond_D_def = Def
6425  ("dfn'C_cond_D",
6426   TP[Var("fs",FTy 5),Var("ft",FTy 5),Var("cnd",FTy 3),Var("cc",FTy 3)],
6427   Close
6428     (qVar"state",
6429      ITE(Mop(Not,
6430              Dest
6431                ("CU1",bTy,
6432                 Dest
6433                   ("Status",CTy"StatusRegister",
6434                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
6435          Apply
6436            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
6437          Let(nVar"i",Mop(Cast nTy,Var("cc",FTy 3)),
6438              Let(TP[Var("v",CTy"FCSR"),qVar"s"],
6439                  Let(TP[Var("v",PTy(CTy"FCSR",F8)),qVar"s"],
6440                      Let(TP[bVar"v0",qVar"s0"],
6441                          CS(Var("cnd",FTy 3),
6442                             [(LW(0,3),TP[LF,qVar"state"]),
6443                              (LW(1,3),
6444                               TP[Call
6445                                    ("FP64_Unordered",bTy,
6446                                     TP[Apply
6447                                          (Call
6448                                             ("FGR",ATy(qTy,F64),
6449                                              Var("fs",FTy 5)),qVar"state"),
6450                                        Apply
6451                                          (Call
6452                                             ("FGR",ATy(qTy,F64),
6453                                              Var("ft",FTy 5)),qVar"state")]),
6454                                  qVar"state"]),
6455                              (LW(2,3),
6456                               TP[Mop(FPEq 64,
6457                                      TP[Apply
6458                                           (Call
6459                                              ("FGR",ATy(qTy,F64),
6460                                               Var("fs",FTy 5)),
6461                                            qVar"state"),
6462                                         Apply
6463                                           (Call
6464                                              ("FGR",ATy(qTy,F64),
6465                                               Var("ft",FTy 5)),
6466                                            qVar"state")]),qVar"state"]),
6467                              (LW(3,3),
6468                               TP[Bop(Or,
6469                                      Mop(FPEq 64,
6470                                          TP[Apply
6471                                               (Call
6472                                                  ("FGR",ATy(qTy,F64),
6473                                                   Var("fs",FTy 5)),
6474                                                qVar"state"),
6475                                             Apply
6476                                               (Call
6477                                                  ("FGR",ATy(qTy,F64),
6478                                                   Var("ft",FTy 5)),
6479                                                qVar"state")]),
6480                                      Call
6481                                        ("FP64_Unordered",bTy,
6482                                         TP[Apply
6483                                              (Call
6484                                                 ("FGR",ATy(qTy,F64),
6485                                                  Var("fs",FTy 5)),
6486                                               qVar"state"),
6487                                            Apply
6488                                              (Call
6489                                                 ("FGR",ATy(qTy,F64),
6490                                                  Var("ft",FTy 5)),
6491                                               qVar"state")])),qVar"state"]),
6492                              (LW(4,3),
6493                               TP[Mop(FPLt 64,
6494                                      TP[Apply
6495                                           (Call
6496                                              ("FGR",ATy(qTy,F64),
6497                                               Var("fs",FTy 5)),
6498                                            qVar"state"),
6499                                         Apply
6500                                           (Call
6501                                              ("FGR",ATy(qTy,F64),
6502                                               Var("ft",FTy 5)),
6503                                            qVar"state")]),qVar"state"]),
6504                              (LW(5,3),
6505                               TP[Mop(Not,
6506                                      Mop(FPGe 64,
6507                                          TP[Apply
6508                                               (Call
6509                                                  ("FGR",ATy(qTy,F64),
6510                                                   Var("fs",FTy 5)),
6511                                                qVar"state"),
6512                                             Apply
6513                                               (Call
6514                                                  ("FGR",ATy(qTy,F64),
6515                                                   Var("ft",FTy 5)),
6516                                                qVar"state")])),
6517                                  qVar"state"]),
6518                              (LW(6,3),
6519                               TP[Mop(FPLe 64,
6520                                      TP[Apply
6521                                           (Call
6522                                              ("FGR",ATy(qTy,F64),
6523                                               Var("fs",FTy 5)),
6524                                            qVar"state"),
6525                                         Apply
6526                                           (Call
6527                                              ("FGR",ATy(qTy,F64),
6528                                               Var("ft",FTy 5)),
6529                                            qVar"state")]),qVar"state"]),
6530                              (LW(7,3),
6531                               TP[Mop(Not,
6532                                      Mop(FPGt 64,
6533                                          TP[Apply
6534                                               (Call
6535                                                  ("FGR",ATy(qTy,F64),
6536                                                   Var("fs",FTy 5)),
6537                                                qVar"state"),
6538                                             Apply
6539                                               (Call
6540                                                  ("FGR",ATy(qTy,F64),
6541                                                   Var("ft",FTy 5)),
6542                                                qVar"state")])),
6543                                  qVar"state"])]),
6544                          TP[TP[Dest("fcsr",CTy"FCSR",qVar"state"),
6545                                BFI(nVar"i",nVar"i",Mop(Cast F1,bVar"v0"),
6546                                    Dest
6547                                      ("FCC",F8,
6548                                       Dest("fcsr",CTy"FCSR",qVar"state")))],
6549                             qVar"s0"]),
6550                      TP[Rupd("FCC",Var("v",PTy(CTy"FCSR",F8))),qVar"s"]),
6551                  Rupd("fcsr",TP[qVar"s",Var("v",CTy"FCSR")]))))))
6552;
6553val dfn'C_cond_S_def = Def
6554  ("dfn'C_cond_S",
6555   TP[Var("fs",FTy 5),Var("ft",FTy 5),Var("cnd",FTy 3),Var("cc",FTy 3)],
6556   Close
6557     (qVar"state",
6558      ITE(Mop(Not,
6559              Dest
6560                ("CU1",bTy,
6561                 Dest
6562                   ("Status",CTy"StatusRegister",
6563                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
6564          Apply
6565            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
6566          Let(nVar"i",Mop(Cast nTy,Var("cc",FTy 3)),
6567              Let(TP[Var("v",CTy"FCSR"),qVar"s"],
6568                  Let(TP[Var("v",PTy(CTy"FCSR",F8)),qVar"s"],
6569                      Let(TP[bVar"v0",qVar"s0"],
6570                          CS(Var("cnd",FTy 3),
6571                             [(LW(0,3),TP[LF,qVar"state"]),
6572                              (LW(1,3),
6573                               TP[Call
6574                                    ("FP32_Unordered",bTy,
6575                                     TP[EX(Apply
6576                                             (Call
6577                                                ("FGR",ATy(qTy,F64),
6578                                                 Var("fs",FTy 5)),
6579                                              qVar"state"),LN 31,LN 0,F32),
6580                                        EX(Apply
6581                                             (Call
6582                                                ("FGR",ATy(qTy,F64),
6583                                                 Var("ft",FTy 5)),
6584                                              qVar"state"),LN 31,LN 0,F32)]),
6585                                  qVar"state"]),
6586                              (LW(2,3),
6587                               TP[Mop(FPEq 32,
6588                                      TP[EX(Apply
6589                                              (Call
6590                                                 ("FGR",ATy(qTy,F64),
6591                                                  Var("fs",FTy 5)),
6592                                               qVar"state"),LN 31,LN 0,F32),
6593                                         EX(Apply
6594                                              (Call
6595                                                 ("FGR",ATy(qTy,F64),
6596                                                  Var("ft",FTy 5)),
6597                                               qVar"state"),LN 31,LN 0,F32)]),
6598                                  qVar"state"]),
6599                              (LW(3,3),
6600                               TP[Bop(Or,
6601                                      Mop(FPEq 32,
6602                                          TP[EX(Apply
6603                                                  (Call
6604                                                     ("FGR",ATy(qTy,F64),
6605                                                      Var("fs",FTy 5)),
6606                                                   qVar"state"),LN 31,
6607                                                LN 0,F32),
6608                                             EX(Apply
6609                                                  (Call
6610                                                     ("FGR",ATy(qTy,F64),
6611                                                      Var("ft",FTy 5)),
6612                                                   qVar"state"),LN 31,
6613                                                LN 0,F32)]),
6614                                      Call
6615                                        ("FP32_Unordered",bTy,
6616                                         TP[EX(Apply
6617                                                 (Call
6618                                                    ("FGR",ATy(qTy,F64),
6619                                                     Var("fs",FTy 5)),
6620                                                  qVar"state"),LN 31,LN 0,
6621                                               F32),
6622                                            EX(Apply
6623                                                 (Call
6624                                                    ("FGR",ATy(qTy,F64),
6625                                                     Var("ft",FTy 5)),
6626                                                  qVar"state"),LN 31,LN 0,
6627                                               F32)])),qVar"state"]),
6628                              (LW(4,3),
6629                               TP[Mop(FPLt 32,
6630                                      TP[EX(Apply
6631                                              (Call
6632                                                 ("FGR",ATy(qTy,F64),
6633                                                  Var("fs",FTy 5)),
6634                                               qVar"state"),LN 31,LN 0,F32),
6635                                         EX(Apply
6636                                              (Call
6637                                                 ("FGR",ATy(qTy,F64),
6638                                                  Var("ft",FTy 5)),
6639                                               qVar"state"),LN 31,LN 0,F32)]),
6640                                  qVar"state"]),
6641                              (LW(5,3),
6642                               TP[Mop(Not,
6643                                      Mop(FPGe 32,
6644                                          TP[EX(Apply
6645                                                  (Call
6646                                                     ("FGR",ATy(qTy,F64),
6647                                                      Var("fs",FTy 5)),
6648                                                   qVar"state"),LN 31,
6649                                                LN 0,F32),
6650                                             EX(Apply
6651                                                  (Call
6652                                                     ("FGR",ATy(qTy,F64),
6653                                                      Var("ft",FTy 5)),
6654                                                   qVar"state"),LN 31,
6655                                                LN 0,F32)])),qVar"state"]),
6656                              (LW(6,3),
6657                               TP[Mop(FPLe 32,
6658                                      TP[EX(Apply
6659                                              (Call
6660                                                 ("FGR",ATy(qTy,F64),
6661                                                  Var("fs",FTy 5)),
6662                                               qVar"state"),LN 31,LN 0,F32),
6663                                         EX(Apply
6664                                              (Call
6665                                                 ("FGR",ATy(qTy,F64),
6666                                                  Var("ft",FTy 5)),
6667                                               qVar"state"),LN 31,LN 0,F32)]),
6668                                  qVar"state"]),
6669                              (LW(7,3),
6670                               TP[Mop(Not,
6671                                      Mop(FPGt 32,
6672                                          TP[EX(Apply
6673                                                  (Call
6674                                                     ("FGR",ATy(qTy,F64),
6675                                                      Var("fs",FTy 5)),
6676                                                   qVar"state"),LN 31,
6677                                                LN 0,F32),
6678                                             EX(Apply
6679                                                  (Call
6680                                                     ("FGR",ATy(qTy,F64),
6681                                                      Var("ft",FTy 5)),
6682                                                   qVar"state"),LN 31,
6683                                                LN 0,F32)])),qVar"state"])]),
6684                          TP[TP[Dest("fcsr",CTy"FCSR",qVar"state"),
6685                                BFI(nVar"i",nVar"i",Mop(Cast F1,bVar"v0"),
6686                                    Dest
6687                                      ("FCC",F8,
6688                                       Dest("fcsr",CTy"FCSR",qVar"state")))],
6689                             qVar"s0"]),
6690                      TP[Rupd("FCC",Var("v",PTy(CTy"FCSR",F8))),qVar"s"]),
6691                  Rupd("fcsr",TP[qVar"s",Var("v",CTy"FCSR")]))))))
6692;
6693val dfn'CEIL_L_D_def = Def
6694  ("dfn'CEIL_L_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
6695   Close
6696     (qVar"state",
6697      ITE(Mop(Not,
6698              Dest
6699                ("CU1",bTy,
6700                 Dest
6701                   ("Status",CTy"StatusRegister",
6702                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
6703          Apply
6704            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
6705          Apply
6706            (Call
6707               ("write'FGR",ATy(qTy,qTy),
6708                TP[CS(Mop(FPToInt 64,
6709                          TP[binary_ieeeSyntax.roundTowardPositive_tm,
6710                             Apply
6711                               (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
6712                                qVar"state")]),
6713                      [(Mop(Some,iVar"x"),
6714                        Call("IntToDWordMIPS",F64,iVar"x")),
6715                       (LO iTy,LW(9223372036854775807,64))]),
6716                   Var("fd",FTy 5)]),qVar"state"))))
6717;
6718val dfn'CEIL_L_S_def = Def
6719  ("dfn'CEIL_L_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
6720   Close
6721     (qVar"state",
6722      ITE(Mop(Not,
6723              Dest
6724                ("CU1",bTy,
6725                 Dest
6726                   ("Status",CTy"StatusRegister",
6727                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
6728          Apply
6729            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
6730          Apply
6731            (Call
6732               ("write'FGR",ATy(qTy,qTy),
6733                TP[CS(Mop(FPToInt 32,
6734                          TP[binary_ieeeSyntax.roundTowardPositive_tm,
6735                             EX(Apply
6736                                  (Call
6737                                     ("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
6738                                   qVar"state"),LN 31,LN 0,F32)]),
6739                      [(Mop(Some,iVar"x"),
6740                        Call("IntToDWordMIPS",F64,iVar"x")),
6741                       (LO iTy,LW(9223372036854775807,64))]),
6742                   Var("fd",FTy 5)]),qVar"state"))))
6743;
6744val dfn'CEIL_W_D_def = Def
6745  ("dfn'CEIL_W_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
6746   Close
6747     (qVar"state",
6748      ITE(Mop(Not,
6749              Dest
6750                ("CU1",bTy,
6751                 Dest
6752                   ("Status",CTy"StatusRegister",
6753                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
6754          Apply
6755            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
6756          Apply
6757            (Call
6758               ("write'FGR",ATy(qTy,qTy),
6759                TP[CS(Mop(FPToInt 64,
6760                          TP[binary_ieeeSyntax.roundTowardPositive_tm,
6761                             Apply
6762                               (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
6763                                qVar"state")]),
6764                      [(Mop(Some,iVar"x"),
6765                        Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))),
6766                       (LO iTy,LW(2147483647,64))]),Var("fd",FTy 5)]),
6767             qVar"state"))))
6768;
6769val dfn'CEIL_W_S_def = Def
6770  ("dfn'CEIL_W_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
6771   Close
6772     (qVar"state",
6773      ITE(Mop(Not,
6774              Dest
6775                ("CU1",bTy,
6776                 Dest
6777                   ("Status",CTy"StatusRegister",
6778                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
6779          Apply
6780            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
6781          Apply
6782            (Call
6783               ("write'FGR",ATy(qTy,qTy),
6784                TP[CS(Mop(FPToInt 32,
6785                          TP[binary_ieeeSyntax.roundTowardPositive_tm,
6786                             EX(Apply
6787                                  (Call
6788                                     ("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
6789                                   qVar"state"),LN 31,LN 0,F32)]),
6790                      [(Mop(Some,iVar"x"),
6791                        Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))),
6792                       (LO iTy,LW(2147483647,64))]),Var("fd",FTy 5)]),
6793             qVar"state"))))
6794;
6795val dfn'CVT_D_L_def = Def
6796  ("dfn'CVT_D_L",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
6797   Close
6798     (qVar"state",
6799      ITE(Mop(Not,
6800              Dest
6801                ("CU1",bTy,
6802                 Dest
6803                   ("Status",CTy"StatusRegister",
6804                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
6805          Apply
6806            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
6807          Apply
6808            (Call
6809               ("write'FGR",ATy(qTy,qTy),
6810                TP[Mop(FPFromInt 64,
6811                       TP[Apply
6812                            (Const("Rounding_Mode",ATy(qTy,rTy)),
6813                             qVar"state"),
6814                          Mop(Cast iTy,
6815                              Apply
6816                                (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
6817                                 qVar"state"))]),Var("fd",FTy 5)]),
6818             qVar"state"))))
6819;
6820val dfn'CVT_D_S_def = Def
6821  ("dfn'CVT_D_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
6822   Close
6823     (qVar"state",
6824      ITE(Mop(Not,
6825              Dest
6826                ("CU1",bTy,
6827                 Dest
6828                   ("Status",CTy"StatusRegister",
6829                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
6830          Apply
6831            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
6832          Apply
6833            (Call
6834               ("write'FGR",ATy(qTy,qTy),
6835                TP[Mop(FP32To64,
6836                       EX(Apply
6837                            (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
6838                             qVar"state"),LN 31,LN 0,F32)),Var("fd",FTy 5)]),
6839             qVar"state"))))
6840;
6841val dfn'CVT_D_W_def = Def
6842  ("dfn'CVT_D_W",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
6843   Close
6844     (qVar"state",
6845      ITE(Mop(Not,
6846              Dest
6847                ("CU1",bTy,
6848                 Dest
6849                   ("Status",CTy"StatusRegister",
6850                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
6851          Apply
6852            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
6853          Let(TP[Var("v",rTy),qVar"s"],
6854              Let(qVar"s0",
6855                  ITE(Call
6856                        ("NotWordValue",bTy,
6857                         Apply
6858                           (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
6859                            qVar"state")),
6860                      Mop(Snd,
6861                          Apply
6862                            (Call
6863                               ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
6864                                Call
6865                                  ("UNPREDICTABLE",CTy"exception",
6866                                   LS"CVT.D.W: NotWordValue")),qVar"state")),
6867                      qVar"state"),
6868                  TP[Apply(Const("Rounding_Mode",ATy(qTy,rTy)),qVar"s0"),
6869                     qVar"s0"]),
6870              Apply
6871                (Call
6872                   ("write'FGR",ATy(qTy,qTy),
6873                    TP[Mop(FPFromInt 64,
6874                           TP[Var("v",rTy),
6875                              Mop(Cast iTy,
6876                                  EX(Apply
6877                                       (Call
6878                                          ("FGR",ATy(qTy,F64),
6879                                           Var("fs",FTy 5)),qVar"s"),
6880                                     LN 31,LN 0,F32))]),Var("fd",FTy 5)]),
6881                 qVar"s")))))
6882;
6883val dfn'CVT_L_D_def = Def
6884  ("dfn'CVT_L_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
6885   Close
6886     (qVar"state",
6887      ITE(Mop(Not,
6888              Dest
6889                ("CU1",bTy,
6890                 Dest
6891                   ("Status",CTy"StatusRegister",
6892                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
6893          Apply
6894            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
6895          Apply
6896            (Call
6897               ("write'FGR",ATy(qTy,qTy),
6898                TP[CS(Mop(FPToInt 64,
6899                          TP[Apply
6900                               (Const("Rounding_Mode",ATy(qTy,rTy)),
6901                                qVar"state"),
6902                             Apply
6903                               (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
6904                                qVar"state")]),
6905                      [(Mop(Some,iVar"x"),
6906                        Call("IntToDWordMIPS",F64,iVar"x")),
6907                       (LO iTy,LW(9223372036854775807,64))]),
6908                   Var("fd",FTy 5)]),qVar"state"))))
6909;
6910val dfn'CVT_L_S_def = Def
6911  ("dfn'CVT_L_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
6912   Close
6913     (qVar"state",
6914      ITE(Mop(Not,
6915              Dest
6916                ("CU1",bTy,
6917                 Dest
6918                   ("Status",CTy"StatusRegister",
6919                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
6920          Apply
6921            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
6922          Apply
6923            (Call
6924               ("write'FGR",ATy(qTy,qTy),
6925                TP[CS(Mop(FPToInt 32,
6926                          TP[Apply
6927                               (Const("Rounding_Mode",ATy(qTy,rTy)),
6928                                qVar"state"),
6929                             EX(Apply
6930                                  (Call
6931                                     ("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
6932                                   qVar"state"),LN 31,LN 0,F32)]),
6933                      [(Mop(Some,iVar"x"),
6934                        Call("IntToDWordMIPS",F64,iVar"x")),
6935                       (LO iTy,LW(9223372036854775807,64))]),
6936                   Var("fd",FTy 5)]),qVar"state"))))
6937;
6938val dfn'CVT_S_D_def = Def
6939  ("dfn'CVT_S_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
6940   Close
6941     (qVar"state",
6942      ITE(Mop(Not,
6943              Dest
6944                ("CU1",bTy,
6945                 Dest
6946                   ("Status",CTy"StatusRegister",
6947                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
6948          Apply
6949            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
6950          Apply
6951            (Call
6952               ("write'FGR",ATy(qTy,qTy),
6953                TP[Mop(SE F64,
6954                       Mop(FP64To32,
6955                           TP[Apply
6956                                (Const("Rounding_Mode",ATy(qTy,rTy)),
6957                                 qVar"state"),
6958                              Apply
6959                                (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
6960                                 qVar"state")])),Var("fd",FTy 5)]),
6961             qVar"state"))))
6962;
6963val dfn'CVT_S_L_def = Def
6964  ("dfn'CVT_S_L",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
6965   Close
6966     (qVar"state",
6967      ITE(Mop(Not,
6968              Dest
6969                ("CU1",bTy,
6970                 Dest
6971                   ("Status",CTy"StatusRegister",
6972                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
6973          Apply
6974            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
6975          Apply
6976            (Call
6977               ("write'FGR",ATy(qTy,qTy),
6978                TP[Mop(SE F64,
6979                       Mop(FPFromInt 32,
6980                           TP[Apply
6981                                (Const("Rounding_Mode",ATy(qTy,rTy)),
6982                                 qVar"state"),
6983                              Mop(Cast iTy,
6984                                  Apply
6985                                    (Call
6986                                       ("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
6987                                     qVar"state"))])),Var("fd",FTy 5)]),
6988             qVar"state"))))
6989;
6990val dfn'CVT_S_W_def = Def
6991  ("dfn'CVT_S_W",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
6992   Close
6993     (qVar"state",
6994      ITE(Mop(Not,
6995              Dest
6996                ("CU1",bTy,
6997                 Dest
6998                   ("Status",CTy"StatusRegister",
6999                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7000          Apply
7001            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
7002          Let(TP[Var("v",rTy),qVar"s"],
7003              Let(qVar"s0",
7004                  ITE(Call
7005                        ("NotWordValue",bTy,
7006                         Apply
7007                           (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
7008                            qVar"state")),
7009                      Mop(Snd,
7010                          Apply
7011                            (Call
7012                               ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
7013                                Call
7014                                  ("UNPREDICTABLE",CTy"exception",
7015                                   LS"CVT.S.W: NotWordValue")),qVar"state")),
7016                      qVar"state"),
7017                  TP[Apply(Const("Rounding_Mode",ATy(qTy,rTy)),qVar"s0"),
7018                     qVar"s0"]),
7019              Apply
7020                (Call
7021                   ("write'FGR",ATy(qTy,qTy),
7022                    TP[Mop(SE F64,
7023                           Mop(FPFromInt 32,
7024                               TP[Var("v",rTy),
7025                                  Mop(Cast iTy,
7026                                      EX(Apply
7027                                           (Call
7028                                              ("FGR",ATy(qTy,F64),
7029                                               Var("fs",FTy 5)),qVar"s"),
7030                                         LN 31,LN 0,F32))])),
7031                       Var("fd",FTy 5)]),qVar"s")))))
7032;
7033val dfn'CVT_W_D_def = Def
7034  ("dfn'CVT_W_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
7035   Close
7036     (qVar"state",
7037      ITE(Mop(Not,
7038              Dest
7039                ("CU1",bTy,
7040                 Dest
7041                   ("Status",CTy"StatusRegister",
7042                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7043          Apply
7044            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
7045          Apply
7046            (Call
7047               ("write'FGR",ATy(qTy,qTy),
7048                TP[CS(Mop(FPToInt 64,
7049                          TP[Apply
7050                               (Const("Rounding_Mode",ATy(qTy,rTy)),
7051                                qVar"state"),
7052                             Apply
7053                               (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
7054                                qVar"state")]),
7055                      [(Mop(Some,iVar"x"),
7056                        Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))),
7057                       (LO iTy,LW(2147483647,64))]),Var("fd",FTy 5)]),
7058             qVar"state"))))
7059;
7060val dfn'CVT_W_S_def = Def
7061  ("dfn'CVT_W_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
7062   Close
7063     (qVar"state",
7064      ITE(Mop(Not,
7065              Dest
7066                ("CU1",bTy,
7067                 Dest
7068                   ("Status",CTy"StatusRegister",
7069                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7070          Apply
7071            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
7072          Apply
7073            (Call
7074               ("write'FGR",ATy(qTy,qTy),
7075                TP[CS(Mop(FPToInt 32,
7076                          TP[Apply
7077                               (Const("Rounding_Mode",ATy(qTy,rTy)),
7078                                qVar"state"),
7079                             EX(Apply
7080                                  (Call
7081                                     ("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
7082                                   qVar"state"),LN 31,LN 0,F32)]),
7083                      [(Mop(Some,iVar"x"),
7084                        Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))),
7085                       (LO iTy,LW(2147483647,64))]),Var("fd",FTy 5)]),
7086             qVar"state"))))
7087;
7088val dfn'DIV_D_def = Def
7089  ("dfn'DIV_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
7090   Close
7091     (qVar"state",
7092      ITE(Mop(Not,
7093              Dest
7094                ("CU1",bTy,
7095                 Dest
7096                   ("Status",CTy"StatusRegister",
7097                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7098          Apply
7099            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
7100          Apply
7101            (Call
7102               ("write'FGR",ATy(qTy,qTy),
7103                TP[Apply
7104                     (Call
7105                        ("PostOpF64",ATy(qTy,F64),
7106                         Mop(FPDiv 64,
7107                             TP[Apply
7108                                  (Const("Rounding_Mode",ATy(qTy,rTy)),
7109                                   qVar"state"),
7110                                Apply
7111                                  (Call
7112                                     ("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
7113                                   qVar"state"),
7114                                Apply
7115                                  (Call
7116                                     ("FGR",ATy(qTy,F64),Var("ft",FTy 5)),
7117                                   qVar"state")])),qVar"state"),
7118                   Var("fd",FTy 5)]),qVar"state"))))
7119;
7120val dfn'DIV_S_def = Def
7121  ("dfn'DIV_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
7122   Close
7123     (qVar"state",
7124      ITE(Mop(Not,
7125              Dest
7126                ("CU1",bTy,
7127                 Dest
7128                   ("Status",CTy"StatusRegister",
7129                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7130          Apply
7131            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
7132          Apply
7133            (Call
7134               ("write'FGR",ATy(qTy,qTy),
7135                TP[Mop(SE F64,
7136                       Apply
7137                         (Call
7138                            ("PostOpF32",ATy(qTy,F32),
7139                             Mop(FPDiv 32,
7140                                 TP[Apply
7141                                      (Const("Rounding_Mode",ATy(qTy,rTy)),
7142                                       qVar"state"),
7143                                    EX(Apply
7144                                         (Call
7145                                            ("FGR",ATy(qTy,F64),
7146                                             Var("fs",FTy 5)),qVar"state"),
7147                                       LN 31,LN 0,F32),
7148                                    EX(Apply
7149                                         (Call
7150                                            ("FGR",ATy(qTy,F64),
7151                                             Var("ft",FTy 5)),qVar"state"),
7152                                       LN 31,LN 0,F32)])),qVar"state")),
7153                   Var("fd",FTy 5)]),qVar"state"))))
7154;
7155val dfn'FLOOR_L_D_def = Def
7156  ("dfn'FLOOR_L_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
7157   Close
7158     (qVar"state",
7159      ITE(Mop(Not,
7160              Dest
7161                ("CU1",bTy,
7162                 Dest
7163                   ("Status",CTy"StatusRegister",
7164                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7165          Apply
7166            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
7167          Apply
7168            (Call
7169               ("write'FGR",ATy(qTy,qTy),
7170                TP[CS(Mop(FPToInt 64,
7171                          TP[binary_ieeeSyntax.roundTowardNegative_tm,
7172                             Apply
7173                               (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
7174                                qVar"state")]),
7175                      [(Mop(Some,iVar"x"),
7176                        Call("IntToDWordMIPS",F64,iVar"x")),
7177                       (LO iTy,LW(9223372036854775807,64))]),
7178                   Var("fd",FTy 5)]),qVar"state"))))
7179;
7180val dfn'FLOOR_L_S_def = Def
7181  ("dfn'FLOOR_L_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
7182   Close
7183     (qVar"state",
7184      ITE(Mop(Not,
7185              Dest
7186                ("CU1",bTy,
7187                 Dest
7188                   ("Status",CTy"StatusRegister",
7189                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7190          Apply
7191            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
7192          Apply
7193            (Call
7194               ("write'FGR",ATy(qTy,qTy),
7195                TP[CS(Mop(FPToInt 32,
7196                          TP[binary_ieeeSyntax.roundTowardNegative_tm,
7197                             EX(Apply
7198                                  (Call
7199                                     ("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
7200                                   qVar"state"),LN 31,LN 0,F32)]),
7201                      [(Mop(Some,iVar"x"),
7202                        Call("IntToDWordMIPS",F64,iVar"x")),
7203                       (LO iTy,LW(9223372036854775807,64))]),
7204                   Var("fd",FTy 5)]),qVar"state"))))
7205;
7206val dfn'FLOOR_W_D_def = Def
7207  ("dfn'FLOOR_W_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
7208   Close
7209     (qVar"state",
7210      ITE(Mop(Not,
7211              Dest
7212                ("CU1",bTy,
7213                 Dest
7214                   ("Status",CTy"StatusRegister",
7215                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7216          Apply
7217            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
7218          Apply
7219            (Call
7220               ("write'FGR",ATy(qTy,qTy),
7221                TP[CS(Mop(FPToInt 64,
7222                          TP[binary_ieeeSyntax.roundTowardNegative_tm,
7223                             Apply
7224                               (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
7225                                qVar"state")]),
7226                      [(Mop(Some,iVar"x"),
7227                        Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))),
7228                       (LO iTy,LW(2147483647,64))]),Var("fd",FTy 5)]),
7229             qVar"state"))))
7230;
7231val dfn'FLOOR_W_S_def = Def
7232  ("dfn'FLOOR_W_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
7233   Close
7234     (qVar"state",
7235      ITE(Mop(Not,
7236              Dest
7237                ("CU1",bTy,
7238                 Dest
7239                   ("Status",CTy"StatusRegister",
7240                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7241          Apply
7242            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
7243          Apply
7244            (Call
7245               ("write'FGR",ATy(qTy,qTy),
7246                TP[CS(Mop(FPToInt 32,
7247                          TP[binary_ieeeSyntax.roundTowardNegative_tm,
7248                             EX(Apply
7249                                  (Call
7250                                     ("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
7251                                   qVar"state"),LN 31,LN 0,F32)]),
7252                      [(Mop(Some,iVar"x"),
7253                        Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))),
7254                       (LO iTy,LW(2147483647,64))]),Var("fd",FTy 5)]),
7255             qVar"state"))))
7256;
7257val dfn'LDC1_def = Def
7258  ("dfn'LDC1",TP[Var("ft",FTy 5),Var("offset",F16),Var("base",FTy 5)],
7259   Close
7260     (qVar"state",
7261      ITE(Mop(Not,
7262              Dest
7263                ("CU1",bTy,
7264                 Dest
7265                   ("Status",CTy"StatusRegister",
7266                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7267          Apply
7268            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
7269          Let(TP[Var("v",F64),qVar"s"],
7270              Apply
7271                (Call
7272                   ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
7273                    TP[Const("DOUBLEWORD",FTy 3),
7274                       Const("DOUBLEWORD",FTy 3),LT,
7275                       Apply
7276                         (Call
7277                            ("getVirtualAddress",ATy(qTy,F64),
7278                             Bop(Add,Mop(SE F64,Var("offset",F16)),
7279                                 Apply
7280                                   (Call
7281                                      ("GPR",ATy(qTy,F64),
7282                                       Var("base",FTy 5)),qVar"state"))),
7283                          qVar"state"),LF]),qVar"state"),
7284              ITE(Mop(Not,
7285                      Apply
7286                        (Const("exceptionSignalled",ATy(qTy,bTy)),qVar"s")),
7287                  Apply
7288                    (Call
7289                       ("write'FGR",ATy(qTy,qTy),
7290                        TP[Var("v",F64),Var("ft",FTy 5)]),qVar"s"),qVar"s")))))
7291;
7292val dfn'LDXC1_def = Def
7293  ("dfn'LDXC1",TP[Var("fd",FTy 5),Var("index",FTy 5),Var("base",FTy 5)],
7294   Close
7295     (qVar"state",
7296      ITE(Mop(Not,
7297              Dest
7298                ("CU1",bTy,
7299                 Dest
7300                   ("Status",CTy"StatusRegister",
7301                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7302          Apply
7303            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
7304          Let(TP[Var("v",F64),qVar"s"],
7305              Apply
7306                (Call
7307                   ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
7308                    TP[Const("DOUBLEWORD",FTy 3),
7309                       Const("DOUBLEWORD",FTy 3),LT,
7310                       Apply
7311                         (Call
7312                            ("getVirtualAddress",ATy(qTy,F64),
7313                             Bop(Add,
7314                                 Apply
7315                                   (Call
7316                                      ("GPR",ATy(qTy,F64),
7317                                       Var("index",FTy 5)),qVar"state"),
7318                                 Apply
7319                                   (Call
7320                                      ("GPR",ATy(qTy,F64),
7321                                       Var("base",FTy 5)),qVar"state"))),
7322                          qVar"state"),LF]),qVar"state"),
7323              ITE(Mop(Not,
7324                      Apply
7325                        (Const("exceptionSignalled",ATy(qTy,bTy)),qVar"s")),
7326                  Apply
7327                    (Call
7328                       ("write'FGR",ATy(qTy,qTy),
7329                        TP[Var("v",F64),Var("fd",FTy 5)]),qVar"s"),qVar"s")))))
7330;
7331val dfn'LWC1_def = Def
7332  ("dfn'LWC1",TP[Var("ft",FTy 5),Var("offset",F16),Var("base",FTy 5)],
7333   Close
7334     (qVar"state",
7335      ITE(Mop(Not,
7336              Dest
7337                ("CU1",bTy,
7338                 Dest
7339                   ("Status",CTy"StatusRegister",
7340                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7341          Apply
7342            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
7343          Let(Var("v",F64),
7344              Apply
7345                (Call
7346                   ("getVirtualAddress",ATy(qTy,F64),
7347                    Bop(Add,Mop(SE F64,Var("offset",F16)),
7348                        Apply
7349                          (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
7350                           qVar"state"))),qVar"state"),
7351              Let(TP[Var("v0",F64),qVar"s"],
7352                  Apply
7353                    (Call
7354                       ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
7355                        TP[Const("WORD",FTy 3),Const("WORD",FTy 3),LT,
7356                           Var("v",F64),LF]),qVar"state"),
7357                  ITE(Mop(Not,
7358                          Apply
7359                            (Const("exceptionSignalled",ATy(qTy,bTy)),
7360                             qVar"s")),
7361                      Let(Var("v1",FTy 3),
7362                          Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3),
7363                              CC[Apply
7364                                   (Const("BigEndianCPU",ATy(qTy,F1)),
7365                                    qVar"s"),LW(0,2)]),
7366                          Apply
7367                            (Call
7368                               ("write'FGR",ATy(qTy,qTy),
7369                                TP[Mop(SE F64,
7370                                       EX(Var("v0",F64),
7371                                          Bop(Add,LN 31,
7372                                              Bop(Mul,LN 8,
7373                                                  Mop(Cast nTy,
7374                                                      Var("v1",FTy 3)))),
7375                                          Bop(Mul,LN 8,
7376                                              Mop(Cast nTy,Var("v1",FTy 3))),
7377                                          F32)),Var("ft",FTy 5)]),qVar"s")),
7378                      qVar"s"))))))
7379;
7380val dfn'LWXC1_def = Def
7381  ("dfn'LWXC1",TP[Var("ft",FTy 5),Var("index",FTy 5),Var("base",FTy 5)],
7382   Close
7383     (qVar"state",
7384      ITE(Mop(Not,
7385              Dest
7386                ("CU1",bTy,
7387                 Dest
7388                   ("Status",CTy"StatusRegister",
7389                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7390          Apply
7391            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
7392          Let(Var("v",F64),
7393              Apply
7394                (Call
7395                   ("getVirtualAddress",ATy(qTy,F64),
7396                    Bop(Add,
7397                        Apply
7398                          (Call("GPR",ATy(qTy,F64),Var("index",FTy 5)),
7399                           qVar"state"),
7400                        Apply
7401                          (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
7402                           qVar"state"))),qVar"state"),
7403              Let(TP[Var("v0",F64),qVar"s"],
7404                  Apply
7405                    (Call
7406                       ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
7407                        TP[Const("WORD",FTy 3),Const("WORD",FTy 3),LT,
7408                           Var("v",F64),LF]),qVar"state"),
7409                  ITE(Mop(Not,
7410                          Apply
7411                            (Const("exceptionSignalled",ATy(qTy,bTy)),
7412                             qVar"s")),
7413                      Let(Var("v1",FTy 3),
7414                          Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3),
7415                              CC[Apply
7416                                   (Const("BigEndianCPU",ATy(qTy,F1)),
7417                                    qVar"s"),LW(0,2)]),
7418                          Apply
7419                            (Call
7420                               ("write'FGR",ATy(qTy,qTy),
7421                                TP[Mop(SE F64,
7422                                       EX(Var("v0",F64),
7423                                          Bop(Add,LN 31,
7424                                              Bop(Mul,LN 8,
7425                                                  Mop(Cast nTy,
7426                                                      Var("v1",FTy 3)))),
7427                                          Bop(Mul,LN 8,
7428                                              Mop(Cast nTy,Var("v1",FTy 3))),
7429                                          F32)),Var("ft",FTy 5)]),qVar"s")),
7430                      qVar"s"))))))
7431;
7432val dfn'MADD_D_def = Def
7433  ("dfn'MADD_D",
7434   TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
7435   Close
7436     (qVar"state",
7437      ITE(Mop(Not,
7438              Dest
7439                ("CU1",bTy,
7440                 Dest
7441                   ("Status",CTy"StatusRegister",
7442                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7443          Apply
7444            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
7445          Apply
7446            (Call
7447               ("write'FGR",ATy(qTy,qTy),
7448                TP[Apply
7449                     (Call
7450                        ("PostOpF64",ATy(qTy,F64),
7451                         Mop(FPAdd 64,
7452                             TP[Apply
7453                                  (Const("Rounding_Mode",ATy(qTy,rTy)),
7454                                   qVar"state"),
7455                                Apply
7456                                  (Call
7457                                     ("PostOpF64",ATy(qTy,F64),
7458                                      Mop(FPMul 64,
7459                                          TP[Apply
7460                                               (Const
7461                                                  ("Rounding_Mode",
7462                                                   ATy(qTy,rTy)),
7463                                                qVar"state"),
7464                                             Apply
7465                                               (Call
7466                                                  ("FGR",ATy(qTy,F64),
7467                                                   Var("fs",FTy 5)),
7468                                                qVar"state"),
7469                                             Apply
7470                                               (Call
7471                                                  ("FGR",ATy(qTy,F64),
7472                                                   Var("ft",FTy 5)),
7473                                                qVar"state")])),
7474                                   qVar"state"),
7475                                Apply
7476                                  (Call
7477                                     ("FGR",ATy(qTy,F64),Var("fr",FTy 5)),
7478                                   qVar"state")])),qVar"state"),
7479                   Var("fd",FTy 5)]),qVar"state"))))
7480;
7481val dfn'MADD_S_def = Def
7482  ("dfn'MADD_S",
7483   TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
7484   Close
7485     (qVar"state",
7486      ITE(Mop(Not,
7487              Dest
7488                ("CU1",bTy,
7489                 Dest
7490                   ("Status",CTy"StatusRegister",
7491                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7492          Apply
7493            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
7494          Apply
7495            (Call
7496               ("write'FGR",ATy(qTy,qTy),
7497                TP[Mop(SE F64,
7498                       Apply
7499                         (Call
7500                            ("PostOpF32",ATy(qTy,F32),
7501                             Mop(FPAdd 32,
7502                                 TP[Apply
7503                                      (Const("Rounding_Mode",ATy(qTy,rTy)),
7504                                       qVar"state"),
7505                                    Apply
7506                                      (Call
7507                                         ("PostOpF32",ATy(qTy,F32),
7508                                          Mop(FPMul 32,
7509                                              TP[Apply
7510                                                   (Const
7511                                                      ("Rounding_Mode",
7512                                                       ATy(qTy,rTy)),
7513                                                    qVar"state"),
7514                                                 EX(Apply
7515                                                      (Call
7516                                                         ("FGR",
7517                                                          ATy(qTy,F64),
7518                                                          Var("fs",FTy 5)),
7519                                                       qVar"state"),LN 31,
7520                                                    LN 0,F32),
7521                                                 EX(Apply
7522                                                      (Call
7523                                                         ("FGR",
7524                                                          ATy(qTy,F64),
7525                                                          Var("ft",FTy 5)),
7526                                                       qVar"state"),LN 31,
7527                                                    LN 0,F32)])),
7528                                       qVar"state"),
7529                                    EX(Apply
7530                                         (Call
7531                                            ("FGR",ATy(qTy,F64),
7532                                             Var("fr",FTy 5)),qVar"state"),
7533                                       LN 31,LN 0,F32)])),qVar"state")),
7534                   Var("fd",FTy 5)]),qVar"state"))))
7535;
7536val dfn'MOV_D_def = Def
7537  ("dfn'MOV_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
7538   Close
7539     (qVar"state",
7540      ITE(Mop(Not,
7541              Dest
7542                ("CU1",bTy,
7543                 Dest
7544                   ("Status",CTy"StatusRegister",
7545                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7546          Apply
7547            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
7548          Apply
7549            (Call
7550               ("write'FGR",ATy(qTy,qTy),
7551                TP[Apply
7552                     (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),qVar"state"),
7553                   Var("fd",FTy 5)]),qVar"state"))))
7554;
7555val dfn'MOV_S_def = Def
7556  ("dfn'MOV_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
7557   Close
7558     (qVar"state",
7559      ITE(Mop(Not,
7560              Dest
7561                ("CU1",bTy,
7562                 Dest
7563                   ("Status",CTy"StatusRegister",
7564                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7565          Apply
7566            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
7567          Apply
7568            (Call
7569               ("write'FGR",ATy(qTy,qTy),
7570                TP[Mop(SE F64,
7571                       EX(Apply
7572                            (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
7573                             qVar"state"),LN 31,LN 0,F32)),Var("fd",FTy 5)]),
7574             qVar"state"))))
7575;
7576val dfn'MOVF_def = Def
7577  ("dfn'MOVF",TP[Var("rd",FTy 5),Var("rs",FTy 5),Var("cc",FTy 3)],
7578   Close
7579     (qVar"state",
7580      ITB([(Mop(Not,
7581                Dest
7582                  ("CU1",bTy,
7583                   Dest
7584                     ("Status",CTy"StatusRegister",
7585                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7586            Apply
7587              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
7588               qVar"state")),
7589           (Mop(Not,
7590                Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")),
7591                    Mop(Cast nTy,Var("cc",FTy 3)))),
7592            Apply
7593              (Call
7594                 ("write'GPR",ATy(qTy,qTy),
7595                  TP[Apply
7596                       (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
7597                        qVar"state"),Var("rd",FTy 5)]),qVar"state"))],
7598          qVar"state")))
7599;
7600val dfn'MOVF_D_def = Def
7601  ("dfn'MOVF_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)],
7602   Close
7603     (qVar"state",
7604      ITB([(Mop(Not,
7605                Dest
7606                  ("CU1",bTy,
7607                   Dest
7608                     ("Status",CTy"StatusRegister",
7609                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7610            Apply
7611              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
7612               qVar"state")),
7613           (Mop(Not,
7614                Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")),
7615                    Mop(Cast nTy,Var("cc",FTy 3)))),
7616            Apply
7617              (Call
7618                 ("write'FGR",ATy(qTy,qTy),
7619                  TP[Apply
7620                       (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
7621                        qVar"state"),Var("fd",FTy 5)]),qVar"state"))],
7622          qVar"state")))
7623;
7624val dfn'MOVF_S_def = Def
7625  ("dfn'MOVF_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)],
7626   Close
7627     (qVar"state",
7628      ITB([(Mop(Not,
7629                Dest
7630                  ("CU1",bTy,
7631                   Dest
7632                     ("Status",CTy"StatusRegister",
7633                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7634            Apply
7635              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
7636               qVar"state")),
7637           (Mop(Not,
7638                Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")),
7639                    Mop(Cast nTy,Var("cc",FTy 3)))),
7640            Apply
7641              (Call
7642                 ("write'FGR",ATy(qTy,qTy),
7643                  TP[Mop(SE F64,
7644                         EX(Apply
7645                              (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
7646                               qVar"state"),LN 31,LN 0,F32)),
7647                     Var("fd",FTy 5)]),qVar"state"))],qVar"state")))
7648;
7649val dfn'MOVN_D_def = Def
7650  ("dfn'MOVN_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)],
7651   Close
7652     (qVar"state",
7653      ITB([(Mop(Not,
7654                Dest
7655                  ("CU1",bTy,
7656                   Dest
7657                     ("Status",CTy"StatusRegister",
7658                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7659            Apply
7660              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
7661               qVar"state")),
7662           (Mop(Not,
7663                EQ(Apply
7664                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
7665                   LW(0,64))),
7666            Apply
7667              (Call
7668                 ("write'FGR",ATy(qTy,qTy),
7669                  TP[Apply
7670                       (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
7671                        qVar"state"),Var("fd",FTy 5)]),qVar"state"))],
7672          qVar"state")))
7673;
7674val dfn'MOVN_S_def = Def
7675  ("dfn'MOVN_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)],
7676   Close
7677     (qVar"state",
7678      ITB([(Mop(Not,
7679                Dest
7680                  ("CU1",bTy,
7681                   Dest
7682                     ("Status",CTy"StatusRegister",
7683                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7684            Apply
7685              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
7686               qVar"state")),
7687           (Mop(Not,
7688                EQ(Apply
7689                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
7690                   LW(0,64))),
7691            Apply
7692              (Call
7693                 ("write'FGR",ATy(qTy,qTy),
7694                  TP[Mop(SE F64,
7695                         EX(Apply
7696                              (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
7697                               qVar"state"),LN 31,LN 0,F32)),
7698                     Var("fd",FTy 5)]),qVar"state"))],qVar"state")))
7699;
7700val dfn'MOVT_def = Def
7701  ("dfn'MOVT",TP[Var("rd",FTy 5),Var("rs",FTy 5),Var("cc",FTy 3)],
7702   Close
7703     (qVar"state",
7704      ITB([(Mop(Not,
7705                Dest
7706                  ("CU1",bTy,
7707                   Dest
7708                     ("Status",CTy"StatusRegister",
7709                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7710            Apply
7711              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
7712               qVar"state")),
7713           (Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")),
7714                Mop(Cast nTy,Var("cc",FTy 3))),
7715            Apply
7716              (Call
7717                 ("write'GPR",ATy(qTy,qTy),
7718                  TP[Apply
7719                       (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
7720                        qVar"state"),Var("rd",FTy 5)]),qVar"state"))],
7721          qVar"state")))
7722;
7723val dfn'MOVT_D_def = Def
7724  ("dfn'MOVT_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)],
7725   Close
7726     (qVar"state",
7727      ITB([(Mop(Not,
7728                Dest
7729                  ("CU1",bTy,
7730                   Dest
7731                     ("Status",CTy"StatusRegister",
7732                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7733            Apply
7734              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
7735               qVar"state")),
7736           (Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")),
7737                Mop(Cast nTy,Var("cc",FTy 3))),
7738            Apply
7739              (Call
7740                 ("write'FGR",ATy(qTy,qTy),
7741                  TP[Apply
7742                       (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
7743                        qVar"state"),Var("fd",FTy 5)]),qVar"state"))],
7744          qVar"state")))
7745;
7746val dfn'MOVT_S_def = Def
7747  ("dfn'MOVT_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)],
7748   Close
7749     (qVar"state",
7750      ITB([(Mop(Not,
7751                Dest
7752                  ("CU1",bTy,
7753                   Dest
7754                     ("Status",CTy"StatusRegister",
7755                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7756            Apply
7757              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
7758               qVar"state")),
7759           (Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")),
7760                Mop(Cast nTy,Var("cc",FTy 3))),
7761            Apply
7762              (Call
7763                 ("write'FGR",ATy(qTy,qTy),
7764                  TP[Mop(SE F64,
7765                         EX(Apply
7766                              (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
7767                               qVar"state"),LN 31,LN 0,F32)),
7768                     Var("fd",FTy 5)]),qVar"state"))],qVar"state")))
7769;
7770val dfn'MOVZ_D_def = Def
7771  ("dfn'MOVZ_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)],
7772   Close
7773     (qVar"state",
7774      ITB([(Mop(Not,
7775                Dest
7776                  ("CU1",bTy,
7777                   Dest
7778                     ("Status",CTy"StatusRegister",
7779                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7780            Apply
7781              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
7782               qVar"state")),
7783           (EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
7784               LW(0,64)),
7785            Apply
7786              (Call
7787                 ("write'FGR",ATy(qTy,qTy),
7788                  TP[Apply
7789                       (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
7790                        qVar"state"),Var("fd",FTy 5)]),qVar"state"))],
7791          qVar"state")))
7792;
7793val dfn'MOVZ_S_def = Def
7794  ("dfn'MOVZ_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)],
7795   Close
7796     (qVar"state",
7797      ITB([(Mop(Not,
7798                Dest
7799                  ("CU1",bTy,
7800                   Dest
7801                     ("Status",CTy"StatusRegister",
7802                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7803            Apply
7804              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
7805               qVar"state")),
7806           (EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
7807               LW(0,64)),
7808            Apply
7809              (Call
7810                 ("write'FGR",ATy(qTy,qTy),
7811                  TP[Mop(SE F64,
7812                         EX(Apply
7813                              (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
7814                               qVar"state"),LN 31,LN 0,F32)),
7815                     Var("fd",FTy 5)]),qVar"state"))],qVar"state")))
7816;
7817val dfn'MSUB_D_def = Def
7818  ("dfn'MSUB_D",
7819   TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
7820   Close
7821     (qVar"state",
7822      ITE(Mop(Not,
7823              Dest
7824                ("CU1",bTy,
7825                 Dest
7826                   ("Status",CTy"StatusRegister",
7827                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7828          Apply
7829            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
7830          Apply
7831            (Call
7832               ("write'FGR",ATy(qTy,qTy),
7833                TP[Apply
7834                     (Call
7835                        ("PostOpF64",ATy(qTy,F64),
7836                         Mop(FPSub 64,
7837                             TP[Apply
7838                                  (Const("Rounding_Mode",ATy(qTy,rTy)),
7839                                   qVar"state"),
7840                                Apply
7841                                  (Call
7842                                     ("PostOpF64",ATy(qTy,F64),
7843                                      Mop(FPMul 64,
7844                                          TP[Apply
7845                                               (Const
7846                                                  ("Rounding_Mode",
7847                                                   ATy(qTy,rTy)),
7848                                                qVar"state"),
7849                                             Apply
7850                                               (Call
7851                                                  ("FGR",ATy(qTy,F64),
7852                                                   Var("fs",FTy 5)),
7853                                                qVar"state"),
7854                                             Apply
7855                                               (Call
7856                                                  ("FGR",ATy(qTy,F64),
7857                                                   Var("ft",FTy 5)),
7858                                                qVar"state")])),
7859                                   qVar"state"),
7860                                Apply
7861                                  (Call
7862                                     ("FGR",ATy(qTy,F64),Var("fr",FTy 5)),
7863                                   qVar"state")])),qVar"state"),
7864                   Var("fd",FTy 5)]),qVar"state"))))
7865;
7866val dfn'MSUB_S_def = Def
7867  ("dfn'MSUB_S",
7868   TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
7869   Close
7870     (qVar"state",
7871      ITE(Mop(Not,
7872              Dest
7873                ("CU1",bTy,
7874                 Dest
7875                   ("Status",CTy"StatusRegister",
7876                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7877          Apply
7878            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
7879          Apply
7880            (Call
7881               ("write'FGR",ATy(qTy,qTy),
7882                TP[Mop(SE F64,
7883                       Apply
7884                         (Call
7885                            ("PostOpF32",ATy(qTy,F32),
7886                             Mop(FPSub 32,
7887                                 TP[Apply
7888                                      (Const("Rounding_Mode",ATy(qTy,rTy)),
7889                                       qVar"state"),
7890                                    Apply
7891                                      (Call
7892                                         ("PostOpF32",ATy(qTy,F32),
7893                                          Mop(FPMul 32,
7894                                              TP[Apply
7895                                                   (Const
7896                                                      ("Rounding_Mode",
7897                                                       ATy(qTy,rTy)),
7898                                                    qVar"state"),
7899                                                 EX(Apply
7900                                                      (Call
7901                                                         ("FGR",
7902                                                          ATy(qTy,F64),
7903                                                          Var("fs",FTy 5)),
7904                                                       qVar"state"),LN 31,
7905                                                    LN 0,F32),
7906                                                 EX(Apply
7907                                                      (Call
7908                                                         ("FGR",
7909                                                          ATy(qTy,F64),
7910                                                          Var("ft",FTy 5)),
7911                                                       qVar"state"),LN 31,
7912                                                    LN 0,F32)])),
7913                                       qVar"state"),
7914                                    EX(Apply
7915                                         (Call
7916                                            ("FGR",ATy(qTy,F64),
7917                                             Var("fr",FTy 5)),qVar"state"),
7918                                       LN 31,LN 0,F32)])),qVar"state")),
7919                   Var("fd",FTy 5)]),qVar"state"))))
7920;
7921val dfn'MUL_D_def = Def
7922  ("dfn'MUL_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
7923   Close
7924     (qVar"state",
7925      ITE(Mop(Not,
7926              Dest
7927                ("CU1",bTy,
7928                 Dest
7929                   ("Status",CTy"StatusRegister",
7930                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7931          Apply
7932            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
7933          Apply
7934            (Call
7935               ("write'FGR",ATy(qTy,qTy),
7936                TP[Apply
7937                     (Call
7938                        ("PostOpF64",ATy(qTy,F64),
7939                         Mop(FPMul 64,
7940                             TP[Apply
7941                                  (Const("Rounding_Mode",ATy(qTy,rTy)),
7942                                   qVar"state"),
7943                                Apply
7944                                  (Call
7945                                     ("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
7946                                   qVar"state"),
7947                                Apply
7948                                  (Call
7949                                     ("FGR",ATy(qTy,F64),Var("ft",FTy 5)),
7950                                   qVar"state")])),qVar"state"),
7951                   Var("fd",FTy 5)]),qVar"state"))))
7952;
7953val dfn'MUL_S_def = Def
7954  ("dfn'MUL_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
7955   Close
7956     (qVar"state",
7957      ITE(Mop(Not,
7958              Dest
7959                ("CU1",bTy,
7960                 Dest
7961                   ("Status",CTy"StatusRegister",
7962                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7963          Apply
7964            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
7965          Apply
7966            (Call
7967               ("write'FGR",ATy(qTy,qTy),
7968                TP[Mop(SE F64,
7969                       Apply
7970                         (Call
7971                            ("PostOpF32",ATy(qTy,F32),
7972                             Mop(FPMul 32,
7973                                 TP[Apply
7974                                      (Const("Rounding_Mode",ATy(qTy,rTy)),
7975                                       qVar"state"),
7976                                    EX(Apply
7977                                         (Call
7978                                            ("FGR",ATy(qTy,F64),
7979                                             Var("fs",FTy 5)),qVar"state"),
7980                                       LN 31,LN 0,F32),
7981                                    EX(Apply
7982                                         (Call
7983                                            ("FGR",ATy(qTy,F64),
7984                                             Var("ft",FTy 5)),qVar"state"),
7985                                       LN 31,LN 0,F32)])),qVar"state")),
7986                   Var("fd",FTy 5)]),qVar"state"))))
7987;
7988val dfn'NEG_D_def = Def
7989  ("dfn'NEG_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
7990   Close
7991     (qVar"state",
7992      ITB([(Mop(Not,
7993                Dest
7994                  ("CU1",bTy,
7995                   Dest
7996                     ("Status",CTy"StatusRegister",
7997                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
7998            Apply
7999              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
8000               qVar"state")),
8001           (Dest("ABS2008",bTy,Dest("fcsr",CTy"FCSR",qVar"state")),
8002            Apply
8003              (Call
8004                 ("write'FGR",ATy(qTy,qTy),
8005                  TP[Mop(FPNeg 64,
8006                         Apply
8007                           (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
8008                            qVar"state")),Var("fd",FTy 5)]),qVar"state"))],
8009          Apply
8010            (Call
8011               ("write'FGR",ATy(qTy,qTy),
8012                TP[Apply
8013                     (Call
8014                        ("PostOpF64",ATy(qTy,F64),
8015                         Call
8016                           ("FP64_Neg1985",F64,
8017                            Apply
8018                              (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
8019                               qVar"state"))),qVar"state"),Var("fd",FTy 5)]),
8020             qVar"state"))))
8021;
8022val dfn'NEG_S_def = Def
8023  ("dfn'NEG_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
8024   Close
8025     (qVar"state",
8026      ITB([(Mop(Not,
8027                Dest
8028                  ("CU1",bTy,
8029                   Dest
8030                     ("Status",CTy"StatusRegister",
8031                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8032            Apply
8033              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
8034               qVar"state")),
8035           (Dest("ABS2008",bTy,Dest("fcsr",CTy"FCSR",qVar"state")),
8036            Apply
8037              (Call
8038                 ("write'FGR",ATy(qTy,qTy),
8039                  TP[Mop(SE F64,
8040                         Mop(FPNeg 32,
8041                             EX(Apply
8042                                  (Call
8043                                     ("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
8044                                   qVar"state"),LN 31,LN 0,F32))),
8045                     Var("fd",FTy 5)]),qVar"state"))],
8046          Apply
8047            (Call
8048               ("write'FGR",ATy(qTy,qTy),
8049                TP[Mop(SE F64,
8050                       Apply
8051                         (Call
8052                            ("PostOpF32",ATy(qTy,F32),
8053                             Call
8054                               ("FP32_Neg1985",F32,
8055                                EX(Apply
8056                                     (Call
8057                                        ("FGR",ATy(qTy,F64),
8058                                         Var("fs",FTy 5)),qVar"state"),
8059                                   LN 31,LN 0,F32))),qVar"state")),
8060                   Var("fd",FTy 5)]),qVar"state"))))
8061;
8062val dfn'ROUND_L_D_def = Def
8063  ("dfn'ROUND_L_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
8064   Close
8065     (qVar"state",
8066      ITE(Mop(Not,
8067              Dest
8068                ("CU1",bTy,
8069                 Dest
8070                   ("Status",CTy"StatusRegister",
8071                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8072          Apply
8073            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8074          Apply
8075            (Call
8076               ("write'FGR",ATy(qTy,qTy),
8077                TP[CS(Mop(FPToInt 64,
8078                          TP[binary_ieeeSyntax.roundTiesToEven_tm,
8079                             Apply
8080                               (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
8081                                qVar"state")]),
8082                      [(Mop(Some,iVar"x"),
8083                        Call("IntToDWordMIPS",F64,iVar"x")),
8084                       (LO iTy,LW(9223372036854775807,64))]),
8085                   Var("fd",FTy 5)]),qVar"state"))))
8086;
8087val dfn'ROUND_L_S_def = Def
8088  ("dfn'ROUND_L_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
8089   Close
8090     (qVar"state",
8091      ITE(Mop(Not,
8092              Dest
8093                ("CU1",bTy,
8094                 Dest
8095                   ("Status",CTy"StatusRegister",
8096                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8097          Apply
8098            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8099          Apply
8100            (Call
8101               ("write'FGR",ATy(qTy,qTy),
8102                TP[CS(Mop(FPToInt 32,
8103                          TP[binary_ieeeSyntax.roundTiesToEven_tm,
8104                             EX(Apply
8105                                  (Call
8106                                     ("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
8107                                   qVar"state"),LN 31,LN 0,F32)]),
8108                      [(Mop(Some,iVar"x"),
8109                        Call("IntToDWordMIPS",F64,iVar"x")),
8110                       (LO iTy,LW(9223372036854775807,64))]),
8111                   Var("fd",FTy 5)]),qVar"state"))))
8112;
8113val dfn'ROUND_W_D_def = Def
8114  ("dfn'ROUND_W_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
8115   Close
8116     (qVar"state",
8117      ITE(Mop(Not,
8118              Dest
8119                ("CU1",bTy,
8120                 Dest
8121                   ("Status",CTy"StatusRegister",
8122                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8123          Apply
8124            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8125          Apply
8126            (Call
8127               ("write'FGR",ATy(qTy,qTy),
8128                TP[CS(Mop(FPToInt 64,
8129                          TP[binary_ieeeSyntax.roundTiesToEven_tm,
8130                             Apply
8131                               (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
8132                                qVar"state")]),
8133                      [(Mop(Some,iVar"x"),
8134                        Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))),
8135                       (LO iTy,LW(2147483647,64))]),Var("fd",FTy 5)]),
8136             qVar"state"))))
8137;
8138val dfn'ROUND_W_S_def = Def
8139  ("dfn'ROUND_W_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
8140   Close
8141     (qVar"state",
8142      ITE(Mop(Not,
8143              Dest
8144                ("CU1",bTy,
8145                 Dest
8146                   ("Status",CTy"StatusRegister",
8147                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8148          Apply
8149            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8150          Apply
8151            (Call
8152               ("write'FGR",ATy(qTy,qTy),
8153                TP[CS(Mop(FPToInt 32,
8154                          TP[binary_ieeeSyntax.roundTiesToEven_tm,
8155                             EX(Apply
8156                                  (Call
8157                                     ("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
8158                                   qVar"state"),LN 31,LN 0,F32)]),
8159                      [(Mop(Some,iVar"x"),
8160                        Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))),
8161                       (LO iTy,LW(2147483647,64))]),Var("fd",FTy 5)]),
8162             qVar"state"))))
8163;
8164val dfn'SDC1_def = Def
8165  ("dfn'SDC1",TP[Var("ft",FTy 5),Var("offset",F16),Var("base",FTy 5)],
8166   Close
8167     (qVar"state",
8168      ITE(Mop(Not,
8169              Dest
8170                ("CU1",bTy,
8171                 Dest
8172                   ("Status",CTy"StatusRegister",
8173                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8174          Apply
8175            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8176          Mop(Snd,
8177              Apply
8178                (Call
8179                   ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
8180                    TP[Const("DOUBLEWORD",FTy 3),
8181                       Const("DOUBLEWORD",FTy 3),LT,
8182                       Apply
8183                         (Call("FGR",ATy(qTy,F64),Var("ft",FTy 5)),
8184                          qVar"state"),
8185                       Apply
8186                         (Call
8187                            ("getVirtualAddress",ATy(qTy,F64),
8188                             Bop(Add,Mop(SE F64,Var("offset",F16)),
8189                                 Apply
8190                                   (Call
8191                                      ("GPR",ATy(qTy,F64),
8192                                       Var("base",FTy 5)),qVar"state"))),
8193                          qVar"state"),LF]),qVar"state")))))
8194;
8195val dfn'SDXC1_def = Def
8196  ("dfn'SDXC1",TP[Var("fs",FTy 5),Var("index",FTy 5),Var("base",FTy 5)],
8197   Close
8198     (qVar"state",
8199      ITE(Mop(Not,
8200              Dest
8201                ("CU1",bTy,
8202                 Dest
8203                   ("Status",CTy"StatusRegister",
8204                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8205          Apply
8206            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8207          Mop(Snd,
8208              Apply
8209                (Call
8210                   ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
8211                    TP[Const("DOUBLEWORD",FTy 3),
8212                       Const("DOUBLEWORD",FTy 3),LT,
8213                       Apply
8214                         (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
8215                          qVar"state"),
8216                       Apply
8217                         (Call
8218                            ("getVirtualAddress",ATy(qTy,F64),
8219                             Bop(Add,
8220                                 Apply
8221                                   (Call
8222                                      ("GPR",ATy(qTy,F64),
8223                                       Var("index",FTy 5)),qVar"state"),
8224                                 Apply
8225                                   (Call
8226                                      ("GPR",ATy(qTy,F64),
8227                                       Var("base",FTy 5)),qVar"state"))),
8228                          qVar"state"),LF]),qVar"state")))))
8229;
8230val dfn'SQRT_D_def = Def
8231  ("dfn'SQRT_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
8232   Close
8233     (qVar"state",
8234      ITE(Mop(Not,
8235              Dest
8236                ("CU1",bTy,
8237                 Dest
8238                   ("Status",CTy"StatusRegister",
8239                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8240          Apply
8241            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8242          Apply
8243            (Call
8244               ("write'FGR",ATy(qTy,qTy),
8245                TP[Apply
8246                     (Call
8247                        ("PostOpF64",ATy(qTy,F64),
8248                         Mop(FPSqrt 64,
8249                             TP[Apply
8250                                  (Const("Rounding_Mode",ATy(qTy,rTy)),
8251                                   qVar"state"),
8252                                Apply
8253                                  (Call
8254                                     ("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
8255                                   qVar"state")])),qVar"state"),
8256                   Var("fd",FTy 5)]),qVar"state"))))
8257;
8258val dfn'SQRT_S_def = Def
8259  ("dfn'SQRT_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
8260   Close
8261     (qVar"state",
8262      ITE(Mop(Not,
8263              Dest
8264                ("CU1",bTy,
8265                 Dest
8266                   ("Status",CTy"StatusRegister",
8267                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8268          Apply
8269            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8270          Apply
8271            (Call
8272               ("write'FGR",ATy(qTy,qTy),
8273                TP[Mop(SE F64,
8274                       Apply
8275                         (Call
8276                            ("PostOpF32",ATy(qTy,F32),
8277                             Mop(FPSqrt 32,
8278                                 TP[Apply
8279                                      (Const("Rounding_Mode",ATy(qTy,rTy)),
8280                                       qVar"state"),
8281                                    EX(Apply
8282                                         (Call
8283                                            ("FGR",ATy(qTy,F64),
8284                                             Var("fs",FTy 5)),qVar"state"),
8285                                       LN 31,LN 0,F32)])),qVar"state")),
8286                   Var("fd",FTy 5)]),qVar"state"))))
8287;
8288val dfn'SUB_D_def = Def
8289  ("dfn'SUB_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
8290   Close
8291     (qVar"state",
8292      ITE(Mop(Not,
8293              Dest
8294                ("CU1",bTy,
8295                 Dest
8296                   ("Status",CTy"StatusRegister",
8297                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8298          Apply
8299            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8300          Apply
8301            (Call
8302               ("write'FGR",ATy(qTy,qTy),
8303                TP[Apply
8304                     (Call
8305                        ("PostOpF64",ATy(qTy,F64),
8306                         Mop(FPSub 64,
8307                             TP[Apply
8308                                  (Const("Rounding_Mode",ATy(qTy,rTy)),
8309                                   qVar"state"),
8310                                Apply
8311                                  (Call
8312                                     ("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
8313                                   qVar"state"),
8314                                Apply
8315                                  (Call
8316                                     ("FGR",ATy(qTy,F64),Var("ft",FTy 5)),
8317                                   qVar"state")])),qVar"state"),
8318                   Var("fd",FTy 5)]),qVar"state"))))
8319;
8320val dfn'SUB_S_def = Def
8321  ("dfn'SUB_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
8322   Close
8323     (qVar"state",
8324      ITE(Mop(Not,
8325              Dest
8326                ("CU1",bTy,
8327                 Dest
8328                   ("Status",CTy"StatusRegister",
8329                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8330          Apply
8331            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8332          Apply
8333            (Call
8334               ("write'FGR",ATy(qTy,qTy),
8335                TP[Mop(SE F64,
8336                       Apply
8337                         (Call
8338                            ("PostOpF32",ATy(qTy,F32),
8339                             Mop(FPSub 32,
8340                                 TP[Apply
8341                                      (Const("Rounding_Mode",ATy(qTy,rTy)),
8342                                       qVar"state"),
8343                                    EX(Apply
8344                                         (Call
8345                                            ("FGR",ATy(qTy,F64),
8346                                             Var("fs",FTy 5)),qVar"state"),
8347                                       LN 31,LN 0,F32),
8348                                    EX(Apply
8349                                         (Call
8350                                            ("FGR",ATy(qTy,F64),
8351                                             Var("ft",FTy 5)),qVar"state"),
8352                                       LN 31,LN 0,F32)])),qVar"state")),
8353                   Var("fd",FTy 5)]),qVar"state"))))
8354;
8355val dfn'SWC1_def = Def
8356  ("dfn'SWC1",TP[Var("ft",FTy 5),Var("offset",F16),Var("base",FTy 5)],
8357   Close
8358     (qVar"state",
8359      ITE(Mop(Not,
8360              Dest
8361                ("CU1",bTy,
8362                 Dest
8363                   ("Status",CTy"StatusRegister",
8364                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8365          Apply
8366            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8367          Let(Var("v",F64),
8368              Apply
8369                (Call
8370                   ("getVirtualAddress",ATy(qTy,F64),
8371                    Bop(Add,Mop(SE F64,Var("offset",F16)),
8372                        Apply
8373                          (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
8374                           qVar"state"))),qVar"state"),
8375              Mop(Snd,
8376                  Apply
8377                    (Call
8378                       ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
8379                        TP[Const("WORD",FTy 3),Const("WORD",FTy 3),LT,
8380                           Bop(Lsl,
8381                               Apply
8382                                 (Call("FGR",ATy(qTy,F64),Var("ft",FTy 5)),
8383                                  qVar"state"),
8384                               Bop(Mul,LN 8,
8385                                   Mop(Cast nTy,
8386                                       Bop(BXor,
8387                                           EX(Var("v",F64),LN 2,LN 0,FTy 3),
8388                                           CC[Apply
8389                                                (Const
8390                                                   ("BigEndianCPU",
8391                                                    ATy(qTy,F1)),
8392                                                 qVar"state"),LW(0,2)])))),
8393                           Var("v",F64),LF]),qVar"state"))))))
8394;
8395val dfn'SWXC1_def = Def
8396  ("dfn'SWXC1",TP[Var("ft",FTy 5),Var("index",FTy 5),Var("base",FTy 5)],
8397   Close
8398     (qVar"state",
8399      ITE(Mop(Not,
8400              Dest
8401                ("CU1",bTy,
8402                 Dest
8403                   ("Status",CTy"StatusRegister",
8404                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8405          Apply
8406            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8407          Let(Var("v",F64),
8408              Apply
8409                (Call
8410                   ("getVirtualAddress",ATy(qTy,F64),
8411                    Bop(Add,
8412                        Apply
8413                          (Call("GPR",ATy(qTy,F64),Var("index",FTy 5)),
8414                           qVar"state"),
8415                        Apply
8416                          (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
8417                           qVar"state"))),qVar"state"),
8418              Mop(Snd,
8419                  Apply
8420                    (Call
8421                       ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
8422                        TP[Const("WORD",FTy 3),Const("WORD",FTy 3),LT,
8423                           Bop(Lsl,
8424                               Apply
8425                                 (Call("FGR",ATy(qTy,F64),Var("ft",FTy 5)),
8426                                  qVar"state"),
8427                               Bop(Mul,LN 8,
8428                                   Mop(Cast nTy,
8429                                       Bop(BXor,
8430                                           EX(Var("v",F64),LN 2,LN 0,FTy 3),
8431                                           CC[Apply
8432                                                (Const
8433                                                   ("BigEndianCPU",
8434                                                    ATy(qTy,F1)),
8435                                                 qVar"state"),LW(0,2)])))),
8436                           Var("v",F64),LF]),qVar"state"))))))
8437;
8438val dfn'TRUNC_L_D_def = Def
8439  ("dfn'TRUNC_L_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
8440   Close
8441     (qVar"state",
8442      ITE(Mop(Not,
8443              Dest
8444                ("CU1",bTy,
8445                 Dest
8446                   ("Status",CTy"StatusRegister",
8447                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8448          Apply
8449            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8450          Apply
8451            (Call
8452               ("write'FGR",ATy(qTy,qTy),
8453                TP[CS(Mop(FPToInt 64,
8454                          TP[binary_ieeeSyntax.roundTowardZero_tm,
8455                             Apply
8456                               (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
8457                                qVar"state")]),
8458                      [(Mop(Some,iVar"x"),
8459                        Call("IntToDWordMIPS",F64,iVar"x")),
8460                       (LO iTy,LW(9223372036854775807,64))]),
8461                   Var("fd",FTy 5)]),qVar"state"))))
8462;
8463val dfn'TRUNC_L_S_def = Def
8464  ("dfn'TRUNC_L_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
8465   Close
8466     (qVar"state",
8467      ITE(Mop(Not,
8468              Dest
8469                ("CU1",bTy,
8470                 Dest
8471                   ("Status",CTy"StatusRegister",
8472                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8473          Apply
8474            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8475          Apply
8476            (Call
8477               ("write'FGR",ATy(qTy,qTy),
8478                TP[CS(Mop(FPToInt 32,
8479                          TP[binary_ieeeSyntax.roundTowardZero_tm,
8480                             EX(Apply
8481                                  (Call
8482                                     ("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
8483                                   qVar"state"),LN 31,LN 0,F32)]),
8484                      [(Mop(Some,iVar"x"),
8485                        Call("IntToDWordMIPS",F64,iVar"x")),
8486                       (LO iTy,LW(9223372036854775807,64))]),
8487                   Var("fd",FTy 5)]),qVar"state"))))
8488;
8489val dfn'TRUNC_W_D_def = Def
8490  ("dfn'TRUNC_W_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
8491   Close
8492     (qVar"state",
8493      ITE(Mop(Not,
8494              Dest
8495                ("CU1",bTy,
8496                 Dest
8497                   ("Status",CTy"StatusRegister",
8498                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8499          Apply
8500            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8501          Apply
8502            (Call
8503               ("write'FGR",ATy(qTy,qTy),
8504                TP[CS(Mop(FPToInt 64,
8505                          TP[binary_ieeeSyntax.roundTowardZero_tm,
8506                             Apply
8507                               (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
8508                                qVar"state")]),
8509                      [(Mop(Some,iVar"x"),
8510                        Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))),
8511                       (LO iTy,LW(2147483647,64))]),Var("fd",FTy 5)]),
8512             qVar"state"))))
8513;
8514val dfn'TRUNC_W_S_def = Def
8515  ("dfn'TRUNC_W_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
8516   Close
8517     (qVar"state",
8518      ITE(Mop(Not,
8519              Dest
8520                ("CU1",bTy,
8521                 Dest
8522                   ("Status",CTy"StatusRegister",
8523                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8524          Apply
8525            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8526          Apply
8527            (Call
8528               ("write'FGR",ATy(qTy,qTy),
8529                TP[CS(Mop(FPToInt 32,
8530                          TP[binary_ieeeSyntax.roundTowardZero_tm,
8531                             EX(Apply
8532                                  (Call
8533                                     ("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
8534                                   qVar"state"),LN 31,LN 0,F32)]),
8535                      [(Mop(Some,iVar"x"),
8536                        Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))),
8537                       (LO iTy,LW(2147483647,64))]),Var("fd",FTy 5)]),
8538             qVar"state"))))
8539;
8540val dfn'DMFC1_def = Def
8541  ("dfn'DMFC1",TP[Var("rt",FTy 5),Var("fs",FTy 5)],
8542   Close
8543     (qVar"state",
8544      ITE(Mop(Not,
8545              Dest
8546                ("CU1",bTy,
8547                 Dest
8548                   ("Status",CTy"StatusRegister",
8549                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8550          Apply
8551            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8552          Apply
8553            (Call
8554               ("write'GPR",ATy(qTy,qTy),
8555                TP[Apply
8556                     (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),qVar"state"),
8557                   Var("rt",FTy 5)]),qVar"state"))))
8558;
8559val dfn'DMTC1_def = Def
8560  ("dfn'DMTC1",TP[Var("rt",FTy 5),Var("fs",FTy 5)],
8561   Close
8562     (qVar"state",
8563      ITE(Mop(Not,
8564              Dest
8565                ("CU1",bTy,
8566                 Dest
8567                   ("Status",CTy"StatusRegister",
8568                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8569          Apply
8570            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8571          Apply
8572            (Call
8573               ("write'FGR",ATy(qTy,qTy),
8574                TP[Apply
8575                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
8576                   Var("fs",FTy 5)]),qVar"state"))))
8577;
8578val dfn'MFC1_def = Def
8579  ("dfn'MFC1",TP[Var("rt",FTy 5),Var("fs",FTy 5)],
8580   Close
8581     (qVar"state",
8582      ITE(Mop(Not,
8583              Dest
8584                ("CU1",bTy,
8585                 Dest
8586                   ("Status",CTy"StatusRegister",
8587                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8588          Apply
8589            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8590          Apply
8591            (Call
8592               ("write'GPR",ATy(qTy,qTy),
8593                TP[Mop(SE F64,
8594                       EX(Apply
8595                            (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),
8596                             qVar"state"),LN 31,LN 0,F32)),Var("rt",FTy 5)]),
8597             qVar"state"))))
8598;
8599val dfn'MTC1_def = Def
8600  ("dfn'MTC1",TP[Var("rt",FTy 5),Var("fs",FTy 5)],
8601   Close
8602     (qVar"state",
8603      ITE(Mop(Not,
8604              Dest
8605                ("CU1",bTy,
8606                 Dest
8607                   ("Status",CTy"StatusRegister",
8608                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8609          Apply
8610            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8611          Apply
8612            (Call
8613               ("write'FGR",ATy(qTy,qTy),
8614                TP[Mop(SE F64,
8615                       EX(Apply
8616                            (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
8617                             qVar"state"),LN 31,LN 0,F32)),Var("fs",FTy 5)]),
8618             qVar"state"))))
8619;
8620val dfn'CFC1_def = Def
8621  ("dfn'CFC1",TP[Var("rt",FTy 5),Var("fs",FTy 5)],
8622   Close
8623     (qVar"state",
8624      ITE(Mop(Not,
8625              Dest
8626                ("CU1",bTy,
8627                 Dest
8628                   ("Status",CTy"StatusRegister",
8629                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8630          Apply
8631            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8632          Let(TP[Var("v",F64),qVar"s"],
8633              CS(Var("fs",FTy 5),
8634                 [(LW(0,5),
8635                   TP[Mop(SE F64,
8636                          Call
8637                            ("reg'FIR",F32,
8638                             Dest("fir",CTy"FIR",qVar"state"))),
8639                      qVar"state"]),
8640                  (LW(25,5),
8641                   TP[Mop(Cast F64,
8642                          Dest
8643                            ("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state"))),
8644                      qVar"state"]),
8645                  (LW(31,5),
8646                   TP[Mop(SE F64,
8647                          Call
8648                            ("reg'FCSR",F32,
8649                             Dest("fcsr",CTy"FCSR",qVar"state"))),
8650                      qVar"state"]),
8651                  (AVar(FTy 5),
8652                   Apply
8653                     (Call
8654                        ("raise'exception",ATy(qTy,PTy(F64,qTy)),
8655                         Call
8656                           ("UNPREDICTABLE",CTy"exception",
8657                            LS
8658                             "Unsupported floating point control register")),
8659                      qVar"state"))]),
8660              Apply
8661                (Call
8662                   ("write'GPR",ATy(qTy,qTy),
8663                    TP[Var("v",F64),Var("rt",FTy 5)]),qVar"s")))))
8664;
8665val dfn'CTC1_def = Def
8666  ("dfn'CTC1",TP[Var("rt",FTy 5),Var("fs",FTy 5)],
8667   Close
8668     (qVar"state",
8669      ITE(Mop(Not,
8670              Dest
8671                ("CU1",bTy,
8672                 Dest
8673                   ("Status",CTy"StatusRegister",
8674                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8675          Apply
8676            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8677          CS(Var("fs",FTy 5),
8678             [(LW(0,5),qVar"state"),
8679              (LW(25,5),
8680               Rupd
8681                 ("fcsr",
8682                  TP[qVar"state",
8683                     Rupd
8684                       ("FCC",
8685                        TP[Dest("fcsr",CTy"FCSR",qVar"state"),
8686                           EX(Apply
8687                                (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
8688                                 qVar"state"),LN 7,LN 0,F8)])])),
8689              (LW(31,5),
8690               Let(qVar"s",
8691                   Rupd
8692                     ("fcsr",
8693                      TP[qVar"state",
8694                         Call
8695                           ("write'reg'FCSR",CTy"FCSR",
8696                            TP[Dest("fcsr",CTy"FCSR",qVar"state"),
8697                               EX(Apply
8698                                    (Call
8699                                       ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
8700                                     qVar"state"),LN 31,LN 0,F32)])]),
8701                   Rupd
8702                     ("fcsr",
8703                      TP[qVar"s",
8704                         Rupd
8705                           ("NAN2008",
8706                            TP[Dest("fcsr",CTy"FCSR",qVar"s"),LT])]))),
8707              (AVar(FTy 5),
8708               Mop(Snd,
8709                   Apply
8710                     (Call
8711                        ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
8712                         Call
8713                           ("UNPREDICTABLE",CTy"exception",
8714                            LS
8715                             "Unsupported floating point control register")),
8716                      qVar"state")))]))))
8717;
8718val dfn'UnknownFPInstruction_def = Def
8719  ("dfn'UnknownFPInstruction",qVar"state",
8720   ITE(Mop(Not,
8721           Dest
8722             ("CU1",bTy,
8723              Dest
8724                ("Status",CTy"StatusRegister",
8725                 Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8726       Apply(Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
8727       Apply
8728         (Call
8729            ("SignalException",ATy(qTy,qTy),LC("ResI",CTy"ExceptionType")),
8730          qVar"state")))
8731;
8732val register_inaccessible_def = Def
8733  ("register_inaccessible",Var("cb",FTy 5),
8734   Close
8735     (qVar"state",
8736      Mop(Not,
8737          Apply
8738            (Call
8739               ("allow_system_reg_access",ATy(qTy,bTy),
8740                TP[Call
8741                     ("getPerms",CTy"Perms",
8742                      Apply
8743                        (Const("PCC",ATy(qTy,CTy"Capability")),qVar"state")),
8744                   Var("cb",FTy 5)]),qVar"state"))))
8745;
8746val register_inaccessible_write_attempt_def = Def
8747  ("register_inaccessible_write_attempt",Var("mask",F16),
8748   Close
8749     (qVar"state",
8750      Let(TP[bVar"r",Var("s1",PTy(bTy,qTy))],
8751          Let(Var("s",PTy(bTy,qTy)),
8752              ITB([(Bop(And,Bop(Bit,Var("mask",F16),LN 15),
8753                        Apply
8754                          (Call
8755                             ("register_inaccessible",ATy(qTy,bTy),
8756                              LW(31,5)),qVar"state")),
8757                    TP[LT,
8758                       Apply
8759                         (Call
8760                            ("SignalCapException",ATy(qTy,qTy),
8761                             TP[LC("capExcAccessSysReg",
8762                                   CTy"CapExceptionType"),LW(31,5)]),
8763                          qVar"state")]),
8764                   (Bop(And,Bop(Bit,Var("mask",F16),LN 14),
8765                        Apply
8766                          (Call
8767                             ("register_inaccessible",ATy(qTy,bTy),
8768                              LW(30,5)),qVar"state")),
8769                    TP[LT,
8770                       Apply
8771                         (Call
8772                            ("SignalCapException",ATy(qTy,qTy),
8773                             TP[LC("capExcAccessSysReg",
8774                                   CTy"CapExceptionType"),LW(30,5)]),
8775                          qVar"state")]),
8776                   (Bop(And,Bop(Bit,Var("mask",F16),LN 13),
8777                        Apply
8778                          (Call
8779                             ("register_inaccessible",ATy(qTy,bTy),
8780                              LW(29,5)),qVar"state")),
8781                    TP[LT,
8782                       Apply
8783                         (Call
8784                            ("SignalCapException",ATy(qTy,qTy),
8785                             TP[LC("capExcAccessSysReg",
8786                                   CTy"CapExceptionType"),LW(29,5)]),
8787                          qVar"state")]),
8788                   (Bop(And,Bop(Bit,Var("mask",F16),LN 11),
8789                        Apply
8790                          (Call
8791                             ("register_inaccessible",ATy(qTy,bTy),
8792                              LW(27,5)),qVar"state")),
8793                    TP[LT,
8794                       Apply
8795                         (Call
8796                            ("SignalCapException",ATy(qTy,qTy),
8797                             TP[LC("capExcAccessSysReg",
8798                                   CTy"CapExceptionType"),LW(27,5)]),
8799                          qVar"state")]),
8800                   (Bop(And,Bop(Bit,Var("mask",F16),LN 12),
8801                        Apply
8802                          (Call
8803                             ("register_inaccessible",ATy(qTy,bTy),
8804                              LW(28,5)),qVar"state")),
8805                    TP[LT,
8806                       Apply
8807                         (Call
8808                            ("SignalCapException",ATy(qTy,qTy),
8809                             TP[LC("capExcAccessSysReg",
8810                                   CTy"CapExceptionType"),LW(28,5)]),
8811                          qVar"state")])],TP[LF,qVar"state"]),
8812              TP[Mop(Fst,Var("s",PTy(bTy,qTy))),Var("s",PTy(bTy,qTy))]),
8813          TP[bVar"r",Mop(Snd,Var("s1",PTy(bTy,qTy)))])))
8814;
8815val watchOOB_def = Def
8816  ("watchOOB",TP[Var("cap",CTy"Capability"),Var("pc",F64)],
8817   Close(qVar"state",LU))
8818;
8819val SignExtendBitString_def = Def
8820  ("SignExtendBitString",TP[nVar"w",vVar"x"],
8821   Mop(PadLeft,TP[Mop(Head,vVar"x"),nVar"w",vVar"x"]))
8822;
8823val ZeroExtendBitString_def = Def
8824  ("ZeroExtendBitString",TP[nVar"w",vVar"x"],
8825   Mop(PadLeft,TP[LF,nVar"w",vVar"x"]))
8826;
8827val dfn'DumpCapReg_def = Def0 ("dfn'DumpCapReg",LU)
8828;
8829val dfn'CGetBase_def = Def
8830  ("dfn'CGetBase",TP[Var("rd",FTy 5),Var("cb",FTy 5)],
8831   Close
8832     (qVar"state",
8833      ITB([(Mop(Not,
8834                Dest
8835                  ("CU2",bTy,
8836                   Dest
8837                     ("Status",CTy"StatusRegister",
8838                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8839            Apply
8840              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
8841               qVar"state")),
8842           (Apply
8843              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
8844               qVar"state"),
8845            Apply
8846              (Call
8847                 ("SignalCapException",ATy(qTy,qTy),
8848                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
8849                     Var("cb",FTy 5)]),qVar"state"))],
8850          Apply
8851            (Call
8852               ("write'GPR",ATy(qTy,qTy),
8853                TP[Call
8854                     ("getBase",F64,
8855                      Apply
8856                        (Call
8857                           ("CAPR",ATy(qTy,CTy"Capability"),
8858                            Var("cb",FTy 5)),qVar"state")),Var("rd",FTy 5)]),
8859             qVar"state"))))
8860;
8861val dfn'CGetOffset_def = Def
8862  ("dfn'CGetOffset",TP[Var("rd",FTy 5),Var("cb",FTy 5)],
8863   Close
8864     (qVar"state",
8865      ITB([(Mop(Not,
8866                Dest
8867                  ("CU2",bTy,
8868                   Dest
8869                     ("Status",CTy"StatusRegister",
8870                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8871            Apply
8872              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
8873               qVar"state")),
8874           (Apply
8875              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
8876               qVar"state"),
8877            Apply
8878              (Call
8879                 ("SignalCapException",ATy(qTy,qTy),
8880                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
8881                     Var("cb",FTy 5)]),qVar"state"))],
8882          Apply
8883            (Call
8884               ("write'GPR",ATy(qTy,qTy),
8885                TP[Call
8886                     ("getOffset",F64,
8887                      Apply
8888                        (Call
8889                           ("CAPR",ATy(qTy,CTy"Capability"),
8890                            Var("cb",FTy 5)),qVar"state")),Var("rd",FTy 5)]),
8891             qVar"state"))))
8892;
8893val dfn'CGetLen_def = Def
8894  ("dfn'CGetLen",TP[Var("rd",FTy 5),Var("cb",FTy 5)],
8895   Close
8896     (qVar"state",
8897      ITB([(Mop(Not,
8898                Dest
8899                  ("CU2",bTy,
8900                   Dest
8901                     ("Status",CTy"StatusRegister",
8902                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8903            Apply
8904              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
8905               qVar"state")),
8906           (Apply
8907              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
8908               qVar"state"),
8909            Apply
8910              (Call
8911                 ("SignalCapException",ATy(qTy,qTy),
8912                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
8913                     Var("cb",FTy 5)]),qVar"state"))],
8914          Apply
8915            (Call
8916               ("write'GPR",ATy(qTy,qTy),
8917                TP[Call
8918                     ("getLength",F64,
8919                      Apply
8920                        (Call
8921                           ("CAPR",ATy(qTy,CTy"Capability"),
8922                            Var("cb",FTy 5)),qVar"state")),Var("rd",FTy 5)]),
8923             qVar"state"))))
8924;
8925val dfn'CGetTag_def = Def
8926  ("dfn'CGetTag",TP[Var("rd",FTy 5),Var("cb",FTy 5)],
8927   Close
8928     (qVar"state",
8929      ITB([(Mop(Not,
8930                Dest
8931                  ("CU2",bTy,
8932                   Dest
8933                     ("Status",CTy"StatusRegister",
8934                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8935            Apply
8936              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
8937               qVar"state")),
8938           (Apply
8939              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
8940               qVar"state"),
8941            Apply
8942              (Call
8943                 ("SignalCapException",ATy(qTy,qTy),
8944                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
8945                     Var("cb",FTy 5)]),qVar"state"))],
8946          Apply
8947            (Call
8948               ("write'GPR",ATy(qTy,qTy),
8949                TP[Mop(Cast F64,
8950                       Mop(Cast F1,
8951                           Call
8952                             ("getTag",bTy,
8953                              Apply
8954                                (Call
8955                                   ("CAPR",ATy(qTy,CTy"Capability"),
8956                                    Var("cb",FTy 5)),qVar"state")))),
8957                   Var("rd",FTy 5)]),qVar"state"))))
8958;
8959val dfn'CGetSealed_def = Def
8960  ("dfn'CGetSealed",TP[Var("rd",FTy 5),Var("cb",FTy 5)],
8961   Close
8962     (qVar"state",
8963      ITB([(Mop(Not,
8964                Dest
8965                  ("CU2",bTy,
8966                   Dest
8967                     ("Status",CTy"StatusRegister",
8968                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
8969            Apply
8970              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
8971               qVar"state")),
8972           (Apply
8973              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
8974               qVar"state"),
8975            Apply
8976              (Call
8977                 ("SignalCapException",ATy(qTy,qTy),
8978                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
8979                     Var("cb",FTy 5)]),qVar"state"))],
8980          Let(TP[Var("v",F64),qVar"s"],
8981              Let(qVar"s0",
8982                  Apply
8983                    (Call
8984                       ("write'GPR",ATy(qTy,qTy),
8985                        TP[BFI(LN 0,LN 0,
8986                               Mop(Cast F1,
8987                                   Call
8988                                     ("getSealed",bTy,
8989                                      Apply
8990                                        (Call
8991                                           ("CAPR",
8992                                            ATy(qTy,CTy"Capability"),
8993                                            Var("cb",FTy 5)),qVar"state"))),
8994                               Apply
8995                                 (Call("GPR",ATy(qTy,F64),Var("rd",FTy 5)),
8996                                  qVar"state")),Var("rd",FTy 5)]),
8997                     qVar"state"),
8998                  TP[Apply
8999                       (Call("GPR",ATy(qTy,F64),Var("rd",FTy 5)),qVar"s0"),
9000                     qVar"s0"]),
9001              Apply
9002                (Call
9003                   ("write'GPR",ATy(qTy,qTy),
9004                    TP[BFI(LN 63,LN 1,LW(0,63),Var("v",F64)),
9005                       Var("rd",FTy 5)]),qVar"s")))))
9006;
9007val dfn'CGetPerm_def = Def
9008  ("dfn'CGetPerm",TP[Var("rd",FTy 5),Var("cb",FTy 5)],
9009   Close
9010     (qVar"state",
9011      ITB([(Mop(Not,
9012                Dest
9013                  ("CU2",bTy,
9014                   Dest
9015                     ("Status",CTy"StatusRegister",
9016                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
9017            Apply
9018              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
9019               qVar"state")),
9020           (Apply
9021              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
9022               qVar"state"),
9023            Apply
9024              (Call
9025                 ("SignalCapException",ATy(qTy,qTy),
9026                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
9027                     Var("cb",FTy 5)]),qVar"state"))],
9028          Apply
9029            (Call
9030               ("write'GPR",ATy(qTy,qTy),
9031                TP[BFI(Bop(Add,Const("UPERMS",nTy),LN 14),LN 15,
9032                       EX(Call
9033                            ("reg'UPerms",F32,
9034                             Call
9035                               ("getUPerms",CTy"UPerms",
9036                                Apply
9037                                  (Call
9038                                     ("CAPR",ATy(qTy,CTy"Capability"),
9039                                      Var("cb",FTy 5)),qVar"state"))),
9040                          Bop(Sub,Const("UPERMS",nTy),LN 1),LN 0,F16),
9041                       BFI(LN 14,LN 0,
9042                           EX(Call
9043                                ("reg'Perms",F32,
9044                                 Call
9045                                   ("getPerms",CTy"Perms",
9046                                    Apply
9047                                      (Call
9048                                         ("CAPR",ATy(qTy,CTy"Capability"),
9049                                          Var("cb",FTy 5)),qVar"state"))),
9050                              LN 14,LN 0,FTy 15),LW(0,64))),
9051                   Var("rd",FTy 5)]),qVar"state"))))
9052;
9053val dfn'CGetType_def = Def
9054  ("dfn'CGetType",TP[Var("rd",FTy 5),Var("cb",FTy 5)],
9055   Close
9056     (qVar"state",
9057      ITB([(Mop(Not,
9058                Dest
9059                  ("CU2",bTy,
9060                   Dest
9061                     ("Status",CTy"StatusRegister",
9062                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
9063            Apply
9064              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
9065               qVar"state")),
9066           (Apply
9067              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
9068               qVar"state"),
9069            Apply
9070              (Call
9071                 ("SignalCapException",ATy(qTy,qTy),
9072                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
9073                     Var("cb",FTy 5)]),qVar"state")),
9074           (Call
9075              ("getSealed",bTy,
9076               Apply
9077                 (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
9078                  qVar"state")),
9079            Apply
9080              (Call
9081                 ("write'GPR",ATy(qTy,qTy),
9082                  TP[Mop(Cast F64,
9083                         Call
9084                           ("getType",FTy 24,
9085                            Apply
9086                              (Call
9087                                 ("CAPR",ATy(qTy,CTy"Capability"),
9088                                  Var("cb",FTy 5)),qVar"state"))),
9089                     Var("rd",FTy 5)]),qVar"state"))],
9090          Apply
9091            (Call
9092               ("write'GPR",ATy(qTy,qTy),
9093                TP[Mop(BNot,LW(0,64)),Var("rd",FTy 5)]),qVar"state"))))
9094;
9095val dfn'CGetPCC_def = Def
9096  ("dfn'CGetPCC",Var("cd",FTy 5),
9097   Close
9098     (qVar"state",
9099      ITB([(Mop(Not,
9100                Dest
9101                  ("CU2",bTy,
9102                   Dest
9103                     ("Status",CTy"StatusRegister",
9104                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
9105            Apply
9106              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
9107               qVar"state")),
9108           (Apply
9109              (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)),
9110               qVar"state"),
9111            Apply
9112              (Call
9113                 ("SignalCapException",ATy(qTy,qTy),
9114                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
9115                     Var("cd",FTy 5)]),qVar"state"))],
9116          Apply
9117            (Call
9118               ("write'CAPR",ATy(qTy,qTy),
9119                TP[Call
9120                     ("setOffset",CTy"Capability",
9121                      TP[Apply
9122                           (Const("PCC",ATy(qTy,CTy"Capability")),
9123                            qVar"state"),
9124                         Apply(Const("PC",ATy(qTy,F64)),qVar"state")]),
9125                   Var("cd",FTy 5)]),qVar"state"))))
9126;
9127val dfn'CGetPCCSetOffset_def = Def
9128  ("dfn'CGetPCCSetOffset",TP[Var("cd",FTy 5),Var("rs",FTy 5)],
9129   Close
9130     (qVar"state",
9131      ITB([(Mop(Not,
9132                Dest
9133                  ("CU2",bTy,
9134                   Dest
9135                     ("Status",CTy"StatusRegister",
9136                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
9137            Apply
9138              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
9139               qVar"state")),
9140           (Apply
9141              (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)),
9142               qVar"state"),
9143            Apply
9144              (Call
9145                 ("SignalCapException",ATy(qTy,qTy),
9146                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
9147                     Var("cd",FTy 5)]),qVar"state")),
9148           (Mop(Not,
9149                Call
9150                  ("canRepOffset",bTy,
9151                   TP[Apply
9152                        (Const("PCC",ATy(qTy,CTy"Capability")),qVar"state"),
9153                      Apply
9154                        (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
9155                         qVar"state")])),
9156            Apply
9157              (Call
9158                 ("write'CAPR",ATy(qTy,qTy),
9159                  TP[Call
9160                       ("setOffset",CTy"Capability",
9161                        TP[Const("nullCap",CTy"Capability"),
9162                           Bop(Add,
9163                               Call
9164                                 ("getBase",F64,
9165                                  Apply
9166                                    (Const("PCC",ATy(qTy,CTy"Capability")),
9167                                     qVar"state")),
9168                               Apply
9169                                 (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
9170                                  qVar"state"))]),Var("cd",FTy 5)]),
9171               qVar"state"))],
9172          Apply
9173            (Call
9174               ("write'CAPR",ATy(qTy,qTy),
9175                TP[Call
9176                     ("setOffset",CTy"Capability",
9177                      TP[Apply
9178                           (Const("PCC",ATy(qTy,CTy"Capability")),
9179                            qVar"state"),
9180                         Apply
9181                           (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
9182                            qVar"state")]),Var("cd",FTy 5)]),qVar"state"))))
9183;
9184val dfn'CGetCause_def = Def
9185  ("dfn'CGetCause",Var("rd",FTy 5),
9186   Close
9187     (qVar"state",
9188      ITB([(Mop(Not,
9189                Dest
9190                  ("CU2",bTy,
9191                   Dest
9192                     ("Status",CTy"StatusRegister",
9193                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
9194            Apply
9195              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
9196               qVar"state")),
9197           (Mop(Not,
9198                Dest
9199                  ("Access_System_Registers",bTy,
9200                   Call
9201                     ("getPerms",CTy"Perms",
9202                      Apply
9203                        (Const("PCC",ATy(qTy,CTy"Capability")),qVar"state")))),
9204            Apply
9205              (Call
9206                 ("SignalCapException_noReg",ATy(qTy,qTy),
9207                  LC("capExcAccessSysReg",CTy"CapExceptionType")),
9208               qVar"state"))],
9209          Let(TP[Var("v",F64),qVar"s"],
9210              Let(qVar"s0",
9211                  Apply
9212                    (Call
9213                       ("write'GPR",ATy(qTy,qTy),
9214                        TP[BFI(LN 7,LN 0,
9215                               Dest
9216                                 ("RegNum",F8,
9217                                  Dest
9218                                    ("capcause",CTy"CapCause",qVar"state")),
9219                               Apply
9220                                 (Call("GPR",ATy(qTy,F64),Var("rd",FTy 5)),
9221                                  qVar"state")),Var("rd",FTy 5)]),
9222                     qVar"state"),
9223                  TP[Apply
9224                       (Call("GPR",ATy(qTy,F64),Var("rd",FTy 5)),qVar"s0"),
9225                     qVar"s0"]),
9226              Let(TP[Var("v",F64),qVar"s"],
9227                  Let(qVar"s0",
9228                      Apply
9229                        (Call
9230                           ("write'GPR",ATy(qTy,qTy),
9231                            TP[BFI(LN 15,LN 8,
9232                                   Dest
9233                                     ("ExcCode",F8,
9234                                      Dest
9235                                        ("capcause",CTy"CapCause",qVar"s")),
9236                                   Var("v",F64)),Var("rd",FTy 5)]),qVar"s"),
9237                      TP[Apply
9238                           (Call("GPR",ATy(qTy,F64),Var("rd",FTy 5)),
9239                            qVar"s0"),qVar"s0"]),
9240                  Apply
9241                    (Call
9242                       ("write'GPR",ATy(qTy,qTy),
9243                        TP[BFI(LN 63,LN 16,LW(0,48),Var("v",F64)),
9244                           Var("rd",FTy 5)]),qVar"s"))))))
9245;
9246val dfn'CSetCause_def = Def
9247  ("dfn'CSetCause",Var("rt",FTy 5),
9248   Close
9249     (qVar"state",
9250      ITB([(Mop(Not,
9251                Dest
9252                  ("CU2",bTy,
9253                   Dest
9254                     ("Status",CTy"StatusRegister",
9255                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
9256            Apply
9257              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
9258               qVar"state")),
9259           (Mop(Not,
9260                Dest
9261                  ("Access_System_Registers",bTy,
9262                   Call
9263                     ("getPerms",CTy"Perms",
9264                      Apply
9265                        (Const("PCC",ATy(qTy,CTy"Capability")),qVar"state")))),
9266            Apply
9267              (Call
9268                 ("SignalCapException_noReg",ATy(qTy,qTy),
9269                  LC("capExcAccessSysReg",CTy"CapExceptionType")),
9270               qVar"state"))],
9271          Let(qVar"s",
9272              Rupd
9273                ("capcause",
9274                 TP[qVar"state",
9275                    Rupd
9276                      ("ExcCode",
9277                       TP[Dest("capcause",CTy"CapCause",qVar"state"),
9278                          EX(Apply
9279                               (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
9280                                qVar"state"),LN 15,LN 8,F8)])]),
9281              Rupd
9282                ("capcause",
9283                 TP[qVar"s",
9284                    Rupd
9285                      ("RegNum",
9286                       TP[Dest("capcause",CTy"CapCause",qVar"s"),
9287                          EX(Apply
9288                               (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
9289                                qVar"s"),LN 7,LN 0,F8)])])))))
9290;
9291val dfn'CIncOffset_def = Def
9292  ("dfn'CIncOffset",TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)],
9293   Close
9294     (qVar"state",
9295      ITB([(Mop(Not,
9296                Dest
9297                  ("CU2",bTy,
9298                   Dest
9299                     ("Status",CTy"StatusRegister",
9300                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
9301            Apply
9302              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
9303               qVar"state")),
9304           (Apply
9305              (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)),
9306               qVar"state"),
9307            Apply
9308              (Call
9309                 ("SignalCapException",ATy(qTy,qTy),
9310                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
9311                     Var("cd",FTy 5)]),qVar"state")),
9312           (Apply
9313              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
9314               qVar"state"),
9315            Apply
9316              (Call
9317                 ("SignalCapException",ATy(qTy,qTy),
9318                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
9319                     Var("cb",FTy 5)]),qVar"state")),
9320           (Bop(And,
9321                Call
9322                  ("getTag",bTy,
9323                   Apply
9324                     (Call
9325                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
9326                      qVar"state")),
9327                Bop(And,
9328                    Call
9329                      ("getSealed",bTy,
9330                       Apply
9331                         (Call
9332                            ("CAPR",ATy(qTy,CTy"Capability"),
9333                             Var("cb",FTy 5)),qVar"state")),
9334                    Mop(Not,
9335                        EQ(Apply
9336                             (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
9337                              qVar"state"),LW(0,64))))),
9338            Apply
9339              (Call
9340                 ("SignalCapException",ATy(qTy,qTy),
9341                  TP[LC("capExcSeal",CTy"CapExceptionType"),
9342                     Var("cb",FTy 5)]),qVar"state")),
9343           (Mop(Not,
9344                Call
9345                  ("canRepOffset",bTy,
9346                   TP[Apply
9347                        (Call
9348                           ("CAPR",ATy(qTy,CTy"Capability"),
9349                            Var("cb",FTy 5)),qVar"state"),
9350                      Bop(Add,
9351                          Call
9352                            ("getOffset",F64,
9353                             Apply
9354                               (Call
9355                                  ("CAPR",ATy(qTy,CTy"Capability"),
9356                                   Var("cb",FTy 5)),qVar"state")),
9357                          Apply
9358                            (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
9359                             qVar"state"))])),
9360            Apply
9361              (Call
9362                 ("write'CAPR",ATy(qTy,qTy),
9363                  TP[Call
9364                       ("setOffset",CTy"Capability",
9365                        TP[Const("nullCap",CTy"Capability"),
9366                           Bop(Add,
9367                               Bop(Add,
9368                                   Call
9369                                     ("getBase",F64,
9370                                      Apply
9371                                        (Call
9372                                           ("CAPR",
9373                                            ATy(qTy,CTy"Capability"),
9374                                            Var("cb",FTy 5)),qVar"state")),
9375                                   Call
9376                                     ("getOffset",F64,
9377                                      Apply
9378                                        (Call
9379                                           ("CAPR",
9380                                            ATy(qTy,CTy"Capability"),
9381                                            Var("cb",FTy 5)),qVar"state"))),
9382                               Apply
9383                                 (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
9384                                  qVar"state"))]),Var("cd",FTy 5)]),
9385               qVar"state"))],
9386          Apply
9387            (Call
9388               ("write'CAPR",ATy(qTy,qTy),
9389                TP[Call
9390                     ("setOffset",CTy"Capability",
9391                      TP[Apply
9392                           (Call
9393                              ("CAPR",ATy(qTy,CTy"Capability"),
9394                               Var("cb",FTy 5)),qVar"state"),
9395                         Bop(Add,
9396                             Call
9397                               ("getOffset",F64,
9398                                Apply
9399                                  (Call
9400                                     ("CAPR",ATy(qTy,CTy"Capability"),
9401                                      Var("cb",FTy 5)),qVar"state")),
9402                             Apply
9403                               (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
9404                                qVar"state"))]),Var("cd",FTy 5)]),
9405             qVar"state"))))
9406;
9407val dfn'CIncOffsetImmediate_def = Def
9408  ("dfn'CIncOffsetImmediate",
9409   TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("increment",FTy 11)],
9410   Close
9411     (qVar"state",
9412      ITB([(Mop(Not,
9413                Dest
9414                  ("CU2",bTy,
9415                   Dest
9416                     ("Status",CTy"StatusRegister",
9417                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
9418            Apply
9419              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
9420               qVar"state")),
9421           (Apply
9422              (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)),
9423               qVar"state"),
9424            Apply
9425              (Call
9426                 ("SignalCapException",ATy(qTy,qTy),
9427                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
9428                     Var("cd",FTy 5)]),qVar"state")),
9429           (Apply
9430              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
9431               qVar"state"),
9432            Apply
9433              (Call
9434                 ("SignalCapException",ATy(qTy,qTy),
9435                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
9436                     Var("cb",FTy 5)]),qVar"state")),
9437           (Bop(And,
9438                Call
9439                  ("getTag",bTy,
9440                   Apply
9441                     (Call
9442                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
9443                      qVar"state")),
9444                Call
9445                  ("getSealed",bTy,
9446                   Apply
9447                     (Call
9448                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
9449                      qVar"state"))),
9450            Apply
9451              (Call
9452                 ("SignalCapException",ATy(qTy,qTy),
9453                  TP[LC("capExcSeal",CTy"CapExceptionType"),
9454                     Var("cb",FTy 5)]),qVar"state")),
9455           (Mop(Not,
9456                Call
9457                  ("canRepOffset",bTy,
9458                   TP[Apply
9459                        (Call
9460                           ("CAPR",ATy(qTy,CTy"Capability"),
9461                            Var("cb",FTy 5)),qVar"state"),
9462                      Bop(Add,
9463                          Call
9464                            ("getOffset",F64,
9465                             Apply
9466                               (Call
9467                                  ("CAPR",ATy(qTy,CTy"Capability"),
9468                                   Var("cb",FTy 5)),qVar"state")),
9469                          Mop(SE F64,Var("increment",FTy 11)))])),
9470            Apply
9471              (Call
9472                 ("write'CAPR",ATy(qTy,qTy),
9473                  TP[Call
9474                       ("setOffset",CTy"Capability",
9475                        TP[Const("nullCap",CTy"Capability"),
9476                           Bop(Add,
9477                               Bop(Add,
9478                                   Call
9479                                     ("getBase",F64,
9480                                      Apply
9481                                        (Call
9482                                           ("CAPR",
9483                                            ATy(qTy,CTy"Capability"),
9484                                            Var("cb",FTy 5)),qVar"state")),
9485                                   Call
9486                                     ("getOffset",F64,
9487                                      Apply
9488                                        (Call
9489                                           ("CAPR",
9490                                            ATy(qTy,CTy"Capability"),
9491                                            Var("cb",FTy 5)),qVar"state"))),
9492                               Mop(SE F64,Var("increment",FTy 11)))]),
9493                     Var("cd",FTy 5)]),qVar"state"))],
9494          Apply
9495            (Call
9496               ("write'CAPR",ATy(qTy,qTy),
9497                TP[Call
9498                     ("setOffset",CTy"Capability",
9499                      TP[Apply
9500                           (Call
9501                              ("CAPR",ATy(qTy,CTy"Capability"),
9502                               Var("cb",FTy 5)),qVar"state"),
9503                         Bop(Add,
9504                             Call
9505                               ("getOffset",F64,
9506                                Apply
9507                                  (Call
9508                                     ("CAPR",ATy(qTy,CTy"Capability"),
9509                                      Var("cb",FTy 5)),qVar"state")),
9510                             Mop(SE F64,Var("increment",FTy 11)))]),
9511                   Var("cd",FTy 5)]),qVar"state"))))
9512;
9513val dfn'CSetBounds_def = Def
9514  ("dfn'CSetBounds",TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)],
9515   Close
9516     (qVar"state",
9517      Let(Var("v",F64),
9518          Call
9519            ("getBase",F64,
9520             Apply
9521               (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
9522                qVar"state")),
9523          Let(Var("v1",F64),
9524              Bop(Add,
9525                  Call
9526                    ("getBase",F64,
9527                     Apply
9528                       (Call
9529                          ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
9530                        qVar"state")),
9531                  Call
9532                    ("getOffset",F64,
9533                     Apply
9534                       (Call
9535                          ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
9536                        qVar"state"))),
9537              ITB([(Mop(Not,
9538                        Dest
9539                          ("CU2",bTy,
9540                           Dest
9541                             ("Status",CTy"StatusRegister",
9542                              Apply
9543                                (Const("CP0",ATy(qTy,CTy"CP0")),
9544                                 qVar"state")))),
9545                    Apply
9546                      (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
9547                       qVar"state")),
9548                   (Apply
9549                      (Call
9550                         ("register_inaccessible",ATy(qTy,bTy),
9551                          Var("cd",FTy 5)),qVar"state"),
9552                    Apply
9553                      (Call
9554                         ("SignalCapException",ATy(qTy,qTy),
9555                          TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
9556                             Var("cd",FTy 5)]),qVar"state")),
9557                   (Apply
9558                      (Call
9559                         ("register_inaccessible",ATy(qTy,bTy),
9560                          Var("cb",FTy 5)),qVar"state"),
9561                    Apply
9562                      (Call
9563                         ("SignalCapException",ATy(qTy,qTy),
9564                          TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
9565                             Var("cb",FTy 5)]),qVar"state")),
9566                   (Mop(Not,
9567                        Call
9568                          ("getTag",bTy,
9569                           Apply
9570                             (Call
9571                                ("CAPR",ATy(qTy,CTy"Capability"),
9572                                 Var("cb",FTy 5)),qVar"state"))),
9573                    Apply
9574                      (Call
9575                         ("SignalCapException",ATy(qTy,qTy),
9576                          TP[LC("capExcTag",CTy"CapExceptionType"),
9577                             Var("cb",FTy 5)]),qVar"state")),
9578                   (Call
9579                      ("getSealed",bTy,
9580                       Apply
9581                         (Call
9582                            ("CAPR",ATy(qTy,CTy"Capability"),
9583                             Var("cb",FTy 5)),qVar"state")),
9584                    Apply
9585                      (Call
9586                         ("SignalCapException",ATy(qTy,qTy),
9587                          TP[LC("capExcSeal",CTy"CapExceptionType"),
9588                             Var("cb",FTy 5)]),qVar"state")),
9589                   (Bop(Ult,Var("v1",F64),Var("v",F64)),
9590                    Apply
9591                      (Call
9592                         ("SignalCapException",ATy(qTy,qTy),
9593                          TP[LC("capExcLength",CTy"CapExceptionType"),
9594                             Var("cb",FTy 5)]),qVar"state")),
9595                   (Bop(Ugt,
9596                        Bop(Add,CC[LW(0,1),Var("v1",F64)],
9597                            CC[LW(0,1),
9598                               Apply
9599                                 (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
9600                                  qVar"state")]),
9601                        Bop(Add,CC[LW(0,1),Var("v",F64)],
9602                            CC[LW(0,1),
9603                               Call
9604                                 ("getLength",F64,
9605                                  Apply
9606                                    (Call
9607                                       ("CAPR",ATy(qTy,CTy"Capability"),
9608                                        Var("cb",FTy 5)),qVar"state"))])),
9609                    Apply
9610                      (Call
9611                         ("SignalCapException",ATy(qTy,qTy),
9612                          TP[LC("capExcLength",CTy"CapExceptionType"),
9613                             Var("cb",FTy 5)]),qVar"state"))],
9614                  Apply
9615                    (Call
9616                       ("write'CAPR",ATy(qTy,qTy),
9617                        TP[Call
9618                             ("setBounds",CTy"Capability",
9619                              TP[Apply
9620                                   (Call
9621                                      ("CAPR",ATy(qTy,CTy"Capability"),
9622                                       Var("cb",FTy 5)),qVar"state"),
9623                                 Apply
9624                                   (Call
9625                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
9626                                    qVar"state")]),Var("cd",FTy 5)]),
9627                     qVar"state"))))))
9628;
9629val dfn'CSetBoundsExact_def = Def
9630  ("dfn'CSetBoundsExact",
9631   TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)],
9632   Close
9633     (qVar"state",
9634      Let(Var("v",F64),
9635          Call
9636            ("getBase",F64,
9637             Apply
9638               (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
9639                qVar"state")),
9640          Let(Var("v1",F64),
9641              Bop(Add,
9642                  Call
9643                    ("getBase",F64,
9644                     Apply
9645                       (Call
9646                          ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
9647                        qVar"state")),
9648                  Call
9649                    ("getOffset",F64,
9650                     Apply
9651                       (Call
9652                          ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
9653                        qVar"state"))),
9654              ITB([(Mop(Not,
9655                        Dest
9656                          ("CU2",bTy,
9657                           Dest
9658                             ("Status",CTy"StatusRegister",
9659                              Apply
9660                                (Const("CP0",ATy(qTy,CTy"CP0")),
9661                                 qVar"state")))),
9662                    Apply
9663                      (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
9664                       qVar"state")),
9665                   (Apply
9666                      (Call
9667                         ("register_inaccessible",ATy(qTy,bTy),
9668                          Var("cd",FTy 5)),qVar"state"),
9669                    Apply
9670                      (Call
9671                         ("SignalCapException",ATy(qTy,qTy),
9672                          TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
9673                             Var("cd",FTy 5)]),qVar"state")),
9674                   (Apply
9675                      (Call
9676                         ("register_inaccessible",ATy(qTy,bTy),
9677                          Var("cb",FTy 5)),qVar"state"),
9678                    Apply
9679                      (Call
9680                         ("SignalCapException",ATy(qTy,qTy),
9681                          TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
9682                             Var("cb",FTy 5)]),qVar"state")),
9683                   (Mop(Not,
9684                        Call
9685                          ("getTag",bTy,
9686                           Apply
9687                             (Call
9688                                ("CAPR",ATy(qTy,CTy"Capability"),
9689                                 Var("cb",FTy 5)),qVar"state"))),
9690                    Apply
9691                      (Call
9692                         ("SignalCapException",ATy(qTy,qTy),
9693                          TP[LC("capExcTag",CTy"CapExceptionType"),
9694                             Var("cb",FTy 5)]),qVar"state")),
9695                   (Call
9696                      ("getSealed",bTy,
9697                       Apply
9698                         (Call
9699                            ("CAPR",ATy(qTy,CTy"Capability"),
9700                             Var("cb",FTy 5)),qVar"state")),
9701                    Apply
9702                      (Call
9703                         ("SignalCapException",ATy(qTy,qTy),
9704                          TP[LC("capExcSeal",CTy"CapExceptionType"),
9705                             Var("cb",FTy 5)]),qVar"state")),
9706                   (Bop(Ult,Var("v1",F64),Var("v",F64)),
9707                    Apply
9708                      (Call
9709                         ("SignalCapException",ATy(qTy,qTy),
9710                          TP[LC("capExcLength",CTy"CapExceptionType"),
9711                             Var("cb",FTy 5)]),qVar"state")),
9712                   (Bop(Ugt,
9713                        Bop(Add,CC[LW(0,1),Var("v1",F64)],
9714                            CC[LW(0,1),
9715                               Apply
9716                                 (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
9717                                  qVar"state")]),
9718                        Bop(Add,CC[LW(0,1),Var("v",F64)],
9719                            CC[LW(0,1),
9720                               Call
9721                                 ("getLength",F64,
9722                                  Apply
9723                                    (Call
9724                                       ("CAPR",ATy(qTy,CTy"Capability"),
9725                                        Var("cb",FTy 5)),qVar"state"))])),
9726                    Apply
9727                      (Call
9728                         ("SignalCapException",ATy(qTy,qTy),
9729                          TP[LC("capExcLength",CTy"CapExceptionType"),
9730                             Var("cb",FTy 5)]),qVar"state")),
9731                   (Mop(Not,
9732                        Call
9733                          ("canRepBounds",bTy,
9734                           TP[Apply
9735                                (Call
9736                                   ("CAPR",ATy(qTy,CTy"Capability"),
9737                                    Var("cb",FTy 5)),qVar"state"),
9738                              Apply
9739                                (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
9740                                 qVar"state")])),
9741                    Apply
9742                      (Call
9743                         ("SignalCapException",ATy(qTy,qTy),
9744                          TP[LC("capExcInexact",CTy"CapExceptionType"),
9745                             Var("cb",FTy 5)]),qVar"state"))],
9746                  Apply
9747                    (Call
9748                       ("write'CAPR",ATy(qTy,qTy),
9749                        TP[Call
9750                             ("setBounds",CTy"Capability",
9751                              TP[Apply
9752                                   (Call
9753                                      ("CAPR",ATy(qTy,CTy"Capability"),
9754                                       Var("cb",FTy 5)),qVar"state"),
9755                                 Apply
9756                                   (Call
9757                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
9758                                    qVar"state")]),Var("cd",FTy 5)]),
9759                     qVar"state"))))))
9760;
9761val dfn'CSetBoundsImmediate_def = Def
9762  ("dfn'CSetBoundsImmediate",
9763   TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("req_length",FTy 11)],
9764   Close
9765     (qVar"state",
9766      Let(Var("v",F64),
9767          Call
9768            ("getBase",F64,
9769             Apply
9770               (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
9771                qVar"state")),
9772          Let(Var("v1",F64),
9773              Bop(Add,
9774                  Call
9775                    ("getBase",F64,
9776                     Apply
9777                       (Call
9778                          ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
9779                        qVar"state")),
9780                  Call
9781                    ("getOffset",F64,
9782                     Apply
9783                       (Call
9784                          ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
9785                        qVar"state"))),
9786              ITB([(Mop(Not,
9787                        Dest
9788                          ("CU2",bTy,
9789                           Dest
9790                             ("Status",CTy"StatusRegister",
9791                              Apply
9792                                (Const("CP0",ATy(qTy,CTy"CP0")),
9793                                 qVar"state")))),
9794                    Apply
9795                      (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
9796                       qVar"state")),
9797                   (Apply
9798                      (Call
9799                         ("register_inaccessible",ATy(qTy,bTy),
9800                          Var("cd",FTy 5)),qVar"state"),
9801                    Apply
9802                      (Call
9803                         ("SignalCapException",ATy(qTy,qTy),
9804                          TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
9805                             Var("cd",FTy 5)]),qVar"state")),
9806                   (Apply
9807                      (Call
9808                         ("register_inaccessible",ATy(qTy,bTy),
9809                          Var("cb",FTy 5)),qVar"state"),
9810                    Apply
9811                      (Call
9812                         ("SignalCapException",ATy(qTy,qTy),
9813                          TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
9814                             Var("cb",FTy 5)]),qVar"state")),
9815                   (Mop(Not,
9816                        Call
9817                          ("getTag",bTy,
9818                           Apply
9819                             (Call
9820                                ("CAPR",ATy(qTy,CTy"Capability"),
9821                                 Var("cb",FTy 5)),qVar"state"))),
9822                    Apply
9823                      (Call
9824                         ("SignalCapException",ATy(qTy,qTy),
9825                          TP[LC("capExcTag",CTy"CapExceptionType"),
9826                             Var("cb",FTy 5)]),qVar"state")),
9827                   (Call
9828                      ("getSealed",bTy,
9829                       Apply
9830                         (Call
9831                            ("CAPR",ATy(qTy,CTy"Capability"),
9832                             Var("cb",FTy 5)),qVar"state")),
9833                    Apply
9834                      (Call
9835                         ("SignalCapException",ATy(qTy,qTy),
9836                          TP[LC("capExcSeal",CTy"CapExceptionType"),
9837                             Var("cb",FTy 5)]),qVar"state")),
9838                   (Bop(Ult,Var("v1",F64),Var("v",F64)),
9839                    Apply
9840                      (Call
9841                         ("SignalCapException",ATy(qTy,qTy),
9842                          TP[LC("capExcLength",CTy"CapExceptionType"),
9843                             Var("cb",FTy 5)]),qVar"state")),
9844                   (Bop(Ugt,
9845                        Bop(Add,CC[LW(0,1),Var("v1",F64)],
9846                            Mop(Cast(FTy 65),Var("req_length",FTy 11))),
9847                        Bop(Add,CC[LW(0,1),Var("v",F64)],
9848                            CC[LW(0,1),
9849                               Call
9850                                 ("getLength",F64,
9851                                  Apply
9852                                    (Call
9853                                       ("CAPR",ATy(qTy,CTy"Capability"),
9854                                        Var("cb",FTy 5)),qVar"state"))])),
9855                    Apply
9856                      (Call
9857                         ("SignalCapException",ATy(qTy,qTy),
9858                          TP[LC("capExcLength",CTy"CapExceptionType"),
9859                             Var("cb",FTy 5)]),qVar"state"))],
9860                  Apply
9861                    (Call
9862                       ("write'CAPR",ATy(qTy,qTy),
9863                        TP[Call
9864                             ("setBounds",CTy"Capability",
9865                              TP[Apply
9866                                   (Call
9867                                      ("CAPR",ATy(qTy,CTy"Capability"),
9868                                       Var("cb",FTy 5)),qVar"state"),
9869                                 Mop(Cast F64,Var("req_length",FTy 11))]),
9870                           Var("cd",FTy 5)]),qVar"state"))))))
9871;
9872val dfn'CClearRegs_def = Def
9873  ("dfn'CClearRegs",TP[Var("regset",FTy 5),Var("mask",F16)],
9874   Close
9875     (qVar"state",
9876      ITE(Mop(Not,
9877              Dest
9878                ("CU2",bTy,
9879                 Dest
9880                   ("Status",CTy"StatusRegister",
9881                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
9882          Apply
9883            (Const("SignalCP2UnusableException",ATy(qTy,qTy)),qVar"state"),
9884          CS(Var("regset",FTy 5),
9885             [(LW(0,5),
9886               Mop(Snd,
9887                   Apply
9888                     (For(TP[LN 0,LN 15,
9889                             Close
9890                               (nVar"i",
9891                                Close
9892                                  (qVar"state",
9893                                   TP[LU,
9894                                      ITE(Bop(Bit,Var("mask",F16),nVar"i"),
9895                                          Apply
9896                                            (Call
9897                                               ("write'GPR",ATy(qTy,qTy),
9898                                                TP[LW(0,64),
9899                                                   Mop(Cast(FTy 5),nVar"i")]),
9900                                             qVar"state"),qVar"state")]))]),
9901                      qVar"state"))),
9902              (LW(1,5),
9903               Mop(Snd,
9904                   Apply
9905                     (For(TP[LN 16,LN 31,
9906                             Close
9907                               (nVar"i",
9908                                Close
9909                                  (qVar"state",
9910                                   TP[LU,
9911                                      ITE(Bop(Bit,Var("mask",F16),
9912                                              Bop(Sub,nVar"i",LN 16)),
9913                                          Apply
9914                                            (Call
9915                                               ("write'GPR",ATy(qTy,qTy),
9916                                                TP[LW(0,64),
9917                                                   Mop(Cast(FTy 5),nVar"i")]),
9918                                             qVar"state"),qVar"state")]))]),
9919                      qVar"state"))),
9920              (LW(2,5),
9921               Mop(Snd,
9922                   Apply
9923                     (For(TP[LN 0,LN 15,
9924                             Close
9925                               (nVar"i",
9926                                Close
9927                                  (qVar"state",
9928                                   TP[LU,
9929                                      ITE(Bop(Bit,Var("mask",F16),nVar"i"),
9930                                          Apply
9931                                            (Call
9932                                               ("write'CAPR",ATy(qTy,qTy),
9933                                                TP[Const
9934                                                     ("nullCap",
9935                                                      CTy"Capability"),
9936                                                   Mop(Cast(FTy 5),nVar"i")]),
9937                                             qVar"state"),qVar"state")]))]),
9938                      qVar"state"))),
9939              (LW(3,5),
9940               Let(TP[bVar"v",qVar"s"],
9941                   Apply
9942                     (Call
9943                        ("register_inaccessible_write_attempt",
9944                         ATy(qTy,PTy(bTy,qTy)),Var("mask",F16)),
9945                      qVar"state"),
9946                   ITE(Mop(Not,bVar"v"),
9947                       Mop(Snd,
9948                           Apply
9949                             (For(TP[LN 16,LN 31,
9950                                     Close
9951                                       (nVar"i",
9952                                        Close
9953                                          (qVar"state",
9954                                           TP[LU,
9955                                              ITE(Bop(Bit,Var("mask",F16),
9956                                                      Bop(Sub,nVar"i",
9957                                                          LN 16)),
9958                                                  Apply
9959                                                    (Call
9960                                                       ("write'CAPR",
9961                                                        ATy(qTy,qTy),
9962                                                        TP[Const
9963                                                             ("nullCap",
9964                                                              CTy"Capability"),
9965                                                           Mop(Cast(FTy 5),
9966                                                               nVar"i")]),
9967                                                     qVar"state"),
9968                                                  qVar"state")]))]),
9969                              qVar"s")),qVar"s"))),
9970              (AVar(FTy 5),
9971               Apply
9972                 (Call
9973                    ("SignalException",ATy(qTy,qTy),
9974                     LC("ResI",CTy"ExceptionType")),qVar"state"))]))))
9975;
9976val dfn'CClearTag_def = Def
9977  ("dfn'CClearTag",TP[Var("cd",FTy 5),Var("cb",FTy 5)],
9978   Close
9979     (qVar"state",
9980      ITB([(Mop(Not,
9981                Dest
9982                  ("CU2",bTy,
9983                   Dest
9984                     ("Status",CTy"StatusRegister",
9985                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
9986            Apply
9987              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
9988               qVar"state")),
9989           (Apply
9990              (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)),
9991               qVar"state"),
9992            Apply
9993              (Call
9994                 ("SignalCapException",ATy(qTy,qTy),
9995                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
9996                     Var("cd",FTy 5)]),qVar"state")),
9997           (Apply
9998              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
9999               qVar"state"),
10000            Apply
10001              (Call
10002                 ("SignalCapException",ATy(qTy,qTy),
10003                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
10004                     Var("cb",FTy 5)]),qVar"state"))],
10005          Apply
10006            (Call
10007               ("write'CAPR",ATy(qTy,qTy),
10008                TP[Call
10009                     ("setTag",CTy"Capability",
10010                      TP[Apply
10011                           (Call
10012                              ("CAPR",ATy(qTy,CTy"Capability"),
10013                               Var("cb",FTy 5)),qVar"state"),LF]),
10014                   Var("cd",FTy 5)]),qVar"state"))))
10015;
10016val dfn'CAndPerm_def = Def
10017  ("dfn'CAndPerm",TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)],
10018   Close
10019     (qVar"state",
10020      ITB([(Mop(Not,
10021                Dest
10022                  ("CU2",bTy,
10023                   Dest
10024                     ("Status",CTy"StatusRegister",
10025                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
10026            Apply
10027              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
10028               qVar"state")),
10029           (Apply
10030              (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)),
10031               qVar"state"),
10032            Apply
10033              (Call
10034                 ("SignalCapException",ATy(qTy,qTy),
10035                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
10036                     Var("cd",FTy 5)]),qVar"state")),
10037           (Apply
10038              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
10039               qVar"state"),
10040            Apply
10041              (Call
10042                 ("SignalCapException",ATy(qTy,qTy),
10043                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
10044                     Var("cb",FTy 5)]),qVar"state")),
10045           (Mop(Not,
10046                Call
10047                  ("getTag",bTy,
10048                   Apply
10049                     (Call
10050                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
10051                      qVar"state"))),
10052            Apply
10053              (Call
10054                 ("SignalCapException",ATy(qTy,qTy),
10055                  TP[LC("capExcTag",CTy"CapExceptionType"),Var("cb",FTy 5)]),
10056               qVar"state")),
10057           (Call
10058              ("getSealed",bTy,
10059               Apply
10060                 (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
10061                  qVar"state")),
10062            Apply
10063              (Call
10064                 ("SignalCapException",ATy(qTy,qTy),
10065                  TP[LC("capExcSeal",CTy"CapExceptionType"),
10066                     Var("cb",FTy 5)]),qVar"state"))],
10067          Apply
10068            (Call
10069               ("write'CAPR",ATy(qTy,qTy),
10070                TP[Call
10071                     ("setUPerms",CTy"Capability",
10072                      TP[Call
10073                           ("setPerms",CTy"Capability",
10074                            TP[Apply
10075                                 (Call
10076                                    ("CAPR",ATy(qTy,CTy"Capability"),
10077                                     Var("cb",FTy 5)),qVar"state"),
10078                               Call
10079                                 ("rec'Perms",CTy"Perms",
10080                                  Mop(Cast F32,
10081                                      Bop(BAnd,
10082                                          EX(Call
10083                                               ("reg'Perms",F32,
10084                                                Call
10085                                                  ("getPerms",CTy"Perms",
10086                                                   Apply
10087                                                     (Call
10088                                                        ("CAPR",
10089                                                         ATy(qTy,
10090                                                             CTy"Capability"),
10091                                                         Var("cb",FTy 5)),
10092                                                      qVar"state"))),
10093                                             LN 14,LN 0,FTy 15),
10094                                          EX(Apply
10095                                               (Call
10096                                                  ("GPR",ATy(qTy,F64),
10097                                                   Var("rt",FTy 5)),
10098                                                qVar"state"),LN 14,LN 0,
10099                                             FTy 15))))]),
10100                         Call
10101                           ("rec'UPerms",CTy"UPerms",
10102                            Mop(Cast F32,
10103                                Bop(BAnd,
10104                                    EX(Call
10105                                         ("reg'UPerms",F32,
10106                                          Call
10107                                            ("getUPerms",CTy"UPerms",
10108                                             Apply
10109                                               (Call
10110                                                  ("CAPR",
10111                                                   ATy(qTy,CTy"Capability"),
10112                                                   Var("cb",FTy 5)),
10113                                                qVar"state"))),
10114                                       Bop(Sub,Const("UPERMS",nTy),LN 1),
10115                                       LN 0,F16),
10116                                    EX(Apply
10117                                         (Call
10118                                            ("GPR",ATy(qTy,F64),
10119                                             Var("rt",FTy 5)),qVar"state"),
10120                                       Bop(Add,Const("UPERMS",nTy),LN 14),
10121                                       LN 15,F16))))]),Var("cd",FTy 5)]),
10122             qVar"state"))))
10123;
10124val dfn'CSetOffset_def = Def
10125  ("dfn'CSetOffset",TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)],
10126   Close
10127     (qVar"state",
10128      ITB([(Mop(Not,
10129                Dest
10130                  ("CU2",bTy,
10131                   Dest
10132                     ("Status",CTy"StatusRegister",
10133                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
10134            Apply
10135              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
10136               qVar"state")),
10137           (Apply
10138              (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)),
10139               qVar"state"),
10140            Apply
10141              (Call
10142                 ("SignalCapException",ATy(qTy,qTy),
10143                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
10144                     Var("cd",FTy 5)]),qVar"state")),
10145           (Apply
10146              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
10147               qVar"state"),
10148            Apply
10149              (Call
10150                 ("SignalCapException",ATy(qTy,qTy),
10151                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
10152                     Var("cb",FTy 5)]),qVar"state")),
10153           (Bop(And,
10154                Call
10155                  ("getTag",bTy,
10156                   Apply
10157                     (Call
10158                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
10159                      qVar"state")),
10160                Call
10161                  ("getSealed",bTy,
10162                   Apply
10163                     (Call
10164                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
10165                      qVar"state"))),
10166            Apply
10167              (Call
10168                 ("SignalCapException",ATy(qTy,qTy),
10169                  TP[LC("capExcSeal",CTy"CapExceptionType"),
10170                     Var("cb",FTy 5)]),qVar"state")),
10171           (Mop(Not,
10172                Call
10173                  ("canRepOffset",bTy,
10174                   TP[Apply
10175                        (Call
10176                           ("CAPR",ATy(qTy,CTy"Capability"),
10177                            Var("cb",FTy 5)),qVar"state"),
10178                      Apply
10179                        (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
10180                         qVar"state")])),
10181            Apply
10182              (Call
10183                 ("write'CAPR",ATy(qTy,qTy),
10184                  TP[Call
10185                       ("setOffset",CTy"Capability",
10186                        TP[Const("nullCap",CTy"Capability"),
10187                           Bop(Add,
10188                               Call
10189                                 ("getBase",F64,
10190                                  Apply
10191                                    (Call
10192                                       ("CAPR",ATy(qTy,CTy"Capability"),
10193                                        Var("cb",FTy 5)),qVar"state")),
10194                               Apply
10195                                 (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
10196                                  qVar"state"))]),Var("cd",FTy 5)]),
10197               qVar"state"))],
10198          Apply
10199            (Call
10200               ("write'CAPR",ATy(qTy,qTy),
10201                TP[Call
10202                     ("setOffset",CTy"Capability",
10203                      TP[Apply
10204                           (Call
10205                              ("CAPR",ATy(qTy,CTy"Capability"),
10206                               Var("cb",FTy 5)),qVar"state"),
10207                         Apply
10208                           (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
10209                            qVar"state")]),Var("cd",FTy 5)]),qVar"state"))))
10210;
10211val dfn'CSub_def = Def
10212  ("dfn'CSub",TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("ct",FTy 5)],
10213   Close
10214     (qVar"state",
10215      ITB([(Mop(Not,
10216                Dest
10217                  ("CU2",bTy,
10218                   Dest
10219                     ("Status",CTy"StatusRegister",
10220                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
10221            Apply
10222              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
10223               qVar"state")),
10224           (Apply
10225              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
10226               qVar"state"),
10227            Apply
10228              (Call
10229                 ("SignalCapException",ATy(qTy,qTy),
10230                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
10231                     Var("cb",FTy 5)]),qVar"state")),
10232           (Apply
10233              (Call("register_inaccessible",ATy(qTy,bTy),Var("ct",FTy 5)),
10234               qVar"state"),
10235            Apply
10236              (Call
10237                 ("SignalCapException",ATy(qTy,qTy),
10238                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
10239                     Var("ct",FTy 5)]),qVar"state"))],
10240          Apply
10241            (Call
10242               ("write'GPR",ATy(qTy,qTy),
10243                TP[Bop(Sub,
10244                       Bop(Sub,
10245                           Bop(Add,
10246                               Call
10247                                 ("getBase",F64,
10248                                  Apply
10249                                    (Call
10250                                       ("CAPR",ATy(qTy,CTy"Capability"),
10251                                        Var("cb",FTy 5)),qVar"state")),
10252                               Call
10253                                 ("getOffset",F64,
10254                                  Apply
10255                                    (Call
10256                                       ("CAPR",ATy(qTy,CTy"Capability"),
10257                                        Var("cb",FTy 5)),qVar"state"))),
10258                           Call
10259                             ("getBase",F64,
10260                              Apply
10261                                (Call
10262                                   ("CAPR",ATy(qTy,CTy"Capability"),
10263                                    Var("ct",FTy 5)),qVar"state"))),
10264                       Call
10265                         ("getOffset",F64,
10266                          Apply
10267                            (Call
10268                               ("CAPR",ATy(qTy,CTy"Capability"),
10269                                Var("ct",FTy 5)),qVar"state"))),
10270                   Var("rd",FTy 5)]),qVar"state"))))
10271;
10272val dfn'CCheckPerm_def = Def
10273  ("dfn'CCheckPerm",TP[Var("cs",FTy 5),Var("rt",FTy 5)],
10274   Close
10275     (qVar"state",
10276      ITB([(Mop(Not,
10277                Dest
10278                  ("CU2",bTy,
10279                   Dest
10280                     ("Status",CTy"StatusRegister",
10281                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
10282            Apply
10283              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
10284               qVar"state")),
10285           (Apply
10286              (Call("register_inaccessible",ATy(qTy,bTy),Var("cs",FTy 5)),
10287               qVar"state"),
10288            Apply
10289              (Call
10290                 ("SignalCapException",ATy(qTy,qTy),
10291                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
10292                     Var("cs",FTy 5)]),qVar"state")),
10293           (Mop(Not,
10294                Call
10295                  ("getTag",bTy,
10296                   Apply
10297                     (Call
10298                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)),
10299                      qVar"state"))),
10300            Apply
10301              (Call
10302                 ("SignalCapException",ATy(qTy,qTy),
10303                  TP[LC("capExcTag",CTy"CapExceptionType"),Var("cs",FTy 5)]),
10304               qVar"state")),
10305           (Mop(Not,
10306                EQ(Bop(BAnd,
10307                       EX(Call
10308                            ("reg'Perms",F32,
10309                             Call
10310                               ("getPerms",CTy"Perms",
10311                                Apply
10312                                  (Call
10313                                     ("CAPR",ATy(qTy,CTy"Capability"),
10314                                      Var("cs",FTy 5)),qVar"state"))),
10315                          LN 14,LN 0,FTy 15),
10316                       EX(Apply
10317                            (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
10318                             qVar"state"),LN 14,LN 0,FTy 15)),
10319                   EX(Apply
10320                        (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
10321                         qVar"state"),LN 14,LN 0,FTy 15))),
10322            Apply
10323              (Call
10324                 ("SignalCapException",ATy(qTy,qTy),
10325                  TP[LC("capExcUser",CTy"CapExceptionType"),
10326                     Var("cs",FTy 5)]),qVar"state")),
10327           (Mop(Not,
10328                EQ(Bop(BAnd,
10329                       EX(Call
10330                            ("reg'UPerms",F32,
10331                             Call
10332                               ("getUPerms",CTy"UPerms",
10333                                Apply
10334                                  (Call
10335                                     ("CAPR",ATy(qTy,CTy"Capability"),
10336                                      Var("cs",FTy 5)),qVar"state"))),
10337                          Bop(Sub,Const("UPERMS",nTy),LN 1),LN 0,F16),
10338                       EX(Apply
10339                            (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
10340                             qVar"state"),
10341                          Bop(Add,Const("UPERMS",nTy),LN 14),LN 15,F16)),
10342                   EX(Apply
10343                        (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
10344                         qVar"state"),Bop(Add,Const("UPERMS",nTy),LN 14),
10345                      LN 15,F16))),
10346            Apply
10347              (Call
10348                 ("SignalCapException",ATy(qTy,qTy),
10349                  TP[LC("capExcUser",CTy"CapExceptionType"),
10350                     Var("cs",FTy 5)]),qVar"state")),
10351           (Mop(Not,
10352                EQ(EX(Apply
10353                        (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
10354                         qVar"state"),LN 63,
10355                      Bop(Add,Const("UPERMS",nTy),LN 15),FTy 33),LW(0,33))),
10356            Apply
10357              (Call
10358                 ("SignalCapException",ATy(qTy,qTy),
10359                  TP[LC("capExcUser",CTy"CapExceptionType"),
10360                     Var("cs",FTy 5)]),qVar"state"))],qVar"state")))
10361;
10362val dfn'CCheckType_def = Def
10363  ("dfn'CCheckType",TP[Var("cs",FTy 5),Var("cb",FTy 5)],
10364   Close
10365     (qVar"state",
10366      ITB([(Mop(Not,
10367                Dest
10368                  ("CU2",bTy,
10369                   Dest
10370                     ("Status",CTy"StatusRegister",
10371                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
10372            Apply
10373              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
10374               qVar"state")),
10375           (Apply
10376              (Call("register_inaccessible",ATy(qTy,bTy),Var("cs",FTy 5)),
10377               qVar"state"),
10378            Apply
10379              (Call
10380                 ("SignalCapException",ATy(qTy,qTy),
10381                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
10382                     Var("cs",FTy 5)]),qVar"state")),
10383           (Apply
10384              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
10385               qVar"state"),
10386            Apply
10387              (Call
10388                 ("SignalCapException",ATy(qTy,qTy),
10389                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
10390                     Var("cb",FTy 5)]),qVar"state")),
10391           (Mop(Not,
10392                Call
10393                  ("getTag",bTy,
10394                   Apply
10395                     (Call
10396                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)),
10397                      qVar"state"))),
10398            Apply
10399              (Call
10400                 ("SignalCapException",ATy(qTy,qTy),
10401                  TP[LC("capExcTag",CTy"CapExceptionType"),Var("cs",FTy 5)]),
10402               qVar"state")),
10403           (Mop(Not,
10404                Call
10405                  ("getTag",bTy,
10406                   Apply
10407                     (Call
10408                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
10409                      qVar"state"))),
10410            Apply
10411              (Call
10412                 ("SignalCapException",ATy(qTy,qTy),
10413                  TP[LC("capExcTag",CTy"CapExceptionType"),Var("cb",FTy 5)]),
10414               qVar"state")),
10415           (Mop(Not,
10416                Call
10417                  ("getSealed",bTy,
10418                   Apply
10419                     (Call
10420                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)),
10421                      qVar"state"))),
10422            Apply
10423              (Call
10424                 ("SignalCapException",ATy(qTy,qTy),
10425                  TP[LC("capExcSeal",CTy"CapExceptionType"),
10426                     Var("cs",FTy 5)]),qVar"state")),
10427           (Mop(Not,
10428                Call
10429                  ("getSealed",bTy,
10430                   Apply
10431                     (Call
10432                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
10433                      qVar"state"))),
10434            Apply
10435              (Call
10436                 ("SignalCapException",ATy(qTy,qTy),
10437                  TP[LC("capExcSeal",CTy"CapExceptionType"),
10438                     Var("cb",FTy 5)]),qVar"state")),
10439           (Mop(Not,
10440                EQ(Call
10441                     ("getType",FTy 24,
10442                      Apply
10443                        (Call
10444                           ("CAPR",ATy(qTy,CTy"Capability"),
10445                            Var("cs",FTy 5)),qVar"state")),
10446                   Call
10447                     ("getType",FTy 24,
10448                      Apply
10449                        (Call
10450                           ("CAPR",ATy(qTy,CTy"Capability"),
10451                            Var("cb",FTy 5)),qVar"state")))),
10452            Apply
10453              (Call
10454                 ("SignalCapException",ATy(qTy,qTy),
10455                  TP[LC("capExcType",CTy"CapExceptionType"),
10456                     Var("cs",FTy 5)]),qVar"state"))],qVar"state")))
10457;
10458val dfn'CFromPtr_def = Def
10459  ("dfn'CFromPtr",TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)],
10460   Close
10461     (qVar"state",
10462      ITB([(Mop(Not,
10463                Dest
10464                  ("CU2",bTy,
10465                   Dest
10466                     ("Status",CTy"StatusRegister",
10467                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
10468            Apply
10469              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
10470               qVar"state")),
10471           (Apply
10472              (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)),
10473               qVar"state"),
10474            Apply
10475              (Call
10476                 ("SignalCapException",ATy(qTy,qTy),
10477                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
10478                     Var("cd",FTy 5)]),qVar"state")),
10479           (Apply
10480              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
10481               qVar"state"),
10482            Apply
10483              (Call
10484                 ("SignalCapException",ATy(qTy,qTy),
10485                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
10486                     Var("cb",FTy 5)]),qVar"state")),
10487           (EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
10488               LW(0,64)),
10489            Apply
10490              (Call
10491                 ("write'CAPR",ATy(qTy,qTy),
10492                  TP[Const("nullCap",CTy"Capability"),Var("cd",FTy 5)]),
10493               qVar"state")),
10494           (Mop(Not,
10495                Call
10496                  ("getTag",bTy,
10497                   Apply
10498                     (Call
10499                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
10500                      qVar"state"))),
10501            Apply
10502              (Call
10503                 ("SignalCapException",ATy(qTy,qTy),
10504                  TP[LC("capExcTag",CTy"CapExceptionType"),Var("cb",FTy 5)]),
10505               qVar"state")),
10506           (Call
10507              ("getSealed",bTy,
10508               Apply
10509                 (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
10510                  qVar"state")),
10511            Apply
10512              (Call
10513                 ("SignalCapException",ATy(qTy,qTy),
10514                  TP[LC("capExcSeal",CTy"CapExceptionType"),
10515                     Var("cb",FTy 5)]),qVar"state")),
10516           (Mop(Not,
10517                Call
10518                  ("canRepOffset",bTy,
10519                   TP[Apply
10520                        (Call
10521                           ("CAPR",ATy(qTy,CTy"Capability"),
10522                            Var("cb",FTy 5)),qVar"state"),
10523                      Apply
10524                        (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
10525                         qVar"state")])),
10526            Apply
10527              (Call
10528                 ("write'CAPR",ATy(qTy,qTy),
10529                  TP[Call
10530                       ("setOffset",CTy"Capability",
10531                        TP[Const("nullCap",CTy"Capability"),
10532                           Bop(Add,
10533                               Call
10534                                 ("getBase",F64,
10535                                  Apply
10536                                    (Call
10537                                       ("CAPR",ATy(qTy,CTy"Capability"),
10538                                        Var("cb",FTy 5)),qVar"state")),
10539                               Apply
10540                                 (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
10541                                  qVar"state"))]),Var("cd",FTy 5)]),
10542               qVar"state"))],
10543          Apply
10544            (Call
10545               ("write'CAPR",ATy(qTy,qTy),
10546                TP[Call
10547                     ("setOffset",CTy"Capability",
10548                      TP[Apply
10549                           (Call
10550                              ("CAPR",ATy(qTy,CTy"Capability"),
10551                               Var("cb",FTy 5)),qVar"state"),
10552                         Apply
10553                           (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
10554                            qVar"state")]),Var("cd",FTy 5)]),qVar"state"))))
10555;
10556val dfn'CToPtr_def = Def
10557  ("dfn'CToPtr",TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("ct",FTy 5)],
10558   Close
10559     (qVar"state",
10560      ITB([(Mop(Not,
10561                Dest
10562                  ("CU2",bTy,
10563                   Dest
10564                     ("Status",CTy"StatusRegister",
10565                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
10566            Apply
10567              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
10568               qVar"state")),
10569           (Apply
10570              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
10571               qVar"state"),
10572            Apply
10573              (Call
10574                 ("SignalCapException",ATy(qTy,qTy),
10575                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
10576                     Var("cb",FTy 5)]),qVar"state")),
10577           (Apply
10578              (Call("register_inaccessible",ATy(qTy,bTy),Var("ct",FTy 5)),
10579               qVar"state"),
10580            Apply
10581              (Call
10582                 ("SignalCapException",ATy(qTy,qTy),
10583                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
10584                     Var("ct",FTy 5)]),qVar"state")),
10585           (Mop(Not,
10586                Call
10587                  ("getTag",bTy,
10588                   Apply
10589                     (Call
10590                        ("CAPR",ATy(qTy,CTy"Capability"),Var("ct",FTy 5)),
10591                      qVar"state"))),
10592            Apply
10593              (Call
10594                 ("SignalCapException",ATy(qTy,qTy),
10595                  TP[LC("capExcTag",CTy"CapExceptionType"),Var("ct",FTy 5)]),
10596               qVar"state")),
10597           (Mop(Not,
10598                Call
10599                  ("getTag",bTy,
10600                   Apply
10601                     (Call
10602                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
10603                      qVar"state"))),
10604            Apply
10605              (Call("write'GPR",ATy(qTy,qTy),TP[LW(0,64),Var("rd",FTy 5)]),
10606               qVar"state"))],
10607          Apply
10608            (Call
10609               ("write'GPR",ATy(qTy,qTy),
10610                TP[Bop(Sub,
10611                       Bop(Add,
10612                           Call
10613                             ("getBase",F64,
10614                              Apply
10615                                (Call
10616                                   ("CAPR",ATy(qTy,CTy"Capability"),
10617                                    Var("cb",FTy 5)),qVar"state")),
10618                           Call
10619                             ("getOffset",F64,
10620                              Apply
10621                                (Call
10622                                   ("CAPR",ATy(qTy,CTy"Capability"),
10623                                    Var("cb",FTy 5)),qVar"state"))),
10624                       Call
10625                         ("getBase",F64,
10626                          Apply
10627                            (Call
10628                               ("CAPR",ATy(qTy,CTy"Capability"),
10629                                Var("ct",FTy 5)),qVar"state"))),
10630                   Var("rd",FTy 5)]),qVar"state"))))
10631;
10632val dfn'CPtrCmp_def = Def
10633  ("dfn'CPtrCmp",
10634   TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("ct",FTy 5),Var("t",FTy 3)],
10635   Close
10636     (qVar"state",
10637      ITB([(Mop(Not,
10638                Dest
10639                  ("CU2",bTy,
10640                   Dest
10641                     ("Status",CTy"StatusRegister",
10642                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
10643            Apply
10644              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
10645               qVar"state")),
10646           (Apply
10647              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
10648               qVar"state"),
10649            Apply
10650              (Call
10651                 ("SignalCapException",ATy(qTy,qTy),
10652                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
10653                     Var("cb",FTy 5)]),qVar"state")),
10654           (Apply
10655              (Call("register_inaccessible",ATy(qTy,bTy),Var("ct",FTy 5)),
10656               qVar"state"),
10657            Apply
10658              (Call
10659                 ("SignalCapException",ATy(qTy,qTy),
10660                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
10661                     Var("ct",FTy 5)]),qVar"state"))],
10662          Let(Var("v",CTy"Capability"),
10663              Apply
10664                (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
10665                 qVar"state"),
10666              Let(Var("v0",CTy"Capability"),
10667                  Apply
10668                    (Call("CAPR",ATy(qTy,CTy"Capability"),Var("ct",FTy 5)),
10669                     qVar"state"),
10670                  Let(Var("s",
10671                          PTy(bTy,PTy(bTy,PTy(bTy,PTy(bTy,PTy(bTy,qTy)))))),
10672                      ITE(Mop(Not,
10673                              EQ(Call
10674                                   ("getTag",bTy,Var("v",CTy"Capability")),
10675                                 Call
10676                                   ("getTag",bTy,Var("v0",CTy"Capability")))),
10677                          ITE(Call("getTag",bTy,Var("v",CTy"Capability")),
10678                              TP[LF,LF,LT,LT,LF,qVar"state"],
10679                              TP[LT,LT,LF,LF,LF,qVar"state"]),
10680                          Let(Var("cursor1",F64),
10681                              Bop(Add,
10682                                  Call
10683                                    ("getBase",F64,
10684                                     Var("v",CTy"Capability")),
10685                                  Call
10686                                    ("getOffset",F64,
10687                                     Var("v",CTy"Capability"))),
10688                              Let(Var("cursor2",F64),
10689                                  Bop(Add,
10690                                      Call
10691                                        ("getBase",F64,
10692                                         Var("v0",CTy"Capability")),
10693                                      Call
10694                                        ("getOffset",F64,
10695                                         Var("v0",CTy"Capability"))),
10696                                  TP[Bop(Ult,Var("cursor1",F64),
10697                                         Var("cursor2",F64)),
10698                                     Bop(Lt,Var("cursor1",F64),
10699                                         Var("cursor2",F64)),
10700                                     Bop(Ugt,Var("cursor1",F64),
10701                                         Var("cursor2",F64)),
10702                                     Bop(Gt,Var("cursor1",F64),
10703                                         Var("cursor2",F64)),
10704                                     EQ(Var("cursor1",F64),
10705                                        Var("cursor2",F64)),qVar"state"]))),
10706                      CS(Var("t",FTy 3),
10707                         [(LW(0,3),
10708                           Apply
10709                             (Call
10710                                ("write'GPR",ATy(qTy,qTy),
10711                                 TP[Mop(Cast F64,
10712                                        Mop(Fst,
10713                                            Mop(Snd,
10714                                                Mop(Snd,
10715                                                    Mop(Snd,
10716                                                        Mop(Snd,
10717                                                            Var("s",
10718                                                                PTy(bTy,
10719                                                                    PTy(bTy,
10720                                                                        PTy(bTy,
10721                                                                            PTy(bTy,
10722                                                                                PTy(bTy,
10723                                                                                    qTy)))))))))))),
10724                                    Var("rd",FTy 5)]),
10725                              Mop(Snd,
10726                                  Mop(Snd,
10727                                      Mop(Snd,
10728                                          Mop(Snd,
10729                                              Mop(Snd,
10730                                                  Var("s",
10731                                                      PTy(bTy,
10732                                                          PTy(bTy,
10733                                                              PTy(bTy,
10734                                                                  PTy(bTy,
10735                                                                      PTy(bTy,
10736                                                                          qTy))))))))))))),
10737                          (LW(1,3),
10738                           Apply
10739                             (Call
10740                                ("write'GPR",ATy(qTy,qTy),
10741                                 TP[Mop(Cast F64,
10742                                        Mop(Not,
10743                                            Mop(Fst,
10744                                                Mop(Snd,
10745                                                    Mop(Snd,
10746                                                        Mop(Snd,
10747                                                            Mop(Snd,
10748                                                                Var("s",
10749                                                                    PTy(bTy,
10750                                                                        PTy(bTy,
10751                                                                            PTy(bTy,
10752                                                                                PTy(bTy,
10753                                                                                    PTy(bTy,
10754                                                                                        qTy))))))))))))),
10755                                    Var("rd",FTy 5)]),
10756                              Mop(Snd,
10757                                  Mop(Snd,
10758                                      Mop(Snd,
10759                                          Mop(Snd,
10760                                              Mop(Snd,
10761                                                  Var("s",
10762                                                      PTy(bTy,
10763                                                          PTy(bTy,
10764                                                              PTy(bTy,
10765                                                                  PTy(bTy,
10766                                                                      PTy(bTy,
10767                                                                          qTy))))))))))))),
10768                          (LW(2,3),
10769                           Apply
10770                             (Call
10771                                ("write'GPR",ATy(qTy,qTy),
10772                                 TP[Mop(Cast F64,
10773                                        Mop(Fst,
10774                                            Mop(Snd,
10775                                                Var("s",
10776                                                    PTy(bTy,
10777                                                        PTy(bTy,
10778                                                            PTy(bTy,
10779                                                                PTy(bTy,
10780                                                                    PTy(bTy,
10781                                                                        qTy))))))))),
10782                                    Var("rd",FTy 5)]),
10783                              Mop(Snd,
10784                                  Mop(Snd,
10785                                      Mop(Snd,
10786                                          Mop(Snd,
10787                                              Mop(Snd,
10788                                                  Var("s",
10789                                                      PTy(bTy,
10790                                                          PTy(bTy,
10791                                                              PTy(bTy,
10792                                                                  PTy(bTy,
10793                                                                      PTy(bTy,
10794                                                                          qTy))))))))))))),
10795                          (LW(3,3),
10796                           Apply
10797                             (Call
10798                                ("write'GPR",ATy(qTy,qTy),
10799                                 TP[Mop(Cast F64,
10800                                        Bop(Or,
10801                                            Mop(Fst,
10802                                                Mop(Snd,
10803                                                    Var("s",
10804                                                        PTy(bTy,
10805                                                            PTy(bTy,
10806                                                                PTy(bTy,
10807                                                                    PTy(bTy,
10808                                                                        PTy(bTy,
10809                                                                            qTy)))))))),
10810                                            Mop(Fst,
10811                                                Mop(Snd,
10812                                                    Mop(Snd,
10813                                                        Mop(Snd,
10814                                                            Mop(Snd,
10815                                                                Var("s",
10816                                                                    PTy(bTy,
10817                                                                        PTy(bTy,
10818                                                                            PTy(bTy,
10819                                                                                PTy(bTy,
10820                                                                                    PTy(bTy,
10821                                                                                        qTy))))))))))))),
10822                                    Var("rd",FTy 5)]),
10823                              Mop(Snd,
10824                                  Mop(Snd,
10825                                      Mop(Snd,
10826                                          Mop(Snd,
10827                                              Mop(Snd,
10828                                                  Var("s",
10829                                                      PTy(bTy,
10830                                                          PTy(bTy,
10831                                                              PTy(bTy,
10832                                                                  PTy(bTy,
10833                                                                      PTy(bTy,
10834                                                                          qTy))))))))))))),
10835                          (LW(4,3),
10836                           Apply
10837                             (Call
10838                                ("write'GPR",ATy(qTy,qTy),
10839                                 TP[Mop(Cast F64,
10840                                        Mop(Fst,
10841                                            Var("s",
10842                                                PTy(bTy,
10843                                                    PTy(bTy,
10844                                                        PTy(bTy,
10845                                                            PTy(bTy,
10846                                                                PTy(bTy,
10847                                                                    qTy)))))))),
10848                                    Var("rd",FTy 5)]),
10849                              Mop(Snd,
10850                                  Mop(Snd,
10851                                      Mop(Snd,
10852                                          Mop(Snd,
10853                                              Mop(Snd,
10854                                                  Var("s",
10855                                                      PTy(bTy,
10856                                                          PTy(bTy,
10857                                                              PTy(bTy,
10858                                                                  PTy(bTy,
10859                                                                      PTy(bTy,
10860                                                                          qTy))))))))))))),
10861                          (LW(5,3),
10862                           Apply
10863                             (Call
10864                                ("write'GPR",ATy(qTy,qTy),
10865                                 TP[Mop(Cast F64,
10866                                        Bop(Or,
10867                                            Mop(Fst,
10868                                                Var("s",
10869                                                    PTy(bTy,
10870                                                        PTy(bTy,
10871                                                            PTy(bTy,
10872                                                                PTy(bTy,
10873                                                                    PTy(bTy,
10874                                                                        qTy))))))),
10875                                            Mop(Fst,
10876                                                Mop(Snd,
10877                                                    Mop(Snd,
10878                                                        Mop(Snd,
10879                                                            Mop(Snd,
10880                                                                Var("s",
10881                                                                    PTy(bTy,
10882                                                                        PTy(bTy,
10883                                                                            PTy(bTy,
10884                                                                                PTy(bTy,
10885                                                                                    PTy(bTy,
10886                                                                                        qTy))))))))))))),
10887                                    Var("rd",FTy 5)]),
10888                              Mop(Snd,
10889                                  Mop(Snd,
10890                                      Mop(Snd,
10891                                          Mop(Snd,
10892                                              Mop(Snd,
10893                                                  Var("s",
10894                                                      PTy(bTy,
10895                                                          PTy(bTy,
10896                                                              PTy(bTy,
10897                                                                  PTy(bTy,
10898                                                                      PTy(bTy,
10899                                                                          qTy))))))))))))),
10900                          (LW(6,3),
10901                           Apply
10902                             (Call
10903                                ("write'GPR",ATy(qTy,qTy),
10904                                 TP[ITE(EQ(Var("v",CTy"Capability"),
10905                                           Var("v0",CTy"Capability")),
10906                                        LW(1,64),LW(0,64)),Var("rd",FTy 5)]),
10907                              Mop(Snd,
10908                                  Mop(Snd,
10909                                      Mop(Snd,
10910                                          Mop(Snd,
10911                                              Mop(Snd,
10912                                                  Var("s",
10913                                                      PTy(bTy,
10914                                                          PTy(bTy,
10915                                                              PTy(bTy,
10916                                                                  PTy(bTy,
10917                                                                      PTy(bTy,
10918                                                                          qTy))))))))))))),
10919                          (LW(7,3),
10920                           Apply
10921                             (Call
10922                                ("write'GPR",ATy(qTy,qTy),
10923                                 TP[ITE(EQ(Var("v",CTy"Capability"),
10924                                           Var("v0",CTy"Capability")),
10925                                        LW(0,64),LW(1,64)),Var("rd",FTy 5)]),
10926                              Mop(Snd,
10927                                  Mop(Snd,
10928                                      Mop(Snd,
10929                                          Mop(Snd,
10930                                              Mop(Snd,
10931                                                  Var("s",
10932                                                      PTy(bTy,
10933                                                          PTy(bTy,
10934                                                              PTy(bTy,
10935                                                                  PTy(bTy,
10936                                                                      PTy(bTy,
10937                                                                          qTy)))))))))))))])))))))
10938;
10939val dfn'CBTU_def = Def
10940  ("dfn'CBTU",TP[Var("cb",FTy 5),Var("offset",F16)],
10941   Close
10942     (qVar"state",
10943      ITE(Mop(Not,
10944              Dest
10945                ("CU2",bTy,
10946                 Dest
10947                   ("Status",CTy"StatusRegister",
10948                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
10949          Apply
10950            (Const("SignalCP2UnusableException",ATy(qTy,qTy)),qVar"state"),
10951          Let(TP[bVar"v",qVar"s"],
10952              Let(qVar"s0",
10953                  Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"),
10954                  TP[Apply
10955                       (Call
10956                          ("register_inaccessible",ATy(qTy,bTy),
10957                           Var("cb",FTy 5)),qVar"s0"),qVar"s0"]),
10958              ITB([(bVar"v",
10959                    Apply
10960                      (Call
10961                         ("SignalCapException",ATy(qTy,qTy),
10962                          TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
10963                             Var("cb",FTy 5)]),qVar"s")),
10964                   (Mop(Not,
10965                        Call
10966                          ("getTag",bTy,
10967                           Apply
10968                             (Call
10969                                ("CAPR",ATy(qTy,CTy"Capability"),
10970                                 Var("cb",FTy 5)),qVar"s"))),
10971                    Apply
10972                      (Call
10973                         ("write'BranchTo",ATy(qTy,qTy),
10974                          Mop(Some,
10975                              Bop(Add,
10976                                  Bop(Add,
10977                                      Apply
10978                                        (Const("PC",ATy(qTy,F64)),qVar"s"),
10979                                      LW(4,64)),
10980                                  Bop(Lsl,Mop(SE F64,Var("offset",F16)),
10981                                      LN 2)))),qVar"s"))],qVar"s")))))
10982;
10983val dfn'CBTS_def = Def
10984  ("dfn'CBTS",TP[Var("cb",FTy 5),Var("offset",F16)],
10985   Close
10986     (qVar"state",
10987      ITE(Mop(Not,
10988              Dest
10989                ("CU2",bTy,
10990                 Dest
10991                   ("Status",CTy"StatusRegister",
10992                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
10993          Apply
10994            (Const("SignalCP2UnusableException",ATy(qTy,qTy)),qVar"state"),
10995          Let(TP[bVar"v",qVar"s"],
10996              Let(qVar"s0",
10997                  Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"),
10998                  TP[Apply
10999                       (Call
11000                          ("register_inaccessible",ATy(qTy,bTy),
11001                           Var("cb",FTy 5)),qVar"s0"),qVar"s0"]),
11002              ITB([(bVar"v",
11003                    Apply
11004                      (Call
11005                         ("SignalCapException",ATy(qTy,qTy),
11006                          TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
11007                             Var("cb",FTy 5)]),qVar"s")),
11008                   (Call
11009                      ("getTag",bTy,
11010                       Apply
11011                         (Call
11012                            ("CAPR",ATy(qTy,CTy"Capability"),
11013                             Var("cb",FTy 5)),qVar"s")),
11014                    Apply
11015                      (Call
11016                         ("write'BranchTo",ATy(qTy,qTy),
11017                          Mop(Some,
11018                              Bop(Add,
11019                                  Bop(Add,
11020                                      Apply
11021                                        (Const("PC",ATy(qTy,F64)),qVar"s"),
11022                                      LW(4,64)),
11023                                  Bop(Lsl,Mop(SE F64,Var("offset",F16)),
11024                                      LN 2)))),qVar"s"))],qVar"s")))))
11025;
11026val dfn'CSC_def = Def
11027  ("dfn'CSC",
11028   TP[Var("cs",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),Var("offset",FTy 11)],
11029   Close
11030     (qVar"state",
11031      ITB([(Mop(Not,
11032                Dest
11033                  ("CU2",bTy,
11034                   Dest
11035                     ("Status",CTy"StatusRegister",
11036                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
11037            Apply
11038              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
11039               qVar"state")),
11040           (Apply
11041              (Call("register_inaccessible",ATy(qTy,bTy),Var("cs",FTy 5)),
11042               qVar"state"),
11043            Apply
11044              (Call
11045                 ("SignalCapException",ATy(qTy,qTy),
11046                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
11047                     Var("cs",FTy 5)]),qVar"state")),
11048           (Apply
11049              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
11050               qVar"state"),
11051            Apply
11052              (Call
11053                 ("SignalCapException",ATy(qTy,qTy),
11054                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
11055                     Var("cb",FTy 5)]),qVar"state")),
11056           (Mop(Not,
11057                Call
11058                  ("getTag",bTy,
11059                   Apply
11060                     (Call
11061                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
11062                      qVar"state"))),
11063            Apply
11064              (Call
11065                 ("SignalCapException",ATy(qTy,qTy),
11066                  TP[LC("capExcTag",CTy"CapExceptionType"),Var("cb",FTy 5)]),
11067               qVar"state")),
11068           (Call
11069              ("getSealed",bTy,
11070               Apply
11071                 (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
11072                  qVar"state")),
11073            Apply
11074              (Call
11075                 ("SignalCapException",ATy(qTy,qTy),
11076                  TP[LC("capExcSeal",CTy"CapExceptionType"),
11077                     Var("cb",FTy 5)]),qVar"state")),
11078           (Mop(Not,
11079                Dest
11080                  ("Permit_Store_Capability",bTy,
11081                   Call
11082                     ("getPerms",CTy"Perms",
11083                      Apply
11084                        (Call
11085                           ("CAPR",ATy(qTy,CTy"Capability"),
11086                            Var("cb",FTy 5)),qVar"state")))),
11087            Apply
11088              (Call
11089                 ("SignalCapException",ATy(qTy,qTy),
11090                  TP[LC("capExcPermStoreCap",CTy"CapExceptionType"),
11091                     Var("cb",FTy 5)]),qVar"state")),
11092           (Bop(And,
11093                Mop(Not,
11094                    Dest
11095                      ("Permit_Store_Local_Capability",bTy,
11096                       Call
11097                         ("getPerms",CTy"Perms",
11098                          Apply
11099                            (Call
11100                               ("CAPR",ATy(qTy,CTy"Capability"),
11101                                Var("cb",FTy 5)),qVar"state")))),
11102                Bop(And,
11103                    Call
11104                      ("getTag",bTy,
11105                       Apply
11106                         (Call
11107                            ("CAPR",ATy(qTy,CTy"Capability"),
11108                             Var("cs",FTy 5)),qVar"state")),
11109                    Mop(Not,
11110                        Dest
11111                          ("Global",bTy,
11112                           Call
11113                             ("getPerms",CTy"Perms",
11114                              Apply
11115                                (Call
11116                                   ("CAPR",ATy(qTy,CTy"Capability"),
11117                                    Var("cs",FTy 5)),qVar"state")))))),
11118            Apply
11119              (Call
11120                 ("SignalCapException",ATy(qTy,qTy),
11121                  TP[LC("capExcPermStoreLocalCap",CTy"CapExceptionType"),
11122                     Var("cb",FTy 5)]),qVar"state"))],
11123          Let(Var("v",F64),
11124              Bop(Add,
11125                  Bop(Add,
11126                      Bop(Add,
11127                          Call
11128                            ("getBase",F64,
11129                             Apply
11130                               (Call
11131                                  ("CAPR",ATy(qTy,CTy"Capability"),
11132                                   Var("cb",FTy 5)),qVar"state")),
11133                          Call
11134                            ("getOffset",F64,
11135                             Apply
11136                               (Call
11137                                  ("CAPR",ATy(qTy,CTy"Capability"),
11138                                   Var("cb",FTy 5)),qVar"state"))),
11139                      Apply
11140                        (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
11141                         qVar"state")),
11142                  Mop(SE F64,CC[Var("offset",FTy 11),LW(0,4)])),
11143              ITB([(Bop(Ugt,
11144                        Bop(Add,Var("v",F64),
11145                            Mop(Cast F64,Const("CAPBYTEWIDTH",nTy))),
11146                        Bop(Add,
11147                            Call
11148                              ("getBase",F64,
11149                               Apply
11150                                 (Call
11151                                    ("CAPR",ATy(qTy,CTy"Capability"),
11152                                     Var("cb",FTy 5)),qVar"state")),
11153                            Call
11154                              ("getLength",F64,
11155                               Apply
11156                                 (Call
11157                                    ("CAPR",ATy(qTy,CTy"Capability"),
11158                                     Var("cb",FTy 5)),qVar"state")))),
11159                    Apply
11160                      (Call
11161                         ("SignalCapException",ATy(qTy,qTy),
11162                          TP[LC("capExcLength",CTy"CapExceptionType"),
11163                             Var("cb",FTy 5)]),qVar"state")),
11164                   (Bop(Ult,Var("v",F64),
11165                        Call
11166                          ("getBase",F64,
11167                           Apply
11168                             (Call
11169                                ("CAPR",ATy(qTy,CTy"Capability"),
11170                                 Var("cb",FTy 5)),qVar"state"))),
11171                    Apply
11172                      (Call
11173                         ("SignalCapException",ATy(qTy,qTy),
11174                          TP[LC("capExcLength",CTy"CapExceptionType"),
11175                             Var("cb",FTy 5)]),qVar"state")),
11176                   (Mop(Not,Call("isCapAligned",bTy,Var("v",F64))),
11177                    Apply
11178                      (Call
11179                         ("SignalException",ATy(qTy,qTy),
11180                          LC("AdES",CTy"ExceptionType")),
11181                       Apply
11182                         (Call
11183                            ("write'CP0",ATy(qTy,qTy),
11184                             Rupd
11185                               ("BadVAddr",
11186                                TP[Apply
11187                                     (Const("CP0",ATy(qTy,CTy"CP0")),
11188                                      qVar"state"),Var("v",F64)])),
11189                          qVar"state")))],
11190                  Apply
11191                    (Call("write'LLbit",ATy(qTy,qTy),LO bTy),
11192                     Mop(Snd,
11193                         Apply
11194                           (Call
11195                              ("StoreCap",ATy(qTy,PTy(bTy,qTy)),
11196                               TP[Var("v",F64),
11197                                  Apply
11198                                    (Call
11199                                       ("CAPR",ATy(qTy,CTy"Capability"),
11200                                        Var("cs",FTy 5)),qVar"state"),LF]),
11201                            qVar"state"))))))))
11202;
11203val dfn'CLC_def = Def
11204  ("dfn'CLC",
11205   TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),Var("offset",FTy 11)],
11206   Close
11207     (qVar"state",
11208      ITB([(Mop(Not,
11209                Dest
11210                  ("CU2",bTy,
11211                   Dest
11212                     ("Status",CTy"StatusRegister",
11213                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
11214            Apply
11215              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
11216               qVar"state")),
11217           (Apply
11218              (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)),
11219               qVar"state"),
11220            Apply
11221              (Call
11222                 ("SignalCapException",ATy(qTy,qTy),
11223                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
11224                     Var("cd",FTy 5)]),qVar"state")),
11225           (Apply
11226              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
11227               qVar"state"),
11228            Apply
11229              (Call
11230                 ("SignalCapException",ATy(qTy,qTy),
11231                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
11232                     Var("cb",FTy 5)]),qVar"state")),
11233           (Mop(Not,
11234                Call
11235                  ("getTag",bTy,
11236                   Apply
11237                     (Call
11238                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
11239                      qVar"state"))),
11240            Apply
11241              (Call
11242                 ("SignalCapException",ATy(qTy,qTy),
11243                  TP[LC("capExcTag",CTy"CapExceptionType"),Var("cb",FTy 5)]),
11244               qVar"state")),
11245           (Call
11246              ("getSealed",bTy,
11247               Apply
11248                 (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
11249                  qVar"state")),
11250            Apply
11251              (Call
11252                 ("SignalCapException",ATy(qTy,qTy),
11253                  TP[LC("capExcSeal",CTy"CapExceptionType"),
11254                     Var("cb",FTy 5)]),qVar"state"))],
11255          Let(Var("v",F64),
11256              Bop(Add,
11257                  Bop(Add,
11258                      Bop(Add,
11259                          Call
11260                            ("getBase",F64,
11261                             Apply
11262                               (Call
11263                                  ("CAPR",ATy(qTy,CTy"Capability"),
11264                                   Var("cb",FTy 5)),qVar"state")),
11265                          Call
11266                            ("getOffset",F64,
11267                             Apply
11268                               (Call
11269                                  ("CAPR",ATy(qTy,CTy"Capability"),
11270                                   Var("cb",FTy 5)),qVar"state"))),
11271                      Apply
11272                        (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
11273                         qVar"state")),
11274                  Mop(SE F64,CC[Var("offset",FTy 11),LW(0,4)])),
11275              ITB([(Bop(Ugt,
11276                        Bop(Add,Var("v",F64),
11277                            Mop(Cast F64,Const("CAPBYTEWIDTH",nTy))),
11278                        Bop(Add,
11279                            Call
11280                              ("getBase",F64,
11281                               Apply
11282                                 (Call
11283                                    ("CAPR",ATy(qTy,CTy"Capability"),
11284                                     Var("cb",FTy 5)),qVar"state")),
11285                            Call
11286                              ("getLength",F64,
11287                               Apply
11288                                 (Call
11289                                    ("CAPR",ATy(qTy,CTy"Capability"),
11290                                     Var("cb",FTy 5)),qVar"state")))),
11291                    Apply
11292                      (Call
11293                         ("SignalCapException",ATy(qTy,qTy),
11294                          TP[LC("capExcLength",CTy"CapExceptionType"),
11295                             Var("cb",FTy 5)]),qVar"state")),
11296                   (Bop(Ult,Var("v",F64),
11297                        Call
11298                          ("getBase",F64,
11299                           Apply
11300                             (Call
11301                                ("CAPR",ATy(qTy,CTy"Capability"),
11302                                 Var("cb",FTy 5)),qVar"state"))),
11303                    Apply
11304                      (Call
11305                         ("SignalCapException",ATy(qTy,qTy),
11306                          TP[LC("capExcLength",CTy"CapExceptionType"),
11307                             Var("cb",FTy 5)]),qVar"state")),
11308                   (Mop(Not,Call("isCapAligned",bTy,Var("v",F64))),
11309                    Apply
11310                      (Call
11311                         ("SignalException",ATy(qTy,qTy),
11312                          LC("AdEL",CTy"ExceptionType")),
11313                       Apply
11314                         (Call
11315                            ("write'CP0",ATy(qTy,qTy),
11316                             Rupd
11317                               ("BadVAddr",
11318                                TP[Apply
11319                                     (Const("CP0",ATy(qTy,CTy"CP0")),
11320                                      qVar"state"),Var("v",F64)])),
11321                          qVar"state")))],
11322                  Let(TP[Var("v",CTy"Capability"),qVar"s"],
11323                      Apply
11324                        (Call
11325                           ("LoadCap",ATy(qTy,PTy(CTy"Capability",qTy)),
11326                            TP[Var("v",F64),LF]),qVar"state"),
11327                      Apply
11328                        (Call("write'LLbit",ATy(qTy,qTy),LO bTy),
11329                         ITE(Mop(Not,
11330                                 Apply
11331                                   (Const
11332                                      ("exceptionSignalled",ATy(qTy,bTy)),
11333                                    qVar"s")),
11334                             Apply
11335                               (Call
11336                                  ("write'CAPR",ATy(qTy,qTy),
11337                                   TP[ITE(Mop(Not,
11338                                              Dest
11339                                                ("Permit_Load_Capability",
11340                                                 bTy,
11341                                                 Call
11342                                                   ("getPerms",CTy"Perms",
11343                                                    Apply
11344                                                      (Call
11345                                                         ("CAPR",
11346                                                          ATy(qTy,
11347                                                              CTy"Capability"),
11348                                                          Var("cb",FTy 5)),
11349                                                       qVar"s")))),
11350                                          Call
11351                                            ("setTag",CTy"Capability",
11352                                             TP[Var("v",CTy"Capability"),
11353                                                LF]),
11354                                          Var("v",CTy"Capability")),
11355                                      Var("cd",FTy 5)]),qVar"s"),qVar"s"))))))))
11356;
11357val dfn'CLoad_def = Def
11358  ("dfn'CLoad",
11359   TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),Var("offset",F8),
11360      Var("s",F1),Var("t",FTy 2)],
11361   Close
11362     (qVar"state",
11363      ITB([(Mop(Not,
11364                Dest
11365                  ("CU2",bTy,
11366                   Dest
11367                     ("Status",CTy"StatusRegister",
11368                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
11369            Apply
11370              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
11371               qVar"state")),
11372           (Apply
11373              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
11374               qVar"state"),
11375            Apply
11376              (Call
11377                 ("SignalCapException",ATy(qTy,qTy),
11378                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
11379                     Var("cb",FTy 5)]),qVar"state")),
11380           (Mop(Not,
11381                Call
11382                  ("getTag",bTy,
11383                   Apply
11384                     (Call
11385                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
11386                      qVar"state"))),
11387            Apply
11388              (Call
11389                 ("SignalCapException",ATy(qTy,qTy),
11390                  TP[LC("capExcTag",CTy"CapExceptionType"),Var("cb",FTy 5)]),
11391               qVar"state")),
11392           (Call
11393              ("getSealed",bTy,
11394               Apply
11395                 (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
11396                  qVar"state")),
11397            Apply
11398              (Call
11399                 ("SignalCapException",ATy(qTy,qTy),
11400                  TP[LC("capExcSeal",CTy"CapExceptionType"),
11401                     Var("cb",FTy 5)]),qVar"state")),
11402           (Mop(Not,
11403                Dest
11404                  ("Permit_Load",bTy,
11405                   Call
11406                     ("getPerms",CTy"Perms",
11407                      Apply
11408                        (Call
11409                           ("CAPR",ATy(qTy,CTy"Capability"),
11410                            Var("cb",FTy 5)),qVar"state")))),
11411            Apply
11412              (Call
11413                 ("SignalCapException",ATy(qTy,qTy),
11414                  TP[LC("capExcPermLoad",CTy"CapExceptionType"),
11415                     Var("cb",FTy 5)]),qVar"state"))],
11416          Let(Var("v",CTy"Capability"),
11417              Apply
11418                (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
11419                 qVar"state"),
11420              Let(Var("v0",F64),
11421                  Bop(Add,
11422                      Bop(Add,
11423                          Bop(Add,
11424                              Call("getBase",F64,Var("v",CTy"Capability")),
11425                              Call
11426                                ("getOffset",F64,Var("v",CTy"Capability"))),
11427                          Apply
11428                            (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
11429                             qVar"state")),
11430                      Mop(SE F64,
11431                          Bop(Lsl,
11432                              CC[REP(Mop(Cast F1,
11433                                         Bop(Bit,Var("offset",F8),LN 7)),
11434                                     LN 3,FTy 3),Var("offset",F8)],
11435                              Mop(Cast nTy,Var("t",FTy 2))))),
11436                  Let(Var("s0",PTy(FTy 3,PTy(FTy 3,PTy(F64,qTy)))),
11437                      CS(Var("t",FTy 2),
11438                         [(LW(0,2),
11439                           TP[Bop(BXor,EX(Var("v0",F64),LN 2,LN 0,FTy 3),
11440                                  REP(Apply
11441                                        (Const("BigEndianCPU",ATy(qTy,F1)),
11442                                         qVar"state"),LN 3,FTy 3)),
11443                              Const("BYTE",FTy 3),LW(1,64),qVar"state"]),
11444                          (LW(1,2),
11445                           TP[Bop(BXor,EX(Var("v0",F64),LN 2,LN 0,FTy 3),
11446                                  CC[REP(Apply
11447                                           (Const
11448                                              ("BigEndianCPU",ATy(qTy,F1)),
11449                                            qVar"state"),LN 2,FTy 2),
11450                                     LW(0,1)]),Const("HALFWORD",FTy 3),
11451                              LW(2,64),qVar"state"]),
11452                          (LW(2,2),
11453                           TP[Bop(BXor,EX(Var("v0",F64),LN 2,LN 0,FTy 3),
11454                                  CC[Apply
11455                                       (Const("BigEndianCPU",ATy(qTy,F1)),
11456                                        qVar"state"),LW(0,2)]),
11457                              Const("WORD",FTy 3),LW(4,64),qVar"state"]),
11458                          (LW(3,2),
11459                           TP[LW(0,3),Const("DOUBLEWORD",FTy 3),LW(8,64),
11460                              qVar"state"])]),
11461                      ITB([(Bop(Ugt,
11462                                Bop(Add,CC[LW(0,1),Var("v0",F64)],
11463                                    CC[LW(0,1),
11464                                       Mop(Fst,
11465                                           Mop(Snd,
11466                                               Mop(Snd,
11467                                                   Var("s0",
11468                                                       PTy(FTy 3,
11469                                                           PTy(FTy 3,
11470                                                               PTy(F64,qTy)))))))]),
11471                                Bop(Add,
11472                                    CC[LW(0,1),
11473                                       Call
11474                                         ("getBase",F64,
11475                                          Var("v",CTy"Capability"))],
11476                                    CC[LW(0,1),
11477                                       Call
11478                                         ("getLength",F64,
11479                                          Var("v",CTy"Capability"))])),
11480                            Apply
11481                              (Call
11482                                 ("SignalCapException",ATy(qTy,qTy),
11483                                  TP[LC("capExcLength",
11484                                        CTy"CapExceptionType"),
11485                                     Var("cb",FTy 5)]),
11486                               Mop(Snd,
11487                                   Mop(Snd,
11488                                       Mop(Snd,
11489                                           Var("s0",
11490                                               PTy(FTy 3,
11491                                                   PTy(FTy 3,PTy(F64,qTy))))))))),
11492                           (Bop(Ult,Var("v0",F64),
11493                                Call
11494                                  ("getBase",F64,Var("v",CTy"Capability"))),
11495                            Apply
11496                              (Call
11497                                 ("SignalCapException",ATy(qTy,qTy),
11498                                  TP[LC("capExcLength",
11499                                        CTy"CapExceptionType"),
11500                                     Var("cb",FTy 5)]),
11501                               Mop(Snd,
11502                                   Mop(Snd,
11503                                       Mop(Snd,
11504                                           Var("s0",
11505                                               PTy(FTy 3,
11506                                                   PTy(FTy 3,PTy(F64,qTy)))))))))],
11507                          Let(TP[Var("v",F64),
11508                                 Var("s0",
11509                                     PTy(FTy 3,PTy(FTy 3,PTy(F64,qTy))))],
11510                              Let(TP[Var("v",F64),
11511                                     Var("s3",PTy(FTy 3,PTy(F64,qTy)))],
11512                                  Let(TP[Var("v",F64),
11513                                         Var("s3",PTy(F64,qTy))],
11514                                      Let(TP[Var("v",F64),qVar"s3"],
11515                                          Apply
11516                                            (Call
11517                                               ("LoadMemoryCap",
11518                                                ATy(qTy,PTy(F64,qTy)),
11519                                                TP[Mop(Fst,
11520                                                       Mop(Snd,
11521                                                           Var("s0",
11522                                                               PTy(FTy 3,
11523                                                                   PTy(FTy 3,
11524                                                                       PTy(F64,
11525                                                                           qTy)))))),
11526                                                   LT,Var("v0",F64),LF]),
11527                                             Mop(Snd,
11528                                                 Mop(Snd,
11529                                                     Mop(Snd,
11530                                                         Var("s0",
11531                                                             PTy(FTy 3,
11532                                                                 PTy(FTy 3,
11533                                                                     PTy(F64,
11534                                                                         qTy)))))))),
11535                                          TP[Var("v",F64),
11536                                             Mop(Fst,
11537                                                 Mop(Snd,
11538                                                     Mop(Snd,
11539                                                         Var("s0",
11540                                                             PTy(FTy 3,
11541                                                                 PTy(FTy 3,
11542                                                                     PTy(F64,
11543                                                                         qTy))))))),
11544                                             qVar"s3"]),
11545                                      TP[Var("v",F64),
11546                                         Mop(Fst,
11547                                             Mop(Snd,
11548                                                 Var("s0",
11549                                                     PTy(FTy 3,
11550                                                         PTy(FTy 3,
11551                                                             PTy(F64,qTy)))))),
11552                                         Var("s3",PTy(F64,qTy))]),
11553                                  TP[Var("v",F64),
11554                                     Mop(Fst,
11555                                         Var("s0",
11556                                             PTy(FTy 3,
11557                                                 PTy(FTy 3,PTy(F64,qTy))))),
11558                                     Var("s3",PTy(FTy 3,PTy(F64,qTy)))]),
11559                              Let(TP[bVar"v0",
11560                                     Var("s0",
11561                                         PTy(FTy 3,PTy(FTy 3,PTy(F64,qTy))))],
11562                                  Let(TP[bVar"v",
11563                                         Var("s3",PTy(FTy 3,PTy(F64,qTy)))],
11564                                      Let(TP[bVar"v",
11565                                             Var("s3",PTy(F64,qTy))],
11566                                          Let(TP[bVar"v",qVar"s3"],
11567                                              Let(qVar"s",
11568                                                  Mop(Snd,
11569                                                      Mop(Snd,
11570                                                          Mop(Snd,
11571                                                              Var("s0",
11572                                                                  PTy(FTy 3,
11573                                                                      PTy(FTy 3,
11574                                                                          PTy(F64,
11575                                                                              qTy))))))),
11576                                                  TP[Apply
11577                                                       (Const
11578                                                          ("exceptionSignalled",
11579                                                           ATy(qTy,bTy)),
11580                                                        qVar"s"),qVar"s"]),
11581                                              TP[bVar"v",
11582                                                 Mop(Fst,
11583                                                     Mop(Snd,
11584                                                         Mop(Snd,
11585                                                             Var("s0",
11586                                                                 PTy(FTy 3,
11587                                                                     PTy(FTy 3,
11588                                                                         PTy(F64,
11589                                                                             qTy))))))),
11590                                                 qVar"s3"]),
11591                                          TP[bVar"v",
11592                                             Mop(Fst,
11593                                                 Mop(Snd,
11594                                                     Var("s0",
11595                                                         PTy(FTy 3,
11596                                                             PTy(FTy 3,
11597                                                                 PTy(F64,
11598                                                                     qTy)))))),
11599                                             Var("s3",PTy(F64,qTy))]),
11600                                      TP[bVar"v",
11601                                         Mop(Fst,
11602                                             Var("s0",
11603                                                 PTy(FTy 3,
11604                                                     PTy(FTy 3,
11605                                                         PTy(F64,qTy))))),
11606                                         Var("s3",PTy(FTy 3,PTy(F64,qTy)))]),
11607                                  ITE(Mop(Not,bVar"v0"),
11608                                      Let(vVar"final_data",
11609                                          EX(Mop(Cast vTy,Var("v",F64)),
11610                                             Bop(Sub,
11611                                                 Bop(Add,
11612                                                     Bop(Mul,
11613                                                         Mop(Cast nTy,
11614                                                             Mop(Fst,
11615                                                                 Var("s0",
11616                                                                     PTy(FTy 3,
11617                                                                         PTy(FTy 3,
11618                                                                             PTy(F64,
11619                                                                                 qTy)))))),
11620                                                         LN 8),
11621                                                     Bop(Mul,
11622                                                         Mop(Cast nTy,
11623                                                             Mop(Fst,
11624                                                                 Mop(Snd,
11625                                                                     Mop(Snd,
11626                                                                         Var("s0",
11627                                                                             PTy(FTy 3,
11628                                                                                 PTy(FTy 3,
11629                                                                                     PTy(F64,
11630                                                                                         qTy)))))))),
11631                                                         LN 8)),LN 1),
11632                                             Bop(Mul,
11633                                                 Mop(Cast nTy,
11634                                                     Mop(Fst,
11635                                                         Var("s0",
11636                                                             PTy(FTy 3,
11637                                                                 PTy(FTy 3,
11638                                                                     PTy(F64,
11639                                                                         qTy)))))),
11640                                                 LN 8),vTy),
11641                                          ITE(EQ(Var("s",F1),LW(0,1)),
11642                                              Apply
11643                                                (Call
11644                                                   ("write'GPR",
11645                                                    ATy(qTy,qTy),
11646                                                    TP[Mop(Cast F64,
11647                                                           Call
11648                                                             ("ZeroExtendBitString",
11649                                                              vTy,
11650                                                              TP[LN 64,
11651                                                                 vVar"final_data"])),
11652                                                       Var("rd",FTy 5)]),
11653                                                 Mop(Snd,
11654                                                     Mop(Snd,
11655                                                         Mop(Snd,
11656                                                             Var("s0",
11657                                                                 PTy(FTy 3,
11658                                                                     PTy(FTy 3,
11659                                                                         PTy(F64,
11660                                                                             qTy)))))))),
11661                                              Apply
11662                                                (Call
11663                                                   ("write'GPR",
11664                                                    ATy(qTy,qTy),
11665                                                    TP[Mop(Cast F64,
11666                                                           Call
11667                                                             ("SignExtendBitString",
11668                                                              vTy,
11669                                                              TP[LN 64,
11670                                                                 vVar"final_data"])),
11671                                                       Var("rd",FTy 5)]),
11672                                                 Mop(Snd,
11673                                                     Mop(Snd,
11674                                                         Mop(Snd,
11675                                                             Var("s0",
11676                                                                 PTy(FTy 3,
11677                                                                     PTy(FTy 3,
11678                                                                         PTy(F64,
11679                                                                             qTy)))))))))),
11680                                      Mop(Snd,
11681                                          Mop(Snd,
11682                                              Mop(Snd,
11683                                                  Var("s0",
11684                                                      PTy(FTy 3,
11685                                                          PTy(FTy 3,
11686                                                              PTy(F64,qTy)))))))))))))))))
11687;
11688val dfn'CStore_def = Def
11689  ("dfn'CStore",
11690   TP[Var("rs",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),Var("offset",F8),
11691      Var("t",FTy 2)],
11692   Close
11693     (qVar"state",
11694      ITB([(Mop(Not,
11695                Dest
11696                  ("CU2",bTy,
11697                   Dest
11698                     ("Status",CTy"StatusRegister",
11699                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
11700            Apply
11701              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
11702               qVar"state")),
11703           (Apply
11704              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
11705               qVar"state"),
11706            Apply
11707              (Call
11708                 ("SignalCapException",ATy(qTy,qTy),
11709                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
11710                     Var("cb",FTy 5)]),qVar"state")),
11711           (Mop(Not,
11712                Call
11713                  ("getTag",bTy,
11714                   Apply
11715                     (Call
11716                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
11717                      qVar"state"))),
11718            Apply
11719              (Call
11720                 ("SignalCapException",ATy(qTy,qTy),
11721                  TP[LC("capExcTag",CTy"CapExceptionType"),Var("cb",FTy 5)]),
11722               qVar"state")),
11723           (Call
11724              ("getSealed",bTy,
11725               Apply
11726                 (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
11727                  qVar"state")),
11728            Apply
11729              (Call
11730                 ("SignalCapException",ATy(qTy,qTy),
11731                  TP[LC("capExcSeal",CTy"CapExceptionType"),
11732                     Var("cb",FTy 5)]),qVar"state")),
11733           (Mop(Not,
11734                Dest
11735                  ("Permit_Store",bTy,
11736                   Call
11737                     ("getPerms",CTy"Perms",
11738                      Apply
11739                        (Call
11740                           ("CAPR",ATy(qTy,CTy"Capability"),
11741                            Var("cb",FTy 5)),qVar"state")))),
11742            Apply
11743              (Call
11744                 ("SignalCapException",ATy(qTy,qTy),
11745                  TP[LC("capExcPermStore",CTy"CapExceptionType"),
11746                     Var("cb",FTy 5)]),qVar"state"))],
11747          Let(Var("v",CTy"Capability"),
11748              Apply
11749                (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
11750                 qVar"state"),
11751              Let(Var("v0",F64),
11752                  Bop(Add,
11753                      Bop(Add,
11754                          Bop(Add,
11755                              Call("getBase",F64,Var("v",CTy"Capability")),
11756                              Call
11757                                ("getOffset",F64,Var("v",CTy"Capability"))),
11758                          Apply
11759                            (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
11760                             qVar"state")),
11761                      Mop(SE F64,
11762                          Bop(Lsl,
11763                              CC[REP(Mop(Cast F1,
11764                                         Bop(Bit,Var("offset",F8),LN 7)),
11765                                     LN 3,FTy 3),Var("offset",F8)],
11766                              Mop(Cast nTy,Var("t",FTy 2))))),
11767                  Let(Var("s",PTy(FTy 3,PTy(FTy 3,PTy(F64,qTy)))),
11768                      CS(Var("t",FTy 2),
11769                         [(LW(0,2),
11770                           TP[Bop(BXor,EX(Var("v0",F64),LN 2,LN 0,FTy 3),
11771                                  REP(Apply
11772                                        (Const("BigEndianCPU",ATy(qTy,F1)),
11773                                         qVar"state"),LN 3,FTy 3)),
11774                              Const("BYTE",FTy 3),LW(1,64),qVar"state"]),
11775                          (LW(1,2),
11776                           TP[Bop(BXor,EX(Var("v0",F64),LN 2,LN 0,FTy 3),
11777                                  CC[REP(Apply
11778                                           (Const
11779                                              ("BigEndianCPU",ATy(qTy,F1)),
11780                                            qVar"state"),LN 2,FTy 2),
11781                                     LW(0,1)]),Const("HALFWORD",FTy 3),
11782                              LW(2,64),qVar"state"]),
11783                          (LW(2,2),
11784                           TP[Bop(BXor,EX(Var("v0",F64),LN 2,LN 0,FTy 3),
11785                                  CC[REP(Apply
11786                                           (Const
11787                                              ("BigEndianCPU",ATy(qTy,F1)),
11788                                            qVar"state"),LN 1,F1),LW(0,2)]),
11789                              Const("WORD",FTy 3),LW(4,64),qVar"state"]),
11790                          (LW(3,2),
11791                           TP[LW(0,3),Const("DOUBLEWORD",FTy 3),LW(8,64),
11792                              qVar"state"])]),
11793                      ITB([(Bop(Ugt,
11794                                Bop(Add,CC[LW(0,1),Var("v0",F64)],
11795                                    CC[LW(0,1),
11796                                       Mop(Fst,
11797                                           Mop(Snd,
11798                                               Mop(Snd,
11799                                                   Var("s",
11800                                                       PTy(FTy 3,
11801                                                           PTy(FTy 3,
11802                                                               PTy(F64,qTy)))))))]),
11803                                Bop(Add,
11804                                    CC[LW(0,1),
11805                                       Call
11806                                         ("getBase",F64,
11807                                          Var("v",CTy"Capability"))],
11808                                    CC[LW(0,1),
11809                                       Call
11810                                         ("getLength",F64,
11811                                          Var("v",CTy"Capability"))])),
11812                            Apply
11813                              (Call
11814                                 ("SignalCapException",ATy(qTy,qTy),
11815                                  TP[LC("capExcLength",
11816                                        CTy"CapExceptionType"),
11817                                     Var("cb",FTy 5)]),
11818                               Mop(Snd,
11819                                   Mop(Snd,
11820                                       Mop(Snd,
11821                                           Var("s",
11822                                               PTy(FTy 3,
11823                                                   PTy(FTy 3,PTy(F64,qTy))))))))),
11824                           (Bop(Ult,Var("v0",F64),
11825                                Call
11826                                  ("getBase",F64,Var("v",CTy"Capability"))),
11827                            Apply
11828                              (Call
11829                                 ("SignalCapException",ATy(qTy,qTy),
11830                                  TP[LC("capExcLength",
11831                                        CTy"CapExceptionType"),
11832                                     Var("cb",FTy 5)]),
11833                               Mop(Snd,
11834                                   Mop(Snd,
11835                                       Mop(Snd,
11836                                           Var("s",
11837                                               PTy(FTy 3,
11838                                                   PTy(FTy 3,PTy(F64,qTy)))))))))],
11839                          Let(TP[Var("v",
11840                                     PTy(FTy 3,
11841                                         PTy(FTy 3,
11842                                             PTy(F64,PTy(bTy,PTy(F64,bTy)))))),
11843                                 Var("s",
11844                                     PTy(FTy 3,PTy(FTy 3,PTy(F64,qTy))))],
11845                              Let(TP[Var("v0",
11846                                         PTy(FTy 3,
11847                                             PTy(F64,PTy(bTy,PTy(F64,bTy))))),
11848                                     Var("s0",
11849                                         PTy(FTy 3,PTy(FTy 3,PTy(F64,qTy))))],
11850                                  Let(TP[Var("v1",F64),
11851                                         Var("s0",
11852                                             PTy(FTy 3,
11853                                                 PTy(FTy 3,PTy(F64,qTy))))],
11854                                      Let(TP[Var("v",F64),
11855                                             Var("s3",
11856                                                 PTy(FTy 3,PTy(F64,qTy)))],
11857                                          Let(TP[Var("v",F64),
11858                                                 Var("s3",PTy(F64,qTy))],
11859                                              Let(TP[Var("v",F64),qVar"s3"],
11860                                                  Let(qVar"s0",
11861                                                      Mop(Snd,
11862                                                          Mop(Snd,
11863                                                              Mop(Snd,
11864                                                                  Var("s",
11865                                                                      PTy(FTy 3,
11866                                                                          PTy(FTy 3,
11867                                                                              PTy(F64,
11868                                                                                  qTy))))))),
11869                                                      TP[Apply
11870                                                           (Call
11871                                                              ("GPR",
11872                                                               ATy(qTy,F64),
11873                                                               Var("rs",
11874                                                                   FTy 5)),
11875                                                            qVar"s0"),
11876                                                         qVar"s0"]),
11877                                                  TP[Var("v",F64),
11878                                                     Mop(Fst,
11879                                                         Mop(Snd,
11880                                                             Mop(Snd,
11881                                                                 Var("s",
11882                                                                     PTy(FTy 3,
11883                                                                         PTy(FTy 3,
11884                                                                             PTy(F64,
11885                                                                                 qTy))))))),
11886                                                     qVar"s3"]),
11887                                              TP[Var("v",F64),
11888                                                 Mop(Fst,
11889                                                     Mop(Snd,
11890                                                         Var("s",
11891                                                             PTy(FTy 3,
11892                                                                 PTy(FTy 3,
11893                                                                     PTy(F64,
11894                                                                         qTy)))))),
11895                                                 Var("s3",PTy(F64,qTy))]),
11896                                          TP[Var("v",F64),
11897                                             Mop(Fst,
11898                                                 Var("s",
11899                                                     PTy(FTy 3,
11900                                                         PTy(FTy 3,
11901                                                             PTy(F64,qTy))))),
11902                                             Var("s3",
11903                                                 PTy(FTy 3,PTy(F64,qTy)))]),
11904                                      TP[TP[Mop(Fst,
11905                                                Mop(Snd,
11906                                                    Var("s",
11907                                                        PTy(FTy 3,
11908                                                            PTy(FTy 3,
11909                                                                PTy(F64,
11910                                                                    qTy)))))),
11911                                            Bop(Lsl,Var("v1",F64),
11912                                                Bop(Mul,LN 8,
11913                                                    Mop(Cast nTy,
11914                                                        Mop(Fst,
11915                                                            Var("s0",
11916                                                                PTy(FTy 3,
11917                                                                    PTy(FTy 3,
11918                                                                        PTy(F64,
11919                                                                            qTy)))))))),
11920                                            LT,Var("v0",F64),LF],
11921                                         Var("s0",
11922                                             PTy(FTy 3,
11923                                                 PTy(FTy 3,PTy(F64,qTy))))]),
11924                                  TP[TP[Mop(Fst,
11925                                            Mop(Snd,
11926                                                Var("s",
11927                                                    PTy(FTy 3,
11928                                                        PTy(FTy 3,
11929                                                            PTy(F64,qTy)))))),
11930                                        Var("v0",
11931                                            PTy(FTy 3,
11932                                                PTy(F64,
11933                                                    PTy(bTy,PTy(F64,bTy)))))],
11934                                     Var("s0",
11935                                         PTy(FTy 3,PTy(FTy 3,PTy(F64,qTy))))]),
11936                              Mop(Snd,
11937                                  Apply
11938                                    (Call
11939                                       ("StoreMemoryCap",
11940                                        ATy(qTy,PTy(bTy,qTy)),
11941                                        Var("v",
11942                                            PTy(FTy 3,
11943                                                PTy(FTy 3,
11944                                                    PTy(F64,
11945                                                        PTy(bTy,
11946                                                            PTy(F64,bTy))))))),
11947                                     Mop(Snd,
11948                                         Mop(Snd,
11949                                             Mop(Snd,
11950                                                 Var("s",
11951                                                     PTy(FTy 3,
11952                                                         PTy(FTy 3,
11953                                                             PTy(F64,qTy)))))))))))))))))
11954;
11955val dfn'CLLC_def = Def
11956  ("dfn'CLLC",TP[Var("cd",FTy 5),Var("cb",FTy 5)],
11957   Close
11958     (qVar"state",
11959      Let(Var("v",F64),
11960          Bop(Add,
11961              Call
11962                ("getBase",F64,
11963                 Apply
11964                   (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
11965                    qVar"state")),
11966              Call
11967                ("getOffset",F64,
11968                 Apply
11969                   (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
11970                    qVar"state"))),
11971          ITB([(Mop(Not,
11972                    Dest
11973                      ("CU2",bTy,
11974                       Dest
11975                         ("Status",CTy"StatusRegister",
11976                          Apply
11977                            (Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
11978                Apply
11979                  (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
11980                   qVar"state")),
11981               (Apply
11982                  (Call
11983                     ("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)),
11984                   qVar"state"),
11985                Apply
11986                  (Call
11987                     ("SignalCapException",ATy(qTy,qTy),
11988                      TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
11989                         Var("cd",FTy 5)]),qVar"state")),
11990               (Apply
11991                  (Call
11992                     ("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
11993                   qVar"state"),
11994                Apply
11995                  (Call
11996                     ("SignalCapException",ATy(qTy,qTy),
11997                      TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
11998                         Var("cb",FTy 5)]),qVar"state")),
11999               (Mop(Not,
12000                    Call
12001                      ("getTag",bTy,
12002                       Apply
12003                         (Call
12004                            ("CAPR",ATy(qTy,CTy"Capability"),
12005                             Var("cb",FTy 5)),qVar"state"))),
12006                Apply
12007                  (Call
12008                     ("SignalCapException",ATy(qTy,qTy),
12009                      TP[LC("capExcTag",CTy"CapExceptionType"),
12010                         Var("cb",FTy 5)]),qVar"state")),
12011               (Call
12012                  ("getSealed",bTy,
12013                   Apply
12014                     (Call
12015                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
12016                      qVar"state")),
12017                Apply
12018                  (Call
12019                     ("SignalCapException",ATy(qTy,qTy),
12020                      TP[LC("capExcSeal",CTy"CapExceptionType"),
12021                         Var("cb",FTy 5)]),qVar"state")),
12022               (Bop(Ugt,
12023                    Bop(Add,Var("v",F64),
12024                        Mop(Cast F64,Const("CAPBYTEWIDTH",nTy))),
12025                    Bop(Add,
12026                        Call
12027                          ("getBase",F64,
12028                           Apply
12029                             (Call
12030                                ("CAPR",ATy(qTy,CTy"Capability"),
12031                                 Var("cb",FTy 5)),qVar"state")),
12032                        Call
12033                          ("getLength",F64,
12034                           Apply
12035                             (Call
12036                                ("CAPR",ATy(qTy,CTy"Capability"),
12037                                 Var("cb",FTy 5)),qVar"state")))),
12038                Apply
12039                  (Call
12040                     ("SignalCapException",ATy(qTy,qTy),
12041                      TP[LC("capExcLength",CTy"CapExceptionType"),
12042                         Var("cb",FTy 5)]),qVar"state")),
12043               (Bop(Ult,Var("v",F64),
12044                    Call
12045                      ("getBase",F64,
12046                       Apply
12047                         (Call
12048                            ("CAPR",ATy(qTy,CTy"Capability"),
12049                             Var("cb",FTy 5)),qVar"state"))),
12050                Apply
12051                  (Call
12052                     ("SignalCapException",ATy(qTy,qTy),
12053                      TP[LC("capExcLength",CTy"CapExceptionType"),
12054                         Var("cb",FTy 5)]),qVar"state")),
12055               (Mop(Not,Call("isCapAligned",bTy,Var("v",F64))),
12056                Apply
12057                  (Call
12058                     ("SignalException",ATy(qTy,qTy),
12059                      LC("AdEL",CTy"ExceptionType")),
12060                   Apply
12061                     (Call
12062                        ("write'CP0",ATy(qTy,qTy),
12063                         Rupd
12064                           ("BadVAddr",
12065                            TP[Apply
12066                                 (Const("CP0",ATy(qTy,CTy"CP0")),
12067                                  qVar"state"),Var("v",F64)])),qVar"state")))],
12068              Let(TP[Var("v",CTy"Capability"),qVar"s"],
12069                  Apply
12070                    (Call
12071                       ("LoadCap",ATy(qTy,PTy(CTy"Capability",qTy)),
12072                        TP[Var("v",F64),LT]),qVar"state"),
12073                  ITE(Mop(Not,
12074                          Apply
12075                            (Const("exceptionSignalled",ATy(qTy,bTy)),
12076                             qVar"s")),
12077                      Apply
12078                        (Call
12079                           ("write'CAPR",ATy(qTy,qTy),
12080                            TP[ITE(Mop(Not,
12081                                       Dest
12082                                         ("Permit_Load_Capability",bTy,
12083                                          Call
12084                                            ("getPerms",CTy"Perms",
12085                                             Apply
12086                                               (Call
12087                                                  ("CAPR",
12088                                                   ATy(qTy,CTy"Capability"),
12089                                                   Var("cb",FTy 5)),
12090                                                qVar"s")))),
12091                                   Call
12092                                     ("setTag",CTy"Capability",
12093                                      TP[Var("v",CTy"Capability"),LF]),
12094                                   Var("v",CTy"Capability")),
12095                               Var("cd",FTy 5)]),qVar"s"),qVar"s"))))))
12096;
12097val dfn'CLLx_def = Def
12098  ("dfn'CLLx",TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("stt",FTy 3)],
12099   Close
12100     (qVar"state",
12101      Let(Var("t",FTy 2),EX(Var("stt",FTy 3),LN 1,LN 0,FTy 2),
12102          Let(Var("v",CTy"Capability"),
12103              Apply
12104                (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
12105                 qVar"state"),
12106              Let(Var("addr",F64),
12107                  Bop(Add,Call("getBase",F64,Var("v",CTy"Capability")),
12108                      Call("getOffset",F64,Var("v",CTy"Capability"))),
12109                  Let(Var("size",F64),
12110                      Mop(Cast F64,
12111                          Bop(Lsl,LW(1,64),Mop(Cast nTy,Var("t",FTy 2)))),
12112                      Let(TP[Var("v0",FTy 3),qVar"s"],
12113                          CS(Var("t",FTy 2),
12114                             [(LW(0,2),
12115                               TP[Bop(BXor,
12116                                      EX(Var("addr",F64),LN 2,LN 0,FTy 3),
12117                                      REP(Apply
12118                                            (Const
12119                                               ("BigEndianCPU",ATy(qTy,F1)),
12120                                             qVar"state"),LN 3,FTy 3)),
12121                                  qVar"state"]),
12122                              (LW(1,2),
12123                               TP[Bop(BXor,
12124                                      EX(Var("addr",F64),LN 2,LN 0,FTy 3),
12125                                      CC[REP(Apply
12126                                               (Const
12127                                                  ("BigEndianCPU",
12128                                                   ATy(qTy,F1)),
12129                                                qVar"state"),LN 2,FTy 2),
12130                                         LW(0,1)]),qVar"state"]),
12131                              (LW(2,2),
12132                               TP[Bop(BXor,
12133                                      EX(Var("addr",F64),LN 2,LN 0,FTy 3),
12134                                      CC[REP(Apply
12135                                               (Const
12136                                                  ("BigEndianCPU",
12137                                                   ATy(qTy,F1)),
12138                                                qVar"state"),LN 1,F1),
12139                                         LW(0,2)]),qVar"state"]),
12140                              (LW(3,2),TP[LW(0,3),qVar"state"])]),
12141                          ITB([(Mop(Not,
12142                                    Dest
12143                                      ("CU2",bTy,
12144                                       Dest
12145                                         ("Status",CTy"StatusRegister",
12146                                          Apply
12147                                            (Const
12148                                               ("CP0",ATy(qTy,CTy"CP0")),
12149                                             qVar"s")))),
12150                                Apply
12151                                  (Const
12152                                     ("SignalCP2UnusableException",
12153                                      ATy(qTy,qTy)),qVar"s")),
12154                               (Apply
12155                                  (Call
12156                                     ("register_inaccessible",
12157                                      ATy(qTy,bTy),Var("cb",FTy 5)),
12158                                   qVar"s"),
12159                                Apply
12160                                  (Call
12161                                     ("SignalCapException",ATy(qTy,qTy),
12162                                      TP[LC("capExcAccessSysReg",
12163                                            CTy"CapExceptionType"),
12164                                         Var("cb",FTy 5)]),qVar"s")),
12165                               (Mop(Not,
12166                                    Call
12167                                      ("getTag",bTy,
12168                                       Var("v",CTy"Capability"))),
12169                                Apply
12170                                  (Call
12171                                     ("SignalCapException",ATy(qTy,qTy),
12172                                      TP[LC("capExcTag",
12173                                            CTy"CapExceptionType"),
12174                                         Var("cb",FTy 5)]),qVar"s")),
12175                               (Call
12176                                  ("getSealed",bTy,
12177                                   Var("v",CTy"Capability")),
12178                                Apply
12179                                  (Call
12180                                     ("SignalCapException",ATy(qTy,qTy),
12181                                      TP[LC("capExcSeal",
12182                                            CTy"CapExceptionType"),
12183                                         Var("cb",FTy 5)]),qVar"s")),
12184                               (Mop(Not,
12185                                    Dest
12186                                      ("Permit_Load",bTy,
12187                                       Call
12188                                         ("getPerms",CTy"Perms",
12189                                          Var("v",CTy"Capability")))),
12190                                Apply
12191                                  (Call
12192                                     ("SignalCapException",ATy(qTy,qTy),
12193                                      TP[LC("capExcPermLoad",
12194                                            CTy"CapExceptionType"),
12195                                         Var("cb",FTy 5)]),qVar"s")),
12196                               (Bop(Ugt,
12197                                    Bop(Add,CC[LW(0,1),Var("addr",F64)],
12198                                        CC[LW(0,1),Var("size",F64)]),
12199                                    Bop(Add,
12200                                        CC[LW(0,1),
12201                                           Call
12202                                             ("getBase",F64,
12203                                              Var("v",CTy"Capability"))],
12204                                        CC[LW(0,1),
12205                                           Call
12206                                             ("getLength",F64,
12207                                              Var("v",CTy"Capability"))])),
12208                                Apply
12209                                  (Call
12210                                     ("SignalCapException",ATy(qTy,qTy),
12211                                      TP[LC("capExcLength",
12212                                            CTy"CapExceptionType"),
12213                                         Var("cb",FTy 5)]),qVar"s")),
12214                               (Bop(Ult,Var("addr",F64),
12215                                    Call
12216                                      ("getBase",F64,
12217                                       Apply
12218                                         (Call
12219                                            ("CAPR",
12220                                             ATy(qTy,CTy"Capability"),
12221                                             Var("cb",FTy 5)),qVar"s"))),
12222                                Apply
12223                                  (Call
12224                                     ("SignalCapException",ATy(qTy,qTy),
12225                                      TP[LC("capExcLength",
12226                                            CTy"CapExceptionType"),
12227                                         Var("cb",FTy 5)]),qVar"s"))],
12228                              Let(TP[Var("v1",F64),qVar"s"],
12229                                  Apply
12230                                    (Call
12231                                       ("LoadMemoryCap",
12232                                        ATy(qTy,PTy(F64,qTy)),
12233                                        TP[ITE(EQ(Var("t",FTy 2),LW(0,2)),
12234                                               LW(0,3),
12235                                               REP(LW(1,1),
12236                                                   Mop(Cast nTy,
12237                                                       Var("t",FTy 2)),
12238                                                   FTy 3)),LT,
12239                                           Var("addr",F64),LT]),qVar"s"),
12240                                  ITE(Mop(Not,
12241                                          Apply
12242                                            (Const
12243                                               ("exceptionSignalled",
12244                                                ATy(qTy,bTy)),qVar"s")),
12245                                      Let(vVar"final_data",
12246                                          EX(Mop(Cast vTy,Var("v1",F64)),
12247                                             Bop(Sub,
12248                                                 Bop(Add,
12249                                                     Bop(Mul,
12250                                                         Mop(Cast nTy,
12251                                                             Var("v0",
12252                                                                 FTy 3)),
12253                                                         LN 8),
12254                                                     Bop(Mul,
12255                                                         Mop(Cast nTy,
12256                                                             Var("size",
12257                                                                 F64)),
12258                                                         LN 8)),LN 1),
12259                                             Bop(Mul,
12260                                                 Mop(Cast nTy,
12261                                                     Var("v0",FTy 3)),LN 8),
12262                                             vTy),
12263                                          ITE(Mop(Not,
12264                                                  Bop(Bit,
12265                                                      Var("stt",FTy 3),
12266                                                      LN 2)),
12267                                              Apply
12268                                                (Call
12269                                                   ("write'GPR",
12270                                                    ATy(qTy,qTy),
12271                                                    TP[Mop(Cast F64,
12272                                                           Call
12273                                                             ("ZeroExtendBitString",
12274                                                              vTy,
12275                                                              TP[LN 64,
12276                                                                 vVar"final_data"])),
12277                                                       Var("rd",FTy 5)]),
12278                                                 qVar"s"),
12279                                              Apply
12280                                                (Call
12281                                                   ("write'GPR",
12282                                                    ATy(qTy,qTy),
12283                                                    TP[Mop(Cast F64,
12284                                                           Call
12285                                                             ("SignExtendBitString",
12286                                                              vTy,
12287                                                              TP[LN 64,
12288                                                                 vVar"final_data"])),
12289                                                       Var("rd",FTy 5)]),
12290                                                 qVar"s"))),qVar"s"))))))))))
12291;
12292val dfn'CSCC_def = Def
12293  ("dfn'CSCC",TP[Var("cs",FTy 5),Var("cb",FTy 5),Var("rd",FTy 5)],
12294   Close
12295     (qVar"state",
12296      Let(Var("v",F64),
12297          Bop(Add,
12298              Call
12299                ("getBase",F64,
12300                 Apply
12301                   (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
12302                    qVar"state")),
12303              Call
12304                ("getOffset",F64,
12305                 Apply
12306                   (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
12307                    qVar"state"))),
12308          ITB([(Mop(Not,
12309                    Dest
12310                      ("CU2",bTy,
12311                       Dest
12312                         ("Status",CTy"StatusRegister",
12313                          Apply
12314                            (Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
12315                Apply
12316                  (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
12317                   qVar"state")),
12318               (Apply
12319                  (Call
12320                     ("register_inaccessible",ATy(qTy,bTy),Var("cs",FTy 5)),
12321                   qVar"state"),
12322                Apply
12323                  (Call
12324                     ("SignalCapException",ATy(qTy,qTy),
12325                      TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
12326                         Var("cs",FTy 5)]),qVar"state")),
12327               (Apply
12328                  (Call
12329                     ("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
12330                   qVar"state"),
12331                Apply
12332                  (Call
12333                     ("SignalCapException",ATy(qTy,qTy),
12334                      TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
12335                         Var("cb",FTy 5)]),qVar"state")),
12336               (Mop(Not,
12337                    Call
12338                      ("getTag",bTy,
12339                       Apply
12340                         (Call
12341                            ("CAPR",ATy(qTy,CTy"Capability"),
12342                             Var("cb",FTy 5)),qVar"state"))),
12343                Apply
12344                  (Call
12345                     ("SignalCapException",ATy(qTy,qTy),
12346                      TP[LC("capExcTag",CTy"CapExceptionType"),
12347                         Var("cb",FTy 5)]),qVar"state")),
12348               (Call
12349                  ("getSealed",bTy,
12350                   Apply
12351                     (Call
12352                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
12353                      qVar"state")),
12354                Apply
12355                  (Call
12356                     ("SignalCapException",ATy(qTy,qTy),
12357                      TP[LC("capExcSeal",CTy"CapExceptionType"),
12358                         Var("cb",FTy 5)]),qVar"state")),
12359               (Mop(Not,
12360                    Dest
12361                      ("Permit_Store_Capability",bTy,
12362                       Call
12363                         ("getPerms",CTy"Perms",
12364                          Apply
12365                            (Call
12366                               ("CAPR",ATy(qTy,CTy"Capability"),
12367                                Var("cb",FTy 5)),qVar"state")))),
12368                Apply
12369                  (Call
12370                     ("SignalCapException",ATy(qTy,qTy),
12371                      TP[LC("capExcPermStoreCap",CTy"CapExceptionType"),
12372                         Var("cb",FTy 5)]),qVar"state")),
12373               (Bop(And,
12374                    Mop(Not,
12375                        Dest
12376                          ("Permit_Store_Local_Capability",bTy,
12377                           Call
12378                             ("getPerms",CTy"Perms",
12379                              Apply
12380                                (Call
12381                                   ("CAPR",ATy(qTy,CTy"Capability"),
12382                                    Var("cb",FTy 5)),qVar"state")))),
12383                    Bop(And,
12384                        Call
12385                          ("getTag",bTy,
12386                           Apply
12387                             (Call
12388                                ("CAPR",ATy(qTy,CTy"Capability"),
12389                                 Var("cs",FTy 5)),qVar"state")),
12390                        Mop(Not,
12391                            Dest
12392                              ("Global",bTy,
12393                               Call
12394                                 ("getPerms",CTy"Perms",
12395                                  Apply
12396                                    (Call
12397                                       ("CAPR",ATy(qTy,CTy"Capability"),
12398                                        Var("cs",FTy 5)),qVar"state")))))),
12399                Apply
12400                  (Call
12401                     ("SignalCapException",ATy(qTy,qTy),
12402                      TP[LC("capExcPermStoreLocalCap",
12403                            CTy"CapExceptionType"),Var("cb",FTy 5)]),
12404                   qVar"state")),
12405               (Bop(Ugt,
12406                    Bop(Add,CC[LW(0,1),Var("v",F64)],
12407                        Mop(Cast(FTy 65),Const("CAPBYTEWIDTH",nTy))),
12408                    Bop(Add,
12409                        CC[LW(0,1),
12410                           Call
12411                             ("getBase",F64,
12412                              Apply
12413                                (Call
12414                                   ("CAPR",ATy(qTy,CTy"Capability"),
12415                                    Var("cb",FTy 5)),qVar"state"))],
12416                        CC[LW(0,1),
12417                           Call
12418                             ("getLength",F64,
12419                              Apply
12420                                (Call
12421                                   ("CAPR",ATy(qTy,CTy"Capability"),
12422                                    Var("cb",FTy 5)),qVar"state"))])),
12423                Apply
12424                  (Call
12425                     ("SignalCapException",ATy(qTy,qTy),
12426                      TP[LC("capExcLength",CTy"CapExceptionType"),
12427                         Var("cb",FTy 5)]),qVar"state")),
12428               (Bop(Ult,Var("v",F64),
12429                    Call
12430                      ("getBase",F64,
12431                       Apply
12432                         (Call
12433                            ("CAPR",ATy(qTy,CTy"Capability"),
12434                             Var("cb",FTy 5)),qVar"state"))),
12435                Apply
12436                  (Call
12437                     ("SignalCapException",ATy(qTy,qTy),
12438                      TP[LC("capExcLength",CTy"CapExceptionType"),
12439                         Var("cb",FTy 5)]),qVar"state")),
12440               (Mop(Not,Call("isCapAligned",bTy,Var("v",F64))),
12441                Apply
12442                  (Call
12443                     ("SignalException",ATy(qTy,qTy),
12444                      LC("AdES",CTy"ExceptionType")),
12445                   Apply
12446                     (Call
12447                        ("write'CP0",ATy(qTy,qTy),
12448                         Rupd
12449                           ("BadVAddr",
12450                            TP[Apply
12451                                 (Const("CP0",ATy(qTy,CTy"CP0")),
12452                                  qVar"state"),Var("v",F64)])),qVar"state")))],
12453              Let(TP[Var("v",F64),qVar"s"],
12454                  Let(TP[bVar"v",qVar"s"],
12455                      Apply
12456                        (Call
12457                           ("StoreCap",ATy(qTy,PTy(bTy,qTy)),
12458                            TP[Var("v",F64),
12459                               Apply
12460                                 (Call
12461                                    ("CAPR",ATy(qTy,CTy"Capability"),
12462                                     Var("cs",FTy 5)),qVar"state"),LT]),
12463                         qVar"state"),
12464                      TP[ITE(bVar"v",LW(1,64),LW(0,64)),qVar"s"]),
12465                  ITE(Mop(Not,
12466                          Apply
12467                            (Const("exceptionSignalled",ATy(qTy,bTy)),
12468                             qVar"s")),
12469                      Apply
12470                        (Call
12471                           ("write'GPR",ATy(qTy,qTy),
12472                            TP[Var("v",F64),Var("rd",FTy 5)]),qVar"s"),
12473                      qVar"s"))))))
12474;
12475val dfn'CSCx_def = Def
12476  ("dfn'CSCx",
12477   TP[Var("rs",FTy 5),Var("cb",FTy 5),Var("rd",FTy 5),Var("t",FTy 2)],
12478   Close
12479     (qVar"state",
12480      Let(Var("v",F64),
12481          Bop(Add,
12482              Call
12483                ("getBase",F64,
12484                 Apply
12485                   (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
12486                    qVar"state")),
12487              Call
12488                ("getOffset",F64,
12489                 Apply
12490                   (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
12491                    qVar"state"))),
12492          Let(Var("access_length",FTy 3),
12493              ITE(EQ(Var("t",FTy 2),LW(0,2)),LW(0,3),
12494                  REP(LW(1,1),Mop(Cast nTy,Var("t",FTy 2)),FTy 3)),
12495              ITB([(Mop(Not,
12496                        Dest
12497                          ("CU2",bTy,
12498                           Dest
12499                             ("Status",CTy"StatusRegister",
12500                              Apply
12501                                (Const("CP0",ATy(qTy,CTy"CP0")),
12502                                 qVar"state")))),
12503                    Apply
12504                      (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
12505                       qVar"state")),
12506                   (Apply
12507                      (Call
12508                         ("register_inaccessible",ATy(qTy,bTy),
12509                          Var("cb",FTy 5)),qVar"state"),
12510                    Apply
12511                      (Call
12512                         ("SignalCapException",ATy(qTy,qTy),
12513                          TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
12514                             Var("cb",FTy 5)]),qVar"state")),
12515                   (Mop(Not,
12516                        Call
12517                          ("getTag",bTy,
12518                           Apply
12519                             (Call
12520                                ("CAPR",ATy(qTy,CTy"Capability"),
12521                                 Var("cb",FTy 5)),qVar"state"))),
12522                    Apply
12523                      (Call
12524                         ("SignalCapException",ATy(qTy,qTy),
12525                          TP[LC("capExcTag",CTy"CapExceptionType"),
12526                             Var("cb",FTy 5)]),qVar"state")),
12527                   (Call
12528                      ("getSealed",bTy,
12529                       Apply
12530                         (Call
12531                            ("CAPR",ATy(qTy,CTy"Capability"),
12532                             Var("cb",FTy 5)),qVar"state")),
12533                    Apply
12534                      (Call
12535                         ("SignalCapException",ATy(qTy,qTy),
12536                          TP[LC("capExcSeal",CTy"CapExceptionType"),
12537                             Var("cb",FTy 5)]),qVar"state")),
12538                   (Mop(Not,
12539                        Dest
12540                          ("Permit_Store",bTy,
12541                           Call
12542                             ("getPerms",CTy"Perms",
12543                              Apply
12544                                (Call
12545                                   ("CAPR",ATy(qTy,CTy"Capability"),
12546                                    Var("cb",FTy 5)),qVar"state")))),
12547                    Apply
12548                      (Call
12549                         ("SignalCapException",ATy(qTy,qTy),
12550                          TP[LC("capExcPermStore",CTy"CapExceptionType"),
12551                             Var("cb",FTy 5)]),qVar"state")),
12552                   (Bop(Ugt,
12553                        Bop(Add,CC[LW(0,1),Var("v",F64)],
12554                            CC[LW(0,1),
12555                               Mop(Cast F64,
12556                                   Bop(Lsl,LW(1,64),
12557                                       Mop(Cast nTy,Var("t",FTy 2))))]),
12558                        Bop(Add,
12559                            CC[LW(0,1),
12560                               Call
12561                                 ("getBase",F64,
12562                                  Apply
12563                                    (Call
12564                                       ("CAPR",ATy(qTy,CTy"Capability"),
12565                                        Var("cb",FTy 5)),qVar"state"))],
12566                            CC[LW(0,1),
12567                               Call
12568                                 ("getLength",F64,
12569                                  Apply
12570                                    (Call
12571                                       ("CAPR",ATy(qTy,CTy"Capability"),
12572                                        Var("cb",FTy 5)),qVar"state"))])),
12573                    Apply
12574                      (Call
12575                         ("SignalCapException",ATy(qTy,qTy),
12576                          TP[LC("capExcLength",CTy"CapExceptionType"),
12577                             Var("cb",FTy 5)]),qVar"state")),
12578                   (Bop(Ult,Var("v",F64),
12579                        Call
12580                          ("getBase",F64,
12581                           Apply
12582                             (Call
12583                                ("CAPR",ATy(qTy,CTy"Capability"),
12584                                 Var("cb",FTy 5)),qVar"state"))),
12585                    Apply
12586                      (Call
12587                         ("SignalCapException",ATy(qTy,qTy),
12588                          TP[LC("capExcLength",CTy"CapExceptionType"),
12589                             Var("cb",FTy 5)]),qVar"state"))],
12590                  Let(TP[Var("v",F64),qVar"s"],
12591                      Let(TP[bVar"v",qVar"s"],
12592                          Apply
12593                            (Call
12594                               ("StoreMemoryCap",ATy(qTy,PTy(bTy,qTy)),
12595                                TP[Var("access_length",FTy 3),
12596                                   Var("access_length",FTy 3),
12597                                   Apply
12598                                     (Call
12599                                        ("GPR",ATy(qTy,F64),
12600                                         Var("rs",FTy 5)),qVar"state"),LT,
12601                                   Var("v",F64),LT]),qVar"state"),
12602                          TP[ITE(bVar"v",LW(1,64),LW(0,64)),qVar"s"]),
12603                      ITE(Mop(Not,
12604                              Apply
12605                                (Const("exceptionSignalled",ATy(qTy,bTy)),
12606                                 qVar"s")),
12607                          Apply
12608                            (Call
12609                               ("write'GPR",ATy(qTy,qTy),
12610                                TP[Var("v",F64),Var("rd",FTy 5)]),qVar"s"),
12611                          qVar"s")))))))
12612;
12613val dfn'CMOVN_def = Def
12614  ("dfn'CMOVN",TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)],
12615   Close
12616     (qVar"state",
12617      ITB([(Mop(Not,
12618                Dest
12619                  ("CU2",bTy,
12620                   Dest
12621                     ("Status",CTy"StatusRegister",
12622                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
12623            Apply
12624              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
12625               qVar"state")),
12626           (Apply
12627              (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)),
12628               qVar"state"),
12629            Apply
12630              (Call
12631                 ("SignalCapException",ATy(qTy,qTy),
12632                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
12633                     Var("cd",FTy 5)]),qVar"state")),
12634           (Apply
12635              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
12636               qVar"state"),
12637            Apply
12638              (Call
12639                 ("SignalCapException",ATy(qTy,qTy),
12640                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
12641                     Var("cb",FTy 5)]),qVar"state")),
12642           (Mop(Not,
12643                EQ(Apply
12644                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
12645                   LW(0,64))),
12646            Apply
12647              (Call
12648                 ("write'CAPR",ATy(qTy,qTy),
12649                  TP[Apply
12650                       (Call
12651                          ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
12652                        qVar"state"),Var("cd",FTy 5)]),qVar"state"))],
12653          qVar"state")))
12654;
12655val dfn'CMOVZ_def = Def
12656  ("dfn'CMOVZ",TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)],
12657   Close
12658     (qVar"state",
12659      ITB([(Mop(Not,
12660                Dest
12661                  ("CU2",bTy,
12662                   Dest
12663                     ("Status",CTy"StatusRegister",
12664                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
12665            Apply
12666              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
12667               qVar"state")),
12668           (Apply
12669              (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)),
12670               qVar"state"),
12671            Apply
12672              (Call
12673                 ("SignalCapException",ATy(qTy,qTy),
12674                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
12675                     Var("cd",FTy 5)]),qVar"state")),
12676           (Apply
12677              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
12678               qVar"state"),
12679            Apply
12680              (Call
12681                 ("SignalCapException",ATy(qTy,qTy),
12682                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
12683                     Var("cb",FTy 5)]),qVar"state")),
12684           (EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
12685               LW(0,64)),
12686            Apply
12687              (Call
12688                 ("write'CAPR",ATy(qTy,qTy),
12689                  TP[Apply
12690                       (Call
12691                          ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
12692                        qVar"state"),Var("cd",FTy 5)]),qVar"state"))],
12693          qVar"state")))
12694;
12695val dfn'CJR_def = Def
12696  ("dfn'CJR",Var("cb",FTy 5),
12697   Close
12698     (qVar"state",
12699      ITE(Mop(Not,
12700              Dest
12701                ("CU2",bTy,
12702                 Dest
12703                   ("Status",CTy"StatusRegister",
12704                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
12705          Apply
12706            (Const("SignalCP2UnusableException",ATy(qTy,qTy)),qVar"state"),
12707          Let(TP[bVar"v",qVar"s"],
12708              Let(qVar"s0",
12709                  Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"),
12710                  TP[Apply
12711                       (Call
12712                          ("register_inaccessible",ATy(qTy,bTy),
12713                           Var("cb",FTy 5)),qVar"s0"),qVar"s0"]),
12714              ITB([(bVar"v",
12715                    Apply
12716                      (Call
12717                         ("SignalCapException",ATy(qTy,qTy),
12718                          TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
12719                             Var("cb",FTy 5)]),qVar"s")),
12720                   (Mop(Not,
12721                        Call
12722                          ("getTag",bTy,
12723                           Apply
12724                             (Call
12725                                ("CAPR",ATy(qTy,CTy"Capability"),
12726                                 Var("cb",FTy 5)),qVar"s"))),
12727                    Apply
12728                      (Call
12729                         ("SignalCapException",ATy(qTy,qTy),
12730                          TP[LC("capExcTag",CTy"CapExceptionType"),
12731                             Var("cb",FTy 5)]),qVar"s")),
12732                   (Call
12733                      ("getSealed",bTy,
12734                       Apply
12735                         (Call
12736                            ("CAPR",ATy(qTy,CTy"Capability"),
12737                             Var("cb",FTy 5)),qVar"s")),
12738                    Apply
12739                      (Call
12740                         ("SignalCapException",ATy(qTy,qTy),
12741                          TP[LC("capExcSeal",CTy"CapExceptionType"),
12742                             Var("cb",FTy 5)]),qVar"s")),
12743                   (Mop(Not,
12744                        Dest
12745                          ("Permit_Execute",bTy,
12746                           Call
12747                             ("getPerms",CTy"Perms",
12748                              Apply
12749                                (Call
12750                                   ("CAPR",ATy(qTy,CTy"Capability"),
12751                                    Var("cb",FTy 5)),qVar"s")))),
12752                    Apply
12753                      (Call
12754                         ("SignalCapException",ATy(qTy,qTy),
12755                          TP[LC("capExcPermExe",CTy"CapExceptionType"),
12756                             Var("cb",FTy 5)]),qVar"s")),
12757                   (Bop(Ugt,
12758                        Bop(Add,
12759                            CC[LW(0,1),
12760                               Call
12761                                 ("getOffset",F64,
12762                                  Apply
12763                                    (Call
12764                                       ("CAPR",ATy(qTy,CTy"Capability"),
12765                                        Var("cb",FTy 5)),qVar"s"))],
12766                            LW(4,65)),
12767                        CC[LW(0,1),
12768                           Call
12769                             ("getLength",F64,
12770                              Apply
12771                                (Call
12772                                   ("CAPR",ATy(qTy,CTy"Capability"),
12773                                    Var("cb",FTy 5)),qVar"s"))]),
12774                    Apply
12775                      (Call
12776                         ("SignalCapException",ATy(qTy,qTy),
12777                          TP[LC("capExcLength",CTy"CapExceptionType"),
12778                             Var("cb",FTy 5)]),qVar"s")),
12779                   (Mop(Not,
12780                        EQ(EX(Bop(Add,
12781                                  Call
12782                                    ("getBase",F64,
12783                                     Apply
12784                                       (Call
12785                                          ("CAPR",
12786                                           ATy(qTy,CTy"Capability"),
12787                                           Var("cb",FTy 5)),qVar"s")),
12788                                  Call
12789                                    ("getOffset",F64,
12790                                     Apply
12791                                       (Call
12792                                          ("CAPR",
12793                                           ATy(qTy,CTy"Capability"),
12794                                           Var("cb",FTy 5)),qVar"s"))),
12795                              LN 1,LN 0,FTy 2),LW(0,2))),
12796                    Apply
12797                      (Call
12798                         ("SignalException",ATy(qTy,qTy),
12799                          LC("AdEL",CTy"ExceptionType")),
12800                       Apply
12801                         (Call
12802                            ("write'CP0",ATy(qTy,qTy),
12803                             Rupd
12804                               ("BadVAddr",
12805                                TP[Apply
12806                                     (Const("CP0",ATy(qTy,CTy"CP0")),
12807                                      qVar"s"),
12808                                   Bop(Add,
12809                                       Call
12810                                         ("getBase",F64,
12811                                          Apply
12812                                            (Call
12813                                               ("CAPR",
12814                                                ATy(qTy,CTy"Capability"),
12815                                                Var("cb",FTy 5)),qVar"s")),
12816                                       Call
12817                                         ("getOffset",F64,
12818                                          Apply
12819                                            (Call
12820                                               ("CAPR",
12821                                                ATy(qTy,CTy"Capability"),
12822                                                Var("cb",FTy 5)),qVar"s")))])),
12823                          qVar"s")))],
12824                  Rupd
12825                    ("BranchToPCC",
12826                     TP[qVar"s",
12827                        Mop(Some,
12828                            TP[Call
12829                                 ("getOffset",F64,
12830                                  Apply
12831                                    (Call
12832                                       ("CAPR",ATy(qTy,CTy"Capability"),
12833                                        Var("cb",FTy 5)),qVar"s")),
12834                               Apply
12835                                 (Call
12836                                    ("CAPR",ATy(qTy,CTy"Capability"),
12837                                     Var("cb",FTy 5)),qVar"s")])]))))))
12838;
12839val dfn'CJALR_def = Def
12840  ("dfn'CJALR",TP[Var("cd",FTy 5),Var("cb",FTy 5)],
12841   Close
12842     (qVar"state",
12843      ITE(Mop(Not,
12844              Dest
12845                ("CU2",bTy,
12846                 Dest
12847                   ("Status",CTy"StatusRegister",
12848                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
12849          Apply
12850            (Const("SignalCP2UnusableException",ATy(qTy,qTy)),qVar"state"),
12851          Let(TP[bVar"v",qVar"s"],
12852              Let(qVar"s0",
12853                  Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"),
12854                  TP[Apply
12855                       (Call
12856                          ("register_inaccessible",ATy(qTy,bTy),
12857                           Var("cd",FTy 5)),qVar"s0"),qVar"s0"]),
12858              ITB([(bVar"v",
12859                    Apply
12860                      (Call
12861                         ("SignalCapException",ATy(qTy,qTy),
12862                          TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
12863                             Var("cd",FTy 5)]),qVar"s")),
12864                   (Apply
12865                      (Call
12866                         ("register_inaccessible",ATy(qTy,bTy),
12867                          Var("cb",FTy 5)),qVar"s"),
12868                    Apply
12869                      (Call
12870                         ("SignalCapException",ATy(qTy,qTy),
12871                          TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
12872                             Var("cb",FTy 5)]),qVar"s")),
12873                   (Mop(Not,
12874                        Call
12875                          ("getTag",bTy,
12876                           Apply
12877                             (Call
12878                                ("CAPR",ATy(qTy,CTy"Capability"),
12879                                 Var("cb",FTy 5)),qVar"s"))),
12880                    Apply
12881                      (Call
12882                         ("SignalCapException",ATy(qTy,qTy),
12883                          TP[LC("capExcTag",CTy"CapExceptionType"),
12884                             Var("cb",FTy 5)]),qVar"s")),
12885                   (Call
12886                      ("getSealed",bTy,
12887                       Apply
12888                         (Call
12889                            ("CAPR",ATy(qTy,CTy"Capability"),
12890                             Var("cb",FTy 5)),qVar"s")),
12891                    Apply
12892                      (Call
12893                         ("SignalCapException",ATy(qTy,qTy),
12894                          TP[LC("capExcSeal",CTy"CapExceptionType"),
12895                             Var("cb",FTy 5)]),qVar"s")),
12896                   (Mop(Not,
12897                        Dest
12898                          ("Permit_Execute",bTy,
12899                           Call
12900                             ("getPerms",CTy"Perms",
12901                              Apply
12902                                (Call
12903                                   ("CAPR",ATy(qTy,CTy"Capability"),
12904                                    Var("cb",FTy 5)),qVar"s")))),
12905                    Apply
12906                      (Call
12907                         ("SignalCapException",ATy(qTy,qTy),
12908                          TP[LC("capExcPermExe",CTy"CapExceptionType"),
12909                             Var("cb",FTy 5)]),qVar"s")),
12910                   (Bop(Ugt,
12911                        Bop(Add,
12912                            CC[LW(0,1),
12913                               Call
12914                                 ("getOffset",F64,
12915                                  Apply
12916                                    (Call
12917                                       ("CAPR",ATy(qTy,CTy"Capability"),
12918                                        Var("cb",FTy 5)),qVar"s"))],
12919                            LW(4,65)),
12920                        CC[LW(0,1),
12921                           Call
12922                             ("getLength",F64,
12923                              Apply
12924                                (Call
12925                                   ("CAPR",ATy(qTy,CTy"Capability"),
12926                                    Var("cb",FTy 5)),qVar"s"))]),
12927                    Apply
12928                      (Call
12929                         ("SignalCapException",ATy(qTy,qTy),
12930                          TP[LC("capExcLength",CTy"CapExceptionType"),
12931                             Var("cb",FTy 5)]),qVar"s")),
12932                   (Mop(Not,
12933                        EQ(EX(Bop(Add,
12934                                  Call
12935                                    ("getBase",F64,
12936                                     Apply
12937                                       (Call
12938                                          ("CAPR",
12939                                           ATy(qTy,CTy"Capability"),
12940                                           Var("cb",FTy 5)),qVar"s")),
12941                                  Call
12942                                    ("getOffset",F64,
12943                                     Apply
12944                                       (Call
12945                                          ("CAPR",
12946                                           ATy(qTy,CTy"Capability"),
12947                                           Var("cb",FTy 5)),qVar"s"))),
12948                              LN 1,LN 0,FTy 2),LW(0,2))),
12949                    Apply
12950                      (Call
12951                         ("SignalException",ATy(qTy,qTy),
12952                          LC("AdEL",CTy"ExceptionType")),
12953                       Apply
12954                         (Call
12955                            ("write'CP0",ATy(qTy,qTy),
12956                             Rupd
12957                               ("BadVAddr",
12958                                TP[Apply
12959                                     (Const("CP0",ATy(qTy,CTy"CP0")),
12960                                      qVar"s"),
12961                                   Bop(Add,
12962                                       Call
12963                                         ("getBase",F64,
12964                                          Apply
12965                                            (Call
12966                                               ("CAPR",
12967                                                ATy(qTy,CTy"Capability"),
12968                                                Var("cb",FTy 5)),qVar"s")),
12969                                       Call
12970                                         ("getOffset",F64,
12971                                          Apply
12972                                            (Call
12973                                               ("CAPR",
12974                                                ATy(qTy,CTy"Capability"),
12975                                                Var("cb",FTy 5)),qVar"s")))])),
12976                          qVar"s")))],
12977                  Let(TP[Var("v",CTy"Capability"),qVar"s"],
12978                      Let(qVar"s0",
12979                          Apply
12980                            (Call
12981                               ("write'CAPR",ATy(qTy,qTy),
12982                                TP[Call
12983                                     ("setOffset",CTy"Capability",
12984                                      TP[Apply
12985                                           (Const
12986                                              ("PCC",
12987                                               ATy(qTy,CTy"Capability")),
12988                                            qVar"s"),
12989                                         Bop(Add,
12990                                             Apply
12991                                               (Const("PC",ATy(qTy,F64)),
12992                                                qVar"s"),LW(8,64))]),
12993                                   Var("cd",FTy 5)]),qVar"s"),
12994                          TP[Apply
12995                               (Call
12996                                  ("CAPR",ATy(qTy,CTy"Capability"),
12997                                   Var("cd",FTy 5)),qVar"s0"),qVar"s0"]),
12998                      Rupd
12999                        ("BranchToPCC",
13000                         TP[qVar"s",
13001                            Mop(Some,
13002                                TP[Call
13003                                     ("getOffset",F64,
13004                                      Apply
13005                                        (Call
13006                                           ("CAPR",
13007                                            ATy(qTy,CTy"Capability"),
13008                                            Var("cb",FTy 5)),qVar"s")),
13009                                   Apply
13010                                     (Call
13011                                        ("CAPR",ATy(qTy,CTy"Capability"),
13012                                         Var("cb",FTy 5)),qVar"s")])])))))))
13013;
13014val dfn'CSeal_def = Def
13015  ("dfn'CSeal",TP[Var("cd",FTy 5),Var("cs",FTy 5),Var("ct",FTy 5)],
13016   Close
13017     (qVar"state",
13018      ITB([(Mop(Not,
13019                Dest
13020                  ("CU2",bTy,
13021                   Dest
13022                     ("Status",CTy"StatusRegister",
13023                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
13024            Apply
13025              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
13026               qVar"state")),
13027           (Apply
13028              (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)),
13029               qVar"state"),
13030            Apply
13031              (Call
13032                 ("SignalCapException",ATy(qTy,qTy),
13033                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
13034                     Var("cd",FTy 5)]),qVar"state")),
13035           (Apply
13036              (Call("register_inaccessible",ATy(qTy,bTy),Var("cs",FTy 5)),
13037               qVar"state"),
13038            Apply
13039              (Call
13040                 ("SignalCapException",ATy(qTy,qTy),
13041                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
13042                     Var("cs",FTy 5)]),qVar"state")),
13043           (Apply
13044              (Call("register_inaccessible",ATy(qTy,bTy),Var("ct",FTy 5)),
13045               qVar"state"),
13046            Apply
13047              (Call
13048                 ("SignalCapException",ATy(qTy,qTy),
13049                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
13050                     Var("ct",FTy 5)]),qVar"state")),
13051           (Mop(Not,
13052                Call
13053                  ("getTag",bTy,
13054                   Apply
13055                     (Call
13056                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)),
13057                      qVar"state"))),
13058            Apply
13059              (Call
13060                 ("SignalCapException",ATy(qTy,qTy),
13061                  TP[LC("capExcTag",CTy"CapExceptionType"),Var("cs",FTy 5)]),
13062               qVar"state")),
13063           (Mop(Not,
13064                Call
13065                  ("getTag",bTy,
13066                   Apply
13067                     (Call
13068                        ("CAPR",ATy(qTy,CTy"Capability"),Var("ct",FTy 5)),
13069                      qVar"state"))),
13070            Apply
13071              (Call
13072                 ("SignalCapException",ATy(qTy,qTy),
13073                  TP[LC("capExcTag",CTy"CapExceptionType"),Var("ct",FTy 5)]),
13074               qVar"state")),
13075           (Call
13076              ("getSealed",bTy,
13077               Apply
13078                 (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)),
13079                  qVar"state")),
13080            Apply
13081              (Call
13082                 ("SignalCapException",ATy(qTy,qTy),
13083                  TP[LC("capExcSeal",CTy"CapExceptionType"),
13084                     Var("cs",FTy 5)]),qVar"state")),
13085           (Call
13086              ("getSealed",bTy,
13087               Apply
13088                 (Call("CAPR",ATy(qTy,CTy"Capability"),Var("ct",FTy 5)),
13089                  qVar"state")),
13090            Apply
13091              (Call
13092                 ("SignalCapException",ATy(qTy,qTy),
13093                  TP[LC("capExcSeal",CTy"CapExceptionType"),
13094                     Var("ct",FTy 5)]),qVar"state")),
13095           (Mop(Not,
13096                Dest
13097                  ("Permit_Seal",bTy,
13098                   Call
13099                     ("getPerms",CTy"Perms",
13100                      Apply
13101                        (Call
13102                           ("CAPR",ATy(qTy,CTy"Capability"),
13103                            Var("ct",FTy 5)),qVar"state")))),
13104            Apply
13105              (Call
13106                 ("SignalCapException",ATy(qTy,qTy),
13107                  TP[LC("capExcPermSeal",CTy"CapExceptionType"),
13108                     Var("ct",FTy 5)]),qVar"state")),
13109           (Bop(Uge,
13110                Call
13111                  ("getOffset",F64,
13112                   Apply
13113                     (Call
13114                        ("CAPR",ATy(qTy,CTy"Capability"),Var("ct",FTy 5)),
13115                      qVar"state")),
13116                Call
13117                  ("getLength",F64,
13118                   Apply
13119                     (Call
13120                        ("CAPR",ATy(qTy,CTy"Capability"),Var("ct",FTy 5)),
13121                      qVar"state"))),
13122            Apply
13123              (Call
13124                 ("SignalCapException",ATy(qTy,qTy),
13125                  TP[LC("capExcLength",CTy"CapExceptionType"),
13126                     Var("ct",FTy 5)]),qVar"state")),
13127           (Bop(Uge,
13128                Bop(Add,
13129                    Call
13130                      ("getBase",F64,
13131                       Apply
13132                         (Call
13133                            ("CAPR",ATy(qTy,CTy"Capability"),
13134                             Var("ct",FTy 5)),qVar"state")),
13135                    Call
13136                      ("getOffset",F64,
13137                       Apply
13138                         (Call
13139                            ("CAPR",ATy(qTy,CTy"Capability"),
13140                             Var("ct",FTy 5)),qVar"state"))),
13141                Mop(Cast F64,Bop(Exp,LN 2,Const("OTYPEWIDTH",nTy)))),
13142            Apply
13143              (Call
13144                 ("SignalCapException",ATy(qTy,qTy),
13145                  TP[LC("capExcLength",CTy"CapExceptionType"),
13146                     Var("ct",FTy 5)]),qVar"state")),
13147           (Mop(Not,
13148                Call
13149                  ("canRepSeal",bTy,
13150                   TP[Apply
13151                        (Call
13152                           ("CAPR",ATy(qTy,CTy"Capability"),
13153                            Var("cs",FTy 5)),qVar"state"),LT])),
13154            Apply
13155              (Call
13156                 ("SignalCapException",ATy(qTy,qTy),
13157                  TP[LC("capExcInexact",CTy"CapExceptionType"),
13158                     Var("cs",FTy 5)]),qVar"state"))],
13159          Apply
13160            (Call
13161               ("write'CAPR",ATy(qTy,qTy),
13162                TP[Call
13163                     ("setType",CTy"Capability",
13164                      TP[Call
13165                           ("setSealed",CTy"Capability",
13166                            TP[Apply
13167                                 (Call
13168                                    ("CAPR",ATy(qTy,CTy"Capability"),
13169                                     Var("cs",FTy 5)),qVar"state"),LT]),
13170                         EX(Bop(Add,
13171                                Call
13172                                  ("getBase",F64,
13173                                   Apply
13174                                     (Call
13175                                        ("CAPR",ATy(qTy,CTy"Capability"),
13176                                         Var("ct",FTy 5)),qVar"state")),
13177                                Call
13178                                  ("getOffset",F64,
13179                                   Apply
13180                                     (Call
13181                                        ("CAPR",ATy(qTy,CTy"Capability"),
13182                                         Var("ct",FTy 5)),qVar"state"))),
13183                            Bop(Sub,Const("OTYPEWIDTH",nTy),LN 1),LN 0,
13184                            FTy 24)]),Var("cd",FTy 5)]),qVar"state"))))
13185;
13186val dfn'CUnseal_def = Def
13187  ("dfn'CUnseal",TP[Var("cd",FTy 5),Var("cs",FTy 5),Var("ct",FTy 5)],
13188   Close
13189     (qVar"state",
13190      ITB([(Mop(Not,
13191                Dest
13192                  ("CU2",bTy,
13193                   Dest
13194                     ("Status",CTy"StatusRegister",
13195                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
13196            Apply
13197              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
13198               qVar"state")),
13199           (Apply
13200              (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)),
13201               qVar"state"),
13202            Apply
13203              (Call
13204                 ("SignalCapException",ATy(qTy,qTy),
13205                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
13206                     Var("cd",FTy 5)]),qVar"state")),
13207           (Apply
13208              (Call("register_inaccessible",ATy(qTy,bTy),Var("cs",FTy 5)),
13209               qVar"state"),
13210            Apply
13211              (Call
13212                 ("SignalCapException",ATy(qTy,qTy),
13213                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
13214                     Var("cs",FTy 5)]),qVar"state")),
13215           (Apply
13216              (Call("register_inaccessible",ATy(qTy,bTy),Var("ct",FTy 5)),
13217               qVar"state"),
13218            Apply
13219              (Call
13220                 ("SignalCapException",ATy(qTy,qTy),
13221                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
13222                     Var("ct",FTy 5)]),qVar"state")),
13223           (Mop(Not,
13224                Call
13225                  ("getTag",bTy,
13226                   Apply
13227                     (Call
13228                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)),
13229                      qVar"state"))),
13230            Apply
13231              (Call
13232                 ("SignalCapException",ATy(qTy,qTy),
13233                  TP[LC("capExcTag",CTy"CapExceptionType"),Var("cs",FTy 5)]),
13234               qVar"state")),
13235           (Mop(Not,
13236                Call
13237                  ("getTag",bTy,
13238                   Apply
13239                     (Call
13240                        ("CAPR",ATy(qTy,CTy"Capability"),Var("ct",FTy 5)),
13241                      qVar"state"))),
13242            Apply
13243              (Call
13244                 ("SignalCapException",ATy(qTy,qTy),
13245                  TP[LC("capExcTag",CTy"CapExceptionType"),Var("ct",FTy 5)]),
13246               qVar"state")),
13247           (Mop(Not,
13248                Call
13249                  ("getSealed",bTy,
13250                   Apply
13251                     (Call
13252                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)),
13253                      qVar"state"))),
13254            Apply
13255              (Call
13256                 ("SignalCapException",ATy(qTy,qTy),
13257                  TP[LC("capExcSeal",CTy"CapExceptionType"),
13258                     Var("cs",FTy 5)]),qVar"state")),
13259           (Call
13260              ("getSealed",bTy,
13261               Apply
13262                 (Call("CAPR",ATy(qTy,CTy"Capability"),Var("ct",FTy 5)),
13263                  qVar"state")),
13264            Apply
13265              (Call
13266                 ("SignalCapException",ATy(qTy,qTy),
13267                  TP[LC("capExcSeal",CTy"CapExceptionType"),
13268                     Var("ct",FTy 5)]),qVar"state")),
13269           (Mop(Not,
13270                EQ(Bop(Add,
13271                       Call
13272                         ("getBase",F64,
13273                          Apply
13274                            (Call
13275                               ("CAPR",ATy(qTy,CTy"Capability"),
13276                                Var("ct",FTy 5)),qVar"state")),
13277                       Call
13278                         ("getOffset",F64,
13279                          Apply
13280                            (Call
13281                               ("CAPR",ATy(qTy,CTy"Capability"),
13282                                Var("ct",FTy 5)),qVar"state"))),
13283                   Mop(Cast F64,
13284                       Call
13285                         ("getType",FTy 24,
13286                          Apply
13287                            (Call
13288                               ("CAPR",ATy(qTy,CTy"Capability"),
13289                                Var("cs",FTy 5)),qVar"state"))))),
13290            Apply
13291              (Call
13292                 ("SignalCapException",ATy(qTy,qTy),
13293                  TP[LC("capExcType",CTy"CapExceptionType"),
13294                     Var("ct",FTy 5)]),qVar"state")),
13295           (Mop(Not,
13296                Dest
13297                  ("Permit_Seal",bTy,
13298                   Call
13299                     ("getPerms",CTy"Perms",
13300                      Apply
13301                        (Call
13302                           ("CAPR",ATy(qTy,CTy"Capability"),
13303                            Var("ct",FTy 5)),qVar"state")))),
13304            Apply
13305              (Call
13306                 ("SignalCapException",ATy(qTy,qTy),
13307                  TP[LC("capExcPermSeal",CTy"CapExceptionType"),
13308                     Var("ct",FTy 5)]),qVar"state")),
13309           (Bop(Uge,
13310                Call
13311                  ("getOffset",F64,
13312                   Apply
13313                     (Call
13314                        ("CAPR",ATy(qTy,CTy"Capability"),Var("ct",FTy 5)),
13315                      qVar"state")),
13316                Call
13317                  ("getLength",F64,
13318                   Apply
13319                     (Call
13320                        ("CAPR",ATy(qTy,CTy"Capability"),Var("ct",FTy 5)),
13321                      qVar"state"))),
13322            Apply
13323              (Call
13324                 ("SignalCapException",ATy(qTy,qTy),
13325                  TP[LC("capExcLength",CTy"CapExceptionType"),
13326                     Var("ct",FTy 5)]),qVar"state"))],
13327          Let(Var("s0",CTy"Capability"),
13328              Call
13329                ("setType",CTy"Capability",
13330                 TP[Call
13331                      ("setSealed",CTy"Capability",
13332                       TP[Apply
13333                            (Call
13334                               ("CAPR",ATy(qTy,CTy"Capability"),
13335                                Var("cs",FTy 5)),qVar"state"),LF]),
13336                    LW(0,24)]),
13337              Apply
13338                (Call
13339                   ("write'CAPR",ATy(qTy,qTy),
13340                    TP[Call
13341                         ("setPerms",CTy"Capability",
13342                          TP[Var("s0",CTy"Capability"),
13343                             Rupd
13344                               ("Global",
13345                                TP[Call
13346                                     ("getPerms",CTy"Perms",
13347                                      Var("s0",CTy"Capability")),
13348                                   Bop(And,
13349                                       Dest
13350                                         ("Global",bTy,
13351                                          Call
13352                                            ("getPerms",CTy"Perms",
13353                                             Apply
13354                                               (Call
13355                                                  ("CAPR",
13356                                                   ATy(qTy,CTy"Capability"),
13357                                                   Var("cs",FTy 5)),
13358                                                qVar"state"))),
13359                                       Dest
13360                                         ("Global",bTy,
13361                                          Call
13362                                            ("getPerms",CTy"Perms",
13363                                             Apply
13364                                               (Call
13365                                                  ("CAPR",
13366                                                   ATy(qTy,CTy"Capability"),
13367                                                   Var("ct",FTy 5)),
13368                                                qVar"state"))))])]),
13369                       Var("cd",FTy 5)]),qVar"state")))))
13370;
13371val dfn'CCall0_def = Def
13372  ("dfn'CCall0",TP[Var("cs",FTy 5),Var("cb",FTy 5)],
13373   Close
13374     (qVar"state",
13375      ITB([(Mop(Not,
13376                Dest
13377                  ("CU2",bTy,
13378                   Dest
13379                     ("Status",CTy"StatusRegister",
13380                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
13381            Apply
13382              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
13383               qVar"state")),
13384           (Apply
13385              (Call("register_inaccessible",ATy(qTy,bTy),Var("cs",FTy 5)),
13386               qVar"state"),
13387            Apply
13388              (Call
13389                 ("SignalCapException",ATy(qTy,qTy),
13390                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
13391                     Var("cs",FTy 5)]),qVar"state")),
13392           (Apply
13393              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
13394               qVar"state"),
13395            Apply
13396              (Call
13397                 ("SignalCapException",ATy(qTy,qTy),
13398                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
13399                     Var("cb",FTy 5)]),qVar"state")),
13400           (Mop(Not,
13401                Call
13402                  ("getTag",bTy,
13403                   Apply
13404                     (Call
13405                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)),
13406                      qVar"state"))),
13407            Apply
13408              (Call
13409                 ("SignalCapException",ATy(qTy,qTy),
13410                  TP[LC("capExcTag",CTy"CapExceptionType"),Var("cs",FTy 5)]),
13411               qVar"state")),
13412           (Mop(Not,
13413                Call
13414                  ("getTag",bTy,
13415                   Apply
13416                     (Call
13417                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
13418                      qVar"state"))),
13419            Apply
13420              (Call
13421                 ("SignalCapException",ATy(qTy,qTy),
13422                  TP[LC("capExcTag",CTy"CapExceptionType"),Var("cb",FTy 5)]),
13423               qVar"state")),
13424           (Mop(Not,
13425                Call
13426                  ("getSealed",bTy,
13427                   Apply
13428                     (Call
13429                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)),
13430                      qVar"state"))),
13431            Apply
13432              (Call
13433                 ("SignalCapException",ATy(qTy,qTy),
13434                  TP[LC("capExcSeal",CTy"CapExceptionType"),
13435                     Var("cs",FTy 5)]),qVar"state")),
13436           (Mop(Not,
13437                Call
13438                  ("getSealed",bTy,
13439                   Apply
13440                     (Call
13441                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
13442                      qVar"state"))),
13443            Apply
13444              (Call
13445                 ("SignalCapException",ATy(qTy,qTy),
13446                  TP[LC("capExcSeal",CTy"CapExceptionType"),
13447                     Var("cb",FTy 5)]),qVar"state")),
13448           (Mop(Not,
13449                EQ(Call
13450                     ("getType",FTy 24,
13451                      Apply
13452                        (Call
13453                           ("CAPR",ATy(qTy,CTy"Capability"),
13454                            Var("cs",FTy 5)),qVar"state")),
13455                   Call
13456                     ("getType",FTy 24,
13457                      Apply
13458                        (Call
13459                           ("CAPR",ATy(qTy,CTy"Capability"),
13460                            Var("cb",FTy 5)),qVar"state")))),
13461            Apply
13462              (Call
13463                 ("SignalCapException",ATy(qTy,qTy),
13464                  TP[LC("capExcType",CTy"CapExceptionType"),
13465                     Var("cs",FTy 5)]),qVar"state")),
13466           (Mop(Not,
13467                Dest
13468                  ("Permit_Execute",bTy,
13469                   Call
13470                     ("getPerms",CTy"Perms",
13471                      Apply
13472                        (Call
13473                           ("CAPR",ATy(qTy,CTy"Capability"),
13474                            Var("cs",FTy 5)),qVar"state")))),
13475            Apply
13476              (Call
13477                 ("SignalCapException",ATy(qTy,qTy),
13478                  TP[LC("capExcPermExe",CTy"CapExceptionType"),
13479                     Var("cs",FTy 5)]),qVar"state")),
13480           (Dest
13481              ("Permit_Execute",bTy,
13482               Call
13483                 ("getPerms",CTy"Perms",
13484                  Apply
13485                    (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
13486                     qVar"state"))),
13487            Apply
13488              (Call
13489                 ("SignalCapException",ATy(qTy,qTy),
13490                  TP[LC("capExcPermExe",CTy"CapExceptionType"),
13491                     Var("cb",FTy 5)]),qVar"state")),
13492           (Bop(Uge,
13493                Call
13494                  ("getOffset",F64,
13495                   Apply
13496                     (Call
13497                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)),
13498                      qVar"state")),
13499                Call
13500                  ("getLength",F64,
13501                   Apply
13502                     (Call
13503                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)),
13504                      qVar"state"))),
13505            Apply
13506              (Call
13507                 ("SignalCapException",ATy(qTy,qTy),
13508                  TP[LC("capExcLength",CTy"CapExceptionType"),
13509                     Var("cs",FTy 5)]),qVar"state"))],
13510          Apply
13511            (Call
13512               ("SignalCapException",ATy(qTy,qTy),
13513                TP[LC("capExcCall",CTy"CapExceptionType"),Var("cs",FTy 5)]),
13514             qVar"state"))))
13515;
13516val dfn'CCall1_def = Def
13517  ("dfn'CCall1",TP[Var("cs",FTy 5),Var("cb",FTy 5)],
13518   Close
13519     (qVar"state",
13520      ITB([(Mop(Not,
13521                Dest
13522                  ("CU2",bTy,
13523                   Dest
13524                     ("Status",CTy"StatusRegister",
13525                      Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
13526            Apply
13527              (Const("SignalCP2UnusableException",ATy(qTy,qTy)),
13528               qVar"state")),
13529           (Apply
13530              (Call("register_inaccessible",ATy(qTy,bTy),Var("cs",FTy 5)),
13531               qVar"state"),
13532            Apply
13533              (Call
13534                 ("SignalCapException",ATy(qTy,qTy),
13535                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
13536                     Var("cs",FTy 5)]),qVar"state")),
13537           (Apply
13538              (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)),
13539               qVar"state"),
13540            Apply
13541              (Call
13542                 ("SignalCapException",ATy(qTy,qTy),
13543                  TP[LC("capExcAccessSysReg",CTy"CapExceptionType"),
13544                     Var("cb",FTy 5)]),qVar"state")),
13545           (Mop(Not,
13546                Call
13547                  ("getTag",bTy,
13548                   Apply
13549                     (Call
13550                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)),
13551                      qVar"state"))),
13552            Apply
13553              (Call
13554                 ("SignalCapException",ATy(qTy,qTy),
13555                  TP[LC("capExcTag",CTy"CapExceptionType"),Var("cs",FTy 5)]),
13556               qVar"state")),
13557           (Mop(Not,
13558                Call
13559                  ("getTag",bTy,
13560                   Apply
13561                     (Call
13562                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
13563                      qVar"state"))),
13564            Apply
13565              (Call
13566                 ("SignalCapException",ATy(qTy,qTy),
13567                  TP[LC("capExcTag",CTy"CapExceptionType"),Var("cb",FTy 5)]),
13568               qVar"state")),
13569           (Mop(Not,
13570                Call
13571                  ("getSealed",bTy,
13572                   Apply
13573                     (Call
13574                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)),
13575                      qVar"state"))),
13576            Apply
13577              (Call
13578                 ("SignalCapException",ATy(qTy,qTy),
13579                  TP[LC("capExcSeal",CTy"CapExceptionType"),
13580                     Var("cs",FTy 5)]),qVar"state")),
13581           (Mop(Not,
13582                Call
13583                  ("getSealed",bTy,
13584                   Apply
13585                     (Call
13586                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
13587                      qVar"state"))),
13588            Apply
13589              (Call
13590                 ("SignalCapException",ATy(qTy,qTy),
13591                  TP[LC("capExcSeal",CTy"CapExceptionType"),
13592                     Var("cb",FTy 5)]),qVar"state")),
13593           (Mop(Not,
13594                EQ(Call
13595                     ("getType",FTy 24,
13596                      Apply
13597                        (Call
13598                           ("CAPR",ATy(qTy,CTy"Capability"),
13599                            Var("cs",FTy 5)),qVar"state")),
13600                   Call
13601                     ("getType",FTy 24,
13602                      Apply
13603                        (Call
13604                           ("CAPR",ATy(qTy,CTy"Capability"),
13605                            Var("cb",FTy 5)),qVar"state")))),
13606            Apply
13607              (Call
13608                 ("SignalCapException",ATy(qTy,qTy),
13609                  TP[LC("capExcType",CTy"CapExceptionType"),
13610                     Var("cs",FTy 5)]),qVar"state")),
13611           (Mop(Not,
13612                Dest
13613                  ("Permit_CCall",bTy,
13614                   Call
13615                     ("getPerms",CTy"Perms",
13616                      Apply
13617                        (Call
13618                           ("CAPR",ATy(qTy,CTy"Capability"),
13619                            Var("cs",FTy 5)),qVar"state")))),
13620            Apply
13621              (Call
13622                 ("SignalCapException",ATy(qTy,qTy),
13623                  TP[LC("capExcPermCCall",CTy"CapExceptionType"),
13624                     Var("cs",FTy 5)]),qVar"state")),
13625           (Mop(Not,
13626                Dest
13627                  ("Permit_CCall",bTy,
13628                   Call
13629                     ("getPerms",CTy"Perms",
13630                      Apply
13631                        (Call
13632                           ("CAPR",ATy(qTy,CTy"Capability"),
13633                            Var("cb",FTy 5)),qVar"state")))),
13634            Apply
13635              (Call
13636                 ("SignalCapException",ATy(qTy,qTy),
13637                  TP[LC("capExcPermCCall",CTy"CapExceptionType"),
13638                     Var("cb",FTy 5)]),qVar"state")),
13639           (Mop(Not,
13640                Dest
13641                  ("Permit_Execute",bTy,
13642                   Call
13643                     ("getPerms",CTy"Perms",
13644                      Apply
13645                        (Call
13646                           ("CAPR",ATy(qTy,CTy"Capability"),
13647                            Var("cs",FTy 5)),qVar"state")))),
13648            Apply
13649              (Call
13650                 ("SignalCapException",ATy(qTy,qTy),
13651                  TP[LC("capExcPermExe",CTy"CapExceptionType"),
13652                     Var("cs",FTy 5)]),qVar"state")),
13653           (Dest
13654              ("Permit_Execute",bTy,
13655               Call
13656                 ("getPerms",CTy"Perms",
13657                  Apply
13658                    (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)),
13659                     qVar"state"))),
13660            Apply
13661              (Call
13662                 ("SignalCapException",ATy(qTy,qTy),
13663                  TP[LC("capExcPermExe",CTy"CapExceptionType"),
13664                     Var("cb",FTy 5)]),qVar"state")),
13665           (Bop(Uge,
13666                Call
13667                  ("getOffset",F64,
13668                   Apply
13669                     (Call
13670                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)),
13671                      qVar"state")),
13672                Call
13673                  ("getLength",F64,
13674                   Apply
13675                     (Call
13676                        ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)),
13677                      qVar"state"))),
13678            Apply
13679              (Call
13680                 ("SignalCapException",ATy(qTy,qTy),
13681                  TP[LC("capExcLength",CTy"CapExceptionType"),
13682                     Var("cs",FTy 5)]),qVar"state"))],
13683          Let(TP[Var("v",CTy"Capability"),qVar"s"],
13684              Let(qVar"s0",
13685                  Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"),
13686                  TP[Apply
13687                       (Call
13688                          ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)),
13689                        qVar"s0"),qVar"s0"]),
13690              Let(TP[Var("v",CTy"Capability"),qVar"s"],
13691                  Let(qVar"s0",
13692                      Apply
13693                        (Call
13694                           ("write'PCC",ATy(qTy,qTy),
13695                            Call
13696                              ("setType",CTy"Capability",
13697                               TP[Call
13698                                    ("setSealed",CTy"Capability",
13699                                     TP[Var("v",CTy"Capability"),LF]),
13700                                  LW(0,24)])),qVar"s"),
13701                      TP[Apply
13702                           (Call
13703                              ("CAPR",ATy(qTy,CTy"Capability"),
13704                               Var("cs",FTy 5)),qVar"s0"),qVar"s0"]),
13705                  Let(TP[Var("v",CTy"Capability"),qVar"s"],
13706                      Let(qVar"s0",
13707                          Rupd
13708                            ("CCallBranch",
13709                             TP[Apply
13710                                  (Call
13711                                     ("write'BranchTo",ATy(qTy,qTy),
13712                                      Mop(Some,
13713                                          Call
13714                                            ("getOffset",F64,
13715                                             Var("v",CTy"Capability")))),
13716                                   qVar"s"),LT]),
13717                          TP[Apply
13718                               (Call
13719                                  ("CAPR",ATy(qTy,CTy"Capability"),
13720                                   Var("cb",FTy 5)),qVar"s0"),qVar"s0"]),
13721                      Apply
13722                        (Call
13723                           ("write'IDC",ATy(qTy,qTy),
13724                            Call
13725                              ("setType",CTy"Capability",
13726                               TP[Call
13727                                    ("setSealed",CTy"Capability",
13728                                     TP[Var("v",CTy"Capability"),LF]),
13729                                  LW(0,24)])),qVar"s")))))))
13730;
13731val dfn'CReturn_def = Def
13732  ("dfn'CReturn",qVar"state",
13733   ITE(Mop(Not,
13734           Dest
13735             ("CU2",bTy,
13736              Dest
13737                ("Status",CTy"StatusRegister",
13738                 Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
13739       Apply(Const("SignalCP2UnusableException",ATy(qTy,qTy)),qVar"state"),
13740       Apply
13741         (Call
13742            ("SignalCapException_noReg",ATy(qTy,qTy),
13743             LC("capExcRet",CTy"CapExceptionType")),qVar"state")))
13744;
13745val dfn'UnknownCapInstruction_def = Def
13746  ("dfn'UnknownCapInstruction",qVar"state",
13747   ITE(Mop(Not,
13748           Dest
13749             ("CU2",bTy,
13750              Dest
13751                ("Status",CTy"StatusRegister",
13752                 Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
13753       Apply(Const("SignalCP2UnusableException",ATy(qTy,qTy)),qVar"state"),
13754       Apply
13755         (Call
13756            ("SignalException",ATy(qTy,qTy),LC("ResI",CTy"ExceptionType")),
13757          qVar"state")))
13758;
13759val dfn'ADDI_def = Def
13760  ("dfn'ADDI",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)],
13761   Close
13762     (qVar"state",
13763      Let(TP[Var("v",F64),qVar"s"],
13764          Let(qVar"s0",
13765              ITE(Call
13766                    ("NotWordValue",bTy,
13767                     Apply
13768                       (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
13769                        qVar"state")),
13770                  Mop(Snd,
13771                      Apply
13772                        (Call
13773                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
13774                            Call
13775                              ("UNPREDICTABLE",CTy"exception",
13776                               LS"ADDI: NotWordValue")),qVar"state")),
13777                  qVar"state"),
13778              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
13779                 qVar"s0"]),
13780          Let(Var("v",FTy 33),
13781              Bop(Add,EX(Var("v",F64),LN 32,LN 0,FTy 33),
13782                  Mop(SE(FTy 33),Var("immediate",F16))),
13783              ITE(Mop(Not,
13784                      EQ(Bop(Bit,Var("v",FTy 33),LN 32),
13785                         Bop(Bit,Var("v",FTy 33),LN 31))),
13786                  Apply
13787                    (Call
13788                       ("SignalException",ATy(qTy,qTy),
13789                        LC("Ov",CTy"ExceptionType")),qVar"s"),
13790                  Apply
13791                    (Call
13792                       ("write'GPR",ATy(qTy,qTy),
13793                        TP[Mop(SE F64,EX(Var("v",FTy 33),LN 31,LN 0,F32)),
13794                           Var("rt",FTy 5)]),qVar"s"))))))
13795;
13796val dfn'ADDIU_def = Def
13797  ("dfn'ADDIU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)],
13798   Close
13799     (qVar"state",
13800      Let(TP[Var("v",F64),qVar"s"],
13801          Let(qVar"s0",
13802              ITE(Call
13803                    ("NotWordValue",bTy,
13804                     Apply
13805                       (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
13806                        qVar"state")),
13807                  Mop(Snd,
13808                      Apply
13809                        (Call
13810                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
13811                            Call
13812                              ("UNPREDICTABLE",CTy"exception",
13813                               LS"ADDIU: NotWordValue")),qVar"state")),
13814                  qVar"state"),
13815              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
13816                 qVar"s0"]),
13817          Apply
13818            (Call
13819               ("write'GPR",ATy(qTy,qTy),
13820                TP[Mop(SE F64,
13821                       Bop(Add,EX(Var("v",F64),LN 31,LN 0,F32),
13822                           Mop(SE F32,Var("immediate",F16)))),
13823                   Var("rt",FTy 5)]),qVar"s"))))
13824;
13825val dfn'DADDI_def = Def
13826  ("dfn'DADDI",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)],
13827   Close
13828     (qVar"state",
13829      Let(Var("v",FTy 65),
13830          Bop(Add,
13831              Mop(SE(FTy 65),
13832                  Apply
13833                    (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")),
13834              Mop(SE(FTy 65),Var("immediate",F16))),
13835          ITE(Mop(Not,
13836                  EQ(Bop(Bit,Var("v",FTy 65),LN 64),
13837                     Bop(Bit,Var("v",FTy 65),LN 63))),
13838              Apply
13839                (Call
13840                   ("SignalException",ATy(qTy,qTy),
13841                    LC("Ov",CTy"ExceptionType")),qVar"state"),
13842              Apply
13843                (Call
13844                   ("write'GPR",ATy(qTy,qTy),
13845                    TP[EX(Var("v",FTy 65),LN 63,LN 0,F64),Var("rt",FTy 5)]),
13846                 qVar"state")))))
13847;
13848val dfn'DADDIU_def = Def
13849  ("dfn'DADDIU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)],
13850   Close
13851     (qVar"state",
13852      Apply
13853        (Call
13854           ("write'GPR",ATy(qTy,qTy),
13855            TP[Bop(Add,
13856                   Apply
13857                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
13858                   Mop(SE F64,Var("immediate",F16))),Var("rt",FTy 5)]),
13859         qVar"state")))
13860;
13861val dfn'SLTI_def = Def
13862  ("dfn'SLTI",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)],
13863   Close
13864     (qVar"state",
13865      Apply
13866        (Call
13867           ("write'GPR",ATy(qTy,qTy),
13868            TP[Mop(Cast F64,
13869                   Bop(Lt,
13870                       Apply
13871                         (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
13872                          qVar"state"),Mop(SE F64,Var("immediate",F16)))),
13873               Var("rt",FTy 5)]),qVar"state")))
13874;
13875val dfn'SLTIU_def = Def
13876  ("dfn'SLTIU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)],
13877   Close
13878     (qVar"state",
13879      Apply
13880        (Call
13881           ("write'GPR",ATy(qTy,qTy),
13882            TP[Mop(Cast F64,
13883                   Bop(Ult,
13884                       Apply
13885                         (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
13886                          qVar"state"),Mop(SE F64,Var("immediate",F16)))),
13887               Var("rt",FTy 5)]),qVar"state")))
13888;
13889val dfn'ANDI_def = Def
13890  ("dfn'ANDI",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)],
13891   Close
13892     (qVar"state",
13893      Apply
13894        (Call
13895           ("write'GPR",ATy(qTy,qTy),
13896            TP[Bop(BAnd,
13897                   Apply
13898                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
13899                   Mop(Cast F64,Var("immediate",F16))),Var("rt",FTy 5)]),
13900         qVar"state")))
13901;
13902val dfn'ORI_def = Def
13903  ("dfn'ORI",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)],
13904   Close
13905     (qVar"state",
13906      Apply
13907        (Call
13908           ("write'GPR",ATy(qTy,qTy),
13909            TP[Bop(BOr,
13910                   Apply
13911                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
13912                   Mop(Cast F64,Var("immediate",F16))),Var("rt",FTy 5)]),
13913         qVar"state")))
13914;
13915val dfn'XORI_def = Def
13916  ("dfn'XORI",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)],
13917   Close
13918     (qVar"state",
13919      Apply
13920        (Call
13921           ("write'GPR",ATy(qTy,qTy),
13922            TP[Bop(BXor,
13923                   Apply
13924                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
13925                   Mop(Cast F64,Var("immediate",F16))),Var("rt",FTy 5)]),
13926         qVar"state")))
13927;
13928val dfn'LUI_def = Def
13929  ("dfn'LUI",TP[Var("rt",FTy 5),Var("immediate",F16)],
13930   Close
13931     (qVar"state",
13932      Apply
13933        (Call
13934           ("write'GPR",ATy(qTy,qTy),
13935            TP[Mop(SE F64,CC[Var("immediate",F16),LW(0,16)]),
13936               Var("rt",FTy 5)]),qVar"state")))
13937;
13938val dfn'ADD_def = Def
13939  ("dfn'ADD",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
13940   Close
13941     (qVar"state",
13942      Let(TP[Var("v",F64),qVar"s"],
13943          Let(qVar"s0",
13944              ITE(Bop(Or,
13945                      Call
13946                        ("NotWordValue",bTy,
13947                         Apply
13948                           (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
13949                            qVar"state")),
13950                      Call
13951                        ("NotWordValue",bTy,
13952                         Apply
13953                           (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
13954                            qVar"state"))),
13955                  Mop(Snd,
13956                      Apply
13957                        (Call
13958                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
13959                            Call
13960                              ("UNPREDICTABLE",CTy"exception",
13961                               LS"ADD: NotWordValue")),qVar"state")),
13962                  qVar"state"),
13963              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
13964                 qVar"s0"]),
13965          Let(Var("v",FTy 33),
13966              Bop(Add,EX(Var("v",F64),LN 32,LN 0,FTy 33),
13967                  EX(Apply
13968                       (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"s"),
13969                     LN 32,LN 0,FTy 33)),
13970              ITE(Mop(Not,
13971                      EQ(Bop(Bit,Var("v",FTy 33),LN 32),
13972                         Bop(Bit,Var("v",FTy 33),LN 31))),
13973                  Apply
13974                    (Call
13975                       ("SignalException",ATy(qTy,qTy),
13976                        LC("Ov",CTy"ExceptionType")),qVar"s"),
13977                  Apply
13978                    (Call
13979                       ("write'GPR",ATy(qTy,qTy),
13980                        TP[Mop(SE F64,EX(Var("v",FTy 33),LN 31,LN 0,F32)),
13981                           Var("rd",FTy 5)]),qVar"s"))))))
13982;
13983val dfn'ADDU_def = Def
13984  ("dfn'ADDU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
13985   Close
13986     (qVar"state",
13987      Let(TP[Var("v",F64),qVar"s"],
13988          Let(qVar"s0",
13989              ITE(Bop(Or,
13990                      Call
13991                        ("NotWordValue",bTy,
13992                         Apply
13993                           (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
13994                            qVar"state")),
13995                      Call
13996                        ("NotWordValue",bTy,
13997                         Apply
13998                           (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
13999                            qVar"state"))),
14000                  Mop(Snd,
14001                      Apply
14002                        (Call
14003                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
14004                            Call
14005                              ("UNPREDICTABLE",CTy"exception",
14006                               LS"ADDU: NotWordValue")),qVar"state")),
14007                  qVar"state"),
14008              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
14009                 qVar"s0"]),
14010          Apply
14011            (Call
14012               ("write'GPR",ATy(qTy,qTy),
14013                TP[Mop(SE F64,
14014                       Bop(Add,EX(Var("v",F64),LN 31,LN 0,F32),
14015                           EX(Apply
14016                                (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14017                                 qVar"s"),LN 31,LN 0,F32))),
14018                   Var("rd",FTy 5)]),qVar"s"))))
14019;
14020val dfn'SUB_def = Def
14021  ("dfn'SUB",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
14022   Close
14023     (qVar"state",
14024      Let(TP[Var("v",F64),qVar"s"],
14025          Let(qVar"s0",
14026              ITE(Bop(Or,
14027                      Call
14028                        ("NotWordValue",bTy,
14029                         Apply
14030                           (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
14031                            qVar"state")),
14032                      Call
14033                        ("NotWordValue",bTy,
14034                         Apply
14035                           (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14036                            qVar"state"))),
14037                  Mop(Snd,
14038                      Apply
14039                        (Call
14040                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
14041                            Call
14042                              ("UNPREDICTABLE",CTy"exception",
14043                               LS"SUB: NotWordValue")),qVar"state")),
14044                  qVar"state"),
14045              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
14046                 qVar"s0"]),
14047          Let(Var("v",FTy 33),
14048              Bop(Sub,EX(Var("v",F64),LN 32,LN 0,FTy 33),
14049                  EX(Apply
14050                       (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"s"),
14051                     LN 32,LN 0,FTy 33)),
14052              ITE(Mop(Not,
14053                      EQ(Bop(Bit,Var("v",FTy 33),LN 32),
14054                         Bop(Bit,Var("v",FTy 33),LN 31))),
14055                  Apply
14056                    (Call
14057                       ("SignalException",ATy(qTy,qTy),
14058                        LC("Ov",CTy"ExceptionType")),qVar"s"),
14059                  Apply
14060                    (Call
14061                       ("write'GPR",ATy(qTy,qTy),
14062                        TP[Mop(SE F64,EX(Var("v",FTy 33),LN 31,LN 0,F32)),
14063                           Var("rd",FTy 5)]),qVar"s"))))))
14064;
14065val dfn'SUBU_def = Def
14066  ("dfn'SUBU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
14067   Close
14068     (qVar"state",
14069      Let(TP[Var("v",F64),qVar"s"],
14070          Let(qVar"s0",
14071              ITE(Bop(Or,
14072                      Call
14073                        ("NotWordValue",bTy,
14074                         Apply
14075                           (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
14076                            qVar"state")),
14077                      Call
14078                        ("NotWordValue",bTy,
14079                         Apply
14080                           (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14081                            qVar"state"))),
14082                  Mop(Snd,
14083                      Apply
14084                        (Call
14085                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
14086                            Call
14087                              ("UNPREDICTABLE",CTy"exception",
14088                               LS"SUBU: NotWordValue")),qVar"state")),
14089                  qVar"state"),
14090              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
14091                 qVar"s0"]),
14092          Apply
14093            (Call
14094               ("write'GPR",ATy(qTy,qTy),
14095                TP[Mop(SE F64,
14096                       Bop(Sub,EX(Var("v",F64),LN 31,LN 0,F32),
14097                           EX(Apply
14098                                (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14099                                 qVar"s"),LN 31,LN 0,F32))),
14100                   Var("rd",FTy 5)]),qVar"s"))))
14101;
14102val dfn'DADD_def = Def
14103  ("dfn'DADD",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
14104   Close
14105     (qVar"state",
14106      Let(Var("v",FTy 65),
14107          Bop(Add,
14108              Mop(SE(FTy 65),
14109                  Apply
14110                    (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")),
14111              Mop(SE(FTy 65),
14112                  Apply
14113                    (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"))),
14114          ITE(Mop(Not,
14115                  EQ(Bop(Bit,Var("v",FTy 65),LN 64),
14116                     Bop(Bit,Var("v",FTy 65),LN 63))),
14117              Apply
14118                (Call
14119                   ("SignalException",ATy(qTy,qTy),
14120                    LC("Ov",CTy"ExceptionType")),qVar"state"),
14121              Apply
14122                (Call
14123                   ("write'GPR",ATy(qTy,qTy),
14124                    TP[EX(Var("v",FTy 65),LN 63,LN 0,F64),Var("rd",FTy 5)]),
14125                 qVar"state")))))
14126;
14127val dfn'DADDU_def = Def
14128  ("dfn'DADDU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
14129   Close
14130     (qVar"state",
14131      Apply
14132        (Call
14133           ("write'GPR",ATy(qTy,qTy),
14134            TP[Bop(Add,
14135                   Apply
14136                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
14137                   Apply
14138                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
14139               Var("rd",FTy 5)]),qVar"state")))
14140;
14141val dfn'DSUB_def = Def
14142  ("dfn'DSUB",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
14143   Close
14144     (qVar"state",
14145      Let(Var("v",FTy 65),
14146          Bop(Sub,
14147              Mop(SE(FTy 65),
14148                  Apply
14149                    (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")),
14150              Mop(SE(FTy 65),
14151                  Apply
14152                    (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"))),
14153          ITE(Mop(Not,
14154                  EQ(Bop(Bit,Var("v",FTy 65),LN 64),
14155                     Bop(Bit,Var("v",FTy 65),LN 63))),
14156              Apply
14157                (Call
14158                   ("SignalException",ATy(qTy,qTy),
14159                    LC("Ov",CTy"ExceptionType")),qVar"state"),
14160              Apply
14161                (Call
14162                   ("write'GPR",ATy(qTy,qTy),
14163                    TP[EX(Var("v",FTy 65),LN 63,LN 0,F64),Var("rd",FTy 5)]),
14164                 qVar"state")))))
14165;
14166val dfn'DSUBU_def = Def
14167  ("dfn'DSUBU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
14168   Close
14169     (qVar"state",
14170      Apply
14171        (Call
14172           ("write'GPR",ATy(qTy,qTy),
14173            TP[Bop(Sub,
14174                   Apply
14175                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
14176                   Apply
14177                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
14178               Var("rd",FTy 5)]),qVar"state")))
14179;
14180val dfn'SLT_def = Def
14181  ("dfn'SLT",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
14182   Close
14183     (qVar"state",
14184      Apply
14185        (Call
14186           ("write'GPR",ATy(qTy,qTy),
14187            TP[Mop(Cast F64,
14188                   Bop(Lt,
14189                       Apply
14190                         (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
14191                          qVar"state"),
14192                       Apply
14193                         (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14194                          qVar"state"))),Var("rd",FTy 5)]),qVar"state")))
14195;
14196val dfn'SLTU_def = Def
14197  ("dfn'SLTU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
14198   Close
14199     (qVar"state",
14200      Apply
14201        (Call
14202           ("write'GPR",ATy(qTy,qTy),
14203            TP[Mop(Cast F64,
14204                   Bop(Ult,
14205                       Apply
14206                         (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
14207                          qVar"state"),
14208                       Apply
14209                         (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14210                          qVar"state"))),Var("rd",FTy 5)]),qVar"state")))
14211;
14212val dfn'AND_def = Def
14213  ("dfn'AND",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
14214   Close
14215     (qVar"state",
14216      Apply
14217        (Call
14218           ("write'GPR",ATy(qTy,qTy),
14219            TP[Bop(BAnd,
14220                   Apply
14221                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
14222                   Apply
14223                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
14224               Var("rd",FTy 5)]),qVar"state")))
14225;
14226val dfn'OR_def = Def
14227  ("dfn'OR",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
14228   Close
14229     (qVar"state",
14230      Apply
14231        (Call
14232           ("write'GPR",ATy(qTy,qTy),
14233            TP[Bop(BOr,
14234                   Apply
14235                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
14236                   Apply
14237                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
14238               Var("rd",FTy 5)]),qVar"state")))
14239;
14240val dfn'XOR_def = Def
14241  ("dfn'XOR",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
14242   Close
14243     (qVar"state",
14244      Apply
14245        (Call
14246           ("write'GPR",ATy(qTy,qTy),
14247            TP[Bop(BXor,
14248                   Apply
14249                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
14250                   Apply
14251                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
14252               Var("rd",FTy 5)]),qVar"state")))
14253;
14254val dfn'NOR_def = Def
14255  ("dfn'NOR",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
14256   Close
14257     (qVar"state",
14258      Apply
14259        (Call
14260           ("write'GPR",ATy(qTy,qTy),
14261            TP[Mop(BNot,
14262                   Bop(BOr,
14263                       Apply
14264                         (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
14265                          qVar"state"),
14266                       Apply
14267                         (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14268                          qVar"state"))),Var("rd",FTy 5)]),qVar"state")))
14269;
14270val dfn'MOVN_def = Def
14271  ("dfn'MOVN",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
14272   Close
14273     (qVar"state",
14274      ITE(Mop(Not,
14275              EQ(Apply
14276                   (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
14277                 LW(0,64))),
14278          Apply
14279            (Call
14280               ("write'GPR",ATy(qTy,qTy),
14281                TP[Apply
14282                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
14283                   Var("rd",FTy 5)]),qVar"state"),qVar"state")))
14284;
14285val dfn'MOVZ_def = Def
14286  ("dfn'MOVZ",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
14287   Close
14288     (qVar"state",
14289      ITE(EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
14290             LW(0,64)),
14291          Apply
14292            (Call
14293               ("write'GPR",ATy(qTy,qTy),
14294                TP[Apply
14295                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
14296                   Var("rd",FTy 5)]),qVar"state"),qVar"state")))
14297;
14298val dfn'MADD_def = Def
14299  ("dfn'MADD",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
14300   Close
14301     (qVar"state",
14302      Let(TP[Var("v",F64),qVar"s"],
14303          Apply
14304            (Const("HI",ATy(qTy,PTy(F64,qTy))),
14305             ITE(Bop(Or,
14306                     Call
14307                       ("NotWordValue",bTy,
14308                        Apply
14309                          (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
14310                           qVar"state")),
14311                     Call
14312                       ("NotWordValue",bTy,
14313                        Apply
14314                          (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14315                           qVar"state"))),
14316                 Mop(Snd,
14317                     Apply
14318                       (Call
14319                          ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
14320                           Call
14321                             ("UNPREDICTABLE",CTy"exception",
14322                              LS"MADD: NotWordValue")),qVar"state")),
14323                 qVar"state")),
14324          Let(TP[Var("v",F64),qVar"s"],
14325              Let(TP[Var("v",F64),qVar"s"],
14326                  Let(TP[Var("v0",F64),qVar"s"],
14327                      Apply(Const("LO",ATy(qTy,PTy(F64,qTy))),qVar"s"),
14328                      TP[CC[EX(Var("v",F64),LN 31,LN 0,F32),
14329                            EX(Var("v0",F64),LN 31,LN 0,F32)],qVar"s"]),
14330                  TP[Bop(Add,Var("v",F64),
14331                         Bop(Mul,
14332                             Mop(SE F64,
14333                                 EX(Apply
14334                                      (Call
14335                                         ("GPR",ATy(qTy,F64),
14336                                          Var("rs",FTy 5)),qVar"s"),LN 31,
14337                                    LN 0,F32)),
14338                             Mop(SE F64,
14339                                 EX(Apply
14340                                      (Call
14341                                         ("GPR",ATy(qTy,F64),
14342                                          Var("rt",FTy 5)),qVar"s"),LN 31,
14343                                    LN 0,F32)))),qVar"s"]),
14344              Apply
14345                (Call
14346                   ("write'LO",ATy(qTy,qTy),
14347                    Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32))),
14348                 Apply
14349                   (Call
14350                      ("write'HI",ATy(qTy,qTy),
14351                       Mop(SE F64,EX(Var("v",F64),LN 63,LN 32,F32))),
14352                    qVar"s"))))))
14353;
14354val dfn'MADDU_def = Def
14355  ("dfn'MADDU",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
14356   Close
14357     (qVar"state",
14358      Let(TP[Var("v",F64),qVar"s"],
14359          Apply
14360            (Const("HI",ATy(qTy,PTy(F64,qTy))),
14361             ITE(Bop(Or,
14362                     Call
14363                       ("NotWordValue",bTy,
14364                        Apply
14365                          (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
14366                           qVar"state")),
14367                     Call
14368                       ("NotWordValue",bTy,
14369                        Apply
14370                          (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14371                           qVar"state"))),
14372                 Mop(Snd,
14373                     Apply
14374                       (Call
14375                          ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
14376                           Call
14377                             ("UNPREDICTABLE",CTy"exception",
14378                              LS"MADDU: NotWordValue")),qVar"state")),
14379                 qVar"state")),
14380          Let(TP[Var("v",F64),qVar"s"],
14381              Let(TP[Var("v",F64),qVar"s"],
14382                  Let(TP[Var("v0",F64),qVar"s"],
14383                      Apply(Const("LO",ATy(qTy,PTy(F64,qTy))),qVar"s"),
14384                      TP[CC[EX(Var("v",F64),LN 31,LN 0,F32),
14385                            EX(Var("v0",F64),LN 31,LN 0,F32)],qVar"s"]),
14386                  TP[Bop(Add,Var("v",F64),
14387                         Bop(Mul,
14388                             Mop(Cast F64,
14389                                 EX(Apply
14390                                      (Call
14391                                         ("GPR",ATy(qTy,F64),
14392                                          Var("rs",FTy 5)),qVar"s"),LN 31,
14393                                    LN 0,F32)),
14394                             Mop(Cast F64,
14395                                 EX(Apply
14396                                      (Call
14397                                         ("GPR",ATy(qTy,F64),
14398                                          Var("rt",FTy 5)),qVar"s"),LN 31,
14399                                    LN 0,F32)))),qVar"s"]),
14400              Apply
14401                (Call
14402                   ("write'LO",ATy(qTy,qTy),
14403                    Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32))),
14404                 Apply
14405                   (Call
14406                      ("write'HI",ATy(qTy,qTy),
14407                       Mop(SE F64,EX(Var("v",F64),LN 63,LN 32,F32))),
14408                    qVar"s"))))))
14409;
14410val dfn'MSUB_def = Def
14411  ("dfn'MSUB",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
14412   Close
14413     (qVar"state",
14414      Let(TP[Var("v",F64),qVar"s"],
14415          Apply
14416            (Const("HI",ATy(qTy,PTy(F64,qTy))),
14417             ITE(Bop(Or,
14418                     Call
14419                       ("NotWordValue",bTy,
14420                        Apply
14421                          (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
14422                           qVar"state")),
14423                     Call
14424                       ("NotWordValue",bTy,
14425                        Apply
14426                          (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14427                           qVar"state"))),
14428                 Mop(Snd,
14429                     Apply
14430                       (Call
14431                          ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
14432                           Call
14433                             ("UNPREDICTABLE",CTy"exception",
14434                              LS"MSUB: NotWordValue")),qVar"state")),
14435                 qVar"state")),
14436          Let(TP[Var("v",F64),qVar"s"],
14437              Let(TP[Var("v",F64),qVar"s"],
14438                  Let(TP[Var("v0",F64),qVar"s"],
14439                      Apply(Const("LO",ATy(qTy,PTy(F64,qTy))),qVar"s"),
14440                      TP[CC[EX(Var("v",F64),LN 31,LN 0,F32),
14441                            EX(Var("v0",F64),LN 31,LN 0,F32)],qVar"s"]),
14442                  TP[Bop(Sub,Var("v",F64),
14443                         Bop(Mul,
14444                             Mop(SE F64,
14445                                 EX(Apply
14446                                      (Call
14447                                         ("GPR",ATy(qTy,F64),
14448                                          Var("rs",FTy 5)),qVar"s"),LN 31,
14449                                    LN 0,F32)),
14450                             Mop(SE F64,
14451                                 EX(Apply
14452                                      (Call
14453                                         ("GPR",ATy(qTy,F64),
14454                                          Var("rt",FTy 5)),qVar"s"),LN 31,
14455                                    LN 0,F32)))),qVar"s"]),
14456              Apply
14457                (Call
14458                   ("write'LO",ATy(qTy,qTy),
14459                    Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32))),
14460                 Apply
14461                   (Call
14462                      ("write'HI",ATy(qTy,qTy),
14463                       Mop(SE F64,EX(Var("v",F64),LN 63,LN 32,F32))),
14464                    qVar"s"))))))
14465;
14466val dfn'MSUBU_def = Def
14467  ("dfn'MSUBU",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
14468   Close
14469     (qVar"state",
14470      Let(TP[Var("v",F64),qVar"s"],
14471          Apply
14472            (Const("HI",ATy(qTy,PTy(F64,qTy))),
14473             ITE(Bop(Or,
14474                     Call
14475                       ("NotWordValue",bTy,
14476                        Apply
14477                          (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
14478                           qVar"state")),
14479                     Call
14480                       ("NotWordValue",bTy,
14481                        Apply
14482                          (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14483                           qVar"state"))),
14484                 Mop(Snd,
14485                     Apply
14486                       (Call
14487                          ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
14488                           Call
14489                             ("UNPREDICTABLE",CTy"exception",
14490                              LS"MSUBU: NotWordValue")),qVar"state")),
14491                 qVar"state")),
14492          Let(TP[Var("v",F64),qVar"s"],
14493              Let(TP[Var("v",F64),qVar"s"],
14494                  Let(TP[Var("v0",F64),qVar"s"],
14495                      Apply(Const("LO",ATy(qTy,PTy(F64,qTy))),qVar"s"),
14496                      TP[CC[EX(Var("v",F64),LN 31,LN 0,F32),
14497                            EX(Var("v0",F64),LN 31,LN 0,F32)],qVar"s"]),
14498                  TP[Bop(Sub,Var("v",F64),
14499                         Bop(Mul,
14500                             Mop(Cast F64,
14501                                 EX(Apply
14502                                      (Call
14503                                         ("GPR",ATy(qTy,F64),
14504                                          Var("rs",FTy 5)),qVar"s"),LN 31,
14505                                    LN 0,F32)),
14506                             Mop(Cast F64,
14507                                 EX(Apply
14508                                      (Call
14509                                         ("GPR",ATy(qTy,F64),
14510                                          Var("rt",FTy 5)),qVar"s"),LN 31,
14511                                    LN 0,F32)))),qVar"s"]),
14512              Apply
14513                (Call
14514                   ("write'LO",ATy(qTy,qTy),
14515                    Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32))),
14516                 Apply
14517                   (Call
14518                      ("write'HI",ATy(qTy,qTy),
14519                       Mop(SE F64,EX(Var("v",F64),LN 63,LN 32,F32))),
14520                    qVar"s"))))))
14521;
14522val dfn'MUL_def = Def
14523  ("dfn'MUL",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
14524   Close
14525     (qVar"state",
14526      Let(TP[Var("v",F64),qVar"s"],
14527          Let(qVar"s0",
14528              ITE(Bop(Or,
14529                      Call
14530                        ("NotWordValue",bTy,
14531                         Apply
14532                           (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
14533                            qVar"state")),
14534                      Call
14535                        ("NotWordValue",bTy,
14536                         Apply
14537                           (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14538                            qVar"state"))),
14539                  Mop(Snd,
14540                      Apply
14541                        (Call
14542                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
14543                            Call
14544                              ("UNPREDICTABLE",CTy"exception",
14545                               LS"MUL: NotWordValue")),qVar"state")),
14546                  qVar"state"),
14547              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
14548                 qVar"s0"]),
14549          Apply
14550            (Call("write'hi",ATy(qTy,qTy),LO F64),
14551             Apply
14552               (Call("write'lo",ATy(qTy,qTy),LO F64),
14553                Apply
14554                  (Call
14555                     ("write'GPR",ATy(qTy,qTy),
14556                      TP[Mop(SE F64,
14557                             Bop(Mul,EX(Var("v",F64),LN 31,LN 0,F32),
14558                                 EX(Apply
14559                                      (Call
14560                                         ("GPR",ATy(qTy,F64),
14561                                          Var("rt",FTy 5)),qVar"s"),LN 31,
14562                                    LN 0,F32))),Var("rd",FTy 5)]),qVar"s"))))))
14563;
14564val dfn'MULT_def = Def
14565  ("dfn'MULT",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
14566   Close
14567     (qVar"state",
14568      Let(TP[Var("v",F64),qVar"s"],
14569          Let(qVar"s0",
14570              ITE(Bop(Or,
14571                      Call
14572                        ("NotWordValue",bTy,
14573                         Apply
14574                           (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
14575                            qVar"state")),
14576                      Call
14577                        ("NotWordValue",bTy,
14578                         Apply
14579                           (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14580                            qVar"state"))),
14581                  Mop(Snd,
14582                      Apply
14583                        (Call
14584                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
14585                            Call
14586                              ("UNPREDICTABLE",CTy"exception",
14587                               LS"MULT: NotWordValue")),qVar"state")),
14588                  qVar"state"),
14589              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
14590                 qVar"s0"]),
14591          Let(Var("v",F64),
14592              Bop(Mul,Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32)),
14593                  Mop(SE F64,
14594                      EX(Apply
14595                           (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14596                            qVar"s"),LN 31,LN 0,F32))),
14597              Apply
14598                (Call
14599                   ("write'HI",ATy(qTy,qTy),
14600                    Mop(SE F64,EX(Var("v",F64),LN 63,LN 32,F32))),
14601                 Apply
14602                   (Call
14603                      ("write'LO",ATy(qTy,qTy),
14604                       Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32))),
14605                    qVar"s"))))))
14606;
14607val dfn'MULTU_def = Def
14608  ("dfn'MULTU",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
14609   Close
14610     (qVar"state",
14611      Let(TP[Var("v",F64),qVar"s"],
14612          Let(qVar"s0",
14613              ITE(Bop(Or,
14614                      Call
14615                        ("NotWordValue",bTy,
14616                         Apply
14617                           (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
14618                            qVar"state")),
14619                      Call
14620                        ("NotWordValue",bTy,
14621                         Apply
14622                           (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14623                            qVar"state"))),
14624                  Mop(Snd,
14625                      Apply
14626                        (Call
14627                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
14628                            Call
14629                              ("UNPREDICTABLE",CTy"exception",
14630                               LS"MULTU: NotWordValue")),qVar"state")),
14631                  qVar"state"),
14632              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
14633                 qVar"s0"]),
14634          Let(Var("v",F64),
14635              Bop(Mul,Mop(Cast F64,EX(Var("v",F64),LN 31,LN 0,F32)),
14636                  Mop(Cast F64,
14637                      EX(Apply
14638                           (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14639                            qVar"s"),LN 31,LN 0,F32))),
14640              Apply
14641                (Call
14642                   ("write'HI",ATy(qTy,qTy),
14643                    Mop(SE F64,EX(Var("v",F64),LN 63,LN 32,F32))),
14644                 Apply
14645                   (Call
14646                      ("write'LO",ATy(qTy,qTy),
14647                       Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32))),
14648                    qVar"s"))))))
14649;
14650val dfn'DMULT_def = Def
14651  ("dfn'DMULT",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
14652   Close
14653     (qVar"state",
14654      Let(Var("v",FTy 128),
14655          Bop(Mul,
14656              Mop(SE(FTy 128),
14657                  Apply
14658                    (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")),
14659              Mop(SE(FTy 128),
14660                  Apply
14661                    (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"))),
14662          Apply
14663            (Call
14664               ("write'HI",ATy(qTy,qTy),
14665                EX(Var("v",FTy 128),LN 127,LN 64,F64)),
14666             Apply
14667               (Call
14668                  ("write'LO",ATy(qTy,qTy),
14669                   EX(Var("v",FTy 128),LN 63,LN 0,F64)),qVar"state")))))
14670;
14671val dfn'DMULTU_def = Def
14672  ("dfn'DMULTU",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
14673   Close
14674     (qVar"state",
14675      Let(Var("v",FTy 128),
14676          Bop(Mul,
14677              Mop(Cast(FTy 128),
14678                  Apply
14679                    (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")),
14680              Mop(Cast(FTy 128),
14681                  Apply
14682                    (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"))),
14683          Apply
14684            (Call
14685               ("write'HI",ATy(qTy,qTy),
14686                EX(Var("v",FTy 128),LN 127,LN 64,F64)),
14687             Apply
14688               (Call
14689                  ("write'LO",ATy(qTy,qTy),
14690                   EX(Var("v",FTy 128),LN 63,LN 0,F64)),qVar"state")))))
14691;
14692val dfn'DIV_def = Def
14693  ("dfn'DIV",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
14694   Close
14695     (qVar"state",
14696      Let(Var("v",F64),
14697          Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
14698          Let(Var("v0",F64),
14699              Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
14700              Let(qVar"s1",
14701                  ITE(Bop(Or,Call("NotWordValue",bTy,Var("v",F64)),
14702                          Call("NotWordValue",bTy,Var("v0",F64))),
14703                      Mop(Snd,
14704                          Apply
14705                            (Call
14706                               ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
14707                                Call
14708                                  ("UNPREDICTABLE",CTy"exception",
14709                                   LS"DIV: NotWordValue")),qVar"state")),
14710                      qVar"state"),
14711                  ITE(EQ(Var("v0",F64),LW(0,64)),
14712                      Apply
14713                        (Call("write'hi",ATy(qTy,qTy),LO F64),
14714                         Apply
14715                           (Call("write'lo",ATy(qTy,qTy),LO F64),qVar"s1")),
14716                      Apply
14717                        (Call
14718                           ("write'HI",ATy(qTy,qTy),
14719                            Mop(SE F64,
14720                                Bop(Rem,EX(Var("v",F64),LN 31,LN 0,F32),
14721                                    EX(Var("v0",F64),LN 31,LN 0,F32)))),
14722                         Apply
14723                           (Call
14724                              ("write'LO",ATy(qTy,qTy),
14725                               Mop(SE F64,
14726                                   Bop(Quot,
14727                                       EX(Var("v",F64),LN 31,LN 0,F32),
14728                                       EX(Var("v0",F64),LN 31,LN 0,F32)))),
14729                            qVar"s1"))))))))
14730;
14731val dfn'DIVU_def = Def
14732  ("dfn'DIVU",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
14733   Close
14734     (qVar"state",
14735      Let(Var("v",F64),
14736          Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
14737          Let(Var("v0",F64),
14738              Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
14739              Let(qVar"s1",
14740                  ITE(Bop(Or,Call("NotWordValue",bTy,Var("v",F64)),
14741                          Call("NotWordValue",bTy,Var("v0",F64))),
14742                      Mop(Snd,
14743                          Apply
14744                            (Call
14745                               ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
14746                                Call
14747                                  ("UNPREDICTABLE",CTy"exception",
14748                                   LS"DIVU: NotWordValue")),qVar"state")),
14749                      qVar"state"),
14750                  ITE(EQ(Var("v0",F64),LW(0,64)),
14751                      Apply
14752                        (Call("write'hi",ATy(qTy,qTy),LO F64),
14753                         Apply
14754                           (Call("write'lo",ATy(qTy,qTy),LO F64),qVar"s1")),
14755                      Apply
14756                        (Call
14757                           ("write'HI",ATy(qTy,qTy),
14758                            Mop(SE F64,
14759                                Bop(Mod,EX(Var("v",F64),LN 31,LN 0,F32),
14760                                    EX(Var("v0",F64),LN 31,LN 0,F32)))),
14761                         Apply
14762                           (Call
14763                              ("write'LO",ATy(qTy,qTy),
14764                               Mop(SE F64,
14765                                   Bop(Div,
14766                                       EX(Var("v",F64),LN 31,LN 0,F32),
14767                                       EX(Var("v0",F64),LN 31,LN 0,F32)))),
14768                            qVar"s1"))))))))
14769;
14770val dfn'DDIV_def = Def
14771  ("dfn'DDIV",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
14772   Close
14773     (qVar"state",
14774      Let(Var("v",F64),
14775          Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
14776          ITE(EQ(Var("v",F64),LW(0,64)),
14777              Apply
14778                (Call("write'hi",ATy(qTy,qTy),LO F64),
14779                 Apply(Call("write'lo",ATy(qTy,qTy),LO F64),qVar"state")),
14780              Let(Var("v0",F64),
14781                  Apply
14782                    (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
14783                  Apply
14784                    (Call
14785                       ("write'HI",ATy(qTy,qTy),
14786                        Bop(Rem,Var("v0",F64),Var("v",F64))),
14787                     Apply
14788                       (Call
14789                          ("write'LO",ATy(qTy,qTy),
14790                           Bop(Quot,Var("v0",F64),Var("v",F64))),
14791                        qVar"state")))))))
14792;
14793val dfn'DDIVU_def = Def
14794  ("dfn'DDIVU",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
14795   Close
14796     (qVar"state",
14797      Let(Var("v",F64),
14798          Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
14799          ITE(EQ(Var("v",F64),LW(0,64)),
14800              Apply
14801                (Call("write'hi",ATy(qTy,qTy),LO F64),
14802                 Apply(Call("write'lo",ATy(qTy,qTy),LO F64),qVar"state")),
14803              Let(Var("v0",F64),
14804                  Apply
14805                    (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
14806                  Apply
14807                    (Call
14808                       ("write'HI",ATy(qTy,qTy),
14809                        Bop(Mod,Var("v0",F64),Var("v",F64))),
14810                     Apply
14811                       (Call
14812                          ("write'LO",ATy(qTy,qTy),
14813                           Bop(Div,Var("v0",F64),Var("v",F64))),
14814                        qVar"state")))))))
14815;
14816val dfn'MFHI_def = Def
14817  ("dfn'MFHI",Var("rd",FTy 5),
14818   Close
14819     (qVar"state",
14820      Let(TP[Var("v",F64),qVar"s"],
14821          Apply(Const("HI",ATy(qTy,PTy(F64,qTy))),qVar"state"),
14822          Apply
14823            (Call
14824               ("write'GPR",ATy(qTy,qTy),TP[Var("v",F64),Var("rd",FTy 5)]),
14825             qVar"s"))))
14826;
14827val dfn'MFLO_def = Def
14828  ("dfn'MFLO",Var("rd",FTy 5),
14829   Close
14830     (qVar"state",
14831      Let(TP[Var("v",F64),qVar"s"],
14832          Apply(Const("LO",ATy(qTy,PTy(F64,qTy))),qVar"state"),
14833          Apply
14834            (Call
14835               ("write'GPR",ATy(qTy,qTy),TP[Var("v",F64),Var("rd",FTy 5)]),
14836             qVar"s"))))
14837;
14838val dfn'MTHI_def = Def
14839  ("dfn'MTHI",Var("rs",FTy 5),
14840   Close
14841     (qVar"state",
14842      Apply
14843        (Call
14844           ("write'HI",ATy(qTy,qTy),
14845            Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")),
14846         qVar"state")))
14847;
14848val dfn'MTLO_def = Def
14849  ("dfn'MTLO",Var("rs",FTy 5),
14850   Close
14851     (qVar"state",
14852      Apply
14853        (Call
14854           ("write'LO",ATy(qTy,qTy),
14855            Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")),
14856         qVar"state")))
14857;
14858val dfn'SLL_def = Def
14859  ("dfn'SLL",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)],
14860   Close
14861     (qVar"state",
14862      Apply
14863        (Call
14864           ("write'GPR",ATy(qTy,qTy),
14865            TP[Mop(SE F64,
14866                   Bop(Lsl,
14867                       EX(Apply
14868                            (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14869                             qVar"state"),LN 31,LN 0,F32),
14870                       Mop(Cast nTy,Var("sa",FTy 5)))),Var("rd",FTy 5)]),
14871         qVar"state")))
14872;
14873val dfn'SRL_def = Def
14874  ("dfn'SRL",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)],
14875   Close
14876     (qVar"state",
14877      Let(TP[Var("v",F64),qVar"s"],
14878          Let(qVar"s0",
14879              ITE(Call
14880                    ("NotWordValue",bTy,
14881                     Apply
14882                       (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14883                        qVar"state")),
14884                  Mop(Snd,
14885                      Apply
14886                        (Call
14887                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
14888                            Call
14889                              ("UNPREDICTABLE",CTy"exception",
14890                               LS"SRL: NotWordValue")),qVar"state")),
14891                  qVar"state"),
14892              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"s0"),
14893                 qVar"s0"]),
14894          Apply
14895            (Call
14896               ("write'GPR",ATy(qTy,qTy),
14897                TP[Mop(SE F64,
14898                       Bop(Lsr,EX(Var("v",F64),LN 31,LN 0,F32),
14899                           Mop(Cast nTy,Var("sa",FTy 5)))),Var("rd",FTy 5)]),
14900             qVar"s"))))
14901;
14902val dfn'SRA_def = Def
14903  ("dfn'SRA",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)],
14904   Close
14905     (qVar"state",
14906      Let(TP[Var("v",F64),qVar"s"],
14907          Let(qVar"s0",
14908              ITE(Call
14909                    ("NotWordValue",bTy,
14910                     Apply
14911                       (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14912                        qVar"state")),
14913                  Mop(Snd,
14914                      Apply
14915                        (Call
14916                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
14917                            Call
14918                              ("UNPREDICTABLE",CTy"exception",
14919                               LS"SRA: NotWordValue")),qVar"state")),
14920                  qVar"state"),
14921              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"s0"),
14922                 qVar"s0"]),
14923          Apply
14924            (Call
14925               ("write'GPR",ATy(qTy,qTy),
14926                TP[Mop(SE F64,
14927                       Bop(Asr,EX(Var("v",F64),LN 31,LN 0,F32),
14928                           Mop(Cast nTy,Var("sa",FTy 5)))),Var("rd",FTy 5)]),
14929             qVar"s"))))
14930;
14931val dfn'SLLV_def = Def
14932  ("dfn'SLLV",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
14933   Close
14934     (qVar"state",
14935      Apply
14936        (Call
14937           ("write'GPR",ATy(qTy,qTy),
14938            TP[Mop(SE F64,
14939                   Bop(Lsl,
14940                       EX(Apply
14941                            (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14942                             qVar"state"),LN 31,LN 0,F32),
14943                       Mop(Cast nTy,
14944                           EX(Apply
14945                                (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
14946                                 qVar"state"),LN 4,LN 0,FTy 5)))),
14947               Var("rd",FTy 5)]),qVar"state")))
14948;
14949val dfn'SRLV_def = Def
14950  ("dfn'SRLV",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
14951   Close
14952     (qVar"state",
14953      Let(TP[Var("v",F64),qVar"s"],
14954          Let(qVar"s0",
14955              ITE(Call
14956                    ("NotWordValue",bTy,
14957                     Apply
14958                       (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14959                        qVar"state")),
14960                  Mop(Snd,
14961                      Apply
14962                        (Call
14963                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
14964                            Call
14965                              ("UNPREDICTABLE",CTy"exception",
14966                               LS"SRLV: NotWordValue")),qVar"state")),
14967                  qVar"state"),
14968              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
14969                 qVar"s0"]),
14970          Apply
14971            (Call
14972               ("write'GPR",ATy(qTy,qTy),
14973                TP[Mop(SE F64,
14974                       Bop(Lsr,
14975                           EX(Apply
14976                                (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14977                                 qVar"s"),LN 31,LN 0,F32),
14978                           Mop(Cast nTy,EX(Var("v",F64),LN 4,LN 0,FTy 5)))),
14979                   Var("rd",FTy 5)]),qVar"s"))))
14980;
14981val dfn'SRAV_def = Def
14982  ("dfn'SRAV",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
14983   Close
14984     (qVar"state",
14985      Let(TP[Var("v",F64),qVar"s"],
14986          Let(qVar"s0",
14987              ITE(Call
14988                    ("NotWordValue",bTy,
14989                     Apply
14990                       (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
14991                        qVar"state")),
14992                  Mop(Snd,
14993                      Apply
14994                        (Call
14995                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
14996                            Call
14997                              ("UNPREDICTABLE",CTy"exception",
14998                               LS"SRAV: NotWordValue")),qVar"state")),
14999                  qVar"state"),
15000              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
15001                 qVar"s0"]),
15002          Apply
15003            (Call
15004               ("write'GPR",ATy(qTy,qTy),
15005                TP[Mop(SE F64,
15006                       Bop(Asr,
15007                           EX(Apply
15008                                (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
15009                                 qVar"s"),LN 31,LN 0,F32),
15010                           Mop(Cast nTy,EX(Var("v",F64),LN 4,LN 0,FTy 5)))),
15011                   Var("rd",FTy 5)]),qVar"s"))))
15012;
15013val dfn'DSLL_def = Def
15014  ("dfn'DSLL",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)],
15015   Close
15016     (qVar"state",
15017      Apply
15018        (Call
15019           ("write'GPR",ATy(qTy,qTy),
15020            TP[Bop(Lsl,
15021                   Apply
15022                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
15023                   Mop(Cast nTy,Var("sa",FTy 5))),Var("rd",FTy 5)]),
15024         qVar"state")))
15025;
15026val dfn'DSRL_def = Def
15027  ("dfn'DSRL",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)],
15028   Close
15029     (qVar"state",
15030      Apply
15031        (Call
15032           ("write'GPR",ATy(qTy,qTy),
15033            TP[Bop(Lsr,
15034                   Apply
15035                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
15036                   Mop(Cast nTy,Var("sa",FTy 5))),Var("rd",FTy 5)]),
15037         qVar"state")))
15038;
15039val dfn'DSRA_def = Def
15040  ("dfn'DSRA",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)],
15041   Close
15042     (qVar"state",
15043      Apply
15044        (Call
15045           ("write'GPR",ATy(qTy,qTy),
15046            TP[Bop(Asr,
15047                   Apply
15048                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
15049                   Mop(Cast nTy,Var("sa",FTy 5))),Var("rd",FTy 5)]),
15050         qVar"state")))
15051;
15052val dfn'DSLLV_def = Def
15053  ("dfn'DSLLV",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
15054   Close
15055     (qVar"state",
15056      Apply
15057        (Call
15058           ("write'GPR",ATy(qTy,qTy),
15059            TP[Bop(Lsl,
15060                   Apply
15061                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
15062                   Mop(Cast nTy,
15063                       EX(Apply
15064                            (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
15065                             qVar"state"),LN 5,LN 0,FTy 6))),
15066               Var("rd",FTy 5)]),qVar"state")))
15067;
15068val dfn'DSRLV_def = Def
15069  ("dfn'DSRLV",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
15070   Close
15071     (qVar"state",
15072      Apply
15073        (Call
15074           ("write'GPR",ATy(qTy,qTy),
15075            TP[Bop(Lsr,
15076                   Apply
15077                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
15078                   Mop(Cast nTy,
15079                       EX(Apply
15080                            (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
15081                             qVar"state"),LN 5,LN 0,FTy 6))),
15082               Var("rd",FTy 5)]),qVar"state")))
15083;
15084val dfn'DSRAV_def = Def
15085  ("dfn'DSRAV",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
15086   Close
15087     (qVar"state",
15088      Apply
15089        (Call
15090           ("write'GPR",ATy(qTy,qTy),
15091            TP[Bop(Asr,
15092                   Apply
15093                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
15094                   Mop(Cast nTy,
15095                       EX(Apply
15096                            (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
15097                             qVar"state"),LN 5,LN 0,FTy 6))),
15098               Var("rd",FTy 5)]),qVar"state")))
15099;
15100val dfn'DSLL32_def = Def
15101  ("dfn'DSLL32",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)],
15102   Close
15103     (qVar"state",
15104      Apply
15105        (Call
15106           ("write'GPR",ATy(qTy,qTy),
15107            TP[Bop(Lsl,
15108                   Apply
15109                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
15110                   Bop(Add,Mop(Cast nTy,Var("sa",FTy 5)),LN 32)),
15111               Var("rd",FTy 5)]),qVar"state")))
15112;
15113val dfn'DSRL32_def = Def
15114  ("dfn'DSRL32",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)],
15115   Close
15116     (qVar"state",
15117      Apply
15118        (Call
15119           ("write'GPR",ATy(qTy,qTy),
15120            TP[Bop(Lsr,
15121                   Apply
15122                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
15123                   Bop(Add,Mop(Cast nTy,Var("sa",FTy 5)),LN 32)),
15124               Var("rd",FTy 5)]),qVar"state")))
15125;
15126val dfn'DSRA32_def = Def
15127  ("dfn'DSRA32",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)],
15128   Close
15129     (qVar"state",
15130      Apply
15131        (Call
15132           ("write'GPR",ATy(qTy,qTy),
15133            TP[Bop(Asr,
15134                   Apply
15135                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
15136                   Bop(Add,Mop(Cast nTy,Var("sa",FTy 5)),LN 32)),
15137               Var("rd",FTy 5)]),qVar"state")))
15138;
15139val dfn'TGE_def = Def
15140  ("dfn'TGE",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
15141   Close
15142     (qVar"state",
15143      ITE(Bop(Ge,
15144              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
15145              Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
15146          Apply
15147            (Call
15148               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
15149             qVar"state"),qVar"state")))
15150;
15151val dfn'TGEU_def = Def
15152  ("dfn'TGEU",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
15153   Close
15154     (qVar"state",
15155      ITE(Bop(Uge,
15156              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
15157              Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
15158          Apply
15159            (Call
15160               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
15161             qVar"state"),qVar"state")))
15162;
15163val dfn'TLT_def = Def
15164  ("dfn'TLT",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
15165   Close
15166     (qVar"state",
15167      ITE(Bop(Lt,
15168              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
15169              Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
15170          Apply
15171            (Call
15172               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
15173             qVar"state"),qVar"state")))
15174;
15175val dfn'TLTU_def = Def
15176  ("dfn'TLTU",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
15177   Close
15178     (qVar"state",
15179      ITE(Bop(Ult,
15180              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
15181              Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
15182          Apply
15183            (Call
15184               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
15185             qVar"state"),qVar"state")))
15186;
15187val dfn'TEQ_def = Def
15188  ("dfn'TEQ",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
15189   Close
15190     (qVar"state",
15191      ITE(EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
15192             Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
15193          Apply
15194            (Call
15195               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
15196             qVar"state"),qVar"state")))
15197;
15198val dfn'TNE_def = Def
15199  ("dfn'TNE",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
15200   Close
15201     (qVar"state",
15202      ITE(Mop(Not,
15203              EQ(Apply
15204                   (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
15205                 Apply
15206                   (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"))),
15207          Apply
15208            (Call
15209               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
15210             qVar"state"),qVar"state")))
15211;
15212val dfn'TGEI_def = Def
15213  ("dfn'TGEI",TP[Var("rs",FTy 5),Var("immediate",F16)],
15214   Close
15215     (qVar"state",
15216      ITE(Bop(Ge,
15217              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
15218              Mop(SE F64,Var("immediate",F16))),
15219          Apply
15220            (Call
15221               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
15222             qVar"state"),qVar"state")))
15223;
15224val dfn'TGEIU_def = Def
15225  ("dfn'TGEIU",TP[Var("rs",FTy 5),Var("immediate",F16)],
15226   Close
15227     (qVar"state",
15228      ITE(Bop(Uge,
15229              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
15230              Mop(SE F64,Var("immediate",F16))),
15231          Apply
15232            (Call
15233               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
15234             qVar"state"),qVar"state")))
15235;
15236val dfn'TLTI_def = Def
15237  ("dfn'TLTI",TP[Var("rs",FTy 5),Var("immediate",F16)],
15238   Close
15239     (qVar"state",
15240      ITE(Bop(Lt,
15241              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
15242              Mop(SE F64,Var("immediate",F16))),
15243          Apply
15244            (Call
15245               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
15246             qVar"state"),qVar"state")))
15247;
15248val dfn'TLTIU_def = Def
15249  ("dfn'TLTIU",TP[Var("rs",FTy 5),Var("immediate",F16)],
15250   Close
15251     (qVar"state",
15252      ITE(Bop(Ult,
15253              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
15254              Mop(SE F64,Var("immediate",F16))),
15255          Apply
15256            (Call
15257               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
15258             qVar"state"),qVar"state")))
15259;
15260val dfn'TEQI_def = Def
15261  ("dfn'TEQI",TP[Var("rs",FTy 5),Var("immediate",F16)],
15262   Close
15263     (qVar"state",
15264      ITE(EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
15265             Mop(SE F64,Var("immediate",F16))),
15266          Apply
15267            (Call
15268               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
15269             qVar"state"),qVar"state")))
15270;
15271val dfn'TNEI_def = Def
15272  ("dfn'TNEI",TP[Var("rs",FTy 5),Var("immediate",F16)],
15273   Close
15274     (qVar"state",
15275      ITE(Mop(Not,
15276              EQ(Apply
15277                   (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
15278                 Mop(SE F64,Var("immediate",F16)))),
15279          Apply
15280            (Call
15281               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
15282             qVar"state"),qVar"state")))
15283;
15284val loadByte_def = Def
15285  ("loadByte",
15286   TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),bVar"unsigned"],
15287   Close
15288     (qVar"state",
15289      Let(Var("v",F64),
15290          Apply
15291            (Call
15292               ("getVirtualAddress",ATy(qTy,F64),
15293                Bop(Add,Mop(SE F64,Var("offset",F16)),
15294                    Apply
15295                      (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
15296                       qVar"state"))),qVar"state"),
15297          Let(TP[Var("v0",F64),qVar"s"],
15298              Apply
15299                (Call
15300                   ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
15301                    TP[Const("BYTE",FTy 3),Const("BYTE",FTy 3),LF,
15302                       Var("v",F64),LF]),qVar"state"),
15303              ITE(Mop(Not,
15304                      Apply
15305                        (Const("exceptionSignalled",ATy(qTy,bTy)),qVar"s")),
15306                  Let(Var("v1",FTy 3),
15307                      Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3),
15308                          REP(Apply
15309                                (Const("BigEndianCPU",ATy(qTy,F1)),qVar"s"),
15310                              LN 3,FTy 3)),
15311                      Let(Var("membyte",F8),
15312                          EX(Var("v0",F64),
15313                             Bop(Add,LN 7,
15314                                 Bop(Mul,LN 8,
15315                                     Mop(Cast nTy,Var("v1",FTy 3)))),
15316                             Bop(Mul,LN 8,Mop(Cast nTy,Var("v1",FTy 3))),
15317                             F8),
15318                          Apply
15319                            (Call
15320                               ("write'GPR",ATy(qTy,qTy),
15321                                TP[ITE(bVar"unsigned",
15322                                       Mop(Cast F64,Var("membyte",F8)),
15323                                       Mop(SE F64,Var("membyte",F8))),
15324                                   Var("rt",FTy 5)]),qVar"s"))),qVar"s")))))
15325;
15326val loadHalf_def = Def
15327  ("loadHalf",
15328   TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),bVar"unsigned"],
15329   Close
15330     (qVar"state",
15331      Let(Var("v",F64),
15332          Apply
15333            (Call
15334               ("getVirtualAddress",ATy(qTy,F64),
15335                Bop(Add,Mop(SE F64,Var("offset",F16)),
15336                    Apply
15337                      (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
15338                       qVar"state"))),qVar"state"),
15339          Let(TP[Var("v0",F64),qVar"s"],
15340              Apply
15341                (Call
15342                   ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
15343                    TP[Const("HALFWORD",FTy 3),Const("HALFWORD",FTy 3),LT,
15344                       Var("v",F64),LF]),qVar"state"),
15345              ITE(Mop(Not,
15346                      Apply
15347                        (Const("exceptionSignalled",ATy(qTy,bTy)),qVar"s")),
15348                  Let(Var("v1",FTy 3),
15349                      Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3),
15350                          CC[REP(Apply
15351                                   (Const("BigEndianCPU",ATy(qTy,F1)),
15352                                    qVar"s"),LN 2,FTy 2),LW(0,1)]),
15353                      Let(Var("memhalf",F16),
15354                          EX(Var("v0",F64),
15355                             Bop(Add,LN 15,
15356                                 Bop(Mul,LN 8,
15357                                     Mop(Cast nTy,Var("v1",FTy 3)))),
15358                             Bop(Mul,LN 8,Mop(Cast nTy,Var("v1",FTy 3))),
15359                             F16),
15360                          Apply
15361                            (Call
15362                               ("write'GPR",ATy(qTy,qTy),
15363                                TP[ITE(bVar"unsigned",
15364                                       Mop(Cast F64,Var("memhalf",F16)),
15365                                       Mop(SE F64,Var("memhalf",F16))),
15366                                   Var("rt",FTy 5)]),qVar"s"))),qVar"s")))))
15367;
15368val loadWord_def = Def
15369  ("loadWord",
15370   TP[bVar"link",Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),
15371      bVar"unsigned"],
15372   Close
15373     (qVar"state",
15374      Let(Var("v",F64),
15375          Apply
15376            (Call
15377               ("getVirtualAddress",ATy(qTy,F64),
15378                Bop(Add,Mop(SE F64,Var("offset",F16)),
15379                    Apply
15380                      (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
15381                       qVar"state"))),qVar"state"),
15382          Let(TP[Var("v0",F64),qVar"s"],
15383              Apply
15384                (Call
15385                   ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
15386                    TP[Const("WORD",FTy 3),Const("WORD",FTy 3),LT,
15387                       Var("v",F64),bVar"link"]),qVar"state"),
15388              ITE(Mop(Not,
15389                      Apply
15390                        (Const("exceptionSignalled",ATy(qTy,bTy)),qVar"s")),
15391                  Let(Var("v1",FTy 3),
15392                      Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3),
15393                          CC[Apply
15394                               (Const("BigEndianCPU",ATy(qTy,F1)),qVar"s"),
15395                             LW(0,2)]),
15396                      Let(Var("memword",F32),
15397                          EX(Var("v0",F64),
15398                             Bop(Add,LN 31,
15399                                 Bop(Mul,LN 8,
15400                                     Mop(Cast nTy,Var("v1",FTy 3)))),
15401                             Bop(Mul,LN 8,Mop(Cast nTy,Var("v1",FTy 3))),
15402                             F32),
15403                          Apply
15404                            (Call
15405                               ("write'GPR",ATy(qTy,qTy),
15406                                TP[ITE(bVar"unsigned",
15407                                       Mop(Cast F64,Var("memword",F32)),
15408                                       Mop(SE F64,Var("memword",F32))),
15409                                   Var("rt",FTy 5)]),qVar"s"))),qVar"s")))))
15410;
15411val loadDoubleword_def = Def
15412  ("loadDoubleword",
15413   TP[bVar"link",Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
15414   Close
15415     (qVar"state",
15416      Let(TP[Var("v",F64),qVar"s"],
15417          Apply
15418            (Call
15419               ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
15420                TP[Const("DOUBLEWORD",FTy 3),Const("DOUBLEWORD",FTy 3),LT,
15421                   Apply
15422                     (Call
15423                        ("getVirtualAddress",ATy(qTy,F64),
15424                         Bop(Add,Mop(SE F64,Var("offset",F16)),
15425                             Apply
15426                               (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
15427                                qVar"state"))),qVar"state"),bVar"link"]),
15428             qVar"state"),
15429          ITE(Mop(Not,
15430                  Apply(Const("exceptionSignalled",ATy(qTy,bTy)),qVar"s")),
15431              Apply
15432                (Call
15433                   ("write'GPR",ATy(qTy,qTy),
15434                    TP[Var("v",F64),Var("rt",FTy 5)]),qVar"s"),qVar"s"))))
15435;
15436val dfn'LB_def = Def
15437  ("dfn'LB",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
15438   Close
15439     (qVar"state",
15440      Apply
15441        (Call
15442           ("loadByte",ATy(qTy,qTy),
15443            TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LF]),
15444         qVar"state")))
15445;
15446val dfn'LBU_def = Def
15447  ("dfn'LBU",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
15448   Close
15449     (qVar"state",
15450      Apply
15451        (Call
15452           ("loadByte",ATy(qTy,qTy),
15453            TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LT]),
15454         qVar"state")))
15455;
15456val dfn'LH_def = Def
15457  ("dfn'LH",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
15458   Close
15459     (qVar"state",
15460      Apply
15461        (Call
15462           ("loadHalf",ATy(qTy,qTy),
15463            TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LF]),
15464         qVar"state")))
15465;
15466val dfn'LHU_def = Def
15467  ("dfn'LHU",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
15468   Close
15469     (qVar"state",
15470      Apply
15471        (Call
15472           ("loadHalf",ATy(qTy,qTy),
15473            TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LT]),
15474         qVar"state")))
15475;
15476val dfn'LW_def = Def
15477  ("dfn'LW",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
15478   Close
15479     (qVar"state",
15480      Apply
15481        (Call
15482           ("loadWord",ATy(qTy,qTy),
15483            TP[LF,Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LF]),
15484         qVar"state")))
15485;
15486val dfn'LWU_def = Def
15487  ("dfn'LWU",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
15488   Close
15489     (qVar"state",
15490      Apply
15491        (Call
15492           ("loadWord",ATy(qTy,qTy),
15493            TP[LF,Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LT]),
15494         qVar"state")))
15495;
15496val dfn'LL_def = Def
15497  ("dfn'LL",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
15498   Close
15499     (qVar"state",
15500      Apply
15501        (Call
15502           ("loadWord",ATy(qTy,qTy),
15503            TP[LT,Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LF]),
15504         qVar"state")))
15505;
15506val dfn'LD_def = Def
15507  ("dfn'LD",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
15508   Close
15509     (qVar"state",
15510      Apply
15511        (Call
15512           ("loadDoubleword",ATy(qTy,qTy),
15513            TP[LF,Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)]),
15514         qVar"state")))
15515;
15516val dfn'LLD_def = Def
15517  ("dfn'LLD",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
15518   Close
15519     (qVar"state",
15520      Apply
15521        (Call
15522           ("loadDoubleword",ATy(qTy,qTy),
15523            TP[LT,Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)]),
15524         qVar"state")))
15525;
15526val dfn'LWL_def = Def
15527  ("dfn'LWL",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
15528   Close
15529     (qVar"state",
15530      Let(Var("v",F64),
15531          Apply
15532            (Call
15533               ("getVirtualAddress",ATy(qTy,F64),
15534                Bop(Add,Mop(SE F64,Var("offset",F16)),
15535                    Apply
15536                      (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
15537                       qVar"state"))),qVar"state"),
15538          Let(Var("v0",FTy 2),
15539              Bop(BXor,EX(Var("v",F64),LN 1,LN 0,FTy 2),
15540                  REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"),
15541                      LN 2,FTy 2)),
15542              Let(TP[Var("v2",F64),qVar"s0"],
15543                  Apply
15544                    (Call
15545                       ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
15546                        TP[Const("WORD",FTy 3),
15547                           CC[LW(0,1),Var("v0",FTy 2)],LF,Var("v",F64),LF]),
15548                     qVar"state"),
15549                  ITE(Mop(Not,
15550                          Apply
15551                            (Const("exceptionSignalled",ATy(qTy,bTy)),
15552                             qVar"s0")),
15553                      Let(TP[Var("v",F32),qVar"s"],
15554                          CS(TP[Bop(BXor,EX(Var("v",F64),LN 2,LN 2,F1),
15555                                    Apply
15556                                      (Const("BigEndianCPU",ATy(qTy,F1)),
15557                                       qVar"state")),Var("v0",FTy 2)],
15558                             [(TP[LW(0,1),LW(0,2)],
15559                               TP[CC[EX(Var("v2",F64),LN 7,LN 0,F8),
15560                                     EX(Apply
15561                                          (Call
15562                                             ("GPR",ATy(qTy,F64),
15563                                              Var("rt",FTy 5)),qVar"s0"),
15564                                        LN 23,LN 0,FTy 24)],qVar"s0"]),
15565                              (TP[LW(0,1),LW(1,2)],
15566                               TP[CC[EX(Var("v2",F64),LN 15,LN 0,F16),
15567                                     EX(Apply
15568                                          (Call
15569                                             ("GPR",ATy(qTy,F64),
15570                                              Var("rt",FTy 5)),qVar"s0"),
15571                                        LN 15,LN 0,F16)],qVar"s0"]),
15572                              (TP[LW(0,1),LW(2,2)],
15573                               TP[CC[EX(Var("v2",F64),LN 23,LN 0,FTy 24),
15574                                     EX(Apply
15575                                          (Call
15576                                             ("GPR",ATy(qTy,F64),
15577                                              Var("rt",FTy 5)),qVar"s0"),
15578                                        LN 7,LN 0,F8)],qVar"s0"]),
15579                              (TP[LW(0,1),LW(3,2)],
15580                               TP[EX(Var("v2",F64),LN 31,LN 0,F32),
15581                                  qVar"s0"]),
15582                              (TP[LW(1,1),LW(0,2)],
15583                               TP[CC[EX(Var("v2",F64),LN 39,LN 32,F8),
15584                                     EX(Apply
15585                                          (Call
15586                                             ("GPR",ATy(qTy,F64),
15587                                              Var("rt",FTy 5)),qVar"s0"),
15588                                        LN 23,LN 0,FTy 24)],qVar"s0"]),
15589                              (TP[LW(1,1),LW(1,2)],
15590                               TP[CC[EX(Var("v2",F64),LN 47,LN 32,F16),
15591                                     EX(Apply
15592                                          (Call
15593                                             ("GPR",ATy(qTy,F64),
15594                                              Var("rt",FTy 5)),qVar"s0"),
15595                                        LN 15,LN 0,F16)],qVar"s0"]),
15596                              (TP[LW(1,1),LW(2,2)],
15597                               TP[CC[EX(Var("v2",F64),LN 55,LN 32,FTy 24),
15598                                     EX(Apply
15599                                          (Call
15600                                             ("GPR",ATy(qTy,F64),
15601                                              Var("rt",FTy 5)),qVar"s0"),
15602                                        LN 7,LN 0,F8)],qVar"s0"]),
15603                              (TP[LW(1,1),LW(3,2)],
15604                               TP[EX(Var("v2",F64),LN 63,LN 32,F32),
15605                                  qVar"s0"])]),
15606                          Apply
15607                            (Call
15608                               ("write'GPR",ATy(qTy,qTy),
15609                                TP[Mop(SE F64,Var("v",F32)),
15610                                   Var("rt",FTy 5)]),qVar"s")),qVar"s0"))))))
15611;
15612val dfn'LWR_def = Def
15613  ("dfn'LWR",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
15614   Close
15615     (qVar"state",
15616      Let(Var("v",F64),
15617          Apply
15618            (Call
15619               ("getVirtualAddress",ATy(qTy,F64),
15620                Bop(Add,Mop(SE F64,Var("offset",F16)),
15621                    Apply
15622                      (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
15623                       qVar"state"))),qVar"state"),
15624          Let(Var("v0",FTy 2),
15625              Bop(BXor,EX(Var("v",F64),LN 1,LN 0,FTy 2),
15626                  REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"),
15627                      LN 2,FTy 2)),
15628              Let(TP[Var("v2",F64),qVar"s0"],
15629                  Apply
15630                    (Call
15631                       ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
15632                        TP[Const("WORD",FTy 3),
15633                           Bop(Sub,Const("WORD",FTy 3),
15634                               CC[LW(0,1),Var("v0",FTy 2)]),LF,
15635                           Var("v",F64),LF]),qVar"state"),
15636                  ITE(Mop(Not,
15637                          Apply
15638                            (Const("exceptionSignalled",ATy(qTy,bTy)),
15639                             qVar"s0")),
15640                      Let(TP[Var("v",F32),qVar"s"],
15641                          CS(TP[Bop(BXor,EX(Var("v",F64),LN 2,LN 2,F1),
15642                                    Apply
15643                                      (Const("BigEndianCPU",ATy(qTy,F1)),
15644                                       qVar"state")),Var("v0",FTy 2)],
15645                             [(TP[LW(0,1),LW(0,2)],
15646                               TP[EX(Var("v2",F64),LN 31,LN 0,F32),
15647                                  qVar"s0"]),
15648                              (TP[LW(0,1),LW(1,2)],
15649                               TP[CC[EX(Apply
15650                                          (Call
15651                                             ("GPR",ATy(qTy,F64),
15652                                              Var("rt",FTy 5)),qVar"s0"),
15653                                        LN 31,LN 24,F8),
15654                                     EX(Var("v2",F64),LN 31,LN 8,FTy 24)],
15655                                  qVar"s0"]),
15656                              (TP[LW(0,1),LW(2,2)],
15657                               TP[CC[EX(Apply
15658                                          (Call
15659                                             ("GPR",ATy(qTy,F64),
15660                                              Var("rt",FTy 5)),qVar"s0"),
15661                                        LN 31,LN 16,F16),
15662                                     EX(Var("v2",F64),LN 31,LN 16,F16)],
15663                                  qVar"s0"]),
15664                              (TP[LW(0,1),LW(3,2)],
15665                               TP[CC[EX(Apply
15666                                          (Call
15667                                             ("GPR",ATy(qTy,F64),
15668                                              Var("rt",FTy 5)),qVar"s0"),
15669                                        LN 31,LN 8,FTy 24),
15670                                     EX(Var("v2",F64),LN 31,LN 24,F8)],
15671                                  qVar"s0"]),
15672                              (TP[LW(1,1),LW(0,2)],
15673                               TP[EX(Var("v2",F64),LN 63,LN 32,F32),
15674                                  qVar"s0"]),
15675                              (TP[LW(1,1),LW(1,2)],
15676                               TP[CC[EX(Apply
15677                                          (Call
15678                                             ("GPR",ATy(qTy,F64),
15679                                              Var("rt",FTy 5)),qVar"s0"),
15680                                        LN 31,LN 24,F8),
15681                                     EX(Var("v2",F64),LN 63,LN 40,FTy 24)],
15682                                  qVar"s0"]),
15683                              (TP[LW(1,1),LW(2,2)],
15684                               TP[CC[EX(Apply
15685                                          (Call
15686                                             ("GPR",ATy(qTy,F64),
15687                                              Var("rt",FTy 5)),qVar"s0"),
15688                                        LN 31,LN 16,F16),
15689                                     EX(Var("v2",F64),LN 63,LN 48,F16)],
15690                                  qVar"s0"]),
15691                              (TP[LW(1,1),LW(3,2)],
15692                               TP[CC[EX(Apply
15693                                          (Call
15694                                             ("GPR",ATy(qTy,F64),
15695                                              Var("rt",FTy 5)),qVar"s0"),
15696                                        LN 31,LN 8,FTy 24),
15697                                     EX(Var("v2",F64),LN 63,LN 56,F8)],
15698                                  qVar"s0"])]),
15699                          Apply
15700                            (Call
15701                               ("write'GPR",ATy(qTy,qTy),
15702                                TP[Mop(SE F64,Var("v",F32)),
15703                                   Var("rt",FTy 5)]),qVar"s")),qVar"s0"))))))
15704;
15705val dfn'LDL_def = Def
15706  ("dfn'LDL",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
15707   Close
15708     (qVar"state",
15709      Let(Var("v",F64),
15710          Apply
15711            (Call
15712               ("getVirtualAddress",ATy(qTy,F64),
15713                Bop(Add,Mop(SE F64,Var("offset",F16)),
15714                    Apply
15715                      (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
15716                       qVar"state"))),qVar"state"),
15717          Let(Var("v0",FTy 3),
15718              Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3),
15719                  REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"),
15720                      LN 3,FTy 3)),
15721              Let(TP[Var("v1",F64),qVar"s"],
15722                  Apply
15723                    (Call
15724                       ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
15725                        TP[Const("DOUBLEWORD",FTy 3),Var("v0",FTy 3),LF,
15726                           Var("v",F64),LF]),qVar"state"),
15727                  ITE(Mop(Not,
15728                          Apply
15729                            (Const("exceptionSignalled",ATy(qTy,bTy)),
15730                             qVar"s")),
15731                      Let(TP[Var("v",F64),qVar"s"],
15732                          CS(Var("v0",FTy 3),
15733                             [(LW(0,3),
15734                               TP[CC[EX(Var("v1",F64),LN 7,LN 0,F8),
15735                                     EX(Apply
15736                                          (Call
15737                                             ("GPR",ATy(qTy,F64),
15738                                              Var("rt",FTy 5)),qVar"s"),
15739                                        LN 55,LN 0,FTy 56)],qVar"s"]),
15740                              (LW(1,3),
15741                               TP[CC[EX(Var("v1",F64),LN 15,LN 0,F16),
15742                                     EX(Apply
15743                                          (Call
15744                                             ("GPR",ATy(qTy,F64),
15745                                              Var("rt",FTy 5)),qVar"s"),
15746                                        LN 47,LN 0,FTy 48)],qVar"s"]),
15747                              (LW(2,3),
15748                               TP[CC[EX(Var("v1",F64),LN 23,LN 0,FTy 24),
15749                                     EX(Apply
15750                                          (Call
15751                                             ("GPR",ATy(qTy,F64),
15752                                              Var("rt",FTy 5)),qVar"s"),
15753                                        LN 39,LN 0,FTy 40)],qVar"s"]),
15754                              (LW(3,3),
15755                               TP[CC[EX(Var("v1",F64),LN 31,LN 0,F32),
15756                                     EX(Apply
15757                                          (Call
15758                                             ("GPR",ATy(qTy,F64),
15759                                              Var("rt",FTy 5)),qVar"s"),
15760                                        LN 31,LN 0,F32)],qVar"s"]),
15761                              (LW(4,3),
15762                               TP[CC[EX(Var("v1",F64),LN 39,LN 0,FTy 40),
15763                                     EX(Apply
15764                                          (Call
15765                                             ("GPR",ATy(qTy,F64),
15766                                              Var("rt",FTy 5)),qVar"s"),
15767                                        LN 23,LN 0,FTy 24)],qVar"s"]),
15768                              (LW(5,3),
15769                               TP[CC[EX(Var("v1",F64),LN 47,LN 0,FTy 48),
15770                                     EX(Apply
15771                                          (Call
15772                                             ("GPR",ATy(qTy,F64),
15773                                              Var("rt",FTy 5)),qVar"s"),
15774                                        LN 15,LN 0,F16)],qVar"s"]),
15775                              (LW(6,3),
15776                               TP[CC[EX(Var("v1",F64),LN 55,LN 0,FTy 56),
15777                                     EX(Apply
15778                                          (Call
15779                                             ("GPR",ATy(qTy,F64),
15780                                              Var("rt",FTy 5)),qVar"s"),
15781                                        LN 7,LN 0,F8)],qVar"s"]),
15782                              (LW(7,3),
15783                               TP[EX(Var("v1",F64),LN 63,LN 0,F64),qVar"s"])]),
15784                          Apply
15785                            (Call
15786                               ("write'GPR",ATy(qTy,qTy),
15787                                TP[Var("v",F64),Var("rt",FTy 5)]),qVar"s")),
15788                      qVar"s"))))))
15789;
15790val dfn'LDR_def = Def
15791  ("dfn'LDR",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
15792   Close
15793     (qVar"state",
15794      Let(Var("v",F64),
15795          Apply
15796            (Call
15797               ("getVirtualAddress",ATy(qTy,F64),
15798                Bop(Add,Mop(SE F64,Var("offset",F16)),
15799                    Apply
15800                      (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
15801                       qVar"state"))),qVar"state"),
15802          Let(Var("v0",FTy 3),
15803              Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3),
15804                  REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"),
15805                      LN 3,FTy 3)),
15806              Let(TP[Var("v1",F64),qVar"s"],
15807                  Apply
15808                    (Call
15809                       ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
15810                        TP[Const("DOUBLEWORD",FTy 3),
15811                           Bop(Sub,Const("DOUBLEWORD",FTy 3),
15812                               Var("v0",FTy 3)),LF,Var("v",F64),LF]),
15813                     qVar"state"),
15814                  ITE(Mop(Not,
15815                          Apply
15816                            (Const("exceptionSignalled",ATy(qTy,bTy)),
15817                             qVar"s")),
15818                      Let(TP[Var("v",F64),qVar"s"],
15819                          CS(Var("v0",FTy 3),
15820                             [(LW(0,3),
15821                               TP[EX(Var("v1",F64),LN 63,LN 0,F64),qVar"s"]),
15822                              (LW(1,3),
15823                               TP[CC[EX(Apply
15824                                          (Call
15825                                             ("GPR",ATy(qTy,F64),
15826                                              Var("rt",FTy 5)),qVar"s"),
15827                                        LN 63,LN 56,F8),
15828                                     EX(Var("v1",F64),LN 63,LN 8,FTy 56)],
15829                                  qVar"s"]),
15830                              (LW(2,3),
15831                               TP[CC[EX(Apply
15832                                          (Call
15833                                             ("GPR",ATy(qTy,F64),
15834                                              Var("rt",FTy 5)),qVar"s"),
15835                                        LN 63,LN 48,F16),
15836                                     EX(Var("v1",F64),LN 63,LN 16,FTy 48)],
15837                                  qVar"s"]),
15838                              (LW(3,3),
15839                               TP[CC[EX(Apply
15840                                          (Call
15841                                             ("GPR",ATy(qTy,F64),
15842                                              Var("rt",FTy 5)),qVar"s"),
15843                                        LN 63,LN 40,FTy 24),
15844                                     EX(Var("v1",F64),LN 63,LN 24,FTy 40)],
15845                                  qVar"s"]),
15846                              (LW(4,3),
15847                               TP[CC[EX(Apply
15848                                          (Call
15849                                             ("GPR",ATy(qTy,F64),
15850                                              Var("rt",FTy 5)),qVar"s"),
15851                                        LN 63,LN 32,F32),
15852                                     EX(Var("v1",F64),LN 63,LN 32,F32)],
15853                                  qVar"s"]),
15854                              (LW(5,3),
15855                               TP[CC[EX(Apply
15856                                          (Call
15857                                             ("GPR",ATy(qTy,F64),
15858                                              Var("rt",FTy 5)),qVar"s"),
15859                                        LN 63,LN 24,FTy 40),
15860                                     EX(Var("v1",F64),LN 63,LN 40,FTy 24)],
15861                                  qVar"s"]),
15862                              (LW(6,3),
15863                               TP[CC[EX(Apply
15864                                          (Call
15865                                             ("GPR",ATy(qTy,F64),
15866                                              Var("rt",FTy 5)),qVar"s"),
15867                                        LN 63,LN 16,FTy 48),
15868                                     EX(Var("v1",F64),LN 63,LN 48,F16)],
15869                                  qVar"s"]),
15870                              (LW(7,3),
15871                               TP[CC[EX(Apply
15872                                          (Call
15873                                             ("GPR",ATy(qTy,F64),
15874                                              Var("rt",FTy 5)),qVar"s"),
15875                                        LN 63,LN 8,FTy 56),
15876                                     EX(Var("v1",F64),LN 63,LN 56,F8)],
15877                                  qVar"s"])]),
15878                          Apply
15879                            (Call
15880                               ("write'GPR",ATy(qTy,qTy),
15881                                TP[Var("v",F64),Var("rt",FTy 5)]),qVar"s")),
15882                      qVar"s"))))))
15883;
15884val dfn'SB_def = Def
15885  ("dfn'SB",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
15886   Close
15887     (qVar"state",
15888      Let(Var("v",F64),
15889          Apply
15890            (Call
15891               ("getVirtualAddress",ATy(qTy,F64),
15892                Bop(Add,Mop(SE F64,Var("offset",F16)),
15893                    Apply
15894                      (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
15895                       qVar"state"))),qVar"state"),
15896          Mop(Snd,
15897              Apply
15898                (Call
15899                   ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
15900                    TP[Const("BYTE",FTy 3),Const("BYTE",FTy 3),LF,
15901                       Bop(Lsl,
15902                           Apply
15903                             (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
15904                              qVar"state"),
15905                           Bop(Mul,LN 8,
15906                               Mop(Cast nTy,
15907                                   Bop(BXor,
15908                                       EX(Var("v",F64),LN 2,LN 0,FTy 3),
15909                                       REP(Apply
15910                                             (Const
15911                                                ("BigEndianCPU",
15912                                                 ATy(qTy,F1)),qVar"state"),
15913                                           LN 3,FTy 3))))),Var("v",F64),LF]),
15914                 qVar"state")))))
15915;
15916val dfn'SH_def = Def
15917  ("dfn'SH",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
15918   Close
15919     (qVar"state",
15920      Let(Var("v",F64),
15921          Apply
15922            (Call
15923               ("getVirtualAddress",ATy(qTy,F64),
15924                Bop(Add,Mop(SE F64,Var("offset",F16)),
15925                    Apply
15926                      (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
15927                       qVar"state"))),qVar"state"),
15928          Mop(Snd,
15929              Apply
15930                (Call
15931                   ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
15932                    TP[Const("HALFWORD",FTy 3),Const("HALFWORD",FTy 3),LT,
15933                       Bop(Lsl,
15934                           Apply
15935                             (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
15936                              qVar"state"),
15937                           Bop(Mul,LN 8,
15938                               Mop(Cast nTy,
15939                                   Bop(BXor,
15940                                       EX(Var("v",F64),LN 2,LN 0,FTy 3),
15941                                       CC[REP(Apply
15942                                                (Const
15943                                                   ("BigEndianCPU",
15944                                                    ATy(qTy,F1)),
15945                                                 qVar"state"),LN 2,FTy 2),
15946                                          LW(0,1)])))),Var("v",F64),LF]),
15947                 qVar"state")))))
15948;
15949val storeWord_def = Def
15950  ("storeWord",
15951   TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),bVar"cond"],
15952   Close
15953     (qVar"state",
15954      Let(Var("v",F64),
15955          Apply
15956            (Call
15957               ("getVirtualAddress",ATy(qTy,F64),
15958                Bop(Add,Mop(SE F64,Var("offset",F16)),
15959                    Apply
15960                      (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
15961                       qVar"state"))),qVar"state"),
15962          Apply
15963            (Call
15964               ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
15965                TP[Const("WORD",FTy 3),Const("WORD",FTy 3),LT,
15966                   Bop(Lsl,
15967                       Apply
15968                         (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
15969                          qVar"state"),
15970                       Bop(Mul,LN 8,
15971                           Mop(Cast nTy,
15972                               Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3),
15973                                   CC[Apply
15974                                        (Const("BigEndianCPU",ATy(qTy,F1)),
15975                                         qVar"state"),LW(0,2)])))),
15976                   Var("v",F64),bVar"cond"]),qVar"state"))))
15977;
15978val storeDoubleword_def = Def
15979  ("storeDoubleword",
15980   TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),bVar"cond"],
15981   Close
15982     (qVar"state",
15983      Apply
15984        (Call
15985           ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
15986            TP[Const("DOUBLEWORD",FTy 3),Const("DOUBLEWORD",FTy 3),LT,
15987               Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
15988               Apply
15989                 (Call
15990                    ("getVirtualAddress",ATy(qTy,F64),
15991                     Bop(Add,Mop(SE F64,Var("offset",F16)),
15992                         Apply
15993                           (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
15994                            qVar"state"))),qVar"state"),bVar"cond"]),
15995         qVar"state")))
15996;
15997val dfn'SW_def = Def
15998  ("dfn'SW",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
15999   Close
16000     (qVar"state",
16001      Mop(Snd,
16002          Apply
16003            (Call
16004               ("storeWord",ATy(qTy,PTy(bTy,qTy)),
16005                TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LF]),
16006             qVar"state"))))
16007;
16008val dfn'SD_def = Def
16009  ("dfn'SD",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
16010   Close
16011     (qVar"state",
16012      Mop(Snd,
16013          Apply
16014            (Call
16015               ("storeDoubleword",ATy(qTy,PTy(bTy,qTy)),
16016                TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LF]),
16017             qVar"state"))))
16018;
16019val dfn'SC_def = Def
16020  ("dfn'SC",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
16021   Close
16022     (qVar"state",
16023      Let(TP[bVar"v",qVar"s"],
16024          Apply
16025            (Call
16026               ("storeWord",ATy(qTy,PTy(bTy,qTy)),
16027                TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LT]),
16028             qVar"state"),
16029          ITE(Mop(Not,
16030                  Apply(Const("exceptionSignalled",ATy(qTy,bTy)),qVar"s")),
16031              Apply
16032                (Call
16033                   ("write'GPR",ATy(qTy,qTy),
16034                    TP[ITE(bVar"v",LW(1,64),LW(0,64)),Var("rt",FTy 5)]),
16035                 qVar"s"),qVar"s"))))
16036;
16037val dfn'SCD_def = Def
16038  ("dfn'SCD",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
16039   Close
16040     (qVar"state",
16041      Let(TP[bVar"v",qVar"s"],
16042          Apply
16043            (Call
16044               ("storeDoubleword",ATy(qTy,PTy(bTy,qTy)),
16045                TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LT]),
16046             qVar"state"),
16047          ITE(Mop(Not,
16048                  Apply(Const("exceptionSignalled",ATy(qTy,bTy)),qVar"s")),
16049              Apply
16050                (Call
16051                   ("write'GPR",ATy(qTy,qTy),
16052                    TP[ITE(bVar"v",LW(1,64),LW(0,64)),Var("rt",FTy 5)]),
16053                 qVar"s"),qVar"s"))))
16054;
16055val dfn'SWL_def = Def
16056  ("dfn'SWL",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
16057   Close
16058     (qVar"state",
16059      Let(Var("v",F64),
16060          Apply
16061            (Call
16062               ("getVirtualAddress",ATy(qTy,F64),
16063                Bop(Add,Mop(SE F64,Var("offset",F16)),
16064                    Apply
16065                      (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
16066                       qVar"state"))),qVar"state"),
16067          Let(Var("v0",FTy 2),
16068              Bop(BXor,EX(Var("v",F64),LN 1,LN 0,FTy 2),
16069                  REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"),
16070                      LN 2,FTy 2)),
16071              Let(TP[Var("v2",F64),qVar"s0"],
16072                  CS(Var("v0",FTy 2),
16073                     [(LW(0,2),
16074                       TP[Mop(Cast F64,
16075                              EX(Apply
16076                                   (Call
16077                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
16078                                    qVar"state"),LN 31,LN 24,F8)),
16079                          qVar"state"]),
16080                      (LW(1,2),
16081                       TP[Mop(Cast F64,
16082                              EX(Apply
16083                                   (Call
16084                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
16085                                    qVar"state"),LN 31,LN 16,F16)),
16086                          qVar"state"]),
16087                      (LW(2,2),
16088                       TP[Mop(Cast F64,
16089                              EX(Apply
16090                                   (Call
16091                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
16092                                    qVar"state"),LN 31,LN 8,FTy 24)),
16093                          qVar"state"]),
16094                      (LW(3,2),
16095                       TP[Mop(Cast F64,
16096                              EX(Apply
16097                                   (Call
16098                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
16099                                    qVar"state"),LN 31,LN 0,F32)),
16100                          qVar"state"])]),
16101                  Mop(Snd,
16102                      Apply
16103                        (Call
16104                           ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
16105                            TP[Const("WORD",FTy 3),
16106                               Mop(Cast(FTy 3),Var("v0",FTy 2)),LF,
16107                               ITE(EQ(Bop(BXor,
16108                                          EX(Var("v",F64),LN 2,LN 2,F1),
16109                                          Apply
16110                                            (Const
16111                                               ("BigEndianCPU",ATy(qTy,F1)),
16112                                             qVar"state")),LW(1,1)),
16113                                   Bop(Lsl,Var("v2",F64),LN 32),
16114                                   Var("v2",F64)),
16115                               ITE(Apply
16116                                     (Const("BigEndianMem",ATy(qTy,bTy)),
16117                                      qVar"s0"),Var("v",F64),
16118                                   Bop(BAnd,Var("v",F64),
16119                                       Mop(BNot,LW(3,64)))),LF]),qVar"s0")))))))
16120;
16121val dfn'SWR_def = Def
16122  ("dfn'SWR",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
16123   Close
16124     (qVar"state",
16125      Let(Var("v",F64),
16126          Apply
16127            (Call
16128               ("getVirtualAddress",ATy(qTy,F64),
16129                Bop(Add,Mop(SE F64,Var("offset",F16)),
16130                    Apply
16131                      (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
16132                       qVar"state"))),qVar"state"),
16133          Let(Var("v0",FTy 2),
16134              Bop(BXor,EX(Var("v",F64),LN 1,LN 0,FTy 2),
16135                  REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"),
16136                      LN 2,FTy 2)),
16137              Let(TP[Var("v1",F64),qVar"s"],
16138                  CS(TP[Bop(BXor,EX(Var("v",F64),LN 2,LN 2,F1),
16139                            Apply
16140                              (Const("BigEndianCPU",ATy(qTy,F1)),
16141                               qVar"state")),Var("v0",FTy 2)],
16142                     [(TP[LW(0,1),LW(0,2)],
16143                       TP[Mop(Cast F64,
16144                              EX(Apply
16145                                   (Call
16146                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
16147                                    qVar"state"),LN 31,LN 0,F32)),
16148                          qVar"state"]),
16149                      (TP[LW(0,1),LW(1,2)],
16150                       TP[Bop(Lsl,
16151                              Mop(Cast F64,
16152                                  EX(Apply
16153                                       (Call
16154                                          ("GPR",ATy(qTy,F64),
16155                                           Var("rt",FTy 5)),qVar"state"),
16156                                     LN 23,LN 0,FTy 24)),LN 8),qVar"state"]),
16157                      (TP[LW(0,1),LW(2,2)],
16158                       TP[Bop(Lsl,
16159                              Mop(Cast F64,
16160                                  EX(Apply
16161                                       (Call
16162                                          ("GPR",ATy(qTy,F64),
16163                                           Var("rt",FTy 5)),qVar"state"),
16164                                     LN 15,LN 0,F16)),LN 16),qVar"state"]),
16165                      (TP[LW(0,1),LW(3,2)],
16166                       TP[Bop(Lsl,
16167                              Mop(Cast F64,
16168                                  EX(Apply
16169                                       (Call
16170                                          ("GPR",ATy(qTy,F64),
16171                                           Var("rt",FTy 5)),qVar"state"),
16172                                     LN 7,LN 0,F8)),LN 24),qVar"state"]),
16173                      (TP[LW(1,1),LW(0,2)],
16174                       TP[Bop(Lsl,
16175                              Mop(Cast F64,
16176                                  EX(Apply
16177                                       (Call
16178                                          ("GPR",ATy(qTy,F64),
16179                                           Var("rt",FTy 5)),qVar"state"),
16180                                     LN 31,LN 0,F32)),LN 32),qVar"state"]),
16181                      (TP[LW(1,1),LW(1,2)],
16182                       TP[Bop(Lsl,
16183                              Mop(Cast F64,
16184                                  EX(Apply
16185                                       (Call
16186                                          ("GPR",ATy(qTy,F64),
16187                                           Var("rt",FTy 5)),qVar"state"),
16188                                     LN 23,LN 0,FTy 24)),LN 40),
16189                          qVar"state"]),
16190                      (TP[LW(1,1),LW(2,2)],
16191                       TP[Bop(Lsl,
16192                              Mop(Cast F64,
16193                                  EX(Apply
16194                                       (Call
16195                                          ("GPR",ATy(qTy,F64),
16196                                           Var("rt",FTy 5)),qVar"state"),
16197                                     LN 15,LN 0,F16)),LN 48),qVar"state"]),
16198                      (TP[LW(1,1),LW(3,2)],
16199                       TP[Bop(Lsl,
16200                              Mop(Cast F64,
16201                                  EX(Apply
16202                                       (Call
16203                                          ("GPR",ATy(qTy,F64),
16204                                           Var("rt",FTy 5)),qVar"state"),
16205                                     LN 7,LN 0,F8)),LN 56),qVar"state"])]),
16206                  Mop(Snd,
16207                      Apply
16208                        (Call
16209                           ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
16210                            TP[Const("WORD",FTy 3),
16211                               Bop(Sub,Const("WORD",FTy 3),
16212                                   Mop(Cast(FTy 3),Var("v0",FTy 2))),LF,
16213                               Var("v1",F64),
16214                               ITE(Apply
16215                                     (Const("BigEndianMem",ATy(qTy,bTy)),
16216                                      qVar"s"),
16217                                   Bop(BAnd,Var("v",F64),
16218                                       Mop(BNot,LW(3,64))),Var("v",F64)),
16219                               LF]),qVar"s")))))))
16220;
16221val dfn'SDL_def = Def
16222  ("dfn'SDL",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
16223   Close
16224     (qVar"state",
16225      Let(Var("v",F64),
16226          Apply
16227            (Call
16228               ("getVirtualAddress",ATy(qTy,F64),
16229                Bop(Add,Mop(SE F64,Var("offset",F16)),
16230                    Apply
16231                      (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
16232                       qVar"state"))),qVar"state"),
16233          Let(Var("v0",FTy 3),
16234              Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3),
16235                  REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"),
16236                      LN 3,FTy 3)),
16237              Let(TP[Var("v1",F64),qVar"s"],
16238                  CS(Var("v0",FTy 3),
16239                     [(LW(0,3),
16240                       TP[Mop(Cast F64,
16241                              EX(Apply
16242                                   (Call
16243                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
16244                                    qVar"state"),LN 63,LN 56,F8)),
16245                          qVar"state"]),
16246                      (LW(1,3),
16247                       TP[Mop(Cast F64,
16248                              EX(Apply
16249                                   (Call
16250                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
16251                                    qVar"state"),LN 63,LN 48,F16)),
16252                          qVar"state"]),
16253                      (LW(2,3),
16254                       TP[Mop(Cast F64,
16255                              EX(Apply
16256                                   (Call
16257                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
16258                                    qVar"state"),LN 63,LN 40,FTy 24)),
16259                          qVar"state"]),
16260                      (LW(3,3),
16261                       TP[Mop(Cast F64,
16262                              EX(Apply
16263                                   (Call
16264                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
16265                                    qVar"state"),LN 63,LN 32,F32)),
16266                          qVar"state"]),
16267                      (LW(4,3),
16268                       TP[Mop(Cast F64,
16269                              EX(Apply
16270                                   (Call
16271                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
16272                                    qVar"state"),LN 63,LN 24,FTy 40)),
16273                          qVar"state"]),
16274                      (LW(5,3),
16275                       TP[Mop(Cast F64,
16276                              EX(Apply
16277                                   (Call
16278                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
16279                                    qVar"state"),LN 63,LN 16,FTy 48)),
16280                          qVar"state"]),
16281                      (LW(6,3),
16282                       TP[Mop(Cast F64,
16283                              EX(Apply
16284                                   (Call
16285                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
16286                                    qVar"state"),LN 63,LN 8,FTy 56)),
16287                          qVar"state"]),
16288                      (LW(7,3),
16289                       TP[Apply
16290                            (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
16291                             qVar"state"),qVar"state"])]),
16292                  Mop(Snd,
16293                      Apply
16294                        (Call
16295                           ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
16296                            TP[Const("DOUBLEWORD",FTy 3),Var("v0",FTy 3),
16297                               LF,Var("v1",F64),
16298                               ITE(Apply
16299                                     (Const("BigEndianMem",ATy(qTy,bTy)),
16300                                      qVar"s"),Var("v",F64),
16301                                   Bop(BAnd,Var("v",F64),
16302                                       Mop(BNot,LW(7,64)))),LF]),qVar"s")))))))
16303;
16304val dfn'SDR_def = Def
16305  ("dfn'SDR",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
16306   Close
16307     (qVar"state",
16308      Let(Var("v",F64),
16309          Apply
16310            (Call
16311               ("getVirtualAddress",ATy(qTy,F64),
16312                Bop(Add,Mop(SE F64,Var("offset",F16)),
16313                    Apply
16314                      (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
16315                       qVar"state"))),qVar"state"),
16316          Let(Var("v0",FTy 3),
16317              Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3),
16318                  REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"),
16319                      LN 3,FTy 3)),
16320              Let(TP[Var("v1",F64),qVar"s"],
16321                  CS(Var("v0",FTy 3),
16322                     [(LW(0,3),
16323                       TP[Apply
16324                            (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
16325                             qVar"state"),qVar"state"]),
16326                      (LW(1,3),
16327                       TP[Bop(Lsl,
16328                              Mop(Cast F64,
16329                                  EX(Apply
16330                                       (Call
16331                                          ("GPR",ATy(qTy,F64),
16332                                           Var("rt",FTy 5)),qVar"state"),
16333                                     LN 55,LN 0,FTy 56)),LN 8),qVar"state"]),
16334                      (LW(2,3),
16335                       TP[Bop(Lsl,
16336                              Mop(Cast F64,
16337                                  EX(Apply
16338                                       (Call
16339                                          ("GPR",ATy(qTy,F64),
16340                                           Var("rt",FTy 5)),qVar"state"),
16341                                     LN 47,LN 0,FTy 48)),LN 16),
16342                          qVar"state"]),
16343                      (LW(3,3),
16344                       TP[Bop(Lsl,
16345                              Mop(Cast F64,
16346                                  EX(Apply
16347                                       (Call
16348                                          ("GPR",ATy(qTy,F64),
16349                                           Var("rt",FTy 5)),qVar"state"),
16350                                     LN 39,LN 0,FTy 40)),LN 24),
16351                          qVar"state"]),
16352                      (LW(4,3),
16353                       TP[Bop(Lsl,
16354                              Mop(Cast F64,
16355                                  EX(Apply
16356                                       (Call
16357                                          ("GPR",ATy(qTy,F64),
16358                                           Var("rt",FTy 5)),qVar"state"),
16359                                     LN 31,LN 0,F32)),LN 32),qVar"state"]),
16360                      (LW(5,3),
16361                       TP[Bop(Lsl,
16362                              Mop(Cast F64,
16363                                  EX(Apply
16364                                       (Call
16365                                          ("GPR",ATy(qTy,F64),
16366                                           Var("rt",FTy 5)),qVar"state"),
16367                                     LN 23,LN 0,FTy 24)),LN 40),
16368                          qVar"state"]),
16369                      (LW(6,3),
16370                       TP[Bop(Lsl,
16371                              Mop(Cast F64,
16372                                  EX(Apply
16373                                       (Call
16374                                          ("GPR",ATy(qTy,F64),
16375                                           Var("rt",FTy 5)),qVar"state"),
16376                                     LN 15,LN 0,F16)),LN 48),qVar"state"]),
16377                      (LW(7,3),
16378                       TP[Bop(Lsl,
16379                              Mop(Cast F64,
16380                                  EX(Apply
16381                                       (Call
16382                                          ("GPR",ATy(qTy,F64),
16383                                           Var("rt",FTy 5)),qVar"state"),
16384                                     LN 7,LN 0,F8)),LN 56),qVar"state"])]),
16385                  Mop(Snd,
16386                      Apply
16387                        (Call
16388                           ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
16389                            TP[Const("DOUBLEWORD",FTy 3),
16390                               Bop(Sub,Const("DOUBLEWORD",FTy 3),
16391                                   Var("v0",FTy 3)),LF,Var("v1",F64),
16392                               ITE(Apply
16393                                     (Const("BigEndianMem",ATy(qTy,bTy)),
16394                                      qVar"s"),
16395                                   Bop(BAnd,Var("v",F64),
16396                                       Mop(BNot,LW(7,64))),Var("v",F64)),
16397                               LF]),qVar"s")))))))
16398;
16399val dfn'SYNC_def = Def ("dfn'SYNC",Var("stype",FTy 5),LU)
16400;
16401val dfn'BREAK_def = Def
16402  ("dfn'BREAK",qVar"state",
16403   Apply
16404     (Call("SignalException",ATy(qTy,qTy),LC("Bp",CTy"ExceptionType")),
16405      qVar"state"))
16406;
16407val dfn'SYSCALL_def = Def
16408  ("dfn'SYSCALL",qVar"state",
16409   Apply
16410     (Call("SignalException",ATy(qTy,qTy),LC("Sys",CTy"ExceptionType")),
16411      qVar"state"))
16412;
16413val dfn'MTC0_def = Def
16414  ("dfn'MTC0",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)],
16415   Close
16416     (qVar"state",
16417      ITE(Bop(Or,
16418              Dest
16419                ("CU0",bTy,
16420                 Dest
16421                   ("Status",CTy"StatusRegister",
16422                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
16423              Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state")),
16424          Apply
16425            (Call
16426               ("write'CPR",ATy(qTy,qTy),
16427                TP[Apply
16428                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
16429                   LN 0,Var("rd",FTy 5),Var("sel",FTy 3)]),qVar"state"),
16430          Apply
16431            (Call
16432               ("SignalException",ATy(qTy,qTy),
16433                LC("CpU",CTy"ExceptionType")),qVar"state"))))
16434;
16435val dfn'DMTC0_def = Def
16436  ("dfn'DMTC0",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)],
16437   Close
16438     (qVar"state",
16439      ITE(Bop(Or,
16440              Dest
16441                ("CU0",bTy,
16442                 Dest
16443                   ("Status",CTy"StatusRegister",
16444                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
16445              Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state")),
16446          Apply
16447            (Call
16448               ("write'CPR",ATy(qTy,qTy),
16449                TP[Apply
16450                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
16451                   LN 0,Var("rd",FTy 5),Var("sel",FTy 3)]),qVar"state"),
16452          Apply
16453            (Call
16454               ("SignalException",ATy(qTy,qTy),
16455                LC("CpU",CTy"ExceptionType")),qVar"state"))))
16456;
16457val dfn'MFC0_def = Def
16458  ("dfn'MFC0",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)],
16459   Close
16460     (qVar"state",
16461      ITE(Bop(Or,
16462              Dest
16463                ("CU0",bTy,
16464                 Dest
16465                   ("Status",CTy"StatusRegister",
16466                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
16467              Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state")),
16468          Let(TP[Var("v",F64),qVar"s"],
16469              Apply
16470                (Call
16471                   ("CPR",ATy(qTy,PTy(F64,qTy)),
16472                    TP[LN 0,Var("rd",FTy 5),Var("sel",FTy 3)]),qVar"state"),
16473              Apply
16474                (Call
16475                   ("write'GPR",ATy(qTy,qTy),
16476                    TP[Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32)),
16477                       Var("rt",FTy 5)]),qVar"s")),
16478          Apply
16479            (Call
16480               ("SignalException",ATy(qTy,qTy),
16481                LC("CpU",CTy"ExceptionType")),qVar"state"))))
16482;
16483val dfn'DMFC0_def = Def
16484  ("dfn'DMFC0",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)],
16485   Close
16486     (qVar"state",
16487      ITE(Bop(Or,
16488              Dest
16489                ("CU0",bTy,
16490                 Dest
16491                   ("Status",CTy"StatusRegister",
16492                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
16493              Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state")),
16494          Let(TP[Var("v",F64),qVar"s"],
16495              Apply
16496                (Call
16497                   ("CPR",ATy(qTy,PTy(F64,qTy)),
16498                    TP[LN 0,Var("rd",FTy 5),Var("sel",FTy 3)]),qVar"state"),
16499              Apply
16500                (Call
16501                   ("write'GPR",ATy(qTy,qTy),
16502                    TP[Var("v",F64),Var("rt",FTy 5)]),qVar"s")),
16503          Apply
16504            (Call
16505               ("SignalException",ATy(qTy,qTy),
16506                LC("CpU",CTy"ExceptionType")),qVar"state"))))
16507;
16508val dfn'J_def = Def
16509  ("dfn'J",Var("instr_index",FTy 26),
16510   Close
16511     (qVar"state",
16512      Apply
16513        (Call
16514           ("write'BranchTo",ATy(qTy,qTy),
16515            Mop(Some,
16516                CC[EX(Apply(Const("PC",ATy(qTy,F64)),qVar"state"),LN 63,
16517                      LN 28,FTy 36),Var("instr_index",FTy 26),LW(0,2)])),
16518         qVar"state")))
16519;
16520val dfn'JAL_def = Def
16521  ("dfn'JAL",Var("instr_index",FTy 26),
16522   Close
16523     (qVar"state",
16524      Let(TP[Var("v",F64),qVar"s"],
16525          Let(qVar"s0",
16526              Apply
16527                (Call
16528                   ("write'GPR",ATy(qTy,qTy),
16529                    TP[Bop(Add,
16530                           Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
16531                           LW(8,64)),LW(31,5)]),qVar"state"),
16532              TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]),
16533          Apply
16534            (Call
16535               ("write'BranchTo",ATy(qTy,qTy),
16536                Mop(Some,
16537                    CC[EX(Var("v",F64),LN 63,LN 28,FTy 36),
16538                       Var("instr_index",FTy 26),LW(0,2)])),qVar"s"))))
16539;
16540val dfn'JALR_def = Def
16541  ("dfn'JALR",TP[Var("rs",FTy 5),Var("rd",FTy 5)],
16542   Close
16543     (qVar"state",
16544      Apply
16545        (Call
16546           ("write'BranchTo",ATy(qTy,qTy),
16547            Mop(Some,
16548                Apply
16549                  (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"))),
16550         Apply
16551           (Call
16552              ("write'GPR",ATy(qTy,qTy),
16553               TP[Bop(Add,Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
16554                      LW(8,64)),Var("rd",FTy 5)]),qVar"state"))))
16555;
16556val dfn'JR_def = Def
16557  ("dfn'JR",Var("rs",FTy 5),
16558   Close
16559     (qVar"state",
16560      Apply
16561        (Call
16562           ("write'BranchTo",ATy(qTy,qTy),
16563            Mop(Some,
16564                Apply
16565                  (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"))),
16566         qVar"state")))
16567;
16568val dfn'BEQ_def = Def
16569  ("dfn'BEQ",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
16570   Close
16571     (qVar"state",
16572      ITE(EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
16573             Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
16574          Apply
16575            (Call
16576               ("write'BranchTo",ATy(qTy,qTy),
16577                Mop(Some,
16578                    Bop(Add,
16579                        Bop(Add,
16580                            Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
16581                            LW(4,64)),
16582                        Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))),
16583             qVar"state"),
16584          Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"))))
16585;
16586val dfn'BNE_def = Def
16587  ("dfn'BNE",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
16588   Close
16589     (qVar"state",
16590      ITE(Mop(Not,
16591              EQ(Apply
16592                   (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
16593                 Apply
16594                   (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"))),
16595          Apply
16596            (Call
16597               ("write'BranchTo",ATy(qTy,qTy),
16598                Mop(Some,
16599                    Bop(Add,
16600                        Bop(Add,
16601                            Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
16602                            LW(4,64)),
16603                        Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))),
16604             qVar"state"),
16605          Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"))))
16606;
16607val dfn'BLEZ_def = Def
16608  ("dfn'BLEZ",TP[Var("rs",FTy 5),Var("offset",F16)],
16609   Close
16610     (qVar"state",
16611      ITE(Bop(Le,
16612              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
16613              LW(0,64)),
16614          Apply
16615            (Call
16616               ("write'BranchTo",ATy(qTy,qTy),
16617                Mop(Some,
16618                    Bop(Add,
16619                        Bop(Add,
16620                            Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
16621                            LW(4,64)),
16622                        Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))),
16623             qVar"state"),
16624          Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"))))
16625;
16626val dfn'BGTZ_def = Def
16627  ("dfn'BGTZ",TP[Var("rs",FTy 5),Var("offset",F16)],
16628   Close
16629     (qVar"state",
16630      ITE(Bop(Gt,
16631              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
16632              LW(0,64)),
16633          Apply
16634            (Call
16635               ("write'BranchTo",ATy(qTy,qTy),
16636                Mop(Some,
16637                    Bop(Add,
16638                        Bop(Add,
16639                            Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
16640                            LW(4,64)),
16641                        Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))),
16642             qVar"state"),
16643          Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"))))
16644;
16645val dfn'BLTZ_def = Def
16646  ("dfn'BLTZ",TP[Var("rs",FTy 5),Var("offset",F16)],
16647   Close
16648     (qVar"state",
16649      ITE(Bop(Lt,
16650              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
16651              LW(0,64)),
16652          Apply
16653            (Call
16654               ("write'BranchTo",ATy(qTy,qTy),
16655                Mop(Some,
16656                    Bop(Add,
16657                        Bop(Add,
16658                            Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
16659                            LW(4,64)),
16660                        Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))),
16661             qVar"state"),
16662          Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"))))
16663;
16664val dfn'BGEZ_def = Def
16665  ("dfn'BGEZ",TP[Var("rs",FTy 5),Var("offset",F16)],
16666   Close
16667     (qVar"state",
16668      ITE(Bop(Ge,
16669              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
16670              LW(0,64)),
16671          Apply
16672            (Call
16673               ("write'BranchTo",ATy(qTy,qTy),
16674                Mop(Some,
16675                    Bop(Add,
16676                        Bop(Add,
16677                            Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
16678                            LW(4,64)),
16679                        Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))),
16680             qVar"state"),
16681          Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"))))
16682;
16683val dfn'BLTZAL_def = Def
16684  ("dfn'BLTZAL",TP[Var("rs",FTy 5),Var("offset",F16)],
16685   Close
16686     (qVar"state",
16687      Let(qVar"s",
16688          Apply
16689            (Call
16690               ("write'GPR",ATy(qTy,qTy),
16691                TP[Bop(Add,Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
16692                       LW(8,64)),LW(31,5)]),qVar"state"),
16693          ITE(Bop(Lt,
16694                  Apply
16695                    (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
16696                  LW(0,64)),
16697              Apply
16698                (Call
16699                   ("write'BranchTo",ATy(qTy,qTy),
16700                    Mop(Some,
16701                        Bop(Add,
16702                            Bop(Add,
16703                                Apply(Const("PC",ATy(qTy,F64)),qVar"s"),
16704                                LW(4,64)),
16705                            Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))),
16706                 qVar"s"),Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"s")))))
16707;
16708val dfn'BGEZAL_def = Def
16709  ("dfn'BGEZAL",TP[Var("rs",FTy 5),Var("offset",F16)],
16710   Close
16711     (qVar"state",
16712      Let(qVar"s",
16713          Apply
16714            (Call
16715               ("write'GPR",ATy(qTy,qTy),
16716                TP[Bop(Add,Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
16717                       LW(8,64)),LW(31,5)]),qVar"state"),
16718          ITE(Bop(Ge,
16719                  Apply
16720                    (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
16721                  LW(0,64)),
16722              Apply
16723                (Call
16724                   ("write'BranchTo",ATy(qTy,qTy),
16725                    Mop(Some,
16726                        Bop(Add,
16727                            Bop(Add,
16728                                Apply(Const("PC",ATy(qTy,F64)),qVar"s"),
16729                                LW(4,64)),
16730                            Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))),
16731                 qVar"s"),Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"s")))))
16732;
16733val dfn'BEQL_def = Def
16734  ("dfn'BEQL",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
16735   Close
16736     (qVar"state",
16737      ITE(EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
16738             Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
16739          Apply
16740            (Call
16741               ("write'BranchTo",ATy(qTy,qTy),
16742                Mop(Some,
16743                    Bop(Add,
16744                        Bop(Add,
16745                            Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
16746                            LW(4,64)),
16747                        Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))),
16748             qVar"state"),
16749          Let(TP[Var("v",F64),qVar"s"],
16750              Let(qVar"s0",
16751                  Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"),
16752                  TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]),
16753              Apply
16754                (Call
16755                   ("write'PC",ATy(qTy,qTy),Bop(Add,Var("v",F64),LW(4,64))),
16756                 qVar"s")))))
16757;
16758val dfn'BNEL_def = Def
16759  ("dfn'BNEL",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
16760   Close
16761     (qVar"state",
16762      ITE(Mop(Not,
16763              EQ(Apply
16764                   (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
16765                 Apply
16766                   (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"))),
16767          Apply
16768            (Call
16769               ("write'BranchTo",ATy(qTy,qTy),
16770                Mop(Some,
16771                    Bop(Add,
16772                        Bop(Add,
16773                            Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
16774                            LW(4,64)),
16775                        Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))),
16776             qVar"state"),
16777          Let(TP[Var("v",F64),qVar"s"],
16778              Let(qVar"s0",
16779                  Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"),
16780                  TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]),
16781              Apply
16782                (Call
16783                   ("write'PC",ATy(qTy,qTy),Bop(Add,Var("v",F64),LW(4,64))),
16784                 qVar"s")))))
16785;
16786val dfn'BLEZL_def = Def
16787  ("dfn'BLEZL",TP[Var("rs",FTy 5),Var("offset",F16)],
16788   Close
16789     (qVar"state",
16790      ITE(Bop(Le,
16791              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
16792              LW(0,64)),
16793          Apply
16794            (Call
16795               ("write'BranchTo",ATy(qTy,qTy),
16796                Mop(Some,
16797                    Bop(Add,
16798                        Bop(Add,
16799                            Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
16800                            LW(4,64)),
16801                        Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))),
16802             qVar"state"),
16803          Let(TP[Var("v",F64),qVar"s"],
16804              Let(qVar"s0",
16805                  Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"),
16806                  TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]),
16807              Apply
16808                (Call
16809                   ("write'PC",ATy(qTy,qTy),Bop(Add,Var("v",F64),LW(4,64))),
16810                 qVar"s")))))
16811;
16812val dfn'BGTZL_def = Def
16813  ("dfn'BGTZL",TP[Var("rs",FTy 5),Var("offset",F16)],
16814   Close
16815     (qVar"state",
16816      ITE(Bop(Gt,
16817              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
16818              LW(0,64)),
16819          Apply
16820            (Call
16821               ("write'BranchTo",ATy(qTy,qTy),
16822                Mop(Some,
16823                    Bop(Add,
16824                        Bop(Add,
16825                            Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
16826                            LW(4,64)),
16827                        Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))),
16828             qVar"state"),
16829          Let(TP[Var("v",F64),qVar"s"],
16830              Let(qVar"s0",
16831                  Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"),
16832                  TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]),
16833              Apply
16834                (Call
16835                   ("write'PC",ATy(qTy,qTy),Bop(Add,Var("v",F64),LW(4,64))),
16836                 qVar"s")))))
16837;
16838val dfn'BLTZL_def = Def
16839  ("dfn'BLTZL",TP[Var("rs",FTy 5),Var("offset",F16)],
16840   Close
16841     (qVar"state",
16842      ITE(Bop(Lt,
16843              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
16844              LW(0,64)),
16845          Apply
16846            (Call
16847               ("write'BranchTo",ATy(qTy,qTy),
16848                Mop(Some,
16849                    Bop(Add,
16850                        Bop(Add,
16851                            Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
16852                            LW(4,64)),
16853                        Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))),
16854             qVar"state"),
16855          Let(TP[Var("v",F64),qVar"s"],
16856              Let(qVar"s0",
16857                  Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"),
16858                  TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]),
16859              Apply
16860                (Call
16861                   ("write'PC",ATy(qTy,qTy),Bop(Add,Var("v",F64),LW(4,64))),
16862                 qVar"s")))))
16863;
16864val dfn'BGEZL_def = Def
16865  ("dfn'BGEZL",TP[Var("rs",FTy 5),Var("offset",F16)],
16866   Close
16867     (qVar"state",
16868      ITE(Bop(Ge,
16869              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
16870              LW(0,64)),
16871          Apply
16872            (Call
16873               ("write'BranchTo",ATy(qTy,qTy),
16874                Mop(Some,
16875                    Bop(Add,
16876                        Bop(Add,
16877                            Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
16878                            LW(4,64)),
16879                        Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))),
16880             qVar"state"),
16881          Let(TP[Var("v",F64),qVar"s"],
16882              Let(qVar"s0",
16883                  Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"),
16884                  TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]),
16885              Apply
16886                (Call
16887                   ("write'PC",ATy(qTy,qTy),Bop(Add,Var("v",F64),LW(4,64))),
16888                 qVar"s")))))
16889;
16890val dfn'BLTZALL_def = Def
16891  ("dfn'BLTZALL",TP[Var("rs",FTy 5),Var("offset",F16)],
16892   Close
16893     (qVar"state",
16894      Let(qVar"s",
16895          Apply
16896            (Call
16897               ("write'GPR",ATy(qTy,qTy),
16898                TP[Bop(Add,Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
16899                       LW(8,64)),LW(31,5)]),qVar"state"),
16900          ITE(Bop(Lt,
16901                  Apply
16902                    (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
16903                  LW(0,64)),
16904              Apply
16905                (Call
16906                   ("write'BranchTo",ATy(qTy,qTy),
16907                    Mop(Some,
16908                        Bop(Add,
16909                            Bop(Add,
16910                                Apply(Const("PC",ATy(qTy,F64)),qVar"s"),
16911                                LW(4,64)),
16912                            Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))),
16913                 qVar"s"),
16914              Let(TP[Var("v",F64),qVar"s"],
16915                  Let(qVar"s0",
16916                      Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"s"),
16917                      TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]),
16918                  Apply
16919                    (Call
16920                       ("write'PC",ATy(qTy,qTy),
16921                        Bop(Add,Var("v",F64),LW(4,64))),qVar"s"))))))
16922;
16923val dfn'BGEZALL_def = Def
16924  ("dfn'BGEZALL",TP[Var("rs",FTy 5),Var("offset",F16)],
16925   Close
16926     (qVar"state",
16927      Let(qVar"s",
16928          Apply
16929            (Call
16930               ("write'GPR",ATy(qTy,qTy),
16931                TP[Bop(Add,Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
16932                       LW(8,64)),LW(31,5)]),qVar"state"),
16933          ITE(Bop(Ge,
16934                  Apply
16935                    (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
16936                  LW(0,64)),
16937              Apply
16938                (Call
16939                   ("write'BranchTo",ATy(qTy,qTy),
16940                    Mop(Some,
16941                        Bop(Add,
16942                            Bop(Add,
16943                                Apply(Const("PC",ATy(qTy,F64)),qVar"s"),
16944                                LW(4,64)),
16945                            Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))),
16946                 qVar"s"),
16947              Let(TP[Var("v",F64),qVar"s"],
16948                  Let(qVar"s0",
16949                      Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"s"),
16950                      TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]),
16951                  Apply
16952                    (Call
16953                       ("write'PC",ATy(qTy,qTy),
16954                        Bop(Add,Var("v",F64),LW(4,64))),qVar"s"))))))
16955;
16956val dfn'RDHWR_def = Def
16957  ("dfn'RDHWR",TP[Var("rt",FTy 5),Var("rd",FTy 5)],
16958   Close
16959     (qVar"state",
16960      ITE(Bop(Or,
16961              Dest
16962                ("CU0",bTy,
16963                 Dest
16964                   ("Status",CTy"StatusRegister",
16965                    Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
16966              Bop(Or,Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state"),
16967                  Bop(Bit,
16968                      Call
16969                        ("reg'HWREna",F32,
16970                         Dest
16971                           ("HWREna",CTy"HWREna",
16972                            Apply
16973                              (Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))),
16974                      Mop(Cast nTy,Var("rd",FTy 5))))),
16975          CS(Var("rd",FTy 5),
16976             [(LW(0,5),
16977               Apply
16978                 (Call
16979                    ("write'GPR",ATy(qTy,qTy),
16980                     TP[Mop(Cast F64,Dest("procID",F8,qVar"state")),
16981                        Var("rt",FTy 5)]),qVar"state")),
16982              (LW(2,5),
16983               Apply
16984                 (Call
16985                    ("write'GPR",ATy(qTy,qTy),
16986                     TP[Mop(SE F64,
16987                            Dest
16988                              ("Count",F32,
16989                               Apply
16990                                 (Const("CP0",ATy(qTy,CTy"CP0")),
16991                                  qVar"state"))),Var("rt",FTy 5)]),
16992                  qVar"state")),
16993              (LW(3,5),
16994               Apply
16995                 (Call
16996                    ("write'GPR",ATy(qTy,qTy),TP[LW(1,64),Var("rt",FTy 5)]),
16997                  qVar"state")),
16998              (LW(26,5),Rupd("done",TP[qVar"state",LT])),
16999              (LW(27,5),
17000               Apply(Const("resetStats",ATy(qTy,qTy)),qVar"state")),
17001              (LW(28,5),qVar"state"),
17002              (LW(29,5),
17003               Apply
17004                 (Call
17005                    ("write'GPR",ATy(qTy,qTy),
17006                     TP[Dest
17007                          ("UsrLocal",F64,
17008                           Apply
17009                             (Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")),
17010                        Var("rt",FTy 5)]),qVar"state")),
17011              (LW(30,5),
17012               Apply
17013                 (Call
17014                    ("write'GPR",ATy(qTy,qTy),
17015                     TP[Mop(Cast F64,
17016                            Bop(Sub,Dest("totalCore",nTy,qVar"state"),LN 1)),
17017                        Var("rt",FTy 5)]),qVar"state")),
17018              (AVar(FTy 5),
17019               Apply
17020                 (Call
17021                    ("SignalException",ATy(qTy,qTy),
17022                     LC("ResI",CTy"ExceptionType")),qVar"state"))]),
17023          Apply
17024            (Call
17025               ("SignalException",ATy(qTy,qTy),
17026                LC("ResI",CTy"ExceptionType")),qVar"state"))))
17027;
17028val dfn'CACHE_def = Def
17029  ("dfn'CACHE",TP[Var("base",FTy 5),Var("opn",FTy 5),Var("offset",F16)],
17030   Close
17031     (qVar"state",
17032      ITE(Bop(And,
17033              Mop(Not,
17034                  Dest
17035                    ("CU0",bTy,
17036                     Dest
17037                       ("Status",CTy"StatusRegister",
17038                        Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))),
17039              Mop(Not,Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state"))),
17040          Apply
17041            (Call
17042               ("SignalException",ATy(qTy,qTy),
17043                LC("CpU",CTy"ExceptionType")),qVar"state"),
17044          Mop(Snd,
17045              Apply
17046                (Call
17047                   ("AddressTranslation",
17048                    ATy(qTy,PTy(PTy(FTy 40,PTy(FTy 3,PTy(bTy,bTy))),qTy)),
17049                    TP[Bop(Add,
17050                           Apply
17051                             (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
17052                              qVar"state"),Mop(SE F64,Var("offset",F16))),
17053                       LC("LOAD",CTy"AccessType")]),qVar"state")))))
17054;
17055val dfn'WAIT_def = Def0 ("dfn'WAIT",LU)
17056;
17057val dfn'ReservedInstruction_def = Def
17058  ("dfn'ReservedInstruction",qVar"state",
17059   Apply
17060     (Call("SignalException",ATy(qTy,qTy),LC("ResI",CTy"ExceptionType")),
17061      qVar"state"))
17062;
17063val dfn'Unpredictable_def = Def
17064  ("dfn'Unpredictable",qVar"state",
17065   Mop(Snd,
17066       Apply
17067         (Call
17068            ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
17069             Call
17070               ("UNPREDICTABLE",CTy"exception",
17071                LS"Unpredictable instruction")),qVar"state")))
17072;
17073val Run_def = Def
17074  ("Run",Var("v0",CTy"instruction"),
17075   Close
17076     (qVar"state",
17077      CS(Var("v0",CTy"instruction"),
17078         [(Const("BREAK",CTy"instruction"),
17079           Apply(Const("dfn'BREAK",ATy(qTy,qTy)),qVar"state")),
17080          (Const("ERET",CTy"instruction"),
17081           Apply(Const("dfn'ERET",ATy(qTy,qTy)),qVar"state")),
17082          (Const("ReservedInstruction",CTy"instruction"),
17083           Apply
17084             (Const("dfn'ReservedInstruction",ATy(qTy,qTy)),qVar"state")),
17085          (Const("SYSCALL",CTy"instruction"),
17086           Apply(Const("dfn'SYSCALL",ATy(qTy,qTy)),qVar"state")),
17087          (Const("TLBP",CTy"instruction"),
17088           Apply(Const("dfn'TLBP",ATy(qTy,qTy)),qVar"state")),
17089          (Const("TLBR",CTy"instruction"),
17090           Apply(Const("dfn'TLBR",ATy(qTy,qTy)),qVar"state")),
17091          (Const("TLBWI",CTy"instruction"),
17092           Apply(Const("dfn'TLBWI",ATy(qTy,qTy)),qVar"state")),
17093          (Const("TLBWR",CTy"instruction"),
17094           Apply(Const("dfn'TLBWR",ATy(qTy,qTy)),qVar"state")),
17095          (Const("Unpredictable",CTy"instruction"),
17096           Apply(Const("dfn'Unpredictable",ATy(qTy,qTy)),qVar"state")),
17097          (Const("WAIT",CTy"instruction"),qVar"state"),
17098          (Call
17099             ("CACHE",CTy"instruction",
17100              Var("v261",PTy(FTy 5,PTy(FTy 5,F16)))),
17101           Apply
17102             (Call
17103                ("dfn'CACHE",ATy(qTy,qTy),
17104                 Var("v261",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
17105          (Call("RDHWR",CTy"instruction",Var("v262",PTy(FTy 5,FTy 5))),
17106           Apply
17107             (Call("dfn'RDHWR",ATy(qTy,qTy),Var("v262",PTy(FTy 5,FTy 5))),
17108              qVar"state")),
17109          (Call("SYNC",CTy"instruction",Var("v263",FTy 5)),qVar"state"),
17110          (Call("ArithI",CTy"instruction",Var("v1",CTy"ArithI")),
17111           CS(Var("v1",CTy"ArithI"),
17112              [(Call
17113                  ("ADDI",CTy"ArithI",Var("v2",PTy(FTy 5,PTy(FTy 5,F16)))),
17114                Apply
17115                  (Call
17116                     ("dfn'ADDI",ATy(qTy,qTy),
17117                      Var("v2",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
17118               (Call
17119                  ("ADDIU",CTy"ArithI",Var("v3",PTy(FTy 5,PTy(FTy 5,F16)))),
17120                Apply
17121                  (Call
17122                     ("dfn'ADDIU",ATy(qTy,qTy),
17123                      Var("v3",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
17124               (Call
17125                  ("ANDI",CTy"ArithI",Var("v4",PTy(FTy 5,PTy(FTy 5,F16)))),
17126                Apply
17127                  (Call
17128                     ("dfn'ANDI",ATy(qTy,qTy),
17129                      Var("v4",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
17130               (Call
17131                  ("DADDI",CTy"ArithI",Var("v5",PTy(FTy 5,PTy(FTy 5,F16)))),
17132                Apply
17133                  (Call
17134                     ("dfn'DADDI",ATy(qTy,qTy),
17135                      Var("v5",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
17136               (Call
17137                  ("DADDIU",CTy"ArithI",
17138                   Var("v6",PTy(FTy 5,PTy(FTy 5,F16)))),
17139                Apply
17140                  (Call
17141                     ("dfn'DADDIU",ATy(qTy,qTy),
17142                      Var("v6",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
17143               (Call("LUI",CTy"ArithI",Var("v7",PTy(FTy 5,F16))),
17144                Apply
17145                  (Call("dfn'LUI",ATy(qTy,qTy),Var("v7",PTy(FTy 5,F16))),
17146                   qVar"state")),
17147               (Call
17148                  ("ORI",CTy"ArithI",Var("v8",PTy(FTy 5,PTy(FTy 5,F16)))),
17149                Apply
17150                  (Call
17151                     ("dfn'ORI",ATy(qTy,qTy),
17152                      Var("v8",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
17153               (Call
17154                  ("SLTI",CTy"ArithI",Var("v9",PTy(FTy 5,PTy(FTy 5,F16)))),
17155                Apply
17156                  (Call
17157                     ("dfn'SLTI",ATy(qTy,qTy),
17158                      Var("v9",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
17159               (Call
17160                  ("SLTIU",CTy"ArithI",
17161                   Var("v10",PTy(FTy 5,PTy(FTy 5,F16)))),
17162                Apply
17163                  (Call
17164                     ("dfn'SLTIU",ATy(qTy,qTy),
17165                      Var("v10",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
17166               (Call
17167                  ("XORI",CTy"ArithI",Var("v11",PTy(FTy 5,PTy(FTy 5,F16)))),
17168                Apply
17169                  (Call
17170                     ("dfn'XORI",ATy(qTy,qTy),
17171                      Var("v11",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state"))])),
17172          (Call("ArithR",CTy"instruction",Var("v12",CTy"ArithR")),
17173           CS(Var("v12",CTy"ArithR"),
17174              [(Call
17175                  ("ADD",CTy"ArithR",
17176                   Var("v13",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17177                Apply
17178                  (Call
17179                     ("dfn'ADD",ATy(qTy,qTy),
17180                      Var("v13",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17181               (Call
17182                  ("ADDU",CTy"ArithR",
17183                   Var("v14",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17184                Apply
17185                  (Call
17186                     ("dfn'ADDU",ATy(qTy,qTy),
17187                      Var("v14",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17188               (Call
17189                  ("AND",CTy"ArithR",
17190                   Var("v15",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17191                Apply
17192                  (Call
17193                     ("dfn'AND",ATy(qTy,qTy),
17194                      Var("v15",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17195               (Call
17196                  ("DADD",CTy"ArithR",
17197                   Var("v16",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17198                Apply
17199                  (Call
17200                     ("dfn'DADD",ATy(qTy,qTy),
17201                      Var("v16",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17202               (Call
17203                  ("DADDU",CTy"ArithR",
17204                   Var("v17",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17205                Apply
17206                  (Call
17207                     ("dfn'DADDU",ATy(qTy,qTy),
17208                      Var("v17",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17209               (Call
17210                  ("DSUB",CTy"ArithR",
17211                   Var("v18",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17212                Apply
17213                  (Call
17214                     ("dfn'DSUB",ATy(qTy,qTy),
17215                      Var("v18",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17216               (Call
17217                  ("DSUBU",CTy"ArithR",
17218                   Var("v19",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17219                Apply
17220                  (Call
17221                     ("dfn'DSUBU",ATy(qTy,qTy),
17222                      Var("v19",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17223               (Call
17224                  ("MOVN",CTy"ArithR",
17225                   Var("v20",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17226                Apply
17227                  (Call
17228                     ("dfn'MOVN",ATy(qTy,qTy),
17229                      Var("v20",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17230               (Call
17231                  ("MOVZ",CTy"ArithR",
17232                   Var("v21",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17233                Apply
17234                  (Call
17235                     ("dfn'MOVZ",ATy(qTy,qTy),
17236                      Var("v21",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17237               (Call
17238                  ("NOR",CTy"ArithR",
17239                   Var("v22",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17240                Apply
17241                  (Call
17242                     ("dfn'NOR",ATy(qTy,qTy),
17243                      Var("v22",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17244               (Call
17245                  ("OR",CTy"ArithR",Var("v23",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17246                Apply
17247                  (Call
17248                     ("dfn'OR",ATy(qTy,qTy),
17249                      Var("v23",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17250               (Call
17251                  ("SLT",CTy"ArithR",
17252                   Var("v24",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17253                Apply
17254                  (Call
17255                     ("dfn'SLT",ATy(qTy,qTy),
17256                      Var("v24",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17257               (Call
17258                  ("SLTU",CTy"ArithR",
17259                   Var("v25",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17260                Apply
17261                  (Call
17262                     ("dfn'SLTU",ATy(qTy,qTy),
17263                      Var("v25",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17264               (Call
17265                  ("SUB",CTy"ArithR",
17266                   Var("v26",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17267                Apply
17268                  (Call
17269                     ("dfn'SUB",ATy(qTy,qTy),
17270                      Var("v26",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17271               (Call
17272                  ("SUBU",CTy"ArithR",
17273                   Var("v27",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17274                Apply
17275                  (Call
17276                     ("dfn'SUBU",ATy(qTy,qTy),
17277                      Var("v27",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17278               (Call
17279                  ("XOR",CTy"ArithR",
17280                   Var("v28",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17281                Apply
17282                  (Call
17283                     ("dfn'XOR",ATy(qTy,qTy),
17284                      Var("v28",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state"))])),
17285          (Call("Branch",CTy"instruction",Var("v29",CTy"Branch")),
17286           CS(Var("v29",CTy"Branch"),
17287              [(Call
17288                  ("BEQ",CTy"Branch",Var("v30",PTy(FTy 5,PTy(FTy 5,F16)))),
17289                Apply
17290                  (Call
17291                     ("dfn'BEQ",ATy(qTy,qTy),
17292                      Var("v30",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
17293               (Call
17294                  ("BEQL",CTy"Branch",Var("v31",PTy(FTy 5,PTy(FTy 5,F16)))),
17295                Apply
17296                  (Call
17297                     ("dfn'BEQL",ATy(qTy,qTy),
17298                      Var("v31",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
17299               (Call("BGEZ",CTy"Branch",Var("v32",PTy(FTy 5,F16))),
17300                Apply
17301                  (Call("dfn'BGEZ",ATy(qTy,qTy),Var("v32",PTy(FTy 5,F16))),
17302                   qVar"state")),
17303               (Call("BGEZAL",CTy"Branch",Var("v33",PTy(FTy 5,F16))),
17304                Apply
17305                  (Call
17306                     ("dfn'BGEZAL",ATy(qTy,qTy),Var("v33",PTy(FTy 5,F16))),
17307                   qVar"state")),
17308               (Call("BGEZALL",CTy"Branch",Var("v34",PTy(FTy 5,F16))),
17309                Apply
17310                  (Call
17311                     ("dfn'BGEZALL",ATy(qTy,qTy),Var("v34",PTy(FTy 5,F16))),
17312                   qVar"state")),
17313               (Call("BGEZL",CTy"Branch",Var("v35",PTy(FTy 5,F16))),
17314                Apply
17315                  (Call
17316                     ("dfn'BGEZL",ATy(qTy,qTy),Var("v35",PTy(FTy 5,F16))),
17317                   qVar"state")),
17318               (Call("BGTZ",CTy"Branch",Var("v36",PTy(FTy 5,F16))),
17319                Apply
17320                  (Call("dfn'BGTZ",ATy(qTy,qTy),Var("v36",PTy(FTy 5,F16))),
17321                   qVar"state")),
17322               (Call("BGTZL",CTy"Branch",Var("v37",PTy(FTy 5,F16))),
17323                Apply
17324                  (Call
17325                     ("dfn'BGTZL",ATy(qTy,qTy),Var("v37",PTy(FTy 5,F16))),
17326                   qVar"state")),
17327               (Call("BLEZ",CTy"Branch",Var("v38",PTy(FTy 5,F16))),
17328                Apply
17329                  (Call("dfn'BLEZ",ATy(qTy,qTy),Var("v38",PTy(FTy 5,F16))),
17330                   qVar"state")),
17331               (Call("BLEZL",CTy"Branch",Var("v39",PTy(FTy 5,F16))),
17332                Apply
17333                  (Call
17334                     ("dfn'BLEZL",ATy(qTy,qTy),Var("v39",PTy(FTy 5,F16))),
17335                   qVar"state")),
17336               (Call("BLTZ",CTy"Branch",Var("v40",PTy(FTy 5,F16))),
17337                Apply
17338                  (Call("dfn'BLTZ",ATy(qTy,qTy),Var("v40",PTy(FTy 5,F16))),
17339                   qVar"state")),
17340               (Call("BLTZAL",CTy"Branch",Var("v41",PTy(FTy 5,F16))),
17341                Apply
17342                  (Call
17343                     ("dfn'BLTZAL",ATy(qTy,qTy),Var("v41",PTy(FTy 5,F16))),
17344                   qVar"state")),
17345               (Call("BLTZALL",CTy"Branch",Var("v42",PTy(FTy 5,F16))),
17346                Apply
17347                  (Call
17348                     ("dfn'BLTZALL",ATy(qTy,qTy),Var("v42",PTy(FTy 5,F16))),
17349                   qVar"state")),
17350               (Call("BLTZL",CTy"Branch",Var("v43",PTy(FTy 5,F16))),
17351                Apply
17352                  (Call
17353                     ("dfn'BLTZL",ATy(qTy,qTy),Var("v43",PTy(FTy 5,F16))),
17354                   qVar"state")),
17355               (Call
17356                  ("BNE",CTy"Branch",Var("v44",PTy(FTy 5,PTy(FTy 5,F16)))),
17357                Apply
17358                  (Call
17359                     ("dfn'BNE",ATy(qTy,qTy),
17360                      Var("v44",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
17361               (Call
17362                  ("BNEL",CTy"Branch",Var("v45",PTy(FTy 5,PTy(FTy 5,F16)))),
17363                Apply
17364                  (Call
17365                     ("dfn'BNEL",ATy(qTy,qTy),
17366                      Var("v45",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
17367               (Call("J",CTy"Branch",Var("v46",FTy 26)),
17368                Apply
17369                  (Call("dfn'J",ATy(qTy,qTy),Var("v46",FTy 26)),
17370                   qVar"state")),
17371               (Call("JAL",CTy"Branch",Var("v47",FTy 26)),
17372                Apply
17373                  (Call("dfn'JAL",ATy(qTy,qTy),Var("v47",FTy 26)),
17374                   qVar"state")),
17375               (Call("JALR",CTy"Branch",Var("v48",PTy(FTy 5,FTy 5))),
17376                Apply
17377                  (Call
17378                     ("dfn'JALR",ATy(qTy,qTy),Var("v48",PTy(FTy 5,FTy 5))),
17379                   qVar"state")),
17380               (Call("JR",CTy"Branch",Var("v49",FTy 5)),
17381                Apply
17382                  (Call("dfn'JR",ATy(qTy,qTy),Var("v49",FTy 5)),
17383                   qVar"state"))])),
17384          (Call("COP1",CTy"instruction",Var("v50",CTy"COP1")),
17385           CS(Var("v50",CTy"COP1"),
17386              [(Const("UnknownFPInstruction",CTy"COP1"),
17387                Apply
17388                  (Const("dfn'UnknownFPInstruction",ATy(qTy,qTy)),
17389                   qVar"state")),
17390               (Call("ABS_D",CTy"COP1",Var("v51",PTy(FTy 5,FTy 5))),
17391                Apply
17392                  (Call
17393                     ("dfn'ABS_D",ATy(qTy,qTy),Var("v51",PTy(FTy 5,FTy 5))),
17394                   qVar"state")),
17395               (Call("ABS_S",CTy"COP1",Var("v52",PTy(FTy 5,FTy 5))),
17396                Apply
17397                  (Call
17398                     ("dfn'ABS_S",ATy(qTy,qTy),Var("v52",PTy(FTy 5,FTy 5))),
17399                   qVar"state")),
17400               (Call
17401                  ("ADD_D",CTy"COP1",
17402                   Var("v53",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17403                Apply
17404                  (Call
17405                     ("dfn'ADD_D",ATy(qTy,qTy),
17406                      Var("v53",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17407               (Call
17408                  ("ADD_S",CTy"COP1",
17409                   Var("v54",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17410                Apply
17411                  (Call
17412                     ("dfn'ADD_S",ATy(qTy,qTy),
17413                      Var("v54",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17414               (Call("BC1F",CTy"COP1",Var("v55",PTy(F16,FTy 3))),
17415                Apply
17416                  (Call("dfn'BC1F",ATy(qTy,qTy),Var("v55",PTy(F16,FTy 3))),
17417                   qVar"state")),
17418               (Call("BC1FL",CTy"COP1",Var("v56",PTy(F16,FTy 3))),
17419                Apply
17420                  (Call
17421                     ("dfn'BC1FL",ATy(qTy,qTy),Var("v56",PTy(F16,FTy 3))),
17422                   qVar"state")),
17423               (Call("BC1T",CTy"COP1",Var("v57",PTy(F16,FTy 3))),
17424                Apply
17425                  (Call("dfn'BC1T",ATy(qTy,qTy),Var("v57",PTy(F16,FTy 3))),
17426                   qVar"state")),
17427               (Call("BC1TL",CTy"COP1",Var("v58",PTy(F16,FTy 3))),
17428                Apply
17429                  (Call
17430                     ("dfn'BC1TL",ATy(qTy,qTy),Var("v58",PTy(F16,FTy 3))),
17431                   qVar"state")),
17432               (Call("CEIL_L_D",CTy"COP1",Var("v59",PTy(FTy 5,FTy 5))),
17433                Apply
17434                  (Call
17435                     ("dfn'CEIL_L_D",ATy(qTy,qTy),
17436                      Var("v59",PTy(FTy 5,FTy 5))),qVar"state")),
17437               (Call("CEIL_L_S",CTy"COP1",Var("v60",PTy(FTy 5,FTy 5))),
17438                Apply
17439                  (Call
17440                     ("dfn'CEIL_L_S",ATy(qTy,qTy),
17441                      Var("v60",PTy(FTy 5,FTy 5))),qVar"state")),
17442               (Call("CEIL_W_D",CTy"COP1",Var("v61",PTy(FTy 5,FTy 5))),
17443                Apply
17444                  (Call
17445                     ("dfn'CEIL_W_D",ATy(qTy,qTy),
17446                      Var("v61",PTy(FTy 5,FTy 5))),qVar"state")),
17447               (Call("CEIL_W_S",CTy"COP1",Var("v62",PTy(FTy 5,FTy 5))),
17448                Apply
17449                  (Call
17450                     ("dfn'CEIL_W_S",ATy(qTy,qTy),
17451                      Var("v62",PTy(FTy 5,FTy 5))),qVar"state")),
17452               (Call("CFC1",CTy"COP1",Var("v63",PTy(FTy 5,FTy 5))),
17453                Apply
17454                  (Call
17455                     ("dfn'CFC1",ATy(qTy,qTy),Var("v63",PTy(FTy 5,FTy 5))),
17456                   qVar"state")),
17457               (Call("CTC1",CTy"COP1",Var("v64",PTy(FTy 5,FTy 5))),
17458                Apply
17459                  (Call
17460                     ("dfn'CTC1",ATy(qTy,qTy),Var("v64",PTy(FTy 5,FTy 5))),
17461                   qVar"state")),
17462               (Call("CVT_D_L",CTy"COP1",Var("v65",PTy(FTy 5,FTy 5))),
17463                Apply
17464                  (Call
17465                     ("dfn'CVT_D_L",ATy(qTy,qTy),
17466                      Var("v65",PTy(FTy 5,FTy 5))),qVar"state")),
17467               (Call("CVT_D_S",CTy"COP1",Var("v66",PTy(FTy 5,FTy 5))),
17468                Apply
17469                  (Call
17470                     ("dfn'CVT_D_S",ATy(qTy,qTy),
17471                      Var("v66",PTy(FTy 5,FTy 5))),qVar"state")),
17472               (Call("CVT_D_W",CTy"COP1",Var("v67",PTy(FTy 5,FTy 5))),
17473                Apply
17474                  (Call
17475                     ("dfn'CVT_D_W",ATy(qTy,qTy),
17476                      Var("v67",PTy(FTy 5,FTy 5))),qVar"state")),
17477               (Call("CVT_L_D",CTy"COP1",Var("v68",PTy(FTy 5,FTy 5))),
17478                Apply
17479                  (Call
17480                     ("dfn'CVT_L_D",ATy(qTy,qTy),
17481                      Var("v68",PTy(FTy 5,FTy 5))),qVar"state")),
17482               (Call("CVT_L_S",CTy"COP1",Var("v69",PTy(FTy 5,FTy 5))),
17483                Apply
17484                  (Call
17485                     ("dfn'CVT_L_S",ATy(qTy,qTy),
17486                      Var("v69",PTy(FTy 5,FTy 5))),qVar"state")),
17487               (Call("CVT_S_D",CTy"COP1",Var("v70",PTy(FTy 5,FTy 5))),
17488                Apply
17489                  (Call
17490                     ("dfn'CVT_S_D",ATy(qTy,qTy),
17491                      Var("v70",PTy(FTy 5,FTy 5))),qVar"state")),
17492               (Call("CVT_S_L",CTy"COP1",Var("v71",PTy(FTy 5,FTy 5))),
17493                Apply
17494                  (Call
17495                     ("dfn'CVT_S_L",ATy(qTy,qTy),
17496                      Var("v71",PTy(FTy 5,FTy 5))),qVar"state")),
17497               (Call("CVT_S_W",CTy"COP1",Var("v72",PTy(FTy 5,FTy 5))),
17498                Apply
17499                  (Call
17500                     ("dfn'CVT_S_W",ATy(qTy,qTy),
17501                      Var("v72",PTy(FTy 5,FTy 5))),qVar"state")),
17502               (Call("CVT_W_D",CTy"COP1",Var("v73",PTy(FTy 5,FTy 5))),
17503                Apply
17504                  (Call
17505                     ("dfn'CVT_W_D",ATy(qTy,qTy),
17506                      Var("v73",PTy(FTy 5,FTy 5))),qVar"state")),
17507               (Call("CVT_W_S",CTy"COP1",Var("v74",PTy(FTy 5,FTy 5))),
17508                Apply
17509                  (Call
17510                     ("dfn'CVT_W_S",ATy(qTy,qTy),
17511                      Var("v74",PTy(FTy 5,FTy 5))),qVar"state")),
17512               (Call
17513                  ("C_cond_D",CTy"COP1",
17514                   Var("v75",PTy(FTy 5,PTy(FTy 5,PTy(FTy 3,FTy 3))))),
17515                Apply
17516                  (Call
17517                     ("dfn'C_cond_D",ATy(qTy,qTy),
17518                      Var("v75",PTy(FTy 5,PTy(FTy 5,PTy(FTy 3,FTy 3))))),
17519                   qVar"state")),
17520               (Call
17521                  ("C_cond_S",CTy"COP1",
17522                   Var("v76",PTy(FTy 5,PTy(FTy 5,PTy(FTy 3,FTy 3))))),
17523                Apply
17524                  (Call
17525                     ("dfn'C_cond_S",ATy(qTy,qTy),
17526                      Var("v76",PTy(FTy 5,PTy(FTy 5,PTy(FTy 3,FTy 3))))),
17527                   qVar"state")),
17528               (Call
17529                  ("DIV_D",CTy"COP1",
17530                   Var("v77",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17531                Apply
17532                  (Call
17533                     ("dfn'DIV_D",ATy(qTy,qTy),
17534                      Var("v77",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17535               (Call
17536                  ("DIV_S",CTy"COP1",
17537                   Var("v78",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17538                Apply
17539                  (Call
17540                     ("dfn'DIV_S",ATy(qTy,qTy),
17541                      Var("v78",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17542               (Call("DMFC1",CTy"COP1",Var("v79",PTy(FTy 5,FTy 5))),
17543                Apply
17544                  (Call
17545                     ("dfn'DMFC1",ATy(qTy,qTy),Var("v79",PTy(FTy 5,FTy 5))),
17546                   qVar"state")),
17547               (Call("DMTC1",CTy"COP1",Var("v80",PTy(FTy 5,FTy 5))),
17548                Apply
17549                  (Call
17550                     ("dfn'DMTC1",ATy(qTy,qTy),Var("v80",PTy(FTy 5,FTy 5))),
17551                   qVar"state")),
17552               (Call("FLOOR_L_D",CTy"COP1",Var("v81",PTy(FTy 5,FTy 5))),
17553                Apply
17554                  (Call
17555                     ("dfn'FLOOR_L_D",ATy(qTy,qTy),
17556                      Var("v81",PTy(FTy 5,FTy 5))),qVar"state")),
17557               (Call("FLOOR_L_S",CTy"COP1",Var("v82",PTy(FTy 5,FTy 5))),
17558                Apply
17559                  (Call
17560                     ("dfn'FLOOR_L_S",ATy(qTy,qTy),
17561                      Var("v82",PTy(FTy 5,FTy 5))),qVar"state")),
17562               (Call("FLOOR_W_D",CTy"COP1",Var("v83",PTy(FTy 5,FTy 5))),
17563                Apply
17564                  (Call
17565                     ("dfn'FLOOR_W_D",ATy(qTy,qTy),
17566                      Var("v83",PTy(FTy 5,FTy 5))),qVar"state")),
17567               (Call("FLOOR_W_S",CTy"COP1",Var("v84",PTy(FTy 5,FTy 5))),
17568                Apply
17569                  (Call
17570                     ("dfn'FLOOR_W_S",ATy(qTy,qTy),
17571                      Var("v84",PTy(FTy 5,FTy 5))),qVar"state")),
17572               (Call
17573                  ("LDC1",CTy"COP1",Var("v85",PTy(FTy 5,PTy(F16,FTy 5)))),
17574                Apply
17575                  (Call
17576                     ("dfn'LDC1",ATy(qTy,qTy),
17577                      Var("v85",PTy(FTy 5,PTy(F16,FTy 5)))),qVar"state")),
17578               (Call
17579                  ("LDXC1",CTy"COP1",
17580                   Var("v86",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17581                Apply
17582                  (Call
17583                     ("dfn'LDXC1",ATy(qTy,qTy),
17584                      Var("v86",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17585               (Call
17586                  ("LWC1",CTy"COP1",Var("v87",PTy(FTy 5,PTy(F16,FTy 5)))),
17587                Apply
17588                  (Call
17589                     ("dfn'LWC1",ATy(qTy,qTy),
17590                      Var("v87",PTy(FTy 5,PTy(F16,FTy 5)))),qVar"state")),
17591               (Call
17592                  ("LWXC1",CTy"COP1",
17593                   Var("v88",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17594                Apply
17595                  (Call
17596                     ("dfn'LWXC1",ATy(qTy,qTy),
17597                      Var("v88",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17598               (Call
17599                  ("MADD_D",CTy"COP1",
17600                   Var("v89",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))),
17601                Apply
17602                  (Call
17603                     ("dfn'MADD_D",ATy(qTy,qTy),
17604                      Var("v89",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))),
17605                   qVar"state")),
17606               (Call
17607                  ("MADD_S",CTy"COP1",
17608                   Var("v90",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))),
17609                Apply
17610                  (Call
17611                     ("dfn'MADD_S",ATy(qTy,qTy),
17612                      Var("v90",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))),
17613                   qVar"state")),
17614               (Call("MFC1",CTy"COP1",Var("v91",PTy(FTy 5,FTy 5))),
17615                Apply
17616                  (Call
17617                     ("dfn'MFC1",ATy(qTy,qTy),Var("v91",PTy(FTy 5,FTy 5))),
17618                   qVar"state")),
17619               (Call
17620                  ("MOVF",CTy"COP1",Var("v92",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
17621                Apply
17622                  (Call
17623                     ("dfn'MOVF",ATy(qTy,qTy),
17624                      Var("v92",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")),
17625               (Call
17626                  ("MOVF_D",CTy"COP1",
17627                   Var("v93",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
17628                Apply
17629                  (Call
17630                     ("dfn'MOVF_D",ATy(qTy,qTy),
17631                      Var("v93",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")),
17632               (Call
17633                  ("MOVF_S",CTy"COP1",
17634                   Var("v94",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
17635                Apply
17636                  (Call
17637                     ("dfn'MOVF_S",ATy(qTy,qTy),
17638                      Var("v94",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")),
17639               (Call
17640                  ("MOVN_D",CTy"COP1",
17641                   Var("v95",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17642                Apply
17643                  (Call
17644                     ("dfn'MOVN_D",ATy(qTy,qTy),
17645                      Var("v95",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17646               (Call
17647                  ("MOVN_S",CTy"COP1",
17648                   Var("v96",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17649                Apply
17650                  (Call
17651                     ("dfn'MOVN_S",ATy(qTy,qTy),
17652                      Var("v96",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17653               (Call
17654                  ("MOVT",CTy"COP1",Var("v97",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
17655                Apply
17656                  (Call
17657                     ("dfn'MOVT",ATy(qTy,qTy),
17658                      Var("v97",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")),
17659               (Call
17660                  ("MOVT_D",CTy"COP1",
17661                   Var("v98",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
17662                Apply
17663                  (Call
17664                     ("dfn'MOVT_D",ATy(qTy,qTy),
17665                      Var("v98",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")),
17666               (Call
17667                  ("MOVT_S",CTy"COP1",
17668                   Var("v99",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
17669                Apply
17670                  (Call
17671                     ("dfn'MOVT_S",ATy(qTy,qTy),
17672                      Var("v99",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")),
17673               (Call
17674                  ("MOVZ_D",CTy"COP1",
17675                   Var("v100",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17676                Apply
17677                  (Call
17678                     ("dfn'MOVZ_D",ATy(qTy,qTy),
17679                      Var("v100",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17680               (Call
17681                  ("MOVZ_S",CTy"COP1",
17682                   Var("v101",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17683                Apply
17684                  (Call
17685                     ("dfn'MOVZ_S",ATy(qTy,qTy),
17686                      Var("v101",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17687               (Call("MOV_D",CTy"COP1",Var("v102",PTy(FTy 5,FTy 5))),
17688                Apply
17689                  (Call
17690                     ("dfn'MOV_D",ATy(qTy,qTy),
17691                      Var("v102",PTy(FTy 5,FTy 5))),qVar"state")),
17692               (Call("MOV_S",CTy"COP1",Var("v103",PTy(FTy 5,FTy 5))),
17693                Apply
17694                  (Call
17695                     ("dfn'MOV_S",ATy(qTy,qTy),
17696                      Var("v103",PTy(FTy 5,FTy 5))),qVar"state")),
17697               (Call
17698                  ("MSUB_D",CTy"COP1",
17699                   Var("v104",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))),
17700                Apply
17701                  (Call
17702                     ("dfn'MSUB_D",ATy(qTy,qTy),
17703                      Var("v104",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))),
17704                   qVar"state")),
17705               (Call
17706                  ("MSUB_S",CTy"COP1",
17707                   Var("v105",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))),
17708                Apply
17709                  (Call
17710                     ("dfn'MSUB_S",ATy(qTy,qTy),
17711                      Var("v105",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))),
17712                   qVar"state")),
17713               (Call("MTC1",CTy"COP1",Var("v106",PTy(FTy 5,FTy 5))),
17714                Apply
17715                  (Call
17716                     ("dfn'MTC1",ATy(qTy,qTy),Var("v106",PTy(FTy 5,FTy 5))),
17717                   qVar"state")),
17718               (Call
17719                  ("MUL_D",CTy"COP1",
17720                   Var("v107",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17721                Apply
17722                  (Call
17723                     ("dfn'MUL_D",ATy(qTy,qTy),
17724                      Var("v107",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17725               (Call
17726                  ("MUL_S",CTy"COP1",
17727                   Var("v108",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17728                Apply
17729                  (Call
17730                     ("dfn'MUL_S",ATy(qTy,qTy),
17731                      Var("v108",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17732               (Call("NEG_D",CTy"COP1",Var("v109",PTy(FTy 5,FTy 5))),
17733                Apply
17734                  (Call
17735                     ("dfn'NEG_D",ATy(qTy,qTy),
17736                      Var("v109",PTy(FTy 5,FTy 5))),qVar"state")),
17737               (Call("NEG_S",CTy"COP1",Var("v110",PTy(FTy 5,FTy 5))),
17738                Apply
17739                  (Call
17740                     ("dfn'NEG_S",ATy(qTy,qTy),
17741                      Var("v110",PTy(FTy 5,FTy 5))),qVar"state")),
17742               (Call("ROUND_L_D",CTy"COP1",Var("v111",PTy(FTy 5,FTy 5))),
17743                Apply
17744                  (Call
17745                     ("dfn'ROUND_L_D",ATy(qTy,qTy),
17746                      Var("v111",PTy(FTy 5,FTy 5))),qVar"state")),
17747               (Call("ROUND_L_S",CTy"COP1",Var("v112",PTy(FTy 5,FTy 5))),
17748                Apply
17749                  (Call
17750                     ("dfn'ROUND_L_S",ATy(qTy,qTy),
17751                      Var("v112",PTy(FTy 5,FTy 5))),qVar"state")),
17752               (Call("ROUND_W_D",CTy"COP1",Var("v113",PTy(FTy 5,FTy 5))),
17753                Apply
17754                  (Call
17755                     ("dfn'ROUND_W_D",ATy(qTy,qTy),
17756                      Var("v113",PTy(FTy 5,FTy 5))),qVar"state")),
17757               (Call("ROUND_W_S",CTy"COP1",Var("v114",PTy(FTy 5,FTy 5))),
17758                Apply
17759                  (Call
17760                     ("dfn'ROUND_W_S",ATy(qTy,qTy),
17761                      Var("v114",PTy(FTy 5,FTy 5))),qVar"state")),
17762               (Call
17763                  ("SDC1",CTy"COP1",Var("v115",PTy(FTy 5,PTy(F16,FTy 5)))),
17764                Apply
17765                  (Call
17766                     ("dfn'SDC1",ATy(qTy,qTy),
17767                      Var("v115",PTy(FTy 5,PTy(F16,FTy 5)))),qVar"state")),
17768               (Call
17769                  ("SDXC1",CTy"COP1",
17770                   Var("v116",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17771                Apply
17772                  (Call
17773                     ("dfn'SDXC1",ATy(qTy,qTy),
17774                      Var("v116",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17775               (Call("SQRT_D",CTy"COP1",Var("v117",PTy(FTy 5,FTy 5))),
17776                Apply
17777                  (Call
17778                     ("dfn'SQRT_D",ATy(qTy,qTy),
17779                      Var("v117",PTy(FTy 5,FTy 5))),qVar"state")),
17780               (Call("SQRT_S",CTy"COP1",Var("v118",PTy(FTy 5,FTy 5))),
17781                Apply
17782                  (Call
17783                     ("dfn'SQRT_S",ATy(qTy,qTy),
17784                      Var("v118",PTy(FTy 5,FTy 5))),qVar"state")),
17785               (Call
17786                  ("SUB_D",CTy"COP1",
17787                   Var("v119",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17788                Apply
17789                  (Call
17790                     ("dfn'SUB_D",ATy(qTy,qTy),
17791                      Var("v119",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17792               (Call
17793                  ("SUB_S",CTy"COP1",
17794                   Var("v120",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17795                Apply
17796                  (Call
17797                     ("dfn'SUB_S",ATy(qTy,qTy),
17798                      Var("v120",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17799               (Call
17800                  ("SWC1",CTy"COP1",Var("v121",PTy(FTy 5,PTy(F16,FTy 5)))),
17801                Apply
17802                  (Call
17803                     ("dfn'SWC1",ATy(qTy,qTy),
17804                      Var("v121",PTy(FTy 5,PTy(F16,FTy 5)))),qVar"state")),
17805               (Call
17806                  ("SWXC1",CTy"COP1",
17807                   Var("v122",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17808                Apply
17809                  (Call
17810                     ("dfn'SWXC1",ATy(qTy,qTy),
17811                      Var("v122",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
17812               (Call("TRUNC_L_D",CTy"COP1",Var("v123",PTy(FTy 5,FTy 5))),
17813                Apply
17814                  (Call
17815                     ("dfn'TRUNC_L_D",ATy(qTy,qTy),
17816                      Var("v123",PTy(FTy 5,FTy 5))),qVar"state")),
17817               (Call("TRUNC_L_S",CTy"COP1",Var("v124",PTy(FTy 5,FTy 5))),
17818                Apply
17819                  (Call
17820                     ("dfn'TRUNC_L_S",ATy(qTy,qTy),
17821                      Var("v124",PTy(FTy 5,FTy 5))),qVar"state")),
17822               (Call("TRUNC_W_D",CTy"COP1",Var("v125",PTy(FTy 5,FTy 5))),
17823                Apply
17824                  (Call
17825                     ("dfn'TRUNC_W_D",ATy(qTy,qTy),
17826                      Var("v125",PTy(FTy 5,FTy 5))),qVar"state")),
17827               (Call("TRUNC_W_S",CTy"COP1",Var("v126",PTy(FTy 5,FTy 5))),
17828                Apply
17829                  (Call
17830                     ("dfn'TRUNC_W_S",ATy(qTy,qTy),
17831                      Var("v126",PTy(FTy 5,FTy 5))),qVar"state"))])),
17832          (Call("COP2",CTy"instruction",Var("v127",CTy"COP2")),
17833           CS(Var("v127",CTy"COP2"),
17834              [(Call("CHERICOP2",CTy"COP2",Var("v128",CTy"CHERICOP2")),
17835                CS(Var("v128",CTy"CHERICOP2"),
17836                   [(Const("CReturn",CTy"CHERICOP2"),
17837                     Apply(Const("dfn'CReturn",ATy(qTy,qTy)),qVar"state")),
17838                    (Const("DumpCapReg",CTy"CHERICOP2"),qVar"state"),
17839                    (Const("UnknownCapInstruction",CTy"CHERICOP2"),
17840                     Apply
17841                       (Const("dfn'UnknownCapInstruction",ATy(qTy,qTy)),
17842                        qVar"state")),
17843                    (Call
17844                       ("CBTS",CTy"CHERICOP2",Var("v156",PTy(FTy 5,F16))),
17845                     Apply
17846                       (Call
17847                          ("dfn'CBTS",ATy(qTy,qTy),
17848                           Var("v156",PTy(FTy 5,F16))),qVar"state")),
17849                    (Call
17850                       ("CBTU",CTy"CHERICOP2",Var("v157",PTy(FTy 5,F16))),
17851                     Apply
17852                       (Call
17853                          ("dfn'CBTU",ATy(qTy,qTy),
17854                           Var("v157",PTy(FTy 5,F16))),qVar"state")),
17855                    (Call
17856                       ("CCall0",CTy"CHERICOP2",
17857                        Var("v158",PTy(FTy 5,FTy 5))),
17858                     Apply
17859                       (Call
17860                          ("dfn'CCall0",ATy(qTy,qTy),
17861                           Var("v158",PTy(FTy 5,FTy 5))),qVar"state")),
17862                    (Call
17863                       ("CCall1",CTy"CHERICOP2",
17864                        Var("v159",PTy(FTy 5,FTy 5))),
17865                     Apply
17866                       (Call
17867                          ("dfn'CCall1",ATy(qTy,qTy),
17868                           Var("v159",PTy(FTy 5,FTy 5))),qVar"state")),
17869                    (Call
17870                       ("CJALR",CTy"CHERICOP2",
17871                        Var("v160",PTy(FTy 5,FTy 5))),
17872                     Apply
17873                       (Call
17874                          ("dfn'CJALR",ATy(qTy,qTy),
17875                           Var("v160",PTy(FTy 5,FTy 5))),qVar"state")),
17876                    (Call("CJR",CTy"CHERICOP2",Var("v161",FTy 5)),
17877                     Apply
17878                       (Call("dfn'CJR",ATy(qTy,qTy),Var("v161",FTy 5)),
17879                        qVar"state")),
17880                    (Call
17881                       ("CLLC",CTy"CHERICOP2",Var("v162",PTy(FTy 5,FTy 5))),
17882                     Apply
17883                       (Call
17884                          ("dfn'CLLC",ATy(qTy,qTy),
17885                           Var("v162",PTy(FTy 5,FTy 5))),qVar"state")),
17886                    (Call
17887                       ("CLLx",CTy"CHERICOP2",
17888                        Var("v163",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
17889                     Apply
17890                       (Call
17891                          ("dfn'CLLx",ATy(qTy,qTy),
17892                           Var("v163",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
17893                        qVar"state")),
17894                    (Call
17895                       ("CMOVN",CTy"CHERICOP2",
17896                        Var("v164",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17897                     Apply
17898                       (Call
17899                          ("dfn'CMOVN",ATy(qTy,qTy),
17900                           Var("v164",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17901                        qVar"state")),
17902                    (Call
17903                       ("CMOVZ",CTy"CHERICOP2",
17904                        Var("v165",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17905                     Apply
17906                       (Call
17907                          ("dfn'CMOVZ",ATy(qTy,qTy),
17908                           Var("v165",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17909                        qVar"state")),
17910                    (Call
17911                       ("CPtrCmp",CTy"CHERICOP2",
17912                        Var("v166",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 3))))),
17913                     Apply
17914                       (Call
17915                          ("dfn'CPtrCmp",ATy(qTy,qTy),
17916                           Var("v166",
17917                               PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 3))))),
17918                        qVar"state")),
17919                    (Call
17920                       ("CSCC",CTy"CHERICOP2",
17921                        Var("v167",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17922                     Apply
17923                       (Call
17924                          ("dfn'CSCC",ATy(qTy,qTy),
17925                           Var("v167",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17926                        qVar"state")),
17927                    (Call
17928                       ("CSCx",CTy"CHERICOP2",
17929                        Var("v168",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 2))))),
17930                     Apply
17931                       (Call
17932                          ("dfn'CSCx",ATy(qTy,qTy),
17933                           Var("v168",
17934                               PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 2))))),
17935                        qVar"state")),
17936                    (Call
17937                       ("CSeal",CTy"CHERICOP2",
17938                        Var("v169",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17939                     Apply
17940                       (Call
17941                          ("dfn'CSeal",ATy(qTy,qTy),
17942                           Var("v169",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17943                        qVar"state")),
17944                    (Call
17945                       ("CSub",CTy"CHERICOP2",
17946                        Var("v170",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17947                     Apply
17948                       (Call
17949                          ("dfn'CSub",ATy(qTy,qTy),
17950                           Var("v170",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17951                        qVar"state")),
17952                    (Call
17953                       ("CUnseal",CTy"CHERICOP2",
17954                        Var("v171",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17955                     Apply
17956                       (Call
17957                          ("dfn'CUnseal",ATy(qTy,qTy),
17958                           Var("v171",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
17959                        qVar"state")),
17960                    (Call("CCheck",CTy"CHERICOP2",Var("v129",CTy"CCheck")),
17961                     CS(Var("v129",CTy"CCheck"),
17962                        [(Call
17963                            ("CCheckPerm",CTy"CCheck",
17964                             Var("v130",PTy(FTy 5,FTy 5))),
17965                          Apply
17966                            (Call
17967                               ("dfn'CCheckPerm",ATy(qTy,qTy),
17968                                Var("v130",PTy(FTy 5,FTy 5))),qVar"state")),
17969                         (Call
17970                            ("CCheckType",CTy"CCheck",
17971                             Var("v131",PTy(FTy 5,FTy 5))),
17972                          Apply
17973                            (Call
17974                               ("dfn'CCheckType",ATy(qTy,qTy),
17975                                Var("v131",PTy(FTy 5,FTy 5))),qVar"state"))])),
17976                    (Call("CGet",CTy"CHERICOP2",Var("v132",CTy"CGet")),
17977                     CS(Var("v132",CTy"CGet"),
17978                        [(Call
17979                            ("CGetBase",CTy"CGet",
17980                             Var("v133",PTy(FTy 5,FTy 5))),
17981                          Apply
17982                            (Call
17983                               ("dfn'CGetBase",ATy(qTy,qTy),
17984                                Var("v133",PTy(FTy 5,FTy 5))),qVar"state")),
17985                         (Call("CGetCause",CTy"CGet",Var("v134",FTy 5)),
17986                          Apply
17987                            (Call
17988                               ("dfn'CGetCause",ATy(qTy,qTy),
17989                                Var("v134",FTy 5)),qVar"state")),
17990                         (Call
17991                            ("CGetLen",CTy"CGet",
17992                             Var("v135",PTy(FTy 5,FTy 5))),
17993                          Apply
17994                            (Call
17995                               ("dfn'CGetLen",ATy(qTy,qTy),
17996                                Var("v135",PTy(FTy 5,FTy 5))),qVar"state")),
17997                         (Call
17998                            ("CGetOffset",CTy"CGet",
17999                             Var("v136",PTy(FTy 5,FTy 5))),
18000                          Apply
18001                            (Call
18002                               ("dfn'CGetOffset",ATy(qTy,qTy),
18003                                Var("v136",PTy(FTy 5,FTy 5))),qVar"state")),
18004                         (Call("CGetPCC",CTy"CGet",Var("v137",FTy 5)),
18005                          Apply
18006                            (Call
18007                               ("dfn'CGetPCC",ATy(qTy,qTy),
18008                                Var("v137",FTy 5)),qVar"state")),
18009                         (Call
18010                            ("CGetPCCSetOffset",CTy"CGet",
18011                             Var("v138",PTy(FTy 5,FTy 5))),
18012                          Apply
18013                            (Call
18014                               ("dfn'CGetPCCSetOffset",ATy(qTy,qTy),
18015                                Var("v138",PTy(FTy 5,FTy 5))),qVar"state")),
18016                         (Call
18017                            ("CGetPerm",CTy"CGet",
18018                             Var("v139",PTy(FTy 5,FTy 5))),
18019                          Apply
18020                            (Call
18021                               ("dfn'CGetPerm",ATy(qTy,qTy),
18022                                Var("v139",PTy(FTy 5,FTy 5))),qVar"state")),
18023                         (Call
18024                            ("CGetSealed",CTy"CGet",
18025                             Var("v140",PTy(FTy 5,FTy 5))),
18026                          Apply
18027                            (Call
18028                               ("dfn'CGetSealed",ATy(qTy,qTy),
18029                                Var("v140",PTy(FTy 5,FTy 5))),qVar"state")),
18030                         (Call
18031                            ("CGetTag",CTy"CGet",
18032                             Var("v141",PTy(FTy 5,FTy 5))),
18033                          Apply
18034                            (Call
18035                               ("dfn'CGetTag",ATy(qTy,qTy),
18036                                Var("v141",PTy(FTy 5,FTy 5))),qVar"state")),
18037                         (Call
18038                            ("CGetType",CTy"CGet",
18039                             Var("v142",PTy(FTy 5,FTy 5))),
18040                          Apply
18041                            (Call
18042                               ("dfn'CGetType",ATy(qTy,qTy),
18043                                Var("v142",PTy(FTy 5,FTy 5))),qVar"state")),
18044                         (Call
18045                            ("CToPtr",CTy"CGet",
18046                             Var("v143",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18047                          Apply
18048                            (Call
18049                               ("dfn'CToPtr",ATy(qTy,qTy),
18050                                Var("v143",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18051                             qVar"state"))])),
18052                    (Call("CSet",CTy"CHERICOP2",Var("v144",CTy"CSet")),
18053                     CS(Var("v144",CTy"CSet"),
18054                        [(Call
18055                            ("CAndPerm",CTy"CSet",
18056                             Var("v145",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18057                          Apply
18058                            (Call
18059                               ("dfn'CAndPerm",ATy(qTy,qTy),
18060                                Var("v145",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18061                             qVar"state")),
18062                         (Call
18063                            ("CClearRegs",CTy"CSet",
18064                             Var("v146",PTy(FTy 5,F16))),
18065                          Apply
18066                            (Call
18067                               ("dfn'CClearRegs",ATy(qTy,qTy),
18068                                Var("v146",PTy(FTy 5,F16))),qVar"state")),
18069                         (Call
18070                            ("CClearTag",CTy"CSet",
18071                             Var("v147",PTy(FTy 5,FTy 5))),
18072                          Apply
18073                            (Call
18074                               ("dfn'CClearTag",ATy(qTy,qTy),
18075                                Var("v147",PTy(FTy 5,FTy 5))),qVar"state")),
18076                         (Call
18077                            ("CFromPtr",CTy"CSet",
18078                             Var("v148",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18079                          Apply
18080                            (Call
18081                               ("dfn'CFromPtr",ATy(qTy,qTy),
18082                                Var("v148",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18083                             qVar"state")),
18084                         (Call
18085                            ("CIncOffset",CTy"CSet",
18086                             Var("v149",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18087                          Apply
18088                            (Call
18089                               ("dfn'CIncOffset",ATy(qTy,qTy),
18090                                Var("v149",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18091                             qVar"state")),
18092                         (Call
18093                            ("CIncOffsetImmediate",CTy"CSet",
18094                             Var("v150",PTy(FTy 5,PTy(FTy 5,FTy 11)))),
18095                          Apply
18096                            (Call
18097                               ("dfn'CIncOffsetImmediate",ATy(qTy,qTy),
18098                                Var("v150",PTy(FTy 5,PTy(FTy 5,FTy 11)))),
18099                             qVar"state")),
18100                         (Call
18101                            ("CSetBounds",CTy"CSet",
18102                             Var("v151",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18103                          Apply
18104                            (Call
18105                               ("dfn'CSetBounds",ATy(qTy,qTy),
18106                                Var("v151",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18107                             qVar"state")),
18108                         (Call
18109                            ("CSetBoundsExact",CTy"CSet",
18110                             Var("v152",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18111                          Apply
18112                            (Call
18113                               ("dfn'CSetBoundsExact",ATy(qTy,qTy),
18114                                Var("v152",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18115                             qVar"state")),
18116                         (Call
18117                            ("CSetBoundsImmediate",CTy"CSet",
18118                             Var("v153",PTy(FTy 5,PTy(FTy 5,FTy 11)))),
18119                          Apply
18120                            (Call
18121                               ("dfn'CSetBoundsImmediate",ATy(qTy,qTy),
18122                                Var("v153",PTy(FTy 5,PTy(FTy 5,FTy 11)))),
18123                             qVar"state")),
18124                         (Call("CSetCause",CTy"CSet",Var("v154",FTy 5)),
18125                          Apply
18126                            (Call
18127                               ("dfn'CSetCause",ATy(qTy,qTy),
18128                                Var("v154",FTy 5)),qVar"state")),
18129                         (Call
18130                            ("CSetOffset",CTy"CSet",
18131                             Var("v155",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18132                          Apply
18133                            (Call
18134                               ("dfn'CSetOffset",ATy(qTy,qTy),
18135                                Var("v155",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18136                             qVar"state"))]))]))])),
18137          (Call("CP",CTy"instruction",Var("v172",CTy"CP")),
18138           CS(Var("v172",CTy"CP"),
18139              [(Call
18140                  ("DMFC0",CTy"CP",Var("v173",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
18141                Apply
18142                  (Call
18143                     ("dfn'DMFC0",ATy(qTy,qTy),
18144                      Var("v173",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")),
18145               (Call
18146                  ("DMTC0",CTy"CP",Var("v174",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
18147                Apply
18148                  (Call
18149                     ("dfn'DMTC0",ATy(qTy,qTy),
18150                      Var("v174",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")),
18151               (Call
18152                  ("MFC0",CTy"CP",Var("v175",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
18153                Apply
18154                  (Call
18155                     ("dfn'MFC0",ATy(qTy,qTy),
18156                      Var("v175",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")),
18157               (Call
18158                  ("MTC0",CTy"CP",Var("v176",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
18159                Apply
18160                  (Call
18161                     ("dfn'MTC0",ATy(qTy,qTy),
18162                      Var("v176",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state"))])),
18163          (Call("LDC2",CTy"instruction",Var("v177",CTy"LDC2")),
18164           CS(Var("v177",CTy"LDC2"),
18165              [(Call("CHERILDC2",CTy"LDC2",Var("v178",CTy"CHERILDC2")),
18166                CS(Var("v178",CTy"CHERILDC2"),
18167                   [(Call
18168                       ("CLC",CTy"CHERILDC2",
18169                        Var("v179",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 11))))),
18170                     Apply
18171                       (Call
18172                          ("dfn'CLC",ATy(qTy,qTy),
18173                           Var("v179",
18174                               PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 11))))),
18175                        qVar"state"))]))])),
18176          (Call("LWC2",CTy"instruction",Var("v180",CTy"LWC2")),
18177           CS(Var("v180",CTy"LWC2"),
18178              [(Call("CHERILWC2",CTy"LWC2",Var("v181",CTy"CHERILWC2")),
18179                CS(Var("v181",CTy"CHERILWC2"),
18180                   [(Call
18181                       ("CLoad",CTy"CHERILWC2",
18182                        Var("v182",
18183                            PTy(FTy 5,
18184                                PTy(FTy 5,PTy(FTy 5,PTy(F8,PTy(F1,FTy 2))))))),
18185                     Apply
18186                       (Call
18187                          ("dfn'CLoad",ATy(qTy,qTy),
18188                           Var("v182",
18189                               PTy(FTy 5,
18190                                   PTy(FTy 5,
18191                                       PTy(FTy 5,PTy(F8,PTy(F1,FTy 2))))))),
18192                        qVar"state"))]))])),
18193          (Call("Load",CTy"instruction",Var("v183",CTy"Load")),
18194           CS(Var("v183",CTy"Load"),
18195              [(Call("LB",CTy"Load",Var("v184",PTy(FTy 5,PTy(FTy 5,F16)))),
18196                Apply
18197                  (Call
18198                     ("dfn'LB",ATy(qTy,qTy),
18199                      Var("v184",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
18200               (Call
18201                  ("LBU",CTy"Load",Var("v185",PTy(FTy 5,PTy(FTy 5,F16)))),
18202                Apply
18203                  (Call
18204                     ("dfn'LBU",ATy(qTy,qTy),
18205                      Var("v185",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
18206               (Call("LD",CTy"Load",Var("v186",PTy(FTy 5,PTy(FTy 5,F16)))),
18207                Apply
18208                  (Call
18209                     ("dfn'LD",ATy(qTy,qTy),
18210                      Var("v186",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
18211               (Call
18212                  ("LDL",CTy"Load",Var("v187",PTy(FTy 5,PTy(FTy 5,F16)))),
18213                Apply
18214                  (Call
18215                     ("dfn'LDL",ATy(qTy,qTy),
18216                      Var("v187",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
18217               (Call
18218                  ("LDR",CTy"Load",Var("v188",PTy(FTy 5,PTy(FTy 5,F16)))),
18219                Apply
18220                  (Call
18221                     ("dfn'LDR",ATy(qTy,qTy),
18222                      Var("v188",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
18223               (Call("LH",CTy"Load",Var("v189",PTy(FTy 5,PTy(FTy 5,F16)))),
18224                Apply
18225                  (Call
18226                     ("dfn'LH",ATy(qTy,qTy),
18227                      Var("v189",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
18228               (Call
18229                  ("LHU",CTy"Load",Var("v190",PTy(FTy 5,PTy(FTy 5,F16)))),
18230                Apply
18231                  (Call
18232                     ("dfn'LHU",ATy(qTy,qTy),
18233                      Var("v190",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
18234               (Call("LL",CTy"Load",Var("v191",PTy(FTy 5,PTy(FTy 5,F16)))),
18235                Apply
18236                  (Call
18237                     ("dfn'LL",ATy(qTy,qTy),
18238                      Var("v191",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
18239               (Call
18240                  ("LLD",CTy"Load",Var("v192",PTy(FTy 5,PTy(FTy 5,F16)))),
18241                Apply
18242                  (Call
18243                     ("dfn'LLD",ATy(qTy,qTy),
18244                      Var("v192",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
18245               (Call("LW",CTy"Load",Var("v193",PTy(FTy 5,PTy(FTy 5,F16)))),
18246                Apply
18247                  (Call
18248                     ("dfn'LW",ATy(qTy,qTy),
18249                      Var("v193",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
18250               (Call
18251                  ("LWL",CTy"Load",Var("v194",PTy(FTy 5,PTy(FTy 5,F16)))),
18252                Apply
18253                  (Call
18254                     ("dfn'LWL",ATy(qTy,qTy),
18255                      Var("v194",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
18256               (Call
18257                  ("LWR",CTy"Load",Var("v195",PTy(FTy 5,PTy(FTy 5,F16)))),
18258                Apply
18259                  (Call
18260                     ("dfn'LWR",ATy(qTy,qTy),
18261                      Var("v195",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
18262               (Call
18263                  ("LWU",CTy"Load",Var("v196",PTy(FTy 5,PTy(FTy 5,F16)))),
18264                Apply
18265                  (Call
18266                     ("dfn'LWU",ATy(qTy,qTy),
18267                      Var("v196",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state"))])),
18268          (Call("MultDiv",CTy"instruction",Var("v197",CTy"MultDiv")),
18269           CS(Var("v197",CTy"MultDiv"),
18270              [(Call("DDIV",CTy"MultDiv",Var("v198",PTy(FTy 5,FTy 5))),
18271                Apply
18272                  (Call
18273                     ("dfn'DDIV",ATy(qTy,qTy),Var("v198",PTy(FTy 5,FTy 5))),
18274                   qVar"state")),
18275               (Call("DDIVU",CTy"MultDiv",Var("v199",PTy(FTy 5,FTy 5))),
18276                Apply
18277                  (Call
18278                     ("dfn'DDIVU",ATy(qTy,qTy),
18279                      Var("v199",PTy(FTy 5,FTy 5))),qVar"state")),
18280               (Call("DIV",CTy"MultDiv",Var("v200",PTy(FTy 5,FTy 5))),
18281                Apply
18282                  (Call
18283                     ("dfn'DIV",ATy(qTy,qTy),Var("v200",PTy(FTy 5,FTy 5))),
18284                   qVar"state")),
18285               (Call("DIVU",CTy"MultDiv",Var("v201",PTy(FTy 5,FTy 5))),
18286                Apply
18287                  (Call
18288                     ("dfn'DIVU",ATy(qTy,qTy),Var("v201",PTy(FTy 5,FTy 5))),
18289                   qVar"state")),
18290               (Call("DMULT",CTy"MultDiv",Var("v202",PTy(FTy 5,FTy 5))),
18291                Apply
18292                  (Call
18293                     ("dfn'DMULT",ATy(qTy,qTy),
18294                      Var("v202",PTy(FTy 5,FTy 5))),qVar"state")),
18295               (Call("DMULTU",CTy"MultDiv",Var("v203",PTy(FTy 5,FTy 5))),
18296                Apply
18297                  (Call
18298                     ("dfn'DMULTU",ATy(qTy,qTy),
18299                      Var("v203",PTy(FTy 5,FTy 5))),qVar"state")),
18300               (Call("MADD",CTy"MultDiv",Var("v204",PTy(FTy 5,FTy 5))),
18301                Apply
18302                  (Call
18303                     ("dfn'MADD",ATy(qTy,qTy),Var("v204",PTy(FTy 5,FTy 5))),
18304                   qVar"state")),
18305               (Call("MADDU",CTy"MultDiv",Var("v205",PTy(FTy 5,FTy 5))),
18306                Apply
18307                  (Call
18308                     ("dfn'MADDU",ATy(qTy,qTy),
18309                      Var("v205",PTy(FTy 5,FTy 5))),qVar"state")),
18310               (Call("MFHI",CTy"MultDiv",Var("v206",FTy 5)),
18311                Apply
18312                  (Call("dfn'MFHI",ATy(qTy,qTy),Var("v206",FTy 5)),
18313                   qVar"state")),
18314               (Call("MFLO",CTy"MultDiv",Var("v207",FTy 5)),
18315                Apply
18316                  (Call("dfn'MFLO",ATy(qTy,qTy),Var("v207",FTy 5)),
18317                   qVar"state")),
18318               (Call("MSUB",CTy"MultDiv",Var("v208",PTy(FTy 5,FTy 5))),
18319                Apply
18320                  (Call
18321                     ("dfn'MSUB",ATy(qTy,qTy),Var("v208",PTy(FTy 5,FTy 5))),
18322                   qVar"state")),
18323               (Call("MSUBU",CTy"MultDiv",Var("v209",PTy(FTy 5,FTy 5))),
18324                Apply
18325                  (Call
18326                     ("dfn'MSUBU",ATy(qTy,qTy),
18327                      Var("v209",PTy(FTy 5,FTy 5))),qVar"state")),
18328               (Call("MTHI",CTy"MultDiv",Var("v210",FTy 5)),
18329                Apply
18330                  (Call("dfn'MTHI",ATy(qTy,qTy),Var("v210",FTy 5)),
18331                   qVar"state")),
18332               (Call("MTLO",CTy"MultDiv",Var("v211",FTy 5)),
18333                Apply
18334                  (Call("dfn'MTLO",ATy(qTy,qTy),Var("v211",FTy 5)),
18335                   qVar"state")),
18336               (Call
18337                  ("MUL",CTy"MultDiv",
18338                   Var("v212",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18339                Apply
18340                  (Call
18341                     ("dfn'MUL",ATy(qTy,qTy),
18342                      Var("v212",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
18343               (Call("MULT",CTy"MultDiv",Var("v213",PTy(FTy 5,FTy 5))),
18344                Apply
18345                  (Call
18346                     ("dfn'MULT",ATy(qTy,qTy),Var("v213",PTy(FTy 5,FTy 5))),
18347                   qVar"state")),
18348               (Call("MULTU",CTy"MultDiv",Var("v214",PTy(FTy 5,FTy 5))),
18349                Apply
18350                  (Call
18351                     ("dfn'MULTU",ATy(qTy,qTy),
18352                      Var("v214",PTy(FTy 5,FTy 5))),qVar"state"))])),
18353          (Call("SDC2",CTy"instruction",Var("v215",CTy"SDC2")),
18354           CS(Var("v215",CTy"SDC2"),
18355              [(Call("CHERISDC2",CTy"SDC2",Var("v216",CTy"CHERISDC2")),
18356                CS(Var("v216",CTy"CHERISDC2"),
18357                   [(Call
18358                       ("CSC",CTy"CHERISDC2",
18359                        Var("v217",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 11))))),
18360                     Apply
18361                       (Call
18362                          ("dfn'CSC",ATy(qTy,qTy),
18363                           Var("v217",
18364                               PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 11))))),
18365                        qVar"state"))]))])),
18366          (Call("SWC2",CTy"instruction",Var("v218",CTy"SWC2")),
18367           CS(Var("v218",CTy"SWC2"),
18368              [(Call("CHERISWC2",CTy"SWC2",Var("v219",CTy"CHERISWC2")),
18369                CS(Var("v219",CTy"CHERISWC2"),
18370                   [(Call
18371                       ("CStore",CTy"CHERISWC2",
18372                        Var("v220",
18373                            PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,PTy(F8,FTy 2)))))),
18374                     Apply
18375                       (Call
18376                          ("dfn'CStore",ATy(qTy,qTy),
18377                           Var("v220",
18378                               PTy(FTy 5,
18379                                   PTy(FTy 5,PTy(FTy 5,PTy(F8,FTy 2)))))),
18380                        qVar"state"))]))])),
18381          (Call("Shift",CTy"instruction",Var("v221",CTy"Shift")),
18382           CS(Var("v221",CTy"Shift"),
18383              [(Call
18384                  ("DSLL",CTy"Shift",
18385                   Var("v222",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18386                Apply
18387                  (Call
18388                     ("dfn'DSLL",ATy(qTy,qTy),
18389                      Var("v222",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
18390               (Call
18391                  ("DSLL32",CTy"Shift",
18392                   Var("v223",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18393                Apply
18394                  (Call
18395                     ("dfn'DSLL32",ATy(qTy,qTy),
18396                      Var("v223",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
18397               (Call
18398                  ("DSLLV",CTy"Shift",
18399                   Var("v224",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18400                Apply
18401                  (Call
18402                     ("dfn'DSLLV",ATy(qTy,qTy),
18403                      Var("v224",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
18404               (Call
18405                  ("DSRA",CTy"Shift",
18406                   Var("v225",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18407                Apply
18408                  (Call
18409                     ("dfn'DSRA",ATy(qTy,qTy),
18410                      Var("v225",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
18411               (Call
18412                  ("DSRA32",CTy"Shift",
18413                   Var("v226",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18414                Apply
18415                  (Call
18416                     ("dfn'DSRA32",ATy(qTy,qTy),
18417                      Var("v226",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
18418               (Call
18419                  ("DSRAV",CTy"Shift",
18420                   Var("v227",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18421                Apply
18422                  (Call
18423                     ("dfn'DSRAV",ATy(qTy,qTy),
18424                      Var("v227",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
18425               (Call
18426                  ("DSRL",CTy"Shift",
18427                   Var("v228",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18428                Apply
18429                  (Call
18430                     ("dfn'DSRL",ATy(qTy,qTy),
18431                      Var("v228",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
18432               (Call
18433                  ("DSRL32",CTy"Shift",
18434                   Var("v229",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18435                Apply
18436                  (Call
18437                     ("dfn'DSRL32",ATy(qTy,qTy),
18438                      Var("v229",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
18439               (Call
18440                  ("DSRLV",CTy"Shift",
18441                   Var("v230",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18442                Apply
18443                  (Call
18444                     ("dfn'DSRLV",ATy(qTy,qTy),
18445                      Var("v230",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
18446               (Call
18447                  ("SLL",CTy"Shift",
18448                   Var("v231",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18449                Apply
18450                  (Call
18451                     ("dfn'SLL",ATy(qTy,qTy),
18452                      Var("v231",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
18453               (Call
18454                  ("SLLV",CTy"Shift",
18455                   Var("v232",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18456                Apply
18457                  (Call
18458                     ("dfn'SLLV",ATy(qTy,qTy),
18459                      Var("v232",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
18460               (Call
18461                  ("SRA",CTy"Shift",
18462                   Var("v233",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18463                Apply
18464                  (Call
18465                     ("dfn'SRA",ATy(qTy,qTy),
18466                      Var("v233",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
18467               (Call
18468                  ("SRAV",CTy"Shift",
18469                   Var("v234",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18470                Apply
18471                  (Call
18472                     ("dfn'SRAV",ATy(qTy,qTy),
18473                      Var("v234",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
18474               (Call
18475                  ("SRL",CTy"Shift",
18476                   Var("v235",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18477                Apply
18478                  (Call
18479                     ("dfn'SRL",ATy(qTy,qTy),
18480                      Var("v235",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
18481               (Call
18482                  ("SRLV",CTy"Shift",
18483                   Var("v236",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
18484                Apply
18485                  (Call
18486                     ("dfn'SRLV",ATy(qTy,qTy),
18487                      Var("v236",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state"))])),
18488          (Call("Store",CTy"instruction",Var("v237",CTy"Store")),
18489           CS(Var("v237",CTy"Store"),
18490              [(Call
18491                  ("SB",CTy"Store",Var("v238",PTy(FTy 5,PTy(FTy 5,F16)))),
18492                Apply
18493                  (Call
18494                     ("dfn'SB",ATy(qTy,qTy),
18495                      Var("v238",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
18496               (Call
18497                  ("SC",CTy"Store",Var("v239",PTy(FTy 5,PTy(FTy 5,F16)))),
18498                Apply
18499                  (Call
18500                     ("dfn'SC",ATy(qTy,qTy),
18501                      Var("v239",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
18502               (Call
18503                  ("SCD",CTy"Store",Var("v240",PTy(FTy 5,PTy(FTy 5,F16)))),
18504                Apply
18505                  (Call
18506                     ("dfn'SCD",ATy(qTy,qTy),
18507                      Var("v240",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
18508               (Call
18509                  ("SD",CTy"Store",Var("v241",PTy(FTy 5,PTy(FTy 5,F16)))),
18510                Apply
18511                  (Call
18512                     ("dfn'SD",ATy(qTy,qTy),
18513                      Var("v241",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
18514               (Call
18515                  ("SDL",CTy"Store",Var("v242",PTy(FTy 5,PTy(FTy 5,F16)))),
18516                Apply
18517                  (Call
18518                     ("dfn'SDL",ATy(qTy,qTy),
18519                      Var("v242",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
18520               (Call
18521                  ("SDR",CTy"Store",Var("v243",PTy(FTy 5,PTy(FTy 5,F16)))),
18522                Apply
18523                  (Call
18524                     ("dfn'SDR",ATy(qTy,qTy),
18525                      Var("v243",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
18526               (Call
18527                  ("SH",CTy"Store",Var("v244",PTy(FTy 5,PTy(FTy 5,F16)))),
18528                Apply
18529                  (Call
18530                     ("dfn'SH",ATy(qTy,qTy),
18531                      Var("v244",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
18532               (Call
18533                  ("SW",CTy"Store",Var("v245",PTy(FTy 5,PTy(FTy 5,F16)))),
18534                Apply
18535                  (Call
18536                     ("dfn'SW",ATy(qTy,qTy),
18537                      Var("v245",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
18538               (Call
18539                  ("SWL",CTy"Store",Var("v246",PTy(FTy 5,PTy(FTy 5,F16)))),
18540                Apply
18541                  (Call
18542                     ("dfn'SWL",ATy(qTy,qTy),
18543                      Var("v246",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
18544               (Call
18545                  ("SWR",CTy"Store",Var("v247",PTy(FTy 5,PTy(FTy 5,F16)))),
18546                Apply
18547                  (Call
18548                     ("dfn'SWR",ATy(qTy,qTy),
18549                      Var("v247",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state"))])),
18550          (Call("Trap",CTy"instruction",Var("v248",CTy"Trap")),
18551           CS(Var("v248",CTy"Trap"),
18552              [(Call("TEQ",CTy"Trap",Var("v249",PTy(FTy 5,FTy 5))),
18553                Apply
18554                  (Call
18555                     ("dfn'TEQ",ATy(qTy,qTy),Var("v249",PTy(FTy 5,FTy 5))),
18556                   qVar"state")),
18557               (Call("TEQI",CTy"Trap",Var("v250",PTy(FTy 5,F16))),
18558                Apply
18559                  (Call
18560                     ("dfn'TEQI",ATy(qTy,qTy),Var("v250",PTy(FTy 5,F16))),
18561                   qVar"state")),
18562               (Call("TGE",CTy"Trap",Var("v251",PTy(FTy 5,FTy 5))),
18563                Apply
18564                  (Call
18565                     ("dfn'TGE",ATy(qTy,qTy),Var("v251",PTy(FTy 5,FTy 5))),
18566                   qVar"state")),
18567               (Call("TGEI",CTy"Trap",Var("v252",PTy(FTy 5,F16))),
18568                Apply
18569                  (Call
18570                     ("dfn'TGEI",ATy(qTy,qTy),Var("v252",PTy(FTy 5,F16))),
18571                   qVar"state")),
18572               (Call("TGEIU",CTy"Trap",Var("v253",PTy(FTy 5,F16))),
18573                Apply
18574                  (Call
18575                     ("dfn'TGEIU",ATy(qTy,qTy),Var("v253",PTy(FTy 5,F16))),
18576                   qVar"state")),
18577               (Call("TGEU",CTy"Trap",Var("v254",PTy(FTy 5,FTy 5))),
18578                Apply
18579                  (Call
18580                     ("dfn'TGEU",ATy(qTy,qTy),Var("v254",PTy(FTy 5,FTy 5))),
18581                   qVar"state")),
18582               (Call("TLT",CTy"Trap",Var("v255",PTy(FTy 5,FTy 5))),
18583                Apply
18584                  (Call
18585                     ("dfn'TLT",ATy(qTy,qTy),Var("v255",PTy(FTy 5,FTy 5))),
18586                   qVar"state")),
18587               (Call("TLTI",CTy"Trap",Var("v256",PTy(FTy 5,F16))),
18588                Apply
18589                  (Call
18590                     ("dfn'TLTI",ATy(qTy,qTy),Var("v256",PTy(FTy 5,F16))),
18591                   qVar"state")),
18592               (Call("TLTIU",CTy"Trap",Var("v257",PTy(FTy 5,F16))),
18593                Apply
18594                  (Call
18595                     ("dfn'TLTIU",ATy(qTy,qTy),Var("v257",PTy(FTy 5,F16))),
18596                   qVar"state")),
18597               (Call("TLTU",CTy"Trap",Var("v258",PTy(FTy 5,FTy 5))),
18598                Apply
18599                  (Call
18600                     ("dfn'TLTU",ATy(qTy,qTy),Var("v258",PTy(FTy 5,FTy 5))),
18601                   qVar"state")),
18602               (Call("TNE",CTy"Trap",Var("v259",PTy(FTy 5,FTy 5))),
18603                Apply
18604                  (Call
18605                     ("dfn'TNE",ATy(qTy,qTy),Var("v259",PTy(FTy 5,FTy 5))),
18606                   qVar"state")),
18607               (Call("TNEI",CTy"Trap",Var("v260",PTy(FTy 5,F16))),
18608                Apply
18609                  (Call
18610                     ("dfn'TNEI",ATy(qTy,qTy),Var("v260",PTy(FTy 5,F16))),
18611                   qVar"state"))]))])))
18612;
18613val COP1Decode_def = Def
18614  ("COP1Decode",Var("v",FTy 26),
18615   Call
18616     ("COP1",CTy"instruction",
18617      Let(TP[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",bVar"b'21",
18618             bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",bVar"b'16",
18619             bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",bVar"b'11",
18620             bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6",bVar"b'5",
18621             bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"],
18622          BL(26,Var("v",FTy 26)),
18623          ITB([(bVar"b'21",
18624                ITB([(bVar"b'3",
18625                      ITB([(bVar"b'2",
18626                            ITE(Bop(And,bVar"b'25",
18627                                    Bop(And,Mop(Not,bVar"b'24"),
18628                                        Bop(And,Mop(Not,bVar"b'23"),
18629                                            Bop(And,Mop(Not,bVar"b'22"),
18630                                                Bop(And,
18631                                                    Mop(Not,bVar"b'20"),
18632                                                    Bop(And,
18633                                                        Mop(Not,bVar"b'19"),
18634                                                        Bop(And,
18635                                                            Mop(Not,
18636                                                                bVar"b'18"),
18637                                                            Bop(And,
18638                                                                Mop(Not,
18639                                                                    bVar"b'17"),
18640                                                                Bop(And,
18641                                                                    Mop(Not,
18642                                                                        bVar"b'16"),
18643                                                                    Bop(And,
18644                                                                        Mop(Not,
18645                                                                            bVar"b'5"),
18646                                                                        Mop(Not,
18647                                                                            bVar"b'4"))))))))))),
18648                                ITB([(Bop(And,Mop(Not,bVar"b'1"),
18649                                          Mop(Not,bVar"b'0")),
18650                                      Call
18651                                        ("ROUND_W_D",CTy"COP1",
18652                                         TP[Mop(Cast(FTy 5),
18653                                                LL[bVar"b'10",bVar"b'9",
18654                                                   bVar"b'8",bVar"b'7",
18655                                                   bVar"b'6"]),
18656                                            Mop(Cast(FTy 5),
18657                                                LL[bVar"b'15",bVar"b'14",
18658                                                   bVar"b'13",bVar"b'12",
18659                                                   bVar"b'11"])])),
18660                                     (Bop(And,Mop(Not,bVar"b'1"),bVar"b'0"),
18661                                      Call
18662                                        ("TRUNC_W_D",CTy"COP1",
18663                                         TP[Mop(Cast(FTy 5),
18664                                                LL[bVar"b'10",bVar"b'9",
18665                                                   bVar"b'8",bVar"b'7",
18666                                                   bVar"b'6"]),
18667                                            Mop(Cast(FTy 5),
18668                                                LL[bVar"b'15",bVar"b'14",
18669                                                   bVar"b'13",bVar"b'12",
18670                                                   bVar"b'11"])])),
18671                                     (Bop(And,bVar"b'1",Mop(Not,bVar"b'0")),
18672                                      Call
18673                                        ("CEIL_W_D",CTy"COP1",
18674                                         TP[Mop(Cast(FTy 5),
18675                                                LL[bVar"b'10",bVar"b'9",
18676                                                   bVar"b'8",bVar"b'7",
18677                                                   bVar"b'6"]),
18678                                            Mop(Cast(FTy 5),
18679                                                LL[bVar"b'15",bVar"b'14",
18680                                                   bVar"b'13",bVar"b'12",
18681                                                   bVar"b'11"])])),
18682                                     (Bop(And,bVar"b'1",bVar"b'0"),
18683                                      Call
18684                                        ("FLOOR_W_D",CTy"COP1",
18685                                         TP[Mop(Cast(FTy 5),
18686                                                LL[bVar"b'10",bVar"b'9",
18687                                                   bVar"b'8",bVar"b'7",
18688                                                   bVar"b'6"]),
18689                                            Mop(Cast(FTy 5),
18690                                                LL[bVar"b'15",bVar"b'14",
18691                                                   bVar"b'13",bVar"b'12",
18692                                                   bVar"b'11"])]))],
18693                                    Const
18694                                      ("UnknownFPInstruction",CTy"COP1")),
18695                                Const("UnknownFPInstruction",CTy"COP1"))),
18696                           (Bop(And,bVar"b'25",
18697                                Bop(And,Mop(Not,bVar"b'24"),
18698                                    Bop(And,Mop(Not,bVar"b'23"),
18699                                        Bop(And,Mop(Not,bVar"b'22"),
18700                                            Bop(And,Mop(Not,bVar"b'20"),
18701                                                Bop(And,
18702                                                    Mop(Not,bVar"b'19"),
18703                                                    Bop(And,
18704                                                        Mop(Not,bVar"b'18"),
18705                                                        Bop(And,
18706                                                            Mop(Not,
18707                                                                bVar"b'17"),
18708                                                            Bop(And,
18709                                                                Mop(Not,
18710                                                                    bVar"b'16"),
18711                                                                Bop(And,
18712                                                                    Mop(Not,
18713                                                                        bVar"b'5"),
18714                                                                    Mop(Not,
18715                                                                        bVar"b'4"))))))))))),
18716                            ITB([(Bop(And,Mop(Not,bVar"b'1"),
18717                                      Mop(Not,bVar"b'0")),
18718                                  Call
18719                                    ("ROUND_L_D",CTy"COP1",
18720                                     TP[Mop(Cast(FTy 5),
18721                                            LL[bVar"b'10",bVar"b'9",
18722                                               bVar"b'8",bVar"b'7",
18723                                               bVar"b'6"]),
18724                                        Mop(Cast(FTy 5),
18725                                            LL[bVar"b'15",bVar"b'14",
18726                                               bVar"b'13",bVar"b'12",
18727                                               bVar"b'11"])])),
18728                                 (Bop(And,Mop(Not,bVar"b'1"),bVar"b'0"),
18729                                  Call
18730                                    ("TRUNC_L_D",CTy"COP1",
18731                                     TP[Mop(Cast(FTy 5),
18732                                            LL[bVar"b'10",bVar"b'9",
18733                                               bVar"b'8",bVar"b'7",
18734                                               bVar"b'6"]),
18735                                        Mop(Cast(FTy 5),
18736                                            LL[bVar"b'15",bVar"b'14",
18737                                               bVar"b'13",bVar"b'12",
18738                                               bVar"b'11"])])),
18739                                 (Bop(And,bVar"b'1",Mop(Not,bVar"b'0")),
18740                                  Call
18741                                    ("CEIL_L_D",CTy"COP1",
18742                                     TP[Mop(Cast(FTy 5),
18743                                            LL[bVar"b'10",bVar"b'9",
18744                                               bVar"b'8",bVar"b'7",
18745                                               bVar"b'6"]),
18746                                        Mop(Cast(FTy 5),
18747                                            LL[bVar"b'15",bVar"b'14",
18748                                               bVar"b'13",bVar"b'12",
18749                                               bVar"b'11"])])),
18750                                 (Bop(And,bVar"b'1",bVar"b'0"),
18751                                  Call
18752                                    ("FLOOR_L_D",CTy"COP1",
18753                                     TP[Mop(Cast(FTy 5),
18754                                            LL[bVar"b'10",bVar"b'9",
18755                                               bVar"b'8",bVar"b'7",
18756                                               bVar"b'6"]),
18757                                        Mop(Cast(FTy 5),
18758                                            LL[bVar"b'15",bVar"b'14",
18759                                               bVar"b'13",bVar"b'12",
18760                                               bVar"b'11"])]))],
18761                                Const("UnknownFPInstruction",CTy"COP1")))],
18762                          Const("UnknownFPInstruction",CTy"COP1"))),
18763                     (bVar"b'5",
18764                      ITE(Bop(And,bVar"b'25",
18765                              Bop(And,Mop(Not,bVar"b'24"),
18766                                  Mop(Not,bVar"b'22"))),
18767                          ITB([(Bop(And,Mop(Not,bVar"b'23"),
18768                                    Bop(And,Mop(Not,bVar"b'7"),
18769                                        Bop(And,Mop(Not,bVar"b'6"),
18770                                            bVar"b'4"))),
18771                                Call
18772                                  ("C_cond_D",CTy"COP1",
18773                                   TP[Mop(Cast(FTy 5),
18774                                          LL[bVar"b'15",bVar"b'14",
18775                                             bVar"b'13",bVar"b'12",
18776                                             bVar"b'11"]),
18777                                      Mop(Cast(FTy 5),
18778                                          LL[bVar"b'20",bVar"b'19",
18779                                             bVar"b'18",bVar"b'17",
18780                                             bVar"b'16"]),
18781                                      Mop(Cast(FTy 3),
18782                                          LL[bVar"b'2",bVar"b'1",bVar"b'0"]),
18783                                      Mop(Cast(FTy 3),
18784                                          LL[bVar"b'10",bVar"b'9",
18785                                             bVar"b'8"])])),
18786                               (Bop(And,Mop(Not,bVar"b'23"),
18787                                    Bop(And,Mop(Not,bVar"b'20"),
18788                                        Bop(And,Mop(Not,bVar"b'19"),
18789                                            Bop(And,Mop(Not,bVar"b'18"),
18790                                                Bop(And,
18791                                                    Mop(Not,bVar"b'17"),
18792                                                    Bop(And,
18793                                                        Mop(Not,bVar"b'16"),
18794                                                        Bop(And,
18795                                                            Mop(Not,
18796                                                                bVar"b'4"),
18797                                                            Bop(And,
18798                                                                Mop(Not,
18799                                                                    bVar"b'2"),
18800                                                                Bop(And,
18801                                                                    Mop(Not,
18802                                                                        bVar"b'1"),
18803                                                                    Mop(Not,
18804                                                                        bVar"b'0")))))))))),
18805                                Call
18806                                  ("CVT_S_D",CTy"COP1",
18807                                   TP[Mop(Cast(FTy 5),
18808                                          LL[bVar"b'10",bVar"b'9",
18809                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
18810                                      Mop(Cast(FTy 5),
18811                                          LL[bVar"b'15",bVar"b'14",
18812                                             bVar"b'13",bVar"b'12",
18813                                             bVar"b'11"])])),
18814                               (Bop(And,bVar"b'23",
18815                                    Bop(And,Mop(Not,bVar"b'20"),
18816                                        Bop(And,Mop(Not,bVar"b'19"),
18817                                            Bop(And,Mop(Not,bVar"b'18"),
18818                                                Bop(And,
18819                                                    Mop(Not,bVar"b'17"),
18820                                                    Bop(And,
18821                                                        Mop(Not,bVar"b'16"),
18822                                                        Bop(And,
18823                                                            Mop(Not,
18824                                                                bVar"b'4"),
18825                                                            Bop(And,
18826                                                                Mop(Not,
18827                                                                    bVar"b'2"),
18828                                                                Bop(And,
18829                                                                    Mop(Not,
18830                                                                        bVar"b'1"),
18831                                                                    Mop(Not,
18832                                                                        bVar"b'0")))))))))),
18833                                Call
18834                                  ("CVT_S_L",CTy"COP1",
18835                                   TP[Mop(Cast(FTy 5),
18836                                          LL[bVar"b'10",bVar"b'9",
18837                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
18838                                      Mop(Cast(FTy 5),
18839                                          LL[bVar"b'15",bVar"b'14",
18840                                             bVar"b'13",bVar"b'12",
18841                                             bVar"b'11"])])),
18842                               (Bop(And,bVar"b'23",
18843                                    Bop(And,Mop(Not,bVar"b'20"),
18844                                        Bop(And,Mop(Not,bVar"b'19"),
18845                                            Bop(And,Mop(Not,bVar"b'18"),
18846                                                Bop(And,
18847                                                    Mop(Not,bVar"b'17"),
18848                                                    Bop(And,
18849                                                        Mop(Not,bVar"b'16"),
18850                                                        Bop(And,
18851                                                            Mop(Not,
18852                                                                bVar"b'4"),
18853                                                            Bop(And,
18854                                                                Mop(Not,
18855                                                                    bVar"b'2"),
18856                                                                Bop(And,
18857                                                                    Mop(Not,
18858                                                                        bVar"b'1"),
18859                                                                    bVar"b'0"))))))))),
18860                                Call
18861                                  ("CVT_D_L",CTy"COP1",
18862                                   TP[Mop(Cast(FTy 5),
18863                                          LL[bVar"b'10",bVar"b'9",
18864                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
18865                                      Mop(Cast(FTy 5),
18866                                          LL[bVar"b'15",bVar"b'14",
18867                                             bVar"b'13",bVar"b'12",
18868                                             bVar"b'11"])])),
18869                               (Bop(And,Mop(Not,bVar"b'23"),
18870                                    Bop(And,Mop(Not,bVar"b'20"),
18871                                        Bop(And,Mop(Not,bVar"b'19"),
18872                                            Bop(And,Mop(Not,bVar"b'18"),
18873                                                Bop(And,
18874                                                    Mop(Not,bVar"b'17"),
18875                                                    Bop(And,
18876                                                        Mop(Not,bVar"b'16"),
18877                                                        Bop(And,
18878                                                            Mop(Not,
18879                                                                bVar"b'4"),
18880                                                            Bop(And,
18881                                                                bVar"b'2",
18882                                                                Bop(And,
18883                                                                    Mop(Not,
18884                                                                        bVar"b'1"),
18885                                                                    Mop(Not,
18886                                                                        bVar"b'0")))))))))),
18887                                Call
18888                                  ("CVT_W_D",CTy"COP1",
18889                                   TP[Mop(Cast(FTy 5),
18890                                          LL[bVar"b'10",bVar"b'9",
18891                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
18892                                      Mop(Cast(FTy 5),
18893                                          LL[bVar"b'15",bVar"b'14",
18894                                             bVar"b'13",bVar"b'12",
18895                                             bVar"b'11"])])),
18896                               (Bop(And,Mop(Not,bVar"b'23"),
18897                                    Bop(And,Mop(Not,bVar"b'20"),
18898                                        Bop(And,Mop(Not,bVar"b'19"),
18899                                            Bop(And,Mop(Not,bVar"b'18"),
18900                                                Bop(And,
18901                                                    Mop(Not,bVar"b'17"),
18902                                                    Bop(And,
18903                                                        Mop(Not,bVar"b'16"),
18904                                                        Bop(And,
18905                                                            Mop(Not,
18906                                                                bVar"b'4"),
18907                                                            Bop(And,
18908                                                                bVar"b'2",
18909                                                                Bop(And,
18910                                                                    Mop(Not,
18911                                                                        bVar"b'1"),
18912                                                                    bVar"b'0"))))))))),
18913                                Call
18914                                  ("CVT_L_D",CTy"COP1",
18915                                   TP[Mop(Cast(FTy 5),
18916                                          LL[bVar"b'10",bVar"b'9",
18917                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
18918                                      Mop(Cast(FTy 5),
18919                                          LL[bVar"b'15",bVar"b'14",
18920                                             bVar"b'13",bVar"b'12",
18921                                             bVar"b'11"])]))],
18922                              Const("UnknownFPInstruction",CTy"COP1")),
18923                          Const("UnknownFPInstruction",CTy"COP1"))),
18924                     (bVar"b'0",
18925                      ITE(Bop(And,bVar"b'25",
18926                              Bop(And,Mop(Not,bVar"b'24"),
18927                                  Bop(And,Mop(Not,bVar"b'23"),
18928                                      Mop(Not,bVar"b'22")))),
18929                          ITB([(Bop(And,Mop(Not,bVar"b'4"),
18930                                    Bop(And,Mop(Not,bVar"b'2"),
18931                                        Mop(Not,bVar"b'1"))),
18932                                Call
18933                                  ("SUB_D",CTy"COP1",
18934                                   TP[Mop(Cast(FTy 5),
18935                                          LL[bVar"b'10",bVar"b'9",
18936                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
18937                                      Mop(Cast(FTy 5),
18938                                          LL[bVar"b'15",bVar"b'14",
18939                                             bVar"b'13",bVar"b'12",
18940                                             bVar"b'11"]),
18941                                      Mop(Cast(FTy 5),
18942                                          LL[bVar"b'20",bVar"b'19",
18943                                             bVar"b'18",bVar"b'17",
18944                                             bVar"b'16"])])),
18945                               (Bop(And,Mop(Not,bVar"b'4"),
18946                                    Bop(And,Mop(Not,bVar"b'2"),bVar"b'1")),
18947                                Call
18948                                  ("DIV_D",CTy"COP1",
18949                                   TP[Mop(Cast(FTy 5),
18950                                          LL[bVar"b'10",bVar"b'9",
18951                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
18952                                      Mop(Cast(FTy 5),
18953                                          LL[bVar"b'15",bVar"b'14",
18954                                             bVar"b'13",bVar"b'12",
18955                                             bVar"b'11"]),
18956                                      Mop(Cast(FTy 5),
18957                                          LL[bVar"b'20",bVar"b'19",
18958                                             bVar"b'18",bVar"b'17",
18959                                             bVar"b'16"])])),
18960                               (Bop(And,Mop(Not,bVar"b'20"),
18961                                    Bop(And,Mop(Not,bVar"b'19"),
18962                                        Bop(And,Mop(Not,bVar"b'18"),
18963                                            Bop(And,Mop(Not,bVar"b'17"),
18964                                                Bop(And,
18965                                                    Mop(Not,bVar"b'16"),
18966                                                    Bop(And,
18967                                                        Mop(Not,bVar"b'4"),
18968                                                        Bop(And,bVar"b'2",
18969                                                            Mop(Not,
18970                                                                bVar"b'1")))))))),
18971                                Call
18972                                  ("ABS_D",CTy"COP1",
18973                                   TP[Mop(Cast(FTy 5),
18974                                          LL[bVar"b'10",bVar"b'9",
18975                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
18976                                      Mop(Cast(FTy 5),
18977                                          LL[bVar"b'15",bVar"b'14",
18978                                             bVar"b'13",bVar"b'12",
18979                                             bVar"b'11"])])),
18980                               (Bop(And,Mop(Not,bVar"b'20"),
18981                                    Bop(And,Mop(Not,bVar"b'19"),
18982                                        Bop(And,Mop(Not,bVar"b'18"),
18983                                            Bop(And,Mop(Not,bVar"b'17"),
18984                                                Bop(And,
18985                                                    Mop(Not,bVar"b'16"),
18986                                                    Bop(And,
18987                                                        Mop(Not,bVar"b'4"),
18988                                                        Bop(And,bVar"b'2",
18989                                                            bVar"b'1"))))))),
18990                                Call
18991                                  ("NEG_D",CTy"COP1",
18992                                   TP[Mop(Cast(FTy 5),
18993                                          LL[bVar"b'10",bVar"b'9",
18994                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
18995                                      Mop(Cast(FTy 5),
18996                                          LL[bVar"b'15",bVar"b'14",
18997                                             bVar"b'13",bVar"b'12",
18998                                             bVar"b'11"])])),
18999                               (Bop(And,Mop(Not,bVar"b'17"),
19000                                    Bop(And,Mop(Not,bVar"b'16"),
19001                                        Bop(And,bVar"b'4",
19002                                            Bop(And,Mop(Not,bVar"b'2"),
19003                                                Mop(Not,bVar"b'1"))))),
19004                                Call
19005                                  ("MOVF_D",CTy"COP1",
19006                                   TP[Mop(Cast(FTy 5),
19007                                          LL[bVar"b'10",bVar"b'9",
19008                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
19009                                      Mop(Cast(FTy 5),
19010                                          LL[bVar"b'15",bVar"b'14",
19011                                             bVar"b'13",bVar"b'12",
19012                                             bVar"b'11"]),
19013                                      Mop(Cast(FTy 3),
19014                                          LL[bVar"b'20",bVar"b'19",
19015                                             bVar"b'18"])])),
19016                               (Bop(And,Mop(Not,bVar"b'17"),
19017                                    Bop(And,bVar"b'16",
19018                                        Bop(And,bVar"b'4",
19019                                            Bop(And,Mop(Not,bVar"b'2"),
19020                                                Mop(Not,bVar"b'1"))))),
19021                                Call
19022                                  ("MOVT_D",CTy"COP1",
19023                                   TP[Mop(Cast(FTy 5),
19024                                          LL[bVar"b'10",bVar"b'9",
19025                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
19026                                      Mop(Cast(FTy 5),
19027                                          LL[bVar"b'15",bVar"b'14",
19028                                             bVar"b'13",bVar"b'12",
19029                                             bVar"b'11"]),
19030                                      Mop(Cast(FTy 3),
19031                                          LL[bVar"b'20",bVar"b'19",
19032                                             bVar"b'18"])])),
19033                               (Bop(And,bVar"b'4",
19034                                    Bop(And,Mop(Not,bVar"b'2"),bVar"b'1")),
19035                                Call
19036                                  ("MOVN_D",CTy"COP1",
19037                                   TP[Mop(Cast(FTy 5),
19038                                          LL[bVar"b'10",bVar"b'9",
19039                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
19040                                      Mop(Cast(FTy 5),
19041                                          LL[bVar"b'15",bVar"b'14",
19042                                             bVar"b'13",bVar"b'12",
19043                                             bVar"b'11"]),
19044                                      Mop(Cast(FTy 5),
19045                                          LL[bVar"b'20",bVar"b'19",
19046                                             bVar"b'18",bVar"b'17",
19047                                             bVar"b'16"])]))],
19048                              Const("UnknownFPInstruction",CTy"COP1")),
19049                          Const("UnknownFPInstruction",CTy"COP1"))),
19050                     (Bop(And,Mop(Not,bVar"b'24"),Mop(Not,bVar"b'22")),
19051                      ITB([(Bop(And,Mop(Not,bVar"b'25"),
19052                                Bop(And,Mop(Not,bVar"b'23"),
19053                                    Bop(And,Mop(Not,bVar"b'10"),
19054                                        Bop(And,Mop(Not,bVar"b'9"),
19055                                            Bop(And,Mop(Not,bVar"b'8"),
19056                                                Bop(And,
19057                                                    Mop(Not,bVar"b'7"),
19058                                                    Bop(And,
19059                                                        Mop(Not,bVar"b'6"),
19060                                                        Bop(And,
19061                                                            Mop(Not,
19062                                                                bVar"b'4"),
19063                                                            Bop(And,
19064                                                                Mop(Not,
19065                                                                    bVar"b'2"),
19066                                                                Mop(Not,
19067                                                                    bVar"b'1")))))))))),
19068                            Call
19069                              ("DMFC1",CTy"COP1",
19070                               TP[Mop(Cast(FTy 5),
19071                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
19072                                         bVar"b'17",bVar"b'16"]),
19073                                  Mop(Cast(FTy 5),
19074                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
19075                                         bVar"b'12",bVar"b'11"])])),
19076                           (Bop(And,Mop(Not,bVar"b'25"),
19077                                Bop(And,bVar"b'23",
19078                                    Bop(And,Mop(Not,bVar"b'10"),
19079                                        Bop(And,Mop(Not,bVar"b'9"),
19080                                            Bop(And,Mop(Not,bVar"b'8"),
19081                                                Bop(And,
19082                                                    Mop(Not,bVar"b'7"),
19083                                                    Bop(And,
19084                                                        Mop(Not,bVar"b'6"),
19085                                                        Bop(And,
19086                                                            Mop(Not,
19087                                                                bVar"b'4"),
19088                                                            Bop(And,
19089                                                                Mop(Not,
19090                                                                    bVar"b'2"),
19091                                                                Mop(Not,
19092                                                                    bVar"b'1")))))))))),
19093                            Call
19094                              ("DMTC1",CTy"COP1",
19095                               TP[Mop(Cast(FTy 5),
19096                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
19097                                         bVar"b'17",bVar"b'16"]),
19098                                  Mop(Cast(FTy 5),
19099                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
19100                                         bVar"b'12",bVar"b'11"])])),
19101                           (Bop(And,bVar"b'25",
19102                                Bop(And,Mop(Not,bVar"b'23"),
19103                                    Bop(And,Mop(Not,bVar"b'4"),
19104                                        Bop(And,Mop(Not,bVar"b'2"),
19105                                            Mop(Not,bVar"b'1"))))),
19106                            Call
19107                              ("ADD_D",CTy"COP1",
19108                               TP[Mop(Cast(FTy 5),
19109                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
19110                                         bVar"b'7",bVar"b'6"]),
19111                                  Mop(Cast(FTy 5),
19112                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
19113                                         bVar"b'12",bVar"b'11"]),
19114                                  Mop(Cast(FTy 5),
19115                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
19116                                         bVar"b'17",bVar"b'16"])])),
19117                           (Bop(And,bVar"b'25",
19118                                Bop(And,Mop(Not,bVar"b'23"),
19119                                    Bop(And,Mop(Not,bVar"b'4"),
19120                                        Bop(And,Mop(Not,bVar"b'2"),
19121                                            bVar"b'1")))),
19122                            Call
19123                              ("MUL_D",CTy"COP1",
19124                               TP[Mop(Cast(FTy 5),
19125                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
19126                                         bVar"b'7",bVar"b'6"]),
19127                                  Mop(Cast(FTy 5),
19128                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
19129                                         bVar"b'12",bVar"b'11"]),
19130                                  Mop(Cast(FTy 5),
19131                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
19132                                         bVar"b'17",bVar"b'16"])])),
19133                           (Bop(And,bVar"b'25",
19134                                Bop(And,Mop(Not,bVar"b'23"),
19135                                    Bop(And,Mop(Not,bVar"b'20"),
19136                                        Bop(And,Mop(Not,bVar"b'19"),
19137                                            Bop(And,Mop(Not,bVar"b'18"),
19138                                                Bop(And,
19139                                                    Mop(Not,bVar"b'17"),
19140                                                    Bop(And,
19141                                                        Mop(Not,bVar"b'16"),
19142                                                        Bop(And,
19143                                                            Mop(Not,
19144                                                                bVar"b'4"),
19145                                                            Bop(And,
19146                                                                bVar"b'2",
19147                                                                Mop(Not,
19148                                                                    bVar"b'1")))))))))),
19149                            Call
19150                              ("SQRT_D",CTy"COP1",
19151                               TP[Mop(Cast(FTy 5),
19152                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
19153                                         bVar"b'7",bVar"b'6"]),
19154                                  Mop(Cast(FTy 5),
19155                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
19156                                         bVar"b'12",bVar"b'11"])])),
19157                           (Bop(And,bVar"b'25",
19158                                Bop(And,Mop(Not,bVar"b'23"),
19159                                    Bop(And,Mop(Not,bVar"b'20"),
19160                                        Bop(And,Mop(Not,bVar"b'19"),
19161                                            Bop(And,Mop(Not,bVar"b'18"),
19162                                                Bop(And,
19163                                                    Mop(Not,bVar"b'17"),
19164                                                    Bop(And,
19165                                                        Mop(Not,bVar"b'16"),
19166                                                        Bop(And,
19167                                                            Mop(Not,
19168                                                                bVar"b'4"),
19169                                                            Bop(And,
19170                                                                bVar"b'2",
19171                                                                bVar"b'1"))))))))),
19172                            Call
19173                              ("MOV_D",CTy"COP1",
19174                               TP[Mop(Cast(FTy 5),
19175                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
19176                                         bVar"b'7",bVar"b'6"]),
19177                                  Mop(Cast(FTy 5),
19178                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
19179                                         bVar"b'12",bVar"b'11"])])),
19180                           (Bop(And,bVar"b'25",
19181                                Bop(And,Mop(Not,bVar"b'23"),
19182                                    Bop(And,bVar"b'4",
19183                                        Bop(And,Mop(Not,bVar"b'2"),
19184                                            bVar"b'1")))),
19185                            Call
19186                              ("MOVZ_D",CTy"COP1",
19187                               TP[Mop(Cast(FTy 5),
19188                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
19189                                         bVar"b'7",bVar"b'6"]),
19190                                  Mop(Cast(FTy 5),
19191                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
19192                                         bVar"b'12",bVar"b'11"]),
19193                                  Mop(Cast(FTy 5),
19194                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
19195                                         bVar"b'17",bVar"b'16"])]))],
19196                          Const("UnknownFPInstruction",CTy"COP1")))],
19197                    Const("UnknownFPInstruction",CTy"COP1"))),
19198               (bVar"b'25",
19199                ITB([(bVar"b'3",
19200                      ITB([(bVar"b'2",
19201                            ITE(Bop(And,Mop(Not,bVar"b'24"),
19202                                    Bop(And,Mop(Not,bVar"b'23"),
19203                                        Bop(And,Mop(Not,bVar"b'22"),
19204                                            Bop(And,Mop(Not,bVar"b'20"),
19205                                                Bop(And,
19206                                                    Mop(Not,bVar"b'19"),
19207                                                    Bop(And,
19208                                                        Mop(Not,bVar"b'18"),
19209                                                        Bop(And,
19210                                                            Mop(Not,
19211                                                                bVar"b'17"),
19212                                                            Bop(And,
19213                                                                Mop(Not,
19214                                                                    bVar"b'16"),
19215                                                                Bop(And,
19216                                                                    Mop(Not,
19217                                                                        bVar"b'5"),
19218                                                                    Mop(Not,
19219                                                                        bVar"b'4")))))))))),
19220                                ITB([(Bop(And,Mop(Not,bVar"b'1"),
19221                                          Mop(Not,bVar"b'0")),
19222                                      Call
19223                                        ("ROUND_W_S",CTy"COP1",
19224                                         TP[Mop(Cast(FTy 5),
19225                                                LL[bVar"b'10",bVar"b'9",
19226                                                   bVar"b'8",bVar"b'7",
19227                                                   bVar"b'6"]),
19228                                            Mop(Cast(FTy 5),
19229                                                LL[bVar"b'15",bVar"b'14",
19230                                                   bVar"b'13",bVar"b'12",
19231                                                   bVar"b'11"])])),
19232                                     (Bop(And,Mop(Not,bVar"b'1"),bVar"b'0"),
19233                                      Call
19234                                        ("TRUNC_W_S",CTy"COP1",
19235                                         TP[Mop(Cast(FTy 5),
19236                                                LL[bVar"b'10",bVar"b'9",
19237                                                   bVar"b'8",bVar"b'7",
19238                                                   bVar"b'6"]),
19239                                            Mop(Cast(FTy 5),
19240                                                LL[bVar"b'15",bVar"b'14",
19241                                                   bVar"b'13",bVar"b'12",
19242                                                   bVar"b'11"])])),
19243                                     (Bop(And,bVar"b'1",Mop(Not,bVar"b'0")),
19244                                      Call
19245                                        ("CEIL_W_S",CTy"COP1",
19246                                         TP[Mop(Cast(FTy 5),
19247                                                LL[bVar"b'10",bVar"b'9",
19248                                                   bVar"b'8",bVar"b'7",
19249                                                   bVar"b'6"]),
19250                                            Mop(Cast(FTy 5),
19251                                                LL[bVar"b'15",bVar"b'14",
19252                                                   bVar"b'13",bVar"b'12",
19253                                                   bVar"b'11"])])),
19254                                     (Bop(And,bVar"b'1",bVar"b'0"),
19255                                      Call
19256                                        ("FLOOR_W_S",CTy"COP1",
19257                                         TP[Mop(Cast(FTy 5),
19258                                                LL[bVar"b'10",bVar"b'9",
19259                                                   bVar"b'8",bVar"b'7",
19260                                                   bVar"b'6"]),
19261                                            Mop(Cast(FTy 5),
19262                                                LL[bVar"b'15",bVar"b'14",
19263                                                   bVar"b'13",bVar"b'12",
19264                                                   bVar"b'11"])]))],
19265                                    Const
19266                                      ("UnknownFPInstruction",CTy"COP1")),
19267                                Const("UnknownFPInstruction",CTy"COP1"))),
19268                           (Bop(And,Mop(Not,bVar"b'24"),
19269                                Bop(And,Mop(Not,bVar"b'23"),
19270                                    Bop(And,Mop(Not,bVar"b'22"),
19271                                        Bop(And,Mop(Not,bVar"b'20"),
19272                                            Bop(And,Mop(Not,bVar"b'19"),
19273                                                Bop(And,
19274                                                    Mop(Not,bVar"b'18"),
19275                                                    Bop(And,
19276                                                        Mop(Not,bVar"b'17"),
19277                                                        Bop(And,
19278                                                            Mop(Not,
19279                                                                bVar"b'16"),
19280                                                            Bop(And,
19281                                                                Mop(Not,
19282                                                                    bVar"b'5"),
19283                                                                Mop(Not,
19284                                                                    bVar"b'4")))))))))),
19285                            ITB([(Bop(And,Mop(Not,bVar"b'1"),
19286                                      Mop(Not,bVar"b'0")),
19287                                  Call
19288                                    ("ROUND_L_S",CTy"COP1",
19289                                     TP[Mop(Cast(FTy 5),
19290                                            LL[bVar"b'10",bVar"b'9",
19291                                               bVar"b'8",bVar"b'7",
19292                                               bVar"b'6"]),
19293                                        Mop(Cast(FTy 5),
19294                                            LL[bVar"b'15",bVar"b'14",
19295                                               bVar"b'13",bVar"b'12",
19296                                               bVar"b'11"])])),
19297                                 (Bop(And,Mop(Not,bVar"b'1"),bVar"b'0"),
19298                                  Call
19299                                    ("TRUNC_L_S",CTy"COP1",
19300                                     TP[Mop(Cast(FTy 5),
19301                                            LL[bVar"b'10",bVar"b'9",
19302                                               bVar"b'8",bVar"b'7",
19303                                               bVar"b'6"]),
19304                                        Mop(Cast(FTy 5),
19305                                            LL[bVar"b'15",bVar"b'14",
19306                                               bVar"b'13",bVar"b'12",
19307                                               bVar"b'11"])])),
19308                                 (Bop(And,bVar"b'1",Mop(Not,bVar"b'0")),
19309                                  Call
19310                                    ("CEIL_L_S",CTy"COP1",
19311                                     TP[Mop(Cast(FTy 5),
19312                                            LL[bVar"b'10",bVar"b'9",
19313                                               bVar"b'8",bVar"b'7",
19314                                               bVar"b'6"]),
19315                                        Mop(Cast(FTy 5),
19316                                            LL[bVar"b'15",bVar"b'14",
19317                                               bVar"b'13",bVar"b'12",
19318                                               bVar"b'11"])])),
19319                                 (Bop(And,bVar"b'1",bVar"b'0"),
19320                                  Call
19321                                    ("FLOOR_L_S",CTy"COP1",
19322                                     TP[Mop(Cast(FTy 5),
19323                                            LL[bVar"b'10",bVar"b'9",
19324                                               bVar"b'8",bVar"b'7",
19325                                               bVar"b'6"]),
19326                                        Mop(Cast(FTy 5),
19327                                            LL[bVar"b'15",bVar"b'14",
19328                                               bVar"b'13",bVar"b'12",
19329                                               bVar"b'11"])]))],
19330                                Const("UnknownFPInstruction",CTy"COP1")))],
19331                          Const("UnknownFPInstruction",CTy"COP1"))),
19332                     (bVar"b'5",
19333                      ITE(Bop(And,Mop(Not,bVar"b'24"),Mop(Not,bVar"b'22")),
19334                          ITB([(Bop(And,Mop(Not,bVar"b'23"),
19335                                    Bop(And,Mop(Not,bVar"b'7"),
19336                                        Bop(And,Mop(Not,bVar"b'6"),
19337                                            bVar"b'4"))),
19338                                Call
19339                                  ("C_cond_S",CTy"COP1",
19340                                   TP[Mop(Cast(FTy 5),
19341                                          LL[bVar"b'15",bVar"b'14",
19342                                             bVar"b'13",bVar"b'12",
19343                                             bVar"b'11"]),
19344                                      Mop(Cast(FTy 5),
19345                                          LL[bVar"b'20",bVar"b'19",
19346                                             bVar"b'18",bVar"b'17",
19347                                             bVar"b'16"]),
19348                                      Mop(Cast(FTy 3),
19349                                          LL[bVar"b'2",bVar"b'1",bVar"b'0"]),
19350                                      Mop(Cast(FTy 3),
19351                                          LL[bVar"b'10",bVar"b'9",
19352                                             bVar"b'8"])])),
19353                               (Bop(And,bVar"b'23",
19354                                    Bop(And,Mop(Not,bVar"b'20"),
19355                                        Bop(And,Mop(Not,bVar"b'19"),
19356                                            Bop(And,Mop(Not,bVar"b'18"),
19357                                                Bop(And,
19358                                                    Mop(Not,bVar"b'17"),
19359                                                    Bop(And,
19360                                                        Mop(Not,bVar"b'16"),
19361                                                        Bop(And,
19362                                                            Mop(Not,
19363                                                                bVar"b'4"),
19364                                                            Bop(And,
19365                                                                Mop(Not,
19366                                                                    bVar"b'2"),
19367                                                                Bop(And,
19368                                                                    Mop(Not,
19369                                                                        bVar"b'1"),
19370                                                                    Mop(Not,
19371                                                                        bVar"b'0")))))))))),
19372                                Call
19373                                  ("CVT_S_W",CTy"COP1",
19374                                   TP[Mop(Cast(FTy 5),
19375                                          LL[bVar"b'10",bVar"b'9",
19376                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
19377                                      Mop(Cast(FTy 5),
19378                                          LL[bVar"b'15",bVar"b'14",
19379                                             bVar"b'13",bVar"b'12",
19380                                             bVar"b'11"])])),
19381                               (Bop(And,Mop(Not,bVar"b'23"),
19382                                    Bop(And,Mop(Not,bVar"b'20"),
19383                                        Bop(And,Mop(Not,bVar"b'19"),
19384                                            Bop(And,Mop(Not,bVar"b'18"),
19385                                                Bop(And,
19386                                                    Mop(Not,bVar"b'17"),
19387                                                    Bop(And,
19388                                                        Mop(Not,bVar"b'16"),
19389                                                        Bop(And,
19390                                                            Mop(Not,
19391                                                                bVar"b'4"),
19392                                                            Bop(And,
19393                                                                Mop(Not,
19394                                                                    bVar"b'2"),
19395                                                                Bop(And,
19396                                                                    Mop(Not,
19397                                                                        bVar"b'1"),
19398                                                                    bVar"b'0"))))))))),
19399                                Call
19400                                  ("CVT_D_S",CTy"COP1",
19401                                   TP[Mop(Cast(FTy 5),
19402                                          LL[bVar"b'10",bVar"b'9",
19403                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
19404                                      Mop(Cast(FTy 5),
19405                                          LL[bVar"b'15",bVar"b'14",
19406                                             bVar"b'13",bVar"b'12",
19407                                             bVar"b'11"])])),
19408                               (Bop(And,bVar"b'23",
19409                                    Bop(And,Mop(Not,bVar"b'20"),
19410                                        Bop(And,Mop(Not,bVar"b'19"),
19411                                            Bop(And,Mop(Not,bVar"b'18"),
19412                                                Bop(And,
19413                                                    Mop(Not,bVar"b'17"),
19414                                                    Bop(And,
19415                                                        Mop(Not,bVar"b'16"),
19416                                                        Bop(And,
19417                                                            Mop(Not,
19418                                                                bVar"b'4"),
19419                                                            Bop(And,
19420                                                                Mop(Not,
19421                                                                    bVar"b'2"),
19422                                                                Bop(And,
19423                                                                    Mop(Not,
19424                                                                        bVar"b'1"),
19425                                                                    bVar"b'0"))))))))),
19426                                Call
19427                                  ("CVT_D_W",CTy"COP1",
19428                                   TP[Mop(Cast(FTy 5),
19429                                          LL[bVar"b'10",bVar"b'9",
19430                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
19431                                      Mop(Cast(FTy 5),
19432                                          LL[bVar"b'15",bVar"b'14",
19433                                             bVar"b'13",bVar"b'12",
19434                                             bVar"b'11"])])),
19435                               (Bop(And,Mop(Not,bVar"b'23"),
19436                                    Bop(And,Mop(Not,bVar"b'20"),
19437                                        Bop(And,Mop(Not,bVar"b'19"),
19438                                            Bop(And,Mop(Not,bVar"b'18"),
19439                                                Bop(And,
19440                                                    Mop(Not,bVar"b'17"),
19441                                                    Bop(And,
19442                                                        Mop(Not,bVar"b'16"),
19443                                                        Bop(And,
19444                                                            Mop(Not,
19445                                                                bVar"b'4"),
19446                                                            Bop(And,
19447                                                                bVar"b'2",
19448                                                                Bop(And,
19449                                                                    Mop(Not,
19450                                                                        bVar"b'1"),
19451                                                                    Mop(Not,
19452                                                                        bVar"b'0")))))))))),
19453                                Call
19454                                  ("CVT_W_S",CTy"COP1",
19455                                   TP[Mop(Cast(FTy 5),
19456                                          LL[bVar"b'10",bVar"b'9",
19457                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
19458                                      Mop(Cast(FTy 5),
19459                                          LL[bVar"b'15",bVar"b'14",
19460                                             bVar"b'13",bVar"b'12",
19461                                             bVar"b'11"])])),
19462                               (Bop(And,Mop(Not,bVar"b'23"),
19463                                    Bop(And,Mop(Not,bVar"b'20"),
19464                                        Bop(And,Mop(Not,bVar"b'19"),
19465                                            Bop(And,Mop(Not,bVar"b'18"),
19466                                                Bop(And,
19467                                                    Mop(Not,bVar"b'17"),
19468                                                    Bop(And,
19469                                                        Mop(Not,bVar"b'16"),
19470                                                        Bop(And,
19471                                                            Mop(Not,
19472                                                                bVar"b'4"),
19473                                                            Bop(And,
19474                                                                bVar"b'2",
19475                                                                Bop(And,
19476                                                                    Mop(Not,
19477                                                                        bVar"b'1"),
19478                                                                    bVar"b'0"))))))))),
19479                                Call
19480                                  ("CVT_L_S",CTy"COP1",
19481                                   TP[Mop(Cast(FTy 5),
19482                                          LL[bVar"b'10",bVar"b'9",
19483                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
19484                                      Mop(Cast(FTy 5),
19485                                          LL[bVar"b'15",bVar"b'14",
19486                                             bVar"b'13",bVar"b'12",
19487                                             bVar"b'11"])]))],
19488                              Const("UnknownFPInstruction",CTy"COP1")),
19489                          Const("UnknownFPInstruction",CTy"COP1"))),
19490                     (bVar"b'1",
19491                      ITE(Bop(And,Mop(Not,bVar"b'24"),
19492                              Bop(And,Mop(Not,bVar"b'23"),
19493                                  Mop(Not,bVar"b'22"))),
19494                          ITB([(Bop(And,Mop(Not,bVar"b'4"),
19495                                    Bop(And,Mop(Not,bVar"b'2"),
19496                                        Mop(Not,bVar"b'0"))),
19497                                Call
19498                                  ("MUL_S",CTy"COP1",
19499                                   TP[Mop(Cast(FTy 5),
19500                                          LL[bVar"b'10",bVar"b'9",
19501                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
19502                                      Mop(Cast(FTy 5),
19503                                          LL[bVar"b'15",bVar"b'14",
19504                                             bVar"b'13",bVar"b'12",
19505                                             bVar"b'11"]),
19506                                      Mop(Cast(FTy 5),
19507                                          LL[bVar"b'20",bVar"b'19",
19508                                             bVar"b'18",bVar"b'17",
19509                                             bVar"b'16"])])),
19510                               (Bop(And,Mop(Not,bVar"b'4"),
19511                                    Bop(And,Mop(Not,bVar"b'2"),bVar"b'0")),
19512                                Call
19513                                  ("DIV_S",CTy"COP1",
19514                                   TP[Mop(Cast(FTy 5),
19515                                          LL[bVar"b'10",bVar"b'9",
19516                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
19517                                      Mop(Cast(FTy 5),
19518                                          LL[bVar"b'15",bVar"b'14",
19519                                             bVar"b'13",bVar"b'12",
19520                                             bVar"b'11"]),
19521                                      Mop(Cast(FTy 5),
19522                                          LL[bVar"b'20",bVar"b'19",
19523                                             bVar"b'18",bVar"b'17",
19524                                             bVar"b'16"])])),
19525                               (Bop(And,Mop(Not,bVar"b'20"),
19526                                    Bop(And,Mop(Not,bVar"b'19"),
19527                                        Bop(And,Mop(Not,bVar"b'18"),
19528                                            Bop(And,Mop(Not,bVar"b'17"),
19529                                                Bop(And,
19530                                                    Mop(Not,bVar"b'16"),
19531                                                    Bop(And,
19532                                                        Mop(Not,bVar"b'4"),
19533                                                        Bop(And,bVar"b'2",
19534                                                            Mop(Not,
19535                                                                bVar"b'0")))))))),
19536                                Call
19537                                  ("MOV_S",CTy"COP1",
19538                                   TP[Mop(Cast(FTy 5),
19539                                          LL[bVar"b'10",bVar"b'9",
19540                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
19541                                      Mop(Cast(FTy 5),
19542                                          LL[bVar"b'15",bVar"b'14",
19543                                             bVar"b'13",bVar"b'12",
19544                                             bVar"b'11"])])),
19545                               (Bop(And,Mop(Not,bVar"b'20"),
19546                                    Bop(And,Mop(Not,bVar"b'19"),
19547                                        Bop(And,Mop(Not,bVar"b'18"),
19548                                            Bop(And,Mop(Not,bVar"b'17"),
19549                                                Bop(And,
19550                                                    Mop(Not,bVar"b'16"),
19551                                                    Bop(And,
19552                                                        Mop(Not,bVar"b'4"),
19553                                                        Bop(And,bVar"b'2",
19554                                                            bVar"b'0"))))))),
19555                                Call
19556                                  ("NEG_S",CTy"COP1",
19557                                   TP[Mop(Cast(FTy 5),
19558                                          LL[bVar"b'10",bVar"b'9",
19559                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
19560                                      Mop(Cast(FTy 5),
19561                                          LL[bVar"b'15",bVar"b'14",
19562                                             bVar"b'13",bVar"b'12",
19563                                             bVar"b'11"])])),
19564                               (Bop(And,bVar"b'4",
19565                                    Bop(And,Mop(Not,bVar"b'2"),
19566                                        Mop(Not,bVar"b'0"))),
19567                                Call
19568                                  ("MOVZ_S",CTy"COP1",
19569                                   TP[Mop(Cast(FTy 5),
19570                                          LL[bVar"b'10",bVar"b'9",
19571                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
19572                                      Mop(Cast(FTy 5),
19573                                          LL[bVar"b'15",bVar"b'14",
19574                                             bVar"b'13",bVar"b'12",
19575                                             bVar"b'11"]),
19576                                      Mop(Cast(FTy 5),
19577                                          LL[bVar"b'20",bVar"b'19",
19578                                             bVar"b'18",bVar"b'17",
19579                                             bVar"b'16"])])),
19580                               (Bop(And,bVar"b'4",
19581                                    Bop(And,Mop(Not,bVar"b'2"),bVar"b'0")),
19582                                Call
19583                                  ("MOVN_S",CTy"COP1",
19584                                   TP[Mop(Cast(FTy 5),
19585                                          LL[bVar"b'10",bVar"b'9",
19586                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
19587                                      Mop(Cast(FTy 5),
19588                                          LL[bVar"b'15",bVar"b'14",
19589                                             bVar"b'13",bVar"b'12",
19590                                             bVar"b'11"]),
19591                                      Mop(Cast(FTy 5),
19592                                          LL[bVar"b'20",bVar"b'19",
19593                                             bVar"b'18",bVar"b'17",
19594                                             bVar"b'16"])]))],
19595                              Const("UnknownFPInstruction",CTy"COP1")),
19596                          Const("UnknownFPInstruction",CTy"COP1"))),
19597                     (Bop(And,Mop(Not,bVar"b'24"),
19598                          Bop(And,Mop(Not,bVar"b'23"),Mop(Not,bVar"b'22"))),
19599                      ITB([(Bop(And,Mop(Not,bVar"b'4"),
19600                                Bop(And,Mop(Not,bVar"b'2"),
19601                                    Mop(Not,bVar"b'0"))),
19602                            Call
19603                              ("ADD_S",CTy"COP1",
19604                               TP[Mop(Cast(FTy 5),
19605                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
19606                                         bVar"b'7",bVar"b'6"]),
19607                                  Mop(Cast(FTy 5),
19608                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
19609                                         bVar"b'12",bVar"b'11"]),
19610                                  Mop(Cast(FTy 5),
19611                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
19612                                         bVar"b'17",bVar"b'16"])])),
19613                           (Bop(And,Mop(Not,bVar"b'4"),
19614                                Bop(And,Mop(Not,bVar"b'2"),bVar"b'0")),
19615                            Call
19616                              ("SUB_S",CTy"COP1",
19617                               TP[Mop(Cast(FTy 5),
19618                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
19619                                         bVar"b'7",bVar"b'6"]),
19620                                  Mop(Cast(FTy 5),
19621                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
19622                                         bVar"b'12",bVar"b'11"]),
19623                                  Mop(Cast(FTy 5),
19624                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
19625                                         bVar"b'17",bVar"b'16"])])),
19626                           (Bop(And,Mop(Not,bVar"b'20"),
19627                                Bop(And,Mop(Not,bVar"b'19"),
19628                                    Bop(And,Mop(Not,bVar"b'18"),
19629                                        Bop(And,Mop(Not,bVar"b'17"),
19630                                            Bop(And,Mop(Not,bVar"b'16"),
19631                                                Bop(And,
19632                                                    Mop(Not,bVar"b'4"),
19633                                                    Bop(And,bVar"b'2",
19634                                                        Mop(Not,bVar"b'0")))))))),
19635                            Call
19636                              ("SQRT_S",CTy"COP1",
19637                               TP[Mop(Cast(FTy 5),
19638                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
19639                                         bVar"b'7",bVar"b'6"]),
19640                                  Mop(Cast(FTy 5),
19641                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
19642                                         bVar"b'12",bVar"b'11"])])),
19643                           (Bop(And,Mop(Not,bVar"b'20"),
19644                                Bop(And,Mop(Not,bVar"b'19"),
19645                                    Bop(And,Mop(Not,bVar"b'18"),
19646                                        Bop(And,Mop(Not,bVar"b'17"),
19647                                            Bop(And,Mop(Not,bVar"b'16"),
19648                                                Bop(And,
19649                                                    Mop(Not,bVar"b'4"),
19650                                                    Bop(And,bVar"b'2",
19651                                                        bVar"b'0"))))))),
19652                            Call
19653                              ("ABS_S",CTy"COP1",
19654                               TP[Mop(Cast(FTy 5),
19655                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
19656                                         bVar"b'7",bVar"b'6"]),
19657                                  Mop(Cast(FTy 5),
19658                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
19659                                         bVar"b'12",bVar"b'11"])])),
19660                           (Bop(And,Mop(Not,bVar"b'17"),
19661                                Bop(And,Mop(Not,bVar"b'16"),
19662                                    Bop(And,bVar"b'4",
19663                                        Bop(And,Mop(Not,bVar"b'2"),
19664                                            bVar"b'0")))),
19665                            Call
19666                              ("MOVF_S",CTy"COP1",
19667                               TP[Mop(Cast(FTy 5),
19668                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
19669                                         bVar"b'7",bVar"b'6"]),
19670                                  Mop(Cast(FTy 5),
19671                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
19672                                         bVar"b'12",bVar"b'11"]),
19673                                  Mop(Cast(FTy 3),
19674                                      LL[bVar"b'20",bVar"b'19",bVar"b'18"])])),
19675                           (Bop(And,Mop(Not,bVar"b'17"),
19676                                Bop(And,bVar"b'16",
19677                                    Bop(And,bVar"b'4",
19678                                        Bop(And,Mop(Not,bVar"b'2"),
19679                                            bVar"b'0")))),
19680                            Call
19681                              ("MOVT_S",CTy"COP1",
19682                               TP[Mop(Cast(FTy 5),
19683                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
19684                                         bVar"b'7",bVar"b'6"]),
19685                                  Mop(Cast(FTy 5),
19686                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
19687                                         bVar"b'12",bVar"b'11"]),
19688                                  Mop(Cast(FTy 3),
19689                                      LL[bVar"b'20",bVar"b'19",bVar"b'18"])]))],
19690                          Const("UnknownFPInstruction",CTy"COP1")))],
19691                    Const("UnknownFPInstruction",CTy"COP1"))),
19692               (bVar"b'24",
19693                ITE(Bop(And,Mop(Not,bVar"b'23"),Mop(Not,bVar"b'22")),
19694                    ITB([(Bop(And,Mop(Not,bVar"b'17"),Mop(Not,bVar"b'16")),
19695                          Call
19696                            ("BC1F",CTy"COP1",
19697                             TP[Mop(Cast F16,
19698                                    LL[bVar"b'15",bVar"b'14",bVar"b'13",
19699                                       bVar"b'12",bVar"b'11",bVar"b'10",
19700                                       bVar"b'9",bVar"b'8",bVar"b'7",
19701                                       bVar"b'6",bVar"b'5",bVar"b'4",
19702                                       bVar"b'3",bVar"b'2",bVar"b'1",
19703                                       bVar"b'0"]),
19704                                Mop(Cast(FTy 3),
19705                                    LL[bVar"b'20",bVar"b'19",bVar"b'18"])])),
19706                         (Bop(And,Mop(Not,bVar"b'17"),bVar"b'16"),
19707                          Call
19708                            ("BC1T",CTy"COP1",
19709                             TP[Mop(Cast F16,
19710                                    LL[bVar"b'15",bVar"b'14",bVar"b'13",
19711                                       bVar"b'12",bVar"b'11",bVar"b'10",
19712                                       bVar"b'9",bVar"b'8",bVar"b'7",
19713                                       bVar"b'6",bVar"b'5",bVar"b'4",
19714                                       bVar"b'3",bVar"b'2",bVar"b'1",
19715                                       bVar"b'0"]),
19716                                Mop(Cast(FTy 3),
19717                                    LL[bVar"b'20",bVar"b'19",bVar"b'18"])])),
19718                         (Bop(And,bVar"b'17",Mop(Not,bVar"b'16")),
19719                          Call
19720                            ("BC1FL",CTy"COP1",
19721                             TP[Mop(Cast F16,
19722                                    LL[bVar"b'15",bVar"b'14",bVar"b'13",
19723                                       bVar"b'12",bVar"b'11",bVar"b'10",
19724                                       bVar"b'9",bVar"b'8",bVar"b'7",
19725                                       bVar"b'6",bVar"b'5",bVar"b'4",
19726                                       bVar"b'3",bVar"b'2",bVar"b'1",
19727                                       bVar"b'0"]),
19728                                Mop(Cast(FTy 3),
19729                                    LL[bVar"b'20",bVar"b'19",bVar"b'18"])])),
19730                         (Bop(And,bVar"b'17",bVar"b'16"),
19731                          Call
19732                            ("BC1TL",CTy"COP1",
19733                             TP[Mop(Cast F16,
19734                                    LL[bVar"b'15",bVar"b'14",bVar"b'13",
19735                                       bVar"b'12",bVar"b'11",bVar"b'10",
19736                                       bVar"b'9",bVar"b'8",bVar"b'7",
19737                                       bVar"b'6",bVar"b'5",bVar"b'4",
19738                                       bVar"b'3",bVar"b'2",bVar"b'1",
19739                                       bVar"b'0"]),
19740                                Mop(Cast(FTy 3),
19741                                    LL[bVar"b'20",bVar"b'19",bVar"b'18"])]))],
19742                        Const("UnknownFPInstruction",CTy"COP1")),
19743                    Const("UnknownFPInstruction",CTy"COP1"))),
19744               (Bop(And,Mop(Not,bVar"b'10"),
19745                    Bop(And,Mop(Not,bVar"b'9"),
19746                        Bop(And,Mop(Not,bVar"b'8"),
19747                            Bop(And,Mop(Not,bVar"b'7"),
19748                                Bop(And,Mop(Not,bVar"b'6"),
19749                                    Bop(And,Mop(Not,bVar"b'5"),
19750                                        Bop(And,Mop(Not,bVar"b'4"),
19751                                            Bop(And,Mop(Not,bVar"b'3"),
19752                                                Bop(And,
19753                                                    Mop(Not,bVar"b'2"),
19754                                                    Bop(And,
19755                                                        Mop(Not,bVar"b'1"),
19756                                                        Mop(Not,bVar"b'0"))))))))))),
19757                ITB([(Bop(And,Mop(Not,bVar"b'23"),Mop(Not,bVar"b'22")),
19758                      Call
19759                        ("MFC1",CTy"COP1",
19760                         TP[Mop(Cast(FTy 5),
19761                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
19762                                   bVar"b'17",bVar"b'16"]),
19763                            Mop(Cast(FTy 5),
19764                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
19765                                   bVar"b'12",bVar"b'11"])])),
19766                     (Bop(And,Mop(Not,bVar"b'23"),bVar"b'22"),
19767                      Call
19768                        ("CFC1",CTy"COP1",
19769                         TP[Mop(Cast(FTy 5),
19770                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
19771                                   bVar"b'17",bVar"b'16"]),
19772                            Mop(Cast(FTy 5),
19773                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
19774                                   bVar"b'12",bVar"b'11"])])),
19775                     (Bop(And,bVar"b'23",Mop(Not,bVar"b'22")),
19776                      Call
19777                        ("MTC1",CTy"COP1",
19778                         TP[Mop(Cast(FTy 5),
19779                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
19780                                   bVar"b'17",bVar"b'16"]),
19781                            Mop(Cast(FTy 5),
19782                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
19783                                   bVar"b'12",bVar"b'11"])])),
19784                     (Bop(And,bVar"b'23",bVar"b'22"),
19785                      Call
19786                        ("CTC1",CTy"COP1",
19787                         TP[Mop(Cast(FTy 5),
19788                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
19789                                   bVar"b'17",bVar"b'16"]),
19790                            Mop(Cast(FTy 5),
19791                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
19792                                   bVar"b'12",bVar"b'11"])]))],
19793                    Const("UnknownFPInstruction",CTy"COP1")))],
19794              Const("UnknownFPInstruction",CTy"COP1")))))
19795;
19796val LDC1Decode_def = Def
19797  ("LDC1Decode",TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)],
19798   Call
19799     ("COP1",CTy"instruction",
19800      Call
19801        ("LDC1",CTy"COP1",
19802         TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)])))
19803;
19804val LWC1Decode_def = Def
19805  ("LWC1Decode",TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)],
19806   Call
19807     ("COP1",CTy"instruction",
19808      Call
19809        ("LWC1",CTy"COP1",
19810         TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)])))
19811;
19812val SDC1Decode_def = Def
19813  ("SDC1Decode",TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)],
19814   Call
19815     ("COP1",CTy"instruction",
19816      Call
19817        ("SDC1",CTy"COP1",
19818         TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)])))
19819;
19820val SWC1Decode_def = Def
19821  ("SWC1Decode",TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)],
19822   Call
19823     ("COP1",CTy"instruction",
19824      Call
19825        ("SWC1",CTy"COP1",
19826         TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)])))
19827;
19828val MOVCIDecode_def = Def
19829  ("MOVCIDecode",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
19830   Let(TP[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"],
19831       BL(5,Var("rt",FTy 5)),
19832       ITE(Mop(Not,bVar"b'1"),
19833           ITB([(Mop(Not,bVar"b'0"),
19834                 Call
19835                   ("COP1",CTy"instruction",
19836                    Call
19837                      ("MOVF",CTy"COP1",
19838                       TP[Var("rd",FTy 5),Var("rs",FTy 5),
19839                          Mop(Cast(FTy 3),
19840                              LL[bVar"b'4",bVar"b'3",bVar"b'2"])]))),
19841                (bVar"b'0",
19842                 Call
19843                   ("COP1",CTy"instruction",
19844                    Call
19845                      ("MOVT",CTy"COP1",
19846                       TP[Var("rd",FTy 5),Var("rs",FTy 5),
19847                          Mop(Cast(FTy 3),
19848                              LL[bVar"b'4",bVar"b'3",bVar"b'2"])])))],
19849               Const("ReservedInstruction",CTy"instruction")),
19850           Const("ReservedInstruction",CTy"instruction"))))
19851;
19852val COP3Decode_def = Def
19853  ("COP3Decode",Var("v",FTy 26),
19854   Call
19855     ("COP1",CTy"instruction",
19856      Let(TP[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",bVar"b'21",
19857             bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",bVar"b'16",
19858             bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",bVar"b'11",
19859             bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6",bVar"b'5",
19860             bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"],
19861          BL(26,Var("v",FTy 26)),
19862          ITB([(bVar"b'5",
19863                ITE(Bop(And,Mop(Not,bVar"b'4"),
19864                        Bop(And,Mop(Not,bVar"b'2"),Mop(Not,bVar"b'1"))),
19865                    ITB([(Bop(And,Mop(Not,bVar"b'3"),Mop(Not,bVar"b'0")),
19866                          Call
19867                            ("MADD_S",CTy"COP1",
19868                             TP[Mop(Cast(FTy 5),
19869                                    LL[bVar"b'10",bVar"b'9",bVar"b'8",
19870                                       bVar"b'7",bVar"b'6"]),
19871                                Mop(Cast(FTy 5),
19872                                    LL[bVar"b'25",bVar"b'24",bVar"b'23",
19873                                       bVar"b'22",bVar"b'21"]),
19874                                Mop(Cast(FTy 5),
19875                                    LL[bVar"b'15",bVar"b'14",bVar"b'13",
19876                                       bVar"b'12",bVar"b'11"]),
19877                                Mop(Cast(FTy 5),
19878                                    LL[bVar"b'20",bVar"b'19",bVar"b'18",
19879                                       bVar"b'17",bVar"b'16"])])),
19880                         (Bop(And,Mop(Not,bVar"b'3"),bVar"b'0"),
19881                          Call
19882                            ("MADD_D",CTy"COP1",
19883                             TP[Mop(Cast(FTy 5),
19884                                    LL[bVar"b'10",bVar"b'9",bVar"b'8",
19885                                       bVar"b'7",bVar"b'6"]),
19886                                Mop(Cast(FTy 5),
19887                                    LL[bVar"b'25",bVar"b'24",bVar"b'23",
19888                                       bVar"b'22",bVar"b'21"]),
19889                                Mop(Cast(FTy 5),
19890                                    LL[bVar"b'15",bVar"b'14",bVar"b'13",
19891                                       bVar"b'12",bVar"b'11"]),
19892                                Mop(Cast(FTy 5),
19893                                    LL[bVar"b'20",bVar"b'19",bVar"b'18",
19894                                       bVar"b'17",bVar"b'16"])])),
19895                         (Bop(And,bVar"b'3",Mop(Not,bVar"b'0")),
19896                          Call
19897                            ("MSUB_S",CTy"COP1",
19898                             TP[Mop(Cast(FTy 5),
19899                                    LL[bVar"b'10",bVar"b'9",bVar"b'8",
19900                                       bVar"b'7",bVar"b'6"]),
19901                                Mop(Cast(FTy 5),
19902                                    LL[bVar"b'25",bVar"b'24",bVar"b'23",
19903                                       bVar"b'22",bVar"b'21"]),
19904                                Mop(Cast(FTy 5),
19905                                    LL[bVar"b'15",bVar"b'14",bVar"b'13",
19906                                       bVar"b'12",bVar"b'11"]),
19907                                Mop(Cast(FTy 5),
19908                                    LL[bVar"b'20",bVar"b'19",bVar"b'18",
19909                                       bVar"b'17",bVar"b'16"])])),
19910                         (Bop(And,bVar"b'3",bVar"b'0"),
19911                          Call
19912                            ("MSUB_D",CTy"COP1",
19913                             TP[Mop(Cast(FTy 5),
19914                                    LL[bVar"b'10",bVar"b'9",bVar"b'8",
19915                                       bVar"b'7",bVar"b'6"]),
19916                                Mop(Cast(FTy 5),
19917                                    LL[bVar"b'25",bVar"b'24",bVar"b'23",
19918                                       bVar"b'22",bVar"b'21"]),
19919                                Mop(Cast(FTy 5),
19920                                    LL[bVar"b'15",bVar"b'14",bVar"b'13",
19921                                       bVar"b'12",bVar"b'11"]),
19922                                Mop(Cast(FTy 5),
19923                                    LL[bVar"b'20",bVar"b'19",bVar"b'18",
19924                                       bVar"b'17",bVar"b'16"])]))],
19925                        Const("UnknownFPInstruction",CTy"COP1")),
19926                    Const("UnknownFPInstruction",CTy"COP1"))),
19927               (Bop(And,Mop(Not,bVar"b'4"),
19928                    Bop(And,Mop(Not,bVar"b'2"),Mop(Not,bVar"b'1"))),
19929                ITB([(Bop(And,Mop(Not,bVar"b'15"),
19930                          Bop(And,Mop(Not,bVar"b'14"),
19931                              Bop(And,Mop(Not,bVar"b'13"),
19932                                  Bop(And,Mop(Not,bVar"b'12"),
19933                                      Bop(And,Mop(Not,bVar"b'11"),
19934                                          Bop(And,Mop(Not,bVar"b'3"),
19935                                              Mop(Not,bVar"b'0"))))))),
19936                      Call
19937                        ("LWXC1",CTy"COP1",
19938                         TP[Mop(Cast(FTy 5),
19939                                LL[bVar"b'10",bVar"b'9",bVar"b'8",
19940                                   bVar"b'7",bVar"b'6"]),
19941                            Mop(Cast(FTy 5),
19942                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
19943                                   bVar"b'17",bVar"b'16"]),
19944                            Mop(Cast(FTy 5),
19945                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
19946                                   bVar"b'22",bVar"b'21"])])),
19947                     (Bop(And,Mop(Not,bVar"b'15"),
19948                          Bop(And,Mop(Not,bVar"b'14"),
19949                              Bop(And,Mop(Not,bVar"b'13"),
19950                                  Bop(And,Mop(Not,bVar"b'12"),
19951                                      Bop(And,Mop(Not,bVar"b'11"),
19952                                          Bop(And,Mop(Not,bVar"b'3"),
19953                                              bVar"b'0")))))),
19954                      Call
19955                        ("LDXC1",CTy"COP1",
19956                         TP[Mop(Cast(FTy 5),
19957                                LL[bVar"b'10",bVar"b'9",bVar"b'8",
19958                                   bVar"b'7",bVar"b'6"]),
19959                            Mop(Cast(FTy 5),
19960                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
19961                                   bVar"b'17",bVar"b'16"]),
19962                            Mop(Cast(FTy 5),
19963                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
19964                                   bVar"b'22",bVar"b'21"])])),
19965                     (Bop(And,Mop(Not,bVar"b'10"),
19966                          Bop(And,Mop(Not,bVar"b'9"),
19967                              Bop(And,Mop(Not,bVar"b'8"),
19968                                  Bop(And,Mop(Not,bVar"b'7"),
19969                                      Bop(And,Mop(Not,bVar"b'6"),
19970                                          Bop(And,bVar"b'3",
19971                                              Mop(Not,bVar"b'0"))))))),
19972                      Call
19973                        ("SWXC1",CTy"COP1",
19974                         TP[Mop(Cast(FTy 5),
19975                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
19976                                   bVar"b'12",bVar"b'11"]),
19977                            Mop(Cast(FTy 5),
19978                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
19979                                   bVar"b'17",bVar"b'16"]),
19980                            Mop(Cast(FTy 5),
19981                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
19982                                   bVar"b'22",bVar"b'21"])])),
19983                     (Bop(And,Mop(Not,bVar"b'10"),
19984                          Bop(And,Mop(Not,bVar"b'9"),
19985                              Bop(And,Mop(Not,bVar"b'8"),
19986                                  Bop(And,Mop(Not,bVar"b'7"),
19987                                      Bop(And,Mop(Not,bVar"b'6"),
19988                                          Bop(And,bVar"b'3",bVar"b'0")))))),
19989                      Call
19990                        ("SDXC1",CTy"COP1",
19991                         TP[Mop(Cast(FTy 5),
19992                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
19993                                   bVar"b'12",bVar"b'11"]),
19994                            Mop(Cast(FTy 5),
19995                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
19996                                   bVar"b'17",bVar"b'16"]),
19997                            Mop(Cast(FTy 5),
19998                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
19999                                   bVar"b'22",bVar"b'21"])]))],
20000                    Const("UnknownFPInstruction",CTy"COP1")))],
20001              Const("UnknownFPInstruction",CTy"COP1")))))
20002;
20003val COP2Decode_def = Def
20004  ("COP2Decode",Var("v",FTy 26),
20005   Call
20006     ("COP2",CTy"instruction",
20007      Call
20008        ("CHERICOP2",CTy"COP2",
20009         Let(TP[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",bVar"b'21",
20010                bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",bVar"b'16",
20011                bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",bVar"b'11",
20012                bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6",
20013                bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1",
20014                bVar"b'0"],BL(26,Var("v",FTy 26)),
20015             ITB([(bVar"b'23",
20016                   ITB([(bVar"b'21",
20017                         ITE(Mop(Not,bVar"b'25"),
20018                             ITB([(Bop(And,bVar"b'24",
20019                                       Bop(And,Mop(Not,bVar"b'22"),
20020                                           Bop(And,Mop(Not,bVar"b'5"),
20021                                               Bop(And,Mop(Not,bVar"b'4"),
20022                                                   Bop(And,
20023                                                       Mop(Not,bVar"b'3"),
20024                                                       Bop(And,
20025                                                           Mop(Not,
20026                                                               bVar"b'2"),
20027                                                           Bop(And,
20028                                                               bVar"b'1",
20029                                                               Mop(Not,
20030                                                                   bVar"b'0")))))))),
20031                                   Call
20032                                     ("CGet",CTy"CHERICOP2",
20033                                      Call
20034                                        ("CGetOffset",CTy"CGet",
20035                                         TP[Mop(Cast(FTy 5),
20036                                                LL[bVar"b'20",bVar"b'19",
20037                                                   bVar"b'18",bVar"b'17",
20038                                                   bVar"b'16"]),
20039                                            Mop(Cast(FTy 5),
20040                                                LL[bVar"b'15",bVar"b'14",
20041                                                   bVar"b'13",bVar"b'12",
20042                                                   bVar"b'11"])]))),
20043                                  (Bop(And,bVar"b'24",
20044                                       Bop(And,Mop(Not,bVar"b'22"),
20045                                           Bop(And,Mop(Not,bVar"b'2"),
20046                                               Bop(And,Mop(Not,bVar"b'1"),
20047                                                   Mop(Not,bVar"b'0"))))),
20048                                   Call
20049                                     ("CSet",CTy"CHERICOP2",
20050                                      Call
20051                                        ("CIncOffset",CTy"CSet",
20052                                         TP[Mop(Cast(FTy 5),
20053                                                LL[bVar"b'20",bVar"b'19",
20054                                                   bVar"b'18",bVar"b'17",
20055                                                   bVar"b'16"]),
20056                                            Mop(Cast(FTy 5),
20057                                                LL[bVar"b'15",bVar"b'14",
20058                                                   bVar"b'13",bVar"b'12",
20059                                                   bVar"b'11"]),
20060                                            Mop(Cast(FTy 5),
20061                                                LL[bVar"b'10",bVar"b'9",
20062                                                   bVar"b'8",bVar"b'7",
20063                                                   bVar"b'6"])]))),
20064                                  (Bop(And,bVar"b'24",bVar"b'22"),
20065                                   Call
20066                                     ("CSet",CTy"CHERICOP2",
20067                                      Call
20068                                        ("CClearRegs",CTy"CSet",
20069                                         TP[Mop(Cast(FTy 5),
20070                                                LL[bVar"b'20",bVar"b'19",
20071                                                   bVar"b'18",bVar"b'17",
20072                                                   bVar"b'16"]),
20073                                            Mop(Cast F16,
20074                                                LL[bVar"b'15",bVar"b'14",
20075                                                   bVar"b'13",bVar"b'12",
20076                                                   bVar"b'11",bVar"b'10",
20077                                                   bVar"b'9",bVar"b'8",
20078                                                   bVar"b'7",bVar"b'6",
20079                                                   bVar"b'5",bVar"b'4",
20080                                                   bVar"b'3",bVar"b'2",
20081                                                   bVar"b'1",bVar"b'0"])]))),
20082                                  (Bop(And,bVar"b'24",
20083                                       Bop(And,Mop(Not,bVar"b'22"),
20084                                           Bop(And,Mop(Not,bVar"b'2"),
20085                                               Bop(And,Mop(Not,bVar"b'1"),
20086                                                   bVar"b'0")))),
20087                                   Call
20088                                     ("CSet",CTy"CHERICOP2",
20089                                      Call
20090                                        ("CSetOffset",CTy"CSet",
20091                                         TP[Mop(Cast(FTy 5),
20092                                                LL[bVar"b'20",bVar"b'19",
20093                                                   bVar"b'18",bVar"b'17",
20094                                                   bVar"b'16"]),
20095                                            Mop(Cast(FTy 5),
20096                                                LL[bVar"b'15",bVar"b'14",
20097                                                   bVar"b'13",bVar"b'12",
20098                                                   bVar"b'11"]),
20099                                            Mop(Cast(FTy 5),
20100                                                LL[bVar"b'10",bVar"b'9",
20101                                                   bVar"b'8",bVar"b'7",
20102                                                   bVar"b'6"])]))),
20103                                  (Bop(And,Mop(Not,bVar"b'24"),bVar"b'22"),
20104                                   Call
20105                                     ("CJALR",CTy"CHERICOP2",
20106                                      TP[Mop(Cast(FTy 5),
20107                                             LL[bVar"b'20",bVar"b'19",
20108                                                bVar"b'18",bVar"b'17",
20109                                                bVar"b'16"]),
20110                                         Mop(Cast(FTy 5),
20111                                             LL[bVar"b'15",bVar"b'14",
20112                                                bVar"b'13",bVar"b'12",
20113                                                bVar"b'11"])])),
20114                                  (Bop(And,Mop(Not,bVar"b'24"),
20115                                       Bop(And,Mop(Not,bVar"b'22"),
20116                                           Bop(And,Mop(Not,bVar"b'10"),
20117                                               Bop(And,Mop(Not,bVar"b'9"),
20118                                                   Bop(And,
20119                                                       Mop(Not,bVar"b'8"),
20120                                                       Bop(And,
20121                                                           Mop(Not,
20122                                                               bVar"b'7"),
20123                                                           Bop(And,
20124                                                               Mop(Not,
20125                                                                   bVar"b'6"),
20126                                                               Bop(And,
20127                                                                   Mop(Not,
20128                                                                       bVar"b'5"),
20129                                                                   Bop(And,
20130                                                                       Mop(Not,
20131                                                                           bVar"b'4"),
20132                                                                       Bop(And,
20133                                                                           Mop(Not,
20134                                                                               bVar"b'3"),
20135                                                                           Bop(And,
20136                                                                               Mop(Not,
20137                                                                                   bVar"b'2"),
20138                                                                               Bop(And,
20139                                                                                   Mop(Not,
20140                                                                                       bVar"b'1"),
20141                                                                                   Mop(Not,
20142                                                                                       bVar"b'0"))))))))))))),
20143                                   Call
20144                                     ("CCall0",CTy"CHERICOP2",
20145                                      TP[Mop(Cast(FTy 5),
20146                                             LL[bVar"b'20",bVar"b'19",
20147                                                bVar"b'18",bVar"b'17",
20148                                                bVar"b'16"]),
20149                                         Mop(Cast(FTy 5),
20150                                             LL[bVar"b'15",bVar"b'14",
20151                                                bVar"b'13",bVar"b'12",
20152                                                bVar"b'11"])])),
20153                                  (Bop(And,Mop(Not,bVar"b'24"),
20154                                       Bop(And,Mop(Not,bVar"b'22"),
20155                                           Bop(And,Mop(Not,bVar"b'10"),
20156                                               Bop(And,Mop(Not,bVar"b'9"),
20157                                                   Bop(And,
20158                                                       Mop(Not,bVar"b'8"),
20159                                                       Bop(And,
20160                                                           Mop(Not,
20161                                                               bVar"b'7"),
20162                                                           Bop(And,
20163                                                               Mop(Not,
20164                                                                   bVar"b'6"),
20165                                                               Bop(And,
20166                                                                   Mop(Not,
20167                                                                       bVar"b'5"),
20168                                                                   Bop(And,
20169                                                                       Mop(Not,
20170                                                                           bVar"b'4"),
20171                                                                       Bop(And,
20172                                                                           Mop(Not,
20173                                                                               bVar"b'3"),
20174                                                                           Bop(And,
20175                                                                               Mop(Not,
20176                                                                                   bVar"b'2"),
20177                                                                               Bop(And,
20178                                                                                   Mop(Not,
20179                                                                                       bVar"b'1"),
20180                                                                                   bVar"b'0")))))))))))),
20181                                   Call
20182                                     ("CCall1",CTy"CHERICOP2",
20183                                      TP[Mop(Cast(FTy 5),
20184                                             LL[bVar"b'20",bVar"b'19",
20185                                                bVar"b'18",bVar"b'17",
20186                                                bVar"b'16"]),
20187                                         Mop(Cast(FTy 5),
20188                                             LL[bVar"b'15",bVar"b'14",
20189                                                bVar"b'13",bVar"b'12",
20190                                                bVar"b'11"])]))],
20191                                 Const
20192                                   ("UnknownCapInstruction",CTy"CHERICOP2")),
20193                             Const("UnknownCapInstruction",CTy"CHERICOP2"))),
20194                        (Mop(Not,bVar"b'25"),
20195                         ITB([(Bop(And,Mop(Not,bVar"b'24"),
20196                                   Bop(And,Mop(Not,bVar"b'22"),
20197                                       Bop(And,bVar"b'2",
20198                                           Bop(And,bVar"b'1",
20199                                               Mop(Not,bVar"b'0"))))),
20200                               Const("DumpCapReg",CTy"CHERICOP2")),
20201                              (Bop(And,Mop(Not,bVar"b'24"),
20202                                   Bop(And,Mop(Not,bVar"b'22"),
20203                                       Bop(And,Mop(Not,bVar"b'20"),
20204                                           Bop(And,Mop(Not,bVar"b'19"),
20205                                               Bop(And,
20206                                                   Mop(Not,bVar"b'18"),
20207                                                   Bop(And,
20208                                                       Mop(Not,bVar"b'17"),
20209                                                       Bop(And,
20210                                                           Mop(Not,
20211                                                               bVar"b'16"),
20212                                                           Bop(And,
20213                                                               Mop(Not,
20214                                                                   bVar"b'15"),
20215                                                               Bop(And,
20216                                                                   Mop(Not,
20217                                                                       bVar"b'14"),
20218                                                                   Bop(And,
20219                                                                       Mop(Not,
20220                                                                           bVar"b'13"),
20221                                                                       Bop(And,
20222                                                                           Mop(Not,
20223                                                                               bVar"b'12"),
20224                                                                           Bop(And,
20225                                                                               Mop(Not,
20226                                                                                   bVar"b'11"),
20227                                                                               Bop(And,
20228                                                                                   bVar"b'2",
20229                                                                                   Bop(And,
20230                                                                                       Mop(Not,
20231                                                                                           bVar"b'1"),
20232                                                                                       Mop(Not,
20233                                                                                           bVar"b'0"))))))))))))))),
20234                               Call
20235                                 ("CSet",CTy"CHERICOP2",
20236                                  Call
20237                                    ("CSetCause",CTy"CSet",
20238                                     Mop(Cast(FTy 5),
20239                                         LL[bVar"b'10",bVar"b'9",
20240                                            bVar"b'8",bVar"b'7",bVar"b'6"])))),
20241                              (Bop(And,Mop(Not,bVar"b'24"),
20242                                   Bop(And,Mop(Not,bVar"b'22"),
20243                                       Bop(And,bVar"b'2",
20244                                           Bop(And,Mop(Not,bVar"b'1"),
20245                                               bVar"b'0")))),
20246                               Call
20247                                 ("CSet",CTy"CHERICOP2",
20248                                  Call
20249                                    ("CClearTag",CTy"CSet",
20250                                     TP[Mop(Cast(FTy 5),
20251                                            LL[bVar"b'20",bVar"b'19",
20252                                               bVar"b'18",bVar"b'17",
20253                                               bVar"b'16"]),
20254                                        Mop(Cast(FTy 5),
20255                                            LL[bVar"b'15",bVar"b'14",
20256                                               bVar"b'13",bVar"b'12",
20257                                               bVar"b'11"])]))),
20258                              (Bop(And,Mop(Not,bVar"b'24"),
20259                                   Bop(And,Mop(Not,bVar"b'22"),
20260                                       Bop(And,Mop(Not,bVar"b'2"),
20261                                           Bop(And,Mop(Not,bVar"b'1"),
20262                                               Mop(Not,bVar"b'0"))))),
20263                               Call
20264                                 ("CSet",CTy"CHERICOP2",
20265                                  Call
20266                                    ("CAndPerm",CTy"CSet",
20267                                     TP[Mop(Cast(FTy 5),
20268                                            LL[bVar"b'20",bVar"b'19",
20269                                               bVar"b'18",bVar"b'17",
20270                                               bVar"b'16"]),
20271                                        Mop(Cast(FTy 5),
20272                                            LL[bVar"b'15",bVar"b'14",
20273                                               bVar"b'13",bVar"b'12",
20274                                               bVar"b'11"]),
20275                                        Mop(Cast(FTy 5),
20276                                            LL[bVar"b'10",bVar"b'9",
20277                                               bVar"b'8",bVar"b'7",
20278                                               bVar"b'6"])]))),
20279                              (Bop(And,Mop(Not,bVar"b'24"),
20280                                   Bop(And,Mop(Not,bVar"b'22"),
20281                                       Bop(And,bVar"b'2",
20282                                           Bop(And,bVar"b'1",bVar"b'0")))),
20283                               Call
20284                                 ("CSet",CTy"CHERICOP2",
20285                                  Call
20286                                    ("CFromPtr",CTy"CSet",
20287                                     TP[Mop(Cast(FTy 5),
20288                                            LL[bVar"b'20",bVar"b'19",
20289                                               bVar"b'18",bVar"b'17",
20290                                               bVar"b'16"]),
20291                                        Mop(Cast(FTy 5),
20292                                            LL[bVar"b'15",bVar"b'14",
20293                                               bVar"b'13",bVar"b'12",
20294                                               bVar"b'11"]),
20295                                        Mop(Cast(FTy 5),
20296                                            LL[bVar"b'10",bVar"b'9",
20297                                               bVar"b'8",bVar"b'7",
20298                                               bVar"b'6"])]))),
20299                              (Bop(And,bVar"b'24",Mop(Not,bVar"b'22")),
20300                               Call
20301                                 ("CGet",CTy"CHERICOP2",
20302                                  Call
20303                                    ("CToPtr",CTy"CGet",
20304                                     TP[Mop(Cast(FTy 5),
20305                                            LL[bVar"b'20",bVar"b'19",
20306                                               bVar"b'18",bVar"b'17",
20307                                               bVar"b'16"]),
20308                                        Mop(Cast(FTy 5),
20309                                            LL[bVar"b'15",bVar"b'14",
20310                                               bVar"b'13",bVar"b'12",
20311                                               bVar"b'11"]),
20312                                        Mop(Cast(FTy 5),
20313                                            LL[bVar"b'10",bVar"b'9",
20314                                               bVar"b'8",bVar"b'7",
20315                                               bVar"b'6"])]))),
20316                              (Bop(And,bVar"b'24",bVar"b'22"),
20317                               Call
20318                                 ("CPtrCmp",CTy"CHERICOP2",
20319                                  TP[Mop(Cast(FTy 5),
20320                                         LL[bVar"b'20",bVar"b'19",
20321                                            bVar"b'18",bVar"b'17",
20322                                            bVar"b'16"]),
20323                                     Mop(Cast(FTy 5),
20324                                         LL[bVar"b'15",bVar"b'14",
20325                                            bVar"b'13",bVar"b'12",
20326                                            bVar"b'11"]),
20327                                     Mop(Cast(FTy 5),
20328                                         LL[bVar"b'10",bVar"b'9",
20329                                            bVar"b'8",bVar"b'7",bVar"b'6"]),
20330                                     Mop(Cast(FTy 3),
20331                                         LL[bVar"b'2",bVar"b'1",bVar"b'0"])])),
20332                              (Bop(And,Mop(Not,bVar"b'24"),bVar"b'22"),
20333                               Const("CReturn",CTy"CHERICOP2"))],
20334                             Const("UnknownCapInstruction",CTy"CHERICOP2")))],
20335                       Const("UnknownCapInstruction",CTy"CHERICOP2"))),
20336                  (bVar"b'25",
20337                   ITE(Mop(Not,bVar"b'24"),
20338                       ITB([(Bop(And,bVar"b'22",Mop(Not,bVar"b'21")),
20339                             Call
20340                               ("CSet",CTy"CHERICOP2",
20341                                Call
20342                                  ("CSetBoundsImmediate",CTy"CSet",
20343                                   TP[Mop(Cast(FTy 5),
20344                                          LL[bVar"b'20",bVar"b'19",
20345                                             bVar"b'18",bVar"b'17",
20346                                             bVar"b'16"]),
20347                                      Mop(Cast(FTy 5),
20348                                          LL[bVar"b'15",bVar"b'14",
20349                                             bVar"b'13",bVar"b'12",
20350                                             bVar"b'11"]),
20351                                      Mop(Cast(FTy 11),
20352                                          LL[bVar"b'10",bVar"b'9",
20353                                             bVar"b'8",bVar"b'7",
20354                                             bVar"b'6",bVar"b'5",
20355                                             bVar"b'4",bVar"b'3",
20356                                             bVar"b'2",bVar"b'1",bVar"b'0"])]))),
20357                            (Bop(And,Mop(Not,bVar"b'22"),bVar"b'21"),
20358                             Call
20359                               ("CSet",CTy"CHERICOP2",
20360                                Call
20361                                  ("CIncOffsetImmediate",CTy"CSet",
20362                                   TP[Mop(Cast(FTy 5),
20363                                          LL[bVar"b'20",bVar"b'19",
20364                                             bVar"b'18",bVar"b'17",
20365                                             bVar"b'16"]),
20366                                      Mop(Cast(FTy 5),
20367                                          LL[bVar"b'15",bVar"b'14",
20368                                             bVar"b'13",bVar"b'12",
20369                                             bVar"b'11"]),
20370                                      Mop(Cast(FTy 11),
20371                                          LL[bVar"b'10",bVar"b'9",
20372                                             bVar"b'8",bVar"b'7",
20373                                             bVar"b'6",bVar"b'5",
20374                                             bVar"b'4",bVar"b'3",
20375                                             bVar"b'2",bVar"b'1",bVar"b'0"])]))),
20376                            (Bop(And,Mop(Not,bVar"b'22"),
20377                                 Bop(And,Mop(Not,bVar"b'21"),
20378                                     Bop(And,bVar"b'3",
20379                                         Bop(And,Mop(Not,bVar"b'1"),
20380                                             Mop(Not,bVar"b'0"))))),
20381                             Call
20382                               ("CLLx",CTy"CHERICOP2",
20383                                TP[Mop(Cast(FTy 5),
20384                                       LL[bVar"b'20",bVar"b'19",
20385                                          bVar"b'18",bVar"b'17",bVar"b'16"]),
20386                                   Mop(Cast(FTy 5),
20387                                       LL[bVar"b'15",bVar"b'14",
20388                                          bVar"b'13",bVar"b'12",bVar"b'11"]),
20389                                   CC[Mop(Cast F1,LL[bVar"b'2"]),LW(0,2)]])),
20390                            (Bop(And,Mop(Not,bVar"b'22"),
20391                                 Bop(And,Mop(Not,bVar"b'21"),
20392                                     Bop(And,bVar"b'3",
20393                                         Bop(And,Mop(Not,bVar"b'1"),
20394                                             bVar"b'0")))),
20395                             Call
20396                               ("CLLx",CTy"CHERICOP2",
20397                                TP[Mop(Cast(FTy 5),
20398                                       LL[bVar"b'20",bVar"b'19",
20399                                          bVar"b'18",bVar"b'17",bVar"b'16"]),
20400                                   Mop(Cast(FTy 5),
20401                                       LL[bVar"b'15",bVar"b'14",
20402                                          bVar"b'13",bVar"b'12",bVar"b'11"]),
20403                                   CC[Mop(Cast F1,LL[bVar"b'2"]),LW(1,2)]])),
20404                            (Bop(And,Mop(Not,bVar"b'22"),
20405                                 Bop(And,Mop(Not,bVar"b'21"),
20406                                     Bop(And,bVar"b'3",
20407                                         Bop(And,bVar"b'1",
20408                                             Mop(Not,bVar"b'0"))))),
20409                             Call
20410                               ("CLLx",CTy"CHERICOP2",
20411                                TP[Mop(Cast(FTy 5),
20412                                       LL[bVar"b'20",bVar"b'19",
20413                                          bVar"b'18",bVar"b'17",bVar"b'16"]),
20414                                   Mop(Cast(FTy 5),
20415                                       LL[bVar"b'15",bVar"b'14",
20416                                          bVar"b'13",bVar"b'12",bVar"b'11"]),
20417                                   CC[Mop(Cast F1,LL[bVar"b'2"]),LW(2,2)]])),
20418                            (Bop(And,Mop(Not,bVar"b'22"),
20419                                 Bop(And,Mop(Not,bVar"b'21"),
20420                                     Bop(And,bVar"b'3",
20421                                         Bop(And,Mop(Not,bVar"b'2"),
20422                                             Bop(And,bVar"b'1",bVar"b'0"))))),
20423                             Call
20424                               ("CLLx",CTy"CHERICOP2",
20425                                TP[Mop(Cast(FTy 5),
20426                                       LL[bVar"b'20",bVar"b'19",
20427                                          bVar"b'18",bVar"b'17",bVar"b'16"]),
20428                                   Mop(Cast(FTy 5),
20429                                       LL[bVar"b'15",bVar"b'14",
20430                                          bVar"b'13",bVar"b'12",bVar"b'11"]),
20431                                   LW(3,3)])),
20432                            (Bop(And,Mop(Not,bVar"b'22"),
20433                                 Bop(And,Mop(Not,bVar"b'21"),
20434                                     Bop(And,bVar"b'3",
20435                                         Bop(And,bVar"b'2",
20436                                             Bop(And,bVar"b'1",bVar"b'0"))))),
20437                             Call
20438                               ("CLLC",CTy"CHERICOP2",
20439                                TP[Mop(Cast(FTy 5),
20440                                       LL[bVar"b'20",bVar"b'19",
20441                                          bVar"b'18",bVar"b'17",bVar"b'16"]),
20442                                   Mop(Cast(FTy 5),
20443                                       LL[bVar"b'15",bVar"b'14",
20444                                          bVar"b'13",bVar"b'12",bVar"b'11"])])),
20445                            (Bop(And,Mop(Not,bVar"b'22"),
20446                                 Bop(And,Mop(Not,bVar"b'21"),
20447                                     Bop(And,Mop(Not,bVar"b'3"),
20448                                         Mop(Not,bVar"b'2")))),
20449                             Call
20450                               ("CSCx",CTy"CHERICOP2",
20451                                TP[Mop(Cast(FTy 5),
20452                                       LL[bVar"b'20",bVar"b'19",
20453                                          bVar"b'18",bVar"b'17",bVar"b'16"]),
20454                                   Mop(Cast(FTy 5),
20455                                       LL[bVar"b'15",bVar"b'14",
20456                                          bVar"b'13",bVar"b'12",bVar"b'11"]),
20457                                   Mop(Cast(FTy 5),
20458                                       LL[bVar"b'10",bVar"b'9",bVar"b'8",
20459                                          bVar"b'7",bVar"b'6"]),
20460                                   Mop(Cast(FTy 2),LL[bVar"b'1",bVar"b'0"])])),
20461                            (Bop(And,Mop(Not,bVar"b'22"),
20462                                 Bop(And,Mop(Not,bVar"b'21"),
20463                                     Bop(And,Mop(Not,bVar"b'3"),
20464                                         Bop(And,bVar"b'2",
20465                                             Bop(And,bVar"b'1",bVar"b'0"))))),
20466                             Call
20467                               ("CSCC",CTy"CHERICOP2",
20468                                TP[Mop(Cast(FTy 5),
20469                                       LL[bVar"b'20",bVar"b'19",
20470                                          bVar"b'18",bVar"b'17",bVar"b'16"]),
20471                                   Mop(Cast(FTy 5),
20472                                       LL[bVar"b'15",bVar"b'14",
20473                                          bVar"b'13",bVar"b'12",bVar"b'11"]),
20474                                   Mop(Cast(FTy 5),
20475                                       LL[bVar"b'10",bVar"b'9",bVar"b'8",
20476                                          bVar"b'7",bVar"b'6"])]))],
20477                           Const("UnknownCapInstruction",CTy"CHERICOP2")),
20478                       Const("UnknownCapInstruction",CTy"CHERICOP2"))),
20479                  (bVar"b'24",
20480                   ITB([(Bop(And,bVar"b'22",
20481                             Bop(And,bVar"b'21",
20482                                 Bop(And,Mop(Not,bVar"b'2"),
20483                                     Bop(And,Mop(Not,bVar"b'1"),
20484                                         Mop(Not,bVar"b'0"))))),
20485                         Call
20486                           ("CCheck",CTy"CHERICOP2",
20487                            Call
20488                              ("CCheckPerm",CTy"CCheck",
20489                               TP[Mop(Cast(FTy 5),
20490                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
20491                                         bVar"b'17",bVar"b'16"]),
20492                                  Mop(Cast(FTy 5),
20493                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
20494                                         bVar"b'7",bVar"b'6"])]))),
20495                        (Bop(And,bVar"b'22",
20496                             Bop(And,bVar"b'21",
20497                                 Bop(And,Mop(Not,bVar"b'2"),
20498                                     Bop(And,Mop(Not,bVar"b'1"),bVar"b'0")))),
20499                         Call
20500                           ("CCheck",CTy"CHERICOP2",
20501                            Call
20502                              ("CCheckType",CTy"CCheck",
20503                               TP[Mop(Cast(FTy 5),
20504                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
20505                                         bVar"b'17",bVar"b'16"]),
20506                                  Mop(Cast(FTy 5),
20507                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
20508                                         bVar"b'12",bVar"b'11"])]))),
20509                        (Bop(And,Mop(Not,bVar"b'22"),bVar"b'21"),
20510                         Call
20511                           ("CBTU",CTy"CHERICOP2",
20512                            TP[Mop(Cast(FTy 5),
20513                                   LL[bVar"b'20",bVar"b'19",bVar"b'18",
20514                                      bVar"b'17",bVar"b'16"]),
20515                               Mop(Cast F16,
20516                                   LL[bVar"b'15",bVar"b'14",bVar"b'13",
20517                                      bVar"b'12",bVar"b'11",bVar"b'10",
20518                                      bVar"b'9",bVar"b'8",bVar"b'7",
20519                                      bVar"b'6",bVar"b'5",bVar"b'4",
20520                                      bVar"b'3",bVar"b'2",bVar"b'1",
20521                                      bVar"b'0"])])),
20522                        (Bop(And,bVar"b'22",Mop(Not,bVar"b'21")),
20523                         Call
20524                           ("CBTS",CTy"CHERICOP2",
20525                            TP[Mop(Cast(FTy 5),
20526                                   LL[bVar"b'20",bVar"b'19",bVar"b'18",
20527                                      bVar"b'17",bVar"b'16"]),
20528                               Mop(Cast F16,
20529                                   LL[bVar"b'15",bVar"b'14",bVar"b'13",
20530                                      bVar"b'12",bVar"b'11",bVar"b'10",
20531                                      bVar"b'9",bVar"b'8",bVar"b'7",
20532                                      bVar"b'6",bVar"b'5",bVar"b'4",
20533                                      bVar"b'3",bVar"b'2",bVar"b'1",
20534                                      bVar"b'0"])])),
20535                        (Bop(And,Mop(Not,bVar"b'22"),Mop(Not,bVar"b'21")),
20536                         Call
20537                           ("CJR",CTy"CHERICOP2",
20538                            Mop(Cast(FTy 5),
20539                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
20540                                   bVar"b'12",bVar"b'11"])))],
20541                       Const("UnknownCapInstruction",CTy"CHERICOP2"))),
20542                  (Bop(And,Mop(Not,bVar"b'22"),
20543                       Bop(And,Mop(Not,bVar"b'21"),
20544                           Bop(And,Mop(Not,bVar"b'5"),
20545                               Bop(And,Mop(Not,bVar"b'4"),
20546                                   Bop(And,Mop(Not,bVar"b'3"),
20547                                       Bop(And,Mop(Not,bVar"b'2"),
20548                                           Bop(And,bVar"b'1",
20549                                               Mop(Not,bVar"b'0")))))))),
20550                   Call
20551                     ("CGet",CTy"CHERICOP2",
20552                      Call
20553                        ("CGetBase",CTy"CGet",
20554                         TP[Mop(Cast(FTy 5),
20555                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
20556                                   bVar"b'17",bVar"b'16"]),
20557                            Mop(Cast(FTy 5),
20558                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
20559                                   bVar"b'12",bVar"b'11"])]))),
20560                  (Bop(And,Mop(Not,bVar"b'22"),
20561                       Bop(And,Mop(Not,bVar"b'21"),
20562                           Bop(And,Mop(Not,bVar"b'5"),
20563                               Bop(And,Mop(Not,bVar"b'4"),
20564                                   Bop(And,Mop(Not,bVar"b'3"),
20565                                       Bop(And,Mop(Not,bVar"b'2"),
20566                                           Bop(And,bVar"b'1",bVar"b'0"))))))),
20567                   Call
20568                     ("CGet",CTy"CHERICOP2",
20569                      Call
20570                        ("CGetLen",CTy"CGet",
20571                         TP[Mop(Cast(FTy 5),
20572                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
20573                                   bVar"b'17",bVar"b'16"]),
20574                            Mop(Cast(FTy 5),
20575                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
20576                                   bVar"b'12",bVar"b'11"])]))),
20577                  (Bop(And,Mop(Not,bVar"b'22"),
20578                       Bop(And,Mop(Not,bVar"b'21"),
20579                           Bop(And,Mop(Not,bVar"b'5"),
20580                               Bop(And,Mop(Not,bVar"b'4"),
20581                                   Bop(And,Mop(Not,bVar"b'3"),
20582                                       Bop(And,bVar"b'2",
20583                                           Bop(And,Mop(Not,bVar"b'1"),
20584                                               bVar"b'0"))))))),
20585                   Call
20586                     ("CGet",CTy"CHERICOP2",
20587                      Call
20588                        ("CGetTag",CTy"CGet",
20589                         TP[Mop(Cast(FTy 5),
20590                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
20591                                   bVar"b'17",bVar"b'16"]),
20592                            Mop(Cast(FTy 5),
20593                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
20594                                   bVar"b'12",bVar"b'11"])]))),
20595                  (Bop(And,Mop(Not,bVar"b'22"),
20596                       Bop(And,Mop(Not,bVar"b'21"),
20597                           Bop(And,Mop(Not,bVar"b'5"),
20598                               Bop(And,Mop(Not,bVar"b'4"),
20599                                   Bop(And,Mop(Not,bVar"b'3"),
20600                                       Bop(And,bVar"b'2",
20601                                           Bop(And,bVar"b'1",
20602                                               Mop(Not,bVar"b'0")))))))),
20603                   Call
20604                     ("CGet",CTy"CHERICOP2",
20605                      Call
20606                        ("CGetSealed",CTy"CGet",
20607                         TP[Mop(Cast(FTy 5),
20608                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
20609                                   bVar"b'17",bVar"b'16"]),
20610                            Mop(Cast(FTy 5),
20611                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
20612                                   bVar"b'12",bVar"b'11"])]))),
20613                  (Bop(And,Mop(Not,bVar"b'22"),
20614                       Bop(And,Mop(Not,bVar"b'21"),
20615                           Bop(And,Mop(Not,bVar"b'5"),
20616                               Bop(And,Mop(Not,bVar"b'4"),
20617                                   Bop(And,Mop(Not,bVar"b'3"),
20618                                       Bop(And,Mop(Not,bVar"b'2"),
20619                                           Bop(And,Mop(Not,bVar"b'1"),
20620                                               Mop(Not,bVar"b'0")))))))),
20621                   Call
20622                     ("CGet",CTy"CHERICOP2",
20623                      Call
20624                        ("CGetPerm",CTy"CGet",
20625                         TP[Mop(Cast(FTy 5),
20626                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
20627                                   bVar"b'17",bVar"b'16"]),
20628                            Mop(Cast(FTy 5),
20629                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
20630                                   bVar"b'12",bVar"b'11"])]))),
20631                  (Bop(And,Mop(Not,bVar"b'22"),
20632                       Bop(And,Mop(Not,bVar"b'21"),
20633                           Bop(And,Mop(Not,bVar"b'5"),
20634                               Bop(And,Mop(Not,bVar"b'4"),
20635                                   Bop(And,Mop(Not,bVar"b'3"),
20636                                       Bop(And,Mop(Not,bVar"b'2"),
20637                                           Bop(And,Mop(Not,bVar"b'1"),
20638                                               bVar"b'0"))))))),
20639                   Call
20640                     ("CGet",CTy"CHERICOP2",
20641                      Call
20642                        ("CGetType",CTy"CGet",
20643                         TP[Mop(Cast(FTy 5),
20644                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
20645                                   bVar"b'17",bVar"b'16"]),
20646                            Mop(Cast(FTy 5),
20647                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
20648                                   bVar"b'12",bVar"b'11"])]))),
20649                  (Bop(And,Mop(Not,bVar"b'22"),
20650                       Bop(And,Mop(Not,bVar"b'21"),
20651                           Bop(And,Mop(Not,bVar"b'15"),
20652                               Bop(And,Mop(Not,bVar"b'14"),
20653                                   Bop(And,Mop(Not,bVar"b'13"),
20654                                       Bop(And,Mop(Not,bVar"b'12"),
20655                                           Bop(And,Mop(Not,bVar"b'11"),
20656                                               Bop(And,bVar"b'10",
20657                                                   Bop(And,bVar"b'9",
20658                                                       Bop(And,bVar"b'8",
20659                                                           Bop(And,
20660                                                               bVar"b'7",
20661                                                               Bop(And,
20662                                                                   bVar"b'6",
20663                                                                   Bop(And,
20664                                                                       bVar"b'5",
20665                                                                       Bop(And,
20666                                                                           bVar"b'4",
20667                                                                           Bop(And,
20668                                                                               bVar"b'3",
20669                                                                               Bop(And,
20670                                                                                   bVar"b'2",
20671                                                                                   Bop(And,
20672                                                                                       bVar"b'1",
20673                                                                                       bVar"b'0"))))))))))))))))),
20674                   Call
20675                     ("CGet",CTy"CHERICOP2",
20676                      Call
20677                        ("CGetPCC",CTy"CGet",
20678                         Mop(Cast(FTy 5),
20679                             LL[bVar"b'20",bVar"b'19",bVar"b'18",
20680                                bVar"b'17",bVar"b'16"])))),
20681                  (Bop(And,Mop(Not,bVar"b'22"),
20682                       Bop(And,Mop(Not,bVar"b'21"),
20683                           Bop(And,Mop(Not,bVar"b'10"),
20684                               Bop(And,Mop(Not,bVar"b'9"),
20685                                   Bop(And,bVar"b'8",
20686                                       Bop(And,bVar"b'7",
20687                                           Bop(And,bVar"b'6",
20688                                               Bop(And,bVar"b'5",
20689                                                   Bop(And,bVar"b'4",
20690                                                       Bop(And,bVar"b'3",
20691                                                           Bop(And,
20692                                                               bVar"b'2",
20693                                                               Bop(And,
20694                                                                   bVar"b'1",
20695                                                                   bVar"b'0")))))))))))),
20696                   Call
20697                     ("CGet",CTy"CHERICOP2",
20698                      Call
20699                        ("CGetPCCSetOffset",CTy"CGet",
20700                         TP[Mop(Cast(FTy 5),
20701                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
20702                                   bVar"b'17",bVar"b'16"]),
20703                            Mop(Cast(FTy 5),
20704                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
20705                                   bVar"b'12",bVar"b'11"])]))),
20706                  (Bop(And,Mop(Not,bVar"b'22"),
20707                       Bop(And,Mop(Not,bVar"b'21"),
20708                           Bop(And,Mop(Not,bVar"b'15"),
20709                               Bop(And,Mop(Not,bVar"b'14"),
20710                                   Bop(And,Mop(Not,bVar"b'13"),
20711                                       Bop(And,Mop(Not,bVar"b'12"),
20712                                           Bop(And,Mop(Not,bVar"b'11"),
20713                                               Bop(And,Mop(Not,bVar"b'5"),
20714                                                   Bop(And,
20715                                                       Mop(Not,bVar"b'4"),
20716                                                       Bop(And,
20717                                                           Mop(Not,
20718                                                               bVar"b'3"),
20719                                                           Bop(And,
20720                                                               bVar"b'2",
20721                                                               Bop(And,
20722                                                                   Mop(Not,
20723                                                                       bVar"b'1"),
20724                                                                   Mop(Not,
20725                                                                       bVar"b'0"))))))))))))),
20726                   Call
20727                     ("CGet",CTy"CHERICOP2",
20728                      Call
20729                        ("CGetCause",CTy"CGet",
20730                         Mop(Cast(FTy 5),
20731                             LL[bVar"b'20",bVar"b'19",bVar"b'18",
20732                                bVar"b'17",bVar"b'16"])))),
20733                  (Bop(And,Mop(Not,bVar"b'22"),bVar"b'21"),
20734                   Call
20735                     ("CSet",CTy"CHERICOP2",
20736                      Call
20737                        ("CSetBounds",CTy"CSet",
20738                         TP[Mop(Cast(FTy 5),
20739                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
20740                                   bVar"b'17",bVar"b'16"]),
20741                            Mop(Cast(FTy 5),
20742                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
20743                                   bVar"b'12",bVar"b'11"]),
20744                            Mop(Cast(FTy 5),
20745                                LL[bVar"b'10",bVar"b'9",bVar"b'8",
20746                                   bVar"b'7",bVar"b'6"])]))),
20747                  (Bop(And,Mop(Not,bVar"b'22"),
20748                       Bop(And,Mop(Not,bVar"b'21"),
20749                           Bop(And,Mop(Not,bVar"b'5"),
20750                               Bop(And,Mop(Not,bVar"b'4"),
20751                                   Bop(And,bVar"b'3",
20752                                       Bop(And,Mop(Not,bVar"b'2"),
20753                                           Bop(And,Mop(Not,bVar"b'1"),
20754                                               bVar"b'0"))))))),
20755                   Call
20756                     ("CSet",CTy"CHERICOP2",
20757                      Call
20758                        ("CSetBoundsExact",CTy"CSet",
20759                         TP[Mop(Cast(FTy 5),
20760                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
20761                                   bVar"b'17",bVar"b'16"]),
20762                            Mop(Cast(FTy 5),
20763                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
20764                                   bVar"b'12",bVar"b'11"]),
20765                            Mop(Cast(FTy 5),
20766                                LL[bVar"b'10",bVar"b'9",bVar"b'8",
20767                                   bVar"b'7",bVar"b'6"])]))),
20768                  (Bop(And,Mop(Not,bVar"b'22"),
20769                       Bop(And,Mop(Not,bVar"b'21"),
20770                           Bop(And,Mop(Not,bVar"b'5"),
20771                               Bop(And,Mop(Not,bVar"b'4"),
20772                                   Bop(And,bVar"b'3",
20773                                       Bop(And,Mop(Not,bVar"b'2"),
20774                                           Bop(And,bVar"b'1",
20775                                               Mop(Not,bVar"b'0")))))))),
20776                   Call
20777                     ("CSub",CTy"CHERICOP2",
20778                      TP[Mop(Cast(FTy 5),
20779                             LL[bVar"b'20",bVar"b'19",bVar"b'18",
20780                                bVar"b'17",bVar"b'16"]),
20781                         Mop(Cast(FTy 5),
20782                             LL[bVar"b'15",bVar"b'14",bVar"b'13",
20783                                bVar"b'12",bVar"b'11"]),
20784                         Mop(Cast(FTy 5),
20785                             LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
20786                                bVar"b'6"])])),
20787                  (Bop(And,bVar"b'22",Mop(Not,bVar"b'21")),
20788                   Call
20789                     ("CSeal",CTy"CHERICOP2",
20790                      TP[Mop(Cast(FTy 5),
20791                             LL[bVar"b'20",bVar"b'19",bVar"b'18",
20792                                bVar"b'17",bVar"b'16"]),
20793                         Mop(Cast(FTy 5),
20794                             LL[bVar"b'15",bVar"b'14",bVar"b'13",
20795                                bVar"b'12",bVar"b'11"]),
20796                         Mop(Cast(FTy 5),
20797                             LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
20798                                bVar"b'6"])])),
20799                  (Bop(And,bVar"b'22",bVar"b'21"),
20800                   Call
20801                     ("CUnseal",CTy"CHERICOP2",
20802                      TP[Mop(Cast(FTy 5),
20803                             LL[bVar"b'20",bVar"b'19",bVar"b'18",
20804                                bVar"b'17",bVar"b'16"]),
20805                         Mop(Cast(FTy 5),
20806                             LL[bVar"b'15",bVar"b'14",bVar"b'13",
20807                                bVar"b'12",bVar"b'11"]),
20808                         Mop(Cast(FTy 5),
20809                             LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
20810                                bVar"b'6"])])),
20811                  (Bop(And,Mop(Not,bVar"b'22"),
20812                       Bop(And,Mop(Not,bVar"b'21"),
20813                           Bop(And,Mop(Not,bVar"b'5"),
20814                               Bop(And,bVar"b'4",
20815                                   Bop(And,bVar"b'3",
20816                                       Bop(And,bVar"b'2",
20817                                           Bop(And,Mop(Not,bVar"b'1"),
20818                                               Mop(Not,bVar"b'0")))))))),
20819                   Call
20820                     ("CMOVN",CTy"CHERICOP2",
20821                      TP[Mop(Cast(FTy 5),
20822                             LL[bVar"b'20",bVar"b'19",bVar"b'18",
20823                                bVar"b'17",bVar"b'16"]),
20824                         Mop(Cast(FTy 5),
20825                             LL[bVar"b'15",bVar"b'14",bVar"b'13",
20826                                bVar"b'12",bVar"b'11"]),
20827                         Mop(Cast(FTy 5),
20828                             LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
20829                                bVar"b'6"])])),
20830                  (Bop(And,Mop(Not,bVar"b'22"),
20831                       Bop(And,Mop(Not,bVar"b'21"),
20832                           Bop(And,Mop(Not,bVar"b'5"),
20833                               Bop(And,bVar"b'4",
20834                                   Bop(And,bVar"b'3",
20835                                       Bop(And,Mop(Not,bVar"b'2"),
20836                                           Bop(And,bVar"b'1",bVar"b'0"))))))),
20837                   Call
20838                     ("CMOVZ",CTy"CHERICOP2",
20839                      TP[Mop(Cast(FTy 5),
20840                             LL[bVar"b'20",bVar"b'19",bVar"b'18",
20841                                bVar"b'17",bVar"b'16"]),
20842                         Mop(Cast(FTy 5),
20843                             LL[bVar"b'15",bVar"b'14",bVar"b'13",
20844                                bVar"b'12",bVar"b'11"]),
20845                         Mop(Cast(FTy 5),
20846                             LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
20847                                bVar"b'6"])]))],
20848                 Const("UnknownCapInstruction",CTy"CHERICOP2"))))))
20849;
20850val LWC2Decode_def = Def
20851  ("LWC2Decode",
20852   TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),Var("offset",F8),
20853      Var("v",FTy 3)],
20854   CS(BL(3,Var("v",FTy 3)),
20855      [(TP[LF,bVar"t'1",bVar"t'0"],
20856        Call
20857          ("LWC2",CTy"instruction",
20858           Call
20859             ("CHERILWC2",CTy"LWC2",
20860              Call
20861                ("CLoad",CTy"CHERILWC2",
20862                 TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
20863                    Var("offset",F8),LW(0,1),
20864                    Mop(Cast(FTy 2),LL[bVar"t'1",bVar"t'0"])])))),
20865       (TP[LT,LF,LF],
20866        Call
20867          ("LWC2",CTy"instruction",
20868           Call
20869             ("CHERILWC2",CTy"LWC2",
20870              Call
20871                ("CLoad",CTy"CHERILWC2",
20872                 TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
20873                    Var("offset",F8),LW(1,1),LW(0,2)])))),
20874       (TP[LT,LF,LT],
20875        Call
20876          ("LWC2",CTy"instruction",
20877           Call
20878             ("CHERILWC2",CTy"LWC2",
20879              Call
20880                ("CLoad",CTy"CHERILWC2",
20881                 TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
20882                    Var("offset",F8),LW(1,1),LW(1,2)])))),
20883       (TP[LT,LT,LF],
20884        Call
20885          ("LWC2",CTy"instruction",
20886           Call
20887             ("CHERILWC2",CTy"LWC2",
20888              Call
20889                ("CLoad",CTy"CHERILWC2",
20890                 TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
20891                    Var("offset",F8),LW(1,1),LW(2,2)])))),
20892       (TP[AVar bTy,AVar bTy,AVar bTy],
20893        Call
20894          ("COP2",CTy"instruction",
20895           Call
20896             ("CHERICOP2",CTy"COP2",
20897              Const("UnknownCapInstruction",CTy"CHERICOP2"))))]))
20898;
20899val SWC2Decode_def = Def
20900  ("SWC2Decode",
20901   TP[Var("rs",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),Var("offset",F8),
20902      Var("v",FTy 3)],
20903   CS(BL(3,Var("v",FTy 3)),
20904      [(TP[LF,bVar"t'1",bVar"t'0"],
20905        Call
20906          ("SWC2",CTy"instruction",
20907           Call
20908             ("CHERISWC2",CTy"SWC2",
20909              Call
20910                ("CStore",CTy"CHERISWC2",
20911                 TP[Var("rs",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
20912                    Var("offset",F8),
20913                    Mop(Cast(FTy 2),LL[bVar"t'1",bVar"t'0"])])))),
20914       (TP[AVar bTy,AVar bTy,AVar bTy],
20915        Call
20916          ("COP2",CTy"instruction",
20917           Call
20918             ("CHERICOP2",CTy"COP2",
20919              Const("UnknownCapInstruction",CTy"CHERICOP2"))))]))
20920;
20921val LDC2Decode_def = Def
20922  ("LDC2Decode",Var("a",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 11)))),
20923   Call
20924     ("LDC2",CTy"instruction",
20925      Call
20926        ("CHERILDC2",CTy"LDC2",
20927         Call
20928           ("CLC",CTy"CHERILDC2",
20929            Var("a",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 11))))))))
20930;
20931val SDC2Decode_def = Def
20932  ("SDC2Decode",Var("a",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 11)))),
20933   Call
20934     ("SDC2",CTy"instruction",
20935      Call
20936        ("CHERISDC2",CTy"SDC2",
20937         Call
20938           ("CSC",CTy"CHERISDC2",
20939            Var("a",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 11))))))))
20940;
20941val Decode_def = Def
20942  ("Decode",Var("w",F32),
20943   Let(TP[bVar"b'31",bVar"b'30",bVar"b'29",bVar"b'28",bVar"b'27",
20944          bVar"b'26",bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
20945          bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
20946          bVar"b'16",bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
20947          bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6",
20948          bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"],
20949       BL(32,Var("w",F32)),
20950       ITB([(bVar"b'26",
20951             ITB([(bVar"b'28",
20952                   ITB([(bVar"b'31",
20953                         ITB([(bVar"b'30",
20954                               ITB([(Bop(And,Mop(Not,bVar"b'29"),
20955                                         bVar"b'27"),
20956                                     Call
20957                                       ("Load",CTy"instruction",
20958                                        Call
20959                                          ("LD",CTy"Load",
20960                                           TP[Mop(Cast(FTy 5),
20961                                                  LL[bVar"b'25",
20962                                                     bVar"b'24",
20963                                                     bVar"b'23",
20964                                                     bVar"b'22",bVar"b'21"]),
20965                                              Mop(Cast(FTy 5),
20966                                                  LL[bVar"b'20",
20967                                                     bVar"b'19",
20968                                                     bVar"b'18",
20969                                                     bVar"b'17",bVar"b'16"]),
20970                                              Mop(Cast F16,
20971                                                  LL[bVar"b'15",
20972                                                     bVar"b'14",
20973                                                     bVar"b'13",
20974                                                     bVar"b'12",
20975                                                     bVar"b'11",
20976                                                     bVar"b'10",bVar"b'9",
20977                                                     bVar"b'8",bVar"b'7",
20978                                                     bVar"b'6",bVar"b'5",
20979                                                     bVar"b'4",bVar"b'3",
20980                                                     bVar"b'2",bVar"b'1",
20981                                                     bVar"b'0"])]))),
20982                                    (Bop(And,bVar"b'29",bVar"b'27"),
20983                                     Call
20984                                       ("Store",CTy"instruction",
20985                                        Call
20986                                          ("SD",CTy"Store",
20987                                           TP[Mop(Cast(FTy 5),
20988                                                  LL[bVar"b'25",
20989                                                     bVar"b'24",
20990                                                     bVar"b'23",
20991                                                     bVar"b'22",bVar"b'21"]),
20992                                              Mop(Cast(FTy 5),
20993                                                  LL[bVar"b'20",
20994                                                     bVar"b'19",
20995                                                     bVar"b'18",
20996                                                     bVar"b'17",bVar"b'16"]),
20997                                              Mop(Cast F16,
20998                                                  LL[bVar"b'15",
20999                                                     bVar"b'14",
21000                                                     bVar"b'13",
21001                                                     bVar"b'12",
21002                                                     bVar"b'11",
21003                                                     bVar"b'10",bVar"b'9",
21004                                                     bVar"b'8",bVar"b'7",
21005                                                     bVar"b'6",bVar"b'5",
21006                                                     bVar"b'4",bVar"b'3",
21007                                                     bVar"b'2",bVar"b'1",
21008                                                     bVar"b'0"])]))),
21009                                    (Bop(And,Mop(Not,bVar"b'29"),
21010                                         Mop(Not,bVar"b'27")),
21011                                     Call
21012                                       ("LDC1Decode",CTy"instruction",
21013                                        TP[Mop(Cast(FTy 5),
21014                                               LL[bVar"b'20",bVar"b'19",
21015                                                  bVar"b'18",bVar"b'17",
21016                                                  bVar"b'16"]),
21017                                           Mop(Cast F16,
21018                                               LL[bVar"b'15",bVar"b'14",
21019                                                  bVar"b'13",bVar"b'12",
21020                                                  bVar"b'11",bVar"b'10",
21021                                                  bVar"b'9",bVar"b'8",
21022                                                  bVar"b'7",bVar"b'6",
21023                                                  bVar"b'5",bVar"b'4",
21024                                                  bVar"b'3",bVar"b'2",
21025                                                  bVar"b'1",bVar"b'0"]),
21026                                           Mop(Cast(FTy 5),
21027                                               LL[bVar"b'25",bVar"b'24",
21028                                                  bVar"b'23",bVar"b'22",
21029                                                  bVar"b'21"])])),
21030                                    (Bop(And,bVar"b'29",
21031                                         Mop(Not,bVar"b'27")),
21032                                     Call
21033                                       ("SDC1Decode",CTy"instruction",
21034                                        TP[Mop(Cast(FTy 5),
21035                                               LL[bVar"b'20",bVar"b'19",
21036                                                  bVar"b'18",bVar"b'17",
21037                                                  bVar"b'16"]),
21038                                           Mop(Cast F16,
21039                                               LL[bVar"b'15",bVar"b'14",
21040                                                  bVar"b'13",bVar"b'12",
21041                                                  bVar"b'11",bVar"b'10",
21042                                                  bVar"b'9",bVar"b'8",
21043                                                  bVar"b'7",bVar"b'6",
21044                                                  bVar"b'5",bVar"b'4",
21045                                                  bVar"b'3",bVar"b'2",
21046                                                  bVar"b'1",bVar"b'0"]),
21047                                           Mop(Cast(FTy 5),
21048                                               LL[bVar"b'25",bVar"b'24",
21049                                                  bVar"b'23",bVar"b'22",
21050                                                  bVar"b'21"])]))],
21051                                   Const
21052                                     ("ReservedInstruction",
21053                                      CTy"instruction"))),
21054                              (Bop(And,Mop(Not,bVar"b'29"),
21055                                   Mop(Not,bVar"b'27")),
21056                               Call
21057                                 ("Load",CTy"instruction",
21058                                  Call
21059                                    ("LHU",CTy"Load",
21060                                     TP[Mop(Cast(FTy 5),
21061                                            LL[bVar"b'25",bVar"b'24",
21062                                               bVar"b'23",bVar"b'22",
21063                                               bVar"b'21"]),
21064                                        Mop(Cast(FTy 5),
21065                                            LL[bVar"b'20",bVar"b'19",
21066                                               bVar"b'18",bVar"b'17",
21067                                               bVar"b'16"]),
21068                                        Mop(Cast F16,
21069                                            LL[bVar"b'15",bVar"b'14",
21070                                               bVar"b'13",bVar"b'12",
21071                                               bVar"b'11",bVar"b'10",
21072                                               bVar"b'9",bVar"b'8",
21073                                               bVar"b'7",bVar"b'6",
21074                                               bVar"b'5",bVar"b'4",
21075                                               bVar"b'3",bVar"b'2",
21076                                               bVar"b'1",bVar"b'0"])]))),
21077                              (Bop(And,Mop(Not,bVar"b'29"),bVar"b'27"),
21078                               Call
21079                                 ("Load",CTy"instruction",
21080                                  Call
21081                                    ("LWU",CTy"Load",
21082                                     TP[Mop(Cast(FTy 5),
21083                                            LL[bVar"b'25",bVar"b'24",
21084                                               bVar"b'23",bVar"b'22",
21085                                               bVar"b'21"]),
21086                                        Mop(Cast(FTy 5),
21087                                            LL[bVar"b'20",bVar"b'19",
21088                                               bVar"b'18",bVar"b'17",
21089                                               bVar"b'16"]),
21090                                        Mop(Cast F16,
21091                                            LL[bVar"b'15",bVar"b'14",
21092                                               bVar"b'13",bVar"b'12",
21093                                               bVar"b'11",bVar"b'10",
21094                                               bVar"b'9",bVar"b'8",
21095                                               bVar"b'7",bVar"b'6",
21096                                               bVar"b'5",bVar"b'4",
21097                                               bVar"b'3",bVar"b'2",
21098                                               bVar"b'1",bVar"b'0"])]))),
21099                              (Bop(And,bVar"b'29",Mop(Not,bVar"b'27")),
21100                               Call
21101                                 ("Store",CTy"instruction",
21102                                  Call
21103                                    ("SDR",CTy"Store",
21104                                     TP[Mop(Cast(FTy 5),
21105                                            LL[bVar"b'25",bVar"b'24",
21106                                               bVar"b'23",bVar"b'22",
21107                                               bVar"b'21"]),
21108                                        Mop(Cast(FTy 5),
21109                                            LL[bVar"b'20",bVar"b'19",
21110                                               bVar"b'18",bVar"b'17",
21111                                               bVar"b'16"]),
21112                                        Mop(Cast F16,
21113                                            LL[bVar"b'15",bVar"b'14",
21114                                               bVar"b'13",bVar"b'12",
21115                                               bVar"b'11",bVar"b'10",
21116                                               bVar"b'9",bVar"b'8",
21117                                               bVar"b'7",bVar"b'6",
21118                                               bVar"b'5",bVar"b'4",
21119                                               bVar"b'3",bVar"b'2",
21120                                               bVar"b'1",bVar"b'0"])]))),
21121                              (Bop(And,bVar"b'29",bVar"b'27"),
21122                               Call
21123                                 ("CACHE",CTy"instruction",
21124                                  TP[Mop(Cast(FTy 5),
21125                                         LL[bVar"b'25",bVar"b'24",
21126                                            bVar"b'23",bVar"b'22",
21127                                            bVar"b'21"]),
21128                                     Mop(Cast(FTy 5),
21129                                         LL[bVar"b'20",bVar"b'19",
21130                                            bVar"b'18",bVar"b'17",
21131                                            bVar"b'16"]),
21132                                     Mop(Cast F16,
21133                                         LL[bVar"b'15",bVar"b'14",
21134                                            bVar"b'13",bVar"b'12",
21135                                            bVar"b'11",bVar"b'10",
21136                                            bVar"b'9",bVar"b'8",bVar"b'7",
21137                                            bVar"b'6",bVar"b'5",bVar"b'4",
21138                                            bVar"b'3",bVar"b'2",bVar"b'1",
21139                                            bVar"b'0"])]))],
21140                             Const("ReservedInstruction",CTy"instruction"))),
21141                        (Bop(And,Mop(Not,bVar"b'30"),
21142                             Bop(And,Mop(Not,bVar"b'29"),
21143                                 Bop(And,bVar"b'27",
21144                                     Bop(And,Mop(Not,bVar"b'20"),
21145                                         Bop(And,Mop(Not,bVar"b'19"),
21146                                             Bop(And,Mop(Not,bVar"b'18"),
21147                                                 Bop(And,
21148                                                     Mop(Not,bVar"b'17"),
21149                                                     Mop(Not,bVar"b'16")))))))),
21150                         Call
21151                           ("Branch",CTy"instruction",
21152                            Call
21153                              ("BGTZ",CTy"Branch",
21154                               TP[Mop(Cast(FTy 5),
21155                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
21156                                         bVar"b'22",bVar"b'21"]),
21157                                  Mop(Cast F16,
21158                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
21159                                         bVar"b'12",bVar"b'11",bVar"b'10",
21160                                         bVar"b'9",bVar"b'8",bVar"b'7",
21161                                         bVar"b'6",bVar"b'5",bVar"b'4",
21162                                         bVar"b'3",bVar"b'2",bVar"b'1",
21163                                         bVar"b'0"])]))),
21164                        (Bop(And,Mop(Not,bVar"b'30"),
21165                             Bop(And,bVar"b'29",
21166                                 Bop(And,bVar"b'27",
21167                                     Bop(And,Mop(Not,bVar"b'25"),
21168                                         Bop(And,Mop(Not,bVar"b'24"),
21169                                             Bop(And,Mop(Not,bVar"b'23"),
21170                                                 Bop(And,
21171                                                     Mop(Not,bVar"b'22"),
21172                                                     Mop(Not,bVar"b'21")))))))),
21173                         Call
21174                           ("ArithI",CTy"instruction",
21175                            Call
21176                              ("LUI",CTy"ArithI",
21177                               TP[Mop(Cast(FTy 5),
21178                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
21179                                         bVar"b'17",bVar"b'16"]),
21180                                  Mop(Cast F16,
21181                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
21182                                         bVar"b'12",bVar"b'11",bVar"b'10",
21183                                         bVar"b'9",bVar"b'8",bVar"b'7",
21184                                         bVar"b'6",bVar"b'5",bVar"b'4",
21185                                         bVar"b'3",bVar"b'2",bVar"b'1",
21186                                         bVar"b'0"])]))),
21187                        (Bop(And,bVar"b'30",
21188                             Bop(And,Mop(Not,bVar"b'29"),
21189                                 Bop(And,bVar"b'27",
21190                                     Bop(And,Mop(Not,bVar"b'20"),
21191                                         Bop(And,Mop(Not,bVar"b'19"),
21192                                             Bop(And,Mop(Not,bVar"b'18"),
21193                                                 Bop(And,
21194                                                     Mop(Not,bVar"b'17"),
21195                                                     Mop(Not,bVar"b'16")))))))),
21196                         Call
21197                           ("Branch",CTy"instruction",
21198                            Call
21199                              ("BGTZL",CTy"Branch",
21200                               TP[Mop(Cast(FTy 5),
21201                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
21202                                         bVar"b'22",bVar"b'21"]),
21203                                  Mop(Cast F16,
21204                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
21205                                         bVar"b'12",bVar"b'11",bVar"b'10",
21206                                         bVar"b'9",bVar"b'8",bVar"b'7",
21207                                         bVar"b'6",bVar"b'5",bVar"b'4",
21208                                         bVar"b'3",bVar"b'2",bVar"b'1",
21209                                         bVar"b'0"])]))),
21210                        (Bop(And,Mop(Not,bVar"b'30"),
21211                             Bop(And,Mop(Not,bVar"b'29"),
21212                                 Mop(Not,bVar"b'27"))),
21213                         Call
21214                           ("Branch",CTy"instruction",
21215                            Call
21216                              ("BNE",CTy"Branch",
21217                               TP[Mop(Cast(FTy 5),
21218                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
21219                                         bVar"b'22",bVar"b'21"]),
21220                                  Mop(Cast(FTy 5),
21221                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
21222                                         bVar"b'17",bVar"b'16"]),
21223                                  Mop(Cast F16,
21224                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
21225                                         bVar"b'12",bVar"b'11",bVar"b'10",
21226                                         bVar"b'9",bVar"b'8",bVar"b'7",
21227                                         bVar"b'6",bVar"b'5",bVar"b'4",
21228                                         bVar"b'3",bVar"b'2",bVar"b'1",
21229                                         bVar"b'0"])]))),
21230                        (Bop(And,Mop(Not,bVar"b'30"),
21231                             Bop(And,bVar"b'29",Mop(Not,bVar"b'27"))),
21232                         Call
21233                           ("ArithI",CTy"instruction",
21234                            Call
21235                              ("ORI",CTy"ArithI",
21236                               TP[Mop(Cast(FTy 5),
21237                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
21238                                         bVar"b'22",bVar"b'21"]),
21239                                  Mop(Cast(FTy 5),
21240                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
21241                                         bVar"b'17",bVar"b'16"]),
21242                                  Mop(Cast F16,
21243                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
21244                                         bVar"b'12",bVar"b'11",bVar"b'10",
21245                                         bVar"b'9",bVar"b'8",bVar"b'7",
21246                                         bVar"b'6",bVar"b'5",bVar"b'4",
21247                                         bVar"b'3",bVar"b'2",bVar"b'1",
21248                                         bVar"b'0"])]))),
21249                        (Bop(And,bVar"b'30",
21250                             Bop(And,Mop(Not,bVar"b'29"),
21251                                 Mop(Not,bVar"b'27"))),
21252                         Call
21253                           ("Branch",CTy"instruction",
21254                            Call
21255                              ("BNEL",CTy"Branch",
21256                               TP[Mop(Cast(FTy 5),
21257                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
21258                                         bVar"b'22",bVar"b'21"]),
21259                                  Mop(Cast(FTy 5),
21260                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
21261                                         bVar"b'17",bVar"b'16"]),
21262                                  Mop(Cast F16,
21263                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
21264                                         bVar"b'12",bVar"b'11",bVar"b'10",
21265                                         bVar"b'9",bVar"b'8",bVar"b'7",
21266                                         bVar"b'6",bVar"b'5",bVar"b'4",
21267                                         bVar"b'3",bVar"b'2",bVar"b'1",
21268                                         bVar"b'0"])]))),
21269                        (Bop(And,bVar"b'30",
21270                             Bop(And,bVar"b'29",
21271                                 Bop(And,bVar"b'27",
21272                                     Bop(And,Mop(Not,bVar"b'25"),
21273                                         Bop(And,Mop(Not,bVar"b'24"),
21274                                             Bop(And,Mop(Not,bVar"b'23"),
21275                                                 Bop(And,
21276                                                     Mop(Not,bVar"b'22"),
21277                                                     Bop(And,
21278                                                         Mop(Not,
21279                                                             bVar"b'21"),
21280                                                         Bop(And,
21281                                                             Mop(Not,
21282                                                                 bVar"b'10"),
21283                                                             Bop(And,
21284                                                                 Mop(Not,
21285                                                                     bVar"b'9"),
21286                                                                 Bop(And,
21287                                                                     Mop(Not,
21288                                                                         bVar"b'8"),
21289                                                                     Bop(And,
21290                                                                         Mop(Not,
21291                                                                             bVar"b'7"),
21292                                                                         Bop(And,
21293                                                                             Mop(Not,
21294                                                                                 bVar"b'6"),
21295                                                                             Bop(And,
21296                                                                                 bVar"b'5",
21297                                                                                 Bop(And,
21298                                                                                     bVar"b'4",
21299                                                                                     Bop(And,
21300                                                                                         bVar"b'3",
21301                                                                                         Bop(And,
21302                                                                                             Mop(Not,
21303                                                                                                 bVar"b'2"),
21304                                                                                             Bop(And,
21305                                                                                                 bVar"b'1",
21306                                                                                                 bVar"b'0")))))))))))))))))),
21307                         Call
21308                           ("RDHWR",CTy"instruction",
21309                            TP[Mop(Cast(FTy 5),
21310                                   LL[bVar"b'20",bVar"b'19",bVar"b'18",
21311                                      bVar"b'17",bVar"b'16"]),
21312                               Mop(Cast(FTy 5),
21313                                   LL[bVar"b'15",bVar"b'14",bVar"b'13",
21314                                      bVar"b'12",bVar"b'11"])]))],
21315                       Const("ReservedInstruction",CTy"instruction"))),
21316                  (bVar"b'29",
21317                   ITB([(Bop(And,Mop(Not,bVar"b'31"),
21318                             Bop(And,Mop(Not,bVar"b'30"),
21319                                 Mop(Not,bVar"b'27"))),
21320                         Call
21321                           ("ArithI",CTy"instruction",
21322                            Call
21323                              ("ADDIU",CTy"ArithI",
21324                               TP[Mop(Cast(FTy 5),
21325                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
21326                                         bVar"b'22",bVar"b'21"]),
21327                                  Mop(Cast(FTy 5),
21328                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
21329                                         bVar"b'17",bVar"b'16"]),
21330                                  Mop(Cast F16,
21331                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
21332                                         bVar"b'12",bVar"b'11",bVar"b'10",
21333                                         bVar"b'9",bVar"b'8",bVar"b'7",
21334                                         bVar"b'6",bVar"b'5",bVar"b'4",
21335                                         bVar"b'3",bVar"b'2",bVar"b'1",
21336                                         bVar"b'0"])]))),
21337                        (Bop(And,Mop(Not,bVar"b'31"),
21338                             Bop(And,Mop(Not,bVar"b'30"),bVar"b'27")),
21339                         Call
21340                           ("ArithI",CTy"instruction",
21341                            Call
21342                              ("SLTIU",CTy"ArithI",
21343                               TP[Mop(Cast(FTy 5),
21344                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
21345                                         bVar"b'22",bVar"b'21"]),
21346                                  Mop(Cast(FTy 5),
21347                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
21348                                         bVar"b'17",bVar"b'16"]),
21349                                  Mop(Cast F16,
21350                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
21351                                         bVar"b'12",bVar"b'11",bVar"b'10",
21352                                         bVar"b'9",bVar"b'8",bVar"b'7",
21353                                         bVar"b'6",bVar"b'5",bVar"b'4",
21354                                         bVar"b'3",bVar"b'2",bVar"b'1",
21355                                         bVar"b'0"])]))),
21356                        (Bop(And,Mop(Not,bVar"b'31"),
21357                             Bop(And,bVar"b'30",Mop(Not,bVar"b'27"))),
21358                         Call
21359                           ("ArithI",CTy"instruction",
21360                            Call
21361                              ("DADDIU",CTy"ArithI",
21362                               TP[Mop(Cast(FTy 5),
21363                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
21364                                         bVar"b'22",bVar"b'21"]),
21365                                  Mop(Cast(FTy 5),
21366                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
21367                                         bVar"b'17",bVar"b'16"]),
21368                                  Mop(Cast F16,
21369                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
21370                                         bVar"b'12",bVar"b'11",bVar"b'10",
21371                                         bVar"b'9",bVar"b'8",bVar"b'7",
21372                                         bVar"b'6",bVar"b'5",bVar"b'4",
21373                                         bVar"b'3",bVar"b'2",bVar"b'1",
21374                                         bVar"b'0"])]))),
21375                        (Bop(And,Mop(Not,bVar"b'31"),
21376                             Bop(And,bVar"b'30",bVar"b'27")),
21377                         Call
21378                           ("Load",CTy"instruction",
21379                            Call
21380                              ("LDR",CTy"Load",
21381                               TP[Mop(Cast(FTy 5),
21382                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
21383                                         bVar"b'22",bVar"b'21"]),
21384                                  Mop(Cast(FTy 5),
21385                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
21386                                         bVar"b'17",bVar"b'16"]),
21387                                  Mop(Cast F16,
21388                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
21389                                         bVar"b'12",bVar"b'11",bVar"b'10",
21390                                         bVar"b'9",bVar"b'8",bVar"b'7",
21391                                         bVar"b'6",bVar"b'5",bVar"b'4",
21392                                         bVar"b'3",bVar"b'2",bVar"b'1",
21393                                         bVar"b'0"])]))),
21394                        (Bop(And,bVar"b'31",
21395                             Bop(And,Mop(Not,bVar"b'30"),
21396                                 Mop(Not,bVar"b'27"))),
21397                         Call
21398                           ("Store",CTy"instruction",
21399                            Call
21400                              ("SH",CTy"Store",
21401                               TP[Mop(Cast(FTy 5),
21402                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
21403                                         bVar"b'22",bVar"b'21"]),
21404                                  Mop(Cast(FTy 5),
21405                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
21406                                         bVar"b'17",bVar"b'16"]),
21407                                  Mop(Cast F16,
21408                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
21409                                         bVar"b'12",bVar"b'11",bVar"b'10",
21410                                         bVar"b'9",bVar"b'8",bVar"b'7",
21411                                         bVar"b'6",bVar"b'5",bVar"b'4",
21412                                         bVar"b'3",bVar"b'2",bVar"b'1",
21413                                         bVar"b'0"])]))),
21414                        (Bop(And,bVar"b'31",
21415                             Bop(And,Mop(Not,bVar"b'30"),bVar"b'27")),
21416                         Call
21417                           ("Store",CTy"instruction",
21418                            Call
21419                              ("SW",CTy"Store",
21420                               TP[Mop(Cast(FTy 5),
21421                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
21422                                         bVar"b'22",bVar"b'21"]),
21423                                  Mop(Cast(FTy 5),
21424                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
21425                                         bVar"b'17",bVar"b'16"]),
21426                                  Mop(Cast F16,
21427                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
21428                                         bVar"b'12",bVar"b'11",bVar"b'10",
21429                                         bVar"b'9",bVar"b'8",bVar"b'7",
21430                                         bVar"b'6",bVar"b'5",bVar"b'4",
21431                                         bVar"b'3",bVar"b'2",bVar"b'1",
21432                                         bVar"b'0"])]))),
21433                        (Bop(And,bVar"b'31",
21434                             Bop(And,bVar"b'30",Mop(Not,bVar"b'27"))),
21435                         Call
21436                           ("SWC1Decode",CTy"instruction",
21437                            TP[Mop(Cast(FTy 5),
21438                                   LL[bVar"b'20",bVar"b'19",bVar"b'18",
21439                                      bVar"b'17",bVar"b'16"]),
21440                               Mop(Cast F16,
21441                                   LL[bVar"b'15",bVar"b'14",bVar"b'13",
21442                                      bVar"b'12",bVar"b'11",bVar"b'10",
21443                                      bVar"b'9",bVar"b'8",bVar"b'7",
21444                                      bVar"b'6",bVar"b'5",bVar"b'4",
21445                                      bVar"b'3",bVar"b'2",bVar"b'1",
21446                                      bVar"b'0"]),
21447                               Mop(Cast(FTy 5),
21448                                   LL[bVar"b'25",bVar"b'24",bVar"b'23",
21449                                      bVar"b'22",bVar"b'21"])]))],
21450                       Const("ReservedInstruction",CTy"instruction"))),
21451                  (Bop(And,Mop(Not,bVar"b'31"),
21452                       Bop(And,Mop(Not,bVar"b'30"),
21453                           Bop(And,Mop(Not,bVar"b'27"),
21454                               Bop(And,Mop(Not,bVar"b'20"),
21455                                   Bop(And,Mop(Not,bVar"b'19"),
21456                                       Bop(And,Mop(Not,bVar"b'18"),
21457                                           Bop(And,Mop(Not,bVar"b'17"),
21458                                               Mop(Not,bVar"b'16")))))))),
21459                   Call
21460                     ("Branch",CTy"instruction",
21461                      Call
21462                        ("BLTZ",CTy"Branch",
21463                         TP[Mop(Cast(FTy 5),
21464                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
21465                                   bVar"b'22",bVar"b'21"]),
21466                            Mop(Cast F16,
21467                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
21468                                   bVar"b'12",bVar"b'11",bVar"b'10",
21469                                   bVar"b'9",bVar"b'8",bVar"b'7",
21470                                   bVar"b'6",bVar"b'5",bVar"b'4",
21471                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
21472                  (Bop(And,Mop(Not,bVar"b'31"),
21473                       Bop(And,Mop(Not,bVar"b'30"),
21474                           Bop(And,Mop(Not,bVar"b'27"),
21475                               Bop(And,Mop(Not,bVar"b'20"),
21476                                   Bop(And,Mop(Not,bVar"b'19"),
21477                                       Bop(And,Mop(Not,bVar"b'18"),
21478                                           Bop(And,Mop(Not,bVar"b'17"),
21479                                               bVar"b'16"))))))),
21480                   Call
21481                     ("Branch",CTy"instruction",
21482                      Call
21483                        ("BGEZ",CTy"Branch",
21484                         TP[Mop(Cast(FTy 5),
21485                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
21486                                   bVar"b'22",bVar"b'21"]),
21487                            Mop(Cast F16,
21488                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
21489                                   bVar"b'12",bVar"b'11",bVar"b'10",
21490                                   bVar"b'9",bVar"b'8",bVar"b'7",
21491                                   bVar"b'6",bVar"b'5",bVar"b'4",
21492                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
21493                  (Bop(And,Mop(Not,bVar"b'31"),
21494                       Bop(And,Mop(Not,bVar"b'30"),
21495                           Bop(And,Mop(Not,bVar"b'27"),
21496                               Bop(And,Mop(Not,bVar"b'20"),
21497                                   Bop(And,Mop(Not,bVar"b'19"),
21498                                       Bop(And,Mop(Not,bVar"b'18"),
21499                                           Bop(And,bVar"b'17",
21500                                               Mop(Not,bVar"b'16")))))))),
21501                   Call
21502                     ("Branch",CTy"instruction",
21503                      Call
21504                        ("BLTZL",CTy"Branch",
21505                         TP[Mop(Cast(FTy 5),
21506                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
21507                                   bVar"b'22",bVar"b'21"]),
21508                            Mop(Cast F16,
21509                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
21510                                   bVar"b'12",bVar"b'11",bVar"b'10",
21511                                   bVar"b'9",bVar"b'8",bVar"b'7",
21512                                   bVar"b'6",bVar"b'5",bVar"b'4",
21513                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
21514                  (Bop(And,Mop(Not,bVar"b'31"),
21515                       Bop(And,Mop(Not,bVar"b'30"),
21516                           Bop(And,Mop(Not,bVar"b'27"),
21517                               Bop(And,Mop(Not,bVar"b'20"),
21518                                   Bop(And,Mop(Not,bVar"b'19"),
21519                                       Bop(And,Mop(Not,bVar"b'18"),
21520                                           Bop(And,bVar"b'17",bVar"b'16"))))))),
21521                   Call
21522                     ("Branch",CTy"instruction",
21523                      Call
21524                        ("BGEZL",CTy"Branch",
21525                         TP[Mop(Cast(FTy 5),
21526                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
21527                                   bVar"b'22",bVar"b'21"]),
21528                            Mop(Cast F16,
21529                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
21530                                   bVar"b'12",bVar"b'11",bVar"b'10",
21531                                   bVar"b'9",bVar"b'8",bVar"b'7",
21532                                   bVar"b'6",bVar"b'5",bVar"b'4",
21533                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
21534                  (Bop(And,Mop(Not,bVar"b'31"),
21535                       Bop(And,Mop(Not,bVar"b'30"),
21536                           Bop(And,Mop(Not,bVar"b'27"),
21537                               Bop(And,Mop(Not,bVar"b'20"),
21538                                   Bop(And,bVar"b'19",
21539                                       Bop(And,Mop(Not,bVar"b'18"),
21540                                           Bop(And,Mop(Not,bVar"b'17"),
21541                                               Mop(Not,bVar"b'16")))))))),
21542                   Call
21543                     ("Trap",CTy"instruction",
21544                      Call
21545                        ("TGEI",CTy"Trap",
21546                         TP[Mop(Cast(FTy 5),
21547                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
21548                                   bVar"b'22",bVar"b'21"]),
21549                            Mop(Cast F16,
21550                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
21551                                   bVar"b'12",bVar"b'11",bVar"b'10",
21552                                   bVar"b'9",bVar"b'8",bVar"b'7",
21553                                   bVar"b'6",bVar"b'5",bVar"b'4",
21554                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
21555                  (Bop(And,Mop(Not,bVar"b'31"),
21556                       Bop(And,Mop(Not,bVar"b'30"),
21557                           Bop(And,Mop(Not,bVar"b'27"),
21558                               Bop(And,Mop(Not,bVar"b'20"),
21559                                   Bop(And,bVar"b'19",
21560                                       Bop(And,Mop(Not,bVar"b'18"),
21561                                           Bop(And,Mop(Not,bVar"b'17"),
21562                                               bVar"b'16"))))))),
21563                   Call
21564                     ("Trap",CTy"instruction",
21565                      Call
21566                        ("TGEIU",CTy"Trap",
21567                         TP[Mop(Cast(FTy 5),
21568                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
21569                                   bVar"b'22",bVar"b'21"]),
21570                            Mop(Cast F16,
21571                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
21572                                   bVar"b'12",bVar"b'11",bVar"b'10",
21573                                   bVar"b'9",bVar"b'8",bVar"b'7",
21574                                   bVar"b'6",bVar"b'5",bVar"b'4",
21575                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
21576                  (Bop(And,Mop(Not,bVar"b'31"),
21577                       Bop(And,Mop(Not,bVar"b'30"),
21578                           Bop(And,Mop(Not,bVar"b'27"),
21579                               Bop(And,Mop(Not,bVar"b'20"),
21580                                   Bop(And,bVar"b'19",
21581                                       Bop(And,Mop(Not,bVar"b'18"),
21582                                           Bop(And,bVar"b'17",
21583                                               Mop(Not,bVar"b'16")))))))),
21584                   Call
21585                     ("Trap",CTy"instruction",
21586                      Call
21587                        ("TLTI",CTy"Trap",
21588                         TP[Mop(Cast(FTy 5),
21589                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
21590                                   bVar"b'22",bVar"b'21"]),
21591                            Mop(Cast F16,
21592                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
21593                                   bVar"b'12",bVar"b'11",bVar"b'10",
21594                                   bVar"b'9",bVar"b'8",bVar"b'7",
21595                                   bVar"b'6",bVar"b'5",bVar"b'4",
21596                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
21597                  (Bop(And,Mop(Not,bVar"b'31"),
21598                       Bop(And,Mop(Not,bVar"b'30"),
21599                           Bop(And,Mop(Not,bVar"b'27"),
21600                               Bop(And,Mop(Not,bVar"b'20"),
21601                                   Bop(And,bVar"b'19",
21602                                       Bop(And,Mop(Not,bVar"b'18"),
21603                                           Bop(And,bVar"b'17",bVar"b'16"))))))),
21604                   Call
21605                     ("Trap",CTy"instruction",
21606                      Call
21607                        ("TLTIU",CTy"Trap",
21608                         TP[Mop(Cast(FTy 5),
21609                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
21610                                   bVar"b'22",bVar"b'21"]),
21611                            Mop(Cast F16,
21612                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
21613                                   bVar"b'12",bVar"b'11",bVar"b'10",
21614                                   bVar"b'9",bVar"b'8",bVar"b'7",
21615                                   bVar"b'6",bVar"b'5",bVar"b'4",
21616                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
21617                  (Bop(And,Mop(Not,bVar"b'31"),
21618                       Bop(And,Mop(Not,bVar"b'30"),
21619                           Bop(And,Mop(Not,bVar"b'27"),
21620                               Bop(And,Mop(Not,bVar"b'20"),
21621                                   Bop(And,bVar"b'19",
21622                                       Bop(And,bVar"b'18",
21623                                           Bop(And,Mop(Not,bVar"b'17"),
21624                                               Mop(Not,bVar"b'16")))))))),
21625                   Call
21626                     ("Trap",CTy"instruction",
21627                      Call
21628                        ("TEQI",CTy"Trap",
21629                         TP[Mop(Cast(FTy 5),
21630                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
21631                                   bVar"b'22",bVar"b'21"]),
21632                            Mop(Cast F16,
21633                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
21634                                   bVar"b'12",bVar"b'11",bVar"b'10",
21635                                   bVar"b'9",bVar"b'8",bVar"b'7",
21636                                   bVar"b'6",bVar"b'5",bVar"b'4",
21637                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
21638                  (Bop(And,Mop(Not,bVar"b'31"),
21639                       Bop(And,Mop(Not,bVar"b'30"),
21640                           Bop(And,Mop(Not,bVar"b'27"),
21641                               Bop(And,Mop(Not,bVar"b'20"),
21642                                   Bop(And,bVar"b'19",
21643                                       Bop(And,bVar"b'18",
21644                                           Bop(And,bVar"b'17",
21645                                               Mop(Not,bVar"b'16")))))))),
21646                   Call
21647                     ("Trap",CTy"instruction",
21648                      Call
21649                        ("TNEI",CTy"Trap",
21650                         TP[Mop(Cast(FTy 5),
21651                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
21652                                   bVar"b'22",bVar"b'21"]),
21653                            Mop(Cast F16,
21654                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
21655                                   bVar"b'12",bVar"b'11",bVar"b'10",
21656                                   bVar"b'9",bVar"b'8",bVar"b'7",
21657                                   bVar"b'6",bVar"b'5",bVar"b'4",
21658                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
21659                  (Bop(And,Mop(Not,bVar"b'31"),
21660                       Bop(And,Mop(Not,bVar"b'30"),
21661                           Bop(And,Mop(Not,bVar"b'27"),
21662                               Bop(And,bVar"b'25",
21663                                   Bop(And,bVar"b'24",
21664                                       Bop(And,bVar"b'23",
21665                                           Bop(And,bVar"b'22",
21666                                               Bop(And,bVar"b'21",
21667                                                   Bop(And,bVar"b'20",
21668                                                       Bop(And,
21669                                                           Mop(Not,
21670                                                               bVar"b'19"),
21671                                                           Mop(Not,
21672                                                               bVar"b'18"))))))))))),
21673                   Const("Unpredictable",CTy"instruction")),
21674                  (Bop(And,Mop(Not,bVar"b'31"),
21675                       Bop(And,Mop(Not,bVar"b'30"),
21676                           Bop(And,Mop(Not,bVar"b'27"),
21677                               Bop(And,bVar"b'20",
21678                                   Bop(And,Mop(Not,bVar"b'19"),
21679                                       Bop(And,Mop(Not,bVar"b'18"),
21680                                           Bop(And,Mop(Not,bVar"b'17"),
21681                                               Mop(Not,bVar"b'16")))))))),
21682                   Call
21683                     ("Branch",CTy"instruction",
21684                      Call
21685                        ("BLTZAL",CTy"Branch",
21686                         TP[Mop(Cast(FTy 5),
21687                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
21688                                   bVar"b'22",bVar"b'21"]),
21689                            Mop(Cast F16,
21690                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
21691                                   bVar"b'12",bVar"b'11",bVar"b'10",
21692                                   bVar"b'9",bVar"b'8",bVar"b'7",
21693                                   bVar"b'6",bVar"b'5",bVar"b'4",
21694                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
21695                  (Bop(And,Mop(Not,bVar"b'31"),
21696                       Bop(And,Mop(Not,bVar"b'30"),
21697                           Bop(And,Mop(Not,bVar"b'27"),
21698                               Bop(And,bVar"b'20",
21699                                   Bop(And,Mop(Not,bVar"b'19"),
21700                                       Bop(And,Mop(Not,bVar"b'18"),
21701                                           Bop(And,Mop(Not,bVar"b'17"),
21702                                               bVar"b'16"))))))),
21703                   Call
21704                     ("Branch",CTy"instruction",
21705                      Call
21706                        ("BGEZAL",CTy"Branch",
21707                         TP[Mop(Cast(FTy 5),
21708                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
21709                                   bVar"b'22",bVar"b'21"]),
21710                            Mop(Cast F16,
21711                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
21712                                   bVar"b'12",bVar"b'11",bVar"b'10",
21713                                   bVar"b'9",bVar"b'8",bVar"b'7",
21714                                   bVar"b'6",bVar"b'5",bVar"b'4",
21715                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
21716                  (Bop(And,Mop(Not,bVar"b'31"),
21717                       Bop(And,Mop(Not,bVar"b'30"),
21718                           Bop(And,Mop(Not,bVar"b'27"),
21719                               Bop(And,bVar"b'20",
21720                                   Bop(And,Mop(Not,bVar"b'19"),
21721                                       Bop(And,Mop(Not,bVar"b'18"),
21722                                           Bop(And,bVar"b'17",
21723                                               Mop(Not,bVar"b'16")))))))),
21724                   Call
21725                     ("Branch",CTy"instruction",
21726                      Call
21727                        ("BLTZALL",CTy"Branch",
21728                         TP[Mop(Cast(FTy 5),
21729                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
21730                                   bVar"b'22",bVar"b'21"]),
21731                            Mop(Cast F16,
21732                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
21733                                   bVar"b'12",bVar"b'11",bVar"b'10",
21734                                   bVar"b'9",bVar"b'8",bVar"b'7",
21735                                   bVar"b'6",bVar"b'5",bVar"b'4",
21736                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
21737                  (Bop(And,Mop(Not,bVar"b'31"),
21738                       Bop(And,Mop(Not,bVar"b'30"),
21739                           Bop(And,Mop(Not,bVar"b'27"),
21740                               Bop(And,bVar"b'20",
21741                                   Bop(And,Mop(Not,bVar"b'19"),
21742                                       Bop(And,Mop(Not,bVar"b'18"),
21743                                           Bop(And,bVar"b'17",bVar"b'16"))))))),
21744                   Call
21745                     ("Branch",CTy"instruction",
21746                      Call
21747                        ("BGEZALL",CTy"Branch",
21748                         TP[Mop(Cast(FTy 5),
21749                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
21750                                   bVar"b'22",bVar"b'21"]),
21751                            Mop(Cast F16,
21752                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
21753                                   bVar"b'12",bVar"b'11",bVar"b'10",
21754                                   bVar"b'9",bVar"b'8",bVar"b'7",
21755                                   bVar"b'6",bVar"b'5",bVar"b'4",
21756                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
21757                  (Bop(And,Mop(Not,bVar"b'31"),
21758                       Bop(And,Mop(Not,bVar"b'30"),bVar"b'27")),
21759                   Call
21760                     ("Branch",CTy"instruction",
21761                      Call
21762                        ("JAL",CTy"Branch",
21763                         Mop(Cast(FTy 26),
21764                             LL[bVar"b'25",bVar"b'24",bVar"b'23",
21765                                bVar"b'22",bVar"b'21",bVar"b'20",
21766                                bVar"b'19",bVar"b'18",bVar"b'17",
21767                                bVar"b'16",bVar"b'15",bVar"b'14",
21768                                bVar"b'13",bVar"b'12",bVar"b'11",
21769                                bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
21770                                bVar"b'6",bVar"b'5",bVar"b'4",bVar"b'3",
21771                                bVar"b'2",bVar"b'1",bVar"b'0"])))),
21772                  (Bop(And,bVar"b'31",
21773                       Bop(And,Mop(Not,bVar"b'30"),Mop(Not,bVar"b'27"))),
21774                   Call
21775                     ("Load",CTy"instruction",
21776                      Call
21777                        ("LH",CTy"Load",
21778                         TP[Mop(Cast(FTy 5),
21779                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
21780                                   bVar"b'22",bVar"b'21"]),
21781                            Mop(Cast(FTy 5),
21782                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
21783                                   bVar"b'17",bVar"b'16"]),
21784                            Mop(Cast F16,
21785                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
21786                                   bVar"b'12",bVar"b'11",bVar"b'10",
21787                                   bVar"b'9",bVar"b'8",bVar"b'7",
21788                                   bVar"b'6",bVar"b'5",bVar"b'4",
21789                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
21790                  (Bop(And,bVar"b'31",
21791                       Bop(And,Mop(Not,bVar"b'30"),bVar"b'27")),
21792                   Call
21793                     ("Load",CTy"instruction",
21794                      Call
21795                        ("LW",CTy"Load",
21796                         TP[Mop(Cast(FTy 5),
21797                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
21798                                   bVar"b'22",bVar"b'21"]),
21799                            Mop(Cast(FTy 5),
21800                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
21801                                   bVar"b'17",bVar"b'16"]),
21802                            Mop(Cast F16,
21803                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
21804                                   bVar"b'12",bVar"b'11",bVar"b'10",
21805                                   bVar"b'9",bVar"b'8",bVar"b'7",
21806                                   bVar"b'6",bVar"b'5",bVar"b'4",
21807                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
21808                  (Bop(And,Mop(Not,bVar"b'31"),
21809                       Bop(And,bVar"b'30",Mop(Not,bVar"b'27"))),
21810                   Call
21811                     ("COP1Decode",CTy"instruction",
21812                      Mop(Cast(FTy 26),
21813                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
21814                             bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18",
21815                             bVar"b'17",bVar"b'16",bVar"b'15",bVar"b'14",
21816                             bVar"b'13",bVar"b'12",bVar"b'11",bVar"b'10",
21817                             bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6",
21818                             bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2",
21819                             bVar"b'1",bVar"b'0"]))),
21820                  (Bop(And,Mop(Not,bVar"b'31"),
21821                       Bop(And,bVar"b'30",bVar"b'27")),
21822                   Call
21823                     ("COP3Decode",CTy"instruction",
21824                      Mop(Cast(FTy 26),
21825                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
21826                             bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18",
21827                             bVar"b'17",bVar"b'16",bVar"b'15",bVar"b'14",
21828                             bVar"b'13",bVar"b'12",bVar"b'11",bVar"b'10",
21829                             bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6",
21830                             bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2",
21831                             bVar"b'1",bVar"b'0"]))),
21832                  (Bop(And,bVar"b'31",
21833                       Bop(And,bVar"b'30",Mop(Not,bVar"b'27"))),
21834                   Call
21835                     ("LWC1Decode",CTy"instruction",
21836                      TP[Mop(Cast(FTy 5),
21837                             LL[bVar"b'20",bVar"b'19",bVar"b'18",
21838                                bVar"b'17",bVar"b'16"]),
21839                         Mop(Cast F16,
21840                             LL[bVar"b'15",bVar"b'14",bVar"b'13",
21841                                bVar"b'12",bVar"b'11",bVar"b'10",
21842                                bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6",
21843                                bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2",
21844                                bVar"b'1",bVar"b'0"]),
21845                         Mop(Cast(FTy 5),
21846                             LL[bVar"b'25",bVar"b'24",bVar"b'23",
21847                                bVar"b'22",bVar"b'21"])]))],
21848                 Const("ReservedInstruction",CTy"instruction"))),
21849            (bVar"b'30",
21850             ITB([(bVar"b'29",
21851                   ITB([(bVar"b'28",
21852                         ITB([(Bop(And,Mop(Not,bVar"b'31"),
21853                                   Bop(And,Mop(Not,bVar"b'27"),
21854                                       Bop(And,Mop(Not,bVar"b'15"),
21855                                           Bop(And,Mop(Not,bVar"b'14"),
21856                                               Bop(And,
21857                                                   Mop(Not,bVar"b'13"),
21858                                                   Bop(And,
21859                                                       Mop(Not,bVar"b'12"),
21860                                                       Bop(And,
21861                                                           Mop(Not,
21862                                                               bVar"b'11"),
21863                                                           Bop(And,
21864                                                               Mop(Not,
21865                                                                   bVar"b'10"),
21866                                                               Bop(And,
21867                                                                   Mop(Not,
21868                                                                       bVar"b'9"),
21869                                                                   Bop(And,
21870                                                                       Mop(Not,
21871                                                                           bVar"b'8"),
21872                                                                       Bop(And,
21873                                                                           Mop(Not,
21874                                                                               bVar"b'7"),
21875                                                                           Bop(And,
21876                                                                               Mop(Not,
21877                                                                                   bVar"b'6"),
21878                                                                               Bop(And,
21879                                                                                   Mop(Not,
21880                                                                                       bVar"b'5"),
21881                                                                                   Bop(And,
21882                                                                                       Mop(Not,
21883                                                                                           bVar"b'4"),
21884                                                                                       Bop(And,
21885                                                                                           Mop(Not,
21886                                                                                               bVar"b'3"),
21887                                                                                           Bop(And,
21888                                                                                               Mop(Not,
21889                                                                                                   bVar"b'2"),
21890                                                                                               Bop(And,
21891                                                                                                   Mop(Not,
21892                                                                                                       bVar"b'1"),
21893                                                                                                   Mop(Not,
21894                                                                                                       bVar"b'0")))))))))))))))))),
21895                               Call
21896                                 ("MultDiv",CTy"instruction",
21897                                  Call
21898                                    ("MADD",CTy"MultDiv",
21899                                     TP[Mop(Cast(FTy 5),
21900                                            LL[bVar"b'25",bVar"b'24",
21901                                               bVar"b'23",bVar"b'22",
21902                                               bVar"b'21"]),
21903                                        Mop(Cast(FTy 5),
21904                                            LL[bVar"b'20",bVar"b'19",
21905                                               bVar"b'18",bVar"b'17",
21906                                               bVar"b'16"])]))),
21907                              (Bop(And,Mop(Not,bVar"b'31"),
21908                                   Bop(And,Mop(Not,bVar"b'27"),
21909                                       Bop(And,Mop(Not,bVar"b'15"),
21910                                           Bop(And,Mop(Not,bVar"b'14"),
21911                                               Bop(And,
21912                                                   Mop(Not,bVar"b'13"),
21913                                                   Bop(And,
21914                                                       Mop(Not,bVar"b'12"),
21915                                                       Bop(And,
21916                                                           Mop(Not,
21917                                                               bVar"b'11"),
21918                                                           Bop(And,
21919                                                               Mop(Not,
21920                                                                   bVar"b'10"),
21921                                                               Bop(And,
21922                                                                   Mop(Not,
21923                                                                       bVar"b'9"),
21924                                                                   Bop(And,
21925                                                                       Mop(Not,
21926                                                                           bVar"b'8"),
21927                                                                       Bop(And,
21928                                                                           Mop(Not,
21929                                                                               bVar"b'7"),
21930                                                                           Bop(And,
21931                                                                               Mop(Not,
21932                                                                                   bVar"b'6"),
21933                                                                               Bop(And,
21934                                                                                   Mop(Not,
21935                                                                                       bVar"b'5"),
21936                                                                                   Bop(And,
21937                                                                                       Mop(Not,
21938                                                                                           bVar"b'4"),
21939                                                                                       Bop(And,
21940                                                                                           Mop(Not,
21941                                                                                               bVar"b'3"),
21942                                                                                           Bop(And,
21943                                                                                               Mop(Not,
21944                                                                                                   bVar"b'2"),
21945                                                                                               Bop(And,
21946                                                                                                   Mop(Not,
21947                                                                                                       bVar"b'1"),
21948                                                                                                   bVar"b'0"))))))))))))))))),
21949                               Call
21950                                 ("MultDiv",CTy"instruction",
21951                                  Call
21952                                    ("MADDU",CTy"MultDiv",
21953                                     TP[Mop(Cast(FTy 5),
21954                                            LL[bVar"b'25",bVar"b'24",
21955                                               bVar"b'23",bVar"b'22",
21956                                               bVar"b'21"]),
21957                                        Mop(Cast(FTy 5),
21958                                            LL[bVar"b'20",bVar"b'19",
21959                                               bVar"b'18",bVar"b'17",
21960                                               bVar"b'16"])]))),
21961                              (Bop(And,Mop(Not,bVar"b'31"),
21962                                   Bop(And,Mop(Not,bVar"b'27"),
21963                                       Bop(And,Mop(Not,bVar"b'15"),
21964                                           Bop(And,Mop(Not,bVar"b'14"),
21965                                               Bop(And,
21966                                                   Mop(Not,bVar"b'13"),
21967                                                   Bop(And,
21968                                                       Mop(Not,bVar"b'12"),
21969                                                       Bop(And,
21970                                                           Mop(Not,
21971                                                               bVar"b'11"),
21972                                                           Bop(And,
21973                                                               Mop(Not,
21974                                                                   bVar"b'10"),
21975                                                               Bop(And,
21976                                                                   Mop(Not,
21977                                                                       bVar"b'9"),
21978                                                                   Bop(And,
21979                                                                       Mop(Not,
21980                                                                           bVar"b'8"),
21981                                                                       Bop(And,
21982                                                                           Mop(Not,
21983                                                                               bVar"b'7"),
21984                                                                           Bop(And,
21985                                                                               Mop(Not,
21986                                                                                   bVar"b'6"),
21987                                                                               Bop(And,
21988                                                                                   Mop(Not,
21989                                                                                       bVar"b'5"),
21990                                                                                   Bop(And,
21991                                                                                       Mop(Not,
21992                                                                                           bVar"b'4"),
21993                                                                                       Bop(And,
21994                                                                                           Mop(Not,
21995                                                                                               bVar"b'3"),
21996                                                                                           Bop(And,
21997                                                                                               bVar"b'2",
21998                                                                                               Bop(And,
21999                                                                                                   Mop(Not,
22000                                                                                                       bVar"b'1"),
22001                                                                                                   Mop(Not,
22002                                                                                                       bVar"b'0")))))))))))))))))),
22003                               Call
22004                                 ("MultDiv",CTy"instruction",
22005                                  Call
22006                                    ("MSUB",CTy"MultDiv",
22007                                     TP[Mop(Cast(FTy 5),
22008                                            LL[bVar"b'25",bVar"b'24",
22009                                               bVar"b'23",bVar"b'22",
22010                                               bVar"b'21"]),
22011                                        Mop(Cast(FTy 5),
22012                                            LL[bVar"b'20",bVar"b'19",
22013                                               bVar"b'18",bVar"b'17",
22014                                               bVar"b'16"])]))),
22015                              (Bop(And,Mop(Not,bVar"b'31"),
22016                                   Bop(And,Mop(Not,bVar"b'27"),
22017                                       Bop(And,Mop(Not,bVar"b'15"),
22018                                           Bop(And,Mop(Not,bVar"b'14"),
22019                                               Bop(And,
22020                                                   Mop(Not,bVar"b'13"),
22021                                                   Bop(And,
22022                                                       Mop(Not,bVar"b'12"),
22023                                                       Bop(And,
22024                                                           Mop(Not,
22025                                                               bVar"b'11"),
22026                                                           Bop(And,
22027                                                               Mop(Not,
22028                                                                   bVar"b'10"),
22029                                                               Bop(And,
22030                                                                   Mop(Not,
22031                                                                       bVar"b'9"),
22032                                                                   Bop(And,
22033                                                                       Mop(Not,
22034                                                                           bVar"b'8"),
22035                                                                       Bop(And,
22036                                                                           Mop(Not,
22037                                                                               bVar"b'7"),
22038                                                                           Bop(And,
22039                                                                               Mop(Not,
22040                                                                                   bVar"b'6"),
22041                                                                               Bop(And,
22042                                                                                   Mop(Not,
22043                                                                                       bVar"b'5"),
22044                                                                                   Bop(And,
22045                                                                                       Mop(Not,
22046                                                                                           bVar"b'4"),
22047                                                                                       Bop(And,
22048                                                                                           Mop(Not,
22049                                                                                               bVar"b'3"),
22050                                                                                           Bop(And,
22051                                                                                               bVar"b'2",
22052                                                                                               Bop(And,
22053                                                                                                   Mop(Not,
22054                                                                                                       bVar"b'1"),
22055                                                                                                   bVar"b'0"))))))))))))))))),
22056                               Call
22057                                 ("MultDiv",CTy"instruction",
22058                                  Call
22059                                    ("MSUBU",CTy"MultDiv",
22060                                     TP[Mop(Cast(FTy 5),
22061                                            LL[bVar"b'25",bVar"b'24",
22062                                               bVar"b'23",bVar"b'22",
22063                                               bVar"b'21"]),
22064                                        Mop(Cast(FTy 5),
22065                                            LL[bVar"b'20",bVar"b'19",
22066                                               bVar"b'18",bVar"b'17",
22067                                               bVar"b'16"])]))),
22068                              (Bop(And,Mop(Not,bVar"b'31"),
22069                                   Bop(And,Mop(Not,bVar"b'27"),
22070                                       Bop(And,Mop(Not,bVar"b'10"),
22071                                           Bop(And,Mop(Not,bVar"b'9"),
22072                                               Bop(And,Mop(Not,bVar"b'8"),
22073                                                   Bop(And,
22074                                                       Mop(Not,bVar"b'7"),
22075                                                       Bop(And,
22076                                                           Mop(Not,
22077                                                               bVar"b'6"),
22078                                                           Bop(And,
22079                                                               Mop(Not,
22080                                                                   bVar"b'5"),
22081                                                               Bop(And,
22082                                                                   Mop(Not,
22083                                                                       bVar"b'4"),
22084                                                                   Bop(And,
22085                                                                       Mop(Not,
22086                                                                           bVar"b'3"),
22087                                                                       Bop(And,
22088                                                                           Mop(Not,
22089                                                                               bVar"b'2"),
22090                                                                           Bop(And,
22091                                                                               bVar"b'1",
22092                                                                               Mop(Not,
22093                                                                                   bVar"b'0"))))))))))))),
22094                               Call
22095                                 ("MultDiv",CTy"instruction",
22096                                  Call
22097                                    ("MUL",CTy"MultDiv",
22098                                     TP[Mop(Cast(FTy 5),
22099                                            LL[bVar"b'25",bVar"b'24",
22100                                               bVar"b'23",bVar"b'22",
22101                                               bVar"b'21"]),
22102                                        Mop(Cast(FTy 5),
22103                                            LL[bVar"b'20",bVar"b'19",
22104                                               bVar"b'18",bVar"b'17",
22105                                               bVar"b'16"]),
22106                                        Mop(Cast(FTy 5),
22107                                            LL[bVar"b'15",bVar"b'14",
22108                                               bVar"b'13",bVar"b'12",
22109                                               bVar"b'11"])]))),
22110                              (Bop(And,bVar"b'31",Mop(Not,bVar"b'27")),
22111                               Call
22112                                 ("Store",CTy"instruction",
22113                                  Call
22114                                    ("SCD",CTy"Store",
22115                                     TP[Mop(Cast(FTy 5),
22116                                            LL[bVar"b'25",bVar"b'24",
22117                                               bVar"b'23",bVar"b'22",
22118                                               bVar"b'21"]),
22119                                        Mop(Cast(FTy 5),
22120                                            LL[bVar"b'20",bVar"b'19",
22121                                               bVar"b'18",bVar"b'17",
22122                                               bVar"b'16"]),
22123                                        Mop(Cast F16,
22124                                            LL[bVar"b'15",bVar"b'14",
22125                                               bVar"b'13",bVar"b'12",
22126                                               bVar"b'11",bVar"b'10",
22127                                               bVar"b'9",bVar"b'8",
22128                                               bVar"b'7",bVar"b'6",
22129                                               bVar"b'5",bVar"b'4",
22130                                               bVar"b'3",bVar"b'2",
22131                                               bVar"b'1",bVar"b'0"])]))),
22132                              (Bop(And,bVar"b'31",bVar"b'27"),
22133                               Call
22134                                 ("SDC2Decode",CTy"instruction",
22135                                  TP[Mop(Cast(FTy 5),
22136                                         LL[bVar"b'25",bVar"b'24",
22137                                            bVar"b'23",bVar"b'22",
22138                                            bVar"b'21"]),
22139                                     Mop(Cast(FTy 5),
22140                                         LL[bVar"b'20",bVar"b'19",
22141                                            bVar"b'18",bVar"b'17",
22142                                            bVar"b'16"]),
22143                                     Mop(Cast(FTy 5),
22144                                         LL[bVar"b'15",bVar"b'14",
22145                                            bVar"b'13",bVar"b'12",
22146                                            bVar"b'11"]),
22147                                     Mop(Cast(FTy 11),
22148                                         LL[bVar"b'10",bVar"b'9",
22149                                            bVar"b'8",bVar"b'7",bVar"b'6",
22150                                            bVar"b'5",bVar"b'4",bVar"b'3",
22151                                            bVar"b'2",bVar"b'1",bVar"b'0"])]))],
22152                             Const("ReservedInstruction",CTy"instruction"))),
22153                        (Bop(And,Mop(Not,bVar"b'31"),Mop(Not,bVar"b'27")),
22154                         Call
22155                           ("ArithI",CTy"instruction",
22156                            Call
22157                              ("DADDI",CTy"ArithI",
22158                               TP[Mop(Cast(FTy 5),
22159                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
22160                                         bVar"b'22",bVar"b'21"]),
22161                                  Mop(Cast(FTy 5),
22162                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
22163                                         bVar"b'17",bVar"b'16"]),
22164                                  Mop(Cast F16,
22165                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
22166                                         bVar"b'12",bVar"b'11",bVar"b'10",
22167                                         bVar"b'9",bVar"b'8",bVar"b'7",
22168                                         bVar"b'6",bVar"b'5",bVar"b'4",
22169                                         bVar"b'3",bVar"b'2",bVar"b'1",
22170                                         bVar"b'0"])]))),
22171                        (Bop(And,Mop(Not,bVar"b'31"),bVar"b'27"),
22172                         Call
22173                           ("Load",CTy"instruction",
22174                            Call
22175                              ("LDL",CTy"Load",
22176                               TP[Mop(Cast(FTy 5),
22177                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
22178                                         bVar"b'22",bVar"b'21"]),
22179                                  Mop(Cast(FTy 5),
22180                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
22181                                         bVar"b'17",bVar"b'16"]),
22182                                  Mop(Cast F16,
22183                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
22184                                         bVar"b'12",bVar"b'11",bVar"b'10",
22185                                         bVar"b'9",bVar"b'8",bVar"b'7",
22186                                         bVar"b'6",bVar"b'5",bVar"b'4",
22187                                         bVar"b'3",bVar"b'2",bVar"b'1",
22188                                         bVar"b'0"])]))),
22189                        (Bop(And,bVar"b'31",Mop(Not,bVar"b'27")),
22190                         Call
22191                           ("Store",CTy"instruction",
22192                            Call
22193                              ("SC",CTy"Store",
22194                               TP[Mop(Cast(FTy 5),
22195                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
22196                                         bVar"b'22",bVar"b'21"]),
22197                                  Mop(Cast(FTy 5),
22198                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
22199                                         bVar"b'17",bVar"b'16"]),
22200                                  Mop(Cast F16,
22201                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
22202                                         bVar"b'12",bVar"b'11",bVar"b'10",
22203                                         bVar"b'9",bVar"b'8",bVar"b'7",
22204                                         bVar"b'6",bVar"b'5",bVar"b'4",
22205                                         bVar"b'3",bVar"b'2",bVar"b'1",
22206                                         bVar"b'0"])]))),
22207                        (Bop(And,bVar"b'31",bVar"b'27"),
22208                         Call
22209                           ("SWC2Decode",CTy"instruction",
22210                            TP[Mop(Cast(FTy 5),
22211                                   LL[bVar"b'25",bVar"b'24",bVar"b'23",
22212                                      bVar"b'22",bVar"b'21"]),
22213                               Mop(Cast(FTy 5),
22214                                   LL[bVar"b'20",bVar"b'19",bVar"b'18",
22215                                      bVar"b'17",bVar"b'16"]),
22216                               Mop(Cast(FTy 5),
22217                                   LL[bVar"b'15",bVar"b'14",bVar"b'13",
22218                                      bVar"b'12",bVar"b'11"]),
22219                               Mop(Cast F8,
22220                                   LL[bVar"b'10",bVar"b'9",bVar"b'8",
22221                                      bVar"b'7",bVar"b'6",bVar"b'5",
22222                                      bVar"b'4",bVar"b'3"]),
22223                               Mop(Cast(FTy 3),
22224                                   LL[bVar"b'2",bVar"b'1",bVar"b'0"])]))],
22225                       Const("ReservedInstruction",CTy"instruction"))),
22226                  (bVar"b'31",
22227                   ITB([(Bop(And,Mop(Not,bVar"b'28"),Mop(Not,bVar"b'27")),
22228                         Call
22229                           ("Load",CTy"instruction",
22230                            Call
22231                              ("LL",CTy"Load",
22232                               TP[Mop(Cast(FTy 5),
22233                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
22234                                         bVar"b'22",bVar"b'21"]),
22235                                  Mop(Cast(FTy 5),
22236                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
22237                                         bVar"b'17",bVar"b'16"]),
22238                                  Mop(Cast F16,
22239                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
22240                                         bVar"b'12",bVar"b'11",bVar"b'10",
22241                                         bVar"b'9",bVar"b'8",bVar"b'7",
22242                                         bVar"b'6",bVar"b'5",bVar"b'4",
22243                                         bVar"b'3",bVar"b'2",bVar"b'1",
22244                                         bVar"b'0"])]))),
22245                        (Bop(And,bVar"b'28",Mop(Not,bVar"b'27")),
22246                         Call
22247                           ("Load",CTy"instruction",
22248                            Call
22249                              ("LLD",CTy"Load",
22250                               TP[Mop(Cast(FTy 5),
22251                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
22252                                         bVar"b'22",bVar"b'21"]),
22253                                  Mop(Cast(FTy 5),
22254                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
22255                                         bVar"b'17",bVar"b'16"]),
22256                                  Mop(Cast F16,
22257                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
22258                                         bVar"b'12",bVar"b'11",bVar"b'10",
22259                                         bVar"b'9",bVar"b'8",bVar"b'7",
22260                                         bVar"b'6",bVar"b'5",bVar"b'4",
22261                                         bVar"b'3",bVar"b'2",bVar"b'1",
22262                                         bVar"b'0"])]))),
22263                        (Bop(And,Mop(Not,bVar"b'28"),bVar"b'27"),
22264                         Call
22265                           ("LWC2Decode",CTy"instruction",
22266                            TP[Mop(Cast(FTy 5),
22267                                   LL[bVar"b'25",bVar"b'24",bVar"b'23",
22268                                      bVar"b'22",bVar"b'21"]),
22269                               Mop(Cast(FTy 5),
22270                                   LL[bVar"b'20",bVar"b'19",bVar"b'18",
22271                                      bVar"b'17",bVar"b'16"]),
22272                               Mop(Cast(FTy 5),
22273                                   LL[bVar"b'15",bVar"b'14",bVar"b'13",
22274                                      bVar"b'12",bVar"b'11"]),
22275                               Mop(Cast F8,
22276                                   LL[bVar"b'10",bVar"b'9",bVar"b'8",
22277                                      bVar"b'7",bVar"b'6",bVar"b'5",
22278                                      bVar"b'4",bVar"b'3"]),
22279                               Mop(Cast(FTy 3),
22280                                   LL[bVar"b'2",bVar"b'1",bVar"b'0"])])),
22281                        (Bop(And,bVar"b'28",bVar"b'27"),
22282                         Call
22283                           ("LDC2Decode",CTy"instruction",
22284                            TP[Mop(Cast(FTy 5),
22285                                   LL[bVar"b'25",bVar"b'24",bVar"b'23",
22286                                      bVar"b'22",bVar"b'21"]),
22287                               Mop(Cast(FTy 5),
22288                                   LL[bVar"b'20",bVar"b'19",bVar"b'18",
22289                                      bVar"b'17",bVar"b'16"]),
22290                               Mop(Cast(FTy 5),
22291                                   LL[bVar"b'15",bVar"b'14",bVar"b'13",
22292                                      bVar"b'12",bVar"b'11"]),
22293                               Mop(Cast(FTy 11),
22294                                   LL[bVar"b'10",bVar"b'9",bVar"b'8",
22295                                      bVar"b'7",bVar"b'6",bVar"b'5",
22296                                      bVar"b'4",bVar"b'3",bVar"b'2",
22297                                      bVar"b'1",bVar"b'0"])]))],
22298                       Const("ReservedInstruction",CTy"instruction"))),
22299                  (Bop(And,Mop(Not,bVar"b'28"),
22300                       Bop(And,Mop(Not,bVar"b'27"),
22301                           Bop(And,bVar"b'25",
22302                               Bop(And,Mop(Not,bVar"b'24"),
22303                                   Bop(And,Mop(Not,bVar"b'23"),
22304                                       Bop(And,Mop(Not,bVar"b'22"),
22305                                           Bop(And,Mop(Not,bVar"b'21"),
22306                                               Bop(And,
22307                                                   Mop(Not,bVar"b'20"),
22308                                                   Bop(And,
22309                                                       Mop(Not,bVar"b'19"),
22310                                                       Bop(And,
22311                                                           Mop(Not,
22312                                                               bVar"b'18"),
22313                                                           Bop(And,
22314                                                               Mop(Not,
22315                                                                   bVar"b'17"),
22316                                                               Bop(And,
22317                                                                   Mop(Not,
22318                                                                       bVar"b'16"),
22319                                                                   Bop(And,
22320                                                                       Mop(Not,
22321                                                                           bVar"b'15"),
22322                                                                       Bop(And,
22323                                                                           Mop(Not,
22324                                                                               bVar"b'14"),
22325                                                                           Bop(And,
22326                                                                               Mop(Not,
22327                                                                                   bVar"b'13"),
22328                                                                               Bop(And,
22329                                                                                   Mop(Not,
22330                                                                                       bVar"b'12"),
22331                                                                                   Bop(And,
22332                                                                                       Mop(Not,
22333                                                                                           bVar"b'11"),
22334                                                                                       Bop(And,
22335                                                                                           Mop(Not,
22336                                                                                               bVar"b'10"),
22337                                                                                           Bop(And,
22338                                                                                               Mop(Not,
22339                                                                                                   bVar"b'9"),
22340                                                                                               Bop(And,
22341                                                                                                   Mop(Not,
22342                                                                                                       bVar"b'8"),
22343                                                                                                   Bop(And,
22344                                                                                                       Mop(Not,
22345                                                                                                           bVar"b'7"),
22346                                                                                                       Bop(And,
22347                                                                                                           Mop(Not,
22348                                                                                                               bVar"b'6"),
22349                                                                                                           Bop(And,
22350                                                                                                               Mop(Not,
22351                                                                                                                   bVar"b'5"),
22352                                                                                                               Bop(And,
22353                                                                                                                   Mop(Not,
22354                                                                                                                       bVar"b'4"),
22355                                                                                                                   Bop(And,
22356                                                                                                                       Mop(Not,
22357                                                                                                                           bVar"b'3"),
22358                                                                                                                       Bop(And,
22359                                                                                                                           Mop(Not,
22360                                                                                                                               bVar"b'2"),
22361                                                                                                                           Bop(And,
22362                                                                                                                               Mop(Not,
22363                                                                                                                                   bVar"b'1"),
22364                                                                                                                               bVar"b'0"))))))))))))))))))))))))))),
22365                   Const("TLBR",CTy"instruction")),
22366                  (Bop(And,Mop(Not,bVar"b'28"),
22367                       Bop(And,Mop(Not,bVar"b'27"),
22368                           Bop(And,bVar"b'25",
22369                               Bop(And,Mop(Not,bVar"b'24"),
22370                                   Bop(And,Mop(Not,bVar"b'23"),
22371                                       Bop(And,Mop(Not,bVar"b'22"),
22372                                           Bop(And,Mop(Not,bVar"b'21"),
22373                                               Bop(And,
22374                                                   Mop(Not,bVar"b'20"),
22375                                                   Bop(And,
22376                                                       Mop(Not,bVar"b'19"),
22377                                                       Bop(And,
22378                                                           Mop(Not,
22379                                                               bVar"b'18"),
22380                                                           Bop(And,
22381                                                               Mop(Not,
22382                                                                   bVar"b'17"),
22383                                                               Bop(And,
22384                                                                   Mop(Not,
22385                                                                       bVar"b'16"),
22386                                                                   Bop(And,
22387                                                                       Mop(Not,
22388                                                                           bVar"b'15"),
22389                                                                       Bop(And,
22390                                                                           Mop(Not,
22391                                                                               bVar"b'14"),
22392                                                                           Bop(And,
22393                                                                               Mop(Not,
22394                                                                                   bVar"b'13"),
22395                                                                               Bop(And,
22396                                                                                   Mop(Not,
22397                                                                                       bVar"b'12"),
22398                                                                                   Bop(And,
22399                                                                                       Mop(Not,
22400                                                                                           bVar"b'11"),
22401                                                                                       Bop(And,
22402                                                                                           Mop(Not,
22403                                                                                               bVar"b'10"),
22404                                                                                           Bop(And,
22405                                                                                               Mop(Not,
22406                                                                                                   bVar"b'9"),
22407                                                                                               Bop(And,
22408                                                                                                   Mop(Not,
22409                                                                                                       bVar"b'8"),
22410                                                                                                   Bop(And,
22411                                                                                                       Mop(Not,
22412                                                                                                           bVar"b'7"),
22413                                                                                                       Bop(And,
22414                                                                                                           Mop(Not,
22415                                                                                                               bVar"b'6"),
22416                                                                                                           Bop(And,
22417                                                                                                               Mop(Not,
22418                                                                                                                   bVar"b'5"),
22419                                                                                                               Bop(And,
22420                                                                                                                   Mop(Not,
22421                                                                                                                       bVar"b'4"),
22422                                                                                                                   Bop(And,
22423                                                                                                                       Mop(Not,
22424                                                                                                                           bVar"b'3"),
22425                                                                                                                       Bop(And,
22426                                                                                                                           Mop(Not,
22427                                                                                                                               bVar"b'2"),
22428                                                                                                                           Bop(And,
22429                                                                                                                               bVar"b'1",
22430                                                                                                                               Mop(Not,
22431                                                                                                                                   bVar"b'0")))))))))))))))))))))))))))),
22432                   Const("TLBWI",CTy"instruction")),
22433                  (Bop(And,Mop(Not,bVar"b'28"),
22434                       Bop(And,Mop(Not,bVar"b'27"),
22435                           Bop(And,bVar"b'25",
22436                               Bop(And,Mop(Not,bVar"b'24"),
22437                                   Bop(And,Mop(Not,bVar"b'23"),
22438                                       Bop(And,Mop(Not,bVar"b'22"),
22439                                           Bop(And,Mop(Not,bVar"b'21"),
22440                                               Bop(And,
22441                                                   Mop(Not,bVar"b'20"),
22442                                                   Bop(And,
22443                                                       Mop(Not,bVar"b'19"),
22444                                                       Bop(And,
22445                                                           Mop(Not,
22446                                                               bVar"b'18"),
22447                                                           Bop(And,
22448                                                               Mop(Not,
22449                                                                   bVar"b'17"),
22450                                                               Bop(And,
22451                                                                   Mop(Not,
22452                                                                       bVar"b'16"),
22453                                                                   Bop(And,
22454                                                                       Mop(Not,
22455                                                                           bVar"b'15"),
22456                                                                       Bop(And,
22457                                                                           Mop(Not,
22458                                                                               bVar"b'14"),
22459                                                                           Bop(And,
22460                                                                               Mop(Not,
22461                                                                                   bVar"b'13"),
22462                                                                               Bop(And,
22463                                                                                   Mop(Not,
22464                                                                                       bVar"b'12"),
22465                                                                                   Bop(And,
22466                                                                                       Mop(Not,
22467                                                                                           bVar"b'11"),
22468                                                                                       Bop(And,
22469                                                                                           Mop(Not,
22470                                                                                               bVar"b'10"),
22471                                                                                           Bop(And,
22472                                                                                               Mop(Not,
22473                                                                                                   bVar"b'9"),
22474                                                                                               Bop(And,
22475                                                                                                   Mop(Not,
22476                                                                                                       bVar"b'8"),
22477                                                                                                   Bop(And,
22478                                                                                                       Mop(Not,
22479                                                                                                           bVar"b'7"),
22480                                                                                                       Bop(And,
22481                                                                                                           Mop(Not,
22482                                                                                                               bVar"b'6"),
22483                                                                                                           Bop(And,
22484                                                                                                               Mop(Not,
22485                                                                                                                   bVar"b'5"),
22486                                                                                                               Bop(And,
22487                                                                                                                   Mop(Not,
22488                                                                                                                       bVar"b'4"),
22489                                                                                                                   Bop(And,
22490                                                                                                                       Mop(Not,
22491                                                                                                                           bVar"b'3"),
22492                                                                                                                       Bop(And,
22493                                                                                                                           bVar"b'2",
22494                                                                                                                           Bop(And,
22495                                                                                                                               bVar"b'1",
22496                                                                                                                               Mop(Not,
22497                                                                                                                                   bVar"b'0")))))))))))))))))))))))))))),
22498                   Const("TLBWR",CTy"instruction")),
22499                  (Bop(And,Mop(Not,bVar"b'28"),
22500                       Bop(And,Mop(Not,bVar"b'27"),
22501                           Bop(And,bVar"b'25",
22502                               Bop(And,Mop(Not,bVar"b'24"),
22503                                   Bop(And,Mop(Not,bVar"b'23"),
22504                                       Bop(And,Mop(Not,bVar"b'22"),
22505                                           Bop(And,Mop(Not,bVar"b'21"),
22506                                               Bop(And,
22507                                                   Mop(Not,bVar"b'20"),
22508                                                   Bop(And,
22509                                                       Mop(Not,bVar"b'19"),
22510                                                       Bop(And,
22511                                                           Mop(Not,
22512                                                               bVar"b'18"),
22513                                                           Bop(And,
22514                                                               Mop(Not,
22515                                                                   bVar"b'17"),
22516                                                               Bop(And,
22517                                                                   Mop(Not,
22518                                                                       bVar"b'16"),
22519                                                                   Bop(And,
22520                                                                       Mop(Not,
22521                                                                           bVar"b'15"),
22522                                                                       Bop(And,
22523                                                                           Mop(Not,
22524                                                                               bVar"b'14"),
22525                                                                           Bop(And,
22526                                                                               Mop(Not,
22527                                                                                   bVar"b'13"),
22528                                                                               Bop(And,
22529                                                                                   Mop(Not,
22530                                                                                       bVar"b'12"),
22531                                                                                   Bop(And,
22532                                                                                       Mop(Not,
22533                                                                                           bVar"b'11"),
22534                                                                                       Bop(And,
22535                                                                                           Mop(Not,
22536                                                                                               bVar"b'10"),
22537                                                                                           Bop(And,
22538                                                                                               Mop(Not,
22539                                                                                                   bVar"b'9"),
22540                                                                                               Bop(And,
22541                                                                                                   Mop(Not,
22542                                                                                                       bVar"b'8"),
22543                                                                                                   Bop(And,
22544                                                                                                       Mop(Not,
22545                                                                                                           bVar"b'7"),
22546                                                                                                       Bop(And,
22547                                                                                                           Mop(Not,
22548                                                                                                               bVar"b'6"),
22549                                                                                                           Bop(And,
22550                                                                                                               Mop(Not,
22551                                                                                                                   bVar"b'5"),
22552                                                                                                               Bop(And,
22553                                                                                                                   Mop(Not,
22554                                                                                                                       bVar"b'4"),
22555                                                                                                                   Bop(And,
22556                                                                                                                       bVar"b'3",
22557                                                                                                                       Bop(And,
22558                                                                                                                           Mop(Not,
22559                                                                                                                               bVar"b'2"),
22560                                                                                                                           Bop(And,
22561                                                                                                                               Mop(Not,
22562                                                                                                                                   bVar"b'1"),
22563                                                                                                                               Mop(Not,
22564                                                                                                                                   bVar"b'0")))))))))))))))))))))))))))),
22565                   Const("TLBP",CTy"instruction")),
22566                  (Bop(And,Mop(Not,bVar"b'28"),
22567                       Bop(And,Mop(Not,bVar"b'27"),
22568                           Bop(And,bVar"b'25",
22569                               Bop(And,Mop(Not,bVar"b'24"),
22570                                   Bop(And,Mop(Not,bVar"b'23"),
22571                                       Bop(And,Mop(Not,bVar"b'22"),
22572                                           Bop(And,Mop(Not,bVar"b'21"),
22573                                               Bop(And,
22574                                                   Mop(Not,bVar"b'20"),
22575                                                   Bop(And,
22576                                                       Mop(Not,bVar"b'19"),
22577                                                       Bop(And,
22578                                                           Mop(Not,
22579                                                               bVar"b'18"),
22580                                                           Bop(And,
22581                                                               Mop(Not,
22582                                                                   bVar"b'17"),
22583                                                               Bop(And,
22584                                                                   Mop(Not,
22585                                                                       bVar"b'16"),
22586                                                                   Bop(And,
22587                                                                       Mop(Not,
22588                                                                           bVar"b'15"),
22589                                                                       Bop(And,
22590                                                                           Mop(Not,
22591                                                                               bVar"b'14"),
22592                                                                           Bop(And,
22593                                                                               Mop(Not,
22594                                                                                   bVar"b'13"),
22595                                                                               Bop(And,
22596                                                                                   Mop(Not,
22597                                                                                       bVar"b'12"),
22598                                                                                   Bop(And,
22599                                                                                       Mop(Not,
22600                                                                                           bVar"b'11"),
22601                                                                                       Bop(And,
22602                                                                                           Mop(Not,
22603                                                                                               bVar"b'10"),
22604                                                                                           Bop(And,
22605                                                                                               Mop(Not,
22606                                                                                                   bVar"b'9"),
22607                                                                                               Bop(And,
22608                                                                                                   Mop(Not,
22609                                                                                                       bVar"b'8"),
22610                                                                                                   Bop(And,
22611                                                                                                       Mop(Not,
22612                                                                                                           bVar"b'7"),
22613                                                                                                       Bop(And,
22614                                                                                                           Mop(Not,
22615                                                                                                               bVar"b'6"),
22616                                                                                                           Bop(And,
22617                                                                                                               Mop(Not,
22618                                                                                                                   bVar"b'5"),
22619                                                                                                               Bop(And,
22620                                                                                                                   bVar"b'4",
22621                                                                                                                   Bop(And,
22622                                                                                                                       bVar"b'3",
22623                                                                                                                       Bop(And,
22624                                                                                                                           Mop(Not,
22625                                                                                                                               bVar"b'2"),
22626                                                                                                                           Bop(And,
22627                                                                                                                               Mop(Not,
22628                                                                                                                                   bVar"b'1"),
22629                                                                                                                               Mop(Not,
22630                                                                                                                                   bVar"b'0")))))))))))))))))))))))))))),
22631                   Const("ERET",CTy"instruction")),
22632                  (Bop(And,Mop(Not,bVar"b'28"),
22633                       Bop(And,Mop(Not,bVar"b'27"),
22634                           Bop(And,Mop(Not,bVar"b'25"),
22635                               Bop(And,Mop(Not,bVar"b'24"),
22636                                   Bop(And,Mop(Not,bVar"b'23"),
22637                                       Bop(And,Mop(Not,bVar"b'22"),
22638                                           Bop(And,Mop(Not,bVar"b'21"),
22639                                               Bop(And,
22640                                                   Mop(Not,bVar"b'10"),
22641                                                   Bop(And,
22642                                                       Mop(Not,bVar"b'9"),
22643                                                       Bop(And,
22644                                                           Mop(Not,
22645                                                               bVar"b'8"),
22646                                                           Bop(And,
22647                                                               Mop(Not,
22648                                                                   bVar"b'7"),
22649                                                               Bop(And,
22650                                                                   Mop(Not,
22651                                                                       bVar"b'6"),
22652                                                                   Bop(And,
22653                                                                       Mop(Not,
22654                                                                           bVar"b'5"),
22655                                                                       Bop(And,
22656                                                                           Mop(Not,
22657                                                                               bVar"b'4"),
22658                                                                           Mop(Not,
22659                                                                               bVar"b'3"))))))))))))))),
22660                   Call
22661                     ("CP",CTy"instruction",
22662                      Call
22663                        ("MFC0",CTy"CP",
22664                         TP[Mop(Cast(FTy 5),
22665                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
22666                                   bVar"b'17",bVar"b'16"]),
22667                            Mop(Cast(FTy 5),
22668                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
22669                                   bVar"b'12",bVar"b'11"]),
22670                            Mop(Cast(FTy 3),
22671                                LL[bVar"b'2",bVar"b'1",bVar"b'0"])]))),
22672                  (Bop(And,Mop(Not,bVar"b'28"),
22673                       Bop(And,Mop(Not,bVar"b'27"),
22674                           Bop(And,Mop(Not,bVar"b'25"),
22675                               Bop(And,Mop(Not,bVar"b'24"),
22676                                   Bop(And,Mop(Not,bVar"b'23"),
22677                                       Bop(And,Mop(Not,bVar"b'22"),
22678                                           Bop(And,bVar"b'21",
22679                                               Bop(And,
22680                                                   Mop(Not,bVar"b'10"),
22681                                                   Bop(And,
22682                                                       Mop(Not,bVar"b'9"),
22683                                                       Bop(And,
22684                                                           Mop(Not,
22685                                                               bVar"b'8"),
22686                                                           Bop(And,
22687                                                               Mop(Not,
22688                                                                   bVar"b'7"),
22689                                                               Bop(And,
22690                                                                   Mop(Not,
22691                                                                       bVar"b'6"),
22692                                                                   Bop(And,
22693                                                                       Mop(Not,
22694                                                                           bVar"b'5"),
22695                                                                       Bop(And,
22696                                                                           Mop(Not,
22697                                                                               bVar"b'4"),
22698                                                                           Mop(Not,
22699                                                                               bVar"b'3"))))))))))))))),
22700                   Call
22701                     ("CP",CTy"instruction",
22702                      Call
22703                        ("DMFC0",CTy"CP",
22704                         TP[Mop(Cast(FTy 5),
22705                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
22706                                   bVar"b'17",bVar"b'16"]),
22707                            Mop(Cast(FTy 5),
22708                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
22709                                   bVar"b'12",bVar"b'11"]),
22710                            Mop(Cast(FTy 3),
22711                                LL[bVar"b'2",bVar"b'1",bVar"b'0"])]))),
22712                  (Bop(And,Mop(Not,bVar"b'28"),
22713                       Bop(And,Mop(Not,bVar"b'27"),
22714                           Bop(And,Mop(Not,bVar"b'25"),
22715                               Bop(And,Mop(Not,bVar"b'24"),
22716                                   Bop(And,bVar"b'23",
22717                                       Bop(And,Mop(Not,bVar"b'22"),
22718                                           Bop(And,Mop(Not,bVar"b'21"),
22719                                               Bop(And,
22720                                                   Mop(Not,bVar"b'10"),
22721                                                   Bop(And,
22722                                                       Mop(Not,bVar"b'9"),
22723                                                       Bop(And,
22724                                                           Mop(Not,
22725                                                               bVar"b'8"),
22726                                                           Bop(And,
22727                                                               Mop(Not,
22728                                                                   bVar"b'7"),
22729                                                               Bop(And,
22730                                                                   Mop(Not,
22731                                                                       bVar"b'6"),
22732                                                                   Bop(And,
22733                                                                       Mop(Not,
22734                                                                           bVar"b'5"),
22735                                                                       Bop(And,
22736                                                                           Mop(Not,
22737                                                                               bVar"b'4"),
22738                                                                           Mop(Not,
22739                                                                               bVar"b'3"))))))))))))))),
22740                   Call
22741                     ("CP",CTy"instruction",
22742                      Call
22743                        ("MTC0",CTy"CP",
22744                         TP[Mop(Cast(FTy 5),
22745                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
22746                                   bVar"b'17",bVar"b'16"]),
22747                            Mop(Cast(FTy 5),
22748                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
22749                                   bVar"b'12",bVar"b'11"]),
22750                            Mop(Cast(FTy 3),
22751                                LL[bVar"b'2",bVar"b'1",bVar"b'0"])]))),
22752                  (Bop(And,Mop(Not,bVar"b'28"),
22753                       Bop(And,Mop(Not,bVar"b'27"),
22754                           Bop(And,Mop(Not,bVar"b'25"),
22755                               Bop(And,Mop(Not,bVar"b'24"),
22756                                   Bop(And,bVar"b'23",
22757                                       Bop(And,Mop(Not,bVar"b'22"),
22758                                           Bop(And,bVar"b'21",
22759                                               Bop(And,
22760                                                   Mop(Not,bVar"b'10"),
22761                                                   Bop(And,
22762                                                       Mop(Not,bVar"b'9"),
22763                                                       Bop(And,
22764                                                           Mop(Not,
22765                                                               bVar"b'8"),
22766                                                           Bop(And,
22767                                                               Mop(Not,
22768                                                                   bVar"b'7"),
22769                                                               Bop(And,
22770                                                                   Mop(Not,
22771                                                                       bVar"b'6"),
22772                                                                   Bop(And,
22773                                                                       Mop(Not,
22774                                                                           bVar"b'5"),
22775                                                                       Bop(And,
22776                                                                           Mop(Not,
22777                                                                               bVar"b'4"),
22778                                                                           Mop(Not,
22779                                                                               bVar"b'3"))))))))))))))),
22780                   Call
22781                     ("CP",CTy"instruction",
22782                      Call
22783                        ("DMTC0",CTy"CP",
22784                         TP[Mop(Cast(FTy 5),
22785                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
22786                                   bVar"b'17",bVar"b'16"]),
22787                            Mop(Cast(FTy 5),
22788                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
22789                                   bVar"b'12",bVar"b'11"]),
22790                            Mop(Cast(FTy 3),
22791                                LL[bVar"b'2",bVar"b'1",bVar"b'0"])]))),
22792                  (Bop(And,bVar"b'28",
22793                       Bop(And,bVar"b'27",
22794                           Bop(And,Mop(Not,bVar"b'20"),
22795                               Bop(And,Mop(Not,bVar"b'19"),
22796                                   Bop(And,Mop(Not,bVar"b'18"),
22797                                       Bop(And,Mop(Not,bVar"b'17"),
22798                                           Mop(Not,bVar"b'16"))))))),
22799                   Call
22800                     ("Branch",CTy"instruction",
22801                      Call
22802                        ("BLEZL",CTy"Branch",
22803                         TP[Mop(Cast(FTy 5),
22804                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
22805                                   bVar"b'22",bVar"b'21"]),
22806                            Mop(Cast F16,
22807                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
22808                                   bVar"b'12",bVar"b'11",bVar"b'10",
22809                                   bVar"b'9",bVar"b'8",bVar"b'7",
22810                                   bVar"b'6",bVar"b'5",bVar"b'4",
22811                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
22812                  (Bop(And,bVar"b'28",Mop(Not,bVar"b'27")),
22813                   Call
22814                     ("Branch",CTy"instruction",
22815                      Call
22816                        ("BEQL",CTy"Branch",
22817                         TP[Mop(Cast(FTy 5),
22818                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
22819                                   bVar"b'22",bVar"b'21"]),
22820                            Mop(Cast(FTy 5),
22821                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
22822                                   bVar"b'17",bVar"b'16"]),
22823                            Mop(Cast F16,
22824                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
22825                                   bVar"b'12",bVar"b'11",bVar"b'10",
22826                                   bVar"b'9",bVar"b'8",bVar"b'7",
22827                                   bVar"b'6",bVar"b'5",bVar"b'4",
22828                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
22829                  (Bop(And,Mop(Not,bVar"b'28"),
22830                       Bop(And,Mop(Not,bVar"b'27"),
22831                           Bop(And,bVar"b'25",
22832                               Bop(And,Mop(Not,bVar"b'24"),
22833                                   Bop(And,Mop(Not,bVar"b'23"),
22834                                       Bop(And,Mop(Not,bVar"b'22"),
22835                                           Bop(And,Mop(Not,bVar"b'21"),
22836                                               Bop(And,
22837                                                   Mop(Not,bVar"b'20"),
22838                                                   Bop(And,
22839                                                       Mop(Not,bVar"b'19"),
22840                                                       Bop(And,
22841                                                           Mop(Not,
22842                                                               bVar"b'18"),
22843                                                           Bop(And,
22844                                                               Mop(Not,
22845                                                                   bVar"b'17"),
22846                                                               Bop(And,
22847                                                                   Mop(Not,
22848                                                                       bVar"b'16"),
22849                                                                   Bop(And,
22850                                                                       Mop(Not,
22851                                                                           bVar"b'15"),
22852                                                                       Bop(And,
22853                                                                           Mop(Not,
22854                                                                               bVar"b'14"),
22855                                                                           Bop(And,
22856                                                                               Mop(Not,
22857                                                                                   bVar"b'13"),
22858                                                                               Bop(And,
22859                                                                                   Mop(Not,
22860                                                                                       bVar"b'12"),
22861                                                                                   Bop(And,
22862                                                                                       Mop(Not,
22863                                                                                           bVar"b'11"),
22864                                                                                       Bop(And,
22865                                                                                           Mop(Not,
22866                                                                                               bVar"b'10"),
22867                                                                                           Bop(And,
22868                                                                                               Mop(Not,
22869                                                                                                   bVar"b'9"),
22870                                                                                               Bop(And,
22871                                                                                                   Mop(Not,
22872                                                                                                       bVar"b'8"),
22873                                                                                                   Bop(And,
22874                                                                                                       Mop(Not,
22875                                                                                                           bVar"b'7"),
22876                                                                                                       Bop(And,
22877                                                                                                           Mop(Not,
22878                                                                                                               bVar"b'6"),
22879                                                                                                           Bop(And,
22880                                                                                                               bVar"b'5",
22881                                                                                                               Bop(And,
22882                                                                                                                   Mop(Not,
22883                                                                                                                       bVar"b'4"),
22884                                                                                                                   Bop(And,
22885                                                                                                                       Mop(Not,
22886                                                                                                                           bVar"b'3"),
22887                                                                                                                       Bop(And,
22888                                                                                                                           Mop(Not,
22889                                                                                                                               bVar"b'2"),
22890                                                                                                                           Bop(And,
22891                                                                                                                               Mop(Not,
22892                                                                                                                                   bVar"b'1"),
22893                                                                                                                               Mop(Not,
22894                                                                                                                                   bVar"b'0")))))))))))))))))))))))))))),
22895                   Const("WAIT",CTy"instruction")),
22896                  (Bop(And,Mop(Not,bVar"b'28"),bVar"b'27"),
22897                   Call
22898                     ("COP2Decode",CTy"instruction",
22899                      Mop(Cast(FTy 26),
22900                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
22901                             bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18",
22902                             bVar"b'17",bVar"b'16",bVar"b'15",bVar"b'14",
22903                             bVar"b'13",bVar"b'12",bVar"b'11",bVar"b'10",
22904                             bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6",
22905                             bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2",
22906                             bVar"b'1",bVar"b'0"])))],
22907                 Const("ReservedInstruction",CTy"instruction"))),
22908            (bVar"b'31",
22909             ITB([(bVar"b'29",
22910                   ITB([(Bop(And,Mop(Not,bVar"b'28"),Mop(Not,bVar"b'27")),
22911                         Call
22912                           ("Store",CTy"instruction",
22913                            Call
22914                              ("SB",CTy"Store",
22915                               TP[Mop(Cast(FTy 5),
22916                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
22917                                         bVar"b'22",bVar"b'21"]),
22918                                  Mop(Cast(FTy 5),
22919                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
22920                                         bVar"b'17",bVar"b'16"]),
22921                                  Mop(Cast F16,
22922                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
22923                                         bVar"b'12",bVar"b'11",bVar"b'10",
22924                                         bVar"b'9",bVar"b'8",bVar"b'7",
22925                                         bVar"b'6",bVar"b'5",bVar"b'4",
22926                                         bVar"b'3",bVar"b'2",bVar"b'1",
22927                                         bVar"b'0"])]))),
22928                        (Bop(And,Mop(Not,bVar"b'28"),bVar"b'27"),
22929                         Call
22930                           ("Store",CTy"instruction",
22931                            Call
22932                              ("SWL",CTy"Store",
22933                               TP[Mop(Cast(FTy 5),
22934                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
22935                                         bVar"b'22",bVar"b'21"]),
22936                                  Mop(Cast(FTy 5),
22937                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
22938                                         bVar"b'17",bVar"b'16"]),
22939                                  Mop(Cast F16,
22940                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
22941                                         bVar"b'12",bVar"b'11",bVar"b'10",
22942                                         bVar"b'9",bVar"b'8",bVar"b'7",
22943                                         bVar"b'6",bVar"b'5",bVar"b'4",
22944                                         bVar"b'3",bVar"b'2",bVar"b'1",
22945                                         bVar"b'0"])]))),
22946                        (Bop(And,bVar"b'28",Mop(Not,bVar"b'27")),
22947                         Call
22948                           ("Store",CTy"instruction",
22949                            Call
22950                              ("SDL",CTy"Store",
22951                               TP[Mop(Cast(FTy 5),
22952                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
22953                                         bVar"b'22",bVar"b'21"]),
22954                                  Mop(Cast(FTy 5),
22955                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
22956                                         bVar"b'17",bVar"b'16"]),
22957                                  Mop(Cast F16,
22958                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
22959                                         bVar"b'12",bVar"b'11",bVar"b'10",
22960                                         bVar"b'9",bVar"b'8",bVar"b'7",
22961                                         bVar"b'6",bVar"b'5",bVar"b'4",
22962                                         bVar"b'3",bVar"b'2",bVar"b'1",
22963                                         bVar"b'0"])]))),
22964                        (Bop(And,bVar"b'28",bVar"b'27"),
22965                         Call
22966                           ("Store",CTy"instruction",
22967                            Call
22968                              ("SWR",CTy"Store",
22969                               TP[Mop(Cast(FTy 5),
22970                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
22971                                         bVar"b'22",bVar"b'21"]),
22972                                  Mop(Cast(FTy 5),
22973                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
22974                                         bVar"b'17",bVar"b'16"]),
22975                                  Mop(Cast F16,
22976                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
22977                                         bVar"b'12",bVar"b'11",bVar"b'10",
22978                                         bVar"b'9",bVar"b'8",bVar"b'7",
22979                                         bVar"b'6",bVar"b'5",bVar"b'4",
22980                                         bVar"b'3",bVar"b'2",bVar"b'1",
22981                                         bVar"b'0"])])))],
22982                       Const("ReservedInstruction",CTy"instruction"))),
22983                  (Bop(And,Mop(Not,bVar"b'28"),Mop(Not,bVar"b'27")),
22984                   Call
22985                     ("Load",CTy"instruction",
22986                      Call
22987                        ("LB",CTy"Load",
22988                         TP[Mop(Cast(FTy 5),
22989                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
22990                                   bVar"b'22",bVar"b'21"]),
22991                            Mop(Cast(FTy 5),
22992                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
22993                                   bVar"b'17",bVar"b'16"]),
22994                            Mop(Cast F16,
22995                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
22996                                   bVar"b'12",bVar"b'11",bVar"b'10",
22997                                   bVar"b'9",bVar"b'8",bVar"b'7",
22998                                   bVar"b'6",bVar"b'5",bVar"b'4",
22999                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
23000                  (Bop(And,Mop(Not,bVar"b'28"),bVar"b'27"),
23001                   Call
23002                     ("Load",CTy"instruction",
23003                      Call
23004                        ("LWL",CTy"Load",
23005                         TP[Mop(Cast(FTy 5),
23006                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
23007                                   bVar"b'22",bVar"b'21"]),
23008                            Mop(Cast(FTy 5),
23009                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
23010                                   bVar"b'17",bVar"b'16"]),
23011                            Mop(Cast F16,
23012                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
23013                                   bVar"b'12",bVar"b'11",bVar"b'10",
23014                                   bVar"b'9",bVar"b'8",bVar"b'7",
23015                                   bVar"b'6",bVar"b'5",bVar"b'4",
23016                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
23017                  (Bop(And,bVar"b'28",Mop(Not,bVar"b'27")),
23018                   Call
23019                     ("Load",CTy"instruction",
23020                      Call
23021                        ("LBU",CTy"Load",
23022                         TP[Mop(Cast(FTy 5),
23023                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
23024                                   bVar"b'22",bVar"b'21"]),
23025                            Mop(Cast(FTy 5),
23026                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
23027                                   bVar"b'17",bVar"b'16"]),
23028                            Mop(Cast F16,
23029                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
23030                                   bVar"b'12",bVar"b'11",bVar"b'10",
23031                                   bVar"b'9",bVar"b'8",bVar"b'7",
23032                                   bVar"b'6",bVar"b'5",bVar"b'4",
23033                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
23034                  (Bop(And,bVar"b'28",bVar"b'27"),
23035                   Call
23036                     ("Load",CTy"instruction",
23037                      Call
23038                        ("LWR",CTy"Load",
23039                         TP[Mop(Cast(FTy 5),
23040                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
23041                                   bVar"b'22",bVar"b'21"]),
23042                            Mop(Cast(FTy 5),
23043                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
23044                                   bVar"b'17",bVar"b'16"]),
23045                            Mop(Cast F16,
23046                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
23047                                   bVar"b'12",bVar"b'11",bVar"b'10",
23048                                   bVar"b'9",bVar"b'8",bVar"b'7",
23049                                   bVar"b'6",bVar"b'5",bVar"b'4",
23050                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])])))],
23051                 Const("ReservedInstruction",CTy"instruction"))),
23052            (bVar"b'29",
23053             ITB([(Bop(And,Mop(Not,bVar"b'28"),Mop(Not,bVar"b'27")),
23054                   Call
23055                     ("ArithI",CTy"instruction",
23056                      Call
23057                        ("ADDI",CTy"ArithI",
23058                         TP[Mop(Cast(FTy 5),
23059                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
23060                                   bVar"b'22",bVar"b'21"]),
23061                            Mop(Cast(FTy 5),
23062                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
23063                                   bVar"b'17",bVar"b'16"]),
23064                            Mop(Cast F16,
23065                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
23066                                   bVar"b'12",bVar"b'11",bVar"b'10",
23067                                   bVar"b'9",bVar"b'8",bVar"b'7",
23068                                   bVar"b'6",bVar"b'5",bVar"b'4",
23069                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
23070                  (Bop(And,Mop(Not,bVar"b'28"),bVar"b'27"),
23071                   Call
23072                     ("ArithI",CTy"instruction",
23073                      Call
23074                        ("SLTI",CTy"ArithI",
23075                         TP[Mop(Cast(FTy 5),
23076                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
23077                                   bVar"b'22",bVar"b'21"]),
23078                            Mop(Cast(FTy 5),
23079                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
23080                                   bVar"b'17",bVar"b'16"]),
23081                            Mop(Cast F16,
23082                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
23083                                   bVar"b'12",bVar"b'11",bVar"b'10",
23084                                   bVar"b'9",bVar"b'8",bVar"b'7",
23085                                   bVar"b'6",bVar"b'5",bVar"b'4",
23086                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
23087                  (Bop(And,bVar"b'28",Mop(Not,bVar"b'27")),
23088                   Call
23089                     ("ArithI",CTy"instruction",
23090                      Call
23091                        ("ANDI",CTy"ArithI",
23092                         TP[Mop(Cast(FTy 5),
23093                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
23094                                   bVar"b'22",bVar"b'21"]),
23095                            Mop(Cast(FTy 5),
23096                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
23097                                   bVar"b'17",bVar"b'16"]),
23098                            Mop(Cast F16,
23099                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
23100                                   bVar"b'12",bVar"b'11",bVar"b'10",
23101                                   bVar"b'9",bVar"b'8",bVar"b'7",
23102                                   bVar"b'6",bVar"b'5",bVar"b'4",
23103                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
23104                  (Bop(And,bVar"b'28",bVar"b'27"),
23105                   Call
23106                     ("ArithI",CTy"instruction",
23107                      Call
23108                        ("XORI",CTy"ArithI",
23109                         TP[Mop(Cast(FTy 5),
23110                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
23111                                   bVar"b'22",bVar"b'21"]),
23112                            Mop(Cast(FTy 5),
23113                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
23114                                   bVar"b'17",bVar"b'16"]),
23115                            Mop(Cast F16,
23116                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
23117                                   bVar"b'12",bVar"b'11",bVar"b'10",
23118                                   bVar"b'9",bVar"b'8",bVar"b'7",
23119                                   bVar"b'6",bVar"b'5",bVar"b'4",
23120                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])])))],
23121                 Const("ReservedInstruction",CTy"instruction"))),
23122            (Bop(And,Mop(Not,bVar"b'28"),
23123                 Bop(And,Mop(Not,bVar"b'27"),
23124                     Bop(And,Mop(Not,bVar"b'10"),
23125                         Bop(And,Mop(Not,bVar"b'9"),
23126                             Bop(And,Mop(Not,bVar"b'8"),
23127                                 Bop(And,Mop(Not,bVar"b'7"),
23128                                     Bop(And,Mop(Not,bVar"b'6"),
23129                                         Bop(And,Mop(Not,bVar"b'5"),
23130                                             Bop(And,Mop(Not,bVar"b'4"),
23131                                                 Bop(And,
23132                                                     Mop(Not,bVar"b'3"),
23133                                                     Bop(And,
23134                                                         Mop(Not,bVar"b'2"),
23135                                                         Bop(And,
23136                                                             Mop(Not,
23137                                                                 bVar"b'1"),
23138                                                             bVar"b'0")))))))))))),
23139             Call
23140               ("MOVCIDecode",CTy"instruction",
23141                TP[Mop(Cast(FTy 5),
23142                       LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
23143                          bVar"b'21"]),
23144                   Mop(Cast(FTy 5),
23145                       LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
23146                          bVar"b'16"]),
23147                   Mop(Cast(FTy 5),
23148                       LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
23149                          bVar"b'11"])])),
23150            (Bop(And,Mop(Not,bVar"b'28"),
23151                 Bop(And,Mop(Not,bVar"b'27"),
23152                     Bop(And,Mop(Not,bVar"b'25"),
23153                         Bop(And,Mop(Not,bVar"b'24"),
23154                             Bop(And,Mop(Not,bVar"b'23"),
23155                                 Bop(And,Mop(Not,bVar"b'22"),
23156                                     Bop(And,Mop(Not,bVar"b'21"),
23157                                         Bop(And,Mop(Not,bVar"b'5"),
23158                                             Bop(And,Mop(Not,bVar"b'4"),
23159                                                 Bop(And,
23160                                                     Mop(Not,bVar"b'3"),
23161                                                     Bop(And,
23162                                                         Mop(Not,bVar"b'2"),
23163                                                         Bop(And,
23164                                                             Mop(Not,
23165                                                                 bVar"b'1"),
23166                                                             Mop(Not,
23167                                                                 bVar"b'0"))))))))))))),
23168             Call
23169               ("Shift",CTy"instruction",
23170                Call
23171                  ("SLL",CTy"Shift",
23172                   TP[Mop(Cast(FTy 5),
23173                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
23174                             bVar"b'16"]),
23175                      Mop(Cast(FTy 5),
23176                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
23177                             bVar"b'11"]),
23178                      Mop(Cast(FTy 5),
23179                          LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
23180                             bVar"b'6"])]))),
23181            (Bop(And,Mop(Not,bVar"b'28"),
23182                 Bop(And,Mop(Not,bVar"b'27"),
23183                     Bop(And,Mop(Not,bVar"b'25"),
23184                         Bop(And,Mop(Not,bVar"b'24"),
23185                             Bop(And,Mop(Not,bVar"b'23"),
23186                                 Bop(And,Mop(Not,bVar"b'22"),
23187                                     Bop(And,Mop(Not,bVar"b'21"),
23188                                         Bop(And,Mop(Not,bVar"b'5"),
23189                                             Bop(And,Mop(Not,bVar"b'4"),
23190                                                 Bop(And,
23191                                                     Mop(Not,bVar"b'3"),
23192                                                     Bop(And,
23193                                                         Mop(Not,bVar"b'2"),
23194                                                         Bop(And,
23195                                                             bVar"b'1",
23196                                                             Mop(Not,
23197                                                                 bVar"b'0"))))))))))))),
23198             Call
23199               ("Shift",CTy"instruction",
23200                Call
23201                  ("SRL",CTy"Shift",
23202                   TP[Mop(Cast(FTy 5),
23203                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
23204                             bVar"b'16"]),
23205                      Mop(Cast(FTy 5),
23206                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
23207                             bVar"b'11"]),
23208                      Mop(Cast(FTy 5),
23209                          LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
23210                             bVar"b'6"])]))),
23211            (Bop(And,Mop(Not,bVar"b'28"),
23212                 Bop(And,Mop(Not,bVar"b'27"),
23213                     Bop(And,Mop(Not,bVar"b'25"),
23214                         Bop(And,Mop(Not,bVar"b'24"),
23215                             Bop(And,Mop(Not,bVar"b'23"),
23216                                 Bop(And,Mop(Not,bVar"b'22"),
23217                                     Bop(And,Mop(Not,bVar"b'21"),
23218                                         Bop(And,Mop(Not,bVar"b'5"),
23219                                             Bop(And,Mop(Not,bVar"b'4"),
23220                                                 Bop(And,
23221                                                     Mop(Not,bVar"b'3"),
23222                                                     Bop(And,
23223                                                         Mop(Not,bVar"b'2"),
23224                                                         Bop(And,
23225                                                             bVar"b'1",
23226                                                             bVar"b'0")))))))))))),
23227             Call
23228               ("Shift",CTy"instruction",
23229                Call
23230                  ("SRA",CTy"Shift",
23231                   TP[Mop(Cast(FTy 5),
23232                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
23233                             bVar"b'16"]),
23234                      Mop(Cast(FTy 5),
23235                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
23236                             bVar"b'11"]),
23237                      Mop(Cast(FTy 5),
23238                          LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
23239                             bVar"b'6"])]))),
23240            (Bop(And,Mop(Not,bVar"b'28"),
23241                 Bop(And,Mop(Not,bVar"b'27"),
23242                     Bop(And,Mop(Not,bVar"b'10"),
23243                         Bop(And,Mop(Not,bVar"b'9"),
23244                             Bop(And,Mop(Not,bVar"b'8"),
23245                                 Bop(And,Mop(Not,bVar"b'7"),
23246                                     Bop(And,Mop(Not,bVar"b'6"),
23247                                         Bop(And,Mop(Not,bVar"b'5"),
23248                                             Bop(And,Mop(Not,bVar"b'4"),
23249                                                 Bop(And,
23250                                                     Mop(Not,bVar"b'3"),
23251                                                     Bop(And,bVar"b'2",
23252                                                         Bop(And,
23253                                                             Mop(Not,
23254                                                                 bVar"b'1"),
23255                                                             Mop(Not,
23256                                                                 bVar"b'0"))))))))))))),
23257             Call
23258               ("Shift",CTy"instruction",
23259                Call
23260                  ("SLLV",CTy"Shift",
23261                   TP[Mop(Cast(FTy 5),
23262                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
23263                             bVar"b'21"]),
23264                      Mop(Cast(FTy 5),
23265                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
23266                             bVar"b'16"]),
23267                      Mop(Cast(FTy 5),
23268                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
23269                             bVar"b'11"])]))),
23270            (Bop(And,Mop(Not,bVar"b'28"),
23271                 Bop(And,Mop(Not,bVar"b'27"),
23272                     Bop(And,Mop(Not,bVar"b'10"),
23273                         Bop(And,Mop(Not,bVar"b'9"),
23274                             Bop(And,Mop(Not,bVar"b'8"),
23275                                 Bop(And,Mop(Not,bVar"b'7"),
23276                                     Bop(And,Mop(Not,bVar"b'6"),
23277                                         Bop(And,Mop(Not,bVar"b'5"),
23278                                             Bop(And,Mop(Not,bVar"b'4"),
23279                                                 Bop(And,
23280                                                     Mop(Not,bVar"b'3"),
23281                                                     Bop(And,bVar"b'2",
23282                                                         Bop(And,
23283                                                             bVar"b'1",
23284                                                             Mop(Not,
23285                                                                 bVar"b'0"))))))))))))),
23286             Call
23287               ("Shift",CTy"instruction",
23288                Call
23289                  ("SRLV",CTy"Shift",
23290                   TP[Mop(Cast(FTy 5),
23291                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
23292                             bVar"b'21"]),
23293                      Mop(Cast(FTy 5),
23294                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
23295                             bVar"b'16"]),
23296                      Mop(Cast(FTy 5),
23297                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
23298                             bVar"b'11"])]))),
23299            (Bop(And,Mop(Not,bVar"b'28"),
23300                 Bop(And,Mop(Not,bVar"b'27"),
23301                     Bop(And,Mop(Not,bVar"b'10"),
23302                         Bop(And,Mop(Not,bVar"b'9"),
23303                             Bop(And,Mop(Not,bVar"b'8"),
23304                                 Bop(And,Mop(Not,bVar"b'7"),
23305                                     Bop(And,Mop(Not,bVar"b'6"),
23306                                         Bop(And,Mop(Not,bVar"b'5"),
23307                                             Bop(And,Mop(Not,bVar"b'4"),
23308                                                 Bop(And,
23309                                                     Mop(Not,bVar"b'3"),
23310                                                     Bop(And,bVar"b'2",
23311                                                         Bop(And,
23312                                                             bVar"b'1",
23313                                                             bVar"b'0")))))))))))),
23314             Call
23315               ("Shift",CTy"instruction",
23316                Call
23317                  ("SRAV",CTy"Shift",
23318                   TP[Mop(Cast(FTy 5),
23319                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
23320                             bVar"b'21"]),
23321                      Mop(Cast(FTy 5),
23322                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
23323                             bVar"b'16"]),
23324                      Mop(Cast(FTy 5),
23325                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
23326                             bVar"b'11"])]))),
23327            (Bop(And,Mop(Not,bVar"b'28"),
23328                 Bop(And,Mop(Not,bVar"b'27"),
23329                     Bop(And,Mop(Not,bVar"b'20"),
23330                         Bop(And,Mop(Not,bVar"b'19"),
23331                             Bop(And,Mop(Not,bVar"b'18"),
23332                                 Bop(And,Mop(Not,bVar"b'17"),
23333                                     Bop(And,Mop(Not,bVar"b'16"),
23334                                         Bop(And,Mop(Not,bVar"b'15"),
23335                                             Bop(And,Mop(Not,bVar"b'14"),
23336                                                 Bop(And,
23337                                                     Mop(Not,bVar"b'13"),
23338                                                     Bop(And,
23339                                                         Mop(Not,
23340                                                             bVar"b'12"),
23341                                                         Bop(And,
23342                                                             Mop(Not,
23343                                                                 bVar"b'11"),
23344                                                             Bop(And,
23345                                                                 Mop(Not,
23346                                                                     bVar"b'5"),
23347                                                                 Bop(And,
23348                                                                     Mop(Not,
23349                                                                         bVar"b'4"),
23350                                                                     Bop(And,
23351                                                                         bVar"b'3",
23352                                                                         Bop(And,
23353                                                                             Mop(Not,
23354                                                                                 bVar"b'2"),
23355                                                                             Bop(And,
23356                                                                                 Mop(Not,
23357                                                                                     bVar"b'1"),
23358                                                                                 Mop(Not,
23359                                                                                     bVar"b'0")))))))))))))))))),
23360             Call
23361               ("Branch",CTy"instruction",
23362                Call
23363                  ("JR",CTy"Branch",
23364                   Mop(Cast(FTy 5),
23365                       LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
23366                          bVar"b'21"])))),
23367            (Bop(And,Mop(Not,bVar"b'28"),
23368                 Bop(And,Mop(Not,bVar"b'27"),
23369                     Bop(And,Mop(Not,bVar"b'20"),
23370                         Bop(And,Mop(Not,bVar"b'19"),
23371                             Bop(And,Mop(Not,bVar"b'18"),
23372                                 Bop(And,Mop(Not,bVar"b'17"),
23373                                     Bop(And,Mop(Not,bVar"b'16"),
23374                                         Bop(And,Mop(Not,bVar"b'5"),
23375                                             Bop(And,Mop(Not,bVar"b'4"),
23376                                                 Bop(And,bVar"b'3",
23377                                                     Bop(And,
23378                                                         Mop(Not,bVar"b'2"),
23379                                                         Bop(And,
23380                                                             Mop(Not,
23381                                                                 bVar"b'1"),
23382                                                             bVar"b'0")))))))))))),
23383             Call
23384               ("Branch",CTy"instruction",
23385                Call
23386                  ("JALR",CTy"Branch",
23387                   TP[Mop(Cast(FTy 5),
23388                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
23389                             bVar"b'21"]),
23390                      Mop(Cast(FTy 5),
23391                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
23392                             bVar"b'11"])]))),
23393            (Bop(And,Mop(Not,bVar"b'28"),
23394                 Bop(And,Mop(Not,bVar"b'27"),
23395                     Bop(And,Mop(Not,bVar"b'10"),
23396                         Bop(And,Mop(Not,bVar"b'9"),
23397                             Bop(And,Mop(Not,bVar"b'8"),
23398                                 Bop(And,Mop(Not,bVar"b'7"),
23399                                     Bop(And,Mop(Not,bVar"b'6"),
23400                                         Bop(And,Mop(Not,bVar"b'5"),
23401                                             Bop(And,Mop(Not,bVar"b'4"),
23402                                                 Bop(And,bVar"b'3",
23403                                                     Bop(And,
23404                                                         Mop(Not,bVar"b'2"),
23405                                                         Bop(And,
23406                                                             bVar"b'1",
23407                                                             Mop(Not,
23408                                                                 bVar"b'0"))))))))))))),
23409             Call
23410               ("ArithR",CTy"instruction",
23411                Call
23412                  ("MOVZ",CTy"ArithR",
23413                   TP[Mop(Cast(FTy 5),
23414                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
23415                             bVar"b'21"]),
23416                      Mop(Cast(FTy 5),
23417                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
23418                             bVar"b'16"]),
23419                      Mop(Cast(FTy 5),
23420                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
23421                             bVar"b'11"])]))),
23422            (Bop(And,Mop(Not,bVar"b'28"),
23423                 Bop(And,Mop(Not,bVar"b'27"),
23424                     Bop(And,Mop(Not,bVar"b'10"),
23425                         Bop(And,Mop(Not,bVar"b'9"),
23426                             Bop(And,Mop(Not,bVar"b'8"),
23427                                 Bop(And,Mop(Not,bVar"b'7"),
23428                                     Bop(And,Mop(Not,bVar"b'6"),
23429                                         Bop(And,Mop(Not,bVar"b'5"),
23430                                             Bop(And,Mop(Not,bVar"b'4"),
23431                                                 Bop(And,bVar"b'3",
23432                                                     Bop(And,
23433                                                         Mop(Not,bVar"b'2"),
23434                                                         Bop(And,
23435                                                             bVar"b'1",
23436                                                             bVar"b'0")))))))))))),
23437             Call
23438               ("ArithR",CTy"instruction",
23439                Call
23440                  ("MOVN",CTy"ArithR",
23441                   TP[Mop(Cast(FTy 5),
23442                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
23443                             bVar"b'21"]),
23444                      Mop(Cast(FTy 5),
23445                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
23446                             bVar"b'16"]),
23447                      Mop(Cast(FTy 5),
23448                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
23449                             bVar"b'11"])]))),
23450            (Bop(And,Mop(Not,bVar"b'28"),
23451                 Bop(And,Mop(Not,bVar"b'27"),
23452                     Bop(And,Mop(Not,bVar"b'25"),
23453                         Bop(And,Mop(Not,bVar"b'24"),
23454                             Bop(And,Mop(Not,bVar"b'23"),
23455                                 Bop(And,Mop(Not,bVar"b'22"),
23456                                     Bop(And,Mop(Not,bVar"b'21"),
23457                                         Bop(And,Mop(Not,bVar"b'5"),
23458                                             Bop(And,Mop(Not,bVar"b'4"),
23459                                                 Bop(And,bVar"b'3",
23460                                                     Bop(And,bVar"b'2",
23461                                                         Bop(And,
23462                                                             Mop(Not,
23463                                                                 bVar"b'1"),
23464                                                             Mop(Not,
23465                                                                 bVar"b'0"))))))))))))),
23466             Const("SYSCALL",CTy"instruction")),
23467            (Bop(And,Mop(Not,bVar"b'28"),
23468                 Bop(And,Mop(Not,bVar"b'27"),
23469                     Bop(And,Mop(Not,bVar"b'25"),
23470                         Bop(And,Mop(Not,bVar"b'24"),
23471                             Bop(And,Mop(Not,bVar"b'23"),
23472                                 Bop(And,Mop(Not,bVar"b'22"),
23473                                     Bop(And,Mop(Not,bVar"b'21"),
23474                                         Bop(And,Mop(Not,bVar"b'5"),
23475                                             Bop(And,Mop(Not,bVar"b'4"),
23476                                                 Bop(And,bVar"b'3",
23477                                                     Bop(And,bVar"b'2",
23478                                                         Bop(And,
23479                                                             Mop(Not,
23480                                                                 bVar"b'1"),
23481                                                             bVar"b'0")))))))))))),
23482             Const("BREAK",CTy"instruction")),
23483            (Bop(And,Mop(Not,bVar"b'28"),
23484                 Bop(And,Mop(Not,bVar"b'27"),
23485                     Bop(And,Mop(Not,bVar"b'25"),
23486                         Bop(And,Mop(Not,bVar"b'24"),
23487                             Bop(And,Mop(Not,bVar"b'23"),
23488                                 Bop(And,Mop(Not,bVar"b'22"),
23489                                     Bop(And,Mop(Not,bVar"b'21"),
23490                                         Bop(And,Mop(Not,bVar"b'20"),
23491                                             Bop(And,Mop(Not,bVar"b'19"),
23492                                                 Bop(And,
23493                                                     Mop(Not,bVar"b'18"),
23494                                                     Bop(And,
23495                                                         Mop(Not,
23496                                                             bVar"b'17"),
23497                                                         Bop(And,
23498                                                             Mop(Not,
23499                                                                 bVar"b'16"),
23500                                                             Bop(And,
23501                                                                 Mop(Not,
23502                                                                     bVar"b'15"),
23503                                                                 Bop(And,
23504                                                                     Mop(Not,
23505                                                                         bVar"b'14"),
23506                                                                     Bop(And,
23507                                                                         Mop(Not,
23508                                                                             bVar"b'13"),
23509                                                                         Bop(And,
23510                                                                             Mop(Not,
23511                                                                                 bVar"b'12"),
23512                                                                             Bop(And,
23513                                                                                 Mop(Not,
23514                                                                                     bVar"b'11"),
23515                                                                                 Bop(And,
23516                                                                                     Mop(Not,
23517                                                                                         bVar"b'5"),
23518                                                                                     Bop(And,
23519                                                                                         Mop(Not,
23520                                                                                             bVar"b'4"),
23521                                                                                         Bop(And,
23522                                                                                             bVar"b'3",
23523                                                                                             Bop(And,
23524                                                                                                 bVar"b'2",
23525                                                                                                 Bop(And,
23526                                                                                                     bVar"b'1",
23527                                                                                                     bVar"b'0")))))))))))))))))))))),
23528             Call
23529               ("SYNC",CTy"instruction",
23530                Mop(Cast(FTy 5),
23531                    LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6"]))),
23532            (Bop(And,Mop(Not,bVar"b'28"),
23533                 Bop(And,Mop(Not,bVar"b'27"),
23534                     Bop(And,Mop(Not,bVar"b'25"),
23535                         Bop(And,Mop(Not,bVar"b'24"),
23536                             Bop(And,Mop(Not,bVar"b'23"),
23537                                 Bop(And,Mop(Not,bVar"b'22"),
23538                                     Bop(And,Mop(Not,bVar"b'21"),
23539                                         Bop(And,Mop(Not,bVar"b'20"),
23540                                             Bop(And,Mop(Not,bVar"b'19"),
23541                                                 Bop(And,
23542                                                     Mop(Not,bVar"b'18"),
23543                                                     Bop(And,
23544                                                         Mop(Not,
23545                                                             bVar"b'17"),
23546                                                         Bop(And,
23547                                                             Mop(Not,
23548                                                                 bVar"b'16"),
23549                                                             Bop(And,
23550                                                                 Mop(Not,
23551                                                                     bVar"b'10"),
23552                                                                 Bop(And,
23553                                                                     Mop(Not,
23554                                                                         bVar"b'9"),
23555                                                                     Bop(And,
23556                                                                         Mop(Not,
23557                                                                             bVar"b'8"),
23558                                                                         Bop(And,
23559                                                                             Mop(Not,
23560                                                                                 bVar"b'7"),
23561                                                                             Bop(And,
23562                                                                                 Mop(Not,
23563                                                                                     bVar"b'6"),
23564                                                                                 Bop(And,
23565                                                                                     Mop(Not,
23566                                                                                         bVar"b'5"),
23567                                                                                     Bop(And,
23568                                                                                         bVar"b'4",
23569                                                                                         Bop(And,
23570                                                                                             Mop(Not,
23571                                                                                                 bVar"b'3"),
23572                                                                                             Bop(And,
23573                                                                                                 Mop(Not,
23574                                                                                                     bVar"b'2"),
23575                                                                                                 Bop(And,
23576                                                                                                     Mop(Not,
23577                                                                                                         bVar"b'1"),
23578                                                                                                     Mop(Not,
23579                                                                                                         bVar"b'0"))))))))))))))))))))))),
23580             Call
23581               ("MultDiv",CTy"instruction",
23582                Call
23583                  ("MFHI",CTy"MultDiv",
23584                   Mop(Cast(FTy 5),
23585                       LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
23586                          bVar"b'11"])))),
23587            (Bop(And,Mop(Not,bVar"b'28"),
23588                 Bop(And,Mop(Not,bVar"b'27"),
23589                     Bop(And,Mop(Not,bVar"b'20"),
23590                         Bop(And,Mop(Not,bVar"b'19"),
23591                             Bop(And,Mop(Not,bVar"b'18"),
23592                                 Bop(And,Mop(Not,bVar"b'17"),
23593                                     Bop(And,Mop(Not,bVar"b'16"),
23594                                         Bop(And,Mop(Not,bVar"b'15"),
23595                                             Bop(And,Mop(Not,bVar"b'14"),
23596                                                 Bop(And,
23597                                                     Mop(Not,bVar"b'13"),
23598                                                     Bop(And,
23599                                                         Mop(Not,
23600                                                             bVar"b'12"),
23601                                                         Bop(And,
23602                                                             Mop(Not,
23603                                                                 bVar"b'11"),
23604                                                             Bop(And,
23605                                                                 Mop(Not,
23606                                                                     bVar"b'10"),
23607                                                                 Bop(And,
23608                                                                     Mop(Not,
23609                                                                         bVar"b'9"),
23610                                                                     Bop(And,
23611                                                                         Mop(Not,
23612                                                                             bVar"b'8"),
23613                                                                         Bop(And,
23614                                                                             Mop(Not,
23615                                                                                 bVar"b'7"),
23616                                                                             Bop(And,
23617                                                                                 Mop(Not,
23618                                                                                     bVar"b'6"),
23619                                                                                 Bop(And,
23620                                                                                     Mop(Not,
23621                                                                                         bVar"b'5"),
23622                                                                                     Bop(And,
23623                                                                                         bVar"b'4",
23624                                                                                         Bop(And,
23625                                                                                             Mop(Not,
23626                                                                                                 bVar"b'3"),
23627                                                                                             Bop(And,
23628                                                                                                 Mop(Not,
23629                                                                                                     bVar"b'2"),
23630                                                                                                 Bop(And,
23631                                                                                                     Mop(Not,
23632                                                                                                         bVar"b'1"),
23633                                                                                                     bVar"b'0")))))))))))))))))))))),
23634             Call
23635               ("MultDiv",CTy"instruction",
23636                Call
23637                  ("MTHI",CTy"MultDiv",
23638                   Mop(Cast(FTy 5),
23639                       LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
23640                          bVar"b'21"])))),
23641            (Bop(And,Mop(Not,bVar"b'28"),
23642                 Bop(And,Mop(Not,bVar"b'27"),
23643                     Bop(And,Mop(Not,bVar"b'25"),
23644                         Bop(And,Mop(Not,bVar"b'24"),
23645                             Bop(And,Mop(Not,bVar"b'23"),
23646                                 Bop(And,Mop(Not,bVar"b'22"),
23647                                     Bop(And,Mop(Not,bVar"b'21"),
23648                                         Bop(And,Mop(Not,bVar"b'20"),
23649                                             Bop(And,Mop(Not,bVar"b'19"),
23650                                                 Bop(And,
23651                                                     Mop(Not,bVar"b'18"),
23652                                                     Bop(And,
23653                                                         Mop(Not,
23654                                                             bVar"b'17"),
23655                                                         Bop(And,
23656                                                             Mop(Not,
23657                                                                 bVar"b'16"),
23658                                                             Bop(And,
23659                                                                 Mop(Not,
23660                                                                     bVar"b'10"),
23661                                                                 Bop(And,
23662                                                                     Mop(Not,
23663                                                                         bVar"b'9"),
23664                                                                     Bop(And,
23665                                                                         Mop(Not,
23666                                                                             bVar"b'8"),
23667                                                                         Bop(And,
23668                                                                             Mop(Not,
23669                                                                                 bVar"b'7"),
23670                                                                             Bop(And,
23671                                                                                 Mop(Not,
23672                                                                                     bVar"b'6"),
23673                                                                                 Bop(And,
23674                                                                                     Mop(Not,
23675                                                                                         bVar"b'5"),
23676                                                                                     Bop(And,
23677                                                                                         bVar"b'4",
23678                                                                                         Bop(And,
23679                                                                                             Mop(Not,
23680                                                                                                 bVar"b'3"),
23681                                                                                             Bop(And,
23682                                                                                                 Mop(Not,
23683                                                                                                     bVar"b'2"),
23684                                                                                                 Bop(And,
23685                                                                                                     bVar"b'1",
23686                                                                                                     Mop(Not,
23687                                                                                                         bVar"b'0"))))))))))))))))))))))),
23688             Call
23689               ("MultDiv",CTy"instruction",
23690                Call
23691                  ("MFLO",CTy"MultDiv",
23692                   Mop(Cast(FTy 5),
23693                       LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
23694                          bVar"b'11"])))),
23695            (Bop(And,Mop(Not,bVar"b'28"),
23696                 Bop(And,Mop(Not,bVar"b'27"),
23697                     Bop(And,Mop(Not,bVar"b'20"),
23698                         Bop(And,Mop(Not,bVar"b'19"),
23699                             Bop(And,Mop(Not,bVar"b'18"),
23700                                 Bop(And,Mop(Not,bVar"b'17"),
23701                                     Bop(And,Mop(Not,bVar"b'16"),
23702                                         Bop(And,Mop(Not,bVar"b'15"),
23703                                             Bop(And,Mop(Not,bVar"b'14"),
23704                                                 Bop(And,
23705                                                     Mop(Not,bVar"b'13"),
23706                                                     Bop(And,
23707                                                         Mop(Not,
23708                                                             bVar"b'12"),
23709                                                         Bop(And,
23710                                                             Mop(Not,
23711                                                                 bVar"b'11"),
23712                                                             Bop(And,
23713                                                                 Mop(Not,
23714                                                                     bVar"b'10"),
23715                                                                 Bop(And,
23716                                                                     Mop(Not,
23717                                                                         bVar"b'9"),
23718                                                                     Bop(And,
23719                                                                         Mop(Not,
23720                                                                             bVar"b'8"),
23721                                                                         Bop(And,
23722                                                                             Mop(Not,
23723                                                                                 bVar"b'7"),
23724                                                                             Bop(And,
23725                                                                                 Mop(Not,
23726                                                                                     bVar"b'6"),
23727                                                                                 Bop(And,
23728                                                                                     Mop(Not,
23729                                                                                         bVar"b'5"),
23730                                                                                     Bop(And,
23731                                                                                         bVar"b'4",
23732                                                                                         Bop(And,
23733                                                                                             Mop(Not,
23734                                                                                                 bVar"b'3"),
23735                                                                                             Bop(And,
23736                                                                                                 Mop(Not,
23737                                                                                                     bVar"b'2"),
23738                                                                                                 Bop(And,
23739                                                                                                     bVar"b'1",
23740                                                                                                     bVar"b'0")))))))))))))))))))))),
23741             Call
23742               ("MultDiv",CTy"instruction",
23743                Call
23744                  ("MTLO",CTy"MultDiv",
23745                   Mop(Cast(FTy 5),
23746                       LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
23747                          bVar"b'21"])))),
23748            (Bop(And,Mop(Not,bVar"b'28"),
23749                 Bop(And,Mop(Not,bVar"b'27"),
23750                     Bop(And,Mop(Not,bVar"b'10"),
23751                         Bop(And,Mop(Not,bVar"b'9"),
23752                             Bop(And,Mop(Not,bVar"b'8"),
23753                                 Bop(And,Mop(Not,bVar"b'7"),
23754                                     Bop(And,Mop(Not,bVar"b'6"),
23755                                         Bop(And,Mop(Not,bVar"b'5"),
23756                                             Bop(And,bVar"b'4",
23757                                                 Bop(And,
23758                                                     Mop(Not,bVar"b'3"),
23759                                                     Bop(And,bVar"b'2",
23760                                                         Bop(And,
23761                                                             Mop(Not,
23762                                                                 bVar"b'1"),
23763                                                             Mop(Not,
23764                                                                 bVar"b'0"))))))))))))),
23765             Call
23766               ("Shift",CTy"instruction",
23767                Call
23768                  ("DSLLV",CTy"Shift",
23769                   TP[Mop(Cast(FTy 5),
23770                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
23771                             bVar"b'21"]),
23772                      Mop(Cast(FTy 5),
23773                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
23774                             bVar"b'16"]),
23775                      Mop(Cast(FTy 5),
23776                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
23777                             bVar"b'11"])]))),
23778            (Bop(And,Mop(Not,bVar"b'28"),
23779                 Bop(And,Mop(Not,bVar"b'27"),
23780                     Bop(And,Mop(Not,bVar"b'10"),
23781                         Bop(And,Mop(Not,bVar"b'9"),
23782                             Bop(And,Mop(Not,bVar"b'8"),
23783                                 Bop(And,Mop(Not,bVar"b'7"),
23784                                     Bop(And,Mop(Not,bVar"b'6"),
23785                                         Bop(And,Mop(Not,bVar"b'5"),
23786                                             Bop(And,bVar"b'4",
23787                                                 Bop(And,
23788                                                     Mop(Not,bVar"b'3"),
23789                                                     Bop(And,bVar"b'2",
23790                                                         Bop(And,
23791                                                             bVar"b'1",
23792                                                             Mop(Not,
23793                                                                 bVar"b'0"))))))))))))),
23794             Call
23795               ("Shift",CTy"instruction",
23796                Call
23797                  ("DSRLV",CTy"Shift",
23798                   TP[Mop(Cast(FTy 5),
23799                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
23800                             bVar"b'21"]),
23801                      Mop(Cast(FTy 5),
23802                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
23803                             bVar"b'16"]),
23804                      Mop(Cast(FTy 5),
23805                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
23806                             bVar"b'11"])]))),
23807            (Bop(And,Mop(Not,bVar"b'28"),
23808                 Bop(And,Mop(Not,bVar"b'27"),
23809                     Bop(And,Mop(Not,bVar"b'10"),
23810                         Bop(And,Mop(Not,bVar"b'9"),
23811                             Bop(And,Mop(Not,bVar"b'8"),
23812                                 Bop(And,Mop(Not,bVar"b'7"),
23813                                     Bop(And,Mop(Not,bVar"b'6"),
23814                                         Bop(And,Mop(Not,bVar"b'5"),
23815                                             Bop(And,bVar"b'4",
23816                                                 Bop(And,
23817                                                     Mop(Not,bVar"b'3"),
23818                                                     Bop(And,bVar"b'2",
23819                                                         Bop(And,
23820                                                             bVar"b'1",
23821                                                             bVar"b'0")))))))))))),
23822             Call
23823               ("Shift",CTy"instruction",
23824                Call
23825                  ("DSRAV",CTy"Shift",
23826                   TP[Mop(Cast(FTy 5),
23827                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
23828                             bVar"b'21"]),
23829                      Mop(Cast(FTy 5),
23830                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
23831                             bVar"b'16"]),
23832                      Mop(Cast(FTy 5),
23833                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
23834                             bVar"b'11"])]))),
23835            (Bop(And,Mop(Not,bVar"b'28"),
23836                 Bop(And,Mop(Not,bVar"b'27"),
23837                     Bop(And,Mop(Not,bVar"b'15"),
23838                         Bop(And,Mop(Not,bVar"b'14"),
23839                             Bop(And,Mop(Not,bVar"b'13"),
23840                                 Bop(And,Mop(Not,bVar"b'12"),
23841                                     Bop(And,Mop(Not,bVar"b'11"),
23842                                         Bop(And,Mop(Not,bVar"b'10"),
23843                                             Bop(And,Mop(Not,bVar"b'9"),
23844                                                 Bop(And,
23845                                                     Mop(Not,bVar"b'8"),
23846                                                     Bop(And,
23847                                                         Mop(Not,bVar"b'7"),
23848                                                         Bop(And,
23849                                                             Mop(Not,
23850                                                                 bVar"b'6"),
23851                                                             Bop(And,
23852                                                                 Mop(Not,
23853                                                                     bVar"b'5"),
23854                                                                 Bop(And,
23855                                                                     bVar"b'4",
23856                                                                     Bop(And,
23857                                                                         bVar"b'3",
23858                                                                         Bop(And,
23859                                                                             Mop(Not,
23860                                                                                 bVar"b'2"),
23861                                                                             Bop(And,
23862                                                                                 Mop(Not,
23863                                                                                     bVar"b'1"),
23864                                                                                 Mop(Not,
23865                                                                                     bVar"b'0")))))))))))))))))),
23866             Call
23867               ("MultDiv",CTy"instruction",
23868                Call
23869                  ("MULT",CTy"MultDiv",
23870                   TP[Mop(Cast(FTy 5),
23871                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
23872                             bVar"b'21"]),
23873                      Mop(Cast(FTy 5),
23874                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
23875                             bVar"b'16"])]))),
23876            (Bop(And,Mop(Not,bVar"b'28"),
23877                 Bop(And,Mop(Not,bVar"b'27"),
23878                     Bop(And,Mop(Not,bVar"b'15"),
23879                         Bop(And,Mop(Not,bVar"b'14"),
23880                             Bop(And,Mop(Not,bVar"b'13"),
23881                                 Bop(And,Mop(Not,bVar"b'12"),
23882                                     Bop(And,Mop(Not,bVar"b'11"),
23883                                         Bop(And,Mop(Not,bVar"b'10"),
23884                                             Bop(And,Mop(Not,bVar"b'9"),
23885                                                 Bop(And,
23886                                                     Mop(Not,bVar"b'8"),
23887                                                     Bop(And,
23888                                                         Mop(Not,bVar"b'7"),
23889                                                         Bop(And,
23890                                                             Mop(Not,
23891                                                                 bVar"b'6"),
23892                                                             Bop(And,
23893                                                                 Mop(Not,
23894                                                                     bVar"b'5"),
23895                                                                 Bop(And,
23896                                                                     bVar"b'4",
23897                                                                     Bop(And,
23898                                                                         bVar"b'3",
23899                                                                         Bop(And,
23900                                                                             Mop(Not,
23901                                                                                 bVar"b'2"),
23902                                                                             Bop(And,
23903                                                                                 Mop(Not,
23904                                                                                     bVar"b'1"),
23905                                                                                 bVar"b'0"))))))))))))))))),
23906             Call
23907               ("MultDiv",CTy"instruction",
23908                Call
23909                  ("MULTU",CTy"MultDiv",
23910                   TP[Mop(Cast(FTy 5),
23911                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
23912                             bVar"b'21"]),
23913                      Mop(Cast(FTy 5),
23914                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
23915                             bVar"b'16"])]))),
23916            (Bop(And,Mop(Not,bVar"b'28"),
23917                 Bop(And,Mop(Not,bVar"b'27"),
23918                     Bop(And,Mop(Not,bVar"b'15"),
23919                         Bop(And,Mop(Not,bVar"b'14"),
23920                             Bop(And,Mop(Not,bVar"b'13"),
23921                                 Bop(And,Mop(Not,bVar"b'12"),
23922                                     Bop(And,Mop(Not,bVar"b'11"),
23923                                         Bop(And,Mop(Not,bVar"b'10"),
23924                                             Bop(And,Mop(Not,bVar"b'9"),
23925                                                 Bop(And,
23926                                                     Mop(Not,bVar"b'8"),
23927                                                     Bop(And,
23928                                                         Mop(Not,bVar"b'7"),
23929                                                         Bop(And,
23930                                                             Mop(Not,
23931                                                                 bVar"b'6"),
23932                                                             Bop(And,
23933                                                                 Mop(Not,
23934                                                                     bVar"b'5"),
23935                                                                 Bop(And,
23936                                                                     bVar"b'4",
23937                                                                     Bop(And,
23938                                                                         bVar"b'3",
23939                                                                         Bop(And,
23940                                                                             Mop(Not,
23941                                                                                 bVar"b'2"),
23942                                                                             Bop(And,
23943                                                                                 bVar"b'1",
23944                                                                                 Mop(Not,
23945                                                                                     bVar"b'0")))))))))))))))))),
23946             Call
23947               ("MultDiv",CTy"instruction",
23948                Call
23949                  ("DIV",CTy"MultDiv",
23950                   TP[Mop(Cast(FTy 5),
23951                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
23952                             bVar"b'21"]),
23953                      Mop(Cast(FTy 5),
23954                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
23955                             bVar"b'16"])]))),
23956            (Bop(And,Mop(Not,bVar"b'28"),
23957                 Bop(And,Mop(Not,bVar"b'27"),
23958                     Bop(And,Mop(Not,bVar"b'15"),
23959                         Bop(And,Mop(Not,bVar"b'14"),
23960                             Bop(And,Mop(Not,bVar"b'13"),
23961                                 Bop(And,Mop(Not,bVar"b'12"),
23962                                     Bop(And,Mop(Not,bVar"b'11"),
23963                                         Bop(And,Mop(Not,bVar"b'10"),
23964                                             Bop(And,Mop(Not,bVar"b'9"),
23965                                                 Bop(And,
23966                                                     Mop(Not,bVar"b'8"),
23967                                                     Bop(And,
23968                                                         Mop(Not,bVar"b'7"),
23969                                                         Bop(And,
23970                                                             Mop(Not,
23971                                                                 bVar"b'6"),
23972                                                             Bop(And,
23973                                                                 Mop(Not,
23974                                                                     bVar"b'5"),
23975                                                                 Bop(And,
23976                                                                     bVar"b'4",
23977                                                                     Bop(And,
23978                                                                         bVar"b'3",
23979                                                                         Bop(And,
23980                                                                             Mop(Not,
23981                                                                                 bVar"b'2"),
23982                                                                             Bop(And,
23983                                                                                 bVar"b'1",
23984                                                                                 bVar"b'0"))))))))))))))))),
23985             Call
23986               ("MultDiv",CTy"instruction",
23987                Call
23988                  ("DIVU",CTy"MultDiv",
23989                   TP[Mop(Cast(FTy 5),
23990                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
23991                             bVar"b'21"]),
23992                      Mop(Cast(FTy 5),
23993                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
23994                             bVar"b'16"])]))),
23995            (Bop(And,Mop(Not,bVar"b'28"),
23996                 Bop(And,Mop(Not,bVar"b'27"),
23997                     Bop(And,Mop(Not,bVar"b'15"),
23998                         Bop(And,Mop(Not,bVar"b'14"),
23999                             Bop(And,Mop(Not,bVar"b'13"),
24000                                 Bop(And,Mop(Not,bVar"b'12"),
24001                                     Bop(And,Mop(Not,bVar"b'11"),
24002                                         Bop(And,Mop(Not,bVar"b'10"),
24003                                             Bop(And,Mop(Not,bVar"b'9"),
24004                                                 Bop(And,
24005                                                     Mop(Not,bVar"b'8"),
24006                                                     Bop(And,
24007                                                         Mop(Not,bVar"b'7"),
24008                                                         Bop(And,
24009                                                             Mop(Not,
24010                                                                 bVar"b'6"),
24011                                                             Bop(And,
24012                                                                 Mop(Not,
24013                                                                     bVar"b'5"),
24014                                                                 Bop(And,
24015                                                                     bVar"b'4",
24016                                                                     Bop(And,
24017                                                                         bVar"b'3",
24018                                                                         Bop(And,
24019                                                                             bVar"b'2",
24020                                                                             Bop(And,
24021                                                                                 Mop(Not,
24022                                                                                     bVar"b'1"),
24023                                                                                 Mop(Not,
24024                                                                                     bVar"b'0")))))))))))))))))),
24025             Call
24026               ("MultDiv",CTy"instruction",
24027                Call
24028                  ("DMULT",CTy"MultDiv",
24029                   TP[Mop(Cast(FTy 5),
24030                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24031                             bVar"b'21"]),
24032                      Mop(Cast(FTy 5),
24033                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24034                             bVar"b'16"])]))),
24035            (Bop(And,Mop(Not,bVar"b'28"),
24036                 Bop(And,Mop(Not,bVar"b'27"),
24037                     Bop(And,Mop(Not,bVar"b'15"),
24038                         Bop(And,Mop(Not,bVar"b'14"),
24039                             Bop(And,Mop(Not,bVar"b'13"),
24040                                 Bop(And,Mop(Not,bVar"b'12"),
24041                                     Bop(And,Mop(Not,bVar"b'11"),
24042                                         Bop(And,Mop(Not,bVar"b'10"),
24043                                             Bop(And,Mop(Not,bVar"b'9"),
24044                                                 Bop(And,
24045                                                     Mop(Not,bVar"b'8"),
24046                                                     Bop(And,
24047                                                         Mop(Not,bVar"b'7"),
24048                                                         Bop(And,
24049                                                             Mop(Not,
24050                                                                 bVar"b'6"),
24051                                                             Bop(And,
24052                                                                 Mop(Not,
24053                                                                     bVar"b'5"),
24054                                                                 Bop(And,
24055                                                                     bVar"b'4",
24056                                                                     Bop(And,
24057                                                                         bVar"b'3",
24058                                                                         Bop(And,
24059                                                                             bVar"b'2",
24060                                                                             Bop(And,
24061                                                                                 Mop(Not,
24062                                                                                     bVar"b'1"),
24063                                                                                 bVar"b'0"))))))))))))))))),
24064             Call
24065               ("MultDiv",CTy"instruction",
24066                Call
24067                  ("DMULTU",CTy"MultDiv",
24068                   TP[Mop(Cast(FTy 5),
24069                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24070                             bVar"b'21"]),
24071                      Mop(Cast(FTy 5),
24072                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24073                             bVar"b'16"])]))),
24074            (Bop(And,Mop(Not,bVar"b'28"),
24075                 Bop(And,Mop(Not,bVar"b'27"),
24076                     Bop(And,Mop(Not,bVar"b'15"),
24077                         Bop(And,Mop(Not,bVar"b'14"),
24078                             Bop(And,Mop(Not,bVar"b'13"),
24079                                 Bop(And,Mop(Not,bVar"b'12"),
24080                                     Bop(And,Mop(Not,bVar"b'11"),
24081                                         Bop(And,Mop(Not,bVar"b'10"),
24082                                             Bop(And,Mop(Not,bVar"b'9"),
24083                                                 Bop(And,
24084                                                     Mop(Not,bVar"b'8"),
24085                                                     Bop(And,
24086                                                         Mop(Not,bVar"b'7"),
24087                                                         Bop(And,
24088                                                             Mop(Not,
24089                                                                 bVar"b'6"),
24090                                                             Bop(And,
24091                                                                 Mop(Not,
24092                                                                     bVar"b'5"),
24093                                                                 Bop(And,
24094                                                                     bVar"b'4",
24095                                                                     Bop(And,
24096                                                                         bVar"b'3",
24097                                                                         Bop(And,
24098                                                                             bVar"b'2",
24099                                                                             Bop(And,
24100                                                                                 bVar"b'1",
24101                                                                                 Mop(Not,
24102                                                                                     bVar"b'0")))))))))))))))))),
24103             Call
24104               ("MultDiv",CTy"instruction",
24105                Call
24106                  ("DDIV",CTy"MultDiv",
24107                   TP[Mop(Cast(FTy 5),
24108                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24109                             bVar"b'21"]),
24110                      Mop(Cast(FTy 5),
24111                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24112                             bVar"b'16"])]))),
24113            (Bop(And,Mop(Not,bVar"b'28"),
24114                 Bop(And,Mop(Not,bVar"b'27"),
24115                     Bop(And,Mop(Not,bVar"b'15"),
24116                         Bop(And,Mop(Not,bVar"b'14"),
24117                             Bop(And,Mop(Not,bVar"b'13"),
24118                                 Bop(And,Mop(Not,bVar"b'12"),
24119                                     Bop(And,Mop(Not,bVar"b'11"),
24120                                         Bop(And,Mop(Not,bVar"b'10"),
24121                                             Bop(And,Mop(Not,bVar"b'9"),
24122                                                 Bop(And,
24123                                                     Mop(Not,bVar"b'8"),
24124                                                     Bop(And,
24125                                                         Mop(Not,bVar"b'7"),
24126                                                         Bop(And,
24127                                                             Mop(Not,
24128                                                                 bVar"b'6"),
24129                                                             Bop(And,
24130                                                                 Mop(Not,
24131                                                                     bVar"b'5"),
24132                                                                 Bop(And,
24133                                                                     bVar"b'4",
24134                                                                     Bop(And,
24135                                                                         bVar"b'3",
24136                                                                         Bop(And,
24137                                                                             bVar"b'2",
24138                                                                             Bop(And,
24139                                                                                 bVar"b'1",
24140                                                                                 bVar"b'0"))))))))))))))))),
24141             Call
24142               ("MultDiv",CTy"instruction",
24143                Call
24144                  ("DDIVU",CTy"MultDiv",
24145                   TP[Mop(Cast(FTy 5),
24146                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24147                             bVar"b'21"]),
24148                      Mop(Cast(FTy 5),
24149                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24150                             bVar"b'16"])]))),
24151            (Bop(And,Mop(Not,bVar"b'28"),
24152                 Bop(And,Mop(Not,bVar"b'27"),
24153                     Bop(And,Mop(Not,bVar"b'10"),
24154                         Bop(And,Mop(Not,bVar"b'9"),
24155                             Bop(And,Mop(Not,bVar"b'8"),
24156                                 Bop(And,Mop(Not,bVar"b'7"),
24157                                     Bop(And,Mop(Not,bVar"b'6"),
24158                                         Bop(And,bVar"b'5",
24159                                             Bop(And,Mop(Not,bVar"b'4"),
24160                                                 Bop(And,
24161                                                     Mop(Not,bVar"b'3"),
24162                                                     Bop(And,
24163                                                         Mop(Not,bVar"b'2"),
24164                                                         Bop(And,
24165                                                             Mop(Not,
24166                                                                 bVar"b'1"),
24167                                                             Mop(Not,
24168                                                                 bVar"b'0"))))))))))))),
24169             Call
24170               ("ArithR",CTy"instruction",
24171                Call
24172                  ("ADD",CTy"ArithR",
24173                   TP[Mop(Cast(FTy 5),
24174                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24175                             bVar"b'21"]),
24176                      Mop(Cast(FTy 5),
24177                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24178                             bVar"b'16"]),
24179                      Mop(Cast(FTy 5),
24180                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24181                             bVar"b'11"])]))),
24182            (Bop(And,Mop(Not,bVar"b'28"),
24183                 Bop(And,Mop(Not,bVar"b'27"),
24184                     Bop(And,Mop(Not,bVar"b'10"),
24185                         Bop(And,Mop(Not,bVar"b'9"),
24186                             Bop(And,Mop(Not,bVar"b'8"),
24187                                 Bop(And,Mop(Not,bVar"b'7"),
24188                                     Bop(And,Mop(Not,bVar"b'6"),
24189                                         Bop(And,bVar"b'5",
24190                                             Bop(And,Mop(Not,bVar"b'4"),
24191                                                 Bop(And,
24192                                                     Mop(Not,bVar"b'3"),
24193                                                     Bop(And,
24194                                                         Mop(Not,bVar"b'2"),
24195                                                         Bop(And,
24196                                                             Mop(Not,
24197                                                                 bVar"b'1"),
24198                                                             bVar"b'0")))))))))))),
24199             Call
24200               ("ArithR",CTy"instruction",
24201                Call
24202                  ("ADDU",CTy"ArithR",
24203                   TP[Mop(Cast(FTy 5),
24204                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24205                             bVar"b'21"]),
24206                      Mop(Cast(FTy 5),
24207                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24208                             bVar"b'16"]),
24209                      Mop(Cast(FTy 5),
24210                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24211                             bVar"b'11"])]))),
24212            (Bop(And,Mop(Not,bVar"b'28"),
24213                 Bop(And,Mop(Not,bVar"b'27"),
24214                     Bop(And,Mop(Not,bVar"b'10"),
24215                         Bop(And,Mop(Not,bVar"b'9"),
24216                             Bop(And,Mop(Not,bVar"b'8"),
24217                                 Bop(And,Mop(Not,bVar"b'7"),
24218                                     Bop(And,Mop(Not,bVar"b'6"),
24219                                         Bop(And,bVar"b'5",
24220                                             Bop(And,Mop(Not,bVar"b'4"),
24221                                                 Bop(And,
24222                                                     Mop(Not,bVar"b'3"),
24223                                                     Bop(And,
24224                                                         Mop(Not,bVar"b'2"),
24225                                                         Bop(And,
24226                                                             bVar"b'1",
24227                                                             Mop(Not,
24228                                                                 bVar"b'0"))))))))))))),
24229             Call
24230               ("ArithR",CTy"instruction",
24231                Call
24232                  ("SUB",CTy"ArithR",
24233                   TP[Mop(Cast(FTy 5),
24234                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24235                             bVar"b'21"]),
24236                      Mop(Cast(FTy 5),
24237                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24238                             bVar"b'16"]),
24239                      Mop(Cast(FTy 5),
24240                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24241                             bVar"b'11"])]))),
24242            (Bop(And,Mop(Not,bVar"b'28"),
24243                 Bop(And,Mop(Not,bVar"b'27"),
24244                     Bop(And,Mop(Not,bVar"b'10"),
24245                         Bop(And,Mop(Not,bVar"b'9"),
24246                             Bop(And,Mop(Not,bVar"b'8"),
24247                                 Bop(And,Mop(Not,bVar"b'7"),
24248                                     Bop(And,Mop(Not,bVar"b'6"),
24249                                         Bop(And,bVar"b'5",
24250                                             Bop(And,Mop(Not,bVar"b'4"),
24251                                                 Bop(And,
24252                                                     Mop(Not,bVar"b'3"),
24253                                                     Bop(And,
24254                                                         Mop(Not,bVar"b'2"),
24255                                                         Bop(And,
24256                                                             bVar"b'1",
24257                                                             bVar"b'0")))))))))))),
24258             Call
24259               ("ArithR",CTy"instruction",
24260                Call
24261                  ("SUBU",CTy"ArithR",
24262                   TP[Mop(Cast(FTy 5),
24263                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24264                             bVar"b'21"]),
24265                      Mop(Cast(FTy 5),
24266                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24267                             bVar"b'16"]),
24268                      Mop(Cast(FTy 5),
24269                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24270                             bVar"b'11"])]))),
24271            (Bop(And,Mop(Not,bVar"b'28"),
24272                 Bop(And,Mop(Not,bVar"b'27"),
24273                     Bop(And,Mop(Not,bVar"b'10"),
24274                         Bop(And,Mop(Not,bVar"b'9"),
24275                             Bop(And,Mop(Not,bVar"b'8"),
24276                                 Bop(And,Mop(Not,bVar"b'7"),
24277                                     Bop(And,Mop(Not,bVar"b'6"),
24278                                         Bop(And,bVar"b'5",
24279                                             Bop(And,Mop(Not,bVar"b'4"),
24280                                                 Bop(And,
24281                                                     Mop(Not,bVar"b'3"),
24282                                                     Bop(And,bVar"b'2",
24283                                                         Bop(And,
24284                                                             Mop(Not,
24285                                                                 bVar"b'1"),
24286                                                             Mop(Not,
24287                                                                 bVar"b'0"))))))))))))),
24288             Call
24289               ("ArithR",CTy"instruction",
24290                Call
24291                  ("AND",CTy"ArithR",
24292                   TP[Mop(Cast(FTy 5),
24293                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24294                             bVar"b'21"]),
24295                      Mop(Cast(FTy 5),
24296                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24297                             bVar"b'16"]),
24298                      Mop(Cast(FTy 5),
24299                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24300                             bVar"b'11"])]))),
24301            (Bop(And,Mop(Not,bVar"b'28"),
24302                 Bop(And,Mop(Not,bVar"b'27"),
24303                     Bop(And,Mop(Not,bVar"b'10"),
24304                         Bop(And,Mop(Not,bVar"b'9"),
24305                             Bop(And,Mop(Not,bVar"b'8"),
24306                                 Bop(And,Mop(Not,bVar"b'7"),
24307                                     Bop(And,Mop(Not,bVar"b'6"),
24308                                         Bop(And,bVar"b'5",
24309                                             Bop(And,Mop(Not,bVar"b'4"),
24310                                                 Bop(And,
24311                                                     Mop(Not,bVar"b'3"),
24312                                                     Bop(And,bVar"b'2",
24313                                                         Bop(And,
24314                                                             Mop(Not,
24315                                                                 bVar"b'1"),
24316                                                             bVar"b'0")))))))))))),
24317             Call
24318               ("ArithR",CTy"instruction",
24319                Call
24320                  ("OR",CTy"ArithR",
24321                   TP[Mop(Cast(FTy 5),
24322                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24323                             bVar"b'21"]),
24324                      Mop(Cast(FTy 5),
24325                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24326                             bVar"b'16"]),
24327                      Mop(Cast(FTy 5),
24328                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24329                             bVar"b'11"])]))),
24330            (Bop(And,Mop(Not,bVar"b'28"),
24331                 Bop(And,Mop(Not,bVar"b'27"),
24332                     Bop(And,Mop(Not,bVar"b'10"),
24333                         Bop(And,Mop(Not,bVar"b'9"),
24334                             Bop(And,Mop(Not,bVar"b'8"),
24335                                 Bop(And,Mop(Not,bVar"b'7"),
24336                                     Bop(And,Mop(Not,bVar"b'6"),
24337                                         Bop(And,bVar"b'5",
24338                                             Bop(And,Mop(Not,bVar"b'4"),
24339                                                 Bop(And,
24340                                                     Mop(Not,bVar"b'3"),
24341                                                     Bop(And,bVar"b'2",
24342                                                         Bop(And,
24343                                                             bVar"b'1",
24344                                                             Mop(Not,
24345                                                                 bVar"b'0"))))))))))))),
24346             Call
24347               ("ArithR",CTy"instruction",
24348                Call
24349                  ("XOR",CTy"ArithR",
24350                   TP[Mop(Cast(FTy 5),
24351                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24352                             bVar"b'21"]),
24353                      Mop(Cast(FTy 5),
24354                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24355                             bVar"b'16"]),
24356                      Mop(Cast(FTy 5),
24357                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24358                             bVar"b'11"])]))),
24359            (Bop(And,Mop(Not,bVar"b'28"),
24360                 Bop(And,Mop(Not,bVar"b'27"),
24361                     Bop(And,Mop(Not,bVar"b'10"),
24362                         Bop(And,Mop(Not,bVar"b'9"),
24363                             Bop(And,Mop(Not,bVar"b'8"),
24364                                 Bop(And,Mop(Not,bVar"b'7"),
24365                                     Bop(And,Mop(Not,bVar"b'6"),
24366                                         Bop(And,bVar"b'5",
24367                                             Bop(And,Mop(Not,bVar"b'4"),
24368                                                 Bop(And,
24369                                                     Mop(Not,bVar"b'3"),
24370                                                     Bop(And,bVar"b'2",
24371                                                         Bop(And,
24372                                                             bVar"b'1",
24373                                                             bVar"b'0")))))))))))),
24374             Call
24375               ("ArithR",CTy"instruction",
24376                Call
24377                  ("NOR",CTy"ArithR",
24378                   TP[Mop(Cast(FTy 5),
24379                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24380                             bVar"b'21"]),
24381                      Mop(Cast(FTy 5),
24382                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24383                             bVar"b'16"]),
24384                      Mop(Cast(FTy 5),
24385                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24386                             bVar"b'11"])]))),
24387            (Bop(And,Mop(Not,bVar"b'28"),
24388                 Bop(And,Mop(Not,bVar"b'27"),
24389                     Bop(And,Mop(Not,bVar"b'10"),
24390                         Bop(And,Mop(Not,bVar"b'9"),
24391                             Bop(And,Mop(Not,bVar"b'8"),
24392                                 Bop(And,Mop(Not,bVar"b'7"),
24393                                     Bop(And,Mop(Not,bVar"b'6"),
24394                                         Bop(And,bVar"b'5",
24395                                             Bop(And,Mop(Not,bVar"b'4"),
24396                                                 Bop(And,bVar"b'3",
24397                                                     Bop(And,
24398                                                         Mop(Not,bVar"b'2"),
24399                                                         Bop(And,
24400                                                             bVar"b'1",
24401                                                             Mop(Not,
24402                                                                 bVar"b'0"))))))))))))),
24403             Call
24404               ("ArithR",CTy"instruction",
24405                Call
24406                  ("SLT",CTy"ArithR",
24407                   TP[Mop(Cast(FTy 5),
24408                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24409                             bVar"b'21"]),
24410                      Mop(Cast(FTy 5),
24411                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24412                             bVar"b'16"]),
24413                      Mop(Cast(FTy 5),
24414                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24415                             bVar"b'11"])]))),
24416            (Bop(And,Mop(Not,bVar"b'28"),
24417                 Bop(And,Mop(Not,bVar"b'27"),
24418                     Bop(And,Mop(Not,bVar"b'10"),
24419                         Bop(And,Mop(Not,bVar"b'9"),
24420                             Bop(And,Mop(Not,bVar"b'8"),
24421                                 Bop(And,Mop(Not,bVar"b'7"),
24422                                     Bop(And,Mop(Not,bVar"b'6"),
24423                                         Bop(And,bVar"b'5",
24424                                             Bop(And,Mop(Not,bVar"b'4"),
24425                                                 Bop(And,bVar"b'3",
24426                                                     Bop(And,
24427                                                         Mop(Not,bVar"b'2"),
24428                                                         Bop(And,
24429                                                             bVar"b'1",
24430                                                             bVar"b'0")))))))))))),
24431             Call
24432               ("ArithR",CTy"instruction",
24433                Call
24434                  ("SLTU",CTy"ArithR",
24435                   TP[Mop(Cast(FTy 5),
24436                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24437                             bVar"b'21"]),
24438                      Mop(Cast(FTy 5),
24439                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24440                             bVar"b'16"]),
24441                      Mop(Cast(FTy 5),
24442                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24443                             bVar"b'11"])]))),
24444            (Bop(And,Mop(Not,bVar"b'28"),
24445                 Bop(And,Mop(Not,bVar"b'27"),
24446                     Bop(And,Mop(Not,bVar"b'10"),
24447                         Bop(And,Mop(Not,bVar"b'9"),
24448                             Bop(And,Mop(Not,bVar"b'8"),
24449                                 Bop(And,Mop(Not,bVar"b'7"),
24450                                     Bop(And,Mop(Not,bVar"b'6"),
24451                                         Bop(And,bVar"b'5",
24452                                             Bop(And,Mop(Not,bVar"b'4"),
24453                                                 Bop(And,bVar"b'3",
24454                                                     Bop(And,bVar"b'2",
24455                                                         Bop(And,
24456                                                             Mop(Not,
24457                                                                 bVar"b'1"),
24458                                                             Mop(Not,
24459                                                                 bVar"b'0"))))))))))))),
24460             Call
24461               ("ArithR",CTy"instruction",
24462                Call
24463                  ("DADD",CTy"ArithR",
24464                   TP[Mop(Cast(FTy 5),
24465                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24466                             bVar"b'21"]),
24467                      Mop(Cast(FTy 5),
24468                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24469                             bVar"b'16"]),
24470                      Mop(Cast(FTy 5),
24471                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24472                             bVar"b'11"])]))),
24473            (Bop(And,Mop(Not,bVar"b'28"),
24474                 Bop(And,Mop(Not,bVar"b'27"),
24475                     Bop(And,Mop(Not,bVar"b'10"),
24476                         Bop(And,Mop(Not,bVar"b'9"),
24477                             Bop(And,Mop(Not,bVar"b'8"),
24478                                 Bop(And,Mop(Not,bVar"b'7"),
24479                                     Bop(And,Mop(Not,bVar"b'6"),
24480                                         Bop(And,bVar"b'5",
24481                                             Bop(And,Mop(Not,bVar"b'4"),
24482                                                 Bop(And,bVar"b'3",
24483                                                     Bop(And,bVar"b'2",
24484                                                         Bop(And,
24485                                                             Mop(Not,
24486                                                                 bVar"b'1"),
24487                                                             bVar"b'0")))))))))))),
24488             Call
24489               ("ArithR",CTy"instruction",
24490                Call
24491                  ("DADDU",CTy"ArithR",
24492                   TP[Mop(Cast(FTy 5),
24493                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24494                             bVar"b'21"]),
24495                      Mop(Cast(FTy 5),
24496                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24497                             bVar"b'16"]),
24498                      Mop(Cast(FTy 5),
24499                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24500                             bVar"b'11"])]))),
24501            (Bop(And,Mop(Not,bVar"b'28"),
24502                 Bop(And,Mop(Not,bVar"b'27"),
24503                     Bop(And,Mop(Not,bVar"b'10"),
24504                         Bop(And,Mop(Not,bVar"b'9"),
24505                             Bop(And,Mop(Not,bVar"b'8"),
24506                                 Bop(And,Mop(Not,bVar"b'7"),
24507                                     Bop(And,Mop(Not,bVar"b'6"),
24508                                         Bop(And,bVar"b'5",
24509                                             Bop(And,Mop(Not,bVar"b'4"),
24510                                                 Bop(And,bVar"b'3",
24511                                                     Bop(And,bVar"b'2",
24512                                                         Bop(And,
24513                                                             bVar"b'1",
24514                                                             Mop(Not,
24515                                                                 bVar"b'0"))))))))))))),
24516             Call
24517               ("ArithR",CTy"instruction",
24518                Call
24519                  ("DSUB",CTy"ArithR",
24520                   TP[Mop(Cast(FTy 5),
24521                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24522                             bVar"b'21"]),
24523                      Mop(Cast(FTy 5),
24524                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24525                             bVar"b'16"]),
24526                      Mop(Cast(FTy 5),
24527                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24528                             bVar"b'11"])]))),
24529            (Bop(And,Mop(Not,bVar"b'28"),
24530                 Bop(And,Mop(Not,bVar"b'27"),
24531                     Bop(And,Mop(Not,bVar"b'10"),
24532                         Bop(And,Mop(Not,bVar"b'9"),
24533                             Bop(And,Mop(Not,bVar"b'8"),
24534                                 Bop(And,Mop(Not,bVar"b'7"),
24535                                     Bop(And,Mop(Not,bVar"b'6"),
24536                                         Bop(And,bVar"b'5",
24537                                             Bop(And,Mop(Not,bVar"b'4"),
24538                                                 Bop(And,bVar"b'3",
24539                                                     Bop(And,bVar"b'2",
24540                                                         Bop(And,
24541                                                             bVar"b'1",
24542                                                             bVar"b'0")))))))))))),
24543             Call
24544               ("ArithR",CTy"instruction",
24545                Call
24546                  ("DSUBU",CTy"ArithR",
24547                   TP[Mop(Cast(FTy 5),
24548                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24549                             bVar"b'21"]),
24550                      Mop(Cast(FTy 5),
24551                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24552                             bVar"b'16"]),
24553                      Mop(Cast(FTy 5),
24554                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24555                             bVar"b'11"])]))),
24556            (Bop(And,Mop(Not,bVar"b'28"),
24557                 Bop(And,Mop(Not,bVar"b'27"),
24558                     Bop(And,bVar"b'5",
24559                         Bop(And,bVar"b'4",
24560                             Bop(And,Mop(Not,bVar"b'3"),
24561                                 Bop(And,Mop(Not,bVar"b'2"),
24562                                     Bop(And,Mop(Not,bVar"b'1"),
24563                                         Mop(Not,bVar"b'0")))))))),
24564             Call
24565               ("Trap",CTy"instruction",
24566                Call
24567                  ("TGE",CTy"Trap",
24568                   TP[Mop(Cast(FTy 5),
24569                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24570                             bVar"b'21"]),
24571                      Mop(Cast(FTy 5),
24572                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24573                             bVar"b'16"])]))),
24574            (Bop(And,Mop(Not,bVar"b'28"),
24575                 Bop(And,Mop(Not,bVar"b'27"),
24576                     Bop(And,bVar"b'5",
24577                         Bop(And,bVar"b'4",
24578                             Bop(And,Mop(Not,bVar"b'3"),
24579                                 Bop(And,Mop(Not,bVar"b'2"),
24580                                     Bop(And,Mop(Not,bVar"b'1"),bVar"b'0"))))))),
24581             Call
24582               ("Trap",CTy"instruction",
24583                Call
24584                  ("TGEU",CTy"Trap",
24585                   TP[Mop(Cast(FTy 5),
24586                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24587                             bVar"b'21"]),
24588                      Mop(Cast(FTy 5),
24589                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24590                             bVar"b'16"])]))),
24591            (Bop(And,Mop(Not,bVar"b'28"),
24592                 Bop(And,Mop(Not,bVar"b'27"),
24593                     Bop(And,bVar"b'5",
24594                         Bop(And,bVar"b'4",
24595                             Bop(And,Mop(Not,bVar"b'3"),
24596                                 Bop(And,Mop(Not,bVar"b'2"),
24597                                     Bop(And,bVar"b'1",Mop(Not,bVar"b'0")))))))),
24598             Call
24599               ("Trap",CTy"instruction",
24600                Call
24601                  ("TLT",CTy"Trap",
24602                   TP[Mop(Cast(FTy 5),
24603                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24604                             bVar"b'21"]),
24605                      Mop(Cast(FTy 5),
24606                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24607                             bVar"b'16"])]))),
24608            (Bop(And,Mop(Not,bVar"b'28"),
24609                 Bop(And,Mop(Not,bVar"b'27"),
24610                     Bop(And,bVar"b'5",
24611                         Bop(And,bVar"b'4",
24612                             Bop(And,Mop(Not,bVar"b'3"),
24613                                 Bop(And,Mop(Not,bVar"b'2"),
24614                                     Bop(And,bVar"b'1",bVar"b'0"))))))),
24615             Call
24616               ("Trap",CTy"instruction",
24617                Call
24618                  ("TLTU",CTy"Trap",
24619                   TP[Mop(Cast(FTy 5),
24620                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24621                             bVar"b'21"]),
24622                      Mop(Cast(FTy 5),
24623                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24624                             bVar"b'16"])]))),
24625            (Bop(And,Mop(Not,bVar"b'28"),
24626                 Bop(And,Mop(Not,bVar"b'27"),
24627                     Bop(And,bVar"b'5",
24628                         Bop(And,bVar"b'4",
24629                             Bop(And,Mop(Not,bVar"b'3"),
24630                                 Bop(And,bVar"b'2",
24631                                     Bop(And,Mop(Not,bVar"b'1"),
24632                                         Mop(Not,bVar"b'0")))))))),
24633             Call
24634               ("Trap",CTy"instruction",
24635                Call
24636                  ("TEQ",CTy"Trap",
24637                   TP[Mop(Cast(FTy 5),
24638                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24639                             bVar"b'21"]),
24640                      Mop(Cast(FTy 5),
24641                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24642                             bVar"b'16"])]))),
24643            (Bop(And,Mop(Not,bVar"b'28"),
24644                 Bop(And,Mop(Not,bVar"b'27"),
24645                     Bop(And,bVar"b'5",
24646                         Bop(And,bVar"b'4",
24647                             Bop(And,Mop(Not,bVar"b'3"),
24648                                 Bop(And,bVar"b'2",
24649                                     Bop(And,bVar"b'1",Mop(Not,bVar"b'0")))))))),
24650             Call
24651               ("Trap",CTy"instruction",
24652                Call
24653                  ("TNE",CTy"Trap",
24654                   TP[Mop(Cast(FTy 5),
24655                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24656                             bVar"b'21"]),
24657                      Mop(Cast(FTy 5),
24658                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24659                             bVar"b'16"])]))),
24660            (Bop(And,Mop(Not,bVar"b'28"),
24661                 Bop(And,Mop(Not,bVar"b'27"),
24662                     Bop(And,Mop(Not,bVar"b'25"),
24663                         Bop(And,Mop(Not,bVar"b'24"),
24664                             Bop(And,Mop(Not,bVar"b'23"),
24665                                 Bop(And,Mop(Not,bVar"b'22"),
24666                                     Bop(And,Mop(Not,bVar"b'21"),
24667                                         Bop(And,bVar"b'5",
24668                                             Bop(And,bVar"b'4",
24669                                                 Bop(And,bVar"b'3",
24670                                                     Bop(And,
24671                                                         Mop(Not,bVar"b'2"),
24672                                                         Bop(And,
24673                                                             Mop(Not,
24674                                                                 bVar"b'1"),
24675                                                             Mop(Not,
24676                                                                 bVar"b'0"))))))))))))),
24677             Call
24678               ("Shift",CTy"instruction",
24679                Call
24680                  ("DSLL",CTy"Shift",
24681                   TP[Mop(Cast(FTy 5),
24682                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24683                             bVar"b'16"]),
24684                      Mop(Cast(FTy 5),
24685                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24686                             bVar"b'11"]),
24687                      Mop(Cast(FTy 5),
24688                          LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
24689                             bVar"b'6"])]))),
24690            (Bop(And,Mop(Not,bVar"b'28"),
24691                 Bop(And,Mop(Not,bVar"b'27"),
24692                     Bop(And,Mop(Not,bVar"b'25"),
24693                         Bop(And,Mop(Not,bVar"b'24"),
24694                             Bop(And,Mop(Not,bVar"b'23"),
24695                                 Bop(And,Mop(Not,bVar"b'22"),
24696                                     Bop(And,Mop(Not,bVar"b'21"),
24697                                         Bop(And,bVar"b'5",
24698                                             Bop(And,bVar"b'4",
24699                                                 Bop(And,bVar"b'3",
24700                                                     Bop(And,
24701                                                         Mop(Not,bVar"b'2"),
24702                                                         Bop(And,
24703                                                             bVar"b'1",
24704                                                             Mop(Not,
24705                                                                 bVar"b'0"))))))))))))),
24706             Call
24707               ("Shift",CTy"instruction",
24708                Call
24709                  ("DSRL",CTy"Shift",
24710                   TP[Mop(Cast(FTy 5),
24711                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24712                             bVar"b'16"]),
24713                      Mop(Cast(FTy 5),
24714                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24715                             bVar"b'11"]),
24716                      Mop(Cast(FTy 5),
24717                          LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
24718                             bVar"b'6"])]))),
24719            (Bop(And,Mop(Not,bVar"b'28"),
24720                 Bop(And,Mop(Not,bVar"b'27"),
24721                     Bop(And,Mop(Not,bVar"b'25"),
24722                         Bop(And,Mop(Not,bVar"b'24"),
24723                             Bop(And,Mop(Not,bVar"b'23"),
24724                                 Bop(And,Mop(Not,bVar"b'22"),
24725                                     Bop(And,Mop(Not,bVar"b'21"),
24726                                         Bop(And,bVar"b'5",
24727                                             Bop(And,bVar"b'4",
24728                                                 Bop(And,bVar"b'3",
24729                                                     Bop(And,
24730                                                         Mop(Not,bVar"b'2"),
24731                                                         Bop(And,
24732                                                             bVar"b'1",
24733                                                             bVar"b'0")))))))))))),
24734             Call
24735               ("Shift",CTy"instruction",
24736                Call
24737                  ("DSRA",CTy"Shift",
24738                   TP[Mop(Cast(FTy 5),
24739                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24740                             bVar"b'16"]),
24741                      Mop(Cast(FTy 5),
24742                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24743                             bVar"b'11"]),
24744                      Mop(Cast(FTy 5),
24745                          LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
24746                             bVar"b'6"])]))),
24747            (Bop(And,Mop(Not,bVar"b'28"),
24748                 Bop(And,Mop(Not,bVar"b'27"),
24749                     Bop(And,Mop(Not,bVar"b'25"),
24750                         Bop(And,Mop(Not,bVar"b'24"),
24751                             Bop(And,Mop(Not,bVar"b'23"),
24752                                 Bop(And,Mop(Not,bVar"b'22"),
24753                                     Bop(And,Mop(Not,bVar"b'21"),
24754                                         Bop(And,bVar"b'5",
24755                                             Bop(And,bVar"b'4",
24756                                                 Bop(And,bVar"b'3",
24757                                                     Bop(And,bVar"b'2",
24758                                                         Bop(And,
24759                                                             Mop(Not,
24760                                                                 bVar"b'1"),
24761                                                             Mop(Not,
24762                                                                 bVar"b'0"))))))))))))),
24763             Call
24764               ("Shift",CTy"instruction",
24765                Call
24766                  ("DSLL32",CTy"Shift",
24767                   TP[Mop(Cast(FTy 5),
24768                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24769                             bVar"b'16"]),
24770                      Mop(Cast(FTy 5),
24771                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24772                             bVar"b'11"]),
24773                      Mop(Cast(FTy 5),
24774                          LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
24775                             bVar"b'6"])]))),
24776            (Bop(And,Mop(Not,bVar"b'28"),
24777                 Bop(And,Mop(Not,bVar"b'27"),
24778                     Bop(And,Mop(Not,bVar"b'25"),
24779                         Bop(And,Mop(Not,bVar"b'24"),
24780                             Bop(And,Mop(Not,bVar"b'23"),
24781                                 Bop(And,Mop(Not,bVar"b'22"),
24782                                     Bop(And,Mop(Not,bVar"b'21"),
24783                                         Bop(And,bVar"b'5",
24784                                             Bop(And,bVar"b'4",
24785                                                 Bop(And,bVar"b'3",
24786                                                     Bop(And,bVar"b'2",
24787                                                         Bop(And,
24788                                                             bVar"b'1",
24789                                                             Mop(Not,
24790                                                                 bVar"b'0"))))))))))))),
24791             Call
24792               ("Shift",CTy"instruction",
24793                Call
24794                  ("DSRL32",CTy"Shift",
24795                   TP[Mop(Cast(FTy 5),
24796                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24797                             bVar"b'16"]),
24798                      Mop(Cast(FTy 5),
24799                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24800                             bVar"b'11"]),
24801                      Mop(Cast(FTy 5),
24802                          LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
24803                             bVar"b'6"])]))),
24804            (Bop(And,Mop(Not,bVar"b'28"),
24805                 Bop(And,Mop(Not,bVar"b'27"),
24806                     Bop(And,Mop(Not,bVar"b'25"),
24807                         Bop(And,Mop(Not,bVar"b'24"),
24808                             Bop(And,Mop(Not,bVar"b'23"),
24809                                 Bop(And,Mop(Not,bVar"b'22"),
24810                                     Bop(And,Mop(Not,bVar"b'21"),
24811                                         Bop(And,bVar"b'5",
24812                                             Bop(And,bVar"b'4",
24813                                                 Bop(And,bVar"b'3",
24814                                                     Bop(And,bVar"b'2",
24815                                                         Bop(And,
24816                                                             bVar"b'1",
24817                                                             bVar"b'0")))))))))))),
24818             Call
24819               ("Shift",CTy"instruction",
24820                Call
24821                  ("DSRA32",CTy"Shift",
24822                   TP[Mop(Cast(FTy 5),
24823                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24824                             bVar"b'16"]),
24825                      Mop(Cast(FTy 5),
24826                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24827                             bVar"b'11"]),
24828                      Mop(Cast(FTy 5),
24829                          LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
24830                             bVar"b'6"])]))),
24831            (Bop(And,Mop(Not,bVar"b'28"),bVar"b'27"),
24832             Call
24833               ("Branch",CTy"instruction",
24834                Call
24835                  ("J",CTy"Branch",
24836                   Mop(Cast(FTy 26),
24837                       LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24838                          bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18",
24839                          bVar"b'17",bVar"b'16",bVar"b'15",bVar"b'14",
24840                          bVar"b'13",bVar"b'12",bVar"b'11",bVar"b'10",
24841                          bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6",
24842                          bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2",
24843                          bVar"b'1",bVar"b'0"])))),
24844            (Bop(And,bVar"b'28",
24845                 Bop(And,bVar"b'27",
24846                     Bop(And,Mop(Not,bVar"b'20"),
24847                         Bop(And,Mop(Not,bVar"b'19"),
24848                             Bop(And,Mop(Not,bVar"b'18"),
24849                                 Bop(And,Mop(Not,bVar"b'17"),
24850                                     Mop(Not,bVar"b'16"))))))),
24851             Call
24852               ("Branch",CTy"instruction",
24853                Call
24854                  ("BLEZ",CTy"Branch",
24855                   TP[Mop(Cast(FTy 5),
24856                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24857                             bVar"b'21"]),
24858                      Mop(Cast F16,
24859                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24860                             bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8",
24861                             bVar"b'7",bVar"b'6",bVar"b'5",bVar"b'4",
24862                             bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
24863            (Bop(And,bVar"b'28",Mop(Not,bVar"b'27")),
24864             Call
24865               ("Branch",CTy"instruction",
24866                Call
24867                  ("BEQ",CTy"Branch",
24868                   TP[Mop(Cast(FTy 5),
24869                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
24870                             bVar"b'21"]),
24871                      Mop(Cast(FTy 5),
24872                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
24873                             bVar"b'16"]),
24874                      Mop(Cast F16,
24875                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
24876                             bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8",
24877                             bVar"b'7",bVar"b'6",bVar"b'5",bVar"b'4",
24878                             bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])])))],
24879           Const("ReservedInstruction",CTy"instruction"))))
24880;
24881val COP1InstructionToString_def = Def
24882  ("COP1InstructionToString",Var("i",CTy"instruction"),
24883   CS(Var("i",CTy"instruction"),
24884      [(Call("COP1",CTy"instruction",Var("j",CTy"COP1")),
24885        CS(Var("j",CTy"COP1"),
24886           [(Call("ABS_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
24887             Call
24888               ("op2fpr",sTy,TP[LS"abs.d",Var("fd",FTy 5),Var("fs",FTy 5)])),
24889            (Call("ABS_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
24890             Call
24891               ("op2fpr",sTy,TP[LS"abs.s",Var("fd",FTy 5),Var("fs",FTy 5)])),
24892            (Call
24893               ("ADD_D",CTy"COP1",
24894                TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]),
24895             Call
24896               ("op3fpr",sTy,
24897                TP[LS"add.d",Var("fd",FTy 5),Var("fs",FTy 5),
24898                   Var("ft",FTy 5)])),
24899            (Call
24900               ("ADD_S",CTy"COP1",
24901                TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]),
24902             Call
24903               ("op3fpr",sTy,
24904                TP[LS"add.s",Var("fd",FTy 5),Var("fs",FTy 5),
24905                   Var("ft",FTy 5)])),
24906            (Call("BC1F",CTy"COP1",TP[Var("i",F16),Var("cc",FTy 3)]),
24907             CC[Mop(PadRight,TP[LSC #" ",LN 12,CC[LS"bc1f",LS" "]]),
24908                ITE(EQ(Var("cc",FTy 3),LW(0,3)),LS"",
24909                    CC[LS"$fcc",
24910                       Mop(Cast sTy,Mop(Cast nTy,Var("cc",FTy 3))),LS", "]),
24911                Call
24912                  ("ihex",sTy,
24913                   Bop(Lsl,Mop(Cast F32,Bop(Add,Var("i",F16),LW(1,16))),
24914                       LN 2))]),
24915            (Call("BC1FL",CTy"COP1",TP[Var("i",F16),Var("cc",FTy 3)]),
24916             CC[Mop(PadRight,TP[LSC #" ",LN 12,CC[LS"bc1fl",LS" "]]),
24917                ITE(EQ(Var("cc",FTy 3),LW(0,3)),LS"",
24918                    CC[LS"$fcc",
24919                       Mop(Cast sTy,Mop(Cast nTy,Var("cc",FTy 3))),LS", "]),
24920                Call
24921                  ("ihex",sTy,
24922                   Bop(Lsl,Mop(Cast F32,Bop(Add,Var("i",F16),LW(1,16))),
24923                       LN 2))]),
24924            (Call("BC1T",CTy"COP1",TP[Var("i",F16),Var("cc",FTy 3)]),
24925             CC[Mop(PadRight,TP[LSC #" ",LN 12,CC[LS"bc1t",LS" "]]),
24926                ITE(EQ(Var("cc",FTy 3),LW(0,3)),LS"",
24927                    CC[LS"$fcc",
24928                       Mop(Cast sTy,Mop(Cast nTy,Var("cc",FTy 3))),LS", "]),
24929                Call
24930                  ("ihex",sTy,
24931                   Bop(Lsl,Mop(Cast F32,Bop(Add,Var("i",F16),LW(1,16))),
24932                       LN 2))]),
24933            (Call("BC1TL",CTy"COP1",TP[Var("i",F16),Var("cc",FTy 3)]),
24934             CC[Mop(PadRight,TP[LSC #" ",LN 12,CC[LS"bc1tl",LS" "]]),
24935                ITE(EQ(Var("cc",FTy 3),LW(0,3)),LS"",
24936                    CC[LS"$fcc",
24937                       Mop(Cast sTy,Mop(Cast nTy,Var("cc",FTy 3))),LS", "]),
24938                Call
24939                  ("ihex",sTy,
24940                   Bop(Lsl,Mop(Cast F32,Bop(Add,Var("i",F16),LW(1,16))),
24941                       LN 2))]),
24942            (Call
24943               ("C_cond_D",CTy"COP1",
24944                TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(0,3),Var("cc",FTy 3)]),
24945             Call
24946               ("op2ccfpr",sTy,
24947                TP[LS"c.f.d",Var("fs",FTy 5),Var("ft",FTy 5),
24948                   Var("cc",FTy 3)])),
24949            (Call
24950               ("C_cond_D",CTy"COP1",
24951                TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(1,3),Var("cc",FTy 3)]),
24952             Call
24953               ("op2ccfpr",sTy,
24954                TP[LS"c.un.d",Var("fs",FTy 5),Var("ft",FTy 5),
24955                   Var("cc",FTy 3)])),
24956            (Call
24957               ("C_cond_D",CTy"COP1",
24958                TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(2,3),Var("cc",FTy 3)]),
24959             Call
24960               ("op2ccfpr",sTy,
24961                TP[LS"c.eq.d",Var("fs",FTy 5),Var("ft",FTy 5),
24962                   Var("cc",FTy 3)])),
24963            (Call
24964               ("C_cond_D",CTy"COP1",
24965                TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(3,3),Var("cc",FTy 3)]),
24966             Call
24967               ("op2ccfpr",sTy,
24968                TP[LS"c.ueq.d",Var("fs",FTy 5),Var("ft",FTy 5),
24969                   Var("cc",FTy 3)])),
24970            (Call
24971               ("C_cond_D",CTy"COP1",
24972                TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(4,3),Var("cc",FTy 3)]),
24973             Call
24974               ("op2ccfpr",sTy,
24975                TP[LS"c.olt.d",Var("fs",FTy 5),Var("ft",FTy 5),
24976                   Var("cc",FTy 3)])),
24977            (Call
24978               ("C_cond_D",CTy"COP1",
24979                TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(5,3),Var("cc",FTy 3)]),
24980             Call
24981               ("op2ccfpr",sTy,
24982                TP[LS"c.ult.d",Var("fs",FTy 5),Var("ft",FTy 5),
24983                   Var("cc",FTy 3)])),
24984            (Call
24985               ("C_cond_D",CTy"COP1",
24986                TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(6,3),Var("cc",FTy 3)]),
24987             Call
24988               ("op2ccfpr",sTy,
24989                TP[LS"c.ole.d",Var("fs",FTy 5),Var("ft",FTy 5),
24990                   Var("cc",FTy 3)])),
24991            (Call
24992               ("C_cond_D",CTy"COP1",
24993                TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(7,3),Var("cc",FTy 3)]),
24994             Call
24995               ("op2ccfpr",sTy,
24996                TP[LS"c.ule.d",Var("fs",FTy 5),Var("ft",FTy 5),
24997                   Var("cc",FTy 3)])),
24998            (Call
24999               ("C_cond_S",CTy"COP1",
25000                TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(0,3),Var("cc",FTy 3)]),
25001             Call
25002               ("op2ccfpr",sTy,
25003                TP[LS"c.f.s",Var("fs",FTy 5),Var("ft",FTy 5),
25004                   Var("cc",FTy 3)])),
25005            (Call
25006               ("C_cond_S",CTy"COP1",
25007                TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(1,3),Var("cc",FTy 3)]),
25008             Call
25009               ("op2ccfpr",sTy,
25010                TP[LS"c.un.s",Var("fs",FTy 5),Var("ft",FTy 5),
25011                   Var("cc",FTy 3)])),
25012            (Call
25013               ("C_cond_S",CTy"COP1",
25014                TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(2,3),Var("cc",FTy 3)]),
25015             Call
25016               ("op2ccfpr",sTy,
25017                TP[LS"c.eq.s",Var("fs",FTy 5),Var("ft",FTy 5),
25018                   Var("cc",FTy 3)])),
25019            (Call
25020               ("C_cond_S",CTy"COP1",
25021                TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(3,3),Var("cc",FTy 3)]),
25022             Call
25023               ("op2ccfpr",sTy,
25024                TP[LS"c.ueq.s",Var("fs",FTy 5),Var("ft",FTy 5),
25025                   Var("cc",FTy 3)])),
25026            (Call
25027               ("C_cond_S",CTy"COP1",
25028                TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(4,3),Var("cc",FTy 3)]),
25029             Call
25030               ("op2ccfpr",sTy,
25031                TP[LS"c.olt.s",Var("fs",FTy 5),Var("ft",FTy 5),
25032                   Var("cc",FTy 3)])),
25033            (Call
25034               ("C_cond_S",CTy"COP1",
25035                TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(5,3),Var("cc",FTy 3)]),
25036             Call
25037               ("op2ccfpr",sTy,
25038                TP[LS"c.ult.s",Var("fs",FTy 5),Var("ft",FTy 5),
25039                   Var("cc",FTy 3)])),
25040            (Call
25041               ("C_cond_S",CTy"COP1",
25042                TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(6,3),Var("cc",FTy 3)]),
25043             Call
25044               ("op2ccfpr",sTy,
25045                TP[LS"c.ole.s",Var("fs",FTy 5),Var("ft",FTy 5),
25046                   Var("cc",FTy 3)])),
25047            (Call
25048               ("C_cond_S",CTy"COP1",
25049                TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(7,3),Var("cc",FTy 3)]),
25050             Call
25051               ("op2ccfpr",sTy,
25052                TP[LS"c.ule.s",Var("fs",FTy 5),Var("ft",FTy 5),
25053                   Var("cc",FTy 3)])),
25054            (Call
25055               ("CEIL_L_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25056             Call
25057               ("op2fpr",sTy,
25058                TP[LS"ceil.l.d",Var("fd",FTy 5),Var("fs",FTy 5)])),
25059            (Call
25060               ("CEIL_L_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25061             Call
25062               ("op2fpr",sTy,
25063                TP[LS"ceil.l.s",Var("fd",FTy 5),Var("fs",FTy 5)])),
25064            (Call
25065               ("CEIL_W_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25066             Call
25067               ("op2fpr",sTy,
25068                TP[LS"ceil.w.d",Var("fd",FTy 5),Var("fs",FTy 5)])),
25069            (Call
25070               ("CEIL_W_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25071             Call
25072               ("op2fpr",sTy,
25073                TP[LS"ceil.w.s",Var("fd",FTy 5),Var("fs",FTy 5)])),
25074            (Call("CFC1",CTy"COP1",TP[Var("rt",FTy 5),Var("fs",FTy 5)]),
25075             Call
25076               ("op2rcfpr",sTy,
25077                TP[LS"cfc1",Var("rt",FTy 5),Var("fs",FTy 5)])),
25078            (Call("CTC1",CTy"COP1",TP[Var("rt",FTy 5),Var("fs",FTy 5)]),
25079             Call
25080               ("op2rcfpr",sTy,
25081                TP[LS"ctc1",Var("rt",FTy 5),Var("fs",FTy 5)])),
25082            (Call("CVT_D_L",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25083             Call
25084               ("op2fpr",sTy,
25085                TP[LS"cvt.d.l",Var("fd",FTy 5),Var("fs",FTy 5)])),
25086            (Call("CVT_D_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25087             Call
25088               ("op2fpr",sTy,
25089                TP[LS"cvt.d.s",Var("fd",FTy 5),Var("fs",FTy 5)])),
25090            (Call("CVT_D_W",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25091             Call
25092               ("op2fpr",sTy,
25093                TP[LS"cvt.d.w",Var("fd",FTy 5),Var("fs",FTy 5)])),
25094            (Call("CVT_L_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25095             Call
25096               ("op2fpr",sTy,
25097                TP[LS"cvt.l.d",Var("fd",FTy 5),Var("fs",FTy 5)])),
25098            (Call("CVT_L_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25099             Call
25100               ("op2fpr",sTy,
25101                TP[LS"cvt.l.s",Var("fd",FTy 5),Var("fs",FTy 5)])),
25102            (Call("CVT_S_L",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25103             Call
25104               ("op2fpr",sTy,
25105                TP[LS"cvt.s.l",Var("fd",FTy 5),Var("fs",FTy 5)])),
25106            (Call("CVT_S_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25107             Call
25108               ("op2fpr",sTy,
25109                TP[LS"cvt.s.d",Var("fd",FTy 5),Var("fs",FTy 5)])),
25110            (Call("CVT_S_W",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25111             Call
25112               ("op2fpr",sTy,
25113                TP[LS"cvt.s.w",Var("fd",FTy 5),Var("fs",FTy 5)])),
25114            (Call("CVT_W_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25115             Call
25116               ("op2fpr",sTy,
25117                TP[LS"cvt.w.d",Var("fd",FTy 5),Var("fs",FTy 5)])),
25118            (Call("CVT_W_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25119             Call
25120               ("op2fpr",sTy,
25121                TP[LS"cvt.w.s",Var("fd",FTy 5),Var("fs",FTy 5)])),
25122            (Call
25123               ("DIV_D",CTy"COP1",
25124                TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]),
25125             Call
25126               ("op3fpr",sTy,
25127                TP[LS"div.d",Var("fd",FTy 5),Var("fs",FTy 5),
25128                   Var("ft",FTy 5)])),
25129            (Call
25130               ("DIV_S",CTy"COP1",
25131                TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]),
25132             Call
25133               ("op3fpr",sTy,
25134                TP[LS"div.s",Var("fd",FTy 5),Var("fs",FTy 5),
25135                   Var("ft",FTy 5)])),
25136            (Call("DMFC1",CTy"COP1",TP[Var("rt",FTy 5),Var("fs",FTy 5)]),
25137             Call
25138               ("op2rfpr",sTy,
25139                TP[LS"dmfc1",Var("rt",FTy 5),Var("fs",FTy 5)])),
25140            (Call("DMTC1",CTy"COP1",TP[Var("rt",FTy 5),Var("fs",FTy 5)]),
25141             Call
25142               ("op2rfpr",sTy,
25143                TP[LS"dmtc1",Var("rt",FTy 5),Var("fs",FTy 5)])),
25144            (Call
25145               ("FLOOR_L_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25146             Call
25147               ("op2fpr",sTy,
25148                TP[LS"floor.l.d",Var("fd",FTy 5),Var("fs",FTy 5)])),
25149            (Call
25150               ("FLOOR_L_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25151             Call
25152               ("op2fpr",sTy,
25153                TP[LS"floor.l.s",Var("fd",FTy 5),Var("fs",FTy 5)])),
25154            (Call
25155               ("FLOOR_W_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25156             Call
25157               ("op2fpr",sTy,
25158                TP[LS"floor.w.d",Var("fd",FTy 5),Var("fs",FTy 5)])),
25159            (Call
25160               ("FLOOR_W_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25161             Call
25162               ("op2fpr",sTy,
25163                TP[LS"floor.w.s",Var("fd",FTy 5),Var("fs",FTy 5)])),
25164            (Call
25165               ("LDC1",CTy"COP1",
25166                TP[Var("ft",FTy 5),Var("offset",F16),Var("base",FTy 5)]),
25167             Call
25168               ("opfpmem",sTy,
25169                TP[LS"ldc1",Var("ft",FTy 5),Var("base",FTy 5),
25170                   Var("offset",F16)])),
25171            (Call
25172               ("LDXC1",CTy"COP1",
25173                TP[Var("fs",FTy 5),Var("index",FTy 5),Var("base",FTy 5)]),
25174             Call
25175               ("opfpmem2",sTy,
25176                TP[LS"ldxc1",Var("fs",FTy 5),Var("base",FTy 5),
25177                   Var("index",FTy 5)])),
25178            (Call
25179               ("LWC1",CTy"COP1",
25180                TP[Var("ft",FTy 5),Var("offset",F16),Var("base",FTy 5)]),
25181             Call
25182               ("opfpmem",sTy,
25183                TP[LS"lwc1",Var("ft",FTy 5),Var("base",FTy 5),
25184                   Var("offset",F16)])),
25185            (Call
25186               ("LWXC1",CTy"COP1",
25187                TP[Var("ft",FTy 5),Var("index",FTy 5),Var("base",FTy 5)]),
25188             Call
25189               ("opfpmem2",sTy,
25190                TP[LS"lwxc1",Var("ft",FTy 5),Var("base",FTy 5),
25191                   Var("index",FTy 5)])),
25192            (Call("MFC1",CTy"COP1",TP[Var("rt",FTy 5),Var("fs",FTy 5)]),
25193             Call
25194               ("op2rfpr",sTy,TP[LS"mfc1",Var("rt",FTy 5),Var("fs",FTy 5)])),
25195            (Call
25196               ("MADD_D",CTy"COP1",
25197                TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5),
25198                   Var("ft",FTy 5)]),
25199             Call
25200               ("op4fpr",sTy,
25201                TP[LS"madd.d",Var("fd",FTy 5),Var("fr",FTy 5),
25202                   Var("fs",FTy 5),Var("ft",FTy 5)])),
25203            (Call
25204               ("MADD_S",CTy"COP1",
25205                TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5),
25206                   Var("ft",FTy 5)]),
25207             Call
25208               ("op4fpr",sTy,
25209                TP[LS"madd.s",Var("fd",FTy 5),Var("fr",FTy 5),
25210                   Var("fs",FTy 5),Var("ft",FTy 5)])),
25211            (Call
25212               ("MSUB_D",CTy"COP1",
25213                TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5),
25214                   Var("ft",FTy 5)]),
25215             Call
25216               ("op4fpr",sTy,
25217                TP[LS"msub.d",Var("fd",FTy 5),Var("fr",FTy 5),
25218                   Var("fs",FTy 5),Var("ft",FTy 5)])),
25219            (Call
25220               ("MSUB_S",CTy"COP1",
25221                TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5),
25222                   Var("ft",FTy 5)]),
25223             Call
25224               ("op4fpr",sTy,
25225                TP[LS"msub.s",Var("fd",FTy 5),Var("fr",FTy 5),
25226                   Var("fs",FTy 5),Var("ft",FTy 5)])),
25227            (Call("MOV_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25228             Call
25229               ("op2fpr",sTy,TP[LS"mov.d",Var("fd",FTy 5),Var("fs",FTy 5)])),
25230            (Call("MOV_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25231             Call
25232               ("op2fpr",sTy,TP[LS"mov.s",Var("fd",FTy 5),Var("fs",FTy 5)])),
25233            (Call
25234               ("MOVF",CTy"COP1",
25235                TP[Var("rd",FTy 5),Var("rs",FTy 5),Var("cc",FTy 3)]),
25236             CC[Call
25237                  ("op2r",sTy,TP[LS"movf",Var("rd",FTy 5),Var("rs",FTy 5)]),
25238                LS", $fcc",Mop(Cast sTy,Mop(Cast nTy,Var("cc",FTy 3)))]),
25239            (Call
25240               ("MOVF_D",CTy"COP1",
25241                TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)]),
25242             CC[Call
25243                  ("op2fpr",sTy,
25244                   TP[LS"movf.d",Var("fd",FTy 5),Var("fs",FTy 5)]),
25245                LS", $fcc",Mop(Cast sTy,Mop(Cast nTy,Var("cc",FTy 3)))]),
25246            (Call
25247               ("MOVF_S",CTy"COP1",
25248                TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)]),
25249             CC[Call
25250                  ("op2fpr",sTy,
25251                   TP[LS"movf.s",Var("fd",FTy 5),Var("fs",FTy 5)]),
25252                LS", $fcc",Mop(Cast sTy,Mop(Cast nTy,Var("cc",FTy 3)))]),
25253            (Call
25254               ("MOVN_D",CTy"COP1",
25255                TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)]),
25256             CC[Call
25257                  ("op2fpr",sTy,
25258                   TP[LS"movn.d",Var("fd",FTy 5),Var("fs",FTy 5)]),LS", ",
25259                Call("reg_name",sTy,Var("rt",FTy 5))]),
25260            (Call
25261               ("MOVN_S",CTy"COP1",
25262                TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)]),
25263             CC[Call
25264                  ("op2fpr",sTy,
25265                   TP[LS"movn.s",Var("fd",FTy 5),Var("fs",FTy 5)]),LS", ",
25266                Call("reg_name",sTy,Var("rt",FTy 5))]),
25267            (Call
25268               ("MOVT",CTy"COP1",
25269                TP[Var("rd",FTy 5),Var("rs",FTy 5),Var("cc",FTy 3)]),
25270             CC[Call
25271                  ("op2r",sTy,TP[LS"movt",Var("rd",FTy 5),Var("rs",FTy 5)]),
25272                LS", ",LS", $fcc",
25273                Mop(Cast sTy,Mop(Cast nTy,Var("cc",FTy 3)))]),
25274            (Call
25275               ("MOVT_D",CTy"COP1",
25276                TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)]),
25277             CC[Call
25278                  ("op2fpr",sTy,
25279                   TP[LS"movt.d",Var("fd",FTy 5),Var("fs",FTy 5)]),
25280                LS", $fcc",Mop(Cast sTy,Mop(Cast nTy,Var("cc",FTy 3)))]),
25281            (Call
25282               ("MOVT_S",CTy"COP1",
25283                TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)]),
25284             CC[Call
25285                  ("op2fpr",sTy,
25286                   TP[LS"movt.s",Var("fd",FTy 5),Var("fs",FTy 5)]),
25287                LS", $fcc",Mop(Cast sTy,Mop(Cast nTy,Var("cc",FTy 3)))]),
25288            (Call
25289               ("MOVZ_D",CTy"COP1",
25290                TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)]),
25291             CC[Call
25292                  ("op2fpr",sTy,
25293                   TP[LS"movz.d",Var("fd",FTy 5),Var("fs",FTy 5)]),LS", ",
25294                Call("reg_name",sTy,Var("rt",FTy 5))]),
25295            (Call
25296               ("MOVZ_S",CTy"COP1",
25297                TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)]),
25298             CC[Call
25299                  ("op2fpr",sTy,
25300                   TP[LS"movz.s",Var("fd",FTy 5),Var("fs",FTy 5)]),LS", ",
25301                Call("reg_name",sTy,Var("rt",FTy 5))]),
25302            (Call("MTC1",CTy"COP1",TP[Var("rt",FTy 5),Var("fs",FTy 5)]),
25303             Call
25304               ("op2rfpr",sTy,TP[LS"mtc1",Var("rt",FTy 5),Var("fs",FTy 5)])),
25305            (Call
25306               ("MUL_D",CTy"COP1",
25307                TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]),
25308             Call
25309               ("op3fpr",sTy,
25310                TP[LS"mul.d",Var("fd",FTy 5),Var("fs",FTy 5),
25311                   Var("ft",FTy 5)])),
25312            (Call
25313               ("MUL_S",CTy"COP1",
25314                TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]),
25315             Call
25316               ("op3fpr",sTy,
25317                TP[LS"mul.s",Var("fd",FTy 5),Var("fs",FTy 5),
25318                   Var("ft",FTy 5)])),
25319            (Call("NEG_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25320             Call
25321               ("op2fpr",sTy,TP[LS"neg.d",Var("fd",FTy 5),Var("fs",FTy 5)])),
25322            (Call("NEG_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25323             Call
25324               ("op2fpr",sTy,TP[LS"neg.s",Var("fd",FTy 5),Var("fs",FTy 5)])),
25325            (Call
25326               ("ROUND_L_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25327             Call
25328               ("op2fpr",sTy,
25329                TP[LS"round.l.d",Var("fd",FTy 5),Var("fs",FTy 5)])),
25330            (Call
25331               ("ROUND_L_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25332             Call
25333               ("op2fpr",sTy,
25334                TP[LS"round.l.s",Var("fd",FTy 5),Var("fs",FTy 5)])),
25335            (Call
25336               ("ROUND_W_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25337             Call
25338               ("op2fpr",sTy,
25339                TP[LS"round.w.d",Var("fd",FTy 5),Var("fs",FTy 5)])),
25340            (Call
25341               ("ROUND_W_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25342             Call
25343               ("op2fpr",sTy,
25344                TP[LS"round.w.s",Var("fd",FTy 5),Var("fs",FTy 5)])),
25345            (Call
25346               ("SDC1",CTy"COP1",
25347                TP[Var("ft",FTy 5),Var("offset",F16),Var("base",FTy 5)]),
25348             Call
25349               ("opfpmem",sTy,
25350                TP[LS"sdc1",Var("ft",FTy 5),Var("base",FTy 5),
25351                   Var("offset",F16)])),
25352            (Call
25353               ("SDXC1",CTy"COP1",
25354                TP[Var("fs",FTy 5),Var("index",FTy 5),Var("base",FTy 5)]),
25355             Call
25356               ("opfpmem2",sTy,
25357                TP[LS"sdxc1",Var("fs",FTy 5),Var("base",FTy 5),
25358                   Var("index",FTy 5)])),
25359            (Call
25360               ("SWC1",CTy"COP1",
25361                TP[Var("ft",FTy 5),Var("offset",F16),Var("base",FTy 5)]),
25362             Call
25363               ("opfpmem",sTy,
25364                TP[LS"swc1",Var("ft",FTy 5),Var("base",FTy 5),
25365                   Var("offset",F16)])),
25366            (Call
25367               ("SWXC1",CTy"COP1",
25368                TP[Var("ft",FTy 5),Var("offset",FTy 5),Var("base",FTy 5)]),
25369             Call
25370               ("opfpmem2",sTy,
25371                TP[LS"swxc1",Var("ft",FTy 5),Var("base",FTy 5),
25372                   Var("offset",FTy 5)])),
25373            (Call
25374               ("SUB_D",CTy"COP1",
25375                TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]),
25376             Call
25377               ("op3fpr",sTy,
25378                TP[LS"sub.d",Var("fd",FTy 5),Var("fs",FTy 5),
25379                   Var("ft",FTy 5)])),
25380            (Call
25381               ("SUB_S",CTy"COP1",
25382                TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]),
25383             Call
25384               ("op3fpr",sTy,
25385                TP[LS"sub.s",Var("fd",FTy 5),Var("fs",FTy 5),
25386                   Var("ft",FTy 5)])),
25387            (Call("SQRT_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25388             Call
25389               ("op2fpr",sTy,
25390                TP[LS"sqrt.d",Var("fd",FTy 5),Var("fs",FTy 5)])),
25391            (Call("SQRT_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25392             Call
25393               ("op2fpr",sTy,
25394                TP[LS"sqrt.s",Var("fd",FTy 5),Var("fs",FTy 5)])),
25395            (Call
25396               ("TRUNC_L_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25397             Call
25398               ("op2fpr",sTy,
25399                TP[LS"trunc.l.d",Var("fd",FTy 5),Var("fs",FTy 5)])),
25400            (Call
25401               ("TRUNC_L_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25402             Call
25403               ("op2fpr",sTy,
25404                TP[LS"trunc.l.s",Var("fd",FTy 5),Var("fs",FTy 5)])),
25405            (Call
25406               ("TRUNC_W_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25407             Call
25408               ("op2fpr",sTy,
25409                TP[LS"trunc.w.d",Var("fd",FTy 5),Var("fs",FTy 5)])),
25410            (Call
25411               ("TRUNC_W_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
25412             Call
25413               ("op2fpr",sTy,
25414                TP[LS"trunc.w.s",Var("fd",FTy 5),Var("fs",FTy 5)])),
25415            (Const("UnknownFPInstruction",CTy"COP1"),
25416             LS"Unknown floating point instruction")])),
25417       (AVar(CTy"instruction"),LS"Unmatched floating point instruction")]))
25418;
25419val COP1Encode_def = Def
25420  ("COP1Encode",Var("i",CTy"instruction"),CC[LW(17,6),LW(0,26)])
25421;
25422val gr_def = Def
25423  ("gr",Var("n",FTy 5),
25424   CC[LS"$",Mop(Cast sTy,Mop(Cast nTy,Var("n",FTy 5)))])
25425;
25426val cr_def = Def
25427  ("cr",Var("n",FTy 5),
25428   CC[LS"c",Mop(Cast sTy,Mop(Cast nTy,Var("n",FTy 5)))])
25429;
25430val imm_def = Def
25431  ("imm",Var("n",BTy"N"),
25432   ITE(Bop(Ult,Var("n",BTy"N"),LY(10,"N")),Mop(Cast sTy,Var("n",BTy"N")),
25433       CC[LS"0x",Mop(ToLower,Mop(Cast sTy,Var("n",BTy"N")))]))
25434;
25435val op_cr_def = Def
25436  ("op_cr",TP[sVar"op",Var("cr1",FTy 5)],
25437   CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]),
25438      Call("cr",sTy,Var("cr1",FTy 5))])
25439;
25440val op_gr_def = Def
25441  ("op_gr",TP[sVar"op",Var("r1",FTy 5)],
25442   CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]),
25443      Call("gr",sTy,Var("r1",FTy 5))])
25444;
25445val op_gr_imm_def = Def
25446  ("op_gr_imm",TP[sVar"op",Var("gr1",FTy 5),Var("i",BTy"N")],
25447   CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]),
25448      Call("gr",sTy,Var("gr1",FTy 5)),LS", ",
25449      Call("imm",sTy,Var("i",BTy"N"))])
25450;
25451val op_cr_imm_def = Def
25452  ("op_cr_imm",TP[sVar"op",Var("cr1",FTy 5),Var("i",BTy"N")],
25453   CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]),
25454      Call("cr",sTy,Var("cr1",FTy 5)),LS", ",
25455      Call("imm",sTy,Var("i",BTy"N"))])
25456;
25457val op_cr_gr_def = Def
25458  ("op_cr_gr",TP[sVar"op",Var("cr1",FTy 5),Var("r1",FTy 5)],
25459   CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]),
25460      Call("cr",sTy,Var("cr1",FTy 5)),LS", ",
25461      Call("gr",sTy,Var("r1",FTy 5))])
25462;
25463val op_gr_cr_def = Def
25464  ("op_gr_cr",TP[sVar"op",Var("r1",FTy 5),Var("cr1",FTy 5)],
25465   CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]),
25466      Call("gr",sTy,Var("r1",FTy 5)),LS", ",
25467      Call("cr",sTy,Var("cr1",FTy 5))])
25468;
25469val op_cr_cr_def = Def
25470  ("op_cr_cr",TP[sVar"op",Var("cr1",FTy 5),Var("cr2",FTy 5)],
25471   CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]),
25472      Call("cr",sTy,Var("cr1",FTy 5)),LS", ",
25473      Call("cr",sTy,Var("cr2",FTy 5))])
25474;
25475val op_cr_cr_gr_def = Def
25476  ("op_cr_cr_gr",
25477   TP[sVar"op",Var("cr1",FTy 5),Var("cr2",FTy 5),Var("r1",FTy 5)],
25478   CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]),
25479      Call("cr",sTy,Var("cr1",FTy 5)),LS", ",
25480      Call("cr",sTy,Var("cr2",FTy 5)),LS", ",
25481      Call("gr",sTy,Var("r1",FTy 5))])
25482;
25483val op_cr_cr_imm_def = Def
25484  ("op_cr_cr_imm",
25485   TP[sVar"op",Var("cr1",FTy 5),Var("cr2",FTy 5),Var("i",BTy"N")],
25486   CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]),
25487      Call("cr",sTy,Var("cr1",FTy 5)),LS", ",
25488      Call("cr",sTy,Var("cr2",FTy 5)),LS", ",
25489      Call("imm",sTy,Var("i",BTy"N"))])
25490;
25491val op_cr_cr_cr_def = Def
25492  ("op_cr_cr_cr",
25493   TP[sVar"op",Var("cr1",FTy 5),Var("cr2",FTy 5),Var("cr3",FTy 5)],
25494   CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]),
25495      Call("cr",sTy,Var("cr1",FTy 5)),LS", ",
25496      Call("cr",sTy,Var("cr2",FTy 5)),LS", ",
25497      Call("cr",sTy,Var("cr3",FTy 5))])
25498;
25499val op_gr_cr_cr_def = Def
25500  ("op_gr_cr_cr",
25501   TP[sVar"op",Var("r1",FTy 5),Var("cr1",FTy 5),Var("cr2",FTy 5)],
25502   CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]),
25503      Call("gr",sTy,Var("r1",FTy 5)),LS", ",
25504      Call("cr",sTy,Var("cr1",FTy 5)),LS", ",
25505      Call("cr",sTy,Var("cr2",FTy 5))])
25506;
25507val op_gr_cr_gr_imm_def = Def
25508  ("op_gr_cr_gr_imm",
25509   TP[sVar"op",Var("r1",FTy 5),Var("cr1",FTy 5),Var("r2",FTy 5),
25510      Var("i",BTy"N")],
25511   CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]),
25512      Call("gr",sTy,Var("r1",FTy 5)),LS", ",
25513      Call("cr",sTy,Var("cr1",FTy 5)),LS", ",
25514      Call("gr",sTy,Var("r2",FTy 5)),LS", ",
25515      Call("imm",sTy,Var("i",BTy"N"))])
25516;
25517val op_cr_cr_gr_imm_def = Def
25518  ("op_cr_cr_gr_imm",
25519   TP[sVar"op",Var("cr1",FTy 5),Var("cr2",FTy 5),Var("r1",FTy 5),
25520      Var("i",BTy"N")],
25521   CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]),
25522      Call("cr",sTy,Var("cr1",FTy 5)),LS", ",
25523      Call("cr",sTy,Var("cr2",FTy 5)),LS", ",
25524      Call("gr",sTy,Var("r1",FTy 5)),LS", ",
25525      Call("imm",sTy,Var("i",BTy"N"))])
25526;
25527val op_gr_gr_cr_def = Def
25528  ("op_gr_gr_cr",
25529   TP[sVar"op",Var("r1",FTy 5),Var("r2",FTy 5),Var("cr1",FTy 5)],
25530   CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]),
25531      Call("gr",sTy,Var("r1",FTy 5)),LS", ",
25532      Call("gr",sTy,Var("r2",FTy 5)),LS", ",
25533      Call("cr",sTy,Var("cr1",FTy 5))])
25534;
25535val COP2InstructionToString_def = Def
25536  ("COP2InstructionToString",Var("i",CTy"instruction"),
25537   CS(Var("i",CTy"instruction"),
25538      [(Call
25539          ("COP2",CTy"instruction",
25540           Call("CHERICOP2",CTy"COP2",Var("j",CTy"CHERICOP2"))),
25541        CS(Var("j",CTy"CHERICOP2"),
25542           [(Const("DumpCapReg",CTy"CHERICOP2"),LS"mtc2 ?,?,6"),
25543            (Call
25544               ("CGet",CTy"CHERICOP2",
25545                Call
25546                  ("CGetBase",CTy"CGet",
25547                   TP[Var("rd",FTy 5),Var("cb",FTy 5)])),
25548             Call
25549               ("op_gr_cr",sTy,
25550                TP[LS"cgetbase",Var("rd",FTy 5),Var("cb",FTy 5)])),
25551            (Call
25552               ("CGet",CTy"CHERICOP2",
25553                Call
25554                  ("CGetOffset",CTy"CGet",
25555                   TP[Var("rd",FTy 5),Var("cb",FTy 5)])),
25556             Call
25557               ("op_gr_cr",sTy,
25558                TP[LS"cgetoffset",Var("rd",FTy 5),Var("cb",FTy 5)])),
25559            (Call
25560               ("CGet",CTy"CHERICOP2",
25561                Call
25562                  ("CGetLen",CTy"CGet",TP[Var("rd",FTy 5),Var("cb",FTy 5)])),
25563             Call
25564               ("op_gr_cr",sTy,
25565                TP[LS"cgetlen",Var("rd",FTy 5),Var("cb",FTy 5)])),
25566            (Call
25567               ("CGet",CTy"CHERICOP2",
25568                Call
25569                  ("CGetTag",CTy"CGet",TP[Var("rd",FTy 5),Var("cb",FTy 5)])),
25570             Call
25571               ("op_gr_cr",sTy,
25572                TP[LS"cgettag",Var("rd",FTy 5),Var("cb",FTy 5)])),
25573            (Call
25574               ("CGet",CTy"CHERICOP2",
25575                Call
25576                  ("CGetSealed",CTy"CGet",
25577                   TP[Var("rd",FTy 5),Var("cb",FTy 5)])),
25578             Call
25579               ("op_gr_cr",sTy,
25580                TP[LS"cgetsealed",Var("rd",FTy 5),Var("cb",FTy 5)])),
25581            (Call
25582               ("CGet",CTy"CHERICOP2",
25583                Call
25584                  ("CGetPerm",CTy"CGet",
25585                   TP[Var("rd",FTy 5),Var("cb",FTy 5)])),
25586             Call
25587               ("op_gr_cr",sTy,
25588                TP[LS"cgetperm",Var("rd",FTy 5),Var("cb",FTy 5)])),
25589            (Call
25590               ("CGet",CTy"CHERICOP2",
25591                Call
25592                  ("CGetType",CTy"CGet",
25593                   TP[Var("rd",FTy 5),Var("cb",FTy 5)])),
25594             Call
25595               ("op_gr_cr",sTy,
25596                TP[LS"cgettype",Var("rd",FTy 5),Var("cb",FTy 5)])),
25597            (Call
25598               ("CGet",CTy"CHERICOP2",
25599                Call("CGetPCC",CTy"CGet",Var("cd",FTy 5))),
25600             Call("op_cr",sTy,TP[LS"cgetpcc",Var("cd",FTy 5)])),
25601            (Call
25602               ("CGet",CTy"CHERICOP2",
25603                Call
25604                  ("CGetPCCSetOffset",CTy"CGet",
25605                   TP[Var("cd",FTy 5),Var("rs",FTy 5)])),
25606             Call
25607               ("op_cr_gr",sTy,
25608                TP[LS"cgetpccsetoffset",Var("cd",FTy 5),Var("rs",FTy 5)])),
25609            (Call
25610               ("CGet",CTy"CHERICOP2",
25611                Call("CGetCause",CTy"CGet",Var("rd",FTy 5))),
25612             Call("op_gr",sTy,TP[LS"cgetcause",Var("rd",FTy 5)])),
25613            (Call
25614               ("CSet",CTy"CHERICOP2",
25615                Call("CSetCause",CTy"CSet",Var("rt",FTy 5))),
25616             Call("op_gr",sTy,TP[LS"csetcause",Var("rt",FTy 5)])),
25617            (Call
25618               ("CSet",CTy"CHERICOP2",
25619                Call
25620                  ("CSetBounds",CTy"CSet",
25621                   TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)])),
25622             Call
25623               ("op_cr_cr_gr",sTy,
25624                TP[LS"csetbounds",Var("cd",FTy 5),Var("cb",FTy 5),
25625                   Var("rt",FTy 5)])),
25626            (Call
25627               ("CSet",CTy"CHERICOP2",
25628                Call
25629                  ("CSetBoundsExact",CTy"CSet",
25630                   TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)])),
25631             Call
25632               ("op_cr_cr_gr",sTy,
25633                TP[LS"csetboundsexact",Var("cd",FTy 5),Var("cb",FTy 5),
25634                   Var("rt",FTy 5)])),
25635            (Call
25636               ("CSet",CTy"CHERICOP2",
25637                Call
25638                  ("CSetBoundsImmediate",CTy"CSet",
25639                   TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("len",FTy 11)])),
25640             Call
25641               ("op_cr_cr_imm",sTy,
25642                TP[LS"csetboundsimmediate",Var("cd",FTy 5),
25643                   Var("cb",FTy 5),Var("len",FTy 11)])),
25644            (Call
25645               ("CSet",CTy"CHERICOP2",
25646                Call
25647                  ("CIncOffset",CTy"CSet",
25648                   TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)])),
25649             Call
25650               ("op_cr_cr_gr",sTy,
25651                TP[LS"cincoffset",Var("cd",FTy 5),Var("cb",FTy 5),
25652                   Var("rt",FTy 5)])),
25653            (Call
25654               ("CSet",CTy"CHERICOP2",
25655                Call
25656                  ("CIncOffsetImmediate",CTy"CSet",
25657                   TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("inc",FTy 11)])),
25658             Call
25659               ("op_cr_cr_imm",sTy,
25660                TP[LS"cincoffsetimmediate",Var("cd",FTy 5),
25661                   Var("cb",FTy 5),Var("inc",FTy 11)])),
25662            (Call
25663               ("CSet",CTy"CHERICOP2",
25664                Call
25665                  ("CClearRegs",CTy"CSet",
25666                   TP[Var("regset",FTy 5),Var("mask",F16)])),
25667             Call
25668               ("op_gr_imm",sTy,
25669                TP[LS"cclearregs",Var("regset",FTy 5),Var("mask",F16)])),
25670            (Call
25671               ("CSet",CTy"CHERICOP2",
25672                Call
25673                  ("CClearTag",CTy"CSet",
25674                   TP[Var("cd",FTy 5),Var("cb",FTy 5)])),
25675             Call
25676               ("op_cr_cr",sTy,
25677                TP[LS"ccleartag",Var("cd",FTy 5),Var("cb",FTy 5)])),
25678            (Call
25679               ("CSet",CTy"CHERICOP2",
25680                Call
25681                  ("CAndPerm",CTy"CSet",
25682                   TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)])),
25683             Call
25684               ("op_cr_cr_gr",sTy,
25685                TP[LS"candperm",Var("cd",FTy 5),Var("cb",FTy 5),
25686                   Var("rt",FTy 5)])),
25687            (Call
25688               ("CSet",CTy"CHERICOP2",
25689                Call
25690                  ("CSetOffset",CTy"CSet",
25691                   TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)])),
25692             Call
25693               ("op_cr_cr_gr",sTy,
25694                TP[LS"csetoffset",Var("cd",FTy 5),Var("cb",FTy 5),
25695                   Var("rt",FTy 5)])),
25696            (Call
25697               ("CSub",CTy"CHERICOP2",
25698                TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("ct",FTy 5)]),
25699             Call
25700               ("op_gr_cr_cr",sTy,
25701                TP[LS"csub",Var("rd",FTy 5),Var("cb",FTy 5),
25702                   Var("ct",FTy 5)])),
25703            (Call
25704               ("CCheck",CTy"CHERICOP2",
25705                Call
25706                  ("CCheckPerm",CTy"CCheck",
25707                   TP[Var("cs",FTy 5),Var("rt",FTy 5)])),
25708             Call
25709               ("op_cr_gr",sTy,
25710                TP[LS"ccheckperm",Var("cs",FTy 5),Var("rt",FTy 5)])),
25711            (Call
25712               ("CCheck",CTy"CHERICOP2",
25713                Call
25714                  ("CCheckType",CTy"CCheck",
25715                   TP[Var("cs",FTy 5),Var("cb",FTy 5)])),
25716             Call
25717               ("op_cr_cr",sTy,
25718                TP[LS"cchecktype",Var("cs",FTy 5),Var("cb",FTy 5)])),
25719            (Call
25720               ("CSet",CTy"CHERICOP2",
25721                Call
25722                  ("CFromPtr",CTy"CSet",
25723                   TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)])),
25724             Call
25725               ("op_cr_cr_gr",sTy,
25726                TP[LS"cfromptr",Var("cd",FTy 5),Var("cb",FTy 5),
25727                   Var("rt",FTy 5)])),
25728            (Call
25729               ("CGet",CTy"CHERICOP2",
25730                Call
25731                  ("CToPtr",CTy"CGet",
25732                   TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("ct",FTy 5)])),
25733             Call
25734               ("op_gr_cr_cr",sTy,
25735                TP[LS"ctoptr",Var("rd",FTy 5),Var("cb",FTy 5),
25736                   Var("ct",FTy 5)])),
25737            (Call
25738               ("CPtrCmp",CTy"CHERICOP2",
25739                TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("ct",FTy 5),
25740                   Var("t",FTy 3)]),
25741             CS(Var("t",FTy 3),
25742                [(LW(0,3),
25743                  Call
25744                    ("op_gr_cr_cr",sTy,
25745                     TP[LS"ceq",Var("rd",FTy 5),Var("cb",FTy 5),
25746                        Var("ct",FTy 5)])),
25747                 (LW(1,3),
25748                  Call
25749                    ("op_gr_cr_cr",sTy,
25750                     TP[LS"cne",Var("rd",FTy 5),Var("cb",FTy 5),
25751                        Var("ct",FTy 5)])),
25752                 (LW(2,3),
25753                  Call
25754                    ("op_gr_cr_cr",sTy,
25755                     TP[LS"clt",Var("rd",FTy 5),Var("cb",FTy 5),
25756                        Var("ct",FTy 5)])),
25757                 (LW(3,3),
25758                  Call
25759                    ("op_gr_cr_cr",sTy,
25760                     TP[LS"cle",Var("rd",FTy 5),Var("cb",FTy 5),
25761                        Var("ct",FTy 5)])),
25762                 (LW(4,3),
25763                  Call
25764                    ("op_gr_cr_cr",sTy,
25765                     TP[LS"cltu",Var("rd",FTy 5),Var("cb",FTy 5),
25766                        Var("ct",FTy 5)])),
25767                 (LW(5,3),
25768                  Call
25769                    ("op_gr_cr_cr",sTy,
25770                     TP[LS"cleu",Var("rd",FTy 5),Var("cb",FTy 5),
25771                        Var("ct",FTy 5)])),
25772                 (LW(6,3),
25773                  Call
25774                    ("op_gr_cr_cr",sTy,
25775                     TP[LS"cexeq",Var("rd",FTy 5),Var("cb",FTy 5),
25776                        Var("ct",FTy 5)])),
25777                 (LW(7,3),
25778                  Call
25779                    ("op_gr_cr_cr",sTy,
25780                     TP[LS"cnexeq",Var("rd",FTy 5),Var("cb",FTy 5),
25781                        Var("ct",FTy 5)])),
25782                 (AVar(FTy 3),LS"unmatched_cap_inst")])),
25783            (Call
25784               ("CBTU",CTy"CHERICOP2",
25785                TP[Var("cb",FTy 5),Var("offset",F16)]),
25786             Call
25787               ("op_cr_imm",sTy,
25788                TP[LS"cbtu",Var("cb",FTy 5),Var("offset",F16)])),
25789            (Call
25790               ("CBTS",CTy"CHERICOP2",
25791                TP[Var("cb",FTy 5),Var("offset",F16)]),
25792             Call
25793               ("op_cr_imm",sTy,
25794                TP[LS"cbts",Var("cb",FTy 5),Var("offset",F16)])),
25795            (Call("CJR",CTy"CHERICOP2",Var("cb",FTy 5)),
25796             Call("op_cr",sTy,TP[LS"cjr",Var("cb",FTy 5)])),
25797            (Call
25798               ("CJALR",CTy"CHERICOP2",TP[Var("cd",FTy 5),Var("cb",FTy 5)]),
25799             Call
25800               ("op_cr_cr",sTy,
25801                TP[LS"cjalr",Var("cb",FTy 5),Var("cd",FTy 5)])),
25802            (Call
25803               ("CSeal",CTy"CHERICOP2",
25804                TP[Var("cd",FTy 5),Var("cs",FTy 5),Var("ct",FTy 5)]),
25805             Call
25806               ("op_cr_cr_cr",sTy,
25807                TP[LS"cseal",Var("cd",FTy 5),Var("cs",FTy 5),
25808                   Var("ct",FTy 5)])),
25809            (Call
25810               ("CUnseal",CTy"CHERICOP2",
25811                TP[Var("cd",FTy 5),Var("cs",FTy 5),Var("ct",FTy 5)]),
25812             Call
25813               ("op_cr_cr_cr",sTy,
25814                TP[LS"cunseal",Var("cd",FTy 5),Var("cs",FTy 5),
25815                   Var("ct",FTy 5)])),
25816            (Call
25817               ("CCall0",CTy"CHERICOP2",
25818                TP[Var("cs",FTy 5),Var("cb",FTy 5)]),
25819             Call
25820               ("op_cr_cr",sTy,
25821                TP[LS"ccall0",Var("cs",FTy 5),Var("cb",FTy 5)])),
25822            (Call
25823               ("CCall1",CTy"CHERICOP2",
25824                TP[Var("cs",FTy 5),Var("cb",FTy 5)]),
25825             Call
25826               ("op_cr_cr",sTy,
25827                TP[LS"ccall1",Var("cs",FTy 5),Var("cb",FTy 5)])),
25828            (Const("CReturn",CTy"CHERICOP2"),LS"creturn"),
25829            (Call
25830               ("CLLx",CTy"CHERICOP2",
25831                TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("stt",FTy 3)]),
25832             CS(Var("stt",FTy 3),
25833                [(LW(0,3),
25834                  Call
25835                    ("op_gr_cr",sTy,
25836                     TP[LS"cllbu",Var("rd",FTy 5),Var("cb",FTy 5)])),
25837                 (LW(1,3),
25838                  Call
25839                    ("op_gr_cr",sTy,
25840                     TP[LS"cllhu",Var("rd",FTy 5),Var("cb",FTy 5)])),
25841                 (LW(2,3),
25842                  Call
25843                    ("op_gr_cr",sTy,
25844                     TP[LS"cllwu",Var("rd",FTy 5),Var("cb",FTy 5)])),
25845                 (LW(3,3),
25846                  Call
25847                    ("op_gr_cr",sTy,
25848                     TP[LS"clld",Var("rd",FTy 5),Var("cb",FTy 5)])),
25849                 (LW(4,3),
25850                  Call
25851                    ("op_gr_cr",sTy,
25852                     TP[LS"cllb",Var("rd",FTy 5),Var("cb",FTy 5)])),
25853                 (LW(5,3),
25854                  Call
25855                    ("op_gr_cr",sTy,
25856                     TP[LS"cllh",Var("rd",FTy 5),Var("cb",FTy 5)])),
25857                 (LW(6,3),
25858                  Call
25859                    ("op_gr_cr",sTy,
25860                     TP[LS"cllw",Var("rd",FTy 5),Var("cb",FTy 5)])),
25861                 (LW(7,3),
25862                  Call
25863                    ("op_gr_cr",sTy,
25864                     TP[LS"cllx",Var("rd",FTy 5),Var("cb",FTy 5)]))])),
25865            (Call
25866               ("CLLC",CTy"CHERICOP2",TP[Var("cd",FTy 5),Var("cb",FTy 5)]),
25867             Call
25868               ("op_cr_cr",sTy,
25869                TP[LS"cllc",Var("cd",FTy 5),Var("cb",FTy 5)])),
25870            (Call
25871               ("CSCx",CTy"CHERICOP2",
25872                TP[Var("rs",FTy 5),Var("cb",FTy 5),Var("rd",FTy 5),
25873                   Var("tt",FTy 2)]),
25874             CS(Var("tt",FTy 2),
25875                [(LW(0,2),
25876                  Call
25877                    ("op_gr_gr_cr",sTy,
25878                     TP[LS"cscb",Var("rd",FTy 5),Var("rs",FTy 5),
25879                        Var("cb",FTy 5)])),
25880                 (LW(1,2),
25881                  Call
25882                    ("op_gr_gr_cr",sTy,
25883                     TP[LS"csch",Var("rd",FTy 5),Var("rs",FTy 5),
25884                        Var("cb",FTy 5)])),
25885                 (LW(2,2),
25886                  Call
25887                    ("op_gr_gr_cr",sTy,
25888                     TP[LS"cscw",Var("rd",FTy 5),Var("rs",FTy 5),
25889                        Var("cb",FTy 5)])),
25890                 (LW(3,2),
25891                  Call
25892                    ("op_gr_gr_cr",sTy,
25893                     TP[LS"cscd",Var("rd",FTy 5),Var("rs",FTy 5),
25894                        Var("cb",FTy 5)]))])),
25895            (Call
25896               ("CSCC",CTy"CHERICOP2",
25897                TP[Var("cs",FTy 5),Var("cb",FTy 5),Var("rd",FTy 5)]),
25898             Call
25899               ("op_gr_cr_cr",sTy,
25900                TP[LS"cscc",Var("rd",FTy 5),Var("cs",FTy 5),
25901                   Var("cb",FTy 5)])),
25902            (Call
25903               ("CMOVN",CTy"CHERICOP2",
25904                TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)]),
25905             Call
25906               ("op_cr_cr_gr",sTy,
25907                TP[LS"cmovn",Var("cd",FTy 5),Var("cb",FTy 5),
25908                   Var("rt",FTy 5)])),
25909            (Call
25910               ("CMOVZ",CTy"CHERICOP2",
25911                TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)]),
25912             Call
25913               ("op_cr_cr_gr",sTy,
25914                TP[LS"cmovz",Var("cd",FTy 5),Var("cb",FTy 5),
25915                   Var("rt",FTy 5)])),
25916            (Const("UnknownCapInstruction",CTy"CHERICOP2"),
25917             LS"unknown_cap_inst")])),
25918       (AVar(CTy"instruction"),LS"unmatched_cap_inst")]))
25919;
25920val LWC2InstructionToString_def = Def
25921  ("LWC2InstructionToString",Var("i",CTy"instruction"),
25922   CS(Var("i",CTy"instruction"),
25923      [(Call
25924          ("LWC2",CTy"instruction",
25925           Call("CHERILWC2",CTy"LWC2",Var("j",CTy"CHERILWC2"))),
25926        CS(Var("j",CTy"CHERILWC2"),
25927           [(Call
25928               ("CLoad",CTy"CHERILWC2",
25929                TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
25930                   Var("offset",F8),LW(0,1),Var("t",FTy 2)]),
25931             CS(Var("t",FTy 2),
25932                [(LW(0,2),
25933                  Call
25934                    ("op_gr_cr_gr_imm",sTy,
25935                     TP[LS"clbu",Var("rd",FTy 5),Var("cb",FTy 5),
25936                        Var("rt",FTy 5),Var("offset",F8)])),
25937                 (LW(1,2),
25938                  Call
25939                    ("op_gr_cr_gr_imm",sTy,
25940                     TP[LS"clhu",Var("rd",FTy 5),Var("cb",FTy 5),
25941                        Var("rt",FTy 5),Var("offset",F8)])),
25942                 (LW(2,2),
25943                  Call
25944                    ("op_gr_cr_gr_imm",sTy,
25945                     TP[LS"clwu",Var("rd",FTy 5),Var("cb",FTy 5),
25946                        Var("rt",FTy 5),Var("offset",F8)])),
25947                 (LW(3,2),
25948                  Call
25949                    ("op_gr_cr_gr_imm",sTy,
25950                     TP[LS"cld",Var("rd",FTy 5),Var("cb",FTy 5),
25951                        Var("rt",FTy 5),Var("offset",F8)]))])),
25952            (Call
25953               ("CLoad",CTy"CHERILWC2",
25954                TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
25955                   Var("offset",F8),LW(1,1),LW(0,2)]),
25956             Call
25957               ("op_gr_cr_gr_imm",sTy,
25958                TP[LS"clb",Var("rd",FTy 5),Var("cb",FTy 5),
25959                   Var("rt",FTy 5),Var("offset",F8)])),
25960            (Call
25961               ("CLoad",CTy"CHERILWC2",
25962                TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
25963                   Var("offset",F8),LW(1,1),LW(1,2)]),
25964             Call
25965               ("op_gr_cr_gr_imm",sTy,
25966                TP[LS"clh",Var("rd",FTy 5),Var("cb",FTy 5),
25967                   Var("rt",FTy 5),Var("offset",F8)])),
25968            (Call
25969               ("CLoad",CTy"CHERILWC2",
25970                TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
25971                   Var("offset",F8),LW(1,1),LW(2,2)]),
25972             Call
25973               ("op_gr_cr_gr_imm",sTy,
25974                TP[LS"clw",Var("rd",FTy 5),Var("cb",FTy 5),
25975                   Var("rt",FTy 5),Var("offset",F8)])),
25976            (AVar(CTy"CHERILWC2"),LS"unmatched_cap_inst")])),
25977       (AVar(CTy"instruction"),LS"unmatched_cap_inst")]))
25978;
25979val LDC2InstructionToString_def = Def
25980  ("LDC2InstructionToString",Var("i",CTy"instruction"),
25981   CS(Var("i",CTy"instruction"),
25982      [(Call
25983          ("LDC2",CTy"instruction",
25984           Call("CHERILDC2",CTy"LDC2",Var("j",CTy"CHERILDC2"))),
25985        CS(Var("j",CTy"CHERILDC2"),
25986           [(Call
25987               ("CLC",CTy"CHERILDC2",
25988                TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
25989                   Var("offset",FTy 11)]),
25990             Call
25991               ("op_cr_cr_gr_imm",sTy,
25992                TP[LS"clc",Var("cd",FTy 5),Var("cb",FTy 5),
25993                   Var("rt",FTy 5),Var("offset",FTy 11)]))])),
25994       (AVar(CTy"instruction"),LS"unmatched_cap_inst")]))
25995;
25996val SWC2InstructionToString_def = Def
25997  ("SWC2InstructionToString",Var("i",CTy"instruction"),
25998   CS(Var("i",CTy"instruction"),
25999      [(Call
26000          ("SWC2",CTy"instruction",
26001           Call("CHERISWC2",CTy"SWC2",Var("j",CTy"CHERISWC2"))),
26002        CS(Var("j",CTy"CHERISWC2"),
26003           [(Call
26004               ("CStore",CTy"CHERISWC2",
26005                TP[Var("rs",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
26006                   Var("offset",F8),Var("t",FTy 2)]),
26007             CS(Var("t",FTy 2),
26008                [(LW(0,2),
26009                  Call
26010                    ("op_gr_cr_gr_imm",sTy,
26011                     TP[LS"csb",Var("rs",FTy 5),Var("cb",FTy 5),
26012                        Var("rt",FTy 5),Var("offset",F8)])),
26013                 (LW(1,2),
26014                  Call
26015                    ("op_gr_cr_gr_imm",sTy,
26016                     TP[LS"csh",Var("rs",FTy 5),Var("cb",FTy 5),
26017                        Var("rt",FTy 5),Var("offset",F8)])),
26018                 (LW(2,2),
26019                  Call
26020                    ("op_gr_cr_gr_imm",sTy,
26021                     TP[LS"csw",Var("rs",FTy 5),Var("cb",FTy 5),
26022                        Var("rt",FTy 5),Var("offset",F8)])),
26023                 (LW(3,2),
26024                  Call
26025                    ("op_gr_cr_gr_imm",sTy,
26026                     TP[LS"csd",Var("rs",FTy 5),Var("cb",FTy 5),
26027                        Var("rt",FTy 5),Var("offset",F8)]))]))])),
26028       (AVar(CTy"instruction"),LS"unmatched_cap_inst")]))
26029;
26030val SDC2InstructionToString_def = Def
26031  ("SDC2InstructionToString",Var("i",CTy"instruction"),
26032   CS(Var("i",CTy"instruction"),
26033      [(Call
26034          ("SDC2",CTy"instruction",
26035           Call("CHERISDC2",CTy"SDC2",Var("j",CTy"CHERISDC2"))),
26036        CS(Var("j",CTy"CHERISDC2"),
26037           [(Call
26038               ("CSC",CTy"CHERISDC2",
26039                TP[Var("cs",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
26040                   Var("offset",FTy 11)]),
26041             Call
26042               ("op_cr_cr_gr_imm",sTy,
26043                TP[LS"csc",Var("cs",FTy 5),Var("cb",FTy 5),
26044                   Var("rt",FTy 5),Var("offset",FTy 11)]))])),
26045       (AVar(CTy"instruction"),LS"unmatched_cap_inst")]))
26046;
26047val CHERICOP2Encode_def = Def
26048  ("CHERICOP2Encode",Var("j",CTy"CHERICOP2"),
26049   Close
26050     (qVar"state",
26051      CS(Var("j",CTy"CHERICOP2"),
26052         [(Const("DumpCapReg",CTy"CHERICOP2"),
26053           TP[CC[LW(4,5),LW(0,18),LW(6,3)],qVar"state"]),
26054          (Call("CGet",CTy"CHERICOP2",Var("v#0",CTy"CGet")),
26055           CS(Var("v#0",CTy"CGet"),
26056              [(Call
26057                  ("CGetBase",CTy"CGet",
26058                   TP[Var("rd",FTy 5),Var("cb",FTy 5)]),
26059                TP[CC[LW(0,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,5),
26060                      LW(2,6)],qVar"state"]),
26061               (Call
26062                  ("CGetOffset",CTy"CGet",
26063                   TP[Var("rd",FTy 5),Var("cb",FTy 5)]),
26064                TP[CC[LW(13,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,5),
26065                      LW(2,6)],qVar"state"]),
26066               (Call
26067                  ("CGetLen",CTy"CGet",TP[Var("rd",FTy 5),Var("cb",FTy 5)]),
26068                TP[CC[LW(0,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,5),
26069                      LW(3,6)],qVar"state"]),
26070               (Call
26071                  ("CGetTag",CTy"CGet",TP[Var("rd",FTy 5),Var("cb",FTy 5)]),
26072                TP[CC[LW(0,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,5),
26073                      LW(5,6)],qVar"state"]),
26074               (Call
26075                  ("CGetSealed",CTy"CGet",
26076                   TP[Var("rd",FTy 5),Var("cb",FTy 5)]),
26077                TP[CC[LW(0,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,5),
26078                      LW(6,6)],qVar"state"]),
26079               (Call
26080                  ("CGetPerm",CTy"CGet",
26081                   TP[Var("rd",FTy 5),Var("cb",FTy 5)]),
26082                TP[CC[LW(0,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,5),
26083                      LW(0,6)],qVar"state"]),
26084               (Call
26085                  ("CGetType",CTy"CGet",
26086                   TP[Var("rd",FTy 5),Var("cb",FTy 5)]),
26087                TP[CC[LW(0,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,5),
26088                      LW(1,6)],qVar"state"]),
26089               (Call("CGetPCC",CTy"CGet",Var("cd",FTy 5)),
26090                TP[CC[LW(0,5),Var("cd",FTy 5),LW(0,5),LW(31,5),LW(63,6)],
26091                   qVar"state"]),
26092               (Call
26093                  ("CGetPCCSetOffset",CTy"CGet",
26094                   TP[Var("cd",FTy 5),Var("rs",FTy 5)]),
26095                TP[CC[LW(0,5),Var("cd",FTy 5),Var("rs",FTy 5),LW(7,5),
26096                      LW(63,6)],qVar"state"]),
26097               (Call("CGetCause",CTy"CGet",Var("rd",FTy 5)),
26098                TP[CC[LW(0,5),Var("rd",FTy 5),LW(0,5),LW(0,6),LW(4,5)],
26099                   qVar"state"]),
26100               (Call
26101                  ("CToPtr",CTy"CGet",
26102                   TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("ct",FTy 5)]),
26103                TP[CC[LW(12,5),Var("rd",FTy 5),Var("cb",FTy 5),
26104                      Var("ct",FTy 5),LW(0,6)],qVar"state"])])),
26105          (Call("CSet",CTy"CHERICOP2",Var("v#1",CTy"CSet")),
26106           CS(Var("v#1",CTy"CSet"),
26107              [(Call("CSetCause",CTy"CSet",Var("rt",FTy 5)),
26108                TP[CC[LW(4,5),LW(0,5),LW(0,5),Var("rt",FTy 5),LW(0,3),
26109                      LW(4,3)],qVar"state"]),
26110               (Call
26111                  ("CSetBounds",CTy"CSet",
26112                   TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)]),
26113                TP[CC[LW(1,5),Var("cd",FTy 5),Var("cb",FTy 5),
26114                      Var("rt",FTy 5),LW(0,6)],qVar"state"]),
26115               (Call
26116                  ("CSetBoundsExact",CTy"CSet",
26117                   TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)]),
26118                TP[CC[LW(0,5),Var("cd",FTy 5),Var("cb",FTy 5),
26119                      Var("rt",FTy 5),LW(9,6)],qVar"state"]),
26120               (Call
26121                  ("CSetBoundsImmediate",CTy"CSet",
26122                   TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("len",FTy 11)]),
26123                TP[CC[LW(20,5),Var("cd",FTy 5),Var("cb",FTy 5),
26124                      Var("len",FTy 11)],qVar"state"]),
26125               (Call
26126                  ("CIncOffset",CTy"CSet",
26127                   TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)]),
26128                TP[CC[LW(13,5),Var("cd",FTy 5),Var("cb",FTy 5),
26129                      Var("rt",FTy 5),LW(0,3),LW(0,3)],qVar"state"]),
26130               (Call
26131                  ("CIncOffsetImmediate",CTy"CSet",
26132                   TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("inc",FTy 11)]),
26133                TP[CC[LW(11,5),Var("cd",FTy 5),Var("cb",FTy 5),
26134                      Var("inc",FTy 11)],qVar"state"]),
26135               (Call
26136                  ("CClearRegs",CTy"CSet",
26137                   TP[Var("regset",FTy 5),Var("mask",F16)]),
26138                TP[CC[LW(15,5),Var("regset",FTy 5),Var("mask",F16)],
26139                   qVar"state"]),
26140               (Call
26141                  ("CClearTag",CTy"CSet",
26142                   TP[Var("cd",FTy 5),Var("cb",FTy 5)]),
26143                TP[CC[LW(4,5),Var("cd",FTy 5),Var("cb",FTy 5),LW(0,8),
26144                      LW(5,3)],qVar"state"]),
26145               (Call
26146                  ("CAndPerm",CTy"CSet",
26147                   TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)]),
26148                TP[CC[LW(4,5),Var("cd",FTy 5),Var("cb",FTy 5),
26149                      Var("rt",FTy 5),LW(0,3),LW(0,3)],qVar"state"]),
26150               (Call
26151                  ("CSetOffset",CTy"CSet",
26152                   TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)]),
26153                TP[CC[LW(13,5),Var("cd",FTy 5),Var("cb",FTy 5),
26154                      Var("rt",FTy 5),LW(0,3),LW(1,3)],qVar"state"]),
26155               (Call
26156                  ("CFromPtr",CTy"CSet",
26157                   TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)]),
26158                TP[CC[LW(4,5),Var("cd",FTy 5),Var("cb",FTy 5),
26159                      Var("rt",FTy 5),LW(0,3),LW(7,3)],qVar"state"])])),
26160          (Call
26161             ("CSub",CTy"CHERICOP2",Var("v#2",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
26162           CS(Var("v#2",PTy(FTy 5,PTy(FTy 5,FTy 5))),
26163              [(TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("ct",FTy 5)],
26164                TP[CC[LW(0,5),Var("rd",FTy 5),Var("cb",FTy 5),
26165                      Var("ct",FTy 5),LW(10,6)],qVar"state"])])),
26166          (Call("CCheck",CTy"CHERICOP2",Var("v#3",CTy"CCheck")),
26167           CS(Var("v#3",CTy"CCheck"),
26168              [(Call
26169                  ("CCheckPerm",CTy"CCheck",
26170                   TP[Var("cs",FTy 5),Var("rt",FTy 5)]),
26171                TP[CC[LW(11,5),Var("cs",FTy 5),LW(0,5),Var("rt",FTy 5),
26172                      LW(0,3),LW(0,3)],qVar"state"]),
26173               (Call
26174                  ("CCheckType",CTy"CCheck",
26175                   TP[Var("cs",FTy 5),Var("cb",FTy 5)]),
26176                TP[CC[LW(11,5),Var("cs",FTy 5),Var("cb",FTy 5),LW(0,8),
26177                      LW(1,3)],qVar"state"])])),
26178          (Call
26179             ("CPtrCmp",CTy"CHERICOP2",
26180              Var("v#4",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 3))))),
26181           CS(Var("v#4",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 3)))),
26182              [(TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("ct",FTy 5),
26183                   Var("t",FTy 3)],
26184                TP[CC[LW(14,5),Var("rd",FTy 5),Var("cb",FTy 5),
26185                      Var("ct",FTy 5),LW(0,3),Var("t",FTy 3)],qVar"state"])])),
26186          (Call("CBTU",CTy"CHERICOP2",Var("v#5",PTy(FTy 5,F16))),
26187           CS(Var("v#5",PTy(FTy 5,F16)),
26188              [(TP[Var("cb",FTy 5),Var("offset",F16)],
26189                TP[CC[LW(9,5),Var("cb",FTy 5),Var("offset",F16)],
26190                   qVar"state"])])),
26191          (Call("CBTS",CTy"CHERICOP2",Var("v#6",PTy(FTy 5,F16))),
26192           CS(Var("v#6",PTy(FTy 5,F16)),
26193              [(TP[Var("cb",FTy 5),Var("offset",F16)],
26194                TP[CC[LW(10,5),Var("cb",FTy 5),Var("offset",F16)],
26195                   qVar"state"])])),
26196          (Call("CJR",CTy"CHERICOP2",Var("v#7",FTy 5)),
26197           TP[CC[LW(8,5),LW(0,5),Var("v#7",FTy 5),LW(0,11)],qVar"state"]),
26198          (Call("CJALR",CTy"CHERICOP2",Var("v#8",PTy(FTy 5,FTy 5))),
26199           CS(Var("v#8",PTy(FTy 5,FTy 5)),
26200              [(TP[Var("cd",FTy 5),Var("cb",FTy 5)],
26201                TP[CC[LW(7,5),Var("cd",FTy 5),Var("cb",FTy 5),LW(0,11)],
26202                   qVar"state"])])),
26203          (Call
26204             ("CSeal",CTy"CHERICOP2",
26205              Var("v#9",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
26206           CS(Var("v#9",PTy(FTy 5,PTy(FTy 5,FTy 5))),
26207              [(TP[Var("cd",FTy 5),Var("cs",FTy 5),Var("ct",FTy 5)],
26208                TP[CC[LW(2,5),Var("cd",FTy 5),Var("cs",FTy 5),
26209                      Var("ct",FTy 5),LW(0,6)],qVar"state"])])),
26210          (Call
26211             ("CUnseal",CTy"CHERICOP2",
26212              Var("v#10",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
26213           CS(Var("v#10",PTy(FTy 5,PTy(FTy 5,FTy 5))),
26214              [(TP[Var("cd",FTy 5),Var("cs",FTy 5),Var("ct",FTy 5)],
26215                TP[CC[LW(3,5),Var("cd",FTy 5),Var("cs",FTy 5),
26216                      Var("ct",FTy 5),LW(0,6)],qVar"state"])])),
26217          (Call("CCall0",CTy"CHERICOP2",Var("v#11",PTy(FTy 5,FTy 5))),
26218           CS(Var("v#11",PTy(FTy 5,FTy 5)),
26219              [(TP[Var("cs",FTy 5),Var("cb",FTy 5)],
26220                TP[CC[LW(5,5),Var("cs",FTy 5),Var("cb",FTy 5),LW(0,11)],
26221                   qVar"state"])])),
26222          (Call("CCall1",CTy"CHERICOP2",Var("v#12",PTy(FTy 5,FTy 5))),
26223           CS(Var("v#12",PTy(FTy 5,FTy 5)),
26224              [(TP[Var("cs",FTy 5),Var("cb",FTy 5)],
26225                TP[CC[LW(5,5),Var("cs",FTy 5),Var("cb",FTy 5),LW(1,11)],
26226                   qVar"state"])])),
26227          (Const("CReturn",CTy"CHERICOP2"),
26228           TP[CC[LW(6,5),LW(0,21)],qVar"state"]),
26229          (Call
26230             ("CLLx",CTy"CHERICOP2",
26231              Var("v#13",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
26232           CS(TP[Mop(Fst,Var("v#13",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
26233                 Mop(Fst,Mop(Snd,Var("v#13",PTy(FTy 5,PTy(FTy 5,FTy 3))))),
26234                 BL(3,
26235                    Mop(Snd,
26236                        Mop(Snd,Var("v#13",PTy(FTy 5,PTy(FTy 5,FTy 3))))))],
26237              [(TP[Var("rd",FTy 5),Var("cb",FTy 5),bVar"s'0",LF,LF],
26238                TP[CC[LW(16,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,7),
26239                      LW(1,1),Mop(Cast F1,LL[bVar"s'0"]),LW(0,2)],
26240                   qVar"state"]),
26241               (TP[Var("rd",FTy 5),Var("cb",FTy 5),bVar"s'0",LF,LT],
26242                TP[CC[LW(16,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,7),
26243                      LW(1,1),Mop(Cast F1,LL[bVar"s'0"]),LW(1,2)],
26244                   qVar"state"]),
26245               (TP[Var("rd",FTy 5),Var("cb",FTy 5),bVar"s'0",LT,LF],
26246                TP[CC[LW(16,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,7),
26247                      LW(1,1),Mop(Cast F1,LL[bVar"s'0"]),LW(2,2)],
26248                   qVar"state"]),
26249               (TP[Var("rd",FTy 5),Var("cb",FTy 5),LF,LT,LT],
26250                TP[CC[LW(16,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,7),
26251                      LW(11,4)],qVar"state"]),
26252               (TP[Var("rd",FTy 5),Var("cb",FTy 5),LT,LT,LT],
26253                Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
26254                    Apply
26255                      (Call
26256                         ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)),
26257                          LS"instruction-encoding"),qVar"state"),
26258                    TP[Apply
26259                         (LX(ATy(PTy(nTy,sTy),FTy 26)),
26260                          Var("v",PTy(nTy,sTy))),qVar"s"]))])),
26261          (Call("CLLC",CTy"CHERICOP2",Var("v#14",PTy(FTy 5,FTy 5))),
26262           CS(Var("v#14",PTy(FTy 5,FTy 5)),
26263              [(TP[Var("cd",FTy 5),Var("cb",FTy 5)],
26264                TP[CC[LW(16,5),Var("cd",FTy 5),Var("cb",FTy 5),LW(0,7),
26265                      LW(15,4)],qVar"state"])])),
26266          (Call
26267             ("CSCx",CTy"CHERICOP2",
26268              Var("v#15",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 2))))),
26269           CS(Var("v#15",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 2)))),
26270              [(TP[Var("rs",FTy 5),Var("cb",FTy 5),Var("rd",FTy 5),
26271                   Var("tt",FTy 2)],
26272                TP[CC[LW(16,5),Var("rs",FTy 5),Var("cb",FTy 5),
26273                      Var("rd",FTy 5),LW(0,2),LW(0,2),Var("tt",FTy 2)],
26274                   qVar"state"])])),
26275          (Call
26276             ("CSCC",CTy"CHERICOP2",
26277              Var("v#16",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
26278           CS(Var("v#16",PTy(FTy 5,PTy(FTy 5,FTy 5))),
26279              [(TP[Var("cs",FTy 5),Var("cb",FTy 5),Var("rd",FTy 5)],
26280                TP[CC[LW(16,5),Var("cs",FTy 5),Var("cb",FTy 5),
26281                      Var("rd",FTy 5),LW(0,2),LW(7,4)],qVar"state"])])),
26282          (Const("UnknownCapInstruction",CTy"CHERICOP2"),
26283           TP[CC[LW(31,5),LW(0,21)],qVar"state"])])))
26284;
26285val COP2Encode_def = Def
26286  ("COP2Encode",Var("i",CTy"instruction"),
26287   Close
26288     (qVar"state",
26289      CS(Var("i",CTy"instruction"),
26290         [(Call
26291             ("COP2",CTy"instruction",
26292              Call("CHERICOP2",CTy"COP2",Var("j",CTy"CHERICOP2"))),
26293           Let(TP[Var("v",FTy 26),qVar"s"],
26294               Apply
26295                 (Call
26296                    ("CHERICOP2Encode",ATy(qTy,PTy(FTy 26,qTy)),
26297                     Var("j",CTy"CHERICOP2")),qVar"state"),
26298               TP[CC[LW(18,6),Var("v",FTy 26)],qVar"s"])),
26299          (AVar(CTy"instruction"),
26300           Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
26301               Apply
26302                 (Call
26303                    ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)),
26304                     LS"instruction-encoding"),qVar"state"),
26305               TP[Apply(LX(ATy(PTy(nTy,sTy),F32)),Var("v",PTy(nTy,sTy))),
26306                  qVar"s"]))])))
26307;
26308val LWC2Encode_def = Def
26309  ("LWC2Encode",Var("i",CTy"instruction"),
26310   Close
26311     (qVar"state",
26312      CS(Var("i",CTy"instruction"),
26313         [(Call
26314             ("LWC2",CTy"instruction",
26315              Call
26316                ("CHERILWC2",CTy"LWC2",
26317                 Call
26318                   ("CLoad",CTy"CHERILWC2",
26319                    TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
26320                       Var("offset",F8),LW(0,1),Var("t",FTy 2)]))),
26321           TP[CC[LW(50,6),Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
26322                 Var("offset",F8),LW(0,1),Var("t",FTy 2)],qVar"state"]),
26323          (Call
26324             ("LWC2",CTy"instruction",
26325              Call
26326                ("CHERILWC2",CTy"LWC2",
26327                 Call
26328                   ("CLoad",CTy"CHERILWC2",
26329                    TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
26330                       Var("offset",F8),LW(1,1),LW(0,2)]))),
26331           TP[CC[LW(50,6),Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
26332                 Var("offset",F8),LW(4,3)],qVar"state"]),
26333          (Call
26334             ("LWC2",CTy"instruction",
26335              Call
26336                ("CHERILWC2",CTy"LWC2",
26337                 Call
26338                   ("CLoad",CTy"CHERILWC2",
26339                    TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
26340                       Var("offset",F8),LW(1,1),LW(1,2)]))),
26341           TP[CC[LW(50,6),Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
26342                 Var("offset",F8),LW(5,3)],qVar"state"]),
26343          (Call
26344             ("LWC2",CTy"instruction",
26345              Call
26346                ("CHERILWC2",CTy"LWC2",
26347                 Call
26348                   ("CLoad",CTy"CHERILWC2",
26349                    TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
26350                       Var("offset",F8),LW(1,1),LW(2,2)]))),
26351           TP[CC[LW(50,6),Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
26352                 Var("offset",F8),LW(6,3)],qVar"state"]),
26353          (AVar(CTy"instruction"),
26354           Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
26355               Apply
26356                 (Call
26357                    ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)),
26358                     LS"instruction-encoding"),qVar"state"),
26359               TP[Apply(LX(ATy(PTy(nTy,sTy),F32)),Var("v",PTy(nTy,sTy))),
26360                  qVar"s"]))])))
26361;
26362val LDC2Encode_def = Def
26363  ("LDC2Encode",Var("i",CTy"instruction"),
26364   Close
26365     (qVar"state",
26366      CS(Var("i",CTy"instruction"),
26367         [(Call
26368             ("LDC2",CTy"instruction",
26369              Call
26370                ("CHERILDC2",CTy"LDC2",
26371                 Call
26372                   ("CLC",CTy"CHERILDC2",
26373                    TP[Var("c",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
26374                       Var("offset",FTy 11)]))),
26375           TP[CC[LW(54,6),Var("c",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
26376                 Var("offset",FTy 11)],qVar"state"]),
26377          (AVar(CTy"instruction"),
26378           Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
26379               Apply
26380                 (Call
26381                    ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)),
26382                     LS"instruction-encoding"),qVar"state"),
26383               TP[Apply(LX(ATy(PTy(nTy,sTy),F32)),Var("v",PTy(nTy,sTy))),
26384                  qVar"s"]))])))
26385;
26386val SWC2Encode_def = Def
26387  ("SWC2Encode",Var("i",CTy"instruction"),
26388   Close
26389     (qVar"state",
26390      CS(Var("i",CTy"instruction"),
26391         [(Call
26392             ("SWC2",CTy"instruction",
26393              Call
26394                ("CHERISWC2",CTy"SWC2",
26395                 Call
26396                   ("CStore",CTy"CHERISWC2",
26397                    TP[Var("rs",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
26398                       Var("offset",F8),Var("t",FTy 2)]))),
26399           TP[CC[LW(58,6),Var("rs",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
26400                 Var("offset",F8),LW(0,1),Var("t",FTy 2)],qVar"state"]),
26401          (AVar(CTy"instruction"),
26402           Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
26403               Apply
26404                 (Call
26405                    ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)),
26406                     LS"instruction-encoding"),qVar"state"),
26407               TP[Apply(LX(ATy(PTy(nTy,sTy),F32)),Var("v",PTy(nTy,sTy))),
26408                  qVar"s"]))])))
26409;
26410val SDC2Encode_def = Def
26411  ("SDC2Encode",Var("i",CTy"instruction"),
26412   Close
26413     (qVar"state",
26414      CS(Var("i",CTy"instruction"),
26415         [(Call
26416             ("SDC2",CTy"instruction",
26417              Call
26418                ("CHERISDC2",CTy"SDC2",
26419                 Call
26420                   ("CSC",CTy"CHERISDC2",
26421                    TP[Var("c",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
26422                       Var("offset",FTy 11)]))),
26423           TP[CC[LW(62,6),Var("c",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),
26424                 Var("offset",FTy 11)],qVar"state"]),
26425          (AVar(CTy"instruction"),
26426           Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"],
26427               Apply
26428                 (Call
26429                    ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)),
26430                     LS"instruction-encoding"),qVar"state"),
26431               TP[Apply(LX(ATy(PTy(nTy,sTy),F32)),Var("v",PTy(nTy,sTy))),
26432                  qVar"s"]))])))
26433;
26434val instructionToString_def = Def
26435  ("instructionToString",Var("i",CTy"instruction"),
26436   CS(Var("i",CTy"instruction"),
26437      [(Call
26438          ("Shift",CTy"instruction",
26439           Call("SLL",CTy"Shift",TP[LW(0,5),LW(0,5),LW(0,5)])),LS"nop"),
26440       (Call
26441          ("Shift",CTy"instruction",
26442           Call("SLL",CTy"Shift",TP[LW(0,5),LW(0,5),LW(1,5)])),LS"ssnop"),
26443       (Call
26444          ("Shift",CTy"instruction",
26445           Call
26446             ("SLL",CTy"Shift",
26447              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
26448        Call
26449          ("op2ri",sTy,
26450           TP[LS"sll",Var("rd",FTy 5),Var("rt",FTy 5),Var("imm5",FTy 5)])),
26451       (Call
26452          ("Shift",CTy"instruction",
26453           Call
26454             ("SRL",CTy"Shift",
26455              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
26456        Call
26457          ("op2ri",sTy,
26458           TP[LS"srl",Var("rd",FTy 5),Var("rt",FTy 5),Var("imm5",FTy 5)])),
26459       (Call
26460          ("Shift",CTy"instruction",
26461           Call
26462             ("SRA",CTy"Shift",
26463              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
26464        Call
26465          ("op2ri",sTy,
26466           TP[LS"sra",Var("rd",FTy 5),Var("rt",FTy 5),Var("imm5",FTy 5)])),
26467       (Call
26468          ("Shift",CTy"instruction",
26469           Call
26470             ("SLLV",CTy"Shift",
26471              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26472        Call
26473          ("op3r",sTy,
26474           TP[LS"sllv",Var("rd",FTy 5),Var("rt",FTy 5),Var("rs",FTy 5)])),
26475       (Call
26476          ("Shift",CTy"instruction",
26477           Call
26478             ("SRLV",CTy"Shift",
26479              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26480        Call
26481          ("op3r",sTy,
26482           TP[LS"srlv",Var("rd",FTy 5),Var("rt",FTy 5),Var("rs",FTy 5)])),
26483       (Call
26484          ("Shift",CTy"instruction",
26485           Call
26486             ("SRAV",CTy"Shift",
26487              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26488        Call
26489          ("op3r",sTy,
26490           TP[LS"srav",Var("rd",FTy 5),Var("rt",FTy 5),Var("rs",FTy 5)])),
26491       (Call
26492          ("Branch",CTy"instruction",
26493           Call("JR",CTy"Branch",Var("rs",FTy 5))),
26494        Call("op1r",sTy,TP[LS"jr",Var("rs",FTy 5)])),
26495       (Call
26496          ("Branch",CTy"instruction",
26497           Call("JALR",CTy"Branch",TP[Var("rs",FTy 5),Var("rd",FTy 5)])),
26498        Call("op2r",sTy,TP[LS"jalr",Var("rd",FTy 5),Var("rs",FTy 5)])),
26499       (Call
26500          ("MultDiv",CTy"instruction",
26501           Call("MFHI",CTy"MultDiv",Var("rd",FTy 5))),
26502        Call("op1r",sTy,TP[LS"mfhi",Var("rd",FTy 5)])),
26503       (Call
26504          ("MultDiv",CTy"instruction",
26505           Call("MTHI",CTy"MultDiv",Var("rd",FTy 5))),
26506        Call("op1r",sTy,TP[LS"mthi",Var("rd",FTy 5)])),
26507       (Call
26508          ("MultDiv",CTy"instruction",
26509           Call("MFLO",CTy"MultDiv",Var("rs",FTy 5))),
26510        Call("op1r",sTy,TP[LS"mflo",Var("rs",FTy 5)])),
26511       (Call
26512          ("MultDiv",CTy"instruction",
26513           Call("MTLO",CTy"MultDiv",Var("rs",FTy 5))),
26514        Call("op1r",sTy,TP[LS"mtlo",Var("rs",FTy 5)])),
26515       (Call
26516          ("Shift",CTy"instruction",
26517           Call
26518             ("DSLLV",CTy"Shift",
26519              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26520        Call
26521          ("op3r",sTy,
26522           TP[LS"dsllv",Var("rd",FTy 5),Var("rt",FTy 5),Var("rs",FTy 5)])),
26523       (Call
26524          ("Shift",CTy"instruction",
26525           Call
26526             ("DSRLV",CTy"Shift",
26527              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26528        Call
26529          ("op3r",sTy,
26530           TP[LS"dsrlv",Var("rd",FTy 5),Var("rt",FTy 5),Var("rs",FTy 5)])),
26531       (Call
26532          ("Shift",CTy"instruction",
26533           Call
26534             ("DSRAV",CTy"Shift",
26535              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26536        Call
26537          ("op3r",sTy,
26538           TP[LS"dsrav",Var("rd",FTy 5),Var("rt",FTy 5),Var("rs",FTy 5)])),
26539       (Call
26540          ("MultDiv",CTy"instruction",
26541           Call("MADD",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
26542        Call("op2r",sTy,TP[LS"madd",Var("rs",FTy 5),Var("rt",FTy 5)])),
26543       (Call
26544          ("MultDiv",CTy"instruction",
26545           Call("MADDU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
26546        Call("op2r",sTy,TP[LS"maddu",Var("rs",FTy 5),Var("rt",FTy 5)])),
26547       (Call
26548          ("MultDiv",CTy"instruction",
26549           Call("MSUB",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
26550        Call("op2r",sTy,TP[LS"msub",Var("rs",FTy 5),Var("rt",FTy 5)])),
26551       (Call
26552          ("MultDiv",CTy"instruction",
26553           Call("MSUBU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
26554        Call("op2r",sTy,TP[LS"msubu",Var("rs",FTy 5),Var("rt",FTy 5)])),
26555       (Call
26556          ("MultDiv",CTy"instruction",
26557           Call
26558             ("MUL",CTy"MultDiv",
26559              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26560        Call
26561          ("op3r",sTy,
26562           TP[LS"mul",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])),
26563       (Call
26564          ("MultDiv",CTy"instruction",
26565           Call("MULT",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
26566        Call("op2r",sTy,TP[LS"mult",Var("rs",FTy 5),Var("rt",FTy 5)])),
26567       (Call
26568          ("MultDiv",CTy"instruction",
26569           Call("MULTU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
26570        Call("op2r",sTy,TP[LS"multu",Var("rs",FTy 5),Var("rt",FTy 5)])),
26571       (Call
26572          ("MultDiv",CTy"instruction",
26573           Call("DIV",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
26574        Call("op2r",sTy,TP[LS"div",Var("rs",FTy 5),Var("rt",FTy 5)])),
26575       (Call
26576          ("MultDiv",CTy"instruction",
26577           Call("DIVU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
26578        Call("op2r",sTy,TP[LS"divu",Var("rs",FTy 5),Var("rt",FTy 5)])),
26579       (Call
26580          ("MultDiv",CTy"instruction",
26581           Call("DMULT",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
26582        Call("op2r",sTy,TP[LS"dmult",Var("rs",FTy 5),Var("rt",FTy 5)])),
26583       (Call
26584          ("MultDiv",CTy"instruction",
26585           Call("DMULTU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
26586        Call("op2r",sTy,TP[LS"dmultu",Var("rs",FTy 5),Var("rt",FTy 5)])),
26587       (Call
26588          ("MultDiv",CTy"instruction",
26589           Call("DDIV",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
26590        Call("op2r",sTy,TP[LS"ddiv",Var("rs",FTy 5),Var("rt",FTy 5)])),
26591       (Call
26592          ("MultDiv",CTy"instruction",
26593           Call("DDIVU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
26594        Call("op2r",sTy,TP[LS"ddivu",Var("rs",FTy 5),Var("rt",FTy 5)])),
26595       (Call
26596          ("ArithR",CTy"instruction",
26597           Call
26598             ("MOVN",CTy"ArithR",
26599              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26600        Call
26601          ("op3r",sTy,
26602           TP[LS"movn",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])),
26603       (Call
26604          ("ArithR",CTy"instruction",
26605           Call
26606             ("MOVZ",CTy"ArithR",
26607              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26608        Call
26609          ("op3r",sTy,
26610           TP[LS"movz",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])),
26611       (Call
26612          ("ArithR",CTy"instruction",
26613           Call
26614             ("ADD",CTy"ArithR",
26615              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26616        Call
26617          ("op3r",sTy,
26618           TP[LS"add",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])),
26619       (Call
26620          ("ArithR",CTy"instruction",
26621           Call
26622             ("ADDU",CTy"ArithR",
26623              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26624        Call
26625          ("op3r",sTy,
26626           TP[LS"addu",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])),
26627       (Call
26628          ("ArithR",CTy"instruction",
26629           Call
26630             ("SUB",CTy"ArithR",
26631              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26632        Call
26633          ("op3r",sTy,
26634           TP[LS"sub",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])),
26635       (Call
26636          ("ArithR",CTy"instruction",
26637           Call
26638             ("SUBU",CTy"ArithR",
26639              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26640        Call
26641          ("op3r",sTy,
26642           TP[LS"subu",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])),
26643       (Call
26644          ("ArithR",CTy"instruction",
26645           Call
26646             ("AND",CTy"ArithR",
26647              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26648        Call
26649          ("op3r",sTy,
26650           TP[LS"and",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])),
26651       (Call
26652          ("ArithR",CTy"instruction",
26653           Call
26654             ("OR",CTy"ArithR",
26655              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26656        Call
26657          ("op3r",sTy,
26658           TP[LS"or",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])),
26659       (Call
26660          ("ArithR",CTy"instruction",
26661           Call
26662             ("XOR",CTy"ArithR",
26663              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26664        Call
26665          ("op3r",sTy,
26666           TP[LS"xor",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])),
26667       (Call
26668          ("ArithR",CTy"instruction",
26669           Call
26670             ("NOR",CTy"ArithR",
26671              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26672        Call
26673          ("op3r",sTy,
26674           TP[LS"nor",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])),
26675       (Call
26676          ("ArithR",CTy"instruction",
26677           Call
26678             ("SLT",CTy"ArithR",
26679              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26680        Call
26681          ("op3r",sTy,
26682           TP[LS"slt",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])),
26683       (Call
26684          ("ArithR",CTy"instruction",
26685           Call
26686             ("SLTU",CTy"ArithR",
26687              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26688        Call
26689          ("op3r",sTy,
26690           TP[LS"sltu",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])),
26691       (Call
26692          ("ArithR",CTy"instruction",
26693           Call
26694             ("DADD",CTy"ArithR",
26695              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26696        Call
26697          ("op3r",sTy,
26698           TP[LS"dadd",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])),
26699       (Call
26700          ("ArithR",CTy"instruction",
26701           Call
26702             ("DADDU",CTy"ArithR",
26703              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26704        Call
26705          ("op3r",sTy,
26706           TP[LS"daddu",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])),
26707       (Call
26708          ("ArithR",CTy"instruction",
26709           Call
26710             ("DSUB",CTy"ArithR",
26711              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26712        Call
26713          ("op3r",sTy,
26714           TP[LS"dsub",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])),
26715       (Call
26716          ("ArithR",CTy"instruction",
26717           Call
26718             ("DSUBU",CTy"ArithR",
26719              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
26720        Call
26721          ("op3r",sTy,
26722           TP[LS"dsubu",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])),
26723       (Call
26724          ("Trap",CTy"instruction",
26725           Call("TGE",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
26726        Call("op2r",sTy,TP[LS"tge",Var("rs",FTy 5),Var("rt",FTy 5)])),
26727       (Call
26728          ("Trap",CTy"instruction",
26729           Call("TGEU",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
26730        Call("op2r",sTy,TP[LS"tgeu",Var("rs",FTy 5),Var("rt",FTy 5)])),
26731       (Call
26732          ("Trap",CTy"instruction",
26733           Call("TLT",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
26734        Call("op2r",sTy,TP[LS"tlt",Var("rs",FTy 5),Var("rt",FTy 5)])),
26735       (Call
26736          ("Trap",CTy"instruction",
26737           Call("TLTU",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
26738        Call("op2r",sTy,TP[LS"tltu",Var("rs",FTy 5),Var("rt",FTy 5)])),
26739       (Call
26740          ("Trap",CTy"instruction",
26741           Call("TEQ",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
26742        Call("op2r",sTy,TP[LS"teq",Var("rs",FTy 5),Var("rt",FTy 5)])),
26743       (Call
26744          ("Trap",CTy"instruction",
26745           Call("TNE",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
26746        Call("op2r",sTy,TP[LS"tne",Var("rs",FTy 5),Var("rt",FTy 5)])),
26747       (Call
26748          ("Shift",CTy"instruction",
26749           Call
26750             ("DSLL",CTy"Shift",
26751              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
26752        Call
26753          ("op2ri",sTy,
26754           TP[LS"dsll",Var("rd",FTy 5),Var("rt",FTy 5),Var("imm5",FTy 5)])),
26755       (Call
26756          ("Shift",CTy"instruction",
26757           Call
26758             ("DSRL",CTy"Shift",
26759              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
26760        Call
26761          ("op2ri",sTy,
26762           TP[LS"dsrl",Var("rd",FTy 5),Var("rt",FTy 5),Var("imm5",FTy 5)])),
26763       (Call
26764          ("Shift",CTy"instruction",
26765           Call
26766             ("DSRA",CTy"Shift",
26767              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
26768        Call
26769          ("op2ri",sTy,
26770           TP[LS"dsra",Var("rd",FTy 5),Var("rt",FTy 5),Var("imm5",FTy 5)])),
26771       (Call
26772          ("Shift",CTy"instruction",
26773           Call
26774             ("DSLL32",CTy"Shift",
26775              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
26776        Call
26777          ("op2ri",sTy,
26778           TP[LS"dsll32",Var("rd",FTy 5),Var("rt",FTy 5),Var("imm5",FTy 5)])),
26779       (Call
26780          ("Shift",CTy"instruction",
26781           Call
26782             ("DSRL32",CTy"Shift",
26783              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
26784        Call
26785          ("op2ri",sTy,
26786           TP[LS"dsrl32",Var("rd",FTy 5),Var("rt",FTy 5),Var("imm5",FTy 5)])),
26787       (Call
26788          ("Shift",CTy"instruction",
26789           Call
26790             ("DSRA32",CTy"Shift",
26791              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
26792        Call
26793          ("op2ri",sTy,
26794           TP[LS"dsra32",Var("rd",FTy 5),Var("rt",FTy 5),Var("imm5",FTy 5)])),
26795       (Call
26796          ("Branch",CTy"instruction",
26797           Call("BLTZ",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
26798        Call("op1rai",sTy,TP[LS"bltz",Var("rs",FTy 5),Var("imm",F16)])),
26799       (Call
26800          ("Branch",CTy"instruction",
26801           Call("BGEZ",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
26802        Call("op1rai",sTy,TP[LS"bgez",Var("rs",FTy 5),Var("imm",F16)])),
26803       (Call
26804          ("Branch",CTy"instruction",
26805           Call("BLTZL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
26806        Call("op1rlai",sTy,TP[LS"bltzl",Var("rs",FTy 5),Var("imm",F16)])),
26807       (Call
26808          ("Branch",CTy"instruction",
26809           Call("BGEZL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
26810        Call("op1rlai",sTy,TP[LS"bgezl",Var("rs",FTy 5),Var("imm",F16)])),
26811       (Call
26812          ("Trap",CTy"instruction",
26813           Call("TGEI",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])),
26814        Call("op1ri",sTy,TP[LS"tgei",Var("rs",FTy 5),Var("imm",F16)])),
26815       (Call
26816          ("Trap",CTy"instruction",
26817           Call("TGEIU",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])),
26818        Call("op1ri",sTy,TP[LS"tgeiu",Var("rs",FTy 5),Var("imm",F16)])),
26819       (Call
26820          ("Trap",CTy"instruction",
26821           Call("TLTI",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])),
26822        Call("op1ri",sTy,TP[LS"tlti",Var("rs",FTy 5),Var("imm",F16)])),
26823       (Call
26824          ("Trap",CTy"instruction",
26825           Call("TLTIU",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])),
26826        Call("op1ri",sTy,TP[LS"tltiu",Var("rs",FTy 5),Var("imm",F16)])),
26827       (Call
26828          ("Trap",CTy"instruction",
26829           Call("TEQI",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])),
26830        Call("op1ri",sTy,TP[LS"teqi",Var("rs",FTy 5),Var("imm",F16)])),
26831       (Call
26832          ("Trap",CTy"instruction",
26833           Call("TNEI",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])),
26834        Call("op1ri",sTy,TP[LS"tnei",Var("rs",FTy 5),Var("imm",F16)])),
26835       (Call
26836          ("Branch",CTy"instruction",
26837           Call("BLTZAL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
26838        Call("op1rai",sTy,TP[LS"bltzal",Var("rs",FTy 5),Var("imm",F16)])),
26839       (Call
26840          ("Branch",CTy"instruction",
26841           Call("BGEZAL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
26842        Call("op1rai",sTy,TP[LS"bgezal",Var("rs",FTy 5),Var("imm",F16)])),
26843       (Call
26844          ("Branch",CTy"instruction",
26845           Call("BLTZALL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
26846        Call("op1rlai",sTy,TP[LS"bltzall",Var("rs",FTy 5),Var("imm",F16)])),
26847       (Call
26848          ("Branch",CTy"instruction",
26849           Call("BGEZALL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
26850        Call("op1rlai",sTy,TP[LS"bgezall",Var("rs",FTy 5),Var("imm",F16)])),
26851       (Call
26852          ("Branch",CTy"instruction",
26853           Call("J",CTy"Branch",Var("imm",FTy 26))),
26854        Call("op1ai",sTy,TP[LS"j",Var("imm",FTy 26)])),
26855       (Call
26856          ("Branch",CTy"instruction",
26857           Call("JAL",CTy"Branch",Var("imm",FTy 26))),
26858        Call("op1ai",sTy,TP[LS"jal",Var("imm",FTy 26)])),
26859       (Call
26860          ("CP",CTy"instruction",
26861           Call
26862             ("MFC0",CTy"CP",
26863              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])),
26864        Call
26865          ("op2roi",sTy,
26866           TP[LS"mfc0",Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])),
26867       (Call
26868          ("CP",CTy"instruction",
26869           Call
26870             ("DMFC0",CTy"CP",
26871              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])),
26872        Call
26873          ("op2roi",sTy,
26874           TP[LS"dmfc0",Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])),
26875       (Call
26876          ("CP",CTy"instruction",
26877           Call
26878             ("MTC0",CTy"CP",
26879              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])),
26880        Call
26881          ("op2roi",sTy,
26882           TP[LS"mtc0",Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])),
26883       (Call
26884          ("CP",CTy"instruction",
26885           Call
26886             ("DMTC0",CTy"CP",
26887              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])),
26888        Call
26889          ("op2roi",sTy,
26890           TP[LS"dmtc0",Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])),
26891       (Call
26892          ("Branch",CTy"instruction",
26893           Call("BEQ",CTy"Branch",TP[LW(0,5),LW(0,5),Var("imm",F16)])),
26894        Call("op1ai",sTy,TP[LS"b",Var("imm",F16)])),
26895       (Call
26896          ("Branch",CTy"instruction",
26897           Call
26898             ("BEQ",CTy"Branch",
26899              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
26900        Call
26901          ("op2rai",sTy,
26902           TP[LS"beq",Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
26903       (Call
26904          ("Branch",CTy"instruction",
26905           Call
26906             ("BNE",CTy"Branch",
26907              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
26908        Call
26909          ("op2rai",sTy,
26910           TP[LS"bne",Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
26911       (Call
26912          ("Branch",CTy"instruction",
26913           Call("BLEZ",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
26914        Call("op1rai",sTy,TP[LS"blez",Var("rs",FTy 5),Var("imm",F16)])),
26915       (Call
26916          ("Branch",CTy"instruction",
26917           Call("BGTZ",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
26918        Call("op1rai",sTy,TP[LS"bgtz",Var("rs",FTy 5),Var("imm",F16)])),
26919       (Call
26920          ("ArithI",CTy"instruction",
26921           Call
26922             ("ADDI",CTy"ArithI",
26923              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
26924        Call
26925          ("op2ri",sTy,
26926           TP[LS"addi",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
26927       (Call
26928          ("ArithI",CTy"instruction",
26929           Call
26930             ("ADDIU",CTy"ArithI",
26931              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
26932        Call
26933          ("op2ri",sTy,
26934           TP[LS"addiu",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
26935       (Call
26936          ("ArithI",CTy"instruction",
26937           Call
26938             ("SLTI",CTy"ArithI",
26939              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
26940        Call
26941          ("op2ri",sTy,
26942           TP[LS"slti",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
26943       (Call
26944          ("ArithI",CTy"instruction",
26945           Call
26946             ("SLTIU",CTy"ArithI",
26947              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
26948        Call
26949          ("op2ri",sTy,
26950           TP[LS"sltiu",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
26951       (Call
26952          ("ArithI",CTy"instruction",
26953           Call
26954             ("ANDI",CTy"ArithI",
26955              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
26956        Call
26957          ("op2ri",sTy,
26958           TP[LS"andi",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
26959       (Call
26960          ("ArithI",CTy"instruction",
26961           Call
26962             ("ORI",CTy"ArithI",
26963              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
26964        Call
26965          ("op2ri",sTy,
26966           TP[LS"ori",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
26967       (Call
26968          ("ArithI",CTy"instruction",
26969           Call
26970             ("XORI",CTy"ArithI",
26971              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
26972        Call
26973          ("op2ri",sTy,
26974           TP[LS"xori",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
26975       (Call
26976          ("ArithI",CTy"instruction",
26977           Call("LUI",CTy"ArithI",TP[Var("rt",FTy 5),Var("imm",F16)])),
26978        Call("op1ri",sTy,TP[LS"lui",Var("rt",FTy 5),Var("imm",F16)])),
26979       (Call
26980          ("Branch",CTy"instruction",
26981           Call
26982             ("BEQL",CTy"Branch",
26983              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
26984        Call
26985          ("op2rlai",sTy,
26986           TP[LS"beql",Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
26987       (Call
26988          ("Branch",CTy"instruction",
26989           Call
26990             ("BNEL",CTy"Branch",
26991              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
26992        Call
26993          ("op2rlai",sTy,
26994           TP[LS"bnel",Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
26995       (Call
26996          ("Branch",CTy"instruction",
26997           Call("BLEZL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
26998        Call("op1rlai",sTy,TP[LS"blezl",Var("rs",FTy 5),Var("imm",F16)])),
26999       (Call
27000          ("Branch",CTy"instruction",
27001           Call("BGTZL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
27002        Call("op1rlai",sTy,TP[LS"bgtzl",Var("rs",FTy 5),Var("imm",F16)])),
27003       (Call
27004          ("ArithI",CTy"instruction",
27005           Call
27006             ("DADDI",CTy"ArithI",
27007              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27008        Call
27009          ("op2ri",sTy,
27010           TP[LS"daddi",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27011       (Call
27012          ("ArithI",CTy"instruction",
27013           Call
27014             ("DADDIU",CTy"ArithI",
27015              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27016        Call
27017          ("op2ri",sTy,
27018           TP[LS"daddiu",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27019       (Call
27020          ("Load",CTy"instruction",
27021           Call
27022             ("LDL",CTy"Load",
27023              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27024        Call
27025          ("opmem",sTy,
27026           TP[LS"ldl",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27027       (Call
27028          ("Load",CTy"instruction",
27029           Call
27030             ("LDR",CTy"Load",
27031              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27032        Call
27033          ("opmem",sTy,
27034           TP[LS"ldr",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27035       (Call
27036          ("Load",CTy"instruction",
27037           Call
27038             ("LB",CTy"Load",
27039              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27040        Call
27041          ("opmem",sTy,
27042           TP[LS"lb",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27043       (Call
27044          ("Load",CTy"instruction",
27045           Call
27046             ("LH",CTy"Load",
27047              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27048        Call
27049          ("opmem",sTy,
27050           TP[LS"lh",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27051       (Call
27052          ("Load",CTy"instruction",
27053           Call
27054             ("LWL",CTy"Load",
27055              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27056        Call
27057          ("opmem",sTy,
27058           TP[LS"lwl",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27059       (Call
27060          ("Load",CTy"instruction",
27061           Call
27062             ("LW",CTy"Load",
27063              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27064        Call
27065          ("opmem",sTy,
27066           TP[LS"lw",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27067       (Call
27068          ("Load",CTy"instruction",
27069           Call
27070             ("LBU",CTy"Load",
27071              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27072        Call
27073          ("opmem",sTy,
27074           TP[LS"lbu",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27075       (Call
27076          ("Load",CTy"instruction",
27077           Call
27078             ("LHU",CTy"Load",
27079              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27080        Call
27081          ("opmem",sTy,
27082           TP[LS"lhu",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27083       (Call
27084          ("Load",CTy"instruction",
27085           Call
27086             ("LWR",CTy"Load",
27087              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27088        Call
27089          ("opmem",sTy,
27090           TP[LS"lwr",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27091       (Call
27092          ("Load",CTy"instruction",
27093           Call
27094             ("LWU",CTy"Load",
27095              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27096        Call
27097          ("opmem",sTy,
27098           TP[LS"lwu",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27099       (Call
27100          ("Store",CTy"instruction",
27101           Call
27102             ("SB",CTy"Store",
27103              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27104        Call
27105          ("opmem",sTy,
27106           TP[LS"sb",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27107       (Call
27108          ("Store",CTy"instruction",
27109           Call
27110             ("SH",CTy"Store",
27111              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27112        Call
27113          ("opmem",sTy,
27114           TP[LS"sh",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27115       (Call
27116          ("Store",CTy"instruction",
27117           Call
27118             ("SWL",CTy"Store",
27119              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27120        Call
27121          ("opmem",sTy,
27122           TP[LS"swl",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27123       (Call
27124          ("Store",CTy"instruction",
27125           Call
27126             ("SW",CTy"Store",
27127              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27128        Call
27129          ("opmem",sTy,
27130           TP[LS"sw",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27131       (Call
27132          ("Store",CTy"instruction",
27133           Call
27134             ("SDL",CTy"Store",
27135              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27136        Call
27137          ("opmem",sTy,
27138           TP[LS"sdl",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27139       (Call
27140          ("Store",CTy"instruction",
27141           Call
27142             ("SDR",CTy"Store",
27143              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27144        Call
27145          ("opmem",sTy,
27146           TP[LS"sdr",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27147       (Call
27148          ("Store",CTy"instruction",
27149           Call
27150             ("SWR",CTy"Store",
27151              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27152        Call
27153          ("opmem",sTy,
27154           TP[LS"swr",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27155       (Call
27156          ("Load",CTy"instruction",
27157           Call
27158             ("LL",CTy"Load",
27159              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27160        Call
27161          ("opmem",sTy,
27162           TP[LS"ll",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27163       (Call
27164          ("Load",CTy"instruction",
27165           Call
27166             ("LLD",CTy"Load",
27167              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27168        Call
27169          ("opmem",sTy,
27170           TP[LS"lld",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27171       (Call
27172          ("Load",CTy"instruction",
27173           Call
27174             ("LD",CTy"Load",
27175              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27176        Call
27177          ("opmem",sTy,
27178           TP[LS"ld",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27179       (Call
27180          ("Store",CTy"instruction",
27181           Call
27182             ("SC",CTy"Store",
27183              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27184        Call
27185          ("opmem",sTy,
27186           TP[LS"sc",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27187       (Call
27188          ("Store",CTy"instruction",
27189           Call
27190             ("SCD",CTy"Store",
27191              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27192        Call
27193          ("opmem",sTy,
27194           TP[LS"scd",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27195       (Call
27196          ("Store",CTy"instruction",
27197           Call
27198             ("SD",CTy"Store",
27199              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27200        Call
27201          ("opmem",sTy,
27202           TP[LS"sd",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])),
27203       (Call
27204          ("CACHE",CTy"instruction",
27205           TP[Var("rs",FTy 5),Var("opn",FTy 5),Var("imm",F16)]),
27206        CC[LS"cache ",Call("ihex",sTy,Var("opn",FTy 5)),LS", ",
27207           Call("ihex",sTy,Var("imm",F16)),LS"(",
27208           Call("reg_name",sTy,Var("rs",FTy 5)),LS")"]),
27209       (Const("SYSCALL",CTy"instruction"),LS"syscall"),
27210       (Const("BREAK",CTy"instruction"),LS"break"),
27211       (Call("SYNC",CTy"instruction",Var("imm5",FTy 5)),
27212        CC[LS"sync ",Call("ihex",sTy,Var("imm5",FTy 5))]),
27213       (Const("TLBR",CTy"instruction"),LS"tlbr"),
27214       (Const("TLBWI",CTy"instruction"),LS"tlbwi"),
27215       (Const("TLBWR",CTy"instruction"),LS"tlbwr"),
27216       (Const("TLBP",CTy"instruction"),LS"tlbp"),
27217       (Const("ERET",CTy"instruction"),LS"eret"),
27218       (Call("RDHWR",CTy"instruction",TP[Var("rt",FTy 5),Var("rd",FTy 5)]),
27219        Call("op2r",sTy,TP[LS"rdhwr",Var("rt",FTy 5),Var("rd",FTy 5)])),
27220       (Const("WAIT",CTy"instruction"),LS"wait"),
27221       (Call("COP1",CTy"instruction",AVar(CTy"COP1")),
27222        Call("COP1InstructionToString",sTy,Var("i",CTy"instruction"))),
27223       (Call("COP2",CTy"instruction",AVar(CTy"COP2")),
27224        Call("COP2InstructionToString",sTy,Var("i",CTy"instruction"))),
27225       (Call("LWC2",CTy"instruction",AVar(CTy"LWC2")),
27226        Call("LWC2InstructionToString",sTy,Var("i",CTy"instruction"))),
27227       (Call("LDC2",CTy"instruction",AVar(CTy"LDC2")),
27228        Call("LDC2InstructionToString",sTy,Var("i",CTy"instruction"))),
27229       (Call("SWC2",CTy"instruction",AVar(CTy"SWC2")),
27230        Call("SWC2InstructionToString",sTy,Var("i",CTy"instruction"))),
27231       (Call("SDC2",CTy"instruction",AVar(CTy"SDC2")),
27232        Call("SDC2InstructionToString",sTy,Var("i",CTy"instruction"))),
27233       (Const("Unpredictable",CTy"instruction"),LS"???"),
27234       (Const("ReservedInstruction",CTy"instruction"),LS"???")]))
27235;
27236val Encode_def = Def
27237  ("Encode",Var("i",CTy"instruction"),
27238   Close
27239     (qVar"state",
27240      CS(Var("i",CTy"instruction"),
27241         [(Call
27242             ("Shift",CTy"instruction",
27243              Call
27244                ("SLL",CTy"Shift",
27245                 TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
27246           TP[Call
27247                ("form1",F32,
27248                 TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),
27249                    Var("imm5",FTy 5),LW(0,6)]),qVar"state"]),
27250          (Call
27251             ("Shift",CTy"instruction",
27252              Call
27253                ("SRL",CTy"Shift",
27254                 TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
27255           TP[Call
27256                ("form1",F32,
27257                 TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),
27258                    Var("imm5",FTy 5),LW(2,6)]),qVar"state"]),
27259          (Call
27260             ("Shift",CTy"instruction",
27261              Call
27262                ("SRA",CTy"Shift",
27263                 TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
27264           TP[Call
27265                ("form1",F32,
27266                 TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),
27267                    Var("imm5",FTy 5),LW(3,6)]),qVar"state"]),
27268          (Call
27269             ("Shift",CTy"instruction",
27270              Call
27271                ("SLLV",CTy"Shift",
27272                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27273           TP[Call
27274                ("form1",F32,
27275                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27276                    LW(0,5),LW(4,6)]),qVar"state"]),
27277          (Call
27278             ("Shift",CTy"instruction",
27279              Call
27280                ("SRLV",CTy"Shift",
27281                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27282           TP[Call
27283                ("form1",F32,
27284                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27285                    LW(0,5),LW(6,6)]),qVar"state"]),
27286          (Call
27287             ("Shift",CTy"instruction",
27288              Call
27289                ("SRAV",CTy"Shift",
27290                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27291           TP[Call
27292                ("form1",F32,
27293                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27294                    LW(0,5),LW(7,6)]),qVar"state"]),
27295          (Call
27296             ("Branch",CTy"instruction",
27297              Call("JR",CTy"Branch",Var("rs",FTy 5))),
27298           TP[Call
27299                ("form1",F32,
27300                 TP[Var("rs",FTy 5),LW(0,5),LW(0,5),LW(0,5),LW(8,6)]),
27301              qVar"state"]),
27302          (Call
27303             ("Branch",CTy"instruction",
27304              Call("JALR",CTy"Branch",TP[Var("rs",FTy 5),Var("rd",FTy 5)])),
27305           TP[Call
27306                ("form1",F32,
27307                 TP[Var("rs",FTy 5),LW(0,5),Var("rd",FTy 5),LW(0,5),
27308                    LW(9,6)]),qVar"state"]),
27309          (Call
27310             ("MultDiv",CTy"instruction",
27311              Call("MFHI",CTy"MultDiv",Var("rd",FTy 5))),
27312           TP[Call
27313                ("form1",F32,
27314                 TP[LW(0,5),LW(0,5),Var("rd",FTy 5),LW(0,5),LW(16,6)]),
27315              qVar"state"]),
27316          (Call
27317             ("MultDiv",CTy"instruction",
27318              Call("MTHI",CTy"MultDiv",Var("rs",FTy 5))),
27319           TP[Call
27320                ("form1",F32,
27321                 TP[Var("rs",FTy 5),LW(0,5),LW(0,5),LW(0,5),LW(17,6)]),
27322              qVar"state"]),
27323          (Call
27324             ("MultDiv",CTy"instruction",
27325              Call("MFLO",CTy"MultDiv",Var("rd",FTy 5))),
27326           TP[Call
27327                ("form1",F32,
27328                 TP[LW(0,5),LW(0,5),Var("rd",FTy 5),LW(0,5),LW(18,6)]),
27329              qVar"state"]),
27330          (Call
27331             ("MultDiv",CTy"instruction",
27332              Call("MTLO",CTy"MultDiv",Var("rs",FTy 5))),
27333           TP[Call
27334                ("form1",F32,
27335                 TP[Var("rs",FTy 5),LW(0,5),LW(0,5),LW(0,5),LW(19,6)]),
27336              qVar"state"]),
27337          (Call
27338             ("Shift",CTy"instruction",
27339              Call
27340                ("DSLLV",CTy"Shift",
27341                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27342           TP[Call
27343                ("form1",F32,
27344                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27345                    LW(0,5),LW(20,6)]),qVar"state"]),
27346          (Call
27347             ("Shift",CTy"instruction",
27348              Call
27349                ("DSRLV",CTy"Shift",
27350                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27351           TP[Call
27352                ("form1",F32,
27353                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27354                    LW(0,5),LW(22,6)]),qVar"state"]),
27355          (Call
27356             ("Shift",CTy"instruction",
27357              Call
27358                ("DSRAV",CTy"Shift",
27359                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27360           TP[Call
27361                ("form1",F32,
27362                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27363                    LW(0,5),LW(23,6)]),qVar"state"]),
27364          (Call
27365             ("MultDiv",CTy"instruction",
27366              Call
27367                ("MADD",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
27368           TP[Call
27369                ("form5",F32,
27370                 TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,6)]),
27371              qVar"state"]),
27372          (Call
27373             ("MultDiv",CTy"instruction",
27374              Call
27375                ("MADDU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
27376           TP[Call
27377                ("form5",F32,
27378                 TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(1,6)]),
27379              qVar"state"]),
27380          (Call
27381             ("MultDiv",CTy"instruction",
27382              Call
27383                ("MSUB",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
27384           TP[Call
27385                ("form5",F32,
27386                 TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(4,6)]),
27387              qVar"state"]),
27388          (Call
27389             ("MultDiv",CTy"instruction",
27390              Call
27391                ("MSUBU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
27392           TP[Call
27393                ("form5",F32,
27394                 TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(5,6)]),
27395              qVar"state"]),
27396          (Call
27397             ("MultDiv",CTy"instruction",
27398              Call
27399                ("MUL",CTy"MultDiv",
27400                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27401           TP[Call
27402                ("form5",F32,
27403                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27404                    LW(2,6)]),qVar"state"]),
27405          (Call
27406             ("MultDiv",CTy"instruction",
27407              Call
27408                ("MULT",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
27409           TP[Call
27410                ("form1",F32,
27411                 TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),
27412                    LW(24,6)]),qVar"state"]),
27413          (Call
27414             ("MultDiv",CTy"instruction",
27415              Call
27416                ("MULTU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
27417           TP[Call
27418                ("form1",F32,
27419                 TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),
27420                    LW(25,6)]),qVar"state"]),
27421          (Call
27422             ("MultDiv",CTy"instruction",
27423              Call("DIV",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
27424           TP[Call
27425                ("form1",F32,
27426                 TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),
27427                    LW(26,6)]),qVar"state"]),
27428          (Call
27429             ("MultDiv",CTy"instruction",
27430              Call
27431                ("DIVU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
27432           TP[Call
27433                ("form1",F32,
27434                 TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),
27435                    LW(27,6)]),qVar"state"]),
27436          (Call
27437             ("MultDiv",CTy"instruction",
27438              Call
27439                ("DMULT",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
27440           TP[Call
27441                ("form1",F32,
27442                 TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),
27443                    LW(28,6)]),qVar"state"]),
27444          (Call
27445             ("MultDiv",CTy"instruction",
27446              Call
27447                ("DMULTU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
27448           TP[Call
27449                ("form1",F32,
27450                 TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),
27451                    LW(29,6)]),qVar"state"]),
27452          (Call
27453             ("MultDiv",CTy"instruction",
27454              Call
27455                ("DDIV",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
27456           TP[Call
27457                ("form1",F32,
27458                 TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),
27459                    LW(30,6)]),qVar"state"]),
27460          (Call
27461             ("MultDiv",CTy"instruction",
27462              Call
27463                ("DDIVU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
27464           TP[Call
27465                ("form1",F32,
27466                 TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),
27467                    LW(31,6)]),qVar"state"]),
27468          (Call
27469             ("ArithR",CTy"instruction",
27470              Call
27471                ("MOVZ",CTy"ArithR",
27472                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27473           TP[Call
27474                ("form1",F32,
27475                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27476                    LW(0,5),LW(10,6)]),qVar"state"]),
27477          (Call
27478             ("ArithR",CTy"instruction",
27479              Call
27480                ("MOVN",CTy"ArithR",
27481                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27482           TP[Call
27483                ("form1",F32,
27484                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27485                    LW(0,5),LW(11,6)]),qVar"state"]),
27486          (Call
27487             ("ArithR",CTy"instruction",
27488              Call
27489                ("ADD",CTy"ArithR",
27490                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27491           TP[Call
27492                ("form1",F32,
27493                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27494                    LW(0,5),LW(32,6)]),qVar"state"]),
27495          (Call
27496             ("ArithR",CTy"instruction",
27497              Call
27498                ("ADDU",CTy"ArithR",
27499                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27500           TP[Call
27501                ("form1",F32,
27502                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27503                    LW(0,5),LW(33,6)]),qVar"state"]),
27504          (Call
27505             ("ArithR",CTy"instruction",
27506              Call
27507                ("SUB",CTy"ArithR",
27508                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27509           TP[Call
27510                ("form1",F32,
27511                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27512                    LW(0,5),LW(34,6)]),qVar"state"]),
27513          (Call
27514             ("ArithR",CTy"instruction",
27515              Call
27516                ("SUBU",CTy"ArithR",
27517                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27518           TP[Call
27519                ("form1",F32,
27520                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27521                    LW(0,5),LW(35,6)]),qVar"state"]),
27522          (Call
27523             ("ArithR",CTy"instruction",
27524              Call
27525                ("AND",CTy"ArithR",
27526                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27527           TP[Call
27528                ("form1",F32,
27529                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27530                    LW(0,5),LW(36,6)]),qVar"state"]),
27531          (Call
27532             ("ArithR",CTy"instruction",
27533              Call
27534                ("OR",CTy"ArithR",
27535                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27536           TP[Call
27537                ("form1",F32,
27538                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27539                    LW(0,5),LW(37,6)]),qVar"state"]),
27540          (Call
27541             ("ArithR",CTy"instruction",
27542              Call
27543                ("XOR",CTy"ArithR",
27544                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27545           TP[Call
27546                ("form1",F32,
27547                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27548                    LW(0,5),LW(38,6)]),qVar"state"]),
27549          (Call
27550             ("ArithR",CTy"instruction",
27551              Call
27552                ("NOR",CTy"ArithR",
27553                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27554           TP[Call
27555                ("form1",F32,
27556                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27557                    LW(0,5),LW(39,6)]),qVar"state"]),
27558          (Call
27559             ("ArithR",CTy"instruction",
27560              Call
27561                ("SLT",CTy"ArithR",
27562                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27563           TP[Call
27564                ("form1",F32,
27565                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27566                    LW(0,5),LW(42,6)]),qVar"state"]),
27567          (Call
27568             ("ArithR",CTy"instruction",
27569              Call
27570                ("SLTU",CTy"ArithR",
27571                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27572           TP[Call
27573                ("form1",F32,
27574                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27575                    LW(0,5),LW(43,6)]),qVar"state"]),
27576          (Call
27577             ("ArithR",CTy"instruction",
27578              Call
27579                ("DADD",CTy"ArithR",
27580                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27581           TP[Call
27582                ("form1",F32,
27583                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27584                    LW(0,5),LW(44,6)]),qVar"state"]),
27585          (Call
27586             ("ArithR",CTy"instruction",
27587              Call
27588                ("DADDU",CTy"ArithR",
27589                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27590           TP[Call
27591                ("form1",F32,
27592                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27593                    LW(0,5),LW(45,6)]),qVar"state"]),
27594          (Call
27595             ("ArithR",CTy"instruction",
27596              Call
27597                ("DSUB",CTy"ArithR",
27598                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27599           TP[Call
27600                ("form1",F32,
27601                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27602                    LW(0,5),LW(46,6)]),qVar"state"]),
27603          (Call
27604             ("ArithR",CTy"instruction",
27605              Call
27606                ("DSUBU",CTy"ArithR",
27607                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
27608           TP[Call
27609                ("form1",F32,
27610                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
27611                    LW(0,5),LW(47,6)]),qVar"state"]),
27612          (Call
27613             ("Trap",CTy"instruction",
27614              Call("TGE",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
27615           TP[Call
27616                ("form1",F32,
27617                 TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),
27618                    LW(48,6)]),qVar"state"]),
27619          (Call
27620             ("Trap",CTy"instruction",
27621              Call("TGEU",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
27622           TP[Call
27623                ("form1",F32,
27624                 TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),
27625                    LW(49,6)]),qVar"state"]),
27626          (Call
27627             ("Trap",CTy"instruction",
27628              Call("TLT",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
27629           TP[Call
27630                ("form1",F32,
27631                 TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),
27632                    LW(50,6)]),qVar"state"]),
27633          (Call
27634             ("Trap",CTy"instruction",
27635              Call("TLTU",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
27636           TP[Call
27637                ("form1",F32,
27638                 TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),
27639                    LW(51,6)]),qVar"state"]),
27640          (Call
27641             ("Trap",CTy"instruction",
27642              Call("TEQ",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
27643           TP[Call
27644                ("form1",F32,
27645                 TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),
27646                    LW(52,6)]),qVar"state"]),
27647          (Call
27648             ("Trap",CTy"instruction",
27649              Call("TNE",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
27650           TP[Call
27651                ("form1",F32,
27652                 TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),
27653                    LW(54,6)]),qVar"state"]),
27654          (Call
27655             ("Shift",CTy"instruction",
27656              Call
27657                ("DSLL",CTy"Shift",
27658                 TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
27659           TP[Call
27660                ("form1",F32,
27661                 TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),
27662                    Var("imm5",FTy 5),LW(56,6)]),qVar"state"]),
27663          (Call
27664             ("Shift",CTy"instruction",
27665              Call
27666                ("DSRL",CTy"Shift",
27667                 TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
27668           TP[Call
27669                ("form1",F32,
27670                 TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),
27671                    Var("imm5",FTy 5),LW(58,6)]),qVar"state"]),
27672          (Call
27673             ("Shift",CTy"instruction",
27674              Call
27675                ("DSRA",CTy"Shift",
27676                 TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
27677           TP[Call
27678                ("form1",F32,
27679                 TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),
27680                    Var("imm5",FTy 5),LW(59,6)]),qVar"state"]),
27681          (Call
27682             ("Shift",CTy"instruction",
27683              Call
27684                ("DSLL32",CTy"Shift",
27685                 TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
27686           TP[Call
27687                ("form1",F32,
27688                 TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),
27689                    Var("imm5",FTy 5),LW(60,6)]),qVar"state"]),
27690          (Call
27691             ("Shift",CTy"instruction",
27692              Call
27693                ("DSRL32",CTy"Shift",
27694                 TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
27695           TP[Call
27696                ("form1",F32,
27697                 TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),
27698                    Var("imm5",FTy 5),LW(62,6)]),qVar"state"]),
27699          (Call
27700             ("Shift",CTy"instruction",
27701              Call
27702                ("DSRA32",CTy"Shift",
27703                 TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
27704           TP[Call
27705                ("form1",F32,
27706                 TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),
27707                    Var("imm5",FTy 5),LW(63,6)]),qVar"state"]),
27708          (Call
27709             ("Branch",CTy"instruction",
27710              Call("BLTZ",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
27711           TP[Call("form2",F32,TP[Var("rs",FTy 5),LW(0,5),Var("imm",F16)]),
27712              qVar"state"]),
27713          (Call
27714             ("Branch",CTy"instruction",
27715              Call("BGEZ",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
27716           TP[Call("form2",F32,TP[Var("rs",FTy 5),LW(1,5),Var("imm",F16)]),
27717              qVar"state"]),
27718          (Call
27719             ("Branch",CTy"instruction",
27720              Call("BLTZL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
27721           TP[Call("form2",F32,TP[Var("rs",FTy 5),LW(2,5),Var("imm",F16)]),
27722              qVar"state"]),
27723          (Call
27724             ("Branch",CTy"instruction",
27725              Call("BGEZL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
27726           TP[Call("form2",F32,TP[Var("rs",FTy 5),LW(3,5),Var("imm",F16)]),
27727              qVar"state"]),
27728          (Call
27729             ("Trap",CTy"instruction",
27730              Call("TGEI",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])),
27731           TP[Call("form2",F32,TP[Var("rs",FTy 5),LW(8,5),Var("imm",F16)]),
27732              qVar"state"]),
27733          (Call
27734             ("Trap",CTy"instruction",
27735              Call("TGEIU",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])),
27736           TP[Call("form2",F32,TP[Var("rs",FTy 5),LW(9,5),Var("imm",F16)]),
27737              qVar"state"]),
27738          (Call
27739             ("Trap",CTy"instruction",
27740              Call("TLTI",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])),
27741           TP[Call
27742                ("form2",F32,TP[Var("rs",FTy 5),LW(10,5),Var("imm",F16)]),
27743              qVar"state"]),
27744          (Call
27745             ("Trap",CTy"instruction",
27746              Call("TLTIU",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])),
27747           TP[Call
27748                ("form2",F32,TP[Var("rs",FTy 5),LW(11,5),Var("imm",F16)]),
27749              qVar"state"]),
27750          (Call
27751             ("Trap",CTy"instruction",
27752              Call("TEQI",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])),
27753           TP[Call
27754                ("form2",F32,TP[Var("rs",FTy 5),LW(12,5),Var("imm",F16)]),
27755              qVar"state"]),
27756          (Call
27757             ("Trap",CTy"instruction",
27758              Call("TNEI",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])),
27759           TP[Call
27760                ("form2",F32,TP[Var("rs",FTy 5),LW(14,5),Var("imm",F16)]),
27761              qVar"state"]),
27762          (Call
27763             ("Branch",CTy"instruction",
27764              Call
27765                ("BLTZAL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
27766           TP[Call
27767                ("form2",F32,TP[Var("rs",FTy 5),LW(16,5),Var("imm",F16)]),
27768              qVar"state"]),
27769          (Call
27770             ("Branch",CTy"instruction",
27771              Call
27772                ("BGEZAL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
27773           TP[Call
27774                ("form2",F32,TP[Var("rs",FTy 5),LW(17,5),Var("imm",F16)]),
27775              qVar"state"]),
27776          (Call
27777             ("Branch",CTy"instruction",
27778              Call
27779                ("BLTZALL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
27780           TP[Call
27781                ("form2",F32,TP[Var("rs",FTy 5),LW(18,5),Var("imm",F16)]),
27782              qVar"state"]),
27783          (Call
27784             ("Branch",CTy"instruction",
27785              Call
27786                ("BGEZALL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
27787           TP[Call
27788                ("form2",F32,TP[Var("rs",FTy 5),LW(19,5),Var("imm",F16)]),
27789              qVar"state"]),
27790          (Call
27791             ("Branch",CTy"instruction",
27792              Call("J",CTy"Branch",Var("imm",FTy 26))),
27793           TP[CC[LW(2,6),Var("imm",FTy 26)],qVar"state"]),
27794          (Call
27795             ("Branch",CTy"instruction",
27796              Call("JAL",CTy"Branch",Var("imm",FTy 26))),
27797           TP[CC[LW(3,6),Var("imm",FTy 26)],qVar"state"]),
27798          (Call
27799             ("CP",CTy"instruction",
27800              Call
27801                ("MFC0",CTy"CP",
27802                 TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])),
27803           TP[Call
27804                ("form3",F32,
27805                 TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),
27806                    Var("sel",FTy 3)]),qVar"state"]),
27807          (Call
27808             ("CP",CTy"instruction",
27809              Call
27810                ("DMFC0",CTy"CP",
27811                 TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])),
27812           TP[Call
27813                ("form3",F32,
27814                 TP[LW(1,5),Var("rt",FTy 5),Var("rd",FTy 5),
27815                    Var("sel",FTy 3)]),qVar"state"]),
27816          (Call
27817             ("CP",CTy"instruction",
27818              Call
27819                ("MTC0",CTy"CP",
27820                 TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])),
27821           TP[Call
27822                ("form3",F32,
27823                 TP[LW(4,5),Var("rt",FTy 5),Var("rd",FTy 5),
27824                    Var("sel",FTy 3)]),qVar"state"]),
27825          (Call
27826             ("CP",CTy"instruction",
27827              Call
27828                ("DMTC0",CTy"CP",
27829                 TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])),
27830           TP[Call
27831                ("form3",F32,
27832                 TP[LW(5,5),Var("rt",FTy 5),Var("rd",FTy 5),
27833                    Var("sel",FTy 3)]),qVar"state"]),
27834          (Call
27835             ("Branch",CTy"instruction",
27836              Call
27837                ("BEQ",CTy"Branch",
27838                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27839           TP[Call
27840                ("form4",F32,
27841                 TP[LW(4,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)]),
27842              qVar"state"]),
27843          (Call
27844             ("Branch",CTy"instruction",
27845              Call
27846                ("BNE",CTy"Branch",
27847                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27848           TP[Call
27849                ("form4",F32,
27850                 TP[LW(5,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)]),
27851              qVar"state"]),
27852          (Call
27853             ("Branch",CTy"instruction",
27854              Call("BLEZ",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
27855           TP[Call
27856                ("form4",F32,
27857                 TP[LW(6,6),Var("rs",FTy 5),LW(0,5),Var("imm",F16)]),
27858              qVar"state"]),
27859          (Call
27860             ("Branch",CTy"instruction",
27861              Call("BGTZ",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
27862           TP[Call
27863                ("form4",F32,
27864                 TP[LW(7,6),Var("rs",FTy 5),LW(0,5),Var("imm",F16)]),
27865              qVar"state"]),
27866          (Call
27867             ("ArithI",CTy"instruction",
27868              Call
27869                ("ADDI",CTy"ArithI",
27870                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27871           TP[Call
27872                ("form4",F32,
27873                 TP[LW(8,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)]),
27874              qVar"state"]),
27875          (Call
27876             ("ArithI",CTy"instruction",
27877              Call
27878                ("ADDIU",CTy"ArithI",
27879                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27880           TP[Call
27881                ("form4",F32,
27882                 TP[LW(9,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)]),
27883              qVar"state"]),
27884          (Call
27885             ("ArithI",CTy"instruction",
27886              Call
27887                ("SLTI",CTy"ArithI",
27888                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27889           TP[Call
27890                ("form4",F32,
27891                 TP[LW(10,6),Var("rs",FTy 5),Var("rt",FTy 5),
27892                    Var("imm",F16)]),qVar"state"]),
27893          (Call
27894             ("ArithI",CTy"instruction",
27895              Call
27896                ("SLTIU",CTy"ArithI",
27897                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27898           TP[Call
27899                ("form4",F32,
27900                 TP[LW(11,6),Var("rs",FTy 5),Var("rt",FTy 5),
27901                    Var("imm",F16)]),qVar"state"]),
27902          (Call
27903             ("ArithI",CTy"instruction",
27904              Call
27905                ("ANDI",CTy"ArithI",
27906                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27907           TP[Call
27908                ("form4",F32,
27909                 TP[LW(12,6),Var("rs",FTy 5),Var("rt",FTy 5),
27910                    Var("imm",F16)]),qVar"state"]),
27911          (Call
27912             ("ArithI",CTy"instruction",
27913              Call
27914                ("ORI",CTy"ArithI",
27915                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27916           TP[Call
27917                ("form4",F32,
27918                 TP[LW(13,6),Var("rs",FTy 5),Var("rt",FTy 5),
27919                    Var("imm",F16)]),qVar"state"]),
27920          (Call
27921             ("ArithI",CTy"instruction",
27922              Call
27923                ("XORI",CTy"ArithI",
27924                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27925           TP[Call
27926                ("form4",F32,
27927                 TP[LW(14,6),Var("rs",FTy 5),Var("rt",FTy 5),
27928                    Var("imm",F16)]),qVar"state"]),
27929          (Call
27930             ("ArithI",CTy"instruction",
27931              Call("LUI",CTy"ArithI",TP[Var("rt",FTy 5),Var("imm",F16)])),
27932           TP[Call
27933                ("form4",F32,
27934                 TP[LW(15,6),LW(0,5),Var("rt",FTy 5),Var("imm",F16)]),
27935              qVar"state"]),
27936          (Call
27937             ("Branch",CTy"instruction",
27938              Call
27939                ("BEQL",CTy"Branch",
27940                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27941           TP[Call
27942                ("form4",F32,
27943                 TP[LW(20,6),Var("rs",FTy 5),Var("rt",FTy 5),
27944                    Var("imm",F16)]),qVar"state"]),
27945          (Call
27946             ("Branch",CTy"instruction",
27947              Call
27948                ("BNEL",CTy"Branch",
27949                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27950           TP[Call
27951                ("form4",F32,
27952                 TP[LW(21,6),Var("rs",FTy 5),Var("rt",FTy 5),
27953                    Var("imm",F16)]),qVar"state"]),
27954          (Call
27955             ("Branch",CTy"instruction",
27956              Call("BLEZL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
27957           TP[Call
27958                ("form4",F32,
27959                 TP[LW(22,6),Var("rs",FTy 5),LW(0,5),Var("imm",F16)]),
27960              qVar"state"]),
27961          (Call
27962             ("Branch",CTy"instruction",
27963              Call("BGTZL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
27964           TP[Call
27965                ("form4",F32,
27966                 TP[LW(23,6),Var("rs",FTy 5),LW(0,5),Var("imm",F16)]),
27967              qVar"state"]),
27968          (Call
27969             ("ArithI",CTy"instruction",
27970              Call
27971                ("DADDI",CTy"ArithI",
27972                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27973           TP[Call
27974                ("form4",F32,
27975                 TP[LW(24,6),Var("rs",FTy 5),Var("rt",FTy 5),
27976                    Var("imm",F16)]),qVar"state"]),
27977          (Call
27978             ("ArithI",CTy"instruction",
27979              Call
27980                ("DADDIU",CTy"ArithI",
27981                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27982           TP[Call
27983                ("form4",F32,
27984                 TP[LW(25,6),Var("rs",FTy 5),Var("rt",FTy 5),
27985                    Var("imm",F16)]),qVar"state"]),
27986          (Call
27987             ("Load",CTy"instruction",
27988              Call
27989                ("LDL",CTy"Load",
27990                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
27991           TP[Call
27992                ("form4",F32,
27993                 TP[LW(26,6),Var("rs",FTy 5),Var("rt",FTy 5),
27994                    Var("imm",F16)]),qVar"state"]),
27995          (Call
27996             ("Load",CTy"instruction",
27997              Call
27998                ("LDR",CTy"Load",
27999                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28000           TP[Call
28001                ("form4",F32,
28002                 TP[LW(27,6),Var("rs",FTy 5),Var("rt",FTy 5),
28003                    Var("imm",F16)]),qVar"state"]),
28004          (Call
28005             ("Load",CTy"instruction",
28006              Call
28007                ("LB",CTy"Load",
28008                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28009           TP[Call
28010                ("form4",F32,
28011                 TP[LW(32,6),Var("rs",FTy 5),Var("rt",FTy 5),
28012                    Var("imm",F16)]),qVar"state"]),
28013          (Call
28014             ("Load",CTy"instruction",
28015              Call
28016                ("LH",CTy"Load",
28017                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28018           TP[Call
28019                ("form4",F32,
28020                 TP[LW(33,6),Var("rs",FTy 5),Var("rt",FTy 5),
28021                    Var("imm",F16)]),qVar"state"]),
28022          (Call
28023             ("Load",CTy"instruction",
28024              Call
28025                ("LWL",CTy"Load",
28026                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28027           TP[Call
28028                ("form4",F32,
28029                 TP[LW(34,6),Var("rs",FTy 5),Var("rt",FTy 5),
28030                    Var("imm",F16)]),qVar"state"]),
28031          (Call
28032             ("Load",CTy"instruction",
28033              Call
28034                ("LW",CTy"Load",
28035                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28036           TP[Call
28037                ("form4",F32,
28038                 TP[LW(35,6),Var("rs",FTy 5),Var("rt",FTy 5),
28039                    Var("imm",F16)]),qVar"state"]),
28040          (Call
28041             ("Load",CTy"instruction",
28042              Call
28043                ("LBU",CTy"Load",
28044                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28045           TP[Call
28046                ("form4",F32,
28047                 TP[LW(36,6),Var("rs",FTy 5),Var("rt",FTy 5),
28048                    Var("imm",F16)]),qVar"state"]),
28049          (Call
28050             ("Load",CTy"instruction",
28051              Call
28052                ("LHU",CTy"Load",
28053                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28054           TP[Call
28055                ("form4",F32,
28056                 TP[LW(37,6),Var("rs",FTy 5),Var("rt",FTy 5),
28057                    Var("imm",F16)]),qVar"state"]),
28058          (Call
28059             ("Load",CTy"instruction",
28060              Call
28061                ("LWR",CTy"Load",
28062                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28063           TP[Call
28064                ("form4",F32,
28065                 TP[LW(38,6),Var("rs",FTy 5),Var("rt",FTy 5),
28066                    Var("imm",F16)]),qVar"state"]),
28067          (Call
28068             ("Load",CTy"instruction",
28069              Call
28070                ("LWU",CTy"Load",
28071                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28072           TP[Call
28073                ("form4",F32,
28074                 TP[LW(39,6),Var("rs",FTy 5),Var("rt",FTy 5),
28075                    Var("imm",F16)]),qVar"state"]),
28076          (Call
28077             ("Store",CTy"instruction",
28078              Call
28079                ("SB",CTy"Store",
28080                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28081           TP[Call
28082                ("form4",F32,
28083                 TP[LW(40,6),Var("rs",FTy 5),Var("rt",FTy 5),
28084                    Var("imm",F16)]),qVar"state"]),
28085          (Call
28086             ("Store",CTy"instruction",
28087              Call
28088                ("SH",CTy"Store",
28089                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28090           TP[Call
28091                ("form4",F32,
28092                 TP[LW(41,6),Var("rs",FTy 5),Var("rt",FTy 5),
28093                    Var("imm",F16)]),qVar"state"]),
28094          (Call
28095             ("Store",CTy"instruction",
28096              Call
28097                ("SWL",CTy"Store",
28098                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28099           TP[Call
28100                ("form4",F32,
28101                 TP[LW(42,6),Var("rs",FTy 5),Var("rt",FTy 5),
28102                    Var("imm",F16)]),qVar"state"]),
28103          (Call
28104             ("Store",CTy"instruction",
28105              Call
28106                ("SW",CTy"Store",
28107                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28108           TP[Call
28109                ("form4",F32,
28110                 TP[LW(43,6),Var("rs",FTy 5),Var("rt",FTy 5),
28111                    Var("imm",F16)]),qVar"state"]),
28112          (Call
28113             ("Store",CTy"instruction",
28114              Call
28115                ("SDL",CTy"Store",
28116                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28117           TP[Call
28118                ("form4",F32,
28119                 TP[LW(44,6),Var("rs",FTy 5),Var("rt",FTy 5),
28120                    Var("imm",F16)]),qVar"state"]),
28121          (Call
28122             ("Store",CTy"instruction",
28123              Call
28124                ("SDR",CTy"Store",
28125                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28126           TP[Call
28127                ("form4",F32,
28128                 TP[LW(45,6),Var("rs",FTy 5),Var("rt",FTy 5),
28129                    Var("imm",F16)]),qVar"state"]),
28130          (Call
28131             ("Store",CTy"instruction",
28132              Call
28133                ("SWR",CTy"Store",
28134                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28135           TP[Call
28136                ("form4",F32,
28137                 TP[LW(46,6),Var("rs",FTy 5),Var("rt",FTy 5),
28138                    Var("imm",F16)]),qVar"state"]),
28139          (Call
28140             ("Load",CTy"instruction",
28141              Call
28142                ("LL",CTy"Load",
28143                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28144           TP[Call
28145                ("form4",F32,
28146                 TP[LW(48,6),Var("rs",FTy 5),Var("rt",FTy 5),
28147                    Var("imm",F16)]),qVar"state"]),
28148          (Call
28149             ("Load",CTy"instruction",
28150              Call
28151                ("LLD",CTy"Load",
28152                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28153           TP[Call
28154                ("form4",F32,
28155                 TP[LW(52,6),Var("rs",FTy 5),Var("rt",FTy 5),
28156                    Var("imm",F16)]),qVar"state"]),
28157          (Call
28158             ("Load",CTy"instruction",
28159              Call
28160                ("LD",CTy"Load",
28161                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28162           TP[Call
28163                ("form4",F32,
28164                 TP[LW(55,6),Var("rs",FTy 5),Var("rt",FTy 5),
28165                    Var("imm",F16)]),qVar"state"]),
28166          (Call
28167             ("Store",CTy"instruction",
28168              Call
28169                ("SC",CTy"Store",
28170                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28171           TP[Call
28172                ("form4",F32,
28173                 TP[LW(56,6),Var("rs",FTy 5),Var("rt",FTy 5),
28174                    Var("imm",F16)]),qVar"state"]),
28175          (Call
28176             ("Store",CTy"instruction",
28177              Call
28178                ("SCD",CTy"Store",
28179                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28180           TP[Call
28181                ("form4",F32,
28182                 TP[LW(60,6),Var("rs",FTy 5),Var("rt",FTy 5),
28183                    Var("imm",F16)]),qVar"state"]),
28184          (Call
28185             ("Store",CTy"instruction",
28186              Call
28187                ("SD",CTy"Store",
28188                 TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
28189           TP[Call
28190                ("form4",F32,
28191                 TP[LW(63,6),Var("rs",FTy 5),Var("rt",FTy 5),
28192                    Var("imm",F16)]),qVar"state"]),
28193          (Call
28194             ("CACHE",CTy"instruction",
28195              TP[Var("rs",FTy 5),Var("opn",FTy 5),Var("imm",F16)]),
28196           TP[Call
28197                ("form4",F32,
28198                 TP[LW(47,6),Var("rs",FTy 5),Var("opn",FTy 5),
28199                    Var("imm",F16)]),qVar"state"]),
28200          (Const("SYSCALL",CTy"instruction"),
28201           TP[Mop(Cast F32,LW(12,6)),qVar"state"]),
28202          (Const("BREAK",CTy"instruction"),
28203           TP[Mop(Cast F32,LW(13,6)),qVar"state"]),
28204          (Call("SYNC",CTy"instruction",Var("imm5",FTy 5)),
28205           TP[Mop(Cast F32,CC[Var("imm5",FTy 5),LW(15,6)]),qVar"state"]),
28206          (Const("TLBR",CTy"instruction"),
28207           TP[LW(1107296257,32),qVar"state"]),
28208          (Const("TLBWI",CTy"instruction"),
28209           TP[LW(1107296258,32),qVar"state"]),
28210          (Const("TLBWR",CTy"instruction"),
28211           TP[LW(1107296262,32),qVar"state"]),
28212          (Const("TLBP",CTy"instruction"),
28213           TP[LW(1107296264,32),qVar"state"]),
28214          (Const("ERET",CTy"instruction"),
28215           TP[LW(1107296280,32),qVar"state"]),
28216          (Call
28217             ("RDHWR",CTy"instruction",TP[Var("rt",FTy 5),Var("rd",FTy 5)]),
28218           TP[Call
28219                ("form6",F32,TP[Var("rt",FTy 5),Var("rd",FTy 5),LW(59,6)]),
28220              qVar"state"]),
28221          (Const("WAIT",CTy"instruction"),
28222           TP[LW(1107296288,32),qVar"state"]),
28223          (Call("COP1",CTy"instruction",AVar(CTy"COP1")),
28224           TP[Call("COP1Encode",F32,Var("i",CTy"instruction")),qVar"state"]),
28225          (Call("COP2",CTy"instruction",AVar(CTy"COP2")),
28226           Apply
28227             (Call
28228                ("COP2Encode",ATy(qTy,PTy(F32,qTy)),
28229                 Var("i",CTy"instruction")),qVar"state")),
28230          (Call("LWC2",CTy"instruction",AVar(CTy"LWC2")),
28231           Apply
28232             (Call
28233                ("LWC2Encode",ATy(qTy,PTy(F32,qTy)),
28234                 Var("i",CTy"instruction")),qVar"state")),
28235          (Call("LDC2",CTy"instruction",AVar(CTy"LDC2")),
28236           Apply
28237             (Call
28238                ("LDC2Encode",ATy(qTy,PTy(F32,qTy)),
28239                 Var("i",CTy"instruction")),qVar"state")),
28240          (Call("SWC2",CTy"instruction",AVar(CTy"SWC2")),
28241           Apply
28242             (Call
28243                ("SWC2Encode",ATy(qTy,PTy(F32,qTy)),
28244                 Var("i",CTy"instruction")),qVar"state")),
28245          (Call("SDC2",CTy"instruction",AVar(CTy"SDC2")),
28246           Apply
28247             (Call
28248                ("SDC2Encode",ATy(qTy,PTy(F32,qTy)),
28249                 Var("i",CTy"instruction")),qVar"state")),
28250          (Const("Unpredictable",CTy"instruction"),
28251           TP[LW(133169152,32),qVar"state"]),
28252          (Const("ReservedInstruction",CTy"instruction"),
28253           TP[LW(0,32),qVar"state"])])))
28254;
28255val hasCP1_def = Def0 ("hasCP1",LT)
28256;
28257val COP1Init_def = Def
28258  ("COP1Init",AVar uTy,
28259   Close
28260     (qVar"state",
28261      Let(qVar"s",
28262          Rupd
28263            ("fcsr",
28264             TP[qVar"state",
28265                Rupd("FS",TP[Dest("fcsr",CTy"FCSR",qVar"state"),LF])]),
28266          Let(qVar"s",
28267              Rupd
28268                ("fcsr",
28269                 TP[qVar"s",
28270                    Rupd("FCC",TP[Dest("fcsr",CTy"FCSR",qVar"s"),LW(0,8)])]),
28271              Let(qVar"s",
28272                  Rupd
28273                    ("fcsr",
28274                     TP[qVar"s",
28275                        Rupd
28276                          ("ABS2008",TP[Dest("fcsr",CTy"FCSR",qVar"s"),LF])]),
28277                  Let(qVar"s",
28278                      Rupd
28279                        ("fcsr",
28280                         TP[qVar"s",
28281                            Rupd
28282                              ("NAN2008",
28283                               TP[Dest("fcsr",CTy"FCSR",qVar"s"),LT])]),
28284                      Let(qVar"s",
28285                          Rupd
28286                            ("fcsr",
28287                             TP[qVar"s",
28288                                Rupd
28289                                  ("CauseE",
28290                                   TP[Dest("fcsr",CTy"FCSR",qVar"s"),LF])]),
28291                          Let(qVar"s",
28292                              Rupd
28293                                ("fcsr",
28294                                 TP[qVar"s",
28295                                    Rupd
28296                                      ("CauseV",
28297                                       TP[Dest("fcsr",CTy"FCSR",qVar"s"),
28298                                          LF])]),
28299                              Let(qVar"s",
28300                                  Rupd
28301                                    ("fcsr",
28302                                     TP[qVar"s",
28303                                        Rupd
28304                                          ("CauseZ",
28305                                           TP[Dest
28306                                                ("fcsr",CTy"FCSR",qVar"s"),
28307                                              LF])]),
28308                                  Let(qVar"s",
28309                                      Rupd
28310                                        ("fcsr",
28311                                         TP[qVar"s",
28312                                            Rupd
28313                                              ("CauseO",
28314                                               TP[Dest
28315                                                    ("fcsr",CTy"FCSR",
28316                                                     qVar"s"),LF])]),
28317                                      Let(qVar"s",
28318                                          Rupd
28319                                            ("fcsr",
28320                                             TP[qVar"s",
28321                                                Rupd
28322                                                  ("CauseU",
28323                                                   TP[Dest
28324                                                        ("fcsr",CTy"FCSR",
28325                                                         qVar"s"),LF])]),
28326                                          Let(qVar"s",
28327                                              Rupd
28328                                                ("fcsr",
28329                                                 TP[qVar"s",
28330                                                    Rupd
28331                                                      ("CauseI",
28332                                                       TP[Dest
28333                                                            ("fcsr",
28334                                                             CTy"FCSR",
28335                                                             qVar"s"),LF])]),
28336                                              Let(qVar"s",
28337                                                  Rupd
28338                                                    ("fcsr",
28339                                                     TP[qVar"s",
28340                                                        Rupd
28341                                                          ("EnableV",
28342                                                           TP[Dest
28343                                                                ("fcsr",
28344                                                                 CTy"FCSR",
28345                                                                 qVar"s"),
28346                                                              LF])]),
28347                                                  Let(qVar"s",
28348                                                      Rupd
28349                                                        ("fcsr",
28350                                                         TP[qVar"s",
28351                                                            Rupd
28352                                                              ("EnableZ",
28353                                                               TP[Dest
28354                                                                    ("fcsr",
28355                                                                     CTy"FCSR",
28356                                                                     qVar"s"),
28357                                                                  LF])]),
28358                                                      Let(qVar"s",
28359                                                          Rupd
28360                                                            ("fcsr",
28361                                                             TP[qVar"s",
28362                                                                Rupd
28363                                                                  ("EnableO",
28364                                                                   TP[Dest
28365                                                                        ("fcsr",
28366                                                                         CTy"FCSR",
28367                                                                         qVar"s"),
28368                                                                      LF])]),
28369                                                          Let(qVar"s",
28370                                                              Rupd
28371                                                                ("fcsr",
28372                                                                 TP[qVar"s",
28373                                                                    Rupd
28374                                                                      ("EnableU",
28375                                                                       TP[Dest
28376                                                                            ("fcsr",
28377                                                                             CTy"FCSR",
28378                                                                             qVar"s"),
28379                                                                          LF])]),
28380                                                              Let(qVar"s",
28381                                                                  Rupd
28382                                                                    ("fcsr",
28383                                                                     TP[qVar"s",
28384                                                                        Rupd
28385                                                                          ("EnableI",
28386                                                                           TP[Dest
28387                                                                                ("fcsr",
28388                                                                                 CTy"FCSR",
28389                                                                                 qVar"s"),
28390                                                                              LF])]),
28391                                                                  Let(qVar"s",
28392                                                                      Rupd
28393                                                                        ("fcsr",
28394                                                                         TP[qVar"s",
28395                                                                            Rupd
28396                                                                              ("FlagV",
28397                                                                               TP[Dest
28398                                                                                    ("fcsr",
28399                                                                                     CTy"FCSR",
28400                                                                                     qVar"s"),
28401                                                                                  LF])]),
28402                                                                      Let(qVar"s",
28403                                                                          Rupd
28404                                                                            ("fcsr",
28405                                                                             TP[qVar"s",
28406                                                                                Rupd
28407                                                                                  ("FlagZ",
28408                                                                                   TP[Dest
28409                                                                                        ("fcsr",
28410                                                                                         CTy"FCSR",
28411                                                                                         qVar"s"),
28412                                                                                      LF])]),
28413                                                                          Let(qVar"s",
28414                                                                              Rupd
28415                                                                                ("fcsr",
28416                                                                                 TP[qVar"s",
28417                                                                                    Rupd
28418                                                                                      ("FlagO",
28419                                                                                       TP[Dest
28420                                                                                            ("fcsr",
28421                                                                                             CTy"FCSR",
28422                                                                                             qVar"s"),
28423                                                                                          LF])]),
28424                                                                              Let(qVar"s",
28425                                                                                  Rupd
28426                                                                                    ("fcsr",
28427                                                                                     TP[qVar"s",
28428                                                                                        Rupd
28429                                                                                          ("FlagU",
28430                                                                                           TP[Dest
28431                                                                                                ("fcsr",
28432                                                                                                 CTy"FCSR",
28433                                                                                                 qVar"s"),
28434                                                                                              LF])]),
28435                                                                                  Let(qVar"s",
28436                                                                                      Rupd
28437                                                                                        ("fcsr",
28438                                                                                         TP[qVar"s",
28439                                                                                            Rupd
28440                                                                                              ("FlagI",
28441                                                                                               TP[Dest
28442                                                                                                    ("fcsr",
28443                                                                                                     CTy"FCSR",
28444                                                                                                     qVar"s"),
28445                                                                                                  LF])]),
28446                                                                                      Let(qVar"s",
28447                                                                                          Rupd
28448                                                                                            ("fcsr",
28449                                                                                             TP[qVar"s",
28450                                                                                                Rupd
28451                                                                                                  ("RM",
28452                                                                                                   TP[Dest
28453                                                                                                        ("fcsr",
28454                                                                                                         CTy"FCSR",
28455                                                                                                         qVar"s"),
28456                                                                                                      LW(0,
28457                                                                                                         2)])]),
28458                                                                                          Let(qVar"s",
28459                                                                                              Rupd
28460                                                                                                ("fir",
28461                                                                                                 TP[qVar"s",
28462                                                                                                    Rupd
28463                                                                                                      ("F64",
28464                                                                                                       TP[Dest
28465                                                                                                            ("fir",
28466                                                                                                             CTy"FIR",
28467                                                                                                             qVar"s"),
28468                                                                                                          LT])]),
28469                                                                                              Let(qVar"s",
28470                                                                                                  Rupd
28471                                                                                                    ("fir",
28472                                                                                                     TP[qVar"s",
28473                                                                                                        Rupd
28474                                                                                                          ("L",
28475                                                                                                           TP[Dest
28476                                                                                                                ("fir",
28477                                                                                                                 CTy"FIR",
28478                                                                                                                 qVar"s"),
28479                                                                                                              LT])]),
28480                                                                                                  Let(qVar"s",
28481                                                                                                      Rupd
28482                                                                                                        ("fir",
28483                                                                                                         TP[qVar"s",
28484                                                                                                            Rupd
28485                                                                                                              ("W",
28486                                                                                                               TP[Dest
28487                                                                                                                    ("fir",
28488                                                                                                                     CTy"FIR",
28489                                                                                                                     qVar"s"),
28490                                                                                                                  LT])]),
28491                                                                                                      Let(qVar"s",
28492                                                                                                          Rupd
28493                                                                                                            ("fir",
28494                                                                                                             TP[qVar"s",
28495                                                                                                                Rupd
28496                                                                                                                  ("ASE",
28497                                                                                                                   TP[Dest
28498                                                                                                                        ("fir",
28499                                                                                                                         CTy"FIR",
28500                                                                                                                         qVar"s"),
28501                                                                                                                      LF])]),
28502                                                                                                          Let(qVar"s",
28503                                                                                                              Rupd
28504                                                                                                                ("fir",
28505                                                                                                                 TP[qVar"s",
28506                                                                                                                    Rupd
28507                                                                                                                      ("PS",
28508                                                                                                                       TP[Dest
28509                                                                                                                            ("fir",
28510                                                                                                                             CTy"FIR",
28511                                                                                                                             qVar"s"),
28512                                                                                                                          LF])]),
28513                                                                                                              Let(qVar"s",
28514                                                                                                                  Rupd
28515                                                                                                                    ("fir",
28516                                                                                                                     TP[qVar"s",
28517                                                                                                                        Rupd
28518                                                                                                                          ("D",
28519                                                                                                                           TP[Dest
28520                                                                                                                                ("fir",
28521                                                                                                                                 CTy"FIR",
28522                                                                                                                                 qVar"s"),
28523                                                                                                                              LT])]),
28524                                                                                                                  Let(qVar"s",
28525                                                                                                                      Rupd
28526                                                                                                                        ("fir",
28527                                                                                                                         TP[qVar"s",
28528                                                                                                                            Rupd
28529                                                                                                                              ("S",
28530                                                                                                                               TP[Dest
28531                                                                                                                                    ("fir",
28532                                                                                                                                     CTy"FIR",
28533                                                                                                                                     qVar"s"),
28534                                                                                                                                  LT])]),
28535                                                                                                                      Let(qVar"s",
28536                                                                                                                          Rupd
28537                                                                                                                            ("fir",
28538                                                                                                                             TP[qVar"s",
28539                                                                                                                                Rupd
28540                                                                                                                                  ("PrID",
28541                                                                                                                                   TP[Dest
28542                                                                                                                                        ("fir",
28543                                                                                                                                         CTy"FIR",
28544                                                                                                                                         qVar"s"),
28545                                                                                                                                      LW(0,
28546                                                                                                                                         8)])]),
28547                                                                                                                          Rupd
28548                                                                                                                            ("fir",
28549                                                                                                                             TP[qVar"s",
28550                                                                                                                                Rupd
28551                                                                                                                                  ("Rev",
28552                                                                                                                                   TP[Dest
28553                                                                                                                                        ("fir",
28554                                                                                                                                         CTy"FIR",
28555                                                                                                                                         qVar"s"),
28556                                                                                                                                      LW(0,
28557                                                                                                                                         8)])]))))))))))))))))))))))))))))))))
28558;
28559val log_instruction_def = Def
28560  ("log_instruction",TP[Var("w",F32),Var("inst",CTy"instruction")],
28561   Close
28562     (qVar"state",
28563      CC[LS"instr ",Mop(Cast sTy,Dest("procID",F8,qVar"state")),LS" ",
28564         Mop(Cast sTy,Dest("instCnt",nTy,qVar"state")),LS" ",
28565         Mop(Drop,
28566             TP[LN 2,
28567                Call
28568                  ("hex",sTy,
28569                   Bop(Add,Apply(Const("PC",ATy(qTy,F64)),qVar"state"),
28570                       Call
28571                         ("getBase",F64,
28572                          Apply
28573                            (Const("PCC",ATy(qTy,CTy"Capability")),
28574                             qVar"state"))))]),LS" : ",
28575         Mop(Drop,TP[LN 2,Call("hex",sTy,Var("w",F32))]),LS"   ",
28576         Call("instructionToString",sTy,Var("inst",CTy"instruction"))]))
28577;
28578val Next_def = Def
28579  ("Next",qVar"state",
28580   Let(TP[Var("v",OTy F32),qVar"s"],
28581       Apply
28582         (Const("Fetch",ATy(qTy,PTy(OTy F32,qTy))),
28583          Rupd("currentInst",TP[qVar"state",LO F32])),
28584       Let(qVar"s",Rupd("currentInst",TP[qVar"s",Var("v",OTy F32)]),
28585           Let(TP[Var("v",OTy F64),qVar"s"],
28586               Let(qVar"s0",
28587                   CS(Dest("currentInst",OTy F32,qVar"s"),
28588                      [(Mop(Some,Var("w",F32)),
28589                        Apply
28590                          (Call
28591                             ("Run",ATy(qTy,qTy),
28592                              Call("Decode",CTy"instruction",Var("w",F32))),
28593                           qVar"s")),(LO F32,qVar"s")]),
28594                   TP[Apply
28595                        (Const("BranchDelay",ATy(qTy,OTy F64)),qVar"s0"),
28596                      qVar"s0"]),
28597               Let(TP[Var("v",CTy"CP0"),qVar"s"],
28598                   Let(qVar"s0",
28599                       Apply
28600                         (Call("write'exceptionSignalled",ATy(qTy,qTy),LF),
28601                          CS(TP[Var("v",OTy F64),
28602                                Apply
28603                                  (Const("BranchTo",ATy(qTy,OTy F64)),
28604                                   qVar"s"),
28605                                Dest
28606                                  ("BranchDelayPCC",
28607                                   OTy(PTy(F64,CTy"Capability")),qVar"s"),
28608                                Dest
28609                                  ("BranchToPCC",
28610                                   OTy(PTy(F64,CTy"Capability")),qVar"s")],
28611                             [(TP[LO F64,LO F64,
28612                                  LO(PTy(F64,CTy"Capability")),
28613                                  LO(PTy(F64,CTy"Capability"))],
28614                               ITE(Mop(Not,
28615                                       Apply
28616                                         (Const
28617                                            ("exceptionSignalled",
28618                                             ATy(qTy,bTy)),qVar"s")),
28619                                   Apply
28620                                     (Call
28621                                        ("write'PC",ATy(qTy,qTy),
28622                                         Bop(Add,
28623                                             Apply
28624                                               (Const("PC",ATy(qTy,F64)),
28625                                                qVar"s"),LW(4,64))),
28626                                      qVar"s"),qVar"s")),
28627                              (TP[Mop(Some,Var("addr",F64)),LO F64,
28628                                  LO(PTy(F64,CTy"Capability")),
28629                                  LO(PTy(F64,CTy"Capability"))],
28630                               Apply
28631                                 (Call
28632                                    ("write'PC",ATy(qTy,qTy),
28633                                     Var("addr",F64)),
28634                                  Rupd
28635                                    ("CCallBranchDelay",
28636                                     TP[Apply
28637                                          (Call
28638                                             ("write'BranchDelay",
28639                                              ATy(qTy,qTy),LO F64),qVar"s"),
28640                                        LF]))),
28641                              (TP[LO F64,Mop(Some,Var("addr",F64)),
28642                                  LO(PTy(F64,CTy"Capability")),
28643                                  LO(PTy(F64,CTy"Capability"))],
28644                               Let(qVar"s",
28645                                   Apply
28646                                     (Call
28647                                        ("write'BranchDelay",ATy(qTy,qTy),
28648                                         Mop(Some,Var("addr",F64))),
28649                                      qVar"s"),
28650                                   Let(TP[Var("v",F64),qVar"s"],
28651                                       Let(qVar"s0",
28652                                           Rupd
28653                                             ("CCallBranch",
28654                                              TP[Apply
28655                                                   (Call
28656                                                      ("write'BranchTo",
28657                                                       ATy(qTy,qTy),LO F64),
28658                                                    Rupd
28659                                                      ("CCallBranchDelay",
28660                                                       TP[qVar"s",
28661                                                          Dest
28662                                                            ("CCallBranch",
28663                                                             bTy,qVar"s")])),
28664                                                 LF]),
28665                                           TP[Apply
28666                                                (Const("PC",ATy(qTy,F64)),
28667                                                 qVar"s0"),qVar"s0"]),
28668                                       Apply
28669                                         (Call
28670                                            ("write'PC",ATy(qTy,qTy),
28671                                             Bop(Add,Var("v",F64),LW(4,64))),
28672                                          qVar"s")))),
28673                              (TP[LO F64,LO F64,
28674                                  Mop(Some,
28675                                      TP[Var("addr",F64),
28676                                         Var("cap",CTy"Capability")]),
28677                                  LO(PTy(F64,CTy"Capability"))],
28678                               Apply
28679                                 (Call
28680                                    ("write'PCC",ATy(qTy,qTy),
28681                                     Var("cap",CTy"Capability")),
28682                                  Apply
28683                                    (Call
28684                                       ("write'PC",ATy(qTy,qTy),
28685                                        Var("addr",F64)),
28686                                     Rupd
28687                                       ("CCallBranchDelay",
28688                                        TP[Rupd
28689                                             ("BranchDelayPCC",
28690                                              TP[qVar"s",
28691                                                 LO(PTy(F64,
28692                                                        CTy"Capability"))]),
28693                                           LF])))),
28694                              (TP[LO F64,LO F64,
28695                                  LO(PTy(F64,CTy"Capability")),
28696                                  Mop(Some,
28697                                      TP[Var("addr",F64),
28698                                         Var("cap",CTy"Capability")])],
28699                               Let(qVar"s",
28700                                   Rupd
28701                                     ("BranchDelayPCC",
28702                                      TP[qVar"s",
28703                                         Mop(Some,
28704                                             TP[Var("addr",F64),
28705                                                Var("cap",CTy"Capability")])]),
28706                                   Let(TP[Var("v",F64),qVar"s"],
28707                                       Let(qVar"s0",
28708                                           Rupd
28709                                             ("CCallBranch",
28710                                              TP[Rupd
28711                                                   ("BranchToPCC",
28712                                                    TP[Rupd
28713                                                         ("CCallBranchDelay",
28714                                                          TP[qVar"s",
28715                                                             Dest
28716                                                               ("CCallBranch",
28717                                                                bTy,
28718                                                                qVar"s")]),
28719                                                       LO(PTy(F64,
28720                                                              CTy"Capability"))]),
28721                                                 LF]),
28722                                           TP[Apply
28723                                                (Const("PC",ATy(qTy,F64)),
28724                                                 qVar"s0"),qVar"s0"]),
28725                                       Apply
28726                                         (Call
28727                                            ("write'PC",ATy(qTy,qTy),
28728                                             Bop(Add,Var("v",F64),LW(4,64))),
28729                                          qVar"s")))),
28730                              (AVar
28731                                 (PTy(OTy F64,
28732                                      PTy(OTy F64,
28733                                          PTy(OTy(PTy(F64,CTy"Capability")),
28734                                              OTy(PTy(F64,CTy"Capability")))))),
28735                               Mop(Snd,
28736                                   Apply
28737                                     (Call
28738                                        ("raise'exception",
28739                                         ATy(qTy,PTy(uTy,qTy)),
28740                                         Call
28741                                           ("UNPREDICTABLE",
28742                                            CTy"exception",
28743                                            LS"Branch follows branch")),
28744                                      qVar"s")))])),
28745                       TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"),
28746                          qVar"s0"]),
28747                   Apply
28748                     (Call
28749                        ("write'CP0",ATy(qTy,qTy),
28750                         Rupd
28751                           ("Count",
28752                            TP[Var("v",CTy"CP0"),
28753                               Bop(Add,
28754                                   Dest
28755                                     ("Count",F32,
28756                                      Apply
28757                                        (Const("CP0",ATy(qTy,CTy"CP0")),
28758                                         qVar"s")),LW(1,32))])),qVar"s"))))))
28759;
28760val hasCP2_def = Def0 ("hasCP2",LT)
28761;
28762val COP2Init_def = Def
28763  ("COP2Init",AVar uTy,
28764   Close
28765     (qVar"state",
28766      Let(Var("s0",CTy"CapCause"),
28767          Rupd
28768            ("RegNum",
28769             TP[Rupd("ExcCode",TP[LX(CTy"CapCause"),LW(0,8)]),LW(0,8)]),
28770          Mop(Snd,
28771              Mop(Snd,
28772                  Apply
28773                    (For(TP[LN 0,LN 31,
28774                            Close
28775                              (nVar"i",
28776                               Close
28777                                 (Var("state",PTy(CTy"CapCause",qTy)),
28778                                  TP[LU,
28779                                     Mop(Fst,
28780                                         Var("state",
28781                                             PTy(CTy"CapCause",qTy))),
28782                                     Apply
28783                                       (Call
28784                                          ("write'CAPR",ATy(qTy,qTy),
28785                                           TP[Const
28786                                                ("defaultCap",
28787                                                 CTy"Capability"),
28788                                              Mop(Cast(FTy 5),nVar"i")]),
28789                                        Mop(Snd,
28790                                            Var("state",
28791                                                PTy(CTy"CapCause",qTy))))]))]),
28792                     TP[Var("s0",CTy"CapCause"),
28793                        Apply
28794                          (Call
28795                             ("write'PCC",ATy(qTy,qTy),
28796                              Const("defaultCap",CTy"Capability")),
28797                           Rupd
28798                             ("capcause",
28799                              TP[qVar"state",Var("s0",CTy"CapCause")]))]))))))
28800
28801val () = Import.finish 0