1(* mipsScript.sml - generated by L3 - Wed Jun 21 13:20:47 2017 *)
2open HolKernel boolLib bossLib Import
3
4val () = Import.start "mips"
5
6val _ = Record ("Index",[("Index",F8),("P",bTy),("index'rst",FTy 23)])
7;
8val _ = Record ("Random",[("Random",F8),("random'rst",FTy 24)])
9;
10val _ = Record ("Wired",[("Wired",F8),("wired'rst",FTy 24)])
11;
12val _ = Record
13  ("EntryLo",
14   [("C",FTy 3),("D",bTy),("G",bTy),("PFN",FTy 28),("V",bTy),
15    ("entrylo'rst",FTy 30)])
16;
17val _ = Record ("PageMask",[("Mask",FTy 12),("pagemask'rst",FTy 20)])
18;
19val _ = Record
20  ("EntryHi",
21   [("ASID",F8),("R",FTy 2),("VPN2",FTy 27),("entryhi'rst",FTy 27)])
22;
23val _ = Record
24  ("StatusRegister",
25   [("BEV",bTy),("CU0",bTy),("CU1",bTy),("ERL",bTy),("EXL",bTy),
26    ("FR",bTy),("IE",bTy),("IM",F8),("KSU",FTy 2),("KX",bTy),("RE",bTy),
27    ("SX",bTy),("UX",bTy),("statusregister'rst",FTy 11)])
28;
29val _ = Record
30  ("ConfigRegister",
31   [("AR",FTy 3),("AT",FTy 2),("BE",bTy),("K0",FTy 3),("M",bTy),
32    ("MT",FTy 3),("configregister'rst",FTy 19)])
33;
34val _ = Record
35  ("ConfigRegister1",
36   [("C2",bTy),("CA",bTy),("DA",FTy 3),("DL",FTy 3),("DS",FTy 3),
37    ("EP",bTy),("FP",bTy),("IA",FTy 3),("IL",FTy 3),("IS",FTy 3),
38    ("M",bTy),("MD",bTy),("MMUSize",FTy 6),("PC",bTy),("WR",bTy)])
39;
40val _ = Record
41  ("ConfigRegister2",
42   [("M",bTy),("SA",F4),("SL",F4),("SS",F4),("SU",F4),("TA",F4),("TL",F4),
43    ("TS",F4),("TU",FTy 3)])
44;
45val _ = Record
46  ("ConfigRegister3",
47   [("DSPP",bTy),("LPA",bTy),("M",bTy),("MT",bTy),("SM",bTy),("SP",bTy),
48    ("TL",bTy),("ULRI",bTy),("VEIC",bTy),("VInt",bTy),
49    ("configregister3'rst",FTy 22)])
50;
51val _ = Record
52  ("ConfigRegister6",
53   [("LTLB",bTy),("TLBSize",F16),("configregister6'rst",FTy 15)])
54;
55val _ = Record
56  ("CauseRegister",
57   [("BD",bTy),("CE",FTy 2),("ExcCode",FTy 5),("IP",F8),("TI",bTy),
58    ("causeregister'rst",FTy 15)])
59;
60val _ = Record
61  ("Context",[("BadVPN2",FTy 19),("PTEBase",FTy 41),("context'rst",F4)])
62;
63val _ = Record
64  ("XContext",
65   [("BadVPN2",FTy 27),("PTEBase",FTy 31),("R",FTy 2),("xcontext'rst",F4)])
66;
67val _ = Record
68  ("HWREna",
69   [("CC",bTy),("CCRes",bTy),("CPUNum",bTy),("UL",bTy),
70    ("hwrena'rst",FTy 28)])
71;
72val _ = Record
73  ("CP0",
74   [("BadVAddr",F64),("Cause",CTy"CauseRegister"),("Compare",F32),
75    ("Config",CTy"ConfigRegister"),("Config1",CTy"ConfigRegister1"),
76    ("Config2",CTy"ConfigRegister2"),("Config3",CTy"ConfigRegister3"),
77    ("Config6",CTy"ConfigRegister6"),("Context",CTy"Context"),
78    ("Count",F32),("Debug",F32),("EPC",F64),("EntryHi",CTy"EntryHi"),
79    ("EntryLo0",CTy"EntryLo"),("EntryLo1",CTy"EntryLo"),("ErrCtl",F32),
80    ("ErrorEPC",F64),("HWREna",CTy"HWREna"),("Index",CTy"Index"),
81    ("LLAddr",F64),("PRId",F32),("PageMask",CTy"PageMask"),
82    ("Random",CTy"Random"),("Status",CTy"StatusRegister"),
83    ("UsrLocal",F64),("Wired",CTy"Wired"),("XContext",CTy"XContext")])
84;
85val _ = Construct
86  [("ExceptionType",
87    [("Int",[]),("Mod",[]),("TLBL",[]),("TLBS",[]),("AdEL",[]),
88     ("AdES",[]),("Sys",[]),("Bp",[]),("ResI",[]),("CpU",[]),("Ov",[]),
89     ("Tr",[]),("XTLBRefillL",[]),("XTLBRefillS",[])])]
90;
91val _ = Construct [("LorS",[("LOAD",[]),("STORE",[])])]
92;
93val _ = Record
94  ("FCSR",
95   [("ABS2008",bTy),("CauseE",bTy),("CauseI",bTy),("CauseO",bTy),
96    ("CauseU",bTy),("CauseV",bTy),("CauseZ",bTy),("EnableI",bTy),
97    ("EnableO",bTy),("EnableU",bTy),("EnableV",bTy),("EnableZ",bTy),
98    ("FCC",F8),("FS",bTy),("FlagI",bTy),("FlagO",bTy),("FlagU",bTy),
99    ("FlagV",bTy),("FlagZ",bTy),("NAN2008",bTy),("RM",FTy 2),
100    ("fcsr'rst",FTy 3)])
101;
102val _ = Record
103  ("FIR",
104   [("ASE",bTy),("D",bTy),("F64",bTy),("L",bTy),("PS",bTy),("PrID",F8),
105    ("Rev",F8),("S",bTy),("W",bTy),("fir'rst",FTy 9)])
106;
107val _ = Construct
108  [("Branch",
109    [("BEQ",[PTy(FTy 5,PTy(FTy 5,F16))]),
110     ("BEQL",[PTy(FTy 5,PTy(FTy 5,F16))]),("BGEZ",[PTy(FTy 5,F16)]),
111     ("BGEZAL",[PTy(FTy 5,F16)]),("BGEZALL",[PTy(FTy 5,F16)]),
112     ("BGEZL",[PTy(FTy 5,F16)]),("BGTZ",[PTy(FTy 5,F16)]),
113     ("BGTZL",[PTy(FTy 5,F16)]),("BLEZ",[PTy(FTy 5,F16)]),
114     ("BLEZL",[PTy(FTy 5,F16)]),("BLTZ",[PTy(FTy 5,F16)]),
115     ("BLTZAL",[PTy(FTy 5,F16)]),("BLTZALL",[PTy(FTy 5,F16)]),
116     ("BLTZL",[PTy(FTy 5,F16)]),("BNE",[PTy(FTy 5,PTy(FTy 5,F16))]),
117     ("BNEL",[PTy(FTy 5,PTy(FTy 5,F16))]),("J",[FTy 26]),("JAL",[FTy 26]),
118     ("JALR",[PTy(FTy 5,FTy 5)]),("JR",[FTy 5])])]
119;
120val _ = Construct
121  [("CP",
122    [("DMFC0",[PTy(FTy 5,PTy(FTy 5,FTy 3))]),
123     ("DMTC0",[PTy(FTy 5,PTy(FTy 5,FTy 3))]),
124     ("MFC0",[PTy(FTy 5,PTy(FTy 5,FTy 3))]),
125     ("MTC0",[PTy(FTy 5,PTy(FTy 5,FTy 3))])])]
126;
127val _ = Construct
128  [("Store",
129    [("SB",[PTy(FTy 5,PTy(FTy 5,F16))]),
130     ("SC",[PTy(FTy 5,PTy(FTy 5,F16))]),
131     ("SCD",[PTy(FTy 5,PTy(FTy 5,F16))]),
132     ("SD",[PTy(FTy 5,PTy(FTy 5,F16))]),
133     ("SDL",[PTy(FTy 5,PTy(FTy 5,F16))]),
134     ("SDR",[PTy(FTy 5,PTy(FTy 5,F16))]),
135     ("SH",[PTy(FTy 5,PTy(FTy 5,F16))]),
136     ("SW",[PTy(FTy 5,PTy(FTy 5,F16))]),
137     ("SWL",[PTy(FTy 5,PTy(FTy 5,F16))]),
138     ("SWR",[PTy(FTy 5,PTy(FTy 5,F16))])])]
139;
140val _ = Construct
141  [("Load",
142    [("LB",[PTy(FTy 5,PTy(FTy 5,F16))]),
143     ("LBU",[PTy(FTy 5,PTy(FTy 5,F16))]),
144     ("LD",[PTy(FTy 5,PTy(FTy 5,F16))]),
145     ("LDL",[PTy(FTy 5,PTy(FTy 5,F16))]),
146     ("LDR",[PTy(FTy 5,PTy(FTy 5,F16))]),
147     ("LH",[PTy(FTy 5,PTy(FTy 5,F16))]),
148     ("LHU",[PTy(FTy 5,PTy(FTy 5,F16))]),
149     ("LL",[PTy(FTy 5,PTy(FTy 5,F16))]),
150     ("LLD",[PTy(FTy 5,PTy(FTy 5,F16))]),
151     ("LW",[PTy(FTy 5,PTy(FTy 5,F16))]),
152     ("LWL",[PTy(FTy 5,PTy(FTy 5,F16))]),
153     ("LWR",[PTy(FTy 5,PTy(FTy 5,F16))]),
154     ("LWU",[PTy(FTy 5,PTy(FTy 5,F16))])])]
155;
156val _ = Construct
157  [("Trap",
158    [("TEQ",[PTy(FTy 5,FTy 5)]),("TEQI",[PTy(FTy 5,F16)]),
159     ("TGE",[PTy(FTy 5,FTy 5)]),("TGEI",[PTy(FTy 5,F16)]),
160     ("TGEIU",[PTy(FTy 5,F16)]),("TGEU",[PTy(FTy 5,FTy 5)]),
161     ("TLT",[PTy(FTy 5,FTy 5)]),("TLTI",[PTy(FTy 5,F16)]),
162     ("TLTIU",[PTy(FTy 5,F16)]),("TLTU",[PTy(FTy 5,FTy 5)]),
163     ("TNE",[PTy(FTy 5,FTy 5)]),("TNEI",[PTy(FTy 5,F16)])])]
164;
165val _ = Construct
166  [("Shift",
167    [("DSLL",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
168     ("DSLL32",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
169     ("DSLLV",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
170     ("DSRA",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
171     ("DSRA32",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
172     ("DSRAV",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
173     ("DSRL",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
174     ("DSRL32",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
175     ("DSRLV",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
176     ("SLL",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
177     ("SLLV",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
178     ("SRA",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
179     ("SRAV",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
180     ("SRL",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
181     ("SRLV",[PTy(FTy 5,PTy(FTy 5,FTy 5))])])]
182;
183val _ = Construct
184  [("MultDiv",
185    [("DDIV",[PTy(FTy 5,FTy 5)]),("DDIVU",[PTy(FTy 5,FTy 5)]),
186     ("DIV",[PTy(FTy 5,FTy 5)]),("DIVU",[PTy(FTy 5,FTy 5)]),
187     ("DMULT",[PTy(FTy 5,FTy 5)]),("DMULTU",[PTy(FTy 5,FTy 5)]),
188     ("MADD",[PTy(FTy 5,FTy 5)]),("MADDU",[PTy(FTy 5,FTy 5)]),
189     ("MFHI",[FTy 5]),("MFLO",[FTy 5]),("MSUB",[PTy(FTy 5,FTy 5)]),
190     ("MSUBU",[PTy(FTy 5,FTy 5)]),("MTHI",[FTy 5]),("MTLO",[FTy 5]),
191     ("MUL",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),("MULT",[PTy(FTy 5,FTy 5)]),
192     ("MULTU",[PTy(FTy 5,FTy 5)])])]
193;
194val _ = Construct
195  [("ArithR",
196    [("ADD",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
197     ("ADDU",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
198     ("AND",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
199     ("DADD",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
200     ("DADDU",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
201     ("DSUB",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
202     ("DSUBU",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
203     ("MOVN",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
204     ("MOVZ",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
205     ("NOR",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
206     ("OR",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
207     ("SLT",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
208     ("SLTU",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
209     ("SUB",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
210     ("SUBU",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
211     ("XOR",[PTy(FTy 5,PTy(FTy 5,FTy 5))])])]
212;
213val _ = Construct
214  [("ArithI",
215    [("ADDI",[PTy(FTy 5,PTy(FTy 5,F16))]),
216     ("ADDIU",[PTy(FTy 5,PTy(FTy 5,F16))]),
217     ("ANDI",[PTy(FTy 5,PTy(FTy 5,F16))]),
218     ("DADDI",[PTy(FTy 5,PTy(FTy 5,F16))]),
219     ("DADDIU",[PTy(FTy 5,PTy(FTy 5,F16))]),("LUI",[PTy(FTy 5,F16)]),
220     ("ORI",[PTy(FTy 5,PTy(FTy 5,F16))]),
221     ("SLTI",[PTy(FTy 5,PTy(FTy 5,F16))]),
222     ("SLTIU",[PTy(FTy 5,PTy(FTy 5,F16))]),
223     ("XORI",[PTy(FTy 5,PTy(FTy 5,F16))])])]
224;
225val _ = Construct
226  [("COP1",
227    [("ABS_D",[PTy(FTy 5,FTy 5)]),("ABS_S",[PTy(FTy 5,FTy 5)]),
228     ("ADD_D",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
229     ("ADD_S",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),("BC1F",[PTy(F16,FTy 3)]),
230     ("BC1FL",[PTy(F16,FTy 3)]),("BC1T",[PTy(F16,FTy 3)]),
231     ("BC1TL",[PTy(F16,FTy 3)]),("CEIL_L_D",[PTy(FTy 5,FTy 5)]),
232     ("CEIL_L_S",[PTy(FTy 5,FTy 5)]),("CEIL_W_D",[PTy(FTy 5,FTy 5)]),
233     ("CEIL_W_S",[PTy(FTy 5,FTy 5)]),("CFC1",[PTy(FTy 5,FTy 5)]),
234     ("CTC1",[PTy(FTy 5,FTy 5)]),("CVT_D_L",[PTy(FTy 5,FTy 5)]),
235     ("CVT_D_S",[PTy(FTy 5,FTy 5)]),("CVT_D_W",[PTy(FTy 5,FTy 5)]),
236     ("CVT_L_D",[PTy(FTy 5,FTy 5)]),("CVT_L_S",[PTy(FTy 5,FTy 5)]),
237     ("CVT_S_D",[PTy(FTy 5,FTy 5)]),("CVT_S_L",[PTy(FTy 5,FTy 5)]),
238     ("CVT_S_W",[PTy(FTy 5,FTy 5)]),("CVT_W_D",[PTy(FTy 5,FTy 5)]),
239     ("CVT_W_S",[PTy(FTy 5,FTy 5)]),
240     ("C_cond_D",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 3,FTy 3)))]),
241     ("C_cond_S",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 3,FTy 3)))]),
242     ("DIV_D",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
243     ("DIV_S",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),("DMFC1",[PTy(FTy 5,FTy 5)]),
244     ("DMTC1",[PTy(FTy 5,FTy 5)]),("FLOOR_L_D",[PTy(FTy 5,FTy 5)]),
245     ("FLOOR_L_S",[PTy(FTy 5,FTy 5)]),("FLOOR_W_D",[PTy(FTy 5,FTy 5)]),
246     ("FLOOR_W_S",[PTy(FTy 5,FTy 5)]),
247     ("LDC1",[PTy(FTy 5,PTy(F16,FTy 5))]),
248     ("LDXC1",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
249     ("LWC1",[PTy(FTy 5,PTy(F16,FTy 5))]),
250     ("LWXC1",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
251     ("MADD_D",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5)))]),
252     ("MADD_S",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5)))]),
253     ("MFC1",[PTy(FTy 5,FTy 5)]),("MOVF",[PTy(FTy 5,PTy(FTy 5,FTy 3))]),
254     ("MOVF_D",[PTy(FTy 5,PTy(FTy 5,FTy 3))]),
255     ("MOVF_S",[PTy(FTy 5,PTy(FTy 5,FTy 3))]),
256     ("MOVN_D",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
257     ("MOVN_S",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
258     ("MOVT",[PTy(FTy 5,PTy(FTy 5,FTy 3))]),
259     ("MOVT_D",[PTy(FTy 5,PTy(FTy 5,FTy 3))]),
260     ("MOVT_S",[PTy(FTy 5,PTy(FTy 5,FTy 3))]),
261     ("MOVZ_D",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
262     ("MOVZ_S",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
263     ("MOV_D",[PTy(FTy 5,FTy 5)]),("MOV_S",[PTy(FTy 5,FTy 5)]),
264     ("MSUB_D",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5)))]),
265     ("MSUB_S",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5)))]),
266     ("MTC1",[PTy(FTy 5,FTy 5)]),("MUL_D",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
267     ("MUL_S",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),("NEG_D",[PTy(FTy 5,FTy 5)]),
268     ("NEG_S",[PTy(FTy 5,FTy 5)]),("ROUND_L_D",[PTy(FTy 5,FTy 5)]),
269     ("ROUND_L_S",[PTy(FTy 5,FTy 5)]),("ROUND_W_D",[PTy(FTy 5,FTy 5)]),
270     ("ROUND_W_S",[PTy(FTy 5,FTy 5)]),
271     ("SDC1",[PTy(FTy 5,PTy(F16,FTy 5))]),
272     ("SDXC1",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
273     ("SQRT_D",[PTy(FTy 5,FTy 5)]),("SQRT_S",[PTy(FTy 5,FTy 5)]),
274     ("SUB_D",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
275     ("SUB_S",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
276     ("SWC1",[PTy(FTy 5,PTy(F16,FTy 5))]),
277     ("SWXC1",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),
278     ("TRUNC_L_D",[PTy(FTy 5,FTy 5)]),("TRUNC_L_S",[PTy(FTy 5,FTy 5)]),
279     ("TRUNC_W_D",[PTy(FTy 5,FTy 5)]),("TRUNC_W_S",[PTy(FTy 5,FTy 5)]),
280     ("UnknownFPInstruction",[])])]
281;
282val _ = Construct
283  [("instruction",
284    [("ArithI",[CTy"ArithI"]),("ArithR",[CTy"ArithR"]),("BREAK",[]),
285     ("Branch",[CTy"Branch"]),("CACHE",[PTy(FTy 5,PTy(FTy 5,F16))]),
286     ("COP1",[CTy"COP1"]),("CP",[CTy"CP"]),("ERET",[]),
287     ("Load",[CTy"Load"]),("MultDiv",[CTy"MultDiv"]),
288     ("RDHWR",[PTy(FTy 5,FTy 5)]),("ReservedInstruction",[]),
289     ("SYNC",[FTy 5]),("SYSCALL",[]),("Shift",[CTy"Shift"]),
290     ("Store",[CTy"Store"]),("TLBP",[]),("TLBR",[]),("TLBWI",[]),
291     ("TLBWR",[]),("Trap",[CTy"Trap"]),("Unpredictable",[]),("WAIT",[])])]
292;
293val _ = Construct
294  [("exception",[("NoException",[]),("UNPREDICTABLE",[sTy])])]
295;
296val _ = Record
297  ("mips_state",
298   [("BranchDelay",OTy(OTy F64)),("BranchTo",OTy(PTy(bTy,F64))),
299    ("CP0",CTy"CP0"),("FGR",ATy(FTy 5,F64)),("LLbit",OTy bTy),
300    ("MEM",ATy(F64,F8)),("PC",F64),("exception",CTy"exception"),
301    ("exceptionSignalled",bTy),("fcsr",CTy"FCSR"),("fir",CTy"FIR"),
302    ("gpr",ATy(FTy 5,F64)),("hi",OTy F64),("lo",OTy F64)])
303;
304val qTy = CTy "mips_state";
305fun qVar v = Term.mk_var (v, ParseDatatype.pretypeToType qTy);
306val raise'exception_def = Def
307  ("raise'exception",Var("e",CTy"exception"),
308   Close
309     (qVar"state",
310      TP[LX(VTy"a"),
311         ITE(EQ(Dest("exception",CTy"exception",qVar"state"),
312                Const("NoException",CTy"exception")),
313             Rupd("exception",TP[qVar"state",Var("e",CTy"exception")]),
314             qVar"state")]))
315;
316val rec'Index_def = Def
317  ("rec'Index",Var("x",F32),
318   Rec(CTy"Index",
319       [EX(Var("x",F32),LN 7,LN 0,F8),Bop(Bit,Var("x",F32),LN 31),
320        EX(Var("x",F32),LN 30,LN 8,FTy 23)]))
321;
322val reg'Index_def = Def
323  ("reg'Index",Var("x",CTy"Index"),
324   CS(Var("x",CTy"Index"),
325      [(Rec(CTy"Index",[Var("Index",F8),bVar"P",Var("index'rst",FTy 23)]),
326        CC[Mop(Cast F1,bVar"P"),Var("index'rst",FTy 23),Var("Index",F8)])]))
327;
328val write'rec'Index_def = Def
329  ("write'rec'Index",TP[AVar F32,Var("x",CTy"Index")],
330   Call("reg'Index",F32,Var("x",CTy"Index")))
331;
332val write'reg'Index_def = Def
333  ("write'reg'Index",TP[AVar(CTy"Index"),Var("x",F32)],
334   Call("rec'Index",CTy"Index",Var("x",F32)))
335;
336val rec'Random_def = Def
337  ("rec'Random",Var("x",F32),
338   Rec(CTy"Random",
339       [EX(Var("x",F32),LN 7,LN 0,F8),EX(Var("x",F32),LN 31,LN 8,FTy 24)]))
340;
341val reg'Random_def = Def
342  ("reg'Random",Var("x",CTy"Random"),
343   CS(Var("x",CTy"Random"),
344      [(Rec(CTy"Random",[Var("Random",F8),Var("random'rst",FTy 24)]),
345        CC[Var("random'rst",FTy 24),Var("Random",F8)])]))
346;
347val write'rec'Random_def = Def
348  ("write'rec'Random",TP[AVar F32,Var("x",CTy"Random")],
349   Call("reg'Random",F32,Var("x",CTy"Random")))
350;
351val write'reg'Random_def = Def
352  ("write'reg'Random",TP[AVar(CTy"Random"),Var("x",F32)],
353   Call("rec'Random",CTy"Random",Var("x",F32)))
354;
355val rec'Wired_def = Def
356  ("rec'Wired",Var("x",F32),
357   Rec(CTy"Wired",
358       [EX(Var("x",F32),LN 7,LN 0,F8),EX(Var("x",F32),LN 31,LN 8,FTy 24)]))
359;
360val reg'Wired_def = Def
361  ("reg'Wired",Var("x",CTy"Wired"),
362   CS(Var("x",CTy"Wired"),
363      [(Rec(CTy"Wired",[Var("Wired",F8),Var("wired'rst",FTy 24)]),
364        CC[Var("wired'rst",FTy 24),Var("Wired",F8)])]))
365;
366val write'rec'Wired_def = Def
367  ("write'rec'Wired",TP[AVar F32,Var("x",CTy"Wired")],
368   Call("reg'Wired",F32,Var("x",CTy"Wired")))
369;
370val write'reg'Wired_def = Def
371  ("write'reg'Wired",TP[AVar(CTy"Wired"),Var("x",F32)],
372   Call("rec'Wired",CTy"Wired",Var("x",F32)))
373;
374val rec'EntryLo_def = Def
375  ("rec'EntryLo",Var("x",F64),
376   Rec(CTy"EntryLo",
377       [EX(Var("x",F64),LN 5,LN 3,FTy 3),Bop(Bit,Var("x",F64),LN 2),
378        Bop(Bit,Var("x",F64),LN 0),EX(Var("x",F64),LN 33,LN 6,FTy 28),
379        Bop(Bit,Var("x",F64),LN 1),EX(Var("x",F64),LN 63,LN 34,FTy 30)]))
380;
381val reg'EntryLo_def = Def
382  ("reg'EntryLo",Var("x",CTy"EntryLo"),
383   CS(Var("x",CTy"EntryLo"),
384      [(Rec(CTy"EntryLo",
385            [Var("C",FTy 3),bVar"D",bVar"G",Var("PFN",FTy 28),bVar"V",
386             Var("entrylo'rst",FTy 30)]),
387        CC[Var("entrylo'rst",FTy 30),Var("PFN",FTy 28),Var("C",FTy 3),
388           Mop(Cast F1,bVar"D"),Mop(Cast F1,bVar"V"),Mop(Cast F1,bVar"G")])]))
389;
390val write'rec'EntryLo_def = Def
391  ("write'rec'EntryLo",TP[AVar F64,Var("x",CTy"EntryLo")],
392   Call("reg'EntryLo",F64,Var("x",CTy"EntryLo")))
393;
394val write'reg'EntryLo_def = Def
395  ("write'reg'EntryLo",TP[AVar(CTy"EntryLo"),Var("x",F64)],
396   Call("rec'EntryLo",CTy"EntryLo",Var("x",F64)))
397;
398val rec'PageMask_def = Def
399  ("rec'PageMask",Var("x",F32),
400   Rec(CTy"PageMask",
401       [EX(Var("x",F32),LN 24,LN 13,FTy 12),
402        CC[EX(Var("x",F32),LN 12,LN 0,FTy 13),
403           EX(Var("x",F32),LN 31,LN 25,FTy 7)]]))
404;
405val reg'PageMask_def = Def
406  ("reg'PageMask",Var("x",CTy"PageMask"),
407   CS(Var("x",CTy"PageMask"),
408      [(Rec(CTy"PageMask",[Var("Mask",FTy 12),Var("pagemask'rst",FTy 20)]),
409        CC[EX(Var("pagemask'rst",FTy 20),LN 6,LN 0,FTy 7),
410           Var("Mask",FTy 12),
411           EX(Var("pagemask'rst",FTy 20),LN 19,LN 7,FTy 13)])]))
412;
413val write'rec'PageMask_def = Def
414  ("write'rec'PageMask",TP[AVar F32,Var("x",CTy"PageMask")],
415   Call("reg'PageMask",F32,Var("x",CTy"PageMask")))
416;
417val write'reg'PageMask_def = Def
418  ("write'reg'PageMask",TP[AVar(CTy"PageMask"),Var("x",F32)],
419   Call("rec'PageMask",CTy"PageMask",Var("x",F32)))
420;
421val rec'EntryHi_def = Def
422  ("rec'EntryHi",Var("x",F64),
423   Rec(CTy"EntryHi",
424       [EX(Var("x",F64),LN 7,LN 0,F8),EX(Var("x",F64),LN 63,LN 62,FTy 2),
425        EX(Var("x",F64),LN 39,LN 13,FTy 27),
426        CC[EX(Var("x",F64),LN 12,LN 8,FTy 5),
427           EX(Var("x",F64),LN 61,LN 40,FTy 22)]]))
428;
429val reg'EntryHi_def = Def
430  ("reg'EntryHi",Var("x",CTy"EntryHi"),
431   CS(Var("x",CTy"EntryHi"),
432      [(Rec(CTy"EntryHi",
433            [Var("ASID",F8),Var("R",FTy 2),Var("VPN2",FTy 27),
434             Var("entryhi'rst",FTy 27)]),
435        CC[Var("R",FTy 2),EX(Var("entryhi'rst",FTy 27),LN 21,LN 0,FTy 22),
436           Var("VPN2",FTy 27),
437           EX(Var("entryhi'rst",FTy 27),LN 26,LN 22,FTy 5),Var("ASID",F8)])]))
438;
439val write'rec'EntryHi_def = Def
440  ("write'rec'EntryHi",TP[AVar F64,Var("x",CTy"EntryHi")],
441   Call("reg'EntryHi",F64,Var("x",CTy"EntryHi")))
442;
443val write'reg'EntryHi_def = Def
444  ("write'reg'EntryHi",TP[AVar(CTy"EntryHi"),Var("x",F64)],
445   Call("rec'EntryHi",CTy"EntryHi",Var("x",F64)))
446;
447val rec'StatusRegister_def = Def
448  ("rec'StatusRegister",Var("x",F32),
449   Rec(CTy"StatusRegister",
450       [Bop(Bit,Var("x",F32),LN 22),Bop(Bit,Var("x",F32),LN 28),
451        Bop(Bit,Var("x",F32),LN 29),Bop(Bit,Var("x",F32),LN 2),
452        Bop(Bit,Var("x",F32),LN 1),Bop(Bit,Var("x",F32),LN 26),
453        Bop(Bit,Var("x",F32),LN 0),EX(Var("x",F32),LN 15,LN 8,F8),
454        EX(Var("x",F32),LN 4,LN 3,FTy 2),Bop(Bit,Var("x",F32),LN 7),
455        Bop(Bit,Var("x",F32),LN 25),Bop(Bit,Var("x",F32),LN 6),
456        Bop(Bit,Var("x",F32),LN 5),
457        CC[EX(Var("x",F32),LN 21,LN 16,FTy 6),
458           EX(Var("x",F32),LN 24,LN 23,FTy 2),
459           EX(Var("x",F32),LN 27,LN 27,F1),
460           EX(Var("x",F32),LN 31,LN 30,FTy 2)]]))
461;
462val reg'StatusRegister_def = Def
463  ("reg'StatusRegister",Var("x",CTy"StatusRegister"),
464   CS(Var("x",CTy"StatusRegister"),
465      [(Rec(CTy"StatusRegister",
466            [bVar"BEV",bVar"CU0",bVar"CU1",bVar"ERL",bVar"EXL",bVar"FR",
467             bVar"IE",Var("IM",F8),Var("KSU",FTy 2),bVar"KX",bVar"RE",
468             bVar"SX",bVar"UX",Var("statusregister'rst",FTy 11)]),
469        CC[EX(Var("statusregister'rst",FTy 11),LN 1,LN 0,FTy 2),
470           Mop(Cast F1,bVar"CU1"),Mop(Cast F1,bVar"CU0"),
471           EX(Var("statusregister'rst",FTy 11),LN 2,LN 2,F1),
472           Mop(Cast F1,bVar"FR"),Mop(Cast F1,bVar"RE"),
473           EX(Var("statusregister'rst",FTy 11),LN 4,LN 3,FTy 2),
474           Mop(Cast F1,bVar"BEV"),
475           EX(Var("statusregister'rst",FTy 11),LN 10,LN 5,FTy 6),
476           Var("IM",F8),Mop(Cast F1,bVar"KX"),Mop(Cast F1,bVar"SX"),
477           Mop(Cast F1,bVar"UX"),Var("KSU",FTy 2),Mop(Cast F1,bVar"ERL"),
478           Mop(Cast F1,bVar"EXL"),Mop(Cast F1,bVar"IE")])]))
479;
480val write'rec'StatusRegister_def = Def
481  ("write'rec'StatusRegister",TP[AVar F32,Var("x",CTy"StatusRegister")],
482   Call("reg'StatusRegister",F32,Var("x",CTy"StatusRegister")))
483;
484val write'reg'StatusRegister_def = Def
485  ("write'reg'StatusRegister",TP[AVar(CTy"StatusRegister"),Var("x",F32)],
486   Call("rec'StatusRegister",CTy"StatusRegister",Var("x",F32)))
487;
488val rec'ConfigRegister_def = Def
489  ("rec'ConfigRegister",Var("x",F32),
490   Rec(CTy"ConfigRegister",
491       [EX(Var("x",F32),LN 12,LN 10,FTy 3),
492        EX(Var("x",F32),LN 14,LN 13,FTy 2),Bop(Bit,Var("x",F32),LN 15),
493        EX(Var("x",F32),LN 2,LN 0,FTy 3),Bop(Bit,Var("x",F32),LN 31),
494        EX(Var("x",F32),LN 9,LN 7,FTy 3),
495        CC[EX(Var("x",F32),LN 6,LN 3,F4),
496           EX(Var("x",F32),LN 30,LN 16,FTy 15)]]))
497;
498val reg'ConfigRegister_def = Def
499  ("reg'ConfigRegister",Var("x",CTy"ConfigRegister"),
500   CS(Var("x",CTy"ConfigRegister"),
501      [(Rec(CTy"ConfigRegister",
502            [Var("AR",FTy 3),Var("AT",FTy 2),bVar"BE",Var("K0",FTy 3),
503             bVar"M",Var("MT",FTy 3),Var("configregister'rst",FTy 19)]),
504        CC[Mop(Cast F1,bVar"M"),
505           EX(Var("configregister'rst",FTy 19),LN 14,LN 0,FTy 15),
506           Mop(Cast F1,bVar"BE"),Var("AT",FTy 2),Var("AR",FTy 3),
507           Var("MT",FTy 3),
508           EX(Var("configregister'rst",FTy 19),LN 18,LN 15,F4),
509           Var("K0",FTy 3)])]))
510;
511val write'rec'ConfigRegister_def = Def
512  ("write'rec'ConfigRegister",TP[AVar F32,Var("x",CTy"ConfigRegister")],
513   Call("reg'ConfigRegister",F32,Var("x",CTy"ConfigRegister")))
514;
515val write'reg'ConfigRegister_def = Def
516  ("write'reg'ConfigRegister",TP[AVar(CTy"ConfigRegister"),Var("x",F32)],
517   Call("rec'ConfigRegister",CTy"ConfigRegister",Var("x",F32)))
518;
519val rec'ConfigRegister1_def = Def
520  ("rec'ConfigRegister1",Var("x",F32),
521   Rec(CTy"ConfigRegister1",
522       [Bop(Bit,Var("x",F32),LN 6),Bop(Bit,Var("x",F32),LN 2),
523        EX(Var("x",F32),LN 9,LN 7,FTy 3),
524        EX(Var("x",F32),LN 12,LN 10,FTy 3),
525        EX(Var("x",F32),LN 15,LN 13,FTy 3),Bop(Bit,Var("x",F32),LN 1),
526        Bop(Bit,Var("x",F32),LN 0),EX(Var("x",F32),LN 18,LN 16,FTy 3),
527        EX(Var("x",F32),LN 21,LN 19,FTy 3),
528        EX(Var("x",F32),LN 24,LN 22,FTy 3),Bop(Bit,Var("x",F32),LN 31),
529        Bop(Bit,Var("x",F32),LN 5),EX(Var("x",F32),LN 30,LN 25,FTy 6),
530        Bop(Bit,Var("x",F32),LN 4),Bop(Bit,Var("x",F32),LN 3)]))
531;
532val reg'ConfigRegister1_def = Def
533  ("reg'ConfigRegister1",Var("x",CTy"ConfigRegister1"),
534   CS(Var("x",CTy"ConfigRegister1"),
535      [(Rec(CTy"ConfigRegister1",
536            [bVar"C2",bVar"CA",Var("DA",FTy 3),Var("DL",FTy 3),
537             Var("DS",FTy 3),bVar"EP",bVar"FP",Var("IA",FTy 3),
538             Var("IL",FTy 3),Var("IS",FTy 3),bVar"M",bVar"MD",
539             Var("MMUSize",FTy 6),bVar"PC",bVar"WR"]),
540        CC[Mop(Cast F1,bVar"M"),Var("MMUSize",FTy 6),Var("IS",FTy 3),
541           Var("IL",FTy 3),Var("IA",FTy 3),Var("DS",FTy 3),
542           Var("DL",FTy 3),Var("DA",FTy 3),Mop(Cast F1,bVar"C2"),
543           Mop(Cast F1,bVar"MD"),Mop(Cast F1,bVar"PC"),
544           Mop(Cast F1,bVar"WR"),Mop(Cast F1,bVar"CA"),
545           Mop(Cast F1,bVar"EP"),Mop(Cast F1,bVar"FP")])]))
546;
547val write'rec'ConfigRegister1_def = Def
548  ("write'rec'ConfigRegister1",TP[AVar F32,Var("x",CTy"ConfigRegister1")],
549   Call("reg'ConfigRegister1",F32,Var("x",CTy"ConfigRegister1")))
550;
551val write'reg'ConfigRegister1_def = Def
552  ("write'reg'ConfigRegister1",
553   TP[AVar(CTy"ConfigRegister1"),Var("x",F32)],
554   Call("rec'ConfigRegister1",CTy"ConfigRegister1",Var("x",F32)))
555;
556val rec'ConfigRegister2_def = Def
557  ("rec'ConfigRegister2",Var("x",F32),
558   Rec(CTy"ConfigRegister2",
559       [Bop(Bit,Var("x",F32),LN 31),EX(Var("x",F32),LN 3,LN 0,F4),
560        EX(Var("x",F32),LN 7,LN 4,F4),EX(Var("x",F32),LN 11,LN 8,F4),
561        EX(Var("x",F32),LN 15,LN 12,F4),EX(Var("x",F32),LN 19,LN 16,F4),
562        EX(Var("x",F32),LN 23,LN 20,F4),EX(Var("x",F32),LN 27,LN 24,F4),
563        EX(Var("x",F32),LN 30,LN 28,FTy 3)]))
564;
565val reg'ConfigRegister2_def = Def
566  ("reg'ConfigRegister2",Var("x",CTy"ConfigRegister2"),
567   CS(Var("x",CTy"ConfigRegister2"),
568      [(Rec(CTy"ConfigRegister2",
569            [bVar"M",Var("SA",F4),Var("SL",F4),Var("SS",F4),Var("SU",F4),
570             Var("TA",F4),Var("TL",F4),Var("TS",F4),Var("TU",FTy 3)]),
571        CC[Mop(Cast F1,bVar"M"),Var("TU",FTy 3),Var("TS",F4),Var("TL",F4),
572           Var("TA",F4),Var("SU",F4),Var("SS",F4),Var("SL",F4),
573           Var("SA",F4)])]))
574;
575val write'rec'ConfigRegister2_def = Def
576  ("write'rec'ConfigRegister2",TP[AVar F32,Var("x",CTy"ConfigRegister2")],
577   Call("reg'ConfigRegister2",F32,Var("x",CTy"ConfigRegister2")))
578;
579val write'reg'ConfigRegister2_def = Def
580  ("write'reg'ConfigRegister2",
581   TP[AVar(CTy"ConfigRegister2"),Var("x",F32)],
582   Call("rec'ConfigRegister2",CTy"ConfigRegister2",Var("x",F32)))
583;
584val rec'ConfigRegister3_def = Def
585  ("rec'ConfigRegister3",Var("x",F32),
586   Rec(CTy"ConfigRegister3",
587       [Bop(Bit,Var("x",F32),LN 10),Bop(Bit,Var("x",F32),LN 7),
588        Bop(Bit,Var("x",F32),LN 31),Bop(Bit,Var("x",F32),LN 2),
589        Bop(Bit,Var("x",F32),LN 1),Bop(Bit,Var("x",F32),LN 4),
590        Bop(Bit,Var("x",F32),LN 0),Bop(Bit,Var("x",F32),LN 13),
591        Bop(Bit,Var("x",F32),LN 6),Bop(Bit,Var("x",F32),LN 5),
592        CC[EX(Var("x",F32),LN 3,LN 3,F1),EX(Var("x",F32),LN 9,LN 8,FTy 2),
593           EX(Var("x",F32),LN 12,LN 11,FTy 2),
594           EX(Var("x",F32),LN 30,LN 14,FTy 17)]]))
595;
596val reg'ConfigRegister3_def = Def
597  ("reg'ConfigRegister3",Var("x",CTy"ConfigRegister3"),
598   CS(Var("x",CTy"ConfigRegister3"),
599      [(Rec(CTy"ConfigRegister3",
600            [bVar"DSPP",bVar"LPA",bVar"M",bVar"MT",bVar"SM",bVar"SP",
601             bVar"TL",bVar"ULRI",bVar"VEIC",bVar"VInt",
602             Var("configregister3'rst",FTy 22)]),
603        CC[Mop(Cast F1,bVar"M"),
604           EX(Var("configregister3'rst",FTy 22),LN 16,LN 0,FTy 17),
605           Mop(Cast F1,bVar"ULRI"),
606           EX(Var("configregister3'rst",FTy 22),LN 18,LN 17,FTy 2),
607           Mop(Cast F1,bVar"DSPP"),
608           EX(Var("configregister3'rst",FTy 22),LN 20,LN 19,FTy 2),
609           Mop(Cast F1,bVar"LPA"),Mop(Cast F1,bVar"VEIC"),
610           Mop(Cast F1,bVar"VInt"),Mop(Cast F1,bVar"SP"),
611           EX(Var("configregister3'rst",FTy 22),LN 21,LN 21,F1),
612           Mop(Cast F1,bVar"MT"),Mop(Cast F1,bVar"SM"),
613           Mop(Cast F1,bVar"TL")])]))
614;
615val write'rec'ConfigRegister3_def = Def
616  ("write'rec'ConfigRegister3",TP[AVar F32,Var("x",CTy"ConfigRegister3")],
617   Call("reg'ConfigRegister3",F32,Var("x",CTy"ConfigRegister3")))
618;
619val write'reg'ConfigRegister3_def = Def
620  ("write'reg'ConfigRegister3",
621   TP[AVar(CTy"ConfigRegister3"),Var("x",F32)],
622   Call("rec'ConfigRegister3",CTy"ConfigRegister3",Var("x",F32)))
623;
624val rec'ConfigRegister6_def = Def
625  ("rec'ConfigRegister6",Var("x",F32),
626   Rec(CTy"ConfigRegister6",
627       [Bop(Bit,Var("x",F32),LN 2),EX(Var("x",F32),LN 31,LN 16,F16),
628        CC[EX(Var("x",F32),LN 1,LN 0,FTy 2),
629           EX(Var("x",F32),LN 15,LN 3,FTy 13)]]))
630;
631val reg'ConfigRegister6_def = Def
632  ("reg'ConfigRegister6",Var("x",CTy"ConfigRegister6"),
633   CS(Var("x",CTy"ConfigRegister6"),
634      [(Rec(CTy"ConfigRegister6",
635            [bVar"LTLB",Var("TLBSize",F16),
636             Var("configregister6'rst",FTy 15)]),
637        CC[Var("TLBSize",F16),
638           EX(Var("configregister6'rst",FTy 15),LN 12,LN 0,FTy 13),
639           Mop(Cast F1,bVar"LTLB"),
640           EX(Var("configregister6'rst",FTy 15),LN 14,LN 13,FTy 2)])]))
641;
642val write'rec'ConfigRegister6_def = Def
643  ("write'rec'ConfigRegister6",TP[AVar F32,Var("x",CTy"ConfigRegister6")],
644   Call("reg'ConfigRegister6",F32,Var("x",CTy"ConfigRegister6")))
645;
646val write'reg'ConfigRegister6_def = Def
647  ("write'reg'ConfigRegister6",
648   TP[AVar(CTy"ConfigRegister6"),Var("x",F32)],
649   Call("rec'ConfigRegister6",CTy"ConfigRegister6",Var("x",F32)))
650;
651val rec'CauseRegister_def = Def
652  ("rec'CauseRegister",Var("x",F32),
653   Rec(CTy"CauseRegister",
654       [Bop(Bit,Var("x",F32),LN 31),EX(Var("x",F32),LN 29,LN 28,FTy 2),
655        EX(Var("x",F32),LN 6,LN 2,FTy 5),EX(Var("x",F32),LN 15,LN 8,F8),
656        Bop(Bit,Var("x",F32),LN 30),
657        CC[EX(Var("x",F32),LN 1,LN 0,FTy 2),EX(Var("x",F32),LN 7,LN 7,F1),
658           EX(Var("x",F32),LN 27,LN 16,FTy 12)]]))
659;
660val reg'CauseRegister_def = Def
661  ("reg'CauseRegister",Var("x",CTy"CauseRegister"),
662   CS(Var("x",CTy"CauseRegister"),
663      [(Rec(CTy"CauseRegister",
664            [bVar"BD",Var("CE",FTy 2),Var("ExcCode",FTy 5),Var("IP",F8),
665             bVar"TI",Var("causeregister'rst",FTy 15)]),
666        CC[Mop(Cast F1,bVar"BD"),Mop(Cast F1,bVar"TI"),Var("CE",FTy 2),
667           EX(Var("causeregister'rst",FTy 15),LN 11,LN 0,FTy 12),
668           Var("IP",F8),
669           EX(Var("causeregister'rst",FTy 15),LN 12,LN 12,F1),
670           Var("ExcCode",FTy 5),
671           EX(Var("causeregister'rst",FTy 15),LN 14,LN 13,FTy 2)])]))
672;
673val write'rec'CauseRegister_def = Def
674  ("write'rec'CauseRegister",TP[AVar F32,Var("x",CTy"CauseRegister")],
675   Call("reg'CauseRegister",F32,Var("x",CTy"CauseRegister")))
676;
677val write'reg'CauseRegister_def = Def
678  ("write'reg'CauseRegister",TP[AVar(CTy"CauseRegister"),Var("x",F32)],
679   Call("rec'CauseRegister",CTy"CauseRegister",Var("x",F32)))
680;
681val rec'Context_def = Def
682  ("rec'Context",Var("x",F64),
683   Rec(CTy"Context",
684       [EX(Var("x",F64),LN 22,LN 4,FTy 19),
685        EX(Var("x",F64),LN 63,LN 23,FTy 41),EX(Var("x",F64),LN 3,LN 0,F4)]))
686;
687val reg'Context_def = Def
688  ("reg'Context",Var("x",CTy"Context"),
689   CS(Var("x",CTy"Context"),
690      [(Rec(CTy"Context",
691            [Var("BadVPN2",FTy 19),Var("PTEBase",FTy 41),
692             Var("context'rst",F4)]),
693        CC[Var("PTEBase",FTy 41),Var("BadVPN2",FTy 19),
694           Var("context'rst",F4)])]))
695;
696val write'rec'Context_def = Def
697  ("write'rec'Context",TP[AVar F64,Var("x",CTy"Context")],
698   Call("reg'Context",F64,Var("x",CTy"Context")))
699;
700val write'reg'Context_def = Def
701  ("write'reg'Context",TP[AVar(CTy"Context"),Var("x",F64)],
702   Call("rec'Context",CTy"Context",Var("x",F64)))
703;
704val rec'XContext_def = Def
705  ("rec'XContext",Var("x",F64),
706   Rec(CTy"XContext",
707       [EX(Var("x",F64),LN 30,LN 4,FTy 27),
708        EX(Var("x",F64),LN 63,LN 33,FTy 31),
709        EX(Var("x",F64),LN 32,LN 31,FTy 2),EX(Var("x",F64),LN 3,LN 0,F4)]))
710;
711val reg'XContext_def = Def
712  ("reg'XContext",Var("x",CTy"XContext"),
713   CS(Var("x",CTy"XContext"),
714      [(Rec(CTy"XContext",
715            [Var("BadVPN2",FTy 27),Var("PTEBase",FTy 31),Var("R",FTy 2),
716             Var("xcontext'rst",F4)]),
717        CC[Var("PTEBase",FTy 31),Var("R",FTy 2),Var("BadVPN2",FTy 27),
718           Var("xcontext'rst",F4)])]))
719;
720val write'rec'XContext_def = Def
721  ("write'rec'XContext",TP[AVar F64,Var("x",CTy"XContext")],
722   Call("reg'XContext",F64,Var("x",CTy"XContext")))
723;
724val write'reg'XContext_def = Def
725  ("write'reg'XContext",TP[AVar(CTy"XContext"),Var("x",F64)],
726   Call("rec'XContext",CTy"XContext",Var("x",F64)))
727;
728val rec'HWREna_def = Def
729  ("rec'HWREna",Var("x",F32),
730   Rec(CTy"HWREna",
731       [Bop(Bit,Var("x",F32),LN 2),Bop(Bit,Var("x",F32),LN 3),
732        Bop(Bit,Var("x",F32),LN 0),Bop(Bit,Var("x",F32),LN 29),
733        CC[EX(Var("x",F32),LN 1,LN 1,F1),
734           EX(Var("x",F32),LN 28,LN 4,FTy 25),
735           EX(Var("x",F32),LN 31,LN 30,FTy 2)]]))
736;
737val reg'HWREna_def = Def
738  ("reg'HWREna",Var("x",CTy"HWREna"),
739   CS(Var("x",CTy"HWREna"),
740      [(Rec(CTy"HWREna",
741            [bVar"CC",bVar"CCRes",bVar"CPUNum",bVar"UL",
742             Var("hwrena'rst",FTy 28)]),
743        CC[EX(Var("hwrena'rst",FTy 28),LN 1,LN 0,FTy 2),
744           Mop(Cast F1,bVar"UL"),
745           EX(Var("hwrena'rst",FTy 28),LN 26,LN 2,FTy 25),
746           Mop(Cast F1,bVar"CCRes"),Mop(Cast F1,bVar"CC"),
747           EX(Var("hwrena'rst",FTy 28),LN 27,LN 27,F1),
748           Mop(Cast F1,bVar"CPUNum")])]))
749;
750val write'rec'HWREna_def = Def
751  ("write'rec'HWREna",TP[AVar F32,Var("x",CTy"HWREna")],
752   Call("reg'HWREna",F32,Var("x",CTy"HWREna")))
753;
754val write'reg'HWREna_def = Def
755  ("write'reg'HWREna",TP[AVar(CTy"HWREna"),Var("x",F32)],
756   Call("rec'HWREna",CTy"HWREna",Var("x",F32)))
757;
758val ConditionalBranch_def = Def
759  ("ConditionalBranch",TP[bVar"b",Var("offset",F16)],
760   Close
761     (qVar"state",
762      Rupd
763        ("BranchTo",
764         TP[qVar"state",
765            Mop(Some,
766                ITE(bVar"b",
767                    TP[LF,
768                       Bop(Add,
769                           Bop(Add,Dest("PC",F64,qVar"state"),LW(4,64)),
770                           Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2))],
771                    TP[LT,Bop(Add,Dest("PC",F64,qVar"state"),LW(4,64))]))])))
772;
773val ConditionalBranchLikely_def = Def
774  ("ConditionalBranchLikely",TP[bVar"b",Var("offset",F16)],
775   Close
776     (qVar"state",
777      ITB([(bVar"b",
778            Rupd
779              ("BranchTo",
780               TP[qVar"state",
781                  Mop(Some,
782                      TP[LF,
783                         Bop(Add,
784                             Bop(Add,Dest("PC",F64,qVar"state"),LW(4,64)),
785                             Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2))])])),
786           (Mop(IsSome,Dest("BranchDelay",OTy(OTy F64),qVar"state")),
787            Rupd
788              ("BranchTo",
789               TP[qVar"state",
790                  Mop(Some,
791                      TP[LT,Bop(Add,Dest("PC",F64,qVar"state"),LW(8,64))])]))],
792          Rupd
793            ("PC",
794             TP[qVar"state",Bop(Add,Dest("PC",F64,qVar"state"),LW(4,64))]))))
795;
796val NotWordValue_def = Def
797  ("NotWordValue",Var("value",F64),
798   Let(Var("top",FTy 33),EX(Var("value",F64),LN 63,LN 31,FTy 33),
799       Bop(And,Mop(Not,EQ(Var("top",FTy 33),LW(0,33))),
800           Mop(Not,EQ(Var("top",FTy 33),LW(8589934591,33))))))
801;
802val ExceptionCode_def = Def
803  ("ExceptionCode",Var("ExceptionType",CTy"ExceptionType"),
804   Close
805     (qVar"state",
806      Rupd
807        ("CP0",
808         TP[qVar"state",
809            Rupd
810              ("Cause",
811               TP[Dest("CP0",CTy"CP0",qVar"state"),
812                  Rupd
813                    ("ExcCode",
814                     TP[Dest
815                          ("Cause",CTy"CauseRegister",
816                           Dest("CP0",CTy"CP0",qVar"state")),
817                        CS(Var("ExceptionType",CTy"ExceptionType"),
818                           [(LC("Int",CTy"ExceptionType"),LW(0,5)),
819                            (LC("Mod",CTy"ExceptionType"),LW(1,5)),
820                            (LC("TLBL",CTy"ExceptionType"),LW(2,5)),
821                            (LC("TLBS",CTy"ExceptionType"),LW(3,5)),
822                            (LC("AdEL",CTy"ExceptionType"),LW(4,5)),
823                            (LC("AdES",CTy"ExceptionType"),LW(5,5)),
824                            (LC("Sys",CTy"ExceptionType"),LW(8,5)),
825                            (LC("Bp",CTy"ExceptionType"),LW(9,5)),
826                            (LC("ResI",CTy"ExceptionType"),LW(10,5)),
827                            (LC("CpU",CTy"ExceptionType"),LW(11,5)),
828                            (LC("Ov",CTy"ExceptionType"),LW(12,5)),
829                            (LC("Tr",CTy"ExceptionType"),LW(13,5)),
830                            (LC("XTLBRefillL",CTy"ExceptionType"),LW(2,5)),
831                            (LC("XTLBRefillS",CTy"ExceptionType"),LW(3,5))])])])])))
832;
833val SignalException_def = Def
834  ("SignalException",Var("ExceptionType",CTy"ExceptionType"),
835   Close
836     (qVar"state",
837      Let(qVar"s",
838          ITE(Mop(Not,
839                  Dest
840                    ("EXL",bTy,
841                     Dest
842                       ("Status",CTy"StatusRegister",
843                        Dest("CP0",CTy"CP0",qVar"state")))),
844              CS(Dest("BranchDelay",OTy(OTy F64),qVar"state"),
845                 [(Mop(Some,Mop(Some,AVar F64)),
846                   Let(qVar"s",
847                       Rupd
848                         ("CP0",
849                          TP[qVar"state",
850                             Rupd
851                               ("EPC",
852                                TP[Dest("CP0",CTy"CP0",qVar"state"),
853                                   Bop(Sub,Dest("PC",F64,qVar"state"),
854                                       LW(4,64))])]),
855                       Rupd
856                         ("CP0",
857                          TP[qVar"s",
858                             Rupd
859                               ("Cause",
860                                TP[Dest("CP0",CTy"CP0",qVar"s"),
861                                   Rupd
862                                     ("BD",
863                                      TP[Dest
864                                           ("Cause",CTy"CauseRegister",
865                                            Dest("CP0",CTy"CP0",qVar"s")),
866                                         LT])])]))),
867                  (AVar(OTy(OTy F64)),
868                   Let(qVar"s",
869                       Rupd
870                         ("CP0",
871                          TP[qVar"state",
872                             Rupd
873                               ("EPC",
874                                TP[Dest("CP0",CTy"CP0",qVar"state"),
875                                   Dest("PC",F64,qVar"state")])]),
876                       Rupd
877                         ("CP0",
878                          TP[qVar"s",
879                             Rupd
880                               ("Cause",
881                                TP[Dest("CP0",CTy"CP0",qVar"s"),
882                                   Rupd
883                                     ("BD",
884                                      TP[Dest
885                                           ("Cause",CTy"CauseRegister",
886                                            Dest("CP0",CTy"CP0",qVar"s")),
887                                         LF])])])))]),qVar"state"),
888          Let(qVar"s0",
889              Apply
890                (Call
891                   ("ExceptionCode",ATy(qTy,qTy),
892                    Var("ExceptionType",CTy"ExceptionType")),qVar"s"),
893              Let(qVar"s0",
894                  Rupd
895                    ("CP0",
896                     TP[qVar"s0",
897                        Rupd
898                          ("Status",
899                           TP[Dest("CP0",CTy"CP0",qVar"s0"),
900                              Rupd
901                                ("EXL",
902                                 TP[Dest
903                                      ("Status",CTy"StatusRegister",
904                                       Dest("CP0",CTy"CP0",qVar"s0")),LT])])]),
905                  Let(Var("v0",F64),
906                      ITE(Dest
907                            ("BEV",bTy,
908                             Dest
909                               ("Status",CTy"StatusRegister",
910                                Dest("CP0",CTy"CP0",qVar"s0"))),
911                          LW(18446744072631616000,64),
912                          LW(18446744071562067968,64)),
913                      Rupd
914                        ("exceptionSignalled",
915                         TP[Rupd
916                              ("PC",
917                               TP[Rupd
918                                    ("BranchDelay",
919                                     TP[qVar"s0",LO(OTy F64)]),
920                                  Bop(Sub,
921                                      CC[EX(Var("v0",F64),LN 63,LN 30,
922                                            FTy 34),
923                                         Bop(Add,
924                                             EX(Var("v0",F64),LN 29,LN 0,
925                                                FTy 30),
926                                             ITE(Bop(And,
927                                                     Bop(Or,
928                                                         EQ(Var("ExceptionType",
929                                                                CTy"ExceptionType"),
930                                                            LC("XTLBRefillL",
931                                                               CTy"ExceptionType")),
932                                                         EQ(Var("ExceptionType",
933                                                                CTy"ExceptionType"),
934                                                            LC("XTLBRefillS",
935                                                               CTy"ExceptionType"))),
936                                                     Mop(Not,
937                                                         Dest
938                                                           ("EXL",bTy,
939                                                            Dest
940                                                              ("Status",
941                                                               CTy"StatusRegister",
942                                                               Dest
943                                                                 ("CP0",
944                                                                  CTy"CP0",
945                                                                  qVar"s"))))),
946                                                 LW(128,30),LW(384,30)))],
947                                      LW(4,64))]),LT])))))))
948;
949val SignalCP1UnusableException_def = Def
950  ("SignalCP1UnusableException",qVar"state",
951   Apply
952     (Call("SignalException",ATy(qTy,qTy),LC("CpU",CTy"ExceptionType")),
953      Rupd
954        ("CP0",
955         TP[qVar"state",
956            Rupd
957              ("Cause",
958               TP[Dest("CP0",CTy"CP0",qVar"state"),
959                  Rupd
960                    ("CE",
961                     TP[Dest
962                          ("Cause",CTy"CauseRegister",
963                           Dest("CP0",CTy"CP0",qVar"state")),LW(1,2)])])])))
964;
965val UserMode_def = Def
966  ("UserMode",qVar"state",
967   Bop(And,
968       EQ(Dest
969            ("KSU",FTy 2,
970             Dest
971               ("Status",CTy"StatusRegister",
972                Dest("CP0",CTy"CP0",qVar"state"))),LW(2,2)),
973       Mop(Not,
974           Bop(Or,
975               Dest
976                 ("EXL",bTy,
977                  Dest
978                    ("Status",CTy"StatusRegister",
979                     Dest("CP0",CTy"CP0",qVar"state"))),
980               Dest
981                 ("ERL",bTy,
982                  Dest
983                    ("Status",CTy"StatusRegister",
984                     Dest("CP0",CTy"CP0",qVar"state")))))))
985;
986val SupervisorMode_def = Def
987  ("SupervisorMode",qVar"state",
988   Bop(And,
989       EQ(Dest
990            ("KSU",FTy 2,
991             Dest
992               ("Status",CTy"StatusRegister",
993                Dest("CP0",CTy"CP0",qVar"state"))),LW(1,2)),
994       Mop(Not,
995           Bop(Or,
996               Dest
997                 ("EXL",bTy,
998                  Dest
999                    ("Status",CTy"StatusRegister",
1000                     Dest("CP0",CTy"CP0",qVar"state"))),
1001               Dest
1002                 ("ERL",bTy,
1003                  Dest
1004                    ("Status",CTy"StatusRegister",
1005                     Dest("CP0",CTy"CP0",qVar"state")))))))
1006;
1007val KernelMode_def = Def
1008  ("KernelMode",qVar"state",
1009   Bop(Or,
1010       EQ(Dest
1011            ("KSU",FTy 2,
1012             Dest
1013               ("Status",CTy"StatusRegister",
1014                Dest("CP0",CTy"CP0",qVar"state"))),LW(0,2)),
1015       Bop(Or,
1016           Dest
1017             ("EXL",bTy,
1018              Dest
1019                ("Status",CTy"StatusRegister",
1020                 Dest("CP0",CTy"CP0",qVar"state"))),
1021           Dest
1022             ("ERL",bTy,
1023              Dest
1024                ("Status",CTy"StatusRegister",
1025                 Dest("CP0",CTy"CP0",qVar"state"))))))
1026;
1027val GPR_def = Def
1028  ("GPR",Var("n",FTy 5),
1029   Close
1030     (qVar"state",
1031      ITE(EQ(Var("n",FTy 5),LW(0,5)),LW(0,64),
1032          Apply(Dest("gpr",ATy(FTy 5,F64),qVar"state"),Var("n",FTy 5)))))
1033;
1034val write'GPR_def = Def
1035  ("write'GPR",TP[Var("value",F64),Var("n",FTy 5)],
1036   Close
1037     (qVar"state",
1038      ITE(Mop(Not,EQ(Var("n",FTy 5),LW(0,5))),
1039          Rupd
1040            ("gpr",
1041             TP[qVar"state",
1042                Fupd
1043                  (Dest("gpr",ATy(FTy 5,F64),qVar"state"),Var("n",FTy 5),
1044                   Var("value",F64))]),qVar"state")))
1045;
1046val HI_def = Def
1047  ("HI",qVar"state",
1048   CS(Dest("hi",OTy F64,qVar"state"),
1049      [(Mop(Some,Var("v",F64)),TP[Var("v",F64),qVar"state"]),
1050       (LO F64,
1051        Apply
1052          (Call
1053             ("raise'exception",ATy(qTy,PTy(F64,qTy)),
1054              Call("UNPREDICTABLE",CTy"exception",LS"HI")),qVar"state"))]))
1055;
1056val write'HI_def = Def
1057  ("write'HI",Var("value",F64),
1058   Close
1059     (qVar"state",Rupd("hi",TP[qVar"state",Mop(Some,Var("value",F64))])))
1060;
1061val LO_def = Def
1062  ("LO",qVar"state",
1063   CS(Dest("lo",OTy F64,qVar"state"),
1064      [(Mop(Some,Var("v",F64)),TP[Var("v",F64),qVar"state"]),
1065       (LO F64,
1066        Apply
1067          (Call
1068             ("raise'exception",ATy(qTy,PTy(F64,qTy)),
1069              Call("UNPREDICTABLE",CTy"exception",LS"LO")),qVar"state"))]))
1070;
1071val write'LO_def = Def
1072  ("write'LO",Var("value",F64),
1073   Close
1074     (qVar"state",Rupd("lo",TP[qVar"state",Mop(Some,Var("value",F64))])))
1075;
1076val CPR_def = Def
1077  ("CPR",TP[nVar"n",Var("reg",FTy 5),Var("sel",FTy 3)],
1078   Close
1079     (qVar"state",
1080      CS(TP[nVar"n",Var("reg",FTy 5),Var("sel",FTy 3)],
1081         [(TP[LN 0,LW(8,5),LW(0,3)],
1082           Dest("BadVAddr",F64,Dest("CP0",CTy"CP0",qVar"state"))),
1083          (TP[LN 0,LW(9,5),LW(0,3)],
1084           Mop(Cast F64,Dest("Count",F32,Dest("CP0",CTy"CP0",qVar"state")))),
1085          (TP[LN 0,LW(11,5),LW(0,3)],
1086           Mop(Cast F64,
1087               Dest("Compare",F32,Dest("CP0",CTy"CP0",qVar"state")))),
1088          (TP[LN 0,LW(12,5),LW(0,3)],
1089           Mop(Cast F64,
1090               Call
1091                 ("reg'StatusRegister",F32,
1092                  Dest
1093                    ("Status",CTy"StatusRegister",
1094                     Dest("CP0",CTy"CP0",qVar"state"))))),
1095          (TP[LN 0,LW(13,5),LW(0,3)],
1096           Mop(Cast F64,
1097               Call
1098                 ("reg'CauseRegister",F32,
1099                  Dest
1100                    ("Cause",CTy"CauseRegister",
1101                     Dest("CP0",CTy"CP0",qVar"state"))))),
1102          (TP[LN 0,LW(14,5),LW(0,3)],
1103           Dest("EPC",F64,Dest("CP0",CTy"CP0",qVar"state"))),
1104          (TP[LN 0,LW(15,5),LW(0,3)],
1105           Mop(Cast F64,Dest("PRId",F32,Dest("CP0",CTy"CP0",qVar"state")))),
1106          (TP[LN 0,LW(16,5),LW(0,3)],
1107           Mop(Cast F64,
1108               Call
1109                 ("reg'ConfigRegister",F32,
1110                  Dest
1111                    ("Config",CTy"ConfigRegister",
1112                     Dest("CP0",CTy"CP0",qVar"state"))))),
1113          (TP[LN 0,LW(17,5),LW(0,3)],
1114           Dest("LLAddr",F64,Dest("CP0",CTy"CP0",qVar"state"))),
1115          (TP[LN 0,LW(23,5),LW(0,3)],
1116           Mop(Cast F64,Dest("Debug",F32,Dest("CP0",CTy"CP0",qVar"state")))),
1117          (TP[LN 0,LW(26,5),LW(0,3)],
1118           Mop(Cast F64,
1119               Dest("ErrCtl",F32,Dest("CP0",CTy"CP0",qVar"state")))),
1120          (TP[LN 0,LW(30,5),LW(0,3)],
1121           Dest("ErrorEPC",F64,Dest("CP0",CTy"CP0",qVar"state"))),
1122          (AVar(PTy(nTy,PTy(FTy 5,FTy 3))),LX F64)])))
1123;
1124val write'CPR_def = Def
1125  ("write'CPR",
1126   TP[Var("value",F64),nVar"n",Var("reg",FTy 5),Var("sel",FTy 3)],
1127   Close
1128     (qVar"state",
1129      CS(TP[nVar"n",Var("reg",FTy 5),Var("sel",FTy 3)],
1130         [(TP[LN 0,LW(9,5),LW(0,3)],
1131           Rupd
1132             ("CP0",
1133              TP[qVar"state",
1134                 Rupd
1135                   ("Count",
1136                    TP[Dest("CP0",CTy"CP0",qVar"state"),
1137                       EX(Var("value",F64),LN 31,LN 0,F32)])])),
1138          (TP[LN 0,LW(11,5),LW(0,3)],
1139           Rupd
1140             ("CP0",
1141              TP[qVar"state",
1142                 Rupd
1143                   ("Compare",
1144                    TP[Dest("CP0",CTy"CP0",qVar"state"),
1145                       EX(Var("value",F64),LN 31,LN 0,F32)])])),
1146          (TP[LN 0,LW(12,5),LW(0,3)],
1147           Rupd
1148             ("CP0",
1149              TP[qVar"state",
1150                 Rupd
1151                   ("Status",
1152                    TP[Dest("CP0",CTy"CP0",qVar"state"),
1153                       Call
1154                         ("write'reg'StatusRegister",CTy"StatusRegister",
1155                          TP[Dest
1156                               ("Status",CTy"StatusRegister",
1157                                Dest("CP0",CTy"CP0",qVar"state")),
1158                             EX(Var("value",F64),LN 31,LN 0,F32)])])])),
1159          (TP[LN 0,LW(13,5),LW(0,3)],
1160           Rupd
1161             ("CP0",
1162              TP[qVar"state",
1163                 Rupd
1164                   ("Cause",
1165                    TP[Dest("CP0",CTy"CP0",qVar"state"),
1166                       Call
1167                         ("write'reg'CauseRegister",CTy"CauseRegister",
1168                          TP[Dest
1169                               ("Cause",CTy"CauseRegister",
1170                                Dest("CP0",CTy"CP0",qVar"state")),
1171                             EX(Var("value",F64),LN 31,LN 0,F32)])])])),
1172          (TP[LN 0,LW(14,5),LW(0,3)],
1173           Rupd
1174             ("CP0",
1175              TP[qVar"state",
1176                 Rupd
1177                   ("EPC",
1178                    TP[Dest("CP0",CTy"CP0",qVar"state"),Var("value",F64)])])),
1179          (TP[LN 0,LW(16,5),LW(0,3)],
1180           Rupd
1181             ("CP0",
1182              TP[qVar"state",
1183                 Rupd
1184                   ("Config",
1185                    TP[Dest("CP0",CTy"CP0",qVar"state"),
1186                       Call
1187                         ("write'reg'ConfigRegister",CTy"ConfigRegister",
1188                          TP[Dest
1189                               ("Config",CTy"ConfigRegister",
1190                                Dest("CP0",CTy"CP0",qVar"state")),
1191                             EX(Var("value",F64),LN 31,LN 0,F32)])])])),
1192          (TP[LN 0,LW(23,5),LW(0,3)],
1193           Rupd
1194             ("CP0",
1195              TP[qVar"state",
1196                 Rupd
1197                   ("Debug",
1198                    TP[Dest("CP0",CTy"CP0",qVar"state"),
1199                       EX(Var("value",F64),LN 31,LN 0,F32)])])),
1200          (TP[LN 0,LW(26,5),LW(0,3)],
1201           Rupd
1202             ("CP0",
1203              TP[qVar"state",
1204                 Rupd
1205                   ("ErrCtl",
1206                    TP[Dest("CP0",CTy"CP0",qVar"state"),
1207                       EX(Var("value",F64),LN 31,LN 0,F32)])])),
1208          (TP[LN 0,LW(30,5),LW(0,3)],
1209           Rupd
1210             ("CP0",
1211              TP[qVar"state",
1212                 Rupd
1213                   ("ErrorEPC",
1214                    TP[Dest("CP0",CTy"CP0",qVar"state"),Var("value",F64)])])),
1215          (AVar(PTy(nTy,PTy(FTy 5,FTy 3))),qVar"state")])))
1216;
1217val BYTE_def = Def0 ("BYTE",LW(0,3))
1218;
1219val HALFWORD_def = Def0 ("HALFWORD",LW(1,3))
1220;
1221val WORD_def = Def0 ("WORD",LW(3,3))
1222;
1223val DOUBLEWORD_def = Def0 ("DOUBLEWORD",LW(7,3))
1224;
1225val BigEndianMem_def = Def
1226  ("BigEndianMem",qVar"state",
1227   Dest
1228     ("BE",bTy,
1229      Dest("Config",CTy"ConfigRegister",Dest("CP0",CTy"CP0",qVar"state"))))
1230;
1231val ReverseEndian_def = Def
1232  ("ReverseEndian",qVar"state",
1233   Mop(Cast F1,
1234       Bop(And,
1235           Dest
1236             ("RE",bTy,
1237              Dest
1238                ("Status",CTy"StatusRegister",
1239                 Dest("CP0",CTy"CP0",qVar"state"))),
1240           Apply(Const("UserMode",ATy(qTy,bTy)),qVar"state"))))
1241;
1242val BigEndianCPU_def = Def
1243  ("BigEndianCPU",qVar"state",
1244   Bop(BXor,
1245       Mop(Cast F1,Apply(Const("BigEndianMem",ATy(qTy,bTy)),qVar"state")),
1246       Apply(Const("ReverseEndian",ATy(qTy,F1)),qVar"state")))
1247;
1248val AddressTranslation_def = Def
1249  ("AddressTranslation",TP[Var("vAddr",F64),Var("LorS",CTy"LorS")],
1250   TP[Var("vAddr",F64),LW(2,3)])
1251;
1252val Aligned_def = Def
1253  ("Aligned",TP[Var("vAddr",F64),Var("MemType",FTy 3)],
1254   EQ(Bop(BAnd,Mop(Cast(FTy 3),Var("vAddr",F64)),Var("MemType",FTy 3)),
1255      LW(0,3)))
1256;
1257val AdjustEndian_def = Def
1258  ("AdjustEndian",TP[Var("MemType",FTy 3),Var("pAddr",F64)],
1259   Close
1260     (qVar"state",
1261      CS(Var("MemType",FTy 3),
1262         [(LW(0,3),
1263           TP[Bop(BXor,Var("pAddr",F64),
1264                  Mop(Cast F64,
1265                      REP(Apply
1266                            (Const("ReverseEndian",ATy(qTy,F1)),
1267                             qVar"state"),LN 3,FTy 3))),qVar"state"]),
1268          (LW(1,3),
1269           TP[Bop(BXor,Var("pAddr",F64),
1270                  Mop(Cast F64,
1271                      CC[REP(Apply
1272                               (Const("ReverseEndian",ATy(qTy,F1)),
1273                                qVar"state"),LN 2,FTy 2),LW(0,1)])),
1274              qVar"state"]),
1275          (LW(3,3),
1276           TP[Bop(BXor,Var("pAddr",F64),
1277                  Mop(Cast F64,
1278                      CC[Apply
1279                           (Const("ReverseEndian",ATy(qTy,F1)),qVar"state"),
1280                         LW(0,2)])),qVar"state"]),
1281          (LW(7,3),TP[Var("pAddr",F64),qVar"state"]),
1282          (AVar(FTy 3),
1283           Apply
1284             (Call
1285                ("raise'exception",ATy(qTy,PTy(F64,qTy)),
1286                 Call
1287                   ("UNPREDICTABLE",CTy"exception",LS"bad access length")),
1288              qVar"state"))])))
1289;
1290val ReadData_def = Def
1291  ("ReadData",Var("a",F64),
1292   Close
1293     (qVar"state",
1294      Let(Var("a",F64),Bop(BAnd,Var("a",F64),Mop(BNot,LW(7,64))),
1295          ITE(Apply(Const("BigEndianMem",ATy(qTy,bTy)),qVar"state"),
1296              CC[Apply(Dest("MEM",ATy(F64,F8),qVar"state"),Var("a",F64)),
1297                 Apply
1298                   (Dest("MEM",ATy(F64,F8),qVar"state"),
1299                    Bop(Add,Var("a",F64),LW(1,64))),
1300                 Apply
1301                   (Dest("MEM",ATy(F64,F8),qVar"state"),
1302                    Bop(Add,Var("a",F64),LW(2,64))),
1303                 Apply
1304                   (Dest("MEM",ATy(F64,F8),qVar"state"),
1305                    Bop(Add,Var("a",F64),LW(3,64))),
1306                 Apply
1307                   (Dest("MEM",ATy(F64,F8),qVar"state"),
1308                    Bop(Add,Var("a",F64),LW(4,64))),
1309                 Apply
1310                   (Dest("MEM",ATy(F64,F8),qVar"state"),
1311                    Bop(Add,Var("a",F64),LW(5,64))),
1312                 Apply
1313                   (Dest("MEM",ATy(F64,F8),qVar"state"),
1314                    Bop(Add,Var("a",F64),LW(6,64))),
1315                 Apply
1316                   (Dest("MEM",ATy(F64,F8),qVar"state"),
1317                    Bop(Add,Var("a",F64),LW(7,64)))],
1318              CC[Apply
1319                   (Dest("MEM",ATy(F64,F8),qVar"state"),
1320                    Bop(Add,Var("a",F64),LW(7,64))),
1321                 Apply
1322                   (Dest("MEM",ATy(F64,F8),qVar"state"),
1323                    Bop(Add,Var("a",F64),LW(6,64))),
1324                 Apply
1325                   (Dest("MEM",ATy(F64,F8),qVar"state"),
1326                    Bop(Add,Var("a",F64),LW(5,64))),
1327                 Apply
1328                   (Dest("MEM",ATy(F64,F8),qVar"state"),
1329                    Bop(Add,Var("a",F64),LW(4,64))),
1330                 Apply
1331                   (Dest("MEM",ATy(F64,F8),qVar"state"),
1332                    Bop(Add,Var("a",F64),LW(3,64))),
1333                 Apply
1334                   (Dest("MEM",ATy(F64,F8),qVar"state"),
1335                    Bop(Add,Var("a",F64),LW(2,64))),
1336                 Apply
1337                   (Dest("MEM",ATy(F64,F8),qVar"state"),
1338                    Bop(Add,Var("a",F64),LW(1,64))),
1339                 Apply(Dest("MEM",ATy(F64,F8),qVar"state"),Var("a",F64))]))))
1340;
1341val LoadMemory_def = Def
1342  ("LoadMemory",
1343   TP[Var("MemType",FTy 3),Var("AccessLength",FTy 3),bVar"needAlign",
1344      Var("vAddr",F64),Var("link",OTy bTy)],
1345   Close
1346     (qVar"state",
1347      ITE(Bop(And,bVar"needAlign",
1348              Mop(Not,
1349                  Call
1350                    ("Aligned",bTy,
1351                     TP[Var("vAddr",F64),Var("MemType",FTy 3)]))),
1352          TP[LX F64,
1353             Apply
1354               (Call
1355                  ("SignalException",ATy(qTy,qTy),
1356                   LC("AdEL",CTy"ExceptionType")),
1357                Rupd
1358                  ("CP0",
1359                   TP[qVar"state",
1360                      Rupd
1361                        ("BadVAddr",
1362                         TP[Dest("CP0",CTy"CP0",qVar"state"),
1363                            Var("vAddr",F64)])]))],
1364          Let(TP[Var("pAddr",F64),AVar(FTy 3)],
1365              Call
1366                ("AddressTranslation",PTy(F64,FTy 3),
1367                 TP[Var("vAddr",F64),LC("LOAD",CTy"LorS")]),
1368              ITE(Dest("exceptionSignalled",bTy,qVar"state"),
1369                  TP[LX F64,qVar"state"],
1370                  Let(TP[Var("v",F64),qVar"s"],
1371                      Apply
1372                        (Call
1373                           ("AdjustEndian",ATy(qTy,PTy(F64,qTy)),
1374                            TP[Var("MemType",FTy 3),Var("pAddr",F64)]),
1375                         qVar"state"),
1376                      Let(qVar"s0",
1377                          CS(Var("link",OTy bTy),
1378                             [(Mop(Some,LT),
1379                               Let(qVar"s",
1380                                   Rupd("LLbit",TP[qVar"s",Mop(Some,LT)]),
1381                                   Rupd
1382                                     ("CP0",
1383                                      TP[qVar"s",
1384                                         Rupd
1385                                           ("LLAddr",
1386                                            TP[Dest
1387                                                 ("CP0",CTy"CP0",qVar"s"),
1388                                               Var("v",F64)])]))),
1389                              (Mop(Some,LF),
1390                               Rupd("LLbit",TP[qVar"s",LO bTy])),
1391                              (LO bTy,qVar"s")]),
1392                          TP[Apply
1393                               (Call("ReadData",ATy(qTy,F64),Var("v",F64)),
1394                                qVar"s0"),qVar"s0"])))))))
1395;
1396val loadByte_def = Def
1397  ("loadByte",
1398   TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),bVar"unsigned"],
1399   Close
1400     (qVar"state",
1401      Let(Var("v",F64),
1402          Bop(Add,Mop(SE F64,Var("offset",F16)),
1403              Apply
1404                (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),qVar"state")),
1405          Let(TP[Var("v0",F64),qVar"s"],
1406              Apply
1407                (Call
1408                   ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
1409                    TP[Const("BYTE",FTy 3),Const("BYTE",FTy 3),LF,
1410                       Var("v",F64),Mop(Some,LF)]),qVar"state"),
1411              ITE(Mop(Not,Dest("exceptionSignalled",bTy,qVar"s")),
1412                  Let(Var("v1",FTy 3),
1413                      Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3),
1414                          REP(Apply
1415                                (Const("BigEndianCPU",ATy(qTy,F1)),qVar"s"),
1416                              LN 3,FTy 3)),
1417                      Let(Var("membyte",F8),
1418                          EX(Var("v0",F64),
1419                             Bop(Add,LN 7,
1420                                 Bop(Mul,LN 8,
1421                                     Mop(Cast nTy,Var("v1",FTy 3)))),
1422                             Bop(Mul,LN 8,Mop(Cast nTy,Var("v1",FTy 3))),
1423                             F8),
1424                          Apply
1425                            (Call
1426                               ("write'GPR",ATy(qTy,qTy),
1427                                TP[ITE(bVar"unsigned",
1428                                       Mop(Cast F64,Var("membyte",F8)),
1429                                       Mop(SE F64,Var("membyte",F8))),
1430                                   Var("rt",FTy 5)]),qVar"s"))),qVar"s")))))
1431;
1432val loadHalf_def = Def
1433  ("loadHalf",
1434   TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),bVar"unsigned"],
1435   Close
1436     (qVar"state",
1437      Let(Var("v",F64),
1438          Bop(Add,Mop(SE F64,Var("offset",F16)),
1439              Apply
1440                (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),qVar"state")),
1441          Let(TP[Var("v0",F64),qVar"s"],
1442              Apply
1443                (Call
1444                   ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
1445                    TP[Const("HALFWORD",FTy 3),Const("HALFWORD",FTy 3),LT,
1446                       Var("v",F64),Mop(Some,LF)]),qVar"state"),
1447              ITE(Mop(Not,Dest("exceptionSignalled",bTy,qVar"s")),
1448                  Let(Var("v1",FTy 3),
1449                      Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3),
1450                          CC[REP(Apply
1451                                   (Const("BigEndianCPU",ATy(qTy,F1)),
1452                                    qVar"s"),LN 2,FTy 2),LW(0,1)]),
1453                      Let(Var("memhalf",F16),
1454                          EX(Var("v0",F64),
1455                             Bop(Add,LN 15,
1456                                 Bop(Mul,LN 8,
1457                                     Mop(Cast nTy,Var("v1",FTy 3)))),
1458                             Bop(Mul,LN 8,Mop(Cast nTy,Var("v1",FTy 3))),
1459                             F16),
1460                          Apply
1461                            (Call
1462                               ("write'GPR",ATy(qTy,qTy),
1463                                TP[ITE(bVar"unsigned",
1464                                       Mop(Cast F64,Var("memhalf",F16)),
1465                                       Mop(SE F64,Var("memhalf",F16))),
1466                                   Var("rt",FTy 5)]),qVar"s"))),qVar"s")))))
1467;
1468val loadWord_def = Def
1469  ("loadWord",
1470   TP[bVar"link",Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),
1471      bVar"unsigned"],
1472   Close
1473     (qVar"state",
1474      Let(Var("v",F64),
1475          Bop(Add,Mop(SE F64,Var("offset",F16)),
1476              Apply
1477                (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),qVar"state")),
1478          Let(TP[Var("v0",F64),qVar"s"],
1479              Apply
1480                (Call
1481                   ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
1482                    TP[Const("WORD",FTy 3),Const("WORD",FTy 3),LT,
1483                       Var("v",F64),Mop(Some,bVar"link")]),qVar"state"),
1484              ITE(Mop(Not,Dest("exceptionSignalled",bTy,qVar"s")),
1485                  Let(Var("v1",FTy 3),
1486                      Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3),
1487                          CC[Apply
1488                               (Const("BigEndianCPU",ATy(qTy,F1)),qVar"s"),
1489                             LW(0,2)]),
1490                      Let(Var("memword",F32),
1491                          EX(Var("v0",F64),
1492                             Bop(Add,LN 31,
1493                                 Bop(Mul,LN 8,
1494                                     Mop(Cast nTy,Var("v1",FTy 3)))),
1495                             Bop(Mul,LN 8,Mop(Cast nTy,Var("v1",FTy 3))),
1496                             F32),
1497                          Apply
1498                            (Call
1499                               ("write'GPR",ATy(qTy,qTy),
1500                                TP[ITE(bVar"unsigned",
1501                                       Mop(Cast F64,Var("memword",F32)),
1502                                       Mop(SE F64,Var("memword",F32))),
1503                                   Var("rt",FTy 5)]),qVar"s"))),qVar"s")))))
1504;
1505val loadDoubleword_def = Def
1506  ("loadDoubleword",
1507   TP[bVar"link",Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
1508   Close
1509     (qVar"state",
1510      Let(TP[Var("v",F64),qVar"s"],
1511          Apply
1512            (Call
1513               ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
1514                TP[Const("DOUBLEWORD",FTy 3),Const("DOUBLEWORD",FTy 3),LT,
1515                   Bop(Add,Mop(SE F64,Var("offset",F16)),
1516                       Apply
1517                         (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
1518                          qVar"state")),Mop(Some,bVar"link")]),qVar"state"),
1519          ITE(Mop(Not,Dest("exceptionSignalled",bTy,qVar"s")),
1520              Apply
1521                (Call
1522                   ("write'GPR",ATy(qTy,qTy),
1523                    TP[Var("v",F64),Var("rt",FTy 5)]),qVar"s"),qVar"s"))))
1524;
1525val Fetch_def = Def
1526  ("Fetch",qVar"state",
1527   Let(Var("v",F64),Dest("PC",F64,qVar"state"),
1528       Let(TP[Var("v0",F64),qVar"s"],
1529           Apply
1530             (Call
1531                ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
1532                 TP[Const("WORD",FTy 3),Const("WORD",FTy 3),LT,
1533                    Var("v",F64),LO bTy]),qVar"state"),
1534           ITE(Dest("exceptionSignalled",bTy,qVar"s"),TP[LO F32,qVar"s"],
1535               Let(Var("v1",FTy 3),
1536                   Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3),
1537                       CC[Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"s"),
1538                          LW(0,2)]),
1539                   TP[Mop(Some,
1540                          EX(Var("v0",F64),
1541                             Bop(Add,LN 31,
1542                                 Bop(Mul,LN 8,
1543                                     Mop(Cast nTy,Var("v1",FTy 3)))),
1544                             Bop(Mul,LN 8,Mop(Cast nTy,Var("v1",FTy 3))),
1545                             F32)),qVar"s"])))))
1546;
1547val WriteData_def = Def
1548  ("WriteData",TP[Var("a",F64),Var("MemElem",F64),nVar"l",nVar"h"],
1549   Close
1550     (qVar"state",
1551      Let(Var("a",F64),Bop(BAnd,Var("a",F64),Mop(BNot,LW(7,64))),
1552          ITE(Apply(Const("BigEndianMem",ATy(qTy,bTy)),qVar"state"),
1553              Let(qVar"s",
1554                  ITE(Bop(And,Bop(Le,nVar"l",LN 7),Bop(Le,LN 7,nVar"h")),
1555                      Rupd
1556                        ("MEM",
1557                         TP[qVar"state",
1558                            Fupd
1559                              (Dest("MEM",ATy(F64,F8),qVar"state"),
1560                               Var("a",F64),
1561                               EX(Var("MemElem",F64),LN 63,LN 56,F8))]),
1562                      qVar"state"),
1563                  Let(qVar"s",
1564                      ITE(Bop(And,Bop(Le,nVar"l",LN 6),
1565                              Bop(Le,LN 6,nVar"h")),
1566                          Rupd
1567                            ("MEM",
1568                             TP[qVar"s",
1569                                Fupd
1570                                  (Dest("MEM",ATy(F64,F8),qVar"s"),
1571                                   Bop(Add,Var("a",F64),LW(1,64)),
1572                                   EX(Var("MemElem",F64),LN 55,LN 48,F8))]),
1573                          qVar"s"),
1574                      Let(qVar"s",
1575                          ITE(Bop(And,Bop(Le,nVar"l",LN 5),
1576                                  Bop(Le,LN 5,nVar"h")),
1577                              Rupd
1578                                ("MEM",
1579                                 TP[qVar"s",
1580                                    Fupd
1581                                      (Dest("MEM",ATy(F64,F8),qVar"s"),
1582                                       Bop(Add,Var("a",F64),LW(2,64)),
1583                                       EX(Var("MemElem",F64),LN 47,LN 40,
1584                                          F8))]),qVar"s"),
1585                          Let(qVar"s",
1586                              ITE(Bop(And,Bop(Le,nVar"l",LN 4),
1587                                      Bop(Le,LN 4,nVar"h")),
1588                                  Rupd
1589                                    ("MEM",
1590                                     TP[qVar"s",
1591                                        Fupd
1592                                          (Dest("MEM",ATy(F64,F8),qVar"s"),
1593                                           Bop(Add,Var("a",F64),LW(3,64)),
1594                                           EX(Var("MemElem",F64),LN 39,
1595                                              LN 32,F8))]),qVar"s"),
1596                              Let(qVar"s",
1597                                  ITE(Bop(And,Bop(Le,nVar"l",LN 3),
1598                                          Bop(Le,LN 3,nVar"h")),
1599                                      Rupd
1600                                        ("MEM",
1601                                         TP[qVar"s",
1602                                            Fupd
1603                                              (Dest
1604                                                 ("MEM",ATy(F64,F8),
1605                                                  qVar"s"),
1606                                               Bop(Add,Var("a",F64),
1607                                                   LW(4,64)),
1608                                               EX(Var("MemElem",F64),
1609                                                  LN 31,LN 24,F8))]),
1610                                      qVar"s"),
1611                                  Let(qVar"s",
1612                                      ITE(Bop(And,Bop(Le,nVar"l",LN 2),
1613                                              Bop(Le,LN 2,nVar"h")),
1614                                          Rupd
1615                                            ("MEM",
1616                                             TP[qVar"s",
1617                                                Fupd
1618                                                  (Dest
1619                                                     ("MEM",ATy(F64,F8),
1620                                                      qVar"s"),
1621                                                   Bop(Add,Var("a",F64),
1622                                                       LW(5,64)),
1623                                                   EX(Var("MemElem",F64),
1624                                                      LN 23,LN 16,F8))]),
1625                                          qVar"s"),
1626                                      Let(qVar"s",
1627                                          ITE(Bop(And,
1628                                                  Bop(Le,nVar"l",LN 1),
1629                                                  Bop(Le,LN 1,nVar"h")),
1630                                              Rupd
1631                                                ("MEM",
1632                                                 TP[qVar"s",
1633                                                    Fupd
1634                                                      (Dest
1635                                                         ("MEM",
1636                                                          ATy(F64,F8),
1637                                                          qVar"s"),
1638                                                       Bop(Add,
1639                                                           Var("a",F64),
1640                                                           LW(6,64)),
1641                                                       EX(Var("MemElem",
1642                                                              F64),LN 15,
1643                                                          LN 8,F8))]),
1644                                              qVar"s"),
1645                                          ITE(EQ(nVar"l",LN 0),
1646                                              Rupd
1647                                                ("MEM",
1648                                                 TP[qVar"s",
1649                                                    Fupd
1650                                                      (Dest
1651                                                         ("MEM",
1652                                                          ATy(F64,F8),
1653                                                          qVar"s"),
1654                                                       Bop(Add,
1655                                                           Var("a",F64),
1656                                                           LW(7,64)),
1657                                                       EX(Var("MemElem",
1658                                                              F64),LN 7,
1659                                                          LN 0,F8))]),
1660                                              qVar"s")))))))),
1661              Let(qVar"s",
1662                  ITE(Bop(And,Bop(Le,nVar"l",LN 7),Bop(Le,LN 7,nVar"h")),
1663                      Rupd
1664                        ("MEM",
1665                         TP[qVar"state",
1666                            Fupd
1667                              (Dest("MEM",ATy(F64,F8),qVar"state"),
1668                               Var("a",F64),
1669                               EX(Var("MemElem",F64),LN 7,LN 0,F8))]),
1670                      qVar"state"),
1671                  Let(qVar"s",
1672                      ITE(Bop(And,Bop(Le,nVar"l",LN 6),
1673                              Bop(Le,LN 6,nVar"h")),
1674                          Rupd
1675                            ("MEM",
1676                             TP[qVar"s",
1677                                Fupd
1678                                  (Dest("MEM",ATy(F64,F8),qVar"s"),
1679                                   Bop(Add,Var("a",F64),LW(1,64)),
1680                                   EX(Var("MemElem",F64),LN 15,LN 8,F8))]),
1681                          qVar"s"),
1682                      Let(qVar"s",
1683                          ITE(Bop(And,Bop(Le,nVar"l",LN 5),
1684                                  Bop(Le,LN 5,nVar"h")),
1685                              Rupd
1686                                ("MEM",
1687                                 TP[qVar"s",
1688                                    Fupd
1689                                      (Dest("MEM",ATy(F64,F8),qVar"s"),
1690                                       Bop(Add,Var("a",F64),LW(2,64)),
1691                                       EX(Var("MemElem",F64),LN 23,LN 16,
1692                                          F8))]),qVar"s"),
1693                          Let(qVar"s",
1694                              ITE(Bop(And,Bop(Le,nVar"l",LN 4),
1695                                      Bop(Le,LN 4,nVar"h")),
1696                                  Rupd
1697                                    ("MEM",
1698                                     TP[qVar"s",
1699                                        Fupd
1700                                          (Dest("MEM",ATy(F64,F8),qVar"s"),
1701                                           Bop(Add,Var("a",F64),LW(3,64)),
1702                                           EX(Var("MemElem",F64),LN 31,
1703                                              LN 24,F8))]),qVar"s"),
1704                              Let(qVar"s",
1705                                  ITE(Bop(And,Bop(Le,nVar"l",LN 3),
1706                                          Bop(Le,LN 3,nVar"h")),
1707                                      Rupd
1708                                        ("MEM",
1709                                         TP[qVar"s",
1710                                            Fupd
1711                                              (Dest
1712                                                 ("MEM",ATy(F64,F8),
1713                                                  qVar"s"),
1714                                               Bop(Add,Var("a",F64),
1715                                                   LW(4,64)),
1716                                               EX(Var("MemElem",F64),
1717                                                  LN 39,LN 32,F8))]),
1718                                      qVar"s"),
1719                                  Let(qVar"s",
1720                                      ITE(Bop(And,Bop(Le,nVar"l",LN 2),
1721                                              Bop(Le,LN 2,nVar"h")),
1722                                          Rupd
1723                                            ("MEM",
1724                                             TP[qVar"s",
1725                                                Fupd
1726                                                  (Dest
1727                                                     ("MEM",ATy(F64,F8),
1728                                                      qVar"s"),
1729                                                   Bop(Add,Var("a",F64),
1730                                                       LW(5,64)),
1731                                                   EX(Var("MemElem",F64),
1732                                                      LN 47,LN 40,F8))]),
1733                                          qVar"s"),
1734                                      Let(qVar"s",
1735                                          ITE(Bop(And,
1736                                                  Bop(Le,nVar"l",LN 1),
1737                                                  Bop(Le,LN 1,nVar"h")),
1738                                              Rupd
1739                                                ("MEM",
1740                                                 TP[qVar"s",
1741                                                    Fupd
1742                                                      (Dest
1743                                                         ("MEM",
1744                                                          ATy(F64,F8),
1745                                                          qVar"s"),
1746                                                       Bop(Add,
1747                                                           Var("a",F64),
1748                                                           LW(6,64)),
1749                                                       EX(Var("MemElem",
1750                                                              F64),LN 55,
1751                                                          LN 48,F8))]),
1752                                              qVar"s"),
1753                                          ITE(EQ(nVar"l",LN 0),
1754                                              Rupd
1755                                                ("MEM",
1756                                                 TP[qVar"s",
1757                                                    Fupd
1758                                                      (Dest
1759                                                         ("MEM",
1760                                                          ATy(F64,F8),
1761                                                          qVar"s"),
1762                                                       Bop(Add,
1763                                                           Var("a",F64),
1764                                                           LW(7,64)),
1765                                                       EX(Var("MemElem",
1766                                                              F64),LN 63,
1767                                                          LN 56,F8))]),
1768                                              qVar"s"))))))))))))
1769;
1770val StoreMemory_def = Def
1771  ("StoreMemory",
1772   TP[Var("MemType",FTy 3),Var("AccessLength",FTy 3),bVar"needAlign",
1773      Var("MemElem",F64),Var("vAddr",F64),bVar"cond"],
1774   Close
1775     (qVar"state",
1776      ITE(Bop(And,bVar"needAlign",
1777              Mop(Not,
1778                  Call
1779                    ("Aligned",bTy,
1780                     TP[Var("vAddr",F64),Var("MemType",FTy 3)]))),
1781          TP[LF,
1782             Apply
1783               (Call
1784                  ("SignalException",ATy(qTy,qTy),
1785                   LC("AdES",CTy"ExceptionType")),
1786                Rupd
1787                  ("CP0",
1788                   TP[qVar"state",
1789                      Rupd
1790                        ("BadVAddr",
1791                         TP[Dest("CP0",CTy"CP0",qVar"state"),
1792                            Var("vAddr",F64)])]))],
1793          Let(TP[Var("pAddr",F64),AVar(FTy 3)],
1794              Call
1795                ("AddressTranslation",PTy(F64,FTy 3),
1796                 TP[Var("vAddr",F64),LC("STORE",CTy"LorS")]),
1797              ITE(Dest("exceptionSignalled",bTy,qVar"state"),
1798                  TP[LT,qVar"state"],
1799                  Let(TP[Var("v",F64),qVar"s"],
1800                      Apply
1801                        (Call
1802                           ("AdjustEndian",ATy(qTy,PTy(F64,qTy)),
1803                            TP[Var("MemType",FTy 3),Var("pAddr",F64)]),
1804                         qVar"state"),
1805                      Let(TP[bVar"v0",qVar"s"],
1806                          ITE(Mop(Not,bVar"cond"),TP[LT,qVar"s"],
1807                              CS(Dest("LLbit",OTy bTy,qVar"s"),
1808                                 [(LO bTy,
1809                                   Apply
1810                                     (Call
1811                                        ("raise'exception",
1812                                         ATy(qTy,PTy(bTy,qTy)),
1813                                         Call
1814                                           ("UNPREDICTABLE",
1815                                            CTy"exception",
1816                                            LS
1817                                             "conditional store: LLbit not set")),
1818                                      qVar"s")),
1819                                  (Mop(Some,LF),TP[LF,qVar"s"]),
1820                                  (Mop(Some,LT),
1821                                   ITE(EQ(Dest
1822                                            ("LLAddr",F64,
1823                                             Dest("CP0",CTy"CP0",qVar"s")),
1824                                          Var("v",F64)),TP[LT,qVar"s"],
1825                                       Apply
1826                                         (Call
1827                                            ("raise'exception",
1828                                             ATy(qTy,PTy(bTy,qTy)),
1829                                             Call
1830                                               ("UNPREDICTABLE",
1831                                                CTy"exception",
1832                                                LS
1833                                                 "conditional store: address doesn't match previous LL address")),
1834                                          qVar"s")))])),
1835                          TP[bVar"v0",
1836                             Rupd
1837                               ("LLbit",
1838                                TP[ITE(bVar"v0",
1839                                       Let(nVar"b",
1840                                           Bop(Add,
1841                                               Mop(Cast nTy,
1842                                                   Var("AccessLength",
1843                                                       FTy 3)),LN 1),
1844                                           Let(nVar"l",
1845                                               Bop(Sub,LN 8,
1846                                                   Bop(Add,nVar"b",
1847                                                       Mop(Cast nTy,
1848                                                           EX(Var("vAddr",
1849                                                                  F64),
1850                                                              LN 2,LN 0,
1851                                                              FTy 3)))),
1852                                               Apply
1853                                                 (Call
1854                                                    ("WriteData",
1855                                                     ATy(qTy,qTy),
1856                                                     TP[Var("v",F64),
1857                                                        Var("MemElem",F64),
1858                                                        nVar"l",
1859                                                        Bop(Sub,
1860                                                            Bop(Add,
1861                                                                nVar"l",
1862                                                                nVar"b"),
1863                                                            LN 1)]),
1864                                                  qVar"s"))),qVar"s"),
1865                                   LO bTy])])))))))
1866;
1867val storeWord_def = Def
1868  ("storeWord",
1869   TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),bVar"cond"],
1870   Close
1871     (qVar"state",
1872      Let(Var("v",F64),
1873          Bop(Add,Mop(SE F64,Var("offset",F16)),
1874              Apply
1875                (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),qVar"state")),
1876          Apply
1877            (Call
1878               ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
1879                TP[Const("WORD",FTy 3),Const("WORD",FTy 3),LT,
1880                   Bop(Lsl,
1881                       Apply
1882                         (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
1883                          qVar"state"),
1884                       Bop(Mul,LN 8,
1885                           Mop(Cast nTy,
1886                               Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3),
1887                                   CC[Apply
1888                                        (Const("BigEndianCPU",ATy(qTy,F1)),
1889                                         qVar"state"),LW(0,2)])))),
1890                   Var("v",F64),bVar"cond"]),qVar"state"))))
1891;
1892val storeDoubleword_def = Def
1893  ("storeDoubleword",
1894   TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),bVar"cond"],
1895   Close
1896     (qVar"state",
1897      Apply
1898        (Call
1899           ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
1900            TP[Const("DOUBLEWORD",FTy 3),Const("DOUBLEWORD",FTy 3),LT,
1901               Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
1902               Bop(Add,Mop(SE F64,Var("offset",F16)),
1903                   Apply
1904                     (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
1905                      qVar"state")),bVar"cond"]),qVar"state")))
1906;
1907val rec'FCSR_def = Def
1908  ("rec'FCSR",Var("x",F32),
1909   Rec(CTy"FCSR",
1910       [Bop(Bit,Var("x",F32),LN 19),Bop(Bit,Var("x",F32),LN 17),
1911        Bop(Bit,Var("x",F32),LN 12),Bop(Bit,Var("x",F32),LN 14),
1912        Bop(Bit,Var("x",F32),LN 13),Bop(Bit,Var("x",F32),LN 16),
1913        Bop(Bit,Var("x",F32),LN 15),Bop(Bit,Var("x",F32),LN 7),
1914        Bop(Bit,Var("x",F32),LN 9),Bop(Bit,Var("x",F32),LN 8),
1915        Bop(Bit,Var("x",F32),LN 11),Bop(Bit,Var("x",F32),LN 10),
1916        CC[EX(Var("x",F32),LN 31,LN 25,FTy 7),
1917           EX(Var("x",F32),LN 23,LN 23,F1)],Bop(Bit,Var("x",F32),LN 24),
1918        Bop(Bit,Var("x",F32),LN 2),Bop(Bit,Var("x",F32),LN 4),
1919        Bop(Bit,Var("x",F32),LN 3),Bop(Bit,Var("x",F32),LN 6),
1920        Bop(Bit,Var("x",F32),LN 5),Bop(Bit,Var("x",F32),LN 18),
1921        EX(Var("x",F32),LN 1,LN 0,FTy 2),
1922        EX(Var("x",F32),LN 22,LN 20,FTy 3)]))
1923;
1924val reg'FCSR_def = Def
1925  ("reg'FCSR",Var("x",CTy"FCSR"),
1926   CS(Var("x",CTy"FCSR"),
1927      [(Rec(CTy"FCSR",
1928            [bVar"ABS2008",bVar"CauseE",bVar"CauseI",bVar"CauseO",
1929             bVar"CauseU",bVar"CauseV",bVar"CauseZ",bVar"EnableI",
1930             bVar"EnableO",bVar"EnableU",bVar"EnableV",bVar"EnableZ",
1931             Var("FCC",F8),bVar"FS",bVar"FlagI",bVar"FlagO",bVar"FlagU",
1932             bVar"FlagV",bVar"FlagZ",bVar"NAN2008",Var("RM",FTy 2),
1933             Var("fcsr'rst",FTy 3)]),
1934        CC[EX(Var("FCC",F8),LN 7,LN 1,FTy 7),Mop(Cast F1,bVar"FS"),
1935           EX(Var("FCC",F8),LN 0,LN 0,F1),Var("fcsr'rst",FTy 3),
1936           Mop(Cast F1,bVar"ABS2008"),Mop(Cast F1,bVar"NAN2008"),
1937           Mop(Cast F1,bVar"CauseE"),Mop(Cast F1,bVar"CauseV"),
1938           Mop(Cast F1,bVar"CauseZ"),Mop(Cast F1,bVar"CauseO"),
1939           Mop(Cast F1,bVar"CauseU"),Mop(Cast F1,bVar"CauseI"),
1940           Mop(Cast F1,bVar"EnableV"),Mop(Cast F1,bVar"EnableZ"),
1941           Mop(Cast F1,bVar"EnableO"),Mop(Cast F1,bVar"EnableU"),
1942           Mop(Cast F1,bVar"EnableI"),Mop(Cast F1,bVar"FlagV"),
1943           Mop(Cast F1,bVar"FlagZ"),Mop(Cast F1,bVar"FlagO"),
1944           Mop(Cast F1,bVar"FlagU"),Mop(Cast F1,bVar"FlagI"),
1945           Var("RM",FTy 2)])]))
1946;
1947val write'rec'FCSR_def = Def
1948  ("write'rec'FCSR",TP[AVar F32,Var("x",CTy"FCSR")],
1949   Call("reg'FCSR",F32,Var("x",CTy"FCSR")))
1950;
1951val write'reg'FCSR_def = Def
1952  ("write'reg'FCSR",TP[AVar(CTy"FCSR"),Var("x",F32)],
1953   Call("rec'FCSR",CTy"FCSR",Var("x",F32)))
1954;
1955val rec'FIR_def = Def
1956  ("rec'FIR",Var("x",F32),
1957   Rec(CTy"FIR",
1958       [Bop(Bit,Var("x",F32),LN 19),Bop(Bit,Var("x",F32),LN 17),
1959        Bop(Bit,Var("x",F32),LN 22),Bop(Bit,Var("x",F32),LN 21),
1960        Bop(Bit,Var("x",F32),LN 18),EX(Var("x",F32),LN 15,LN 8,F8),
1961        EX(Var("x",F32),LN 7,LN 0,F8),Bop(Bit,Var("x",F32),LN 16),
1962        Bop(Bit,Var("x",F32),LN 20),EX(Var("x",F32),LN 31,LN 23,FTy 9)]))
1963;
1964val reg'FIR_def = Def
1965  ("reg'FIR",Var("x",CTy"FIR"),
1966   CS(Var("x",CTy"FIR"),
1967      [(Rec(CTy"FIR",
1968            [bVar"ASE",bVar"D",bVar"F64",bVar"L",bVar"PS",Var("PrID",F8),
1969             Var("Rev",F8),bVar"S",bVar"W",Var("fir'rst",FTy 9)]),
1970        CC[Var("fir'rst",FTy 9),Mop(Cast F1,bVar"F64"),
1971           Mop(Cast F1,bVar"L"),Mop(Cast F1,bVar"W"),
1972           Mop(Cast F1,bVar"ASE"),Mop(Cast F1,bVar"PS"),
1973           Mop(Cast F1,bVar"D"),Mop(Cast F1,bVar"S"),Var("PrID",F8),
1974           Var("Rev",F8)])]))
1975;
1976val write'rec'FIR_def = Def
1977  ("write'rec'FIR",TP[AVar F32,Var("x",CTy"FIR")],
1978   Call("reg'FIR",F32,Var("x",CTy"FIR")))
1979;
1980val write'reg'FIR_def = Def
1981  ("write'reg'FIR",TP[AVar(CTy"FIR"),Var("x",F32)],
1982   Call("rec'FIR",CTy"FIR",Var("x",F32)))
1983;
1984val IntToWordMIPS_def = Def
1985  ("IntToWordMIPS",iVar"v",
1986   ITB([(Bop(Gt,iVar"v",LI 2147483647),LW(2147483647,32)),
1987        (Bop(Lt,iVar"v",Mop(Neg,LI 2147483648)),LW(2147483647,32))],
1988       Mop(Cast F32,iVar"v")))
1989;
1990val IntToDWordMIPS_def = Def
1991  ("IntToDWordMIPS",iVar"v",
1992   ITB([(Bop(Gt,iVar"v",LI 9223372036854775807),LW(9223372036854775807,64)),
1993        (Bop(Lt,iVar"v",Mop(Neg,LI 9223372036854775808)),
1994         LW(9223372036854775807,64))],Mop(Cast F64,iVar"v")))
1995;
1996val PostOpF32_def = Def
1997  ("PostOpF32",Var("v",F32),
1998   Close
1999     (qVar"state",
2000      ITE(Bop(And,Dest("FS",bTy,Dest("fcsr",CTy"FCSR",qVar"state")),
2001              Mop(FPIsSubnormal 32,Var("v",F32))),LW(0,32),Var("v",F32))))
2002;
2003val PostOpF64_def = Def
2004  ("PostOpF64",Var("v",F64),
2005   Close
2006     (qVar"state",
2007      ITE(Bop(And,Dest("FS",bTy,Dest("fcsr",CTy"FCSR",qVar"state")),
2008              Mop(FPIsSubnormal 64,Var("v",F64))),LW(0,64),Var("v",F64))))
2009;
2010val FP32_Abs1985_def = Def
2011  ("FP32_Abs1985",Var("a",F32),
2012   ITE(Mop(FPIsNan 32,Var("a",F32)),Var("a",F32),
2013       Mop(FPAbs 32,Var("a",F32))))
2014;
2015val FP32_Neg1985_def = Def
2016  ("FP32_Neg1985",Var("a",F32),
2017   ITE(Mop(FPIsNan 32,Var("a",F32)),Var("a",F32),
2018       Mop(FPNeg 32,Var("a",F32))))
2019;
2020val FP64_Abs1985_def = Def
2021  ("FP64_Abs1985",Var("a",F64),
2022   ITE(Mop(FPIsNan 64,Var("a",F64)),Var("a",F64),
2023       Mop(FPAbs 64,Var("a",F64))))
2024;
2025val FP64_Neg1985_def = Def
2026  ("FP64_Neg1985",Var("a",F64),
2027   ITE(Mop(FPIsNan 64,Var("a",F64)),Var("a",F64),
2028       Mop(FPNeg 64,Var("a",F64))))
2029;
2030val FP64_Unordered_def = Def
2031  ("FP64_Unordered",TP[Var("a",F64),Var("b",F64)],
2032   Bop(Or,Mop(FPIsNan 64,Var("a",F64)),Mop(FPIsNan 64,Var("b",F64))))
2033;
2034val FP32_Unordered_def = Def
2035  ("FP32_Unordered",TP[Var("a",F32),Var("b",F32)],
2036   Bop(Or,Mop(FPIsNan 32,Var("a",F32)),Mop(FPIsNan 32,Var("b",F32))))
2037;
2038val Rounding_Mode_def = Def
2039  ("Rounding_Mode",qVar"state",
2040   CS(Dest("RM",FTy 2,Dest("fcsr",CTy"FCSR",qVar"state")),
2041      [(LW(0,2),binary_ieeeSyntax.roundTiesToEven_tm),
2042       (LW(1,2),binary_ieeeSyntax.roundTowardZero_tm),
2043       (LW(2,2),binary_ieeeSyntax.roundTowardPositive_tm),
2044       (LW(3,2),binary_ieeeSyntax.roundTowardNegative_tm)]))
2045;
2046val dfn'ABS_D_def = Def
2047  ("dfn'ABS_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
2048   Close
2049     (qVar"state",
2050      ITB([(Mop(Not,
2051                Dest
2052                  ("CU1",bTy,
2053                   Dest
2054                     ("Status",CTy"StatusRegister",
2055                      Dest("CP0",CTy"CP0",qVar"state")))),
2056            Apply
2057              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
2058               qVar"state")),
2059           (Dest("ABS2008",bTy,Dest("fcsr",CTy"FCSR",qVar"state")),
2060            Rupd
2061              ("FGR",
2062               TP[qVar"state",
2063                  Fupd
2064                    (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2065                     Var("fd",FTy 5),
2066                     Mop(FPAbs 64,
2067                         Apply
2068                           (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2069                            Var("fs",FTy 5))))]))],
2070          Rupd
2071            ("FGR",
2072             TP[qVar"state",
2073                Fupd
2074                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
2075                   Apply
2076                     (Call
2077                        ("PostOpF64",ATy(qTy,F64),
2078                         Call
2079                           ("FP64_Abs1985",F64,
2080                            Apply
2081                              (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2082                               Var("fs",FTy 5)))),qVar"state"))]))))
2083;
2084val dfn'ABS_S_def = Def
2085  ("dfn'ABS_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
2086   Close
2087     (qVar"state",
2088      ITB([(Mop(Not,
2089                Dest
2090                  ("CU1",bTy,
2091                   Dest
2092                     ("Status",CTy"StatusRegister",
2093                      Dest("CP0",CTy"CP0",qVar"state")))),
2094            Apply
2095              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
2096               qVar"state")),
2097           (Dest("ABS2008",bTy,Dest("fcsr",CTy"FCSR",qVar"state")),
2098            Rupd
2099              ("FGR",
2100               TP[qVar"state",
2101                  Fupd
2102                    (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2103                     Var("fd",FTy 5),
2104                     Mop(SE F64,
2105                         Mop(FPAbs 32,
2106                             EX(Apply
2107                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2108                                   Var("fs",FTy 5)),LN 31,LN 0,F32))))]))],
2109          Rupd
2110            ("FGR",
2111             TP[qVar"state",
2112                Fupd
2113                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
2114                   Mop(SE F64,
2115                       Apply
2116                         (Call
2117                            ("PostOpF32",ATy(qTy,F32),
2118                             Call
2119                               ("FP32_Abs1985",F32,
2120                                EX(Apply
2121                                     (Dest
2122                                        ("FGR",ATy(FTy 5,F64),qVar"state"),
2123                                      Var("fs",FTy 5)),LN 31,LN 0,F32))),
2124                          qVar"state")))]))))
2125;
2126val dfn'ADD_D_def = Def
2127  ("dfn'ADD_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
2128   Close
2129     (qVar"state",
2130      ITE(Mop(Not,
2131              Dest
2132                ("CU1",bTy,
2133                 Dest
2134                   ("Status",CTy"StatusRegister",
2135                    Dest("CP0",CTy"CP0",qVar"state")))),
2136          Apply
2137            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2138          Rupd
2139            ("FGR",
2140             TP[qVar"state",
2141                Fupd
2142                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
2143                   Apply
2144                     (Call
2145                        ("PostOpF64",ATy(qTy,F64),
2146                         Mop(FPAdd 64,
2147                             TP[Apply
2148                                  (Const("Rounding_Mode",ATy(qTy,rTy)),
2149                                   qVar"state"),
2150                                Apply
2151                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2152                                   Var("fs",FTy 5)),
2153                                Apply
2154                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2155                                   Var("ft",FTy 5))])),qVar"state"))]))))
2156;
2157val dfn'ADD_S_def = Def
2158  ("dfn'ADD_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
2159   Close
2160     (qVar"state",
2161      ITE(Mop(Not,
2162              Dest
2163                ("CU1",bTy,
2164                 Dest
2165                   ("Status",CTy"StatusRegister",
2166                    Dest("CP0",CTy"CP0",qVar"state")))),
2167          Apply
2168            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2169          Rupd
2170            ("FGR",
2171             TP[qVar"state",
2172                Fupd
2173                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
2174                   Mop(SE F64,
2175                       Apply
2176                         (Call
2177                            ("PostOpF32",ATy(qTy,F32),
2178                             Mop(FPAdd 32,
2179                                 TP[Apply
2180                                      (Const("Rounding_Mode",ATy(qTy,rTy)),
2181                                       qVar"state"),
2182                                    EX(Apply
2183                                         (Dest
2184                                            ("FGR",ATy(FTy 5,F64),
2185                                             qVar"state"),Var("fs",FTy 5)),
2186                                       LN 31,LN 0,F32),
2187                                    EX(Apply
2188                                         (Dest
2189                                            ("FGR",ATy(FTy 5,F64),
2190                                             qVar"state"),Var("ft",FTy 5)),
2191                                       LN 31,LN 0,F32)])),qVar"state")))]))))
2192;
2193val dfn'BC1F_def = Def
2194  ("dfn'BC1F",TP[Var("i",F16),Var("cc",FTy 3)],
2195   Close
2196     (qVar"state",
2197      ITE(Mop(Not,
2198              Dest
2199                ("CU1",bTy,
2200                 Dest
2201                   ("Status",CTy"StatusRegister",
2202                    Dest("CP0",CTy"CP0",qVar"state")))),
2203          Apply
2204            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2205          Apply
2206            (Call
2207               ("ConditionalBranch",ATy(qTy,qTy),
2208                TP[Mop(Not,
2209                       Bop(Bit,
2210                           Dest
2211                             ("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")),
2212                           Mop(Cast nTy,Var("cc",FTy 3)))),Var("i",F16)]),
2213             qVar"state"))))
2214;
2215val dfn'BC1FL_def = Def
2216  ("dfn'BC1FL",TP[Var("i",F16),Var("cc",FTy 3)],
2217   Close
2218     (qVar"state",
2219      ITE(Mop(Not,
2220              Dest
2221                ("CU1",bTy,
2222                 Dest
2223                   ("Status",CTy"StatusRegister",
2224                    Dest("CP0",CTy"CP0",qVar"state")))),
2225          Apply
2226            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2227          Apply
2228            (Call
2229               ("ConditionalBranchLikely",ATy(qTy,qTy),
2230                TP[Mop(Not,
2231                       Bop(Bit,
2232                           Dest
2233                             ("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")),
2234                           Mop(Cast nTy,Var("cc",FTy 3)))),Var("i",F16)]),
2235             qVar"state"))))
2236;
2237val dfn'BC1T_def = Def
2238  ("dfn'BC1T",TP[Var("i",F16),Var("cc",FTy 3)],
2239   Close
2240     (qVar"state",
2241      ITE(Mop(Not,
2242              Dest
2243                ("CU1",bTy,
2244                 Dest
2245                   ("Status",CTy"StatusRegister",
2246                    Dest("CP0",CTy"CP0",qVar"state")))),
2247          Apply
2248            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2249          Apply
2250            (Call
2251               ("ConditionalBranch",ATy(qTy,qTy),
2252                TP[Bop(Bit,
2253                       Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")),
2254                       Mop(Cast nTy,Var("cc",FTy 3))),Var("i",F16)]),
2255             qVar"state"))))
2256;
2257val dfn'BC1TL_def = Def
2258  ("dfn'BC1TL",TP[Var("i",F16),Var("cc",FTy 3)],
2259   Close
2260     (qVar"state",
2261      ITE(Mop(Not,
2262              Dest
2263                ("CU1",bTy,
2264                 Dest
2265                   ("Status",CTy"StatusRegister",
2266                    Dest("CP0",CTy"CP0",qVar"state")))),
2267          Apply
2268            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2269          Apply
2270            (Call
2271               ("ConditionalBranchLikely",ATy(qTy,qTy),
2272                TP[Bop(Bit,
2273                       Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")),
2274                       Mop(Cast nTy,Var("cc",FTy 3))),Var("i",F16)]),
2275             qVar"state"))))
2276;
2277val dfn'C_cond_D_def = Def
2278  ("dfn'C_cond_D",
2279   TP[Var("fs",FTy 5),Var("ft",FTy 5),Var("cnd",FTy 3),Var("cc",FTy 3)],
2280   Close
2281     (qVar"state",
2282      ITE(Mop(Not,
2283              Dest
2284                ("CU1",bTy,
2285                 Dest
2286                   ("Status",CTy"StatusRegister",
2287                    Dest("CP0",CTy"CP0",qVar"state")))),
2288          Apply
2289            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2290          Let(nVar"i",Mop(Cast nTy,Var("cc",FTy 3)),
2291              Let(TP[Var("v",CTy"FCSR"),qVar"s"],
2292                  Let(TP[Var("v",PTy(CTy"FCSR",F8)),qVar"s"],
2293                      Let(TP[bVar"v0",qVar"s0"],
2294                          CS(Var("cnd",FTy 3),
2295                             [(LW(0,3),TP[LF,qVar"state"]),
2296                              (LW(1,3),
2297                               TP[Call
2298                                    ("FP64_Unordered",bTy,
2299                                     TP[Apply
2300                                          (Dest
2301                                             ("FGR",ATy(FTy 5,F64),
2302                                              qVar"state"),Var("fs",FTy 5)),
2303                                        Apply
2304                                          (Dest
2305                                             ("FGR",ATy(FTy 5,F64),
2306                                              qVar"state"),Var("ft",FTy 5))]),
2307                                  qVar"state"]),
2308                              (LW(2,3),
2309                               TP[Mop(FPEq 64,
2310                                      TP[Apply
2311                                           (Dest
2312                                              ("FGR",ATy(FTy 5,F64),
2313                                               qVar"state"),
2314                                            Var("fs",FTy 5)),
2315                                         Apply
2316                                           (Dest
2317                                              ("FGR",ATy(FTy 5,F64),
2318                                               qVar"state"),
2319                                            Var("ft",FTy 5))]),qVar"state"]),
2320                              (LW(3,3),
2321                               TP[Bop(Or,
2322                                      Mop(FPEq 64,
2323                                          TP[Apply
2324                                               (Dest
2325                                                  ("FGR",ATy(FTy 5,F64),
2326                                                   qVar"state"),
2327                                                Var("fs",FTy 5)),
2328                                             Apply
2329                                               (Dest
2330                                                  ("FGR",ATy(FTy 5,F64),
2331                                                   qVar"state"),
2332                                                Var("ft",FTy 5))]),
2333                                      Call
2334                                        ("FP64_Unordered",bTy,
2335                                         TP[Apply
2336                                              (Dest
2337                                                 ("FGR",ATy(FTy 5,F64),
2338                                                  qVar"state"),
2339                                               Var("fs",FTy 5)),
2340                                            Apply
2341                                              (Dest
2342                                                 ("FGR",ATy(FTy 5,F64),
2343                                                  qVar"state"),
2344                                               Var("ft",FTy 5))])),
2345                                  qVar"state"]),
2346                              (LW(4,3),
2347                               TP[Mop(FPLt 64,
2348                                      TP[Apply
2349                                           (Dest
2350                                              ("FGR",ATy(FTy 5,F64),
2351                                               qVar"state"),
2352                                            Var("fs",FTy 5)),
2353                                         Apply
2354                                           (Dest
2355                                              ("FGR",ATy(FTy 5,F64),
2356                                               qVar"state"),
2357                                            Var("ft",FTy 5))]),qVar"state"]),
2358                              (LW(5,3),
2359                               TP[Mop(Not,
2360                                      Mop(FPGe 64,
2361                                          TP[Apply
2362                                               (Dest
2363                                                  ("FGR",ATy(FTy 5,F64),
2364                                                   qVar"state"),
2365                                                Var("fs",FTy 5)),
2366                                             Apply
2367                                               (Dest
2368                                                  ("FGR",ATy(FTy 5,F64),
2369                                                   qVar"state"),
2370                                                Var("ft",FTy 5))])),
2371                                  qVar"state"]),
2372                              (LW(6,3),
2373                               TP[Mop(FPLe 64,
2374                                      TP[Apply
2375                                           (Dest
2376                                              ("FGR",ATy(FTy 5,F64),
2377                                               qVar"state"),
2378                                            Var("fs",FTy 5)),
2379                                         Apply
2380                                           (Dest
2381                                              ("FGR",ATy(FTy 5,F64),
2382                                               qVar"state"),
2383                                            Var("ft",FTy 5))]),qVar"state"]),
2384                              (LW(7,3),
2385                               TP[Mop(Not,
2386                                      Mop(FPGt 64,
2387                                          TP[Apply
2388                                               (Dest
2389                                                  ("FGR",ATy(FTy 5,F64),
2390                                                   qVar"state"),
2391                                                Var("fs",FTy 5)),
2392                                             Apply
2393                                               (Dest
2394                                                  ("FGR",ATy(FTy 5,F64),
2395                                                   qVar"state"),
2396                                                Var("ft",FTy 5))])),
2397                                  qVar"state"])]),
2398                          TP[TP[Dest("fcsr",CTy"FCSR",qVar"state"),
2399                                BFI(nVar"i",nVar"i",Mop(Cast F1,bVar"v0"),
2400                                    Dest
2401                                      ("FCC",F8,
2402                                       Dest("fcsr",CTy"FCSR",qVar"state")))],
2403                             qVar"s0"]),
2404                      TP[Rupd("FCC",Var("v",PTy(CTy"FCSR",F8))),qVar"s"]),
2405                  Rupd("fcsr",TP[qVar"s",Var("v",CTy"FCSR")]))))))
2406;
2407val dfn'C_cond_S_def = Def
2408  ("dfn'C_cond_S",
2409   TP[Var("fs",FTy 5),Var("ft",FTy 5),Var("cnd",FTy 3),Var("cc",FTy 3)],
2410   Close
2411     (qVar"state",
2412      ITE(Mop(Not,
2413              Dest
2414                ("CU1",bTy,
2415                 Dest
2416                   ("Status",CTy"StatusRegister",
2417                    Dest("CP0",CTy"CP0",qVar"state")))),
2418          Apply
2419            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2420          Let(nVar"i",Mop(Cast nTy,Var("cc",FTy 3)),
2421              Let(TP[Var("v",CTy"FCSR"),qVar"s"],
2422                  Let(TP[Var("v",PTy(CTy"FCSR",F8)),qVar"s"],
2423                      Let(TP[bVar"v0",qVar"s0"],
2424                          CS(Var("cnd",FTy 3),
2425                             [(LW(0,3),TP[LF,qVar"state"]),
2426                              (LW(1,3),
2427                               TP[Call
2428                                    ("FP32_Unordered",bTy,
2429                                     TP[EX(Apply
2430                                             (Dest
2431                                                ("FGR",ATy(FTy 5,F64),
2432                                                 qVar"state"),
2433                                              Var("fs",FTy 5)),LN 31,LN 0,
2434                                           F32),
2435                                        EX(Apply
2436                                             (Dest
2437                                                ("FGR",ATy(FTy 5,F64),
2438                                                 qVar"state"),
2439                                              Var("ft",FTy 5)),LN 31,LN 0,
2440                                           F32)]),qVar"state"]),
2441                              (LW(2,3),
2442                               TP[Mop(FPEq 32,
2443                                      TP[EX(Apply
2444                                              (Dest
2445                                                 ("FGR",ATy(FTy 5,F64),
2446                                                  qVar"state"),
2447                                               Var("fs",FTy 5)),LN 31,
2448                                            LN 0,F32),
2449                                         EX(Apply
2450                                              (Dest
2451                                                 ("FGR",ATy(FTy 5,F64),
2452                                                  qVar"state"),
2453                                               Var("ft",FTy 5)),LN 31,
2454                                            LN 0,F32)]),qVar"state"]),
2455                              (LW(3,3),
2456                               TP[Bop(Or,
2457                                      Mop(FPEq 32,
2458                                          TP[EX(Apply
2459                                                  (Dest
2460                                                     ("FGR",
2461                                                      ATy(FTy 5,F64),
2462                                                      qVar"state"),
2463                                                   Var("fs",FTy 5)),LN 31,
2464                                                LN 0,F32),
2465                                             EX(Apply
2466                                                  (Dest
2467                                                     ("FGR",
2468                                                      ATy(FTy 5,F64),
2469                                                      qVar"state"),
2470                                                   Var("ft",FTy 5)),LN 31,
2471                                                LN 0,F32)]),
2472                                      Call
2473                                        ("FP32_Unordered",bTy,
2474                                         TP[EX(Apply
2475                                                 (Dest
2476                                                    ("FGR",ATy(FTy 5,F64),
2477                                                     qVar"state"),
2478                                                  Var("fs",FTy 5)),LN 31,
2479                                               LN 0,F32),
2480                                            EX(Apply
2481                                                 (Dest
2482                                                    ("FGR",ATy(FTy 5,F64),
2483                                                     qVar"state"),
2484                                                  Var("ft",FTy 5)),LN 31,
2485                                               LN 0,F32)])),qVar"state"]),
2486                              (LW(4,3),
2487                               TP[Mop(FPLt 32,
2488                                      TP[EX(Apply
2489                                              (Dest
2490                                                 ("FGR",ATy(FTy 5,F64),
2491                                                  qVar"state"),
2492                                               Var("fs",FTy 5)),LN 31,
2493                                            LN 0,F32),
2494                                         EX(Apply
2495                                              (Dest
2496                                                 ("FGR",ATy(FTy 5,F64),
2497                                                  qVar"state"),
2498                                               Var("ft",FTy 5)),LN 31,
2499                                            LN 0,F32)]),qVar"state"]),
2500                              (LW(5,3),
2501                               TP[Mop(Not,
2502                                      Mop(FPGe 32,
2503                                          TP[EX(Apply
2504                                                  (Dest
2505                                                     ("FGR",
2506                                                      ATy(FTy 5,F64),
2507                                                      qVar"state"),
2508                                                   Var("fs",FTy 5)),LN 31,
2509                                                LN 0,F32),
2510                                             EX(Apply
2511                                                  (Dest
2512                                                     ("FGR",
2513                                                      ATy(FTy 5,F64),
2514                                                      qVar"state"),
2515                                                   Var("ft",FTy 5)),LN 31,
2516                                                LN 0,F32)])),qVar"state"]),
2517                              (LW(6,3),
2518                               TP[Mop(FPLe 32,
2519                                      TP[EX(Apply
2520                                              (Dest
2521                                                 ("FGR",ATy(FTy 5,F64),
2522                                                  qVar"state"),
2523                                               Var("fs",FTy 5)),LN 31,
2524                                            LN 0,F32),
2525                                         EX(Apply
2526                                              (Dest
2527                                                 ("FGR",ATy(FTy 5,F64),
2528                                                  qVar"state"),
2529                                               Var("ft",FTy 5)),LN 31,
2530                                            LN 0,F32)]),qVar"state"]),
2531                              (LW(7,3),
2532                               TP[Mop(Not,
2533                                      Mop(FPGt 32,
2534                                          TP[EX(Apply
2535                                                  (Dest
2536                                                     ("FGR",
2537                                                      ATy(FTy 5,F64),
2538                                                      qVar"state"),
2539                                                   Var("fs",FTy 5)),LN 31,
2540                                                LN 0,F32),
2541                                             EX(Apply
2542                                                  (Dest
2543                                                     ("FGR",
2544                                                      ATy(FTy 5,F64),
2545                                                      qVar"state"),
2546                                                   Var("ft",FTy 5)),LN 31,
2547                                                LN 0,F32)])),qVar"state"])]),
2548                          TP[TP[Dest("fcsr",CTy"FCSR",qVar"state"),
2549                                BFI(nVar"i",nVar"i",Mop(Cast F1,bVar"v0"),
2550                                    Dest
2551                                      ("FCC",F8,
2552                                       Dest("fcsr",CTy"FCSR",qVar"state")))],
2553                             qVar"s0"]),
2554                      TP[Rupd("FCC",Var("v",PTy(CTy"FCSR",F8))),qVar"s"]),
2555                  Rupd("fcsr",TP[qVar"s",Var("v",CTy"FCSR")]))))))
2556;
2557val dfn'CEIL_L_D_def = Def
2558  ("dfn'CEIL_L_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
2559   Close
2560     (qVar"state",
2561      ITE(Mop(Not,
2562              Dest
2563                ("CU1",bTy,
2564                 Dest
2565                   ("Status",CTy"StatusRegister",
2566                    Dest("CP0",CTy"CP0",qVar"state")))),
2567          Apply
2568            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2569          Rupd
2570            ("FGR",
2571             TP[qVar"state",
2572                Fupd
2573                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
2574                   CS(Mop(FPToInt 64,
2575                          TP[binary_ieeeSyntax.roundTowardPositive_tm,
2576                             Apply
2577                               (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2578                                Var("fs",FTy 5))]),
2579                      [(Mop(Some,iVar"x"),
2580                        Call("IntToDWordMIPS",F64,iVar"x")),
2581                       (LO iTy,LW(9223372036854775807,64))]))]))))
2582;
2583val dfn'CEIL_L_S_def = Def
2584  ("dfn'CEIL_L_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
2585   Close
2586     (qVar"state",
2587      ITE(Mop(Not,
2588              Dest
2589                ("CU1",bTy,
2590                 Dest
2591                   ("Status",CTy"StatusRegister",
2592                    Dest("CP0",CTy"CP0",qVar"state")))),
2593          Apply
2594            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2595          Rupd
2596            ("FGR",
2597             TP[qVar"state",
2598                Fupd
2599                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
2600                   CS(Mop(FPToInt 32,
2601                          TP[binary_ieeeSyntax.roundTowardPositive_tm,
2602                             EX(Apply
2603                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2604                                   Var("fs",FTy 5)),LN 31,LN 0,F32)]),
2605                      [(Mop(Some,iVar"x"),
2606                        Call("IntToDWordMIPS",F64,iVar"x")),
2607                       (LO iTy,LW(9223372036854775807,64))]))]))))
2608;
2609val dfn'CEIL_W_D_def = Def
2610  ("dfn'CEIL_W_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
2611   Close
2612     (qVar"state",
2613      ITE(Mop(Not,
2614              Dest
2615                ("CU1",bTy,
2616                 Dest
2617                   ("Status",CTy"StatusRegister",
2618                    Dest("CP0",CTy"CP0",qVar"state")))),
2619          Apply
2620            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2621          Rupd
2622            ("FGR",
2623             TP[qVar"state",
2624                Fupd
2625                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
2626                   CS(Mop(FPToInt 64,
2627                          TP[binary_ieeeSyntax.roundTowardPositive_tm,
2628                             Apply
2629                               (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2630                                Var("fs",FTy 5))]),
2631                      [(Mop(Some,iVar"x"),
2632                        Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))),
2633                       (LO iTy,LW(2147483647,64))]))]))))
2634;
2635val dfn'CEIL_W_S_def = Def
2636  ("dfn'CEIL_W_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
2637   Close
2638     (qVar"state",
2639      ITE(Mop(Not,
2640              Dest
2641                ("CU1",bTy,
2642                 Dest
2643                   ("Status",CTy"StatusRegister",
2644                    Dest("CP0",CTy"CP0",qVar"state")))),
2645          Apply
2646            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2647          Rupd
2648            ("FGR",
2649             TP[qVar"state",
2650                Fupd
2651                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
2652                   CS(Mop(FPToInt 32,
2653                          TP[binary_ieeeSyntax.roundTowardPositive_tm,
2654                             EX(Apply
2655                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2656                                   Var("fs",FTy 5)),LN 31,LN 0,F32)]),
2657                      [(Mop(Some,iVar"x"),
2658                        Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))),
2659                       (LO iTy,LW(2147483647,64))]))]))))
2660;
2661val dfn'CVT_D_L_def = Def
2662  ("dfn'CVT_D_L",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
2663   Close
2664     (qVar"state",
2665      ITE(Mop(Not,
2666              Dest
2667                ("CU1",bTy,
2668                 Dest
2669                   ("Status",CTy"StatusRegister",
2670                    Dest("CP0",CTy"CP0",qVar"state")))),
2671          Apply
2672            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2673          Rupd
2674            ("FGR",
2675             TP[qVar"state",
2676                Fupd
2677                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
2678                   Mop(FPFromInt 64,
2679                       TP[Apply
2680                            (Const("Rounding_Mode",ATy(qTy,rTy)),
2681                             qVar"state"),
2682                          Mop(Cast iTy,
2683                              Apply
2684                                (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2685                                 Var("fs",FTy 5)))]))]))))
2686;
2687val dfn'CVT_D_S_def = Def
2688  ("dfn'CVT_D_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
2689   Close
2690     (qVar"state",
2691      ITE(Mop(Not,
2692              Dest
2693                ("CU1",bTy,
2694                 Dest
2695                   ("Status",CTy"StatusRegister",
2696                    Dest("CP0",CTy"CP0",qVar"state")))),
2697          Apply
2698            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2699          Rupd
2700            ("FGR",
2701             TP[qVar"state",
2702                Fupd
2703                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
2704                   Mop(FP32To64,
2705                       EX(Apply
2706                            (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2707                             Var("fs",FTy 5)),LN 31,LN 0,F32)))]))))
2708;
2709val dfn'CVT_D_W_def = Def
2710  ("dfn'CVT_D_W",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
2711   Close
2712     (qVar"state",
2713      ITE(Mop(Not,
2714              Dest
2715                ("CU1",bTy,
2716                 Dest
2717                   ("Status",CTy"StatusRegister",
2718                    Dest("CP0",CTy"CP0",qVar"state")))),
2719          Apply
2720            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2721          Let(qVar"s",
2722              ITE(Call
2723                    ("NotWordValue",bTy,
2724                     Apply
2725                       (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2726                        Var("fs",FTy 5))),
2727                  Mop(Snd,
2728                      Apply
2729                        (Call
2730                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
2731                            Call
2732                              ("UNPREDICTABLE",CTy"exception",
2733                               LS"CVT.D.W: NotWordValue")),qVar"state")),
2734                  qVar"state"),
2735              Rupd
2736                ("FGR",
2737                 TP[qVar"s",
2738                    Fupd
2739                      (Dest("FGR",ATy(FTy 5,F64),qVar"s"),Var("fd",FTy 5),
2740                       Mop(FPFromInt 64,
2741                           TP[Apply
2742                                (Const("Rounding_Mode",ATy(qTy,rTy)),
2743                                 qVar"s"),
2744                              Mop(Cast iTy,
2745                                  EX(Apply
2746                                       (Dest("FGR",ATy(FTy 5,F64),qVar"s"),
2747                                        Var("fs",FTy 5)),LN 31,LN 0,F32))]))])))))
2748;
2749val dfn'CVT_L_D_def = Def
2750  ("dfn'CVT_L_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
2751   Close
2752     (qVar"state",
2753      ITE(Mop(Not,
2754              Dest
2755                ("CU1",bTy,
2756                 Dest
2757                   ("Status",CTy"StatusRegister",
2758                    Dest("CP0",CTy"CP0",qVar"state")))),
2759          Apply
2760            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2761          Rupd
2762            ("FGR",
2763             TP[qVar"state",
2764                Fupd
2765                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
2766                   CS(Mop(FPToInt 64,
2767                          TP[Apply
2768                               (Const("Rounding_Mode",ATy(qTy,rTy)),
2769                                qVar"state"),
2770                             Apply
2771                               (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2772                                Var("fs",FTy 5))]),
2773                      [(Mop(Some,iVar"x"),
2774                        Call("IntToDWordMIPS",F64,iVar"x")),
2775                       (LO iTy,LW(9223372036854775807,64))]))]))))
2776;
2777val dfn'CVT_L_S_def = Def
2778  ("dfn'CVT_L_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
2779   Close
2780     (qVar"state",
2781      ITE(Mop(Not,
2782              Dest
2783                ("CU1",bTy,
2784                 Dest
2785                   ("Status",CTy"StatusRegister",
2786                    Dest("CP0",CTy"CP0",qVar"state")))),
2787          Apply
2788            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2789          Rupd
2790            ("FGR",
2791             TP[qVar"state",
2792                Fupd
2793                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
2794                   CS(Mop(FPToInt 32,
2795                          TP[Apply
2796                               (Const("Rounding_Mode",ATy(qTy,rTy)),
2797                                qVar"state"),
2798                             EX(Apply
2799                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2800                                   Var("fs",FTy 5)),LN 31,LN 0,F32)]),
2801                      [(Mop(Some,iVar"x"),
2802                        Call("IntToDWordMIPS",F64,iVar"x")),
2803                       (LO iTy,LW(9223372036854775807,64))]))]))))
2804;
2805val dfn'CVT_S_D_def = Def
2806  ("dfn'CVT_S_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
2807   Close
2808     (qVar"state",
2809      ITE(Mop(Not,
2810              Dest
2811                ("CU1",bTy,
2812                 Dest
2813                   ("Status",CTy"StatusRegister",
2814                    Dest("CP0",CTy"CP0",qVar"state")))),
2815          Apply
2816            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2817          Rupd
2818            ("FGR",
2819             TP[qVar"state",
2820                Fupd
2821                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
2822                   Mop(SE F64,
2823                       Mop(FP64To32,
2824                           TP[Apply
2825                                (Const("Rounding_Mode",ATy(qTy,rTy)),
2826                                 qVar"state"),
2827                              Apply
2828                                (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2829                                 Var("fs",FTy 5))])))]))))
2830;
2831val dfn'CVT_S_L_def = Def
2832  ("dfn'CVT_S_L",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
2833   Close
2834     (qVar"state",
2835      ITE(Mop(Not,
2836              Dest
2837                ("CU1",bTy,
2838                 Dest
2839                   ("Status",CTy"StatusRegister",
2840                    Dest("CP0",CTy"CP0",qVar"state")))),
2841          Apply
2842            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2843          Rupd
2844            ("FGR",
2845             TP[qVar"state",
2846                Fupd
2847                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
2848                   Mop(SE F64,
2849                       Mop(FPFromInt 32,
2850                           TP[Apply
2851                                (Const("Rounding_Mode",ATy(qTy,rTy)),
2852                                 qVar"state"),
2853                              Mop(Cast iTy,
2854                                  Apply
2855                                    (Dest
2856                                       ("FGR",ATy(FTy 5,F64),qVar"state"),
2857                                     Var("fs",FTy 5)))])))]))))
2858;
2859val dfn'CVT_S_W_def = Def
2860  ("dfn'CVT_S_W",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
2861   Close
2862     (qVar"state",
2863      ITE(Mop(Not,
2864              Dest
2865                ("CU1",bTy,
2866                 Dest
2867                   ("Status",CTy"StatusRegister",
2868                    Dest("CP0",CTy"CP0",qVar"state")))),
2869          Apply
2870            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2871          Let(qVar"s",
2872              ITE(Call
2873                    ("NotWordValue",bTy,
2874                     Apply
2875                       (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2876                        Var("fs",FTy 5))),
2877                  Mop(Snd,
2878                      Apply
2879                        (Call
2880                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
2881                            Call
2882                              ("UNPREDICTABLE",CTy"exception",
2883                               LS"CVT.S.W: NotWordValue")),qVar"state")),
2884                  qVar"state"),
2885              Rupd
2886                ("FGR",
2887                 TP[qVar"s",
2888                    Fupd
2889                      (Dest("FGR",ATy(FTy 5,F64),qVar"s"),Var("fd",FTy 5),
2890                       Mop(SE F64,
2891                           Mop(FPFromInt 32,
2892                               TP[Apply
2893                                    (Const("Rounding_Mode",ATy(qTy,rTy)),
2894                                     qVar"s"),
2895                                  Mop(Cast iTy,
2896                                      EX(Apply
2897                                           (Dest
2898                                              ("FGR",ATy(FTy 5,F64),
2899                                               qVar"s"),Var("fs",FTy 5)),
2900                                         LN 31,LN 0,F32))])))])))))
2901;
2902val dfn'CVT_W_D_def = Def
2903  ("dfn'CVT_W_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
2904   Close
2905     (qVar"state",
2906      ITE(Mop(Not,
2907              Dest
2908                ("CU1",bTy,
2909                 Dest
2910                   ("Status",CTy"StatusRegister",
2911                    Dest("CP0",CTy"CP0",qVar"state")))),
2912          Apply
2913            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2914          Rupd
2915            ("FGR",
2916             TP[qVar"state",
2917                Fupd
2918                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
2919                   CS(Mop(FPToInt 64,
2920                          TP[Apply
2921                               (Const("Rounding_Mode",ATy(qTy,rTy)),
2922                                qVar"state"),
2923                             Apply
2924                               (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2925                                Var("fs",FTy 5))]),
2926                      [(Mop(Some,iVar"x"),
2927                        Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))),
2928                       (LO iTy,LW(2147483647,64))]))]))))
2929;
2930val dfn'CVT_W_S_def = Def
2931  ("dfn'CVT_W_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
2932   Close
2933     (qVar"state",
2934      ITE(Mop(Not,
2935              Dest
2936                ("CU1",bTy,
2937                 Dest
2938                   ("Status",CTy"StatusRegister",
2939                    Dest("CP0",CTy"CP0",qVar"state")))),
2940          Apply
2941            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2942          Rupd
2943            ("FGR",
2944             TP[qVar"state",
2945                Fupd
2946                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
2947                   CS(Mop(FPToInt 32,
2948                          TP[Apply
2949                               (Const("Rounding_Mode",ATy(qTy,rTy)),
2950                                qVar"state"),
2951                             EX(Apply
2952                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2953                                   Var("fs",FTy 5)),LN 31,LN 0,F32)]),
2954                      [(Mop(Some,iVar"x"),
2955                        Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))),
2956                       (LO iTy,LW(2147483647,64))]))]))))
2957;
2958val dfn'DIV_D_def = Def
2959  ("dfn'DIV_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
2960   Close
2961     (qVar"state",
2962      ITE(Mop(Not,
2963              Dest
2964                ("CU1",bTy,
2965                 Dest
2966                   ("Status",CTy"StatusRegister",
2967                    Dest("CP0",CTy"CP0",qVar"state")))),
2968          Apply
2969            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
2970          Rupd
2971            ("FGR",
2972             TP[qVar"state",
2973                Fupd
2974                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
2975                   Apply
2976                     (Call
2977                        ("PostOpF64",ATy(qTy,F64),
2978                         Mop(FPDiv 64,
2979                             TP[Apply
2980                                  (Const("Rounding_Mode",ATy(qTy,rTy)),
2981                                   qVar"state"),
2982                                Apply
2983                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2984                                   Var("fs",FTy 5)),
2985                                Apply
2986                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
2987                                   Var("ft",FTy 5))])),qVar"state"))]))))
2988;
2989val dfn'DIV_S_def = Def
2990  ("dfn'DIV_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
2991   Close
2992     (qVar"state",
2993      ITE(Mop(Not,
2994              Dest
2995                ("CU1",bTy,
2996                 Dest
2997                   ("Status",CTy"StatusRegister",
2998                    Dest("CP0",CTy"CP0",qVar"state")))),
2999          Apply
3000            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
3001          Rupd
3002            ("FGR",
3003             TP[qVar"state",
3004                Fupd
3005                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
3006                   Mop(SE F64,
3007                       Apply
3008                         (Call
3009                            ("PostOpF32",ATy(qTy,F32),
3010                             Mop(FPDiv 32,
3011                                 TP[Apply
3012                                      (Const("Rounding_Mode",ATy(qTy,rTy)),
3013                                       qVar"state"),
3014                                    EX(Apply
3015                                         (Dest
3016                                            ("FGR",ATy(FTy 5,F64),
3017                                             qVar"state"),Var("fs",FTy 5)),
3018                                       LN 31,LN 0,F32),
3019                                    EX(Apply
3020                                         (Dest
3021                                            ("FGR",ATy(FTy 5,F64),
3022                                             qVar"state"),Var("ft",FTy 5)),
3023                                       LN 31,LN 0,F32)])),qVar"state")))]))))
3024;
3025val dfn'FLOOR_L_D_def = Def
3026  ("dfn'FLOOR_L_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
3027   Close
3028     (qVar"state",
3029      ITE(Mop(Not,
3030              Dest
3031                ("CU1",bTy,
3032                 Dest
3033                   ("Status",CTy"StatusRegister",
3034                    Dest("CP0",CTy"CP0",qVar"state")))),
3035          Apply
3036            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
3037          Rupd
3038            ("FGR",
3039             TP[qVar"state",
3040                Fupd
3041                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
3042                   CS(Mop(FPToInt 64,
3043                          TP[binary_ieeeSyntax.roundTowardNegative_tm,
3044                             Apply
3045                               (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3046                                Var("fs",FTy 5))]),
3047                      [(Mop(Some,iVar"x"),
3048                        Call("IntToDWordMIPS",F64,iVar"x")),
3049                       (LO iTy,LW(9223372036854775807,64))]))]))))
3050;
3051val dfn'FLOOR_L_S_def = Def
3052  ("dfn'FLOOR_L_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
3053   Close
3054     (qVar"state",
3055      ITE(Mop(Not,
3056              Dest
3057                ("CU1",bTy,
3058                 Dest
3059                   ("Status",CTy"StatusRegister",
3060                    Dest("CP0",CTy"CP0",qVar"state")))),
3061          Apply
3062            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
3063          Rupd
3064            ("FGR",
3065             TP[qVar"state",
3066                Fupd
3067                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
3068                   CS(Mop(FPToInt 32,
3069                          TP[binary_ieeeSyntax.roundTowardNegative_tm,
3070                             EX(Apply
3071                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3072                                   Var("fs",FTy 5)),LN 31,LN 0,F32)]),
3073                      [(Mop(Some,iVar"x"),
3074                        Call("IntToDWordMIPS",F64,iVar"x")),
3075                       (LO iTy,LW(9223372036854775807,64))]))]))))
3076;
3077val dfn'FLOOR_W_D_def = Def
3078  ("dfn'FLOOR_W_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
3079   Close
3080     (qVar"state",
3081      ITE(Mop(Not,
3082              Dest
3083                ("CU1",bTy,
3084                 Dest
3085                   ("Status",CTy"StatusRegister",
3086                    Dest("CP0",CTy"CP0",qVar"state")))),
3087          Apply
3088            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
3089          Rupd
3090            ("FGR",
3091             TP[qVar"state",
3092                Fupd
3093                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
3094                   CS(Mop(FPToInt 64,
3095                          TP[binary_ieeeSyntax.roundTowardNegative_tm,
3096                             Apply
3097                               (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3098                                Var("fs",FTy 5))]),
3099                      [(Mop(Some,iVar"x"),
3100                        Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))),
3101                       (LO iTy,LW(2147483647,64))]))]))))
3102;
3103val dfn'FLOOR_W_S_def = Def
3104  ("dfn'FLOOR_W_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
3105   Close
3106     (qVar"state",
3107      ITE(Mop(Not,
3108              Dest
3109                ("CU1",bTy,
3110                 Dest
3111                   ("Status",CTy"StatusRegister",
3112                    Dest("CP0",CTy"CP0",qVar"state")))),
3113          Apply
3114            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
3115          Rupd
3116            ("FGR",
3117             TP[qVar"state",
3118                Fupd
3119                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
3120                   CS(Mop(FPToInt 32,
3121                          TP[binary_ieeeSyntax.roundTowardNegative_tm,
3122                             EX(Apply
3123                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3124                                   Var("fs",FTy 5)),LN 31,LN 0,F32)]),
3125                      [(Mop(Some,iVar"x"),
3126                        Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))),
3127                       (LO iTy,LW(2147483647,64))]))]))))
3128;
3129val dfn'LDC1_def = Def
3130  ("dfn'LDC1",TP[Var("ft",FTy 5),Var("offset",F16),Var("base",FTy 5)],
3131   Close
3132     (qVar"state",
3133      ITE(Mop(Not,
3134              Dest
3135                ("CU1",bTy,
3136                 Dest
3137                   ("Status",CTy"StatusRegister",
3138                    Dest("CP0",CTy"CP0",qVar"state")))),
3139          Apply
3140            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
3141          Let(TP[Var("v",F64),qVar"s"],
3142              Apply
3143                (Call
3144                   ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
3145                    TP[Const("DOUBLEWORD",FTy 3),
3146                       Const("DOUBLEWORD",FTy 3),LT,
3147                       Bop(Add,Mop(SE F64,Var("offset",F16)),
3148                           Apply
3149                             (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
3150                              qVar"state")),Mop(Some,LF)]),qVar"state"),
3151              ITE(Mop(Not,Dest("exceptionSignalled",bTy,qVar"s")),
3152                  Rupd
3153                    ("FGR",
3154                     TP[qVar"s",
3155                        Fupd
3156                          (Dest("FGR",ATy(FTy 5,F64),qVar"s"),
3157                           Var("ft",FTy 5),Var("v",F64))]),qVar"s")))))
3158;
3159val dfn'LDXC1_def = Def
3160  ("dfn'LDXC1",TP[Var("fd",FTy 5),Var("index",FTy 5),Var("base",FTy 5)],
3161   Close
3162     (qVar"state",
3163      ITE(Mop(Not,
3164              Dest
3165                ("CU1",bTy,
3166                 Dest
3167                   ("Status",CTy"StatusRegister",
3168                    Dest("CP0",CTy"CP0",qVar"state")))),
3169          Apply
3170            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
3171          Let(TP[Var("v",F64),qVar"s"],
3172              Apply
3173                (Call
3174                   ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
3175                    TP[Const("DOUBLEWORD",FTy 3),
3176                       Const("DOUBLEWORD",FTy 3),LT,
3177                       Bop(Add,
3178                           Apply
3179                             (Call("GPR",ATy(qTy,F64),Var("index",FTy 5)),
3180                              qVar"state"),
3181                           Apply
3182                             (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
3183                              qVar"state")),Mop(Some,LF)]),qVar"state"),
3184              ITE(Mop(Not,Dest("exceptionSignalled",bTy,qVar"s")),
3185                  Rupd
3186                    ("FGR",
3187                     TP[qVar"s",
3188                        Fupd
3189                          (Dest("FGR",ATy(FTy 5,F64),qVar"s"),
3190                           Var("fd",FTy 5),Var("v",F64))]),qVar"s")))))
3191;
3192val dfn'LWC1_def = Def
3193  ("dfn'LWC1",TP[Var("ft",FTy 5),Var("offset",F16),Var("base",FTy 5)],
3194   Close
3195     (qVar"state",
3196      ITE(Mop(Not,
3197              Dest
3198                ("CU1",bTy,
3199                 Dest
3200                   ("Status",CTy"StatusRegister",
3201                    Dest("CP0",CTy"CP0",qVar"state")))),
3202          Apply
3203            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
3204          Let(Var("v",F64),
3205              Bop(Add,Mop(SE F64,Var("offset",F16)),
3206                  Apply
3207                    (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
3208                     qVar"state")),
3209              Let(TP[Var("v0",F64),qVar"s"],
3210                  Apply
3211                    (Call
3212                       ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
3213                        TP[Const("WORD",FTy 3),Const("WORD",FTy 3),LT,
3214                           Var("v",F64),Mop(Some,LF)]),qVar"state"),
3215                  ITE(Mop(Not,Dest("exceptionSignalled",bTy,qVar"s")),
3216                      Let(Var("v1",FTy 3),
3217                          Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3),
3218                              CC[Apply
3219                                   (Const("BigEndianCPU",ATy(qTy,F1)),
3220                                    qVar"s"),LW(0,2)]),
3221                          Rupd
3222                            ("FGR",
3223                             TP[qVar"s",
3224                                Fupd
3225                                  (Dest("FGR",ATy(FTy 5,F64),qVar"s"),
3226                                   Var("ft",FTy 5),
3227                                   Mop(SE F64,
3228                                       EX(Var("v0",F64),
3229                                          Bop(Add,LN 31,
3230                                              Bop(Mul,LN 8,
3231                                                  Mop(Cast nTy,
3232                                                      Var("v1",FTy 3)))),
3233                                          Bop(Mul,LN 8,
3234                                              Mop(Cast nTy,Var("v1",FTy 3))),
3235                                          F32)))])),qVar"s"))))))
3236;
3237val dfn'LWXC1_def = Def
3238  ("dfn'LWXC1",TP[Var("ft",FTy 5),Var("index",FTy 5),Var("base",FTy 5)],
3239   Close
3240     (qVar"state",
3241      ITE(Mop(Not,
3242              Dest
3243                ("CU1",bTy,
3244                 Dest
3245                   ("Status",CTy"StatusRegister",
3246                    Dest("CP0",CTy"CP0",qVar"state")))),
3247          Apply
3248            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
3249          Let(Var("v",F64),
3250              Bop(Add,
3251                  Apply
3252                    (Call("GPR",ATy(qTy,F64),Var("index",FTy 5)),
3253                     qVar"state"),
3254                  Apply
3255                    (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
3256                     qVar"state")),
3257              Let(TP[Var("v0",F64),qVar"s"],
3258                  Apply
3259                    (Call
3260                       ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
3261                        TP[Const("WORD",FTy 3),Const("WORD",FTy 3),LT,
3262                           Var("v",F64),Mop(Some,LF)]),qVar"state"),
3263                  ITE(Mop(Not,Dest("exceptionSignalled",bTy,qVar"s")),
3264                      Let(Var("v1",FTy 3),
3265                          Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3),
3266                              CC[Apply
3267                                   (Const("BigEndianCPU",ATy(qTy,F1)),
3268                                    qVar"s"),LW(0,2)]),
3269                          Rupd
3270                            ("FGR",
3271                             TP[qVar"s",
3272                                Fupd
3273                                  (Dest("FGR",ATy(FTy 5,F64),qVar"s"),
3274                                   Var("ft",FTy 5),
3275                                   Mop(SE F64,
3276                                       EX(Var("v0",F64),
3277                                          Bop(Add,LN 31,
3278                                              Bop(Mul,LN 8,
3279                                                  Mop(Cast nTy,
3280                                                      Var("v1",FTy 3)))),
3281                                          Bop(Mul,LN 8,
3282                                              Mop(Cast nTy,Var("v1",FTy 3))),
3283                                          F32)))])),qVar"s"))))))
3284;
3285val dfn'MADD_D_def = Def
3286  ("dfn'MADD_D",
3287   TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
3288   Close
3289     (qVar"state",
3290      ITE(Mop(Not,
3291              Dest
3292                ("CU1",bTy,
3293                 Dest
3294                   ("Status",CTy"StatusRegister",
3295                    Dest("CP0",CTy"CP0",qVar"state")))),
3296          Apply
3297            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
3298          Rupd
3299            ("FGR",
3300             TP[qVar"state",
3301                Fupd
3302                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
3303                   Apply
3304                     (Call
3305                        ("PostOpF64",ATy(qTy,F64),
3306                         Mop(FPAdd 64,
3307                             TP[Apply
3308                                  (Const("Rounding_Mode",ATy(qTy,rTy)),
3309                                   qVar"state"),
3310                                Apply
3311                                  (Call
3312                                     ("PostOpF64",ATy(qTy,F64),
3313                                      Mop(FPMul 64,
3314                                          TP[Apply
3315                                               (Const
3316                                                  ("Rounding_Mode",
3317                                                   ATy(qTy,rTy)),
3318                                                qVar"state"),
3319                                             Apply
3320                                               (Dest
3321                                                  ("FGR",ATy(FTy 5,F64),
3322                                                   qVar"state"),
3323                                                Var("fs",FTy 5)),
3324                                             Apply
3325                                               (Dest
3326                                                  ("FGR",ATy(FTy 5,F64),
3327                                                   qVar"state"),
3328                                                Var("ft",FTy 5))])),
3329                                   qVar"state"),
3330                                Apply
3331                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3332                                   Var("fr",FTy 5))])),qVar"state"))]))))
3333;
3334val dfn'MADD_S_def = Def
3335  ("dfn'MADD_S",
3336   TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
3337   Close
3338     (qVar"state",
3339      ITE(Mop(Not,
3340              Dest
3341                ("CU1",bTy,
3342                 Dest
3343                   ("Status",CTy"StatusRegister",
3344                    Dest("CP0",CTy"CP0",qVar"state")))),
3345          Apply
3346            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
3347          Rupd
3348            ("FGR",
3349             TP[qVar"state",
3350                Fupd
3351                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
3352                   Mop(SE F64,
3353                       Apply
3354                         (Call
3355                            ("PostOpF32",ATy(qTy,F32),
3356                             Mop(FPAdd 32,
3357                                 TP[Apply
3358                                      (Const("Rounding_Mode",ATy(qTy,rTy)),
3359                                       qVar"state"),
3360                                    Apply
3361                                      (Call
3362                                         ("PostOpF32",ATy(qTy,F32),
3363                                          Mop(FPMul 32,
3364                                              TP[Apply
3365                                                   (Const
3366                                                      ("Rounding_Mode",
3367                                                       ATy(qTy,rTy)),
3368                                                    qVar"state"),
3369                                                 EX(Apply
3370                                                      (Dest
3371                                                         ("FGR",
3372                                                          ATy(FTy 5,F64),
3373                                                          qVar"state"),
3374                                                       Var("fs",FTy 5)),
3375                                                    LN 31,LN 0,F32),
3376                                                 EX(Apply
3377                                                      (Dest
3378                                                         ("FGR",
3379                                                          ATy(FTy 5,F64),
3380                                                          qVar"state"),
3381                                                       Var("ft",FTy 5)),
3382                                                    LN 31,LN 0,F32)])),
3383                                       qVar"state"),
3384                                    EX(Apply
3385                                         (Dest
3386                                            ("FGR",ATy(FTy 5,F64),
3387                                             qVar"state"),Var("fr",FTy 5)),
3388                                       LN 31,LN 0,F32)])),qVar"state")))]))))
3389;
3390val dfn'MOV_D_def = Def
3391  ("dfn'MOV_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
3392   Close
3393     (qVar"state",
3394      ITE(Mop(Not,
3395              Dest
3396                ("CU1",bTy,
3397                 Dest
3398                   ("Status",CTy"StatusRegister",
3399                    Dest("CP0",CTy"CP0",qVar"state")))),
3400          Apply
3401            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
3402          Rupd
3403            ("FGR",
3404             TP[qVar"state",
3405                Fupd
3406                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
3407                   Apply
3408                     (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3409                      Var("fs",FTy 5)))]))))
3410;
3411val dfn'MOV_S_def = Def
3412  ("dfn'MOV_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
3413   Close
3414     (qVar"state",
3415      ITE(Mop(Not,
3416              Dest
3417                ("CU1",bTy,
3418                 Dest
3419                   ("Status",CTy"StatusRegister",
3420                    Dest("CP0",CTy"CP0",qVar"state")))),
3421          Apply
3422            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
3423          Rupd
3424            ("FGR",
3425             TP[qVar"state",
3426                Fupd
3427                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
3428                   Mop(SE F64,
3429                       EX(Apply
3430                            (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3431                             Var("fs",FTy 5)),LN 31,LN 0,F32)))]))))
3432;
3433val dfn'MOVF_def = Def
3434  ("dfn'MOVF",TP[Var("rd",FTy 5),Var("rs",FTy 5),Var("cc",FTy 3)],
3435   Close
3436     (qVar"state",
3437      ITB([(Mop(Not,
3438                Dest
3439                  ("CU1",bTy,
3440                   Dest
3441                     ("Status",CTy"StatusRegister",
3442                      Dest("CP0",CTy"CP0",qVar"state")))),
3443            Apply
3444              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
3445               qVar"state")),
3446           (Mop(Not,
3447                Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")),
3448                    Mop(Cast nTy,Var("cc",FTy 3)))),
3449            Apply
3450              (Call
3451                 ("write'GPR",ATy(qTy,qTy),
3452                  TP[Apply
3453                       (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
3454                        qVar"state"),Var("rd",FTy 5)]),qVar"state"))],
3455          qVar"state")))
3456;
3457val dfn'MOVF_D_def = Def
3458  ("dfn'MOVF_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)],
3459   Close
3460     (qVar"state",
3461      ITB([(Mop(Not,
3462                Dest
3463                  ("CU1",bTy,
3464                   Dest
3465                     ("Status",CTy"StatusRegister",
3466                      Dest("CP0",CTy"CP0",qVar"state")))),
3467            Apply
3468              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
3469               qVar"state")),
3470           (Mop(Not,
3471                Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")),
3472                    Mop(Cast nTy,Var("cc",FTy 3)))),
3473            Rupd
3474              ("FGR",
3475               TP[qVar"state",
3476                  Fupd
3477                    (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3478                     Var("fd",FTy 5),
3479                     Apply
3480                       (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3481                        Var("fs",FTy 5)))]))],qVar"state")))
3482;
3483val dfn'MOVF_S_def = Def
3484  ("dfn'MOVF_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)],
3485   Close
3486     (qVar"state",
3487      ITB([(Mop(Not,
3488                Dest
3489                  ("CU1",bTy,
3490                   Dest
3491                     ("Status",CTy"StatusRegister",
3492                      Dest("CP0",CTy"CP0",qVar"state")))),
3493            Apply
3494              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
3495               qVar"state")),
3496           (Mop(Not,
3497                Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")),
3498                    Mop(Cast nTy,Var("cc",FTy 3)))),
3499            Rupd
3500              ("FGR",
3501               TP[qVar"state",
3502                  Fupd
3503                    (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3504                     Var("fd",FTy 5),
3505                     Mop(SE F64,
3506                         EX(Apply
3507                              (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3508                               Var("fs",FTy 5)),LN 31,LN 0,F32)))]))],
3509          qVar"state")))
3510;
3511val dfn'MOVN_D_def = Def
3512  ("dfn'MOVN_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)],
3513   Close
3514     (qVar"state",
3515      ITB([(Mop(Not,
3516                Dest
3517                  ("CU1",bTy,
3518                   Dest
3519                     ("Status",CTy"StatusRegister",
3520                      Dest("CP0",CTy"CP0",qVar"state")))),
3521            Apply
3522              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
3523               qVar"state")),
3524           (Mop(Not,
3525                EQ(Apply
3526                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
3527                   LW(0,64))),
3528            Rupd
3529              ("FGR",
3530               TP[qVar"state",
3531                  Fupd
3532                    (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3533                     Var("fd",FTy 5),
3534                     Apply
3535                       (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3536                        Var("fs",FTy 5)))]))],qVar"state")))
3537;
3538val dfn'MOVN_S_def = Def
3539  ("dfn'MOVN_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)],
3540   Close
3541     (qVar"state",
3542      ITB([(Mop(Not,
3543                Dest
3544                  ("CU1",bTy,
3545                   Dest
3546                     ("Status",CTy"StatusRegister",
3547                      Dest("CP0",CTy"CP0",qVar"state")))),
3548            Apply
3549              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
3550               qVar"state")),
3551           (Mop(Not,
3552                EQ(Apply
3553                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
3554                   LW(0,64))),
3555            Rupd
3556              ("FGR",
3557               TP[qVar"state",
3558                  Fupd
3559                    (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3560                     Var("fd",FTy 5),
3561                     Mop(SE F64,
3562                         EX(Apply
3563                              (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3564                               Var("fs",FTy 5)),LN 31,LN 0,F32)))]))],
3565          qVar"state")))
3566;
3567val dfn'MOVT_def = Def
3568  ("dfn'MOVT",TP[Var("rd",FTy 5),Var("rs",FTy 5),Var("cc",FTy 3)],
3569   Close
3570     (qVar"state",
3571      ITB([(Mop(Not,
3572                Dest
3573                  ("CU1",bTy,
3574                   Dest
3575                     ("Status",CTy"StatusRegister",
3576                      Dest("CP0",CTy"CP0",qVar"state")))),
3577            Apply
3578              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
3579               qVar"state")),
3580           (Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")),
3581                Mop(Cast nTy,Var("cc",FTy 3))),
3582            Apply
3583              (Call
3584                 ("write'GPR",ATy(qTy,qTy),
3585                  TP[Apply
3586                       (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
3587                        qVar"state"),Var("rd",FTy 5)]),qVar"state"))],
3588          qVar"state")))
3589;
3590val dfn'MOVT_D_def = Def
3591  ("dfn'MOVT_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)],
3592   Close
3593     (qVar"state",
3594      ITB([(Mop(Not,
3595                Dest
3596                  ("CU1",bTy,
3597                   Dest
3598                     ("Status",CTy"StatusRegister",
3599                      Dest("CP0",CTy"CP0",qVar"state")))),
3600            Apply
3601              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
3602               qVar"state")),
3603           (Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")),
3604                Mop(Cast nTy,Var("cc",FTy 3))),
3605            Rupd
3606              ("FGR",
3607               TP[qVar"state",
3608                  Fupd
3609                    (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3610                     Var("fd",FTy 5),
3611                     Apply
3612                       (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3613                        Var("fs",FTy 5)))]))],qVar"state")))
3614;
3615val dfn'MOVT_S_def = Def
3616  ("dfn'MOVT_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)],
3617   Close
3618     (qVar"state",
3619      ITB([(Mop(Not,
3620                Dest
3621                  ("CU1",bTy,
3622                   Dest
3623                     ("Status",CTy"StatusRegister",
3624                      Dest("CP0",CTy"CP0",qVar"state")))),
3625            Apply
3626              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
3627               qVar"state")),
3628           (Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")),
3629                Mop(Cast nTy,Var("cc",FTy 3))),
3630            Rupd
3631              ("FGR",
3632               TP[qVar"state",
3633                  Fupd
3634                    (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3635                     Var("fd",FTy 5),
3636                     Mop(SE F64,
3637                         EX(Apply
3638                              (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3639                               Var("fs",FTy 5)),LN 31,LN 0,F32)))]))],
3640          qVar"state")))
3641;
3642val dfn'MOVZ_D_def = Def
3643  ("dfn'MOVZ_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)],
3644   Close
3645     (qVar"state",
3646      ITB([(Mop(Not,
3647                Dest
3648                  ("CU1",bTy,
3649                   Dest
3650                     ("Status",CTy"StatusRegister",
3651                      Dest("CP0",CTy"CP0",qVar"state")))),
3652            Apply
3653              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
3654               qVar"state")),
3655           (EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
3656               LW(0,64)),
3657            Rupd
3658              ("FGR",
3659               TP[qVar"state",
3660                  Fupd
3661                    (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3662                     Var("fd",FTy 5),
3663                     Apply
3664                       (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3665                        Var("fs",FTy 5)))]))],qVar"state")))
3666;
3667val dfn'MOVZ_S_def = Def
3668  ("dfn'MOVZ_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)],
3669   Close
3670     (qVar"state",
3671      ITB([(Mop(Not,
3672                Dest
3673                  ("CU1",bTy,
3674                   Dest
3675                     ("Status",CTy"StatusRegister",
3676                      Dest("CP0",CTy"CP0",qVar"state")))),
3677            Apply
3678              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
3679               qVar"state")),
3680           (EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
3681               LW(0,64)),
3682            Rupd
3683              ("FGR",
3684               TP[qVar"state",
3685                  Fupd
3686                    (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3687                     Var("fd",FTy 5),
3688                     Mop(SE F64,
3689                         EX(Apply
3690                              (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3691                               Var("fs",FTy 5)),LN 31,LN 0,F32)))]))],
3692          qVar"state")))
3693;
3694val dfn'MSUB_D_def = Def
3695  ("dfn'MSUB_D",
3696   TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
3697   Close
3698     (qVar"state",
3699      ITE(Mop(Not,
3700              Dest
3701                ("CU1",bTy,
3702                 Dest
3703                   ("Status",CTy"StatusRegister",
3704                    Dest("CP0",CTy"CP0",qVar"state")))),
3705          Apply
3706            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
3707          Rupd
3708            ("FGR",
3709             TP[qVar"state",
3710                Fupd
3711                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
3712                   Apply
3713                     (Call
3714                        ("PostOpF64",ATy(qTy,F64),
3715                         Mop(FPSub 64,
3716                             TP[Apply
3717                                  (Const("Rounding_Mode",ATy(qTy,rTy)),
3718                                   qVar"state"),
3719                                Apply
3720                                  (Call
3721                                     ("PostOpF64",ATy(qTy,F64),
3722                                      Mop(FPMul 64,
3723                                          TP[Apply
3724                                               (Const
3725                                                  ("Rounding_Mode",
3726                                                   ATy(qTy,rTy)),
3727                                                qVar"state"),
3728                                             Apply
3729                                               (Dest
3730                                                  ("FGR",ATy(FTy 5,F64),
3731                                                   qVar"state"),
3732                                                Var("fs",FTy 5)),
3733                                             Apply
3734                                               (Dest
3735                                                  ("FGR",ATy(FTy 5,F64),
3736                                                   qVar"state"),
3737                                                Var("ft",FTy 5))])),
3738                                   qVar"state"),
3739                                Apply
3740                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3741                                   Var("fr",FTy 5))])),qVar"state"))]))))
3742;
3743val dfn'MSUB_S_def = Def
3744  ("dfn'MSUB_S",
3745   TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
3746   Close
3747     (qVar"state",
3748      ITE(Mop(Not,
3749              Dest
3750                ("CU1",bTy,
3751                 Dest
3752                   ("Status",CTy"StatusRegister",
3753                    Dest("CP0",CTy"CP0",qVar"state")))),
3754          Apply
3755            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
3756          Rupd
3757            ("FGR",
3758             TP[qVar"state",
3759                Fupd
3760                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
3761                   Mop(SE F64,
3762                       Apply
3763                         (Call
3764                            ("PostOpF32",ATy(qTy,F32),
3765                             Mop(FPSub 32,
3766                                 TP[Apply
3767                                      (Const("Rounding_Mode",ATy(qTy,rTy)),
3768                                       qVar"state"),
3769                                    Apply
3770                                      (Call
3771                                         ("PostOpF32",ATy(qTy,F32),
3772                                          Mop(FPMul 32,
3773                                              TP[Apply
3774                                                   (Const
3775                                                      ("Rounding_Mode",
3776                                                       ATy(qTy,rTy)),
3777                                                    qVar"state"),
3778                                                 EX(Apply
3779                                                      (Dest
3780                                                         ("FGR",
3781                                                          ATy(FTy 5,F64),
3782                                                          qVar"state"),
3783                                                       Var("fs",FTy 5)),
3784                                                    LN 31,LN 0,F32),
3785                                                 EX(Apply
3786                                                      (Dest
3787                                                         ("FGR",
3788                                                          ATy(FTy 5,F64),
3789                                                          qVar"state"),
3790                                                       Var("ft",FTy 5)),
3791                                                    LN 31,LN 0,F32)])),
3792                                       qVar"state"),
3793                                    EX(Apply
3794                                         (Dest
3795                                            ("FGR",ATy(FTy 5,F64),
3796                                             qVar"state"),Var("fr",FTy 5)),
3797                                       LN 31,LN 0,F32)])),qVar"state")))]))))
3798;
3799val dfn'MUL_D_def = Def
3800  ("dfn'MUL_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
3801   Close
3802     (qVar"state",
3803      ITE(Mop(Not,
3804              Dest
3805                ("CU1",bTy,
3806                 Dest
3807                   ("Status",CTy"StatusRegister",
3808                    Dest("CP0",CTy"CP0",qVar"state")))),
3809          Apply
3810            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
3811          Rupd
3812            ("FGR",
3813             TP[qVar"state",
3814                Fupd
3815                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
3816                   Apply
3817                     (Call
3818                        ("PostOpF64",ATy(qTy,F64),
3819                         Mop(FPMul 64,
3820                             TP[Apply
3821                                  (Const("Rounding_Mode",ATy(qTy,rTy)),
3822                                   qVar"state"),
3823                                Apply
3824                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3825                                   Var("fs",FTy 5)),
3826                                Apply
3827                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3828                                   Var("ft",FTy 5))])),qVar"state"))]))))
3829;
3830val dfn'MUL_S_def = Def
3831  ("dfn'MUL_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
3832   Close
3833     (qVar"state",
3834      ITE(Mop(Not,
3835              Dest
3836                ("CU1",bTy,
3837                 Dest
3838                   ("Status",CTy"StatusRegister",
3839                    Dest("CP0",CTy"CP0",qVar"state")))),
3840          Apply
3841            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
3842          Rupd
3843            ("FGR",
3844             TP[qVar"state",
3845                Fupd
3846                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
3847                   Mop(SE F64,
3848                       Apply
3849                         (Call
3850                            ("PostOpF32",ATy(qTy,F32),
3851                             Mop(FPMul 32,
3852                                 TP[Apply
3853                                      (Const("Rounding_Mode",ATy(qTy,rTy)),
3854                                       qVar"state"),
3855                                    EX(Apply
3856                                         (Dest
3857                                            ("FGR",ATy(FTy 5,F64),
3858                                             qVar"state"),Var("fs",FTy 5)),
3859                                       LN 31,LN 0,F32),
3860                                    EX(Apply
3861                                         (Dest
3862                                            ("FGR",ATy(FTy 5,F64),
3863                                             qVar"state"),Var("ft",FTy 5)),
3864                                       LN 31,LN 0,F32)])),qVar"state")))]))))
3865;
3866val dfn'NEG_D_def = Def
3867  ("dfn'NEG_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
3868   Close
3869     (qVar"state",
3870      ITB([(Mop(Not,
3871                Dest
3872                  ("CU1",bTy,
3873                   Dest
3874                     ("Status",CTy"StatusRegister",
3875                      Dest("CP0",CTy"CP0",qVar"state")))),
3876            Apply
3877              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
3878               qVar"state")),
3879           (Dest("ABS2008",bTy,Dest("fcsr",CTy"FCSR",qVar"state")),
3880            Rupd
3881              ("FGR",
3882               TP[qVar"state",
3883                  Fupd
3884                    (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3885                     Var("fd",FTy 5),
3886                     Mop(FPNeg 64,
3887                         Apply
3888                           (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3889                            Var("fs",FTy 5))))]))],
3890          Rupd
3891            ("FGR",
3892             TP[qVar"state",
3893                Fupd
3894                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
3895                   Apply
3896                     (Call
3897                        ("PostOpF64",ATy(qTy,F64),
3898                         Call
3899                           ("FP64_Neg1985",F64,
3900                            Apply
3901                              (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3902                               Var("fs",FTy 5)))),qVar"state"))]))))
3903;
3904val dfn'NEG_S_def = Def
3905  ("dfn'NEG_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
3906   Close
3907     (qVar"state",
3908      ITB([(Mop(Not,
3909                Dest
3910                  ("CU1",bTy,
3911                   Dest
3912                     ("Status",CTy"StatusRegister",
3913                      Dest("CP0",CTy"CP0",qVar"state")))),
3914            Apply
3915              (Const("SignalCP1UnusableException",ATy(qTy,qTy)),
3916               qVar"state")),
3917           (Dest("ABS2008",bTy,Dest("fcsr",CTy"FCSR",qVar"state")),
3918            Rupd
3919              ("FGR",
3920               TP[qVar"state",
3921                  Fupd
3922                    (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3923                     Var("fd",FTy 5),
3924                     Mop(SE F64,
3925                         Mop(FPNeg 32,
3926                             EX(Apply
3927                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3928                                   Var("fs",FTy 5)),LN 31,LN 0,F32))))]))],
3929          Rupd
3930            ("FGR",
3931             TP[qVar"state",
3932                Fupd
3933                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
3934                   Mop(SE F64,
3935                       Apply
3936                         (Call
3937                            ("PostOpF32",ATy(qTy,F32),
3938                             Call
3939                               ("FP32_Neg1985",F32,
3940                                EX(Apply
3941                                     (Dest
3942                                        ("FGR",ATy(FTy 5,F64),qVar"state"),
3943                                      Var("fs",FTy 5)),LN 31,LN 0,F32))),
3944                          qVar"state")))]))))
3945;
3946val dfn'ROUND_L_D_def = Def
3947  ("dfn'ROUND_L_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
3948   Close
3949     (qVar"state",
3950      ITE(Mop(Not,
3951              Dest
3952                ("CU1",bTy,
3953                 Dest
3954                   ("Status",CTy"StatusRegister",
3955                    Dest("CP0",CTy"CP0",qVar"state")))),
3956          Apply
3957            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
3958          Rupd
3959            ("FGR",
3960             TP[qVar"state",
3961                Fupd
3962                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
3963                   CS(Mop(FPToInt 64,
3964                          TP[binary_ieeeSyntax.roundTiesToEven_tm,
3965                             Apply
3966                               (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3967                                Var("fs",FTy 5))]),
3968                      [(Mop(Some,iVar"x"),
3969                        Call("IntToDWordMIPS",F64,iVar"x")),
3970                       (LO iTy,LW(9223372036854775807,64))]))]))))
3971;
3972val dfn'ROUND_L_S_def = Def
3973  ("dfn'ROUND_L_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
3974   Close
3975     (qVar"state",
3976      ITE(Mop(Not,
3977              Dest
3978                ("CU1",bTy,
3979                 Dest
3980                   ("Status",CTy"StatusRegister",
3981                    Dest("CP0",CTy"CP0",qVar"state")))),
3982          Apply
3983            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
3984          Rupd
3985            ("FGR",
3986             TP[qVar"state",
3987                Fupd
3988                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
3989                   CS(Mop(FPToInt 32,
3990                          TP[binary_ieeeSyntax.roundTiesToEven_tm,
3991                             EX(Apply
3992                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
3993                                   Var("fs",FTy 5)),LN 31,LN 0,F32)]),
3994                      [(Mop(Some,iVar"x"),
3995                        Call("IntToDWordMIPS",F64,iVar"x")),
3996                       (LO iTy,LW(9223372036854775807,64))]))]))))
3997;
3998val dfn'ROUND_W_D_def = Def
3999  ("dfn'ROUND_W_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
4000   Close
4001     (qVar"state",
4002      ITE(Mop(Not,
4003              Dest
4004                ("CU1",bTy,
4005                 Dest
4006                   ("Status",CTy"StatusRegister",
4007                    Dest("CP0",CTy"CP0",qVar"state")))),
4008          Apply
4009            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
4010          Rupd
4011            ("FGR",
4012             TP[qVar"state",
4013                Fupd
4014                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
4015                   CS(Mop(FPToInt 64,
4016                          TP[binary_ieeeSyntax.roundTiesToEven_tm,
4017                             Apply
4018                               (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
4019                                Var("fs",FTy 5))]),
4020                      [(Mop(Some,iVar"x"),
4021                        Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))),
4022                       (LO iTy,LW(2147483647,64))]))]))))
4023;
4024val dfn'ROUND_W_S_def = Def
4025  ("dfn'ROUND_W_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
4026   Close
4027     (qVar"state",
4028      ITE(Mop(Not,
4029              Dest
4030                ("CU1",bTy,
4031                 Dest
4032                   ("Status",CTy"StatusRegister",
4033                    Dest("CP0",CTy"CP0",qVar"state")))),
4034          Apply
4035            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
4036          Rupd
4037            ("FGR",
4038             TP[qVar"state",
4039                Fupd
4040                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
4041                   CS(Mop(FPToInt 32,
4042                          TP[binary_ieeeSyntax.roundTiesToEven_tm,
4043                             EX(Apply
4044                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
4045                                   Var("fs",FTy 5)),LN 31,LN 0,F32)]),
4046                      [(Mop(Some,iVar"x"),
4047                        Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))),
4048                       (LO iTy,LW(2147483647,64))]))]))))
4049;
4050val dfn'SDC1_def = Def
4051  ("dfn'SDC1",TP[Var("ft",FTy 5),Var("offset",F16),Var("base",FTy 5)],
4052   Close
4053     (qVar"state",
4054      ITE(Mop(Not,
4055              Dest
4056                ("CU1",bTy,
4057                 Dest
4058                   ("Status",CTy"StatusRegister",
4059                    Dest("CP0",CTy"CP0",qVar"state")))),
4060          Apply
4061            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
4062          Mop(Snd,
4063              Apply
4064                (Call
4065                   ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
4066                    TP[Const("DOUBLEWORD",FTy 3),
4067                       Const("DOUBLEWORD",FTy 3),LT,
4068                       Apply
4069                         (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
4070                          Var("ft",FTy 5)),
4071                       Bop(Add,Mop(SE F64,Var("offset",F16)),
4072                           Apply
4073                             (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
4074                              qVar"state")),LF]),qVar"state")))))
4075;
4076val dfn'SDXC1_def = Def
4077  ("dfn'SDXC1",TP[Var("fs",FTy 5),Var("index",FTy 5),Var("base",FTy 5)],
4078   Close
4079     (qVar"state",
4080      ITE(Mop(Not,
4081              Dest
4082                ("CU1",bTy,
4083                 Dest
4084                   ("Status",CTy"StatusRegister",
4085                    Dest("CP0",CTy"CP0",qVar"state")))),
4086          Apply
4087            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
4088          Mop(Snd,
4089              Apply
4090                (Call
4091                   ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
4092                    TP[Const("DOUBLEWORD",FTy 3),
4093                       Const("DOUBLEWORD",FTy 3),LT,
4094                       Apply
4095                         (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
4096                          Var("fs",FTy 5)),
4097                       Bop(Add,
4098                           Apply
4099                             (Call("GPR",ATy(qTy,F64),Var("index",FTy 5)),
4100                              qVar"state"),
4101                           Apply
4102                             (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
4103                              qVar"state")),LF]),qVar"state")))))
4104;
4105val dfn'SQRT_D_def = Def
4106  ("dfn'SQRT_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
4107   Close
4108     (qVar"state",
4109      ITE(Mop(Not,
4110              Dest
4111                ("CU1",bTy,
4112                 Dest
4113                   ("Status",CTy"StatusRegister",
4114                    Dest("CP0",CTy"CP0",qVar"state")))),
4115          Apply
4116            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
4117          Rupd
4118            ("FGR",
4119             TP[qVar"state",
4120                Fupd
4121                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
4122                   Apply
4123                     (Call
4124                        ("PostOpF64",ATy(qTy,F64),
4125                         Mop(FPSqrt 64,
4126                             TP[Apply
4127                                  (Const("Rounding_Mode",ATy(qTy,rTy)),
4128                                   qVar"state"),
4129                                Apply
4130                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
4131                                   Var("fs",FTy 5))])),qVar"state"))]))))
4132;
4133val dfn'SQRT_S_def = Def
4134  ("dfn'SQRT_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
4135   Close
4136     (qVar"state",
4137      ITE(Mop(Not,
4138              Dest
4139                ("CU1",bTy,
4140                 Dest
4141                   ("Status",CTy"StatusRegister",
4142                    Dest("CP0",CTy"CP0",qVar"state")))),
4143          Apply
4144            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
4145          Rupd
4146            ("FGR",
4147             TP[qVar"state",
4148                Fupd
4149                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
4150                   Mop(SE F64,
4151                       Apply
4152                         (Call
4153                            ("PostOpF32",ATy(qTy,F32),
4154                             Mop(FPSqrt 32,
4155                                 TP[Apply
4156                                      (Const("Rounding_Mode",ATy(qTy,rTy)),
4157                                       qVar"state"),
4158                                    EX(Apply
4159                                         (Dest
4160                                            ("FGR",ATy(FTy 5,F64),
4161                                             qVar"state"),Var("fs",FTy 5)),
4162                                       LN 31,LN 0,F32)])),qVar"state")))]))))
4163;
4164val dfn'SUB_D_def = Def
4165  ("dfn'SUB_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
4166   Close
4167     (qVar"state",
4168      ITE(Mop(Not,
4169              Dest
4170                ("CU1",bTy,
4171                 Dest
4172                   ("Status",CTy"StatusRegister",
4173                    Dest("CP0",CTy"CP0",qVar"state")))),
4174          Apply
4175            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
4176          Rupd
4177            ("FGR",
4178             TP[qVar"state",
4179                Fupd
4180                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
4181                   Apply
4182                     (Call
4183                        ("PostOpF64",ATy(qTy,F64),
4184                         Mop(FPSub 64,
4185                             TP[Apply
4186                                  (Const("Rounding_Mode",ATy(qTy,rTy)),
4187                                   qVar"state"),
4188                                Apply
4189                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
4190                                   Var("fs",FTy 5)),
4191                                Apply
4192                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
4193                                   Var("ft",FTy 5))])),qVar"state"))]))))
4194;
4195val dfn'SUB_S_def = Def
4196  ("dfn'SUB_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)],
4197   Close
4198     (qVar"state",
4199      ITE(Mop(Not,
4200              Dest
4201                ("CU1",bTy,
4202                 Dest
4203                   ("Status",CTy"StatusRegister",
4204                    Dest("CP0",CTy"CP0",qVar"state")))),
4205          Apply
4206            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
4207          Rupd
4208            ("FGR",
4209             TP[qVar"state",
4210                Fupd
4211                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
4212                   Mop(SE F64,
4213                       Apply
4214                         (Call
4215                            ("PostOpF32",ATy(qTy,F32),
4216                             Mop(FPSub 32,
4217                                 TP[Apply
4218                                      (Const("Rounding_Mode",ATy(qTy,rTy)),
4219                                       qVar"state"),
4220                                    EX(Apply
4221                                         (Dest
4222                                            ("FGR",ATy(FTy 5,F64),
4223                                             qVar"state"),Var("fs",FTy 5)),
4224                                       LN 31,LN 0,F32),
4225                                    EX(Apply
4226                                         (Dest
4227                                            ("FGR",ATy(FTy 5,F64),
4228                                             qVar"state"),Var("ft",FTy 5)),
4229                                       LN 31,LN 0,F32)])),qVar"state")))]))))
4230;
4231val dfn'SWC1_def = Def
4232  ("dfn'SWC1",TP[Var("ft",FTy 5),Var("offset",F16),Var("base",FTy 5)],
4233   Close
4234     (qVar"state",
4235      ITE(Mop(Not,
4236              Dest
4237                ("CU1",bTy,
4238                 Dest
4239                   ("Status",CTy"StatusRegister",
4240                    Dest("CP0",CTy"CP0",qVar"state")))),
4241          Apply
4242            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
4243          Let(Var("v",F64),
4244              Bop(Add,Mop(SE F64,Var("offset",F16)),
4245                  Apply
4246                    (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
4247                     qVar"state")),
4248              Mop(Snd,
4249                  Apply
4250                    (Call
4251                       ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
4252                        TP[Const("WORD",FTy 3),Const("WORD",FTy 3),LT,
4253                           Bop(Lsl,
4254                               Apply
4255                                 (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
4256                                  Var("ft",FTy 5)),
4257                               Bop(Mul,LN 8,
4258                                   Mop(Cast nTy,
4259                                       Bop(BXor,
4260                                           EX(Var("v",F64),LN 2,LN 0,FTy 3),
4261                                           CC[Apply
4262                                                (Const
4263                                                   ("BigEndianCPU",
4264                                                    ATy(qTy,F1)),
4265                                                 qVar"state"),LW(0,2)])))),
4266                           Var("v",F64),LF]),qVar"state"))))))
4267;
4268val dfn'SWXC1_def = Def
4269  ("dfn'SWXC1",TP[Var("ft",FTy 5),Var("index",FTy 5),Var("base",FTy 5)],
4270   Close
4271     (qVar"state",
4272      ITE(Mop(Not,
4273              Dest
4274                ("CU1",bTy,
4275                 Dest
4276                   ("Status",CTy"StatusRegister",
4277                    Dest("CP0",CTy"CP0",qVar"state")))),
4278          Apply
4279            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
4280          Let(Var("v",F64),
4281              Bop(Add,
4282                  Apply
4283                    (Call("GPR",ATy(qTy,F64),Var("index",FTy 5)),
4284                     qVar"state"),
4285                  Apply
4286                    (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),
4287                     qVar"state")),
4288              Mop(Snd,
4289                  Apply
4290                    (Call
4291                       ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
4292                        TP[Const("WORD",FTy 3),Const("WORD",FTy 3),LT,
4293                           Bop(Lsl,
4294                               Apply
4295                                 (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
4296                                  Var("ft",FTy 5)),
4297                               Bop(Mul,LN 8,
4298                                   Mop(Cast nTy,
4299                                       Bop(BXor,
4300                                           EX(Var("v",F64),LN 2,LN 0,FTy 3),
4301                                           CC[Apply
4302                                                (Const
4303                                                   ("BigEndianCPU",
4304                                                    ATy(qTy,F1)),
4305                                                 qVar"state"),LW(0,2)])))),
4306                           Var("v",F64),LF]),qVar"state"))))))
4307;
4308val dfn'TRUNC_L_D_def = Def
4309  ("dfn'TRUNC_L_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
4310   Close
4311     (qVar"state",
4312      ITE(Mop(Not,
4313              Dest
4314                ("CU1",bTy,
4315                 Dest
4316                   ("Status",CTy"StatusRegister",
4317                    Dest("CP0",CTy"CP0",qVar"state")))),
4318          Apply
4319            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
4320          Rupd
4321            ("FGR",
4322             TP[qVar"state",
4323                Fupd
4324                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
4325                   CS(Mop(FPToInt 64,
4326                          TP[binary_ieeeSyntax.roundTowardZero_tm,
4327                             Apply
4328                               (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
4329                                Var("fs",FTy 5))]),
4330                      [(Mop(Some,iVar"x"),
4331                        Call("IntToDWordMIPS",F64,iVar"x")),
4332                       (LO iTy,LW(9223372036854775807,64))]))]))))
4333;
4334val dfn'TRUNC_L_S_def = Def
4335  ("dfn'TRUNC_L_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
4336   Close
4337     (qVar"state",
4338      ITE(Mop(Not,
4339              Dest
4340                ("CU1",bTy,
4341                 Dest
4342                   ("Status",CTy"StatusRegister",
4343                    Dest("CP0",CTy"CP0",qVar"state")))),
4344          Apply
4345            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
4346          Rupd
4347            ("FGR",
4348             TP[qVar"state",
4349                Fupd
4350                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
4351                   CS(Mop(FPToInt 32,
4352                          TP[binary_ieeeSyntax.roundTowardZero_tm,
4353                             EX(Apply
4354                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
4355                                   Var("fs",FTy 5)),LN 31,LN 0,F32)]),
4356                      [(Mop(Some,iVar"x"),
4357                        Call("IntToDWordMIPS",F64,iVar"x")),
4358                       (LO iTy,LW(9223372036854775807,64))]))]))))
4359;
4360val dfn'TRUNC_W_D_def = Def
4361  ("dfn'TRUNC_W_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
4362   Close
4363     (qVar"state",
4364      ITE(Mop(Not,
4365              Dest
4366                ("CU1",bTy,
4367                 Dest
4368                   ("Status",CTy"StatusRegister",
4369                    Dest("CP0",CTy"CP0",qVar"state")))),
4370          Apply
4371            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
4372          Rupd
4373            ("FGR",
4374             TP[qVar"state",
4375                Fupd
4376                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
4377                   CS(Mop(FPToInt 64,
4378                          TP[binary_ieeeSyntax.roundTowardZero_tm,
4379                             Apply
4380                               (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
4381                                Var("fs",FTy 5))]),
4382                      [(Mop(Some,iVar"x"),
4383                        Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))),
4384                       (LO iTy,LW(2147483647,64))]))]))))
4385;
4386val dfn'TRUNC_W_S_def = Def
4387  ("dfn'TRUNC_W_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)],
4388   Close
4389     (qVar"state",
4390      ITE(Mop(Not,
4391              Dest
4392                ("CU1",bTy,
4393                 Dest
4394                   ("Status",CTy"StatusRegister",
4395                    Dest("CP0",CTy"CP0",qVar"state")))),
4396          Apply
4397            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
4398          Rupd
4399            ("FGR",
4400             TP[qVar"state",
4401                Fupd
4402                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fd",FTy 5),
4403                   CS(Mop(FPToInt 32,
4404                          TP[binary_ieeeSyntax.roundTowardZero_tm,
4405                             EX(Apply
4406                                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
4407                                   Var("fs",FTy 5)),LN 31,LN 0,F32)]),
4408                      [(Mop(Some,iVar"x"),
4409                        Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))),
4410                       (LO iTy,LW(2147483647,64))]))]))))
4411;
4412val dfn'DMFC1_def = Def
4413  ("dfn'DMFC1",TP[Var("rt",FTy 5),Var("fs",FTy 5)],
4414   Close
4415     (qVar"state",
4416      ITE(Mop(Not,
4417              Dest
4418                ("CU1",bTy,
4419                 Dest
4420                   ("Status",CTy"StatusRegister",
4421                    Dest("CP0",CTy"CP0",qVar"state")))),
4422          Apply
4423            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
4424          Apply
4425            (Call
4426               ("write'GPR",ATy(qTy,qTy),
4427                TP[Apply
4428                     (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
4429                      Var("fs",FTy 5)),Var("rt",FTy 5)]),qVar"state"))))
4430;
4431val dfn'DMTC1_def = Def
4432  ("dfn'DMTC1",TP[Var("rt",FTy 5),Var("fs",FTy 5)],
4433   Close
4434     (qVar"state",
4435      ITE(Mop(Not,
4436              Dest
4437                ("CU1",bTy,
4438                 Dest
4439                   ("Status",CTy"StatusRegister",
4440                    Dest("CP0",CTy"CP0",qVar"state")))),
4441          Apply
4442            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
4443          Rupd
4444            ("FGR",
4445             TP[qVar"state",
4446                Fupd
4447                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fs",FTy 5),
4448                   Apply
4449                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"))]))))
4450;
4451val dfn'MFC1_def = Def
4452  ("dfn'MFC1",TP[Var("rt",FTy 5),Var("fs",FTy 5)],
4453   Close
4454     (qVar"state",
4455      ITE(Mop(Not,
4456              Dest
4457                ("CU1",bTy,
4458                 Dest
4459                   ("Status",CTy"StatusRegister",
4460                    Dest("CP0",CTy"CP0",qVar"state")))),
4461          Apply
4462            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
4463          Apply
4464            (Call
4465               ("write'GPR",ATy(qTy,qTy),
4466                TP[Mop(SE F64,
4467                       EX(Apply
4468                            (Dest("FGR",ATy(FTy 5,F64),qVar"state"),
4469                             Var("fs",FTy 5)),LN 31,LN 0,F32)),
4470                   Var("rt",FTy 5)]),qVar"state"))))
4471;
4472val dfn'MTC1_def = Def
4473  ("dfn'MTC1",TP[Var("rt",FTy 5),Var("fs",FTy 5)],
4474   Close
4475     (qVar"state",
4476      ITE(Mop(Not,
4477              Dest
4478                ("CU1",bTy,
4479                 Dest
4480                   ("Status",CTy"StatusRegister",
4481                    Dest("CP0",CTy"CP0",qVar"state")))),
4482          Apply
4483            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
4484          Rupd
4485            ("FGR",
4486             TP[qVar"state",
4487                Fupd
4488                  (Dest("FGR",ATy(FTy 5,F64),qVar"state"),Var("fs",FTy 5),
4489                   Mop(SE F64,
4490                       EX(Apply
4491                            (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
4492                             qVar"state"),LN 31,LN 0,F32)))]))))
4493;
4494val dfn'CFC1_def = Def
4495  ("dfn'CFC1",TP[Var("rt",FTy 5),Var("fs",FTy 5)],
4496   Close
4497     (qVar"state",
4498      ITE(Mop(Not,
4499              Dest
4500                ("CU1",bTy,
4501                 Dest
4502                   ("Status",CTy"StatusRegister",
4503                    Dest("CP0",CTy"CP0",qVar"state")))),
4504          Apply
4505            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
4506          Let(TP[Var("v",F64),qVar"s"],
4507              CS(Var("fs",FTy 5),
4508                 [(LW(0,5),
4509                   TP[Mop(SE F64,
4510                          Call
4511                            ("reg'FIR",F32,
4512                             Dest("fir",CTy"FIR",qVar"state"))),
4513                      qVar"state"]),
4514                  (LW(25,5),
4515                   TP[Mop(Cast F64,
4516                          Dest
4517                            ("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state"))),
4518                      qVar"state"]),
4519                  (LW(31,5),
4520                   TP[Mop(SE F64,
4521                          Call
4522                            ("reg'FCSR",F32,
4523                             Dest("fcsr",CTy"FCSR",qVar"state"))),
4524                      qVar"state"]),
4525                  (AVar(FTy 5),
4526                   Apply
4527                     (Call
4528                        ("raise'exception",ATy(qTy,PTy(F64,qTy)),
4529                         Call
4530                           ("UNPREDICTABLE",CTy"exception",
4531                            LS
4532                             "Unsupported floating point control register")),
4533                      qVar"state"))]),
4534              Apply
4535                (Call
4536                   ("write'GPR",ATy(qTy,qTy),
4537                    TP[Var("v",F64),Var("rt",FTy 5)]),qVar"s")))))
4538;
4539val dfn'CTC1_def = Def
4540  ("dfn'CTC1",TP[Var("rt",FTy 5),Var("fs",FTy 5)],
4541   Close
4542     (qVar"state",
4543      ITE(Mop(Not,
4544              Dest
4545                ("CU1",bTy,
4546                 Dest
4547                   ("Status",CTy"StatusRegister",
4548                    Dest("CP0",CTy"CP0",qVar"state")))),
4549          Apply
4550            (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
4551          CS(Var("fs",FTy 5),
4552             [(LW(0,5),qVar"state"),
4553              (LW(25,5),
4554               Rupd
4555                 ("fcsr",
4556                  TP[qVar"state",
4557                     Rupd
4558                       ("FCC",
4559                        TP[Dest("fcsr",CTy"FCSR",qVar"state"),
4560                           EX(Apply
4561                                (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
4562                                 qVar"state"),LN 7,LN 0,F8)])])),
4563              (LW(31,5),
4564               Let(qVar"s",
4565                   Rupd
4566                     ("fcsr",
4567                      TP[qVar"state",
4568                         Call
4569                           ("write'reg'FCSR",CTy"FCSR",
4570                            TP[Dest("fcsr",CTy"FCSR",qVar"state"),
4571                               EX(Apply
4572                                    (Call
4573                                       ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
4574                                     qVar"state"),LN 31,LN 0,F32)])]),
4575                   Rupd
4576                     ("fcsr",
4577                      TP[qVar"s",
4578                         Rupd
4579                           ("NAN2008",
4580                            TP[Dest("fcsr",CTy"FCSR",qVar"s"),LT])]))),
4581              (AVar(FTy 5),
4582               Mop(Snd,
4583                   Apply
4584                     (Call
4585                        ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
4586                         Call
4587                           ("UNPREDICTABLE",CTy"exception",
4588                            LS
4589                             "Unsupported floating point control register")),
4590                      qVar"state")))]))))
4591;
4592val dfn'UnknownFPInstruction_def = Def
4593  ("dfn'UnknownFPInstruction",qVar"state",
4594   ITE(Mop(Not,
4595           Dest
4596             ("CU1",bTy,
4597              Dest
4598                ("Status",CTy"StatusRegister",
4599                 Dest("CP0",CTy"CP0",qVar"state")))),
4600       Apply(Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"),
4601       Apply
4602         (Call
4603            ("SignalException",ATy(qTy,qTy),LC("ResI",CTy"ExceptionType")),
4604          qVar"state")))
4605;
4606val dfn'ADDI_def = Def
4607  ("dfn'ADDI",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)],
4608   Close
4609     (qVar"state",
4610      Let(TP[Var("v",F64),qVar"s"],
4611          Let(qVar"s0",
4612              ITE(Call
4613                    ("NotWordValue",bTy,
4614                     Apply
4615                       (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
4616                        qVar"state")),
4617                  Mop(Snd,
4618                      Apply
4619                        (Call
4620                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
4621                            Call
4622                              ("UNPREDICTABLE",CTy"exception",
4623                               LS"ADDI: NotWordValue")),qVar"state")),
4624                  qVar"state"),
4625              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
4626                 qVar"s0"]),
4627          Let(Var("v",FTy 33),
4628              Bop(Add,EX(Var("v",F64),LN 32,LN 0,FTy 33),
4629                  Mop(SE(FTy 33),Var("immediate",F16))),
4630              ITE(Mop(Not,
4631                      EQ(Bop(Bit,Var("v",FTy 33),LN 32),
4632                         Bop(Bit,Var("v",FTy 33),LN 31))),
4633                  Apply
4634                    (Call
4635                       ("SignalException",ATy(qTy,qTy),
4636                        LC("Ov",CTy"ExceptionType")),qVar"s"),
4637                  Apply
4638                    (Call
4639                       ("write'GPR",ATy(qTy,qTy),
4640                        TP[Mop(SE F64,EX(Var("v",FTy 33),LN 31,LN 0,F32)),
4641                           Var("rt",FTy 5)]),qVar"s"))))))
4642;
4643val dfn'ADDIU_def = Def
4644  ("dfn'ADDIU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)],
4645   Close
4646     (qVar"state",
4647      Let(TP[Var("v",F64),qVar"s"],
4648          Let(qVar"s0",
4649              ITE(Call
4650                    ("NotWordValue",bTy,
4651                     Apply
4652                       (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
4653                        qVar"state")),
4654                  Mop(Snd,
4655                      Apply
4656                        (Call
4657                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
4658                            Call
4659                              ("UNPREDICTABLE",CTy"exception",
4660                               LS"ADDIU: NotWordValue")),qVar"state")),
4661                  qVar"state"),
4662              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
4663                 qVar"s0"]),
4664          Apply
4665            (Call
4666               ("write'GPR",ATy(qTy,qTy),
4667                TP[Mop(SE F64,
4668                       Bop(Add,EX(Var("v",F64),LN 31,LN 0,F32),
4669                           Mop(SE F32,Var("immediate",F16)))),
4670                   Var("rt",FTy 5)]),qVar"s"))))
4671;
4672val dfn'DADDI_def = Def
4673  ("dfn'DADDI",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)],
4674   Close
4675     (qVar"state",
4676      Let(Var("v",FTy 65),
4677          Bop(Add,
4678              Mop(SE(FTy 65),
4679                  Apply
4680                    (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")),
4681              Mop(SE(FTy 65),Var("immediate",F16))),
4682          ITE(Mop(Not,
4683                  EQ(Bop(Bit,Var("v",FTy 65),LN 64),
4684                     Bop(Bit,Var("v",FTy 65),LN 63))),
4685              Apply
4686                (Call
4687                   ("SignalException",ATy(qTy,qTy),
4688                    LC("Ov",CTy"ExceptionType")),qVar"state"),
4689              Apply
4690                (Call
4691                   ("write'GPR",ATy(qTy,qTy),
4692                    TP[EX(Var("v",FTy 65),LN 63,LN 0,F64),Var("rt",FTy 5)]),
4693                 qVar"state")))))
4694;
4695val dfn'DADDIU_def = Def
4696  ("dfn'DADDIU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)],
4697   Close
4698     (qVar"state",
4699      Apply
4700        (Call
4701           ("write'GPR",ATy(qTy,qTy),
4702            TP[Bop(Add,
4703                   Apply
4704                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
4705                   Mop(SE F64,Var("immediate",F16))),Var("rt",FTy 5)]),
4706         qVar"state")))
4707;
4708val dfn'SLTI_def = Def
4709  ("dfn'SLTI",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)],
4710   Close
4711     (qVar"state",
4712      Apply
4713        (Call
4714           ("write'GPR",ATy(qTy,qTy),
4715            TP[Mop(Cast F64,
4716                   Bop(Lt,
4717                       Apply
4718                         (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
4719                          qVar"state"),Mop(SE F64,Var("immediate",F16)))),
4720               Var("rt",FTy 5)]),qVar"state")))
4721;
4722val dfn'SLTIU_def = Def
4723  ("dfn'SLTIU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)],
4724   Close
4725     (qVar"state",
4726      Apply
4727        (Call
4728           ("write'GPR",ATy(qTy,qTy),
4729            TP[Mop(Cast F64,
4730                   Bop(Ult,
4731                       Apply
4732                         (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
4733                          qVar"state"),Mop(SE F64,Var("immediate",F16)))),
4734               Var("rt",FTy 5)]),qVar"state")))
4735;
4736val dfn'ANDI_def = Def
4737  ("dfn'ANDI",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)],
4738   Close
4739     (qVar"state",
4740      Apply
4741        (Call
4742           ("write'GPR",ATy(qTy,qTy),
4743            TP[Bop(BAnd,
4744                   Apply
4745                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
4746                   Mop(Cast F64,Var("immediate",F16))),Var("rt",FTy 5)]),
4747         qVar"state")))
4748;
4749val dfn'ORI_def = Def
4750  ("dfn'ORI",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)],
4751   Close
4752     (qVar"state",
4753      Apply
4754        (Call
4755           ("write'GPR",ATy(qTy,qTy),
4756            TP[Bop(BOr,
4757                   Apply
4758                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
4759                   Mop(Cast F64,Var("immediate",F16))),Var("rt",FTy 5)]),
4760         qVar"state")))
4761;
4762val dfn'XORI_def = Def
4763  ("dfn'XORI",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)],
4764   Close
4765     (qVar"state",
4766      Apply
4767        (Call
4768           ("write'GPR",ATy(qTy,qTy),
4769            TP[Bop(BXor,
4770                   Apply
4771                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
4772                   Mop(Cast F64,Var("immediate",F16))),Var("rt",FTy 5)]),
4773         qVar"state")))
4774;
4775val dfn'LUI_def = Def
4776  ("dfn'LUI",TP[Var("rt",FTy 5),Var("immediate",F16)],
4777   Close
4778     (qVar"state",
4779      Apply
4780        (Call
4781           ("write'GPR",ATy(qTy,qTy),
4782            TP[Mop(SE F64,CC[Var("immediate",F16),LW(0,16)]),
4783               Var("rt",FTy 5)]),qVar"state")))
4784;
4785val dfn'ADD_def = Def
4786  ("dfn'ADD",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
4787   Close
4788     (qVar"state",
4789      Let(TP[Var("v",F64),qVar"s"],
4790          Let(qVar"s0",
4791              ITE(Bop(Or,
4792                      Call
4793                        ("NotWordValue",bTy,
4794                         Apply
4795                           (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
4796                            qVar"state")),
4797                      Call
4798                        ("NotWordValue",bTy,
4799                         Apply
4800                           (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
4801                            qVar"state"))),
4802                  Mop(Snd,
4803                      Apply
4804                        (Call
4805                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
4806                            Call
4807                              ("UNPREDICTABLE",CTy"exception",
4808                               LS"ADD: NotWordValue")),qVar"state")),
4809                  qVar"state"),
4810              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
4811                 qVar"s0"]),
4812          Let(Var("v",FTy 33),
4813              Bop(Add,EX(Var("v",F64),LN 32,LN 0,FTy 33),
4814                  EX(Apply
4815                       (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"s"),
4816                     LN 32,LN 0,FTy 33)),
4817              ITE(Mop(Not,
4818                      EQ(Bop(Bit,Var("v",FTy 33),LN 32),
4819                         Bop(Bit,Var("v",FTy 33),LN 31))),
4820                  Apply
4821                    (Call
4822                       ("SignalException",ATy(qTy,qTy),
4823                        LC("Ov",CTy"ExceptionType")),qVar"s"),
4824                  Apply
4825                    (Call
4826                       ("write'GPR",ATy(qTy,qTy),
4827                        TP[Mop(SE F64,EX(Var("v",FTy 33),LN 31,LN 0,F32)),
4828                           Var("rd",FTy 5)]),qVar"s"))))))
4829;
4830val dfn'ADDU_def = Def
4831  ("dfn'ADDU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
4832   Close
4833     (qVar"state",
4834      Let(TP[Var("v",F64),qVar"s"],
4835          Let(qVar"s0",
4836              ITE(Bop(Or,
4837                      Call
4838                        ("NotWordValue",bTy,
4839                         Apply
4840                           (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
4841                            qVar"state")),
4842                      Call
4843                        ("NotWordValue",bTy,
4844                         Apply
4845                           (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
4846                            qVar"state"))),
4847                  Mop(Snd,
4848                      Apply
4849                        (Call
4850                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
4851                            Call
4852                              ("UNPREDICTABLE",CTy"exception",
4853                               LS"ADDU: NotWordValue")),qVar"state")),
4854                  qVar"state"),
4855              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
4856                 qVar"s0"]),
4857          Apply
4858            (Call
4859               ("write'GPR",ATy(qTy,qTy),
4860                TP[Mop(SE F64,
4861                       Bop(Add,EX(Var("v",F64),LN 31,LN 0,F32),
4862                           EX(Apply
4863                                (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
4864                                 qVar"s"),LN 31,LN 0,F32))),
4865                   Var("rd",FTy 5)]),qVar"s"))))
4866;
4867val dfn'SUB_def = Def
4868  ("dfn'SUB",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
4869   Close
4870     (qVar"state",
4871      Let(TP[Var("v",F64),qVar"s"],
4872          Let(qVar"s0",
4873              ITE(Bop(Or,
4874                      Call
4875                        ("NotWordValue",bTy,
4876                         Apply
4877                           (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
4878                            qVar"state")),
4879                      Call
4880                        ("NotWordValue",bTy,
4881                         Apply
4882                           (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
4883                            qVar"state"))),
4884                  Mop(Snd,
4885                      Apply
4886                        (Call
4887                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
4888                            Call
4889                              ("UNPREDICTABLE",CTy"exception",
4890                               LS"SUB: NotWordValue")),qVar"state")),
4891                  qVar"state"),
4892              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
4893                 qVar"s0"]),
4894          Let(Var("v",FTy 33),
4895              Bop(Sub,EX(Var("v",F64),LN 32,LN 0,FTy 33),
4896                  EX(Apply
4897                       (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"s"),
4898                     LN 32,LN 0,FTy 33)),
4899              ITE(Mop(Not,
4900                      EQ(Bop(Bit,Var("v",FTy 33),LN 32),
4901                         Bop(Bit,Var("v",FTy 33),LN 31))),
4902                  Apply
4903                    (Call
4904                       ("SignalException",ATy(qTy,qTy),
4905                        LC("Ov",CTy"ExceptionType")),qVar"s"),
4906                  Apply
4907                    (Call
4908                       ("write'GPR",ATy(qTy,qTy),
4909                        TP[Mop(SE F64,EX(Var("v",FTy 33),LN 31,LN 0,F32)),
4910                           Var("rd",FTy 5)]),qVar"s"))))))
4911;
4912val dfn'SUBU_def = Def
4913  ("dfn'SUBU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
4914   Close
4915     (qVar"state",
4916      Let(TP[Var("v",F64),qVar"s"],
4917          Let(qVar"s0",
4918              ITE(Bop(Or,
4919                      Call
4920                        ("NotWordValue",bTy,
4921                         Apply
4922                           (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
4923                            qVar"state")),
4924                      Call
4925                        ("NotWordValue",bTy,
4926                         Apply
4927                           (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
4928                            qVar"state"))),
4929                  Mop(Snd,
4930                      Apply
4931                        (Call
4932                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
4933                            Call
4934                              ("UNPREDICTABLE",CTy"exception",
4935                               LS"SUBU: NotWordValue")),qVar"state")),
4936                  qVar"state"),
4937              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
4938                 qVar"s0"]),
4939          Apply
4940            (Call
4941               ("write'GPR",ATy(qTy,qTy),
4942                TP[Mop(SE F64,
4943                       Bop(Sub,EX(Var("v",F64),LN 31,LN 0,F32),
4944                           EX(Apply
4945                                (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
4946                                 qVar"s"),LN 31,LN 0,F32))),
4947                   Var("rd",FTy 5)]),qVar"s"))))
4948;
4949val dfn'DADD_def = Def
4950  ("dfn'DADD",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
4951   Close
4952     (qVar"state",
4953      Let(Var("v",FTy 65),
4954          Bop(Add,
4955              Mop(SE(FTy 65),
4956                  Apply
4957                    (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")),
4958              Mop(SE(FTy 65),
4959                  Apply
4960                    (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"))),
4961          ITE(Mop(Not,
4962                  EQ(Bop(Bit,Var("v",FTy 65),LN 64),
4963                     Bop(Bit,Var("v",FTy 65),LN 63))),
4964              Apply
4965                (Call
4966                   ("SignalException",ATy(qTy,qTy),
4967                    LC("Ov",CTy"ExceptionType")),qVar"state"),
4968              Apply
4969                (Call
4970                   ("write'GPR",ATy(qTy,qTy),
4971                    TP[EX(Var("v",FTy 65),LN 63,LN 0,F64),Var("rd",FTy 5)]),
4972                 qVar"state")))))
4973;
4974val dfn'DADDU_def = Def
4975  ("dfn'DADDU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
4976   Close
4977     (qVar"state",
4978      Apply
4979        (Call
4980           ("write'GPR",ATy(qTy,qTy),
4981            TP[Bop(Add,
4982                   Apply
4983                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
4984                   Apply
4985                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
4986               Var("rd",FTy 5)]),qVar"state")))
4987;
4988val dfn'DSUB_def = Def
4989  ("dfn'DSUB",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
4990   Close
4991     (qVar"state",
4992      Let(Var("v",FTy 65),
4993          Bop(Sub,
4994              Mop(SE(FTy 65),
4995                  Apply
4996                    (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")),
4997              Mop(SE(FTy 65),
4998                  Apply
4999                    (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"))),
5000          ITE(Mop(Not,
5001                  EQ(Bop(Bit,Var("v",FTy 65),LN 64),
5002                     Bop(Bit,Var("v",FTy 65),LN 63))),
5003              Apply
5004                (Call
5005                   ("SignalException",ATy(qTy,qTy),
5006                    LC("Ov",CTy"ExceptionType")),qVar"state"),
5007              Apply
5008                (Call
5009                   ("write'GPR",ATy(qTy,qTy),
5010                    TP[EX(Var("v",FTy 65),LN 63,LN 0,F64),Var("rd",FTy 5)]),
5011                 qVar"state")))))
5012;
5013val dfn'DSUBU_def = Def
5014  ("dfn'DSUBU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
5015   Close
5016     (qVar"state",
5017      Apply
5018        (Call
5019           ("write'GPR",ATy(qTy,qTy),
5020            TP[Bop(Sub,
5021                   Apply
5022                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
5023                   Apply
5024                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
5025               Var("rd",FTy 5)]),qVar"state")))
5026;
5027val dfn'SLT_def = Def
5028  ("dfn'SLT",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
5029   Close
5030     (qVar"state",
5031      Apply
5032        (Call
5033           ("write'GPR",ATy(qTy,qTy),
5034            TP[Mop(Cast F64,
5035                   Bop(Lt,
5036                       Apply
5037                         (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
5038                          qVar"state"),
5039                       Apply
5040                         (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
5041                          qVar"state"))),Var("rd",FTy 5)]),qVar"state")))
5042;
5043val dfn'SLTU_def = Def
5044  ("dfn'SLTU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
5045   Close
5046     (qVar"state",
5047      Apply
5048        (Call
5049           ("write'GPR",ATy(qTy,qTy),
5050            TP[Mop(Cast F64,
5051                   Bop(Ult,
5052                       Apply
5053                         (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
5054                          qVar"state"),
5055                       Apply
5056                         (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
5057                          qVar"state"))),Var("rd",FTy 5)]),qVar"state")))
5058;
5059val dfn'AND_def = Def
5060  ("dfn'AND",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
5061   Close
5062     (qVar"state",
5063      Apply
5064        (Call
5065           ("write'GPR",ATy(qTy,qTy),
5066            TP[Bop(BAnd,
5067                   Apply
5068                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
5069                   Apply
5070                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
5071               Var("rd",FTy 5)]),qVar"state")))
5072;
5073val dfn'OR_def = Def
5074  ("dfn'OR",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
5075   Close
5076     (qVar"state",
5077      Apply
5078        (Call
5079           ("write'GPR",ATy(qTy,qTy),
5080            TP[Bop(BOr,
5081                   Apply
5082                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
5083                   Apply
5084                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
5085               Var("rd",FTy 5)]),qVar"state")))
5086;
5087val dfn'XOR_def = Def
5088  ("dfn'XOR",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
5089   Close
5090     (qVar"state",
5091      Apply
5092        (Call
5093           ("write'GPR",ATy(qTy,qTy),
5094            TP[Bop(BXor,
5095                   Apply
5096                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
5097                   Apply
5098                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
5099               Var("rd",FTy 5)]),qVar"state")))
5100;
5101val dfn'NOR_def = Def
5102  ("dfn'NOR",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
5103   Close
5104     (qVar"state",
5105      Apply
5106        (Call
5107           ("write'GPR",ATy(qTy,qTy),
5108            TP[Mop(BNot,
5109                   Bop(BOr,
5110                       Apply
5111                         (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
5112                          qVar"state"),
5113                       Apply
5114                         (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
5115                          qVar"state"))),Var("rd",FTy 5)]),qVar"state")))
5116;
5117val dfn'MOVN_def = Def
5118  ("dfn'MOVN",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
5119   Close
5120     (qVar"state",
5121      ITE(Mop(Not,
5122              EQ(Apply
5123                   (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
5124                 LW(0,64))),
5125          Apply
5126            (Call
5127               ("write'GPR",ATy(qTy,qTy),
5128                TP[Apply
5129                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
5130                   Var("rd",FTy 5)]),qVar"state"),qVar"state")))
5131;
5132val dfn'MOVZ_def = Def
5133  ("dfn'MOVZ",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
5134   Close
5135     (qVar"state",
5136      ITE(EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
5137             LW(0,64)),
5138          Apply
5139            (Call
5140               ("write'GPR",ATy(qTy,qTy),
5141                TP[Apply
5142                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
5143                   Var("rd",FTy 5)]),qVar"state"),qVar"state")))
5144;
5145val dfn'MADD_def = Def
5146  ("dfn'MADD",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
5147   Close
5148     (qVar"state",
5149      Let(TP[Var("v",F64),qVar"s"],
5150          Apply
5151            (Const("HI",ATy(qTy,PTy(F64,qTy))),
5152             ITE(Bop(Or,
5153                     Call
5154                       ("NotWordValue",bTy,
5155                        Apply
5156                          (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
5157                           qVar"state")),
5158                     Call
5159                       ("NotWordValue",bTy,
5160                        Apply
5161                          (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
5162                           qVar"state"))),
5163                 Mop(Snd,
5164                     Apply
5165                       (Call
5166                          ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
5167                           Call
5168                             ("UNPREDICTABLE",CTy"exception",
5169                              LS"MADD: NotWordValue")),qVar"state")),
5170                 qVar"state")),
5171          Let(TP[Var("v",F64),qVar"s"],
5172              Let(TP[Var("v",F64),qVar"s"],
5173                  Let(TP[Var("v0",F64),qVar"s"],
5174                      Apply(Const("LO",ATy(qTy,PTy(F64,qTy))),qVar"s"),
5175                      TP[CC[EX(Var("v",F64),LN 31,LN 0,F32),
5176                            EX(Var("v0",F64),LN 31,LN 0,F32)],qVar"s"]),
5177                  TP[Bop(Add,Var("v",F64),
5178                         Bop(Mul,
5179                             Mop(SE F64,
5180                                 EX(Apply
5181                                      (Call
5182                                         ("GPR",ATy(qTy,F64),
5183                                          Var("rs",FTy 5)),qVar"s"),LN 31,
5184                                    LN 0,F32)),
5185                             Mop(SE F64,
5186                                 EX(Apply
5187                                      (Call
5188                                         ("GPR",ATy(qTy,F64),
5189                                          Var("rt",FTy 5)),qVar"s"),LN 31,
5190                                    LN 0,F32)))),qVar"s"]),
5191              Apply
5192                (Call
5193                   ("write'LO",ATy(qTy,qTy),
5194                    Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32))),
5195                 Apply
5196                   (Call
5197                      ("write'HI",ATy(qTy,qTy),
5198                       Mop(SE F64,EX(Var("v",F64),LN 63,LN 32,F32))),
5199                    qVar"s"))))))
5200;
5201val dfn'MADDU_def = Def
5202  ("dfn'MADDU",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
5203   Close
5204     (qVar"state",
5205      Let(TP[Var("v",F64),qVar"s"],
5206          Apply
5207            (Const("HI",ATy(qTy,PTy(F64,qTy))),
5208             ITE(Bop(Or,
5209                     Call
5210                       ("NotWordValue",bTy,
5211                        Apply
5212                          (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
5213                           qVar"state")),
5214                     Call
5215                       ("NotWordValue",bTy,
5216                        Apply
5217                          (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
5218                           qVar"state"))),
5219                 Mop(Snd,
5220                     Apply
5221                       (Call
5222                          ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
5223                           Call
5224                             ("UNPREDICTABLE",CTy"exception",
5225                              LS"MADDU: NotWordValue")),qVar"state")),
5226                 qVar"state")),
5227          Let(TP[Var("v",F64),qVar"s"],
5228              Let(TP[Var("v",F64),qVar"s"],
5229                  Let(TP[Var("v0",F64),qVar"s"],
5230                      Apply(Const("LO",ATy(qTy,PTy(F64,qTy))),qVar"s"),
5231                      TP[CC[EX(Var("v",F64),LN 31,LN 0,F32),
5232                            EX(Var("v0",F64),LN 31,LN 0,F32)],qVar"s"]),
5233                  TP[Bop(Add,Var("v",F64),
5234                         Bop(Mul,
5235                             Mop(Cast F64,
5236                                 EX(Apply
5237                                      (Call
5238                                         ("GPR",ATy(qTy,F64),
5239                                          Var("rs",FTy 5)),qVar"s"),LN 31,
5240                                    LN 0,F32)),
5241                             Mop(Cast F64,
5242                                 EX(Apply
5243                                      (Call
5244                                         ("GPR",ATy(qTy,F64),
5245                                          Var("rt",FTy 5)),qVar"s"),LN 31,
5246                                    LN 0,F32)))),qVar"s"]),
5247              Apply
5248                (Call
5249                   ("write'LO",ATy(qTy,qTy),
5250                    Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32))),
5251                 Apply
5252                   (Call
5253                      ("write'HI",ATy(qTy,qTy),
5254                       Mop(SE F64,EX(Var("v",F64),LN 63,LN 32,F32))),
5255                    qVar"s"))))))
5256;
5257val dfn'MSUB_def = Def
5258  ("dfn'MSUB",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
5259   Close
5260     (qVar"state",
5261      Let(TP[Var("v",F64),qVar"s"],
5262          Apply
5263            (Const("HI",ATy(qTy,PTy(F64,qTy))),
5264             ITE(Bop(Or,
5265                     Call
5266                       ("NotWordValue",bTy,
5267                        Apply
5268                          (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
5269                           qVar"state")),
5270                     Call
5271                       ("NotWordValue",bTy,
5272                        Apply
5273                          (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
5274                           qVar"state"))),
5275                 Mop(Snd,
5276                     Apply
5277                       (Call
5278                          ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
5279                           Call
5280                             ("UNPREDICTABLE",CTy"exception",
5281                              LS"MSUB: NotWordValue")),qVar"state")),
5282                 qVar"state")),
5283          Let(TP[Var("v",F64),qVar"s"],
5284              Let(TP[Var("v",F64),qVar"s"],
5285                  Let(TP[Var("v0",F64),qVar"s"],
5286                      Apply(Const("LO",ATy(qTy,PTy(F64,qTy))),qVar"s"),
5287                      TP[CC[EX(Var("v",F64),LN 31,LN 0,F32),
5288                            EX(Var("v0",F64),LN 31,LN 0,F32)],qVar"s"]),
5289                  TP[Bop(Sub,Var("v",F64),
5290                         Bop(Mul,
5291                             Mop(SE F64,
5292                                 EX(Apply
5293                                      (Call
5294                                         ("GPR",ATy(qTy,F64),
5295                                          Var("rs",FTy 5)),qVar"s"),LN 31,
5296                                    LN 0,F32)),
5297                             Mop(SE F64,
5298                                 EX(Apply
5299                                      (Call
5300                                         ("GPR",ATy(qTy,F64),
5301                                          Var("rt",FTy 5)),qVar"s"),LN 31,
5302                                    LN 0,F32)))),qVar"s"]),
5303              Apply
5304                (Call
5305                   ("write'LO",ATy(qTy,qTy),
5306                    Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32))),
5307                 Apply
5308                   (Call
5309                      ("write'HI",ATy(qTy,qTy),
5310                       Mop(SE F64,EX(Var("v",F64),LN 63,LN 32,F32))),
5311                    qVar"s"))))))
5312;
5313val dfn'MSUBU_def = Def
5314  ("dfn'MSUBU",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
5315   Close
5316     (qVar"state",
5317      Let(TP[Var("v",F64),qVar"s"],
5318          Apply
5319            (Const("HI",ATy(qTy,PTy(F64,qTy))),
5320             ITE(Bop(Or,
5321                     Call
5322                       ("NotWordValue",bTy,
5323                        Apply
5324                          (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
5325                           qVar"state")),
5326                     Call
5327                       ("NotWordValue",bTy,
5328                        Apply
5329                          (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
5330                           qVar"state"))),
5331                 Mop(Snd,
5332                     Apply
5333                       (Call
5334                          ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
5335                           Call
5336                             ("UNPREDICTABLE",CTy"exception",
5337                              LS"MSUBU: NotWordValue")),qVar"state")),
5338                 qVar"state")),
5339          Let(TP[Var("v",F64),qVar"s"],
5340              Let(TP[Var("v",F64),qVar"s"],
5341                  Let(TP[Var("v0",F64),qVar"s"],
5342                      Apply(Const("LO",ATy(qTy,PTy(F64,qTy))),qVar"s"),
5343                      TP[CC[EX(Var("v",F64),LN 31,LN 0,F32),
5344                            EX(Var("v0",F64),LN 31,LN 0,F32)],qVar"s"]),
5345                  TP[Bop(Sub,Var("v",F64),
5346                         Bop(Mul,
5347                             Mop(Cast F64,
5348                                 EX(Apply
5349                                      (Call
5350                                         ("GPR",ATy(qTy,F64),
5351                                          Var("rs",FTy 5)),qVar"s"),LN 31,
5352                                    LN 0,F32)),
5353                             Mop(Cast F64,
5354                                 EX(Apply
5355                                      (Call
5356                                         ("GPR",ATy(qTy,F64),
5357                                          Var("rt",FTy 5)),qVar"s"),LN 31,
5358                                    LN 0,F32)))),qVar"s"]),
5359              Apply
5360                (Call
5361                   ("write'LO",ATy(qTy,qTy),
5362                    Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32))),
5363                 Apply
5364                   (Call
5365                      ("write'HI",ATy(qTy,qTy),
5366                       Mop(SE F64,EX(Var("v",F64),LN 63,LN 32,F32))),
5367                    qVar"s"))))))
5368;
5369val dfn'MUL_def = Def
5370  ("dfn'MUL",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
5371   Close
5372     (qVar"state",
5373      Let(TP[Var("v",F64),qVar"s"],
5374          Let(qVar"s0",
5375              ITE(Bop(Or,
5376                      Call
5377                        ("NotWordValue",bTy,
5378                         Apply
5379                           (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
5380                            qVar"state")),
5381                      Call
5382                        ("NotWordValue",bTy,
5383                         Apply
5384                           (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
5385                            qVar"state"))),
5386                  Mop(Snd,
5387                      Apply
5388                        (Call
5389                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
5390                            Call
5391                              ("UNPREDICTABLE",CTy"exception",
5392                               LS"MUL: NotWordValue")),qVar"state")),
5393                  qVar"state"),
5394              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
5395                 qVar"s0"]),
5396          Rupd
5397            ("hi",
5398             TP[Rupd
5399                  ("lo",
5400                   TP[Apply
5401                        (Call
5402                           ("write'GPR",ATy(qTy,qTy),
5403                            TP[Mop(SE F64,
5404                                   Bop(Mul,
5405                                       EX(Var("v",F64),LN 31,LN 0,F32),
5406                                       EX(Apply
5407                                            (Call
5408                                               ("GPR",ATy(qTy,F64),
5409                                                Var("rt",FTy 5)),qVar"s"),
5410                                          LN 31,LN 0,F32))),
5411                               Var("rd",FTy 5)]),qVar"s"),LO F64]),LO F64]))))
5412;
5413val dfn'MULT_def = Def
5414  ("dfn'MULT",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
5415   Close
5416     (qVar"state",
5417      Let(TP[Var("v",F64),qVar"s"],
5418          Let(qVar"s0",
5419              ITE(Bop(Or,
5420                      Call
5421                        ("NotWordValue",bTy,
5422                         Apply
5423                           (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
5424                            qVar"state")),
5425                      Call
5426                        ("NotWordValue",bTy,
5427                         Apply
5428                           (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
5429                            qVar"state"))),
5430                  Mop(Snd,
5431                      Apply
5432                        (Call
5433                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
5434                            Call
5435                              ("UNPREDICTABLE",CTy"exception",
5436                               LS"MULT: NotWordValue")),qVar"state")),
5437                  qVar"state"),
5438              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
5439                 qVar"s0"]),
5440          Let(Var("v",F64),
5441              Bop(Mul,Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32)),
5442                  Mop(SE F64,
5443                      EX(Apply
5444                           (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
5445                            qVar"s"),LN 31,LN 0,F32))),
5446              Apply
5447                (Call
5448                   ("write'HI",ATy(qTy,qTy),
5449                    Mop(SE F64,EX(Var("v",F64),LN 63,LN 32,F32))),
5450                 Apply
5451                   (Call
5452                      ("write'LO",ATy(qTy,qTy),
5453                       Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32))),
5454                    qVar"s"))))))
5455;
5456val dfn'MULTU_def = Def
5457  ("dfn'MULTU",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
5458   Close
5459     (qVar"state",
5460      Let(TP[Var("v",F64),qVar"s"],
5461          Let(qVar"s0",
5462              ITE(Bop(Or,
5463                      Call
5464                        ("NotWordValue",bTy,
5465                         Apply
5466                           (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
5467                            qVar"state")),
5468                      Call
5469                        ("NotWordValue",bTy,
5470                         Apply
5471                           (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
5472                            qVar"state"))),
5473                  Mop(Snd,
5474                      Apply
5475                        (Call
5476                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
5477                            Call
5478                              ("UNPREDICTABLE",CTy"exception",
5479                               LS"MULTU: NotWordValue")),qVar"state")),
5480                  qVar"state"),
5481              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
5482                 qVar"s0"]),
5483          Let(Var("v",F64),
5484              Bop(Mul,Mop(Cast F64,EX(Var("v",F64),LN 31,LN 0,F32)),
5485                  Mop(Cast F64,
5486                      EX(Apply
5487                           (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
5488                            qVar"s"),LN 31,LN 0,F32))),
5489              Apply
5490                (Call
5491                   ("write'HI",ATy(qTy,qTy),
5492                    Mop(SE F64,EX(Var("v",F64),LN 63,LN 32,F32))),
5493                 Apply
5494                   (Call
5495                      ("write'LO",ATy(qTy,qTy),
5496                       Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32))),
5497                    qVar"s"))))))
5498;
5499val dfn'DMULT_def = Def
5500  ("dfn'DMULT",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
5501   Close
5502     (qVar"state",
5503      Let(Var("v",FTy 128),
5504          Bop(Mul,
5505              Mop(SE(FTy 128),
5506                  Apply
5507                    (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")),
5508              Mop(SE(FTy 128),
5509                  Apply
5510                    (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"))),
5511          Apply
5512            (Call
5513               ("write'HI",ATy(qTy,qTy),
5514                EX(Var("v",FTy 128),LN 127,LN 64,F64)),
5515             Apply
5516               (Call
5517                  ("write'LO",ATy(qTy,qTy),
5518                   EX(Var("v",FTy 128),LN 63,LN 0,F64)),qVar"state")))))
5519;
5520val dfn'DMULTU_def = Def
5521  ("dfn'DMULTU",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
5522   Close
5523     (qVar"state",
5524      Let(Var("v",FTy 128),
5525          Bop(Mul,
5526              Mop(Cast(FTy 128),
5527                  Apply
5528                    (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")),
5529              Mop(Cast(FTy 128),
5530                  Apply
5531                    (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"))),
5532          Apply
5533            (Call
5534               ("write'HI",ATy(qTy,qTy),
5535                EX(Var("v",FTy 128),LN 127,LN 64,F64)),
5536             Apply
5537               (Call
5538                  ("write'LO",ATy(qTy,qTy),
5539                   EX(Var("v",FTy 128),LN 63,LN 0,F64)),qVar"state")))))
5540;
5541val dfn'DIV_def = Def
5542  ("dfn'DIV",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
5543   Close
5544     (qVar"state",
5545      Let(Var("v",F64),
5546          Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
5547          Let(Var("v0",F64),
5548              Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
5549              Let(qVar"s1",
5550                  ITE(Bop(Or,Call("NotWordValue",bTy,Var("v",F64)),
5551                          Call("NotWordValue",bTy,Var("v0",F64))),
5552                      Mop(Snd,
5553                          Apply
5554                            (Call
5555                               ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
5556                                Call
5557                                  ("UNPREDICTABLE",CTy"exception",
5558                                   LS"DIV: NotWordValue")),qVar"state")),
5559                      qVar"state"),
5560                  ITE(EQ(Var("v0",F64),LW(0,64)),
5561                      Rupd("hi",TP[Rupd("lo",TP[qVar"s1",LO F64]),LO F64]),
5562                      Apply
5563                        (Call
5564                           ("write'HI",ATy(qTy,qTy),
5565                            Mop(SE F64,
5566                                Bop(Rem,EX(Var("v",F64),LN 31,LN 0,F32),
5567                                    EX(Var("v0",F64),LN 31,LN 0,F32)))),
5568                         Apply
5569                           (Call
5570                              ("write'LO",ATy(qTy,qTy),
5571                               Mop(SE F64,
5572                                   Bop(Quot,
5573                                       EX(Var("v",F64),LN 31,LN 0,F32),
5574                                       EX(Var("v0",F64),LN 31,LN 0,F32)))),
5575                            qVar"s1"))))))))
5576;
5577val dfn'DIVU_def = Def
5578  ("dfn'DIVU",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
5579   Close
5580     (qVar"state",
5581      Let(Var("v",F64),
5582          Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
5583          Let(Var("v0",F64),
5584              Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
5585              Let(qVar"s1",
5586                  ITE(Bop(Or,Call("NotWordValue",bTy,Var("v",F64)),
5587                          Call("NotWordValue",bTy,Var("v0",F64))),
5588                      Mop(Snd,
5589                          Apply
5590                            (Call
5591                               ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
5592                                Call
5593                                  ("UNPREDICTABLE",CTy"exception",
5594                                   LS"DIVU: NotWordValue")),qVar"state")),
5595                      qVar"state"),
5596                  ITE(EQ(Var("v0",F64),LW(0,64)),
5597                      Rupd("hi",TP[Rupd("lo",TP[qVar"s1",LO F64]),LO F64]),
5598                      Apply
5599                        (Call
5600                           ("write'HI",ATy(qTy,qTy),
5601                            Mop(SE F64,
5602                                Bop(Mod,EX(Var("v",F64),LN 31,LN 0,F32),
5603                                    EX(Var("v0",F64),LN 31,LN 0,F32)))),
5604                         Apply
5605                           (Call
5606                              ("write'LO",ATy(qTy,qTy),
5607                               Mop(SE F64,
5608                                   Bop(Div,
5609                                       EX(Var("v",F64),LN 31,LN 0,F32),
5610                                       EX(Var("v0",F64),LN 31,LN 0,F32)))),
5611                            qVar"s1"))))))))
5612;
5613val dfn'DDIV_def = Def
5614  ("dfn'DDIV",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
5615   Close
5616     (qVar"state",
5617      Let(Var("v",F64),
5618          Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
5619          ITE(EQ(Var("v",F64),LW(0,64)),
5620              Rupd("hi",TP[Rupd("lo",TP[qVar"state",LO F64]),LO F64]),
5621              Let(Var("v0",F64),
5622                  Apply
5623                    (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
5624                  Apply
5625                    (Call
5626                       ("write'HI",ATy(qTy,qTy),
5627                        Bop(Rem,Var("v0",F64),Var("v",F64))),
5628                     Apply
5629                       (Call
5630                          ("write'LO",ATy(qTy,qTy),
5631                           Bop(Quot,Var("v0",F64),Var("v",F64))),
5632                        qVar"state")))))))
5633;
5634val dfn'DDIVU_def = Def
5635  ("dfn'DDIVU",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
5636   Close
5637     (qVar"state",
5638      Let(Var("v",F64),
5639          Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
5640          ITE(EQ(Var("v",F64),LW(0,64)),
5641              Rupd("hi",TP[Rupd("lo",TP[qVar"state",LO F64]),LO F64]),
5642              Let(Var("v0",F64),
5643                  Apply
5644                    (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
5645                  Apply
5646                    (Call
5647                       ("write'HI",ATy(qTy,qTy),
5648                        Bop(Mod,Var("v0",F64),Var("v",F64))),
5649                     Apply
5650                       (Call
5651                          ("write'LO",ATy(qTy,qTy),
5652                           Bop(Div,Var("v0",F64),Var("v",F64))),
5653                        qVar"state")))))))
5654;
5655val dfn'MFHI_def = Def
5656  ("dfn'MFHI",Var("rd",FTy 5),
5657   Close
5658     (qVar"state",
5659      Let(TP[Var("v",F64),qVar"s"],
5660          Apply(Const("HI",ATy(qTy,PTy(F64,qTy))),qVar"state"),
5661          Apply
5662            (Call
5663               ("write'GPR",ATy(qTy,qTy),TP[Var("v",F64),Var("rd",FTy 5)]),
5664             qVar"s"))))
5665;
5666val dfn'MFLO_def = Def
5667  ("dfn'MFLO",Var("rd",FTy 5),
5668   Close
5669     (qVar"state",
5670      Let(TP[Var("v",F64),qVar"s"],
5671          Apply(Const("LO",ATy(qTy,PTy(F64,qTy))),qVar"state"),
5672          Apply
5673            (Call
5674               ("write'GPR",ATy(qTy,qTy),TP[Var("v",F64),Var("rd",FTy 5)]),
5675             qVar"s"))))
5676;
5677val dfn'MTHI_def = Def
5678  ("dfn'MTHI",Var("rs",FTy 5),
5679   Close
5680     (qVar"state",
5681      Apply
5682        (Call
5683           ("write'HI",ATy(qTy,qTy),
5684            Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")),
5685         qVar"state")))
5686;
5687val dfn'MTLO_def = Def
5688  ("dfn'MTLO",Var("rs",FTy 5),
5689   Close
5690     (qVar"state",
5691      Apply
5692        (Call
5693           ("write'LO",ATy(qTy,qTy),
5694            Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")),
5695         qVar"state")))
5696;
5697val dfn'SLL_def = Def
5698  ("dfn'SLL",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)],
5699   Close
5700     (qVar"state",
5701      Apply
5702        (Call
5703           ("write'GPR",ATy(qTy,qTy),
5704            TP[Mop(SE F64,
5705                   Bop(Lsl,
5706                       EX(Apply
5707                            (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
5708                             qVar"state"),LN 31,LN 0,F32),
5709                       Mop(Cast nTy,Var("sa",FTy 5)))),Var("rd",FTy 5)]),
5710         qVar"state")))
5711;
5712val dfn'SRL_def = Def
5713  ("dfn'SRL",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)],
5714   Close
5715     (qVar"state",
5716      Let(TP[Var("v",F64),qVar"s"],
5717          Let(qVar"s0",
5718              ITE(Call
5719                    ("NotWordValue",bTy,
5720                     Apply
5721                       (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
5722                        qVar"state")),
5723                  Mop(Snd,
5724                      Apply
5725                        (Call
5726                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
5727                            Call
5728                              ("UNPREDICTABLE",CTy"exception",
5729                               LS"SRL: NotWordValue")),qVar"state")),
5730                  qVar"state"),
5731              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"s0"),
5732                 qVar"s0"]),
5733          Apply
5734            (Call
5735               ("write'GPR",ATy(qTy,qTy),
5736                TP[Mop(SE F64,
5737                       Bop(Lsr,EX(Var("v",F64),LN 31,LN 0,F32),
5738                           Mop(Cast nTy,Var("sa",FTy 5)))),Var("rd",FTy 5)]),
5739             qVar"s"))))
5740;
5741val dfn'SRA_def = Def
5742  ("dfn'SRA",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)],
5743   Close
5744     (qVar"state",
5745      Let(TP[Var("v",F64),qVar"s"],
5746          Let(qVar"s0",
5747              ITE(Call
5748                    ("NotWordValue",bTy,
5749                     Apply
5750                       (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
5751                        qVar"state")),
5752                  Mop(Snd,
5753                      Apply
5754                        (Call
5755                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
5756                            Call
5757                              ("UNPREDICTABLE",CTy"exception",
5758                               LS"SRA: NotWordValue")),qVar"state")),
5759                  qVar"state"),
5760              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"s0"),
5761                 qVar"s0"]),
5762          Apply
5763            (Call
5764               ("write'GPR",ATy(qTy,qTy),
5765                TP[Mop(SE F64,
5766                       Bop(Asr,EX(Var("v",F64),LN 31,LN 0,F32),
5767                           Mop(Cast nTy,Var("sa",FTy 5)))),Var("rd",FTy 5)]),
5768             qVar"s"))))
5769;
5770val dfn'SLLV_def = Def
5771  ("dfn'SLLV",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
5772   Close
5773     (qVar"state",
5774      Apply
5775        (Call
5776           ("write'GPR",ATy(qTy,qTy),
5777            TP[Mop(SE F64,
5778                   Bop(Lsl,
5779                       EX(Apply
5780                            (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
5781                             qVar"state"),LN 31,LN 0,F32),
5782                       Mop(Cast nTy,
5783                           EX(Apply
5784                                (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
5785                                 qVar"state"),LN 4,LN 0,FTy 5)))),
5786               Var("rd",FTy 5)]),qVar"state")))
5787;
5788val dfn'SRLV_def = Def
5789  ("dfn'SRLV",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
5790   Close
5791     (qVar"state",
5792      Let(TP[Var("v",F64),qVar"s"],
5793          Let(qVar"s0",
5794              ITE(Call
5795                    ("NotWordValue",bTy,
5796                     Apply
5797                       (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
5798                        qVar"state")),
5799                  Mop(Snd,
5800                      Apply
5801                        (Call
5802                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
5803                            Call
5804                              ("UNPREDICTABLE",CTy"exception",
5805                               LS"SRLV: NotWordValue")),qVar"state")),
5806                  qVar"state"),
5807              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
5808                 qVar"s0"]),
5809          Apply
5810            (Call
5811               ("write'GPR",ATy(qTy,qTy),
5812                TP[Mop(SE F64,
5813                       Bop(Lsr,
5814                           EX(Apply
5815                                (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
5816                                 qVar"s"),LN 31,LN 0,F32),
5817                           Mop(Cast nTy,EX(Var("v",F64),LN 4,LN 0,FTy 5)))),
5818                   Var("rd",FTy 5)]),qVar"s"))))
5819;
5820val dfn'SRAV_def = Def
5821  ("dfn'SRAV",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
5822   Close
5823     (qVar"state",
5824      Let(TP[Var("v",F64),qVar"s"],
5825          Let(qVar"s0",
5826              ITE(Call
5827                    ("NotWordValue",bTy,
5828                     Apply
5829                       (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
5830                        qVar"state")),
5831                  Mop(Snd,
5832                      Apply
5833                        (Call
5834                           ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
5835                            Call
5836                              ("UNPREDICTABLE",CTy"exception",
5837                               LS"SRAV: NotWordValue")),qVar"state")),
5838                  qVar"state"),
5839              TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"),
5840                 qVar"s0"]),
5841          Apply
5842            (Call
5843               ("write'GPR",ATy(qTy,qTy),
5844                TP[Mop(SE F64,
5845                       Bop(Asr,
5846                           EX(Apply
5847                                (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
5848                                 qVar"s"),LN 31,LN 0,F32),
5849                           Mop(Cast nTy,EX(Var("v",F64),LN 4,LN 0,FTy 5)))),
5850                   Var("rd",FTy 5)]),qVar"s"))))
5851;
5852val dfn'DSLL_def = Def
5853  ("dfn'DSLL",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)],
5854   Close
5855     (qVar"state",
5856      Apply
5857        (Call
5858           ("write'GPR",ATy(qTy,qTy),
5859            TP[Bop(Lsl,
5860                   Apply
5861                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
5862                   Mop(Cast nTy,Var("sa",FTy 5))),Var("rd",FTy 5)]),
5863         qVar"state")))
5864;
5865val dfn'DSRL_def = Def
5866  ("dfn'DSRL",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)],
5867   Close
5868     (qVar"state",
5869      Apply
5870        (Call
5871           ("write'GPR",ATy(qTy,qTy),
5872            TP[Bop(Lsr,
5873                   Apply
5874                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
5875                   Mop(Cast nTy,Var("sa",FTy 5))),Var("rd",FTy 5)]),
5876         qVar"state")))
5877;
5878val dfn'DSRA_def = Def
5879  ("dfn'DSRA",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)],
5880   Close
5881     (qVar"state",
5882      Apply
5883        (Call
5884           ("write'GPR",ATy(qTy,qTy),
5885            TP[Bop(Asr,
5886                   Apply
5887                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
5888                   Mop(Cast nTy,Var("sa",FTy 5))),Var("rd",FTy 5)]),
5889         qVar"state")))
5890;
5891val dfn'DSLLV_def = Def
5892  ("dfn'DSLLV",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
5893   Close
5894     (qVar"state",
5895      Apply
5896        (Call
5897           ("write'GPR",ATy(qTy,qTy),
5898            TP[Bop(Lsl,
5899                   Apply
5900                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
5901                   Mop(Cast nTy,
5902                       EX(Apply
5903                            (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
5904                             qVar"state"),LN 5,LN 0,FTy 6))),
5905               Var("rd",FTy 5)]),qVar"state")))
5906;
5907val dfn'DSRLV_def = Def
5908  ("dfn'DSRLV",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
5909   Close
5910     (qVar"state",
5911      Apply
5912        (Call
5913           ("write'GPR",ATy(qTy,qTy),
5914            TP[Bop(Lsr,
5915                   Apply
5916                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
5917                   Mop(Cast nTy,
5918                       EX(Apply
5919                            (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
5920                             qVar"state"),LN 5,LN 0,FTy 6))),
5921               Var("rd",FTy 5)]),qVar"state")))
5922;
5923val dfn'DSRAV_def = Def
5924  ("dfn'DSRAV",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
5925   Close
5926     (qVar"state",
5927      Apply
5928        (Call
5929           ("write'GPR",ATy(qTy,qTy),
5930            TP[Bop(Asr,
5931                   Apply
5932                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
5933                   Mop(Cast nTy,
5934                       EX(Apply
5935                            (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
5936                             qVar"state"),LN 5,LN 0,FTy 6))),
5937               Var("rd",FTy 5)]),qVar"state")))
5938;
5939val dfn'DSLL32_def = Def
5940  ("dfn'DSLL32",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)],
5941   Close
5942     (qVar"state",
5943      Apply
5944        (Call
5945           ("write'GPR",ATy(qTy,qTy),
5946            TP[Bop(Lsl,
5947                   Apply
5948                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
5949                   Bop(Add,Mop(Cast nTy,Var("sa",FTy 5)),LN 32)),
5950               Var("rd",FTy 5)]),qVar"state")))
5951;
5952val dfn'DSRL32_def = Def
5953  ("dfn'DSRL32",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)],
5954   Close
5955     (qVar"state",
5956      Apply
5957        (Call
5958           ("write'GPR",ATy(qTy,qTy),
5959            TP[Bop(Lsr,
5960                   Apply
5961                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
5962                   Bop(Add,Mop(Cast nTy,Var("sa",FTy 5)),LN 32)),
5963               Var("rd",FTy 5)]),qVar"state")))
5964;
5965val dfn'DSRA32_def = Def
5966  ("dfn'DSRA32",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)],
5967   Close
5968     (qVar"state",
5969      Apply
5970        (Call
5971           ("write'GPR",ATy(qTy,qTy),
5972            TP[Bop(Asr,
5973                   Apply
5974                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
5975                   Bop(Add,Mop(Cast nTy,Var("sa",FTy 5)),LN 32)),
5976               Var("rd",FTy 5)]),qVar"state")))
5977;
5978val dfn'TGE_def = Def
5979  ("dfn'TGE",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
5980   Close
5981     (qVar"state",
5982      ITE(Bop(Ge,
5983              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
5984              Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
5985          Apply
5986            (Call
5987               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
5988             qVar"state"),qVar"state")))
5989;
5990val dfn'TGEU_def = Def
5991  ("dfn'TGEU",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
5992   Close
5993     (qVar"state",
5994      ITE(Bop(Uge,
5995              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
5996              Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
5997          Apply
5998            (Call
5999               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
6000             qVar"state"),qVar"state")))
6001;
6002val dfn'TLT_def = Def
6003  ("dfn'TLT",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
6004   Close
6005     (qVar"state",
6006      ITE(Bop(Lt,
6007              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
6008              Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
6009          Apply
6010            (Call
6011               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
6012             qVar"state"),qVar"state")))
6013;
6014val dfn'TLTU_def = Def
6015  ("dfn'TLTU",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
6016   Close
6017     (qVar"state",
6018      ITE(Bop(Ult,
6019              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
6020              Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
6021          Apply
6022            (Call
6023               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
6024             qVar"state"),qVar"state")))
6025;
6026val dfn'TEQ_def = Def
6027  ("dfn'TEQ",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
6028   Close
6029     (qVar"state",
6030      ITE(EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
6031             Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
6032          Apply
6033            (Call
6034               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
6035             qVar"state"),qVar"state")))
6036;
6037val dfn'TNE_def = Def
6038  ("dfn'TNE",TP[Var("rs",FTy 5),Var("rt",FTy 5)],
6039   Close
6040     (qVar"state",
6041      ITE(Mop(Not,
6042              EQ(Apply
6043                   (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
6044                 Apply
6045                   (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"))),
6046          Apply
6047            (Call
6048               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
6049             qVar"state"),qVar"state")))
6050;
6051val dfn'TGEI_def = Def
6052  ("dfn'TGEI",TP[Var("rs",FTy 5),Var("immediate",F16)],
6053   Close
6054     (qVar"state",
6055      ITE(Bop(Ge,
6056              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
6057              Mop(SE F64,Var("immediate",F16))),
6058          Apply
6059            (Call
6060               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
6061             qVar"state"),qVar"state")))
6062;
6063val dfn'TGEIU_def = Def
6064  ("dfn'TGEIU",TP[Var("rs",FTy 5),Var("immediate",F16)],
6065   Close
6066     (qVar"state",
6067      ITE(Bop(Uge,
6068              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
6069              Mop(SE F64,Var("immediate",F16))),
6070          Apply
6071            (Call
6072               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
6073             qVar"state"),qVar"state")))
6074;
6075val dfn'TLTI_def = Def
6076  ("dfn'TLTI",TP[Var("rs",FTy 5),Var("immediate",F16)],
6077   Close
6078     (qVar"state",
6079      ITE(Bop(Lt,
6080              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
6081              Mop(SE F64,Var("immediate",F16))),
6082          Apply
6083            (Call
6084               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
6085             qVar"state"),qVar"state")))
6086;
6087val dfn'TLTIU_def = Def
6088  ("dfn'TLTIU",TP[Var("rs",FTy 5),Var("immediate",F16)],
6089   Close
6090     (qVar"state",
6091      ITE(Bop(Ult,
6092              Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
6093              Mop(SE F64,Var("immediate",F16))),
6094          Apply
6095            (Call
6096               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
6097             qVar"state"),qVar"state")))
6098;
6099val dfn'TEQI_def = Def
6100  ("dfn'TEQI",TP[Var("rs",FTy 5),Var("immediate",F16)],
6101   Close
6102     (qVar"state",
6103      ITE(EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
6104             Mop(SE F64,Var("immediate",F16))),
6105          Apply
6106            (Call
6107               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
6108             qVar"state"),qVar"state")))
6109;
6110val dfn'TNEI_def = Def
6111  ("dfn'TNEI",TP[Var("rs",FTy 5),Var("immediate",F16)],
6112   Close
6113     (qVar"state",
6114      ITE(Mop(Not,
6115              EQ(Apply
6116                   (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
6117                 Mop(SE F64,Var("immediate",F16)))),
6118          Apply
6119            (Call
6120               ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")),
6121             qVar"state"),qVar"state")))
6122;
6123val dfn'LB_def = Def
6124  ("dfn'LB",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6125   Close
6126     (qVar"state",
6127      Apply
6128        (Call
6129           ("loadByte",ATy(qTy,qTy),
6130            TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LF]),
6131         qVar"state")))
6132;
6133val dfn'LBU_def = Def
6134  ("dfn'LBU",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6135   Close
6136     (qVar"state",
6137      Apply
6138        (Call
6139           ("loadByte",ATy(qTy,qTy),
6140            TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LT]),
6141         qVar"state")))
6142;
6143val dfn'LH_def = Def
6144  ("dfn'LH",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6145   Close
6146     (qVar"state",
6147      Apply
6148        (Call
6149           ("loadHalf",ATy(qTy,qTy),
6150            TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LF]),
6151         qVar"state")))
6152;
6153val dfn'LHU_def = Def
6154  ("dfn'LHU",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6155   Close
6156     (qVar"state",
6157      Apply
6158        (Call
6159           ("loadHalf",ATy(qTy,qTy),
6160            TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LT]),
6161         qVar"state")))
6162;
6163val dfn'LW_def = Def
6164  ("dfn'LW",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6165   Close
6166     (qVar"state",
6167      Apply
6168        (Call
6169           ("loadWord",ATy(qTy,qTy),
6170            TP[LF,Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LF]),
6171         qVar"state")))
6172;
6173val dfn'LWU_def = Def
6174  ("dfn'LWU",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6175   Close
6176     (qVar"state",
6177      Apply
6178        (Call
6179           ("loadWord",ATy(qTy,qTy),
6180            TP[LF,Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LT]),
6181         qVar"state")))
6182;
6183val dfn'LL_def = Def
6184  ("dfn'LL",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6185   Close
6186     (qVar"state",
6187      Apply
6188        (Call
6189           ("loadWord",ATy(qTy,qTy),
6190            TP[LT,Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LF]),
6191         qVar"state")))
6192;
6193val dfn'LD_def = Def
6194  ("dfn'LD",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6195   Close
6196     (qVar"state",
6197      Apply
6198        (Call
6199           ("loadDoubleword",ATy(qTy,qTy),
6200            TP[LF,Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)]),
6201         qVar"state")))
6202;
6203val dfn'LLD_def = Def
6204  ("dfn'LLD",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6205   Close
6206     (qVar"state",
6207      Apply
6208        (Call
6209           ("loadDoubleword",ATy(qTy,qTy),
6210            TP[LT,Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)]),
6211         qVar"state")))
6212;
6213val dfn'LWL_def = Def
6214  ("dfn'LWL",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6215   Close
6216     (qVar"state",
6217      Let(Var("v",F64),
6218          Bop(Add,Mop(SE F64,Var("offset",F16)),
6219              Apply
6220                (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),qVar"state")),
6221          Let(Var("v0",FTy 2),
6222              Bop(BXor,EX(Var("v",F64),LN 1,LN 0,FTy 2),
6223                  REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"),
6224                      LN 2,FTy 2)),
6225              Let(TP[Var("v1",F64),qVar"s"],
6226                  Apply
6227                    (Call
6228                       ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
6229                        TP[Const("WORD",FTy 3),
6230                           CC[LW(0,1),Var("v0",FTy 2)],LF,Var("v",F64),
6231                           Mop(Some,LF)]),qVar"state"),
6232                  ITE(Mop(Not,Dest("exceptionSignalled",bTy,qVar"s")),
6233                      Let(TP[Var("v",F32),qVar"s"],
6234                          CS(TP[Bop(BXor,EX(Var("v",F64),LN 2,LN 2,F1),
6235                                    Apply
6236                                      (Const("BigEndianCPU",ATy(qTy,F1)),
6237                                       qVar"s")),Var("v0",FTy 2)],
6238                             [(TP[LW(0,1),LW(0,2)],
6239                               TP[CC[EX(Var("v1",F64),LN 7,LN 0,F8),
6240                                     EX(Apply
6241                                          (Call
6242                                             ("GPR",ATy(qTy,F64),
6243                                              Var("rt",FTy 5)),qVar"s"),
6244                                        LN 23,LN 0,FTy 24)],qVar"s"]),
6245                              (TP[LW(0,1),LW(1,2)],
6246                               TP[CC[EX(Var("v1",F64),LN 15,LN 0,F16),
6247                                     EX(Apply
6248                                          (Call
6249                                             ("GPR",ATy(qTy,F64),
6250                                              Var("rt",FTy 5)),qVar"s"),
6251                                        LN 15,LN 0,F16)],qVar"s"]),
6252                              (TP[LW(0,1),LW(2,2)],
6253                               TP[CC[EX(Var("v1",F64),LN 23,LN 0,FTy 24),
6254                                     EX(Apply
6255                                          (Call
6256                                             ("GPR",ATy(qTy,F64),
6257                                              Var("rt",FTy 5)),qVar"s"),
6258                                        LN 7,LN 0,F8)],qVar"s"]),
6259                              (TP[LW(0,1),LW(3,2)],
6260                               TP[EX(Var("v1",F64),LN 31,LN 0,F32),qVar"s"]),
6261                              (TP[LW(1,1),LW(0,2)],
6262                               TP[CC[EX(Var("v1",F64),LN 39,LN 32,F8),
6263                                     EX(Apply
6264                                          (Call
6265                                             ("GPR",ATy(qTy,F64),
6266                                              Var("rt",FTy 5)),qVar"s"),
6267                                        LN 23,LN 0,FTy 24)],qVar"s"]),
6268                              (TP[LW(1,1),LW(1,2)],
6269                               TP[CC[EX(Var("v1",F64),LN 47,LN 32,F16),
6270                                     EX(Apply
6271                                          (Call
6272                                             ("GPR",ATy(qTy,F64),
6273                                              Var("rt",FTy 5)),qVar"s"),
6274                                        LN 15,LN 0,F16)],qVar"s"]),
6275                              (TP[LW(1,1),LW(2,2)],
6276                               TP[CC[EX(Var("v1",F64),LN 55,LN 32,FTy 24),
6277                                     EX(Apply
6278                                          (Call
6279                                             ("GPR",ATy(qTy,F64),
6280                                              Var("rt",FTy 5)),qVar"s"),
6281                                        LN 7,LN 0,F8)],qVar"s"]),
6282                              (TP[LW(1,1),LW(3,2)],
6283                               TP[EX(Var("v1",F64),LN 63,LN 32,F32),
6284                                  qVar"s"])]),
6285                          Apply
6286                            (Call
6287                               ("write'GPR",ATy(qTy,qTy),
6288                                TP[Mop(SE F64,Var("v",F32)),
6289                                   Var("rt",FTy 5)]),qVar"s")),qVar"s"))))))
6290;
6291val dfn'LWR_def = Def
6292  ("dfn'LWR",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6293   Close
6294     (qVar"state",
6295      Let(Var("v",F64),
6296          Bop(Add,Mop(SE F64,Var("offset",F16)),
6297              Apply
6298                (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),qVar"state")),
6299          Let(Var("v0",FTy 2),
6300              Bop(BXor,EX(Var("v",F64),LN 1,LN 0,FTy 2),
6301                  REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"),
6302                      LN 2,FTy 2)),
6303              Let(TP[Var("v1",F64),qVar"s"],
6304                  Apply
6305                    (Call
6306                       ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
6307                        TP[Const("WORD",FTy 3),
6308                           Bop(Sub,Const("WORD",FTy 3),
6309                               CC[LW(0,1),Var("v0",FTy 2)]),LF,
6310                           Var("v",F64),Mop(Some,LF)]),qVar"state"),
6311                  ITE(Mop(Not,Dest("exceptionSignalled",bTy,qVar"s")),
6312                      Let(TP[Var("v",F32),qVar"s"],
6313                          CS(TP[Bop(BXor,EX(Var("v",F64),LN 2,LN 2,F1),
6314                                    Apply
6315                                      (Const("BigEndianCPU",ATy(qTy,F1)),
6316                                       qVar"s")),Var("v0",FTy 2)],
6317                             [(TP[LW(0,1),LW(0,2)],
6318                               TP[EX(Var("v1",F64),LN 31,LN 0,F32),qVar"s"]),
6319                              (TP[LW(0,1),LW(1,2)],
6320                               TP[CC[EX(Apply
6321                                          (Call
6322                                             ("GPR",ATy(qTy,F64),
6323                                              Var("rt",FTy 5)),qVar"s"),
6324                                        LN 31,LN 24,F8),
6325                                     EX(Var("v1",F64),LN 31,LN 8,FTy 24)],
6326                                  qVar"s"]),
6327                              (TP[LW(0,1),LW(2,2)],
6328                               TP[CC[EX(Apply
6329                                          (Call
6330                                             ("GPR",ATy(qTy,F64),
6331                                              Var("rt",FTy 5)),qVar"s"),
6332                                        LN 31,LN 16,F16),
6333                                     EX(Var("v1",F64),LN 31,LN 16,F16)],
6334                                  qVar"s"]),
6335                              (TP[LW(0,1),LW(3,2)],
6336                               TP[CC[EX(Apply
6337                                          (Call
6338                                             ("GPR",ATy(qTy,F64),
6339                                              Var("rt",FTy 5)),qVar"s"),
6340                                        LN 31,LN 8,FTy 24),
6341                                     EX(Var("v1",F64),LN 31,LN 24,F8)],
6342                                  qVar"s"]),
6343                              (TP[LW(1,1),LW(0,2)],
6344                               TP[EX(Var("v1",F64),LN 63,LN 32,F32),
6345                                  qVar"s"]),
6346                              (TP[LW(1,1),LW(1,2)],
6347                               TP[CC[EX(Apply
6348                                          (Call
6349                                             ("GPR",ATy(qTy,F64),
6350                                              Var("rt",FTy 5)),qVar"s"),
6351                                        LN 31,LN 24,F8),
6352                                     EX(Var("v1",F64),LN 63,LN 40,FTy 24)],
6353                                  qVar"s"]),
6354                              (TP[LW(1,1),LW(2,2)],
6355                               TP[CC[EX(Apply
6356                                          (Call
6357                                             ("GPR",ATy(qTy,F64),
6358                                              Var("rt",FTy 5)),qVar"s"),
6359                                        LN 31,LN 16,F16),
6360                                     EX(Var("v1",F64),LN 63,LN 48,F16)],
6361                                  qVar"s"]),
6362                              (TP[LW(1,1),LW(3,2)],
6363                               TP[CC[EX(Apply
6364                                          (Call
6365                                             ("GPR",ATy(qTy,F64),
6366                                              Var("rt",FTy 5)),qVar"s"),
6367                                        LN 31,LN 8,FTy 24),
6368                                     EX(Var("v1",F64),LN 63,LN 56,F8)],
6369                                  qVar"s"])]),
6370                          Apply
6371                            (Call
6372                               ("write'GPR",ATy(qTy,qTy),
6373                                TP[Mop(SE F64,Var("v",F32)),
6374                                   Var("rt",FTy 5)]),qVar"s")),qVar"s"))))))
6375;
6376val dfn'LDL_def = Def
6377  ("dfn'LDL",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6378   Close
6379     (qVar"state",
6380      Let(Var("v",F64),
6381          Bop(Add,Mop(SE F64,Var("offset",F16)),
6382              Apply
6383                (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),qVar"state")),
6384          Let(Var("v0",FTy 3),
6385              Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3),
6386                  REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"),
6387                      LN 3,FTy 3)),
6388              Let(TP[Var("v1",F64),qVar"s"],
6389                  Apply
6390                    (Call
6391                       ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
6392                        TP[Const("DOUBLEWORD",FTy 3),Var("v0",FTy 3),LF,
6393                           Var("v",F64),Mop(Some,LF)]),qVar"state"),
6394                  ITE(Mop(Not,Dest("exceptionSignalled",bTy,qVar"s")),
6395                      Let(TP[Var("v",F64),qVar"s"],
6396                          CS(Var("v0",FTy 3),
6397                             [(LW(0,3),
6398                               TP[CC[EX(Var("v1",F64),LN 7,LN 0,F8),
6399                                     EX(Apply
6400                                          (Call
6401                                             ("GPR",ATy(qTy,F64),
6402                                              Var("rt",FTy 5)),qVar"s"),
6403                                        LN 55,LN 0,FTy 56)],qVar"s"]),
6404                              (LW(1,3),
6405                               TP[CC[EX(Var("v1",F64),LN 15,LN 0,F16),
6406                                     EX(Apply
6407                                          (Call
6408                                             ("GPR",ATy(qTy,F64),
6409                                              Var("rt",FTy 5)),qVar"s"),
6410                                        LN 47,LN 0,FTy 48)],qVar"s"]),
6411                              (LW(2,3),
6412                               TP[CC[EX(Var("v1",F64),LN 23,LN 0,FTy 24),
6413                                     EX(Apply
6414                                          (Call
6415                                             ("GPR",ATy(qTy,F64),
6416                                              Var("rt",FTy 5)),qVar"s"),
6417                                        LN 39,LN 0,FTy 40)],qVar"s"]),
6418                              (LW(3,3),
6419                               TP[CC[EX(Var("v1",F64),LN 31,LN 0,F32),
6420                                     EX(Apply
6421                                          (Call
6422                                             ("GPR",ATy(qTy,F64),
6423                                              Var("rt",FTy 5)),qVar"s"),
6424                                        LN 31,LN 0,F32)],qVar"s"]),
6425                              (LW(4,3),
6426                               TP[CC[EX(Var("v1",F64),LN 39,LN 0,FTy 40),
6427                                     EX(Apply
6428                                          (Call
6429                                             ("GPR",ATy(qTy,F64),
6430                                              Var("rt",FTy 5)),qVar"s"),
6431                                        LN 23,LN 0,FTy 24)],qVar"s"]),
6432                              (LW(5,3),
6433                               TP[CC[EX(Var("v1",F64),LN 47,LN 0,FTy 48),
6434                                     EX(Apply
6435                                          (Call
6436                                             ("GPR",ATy(qTy,F64),
6437                                              Var("rt",FTy 5)),qVar"s"),
6438                                        LN 15,LN 0,F16)],qVar"s"]),
6439                              (LW(6,3),
6440                               TP[CC[EX(Var("v1",F64),LN 55,LN 0,FTy 56),
6441                                     EX(Apply
6442                                          (Call
6443                                             ("GPR",ATy(qTy,F64),
6444                                              Var("rt",FTy 5)),qVar"s"),
6445                                        LN 7,LN 0,F8)],qVar"s"]),
6446                              (LW(7,3),
6447                               TP[EX(Var("v1",F64),LN 63,LN 0,F64),qVar"s"])]),
6448                          Apply
6449                            (Call
6450                               ("write'GPR",ATy(qTy,qTy),
6451                                TP[Var("v",F64),Var("rt",FTy 5)]),qVar"s")),
6452                      qVar"s"))))))
6453;
6454val dfn'LDR_def = Def
6455  ("dfn'LDR",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6456   Close
6457     (qVar"state",
6458      Let(Var("v",F64),
6459          Bop(Add,Mop(SE F64,Var("offset",F16)),
6460              Apply
6461                (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),qVar"state")),
6462          Let(Var("v0",FTy 3),
6463              Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3),
6464                  REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"),
6465                      LN 3,FTy 3)),
6466              Let(TP[Var("v1",F64),qVar"s"],
6467                  Apply
6468                    (Call
6469                       ("LoadMemory",ATy(qTy,PTy(F64,qTy)),
6470                        TP[Const("DOUBLEWORD",FTy 3),
6471                           Bop(Sub,Const("DOUBLEWORD",FTy 3),
6472                               Var("v0",FTy 3)),LF,Var("v",F64),
6473                           Mop(Some,LF)]),qVar"state"),
6474                  ITE(Mop(Not,Dest("exceptionSignalled",bTy,qVar"s")),
6475                      Let(TP[Var("v",F64),qVar"s"],
6476                          CS(Var("v0",FTy 3),
6477                             [(LW(0,3),
6478                               TP[EX(Var("v1",F64),LN 63,LN 0,F64),qVar"s"]),
6479                              (LW(1,3),
6480                               TP[CC[EX(Apply
6481                                          (Call
6482                                             ("GPR",ATy(qTy,F64),
6483                                              Var("rt",FTy 5)),qVar"s"),
6484                                        LN 63,LN 56,F8),
6485                                     EX(Var("v1",F64),LN 63,LN 8,FTy 56)],
6486                                  qVar"s"]),
6487                              (LW(2,3),
6488                               TP[CC[EX(Apply
6489                                          (Call
6490                                             ("GPR",ATy(qTy,F64),
6491                                              Var("rt",FTy 5)),qVar"s"),
6492                                        LN 63,LN 48,F16),
6493                                     EX(Var("v1",F64),LN 63,LN 16,FTy 48)],
6494                                  qVar"s"]),
6495                              (LW(3,3),
6496                               TP[CC[EX(Apply
6497                                          (Call
6498                                             ("GPR",ATy(qTy,F64),
6499                                              Var("rt",FTy 5)),qVar"s"),
6500                                        LN 63,LN 40,FTy 24),
6501                                     EX(Var("v1",F64),LN 63,LN 24,FTy 40)],
6502                                  qVar"s"]),
6503                              (LW(4,3),
6504                               TP[CC[EX(Apply
6505                                          (Call
6506                                             ("GPR",ATy(qTy,F64),
6507                                              Var("rt",FTy 5)),qVar"s"),
6508                                        LN 63,LN 32,F32),
6509                                     EX(Var("v1",F64),LN 63,LN 32,F32)],
6510                                  qVar"s"]),
6511                              (LW(5,3),
6512                               TP[CC[EX(Apply
6513                                          (Call
6514                                             ("GPR",ATy(qTy,F64),
6515                                              Var("rt",FTy 5)),qVar"s"),
6516                                        LN 63,LN 24,FTy 40),
6517                                     EX(Var("v1",F64),LN 63,LN 40,FTy 24)],
6518                                  qVar"s"]),
6519                              (LW(6,3),
6520                               TP[CC[EX(Apply
6521                                          (Call
6522                                             ("GPR",ATy(qTy,F64),
6523                                              Var("rt",FTy 5)),qVar"s"),
6524                                        LN 63,LN 16,FTy 48),
6525                                     EX(Var("v1",F64),LN 63,LN 48,F16)],
6526                                  qVar"s"]),
6527                              (LW(7,3),
6528                               TP[CC[EX(Apply
6529                                          (Call
6530                                             ("GPR",ATy(qTy,F64),
6531                                              Var("rt",FTy 5)),qVar"s"),
6532                                        LN 63,LN 8,FTy 56),
6533                                     EX(Var("v1",F64),LN 63,LN 56,F8)],
6534                                  qVar"s"])]),
6535                          Apply
6536                            (Call
6537                               ("write'GPR",ATy(qTy,qTy),
6538                                TP[Var("v",F64),Var("rt",FTy 5)]),qVar"s")),
6539                      qVar"s"))))))
6540;
6541val dfn'SB_def = Def
6542  ("dfn'SB",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6543   Close
6544     (qVar"state",
6545      Let(Var("v",F64),
6546          Bop(Add,Mop(SE F64,Var("offset",F16)),
6547              Apply
6548                (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),qVar"state")),
6549          Mop(Snd,
6550              Apply
6551                (Call
6552                   ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
6553                    TP[Const("BYTE",FTy 3),Const("BYTE",FTy 3),LF,
6554                       Bop(Lsl,
6555                           Apply
6556                             (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
6557                              qVar"state"),
6558                           Bop(Mul,LN 8,
6559                               Mop(Cast nTy,
6560                                   Bop(BXor,
6561                                       EX(Var("v",F64),LN 2,LN 0,FTy 3),
6562                                       REP(Apply
6563                                             (Const
6564                                                ("BigEndianCPU",
6565                                                 ATy(qTy,F1)),qVar"state"),
6566                                           LN 3,FTy 3))))),Var("v",F64),LF]),
6567                 qVar"state")))))
6568;
6569val dfn'SH_def = Def
6570  ("dfn'SH",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6571   Close
6572     (qVar"state",
6573      Let(Var("v",F64),
6574          Bop(Add,Mop(SE F64,Var("offset",F16)),
6575              Apply
6576                (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),qVar"state")),
6577          Mop(Snd,
6578              Apply
6579                (Call
6580                   ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
6581                    TP[Const("HALFWORD",FTy 3),Const("HALFWORD",FTy 3),LT,
6582                       Bop(Lsl,
6583                           Apply
6584                             (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
6585                              qVar"state"),
6586                           Bop(Mul,LN 8,
6587                               Mop(Cast nTy,
6588                                   Bop(BXor,
6589                                       EX(Var("v",F64),LN 2,LN 0,FTy 3),
6590                                       CC[REP(Apply
6591                                                (Const
6592                                                   ("BigEndianCPU",
6593                                                    ATy(qTy,F1)),
6594                                                 qVar"state"),LN 2,FTy 2),
6595                                          LW(0,1)])))),Var("v",F64),LF]),
6596                 qVar"state")))))
6597;
6598val dfn'SW_def = Def
6599  ("dfn'SW",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6600   Close
6601     (qVar"state",
6602      Mop(Snd,
6603          Apply
6604            (Call
6605               ("storeWord",ATy(qTy,PTy(bTy,qTy)),
6606                TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LF]),
6607             qVar"state"))))
6608;
6609val dfn'SD_def = Def
6610  ("dfn'SD",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6611   Close
6612     (qVar"state",
6613      Mop(Snd,
6614          Apply
6615            (Call
6616               ("storeDoubleword",ATy(qTy,PTy(bTy,qTy)),
6617                TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LF]),
6618             qVar"state"))))
6619;
6620val dfn'SC_def = Def
6621  ("dfn'SC",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6622   Close
6623     (qVar"state",
6624      Let(TP[bVar"v",qVar"s"],
6625          Apply
6626            (Call
6627               ("storeWord",ATy(qTy,PTy(bTy,qTy)),
6628                TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LT]),
6629             qVar"state"),
6630          ITE(Mop(Not,Dest("exceptionSignalled",bTy,qVar"s")),
6631              Apply
6632                (Call
6633                   ("write'GPR",ATy(qTy,qTy),
6634                    TP[Mop(Cast F64,bVar"v"),Var("rt",FTy 5)]),qVar"s"),
6635              qVar"s"))))
6636;
6637val dfn'SCD_def = Def
6638  ("dfn'SCD",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6639   Close
6640     (qVar"state",
6641      Let(TP[bVar"v",qVar"s"],
6642          Apply
6643            (Call
6644               ("storeDoubleword",ATy(qTy,PTy(bTy,qTy)),
6645                TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LT]),
6646             qVar"state"),
6647          ITE(Mop(Not,Dest("exceptionSignalled",bTy,qVar"s")),
6648              Apply
6649                (Call
6650                   ("write'GPR",ATy(qTy,qTy),
6651                    TP[Mop(Cast F64,bVar"v"),Var("rt",FTy 5)]),qVar"s"),
6652              qVar"s"))))
6653;
6654val dfn'SWL_def = Def
6655  ("dfn'SWL",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6656   Close
6657     (qVar"state",
6658      Let(Var("v",F64),
6659          Bop(Add,Mop(SE F64,Var("offset",F16)),
6660              Apply
6661                (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),qVar"state")),
6662          Let(Var("v0",FTy 2),
6663              Bop(BXor,EX(Var("v",F64),LN 1,LN 0,FTy 2),
6664                  REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"),
6665                      LN 2,FTy 2)),
6666              Let(TP[Var("v2",F64),qVar"s0"],
6667                  CS(Var("v0",FTy 2),
6668                     [(LW(0,2),
6669                       TP[Mop(Cast F64,
6670                              EX(Apply
6671                                   (Call
6672                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
6673                                    qVar"state"),LN 31,LN 24,F8)),
6674                          qVar"state"]),
6675                      (LW(1,2),
6676                       TP[Mop(Cast F64,
6677                              EX(Apply
6678                                   (Call
6679                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
6680                                    qVar"state"),LN 31,LN 16,F16)),
6681                          qVar"state"]),
6682                      (LW(2,2),
6683                       TP[Mop(Cast F64,
6684                              EX(Apply
6685                                   (Call
6686                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
6687                                    qVar"state"),LN 31,LN 8,FTy 24)),
6688                          qVar"state"]),
6689                      (LW(3,2),
6690                       TP[Mop(Cast F64,
6691                              EX(Apply
6692                                   (Call
6693                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
6694                                    qVar"state"),LN 31,LN 0,F32)),
6695                          qVar"state"])]),
6696                  Mop(Snd,
6697                      Apply
6698                        (Call
6699                           ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
6700                            TP[Const("WORD",FTy 3),
6701                               Mop(Cast(FTy 3),Var("v0",FTy 2)),LF,
6702                               ITE(EQ(Bop(BXor,
6703                                          EX(Var("v",F64),LN 2,LN 2,F1),
6704                                          Apply
6705                                            (Const
6706                                               ("BigEndianCPU",ATy(qTy,F1)),
6707                                             qVar"state")),LW(1,1)),
6708                                   Bop(Lsl,Var("v2",F64),LN 32),
6709                                   Var("v2",F64)),Var("v",F64),LF]),
6710                         qVar"s0")))))))
6711;
6712val dfn'SWR_def = Def
6713  ("dfn'SWR",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6714   Close
6715     (qVar"state",
6716      Let(Var("v",F64),
6717          Bop(Add,Mop(SE F64,Var("offset",F16)),
6718              Apply
6719                (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),qVar"state")),
6720          Let(Var("v0",FTy 2),
6721              Bop(BXor,EX(Var("v",F64),LN 1,LN 0,FTy 2),
6722                  REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"),
6723                      LN 2,FTy 2)),
6724              Let(TP[Var("v1",F64),qVar"s"],
6725                  CS(TP[Bop(BXor,EX(Var("v",F64),LN 2,LN 2,F1),
6726                            Apply
6727                              (Const("BigEndianCPU",ATy(qTy,F1)),
6728                               qVar"state")),Var("v0",FTy 2)],
6729                     [(TP[LW(0,1),LW(0,2)],
6730                       TP[Mop(Cast F64,
6731                              EX(Apply
6732                                   (Call
6733                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
6734                                    qVar"state"),LN 31,LN 0,F32)),
6735                          qVar"state"]),
6736                      (TP[LW(0,1),LW(1,2)],
6737                       TP[Bop(Lsl,
6738                              Mop(Cast F64,
6739                                  EX(Apply
6740                                       (Call
6741                                          ("GPR",ATy(qTy,F64),
6742                                           Var("rt",FTy 5)),qVar"state"),
6743                                     LN 23,LN 0,FTy 24)),LN 8),qVar"state"]),
6744                      (TP[LW(0,1),LW(2,2)],
6745                       TP[Bop(Lsl,
6746                              Mop(Cast F64,
6747                                  EX(Apply
6748                                       (Call
6749                                          ("GPR",ATy(qTy,F64),
6750                                           Var("rt",FTy 5)),qVar"state"),
6751                                     LN 15,LN 0,F16)),LN 16),qVar"state"]),
6752                      (TP[LW(0,1),LW(3,2)],
6753                       TP[Bop(Lsl,
6754                              Mop(Cast F64,
6755                                  EX(Apply
6756                                       (Call
6757                                          ("GPR",ATy(qTy,F64),
6758                                           Var("rt",FTy 5)),qVar"state"),
6759                                     LN 7,LN 0,F8)),LN 24),qVar"state"]),
6760                      (TP[LW(1,1),LW(0,2)],
6761                       TP[Bop(Lsl,
6762                              Mop(Cast F64,
6763                                  EX(Apply
6764                                       (Call
6765                                          ("GPR",ATy(qTy,F64),
6766                                           Var("rt",FTy 5)),qVar"state"),
6767                                     LN 31,LN 0,F32)),LN 32),qVar"state"]),
6768                      (TP[LW(1,1),LW(1,2)],
6769                       TP[Bop(Lsl,
6770                              Mop(Cast F64,
6771                                  EX(Apply
6772                                       (Call
6773                                          ("GPR",ATy(qTy,F64),
6774                                           Var("rt",FTy 5)),qVar"state"),
6775                                     LN 23,LN 0,FTy 24)),LN 40),
6776                          qVar"state"]),
6777                      (TP[LW(1,1),LW(2,2)],
6778                       TP[Bop(Lsl,
6779                              Mop(Cast F64,
6780                                  EX(Apply
6781                                       (Call
6782                                          ("GPR",ATy(qTy,F64),
6783                                           Var("rt",FTy 5)),qVar"state"),
6784                                     LN 15,LN 0,F16)),LN 48),qVar"state"]),
6785                      (TP[LW(1,1),LW(3,2)],
6786                       TP[Bop(Lsl,
6787                              Mop(Cast F64,
6788                                  EX(Apply
6789                                       (Call
6790                                          ("GPR",ATy(qTy,F64),
6791                                           Var("rt",FTy 5)),qVar"state"),
6792                                     LN 7,LN 0,F8)),LN 56),qVar"state"])]),
6793                  Mop(Snd,
6794                      Apply
6795                        (Call
6796                           ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
6797                            TP[Const("WORD",FTy 3),
6798                               Bop(Sub,Const("WORD",FTy 3),
6799                                   Mop(Cast(FTy 3),Var("v0",FTy 2))),LF,
6800                               Var("v1",F64),Var("v",F64),LF]),qVar"s")))))))
6801;
6802val dfn'SDL_def = Def
6803  ("dfn'SDL",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6804   Close
6805     (qVar"state",
6806      Let(Var("v",F64),
6807          Bop(Add,Mop(SE F64,Var("offset",F16)),
6808              Apply
6809                (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),qVar"state")),
6810          Let(Var("v0",FTy 3),
6811              Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3),
6812                  REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"),
6813                      LN 3,FTy 3)),
6814              Let(TP[Var("v1",F64),qVar"s"],
6815                  CS(Var("v0",FTy 3),
6816                     [(LW(0,3),
6817                       TP[Mop(Cast F64,
6818                              EX(Apply
6819                                   (Call
6820                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
6821                                    qVar"state"),LN 63,LN 56,F8)),
6822                          qVar"state"]),
6823                      (LW(1,3),
6824                       TP[Mop(Cast F64,
6825                              EX(Apply
6826                                   (Call
6827                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
6828                                    qVar"state"),LN 63,LN 48,F16)),
6829                          qVar"state"]),
6830                      (LW(2,3),
6831                       TP[Mop(Cast F64,
6832                              EX(Apply
6833                                   (Call
6834                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
6835                                    qVar"state"),LN 63,LN 40,FTy 24)),
6836                          qVar"state"]),
6837                      (LW(3,3),
6838                       TP[Mop(Cast F64,
6839                              EX(Apply
6840                                   (Call
6841                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
6842                                    qVar"state"),LN 63,LN 32,F32)),
6843                          qVar"state"]),
6844                      (LW(4,3),
6845                       TP[Mop(Cast F64,
6846                              EX(Apply
6847                                   (Call
6848                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
6849                                    qVar"state"),LN 63,LN 24,FTy 40)),
6850                          qVar"state"]),
6851                      (LW(5,3),
6852                       TP[Mop(Cast F64,
6853                              EX(Apply
6854                                   (Call
6855                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
6856                                    qVar"state"),LN 63,LN 16,FTy 48)),
6857                          qVar"state"]),
6858                      (LW(6,3),
6859                       TP[Mop(Cast F64,
6860                              EX(Apply
6861                                   (Call
6862                                      ("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
6863                                    qVar"state"),LN 63,LN 8,FTy 56)),
6864                          qVar"state"]),
6865                      (LW(7,3),
6866                       TP[Apply
6867                            (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
6868                             qVar"state"),qVar"state"])]),
6869                  Mop(Snd,
6870                      Apply
6871                        (Call
6872                           ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
6873                            TP[Const("DOUBLEWORD",FTy 3),Var("v0",FTy 3),
6874                               LF,Var("v1",F64),Var("v",F64),LF]),qVar"s")))))))
6875;
6876val dfn'SDR_def = Def
6877  ("dfn'SDR",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
6878   Close
6879     (qVar"state",
6880      Let(Var("v",F64),
6881          Bop(Add,Mop(SE F64,Var("offset",F16)),
6882              Apply
6883                (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)),qVar"state")),
6884          Let(Var("v0",FTy 3),
6885              Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3),
6886                  REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"),
6887                      LN 3,FTy 3)),
6888              Let(TP[Var("v1",F64),qVar"s"],
6889                  CS(Var("v0",FTy 3),
6890                     [(LW(0,3),
6891                       TP[Apply
6892                            (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
6893                             qVar"state"),qVar"state"]),
6894                      (LW(1,3),
6895                       TP[Bop(Lsl,
6896                              Mop(Cast F64,
6897                                  EX(Apply
6898                                       (Call
6899                                          ("GPR",ATy(qTy,F64),
6900                                           Var("rt",FTy 5)),qVar"state"),
6901                                     LN 55,LN 0,FTy 56)),LN 8),qVar"state"]),
6902                      (LW(2,3),
6903                       TP[Bop(Lsl,
6904                              Mop(Cast F64,
6905                                  EX(Apply
6906                                       (Call
6907                                          ("GPR",ATy(qTy,F64),
6908                                           Var("rt",FTy 5)),qVar"state"),
6909                                     LN 47,LN 0,FTy 48)),LN 16),
6910                          qVar"state"]),
6911                      (LW(3,3),
6912                       TP[Bop(Lsl,
6913                              Mop(Cast F64,
6914                                  EX(Apply
6915                                       (Call
6916                                          ("GPR",ATy(qTy,F64),
6917                                           Var("rt",FTy 5)),qVar"state"),
6918                                     LN 39,LN 0,FTy 40)),LN 24),
6919                          qVar"state"]),
6920                      (LW(4,3),
6921                       TP[Bop(Lsl,
6922                              Mop(Cast F64,
6923                                  EX(Apply
6924                                       (Call
6925                                          ("GPR",ATy(qTy,F64),
6926                                           Var("rt",FTy 5)),qVar"state"),
6927                                     LN 31,LN 0,F32)),LN 32),qVar"state"]),
6928                      (LW(5,3),
6929                       TP[Bop(Lsl,
6930                              Mop(Cast F64,
6931                                  EX(Apply
6932                                       (Call
6933                                          ("GPR",ATy(qTy,F64),
6934                                           Var("rt",FTy 5)),qVar"state"),
6935                                     LN 23,LN 0,FTy 24)),LN 40),
6936                          qVar"state"]),
6937                      (LW(6,3),
6938                       TP[Bop(Lsl,
6939                              Mop(Cast F64,
6940                                  EX(Apply
6941                                       (Call
6942                                          ("GPR",ATy(qTy,F64),
6943                                           Var("rt",FTy 5)),qVar"state"),
6944                                     LN 15,LN 0,F16)),LN 48),qVar"state"]),
6945                      (LW(7,3),
6946                       TP[Bop(Lsl,
6947                              Mop(Cast F64,
6948                                  EX(Apply
6949                                       (Call
6950                                          ("GPR",ATy(qTy,F64),
6951                                           Var("rt",FTy 5)),qVar"state"),
6952                                     LN 7,LN 0,F8)),LN 56),qVar"state"])]),
6953                  Mop(Snd,
6954                      Apply
6955                        (Call
6956                           ("StoreMemory",ATy(qTy,PTy(bTy,qTy)),
6957                            TP[Const("DOUBLEWORD",FTy 3),
6958                               Bop(Sub,Const("DOUBLEWORD",FTy 3),
6959                                   Var("v0",FTy 3)),LF,Var("v1",F64),
6960                               Var("v",F64),LF]),qVar"s")))))))
6961;
6962val dfn'SYNC_def = Def ("dfn'SYNC",Var("stype",FTy 5),LU)
6963;
6964val dfn'BREAK_def = Def
6965  ("dfn'BREAK",qVar"state",
6966   Apply
6967     (Call("SignalException",ATy(qTy,qTy),LC("Bp",CTy"ExceptionType")),
6968      qVar"state"))
6969;
6970val dfn'SYSCALL_def = Def
6971  ("dfn'SYSCALL",qVar"state",
6972   Apply
6973     (Call("SignalException",ATy(qTy,qTy),LC("Sys",CTy"ExceptionType")),
6974      qVar"state"))
6975;
6976val dfn'ERET_def = Def
6977  ("dfn'ERET",qVar"state",
6978   ITB([(Mop(IsSome,Dest("BranchDelay",OTy(OTy F64),qVar"state")),
6979         Mop(Snd,
6980             Apply
6981               (Call
6982                  ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
6983                   Call
6984                     ("UNPREDICTABLE",CTy"exception",
6985                      LS"ERET follows branch")),qVar"state"))),
6986        (Bop(Or,
6987             Dest
6988               ("CU0",bTy,
6989                Dest
6990                  ("Status",CTy"StatusRegister",
6991                   Dest("CP0",CTy"CP0",qVar"state"))),
6992             Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state")),
6993         Rupd
6994           ("LLbit",
6995            TP[ITE(Dest
6996                     ("ERL",bTy,
6997                      Dest
6998                        ("Status",CTy"StatusRegister",
6999                         Dest("CP0",CTy"CP0",qVar"state"))),
7000                   Let(qVar"s",
7001                       Rupd
7002                         ("PC",
7003                          TP[qVar"state",
7004                             Bop(Sub,
7005                                 Dest
7006                                   ("ErrorEPC",F64,
7007                                    Dest("CP0",CTy"CP0",qVar"state")),
7008                                 LW(4,64))]),
7009                       Rupd
7010                         ("CP0",
7011                          TP[qVar"s",
7012                             Rupd
7013                               ("Status",
7014                                TP[Dest("CP0",CTy"CP0",qVar"s"),
7015                                   Rupd
7016                                     ("ERL",
7017                                      TP[Dest
7018                                           ("Status",CTy"StatusRegister",
7019                                            Dest("CP0",CTy"CP0",qVar"s")),
7020                                         LF])])])),
7021                   Let(qVar"s",
7022                       Rupd
7023                         ("PC",
7024                          TP[qVar"state",
7025                             Bop(Sub,
7026                                 Dest
7027                                   ("EPC",F64,
7028                                    Dest("CP0",CTy"CP0",qVar"state")),
7029                                 LW(4,64))]),
7030                       Rupd
7031                         ("CP0",
7032                          TP[qVar"s",
7033                             Rupd
7034                               ("Status",
7035                                TP[Dest("CP0",CTy"CP0",qVar"s"),
7036                                   Rupd
7037                                     ("EXL",
7038                                      TP[Dest
7039                                           ("Status",CTy"StatusRegister",
7040                                            Dest("CP0",CTy"CP0",qVar"s")),
7041                                         LF])])]))),Mop(Some,LF)]))],
7042       Apply
7043         (Call
7044            ("SignalException",ATy(qTy,qTy),LC("CpU",CTy"ExceptionType")),
7045          qVar"state")))
7046;
7047val dfn'MTC0_def = Def
7048  ("dfn'MTC0",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)],
7049   Close
7050     (qVar"state",
7051      ITE(Bop(Or,
7052              Dest
7053                ("CU0",bTy,
7054                 Dest
7055                   ("Status",CTy"StatusRegister",
7056                    Dest("CP0",CTy"CP0",qVar"state"))),
7057              Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state")),
7058          Apply
7059            (Call
7060               ("write'CPR",ATy(qTy,qTy),
7061                TP[Apply
7062                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
7063                   LN 0,Var("rd",FTy 5),Var("sel",FTy 3)]),qVar"state"),
7064          Apply
7065            (Call
7066               ("SignalException",ATy(qTy,qTy),
7067                LC("CpU",CTy"ExceptionType")),qVar"state"))))
7068;
7069val dfn'DMTC0_def = Def
7070  ("dfn'DMTC0",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)],
7071   Close
7072     (qVar"state",
7073      ITE(Bop(Or,
7074              Dest
7075                ("CU0",bTy,
7076                 Dest
7077                   ("Status",CTy"StatusRegister",
7078                    Dest("CP0",CTy"CP0",qVar"state"))),
7079              Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state")),
7080          Apply
7081            (Call
7082               ("write'CPR",ATy(qTy,qTy),
7083                TP[Apply
7084                     (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"),
7085                   LN 0,Var("rd",FTy 5),Var("sel",FTy 3)]),qVar"state"),
7086          Apply
7087            (Call
7088               ("SignalException",ATy(qTy,qTy),
7089                LC("CpU",CTy"ExceptionType")),qVar"state"))))
7090;
7091val dfn'MFC0_def = Def
7092  ("dfn'MFC0",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)],
7093   Close
7094     (qVar"state",
7095      ITE(Bop(Or,
7096              Dest
7097                ("CU0",bTy,
7098                 Dest
7099                   ("Status",CTy"StatusRegister",
7100                    Dest("CP0",CTy"CP0",qVar"state"))),
7101              Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state")),
7102          Apply
7103            (Call
7104               ("write'GPR",ATy(qTy,qTy),
7105                TP[Mop(SE F64,
7106                       EX(Apply
7107                            (Call
7108                               ("CPR",ATy(qTy,F64),
7109                                TP[LN 0,Var("rd",FTy 5),Var("sel",FTy 3)]),
7110                             qVar"state"),LN 31,LN 0,F32)),Var("rt",FTy 5)]),
7111             qVar"state"),
7112          Apply
7113            (Call
7114               ("SignalException",ATy(qTy,qTy),
7115                LC("CpU",CTy"ExceptionType")),qVar"state"))))
7116;
7117val dfn'DMFC0_def = Def
7118  ("dfn'DMFC0",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)],
7119   Close
7120     (qVar"state",
7121      ITE(Bop(Or,
7122              Dest
7123                ("CU0",bTy,
7124                 Dest
7125                   ("Status",CTy"StatusRegister",
7126                    Dest("CP0",CTy"CP0",qVar"state"))),
7127              Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state")),
7128          Apply
7129            (Call
7130               ("write'GPR",ATy(qTy,qTy),
7131                TP[Apply
7132                     (Call
7133                        ("CPR",ATy(qTy,F64),
7134                         TP[LN 0,Var("rd",FTy 5),Var("sel",FTy 3)]),
7135                      qVar"state"),Var("rt",FTy 5)]),qVar"state"),
7136          Apply
7137            (Call
7138               ("SignalException",ATy(qTy,qTy),
7139                LC("CpU",CTy"ExceptionType")),qVar"state"))))
7140;
7141val dfn'J_def = Def
7142  ("dfn'J",Var("instr_index",FTy 26),
7143   Close
7144     (qVar"state",
7145      Rupd
7146        ("BranchTo",
7147         TP[qVar"state",
7148            Mop(Some,
7149                TP[LF,
7150                   CC[EX(Dest("PC",F64,qVar"state"),LN 63,LN 28,FTy 36),
7151                      Var("instr_index",FTy 26),LW(0,2)]])])))
7152;
7153val dfn'JAL_def = Def
7154  ("dfn'JAL",Var("instr_index",FTy 26),
7155   Close
7156     (qVar"state",
7157      Let(qVar"s",
7158          Apply
7159            (Call
7160               ("write'GPR",ATy(qTy,qTy),
7161                TP[Bop(Add,Dest("PC",F64,qVar"state"),LW(8,64)),LW(31,5)]),
7162             qVar"state"),
7163          Rupd
7164            ("BranchTo",
7165             TP[qVar"s",
7166                Mop(Some,
7167                    TP[LF,
7168                       CC[EX(Dest("PC",F64,qVar"s"),LN 63,LN 28,FTy 36),
7169                          Var("instr_index",FTy 26),LW(0,2)]])]))))
7170;
7171val dfn'JR_def = Def
7172  ("dfn'JR",Var("rs",FTy 5),
7173   Close
7174     (qVar"state",
7175      Rupd
7176        ("BranchTo",
7177         TP[qVar"state",
7178            Mop(Some,
7179                TP[LF,
7180                   Apply
7181                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")])])))
7182;
7183val dfn'JALR_def = Def
7184  ("dfn'JALR",TP[Var("rs",FTy 5),Var("rd",FTy 5)],
7185   Close
7186     (qVar"state",
7187      Rupd
7188        ("BranchTo",
7189         TP[Apply
7190              (Call
7191                 ("write'GPR",ATy(qTy,qTy),
7192                  TP[Bop(Add,Dest("PC",F64,qVar"state"),LW(8,64)),
7193                     Var("rd",FTy 5)]),qVar"state"),
7194            Mop(Some,
7195                TP[LF,
7196                   Apply
7197                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")])])))
7198;
7199val dfn'BEQ_def = Def
7200  ("dfn'BEQ",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
7201   Close
7202     (qVar"state",
7203      Apply
7204        (Call
7205           ("ConditionalBranch",ATy(qTy,qTy),
7206            TP[EQ(Apply
7207                    (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
7208                  Apply
7209                    (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
7210               Var("offset",F16)]),qVar"state")))
7211;
7212val dfn'BNE_def = Def
7213  ("dfn'BNE",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
7214   Close
7215     (qVar"state",
7216      Apply
7217        (Call
7218           ("ConditionalBranch",ATy(qTy,qTy),
7219            TP[Mop(Not,
7220                   EQ(Apply
7221                        (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
7222                         qVar"state"),
7223                      Apply
7224                        (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
7225                         qVar"state"))),Var("offset",F16)]),qVar"state")))
7226;
7227val dfn'BLEZ_def = Def
7228  ("dfn'BLEZ",TP[Var("rs",FTy 5),Var("offset",F16)],
7229   Close
7230     (qVar"state",
7231      Apply
7232        (Call
7233           ("ConditionalBranch",ATy(qTy,qTy),
7234            TP[Bop(Le,
7235                   Apply
7236                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
7237                   LW(0,64)),Var("offset",F16)]),qVar"state")))
7238;
7239val dfn'BGTZ_def = Def
7240  ("dfn'BGTZ",TP[Var("rs",FTy 5),Var("offset",F16)],
7241   Close
7242     (qVar"state",
7243      Apply
7244        (Call
7245           ("ConditionalBranch",ATy(qTy,qTy),
7246            TP[Bop(Gt,
7247                   Apply
7248                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
7249                   LW(0,64)),Var("offset",F16)]),qVar"state")))
7250;
7251val dfn'BLTZ_def = Def
7252  ("dfn'BLTZ",TP[Var("rs",FTy 5),Var("offset",F16)],
7253   Close
7254     (qVar"state",
7255      Apply
7256        (Call
7257           ("ConditionalBranch",ATy(qTy,qTy),
7258            TP[Bop(Lt,
7259                   Apply
7260                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
7261                   LW(0,64)),Var("offset",F16)]),qVar"state")))
7262;
7263val dfn'BGEZ_def = Def
7264  ("dfn'BGEZ",TP[Var("rs",FTy 5),Var("offset",F16)],
7265   Close
7266     (qVar"state",
7267      Apply
7268        (Call
7269           ("ConditionalBranch",ATy(qTy,qTy),
7270            TP[Bop(Ge,
7271                   Apply
7272                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
7273                   LW(0,64)),Var("offset",F16)]),qVar"state")))
7274;
7275val dfn'BLTZAL_def = Def
7276  ("dfn'BLTZAL",TP[Var("rs",FTy 5),Var("offset",F16)],
7277   Close
7278     (qVar"state",
7279      Apply
7280        (Call
7281           ("ConditionalBranch",ATy(qTy,qTy),
7282            TP[Bop(Lt,
7283                   Apply
7284                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
7285                   LW(0,64)),Var("offset",F16)]),
7286         Apply
7287           (Call
7288              ("write'GPR",ATy(qTy,qTy),
7289               TP[Bop(Add,Dest("PC",F64,qVar"state"),LW(8,64)),LW(31,5)]),
7290            qVar"state"))))
7291;
7292val dfn'BGEZAL_def = Def
7293  ("dfn'BGEZAL",TP[Var("rs",FTy 5),Var("offset",F16)],
7294   Close
7295     (qVar"state",
7296      Apply
7297        (Call
7298           ("ConditionalBranch",ATy(qTy,qTy),
7299            TP[Bop(Ge,
7300                   Apply
7301                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
7302                   LW(0,64)),Var("offset",F16)]),
7303         Apply
7304           (Call
7305              ("write'GPR",ATy(qTy,qTy),
7306               TP[Bop(Add,Dest("PC",F64,qVar"state"),LW(8,64)),LW(31,5)]),
7307            qVar"state"))))
7308;
7309val dfn'BEQL_def = Def
7310  ("dfn'BEQL",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
7311   Close
7312     (qVar"state",
7313      Apply
7314        (Call
7315           ("ConditionalBranchLikely",ATy(qTy,qTy),
7316            TP[EQ(Apply
7317                    (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
7318                  Apply
7319                    (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")),
7320               Var("offset",F16)]),qVar"state")))
7321;
7322val dfn'BNEL_def = Def
7323  ("dfn'BNEL",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("offset",F16)],
7324   Close
7325     (qVar"state",
7326      Apply
7327        (Call
7328           ("ConditionalBranchLikely",ATy(qTy,qTy),
7329            TP[Mop(Not,
7330                   EQ(Apply
7331                        (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),
7332                         qVar"state"),
7333                      Apply
7334                        (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),
7335                         qVar"state"))),Var("offset",F16)]),qVar"state")))
7336;
7337val dfn'BLEZL_def = Def
7338  ("dfn'BLEZL",TP[Var("rs",FTy 5),Var("offset",F16)],
7339   Close
7340     (qVar"state",
7341      Apply
7342        (Call
7343           ("ConditionalBranchLikely",ATy(qTy,qTy),
7344            TP[Bop(Le,
7345                   Apply
7346                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
7347                   LW(0,64)),Var("offset",F16)]),qVar"state")))
7348;
7349val dfn'BGTZL_def = Def
7350  ("dfn'BGTZL",TP[Var("rs",FTy 5),Var("offset",F16)],
7351   Close
7352     (qVar"state",
7353      Apply
7354        (Call
7355           ("ConditionalBranchLikely",ATy(qTy,qTy),
7356            TP[Bop(Gt,
7357                   Apply
7358                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
7359                   LW(0,64)),Var("offset",F16)]),qVar"state")))
7360;
7361val dfn'BLTZL_def = Def
7362  ("dfn'BLTZL",TP[Var("rs",FTy 5),Var("offset",F16)],
7363   Close
7364     (qVar"state",
7365      Apply
7366        (Call
7367           ("ConditionalBranchLikely",ATy(qTy,qTy),
7368            TP[Bop(Lt,
7369                   Apply
7370                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
7371                   LW(0,64)),Var("offset",F16)]),qVar"state")))
7372;
7373val dfn'BGEZL_def = Def
7374  ("dfn'BGEZL",TP[Var("rs",FTy 5),Var("offset",F16)],
7375   Close
7376     (qVar"state",
7377      Apply
7378        (Call
7379           ("ConditionalBranchLikely",ATy(qTy,qTy),
7380            TP[Bop(Ge,
7381                   Apply
7382                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
7383                   LW(0,64)),Var("offset",F16)]),qVar"state")))
7384;
7385val dfn'BLTZALL_def = Def
7386  ("dfn'BLTZALL",TP[Var("rs",FTy 5),Var("offset",F16)],
7387   Close
7388     (qVar"state",
7389      Apply
7390        (Call
7391           ("ConditionalBranchLikely",ATy(qTy,qTy),
7392            TP[Bop(Lt,
7393                   Apply
7394                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
7395                   LW(0,64)),Var("offset",F16)]),
7396         Apply
7397           (Call
7398              ("write'GPR",ATy(qTy,qTy),
7399               TP[Bop(Add,Dest("PC",F64,qVar"state"),LW(8,64)),LW(31,5)]),
7400            qVar"state"))))
7401;
7402val dfn'BGEZALL_def = Def
7403  ("dfn'BGEZALL",TP[Var("rs",FTy 5),Var("offset",F16)],
7404   Close
7405     (qVar"state",
7406      Apply
7407        (Call
7408           ("ConditionalBranchLikely",ATy(qTy,qTy),
7409            TP[Bop(Ge,
7410                   Apply
7411                     (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"),
7412                   LW(0,64)),Var("offset",F16)]),
7413         Apply
7414           (Call
7415              ("write'GPR",ATy(qTy,qTy),
7416               TP[Bop(Add,Dest("PC",F64,qVar"state"),LW(8,64)),LW(31,5)]),
7417            qVar"state"))))
7418;
7419val dfn'WAIT_def = Def0 ("dfn'WAIT",LU)
7420;
7421val dfn'TLBP_def = Def
7422  ("dfn'TLBP",qVar"state",
7423   Apply
7424     (Call("SignalException",ATy(qTy,qTy),LC("ResI",CTy"ExceptionType")),
7425      qVar"state"))
7426;
7427val dfn'TLBR_def = Def
7428  ("dfn'TLBR",qVar"state",
7429   Apply
7430     (Call("SignalException",ATy(qTy,qTy),LC("ResI",CTy"ExceptionType")),
7431      qVar"state"))
7432;
7433val dfn'TLBWI_def = Def
7434  ("dfn'TLBWI",qVar"state",
7435   Apply
7436     (Call("SignalException",ATy(qTy,qTy),LC("ResI",CTy"ExceptionType")),
7437      qVar"state"))
7438;
7439val dfn'TLBWR_def = Def
7440  ("dfn'TLBWR",qVar"state",
7441   Apply
7442     (Call("SignalException",ATy(qTy,qTy),LC("ResI",CTy"ExceptionType")),
7443      qVar"state"))
7444;
7445val dfn'CACHE_def = Def
7446  ("dfn'CACHE",TP[Var("base",FTy 5),Var("opn",FTy 5),Var("offset",F16)],
7447   Close
7448     (qVar"state",
7449      Apply
7450        (Call
7451           ("SignalException",ATy(qTy,qTy),LC("ResI",CTy"ExceptionType")),
7452         qVar"state")))
7453;
7454val dfn'RDHWR_def = Def
7455  ("dfn'RDHWR",TP[Var("rt",FTy 5),Var("rd",FTy 5)],
7456   Close
7457     (qVar"state",
7458      Apply
7459        (Call
7460           ("SignalException",ATy(qTy,qTy),LC("ResI",CTy"ExceptionType")),
7461         qVar"state")))
7462;
7463val dfn'ReservedInstruction_def = Def
7464  ("dfn'ReservedInstruction",qVar"state",
7465   Apply
7466     (Call("SignalException",ATy(qTy,qTy),LC("ResI",CTy"ExceptionType")),
7467      qVar"state"))
7468;
7469val dfn'Unpredictable_def = Def
7470  ("dfn'Unpredictable",qVar"state",
7471   Mop(Snd,
7472       Apply
7473         (Call
7474            ("raise'exception",ATy(qTy,PTy(uTy,qTy)),
7475             Call
7476               ("UNPREDICTABLE",CTy"exception",
7477                LS"Unpredictable instruction")),qVar"state")))
7478;
7479val Run_def = Def
7480  ("Run",Var("v0",CTy"instruction"),
7481   Close
7482     (qVar"state",
7483      CS(Var("v0",CTy"instruction"),
7484         [(Const("BREAK",CTy"instruction"),
7485           Apply(Const("dfn'BREAK",ATy(qTy,qTy)),qVar"state")),
7486          (Const("ERET",CTy"instruction"),
7487           Apply(Const("dfn'ERET",ATy(qTy,qTy)),qVar"state")),
7488          (Const("ReservedInstruction",CTy"instruction"),
7489           Apply
7490             (Const("dfn'ReservedInstruction",ATy(qTy,qTy)),qVar"state")),
7491          (Const("SYSCALL",CTy"instruction"),
7492           Apply(Const("dfn'SYSCALL",ATy(qTy,qTy)),qVar"state")),
7493          (Const("TLBP",CTy"instruction"),
7494           Apply(Const("dfn'TLBP",ATy(qTy,qTy)),qVar"state")),
7495          (Const("TLBR",CTy"instruction"),
7496           Apply(Const("dfn'TLBR",ATy(qTy,qTy)),qVar"state")),
7497          (Const("TLBWI",CTy"instruction"),
7498           Apply(Const("dfn'TLBWI",ATy(qTy,qTy)),qVar"state")),
7499          (Const("TLBWR",CTy"instruction"),
7500           Apply(Const("dfn'TLBWR",ATy(qTy,qTy)),qVar"state")),
7501          (Const("Unpredictable",CTy"instruction"),
7502           Apply(Const("dfn'Unpredictable",ATy(qTy,qTy)),qVar"state")),
7503          (Const("WAIT",CTy"instruction"),qVar"state"),
7504          (Call
7505             ("CACHE",CTy"instruction",
7506              Var("v204",PTy(FTy 5,PTy(FTy 5,F16)))),
7507           Apply
7508             (Call
7509                ("dfn'CACHE",ATy(qTy,qTy),
7510                 Var("v204",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
7511          (Call("RDHWR",CTy"instruction",Var("v205",PTy(FTy 5,FTy 5))),
7512           Apply
7513             (Call("dfn'RDHWR",ATy(qTy,qTy),Var("v205",PTy(FTy 5,FTy 5))),
7514              qVar"state")),
7515          (Call("SYNC",CTy"instruction",Var("v206",FTy 5)),qVar"state"),
7516          (Call("ArithI",CTy"instruction",Var("v1",CTy"ArithI")),
7517           CS(Var("v1",CTy"ArithI"),
7518              [(Call
7519                  ("ADDI",CTy"ArithI",Var("v2",PTy(FTy 5,PTy(FTy 5,F16)))),
7520                Apply
7521                  (Call
7522                     ("dfn'ADDI",ATy(qTy,qTy),
7523                      Var("v2",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
7524               (Call
7525                  ("ADDIU",CTy"ArithI",Var("v3",PTy(FTy 5,PTy(FTy 5,F16)))),
7526                Apply
7527                  (Call
7528                     ("dfn'ADDIU",ATy(qTy,qTy),
7529                      Var("v3",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
7530               (Call
7531                  ("ANDI",CTy"ArithI",Var("v4",PTy(FTy 5,PTy(FTy 5,F16)))),
7532                Apply
7533                  (Call
7534                     ("dfn'ANDI",ATy(qTy,qTy),
7535                      Var("v4",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
7536               (Call
7537                  ("DADDI",CTy"ArithI",Var("v5",PTy(FTy 5,PTy(FTy 5,F16)))),
7538                Apply
7539                  (Call
7540                     ("dfn'DADDI",ATy(qTy,qTy),
7541                      Var("v5",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
7542               (Call
7543                  ("DADDIU",CTy"ArithI",
7544                   Var("v6",PTy(FTy 5,PTy(FTy 5,F16)))),
7545                Apply
7546                  (Call
7547                     ("dfn'DADDIU",ATy(qTy,qTy),
7548                      Var("v6",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
7549               (Call("LUI",CTy"ArithI",Var("v7",PTy(FTy 5,F16))),
7550                Apply
7551                  (Call("dfn'LUI",ATy(qTy,qTy),Var("v7",PTy(FTy 5,F16))),
7552                   qVar"state")),
7553               (Call
7554                  ("ORI",CTy"ArithI",Var("v8",PTy(FTy 5,PTy(FTy 5,F16)))),
7555                Apply
7556                  (Call
7557                     ("dfn'ORI",ATy(qTy,qTy),
7558                      Var("v8",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
7559               (Call
7560                  ("SLTI",CTy"ArithI",Var("v9",PTy(FTy 5,PTy(FTy 5,F16)))),
7561                Apply
7562                  (Call
7563                     ("dfn'SLTI",ATy(qTy,qTy),
7564                      Var("v9",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
7565               (Call
7566                  ("SLTIU",CTy"ArithI",
7567                   Var("v10",PTy(FTy 5,PTy(FTy 5,F16)))),
7568                Apply
7569                  (Call
7570                     ("dfn'SLTIU",ATy(qTy,qTy),
7571                      Var("v10",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
7572               (Call
7573                  ("XORI",CTy"ArithI",Var("v11",PTy(FTy 5,PTy(FTy 5,F16)))),
7574                Apply
7575                  (Call
7576                     ("dfn'XORI",ATy(qTy,qTy),
7577                      Var("v11",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state"))])),
7578          (Call("ArithR",CTy"instruction",Var("v12",CTy"ArithR")),
7579           CS(Var("v12",CTy"ArithR"),
7580              [(Call
7581                  ("ADD",CTy"ArithR",
7582                   Var("v13",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
7583                Apply
7584                  (Call
7585                     ("dfn'ADD",ATy(qTy,qTy),
7586                      Var("v13",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
7587               (Call
7588                  ("ADDU",CTy"ArithR",
7589                   Var("v14",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
7590                Apply
7591                  (Call
7592                     ("dfn'ADDU",ATy(qTy,qTy),
7593                      Var("v14",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
7594               (Call
7595                  ("AND",CTy"ArithR",
7596                   Var("v15",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
7597                Apply
7598                  (Call
7599                     ("dfn'AND",ATy(qTy,qTy),
7600                      Var("v15",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
7601               (Call
7602                  ("DADD",CTy"ArithR",
7603                   Var("v16",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
7604                Apply
7605                  (Call
7606                     ("dfn'DADD",ATy(qTy,qTy),
7607                      Var("v16",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
7608               (Call
7609                  ("DADDU",CTy"ArithR",
7610                   Var("v17",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
7611                Apply
7612                  (Call
7613                     ("dfn'DADDU",ATy(qTy,qTy),
7614                      Var("v17",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
7615               (Call
7616                  ("DSUB",CTy"ArithR",
7617                   Var("v18",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
7618                Apply
7619                  (Call
7620                     ("dfn'DSUB",ATy(qTy,qTy),
7621                      Var("v18",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
7622               (Call
7623                  ("DSUBU",CTy"ArithR",
7624                   Var("v19",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
7625                Apply
7626                  (Call
7627                     ("dfn'DSUBU",ATy(qTy,qTy),
7628                      Var("v19",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
7629               (Call
7630                  ("MOVN",CTy"ArithR",
7631                   Var("v20",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
7632                Apply
7633                  (Call
7634                     ("dfn'MOVN",ATy(qTy,qTy),
7635                      Var("v20",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
7636               (Call
7637                  ("MOVZ",CTy"ArithR",
7638                   Var("v21",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
7639                Apply
7640                  (Call
7641                     ("dfn'MOVZ",ATy(qTy,qTy),
7642                      Var("v21",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
7643               (Call
7644                  ("NOR",CTy"ArithR",
7645                   Var("v22",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
7646                Apply
7647                  (Call
7648                     ("dfn'NOR",ATy(qTy,qTy),
7649                      Var("v22",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
7650               (Call
7651                  ("OR",CTy"ArithR",Var("v23",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
7652                Apply
7653                  (Call
7654                     ("dfn'OR",ATy(qTy,qTy),
7655                      Var("v23",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
7656               (Call
7657                  ("SLT",CTy"ArithR",
7658                   Var("v24",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
7659                Apply
7660                  (Call
7661                     ("dfn'SLT",ATy(qTy,qTy),
7662                      Var("v24",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
7663               (Call
7664                  ("SLTU",CTy"ArithR",
7665                   Var("v25",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
7666                Apply
7667                  (Call
7668                     ("dfn'SLTU",ATy(qTy,qTy),
7669                      Var("v25",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
7670               (Call
7671                  ("SUB",CTy"ArithR",
7672                   Var("v26",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
7673                Apply
7674                  (Call
7675                     ("dfn'SUB",ATy(qTy,qTy),
7676                      Var("v26",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
7677               (Call
7678                  ("SUBU",CTy"ArithR",
7679                   Var("v27",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
7680                Apply
7681                  (Call
7682                     ("dfn'SUBU",ATy(qTy,qTy),
7683                      Var("v27",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
7684               (Call
7685                  ("XOR",CTy"ArithR",
7686                   Var("v28",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
7687                Apply
7688                  (Call
7689                     ("dfn'XOR",ATy(qTy,qTy),
7690                      Var("v28",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state"))])),
7691          (Call("Branch",CTy"instruction",Var("v29",CTy"Branch")),
7692           CS(Var("v29",CTy"Branch"),
7693              [(Call
7694                  ("BEQ",CTy"Branch",Var("v30",PTy(FTy 5,PTy(FTy 5,F16)))),
7695                Apply
7696                  (Call
7697                     ("dfn'BEQ",ATy(qTy,qTy),
7698                      Var("v30",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
7699               (Call
7700                  ("BEQL",CTy"Branch",Var("v31",PTy(FTy 5,PTy(FTy 5,F16)))),
7701                Apply
7702                  (Call
7703                     ("dfn'BEQL",ATy(qTy,qTy),
7704                      Var("v31",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
7705               (Call("BGEZ",CTy"Branch",Var("v32",PTy(FTy 5,F16))),
7706                Apply
7707                  (Call("dfn'BGEZ",ATy(qTy,qTy),Var("v32",PTy(FTy 5,F16))),
7708                   qVar"state")),
7709               (Call("BGEZAL",CTy"Branch",Var("v33",PTy(FTy 5,F16))),
7710                Apply
7711                  (Call
7712                     ("dfn'BGEZAL",ATy(qTy,qTy),Var("v33",PTy(FTy 5,F16))),
7713                   qVar"state")),
7714               (Call("BGEZALL",CTy"Branch",Var("v34",PTy(FTy 5,F16))),
7715                Apply
7716                  (Call
7717                     ("dfn'BGEZALL",ATy(qTy,qTy),Var("v34",PTy(FTy 5,F16))),
7718                   qVar"state")),
7719               (Call("BGEZL",CTy"Branch",Var("v35",PTy(FTy 5,F16))),
7720                Apply
7721                  (Call
7722                     ("dfn'BGEZL",ATy(qTy,qTy),Var("v35",PTy(FTy 5,F16))),
7723                   qVar"state")),
7724               (Call("BGTZ",CTy"Branch",Var("v36",PTy(FTy 5,F16))),
7725                Apply
7726                  (Call("dfn'BGTZ",ATy(qTy,qTy),Var("v36",PTy(FTy 5,F16))),
7727                   qVar"state")),
7728               (Call("BGTZL",CTy"Branch",Var("v37",PTy(FTy 5,F16))),
7729                Apply
7730                  (Call
7731                     ("dfn'BGTZL",ATy(qTy,qTy),Var("v37",PTy(FTy 5,F16))),
7732                   qVar"state")),
7733               (Call("BLEZ",CTy"Branch",Var("v38",PTy(FTy 5,F16))),
7734                Apply
7735                  (Call("dfn'BLEZ",ATy(qTy,qTy),Var("v38",PTy(FTy 5,F16))),
7736                   qVar"state")),
7737               (Call("BLEZL",CTy"Branch",Var("v39",PTy(FTy 5,F16))),
7738                Apply
7739                  (Call
7740                     ("dfn'BLEZL",ATy(qTy,qTy),Var("v39",PTy(FTy 5,F16))),
7741                   qVar"state")),
7742               (Call("BLTZ",CTy"Branch",Var("v40",PTy(FTy 5,F16))),
7743                Apply
7744                  (Call("dfn'BLTZ",ATy(qTy,qTy),Var("v40",PTy(FTy 5,F16))),
7745                   qVar"state")),
7746               (Call("BLTZAL",CTy"Branch",Var("v41",PTy(FTy 5,F16))),
7747                Apply
7748                  (Call
7749                     ("dfn'BLTZAL",ATy(qTy,qTy),Var("v41",PTy(FTy 5,F16))),
7750                   qVar"state")),
7751               (Call("BLTZALL",CTy"Branch",Var("v42",PTy(FTy 5,F16))),
7752                Apply
7753                  (Call
7754                     ("dfn'BLTZALL",ATy(qTy,qTy),Var("v42",PTy(FTy 5,F16))),
7755                   qVar"state")),
7756               (Call("BLTZL",CTy"Branch",Var("v43",PTy(FTy 5,F16))),
7757                Apply
7758                  (Call
7759                     ("dfn'BLTZL",ATy(qTy,qTy),Var("v43",PTy(FTy 5,F16))),
7760                   qVar"state")),
7761               (Call
7762                  ("BNE",CTy"Branch",Var("v44",PTy(FTy 5,PTy(FTy 5,F16)))),
7763                Apply
7764                  (Call
7765                     ("dfn'BNE",ATy(qTy,qTy),
7766                      Var("v44",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
7767               (Call
7768                  ("BNEL",CTy"Branch",Var("v45",PTy(FTy 5,PTy(FTy 5,F16)))),
7769                Apply
7770                  (Call
7771                     ("dfn'BNEL",ATy(qTy,qTy),
7772                      Var("v45",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
7773               (Call("J",CTy"Branch",Var("v46",FTy 26)),
7774                Apply
7775                  (Call("dfn'J",ATy(qTy,qTy),Var("v46",FTy 26)),
7776                   qVar"state")),
7777               (Call("JAL",CTy"Branch",Var("v47",FTy 26)),
7778                Apply
7779                  (Call("dfn'JAL",ATy(qTy,qTy),Var("v47",FTy 26)),
7780                   qVar"state")),
7781               (Call("JALR",CTy"Branch",Var("v48",PTy(FTy 5,FTy 5))),
7782                Apply
7783                  (Call
7784                     ("dfn'JALR",ATy(qTy,qTy),Var("v48",PTy(FTy 5,FTy 5))),
7785                   qVar"state")),
7786               (Call("JR",CTy"Branch",Var("v49",FTy 5)),
7787                Apply
7788                  (Call("dfn'JR",ATy(qTy,qTy),Var("v49",FTy 5)),
7789                   qVar"state"))])),
7790          (Call("COP1",CTy"instruction",Var("v50",CTy"COP1")),
7791           CS(Var("v50",CTy"COP1"),
7792              [(Const("UnknownFPInstruction",CTy"COP1"),
7793                Apply
7794                  (Const("dfn'UnknownFPInstruction",ATy(qTy,qTy)),
7795                   qVar"state")),
7796               (Call("ABS_D",CTy"COP1",Var("v51",PTy(FTy 5,FTy 5))),
7797                Apply
7798                  (Call
7799                     ("dfn'ABS_D",ATy(qTy,qTy),Var("v51",PTy(FTy 5,FTy 5))),
7800                   qVar"state")),
7801               (Call("ABS_S",CTy"COP1",Var("v52",PTy(FTy 5,FTy 5))),
7802                Apply
7803                  (Call
7804                     ("dfn'ABS_S",ATy(qTy,qTy),Var("v52",PTy(FTy 5,FTy 5))),
7805                   qVar"state")),
7806               (Call
7807                  ("ADD_D",CTy"COP1",
7808                   Var("v53",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
7809                Apply
7810                  (Call
7811                     ("dfn'ADD_D",ATy(qTy,qTy),
7812                      Var("v53",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
7813               (Call
7814                  ("ADD_S",CTy"COP1",
7815                   Var("v54",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
7816                Apply
7817                  (Call
7818                     ("dfn'ADD_S",ATy(qTy,qTy),
7819                      Var("v54",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
7820               (Call("BC1F",CTy"COP1",Var("v55",PTy(F16,FTy 3))),
7821                Apply
7822                  (Call("dfn'BC1F",ATy(qTy,qTy),Var("v55",PTy(F16,FTy 3))),
7823                   qVar"state")),
7824               (Call("BC1FL",CTy"COP1",Var("v56",PTy(F16,FTy 3))),
7825                Apply
7826                  (Call
7827                     ("dfn'BC1FL",ATy(qTy,qTy),Var("v56",PTy(F16,FTy 3))),
7828                   qVar"state")),
7829               (Call("BC1T",CTy"COP1",Var("v57",PTy(F16,FTy 3))),
7830                Apply
7831                  (Call("dfn'BC1T",ATy(qTy,qTy),Var("v57",PTy(F16,FTy 3))),
7832                   qVar"state")),
7833               (Call("BC1TL",CTy"COP1",Var("v58",PTy(F16,FTy 3))),
7834                Apply
7835                  (Call
7836                     ("dfn'BC1TL",ATy(qTy,qTy),Var("v58",PTy(F16,FTy 3))),
7837                   qVar"state")),
7838               (Call("CEIL_L_D",CTy"COP1",Var("v59",PTy(FTy 5,FTy 5))),
7839                Apply
7840                  (Call
7841                     ("dfn'CEIL_L_D",ATy(qTy,qTy),
7842                      Var("v59",PTy(FTy 5,FTy 5))),qVar"state")),
7843               (Call("CEIL_L_S",CTy"COP1",Var("v60",PTy(FTy 5,FTy 5))),
7844                Apply
7845                  (Call
7846                     ("dfn'CEIL_L_S",ATy(qTy,qTy),
7847                      Var("v60",PTy(FTy 5,FTy 5))),qVar"state")),
7848               (Call("CEIL_W_D",CTy"COP1",Var("v61",PTy(FTy 5,FTy 5))),
7849                Apply
7850                  (Call
7851                     ("dfn'CEIL_W_D",ATy(qTy,qTy),
7852                      Var("v61",PTy(FTy 5,FTy 5))),qVar"state")),
7853               (Call("CEIL_W_S",CTy"COP1",Var("v62",PTy(FTy 5,FTy 5))),
7854                Apply
7855                  (Call
7856                     ("dfn'CEIL_W_S",ATy(qTy,qTy),
7857                      Var("v62",PTy(FTy 5,FTy 5))),qVar"state")),
7858               (Call("CFC1",CTy"COP1",Var("v63",PTy(FTy 5,FTy 5))),
7859                Apply
7860                  (Call
7861                     ("dfn'CFC1",ATy(qTy,qTy),Var("v63",PTy(FTy 5,FTy 5))),
7862                   qVar"state")),
7863               (Call("CTC1",CTy"COP1",Var("v64",PTy(FTy 5,FTy 5))),
7864                Apply
7865                  (Call
7866                     ("dfn'CTC1",ATy(qTy,qTy),Var("v64",PTy(FTy 5,FTy 5))),
7867                   qVar"state")),
7868               (Call("CVT_D_L",CTy"COP1",Var("v65",PTy(FTy 5,FTy 5))),
7869                Apply
7870                  (Call
7871                     ("dfn'CVT_D_L",ATy(qTy,qTy),
7872                      Var("v65",PTy(FTy 5,FTy 5))),qVar"state")),
7873               (Call("CVT_D_S",CTy"COP1",Var("v66",PTy(FTy 5,FTy 5))),
7874                Apply
7875                  (Call
7876                     ("dfn'CVT_D_S",ATy(qTy,qTy),
7877                      Var("v66",PTy(FTy 5,FTy 5))),qVar"state")),
7878               (Call("CVT_D_W",CTy"COP1",Var("v67",PTy(FTy 5,FTy 5))),
7879                Apply
7880                  (Call
7881                     ("dfn'CVT_D_W",ATy(qTy,qTy),
7882                      Var("v67",PTy(FTy 5,FTy 5))),qVar"state")),
7883               (Call("CVT_L_D",CTy"COP1",Var("v68",PTy(FTy 5,FTy 5))),
7884                Apply
7885                  (Call
7886                     ("dfn'CVT_L_D",ATy(qTy,qTy),
7887                      Var("v68",PTy(FTy 5,FTy 5))),qVar"state")),
7888               (Call("CVT_L_S",CTy"COP1",Var("v69",PTy(FTy 5,FTy 5))),
7889                Apply
7890                  (Call
7891                     ("dfn'CVT_L_S",ATy(qTy,qTy),
7892                      Var("v69",PTy(FTy 5,FTy 5))),qVar"state")),
7893               (Call("CVT_S_D",CTy"COP1",Var("v70",PTy(FTy 5,FTy 5))),
7894                Apply
7895                  (Call
7896                     ("dfn'CVT_S_D",ATy(qTy,qTy),
7897                      Var("v70",PTy(FTy 5,FTy 5))),qVar"state")),
7898               (Call("CVT_S_L",CTy"COP1",Var("v71",PTy(FTy 5,FTy 5))),
7899                Apply
7900                  (Call
7901                     ("dfn'CVT_S_L",ATy(qTy,qTy),
7902                      Var("v71",PTy(FTy 5,FTy 5))),qVar"state")),
7903               (Call("CVT_S_W",CTy"COP1",Var("v72",PTy(FTy 5,FTy 5))),
7904                Apply
7905                  (Call
7906                     ("dfn'CVT_S_W",ATy(qTy,qTy),
7907                      Var("v72",PTy(FTy 5,FTy 5))),qVar"state")),
7908               (Call("CVT_W_D",CTy"COP1",Var("v73",PTy(FTy 5,FTy 5))),
7909                Apply
7910                  (Call
7911                     ("dfn'CVT_W_D",ATy(qTy,qTy),
7912                      Var("v73",PTy(FTy 5,FTy 5))),qVar"state")),
7913               (Call("CVT_W_S",CTy"COP1",Var("v74",PTy(FTy 5,FTy 5))),
7914                Apply
7915                  (Call
7916                     ("dfn'CVT_W_S",ATy(qTy,qTy),
7917                      Var("v74",PTy(FTy 5,FTy 5))),qVar"state")),
7918               (Call
7919                  ("C_cond_D",CTy"COP1",
7920                   Var("v75",PTy(FTy 5,PTy(FTy 5,PTy(FTy 3,FTy 3))))),
7921                Apply
7922                  (Call
7923                     ("dfn'C_cond_D",ATy(qTy,qTy),
7924                      Var("v75",PTy(FTy 5,PTy(FTy 5,PTy(FTy 3,FTy 3))))),
7925                   qVar"state")),
7926               (Call
7927                  ("C_cond_S",CTy"COP1",
7928                   Var("v76",PTy(FTy 5,PTy(FTy 5,PTy(FTy 3,FTy 3))))),
7929                Apply
7930                  (Call
7931                     ("dfn'C_cond_S",ATy(qTy,qTy),
7932                      Var("v76",PTy(FTy 5,PTy(FTy 5,PTy(FTy 3,FTy 3))))),
7933                   qVar"state")),
7934               (Call
7935                  ("DIV_D",CTy"COP1",
7936                   Var("v77",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
7937                Apply
7938                  (Call
7939                     ("dfn'DIV_D",ATy(qTy,qTy),
7940                      Var("v77",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
7941               (Call
7942                  ("DIV_S",CTy"COP1",
7943                   Var("v78",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
7944                Apply
7945                  (Call
7946                     ("dfn'DIV_S",ATy(qTy,qTy),
7947                      Var("v78",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
7948               (Call("DMFC1",CTy"COP1",Var("v79",PTy(FTy 5,FTy 5))),
7949                Apply
7950                  (Call
7951                     ("dfn'DMFC1",ATy(qTy,qTy),Var("v79",PTy(FTy 5,FTy 5))),
7952                   qVar"state")),
7953               (Call("DMTC1",CTy"COP1",Var("v80",PTy(FTy 5,FTy 5))),
7954                Apply
7955                  (Call
7956                     ("dfn'DMTC1",ATy(qTy,qTy),Var("v80",PTy(FTy 5,FTy 5))),
7957                   qVar"state")),
7958               (Call("FLOOR_L_D",CTy"COP1",Var("v81",PTy(FTy 5,FTy 5))),
7959                Apply
7960                  (Call
7961                     ("dfn'FLOOR_L_D",ATy(qTy,qTy),
7962                      Var("v81",PTy(FTy 5,FTy 5))),qVar"state")),
7963               (Call("FLOOR_L_S",CTy"COP1",Var("v82",PTy(FTy 5,FTy 5))),
7964                Apply
7965                  (Call
7966                     ("dfn'FLOOR_L_S",ATy(qTy,qTy),
7967                      Var("v82",PTy(FTy 5,FTy 5))),qVar"state")),
7968               (Call("FLOOR_W_D",CTy"COP1",Var("v83",PTy(FTy 5,FTy 5))),
7969                Apply
7970                  (Call
7971                     ("dfn'FLOOR_W_D",ATy(qTy,qTy),
7972                      Var("v83",PTy(FTy 5,FTy 5))),qVar"state")),
7973               (Call("FLOOR_W_S",CTy"COP1",Var("v84",PTy(FTy 5,FTy 5))),
7974                Apply
7975                  (Call
7976                     ("dfn'FLOOR_W_S",ATy(qTy,qTy),
7977                      Var("v84",PTy(FTy 5,FTy 5))),qVar"state")),
7978               (Call
7979                  ("LDC1",CTy"COP1",Var("v85",PTy(FTy 5,PTy(F16,FTy 5)))),
7980                Apply
7981                  (Call
7982                     ("dfn'LDC1",ATy(qTy,qTy),
7983                      Var("v85",PTy(FTy 5,PTy(F16,FTy 5)))),qVar"state")),
7984               (Call
7985                  ("LDXC1",CTy"COP1",
7986                   Var("v86",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
7987                Apply
7988                  (Call
7989                     ("dfn'LDXC1",ATy(qTy,qTy),
7990                      Var("v86",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
7991               (Call
7992                  ("LWC1",CTy"COP1",Var("v87",PTy(FTy 5,PTy(F16,FTy 5)))),
7993                Apply
7994                  (Call
7995                     ("dfn'LWC1",ATy(qTy,qTy),
7996                      Var("v87",PTy(FTy 5,PTy(F16,FTy 5)))),qVar"state")),
7997               (Call
7998                  ("LWXC1",CTy"COP1",
7999                   Var("v88",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8000                Apply
8001                  (Call
8002                     ("dfn'LWXC1",ATy(qTy,qTy),
8003                      Var("v88",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8004               (Call
8005                  ("MADD_D",CTy"COP1",
8006                   Var("v89",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))),
8007                Apply
8008                  (Call
8009                     ("dfn'MADD_D",ATy(qTy,qTy),
8010                      Var("v89",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))),
8011                   qVar"state")),
8012               (Call
8013                  ("MADD_S",CTy"COP1",
8014                   Var("v90",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))),
8015                Apply
8016                  (Call
8017                     ("dfn'MADD_S",ATy(qTy,qTy),
8018                      Var("v90",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))),
8019                   qVar"state")),
8020               (Call("MFC1",CTy"COP1",Var("v91",PTy(FTy 5,FTy 5))),
8021                Apply
8022                  (Call
8023                     ("dfn'MFC1",ATy(qTy,qTy),Var("v91",PTy(FTy 5,FTy 5))),
8024                   qVar"state")),
8025               (Call
8026                  ("MOVF",CTy"COP1",Var("v92",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
8027                Apply
8028                  (Call
8029                     ("dfn'MOVF",ATy(qTy,qTy),
8030                      Var("v92",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")),
8031               (Call
8032                  ("MOVF_D",CTy"COP1",
8033                   Var("v93",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
8034                Apply
8035                  (Call
8036                     ("dfn'MOVF_D",ATy(qTy,qTy),
8037                      Var("v93",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")),
8038               (Call
8039                  ("MOVF_S",CTy"COP1",
8040                   Var("v94",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
8041                Apply
8042                  (Call
8043                     ("dfn'MOVF_S",ATy(qTy,qTy),
8044                      Var("v94",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")),
8045               (Call
8046                  ("MOVN_D",CTy"COP1",
8047                   Var("v95",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8048                Apply
8049                  (Call
8050                     ("dfn'MOVN_D",ATy(qTy,qTy),
8051                      Var("v95",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8052               (Call
8053                  ("MOVN_S",CTy"COP1",
8054                   Var("v96",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8055                Apply
8056                  (Call
8057                     ("dfn'MOVN_S",ATy(qTy,qTy),
8058                      Var("v96",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8059               (Call
8060                  ("MOVT",CTy"COP1",Var("v97",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
8061                Apply
8062                  (Call
8063                     ("dfn'MOVT",ATy(qTy,qTy),
8064                      Var("v97",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")),
8065               (Call
8066                  ("MOVT_D",CTy"COP1",
8067                   Var("v98",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
8068                Apply
8069                  (Call
8070                     ("dfn'MOVT_D",ATy(qTy,qTy),
8071                      Var("v98",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")),
8072               (Call
8073                  ("MOVT_S",CTy"COP1",
8074                   Var("v99",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
8075                Apply
8076                  (Call
8077                     ("dfn'MOVT_S",ATy(qTy,qTy),
8078                      Var("v99",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")),
8079               (Call
8080                  ("MOVZ_D",CTy"COP1",
8081                   Var("v100",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8082                Apply
8083                  (Call
8084                     ("dfn'MOVZ_D",ATy(qTy,qTy),
8085                      Var("v100",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8086               (Call
8087                  ("MOVZ_S",CTy"COP1",
8088                   Var("v101",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8089                Apply
8090                  (Call
8091                     ("dfn'MOVZ_S",ATy(qTy,qTy),
8092                      Var("v101",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8093               (Call("MOV_D",CTy"COP1",Var("v102",PTy(FTy 5,FTy 5))),
8094                Apply
8095                  (Call
8096                     ("dfn'MOV_D",ATy(qTy,qTy),
8097                      Var("v102",PTy(FTy 5,FTy 5))),qVar"state")),
8098               (Call("MOV_S",CTy"COP1",Var("v103",PTy(FTy 5,FTy 5))),
8099                Apply
8100                  (Call
8101                     ("dfn'MOV_S",ATy(qTy,qTy),
8102                      Var("v103",PTy(FTy 5,FTy 5))),qVar"state")),
8103               (Call
8104                  ("MSUB_D",CTy"COP1",
8105                   Var("v104",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))),
8106                Apply
8107                  (Call
8108                     ("dfn'MSUB_D",ATy(qTy,qTy),
8109                      Var("v104",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))),
8110                   qVar"state")),
8111               (Call
8112                  ("MSUB_S",CTy"COP1",
8113                   Var("v105",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))),
8114                Apply
8115                  (Call
8116                     ("dfn'MSUB_S",ATy(qTy,qTy),
8117                      Var("v105",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))),
8118                   qVar"state")),
8119               (Call("MTC1",CTy"COP1",Var("v106",PTy(FTy 5,FTy 5))),
8120                Apply
8121                  (Call
8122                     ("dfn'MTC1",ATy(qTy,qTy),Var("v106",PTy(FTy 5,FTy 5))),
8123                   qVar"state")),
8124               (Call
8125                  ("MUL_D",CTy"COP1",
8126                   Var("v107",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8127                Apply
8128                  (Call
8129                     ("dfn'MUL_D",ATy(qTy,qTy),
8130                      Var("v107",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8131               (Call
8132                  ("MUL_S",CTy"COP1",
8133                   Var("v108",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8134                Apply
8135                  (Call
8136                     ("dfn'MUL_S",ATy(qTy,qTy),
8137                      Var("v108",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8138               (Call("NEG_D",CTy"COP1",Var("v109",PTy(FTy 5,FTy 5))),
8139                Apply
8140                  (Call
8141                     ("dfn'NEG_D",ATy(qTy,qTy),
8142                      Var("v109",PTy(FTy 5,FTy 5))),qVar"state")),
8143               (Call("NEG_S",CTy"COP1",Var("v110",PTy(FTy 5,FTy 5))),
8144                Apply
8145                  (Call
8146                     ("dfn'NEG_S",ATy(qTy,qTy),
8147                      Var("v110",PTy(FTy 5,FTy 5))),qVar"state")),
8148               (Call("ROUND_L_D",CTy"COP1",Var("v111",PTy(FTy 5,FTy 5))),
8149                Apply
8150                  (Call
8151                     ("dfn'ROUND_L_D",ATy(qTy,qTy),
8152                      Var("v111",PTy(FTy 5,FTy 5))),qVar"state")),
8153               (Call("ROUND_L_S",CTy"COP1",Var("v112",PTy(FTy 5,FTy 5))),
8154                Apply
8155                  (Call
8156                     ("dfn'ROUND_L_S",ATy(qTy,qTy),
8157                      Var("v112",PTy(FTy 5,FTy 5))),qVar"state")),
8158               (Call("ROUND_W_D",CTy"COP1",Var("v113",PTy(FTy 5,FTy 5))),
8159                Apply
8160                  (Call
8161                     ("dfn'ROUND_W_D",ATy(qTy,qTy),
8162                      Var("v113",PTy(FTy 5,FTy 5))),qVar"state")),
8163               (Call("ROUND_W_S",CTy"COP1",Var("v114",PTy(FTy 5,FTy 5))),
8164                Apply
8165                  (Call
8166                     ("dfn'ROUND_W_S",ATy(qTy,qTy),
8167                      Var("v114",PTy(FTy 5,FTy 5))),qVar"state")),
8168               (Call
8169                  ("SDC1",CTy"COP1",Var("v115",PTy(FTy 5,PTy(F16,FTy 5)))),
8170                Apply
8171                  (Call
8172                     ("dfn'SDC1",ATy(qTy,qTy),
8173                      Var("v115",PTy(FTy 5,PTy(F16,FTy 5)))),qVar"state")),
8174               (Call
8175                  ("SDXC1",CTy"COP1",
8176                   Var("v116",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8177                Apply
8178                  (Call
8179                     ("dfn'SDXC1",ATy(qTy,qTy),
8180                      Var("v116",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8181               (Call("SQRT_D",CTy"COP1",Var("v117",PTy(FTy 5,FTy 5))),
8182                Apply
8183                  (Call
8184                     ("dfn'SQRT_D",ATy(qTy,qTy),
8185                      Var("v117",PTy(FTy 5,FTy 5))),qVar"state")),
8186               (Call("SQRT_S",CTy"COP1",Var("v118",PTy(FTy 5,FTy 5))),
8187                Apply
8188                  (Call
8189                     ("dfn'SQRT_S",ATy(qTy,qTy),
8190                      Var("v118",PTy(FTy 5,FTy 5))),qVar"state")),
8191               (Call
8192                  ("SUB_D",CTy"COP1",
8193                   Var("v119",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8194                Apply
8195                  (Call
8196                     ("dfn'SUB_D",ATy(qTy,qTy),
8197                      Var("v119",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8198               (Call
8199                  ("SUB_S",CTy"COP1",
8200                   Var("v120",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8201                Apply
8202                  (Call
8203                     ("dfn'SUB_S",ATy(qTy,qTy),
8204                      Var("v120",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8205               (Call
8206                  ("SWC1",CTy"COP1",Var("v121",PTy(FTy 5,PTy(F16,FTy 5)))),
8207                Apply
8208                  (Call
8209                     ("dfn'SWC1",ATy(qTy,qTy),
8210                      Var("v121",PTy(FTy 5,PTy(F16,FTy 5)))),qVar"state")),
8211               (Call
8212                  ("SWXC1",CTy"COP1",
8213                   Var("v122",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8214                Apply
8215                  (Call
8216                     ("dfn'SWXC1",ATy(qTy,qTy),
8217                      Var("v122",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8218               (Call("TRUNC_L_D",CTy"COP1",Var("v123",PTy(FTy 5,FTy 5))),
8219                Apply
8220                  (Call
8221                     ("dfn'TRUNC_L_D",ATy(qTy,qTy),
8222                      Var("v123",PTy(FTy 5,FTy 5))),qVar"state")),
8223               (Call("TRUNC_L_S",CTy"COP1",Var("v124",PTy(FTy 5,FTy 5))),
8224                Apply
8225                  (Call
8226                     ("dfn'TRUNC_L_S",ATy(qTy,qTy),
8227                      Var("v124",PTy(FTy 5,FTy 5))),qVar"state")),
8228               (Call("TRUNC_W_D",CTy"COP1",Var("v125",PTy(FTy 5,FTy 5))),
8229                Apply
8230                  (Call
8231                     ("dfn'TRUNC_W_D",ATy(qTy,qTy),
8232                      Var("v125",PTy(FTy 5,FTy 5))),qVar"state")),
8233               (Call("TRUNC_W_S",CTy"COP1",Var("v126",PTy(FTy 5,FTy 5))),
8234                Apply
8235                  (Call
8236                     ("dfn'TRUNC_W_S",ATy(qTy,qTy),
8237                      Var("v126",PTy(FTy 5,FTy 5))),qVar"state"))])),
8238          (Call("CP",CTy"instruction",Var("v127",CTy"CP")),
8239           CS(Var("v127",CTy"CP"),
8240              [(Call
8241                  ("DMFC0",CTy"CP",Var("v128",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
8242                Apply
8243                  (Call
8244                     ("dfn'DMFC0",ATy(qTy,qTy),
8245                      Var("v128",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")),
8246               (Call
8247                  ("DMTC0",CTy"CP",Var("v129",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
8248                Apply
8249                  (Call
8250                     ("dfn'DMTC0",ATy(qTy,qTy),
8251                      Var("v129",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")),
8252               (Call
8253                  ("MFC0",CTy"CP",Var("v130",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
8254                Apply
8255                  (Call
8256                     ("dfn'MFC0",ATy(qTy,qTy),
8257                      Var("v130",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")),
8258               (Call
8259                  ("MTC0",CTy"CP",Var("v131",PTy(FTy 5,PTy(FTy 5,FTy 3)))),
8260                Apply
8261                  (Call
8262                     ("dfn'MTC0",ATy(qTy,qTy),
8263                      Var("v131",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state"))])),
8264          (Call("Load",CTy"instruction",Var("v132",CTy"Load")),
8265           CS(Var("v132",CTy"Load"),
8266              [(Call("LB",CTy"Load",Var("v133",PTy(FTy 5,PTy(FTy 5,F16)))),
8267                Apply
8268                  (Call
8269                     ("dfn'LB",ATy(qTy,qTy),
8270                      Var("v133",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
8271               (Call
8272                  ("LBU",CTy"Load",Var("v134",PTy(FTy 5,PTy(FTy 5,F16)))),
8273                Apply
8274                  (Call
8275                     ("dfn'LBU",ATy(qTy,qTy),
8276                      Var("v134",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
8277               (Call("LD",CTy"Load",Var("v135",PTy(FTy 5,PTy(FTy 5,F16)))),
8278                Apply
8279                  (Call
8280                     ("dfn'LD",ATy(qTy,qTy),
8281                      Var("v135",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
8282               (Call
8283                  ("LDL",CTy"Load",Var("v136",PTy(FTy 5,PTy(FTy 5,F16)))),
8284                Apply
8285                  (Call
8286                     ("dfn'LDL",ATy(qTy,qTy),
8287                      Var("v136",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
8288               (Call
8289                  ("LDR",CTy"Load",Var("v137",PTy(FTy 5,PTy(FTy 5,F16)))),
8290                Apply
8291                  (Call
8292                     ("dfn'LDR",ATy(qTy,qTy),
8293                      Var("v137",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
8294               (Call("LH",CTy"Load",Var("v138",PTy(FTy 5,PTy(FTy 5,F16)))),
8295                Apply
8296                  (Call
8297                     ("dfn'LH",ATy(qTy,qTy),
8298                      Var("v138",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
8299               (Call
8300                  ("LHU",CTy"Load",Var("v139",PTy(FTy 5,PTy(FTy 5,F16)))),
8301                Apply
8302                  (Call
8303                     ("dfn'LHU",ATy(qTy,qTy),
8304                      Var("v139",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
8305               (Call("LL",CTy"Load",Var("v140",PTy(FTy 5,PTy(FTy 5,F16)))),
8306                Apply
8307                  (Call
8308                     ("dfn'LL",ATy(qTy,qTy),
8309                      Var("v140",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
8310               (Call
8311                  ("LLD",CTy"Load",Var("v141",PTy(FTy 5,PTy(FTy 5,F16)))),
8312                Apply
8313                  (Call
8314                     ("dfn'LLD",ATy(qTy,qTy),
8315                      Var("v141",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
8316               (Call("LW",CTy"Load",Var("v142",PTy(FTy 5,PTy(FTy 5,F16)))),
8317                Apply
8318                  (Call
8319                     ("dfn'LW",ATy(qTy,qTy),
8320                      Var("v142",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
8321               (Call
8322                  ("LWL",CTy"Load",Var("v143",PTy(FTy 5,PTy(FTy 5,F16)))),
8323                Apply
8324                  (Call
8325                     ("dfn'LWL",ATy(qTy,qTy),
8326                      Var("v143",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
8327               (Call
8328                  ("LWR",CTy"Load",Var("v144",PTy(FTy 5,PTy(FTy 5,F16)))),
8329                Apply
8330                  (Call
8331                     ("dfn'LWR",ATy(qTy,qTy),
8332                      Var("v144",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
8333               (Call
8334                  ("LWU",CTy"Load",Var("v145",PTy(FTy 5,PTy(FTy 5,F16)))),
8335                Apply
8336                  (Call
8337                     ("dfn'LWU",ATy(qTy,qTy),
8338                      Var("v145",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state"))])),
8339          (Call("MultDiv",CTy"instruction",Var("v146",CTy"MultDiv")),
8340           CS(Var("v146",CTy"MultDiv"),
8341              [(Call("DDIV",CTy"MultDiv",Var("v147",PTy(FTy 5,FTy 5))),
8342                Apply
8343                  (Call
8344                     ("dfn'DDIV",ATy(qTy,qTy),Var("v147",PTy(FTy 5,FTy 5))),
8345                   qVar"state")),
8346               (Call("DDIVU",CTy"MultDiv",Var("v148",PTy(FTy 5,FTy 5))),
8347                Apply
8348                  (Call
8349                     ("dfn'DDIVU",ATy(qTy,qTy),
8350                      Var("v148",PTy(FTy 5,FTy 5))),qVar"state")),
8351               (Call("DIV",CTy"MultDiv",Var("v149",PTy(FTy 5,FTy 5))),
8352                Apply
8353                  (Call
8354                     ("dfn'DIV",ATy(qTy,qTy),Var("v149",PTy(FTy 5,FTy 5))),
8355                   qVar"state")),
8356               (Call("DIVU",CTy"MultDiv",Var("v150",PTy(FTy 5,FTy 5))),
8357                Apply
8358                  (Call
8359                     ("dfn'DIVU",ATy(qTy,qTy),Var("v150",PTy(FTy 5,FTy 5))),
8360                   qVar"state")),
8361               (Call("DMULT",CTy"MultDiv",Var("v151",PTy(FTy 5,FTy 5))),
8362                Apply
8363                  (Call
8364                     ("dfn'DMULT",ATy(qTy,qTy),
8365                      Var("v151",PTy(FTy 5,FTy 5))),qVar"state")),
8366               (Call("DMULTU",CTy"MultDiv",Var("v152",PTy(FTy 5,FTy 5))),
8367                Apply
8368                  (Call
8369                     ("dfn'DMULTU",ATy(qTy,qTy),
8370                      Var("v152",PTy(FTy 5,FTy 5))),qVar"state")),
8371               (Call("MADD",CTy"MultDiv",Var("v153",PTy(FTy 5,FTy 5))),
8372                Apply
8373                  (Call
8374                     ("dfn'MADD",ATy(qTy,qTy),Var("v153",PTy(FTy 5,FTy 5))),
8375                   qVar"state")),
8376               (Call("MADDU",CTy"MultDiv",Var("v154",PTy(FTy 5,FTy 5))),
8377                Apply
8378                  (Call
8379                     ("dfn'MADDU",ATy(qTy,qTy),
8380                      Var("v154",PTy(FTy 5,FTy 5))),qVar"state")),
8381               (Call("MFHI",CTy"MultDiv",Var("v155",FTy 5)),
8382                Apply
8383                  (Call("dfn'MFHI",ATy(qTy,qTy),Var("v155",FTy 5)),
8384                   qVar"state")),
8385               (Call("MFLO",CTy"MultDiv",Var("v156",FTy 5)),
8386                Apply
8387                  (Call("dfn'MFLO",ATy(qTy,qTy),Var("v156",FTy 5)),
8388                   qVar"state")),
8389               (Call("MSUB",CTy"MultDiv",Var("v157",PTy(FTy 5,FTy 5))),
8390                Apply
8391                  (Call
8392                     ("dfn'MSUB",ATy(qTy,qTy),Var("v157",PTy(FTy 5,FTy 5))),
8393                   qVar"state")),
8394               (Call("MSUBU",CTy"MultDiv",Var("v158",PTy(FTy 5,FTy 5))),
8395                Apply
8396                  (Call
8397                     ("dfn'MSUBU",ATy(qTy,qTy),
8398                      Var("v158",PTy(FTy 5,FTy 5))),qVar"state")),
8399               (Call("MTHI",CTy"MultDiv",Var("v159",FTy 5)),
8400                Apply
8401                  (Call("dfn'MTHI",ATy(qTy,qTy),Var("v159",FTy 5)),
8402                   qVar"state")),
8403               (Call("MTLO",CTy"MultDiv",Var("v160",FTy 5)),
8404                Apply
8405                  (Call("dfn'MTLO",ATy(qTy,qTy),Var("v160",FTy 5)),
8406                   qVar"state")),
8407               (Call
8408                  ("MUL",CTy"MultDiv",
8409                   Var("v161",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8410                Apply
8411                  (Call
8412                     ("dfn'MUL",ATy(qTy,qTy),
8413                      Var("v161",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8414               (Call("MULT",CTy"MultDiv",Var("v162",PTy(FTy 5,FTy 5))),
8415                Apply
8416                  (Call
8417                     ("dfn'MULT",ATy(qTy,qTy),Var("v162",PTy(FTy 5,FTy 5))),
8418                   qVar"state")),
8419               (Call("MULTU",CTy"MultDiv",Var("v163",PTy(FTy 5,FTy 5))),
8420                Apply
8421                  (Call
8422                     ("dfn'MULTU",ATy(qTy,qTy),
8423                      Var("v163",PTy(FTy 5,FTy 5))),qVar"state"))])),
8424          (Call("Shift",CTy"instruction",Var("v164",CTy"Shift")),
8425           CS(Var("v164",CTy"Shift"),
8426              [(Call
8427                  ("DSLL",CTy"Shift",
8428                   Var("v165",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8429                Apply
8430                  (Call
8431                     ("dfn'DSLL",ATy(qTy,qTy),
8432                      Var("v165",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8433               (Call
8434                  ("DSLL32",CTy"Shift",
8435                   Var("v166",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8436                Apply
8437                  (Call
8438                     ("dfn'DSLL32",ATy(qTy,qTy),
8439                      Var("v166",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8440               (Call
8441                  ("DSLLV",CTy"Shift",
8442                   Var("v167",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8443                Apply
8444                  (Call
8445                     ("dfn'DSLLV",ATy(qTy,qTy),
8446                      Var("v167",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8447               (Call
8448                  ("DSRA",CTy"Shift",
8449                   Var("v168",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8450                Apply
8451                  (Call
8452                     ("dfn'DSRA",ATy(qTy,qTy),
8453                      Var("v168",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8454               (Call
8455                  ("DSRA32",CTy"Shift",
8456                   Var("v169",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8457                Apply
8458                  (Call
8459                     ("dfn'DSRA32",ATy(qTy,qTy),
8460                      Var("v169",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8461               (Call
8462                  ("DSRAV",CTy"Shift",
8463                   Var("v170",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8464                Apply
8465                  (Call
8466                     ("dfn'DSRAV",ATy(qTy,qTy),
8467                      Var("v170",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8468               (Call
8469                  ("DSRL",CTy"Shift",
8470                   Var("v171",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8471                Apply
8472                  (Call
8473                     ("dfn'DSRL",ATy(qTy,qTy),
8474                      Var("v171",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8475               (Call
8476                  ("DSRL32",CTy"Shift",
8477                   Var("v172",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8478                Apply
8479                  (Call
8480                     ("dfn'DSRL32",ATy(qTy,qTy),
8481                      Var("v172",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8482               (Call
8483                  ("DSRLV",CTy"Shift",
8484                   Var("v173",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8485                Apply
8486                  (Call
8487                     ("dfn'DSRLV",ATy(qTy,qTy),
8488                      Var("v173",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8489               (Call
8490                  ("SLL",CTy"Shift",
8491                   Var("v174",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8492                Apply
8493                  (Call
8494                     ("dfn'SLL",ATy(qTy,qTy),
8495                      Var("v174",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8496               (Call
8497                  ("SLLV",CTy"Shift",
8498                   Var("v175",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8499                Apply
8500                  (Call
8501                     ("dfn'SLLV",ATy(qTy,qTy),
8502                      Var("v175",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8503               (Call
8504                  ("SRA",CTy"Shift",
8505                   Var("v176",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8506                Apply
8507                  (Call
8508                     ("dfn'SRA",ATy(qTy,qTy),
8509                      Var("v176",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8510               (Call
8511                  ("SRAV",CTy"Shift",
8512                   Var("v177",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8513                Apply
8514                  (Call
8515                     ("dfn'SRAV",ATy(qTy,qTy),
8516                      Var("v177",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8517               (Call
8518                  ("SRL",CTy"Shift",
8519                   Var("v178",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8520                Apply
8521                  (Call
8522                     ("dfn'SRL",ATy(qTy,qTy),
8523                      Var("v178",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")),
8524               (Call
8525                  ("SRLV",CTy"Shift",
8526                   Var("v179",PTy(FTy 5,PTy(FTy 5,FTy 5)))),
8527                Apply
8528                  (Call
8529                     ("dfn'SRLV",ATy(qTy,qTy),
8530                      Var("v179",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state"))])),
8531          (Call("Store",CTy"instruction",Var("v180",CTy"Store")),
8532           CS(Var("v180",CTy"Store"),
8533              [(Call
8534                  ("SB",CTy"Store",Var("v181",PTy(FTy 5,PTy(FTy 5,F16)))),
8535                Apply
8536                  (Call
8537                     ("dfn'SB",ATy(qTy,qTy),
8538                      Var("v181",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
8539               (Call
8540                  ("SC",CTy"Store",Var("v182",PTy(FTy 5,PTy(FTy 5,F16)))),
8541                Apply
8542                  (Call
8543                     ("dfn'SC",ATy(qTy,qTy),
8544                      Var("v182",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
8545               (Call
8546                  ("SCD",CTy"Store",Var("v183",PTy(FTy 5,PTy(FTy 5,F16)))),
8547                Apply
8548                  (Call
8549                     ("dfn'SCD",ATy(qTy,qTy),
8550                      Var("v183",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
8551               (Call
8552                  ("SD",CTy"Store",Var("v184",PTy(FTy 5,PTy(FTy 5,F16)))),
8553                Apply
8554                  (Call
8555                     ("dfn'SD",ATy(qTy,qTy),
8556                      Var("v184",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
8557               (Call
8558                  ("SDL",CTy"Store",Var("v185",PTy(FTy 5,PTy(FTy 5,F16)))),
8559                Apply
8560                  (Call
8561                     ("dfn'SDL",ATy(qTy,qTy),
8562                      Var("v185",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
8563               (Call
8564                  ("SDR",CTy"Store",Var("v186",PTy(FTy 5,PTy(FTy 5,F16)))),
8565                Apply
8566                  (Call
8567                     ("dfn'SDR",ATy(qTy,qTy),
8568                      Var("v186",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
8569               (Call
8570                  ("SH",CTy"Store",Var("v187",PTy(FTy 5,PTy(FTy 5,F16)))),
8571                Apply
8572                  (Call
8573                     ("dfn'SH",ATy(qTy,qTy),
8574                      Var("v187",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
8575               (Call
8576                  ("SW",CTy"Store",Var("v188",PTy(FTy 5,PTy(FTy 5,F16)))),
8577                Apply
8578                  (Call
8579                     ("dfn'SW",ATy(qTy,qTy),
8580                      Var("v188",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
8581               (Call
8582                  ("SWL",CTy"Store",Var("v189",PTy(FTy 5,PTy(FTy 5,F16)))),
8583                Apply
8584                  (Call
8585                     ("dfn'SWL",ATy(qTy,qTy),
8586                      Var("v189",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")),
8587               (Call
8588                  ("SWR",CTy"Store",Var("v190",PTy(FTy 5,PTy(FTy 5,F16)))),
8589                Apply
8590                  (Call
8591                     ("dfn'SWR",ATy(qTy,qTy),
8592                      Var("v190",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state"))])),
8593          (Call("Trap",CTy"instruction",Var("v191",CTy"Trap")),
8594           CS(Var("v191",CTy"Trap"),
8595              [(Call("TEQ",CTy"Trap",Var("v192",PTy(FTy 5,FTy 5))),
8596                Apply
8597                  (Call
8598                     ("dfn'TEQ",ATy(qTy,qTy),Var("v192",PTy(FTy 5,FTy 5))),
8599                   qVar"state")),
8600               (Call("TEQI",CTy"Trap",Var("v193",PTy(FTy 5,F16))),
8601                Apply
8602                  (Call
8603                     ("dfn'TEQI",ATy(qTy,qTy),Var("v193",PTy(FTy 5,F16))),
8604                   qVar"state")),
8605               (Call("TGE",CTy"Trap",Var("v194",PTy(FTy 5,FTy 5))),
8606                Apply
8607                  (Call
8608                     ("dfn'TGE",ATy(qTy,qTy),Var("v194",PTy(FTy 5,FTy 5))),
8609                   qVar"state")),
8610               (Call("TGEI",CTy"Trap",Var("v195",PTy(FTy 5,F16))),
8611                Apply
8612                  (Call
8613                     ("dfn'TGEI",ATy(qTy,qTy),Var("v195",PTy(FTy 5,F16))),
8614                   qVar"state")),
8615               (Call("TGEIU",CTy"Trap",Var("v196",PTy(FTy 5,F16))),
8616                Apply
8617                  (Call
8618                     ("dfn'TGEIU",ATy(qTy,qTy),Var("v196",PTy(FTy 5,F16))),
8619                   qVar"state")),
8620               (Call("TGEU",CTy"Trap",Var("v197",PTy(FTy 5,FTy 5))),
8621                Apply
8622                  (Call
8623                     ("dfn'TGEU",ATy(qTy,qTy),Var("v197",PTy(FTy 5,FTy 5))),
8624                   qVar"state")),
8625               (Call("TLT",CTy"Trap",Var("v198",PTy(FTy 5,FTy 5))),
8626                Apply
8627                  (Call
8628                     ("dfn'TLT",ATy(qTy,qTy),Var("v198",PTy(FTy 5,FTy 5))),
8629                   qVar"state")),
8630               (Call("TLTI",CTy"Trap",Var("v199",PTy(FTy 5,F16))),
8631                Apply
8632                  (Call
8633                     ("dfn'TLTI",ATy(qTy,qTy),Var("v199",PTy(FTy 5,F16))),
8634                   qVar"state")),
8635               (Call("TLTIU",CTy"Trap",Var("v200",PTy(FTy 5,F16))),
8636                Apply
8637                  (Call
8638                     ("dfn'TLTIU",ATy(qTy,qTy),Var("v200",PTy(FTy 5,F16))),
8639                   qVar"state")),
8640               (Call("TLTU",CTy"Trap",Var("v201",PTy(FTy 5,FTy 5))),
8641                Apply
8642                  (Call
8643                     ("dfn'TLTU",ATy(qTy,qTy),Var("v201",PTy(FTy 5,FTy 5))),
8644                   qVar"state")),
8645               (Call("TNE",CTy"Trap",Var("v202",PTy(FTy 5,FTy 5))),
8646                Apply
8647                  (Call
8648                     ("dfn'TNE",ATy(qTy,qTy),Var("v202",PTy(FTy 5,FTy 5))),
8649                   qVar"state")),
8650               (Call("TNEI",CTy"Trap",Var("v203",PTy(FTy 5,F16))),
8651                Apply
8652                  (Call
8653                     ("dfn'TNEI",ATy(qTy,qTy),Var("v203",PTy(FTy 5,F16))),
8654                   qVar"state"))]))])))
8655;
8656val COP1Decode_def = Def
8657  ("COP1Decode",Var("v",FTy 26),
8658   Call
8659     ("COP1",CTy"instruction",
8660      Let(TP[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",bVar"b'21",
8661             bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",bVar"b'16",
8662             bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",bVar"b'11",
8663             bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6",bVar"b'5",
8664             bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"],
8665          BL(26,Var("v",FTy 26)),
8666          ITB([(bVar"b'21",
8667                ITB([(bVar"b'3",
8668                      ITB([(bVar"b'2",
8669                            ITE(Bop(And,bVar"b'25",
8670                                    Bop(And,Mop(Not,bVar"b'24"),
8671                                        Bop(And,Mop(Not,bVar"b'23"),
8672                                            Bop(And,Mop(Not,bVar"b'22"),
8673                                                Bop(And,
8674                                                    Mop(Not,bVar"b'20"),
8675                                                    Bop(And,
8676                                                        Mop(Not,bVar"b'19"),
8677                                                        Bop(And,
8678                                                            Mop(Not,
8679                                                                bVar"b'18"),
8680                                                            Bop(And,
8681                                                                Mop(Not,
8682                                                                    bVar"b'17"),
8683                                                                Bop(And,
8684                                                                    Mop(Not,
8685                                                                        bVar"b'16"),
8686                                                                    Bop(And,
8687                                                                        Mop(Not,
8688                                                                            bVar"b'5"),
8689                                                                        Mop(Not,
8690                                                                            bVar"b'4"))))))))))),
8691                                ITB([(Bop(And,Mop(Not,bVar"b'1"),
8692                                          Mop(Not,bVar"b'0")),
8693                                      Call
8694                                        ("ROUND_W_D",CTy"COP1",
8695                                         TP[Mop(Cast(FTy 5),
8696                                                LL[bVar"b'10",bVar"b'9",
8697                                                   bVar"b'8",bVar"b'7",
8698                                                   bVar"b'6"]),
8699                                            Mop(Cast(FTy 5),
8700                                                LL[bVar"b'15",bVar"b'14",
8701                                                   bVar"b'13",bVar"b'12",
8702                                                   bVar"b'11"])])),
8703                                     (Bop(And,Mop(Not,bVar"b'1"),bVar"b'0"),
8704                                      Call
8705                                        ("TRUNC_W_D",CTy"COP1",
8706                                         TP[Mop(Cast(FTy 5),
8707                                                LL[bVar"b'10",bVar"b'9",
8708                                                   bVar"b'8",bVar"b'7",
8709                                                   bVar"b'6"]),
8710                                            Mop(Cast(FTy 5),
8711                                                LL[bVar"b'15",bVar"b'14",
8712                                                   bVar"b'13",bVar"b'12",
8713                                                   bVar"b'11"])])),
8714                                     (Bop(And,bVar"b'1",Mop(Not,bVar"b'0")),
8715                                      Call
8716                                        ("CEIL_W_D",CTy"COP1",
8717                                         TP[Mop(Cast(FTy 5),
8718                                                LL[bVar"b'10",bVar"b'9",
8719                                                   bVar"b'8",bVar"b'7",
8720                                                   bVar"b'6"]),
8721                                            Mop(Cast(FTy 5),
8722                                                LL[bVar"b'15",bVar"b'14",
8723                                                   bVar"b'13",bVar"b'12",
8724                                                   bVar"b'11"])])),
8725                                     (Bop(And,bVar"b'1",bVar"b'0"),
8726                                      Call
8727                                        ("FLOOR_W_D",CTy"COP1",
8728                                         TP[Mop(Cast(FTy 5),
8729                                                LL[bVar"b'10",bVar"b'9",
8730                                                   bVar"b'8",bVar"b'7",
8731                                                   bVar"b'6"]),
8732                                            Mop(Cast(FTy 5),
8733                                                LL[bVar"b'15",bVar"b'14",
8734                                                   bVar"b'13",bVar"b'12",
8735                                                   bVar"b'11"])]))],
8736                                    Const
8737                                      ("UnknownFPInstruction",CTy"COP1")),
8738                                Const("UnknownFPInstruction",CTy"COP1"))),
8739                           (Bop(And,bVar"b'25",
8740                                Bop(And,Mop(Not,bVar"b'24"),
8741                                    Bop(And,Mop(Not,bVar"b'23"),
8742                                        Bop(And,Mop(Not,bVar"b'22"),
8743                                            Bop(And,Mop(Not,bVar"b'20"),
8744                                                Bop(And,
8745                                                    Mop(Not,bVar"b'19"),
8746                                                    Bop(And,
8747                                                        Mop(Not,bVar"b'18"),
8748                                                        Bop(And,
8749                                                            Mop(Not,
8750                                                                bVar"b'17"),
8751                                                            Bop(And,
8752                                                                Mop(Not,
8753                                                                    bVar"b'16"),
8754                                                                Bop(And,
8755                                                                    Mop(Not,
8756                                                                        bVar"b'5"),
8757                                                                    Mop(Not,
8758                                                                        bVar"b'4"))))))))))),
8759                            ITB([(Bop(And,Mop(Not,bVar"b'1"),
8760                                      Mop(Not,bVar"b'0")),
8761                                  Call
8762                                    ("ROUND_L_D",CTy"COP1",
8763                                     TP[Mop(Cast(FTy 5),
8764                                            LL[bVar"b'10",bVar"b'9",
8765                                               bVar"b'8",bVar"b'7",
8766                                               bVar"b'6"]),
8767                                        Mop(Cast(FTy 5),
8768                                            LL[bVar"b'15",bVar"b'14",
8769                                               bVar"b'13",bVar"b'12",
8770                                               bVar"b'11"])])),
8771                                 (Bop(And,Mop(Not,bVar"b'1"),bVar"b'0"),
8772                                  Call
8773                                    ("TRUNC_L_D",CTy"COP1",
8774                                     TP[Mop(Cast(FTy 5),
8775                                            LL[bVar"b'10",bVar"b'9",
8776                                               bVar"b'8",bVar"b'7",
8777                                               bVar"b'6"]),
8778                                        Mop(Cast(FTy 5),
8779                                            LL[bVar"b'15",bVar"b'14",
8780                                               bVar"b'13",bVar"b'12",
8781                                               bVar"b'11"])])),
8782                                 (Bop(And,bVar"b'1",Mop(Not,bVar"b'0")),
8783                                  Call
8784                                    ("CEIL_L_D",CTy"COP1",
8785                                     TP[Mop(Cast(FTy 5),
8786                                            LL[bVar"b'10",bVar"b'9",
8787                                               bVar"b'8",bVar"b'7",
8788                                               bVar"b'6"]),
8789                                        Mop(Cast(FTy 5),
8790                                            LL[bVar"b'15",bVar"b'14",
8791                                               bVar"b'13",bVar"b'12",
8792                                               bVar"b'11"])])),
8793                                 (Bop(And,bVar"b'1",bVar"b'0"),
8794                                  Call
8795                                    ("FLOOR_L_D",CTy"COP1",
8796                                     TP[Mop(Cast(FTy 5),
8797                                            LL[bVar"b'10",bVar"b'9",
8798                                               bVar"b'8",bVar"b'7",
8799                                               bVar"b'6"]),
8800                                        Mop(Cast(FTy 5),
8801                                            LL[bVar"b'15",bVar"b'14",
8802                                               bVar"b'13",bVar"b'12",
8803                                               bVar"b'11"])]))],
8804                                Const("UnknownFPInstruction",CTy"COP1")))],
8805                          Const("UnknownFPInstruction",CTy"COP1"))),
8806                     (bVar"b'5",
8807                      ITE(Bop(And,bVar"b'25",
8808                              Bop(And,Mop(Not,bVar"b'24"),
8809                                  Mop(Not,bVar"b'22"))),
8810                          ITB([(Bop(And,Mop(Not,bVar"b'23"),
8811                                    Bop(And,Mop(Not,bVar"b'7"),
8812                                        Bop(And,Mop(Not,bVar"b'6"),
8813                                            bVar"b'4"))),
8814                                Call
8815                                  ("C_cond_D",CTy"COP1",
8816                                   TP[Mop(Cast(FTy 5),
8817                                          LL[bVar"b'15",bVar"b'14",
8818                                             bVar"b'13",bVar"b'12",
8819                                             bVar"b'11"]),
8820                                      Mop(Cast(FTy 5),
8821                                          LL[bVar"b'20",bVar"b'19",
8822                                             bVar"b'18",bVar"b'17",
8823                                             bVar"b'16"]),
8824                                      Mop(Cast(FTy 3),
8825                                          LL[bVar"b'2",bVar"b'1",bVar"b'0"]),
8826                                      Mop(Cast(FTy 3),
8827                                          LL[bVar"b'10",bVar"b'9",
8828                                             bVar"b'8"])])),
8829                               (Bop(And,Mop(Not,bVar"b'23"),
8830                                    Bop(And,Mop(Not,bVar"b'20"),
8831                                        Bop(And,Mop(Not,bVar"b'19"),
8832                                            Bop(And,Mop(Not,bVar"b'18"),
8833                                                Bop(And,
8834                                                    Mop(Not,bVar"b'17"),
8835                                                    Bop(And,
8836                                                        Mop(Not,bVar"b'16"),
8837                                                        Bop(And,
8838                                                            Mop(Not,
8839                                                                bVar"b'4"),
8840                                                            Bop(And,
8841                                                                Mop(Not,
8842                                                                    bVar"b'2"),
8843                                                                Bop(And,
8844                                                                    Mop(Not,
8845                                                                        bVar"b'1"),
8846                                                                    Mop(Not,
8847                                                                        bVar"b'0")))))))))),
8848                                Call
8849                                  ("CVT_S_D",CTy"COP1",
8850                                   TP[Mop(Cast(FTy 5),
8851                                          LL[bVar"b'10",bVar"b'9",
8852                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
8853                                      Mop(Cast(FTy 5),
8854                                          LL[bVar"b'15",bVar"b'14",
8855                                             bVar"b'13",bVar"b'12",
8856                                             bVar"b'11"])])),
8857                               (Bop(And,bVar"b'23",
8858                                    Bop(And,Mop(Not,bVar"b'20"),
8859                                        Bop(And,Mop(Not,bVar"b'19"),
8860                                            Bop(And,Mop(Not,bVar"b'18"),
8861                                                Bop(And,
8862                                                    Mop(Not,bVar"b'17"),
8863                                                    Bop(And,
8864                                                        Mop(Not,bVar"b'16"),
8865                                                        Bop(And,
8866                                                            Mop(Not,
8867                                                                bVar"b'4"),
8868                                                            Bop(And,
8869                                                                Mop(Not,
8870                                                                    bVar"b'2"),
8871                                                                Bop(And,
8872                                                                    Mop(Not,
8873                                                                        bVar"b'1"),
8874                                                                    Mop(Not,
8875                                                                        bVar"b'0")))))))))),
8876                                Call
8877                                  ("CVT_S_L",CTy"COP1",
8878                                   TP[Mop(Cast(FTy 5),
8879                                          LL[bVar"b'10",bVar"b'9",
8880                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
8881                                      Mop(Cast(FTy 5),
8882                                          LL[bVar"b'15",bVar"b'14",
8883                                             bVar"b'13",bVar"b'12",
8884                                             bVar"b'11"])])),
8885                               (Bop(And,bVar"b'23",
8886                                    Bop(And,Mop(Not,bVar"b'20"),
8887                                        Bop(And,Mop(Not,bVar"b'19"),
8888                                            Bop(And,Mop(Not,bVar"b'18"),
8889                                                Bop(And,
8890                                                    Mop(Not,bVar"b'17"),
8891                                                    Bop(And,
8892                                                        Mop(Not,bVar"b'16"),
8893                                                        Bop(And,
8894                                                            Mop(Not,
8895                                                                bVar"b'4"),
8896                                                            Bop(And,
8897                                                                Mop(Not,
8898                                                                    bVar"b'2"),
8899                                                                Bop(And,
8900                                                                    Mop(Not,
8901                                                                        bVar"b'1"),
8902                                                                    bVar"b'0"))))))))),
8903                                Call
8904                                  ("CVT_D_L",CTy"COP1",
8905                                   TP[Mop(Cast(FTy 5),
8906                                          LL[bVar"b'10",bVar"b'9",
8907                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
8908                                      Mop(Cast(FTy 5),
8909                                          LL[bVar"b'15",bVar"b'14",
8910                                             bVar"b'13",bVar"b'12",
8911                                             bVar"b'11"])])),
8912                               (Bop(And,Mop(Not,bVar"b'23"),
8913                                    Bop(And,Mop(Not,bVar"b'20"),
8914                                        Bop(And,Mop(Not,bVar"b'19"),
8915                                            Bop(And,Mop(Not,bVar"b'18"),
8916                                                Bop(And,
8917                                                    Mop(Not,bVar"b'17"),
8918                                                    Bop(And,
8919                                                        Mop(Not,bVar"b'16"),
8920                                                        Bop(And,
8921                                                            Mop(Not,
8922                                                                bVar"b'4"),
8923                                                            Bop(And,
8924                                                                bVar"b'2",
8925                                                                Bop(And,
8926                                                                    Mop(Not,
8927                                                                        bVar"b'1"),
8928                                                                    Mop(Not,
8929                                                                        bVar"b'0")))))))))),
8930                                Call
8931                                  ("CVT_W_D",CTy"COP1",
8932                                   TP[Mop(Cast(FTy 5),
8933                                          LL[bVar"b'10",bVar"b'9",
8934                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
8935                                      Mop(Cast(FTy 5),
8936                                          LL[bVar"b'15",bVar"b'14",
8937                                             bVar"b'13",bVar"b'12",
8938                                             bVar"b'11"])])),
8939                               (Bop(And,Mop(Not,bVar"b'23"),
8940                                    Bop(And,Mop(Not,bVar"b'20"),
8941                                        Bop(And,Mop(Not,bVar"b'19"),
8942                                            Bop(And,Mop(Not,bVar"b'18"),
8943                                                Bop(And,
8944                                                    Mop(Not,bVar"b'17"),
8945                                                    Bop(And,
8946                                                        Mop(Not,bVar"b'16"),
8947                                                        Bop(And,
8948                                                            Mop(Not,
8949                                                                bVar"b'4"),
8950                                                            Bop(And,
8951                                                                bVar"b'2",
8952                                                                Bop(And,
8953                                                                    Mop(Not,
8954                                                                        bVar"b'1"),
8955                                                                    bVar"b'0"))))))))),
8956                                Call
8957                                  ("CVT_L_D",CTy"COP1",
8958                                   TP[Mop(Cast(FTy 5),
8959                                          LL[bVar"b'10",bVar"b'9",
8960                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
8961                                      Mop(Cast(FTy 5),
8962                                          LL[bVar"b'15",bVar"b'14",
8963                                             bVar"b'13",bVar"b'12",
8964                                             bVar"b'11"])]))],
8965                              Const("UnknownFPInstruction",CTy"COP1")),
8966                          Const("UnknownFPInstruction",CTy"COP1"))),
8967                     (bVar"b'0",
8968                      ITE(Bop(And,bVar"b'25",
8969                              Bop(And,Mop(Not,bVar"b'24"),
8970                                  Bop(And,Mop(Not,bVar"b'23"),
8971                                      Mop(Not,bVar"b'22")))),
8972                          ITB([(Bop(And,Mop(Not,bVar"b'4"),
8973                                    Bop(And,Mop(Not,bVar"b'2"),
8974                                        Mop(Not,bVar"b'1"))),
8975                                Call
8976                                  ("SUB_D",CTy"COP1",
8977                                   TP[Mop(Cast(FTy 5),
8978                                          LL[bVar"b'10",bVar"b'9",
8979                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
8980                                      Mop(Cast(FTy 5),
8981                                          LL[bVar"b'15",bVar"b'14",
8982                                             bVar"b'13",bVar"b'12",
8983                                             bVar"b'11"]),
8984                                      Mop(Cast(FTy 5),
8985                                          LL[bVar"b'20",bVar"b'19",
8986                                             bVar"b'18",bVar"b'17",
8987                                             bVar"b'16"])])),
8988                               (Bop(And,Mop(Not,bVar"b'4"),
8989                                    Bop(And,Mop(Not,bVar"b'2"),bVar"b'1")),
8990                                Call
8991                                  ("DIV_D",CTy"COP1",
8992                                   TP[Mop(Cast(FTy 5),
8993                                          LL[bVar"b'10",bVar"b'9",
8994                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
8995                                      Mop(Cast(FTy 5),
8996                                          LL[bVar"b'15",bVar"b'14",
8997                                             bVar"b'13",bVar"b'12",
8998                                             bVar"b'11"]),
8999                                      Mop(Cast(FTy 5),
9000                                          LL[bVar"b'20",bVar"b'19",
9001                                             bVar"b'18",bVar"b'17",
9002                                             bVar"b'16"])])),
9003                               (Bop(And,Mop(Not,bVar"b'20"),
9004                                    Bop(And,Mop(Not,bVar"b'19"),
9005                                        Bop(And,Mop(Not,bVar"b'18"),
9006                                            Bop(And,Mop(Not,bVar"b'17"),
9007                                                Bop(And,
9008                                                    Mop(Not,bVar"b'16"),
9009                                                    Bop(And,
9010                                                        Mop(Not,bVar"b'4"),
9011                                                        Bop(And,bVar"b'2",
9012                                                            Mop(Not,
9013                                                                bVar"b'1")))))))),
9014                                Call
9015                                  ("ABS_D",CTy"COP1",
9016                                   TP[Mop(Cast(FTy 5),
9017                                          LL[bVar"b'10",bVar"b'9",
9018                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
9019                                      Mop(Cast(FTy 5),
9020                                          LL[bVar"b'15",bVar"b'14",
9021                                             bVar"b'13",bVar"b'12",
9022                                             bVar"b'11"])])),
9023                               (Bop(And,Mop(Not,bVar"b'20"),
9024                                    Bop(And,Mop(Not,bVar"b'19"),
9025                                        Bop(And,Mop(Not,bVar"b'18"),
9026                                            Bop(And,Mop(Not,bVar"b'17"),
9027                                                Bop(And,
9028                                                    Mop(Not,bVar"b'16"),
9029                                                    Bop(And,
9030                                                        Mop(Not,bVar"b'4"),
9031                                                        Bop(And,bVar"b'2",
9032                                                            bVar"b'1"))))))),
9033                                Call
9034                                  ("NEG_D",CTy"COP1",
9035                                   TP[Mop(Cast(FTy 5),
9036                                          LL[bVar"b'10",bVar"b'9",
9037                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
9038                                      Mop(Cast(FTy 5),
9039                                          LL[bVar"b'15",bVar"b'14",
9040                                             bVar"b'13",bVar"b'12",
9041                                             bVar"b'11"])])),
9042                               (Bop(And,Mop(Not,bVar"b'17"),
9043                                    Bop(And,Mop(Not,bVar"b'16"),
9044                                        Bop(And,bVar"b'4",
9045                                            Bop(And,Mop(Not,bVar"b'2"),
9046                                                Mop(Not,bVar"b'1"))))),
9047                                Call
9048                                  ("MOVF_D",CTy"COP1",
9049                                   TP[Mop(Cast(FTy 5),
9050                                          LL[bVar"b'10",bVar"b'9",
9051                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
9052                                      Mop(Cast(FTy 5),
9053                                          LL[bVar"b'15",bVar"b'14",
9054                                             bVar"b'13",bVar"b'12",
9055                                             bVar"b'11"]),
9056                                      Mop(Cast(FTy 3),
9057                                          LL[bVar"b'20",bVar"b'19",
9058                                             bVar"b'18"])])),
9059                               (Bop(And,Mop(Not,bVar"b'17"),
9060                                    Bop(And,bVar"b'16",
9061                                        Bop(And,bVar"b'4",
9062                                            Bop(And,Mop(Not,bVar"b'2"),
9063                                                Mop(Not,bVar"b'1"))))),
9064                                Call
9065                                  ("MOVT_D",CTy"COP1",
9066                                   TP[Mop(Cast(FTy 5),
9067                                          LL[bVar"b'10",bVar"b'9",
9068                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
9069                                      Mop(Cast(FTy 5),
9070                                          LL[bVar"b'15",bVar"b'14",
9071                                             bVar"b'13",bVar"b'12",
9072                                             bVar"b'11"]),
9073                                      Mop(Cast(FTy 3),
9074                                          LL[bVar"b'20",bVar"b'19",
9075                                             bVar"b'18"])])),
9076                               (Bop(And,bVar"b'4",
9077                                    Bop(And,Mop(Not,bVar"b'2"),bVar"b'1")),
9078                                Call
9079                                  ("MOVN_D",CTy"COP1",
9080                                   TP[Mop(Cast(FTy 5),
9081                                          LL[bVar"b'10",bVar"b'9",
9082                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
9083                                      Mop(Cast(FTy 5),
9084                                          LL[bVar"b'15",bVar"b'14",
9085                                             bVar"b'13",bVar"b'12",
9086                                             bVar"b'11"]),
9087                                      Mop(Cast(FTy 5),
9088                                          LL[bVar"b'20",bVar"b'19",
9089                                             bVar"b'18",bVar"b'17",
9090                                             bVar"b'16"])]))],
9091                              Const("UnknownFPInstruction",CTy"COP1")),
9092                          Const("UnknownFPInstruction",CTy"COP1"))),
9093                     (Bop(And,Mop(Not,bVar"b'24"),Mop(Not,bVar"b'22")),
9094                      ITB([(Bop(And,Mop(Not,bVar"b'25"),
9095                                Bop(And,Mop(Not,bVar"b'23"),
9096                                    Bop(And,Mop(Not,bVar"b'10"),
9097                                        Bop(And,Mop(Not,bVar"b'9"),
9098                                            Bop(And,Mop(Not,bVar"b'8"),
9099                                                Bop(And,
9100                                                    Mop(Not,bVar"b'7"),
9101                                                    Bop(And,
9102                                                        Mop(Not,bVar"b'6"),
9103                                                        Bop(And,
9104                                                            Mop(Not,
9105                                                                bVar"b'4"),
9106                                                            Bop(And,
9107                                                                Mop(Not,
9108                                                                    bVar"b'2"),
9109                                                                Mop(Not,
9110                                                                    bVar"b'1")))))))))),
9111                            Call
9112                              ("DMFC1",CTy"COP1",
9113                               TP[Mop(Cast(FTy 5),
9114                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
9115                                         bVar"b'17",bVar"b'16"]),
9116                                  Mop(Cast(FTy 5),
9117                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
9118                                         bVar"b'12",bVar"b'11"])])),
9119                           (Bop(And,Mop(Not,bVar"b'25"),
9120                                Bop(And,bVar"b'23",
9121                                    Bop(And,Mop(Not,bVar"b'10"),
9122                                        Bop(And,Mop(Not,bVar"b'9"),
9123                                            Bop(And,Mop(Not,bVar"b'8"),
9124                                                Bop(And,
9125                                                    Mop(Not,bVar"b'7"),
9126                                                    Bop(And,
9127                                                        Mop(Not,bVar"b'6"),
9128                                                        Bop(And,
9129                                                            Mop(Not,
9130                                                                bVar"b'4"),
9131                                                            Bop(And,
9132                                                                Mop(Not,
9133                                                                    bVar"b'2"),
9134                                                                Mop(Not,
9135                                                                    bVar"b'1")))))))))),
9136                            Call
9137                              ("DMTC1",CTy"COP1",
9138                               TP[Mop(Cast(FTy 5),
9139                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
9140                                         bVar"b'17",bVar"b'16"]),
9141                                  Mop(Cast(FTy 5),
9142                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
9143                                         bVar"b'12",bVar"b'11"])])),
9144                           (Bop(And,bVar"b'25",
9145                                Bop(And,Mop(Not,bVar"b'23"),
9146                                    Bop(And,Mop(Not,bVar"b'4"),
9147                                        Bop(And,Mop(Not,bVar"b'2"),
9148                                            Mop(Not,bVar"b'1"))))),
9149                            Call
9150                              ("ADD_D",CTy"COP1",
9151                               TP[Mop(Cast(FTy 5),
9152                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
9153                                         bVar"b'7",bVar"b'6"]),
9154                                  Mop(Cast(FTy 5),
9155                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
9156                                         bVar"b'12",bVar"b'11"]),
9157                                  Mop(Cast(FTy 5),
9158                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
9159                                         bVar"b'17",bVar"b'16"])])),
9160                           (Bop(And,bVar"b'25",
9161                                Bop(And,Mop(Not,bVar"b'23"),
9162                                    Bop(And,Mop(Not,bVar"b'4"),
9163                                        Bop(And,Mop(Not,bVar"b'2"),
9164                                            bVar"b'1")))),
9165                            Call
9166                              ("MUL_D",CTy"COP1",
9167                               TP[Mop(Cast(FTy 5),
9168                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
9169                                         bVar"b'7",bVar"b'6"]),
9170                                  Mop(Cast(FTy 5),
9171                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
9172                                         bVar"b'12",bVar"b'11"]),
9173                                  Mop(Cast(FTy 5),
9174                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
9175                                         bVar"b'17",bVar"b'16"])])),
9176                           (Bop(And,bVar"b'25",
9177                                Bop(And,Mop(Not,bVar"b'23"),
9178                                    Bop(And,Mop(Not,bVar"b'20"),
9179                                        Bop(And,Mop(Not,bVar"b'19"),
9180                                            Bop(And,Mop(Not,bVar"b'18"),
9181                                                Bop(And,
9182                                                    Mop(Not,bVar"b'17"),
9183                                                    Bop(And,
9184                                                        Mop(Not,bVar"b'16"),
9185                                                        Bop(And,
9186                                                            Mop(Not,
9187                                                                bVar"b'4"),
9188                                                            Bop(And,
9189                                                                bVar"b'2",
9190                                                                Mop(Not,
9191                                                                    bVar"b'1")))))))))),
9192                            Call
9193                              ("SQRT_D",CTy"COP1",
9194                               TP[Mop(Cast(FTy 5),
9195                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
9196                                         bVar"b'7",bVar"b'6"]),
9197                                  Mop(Cast(FTy 5),
9198                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
9199                                         bVar"b'12",bVar"b'11"])])),
9200                           (Bop(And,bVar"b'25",
9201                                Bop(And,Mop(Not,bVar"b'23"),
9202                                    Bop(And,Mop(Not,bVar"b'20"),
9203                                        Bop(And,Mop(Not,bVar"b'19"),
9204                                            Bop(And,Mop(Not,bVar"b'18"),
9205                                                Bop(And,
9206                                                    Mop(Not,bVar"b'17"),
9207                                                    Bop(And,
9208                                                        Mop(Not,bVar"b'16"),
9209                                                        Bop(And,
9210                                                            Mop(Not,
9211                                                                bVar"b'4"),
9212                                                            Bop(And,
9213                                                                bVar"b'2",
9214                                                                bVar"b'1"))))))))),
9215                            Call
9216                              ("MOV_D",CTy"COP1",
9217                               TP[Mop(Cast(FTy 5),
9218                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
9219                                         bVar"b'7",bVar"b'6"]),
9220                                  Mop(Cast(FTy 5),
9221                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
9222                                         bVar"b'12",bVar"b'11"])])),
9223                           (Bop(And,bVar"b'25",
9224                                Bop(And,Mop(Not,bVar"b'23"),
9225                                    Bop(And,bVar"b'4",
9226                                        Bop(And,Mop(Not,bVar"b'2"),
9227                                            bVar"b'1")))),
9228                            Call
9229                              ("MOVZ_D",CTy"COP1",
9230                               TP[Mop(Cast(FTy 5),
9231                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
9232                                         bVar"b'7",bVar"b'6"]),
9233                                  Mop(Cast(FTy 5),
9234                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
9235                                         bVar"b'12",bVar"b'11"]),
9236                                  Mop(Cast(FTy 5),
9237                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
9238                                         bVar"b'17",bVar"b'16"])]))],
9239                          Const("UnknownFPInstruction",CTy"COP1")))],
9240                    Const("UnknownFPInstruction",CTy"COP1"))),
9241               (bVar"b'25",
9242                ITB([(bVar"b'3",
9243                      ITB([(bVar"b'2",
9244                            ITE(Bop(And,Mop(Not,bVar"b'24"),
9245                                    Bop(And,Mop(Not,bVar"b'23"),
9246                                        Bop(And,Mop(Not,bVar"b'22"),
9247                                            Bop(And,Mop(Not,bVar"b'20"),
9248                                                Bop(And,
9249                                                    Mop(Not,bVar"b'19"),
9250                                                    Bop(And,
9251                                                        Mop(Not,bVar"b'18"),
9252                                                        Bop(And,
9253                                                            Mop(Not,
9254                                                                bVar"b'17"),
9255                                                            Bop(And,
9256                                                                Mop(Not,
9257                                                                    bVar"b'16"),
9258                                                                Bop(And,
9259                                                                    Mop(Not,
9260                                                                        bVar"b'5"),
9261                                                                    Mop(Not,
9262                                                                        bVar"b'4")))))))))),
9263                                ITB([(Bop(And,Mop(Not,bVar"b'1"),
9264                                          Mop(Not,bVar"b'0")),
9265                                      Call
9266                                        ("ROUND_W_S",CTy"COP1",
9267                                         TP[Mop(Cast(FTy 5),
9268                                                LL[bVar"b'10",bVar"b'9",
9269                                                   bVar"b'8",bVar"b'7",
9270                                                   bVar"b'6"]),
9271                                            Mop(Cast(FTy 5),
9272                                                LL[bVar"b'15",bVar"b'14",
9273                                                   bVar"b'13",bVar"b'12",
9274                                                   bVar"b'11"])])),
9275                                     (Bop(And,Mop(Not,bVar"b'1"),bVar"b'0"),
9276                                      Call
9277                                        ("TRUNC_W_S",CTy"COP1",
9278                                         TP[Mop(Cast(FTy 5),
9279                                                LL[bVar"b'10",bVar"b'9",
9280                                                   bVar"b'8",bVar"b'7",
9281                                                   bVar"b'6"]),
9282                                            Mop(Cast(FTy 5),
9283                                                LL[bVar"b'15",bVar"b'14",
9284                                                   bVar"b'13",bVar"b'12",
9285                                                   bVar"b'11"])])),
9286                                     (Bop(And,bVar"b'1",Mop(Not,bVar"b'0")),
9287                                      Call
9288                                        ("CEIL_W_S",CTy"COP1",
9289                                         TP[Mop(Cast(FTy 5),
9290                                                LL[bVar"b'10",bVar"b'9",
9291                                                   bVar"b'8",bVar"b'7",
9292                                                   bVar"b'6"]),
9293                                            Mop(Cast(FTy 5),
9294                                                LL[bVar"b'15",bVar"b'14",
9295                                                   bVar"b'13",bVar"b'12",
9296                                                   bVar"b'11"])])),
9297                                     (Bop(And,bVar"b'1",bVar"b'0"),
9298                                      Call
9299                                        ("FLOOR_W_S",CTy"COP1",
9300                                         TP[Mop(Cast(FTy 5),
9301                                                LL[bVar"b'10",bVar"b'9",
9302                                                   bVar"b'8",bVar"b'7",
9303                                                   bVar"b'6"]),
9304                                            Mop(Cast(FTy 5),
9305                                                LL[bVar"b'15",bVar"b'14",
9306                                                   bVar"b'13",bVar"b'12",
9307                                                   bVar"b'11"])]))],
9308                                    Const
9309                                      ("UnknownFPInstruction",CTy"COP1")),
9310                                Const("UnknownFPInstruction",CTy"COP1"))),
9311                           (Bop(And,Mop(Not,bVar"b'24"),
9312                                Bop(And,Mop(Not,bVar"b'23"),
9313                                    Bop(And,Mop(Not,bVar"b'22"),
9314                                        Bop(And,Mop(Not,bVar"b'20"),
9315                                            Bop(And,Mop(Not,bVar"b'19"),
9316                                                Bop(And,
9317                                                    Mop(Not,bVar"b'18"),
9318                                                    Bop(And,
9319                                                        Mop(Not,bVar"b'17"),
9320                                                        Bop(And,
9321                                                            Mop(Not,
9322                                                                bVar"b'16"),
9323                                                            Bop(And,
9324                                                                Mop(Not,
9325                                                                    bVar"b'5"),
9326                                                                Mop(Not,
9327                                                                    bVar"b'4")))))))))),
9328                            ITB([(Bop(And,Mop(Not,bVar"b'1"),
9329                                      Mop(Not,bVar"b'0")),
9330                                  Call
9331                                    ("ROUND_L_S",CTy"COP1",
9332                                     TP[Mop(Cast(FTy 5),
9333                                            LL[bVar"b'10",bVar"b'9",
9334                                               bVar"b'8",bVar"b'7",
9335                                               bVar"b'6"]),
9336                                        Mop(Cast(FTy 5),
9337                                            LL[bVar"b'15",bVar"b'14",
9338                                               bVar"b'13",bVar"b'12",
9339                                               bVar"b'11"])])),
9340                                 (Bop(And,Mop(Not,bVar"b'1"),bVar"b'0"),
9341                                  Call
9342                                    ("TRUNC_L_S",CTy"COP1",
9343                                     TP[Mop(Cast(FTy 5),
9344                                            LL[bVar"b'10",bVar"b'9",
9345                                               bVar"b'8",bVar"b'7",
9346                                               bVar"b'6"]),
9347                                        Mop(Cast(FTy 5),
9348                                            LL[bVar"b'15",bVar"b'14",
9349                                               bVar"b'13",bVar"b'12",
9350                                               bVar"b'11"])])),
9351                                 (Bop(And,bVar"b'1",Mop(Not,bVar"b'0")),
9352                                  Call
9353                                    ("CEIL_L_S",CTy"COP1",
9354                                     TP[Mop(Cast(FTy 5),
9355                                            LL[bVar"b'10",bVar"b'9",
9356                                               bVar"b'8",bVar"b'7",
9357                                               bVar"b'6"]),
9358                                        Mop(Cast(FTy 5),
9359                                            LL[bVar"b'15",bVar"b'14",
9360                                               bVar"b'13",bVar"b'12",
9361                                               bVar"b'11"])])),
9362                                 (Bop(And,bVar"b'1",bVar"b'0"),
9363                                  Call
9364                                    ("FLOOR_L_S",CTy"COP1",
9365                                     TP[Mop(Cast(FTy 5),
9366                                            LL[bVar"b'10",bVar"b'9",
9367                                               bVar"b'8",bVar"b'7",
9368                                               bVar"b'6"]),
9369                                        Mop(Cast(FTy 5),
9370                                            LL[bVar"b'15",bVar"b'14",
9371                                               bVar"b'13",bVar"b'12",
9372                                               bVar"b'11"])]))],
9373                                Const("UnknownFPInstruction",CTy"COP1")))],
9374                          Const("UnknownFPInstruction",CTy"COP1"))),
9375                     (bVar"b'5",
9376                      ITE(Bop(And,Mop(Not,bVar"b'24"),Mop(Not,bVar"b'22")),
9377                          ITB([(Bop(And,Mop(Not,bVar"b'23"),
9378                                    Bop(And,Mop(Not,bVar"b'7"),
9379                                        Bop(And,Mop(Not,bVar"b'6"),
9380                                            bVar"b'4"))),
9381                                Call
9382                                  ("C_cond_S",CTy"COP1",
9383                                   TP[Mop(Cast(FTy 5),
9384                                          LL[bVar"b'15",bVar"b'14",
9385                                             bVar"b'13",bVar"b'12",
9386                                             bVar"b'11"]),
9387                                      Mop(Cast(FTy 5),
9388                                          LL[bVar"b'20",bVar"b'19",
9389                                             bVar"b'18",bVar"b'17",
9390                                             bVar"b'16"]),
9391                                      Mop(Cast(FTy 3),
9392                                          LL[bVar"b'2",bVar"b'1",bVar"b'0"]),
9393                                      Mop(Cast(FTy 3),
9394                                          LL[bVar"b'10",bVar"b'9",
9395                                             bVar"b'8"])])),
9396                               (Bop(And,bVar"b'23",
9397                                    Bop(And,Mop(Not,bVar"b'20"),
9398                                        Bop(And,Mop(Not,bVar"b'19"),
9399                                            Bop(And,Mop(Not,bVar"b'18"),
9400                                                Bop(And,
9401                                                    Mop(Not,bVar"b'17"),
9402                                                    Bop(And,
9403                                                        Mop(Not,bVar"b'16"),
9404                                                        Bop(And,
9405                                                            Mop(Not,
9406                                                                bVar"b'4"),
9407                                                            Bop(And,
9408                                                                Mop(Not,
9409                                                                    bVar"b'2"),
9410                                                                Bop(And,
9411                                                                    Mop(Not,
9412                                                                        bVar"b'1"),
9413                                                                    Mop(Not,
9414                                                                        bVar"b'0")))))))))),
9415                                Call
9416                                  ("CVT_S_W",CTy"COP1",
9417                                   TP[Mop(Cast(FTy 5),
9418                                          LL[bVar"b'10",bVar"b'9",
9419                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
9420                                      Mop(Cast(FTy 5),
9421                                          LL[bVar"b'15",bVar"b'14",
9422                                             bVar"b'13",bVar"b'12",
9423                                             bVar"b'11"])])),
9424                               (Bop(And,Mop(Not,bVar"b'23"),
9425                                    Bop(And,Mop(Not,bVar"b'20"),
9426                                        Bop(And,Mop(Not,bVar"b'19"),
9427                                            Bop(And,Mop(Not,bVar"b'18"),
9428                                                Bop(And,
9429                                                    Mop(Not,bVar"b'17"),
9430                                                    Bop(And,
9431                                                        Mop(Not,bVar"b'16"),
9432                                                        Bop(And,
9433                                                            Mop(Not,
9434                                                                bVar"b'4"),
9435                                                            Bop(And,
9436                                                                Mop(Not,
9437                                                                    bVar"b'2"),
9438                                                                Bop(And,
9439                                                                    Mop(Not,
9440                                                                        bVar"b'1"),
9441                                                                    bVar"b'0"))))))))),
9442                                Call
9443                                  ("CVT_D_S",CTy"COP1",
9444                                   TP[Mop(Cast(FTy 5),
9445                                          LL[bVar"b'10",bVar"b'9",
9446                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
9447                                      Mop(Cast(FTy 5),
9448                                          LL[bVar"b'15",bVar"b'14",
9449                                             bVar"b'13",bVar"b'12",
9450                                             bVar"b'11"])])),
9451                               (Bop(And,bVar"b'23",
9452                                    Bop(And,Mop(Not,bVar"b'20"),
9453                                        Bop(And,Mop(Not,bVar"b'19"),
9454                                            Bop(And,Mop(Not,bVar"b'18"),
9455                                                Bop(And,
9456                                                    Mop(Not,bVar"b'17"),
9457                                                    Bop(And,
9458                                                        Mop(Not,bVar"b'16"),
9459                                                        Bop(And,
9460                                                            Mop(Not,
9461                                                                bVar"b'4"),
9462                                                            Bop(And,
9463                                                                Mop(Not,
9464                                                                    bVar"b'2"),
9465                                                                Bop(And,
9466                                                                    Mop(Not,
9467                                                                        bVar"b'1"),
9468                                                                    bVar"b'0"))))))))),
9469                                Call
9470                                  ("CVT_D_W",CTy"COP1",
9471                                   TP[Mop(Cast(FTy 5),
9472                                          LL[bVar"b'10",bVar"b'9",
9473                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
9474                                      Mop(Cast(FTy 5),
9475                                          LL[bVar"b'15",bVar"b'14",
9476                                             bVar"b'13",bVar"b'12",
9477                                             bVar"b'11"])])),
9478                               (Bop(And,Mop(Not,bVar"b'23"),
9479                                    Bop(And,Mop(Not,bVar"b'20"),
9480                                        Bop(And,Mop(Not,bVar"b'19"),
9481                                            Bop(And,Mop(Not,bVar"b'18"),
9482                                                Bop(And,
9483                                                    Mop(Not,bVar"b'17"),
9484                                                    Bop(And,
9485                                                        Mop(Not,bVar"b'16"),
9486                                                        Bop(And,
9487                                                            Mop(Not,
9488                                                                bVar"b'4"),
9489                                                            Bop(And,
9490                                                                bVar"b'2",
9491                                                                Bop(And,
9492                                                                    Mop(Not,
9493                                                                        bVar"b'1"),
9494                                                                    Mop(Not,
9495                                                                        bVar"b'0")))))))))),
9496                                Call
9497                                  ("CVT_W_S",CTy"COP1",
9498                                   TP[Mop(Cast(FTy 5),
9499                                          LL[bVar"b'10",bVar"b'9",
9500                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
9501                                      Mop(Cast(FTy 5),
9502                                          LL[bVar"b'15",bVar"b'14",
9503                                             bVar"b'13",bVar"b'12",
9504                                             bVar"b'11"])])),
9505                               (Bop(And,Mop(Not,bVar"b'23"),
9506                                    Bop(And,Mop(Not,bVar"b'20"),
9507                                        Bop(And,Mop(Not,bVar"b'19"),
9508                                            Bop(And,Mop(Not,bVar"b'18"),
9509                                                Bop(And,
9510                                                    Mop(Not,bVar"b'17"),
9511                                                    Bop(And,
9512                                                        Mop(Not,bVar"b'16"),
9513                                                        Bop(And,
9514                                                            Mop(Not,
9515                                                                bVar"b'4"),
9516                                                            Bop(And,
9517                                                                bVar"b'2",
9518                                                                Bop(And,
9519                                                                    Mop(Not,
9520                                                                        bVar"b'1"),
9521                                                                    bVar"b'0"))))))))),
9522                                Call
9523                                  ("CVT_L_S",CTy"COP1",
9524                                   TP[Mop(Cast(FTy 5),
9525                                          LL[bVar"b'10",bVar"b'9",
9526                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
9527                                      Mop(Cast(FTy 5),
9528                                          LL[bVar"b'15",bVar"b'14",
9529                                             bVar"b'13",bVar"b'12",
9530                                             bVar"b'11"])]))],
9531                              Const("UnknownFPInstruction",CTy"COP1")),
9532                          Const("UnknownFPInstruction",CTy"COP1"))),
9533                     (bVar"b'1",
9534                      ITE(Bop(And,Mop(Not,bVar"b'24"),
9535                              Bop(And,Mop(Not,bVar"b'23"),
9536                                  Mop(Not,bVar"b'22"))),
9537                          ITB([(Bop(And,Mop(Not,bVar"b'4"),
9538                                    Bop(And,Mop(Not,bVar"b'2"),
9539                                        Mop(Not,bVar"b'0"))),
9540                                Call
9541                                  ("MUL_S",CTy"COP1",
9542                                   TP[Mop(Cast(FTy 5),
9543                                          LL[bVar"b'10",bVar"b'9",
9544                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
9545                                      Mop(Cast(FTy 5),
9546                                          LL[bVar"b'15",bVar"b'14",
9547                                             bVar"b'13",bVar"b'12",
9548                                             bVar"b'11"]),
9549                                      Mop(Cast(FTy 5),
9550                                          LL[bVar"b'20",bVar"b'19",
9551                                             bVar"b'18",bVar"b'17",
9552                                             bVar"b'16"])])),
9553                               (Bop(And,Mop(Not,bVar"b'4"),
9554                                    Bop(And,Mop(Not,bVar"b'2"),bVar"b'0")),
9555                                Call
9556                                  ("DIV_S",CTy"COP1",
9557                                   TP[Mop(Cast(FTy 5),
9558                                          LL[bVar"b'10",bVar"b'9",
9559                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
9560                                      Mop(Cast(FTy 5),
9561                                          LL[bVar"b'15",bVar"b'14",
9562                                             bVar"b'13",bVar"b'12",
9563                                             bVar"b'11"]),
9564                                      Mop(Cast(FTy 5),
9565                                          LL[bVar"b'20",bVar"b'19",
9566                                             bVar"b'18",bVar"b'17",
9567                                             bVar"b'16"])])),
9568                               (Bop(And,Mop(Not,bVar"b'20"),
9569                                    Bop(And,Mop(Not,bVar"b'19"),
9570                                        Bop(And,Mop(Not,bVar"b'18"),
9571                                            Bop(And,Mop(Not,bVar"b'17"),
9572                                                Bop(And,
9573                                                    Mop(Not,bVar"b'16"),
9574                                                    Bop(And,
9575                                                        Mop(Not,bVar"b'4"),
9576                                                        Bop(And,bVar"b'2",
9577                                                            Mop(Not,
9578                                                                bVar"b'0")))))))),
9579                                Call
9580                                  ("MOV_S",CTy"COP1",
9581                                   TP[Mop(Cast(FTy 5),
9582                                          LL[bVar"b'10",bVar"b'9",
9583                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
9584                                      Mop(Cast(FTy 5),
9585                                          LL[bVar"b'15",bVar"b'14",
9586                                             bVar"b'13",bVar"b'12",
9587                                             bVar"b'11"])])),
9588                               (Bop(And,Mop(Not,bVar"b'20"),
9589                                    Bop(And,Mop(Not,bVar"b'19"),
9590                                        Bop(And,Mop(Not,bVar"b'18"),
9591                                            Bop(And,Mop(Not,bVar"b'17"),
9592                                                Bop(And,
9593                                                    Mop(Not,bVar"b'16"),
9594                                                    Bop(And,
9595                                                        Mop(Not,bVar"b'4"),
9596                                                        Bop(And,bVar"b'2",
9597                                                            bVar"b'0"))))))),
9598                                Call
9599                                  ("NEG_S",CTy"COP1",
9600                                   TP[Mop(Cast(FTy 5),
9601                                          LL[bVar"b'10",bVar"b'9",
9602                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
9603                                      Mop(Cast(FTy 5),
9604                                          LL[bVar"b'15",bVar"b'14",
9605                                             bVar"b'13",bVar"b'12",
9606                                             bVar"b'11"])])),
9607                               (Bop(And,bVar"b'4",
9608                                    Bop(And,Mop(Not,bVar"b'2"),
9609                                        Mop(Not,bVar"b'0"))),
9610                                Call
9611                                  ("MOVZ_S",CTy"COP1",
9612                                   TP[Mop(Cast(FTy 5),
9613                                          LL[bVar"b'10",bVar"b'9",
9614                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
9615                                      Mop(Cast(FTy 5),
9616                                          LL[bVar"b'15",bVar"b'14",
9617                                             bVar"b'13",bVar"b'12",
9618                                             bVar"b'11"]),
9619                                      Mop(Cast(FTy 5),
9620                                          LL[bVar"b'20",bVar"b'19",
9621                                             bVar"b'18",bVar"b'17",
9622                                             bVar"b'16"])])),
9623                               (Bop(And,bVar"b'4",
9624                                    Bop(And,Mop(Not,bVar"b'2"),bVar"b'0")),
9625                                Call
9626                                  ("MOVN_S",CTy"COP1",
9627                                   TP[Mop(Cast(FTy 5),
9628                                          LL[bVar"b'10",bVar"b'9",
9629                                             bVar"b'8",bVar"b'7",bVar"b'6"]),
9630                                      Mop(Cast(FTy 5),
9631                                          LL[bVar"b'15",bVar"b'14",
9632                                             bVar"b'13",bVar"b'12",
9633                                             bVar"b'11"]),
9634                                      Mop(Cast(FTy 5),
9635                                          LL[bVar"b'20",bVar"b'19",
9636                                             bVar"b'18",bVar"b'17",
9637                                             bVar"b'16"])]))],
9638                              Const("UnknownFPInstruction",CTy"COP1")),
9639                          Const("UnknownFPInstruction",CTy"COP1"))),
9640                     (Bop(And,Mop(Not,bVar"b'24"),
9641                          Bop(And,Mop(Not,bVar"b'23"),Mop(Not,bVar"b'22"))),
9642                      ITB([(Bop(And,Mop(Not,bVar"b'4"),
9643                                Bop(And,Mop(Not,bVar"b'2"),
9644                                    Mop(Not,bVar"b'0"))),
9645                            Call
9646                              ("ADD_S",CTy"COP1",
9647                               TP[Mop(Cast(FTy 5),
9648                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
9649                                         bVar"b'7",bVar"b'6"]),
9650                                  Mop(Cast(FTy 5),
9651                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
9652                                         bVar"b'12",bVar"b'11"]),
9653                                  Mop(Cast(FTy 5),
9654                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
9655                                         bVar"b'17",bVar"b'16"])])),
9656                           (Bop(And,Mop(Not,bVar"b'4"),
9657                                Bop(And,Mop(Not,bVar"b'2"),bVar"b'0")),
9658                            Call
9659                              ("SUB_S",CTy"COP1",
9660                               TP[Mop(Cast(FTy 5),
9661                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
9662                                         bVar"b'7",bVar"b'6"]),
9663                                  Mop(Cast(FTy 5),
9664                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
9665                                         bVar"b'12",bVar"b'11"]),
9666                                  Mop(Cast(FTy 5),
9667                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
9668                                         bVar"b'17",bVar"b'16"])])),
9669                           (Bop(And,Mop(Not,bVar"b'20"),
9670                                Bop(And,Mop(Not,bVar"b'19"),
9671                                    Bop(And,Mop(Not,bVar"b'18"),
9672                                        Bop(And,Mop(Not,bVar"b'17"),
9673                                            Bop(And,Mop(Not,bVar"b'16"),
9674                                                Bop(And,
9675                                                    Mop(Not,bVar"b'4"),
9676                                                    Bop(And,bVar"b'2",
9677                                                        Mop(Not,bVar"b'0")))))))),
9678                            Call
9679                              ("SQRT_S",CTy"COP1",
9680                               TP[Mop(Cast(FTy 5),
9681                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
9682                                         bVar"b'7",bVar"b'6"]),
9683                                  Mop(Cast(FTy 5),
9684                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
9685                                         bVar"b'12",bVar"b'11"])])),
9686                           (Bop(And,Mop(Not,bVar"b'20"),
9687                                Bop(And,Mop(Not,bVar"b'19"),
9688                                    Bop(And,Mop(Not,bVar"b'18"),
9689                                        Bop(And,Mop(Not,bVar"b'17"),
9690                                            Bop(And,Mop(Not,bVar"b'16"),
9691                                                Bop(And,
9692                                                    Mop(Not,bVar"b'4"),
9693                                                    Bop(And,bVar"b'2",
9694                                                        bVar"b'0"))))))),
9695                            Call
9696                              ("ABS_S",CTy"COP1",
9697                               TP[Mop(Cast(FTy 5),
9698                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
9699                                         bVar"b'7",bVar"b'6"]),
9700                                  Mop(Cast(FTy 5),
9701                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
9702                                         bVar"b'12",bVar"b'11"])])),
9703                           (Bop(And,Mop(Not,bVar"b'17"),
9704                                Bop(And,Mop(Not,bVar"b'16"),
9705                                    Bop(And,bVar"b'4",
9706                                        Bop(And,Mop(Not,bVar"b'2"),
9707                                            bVar"b'0")))),
9708                            Call
9709                              ("MOVF_S",CTy"COP1",
9710                               TP[Mop(Cast(FTy 5),
9711                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
9712                                         bVar"b'7",bVar"b'6"]),
9713                                  Mop(Cast(FTy 5),
9714                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
9715                                         bVar"b'12",bVar"b'11"]),
9716                                  Mop(Cast(FTy 3),
9717                                      LL[bVar"b'20",bVar"b'19",bVar"b'18"])])),
9718                           (Bop(And,Mop(Not,bVar"b'17"),
9719                                Bop(And,bVar"b'16",
9720                                    Bop(And,bVar"b'4",
9721                                        Bop(And,Mop(Not,bVar"b'2"),
9722                                            bVar"b'0")))),
9723                            Call
9724                              ("MOVT_S",CTy"COP1",
9725                               TP[Mop(Cast(FTy 5),
9726                                      LL[bVar"b'10",bVar"b'9",bVar"b'8",
9727                                         bVar"b'7",bVar"b'6"]),
9728                                  Mop(Cast(FTy 5),
9729                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
9730                                         bVar"b'12",bVar"b'11"]),
9731                                  Mop(Cast(FTy 3),
9732                                      LL[bVar"b'20",bVar"b'19",bVar"b'18"])]))],
9733                          Const("UnknownFPInstruction",CTy"COP1")))],
9734                    Const("UnknownFPInstruction",CTy"COP1"))),
9735               (bVar"b'24",
9736                ITE(Bop(And,Mop(Not,bVar"b'23"),Mop(Not,bVar"b'22")),
9737                    ITB([(Bop(And,Mop(Not,bVar"b'17"),Mop(Not,bVar"b'16")),
9738                          Call
9739                            ("BC1F",CTy"COP1",
9740                             TP[Mop(Cast F16,
9741                                    LL[bVar"b'15",bVar"b'14",bVar"b'13",
9742                                       bVar"b'12",bVar"b'11",bVar"b'10",
9743                                       bVar"b'9",bVar"b'8",bVar"b'7",
9744                                       bVar"b'6",bVar"b'5",bVar"b'4",
9745                                       bVar"b'3",bVar"b'2",bVar"b'1",
9746                                       bVar"b'0"]),
9747                                Mop(Cast(FTy 3),
9748                                    LL[bVar"b'20",bVar"b'19",bVar"b'18"])])),
9749                         (Bop(And,Mop(Not,bVar"b'17"),bVar"b'16"),
9750                          Call
9751                            ("BC1T",CTy"COP1",
9752                             TP[Mop(Cast F16,
9753                                    LL[bVar"b'15",bVar"b'14",bVar"b'13",
9754                                       bVar"b'12",bVar"b'11",bVar"b'10",
9755                                       bVar"b'9",bVar"b'8",bVar"b'7",
9756                                       bVar"b'6",bVar"b'5",bVar"b'4",
9757                                       bVar"b'3",bVar"b'2",bVar"b'1",
9758                                       bVar"b'0"]),
9759                                Mop(Cast(FTy 3),
9760                                    LL[bVar"b'20",bVar"b'19",bVar"b'18"])])),
9761                         (Bop(And,bVar"b'17",Mop(Not,bVar"b'16")),
9762                          Call
9763                            ("BC1FL",CTy"COP1",
9764                             TP[Mop(Cast F16,
9765                                    LL[bVar"b'15",bVar"b'14",bVar"b'13",
9766                                       bVar"b'12",bVar"b'11",bVar"b'10",
9767                                       bVar"b'9",bVar"b'8",bVar"b'7",
9768                                       bVar"b'6",bVar"b'5",bVar"b'4",
9769                                       bVar"b'3",bVar"b'2",bVar"b'1",
9770                                       bVar"b'0"]),
9771                                Mop(Cast(FTy 3),
9772                                    LL[bVar"b'20",bVar"b'19",bVar"b'18"])])),
9773                         (Bop(And,bVar"b'17",bVar"b'16"),
9774                          Call
9775                            ("BC1TL",CTy"COP1",
9776                             TP[Mop(Cast F16,
9777                                    LL[bVar"b'15",bVar"b'14",bVar"b'13",
9778                                       bVar"b'12",bVar"b'11",bVar"b'10",
9779                                       bVar"b'9",bVar"b'8",bVar"b'7",
9780                                       bVar"b'6",bVar"b'5",bVar"b'4",
9781                                       bVar"b'3",bVar"b'2",bVar"b'1",
9782                                       bVar"b'0"]),
9783                                Mop(Cast(FTy 3),
9784                                    LL[bVar"b'20",bVar"b'19",bVar"b'18"])]))],
9785                        Const("UnknownFPInstruction",CTy"COP1")),
9786                    Const("UnknownFPInstruction",CTy"COP1"))),
9787               (Bop(And,Mop(Not,bVar"b'10"),
9788                    Bop(And,Mop(Not,bVar"b'9"),
9789                        Bop(And,Mop(Not,bVar"b'8"),
9790                            Bop(And,Mop(Not,bVar"b'7"),
9791                                Bop(And,Mop(Not,bVar"b'6"),
9792                                    Bop(And,Mop(Not,bVar"b'5"),
9793                                        Bop(And,Mop(Not,bVar"b'4"),
9794                                            Bop(And,Mop(Not,bVar"b'3"),
9795                                                Bop(And,
9796                                                    Mop(Not,bVar"b'2"),
9797                                                    Bop(And,
9798                                                        Mop(Not,bVar"b'1"),
9799                                                        Mop(Not,bVar"b'0"))))))))))),
9800                ITB([(Bop(And,Mop(Not,bVar"b'23"),Mop(Not,bVar"b'22")),
9801                      Call
9802                        ("MFC1",CTy"COP1",
9803                         TP[Mop(Cast(FTy 5),
9804                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
9805                                   bVar"b'17",bVar"b'16"]),
9806                            Mop(Cast(FTy 5),
9807                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
9808                                   bVar"b'12",bVar"b'11"])])),
9809                     (Bop(And,Mop(Not,bVar"b'23"),bVar"b'22"),
9810                      Call
9811                        ("CFC1",CTy"COP1",
9812                         TP[Mop(Cast(FTy 5),
9813                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
9814                                   bVar"b'17",bVar"b'16"]),
9815                            Mop(Cast(FTy 5),
9816                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
9817                                   bVar"b'12",bVar"b'11"])])),
9818                     (Bop(And,bVar"b'23",Mop(Not,bVar"b'22")),
9819                      Call
9820                        ("MTC1",CTy"COP1",
9821                         TP[Mop(Cast(FTy 5),
9822                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
9823                                   bVar"b'17",bVar"b'16"]),
9824                            Mop(Cast(FTy 5),
9825                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
9826                                   bVar"b'12",bVar"b'11"])])),
9827                     (Bop(And,bVar"b'23",bVar"b'22"),
9828                      Call
9829                        ("CTC1",CTy"COP1",
9830                         TP[Mop(Cast(FTy 5),
9831                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
9832                                   bVar"b'17",bVar"b'16"]),
9833                            Mop(Cast(FTy 5),
9834                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
9835                                   bVar"b'12",bVar"b'11"])]))],
9836                    Const("UnknownFPInstruction",CTy"COP1")))],
9837              Const("UnknownFPInstruction",CTy"COP1")))))
9838;
9839val LDC1Decode_def = Def
9840  ("LDC1Decode",TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)],
9841   Call
9842     ("COP1",CTy"instruction",
9843      Call
9844        ("LDC1",CTy"COP1",
9845         TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)])))
9846;
9847val LWC1Decode_def = Def
9848  ("LWC1Decode",TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)],
9849   Call
9850     ("COP1",CTy"instruction",
9851      Call
9852        ("LWC1",CTy"COP1",
9853         TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)])))
9854;
9855val SDC1Decode_def = Def
9856  ("SDC1Decode",TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)],
9857   Call
9858     ("COP1",CTy"instruction",
9859      Call
9860        ("SDC1",CTy"COP1",
9861         TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)])))
9862;
9863val SWC1Decode_def = Def
9864  ("SWC1Decode",TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)],
9865   Call
9866     ("COP1",CTy"instruction",
9867      Call
9868        ("SWC1",CTy"COP1",
9869         TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)])))
9870;
9871val MOVCIDecode_def = Def
9872  ("MOVCIDecode",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)],
9873   Let(TP[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"],
9874       BL(5,Var("rt",FTy 5)),
9875       ITE(Mop(Not,bVar"b'1"),
9876           ITB([(Mop(Not,bVar"b'0"),
9877                 Call
9878                   ("COP1",CTy"instruction",
9879                    Call
9880                      ("MOVF",CTy"COP1",
9881                       TP[Var("rd",FTy 5),Var("rs",FTy 5),
9882                          Mop(Cast(FTy 3),
9883                              LL[bVar"b'4",bVar"b'3",bVar"b'2"])]))),
9884                (bVar"b'0",
9885                 Call
9886                   ("COP1",CTy"instruction",
9887                    Call
9888                      ("MOVT",CTy"COP1",
9889                       TP[Var("rd",FTy 5),Var("rs",FTy 5),
9890                          Mop(Cast(FTy 3),
9891                              LL[bVar"b'4",bVar"b'3",bVar"b'2"])])))],
9892               Const("ReservedInstruction",CTy"instruction")),
9893           Const("ReservedInstruction",CTy"instruction"))))
9894;
9895val COP3Decode_def = Def
9896  ("COP3Decode",Var("v",FTy 26),
9897   Call
9898     ("COP1",CTy"instruction",
9899      Let(TP[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",bVar"b'21",
9900             bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",bVar"b'16",
9901             bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",bVar"b'11",
9902             bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6",bVar"b'5",
9903             bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"],
9904          BL(26,Var("v",FTy 26)),
9905          ITB([(bVar"b'5",
9906                ITE(Bop(And,Mop(Not,bVar"b'4"),
9907                        Bop(And,Mop(Not,bVar"b'2"),Mop(Not,bVar"b'1"))),
9908                    ITB([(Bop(And,Mop(Not,bVar"b'3"),Mop(Not,bVar"b'0")),
9909                          Call
9910                            ("MADD_S",CTy"COP1",
9911                             TP[Mop(Cast(FTy 5),
9912                                    LL[bVar"b'10",bVar"b'9",bVar"b'8",
9913                                       bVar"b'7",bVar"b'6"]),
9914                                Mop(Cast(FTy 5),
9915                                    LL[bVar"b'25",bVar"b'24",bVar"b'23",
9916                                       bVar"b'22",bVar"b'21"]),
9917                                Mop(Cast(FTy 5),
9918                                    LL[bVar"b'15",bVar"b'14",bVar"b'13",
9919                                       bVar"b'12",bVar"b'11"]),
9920                                Mop(Cast(FTy 5),
9921                                    LL[bVar"b'20",bVar"b'19",bVar"b'18",
9922                                       bVar"b'17",bVar"b'16"])])),
9923                         (Bop(And,Mop(Not,bVar"b'3"),bVar"b'0"),
9924                          Call
9925                            ("MADD_D",CTy"COP1",
9926                             TP[Mop(Cast(FTy 5),
9927                                    LL[bVar"b'10",bVar"b'9",bVar"b'8",
9928                                       bVar"b'7",bVar"b'6"]),
9929                                Mop(Cast(FTy 5),
9930                                    LL[bVar"b'25",bVar"b'24",bVar"b'23",
9931                                       bVar"b'22",bVar"b'21"]),
9932                                Mop(Cast(FTy 5),
9933                                    LL[bVar"b'15",bVar"b'14",bVar"b'13",
9934                                       bVar"b'12",bVar"b'11"]),
9935                                Mop(Cast(FTy 5),
9936                                    LL[bVar"b'20",bVar"b'19",bVar"b'18",
9937                                       bVar"b'17",bVar"b'16"])])),
9938                         (Bop(And,bVar"b'3",Mop(Not,bVar"b'0")),
9939                          Call
9940                            ("MSUB_S",CTy"COP1",
9941                             TP[Mop(Cast(FTy 5),
9942                                    LL[bVar"b'10",bVar"b'9",bVar"b'8",
9943                                       bVar"b'7",bVar"b'6"]),
9944                                Mop(Cast(FTy 5),
9945                                    LL[bVar"b'25",bVar"b'24",bVar"b'23",
9946                                       bVar"b'22",bVar"b'21"]),
9947                                Mop(Cast(FTy 5),
9948                                    LL[bVar"b'15",bVar"b'14",bVar"b'13",
9949                                       bVar"b'12",bVar"b'11"]),
9950                                Mop(Cast(FTy 5),
9951                                    LL[bVar"b'20",bVar"b'19",bVar"b'18",
9952                                       bVar"b'17",bVar"b'16"])])),
9953                         (Bop(And,bVar"b'3",bVar"b'0"),
9954                          Call
9955                            ("MSUB_D",CTy"COP1",
9956                             TP[Mop(Cast(FTy 5),
9957                                    LL[bVar"b'10",bVar"b'9",bVar"b'8",
9958                                       bVar"b'7",bVar"b'6"]),
9959                                Mop(Cast(FTy 5),
9960                                    LL[bVar"b'25",bVar"b'24",bVar"b'23",
9961                                       bVar"b'22",bVar"b'21"]),
9962                                Mop(Cast(FTy 5),
9963                                    LL[bVar"b'15",bVar"b'14",bVar"b'13",
9964                                       bVar"b'12",bVar"b'11"]),
9965                                Mop(Cast(FTy 5),
9966                                    LL[bVar"b'20",bVar"b'19",bVar"b'18",
9967                                       bVar"b'17",bVar"b'16"])]))],
9968                        Const("UnknownFPInstruction",CTy"COP1")),
9969                    Const("UnknownFPInstruction",CTy"COP1"))),
9970               (Bop(And,Mop(Not,bVar"b'4"),
9971                    Bop(And,Mop(Not,bVar"b'2"),Mop(Not,bVar"b'1"))),
9972                ITB([(Bop(And,Mop(Not,bVar"b'15"),
9973                          Bop(And,Mop(Not,bVar"b'14"),
9974                              Bop(And,Mop(Not,bVar"b'13"),
9975                                  Bop(And,Mop(Not,bVar"b'12"),
9976                                      Bop(And,Mop(Not,bVar"b'11"),
9977                                          Bop(And,Mop(Not,bVar"b'3"),
9978                                              Mop(Not,bVar"b'0"))))))),
9979                      Call
9980                        ("LWXC1",CTy"COP1",
9981                         TP[Mop(Cast(FTy 5),
9982                                LL[bVar"b'10",bVar"b'9",bVar"b'8",
9983                                   bVar"b'7",bVar"b'6"]),
9984                            Mop(Cast(FTy 5),
9985                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
9986                                   bVar"b'17",bVar"b'16"]),
9987                            Mop(Cast(FTy 5),
9988                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
9989                                   bVar"b'22",bVar"b'21"])])),
9990                     (Bop(And,Mop(Not,bVar"b'15"),
9991                          Bop(And,Mop(Not,bVar"b'14"),
9992                              Bop(And,Mop(Not,bVar"b'13"),
9993                                  Bop(And,Mop(Not,bVar"b'12"),
9994                                      Bop(And,Mop(Not,bVar"b'11"),
9995                                          Bop(And,Mop(Not,bVar"b'3"),
9996                                              bVar"b'0")))))),
9997                      Call
9998                        ("LDXC1",CTy"COP1",
9999                         TP[Mop(Cast(FTy 5),
10000                                LL[bVar"b'10",bVar"b'9",bVar"b'8",
10001                                   bVar"b'7",bVar"b'6"]),
10002                            Mop(Cast(FTy 5),
10003                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
10004                                   bVar"b'17",bVar"b'16"]),
10005                            Mop(Cast(FTy 5),
10006                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
10007                                   bVar"b'22",bVar"b'21"])])),
10008                     (Bop(And,Mop(Not,bVar"b'10"),
10009                          Bop(And,Mop(Not,bVar"b'9"),
10010                              Bop(And,Mop(Not,bVar"b'8"),
10011                                  Bop(And,Mop(Not,bVar"b'7"),
10012                                      Bop(And,Mop(Not,bVar"b'6"),
10013                                          Bop(And,bVar"b'3",
10014                                              Mop(Not,bVar"b'0"))))))),
10015                      Call
10016                        ("SWXC1",CTy"COP1",
10017                         TP[Mop(Cast(FTy 5),
10018                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
10019                                   bVar"b'12",bVar"b'11"]),
10020                            Mop(Cast(FTy 5),
10021                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
10022                                   bVar"b'17",bVar"b'16"]),
10023                            Mop(Cast(FTy 5),
10024                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
10025                                   bVar"b'22",bVar"b'21"])])),
10026                     (Bop(And,Mop(Not,bVar"b'10"),
10027                          Bop(And,Mop(Not,bVar"b'9"),
10028                              Bop(And,Mop(Not,bVar"b'8"),
10029                                  Bop(And,Mop(Not,bVar"b'7"),
10030                                      Bop(And,Mop(Not,bVar"b'6"),
10031                                          Bop(And,bVar"b'3",bVar"b'0")))))),
10032                      Call
10033                        ("SDXC1",CTy"COP1",
10034                         TP[Mop(Cast(FTy 5),
10035                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
10036                                   bVar"b'12",bVar"b'11"]),
10037                            Mop(Cast(FTy 5),
10038                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
10039                                   bVar"b'17",bVar"b'16"]),
10040                            Mop(Cast(FTy 5),
10041                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
10042                                   bVar"b'22",bVar"b'21"])]))],
10043                    Const("UnknownFPInstruction",CTy"COP1")))],
10044              Const("UnknownFPInstruction",CTy"COP1")))))
10045;
10046val Decode_def = Def
10047  ("Decode",Var("w",F32),
10048   Let(TP[bVar"b'31",bVar"b'30",bVar"b'29",bVar"b'28",bVar"b'27",
10049          bVar"b'26",bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
10050          bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
10051          bVar"b'16",bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
10052          bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6",
10053          bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"],
10054       BL(32,Var("w",F32)),
10055       ITB([(bVar"b'26",
10056             ITB([(bVar"b'28",
10057                   ITB([(bVar"b'31",
10058                         ITB([(bVar"b'30",
10059                               ITB([(Bop(And,Mop(Not,bVar"b'29"),
10060                                         bVar"b'27"),
10061                                     Call
10062                                       ("Load",CTy"instruction",
10063                                        Call
10064                                          ("LD",CTy"Load",
10065                                           TP[Mop(Cast(FTy 5),
10066                                                  LL[bVar"b'25",
10067                                                     bVar"b'24",
10068                                                     bVar"b'23",
10069                                                     bVar"b'22",bVar"b'21"]),
10070                                              Mop(Cast(FTy 5),
10071                                                  LL[bVar"b'20",
10072                                                     bVar"b'19",
10073                                                     bVar"b'18",
10074                                                     bVar"b'17",bVar"b'16"]),
10075                                              Mop(Cast F16,
10076                                                  LL[bVar"b'15",
10077                                                     bVar"b'14",
10078                                                     bVar"b'13",
10079                                                     bVar"b'12",
10080                                                     bVar"b'11",
10081                                                     bVar"b'10",bVar"b'9",
10082                                                     bVar"b'8",bVar"b'7",
10083                                                     bVar"b'6",bVar"b'5",
10084                                                     bVar"b'4",bVar"b'3",
10085                                                     bVar"b'2",bVar"b'1",
10086                                                     bVar"b'0"])]))),
10087                                    (Bop(And,bVar"b'29",bVar"b'27"),
10088                                     Call
10089                                       ("Store",CTy"instruction",
10090                                        Call
10091                                          ("SD",CTy"Store",
10092                                           TP[Mop(Cast(FTy 5),
10093                                                  LL[bVar"b'25",
10094                                                     bVar"b'24",
10095                                                     bVar"b'23",
10096                                                     bVar"b'22",bVar"b'21"]),
10097                                              Mop(Cast(FTy 5),
10098                                                  LL[bVar"b'20",
10099                                                     bVar"b'19",
10100                                                     bVar"b'18",
10101                                                     bVar"b'17",bVar"b'16"]),
10102                                              Mop(Cast F16,
10103                                                  LL[bVar"b'15",
10104                                                     bVar"b'14",
10105                                                     bVar"b'13",
10106                                                     bVar"b'12",
10107                                                     bVar"b'11",
10108                                                     bVar"b'10",bVar"b'9",
10109                                                     bVar"b'8",bVar"b'7",
10110                                                     bVar"b'6",bVar"b'5",
10111                                                     bVar"b'4",bVar"b'3",
10112                                                     bVar"b'2",bVar"b'1",
10113                                                     bVar"b'0"])]))),
10114                                    (Bop(And,Mop(Not,bVar"b'29"),
10115                                         Mop(Not,bVar"b'27")),
10116                                     Call
10117                                       ("LDC1Decode",CTy"instruction",
10118                                        TP[Mop(Cast(FTy 5),
10119                                               LL[bVar"b'20",bVar"b'19",
10120                                                  bVar"b'18",bVar"b'17",
10121                                                  bVar"b'16"]),
10122                                           Mop(Cast F16,
10123                                               LL[bVar"b'15",bVar"b'14",
10124                                                  bVar"b'13",bVar"b'12",
10125                                                  bVar"b'11",bVar"b'10",
10126                                                  bVar"b'9",bVar"b'8",
10127                                                  bVar"b'7",bVar"b'6",
10128                                                  bVar"b'5",bVar"b'4",
10129                                                  bVar"b'3",bVar"b'2",
10130                                                  bVar"b'1",bVar"b'0"]),
10131                                           Mop(Cast(FTy 5),
10132                                               LL[bVar"b'25",bVar"b'24",
10133                                                  bVar"b'23",bVar"b'22",
10134                                                  bVar"b'21"])])),
10135                                    (Bop(And,bVar"b'29",
10136                                         Mop(Not,bVar"b'27")),
10137                                     Call
10138                                       ("SDC1Decode",CTy"instruction",
10139                                        TP[Mop(Cast(FTy 5),
10140                                               LL[bVar"b'20",bVar"b'19",
10141                                                  bVar"b'18",bVar"b'17",
10142                                                  bVar"b'16"]),
10143                                           Mop(Cast F16,
10144                                               LL[bVar"b'15",bVar"b'14",
10145                                                  bVar"b'13",bVar"b'12",
10146                                                  bVar"b'11",bVar"b'10",
10147                                                  bVar"b'9",bVar"b'8",
10148                                                  bVar"b'7",bVar"b'6",
10149                                                  bVar"b'5",bVar"b'4",
10150                                                  bVar"b'3",bVar"b'2",
10151                                                  bVar"b'1",bVar"b'0"]),
10152                                           Mop(Cast(FTy 5),
10153                                               LL[bVar"b'25",bVar"b'24",
10154                                                  bVar"b'23",bVar"b'22",
10155                                                  bVar"b'21"])]))],
10156                                   Const
10157                                     ("ReservedInstruction",
10158                                      CTy"instruction"))),
10159                              (Bop(And,Mop(Not,bVar"b'29"),
10160                                   Mop(Not,bVar"b'27")),
10161                               Call
10162                                 ("Load",CTy"instruction",
10163                                  Call
10164                                    ("LHU",CTy"Load",
10165                                     TP[Mop(Cast(FTy 5),
10166                                            LL[bVar"b'25",bVar"b'24",
10167                                               bVar"b'23",bVar"b'22",
10168                                               bVar"b'21"]),
10169                                        Mop(Cast(FTy 5),
10170                                            LL[bVar"b'20",bVar"b'19",
10171                                               bVar"b'18",bVar"b'17",
10172                                               bVar"b'16"]),
10173                                        Mop(Cast F16,
10174                                            LL[bVar"b'15",bVar"b'14",
10175                                               bVar"b'13",bVar"b'12",
10176                                               bVar"b'11",bVar"b'10",
10177                                               bVar"b'9",bVar"b'8",
10178                                               bVar"b'7",bVar"b'6",
10179                                               bVar"b'5",bVar"b'4",
10180                                               bVar"b'3",bVar"b'2",
10181                                               bVar"b'1",bVar"b'0"])]))),
10182                              (Bop(And,Mop(Not,bVar"b'29"),bVar"b'27"),
10183                               Call
10184                                 ("Load",CTy"instruction",
10185                                  Call
10186                                    ("LWU",CTy"Load",
10187                                     TP[Mop(Cast(FTy 5),
10188                                            LL[bVar"b'25",bVar"b'24",
10189                                               bVar"b'23",bVar"b'22",
10190                                               bVar"b'21"]),
10191                                        Mop(Cast(FTy 5),
10192                                            LL[bVar"b'20",bVar"b'19",
10193                                               bVar"b'18",bVar"b'17",
10194                                               bVar"b'16"]),
10195                                        Mop(Cast F16,
10196                                            LL[bVar"b'15",bVar"b'14",
10197                                               bVar"b'13",bVar"b'12",
10198                                               bVar"b'11",bVar"b'10",
10199                                               bVar"b'9",bVar"b'8",
10200                                               bVar"b'7",bVar"b'6",
10201                                               bVar"b'5",bVar"b'4",
10202                                               bVar"b'3",bVar"b'2",
10203                                               bVar"b'1",bVar"b'0"])]))),
10204                              (Bop(And,bVar"b'29",Mop(Not,bVar"b'27")),
10205                               Call
10206                                 ("Store",CTy"instruction",
10207                                  Call
10208                                    ("SDR",CTy"Store",
10209                                     TP[Mop(Cast(FTy 5),
10210                                            LL[bVar"b'25",bVar"b'24",
10211                                               bVar"b'23",bVar"b'22",
10212                                               bVar"b'21"]),
10213                                        Mop(Cast(FTy 5),
10214                                            LL[bVar"b'20",bVar"b'19",
10215                                               bVar"b'18",bVar"b'17",
10216                                               bVar"b'16"]),
10217                                        Mop(Cast F16,
10218                                            LL[bVar"b'15",bVar"b'14",
10219                                               bVar"b'13",bVar"b'12",
10220                                               bVar"b'11",bVar"b'10",
10221                                               bVar"b'9",bVar"b'8",
10222                                               bVar"b'7",bVar"b'6",
10223                                               bVar"b'5",bVar"b'4",
10224                                               bVar"b'3",bVar"b'2",
10225                                               bVar"b'1",bVar"b'0"])]))),
10226                              (Bop(And,bVar"b'29",bVar"b'27"),
10227                               Call
10228                                 ("CACHE",CTy"instruction",
10229                                  TP[Mop(Cast(FTy 5),
10230                                         LL[bVar"b'25",bVar"b'24",
10231                                            bVar"b'23",bVar"b'22",
10232                                            bVar"b'21"]),
10233                                     Mop(Cast(FTy 5),
10234                                         LL[bVar"b'20",bVar"b'19",
10235                                            bVar"b'18",bVar"b'17",
10236                                            bVar"b'16"]),
10237                                     Mop(Cast F16,
10238                                         LL[bVar"b'15",bVar"b'14",
10239                                            bVar"b'13",bVar"b'12",
10240                                            bVar"b'11",bVar"b'10",
10241                                            bVar"b'9",bVar"b'8",bVar"b'7",
10242                                            bVar"b'6",bVar"b'5",bVar"b'4",
10243                                            bVar"b'3",bVar"b'2",bVar"b'1",
10244                                            bVar"b'0"])]))],
10245                             Const("ReservedInstruction",CTy"instruction"))),
10246                        (Bop(And,Mop(Not,bVar"b'30"),
10247                             Bop(And,Mop(Not,bVar"b'29"),
10248                                 Bop(And,bVar"b'27",
10249                                     Bop(And,Mop(Not,bVar"b'20"),
10250                                         Bop(And,Mop(Not,bVar"b'19"),
10251                                             Bop(And,Mop(Not,bVar"b'18"),
10252                                                 Bop(And,
10253                                                     Mop(Not,bVar"b'17"),
10254                                                     Mop(Not,bVar"b'16")))))))),
10255                         Call
10256                           ("Branch",CTy"instruction",
10257                            Call
10258                              ("BGTZ",CTy"Branch",
10259                               TP[Mop(Cast(FTy 5),
10260                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
10261                                         bVar"b'22",bVar"b'21"]),
10262                                  Mop(Cast F16,
10263                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
10264                                         bVar"b'12",bVar"b'11",bVar"b'10",
10265                                         bVar"b'9",bVar"b'8",bVar"b'7",
10266                                         bVar"b'6",bVar"b'5",bVar"b'4",
10267                                         bVar"b'3",bVar"b'2",bVar"b'1",
10268                                         bVar"b'0"])]))),
10269                        (Bop(And,Mop(Not,bVar"b'30"),
10270                             Bop(And,bVar"b'29",
10271                                 Bop(And,bVar"b'27",
10272                                     Bop(And,Mop(Not,bVar"b'25"),
10273                                         Bop(And,Mop(Not,bVar"b'24"),
10274                                             Bop(And,Mop(Not,bVar"b'23"),
10275                                                 Bop(And,
10276                                                     Mop(Not,bVar"b'22"),
10277                                                     Mop(Not,bVar"b'21")))))))),
10278                         Call
10279                           ("ArithI",CTy"instruction",
10280                            Call
10281                              ("LUI",CTy"ArithI",
10282                               TP[Mop(Cast(FTy 5),
10283                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
10284                                         bVar"b'17",bVar"b'16"]),
10285                                  Mop(Cast F16,
10286                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
10287                                         bVar"b'12",bVar"b'11",bVar"b'10",
10288                                         bVar"b'9",bVar"b'8",bVar"b'7",
10289                                         bVar"b'6",bVar"b'5",bVar"b'4",
10290                                         bVar"b'3",bVar"b'2",bVar"b'1",
10291                                         bVar"b'0"])]))),
10292                        (Bop(And,bVar"b'30",
10293                             Bop(And,Mop(Not,bVar"b'29"),
10294                                 Bop(And,bVar"b'27",
10295                                     Bop(And,Mop(Not,bVar"b'20"),
10296                                         Bop(And,Mop(Not,bVar"b'19"),
10297                                             Bop(And,Mop(Not,bVar"b'18"),
10298                                                 Bop(And,
10299                                                     Mop(Not,bVar"b'17"),
10300                                                     Mop(Not,bVar"b'16")))))))),
10301                         Call
10302                           ("Branch",CTy"instruction",
10303                            Call
10304                              ("BGTZL",CTy"Branch",
10305                               TP[Mop(Cast(FTy 5),
10306                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
10307                                         bVar"b'22",bVar"b'21"]),
10308                                  Mop(Cast F16,
10309                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
10310                                         bVar"b'12",bVar"b'11",bVar"b'10",
10311                                         bVar"b'9",bVar"b'8",bVar"b'7",
10312                                         bVar"b'6",bVar"b'5",bVar"b'4",
10313                                         bVar"b'3",bVar"b'2",bVar"b'1",
10314                                         bVar"b'0"])]))),
10315                        (Bop(And,Mop(Not,bVar"b'30"),
10316                             Bop(And,Mop(Not,bVar"b'29"),
10317                                 Mop(Not,bVar"b'27"))),
10318                         Call
10319                           ("Branch",CTy"instruction",
10320                            Call
10321                              ("BNE",CTy"Branch",
10322                               TP[Mop(Cast(FTy 5),
10323                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
10324                                         bVar"b'22",bVar"b'21"]),
10325                                  Mop(Cast(FTy 5),
10326                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
10327                                         bVar"b'17",bVar"b'16"]),
10328                                  Mop(Cast F16,
10329                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
10330                                         bVar"b'12",bVar"b'11",bVar"b'10",
10331                                         bVar"b'9",bVar"b'8",bVar"b'7",
10332                                         bVar"b'6",bVar"b'5",bVar"b'4",
10333                                         bVar"b'3",bVar"b'2",bVar"b'1",
10334                                         bVar"b'0"])]))),
10335                        (Bop(And,Mop(Not,bVar"b'30"),
10336                             Bop(And,bVar"b'29",Mop(Not,bVar"b'27"))),
10337                         Call
10338                           ("ArithI",CTy"instruction",
10339                            Call
10340                              ("ORI",CTy"ArithI",
10341                               TP[Mop(Cast(FTy 5),
10342                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
10343                                         bVar"b'22",bVar"b'21"]),
10344                                  Mop(Cast(FTy 5),
10345                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
10346                                         bVar"b'17",bVar"b'16"]),
10347                                  Mop(Cast F16,
10348                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
10349                                         bVar"b'12",bVar"b'11",bVar"b'10",
10350                                         bVar"b'9",bVar"b'8",bVar"b'7",
10351                                         bVar"b'6",bVar"b'5",bVar"b'4",
10352                                         bVar"b'3",bVar"b'2",bVar"b'1",
10353                                         bVar"b'0"])]))),
10354                        (Bop(And,bVar"b'30",
10355                             Bop(And,Mop(Not,bVar"b'29"),
10356                                 Mop(Not,bVar"b'27"))),
10357                         Call
10358                           ("Branch",CTy"instruction",
10359                            Call
10360                              ("BNEL",CTy"Branch",
10361                               TP[Mop(Cast(FTy 5),
10362                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
10363                                         bVar"b'22",bVar"b'21"]),
10364                                  Mop(Cast(FTy 5),
10365                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
10366                                         bVar"b'17",bVar"b'16"]),
10367                                  Mop(Cast F16,
10368                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
10369                                         bVar"b'12",bVar"b'11",bVar"b'10",
10370                                         bVar"b'9",bVar"b'8",bVar"b'7",
10371                                         bVar"b'6",bVar"b'5",bVar"b'4",
10372                                         bVar"b'3",bVar"b'2",bVar"b'1",
10373                                         bVar"b'0"])]))),
10374                        (Bop(And,bVar"b'30",
10375                             Bop(And,bVar"b'29",
10376                                 Bop(And,bVar"b'27",
10377                                     Bop(And,Mop(Not,bVar"b'25"),
10378                                         Bop(And,Mop(Not,bVar"b'24"),
10379                                             Bop(And,Mop(Not,bVar"b'23"),
10380                                                 Bop(And,
10381                                                     Mop(Not,bVar"b'22"),
10382                                                     Bop(And,
10383                                                         Mop(Not,
10384                                                             bVar"b'21"),
10385                                                         Bop(And,
10386                                                             Mop(Not,
10387                                                                 bVar"b'10"),
10388                                                             Bop(And,
10389                                                                 Mop(Not,
10390                                                                     bVar"b'9"),
10391                                                                 Bop(And,
10392                                                                     Mop(Not,
10393                                                                         bVar"b'8"),
10394                                                                     Bop(And,
10395                                                                         Mop(Not,
10396                                                                             bVar"b'7"),
10397                                                                         Bop(And,
10398                                                                             Mop(Not,
10399                                                                                 bVar"b'6"),
10400                                                                             Bop(And,
10401                                                                                 bVar"b'5",
10402                                                                                 Bop(And,
10403                                                                                     bVar"b'4",
10404                                                                                     Bop(And,
10405                                                                                         bVar"b'3",
10406                                                                                         Bop(And,
10407                                                                                             Mop(Not,
10408                                                                                                 bVar"b'2"),
10409                                                                                             Bop(And,
10410                                                                                                 bVar"b'1",
10411                                                                                                 bVar"b'0")))))))))))))))))),
10412                         Call
10413                           ("RDHWR",CTy"instruction",
10414                            TP[Mop(Cast(FTy 5),
10415                                   LL[bVar"b'20",bVar"b'19",bVar"b'18",
10416                                      bVar"b'17",bVar"b'16"]),
10417                               Mop(Cast(FTy 5),
10418                                   LL[bVar"b'15",bVar"b'14",bVar"b'13",
10419                                      bVar"b'12",bVar"b'11"])]))],
10420                       Const("ReservedInstruction",CTy"instruction"))),
10421                  (bVar"b'29",
10422                   ITB([(Bop(And,Mop(Not,bVar"b'31"),
10423                             Bop(And,Mop(Not,bVar"b'30"),
10424                                 Mop(Not,bVar"b'27"))),
10425                         Call
10426                           ("ArithI",CTy"instruction",
10427                            Call
10428                              ("ADDIU",CTy"ArithI",
10429                               TP[Mop(Cast(FTy 5),
10430                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
10431                                         bVar"b'22",bVar"b'21"]),
10432                                  Mop(Cast(FTy 5),
10433                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
10434                                         bVar"b'17",bVar"b'16"]),
10435                                  Mop(Cast F16,
10436                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
10437                                         bVar"b'12",bVar"b'11",bVar"b'10",
10438                                         bVar"b'9",bVar"b'8",bVar"b'7",
10439                                         bVar"b'6",bVar"b'5",bVar"b'4",
10440                                         bVar"b'3",bVar"b'2",bVar"b'1",
10441                                         bVar"b'0"])]))),
10442                        (Bop(And,Mop(Not,bVar"b'31"),
10443                             Bop(And,Mop(Not,bVar"b'30"),bVar"b'27")),
10444                         Call
10445                           ("ArithI",CTy"instruction",
10446                            Call
10447                              ("SLTIU",CTy"ArithI",
10448                               TP[Mop(Cast(FTy 5),
10449                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
10450                                         bVar"b'22",bVar"b'21"]),
10451                                  Mop(Cast(FTy 5),
10452                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
10453                                         bVar"b'17",bVar"b'16"]),
10454                                  Mop(Cast F16,
10455                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
10456                                         bVar"b'12",bVar"b'11",bVar"b'10",
10457                                         bVar"b'9",bVar"b'8",bVar"b'7",
10458                                         bVar"b'6",bVar"b'5",bVar"b'4",
10459                                         bVar"b'3",bVar"b'2",bVar"b'1",
10460                                         bVar"b'0"])]))),
10461                        (Bop(And,Mop(Not,bVar"b'31"),
10462                             Bop(And,bVar"b'30",Mop(Not,bVar"b'27"))),
10463                         Call
10464                           ("ArithI",CTy"instruction",
10465                            Call
10466                              ("DADDIU",CTy"ArithI",
10467                               TP[Mop(Cast(FTy 5),
10468                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
10469                                         bVar"b'22",bVar"b'21"]),
10470                                  Mop(Cast(FTy 5),
10471                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
10472                                         bVar"b'17",bVar"b'16"]),
10473                                  Mop(Cast F16,
10474                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
10475                                         bVar"b'12",bVar"b'11",bVar"b'10",
10476                                         bVar"b'9",bVar"b'8",bVar"b'7",
10477                                         bVar"b'6",bVar"b'5",bVar"b'4",
10478                                         bVar"b'3",bVar"b'2",bVar"b'1",
10479                                         bVar"b'0"])]))),
10480                        (Bop(And,Mop(Not,bVar"b'31"),
10481                             Bop(And,bVar"b'30",bVar"b'27")),
10482                         Call
10483                           ("Load",CTy"instruction",
10484                            Call
10485                              ("LDR",CTy"Load",
10486                               TP[Mop(Cast(FTy 5),
10487                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
10488                                         bVar"b'22",bVar"b'21"]),
10489                                  Mop(Cast(FTy 5),
10490                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
10491                                         bVar"b'17",bVar"b'16"]),
10492                                  Mop(Cast F16,
10493                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
10494                                         bVar"b'12",bVar"b'11",bVar"b'10",
10495                                         bVar"b'9",bVar"b'8",bVar"b'7",
10496                                         bVar"b'6",bVar"b'5",bVar"b'4",
10497                                         bVar"b'3",bVar"b'2",bVar"b'1",
10498                                         bVar"b'0"])]))),
10499                        (Bop(And,bVar"b'31",
10500                             Bop(And,Mop(Not,bVar"b'30"),
10501                                 Mop(Not,bVar"b'27"))),
10502                         Call
10503                           ("Store",CTy"instruction",
10504                            Call
10505                              ("SH",CTy"Store",
10506                               TP[Mop(Cast(FTy 5),
10507                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
10508                                         bVar"b'22",bVar"b'21"]),
10509                                  Mop(Cast(FTy 5),
10510                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
10511                                         bVar"b'17",bVar"b'16"]),
10512                                  Mop(Cast F16,
10513                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
10514                                         bVar"b'12",bVar"b'11",bVar"b'10",
10515                                         bVar"b'9",bVar"b'8",bVar"b'7",
10516                                         bVar"b'6",bVar"b'5",bVar"b'4",
10517                                         bVar"b'3",bVar"b'2",bVar"b'1",
10518                                         bVar"b'0"])]))),
10519                        (Bop(And,bVar"b'31",
10520                             Bop(And,Mop(Not,bVar"b'30"),bVar"b'27")),
10521                         Call
10522                           ("Store",CTy"instruction",
10523                            Call
10524                              ("SW",CTy"Store",
10525                               TP[Mop(Cast(FTy 5),
10526                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
10527                                         bVar"b'22",bVar"b'21"]),
10528                                  Mop(Cast(FTy 5),
10529                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
10530                                         bVar"b'17",bVar"b'16"]),
10531                                  Mop(Cast F16,
10532                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
10533                                         bVar"b'12",bVar"b'11",bVar"b'10",
10534                                         bVar"b'9",bVar"b'8",bVar"b'7",
10535                                         bVar"b'6",bVar"b'5",bVar"b'4",
10536                                         bVar"b'3",bVar"b'2",bVar"b'1",
10537                                         bVar"b'0"])]))),
10538                        (Bop(And,bVar"b'31",
10539                             Bop(And,bVar"b'30",Mop(Not,bVar"b'27"))),
10540                         Call
10541                           ("SWC1Decode",CTy"instruction",
10542                            TP[Mop(Cast(FTy 5),
10543                                   LL[bVar"b'20",bVar"b'19",bVar"b'18",
10544                                      bVar"b'17",bVar"b'16"]),
10545                               Mop(Cast F16,
10546                                   LL[bVar"b'15",bVar"b'14",bVar"b'13",
10547                                      bVar"b'12",bVar"b'11",bVar"b'10",
10548                                      bVar"b'9",bVar"b'8",bVar"b'7",
10549                                      bVar"b'6",bVar"b'5",bVar"b'4",
10550                                      bVar"b'3",bVar"b'2",bVar"b'1",
10551                                      bVar"b'0"]),
10552                               Mop(Cast(FTy 5),
10553                                   LL[bVar"b'25",bVar"b'24",bVar"b'23",
10554                                      bVar"b'22",bVar"b'21"])]))],
10555                       Const("ReservedInstruction",CTy"instruction"))),
10556                  (Bop(And,Mop(Not,bVar"b'31"),
10557                       Bop(And,Mop(Not,bVar"b'30"),
10558                           Bop(And,Mop(Not,bVar"b'27"),
10559                               Bop(And,Mop(Not,bVar"b'20"),
10560                                   Bop(And,Mop(Not,bVar"b'19"),
10561                                       Bop(And,Mop(Not,bVar"b'18"),
10562                                           Bop(And,Mop(Not,bVar"b'17"),
10563                                               Mop(Not,bVar"b'16")))))))),
10564                   Call
10565                     ("Branch",CTy"instruction",
10566                      Call
10567                        ("BLTZ",CTy"Branch",
10568                         TP[Mop(Cast(FTy 5),
10569                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
10570                                   bVar"b'22",bVar"b'21"]),
10571                            Mop(Cast F16,
10572                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
10573                                   bVar"b'12",bVar"b'11",bVar"b'10",
10574                                   bVar"b'9",bVar"b'8",bVar"b'7",
10575                                   bVar"b'6",bVar"b'5",bVar"b'4",
10576                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
10577                  (Bop(And,Mop(Not,bVar"b'31"),
10578                       Bop(And,Mop(Not,bVar"b'30"),
10579                           Bop(And,Mop(Not,bVar"b'27"),
10580                               Bop(And,Mop(Not,bVar"b'20"),
10581                                   Bop(And,Mop(Not,bVar"b'19"),
10582                                       Bop(And,Mop(Not,bVar"b'18"),
10583                                           Bop(And,Mop(Not,bVar"b'17"),
10584                                               bVar"b'16"))))))),
10585                   Call
10586                     ("Branch",CTy"instruction",
10587                      Call
10588                        ("BGEZ",CTy"Branch",
10589                         TP[Mop(Cast(FTy 5),
10590                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
10591                                   bVar"b'22",bVar"b'21"]),
10592                            Mop(Cast F16,
10593                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
10594                                   bVar"b'12",bVar"b'11",bVar"b'10",
10595                                   bVar"b'9",bVar"b'8",bVar"b'7",
10596                                   bVar"b'6",bVar"b'5",bVar"b'4",
10597                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
10598                  (Bop(And,Mop(Not,bVar"b'31"),
10599                       Bop(And,Mop(Not,bVar"b'30"),
10600                           Bop(And,Mop(Not,bVar"b'27"),
10601                               Bop(And,Mop(Not,bVar"b'20"),
10602                                   Bop(And,Mop(Not,bVar"b'19"),
10603                                       Bop(And,Mop(Not,bVar"b'18"),
10604                                           Bop(And,bVar"b'17",
10605                                               Mop(Not,bVar"b'16")))))))),
10606                   Call
10607                     ("Branch",CTy"instruction",
10608                      Call
10609                        ("BLTZL",CTy"Branch",
10610                         TP[Mop(Cast(FTy 5),
10611                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
10612                                   bVar"b'22",bVar"b'21"]),
10613                            Mop(Cast F16,
10614                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
10615                                   bVar"b'12",bVar"b'11",bVar"b'10",
10616                                   bVar"b'9",bVar"b'8",bVar"b'7",
10617                                   bVar"b'6",bVar"b'5",bVar"b'4",
10618                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
10619                  (Bop(And,Mop(Not,bVar"b'31"),
10620                       Bop(And,Mop(Not,bVar"b'30"),
10621                           Bop(And,Mop(Not,bVar"b'27"),
10622                               Bop(And,Mop(Not,bVar"b'20"),
10623                                   Bop(And,Mop(Not,bVar"b'19"),
10624                                       Bop(And,Mop(Not,bVar"b'18"),
10625                                           Bop(And,bVar"b'17",bVar"b'16"))))))),
10626                   Call
10627                     ("Branch",CTy"instruction",
10628                      Call
10629                        ("BGEZL",CTy"Branch",
10630                         TP[Mop(Cast(FTy 5),
10631                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
10632                                   bVar"b'22",bVar"b'21"]),
10633                            Mop(Cast F16,
10634                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
10635                                   bVar"b'12",bVar"b'11",bVar"b'10",
10636                                   bVar"b'9",bVar"b'8",bVar"b'7",
10637                                   bVar"b'6",bVar"b'5",bVar"b'4",
10638                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
10639                  (Bop(And,Mop(Not,bVar"b'31"),
10640                       Bop(And,Mop(Not,bVar"b'30"),
10641                           Bop(And,Mop(Not,bVar"b'27"),
10642                               Bop(And,Mop(Not,bVar"b'20"),
10643                                   Bop(And,bVar"b'19",
10644                                       Bop(And,Mop(Not,bVar"b'18"),
10645                                           Bop(And,Mop(Not,bVar"b'17"),
10646                                               Mop(Not,bVar"b'16")))))))),
10647                   Call
10648                     ("Trap",CTy"instruction",
10649                      Call
10650                        ("TGEI",CTy"Trap",
10651                         TP[Mop(Cast(FTy 5),
10652                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
10653                                   bVar"b'22",bVar"b'21"]),
10654                            Mop(Cast F16,
10655                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
10656                                   bVar"b'12",bVar"b'11",bVar"b'10",
10657                                   bVar"b'9",bVar"b'8",bVar"b'7",
10658                                   bVar"b'6",bVar"b'5",bVar"b'4",
10659                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
10660                  (Bop(And,Mop(Not,bVar"b'31"),
10661                       Bop(And,Mop(Not,bVar"b'30"),
10662                           Bop(And,Mop(Not,bVar"b'27"),
10663                               Bop(And,Mop(Not,bVar"b'20"),
10664                                   Bop(And,bVar"b'19",
10665                                       Bop(And,Mop(Not,bVar"b'18"),
10666                                           Bop(And,Mop(Not,bVar"b'17"),
10667                                               bVar"b'16"))))))),
10668                   Call
10669                     ("Trap",CTy"instruction",
10670                      Call
10671                        ("TGEIU",CTy"Trap",
10672                         TP[Mop(Cast(FTy 5),
10673                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
10674                                   bVar"b'22",bVar"b'21"]),
10675                            Mop(Cast F16,
10676                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
10677                                   bVar"b'12",bVar"b'11",bVar"b'10",
10678                                   bVar"b'9",bVar"b'8",bVar"b'7",
10679                                   bVar"b'6",bVar"b'5",bVar"b'4",
10680                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
10681                  (Bop(And,Mop(Not,bVar"b'31"),
10682                       Bop(And,Mop(Not,bVar"b'30"),
10683                           Bop(And,Mop(Not,bVar"b'27"),
10684                               Bop(And,Mop(Not,bVar"b'20"),
10685                                   Bop(And,bVar"b'19",
10686                                       Bop(And,Mop(Not,bVar"b'18"),
10687                                           Bop(And,bVar"b'17",
10688                                               Mop(Not,bVar"b'16")))))))),
10689                   Call
10690                     ("Trap",CTy"instruction",
10691                      Call
10692                        ("TLTI",CTy"Trap",
10693                         TP[Mop(Cast(FTy 5),
10694                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
10695                                   bVar"b'22",bVar"b'21"]),
10696                            Mop(Cast F16,
10697                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
10698                                   bVar"b'12",bVar"b'11",bVar"b'10",
10699                                   bVar"b'9",bVar"b'8",bVar"b'7",
10700                                   bVar"b'6",bVar"b'5",bVar"b'4",
10701                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
10702                  (Bop(And,Mop(Not,bVar"b'31"),
10703                       Bop(And,Mop(Not,bVar"b'30"),
10704                           Bop(And,Mop(Not,bVar"b'27"),
10705                               Bop(And,Mop(Not,bVar"b'20"),
10706                                   Bop(And,bVar"b'19",
10707                                       Bop(And,Mop(Not,bVar"b'18"),
10708                                           Bop(And,bVar"b'17",bVar"b'16"))))))),
10709                   Call
10710                     ("Trap",CTy"instruction",
10711                      Call
10712                        ("TLTIU",CTy"Trap",
10713                         TP[Mop(Cast(FTy 5),
10714                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
10715                                   bVar"b'22",bVar"b'21"]),
10716                            Mop(Cast F16,
10717                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
10718                                   bVar"b'12",bVar"b'11",bVar"b'10",
10719                                   bVar"b'9",bVar"b'8",bVar"b'7",
10720                                   bVar"b'6",bVar"b'5",bVar"b'4",
10721                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
10722                  (Bop(And,Mop(Not,bVar"b'31"),
10723                       Bop(And,Mop(Not,bVar"b'30"),
10724                           Bop(And,Mop(Not,bVar"b'27"),
10725                               Bop(And,Mop(Not,bVar"b'20"),
10726                                   Bop(And,bVar"b'19",
10727                                       Bop(And,bVar"b'18",
10728                                           Bop(And,Mop(Not,bVar"b'17"),
10729                                               Mop(Not,bVar"b'16")))))))),
10730                   Call
10731                     ("Trap",CTy"instruction",
10732                      Call
10733                        ("TEQI",CTy"Trap",
10734                         TP[Mop(Cast(FTy 5),
10735                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
10736                                   bVar"b'22",bVar"b'21"]),
10737                            Mop(Cast F16,
10738                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
10739                                   bVar"b'12",bVar"b'11",bVar"b'10",
10740                                   bVar"b'9",bVar"b'8",bVar"b'7",
10741                                   bVar"b'6",bVar"b'5",bVar"b'4",
10742                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
10743                  (Bop(And,Mop(Not,bVar"b'31"),
10744                       Bop(And,Mop(Not,bVar"b'30"),
10745                           Bop(And,Mop(Not,bVar"b'27"),
10746                               Bop(And,Mop(Not,bVar"b'20"),
10747                                   Bop(And,bVar"b'19",
10748                                       Bop(And,bVar"b'18",
10749                                           Bop(And,bVar"b'17",
10750                                               Mop(Not,bVar"b'16")))))))),
10751                   Call
10752                     ("Trap",CTy"instruction",
10753                      Call
10754                        ("TNEI",CTy"Trap",
10755                         TP[Mop(Cast(FTy 5),
10756                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
10757                                   bVar"b'22",bVar"b'21"]),
10758                            Mop(Cast F16,
10759                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
10760                                   bVar"b'12",bVar"b'11",bVar"b'10",
10761                                   bVar"b'9",bVar"b'8",bVar"b'7",
10762                                   bVar"b'6",bVar"b'5",bVar"b'4",
10763                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
10764                  (Bop(And,Mop(Not,bVar"b'31"),
10765                       Bop(And,Mop(Not,bVar"b'30"),
10766                           Bop(And,Mop(Not,bVar"b'27"),
10767                               Bop(And,bVar"b'25",
10768                                   Bop(And,bVar"b'24",
10769                                       Bop(And,bVar"b'23",
10770                                           Bop(And,bVar"b'22",
10771                                               Bop(And,bVar"b'21",
10772                                                   Bop(And,bVar"b'20",
10773                                                       Bop(And,
10774                                                           Mop(Not,
10775                                                               bVar"b'19"),
10776                                                           Mop(Not,
10777                                                               bVar"b'18"))))))))))),
10778                   Const("Unpredictable",CTy"instruction")),
10779                  (Bop(And,Mop(Not,bVar"b'31"),
10780                       Bop(And,Mop(Not,bVar"b'30"),
10781                           Bop(And,Mop(Not,bVar"b'27"),
10782                               Bop(And,bVar"b'20",
10783                                   Bop(And,Mop(Not,bVar"b'19"),
10784                                       Bop(And,Mop(Not,bVar"b'18"),
10785                                           Bop(And,Mop(Not,bVar"b'17"),
10786                                               Mop(Not,bVar"b'16")))))))),
10787                   Call
10788                     ("Branch",CTy"instruction",
10789                      Call
10790                        ("BLTZAL",CTy"Branch",
10791                         TP[Mop(Cast(FTy 5),
10792                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
10793                                   bVar"b'22",bVar"b'21"]),
10794                            Mop(Cast F16,
10795                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
10796                                   bVar"b'12",bVar"b'11",bVar"b'10",
10797                                   bVar"b'9",bVar"b'8",bVar"b'7",
10798                                   bVar"b'6",bVar"b'5",bVar"b'4",
10799                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
10800                  (Bop(And,Mop(Not,bVar"b'31"),
10801                       Bop(And,Mop(Not,bVar"b'30"),
10802                           Bop(And,Mop(Not,bVar"b'27"),
10803                               Bop(And,bVar"b'20",
10804                                   Bop(And,Mop(Not,bVar"b'19"),
10805                                       Bop(And,Mop(Not,bVar"b'18"),
10806                                           Bop(And,Mop(Not,bVar"b'17"),
10807                                               bVar"b'16"))))))),
10808                   Call
10809                     ("Branch",CTy"instruction",
10810                      Call
10811                        ("BGEZAL",CTy"Branch",
10812                         TP[Mop(Cast(FTy 5),
10813                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
10814                                   bVar"b'22",bVar"b'21"]),
10815                            Mop(Cast F16,
10816                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
10817                                   bVar"b'12",bVar"b'11",bVar"b'10",
10818                                   bVar"b'9",bVar"b'8",bVar"b'7",
10819                                   bVar"b'6",bVar"b'5",bVar"b'4",
10820                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
10821                  (Bop(And,Mop(Not,bVar"b'31"),
10822                       Bop(And,Mop(Not,bVar"b'30"),
10823                           Bop(And,Mop(Not,bVar"b'27"),
10824                               Bop(And,bVar"b'20",
10825                                   Bop(And,Mop(Not,bVar"b'19"),
10826                                       Bop(And,Mop(Not,bVar"b'18"),
10827                                           Bop(And,bVar"b'17",
10828                                               Mop(Not,bVar"b'16")))))))),
10829                   Call
10830                     ("Branch",CTy"instruction",
10831                      Call
10832                        ("BLTZALL",CTy"Branch",
10833                         TP[Mop(Cast(FTy 5),
10834                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
10835                                   bVar"b'22",bVar"b'21"]),
10836                            Mop(Cast F16,
10837                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
10838                                   bVar"b'12",bVar"b'11",bVar"b'10",
10839                                   bVar"b'9",bVar"b'8",bVar"b'7",
10840                                   bVar"b'6",bVar"b'5",bVar"b'4",
10841                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
10842                  (Bop(And,Mop(Not,bVar"b'31"),
10843                       Bop(And,Mop(Not,bVar"b'30"),
10844                           Bop(And,Mop(Not,bVar"b'27"),
10845                               Bop(And,bVar"b'20",
10846                                   Bop(And,Mop(Not,bVar"b'19"),
10847                                       Bop(And,Mop(Not,bVar"b'18"),
10848                                           Bop(And,bVar"b'17",bVar"b'16"))))))),
10849                   Call
10850                     ("Branch",CTy"instruction",
10851                      Call
10852                        ("BGEZALL",CTy"Branch",
10853                         TP[Mop(Cast(FTy 5),
10854                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
10855                                   bVar"b'22",bVar"b'21"]),
10856                            Mop(Cast F16,
10857                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
10858                                   bVar"b'12",bVar"b'11",bVar"b'10",
10859                                   bVar"b'9",bVar"b'8",bVar"b'7",
10860                                   bVar"b'6",bVar"b'5",bVar"b'4",
10861                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
10862                  (Bop(And,Mop(Not,bVar"b'31"),
10863                       Bop(And,Mop(Not,bVar"b'30"),bVar"b'27")),
10864                   Call
10865                     ("Branch",CTy"instruction",
10866                      Call
10867                        ("JAL",CTy"Branch",
10868                         Mop(Cast(FTy 26),
10869                             LL[bVar"b'25",bVar"b'24",bVar"b'23",
10870                                bVar"b'22",bVar"b'21",bVar"b'20",
10871                                bVar"b'19",bVar"b'18",bVar"b'17",
10872                                bVar"b'16",bVar"b'15",bVar"b'14",
10873                                bVar"b'13",bVar"b'12",bVar"b'11",
10874                                bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
10875                                bVar"b'6",bVar"b'5",bVar"b'4",bVar"b'3",
10876                                bVar"b'2",bVar"b'1",bVar"b'0"])))),
10877                  (Bop(And,bVar"b'31",
10878                       Bop(And,Mop(Not,bVar"b'30"),Mop(Not,bVar"b'27"))),
10879                   Call
10880                     ("Load",CTy"instruction",
10881                      Call
10882                        ("LH",CTy"Load",
10883                         TP[Mop(Cast(FTy 5),
10884                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
10885                                   bVar"b'22",bVar"b'21"]),
10886                            Mop(Cast(FTy 5),
10887                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
10888                                   bVar"b'17",bVar"b'16"]),
10889                            Mop(Cast F16,
10890                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
10891                                   bVar"b'12",bVar"b'11",bVar"b'10",
10892                                   bVar"b'9",bVar"b'8",bVar"b'7",
10893                                   bVar"b'6",bVar"b'5",bVar"b'4",
10894                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
10895                  (Bop(And,bVar"b'31",
10896                       Bop(And,Mop(Not,bVar"b'30"),bVar"b'27")),
10897                   Call
10898                     ("Load",CTy"instruction",
10899                      Call
10900                        ("LW",CTy"Load",
10901                         TP[Mop(Cast(FTy 5),
10902                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
10903                                   bVar"b'22",bVar"b'21"]),
10904                            Mop(Cast(FTy 5),
10905                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
10906                                   bVar"b'17",bVar"b'16"]),
10907                            Mop(Cast F16,
10908                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
10909                                   bVar"b'12",bVar"b'11",bVar"b'10",
10910                                   bVar"b'9",bVar"b'8",bVar"b'7",
10911                                   bVar"b'6",bVar"b'5",bVar"b'4",
10912                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
10913                  (Bop(And,Mop(Not,bVar"b'31"),
10914                       Bop(And,bVar"b'30",Mop(Not,bVar"b'27"))),
10915                   Call
10916                     ("COP1Decode",CTy"instruction",
10917                      Mop(Cast(FTy 26),
10918                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
10919                             bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18",
10920                             bVar"b'17",bVar"b'16",bVar"b'15",bVar"b'14",
10921                             bVar"b'13",bVar"b'12",bVar"b'11",bVar"b'10",
10922                             bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6",
10923                             bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2",
10924                             bVar"b'1",bVar"b'0"]))),
10925                  (Bop(And,Mop(Not,bVar"b'31"),
10926                       Bop(And,bVar"b'30",bVar"b'27")),
10927                   Call
10928                     ("COP3Decode",CTy"instruction",
10929                      Mop(Cast(FTy 26),
10930                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
10931                             bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18",
10932                             bVar"b'17",bVar"b'16",bVar"b'15",bVar"b'14",
10933                             bVar"b'13",bVar"b'12",bVar"b'11",bVar"b'10",
10934                             bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6",
10935                             bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2",
10936                             bVar"b'1",bVar"b'0"]))),
10937                  (Bop(And,bVar"b'31",
10938                       Bop(And,bVar"b'30",Mop(Not,bVar"b'27"))),
10939                   Call
10940                     ("LWC1Decode",CTy"instruction",
10941                      TP[Mop(Cast(FTy 5),
10942                             LL[bVar"b'20",bVar"b'19",bVar"b'18",
10943                                bVar"b'17",bVar"b'16"]),
10944                         Mop(Cast F16,
10945                             LL[bVar"b'15",bVar"b'14",bVar"b'13",
10946                                bVar"b'12",bVar"b'11",bVar"b'10",
10947                                bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6",
10948                                bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2",
10949                                bVar"b'1",bVar"b'0"]),
10950                         Mop(Cast(FTy 5),
10951                             LL[bVar"b'25",bVar"b'24",bVar"b'23",
10952                                bVar"b'22",bVar"b'21"])]))],
10953                 Const("ReservedInstruction",CTy"instruction"))),
10954            (bVar"b'30",
10955             ITB([(bVar"b'29",
10956                   ITB([(Bop(And,Mop(Not,bVar"b'31"),
10957                             Bop(And,bVar"b'28",
10958                                 Bop(And,Mop(Not,bVar"b'27"),
10959                                     Bop(And,Mop(Not,bVar"b'15"),
10960                                         Bop(And,Mop(Not,bVar"b'14"),
10961                                             Bop(And,Mop(Not,bVar"b'13"),
10962                                                 Bop(And,
10963                                                     Mop(Not,bVar"b'12"),
10964                                                     Bop(And,
10965                                                         Mop(Not,
10966                                                             bVar"b'11"),
10967                                                         Bop(And,
10968                                                             Mop(Not,
10969                                                                 bVar"b'10"),
10970                                                             Bop(And,
10971                                                                 Mop(Not,
10972                                                                     bVar"b'9"),
10973                                                                 Bop(And,
10974                                                                     Mop(Not,
10975                                                                         bVar"b'8"),
10976                                                                     Bop(And,
10977                                                                         Mop(Not,
10978                                                                             bVar"b'7"),
10979                                                                         Bop(And,
10980                                                                             Mop(Not,
10981                                                                                 bVar"b'6"),
10982                                                                             Bop(And,
10983                                                                                 Mop(Not,
10984                                                                                     bVar"b'5"),
10985                                                                                 Bop(And,
10986                                                                                     Mop(Not,
10987                                                                                         bVar"b'4"),
10988                                                                                     Bop(And,
10989                                                                                         Mop(Not,
10990                                                                                             bVar"b'3"),
10991                                                                                         Bop(And,
10992                                                                                             Mop(Not,
10993                                                                                                 bVar"b'2"),
10994                                                                                             Bop(And,
10995                                                                                                 Mop(Not,
10996                                                                                                     bVar"b'1"),
10997                                                                                                 Mop(Not,
10998                                                                                                     bVar"b'0"))))))))))))))))))),
10999                         Call
11000                           ("MultDiv",CTy"instruction",
11001                            Call
11002                              ("MADD",CTy"MultDiv",
11003                               TP[Mop(Cast(FTy 5),
11004                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
11005                                         bVar"b'22",bVar"b'21"]),
11006                                  Mop(Cast(FTy 5),
11007                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
11008                                         bVar"b'17",bVar"b'16"])]))),
11009                        (Bop(And,Mop(Not,bVar"b'31"),
11010                             Bop(And,bVar"b'28",
11011                                 Bop(And,Mop(Not,bVar"b'27"),
11012                                     Bop(And,Mop(Not,bVar"b'15"),
11013                                         Bop(And,Mop(Not,bVar"b'14"),
11014                                             Bop(And,Mop(Not,bVar"b'13"),
11015                                                 Bop(And,
11016                                                     Mop(Not,bVar"b'12"),
11017                                                     Bop(And,
11018                                                         Mop(Not,
11019                                                             bVar"b'11"),
11020                                                         Bop(And,
11021                                                             Mop(Not,
11022                                                                 bVar"b'10"),
11023                                                             Bop(And,
11024                                                                 Mop(Not,
11025                                                                     bVar"b'9"),
11026                                                                 Bop(And,
11027                                                                     Mop(Not,
11028                                                                         bVar"b'8"),
11029                                                                     Bop(And,
11030                                                                         Mop(Not,
11031                                                                             bVar"b'7"),
11032                                                                         Bop(And,
11033                                                                             Mop(Not,
11034                                                                                 bVar"b'6"),
11035                                                                             Bop(And,
11036                                                                                 Mop(Not,
11037                                                                                     bVar"b'5"),
11038                                                                                 Bop(And,
11039                                                                                     Mop(Not,
11040                                                                                         bVar"b'4"),
11041                                                                                     Bop(And,
11042                                                                                         Mop(Not,
11043                                                                                             bVar"b'3"),
11044                                                                                         Bop(And,
11045                                                                                             Mop(Not,
11046                                                                                                 bVar"b'2"),
11047                                                                                             Bop(And,
11048                                                                                                 Mop(Not,
11049                                                                                                     bVar"b'1"),
11050                                                                                                 bVar"b'0")))))))))))))))))),
11051                         Call
11052                           ("MultDiv",CTy"instruction",
11053                            Call
11054                              ("MADDU",CTy"MultDiv",
11055                               TP[Mop(Cast(FTy 5),
11056                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
11057                                         bVar"b'22",bVar"b'21"]),
11058                                  Mop(Cast(FTy 5),
11059                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
11060                                         bVar"b'17",bVar"b'16"])]))),
11061                        (Bop(And,Mop(Not,bVar"b'31"),
11062                             Bop(And,bVar"b'28",
11063                                 Bop(And,Mop(Not,bVar"b'27"),
11064                                     Bop(And,Mop(Not,bVar"b'15"),
11065                                         Bop(And,Mop(Not,bVar"b'14"),
11066                                             Bop(And,Mop(Not,bVar"b'13"),
11067                                                 Bop(And,
11068                                                     Mop(Not,bVar"b'12"),
11069                                                     Bop(And,
11070                                                         Mop(Not,
11071                                                             bVar"b'11"),
11072                                                         Bop(And,
11073                                                             Mop(Not,
11074                                                                 bVar"b'10"),
11075                                                             Bop(And,
11076                                                                 Mop(Not,
11077                                                                     bVar"b'9"),
11078                                                                 Bop(And,
11079                                                                     Mop(Not,
11080                                                                         bVar"b'8"),
11081                                                                     Bop(And,
11082                                                                         Mop(Not,
11083                                                                             bVar"b'7"),
11084                                                                         Bop(And,
11085                                                                             Mop(Not,
11086                                                                                 bVar"b'6"),
11087                                                                             Bop(And,
11088                                                                                 Mop(Not,
11089                                                                                     bVar"b'5"),
11090                                                                                 Bop(And,
11091                                                                                     Mop(Not,
11092                                                                                         bVar"b'4"),
11093                                                                                     Bop(And,
11094                                                                                         Mop(Not,
11095                                                                                             bVar"b'3"),
11096                                                                                         Bop(And,
11097                                                                                             bVar"b'2",
11098                                                                                             Bop(And,
11099                                                                                                 Mop(Not,
11100                                                                                                     bVar"b'1"),
11101                                                                                                 Mop(Not,
11102                                                                                                     bVar"b'0"))))))))))))))))))),
11103                         Call
11104                           ("MultDiv",CTy"instruction",
11105                            Call
11106                              ("MSUB",CTy"MultDiv",
11107                               TP[Mop(Cast(FTy 5),
11108                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
11109                                         bVar"b'22",bVar"b'21"]),
11110                                  Mop(Cast(FTy 5),
11111                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
11112                                         bVar"b'17",bVar"b'16"])]))),
11113                        (Bop(And,Mop(Not,bVar"b'31"),
11114                             Bop(And,bVar"b'28",
11115                                 Bop(And,Mop(Not,bVar"b'27"),
11116                                     Bop(And,Mop(Not,bVar"b'15"),
11117                                         Bop(And,Mop(Not,bVar"b'14"),
11118                                             Bop(And,Mop(Not,bVar"b'13"),
11119                                                 Bop(And,
11120                                                     Mop(Not,bVar"b'12"),
11121                                                     Bop(And,
11122                                                         Mop(Not,
11123                                                             bVar"b'11"),
11124                                                         Bop(And,
11125                                                             Mop(Not,
11126                                                                 bVar"b'10"),
11127                                                             Bop(And,
11128                                                                 Mop(Not,
11129                                                                     bVar"b'9"),
11130                                                                 Bop(And,
11131                                                                     Mop(Not,
11132                                                                         bVar"b'8"),
11133                                                                     Bop(And,
11134                                                                         Mop(Not,
11135                                                                             bVar"b'7"),
11136                                                                         Bop(And,
11137                                                                             Mop(Not,
11138                                                                                 bVar"b'6"),
11139                                                                             Bop(And,
11140                                                                                 Mop(Not,
11141                                                                                     bVar"b'5"),
11142                                                                                 Bop(And,
11143                                                                                     Mop(Not,
11144                                                                                         bVar"b'4"),
11145                                                                                     Bop(And,
11146                                                                                         Mop(Not,
11147                                                                                             bVar"b'3"),
11148                                                                                         Bop(And,
11149                                                                                             bVar"b'2",
11150                                                                                             Bop(And,
11151                                                                                                 Mop(Not,
11152                                                                                                     bVar"b'1"),
11153                                                                                                 bVar"b'0")))))))))))))))))),
11154                         Call
11155                           ("MultDiv",CTy"instruction",
11156                            Call
11157                              ("MSUBU",CTy"MultDiv",
11158                               TP[Mop(Cast(FTy 5),
11159                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
11160                                         bVar"b'22",bVar"b'21"]),
11161                                  Mop(Cast(FTy 5),
11162                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
11163                                         bVar"b'17",bVar"b'16"])]))),
11164                        (Bop(And,Mop(Not,bVar"b'31"),
11165                             Bop(And,bVar"b'28",
11166                                 Bop(And,Mop(Not,bVar"b'27"),
11167                                     Bop(And,Mop(Not,bVar"b'10"),
11168                                         Bop(And,Mop(Not,bVar"b'9"),
11169                                             Bop(And,Mop(Not,bVar"b'8"),
11170                                                 Bop(And,
11171                                                     Mop(Not,bVar"b'7"),
11172                                                     Bop(And,
11173                                                         Mop(Not,bVar"b'6"),
11174                                                         Bop(And,
11175                                                             Mop(Not,
11176                                                                 bVar"b'5"),
11177                                                             Bop(And,
11178                                                                 Mop(Not,
11179                                                                     bVar"b'4"),
11180                                                                 Bop(And,
11181                                                                     Mop(Not,
11182                                                                         bVar"b'3"),
11183                                                                     Bop(And,
11184                                                                         Mop(Not,
11185                                                                             bVar"b'2"),
11186                                                                         Bop(And,
11187                                                                             bVar"b'1",
11188                                                                             Mop(Not,
11189                                                                                 bVar"b'0")))))))))))))),
11190                         Call
11191                           ("MultDiv",CTy"instruction",
11192                            Call
11193                              ("MUL",CTy"MultDiv",
11194                               TP[Mop(Cast(FTy 5),
11195                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
11196                                         bVar"b'22",bVar"b'21"]),
11197                                  Mop(Cast(FTy 5),
11198                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
11199                                         bVar"b'17",bVar"b'16"]),
11200                                  Mop(Cast(FTy 5),
11201                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
11202                                         bVar"b'12",bVar"b'11"])]))),
11203                        (Bop(And,Mop(Not,bVar"b'31"),
11204                             Bop(And,Mop(Not,bVar"b'28"),
11205                                 Mop(Not,bVar"b'27"))),
11206                         Call
11207                           ("ArithI",CTy"instruction",
11208                            Call
11209                              ("DADDI",CTy"ArithI",
11210                               TP[Mop(Cast(FTy 5),
11211                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
11212                                         bVar"b'22",bVar"b'21"]),
11213                                  Mop(Cast(FTy 5),
11214                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
11215                                         bVar"b'17",bVar"b'16"]),
11216                                  Mop(Cast F16,
11217                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
11218                                         bVar"b'12",bVar"b'11",bVar"b'10",
11219                                         bVar"b'9",bVar"b'8",bVar"b'7",
11220                                         bVar"b'6",bVar"b'5",bVar"b'4",
11221                                         bVar"b'3",bVar"b'2",bVar"b'1",
11222                                         bVar"b'0"])]))),
11223                        (Bop(And,Mop(Not,bVar"b'31"),
11224                             Bop(And,Mop(Not,bVar"b'28"),bVar"b'27")),
11225                         Call
11226                           ("Load",CTy"instruction",
11227                            Call
11228                              ("LDL",CTy"Load",
11229                               TP[Mop(Cast(FTy 5),
11230                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
11231                                         bVar"b'22",bVar"b'21"]),
11232                                  Mop(Cast(FTy 5),
11233                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
11234                                         bVar"b'17",bVar"b'16"]),
11235                                  Mop(Cast F16,
11236                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
11237                                         bVar"b'12",bVar"b'11",bVar"b'10",
11238                                         bVar"b'9",bVar"b'8",bVar"b'7",
11239                                         bVar"b'6",bVar"b'5",bVar"b'4",
11240                                         bVar"b'3",bVar"b'2",bVar"b'1",
11241                                         bVar"b'0"])]))),
11242                        (Bop(And,bVar"b'31",
11243                             Bop(And,Mop(Not,bVar"b'28"),
11244                                 Mop(Not,bVar"b'27"))),
11245                         Call
11246                           ("Store",CTy"instruction",
11247                            Call
11248                              ("SC",CTy"Store",
11249                               TP[Mop(Cast(FTy 5),
11250                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
11251                                         bVar"b'22",bVar"b'21"]),
11252                                  Mop(Cast(FTy 5),
11253                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
11254                                         bVar"b'17",bVar"b'16"]),
11255                                  Mop(Cast F16,
11256                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
11257                                         bVar"b'12",bVar"b'11",bVar"b'10",
11258                                         bVar"b'9",bVar"b'8",bVar"b'7",
11259                                         bVar"b'6",bVar"b'5",bVar"b'4",
11260                                         bVar"b'3",bVar"b'2",bVar"b'1",
11261                                         bVar"b'0"])]))),
11262                        (Bop(And,bVar"b'31",
11263                             Bop(And,bVar"b'28",Mop(Not,bVar"b'27"))),
11264                         Call
11265                           ("Store",CTy"instruction",
11266                            Call
11267                              ("SCD",CTy"Store",
11268                               TP[Mop(Cast(FTy 5),
11269                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
11270                                         bVar"b'22",bVar"b'21"]),
11271                                  Mop(Cast(FTy 5),
11272                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
11273                                         bVar"b'17",bVar"b'16"]),
11274                                  Mop(Cast F16,
11275                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
11276                                         bVar"b'12",bVar"b'11",bVar"b'10",
11277                                         bVar"b'9",bVar"b'8",bVar"b'7",
11278                                         bVar"b'6",bVar"b'5",bVar"b'4",
11279                                         bVar"b'3",bVar"b'2",bVar"b'1",
11280                                         bVar"b'0"])])))],
11281                       Const("ReservedInstruction",CTy"instruction"))),
11282                  (Bop(And,Mop(Not,bVar"b'31"),
11283                       Bop(And,Mop(Not,bVar"b'28"),
11284                           Bop(And,Mop(Not,bVar"b'27"),
11285                               Bop(And,bVar"b'25",
11286                                   Bop(And,Mop(Not,bVar"b'24"),
11287                                       Bop(And,Mop(Not,bVar"b'23"),
11288                                           Bop(And,Mop(Not,bVar"b'22"),
11289                                               Bop(And,
11290                                                   Mop(Not,bVar"b'21"),
11291                                                   Bop(And,
11292                                                       Mop(Not,bVar"b'20"),
11293                                                       Bop(And,
11294                                                           Mop(Not,
11295                                                               bVar"b'19"),
11296                                                           Bop(And,
11297                                                               Mop(Not,
11298                                                                   bVar"b'18"),
11299                                                               Bop(And,
11300                                                                   Mop(Not,
11301                                                                       bVar"b'17"),
11302                                                                   Bop(And,
11303                                                                       Mop(Not,
11304                                                                           bVar"b'16"),
11305                                                                       Bop(And,
11306                                                                           Mop(Not,
11307                                                                               bVar"b'15"),
11308                                                                           Bop(And,
11309                                                                               Mop(Not,
11310                                                                                   bVar"b'14"),
11311                                                                               Bop(And,
11312                                                                                   Mop(Not,
11313                                                                                       bVar"b'13"),
11314                                                                                   Bop(And,
11315                                                                                       Mop(Not,
11316                                                                                           bVar"b'12"),
11317                                                                                       Bop(And,
11318                                                                                           Mop(Not,
11319                                                                                               bVar"b'11"),
11320                                                                                           Bop(And,
11321                                                                                               Mop(Not,
11322                                                                                                   bVar"b'10"),
11323                                                                                               Bop(And,
11324                                                                                                   Mop(Not,
11325                                                                                                       bVar"b'9"),
11326                                                                                                   Bop(And,
11327                                                                                                       Mop(Not,
11328                                                                                                           bVar"b'8"),
11329                                                                                                       Bop(And,
11330                                                                                                           Mop(Not,
11331                                                                                                               bVar"b'7"),
11332                                                                                                           Bop(And,
11333                                                                                                               Mop(Not,
11334                                                                                                                   bVar"b'6"),
11335                                                                                                               Bop(And,
11336                                                                                                                   Mop(Not,
11337                                                                                                                       bVar"b'5"),
11338                                                                                                                   Bop(And,
11339                                                                                                                       Mop(Not,
11340                                                                                                                           bVar"b'4"),
11341                                                                                                                       Bop(And,
11342                                                                                                                           Mop(Not,
11343                                                                                                                               bVar"b'3"),
11344                                                                                                                           Bop(And,
11345                                                                                                                               Mop(Not,
11346                                                                                                                                   bVar"b'2"),
11347                                                                                                                               Bop(And,
11348                                                                                                                                   Mop(Not,
11349                                                                                                                                       bVar"b'1"),
11350                                                                                                                                   bVar"b'0")))))))))))))))))))))))))))),
11351                   Const("TLBR",CTy"instruction")),
11352                  (Bop(And,Mop(Not,bVar"b'31"),
11353                       Bop(And,Mop(Not,bVar"b'28"),
11354                           Bop(And,Mop(Not,bVar"b'27"),
11355                               Bop(And,bVar"b'25",
11356                                   Bop(And,Mop(Not,bVar"b'24"),
11357                                       Bop(And,Mop(Not,bVar"b'23"),
11358                                           Bop(And,Mop(Not,bVar"b'22"),
11359                                               Bop(And,
11360                                                   Mop(Not,bVar"b'21"),
11361                                                   Bop(And,
11362                                                       Mop(Not,bVar"b'20"),
11363                                                       Bop(And,
11364                                                           Mop(Not,
11365                                                               bVar"b'19"),
11366                                                           Bop(And,
11367                                                               Mop(Not,
11368                                                                   bVar"b'18"),
11369                                                               Bop(And,
11370                                                                   Mop(Not,
11371                                                                       bVar"b'17"),
11372                                                                   Bop(And,
11373                                                                       Mop(Not,
11374                                                                           bVar"b'16"),
11375                                                                       Bop(And,
11376                                                                           Mop(Not,
11377                                                                               bVar"b'15"),
11378                                                                           Bop(And,
11379                                                                               Mop(Not,
11380                                                                                   bVar"b'14"),
11381                                                                               Bop(And,
11382                                                                                   Mop(Not,
11383                                                                                       bVar"b'13"),
11384                                                                                   Bop(And,
11385                                                                                       Mop(Not,
11386                                                                                           bVar"b'12"),
11387                                                                                       Bop(And,
11388                                                                                           Mop(Not,
11389                                                                                               bVar"b'11"),
11390                                                                                           Bop(And,
11391                                                                                               Mop(Not,
11392                                                                                                   bVar"b'10"),
11393                                                                                               Bop(And,
11394                                                                                                   Mop(Not,
11395                                                                                                       bVar"b'9"),
11396                                                                                                   Bop(And,
11397                                                                                                       Mop(Not,
11398                                                                                                           bVar"b'8"),
11399                                                                                                       Bop(And,
11400                                                                                                           Mop(Not,
11401                                                                                                               bVar"b'7"),
11402                                                                                                           Bop(And,
11403                                                                                                               Mop(Not,
11404                                                                                                                   bVar"b'6"),
11405                                                                                                               Bop(And,
11406                                                                                                                   Mop(Not,
11407                                                                                                                       bVar"b'5"),
11408                                                                                                                   Bop(And,
11409                                                                                                                       Mop(Not,
11410                                                                                                                           bVar"b'4"),
11411                                                                                                                       Bop(And,
11412                                                                                                                           Mop(Not,
11413                                                                                                                               bVar"b'3"),
11414                                                                                                                           Bop(And,
11415                                                                                                                               Mop(Not,
11416                                                                                                                                   bVar"b'2"),
11417                                                                                                                               Bop(And,
11418                                                                                                                                   bVar"b'1",
11419                                                                                                                                   Mop(Not,
11420                                                                                                                                       bVar"b'0"))))))))))))))))))))))))))))),
11421                   Const("TLBWI",CTy"instruction")),
11422                  (Bop(And,Mop(Not,bVar"b'31"),
11423                       Bop(And,Mop(Not,bVar"b'28"),
11424                           Bop(And,Mop(Not,bVar"b'27"),
11425                               Bop(And,bVar"b'25",
11426                                   Bop(And,Mop(Not,bVar"b'24"),
11427                                       Bop(And,Mop(Not,bVar"b'23"),
11428                                           Bop(And,Mop(Not,bVar"b'22"),
11429                                               Bop(And,
11430                                                   Mop(Not,bVar"b'21"),
11431                                                   Bop(And,
11432                                                       Mop(Not,bVar"b'20"),
11433                                                       Bop(And,
11434                                                           Mop(Not,
11435                                                               bVar"b'19"),
11436                                                           Bop(And,
11437                                                               Mop(Not,
11438                                                                   bVar"b'18"),
11439                                                               Bop(And,
11440                                                                   Mop(Not,
11441                                                                       bVar"b'17"),
11442                                                                   Bop(And,
11443                                                                       Mop(Not,
11444                                                                           bVar"b'16"),
11445                                                                       Bop(And,
11446                                                                           Mop(Not,
11447                                                                               bVar"b'15"),
11448                                                                           Bop(And,
11449                                                                               Mop(Not,
11450                                                                                   bVar"b'14"),
11451                                                                               Bop(And,
11452                                                                                   Mop(Not,
11453                                                                                       bVar"b'13"),
11454                                                                                   Bop(And,
11455                                                                                       Mop(Not,
11456                                                                                           bVar"b'12"),
11457                                                                                       Bop(And,
11458                                                                                           Mop(Not,
11459                                                                                               bVar"b'11"),
11460                                                                                           Bop(And,
11461                                                                                               Mop(Not,
11462                                                                                                   bVar"b'10"),
11463                                                                                               Bop(And,
11464                                                                                                   Mop(Not,
11465                                                                                                       bVar"b'9"),
11466                                                                                                   Bop(And,
11467                                                                                                       Mop(Not,
11468                                                                                                           bVar"b'8"),
11469                                                                                                       Bop(And,
11470                                                                                                           Mop(Not,
11471                                                                                                               bVar"b'7"),
11472                                                                                                           Bop(And,
11473                                                                                                               Mop(Not,
11474                                                                                                                   bVar"b'6"),
11475                                                                                                               Bop(And,
11476                                                                                                                   Mop(Not,
11477                                                                                                                       bVar"b'5"),
11478                                                                                                                   Bop(And,
11479                                                                                                                       Mop(Not,
11480                                                                                                                           bVar"b'4"),
11481                                                                                                                       Bop(And,
11482                                                                                                                           Mop(Not,
11483                                                                                                                               bVar"b'3"),
11484                                                                                                                           Bop(And,
11485                                                                                                                               bVar"b'2",
11486                                                                                                                               Bop(And,
11487                                                                                                                                   bVar"b'1",
11488                                                                                                                                   Mop(Not,
11489                                                                                                                                       bVar"b'0"))))))))))))))))))))))))))))),
11490                   Const("TLBWR",CTy"instruction")),
11491                  (Bop(And,Mop(Not,bVar"b'31"),
11492                       Bop(And,Mop(Not,bVar"b'28"),
11493                           Bop(And,Mop(Not,bVar"b'27"),
11494                               Bop(And,bVar"b'25",
11495                                   Bop(And,Mop(Not,bVar"b'24"),
11496                                       Bop(And,Mop(Not,bVar"b'23"),
11497                                           Bop(And,Mop(Not,bVar"b'22"),
11498                                               Bop(And,
11499                                                   Mop(Not,bVar"b'21"),
11500                                                   Bop(And,
11501                                                       Mop(Not,bVar"b'20"),
11502                                                       Bop(And,
11503                                                           Mop(Not,
11504                                                               bVar"b'19"),
11505                                                           Bop(And,
11506                                                               Mop(Not,
11507                                                                   bVar"b'18"),
11508                                                               Bop(And,
11509                                                                   Mop(Not,
11510                                                                       bVar"b'17"),
11511                                                                   Bop(And,
11512                                                                       Mop(Not,
11513                                                                           bVar"b'16"),
11514                                                                       Bop(And,
11515                                                                           Mop(Not,
11516                                                                               bVar"b'15"),
11517                                                                           Bop(And,
11518                                                                               Mop(Not,
11519                                                                                   bVar"b'14"),
11520                                                                               Bop(And,
11521                                                                                   Mop(Not,
11522                                                                                       bVar"b'13"),
11523                                                                                   Bop(And,
11524                                                                                       Mop(Not,
11525                                                                                           bVar"b'12"),
11526                                                                                       Bop(And,
11527                                                                                           Mop(Not,
11528                                                                                               bVar"b'11"),
11529                                                                                           Bop(And,
11530                                                                                               Mop(Not,
11531                                                                                                   bVar"b'10"),
11532                                                                                               Bop(And,
11533                                                                                                   Mop(Not,
11534                                                                                                       bVar"b'9"),
11535                                                                                                   Bop(And,
11536                                                                                                       Mop(Not,
11537                                                                                                           bVar"b'8"),
11538                                                                                                       Bop(And,
11539                                                                                                           Mop(Not,
11540                                                                                                               bVar"b'7"),
11541                                                                                                           Bop(And,
11542                                                                                                               Mop(Not,
11543                                                                                                                   bVar"b'6"),
11544                                                                                                               Bop(And,
11545                                                                                                                   Mop(Not,
11546                                                                                                                       bVar"b'5"),
11547                                                                                                                   Bop(And,
11548                                                                                                                       Mop(Not,
11549                                                                                                                           bVar"b'4"),
11550                                                                                                                       Bop(And,
11551                                                                                                                           bVar"b'3",
11552                                                                                                                           Bop(And,
11553                                                                                                                               Mop(Not,
11554                                                                                                                                   bVar"b'2"),
11555                                                                                                                               Bop(And,
11556                                                                                                                                   Mop(Not,
11557                                                                                                                                       bVar"b'1"),
11558                                                                                                                                   Mop(Not,
11559                                                                                                                                       bVar"b'0"))))))))))))))))))))))))))))),
11560                   Const("TLBP",CTy"instruction")),
11561                  (Bop(And,Mop(Not,bVar"b'31"),
11562                       Bop(And,Mop(Not,bVar"b'28"),
11563                           Bop(And,Mop(Not,bVar"b'27"),
11564                               Bop(And,bVar"b'25",
11565                                   Bop(And,Mop(Not,bVar"b'24"),
11566                                       Bop(And,Mop(Not,bVar"b'23"),
11567                                           Bop(And,Mop(Not,bVar"b'22"),
11568                                               Bop(And,
11569                                                   Mop(Not,bVar"b'21"),
11570                                                   Bop(And,
11571                                                       Mop(Not,bVar"b'20"),
11572                                                       Bop(And,
11573                                                           Mop(Not,
11574                                                               bVar"b'19"),
11575                                                           Bop(And,
11576                                                               Mop(Not,
11577                                                                   bVar"b'18"),
11578                                                               Bop(And,
11579                                                                   Mop(Not,
11580                                                                       bVar"b'17"),
11581                                                                   Bop(And,
11582                                                                       Mop(Not,
11583                                                                           bVar"b'16"),
11584                                                                       Bop(And,
11585                                                                           Mop(Not,
11586                                                                               bVar"b'15"),
11587                                                                           Bop(And,
11588                                                                               Mop(Not,
11589                                                                                   bVar"b'14"),
11590                                                                               Bop(And,
11591                                                                                   Mop(Not,
11592                                                                                       bVar"b'13"),
11593                                                                                   Bop(And,
11594                                                                                       Mop(Not,
11595                                                                                           bVar"b'12"),
11596                                                                                       Bop(And,
11597                                                                                           Mop(Not,
11598                                                                                               bVar"b'11"),
11599                                                                                           Bop(And,
11600                                                                                               Mop(Not,
11601                                                                                                   bVar"b'10"),
11602                                                                                               Bop(And,
11603                                                                                                   Mop(Not,
11604                                                                                                       bVar"b'9"),
11605                                                                                                   Bop(And,
11606                                                                                                       Mop(Not,
11607                                                                                                           bVar"b'8"),
11608                                                                                                       Bop(And,
11609                                                                                                           Mop(Not,
11610                                                                                                               bVar"b'7"),
11611                                                                                                           Bop(And,
11612                                                                                                               Mop(Not,
11613                                                                                                                   bVar"b'6"),
11614                                                                                                               Bop(And,
11615                                                                                                                   Mop(Not,
11616                                                                                                                       bVar"b'5"),
11617                                                                                                                   Bop(And,
11618                                                                                                                       bVar"b'4",
11619                                                                                                                       Bop(And,
11620                                                                                                                           bVar"b'3",
11621                                                                                                                           Bop(And,
11622                                                                                                                               Mop(Not,
11623                                                                                                                                   bVar"b'2"),
11624                                                                                                                               Bop(And,
11625                                                                                                                                   Mop(Not,
11626                                                                                                                                       bVar"b'1"),
11627                                                                                                                                   Mop(Not,
11628                                                                                                                                       bVar"b'0"))))))))))))))))))))))))))))),
11629                   Const("ERET",CTy"instruction")),
11630                  (Bop(And,Mop(Not,bVar"b'31"),
11631                       Bop(And,Mop(Not,bVar"b'28"),
11632                           Bop(And,Mop(Not,bVar"b'27"),
11633                               Bop(And,Mop(Not,bVar"b'25"),
11634                                   Bop(And,Mop(Not,bVar"b'24"),
11635                                       Bop(And,Mop(Not,bVar"b'23"),
11636                                           Bop(And,Mop(Not,bVar"b'22"),
11637                                               Bop(And,
11638                                                   Mop(Not,bVar"b'21"),
11639                                                   Bop(And,
11640                                                       Mop(Not,bVar"b'10"),
11641                                                       Bop(And,
11642                                                           Mop(Not,
11643                                                               bVar"b'9"),
11644                                                           Bop(And,
11645                                                               Mop(Not,
11646                                                                   bVar"b'8"),
11647                                                               Bop(And,
11648                                                                   Mop(Not,
11649                                                                       bVar"b'7"),
11650                                                                   Bop(And,
11651                                                                       Mop(Not,
11652                                                                           bVar"b'6"),
11653                                                                       Bop(And,
11654                                                                           Mop(Not,
11655                                                                               bVar"b'5"),
11656                                                                           Bop(And,
11657                                                                               Mop(Not,
11658                                                                                   bVar"b'4"),
11659                                                                               Mop(Not,
11660                                                                                   bVar"b'3")))))))))))))))),
11661                   Call
11662                     ("CP",CTy"instruction",
11663                      Call
11664                        ("MFC0",CTy"CP",
11665                         TP[Mop(Cast(FTy 5),
11666                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
11667                                   bVar"b'17",bVar"b'16"]),
11668                            Mop(Cast(FTy 5),
11669                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
11670                                   bVar"b'12",bVar"b'11"]),
11671                            Mop(Cast(FTy 3),
11672                                LL[bVar"b'2",bVar"b'1",bVar"b'0"])]))),
11673                  (Bop(And,Mop(Not,bVar"b'31"),
11674                       Bop(And,Mop(Not,bVar"b'28"),
11675                           Bop(And,Mop(Not,bVar"b'27"),
11676                               Bop(And,Mop(Not,bVar"b'25"),
11677                                   Bop(And,Mop(Not,bVar"b'24"),
11678                                       Bop(And,Mop(Not,bVar"b'23"),
11679                                           Bop(And,Mop(Not,bVar"b'22"),
11680                                               Bop(And,bVar"b'21",
11681                                                   Bop(And,
11682                                                       Mop(Not,bVar"b'10"),
11683                                                       Bop(And,
11684                                                           Mop(Not,
11685                                                               bVar"b'9"),
11686                                                           Bop(And,
11687                                                               Mop(Not,
11688                                                                   bVar"b'8"),
11689                                                               Bop(And,
11690                                                                   Mop(Not,
11691                                                                       bVar"b'7"),
11692                                                                   Bop(And,
11693                                                                       Mop(Not,
11694                                                                           bVar"b'6"),
11695                                                                       Bop(And,
11696                                                                           Mop(Not,
11697                                                                               bVar"b'5"),
11698                                                                           Bop(And,
11699                                                                               Mop(Not,
11700                                                                                   bVar"b'4"),
11701                                                                               Mop(Not,
11702                                                                                   bVar"b'3")))))))))))))))),
11703                   Call
11704                     ("CP",CTy"instruction",
11705                      Call
11706                        ("DMFC0",CTy"CP",
11707                         TP[Mop(Cast(FTy 5),
11708                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
11709                                   bVar"b'17",bVar"b'16"]),
11710                            Mop(Cast(FTy 5),
11711                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
11712                                   bVar"b'12",bVar"b'11"]),
11713                            Mop(Cast(FTy 3),
11714                                LL[bVar"b'2",bVar"b'1",bVar"b'0"])]))),
11715                  (Bop(And,Mop(Not,bVar"b'31"),
11716                       Bop(And,Mop(Not,bVar"b'28"),
11717                           Bop(And,Mop(Not,bVar"b'27"),
11718                               Bop(And,Mop(Not,bVar"b'25"),
11719                                   Bop(And,Mop(Not,bVar"b'24"),
11720                                       Bop(And,bVar"b'23",
11721                                           Bop(And,Mop(Not,bVar"b'22"),
11722                                               Bop(And,
11723                                                   Mop(Not,bVar"b'21"),
11724                                                   Bop(And,
11725                                                       Mop(Not,bVar"b'10"),
11726                                                       Bop(And,
11727                                                           Mop(Not,
11728                                                               bVar"b'9"),
11729                                                           Bop(And,
11730                                                               Mop(Not,
11731                                                                   bVar"b'8"),
11732                                                               Bop(And,
11733                                                                   Mop(Not,
11734                                                                       bVar"b'7"),
11735                                                                   Bop(And,
11736                                                                       Mop(Not,
11737                                                                           bVar"b'6"),
11738                                                                       Bop(And,
11739                                                                           Mop(Not,
11740                                                                               bVar"b'5"),
11741                                                                           Bop(And,
11742                                                                               Mop(Not,
11743                                                                                   bVar"b'4"),
11744                                                                               Mop(Not,
11745                                                                                   bVar"b'3")))))))))))))))),
11746                   Call
11747                     ("CP",CTy"instruction",
11748                      Call
11749                        ("MTC0",CTy"CP",
11750                         TP[Mop(Cast(FTy 5),
11751                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
11752                                   bVar"b'17",bVar"b'16"]),
11753                            Mop(Cast(FTy 5),
11754                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
11755                                   bVar"b'12",bVar"b'11"]),
11756                            Mop(Cast(FTy 3),
11757                                LL[bVar"b'2",bVar"b'1",bVar"b'0"])]))),
11758                  (Bop(And,Mop(Not,bVar"b'31"),
11759                       Bop(And,Mop(Not,bVar"b'28"),
11760                           Bop(And,Mop(Not,bVar"b'27"),
11761                               Bop(And,Mop(Not,bVar"b'25"),
11762                                   Bop(And,Mop(Not,bVar"b'24"),
11763                                       Bop(And,bVar"b'23",
11764                                           Bop(And,Mop(Not,bVar"b'22"),
11765                                               Bop(And,bVar"b'21",
11766                                                   Bop(And,
11767                                                       Mop(Not,bVar"b'10"),
11768                                                       Bop(And,
11769                                                           Mop(Not,
11770                                                               bVar"b'9"),
11771                                                           Bop(And,
11772                                                               Mop(Not,
11773                                                                   bVar"b'8"),
11774                                                               Bop(And,
11775                                                                   Mop(Not,
11776                                                                       bVar"b'7"),
11777                                                                   Bop(And,
11778                                                                       Mop(Not,
11779                                                                           bVar"b'6"),
11780                                                                       Bop(And,
11781                                                                           Mop(Not,
11782                                                                               bVar"b'5"),
11783                                                                           Bop(And,
11784                                                                               Mop(Not,
11785                                                                                   bVar"b'4"),
11786                                                                               Mop(Not,
11787                                                                                   bVar"b'3")))))))))))))))),
11788                   Call
11789                     ("CP",CTy"instruction",
11790                      Call
11791                        ("DMTC0",CTy"CP",
11792                         TP[Mop(Cast(FTy 5),
11793                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
11794                                   bVar"b'17",bVar"b'16"]),
11795                            Mop(Cast(FTy 5),
11796                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
11797                                   bVar"b'12",bVar"b'11"]),
11798                            Mop(Cast(FTy 3),
11799                                LL[bVar"b'2",bVar"b'1",bVar"b'0"])]))),
11800                  (Bop(And,Mop(Not,bVar"b'31"),
11801                       Bop(And,bVar"b'28",
11802                           Bop(And,bVar"b'27",
11803                               Bop(And,Mop(Not,bVar"b'20"),
11804                                   Bop(And,Mop(Not,bVar"b'19"),
11805                                       Bop(And,Mop(Not,bVar"b'18"),
11806                                           Bop(And,Mop(Not,bVar"b'17"),
11807                                               Mop(Not,bVar"b'16")))))))),
11808                   Call
11809                     ("Branch",CTy"instruction",
11810                      Call
11811                        ("BLEZL",CTy"Branch",
11812                         TP[Mop(Cast(FTy 5),
11813                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
11814                                   bVar"b'22",bVar"b'21"]),
11815                            Mop(Cast F16,
11816                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
11817                                   bVar"b'12",bVar"b'11",bVar"b'10",
11818                                   bVar"b'9",bVar"b'8",bVar"b'7",
11819                                   bVar"b'6",bVar"b'5",bVar"b'4",
11820                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
11821                  (Bop(And,Mop(Not,bVar"b'31"),
11822                       Bop(And,bVar"b'28",Mop(Not,bVar"b'27"))),
11823                   Call
11824                     ("Branch",CTy"instruction",
11825                      Call
11826                        ("BEQL",CTy"Branch",
11827                         TP[Mop(Cast(FTy 5),
11828                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
11829                                   bVar"b'22",bVar"b'21"]),
11830                            Mop(Cast(FTy 5),
11831                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
11832                                   bVar"b'17",bVar"b'16"]),
11833                            Mop(Cast F16,
11834                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
11835                                   bVar"b'12",bVar"b'11",bVar"b'10",
11836                                   bVar"b'9",bVar"b'8",bVar"b'7",
11837                                   bVar"b'6",bVar"b'5",bVar"b'4",
11838                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
11839                  (Bop(And,bVar"b'31",
11840                       Bop(And,Mop(Not,bVar"b'28"),Mop(Not,bVar"b'27"))),
11841                   Call
11842                     ("Load",CTy"instruction",
11843                      Call
11844                        ("LL",CTy"Load",
11845                         TP[Mop(Cast(FTy 5),
11846                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
11847                                   bVar"b'22",bVar"b'21"]),
11848                            Mop(Cast(FTy 5),
11849                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
11850                                   bVar"b'17",bVar"b'16"]),
11851                            Mop(Cast F16,
11852                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
11853                                   bVar"b'12",bVar"b'11",bVar"b'10",
11854                                   bVar"b'9",bVar"b'8",bVar"b'7",
11855                                   bVar"b'6",bVar"b'5",bVar"b'4",
11856                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
11857                  (Bop(And,bVar"b'31",
11858                       Bop(And,bVar"b'28",Mop(Not,bVar"b'27"))),
11859                   Call
11860                     ("Load",CTy"instruction",
11861                      Call
11862                        ("LLD",CTy"Load",
11863                         TP[Mop(Cast(FTy 5),
11864                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
11865                                   bVar"b'22",bVar"b'21"]),
11866                            Mop(Cast(FTy 5),
11867                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
11868                                   bVar"b'17",bVar"b'16"]),
11869                            Mop(Cast F16,
11870                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
11871                                   bVar"b'12",bVar"b'11",bVar"b'10",
11872                                   bVar"b'9",bVar"b'8",bVar"b'7",
11873                                   bVar"b'6",bVar"b'5",bVar"b'4",
11874                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
11875                  (Bop(And,Mop(Not,bVar"b'31"),
11876                       Bop(And,Mop(Not,bVar"b'28"),
11877                           Bop(And,Mop(Not,bVar"b'27"),
11878                               Bop(And,bVar"b'25",
11879                                   Bop(And,Mop(Not,bVar"b'24"),
11880                                       Bop(And,Mop(Not,bVar"b'23"),
11881                                           Bop(And,Mop(Not,bVar"b'22"),
11882                                               Bop(And,
11883                                                   Mop(Not,bVar"b'21"),
11884                                                   Bop(And,
11885                                                       Mop(Not,bVar"b'20"),
11886                                                       Bop(And,
11887                                                           Mop(Not,
11888                                                               bVar"b'19"),
11889                                                           Bop(And,
11890                                                               Mop(Not,
11891                                                                   bVar"b'18"),
11892                                                               Bop(And,
11893                                                                   Mop(Not,
11894                                                                       bVar"b'17"),
11895                                                                   Bop(And,
11896                                                                       Mop(Not,
11897                                                                           bVar"b'16"),
11898                                                                       Bop(And,
11899                                                                           Mop(Not,
11900                                                                               bVar"b'15"),
11901                                                                           Bop(And,
11902                                                                               Mop(Not,
11903                                                                                   bVar"b'14"),
11904                                                                               Bop(And,
11905                                                                                   Mop(Not,
11906                                                                                       bVar"b'13"),
11907                                                                                   Bop(And,
11908                                                                                       Mop(Not,
11909                                                                                           bVar"b'12"),
11910                                                                                       Bop(And,
11911                                                                                           Mop(Not,
11912                                                                                               bVar"b'11"),
11913                                                                                           Bop(And,
11914                                                                                               Mop(Not,
11915                                                                                                   bVar"b'10"),
11916                                                                                               Bop(And,
11917                                                                                                   Mop(Not,
11918                                                                                                       bVar"b'9"),
11919                                                                                                   Bop(And,
11920                                                                                                       Mop(Not,
11921                                                                                                           bVar"b'8"),
11922                                                                                                       Bop(And,
11923                                                                                                           Mop(Not,
11924                                                                                                               bVar"b'7"),
11925                                                                                                           Bop(And,
11926                                                                                                               Mop(Not,
11927                                                                                                                   bVar"b'6"),
11928                                                                                                               Bop(And,
11929                                                                                                                   bVar"b'5",
11930                                                                                                                   Bop(And,
11931                                                                                                                       Mop(Not,
11932                                                                                                                           bVar"b'4"),
11933                                                                                                                       Bop(And,
11934                                                                                                                           Mop(Not,
11935                                                                                                                               bVar"b'3"),
11936                                                                                                                           Bop(And,
11937                                                                                                                               Mop(Not,
11938                                                                                                                                   bVar"b'2"),
11939                                                                                                                               Bop(And,
11940                                                                                                                                   Mop(Not,
11941                                                                                                                                       bVar"b'1"),
11942                                                                                                                                   Mop(Not,
11943                                                                                                                                       bVar"b'0"))))))))))))))))))))))))))))),
11944                   Const("WAIT",CTy"instruction"))],
11945                 Const("ReservedInstruction",CTy"instruction"))),
11946            (bVar"b'31",
11947             ITB([(bVar"b'29",
11948                   ITB([(Bop(And,Mop(Not,bVar"b'28"),Mop(Not,bVar"b'27")),
11949                         Call
11950                           ("Store",CTy"instruction",
11951                            Call
11952                              ("SB",CTy"Store",
11953                               TP[Mop(Cast(FTy 5),
11954                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
11955                                         bVar"b'22",bVar"b'21"]),
11956                                  Mop(Cast(FTy 5),
11957                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
11958                                         bVar"b'17",bVar"b'16"]),
11959                                  Mop(Cast F16,
11960                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
11961                                         bVar"b'12",bVar"b'11",bVar"b'10",
11962                                         bVar"b'9",bVar"b'8",bVar"b'7",
11963                                         bVar"b'6",bVar"b'5",bVar"b'4",
11964                                         bVar"b'3",bVar"b'2",bVar"b'1",
11965                                         bVar"b'0"])]))),
11966                        (Bop(And,Mop(Not,bVar"b'28"),bVar"b'27"),
11967                         Call
11968                           ("Store",CTy"instruction",
11969                            Call
11970                              ("SWL",CTy"Store",
11971                               TP[Mop(Cast(FTy 5),
11972                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
11973                                         bVar"b'22",bVar"b'21"]),
11974                                  Mop(Cast(FTy 5),
11975                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
11976                                         bVar"b'17",bVar"b'16"]),
11977                                  Mop(Cast F16,
11978                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
11979                                         bVar"b'12",bVar"b'11",bVar"b'10",
11980                                         bVar"b'9",bVar"b'8",bVar"b'7",
11981                                         bVar"b'6",bVar"b'5",bVar"b'4",
11982                                         bVar"b'3",bVar"b'2",bVar"b'1",
11983                                         bVar"b'0"])]))),
11984                        (Bop(And,bVar"b'28",Mop(Not,bVar"b'27")),
11985                         Call
11986                           ("Store",CTy"instruction",
11987                            Call
11988                              ("SDL",CTy"Store",
11989                               TP[Mop(Cast(FTy 5),
11990                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
11991                                         bVar"b'22",bVar"b'21"]),
11992                                  Mop(Cast(FTy 5),
11993                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
11994                                         bVar"b'17",bVar"b'16"]),
11995                                  Mop(Cast F16,
11996                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
11997                                         bVar"b'12",bVar"b'11",bVar"b'10",
11998                                         bVar"b'9",bVar"b'8",bVar"b'7",
11999                                         bVar"b'6",bVar"b'5",bVar"b'4",
12000                                         bVar"b'3",bVar"b'2",bVar"b'1",
12001                                         bVar"b'0"])]))),
12002                        (Bop(And,bVar"b'28",bVar"b'27"),
12003                         Call
12004                           ("Store",CTy"instruction",
12005                            Call
12006                              ("SWR",CTy"Store",
12007                               TP[Mop(Cast(FTy 5),
12008                                      LL[bVar"b'25",bVar"b'24",bVar"b'23",
12009                                         bVar"b'22",bVar"b'21"]),
12010                                  Mop(Cast(FTy 5),
12011                                      LL[bVar"b'20",bVar"b'19",bVar"b'18",
12012                                         bVar"b'17",bVar"b'16"]),
12013                                  Mop(Cast F16,
12014                                      LL[bVar"b'15",bVar"b'14",bVar"b'13",
12015                                         bVar"b'12",bVar"b'11",bVar"b'10",
12016                                         bVar"b'9",bVar"b'8",bVar"b'7",
12017                                         bVar"b'6",bVar"b'5",bVar"b'4",
12018                                         bVar"b'3",bVar"b'2",bVar"b'1",
12019                                         bVar"b'0"])])))],
12020                       Const("ReservedInstruction",CTy"instruction"))),
12021                  (Bop(And,Mop(Not,bVar"b'28"),Mop(Not,bVar"b'27")),
12022                   Call
12023                     ("Load",CTy"instruction",
12024                      Call
12025                        ("LB",CTy"Load",
12026                         TP[Mop(Cast(FTy 5),
12027                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
12028                                   bVar"b'22",bVar"b'21"]),
12029                            Mop(Cast(FTy 5),
12030                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
12031                                   bVar"b'17",bVar"b'16"]),
12032                            Mop(Cast F16,
12033                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
12034                                   bVar"b'12",bVar"b'11",bVar"b'10",
12035                                   bVar"b'9",bVar"b'8",bVar"b'7",
12036                                   bVar"b'6",bVar"b'5",bVar"b'4",
12037                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
12038                  (Bop(And,Mop(Not,bVar"b'28"),bVar"b'27"),
12039                   Call
12040                     ("Load",CTy"instruction",
12041                      Call
12042                        ("LWL",CTy"Load",
12043                         TP[Mop(Cast(FTy 5),
12044                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
12045                                   bVar"b'22",bVar"b'21"]),
12046                            Mop(Cast(FTy 5),
12047                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
12048                                   bVar"b'17",bVar"b'16"]),
12049                            Mop(Cast F16,
12050                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
12051                                   bVar"b'12",bVar"b'11",bVar"b'10",
12052                                   bVar"b'9",bVar"b'8",bVar"b'7",
12053                                   bVar"b'6",bVar"b'5",bVar"b'4",
12054                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
12055                  (Bop(And,bVar"b'28",Mop(Not,bVar"b'27")),
12056                   Call
12057                     ("Load",CTy"instruction",
12058                      Call
12059                        ("LBU",CTy"Load",
12060                         TP[Mop(Cast(FTy 5),
12061                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
12062                                   bVar"b'22",bVar"b'21"]),
12063                            Mop(Cast(FTy 5),
12064                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
12065                                   bVar"b'17",bVar"b'16"]),
12066                            Mop(Cast F16,
12067                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
12068                                   bVar"b'12",bVar"b'11",bVar"b'10",
12069                                   bVar"b'9",bVar"b'8",bVar"b'7",
12070                                   bVar"b'6",bVar"b'5",bVar"b'4",
12071                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
12072                  (Bop(And,bVar"b'28",bVar"b'27"),
12073                   Call
12074                     ("Load",CTy"instruction",
12075                      Call
12076                        ("LWR",CTy"Load",
12077                         TP[Mop(Cast(FTy 5),
12078                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
12079                                   bVar"b'22",bVar"b'21"]),
12080                            Mop(Cast(FTy 5),
12081                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
12082                                   bVar"b'17",bVar"b'16"]),
12083                            Mop(Cast F16,
12084                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
12085                                   bVar"b'12",bVar"b'11",bVar"b'10",
12086                                   bVar"b'9",bVar"b'8",bVar"b'7",
12087                                   bVar"b'6",bVar"b'5",bVar"b'4",
12088                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])])))],
12089                 Const("ReservedInstruction",CTy"instruction"))),
12090            (bVar"b'29",
12091             ITB([(Bop(And,Mop(Not,bVar"b'28"),Mop(Not,bVar"b'27")),
12092                   Call
12093                     ("ArithI",CTy"instruction",
12094                      Call
12095                        ("ADDI",CTy"ArithI",
12096                         TP[Mop(Cast(FTy 5),
12097                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
12098                                   bVar"b'22",bVar"b'21"]),
12099                            Mop(Cast(FTy 5),
12100                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
12101                                   bVar"b'17",bVar"b'16"]),
12102                            Mop(Cast F16,
12103                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
12104                                   bVar"b'12",bVar"b'11",bVar"b'10",
12105                                   bVar"b'9",bVar"b'8",bVar"b'7",
12106                                   bVar"b'6",bVar"b'5",bVar"b'4",
12107                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
12108                  (Bop(And,Mop(Not,bVar"b'28"),bVar"b'27"),
12109                   Call
12110                     ("ArithI",CTy"instruction",
12111                      Call
12112                        ("SLTI",CTy"ArithI",
12113                         TP[Mop(Cast(FTy 5),
12114                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
12115                                   bVar"b'22",bVar"b'21"]),
12116                            Mop(Cast(FTy 5),
12117                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
12118                                   bVar"b'17",bVar"b'16"]),
12119                            Mop(Cast F16,
12120                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
12121                                   bVar"b'12",bVar"b'11",bVar"b'10",
12122                                   bVar"b'9",bVar"b'8",bVar"b'7",
12123                                   bVar"b'6",bVar"b'5",bVar"b'4",
12124                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
12125                  (Bop(And,bVar"b'28",Mop(Not,bVar"b'27")),
12126                   Call
12127                     ("ArithI",CTy"instruction",
12128                      Call
12129                        ("ANDI",CTy"ArithI",
12130                         TP[Mop(Cast(FTy 5),
12131                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
12132                                   bVar"b'22",bVar"b'21"]),
12133                            Mop(Cast(FTy 5),
12134                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
12135                                   bVar"b'17",bVar"b'16"]),
12136                            Mop(Cast F16,
12137                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
12138                                   bVar"b'12",bVar"b'11",bVar"b'10",
12139                                   bVar"b'9",bVar"b'8",bVar"b'7",
12140                                   bVar"b'6",bVar"b'5",bVar"b'4",
12141                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
12142                  (Bop(And,bVar"b'28",bVar"b'27"),
12143                   Call
12144                     ("ArithI",CTy"instruction",
12145                      Call
12146                        ("XORI",CTy"ArithI",
12147                         TP[Mop(Cast(FTy 5),
12148                                LL[bVar"b'25",bVar"b'24",bVar"b'23",
12149                                   bVar"b'22",bVar"b'21"]),
12150                            Mop(Cast(FTy 5),
12151                                LL[bVar"b'20",bVar"b'19",bVar"b'18",
12152                                   bVar"b'17",bVar"b'16"]),
12153                            Mop(Cast F16,
12154                                LL[bVar"b'15",bVar"b'14",bVar"b'13",
12155                                   bVar"b'12",bVar"b'11",bVar"b'10",
12156                                   bVar"b'9",bVar"b'8",bVar"b'7",
12157                                   bVar"b'6",bVar"b'5",bVar"b'4",
12158                                   bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])])))],
12159                 Const("ReservedInstruction",CTy"instruction"))),
12160            (Bop(And,Mop(Not,bVar"b'28"),
12161                 Bop(And,Mop(Not,bVar"b'27"),
12162                     Bop(And,Mop(Not,bVar"b'10"),
12163                         Bop(And,Mop(Not,bVar"b'9"),
12164                             Bop(And,Mop(Not,bVar"b'8"),
12165                                 Bop(And,Mop(Not,bVar"b'7"),
12166                                     Bop(And,Mop(Not,bVar"b'6"),
12167                                         Bop(And,Mop(Not,bVar"b'5"),
12168                                             Bop(And,Mop(Not,bVar"b'4"),
12169                                                 Bop(And,
12170                                                     Mop(Not,bVar"b'3"),
12171                                                     Bop(And,
12172                                                         Mop(Not,bVar"b'2"),
12173                                                         Bop(And,
12174                                                             Mop(Not,
12175                                                                 bVar"b'1"),
12176                                                             bVar"b'0")))))))))))),
12177             Call
12178               ("MOVCIDecode",CTy"instruction",
12179                TP[Mop(Cast(FTy 5),
12180                       LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
12181                          bVar"b'21"]),
12182                   Mop(Cast(FTy 5),
12183                       LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
12184                          bVar"b'16"]),
12185                   Mop(Cast(FTy 5),
12186                       LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
12187                          bVar"b'11"])])),
12188            (Bop(And,Mop(Not,bVar"b'28"),
12189                 Bop(And,Mop(Not,bVar"b'27"),
12190                     Bop(And,Mop(Not,bVar"b'25"),
12191                         Bop(And,Mop(Not,bVar"b'24"),
12192                             Bop(And,Mop(Not,bVar"b'23"),
12193                                 Bop(And,Mop(Not,bVar"b'22"),
12194                                     Bop(And,Mop(Not,bVar"b'21"),
12195                                         Bop(And,Mop(Not,bVar"b'5"),
12196                                             Bop(And,Mop(Not,bVar"b'4"),
12197                                                 Bop(And,
12198                                                     Mop(Not,bVar"b'3"),
12199                                                     Bop(And,
12200                                                         Mop(Not,bVar"b'2"),
12201                                                         Bop(And,
12202                                                             Mop(Not,
12203                                                                 bVar"b'1"),
12204                                                             Mop(Not,
12205                                                                 bVar"b'0"))))))))))))),
12206             Call
12207               ("Shift",CTy"instruction",
12208                Call
12209                  ("SLL",CTy"Shift",
12210                   TP[Mop(Cast(FTy 5),
12211                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
12212                             bVar"b'16"]),
12213                      Mop(Cast(FTy 5),
12214                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
12215                             bVar"b'11"]),
12216                      Mop(Cast(FTy 5),
12217                          LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
12218                             bVar"b'6"])]))),
12219            (Bop(And,Mop(Not,bVar"b'28"),
12220                 Bop(And,Mop(Not,bVar"b'27"),
12221                     Bop(And,Mop(Not,bVar"b'25"),
12222                         Bop(And,Mop(Not,bVar"b'24"),
12223                             Bop(And,Mop(Not,bVar"b'23"),
12224                                 Bop(And,Mop(Not,bVar"b'22"),
12225                                     Bop(And,Mop(Not,bVar"b'21"),
12226                                         Bop(And,Mop(Not,bVar"b'5"),
12227                                             Bop(And,Mop(Not,bVar"b'4"),
12228                                                 Bop(And,
12229                                                     Mop(Not,bVar"b'3"),
12230                                                     Bop(And,
12231                                                         Mop(Not,bVar"b'2"),
12232                                                         Bop(And,
12233                                                             bVar"b'1",
12234                                                             Mop(Not,
12235                                                                 bVar"b'0"))))))))))))),
12236             Call
12237               ("Shift",CTy"instruction",
12238                Call
12239                  ("SRL",CTy"Shift",
12240                   TP[Mop(Cast(FTy 5),
12241                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
12242                             bVar"b'16"]),
12243                      Mop(Cast(FTy 5),
12244                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
12245                             bVar"b'11"]),
12246                      Mop(Cast(FTy 5),
12247                          LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
12248                             bVar"b'6"])]))),
12249            (Bop(And,Mop(Not,bVar"b'28"),
12250                 Bop(And,Mop(Not,bVar"b'27"),
12251                     Bop(And,Mop(Not,bVar"b'25"),
12252                         Bop(And,Mop(Not,bVar"b'24"),
12253                             Bop(And,Mop(Not,bVar"b'23"),
12254                                 Bop(And,Mop(Not,bVar"b'22"),
12255                                     Bop(And,Mop(Not,bVar"b'21"),
12256                                         Bop(And,Mop(Not,bVar"b'5"),
12257                                             Bop(And,Mop(Not,bVar"b'4"),
12258                                                 Bop(And,
12259                                                     Mop(Not,bVar"b'3"),
12260                                                     Bop(And,
12261                                                         Mop(Not,bVar"b'2"),
12262                                                         Bop(And,
12263                                                             bVar"b'1",
12264                                                             bVar"b'0")))))))))))),
12265             Call
12266               ("Shift",CTy"instruction",
12267                Call
12268                  ("SRA",CTy"Shift",
12269                   TP[Mop(Cast(FTy 5),
12270                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
12271                             bVar"b'16"]),
12272                      Mop(Cast(FTy 5),
12273                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
12274                             bVar"b'11"]),
12275                      Mop(Cast(FTy 5),
12276                          LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
12277                             bVar"b'6"])]))),
12278            (Bop(And,Mop(Not,bVar"b'28"),
12279                 Bop(And,Mop(Not,bVar"b'27"),
12280                     Bop(And,Mop(Not,bVar"b'10"),
12281                         Bop(And,Mop(Not,bVar"b'9"),
12282                             Bop(And,Mop(Not,bVar"b'8"),
12283                                 Bop(And,Mop(Not,bVar"b'7"),
12284                                     Bop(And,Mop(Not,bVar"b'6"),
12285                                         Bop(And,Mop(Not,bVar"b'5"),
12286                                             Bop(And,Mop(Not,bVar"b'4"),
12287                                                 Bop(And,
12288                                                     Mop(Not,bVar"b'3"),
12289                                                     Bop(And,bVar"b'2",
12290                                                         Bop(And,
12291                                                             Mop(Not,
12292                                                                 bVar"b'1"),
12293                                                             Mop(Not,
12294                                                                 bVar"b'0"))))))))))))),
12295             Call
12296               ("Shift",CTy"instruction",
12297                Call
12298                  ("SLLV",CTy"Shift",
12299                   TP[Mop(Cast(FTy 5),
12300                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
12301                             bVar"b'21"]),
12302                      Mop(Cast(FTy 5),
12303                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
12304                             bVar"b'16"]),
12305                      Mop(Cast(FTy 5),
12306                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
12307                             bVar"b'11"])]))),
12308            (Bop(And,Mop(Not,bVar"b'28"),
12309                 Bop(And,Mop(Not,bVar"b'27"),
12310                     Bop(And,Mop(Not,bVar"b'10"),
12311                         Bop(And,Mop(Not,bVar"b'9"),
12312                             Bop(And,Mop(Not,bVar"b'8"),
12313                                 Bop(And,Mop(Not,bVar"b'7"),
12314                                     Bop(And,Mop(Not,bVar"b'6"),
12315                                         Bop(And,Mop(Not,bVar"b'5"),
12316                                             Bop(And,Mop(Not,bVar"b'4"),
12317                                                 Bop(And,
12318                                                     Mop(Not,bVar"b'3"),
12319                                                     Bop(And,bVar"b'2",
12320                                                         Bop(And,
12321                                                             bVar"b'1",
12322                                                             Mop(Not,
12323                                                                 bVar"b'0"))))))))))))),
12324             Call
12325               ("Shift",CTy"instruction",
12326                Call
12327                  ("SRLV",CTy"Shift",
12328                   TP[Mop(Cast(FTy 5),
12329                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
12330                             bVar"b'21"]),
12331                      Mop(Cast(FTy 5),
12332                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
12333                             bVar"b'16"]),
12334                      Mop(Cast(FTy 5),
12335                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
12336                             bVar"b'11"])]))),
12337            (Bop(And,Mop(Not,bVar"b'28"),
12338                 Bop(And,Mop(Not,bVar"b'27"),
12339                     Bop(And,Mop(Not,bVar"b'10"),
12340                         Bop(And,Mop(Not,bVar"b'9"),
12341                             Bop(And,Mop(Not,bVar"b'8"),
12342                                 Bop(And,Mop(Not,bVar"b'7"),
12343                                     Bop(And,Mop(Not,bVar"b'6"),
12344                                         Bop(And,Mop(Not,bVar"b'5"),
12345                                             Bop(And,Mop(Not,bVar"b'4"),
12346                                                 Bop(And,
12347                                                     Mop(Not,bVar"b'3"),
12348                                                     Bop(And,bVar"b'2",
12349                                                         Bop(And,
12350                                                             bVar"b'1",
12351                                                             bVar"b'0")))))))))))),
12352             Call
12353               ("Shift",CTy"instruction",
12354                Call
12355                  ("SRAV",CTy"Shift",
12356                   TP[Mop(Cast(FTy 5),
12357                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
12358                             bVar"b'21"]),
12359                      Mop(Cast(FTy 5),
12360                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
12361                             bVar"b'16"]),
12362                      Mop(Cast(FTy 5),
12363                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
12364                             bVar"b'11"])]))),
12365            (Bop(And,Mop(Not,bVar"b'28"),
12366                 Bop(And,Mop(Not,bVar"b'27"),
12367                     Bop(And,Mop(Not,bVar"b'20"),
12368                         Bop(And,Mop(Not,bVar"b'19"),
12369                             Bop(And,Mop(Not,bVar"b'18"),
12370                                 Bop(And,Mop(Not,bVar"b'17"),
12371                                     Bop(And,Mop(Not,bVar"b'16"),
12372                                         Bop(And,Mop(Not,bVar"b'15"),
12373                                             Bop(And,Mop(Not,bVar"b'14"),
12374                                                 Bop(And,
12375                                                     Mop(Not,bVar"b'13"),
12376                                                     Bop(And,
12377                                                         Mop(Not,
12378                                                             bVar"b'12"),
12379                                                         Bop(And,
12380                                                             Mop(Not,
12381                                                                 bVar"b'11"),
12382                                                             Bop(And,
12383                                                                 Mop(Not,
12384                                                                     bVar"b'5"),
12385                                                                 Bop(And,
12386                                                                     Mop(Not,
12387                                                                         bVar"b'4"),
12388                                                                     Bop(And,
12389                                                                         bVar"b'3",
12390                                                                         Bop(And,
12391                                                                             Mop(Not,
12392                                                                                 bVar"b'2"),
12393                                                                             Bop(And,
12394                                                                                 Mop(Not,
12395                                                                                     bVar"b'1"),
12396                                                                                 Mop(Not,
12397                                                                                     bVar"b'0")))))))))))))))))),
12398             Call
12399               ("Branch",CTy"instruction",
12400                Call
12401                  ("JR",CTy"Branch",
12402                   Mop(Cast(FTy 5),
12403                       LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
12404                          bVar"b'21"])))),
12405            (Bop(And,Mop(Not,bVar"b'28"),
12406                 Bop(And,Mop(Not,bVar"b'27"),
12407                     Bop(And,Mop(Not,bVar"b'20"),
12408                         Bop(And,Mop(Not,bVar"b'19"),
12409                             Bop(And,Mop(Not,bVar"b'18"),
12410                                 Bop(And,Mop(Not,bVar"b'17"),
12411                                     Bop(And,Mop(Not,bVar"b'16"),
12412                                         Bop(And,Mop(Not,bVar"b'5"),
12413                                             Bop(And,Mop(Not,bVar"b'4"),
12414                                                 Bop(And,bVar"b'3",
12415                                                     Bop(And,
12416                                                         Mop(Not,bVar"b'2"),
12417                                                         Bop(And,
12418                                                             Mop(Not,
12419                                                                 bVar"b'1"),
12420                                                             bVar"b'0")))))))))))),
12421             Call
12422               ("Branch",CTy"instruction",
12423                Call
12424                  ("JALR",CTy"Branch",
12425                   TP[Mop(Cast(FTy 5),
12426                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
12427                             bVar"b'21"]),
12428                      Mop(Cast(FTy 5),
12429                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
12430                             bVar"b'11"])]))),
12431            (Bop(And,Mop(Not,bVar"b'28"),
12432                 Bop(And,Mop(Not,bVar"b'27"),
12433                     Bop(And,Mop(Not,bVar"b'10"),
12434                         Bop(And,Mop(Not,bVar"b'9"),
12435                             Bop(And,Mop(Not,bVar"b'8"),
12436                                 Bop(And,Mop(Not,bVar"b'7"),
12437                                     Bop(And,Mop(Not,bVar"b'6"),
12438                                         Bop(And,Mop(Not,bVar"b'5"),
12439                                             Bop(And,Mop(Not,bVar"b'4"),
12440                                                 Bop(And,bVar"b'3",
12441                                                     Bop(And,
12442                                                         Mop(Not,bVar"b'2"),
12443                                                         Bop(And,
12444                                                             bVar"b'1",
12445                                                             Mop(Not,
12446                                                                 bVar"b'0"))))))))))))),
12447             Call
12448               ("ArithR",CTy"instruction",
12449                Call
12450                  ("MOVZ",CTy"ArithR",
12451                   TP[Mop(Cast(FTy 5),
12452                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
12453                             bVar"b'21"]),
12454                      Mop(Cast(FTy 5),
12455                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
12456                             bVar"b'16"]),
12457                      Mop(Cast(FTy 5),
12458                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
12459                             bVar"b'11"])]))),
12460            (Bop(And,Mop(Not,bVar"b'28"),
12461                 Bop(And,Mop(Not,bVar"b'27"),
12462                     Bop(And,Mop(Not,bVar"b'10"),
12463                         Bop(And,Mop(Not,bVar"b'9"),
12464                             Bop(And,Mop(Not,bVar"b'8"),
12465                                 Bop(And,Mop(Not,bVar"b'7"),
12466                                     Bop(And,Mop(Not,bVar"b'6"),
12467                                         Bop(And,Mop(Not,bVar"b'5"),
12468                                             Bop(And,Mop(Not,bVar"b'4"),
12469                                                 Bop(And,bVar"b'3",
12470                                                     Bop(And,
12471                                                         Mop(Not,bVar"b'2"),
12472                                                         Bop(And,
12473                                                             bVar"b'1",
12474                                                             bVar"b'0")))))))))))),
12475             Call
12476               ("ArithR",CTy"instruction",
12477                Call
12478                  ("MOVN",CTy"ArithR",
12479                   TP[Mop(Cast(FTy 5),
12480                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
12481                             bVar"b'21"]),
12482                      Mop(Cast(FTy 5),
12483                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
12484                             bVar"b'16"]),
12485                      Mop(Cast(FTy 5),
12486                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
12487                             bVar"b'11"])]))),
12488            (Bop(And,Mop(Not,bVar"b'28"),
12489                 Bop(And,Mop(Not,bVar"b'27"),
12490                     Bop(And,Mop(Not,bVar"b'25"),
12491                         Bop(And,Mop(Not,bVar"b'24"),
12492                             Bop(And,Mop(Not,bVar"b'23"),
12493                                 Bop(And,Mop(Not,bVar"b'22"),
12494                                     Bop(And,Mop(Not,bVar"b'21"),
12495                                         Bop(And,Mop(Not,bVar"b'5"),
12496                                             Bop(And,Mop(Not,bVar"b'4"),
12497                                                 Bop(And,bVar"b'3",
12498                                                     Bop(And,bVar"b'2",
12499                                                         Bop(And,
12500                                                             Mop(Not,
12501                                                                 bVar"b'1"),
12502                                                             Mop(Not,
12503                                                                 bVar"b'0"))))))))))))),
12504             Const("SYSCALL",CTy"instruction")),
12505            (Bop(And,Mop(Not,bVar"b'28"),
12506                 Bop(And,Mop(Not,bVar"b'27"),
12507                     Bop(And,Mop(Not,bVar"b'25"),
12508                         Bop(And,Mop(Not,bVar"b'24"),
12509                             Bop(And,Mop(Not,bVar"b'23"),
12510                                 Bop(And,Mop(Not,bVar"b'22"),
12511                                     Bop(And,Mop(Not,bVar"b'21"),
12512                                         Bop(And,Mop(Not,bVar"b'5"),
12513                                             Bop(And,Mop(Not,bVar"b'4"),
12514                                                 Bop(And,bVar"b'3",
12515                                                     Bop(And,bVar"b'2",
12516                                                         Bop(And,
12517                                                             Mop(Not,
12518                                                                 bVar"b'1"),
12519                                                             bVar"b'0")))))))))))),
12520             Const("BREAK",CTy"instruction")),
12521            (Bop(And,Mop(Not,bVar"b'28"),
12522                 Bop(And,Mop(Not,bVar"b'27"),
12523                     Bop(And,Mop(Not,bVar"b'25"),
12524                         Bop(And,Mop(Not,bVar"b'24"),
12525                             Bop(And,Mop(Not,bVar"b'23"),
12526                                 Bop(And,Mop(Not,bVar"b'22"),
12527                                     Bop(And,Mop(Not,bVar"b'21"),
12528                                         Bop(And,Mop(Not,bVar"b'20"),
12529                                             Bop(And,Mop(Not,bVar"b'19"),
12530                                                 Bop(And,
12531                                                     Mop(Not,bVar"b'18"),
12532                                                     Bop(And,
12533                                                         Mop(Not,
12534                                                             bVar"b'17"),
12535                                                         Bop(And,
12536                                                             Mop(Not,
12537                                                                 bVar"b'16"),
12538                                                             Bop(And,
12539                                                                 Mop(Not,
12540                                                                     bVar"b'15"),
12541                                                                 Bop(And,
12542                                                                     Mop(Not,
12543                                                                         bVar"b'14"),
12544                                                                     Bop(And,
12545                                                                         Mop(Not,
12546                                                                             bVar"b'13"),
12547                                                                         Bop(And,
12548                                                                             Mop(Not,
12549                                                                                 bVar"b'12"),
12550                                                                             Bop(And,
12551                                                                                 Mop(Not,
12552                                                                                     bVar"b'11"),
12553                                                                                 Bop(And,
12554                                                                                     Mop(Not,
12555                                                                                         bVar"b'5"),
12556                                                                                     Bop(And,
12557                                                                                         Mop(Not,
12558                                                                                             bVar"b'4"),
12559                                                                                         Bop(And,
12560                                                                                             bVar"b'3",
12561                                                                                             Bop(And,
12562                                                                                                 bVar"b'2",
12563                                                                                                 Bop(And,
12564                                                                                                     bVar"b'1",
12565                                                                                                     bVar"b'0")))))))))))))))))))))),
12566             Call
12567               ("SYNC",CTy"instruction",
12568                Mop(Cast(FTy 5),
12569                    LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6"]))),
12570            (Bop(And,Mop(Not,bVar"b'28"),
12571                 Bop(And,Mop(Not,bVar"b'27"),
12572                     Bop(And,Mop(Not,bVar"b'25"),
12573                         Bop(And,Mop(Not,bVar"b'24"),
12574                             Bop(And,Mop(Not,bVar"b'23"),
12575                                 Bop(And,Mop(Not,bVar"b'22"),
12576                                     Bop(And,Mop(Not,bVar"b'21"),
12577                                         Bop(And,Mop(Not,bVar"b'20"),
12578                                             Bop(And,Mop(Not,bVar"b'19"),
12579                                                 Bop(And,
12580                                                     Mop(Not,bVar"b'18"),
12581                                                     Bop(And,
12582                                                         Mop(Not,
12583                                                             bVar"b'17"),
12584                                                         Bop(And,
12585                                                             Mop(Not,
12586                                                                 bVar"b'16"),
12587                                                             Bop(And,
12588                                                                 Mop(Not,
12589                                                                     bVar"b'10"),
12590                                                                 Bop(And,
12591                                                                     Mop(Not,
12592                                                                         bVar"b'9"),
12593                                                                     Bop(And,
12594                                                                         Mop(Not,
12595                                                                             bVar"b'8"),
12596                                                                         Bop(And,
12597                                                                             Mop(Not,
12598                                                                                 bVar"b'7"),
12599                                                                             Bop(And,
12600                                                                                 Mop(Not,
12601                                                                                     bVar"b'6"),
12602                                                                                 Bop(And,
12603                                                                                     Mop(Not,
12604                                                                                         bVar"b'5"),
12605                                                                                     Bop(And,
12606                                                                                         bVar"b'4",
12607                                                                                         Bop(And,
12608                                                                                             Mop(Not,
12609                                                                                                 bVar"b'3"),
12610                                                                                             Bop(And,
12611                                                                                                 Mop(Not,
12612                                                                                                     bVar"b'2"),
12613                                                                                                 Bop(And,
12614                                                                                                     Mop(Not,
12615                                                                                                         bVar"b'1"),
12616                                                                                                     Mop(Not,
12617                                                                                                         bVar"b'0"))))))))))))))))))))))),
12618             Call
12619               ("MultDiv",CTy"instruction",
12620                Call
12621                  ("MFHI",CTy"MultDiv",
12622                   Mop(Cast(FTy 5),
12623                       LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
12624                          bVar"b'11"])))),
12625            (Bop(And,Mop(Not,bVar"b'28"),
12626                 Bop(And,Mop(Not,bVar"b'27"),
12627                     Bop(And,Mop(Not,bVar"b'20"),
12628                         Bop(And,Mop(Not,bVar"b'19"),
12629                             Bop(And,Mop(Not,bVar"b'18"),
12630                                 Bop(And,Mop(Not,bVar"b'17"),
12631                                     Bop(And,Mop(Not,bVar"b'16"),
12632                                         Bop(And,Mop(Not,bVar"b'15"),
12633                                             Bop(And,Mop(Not,bVar"b'14"),
12634                                                 Bop(And,
12635                                                     Mop(Not,bVar"b'13"),
12636                                                     Bop(And,
12637                                                         Mop(Not,
12638                                                             bVar"b'12"),
12639                                                         Bop(And,
12640                                                             Mop(Not,
12641                                                                 bVar"b'11"),
12642                                                             Bop(And,
12643                                                                 Mop(Not,
12644                                                                     bVar"b'10"),
12645                                                                 Bop(And,
12646                                                                     Mop(Not,
12647                                                                         bVar"b'9"),
12648                                                                     Bop(And,
12649                                                                         Mop(Not,
12650                                                                             bVar"b'8"),
12651                                                                         Bop(And,
12652                                                                             Mop(Not,
12653                                                                                 bVar"b'7"),
12654                                                                             Bop(And,
12655                                                                                 Mop(Not,
12656                                                                                     bVar"b'6"),
12657                                                                                 Bop(And,
12658                                                                                     Mop(Not,
12659                                                                                         bVar"b'5"),
12660                                                                                     Bop(And,
12661                                                                                         bVar"b'4",
12662                                                                                         Bop(And,
12663                                                                                             Mop(Not,
12664                                                                                                 bVar"b'3"),
12665                                                                                             Bop(And,
12666                                                                                                 Mop(Not,
12667                                                                                                     bVar"b'2"),
12668                                                                                                 Bop(And,
12669                                                                                                     Mop(Not,
12670                                                                                                         bVar"b'1"),
12671                                                                                                     bVar"b'0")))))))))))))))))))))),
12672             Call
12673               ("MultDiv",CTy"instruction",
12674                Call
12675                  ("MTHI",CTy"MultDiv",
12676                   Mop(Cast(FTy 5),
12677                       LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
12678                          bVar"b'21"])))),
12679            (Bop(And,Mop(Not,bVar"b'28"),
12680                 Bop(And,Mop(Not,bVar"b'27"),
12681                     Bop(And,Mop(Not,bVar"b'25"),
12682                         Bop(And,Mop(Not,bVar"b'24"),
12683                             Bop(And,Mop(Not,bVar"b'23"),
12684                                 Bop(And,Mop(Not,bVar"b'22"),
12685                                     Bop(And,Mop(Not,bVar"b'21"),
12686                                         Bop(And,Mop(Not,bVar"b'20"),
12687                                             Bop(And,Mop(Not,bVar"b'19"),
12688                                                 Bop(And,
12689                                                     Mop(Not,bVar"b'18"),
12690                                                     Bop(And,
12691                                                         Mop(Not,
12692                                                             bVar"b'17"),
12693                                                         Bop(And,
12694                                                             Mop(Not,
12695                                                                 bVar"b'16"),
12696                                                             Bop(And,
12697                                                                 Mop(Not,
12698                                                                     bVar"b'10"),
12699                                                                 Bop(And,
12700                                                                     Mop(Not,
12701                                                                         bVar"b'9"),
12702                                                                     Bop(And,
12703                                                                         Mop(Not,
12704                                                                             bVar"b'8"),
12705                                                                         Bop(And,
12706                                                                             Mop(Not,
12707                                                                                 bVar"b'7"),
12708                                                                             Bop(And,
12709                                                                                 Mop(Not,
12710                                                                                     bVar"b'6"),
12711                                                                                 Bop(And,
12712                                                                                     Mop(Not,
12713                                                                                         bVar"b'5"),
12714                                                                                     Bop(And,
12715                                                                                         bVar"b'4",
12716                                                                                         Bop(And,
12717                                                                                             Mop(Not,
12718                                                                                                 bVar"b'3"),
12719                                                                                             Bop(And,
12720                                                                                                 Mop(Not,
12721                                                                                                     bVar"b'2"),
12722                                                                                                 Bop(And,
12723                                                                                                     bVar"b'1",
12724                                                                                                     Mop(Not,
12725                                                                                                         bVar"b'0"))))))))))))))))))))))),
12726             Call
12727               ("MultDiv",CTy"instruction",
12728                Call
12729                  ("MFLO",CTy"MultDiv",
12730                   Mop(Cast(FTy 5),
12731                       LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
12732                          bVar"b'11"])))),
12733            (Bop(And,Mop(Not,bVar"b'28"),
12734                 Bop(And,Mop(Not,bVar"b'27"),
12735                     Bop(And,Mop(Not,bVar"b'20"),
12736                         Bop(And,Mop(Not,bVar"b'19"),
12737                             Bop(And,Mop(Not,bVar"b'18"),
12738                                 Bop(And,Mop(Not,bVar"b'17"),
12739                                     Bop(And,Mop(Not,bVar"b'16"),
12740                                         Bop(And,Mop(Not,bVar"b'15"),
12741                                             Bop(And,Mop(Not,bVar"b'14"),
12742                                                 Bop(And,
12743                                                     Mop(Not,bVar"b'13"),
12744                                                     Bop(And,
12745                                                         Mop(Not,
12746                                                             bVar"b'12"),
12747                                                         Bop(And,
12748                                                             Mop(Not,
12749                                                                 bVar"b'11"),
12750                                                             Bop(And,
12751                                                                 Mop(Not,
12752                                                                     bVar"b'10"),
12753                                                                 Bop(And,
12754                                                                     Mop(Not,
12755                                                                         bVar"b'9"),
12756                                                                     Bop(And,
12757                                                                         Mop(Not,
12758                                                                             bVar"b'8"),
12759                                                                         Bop(And,
12760                                                                             Mop(Not,
12761                                                                                 bVar"b'7"),
12762                                                                             Bop(And,
12763                                                                                 Mop(Not,
12764                                                                                     bVar"b'6"),
12765                                                                                 Bop(And,
12766                                                                                     Mop(Not,
12767                                                                                         bVar"b'5"),
12768                                                                                     Bop(And,
12769                                                                                         bVar"b'4",
12770                                                                                         Bop(And,
12771                                                                                             Mop(Not,
12772                                                                                                 bVar"b'3"),
12773                                                                                             Bop(And,
12774                                                                                                 Mop(Not,
12775                                                                                                     bVar"b'2"),
12776                                                                                                 Bop(And,
12777                                                                                                     bVar"b'1",
12778                                                                                                     bVar"b'0")))))))))))))))))))))),
12779             Call
12780               ("MultDiv",CTy"instruction",
12781                Call
12782                  ("MTLO",CTy"MultDiv",
12783                   Mop(Cast(FTy 5),
12784                       LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
12785                          bVar"b'21"])))),
12786            (Bop(And,Mop(Not,bVar"b'28"),
12787                 Bop(And,Mop(Not,bVar"b'27"),
12788                     Bop(And,Mop(Not,bVar"b'10"),
12789                         Bop(And,Mop(Not,bVar"b'9"),
12790                             Bop(And,Mop(Not,bVar"b'8"),
12791                                 Bop(And,Mop(Not,bVar"b'7"),
12792                                     Bop(And,Mop(Not,bVar"b'6"),
12793                                         Bop(And,Mop(Not,bVar"b'5"),
12794                                             Bop(And,bVar"b'4",
12795                                                 Bop(And,
12796                                                     Mop(Not,bVar"b'3"),
12797                                                     Bop(And,bVar"b'2",
12798                                                         Bop(And,
12799                                                             Mop(Not,
12800                                                                 bVar"b'1"),
12801                                                             Mop(Not,
12802                                                                 bVar"b'0"))))))))))))),
12803             Call
12804               ("Shift",CTy"instruction",
12805                Call
12806                  ("DSLLV",CTy"Shift",
12807                   TP[Mop(Cast(FTy 5),
12808                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
12809                             bVar"b'21"]),
12810                      Mop(Cast(FTy 5),
12811                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
12812                             bVar"b'16"]),
12813                      Mop(Cast(FTy 5),
12814                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
12815                             bVar"b'11"])]))),
12816            (Bop(And,Mop(Not,bVar"b'28"),
12817                 Bop(And,Mop(Not,bVar"b'27"),
12818                     Bop(And,Mop(Not,bVar"b'10"),
12819                         Bop(And,Mop(Not,bVar"b'9"),
12820                             Bop(And,Mop(Not,bVar"b'8"),
12821                                 Bop(And,Mop(Not,bVar"b'7"),
12822                                     Bop(And,Mop(Not,bVar"b'6"),
12823                                         Bop(And,Mop(Not,bVar"b'5"),
12824                                             Bop(And,bVar"b'4",
12825                                                 Bop(And,
12826                                                     Mop(Not,bVar"b'3"),
12827                                                     Bop(And,bVar"b'2",
12828                                                         Bop(And,
12829                                                             bVar"b'1",
12830                                                             Mop(Not,
12831                                                                 bVar"b'0"))))))))))))),
12832             Call
12833               ("Shift",CTy"instruction",
12834                Call
12835                  ("DSRLV",CTy"Shift",
12836                   TP[Mop(Cast(FTy 5),
12837                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
12838                             bVar"b'21"]),
12839                      Mop(Cast(FTy 5),
12840                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
12841                             bVar"b'16"]),
12842                      Mop(Cast(FTy 5),
12843                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
12844                             bVar"b'11"])]))),
12845            (Bop(And,Mop(Not,bVar"b'28"),
12846                 Bop(And,Mop(Not,bVar"b'27"),
12847                     Bop(And,Mop(Not,bVar"b'10"),
12848                         Bop(And,Mop(Not,bVar"b'9"),
12849                             Bop(And,Mop(Not,bVar"b'8"),
12850                                 Bop(And,Mop(Not,bVar"b'7"),
12851                                     Bop(And,Mop(Not,bVar"b'6"),
12852                                         Bop(And,Mop(Not,bVar"b'5"),
12853                                             Bop(And,bVar"b'4",
12854                                                 Bop(And,
12855                                                     Mop(Not,bVar"b'3"),
12856                                                     Bop(And,bVar"b'2",
12857                                                         Bop(And,
12858                                                             bVar"b'1",
12859                                                             bVar"b'0")))))))))))),
12860             Call
12861               ("Shift",CTy"instruction",
12862                Call
12863                  ("DSRAV",CTy"Shift",
12864                   TP[Mop(Cast(FTy 5),
12865                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
12866                             bVar"b'21"]),
12867                      Mop(Cast(FTy 5),
12868                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
12869                             bVar"b'16"]),
12870                      Mop(Cast(FTy 5),
12871                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
12872                             bVar"b'11"])]))),
12873            (Bop(And,Mop(Not,bVar"b'28"),
12874                 Bop(And,Mop(Not,bVar"b'27"),
12875                     Bop(And,Mop(Not,bVar"b'15"),
12876                         Bop(And,Mop(Not,bVar"b'14"),
12877                             Bop(And,Mop(Not,bVar"b'13"),
12878                                 Bop(And,Mop(Not,bVar"b'12"),
12879                                     Bop(And,Mop(Not,bVar"b'11"),
12880                                         Bop(And,Mop(Not,bVar"b'10"),
12881                                             Bop(And,Mop(Not,bVar"b'9"),
12882                                                 Bop(And,
12883                                                     Mop(Not,bVar"b'8"),
12884                                                     Bop(And,
12885                                                         Mop(Not,bVar"b'7"),
12886                                                         Bop(And,
12887                                                             Mop(Not,
12888                                                                 bVar"b'6"),
12889                                                             Bop(And,
12890                                                                 Mop(Not,
12891                                                                     bVar"b'5"),
12892                                                                 Bop(And,
12893                                                                     bVar"b'4",
12894                                                                     Bop(And,
12895                                                                         bVar"b'3",
12896                                                                         Bop(And,
12897                                                                             Mop(Not,
12898                                                                                 bVar"b'2"),
12899                                                                             Bop(And,
12900                                                                                 Mop(Not,
12901                                                                                     bVar"b'1"),
12902                                                                                 Mop(Not,
12903                                                                                     bVar"b'0")))))))))))))))))),
12904             Call
12905               ("MultDiv",CTy"instruction",
12906                Call
12907                  ("MULT",CTy"MultDiv",
12908                   TP[Mop(Cast(FTy 5),
12909                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
12910                             bVar"b'21"]),
12911                      Mop(Cast(FTy 5),
12912                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
12913                             bVar"b'16"])]))),
12914            (Bop(And,Mop(Not,bVar"b'28"),
12915                 Bop(And,Mop(Not,bVar"b'27"),
12916                     Bop(And,Mop(Not,bVar"b'15"),
12917                         Bop(And,Mop(Not,bVar"b'14"),
12918                             Bop(And,Mop(Not,bVar"b'13"),
12919                                 Bop(And,Mop(Not,bVar"b'12"),
12920                                     Bop(And,Mop(Not,bVar"b'11"),
12921                                         Bop(And,Mop(Not,bVar"b'10"),
12922                                             Bop(And,Mop(Not,bVar"b'9"),
12923                                                 Bop(And,
12924                                                     Mop(Not,bVar"b'8"),
12925                                                     Bop(And,
12926                                                         Mop(Not,bVar"b'7"),
12927                                                         Bop(And,
12928                                                             Mop(Not,
12929                                                                 bVar"b'6"),
12930                                                             Bop(And,
12931                                                                 Mop(Not,
12932                                                                     bVar"b'5"),
12933                                                                 Bop(And,
12934                                                                     bVar"b'4",
12935                                                                     Bop(And,
12936                                                                         bVar"b'3",
12937                                                                         Bop(And,
12938                                                                             Mop(Not,
12939                                                                                 bVar"b'2"),
12940                                                                             Bop(And,
12941                                                                                 Mop(Not,
12942                                                                                     bVar"b'1"),
12943                                                                                 bVar"b'0"))))))))))))))))),
12944             Call
12945               ("MultDiv",CTy"instruction",
12946                Call
12947                  ("MULTU",CTy"MultDiv",
12948                   TP[Mop(Cast(FTy 5),
12949                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
12950                             bVar"b'21"]),
12951                      Mop(Cast(FTy 5),
12952                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
12953                             bVar"b'16"])]))),
12954            (Bop(And,Mop(Not,bVar"b'28"),
12955                 Bop(And,Mop(Not,bVar"b'27"),
12956                     Bop(And,Mop(Not,bVar"b'15"),
12957                         Bop(And,Mop(Not,bVar"b'14"),
12958                             Bop(And,Mop(Not,bVar"b'13"),
12959                                 Bop(And,Mop(Not,bVar"b'12"),
12960                                     Bop(And,Mop(Not,bVar"b'11"),
12961                                         Bop(And,Mop(Not,bVar"b'10"),
12962                                             Bop(And,Mop(Not,bVar"b'9"),
12963                                                 Bop(And,
12964                                                     Mop(Not,bVar"b'8"),
12965                                                     Bop(And,
12966                                                         Mop(Not,bVar"b'7"),
12967                                                         Bop(And,
12968                                                             Mop(Not,
12969                                                                 bVar"b'6"),
12970                                                             Bop(And,
12971                                                                 Mop(Not,
12972                                                                     bVar"b'5"),
12973                                                                 Bop(And,
12974                                                                     bVar"b'4",
12975                                                                     Bop(And,
12976                                                                         bVar"b'3",
12977                                                                         Bop(And,
12978                                                                             Mop(Not,
12979                                                                                 bVar"b'2"),
12980                                                                             Bop(And,
12981                                                                                 bVar"b'1",
12982                                                                                 Mop(Not,
12983                                                                                     bVar"b'0")))))))))))))))))),
12984             Call
12985               ("MultDiv",CTy"instruction",
12986                Call
12987                  ("DIV",CTy"MultDiv",
12988                   TP[Mop(Cast(FTy 5),
12989                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
12990                             bVar"b'21"]),
12991                      Mop(Cast(FTy 5),
12992                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
12993                             bVar"b'16"])]))),
12994            (Bop(And,Mop(Not,bVar"b'28"),
12995                 Bop(And,Mop(Not,bVar"b'27"),
12996                     Bop(And,Mop(Not,bVar"b'15"),
12997                         Bop(And,Mop(Not,bVar"b'14"),
12998                             Bop(And,Mop(Not,bVar"b'13"),
12999                                 Bop(And,Mop(Not,bVar"b'12"),
13000                                     Bop(And,Mop(Not,bVar"b'11"),
13001                                         Bop(And,Mop(Not,bVar"b'10"),
13002                                             Bop(And,Mop(Not,bVar"b'9"),
13003                                                 Bop(And,
13004                                                     Mop(Not,bVar"b'8"),
13005                                                     Bop(And,
13006                                                         Mop(Not,bVar"b'7"),
13007                                                         Bop(And,
13008                                                             Mop(Not,
13009                                                                 bVar"b'6"),
13010                                                             Bop(And,
13011                                                                 Mop(Not,
13012                                                                     bVar"b'5"),
13013                                                                 Bop(And,
13014                                                                     bVar"b'4",
13015                                                                     Bop(And,
13016                                                                         bVar"b'3",
13017                                                                         Bop(And,
13018                                                                             Mop(Not,
13019                                                                                 bVar"b'2"),
13020                                                                             Bop(And,
13021                                                                                 bVar"b'1",
13022                                                                                 bVar"b'0"))))))))))))))))),
13023             Call
13024               ("MultDiv",CTy"instruction",
13025                Call
13026                  ("DIVU",CTy"MultDiv",
13027                   TP[Mop(Cast(FTy 5),
13028                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13029                             bVar"b'21"]),
13030                      Mop(Cast(FTy 5),
13031                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13032                             bVar"b'16"])]))),
13033            (Bop(And,Mop(Not,bVar"b'28"),
13034                 Bop(And,Mop(Not,bVar"b'27"),
13035                     Bop(And,Mop(Not,bVar"b'15"),
13036                         Bop(And,Mop(Not,bVar"b'14"),
13037                             Bop(And,Mop(Not,bVar"b'13"),
13038                                 Bop(And,Mop(Not,bVar"b'12"),
13039                                     Bop(And,Mop(Not,bVar"b'11"),
13040                                         Bop(And,Mop(Not,bVar"b'10"),
13041                                             Bop(And,Mop(Not,bVar"b'9"),
13042                                                 Bop(And,
13043                                                     Mop(Not,bVar"b'8"),
13044                                                     Bop(And,
13045                                                         Mop(Not,bVar"b'7"),
13046                                                         Bop(And,
13047                                                             Mop(Not,
13048                                                                 bVar"b'6"),
13049                                                             Bop(And,
13050                                                                 Mop(Not,
13051                                                                     bVar"b'5"),
13052                                                                 Bop(And,
13053                                                                     bVar"b'4",
13054                                                                     Bop(And,
13055                                                                         bVar"b'3",
13056                                                                         Bop(And,
13057                                                                             bVar"b'2",
13058                                                                             Bop(And,
13059                                                                                 Mop(Not,
13060                                                                                     bVar"b'1"),
13061                                                                                 Mop(Not,
13062                                                                                     bVar"b'0")))))))))))))))))),
13063             Call
13064               ("MultDiv",CTy"instruction",
13065                Call
13066                  ("DMULT",CTy"MultDiv",
13067                   TP[Mop(Cast(FTy 5),
13068                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13069                             bVar"b'21"]),
13070                      Mop(Cast(FTy 5),
13071                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13072                             bVar"b'16"])]))),
13073            (Bop(And,Mop(Not,bVar"b'28"),
13074                 Bop(And,Mop(Not,bVar"b'27"),
13075                     Bop(And,Mop(Not,bVar"b'15"),
13076                         Bop(And,Mop(Not,bVar"b'14"),
13077                             Bop(And,Mop(Not,bVar"b'13"),
13078                                 Bop(And,Mop(Not,bVar"b'12"),
13079                                     Bop(And,Mop(Not,bVar"b'11"),
13080                                         Bop(And,Mop(Not,bVar"b'10"),
13081                                             Bop(And,Mop(Not,bVar"b'9"),
13082                                                 Bop(And,
13083                                                     Mop(Not,bVar"b'8"),
13084                                                     Bop(And,
13085                                                         Mop(Not,bVar"b'7"),
13086                                                         Bop(And,
13087                                                             Mop(Not,
13088                                                                 bVar"b'6"),
13089                                                             Bop(And,
13090                                                                 Mop(Not,
13091                                                                     bVar"b'5"),
13092                                                                 Bop(And,
13093                                                                     bVar"b'4",
13094                                                                     Bop(And,
13095                                                                         bVar"b'3",
13096                                                                         Bop(And,
13097                                                                             bVar"b'2",
13098                                                                             Bop(And,
13099                                                                                 Mop(Not,
13100                                                                                     bVar"b'1"),
13101                                                                                 bVar"b'0"))))))))))))))))),
13102             Call
13103               ("MultDiv",CTy"instruction",
13104                Call
13105                  ("DMULTU",CTy"MultDiv",
13106                   TP[Mop(Cast(FTy 5),
13107                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13108                             bVar"b'21"]),
13109                      Mop(Cast(FTy 5),
13110                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13111                             bVar"b'16"])]))),
13112            (Bop(And,Mop(Not,bVar"b'28"),
13113                 Bop(And,Mop(Not,bVar"b'27"),
13114                     Bop(And,Mop(Not,bVar"b'15"),
13115                         Bop(And,Mop(Not,bVar"b'14"),
13116                             Bop(And,Mop(Not,bVar"b'13"),
13117                                 Bop(And,Mop(Not,bVar"b'12"),
13118                                     Bop(And,Mop(Not,bVar"b'11"),
13119                                         Bop(And,Mop(Not,bVar"b'10"),
13120                                             Bop(And,Mop(Not,bVar"b'9"),
13121                                                 Bop(And,
13122                                                     Mop(Not,bVar"b'8"),
13123                                                     Bop(And,
13124                                                         Mop(Not,bVar"b'7"),
13125                                                         Bop(And,
13126                                                             Mop(Not,
13127                                                                 bVar"b'6"),
13128                                                             Bop(And,
13129                                                                 Mop(Not,
13130                                                                     bVar"b'5"),
13131                                                                 Bop(And,
13132                                                                     bVar"b'4",
13133                                                                     Bop(And,
13134                                                                         bVar"b'3",
13135                                                                         Bop(And,
13136                                                                             bVar"b'2",
13137                                                                             Bop(And,
13138                                                                                 bVar"b'1",
13139                                                                                 Mop(Not,
13140                                                                                     bVar"b'0")))))))))))))))))),
13141             Call
13142               ("MultDiv",CTy"instruction",
13143                Call
13144                  ("DDIV",CTy"MultDiv",
13145                   TP[Mop(Cast(FTy 5),
13146                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13147                             bVar"b'21"]),
13148                      Mop(Cast(FTy 5),
13149                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13150                             bVar"b'16"])]))),
13151            (Bop(And,Mop(Not,bVar"b'28"),
13152                 Bop(And,Mop(Not,bVar"b'27"),
13153                     Bop(And,Mop(Not,bVar"b'15"),
13154                         Bop(And,Mop(Not,bVar"b'14"),
13155                             Bop(And,Mop(Not,bVar"b'13"),
13156                                 Bop(And,Mop(Not,bVar"b'12"),
13157                                     Bop(And,Mop(Not,bVar"b'11"),
13158                                         Bop(And,Mop(Not,bVar"b'10"),
13159                                             Bop(And,Mop(Not,bVar"b'9"),
13160                                                 Bop(And,
13161                                                     Mop(Not,bVar"b'8"),
13162                                                     Bop(And,
13163                                                         Mop(Not,bVar"b'7"),
13164                                                         Bop(And,
13165                                                             Mop(Not,
13166                                                                 bVar"b'6"),
13167                                                             Bop(And,
13168                                                                 Mop(Not,
13169                                                                     bVar"b'5"),
13170                                                                 Bop(And,
13171                                                                     bVar"b'4",
13172                                                                     Bop(And,
13173                                                                         bVar"b'3",
13174                                                                         Bop(And,
13175                                                                             bVar"b'2",
13176                                                                             Bop(And,
13177                                                                                 bVar"b'1",
13178                                                                                 bVar"b'0"))))))))))))))))),
13179             Call
13180               ("MultDiv",CTy"instruction",
13181                Call
13182                  ("DDIVU",CTy"MultDiv",
13183                   TP[Mop(Cast(FTy 5),
13184                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13185                             bVar"b'21"]),
13186                      Mop(Cast(FTy 5),
13187                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13188                             bVar"b'16"])]))),
13189            (Bop(And,Mop(Not,bVar"b'28"),
13190                 Bop(And,Mop(Not,bVar"b'27"),
13191                     Bop(And,Mop(Not,bVar"b'10"),
13192                         Bop(And,Mop(Not,bVar"b'9"),
13193                             Bop(And,Mop(Not,bVar"b'8"),
13194                                 Bop(And,Mop(Not,bVar"b'7"),
13195                                     Bop(And,Mop(Not,bVar"b'6"),
13196                                         Bop(And,bVar"b'5",
13197                                             Bop(And,Mop(Not,bVar"b'4"),
13198                                                 Bop(And,
13199                                                     Mop(Not,bVar"b'3"),
13200                                                     Bop(And,
13201                                                         Mop(Not,bVar"b'2"),
13202                                                         Bop(And,
13203                                                             Mop(Not,
13204                                                                 bVar"b'1"),
13205                                                             Mop(Not,
13206                                                                 bVar"b'0"))))))))))))),
13207             Call
13208               ("ArithR",CTy"instruction",
13209                Call
13210                  ("ADD",CTy"ArithR",
13211                   TP[Mop(Cast(FTy 5),
13212                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13213                             bVar"b'21"]),
13214                      Mop(Cast(FTy 5),
13215                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13216                             bVar"b'16"]),
13217                      Mop(Cast(FTy 5),
13218                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13219                             bVar"b'11"])]))),
13220            (Bop(And,Mop(Not,bVar"b'28"),
13221                 Bop(And,Mop(Not,bVar"b'27"),
13222                     Bop(And,Mop(Not,bVar"b'10"),
13223                         Bop(And,Mop(Not,bVar"b'9"),
13224                             Bop(And,Mop(Not,bVar"b'8"),
13225                                 Bop(And,Mop(Not,bVar"b'7"),
13226                                     Bop(And,Mop(Not,bVar"b'6"),
13227                                         Bop(And,bVar"b'5",
13228                                             Bop(And,Mop(Not,bVar"b'4"),
13229                                                 Bop(And,
13230                                                     Mop(Not,bVar"b'3"),
13231                                                     Bop(And,
13232                                                         Mop(Not,bVar"b'2"),
13233                                                         Bop(And,
13234                                                             Mop(Not,
13235                                                                 bVar"b'1"),
13236                                                             bVar"b'0")))))))))))),
13237             Call
13238               ("ArithR",CTy"instruction",
13239                Call
13240                  ("ADDU",CTy"ArithR",
13241                   TP[Mop(Cast(FTy 5),
13242                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13243                             bVar"b'21"]),
13244                      Mop(Cast(FTy 5),
13245                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13246                             bVar"b'16"]),
13247                      Mop(Cast(FTy 5),
13248                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13249                             bVar"b'11"])]))),
13250            (Bop(And,Mop(Not,bVar"b'28"),
13251                 Bop(And,Mop(Not,bVar"b'27"),
13252                     Bop(And,Mop(Not,bVar"b'10"),
13253                         Bop(And,Mop(Not,bVar"b'9"),
13254                             Bop(And,Mop(Not,bVar"b'8"),
13255                                 Bop(And,Mop(Not,bVar"b'7"),
13256                                     Bop(And,Mop(Not,bVar"b'6"),
13257                                         Bop(And,bVar"b'5",
13258                                             Bop(And,Mop(Not,bVar"b'4"),
13259                                                 Bop(And,
13260                                                     Mop(Not,bVar"b'3"),
13261                                                     Bop(And,
13262                                                         Mop(Not,bVar"b'2"),
13263                                                         Bop(And,
13264                                                             bVar"b'1",
13265                                                             Mop(Not,
13266                                                                 bVar"b'0"))))))))))))),
13267             Call
13268               ("ArithR",CTy"instruction",
13269                Call
13270                  ("SUB",CTy"ArithR",
13271                   TP[Mop(Cast(FTy 5),
13272                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13273                             bVar"b'21"]),
13274                      Mop(Cast(FTy 5),
13275                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13276                             bVar"b'16"]),
13277                      Mop(Cast(FTy 5),
13278                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13279                             bVar"b'11"])]))),
13280            (Bop(And,Mop(Not,bVar"b'28"),
13281                 Bop(And,Mop(Not,bVar"b'27"),
13282                     Bop(And,Mop(Not,bVar"b'10"),
13283                         Bop(And,Mop(Not,bVar"b'9"),
13284                             Bop(And,Mop(Not,bVar"b'8"),
13285                                 Bop(And,Mop(Not,bVar"b'7"),
13286                                     Bop(And,Mop(Not,bVar"b'6"),
13287                                         Bop(And,bVar"b'5",
13288                                             Bop(And,Mop(Not,bVar"b'4"),
13289                                                 Bop(And,
13290                                                     Mop(Not,bVar"b'3"),
13291                                                     Bop(And,
13292                                                         Mop(Not,bVar"b'2"),
13293                                                         Bop(And,
13294                                                             bVar"b'1",
13295                                                             bVar"b'0")))))))))))),
13296             Call
13297               ("ArithR",CTy"instruction",
13298                Call
13299                  ("SUBU",CTy"ArithR",
13300                   TP[Mop(Cast(FTy 5),
13301                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13302                             bVar"b'21"]),
13303                      Mop(Cast(FTy 5),
13304                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13305                             bVar"b'16"]),
13306                      Mop(Cast(FTy 5),
13307                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13308                             bVar"b'11"])]))),
13309            (Bop(And,Mop(Not,bVar"b'28"),
13310                 Bop(And,Mop(Not,bVar"b'27"),
13311                     Bop(And,Mop(Not,bVar"b'10"),
13312                         Bop(And,Mop(Not,bVar"b'9"),
13313                             Bop(And,Mop(Not,bVar"b'8"),
13314                                 Bop(And,Mop(Not,bVar"b'7"),
13315                                     Bop(And,Mop(Not,bVar"b'6"),
13316                                         Bop(And,bVar"b'5",
13317                                             Bop(And,Mop(Not,bVar"b'4"),
13318                                                 Bop(And,
13319                                                     Mop(Not,bVar"b'3"),
13320                                                     Bop(And,bVar"b'2",
13321                                                         Bop(And,
13322                                                             Mop(Not,
13323                                                                 bVar"b'1"),
13324                                                             Mop(Not,
13325                                                                 bVar"b'0"))))))))))))),
13326             Call
13327               ("ArithR",CTy"instruction",
13328                Call
13329                  ("AND",CTy"ArithR",
13330                   TP[Mop(Cast(FTy 5),
13331                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13332                             bVar"b'21"]),
13333                      Mop(Cast(FTy 5),
13334                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13335                             bVar"b'16"]),
13336                      Mop(Cast(FTy 5),
13337                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13338                             bVar"b'11"])]))),
13339            (Bop(And,Mop(Not,bVar"b'28"),
13340                 Bop(And,Mop(Not,bVar"b'27"),
13341                     Bop(And,Mop(Not,bVar"b'10"),
13342                         Bop(And,Mop(Not,bVar"b'9"),
13343                             Bop(And,Mop(Not,bVar"b'8"),
13344                                 Bop(And,Mop(Not,bVar"b'7"),
13345                                     Bop(And,Mop(Not,bVar"b'6"),
13346                                         Bop(And,bVar"b'5",
13347                                             Bop(And,Mop(Not,bVar"b'4"),
13348                                                 Bop(And,
13349                                                     Mop(Not,bVar"b'3"),
13350                                                     Bop(And,bVar"b'2",
13351                                                         Bop(And,
13352                                                             Mop(Not,
13353                                                                 bVar"b'1"),
13354                                                             bVar"b'0")))))))))))),
13355             Call
13356               ("ArithR",CTy"instruction",
13357                Call
13358                  ("OR",CTy"ArithR",
13359                   TP[Mop(Cast(FTy 5),
13360                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13361                             bVar"b'21"]),
13362                      Mop(Cast(FTy 5),
13363                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13364                             bVar"b'16"]),
13365                      Mop(Cast(FTy 5),
13366                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13367                             bVar"b'11"])]))),
13368            (Bop(And,Mop(Not,bVar"b'28"),
13369                 Bop(And,Mop(Not,bVar"b'27"),
13370                     Bop(And,Mop(Not,bVar"b'10"),
13371                         Bop(And,Mop(Not,bVar"b'9"),
13372                             Bop(And,Mop(Not,bVar"b'8"),
13373                                 Bop(And,Mop(Not,bVar"b'7"),
13374                                     Bop(And,Mop(Not,bVar"b'6"),
13375                                         Bop(And,bVar"b'5",
13376                                             Bop(And,Mop(Not,bVar"b'4"),
13377                                                 Bop(And,
13378                                                     Mop(Not,bVar"b'3"),
13379                                                     Bop(And,bVar"b'2",
13380                                                         Bop(And,
13381                                                             bVar"b'1",
13382                                                             Mop(Not,
13383                                                                 bVar"b'0"))))))))))))),
13384             Call
13385               ("ArithR",CTy"instruction",
13386                Call
13387                  ("XOR",CTy"ArithR",
13388                   TP[Mop(Cast(FTy 5),
13389                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13390                             bVar"b'21"]),
13391                      Mop(Cast(FTy 5),
13392                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13393                             bVar"b'16"]),
13394                      Mop(Cast(FTy 5),
13395                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13396                             bVar"b'11"])]))),
13397            (Bop(And,Mop(Not,bVar"b'28"),
13398                 Bop(And,Mop(Not,bVar"b'27"),
13399                     Bop(And,Mop(Not,bVar"b'10"),
13400                         Bop(And,Mop(Not,bVar"b'9"),
13401                             Bop(And,Mop(Not,bVar"b'8"),
13402                                 Bop(And,Mop(Not,bVar"b'7"),
13403                                     Bop(And,Mop(Not,bVar"b'6"),
13404                                         Bop(And,bVar"b'5",
13405                                             Bop(And,Mop(Not,bVar"b'4"),
13406                                                 Bop(And,
13407                                                     Mop(Not,bVar"b'3"),
13408                                                     Bop(And,bVar"b'2",
13409                                                         Bop(And,
13410                                                             bVar"b'1",
13411                                                             bVar"b'0")))))))))))),
13412             Call
13413               ("ArithR",CTy"instruction",
13414                Call
13415                  ("NOR",CTy"ArithR",
13416                   TP[Mop(Cast(FTy 5),
13417                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13418                             bVar"b'21"]),
13419                      Mop(Cast(FTy 5),
13420                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13421                             bVar"b'16"]),
13422                      Mop(Cast(FTy 5),
13423                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13424                             bVar"b'11"])]))),
13425            (Bop(And,Mop(Not,bVar"b'28"),
13426                 Bop(And,Mop(Not,bVar"b'27"),
13427                     Bop(And,Mop(Not,bVar"b'10"),
13428                         Bop(And,Mop(Not,bVar"b'9"),
13429                             Bop(And,Mop(Not,bVar"b'8"),
13430                                 Bop(And,Mop(Not,bVar"b'7"),
13431                                     Bop(And,Mop(Not,bVar"b'6"),
13432                                         Bop(And,bVar"b'5",
13433                                             Bop(And,Mop(Not,bVar"b'4"),
13434                                                 Bop(And,bVar"b'3",
13435                                                     Bop(And,
13436                                                         Mop(Not,bVar"b'2"),
13437                                                         Bop(And,
13438                                                             bVar"b'1",
13439                                                             Mop(Not,
13440                                                                 bVar"b'0"))))))))))))),
13441             Call
13442               ("ArithR",CTy"instruction",
13443                Call
13444                  ("SLT",CTy"ArithR",
13445                   TP[Mop(Cast(FTy 5),
13446                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13447                             bVar"b'21"]),
13448                      Mop(Cast(FTy 5),
13449                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13450                             bVar"b'16"]),
13451                      Mop(Cast(FTy 5),
13452                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13453                             bVar"b'11"])]))),
13454            (Bop(And,Mop(Not,bVar"b'28"),
13455                 Bop(And,Mop(Not,bVar"b'27"),
13456                     Bop(And,Mop(Not,bVar"b'10"),
13457                         Bop(And,Mop(Not,bVar"b'9"),
13458                             Bop(And,Mop(Not,bVar"b'8"),
13459                                 Bop(And,Mop(Not,bVar"b'7"),
13460                                     Bop(And,Mop(Not,bVar"b'6"),
13461                                         Bop(And,bVar"b'5",
13462                                             Bop(And,Mop(Not,bVar"b'4"),
13463                                                 Bop(And,bVar"b'3",
13464                                                     Bop(And,
13465                                                         Mop(Not,bVar"b'2"),
13466                                                         Bop(And,
13467                                                             bVar"b'1",
13468                                                             bVar"b'0")))))))))))),
13469             Call
13470               ("ArithR",CTy"instruction",
13471                Call
13472                  ("SLTU",CTy"ArithR",
13473                   TP[Mop(Cast(FTy 5),
13474                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13475                             bVar"b'21"]),
13476                      Mop(Cast(FTy 5),
13477                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13478                             bVar"b'16"]),
13479                      Mop(Cast(FTy 5),
13480                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13481                             bVar"b'11"])]))),
13482            (Bop(And,Mop(Not,bVar"b'28"),
13483                 Bop(And,Mop(Not,bVar"b'27"),
13484                     Bop(And,Mop(Not,bVar"b'10"),
13485                         Bop(And,Mop(Not,bVar"b'9"),
13486                             Bop(And,Mop(Not,bVar"b'8"),
13487                                 Bop(And,Mop(Not,bVar"b'7"),
13488                                     Bop(And,Mop(Not,bVar"b'6"),
13489                                         Bop(And,bVar"b'5",
13490                                             Bop(And,Mop(Not,bVar"b'4"),
13491                                                 Bop(And,bVar"b'3",
13492                                                     Bop(And,bVar"b'2",
13493                                                         Bop(And,
13494                                                             Mop(Not,
13495                                                                 bVar"b'1"),
13496                                                             Mop(Not,
13497                                                                 bVar"b'0"))))))))))))),
13498             Call
13499               ("ArithR",CTy"instruction",
13500                Call
13501                  ("DADD",CTy"ArithR",
13502                   TP[Mop(Cast(FTy 5),
13503                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13504                             bVar"b'21"]),
13505                      Mop(Cast(FTy 5),
13506                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13507                             bVar"b'16"]),
13508                      Mop(Cast(FTy 5),
13509                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13510                             bVar"b'11"])]))),
13511            (Bop(And,Mop(Not,bVar"b'28"),
13512                 Bop(And,Mop(Not,bVar"b'27"),
13513                     Bop(And,Mop(Not,bVar"b'10"),
13514                         Bop(And,Mop(Not,bVar"b'9"),
13515                             Bop(And,Mop(Not,bVar"b'8"),
13516                                 Bop(And,Mop(Not,bVar"b'7"),
13517                                     Bop(And,Mop(Not,bVar"b'6"),
13518                                         Bop(And,bVar"b'5",
13519                                             Bop(And,Mop(Not,bVar"b'4"),
13520                                                 Bop(And,bVar"b'3",
13521                                                     Bop(And,bVar"b'2",
13522                                                         Bop(And,
13523                                                             Mop(Not,
13524                                                                 bVar"b'1"),
13525                                                             bVar"b'0")))))))))))),
13526             Call
13527               ("ArithR",CTy"instruction",
13528                Call
13529                  ("DADDU",CTy"ArithR",
13530                   TP[Mop(Cast(FTy 5),
13531                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13532                             bVar"b'21"]),
13533                      Mop(Cast(FTy 5),
13534                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13535                             bVar"b'16"]),
13536                      Mop(Cast(FTy 5),
13537                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13538                             bVar"b'11"])]))),
13539            (Bop(And,Mop(Not,bVar"b'28"),
13540                 Bop(And,Mop(Not,bVar"b'27"),
13541                     Bop(And,Mop(Not,bVar"b'10"),
13542                         Bop(And,Mop(Not,bVar"b'9"),
13543                             Bop(And,Mop(Not,bVar"b'8"),
13544                                 Bop(And,Mop(Not,bVar"b'7"),
13545                                     Bop(And,Mop(Not,bVar"b'6"),
13546                                         Bop(And,bVar"b'5",
13547                                             Bop(And,Mop(Not,bVar"b'4"),
13548                                                 Bop(And,bVar"b'3",
13549                                                     Bop(And,bVar"b'2",
13550                                                         Bop(And,
13551                                                             bVar"b'1",
13552                                                             Mop(Not,
13553                                                                 bVar"b'0"))))))))))))),
13554             Call
13555               ("ArithR",CTy"instruction",
13556                Call
13557                  ("DSUB",CTy"ArithR",
13558                   TP[Mop(Cast(FTy 5),
13559                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13560                             bVar"b'21"]),
13561                      Mop(Cast(FTy 5),
13562                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13563                             bVar"b'16"]),
13564                      Mop(Cast(FTy 5),
13565                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13566                             bVar"b'11"])]))),
13567            (Bop(And,Mop(Not,bVar"b'28"),
13568                 Bop(And,Mop(Not,bVar"b'27"),
13569                     Bop(And,Mop(Not,bVar"b'10"),
13570                         Bop(And,Mop(Not,bVar"b'9"),
13571                             Bop(And,Mop(Not,bVar"b'8"),
13572                                 Bop(And,Mop(Not,bVar"b'7"),
13573                                     Bop(And,Mop(Not,bVar"b'6"),
13574                                         Bop(And,bVar"b'5",
13575                                             Bop(And,Mop(Not,bVar"b'4"),
13576                                                 Bop(And,bVar"b'3",
13577                                                     Bop(And,bVar"b'2",
13578                                                         Bop(And,
13579                                                             bVar"b'1",
13580                                                             bVar"b'0")))))))))))),
13581             Call
13582               ("ArithR",CTy"instruction",
13583                Call
13584                  ("DSUBU",CTy"ArithR",
13585                   TP[Mop(Cast(FTy 5),
13586                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13587                             bVar"b'21"]),
13588                      Mop(Cast(FTy 5),
13589                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13590                             bVar"b'16"]),
13591                      Mop(Cast(FTy 5),
13592                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13593                             bVar"b'11"])]))),
13594            (Bop(And,Mop(Not,bVar"b'28"),
13595                 Bop(And,Mop(Not,bVar"b'27"),
13596                     Bop(And,bVar"b'5",
13597                         Bop(And,bVar"b'4",
13598                             Bop(And,Mop(Not,bVar"b'3"),
13599                                 Bop(And,Mop(Not,bVar"b'2"),
13600                                     Bop(And,Mop(Not,bVar"b'1"),
13601                                         Mop(Not,bVar"b'0")))))))),
13602             Call
13603               ("Trap",CTy"instruction",
13604                Call
13605                  ("TGE",CTy"Trap",
13606                   TP[Mop(Cast(FTy 5),
13607                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13608                             bVar"b'21"]),
13609                      Mop(Cast(FTy 5),
13610                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13611                             bVar"b'16"])]))),
13612            (Bop(And,Mop(Not,bVar"b'28"),
13613                 Bop(And,Mop(Not,bVar"b'27"),
13614                     Bop(And,bVar"b'5",
13615                         Bop(And,bVar"b'4",
13616                             Bop(And,Mop(Not,bVar"b'3"),
13617                                 Bop(And,Mop(Not,bVar"b'2"),
13618                                     Bop(And,Mop(Not,bVar"b'1"),bVar"b'0"))))))),
13619             Call
13620               ("Trap",CTy"instruction",
13621                Call
13622                  ("TGEU",CTy"Trap",
13623                   TP[Mop(Cast(FTy 5),
13624                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13625                             bVar"b'21"]),
13626                      Mop(Cast(FTy 5),
13627                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13628                             bVar"b'16"])]))),
13629            (Bop(And,Mop(Not,bVar"b'28"),
13630                 Bop(And,Mop(Not,bVar"b'27"),
13631                     Bop(And,bVar"b'5",
13632                         Bop(And,bVar"b'4",
13633                             Bop(And,Mop(Not,bVar"b'3"),
13634                                 Bop(And,Mop(Not,bVar"b'2"),
13635                                     Bop(And,bVar"b'1",Mop(Not,bVar"b'0")))))))),
13636             Call
13637               ("Trap",CTy"instruction",
13638                Call
13639                  ("TLT",CTy"Trap",
13640                   TP[Mop(Cast(FTy 5),
13641                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13642                             bVar"b'21"]),
13643                      Mop(Cast(FTy 5),
13644                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13645                             bVar"b'16"])]))),
13646            (Bop(And,Mop(Not,bVar"b'28"),
13647                 Bop(And,Mop(Not,bVar"b'27"),
13648                     Bop(And,bVar"b'5",
13649                         Bop(And,bVar"b'4",
13650                             Bop(And,Mop(Not,bVar"b'3"),
13651                                 Bop(And,Mop(Not,bVar"b'2"),
13652                                     Bop(And,bVar"b'1",bVar"b'0"))))))),
13653             Call
13654               ("Trap",CTy"instruction",
13655                Call
13656                  ("TLTU",CTy"Trap",
13657                   TP[Mop(Cast(FTy 5),
13658                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13659                             bVar"b'21"]),
13660                      Mop(Cast(FTy 5),
13661                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13662                             bVar"b'16"])]))),
13663            (Bop(And,Mop(Not,bVar"b'28"),
13664                 Bop(And,Mop(Not,bVar"b'27"),
13665                     Bop(And,bVar"b'5",
13666                         Bop(And,bVar"b'4",
13667                             Bop(And,Mop(Not,bVar"b'3"),
13668                                 Bop(And,bVar"b'2",
13669                                     Bop(And,Mop(Not,bVar"b'1"),
13670                                         Mop(Not,bVar"b'0")))))))),
13671             Call
13672               ("Trap",CTy"instruction",
13673                Call
13674                  ("TEQ",CTy"Trap",
13675                   TP[Mop(Cast(FTy 5),
13676                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13677                             bVar"b'21"]),
13678                      Mop(Cast(FTy 5),
13679                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13680                             bVar"b'16"])]))),
13681            (Bop(And,Mop(Not,bVar"b'28"),
13682                 Bop(And,Mop(Not,bVar"b'27"),
13683                     Bop(And,bVar"b'5",
13684                         Bop(And,bVar"b'4",
13685                             Bop(And,Mop(Not,bVar"b'3"),
13686                                 Bop(And,bVar"b'2",
13687                                     Bop(And,bVar"b'1",Mop(Not,bVar"b'0")))))))),
13688             Call
13689               ("Trap",CTy"instruction",
13690                Call
13691                  ("TNE",CTy"Trap",
13692                   TP[Mop(Cast(FTy 5),
13693                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13694                             bVar"b'21"]),
13695                      Mop(Cast(FTy 5),
13696                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13697                             bVar"b'16"])]))),
13698            (Bop(And,Mop(Not,bVar"b'28"),
13699                 Bop(And,Mop(Not,bVar"b'27"),
13700                     Bop(And,Mop(Not,bVar"b'25"),
13701                         Bop(And,Mop(Not,bVar"b'24"),
13702                             Bop(And,Mop(Not,bVar"b'23"),
13703                                 Bop(And,Mop(Not,bVar"b'22"),
13704                                     Bop(And,Mop(Not,bVar"b'21"),
13705                                         Bop(And,bVar"b'5",
13706                                             Bop(And,bVar"b'4",
13707                                                 Bop(And,bVar"b'3",
13708                                                     Bop(And,
13709                                                         Mop(Not,bVar"b'2"),
13710                                                         Bop(And,
13711                                                             Mop(Not,
13712                                                                 bVar"b'1"),
13713                                                             Mop(Not,
13714                                                                 bVar"b'0"))))))))))))),
13715             Call
13716               ("Shift",CTy"instruction",
13717                Call
13718                  ("DSLL",CTy"Shift",
13719                   TP[Mop(Cast(FTy 5),
13720                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13721                             bVar"b'16"]),
13722                      Mop(Cast(FTy 5),
13723                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13724                             bVar"b'11"]),
13725                      Mop(Cast(FTy 5),
13726                          LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
13727                             bVar"b'6"])]))),
13728            (Bop(And,Mop(Not,bVar"b'28"),
13729                 Bop(And,Mop(Not,bVar"b'27"),
13730                     Bop(And,Mop(Not,bVar"b'25"),
13731                         Bop(And,Mop(Not,bVar"b'24"),
13732                             Bop(And,Mop(Not,bVar"b'23"),
13733                                 Bop(And,Mop(Not,bVar"b'22"),
13734                                     Bop(And,Mop(Not,bVar"b'21"),
13735                                         Bop(And,bVar"b'5",
13736                                             Bop(And,bVar"b'4",
13737                                                 Bop(And,bVar"b'3",
13738                                                     Bop(And,
13739                                                         Mop(Not,bVar"b'2"),
13740                                                         Bop(And,
13741                                                             bVar"b'1",
13742                                                             Mop(Not,
13743                                                                 bVar"b'0"))))))))))))),
13744             Call
13745               ("Shift",CTy"instruction",
13746                Call
13747                  ("DSRL",CTy"Shift",
13748                   TP[Mop(Cast(FTy 5),
13749                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13750                             bVar"b'16"]),
13751                      Mop(Cast(FTy 5),
13752                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13753                             bVar"b'11"]),
13754                      Mop(Cast(FTy 5),
13755                          LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
13756                             bVar"b'6"])]))),
13757            (Bop(And,Mop(Not,bVar"b'28"),
13758                 Bop(And,Mop(Not,bVar"b'27"),
13759                     Bop(And,Mop(Not,bVar"b'25"),
13760                         Bop(And,Mop(Not,bVar"b'24"),
13761                             Bop(And,Mop(Not,bVar"b'23"),
13762                                 Bop(And,Mop(Not,bVar"b'22"),
13763                                     Bop(And,Mop(Not,bVar"b'21"),
13764                                         Bop(And,bVar"b'5",
13765                                             Bop(And,bVar"b'4",
13766                                                 Bop(And,bVar"b'3",
13767                                                     Bop(And,
13768                                                         Mop(Not,bVar"b'2"),
13769                                                         Bop(And,
13770                                                             bVar"b'1",
13771                                                             bVar"b'0")))))))))))),
13772             Call
13773               ("Shift",CTy"instruction",
13774                Call
13775                  ("DSRA",CTy"Shift",
13776                   TP[Mop(Cast(FTy 5),
13777                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13778                             bVar"b'16"]),
13779                      Mop(Cast(FTy 5),
13780                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13781                             bVar"b'11"]),
13782                      Mop(Cast(FTy 5),
13783                          LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
13784                             bVar"b'6"])]))),
13785            (Bop(And,Mop(Not,bVar"b'28"),
13786                 Bop(And,Mop(Not,bVar"b'27"),
13787                     Bop(And,Mop(Not,bVar"b'25"),
13788                         Bop(And,Mop(Not,bVar"b'24"),
13789                             Bop(And,Mop(Not,bVar"b'23"),
13790                                 Bop(And,Mop(Not,bVar"b'22"),
13791                                     Bop(And,Mop(Not,bVar"b'21"),
13792                                         Bop(And,bVar"b'5",
13793                                             Bop(And,bVar"b'4",
13794                                                 Bop(And,bVar"b'3",
13795                                                     Bop(And,bVar"b'2",
13796                                                         Bop(And,
13797                                                             Mop(Not,
13798                                                                 bVar"b'1"),
13799                                                             Mop(Not,
13800                                                                 bVar"b'0"))))))))))))),
13801             Call
13802               ("Shift",CTy"instruction",
13803                Call
13804                  ("DSLL32",CTy"Shift",
13805                   TP[Mop(Cast(FTy 5),
13806                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13807                             bVar"b'16"]),
13808                      Mop(Cast(FTy 5),
13809                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13810                             bVar"b'11"]),
13811                      Mop(Cast(FTy 5),
13812                          LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
13813                             bVar"b'6"])]))),
13814            (Bop(And,Mop(Not,bVar"b'28"),
13815                 Bop(And,Mop(Not,bVar"b'27"),
13816                     Bop(And,Mop(Not,bVar"b'25"),
13817                         Bop(And,Mop(Not,bVar"b'24"),
13818                             Bop(And,Mop(Not,bVar"b'23"),
13819                                 Bop(And,Mop(Not,bVar"b'22"),
13820                                     Bop(And,Mop(Not,bVar"b'21"),
13821                                         Bop(And,bVar"b'5",
13822                                             Bop(And,bVar"b'4",
13823                                                 Bop(And,bVar"b'3",
13824                                                     Bop(And,bVar"b'2",
13825                                                         Bop(And,
13826                                                             bVar"b'1",
13827                                                             Mop(Not,
13828                                                                 bVar"b'0"))))))))))))),
13829             Call
13830               ("Shift",CTy"instruction",
13831                Call
13832                  ("DSRL32",CTy"Shift",
13833                   TP[Mop(Cast(FTy 5),
13834                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13835                             bVar"b'16"]),
13836                      Mop(Cast(FTy 5),
13837                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13838                             bVar"b'11"]),
13839                      Mop(Cast(FTy 5),
13840                          LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
13841                             bVar"b'6"])]))),
13842            (Bop(And,Mop(Not,bVar"b'28"),
13843                 Bop(And,Mop(Not,bVar"b'27"),
13844                     Bop(And,Mop(Not,bVar"b'25"),
13845                         Bop(And,Mop(Not,bVar"b'24"),
13846                             Bop(And,Mop(Not,bVar"b'23"),
13847                                 Bop(And,Mop(Not,bVar"b'22"),
13848                                     Bop(And,Mop(Not,bVar"b'21"),
13849                                         Bop(And,bVar"b'5",
13850                                             Bop(And,bVar"b'4",
13851                                                 Bop(And,bVar"b'3",
13852                                                     Bop(And,bVar"b'2",
13853                                                         Bop(And,
13854                                                             bVar"b'1",
13855                                                             bVar"b'0")))))))))))),
13856             Call
13857               ("Shift",CTy"instruction",
13858                Call
13859                  ("DSRA32",CTy"Shift",
13860                   TP[Mop(Cast(FTy 5),
13861                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13862                             bVar"b'16"]),
13863                      Mop(Cast(FTy 5),
13864                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13865                             bVar"b'11"]),
13866                      Mop(Cast(FTy 5),
13867                          LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",
13868                             bVar"b'6"])]))),
13869            (Bop(And,Mop(Not,bVar"b'28"),bVar"b'27"),
13870             Call
13871               ("Branch",CTy"instruction",
13872                Call
13873                  ("J",CTy"Branch",
13874                   Mop(Cast(FTy 26),
13875                       LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13876                          bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18",
13877                          bVar"b'17",bVar"b'16",bVar"b'15",bVar"b'14",
13878                          bVar"b'13",bVar"b'12",bVar"b'11",bVar"b'10",
13879                          bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6",
13880                          bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2",
13881                          bVar"b'1",bVar"b'0"])))),
13882            (Bop(And,bVar"b'28",
13883                 Bop(And,bVar"b'27",
13884                     Bop(And,Mop(Not,bVar"b'20"),
13885                         Bop(And,Mop(Not,bVar"b'19"),
13886                             Bop(And,Mop(Not,bVar"b'18"),
13887                                 Bop(And,Mop(Not,bVar"b'17"),
13888                                     Mop(Not,bVar"b'16"))))))),
13889             Call
13890               ("Branch",CTy"instruction",
13891                Call
13892                  ("BLEZ",CTy"Branch",
13893                   TP[Mop(Cast(FTy 5),
13894                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13895                             bVar"b'21"]),
13896                      Mop(Cast F16,
13897                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13898                             bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8",
13899                             bVar"b'7",bVar"b'6",bVar"b'5",bVar"b'4",
13900                             bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))),
13901            (Bop(And,bVar"b'28",Mop(Not,bVar"b'27")),
13902             Call
13903               ("Branch",CTy"instruction",
13904                Call
13905                  ("BEQ",CTy"Branch",
13906                   TP[Mop(Cast(FTy 5),
13907                          LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",
13908                             bVar"b'21"]),
13909                      Mop(Cast(FTy 5),
13910                          LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",
13911                             bVar"b'16"]),
13912                      Mop(Cast F16,
13913                          LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",
13914                             bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8",
13915                             bVar"b'7",bVar"b'6",bVar"b'5",bVar"b'4",
13916                             bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])])))],
13917           Const("ReservedInstruction",CTy"instruction"))))
13918;
13919val Next_def = Def
13920  ("Next",qVar"state",
13921   Let(TP[Var("v",OTy F32),qVar"s"],
13922       Apply(Const("Fetch",ATy(qTy,PTy(OTy F32,qTy))),qVar"state"),
13923       Let(qVar"s",
13924           CS(Var("v",OTy F32),
13925              [(Mop(Some,Var("w",F32)),
13926                Apply
13927                  (Call
13928                     ("Run",ATy(qTy,qTy),
13929                      Call("Decode",CTy"instruction",Var("w",F32))),
13930                   qVar"s")),(LO F32,qVar"s")]),
13931           Let(qVar"s",
13932               Rupd
13933                 ("exceptionSignalled",
13934                  TP[CS(TP[Dest("BranchDelay",OTy(OTy F64),qVar"s"),
13935                           Dest("BranchTo",OTy(PTy(bTy,F64)),qVar"s")],
13936                        [(TP[LO(OTy F64),LO(PTy(bTy,F64))],
13937                          Rupd
13938                            ("PC",
13939                             TP[qVar"s",
13940                                Bop(Add,Dest("PC",F64,qVar"s"),LW(4,64))])),
13941                         (TP[LO(OTy F64),Mop(Some,TP[LT,Var("addr",F64)])],
13942                          Rupd
13943                            ("PC",
13944                             TP[Rupd
13945                                  ("BranchTo",
13946                                   TP[Rupd
13947                                        ("BranchDelay",
13948                                         TP[qVar"s",Mop(Some,LO F64)]),
13949                                      LO(PTy(bTy,F64))]),Var("addr",F64)])),
13950                         (TP[LO(OTy F64),Mop(Some,TP[LF,Var("addr",F64)])],
13951                          Let(qVar"s",
13952                              Rupd
13953                                ("BranchTo",
13954                                 TP[Rupd
13955                                      ("BranchDelay",
13956                                       TP[qVar"s",
13957                                          Mop(Some,
13958                                              Mop(Some,Var("addr",F64)))]),
13959                                    LO(PTy(bTy,F64))]),
13960                              Rupd
13961                                ("PC",
13962                                 TP[qVar"s",
13963                                    Bop(Add,Dest("PC",F64,qVar"s"),
13964                                        LW(4,64))]))),
13965                         (TP[Mop(Some,LO F64),LO(PTy(bTy,F64))],
13966                          Let(qVar"s",
13967                              Rupd("BranchDelay",TP[qVar"s",LO(OTy F64)]),
13968                              Rupd
13969                                ("PC",
13970                                 TP[qVar"s",
13971                                    Bop(Add,Dest("PC",F64,qVar"s"),
13972                                        LW(4,64))]))),
13973                         (TP[Mop(Some,Mop(Some,Var("addr",F64))),
13974                             LO(PTy(bTy,F64))],
13975                          Rupd
13976                            ("PC",
13977                             TP[Rupd
13978                                  ("BranchDelay",TP[qVar"s",LO(OTy F64)]),
13979                                Var("addr",F64)])),
13980                         (AVar(PTy(OTy(OTy F64),OTy(PTy(bTy,F64)))),
13981                          Mop(Snd,
13982                              Apply
13983                                (Call
13984                                   ("raise'exception",
13985                                    ATy(qTy,PTy(uTy,qTy)),
13986                                    Call
13987                                      ("UNPREDICTABLE",CTy"exception",
13988                                       LS"Branch follows branch")),qVar"s")))]),
13989                     LF]),
13990               Rupd
13991                 ("CP0",
13992                  TP[qVar"s",
13993                     Rupd
13994                       ("Count",
13995                        TP[Dest("CP0",CTy"CP0",qVar"s"),
13996                           Bop(Add,
13997                               Dest
13998                                 ("Count",F32,Dest("CP0",CTy"CP0",qVar"s")),
13999                               LW(1,32))])])))))
14000;
14001val COP1Encode_def = Def
14002  ("COP1Encode",Var("j",CTy"COP1"),
14003   CS(Var("j",CTy"COP1"),
14004      [(Call("MFC1",CTy"COP1",TP[Var("rt",FTy 5),Var("fs",FTy 5)]),
14005        CC[LW(544,11),Var("rt",FTy 5),Var("fs",FTy 5),LW(0,11)]),
14006       (Call("DMFC1",CTy"COP1",TP[Var("rt",FTy 5),Var("fs",FTy 5)]),
14007        CC[LW(545,11),Var("rt",FTy 5),Var("fs",FTy 5),LW(0,11)]),
14008       (Call("CFC1",CTy"COP1",TP[Var("rt",FTy 5),Var("fs",FTy 5)]),
14009        CC[LW(546,11),Var("rt",FTy 5),Var("fs",FTy 5),LW(0,11)]),
14010       (Call("MTC1",CTy"COP1",TP[Var("rt",FTy 5),Var("fs",FTy 5)]),
14011        CC[LW(548,11),Var("rt",FTy 5),Var("fs",FTy 5),LW(0,11)]),
14012       (Call("DMTC1",CTy"COP1",TP[Var("rt",FTy 5),Var("fs",FTy 5)]),
14013        CC[LW(549,11),Var("rt",FTy 5),Var("fs",FTy 5),LW(0,11)]),
14014       (Call("CTC1",CTy"COP1",TP[Var("rt",FTy 5),Var("fs",FTy 5)]),
14015        CC[LW(550,11),Var("rt",FTy 5),Var("fs",FTy 5),LW(0,11)]),
14016       (Call("BC1F",CTy"COP1",TP[Var("i",F16),Var("cc",FTy 3)]),
14017        CC[LW(552,11),Var("cc",FTy 3),LW(0,2),Var("i",F16)]),
14018       (Call("BC1T",CTy"COP1",TP[Var("i",F16),Var("cc",FTy 3)]),
14019        CC[LW(552,11),Var("cc",FTy 3),LW(1,2),Var("i",F16)]),
14020       (Call("BC1FL",CTy"COP1",TP[Var("i",F16),Var("cc",FTy 3)]),
14021        CC[LW(552,11),Var("cc",FTy 3),LW(2,2),Var("i",F16)]),
14022       (Call("BC1TL",CTy"COP1",TP[Var("i",F16),Var("cc",FTy 3)]),
14023        CC[LW(552,11),Var("cc",FTy 3),LW(3,2),Var("i",F16)]),
14024       (Call
14025          ("ADD_S",CTy"COP1",
14026           TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]),
14027        CC[LW(560,11),Var("ft",FTy 5),Var("fs",FTy 5),Var("fd",FTy 5),
14028           LW(0,6)]),
14029       (Call
14030          ("SUB_S",CTy"COP1",
14031           TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]),
14032        CC[LW(560,11),Var("ft",FTy 5),Var("fs",FTy 5),Var("fd",FTy 5),
14033           LW(1,6)]),
14034       (Call
14035          ("MUL_S",CTy"COP1",
14036           TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]),
14037        CC[LW(560,11),Var("ft",FTy 5),Var("fs",FTy 5),Var("fd",FTy 5),
14038           LW(2,6)]),
14039       (Call
14040          ("DIV_S",CTy"COP1",
14041           TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]),
14042        CC[LW(560,11),Var("ft",FTy 5),Var("fs",FTy 5),Var("fd",FTy 5),
14043           LW(3,6)]),
14044       (Call("SQRT_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14045        CC[LW(17920,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(4,6)]),
14046       (Call("ABS_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14047        CC[LW(17920,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(5,6)]),
14048       (Call("MOV_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14049        CC[LW(17920,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(6,6)]),
14050       (Call("NEG_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14051        CC[LW(17920,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(7,6)]),
14052       (Call("ROUND_L_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14053        CC[LW(17920,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(8,6)]),
14054       (Call("TRUNC_L_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14055        CC[LW(17920,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(9,6)]),
14056       (Call("CEIL_L_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14057        CC[LW(17920,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(10,6)]),
14058       (Call("FLOOR_L_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14059        CC[LW(17920,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(11,6)]),
14060       (Call("ROUND_W_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14061        CC[LW(17920,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(12,6)]),
14062       (Call("TRUNC_W_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14063        CC[LW(17920,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(13,6)]),
14064       (Call("CEIL_W_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14065        CC[LW(17920,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(14,6)]),
14066       (Call("FLOOR_W_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14067        CC[LW(17920,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(15,6)]),
14068       (Call
14069          ("MOVF_S",CTy"COP1",
14070           TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)]),
14071        CC[LW(560,11),Var("cc",FTy 3),LW(0,2),Var("fs",FTy 5),
14072           Var("fd",FTy 5),LW(17,6)]),
14073       (Call
14074          ("MOVT_S",CTy"COP1",
14075           TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)]),
14076        CC[LW(560,11),Var("cc",FTy 3),LW(1,2),Var("fs",FTy 5),
14077           Var("fd",FTy 5),LW(17,6)]),
14078       (Call
14079          ("MOVZ_S",CTy"COP1",
14080           TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)]),
14081        CC[LW(560,11),Var("rt",FTy 5),Var("fs",FTy 5),Var("fd",FTy 5),
14082           LW(18,6)]),
14083       (Call
14084          ("MOVN_S",CTy"COP1",
14085           TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)]),
14086        CC[LW(560,11),Var("rt",FTy 5),Var("fs",FTy 5),Var("fd",FTy 5),
14087           LW(19,6)]),
14088       (Call
14089          ("C_cond_S",CTy"COP1",
14090           TP[Var("fs",FTy 5),Var("ft",FTy 5),Var("cnd",FTy 3),
14091              Var("cc",FTy 3)]),
14092        CC[LW(560,11),Var("ft",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3),
14093           LW(6,5),Var("cnd",FTy 3)]),
14094       (Call
14095          ("ADD_D",CTy"COP1",
14096           TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]),
14097        CC[LW(561,11),Var("ft",FTy 5),Var("fs",FTy 5),Var("fd",FTy 5),
14098           LW(0,6)]),
14099       (Call
14100          ("SUB_D",CTy"COP1",
14101           TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]),
14102        CC[LW(561,11),Var("ft",FTy 5),Var("fs",FTy 5),Var("fd",FTy 5),
14103           LW(1,6)]),
14104       (Call
14105          ("MUL_D",CTy"COP1",
14106           TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]),
14107        CC[LW(561,11),Var("ft",FTy 5),Var("fs",FTy 5),Var("fd",FTy 5),
14108           LW(2,6)]),
14109       (Call
14110          ("DIV_D",CTy"COP1",
14111           TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]),
14112        CC[LW(561,11),Var("ft",FTy 5),Var("fs",FTy 5),Var("fd",FTy 5),
14113           LW(3,6)]),
14114       (Call("SQRT_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14115        CC[LW(17952,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(4,6)]),
14116       (Call("ABS_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14117        CC[LW(17952,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(5,6)]),
14118       (Call("MOV_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14119        CC[LW(17952,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(6,6)]),
14120       (Call("NEG_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14121        CC[LW(17952,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(7,6)]),
14122       (Call("ROUND_L_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14123        CC[LW(17952,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(8,6)]),
14124       (Call("TRUNC_L_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14125        CC[LW(17952,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(9,6)]),
14126       (Call("CEIL_L_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14127        CC[LW(17952,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(10,6)]),
14128       (Call("FLOOR_L_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14129        CC[LW(17952,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(11,6)]),
14130       (Call("ROUND_W_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14131        CC[LW(17952,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(12,6)]),
14132       (Call("TRUNC_W_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14133        CC[LW(17952,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(13,6)]),
14134       (Call("CEIL_W_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14135        CC[LW(17952,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(14,6)]),
14136       (Call("FLOOR_W_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14137        CC[LW(17952,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(15,6)]),
14138       (Call
14139          ("MOVF_D",CTy"COP1",
14140           TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)]),
14141        CC[LW(561,11),Var("cc",FTy 3),LW(0,2),Var("fs",FTy 5),
14142           Var("fd",FTy 5),LW(17,6)]),
14143       (Call
14144          ("MOVT_D",CTy"COP1",
14145           TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)]),
14146        CC[LW(561,11),Var("cc",FTy 3),LW(1,2),Var("fs",FTy 5),
14147           Var("fd",FTy 5),LW(17,6)]),
14148       (Call
14149          ("MOVZ_D",CTy"COP1",
14150           TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)]),
14151        CC[LW(561,11),Var("rt",FTy 5),Var("fs",FTy 5),Var("fd",FTy 5),
14152           LW(18,6)]),
14153       (Call
14154          ("MOVN_D",CTy"COP1",
14155           TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)]),
14156        CC[LW(561,11),Var("rt",FTy 5),Var("fs",FTy 5),Var("fd",FTy 5),
14157           LW(19,6)]),
14158       (Call
14159          ("C_cond_D",CTy"COP1",
14160           TP[Var("fs",FTy 5),Var("ft",FTy 5),Var("cnd",FTy 3),
14161              Var("cc",FTy 3)]),
14162        CC[LW(561,11),Var("ft",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3),
14163           LW(6,5),Var("cnd",FTy 3)]),
14164       (Call("CVT_S_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14165        CC[LW(17952,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(32,6)]),
14166       (Call("CVT_S_W",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14167        CC[LW(18048,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(32,6)]),
14168       (Call("CVT_S_L",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14169        CC[LW(18080,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(32,6)]),
14170       (Call("CVT_D_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14171        CC[LW(17920,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(33,6)]),
14172       (Call("CVT_D_W",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14173        CC[LW(18048,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(33,6)]),
14174       (Call("CVT_D_L",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14175        CC[LW(18080,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(33,6)]),
14176       (Call("CVT_W_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14177        CC[LW(17920,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(36,6)]),
14178       (Call("CVT_W_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14179        CC[LW(17952,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(36,6)]),
14180       (Call("CVT_L_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14181        CC[LW(17920,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(37,6)]),
14182       (Call("CVT_L_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]),
14183        CC[LW(17952,16),Var("fs",FTy 5),Var("fd",FTy 5),LW(37,6)]),
14184       (Call
14185          ("LDC1",CTy"COP1",
14186           TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)]),
14187        CC[LW(53,6),Var("base",FTy 5),Var("ft",FTy 5),Var("offset",F16)]),
14188       (Call
14189          ("LWC1",CTy"COP1",
14190           TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)]),
14191        CC[LW(49,6),Var("base",FTy 5),Var("ft",FTy 5),Var("offset",F16)]),
14192       (Call
14193          ("SDC1",CTy"COP1",
14194           TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)]),
14195        CC[LW(61,6),Var("base",FTy 5),Var("ft",FTy 5),Var("offset",F16)]),
14196       (Call
14197          ("SWC1",CTy"COP1",
14198           TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)]),
14199        CC[LW(57,6),Var("base",FTy 5),Var("ft",FTy 5),Var("offset",F16)]),
14200       (Call
14201          ("LWXC1",CTy"COP1",
14202           TP[Var("fd",FTy 5),Var("index",FTy 5),Var("base",FTy 5)]),
14203        CC[LW(19,6),Var("base",FTy 5),Var("index",FTy 5),LW(0,5),
14204           Var("fd",FTy 5),LW(0,6)]),
14205       (Call
14206          ("LDXC1",CTy"COP1",
14207           TP[Var("fd",FTy 5),Var("index",FTy 5),Var("base",FTy 5)]),
14208        CC[LW(19,6),Var("base",FTy 5),Var("index",FTy 5),LW(0,5),
14209           Var("fd",FTy 5),LW(1,6)]),
14210       (Call
14211          ("SWXC1",CTy"COP1",
14212           TP[Var("fs",FTy 5),Var("index",FTy 5),Var("base",FTy 5)]),
14213        CC[LW(19,6),Var("base",FTy 5),Var("index",FTy 5),Var("fs",FTy 5),
14214           LW(8,11)]),
14215       (Call
14216          ("SDXC1",CTy"COP1",
14217           TP[Var("fs",FTy 5),Var("index",FTy 5),Var("base",FTy 5)]),
14218        CC[LW(19,6),Var("base",FTy 5),Var("index",FTy 5),Var("fs",FTy 5),
14219           LW(9,11)]),
14220       (Call
14221          ("MADD_S",CTy"COP1",
14222           TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5),
14223              Var("ft",FTy 5)]),
14224        CC[LW(19,6),Var("fr",FTy 5),Var("ft",FTy 5),Var("fs",FTy 5),
14225           Var("fd",FTy 5),LW(32,6)]),
14226       (Call
14227          ("MADD_D",CTy"COP1",
14228           TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5),
14229              Var("ft",FTy 5)]),
14230        CC[LW(19,6),Var("fr",FTy 5),Var("ft",FTy 5),Var("fs",FTy 5),
14231           Var("fd",FTy 5),LW(33,6)]),
14232       (Call
14233          ("MSUB_S",CTy"COP1",
14234           TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5),
14235              Var("ft",FTy 5)]),
14236        CC[LW(19,6),Var("fr",FTy 5),Var("ft",FTy 5),Var("fs",FTy 5),
14237           Var("fd",FTy 5),LW(40,6)]),
14238       (Call
14239          ("MSUB_D",CTy"COP1",
14240           TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5),
14241              Var("ft",FTy 5)]),
14242        CC[LW(19,6),Var("fr",FTy 5),Var("ft",FTy 5),Var("fs",FTy 5),
14243           Var("fd",FTy 5),LW(41,6)]),
14244       (Call
14245          ("MOVF",CTy"COP1",
14246           TP[Var("rd",FTy 5),Var("rs",FTy 5),Var("cc",FTy 3)]),
14247        CC[LW(0,6),Var("rs",FTy 5),Var("cc",FTy 3),LW(0,2),
14248           Var("rd",FTy 5),LW(1,11)]),
14249       (Call
14250          ("MOVT",CTy"COP1",
14251           TP[Var("rd",FTy 5),Var("rs",FTy 5),Var("cc",FTy 3)]),
14252        CC[LW(0,6),Var("rs",FTy 5),Var("cc",FTy 3),LW(1,2),
14253           Var("rd",FTy 5),LW(1,11)]),
14254       (Const("UnknownFPInstruction",CTy"COP1"),LX F32)]))
14255;
14256val form1_def = Def
14257  ("form1",
14258   TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5),
14259      Var("function",FTy 6)],
14260   CC[LW(0,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
14261      Var("imm5",FTy 5),Var("function",FTy 6)])
14262;
14263val form2_def = Def
14264  ("form2",TP[Var("rs",FTy 5),Var("function",FTy 5),Var("imm",F16)],
14265   CC[LW(1,6),Var("rs",FTy 5),Var("function",FTy 5),Var("imm",F16)])
14266;
14267val form3_def = Def
14268  ("form3",
14269   TP[Var("function",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
14270      Var("sel",FTy 3)],
14271   CC[LW(16,6),Var("function",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
14272      LW(0,8),Var("sel",FTy 3)])
14273;
14274val form4_def = Def
14275  ("form4",
14276   TP[Var("function",FTy 6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)],
14277   CC[Var("function",FTy 6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])
14278;
14279val form5_def = Def
14280  ("form5",
14281   TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),
14282      Var("function",FTy 6)],
14283   CC[LW(28,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14284      Var("function",FTy 6)])
14285;
14286val form6_def = Def
14287  ("form6",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("function",FTy 6)],
14288   CC[LW(31,6),LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14289      Var("function",FTy 6)])
14290;
14291val Encode_def = Def
14292  ("Encode",Var("i",CTy"instruction"),
14293   CS(Var("i",CTy"instruction"),
14294      [(Call
14295          ("Shift",CTy"instruction",
14296           Call
14297             ("SLL",CTy"Shift",
14298              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
14299        Call
14300          ("form1",F32,
14301           TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5),
14302              LW(0,6)])),
14303       (Call
14304          ("Shift",CTy"instruction",
14305           Call
14306             ("SRL",CTy"Shift",
14307              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
14308        Call
14309          ("form1",F32,
14310           TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5),
14311              LW(2,6)])),
14312       (Call
14313          ("Shift",CTy"instruction",
14314           Call
14315             ("SRA",CTy"Shift",
14316              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
14317        Call
14318          ("form1",F32,
14319           TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5),
14320              LW(3,6)])),
14321       (Call
14322          ("Shift",CTy"instruction",
14323           Call
14324             ("SLLV",CTy"Shift",
14325              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14326        Call
14327          ("form1",F32,
14328           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14329              LW(4,6)])),
14330       (Call
14331          ("Shift",CTy"instruction",
14332           Call
14333             ("SRLV",CTy"Shift",
14334              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14335        Call
14336          ("form1",F32,
14337           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14338              LW(6,6)])),
14339       (Call
14340          ("Shift",CTy"instruction",
14341           Call
14342             ("SRAV",CTy"Shift",
14343              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14344        Call
14345          ("form1",F32,
14346           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14347              LW(7,6)])),
14348       (Call
14349          ("Branch",CTy"instruction",
14350           Call("JR",CTy"Branch",Var("rs",FTy 5))),
14351        Call
14352          ("form1",F32,TP[Var("rs",FTy 5),LW(0,5),LW(0,5),LW(0,5),LW(8,6)])),
14353       (Call
14354          ("Branch",CTy"instruction",
14355           Call("JALR",CTy"Branch",TP[Var("rs",FTy 5),Var("rd",FTy 5)])),
14356        Call
14357          ("form1",F32,
14358           TP[Var("rs",FTy 5),LW(0,5),Var("rd",FTy 5),LW(0,5),LW(9,6)])),
14359       (Call
14360          ("MultDiv",CTy"instruction",
14361           Call("MFHI",CTy"MultDiv",Var("rd",FTy 5))),
14362        Call
14363          ("form1",F32,
14364           TP[LW(0,5),LW(0,5),Var("rd",FTy 5),LW(0,5),LW(16,6)])),
14365       (Call
14366          ("MultDiv",CTy"instruction",
14367           Call("MTHI",CTy"MultDiv",Var("rs",FTy 5))),
14368        Call
14369          ("form1",F32,
14370           TP[Var("rs",FTy 5),LW(0,5),LW(0,5),LW(0,5),LW(17,6)])),
14371       (Call
14372          ("MultDiv",CTy"instruction",
14373           Call("MFLO",CTy"MultDiv",Var("rd",FTy 5))),
14374        Call
14375          ("form1",F32,
14376           TP[LW(0,5),LW(0,5),Var("rd",FTy 5),LW(0,5),LW(18,6)])),
14377       (Call
14378          ("MultDiv",CTy"instruction",
14379           Call("MTLO",CTy"MultDiv",Var("rs",FTy 5))),
14380        Call
14381          ("form1",F32,
14382           TP[Var("rs",FTy 5),LW(0,5),LW(0,5),LW(0,5),LW(19,6)])),
14383       (Call
14384          ("Shift",CTy"instruction",
14385           Call
14386             ("DSLLV",CTy"Shift",
14387              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14388        Call
14389          ("form1",F32,
14390           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14391              LW(20,6)])),
14392       (Call
14393          ("Shift",CTy"instruction",
14394           Call
14395             ("DSRLV",CTy"Shift",
14396              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14397        Call
14398          ("form1",F32,
14399           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14400              LW(22,6)])),
14401       (Call
14402          ("Shift",CTy"instruction",
14403           Call
14404             ("DSRAV",CTy"Shift",
14405              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14406        Call
14407          ("form1",F32,
14408           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14409              LW(23,6)])),
14410       (Call
14411          ("MultDiv",CTy"instruction",
14412           Call("MADD",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
14413        Call
14414          ("form5",F32,TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,6)])),
14415       (Call
14416          ("MultDiv",CTy"instruction",
14417           Call("MADDU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
14418        Call
14419          ("form5",F32,TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(1,6)])),
14420       (Call
14421          ("MultDiv",CTy"instruction",
14422           Call("MSUB",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
14423        Call
14424          ("form5",F32,TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(4,6)])),
14425       (Call
14426          ("MultDiv",CTy"instruction",
14427           Call("MSUBU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
14428        Call
14429          ("form5",F32,TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(5,6)])),
14430       (Call
14431          ("MultDiv",CTy"instruction",
14432           Call
14433             ("MUL",CTy"MultDiv",
14434              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14435        Call
14436          ("form5",F32,
14437           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(2,6)])),
14438       (Call
14439          ("MultDiv",CTy"instruction",
14440           Call("MULT",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
14441        Call
14442          ("form1",F32,
14443           TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),LW(24,6)])),
14444       (Call
14445          ("MultDiv",CTy"instruction",
14446           Call("MULTU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
14447        Call
14448          ("form1",F32,
14449           TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),LW(25,6)])),
14450       (Call
14451          ("MultDiv",CTy"instruction",
14452           Call("DIV",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
14453        Call
14454          ("form1",F32,
14455           TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),LW(26,6)])),
14456       (Call
14457          ("MultDiv",CTy"instruction",
14458           Call("DIVU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
14459        Call
14460          ("form1",F32,
14461           TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),LW(27,6)])),
14462       (Call
14463          ("MultDiv",CTy"instruction",
14464           Call("DMULT",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
14465        Call
14466          ("form1",F32,
14467           TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),LW(28,6)])),
14468       (Call
14469          ("MultDiv",CTy"instruction",
14470           Call("DMULTU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
14471        Call
14472          ("form1",F32,
14473           TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),LW(29,6)])),
14474       (Call
14475          ("MultDiv",CTy"instruction",
14476           Call("DDIV",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
14477        Call
14478          ("form1",F32,
14479           TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),LW(30,6)])),
14480       (Call
14481          ("MultDiv",CTy"instruction",
14482           Call("DDIVU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
14483        Call
14484          ("form1",F32,
14485           TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),LW(31,6)])),
14486       (Call
14487          ("ArithR",CTy"instruction",
14488           Call
14489             ("MOVZ",CTy"ArithR",
14490              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14491        Call
14492          ("form1",F32,
14493           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14494              LW(10,6)])),
14495       (Call
14496          ("ArithR",CTy"instruction",
14497           Call
14498             ("MOVN",CTy"ArithR",
14499              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14500        Call
14501          ("form1",F32,
14502           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14503              LW(11,6)])),
14504       (Call
14505          ("ArithR",CTy"instruction",
14506           Call
14507             ("ADD",CTy"ArithR",
14508              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14509        Call
14510          ("form1",F32,
14511           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14512              LW(32,6)])),
14513       (Call
14514          ("ArithR",CTy"instruction",
14515           Call
14516             ("ADDU",CTy"ArithR",
14517              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14518        Call
14519          ("form1",F32,
14520           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14521              LW(33,6)])),
14522       (Call
14523          ("ArithR",CTy"instruction",
14524           Call
14525             ("SUB",CTy"ArithR",
14526              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14527        Call
14528          ("form1",F32,
14529           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14530              LW(34,6)])),
14531       (Call
14532          ("ArithR",CTy"instruction",
14533           Call
14534             ("SUBU",CTy"ArithR",
14535              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14536        Call
14537          ("form1",F32,
14538           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14539              LW(35,6)])),
14540       (Call
14541          ("ArithR",CTy"instruction",
14542           Call
14543             ("AND",CTy"ArithR",
14544              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14545        Call
14546          ("form1",F32,
14547           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14548              LW(36,6)])),
14549       (Call
14550          ("ArithR",CTy"instruction",
14551           Call
14552             ("OR",CTy"ArithR",
14553              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14554        Call
14555          ("form1",F32,
14556           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14557              LW(37,6)])),
14558       (Call
14559          ("ArithR",CTy"instruction",
14560           Call
14561             ("XOR",CTy"ArithR",
14562              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14563        Call
14564          ("form1",F32,
14565           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14566              LW(38,6)])),
14567       (Call
14568          ("ArithR",CTy"instruction",
14569           Call
14570             ("NOR",CTy"ArithR",
14571              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14572        Call
14573          ("form1",F32,
14574           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14575              LW(39,6)])),
14576       (Call
14577          ("ArithR",CTy"instruction",
14578           Call
14579             ("SLT",CTy"ArithR",
14580              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14581        Call
14582          ("form1",F32,
14583           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14584              LW(42,6)])),
14585       (Call
14586          ("ArithR",CTy"instruction",
14587           Call
14588             ("SLTU",CTy"ArithR",
14589              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14590        Call
14591          ("form1",F32,
14592           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14593              LW(43,6)])),
14594       (Call
14595          ("ArithR",CTy"instruction",
14596           Call
14597             ("DADD",CTy"ArithR",
14598              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14599        Call
14600          ("form1",F32,
14601           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14602              LW(44,6)])),
14603       (Call
14604          ("ArithR",CTy"instruction",
14605           Call
14606             ("DADDU",CTy"ArithR",
14607              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14608        Call
14609          ("form1",F32,
14610           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14611              LW(45,6)])),
14612       (Call
14613          ("ArithR",CTy"instruction",
14614           Call
14615             ("DSUB",CTy"ArithR",
14616              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14617        Call
14618          ("form1",F32,
14619           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14620              LW(46,6)])),
14621       (Call
14622          ("ArithR",CTy"instruction",
14623           Call
14624             ("DSUBU",CTy"ArithR",
14625              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])),
14626        Call
14627          ("form1",F32,
14628           TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5),
14629              LW(47,6)])),
14630       (Call
14631          ("Trap",CTy"instruction",
14632           Call("TGE",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
14633        Call
14634          ("form1",F32,
14635           TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),LW(48,6)])),
14636       (Call
14637          ("Trap",CTy"instruction",
14638           Call("TGEU",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
14639        Call
14640          ("form1",F32,
14641           TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),LW(49,6)])),
14642       (Call
14643          ("Trap",CTy"instruction",
14644           Call("TLT",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
14645        Call
14646          ("form1",F32,
14647           TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),LW(50,6)])),
14648       (Call
14649          ("Trap",CTy"instruction",
14650           Call("TLTU",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
14651        Call
14652          ("form1",F32,
14653           TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),LW(51,6)])),
14654       (Call
14655          ("Trap",CTy"instruction",
14656           Call("TEQ",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
14657        Call
14658          ("form1",F32,
14659           TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),LW(52,6)])),
14660       (Call
14661          ("Trap",CTy"instruction",
14662           Call("TNE",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])),
14663        Call
14664          ("form1",F32,
14665           TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5),LW(54,6)])),
14666       (Call
14667          ("Shift",CTy"instruction",
14668           Call
14669             ("DSLL",CTy"Shift",
14670              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
14671        Call
14672          ("form1",F32,
14673           TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5),
14674              LW(56,6)])),
14675       (Call
14676          ("Shift",CTy"instruction",
14677           Call
14678             ("DSRL",CTy"Shift",
14679              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
14680        Call
14681          ("form1",F32,
14682           TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5),
14683              LW(58,6)])),
14684       (Call
14685          ("Shift",CTy"instruction",
14686           Call
14687             ("DSRA",CTy"Shift",
14688              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
14689        Call
14690          ("form1",F32,
14691           TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5),
14692              LW(59,6)])),
14693       (Call
14694          ("Shift",CTy"instruction",
14695           Call
14696             ("DSLL32",CTy"Shift",
14697              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
14698        Call
14699          ("form1",F32,
14700           TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5),
14701              LW(60,6)])),
14702       (Call
14703          ("Shift",CTy"instruction",
14704           Call
14705             ("DSRL32",CTy"Shift",
14706              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
14707        Call
14708          ("form1",F32,
14709           TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5),
14710              LW(62,6)])),
14711       (Call
14712          ("Shift",CTy"instruction",
14713           Call
14714             ("DSRA32",CTy"Shift",
14715              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])),
14716        Call
14717          ("form1",F32,
14718           TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5),
14719              LW(63,6)])),
14720       (Call
14721          ("Branch",CTy"instruction",
14722           Call("BLTZ",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
14723        Call("form2",F32,TP[Var("rs",FTy 5),LW(0,5),Var("imm",F16)])),
14724       (Call
14725          ("Branch",CTy"instruction",
14726           Call("BGEZ",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
14727        Call("form2",F32,TP[Var("rs",FTy 5),LW(1,5),Var("imm",F16)])),
14728       (Call
14729          ("Branch",CTy"instruction",
14730           Call("BLTZL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
14731        Call("form2",F32,TP[Var("rs",FTy 5),LW(2,5),Var("imm",F16)])),
14732       (Call
14733          ("Branch",CTy"instruction",
14734           Call("BGEZL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
14735        Call("form2",F32,TP[Var("rs",FTy 5),LW(3,5),Var("imm",F16)])),
14736       (Call
14737          ("Trap",CTy"instruction",
14738           Call("TGEI",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])),
14739        Call("form2",F32,TP[Var("rs",FTy 5),LW(8,5),Var("imm",F16)])),
14740       (Call
14741          ("Trap",CTy"instruction",
14742           Call("TGEIU",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])),
14743        Call("form2",F32,TP[Var("rs",FTy 5),LW(9,5),Var("imm",F16)])),
14744       (Call
14745          ("Trap",CTy"instruction",
14746           Call("TLTI",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])),
14747        Call("form2",F32,TP[Var("rs",FTy 5),LW(10,5),Var("imm",F16)])),
14748       (Call
14749          ("Trap",CTy"instruction",
14750           Call("TLTIU",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])),
14751        Call("form2",F32,TP[Var("rs",FTy 5),LW(11,5),Var("imm",F16)])),
14752       (Call
14753          ("Trap",CTy"instruction",
14754           Call("TEQI",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])),
14755        Call("form2",F32,TP[Var("rs",FTy 5),LW(12,5),Var("imm",F16)])),
14756       (Call
14757          ("Trap",CTy"instruction",
14758           Call("TNEI",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])),
14759        Call("form2",F32,TP[Var("rs",FTy 5),LW(14,5),Var("imm",F16)])),
14760       (Call
14761          ("Branch",CTy"instruction",
14762           Call("BLTZAL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
14763        Call("form2",F32,TP[Var("rs",FTy 5),LW(16,5),Var("imm",F16)])),
14764       (Call
14765          ("Branch",CTy"instruction",
14766           Call("BGEZAL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
14767        Call("form2",F32,TP[Var("rs",FTy 5),LW(17,5),Var("imm",F16)])),
14768       (Call
14769          ("Branch",CTy"instruction",
14770           Call("BLTZALL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
14771        Call("form2",F32,TP[Var("rs",FTy 5),LW(18,5),Var("imm",F16)])),
14772       (Call
14773          ("Branch",CTy"instruction",
14774           Call("BGEZALL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
14775        Call("form2",F32,TP[Var("rs",FTy 5),LW(19,5),Var("imm",F16)])),
14776       (Call
14777          ("Branch",CTy"instruction",
14778           Call("J",CTy"Branch",Var("imm",FTy 26))),
14779        CC[LW(2,6),Var("imm",FTy 26)]),
14780       (Call
14781          ("Branch",CTy"instruction",
14782           Call("JAL",CTy"Branch",Var("imm",FTy 26))),
14783        CC[LW(3,6),Var("imm",FTy 26)]),
14784       (Call
14785          ("CP",CTy"instruction",
14786           Call
14787             ("MFC0",CTy"CP",
14788              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])),
14789        Call
14790          ("form3",F32,
14791           TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])),
14792       (Call
14793          ("CP",CTy"instruction",
14794           Call
14795             ("DMFC0",CTy"CP",
14796              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])),
14797        Call
14798          ("form3",F32,
14799           TP[LW(1,5),Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])),
14800       (Call
14801          ("CP",CTy"instruction",
14802           Call
14803             ("MTC0",CTy"CP",
14804              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])),
14805        Call
14806          ("form3",F32,
14807           TP[LW(4,5),Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])),
14808       (Call
14809          ("CP",CTy"instruction",
14810           Call
14811             ("DMTC0",CTy"CP",
14812              TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])),
14813        Call
14814          ("form3",F32,
14815           TP[LW(5,5),Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])),
14816       (Call
14817          ("Branch",CTy"instruction",
14818           Call
14819             ("BEQ",CTy"Branch",
14820              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14821        Call
14822          ("form4",F32,
14823           TP[LW(4,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14824       (Call
14825          ("Branch",CTy"instruction",
14826           Call
14827             ("BNE",CTy"Branch",
14828              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14829        Call
14830          ("form4",F32,
14831           TP[LW(5,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14832       (Call
14833          ("Branch",CTy"instruction",
14834           Call("BLEZ",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
14835        Call
14836          ("form4",F32,TP[LW(6,6),Var("rs",FTy 5),LW(0,5),Var("imm",F16)])),
14837       (Call
14838          ("Branch",CTy"instruction",
14839           Call("BGTZ",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
14840        Call
14841          ("form4",F32,TP[LW(7,6),Var("rs",FTy 5),LW(0,5),Var("imm",F16)])),
14842       (Call
14843          ("ArithI",CTy"instruction",
14844           Call
14845             ("ADDI",CTy"ArithI",
14846              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14847        Call
14848          ("form4",F32,
14849           TP[LW(8,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14850       (Call
14851          ("ArithI",CTy"instruction",
14852           Call
14853             ("ADDIU",CTy"ArithI",
14854              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14855        Call
14856          ("form4",F32,
14857           TP[LW(9,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14858       (Call
14859          ("ArithI",CTy"instruction",
14860           Call
14861             ("SLTI",CTy"ArithI",
14862              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14863        Call
14864          ("form4",F32,
14865           TP[LW(10,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14866       (Call
14867          ("ArithI",CTy"instruction",
14868           Call
14869             ("SLTIU",CTy"ArithI",
14870              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14871        Call
14872          ("form4",F32,
14873           TP[LW(11,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14874       (Call
14875          ("ArithI",CTy"instruction",
14876           Call
14877             ("ANDI",CTy"ArithI",
14878              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14879        Call
14880          ("form4",F32,
14881           TP[LW(12,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14882       (Call
14883          ("ArithI",CTy"instruction",
14884           Call
14885             ("ORI",CTy"ArithI",
14886              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14887        Call
14888          ("form4",F32,
14889           TP[LW(13,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14890       (Call
14891          ("ArithI",CTy"instruction",
14892           Call
14893             ("XORI",CTy"ArithI",
14894              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14895        Call
14896          ("form4",F32,
14897           TP[LW(14,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14898       (Call
14899          ("ArithI",CTy"instruction",
14900           Call("LUI",CTy"ArithI",TP[Var("rt",FTy 5),Var("imm",F16)])),
14901        Call
14902          ("form4",F32,TP[LW(15,6),LW(0,5),Var("rt",FTy 5),Var("imm",F16)])),
14903       (Call
14904          ("Branch",CTy"instruction",
14905           Call
14906             ("BEQL",CTy"Branch",
14907              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14908        Call
14909          ("form4",F32,
14910           TP[LW(20,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14911       (Call
14912          ("Branch",CTy"instruction",
14913           Call
14914             ("BNEL",CTy"Branch",
14915              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14916        Call
14917          ("form4",F32,
14918           TP[LW(21,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14919       (Call
14920          ("Branch",CTy"instruction",
14921           Call("BLEZL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
14922        Call
14923          ("form4",F32,TP[LW(22,6),Var("rs",FTy 5),LW(0,5),Var("imm",F16)])),
14924       (Call
14925          ("Branch",CTy"instruction",
14926           Call("BGTZL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])),
14927        Call
14928          ("form4",F32,TP[LW(23,6),Var("rs",FTy 5),LW(0,5),Var("imm",F16)])),
14929       (Call
14930          ("ArithI",CTy"instruction",
14931           Call
14932             ("DADDI",CTy"ArithI",
14933              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14934        Call
14935          ("form4",F32,
14936           TP[LW(24,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14937       (Call
14938          ("ArithI",CTy"instruction",
14939           Call
14940             ("DADDIU",CTy"ArithI",
14941              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14942        Call
14943          ("form4",F32,
14944           TP[LW(25,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14945       (Call
14946          ("Load",CTy"instruction",
14947           Call
14948             ("LDL",CTy"Load",
14949              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14950        Call
14951          ("form4",F32,
14952           TP[LW(26,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14953       (Call
14954          ("Load",CTy"instruction",
14955           Call
14956             ("LDR",CTy"Load",
14957              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14958        Call
14959          ("form4",F32,
14960           TP[LW(27,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14961       (Call
14962          ("Load",CTy"instruction",
14963           Call
14964             ("LB",CTy"Load",
14965              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14966        Call
14967          ("form4",F32,
14968           TP[LW(32,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14969       (Call
14970          ("Load",CTy"instruction",
14971           Call
14972             ("LH",CTy"Load",
14973              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14974        Call
14975          ("form4",F32,
14976           TP[LW(33,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14977       (Call
14978          ("Load",CTy"instruction",
14979           Call
14980             ("LWL",CTy"Load",
14981              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14982        Call
14983          ("form4",F32,
14984           TP[LW(34,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14985       (Call
14986          ("Load",CTy"instruction",
14987           Call
14988             ("LW",CTy"Load",
14989              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14990        Call
14991          ("form4",F32,
14992           TP[LW(35,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14993       (Call
14994          ("Load",CTy"instruction",
14995           Call
14996             ("LBU",CTy"Load",
14997              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
14998        Call
14999          ("form4",F32,
15000           TP[LW(36,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15001       (Call
15002          ("Load",CTy"instruction",
15003           Call
15004             ("LHU",CTy"Load",
15005              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15006        Call
15007          ("form4",F32,
15008           TP[LW(37,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15009       (Call
15010          ("Load",CTy"instruction",
15011           Call
15012             ("LWR",CTy"Load",
15013              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15014        Call
15015          ("form4",F32,
15016           TP[LW(38,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15017       (Call
15018          ("Load",CTy"instruction",
15019           Call
15020             ("LWU",CTy"Load",
15021              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15022        Call
15023          ("form4",F32,
15024           TP[LW(39,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15025       (Call
15026          ("Store",CTy"instruction",
15027           Call
15028             ("SB",CTy"Store",
15029              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15030        Call
15031          ("form4",F32,
15032           TP[LW(40,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15033       (Call
15034          ("Store",CTy"instruction",
15035           Call
15036             ("SH",CTy"Store",
15037              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15038        Call
15039          ("form4",F32,
15040           TP[LW(41,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15041       (Call
15042          ("Store",CTy"instruction",
15043           Call
15044             ("SWL",CTy"Store",
15045              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15046        Call
15047          ("form4",F32,
15048           TP[LW(42,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15049       (Call
15050          ("Store",CTy"instruction",
15051           Call
15052             ("SW",CTy"Store",
15053              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15054        Call
15055          ("form4",F32,
15056           TP[LW(43,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15057       (Call
15058          ("Store",CTy"instruction",
15059           Call
15060             ("SDL",CTy"Store",
15061              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15062        Call
15063          ("form4",F32,
15064           TP[LW(44,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15065       (Call
15066          ("Store",CTy"instruction",
15067           Call
15068             ("SDR",CTy"Store",
15069              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15070        Call
15071          ("form4",F32,
15072           TP[LW(45,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15073       (Call
15074          ("Store",CTy"instruction",
15075           Call
15076             ("SWR",CTy"Store",
15077              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15078        Call
15079          ("form4",F32,
15080           TP[LW(46,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15081       (Call
15082          ("Load",CTy"instruction",
15083           Call
15084             ("LL",CTy"Load",
15085              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15086        Call
15087          ("form4",F32,
15088           TP[LW(48,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15089       (Call
15090          ("Load",CTy"instruction",
15091           Call
15092             ("LLD",CTy"Load",
15093              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15094        Call
15095          ("form4",F32,
15096           TP[LW(52,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15097       (Call
15098          ("Load",CTy"instruction",
15099           Call
15100             ("LD",CTy"Load",
15101              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15102        Call
15103          ("form4",F32,
15104           TP[LW(55,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15105       (Call
15106          ("Store",CTy"instruction",
15107           Call
15108             ("SC",CTy"Store",
15109              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15110        Call
15111          ("form4",F32,
15112           TP[LW(56,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15113       (Call
15114          ("Store",CTy"instruction",
15115           Call
15116             ("SCD",CTy"Store",
15117              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15118        Call
15119          ("form4",F32,
15120           TP[LW(60,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15121       (Call
15122          ("Store",CTy"instruction",
15123           Call
15124             ("SD",CTy"Store",
15125              TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15126        Call
15127          ("form4",F32,
15128           TP[LW(63,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])),
15129       (Call
15130          ("CACHE",CTy"instruction",
15131           TP[Var("rs",FTy 5),Var("opn",FTy 5),Var("imm",F16)]),
15132        Call
15133          ("form4",F32,
15134           TP[LW(47,6),Var("rs",FTy 5),Var("opn",FTy 5),Var("imm",F16)])),
15135       (Const("SYSCALL",CTy"instruction"),Mop(Cast F32,LW(12,6))),
15136       (Const("BREAK",CTy"instruction"),Mop(Cast F32,LW(13,6))),
15137       (Call("SYNC",CTy"instruction",Var("imm5",FTy 5)),
15138        Mop(Cast F32,CC[Var("imm5",FTy 5),LW(15,6)])),
15139       (Const("TLBR",CTy"instruction"),LW(1107296257,32)),
15140       (Const("TLBWI",CTy"instruction"),LW(1107296258,32)),
15141       (Const("TLBWR",CTy"instruction"),LW(1107296262,32)),
15142       (Const("TLBP",CTy"instruction"),LW(1107296264,32)),
15143       (Const("ERET",CTy"instruction"),LW(1107296280,32)),
15144       (Call("RDHWR",CTy"instruction",TP[Var("rt",FTy 5),Var("rd",FTy 5)]),
15145        Call("form6",F32,TP[Var("rt",FTy 5),Var("rd",FTy 5),LW(59,6)])),
15146       (Const("WAIT",CTy"instruction"),LW(1107296288,32)),
15147       (Const("Unpredictable",CTy"instruction"),LW(133169152,32)),
15148       (Call("COP1",CTy"instruction",Var("j",CTy"COP1")),
15149        Call("COP1Encode",F32,Var("j",CTy"COP1"))),
15150       (Const("ReservedInstruction",CTy"instruction"),LW(0,32))]))
15151
15152val () = Import.finish 0