(* cheriScript.sml - generated by L3 - Mon Oct 16 11:55:39 2017 *) open HolKernel boolLib bossLib Import val () = Import.start "cheri" val _ = Record ("EntryLo", [("C",FTy 3),("D",bTy),("G",bTy),("L",bTy),("PFN",FTy 28),("S",bTy), ("V",bTy),("entrylo'rst",FTy 28)]) ; val _ = Record ("TLBEntry", [("ASID",F8),("C0",FTy 3),("C1",FTy 3),("D0",bTy),("D1",bTy),("G",bTy), ("L0",bTy),("L1",bTy),("Mask",FTy 12),("PFN0",FTy 28),("PFN1",FTy 28), ("R",FTy 2),("S0",bTy),("S1",bTy),("V0",bTy),("V1",bTy), ("VPN2",FTy 27)]) ; val _ = Construct [("AccessType",[("LOAD",[]),("STORE",[])])] ; val _ = Record ("Index",[("Index",FTy 9),("P",bTy),("index'rst",FTy 22)]) ; val _ = Record ("Random",[("Random",F8),("random'rst",FTy 24)]) ; val _ = Record ("Wired",[("Wired",F8),("wired'rst",FTy 24)]) ; val _ = Record ("PageMask",[("Mask",FTy 12),("pagemask'rst",FTy 20)]) ; val _ = Record ("EntryHi", [("ASID",F8),("R",FTy 2),("VPN2",FTy 27),("entryhi'rst",FTy 27)]) ; val _ = Record ("StatusRegister", [("BEV",bTy),("CU0",bTy),("CU1",bTy),("CU2",bTy),("CU3",bTy), ("ERL",bTy),("EXL",bTy),("FR",bTy),("IE",bTy),("IM",F8),("KSU",FTy 2), ("KX",bTy),("RE",bTy),("SX",bTy),("UX",bTy), ("statusregister'rst",FTy 9)]) ; val _ = Record ("ConfigRegister", [("AR",FTy 3),("AT",FTy 2),("BE",bTy),("K0",FTy 3),("M",bTy), ("MT",FTy 3),("configregister'rst",FTy 19)]) ; val _ = Record ("ConfigRegister1", [("C2",bTy),("CA",bTy),("DA",FTy 3),("DL",FTy 3),("DS",FTy 3), ("EP",bTy),("FP",bTy),("IA",FTy 3),("IL",FTy 3),("IS",FTy 3), ("M",bTy),("MD",bTy),("MMUSize",FTy 6),("PCR",bTy),("WR",bTy)]) ; val _ = Record ("ConfigRegister2", [("M",bTy),("SA",F4),("SL",F4),("SS",F4),("SU",F4),("TA",F4),("TL",F4), ("TS",F4),("TU",FTy 3)]) ; val _ = Record ("ConfigRegister3", [("DSPP",bTy),("LPA",bTy),("M",bTy),("MT",bTy),("SM",bTy),("SP",bTy), ("TL",bTy),("ULRI",bTy),("VEIC",bTy),("VInt",bTy), ("configregister3'rst",FTy 22)]) ; val _ = Record ("ConfigRegister6", [("LTLB",bTy),("TLBSize",F16),("configregister6'rst",FTy 15)]) ; val _ = Record ("CauseRegister", [("BD",bTy),("CE",FTy 2),("ExcCode",FTy 5),("IP",F8),("TI",bTy), ("causeregister'rst",FTy 15)]) ; val _ = Record ("Context",[("BadVPN2",FTy 19),("PTEBase",FTy 41),("context'rst",F4)]) ; val _ = Record ("XContext", [("BadVPN2",FTy 27),("PTEBase",FTy 31),("R",FTy 2),("xcontext'rst",F4)]) ; val _ = Record ("HWREna", [("CC",bTy),("CCRes",bTy),("CPUNum",bTy),("DS",bTy),("KS",bTy), ("RS",bTy),("UL",bTy),("hwrena'rst",FTy 25)]) ; val _ = Record ("CP0", [("BadVAddr",F64),("Cause",CTy"CauseRegister"),("Compare",F32), ("Config",CTy"ConfigRegister"),("Config1",CTy"ConfigRegister1"), ("Config2",CTy"ConfigRegister2"),("Config3",CTy"ConfigRegister3"), ("Config6",CTy"ConfigRegister6"),("Context",CTy"Context"), ("Count",F32),("Debug",F32),("EInstr",F32),("EPC",F64), ("EntryHi",CTy"EntryHi"),("EntryLo0",CTy"EntryLo"), ("EntryLo1",CTy"EntryLo"),("ErrCtl",F32),("ErrorEPC",F64), ("HWREna",CTy"HWREna"),("Index",CTy"Index"),("LLAddr",F64), ("PRId",F32),("PageMask",CTy"PageMask"),("Random",CTy"Random"), ("Status",CTy"StatusRegister"),("UsrLocal",F64),("Wired",CTy"Wired"), ("XContext",CTy"XContext")]) ; val _ = Record ("CoreStats",[("branch_not_taken",nTy),("branch_taken",nTy)]) ; val _ = Record ("procState", [("c_BranchDelay",OTy F64),("c_BranchTo",OTy F64),("c_CP0",CTy"CP0"), ("c_CoreStats",CTy"CoreStats"),("c_LLbit",OTy bTy),("c_PC",F64), ("c_exceptionSignalled",bTy),("c_hi",OTy F64),("c_lo",OTy F64)]) ; val _ = Record ("UPerms",[("Reserved",FTy 28),("soft",F4)]) ; val _ = Record ("Perms", [("Access_System_Registers",bTy),("Global",bTy),("Permit_CCall",bTy), ("Permit_Execute",bTy),("Permit_Load",bTy), ("Permit_Load_Capability",bTy),("Permit_Seal",bTy), ("Permit_Store",bTy),("Permit_Store_Capability",bTy), ("Permit_Store_Local_Capability",bTy),("Reserved",FTy 22)]) ; val _ = Record ("Capability", [("base",F64),("cursor",F64),("length",F64),("otype",FTy 24), ("perms",FTy 15),("reserved",F8),("sealed",bTy),("tag",bTy), ("uperms",F16)]) ; val _ = Record ("CapCause",[("ExcCode",F8),("RegNum",F8)]) ; val _ = Construct [("ExceptionType", [("Int",[]),("Mod",[]),("TLBL",[]),("TLBS",[]),("AdEL",[]), ("AdES",[]),("Sys",[]),("Bp",[]),("ResI",[]),("CpU",[]),("Ov",[]), ("Tr",[]),("CTLBL",[]),("CTLBS",[]),("C2E",[]),("MCheck",[]), ("XTLBRefillL",[]),("XTLBRefillS",[])])] ; val _ = Construct [("CapExceptionType", [("capExcNone",[]),("capExcLength",[]),("capExcTag",[]), ("capExcSeal",[]),("capExcType",[]),("capExcCall",[]), ("capExcRet",[]),("capExcUnderflowTSS",[]),("capExcUser",[]), ("capExcTLBNoStore",[]),("capExcInexact",[]),("capExcGlobal",[]), ("capExcPermExe",[]),("capExcPermLoad",[]),("capExcPermStore",[]), ("capExcPermLoadCap",[]),("capExcPermStoreCap",[]), ("capExcPermStoreLocalCap",[]),("capExcPermSeal",[]), ("capExcAccessSysReg",[]),("capExcPermCCall",[])])] ; val _ = Construct [("DataType",[("Cap",[CTy"Capability"]),("Raw",[FTy 256])])] ; val _ = Record ("FCSR", [("ABS2008",bTy),("CauseE",bTy),("CauseI",bTy),("CauseO",bTy), ("CauseU",bTy),("CauseV",bTy),("CauseZ",bTy),("EnableI",bTy), ("EnableO",bTy),("EnableU",bTy),("EnableV",bTy),("EnableZ",bTy), ("FCC",F8),("FS",bTy),("FlagI",bTy),("FlagO",bTy),("FlagU",bTy), ("FlagV",bTy),("FlagZ",bTy),("NAN2008",bTy),("RM",FTy 2), ("fcsr'rst",FTy 3)]) ; val _ = Record ("FIR", [("ASE",bTy),("D",bTy),("F64",bTy),("L",bTy),("PS",bTy),("PrID",F8), ("Rev",F8),("S",bTy),("W",bTy),("fir'rst",FTy 9)]) ; val _ = Construct [("Branch", [("BEQ",[PTy(FTy 5,PTy(FTy 5,F16))]), ("BEQL",[PTy(FTy 5,PTy(FTy 5,F16))]),("BGEZ",[PTy(FTy 5,F16)]), ("BGEZAL",[PTy(FTy 5,F16)]),("BGEZALL",[PTy(FTy 5,F16)]), ("BGEZL",[PTy(FTy 5,F16)]),("BGTZ",[PTy(FTy 5,F16)]), ("BGTZL",[PTy(FTy 5,F16)]),("BLEZ",[PTy(FTy 5,F16)]), ("BLEZL",[PTy(FTy 5,F16)]),("BLTZ",[PTy(FTy 5,F16)]), ("BLTZAL",[PTy(FTy 5,F16)]),("BLTZALL",[PTy(FTy 5,F16)]), ("BLTZL",[PTy(FTy 5,F16)]),("BNE",[PTy(FTy 5,PTy(FTy 5,F16))]), ("BNEL",[PTy(FTy 5,PTy(FTy 5,F16))]),("J",[FTy 26]),("JAL",[FTy 26]), ("JALR",[PTy(FTy 5,FTy 5)]),("JR",[FTy 5])])] ; val _ = Construct [("CP", [("DMFC0",[PTy(FTy 5,PTy(FTy 5,FTy 3))]), ("DMTC0",[PTy(FTy 5,PTy(FTy 5,FTy 3))]), ("MFC0",[PTy(FTy 5,PTy(FTy 5,FTy 3))]), ("MTC0",[PTy(FTy 5,PTy(FTy 5,FTy 3))])])] ; val _ = Construct [("Store", [("SB",[PTy(FTy 5,PTy(FTy 5,F16))]), ("SC",[PTy(FTy 5,PTy(FTy 5,F16))]), ("SCD",[PTy(FTy 5,PTy(FTy 5,F16))]), ("SD",[PTy(FTy 5,PTy(FTy 5,F16))]), ("SDL",[PTy(FTy 5,PTy(FTy 5,F16))]), ("SDR",[PTy(FTy 5,PTy(FTy 5,F16))]), ("SH",[PTy(FTy 5,PTy(FTy 5,F16))]), ("SW",[PTy(FTy 5,PTy(FTy 5,F16))]), ("SWL",[PTy(FTy 5,PTy(FTy 5,F16))]), ("SWR",[PTy(FTy 5,PTy(FTy 5,F16))])])] ; val _ = Construct [("Load", [("LB",[PTy(FTy 5,PTy(FTy 5,F16))]), ("LBU",[PTy(FTy 5,PTy(FTy 5,F16))]), ("LD",[PTy(FTy 5,PTy(FTy 5,F16))]), ("LDL",[PTy(FTy 5,PTy(FTy 5,F16))]), ("LDR",[PTy(FTy 5,PTy(FTy 5,F16))]), ("LH",[PTy(FTy 5,PTy(FTy 5,F16))]), ("LHU",[PTy(FTy 5,PTy(FTy 5,F16))]), ("LL",[PTy(FTy 5,PTy(FTy 5,F16))]), ("LLD",[PTy(FTy 5,PTy(FTy 5,F16))]), ("LW",[PTy(FTy 5,PTy(FTy 5,F16))]), ("LWL",[PTy(FTy 5,PTy(FTy 5,F16))]), ("LWR",[PTy(FTy 5,PTy(FTy 5,F16))]), ("LWU",[PTy(FTy 5,PTy(FTy 5,F16))])])] ; val _ = Construct [("Trap", [("TEQ",[PTy(FTy 5,FTy 5)]),("TEQI",[PTy(FTy 5,F16)]), ("TGE",[PTy(FTy 5,FTy 5)]),("TGEI",[PTy(FTy 5,F16)]), ("TGEIU",[PTy(FTy 5,F16)]),("TGEU",[PTy(FTy 5,FTy 5)]), ("TLT",[PTy(FTy 5,FTy 5)]),("TLTI",[PTy(FTy 5,F16)]), ("TLTIU",[PTy(FTy 5,F16)]),("TLTU",[PTy(FTy 5,FTy 5)]), ("TNE",[PTy(FTy 5,FTy 5)]),("TNEI",[PTy(FTy 5,F16)])])] ; val _ = Construct [("Shift", [("DSLL",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("DSLL32",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("DSLLV",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("DSRA",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("DSRA32",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("DSRAV",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("DSRL",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("DSRL32",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("DSRLV",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("SLL",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("SLLV",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("SRA",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("SRAV",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("SRL",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("SRLV",[PTy(FTy 5,PTy(FTy 5,FTy 5))])])] ; val _ = Construct [("MultDiv", [("DDIV",[PTy(FTy 5,FTy 5)]),("DDIVU",[PTy(FTy 5,FTy 5)]), ("DIV",[PTy(FTy 5,FTy 5)]),("DIVU",[PTy(FTy 5,FTy 5)]), ("DMULT",[PTy(FTy 5,FTy 5)]),("DMULTU",[PTy(FTy 5,FTy 5)]), ("MADD",[PTy(FTy 5,FTy 5)]),("MADDU",[PTy(FTy 5,FTy 5)]), ("MFHI",[FTy 5]),("MFLO",[FTy 5]),("MSUB",[PTy(FTy 5,FTy 5)]), ("MSUBU",[PTy(FTy 5,FTy 5)]),("MTHI",[FTy 5]),("MTLO",[FTy 5]), ("MUL",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),("MULT",[PTy(FTy 5,FTy 5)]), ("MULTU",[PTy(FTy 5,FTy 5)])])] ; val _ = Construct [("ArithR", [("ADD",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("ADDU",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("AND",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("DADD",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("DADDU",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("DSUB",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("DSUBU",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("MOVN",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("MOVZ",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("NOR",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("OR",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("SLT",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("SLTU",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("SUB",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("SUBU",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("XOR",[PTy(FTy 5,PTy(FTy 5,FTy 5))])])] ; val _ = Construct [("ArithI", [("ADDI",[PTy(FTy 5,PTy(FTy 5,F16))]), ("ADDIU",[PTy(FTy 5,PTy(FTy 5,F16))]), ("ANDI",[PTy(FTy 5,PTy(FTy 5,F16))]), ("DADDI",[PTy(FTy 5,PTy(FTy 5,F16))]), ("DADDIU",[PTy(FTy 5,PTy(FTy 5,F16))]),("LUI",[PTy(FTy 5,F16)]), ("ORI",[PTy(FTy 5,PTy(FTy 5,F16))]), ("SLTI",[PTy(FTy 5,PTy(FTy 5,F16))]), ("SLTIU",[PTy(FTy 5,PTy(FTy 5,F16))]), ("XORI",[PTy(FTy 5,PTy(FTy 5,F16))])])] ; val _ = Construct [("CGet", [("CGetBase",[PTy(FTy 5,FTy 5)]),("CGetCause",[FTy 5]), ("CGetLen",[PTy(FTy 5,FTy 5)]),("CGetOffset",[PTy(FTy 5,FTy 5)]), ("CGetPCC",[FTy 5]),("CGetPCCSetOffset",[PTy(FTy 5,FTy 5)]), ("CGetPerm",[PTy(FTy 5,FTy 5)]),("CGetSealed",[PTy(FTy 5,FTy 5)]), ("CGetTag",[PTy(FTy 5,FTy 5)]),("CGetType",[PTy(FTy 5,FTy 5)]), ("CToPtr",[PTy(FTy 5,PTy(FTy 5,FTy 5))])])] ; val _ = Construct [("CSet", [("CAndPerm",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("CClearRegs",[PTy(FTy 5,F16)]),("CClearTag",[PTy(FTy 5,FTy 5)]), ("CFromPtr",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("CIncOffset",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("CIncOffsetImmediate",[PTy(FTy 5,PTy(FTy 5,FTy 11))]), ("CSetBounds",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("CSetBoundsExact",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("CSetBoundsImmediate",[PTy(FTy 5,PTy(FTy 5,FTy 11))]), ("CSetCause",[FTy 5]),("CSetOffset",[PTy(FTy 5,PTy(FTy 5,FTy 5))])])] ; val _ = Construct [("CCheck", [("CCheckPerm",[PTy(FTy 5,FTy 5)]),("CCheckType",[PTy(FTy 5,FTy 5)])])] ; val _ = Construct [("CHERICOP2", [("CBTS",[PTy(FTy 5,F16)]),("CBTU",[PTy(FTy 5,F16)]), ("CCall0",[PTy(FTy 5,FTy 5)]),("CCall1",[PTy(FTy 5,FTy 5)]), ("CCheck",[CTy"CCheck"]),("CGet",[CTy"CGet"]), ("CJALR",[PTy(FTy 5,FTy 5)]),("CJR",[FTy 5]), ("CLLC",[PTy(FTy 5,FTy 5)]),("CLLx",[PTy(FTy 5,PTy(FTy 5,FTy 3))]), ("CMOVN",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("CMOVZ",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("CPtrCmp",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 3)))]),("CReturn",[]), ("CSCC",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("CSCx",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 2)))]), ("CSeal",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),("CSet",[CTy"CSet"]), ("CSub",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("CUnseal",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),("DumpCapReg",[]), ("UnknownCapInstruction",[])])] ; val _ = Construct [("COP2",[("CHERICOP2",[CTy"CHERICOP2"])])] ; val _ = Construct [("CHERISWC2", [("CStore",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,PTy(F8,FTy 2))))])])] ; val _ = Construct [("SWC2",[("CHERISWC2",[CTy"CHERISWC2"])])] ; val _ = Construct [("CHERILWC2", [("CLoad",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,PTy(F8,PTy(F1,FTy 2)))))])])] ; val _ = Construct [("LWC2",[("CHERILWC2",[CTy"CHERILWC2"])])] ; val _ = Construct [("CHERILDC2",[("CLC",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 11)))])])] ; val _ = Construct [("LDC2",[("CHERILDC2",[CTy"CHERILDC2"])])] ; val _ = Construct [("CHERISDC2",[("CSC",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 11)))])])] ; val _ = Construct [("SDC2",[("CHERISDC2",[CTy"CHERISDC2"])])] ; val _ = Construct [("COP1", [("ABS_D",[PTy(FTy 5,FTy 5)]),("ABS_S",[PTy(FTy 5,FTy 5)]), ("ADD_D",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("ADD_S",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),("BC1F",[PTy(F16,FTy 3)]), ("BC1FL",[PTy(F16,FTy 3)]),("BC1T",[PTy(F16,FTy 3)]), ("BC1TL",[PTy(F16,FTy 3)]),("CEIL_L_D",[PTy(FTy 5,FTy 5)]), ("CEIL_L_S",[PTy(FTy 5,FTy 5)]),("CEIL_W_D",[PTy(FTy 5,FTy 5)]), ("CEIL_W_S",[PTy(FTy 5,FTy 5)]),("CFC1",[PTy(FTy 5,FTy 5)]), ("CTC1",[PTy(FTy 5,FTy 5)]),("CVT_D_L",[PTy(FTy 5,FTy 5)]), ("CVT_D_S",[PTy(FTy 5,FTy 5)]),("CVT_D_W",[PTy(FTy 5,FTy 5)]), ("CVT_L_D",[PTy(FTy 5,FTy 5)]),("CVT_L_S",[PTy(FTy 5,FTy 5)]), ("CVT_S_D",[PTy(FTy 5,FTy 5)]),("CVT_S_L",[PTy(FTy 5,FTy 5)]), ("CVT_S_W",[PTy(FTy 5,FTy 5)]),("CVT_W_D",[PTy(FTy 5,FTy 5)]), ("CVT_W_S",[PTy(FTy 5,FTy 5)]), ("C_cond_D",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 3,FTy 3)))]), ("C_cond_S",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 3,FTy 3)))]), ("DIV_D",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("DIV_S",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),("DMFC1",[PTy(FTy 5,FTy 5)]), ("DMTC1",[PTy(FTy 5,FTy 5)]),("FLOOR_L_D",[PTy(FTy 5,FTy 5)]), ("FLOOR_L_S",[PTy(FTy 5,FTy 5)]),("FLOOR_W_D",[PTy(FTy 5,FTy 5)]), ("FLOOR_W_S",[PTy(FTy 5,FTy 5)]), ("LDC1",[PTy(FTy 5,PTy(F16,FTy 5))]), ("LDXC1",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("LWC1",[PTy(FTy 5,PTy(F16,FTy 5))]), ("LWXC1",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("MADD_D",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5)))]), ("MADD_S",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5)))]), ("MFC1",[PTy(FTy 5,FTy 5)]),("MOVF",[PTy(FTy 5,PTy(FTy 5,FTy 3))]), ("MOVF_D",[PTy(FTy 5,PTy(FTy 5,FTy 3))]), ("MOVF_S",[PTy(FTy 5,PTy(FTy 5,FTy 3))]), ("MOVN_D",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("MOVN_S",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("MOVT",[PTy(FTy 5,PTy(FTy 5,FTy 3))]), ("MOVT_D",[PTy(FTy 5,PTy(FTy 5,FTy 3))]), ("MOVT_S",[PTy(FTy 5,PTy(FTy 5,FTy 3))]), ("MOVZ_D",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("MOVZ_S",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("MOV_D",[PTy(FTy 5,FTy 5)]),("MOV_S",[PTy(FTy 5,FTy 5)]), ("MSUB_D",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5)))]), ("MSUB_S",[PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5)))]), ("MTC1",[PTy(FTy 5,FTy 5)]),("MUL_D",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("MUL_S",[PTy(FTy 5,PTy(FTy 5,FTy 5))]),("NEG_D",[PTy(FTy 5,FTy 5)]), ("NEG_S",[PTy(FTy 5,FTy 5)]),("ROUND_L_D",[PTy(FTy 5,FTy 5)]), ("ROUND_L_S",[PTy(FTy 5,FTy 5)]),("ROUND_W_D",[PTy(FTy 5,FTy 5)]), ("ROUND_W_S",[PTy(FTy 5,FTy 5)]), ("SDC1",[PTy(FTy 5,PTy(F16,FTy 5))]), ("SDXC1",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("SQRT_D",[PTy(FTy 5,FTy 5)]),("SQRT_S",[PTy(FTy 5,FTy 5)]), ("SUB_D",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("SUB_S",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("SWC1",[PTy(FTy 5,PTy(F16,FTy 5))]), ("SWXC1",[PTy(FTy 5,PTy(FTy 5,FTy 5))]), ("TRUNC_L_D",[PTy(FTy 5,FTy 5)]),("TRUNC_L_S",[PTy(FTy 5,FTy 5)]), ("TRUNC_W_D",[PTy(FTy 5,FTy 5)]),("TRUNC_W_S",[PTy(FTy 5,FTy 5)]), ("UnknownFPInstruction",[])])] ; val _ = Construct [("instruction", [("ArithI",[CTy"ArithI"]),("ArithR",[CTy"ArithR"]),("BREAK",[]), ("Branch",[CTy"Branch"]),("CACHE",[PTy(FTy 5,PTy(FTy 5,F16))]), ("COP1",[CTy"COP1"]),("COP2",[CTy"COP2"]),("CP",[CTy"CP"]), ("ERET",[]),("LDC2",[CTy"LDC2"]),("LWC2",[CTy"LWC2"]), ("Load",[CTy"Load"]),("MultDiv",[CTy"MultDiv"]), ("RDHWR",[PTy(FTy 5,FTy 5)]),("ReservedInstruction",[]), ("SDC2",[CTy"SDC2"]),("SWC2",[CTy"SWC2"]),("SYNC",[FTy 5]), ("SYSCALL",[]),("Shift",[CTy"Shift"]),("Store",[CTy"Store"]), ("TLBP",[]),("TLBR",[]),("TLBWI",[]),("TLBWR",[]), ("Trap",[CTy"Trap"]),("Unpredictable",[]),("WAIT",[])])] ; val _ = Construct [("exception",[("NoException",[]),("UNPREDICTABLE",[sTy])])] ; val _ = Record ("cheri_state", [("BranchDelayPCC",OTy(PTy(F64,CTy"Capability"))), ("BranchToPCC",OTy(PTy(F64,CTy"Capability"))),("CCallBranch",bTy), ("CCallBranchDelay",bTy),("UNPREDICTABLE_HI",ATy(uTy,uTy)), ("UNPREDICTABLE_LO",ATy(uTy,uTy)),("UNPREDICTABLE_TLB",ATy(uTy,uTy)), ("all_BranchDelayPCC",ATy(F8,OTy(PTy(F64,CTy"Capability")))), ("all_BranchToPCC",ATy(F8,OTy(PTy(F64,CTy"Capability")))), ("all_CCallBranch",ATy(F8,bTy)),("all_CCallBranchDelay",ATy(F8,bTy)), ("all_TLB_assoc",ATy(F8,ATy(F4,OTy(CTy"TLBEntry")))), ("all_TLB_direct",ATy(F8,ATy(F8,OTy(CTy"TLBEntry")))), ("all_capcause",ATy(F8,CTy"CapCause")), ("all_capr",ATy(F8,ATy(FTy 5,CTy"Capability"))), ("all_gpr",ATy(F8,ATy(FTy 5,F64))), ("all_pcc",ATy(F8,CTy"Capability")), ("all_state",ATy(F8,CTy"procState")), ("c_TLB_assoc",ATy(F4,OTy(CTy"TLBEntry"))), ("c_TLB_direct",ATy(F8,OTy(CTy"TLBEntry"))), ("c_capr",ATy(FTy 5,CTy"Capability")),("c_gpr",ATy(FTy 5,F64)), ("c_pcc",CTy"Capability"),("c_state",CTy"procState"), ("capcause",CTy"CapCause"),("csv_stats_header_done",bTy), ("currentInst",OTy F32),("done",bTy),("exception",CTy"exception"), ("fcsr",CTy"FCSR"),("fgr",ATy(FTy 5,F64)),("fir",CTy"FIR"), ("instCnt",nTy),("log",ATy(nTy,sTy)), ("mem",ATy(FTy 35,CTy"DataType")),("print",ATy(sTy,uTy)), ("procID",F8),("totalCore",nTy),("trace_level",nTy), ("unknown_counters",ATy(sTy,nTy)),("watchOOBCap",bTy), ("watchPaddr",OTy(FTy 40)),("watcher",sTy)]) ; val qTy = CTy "cheri_state"; fun qVar v = Term.mk_var (v, ParseDatatype.pretypeToType qTy); val raise'exception_def = Def ("raise'exception",Var("e",CTy"exception"), Close (qVar"state", TP[LX(VTy"a"), ITE(EQ(Dest("exception",CTy"exception",qVar"state"), Const("NoException",CTy"exception")), Rupd("exception",TP[qVar"state",Var("e",CTy"exception")]), qVar"state")])) ; val rec'EntryLo_def = Def ("rec'EntryLo",Var("x",F64), Rec(CTy"EntryLo", [EX(Var("x",F64),LN 5,LN 3,FTy 3),Bop(Bit,Var("x",F64),LN 2), Bop(Bit,Var("x",F64),LN 0),Bop(Bit,Var("x",F64),LN 62), EX(Var("x",F64),LN 33,LN 6,FTy 28),Bop(Bit,Var("x",F64),LN 63), Bop(Bit,Var("x",F64),LN 1),EX(Var("x",F64),LN 61,LN 34,FTy 28)])) ; val reg'EntryLo_def = Def ("reg'EntryLo",Var("x",CTy"EntryLo"), CS(Var("x",CTy"EntryLo"), [(Rec(CTy"EntryLo", [Var("C",FTy 3),bVar"D",bVar"G",bVar"L",Var("PFN",FTy 28), bVar"S",bVar"V",Var("entrylo'rst",FTy 28)]), CC[Mop(Cast F1,bVar"S"),Mop(Cast F1,bVar"L"), Var("entrylo'rst",FTy 28),Var("PFN",FTy 28),Var("C",FTy 3), Mop(Cast F1,bVar"D"),Mop(Cast F1,bVar"V"),Mop(Cast F1,bVar"G")])])) ; val write'rec'EntryLo_def = Def ("write'rec'EntryLo",TP[AVar F64,Var("x",CTy"EntryLo")], Call("reg'EntryLo",F64,Var("x",CTy"EntryLo"))) ; val write'reg'EntryLo_def = Def ("write'reg'EntryLo",TP[AVar(CTy"EntryLo"),Var("x",F64)], Call("rec'EntryLo",CTy"EntryLo",Var("x",F64))) ; val rec'Index_def = Def ("rec'Index",Var("x",F32), Rec(CTy"Index", [EX(Var("x",F32),LN 8,LN 0,FTy 9),Bop(Bit,Var("x",F32),LN 31), EX(Var("x",F32),LN 30,LN 9,FTy 22)])) ; val reg'Index_def = Def ("reg'Index",Var("x",CTy"Index"), CS(Var("x",CTy"Index"), [(Rec(CTy"Index", [Var("Index",FTy 9),bVar"P",Var("index'rst",FTy 22)]), CC[Mop(Cast F1,bVar"P"),Var("index'rst",FTy 22),Var("Index",FTy 9)])])) ; val write'rec'Index_def = Def ("write'rec'Index",TP[AVar F32,Var("x",CTy"Index")], Call("reg'Index",F32,Var("x",CTy"Index"))) ; val write'reg'Index_def = Def ("write'reg'Index",TP[AVar(CTy"Index"),Var("x",F32)], Call("rec'Index",CTy"Index",Var("x",F32))) ; val rec'Random_def = Def ("rec'Random",Var("x",F32), Rec(CTy"Random", [EX(Var("x",F32),LN 7,LN 0,F8),EX(Var("x",F32),LN 31,LN 8,FTy 24)])) ; val reg'Random_def = Def ("reg'Random",Var("x",CTy"Random"), CS(Var("x",CTy"Random"), [(Rec(CTy"Random",[Var("Random",F8),Var("random'rst",FTy 24)]), CC[Var("random'rst",FTy 24),Var("Random",F8)])])) ; val write'rec'Random_def = Def ("write'rec'Random",TP[AVar F32,Var("x",CTy"Random")], Call("reg'Random",F32,Var("x",CTy"Random"))) ; val write'reg'Random_def = Def ("write'reg'Random",TP[AVar(CTy"Random"),Var("x",F32)], Call("rec'Random",CTy"Random",Var("x",F32))) ; val rec'Wired_def = Def ("rec'Wired",Var("x",F32), Rec(CTy"Wired", [EX(Var("x",F32),LN 7,LN 0,F8),EX(Var("x",F32),LN 31,LN 8,FTy 24)])) ; val reg'Wired_def = Def ("reg'Wired",Var("x",CTy"Wired"), CS(Var("x",CTy"Wired"), [(Rec(CTy"Wired",[Var("Wired",F8),Var("wired'rst",FTy 24)]), CC[Var("wired'rst",FTy 24),Var("Wired",F8)])])) ; val write'rec'Wired_def = Def ("write'rec'Wired",TP[AVar F32,Var("x",CTy"Wired")], Call("reg'Wired",F32,Var("x",CTy"Wired"))) ; val write'reg'Wired_def = Def ("write'reg'Wired",TP[AVar(CTy"Wired"),Var("x",F32)], Call("rec'Wired",CTy"Wired",Var("x",F32))) ; val rec'PageMask_def = Def ("rec'PageMask",Var("x",F32), Rec(CTy"PageMask", [EX(Var("x",F32),LN 24,LN 13,FTy 12), CC[EX(Var("x",F32),LN 12,LN 0,FTy 13), EX(Var("x",F32),LN 31,LN 25,FTy 7)]])) ; val reg'PageMask_def = Def ("reg'PageMask",Var("x",CTy"PageMask"), CS(Var("x",CTy"PageMask"), [(Rec(CTy"PageMask",[Var("Mask",FTy 12),Var("pagemask'rst",FTy 20)]), CC[EX(Var("pagemask'rst",FTy 20),LN 6,LN 0,FTy 7), Var("Mask",FTy 12), EX(Var("pagemask'rst",FTy 20),LN 19,LN 7,FTy 13)])])) ; val write'rec'PageMask_def = Def ("write'rec'PageMask",TP[AVar F32,Var("x",CTy"PageMask")], Call("reg'PageMask",F32,Var("x",CTy"PageMask"))) ; val write'reg'PageMask_def = Def ("write'reg'PageMask",TP[AVar(CTy"PageMask"),Var("x",F32)], Call("rec'PageMask",CTy"PageMask",Var("x",F32))) ; val rec'EntryHi_def = Def ("rec'EntryHi",Var("x",F64), Rec(CTy"EntryHi", [EX(Var("x",F64),LN 7,LN 0,F8),EX(Var("x",F64),LN 63,LN 62,FTy 2), EX(Var("x",F64),LN 39,LN 13,FTy 27), CC[EX(Var("x",F64),LN 12,LN 8,FTy 5), EX(Var("x",F64),LN 61,LN 40,FTy 22)]])) ; val reg'EntryHi_def = Def ("reg'EntryHi",Var("x",CTy"EntryHi"), CS(Var("x",CTy"EntryHi"), [(Rec(CTy"EntryHi", [Var("ASID",F8),Var("R",FTy 2),Var("VPN2",FTy 27), Var("entryhi'rst",FTy 27)]), CC[Var("R",FTy 2),EX(Var("entryhi'rst",FTy 27),LN 21,LN 0,FTy 22), Var("VPN2",FTy 27), EX(Var("entryhi'rst",FTy 27),LN 26,LN 22,FTy 5),Var("ASID",F8)])])) ; val write'rec'EntryHi_def = Def ("write'rec'EntryHi",TP[AVar F64,Var("x",CTy"EntryHi")], Call("reg'EntryHi",F64,Var("x",CTy"EntryHi"))) ; val write'reg'EntryHi_def = Def ("write'reg'EntryHi",TP[AVar(CTy"EntryHi"),Var("x",F64)], Call("rec'EntryHi",CTy"EntryHi",Var("x",F64))) ; val rec'StatusRegister_def = Def ("rec'StatusRegister",Var("x",F32), Rec(CTy"StatusRegister", [Bop(Bit,Var("x",F32),LN 22),Bop(Bit,Var("x",F32),LN 28), Bop(Bit,Var("x",F32),LN 29),Bop(Bit,Var("x",F32),LN 30), Bop(Bit,Var("x",F32),LN 31),Bop(Bit,Var("x",F32),LN 2), Bop(Bit,Var("x",F32),LN 1),Bop(Bit,Var("x",F32),LN 26), Bop(Bit,Var("x",F32),LN 0),EX(Var("x",F32),LN 15,LN 8,F8), EX(Var("x",F32),LN 4,LN 3,FTy 2),Bop(Bit,Var("x",F32),LN 7), Bop(Bit,Var("x",F32),LN 25),Bop(Bit,Var("x",F32),LN 6), Bop(Bit,Var("x",F32),LN 5), CC[EX(Var("x",F32),LN 21,LN 16,FTy 6), EX(Var("x",F32),LN 24,LN 23,FTy 2), EX(Var("x",F32),LN 27,LN 27,F1)]])) ; val reg'StatusRegister_def = Def ("reg'StatusRegister",Var("x",CTy"StatusRegister"), CS(Var("x",CTy"StatusRegister"), [(Rec(CTy"StatusRegister", [bVar"BEV",bVar"CU0",bVar"CU1",bVar"CU2",bVar"CU3",bVar"ERL", bVar"EXL",bVar"FR",bVar"IE",Var("IM",F8),Var("KSU",FTy 2), bVar"KX",bVar"RE",bVar"SX",bVar"UX", Var("statusregister'rst",FTy 9)]), CC[Mop(Cast F1,bVar"CU3"),Mop(Cast F1,bVar"CU2"), Mop(Cast F1,bVar"CU1"),Mop(Cast F1,bVar"CU0"), EX(Var("statusregister'rst",FTy 9),LN 0,LN 0,F1), Mop(Cast F1,bVar"FR"),Mop(Cast F1,bVar"RE"), EX(Var("statusregister'rst",FTy 9),LN 2,LN 1,FTy 2), Mop(Cast F1,bVar"BEV"), EX(Var("statusregister'rst",FTy 9),LN 8,LN 3,FTy 6), Var("IM",F8),Mop(Cast F1,bVar"KX"),Mop(Cast F1,bVar"SX"), Mop(Cast F1,bVar"UX"),Var("KSU",FTy 2),Mop(Cast F1,bVar"ERL"), Mop(Cast F1,bVar"EXL"),Mop(Cast F1,bVar"IE")])])) ; val write'rec'StatusRegister_def = Def ("write'rec'StatusRegister",TP[AVar F32,Var("x",CTy"StatusRegister")], Call("reg'StatusRegister",F32,Var("x",CTy"StatusRegister"))) ; val write'reg'StatusRegister_def = Def ("write'reg'StatusRegister",TP[AVar(CTy"StatusRegister"),Var("x",F32)], Call("rec'StatusRegister",CTy"StatusRegister",Var("x",F32))) ; val rec'ConfigRegister_def = Def ("rec'ConfigRegister",Var("x",F32), Rec(CTy"ConfigRegister", [EX(Var("x",F32),LN 12,LN 10,FTy 3), EX(Var("x",F32),LN 14,LN 13,FTy 2),Bop(Bit,Var("x",F32),LN 15), EX(Var("x",F32),LN 2,LN 0,FTy 3),Bop(Bit,Var("x",F32),LN 31), EX(Var("x",F32),LN 9,LN 7,FTy 3), CC[EX(Var("x",F32),LN 6,LN 3,F4), EX(Var("x",F32),LN 30,LN 16,FTy 15)]])) ; val reg'ConfigRegister_def = Def ("reg'ConfigRegister",Var("x",CTy"ConfigRegister"), CS(Var("x",CTy"ConfigRegister"), [(Rec(CTy"ConfigRegister", [Var("AR",FTy 3),Var("AT",FTy 2),bVar"BE",Var("K0",FTy 3), bVar"M",Var("MT",FTy 3),Var("configregister'rst",FTy 19)]), CC[Mop(Cast F1,bVar"M"), EX(Var("configregister'rst",FTy 19),LN 14,LN 0,FTy 15), Mop(Cast F1,bVar"BE"),Var("AT",FTy 2),Var("AR",FTy 3), Var("MT",FTy 3), EX(Var("configregister'rst",FTy 19),LN 18,LN 15,F4), Var("K0",FTy 3)])])) ; val write'rec'ConfigRegister_def = Def ("write'rec'ConfigRegister",TP[AVar F32,Var("x",CTy"ConfigRegister")], Call("reg'ConfigRegister",F32,Var("x",CTy"ConfigRegister"))) ; val write'reg'ConfigRegister_def = Def ("write'reg'ConfigRegister",TP[AVar(CTy"ConfigRegister"),Var("x",F32)], Call("rec'ConfigRegister",CTy"ConfigRegister",Var("x",F32))) ; val rec'ConfigRegister1_def = Def ("rec'ConfigRegister1",Var("x",F32), Rec(CTy"ConfigRegister1", [Bop(Bit,Var("x",F32),LN 6),Bop(Bit,Var("x",F32),LN 2), EX(Var("x",F32),LN 9,LN 7,FTy 3), EX(Var("x",F32),LN 12,LN 10,FTy 3), EX(Var("x",F32),LN 15,LN 13,FTy 3),Bop(Bit,Var("x",F32),LN 1), Bop(Bit,Var("x",F32),LN 0),EX(Var("x",F32),LN 18,LN 16,FTy 3), EX(Var("x",F32),LN 21,LN 19,FTy 3), EX(Var("x",F32),LN 24,LN 22,FTy 3),Bop(Bit,Var("x",F32),LN 31), Bop(Bit,Var("x",F32),LN 5),EX(Var("x",F32),LN 30,LN 25,FTy 6), Bop(Bit,Var("x",F32),LN 4),Bop(Bit,Var("x",F32),LN 3)])) ; val reg'ConfigRegister1_def = Def ("reg'ConfigRegister1",Var("x",CTy"ConfigRegister1"), CS(Var("x",CTy"ConfigRegister1"), [(Rec(CTy"ConfigRegister1", [bVar"C2",bVar"CA",Var("DA",FTy 3),Var("DL",FTy 3), Var("DS",FTy 3),bVar"EP",bVar"FP",Var("IA",FTy 3), Var("IL",FTy 3),Var("IS",FTy 3),bVar"M",bVar"MD", Var("MMUSize",FTy 6),bVar"PCR",bVar"WR"]), CC[Mop(Cast F1,bVar"M"),Var("MMUSize",FTy 6),Var("IS",FTy 3), Var("IL",FTy 3),Var("IA",FTy 3),Var("DS",FTy 3), Var("DL",FTy 3),Var("DA",FTy 3),Mop(Cast F1,bVar"C2"), Mop(Cast F1,bVar"MD"),Mop(Cast F1,bVar"PCR"), Mop(Cast F1,bVar"WR"),Mop(Cast F1,bVar"CA"), Mop(Cast F1,bVar"EP"),Mop(Cast F1,bVar"FP")])])) ; val write'rec'ConfigRegister1_def = Def ("write'rec'ConfigRegister1",TP[AVar F32,Var("x",CTy"ConfigRegister1")], Call("reg'ConfigRegister1",F32,Var("x",CTy"ConfigRegister1"))) ; val write'reg'ConfigRegister1_def = Def ("write'reg'ConfigRegister1", TP[AVar(CTy"ConfigRegister1"),Var("x",F32)], Call("rec'ConfigRegister1",CTy"ConfigRegister1",Var("x",F32))) ; val rec'ConfigRegister2_def = Def ("rec'ConfigRegister2",Var("x",F32), Rec(CTy"ConfigRegister2", [Bop(Bit,Var("x",F32),LN 31),EX(Var("x",F32),LN 3,LN 0,F4), EX(Var("x",F32),LN 7,LN 4,F4),EX(Var("x",F32),LN 11,LN 8,F4), EX(Var("x",F32),LN 15,LN 12,F4),EX(Var("x",F32),LN 19,LN 16,F4), EX(Var("x",F32),LN 23,LN 20,F4),EX(Var("x",F32),LN 27,LN 24,F4), EX(Var("x",F32),LN 30,LN 28,FTy 3)])) ; val reg'ConfigRegister2_def = Def ("reg'ConfigRegister2",Var("x",CTy"ConfigRegister2"), CS(Var("x",CTy"ConfigRegister2"), [(Rec(CTy"ConfigRegister2", [bVar"M",Var("SA",F4),Var("SL",F4),Var("SS",F4),Var("SU",F4), Var("TA",F4),Var("TL",F4),Var("TS",F4),Var("TU",FTy 3)]), CC[Mop(Cast F1,bVar"M"),Var("TU",FTy 3),Var("TS",F4),Var("TL",F4), Var("TA",F4),Var("SU",F4),Var("SS",F4),Var("SL",F4), Var("SA",F4)])])) ; val write'rec'ConfigRegister2_def = Def ("write'rec'ConfigRegister2",TP[AVar F32,Var("x",CTy"ConfigRegister2")], Call("reg'ConfigRegister2",F32,Var("x",CTy"ConfigRegister2"))) ; val write'reg'ConfigRegister2_def = Def ("write'reg'ConfigRegister2", TP[AVar(CTy"ConfigRegister2"),Var("x",F32)], Call("rec'ConfigRegister2",CTy"ConfigRegister2",Var("x",F32))) ; val rec'ConfigRegister3_def = Def ("rec'ConfigRegister3",Var("x",F32), Rec(CTy"ConfigRegister3", [Bop(Bit,Var("x",F32),LN 10),Bop(Bit,Var("x",F32),LN 7), Bop(Bit,Var("x",F32),LN 31),Bop(Bit,Var("x",F32),LN 2), Bop(Bit,Var("x",F32),LN 1),Bop(Bit,Var("x",F32),LN 4), Bop(Bit,Var("x",F32),LN 0),Bop(Bit,Var("x",F32),LN 13), Bop(Bit,Var("x",F32),LN 6),Bop(Bit,Var("x",F32),LN 5), CC[EX(Var("x",F32),LN 3,LN 3,F1),EX(Var("x",F32),LN 9,LN 8,FTy 2), EX(Var("x",F32),LN 12,LN 11,FTy 2), EX(Var("x",F32),LN 30,LN 14,FTy 17)]])) ; val reg'ConfigRegister3_def = Def ("reg'ConfigRegister3",Var("x",CTy"ConfigRegister3"), CS(Var("x",CTy"ConfigRegister3"), [(Rec(CTy"ConfigRegister3", [bVar"DSPP",bVar"LPA",bVar"M",bVar"MT",bVar"SM",bVar"SP", bVar"TL",bVar"ULRI",bVar"VEIC",bVar"VInt", Var("configregister3'rst",FTy 22)]), CC[Mop(Cast F1,bVar"M"), EX(Var("configregister3'rst",FTy 22),LN 16,LN 0,FTy 17), Mop(Cast F1,bVar"ULRI"), EX(Var("configregister3'rst",FTy 22),LN 18,LN 17,FTy 2), Mop(Cast F1,bVar"DSPP"), EX(Var("configregister3'rst",FTy 22),LN 20,LN 19,FTy 2), Mop(Cast F1,bVar"LPA"),Mop(Cast F1,bVar"VEIC"), Mop(Cast F1,bVar"VInt"),Mop(Cast F1,bVar"SP"), EX(Var("configregister3'rst",FTy 22),LN 21,LN 21,F1), Mop(Cast F1,bVar"MT"),Mop(Cast F1,bVar"SM"), Mop(Cast F1,bVar"TL")])])) ; val write'rec'ConfigRegister3_def = Def ("write'rec'ConfigRegister3",TP[AVar F32,Var("x",CTy"ConfigRegister3")], Call("reg'ConfigRegister3",F32,Var("x",CTy"ConfigRegister3"))) ; val write'reg'ConfigRegister3_def = Def ("write'reg'ConfigRegister3", TP[AVar(CTy"ConfigRegister3"),Var("x",F32)], Call("rec'ConfigRegister3",CTy"ConfigRegister3",Var("x",F32))) ; val rec'ConfigRegister6_def = Def ("rec'ConfigRegister6",Var("x",F32), Rec(CTy"ConfigRegister6", [Bop(Bit,Var("x",F32),LN 2),EX(Var("x",F32),LN 31,LN 16,F16), CC[EX(Var("x",F32),LN 1,LN 0,FTy 2), EX(Var("x",F32),LN 15,LN 3,FTy 13)]])) ; val reg'ConfigRegister6_def = Def ("reg'ConfigRegister6",Var("x",CTy"ConfigRegister6"), CS(Var("x",CTy"ConfigRegister6"), [(Rec(CTy"ConfigRegister6", [bVar"LTLB",Var("TLBSize",F16), Var("configregister6'rst",FTy 15)]), CC[Var("TLBSize",F16), EX(Var("configregister6'rst",FTy 15),LN 12,LN 0,FTy 13), Mop(Cast F1,bVar"LTLB"), EX(Var("configregister6'rst",FTy 15),LN 14,LN 13,FTy 2)])])) ; val write'rec'ConfigRegister6_def = Def ("write'rec'ConfigRegister6",TP[AVar F32,Var("x",CTy"ConfigRegister6")], Call("reg'ConfigRegister6",F32,Var("x",CTy"ConfigRegister6"))) ; val write'reg'ConfigRegister6_def = Def ("write'reg'ConfigRegister6", TP[AVar(CTy"ConfigRegister6"),Var("x",F32)], Call("rec'ConfigRegister6",CTy"ConfigRegister6",Var("x",F32))) ; val rec'CauseRegister_def = Def ("rec'CauseRegister",Var("x",F32), Rec(CTy"CauseRegister", [Bop(Bit,Var("x",F32),LN 31),EX(Var("x",F32),LN 29,LN 28,FTy 2), EX(Var("x",F32),LN 6,LN 2,FTy 5),EX(Var("x",F32),LN 15,LN 8,F8), Bop(Bit,Var("x",F32),LN 30), CC[EX(Var("x",F32),LN 1,LN 0,FTy 2),EX(Var("x",F32),LN 7,LN 7,F1), EX(Var("x",F32),LN 27,LN 16,FTy 12)]])) ; val reg'CauseRegister_def = Def ("reg'CauseRegister",Var("x",CTy"CauseRegister"), CS(Var("x",CTy"CauseRegister"), [(Rec(CTy"CauseRegister", [bVar"BD",Var("CE",FTy 2),Var("ExcCode",FTy 5),Var("IP",F8), bVar"TI",Var("causeregister'rst",FTy 15)]), CC[Mop(Cast F1,bVar"BD"),Mop(Cast F1,bVar"TI"),Var("CE",FTy 2), EX(Var("causeregister'rst",FTy 15),LN 11,LN 0,FTy 12), Var("IP",F8), EX(Var("causeregister'rst",FTy 15),LN 12,LN 12,F1), Var("ExcCode",FTy 5), EX(Var("causeregister'rst",FTy 15),LN 14,LN 13,FTy 2)])])) ; val write'rec'CauseRegister_def = Def ("write'rec'CauseRegister",TP[AVar F32,Var("x",CTy"CauseRegister")], Call("reg'CauseRegister",F32,Var("x",CTy"CauseRegister"))) ; val write'reg'CauseRegister_def = Def ("write'reg'CauseRegister",TP[AVar(CTy"CauseRegister"),Var("x",F32)], Call("rec'CauseRegister",CTy"CauseRegister",Var("x",F32))) ; val rec'Context_def = Def ("rec'Context",Var("x",F64), Rec(CTy"Context", [EX(Var("x",F64),LN 22,LN 4,FTy 19), EX(Var("x",F64),LN 63,LN 23,FTy 41),EX(Var("x",F64),LN 3,LN 0,F4)])) ; val reg'Context_def = Def ("reg'Context",Var("x",CTy"Context"), CS(Var("x",CTy"Context"), [(Rec(CTy"Context", [Var("BadVPN2",FTy 19),Var("PTEBase",FTy 41), Var("context'rst",F4)]), CC[Var("PTEBase",FTy 41),Var("BadVPN2",FTy 19), Var("context'rst",F4)])])) ; val write'rec'Context_def = Def ("write'rec'Context",TP[AVar F64,Var("x",CTy"Context")], Call("reg'Context",F64,Var("x",CTy"Context"))) ; val write'reg'Context_def = Def ("write'reg'Context",TP[AVar(CTy"Context"),Var("x",F64)], Call("rec'Context",CTy"Context",Var("x",F64))) ; val rec'XContext_def = Def ("rec'XContext",Var("x",F64), Rec(CTy"XContext", [EX(Var("x",F64),LN 30,LN 4,FTy 27), EX(Var("x",F64),LN 63,LN 33,FTy 31), EX(Var("x",F64),LN 32,LN 31,FTy 2),EX(Var("x",F64),LN 3,LN 0,F4)])) ; val reg'XContext_def = Def ("reg'XContext",Var("x",CTy"XContext"), CS(Var("x",CTy"XContext"), [(Rec(CTy"XContext", [Var("BadVPN2",FTy 27),Var("PTEBase",FTy 31),Var("R",FTy 2), Var("xcontext'rst",F4)]), CC[Var("PTEBase",FTy 31),Var("R",FTy 2),Var("BadVPN2",FTy 27), Var("xcontext'rst",F4)])])) ; val write'rec'XContext_def = Def ("write'rec'XContext",TP[AVar F64,Var("x",CTy"XContext")], Call("reg'XContext",F64,Var("x",CTy"XContext"))) ; val write'reg'XContext_def = Def ("write'reg'XContext",TP[AVar(CTy"XContext"),Var("x",F64)], Call("rec'XContext",CTy"XContext",Var("x",F64))) ; val rec'HWREna_def = Def ("rec'HWREna",Var("x",F32), Rec(CTy"HWREna", [Bop(Bit,Var("x",F32),LN 2),Bop(Bit,Var("x",F32),LN 3), Bop(Bit,Var("x",F32),LN 0),Bop(Bit,Var("x",F32),LN 28), Bop(Bit,Var("x",F32),LN 26),Bop(Bit,Var("x",F32),LN 27), Bop(Bit,Var("x",F32),LN 29), CC[EX(Var("x",F32),LN 1,LN 1,F1), EX(Var("x",F32),LN 25,LN 4,FTy 22), EX(Var("x",F32),LN 31,LN 30,FTy 2)]])) ; val reg'HWREna_def = Def ("reg'HWREna",Var("x",CTy"HWREna"), CS(Var("x",CTy"HWREna"), [(Rec(CTy"HWREna", [bVar"CC",bVar"CCRes",bVar"CPUNum",bVar"DS",bVar"KS",bVar"RS", bVar"UL",Var("hwrena'rst",FTy 25)]), CC[EX(Var("hwrena'rst",FTy 25),LN 1,LN 0,FTy 2), Mop(Cast F1,bVar"UL"),Mop(Cast F1,bVar"DS"), Mop(Cast F1,bVar"RS"),Mop(Cast F1,bVar"KS"), EX(Var("hwrena'rst",FTy 25),LN 23,LN 2,FTy 22), Mop(Cast F1,bVar"CCRes"),Mop(Cast F1,bVar"CC"), EX(Var("hwrena'rst",FTy 25),LN 24,LN 24,F1), Mop(Cast F1,bVar"CPUNum")])])) ; val write'rec'HWREna_def = Def ("write'rec'HWREna",TP[AVar F32,Var("x",CTy"HWREna")], Call("reg'HWREna",F32,Var("x",CTy"HWREna"))) ; val write'reg'HWREna_def = Def ("write'reg'HWREna",TP[AVar(CTy"HWREna"),Var("x",F32)], Call("rec'HWREna",CTy"HWREna",Var("x",F32))) ; val BYTE_def = Def0 ("BYTE",LW(0,3)) ; val HALFWORD_def = Def0 ("HALFWORD",LW(1,3)) ; val WORD_def = Def0 ("WORD",LW(3,3)) ; val DOUBLEWORD_def = Def0 ("DOUBLEWORD",LW(7,3)) ; val println_def = Def ("println",sVar"s",Close(qVar"state",LU)) ; val cpr_def = Def ("cpr",Var("r",FTy 5), CC[LS"c0_", CS(Var("r",FTy 5), [(LW(0,5),LS"index"),(LW(1,5),LS"random"),(LW(2,5),LS"entrylo0"), (LW(3,5),LS"entrylo1"),(LW(4,5),LS"context"), (LW(5,5),LS"pagemask"),(LW(6,5),LS"wired"),(LW(7,5),LS"hwrena"), (LW(8,5),LS"badvaddr"),(LW(9,5),LS"count"), (LW(10,5),LS"entryhi"),(LW(11,5),LS"compare"), (LW(12,5),LS"status"),(LW(13,5),LS"cause"),(LW(14,5),LS"epc"), (LW(15,5),LS"prid"),(LW(16,5),LS"config"),(LW(17,5),LS"lladdr"), (LW(18,5),LS"watchlo"),(LW(19,5),LS"watchhi"), (LW(20,5),LS"xcontext"),(LW(21,5),LS"21"),(LW(22,5),LS"22"), (LW(23,5),LS"debug"),(LW(24,5),LS"depc"),(LW(25,5),LS"perfcnt"), (LW(26,5),LS"errctl"),(LW(27,5),LS"cacheerr"), (LW(28,5),LS"taglo"),(LW(29,5),LS"taghi"), (LW(30,5),LS"errorepc"),(LW(31,5),LS"kscratch")])]) ; val hex_def = Def ("hex",Var("x",BTy"N"), Let(TP[iVar"q",iVar"r"], Mop(QuotRem,TP[Mop(Cast iTy,Mop(Size,LY(0,"N"))),LI 4]), CC[LS"0x", Mop(PadLeft, TP[LSC #"0", Mop(Cast nTy, Bop(Add,iVar"q",ITE(EQ(iVar"r",LI 0),LI 0,LI 1))), Mop(ToLower,Mop(Cast sTy,Var("x",BTy"N")))])])) ; val log_sig_exception_def = Def ("log_sig_exception",Var("ExceptionCode",FTy 5), CC[LS"MIPS exception ",Call("hex",sTy,Var("ExceptionCode",FTy 5))]) ; val log_w_gpr_def = Def ("log_w_gpr",TP[Var("r",FTy 5),Var("data",F64)], CC[LS"Reg ",Mop(Cast sTy,Mop(Cast nTy,Var("r",FTy 5))),LS" <- ", Call("hex",sTy,Var("data",F64))]) ; val log_w_hi_def = Def ("log_w_hi",Var("data",F64), CC[LS"HI <- ",Call("hex",sTy,Var("data",F64))]) ; val log_w_lo_def = Def ("log_w_lo",Var("data",F64), CC[LS"LO <- ",Call("hex",sTy,Var("data",F64))]) ; val log_w_c0_def = Def ("log_w_c0",TP[Var("r",FTy 5),Var("data",F64)], CC[Call("cpr",sTy,Var("r",FTy 5)),LS" <- ", Call("hex",sTy,Var("data",F64))]) ; val log_w_mem_def = Def ("log_w_mem",TP[Var("addr",FTy 37),Var("mask",F64),Var("data",F64)], CC[LS"MEM[",Call("hex",sTy,CC[Var("addr",FTy 37),LW(0,3)]), LS"] <- (data: ",Call("hex",sTy,Var("data",F64)),LS", mask: ", Call("hex",sTy,Var("mask",F64)),LS")"]) ; val log_r_mem_def = Def ("log_r_mem",TP[Var("addr",FTy 37),Var("data",F64)], CC[LS"data <- MEM[",Call("hex",sTy,CC[Var("addr",FTy 37),LW(0,3)]), LS"]: ",Call("hex",sTy,Var("data",F64))]) ; val clear_watcher_def = Def0 ("clear_watcher",LU) ; val clear_logs_def = Def0 ("clear_logs",LU) ; val gpr_def = Def ("gpr",Var("n",FTy 5), Close (qVar"state", Apply(Dest("c_gpr",ATy(FTy 5,F64),qVar"state"),Var("n",FTy 5)))) ; val write'gpr_def = Def ("write'gpr",TP[Var("value",F64),Var("n",FTy 5)], Close (qVar"state", Rupd ("c_gpr", TP[qVar"state", Fupd (Dest("c_gpr",ATy(FTy 5,F64),qVar"state"),Var("n",FTy 5), Var("value",F64))]))) ; val GPR_def = Def ("GPR",Var("n",FTy 5), Close (qVar"state", ITE(EQ(Var("n",FTy 5),LW(0,5)),LW(0,64), Apply(Call("gpr",ATy(qTy,F64),Var("n",FTy 5)),qVar"state")))) ; val write'GPR_def = Def ("write'GPR",TP[Var("value",F64),Var("n",FTy 5)], Close (qVar"state", ITE(Mop(Not,EQ(Var("n",FTy 5),LW(0,5))), Apply (Call ("write'gpr",ATy(qTy,qTy), TP[Var("value",F64),Var("n",FTy 5)]),qVar"state"), qVar"state"))) ; val PC_def = Def ("PC",qVar"state", Dest("c_PC",F64,Dest("c_state",CTy"procState",qVar"state"))) ; val write'PC_def = Def ("write'PC",Var("value",F64), Close (qVar"state", Rupd ("c_state", TP[qVar"state", Rupd ("c_PC", TP[Dest("c_state",CTy"procState",qVar"state"), Var("value",F64)])]))) ; val hi_def = Def ("hi",qVar"state", Dest("c_hi",OTy F64,Dest("c_state",CTy"procState",qVar"state"))) ; val write'hi_def = Def ("write'hi",Var("value",OTy F64), Close (qVar"state", Rupd ("c_state", TP[qVar"state", Rupd ("c_hi", TP[Dest("c_state",CTy"procState",qVar"state"), Var("value",OTy F64)])]))) ; val lo_def = Def ("lo",qVar"state", Dest("c_lo",OTy F64,Dest("c_state",CTy"procState",qVar"state"))) ; val write'lo_def = Def ("write'lo",Var("value",OTy F64), Close (qVar"state", Rupd ("c_state", TP[qVar"state", Rupd ("c_lo", TP[Dest("c_state",CTy"procState",qVar"state"), Var("value",OTy F64)])]))) ; val CP0_def = Def ("CP0",qVar"state", Dest("c_CP0",CTy"CP0",Dest("c_state",CTy"procState",qVar"state"))) ; val write'CP0_def = Def ("write'CP0",Var("value",CTy"CP0"), Close (qVar"state", Rupd ("c_state", TP[qVar"state", Rupd ("c_CP0", TP[Dest("c_state",CTy"procState",qVar"state"), Var("value",CTy"CP0")])]))) ; val BranchDelay_def = Def ("BranchDelay",qVar"state", Dest ("c_BranchDelay",OTy F64,Dest("c_state",CTy"procState",qVar"state"))) ; val write'BranchDelay_def = Def ("write'BranchDelay",Var("value",OTy F64), Close (qVar"state", Rupd ("c_state", TP[qVar"state", Rupd ("c_BranchDelay", TP[Dest("c_state",CTy"procState",qVar"state"), Var("value",OTy F64)])]))) ; val BranchTo_def = Def ("BranchTo",qVar"state", Dest("c_BranchTo",OTy F64,Dest("c_state",CTy"procState",qVar"state"))) ; val write'BranchTo_def = Def ("write'BranchTo",Var("value",OTy F64), Close (qVar"state", Rupd ("c_state", TP[qVar"state", Rupd ("c_BranchTo", TP[Dest("c_state",CTy"procState",qVar"state"), Var("value",OTy F64)])]))) ; val LLbit_def = Def ("LLbit",qVar"state", Dest("c_LLbit",OTy bTy,Dest("c_state",CTy"procState",qVar"state"))) ; val write'LLbit_def = Def ("write'LLbit",Var("value",OTy bTy), Close (qVar"state", Rupd ("c_state", TP[qVar"state", Rupd ("c_LLbit", TP[Dest("c_state",CTy"procState",qVar"state"), Var("value",OTy bTy)])]))) ; val exceptionSignalled_def = Def ("exceptionSignalled",qVar"state", Dest ("c_exceptionSignalled",bTy, Dest("c_state",CTy"procState",qVar"state"))) ; val write'exceptionSignalled_def = Def ("write'exceptionSignalled",bVar"value", Close (qVar"state", Rupd ("c_state", TP[qVar"state", Rupd ("c_exceptionSignalled", TP[Dest("c_state",CTy"procState",qVar"state"),bVar"value"])]))) ; val UserMode_def = Def ("UserMode",qVar"state", Bop(And, EQ(Dest ("KSU",FTy 2, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), LW(2,2)), Mop(Not, Bop(Or, Dest ("EXL",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), Dest ("ERL",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))))))) ; val SupervisorMode_def = Def ("SupervisorMode",qVar"state", Bop(And, EQ(Dest ("KSU",FTy 2, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), LW(1,2)), Mop(Not, Bop(Or, Dest ("EXL",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), Dest ("ERL",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))))))) ; val KernelMode_def = Def ("KernelMode",qVar"state", Bop(Or, EQ(Dest ("KSU",FTy 2, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), LW(0,2)), Bop(Or, Dest ("EXL",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), Dest ("ERL",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))))) ; val BigEndianMem_def = Def ("BigEndianMem",qVar"state", Dest ("BE",bTy, Dest ("Config",CTy"ConfigRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))) ; val ReverseEndian_def = Def ("ReverseEndian",qVar"state", Mop(Cast F1, Bop(And, Dest ("RE",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), Apply(Const("UserMode",ATy(qTy,bTy)),qVar"state")))) ; val BigEndianCPU_def = Def ("BigEndianCPU",qVar"state", Bop(BXor, Mop(Cast F1,Apply(Const("BigEndianMem",ATy(qTy,bTy)),qVar"state")), Apply(Const("ReverseEndian",ATy(qTy,F1)),qVar"state"))) ; val NotWordValue_def = Def ("NotWordValue",Var("value",F64), Let(Var("top",FTy 33),EX(Var("value",F64),LN 63,LN 31,FTy 33), Bop(And,Mop(Not,EQ(Var("top",FTy 33),LW(0,33))), Mop(Not,EQ(Var("top",FTy 33),LW(8589934591,33)))))) ; val CheckBranch_def = Def ("CheckBranch",qVar"state", ITE(Mop(IsSome,Apply(Const("BranchDelay",ATy(qTy,OTy F64)),qVar"state")), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"Not permitted in delay slot")),qVar"state")), qVar"state")) ; val dumpRegs_def = Def ("dumpRegs",AVar uTy,LU) ; val coreStats_def = Def ("coreStats",qVar"state", Dest ("c_CoreStats",CTy"CoreStats", Dest("c_state",CTy"procState",qVar"state"))) ; val write'coreStats_def = Def ("write'coreStats",Var("value",CTy"CoreStats"), Close (qVar"state", Rupd ("c_state", TP[qVar"state", Rupd ("c_CoreStats", TP[Dest("c_state",CTy"procState",qVar"state"), Var("value",CTy"CoreStats")])]))) ; val initCoreStats_def = Def ("initCoreStats",qVar"state", Let(TP[Var("v",CTy"CoreStats"),qVar"s"], Let(qVar"s0", Apply (Call ("write'coreStats",ATy(qTy,qTy), Rupd ("branch_taken", TP[Apply (Const("coreStats",ATy(qTy,CTy"CoreStats")), qVar"state"),LN 0])),qVar"state"), TP[Apply(Const("coreStats",ATy(qTy,CTy"CoreStats")),qVar"s0"), qVar"s0"]), Apply (Call ("write'coreStats",ATy(qTy,qTy), Rupd("branch_not_taken",TP[Var("v",CTy"CoreStats"),LN 0])), qVar"s"))) ; val printCoreStats_def = Def ("printCoreStats",qVar"state", CC[Mop(PadRight,TP[LSC #" ",LN 16,LS"branch_taken"]),LS" = ", Mop(PadLeft, TP[LSC #" ",LN 9, Mop(Cast sTy, Dest ("branch_taken",nTy, Apply (Const("coreStats",ATy(qTy,CTy"CoreStats")), qVar"state")))]),LS"\n", Mop(PadRight,TP[LSC #" ",LN 16,LS"branch_not_taken"]),LS" = ", Mop(PadLeft, TP[LSC #" ",LN 9, Mop(Cast sTy, Dest ("branch_not_taken",nTy, Apply (Const("coreStats",ATy(qTy,CTy"CoreStats")), qVar"state")))])]) ; val csvHeaderCoreStats_def = Def0 ("csvHeaderCoreStats",LS"branch_taken,branch_not_taken") ; val csvCoreStats_def = Def ("csvCoreStats",qVar"state", CC[Mop(Cast sTy, Dest ("branch_taken",nTy, Apply(Const("coreStats",ATy(qTy,CTy"CoreStats")),qVar"state"))), LS",", Mop(Cast sTy, Dest ("branch_not_taken",nTy, Apply(Const("coreStats",ATy(qTy,CTy"CoreStats")),qVar"state")))]) ; val next_unknown_def = Def ("next_unknown",sVar"s", Close (qVar"state", Let(nVar"v", Apply(Dest("unknown_counters",ATy(sTy,nTy),qVar"state"),sVar"s"), TP[TP[nVar"v",sVar"s"], Rupd ("unknown_counters", TP[qVar"state", Fupd (Dest("unknown_counters",ATy(sTy,nTy),qVar"state"), sVar"s",Bop(Add,nVar"v",LN 1))])]))) ; val CAPBYTEWIDTH_def = Def0 ("CAPBYTEWIDTH",LN 32) ; val UPERMS_def = Def0 ("UPERMS",LN 16) ; val OTYPEWIDTH_def = Def0 ("OTYPEWIDTH",LN 24) ; val rec'UPerms_def = Def ("rec'UPerms",Var("x",F32), Rec(CTy"UPerms", [EX(Var("x",F32),LN 31,LN 4,FTy 28),EX(Var("x",F32),LN 3,LN 0,F4)])) ; val reg'UPerms_def = Def ("reg'UPerms",Var("x",CTy"UPerms"), CS(Var("x",CTy"UPerms"), [(Rec(CTy"UPerms",[Var("Reserved",FTy 28),Var("soft",F4)]), CC[Var("Reserved",FTy 28),Var("soft",F4)])])) ; val write'rec'UPerms_def = Def ("write'rec'UPerms",TP[AVar F32,Var("x",CTy"UPerms")], Call("reg'UPerms",F32,Var("x",CTy"UPerms"))) ; val write'reg'UPerms_def = Def ("write'reg'UPerms",TP[AVar(CTy"UPerms"),Var("x",F32)], Call("rec'UPerms",CTy"UPerms",Var("x",F32))) ; val rec'Perms_def = Def ("rec'Perms",Var("x",F32), Rec(CTy"Perms", [Bop(Bit,Var("x",F32),LN 10),Bop(Bit,Var("x",F32),LN 0), Bop(Bit,Var("x",F32),LN 8),Bop(Bit,Var("x",F32),LN 1), Bop(Bit,Var("x",F32),LN 2),Bop(Bit,Var("x",F32),LN 4), Bop(Bit,Var("x",F32),LN 7),Bop(Bit,Var("x",F32),LN 3), Bop(Bit,Var("x",F32),LN 5),Bop(Bit,Var("x",F32),LN 6), CC[EX(Var("x",F32),LN 31,LN 11,FTy 21), EX(Var("x",F32),LN 9,LN 9,F1)]])) ; val reg'Perms_def = Def ("reg'Perms",Var("x",CTy"Perms"), CS(Var("x",CTy"Perms"), [(Rec(CTy"Perms", [bVar"Access_System_Registers",bVar"Global", bVar"Permit_CCall",bVar"Permit_Execute",bVar"Permit_Load", bVar"Permit_Load_Capability",bVar"Permit_Seal", bVar"Permit_Store",bVar"Permit_Store_Capability", bVar"Permit_Store_Local_Capability",Var("Reserved",FTy 22)]), CC[EX(Var("Reserved",FTy 22),LN 21,LN 1,FTy 21), Mop(Cast F1,bVar"Access_System_Registers"), EX(Var("Reserved",FTy 22),LN 0,LN 0,F1), Mop(Cast F1,bVar"Permit_CCall"),Mop(Cast F1,bVar"Permit_Seal"), Mop(Cast F1,bVar"Permit_Store_Local_Capability"), Mop(Cast F1,bVar"Permit_Store_Capability"), Mop(Cast F1,bVar"Permit_Load_Capability"), Mop(Cast F1,bVar"Permit_Store"),Mop(Cast F1,bVar"Permit_Load"), Mop(Cast F1,bVar"Permit_Execute"),Mop(Cast F1,bVar"Global")])])) ; val write'rec'Perms_def = Def ("write'rec'Perms",TP[AVar F32,Var("x",CTy"Perms")], Call("reg'Perms",F32,Var("x",CTy"Perms"))) ; val write'reg'Perms_def = Def ("write'reg'Perms",TP[AVar(CTy"Perms"),Var("x",F32)], Call("rec'Perms",CTy"Perms",Var("x",F32))) ; val rec'Capability_def = Def ("rec'Capability",Var("x",FTy 257), Rec(CTy"Capability", [EX(Var("x",FTy 257),LN 191,LN 128,F64), EX(Var("x",FTy 257),LN 127,LN 64,F64), EX(Var("x",FTy 257),LN 255,LN 192,F64), EX(Var("x",FTy 257),LN 55,LN 32,FTy 24), EX(Var("x",FTy 257),LN 15,LN 1,FTy 15), EX(Var("x",FTy 257),LN 63,LN 56,F8), Bop(Bit,Var("x",FTy 257),LN 0),Bop(Bit,Var("x",FTy 257),LN 256), EX(Var("x",FTy 257),LN 31,LN 16,F16)])) ; val reg'Capability_def = Def ("reg'Capability",Var("x",CTy"Capability"), CS(Var("x",CTy"Capability"), [(Rec(CTy"Capability", [Var("base",F64),Var("cursor",F64),Var("length",F64), Var("otype",FTy 24),Var("perms",FTy 15),Var("reserved",F8), bVar"sealed",bVar"tag",Var("uperms",F16)]), CC[Mop(Cast F1,bVar"tag"),Var("length",F64),Var("base",F64), Var("cursor",F64),Var("reserved",F8),Var("otype",FTy 24), Var("uperms",F16),Var("perms",FTy 15),Mop(Cast F1,bVar"sealed")])])) ; val write'rec'Capability_def = Def ("write'rec'Capability",TP[AVar(FTy 257),Var("x",CTy"Capability")], Call("reg'Capability",FTy 257,Var("x",CTy"Capability"))) ; val write'reg'Capability_def = Def ("write'reg'Capability",TP[AVar(CTy"Capability"),Var("x",FTy 257)], Call("rec'Capability",CTy"Capability",Var("x",FTy 257))) ; val defaultCap_def = Def0 ("defaultCap", Rupd ("reserved", TP[Rupd ("perms", TP[Rupd ("uperms", TP[Rupd ("otype", TP[Rupd ("length", TP[Rupd ("base", TP[Rupd ("cursor", TP[Rupd ("sealed", TP[Rupd ("tag", TP[LX(CTy"Capability"), LT]),LF]), LW(0,64)]),LW(0,64)]), Mop(BNot,LW(0,64))]),LW(0,24)]), Mop(BNot,LW(0,16))]),Mop(BNot,LW(0,15))]),LW(0,8)])) ; val nullCap_def = Def0 ("nullCap", Rupd ("reserved", TP[Rupd ("perms", TP[Rupd ("uperms", TP[Rupd ("otype", TP[Rupd ("length", TP[Rupd ("base", TP[Rupd ("cursor", TP[Rupd ("sealed", TP[Rupd ("tag", TP[LX(CTy"Capability"), LF]),LF]), LW(0,64)]),LW(0,64)]), LW(0,64)]),LW(0,24)]),LW(0,16)]),LW(0,15)]), LW(0,8)])) ; val canRepOffset_def = Def ("canRepOffset",TP[Var("cap",CTy"Capability"),Var("newOffset",F64)],LT) ; val canRepSeal_def = Def ("canRepSeal",TP[Var("cap",CTy"Capability"),bVar"newSeal"],LT) ; val canRepBounds_def = Def ("canRepBounds",TP[Var("cap",CTy"Capability"),Var("newLength",F64)],LT) ; val getTag_def = Def ("getTag",Var("cap",CTy"Capability"), Dest("tag",bTy,Var("cap",CTy"Capability"))) ; val getType_def = Def ("getType",Var("cap",CTy"Capability"), Dest("otype",FTy 24,Var("cap",CTy"Capability"))) ; val getPerms_def = Def ("getPerms",Var("cap",CTy"Capability"), Call ("rec'Perms",CTy"Perms", Mop(Cast F32,Dest("perms",FTy 15,Var("cap",CTy"Capability"))))) ; val getUPerms_def = Def ("getUPerms",Var("cap",CTy"Capability"), Call ("rec'UPerms",CTy"UPerms", Mop(Cast F32,Dest("uperms",F16,Var("cap",CTy"Capability"))))) ; val getSealed_def = Def ("getSealed",Var("cap",CTy"Capability"), Dest("sealed",bTy,Var("cap",CTy"Capability"))) ; val getOffset_def = Def ("getOffset",Var("cap",CTy"Capability"), Bop(Sub,Dest("cursor",F64,Var("cap",CTy"Capability")), Dest("base",F64,Var("cap",CTy"Capability")))) ; val getBase_def = Def ("getBase",Var("cap",CTy"Capability"), Dest("base",F64,Var("cap",CTy"Capability"))) ; val getLength_def = Def ("getLength",Var("cap",CTy"Capability"), Dest("length",F64,Var("cap",CTy"Capability"))) ; val getBaseAndLength_def = Def ("getBaseAndLength",Var("cap",CTy"Capability"), TP[Dest("base",F64,Var("cap",CTy"Capability")), Dest("length",F64,Var("cap",CTy"Capability"))]) ; val setTag_def = Def ("setTag",TP[Var("cap",CTy"Capability"),bVar"tag"], Rupd("tag",TP[Var("cap",CTy"Capability"),bVar"tag"])) ; val setType_def = Def ("setType",TP[Var("cap",CTy"Capability"),Var("otype",FTy 24)], Rupd("otype",TP[Var("cap",CTy"Capability"),Var("otype",FTy 24)])) ; val setPerms_def = Def ("setPerms",TP[Var("cap",CTy"Capability"),Var("perms",CTy"Perms")], Rupd ("perms", TP[Var("cap",CTy"Capability"), EX(Call("reg'Perms",F32,Var("perms",CTy"Perms")),LN 14,LN 0, FTy 15)])) ; val setUPerms_def = Def ("setUPerms",TP[Var("cap",CTy"Capability"),Var("uperms",CTy"UPerms")], Rupd ("uperms", TP[Var("cap",CTy"Capability"), EX(Call("reg'UPerms",F32,Var("uperms",CTy"UPerms")),LN 15,LN 0, F16)])) ; val setSealed_def = Def ("setSealed",TP[Var("cap",CTy"Capability"),bVar"sealed"], Rupd("sealed",TP[Var("cap",CTy"Capability"),bVar"sealed"])) ; val setOffset_def = Def ("setOffset",TP[Var("cap",CTy"Capability"),Var("offset",F64)], Rupd ("cursor", TP[Var("cap",CTy"Capability"), Bop(Add,Var("offset",F64), Dest("base",F64,Var("cap",CTy"Capability")))])) ; val setBounds_def = Def ("setBounds",TP[Var("cap",CTy"Capability"),Var("length",F64)], Rupd ("length", TP[Rupd ("base", TP[Var("cap",CTy"Capability"), Dest("cursor",F64,Var("cap",CTy"Capability"))]), Var("length",F64)])) ; val log_cap_write_def = Def ("log_cap_write",Var("cap",CTy"Capability"), CC[LS"t:", ITE(Call("getTag",bTy,Var("cap",CTy"Capability")),LS"1",LS"0"), LS" s:", ITE(Call("getSealed",bTy,Var("cap",CTy"Capability")),LS"1",LS"0"), LS" perms:", Call ("hex",sTy, CC[Dest("uperms",F16,Var("cap",CTy"Capability")), Dest("perms",FTy 15,Var("cap",CTy"Capability"))]),LS" type:", Call("hex",sTy,Call("getType",FTy 24,Var("cap",CTy"Capability"))), LS" offset:", Call("hex",sTy,Call("getOffset",F64,Var("cap",CTy"Capability"))), LS" base:", Call("hex",sTy,Call("getBase",F64,Var("cap",CTy"Capability"))), LS" length:", Call("hex",sTy,Call("getLength",F64,Var("cap",CTy"Capability")))]) ; val log_cpp_write_def = Def ("log_cpp_write",Var("cap",CTy"Capability"), CC[LS"PCC <- ",Call("log_cap_write",sTy,Var("cap",CTy"Capability"))]) ; val log_creg_write_def = Def ("log_creg_write",TP[Var("r",FTy 5),Var("cap",CTy"Capability")], CC[LS"CapReg ",Mop(Cast sTy,Mop(Cast nTy,Var("r",FTy 5))),LS" <- ", Call("log_cap_write",sTy,Var("cap",CTy"Capability"))]) ; val log_store_cap_def = Def ("log_store_cap",TP[Var("pAddr",FTy 40),Var("cap",CTy"Capability")], CC[LS"MEM[",Call("hex",sTy,Var("pAddr",FTy 40)),LS"] <- ", Call("log_cap_write",sTy,Var("cap",CTy"Capability"))]) ; val log_load_cap_def = Def ("log_load_cap",TP[Var("pAddr",FTy 40),Var("cap",CTy"Capability")], CC[Call("log_cap_write",sTy,Var("cap",CTy"Capability")),LS" <- MEM[", Call("hex",sTy,Var("pAddr",FTy 40)),LS"]"]) ; val isCapAligned_def = Def ("isCapAligned",Var("addr",F64), EQ(EX(Var("addr",F64),LN 4,LN 0,FTy 5),LW(0,5))) ; val capToBits_def = Def ("capToBits",Var("cap",CTy"Capability"), EX(Call("reg'Capability",FTy 257,Var("cap",CTy"Capability")),LN 255, LN 0,FTy 256)) ; val bitsToCap_def = Def ("bitsToCap",Var("raw",FTy 256), Call("rec'Capability",CTy"Capability",CC[LW(0,1),Var("raw",FTy 256)])) ; val readDwordFromRaw_def = Def ("readDwordFromRaw",TP[Var("dwordAddr",FTy 37),Var("raw",FTy 256)], CS(EX(Var("dwordAddr",FTy 37),LN 1,LN 0,FTy 2), [(LW(0,2),EX(Var("raw",FTy 256),LN 63,LN 0,F64)), (LW(1,2),EX(Var("raw",FTy 256),LN 127,LN 64,F64)), (LW(2,2),EX(Var("raw",FTy 256),LN 191,LN 128,F64)), (LW(3,2),EX(Var("raw",FTy 256),LN 255,LN 192,F64))])) ; val updateDwordInRaw_def = Def ("updateDwordInRaw", TP[Var("dwordAddr",FTy 37),Var("data",F64),Var("mask",F64), Var("old_blob",FTy 256)], CS(EX(Var("dwordAddr",FTy 37),LN 1,LN 0,FTy 2), [(LW(0,2), CC[EX(Var("old_blob",FTy 256),LN 255,LN 64,FTy 192), Bop(BOr, Bop(BAnd,EX(Var("old_blob",FTy 256),LN 63,LN 0,F64), Mop(BNot,Var("mask",F64))), Bop(BAnd,Var("data",F64),Var("mask",F64)))]), (LW(1,2), CC[EX(Var("old_blob",FTy 256),LN 255,LN 128,FTy 128), Bop(BOr, Bop(BAnd,EX(Var("old_blob",FTy 256),LN 127,LN 64,F64), Mop(BNot,Var("mask",F64))), Bop(BAnd,Var("data",F64),Var("mask",F64))), EX(Var("old_blob",FTy 256),LN 63,LN 0,F64)]), (LW(2,2), CC[EX(Var("old_blob",FTy 256),LN 255,LN 192,F64), Bop(BOr, Bop(BAnd,EX(Var("old_blob",FTy 256),LN 191,LN 128,F64), Mop(BNot,Var("mask",F64))), Bop(BAnd,Var("data",F64),Var("mask",F64))), EX(Var("old_blob",FTy 256),LN 127,LN 0,FTy 128)]), (LW(3,2), CC[Bop(BOr, Bop(BAnd,EX(Var("old_blob",FTy 256),LN 255,LN 192,F64), Mop(BNot,Var("mask",F64))), Bop(BAnd,Var("data",F64),Var("mask",F64))), EX(Var("old_blob",FTy 256),LN 191,LN 0,FTy 192)])])) ; val rec'CapCause_def = Def ("rec'CapCause",Var("x",F16), Rec(CTy"CapCause", [EX(Var("x",F16),LN 15,LN 8,F8),EX(Var("x",F16),LN 7,LN 0,F8)])) ; val reg'CapCause_def = Def ("reg'CapCause",Var("x",CTy"CapCause"), CS(Var("x",CTy"CapCause"), [(Rec(CTy"CapCause",[Var("ExcCode",F8),Var("RegNum",F8)]), CC[Var("ExcCode",F8),Var("RegNum",F8)])])) ; val write'rec'CapCause_def = Def ("write'rec'CapCause",TP[AVar F16,Var("x",CTy"CapCause")], Call("reg'CapCause",F16,Var("x",CTy"CapCause"))) ; val write'reg'CapCause_def = Def ("write'reg'CapCause",TP[AVar(CTy"CapCause"),Var("x",F16)], Call("rec'CapCause",CTy"CapCause",Var("x",F16))) ; val switchCoreCAP_def = Def ("switchCoreCAP",Var("i",F8), Close (qVar"state", Let(qVar"s", Rupd ("all_BranchDelayPCC", TP[qVar"state", Fupd (Dest ("all_BranchDelayPCC", ATy(F8,OTy(PTy(F64,CTy"Capability"))),qVar"state"), Dest("procID",F8,qVar"state"), Dest ("BranchDelayPCC",OTy(PTy(F64,CTy"Capability")), qVar"state"))]), Let(qVar"s", Rupd ("all_BranchToPCC", TP[qVar"s", Fupd (Dest ("all_BranchToPCC", ATy(F8,OTy(PTy(F64,CTy"Capability"))),qVar"s"), Dest("procID",F8,qVar"s"), Dest ("BranchToPCC",OTy(PTy(F64,CTy"Capability")), qVar"s"))]), Let(qVar"s", Rupd ("all_CCallBranchDelay", TP[qVar"s", Fupd (Dest ("all_CCallBranchDelay",ATy(F8,bTy),qVar"s"), Dest("procID",F8,qVar"s"), Dest("CCallBranchDelay",bTy,qVar"s"))]), Let(qVar"s", Rupd ("all_CCallBranch", TP[qVar"s", Fupd (Dest("all_CCallBranch",ATy(F8,bTy),qVar"s"), Dest("procID",F8,qVar"s"), Dest("CCallBranch",bTy,qVar"s"))]), Let(qVar"s", Rupd ("all_capcause", TP[qVar"s", Fupd (Dest ("all_capcause", ATy(F8,CTy"CapCause"),qVar"s"), Dest("procID",F8,qVar"s"), Dest("capcause",CTy"CapCause",qVar"s"))]), Let(qVar"s", Rupd ("all_pcc", TP[qVar"s", Fupd (Dest ("all_pcc", ATy(F8,CTy"Capability"),qVar"s"), Dest("procID",F8,qVar"s"), Dest ("c_pcc",CTy"Capability",qVar"s"))]), Let(qVar"s", Rupd ("all_capr", TP[qVar"s", Fupd (Dest ("all_capr", ATy(F8, ATy(FTy 5, CTy"Capability")), qVar"s"), Dest("procID",F8,qVar"s"), Dest ("c_capr", ATy(FTy 5,CTy"Capability"), qVar"s"))]), Let(qVar"s", Rupd ("BranchDelayPCC", TP[qVar"s", Apply (Dest ("all_BranchDelayPCC", ATy(F8, OTy(PTy(F64, CTy"Capability"))), qVar"s"),Var("i",F8))]), Let(qVar"s", Rupd ("BranchToPCC", TP[qVar"s", Apply (Dest ("all_BranchToPCC", ATy(F8, OTy(PTy(F64, CTy"Capability"))), qVar"s"),Var("i",F8))]), Let(qVar"s", Rupd ("CCallBranchDelay", TP[qVar"s", Apply (Dest ("all_CCallBranchDelay", ATy(F8,bTy), qVar"s"), Var("i",F8))]), Let(qVar"s", Rupd ("CCallBranch", TP[qVar"s", Apply (Dest ("all_CCallBranch", ATy(F8,bTy), qVar"s"), Var("i",F8))]), Let(qVar"s", Rupd ("capcause", TP[qVar"s", Apply (Dest ("all_capcause", ATy(F8, CTy"CapCause"), qVar"s"), Var("i",F8))]), Let(qVar"s", Rupd ("c_pcc", TP[qVar"s", Apply (Dest ("all_pcc", ATy(F8, CTy"Capability"), qVar"s"), Var("i", F8))]), Rupd ("c_capr", TP[qVar"s", Apply (Dest ("all_capr", ATy(F8, ATy(FTy 5, CTy"Capability")), qVar"s"), Var("i", F8))])))))))))))))))) ; val dumpCRegs_def = Def ("dumpCRegs",AVar uTy,LU) ; val PCC_def = Def ("PCC",qVar"state",Dest("c_pcc",CTy"Capability",qVar"state")) ; val write'PCC_def = Def ("write'PCC",Var("value",CTy"Capability"), Close (qVar"state", Rupd("c_pcc",TP[qVar"state",Var("value",CTy"Capability")]))) ; val CAPR_def = Def ("CAPR",Var("n",FTy 5), Close (qVar"state", Apply (Dest("c_capr",ATy(FTy 5,CTy"Capability"),qVar"state"), Var("n",FTy 5)))) ; val write'CAPR_def = Def ("write'CAPR",TP[Var("value",CTy"Capability"),Var("n",FTy 5)], Close (qVar"state", Rupd ("c_capr", TP[qVar"state", Fupd (Dest("c_capr",ATy(FTy 5,CTy"Capability"),qVar"state"), Var("n",FTy 5),Var("value",CTy"Capability"))]))) ; val RCC_def = Def ("RCC",qVar"state", Apply(Call("CAPR",ATy(qTy,CTy"Capability"),LW(24,5)),qVar"state")) ; val write'RCC_def = Def ("write'RCC",Var("value",CTy"Capability"), Close (qVar"state", Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Var("value",CTy"Capability"),LW(24,5)]),qVar"state"))) ; val IDC_def = Def ("IDC",qVar"state", Apply(Call("CAPR",ATy(qTy,CTy"Capability"),LW(26,5)),qVar"state")) ; val write'IDC_def = Def ("write'IDC",Var("value",CTy"Capability"), Close (qVar"state", Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Var("value",CTy"Capability"),LW(26,5)]),qVar"state"))) ; val KR1C_def = Def ("KR1C",qVar"state", Apply(Call("CAPR",ATy(qTy,CTy"Capability"),LW(27,5)),qVar"state")) ; val write'KR1C_def = Def ("write'KR1C",Var("value",CTy"Capability"), Close (qVar"state", Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Var("value",CTy"Capability"),LW(27,5)]),qVar"state"))) ; val KR2C_def = Def ("KR2C",qVar"state", Apply(Call("CAPR",ATy(qTy,CTy"Capability"),LW(28,5)),qVar"state")) ; val write'KR2C_def = Def ("write'KR2C",Var("value",CTy"Capability"), Close (qVar"state", Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Var("value",CTy"Capability"),LW(28,5)]),qVar"state"))) ; val KCC_def = Def ("KCC",qVar"state", Apply(Call("CAPR",ATy(qTy,CTy"Capability"),LW(29,5)),qVar"state")) ; val write'KCC_def = Def ("write'KCC",Var("value",CTy"Capability"), Close (qVar"state", Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Var("value",CTy"Capability"),LW(29,5)]),qVar"state"))) ; val KDC_def = Def ("KDC",qVar"state", Apply(Call("CAPR",ATy(qTy,CTy"Capability"),LW(30,5)),qVar"state")) ; val write'KDC_def = Def ("write'KDC",Var("value",CTy"Capability"), Close (qVar"state", Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Var("value",CTy"Capability"),LW(30,5)]),qVar"state"))) ; val EPCC_def = Def ("EPCC",qVar"state", Apply(Call("CAPR",ATy(qTy,CTy"Capability"),LW(31,5)),qVar"state")) ; val write'EPCC_def = Def ("write'EPCC",Var("value",CTy"Capability"), Close (qVar"state", Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Var("value",CTy"Capability"),LW(31,5)]),qVar"state"))) ; val allow_system_reg_access_def = Def ("allow_system_reg_access",TP[Var("p",CTy"Perms"),Var("r",FTy 5)], Close (qVar"state", ITE(Bop(And,Bop(Uge,Var("r",FTy 5),LW(27,5)), Mop(Not, Dest("Access_System_Registers",bTy,Var("p",CTy"Perms")))), LF, Mop(Not, Bop(And,EQ(Var("r",FTy 5),LW(26,5)), Dest("CCallBranchDelay",bTy,qVar"state")))))) ; val ExceptionCode_def = Def ("ExceptionCode",Var("e",CTy"ExceptionType"), CS(Var("e",CTy"ExceptionType"), [(LC("Int",CTy"ExceptionType"),LW(0,5)), (LC("Mod",CTy"ExceptionType"),LW(1,5)), (LC("TLBL",CTy"ExceptionType"),LW(2,5)), (LC("TLBS",CTy"ExceptionType"),LW(3,5)), (LC("AdEL",CTy"ExceptionType"),LW(4,5)), (LC("AdES",CTy"ExceptionType"),LW(5,5)), (LC("Sys",CTy"ExceptionType"),LW(8,5)), (LC("Bp",CTy"ExceptionType"),LW(9,5)), (LC("ResI",CTy"ExceptionType"),LW(10,5)), (LC("CpU",CTy"ExceptionType"),LW(11,5)), (LC("Ov",CTy"ExceptionType"),LW(12,5)), (LC("Tr",CTy"ExceptionType"),LW(13,5)), (LC("CTLBL",CTy"ExceptionType"),LW(16,5)), (LC("CTLBS",CTy"ExceptionType"),LW(17,5)), (LC("C2E",CTy"ExceptionType"),LW(18,5)), (LC("MCheck",CTy"ExceptionType"),LW(24,5)), (LC("XTLBRefillL",CTy"ExceptionType"),LW(2,5)), (LC("XTLBRefillS",CTy"ExceptionType"),LW(3,5))])) ; val capExcCode_def = Def ("capExcCode",Var("e",CTy"CapExceptionType"), CS(Var("e",CTy"CapExceptionType"), [(LC("capExcNone",CTy"CapExceptionType"),LW(0,8)), (LC("capExcLength",CTy"CapExceptionType"),LW(1,8)), (LC("capExcTag",CTy"CapExceptionType"),LW(2,8)), (LC("capExcSeal",CTy"CapExceptionType"),LW(3,8)), (LC("capExcType",CTy"CapExceptionType"),LW(4,8)), (LC("capExcCall",CTy"CapExceptionType"),LW(5,8)), (LC("capExcRet",CTy"CapExceptionType"),LW(6,8)), (LC("capExcUnderflowTSS",CTy"CapExceptionType"),LW(7,8)), (LC("capExcUser",CTy"CapExceptionType"),LW(8,8)), (LC("capExcTLBNoStore",CTy"CapExceptionType"),LW(9,8)), (LC("capExcInexact",CTy"CapExceptionType"),LW(10,8)), (LC("capExcGlobal",CTy"CapExceptionType"),LW(16,8)), (LC("capExcPermExe",CTy"CapExceptionType"),LW(17,8)), (LC("capExcPermLoad",CTy"CapExceptionType"),LW(18,8)), (LC("capExcPermStore",CTy"CapExceptionType"),LW(19,8)), (LC("capExcPermLoadCap",CTy"CapExceptionType"),LW(20,8)), (LC("capExcPermStoreCap",CTy"CapExceptionType"),LW(21,8)), (LC("capExcPermStoreLocalCap",CTy"CapExceptionType"),LW(22,8)), (LC("capExcPermSeal",CTy"CapExceptionType"),LW(23,8)), (LC("capExcAccessSysReg",CTy"CapExceptionType"),LW(24,8)), (LC("capExcPermCCall",CTy"CapExceptionType"),LW(25,8))])) ; val SignalException_def = Def ("SignalException",Var("ExceptionType",CTy"ExceptionType"), Close (qVar"state", Let(qVar"s", ITE(Mop(Not, Dest ("EXL",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), ITE(Bop(Or, Mop(IsSome, Apply (Const("BranchDelay",ATy(qTy,OTy F64)), qVar"state")), Mop(IsSome, Dest ("BranchDelayPCC", OTy(PTy(F64,CTy"Capability")),qVar"state"))), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("EPC", TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state"), Bop(Sub, Apply (Const("PC",ATy(qTy,F64)), qVar"state"),LW(4,64))])), qVar"state"), TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"), qVar"s0"]), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Cause", TP[Var("v",CTy"CP0"), Rupd ("BD", TP[Dest ("Cause",CTy"CauseRegister", Var("v",CTy"CP0")),LT])])), qVar"s")), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("EPC", TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state"), Apply (Const("PC",ATy(qTy,F64)), qVar"state")])),qVar"state"), TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"), qVar"s0"]), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Cause", TP[Var("v",CTy"CP0"), Rupd ("BD", TP[Dest ("Cause",CTy"CauseRegister", Var("v",CTy"CP0")),LF])])), qVar"s"))),qVar"state"), Let(TP[Var("v0",CTy"CP0"),qVar"s0"], Let(qVar"s0", ITE(Mop(IsSome,Dest("currentInst",OTy F32,qVar"s")), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("EInstr", TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"s"), Mop(ValOf, Dest("currentInst",OTy F32,qVar"s"))])), qVar"s"),qVar"s"), TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"), qVar"s0"]), Let(TP[Var("v0",CTy"CP0"),qVar"s0"], Let(qVar"s", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Cause", TP[Var("v0",CTy"CP0"), Rupd ("ExcCode", TP[Dest ("Cause",CTy"CauseRegister", Var("v0",CTy"CP0")), Call ("ExceptionCode",FTy 5, Var("ExceptionType", CTy"ExceptionType"))])])), qVar"s0"), TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s"), qVar"s"]), Let(Var("v0",F64), ITE(Dest ("BEV",bTy, Dest ("Status",CTy"StatusRegister", Var("v0",CTy"CP0"))), LW(18446744072631616000,64), LW(18446744071562067968,64)), Let(TP[Var("v1",CTy"Capability"),qVar"s0"], Let(qVar"s", Apply (Call ("write'exceptionSignalled", ATy(qTy,qTy),LT), Rupd ("BranchToPCC", TP[Rupd ("BranchDelayPCC", TP[Apply (Call ("write'BranchTo", ATy(qTy,qTy),LO F64), Apply (Call ("write'BranchDelay", ATy(qTy,qTy),LO F64), qVar"s0")), LO(PTy(F64,CTy"Capability"))]), LO(PTy(F64,CTy"Capability"))])), TP[Apply (Const("PCC",ATy(qTy,CTy"Capability")), qVar"s"),qVar"s"]), Let(qVar"s2", ITE(Mop(Not, Dest ("EXL",bTy, Dest ("Status",CTy"StatusRegister", Apply (Const ("CP0",ATy(qTy,CTy"CP0")), qVar"s0")))), Apply (Call ("write'EPCC",ATy(qTy,qTy), ITE(Mop(Not, Call ("canRepOffset",bTy, TP[Apply (Const ("PCC", ATy(qTy, CTy"Capability")), qVar"s0"), Apply (Const ("PC", ATy(qTy,F64)), qVar"s0")])), Call ("setOffset", CTy"Capability", TP[Const ("nullCap", CTy"Capability"), Bop(Add, Call ("getBase",F64, Apply (Const ("PCC", ATy(qTy, CTy"Capability")), qVar"s0")), Apply (Const ("PC", ATy(qTy,F64)), qVar"s0"))]), Call ("setOffset", CTy"Capability", TP[Var("v1",CTy"Capability"), Apply (Const ("PC",ATy(qTy,F64)), qVar"s0")]))), qVar"s0"),qVar"s0"), Let(qVar"s2", Apply (Call ("write'PCC",ATy(qTy,qTy), Apply (Const ("KCC", ATy(qTy,CTy"Capability")), qVar"s2")),qVar"s2"), Let(qVar"s1", Apply (Call ("write'PC",ATy(qTy,qTy), Bop(Sub, CC[EX(Var("v0",F64),LN 63, LN 30,FTy 34), Bop(Add, EX(Var("v0",F64), LN 29,LN 0, FTy 30), ITB([(Bop(And, Bop(Or, EQ(Var("ExceptionType", CTy"ExceptionType"), LC("XTLBRefillL", CTy"ExceptionType")), EQ(Var("ExceptionType", CTy"ExceptionType"), LC("XTLBRefillS", CTy"ExceptionType"))), Mop(Not, Dest ("EXL", bTy, Dest ("Status", CTy"StatusRegister", Apply (Const ("CP0", ATy(qTy, CTy"CP0")), qVar"s"))))), LW(128,30)), (Bop(And, EQ(Var("ExceptionType", CTy"ExceptionType"), LC("C2E", CTy"ExceptionType")), Bop(Or, EQ(Dest ("ExcCode", F8, Dest ("capcause", CTy"CapCause", qVar"s")), LW(5, 8)), EQ(Dest ("ExcCode", F8, Dest ("capcause", CTy"CapCause", qVar"s")), LW(6, 8)))), LW(640,30))], LW(384,30)))], Call ("getBase",F64, Apply (Const ("PCC", ATy(qTy, CTy"Capability")), qVar"s2")))), qVar"s2"), Let(Var("v",CTy"CP0"), Apply (Const ("CP0",ATy(qTy,CTy"CP0")), qVar"s1"), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Status", TP[Var("v",CTy"CP0"), Rupd ("EXL", TP[Dest ("Status", CTy"StatusRegister", Var("v", CTy"CP0")), LT])])), qVar"s1")))))))))))) ; val SignalCP1UnusableException_def = Def ("SignalCP1UnusableException",qVar"state", Let(Var("v",CTy"CP0"), Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Apply (Call ("SignalException",ATy(qTy,qTy),LC("CpU",CTy"ExceptionType")), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Cause", TP[Var("v",CTy"CP0"), Rupd ("CE", TP[Dest ("Cause",CTy"CauseRegister", Var("v",CTy"CP0")),LW(1,2)])])),qVar"state")))) ; val SignalCP2UnusableException_def = Def ("SignalCP2UnusableException",qVar"state", Let(Var("v",CTy"CP0"), Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Apply (Call ("SignalException",ATy(qTy,qTy),LC("CpU",CTy"ExceptionType")), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Cause", TP[Var("v",CTy"CP0"), Rupd ("CE", TP[Dest ("Cause",CTy"CauseRegister", Var("v",CTy"CP0")),LW(2,2)])])),qVar"state")))) ; val SignalCapException_internal_def = Def ("SignalCapException_internal", TP[Var("capException",CTy"CapExceptionType"),Var("regNum",F8)], Close (qVar"state", Let(qVar"s", Rupd ("capcause", TP[qVar"state", Rupd ("ExcCode", TP[Dest("capcause",CTy"CapCause",qVar"state"), Call ("capExcCode",F8, Var("capException",CTy"CapExceptionType"))])]), Apply (Call ("SignalException",ATy(qTy,qTy), LC("C2E",CTy"ExceptionType")), Rupd ("capcause", TP[qVar"s", Rupd ("RegNum", TP[Dest("capcause",CTy"CapCause",qVar"s"), Var("regNum",F8)])]))))) ; val SignalCapException_def = Def ("SignalCapException", TP[Var("capException",CTy"CapExceptionType"),Var("regNum",FTy 5)], Close (qVar"state", Apply (Call ("SignalCapException_internal",ATy(qTy,qTy), TP[Var("capException",CTy"CapExceptionType"), Mop(Cast F8,Var("regNum",FTy 5))]),qVar"state"))) ; val SignalCapException_noReg_def = Def ("SignalCapException_noReg",Var("capException",CTy"CapExceptionType"), Close (qVar"state", Apply (Call ("SignalCapException_internal",ATy(qTy,qTy), TP[Var("capException",CTy"CapExceptionType"),LW(255,8)]), qVar"state"))) ; val dfn'ERET_def = Def ("dfn'ERET",qVar"state", Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s",Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"), TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s"),qVar"s"]), ITE(Bop(Or, Dest ("CU0",bTy, Dest("Status",CTy"StatusRegister",Var("v",CTy"CP0"))), Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"s")), Let(TP[Var("v",CTy"Capability"),qVar"s"], Let(qVar"s0", Apply (Call("write'LLbit",ATy(qTy,qTy),Mop(Some,LF)), ITE(Dest ("ERL",bTy, Dest ("Status",CTy"StatusRegister", Apply (Const("CP0",ATy(qTy,CTy"CP0")),qVar"s"))), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'PC",ATy(qTy,qTy), Bop(Sub, Dest ("ErrorEPC",F64, Apply (Const ("CP0", ATy(qTy,CTy"CP0")), qVar"s")),LW(4,64))), qVar"s"), TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"s0"),qVar"s0"]), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Status", TP[Var("v",CTy"CP0"), Rupd ("ERL", TP[Dest ("Status", CTy"StatusRegister", Var("v",CTy"CP0")),LF])])), qVar"s")), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'PC",ATy(qTy,qTy), Bop(Sub, Dest ("EPC",F64, Apply (Const ("CP0", ATy(qTy,CTy"CP0")), qVar"s")),LW(4,64))), qVar"s"), TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"s0"),qVar"s0"]), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Status", TP[Var("v",CTy"CP0"), Rupd ("EXL", TP[Dest ("Status", CTy"StatusRegister", Var("v",CTy"CP0")),LF])])), qVar"s")))), TP[Apply (Const("EPCC",ATy(qTy,CTy"Capability")),qVar"s0"), qVar"s0"]), Apply (Call("write'PCC",ATy(qTy,qTy),Var("v",CTy"Capability")), qVar"s")), Apply (Call ("SignalException",ATy(qTy,qTy), LC("CpU",CTy"ExceptionType")),qVar"s")))) ; val TLBAssocEntries_def = Def0 ("TLBAssocEntries",LN 16) ; val TLBDirectEntries_def = Def0 ("TLBDirectEntries",LN 256) ; val TLBEntries_def = Def0 ("TLBEntries", Bop(Add,Const("TLBAssocEntries",nTy),Const("TLBDirectEntries",nTy))) ; val TLB_direct_def = Def ("TLB_direct",Var("i",F8), Close (qVar"state", Apply (Dest("c_TLB_direct",ATy(F8,OTy(CTy"TLBEntry")),qVar"state"), Var("i",F8)))) ; val write'TLB_direct_def = Def ("write'TLB_direct",TP[Var("value",OTy(CTy"TLBEntry")),Var("i",F8)], Close (qVar"state", Rupd ("c_TLB_direct", TP[qVar"state", Fupd (Dest("c_TLB_direct",ATy(F8,OTy(CTy"TLBEntry")),qVar"state"), Var("i",F8),Var("value",OTy(CTy"TLBEntry")))]))) ; val TLB_assoc_def = Def ("TLB_assoc",Var("i",F4), Close (qVar"state", Apply (Dest("c_TLB_assoc",ATy(F4,OTy(CTy"TLBEntry")),qVar"state"), Var("i",F4)))) ; val write'TLB_assoc_def = Def ("write'TLB_assoc",TP[Var("value",OTy(CTy"TLBEntry")),Var("i",F4)], Close (qVar"state", Rupd ("c_TLB_assoc", TP[qVar"state", Fupd (Dest("c_TLB_assoc",ATy(F4,OTy(CTy"TLBEntry")),qVar"state"), Var("i",F4),Var("value",OTy(CTy"TLBEntry")))]))) ; val switchCoreTLB_def = Def ("switchCoreTLB",Var("i",F8), Close (qVar"state", Let(qVar"s", Rupd ("all_TLB_direct", TP[qVar"state", Fupd (Dest ("all_TLB_direct",ATy(F8,ATy(F8,OTy(CTy"TLBEntry"))), qVar"state"),Dest("procID",F8,qVar"state"), Dest ("c_TLB_direct",ATy(F8,OTy(CTy"TLBEntry")), qVar"state"))]), Let(qVar"s", Rupd ("all_TLB_assoc", TP[qVar"s", Fupd (Dest ("all_TLB_assoc", ATy(F8,ATy(F4,OTy(CTy"TLBEntry"))),qVar"s"), Dest("procID",F8,qVar"s"), Dest ("c_TLB_assoc",ATy(F4,OTy(CTy"TLBEntry")),qVar"s"))]), Let(qVar"s", Rupd ("c_TLB_direct", TP[qVar"s", Apply (Dest ("all_TLB_direct", ATy(F8,ATy(F8,OTy(CTy"TLBEntry"))),qVar"s"), Var("i",F8))]), Rupd ("c_TLB_assoc", TP[qVar"s", Apply (Dest ("all_TLB_assoc", ATy(F8,ATy(F4,OTy(CTy"TLBEntry"))),qVar"s"), Var("i",F8))])))))) ; val LookupTLB_def = Def ("LookupTLB",TP[Var("r",FTy 2),Var("vpn2",FTy 27)], Close (qVar"state", Let(Var("s0",LTy(PTy(FTy 9,CTy"TLBEntry"))), LNL(PTy(FTy 9,CTy"TLBEntry")), Mop(Fst, Mop(Snd, Apply (For(TP[LN 0, Bop(Sub,Const("TLBAssocEntries",nTy),LN 1), Close (nVar"i", Close (Var("state", PTy(LTy(PTy(FTy 9,CTy"TLBEntry")), qTy)), CS(Apply (Call ("TLB_assoc", ATy(qTy,OTy(CTy"TLBEntry")), Mop(Cast F4,nVar"i")), Mop(Snd, Var("state", PTy(LTy(PTy(FTy 9, CTy"TLBEntry")), qTy)))), [(Mop(Some,Var("e",CTy"TLBEntry")), TP[LU, ITE(Bop(And, Bop(And, EQ(Dest ("R",FTy 2, Var("e", CTy"TLBEntry")), Var("r",FTy 2)), Bop(Or, Dest ("G",bTy, Var("e", CTy"TLBEntry")), EQ(Dest ("ASID",F8, Var("e", CTy"TLBEntry")), Dest ("ASID",F8, Dest ("EntryHi", CTy"EntryHi", Apply (Const ("CP0", ATy(qTy, CTy"CP0")), Mop(Snd, Var("state", PTy(LTy(PTy(FTy 9, CTy"TLBEntry")), qTy))))))))), Let(Var("nmask",FTy 27), Mop(BNot, Mop(Cast(FTy 27), Dest ("Mask", FTy 12, Var("e", CTy"TLBEntry")))), EQ(Bop(BAnd, Dest ("VPN2", FTy 27, Var("e", CTy"TLBEntry")), Var("nmask", FTy 27)), Bop(BAnd, Var("vpn2", FTy 27), Var("nmask", FTy 27))))), TP[LLC([TP[Mop(Cast(FTy 9), nVar"i"), Var("e", CTy"TLBEntry")]], Mop(Fst, Var("state", PTy(LTy(PTy(FTy 9, CTy"TLBEntry")), qTy)))), Mop(Snd, Var("state", PTy(LTy(PTy(FTy 9, CTy"TLBEntry")), qTy)))], Var("state", PTy(LTy(PTy(FTy 9, CTy"TLBEntry")), qTy)))]), (AVar(OTy(CTy"TLBEntry")), TP[LU, Var("state", PTy(LTy(PTy(FTy 9, CTy"TLBEntry")), qTy))])])))]), ITE(Dest ("LTLB",bTy, Dest ("Config6",CTy"ConfigRegister6", Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state"))), Let(Var("b",F8), EX(Var("vpn2",FTy 27),LN 7,LN 0,F8), CS(Apply (Call ("TLB_direct", ATy(qTy,OTy(CTy"TLBEntry")), Var("b",F8)),qVar"state"), [(Mop(Some,Var("e",CTy"TLBEntry")), TP[ITE(Bop(And, Bop(And, EQ(Dest ("R",FTy 2, Var("e", CTy"TLBEntry")), Var("r",FTy 2)), Bop(Or, Dest ("G",bTy, Var("e", CTy"TLBEntry")), EQ(Dest ("ASID",F8, Var("e", CTy"TLBEntry")), Dest ("ASID",F8, Dest ("EntryHi", CTy"EntryHi", Apply (Const ("CP0", ATy(qTy, CTy"CP0")), qVar"state")))))), Let(Var("nmask",FTy 27), Mop(BNot, Mop(Cast(FTy 27), Dest ("Mask",FTy 12, Var("e", CTy"TLBEntry")))), EQ(Bop(BAnd, Dest ("VPN2",FTy 27, Var("e", CTy"TLBEntry")), Var("nmask",FTy 27)), Bop(BAnd, Var("vpn2",FTy 27), Var("nmask",FTy 27))))), LL[TP[ITE(Bop(Le, Const ("TLBAssocEntries", nTy), Mop(Cast nTy, Var("b",F8))), Mop(Cast(FTy 9), Var("b",F8)), Bop(Add, Mop(Cast(FTy 9), Const ("TLBDirectEntries", nTy)), Mop(Cast(FTy 9), Var("b",F8)))), Var("e",CTy"TLBEntry")]], Var("s0", LTy(PTy(FTy 9,CTy"TLBEntry")))), qVar"state"]), (AVar(OTy(CTy"TLBEntry")), TP[Var("s0", LTy(PTy(FTy 9,CTy"TLBEntry"))), qVar"state"])])), TP[Var("s0",LTy(PTy(FTy 9,CTy"TLBEntry"))), qVar"state"]))))))) ; val SignalTLBException_internal_def = Def ("SignalTLBException_internal",TP[Var("asid",F8),Var("vAddr",F64)], Close (qVar"state", Let(Var("r",FTy 2),EX(Var("vAddr",F64),LN 63,LN 62,FTy 2), Let(Var("vpn2",FTy 27),EX(Var("vAddr",F64),LN 39,LN 13,FTy 27), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("BadVAddr", TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state"),Var("vAddr",F64)])), qVar"state"), TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"), qVar"s0"]), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("EntryHi", TP[Var("v",CTy"CP0"), Rupd ("R", TP[Dest ("EntryHi",CTy"EntryHi", Var("v",CTy"CP0")), Var("r",FTy 2)])])),qVar"s"), TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"), qVar"s0"]), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("EntryHi", TP[Var("v",CTy"CP0"), Rupd ("VPN2", TP[Dest ("EntryHi",CTy"EntryHi", Var("v",CTy"CP0")), Var("vpn2",FTy 27)])])), qVar"s"), TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"s0"),qVar"s0"]), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("EntryHi", TP[Var("v",CTy"CP0"), Rupd ("ASID", TP[Dest ("EntryHi", CTy"EntryHi", Var("v",CTy"CP0")), Var("asid",F8)])])), qVar"s"), TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"s0"),qVar"s0"]), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("XContext", TP[Var("v",CTy"CP0"), Rupd ("R", TP[Dest ("XContext", CTy"XContext", Var("v", CTy"CP0")), Var("r",FTy 2)])])), qVar"s"), TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"s0"),qVar"s0"]), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("XContext", TP[Var("v",CTy"CP0"), Rupd ("BadVPN2", TP[Dest ("XContext", CTy"XContext", Var("v", CTy"CP0")), Var("vpn2", FTy 27)])])), qVar"s"), TP[Apply (Const ("CP0",ATy(qTy,CTy"CP0")), qVar"s0"),qVar"s0"]), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Context", TP[Var("v",CTy"CP0"), Rupd ("BadVPN2", TP[Dest ("Context", CTy"Context", Var("v", CTy"CP0")), EX(Var("vAddr",F64), LN 31,LN 13, FTy 19)])])), qVar"s"))))))))))) ; val SignalTLBException_def = Def ("SignalTLBException", TP[Var("e",CTy"ExceptionType"),Var("asid",F8),Var("vAddr",F64)], Close (qVar"state", Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)), LS"tlb-translation"), Apply (Call ("SignalException",ATy(qTy,qTy), Var("e",CTy"ExceptionType")), Apply (Call ("SignalTLBException_internal",ATy(qTy,qTy), TP[Var("asid",F8),Var("vAddr",F64)]),qVar"state"))), TP[Apply (LX(ATy(PTy(nTy,sTy),PTy(FTy 40,FTy 3))), Var("v",PTy(nTy,sTy))),qVar"s"]))) ; val CheckSegment_def = Def ("CheckSegment",Var("vAddr",F64), Close (qVar"state", ITB([(Apply(Const("UserMode",ATy(qTy,bTy)),qVar"state"), TP[LO(PTy(FTy 40,FTy 3)), Bop(Ult,Var("vAddr",F64),LW(1099511627776,64))]), (Apply(Const("SupervisorMode",ATy(qTy,bTy)),qVar"state"), TP[LO(PTy(FTy 40,FTy 3)), Bop(Or,Bop(Ult,Var("vAddr",F64),LW(1099511627776,64)), Bop(Or, Bop(And, Bop(Ule,LW(4611686018427387904,64), Var("vAddr",F64)), Bop(Ult,Var("vAddr",F64), LW(4611687117939015680,64))), Bop(And, Bop(Ule,LW(18446744072635809792,64), Var("vAddr",F64)), Bop(Ult,Var("vAddr",F64), LW(18446744073172680704,64)))))]), (Bop(Ult,Var("vAddr",F64),LW(13835058055282163712,64)), ITB([(Bop(Ult,Var("vAddr",F64),LW(4611686018427387904,64)), TP[LO(PTy(FTy 40,FTy 3)), Bop(Ult,Var("vAddr",F64),LW(1099511627776,64))]), (Bop(Ule,LW(9223372036854775808,64),Var("vAddr",F64)), TP[Mop(Some, TP[EX(Var("vAddr",F64),LN 39,LN 0,FTy 40), EX(Var("vAddr",F64),LN 61,LN 59,FTy 3)]), EQ(EX(Var("vAddr",F64),LN 58,LN 40,FTy 19),LW(0,19))])], TP[LO(PTy(FTy 40,FTy 3)), Bop(Ult,Var("vAddr",F64),LW(4611687117939015680,64))])), (Bop(Ult,Var("vAddr",F64),LW(18446744072098938880,64)), ITE(Bop(Ule,LW(18446744071562067968,64),Var("vAddr",F64)), TP[Mop(Some, TP[Bop(Sub,EX(Var("vAddr",F64),LN 39,LN 0,FTy 40), LW(1097364144128,40)), Dest ("K0",FTy 3, Dest ("Config",CTy"ConfigRegister", Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state")))]),LT], TP[LO(PTy(FTy 40,FTy 3)), Bop(Ult,Var("vAddr",F64),LW(13835059152646307840,64))])), (Bop(Ult,Var("vAddr",F64),LW(18446744072635809792,64)), TP[Mop(Some, TP[Bop(Sub,EX(Var("vAddr",F64),LN 39,LN 0,FTy 40), LW(1097901015040,40)),LW(2,3)]),LT])], TP[LO(PTy(FTy 40,FTy 3)), Bop(Ule,LW(18446744072635809792,64),Var("vAddr",F64))]))) ; val checkMask_def = Def ("checkMask",Var("mask",FTy 12), CS(Var("mask",FTy 12), [(LW(0,12),Mop(Some,LN 12)),(LW(3,12),Mop(Some,LN 14)), (LW(15,12),Mop(Some,LN 16)),(LW(63,12),Mop(Some,LN 18)), (LW(255,12),Mop(Some,LN 20)),(LW(1023,12),Mop(Some,LN 22)), (LW(4095,12),Mop(Some,LN 24)),(AVar(FTy 12),LO nTy)])) ; val check_cca_def = Def ("check_cca",Var("cca",FTy 3), Close (qVar"state", ITE(Bop(In,Var("cca",FTy 3),SL[LW(0,3),LW(1,3),LW(7,3)]), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", CC[LS"CCA ",Mop(Cast sTy,Var("cca",FTy 3)), LS" Reserved"])),qVar"state")),qVar"state"))) ; val AddressTranslation_def = Def ("AddressTranslation", TP[Var("vAddr",F64),Var("AccessType",CTy"AccessType")], Close (qVar"state", Let(TP[Var("unmapped",OTy(PTy(FTy 40,FTy 3))),bVar"valid"], Apply (Call ("CheckSegment",ATy(qTy,PTy(OTy(PTy(FTy 40,FTy 3)),bTy)), Var("vAddr",F64)),qVar"state"), ITE(bVar"valid", CS(Var("unmapped",OTy(PTy(FTy 40,FTy 3))), [(Mop(Some,TP[Var("addr",FTy 40),Var("cca",FTy 3)]), TP[TP[Var("addr",FTy 40),Var("cca",FTy 3),LF,LF], Apply (Call("check_cca",ATy(qTy,qTy),Var("cca",FTy 3)), qVar"state")]), (AVar(OTy(PTy(FTy 40,FTy 3))), TP[TP[Mop(Cast(FTy 40),Var("vAddr",F64)),LW(0,3),LF,LF], qVar"state"])]), Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)), LS"tlb-translation"), Apply (Call ("SignalException",ATy(qTy,qTy), ITE(EQ(Var("AccessType",CTy"AccessType"), LC("LOAD",CTy"AccessType")), LC("AdEL",CTy"ExceptionType"), LC("AdES",CTy"ExceptionType"))), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("BadVAddr", TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state"),Var("vAddr",F64)])), qVar"state"))), TP[Apply (LX(ATy(PTy(nTy,sTy), PTy(FTy 40,PTy(FTy 3,PTy(bTy,bTy))))), Var("v",PTy(nTy,sTy))),qVar"s"]))))) ; val tlbTryTranslation_def = Def ("tlbTryTranslation",Var("vAddr",F64),LO(FTy 40)) ; val CP0TLBEntry_def = Def ("CP0TLBEntry",AVar uTy, Close (qVar"state", Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)), LS"tlb-entry"),qVar"state"), TP[Apply (LX(ATy(PTy(nTy,sTy),CTy"TLBEntry")),Var("v",PTy(nTy,sTy))), qVar"s"]))) ; val SignalTLBCapException_def = Def ("SignalTLBCapException", TP[Var("capException",CTy"CapExceptionType"),Var("asid",F8), Var("vAddr",F64)], Close (qVar"state", Mop(Snd, Apply (Call ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)), LS"tlb-cap-exception"), Apply (Call ("SignalCapException_noReg",ATy(qTy,qTy), Var("capException",CTy"CapExceptionType")), Apply (Call ("SignalTLBException_internal",ATy(qTy,qTy), TP[Var("asid",F8),Var("vAddr",F64)]),qVar"state")))))) ; val dfn'TLBP_def = Def ("dfn'TLBP",qVar"state", ITE(Bop(And, Mop(Not, Dest ("CU0",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Mop(Not,Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state"))), Apply (Call ("SignalException",ATy(qTy,qTy),LC("CpU",CTy"ExceptionType")), qVar"state"), CS(Apply (Call ("LookupTLB",ATy(qTy,LTy(PTy(FTy 9,CTy"TLBEntry"))), TP[Dest ("R",FTy 2, Dest ("EntryHi",CTy"EntryHi", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), Dest ("VPN2",FTy 27, Dest ("EntryHi",CTy"EntryHi", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))]), qVar"state"), [(LNL(PTy(FTy 9,CTy"TLBEntry")), Let(Var("v",CTy"CP0"), Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Index", TP[Var("v",CTy"CP0"), Rupd ("P", TP[Dest ("Index",CTy"Index", Var("v",CTy"CP0")),LT])])), qVar"state"), TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"), qVar"s0"]), Let(TP[Var("v0",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown", ATy(qTy,PTy(PTy(nTy,sTy),qTy)),LS"tlb-index"), qVar"s"), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Index", TP[Var("v",CTy"CP0"), Rupd ("Index", TP[Dest ("Index",CTy"Index", Var("v",CTy"CP0")), Apply (LX(ATy(PTy(nTy,sTy),FTy 9)), Var("v0",PTy(nTy,sTy)))])])), qVar"s"))))), (LL[TP[Var("i",FTy 9),AVar(CTy"TLBEntry")]], Let(Var("v",CTy"CP0"), Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Index", TP[Var("v",CTy"CP0"), Rupd ("P", TP[Dest ("Index",CTy"Index", Var("v",CTy"CP0")),LF])])), qVar"state"), TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"), qVar"s0"]), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Index", TP[Var("v",CTy"CP0"), Rupd ("Index", TP[Dest ("Index",CTy"Index", Var("v",CTy"CP0")),Var("i",FTy 9)])])), qVar"s")))), (AVar(LTy(PTy(FTy 9,CTy"TLBEntry"))), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"TLB: multiple matches")),qVar"state")))]))) ; val dfn'TLBR_def = Def ("dfn'TLBR",qVar"state", ITE(Bop(And, Mop(Not, Dest ("CU0",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Mop(Not,Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state"))), Apply (Call ("SignalException",ATy(qTy,qTy),LC("CpU",CTy"ExceptionType")), qVar"state"), Let(Var("v",FTy 9), Dest ("Index",FTy 9, Dest ("Index",CTy"Index", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), CS(ITE(Bop(Ge,Mop(Cast nTy,Var("v",FTy 9)), Const("TLBAssocEntries",nTy)), Apply (Call ("TLB_direct",ATy(qTy,OTy(CTy"TLBEntry")), EX(Var("v",FTy 9),LN 7,LN 0,F8)),qVar"state"), Apply (Call ("TLB_assoc",ATy(qTy,OTy(CTy"TLBEntry")), Mop(Cast F4,Var("v",FTy 9))),qVar"state")), [(Mop(Some,Var("e",CTy"TLBEntry")), Let(Var("v",CTy"CP0"), Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("PageMask", TP[Var("v",CTy"CP0"), Rupd ("Mask", TP[Dest ("PageMask",CTy"PageMask", Var("v",CTy"CP0")), Dest ("Mask",FTy 12, Var("e",CTy"TLBEntry"))])])), qVar"state"), TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"), qVar"s0"]), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("EntryHi", TP[Var("v",CTy"CP0"), Rupd ("R", TP[Dest ("EntryHi", CTy"EntryHi", Var("v",CTy"CP0")), Dest ("R",FTy 2, Var("e",CTy"TLBEntry"))])])), qVar"s"), TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"s0"),qVar"s0"]), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("EntryHi", TP[Var("v",CTy"CP0"), Rupd ("VPN2", TP[Dest ("EntryHi", CTy"EntryHi", Var("v",CTy"CP0")), Dest ("VPN2",FTy 27, Var("e", CTy"TLBEntry"))])])), qVar"s"), TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"s0"),qVar"s0"]), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("EntryHi", TP[Var("v",CTy"CP0"), Rupd ("ASID", TP[Dest ("EntryHi", CTy"EntryHi", Var("v", CTy"CP0")), Dest ("ASID",F8, Var("e", CTy"TLBEntry"))])])), qVar"s"), TP[Apply (Const ("CP0",ATy(qTy,CTy"CP0")), qVar"s0"),qVar"s0"]), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0", ATy(qTy,qTy), Rupd ("EntryLo1", TP[Var("v",CTy"CP0"), Rupd ("PFN", TP[Dest ("EntryLo1", CTy"EntryLo", Var("v", CTy"CP0")), Dest ("PFN1", FTy 28, Var("e", CTy"TLBEntry"))])])), qVar"s"), TP[Apply (Const ("CP0", ATy(qTy,CTy"CP0")), qVar"s0"),qVar"s0"]), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0", ATy(qTy,qTy), Rupd ("EntryLo1", TP[Var("v", CTy"CP0"), Rupd ("C", TP[Dest ("EntryLo1", CTy"EntryLo", Var("v", CTy"CP0")), Dest ("C1", FTy 3, Var("e", CTy"TLBEntry"))])])), qVar"s"), TP[Apply (Const ("CP0", ATy(qTy,CTy"CP0")), qVar"s0"),qVar"s0"]), Let(TP[Var("v",CTy"CP0"), qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0", ATy(qTy,qTy), Rupd ("EntryLo1", TP[Var("v", CTy"CP0"), Rupd ("D", TP[Dest ("EntryLo1", CTy"EntryLo", Var("v", CTy"CP0")), Dest ("D1", bTy, Var("e", CTy"TLBEntry"))])])), qVar"s"), TP[Apply (Const ("CP0", ATy(qTy, CTy"CP0")), qVar"s0"), qVar"s0"]), Let(TP[Var("v",CTy"CP0"), qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0", ATy(qTy,qTy), Rupd ("EntryLo1", TP[Var("v", CTy"CP0"), Rupd ("V", TP[Dest ("EntryLo1", CTy"EntryLo", Var("v", CTy"CP0")), Dest ("V1", bTy, Var("e", CTy"TLBEntry"))])])), qVar"s"), TP[Apply (Const ("CP0", ATy(qTy, CTy"CP0")), qVar"s0"), qVar"s0"]), Let(TP[Var("v", CTy"CP0"), qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0", ATy(qTy, qTy), Rupd ("EntryLo1", TP[Var("v", CTy"CP0"), Rupd ("G", TP[Dest ("EntryLo1", CTy"EntryLo", Var("v", CTy"CP0")), Dest ("G", bTy, Var("e", CTy"TLBEntry"))])])), qVar"s"), TP[Apply (Const ("CP0", ATy(qTy, CTy"CP0")), qVar"s0"), qVar"s0"]), Let(TP[Var("v", CTy"CP0"), qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0", ATy(qTy, qTy), Rupd ("EntryLo0", TP[Var("v", CTy"CP0"), Rupd ("PFN", TP[Dest ("EntryLo0", CTy"EntryLo", Var("v", CTy"CP0")), Dest ("PFN0", FTy 28, Var("e", CTy"TLBEntry"))])])), qVar"s"), TP[Apply (Const ("CP0", ATy(qTy, CTy"CP0")), qVar"s0"), qVar"s0"]), Let(TP[Var("v", CTy"CP0"), qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0", ATy(qTy, qTy), Rupd ("EntryLo0", TP[Var("v", CTy"CP0"), Rupd ("C", TP[Dest ("EntryLo0", CTy"EntryLo", Var("v", CTy"CP0")), Dest ("C0", FTy 3, Var("e", CTy"TLBEntry"))])])), qVar"s"), TP[Apply (Const ("CP0", ATy(qTy, CTy"CP0")), qVar"s0"), qVar"s0"]), Let(TP[Var("v", CTy"CP0"), qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0", ATy(qTy, qTy), Rupd ("EntryLo0", TP[Var("v", CTy"CP0"), Rupd ("D", TP[Dest ("EntryLo0", CTy"EntryLo", Var("v", CTy"CP0")), Dest ("D0", bTy, Var("e", CTy"TLBEntry"))])])), qVar"s"), TP[Apply (Const ("CP0", ATy(qTy, CTy"CP0")), qVar"s0"), qVar"s0"]), Let(TP[Var("v", CTy"CP0"), qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0", ATy(qTy, qTy), Rupd ("EntryLo0", TP[Var("v", CTy"CP0"), Rupd ("V", TP[Dest ("EntryLo0", CTy"EntryLo", Var("v", CTy"CP0")), Dest ("V0", bTy, Var("e", CTy"TLBEntry"))])])), qVar"s"), TP[Apply (Const ("CP0", ATy(qTy, CTy"CP0")), qVar"s0"), qVar"s0"]), Apply (Call ("write'CP0", ATy(qTy, qTy), Rupd ("EntryLo0", TP[Var("v", CTy"CP0"), Rupd ("G", TP[Dest ("EntryLo0", CTy"EntryLo", Var("v", CTy"CP0")), Dest ("G", bTy, Var("e", CTy"TLBEntry"))])])), qVar"s")))))))))))))))), (AVar(OTy(CTy"TLBEntry")), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"TLB: reading from invalid entry")), qVar"state")))])))) ; val dfn'TLBWI_def = Def ("dfn'TLBWI",qVar"state", ITB([(Bop(And, Mop(Not, Dest ("CU0",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Mop(Not,Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state"))), Apply (Call ("SignalException",ATy(qTy,qTy),LC("CpU",CTy"ExceptionType")), qVar"state")), (Mop(Not, Mop(IsSome, Call ("checkMask",OTy nTy, Dest ("Mask",FTy 12, Dest ("PageMask",CTy"PageMask", Apply (Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))))), Apply (Call ("SignalException",ATy(qTy,qTy), LC("MCheck",CTy"ExceptionType")),qVar"state")), (Bop(Lt, Mop(Cast nTy, Dest ("Index",FTy 9, Dest ("Index",CTy"Index", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Const("TLBAssocEntries",nTy)), Let(TP[Var("v0",CTy"TLBEntry"),qVar"s0"], Apply (Call("CP0TLBEntry",ATy(qTy,PTy(CTy"TLBEntry",qTy)),LU), qVar"state"), Apply (Call ("write'TLB_assoc",ATy(qTy,qTy), TP[Mop(Some,Var("v0",CTy"TLBEntry")), Mop(Cast F4, Dest ("Index",FTy 9, Dest ("Index",CTy"Index", Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state"))))]),qVar"s0"))), (Bop(Lt, Mop(Cast nTy, Dest ("Index",FTy 9, Dest ("Index",CTy"Index", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Const("TLBEntries",nTy)), Let(TP[Var("v0",CTy"TLBEntry"),qVar"s0"], Apply (Call("CP0TLBEntry",ATy(qTy,PTy(CTy"TLBEntry",qTy)),LU), qVar"state"), Apply (Call ("write'TLB_direct",ATy(qTy,qTy), TP[Mop(Some,Var("v0",CTy"TLBEntry")), EX(Dest ("VPN2",FTy 27, Dest ("EntryHi",CTy"EntryHi", Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state"))),LN 7,LN 0,F8)]),qVar"s0")))], Apply (Call ("SignalException",ATy(qTy,qTy), LC("MCheck",CTy"ExceptionType")),qVar"state"))) ; val dfn'TLBWR_def = Def ("dfn'TLBWR",qVar"state", ITB([(Bop(And, Mop(Not, Dest ("CU0",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Mop(Not,Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state"))), Apply (Call ("SignalException",ATy(qTy,qTy),LC("CpU",CTy"ExceptionType")), qVar"state")), (Mop(Not, Mop(IsSome, Call ("checkMask",OTy nTy, Dest ("Mask",FTy 12, Dest ("PageMask",CTy"PageMask", Apply (Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))))), Apply (Call ("SignalException",ATy(qTy,qTy), LC("MCheck",CTy"ExceptionType")),qVar"state")), (Dest ("LTLB",bTy, Dest ("Config6",CTy"ConfigRegister6", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), Let(Var("v",F8), EX(Dest ("VPN2",FTy 27, Dest ("EntryHi",CTy"EntryHi", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), LN 7,LN 0,F8), Let(TP[Var("v0",CTy"TLBEntry"),qVar"s"], Apply (Call("CP0TLBEntry",ATy(qTy,PTy(CTy"TLBEntry",qTy)),LU), CS(Apply (Call ("TLB_direct",ATy(qTy,OTy(CTy"TLBEntry")), Var("v",F8)),qVar"state"), [(Mop(Some,Var("old",CTy"TLBEntry")), Apply (Call ("write'TLB_assoc",ATy(qTy,qTy), TP[Mop(Some,Var("old",CTy"TLBEntry")), Mop(Cast F4, Dest ("Random",F8, Dest ("Random",CTy"Random", Apply (Const ("CP0",ATy(qTy,CTy"CP0")), qVar"state"))))]), qVar"state")), (AVar(OTy(CTy"TLBEntry")),qVar"state")])), Apply (Call ("write'TLB_direct",ATy(qTy,qTy), TP[Mop(Some,Var("v0",CTy"TLBEntry")),Var("v",F8)]), qVar"s"))))], Let(TP[Var("v0",CTy"TLBEntry"),qVar"s0"], Apply (Call("CP0TLBEntry",ATy(qTy,PTy(CTy"TLBEntry",qTy)),LU), qVar"state"), Apply (Call ("write'TLB_assoc",ATy(qTy,qTy), TP[Mop(Some,Var("v0",CTy"TLBEntry")), Mop(Cast F4, Dest ("Random",F8, Dest ("Random",CTy"Random", Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state"))))]),qVar"s0")))) ; val reg_name_def = Def ("reg_name",Var("n",FTy 5), CC[LS"$", CS(Var("n",FTy 5), [(LW(0,5),LS"zero"),(LW(1,5),LS"at"),(LW(2,5),LS"v0"), (LW(3,5),LS"v1"),(LW(4,5),LS"a0"),(LW(5,5),LS"a1"), (LW(6,5),LS"a2"),(LW(7,5),LS"a3"),(LW(8,5),LS"t0"), (LW(9,5),LS"t1"),(LW(10,5),LS"t2"),(LW(11,5),LS"t3"), (LW(12,5),LS"t4"),(LW(13,5),LS"t5"),(LW(14,5),LS"t6"), (LW(15,5),LS"t7"),(LW(16,5),LS"s0"),(LW(17,5),LS"s1"), (LW(18,5),LS"s2"),(LW(19,5),LS"s3"),(LW(20,5),LS"s4"), (LW(21,5),LS"s5"),(LW(22,5),LS"s6"),(LW(23,5),LS"s7"), (LW(24,5),LS"t8"),(LW(25,5),LS"t9"),(LW(26,5),LS"k0"), (LW(27,5),LS"k1"),(LW(28,5),LS"gp"),(LW(29,5),LS"sp"), (LW(30,5),LS"fp"),(LW(31,5),LS"ra")])]) ; val ihex_def = Def ("ihex",Var("n",BTy"N"), CC[ITE(Bop(Ult,Var("n",BTy"N"),LY(10,"N")),LS"",LS"0x"), Mop(ToLower,Mop(Cast sTy,Var("n",BTy"N")))]) ; val op1i_def = Def ("op1i",TP[sVar"s",Var("n",BTy"N")], CC[Mop(PadRight,TP[LSC #" ",LN 12,CC[sVar"s",LS" "]]), Call("ihex",sTy,Var("n",BTy"N"))]) ; val op1ai_def = Def ("op1ai",TP[sVar"s",Var("n",BTy"N")], CC[Mop(PadRight,TP[LSC #" ",LN 12,CC[sVar"s",LS" "]]), Call("ihex",sTy,Bop(Lsl,Mop(Cast F32,Var("n",BTy"N")),LN 2))]) ; val op1lai_def = Def ("op1lai",TP[sVar"s",Var("n",BTy"N")], CC[Mop(PadRight,TP[LSC #" ",LN 12,CC[sVar"s",LS" "]]), Call ("ihex",sTy, Bop(Lsl,Mop(Cast F32,Bop(Add,Var("n",BTy"N"),LY(1,"N"))),LN 2))]) ; val op1r_def = Def ("op1r",TP[sVar"s",Var("n",FTy 5)], CC[Mop(PadRight,TP[LSC #" ",LN 12,CC[sVar"s",LS" "]]), Call("reg_name",sTy,Var("n",FTy 5))]) ; val op1ri_def = Def ("op1ri",TP[sVar"s",Var("r1",FTy 5),Var("n",BTy"N")], CC[Call("op1r",sTy,TP[sVar"s",Var("r1",FTy 5)]),LS", ", Call("ihex",sTy,Var("n",BTy"N"))]) ; val op1rai_def = Def ("op1rai",TP[sVar"s",Var("r1",FTy 5),Var("n",BTy"N")], CC[Call("op1r",sTy,TP[sVar"s",Var("r1",FTy 5)]),LS", ", Call("ihex",sTy,Bop(Lsl,Mop(Cast F32,Var("n",BTy"N")),LN 2))]) ; val op1rlai_def = Def ("op1rlai",TP[sVar"s",Var("r1",FTy 5),Var("n",BTy"N")], CC[Call("op1r",sTy,TP[sVar"s",Var("r1",FTy 5)]),LS", ", Call ("ihex",sTy, Bop(Lsl,Mop(Cast F32,Bop(Add,Var("n",BTy"N"),LY(1,"N"))),LN 2))]) ; val op2r_def = Def ("op2r",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5)], CC[Call("op1r",sTy,TP[sVar"s",Var("r1",FTy 5)]),LS", ", Call("reg_name",sTy,Var("r2",FTy 5))]) ; val op2ri_def = Def ("op2ri",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("n",BTy"N")], CC[Call("op2r",sTy,TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5)]),LS", ", Call("ihex",sTy,Var("n",BTy"N"))]) ; val op2rai_def = Def ("op2rai",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("n",BTy"N")], CC[Call("op2r",sTy,TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5)]),LS", ", Call("ihex",sTy,Bop(Lsl,Mop(Cast F32,Var("n",BTy"N")),LN 2))]) ; val op2rlai_def = Def ("op2rlai",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("n",BTy"N")], CC[Call("op2r",sTy,TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5)]),LS", ", Call ("ihex",sTy, Bop(Lsl,Mop(Cast F32,Bop(Add,Var("n",BTy"N"),LY(1,"N"))),LN 2))]) ; val op3r_def = Def ("op3r",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("r3",FTy 5)], CC[Call("op2r",sTy,TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5)]),LS", ", Call("reg_name",sTy,Var("r3",FTy 5))]) ; val op2roi_def = Def ("op2roi",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("n",BTy"N")], CC[Call("op1r",sTy,TP[sVar"s",Var("r1",FTy 5)]),LS", ", Call("cpr",sTy,Var("r2",FTy 5)), ITE(EQ(Var("n",BTy"N"),LY(0,"N")),LS"", Call("ihex",sTy,Var("n",BTy"N")))]) ; val opmem_def = Def ("opmem",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("n",BTy"N")], CC[Call("op1ri",sTy,TP[sVar"s",Var("r1",FTy 5),Var("n",BTy"N")]),LS"(", Call("reg_name",sTy,Var("r2",FTy 5)),LS")"]) ; val op1fpr_def = Def ("op1fpr",TP[sVar"s",Var("n",FTy 5)], CC[Mop(PadRight,TP[LSC #" ",LN 12,CC[sVar"s",LS" "]]),LS"$f", Mop(Cast sTy,Mop(Cast nTy,Var("n",FTy 5)))]) ; val op1fpri_def = Def ("op1fpri",TP[sVar"s",Var("r1",FTy 5),Var("n",BTy"N")], CC[Call("op1fpr",sTy,TP[sVar"s",Var("r1",FTy 5)]),LS", ", Call("ihex",sTy,Var("n",BTy"N"))]) ; val op2fpr_def = Def ("op2fpr",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5)], CC[Call("op1fpr",sTy,TP[sVar"s",Var("r1",FTy 5)]),LS", ",LS"$f", Mop(Cast sTy,Mop(Cast nTy,Var("r2",FTy 5)))]) ; val op2rfpr_def = Def ("op2rfpr",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5)], CC[Call("op1r",sTy,TP[sVar"s",Var("r1",FTy 5)]),LS", ",LS"$f", Mop(Cast sTy,Mop(Cast nTy,Var("r2",FTy 5)))]) ; val op2rcfpr_def = Def ("op2rcfpr",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5)], CC[Call("op1r",sTy,TP[sVar"s",Var("r1",FTy 5)]),LS", $", Mop(Cast sTy,Mop(Cast nTy,Var("r2",FTy 5)))]) ; val op2ccfpr_def = Def ("op2ccfpr",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("n",FTy 3)], CC[Mop(PadRight,TP[LSC #" ",LN 12,CC[sVar"s",LS" "]]), ITE(EQ(Var("n",FTy 3),LW(0,3)),LS"", CC[LS"$fcc",Mop(Cast sTy,Mop(Cast nTy,Var("n",FTy 3))),LS", "]), CC[LS"$f",Mop(Cast sTy,Mop(Cast nTy,Var("r1",FTy 5)))],LS", ", LS"$f",Mop(Cast sTy,Mop(Cast nTy,Var("r2",FTy 5)))]) ; val op3fpr_def = Def ("op3fpr",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("r3",FTy 5)], CC[Call("op2fpr",sTy,TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5)]), LS", ",LS"$f",Mop(Cast sTy,Mop(Cast nTy,Var("r3",FTy 5)))]) ; val op4fpr_def = Def ("op4fpr", TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("r3",FTy 5), Var("r4",FTy 5)], CC[Call ("op3fpr",sTy, TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("r3",FTy 5)]), LS", ",LS"$f",Mop(Cast sTy,Mop(Cast nTy,Var("r4",FTy 5)))]) ; val opfpmem_def = Def ("opfpmem",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("n",BTy"N")], CC[Call("op1fpri",sTy,TP[sVar"s",Var("r1",FTy 5),Var("n",BTy"N")]), LS"(",Call("reg_name",sTy,Var("r2",FTy 5)),LS")"]) ; val opfpmem2_def = Def ("opfpmem2",TP[sVar"s",Var("r1",FTy 5),Var("r2",FTy 5),Var("r3",FTy 5)], CC[Call("op1fpr",sTy,TP[sVar"s",Var("r1",FTy 5)]),LS", ", Call("reg_name",sTy,Var("r3",FTy 5)),LS"(", Call("reg_name",sTy,Var("r2",FTy 5)),LS")"]) ; val form1_def = Def ("form1", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5), Var("function",FTy 6)], CC[LW(0,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), Var("imm5",FTy 5),Var("function",FTy 6)]) ; val form2_def = Def ("form2",TP[Var("rs",FTy 5),Var("function",FTy 5),Var("imm",F16)], CC[LW(1,6),Var("rs",FTy 5),Var("function",FTy 5),Var("imm",F16)]) ; val form3_def = Def ("form3", TP[Var("function",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), Var("sel",FTy 3)], CC[LW(16,6),Var("function",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,8),Var("sel",FTy 3)]) ; val form4_def = Def ("form4", TP[Var("function",FTy 6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)], CC[Var("function",FTy 6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)]) ; val form5_def = Def ("form5", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), Var("function",FTy 6)], CC[LW(28,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5), Var("function",FTy 6)]) ; val form6_def = Def ("form6",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("function",FTy 6)], CC[LW(31,6),LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5),LW(0,5), Var("function",FTy 6)]) ; val L1ISIZE_def = Def0 ("L1ISIZE",LN 32768) ; val L1IWAYS_def = Def0 ("L1IWAYS",LN 2) ; val L1DSIZE_def = Def0 ("L1DSIZE",LN 32768) ; val L1DWAYS_def = Def0 ("L1DWAYS",LN 4) ; val L1LINESIZE_def = Def0 ("L1LINESIZE",LN 128) ; val L2SIZE_def = Def0 ("L2SIZE",LN 262144) ; val L2WAYS_def = Def0 ("L2WAYS",LN 4) ; val L2LINESIZE_def = Def0 ("L2LINESIZE",LN 128) ; val isAligned_def = Def ("isAligned",TP[Var("vAddr",F64),Var("MemType",FTy 3)], EQ(Bop(BAnd,Mop(Cast(FTy 3),Var("vAddr",F64)),Var("MemType",FTy 3)), LW(0,3))) ; val AdjustEndian_def = Def ("AdjustEndian",TP[Var("MemType",FTy 3),Var("pAddr",FTy 40)], Close (qVar"state", CS(Var("MemType",FTy 3), [(LW(0,3), TP[Bop(BXor,Var("pAddr",FTy 40), Mop(Cast(FTy 40), REP(Apply (Const("ReverseEndian",ATy(qTy,F1)), qVar"state"),LN 3,FTy 3))),qVar"state"]), (LW(1,3), TP[Bop(BXor,Var("pAddr",FTy 40), Mop(Cast(FTy 40), CC[REP(Apply (Const("ReverseEndian",ATy(qTy,F1)), qVar"state"),LN 2,FTy 2),LW(0,1)])), qVar"state"]), (LW(3,3), TP[Bop(BXor,Var("pAddr",FTy 40), Mop(Cast(FTy 40), CC[Apply (Const("ReverseEndian",ATy(qTy,F1)),qVar"state"), LW(0,2)])),qVar"state"]), (LW(7,3),TP[Var("pAddr",FTy 40),qVar"state"]), (AVar(FTy 3), Apply (Call ("raise'exception",ATy(qTy,PTy(FTy 40,qTy)), Call ("UNPREDICTABLE",CTy"exception",LS"bad access length")), qVar"state"))]))) ; val InitMEM_def = Def ("InitMEM",qVar"state", Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)),LS"mem-data"), qVar"state"), Rupd ("mem", TP[qVar"s", Mop(K1(FTy 35), Call ("Raw",CTy"DataType", Apply (LX(ATy(PTy(nTy,sTy),FTy 256)),Var("v",PTy(nTy,sTy)))))]))) ; val ReadData_def = Def ("ReadData",Var("dwordAddr",FTy 37), Close (qVar"state", CS(Apply (Dest("mem",ATy(FTy 35,CTy"DataType"),qVar"state"), EX(Var("dwordAddr",FTy 37),LN 36, Bop(Sub,Mop(Log,Const("CAPBYTEWIDTH",nTy)),LN 3),FTy 35)), [(Call("Cap",CTy"DataType",Var("cap",CTy"Capability")), Call ("readDwordFromRaw",F64, TP[Var("dwordAddr",FTy 37), Call("capToBits",FTy 256,Var("cap",CTy"Capability"))])), (Call("Raw",CTy"DataType",Var("raw",FTy 256)), Call ("readDwordFromRaw",F64, TP[Var("dwordAddr",FTy 37),Var("raw",FTy 256)]))]))) ; val WriteData_def = Def ("WriteData", TP[Var("dwordAddr",FTy 37),Var("data",F64),Var("mask",F64)], Close (qVar"state", Rupd ("mem", TP[qVar"state", Fupd (Dest("mem",ATy(FTy 35,CTy"DataType"),qVar"state"), EX(Var("dwordAddr",FTy 37),LN 36, Bop(Sub,Mop(Log,Const("CAPBYTEWIDTH",nTy)),LN 3),FTy 35), Call ("Raw",CTy"DataType", Call ("updateDwordInRaw",FTy 256, TP[Var("dwordAddr",FTy 37),Var("data",F64), Var("mask",F64), CS(Apply (Dest ("mem",ATy(FTy 35,CTy"DataType"), qVar"state"), EX(Var("dwordAddr",FTy 37),LN 36, Bop(Sub, Mop(Log,Const("CAPBYTEWIDTH",nTy)), LN 3),FTy 35)), [(Call ("Cap",CTy"DataType", Var("cap",CTy"Capability")), Call ("capToBits",FTy 256, Var("cap",CTy"Capability"))), (Call("Raw",CTy"DataType",Var("raw",FTy 256)), Var("raw",FTy 256))])])))]))) ; val ReadInst_def = Def ("ReadInst",Var("a",FTy 40), Close (qVar"state", Let(Var("v",F64), CS(Apply (Dest("mem",ATy(FTy 35,CTy"DataType"),qVar"state"), EX(Var("a",FTy 40),LN 39, Mop(Log,Const("CAPBYTEWIDTH",nTy)),FTy 35)), [(Call("Cap",CTy"DataType",Var("cap",CTy"Capability")), Call ("readDwordFromRaw",F64, TP[EX(Var("a",FTy 40),LN 39,LN 3,FTy 37), Call("capToBits",FTy 256,Var("cap",CTy"Capability"))])), (Call("Raw",CTy"DataType",Var("raw",FTy 256)), Call ("readDwordFromRaw",F64, TP[EX(Var("a",FTy 40),LN 39,LN 3,FTy 37), Var("raw",FTy 256)]))]), ITE(Bop(Bit,Var("a",FTy 40),LN 2), EX(Var("v",F64),LN 31,LN 0,F32), EX(Var("v",F64),LN 63,LN 32,F32))))) ; val ReadCap_def = Def ("ReadCap",Var("capAddr",FTy 35), Close (qVar"state", CS(Apply (Dest("mem",ATy(FTy 35,CTy"DataType"),qVar"state"), Var("capAddr",FTy 35)), [(Call("Cap",CTy"DataType",Var("cap",CTy"Capability")), Var("cap",CTy"Capability")), (Call("Raw",CTy"DataType",Var("raw",FTy 256)), Call("bitsToCap",CTy"Capability",Var("raw",FTy 256)))]))) ; val WriteCap_def = Def ("WriteCap",TP[Var("capAddr",FTy 35),Var("cap",CTy"Capability")], Close (qVar"state", Rupd ("mem", TP[qVar"state", Fupd (Dest("mem",ATy(FTy 35,CTy"DataType"),qVar"state"), Var("capAddr",FTy 35), Call("Cap",CTy"DataType",Var("cap",CTy"Capability")))]))) ; val WriteDWORD_def = Def ("WriteDWORD",TP[Var("dwordAddr",FTy 37),Var("data",F64)], Close (qVar"state", Rupd ("mem", TP[qVar"state", Fupd (Dest("mem",ATy(FTy 35,CTy"DataType"),qVar"state"), EX(Var("dwordAddr",FTy 37),LN 36, Bop(Sub,Mop(Log,Const("CAPBYTEWIDTH",nTy)),LN 3),FTy 35), Call ("Raw",CTy"DataType", Call ("updateDwordInRaw",FTy 256, TP[Var("dwordAddr",FTy 37),Var("data",F64), Mop(BNot,LW(0,64)), CS(Apply (Dest ("mem",ATy(FTy 35,CTy"DataType"), qVar"state"), EX(Var("dwordAddr",FTy 37),LN 36, Bop(Sub, Mop(Log,Const("CAPBYTEWIDTH",nTy)), LN 3),FTy 35)), [(Call ("Cap",CTy"DataType", Var("cap",CTy"Capability")), Mop(Cast(FTy 256), Call ("reg'Capability",FTy 257, Var("cap",CTy"Capability")))), (Call("Raw",CTy"DataType",Var("raw",FTy 256)), Var("raw",FTy 256))])])))]))) ; val Write256_def = Def ("Write256",TP[Var("addr",FTy 35),Var("data",FTy 256)], Close (qVar"state", Rupd ("mem", TP[qVar"state", Fupd (Dest("mem",ATy(FTy 35,CTy"DataType"),qVar"state"), Var("addr",FTy 35), Call("Raw",CTy"DataType",Var("data",FTy 256)))]))) ; val getVirtualAddress_def = Def ("getVirtualAddress",Var("addr",F64), Close (qVar"state", Bop(Add, Bop(Add,Var("addr",F64), Call ("getBase",F64, Apply (Call("CAPR",ATy(qTy,CTy"Capability"),LW(0,5)), qVar"state"))), Call ("getOffset",F64, Apply (Call("CAPR",ATy(qTy,CTy"Capability"),LW(0,5)),qVar"state"))))) ; val LoadMemoryCap_def = Def ("LoadMemoryCap", TP[Var("MemType",FTy 3),bVar"needAlign",Var("vAddr",F64),bVar"link"], Close (qVar"state", ITE(Bop(And,bVar"needAlign", Mop(Not, Call ("isAligned",bTy, TP[Var("vAddr",F64),Var("MemType",FTy 3)]))), Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)), LS"mem-data"), Apply (Call ("SignalException",ATy(qTy,qTy), LC("AdEL",CTy"ExceptionType")), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("BadVAddr", TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state"),Var("vAddr",F64)])), qVar"state"))), TP[Apply(LX(ATy(PTy(nTy,sTy),F64)),Var("v",PTy(nTy,sTy))), qVar"s"]), Let(TP[Var("v",FTy 40),qVar"s"], Apply (Call ("AdjustEndian",ATy(qTy,PTy(FTy 40,qTy)), TP[Var("MemType",FTy 3), Mop(Cast(FTy 40),Var("vAddr",F64))]),qVar"state"), Let(qVar"s0", ITE(bVar"link", Let(TP[Var("v0",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'LLbit",ATy(qTy,qTy), Mop(Some,LT)),qVar"s"), TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"s0"),qVar"s0"]), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("LLAddr", TP[Var("v0",CTy"CP0"), Mop(Cast F64,Var("v",FTy 40))])), qVar"s")), Apply (Call("write'LLbit",ATy(qTy,qTy),LO bTy),qVar"s")), TP[Apply (Call ("ReadData",ATy(qTy,F64), EX(Var("v",FTy 40),LN 39,LN 3,FTy 37)),qVar"s0"), qVar"s0"]))))) ; val LoadMemory_def = Def ("LoadMemory", TP[Var("MemType",FTy 3),Var("AccessLength",FTy 3),bVar"needAlign", Var("vAddr",F64),bVar"link"], Close (qVar"state", Let(Var("v",CTy"Capability"), Apply(Call("CAPR",ATy(qTy,CTy"Capability"),LW(0,5)),qVar"state"), Let(TP[Var("base",F64),Var("len",F64)], Call ("getBaseAndLength",PTy(F64,F64), Apply (Call("CAPR",ATy(qTy,CTy"Capability"),LW(0,5)), qVar"state")), ITB([(Mop(Not,Call("getTag",bTy,Var("v",CTy"Capability"))), Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown", ATy(qTy,PTy(PTy(nTy,sTy),qTy)),LS"mem-data"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"), LW(0,5)]),qVar"state")), TP[Apply (LX(ATy(PTy(nTy,sTy),F64)), Var("v",PTy(nTy,sTy))),qVar"s"])), (Call("getSealed",bTy,Var("v",CTy"Capability")), Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown", ATy(qTy,PTy(PTy(nTy,sTy),qTy)),LS"mem-data"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), LW(0,5)]),qVar"state")), TP[Apply (LX(ATy(PTy(nTy,sTy),F64)), Var("v",PTy(nTy,sTy))),qVar"s"])), (Mop(Not, Dest ("Permit_Load",bTy, Call ("getPerms",CTy"Perms", Var("v",CTy"Capability")))), Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown", ATy(qTy,PTy(PTy(nTy,sTy),qTy)),LS"mem-data"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcPermLoad", CTy"CapExceptionType"),LW(0,5)]), qVar"state")), TP[Apply (LX(ATy(PTy(nTy,sTy),F64)), Var("v",PTy(nTy,sTy))),qVar"s"])), (Bop(Ult,Var("vAddr",F64), Call("getBase",F64,Var("v",CTy"Capability"))), Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown", ATy(qTy,PTy(PTy(nTy,sTy),qTy)),LS"mem-data"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength", CTy"CapExceptionType"),LW(0,5)]), qVar"state")), TP[Apply (LX(ATy(PTy(nTy,sTy),F64)), Var("v",PTy(nTy,sTy))),qVar"s"])), (Bop(Ugt, Bop(Add, Bop(Add,CC[LW(0,1),Var("vAddr",F64)], Mop(Cast(FTy 65),Var("AccessLength",FTy 3))), LW(1,65)), Bop(Add,CC[LW(0,1),Var("base",F64)], CC[LW(0,1),Var("len",F64)])), Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown", ATy(qTy,PTy(PTy(nTy,sTy),qTy)),LS"mem-data"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength", CTy"CapExceptionType"),LW(0,5)]), qVar"state")), TP[Apply (LX(ATy(PTy(nTy,sTy),F64)), Var("v",PTy(nTy,sTy))),qVar"s"]))], Apply (Call ("LoadMemoryCap",ATy(qTy,PTy(F64,qTy)), TP[Var("MemType",FTy 3),bVar"needAlign", Var("vAddr",F64),bVar"link"]),qVar"state")))))) ; val LoadCap_def = Def ("LoadCap",TP[Var("vAddr",F64),bVar"link"], Close (qVar"state", Let(qVar"s", ITE(bVar"link", Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s", Apply (Call("write'LLbit",ATy(qTy,qTy),Mop(Some,LT)), qVar"state"), TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s"), qVar"s"]), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("LLAddr",TP[Var("v",CTy"CP0"),Var("vAddr",F64)])), qVar"s")), Apply(Call("write'LLbit",ATy(qTy,qTy),LO bTy),qVar"state")), TP[Apply (Call ("ReadCap",ATy(qTy,CTy"Capability"), EX(Var("vAddr",F64),LN 39, Mop(Log,Const("CAPBYTEWIDTH",nTy)),FTy 35)),qVar"s"), qVar"s"]))) ; val StoreMemoryCap_def = Def ("StoreMemoryCap", TP[Var("MemType",FTy 3),Var("AccessLength",FTy 3),Var("MemElem",F64), bVar"needAlign",Var("vAddr",F64),bVar"cond"], Close (qVar"state", ITE(Bop(And,bVar"needAlign", Mop(Not, Call ("isAligned",bTy, TP[Var("vAddr",F64),Var("MemType",FTy 3)]))), Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)), LS"sc-success"), Apply (Call ("SignalException",ATy(qTy,qTy), LC("AdES",CTy"ExceptionType")), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("BadVAddr", TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state"),Var("vAddr",F64)])), qVar"state"))), TP[Apply(LX(ATy(PTy(nTy,sTy),bTy)),Var("v",PTy(nTy,sTy))), qVar"s"]), Let(TP[Var("v",FTy 40),qVar"s"], Apply (Call ("AdjustEndian",ATy(qTy,PTy(FTy 40,qTy)), TP[Var("MemType",FTy 3), Mop(Cast(FTy 40),Var("vAddr",F64))]),qVar"state"), Let(TP[bVar"v0",qVar"s"], ITE(bVar"cond", CS(Apply(Const("LLbit",ATy(qTy,OTy bTy)),qVar"s"), [(LO bTy, Apply (Call ("raise'exception",ATy(qTy,PTy(bTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"conditional store: LLbit not set")), qVar"s")),(Mop(Some,LF),TP[LF,qVar"s"]), (Mop(Some,LT), ITE(EQ(Dest ("LLAddr",F64, Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"s")), Mop(Cast F64,Var("v",FTy 40))), TP[LT,qVar"s"], Apply (Call ("raise'exception", ATy(qTy,PTy(bTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS "conditional store: address does not match previous LL address")), qVar"s")))]),TP[LF,qVar"s"]), Let(qVar"s", Apply (Call("write'LLbit",ATy(qTy,qTy),LO bTy),qVar"s"), Let(qVar"s", Mop(Snd, Apply (For(TP[LN 0, Bop(Sub, Dest("totalCore",nTy,qVar"s"), LN 1), Close (nVar"core", Close (qVar"state", Let(Var("i",F8), Mop(Cast F8,nVar"core"), Let(Var("v1", CTy"procState"), Apply (Dest ("all_state", ATy(F8, CTy"procState"), qVar"state"), Var("i",F8)), TP[LU, ITE(Bop(And, Mop(Not, EQ(Var("i", F8), Dest ("procID", F8, qVar"state"))), Bop(And, Bop(Or, Mop(Not, bVar"cond"), bVar"v0"), Bop(And, EQ(Dest ("c_LLbit", OTy bTy, Var("v1", CTy"procState")), Mop(Some, LT)), EQ(EX(Dest ("LLAddr", F64, Dest ("c_CP0", CTy"CP0", Var("v1", CTy"procState"))), LN 39, LN 3, FTy 37), EX(Var("v", FTy 40), LN 39, LN 3, FTy 37))))), Rupd ("all_state", TP[qVar"state", Fupd (Dest ("all_state", ATy(F8, CTy"procState"), qVar"state"), Var("i", F8), Rupd ("c_LLbit", TP[Apply (Dest ("all_state", ATy(F8, CTy"procState"), qVar"state"), Var("i", F8)), Mop(Some, LF)]))]), qVar"state")]))))]), qVar"s")), TP[bVar"v0", ITE(Bop(Or,Mop(Not,bVar"cond"),bVar"v0"), Let(nVar"x", Bop(Mul,LN 8, Bop(Add, Mop(Cast nTy, Var("AccessLength",FTy 3)), LN 1)), Apply (Call ("WriteData",ATy(qTy,qTy), TP[EX(Var("v",FTy 40),LN 39, LN 3,FTy 37), Var("MemElem",F64), Bop(Lsl, Bop(Sub, Bop(Lsl,LW(1,64), nVar"x"), LW(1,64)), Bop(Sub,LN 64, Bop(Add,nVar"x", Bop(Mul,LN 8, Mop(Cast nTy, EX(Var("vAddr", F64), LN 2, LN 0, FTy 3))))))]), qVar"s")),qVar"s")]))))))) ; val StoreMemory_def = Def ("StoreMemory", TP[Var("MemType",FTy 3),Var("AccessLength",FTy 3),bVar"needAlign", Var("MemElem",F64),Var("vAddr",F64),bVar"cond"], Close (qVar"state", Let(Var("v",CTy"Capability"), Apply(Call("CAPR",ATy(qTy,CTy"Capability"),LW(0,5)),qVar"state"), Let(TP[Var("base",F64),Var("len",F64)], Call ("getBaseAndLength",PTy(F64,F64),Var("v",CTy"Capability")), ITB([(Mop(Not,Call("getTag",bTy,Var("v",CTy"Capability"))), Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown", ATy(qTy,PTy(PTy(nTy,sTy),qTy)), LS"sc-success"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"), LW(0,5)]),qVar"state")), TP[Apply (LX(ATy(PTy(nTy,sTy),bTy)), Var("v",PTy(nTy,sTy))),qVar"s"])), (Call("getSealed",bTy,Var("v",CTy"Capability")), Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown", ATy(qTy,PTy(PTy(nTy,sTy),qTy)), LS"sc-success"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), LW(0,5)]),qVar"state")), TP[Apply (LX(ATy(PTy(nTy,sTy),bTy)), Var("v",PTy(nTy,sTy))),qVar"s"])), (Mop(Not, Dest ("Permit_Store",bTy, Call ("getPerms",CTy"Perms", Var("v",CTy"Capability")))), Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown", ATy(qTy,PTy(PTy(nTy,sTy),qTy)), LS"sc-success"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcPermStore", CTy"CapExceptionType"),LW(0,5)]), qVar"state")), TP[Apply (LX(ATy(PTy(nTy,sTy),bTy)), Var("v",PTy(nTy,sTy))),qVar"s"])), (Bop(Ult,Var("vAddr",F64), Call("getBase",F64,Var("v",CTy"Capability"))), Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown", ATy(qTy,PTy(PTy(nTy,sTy),qTy)), LS"sc-success"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength", CTy"CapExceptionType"),LW(0,5)]), qVar"state")), TP[Apply (LX(ATy(PTy(nTy,sTy),bTy)), Var("v",PTy(nTy,sTy))),qVar"s"])), (Bop(Ugt, Bop(Add, Bop(Add,CC[LW(0,1),Var("vAddr",F64)], Mop(Cast(FTy 65),Var("AccessLength",FTy 3))), LW(1,65)), Bop(Add,CC[LW(0,1),Var("base",F64)], CC[LW(0,1),Var("len",F64)])), Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown", ATy(qTy,PTy(PTy(nTy,sTy),qTy)), LS"sc-success"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength", CTy"CapExceptionType"),LW(0,5)]), qVar"state")), TP[Apply (LX(ATy(PTy(nTy,sTy),bTy)), Var("v",PTy(nTy,sTy))),qVar"s"]))], Apply (Call ("StoreMemoryCap",ATy(qTy,PTy(bTy,qTy)), TP[Var("MemType",FTy 3),Var("AccessLength",FTy 3), Var("MemElem",F64),bVar"needAlign", Var("vAddr",F64),bVar"cond"]),qVar"state")))))) ; val StoreCap_def = Def ("StoreCap",TP[Var("vAddr",F64),Var("cap",CTy"Capability"),bVar"cond"], Close (qVar"state", Let(TP[bVar"r",Var("s1",PTy(bTy,qTy))], Let(Var("s",PTy(bTy,qTy)), ITE(bVar"cond", CS(Apply(Const("LLbit",ATy(qTy,OTy bTy)),qVar"state"), [(LO bTy, TP[LF, Mop(Snd, Apply (Call ("raise'exception", ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS "conditional store of capability: LLbit not set")), qVar"state"))]), (Mop(Some,LF),TP[LF,qVar"state"]), (Mop(Some,LT), ITE(EQ(Dest ("LLAddr",F64, Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state")),Var("vAddr",F64)), TP[LT,qVar"state"], TP[LF, Mop(Snd, Apply (Call ("raise'exception", ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS "conditional store of capability: address does not match previous LL address")), qVar"state"))]))]),TP[LF,qVar"state"]), Let(qVar"s1", Apply (Call("write'LLbit",ATy(qTy,qTy),LO bTy), Mop(Snd,Var("s",PTy(bTy,qTy)))), Let(Var("s",PTy(bTy,qTy)), Let(Var("s",PTy(bTy,qTy)), Mop(Snd, Apply (For(TP[LN 0, Bop(Sub, Dest("totalCore",nTy,qVar"s1"), LN 1), Close (nVar"core", Close (Var("state",PTy(bTy,qTy)), Let(Var("i",F8), Mop(Cast F8,nVar"core"), Let(Var("v", CTy"procState"), Apply (Dest ("all_state", ATy(F8, CTy"procState"), Mop(Snd, Var("state", PTy(bTy, qTy)))), Var("i",F8)), TP[LU, ITE(Bop(And, Mop(Not, EQ(Var("i", F8), Dest ("procID", F8, Mop(Snd, Var("state", PTy(bTy, qTy)))))), Bop(And, Bop(Or, Mop(Not, bVar"cond"), Mop(Fst, Var("state", PTy(bTy, qTy)))), Bop(And, EQ(Dest ("c_LLbit", OTy bTy, Var("v", CTy"procState")), Mop(Some, LT)), EQ(EX(Dest ("LLAddr", F64, Dest ("c_CP0", CTy"CP0", Var("v", CTy"procState"))), LN 39, Mop(Log, Const ("CAPBYTEWIDTH", nTy)), FTy 35), EX(Var("vAddr", F64), LN 39, Mop(Log, Const ("CAPBYTEWIDTH", nTy)), FTy 35))))), TP[Mop(Fst, Var("state", PTy(bTy, qTy))), Rupd ("all_state", TP[Mop(Snd, Var("state", PTy(bTy, qTy))), Fupd (Dest ("all_state", ATy(F8, CTy"procState"), Mop(Snd, Var("state", PTy(bTy, qTy)))), Var("i", F8), Rupd ("c_LLbit", TP[Apply (Dest ("all_state", ATy(F8, CTy"procState"), Mop(Snd, Var("state", PTy(bTy, qTy)))), Var("i", F8)), Mop(Some, LF)]))])], Var("state", PTy(bTy, qTy)))]))))]), TP[Mop(Fst,Var("s",PTy(bTy,qTy))), qVar"s1"])), ITE(Bop(Or,Mop(Not,bVar"cond"), Mop(Fst,Var("s",PTy(bTy,qTy)))), TP[Mop(Fst,Var("s",PTy(bTy,qTy))), Apply (Call ("WriteCap",ATy(qTy,qTy), TP[EX(Var("vAddr",F64),LN 39, Mop(Log, Const("CAPBYTEWIDTH",nTy)), FTy 35), Var("cap",CTy"Capability")]), Mop(Snd,Var("s",PTy(bTy,qTy))))], Var("s",PTy(bTy,qTy)))), TP[Mop(Fst,Var("s",PTy(bTy,qTy))), Var("s",PTy(bTy,qTy))]))), TP[bVar"r",Mop(Snd,Var("s1",PTy(bTy,qTy)))]))) ; val Fetch_def = Def ("Fetch",qVar"state", Let(Var("v",CTy"CP0"), Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Random", TP[Var("v",CTy"CP0"), Rupd ("Random", TP[Dest ("Random",CTy"Random",Var("v",CTy"CP0")), ITE(EQ(Dest ("Random",F8, Dest ("Random",CTy"Random", Apply (Const ("CP0", ATy(qTy,CTy"CP0")), qVar"state"))), Dest ("Wired",F8, Dest ("Wired",CTy"Wired", Apply (Const ("CP0", ATy(qTy,CTy"CP0")), qVar"state")))), Mop(Cast F8, Bop(Sub, Const("TLBAssocEntries",nTy), LN 1)), Bop(Sub, Dest ("Random",F8, Dest ("Random",CTy"Random", Apply (Const ("CP0", ATy(qTy,CTy"CP0")), qVar"state"))),LW(1,8)))])])), qVar"state"), TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"),qVar"s0"]), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", ITE(EQ(Dest("Compare",F32,Var("v",CTy"CP0")), Dest ("Count",F32, Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s"))), Let(Var("v",CTy"CP0"), Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s"), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Let(Var("x0",CTy"CauseRegister"), Dest ("Cause",CTy"CauseRegister", Var("v",CTy"CP0")), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Cause", TP[Var("v",CTy"CP0"), Rupd ("IP", TP[Var("x0", CTy"CauseRegister"), BFI(LN 7,LN 7, Mop(Cast F1, LT), Dest ("IP",F8, Var("x0", CTy"CauseRegister")))])])), qVar"s")), TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"s0"),qVar"s0"]), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Cause", TP[Var("v",CTy"CP0"), Rupd ("TI", TP[Dest ("Cause", CTy"CauseRegister", Var("v",CTy"CP0")),LT])])), qVar"s"))),qVar"s"), TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"), qVar"s0"]), Let(TP[bVar"v",qVar"s"], Let(qVar"s0", ITE(Bop(And, Dest ("IE",bTy, Dest ("Status",CTy"StatusRegister", Var("v",CTy"CP0"))), Mop(Not, Bop(Or, Dest ("EXL",bTy, Dest ("Status",CTy"StatusRegister", Apply (Const ("CP0",ATy(qTy,CTy"CP0")), qVar"s"))), Dest ("ERL",bTy, Dest ("Status",CTy"StatusRegister", Apply (Const ("CP0",ATy(qTy,CTy"CP0")), qVar"s")))))), ITE(Mop(Not, EQ(Bop(BAnd, EX(Dest ("IM",F8, Dest ("Status", CTy"StatusRegister", Apply (Const ("CP0", ATy(qTy,CTy"CP0")), qVar"s"))),LN 7, LN 2,FTy 6), EX(Dest ("IP",F8, Dest ("Cause", CTy"CauseRegister", Apply (Const ("CP0", ATy(qTy,CTy"CP0")), qVar"s"))),LN 7, LN 2,FTy 6)),LW(0,6))), Apply (Call ("SignalException",ATy(qTy,qTy), LC("Int",CTy"ExceptionType")),qVar"s"), qVar"s"),qVar"s"), TP[Apply (Const("exceptionSignalled",ATy(qTy,bTy)), qVar"s0"),qVar"s0"]), ITB([(bVar"v",TP[LO F32,qVar"s"]), (EQ(EX(Apply(Const("PC",ATy(qTy,F64)),qVar"s"), LN 1,LN 0,FTy 2),LW(0,2)), Let(Var("v",F64), Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"s"), Call ("getBase",F64, Apply (Const ("PCC",ATy(qTy,CTy"Capability")), qVar"s"))), ITB([(Mop(Not, Call ("getTag",bTy, Apply (Const ("PCC", ATy(qTy,CTy"Capability")), qVar"s"))), TP[LO F32, Apply (Call ("SignalCapException_noReg", ATy(qTy,qTy), LC("capExcTag", CTy"CapExceptionType")), qVar"s")]), (Call ("getSealed",bTy, Apply (Const ("PCC",ATy(qTy,CTy"Capability")), qVar"s")), TP[LO F32, Apply (Call ("SignalCapException_noReg", ATy(qTy,qTy), LC("capExcSeal", CTy"CapExceptionType")), qVar"s")]), (Bop(Ult,Var("v",F64), Call ("getBase",F64, Apply (Const ("PCC", ATy(qTy,CTy"Capability")), qVar"s"))), TP[LO F32, Apply (Call ("SignalCapException_noReg", ATy(qTy,qTy), LC("capExcLength", CTy"CapExceptionType")), qVar"s")]), (Bop(Ugt, Bop(Add,CC[LW(0,1),Var("v",F64)], LW(4,65)), Bop(Add, Mop(Cast(FTy 65), Call ("getBase",F64, Apply (Const ("PCC", ATy(qTy, CTy"Capability")), qVar"s"))), Mop(Cast(FTy 65), Call ("getLength",F64, Apply (Const ("PCC", ATy(qTy, CTy"Capability")), qVar"s"))))), TP[LO F32, Apply (Call ("SignalCapException_noReg", ATy(qTy,qTy), LC("capExcLength", CTy"CapExceptionType")), qVar"s")]), (Mop(Not, Dest ("Permit_Execute",bTy, Call ("getPerms",CTy"Perms", Apply (Const ("PCC", ATy(qTy,CTy"Capability")), qVar"s")))), TP[LO F32, Apply (Call ("SignalCapException_noReg", ATy(qTy,qTy), LC("capExcPermExe", CTy"CapExceptionType")), qVar"s")])], TP[ITE(Apply (Const ("exceptionSignalled", ATy(qTy,bTy)),qVar"s"), LO F32, Mop(Some, Apply (Call ("ReadInst",ATy(qTy,F32), Mop(Cast(FTy 40), Var("v",F64))), qVar"s"))),qVar"s"])))], TP[LO F32, Apply (Call ("SignalException",ATy(qTy,qTy), LC("AdEL",CTy"ExceptionType")), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("BadVAddr", TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"s"), Bop(Add, Call ("getBase",F64, Apply (Const ("PCC", ATy(qTy, CTy"Capability")), qVar"s")), Apply (Const("PC",ATy(qTy,F64)), qVar"s"))])),qVar"s"))])))))) ; val PSIZE_def = Def0 ("PSIZE",LN 40) ; val switchCore_def = Def ("switchCore",nVar"n", Close (qVar"state", Let(nVar"v",Mop(Cast nTy,Dest("procID",F8,qVar"state")), TP[nVar"v", ITE(Mop(Not,EQ(nVar"n",nVar"v")), Let(Var("i",F8),Mop(Cast F8,nVar"n"), Let(qVar"s", Apply (Call("switchCoreCAP",ATy(qTy,qTy),Var("i",F8)), Apply (Call ("switchCoreTLB",ATy(qTy,qTy),Var("i",F8)), qVar"state")), Let(qVar"s", Rupd ("all_gpr", TP[qVar"s", Fupd (Dest ("all_gpr",ATy(F8,ATy(FTy 5,F64)), qVar"s"), Dest("procID",F8,qVar"s"), Dest("c_gpr",ATy(FTy 5,F64),qVar"s"))]), Let(qVar"s", Rupd ("all_state", TP[qVar"s", Fupd (Dest ("all_state", ATy(F8,CTy"procState"), qVar"s"), Dest("procID",F8,qVar"s"), Dest ("c_state",CTy"procState", qVar"s"))]), Let(qVar"s", Rupd ("c_gpr", TP[qVar"s", Apply (Dest ("all_gpr", ATy(F8,ATy(FTy 5,F64)), qVar"s"),Var("i",F8))]), Rupd ("procID", TP[Rupd ("c_state", TP[qVar"s", Apply (Dest ("all_state", ATy(F8, CTy"procState"), qVar"s"), Var("i",F8))]), Var("i",F8)])))))),qVar"state")]))) ; val resetStats_def = Def ("resetStats",qVar"state", Apply(Const("initCoreStats",ATy(qTy,qTy)),qVar"state")) ; val dumpStats_def = Def ("dumpStats",TP[nVar"inst",sVar"ips",Var("fmt",OTy sTy)],LS"") ; val clearDynamicStats_def = Def ("clearDynamicStats",AVar uTy,LU) ; val HI_def = Def ("HI",qVar"state", CS(Apply(Const("hi",ATy(qTy,OTy F64)),qVar"state"), [(Mop(Some,Var("v",F64)),TP[Var("v",F64),qVar"state"]), (LO F64, Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)),LS"hi-reg"), qVar"state"), TP[Apply(LX(ATy(PTy(nTy,sTy),F64)),Var("v",PTy(nTy,sTy))), qVar"s"]))])) ; val write'HI_def = Def ("write'HI",Var("value",F64), Close (qVar"state", Apply (Call("write'hi",ATy(qTy,qTy),Mop(Some,Var("value",F64))), qVar"state"))) ; val LO_def = Def ("LO",qVar"state", CS(Apply(Const("lo",ATy(qTy,OTy F64)),qVar"state"), [(Mop(Some,Var("v",F64)),TP[Var("v",F64),qVar"state"]), (LO F64, Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)),LS"lo-reg"), qVar"state"), TP[Apply(LX(ATy(PTy(nTy,sTy),F64)),Var("v",PTy(nTy,sTy))), qVar"s"]))])) ; val write'LO_def = Def ("write'LO",Var("value",F64), Close (qVar"state", Apply (Call("write'lo",ATy(qTy,qTy),Mop(Some,Var("value",F64))), qVar"state"))) ; val CPR_def = Def ("CPR",TP[nVar"n",Var("reg",FTy 5),Var("sel",FTy 3)], Close (qVar"state", CS(TP[nVar"n",Var("reg",FTy 5),Var("sel",FTy 3)], [(TP[LN 0,LW(0,5),LW(0,3)], TP[Mop(Cast F64, Call ("reg'Index",F32, Dest ("Index",CTy"Index", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), qVar"state"]), (TP[LN 0,LW(1,5),LW(0,3)], TP[Mop(Cast F64, Call ("reg'Random",F32, Dest ("Random",CTy"Random", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), qVar"state"]), (TP[LN 0,LW(2,5),LW(0,3)], TP[Call ("reg'EntryLo",F64, Dest ("EntryLo0",CTy"EntryLo", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), qVar"state"]), (TP[LN 0,LW(3,5),LW(0,3)], TP[Call ("reg'EntryLo",F64, Dest ("EntryLo1",CTy"EntryLo", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), qVar"state"]), (TP[LN 0,LW(4,5),LW(0,3)], TP[Call ("reg'Context",F64, Dest ("Context",CTy"Context", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), qVar"state"]), (TP[LN 0,LW(4,5),LW(2,3)], TP[Dest ("UsrLocal",F64, Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")), qVar"state"]), (TP[LN 0,LW(5,5),LW(0,3)], TP[Mop(Cast F64, Call ("reg'PageMask",F32, Dest ("PageMask",CTy"PageMask", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), qVar"state"]), (TP[LN 0,LW(6,5),LW(0,3)], TP[Mop(Cast F64, Call ("reg'Wired",F32, Dest ("Wired",CTy"Wired", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), qVar"state"]), (TP[LN 0,LW(7,5),LW(0,3)], TP[Mop(Cast F64, Call ("reg'HWREna",F32, Dest ("HWREna",CTy"HWREna", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), qVar"state"]), (TP[LN 0,LW(8,5),LW(0,3)], TP[Dest ("BadVAddr",F64, Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")), qVar"state"]), (TP[LN 0,LW(8,5),LW(1,3)], TP[Mop(Cast F64, Dest ("EInstr",F32, Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), qVar"state"]), (TP[LN 0,LW(9,5),LW(0,3)], TP[Mop(Cast F64, Dest ("Count",F32, Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), qVar"state"]), (TP[LN 0,LW(10,5),LW(0,3)], TP[Call ("reg'EntryHi",F64, Dest ("EntryHi",CTy"EntryHi", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), qVar"state"]), (TP[LN 0,LW(11,5),LW(0,3)], TP[Mop(Cast F64, Dest ("Compare",F32, Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), qVar"state"]), (TP[LN 0,LW(12,5),LW(0,3)], TP[Mop(Cast F64, Call ("reg'StatusRegister",F32, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), qVar"state"]), (TP[LN 0,LW(13,5),LW(0,3)], TP[Mop(Cast F64, Call ("reg'CauseRegister",F32, Dest ("Cause",CTy"CauseRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), qVar"state"]), (TP[LN 0,LW(14,5),LW(0,3)], TP[Dest ("EPC",F64, Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")), qVar"state"]), (TP[LN 0,LW(15,5),LW(0,3)], TP[Mop(Cast F64, Dest ("PRId",F32, Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), qVar"state"]), (TP[LN 0,LW(15,5),LW(1,3)], TP[Mop(Cast F64, CC[Mop(Cast F16, Bop(Sub,Dest("totalCore",nTy,qVar"state"),LN 1)), Mop(Cast F16,Dest("procID",F8,qVar"state"))]), qVar"state"]), (TP[LN 0,LW(15,5),LW(6,3)], TP[Mop(Cast F64, CC[Mop(Cast F16, Bop(Sub,Dest("totalCore",nTy,qVar"state"),LN 1)), Mop(Cast F16,Dest("procID",F8,qVar"state"))]), qVar"state"]), (TP[LN 0,LW(16,5),LW(0,3)], TP[Mop(Cast F64, Call ("reg'ConfigRegister",F32, Dest ("Config",CTy"ConfigRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), qVar"state"]), (TP[LN 0,LW(16,5),LW(1,3)], TP[Mop(Cast F64, Call ("reg'ConfigRegister1",F32, Dest ("Config1",CTy"ConfigRegister1", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), qVar"state"]), (TP[LN 0,LW(16,5),LW(2,3)], TP[Mop(Cast F64, Call ("reg'ConfigRegister2",F32, Dest ("Config2",CTy"ConfigRegister2", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), qVar"state"]), (TP[LN 0,LW(16,5),LW(3,3)], TP[Mop(Cast F64, Call ("reg'ConfigRegister3",F32, Dest ("Config3",CTy"ConfigRegister3", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), qVar"state"]), (TP[LN 0,LW(16,5),LW(4,3)],TP[LW(1,64),qVar"state"]), (TP[LN 0,LW(16,5),LW(5,3)],TP[LW(1,64),qVar"state"]), (TP[LN 0,LW(16,5),LW(6,3)], TP[Mop(Cast F64, Call ("reg'ConfigRegister6",F32, Dest ("Config6",CTy"ConfigRegister6", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), qVar"state"]), (TP[LN 0,LW(17,5),LW(0,3)], TP[Dest ("LLAddr",F64, Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")), qVar"state"]), (TP[LN 0,LW(20,5),LW(0,3)], TP[Call ("reg'XContext",F64, Dest ("XContext",CTy"XContext", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), qVar"state"]), (TP[LN 0,LW(23,5),LW(0,3)], TP[Mop(Cast F64, Dest ("Debug",F32, Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), qVar"state"]), (TP[LN 0,LW(26,5),LW(0,3)], TP[Mop(Cast F64, Dest ("ErrCtl",F32, Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), qVar"state"]), (TP[LN 0,LW(30,5),LW(0,3)], TP[Dest ("ErrorEPC",F64, Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")), qVar"state"]), (AVar(PTy(nTy,PTy(FTy 5,FTy 3))), Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)), LS"cop-reg"),qVar"state"), TP[Apply(LX(ATy(PTy(nTy,sTy),F64)),Var("v",PTy(nTy,sTy))), qVar"s"]))]))) ; val write'CPR_def = Def ("write'CPR", TP[Var("value",F64),nVar"n",Var("reg",FTy 5),Var("sel",FTy 3)], Close (qVar"state", CS(TP[nVar"n",Var("reg",FTy 5),Var("sel",FTy 3)], [(TP[LN 0,LW(0,5),LW(0,3)], Let(Var("v",CTy"CP0"), Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Index", TP[Var("v",CTy"CP0"), Rupd ("Index", TP[Dest ("Index",CTy"Index",Var("v",CTy"CP0")), EX(Var("value",F64),LN 8,LN 0,FTy 9)])])), qVar"state"))), (TP[LN 0,LW(2,5),LW(0,3)], Let(Var("v",CTy"CP0"), Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("EntryLo0", TP[Var("v",CTy"CP0"), Call ("write'reg'EntryLo",CTy"EntryLo", TP[Dest ("EntryLo0",CTy"EntryLo", Var("v",CTy"CP0")),Var("value",F64)])])), qVar"state"))), (TP[LN 0,LW(3,5),LW(0,3)], Let(Var("v",CTy"CP0"), Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("EntryLo1", TP[Var("v",CTy"CP0"), Call ("write'reg'EntryLo",CTy"EntryLo", TP[Dest ("EntryLo1",CTy"EntryLo", Var("v",CTy"CP0")),Var("value",F64)])])), qVar"state"))), (TP[LN 0,LW(4,5),LW(0,3)], Let(Var("v",CTy"CP0"), Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Context", TP[Var("v",CTy"CP0"), Rupd ("PTEBase", TP[Dest ("Context",CTy"Context", Var("v",CTy"CP0")), EX(Var("value",F64),LN 63,LN 23,FTy 41)])])), qVar"state"))), (TP[LN 0,LW(4,5),LW(2,3)], Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("UsrLocal", TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Var("value",F64)])),qVar"state")), (TP[LN 0,LW(5,5),LW(0,3)], Let(Var("v",CTy"CP0"), Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("PageMask", TP[Var("v",CTy"CP0"), Rupd ("Mask", TP[Dest ("PageMask",CTy"PageMask", Var("v",CTy"CP0")), EX(Var("value",F64),LN 24,LN 13,FTy 12)])])), qVar"state"))), (TP[LN 0,LW(6,5),LW(0,3)], Let(Var("v",CTy"CP0"), Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Wired", TP[Var("v",CTy"CP0"), Rupd ("Wired", TP[Dest ("Wired",CTy"Wired", Var("v",CTy"CP0")), EX(Var("value",F64),LN 7,LN 0,F8)])])), qVar"state"), TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"), qVar"s0"]), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Random", TP[Var("v",CTy"CP0"), Rupd ("Random", TP[Dest ("Random",CTy"Random", Var("v",CTy"CP0")), Mop(Cast F8, Bop(Sub, Const("TLBAssocEntries",nTy), LN 1))])])),qVar"s")))), (TP[LN 0,LW(7,5),LW(0,3)], Let(Var("v",CTy"CP0"), Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("HWREna", TP[Var("v",CTy"CP0"), Rupd ("CPUNum", TP[Dest ("HWREna",CTy"HWREna", Var("v",CTy"CP0")), Bop(Bit,Var("value",F64),LN 0)])])), qVar"state"), TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"), qVar"s0"]), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("HWREna", TP[Var("v",CTy"CP0"), Rupd ("CC", TP[Dest ("HWREna",CTy"HWREna", Var("v",CTy"CP0")), Bop(Bit,Var("value",F64),LN 2)])])), qVar"s"), TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"), qVar"s0"]), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("HWREna", TP[Var("v",CTy"CP0"), Rupd ("CCRes", TP[Dest ("HWREna",CTy"HWREna", Var("v",CTy"CP0")), Bop(Bit,Var("value",F64), LN 3)])])),qVar"s"), TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"s0"),qVar"s0"]), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("HWREna", TP[Var("v",CTy"CP0"), Rupd ("RS", TP[Dest ("HWREna", CTy"HWREna", Var("v",CTy"CP0")), Bop(Bit, Var("value",F64), LN 27)])])), qVar"s"), TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"s0"),qVar"s0"]), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("HWREna", TP[Var("v",CTy"CP0"), Rupd ("DS", TP[Dest ("HWREna", CTy"HWREna", Var("v", CTy"CP0")), Bop(Bit, Var("value", F64), LN 28)])])), qVar"s"), TP[Apply (Const ("CP0",ATy(qTy,CTy"CP0")), qVar"s0"),qVar"s0"]), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("HWREna", TP[Var("v",CTy"CP0"), Rupd ("UL", TP[Dest ("HWREna", CTy"HWREna", Var("v",CTy"CP0")), Bop(Bit, Var("value",F64), LN 29)])])), qVar"s")))))))), (TP[LN 0,LW(9,5),LW(0,3)], Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Count", TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), EX(Var("value",F64),LN 31,LN 0,F32)])),qVar"state")), (TP[LN 0,LW(10,5),LW(0,3)], Let(Var("v",CTy"CP0"), Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("EntryHi", TP[Var("v",CTy"CP0"), Call ("write'reg'EntryHi",CTy"EntryHi", TP[Dest ("EntryHi",CTy"EntryHi", Var("v",CTy"CP0")),Var("value",F64)])])), qVar"state"))), (TP[LN 0,LW(11,5),LW(0,3)], Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Compare", TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state"), EX(Var("value",F64),LN 31,LN 0,F32)])), qVar"state"), TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"), qVar"s0"]), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Let(Var("x0",CTy"CauseRegister"), Dest ("Cause",CTy"CauseRegister",Var("v",CTy"CP0")), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Cause", TP[Var("v",CTy"CP0"), Rupd ("IP", TP[Var("x0",CTy"CauseRegister"), BFI(LN 7,LN 7, Mop(Cast F1,LF), Dest ("IP",F8, Var("x0", CTy"CauseRegister")))])])), qVar"s")), TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"), qVar"s0"]), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Cause", TP[Var("v",CTy"CP0"), Rupd ("TI", TP[Dest ("Cause",CTy"CauseRegister", Var("v",CTy"CP0")),LF])])),qVar"s")))), (TP[LN 0,LW(12,5),LW(0,3)], Let(Var("v",CTy"CP0"), Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Status", TP[Var("v",CTy"CP0"), Call ("write'reg'StatusRegister", CTy"StatusRegister", TP[Dest ("Status",CTy"StatusRegister", Var("v",CTy"CP0")), EX(Var("value",F64),LN 31,LN 0,F32)])])), qVar"state"))), (TP[LN 0,LW(13,5),LW(0,3)], Let(Var("v",CTy"CP0"), Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Let(Var("x0",CTy"CauseRegister"), Dest("Cause",CTy"CauseRegister",Var("v",CTy"CP0")), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Cause", TP[Var("v",CTy"CP0"), Rupd ("IP", TP[Var("x0",CTy"CauseRegister"), BFI(LN 1,LN 0, EX(Var("value",F64),LN 9,LN 8, FTy 2), Dest ("IP",F8, Var("x0",CTy"CauseRegister")))])])), qVar"state")))), (TP[LN 0,LW(14,5),LW(0,3)], Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("EPC", TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Var("value",F64)])),qVar"state")), (TP[LN 0,LW(16,5),LW(0,3)], Let(Var("v",CTy"CP0"), Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Config", TP[Var("v",CTy"CP0"), Rupd ("K0", TP[Dest ("Config",CTy"ConfigRegister", Var("v",CTy"CP0")), EX(Var("value",F64),LN 2,LN 0,FTy 3)])])), qVar"state"))), (TP[LN 0,LW(16,5),LW(2,3)], Let(Var("v",CTy"CP0"), Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Config2", TP[Var("v",CTy"CP0"), Rupd ("SU", TP[Dest ("Config2",CTy"ConfigRegister2", Var("v",CTy"CP0")), EX(Var("value",F64),LN 15,LN 12,F4)])])), qVar"state"))), (TP[LN 0,LW(16,5),LW(6,3)], Let(Var("v",CTy"CP0"), Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Config6", TP[Var("v",CTy"CP0"), Rupd ("LTLB", TP[Dest ("Config6",CTy"ConfigRegister6", Var("v",CTy"CP0")), Bop(Bit,Var("value",F64),LN 2)])])), qVar"state"))), (TP[LN 0,LW(20,5),LW(0,3)], Let(Var("v",CTy"CP0"), Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("XContext", TP[Var("v",CTy"CP0"), Rupd ("PTEBase", TP[Dest ("XContext",CTy"XContext", Var("v",CTy"CP0")), EX(Var("value",F64),LN 63,LN 33,FTy 31)])])), qVar"state"))), (TP[LN 0,LW(23,5),LW(0,3)], Rupd ("done", TP[Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Debug", TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), EX(Var("value",F64),LN 31,LN 0,F32)])), qVar"state"),LT])), (TP[LN 0,LW(26,5),LW(0,3)], Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("ErrCtl", TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), EX(Var("value",F64),LN 31,LN 0,F32)])),qVar"state")), (TP[LN 0,LW(30,5),LW(0,3)], Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("ErrorEPC", TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"), Var("value",F64)])),qVar"state")), (AVar(PTy(nTy,PTy(FTy 5,FTy 3))),qVar"state")]))) ; val log_w_fgr_def = Def ("log_w_fgr",TP[Var("r",FTy 5),Var("data",F64)], CC[LS"FP Reg ",Mop(Cast sTy,Mop(Cast nTy,Var("r",FTy 5))),LS" <- ", Call("hex",sTy,Var("data",F64))]) ; val rec'FCSR_def = Def ("rec'FCSR",Var("x",F32), Rec(CTy"FCSR", [Bop(Bit,Var("x",F32),LN 19),Bop(Bit,Var("x",F32),LN 17), Bop(Bit,Var("x",F32),LN 12),Bop(Bit,Var("x",F32),LN 14), Bop(Bit,Var("x",F32),LN 13),Bop(Bit,Var("x",F32),LN 16), Bop(Bit,Var("x",F32),LN 15),Bop(Bit,Var("x",F32),LN 7), Bop(Bit,Var("x",F32),LN 9),Bop(Bit,Var("x",F32),LN 8), Bop(Bit,Var("x",F32),LN 11),Bop(Bit,Var("x",F32),LN 10), CC[EX(Var("x",F32),LN 31,LN 25,FTy 7), EX(Var("x",F32),LN 23,LN 23,F1)],Bop(Bit,Var("x",F32),LN 24), Bop(Bit,Var("x",F32),LN 2),Bop(Bit,Var("x",F32),LN 4), Bop(Bit,Var("x",F32),LN 3),Bop(Bit,Var("x",F32),LN 6), Bop(Bit,Var("x",F32),LN 5),Bop(Bit,Var("x",F32),LN 18), EX(Var("x",F32),LN 1,LN 0,FTy 2), EX(Var("x",F32),LN 22,LN 20,FTy 3)])) ; val reg'FCSR_def = Def ("reg'FCSR",Var("x",CTy"FCSR"), CS(Var("x",CTy"FCSR"), [(Rec(CTy"FCSR", [bVar"ABS2008",bVar"CauseE",bVar"CauseI",bVar"CauseO", bVar"CauseU",bVar"CauseV",bVar"CauseZ",bVar"EnableI", bVar"EnableO",bVar"EnableU",bVar"EnableV",bVar"EnableZ", Var("FCC",F8),bVar"FS",bVar"FlagI",bVar"FlagO",bVar"FlagU", bVar"FlagV",bVar"FlagZ",bVar"NAN2008",Var("RM",FTy 2), Var("fcsr'rst",FTy 3)]), CC[EX(Var("FCC",F8),LN 7,LN 1,FTy 7),Mop(Cast F1,bVar"FS"), EX(Var("FCC",F8),LN 0,LN 0,F1),Var("fcsr'rst",FTy 3), Mop(Cast F1,bVar"ABS2008"),Mop(Cast F1,bVar"NAN2008"), Mop(Cast F1,bVar"CauseE"),Mop(Cast F1,bVar"CauseV"), Mop(Cast F1,bVar"CauseZ"),Mop(Cast F1,bVar"CauseO"), Mop(Cast F1,bVar"CauseU"),Mop(Cast F1,bVar"CauseI"), Mop(Cast F1,bVar"EnableV"),Mop(Cast F1,bVar"EnableZ"), Mop(Cast F1,bVar"EnableO"),Mop(Cast F1,bVar"EnableU"), Mop(Cast F1,bVar"EnableI"),Mop(Cast F1,bVar"FlagV"), Mop(Cast F1,bVar"FlagZ"),Mop(Cast F1,bVar"FlagO"), Mop(Cast F1,bVar"FlagU"),Mop(Cast F1,bVar"FlagI"), Var("RM",FTy 2)])])) ; val write'rec'FCSR_def = Def ("write'rec'FCSR",TP[AVar F32,Var("x",CTy"FCSR")], Call("reg'FCSR",F32,Var("x",CTy"FCSR"))) ; val write'reg'FCSR_def = Def ("write'reg'FCSR",TP[AVar(CTy"FCSR"),Var("x",F32)], Call("rec'FCSR",CTy"FCSR",Var("x",F32))) ; val rec'FIR_def = Def ("rec'FIR",Var("x",F32), Rec(CTy"FIR", [Bop(Bit,Var("x",F32),LN 19),Bop(Bit,Var("x",F32),LN 17), Bop(Bit,Var("x",F32),LN 22),Bop(Bit,Var("x",F32),LN 21), Bop(Bit,Var("x",F32),LN 18),EX(Var("x",F32),LN 15,LN 8,F8), EX(Var("x",F32),LN 7,LN 0,F8),Bop(Bit,Var("x",F32),LN 16), Bop(Bit,Var("x",F32),LN 20),EX(Var("x",F32),LN 31,LN 23,FTy 9)])) ; val reg'FIR_def = Def ("reg'FIR",Var("x",CTy"FIR"), CS(Var("x",CTy"FIR"), [(Rec(CTy"FIR", [bVar"ASE",bVar"D",bVar"F64",bVar"L",bVar"PS",Var("PrID",F8), Var("Rev",F8),bVar"S",bVar"W",Var("fir'rst",FTy 9)]), CC[Var("fir'rst",FTy 9),Mop(Cast F1,bVar"F64"), Mop(Cast F1,bVar"L"),Mop(Cast F1,bVar"W"), Mop(Cast F1,bVar"ASE"),Mop(Cast F1,bVar"PS"), Mop(Cast F1,bVar"D"),Mop(Cast F1,bVar"S"),Var("PrID",F8), Var("Rev",F8)])])) ; val write'rec'FIR_def = Def ("write'rec'FIR",TP[AVar F32,Var("x",CTy"FIR")], Call("reg'FIR",F32,Var("x",CTy"FIR"))) ; val write'reg'FIR_def = Def ("write'reg'FIR",TP[AVar(CTy"FIR"),Var("x",F32)], Call("rec'FIR",CTy"FIR",Var("x",F32))) ; val FGR_def = Def ("FGR",Var("n",FTy 5), Close (qVar"state", Apply(Dest("fgr",ATy(FTy 5,F64),qVar"state"),Var("n",FTy 5)))) ; val write'FGR_def = Def ("write'FGR",TP[Var("value",F64),Var("n",FTy 5)], Close (qVar"state", Rupd ("fgr", TP[qVar"state", Fupd (Dest("fgr",ATy(FTy 5,F64),qVar"state"),Var("n",FTy 5), Var("value",F64))]))) ; val IntToWordMIPS_def = Def ("IntToWordMIPS",iVar"v", ITB([(Bop(Gt,iVar"v",LI 2147483647),LW(2147483647,32)), (Bop(Lt,iVar"v",Mop(Neg,LI 2147483648)),LW(2147483647,32))], Mop(Cast F32,iVar"v"))) ; val IntToDWordMIPS_def = Def ("IntToDWordMIPS",iVar"v", ITB([(Bop(Gt,iVar"v",LI 9223372036854775807),LW(9223372036854775807,64)), (Bop(Lt,iVar"v",Mop(Neg,LI 9223372036854775808)), LW(9223372036854775807,64))],Mop(Cast F64,iVar"v"))) ; val FP32_Abs1985_def = Def ("FP32_Abs1985",Var("a",F32), ITE(Mop(FPIsNan 32,Var("a",F32)),Var("a",F32), Mop(FPAbs 32,Var("a",F32)))) ; val FP32_Neg1985_def = Def ("FP32_Neg1985",Var("a",F32), ITE(Mop(FPIsNan 32,Var("a",F32)),Var("a",F32), Mop(FPNeg 32,Var("a",F32)))) ; val FP64_Abs1985_def = Def ("FP64_Abs1985",Var("a",F64), ITE(Mop(FPIsNan 64,Var("a",F64)),Var("a",F64), Mop(FPAbs 64,Var("a",F64)))) ; val FP64_Neg1985_def = Def ("FP64_Neg1985",Var("a",F64), ITE(Mop(FPIsNan 64,Var("a",F64)),Var("a",F64), Mop(FPNeg 64,Var("a",F64)))) ; val PostOpF32_def = Def ("PostOpF32",Var("v",F32), Close (qVar"state", ITE(Bop(And,Dest("FS",bTy,Dest("fcsr",CTy"FCSR",qVar"state")), Mop(FPIsSubnormal 32,Var("v",F32))),LW(0,32),Var("v",F32)))) ; val PostOpF64_def = Def ("PostOpF64",Var("v",F64), Close (qVar"state", ITE(Bop(And,Dest("FS",bTy,Dest("fcsr",CTy"FCSR",qVar"state")), Mop(FPIsSubnormal 64,Var("v",F64))),LW(0,64),Var("v",F64)))) ; val FP64_Unordered_def = Def ("FP64_Unordered",TP[Var("a",F64),Var("b",F64)], Bop(Or,Mop(FPIsNan 64,Var("a",F64)),Mop(FPIsNan 64,Var("b",F64)))) ; val FP32_Unordered_def = Def ("FP32_Unordered",TP[Var("a",F32),Var("b",F32)], Bop(Or,Mop(FPIsNan 32,Var("a",F32)),Mop(FPIsNan 32,Var("b",F32)))) ; val Rounding_Mode_def = Def ("Rounding_Mode",qVar"state", CS(Dest("RM",FTy 2,Dest("fcsr",CTy"FCSR",qVar"state")), [(LW(0,2),binary_ieeeSyntax.roundTiesToEven_tm), (LW(1,2),binary_ieeeSyntax.roundTowardZero_tm), (LW(2,2),binary_ieeeSyntax.roundTowardPositive_tm), (LW(3,2),binary_ieeeSyntax.roundTowardNegative_tm)])) ; val dfn'ABS_D_def = Def ("dfn'ABS_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)), qVar"state")), (Dest("ABS2008",bTy,Dest("fcsr",CTy"FCSR",qVar"state")), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(FPAbs 64, Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state")),Var("fd",FTy 5)]),qVar"state"))], Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Apply (Call ("PostOpF64",ATy(qTy,F64), Call ("FP64_Abs1985",F64, Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"))),qVar"state"),Var("fd",FTy 5)]), qVar"state")))) ; val dfn'ABS_S_def = Def ("dfn'ABS_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)), qVar"state")), (Dest("ABS2008",bTy,Dest("fcsr",CTy"FCSR",qVar"state")), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, Mop(FPAbs 32, EX(Apply (Call ("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32))), Var("fd",FTy 5)]),qVar"state"))], Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, Apply (Call ("PostOpF32",ATy(qTy,F32), Call ("FP32_Abs1985",F32, EX(Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)),qVar"state"), LN 31,LN 0,F32))),qVar"state")), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'ADD_D_def = Def ("dfn'ADD_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Apply (Call ("PostOpF64",ATy(qTy,F64), Mop(FPAdd 64, TP[Apply (Const("Rounding_Mode",ATy(qTy,rTy)), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64),Var("ft",FTy 5)), qVar"state")])),qVar"state"), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'ADD_S_def = Def ("dfn'ADD_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, Apply (Call ("PostOpF32",ATy(qTy,F32), Mop(FPAdd 32, TP[Apply (Const("Rounding_Mode",ATy(qTy,rTy)), qVar"state"), EX(Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)),qVar"state"), LN 31,LN 0,F32), EX(Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)),qVar"state"), LN 31,LN 0,F32)])),qVar"state")), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'BC1F_def = Def ("dfn'BC1F",TP[Var("i",F16),Var("cc",FTy 3)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)), qVar"state")), (Mop(Not, Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")), Mop(Cast nTy,Var("cc",FTy 3)))), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("i",F16)),LN 2)))), qVar"state"))], Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state")))) ; val dfn'BC1FL_def = Def ("dfn'BC1FL",TP[Var("i",F16),Var("cc",FTy 3)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)), qVar"state")), (Mop(Not, Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")), Mop(Cast nTy,Var("cc",FTy 3)))), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("i",F16)),LN 2)))), qVar"state"))], Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"), TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]), Apply (Call ("write'PC",ATy(qTy,qTy),Bop(Add,Var("v",F64),LW(4,64))), qVar"s"))))) ; val dfn'BC1T_def = Def ("dfn'BC1T",TP[Var("i",F16),Var("cc",FTy 3)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)), qVar"state")), (Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")), Mop(Cast nTy,Var("cc",FTy 3))), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("i",F16)),LN 2)))), qVar"state"))], Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state")))) ; val dfn'BC1TL_def = Def ("dfn'BC1TL",TP[Var("i",F16),Var("cc",FTy 3)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)), qVar"state")), (Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")), Mop(Cast nTy,Var("cc",FTy 3))), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("i",F16)),LN 2)))), qVar"state"))], Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"), TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]), Apply (Call ("write'PC",ATy(qTy,qTy),Bop(Add,Var("v",F64),LW(4,64))), qVar"s"))))) ; val dfn'C_cond_D_def = Def ("dfn'C_cond_D", TP[Var("fs",FTy 5),Var("ft",FTy 5),Var("cnd",FTy 3),Var("cc",FTy 3)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Let(nVar"i",Mop(Cast nTy,Var("cc",FTy 3)), Let(TP[Var("v",CTy"FCSR"),qVar"s"], Let(TP[Var("v",PTy(CTy"FCSR",F8)),qVar"s"], Let(TP[bVar"v0",qVar"s0"], CS(Var("cnd",FTy 3), [(LW(0,3),TP[LF,qVar"state"]), (LW(1,3), TP[Call ("FP64_Unordered",bTy, TP[Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)),qVar"state"), Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)),qVar"state")]), qVar"state"]), (LW(2,3), TP[Mop(FPEq 64, TP[Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)), qVar"state")]),qVar"state"]), (LW(3,3), TP[Bop(Or, Mop(FPEq 64, TP[Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)), qVar"state")]), Call ("FP64_Unordered",bTy, TP[Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)), qVar"state")])),qVar"state"]), (LW(4,3), TP[Mop(FPLt 64, TP[Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)), qVar"state")]),qVar"state"]), (LW(5,3), TP[Mop(Not, Mop(FPGe 64, TP[Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)), qVar"state")])), qVar"state"]), (LW(6,3), TP[Mop(FPLe 64, TP[Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)), qVar"state")]),qVar"state"]), (LW(7,3), TP[Mop(Not, Mop(FPGt 64, TP[Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)), qVar"state")])), qVar"state"])]), TP[TP[Dest("fcsr",CTy"FCSR",qVar"state"), BFI(nVar"i",nVar"i",Mop(Cast F1,bVar"v0"), Dest ("FCC",F8, Dest("fcsr",CTy"FCSR",qVar"state")))], qVar"s0"]), TP[Rupd("FCC",Var("v",PTy(CTy"FCSR",F8))),qVar"s"]), Rupd("fcsr",TP[qVar"s",Var("v",CTy"FCSR")])))))) ; val dfn'C_cond_S_def = Def ("dfn'C_cond_S", TP[Var("fs",FTy 5),Var("ft",FTy 5),Var("cnd",FTy 3),Var("cc",FTy 3)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Let(nVar"i",Mop(Cast nTy,Var("cc",FTy 3)), Let(TP[Var("v",CTy"FCSR"),qVar"s"], Let(TP[Var("v",PTy(CTy"FCSR",F8)),qVar"s"], Let(TP[bVar"v0",qVar"s0"], CS(Var("cnd",FTy 3), [(LW(0,3),TP[LF,qVar"state"]), (LW(1,3), TP[Call ("FP32_Unordered",bTy, TP[EX(Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32), EX(Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)), qVar"state"),LN 31,LN 0,F32)]), qVar"state"]), (LW(2,3), TP[Mop(FPEq 32, TP[EX(Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32), EX(Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)), qVar"state"),LN 31,LN 0,F32)]), qVar"state"]), (LW(3,3), TP[Bop(Or, Mop(FPEq 32, TP[EX(Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)), qVar"state"),LN 31, LN 0,F32), EX(Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)), qVar"state"),LN 31, LN 0,F32)]), Call ("FP32_Unordered",bTy, TP[EX(Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)), qVar"state"),LN 31,LN 0, F32), EX(Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)), qVar"state"),LN 31,LN 0, F32)])),qVar"state"]), (LW(4,3), TP[Mop(FPLt 32, TP[EX(Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32), EX(Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)), qVar"state"),LN 31,LN 0,F32)]), qVar"state"]), (LW(5,3), TP[Mop(Not, Mop(FPGe 32, TP[EX(Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)), qVar"state"),LN 31, LN 0,F32), EX(Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)), qVar"state"),LN 31, LN 0,F32)])),qVar"state"]), (LW(6,3), TP[Mop(FPLe 32, TP[EX(Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32), EX(Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)), qVar"state"),LN 31,LN 0,F32)]), qVar"state"]), (LW(7,3), TP[Mop(Not, Mop(FPGt 32, TP[EX(Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)), qVar"state"),LN 31, LN 0,F32), EX(Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)), qVar"state"),LN 31, LN 0,F32)])),qVar"state"])]), TP[TP[Dest("fcsr",CTy"FCSR",qVar"state"), BFI(nVar"i",nVar"i",Mop(Cast F1,bVar"v0"), Dest ("FCC",F8, Dest("fcsr",CTy"FCSR",qVar"state")))], qVar"s0"]), TP[Rupd("FCC",Var("v",PTy(CTy"FCSR",F8))),qVar"s"]), Rupd("fcsr",TP[qVar"s",Var("v",CTy"FCSR")])))))) ; val dfn'CEIL_L_D_def = Def ("dfn'CEIL_L_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[CS(Mop(FPToInt 64, TP[binary_ieeeSyntax.roundTowardPositive_tm, Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state")]), [(Mop(Some,iVar"x"), Call("IntToDWordMIPS",F64,iVar"x")), (LO iTy,LW(9223372036854775807,64))]), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'CEIL_L_S_def = Def ("dfn'CEIL_L_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[CS(Mop(FPToInt 32, TP[binary_ieeeSyntax.roundTowardPositive_tm, EX(Apply (Call ("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32)]), [(Mop(Some,iVar"x"), Call("IntToDWordMIPS",F64,iVar"x")), (LO iTy,LW(9223372036854775807,64))]), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'CEIL_W_D_def = Def ("dfn'CEIL_W_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[CS(Mop(FPToInt 64, TP[binary_ieeeSyntax.roundTowardPositive_tm, Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state")]), [(Mop(Some,iVar"x"), Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))), (LO iTy,LW(2147483647,64))]),Var("fd",FTy 5)]), qVar"state")))) ; val dfn'CEIL_W_S_def = Def ("dfn'CEIL_W_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[CS(Mop(FPToInt 32, TP[binary_ieeeSyntax.roundTowardPositive_tm, EX(Apply (Call ("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32)]), [(Mop(Some,iVar"x"), Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))), (LO iTy,LW(2147483647,64))]),Var("fd",FTy 5)]), qVar"state")))) ; val dfn'CVT_D_L_def = Def ("dfn'CVT_D_L",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(FPFromInt 64, TP[Apply (Const("Rounding_Mode",ATy(qTy,rTy)), qVar"state"), Mop(Cast iTy, Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"))]),Var("fd",FTy 5)]), qVar"state")))) ; val dfn'CVT_D_S_def = Def ("dfn'CVT_D_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(FP32To64, EX(Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32)),Var("fd",FTy 5)]), qVar"state")))) ; val dfn'CVT_D_W_def = Def ("dfn'CVT_D_W",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Let(TP[Var("v",rTy),qVar"s"], Let(qVar"s0", ITE(Call ("NotWordValue",bTy, Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state")), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"CVT.D.W: NotWordValue")),qVar"state")), qVar"state"), TP[Apply(Const("Rounding_Mode",ATy(qTy,rTy)),qVar"s0"), qVar"s0"]), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(FPFromInt 64, TP[Var("v",rTy), Mop(Cast iTy, EX(Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)),qVar"s"), LN 31,LN 0,F32))]),Var("fd",FTy 5)]), qVar"s"))))) ; val dfn'CVT_L_D_def = Def ("dfn'CVT_L_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[CS(Mop(FPToInt 64, TP[Apply (Const("Rounding_Mode",ATy(qTy,rTy)), qVar"state"), Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state")]), [(Mop(Some,iVar"x"), Call("IntToDWordMIPS",F64,iVar"x")), (LO iTy,LW(9223372036854775807,64))]), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'CVT_L_S_def = Def ("dfn'CVT_L_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[CS(Mop(FPToInt 32, TP[Apply (Const("Rounding_Mode",ATy(qTy,rTy)), qVar"state"), EX(Apply (Call ("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32)]), [(Mop(Some,iVar"x"), Call("IntToDWordMIPS",F64,iVar"x")), (LO iTy,LW(9223372036854775807,64))]), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'CVT_S_D_def = Def ("dfn'CVT_S_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, Mop(FP64To32, TP[Apply (Const("Rounding_Mode",ATy(qTy,rTy)), qVar"state"), Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state")])),Var("fd",FTy 5)]), qVar"state")))) ; val dfn'CVT_S_L_def = Def ("dfn'CVT_S_L",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, Mop(FPFromInt 32, TP[Apply (Const("Rounding_Mode",ATy(qTy,rTy)), qVar"state"), Mop(Cast iTy, Apply (Call ("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"))])),Var("fd",FTy 5)]), qVar"state")))) ; val dfn'CVT_S_W_def = Def ("dfn'CVT_S_W",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Let(TP[Var("v",rTy),qVar"s"], Let(qVar"s0", ITE(Call ("NotWordValue",bTy, Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state")), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"CVT.S.W: NotWordValue")),qVar"state")), qVar"state"), TP[Apply(Const("Rounding_Mode",ATy(qTy,rTy)),qVar"s0"), qVar"s0"]), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, Mop(FPFromInt 32, TP[Var("v",rTy), Mop(Cast iTy, EX(Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)),qVar"s"), LN 31,LN 0,F32))])), Var("fd",FTy 5)]),qVar"s"))))) ; val dfn'CVT_W_D_def = Def ("dfn'CVT_W_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[CS(Mop(FPToInt 64, TP[Apply (Const("Rounding_Mode",ATy(qTy,rTy)), qVar"state"), Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state")]), [(Mop(Some,iVar"x"), Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))), (LO iTy,LW(2147483647,64))]),Var("fd",FTy 5)]), qVar"state")))) ; val dfn'CVT_W_S_def = Def ("dfn'CVT_W_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[CS(Mop(FPToInt 32, TP[Apply (Const("Rounding_Mode",ATy(qTy,rTy)), qVar"state"), EX(Apply (Call ("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32)]), [(Mop(Some,iVar"x"), Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))), (LO iTy,LW(2147483647,64))]),Var("fd",FTy 5)]), qVar"state")))) ; val dfn'DIV_D_def = Def ("dfn'DIV_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Apply (Call ("PostOpF64",ATy(qTy,F64), Mop(FPDiv 64, TP[Apply (Const("Rounding_Mode",ATy(qTy,rTy)), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64),Var("ft",FTy 5)), qVar"state")])),qVar"state"), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'DIV_S_def = Def ("dfn'DIV_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, Apply (Call ("PostOpF32",ATy(qTy,F32), Mop(FPDiv 32, TP[Apply (Const("Rounding_Mode",ATy(qTy,rTy)), qVar"state"), EX(Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)),qVar"state"), LN 31,LN 0,F32), EX(Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)),qVar"state"), LN 31,LN 0,F32)])),qVar"state")), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'FLOOR_L_D_def = Def ("dfn'FLOOR_L_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[CS(Mop(FPToInt 64, TP[binary_ieeeSyntax.roundTowardNegative_tm, Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state")]), [(Mop(Some,iVar"x"), Call("IntToDWordMIPS",F64,iVar"x")), (LO iTy,LW(9223372036854775807,64))]), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'FLOOR_L_S_def = Def ("dfn'FLOOR_L_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[CS(Mop(FPToInt 32, TP[binary_ieeeSyntax.roundTowardNegative_tm, EX(Apply (Call ("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32)]), [(Mop(Some,iVar"x"), Call("IntToDWordMIPS",F64,iVar"x")), (LO iTy,LW(9223372036854775807,64))]), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'FLOOR_W_D_def = Def ("dfn'FLOOR_W_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[CS(Mop(FPToInt 64, TP[binary_ieeeSyntax.roundTowardNegative_tm, Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state")]), [(Mop(Some,iVar"x"), Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))), (LO iTy,LW(2147483647,64))]),Var("fd",FTy 5)]), qVar"state")))) ; val dfn'FLOOR_W_S_def = Def ("dfn'FLOOR_W_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[CS(Mop(FPToInt 32, TP[binary_ieeeSyntax.roundTowardNegative_tm, EX(Apply (Call ("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32)]), [(Mop(Some,iVar"x"), Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))), (LO iTy,LW(2147483647,64))]),Var("fd",FTy 5)]), qVar"state")))) ; val dfn'LDC1_def = Def ("dfn'LDC1",TP[Var("ft",FTy 5),Var("offset",F16),Var("base",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Let(TP[Var("v",F64),qVar"s"], Apply (Call ("LoadMemory",ATy(qTy,PTy(F64,qTy)), TP[Const("DOUBLEWORD",FTy 3), Const("DOUBLEWORD",FTy 3),LT, Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add,Mop(SE F64,Var("offset",F16)), Apply (Call ("GPR",ATy(qTy,F64), Var("base",FTy 5)),qVar"state"))), qVar"state"),LF]),qVar"state"), ITE(Mop(Not, Apply (Const("exceptionSignalled",ATy(qTy,bTy)),qVar"s")), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Var("v",F64),Var("ft",FTy 5)]),qVar"s"),qVar"s"))))) ; val dfn'LDXC1_def = Def ("dfn'LDXC1",TP[Var("fd",FTy 5),Var("index",FTy 5),Var("base",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Let(TP[Var("v",F64),qVar"s"], Apply (Call ("LoadMemory",ATy(qTy,PTy(F64,qTy)), TP[Const("DOUBLEWORD",FTy 3), Const("DOUBLEWORD",FTy 3),LT, Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add, Apply (Call ("GPR",ATy(qTy,F64), Var("index",FTy 5)),qVar"state"), Apply (Call ("GPR",ATy(qTy,F64), Var("base",FTy 5)),qVar"state"))), qVar"state"),LF]),qVar"state"), ITE(Mop(Not, Apply (Const("exceptionSignalled",ATy(qTy,bTy)),qVar"s")), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Var("v",F64),Var("fd",FTy 5)]),qVar"s"),qVar"s"))))) ; val dfn'LWC1_def = Def ("dfn'LWC1",TP[Var("ft",FTy 5),Var("offset",F16),Var("base",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Let(Var("v",F64), Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add,Mop(SE F64,Var("offset",F16)), Apply (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)), qVar"state"))),qVar"state"), Let(TP[Var("v0",F64),qVar"s"], Apply (Call ("LoadMemory",ATy(qTy,PTy(F64,qTy)), TP[Const("WORD",FTy 3),Const("WORD",FTy 3),LT, Var("v",F64),LF]),qVar"state"), ITE(Mop(Not, Apply (Const("exceptionSignalled",ATy(qTy,bTy)), qVar"s")), Let(Var("v1",FTy 3), Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3), CC[Apply (Const("BigEndianCPU",ATy(qTy,F1)), qVar"s"),LW(0,2)]), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, EX(Var("v0",F64), Bop(Add,LN 31, Bop(Mul,LN 8, Mop(Cast nTy, Var("v1",FTy 3)))), Bop(Mul,LN 8, Mop(Cast nTy,Var("v1",FTy 3))), F32)),Var("ft",FTy 5)]),qVar"s")), qVar"s")))))) ; val dfn'LWXC1_def = Def ("dfn'LWXC1",TP[Var("ft",FTy 5),Var("index",FTy 5),Var("base",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Let(Var("v",F64), Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add, Apply (Call("GPR",ATy(qTy,F64),Var("index",FTy 5)), qVar"state"), Apply (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)), qVar"state"))),qVar"state"), Let(TP[Var("v0",F64),qVar"s"], Apply (Call ("LoadMemory",ATy(qTy,PTy(F64,qTy)), TP[Const("WORD",FTy 3),Const("WORD",FTy 3),LT, Var("v",F64),LF]),qVar"state"), ITE(Mop(Not, Apply (Const("exceptionSignalled",ATy(qTy,bTy)), qVar"s")), Let(Var("v1",FTy 3), Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3), CC[Apply (Const("BigEndianCPU",ATy(qTy,F1)), qVar"s"),LW(0,2)]), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, EX(Var("v0",F64), Bop(Add,LN 31, Bop(Mul,LN 8, Mop(Cast nTy, Var("v1",FTy 3)))), Bop(Mul,LN 8, Mop(Cast nTy,Var("v1",FTy 3))), F32)),Var("ft",FTy 5)]),qVar"s")), qVar"s")))))) ; val dfn'MADD_D_def = Def ("dfn'MADD_D", TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Apply (Call ("PostOpF64",ATy(qTy,F64), Mop(FPAdd 64, TP[Apply (Const("Rounding_Mode",ATy(qTy,rTy)), qVar"state"), Apply (Call ("PostOpF64",ATy(qTy,F64), Mop(FPMul 64, TP[Apply (Const ("Rounding_Mode", ATy(qTy,rTy)), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)), qVar"state")])), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64),Var("fr",FTy 5)), qVar"state")])),qVar"state"), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'MADD_S_def = Def ("dfn'MADD_S", TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, Apply (Call ("PostOpF32",ATy(qTy,F32), Mop(FPAdd 32, TP[Apply (Const("Rounding_Mode",ATy(qTy,rTy)), qVar"state"), Apply (Call ("PostOpF32",ATy(qTy,F32), Mop(FPMul 32, TP[Apply (Const ("Rounding_Mode", ATy(qTy,rTy)), qVar"state"), EX(Apply (Call ("FGR", ATy(qTy,F64), Var("fs",FTy 5)), qVar"state"),LN 31, LN 0,F32), EX(Apply (Call ("FGR", ATy(qTy,F64), Var("ft",FTy 5)), qVar"state"),LN 31, LN 0,F32)])), qVar"state"), EX(Apply (Call ("FGR",ATy(qTy,F64), Var("fr",FTy 5)),qVar"state"), LN 31,LN 0,F32)])),qVar"state")), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'MOV_D_def = Def ("dfn'MOV_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),qVar"state"), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'MOV_S_def = Def ("dfn'MOV_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, EX(Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32)),Var("fd",FTy 5)]), qVar"state")))) ; val dfn'MOVF_def = Def ("dfn'MOVF",TP[Var("rd",FTy 5),Var("rs",FTy 5),Var("cc",FTy 3)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)), qVar"state")), (Mop(Not, Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")), Mop(Cast nTy,Var("cc",FTy 3)))), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state"),Var("rd",FTy 5)]),qVar"state"))], qVar"state"))) ; val dfn'MOVF_D_def = Def ("dfn'MOVF_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)), qVar"state")), (Mop(Not, Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")), Mop(Cast nTy,Var("cc",FTy 3)))), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),Var("fd",FTy 5)]),qVar"state"))], qVar"state"))) ; val dfn'MOVF_S_def = Def ("dfn'MOVF_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)), qVar"state")), (Mop(Not, Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")), Mop(Cast nTy,Var("cc",FTy 3)))), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, EX(Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32)), Var("fd",FTy 5)]),qVar"state"))],qVar"state"))) ; val dfn'MOVN_D_def = Def ("dfn'MOVN_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)), qVar"state")), (Mop(Not, EQ(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), LW(0,64))), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),Var("fd",FTy 5)]),qVar"state"))], qVar"state"))) ; val dfn'MOVN_S_def = Def ("dfn'MOVN_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)), qVar"state")), (Mop(Not, EQ(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), LW(0,64))), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, EX(Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32)), Var("fd",FTy 5)]),qVar"state"))],qVar"state"))) ; val dfn'MOVT_def = Def ("dfn'MOVT",TP[Var("rd",FTy 5),Var("rs",FTy 5),Var("cc",FTy 3)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)), qVar"state")), (Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")), Mop(Cast nTy,Var("cc",FTy 3))), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state"),Var("rd",FTy 5)]),qVar"state"))], qVar"state"))) ; val dfn'MOVT_D_def = Def ("dfn'MOVT_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)), qVar"state")), (Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")), Mop(Cast nTy,Var("cc",FTy 3))), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),Var("fd",FTy 5)]),qVar"state"))], qVar"state"))) ; val dfn'MOVT_S_def = Def ("dfn'MOVT_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)), qVar"state")), (Bop(Bit,Dest("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state")), Mop(Cast nTy,Var("cc",FTy 3))), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, EX(Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32)), Var("fd",FTy 5)]),qVar"state"))],qVar"state"))) ; val dfn'MOVZ_D_def = Def ("dfn'MOVZ_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)), qVar"state")), (EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), LW(0,64)), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),Var("fd",FTy 5)]),qVar"state"))], qVar"state"))) ; val dfn'MOVZ_S_def = Def ("dfn'MOVZ_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)), qVar"state")), (EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), LW(0,64)), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, EX(Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32)), Var("fd",FTy 5)]),qVar"state"))],qVar"state"))) ; val dfn'MSUB_D_def = Def ("dfn'MSUB_D", TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Apply (Call ("PostOpF64",ATy(qTy,F64), Mop(FPSub 64, TP[Apply (Const("Rounding_Mode",ATy(qTy,rTy)), qVar"state"), Apply (Call ("PostOpF64",ATy(qTy,F64), Mop(FPMul 64, TP[Apply (Const ("Rounding_Mode", ATy(qTy,rTy)), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)), qVar"state")])), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64),Var("fr",FTy 5)), qVar"state")])),qVar"state"), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'MSUB_S_def = Def ("dfn'MSUB_S", TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, Apply (Call ("PostOpF32",ATy(qTy,F32), Mop(FPSub 32, TP[Apply (Const("Rounding_Mode",ATy(qTy,rTy)), qVar"state"), Apply (Call ("PostOpF32",ATy(qTy,F32), Mop(FPMul 32, TP[Apply (Const ("Rounding_Mode", ATy(qTy,rTy)), qVar"state"), EX(Apply (Call ("FGR", ATy(qTy,F64), Var("fs",FTy 5)), qVar"state"),LN 31, LN 0,F32), EX(Apply (Call ("FGR", ATy(qTy,F64), Var("ft",FTy 5)), qVar"state"),LN 31, LN 0,F32)])), qVar"state"), EX(Apply (Call ("FGR",ATy(qTy,F64), Var("fr",FTy 5)),qVar"state"), LN 31,LN 0,F32)])),qVar"state")), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'MUL_D_def = Def ("dfn'MUL_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Apply (Call ("PostOpF64",ATy(qTy,F64), Mop(FPMul 64, TP[Apply (Const("Rounding_Mode",ATy(qTy,rTy)), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64),Var("ft",FTy 5)), qVar"state")])),qVar"state"), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'MUL_S_def = Def ("dfn'MUL_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, Apply (Call ("PostOpF32",ATy(qTy,F32), Mop(FPMul 32, TP[Apply (Const("Rounding_Mode",ATy(qTy,rTy)), qVar"state"), EX(Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)),qVar"state"), LN 31,LN 0,F32), EX(Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)),qVar"state"), LN 31,LN 0,F32)])),qVar"state")), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'NEG_D_def = Def ("dfn'NEG_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)), qVar"state")), (Dest("ABS2008",bTy,Dest("fcsr",CTy"FCSR",qVar"state")), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(FPNeg 64, Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state")),Var("fd",FTy 5)]),qVar"state"))], Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Apply (Call ("PostOpF64",ATy(qTy,F64), Call ("FP64_Neg1985",F64, Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"))),qVar"state"),Var("fd",FTy 5)]), qVar"state")))) ; val dfn'NEG_S_def = Def ("dfn'NEG_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)), qVar"state")), (Dest("ABS2008",bTy,Dest("fcsr",CTy"FCSR",qVar"state")), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, Mop(FPNeg 32, EX(Apply (Call ("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32))), Var("fd",FTy 5)]),qVar"state"))], Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, Apply (Call ("PostOpF32",ATy(qTy,F32), Call ("FP32_Neg1985",F32, EX(Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)),qVar"state"), LN 31,LN 0,F32))),qVar"state")), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'ROUND_L_D_def = Def ("dfn'ROUND_L_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[CS(Mop(FPToInt 64, TP[binary_ieeeSyntax.roundTiesToEven_tm, Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state")]), [(Mop(Some,iVar"x"), Call("IntToDWordMIPS",F64,iVar"x")), (LO iTy,LW(9223372036854775807,64))]), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'ROUND_L_S_def = Def ("dfn'ROUND_L_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[CS(Mop(FPToInt 32, TP[binary_ieeeSyntax.roundTiesToEven_tm, EX(Apply (Call ("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32)]), [(Mop(Some,iVar"x"), Call("IntToDWordMIPS",F64,iVar"x")), (LO iTy,LW(9223372036854775807,64))]), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'ROUND_W_D_def = Def ("dfn'ROUND_W_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[CS(Mop(FPToInt 64, TP[binary_ieeeSyntax.roundTiesToEven_tm, Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state")]), [(Mop(Some,iVar"x"), Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))), (LO iTy,LW(2147483647,64))]),Var("fd",FTy 5)]), qVar"state")))) ; val dfn'ROUND_W_S_def = Def ("dfn'ROUND_W_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[CS(Mop(FPToInt 32, TP[binary_ieeeSyntax.roundTiesToEven_tm, EX(Apply (Call ("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32)]), [(Mop(Some,iVar"x"), Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))), (LO iTy,LW(2147483647,64))]),Var("fd",FTy 5)]), qVar"state")))) ; val dfn'SDC1_def = Def ("dfn'SDC1",TP[Var("ft",FTy 5),Var("offset",F16),Var("base",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Mop(Snd, Apply (Call ("StoreMemory",ATy(qTy,PTy(bTy,qTy)), TP[Const("DOUBLEWORD",FTy 3), Const("DOUBLEWORD",FTy 3),LT, Apply (Call("FGR",ATy(qTy,F64),Var("ft",FTy 5)), qVar"state"), Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add,Mop(SE F64,Var("offset",F16)), Apply (Call ("GPR",ATy(qTy,F64), Var("base",FTy 5)),qVar"state"))), qVar"state"),LF]),qVar"state"))))) ; val dfn'SDXC1_def = Def ("dfn'SDXC1",TP[Var("fs",FTy 5),Var("index",FTy 5),Var("base",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Mop(Snd, Apply (Call ("StoreMemory",ATy(qTy,PTy(bTy,qTy)), TP[Const("DOUBLEWORD",FTy 3), Const("DOUBLEWORD",FTy 3),LT, Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"), Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add, Apply (Call ("GPR",ATy(qTy,F64), Var("index",FTy 5)),qVar"state"), Apply (Call ("GPR",ATy(qTy,F64), Var("base",FTy 5)),qVar"state"))), qVar"state"),LF]),qVar"state"))))) ; val dfn'SQRT_D_def = Def ("dfn'SQRT_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Apply (Call ("PostOpF64",ATy(qTy,F64), Mop(FPSqrt 64, TP[Apply (Const("Rounding_Mode",ATy(qTy,rTy)), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state")])),qVar"state"), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'SQRT_S_def = Def ("dfn'SQRT_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, Apply (Call ("PostOpF32",ATy(qTy,F32), Mop(FPSqrt 32, TP[Apply (Const("Rounding_Mode",ATy(qTy,rTy)), qVar"state"), EX(Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)),qVar"state"), LN 31,LN 0,F32)])),qVar"state")), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'SUB_D_def = Def ("dfn'SUB_D",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Apply (Call ("PostOpF64",ATy(qTy,F64), Mop(FPSub 64, TP[Apply (Const("Rounding_Mode",ATy(qTy,rTy)), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"), Apply (Call ("FGR",ATy(qTy,F64),Var("ft",FTy 5)), qVar"state")])),qVar"state"), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'SUB_S_def = Def ("dfn'SUB_S",TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, Apply (Call ("PostOpF32",ATy(qTy,F32), Mop(FPSub 32, TP[Apply (Const("Rounding_Mode",ATy(qTy,rTy)), qVar"state"), EX(Apply (Call ("FGR",ATy(qTy,F64), Var("fs",FTy 5)),qVar"state"), LN 31,LN 0,F32), EX(Apply (Call ("FGR",ATy(qTy,F64), Var("ft",FTy 5)),qVar"state"), LN 31,LN 0,F32)])),qVar"state")), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'SWC1_def = Def ("dfn'SWC1",TP[Var("ft",FTy 5),Var("offset",F16),Var("base",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Let(Var("v",F64), Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add,Mop(SE F64,Var("offset",F16)), Apply (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)), qVar"state"))),qVar"state"), Mop(Snd, Apply (Call ("StoreMemory",ATy(qTy,PTy(bTy,qTy)), TP[Const("WORD",FTy 3),Const("WORD",FTy 3),LT, Bop(Lsl, Apply (Call("FGR",ATy(qTy,F64),Var("ft",FTy 5)), qVar"state"), Bop(Mul,LN 8, Mop(Cast nTy, Bop(BXor, EX(Var("v",F64),LN 2,LN 0,FTy 3), CC[Apply (Const ("BigEndianCPU", ATy(qTy,F1)), qVar"state"),LW(0,2)])))), Var("v",F64),LF]),qVar"state")))))) ; val dfn'SWXC1_def = Def ("dfn'SWXC1",TP[Var("ft",FTy 5),Var("index",FTy 5),Var("base",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Let(Var("v",F64), Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add, Apply (Call("GPR",ATy(qTy,F64),Var("index",FTy 5)), qVar"state"), Apply (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)), qVar"state"))),qVar"state"), Mop(Snd, Apply (Call ("StoreMemory",ATy(qTy,PTy(bTy,qTy)), TP[Const("WORD",FTy 3),Const("WORD",FTy 3),LT, Bop(Lsl, Apply (Call("FGR",ATy(qTy,F64),Var("ft",FTy 5)), qVar"state"), Bop(Mul,LN 8, Mop(Cast nTy, Bop(BXor, EX(Var("v",F64),LN 2,LN 0,FTy 3), CC[Apply (Const ("BigEndianCPU", ATy(qTy,F1)), qVar"state"),LW(0,2)])))), Var("v",F64),LF]),qVar"state")))))) ; val dfn'TRUNC_L_D_def = Def ("dfn'TRUNC_L_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[CS(Mop(FPToInt 64, TP[binary_ieeeSyntax.roundTowardZero_tm, Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state")]), [(Mop(Some,iVar"x"), Call("IntToDWordMIPS",F64,iVar"x")), (LO iTy,LW(9223372036854775807,64))]), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'TRUNC_L_S_def = Def ("dfn'TRUNC_L_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[CS(Mop(FPToInt 32, TP[binary_ieeeSyntax.roundTowardZero_tm, EX(Apply (Call ("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32)]), [(Mop(Some,iVar"x"), Call("IntToDWordMIPS",F64,iVar"x")), (LO iTy,LW(9223372036854775807,64))]), Var("fd",FTy 5)]),qVar"state")))) ; val dfn'TRUNC_W_D_def = Def ("dfn'TRUNC_W_D",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[CS(Mop(FPToInt 64, TP[binary_ieeeSyntax.roundTowardZero_tm, Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state")]), [(Mop(Some,iVar"x"), Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))), (LO iTy,LW(2147483647,64))]),Var("fd",FTy 5)]), qVar"state")))) ; val dfn'TRUNC_W_S_def = Def ("dfn'TRUNC_W_S",TP[Var("fd",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[CS(Mop(FPToInt 32, TP[binary_ieeeSyntax.roundTowardZero_tm, EX(Apply (Call ("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32)]), [(Mop(Some,iVar"x"), Mop(SE F64,Call("IntToWordMIPS",F32,iVar"x"))), (LO iTy,LW(2147483647,64))]),Var("fd",FTy 5)]), qVar"state")))) ; val dfn'DMFC1_def = Def ("dfn'DMFC1",TP[Var("rt",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)),qVar"state"), Var("rt",FTy 5)]),qVar"state")))) ; val dfn'DMTC1_def = Def ("dfn'DMTC1",TP[Var("rt",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), Var("fs",FTy 5)]),qVar"state")))) ; val dfn'MFC1_def = Def ("dfn'MFC1",TP[Var("rt",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(SE F64, EX(Apply (Call("FGR",ATy(qTy,F64),Var("fs",FTy 5)), qVar"state"),LN 31,LN 0,F32)),Var("rt",FTy 5)]), qVar"state")))) ; val dfn'MTC1_def = Def ("dfn'MTC1",TP[Var("rt",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("write'FGR",ATy(qTy,qTy), TP[Mop(SE F64, EX(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LN 31,LN 0,F32)),Var("fs",FTy 5)]), qVar"state")))) ; val dfn'CFC1_def = Def ("dfn'CFC1",TP[Var("rt",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Let(TP[Var("v",F64),qVar"s"], CS(Var("fs",FTy 5), [(LW(0,5), TP[Mop(SE F64, Call ("reg'FIR",F32, Dest("fir",CTy"FIR",qVar"state"))), qVar"state"]), (LW(25,5), TP[Mop(Cast F64, Dest ("FCC",F8,Dest("fcsr",CTy"FCSR",qVar"state"))), qVar"state"]), (LW(31,5), TP[Mop(SE F64, Call ("reg'FCSR",F32, Dest("fcsr",CTy"FCSR",qVar"state"))), qVar"state"]), (AVar(FTy 5), Apply (Call ("raise'exception",ATy(qTy,PTy(F64,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS "Unsupported floating point control register")), qVar"state"))]), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Var("v",F64),Var("rt",FTy 5)]),qVar"s"))))) ; val dfn'CTC1_def = Def ("dfn'CTC1",TP[Var("rt",FTy 5),Var("fs",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), CS(Var("fs",FTy 5), [(LW(0,5),qVar"state"), (LW(25,5), Rupd ("fcsr", TP[qVar"state", Rupd ("FCC", TP[Dest("fcsr",CTy"FCSR",qVar"state"), EX(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LN 7,LN 0,F8)])])), (LW(31,5), Let(qVar"s", Rupd ("fcsr", TP[qVar"state", Call ("write'reg'FCSR",CTy"FCSR", TP[Dest("fcsr",CTy"FCSR",qVar"state"), EX(Apply (Call ("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LN 31,LN 0,F32)])]), Rupd ("fcsr", TP[qVar"s", Rupd ("NAN2008", TP[Dest("fcsr",CTy"FCSR",qVar"s"),LT])]))), (AVar(FTy 5), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS "Unsupported floating point control register")), qVar"state")))])))) ; val dfn'UnknownFPInstruction_def = Def ("dfn'UnknownFPInstruction",qVar"state", ITE(Mop(Not, Dest ("CU1",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply(Const("SignalCP1UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("SignalException",ATy(qTy,qTy),LC("ResI",CTy"ExceptionType")), qVar"state"))) ; val register_inaccessible_def = Def ("register_inaccessible",Var("cb",FTy 5), Close (qVar"state", Mop(Not, Apply (Call ("allow_system_reg_access",ATy(qTy,bTy), TP[Call ("getPerms",CTy"Perms", Apply (Const("PCC",ATy(qTy,CTy"Capability")),qVar"state")), Var("cb",FTy 5)]),qVar"state")))) ; val register_inaccessible_write_attempt_def = Def ("register_inaccessible_write_attempt",Var("mask",F16), Close (qVar"state", Let(TP[bVar"r",Var("s1",PTy(bTy,qTy))], Let(Var("s",PTy(bTy,qTy)), ITB([(Bop(And,Bop(Bit,Var("mask",F16),LN 15), Apply (Call ("register_inaccessible",ATy(qTy,bTy), LW(31,5)),qVar"state")), TP[LT, Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg", CTy"CapExceptionType"),LW(31,5)]), qVar"state")]), (Bop(And,Bop(Bit,Var("mask",F16),LN 14), Apply (Call ("register_inaccessible",ATy(qTy,bTy), LW(30,5)),qVar"state")), TP[LT, Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg", CTy"CapExceptionType"),LW(30,5)]), qVar"state")]), (Bop(And,Bop(Bit,Var("mask",F16),LN 13), Apply (Call ("register_inaccessible",ATy(qTy,bTy), LW(29,5)),qVar"state")), TP[LT, Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg", CTy"CapExceptionType"),LW(29,5)]), qVar"state")]), (Bop(And,Bop(Bit,Var("mask",F16),LN 11), Apply (Call ("register_inaccessible",ATy(qTy,bTy), LW(27,5)),qVar"state")), TP[LT, Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg", CTy"CapExceptionType"),LW(27,5)]), qVar"state")]), (Bop(And,Bop(Bit,Var("mask",F16),LN 12), Apply (Call ("register_inaccessible",ATy(qTy,bTy), LW(28,5)),qVar"state")), TP[LT, Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg", CTy"CapExceptionType"),LW(28,5)]), qVar"state")])],TP[LF,qVar"state"]), TP[Mop(Fst,Var("s",PTy(bTy,qTy))),Var("s",PTy(bTy,qTy))]), TP[bVar"r",Mop(Snd,Var("s1",PTy(bTy,qTy)))]))) ; val watchOOB_def = Def ("watchOOB",TP[Var("cap",CTy"Capability"),Var("pc",F64)], Close(qVar"state",LU)) ; val SignExtendBitString_def = Def ("SignExtendBitString",TP[nVar"w",vVar"x"], Mop(PadLeft,TP[Mop(Head,vVar"x"),nVar"w",vVar"x"])) ; val ZeroExtendBitString_def = Def ("ZeroExtendBitString",TP[nVar"w",vVar"x"], Mop(PadLeft,TP[LF,nVar"w",vVar"x"])) ; val dfn'DumpCapReg_def = Def0 ("dfn'DumpCapReg",LU) ; val dfn'CGetBase_def = Def ("dfn'CGetBase",TP[Var("rd",FTy 5),Var("cb",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state"))], Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")),Var("rd",FTy 5)]), qVar"state")))) ; val dfn'CGetOffset_def = Def ("dfn'CGetOffset",TP[Var("rd",FTy 5),Var("cb",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state"))], Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")),Var("rd",FTy 5)]), qVar"state")))) ; val dfn'CGetLen_def = Def ("dfn'CGetLen",TP[Var("rd",FTy 5),Var("cb",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state"))], Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Call ("getLength",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")),Var("rd",FTy 5)]), qVar"state")))) ; val dfn'CGetTag_def = Def ("dfn'CGetTag",TP[Var("rd",FTy 5),Var("cb",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state"))], Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(Cast F64, Mop(Cast F1, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")))), Var("rd",FTy 5)]),qVar"state")))) ; val dfn'CGetSealed_def = Def ("dfn'CGetSealed",TP[Var("rd",FTy 5),Var("cb",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state"))], Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[BFI(LN 0,LN 0, Mop(Cast F1, Call ("getSealed",bTy, Apply (Call ("CAPR", ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))), Apply (Call("GPR",ATy(qTy,F64),Var("rd",FTy 5)), qVar"state")),Var("rd",FTy 5)]), qVar"state"), TP[Apply (Call("GPR",ATy(qTy,F64),Var("rd",FTy 5)),qVar"s0"), qVar"s0"]), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[BFI(LN 63,LN 1,LW(0,63),Var("v",F64)), Var("rd",FTy 5)]),qVar"s"))))) ; val dfn'CGetPerm_def = Def ("dfn'CGetPerm",TP[Var("rd",FTy 5),Var("cb",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state"))], Apply (Call ("write'GPR",ATy(qTy,qTy), TP[BFI(Bop(Add,Const("UPERMS",nTy),LN 14),LN 15, EX(Call ("reg'UPerms",F32, Call ("getUPerms",CTy"UPerms", Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))), Bop(Sub,Const("UPERMS",nTy),LN 1),LN 0,F16), BFI(LN 14,LN 0, EX(Call ("reg'Perms",F32, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))), LN 14,LN 0,FTy 15),LW(0,64))), Var("rd",FTy 5)]),qVar"state")))) ; val dfn'CGetType_def = Def ("dfn'CGetType",TP[Var("rd",FTy 5),Var("cb",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Call ("getSealed",bTy, Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state")), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(Cast F64, Call ("getType",FTy 24, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))), Var("rd",FTy 5)]),qVar"state"))], Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(BNot,LW(0,64)),Var("rd",FTy 5)]),qVar"state")))) ; val dfn'CGetPCC_def = Def ("dfn'CGetPCC",Var("cd",FTy 5), Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cd",FTy 5)]),qVar"state"))], Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Call ("setOffset",CTy"Capability", TP[Apply (Const("PCC",ATy(qTy,CTy"Capability")), qVar"state"), Apply(Const("PC",ATy(qTy,F64)),qVar"state")]), Var("cd",FTy 5)]),qVar"state")))) ; val dfn'CGetPCCSetOffset_def = Def ("dfn'CGetPCCSetOffset",TP[Var("cd",FTy 5),Var("rs",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cd",FTy 5)]),qVar"state")), (Mop(Not, Call ("canRepOffset",bTy, TP[Apply (Const("PCC",ATy(qTy,CTy"Capability")),qVar"state"), Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state")])), Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Call ("setOffset",CTy"Capability", TP[Const("nullCap",CTy"Capability"), Bop(Add, Call ("getBase",F64, Apply (Const("PCC",ATy(qTy,CTy"Capability")), qVar"state")), Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state"))]),Var("cd",FTy 5)]), qVar"state"))], Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Call ("setOffset",CTy"Capability", TP[Apply (Const("PCC",ATy(qTy,CTy"Capability")), qVar"state"), Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state")]),Var("cd",FTy 5)]),qVar"state")))) ; val dfn'CGetCause_def = Def ("dfn'CGetCause",Var("rd",FTy 5), Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Mop(Not, Dest ("Access_System_Registers",bTy, Call ("getPerms",CTy"Perms", Apply (Const("PCC",ATy(qTy,CTy"Capability")),qVar"state")))), Apply (Call ("SignalCapException_noReg",ATy(qTy,qTy), LC("capExcAccessSysReg",CTy"CapExceptionType")), qVar"state"))], Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[BFI(LN 7,LN 0, Dest ("RegNum",F8, Dest ("capcause",CTy"CapCause",qVar"state")), Apply (Call("GPR",ATy(qTy,F64),Var("rd",FTy 5)), qVar"state")),Var("rd",FTy 5)]), qVar"state"), TP[Apply (Call("GPR",ATy(qTy,F64),Var("rd",FTy 5)),qVar"s0"), qVar"s0"]), Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[BFI(LN 15,LN 8, Dest ("ExcCode",F8, Dest ("capcause",CTy"CapCause",qVar"s")), Var("v",F64)),Var("rd",FTy 5)]),qVar"s"), TP[Apply (Call("GPR",ATy(qTy,F64),Var("rd",FTy 5)), qVar"s0"),qVar"s0"]), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[BFI(LN 63,LN 16,LW(0,48),Var("v",F64)), Var("rd",FTy 5)]),qVar"s")))))) ; val dfn'CSetCause_def = Def ("dfn'CSetCause",Var("rt",FTy 5), Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Mop(Not, Dest ("Access_System_Registers",bTy, Call ("getPerms",CTy"Perms", Apply (Const("PCC",ATy(qTy,CTy"Capability")),qVar"state")))), Apply (Call ("SignalCapException_noReg",ATy(qTy,qTy), LC("capExcAccessSysReg",CTy"CapExceptionType")), qVar"state"))], Let(qVar"s", Rupd ("capcause", TP[qVar"state", Rupd ("ExcCode", TP[Dest("capcause",CTy"CapCause",qVar"state"), EX(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LN 15,LN 8,F8)])]), Rupd ("capcause", TP[qVar"s", Rupd ("RegNum", TP[Dest("capcause",CTy"CapCause",qVar"s"), EX(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"s"),LN 7,LN 0,F8)])]))))) ; val dfn'CIncOffset_def = Def ("dfn'CIncOffset",TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cd",FTy 5)]),qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Bop(And, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state")), Bop(And, Call ("getSealed",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")), Mop(Not, EQ(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LW(0,64))))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Call ("canRepOffset",bTy, TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"), Bop(Add, Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"))])), Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Call ("setOffset",CTy"Capability", TP[Const("nullCap",CTy"Capability"), Bop(Add, Bop(Add, Call ("getBase",F64, Apply (Call ("CAPR", ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")), Call ("getOffset",F64, Apply (Call ("CAPR", ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"))]),Var("cd",FTy 5)]), qVar"state"))], Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Call ("setOffset",CTy"Capability", TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"), Bop(Add, Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"))]),Var("cd",FTy 5)]), qVar"state")))) ; val dfn'CIncOffsetImmediate_def = Def ("dfn'CIncOffsetImmediate", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("increment",FTy 11)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cd",FTy 5)]),qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Bop(And, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state")), Call ("getSealed",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Call ("canRepOffset",bTy, TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"), Bop(Add, Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")), Mop(SE F64,Var("increment",FTy 11)))])), Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Call ("setOffset",CTy"Capability", TP[Const("nullCap",CTy"Capability"), Bop(Add, Bop(Add, Call ("getBase",F64, Apply (Call ("CAPR", ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")), Call ("getOffset",F64, Apply (Call ("CAPR", ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))), Mop(SE F64,Var("increment",FTy 11)))]), Var("cd",FTy 5)]),qVar"state"))], Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Call ("setOffset",CTy"Capability", TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"), Bop(Add, Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")), Mop(SE F64,Var("increment",FTy 11)))]), Var("cd",FTy 5)]),qVar"state")))) ; val dfn'CSetBounds_def = Def ("dfn'CSetBounds",TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)], Close (qVar"state", Let(Var("v",F64), Call ("getBase",F64, Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state")), Let(Var("v1",F64), Bop(Add, Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state")), Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call ("register_inaccessible",ATy(qTy,bTy), Var("cd",FTy 5)),qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cd",FTy 5)]),qVar"state")), (Apply (Call ("register_inaccessible",ATy(qTy,bTy), Var("cb",FTy 5)),qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Call ("getSealed",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Bop(Ult,Var("v1",F64),Var("v",F64)), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Bop(Ugt, Bop(Add,CC[LW(0,1),Var("v1",F64)], CC[LW(0,1), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state")]), Bop(Add,CC[LW(0,1),Var("v",F64)], CC[LW(0,1), Call ("getLength",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))])), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state"))], Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Call ("setBounds",CTy"Capability", TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"), Apply (Call ("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state")]),Var("cd",FTy 5)]), qVar"state")))))) ; val dfn'CSetBoundsExact_def = Def ("dfn'CSetBoundsExact", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)], Close (qVar"state", Let(Var("v",F64), Call ("getBase",F64, Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state")), Let(Var("v1",F64), Bop(Add, Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state")), Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call ("register_inaccessible",ATy(qTy,bTy), Var("cd",FTy 5)),qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cd",FTy 5)]),qVar"state")), (Apply (Call ("register_inaccessible",ATy(qTy,bTy), Var("cb",FTy 5)),qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Call ("getSealed",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Bop(Ult,Var("v1",F64),Var("v",F64)), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Bop(Ugt, Bop(Add,CC[LW(0,1),Var("v1",F64)], CC[LW(0,1), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state")]), Bop(Add,CC[LW(0,1),Var("v",F64)], CC[LW(0,1), Call ("getLength",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))])), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Call ("canRepBounds",bTy, TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state")])), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcInexact",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state"))], Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Call ("setBounds",CTy"Capability", TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"), Apply (Call ("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state")]),Var("cd",FTy 5)]), qVar"state")))))) ; val dfn'CSetBoundsImmediate_def = Def ("dfn'CSetBoundsImmediate", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("req_length",FTy 11)], Close (qVar"state", Let(Var("v",F64), Call ("getBase",F64, Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state")), Let(Var("v1",F64), Bop(Add, Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state")), Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call ("register_inaccessible",ATy(qTy,bTy), Var("cd",FTy 5)),qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cd",FTy 5)]),qVar"state")), (Apply (Call ("register_inaccessible",ATy(qTy,bTy), Var("cb",FTy 5)),qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Call ("getSealed",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Bop(Ult,Var("v1",F64),Var("v",F64)), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Bop(Ugt, Bop(Add,CC[LW(0,1),Var("v1",F64)], Mop(Cast(FTy 65),Var("req_length",FTy 11))), Bop(Add,CC[LW(0,1),Var("v",F64)], CC[LW(0,1), Call ("getLength",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))])), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state"))], Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Call ("setBounds",CTy"Capability", TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"), Mop(Cast F64,Var("req_length",FTy 11))]), Var("cd",FTy 5)]),qVar"state")))))) ; val dfn'CClearRegs_def = Def ("dfn'CClearRegs",TP[Var("regset",FTy 5),Var("mask",F16)], Close (qVar"state", ITE(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)),qVar"state"), CS(Var("regset",FTy 5), [(LW(0,5), Mop(Snd, Apply (For(TP[LN 0,LN 15, Close (nVar"i", Close (qVar"state", TP[LU, ITE(Bop(Bit,Var("mask",F16),nVar"i"), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[LW(0,64), Mop(Cast(FTy 5),nVar"i")]), qVar"state"),qVar"state")]))]), qVar"state"))), (LW(1,5), Mop(Snd, Apply (For(TP[LN 16,LN 31, Close (nVar"i", Close (qVar"state", TP[LU, ITE(Bop(Bit,Var("mask",F16), Bop(Sub,nVar"i",LN 16)), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[LW(0,64), Mop(Cast(FTy 5),nVar"i")]), qVar"state"),qVar"state")]))]), qVar"state"))), (LW(2,5), Mop(Snd, Apply (For(TP[LN 0,LN 15, Close (nVar"i", Close (qVar"state", TP[LU, ITE(Bop(Bit,Var("mask",F16),nVar"i"), Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Const ("nullCap", CTy"Capability"), Mop(Cast(FTy 5),nVar"i")]), qVar"state"),qVar"state")]))]), qVar"state"))), (LW(3,5), Let(TP[bVar"v",qVar"s"], Apply (Call ("register_inaccessible_write_attempt", ATy(qTy,PTy(bTy,qTy)),Var("mask",F16)), qVar"state"), ITE(Mop(Not,bVar"v"), Mop(Snd, Apply (For(TP[LN 16,LN 31, Close (nVar"i", Close (qVar"state", TP[LU, ITE(Bop(Bit,Var("mask",F16), Bop(Sub,nVar"i", LN 16)), Apply (Call ("write'CAPR", ATy(qTy,qTy), TP[Const ("nullCap", CTy"Capability"), Mop(Cast(FTy 5), nVar"i")]), qVar"state"), qVar"state")]))]), qVar"s")),qVar"s"))), (AVar(FTy 5), Apply (Call ("SignalException",ATy(qTy,qTy), LC("ResI",CTy"ExceptionType")),qVar"state"))])))) ; val dfn'CClearTag_def = Def ("dfn'CClearTag",TP[Var("cd",FTy 5),Var("cb",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cd",FTy 5)]),qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state"))], Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Call ("setTag",CTy"Capability", TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"),LF]), Var("cd",FTy 5)]),qVar"state")))) ; val dfn'CAndPerm_def = Def ("dfn'CAndPerm",TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cd",FTy 5)]),qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"),Var("cb",FTy 5)]), qVar"state")), (Call ("getSealed",bTy, Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state")), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state"))], Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Call ("setUPerms",CTy"Capability", TP[Call ("setPerms",CTy"Capability", TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"), Call ("rec'Perms",CTy"Perms", Mop(Cast F32, Bop(BAnd, EX(Call ("reg'Perms",F32, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR", ATy(qTy, CTy"Capability"), Var("cb",FTy 5)), qVar"state"))), LN 14,LN 0,FTy 15), EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)), qVar"state"),LN 14,LN 0, FTy 15))))]), Call ("rec'UPerms",CTy"UPerms", Mop(Cast F32, Bop(BAnd, EX(Call ("reg'UPerms",F32, Call ("getUPerms",CTy"UPerms", Apply (Call ("CAPR", ATy(qTy,CTy"Capability"), Var("cb",FTy 5)), qVar"state"))), Bop(Sub,Const("UPERMS",nTy),LN 1), LN 0,F16), EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"state"), Bop(Add,Const("UPERMS",nTy),LN 14), LN 15,F16))))]),Var("cd",FTy 5)]), qVar"state")))) ; val dfn'CSetOffset_def = Def ("dfn'CSetOffset",TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cd",FTy 5)]),qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Bop(And, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state")), Call ("getSealed",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Call ("canRepOffset",bTy, TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state")])), Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Call ("setOffset",CTy"Capability", TP[Const("nullCap",CTy"Capability"), Bop(Add, Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"))]),Var("cd",FTy 5)]), qVar"state"))], Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Call ("setOffset",CTy"Capability", TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state")]),Var("cd",FTy 5)]),qVar"state")))) ; val dfn'CSub_def = Def ("dfn'CSub",TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("ct",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("ct",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("ct",FTy 5)]),qVar"state"))], Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(Sub, Bop(Sub, Bop(Add, Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")), Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))), Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("ct",FTy 5)),qVar"state"))), Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("ct",FTy 5)),qVar"state"))), Var("rd",FTy 5)]),qVar"state")))) ; val dfn'CCheckPerm_def = Def ("dfn'CCheckPerm",TP[Var("cs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cs",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"),Var("cs",FTy 5)]), qVar"state")), (Mop(Not, EQ(Bop(BAnd, EX(Call ("reg'Perms",F32, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cs",FTy 5)),qVar"state"))), LN 14,LN 0,FTy 15), EX(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LN 14,LN 0,FTy 15)), EX(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LN 14,LN 0,FTy 15))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcUser",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state")), (Mop(Not, EQ(Bop(BAnd, EX(Call ("reg'UPerms",F32, Call ("getUPerms",CTy"UPerms", Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cs",FTy 5)),qVar"state"))), Bop(Sub,Const("UPERMS",nTy),LN 1),LN 0,F16), EX(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"), Bop(Add,Const("UPERMS",nTy),LN 14),LN 15,F16)), EX(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),Bop(Add,Const("UPERMS",nTy),LN 14), LN 15,F16))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcUser",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state")), (Mop(Not, EQ(EX(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LN 63, Bop(Add,Const("UPERMS",nTy),LN 15),FTy 33),LW(0,33))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcUser",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state"))],qVar"state"))) ; val dfn'CCheckType_def = Def ("dfn'CCheckType",TP[Var("cs",FTy 5),Var("cb",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cs",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"),Var("cs",FTy 5)]), qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"),Var("cb",FTy 5)]), qVar"state")), (Mop(Not, Call ("getSealed",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state")), (Mop(Not, Call ("getSealed",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, EQ(Call ("getType",FTy 24, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cs",FTy 5)),qVar"state")), Call ("getType",FTy 24, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcType",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state"))],qVar"state"))) ; val dfn'CFromPtr_def = Def ("dfn'CFromPtr",TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cd",FTy 5)]),qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), LW(0,64)), Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Const("nullCap",CTy"Capability"),Var("cd",FTy 5)]), qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"),Var("cb",FTy 5)]), qVar"state")), (Call ("getSealed",bTy, Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state")), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Call ("canRepOffset",bTy, TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state")])), Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Call ("setOffset",CTy"Capability", TP[Const("nullCap",CTy"Capability"), Bop(Add, Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"))]),Var("cd",FTy 5)]), qVar"state"))], Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Call ("setOffset",CTy"Capability", TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state")]),Var("cd",FTy 5)]),qVar"state")))) ; val dfn'CToPtr_def = Def ("dfn'CToPtr",TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("ct",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("ct",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("ct",FTy 5)]),qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("ct",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"),Var("ct",FTy 5)]), qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), Apply (Call("write'GPR",ATy(qTy,qTy),TP[LW(0,64),Var("rd",FTy 5)]), qVar"state"))], Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(Sub, Bop(Add, Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")), Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))), Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("ct",FTy 5)),qVar"state"))), Var("rd",FTy 5)]),qVar"state")))) ; val dfn'CPtrCmp_def = Def ("dfn'CPtrCmp", TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("ct",FTy 5),Var("t",FTy 3)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("ct",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("ct",FTy 5)]),qVar"state"))], Let(Var("v",CTy"Capability"), Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"), Let(Var("v0",CTy"Capability"), Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("ct",FTy 5)), qVar"state"), Let(Var("s", PTy(bTy,PTy(bTy,PTy(bTy,PTy(bTy,PTy(bTy,qTy)))))), ITE(Mop(Not, EQ(Call ("getTag",bTy,Var("v",CTy"Capability")), Call ("getTag",bTy,Var("v0",CTy"Capability")))), ITE(Call("getTag",bTy,Var("v",CTy"Capability")), TP[LF,LF,LT,LT,LF,qVar"state"], TP[LT,LT,LF,LF,LF,qVar"state"]), Let(Var("cursor1",F64), Bop(Add, Call ("getBase",F64, Var("v",CTy"Capability")), Call ("getOffset",F64, Var("v",CTy"Capability"))), Let(Var("cursor2",F64), Bop(Add, Call ("getBase",F64, Var("v0",CTy"Capability")), Call ("getOffset",F64, Var("v0",CTy"Capability"))), TP[Bop(Ult,Var("cursor1",F64), Var("cursor2",F64)), Bop(Lt,Var("cursor1",F64), Var("cursor2",F64)), Bop(Ugt,Var("cursor1",F64), Var("cursor2",F64)), Bop(Gt,Var("cursor1",F64), Var("cursor2",F64)), EQ(Var("cursor1",F64), Var("cursor2",F64)),qVar"state"]))), CS(Var("t",FTy 3), [(LW(0,3), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(Cast F64, Mop(Fst, Mop(Snd, Mop(Snd, Mop(Snd, Mop(Snd, Var("s", PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, qTy)))))))))))), Var("rd",FTy 5)]), Mop(Snd, Mop(Snd, Mop(Snd, Mop(Snd, Mop(Snd, Var("s", PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, qTy))))))))))))), (LW(1,3), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(Cast F64, Mop(Not, Mop(Fst, Mop(Snd, Mop(Snd, Mop(Snd, Mop(Snd, Var("s", PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, qTy))))))))))))), Var("rd",FTy 5)]), Mop(Snd, Mop(Snd, Mop(Snd, Mop(Snd, Mop(Snd, Var("s", PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, qTy))))))))))))), (LW(2,3), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(Cast F64, Mop(Fst, Mop(Snd, Var("s", PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, qTy))))))))), Var("rd",FTy 5)]), Mop(Snd, Mop(Snd, Mop(Snd, Mop(Snd, Mop(Snd, Var("s", PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, qTy))))))))))))), (LW(3,3), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(Cast F64, Bop(Or, Mop(Fst, Mop(Snd, Var("s", PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, qTy)))))))), Mop(Fst, Mop(Snd, Mop(Snd, Mop(Snd, Mop(Snd, Var("s", PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, qTy))))))))))))), Var("rd",FTy 5)]), Mop(Snd, Mop(Snd, Mop(Snd, Mop(Snd, Mop(Snd, Var("s", PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, qTy))))))))))))), (LW(4,3), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(Cast F64, Mop(Fst, Var("s", PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, qTy)))))))), Var("rd",FTy 5)]), Mop(Snd, Mop(Snd, Mop(Snd, Mop(Snd, Mop(Snd, Var("s", PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, qTy))))))))))))), (LW(5,3), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(Cast F64, Bop(Or, Mop(Fst, Var("s", PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, qTy))))))), Mop(Fst, Mop(Snd, Mop(Snd, Mop(Snd, Mop(Snd, Var("s", PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, qTy))))))))))))), Var("rd",FTy 5)]), Mop(Snd, Mop(Snd, Mop(Snd, Mop(Snd, Mop(Snd, Var("s", PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, qTy))))))))))))), (LW(6,3), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[ITE(EQ(Var("v",CTy"Capability"), Var("v0",CTy"Capability")), LW(1,64),LW(0,64)),Var("rd",FTy 5)]), Mop(Snd, Mop(Snd, Mop(Snd, Mop(Snd, Mop(Snd, Var("s", PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, qTy))))))))))))), (LW(7,3), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[ITE(EQ(Var("v",CTy"Capability"), Var("v0",CTy"Capability")), LW(0,64),LW(1,64)),Var("rd",FTy 5)]), Mop(Snd, Mop(Snd, Mop(Snd, Mop(Snd, Mop(Snd, Var("s", PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, PTy(bTy, qTy)))))))))))))]))))))) ; val dfn'CBTU_def = Def ("dfn'CBTU",TP[Var("cb",FTy 5),Var("offset",F16)], Close (qVar"state", ITE(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)),qVar"state"), Let(TP[bVar"v",qVar"s"], Let(qVar"s0", Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"), TP[Apply (Call ("register_inaccessible",ATy(qTy,bTy), Var("cb",FTy 5)),qVar"s0"),qVar"s0"]), ITB([(bVar"v", Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"s")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s"))), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply (Const("PC",ATy(qTy,F64)),qVar"s"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("offset",F16)), LN 2)))),qVar"s"))],qVar"s"))))) ; val dfn'CBTS_def = Def ("dfn'CBTS",TP[Var("cb",FTy 5),Var("offset",F16)], Close (qVar"state", ITE(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)),qVar"state"), Let(TP[bVar"v",qVar"s"], Let(qVar"s0", Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"), TP[Apply (Call ("register_inaccessible",ATy(qTy,bTy), Var("cb",FTy 5)),qVar"s0"),qVar"s0"]), ITB([(bVar"v", Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"s")), (Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s")), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply (Const("PC",ATy(qTy,F64)),qVar"s"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("offset",F16)), LN 2)))),qVar"s"))],qVar"s"))))) ; val dfn'CSC_def = Def ("dfn'CSC", TP[Var("cs",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),Var("offset",FTy 11)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cs",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"),Var("cb",FTy 5)]), qVar"state")), (Call ("getSealed",bTy, Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state")), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Dest ("Permit_Store_Capability",bTy, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcPermStoreCap",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Bop(And, Mop(Not, Dest ("Permit_Store_Local_Capability",bTy, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")))), Bop(And, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cs",FTy 5)),qVar"state")), Mop(Not, Dest ("Global",bTy, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cs",FTy 5)),qVar"state")))))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcPermStoreLocalCap",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state"))], Let(Var("v",F64), Bop(Add, Bop(Add, Bop(Add, Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")), Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state")), Mop(SE F64,CC[Var("offset",FTy 11),LW(0,4)])), ITB([(Bop(Ugt, Bop(Add,Var("v",F64), Mop(Cast F64,Const("CAPBYTEWIDTH",nTy))), Bop(Add, Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")), Call ("getLength",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Bop(Ult,Var("v",F64), Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not,Call("isCapAligned",bTy,Var("v",F64))), Apply (Call ("SignalException",ATy(qTy,qTy), LC("AdES",CTy"ExceptionType")), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("BadVAddr", TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state"),Var("v",F64)])), qVar"state")))], Apply (Call("write'LLbit",ATy(qTy,qTy),LO bTy), Mop(Snd, Apply (Call ("StoreCap",ATy(qTy,PTy(bTy,qTy)), TP[Var("v",F64), Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cs",FTy 5)),qVar"state"),LF]), qVar"state")))))))) ; val dfn'CLC_def = Def ("dfn'CLC", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),Var("offset",FTy 11)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cd",FTy 5)]),qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"),Var("cb",FTy 5)]), qVar"state")), (Call ("getSealed",bTy, Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state")), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state"))], Let(Var("v",F64), Bop(Add, Bop(Add, Bop(Add, Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")), Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state")), Mop(SE F64,CC[Var("offset",FTy 11),LW(0,4)])), ITB([(Bop(Ugt, Bop(Add,Var("v",F64), Mop(Cast F64,Const("CAPBYTEWIDTH",nTy))), Bop(Add, Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")), Call ("getLength",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Bop(Ult,Var("v",F64), Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not,Call("isCapAligned",bTy,Var("v",F64))), Apply (Call ("SignalException",ATy(qTy,qTy), LC("AdEL",CTy"ExceptionType")), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("BadVAddr", TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state"),Var("v",F64)])), qVar"state")))], Let(TP[Var("v",CTy"Capability"),qVar"s"], Apply (Call ("LoadCap",ATy(qTy,PTy(CTy"Capability",qTy)), TP[Var("v",F64),LF]),qVar"state"), Apply (Call("write'LLbit",ATy(qTy,qTy),LO bTy), ITE(Mop(Not, Apply (Const ("exceptionSignalled",ATy(qTy,bTy)), qVar"s")), Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[ITE(Mop(Not, Dest ("Permit_Load_Capability", bTy, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR", ATy(qTy, CTy"Capability"), Var("cb",FTy 5)), qVar"s")))), Call ("setTag",CTy"Capability", TP[Var("v",CTy"Capability"), LF]), Var("v",CTy"Capability")), Var("cd",FTy 5)]),qVar"s"),qVar"s")))))))) ; val dfn'CLoad_def = Def ("dfn'CLoad", TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),Var("offset",F8), Var("s",F1),Var("t",FTy 2)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"),Var("cb",FTy 5)]), qVar"state")), (Call ("getSealed",bTy, Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state")), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Dest ("Permit_Load",bTy, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcPermLoad",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state"))], Let(Var("v",CTy"Capability"), Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"), Let(Var("v0",F64), Bop(Add, Bop(Add, Bop(Add, Call("getBase",F64,Var("v",CTy"Capability")), Call ("getOffset",F64,Var("v",CTy"Capability"))), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state")), Mop(SE F64, Bop(Lsl, CC[REP(Mop(Cast F1, Bop(Bit,Var("offset",F8),LN 7)), LN 3,FTy 3),Var("offset",F8)], Mop(Cast nTy,Var("t",FTy 2))))), Let(Var("s0",PTy(FTy 3,PTy(FTy 3,PTy(F64,qTy)))), CS(Var("t",FTy 2), [(LW(0,2), TP[Bop(BXor,EX(Var("v0",F64),LN 2,LN 0,FTy 3), REP(Apply (Const("BigEndianCPU",ATy(qTy,F1)), qVar"state"),LN 3,FTy 3)), Const("BYTE",FTy 3),LW(1,64),qVar"state"]), (LW(1,2), TP[Bop(BXor,EX(Var("v0",F64),LN 2,LN 0,FTy 3), CC[REP(Apply (Const ("BigEndianCPU",ATy(qTy,F1)), qVar"state"),LN 2,FTy 2), LW(0,1)]),Const("HALFWORD",FTy 3), LW(2,64),qVar"state"]), (LW(2,2), TP[Bop(BXor,EX(Var("v0",F64),LN 2,LN 0,FTy 3), CC[Apply (Const("BigEndianCPU",ATy(qTy,F1)), qVar"state"),LW(0,2)]), Const("WORD",FTy 3),LW(4,64),qVar"state"]), (LW(3,2), TP[LW(0,3),Const("DOUBLEWORD",FTy 3),LW(8,64), qVar"state"])]), ITB([(Bop(Ugt, Bop(Add,CC[LW(0,1),Var("v0",F64)], CC[LW(0,1), Mop(Fst, Mop(Snd, Mop(Snd, Var("s0", PTy(FTy 3, PTy(FTy 3, PTy(F64,qTy)))))))]), Bop(Add, CC[LW(0,1), Call ("getBase",F64, Var("v",CTy"Capability"))], CC[LW(0,1), Call ("getLength",F64, Var("v",CTy"Capability"))])), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength", CTy"CapExceptionType"), Var("cb",FTy 5)]), Mop(Snd, Mop(Snd, Mop(Snd, Var("s0", PTy(FTy 3, PTy(FTy 3,PTy(F64,qTy))))))))), (Bop(Ult,Var("v0",F64), Call ("getBase",F64,Var("v",CTy"Capability"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength", CTy"CapExceptionType"), Var("cb",FTy 5)]), Mop(Snd, Mop(Snd, Mop(Snd, Var("s0", PTy(FTy 3, PTy(FTy 3,PTy(F64,qTy)))))))))], Let(TP[Var("v",F64), Var("s0", PTy(FTy 3,PTy(FTy 3,PTy(F64,qTy))))], Let(TP[Var("v",F64), Var("s3",PTy(FTy 3,PTy(F64,qTy)))], Let(TP[Var("v",F64), Var("s3",PTy(F64,qTy))], Let(TP[Var("v",F64),qVar"s3"], Apply (Call ("LoadMemoryCap", ATy(qTy,PTy(F64,qTy)), TP[Mop(Fst, Mop(Snd, Var("s0", PTy(FTy 3, PTy(FTy 3, PTy(F64, qTy)))))), LT,Var("v0",F64),LF]), Mop(Snd, Mop(Snd, Mop(Snd, Var("s0", PTy(FTy 3, PTy(FTy 3, PTy(F64, qTy)))))))), TP[Var("v",F64), Mop(Fst, Mop(Snd, Mop(Snd, Var("s0", PTy(FTy 3, PTy(FTy 3, PTy(F64, qTy))))))), qVar"s3"]), TP[Var("v",F64), Mop(Fst, Mop(Snd, Var("s0", PTy(FTy 3, PTy(FTy 3, PTy(F64,qTy)))))), Var("s3",PTy(F64,qTy))]), TP[Var("v",F64), Mop(Fst, Var("s0", PTy(FTy 3, PTy(FTy 3,PTy(F64,qTy))))), Var("s3",PTy(FTy 3,PTy(F64,qTy)))]), Let(TP[bVar"v0", Var("s0", PTy(FTy 3,PTy(FTy 3,PTy(F64,qTy))))], Let(TP[bVar"v", Var("s3",PTy(FTy 3,PTy(F64,qTy)))], Let(TP[bVar"v", Var("s3",PTy(F64,qTy))], Let(TP[bVar"v",qVar"s3"], Let(qVar"s", Mop(Snd, Mop(Snd, Mop(Snd, Var("s0", PTy(FTy 3, PTy(FTy 3, PTy(F64, qTy))))))), TP[Apply (Const ("exceptionSignalled", ATy(qTy,bTy)), qVar"s"),qVar"s"]), TP[bVar"v", Mop(Fst, Mop(Snd, Mop(Snd, Var("s0", PTy(FTy 3, PTy(FTy 3, PTy(F64, qTy))))))), qVar"s3"]), TP[bVar"v", Mop(Fst, Mop(Snd, Var("s0", PTy(FTy 3, PTy(FTy 3, PTy(F64, qTy)))))), Var("s3",PTy(F64,qTy))]), TP[bVar"v", Mop(Fst, Var("s0", PTy(FTy 3, PTy(FTy 3, PTy(F64,qTy))))), Var("s3",PTy(FTy 3,PTy(F64,qTy)))]), ITE(Mop(Not,bVar"v0"), Let(vVar"final_data", EX(Mop(Cast vTy,Var("v",F64)), Bop(Sub, Bop(Add, Bop(Mul, Mop(Cast nTy, Mop(Fst, Var("s0", PTy(FTy 3, PTy(FTy 3, PTy(F64, qTy)))))), LN 8), Bop(Mul, Mop(Cast nTy, Mop(Fst, Mop(Snd, Mop(Snd, Var("s0", PTy(FTy 3, PTy(FTy 3, PTy(F64, qTy)))))))), LN 8)),LN 1), Bop(Mul, Mop(Cast nTy, Mop(Fst, Var("s0", PTy(FTy 3, PTy(FTy 3, PTy(F64, qTy)))))), LN 8),vTy), ITE(EQ(Var("s",F1),LW(0,1)), Apply (Call ("write'GPR", ATy(qTy,qTy), TP[Mop(Cast F64, Call ("ZeroExtendBitString", vTy, TP[LN 64, vVar"final_data"])), Var("rd",FTy 5)]), Mop(Snd, Mop(Snd, Mop(Snd, Var("s0", PTy(FTy 3, PTy(FTy 3, PTy(F64, qTy)))))))), Apply (Call ("write'GPR", ATy(qTy,qTy), TP[Mop(Cast F64, Call ("SignExtendBitString", vTy, TP[LN 64, vVar"final_data"])), Var("rd",FTy 5)]), Mop(Snd, Mop(Snd, Mop(Snd, Var("s0", PTy(FTy 3, PTy(FTy 3, PTy(F64, qTy)))))))))), Mop(Snd, Mop(Snd, Mop(Snd, Var("s0", PTy(FTy 3, PTy(FTy 3, PTy(F64,qTy))))))))))))))))) ; val dfn'CStore_def = Def ("dfn'CStore", TP[Var("rs",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),Var("offset",F8), Var("t",FTy 2)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"),Var("cb",FTy 5)]), qVar"state")), (Call ("getSealed",bTy, Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state")), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Dest ("Permit_Store",bTy, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcPermStore",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state"))], Let(Var("v",CTy"Capability"), Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"), Let(Var("v0",F64), Bop(Add, Bop(Add, Bop(Add, Call("getBase",F64,Var("v",CTy"Capability")), Call ("getOffset",F64,Var("v",CTy"Capability"))), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state")), Mop(SE F64, Bop(Lsl, CC[REP(Mop(Cast F1, Bop(Bit,Var("offset",F8),LN 7)), LN 3,FTy 3),Var("offset",F8)], Mop(Cast nTy,Var("t",FTy 2))))), Let(Var("s",PTy(FTy 3,PTy(FTy 3,PTy(F64,qTy)))), CS(Var("t",FTy 2), [(LW(0,2), TP[Bop(BXor,EX(Var("v0",F64),LN 2,LN 0,FTy 3), REP(Apply (Const("BigEndianCPU",ATy(qTy,F1)), qVar"state"),LN 3,FTy 3)), Const("BYTE",FTy 3),LW(1,64),qVar"state"]), (LW(1,2), TP[Bop(BXor,EX(Var("v0",F64),LN 2,LN 0,FTy 3), CC[REP(Apply (Const ("BigEndianCPU",ATy(qTy,F1)), qVar"state"),LN 2,FTy 2), LW(0,1)]),Const("HALFWORD",FTy 3), LW(2,64),qVar"state"]), (LW(2,2), TP[Bop(BXor,EX(Var("v0",F64),LN 2,LN 0,FTy 3), CC[REP(Apply (Const ("BigEndianCPU",ATy(qTy,F1)), qVar"state"),LN 1,F1),LW(0,2)]), Const("WORD",FTy 3),LW(4,64),qVar"state"]), (LW(3,2), TP[LW(0,3),Const("DOUBLEWORD",FTy 3),LW(8,64), qVar"state"])]), ITB([(Bop(Ugt, Bop(Add,CC[LW(0,1),Var("v0",F64)], CC[LW(0,1), Mop(Fst, Mop(Snd, Mop(Snd, Var("s", PTy(FTy 3, PTy(FTy 3, PTy(F64,qTy)))))))]), Bop(Add, CC[LW(0,1), Call ("getBase",F64, Var("v",CTy"Capability"))], CC[LW(0,1), Call ("getLength",F64, Var("v",CTy"Capability"))])), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength", CTy"CapExceptionType"), Var("cb",FTy 5)]), Mop(Snd, Mop(Snd, Mop(Snd, Var("s", PTy(FTy 3, PTy(FTy 3,PTy(F64,qTy))))))))), (Bop(Ult,Var("v0",F64), Call ("getBase",F64,Var("v",CTy"Capability"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength", CTy"CapExceptionType"), Var("cb",FTy 5)]), Mop(Snd, Mop(Snd, Mop(Snd, Var("s", PTy(FTy 3, PTy(FTy 3,PTy(F64,qTy)))))))))], Let(TP[Var("v", PTy(FTy 3, PTy(FTy 3, PTy(F64,PTy(bTy,PTy(F64,bTy)))))), Var("s", PTy(FTy 3,PTy(FTy 3,PTy(F64,qTy))))], Let(TP[Var("v0", PTy(FTy 3, PTy(F64,PTy(bTy,PTy(F64,bTy))))), Var("s0", PTy(FTy 3,PTy(FTy 3,PTy(F64,qTy))))], Let(TP[Var("v1",F64), Var("s0", PTy(FTy 3, PTy(FTy 3,PTy(F64,qTy))))], Let(TP[Var("v",F64), Var("s3", PTy(FTy 3,PTy(F64,qTy)))], Let(TP[Var("v",F64), Var("s3",PTy(F64,qTy))], Let(TP[Var("v",F64),qVar"s3"], Let(qVar"s0", Mop(Snd, Mop(Snd, Mop(Snd, Var("s", PTy(FTy 3, PTy(FTy 3, PTy(F64, qTy))))))), TP[Apply (Call ("GPR", ATy(qTy,F64), Var("rs", FTy 5)), qVar"s0"), qVar"s0"]), TP[Var("v",F64), Mop(Fst, Mop(Snd, Mop(Snd, Var("s", PTy(FTy 3, PTy(FTy 3, PTy(F64, qTy))))))), qVar"s3"]), TP[Var("v",F64), Mop(Fst, Mop(Snd, Var("s", PTy(FTy 3, PTy(FTy 3, PTy(F64, qTy)))))), Var("s3",PTy(F64,qTy))]), TP[Var("v",F64), Mop(Fst, Var("s", PTy(FTy 3, PTy(FTy 3, PTy(F64,qTy))))), Var("s3", PTy(FTy 3,PTy(F64,qTy)))]), TP[TP[Mop(Fst, Mop(Snd, Var("s", PTy(FTy 3, PTy(FTy 3, PTy(F64, qTy)))))), Bop(Lsl,Var("v1",F64), Bop(Mul,LN 8, Mop(Cast nTy, Mop(Fst, Var("s0", PTy(FTy 3, PTy(FTy 3, PTy(F64, qTy)))))))), LT,Var("v0",F64),LF], Var("s0", PTy(FTy 3, PTy(FTy 3,PTy(F64,qTy))))]), TP[TP[Mop(Fst, Mop(Snd, Var("s", PTy(FTy 3, PTy(FTy 3, PTy(F64,qTy)))))), Var("v0", PTy(FTy 3, PTy(F64, PTy(bTy,PTy(F64,bTy)))))], Var("s0", PTy(FTy 3,PTy(FTy 3,PTy(F64,qTy))))]), Mop(Snd, Apply (Call ("StoreMemoryCap", ATy(qTy,PTy(bTy,qTy)), Var("v", PTy(FTy 3, PTy(FTy 3, PTy(F64, PTy(bTy, PTy(F64,bTy))))))), Mop(Snd, Mop(Snd, Mop(Snd, Var("s", PTy(FTy 3, PTy(FTy 3, PTy(F64,qTy))))))))))))))))) ; val dfn'CLLC_def = Def ("dfn'CLLC",TP[Var("cd",FTy 5),Var("cb",FTy 5)], Close (qVar"state", Let(Var("v",F64), Bop(Add, Call ("getBase",F64, Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state")), Call ("getOffset",F64, Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply (Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call ("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cd",FTy 5)]),qVar"state")), (Apply (Call ("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Call ("getSealed",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state")), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Bop(Ugt, Bop(Add,Var("v",F64), Mop(Cast F64,Const("CAPBYTEWIDTH",nTy))), Bop(Add, Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")), Call ("getLength",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Bop(Ult,Var("v",F64), Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not,Call("isCapAligned",bTy,Var("v",F64))), Apply (Call ("SignalException",ATy(qTy,qTy), LC("AdEL",CTy"ExceptionType")), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("BadVAddr", TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state"),Var("v",F64)])),qVar"state")))], Let(TP[Var("v",CTy"Capability"),qVar"s"], Apply (Call ("LoadCap",ATy(qTy,PTy(CTy"Capability",qTy)), TP[Var("v",F64),LT]),qVar"state"), ITE(Mop(Not, Apply (Const("exceptionSignalled",ATy(qTy,bTy)), qVar"s")), Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[ITE(Mop(Not, Dest ("Permit_Load_Capability",bTy, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR", ATy(qTy,CTy"Capability"), Var("cb",FTy 5)), qVar"s")))), Call ("setTag",CTy"Capability", TP[Var("v",CTy"Capability"),LF]), Var("v",CTy"Capability")), Var("cd",FTy 5)]),qVar"s"),qVar"s")))))) ; val dfn'CLLx_def = Def ("dfn'CLLx",TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("stt",FTy 3)], Close (qVar"state", Let(Var("t",FTy 2),EX(Var("stt",FTy 3),LN 1,LN 0,FTy 2), Let(Var("v",CTy"Capability"), Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"), Let(Var("addr",F64), Bop(Add,Call("getBase",F64,Var("v",CTy"Capability")), Call("getOffset",F64,Var("v",CTy"Capability"))), Let(Var("size",F64), Mop(Cast F64, Bop(Lsl,LW(1,64),Mop(Cast nTy,Var("t",FTy 2)))), Let(TP[Var("v0",FTy 3),qVar"s"], CS(Var("t",FTy 2), [(LW(0,2), TP[Bop(BXor, EX(Var("addr",F64),LN 2,LN 0,FTy 3), REP(Apply (Const ("BigEndianCPU",ATy(qTy,F1)), qVar"state"),LN 3,FTy 3)), qVar"state"]), (LW(1,2), TP[Bop(BXor, EX(Var("addr",F64),LN 2,LN 0,FTy 3), CC[REP(Apply (Const ("BigEndianCPU", ATy(qTy,F1)), qVar"state"),LN 2,FTy 2), LW(0,1)]),qVar"state"]), (LW(2,2), TP[Bop(BXor, EX(Var("addr",F64),LN 2,LN 0,FTy 3), CC[REP(Apply (Const ("BigEndianCPU", ATy(qTy,F1)), qVar"state"),LN 1,F1), LW(0,2)]),qVar"state"]), (LW(3,2),TP[LW(0,3),qVar"state"])]), ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply (Const ("CP0",ATy(qTy,CTy"CP0")), qVar"s")))), Apply (Const ("SignalCP2UnusableException", ATy(qTy,qTy)),qVar"s")), (Apply (Call ("register_inaccessible", ATy(qTy,bTy),Var("cb",FTy 5)), qVar"s"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg", CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"s")), (Mop(Not, Call ("getTag",bTy, Var("v",CTy"Capability"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag", CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"s")), (Call ("getSealed",bTy, Var("v",CTy"Capability")), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal", CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"s")), (Mop(Not, Dest ("Permit_Load",bTy, Call ("getPerms",CTy"Perms", Var("v",CTy"Capability")))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcPermLoad", CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"s")), (Bop(Ugt, Bop(Add,CC[LW(0,1),Var("addr",F64)], CC[LW(0,1),Var("size",F64)]), Bop(Add, CC[LW(0,1), Call ("getBase",F64, Var("v",CTy"Capability"))], CC[LW(0,1), Call ("getLength",F64, Var("v",CTy"Capability"))])), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength", CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"s")), (Bop(Ult,Var("addr",F64), Call ("getBase",F64, Apply (Call ("CAPR", ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength", CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"s"))], Let(TP[Var("v1",F64),qVar"s"], Apply (Call ("LoadMemoryCap", ATy(qTy,PTy(F64,qTy)), TP[ITE(EQ(Var("t",FTy 2),LW(0,2)), LW(0,3), REP(LW(1,1), Mop(Cast nTy, Var("t",FTy 2)), FTy 3)),LT, Var("addr",F64),LT]),qVar"s"), ITE(Mop(Not, Apply (Const ("exceptionSignalled", ATy(qTy,bTy)),qVar"s")), Let(vVar"final_data", EX(Mop(Cast vTy,Var("v1",F64)), Bop(Sub, Bop(Add, Bop(Mul, Mop(Cast nTy, Var("v0", FTy 3)), LN 8), Bop(Mul, Mop(Cast nTy, Var("size", F64)), LN 8)),LN 1), Bop(Mul, Mop(Cast nTy, Var("v0",FTy 3)),LN 8), vTy), ITE(Mop(Not, Bop(Bit, Var("stt",FTy 3), LN 2)), Apply (Call ("write'GPR", ATy(qTy,qTy), TP[Mop(Cast F64, Call ("ZeroExtendBitString", vTy, TP[LN 64, vVar"final_data"])), Var("rd",FTy 5)]), qVar"s"), Apply (Call ("write'GPR", ATy(qTy,qTy), TP[Mop(Cast F64, Call ("SignExtendBitString", vTy, TP[LN 64, vVar"final_data"])), Var("rd",FTy 5)]), qVar"s"))),qVar"s")))))))))) ; val dfn'CSCC_def = Def ("dfn'CSCC",TP[Var("cs",FTy 5),Var("cb",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Let(Var("v",F64), Bop(Add, Call ("getBase",F64, Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state")), Call ("getOffset",F64, Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply (Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call ("register_inaccessible",ATy(qTy,bTy),Var("cs",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state")), (Apply (Call ("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Call ("getSealed",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state")), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Dest ("Permit_Store_Capability",bTy, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcPermStoreCap",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Bop(And, Mop(Not, Dest ("Permit_Store_Local_Capability",bTy, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")))), Bop(And, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cs",FTy 5)),qVar"state")), Mop(Not, Dest ("Global",bTy, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cs",FTy 5)),qVar"state")))))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcPermStoreLocalCap", CTy"CapExceptionType"),Var("cb",FTy 5)]), qVar"state")), (Bop(Ugt, Bop(Add,CC[LW(0,1),Var("v",F64)], Mop(Cast(FTy 65),Const("CAPBYTEWIDTH",nTy))), Bop(Add, CC[LW(0,1), Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))], CC[LW(0,1), Call ("getLength",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))])), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Bop(Ult,Var("v",F64), Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not,Call("isCapAligned",bTy,Var("v",F64))), Apply (Call ("SignalException",ATy(qTy,qTy), LC("AdES",CTy"ExceptionType")), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("BadVAddr", TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state"),Var("v",F64)])),qVar"state")))], Let(TP[Var("v",F64),qVar"s"], Let(TP[bVar"v",qVar"s"], Apply (Call ("StoreCap",ATy(qTy,PTy(bTy,qTy)), TP[Var("v",F64), Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cs",FTy 5)),qVar"state"),LT]), qVar"state"), TP[ITE(bVar"v",LW(1,64),LW(0,64)),qVar"s"]), ITE(Mop(Not, Apply (Const("exceptionSignalled",ATy(qTy,bTy)), qVar"s")), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Var("v",F64),Var("rd",FTy 5)]),qVar"s"), qVar"s")))))) ; val dfn'CSCx_def = Def ("dfn'CSCx", TP[Var("rs",FTy 5),Var("cb",FTy 5),Var("rd",FTy 5),Var("t",FTy 2)], Close (qVar"state", Let(Var("v",F64), Bop(Add, Call ("getBase",F64, Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state")), Call ("getOffset",F64, Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), Let(Var("access_length",FTy 3), ITE(EQ(Var("t",FTy 2),LW(0,2)),LW(0,3), REP(LW(1,1),Mop(Cast nTy,Var("t",FTy 2)),FTy 3)), ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call ("register_inaccessible",ATy(qTy,bTy), Var("cb",FTy 5)),qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Call ("getSealed",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Dest ("Permit_Store",bTy, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcPermStore",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Bop(Ugt, Bop(Add,CC[LW(0,1),Var("v",F64)], CC[LW(0,1), Mop(Cast F64, Bop(Lsl,LW(1,64), Mop(Cast nTy,Var("t",FTy 2))))]), Bop(Add, CC[LW(0,1), Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))], CC[LW(0,1), Call ("getLength",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))])), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Bop(Ult,Var("v",F64), Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state"))], Let(TP[Var("v",F64),qVar"s"], Let(TP[bVar"v",qVar"s"], Apply (Call ("StoreMemoryCap",ATy(qTy,PTy(bTy,qTy)), TP[Var("access_length",FTy 3), Var("access_length",FTy 3), Apply (Call ("GPR",ATy(qTy,F64), Var("rs",FTy 5)),qVar"state"),LT, Var("v",F64),LT]),qVar"state"), TP[ITE(bVar"v",LW(1,64),LW(0,64)),qVar"s"]), ITE(Mop(Not, Apply (Const("exceptionSignalled",ATy(qTy,bTy)), qVar"s")), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Var("v",F64),Var("rd",FTy 5)]),qVar"s"), qVar"s"))))))) ; val dfn'CMOVN_def = Def ("dfn'CMOVN",TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cd",FTy 5)]),qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, EQ(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), LW(0,64))), Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"),Var("cd",FTy 5)]),qVar"state"))], qVar"state"))) ; val dfn'CMOVZ_def = Def ("dfn'CMOVZ",TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cd",FTy 5)]),qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), LW(0,64)), Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"),Var("cd",FTy 5)]),qVar"state"))], qVar"state"))) ; val dfn'CJR_def = Def ("dfn'CJR",Var("cb",FTy 5), Close (qVar"state", ITE(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)),qVar"state"), Let(TP[bVar"v",qVar"s"], Let(qVar"s0", Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"), TP[Apply (Call ("register_inaccessible",ATy(qTy,bTy), Var("cb",FTy 5)),qVar"s0"),qVar"s0"]), ITB([(bVar"v", Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"s")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"s")), (Call ("getSealed",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s")), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"s")), (Mop(Not, Dest ("Permit_Execute",bTy, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s")))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcPermExe",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"s")), (Bop(Ugt, Bop(Add, CC[LW(0,1), Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s"))], LW(4,65)), CC[LW(0,1), Call ("getLength",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s"))]), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"s")), (Mop(Not, EQ(EX(Bop(Add, Call ("getBase",F64, Apply (Call ("CAPR", ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s")), Call ("getOffset",F64, Apply (Call ("CAPR", ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s"))), LN 1,LN 0,FTy 2),LW(0,2))), Apply (Call ("SignalException",ATy(qTy,qTy), LC("AdEL",CTy"ExceptionType")), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("BadVAddr", TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"s"), Bop(Add, Call ("getBase",F64, Apply (Call ("CAPR", ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s")), Call ("getOffset",F64, Apply (Call ("CAPR", ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s")))])), qVar"s")))], Rupd ("BranchToPCC", TP[qVar"s", Mop(Some, TP[Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s")), Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s")])])))))) ; val dfn'CJALR_def = Def ("dfn'CJALR",TP[Var("cd",FTy 5),Var("cb",FTy 5)], Close (qVar"state", ITE(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)),qVar"state"), Let(TP[bVar"v",qVar"s"], Let(qVar"s0", Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"), TP[Apply (Call ("register_inaccessible",ATy(qTy,bTy), Var("cd",FTy 5)),qVar"s0"),qVar"s0"]), ITB([(bVar"v", Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cd",FTy 5)]),qVar"s")), (Apply (Call ("register_inaccessible",ATy(qTy,bTy), Var("cb",FTy 5)),qVar"s"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"s")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"s")), (Call ("getSealed",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s")), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"s")), (Mop(Not, Dest ("Permit_Execute",bTy, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s")))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcPermExe",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"s")), (Bop(Ugt, Bop(Add, CC[LW(0,1), Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s"))], LW(4,65)), CC[LW(0,1), Call ("getLength",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s"))]), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"s")), (Mop(Not, EQ(EX(Bop(Add, Call ("getBase",F64, Apply (Call ("CAPR", ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s")), Call ("getOffset",F64, Apply (Call ("CAPR", ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s"))), LN 1,LN 0,FTy 2),LW(0,2))), Apply (Call ("SignalException",ATy(qTy,qTy), LC("AdEL",CTy"ExceptionType")), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("BadVAddr", TP[Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"s"), Bop(Add, Call ("getBase",F64, Apply (Call ("CAPR", ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s")), Call ("getOffset",F64, Apply (Call ("CAPR", ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s")))])), qVar"s")))], Let(TP[Var("v",CTy"Capability"),qVar"s"], Let(qVar"s0", Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Call ("setOffset",CTy"Capability", TP[Apply (Const ("PCC", ATy(qTy,CTy"Capability")), qVar"s"), Bop(Add, Apply (Const("PC",ATy(qTy,F64)), qVar"s"),LW(8,64))]), Var("cd",FTy 5)]),qVar"s"), TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cd",FTy 5)),qVar"s0"),qVar"s0"]), Rupd ("BranchToPCC", TP[qVar"s", Mop(Some, TP[Call ("getOffset",F64, Apply (Call ("CAPR", ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s")), Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s")])]))))))) ; val dfn'CSeal_def = Def ("dfn'CSeal",TP[Var("cd",FTy 5),Var("cs",FTy 5),Var("ct",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cd",FTy 5)]),qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cs",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("ct",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("ct",FTy 5)]),qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"),Var("cs",FTy 5)]), qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("ct",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"),Var("ct",FTy 5)]), qVar"state")), (Call ("getSealed",bTy, Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)), qVar"state")), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state")), (Call ("getSealed",bTy, Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("ct",FTy 5)), qVar"state")), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("ct",FTy 5)]),qVar"state")), (Mop(Not, Dest ("Permit_Seal",bTy, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("ct",FTy 5)),qVar"state")))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcPermSeal",CTy"CapExceptionType"), Var("ct",FTy 5)]),qVar"state")), (Bop(Uge, Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("ct",FTy 5)), qVar"state")), Call ("getLength",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("ct",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("ct",FTy 5)]),qVar"state")), (Bop(Uge, Bop(Add, Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("ct",FTy 5)),qVar"state")), Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("ct",FTy 5)),qVar"state"))), Mop(Cast F64,Bop(Exp,LN 2,Const("OTYPEWIDTH",nTy)))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("ct",FTy 5)]),qVar"state")), (Mop(Not, Call ("canRepSeal",bTy, TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cs",FTy 5)),qVar"state"),LT])), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcInexact",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state"))], Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Call ("setType",CTy"Capability", TP[Call ("setSealed",CTy"Capability", TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cs",FTy 5)),qVar"state"),LT]), EX(Bop(Add, Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("ct",FTy 5)),qVar"state")), Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("ct",FTy 5)),qVar"state"))), Bop(Sub,Const("OTYPEWIDTH",nTy),LN 1),LN 0, FTy 24)]),Var("cd",FTy 5)]),qVar"state")))) ; val dfn'CUnseal_def = Def ("dfn'CUnseal",TP[Var("cd",FTy 5),Var("cs",FTy 5),Var("ct",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cd",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cd",FTy 5)]),qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cs",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("ct",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("ct",FTy 5)]),qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"),Var("cs",FTy 5)]), qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("ct",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"),Var("ct",FTy 5)]), qVar"state")), (Mop(Not, Call ("getSealed",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state")), (Call ("getSealed",bTy, Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("ct",FTy 5)), qVar"state")), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("ct",FTy 5)]),qVar"state")), (Mop(Not, EQ(Bop(Add, Call ("getBase",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("ct",FTy 5)),qVar"state")), Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("ct",FTy 5)),qVar"state"))), Mop(Cast F64, Call ("getType",FTy 24, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cs",FTy 5)),qVar"state"))))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcType",CTy"CapExceptionType"), Var("ct",FTy 5)]),qVar"state")), (Mop(Not, Dest ("Permit_Seal",bTy, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("ct",FTy 5)),qVar"state")))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcPermSeal",CTy"CapExceptionType"), Var("ct",FTy 5)]),qVar"state")), (Bop(Uge, Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("ct",FTy 5)), qVar"state")), Call ("getLength",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("ct",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("ct",FTy 5)]),qVar"state"))], Let(Var("s0",CTy"Capability"), Call ("setType",CTy"Capability", TP[Call ("setSealed",CTy"Capability", TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cs",FTy 5)),qVar"state"),LF]), LW(0,24)]), Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Call ("setPerms",CTy"Capability", TP[Var("s0",CTy"Capability"), Rupd ("Global", TP[Call ("getPerms",CTy"Perms", Var("s0",CTy"Capability")), Bop(And, Dest ("Global",bTy, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR", ATy(qTy,CTy"Capability"), Var("cs",FTy 5)), qVar"state"))), Dest ("Global",bTy, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR", ATy(qTy,CTy"Capability"), Var("ct",FTy 5)), qVar"state"))))])]), Var("cd",FTy 5)]),qVar"state"))))) ; val dfn'CCall0_def = Def ("dfn'CCall0",TP[Var("cs",FTy 5),Var("cb",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cs",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"),Var("cs",FTy 5)]), qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"),Var("cb",FTy 5)]), qVar"state")), (Mop(Not, Call ("getSealed",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state")), (Mop(Not, Call ("getSealed",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, EQ(Call ("getType",FTy 24, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cs",FTy 5)),qVar"state")), Call ("getType",FTy 24, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcType",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state")), (Mop(Not, Dest ("Permit_Execute",bTy, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cs",FTy 5)),qVar"state")))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcPermExe",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state")), (Dest ("Permit_Execute",bTy, Call ("getPerms",CTy"Perms", Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcPermExe",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Bop(Uge, Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)), qVar"state")), Call ("getLength",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state"))], Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcCall",CTy"CapExceptionType"),Var("cs",FTy 5)]), qVar"state")))) ; val dfn'CCall1_def = Def ("dfn'CCall1",TP[Var("cs",FTy 5),Var("cb",FTy 5)], Close (qVar"state", ITB([(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply (Const("SignalCP2UnusableException",ATy(qTy,qTy)), qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cs",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state")), (Apply (Call("register_inaccessible",ATy(qTy,bTy),Var("cb",FTy 5)), qVar"state"), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcAccessSysReg",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"),Var("cs",FTy 5)]), qVar"state")), (Mop(Not, Call ("getTag",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcTag",CTy"CapExceptionType"),Var("cb",FTy 5)]), qVar"state")), (Mop(Not, Call ("getSealed",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state")), (Mop(Not, Call ("getSealed",bTy, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcSeal",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, EQ(Call ("getType",FTy 24, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cs",FTy 5)),qVar"state")), Call ("getType",FTy 24, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcType",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state")), (Mop(Not, Dest ("Permit_CCall",bTy, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cs",FTy 5)),qVar"state")))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcPermCCall",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state")), (Mop(Not, Dest ("Permit_CCall",bTy, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"state")))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcPermCCall",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Mop(Not, Dest ("Permit_Execute",bTy, Call ("getPerms",CTy"Perms", Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cs",FTy 5)),qVar"state")))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcPermExe",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state")), (Dest ("Permit_Execute",bTy, Call ("getPerms",CTy"Perms", Apply (Call("CAPR",ATy(qTy,CTy"Capability"),Var("cb",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcPermExe",CTy"CapExceptionType"), Var("cb",FTy 5)]),qVar"state")), (Bop(Uge, Call ("getOffset",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)), qVar"state")), Call ("getLength",F64, Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)), qVar"state"))), Apply (Call ("SignalCapException",ATy(qTy,qTy), TP[LC("capExcLength",CTy"CapExceptionType"), Var("cs",FTy 5)]),qVar"state"))], Let(TP[Var("v",CTy"Capability"),qVar"s"], Let(qVar"s0", Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"), TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"),Var("cs",FTy 5)), qVar"s0"),qVar"s0"]), Let(TP[Var("v",CTy"Capability"),qVar"s"], Let(qVar"s0", Apply (Call ("write'PCC",ATy(qTy,qTy), Call ("setType",CTy"Capability", TP[Call ("setSealed",CTy"Capability", TP[Var("v",CTy"Capability"),LF]), LW(0,24)])),qVar"s"), TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cs",FTy 5)),qVar"s0"),qVar"s0"]), Let(TP[Var("v",CTy"Capability"),qVar"s"], Let(qVar"s0", Rupd ("CCallBranch", TP[Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Call ("getOffset",F64, Var("v",CTy"Capability")))), qVar"s"),LT]), TP[Apply (Call ("CAPR",ATy(qTy,CTy"Capability"), Var("cb",FTy 5)),qVar"s0"),qVar"s0"]), Apply (Call ("write'IDC",ATy(qTy,qTy), Call ("setType",CTy"Capability", TP[Call ("setSealed",CTy"Capability", TP[Var("v",CTy"Capability"),LF]), LW(0,24)])),qVar"s"))))))) ; val dfn'CReturn_def = Def ("dfn'CReturn",qVar"state", ITE(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply(Const("SignalCP2UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("SignalCapException_noReg",ATy(qTy,qTy), LC("capExcRet",CTy"CapExceptionType")),qVar"state"))) ; val dfn'UnknownCapInstruction_def = Def ("dfn'UnknownCapInstruction",qVar"state", ITE(Mop(Not, Dest ("CU2",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Apply(Const("SignalCP2UnusableException",ATy(qTy,qTy)),qVar"state"), Apply (Call ("SignalException",ATy(qTy,qTy),LC("ResI",CTy"ExceptionType")), qVar"state"))) ; val dfn'ADDI_def = Def ("dfn'ADDI",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)], Close (qVar"state", Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", ITE(Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state")), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"ADDI: NotWordValue")),qVar"state")), qVar"state"), TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"), qVar"s0"]), Let(Var("v",FTy 33), Bop(Add,EX(Var("v",F64),LN 32,LN 0,FTy 33), Mop(SE(FTy 33),Var("immediate",F16))), ITE(Mop(Not, EQ(Bop(Bit,Var("v",FTy 33),LN 32), Bop(Bit,Var("v",FTy 33),LN 31))), Apply (Call ("SignalException",ATy(qTy,qTy), LC("Ov",CTy"ExceptionType")),qVar"s"), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(SE F64,EX(Var("v",FTy 33),LN 31,LN 0,F32)), Var("rt",FTy 5)]),qVar"s")))))) ; val dfn'ADDIU_def = Def ("dfn'ADDIU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)], Close (qVar"state", Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", ITE(Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state")), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"ADDIU: NotWordValue")),qVar"state")), qVar"state"), TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"), qVar"s0"]), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(SE F64, Bop(Add,EX(Var("v",F64),LN 31,LN 0,F32), Mop(SE F32,Var("immediate",F16)))), Var("rt",FTy 5)]),qVar"s")))) ; val dfn'DADDI_def = Def ("dfn'DADDI",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)], Close (qVar"state", Let(Var("v",FTy 65), Bop(Add, Mop(SE(FTy 65), Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")), Mop(SE(FTy 65),Var("immediate",F16))), ITE(Mop(Not, EQ(Bop(Bit,Var("v",FTy 65),LN 64), Bop(Bit,Var("v",FTy 65),LN 63))), Apply (Call ("SignalException",ATy(qTy,qTy), LC("Ov",CTy"ExceptionType")),qVar"state"), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[EX(Var("v",FTy 65),LN 63,LN 0,F64),Var("rt",FTy 5)]), qVar"state"))))) ; val dfn'DADDIU_def = Def ("dfn'DADDIU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(Add, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Mop(SE F64,Var("immediate",F16))),Var("rt",FTy 5)]), qVar"state"))) ; val dfn'SLTI_def = Def ("dfn'SLTI",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(Cast F64, Bop(Lt, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state"),Mop(SE F64,Var("immediate",F16)))), Var("rt",FTy 5)]),qVar"state"))) ; val dfn'SLTIU_def = Def ("dfn'SLTIU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(Cast F64, Bop(Ult, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state"),Mop(SE F64,Var("immediate",F16)))), Var("rt",FTy 5)]),qVar"state"))) ; val dfn'ANDI_def = Def ("dfn'ANDI",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(BAnd, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Mop(Cast F64,Var("immediate",F16))),Var("rt",FTy 5)]), qVar"state"))) ; val dfn'ORI_def = Def ("dfn'ORI",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(BOr, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Mop(Cast F64,Var("immediate",F16))),Var("rt",FTy 5)]), qVar"state"))) ; val dfn'XORI_def = Def ("dfn'XORI",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("immediate",F16)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(BXor, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Mop(Cast F64,Var("immediate",F16))),Var("rt",FTy 5)]), qVar"state"))) ; val dfn'LUI_def = Def ("dfn'LUI",TP[Var("rt",FTy 5),Var("immediate",F16)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(SE F64,CC[Var("immediate",F16),LW(0,16)]), Var("rt",FTy 5)]),qVar"state"))) ; val dfn'ADD_def = Def ("dfn'ADD",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", ITE(Bop(Or, Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state")), Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"))), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"ADD: NotWordValue")),qVar"state")), qVar"state"), TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"), qVar"s0"]), Let(Var("v",FTy 33), Bop(Add,EX(Var("v",F64),LN 32,LN 0,FTy 33), EX(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"s"), LN 32,LN 0,FTy 33)), ITE(Mop(Not, EQ(Bop(Bit,Var("v",FTy 33),LN 32), Bop(Bit,Var("v",FTy 33),LN 31))), Apply (Call ("SignalException",ATy(qTy,qTy), LC("Ov",CTy"ExceptionType")),qVar"s"), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(SE F64,EX(Var("v",FTy 33),LN 31,LN 0,F32)), Var("rd",FTy 5)]),qVar"s")))))) ; val dfn'ADDU_def = Def ("dfn'ADDU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", ITE(Bop(Or, Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state")), Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"))), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"ADDU: NotWordValue")),qVar"state")), qVar"state"), TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"), qVar"s0"]), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(SE F64, Bop(Add,EX(Var("v",F64),LN 31,LN 0,F32), EX(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"s"),LN 31,LN 0,F32))), Var("rd",FTy 5)]),qVar"s")))) ; val dfn'SUB_def = Def ("dfn'SUB",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", ITE(Bop(Or, Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state")), Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"))), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"SUB: NotWordValue")),qVar"state")), qVar"state"), TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"), qVar"s0"]), Let(Var("v",FTy 33), Bop(Sub,EX(Var("v",F64),LN 32,LN 0,FTy 33), EX(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"s"), LN 32,LN 0,FTy 33)), ITE(Mop(Not, EQ(Bop(Bit,Var("v",FTy 33),LN 32), Bop(Bit,Var("v",FTy 33),LN 31))), Apply (Call ("SignalException",ATy(qTy,qTy), LC("Ov",CTy"ExceptionType")),qVar"s"), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(SE F64,EX(Var("v",FTy 33),LN 31,LN 0,F32)), Var("rd",FTy 5)]),qVar"s")))))) ; val dfn'SUBU_def = Def ("dfn'SUBU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", ITE(Bop(Or, Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state")), Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"))), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"SUBU: NotWordValue")),qVar"state")), qVar"state"), TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"), qVar"s0"]), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(SE F64, Bop(Sub,EX(Var("v",F64),LN 31,LN 0,F32), EX(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"s"),LN 31,LN 0,F32))), Var("rd",FTy 5)]),qVar"s")))) ; val dfn'DADD_def = Def ("dfn'DADD",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Let(Var("v",FTy 65), Bop(Add, Mop(SE(FTy 65), Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")), Mop(SE(FTy 65), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"))), ITE(Mop(Not, EQ(Bop(Bit,Var("v",FTy 65),LN 64), Bop(Bit,Var("v",FTy 65),LN 63))), Apply (Call ("SignalException",ATy(qTy,qTy), LC("Ov",CTy"ExceptionType")),qVar"state"), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[EX(Var("v",FTy 65),LN 63,LN 0,F64),Var("rd",FTy 5)]), qVar"state"))))) ; val dfn'DADDU_def = Def ("dfn'DADDU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(Add, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")), Var("rd",FTy 5)]),qVar"state"))) ; val dfn'DSUB_def = Def ("dfn'DSUB",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Let(Var("v",FTy 65), Bop(Sub, Mop(SE(FTy 65), Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")), Mop(SE(FTy 65), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"))), ITE(Mop(Not, EQ(Bop(Bit,Var("v",FTy 65),LN 64), Bop(Bit,Var("v",FTy 65),LN 63))), Apply (Call ("SignalException",ATy(qTy,qTy), LC("Ov",CTy"ExceptionType")),qVar"state"), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[EX(Var("v",FTy 65),LN 63,LN 0,F64),Var("rd",FTy 5)]), qVar"state"))))) ; val dfn'DSUBU_def = Def ("dfn'DSUBU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(Sub, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")), Var("rd",FTy 5)]),qVar"state"))) ; val dfn'SLT_def = Def ("dfn'SLT",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(Cast F64, Bop(Lt, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state"), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"))),Var("rd",FTy 5)]),qVar"state"))) ; val dfn'SLTU_def = Def ("dfn'SLTU",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(Cast F64, Bop(Ult, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state"), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"))),Var("rd",FTy 5)]),qVar"state"))) ; val dfn'AND_def = Def ("dfn'AND",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(BAnd, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")), Var("rd",FTy 5)]),qVar"state"))) ; val dfn'OR_def = Def ("dfn'OR",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(BOr, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")), Var("rd",FTy 5)]),qVar"state"))) ; val dfn'XOR_def = Def ("dfn'XOR",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(BXor, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")), Var("rd",FTy 5)]),qVar"state"))) ; val dfn'NOR_def = Def ("dfn'NOR",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(BNot, Bop(BOr, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state"), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"))),Var("rd",FTy 5)]),qVar"state"))) ; val dfn'MOVN_def = Def ("dfn'MOVN",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", ITE(Mop(Not, EQ(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), LW(0,64))), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Var("rd",FTy 5)]),qVar"state"),qVar"state"))) ; val dfn'MOVZ_def = Def ("dfn'MOVZ",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", ITE(EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), LW(0,64)), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Var("rd",FTy 5)]),qVar"state"),qVar"state"))) ; val dfn'MADD_def = Def ("dfn'MADD",TP[Var("rs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", Let(TP[Var("v",F64),qVar"s"], Apply (Const("HI",ATy(qTy,PTy(F64,qTy))), ITE(Bop(Or, Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state")), Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"))), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"MADD: NotWordValue")),qVar"state")), qVar"state")), Let(TP[Var("v",F64),qVar"s"], Let(TP[Var("v",F64),qVar"s"], Let(TP[Var("v0",F64),qVar"s"], Apply(Const("LO",ATy(qTy,PTy(F64,qTy))),qVar"s"), TP[CC[EX(Var("v",F64),LN 31,LN 0,F32), EX(Var("v0",F64),LN 31,LN 0,F32)],qVar"s"]), TP[Bop(Add,Var("v",F64), Bop(Mul, Mop(SE F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rs",FTy 5)),qVar"s"),LN 31, LN 0,F32)), Mop(SE F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s"),LN 31, LN 0,F32)))),qVar"s"]), Apply (Call ("write'LO",ATy(qTy,qTy), Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32))), Apply (Call ("write'HI",ATy(qTy,qTy), Mop(SE F64,EX(Var("v",F64),LN 63,LN 32,F32))), qVar"s")))))) ; val dfn'MADDU_def = Def ("dfn'MADDU",TP[Var("rs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", Let(TP[Var("v",F64),qVar"s"], Apply (Const("HI",ATy(qTy,PTy(F64,qTy))), ITE(Bop(Or, Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state")), Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"))), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"MADDU: NotWordValue")),qVar"state")), qVar"state")), Let(TP[Var("v",F64),qVar"s"], Let(TP[Var("v",F64),qVar"s"], Let(TP[Var("v0",F64),qVar"s"], Apply(Const("LO",ATy(qTy,PTy(F64,qTy))),qVar"s"), TP[CC[EX(Var("v",F64),LN 31,LN 0,F32), EX(Var("v0",F64),LN 31,LN 0,F32)],qVar"s"]), TP[Bop(Add,Var("v",F64), Bop(Mul, Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rs",FTy 5)),qVar"s"),LN 31, LN 0,F32)), Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s"),LN 31, LN 0,F32)))),qVar"s"]), Apply (Call ("write'LO",ATy(qTy,qTy), Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32))), Apply (Call ("write'HI",ATy(qTy,qTy), Mop(SE F64,EX(Var("v",F64),LN 63,LN 32,F32))), qVar"s")))))) ; val dfn'MSUB_def = Def ("dfn'MSUB",TP[Var("rs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", Let(TP[Var("v",F64),qVar"s"], Apply (Const("HI",ATy(qTy,PTy(F64,qTy))), ITE(Bop(Or, Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state")), Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"))), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"MSUB: NotWordValue")),qVar"state")), qVar"state")), Let(TP[Var("v",F64),qVar"s"], Let(TP[Var("v",F64),qVar"s"], Let(TP[Var("v0",F64),qVar"s"], Apply(Const("LO",ATy(qTy,PTy(F64,qTy))),qVar"s"), TP[CC[EX(Var("v",F64),LN 31,LN 0,F32), EX(Var("v0",F64),LN 31,LN 0,F32)],qVar"s"]), TP[Bop(Sub,Var("v",F64), Bop(Mul, Mop(SE F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rs",FTy 5)),qVar"s"),LN 31, LN 0,F32)), Mop(SE F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s"),LN 31, LN 0,F32)))),qVar"s"]), Apply (Call ("write'LO",ATy(qTy,qTy), Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32))), Apply (Call ("write'HI",ATy(qTy,qTy), Mop(SE F64,EX(Var("v",F64),LN 63,LN 32,F32))), qVar"s")))))) ; val dfn'MSUBU_def = Def ("dfn'MSUBU",TP[Var("rs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", Let(TP[Var("v",F64),qVar"s"], Apply (Const("HI",ATy(qTy,PTy(F64,qTy))), ITE(Bop(Or, Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state")), Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"))), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"MSUBU: NotWordValue")),qVar"state")), qVar"state")), Let(TP[Var("v",F64),qVar"s"], Let(TP[Var("v",F64),qVar"s"], Let(TP[Var("v0",F64),qVar"s"], Apply(Const("LO",ATy(qTy,PTy(F64,qTy))),qVar"s"), TP[CC[EX(Var("v",F64),LN 31,LN 0,F32), EX(Var("v0",F64),LN 31,LN 0,F32)],qVar"s"]), TP[Bop(Sub,Var("v",F64), Bop(Mul, Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rs",FTy 5)),qVar"s"),LN 31, LN 0,F32)), Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s"),LN 31, LN 0,F32)))),qVar"s"]), Apply (Call ("write'LO",ATy(qTy,qTy), Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32))), Apply (Call ("write'HI",ATy(qTy,qTy), Mop(SE F64,EX(Var("v",F64),LN 63,LN 32,F32))), qVar"s")))))) ; val dfn'MUL_def = Def ("dfn'MUL",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", ITE(Bop(Or, Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state")), Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"))), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"MUL: NotWordValue")),qVar"state")), qVar"state"), TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"), qVar"s0"]), Apply (Call("write'hi",ATy(qTy,qTy),LO F64), Apply (Call("write'lo",ATy(qTy,qTy),LO F64), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(SE F64, Bop(Mul,EX(Var("v",F64),LN 31,LN 0,F32), EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s"),LN 31, LN 0,F32))),Var("rd",FTy 5)]),qVar"s")))))) ; val dfn'MULT_def = Def ("dfn'MULT",TP[Var("rs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", ITE(Bop(Or, Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state")), Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"))), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"MULT: NotWordValue")),qVar"state")), qVar"state"), TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"), qVar"s0"]), Let(Var("v",F64), Bop(Mul,Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32)), Mop(SE F64, EX(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"s"),LN 31,LN 0,F32))), Apply (Call ("write'HI",ATy(qTy,qTy), Mop(SE F64,EX(Var("v",F64),LN 63,LN 32,F32))), Apply (Call ("write'LO",ATy(qTy,qTy), Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32))), qVar"s")))))) ; val dfn'MULTU_def = Def ("dfn'MULTU",TP[Var("rs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", ITE(Bop(Or, Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state")), Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"))), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"MULTU: NotWordValue")),qVar"state")), qVar"state"), TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"), qVar"s0"]), Let(Var("v",F64), Bop(Mul,Mop(Cast F64,EX(Var("v",F64),LN 31,LN 0,F32)), Mop(Cast F64, EX(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"s"),LN 31,LN 0,F32))), Apply (Call ("write'HI",ATy(qTy,qTy), Mop(SE F64,EX(Var("v",F64),LN 63,LN 32,F32))), Apply (Call ("write'LO",ATy(qTy,qTy), Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32))), qVar"s")))))) ; val dfn'DMULT_def = Def ("dfn'DMULT",TP[Var("rs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", Let(Var("v",FTy 128), Bop(Mul, Mop(SE(FTy 128), Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")), Mop(SE(FTy 128), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"))), Apply (Call ("write'HI",ATy(qTy,qTy), EX(Var("v",FTy 128),LN 127,LN 64,F64)), Apply (Call ("write'LO",ATy(qTy,qTy), EX(Var("v",FTy 128),LN 63,LN 0,F64)),qVar"state"))))) ; val dfn'DMULTU_def = Def ("dfn'DMULTU",TP[Var("rs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", Let(Var("v",FTy 128), Bop(Mul, Mop(Cast(FTy 128), Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")), Mop(Cast(FTy 128), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"))), Apply (Call ("write'HI",ATy(qTy,qTy), EX(Var("v",FTy 128),LN 127,LN 64,F64)), Apply (Call ("write'LO",ATy(qTy,qTy), EX(Var("v",FTy 128),LN 63,LN 0,F64)),qVar"state"))))) ; val dfn'DIV_def = Def ("dfn'DIV",TP[Var("rs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", Let(Var("v",F64), Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Let(Var("v0",F64), Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), Let(qVar"s1", ITE(Bop(Or,Call("NotWordValue",bTy,Var("v",F64)), Call("NotWordValue",bTy,Var("v0",F64))), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"DIV: NotWordValue")),qVar"state")), qVar"state"), ITE(EQ(Var("v0",F64),LW(0,64)), Apply (Call("write'hi",ATy(qTy,qTy),LO F64), Apply (Call("write'lo",ATy(qTy,qTy),LO F64),qVar"s1")), Apply (Call ("write'HI",ATy(qTy,qTy), Mop(SE F64, Bop(Rem,EX(Var("v",F64),LN 31,LN 0,F32), EX(Var("v0",F64),LN 31,LN 0,F32)))), Apply (Call ("write'LO",ATy(qTy,qTy), Mop(SE F64, Bop(Quot, EX(Var("v",F64),LN 31,LN 0,F32), EX(Var("v0",F64),LN 31,LN 0,F32)))), qVar"s1")))))))) ; val dfn'DIVU_def = Def ("dfn'DIVU",TP[Var("rs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", Let(Var("v",F64), Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Let(Var("v0",F64), Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), Let(qVar"s1", ITE(Bop(Or,Call("NotWordValue",bTy,Var("v",F64)), Call("NotWordValue",bTy,Var("v0",F64))), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"DIVU: NotWordValue")),qVar"state")), qVar"state"), ITE(EQ(Var("v0",F64),LW(0,64)), Apply (Call("write'hi",ATy(qTy,qTy),LO F64), Apply (Call("write'lo",ATy(qTy,qTy),LO F64),qVar"s1")), Apply (Call ("write'HI",ATy(qTy,qTy), Mop(SE F64, Bop(Mod,EX(Var("v",F64),LN 31,LN 0,F32), EX(Var("v0",F64),LN 31,LN 0,F32)))), Apply (Call ("write'LO",ATy(qTy,qTy), Mop(SE F64, Bop(Div, EX(Var("v",F64),LN 31,LN 0,F32), EX(Var("v0",F64),LN 31,LN 0,F32)))), qVar"s1")))))))) ; val dfn'DDIV_def = Def ("dfn'DDIV",TP[Var("rs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", Let(Var("v",F64), Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), ITE(EQ(Var("v",F64),LW(0,64)), Apply (Call("write'hi",ATy(qTy,qTy),LO F64), Apply(Call("write'lo",ATy(qTy,qTy),LO F64),qVar"state")), Let(Var("v0",F64), Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Apply (Call ("write'HI",ATy(qTy,qTy), Bop(Rem,Var("v0",F64),Var("v",F64))), Apply (Call ("write'LO",ATy(qTy,qTy), Bop(Quot,Var("v0",F64),Var("v",F64))), qVar"state"))))))) ; val dfn'DDIVU_def = Def ("dfn'DDIVU",TP[Var("rs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", Let(Var("v",F64), Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), ITE(EQ(Var("v",F64),LW(0,64)), Apply (Call("write'hi",ATy(qTy,qTy),LO F64), Apply(Call("write'lo",ATy(qTy,qTy),LO F64),qVar"state")), Let(Var("v0",F64), Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Apply (Call ("write'HI",ATy(qTy,qTy), Bop(Mod,Var("v0",F64),Var("v",F64))), Apply (Call ("write'LO",ATy(qTy,qTy), Bop(Div,Var("v0",F64),Var("v",F64))), qVar"state"))))))) ; val dfn'MFHI_def = Def ("dfn'MFHI",Var("rd",FTy 5), Close (qVar"state", Let(TP[Var("v",F64),qVar"s"], Apply(Const("HI",ATy(qTy,PTy(F64,qTy))),qVar"state"), Apply (Call ("write'GPR",ATy(qTy,qTy),TP[Var("v",F64),Var("rd",FTy 5)]), qVar"s")))) ; val dfn'MFLO_def = Def ("dfn'MFLO",Var("rd",FTy 5), Close (qVar"state", Let(TP[Var("v",F64),qVar"s"], Apply(Const("LO",ATy(qTy,PTy(F64,qTy))),qVar"state"), Apply (Call ("write'GPR",ATy(qTy,qTy),TP[Var("v",F64),Var("rd",FTy 5)]), qVar"s")))) ; val dfn'MTHI_def = Def ("dfn'MTHI",Var("rs",FTy 5), Close (qVar"state", Apply (Call ("write'HI",ATy(qTy,qTy), Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")), qVar"state"))) ; val dfn'MTLO_def = Def ("dfn'MTLO",Var("rs",FTy 5), Close (qVar"state", Apply (Call ("write'LO",ATy(qTy,qTy), Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state")), qVar"state"))) ; val dfn'SLL_def = Def ("dfn'SLL",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(SE F64, Bop(Lsl, EX(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LN 31,LN 0,F32), Mop(Cast nTy,Var("sa",FTy 5)))),Var("rd",FTy 5)]), qVar"state"))) ; val dfn'SRL_def = Def ("dfn'SRL",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)], Close (qVar"state", Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", ITE(Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state")), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"SRL: NotWordValue")),qVar"state")), qVar"state"), TP[Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"s0"), qVar"s0"]), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(SE F64, Bop(Lsr,EX(Var("v",F64),LN 31,LN 0,F32), Mop(Cast nTy,Var("sa",FTy 5)))),Var("rd",FTy 5)]), qVar"s")))) ; val dfn'SRA_def = Def ("dfn'SRA",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)], Close (qVar"state", Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", ITE(Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state")), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"SRA: NotWordValue")),qVar"state")), qVar"state"), TP[Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"s0"), qVar"s0"]), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(SE F64, Bop(Asr,EX(Var("v",F64),LN 31,LN 0,F32), Mop(Cast nTy,Var("sa",FTy 5)))),Var("rd",FTy 5)]), qVar"s")))) ; val dfn'SLLV_def = Def ("dfn'SLLV",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(SE F64, Bop(Lsl, EX(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LN 31,LN 0,F32), Mop(Cast nTy, EX(Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state"),LN 4,LN 0,FTy 5)))), Var("rd",FTy 5)]),qVar"state"))) ; val dfn'SRLV_def = Def ("dfn'SRLV",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", ITE(Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state")), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"SRLV: NotWordValue")),qVar"state")), qVar"state"), TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"), qVar"s0"]), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(SE F64, Bop(Lsr, EX(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"s"),LN 31,LN 0,F32), Mop(Cast nTy,EX(Var("v",F64),LN 4,LN 0,FTy 5)))), Var("rd",FTy 5)]),qVar"s")))) ; val dfn'SRAV_def = Def ("dfn'SRAV",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", ITE(Call ("NotWordValue",bTy, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state")), Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"SRAV: NotWordValue")),qVar"state")), qVar"state"), TP[Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"s0"), qVar"s0"]), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(SE F64, Bop(Asr, EX(Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"s"),LN 31,LN 0,F32), Mop(Cast nTy,EX(Var("v",F64),LN 4,LN 0,FTy 5)))), Var("rd",FTy 5)]),qVar"s")))) ; val dfn'DSLL_def = Def ("dfn'DSLL",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(Lsl, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), Mop(Cast nTy,Var("sa",FTy 5))),Var("rd",FTy 5)]), qVar"state"))) ; val dfn'DSRL_def = Def ("dfn'DSRL",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(Lsr, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), Mop(Cast nTy,Var("sa",FTy 5))),Var("rd",FTy 5)]), qVar"state"))) ; val dfn'DSRA_def = Def ("dfn'DSRA",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(Asr, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), Mop(Cast nTy,Var("sa",FTy 5))),Var("rd",FTy 5)]), qVar"state"))) ; val dfn'DSLLV_def = Def ("dfn'DSLLV",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(Lsl, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), Mop(Cast nTy, EX(Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state"),LN 5,LN 0,FTy 6))), Var("rd",FTy 5)]),qVar"state"))) ; val dfn'DSRLV_def = Def ("dfn'DSRLV",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(Lsr, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), Mop(Cast nTy, EX(Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state"),LN 5,LN 0,FTy 6))), Var("rd",FTy 5)]),qVar"state"))) ; val dfn'DSRAV_def = Def ("dfn'DSRAV",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(Asr, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), Mop(Cast nTy, EX(Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)), qVar"state"),LN 5,LN 0,FTy 6))), Var("rd",FTy 5)]),qVar"state"))) ; val dfn'DSLL32_def = Def ("dfn'DSLL32",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(Lsl, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), Bop(Add,Mop(Cast nTy,Var("sa",FTy 5)),LN 32)), Var("rd",FTy 5)]),qVar"state"))) ; val dfn'DSRL32_def = Def ("dfn'DSRL32",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(Lsr, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), Bop(Add,Mop(Cast nTy,Var("sa",FTy 5)),LN 32)), Var("rd",FTy 5)]),qVar"state"))) ; val dfn'DSRA32_def = Def ("dfn'DSRA32",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sa",FTy 5)], Close (qVar"state", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(Asr, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), Bop(Add,Mop(Cast nTy,Var("sa",FTy 5)),LN 32)), Var("rd",FTy 5)]),qVar"state"))) ; val dfn'TGE_def = Def ("dfn'TGE",TP[Var("rs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", ITE(Bop(Ge, Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")), Apply (Call ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")), qVar"state"),qVar"state"))) ; val dfn'TGEU_def = Def ("dfn'TGEU",TP[Var("rs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", ITE(Bop(Uge, Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")), Apply (Call ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")), qVar"state"),qVar"state"))) ; val dfn'TLT_def = Def ("dfn'TLT",TP[Var("rs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", ITE(Bop(Lt, Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")), Apply (Call ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")), qVar"state"),qVar"state"))) ; val dfn'TLTU_def = Def ("dfn'TLTU",TP[Var("rs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", ITE(Bop(Ult, Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")), Apply (Call ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")), qVar"state"),qVar"state"))) ; val dfn'TEQ_def = Def ("dfn'TEQ",TP[Var("rs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", ITE(EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")), Apply (Call ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")), qVar"state"),qVar"state"))) ; val dfn'TNE_def = Def ("dfn'TNE",TP[Var("rs",FTy 5),Var("rt",FTy 5)], Close (qVar"state", ITE(Mop(Not, EQ(Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"))), Apply (Call ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")), qVar"state"),qVar"state"))) ; val dfn'TGEI_def = Def ("dfn'TGEI",TP[Var("rs",FTy 5),Var("immediate",F16)], Close (qVar"state", ITE(Bop(Ge, Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Mop(SE F64,Var("immediate",F16))), Apply (Call ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")), qVar"state"),qVar"state"))) ; val dfn'TGEIU_def = Def ("dfn'TGEIU",TP[Var("rs",FTy 5),Var("immediate",F16)], Close (qVar"state", ITE(Bop(Uge, Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Mop(SE F64,Var("immediate",F16))), Apply (Call ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")), qVar"state"),qVar"state"))) ; val dfn'TLTI_def = Def ("dfn'TLTI",TP[Var("rs",FTy 5),Var("immediate",F16)], Close (qVar"state", ITE(Bop(Lt, Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Mop(SE F64,Var("immediate",F16))), Apply (Call ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")), qVar"state"),qVar"state"))) ; val dfn'TLTIU_def = Def ("dfn'TLTIU",TP[Var("rs",FTy 5),Var("immediate",F16)], Close (qVar"state", ITE(Bop(Ult, Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Mop(SE F64,Var("immediate",F16))), Apply (Call ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")), qVar"state"),qVar"state"))) ; val dfn'TEQI_def = Def ("dfn'TEQI",TP[Var("rs",FTy 5),Var("immediate",F16)], Close (qVar"state", ITE(EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Mop(SE F64,Var("immediate",F16))), Apply (Call ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")), qVar"state"),qVar"state"))) ; val dfn'TNEI_def = Def ("dfn'TNEI",TP[Var("rs",FTy 5),Var("immediate",F16)], Close (qVar"state", ITE(Mop(Not, EQ(Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Mop(SE F64,Var("immediate",F16)))), Apply (Call ("SignalException",ATy(qTy,qTy),LC("Tr",CTy"ExceptionType")), qVar"state"),qVar"state"))) ; val loadByte_def = Def ("loadByte", TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),bVar"unsigned"], Close (qVar"state", Let(Var("v",F64), Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add,Mop(SE F64,Var("offset",F16)), Apply (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)), qVar"state"))),qVar"state"), Let(TP[Var("v0",F64),qVar"s"], Apply (Call ("LoadMemory",ATy(qTy,PTy(F64,qTy)), TP[Const("BYTE",FTy 3),Const("BYTE",FTy 3),LF, Var("v",F64),LF]),qVar"state"), ITE(Mop(Not, Apply (Const("exceptionSignalled",ATy(qTy,bTy)),qVar"s")), Let(Var("v1",FTy 3), Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3), REP(Apply (Const("BigEndianCPU",ATy(qTy,F1)),qVar"s"), LN 3,FTy 3)), Let(Var("membyte",F8), EX(Var("v0",F64), Bop(Add,LN 7, Bop(Mul,LN 8, Mop(Cast nTy,Var("v1",FTy 3)))), Bop(Mul,LN 8,Mop(Cast nTy,Var("v1",FTy 3))), F8), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[ITE(bVar"unsigned", Mop(Cast F64,Var("membyte",F8)), Mop(SE F64,Var("membyte",F8))), Var("rt",FTy 5)]),qVar"s"))),qVar"s"))))) ; val loadHalf_def = Def ("loadHalf", TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),bVar"unsigned"], Close (qVar"state", Let(Var("v",F64), Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add,Mop(SE F64,Var("offset",F16)), Apply (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)), qVar"state"))),qVar"state"), Let(TP[Var("v0",F64),qVar"s"], Apply (Call ("LoadMemory",ATy(qTy,PTy(F64,qTy)), TP[Const("HALFWORD",FTy 3),Const("HALFWORD",FTy 3),LT, Var("v",F64),LF]),qVar"state"), ITE(Mop(Not, Apply (Const("exceptionSignalled",ATy(qTy,bTy)),qVar"s")), Let(Var("v1",FTy 3), Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3), CC[REP(Apply (Const("BigEndianCPU",ATy(qTy,F1)), qVar"s"),LN 2,FTy 2),LW(0,1)]), Let(Var("memhalf",F16), EX(Var("v0",F64), Bop(Add,LN 15, Bop(Mul,LN 8, Mop(Cast nTy,Var("v1",FTy 3)))), Bop(Mul,LN 8,Mop(Cast nTy,Var("v1",FTy 3))), F16), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[ITE(bVar"unsigned", Mop(Cast F64,Var("memhalf",F16)), Mop(SE F64,Var("memhalf",F16))), Var("rt",FTy 5)]),qVar"s"))),qVar"s"))))) ; val loadWord_def = Def ("loadWord", TP[bVar"link",Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16), bVar"unsigned"], Close (qVar"state", Let(Var("v",F64), Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add,Mop(SE F64,Var("offset",F16)), Apply (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)), qVar"state"))),qVar"state"), Let(TP[Var("v0",F64),qVar"s"], Apply (Call ("LoadMemory",ATy(qTy,PTy(F64,qTy)), TP[Const("WORD",FTy 3),Const("WORD",FTy 3),LT, Var("v",F64),bVar"link"]),qVar"state"), ITE(Mop(Not, Apply (Const("exceptionSignalled",ATy(qTy,bTy)),qVar"s")), Let(Var("v1",FTy 3), Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3), CC[Apply (Const("BigEndianCPU",ATy(qTy,F1)),qVar"s"), LW(0,2)]), Let(Var("memword",F32), EX(Var("v0",F64), Bop(Add,LN 31, Bop(Mul,LN 8, Mop(Cast nTy,Var("v1",FTy 3)))), Bop(Mul,LN 8,Mop(Cast nTy,Var("v1",FTy 3))), F32), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[ITE(bVar"unsigned", Mop(Cast F64,Var("memword",F32)), Mop(SE F64,Var("memword",F32))), Var("rt",FTy 5)]),qVar"s"))),qVar"s"))))) ; val loadDoubleword_def = Def ("loadDoubleword", TP[bVar"link",Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Let(TP[Var("v",F64),qVar"s"], Apply (Call ("LoadMemory",ATy(qTy,PTy(F64,qTy)), TP[Const("DOUBLEWORD",FTy 3),Const("DOUBLEWORD",FTy 3),LT, Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add,Mop(SE F64,Var("offset",F16)), Apply (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)), qVar"state"))),qVar"state"),bVar"link"]), qVar"state"), ITE(Mop(Not, Apply(Const("exceptionSignalled",ATy(qTy,bTy)),qVar"s")), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Var("v",F64),Var("rt",FTy 5)]),qVar"s"),qVar"s")))) ; val dfn'LB_def = Def ("dfn'LB",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Apply (Call ("loadByte",ATy(qTy,qTy), TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LF]), qVar"state"))) ; val dfn'LBU_def = Def ("dfn'LBU",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Apply (Call ("loadByte",ATy(qTy,qTy), TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LT]), qVar"state"))) ; val dfn'LH_def = Def ("dfn'LH",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Apply (Call ("loadHalf",ATy(qTy,qTy), TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LF]), qVar"state"))) ; val dfn'LHU_def = Def ("dfn'LHU",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Apply (Call ("loadHalf",ATy(qTy,qTy), TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LT]), qVar"state"))) ; val dfn'LW_def = Def ("dfn'LW",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Apply (Call ("loadWord",ATy(qTy,qTy), TP[LF,Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LF]), qVar"state"))) ; val dfn'LWU_def = Def ("dfn'LWU",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Apply (Call ("loadWord",ATy(qTy,qTy), TP[LF,Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LT]), qVar"state"))) ; val dfn'LL_def = Def ("dfn'LL",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Apply (Call ("loadWord",ATy(qTy,qTy), TP[LT,Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LF]), qVar"state"))) ; val dfn'LD_def = Def ("dfn'LD",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Apply (Call ("loadDoubleword",ATy(qTy,qTy), TP[LF,Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)]), qVar"state"))) ; val dfn'LLD_def = Def ("dfn'LLD",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Apply (Call ("loadDoubleword",ATy(qTy,qTy), TP[LT,Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)]), qVar"state"))) ; val dfn'LWL_def = Def ("dfn'LWL",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Let(Var("v",F64), Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add,Mop(SE F64,Var("offset",F16)), Apply (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)), qVar"state"))),qVar"state"), Let(Var("v0",FTy 2), Bop(BXor,EX(Var("v",F64),LN 1,LN 0,FTy 2), REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"), LN 2,FTy 2)), Let(TP[Var("v2",F64),qVar"s0"], Apply (Call ("LoadMemory",ATy(qTy,PTy(F64,qTy)), TP[Const("WORD",FTy 3), CC[LW(0,1),Var("v0",FTy 2)],LF,Var("v",F64),LF]), qVar"state"), ITE(Mop(Not, Apply (Const("exceptionSignalled",ATy(qTy,bTy)), qVar"s0")), Let(TP[Var("v",F32),qVar"s"], CS(TP[Bop(BXor,EX(Var("v",F64),LN 2,LN 2,F1), Apply (Const("BigEndianCPU",ATy(qTy,F1)), qVar"state")),Var("v0",FTy 2)], [(TP[LW(0,1),LW(0,2)], TP[CC[EX(Var("v2",F64),LN 7,LN 0,F8), EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s0"), LN 23,LN 0,FTy 24)],qVar"s0"]), (TP[LW(0,1),LW(1,2)], TP[CC[EX(Var("v2",F64),LN 15,LN 0,F16), EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s0"), LN 15,LN 0,F16)],qVar"s0"]), (TP[LW(0,1),LW(2,2)], TP[CC[EX(Var("v2",F64),LN 23,LN 0,FTy 24), EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s0"), LN 7,LN 0,F8)],qVar"s0"]), (TP[LW(0,1),LW(3,2)], TP[EX(Var("v2",F64),LN 31,LN 0,F32), qVar"s0"]), (TP[LW(1,1),LW(0,2)], TP[CC[EX(Var("v2",F64),LN 39,LN 32,F8), EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s0"), LN 23,LN 0,FTy 24)],qVar"s0"]), (TP[LW(1,1),LW(1,2)], TP[CC[EX(Var("v2",F64),LN 47,LN 32,F16), EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s0"), LN 15,LN 0,F16)],qVar"s0"]), (TP[LW(1,1),LW(2,2)], TP[CC[EX(Var("v2",F64),LN 55,LN 32,FTy 24), EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s0"), LN 7,LN 0,F8)],qVar"s0"]), (TP[LW(1,1),LW(3,2)], TP[EX(Var("v2",F64),LN 63,LN 32,F32), qVar"s0"])]), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(SE F64,Var("v",F32)), Var("rt",FTy 5)]),qVar"s")),qVar"s0")))))) ; val dfn'LWR_def = Def ("dfn'LWR",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Let(Var("v",F64), Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add,Mop(SE F64,Var("offset",F16)), Apply (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)), qVar"state"))),qVar"state"), Let(Var("v0",FTy 2), Bop(BXor,EX(Var("v",F64),LN 1,LN 0,FTy 2), REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"), LN 2,FTy 2)), Let(TP[Var("v2",F64),qVar"s0"], Apply (Call ("LoadMemory",ATy(qTy,PTy(F64,qTy)), TP[Const("WORD",FTy 3), Bop(Sub,Const("WORD",FTy 3), CC[LW(0,1),Var("v0",FTy 2)]),LF, Var("v",F64),LF]),qVar"state"), ITE(Mop(Not, Apply (Const("exceptionSignalled",ATy(qTy,bTy)), qVar"s0")), Let(TP[Var("v",F32),qVar"s"], CS(TP[Bop(BXor,EX(Var("v",F64),LN 2,LN 2,F1), Apply (Const("BigEndianCPU",ATy(qTy,F1)), qVar"state")),Var("v0",FTy 2)], [(TP[LW(0,1),LW(0,2)], TP[EX(Var("v2",F64),LN 31,LN 0,F32), qVar"s0"]), (TP[LW(0,1),LW(1,2)], TP[CC[EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s0"), LN 31,LN 24,F8), EX(Var("v2",F64),LN 31,LN 8,FTy 24)], qVar"s0"]), (TP[LW(0,1),LW(2,2)], TP[CC[EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s0"), LN 31,LN 16,F16), EX(Var("v2",F64),LN 31,LN 16,F16)], qVar"s0"]), (TP[LW(0,1),LW(3,2)], TP[CC[EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s0"), LN 31,LN 8,FTy 24), EX(Var("v2",F64),LN 31,LN 24,F8)], qVar"s0"]), (TP[LW(1,1),LW(0,2)], TP[EX(Var("v2",F64),LN 63,LN 32,F32), qVar"s0"]), (TP[LW(1,1),LW(1,2)], TP[CC[EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s0"), LN 31,LN 24,F8), EX(Var("v2",F64),LN 63,LN 40,FTy 24)], qVar"s0"]), (TP[LW(1,1),LW(2,2)], TP[CC[EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s0"), LN 31,LN 16,F16), EX(Var("v2",F64),LN 63,LN 48,F16)], qVar"s0"]), (TP[LW(1,1),LW(3,2)], TP[CC[EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s0"), LN 31,LN 8,FTy 24), EX(Var("v2",F64),LN 63,LN 56,F8)], qVar"s0"])]), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(SE F64,Var("v",F32)), Var("rt",FTy 5)]),qVar"s")),qVar"s0")))))) ; val dfn'LDL_def = Def ("dfn'LDL",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Let(Var("v",F64), Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add,Mop(SE F64,Var("offset",F16)), Apply (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)), qVar"state"))),qVar"state"), Let(Var("v0",FTy 3), Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3), REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"), LN 3,FTy 3)), Let(TP[Var("v1",F64),qVar"s"], Apply (Call ("LoadMemory",ATy(qTy,PTy(F64,qTy)), TP[Const("DOUBLEWORD",FTy 3),Var("v0",FTy 3),LF, Var("v",F64),LF]),qVar"state"), ITE(Mop(Not, Apply (Const("exceptionSignalled",ATy(qTy,bTy)), qVar"s")), Let(TP[Var("v",F64),qVar"s"], CS(Var("v0",FTy 3), [(LW(0,3), TP[CC[EX(Var("v1",F64),LN 7,LN 0,F8), EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s"), LN 55,LN 0,FTy 56)],qVar"s"]), (LW(1,3), TP[CC[EX(Var("v1",F64),LN 15,LN 0,F16), EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s"), LN 47,LN 0,FTy 48)],qVar"s"]), (LW(2,3), TP[CC[EX(Var("v1",F64),LN 23,LN 0,FTy 24), EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s"), LN 39,LN 0,FTy 40)],qVar"s"]), (LW(3,3), TP[CC[EX(Var("v1",F64),LN 31,LN 0,F32), EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s"), LN 31,LN 0,F32)],qVar"s"]), (LW(4,3), TP[CC[EX(Var("v1",F64),LN 39,LN 0,FTy 40), EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s"), LN 23,LN 0,FTy 24)],qVar"s"]), (LW(5,3), TP[CC[EX(Var("v1",F64),LN 47,LN 0,FTy 48), EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s"), LN 15,LN 0,F16)],qVar"s"]), (LW(6,3), TP[CC[EX(Var("v1",F64),LN 55,LN 0,FTy 56), EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s"), LN 7,LN 0,F8)],qVar"s"]), (LW(7,3), TP[EX(Var("v1",F64),LN 63,LN 0,F64),qVar"s"])]), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Var("v",F64),Var("rt",FTy 5)]),qVar"s")), qVar"s")))))) ; val dfn'LDR_def = Def ("dfn'LDR",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Let(Var("v",F64), Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add,Mop(SE F64,Var("offset",F16)), Apply (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)), qVar"state"))),qVar"state"), Let(Var("v0",FTy 3), Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3), REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"), LN 3,FTy 3)), Let(TP[Var("v1",F64),qVar"s"], Apply (Call ("LoadMemory",ATy(qTy,PTy(F64,qTy)), TP[Const("DOUBLEWORD",FTy 3), Bop(Sub,Const("DOUBLEWORD",FTy 3), Var("v0",FTy 3)),LF,Var("v",F64),LF]), qVar"state"), ITE(Mop(Not, Apply (Const("exceptionSignalled",ATy(qTy,bTy)), qVar"s")), Let(TP[Var("v",F64),qVar"s"], CS(Var("v0",FTy 3), [(LW(0,3), TP[EX(Var("v1",F64),LN 63,LN 0,F64),qVar"s"]), (LW(1,3), TP[CC[EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s"), LN 63,LN 56,F8), EX(Var("v1",F64),LN 63,LN 8,FTy 56)], qVar"s"]), (LW(2,3), TP[CC[EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s"), LN 63,LN 48,F16), EX(Var("v1",F64),LN 63,LN 16,FTy 48)], qVar"s"]), (LW(3,3), TP[CC[EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s"), LN 63,LN 40,FTy 24), EX(Var("v1",F64),LN 63,LN 24,FTy 40)], qVar"s"]), (LW(4,3), TP[CC[EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s"), LN 63,LN 32,F32), EX(Var("v1",F64),LN 63,LN 32,F32)], qVar"s"]), (LW(5,3), TP[CC[EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s"), LN 63,LN 24,FTy 40), EX(Var("v1",F64),LN 63,LN 40,FTy 24)], qVar"s"]), (LW(6,3), TP[CC[EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s"), LN 63,LN 16,FTy 48), EX(Var("v1",F64),LN 63,LN 48,F16)], qVar"s"]), (LW(7,3), TP[CC[EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"s"), LN 63,LN 8,FTy 56), EX(Var("v1",F64),LN 63,LN 56,F8)], qVar"s"])]), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Var("v",F64),Var("rt",FTy 5)]),qVar"s")), qVar"s")))))) ; val dfn'SB_def = Def ("dfn'SB",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Let(Var("v",F64), Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add,Mop(SE F64,Var("offset",F16)), Apply (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)), qVar"state"))),qVar"state"), Mop(Snd, Apply (Call ("StoreMemory",ATy(qTy,PTy(bTy,qTy)), TP[Const("BYTE",FTy 3),Const("BYTE",FTy 3),LF, Bop(Lsl, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"), Bop(Mul,LN 8, Mop(Cast nTy, Bop(BXor, EX(Var("v",F64),LN 2,LN 0,FTy 3), REP(Apply (Const ("BigEndianCPU", ATy(qTy,F1)),qVar"state"), LN 3,FTy 3))))),Var("v",F64),LF]), qVar"state"))))) ; val dfn'SH_def = Def ("dfn'SH",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Let(Var("v",F64), Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add,Mop(SE F64,Var("offset",F16)), Apply (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)), qVar"state"))),qVar"state"), Mop(Snd, Apply (Call ("StoreMemory",ATy(qTy,PTy(bTy,qTy)), TP[Const("HALFWORD",FTy 3),Const("HALFWORD",FTy 3),LT, Bop(Lsl, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"), Bop(Mul,LN 8, Mop(Cast nTy, Bop(BXor, EX(Var("v",F64),LN 2,LN 0,FTy 3), CC[REP(Apply (Const ("BigEndianCPU", ATy(qTy,F1)), qVar"state"),LN 2,FTy 2), LW(0,1)])))),Var("v",F64),LF]), qVar"state"))))) ; val storeWord_def = Def ("storeWord", TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),bVar"cond"], Close (qVar"state", Let(Var("v",F64), Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add,Mop(SE F64,Var("offset",F16)), Apply (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)), qVar"state"))),qVar"state"), Apply (Call ("StoreMemory",ATy(qTy,PTy(bTy,qTy)), TP[Const("WORD",FTy 3),Const("WORD",FTy 3),LT, Bop(Lsl, Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"), Bop(Mul,LN 8, Mop(Cast nTy, Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3), CC[Apply (Const("BigEndianCPU",ATy(qTy,F1)), qVar"state"),LW(0,2)])))), Var("v",F64),bVar"cond"]),qVar"state")))) ; val storeDoubleword_def = Def ("storeDoubleword", TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),bVar"cond"], Close (qVar"state", Apply (Call ("StoreMemory",ATy(qTy,PTy(bTy,qTy)), TP[Const("DOUBLEWORD",FTy 3),Const("DOUBLEWORD",FTy 3),LT, Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add,Mop(SE F64,Var("offset",F16)), Apply (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)), qVar"state"))),qVar"state"),bVar"cond"]), qVar"state"))) ; val dfn'SW_def = Def ("dfn'SW",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Mop(Snd, Apply (Call ("storeWord",ATy(qTy,PTy(bTy,qTy)), TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LF]), qVar"state")))) ; val dfn'SD_def = Def ("dfn'SD",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Mop(Snd, Apply (Call ("storeDoubleword",ATy(qTy,PTy(bTy,qTy)), TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LF]), qVar"state")))) ; val dfn'SC_def = Def ("dfn'SC",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Let(TP[bVar"v",qVar"s"], Apply (Call ("storeWord",ATy(qTy,PTy(bTy,qTy)), TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LT]), qVar"state"), ITE(Mop(Not, Apply(Const("exceptionSignalled",ATy(qTy,bTy)),qVar"s")), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[ITE(bVar"v",LW(1,64),LW(0,64)),Var("rt",FTy 5)]), qVar"s"),qVar"s")))) ; val dfn'SCD_def = Def ("dfn'SCD",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Let(TP[bVar"v",qVar"s"], Apply (Call ("storeDoubleword",ATy(qTy,PTy(bTy,qTy)), TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16),LT]), qVar"state"), ITE(Mop(Not, Apply(Const("exceptionSignalled",ATy(qTy,bTy)),qVar"s")), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[ITE(bVar"v",LW(1,64),LW(0,64)),Var("rt",FTy 5)]), qVar"s"),qVar"s")))) ; val dfn'SWL_def = Def ("dfn'SWL",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Let(Var("v",F64), Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add,Mop(SE F64,Var("offset",F16)), Apply (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)), qVar"state"))),qVar"state"), Let(Var("v0",FTy 2), Bop(BXor,EX(Var("v",F64),LN 1,LN 0,FTy 2), REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"), LN 2,FTy 2)), Let(TP[Var("v2",F64),qVar"s0"], CS(Var("v0",FTy 2), [(LW(0,2), TP[Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LN 31,LN 24,F8)), qVar"state"]), (LW(1,2), TP[Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LN 31,LN 16,F16)), qVar"state"]), (LW(2,2), TP[Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LN 31,LN 8,FTy 24)), qVar"state"]), (LW(3,2), TP[Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LN 31,LN 0,F32)), qVar"state"])]), Mop(Snd, Apply (Call ("StoreMemory",ATy(qTy,PTy(bTy,qTy)), TP[Const("WORD",FTy 3), Mop(Cast(FTy 3),Var("v0",FTy 2)),LF, ITE(EQ(Bop(BXor, EX(Var("v",F64),LN 2,LN 2,F1), Apply (Const ("BigEndianCPU",ATy(qTy,F1)), qVar"state")),LW(1,1)), Bop(Lsl,Var("v2",F64),LN 32), Var("v2",F64)), ITE(Apply (Const("BigEndianMem",ATy(qTy,bTy)), qVar"s0"),Var("v",F64), Bop(BAnd,Var("v",F64), Mop(BNot,LW(3,64)))),LF]),qVar"s0"))))))) ; val dfn'SWR_def = Def ("dfn'SWR",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Let(Var("v",F64), Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add,Mop(SE F64,Var("offset",F16)), Apply (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)), qVar"state"))),qVar"state"), Let(Var("v0",FTy 2), Bop(BXor,EX(Var("v",F64),LN 1,LN 0,FTy 2), REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"), LN 2,FTy 2)), Let(TP[Var("v1",F64),qVar"s"], CS(TP[Bop(BXor,EX(Var("v",F64),LN 2,LN 2,F1), Apply (Const("BigEndianCPU",ATy(qTy,F1)), qVar"state")),Var("v0",FTy 2)], [(TP[LW(0,1),LW(0,2)], TP[Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LN 31,LN 0,F32)), qVar"state"]), (TP[LW(0,1),LW(1,2)], TP[Bop(Lsl, Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"state"), LN 23,LN 0,FTy 24)),LN 8),qVar"state"]), (TP[LW(0,1),LW(2,2)], TP[Bop(Lsl, Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"state"), LN 15,LN 0,F16)),LN 16),qVar"state"]), (TP[LW(0,1),LW(3,2)], TP[Bop(Lsl, Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"state"), LN 7,LN 0,F8)),LN 24),qVar"state"]), (TP[LW(1,1),LW(0,2)], TP[Bop(Lsl, Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"state"), LN 31,LN 0,F32)),LN 32),qVar"state"]), (TP[LW(1,1),LW(1,2)], TP[Bop(Lsl, Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"state"), LN 23,LN 0,FTy 24)),LN 40), qVar"state"]), (TP[LW(1,1),LW(2,2)], TP[Bop(Lsl, Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"state"), LN 15,LN 0,F16)),LN 48),qVar"state"]), (TP[LW(1,1),LW(3,2)], TP[Bop(Lsl, Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"state"), LN 7,LN 0,F8)),LN 56),qVar"state"])]), Mop(Snd, Apply (Call ("StoreMemory",ATy(qTy,PTy(bTy,qTy)), TP[Const("WORD",FTy 3), Bop(Sub,Const("WORD",FTy 3), Mop(Cast(FTy 3),Var("v0",FTy 2))),LF, Var("v1",F64), ITE(Apply (Const("BigEndianMem",ATy(qTy,bTy)), qVar"s"), Bop(BAnd,Var("v",F64), Mop(BNot,LW(3,64))),Var("v",F64)), LF]),qVar"s"))))))) ; val dfn'SDL_def = Def ("dfn'SDL",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Let(Var("v",F64), Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add,Mop(SE F64,Var("offset",F16)), Apply (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)), qVar"state"))),qVar"state"), Let(Var("v0",FTy 3), Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3), REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"), LN 3,FTy 3)), Let(TP[Var("v1",F64),qVar"s"], CS(Var("v0",FTy 3), [(LW(0,3), TP[Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LN 63,LN 56,F8)), qVar"state"]), (LW(1,3), TP[Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LN 63,LN 48,F16)), qVar"state"]), (LW(2,3), TP[Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LN 63,LN 40,FTy 24)), qVar"state"]), (LW(3,3), TP[Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LN 63,LN 32,F32)), qVar"state"]), (LW(4,3), TP[Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LN 63,LN 24,FTy 40)), qVar"state"]), (LW(5,3), TP[Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LN 63,LN 16,FTy 48)), qVar"state"]), (LW(6,3), TP[Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),LN 63,LN 8,FTy 56)), qVar"state"]), (LW(7,3), TP[Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),qVar"state"])]), Mop(Snd, Apply (Call ("StoreMemory",ATy(qTy,PTy(bTy,qTy)), TP[Const("DOUBLEWORD",FTy 3),Var("v0",FTy 3), LF,Var("v1",F64), ITE(Apply (Const("BigEndianMem",ATy(qTy,bTy)), qVar"s"),Var("v",F64), Bop(BAnd,Var("v",F64), Mop(BNot,LW(7,64)))),LF]),qVar"s"))))))) ; val dfn'SDR_def = Def ("dfn'SDR",TP[Var("base",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", Let(Var("v",F64), Apply (Call ("getVirtualAddress",ATy(qTy,F64), Bop(Add,Mop(SE F64,Var("offset",F16)), Apply (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)), qVar"state"))),qVar"state"), Let(Var("v0",FTy 3), Bop(BXor,EX(Var("v",F64),LN 2,LN 0,FTy 3), REP(Apply(Const("BigEndianCPU",ATy(qTy,F1)),qVar"state"), LN 3,FTy 3)), Let(TP[Var("v1",F64),qVar"s"], CS(Var("v0",FTy 3), [(LW(0,3), TP[Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)), qVar"state"),qVar"state"]), (LW(1,3), TP[Bop(Lsl, Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"state"), LN 55,LN 0,FTy 56)),LN 8),qVar"state"]), (LW(2,3), TP[Bop(Lsl, Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"state"), LN 47,LN 0,FTy 48)),LN 16), qVar"state"]), (LW(3,3), TP[Bop(Lsl, Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"state"), LN 39,LN 0,FTy 40)),LN 24), qVar"state"]), (LW(4,3), TP[Bop(Lsl, Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"state"), LN 31,LN 0,F32)),LN 32),qVar"state"]), (LW(5,3), TP[Bop(Lsl, Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"state"), LN 23,LN 0,FTy 24)),LN 40), qVar"state"]), (LW(6,3), TP[Bop(Lsl, Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"state"), LN 15,LN 0,F16)),LN 48),qVar"state"]), (LW(7,3), TP[Bop(Lsl, Mop(Cast F64, EX(Apply (Call ("GPR",ATy(qTy,F64), Var("rt",FTy 5)),qVar"state"), LN 7,LN 0,F8)),LN 56),qVar"state"])]), Mop(Snd, Apply (Call ("StoreMemory",ATy(qTy,PTy(bTy,qTy)), TP[Const("DOUBLEWORD",FTy 3), Bop(Sub,Const("DOUBLEWORD",FTy 3), Var("v0",FTy 3)),LF,Var("v1",F64), ITE(Apply (Const("BigEndianMem",ATy(qTy,bTy)), qVar"s"), Bop(BAnd,Var("v",F64), Mop(BNot,LW(7,64))),Var("v",F64)), LF]),qVar"s"))))))) ; val dfn'SYNC_def = Def ("dfn'SYNC",Var("stype",FTy 5),LU) ; val dfn'BREAK_def = Def ("dfn'BREAK",qVar"state", Apply (Call("SignalException",ATy(qTy,qTy),LC("Bp",CTy"ExceptionType")), qVar"state")) ; val dfn'SYSCALL_def = Def ("dfn'SYSCALL",qVar"state", Apply (Call("SignalException",ATy(qTy,qTy),LC("Sys",CTy"ExceptionType")), qVar"state")) ; val dfn'MTC0_def = Def ("dfn'MTC0",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)], Close (qVar"state", ITE(Bop(Or, Dest ("CU0",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state")), Apply (Call ("write'CPR",ATy(qTy,qTy), TP[Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), LN 0,Var("rd",FTy 5),Var("sel",FTy 3)]),qVar"state"), Apply (Call ("SignalException",ATy(qTy,qTy), LC("CpU",CTy"ExceptionType")),qVar"state")))) ; val dfn'DMTC0_def = Def ("dfn'DMTC0",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)], Close (qVar"state", ITE(Bop(Or, Dest ("CU0",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state")), Apply (Call ("write'CPR",ATy(qTy,qTy), TP[Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"), LN 0,Var("rd",FTy 5),Var("sel",FTy 3)]),qVar"state"), Apply (Call ("SignalException",ATy(qTy,qTy), LC("CpU",CTy"ExceptionType")),qVar"state")))) ; val dfn'MFC0_def = Def ("dfn'MFC0",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)], Close (qVar"state", ITE(Bop(Or, Dest ("CU0",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state")), Let(TP[Var("v",F64),qVar"s"], Apply (Call ("CPR",ATy(qTy,PTy(F64,qTy)), TP[LN 0,Var("rd",FTy 5),Var("sel",FTy 3)]),qVar"state"), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(SE F64,EX(Var("v",F64),LN 31,LN 0,F32)), Var("rt",FTy 5)]),qVar"s")), Apply (Call ("SignalException",ATy(qTy,qTy), LC("CpU",CTy"ExceptionType")),qVar"state")))) ; val dfn'DMFC0_def = Def ("dfn'DMFC0",TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)], Close (qVar"state", ITE(Bop(Or, Dest ("CU0",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state")), Let(TP[Var("v",F64),qVar"s"], Apply (Call ("CPR",ATy(qTy,PTy(F64,qTy)), TP[LN 0,Var("rd",FTy 5),Var("sel",FTy 3)]),qVar"state"), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Var("v",F64),Var("rt",FTy 5)]),qVar"s")), Apply (Call ("SignalException",ATy(qTy,qTy), LC("CpU",CTy"ExceptionType")),qVar"state")))) ; val dfn'J_def = Def ("dfn'J",Var("instr_index",FTy 26), Close (qVar"state", Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, CC[EX(Apply(Const("PC",ATy(qTy,F64)),qVar"state"),LN 63, LN 28,FTy 36),Var("instr_index",FTy 26),LW(0,2)])), qVar"state"))) ; val dfn'JAL_def = Def ("dfn'JAL",Var("instr_index",FTy 26), Close (qVar"state", Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(8,64)),LW(31,5)]),qVar"state"), TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, CC[EX(Var("v",F64),LN 63,LN 28,FTy 36), Var("instr_index",FTy 26),LW(0,2)])),qVar"s")))) ; val dfn'JALR_def = Def ("dfn'JALR",TP[Var("rs",FTy 5),Var("rd",FTy 5)], Close (qVar"state", Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"))), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(Add,Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(8,64)),Var("rd",FTy 5)]),qVar"state")))) ; val dfn'JR_def = Def ("dfn'JR",Var("rs",FTy 5), Close (qVar"state", Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"))), qVar"state"))) ; val dfn'BEQ_def = Def ("dfn'BEQ",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", ITE(EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))), qVar"state"), Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state")))) ; val dfn'BNE_def = Def ("dfn'BNE",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", ITE(Mop(Not, EQ(Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"))), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))), qVar"state"), Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state")))) ; val dfn'BLEZ_def = Def ("dfn'BLEZ",TP[Var("rs",FTy 5),Var("offset",F16)], Close (qVar"state", ITE(Bop(Le, Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), LW(0,64)), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))), qVar"state"), Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state")))) ; val dfn'BGTZ_def = Def ("dfn'BGTZ",TP[Var("rs",FTy 5),Var("offset",F16)], Close (qVar"state", ITE(Bop(Gt, Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), LW(0,64)), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))), qVar"state"), Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state")))) ; val dfn'BLTZ_def = Def ("dfn'BLTZ",TP[Var("rs",FTy 5),Var("offset",F16)], Close (qVar"state", ITE(Bop(Lt, Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), LW(0,64)), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))), qVar"state"), Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state")))) ; val dfn'BGEZ_def = Def ("dfn'BGEZ",TP[Var("rs",FTy 5),Var("offset",F16)], Close (qVar"state", ITE(Bop(Ge, Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), LW(0,64)), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))), qVar"state"), Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state")))) ; val dfn'BLTZAL_def = Def ("dfn'BLTZAL",TP[Var("rs",FTy 5),Var("offset",F16)], Close (qVar"state", Let(qVar"s", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(Add,Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(8,64)),LW(31,5)]),qVar"state"), ITE(Bop(Lt, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), LW(0,64)), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"s"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))), qVar"s"),Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"s"))))) ; val dfn'BGEZAL_def = Def ("dfn'BGEZAL",TP[Var("rs",FTy 5),Var("offset",F16)], Close (qVar"state", Let(qVar"s", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(Add,Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(8,64)),LW(31,5)]),qVar"state"), ITE(Bop(Ge, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), LW(0,64)), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"s"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))), qVar"s"),Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"s"))))) ; val dfn'BEQL_def = Def ("dfn'BEQL",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", ITE(EQ(Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Apply(Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state")), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))), qVar"state"), Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"), TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]), Apply (Call ("write'PC",ATy(qTy,qTy),Bop(Add,Var("v",F64),LW(4,64))), qVar"s"))))) ; val dfn'BNEL_def = Def ("dfn'BNEL",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("offset",F16)], Close (qVar"state", ITE(Mop(Not, EQ(Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), Apply (Call("GPR",ATy(qTy,F64),Var("rt",FTy 5)),qVar"state"))), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))), qVar"state"), Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"), TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]), Apply (Call ("write'PC",ATy(qTy,qTy),Bop(Add,Var("v",F64),LW(4,64))), qVar"s"))))) ; val dfn'BLEZL_def = Def ("dfn'BLEZL",TP[Var("rs",FTy 5),Var("offset",F16)], Close (qVar"state", ITE(Bop(Le, Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), LW(0,64)), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))), qVar"state"), Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"), TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]), Apply (Call ("write'PC",ATy(qTy,qTy),Bop(Add,Var("v",F64),LW(4,64))), qVar"s"))))) ; val dfn'BGTZL_def = Def ("dfn'BGTZL",TP[Var("rs",FTy 5),Var("offset",F16)], Close (qVar"state", ITE(Bop(Gt, Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), LW(0,64)), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))), qVar"state"), Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"), TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]), Apply (Call ("write'PC",ATy(qTy,qTy),Bop(Add,Var("v",F64),LW(4,64))), qVar"s"))))) ; val dfn'BLTZL_def = Def ("dfn'BLTZL",TP[Var("rs",FTy 5),Var("offset",F16)], Close (qVar"state", ITE(Bop(Lt, Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), LW(0,64)), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))), qVar"state"), Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"), TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]), Apply (Call ("write'PC",ATy(qTy,qTy),Bop(Add,Var("v",F64),LW(4,64))), qVar"s"))))) ; val dfn'BGEZL_def = Def ("dfn'BGEZL",TP[Var("rs",FTy 5),Var("offset",F16)], Close (qVar"state", ITE(Bop(Ge, Apply(Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), LW(0,64)), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))), qVar"state"), Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"state"), TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]), Apply (Call ("write'PC",ATy(qTy,qTy),Bop(Add,Var("v",F64),LW(4,64))), qVar"s"))))) ; val dfn'BLTZALL_def = Def ("dfn'BLTZALL",TP[Var("rs",FTy 5),Var("offset",F16)], Close (qVar"state", Let(qVar"s", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(Add,Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(8,64)),LW(31,5)]),qVar"state"), ITE(Bop(Lt, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), LW(0,64)), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"s"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))), qVar"s"), Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"s"), TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]), Apply (Call ("write'PC",ATy(qTy,qTy), Bop(Add,Var("v",F64),LW(4,64))),qVar"s")))))) ; val dfn'BGEZALL_def = Def ("dfn'BGEZALL",TP[Var("rs",FTy 5),Var("offset",F16)], Close (qVar"state", Let(qVar"s", Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Bop(Add,Apply(Const("PC",ATy(qTy,F64)),qVar"state"), LW(8,64)),LW(31,5)]),qVar"state"), ITE(Bop(Ge, Apply (Call("GPR",ATy(qTy,F64),Var("rs",FTy 5)),qVar"state"), LW(0,64)), Apply (Call ("write'BranchTo",ATy(qTy,qTy), Mop(Some, Bop(Add, Bop(Add, Apply(Const("PC",ATy(qTy,F64)),qVar"s"), LW(4,64)), Bop(Lsl,Mop(SE F64,Var("offset",F16)),LN 2)))), qVar"s"), Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", Apply(Const("CheckBranch",ATy(qTy,qTy)),qVar"s"), TP[Apply(Const("PC",ATy(qTy,F64)),qVar"s0"),qVar"s0"]), Apply (Call ("write'PC",ATy(qTy,qTy), Bop(Add,Var("v",F64),LW(4,64))),qVar"s")))))) ; val dfn'RDHWR_def = Def ("dfn'RDHWR",TP[Var("rt",FTy 5),Var("rd",FTy 5)], Close (qVar"state", ITE(Bop(Or, Dest ("CU0",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), Bop(Or,Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state"), Bop(Bit, Call ("reg'HWREna",F32, Dest ("HWREna",CTy"HWREna", Apply (Const("CP0",ATy(qTy,CTy"CP0")),qVar"state"))), Mop(Cast nTy,Var("rd",FTy 5))))), CS(Var("rd",FTy 5), [(LW(0,5), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(Cast F64,Dest("procID",F8,qVar"state")), Var("rt",FTy 5)]),qVar"state")), (LW(2,5), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(SE F64, Dest ("Count",F32, Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"state"))),Var("rt",FTy 5)]), qVar"state")), (LW(3,5), Apply (Call ("write'GPR",ATy(qTy,qTy),TP[LW(1,64),Var("rt",FTy 5)]), qVar"state")), (LW(26,5),Rupd("done",TP[qVar"state",LT])), (LW(27,5), Apply(Const("resetStats",ATy(qTy,qTy)),qVar"state")), (LW(28,5),qVar"state"), (LW(29,5), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Dest ("UsrLocal",F64, Apply (Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")), Var("rt",FTy 5)]),qVar"state")), (LW(30,5), Apply (Call ("write'GPR",ATy(qTy,qTy), TP[Mop(Cast F64, Bop(Sub,Dest("totalCore",nTy,qVar"state"),LN 1)), Var("rt",FTy 5)]),qVar"state")), (AVar(FTy 5), Apply (Call ("SignalException",ATy(qTy,qTy), LC("ResI",CTy"ExceptionType")),qVar"state"))]), Apply (Call ("SignalException",ATy(qTy,qTy), LC("ResI",CTy"ExceptionType")),qVar"state")))) ; val dfn'CACHE_def = Def ("dfn'CACHE",TP[Var("base",FTy 5),Var("opn",FTy 5),Var("offset",F16)], Close (qVar"state", ITE(Bop(And, Mop(Not, Dest ("CU0",bTy, Dest ("Status",CTy"StatusRegister", Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"state")))), Mop(Not,Apply(Const("KernelMode",ATy(qTy,bTy)),qVar"state"))), Apply (Call ("SignalException",ATy(qTy,qTy), LC("CpU",CTy"ExceptionType")),qVar"state"), Mop(Snd, Apply (Call ("AddressTranslation", ATy(qTy,PTy(PTy(FTy 40,PTy(FTy 3,PTy(bTy,bTy))),qTy)), TP[Bop(Add, Apply (Call("GPR",ATy(qTy,F64),Var("base",FTy 5)), qVar"state"),Mop(SE F64,Var("offset",F16))), LC("LOAD",CTy"AccessType")]),qVar"state"))))) ; val dfn'WAIT_def = Def0 ("dfn'WAIT",LU) ; val dfn'ReservedInstruction_def = Def ("dfn'ReservedInstruction",qVar"state", Apply (Call("SignalException",ATy(qTy,qTy),LC("ResI",CTy"ExceptionType")), qVar"state")) ; val dfn'Unpredictable_def = Def ("dfn'Unpredictable",qVar"state", Mop(Snd, Apply (Call ("raise'exception",ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE",CTy"exception", LS"Unpredictable instruction")),qVar"state"))) ; val Run_def = Def ("Run",Var("v0",CTy"instruction"), Close (qVar"state", CS(Var("v0",CTy"instruction"), [(Const("BREAK",CTy"instruction"), Apply(Const("dfn'BREAK",ATy(qTy,qTy)),qVar"state")), (Const("ERET",CTy"instruction"), Apply(Const("dfn'ERET",ATy(qTy,qTy)),qVar"state")), (Const("ReservedInstruction",CTy"instruction"), Apply (Const("dfn'ReservedInstruction",ATy(qTy,qTy)),qVar"state")), (Const("SYSCALL",CTy"instruction"), Apply(Const("dfn'SYSCALL",ATy(qTy,qTy)),qVar"state")), (Const("TLBP",CTy"instruction"), Apply(Const("dfn'TLBP",ATy(qTy,qTy)),qVar"state")), (Const("TLBR",CTy"instruction"), Apply(Const("dfn'TLBR",ATy(qTy,qTy)),qVar"state")), (Const("TLBWI",CTy"instruction"), Apply(Const("dfn'TLBWI",ATy(qTy,qTy)),qVar"state")), (Const("TLBWR",CTy"instruction"), Apply(Const("dfn'TLBWR",ATy(qTy,qTy)),qVar"state")), (Const("Unpredictable",CTy"instruction"), Apply(Const("dfn'Unpredictable",ATy(qTy,qTy)),qVar"state")), (Const("WAIT",CTy"instruction"),qVar"state"), (Call ("CACHE",CTy"instruction", Var("v261",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'CACHE",ATy(qTy,qTy), Var("v261",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call("RDHWR",CTy"instruction",Var("v262",PTy(FTy 5,FTy 5))), Apply (Call("dfn'RDHWR",ATy(qTy,qTy),Var("v262",PTy(FTy 5,FTy 5))), qVar"state")), (Call("SYNC",CTy"instruction",Var("v263",FTy 5)),qVar"state"), (Call("ArithI",CTy"instruction",Var("v1",CTy"ArithI")), CS(Var("v1",CTy"ArithI"), [(Call ("ADDI",CTy"ArithI",Var("v2",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'ADDI",ATy(qTy,qTy), Var("v2",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("ADDIU",CTy"ArithI",Var("v3",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'ADDIU",ATy(qTy,qTy), Var("v3",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("ANDI",CTy"ArithI",Var("v4",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'ANDI",ATy(qTy,qTy), Var("v4",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("DADDI",CTy"ArithI",Var("v5",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'DADDI",ATy(qTy,qTy), Var("v5",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("DADDIU",CTy"ArithI", Var("v6",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'DADDIU",ATy(qTy,qTy), Var("v6",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call("LUI",CTy"ArithI",Var("v7",PTy(FTy 5,F16))), Apply (Call("dfn'LUI",ATy(qTy,qTy),Var("v7",PTy(FTy 5,F16))), qVar"state")), (Call ("ORI",CTy"ArithI",Var("v8",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'ORI",ATy(qTy,qTy), Var("v8",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("SLTI",CTy"ArithI",Var("v9",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'SLTI",ATy(qTy,qTy), Var("v9",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("SLTIU",CTy"ArithI", Var("v10",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'SLTIU",ATy(qTy,qTy), Var("v10",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("XORI",CTy"ArithI",Var("v11",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'XORI",ATy(qTy,qTy), Var("v11",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state"))])), (Call("ArithR",CTy"instruction",Var("v12",CTy"ArithR")), CS(Var("v12",CTy"ArithR"), [(Call ("ADD",CTy"ArithR", Var("v13",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'ADD",ATy(qTy,qTy), Var("v13",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("ADDU",CTy"ArithR", Var("v14",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'ADDU",ATy(qTy,qTy), Var("v14",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("AND",CTy"ArithR", Var("v15",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'AND",ATy(qTy,qTy), Var("v15",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("DADD",CTy"ArithR", Var("v16",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'DADD",ATy(qTy,qTy), Var("v16",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("DADDU",CTy"ArithR", Var("v17",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'DADDU",ATy(qTy,qTy), Var("v17",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("DSUB",CTy"ArithR", Var("v18",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'DSUB",ATy(qTy,qTy), Var("v18",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("DSUBU",CTy"ArithR", Var("v19",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'DSUBU",ATy(qTy,qTy), Var("v19",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("MOVN",CTy"ArithR", Var("v20",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'MOVN",ATy(qTy,qTy), Var("v20",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("MOVZ",CTy"ArithR", Var("v21",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'MOVZ",ATy(qTy,qTy), Var("v21",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("NOR",CTy"ArithR", Var("v22",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'NOR",ATy(qTy,qTy), Var("v22",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("OR",CTy"ArithR",Var("v23",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'OR",ATy(qTy,qTy), Var("v23",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("SLT",CTy"ArithR", Var("v24",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'SLT",ATy(qTy,qTy), Var("v24",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("SLTU",CTy"ArithR", Var("v25",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'SLTU",ATy(qTy,qTy), Var("v25",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("SUB",CTy"ArithR", Var("v26",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'SUB",ATy(qTy,qTy), Var("v26",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("SUBU",CTy"ArithR", Var("v27",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'SUBU",ATy(qTy,qTy), Var("v27",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("XOR",CTy"ArithR", Var("v28",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'XOR",ATy(qTy,qTy), Var("v28",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state"))])), (Call("Branch",CTy"instruction",Var("v29",CTy"Branch")), CS(Var("v29",CTy"Branch"), [(Call ("BEQ",CTy"Branch",Var("v30",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'BEQ",ATy(qTy,qTy), Var("v30",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("BEQL",CTy"Branch",Var("v31",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'BEQL",ATy(qTy,qTy), Var("v31",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call("BGEZ",CTy"Branch",Var("v32",PTy(FTy 5,F16))), Apply (Call("dfn'BGEZ",ATy(qTy,qTy),Var("v32",PTy(FTy 5,F16))), qVar"state")), (Call("BGEZAL",CTy"Branch",Var("v33",PTy(FTy 5,F16))), Apply (Call ("dfn'BGEZAL",ATy(qTy,qTy),Var("v33",PTy(FTy 5,F16))), qVar"state")), (Call("BGEZALL",CTy"Branch",Var("v34",PTy(FTy 5,F16))), Apply (Call ("dfn'BGEZALL",ATy(qTy,qTy),Var("v34",PTy(FTy 5,F16))), qVar"state")), (Call("BGEZL",CTy"Branch",Var("v35",PTy(FTy 5,F16))), Apply (Call ("dfn'BGEZL",ATy(qTy,qTy),Var("v35",PTy(FTy 5,F16))), qVar"state")), (Call("BGTZ",CTy"Branch",Var("v36",PTy(FTy 5,F16))), Apply (Call("dfn'BGTZ",ATy(qTy,qTy),Var("v36",PTy(FTy 5,F16))), qVar"state")), (Call("BGTZL",CTy"Branch",Var("v37",PTy(FTy 5,F16))), Apply (Call ("dfn'BGTZL",ATy(qTy,qTy),Var("v37",PTy(FTy 5,F16))), qVar"state")), (Call("BLEZ",CTy"Branch",Var("v38",PTy(FTy 5,F16))), Apply (Call("dfn'BLEZ",ATy(qTy,qTy),Var("v38",PTy(FTy 5,F16))), qVar"state")), (Call("BLEZL",CTy"Branch",Var("v39",PTy(FTy 5,F16))), Apply (Call ("dfn'BLEZL",ATy(qTy,qTy),Var("v39",PTy(FTy 5,F16))), qVar"state")), (Call("BLTZ",CTy"Branch",Var("v40",PTy(FTy 5,F16))), Apply (Call("dfn'BLTZ",ATy(qTy,qTy),Var("v40",PTy(FTy 5,F16))), qVar"state")), (Call("BLTZAL",CTy"Branch",Var("v41",PTy(FTy 5,F16))), Apply (Call ("dfn'BLTZAL",ATy(qTy,qTy),Var("v41",PTy(FTy 5,F16))), qVar"state")), (Call("BLTZALL",CTy"Branch",Var("v42",PTy(FTy 5,F16))), Apply (Call ("dfn'BLTZALL",ATy(qTy,qTy),Var("v42",PTy(FTy 5,F16))), qVar"state")), (Call("BLTZL",CTy"Branch",Var("v43",PTy(FTy 5,F16))), Apply (Call ("dfn'BLTZL",ATy(qTy,qTy),Var("v43",PTy(FTy 5,F16))), qVar"state")), (Call ("BNE",CTy"Branch",Var("v44",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'BNE",ATy(qTy,qTy), Var("v44",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("BNEL",CTy"Branch",Var("v45",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'BNEL",ATy(qTy,qTy), Var("v45",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call("J",CTy"Branch",Var("v46",FTy 26)), Apply (Call("dfn'J",ATy(qTy,qTy),Var("v46",FTy 26)), qVar"state")), (Call("JAL",CTy"Branch",Var("v47",FTy 26)), Apply (Call("dfn'JAL",ATy(qTy,qTy),Var("v47",FTy 26)), qVar"state")), (Call("JALR",CTy"Branch",Var("v48",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'JALR",ATy(qTy,qTy),Var("v48",PTy(FTy 5,FTy 5))), qVar"state")), (Call("JR",CTy"Branch",Var("v49",FTy 5)), Apply (Call("dfn'JR",ATy(qTy,qTy),Var("v49",FTy 5)), qVar"state"))])), (Call("COP1",CTy"instruction",Var("v50",CTy"COP1")), CS(Var("v50",CTy"COP1"), [(Const("UnknownFPInstruction",CTy"COP1"), Apply (Const("dfn'UnknownFPInstruction",ATy(qTy,qTy)), qVar"state")), (Call("ABS_D",CTy"COP1",Var("v51",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'ABS_D",ATy(qTy,qTy),Var("v51",PTy(FTy 5,FTy 5))), qVar"state")), (Call("ABS_S",CTy"COP1",Var("v52",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'ABS_S",ATy(qTy,qTy),Var("v52",PTy(FTy 5,FTy 5))), qVar"state")), (Call ("ADD_D",CTy"COP1", Var("v53",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'ADD_D",ATy(qTy,qTy), Var("v53",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("ADD_S",CTy"COP1", Var("v54",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'ADD_S",ATy(qTy,qTy), Var("v54",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call("BC1F",CTy"COP1",Var("v55",PTy(F16,FTy 3))), Apply (Call("dfn'BC1F",ATy(qTy,qTy),Var("v55",PTy(F16,FTy 3))), qVar"state")), (Call("BC1FL",CTy"COP1",Var("v56",PTy(F16,FTy 3))), Apply (Call ("dfn'BC1FL",ATy(qTy,qTy),Var("v56",PTy(F16,FTy 3))), qVar"state")), (Call("BC1T",CTy"COP1",Var("v57",PTy(F16,FTy 3))), Apply (Call("dfn'BC1T",ATy(qTy,qTy),Var("v57",PTy(F16,FTy 3))), qVar"state")), (Call("BC1TL",CTy"COP1",Var("v58",PTy(F16,FTy 3))), Apply (Call ("dfn'BC1TL",ATy(qTy,qTy),Var("v58",PTy(F16,FTy 3))), qVar"state")), (Call("CEIL_L_D",CTy"COP1",Var("v59",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CEIL_L_D",ATy(qTy,qTy), Var("v59",PTy(FTy 5,FTy 5))),qVar"state")), (Call("CEIL_L_S",CTy"COP1",Var("v60",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CEIL_L_S",ATy(qTy,qTy), Var("v60",PTy(FTy 5,FTy 5))),qVar"state")), (Call("CEIL_W_D",CTy"COP1",Var("v61",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CEIL_W_D",ATy(qTy,qTy), Var("v61",PTy(FTy 5,FTy 5))),qVar"state")), (Call("CEIL_W_S",CTy"COP1",Var("v62",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CEIL_W_S",ATy(qTy,qTy), Var("v62",PTy(FTy 5,FTy 5))),qVar"state")), (Call("CFC1",CTy"COP1",Var("v63",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CFC1",ATy(qTy,qTy),Var("v63",PTy(FTy 5,FTy 5))), qVar"state")), (Call("CTC1",CTy"COP1",Var("v64",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CTC1",ATy(qTy,qTy),Var("v64",PTy(FTy 5,FTy 5))), qVar"state")), (Call("CVT_D_L",CTy"COP1",Var("v65",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CVT_D_L",ATy(qTy,qTy), Var("v65",PTy(FTy 5,FTy 5))),qVar"state")), (Call("CVT_D_S",CTy"COP1",Var("v66",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CVT_D_S",ATy(qTy,qTy), Var("v66",PTy(FTy 5,FTy 5))),qVar"state")), (Call("CVT_D_W",CTy"COP1",Var("v67",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CVT_D_W",ATy(qTy,qTy), Var("v67",PTy(FTy 5,FTy 5))),qVar"state")), (Call("CVT_L_D",CTy"COP1",Var("v68",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CVT_L_D",ATy(qTy,qTy), Var("v68",PTy(FTy 5,FTy 5))),qVar"state")), (Call("CVT_L_S",CTy"COP1",Var("v69",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CVT_L_S",ATy(qTy,qTy), Var("v69",PTy(FTy 5,FTy 5))),qVar"state")), (Call("CVT_S_D",CTy"COP1",Var("v70",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CVT_S_D",ATy(qTy,qTy), Var("v70",PTy(FTy 5,FTy 5))),qVar"state")), (Call("CVT_S_L",CTy"COP1",Var("v71",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CVT_S_L",ATy(qTy,qTy), Var("v71",PTy(FTy 5,FTy 5))),qVar"state")), (Call("CVT_S_W",CTy"COP1",Var("v72",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CVT_S_W",ATy(qTy,qTy), Var("v72",PTy(FTy 5,FTy 5))),qVar"state")), (Call("CVT_W_D",CTy"COP1",Var("v73",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CVT_W_D",ATy(qTy,qTy), Var("v73",PTy(FTy 5,FTy 5))),qVar"state")), (Call("CVT_W_S",CTy"COP1",Var("v74",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CVT_W_S",ATy(qTy,qTy), Var("v74",PTy(FTy 5,FTy 5))),qVar"state")), (Call ("C_cond_D",CTy"COP1", Var("v75",PTy(FTy 5,PTy(FTy 5,PTy(FTy 3,FTy 3))))), Apply (Call ("dfn'C_cond_D",ATy(qTy,qTy), Var("v75",PTy(FTy 5,PTy(FTy 5,PTy(FTy 3,FTy 3))))), qVar"state")), (Call ("C_cond_S",CTy"COP1", Var("v76",PTy(FTy 5,PTy(FTy 5,PTy(FTy 3,FTy 3))))), Apply (Call ("dfn'C_cond_S",ATy(qTy,qTy), Var("v76",PTy(FTy 5,PTy(FTy 5,PTy(FTy 3,FTy 3))))), qVar"state")), (Call ("DIV_D",CTy"COP1", Var("v77",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'DIV_D",ATy(qTy,qTy), Var("v77",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("DIV_S",CTy"COP1", Var("v78",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'DIV_S",ATy(qTy,qTy), Var("v78",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call("DMFC1",CTy"COP1",Var("v79",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'DMFC1",ATy(qTy,qTy),Var("v79",PTy(FTy 5,FTy 5))), qVar"state")), (Call("DMTC1",CTy"COP1",Var("v80",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'DMTC1",ATy(qTy,qTy),Var("v80",PTy(FTy 5,FTy 5))), qVar"state")), (Call("FLOOR_L_D",CTy"COP1",Var("v81",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'FLOOR_L_D",ATy(qTy,qTy), Var("v81",PTy(FTy 5,FTy 5))),qVar"state")), (Call("FLOOR_L_S",CTy"COP1",Var("v82",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'FLOOR_L_S",ATy(qTy,qTy), Var("v82",PTy(FTy 5,FTy 5))),qVar"state")), (Call("FLOOR_W_D",CTy"COP1",Var("v83",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'FLOOR_W_D",ATy(qTy,qTy), Var("v83",PTy(FTy 5,FTy 5))),qVar"state")), (Call("FLOOR_W_S",CTy"COP1",Var("v84",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'FLOOR_W_S",ATy(qTy,qTy), Var("v84",PTy(FTy 5,FTy 5))),qVar"state")), (Call ("LDC1",CTy"COP1",Var("v85",PTy(FTy 5,PTy(F16,FTy 5)))), Apply (Call ("dfn'LDC1",ATy(qTy,qTy), Var("v85",PTy(FTy 5,PTy(F16,FTy 5)))),qVar"state")), (Call ("LDXC1",CTy"COP1", Var("v86",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'LDXC1",ATy(qTy,qTy), Var("v86",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("LWC1",CTy"COP1",Var("v87",PTy(FTy 5,PTy(F16,FTy 5)))), Apply (Call ("dfn'LWC1",ATy(qTy,qTy), Var("v87",PTy(FTy 5,PTy(F16,FTy 5)))),qVar"state")), (Call ("LWXC1",CTy"COP1", Var("v88",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'LWXC1",ATy(qTy,qTy), Var("v88",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("MADD_D",CTy"COP1", Var("v89",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))), Apply (Call ("dfn'MADD_D",ATy(qTy,qTy), Var("v89",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))), qVar"state")), (Call ("MADD_S",CTy"COP1", Var("v90",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))), Apply (Call ("dfn'MADD_S",ATy(qTy,qTy), Var("v90",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))), qVar"state")), (Call("MFC1",CTy"COP1",Var("v91",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'MFC1",ATy(qTy,qTy),Var("v91",PTy(FTy 5,FTy 5))), qVar"state")), (Call ("MOVF",CTy"COP1",Var("v92",PTy(FTy 5,PTy(FTy 5,FTy 3)))), Apply (Call ("dfn'MOVF",ATy(qTy,qTy), Var("v92",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")), (Call ("MOVF_D",CTy"COP1", Var("v93",PTy(FTy 5,PTy(FTy 5,FTy 3)))), Apply (Call ("dfn'MOVF_D",ATy(qTy,qTy), Var("v93",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")), (Call ("MOVF_S",CTy"COP1", Var("v94",PTy(FTy 5,PTy(FTy 5,FTy 3)))), Apply (Call ("dfn'MOVF_S",ATy(qTy,qTy), Var("v94",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")), (Call ("MOVN_D",CTy"COP1", Var("v95",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'MOVN_D",ATy(qTy,qTy), Var("v95",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("MOVN_S",CTy"COP1", Var("v96",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'MOVN_S",ATy(qTy,qTy), Var("v96",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("MOVT",CTy"COP1",Var("v97",PTy(FTy 5,PTy(FTy 5,FTy 3)))), Apply (Call ("dfn'MOVT",ATy(qTy,qTy), Var("v97",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")), (Call ("MOVT_D",CTy"COP1", Var("v98",PTy(FTy 5,PTy(FTy 5,FTy 3)))), Apply (Call ("dfn'MOVT_D",ATy(qTy,qTy), Var("v98",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")), (Call ("MOVT_S",CTy"COP1", Var("v99",PTy(FTy 5,PTy(FTy 5,FTy 3)))), Apply (Call ("dfn'MOVT_S",ATy(qTy,qTy), Var("v99",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")), (Call ("MOVZ_D",CTy"COP1", Var("v100",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'MOVZ_D",ATy(qTy,qTy), Var("v100",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("MOVZ_S",CTy"COP1", Var("v101",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'MOVZ_S",ATy(qTy,qTy), Var("v101",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call("MOV_D",CTy"COP1",Var("v102",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'MOV_D",ATy(qTy,qTy), Var("v102",PTy(FTy 5,FTy 5))),qVar"state")), (Call("MOV_S",CTy"COP1",Var("v103",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'MOV_S",ATy(qTy,qTy), Var("v103",PTy(FTy 5,FTy 5))),qVar"state")), (Call ("MSUB_D",CTy"COP1", Var("v104",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))), Apply (Call ("dfn'MSUB_D",ATy(qTy,qTy), Var("v104",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))), qVar"state")), (Call ("MSUB_S",CTy"COP1", Var("v105",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))), Apply (Call ("dfn'MSUB_S",ATy(qTy,qTy), Var("v105",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))), qVar"state")), (Call("MTC1",CTy"COP1",Var("v106",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'MTC1",ATy(qTy,qTy),Var("v106",PTy(FTy 5,FTy 5))), qVar"state")), (Call ("MUL_D",CTy"COP1", Var("v107",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'MUL_D",ATy(qTy,qTy), Var("v107",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("MUL_S",CTy"COP1", Var("v108",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'MUL_S",ATy(qTy,qTy), Var("v108",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call("NEG_D",CTy"COP1",Var("v109",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'NEG_D",ATy(qTy,qTy), Var("v109",PTy(FTy 5,FTy 5))),qVar"state")), (Call("NEG_S",CTy"COP1",Var("v110",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'NEG_S",ATy(qTy,qTy), Var("v110",PTy(FTy 5,FTy 5))),qVar"state")), (Call("ROUND_L_D",CTy"COP1",Var("v111",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'ROUND_L_D",ATy(qTy,qTy), Var("v111",PTy(FTy 5,FTy 5))),qVar"state")), (Call("ROUND_L_S",CTy"COP1",Var("v112",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'ROUND_L_S",ATy(qTy,qTy), Var("v112",PTy(FTy 5,FTy 5))),qVar"state")), (Call("ROUND_W_D",CTy"COP1",Var("v113",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'ROUND_W_D",ATy(qTy,qTy), Var("v113",PTy(FTy 5,FTy 5))),qVar"state")), (Call("ROUND_W_S",CTy"COP1",Var("v114",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'ROUND_W_S",ATy(qTy,qTy), Var("v114",PTy(FTy 5,FTy 5))),qVar"state")), (Call ("SDC1",CTy"COP1",Var("v115",PTy(FTy 5,PTy(F16,FTy 5)))), Apply (Call ("dfn'SDC1",ATy(qTy,qTy), Var("v115",PTy(FTy 5,PTy(F16,FTy 5)))),qVar"state")), (Call ("SDXC1",CTy"COP1", Var("v116",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'SDXC1",ATy(qTy,qTy), Var("v116",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call("SQRT_D",CTy"COP1",Var("v117",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'SQRT_D",ATy(qTy,qTy), Var("v117",PTy(FTy 5,FTy 5))),qVar"state")), (Call("SQRT_S",CTy"COP1",Var("v118",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'SQRT_S",ATy(qTy,qTy), Var("v118",PTy(FTy 5,FTy 5))),qVar"state")), (Call ("SUB_D",CTy"COP1", Var("v119",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'SUB_D",ATy(qTy,qTy), Var("v119",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("SUB_S",CTy"COP1", Var("v120",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'SUB_S",ATy(qTy,qTy), Var("v120",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("SWC1",CTy"COP1",Var("v121",PTy(FTy 5,PTy(F16,FTy 5)))), Apply (Call ("dfn'SWC1",ATy(qTy,qTy), Var("v121",PTy(FTy 5,PTy(F16,FTy 5)))),qVar"state")), (Call ("SWXC1",CTy"COP1", Var("v122",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'SWXC1",ATy(qTy,qTy), Var("v122",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call("TRUNC_L_D",CTy"COP1",Var("v123",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'TRUNC_L_D",ATy(qTy,qTy), Var("v123",PTy(FTy 5,FTy 5))),qVar"state")), (Call("TRUNC_L_S",CTy"COP1",Var("v124",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'TRUNC_L_S",ATy(qTy,qTy), Var("v124",PTy(FTy 5,FTy 5))),qVar"state")), (Call("TRUNC_W_D",CTy"COP1",Var("v125",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'TRUNC_W_D",ATy(qTy,qTy), Var("v125",PTy(FTy 5,FTy 5))),qVar"state")), (Call("TRUNC_W_S",CTy"COP1",Var("v126",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'TRUNC_W_S",ATy(qTy,qTy), Var("v126",PTy(FTy 5,FTy 5))),qVar"state"))])), (Call("COP2",CTy"instruction",Var("v127",CTy"COP2")), CS(Var("v127",CTy"COP2"), [(Call("CHERICOP2",CTy"COP2",Var("v128",CTy"CHERICOP2")), CS(Var("v128",CTy"CHERICOP2"), [(Const("CReturn",CTy"CHERICOP2"), Apply(Const("dfn'CReturn",ATy(qTy,qTy)),qVar"state")), (Const("DumpCapReg",CTy"CHERICOP2"),qVar"state"), (Const("UnknownCapInstruction",CTy"CHERICOP2"), Apply (Const("dfn'UnknownCapInstruction",ATy(qTy,qTy)), qVar"state")), (Call ("CBTS",CTy"CHERICOP2",Var("v156",PTy(FTy 5,F16))), Apply (Call ("dfn'CBTS",ATy(qTy,qTy), Var("v156",PTy(FTy 5,F16))),qVar"state")), (Call ("CBTU",CTy"CHERICOP2",Var("v157",PTy(FTy 5,F16))), Apply (Call ("dfn'CBTU",ATy(qTy,qTy), Var("v157",PTy(FTy 5,F16))),qVar"state")), (Call ("CCall0",CTy"CHERICOP2", Var("v158",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CCall0",ATy(qTy,qTy), Var("v158",PTy(FTy 5,FTy 5))),qVar"state")), (Call ("CCall1",CTy"CHERICOP2", Var("v159",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CCall1",ATy(qTy,qTy), Var("v159",PTy(FTy 5,FTy 5))),qVar"state")), (Call ("CJALR",CTy"CHERICOP2", Var("v160",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CJALR",ATy(qTy,qTy), Var("v160",PTy(FTy 5,FTy 5))),qVar"state")), (Call("CJR",CTy"CHERICOP2",Var("v161",FTy 5)), Apply (Call("dfn'CJR",ATy(qTy,qTy),Var("v161",FTy 5)), qVar"state")), (Call ("CLLC",CTy"CHERICOP2",Var("v162",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CLLC",ATy(qTy,qTy), Var("v162",PTy(FTy 5,FTy 5))),qVar"state")), (Call ("CLLx",CTy"CHERICOP2", Var("v163",PTy(FTy 5,PTy(FTy 5,FTy 3)))), Apply (Call ("dfn'CLLx",ATy(qTy,qTy), Var("v163",PTy(FTy 5,PTy(FTy 5,FTy 3)))), qVar"state")), (Call ("CMOVN",CTy"CHERICOP2", Var("v164",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'CMOVN",ATy(qTy,qTy), Var("v164",PTy(FTy 5,PTy(FTy 5,FTy 5)))), qVar"state")), (Call ("CMOVZ",CTy"CHERICOP2", Var("v165",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'CMOVZ",ATy(qTy,qTy), Var("v165",PTy(FTy 5,PTy(FTy 5,FTy 5)))), qVar"state")), (Call ("CPtrCmp",CTy"CHERICOP2", Var("v166",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 3))))), Apply (Call ("dfn'CPtrCmp",ATy(qTy,qTy), Var("v166", PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 3))))), qVar"state")), (Call ("CSCC",CTy"CHERICOP2", Var("v167",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'CSCC",ATy(qTy,qTy), Var("v167",PTy(FTy 5,PTy(FTy 5,FTy 5)))), qVar"state")), (Call ("CSCx",CTy"CHERICOP2", Var("v168",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 2))))), Apply (Call ("dfn'CSCx",ATy(qTy,qTy), Var("v168", PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 2))))), qVar"state")), (Call ("CSeal",CTy"CHERICOP2", Var("v169",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'CSeal",ATy(qTy,qTy), Var("v169",PTy(FTy 5,PTy(FTy 5,FTy 5)))), qVar"state")), (Call ("CSub",CTy"CHERICOP2", Var("v170",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'CSub",ATy(qTy,qTy), Var("v170",PTy(FTy 5,PTy(FTy 5,FTy 5)))), qVar"state")), (Call ("CUnseal",CTy"CHERICOP2", Var("v171",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'CUnseal",ATy(qTy,qTy), Var("v171",PTy(FTy 5,PTy(FTy 5,FTy 5)))), qVar"state")), (Call("CCheck",CTy"CHERICOP2",Var("v129",CTy"CCheck")), CS(Var("v129",CTy"CCheck"), [(Call ("CCheckPerm",CTy"CCheck", Var("v130",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CCheckPerm",ATy(qTy,qTy), Var("v130",PTy(FTy 5,FTy 5))),qVar"state")), (Call ("CCheckType",CTy"CCheck", Var("v131",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CCheckType",ATy(qTy,qTy), Var("v131",PTy(FTy 5,FTy 5))),qVar"state"))])), (Call("CGet",CTy"CHERICOP2",Var("v132",CTy"CGet")), CS(Var("v132",CTy"CGet"), [(Call ("CGetBase",CTy"CGet", Var("v133",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CGetBase",ATy(qTy,qTy), Var("v133",PTy(FTy 5,FTy 5))),qVar"state")), (Call("CGetCause",CTy"CGet",Var("v134",FTy 5)), Apply (Call ("dfn'CGetCause",ATy(qTy,qTy), Var("v134",FTy 5)),qVar"state")), (Call ("CGetLen",CTy"CGet", Var("v135",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CGetLen",ATy(qTy,qTy), Var("v135",PTy(FTy 5,FTy 5))),qVar"state")), (Call ("CGetOffset",CTy"CGet", Var("v136",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CGetOffset",ATy(qTy,qTy), Var("v136",PTy(FTy 5,FTy 5))),qVar"state")), (Call("CGetPCC",CTy"CGet",Var("v137",FTy 5)), Apply (Call ("dfn'CGetPCC",ATy(qTy,qTy), Var("v137",FTy 5)),qVar"state")), (Call ("CGetPCCSetOffset",CTy"CGet", Var("v138",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CGetPCCSetOffset",ATy(qTy,qTy), Var("v138",PTy(FTy 5,FTy 5))),qVar"state")), (Call ("CGetPerm",CTy"CGet", Var("v139",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CGetPerm",ATy(qTy,qTy), Var("v139",PTy(FTy 5,FTy 5))),qVar"state")), (Call ("CGetSealed",CTy"CGet", Var("v140",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CGetSealed",ATy(qTy,qTy), Var("v140",PTy(FTy 5,FTy 5))),qVar"state")), (Call ("CGetTag",CTy"CGet", Var("v141",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CGetTag",ATy(qTy,qTy), Var("v141",PTy(FTy 5,FTy 5))),qVar"state")), (Call ("CGetType",CTy"CGet", Var("v142",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CGetType",ATy(qTy,qTy), Var("v142",PTy(FTy 5,FTy 5))),qVar"state")), (Call ("CToPtr",CTy"CGet", Var("v143",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'CToPtr",ATy(qTy,qTy), Var("v143",PTy(FTy 5,PTy(FTy 5,FTy 5)))), qVar"state"))])), (Call("CSet",CTy"CHERICOP2",Var("v144",CTy"CSet")), CS(Var("v144",CTy"CSet"), [(Call ("CAndPerm",CTy"CSet", Var("v145",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'CAndPerm",ATy(qTy,qTy), Var("v145",PTy(FTy 5,PTy(FTy 5,FTy 5)))), qVar"state")), (Call ("CClearRegs",CTy"CSet", Var("v146",PTy(FTy 5,F16))), Apply (Call ("dfn'CClearRegs",ATy(qTy,qTy), Var("v146",PTy(FTy 5,F16))),qVar"state")), (Call ("CClearTag",CTy"CSet", Var("v147",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'CClearTag",ATy(qTy,qTy), Var("v147",PTy(FTy 5,FTy 5))),qVar"state")), (Call ("CFromPtr",CTy"CSet", Var("v148",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'CFromPtr",ATy(qTy,qTy), Var("v148",PTy(FTy 5,PTy(FTy 5,FTy 5)))), qVar"state")), (Call ("CIncOffset",CTy"CSet", Var("v149",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'CIncOffset",ATy(qTy,qTy), Var("v149",PTy(FTy 5,PTy(FTy 5,FTy 5)))), qVar"state")), (Call ("CIncOffsetImmediate",CTy"CSet", Var("v150",PTy(FTy 5,PTy(FTy 5,FTy 11)))), Apply (Call ("dfn'CIncOffsetImmediate",ATy(qTy,qTy), Var("v150",PTy(FTy 5,PTy(FTy 5,FTy 11)))), qVar"state")), (Call ("CSetBounds",CTy"CSet", Var("v151",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'CSetBounds",ATy(qTy,qTy), Var("v151",PTy(FTy 5,PTy(FTy 5,FTy 5)))), qVar"state")), (Call ("CSetBoundsExact",CTy"CSet", Var("v152",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'CSetBoundsExact",ATy(qTy,qTy), Var("v152",PTy(FTy 5,PTy(FTy 5,FTy 5)))), qVar"state")), (Call ("CSetBoundsImmediate",CTy"CSet", Var("v153",PTy(FTy 5,PTy(FTy 5,FTy 11)))), Apply (Call ("dfn'CSetBoundsImmediate",ATy(qTy,qTy), Var("v153",PTy(FTy 5,PTy(FTy 5,FTy 11)))), qVar"state")), (Call("CSetCause",CTy"CSet",Var("v154",FTy 5)), Apply (Call ("dfn'CSetCause",ATy(qTy,qTy), Var("v154",FTy 5)),qVar"state")), (Call ("CSetOffset",CTy"CSet", Var("v155",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'CSetOffset",ATy(qTy,qTy), Var("v155",PTy(FTy 5,PTy(FTy 5,FTy 5)))), qVar"state"))]))]))])), (Call("CP",CTy"instruction",Var("v172",CTy"CP")), CS(Var("v172",CTy"CP"), [(Call ("DMFC0",CTy"CP",Var("v173",PTy(FTy 5,PTy(FTy 5,FTy 3)))), Apply (Call ("dfn'DMFC0",ATy(qTy,qTy), Var("v173",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")), (Call ("DMTC0",CTy"CP",Var("v174",PTy(FTy 5,PTy(FTy 5,FTy 3)))), Apply (Call ("dfn'DMTC0",ATy(qTy,qTy), Var("v174",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")), (Call ("MFC0",CTy"CP",Var("v175",PTy(FTy 5,PTy(FTy 5,FTy 3)))), Apply (Call ("dfn'MFC0",ATy(qTy,qTy), Var("v175",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state")), (Call ("MTC0",CTy"CP",Var("v176",PTy(FTy 5,PTy(FTy 5,FTy 3)))), Apply (Call ("dfn'MTC0",ATy(qTy,qTy), Var("v176",PTy(FTy 5,PTy(FTy 5,FTy 3)))),qVar"state"))])), (Call("LDC2",CTy"instruction",Var("v177",CTy"LDC2")), CS(Var("v177",CTy"LDC2"), [(Call("CHERILDC2",CTy"LDC2",Var("v178",CTy"CHERILDC2")), CS(Var("v178",CTy"CHERILDC2"), [(Call ("CLC",CTy"CHERILDC2", Var("v179",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 11))))), Apply (Call ("dfn'CLC",ATy(qTy,qTy), Var("v179", PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 11))))), qVar"state"))]))])), (Call("LWC2",CTy"instruction",Var("v180",CTy"LWC2")), CS(Var("v180",CTy"LWC2"), [(Call("CHERILWC2",CTy"LWC2",Var("v181",CTy"CHERILWC2")), CS(Var("v181",CTy"CHERILWC2"), [(Call ("CLoad",CTy"CHERILWC2", Var("v182", PTy(FTy 5, PTy(FTy 5,PTy(FTy 5,PTy(F8,PTy(F1,FTy 2))))))), Apply (Call ("dfn'CLoad",ATy(qTy,qTy), Var("v182", PTy(FTy 5, PTy(FTy 5, PTy(FTy 5,PTy(F8,PTy(F1,FTy 2))))))), qVar"state"))]))])), (Call("Load",CTy"instruction",Var("v183",CTy"Load")), CS(Var("v183",CTy"Load"), [(Call("LB",CTy"Load",Var("v184",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'LB",ATy(qTy,qTy), Var("v184",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("LBU",CTy"Load",Var("v185",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'LBU",ATy(qTy,qTy), Var("v185",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call("LD",CTy"Load",Var("v186",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'LD",ATy(qTy,qTy), Var("v186",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("LDL",CTy"Load",Var("v187",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'LDL",ATy(qTy,qTy), Var("v187",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("LDR",CTy"Load",Var("v188",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'LDR",ATy(qTy,qTy), Var("v188",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call("LH",CTy"Load",Var("v189",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'LH",ATy(qTy,qTy), Var("v189",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("LHU",CTy"Load",Var("v190",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'LHU",ATy(qTy,qTy), Var("v190",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call("LL",CTy"Load",Var("v191",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'LL",ATy(qTy,qTy), Var("v191",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("LLD",CTy"Load",Var("v192",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'LLD",ATy(qTy,qTy), Var("v192",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call("LW",CTy"Load",Var("v193",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'LW",ATy(qTy,qTy), Var("v193",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("LWL",CTy"Load",Var("v194",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'LWL",ATy(qTy,qTy), Var("v194",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("LWR",CTy"Load",Var("v195",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'LWR",ATy(qTy,qTy), Var("v195",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("LWU",CTy"Load",Var("v196",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'LWU",ATy(qTy,qTy), Var("v196",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state"))])), (Call("MultDiv",CTy"instruction",Var("v197",CTy"MultDiv")), CS(Var("v197",CTy"MultDiv"), [(Call("DDIV",CTy"MultDiv",Var("v198",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'DDIV",ATy(qTy,qTy),Var("v198",PTy(FTy 5,FTy 5))), qVar"state")), (Call("DDIVU",CTy"MultDiv",Var("v199",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'DDIVU",ATy(qTy,qTy), Var("v199",PTy(FTy 5,FTy 5))),qVar"state")), (Call("DIV",CTy"MultDiv",Var("v200",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'DIV",ATy(qTy,qTy),Var("v200",PTy(FTy 5,FTy 5))), qVar"state")), (Call("DIVU",CTy"MultDiv",Var("v201",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'DIVU",ATy(qTy,qTy),Var("v201",PTy(FTy 5,FTy 5))), qVar"state")), (Call("DMULT",CTy"MultDiv",Var("v202",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'DMULT",ATy(qTy,qTy), Var("v202",PTy(FTy 5,FTy 5))),qVar"state")), (Call("DMULTU",CTy"MultDiv",Var("v203",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'DMULTU",ATy(qTy,qTy), Var("v203",PTy(FTy 5,FTy 5))),qVar"state")), (Call("MADD",CTy"MultDiv",Var("v204",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'MADD",ATy(qTy,qTy),Var("v204",PTy(FTy 5,FTy 5))), qVar"state")), (Call("MADDU",CTy"MultDiv",Var("v205",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'MADDU",ATy(qTy,qTy), Var("v205",PTy(FTy 5,FTy 5))),qVar"state")), (Call("MFHI",CTy"MultDiv",Var("v206",FTy 5)), Apply (Call("dfn'MFHI",ATy(qTy,qTy),Var("v206",FTy 5)), qVar"state")), (Call("MFLO",CTy"MultDiv",Var("v207",FTy 5)), Apply (Call("dfn'MFLO",ATy(qTy,qTy),Var("v207",FTy 5)), qVar"state")), (Call("MSUB",CTy"MultDiv",Var("v208",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'MSUB",ATy(qTy,qTy),Var("v208",PTy(FTy 5,FTy 5))), qVar"state")), (Call("MSUBU",CTy"MultDiv",Var("v209",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'MSUBU",ATy(qTy,qTy), Var("v209",PTy(FTy 5,FTy 5))),qVar"state")), (Call("MTHI",CTy"MultDiv",Var("v210",FTy 5)), Apply (Call("dfn'MTHI",ATy(qTy,qTy),Var("v210",FTy 5)), qVar"state")), (Call("MTLO",CTy"MultDiv",Var("v211",FTy 5)), Apply (Call("dfn'MTLO",ATy(qTy,qTy),Var("v211",FTy 5)), qVar"state")), (Call ("MUL",CTy"MultDiv", Var("v212",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'MUL",ATy(qTy,qTy), Var("v212",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call("MULT",CTy"MultDiv",Var("v213",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'MULT",ATy(qTy,qTy),Var("v213",PTy(FTy 5,FTy 5))), qVar"state")), (Call("MULTU",CTy"MultDiv",Var("v214",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'MULTU",ATy(qTy,qTy), Var("v214",PTy(FTy 5,FTy 5))),qVar"state"))])), (Call("SDC2",CTy"instruction",Var("v215",CTy"SDC2")), CS(Var("v215",CTy"SDC2"), [(Call("CHERISDC2",CTy"SDC2",Var("v216",CTy"CHERISDC2")), CS(Var("v216",CTy"CHERISDC2"), [(Call ("CSC",CTy"CHERISDC2", Var("v217",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 11))))), Apply (Call ("dfn'CSC",ATy(qTy,qTy), Var("v217", PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 11))))), qVar"state"))]))])), (Call("SWC2",CTy"instruction",Var("v218",CTy"SWC2")), CS(Var("v218",CTy"SWC2"), [(Call("CHERISWC2",CTy"SWC2",Var("v219",CTy"CHERISWC2")), CS(Var("v219",CTy"CHERISWC2"), [(Call ("CStore",CTy"CHERISWC2", Var("v220", PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,PTy(F8,FTy 2)))))), Apply (Call ("dfn'CStore",ATy(qTy,qTy), Var("v220", PTy(FTy 5, PTy(FTy 5,PTy(FTy 5,PTy(F8,FTy 2)))))), qVar"state"))]))])), (Call("Shift",CTy"instruction",Var("v221",CTy"Shift")), CS(Var("v221",CTy"Shift"), [(Call ("DSLL",CTy"Shift", Var("v222",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'DSLL",ATy(qTy,qTy), Var("v222",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("DSLL32",CTy"Shift", Var("v223",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'DSLL32",ATy(qTy,qTy), Var("v223",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("DSLLV",CTy"Shift", Var("v224",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'DSLLV",ATy(qTy,qTy), Var("v224",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("DSRA",CTy"Shift", Var("v225",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'DSRA",ATy(qTy,qTy), Var("v225",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("DSRA32",CTy"Shift", Var("v226",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'DSRA32",ATy(qTy,qTy), Var("v226",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("DSRAV",CTy"Shift", Var("v227",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'DSRAV",ATy(qTy,qTy), Var("v227",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("DSRL",CTy"Shift", Var("v228",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'DSRL",ATy(qTy,qTy), Var("v228",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("DSRL32",CTy"Shift", Var("v229",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'DSRL32",ATy(qTy,qTy), Var("v229",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("DSRLV",CTy"Shift", Var("v230",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'DSRLV",ATy(qTy,qTy), Var("v230",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("SLL",CTy"Shift", Var("v231",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'SLL",ATy(qTy,qTy), Var("v231",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("SLLV",CTy"Shift", Var("v232",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'SLLV",ATy(qTy,qTy), Var("v232",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("SRA",CTy"Shift", Var("v233",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'SRA",ATy(qTy,qTy), Var("v233",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("SRAV",CTy"Shift", Var("v234",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'SRAV",ATy(qTy,qTy), Var("v234",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("SRL",CTy"Shift", Var("v235",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'SRL",ATy(qTy,qTy), Var("v235",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state")), (Call ("SRLV",CTy"Shift", Var("v236",PTy(FTy 5,PTy(FTy 5,FTy 5)))), Apply (Call ("dfn'SRLV",ATy(qTy,qTy), Var("v236",PTy(FTy 5,PTy(FTy 5,FTy 5)))),qVar"state"))])), (Call("Store",CTy"instruction",Var("v237",CTy"Store")), CS(Var("v237",CTy"Store"), [(Call ("SB",CTy"Store",Var("v238",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'SB",ATy(qTy,qTy), Var("v238",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("SC",CTy"Store",Var("v239",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'SC",ATy(qTy,qTy), Var("v239",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("SCD",CTy"Store",Var("v240",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'SCD",ATy(qTy,qTy), Var("v240",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("SD",CTy"Store",Var("v241",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'SD",ATy(qTy,qTy), Var("v241",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("SDL",CTy"Store",Var("v242",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'SDL",ATy(qTy,qTy), Var("v242",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("SDR",CTy"Store",Var("v243",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'SDR",ATy(qTy,qTy), Var("v243",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("SH",CTy"Store",Var("v244",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'SH",ATy(qTy,qTy), Var("v244",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("SW",CTy"Store",Var("v245",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'SW",ATy(qTy,qTy), Var("v245",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("SWL",CTy"Store",Var("v246",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'SWL",ATy(qTy,qTy), Var("v246",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state")), (Call ("SWR",CTy"Store",Var("v247",PTy(FTy 5,PTy(FTy 5,F16)))), Apply (Call ("dfn'SWR",ATy(qTy,qTy), Var("v247",PTy(FTy 5,PTy(FTy 5,F16)))),qVar"state"))])), (Call("Trap",CTy"instruction",Var("v248",CTy"Trap")), CS(Var("v248",CTy"Trap"), [(Call("TEQ",CTy"Trap",Var("v249",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'TEQ",ATy(qTy,qTy),Var("v249",PTy(FTy 5,FTy 5))), qVar"state")), (Call("TEQI",CTy"Trap",Var("v250",PTy(FTy 5,F16))), Apply (Call ("dfn'TEQI",ATy(qTy,qTy),Var("v250",PTy(FTy 5,F16))), qVar"state")), (Call("TGE",CTy"Trap",Var("v251",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'TGE",ATy(qTy,qTy),Var("v251",PTy(FTy 5,FTy 5))), qVar"state")), (Call("TGEI",CTy"Trap",Var("v252",PTy(FTy 5,F16))), Apply (Call ("dfn'TGEI",ATy(qTy,qTy),Var("v252",PTy(FTy 5,F16))), qVar"state")), (Call("TGEIU",CTy"Trap",Var("v253",PTy(FTy 5,F16))), Apply (Call ("dfn'TGEIU",ATy(qTy,qTy),Var("v253",PTy(FTy 5,F16))), qVar"state")), (Call("TGEU",CTy"Trap",Var("v254",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'TGEU",ATy(qTy,qTy),Var("v254",PTy(FTy 5,FTy 5))), qVar"state")), (Call("TLT",CTy"Trap",Var("v255",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'TLT",ATy(qTy,qTy),Var("v255",PTy(FTy 5,FTy 5))), qVar"state")), (Call("TLTI",CTy"Trap",Var("v256",PTy(FTy 5,F16))), Apply (Call ("dfn'TLTI",ATy(qTy,qTy),Var("v256",PTy(FTy 5,F16))), qVar"state")), (Call("TLTIU",CTy"Trap",Var("v257",PTy(FTy 5,F16))), Apply (Call ("dfn'TLTIU",ATy(qTy,qTy),Var("v257",PTy(FTy 5,F16))), qVar"state")), (Call("TLTU",CTy"Trap",Var("v258",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'TLTU",ATy(qTy,qTy),Var("v258",PTy(FTy 5,FTy 5))), qVar"state")), (Call("TNE",CTy"Trap",Var("v259",PTy(FTy 5,FTy 5))), Apply (Call ("dfn'TNE",ATy(qTy,qTy),Var("v259",PTy(FTy 5,FTy 5))), qVar"state")), (Call("TNEI",CTy"Trap",Var("v260",PTy(FTy 5,F16))), Apply (Call ("dfn'TNEI",ATy(qTy,qTy),Var("v260",PTy(FTy 5,F16))), qVar"state"))]))]))) ; val COP1Decode_def = Def ("COP1Decode",Var("v",FTy 26), Call ("COP1",CTy"instruction", Let(TP[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",bVar"b'21", bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",bVar"b'16", bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",bVar"b'11", bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6",bVar"b'5", bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"], BL(26,Var("v",FTy 26)), ITB([(bVar"b'21", ITB([(bVar"b'3", ITB([(bVar"b'2", ITE(Bop(And,bVar"b'25", Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And, Mop(Not,bVar"b'20"), Bop(And, Mop(Not,bVar"b'19"), Bop(And, Mop(Not, bVar"b'18"), Bop(And, Mop(Not, bVar"b'17"), Bop(And, Mop(Not, bVar"b'16"), Bop(And, Mop(Not, bVar"b'5"), Mop(Not, bVar"b'4"))))))))))), ITB([(Bop(And,Mop(Not,bVar"b'1"), Mop(Not,bVar"b'0")), Call ("ROUND_W_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,Mop(Not,bVar"b'1"),bVar"b'0"), Call ("TRUNC_W_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,bVar"b'1",Mop(Not,bVar"b'0")), Call ("CEIL_W_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,bVar"b'1",bVar"b'0"), Call ("FLOOR_W_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])]))], Const ("UnknownFPInstruction",CTy"COP1")), Const("UnknownFPInstruction",CTy"COP1"))), (Bop(And,bVar"b'25", Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'20"), Bop(And, Mop(Not,bVar"b'19"), Bop(And, Mop(Not,bVar"b'18"), Bop(And, Mop(Not, bVar"b'17"), Bop(And, Mop(Not, bVar"b'16"), Bop(And, Mop(Not, bVar"b'5"), Mop(Not, bVar"b'4"))))))))))), ITB([(Bop(And,Mop(Not,bVar"b'1"), Mop(Not,bVar"b'0")), Call ("ROUND_L_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,Mop(Not,bVar"b'1"),bVar"b'0"), Call ("TRUNC_L_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,bVar"b'1",Mop(Not,bVar"b'0")), Call ("CEIL_L_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,bVar"b'1",bVar"b'0"), Call ("FLOOR_L_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])]))], Const("UnknownFPInstruction",CTy"COP1")))], Const("UnknownFPInstruction",CTy"COP1"))), (bVar"b'5", ITE(Bop(And,bVar"b'25", Bop(And,Mop(Not,bVar"b'24"), Mop(Not,bVar"b'22"))), ITB([(Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), bVar"b'4"))), Call ("C_cond_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 3), LL[bVar"b'2",bVar"b'1",bVar"b'0"]), Mop(Cast(FTy 3), LL[bVar"b'10",bVar"b'9", bVar"b'8"])])), (Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And, Mop(Not,bVar"b'17"), Bop(And, Mop(Not,bVar"b'16"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, Mop(Not, bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0")))))))))), Call ("CVT_S_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,bVar"b'23", Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And, Mop(Not,bVar"b'17"), Bop(And, Mop(Not,bVar"b'16"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, Mop(Not, bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0")))))))))), Call ("CVT_S_L",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,bVar"b'23", Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And, Mop(Not,bVar"b'17"), Bop(And, Mop(Not,bVar"b'16"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, Mop(Not, bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), bVar"b'0"))))))))), Call ("CVT_D_L",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And, Mop(Not,bVar"b'17"), Bop(And, Mop(Not,bVar"b'16"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, bVar"b'2", Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0")))))))))), Call ("CVT_W_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And, Mop(Not,bVar"b'17"), Bop(And, Mop(Not,bVar"b'16"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, bVar"b'2", Bop(And, Mop(Not, bVar"b'1"), bVar"b'0"))))))))), Call ("CVT_L_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])]))], Const("UnknownFPInstruction",CTy"COP1")), Const("UnknownFPInstruction",CTy"COP1"))), (bVar"b'0", ITE(Bop(And,bVar"b'25", Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Mop(Not,bVar"b'22")))), ITB([(Bop(And,Mop(Not,bVar"b'4"), Bop(And,Mop(Not,bVar"b'2"), Mop(Not,bVar"b'1"))), Call ("SUB_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"])])), (Bop(And,Mop(Not,bVar"b'4"), Bop(And,Mop(Not,bVar"b'2"),bVar"b'1")), Call ("DIV_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"])])), (Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And,Mop(Not,bVar"b'17"), Bop(And, Mop(Not,bVar"b'16"), Bop(And, Mop(Not,bVar"b'4"), Bop(And,bVar"b'2", Mop(Not, bVar"b'1")))))))), Call ("ABS_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And,Mop(Not,bVar"b'17"), Bop(And, Mop(Not,bVar"b'16"), Bop(And, Mop(Not,bVar"b'4"), Bop(And,bVar"b'2", bVar"b'1"))))))), Call ("NEG_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,Mop(Not,bVar"b'17"), Bop(And,Mop(Not,bVar"b'16"), Bop(And,bVar"b'4", Bop(And,Mop(Not,bVar"b'2"), Mop(Not,bVar"b'1"))))), Call ("MOVF_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 3), LL[bVar"b'20",bVar"b'19", bVar"b'18"])])), (Bop(And,Mop(Not,bVar"b'17"), Bop(And,bVar"b'16", Bop(And,bVar"b'4", Bop(And,Mop(Not,bVar"b'2"), Mop(Not,bVar"b'1"))))), Call ("MOVT_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 3), LL[bVar"b'20",bVar"b'19", bVar"b'18"])])), (Bop(And,bVar"b'4", Bop(And,Mop(Not,bVar"b'2"),bVar"b'1")), Call ("MOVN_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"])]))], Const("UnknownFPInstruction",CTy"COP1")), Const("UnknownFPInstruction",CTy"COP1"))), (Bop(And,Mop(Not,bVar"b'24"),Mop(Not,bVar"b'22")), ITB([(Bop(And,Mop(Not,bVar"b'25"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And, Mop(Not,bVar"b'7"), Bop(And, Mop(Not,bVar"b'6"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, Mop(Not, bVar"b'2"), Mop(Not, bVar"b'1")))))))))), Call ("DMFC1",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"])])), (Bop(And,Mop(Not,bVar"b'25"), Bop(And,bVar"b'23", Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And, Mop(Not,bVar"b'7"), Bop(And, Mop(Not,bVar"b'6"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, Mop(Not, bVar"b'2"), Mop(Not, bVar"b'1")))))))))), Call ("DMTC1",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"])])), (Bop(And,bVar"b'25", Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'4"), Bop(And,Mop(Not,bVar"b'2"), Mop(Not,bVar"b'1"))))), Call ("ADD_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"])])), (Bop(And,bVar"b'25", Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'4"), Bop(And,Mop(Not,bVar"b'2"), bVar"b'1")))), Call ("MUL_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"])])), (Bop(And,bVar"b'25", Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And, Mop(Not,bVar"b'17"), Bop(And, Mop(Not,bVar"b'16"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, bVar"b'2", Mop(Not, bVar"b'1")))))))))), Call ("SQRT_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"])])), (Bop(And,bVar"b'25", Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And, Mop(Not,bVar"b'17"), Bop(And, Mop(Not,bVar"b'16"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, bVar"b'2", bVar"b'1"))))))))), Call ("MOV_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"])])), (Bop(And,bVar"b'25", Bop(And,Mop(Not,bVar"b'23"), Bop(And,bVar"b'4", Bop(And,Mop(Not,bVar"b'2"), bVar"b'1")))), Call ("MOVZ_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"])]))], Const("UnknownFPInstruction",CTy"COP1")))], Const("UnknownFPInstruction",CTy"COP1"))), (bVar"b'25", ITB([(bVar"b'3", ITB([(bVar"b'2", ITE(Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'20"), Bop(And, Mop(Not,bVar"b'19"), Bop(And, Mop(Not,bVar"b'18"), Bop(And, Mop(Not, bVar"b'17"), Bop(And, Mop(Not, bVar"b'16"), Bop(And, Mop(Not, bVar"b'5"), Mop(Not, bVar"b'4")))))))))), ITB([(Bop(And,Mop(Not,bVar"b'1"), Mop(Not,bVar"b'0")), Call ("ROUND_W_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,Mop(Not,bVar"b'1"),bVar"b'0"), Call ("TRUNC_W_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,bVar"b'1",Mop(Not,bVar"b'0")), Call ("CEIL_W_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,bVar"b'1",bVar"b'0"), Call ("FLOOR_W_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])]))], Const ("UnknownFPInstruction",CTy"COP1")), Const("UnknownFPInstruction",CTy"COP1"))), (Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And, Mop(Not,bVar"b'18"), Bop(And, Mop(Not,bVar"b'17"), Bop(And, Mop(Not, bVar"b'16"), Bop(And, Mop(Not, bVar"b'5"), Mop(Not, bVar"b'4")))))))))), ITB([(Bop(And,Mop(Not,bVar"b'1"), Mop(Not,bVar"b'0")), Call ("ROUND_L_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,Mop(Not,bVar"b'1"),bVar"b'0"), Call ("TRUNC_L_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,bVar"b'1",Mop(Not,bVar"b'0")), Call ("CEIL_L_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,bVar"b'1",bVar"b'0"), Call ("FLOOR_L_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])]))], Const("UnknownFPInstruction",CTy"COP1")))], Const("UnknownFPInstruction",CTy"COP1"))), (bVar"b'5", ITE(Bop(And,Mop(Not,bVar"b'24"),Mop(Not,bVar"b'22")), ITB([(Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), bVar"b'4"))), Call ("C_cond_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 3), LL[bVar"b'2",bVar"b'1",bVar"b'0"]), Mop(Cast(FTy 3), LL[bVar"b'10",bVar"b'9", bVar"b'8"])])), (Bop(And,bVar"b'23", Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And, Mop(Not,bVar"b'17"), Bop(And, Mop(Not,bVar"b'16"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, Mop(Not, bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0")))))))))), Call ("CVT_S_W",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And, Mop(Not,bVar"b'17"), Bop(And, Mop(Not,bVar"b'16"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, Mop(Not, bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), bVar"b'0"))))))))), Call ("CVT_D_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,bVar"b'23", Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And, Mop(Not,bVar"b'17"), Bop(And, Mop(Not,bVar"b'16"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, Mop(Not, bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), bVar"b'0"))))))))), Call ("CVT_D_W",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And, Mop(Not,bVar"b'17"), Bop(And, Mop(Not,bVar"b'16"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, bVar"b'2", Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0")))))))))), Call ("CVT_W_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And, Mop(Not,bVar"b'17"), Bop(And, Mop(Not,bVar"b'16"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, bVar"b'2", Bop(And, Mop(Not, bVar"b'1"), bVar"b'0"))))))))), Call ("CVT_L_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])]))], Const("UnknownFPInstruction",CTy"COP1")), Const("UnknownFPInstruction",CTy"COP1"))), (bVar"b'1", ITE(Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Mop(Not,bVar"b'22"))), ITB([(Bop(And,Mop(Not,bVar"b'4"), Bop(And,Mop(Not,bVar"b'2"), Mop(Not,bVar"b'0"))), Call ("MUL_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"])])), (Bop(And,Mop(Not,bVar"b'4"), Bop(And,Mop(Not,bVar"b'2"),bVar"b'0")), Call ("DIV_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"])])), (Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And,Mop(Not,bVar"b'17"), Bop(And, Mop(Not,bVar"b'16"), Bop(And, Mop(Not,bVar"b'4"), Bop(And,bVar"b'2", Mop(Not, bVar"b'0")))))))), Call ("MOV_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And,Mop(Not,bVar"b'17"), Bop(And, Mop(Not,bVar"b'16"), Bop(And, Mop(Not,bVar"b'4"), Bop(And,bVar"b'2", bVar"b'0"))))))), Call ("NEG_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,bVar"b'4", Bop(And,Mop(Not,bVar"b'2"), Mop(Not,bVar"b'0"))), Call ("MOVZ_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"])])), (Bop(And,bVar"b'4", Bop(And,Mop(Not,bVar"b'2"),bVar"b'0")), Call ("MOVN_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"])]))], Const("UnknownFPInstruction",CTy"COP1")), Const("UnknownFPInstruction",CTy"COP1"))), (Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"),Mop(Not,bVar"b'22"))), ITB([(Bop(And,Mop(Not,bVar"b'4"), Bop(And,Mop(Not,bVar"b'2"), Mop(Not,bVar"b'0"))), Call ("ADD_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"])])), (Bop(And,Mop(Not,bVar"b'4"), Bop(And,Mop(Not,bVar"b'2"),bVar"b'0")), Call ("SUB_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"])])), (Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And,Mop(Not,bVar"b'17"), Bop(And,Mop(Not,bVar"b'16"), Bop(And, Mop(Not,bVar"b'4"), Bop(And,bVar"b'2", Mop(Not,bVar"b'0")))))))), Call ("SQRT_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"])])), (Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And,Mop(Not,bVar"b'17"), Bop(And,Mop(Not,bVar"b'16"), Bop(And, Mop(Not,bVar"b'4"), Bop(And,bVar"b'2", bVar"b'0"))))))), Call ("ABS_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"])])), (Bop(And,Mop(Not,bVar"b'17"), Bop(And,Mop(Not,bVar"b'16"), Bop(And,bVar"b'4", Bop(And,Mop(Not,bVar"b'2"), bVar"b'0")))), Call ("MOVF_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 3), LL[bVar"b'20",bVar"b'19",bVar"b'18"])])), (Bop(And,Mop(Not,bVar"b'17"), Bop(And,bVar"b'16", Bop(And,bVar"b'4", Bop(And,Mop(Not,bVar"b'2"), bVar"b'0")))), Call ("MOVT_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 3), LL[bVar"b'20",bVar"b'19",bVar"b'18"])]))], Const("UnknownFPInstruction",CTy"COP1")))], Const("UnknownFPInstruction",CTy"COP1"))), (bVar"b'24", ITE(Bop(And,Mop(Not,bVar"b'23"),Mop(Not,bVar"b'22")), ITB([(Bop(And,Mop(Not,bVar"b'17"),Mop(Not,bVar"b'16")), Call ("BC1F",CTy"COP1", TP[Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"]), Mop(Cast(FTy 3), LL[bVar"b'20",bVar"b'19",bVar"b'18"])])), (Bop(And,Mop(Not,bVar"b'17"),bVar"b'16"), Call ("BC1T",CTy"COP1", TP[Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"]), Mop(Cast(FTy 3), LL[bVar"b'20",bVar"b'19",bVar"b'18"])])), (Bop(And,bVar"b'17",Mop(Not,bVar"b'16")), Call ("BC1FL",CTy"COP1", TP[Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"]), Mop(Cast(FTy 3), LL[bVar"b'20",bVar"b'19",bVar"b'18"])])), (Bop(And,bVar"b'17",bVar"b'16"), Call ("BC1TL",CTy"COP1", TP[Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"]), Mop(Cast(FTy 3), LL[bVar"b'20",bVar"b'19",bVar"b'18"])]))], Const("UnknownFPInstruction",CTy"COP1")), Const("UnknownFPInstruction",CTy"COP1"))), (Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And,Mop(Not,bVar"b'3"), Bop(And, Mop(Not,bVar"b'2"), Bop(And, Mop(Not,bVar"b'1"), Mop(Not,bVar"b'0"))))))))))), ITB([(Bop(And,Mop(Not,bVar"b'23"),Mop(Not,bVar"b'22")), Call ("MFC1",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"])])), (Bop(And,Mop(Not,bVar"b'23"),bVar"b'22"), Call ("CFC1",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"])])), (Bop(And,bVar"b'23",Mop(Not,bVar"b'22")), Call ("MTC1",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"])])), (Bop(And,bVar"b'23",bVar"b'22"), Call ("CTC1",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"])]))], Const("UnknownFPInstruction",CTy"COP1")))], Const("UnknownFPInstruction",CTy"COP1"))))) ; val LDC1Decode_def = Def ("LDC1Decode",TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)], Call ("COP1",CTy"instruction", Call ("LDC1",CTy"COP1", TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)]))) ; val LWC1Decode_def = Def ("LWC1Decode",TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)], Call ("COP1",CTy"instruction", Call ("LWC1",CTy"COP1", TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)]))) ; val SDC1Decode_def = Def ("SDC1Decode",TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)], Call ("COP1",CTy"instruction", Call ("SDC1",CTy"COP1", TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)]))) ; val SWC1Decode_def = Def ("SWC1Decode",TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)], Call ("COP1",CTy"instruction", Call ("SWC1",CTy"COP1", TP[Var("base",FTy 5),Var("offset",F16),Var("ft",FTy 5)]))) ; val MOVCIDecode_def = Def ("MOVCIDecode",TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)], Let(TP[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"], BL(5,Var("rt",FTy 5)), ITE(Mop(Not,bVar"b'1"), ITB([(Mop(Not,bVar"b'0"), Call ("COP1",CTy"instruction", Call ("MOVF",CTy"COP1", TP[Var("rd",FTy 5),Var("rs",FTy 5), Mop(Cast(FTy 3), LL[bVar"b'4",bVar"b'3",bVar"b'2"])]))), (bVar"b'0", Call ("COP1",CTy"instruction", Call ("MOVT",CTy"COP1", TP[Var("rd",FTy 5),Var("rs",FTy 5), Mop(Cast(FTy 3), LL[bVar"b'4",bVar"b'3",bVar"b'2"])])))], Const("ReservedInstruction",CTy"instruction")), Const("ReservedInstruction",CTy"instruction")))) ; val COP3Decode_def = Def ("COP3Decode",Var("v",FTy 26), Call ("COP1",CTy"instruction", Let(TP[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",bVar"b'21", bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",bVar"b'16", bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",bVar"b'11", bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6",bVar"b'5", bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"], BL(26,Var("v",FTy 26)), ITB([(bVar"b'5", ITE(Bop(And,Mop(Not,bVar"b'4"), Bop(And,Mop(Not,bVar"b'2"),Mop(Not,bVar"b'1"))), ITB([(Bop(And,Mop(Not,bVar"b'3"),Mop(Not,bVar"b'0")), Call ("MADD_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"])])), (Bop(And,Mop(Not,bVar"b'3"),bVar"b'0"), Call ("MADD_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"])])), (Bop(And,bVar"b'3",Mop(Not,bVar"b'0")), Call ("MSUB_S",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"])])), (Bop(And,bVar"b'3",bVar"b'0"), Call ("MSUB_D",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"])]))], Const("UnknownFPInstruction",CTy"COP1")), Const("UnknownFPInstruction",CTy"COP1"))), (Bop(And,Mop(Not,bVar"b'4"), Bop(And,Mop(Not,bVar"b'2"),Mop(Not,bVar"b'1"))), ITB([(Bop(And,Mop(Not,bVar"b'15"), Bop(And,Mop(Not,bVar"b'14"), Bop(And,Mop(Not,bVar"b'13"), Bop(And,Mop(Not,bVar"b'12"), Bop(And,Mop(Not,bVar"b'11"), Bop(And,Mop(Not,bVar"b'3"), Mop(Not,bVar"b'0"))))))), Call ("LWXC1",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"])])), (Bop(And,Mop(Not,bVar"b'15"), Bop(And,Mop(Not,bVar"b'14"), Bop(And,Mop(Not,bVar"b'13"), Bop(And,Mop(Not,bVar"b'12"), Bop(And,Mop(Not,bVar"b'11"), Bop(And,Mop(Not,bVar"b'3"), bVar"b'0")))))), Call ("LDXC1",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"])])), (Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,bVar"b'3", Mop(Not,bVar"b'0"))))))), Call ("SWXC1",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"])])), (Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,bVar"b'3",bVar"b'0")))))), Call ("SDXC1",CTy"COP1", TP[Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"])]))], Const("UnknownFPInstruction",CTy"COP1")))], Const("UnknownFPInstruction",CTy"COP1"))))) ; val COP2Decode_def = Def ("COP2Decode",Var("v",FTy 26), Call ("COP2",CTy"instruction", Call ("CHERICOP2",CTy"COP2", Let(TP[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22",bVar"b'21", bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17",bVar"b'16", bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",bVar"b'11", bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"],BL(26,Var("v",FTy 26)), ITB([(bVar"b'23", ITB([(bVar"b'21", ITE(Mop(Not,bVar"b'25"), ITB([(Bop(And,bVar"b'24", Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And, Mop(Not,bVar"b'3"), Bop(And, Mop(Not, bVar"b'2"), Bop(And, bVar"b'1", Mop(Not, bVar"b'0")))))))), Call ("CGet",CTy"CHERICOP2", Call ("CGetOffset",CTy"CGet", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,bVar"b'24", Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'2"), Bop(And,Mop(Not,bVar"b'1"), Mop(Not,bVar"b'0"))))), Call ("CSet",CTy"CHERICOP2", Call ("CIncOffset",CTy"CSet", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6"])]))), (Bop(And,bVar"b'24",bVar"b'22"), Call ("CSet",CTy"CHERICOP2", Call ("CClearRegs",CTy"CSet", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6", bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2", bVar"b'1",bVar"b'0"])]))), (Bop(And,bVar"b'24", Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'2"), Bop(And,Mop(Not,bVar"b'1"), bVar"b'0")))), Call ("CSet",CTy"CHERICOP2", Call ("CSetOffset",CTy"CSet", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6"])]))), (Bop(And,Mop(Not,bVar"b'24"),bVar"b'22"), Call ("CJALR",CTy"CHERICOP2", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And, Mop(Not,bVar"b'8"), Bop(And, Mop(Not, bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, Mop(Not, bVar"b'3"), Bop(And, Mop(Not, bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0"))))))))))))), Call ("CCall0",CTy"CHERICOP2", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And, Mop(Not,bVar"b'8"), Bop(And, Mop(Not, bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, Mop(Not, bVar"b'3"), Bop(And, Mop(Not, bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), bVar"b'0")))))))))))), Call ("CCall1",CTy"CHERICOP2", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])]))], Const ("UnknownCapInstruction",CTy"CHERICOP2")), Const("UnknownCapInstruction",CTy"CHERICOP2"))), (Mop(Not,bVar"b'25"), ITB([(Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,bVar"b'2", Bop(And,bVar"b'1", Mop(Not,bVar"b'0"))))), Const("DumpCapReg",CTy"CHERICOP2")), (Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And, Mop(Not,bVar"b'18"), Bop(And, Mop(Not,bVar"b'17"), Bop(And, Mop(Not, bVar"b'16"), Bop(And, Mop(Not, bVar"b'15"), Bop(And, Mop(Not, bVar"b'14"), Bop(And, Mop(Not, bVar"b'13"), Bop(And, Mop(Not, bVar"b'12"), Bop(And, Mop(Not, bVar"b'11"), Bop(And, bVar"b'2", Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0"))))))))))))))), Call ("CSet",CTy"CHERICOP2", Call ("CSetCause",CTy"CSet", Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"])))), (Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,bVar"b'2", Bop(And,Mop(Not,bVar"b'1"), bVar"b'0")))), Call ("CSet",CTy"CHERICOP2", Call ("CClearTag",CTy"CSet", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'2"), Bop(And,Mop(Not,bVar"b'1"), Mop(Not,bVar"b'0"))))), Call ("CSet",CTy"CHERICOP2", Call ("CAndPerm",CTy"CSet", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6"])]))), (Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,bVar"b'2", Bop(And,bVar"b'1",bVar"b'0")))), Call ("CSet",CTy"CHERICOP2", Call ("CFromPtr",CTy"CSet", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6"])]))), (Bop(And,bVar"b'24",Mop(Not,bVar"b'22")), Call ("CGet",CTy"CHERICOP2", Call ("CToPtr",CTy"CGet", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6"])]))), (Bop(And,bVar"b'24",bVar"b'22"), Call ("CPtrCmp",CTy"CHERICOP2", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 3), LL[bVar"b'2",bVar"b'1",bVar"b'0"])])), (Bop(And,Mop(Not,bVar"b'24"),bVar"b'22"), Const("CReturn",CTy"CHERICOP2"))], Const("UnknownCapInstruction",CTy"CHERICOP2")))], Const("UnknownCapInstruction",CTy"CHERICOP2"))), (bVar"b'25", ITE(Mop(Not,bVar"b'24"), ITB([(Bop(And,bVar"b'22",Mop(Not,bVar"b'21")), Call ("CSet",CTy"CHERICOP2", Call ("CSetBoundsImmediate",CTy"CSet", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 11), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5", bVar"b'4",bVar"b'3", bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'22"),bVar"b'21"), Call ("CSet",CTy"CHERICOP2", Call ("CIncOffsetImmediate",CTy"CSet", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 11), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5", bVar"b'4",bVar"b'3", bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,bVar"b'3", Bop(And,Mop(Not,bVar"b'1"), Mop(Not,bVar"b'0"))))), Call ("CLLx",CTy"CHERICOP2", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12",bVar"b'11"]), CC[Mop(Cast F1,LL[bVar"b'2"]),LW(0,2)]])), (Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,bVar"b'3", Bop(And,Mop(Not,bVar"b'1"), bVar"b'0")))), Call ("CLLx",CTy"CHERICOP2", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12",bVar"b'11"]), CC[Mop(Cast F1,LL[bVar"b'2"]),LW(1,2)]])), (Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,bVar"b'3", Bop(And,bVar"b'1", Mop(Not,bVar"b'0"))))), Call ("CLLx",CTy"CHERICOP2", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12",bVar"b'11"]), CC[Mop(Cast F1,LL[bVar"b'2"]),LW(2,2)]])), (Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,bVar"b'3", Bop(And,Mop(Not,bVar"b'2"), Bop(And,bVar"b'1",bVar"b'0"))))), Call ("CLLx",CTy"CHERICOP2", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12",bVar"b'11"]), LW(3,3)])), (Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,bVar"b'3", Bop(And,bVar"b'2", Bop(And,bVar"b'1",bVar"b'0"))))), Call ("CLLC",CTy"CHERICOP2", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12",bVar"b'11"])])), (Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'3"), Mop(Not,bVar"b'2")))), Call ("CSCx",CTy"CHERICOP2", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"]), Mop(Cast(FTy 2),LL[bVar"b'1",bVar"b'0"])])), (Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'3"), Bop(And,bVar"b'2", Bop(And,bVar"b'1",bVar"b'0"))))), Call ("CSCC",CTy"CHERICOP2", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"])]))], Const("UnknownCapInstruction",CTy"CHERICOP2")), Const("UnknownCapInstruction",CTy"CHERICOP2"))), (bVar"b'24", ITB([(Bop(And,bVar"b'22", Bop(And,bVar"b'21", Bop(And,Mop(Not,bVar"b'2"), Bop(And,Mop(Not,bVar"b'1"), Mop(Not,bVar"b'0"))))), Call ("CCheck",CTy"CHERICOP2", Call ("CCheckPerm",CTy"CCheck", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"])]))), (Bop(And,bVar"b'22", Bop(And,bVar"b'21", Bop(And,Mop(Not,bVar"b'2"), Bop(And,Mop(Not,bVar"b'1"),bVar"b'0")))), Call ("CCheck",CTy"CHERICOP2", Call ("CCheckType",CTy"CCheck", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'22"),bVar"b'21"), Call ("CBTU",CTy"CHERICOP2", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])])), (Bop(And,bVar"b'22",Mop(Not,bVar"b'21")), Call ("CBTS",CTy"CHERICOP2", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])])), (Bop(And,Mop(Not,bVar"b'22"),Mop(Not,bVar"b'21")), Call ("CJR",CTy"CHERICOP2", Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"])))], Const("UnknownCapInstruction",CTy"CHERICOP2"))), (Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And,Mop(Not,bVar"b'3"), Bop(And,Mop(Not,bVar"b'2"), Bop(And,bVar"b'1", Mop(Not,bVar"b'0")))))))), Call ("CGet",CTy"CHERICOP2", Call ("CGetBase",CTy"CGet", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And,Mop(Not,bVar"b'3"), Bop(And,Mop(Not,bVar"b'2"), Bop(And,bVar"b'1",bVar"b'0"))))))), Call ("CGet",CTy"CHERICOP2", Call ("CGetLen",CTy"CGet", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And,Mop(Not,bVar"b'3"), Bop(And,bVar"b'2", Bop(And,Mop(Not,bVar"b'1"), bVar"b'0"))))))), Call ("CGet",CTy"CHERICOP2", Call ("CGetTag",CTy"CGet", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And,Mop(Not,bVar"b'3"), Bop(And,bVar"b'2", Bop(And,bVar"b'1", Mop(Not,bVar"b'0")))))))), Call ("CGet",CTy"CHERICOP2", Call ("CGetSealed",CTy"CGet", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And,Mop(Not,bVar"b'3"), Bop(And,Mop(Not,bVar"b'2"), Bop(And,Mop(Not,bVar"b'1"), Mop(Not,bVar"b'0")))))))), Call ("CGet",CTy"CHERICOP2", Call ("CGetPerm",CTy"CGet", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And,Mop(Not,bVar"b'3"), Bop(And,Mop(Not,bVar"b'2"), Bop(And,Mop(Not,bVar"b'1"), bVar"b'0"))))))), Call ("CGet",CTy"CHERICOP2", Call ("CGetType",CTy"CGet", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'15"), Bop(And,Mop(Not,bVar"b'14"), Bop(And,Mop(Not,bVar"b'13"), Bop(And,Mop(Not,bVar"b'12"), Bop(And,Mop(Not,bVar"b'11"), Bop(And,bVar"b'10", Bop(And,bVar"b'9", Bop(And,bVar"b'8", Bop(And, bVar"b'7", Bop(And, bVar"b'6", Bop(And, bVar"b'5", Bop(And, bVar"b'4", Bop(And, bVar"b'3", Bop(And, bVar"b'2", Bop(And, bVar"b'1", bVar"b'0"))))))))))))))))), Call ("CGet",CTy"CHERICOP2", Call ("CGetPCC",CTy"CGet", Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"])))), (Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,bVar"b'8", Bop(And,bVar"b'7", Bop(And,bVar"b'6", Bop(And,bVar"b'5", Bop(And,bVar"b'4", Bop(And,bVar"b'3", Bop(And, bVar"b'2", Bop(And, bVar"b'1", bVar"b'0")))))))))))), Call ("CGet",CTy"CHERICOP2", Call ("CGetPCCSetOffset",CTy"CGet", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'15"), Bop(And,Mop(Not,bVar"b'14"), Bop(And,Mop(Not,bVar"b'13"), Bop(And,Mop(Not,bVar"b'12"), Bop(And,Mop(Not,bVar"b'11"), Bop(And,Mop(Not,bVar"b'5"), Bop(And, Mop(Not,bVar"b'4"), Bop(And, Mop(Not, bVar"b'3"), Bop(And, bVar"b'2", Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0"))))))))))))), Call ("CGet",CTy"CHERICOP2", Call ("CGetCause",CTy"CGet", Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"])))), (Bop(And,Mop(Not,bVar"b'22"),bVar"b'21"), Call ("CSet",CTy"CHERICOP2", Call ("CSetBounds",CTy"CSet", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"])]))), (Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And,bVar"b'3", Bop(And,Mop(Not,bVar"b'2"), Bop(And,Mop(Not,bVar"b'1"), bVar"b'0"))))))), Call ("CSet",CTy"CHERICOP2", Call ("CSetBoundsExact",CTy"CSet", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6"])]))), (Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And,bVar"b'3", Bop(And,Mop(Not,bVar"b'2"), Bop(And,bVar"b'1", Mop(Not,bVar"b'0")))))))), Call ("CSub",CTy"CHERICOP2", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6"])])), (Bop(And,bVar"b'22",Mop(Not,bVar"b'21")), Call ("CSeal",CTy"CHERICOP2", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6"])])), (Bop(And,bVar"b'22",bVar"b'21"), Call ("CUnseal",CTy"CHERICOP2", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6"])])), (Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,bVar"b'4", Bop(And,bVar"b'3", Bop(And,bVar"b'2", Bop(And,Mop(Not,bVar"b'1"), Mop(Not,bVar"b'0")))))))), Call ("CMOVN",CTy"CHERICOP2", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6"])])), (Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,bVar"b'4", Bop(And,bVar"b'3", Bop(And,Mop(Not,bVar"b'2"), Bop(And,bVar"b'1",bVar"b'0"))))))), Call ("CMOVZ",CTy"CHERICOP2", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6"])]))], Const("UnknownCapInstruction",CTy"CHERICOP2")))))) ; val LWC2Decode_def = Def ("LWC2Decode", TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),Var("offset",F8), Var("v",FTy 3)], CS(BL(3,Var("v",FTy 3)), [(TP[LF,bVar"t'1",bVar"t'0"], Call ("LWC2",CTy"instruction", Call ("CHERILWC2",CTy"LWC2", Call ("CLoad",CTy"CHERILWC2", TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",F8),LW(0,1), Mop(Cast(FTy 2),LL[bVar"t'1",bVar"t'0"])])))), (TP[LT,LF,LF], Call ("LWC2",CTy"instruction", Call ("CHERILWC2",CTy"LWC2", Call ("CLoad",CTy"CHERILWC2", TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",F8),LW(1,1),LW(0,2)])))), (TP[LT,LF,LT], Call ("LWC2",CTy"instruction", Call ("CHERILWC2",CTy"LWC2", Call ("CLoad",CTy"CHERILWC2", TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",F8),LW(1,1),LW(1,2)])))), (TP[LT,LT,LF], Call ("LWC2",CTy"instruction", Call ("CHERILWC2",CTy"LWC2", Call ("CLoad",CTy"CHERILWC2", TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",F8),LW(1,1),LW(2,2)])))), (TP[AVar bTy,AVar bTy,AVar bTy], Call ("COP2",CTy"instruction", Call ("CHERICOP2",CTy"COP2", Const("UnknownCapInstruction",CTy"CHERICOP2"))))])) ; val SWC2Decode_def = Def ("SWC2Decode", TP[Var("rs",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5),Var("offset",F8), Var("v",FTy 3)], CS(BL(3,Var("v",FTy 3)), [(TP[LF,bVar"t'1",bVar"t'0"], Call ("SWC2",CTy"instruction", Call ("CHERISWC2",CTy"SWC2", Call ("CStore",CTy"CHERISWC2", TP[Var("rs",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",F8), Mop(Cast(FTy 2),LL[bVar"t'1",bVar"t'0"])])))), (TP[AVar bTy,AVar bTy,AVar bTy], Call ("COP2",CTy"instruction", Call ("CHERICOP2",CTy"COP2", Const("UnknownCapInstruction",CTy"CHERICOP2"))))])) ; val LDC2Decode_def = Def ("LDC2Decode",Var("a",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 11)))), Call ("LDC2",CTy"instruction", Call ("CHERILDC2",CTy"LDC2", Call ("CLC",CTy"CHERILDC2", Var("a",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 11)))))))) ; val SDC2Decode_def = Def ("SDC2Decode",Var("a",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 11)))), Call ("SDC2",CTy"instruction", Call ("CHERISDC2",CTy"SDC2", Call ("CSC",CTy"CHERISDC2", Var("a",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 11)))))))) ; val Decode_def = Def ("Decode",Var("w",F32), Let(TP[bVar"b'31",bVar"b'30",bVar"b'29",bVar"b'28",bVar"b'27", bVar"b'26",bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16",bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"], BL(32,Var("w",F32)), ITB([(bVar"b'26", ITB([(bVar"b'28", ITB([(bVar"b'31", ITB([(bVar"b'30", ITB([(Bop(And,Mop(Not,bVar"b'29"), bVar"b'27"), Call ("Load",CTy"instruction", Call ("LD",CTy"Load", TP[Mop(Cast(FTy 5), LL[bVar"b'25", bVar"b'24", bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20", bVar"b'19", bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15", bVar"b'14", bVar"b'13", bVar"b'12", bVar"b'11", bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5", bVar"b'4",bVar"b'3", bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,bVar"b'29",bVar"b'27"), Call ("Store",CTy"instruction", Call ("SD",CTy"Store", TP[Mop(Cast(FTy 5), LL[bVar"b'25", bVar"b'24", bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20", bVar"b'19", bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15", bVar"b'14", bVar"b'13", bVar"b'12", bVar"b'11", bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5", bVar"b'4",bVar"b'3", bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'29"), Mop(Not,bVar"b'27")), Call ("LDC1Decode",CTy"instruction", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6", bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2", bVar"b'1",bVar"b'0"]), Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24", bVar"b'23",bVar"b'22", bVar"b'21"])])), (Bop(And,bVar"b'29", Mop(Not,bVar"b'27")), Call ("SDC1Decode",CTy"instruction", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6", bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2", bVar"b'1",bVar"b'0"]), Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24", bVar"b'23",bVar"b'22", bVar"b'21"])]))], Const ("ReservedInstruction", CTy"instruction"))), (Bop(And,Mop(Not,bVar"b'29"), Mop(Not,bVar"b'27")), Call ("Load",CTy"instruction", Call ("LHU",CTy"Load", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24", bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6", bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2", bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'29"),bVar"b'27"), Call ("Load",CTy"instruction", Call ("LWU",CTy"Load", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24", bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6", bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2", bVar"b'1",bVar"b'0"])]))), (Bop(And,bVar"b'29",Mop(Not,bVar"b'27")), Call ("Store",CTy"instruction", Call ("SDR",CTy"Store", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24", bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6", bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2", bVar"b'1",bVar"b'0"])]))), (Bop(And,bVar"b'29",bVar"b'27"), Call ("CACHE",CTy"instruction", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24", bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])]))], Const("ReservedInstruction",CTy"instruction"))), (Bop(And,Mop(Not,bVar"b'30"), Bop(And,Mop(Not,bVar"b'29"), Bop(And,bVar"b'27", Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And, Mop(Not,bVar"b'17"), Mop(Not,bVar"b'16")))))))), Call ("Branch",CTy"instruction", Call ("BGTZ",CTy"Branch", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'30"), Bop(And,bVar"b'29", Bop(And,bVar"b'27", Bop(And,Mop(Not,bVar"b'25"), Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And, Mop(Not,bVar"b'22"), Mop(Not,bVar"b'21")))))))), Call ("ArithI",CTy"instruction", Call ("LUI",CTy"ArithI", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,bVar"b'30", Bop(And,Mop(Not,bVar"b'29"), Bop(And,bVar"b'27", Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And, Mop(Not,bVar"b'17"), Mop(Not,bVar"b'16")))))))), Call ("Branch",CTy"instruction", Call ("BGTZL",CTy"Branch", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'30"), Bop(And,Mop(Not,bVar"b'29"), Mop(Not,bVar"b'27"))), Call ("Branch",CTy"instruction", Call ("BNE",CTy"Branch", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'30"), Bop(And,bVar"b'29",Mop(Not,bVar"b'27"))), Call ("ArithI",CTy"instruction", Call ("ORI",CTy"ArithI", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,bVar"b'30", Bop(And,Mop(Not,bVar"b'29"), Mop(Not,bVar"b'27"))), Call ("Branch",CTy"instruction", Call ("BNEL",CTy"Branch", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,bVar"b'30", Bop(And,bVar"b'29", Bop(And,bVar"b'27", Bop(And,Mop(Not,bVar"b'25"), Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And, Mop(Not,bVar"b'22"), Bop(And, Mop(Not, bVar"b'21"), Bop(And, Mop(Not, bVar"b'10"), Bop(And, Mop(Not, bVar"b'9"), Bop(And, Mop(Not, bVar"b'8"), Bop(And, Mop(Not, bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, bVar"b'5", Bop(And, bVar"b'4", Bop(And, bVar"b'3", Bop(And, Mop(Not, bVar"b'2"), Bop(And, bVar"b'1", bVar"b'0")))))))))))))))))), Call ("RDHWR",CTy"instruction", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"])]))], Const("ReservedInstruction",CTy"instruction"))), (bVar"b'29", ITB([(Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'30"), Mop(Not,bVar"b'27"))), Call ("ArithI",CTy"instruction", Call ("ADDIU",CTy"ArithI", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'30"),bVar"b'27")), Call ("ArithI",CTy"instruction", Call ("SLTIU",CTy"ArithI", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,bVar"b'30",Mop(Not,bVar"b'27"))), Call ("ArithI",CTy"instruction", Call ("DADDIU",CTy"ArithI", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,bVar"b'30",bVar"b'27")), Call ("Load",CTy"instruction", Call ("LDR",CTy"Load", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,bVar"b'31", Bop(And,Mop(Not,bVar"b'30"), Mop(Not,bVar"b'27"))), Call ("Store",CTy"instruction", Call ("SH",CTy"Store", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,bVar"b'31", Bop(And,Mop(Not,bVar"b'30"),bVar"b'27")), Call ("Store",CTy"instruction", Call ("SW",CTy"Store", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,bVar"b'31", Bop(And,bVar"b'30",Mop(Not,bVar"b'27"))), Call ("SWC1Decode",CTy"instruction", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"]), Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"])]))], Const("ReservedInstruction",CTy"instruction"))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'30"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And,Mop(Not,bVar"b'17"), Mop(Not,bVar"b'16")))))))), Call ("Branch",CTy"instruction", Call ("BLTZ",CTy"Branch", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'30"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And,Mop(Not,bVar"b'17"), bVar"b'16"))))))), Call ("Branch",CTy"instruction", Call ("BGEZ",CTy"Branch", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'30"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And,bVar"b'17", Mop(Not,bVar"b'16")))))))), Call ("Branch",CTy"instruction", Call ("BLTZL",CTy"Branch", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'30"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And,bVar"b'17",bVar"b'16"))))))), Call ("Branch",CTy"instruction", Call ("BGEZL",CTy"Branch", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'30"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,bVar"b'19", Bop(And,Mop(Not,bVar"b'18"), Bop(And,Mop(Not,bVar"b'17"), Mop(Not,bVar"b'16")))))))), Call ("Trap",CTy"instruction", Call ("TGEI",CTy"Trap", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'30"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,bVar"b'19", Bop(And,Mop(Not,bVar"b'18"), Bop(And,Mop(Not,bVar"b'17"), bVar"b'16"))))))), Call ("Trap",CTy"instruction", Call ("TGEIU",CTy"Trap", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'30"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,bVar"b'19", Bop(And,Mop(Not,bVar"b'18"), Bop(And,bVar"b'17", Mop(Not,bVar"b'16")))))))), Call ("Trap",CTy"instruction", Call ("TLTI",CTy"Trap", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'30"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,bVar"b'19", Bop(And,Mop(Not,bVar"b'18"), Bop(And,bVar"b'17",bVar"b'16"))))))), Call ("Trap",CTy"instruction", Call ("TLTIU",CTy"Trap", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'30"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,bVar"b'19", Bop(And,bVar"b'18", Bop(And,Mop(Not,bVar"b'17"), Mop(Not,bVar"b'16")))))))), Call ("Trap",CTy"instruction", Call ("TEQI",CTy"Trap", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'30"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,bVar"b'19", Bop(And,bVar"b'18", Bop(And,bVar"b'17", Mop(Not,bVar"b'16")))))))), Call ("Trap",CTy"instruction", Call ("TNEI",CTy"Trap", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'30"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,bVar"b'25", Bop(And,bVar"b'24", Bop(And,bVar"b'23", Bop(And,bVar"b'22", Bop(And,bVar"b'21", Bop(And,bVar"b'20", Bop(And, Mop(Not, bVar"b'19"), Mop(Not, bVar"b'18"))))))))))), Const("Unpredictable",CTy"instruction")), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'30"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,bVar"b'20", Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And,Mop(Not,bVar"b'17"), Mop(Not,bVar"b'16")))))))), Call ("Branch",CTy"instruction", Call ("BLTZAL",CTy"Branch", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'30"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,bVar"b'20", Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And,Mop(Not,bVar"b'17"), bVar"b'16"))))))), Call ("Branch",CTy"instruction", Call ("BGEZAL",CTy"Branch", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'30"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,bVar"b'20", Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And,bVar"b'17", Mop(Not,bVar"b'16")))))))), Call ("Branch",CTy"instruction", Call ("BLTZALL",CTy"Branch", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'30"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,bVar"b'20", Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And,bVar"b'17",bVar"b'16"))))))), Call ("Branch",CTy"instruction", Call ("BGEZALL",CTy"Branch", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'30"),bVar"b'27")), Call ("Branch",CTy"instruction", Call ("JAL",CTy"Branch", Mop(Cast(FTy 26), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21",bVar"b'20", bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16",bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12",bVar"b'11", bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4",bVar"b'3", bVar"b'2",bVar"b'1",bVar"b'0"])))), (Bop(And,bVar"b'31", Bop(And,Mop(Not,bVar"b'30"),Mop(Not,bVar"b'27"))), Call ("Load",CTy"instruction", Call ("LH",CTy"Load", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,bVar"b'31", Bop(And,Mop(Not,bVar"b'30"),bVar"b'27")), Call ("Load",CTy"instruction", Call ("LW",CTy"Load", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,bVar"b'30",Mop(Not,bVar"b'27"))), Call ("COP1Decode",CTy"instruction", Mop(Cast(FTy 26), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16",bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2", bVar"b'1",bVar"b'0"]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,bVar"b'30",bVar"b'27")), Call ("COP3Decode",CTy"instruction", Mop(Cast(FTy 26), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16",bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2", bVar"b'1",bVar"b'0"]))), (Bop(And,bVar"b'31", Bop(And,bVar"b'30",Mop(Not,bVar"b'27"))), Call ("LWC1Decode",CTy"instruction", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2", bVar"b'1",bVar"b'0"]), Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"])]))], Const("ReservedInstruction",CTy"instruction"))), (bVar"b'30", ITB([(bVar"b'29", ITB([(bVar"b'28", ITB([(Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'15"), Bop(And,Mop(Not,bVar"b'14"), Bop(And, Mop(Not,bVar"b'13"), Bop(And, Mop(Not,bVar"b'12"), Bop(And, Mop(Not, bVar"b'11"), Bop(And, Mop(Not, bVar"b'10"), Bop(And, Mop(Not, bVar"b'9"), Bop(And, Mop(Not, bVar"b'8"), Bop(And, Mop(Not, bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, Mop(Not, bVar"b'3"), Bop(And, Mop(Not, bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0")))))))))))))))))), Call ("MultDiv",CTy"instruction", Call ("MADD",CTy"MultDiv", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24", bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'15"), Bop(And,Mop(Not,bVar"b'14"), Bop(And, Mop(Not,bVar"b'13"), Bop(And, Mop(Not,bVar"b'12"), Bop(And, Mop(Not, bVar"b'11"), Bop(And, Mop(Not, bVar"b'10"), Bop(And, Mop(Not, bVar"b'9"), Bop(And, Mop(Not, bVar"b'8"), Bop(And, Mop(Not, bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, Mop(Not, bVar"b'3"), Bop(And, Mop(Not, bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), bVar"b'0"))))))))))))))))), Call ("MultDiv",CTy"instruction", Call ("MADDU",CTy"MultDiv", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24", bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'15"), Bop(And,Mop(Not,bVar"b'14"), Bop(And, Mop(Not,bVar"b'13"), Bop(And, Mop(Not,bVar"b'12"), Bop(And, Mop(Not, bVar"b'11"), Bop(And, Mop(Not, bVar"b'10"), Bop(And, Mop(Not, bVar"b'9"), Bop(And, Mop(Not, bVar"b'8"), Bop(And, Mop(Not, bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, Mop(Not, bVar"b'3"), Bop(And, bVar"b'2", Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0")))))))))))))))))), Call ("MultDiv",CTy"instruction", Call ("MSUB",CTy"MultDiv", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24", bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'15"), Bop(And,Mop(Not,bVar"b'14"), Bop(And, Mop(Not,bVar"b'13"), Bop(And, Mop(Not,bVar"b'12"), Bop(And, Mop(Not, bVar"b'11"), Bop(And, Mop(Not, bVar"b'10"), Bop(And, Mop(Not, bVar"b'9"), Bop(And, Mop(Not, bVar"b'8"), Bop(And, Mop(Not, bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, Mop(Not, bVar"b'3"), Bop(And, bVar"b'2", Bop(And, Mop(Not, bVar"b'1"), bVar"b'0"))))))))))))))))), Call ("MultDiv",CTy"instruction", Call ("MSUBU",CTy"MultDiv", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24", bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"])]))), (Bop(And,Mop(Not,bVar"b'31"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And, Mop(Not,bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, Mop(Not, bVar"b'3"), Bop(And, Mop(Not, bVar"b'2"), Bop(And, bVar"b'1", Mop(Not, bVar"b'0"))))))))))))), Call ("MultDiv",CTy"instruction", Call ("MUL",CTy"MultDiv", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24", bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,bVar"b'31",Mop(Not,bVar"b'27")), Call ("Store",CTy"instruction", Call ("SCD",CTy"Store", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24", bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6", bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2", bVar"b'1",bVar"b'0"])]))), (Bop(And,bVar"b'31",bVar"b'27"), Call ("SDC2Decode",CTy"instruction", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24", bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19", bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 11), LL[bVar"b'10",bVar"b'9", bVar"b'8",bVar"b'7",bVar"b'6", bVar"b'5",bVar"b'4",bVar"b'3", bVar"b'2",bVar"b'1",bVar"b'0"])]))], Const("ReservedInstruction",CTy"instruction"))), (Bop(And,Mop(Not,bVar"b'31"),Mop(Not,bVar"b'27")), Call ("ArithI",CTy"instruction", Call ("DADDI",CTy"ArithI", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'31"),bVar"b'27"), Call ("Load",CTy"instruction", Call ("LDL",CTy"Load", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,bVar"b'31",Mop(Not,bVar"b'27")), Call ("Store",CTy"instruction", Call ("SC",CTy"Store", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,bVar"b'31",bVar"b'27"), Call ("SWC2Decode",CTy"instruction", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast F8, LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6",bVar"b'5", bVar"b'4",bVar"b'3"]), Mop(Cast(FTy 3), LL[bVar"b'2",bVar"b'1",bVar"b'0"])]))], Const("ReservedInstruction",CTy"instruction"))), (bVar"b'31", ITB([(Bop(And,Mop(Not,bVar"b'28"),Mop(Not,bVar"b'27")), Call ("Load",CTy"instruction", Call ("LL",CTy"Load", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,bVar"b'28",Mop(Not,bVar"b'27")), Call ("Load",CTy"instruction", Call ("LLD",CTy"Load", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'28"),bVar"b'27"), Call ("LWC2Decode",CTy"instruction", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast F8, LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6",bVar"b'5", bVar"b'4",bVar"b'3"]), Mop(Cast(FTy 3), LL[bVar"b'2",bVar"b'1",bVar"b'0"])])), (Bop(And,bVar"b'28",bVar"b'27"), Call ("LDC2Decode",CTy"instruction", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 11), LL[bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6",bVar"b'5", bVar"b'4",bVar"b'3",bVar"b'2", bVar"b'1",bVar"b'0"])]))], Const("ReservedInstruction",CTy"instruction"))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,bVar"b'25", Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And, Mop(Not,bVar"b'20"), Bop(And, Mop(Not,bVar"b'19"), Bop(And, Mop(Not, bVar"b'18"), Bop(And, Mop(Not, bVar"b'17"), Bop(And, Mop(Not, bVar"b'16"), Bop(And, Mop(Not, bVar"b'15"), Bop(And, Mop(Not, bVar"b'14"), Bop(And, Mop(Not, bVar"b'13"), Bop(And, Mop(Not, bVar"b'12"), Bop(And, Mop(Not, bVar"b'11"), Bop(And, Mop(Not, bVar"b'10"), Bop(And, Mop(Not, bVar"b'9"), Bop(And, Mop(Not, bVar"b'8"), Bop(And, Mop(Not, bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, Mop(Not, bVar"b'3"), Bop(And, Mop(Not, bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), bVar"b'0"))))))))))))))))))))))))))), Const("TLBR",CTy"instruction")), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,bVar"b'25", Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And, Mop(Not,bVar"b'20"), Bop(And, Mop(Not,bVar"b'19"), Bop(And, Mop(Not, bVar"b'18"), Bop(And, Mop(Not, bVar"b'17"), Bop(And, Mop(Not, bVar"b'16"), Bop(And, Mop(Not, bVar"b'15"), Bop(And, Mop(Not, bVar"b'14"), Bop(And, Mop(Not, bVar"b'13"), Bop(And, Mop(Not, bVar"b'12"), Bop(And, Mop(Not, bVar"b'11"), Bop(And, Mop(Not, bVar"b'10"), Bop(And, Mop(Not, bVar"b'9"), Bop(And, Mop(Not, bVar"b'8"), Bop(And, Mop(Not, bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, Mop(Not, bVar"b'3"), Bop(And, Mop(Not, bVar"b'2"), Bop(And, bVar"b'1", Mop(Not, bVar"b'0")))))))))))))))))))))))))))), Const("TLBWI",CTy"instruction")), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,bVar"b'25", Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And, Mop(Not,bVar"b'20"), Bop(And, Mop(Not,bVar"b'19"), Bop(And, Mop(Not, bVar"b'18"), Bop(And, Mop(Not, bVar"b'17"), Bop(And, Mop(Not, bVar"b'16"), Bop(And, Mop(Not, bVar"b'15"), Bop(And, Mop(Not, bVar"b'14"), Bop(And, Mop(Not, bVar"b'13"), Bop(And, Mop(Not, bVar"b'12"), Bop(And, Mop(Not, bVar"b'11"), Bop(And, Mop(Not, bVar"b'10"), Bop(And, Mop(Not, bVar"b'9"), Bop(And, Mop(Not, bVar"b'8"), Bop(And, Mop(Not, bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, Mop(Not, bVar"b'3"), Bop(And, bVar"b'2", Bop(And, bVar"b'1", Mop(Not, bVar"b'0")))))))))))))))))))))))))))), Const("TLBWR",CTy"instruction")), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,bVar"b'25", Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And, Mop(Not,bVar"b'20"), Bop(And, Mop(Not,bVar"b'19"), Bop(And, Mop(Not, bVar"b'18"), Bop(And, Mop(Not, bVar"b'17"), Bop(And, Mop(Not, bVar"b'16"), Bop(And, Mop(Not, bVar"b'15"), Bop(And, Mop(Not, bVar"b'14"), Bop(And, Mop(Not, bVar"b'13"), Bop(And, Mop(Not, bVar"b'12"), Bop(And, Mop(Not, bVar"b'11"), Bop(And, Mop(Not, bVar"b'10"), Bop(And, Mop(Not, bVar"b'9"), Bop(And, Mop(Not, bVar"b'8"), Bop(And, Mop(Not, bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, bVar"b'3", Bop(And, Mop(Not, bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0")))))))))))))))))))))))))))), Const("TLBP",CTy"instruction")), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,bVar"b'25", Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And, Mop(Not,bVar"b'20"), Bop(And, Mop(Not,bVar"b'19"), Bop(And, Mop(Not, bVar"b'18"), Bop(And, Mop(Not, bVar"b'17"), Bop(And, Mop(Not, bVar"b'16"), Bop(And, Mop(Not, bVar"b'15"), Bop(And, Mop(Not, bVar"b'14"), Bop(And, Mop(Not, bVar"b'13"), Bop(And, Mop(Not, bVar"b'12"), Bop(And, Mop(Not, bVar"b'11"), Bop(And, Mop(Not, bVar"b'10"), Bop(And, Mop(Not, bVar"b'9"), Bop(And, Mop(Not, bVar"b'8"), Bop(And, Mop(Not, bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, bVar"b'4", Bop(And, bVar"b'3", Bop(And, Mop(Not, bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0")))))))))))))))))))))))))))), Const("ERET",CTy"instruction")), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'25"), Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And, Mop(Not,bVar"b'10"), Bop(And, Mop(Not,bVar"b'9"), Bop(And, Mop(Not, bVar"b'8"), Bop(And, Mop(Not, bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, Mop(Not, bVar"b'4"), Mop(Not, bVar"b'3"))))))))))))))), Call ("CP",CTy"instruction", Call ("MFC0",CTy"CP", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 3), LL[bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'25"), Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,bVar"b'21", Bop(And, Mop(Not,bVar"b'10"), Bop(And, Mop(Not,bVar"b'9"), Bop(And, Mop(Not, bVar"b'8"), Bop(And, Mop(Not, bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, Mop(Not, bVar"b'4"), Mop(Not, bVar"b'3"))))))))))))))), Call ("CP",CTy"instruction", Call ("DMFC0",CTy"CP", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 3), LL[bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'25"), Bop(And,Mop(Not,bVar"b'24"), Bop(And,bVar"b'23", Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And, Mop(Not,bVar"b'10"), Bop(And, Mop(Not,bVar"b'9"), Bop(And, Mop(Not, bVar"b'8"), Bop(And, Mop(Not, bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, Mop(Not, bVar"b'4"), Mop(Not, bVar"b'3"))))))))))))))), Call ("CP",CTy"instruction", Call ("MTC0",CTy"CP", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 3), LL[bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'25"), Bop(And,Mop(Not,bVar"b'24"), Bop(And,bVar"b'23", Bop(And,Mop(Not,bVar"b'22"), Bop(And,bVar"b'21", Bop(And, Mop(Not,bVar"b'10"), Bop(And, Mop(Not,bVar"b'9"), Bop(And, Mop(Not, bVar"b'8"), Bop(And, Mop(Not, bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, Mop(Not, bVar"b'4"), Mop(Not, bVar"b'3"))))))))))))))), Call ("CP",CTy"instruction", Call ("DMTC0",CTy"CP", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11"]), Mop(Cast(FTy 3), LL[bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,bVar"b'28", Bop(And,bVar"b'27", Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And,Mop(Not,bVar"b'17"), Mop(Not,bVar"b'16"))))))), Call ("Branch",CTy"instruction", Call ("BLEZL",CTy"Branch", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,bVar"b'28",Mop(Not,bVar"b'27")), Call ("Branch",CTy"instruction", Call ("BEQL",CTy"Branch", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,bVar"b'25", Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And, Mop(Not,bVar"b'20"), Bop(And, Mop(Not,bVar"b'19"), Bop(And, Mop(Not, bVar"b'18"), Bop(And, Mop(Not, bVar"b'17"), Bop(And, Mop(Not, bVar"b'16"), Bop(And, Mop(Not, bVar"b'15"), Bop(And, Mop(Not, bVar"b'14"), Bop(And, Mop(Not, bVar"b'13"), Bop(And, Mop(Not, bVar"b'12"), Bop(And, Mop(Not, bVar"b'11"), Bop(And, Mop(Not, bVar"b'10"), Bop(And, Mop(Not, bVar"b'9"), Bop(And, Mop(Not, bVar"b'8"), Bop(And, Mop(Not, bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, bVar"b'5", Bop(And, Mop(Not, bVar"b'4"), Bop(And, Mop(Not, bVar"b'3"), Bop(And, Mop(Not, bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0")))))))))))))))))))))))))))), Const("WAIT",CTy"instruction")), (Bop(And,Mop(Not,bVar"b'28"),bVar"b'27"), Call ("COP2Decode",CTy"instruction", Mop(Cast(FTy 26), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16",bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2", bVar"b'1",bVar"b'0"])))], Const("ReservedInstruction",CTy"instruction"))), (bVar"b'31", ITB([(bVar"b'29", ITB([(Bop(And,Mop(Not,bVar"b'28"),Mop(Not,bVar"b'27")), Call ("Store",CTy"instruction", Call ("SB",CTy"Store", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'28"),bVar"b'27"), Call ("Store",CTy"instruction", Call ("SWL",CTy"Store", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,bVar"b'28",Mop(Not,bVar"b'27")), Call ("Store",CTy"instruction", Call ("SDL",CTy"Store", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])]))), (Bop(And,bVar"b'28",bVar"b'27"), Call ("Store",CTy"instruction", Call ("SWR",CTy"Store", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1", bVar"b'0"])])))], Const("ReservedInstruction",CTy"instruction"))), (Bop(And,Mop(Not,bVar"b'28"),Mop(Not,bVar"b'27")), Call ("Load",CTy"instruction", Call ("LB",CTy"Load", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'28"),bVar"b'27"), Call ("Load",CTy"instruction", Call ("LWL",CTy"Load", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,bVar"b'28",Mop(Not,bVar"b'27")), Call ("Load",CTy"instruction", Call ("LBU",CTy"Load", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,bVar"b'28",bVar"b'27"), Call ("Load",CTy"instruction", Call ("LWR",CTy"Load", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])])))], Const("ReservedInstruction",CTy"instruction"))), (bVar"b'29", ITB([(Bop(And,Mop(Not,bVar"b'28"),Mop(Not,bVar"b'27")), Call ("ArithI",CTy"instruction", Call ("ADDI",CTy"ArithI", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,Mop(Not,bVar"b'28"),bVar"b'27"), Call ("ArithI",CTy"instruction", Call ("SLTI",CTy"ArithI", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,bVar"b'28",Mop(Not,bVar"b'27")), Call ("ArithI",CTy"instruction", Call ("ANDI",CTy"ArithI", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,bVar"b'28",bVar"b'27"), Call ("ArithI",CTy"instruction", Call ("XORI",CTy"ArithI", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23", bVar"b'22",bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13", bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])])))], Const("ReservedInstruction",CTy"instruction"))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And, Mop(Not,bVar"b'3"), Bop(And, Mop(Not,bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), bVar"b'0")))))))))))), Call ("MOVCIDecode",CTy"instruction", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])])), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'25"), Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And, Mop(Not,bVar"b'3"), Bop(And, Mop(Not,bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0"))))))))))))), Call ("Shift",CTy"instruction", Call ("SLL",CTy"Shift", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'25"), Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And, Mop(Not,bVar"b'3"), Bop(And, Mop(Not,bVar"b'2"), Bop(And, bVar"b'1", Mop(Not, bVar"b'0"))))))))))))), Call ("Shift",CTy"instruction", Call ("SRL",CTy"Shift", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'25"), Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And, Mop(Not,bVar"b'3"), Bop(And, Mop(Not,bVar"b'2"), Bop(And, bVar"b'1", bVar"b'0")))))))))))), Call ("Shift",CTy"instruction", Call ("SRA",CTy"Shift", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And, Mop(Not,bVar"b'3"), Bop(And,bVar"b'2", Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0"))))))))))))), Call ("Shift",CTy"instruction", Call ("SLLV",CTy"Shift", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And, Mop(Not,bVar"b'3"), Bop(And,bVar"b'2", Bop(And, bVar"b'1", Mop(Not, bVar"b'0"))))))))))))), Call ("Shift",CTy"instruction", Call ("SRLV",CTy"Shift", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And, Mop(Not,bVar"b'3"), Bop(And,bVar"b'2", Bop(And, bVar"b'1", bVar"b'0")))))))))))), Call ("Shift",CTy"instruction", Call ("SRAV",CTy"Shift", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And,Mop(Not,bVar"b'17"), Bop(And,Mop(Not,bVar"b'16"), Bop(And,Mop(Not,bVar"b'15"), Bop(And,Mop(Not,bVar"b'14"), Bop(And, Mop(Not,bVar"b'13"), Bop(And, Mop(Not, bVar"b'12"), Bop(And, Mop(Not, bVar"b'11"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, bVar"b'3", Bop(And, Mop(Not, bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0")))))))))))))))))), Call ("Branch",CTy"instruction", Call ("JR",CTy"Branch", Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"])))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And,Mop(Not,bVar"b'17"), Bop(And,Mop(Not,bVar"b'16"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And,bVar"b'3", Bop(And, Mop(Not,bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), bVar"b'0")))))))))))), Call ("Branch",CTy"instruction", Call ("JALR",CTy"Branch", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And,bVar"b'3", Bop(And, Mop(Not,bVar"b'2"), Bop(And, bVar"b'1", Mop(Not, bVar"b'0"))))))))))))), Call ("ArithR",CTy"instruction", Call ("MOVZ",CTy"ArithR", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And,bVar"b'3", Bop(And, Mop(Not,bVar"b'2"), Bop(And, bVar"b'1", bVar"b'0")))))))))))), Call ("ArithR",CTy"instruction", Call ("MOVN",CTy"ArithR", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'25"), Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And,bVar"b'3", Bop(And,bVar"b'2", Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0"))))))))))))), Const("SYSCALL",CTy"instruction")), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'25"), Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,Mop(Not,bVar"b'4"), Bop(And,bVar"b'3", Bop(And,bVar"b'2", Bop(And, Mop(Not, bVar"b'1"), bVar"b'0")))))))))))), Const("BREAK",CTy"instruction")), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'25"), Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And, Mop(Not,bVar"b'18"), Bop(And, Mop(Not, bVar"b'17"), Bop(And, Mop(Not, bVar"b'16"), Bop(And, Mop(Not, bVar"b'15"), Bop(And, Mop(Not, bVar"b'14"), Bop(And, Mop(Not, bVar"b'13"), Bop(And, Mop(Not, bVar"b'12"), Bop(And, Mop(Not, bVar"b'11"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, Mop(Not, bVar"b'4"), Bop(And, bVar"b'3", Bop(And, bVar"b'2", Bop(And, bVar"b'1", bVar"b'0")))))))))))))))))))))), Call ("SYNC",CTy"instruction", Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6"]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'25"), Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And, Mop(Not,bVar"b'18"), Bop(And, Mop(Not, bVar"b'17"), Bop(And, Mop(Not, bVar"b'16"), Bop(And, Mop(Not, bVar"b'10"), Bop(And, Mop(Not, bVar"b'9"), Bop(And, Mop(Not, bVar"b'8"), Bop(And, Mop(Not, bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, bVar"b'4", Bop(And, Mop(Not, bVar"b'3"), Bop(And, Mop(Not, bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0"))))))))))))))))))))))), Call ("MultDiv",CTy"instruction", Call ("MFHI",CTy"MultDiv", Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And,Mop(Not,bVar"b'17"), Bop(And,Mop(Not,bVar"b'16"), Bop(And,Mop(Not,bVar"b'15"), Bop(And,Mop(Not,bVar"b'14"), Bop(And, Mop(Not,bVar"b'13"), Bop(And, Mop(Not, bVar"b'12"), Bop(And, Mop(Not, bVar"b'11"), Bop(And, Mop(Not, bVar"b'10"), Bop(And, Mop(Not, bVar"b'9"), Bop(And, Mop(Not, bVar"b'8"), Bop(And, Mop(Not, bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, bVar"b'4", Bop(And, Mop(Not, bVar"b'3"), Bop(And, Mop(Not, bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), bVar"b'0")))))))))))))))))))))), Call ("MultDiv",CTy"instruction", Call ("MTHI",CTy"MultDiv", Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"])))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'25"), Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And, Mop(Not,bVar"b'18"), Bop(And, Mop(Not, bVar"b'17"), Bop(And, Mop(Not, bVar"b'16"), Bop(And, Mop(Not, bVar"b'10"), Bop(And, Mop(Not, bVar"b'9"), Bop(And, Mop(Not, bVar"b'8"), Bop(And, Mop(Not, bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, bVar"b'4", Bop(And, Mop(Not, bVar"b'3"), Bop(And, Mop(Not, bVar"b'2"), Bop(And, bVar"b'1", Mop(Not, bVar"b'0"))))))))))))))))))))))), Call ("MultDiv",CTy"instruction", Call ("MFLO",CTy"MultDiv", Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And,Mop(Not,bVar"b'17"), Bop(And,Mop(Not,bVar"b'16"), Bop(And,Mop(Not,bVar"b'15"), Bop(And,Mop(Not,bVar"b'14"), Bop(And, Mop(Not,bVar"b'13"), Bop(And, Mop(Not, bVar"b'12"), Bop(And, Mop(Not, bVar"b'11"), Bop(And, Mop(Not, bVar"b'10"), Bop(And, Mop(Not, bVar"b'9"), Bop(And, Mop(Not, bVar"b'8"), Bop(And, Mop(Not, bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, bVar"b'4", Bop(And, Mop(Not, bVar"b'3"), Bop(And, Mop(Not, bVar"b'2"), Bop(And, bVar"b'1", bVar"b'0")))))))))))))))))))))), Call ("MultDiv",CTy"instruction", Call ("MTLO",CTy"MultDiv", Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"])))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,bVar"b'4", Bop(And, Mop(Not,bVar"b'3"), Bop(And,bVar"b'2", Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0"))))))))))))), Call ("Shift",CTy"instruction", Call ("DSLLV",CTy"Shift", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,bVar"b'4", Bop(And, Mop(Not,bVar"b'3"), Bop(And,bVar"b'2", Bop(And, bVar"b'1", Mop(Not, bVar"b'0"))))))))))))), Call ("Shift",CTy"instruction", Call ("DSRLV",CTy"Shift", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,Mop(Not,bVar"b'5"), Bop(And,bVar"b'4", Bop(And, Mop(Not,bVar"b'3"), Bop(And,bVar"b'2", Bop(And, bVar"b'1", bVar"b'0")))))))))))), Call ("Shift",CTy"instruction", Call ("DSRAV",CTy"Shift", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'15"), Bop(And,Mop(Not,bVar"b'14"), Bop(And,Mop(Not,bVar"b'13"), Bop(And,Mop(Not,bVar"b'12"), Bop(And,Mop(Not,bVar"b'11"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And, Mop(Not,bVar"b'8"), Bop(And, Mop(Not,bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, bVar"b'4", Bop(And, bVar"b'3", Bop(And, Mop(Not, bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0")))))))))))))))))), Call ("MultDiv",CTy"instruction", Call ("MULT",CTy"MultDiv", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'15"), Bop(And,Mop(Not,bVar"b'14"), Bop(And,Mop(Not,bVar"b'13"), Bop(And,Mop(Not,bVar"b'12"), Bop(And,Mop(Not,bVar"b'11"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And, Mop(Not,bVar"b'8"), Bop(And, Mop(Not,bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, bVar"b'4", Bop(And, bVar"b'3", Bop(And, Mop(Not, bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), bVar"b'0"))))))))))))))))), Call ("MultDiv",CTy"instruction", Call ("MULTU",CTy"MultDiv", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'15"), Bop(And,Mop(Not,bVar"b'14"), Bop(And,Mop(Not,bVar"b'13"), Bop(And,Mop(Not,bVar"b'12"), Bop(And,Mop(Not,bVar"b'11"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And, Mop(Not,bVar"b'8"), Bop(And, Mop(Not,bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, bVar"b'4", Bop(And, bVar"b'3", Bop(And, Mop(Not, bVar"b'2"), Bop(And, bVar"b'1", Mop(Not, bVar"b'0")))))))))))))))))), Call ("MultDiv",CTy"instruction", Call ("DIV",CTy"MultDiv", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'15"), Bop(And,Mop(Not,bVar"b'14"), Bop(And,Mop(Not,bVar"b'13"), Bop(And,Mop(Not,bVar"b'12"), Bop(And,Mop(Not,bVar"b'11"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And, Mop(Not,bVar"b'8"), Bop(And, Mop(Not,bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, bVar"b'4", Bop(And, bVar"b'3", Bop(And, Mop(Not, bVar"b'2"), Bop(And, bVar"b'1", bVar"b'0"))))))))))))))))), Call ("MultDiv",CTy"instruction", Call ("DIVU",CTy"MultDiv", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'15"), Bop(And,Mop(Not,bVar"b'14"), Bop(And,Mop(Not,bVar"b'13"), Bop(And,Mop(Not,bVar"b'12"), Bop(And,Mop(Not,bVar"b'11"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And, Mop(Not,bVar"b'8"), Bop(And, Mop(Not,bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, bVar"b'4", Bop(And, bVar"b'3", Bop(And, bVar"b'2", Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0")))))))))))))))))), Call ("MultDiv",CTy"instruction", Call ("DMULT",CTy"MultDiv", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'15"), Bop(And,Mop(Not,bVar"b'14"), Bop(And,Mop(Not,bVar"b'13"), Bop(And,Mop(Not,bVar"b'12"), Bop(And,Mop(Not,bVar"b'11"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And, Mop(Not,bVar"b'8"), Bop(And, Mop(Not,bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, bVar"b'4", Bop(And, bVar"b'3", Bop(And, bVar"b'2", Bop(And, Mop(Not, bVar"b'1"), bVar"b'0"))))))))))))))))), Call ("MultDiv",CTy"instruction", Call ("DMULTU",CTy"MultDiv", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'15"), Bop(And,Mop(Not,bVar"b'14"), Bop(And,Mop(Not,bVar"b'13"), Bop(And,Mop(Not,bVar"b'12"), Bop(And,Mop(Not,bVar"b'11"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And, Mop(Not,bVar"b'8"), Bop(And, Mop(Not,bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, bVar"b'4", Bop(And, bVar"b'3", Bop(And, bVar"b'2", Bop(And, bVar"b'1", Mop(Not, bVar"b'0")))))))))))))))))), Call ("MultDiv",CTy"instruction", Call ("DDIV",CTy"MultDiv", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'15"), Bop(And,Mop(Not,bVar"b'14"), Bop(And,Mop(Not,bVar"b'13"), Bop(And,Mop(Not,bVar"b'12"), Bop(And,Mop(Not,bVar"b'11"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And, Mop(Not,bVar"b'8"), Bop(And, Mop(Not,bVar"b'7"), Bop(And, Mop(Not, bVar"b'6"), Bop(And, Mop(Not, bVar"b'5"), Bop(And, bVar"b'4", Bop(And, bVar"b'3", Bop(And, bVar"b'2", Bop(And, bVar"b'1", bVar"b'0"))))))))))))))))), Call ("MultDiv",CTy"instruction", Call ("DDIVU",CTy"MultDiv", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,bVar"b'5", Bop(And,Mop(Not,bVar"b'4"), Bop(And, Mop(Not,bVar"b'3"), Bop(And, Mop(Not,bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0"))))))))))))), Call ("ArithR",CTy"instruction", Call ("ADD",CTy"ArithR", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,bVar"b'5", Bop(And,Mop(Not,bVar"b'4"), Bop(And, Mop(Not,bVar"b'3"), Bop(And, Mop(Not,bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), bVar"b'0")))))))))))), Call ("ArithR",CTy"instruction", Call ("ADDU",CTy"ArithR", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,bVar"b'5", Bop(And,Mop(Not,bVar"b'4"), Bop(And, Mop(Not,bVar"b'3"), Bop(And, Mop(Not,bVar"b'2"), Bop(And, bVar"b'1", Mop(Not, bVar"b'0"))))))))))))), Call ("ArithR",CTy"instruction", Call ("SUB",CTy"ArithR", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,bVar"b'5", Bop(And,Mop(Not,bVar"b'4"), Bop(And, Mop(Not,bVar"b'3"), Bop(And, Mop(Not,bVar"b'2"), Bop(And, bVar"b'1", bVar"b'0")))))))))))), Call ("ArithR",CTy"instruction", Call ("SUBU",CTy"ArithR", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,bVar"b'5", Bop(And,Mop(Not,bVar"b'4"), Bop(And, Mop(Not,bVar"b'3"), Bop(And,bVar"b'2", Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0"))))))))))))), Call ("ArithR",CTy"instruction", Call ("AND",CTy"ArithR", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,bVar"b'5", Bop(And,Mop(Not,bVar"b'4"), Bop(And, Mop(Not,bVar"b'3"), Bop(And,bVar"b'2", Bop(And, Mop(Not, bVar"b'1"), bVar"b'0")))))))))))), Call ("ArithR",CTy"instruction", Call ("OR",CTy"ArithR", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,bVar"b'5", Bop(And,Mop(Not,bVar"b'4"), Bop(And, Mop(Not,bVar"b'3"), Bop(And,bVar"b'2", Bop(And, bVar"b'1", Mop(Not, bVar"b'0"))))))))))))), Call ("ArithR",CTy"instruction", Call ("XOR",CTy"ArithR", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,bVar"b'5", Bop(And,Mop(Not,bVar"b'4"), Bop(And, Mop(Not,bVar"b'3"), Bop(And,bVar"b'2", Bop(And, bVar"b'1", bVar"b'0")))))))))))), Call ("ArithR",CTy"instruction", Call ("NOR",CTy"ArithR", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,bVar"b'5", Bop(And,Mop(Not,bVar"b'4"), Bop(And,bVar"b'3", Bop(And, Mop(Not,bVar"b'2"), Bop(And, bVar"b'1", Mop(Not, bVar"b'0"))))))))))))), Call ("ArithR",CTy"instruction", Call ("SLT",CTy"ArithR", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,bVar"b'5", Bop(And,Mop(Not,bVar"b'4"), Bop(And,bVar"b'3", Bop(And, Mop(Not,bVar"b'2"), Bop(And, bVar"b'1", bVar"b'0")))))))))))), Call ("ArithR",CTy"instruction", Call ("SLTU",CTy"ArithR", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,bVar"b'5", Bop(And,Mop(Not,bVar"b'4"), Bop(And,bVar"b'3", Bop(And,bVar"b'2", Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0"))))))))))))), Call ("ArithR",CTy"instruction", Call ("DADD",CTy"ArithR", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,bVar"b'5", Bop(And,Mop(Not,bVar"b'4"), Bop(And,bVar"b'3", Bop(And,bVar"b'2", Bop(And, Mop(Not, bVar"b'1"), bVar"b'0")))))))))))), Call ("ArithR",CTy"instruction", Call ("DADDU",CTy"ArithR", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,bVar"b'5", Bop(And,Mop(Not,bVar"b'4"), Bop(And,bVar"b'3", Bop(And,bVar"b'2", Bop(And, bVar"b'1", Mop(Not, bVar"b'0"))))))))))))), Call ("ArithR",CTy"instruction", Call ("DSUB",CTy"ArithR", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'10"), Bop(And,Mop(Not,bVar"b'9"), Bop(And,Mop(Not,bVar"b'8"), Bop(And,Mop(Not,bVar"b'7"), Bop(And,Mop(Not,bVar"b'6"), Bop(And,bVar"b'5", Bop(And,Mop(Not,bVar"b'4"), Bop(And,bVar"b'3", Bop(And,bVar"b'2", Bop(And, bVar"b'1", bVar"b'0")))))))))))), Call ("ArithR",CTy"instruction", Call ("DSUBU",CTy"ArithR", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,bVar"b'5", Bop(And,bVar"b'4", Bop(And,Mop(Not,bVar"b'3"), Bop(And,Mop(Not,bVar"b'2"), Bop(And,Mop(Not,bVar"b'1"), Mop(Not,bVar"b'0")))))))), Call ("Trap",CTy"instruction", Call ("TGE",CTy"Trap", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,bVar"b'5", Bop(And,bVar"b'4", Bop(And,Mop(Not,bVar"b'3"), Bop(And,Mop(Not,bVar"b'2"), Bop(And,Mop(Not,bVar"b'1"),bVar"b'0"))))))), Call ("Trap",CTy"instruction", Call ("TGEU",CTy"Trap", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,bVar"b'5", Bop(And,bVar"b'4", Bop(And,Mop(Not,bVar"b'3"), Bop(And,Mop(Not,bVar"b'2"), Bop(And,bVar"b'1",Mop(Not,bVar"b'0")))))))), Call ("Trap",CTy"instruction", Call ("TLT",CTy"Trap", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,bVar"b'5", Bop(And,bVar"b'4", Bop(And,Mop(Not,bVar"b'3"), Bop(And,Mop(Not,bVar"b'2"), Bop(And,bVar"b'1",bVar"b'0"))))))), Call ("Trap",CTy"instruction", Call ("TLTU",CTy"Trap", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,bVar"b'5", Bop(And,bVar"b'4", Bop(And,Mop(Not,bVar"b'3"), Bop(And,bVar"b'2", Bop(And,Mop(Not,bVar"b'1"), Mop(Not,bVar"b'0")))))))), Call ("Trap",CTy"instruction", Call ("TEQ",CTy"Trap", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,bVar"b'5", Bop(And,bVar"b'4", Bop(And,Mop(Not,bVar"b'3"), Bop(And,bVar"b'2", Bop(And,bVar"b'1",Mop(Not,bVar"b'0")))))))), Call ("Trap",CTy"instruction", Call ("TNE",CTy"Trap", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'25"), Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,bVar"b'5", Bop(And,bVar"b'4", Bop(And,bVar"b'3", Bop(And, Mop(Not,bVar"b'2"), Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0"))))))))))))), Call ("Shift",CTy"instruction", Call ("DSLL",CTy"Shift", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'25"), Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,bVar"b'5", Bop(And,bVar"b'4", Bop(And,bVar"b'3", Bop(And, Mop(Not,bVar"b'2"), Bop(And, bVar"b'1", Mop(Not, bVar"b'0"))))))))))))), Call ("Shift",CTy"instruction", Call ("DSRL",CTy"Shift", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'25"), Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,bVar"b'5", Bop(And,bVar"b'4", Bop(And,bVar"b'3", Bop(And, Mop(Not,bVar"b'2"), Bop(And, bVar"b'1", bVar"b'0")))))))))))), Call ("Shift",CTy"instruction", Call ("DSRA",CTy"Shift", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'25"), Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,bVar"b'5", Bop(And,bVar"b'4", Bop(And,bVar"b'3", Bop(And,bVar"b'2", Bop(And, Mop(Not, bVar"b'1"), Mop(Not, bVar"b'0"))))))))))))), Call ("Shift",CTy"instruction", Call ("DSLL32",CTy"Shift", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'25"), Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,bVar"b'5", Bop(And,bVar"b'4", Bop(And,bVar"b'3", Bop(And,bVar"b'2", Bop(And, bVar"b'1", Mop(Not, bVar"b'0"))))))))))))), Call ("Shift",CTy"instruction", Call ("DSRL32",CTy"Shift", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6"])]))), (Bop(And,Mop(Not,bVar"b'28"), Bop(And,Mop(Not,bVar"b'27"), Bop(And,Mop(Not,bVar"b'25"), Bop(And,Mop(Not,bVar"b'24"), Bop(And,Mop(Not,bVar"b'23"), Bop(And,Mop(Not,bVar"b'22"), Bop(And,Mop(Not,bVar"b'21"), Bop(And,bVar"b'5", Bop(And,bVar"b'4", Bop(And,bVar"b'3", Bop(And,bVar"b'2", Bop(And, bVar"b'1", bVar"b'0")))))))))))), Call ("Shift",CTy"instruction", Call ("DSRA32",CTy"Shift", TP[Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast(FTy 5), LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11"]), Mop(Cast(FTy 5), LL[bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7", bVar"b'6"])]))), (Bop(And,Mop(Not,bVar"b'28"),bVar"b'27"), Call ("Branch",CTy"instruction", Call ("J",CTy"Branch", Mop(Cast(FTy 26), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18", bVar"b'17",bVar"b'16",bVar"b'15",bVar"b'14", bVar"b'13",bVar"b'12",bVar"b'11",bVar"b'10", bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2", bVar"b'1",bVar"b'0"])))), (Bop(And,bVar"b'28", Bop(And,bVar"b'27", Bop(And,Mop(Not,bVar"b'20"), Bop(And,Mop(Not,bVar"b'19"), Bop(And,Mop(Not,bVar"b'18"), Bop(And,Mop(Not,bVar"b'17"), Mop(Not,bVar"b'16"))))))), Call ("Branch",CTy"instruction", Call ("BLEZ",CTy"Branch", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), (Bop(And,bVar"b'28",Mop(Not,bVar"b'27")), Call ("Branch",CTy"instruction", Call ("BEQ",CTy"Branch", TP[Mop(Cast(FTy 5), LL[bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", bVar"b'21"]), Mop(Cast(FTy 5), LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", bVar"b'16"]), Mop(Cast F16, LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8", bVar"b'7",bVar"b'6",bVar"b'5",bVar"b'4", bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])])))], Const("ReservedInstruction",CTy"instruction")))) ; val COP1InstructionToString_def = Def ("COP1InstructionToString",Var("i",CTy"instruction"), CS(Var("i",CTy"instruction"), [(Call("COP1",CTy"instruction",Var("j",CTy"COP1")), CS(Var("j",CTy"COP1"), [(Call("ABS_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy,TP[LS"abs.d",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call("ABS_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy,TP[LS"abs.s",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call ("ADD_D",CTy"COP1", TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]), Call ("op3fpr",sTy, TP[LS"add.d",Var("fd",FTy 5),Var("fs",FTy 5), Var("ft",FTy 5)])), (Call ("ADD_S",CTy"COP1", TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]), Call ("op3fpr",sTy, TP[LS"add.s",Var("fd",FTy 5),Var("fs",FTy 5), Var("ft",FTy 5)])), (Call("BC1F",CTy"COP1",TP[Var("i",F16),Var("cc",FTy 3)]), CC[Mop(PadRight,TP[LSC #" ",LN 12,CC[LS"bc1f",LS" "]]), ITE(EQ(Var("cc",FTy 3),LW(0,3)),LS"", CC[LS"$fcc", Mop(Cast sTy,Mop(Cast nTy,Var("cc",FTy 3))),LS", "]), Call ("ihex",sTy, Bop(Lsl,Mop(Cast F32,Bop(Add,Var("i",F16),LW(1,16))), LN 2))]), (Call("BC1FL",CTy"COP1",TP[Var("i",F16),Var("cc",FTy 3)]), CC[Mop(PadRight,TP[LSC #" ",LN 12,CC[LS"bc1fl",LS" "]]), ITE(EQ(Var("cc",FTy 3),LW(0,3)),LS"", CC[LS"$fcc", Mop(Cast sTy,Mop(Cast nTy,Var("cc",FTy 3))),LS", "]), Call ("ihex",sTy, Bop(Lsl,Mop(Cast F32,Bop(Add,Var("i",F16),LW(1,16))), LN 2))]), (Call("BC1T",CTy"COP1",TP[Var("i",F16),Var("cc",FTy 3)]), CC[Mop(PadRight,TP[LSC #" ",LN 12,CC[LS"bc1t",LS" "]]), ITE(EQ(Var("cc",FTy 3),LW(0,3)),LS"", CC[LS"$fcc", Mop(Cast sTy,Mop(Cast nTy,Var("cc",FTy 3))),LS", "]), Call ("ihex",sTy, Bop(Lsl,Mop(Cast F32,Bop(Add,Var("i",F16),LW(1,16))), LN 2))]), (Call("BC1TL",CTy"COP1",TP[Var("i",F16),Var("cc",FTy 3)]), CC[Mop(PadRight,TP[LSC #" ",LN 12,CC[LS"bc1tl",LS" "]]), ITE(EQ(Var("cc",FTy 3),LW(0,3)),LS"", CC[LS"$fcc", Mop(Cast sTy,Mop(Cast nTy,Var("cc",FTy 3))),LS", "]), Call ("ihex",sTy, Bop(Lsl,Mop(Cast F32,Bop(Add,Var("i",F16),LW(1,16))), LN 2))]), (Call ("C_cond_D",CTy"COP1", TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(0,3),Var("cc",FTy 3)]), Call ("op2ccfpr",sTy, TP[LS"c.f.d",Var("fs",FTy 5),Var("ft",FTy 5), Var("cc",FTy 3)])), (Call ("C_cond_D",CTy"COP1", TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(1,3),Var("cc",FTy 3)]), Call ("op2ccfpr",sTy, TP[LS"c.un.d",Var("fs",FTy 5),Var("ft",FTy 5), Var("cc",FTy 3)])), (Call ("C_cond_D",CTy"COP1", TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(2,3),Var("cc",FTy 3)]), Call ("op2ccfpr",sTy, TP[LS"c.eq.d",Var("fs",FTy 5),Var("ft",FTy 5), Var("cc",FTy 3)])), (Call ("C_cond_D",CTy"COP1", TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(3,3),Var("cc",FTy 3)]), Call ("op2ccfpr",sTy, TP[LS"c.ueq.d",Var("fs",FTy 5),Var("ft",FTy 5), Var("cc",FTy 3)])), (Call ("C_cond_D",CTy"COP1", TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(4,3),Var("cc",FTy 3)]), Call ("op2ccfpr",sTy, TP[LS"c.olt.d",Var("fs",FTy 5),Var("ft",FTy 5), Var("cc",FTy 3)])), (Call ("C_cond_D",CTy"COP1", TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(5,3),Var("cc",FTy 3)]), Call ("op2ccfpr",sTy, TP[LS"c.ult.d",Var("fs",FTy 5),Var("ft",FTy 5), Var("cc",FTy 3)])), (Call ("C_cond_D",CTy"COP1", TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(6,3),Var("cc",FTy 3)]), Call ("op2ccfpr",sTy, TP[LS"c.ole.d",Var("fs",FTy 5),Var("ft",FTy 5), Var("cc",FTy 3)])), (Call ("C_cond_D",CTy"COP1", TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(7,3),Var("cc",FTy 3)]), Call ("op2ccfpr",sTy, TP[LS"c.ule.d",Var("fs",FTy 5),Var("ft",FTy 5), Var("cc",FTy 3)])), (Call ("C_cond_S",CTy"COP1", TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(0,3),Var("cc",FTy 3)]), Call ("op2ccfpr",sTy, TP[LS"c.f.s",Var("fs",FTy 5),Var("ft",FTy 5), Var("cc",FTy 3)])), (Call ("C_cond_S",CTy"COP1", TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(1,3),Var("cc",FTy 3)]), Call ("op2ccfpr",sTy, TP[LS"c.un.s",Var("fs",FTy 5),Var("ft",FTy 5), Var("cc",FTy 3)])), (Call ("C_cond_S",CTy"COP1", TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(2,3),Var("cc",FTy 3)]), Call ("op2ccfpr",sTy, TP[LS"c.eq.s",Var("fs",FTy 5),Var("ft",FTy 5), Var("cc",FTy 3)])), (Call ("C_cond_S",CTy"COP1", TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(3,3),Var("cc",FTy 3)]), Call ("op2ccfpr",sTy, TP[LS"c.ueq.s",Var("fs",FTy 5),Var("ft",FTy 5), Var("cc",FTy 3)])), (Call ("C_cond_S",CTy"COP1", TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(4,3),Var("cc",FTy 3)]), Call ("op2ccfpr",sTy, TP[LS"c.olt.s",Var("fs",FTy 5),Var("ft",FTy 5), Var("cc",FTy 3)])), (Call ("C_cond_S",CTy"COP1", TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(5,3),Var("cc",FTy 3)]), Call ("op2ccfpr",sTy, TP[LS"c.ult.s",Var("fs",FTy 5),Var("ft",FTy 5), Var("cc",FTy 3)])), (Call ("C_cond_S",CTy"COP1", TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(6,3),Var("cc",FTy 3)]), Call ("op2ccfpr",sTy, TP[LS"c.ole.s",Var("fs",FTy 5),Var("ft",FTy 5), Var("cc",FTy 3)])), (Call ("C_cond_S",CTy"COP1", TP[Var("fs",FTy 5),Var("ft",FTy 5),LW(7,3),Var("cc",FTy 3)]), Call ("op2ccfpr",sTy, TP[LS"c.ule.s",Var("fs",FTy 5),Var("ft",FTy 5), Var("cc",FTy 3)])), (Call ("CEIL_L_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"ceil.l.d",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call ("CEIL_L_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"ceil.l.s",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call ("CEIL_W_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"ceil.w.d",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call ("CEIL_W_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"ceil.w.s",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call("CFC1",CTy"COP1",TP[Var("rt",FTy 5),Var("fs",FTy 5)]), Call ("op2rcfpr",sTy, TP[LS"cfc1",Var("rt",FTy 5),Var("fs",FTy 5)])), (Call("CTC1",CTy"COP1",TP[Var("rt",FTy 5),Var("fs",FTy 5)]), Call ("op2rcfpr",sTy, TP[LS"ctc1",Var("rt",FTy 5),Var("fs",FTy 5)])), (Call("CVT_D_L",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"cvt.d.l",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call("CVT_D_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"cvt.d.s",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call("CVT_D_W",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"cvt.d.w",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call("CVT_L_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"cvt.l.d",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call("CVT_L_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"cvt.l.s",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call("CVT_S_L",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"cvt.s.l",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call("CVT_S_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"cvt.s.d",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call("CVT_S_W",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"cvt.s.w",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call("CVT_W_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"cvt.w.d",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call("CVT_W_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"cvt.w.s",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call ("DIV_D",CTy"COP1", TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]), Call ("op3fpr",sTy, TP[LS"div.d",Var("fd",FTy 5),Var("fs",FTy 5), Var("ft",FTy 5)])), (Call ("DIV_S",CTy"COP1", TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]), Call ("op3fpr",sTy, TP[LS"div.s",Var("fd",FTy 5),Var("fs",FTy 5), Var("ft",FTy 5)])), (Call("DMFC1",CTy"COP1",TP[Var("rt",FTy 5),Var("fs",FTy 5)]), Call ("op2rfpr",sTy, TP[LS"dmfc1",Var("rt",FTy 5),Var("fs",FTy 5)])), (Call("DMTC1",CTy"COP1",TP[Var("rt",FTy 5),Var("fs",FTy 5)]), Call ("op2rfpr",sTy, TP[LS"dmtc1",Var("rt",FTy 5),Var("fs",FTy 5)])), (Call ("FLOOR_L_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"floor.l.d",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call ("FLOOR_L_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"floor.l.s",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call ("FLOOR_W_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"floor.w.d",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call ("FLOOR_W_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"floor.w.s",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call ("LDC1",CTy"COP1", TP[Var("ft",FTy 5),Var("offset",F16),Var("base",FTy 5)]), Call ("opfpmem",sTy, TP[LS"ldc1",Var("ft",FTy 5),Var("base",FTy 5), Var("offset",F16)])), (Call ("LDXC1",CTy"COP1", TP[Var("fs",FTy 5),Var("index",FTy 5),Var("base",FTy 5)]), Call ("opfpmem2",sTy, TP[LS"ldxc1",Var("fs",FTy 5),Var("base",FTy 5), Var("index",FTy 5)])), (Call ("LWC1",CTy"COP1", TP[Var("ft",FTy 5),Var("offset",F16),Var("base",FTy 5)]), Call ("opfpmem",sTy, TP[LS"lwc1",Var("ft",FTy 5),Var("base",FTy 5), Var("offset",F16)])), (Call ("LWXC1",CTy"COP1", TP[Var("ft",FTy 5),Var("index",FTy 5),Var("base",FTy 5)]), Call ("opfpmem2",sTy, TP[LS"lwxc1",Var("ft",FTy 5),Var("base",FTy 5), Var("index",FTy 5)])), (Call("MFC1",CTy"COP1",TP[Var("rt",FTy 5),Var("fs",FTy 5)]), Call ("op2rfpr",sTy,TP[LS"mfc1",Var("rt",FTy 5),Var("fs",FTy 5)])), (Call ("MADD_D",CTy"COP1", TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5), Var("ft",FTy 5)]), Call ("op4fpr",sTy, TP[LS"madd.d",Var("fd",FTy 5),Var("fr",FTy 5), Var("fs",FTy 5),Var("ft",FTy 5)])), (Call ("MADD_S",CTy"COP1", TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5), Var("ft",FTy 5)]), Call ("op4fpr",sTy, TP[LS"madd.s",Var("fd",FTy 5),Var("fr",FTy 5), Var("fs",FTy 5),Var("ft",FTy 5)])), (Call ("MSUB_D",CTy"COP1", TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5), Var("ft",FTy 5)]), Call ("op4fpr",sTy, TP[LS"msub.d",Var("fd",FTy 5),Var("fr",FTy 5), Var("fs",FTy 5),Var("ft",FTy 5)])), (Call ("MSUB_S",CTy"COP1", TP[Var("fd",FTy 5),Var("fr",FTy 5),Var("fs",FTy 5), Var("ft",FTy 5)]), Call ("op4fpr",sTy, TP[LS"msub.s",Var("fd",FTy 5),Var("fr",FTy 5), Var("fs",FTy 5),Var("ft",FTy 5)])), (Call("MOV_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy,TP[LS"mov.d",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call("MOV_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy,TP[LS"mov.s",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call ("MOVF",CTy"COP1", TP[Var("rd",FTy 5),Var("rs",FTy 5),Var("cc",FTy 3)]), CC[Call ("op2r",sTy,TP[LS"movf",Var("rd",FTy 5),Var("rs",FTy 5)]), LS", $fcc",Mop(Cast sTy,Mop(Cast nTy,Var("cc",FTy 3)))]), (Call ("MOVF_D",CTy"COP1", TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)]), CC[Call ("op2fpr",sTy, TP[LS"movf.d",Var("fd",FTy 5),Var("fs",FTy 5)]), LS", $fcc",Mop(Cast sTy,Mop(Cast nTy,Var("cc",FTy 3)))]), (Call ("MOVF_S",CTy"COP1", TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)]), CC[Call ("op2fpr",sTy, TP[LS"movf.s",Var("fd",FTy 5),Var("fs",FTy 5)]), LS", $fcc",Mop(Cast sTy,Mop(Cast nTy,Var("cc",FTy 3)))]), (Call ("MOVN_D",CTy"COP1", TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)]), CC[Call ("op2fpr",sTy, TP[LS"movn.d",Var("fd",FTy 5),Var("fs",FTy 5)]),LS", ", Call("reg_name",sTy,Var("rt",FTy 5))]), (Call ("MOVN_S",CTy"COP1", TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)]), CC[Call ("op2fpr",sTy, TP[LS"movn.s",Var("fd",FTy 5),Var("fs",FTy 5)]),LS", ", Call("reg_name",sTy,Var("rt",FTy 5))]), (Call ("MOVT",CTy"COP1", TP[Var("rd",FTy 5),Var("rs",FTy 5),Var("cc",FTy 3)]), CC[Call ("op2r",sTy,TP[LS"movt",Var("rd",FTy 5),Var("rs",FTy 5)]), LS", ",LS", $fcc", Mop(Cast sTy,Mop(Cast nTy,Var("cc",FTy 3)))]), (Call ("MOVT_D",CTy"COP1", TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)]), CC[Call ("op2fpr",sTy, TP[LS"movt.d",Var("fd",FTy 5),Var("fs",FTy 5)]), LS", $fcc",Mop(Cast sTy,Mop(Cast nTy,Var("cc",FTy 3)))]), (Call ("MOVT_S",CTy"COP1", TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("cc",FTy 3)]), CC[Call ("op2fpr",sTy, TP[LS"movt.s",Var("fd",FTy 5),Var("fs",FTy 5)]), LS", $fcc",Mop(Cast sTy,Mop(Cast nTy,Var("cc",FTy 3)))]), (Call ("MOVZ_D",CTy"COP1", TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)]), CC[Call ("op2fpr",sTy, TP[LS"movz.d",Var("fd",FTy 5),Var("fs",FTy 5)]),LS", ", Call("reg_name",sTy,Var("rt",FTy 5))]), (Call ("MOVZ_S",CTy"COP1", TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("rt",FTy 5)]), CC[Call ("op2fpr",sTy, TP[LS"movz.s",Var("fd",FTy 5),Var("fs",FTy 5)]),LS", ", Call("reg_name",sTy,Var("rt",FTy 5))]), (Call("MTC1",CTy"COP1",TP[Var("rt",FTy 5),Var("fs",FTy 5)]), Call ("op2rfpr",sTy,TP[LS"mtc1",Var("rt",FTy 5),Var("fs",FTy 5)])), (Call ("MUL_D",CTy"COP1", TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]), Call ("op3fpr",sTy, TP[LS"mul.d",Var("fd",FTy 5),Var("fs",FTy 5), Var("ft",FTy 5)])), (Call ("MUL_S",CTy"COP1", TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]), Call ("op3fpr",sTy, TP[LS"mul.s",Var("fd",FTy 5),Var("fs",FTy 5), Var("ft",FTy 5)])), (Call("NEG_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy,TP[LS"neg.d",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call("NEG_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy,TP[LS"neg.s",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call ("ROUND_L_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"round.l.d",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call ("ROUND_L_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"round.l.s",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call ("ROUND_W_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"round.w.d",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call ("ROUND_W_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"round.w.s",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call ("SDC1",CTy"COP1", TP[Var("ft",FTy 5),Var("offset",F16),Var("base",FTy 5)]), Call ("opfpmem",sTy, TP[LS"sdc1",Var("ft",FTy 5),Var("base",FTy 5), Var("offset",F16)])), (Call ("SDXC1",CTy"COP1", TP[Var("fs",FTy 5),Var("index",FTy 5),Var("base",FTy 5)]), Call ("opfpmem2",sTy, TP[LS"sdxc1",Var("fs",FTy 5),Var("base",FTy 5), Var("index",FTy 5)])), (Call ("SWC1",CTy"COP1", TP[Var("ft",FTy 5),Var("offset",F16),Var("base",FTy 5)]), Call ("opfpmem",sTy, TP[LS"swc1",Var("ft",FTy 5),Var("base",FTy 5), Var("offset",F16)])), (Call ("SWXC1",CTy"COP1", TP[Var("ft",FTy 5),Var("offset",FTy 5),Var("base",FTy 5)]), Call ("opfpmem2",sTy, TP[LS"swxc1",Var("ft",FTy 5),Var("base",FTy 5), Var("offset",FTy 5)])), (Call ("SUB_D",CTy"COP1", TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]), Call ("op3fpr",sTy, TP[LS"sub.d",Var("fd",FTy 5),Var("fs",FTy 5), Var("ft",FTy 5)])), (Call ("SUB_S",CTy"COP1", TP[Var("fd",FTy 5),Var("fs",FTy 5),Var("ft",FTy 5)]), Call ("op3fpr",sTy, TP[LS"sub.s",Var("fd",FTy 5),Var("fs",FTy 5), Var("ft",FTy 5)])), (Call("SQRT_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"sqrt.d",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call("SQRT_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"sqrt.s",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call ("TRUNC_L_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"trunc.l.d",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call ("TRUNC_L_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"trunc.l.s",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call ("TRUNC_W_D",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"trunc.w.d",Var("fd",FTy 5),Var("fs",FTy 5)])), (Call ("TRUNC_W_S",CTy"COP1",TP[Var("fd",FTy 5),Var("fs",FTy 5)]), Call ("op2fpr",sTy, TP[LS"trunc.w.s",Var("fd",FTy 5),Var("fs",FTy 5)])), (Const("UnknownFPInstruction",CTy"COP1"), LS"Unknown floating point instruction")])), (AVar(CTy"instruction"),LS"Unmatched floating point instruction")])) ; val COP1Encode_def = Def ("COP1Encode",Var("i",CTy"instruction"),CC[LW(17,6),LW(0,26)]) ; val gr_def = Def ("gr",Var("n",FTy 5), CC[LS"$",Mop(Cast sTy,Mop(Cast nTy,Var("n",FTy 5)))]) ; val cr_def = Def ("cr",Var("n",FTy 5), CC[LS"c",Mop(Cast sTy,Mop(Cast nTy,Var("n",FTy 5)))]) ; val imm_def = Def ("imm",Var("n",BTy"N"), ITE(Bop(Ult,Var("n",BTy"N"),LY(10,"N")),Mop(Cast sTy,Var("n",BTy"N")), CC[LS"0x",Mop(ToLower,Mop(Cast sTy,Var("n",BTy"N")))])) ; val op_cr_def = Def ("op_cr",TP[sVar"op",Var("cr1",FTy 5)], CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]), Call("cr",sTy,Var("cr1",FTy 5))]) ; val op_gr_def = Def ("op_gr",TP[sVar"op",Var("r1",FTy 5)], CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]), Call("gr",sTy,Var("r1",FTy 5))]) ; val op_gr_imm_def = Def ("op_gr_imm",TP[sVar"op",Var("gr1",FTy 5),Var("i",BTy"N")], CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]), Call("gr",sTy,Var("gr1",FTy 5)),LS", ", Call("imm",sTy,Var("i",BTy"N"))]) ; val op_cr_imm_def = Def ("op_cr_imm",TP[sVar"op",Var("cr1",FTy 5),Var("i",BTy"N")], CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]), Call("cr",sTy,Var("cr1",FTy 5)),LS", ", Call("imm",sTy,Var("i",BTy"N"))]) ; val op_cr_gr_def = Def ("op_cr_gr",TP[sVar"op",Var("cr1",FTy 5),Var("r1",FTy 5)], CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]), Call("cr",sTy,Var("cr1",FTy 5)),LS", ", Call("gr",sTy,Var("r1",FTy 5))]) ; val op_gr_cr_def = Def ("op_gr_cr",TP[sVar"op",Var("r1",FTy 5),Var("cr1",FTy 5)], CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]), Call("gr",sTy,Var("r1",FTy 5)),LS", ", Call("cr",sTy,Var("cr1",FTy 5))]) ; val op_cr_cr_def = Def ("op_cr_cr",TP[sVar"op",Var("cr1",FTy 5),Var("cr2",FTy 5)], CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]), Call("cr",sTy,Var("cr1",FTy 5)),LS", ", Call("cr",sTy,Var("cr2",FTy 5))]) ; val op_cr_cr_gr_def = Def ("op_cr_cr_gr", TP[sVar"op",Var("cr1",FTy 5),Var("cr2",FTy 5),Var("r1",FTy 5)], CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]), Call("cr",sTy,Var("cr1",FTy 5)),LS", ", Call("cr",sTy,Var("cr2",FTy 5)),LS", ", Call("gr",sTy,Var("r1",FTy 5))]) ; val op_cr_cr_imm_def = Def ("op_cr_cr_imm", TP[sVar"op",Var("cr1",FTy 5),Var("cr2",FTy 5),Var("i",BTy"N")], CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]), Call("cr",sTy,Var("cr1",FTy 5)),LS", ", Call("cr",sTy,Var("cr2",FTy 5)),LS", ", Call("imm",sTy,Var("i",BTy"N"))]) ; val op_cr_cr_cr_def = Def ("op_cr_cr_cr", TP[sVar"op",Var("cr1",FTy 5),Var("cr2",FTy 5),Var("cr3",FTy 5)], CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]), Call("cr",sTy,Var("cr1",FTy 5)),LS", ", Call("cr",sTy,Var("cr2",FTy 5)),LS", ", Call("cr",sTy,Var("cr3",FTy 5))]) ; val op_gr_cr_cr_def = Def ("op_gr_cr_cr", TP[sVar"op",Var("r1",FTy 5),Var("cr1",FTy 5),Var("cr2",FTy 5)], CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]), Call("gr",sTy,Var("r1",FTy 5)),LS", ", Call("cr",sTy,Var("cr1",FTy 5)),LS", ", Call("cr",sTy,Var("cr2",FTy 5))]) ; val op_gr_cr_gr_imm_def = Def ("op_gr_cr_gr_imm", TP[sVar"op",Var("r1",FTy 5),Var("cr1",FTy 5),Var("r2",FTy 5), Var("i",BTy"N")], CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]), Call("gr",sTy,Var("r1",FTy 5)),LS", ", Call("cr",sTy,Var("cr1",FTy 5)),LS", ", Call("gr",sTy,Var("r2",FTy 5)),LS", ", Call("imm",sTy,Var("i",BTy"N"))]) ; val op_cr_cr_gr_imm_def = Def ("op_cr_cr_gr_imm", TP[sVar"op",Var("cr1",FTy 5),Var("cr2",FTy 5),Var("r1",FTy 5), Var("i",BTy"N")], CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]), Call("cr",sTy,Var("cr1",FTy 5)),LS", ", Call("cr",sTy,Var("cr2",FTy 5)),LS", ", Call("gr",sTy,Var("r1",FTy 5)),LS", ", Call("imm",sTy,Var("i",BTy"N"))]) ; val op_gr_gr_cr_def = Def ("op_gr_gr_cr", TP[sVar"op",Var("r1",FTy 5),Var("r2",FTy 5),Var("cr1",FTy 5)], CC[Mop(PadRight,TP[LSC #" ",LN 12,sVar"op"]), Call("gr",sTy,Var("r1",FTy 5)),LS", ", Call("gr",sTy,Var("r2",FTy 5)),LS", ", Call("cr",sTy,Var("cr1",FTy 5))]) ; val COP2InstructionToString_def = Def ("COP2InstructionToString",Var("i",CTy"instruction"), CS(Var("i",CTy"instruction"), [(Call ("COP2",CTy"instruction", Call("CHERICOP2",CTy"COP2",Var("j",CTy"CHERICOP2"))), CS(Var("j",CTy"CHERICOP2"), [(Const("DumpCapReg",CTy"CHERICOP2"),LS"mtc2 ?,?,6"), (Call ("CGet",CTy"CHERICOP2", Call ("CGetBase",CTy"CGet", TP[Var("rd",FTy 5),Var("cb",FTy 5)])), Call ("op_gr_cr",sTy, TP[LS"cgetbase",Var("rd",FTy 5),Var("cb",FTy 5)])), (Call ("CGet",CTy"CHERICOP2", Call ("CGetOffset",CTy"CGet", TP[Var("rd",FTy 5),Var("cb",FTy 5)])), Call ("op_gr_cr",sTy, TP[LS"cgetoffset",Var("rd",FTy 5),Var("cb",FTy 5)])), (Call ("CGet",CTy"CHERICOP2", Call ("CGetLen",CTy"CGet",TP[Var("rd",FTy 5),Var("cb",FTy 5)])), Call ("op_gr_cr",sTy, TP[LS"cgetlen",Var("rd",FTy 5),Var("cb",FTy 5)])), (Call ("CGet",CTy"CHERICOP2", Call ("CGetTag",CTy"CGet",TP[Var("rd",FTy 5),Var("cb",FTy 5)])), Call ("op_gr_cr",sTy, TP[LS"cgettag",Var("rd",FTy 5),Var("cb",FTy 5)])), (Call ("CGet",CTy"CHERICOP2", Call ("CGetSealed",CTy"CGet", TP[Var("rd",FTy 5),Var("cb",FTy 5)])), Call ("op_gr_cr",sTy, TP[LS"cgetsealed",Var("rd",FTy 5),Var("cb",FTy 5)])), (Call ("CGet",CTy"CHERICOP2", Call ("CGetPerm",CTy"CGet", TP[Var("rd",FTy 5),Var("cb",FTy 5)])), Call ("op_gr_cr",sTy, TP[LS"cgetperm",Var("rd",FTy 5),Var("cb",FTy 5)])), (Call ("CGet",CTy"CHERICOP2", Call ("CGetType",CTy"CGet", TP[Var("rd",FTy 5),Var("cb",FTy 5)])), Call ("op_gr_cr",sTy, TP[LS"cgettype",Var("rd",FTy 5),Var("cb",FTy 5)])), (Call ("CGet",CTy"CHERICOP2", Call("CGetPCC",CTy"CGet",Var("cd",FTy 5))), Call("op_cr",sTy,TP[LS"cgetpcc",Var("cd",FTy 5)])), (Call ("CGet",CTy"CHERICOP2", Call ("CGetPCCSetOffset",CTy"CGet", TP[Var("cd",FTy 5),Var("rs",FTy 5)])), Call ("op_cr_gr",sTy, TP[LS"cgetpccsetoffset",Var("cd",FTy 5),Var("rs",FTy 5)])), (Call ("CGet",CTy"CHERICOP2", Call("CGetCause",CTy"CGet",Var("rd",FTy 5))), Call("op_gr",sTy,TP[LS"cgetcause",Var("rd",FTy 5)])), (Call ("CSet",CTy"CHERICOP2", Call("CSetCause",CTy"CSet",Var("rt",FTy 5))), Call("op_gr",sTy,TP[LS"csetcause",Var("rt",FTy 5)])), (Call ("CSet",CTy"CHERICOP2", Call ("CSetBounds",CTy"CSet", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)])), Call ("op_cr_cr_gr",sTy, TP[LS"csetbounds",Var("cd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5)])), (Call ("CSet",CTy"CHERICOP2", Call ("CSetBoundsExact",CTy"CSet", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)])), Call ("op_cr_cr_gr",sTy, TP[LS"csetboundsexact",Var("cd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5)])), (Call ("CSet",CTy"CHERICOP2", Call ("CSetBoundsImmediate",CTy"CSet", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("len",FTy 11)])), Call ("op_cr_cr_imm",sTy, TP[LS"csetboundsimmediate",Var("cd",FTy 5), Var("cb",FTy 5),Var("len",FTy 11)])), (Call ("CSet",CTy"CHERICOP2", Call ("CIncOffset",CTy"CSet", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)])), Call ("op_cr_cr_gr",sTy, TP[LS"cincoffset",Var("cd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5)])), (Call ("CSet",CTy"CHERICOP2", Call ("CIncOffsetImmediate",CTy"CSet", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("inc",FTy 11)])), Call ("op_cr_cr_imm",sTy, TP[LS"cincoffsetimmediate",Var("cd",FTy 5), Var("cb",FTy 5),Var("inc",FTy 11)])), (Call ("CSet",CTy"CHERICOP2", Call ("CClearRegs",CTy"CSet", TP[Var("regset",FTy 5),Var("mask",F16)])), Call ("op_gr_imm",sTy, TP[LS"cclearregs",Var("regset",FTy 5),Var("mask",F16)])), (Call ("CSet",CTy"CHERICOP2", Call ("CClearTag",CTy"CSet", TP[Var("cd",FTy 5),Var("cb",FTy 5)])), Call ("op_cr_cr",sTy, TP[LS"ccleartag",Var("cd",FTy 5),Var("cb",FTy 5)])), (Call ("CSet",CTy"CHERICOP2", Call ("CAndPerm",CTy"CSet", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)])), Call ("op_cr_cr_gr",sTy, TP[LS"candperm",Var("cd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5)])), (Call ("CSet",CTy"CHERICOP2", Call ("CSetOffset",CTy"CSet", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)])), Call ("op_cr_cr_gr",sTy, TP[LS"csetoffset",Var("cd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5)])), (Call ("CSub",CTy"CHERICOP2", TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("ct",FTy 5)]), Call ("op_gr_cr_cr",sTy, TP[LS"csub",Var("rd",FTy 5),Var("cb",FTy 5), Var("ct",FTy 5)])), (Call ("CCheck",CTy"CHERICOP2", Call ("CCheckPerm",CTy"CCheck", TP[Var("cs",FTy 5),Var("rt",FTy 5)])), Call ("op_cr_gr",sTy, TP[LS"ccheckperm",Var("cs",FTy 5),Var("rt",FTy 5)])), (Call ("CCheck",CTy"CHERICOP2", Call ("CCheckType",CTy"CCheck", TP[Var("cs",FTy 5),Var("cb",FTy 5)])), Call ("op_cr_cr",sTy, TP[LS"cchecktype",Var("cs",FTy 5),Var("cb",FTy 5)])), (Call ("CSet",CTy"CHERICOP2", Call ("CFromPtr",CTy"CSet", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)])), Call ("op_cr_cr_gr",sTy, TP[LS"cfromptr",Var("cd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5)])), (Call ("CGet",CTy"CHERICOP2", Call ("CToPtr",CTy"CGet", TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("ct",FTy 5)])), Call ("op_gr_cr_cr",sTy, TP[LS"ctoptr",Var("rd",FTy 5),Var("cb",FTy 5), Var("ct",FTy 5)])), (Call ("CPtrCmp",CTy"CHERICOP2", TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("ct",FTy 5), Var("t",FTy 3)]), CS(Var("t",FTy 3), [(LW(0,3), Call ("op_gr_cr_cr",sTy, TP[LS"ceq",Var("rd",FTy 5),Var("cb",FTy 5), Var("ct",FTy 5)])), (LW(1,3), Call ("op_gr_cr_cr",sTy, TP[LS"cne",Var("rd",FTy 5),Var("cb",FTy 5), Var("ct",FTy 5)])), (LW(2,3), Call ("op_gr_cr_cr",sTy, TP[LS"clt",Var("rd",FTy 5),Var("cb",FTy 5), Var("ct",FTy 5)])), (LW(3,3), Call ("op_gr_cr_cr",sTy, TP[LS"cle",Var("rd",FTy 5),Var("cb",FTy 5), Var("ct",FTy 5)])), (LW(4,3), Call ("op_gr_cr_cr",sTy, TP[LS"cltu",Var("rd",FTy 5),Var("cb",FTy 5), Var("ct",FTy 5)])), (LW(5,3), Call ("op_gr_cr_cr",sTy, TP[LS"cleu",Var("rd",FTy 5),Var("cb",FTy 5), Var("ct",FTy 5)])), (LW(6,3), Call ("op_gr_cr_cr",sTy, TP[LS"cexeq",Var("rd",FTy 5),Var("cb",FTy 5), Var("ct",FTy 5)])), (LW(7,3), Call ("op_gr_cr_cr",sTy, TP[LS"cnexeq",Var("rd",FTy 5),Var("cb",FTy 5), Var("ct",FTy 5)])), (AVar(FTy 3),LS"unmatched_cap_inst")])), (Call ("CBTU",CTy"CHERICOP2", TP[Var("cb",FTy 5),Var("offset",F16)]), Call ("op_cr_imm",sTy, TP[LS"cbtu",Var("cb",FTy 5),Var("offset",F16)])), (Call ("CBTS",CTy"CHERICOP2", TP[Var("cb",FTy 5),Var("offset",F16)]), Call ("op_cr_imm",sTy, TP[LS"cbts",Var("cb",FTy 5),Var("offset",F16)])), (Call("CJR",CTy"CHERICOP2",Var("cb",FTy 5)), Call("op_cr",sTy,TP[LS"cjr",Var("cb",FTy 5)])), (Call ("CJALR",CTy"CHERICOP2",TP[Var("cd",FTy 5),Var("cb",FTy 5)]), Call ("op_cr_cr",sTy, TP[LS"cjalr",Var("cb",FTy 5),Var("cd",FTy 5)])), (Call ("CSeal",CTy"CHERICOP2", TP[Var("cd",FTy 5),Var("cs",FTy 5),Var("ct",FTy 5)]), Call ("op_cr_cr_cr",sTy, TP[LS"cseal",Var("cd",FTy 5),Var("cs",FTy 5), Var("ct",FTy 5)])), (Call ("CUnseal",CTy"CHERICOP2", TP[Var("cd",FTy 5),Var("cs",FTy 5),Var("ct",FTy 5)]), Call ("op_cr_cr_cr",sTy, TP[LS"cunseal",Var("cd",FTy 5),Var("cs",FTy 5), Var("ct",FTy 5)])), (Call ("CCall0",CTy"CHERICOP2", TP[Var("cs",FTy 5),Var("cb",FTy 5)]), Call ("op_cr_cr",sTy, TP[LS"ccall0",Var("cs",FTy 5),Var("cb",FTy 5)])), (Call ("CCall1",CTy"CHERICOP2", TP[Var("cs",FTy 5),Var("cb",FTy 5)]), Call ("op_cr_cr",sTy, TP[LS"ccall1",Var("cs",FTy 5),Var("cb",FTy 5)])), (Const("CReturn",CTy"CHERICOP2"),LS"creturn"), (Call ("CLLx",CTy"CHERICOP2", TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("stt",FTy 3)]), CS(Var("stt",FTy 3), [(LW(0,3), Call ("op_gr_cr",sTy, TP[LS"cllbu",Var("rd",FTy 5),Var("cb",FTy 5)])), (LW(1,3), Call ("op_gr_cr",sTy, TP[LS"cllhu",Var("rd",FTy 5),Var("cb",FTy 5)])), (LW(2,3), Call ("op_gr_cr",sTy, TP[LS"cllwu",Var("rd",FTy 5),Var("cb",FTy 5)])), (LW(3,3), Call ("op_gr_cr",sTy, TP[LS"clld",Var("rd",FTy 5),Var("cb",FTy 5)])), (LW(4,3), Call ("op_gr_cr",sTy, TP[LS"cllb",Var("rd",FTy 5),Var("cb",FTy 5)])), (LW(5,3), Call ("op_gr_cr",sTy, TP[LS"cllh",Var("rd",FTy 5),Var("cb",FTy 5)])), (LW(6,3), Call ("op_gr_cr",sTy, TP[LS"cllw",Var("rd",FTy 5),Var("cb",FTy 5)])), (LW(7,3), Call ("op_gr_cr",sTy, TP[LS"cllx",Var("rd",FTy 5),Var("cb",FTy 5)]))])), (Call ("CLLC",CTy"CHERICOP2",TP[Var("cd",FTy 5),Var("cb",FTy 5)]), Call ("op_cr_cr",sTy, TP[LS"cllc",Var("cd",FTy 5),Var("cb",FTy 5)])), (Call ("CSCx",CTy"CHERICOP2", TP[Var("rs",FTy 5),Var("cb",FTy 5),Var("rd",FTy 5), Var("tt",FTy 2)]), CS(Var("tt",FTy 2), [(LW(0,2), Call ("op_gr_gr_cr",sTy, TP[LS"cscb",Var("rd",FTy 5),Var("rs",FTy 5), Var("cb",FTy 5)])), (LW(1,2), Call ("op_gr_gr_cr",sTy, TP[LS"csch",Var("rd",FTy 5),Var("rs",FTy 5), Var("cb",FTy 5)])), (LW(2,2), Call ("op_gr_gr_cr",sTy, TP[LS"cscw",Var("rd",FTy 5),Var("rs",FTy 5), Var("cb",FTy 5)])), (LW(3,2), Call ("op_gr_gr_cr",sTy, TP[LS"cscd",Var("rd",FTy 5),Var("rs",FTy 5), Var("cb",FTy 5)]))])), (Call ("CSCC",CTy"CHERICOP2", TP[Var("cs",FTy 5),Var("cb",FTy 5),Var("rd",FTy 5)]), Call ("op_gr_cr_cr",sTy, TP[LS"cscc",Var("rd",FTy 5),Var("cs",FTy 5), Var("cb",FTy 5)])), (Call ("CMOVN",CTy"CHERICOP2", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)]), Call ("op_cr_cr_gr",sTy, TP[LS"cmovn",Var("cd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5)])), (Call ("CMOVZ",CTy"CHERICOP2", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)]), Call ("op_cr_cr_gr",sTy, TP[LS"cmovz",Var("cd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5)])), (Const("UnknownCapInstruction",CTy"CHERICOP2"), LS"unknown_cap_inst")])), (AVar(CTy"instruction"),LS"unmatched_cap_inst")])) ; val LWC2InstructionToString_def = Def ("LWC2InstructionToString",Var("i",CTy"instruction"), CS(Var("i",CTy"instruction"), [(Call ("LWC2",CTy"instruction", Call("CHERILWC2",CTy"LWC2",Var("j",CTy"CHERILWC2"))), CS(Var("j",CTy"CHERILWC2"), [(Call ("CLoad",CTy"CHERILWC2", TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",F8),LW(0,1),Var("t",FTy 2)]), CS(Var("t",FTy 2), [(LW(0,2), Call ("op_gr_cr_gr_imm",sTy, TP[LS"clbu",Var("rd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5),Var("offset",F8)])), (LW(1,2), Call ("op_gr_cr_gr_imm",sTy, TP[LS"clhu",Var("rd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5),Var("offset",F8)])), (LW(2,2), Call ("op_gr_cr_gr_imm",sTy, TP[LS"clwu",Var("rd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5),Var("offset",F8)])), (LW(3,2), Call ("op_gr_cr_gr_imm",sTy, TP[LS"cld",Var("rd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5),Var("offset",F8)]))])), (Call ("CLoad",CTy"CHERILWC2", TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",F8),LW(1,1),LW(0,2)]), Call ("op_gr_cr_gr_imm",sTy, TP[LS"clb",Var("rd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5),Var("offset",F8)])), (Call ("CLoad",CTy"CHERILWC2", TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",F8),LW(1,1),LW(1,2)]), Call ("op_gr_cr_gr_imm",sTy, TP[LS"clh",Var("rd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5),Var("offset",F8)])), (Call ("CLoad",CTy"CHERILWC2", TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",F8),LW(1,1),LW(2,2)]), Call ("op_gr_cr_gr_imm",sTy, TP[LS"clw",Var("rd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5),Var("offset",F8)])), (AVar(CTy"CHERILWC2"),LS"unmatched_cap_inst")])), (AVar(CTy"instruction"),LS"unmatched_cap_inst")])) ; val LDC2InstructionToString_def = Def ("LDC2InstructionToString",Var("i",CTy"instruction"), CS(Var("i",CTy"instruction"), [(Call ("LDC2",CTy"instruction", Call("CHERILDC2",CTy"LDC2",Var("j",CTy"CHERILDC2"))), CS(Var("j",CTy"CHERILDC2"), [(Call ("CLC",CTy"CHERILDC2", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",FTy 11)]), Call ("op_cr_cr_gr_imm",sTy, TP[LS"clc",Var("cd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5),Var("offset",FTy 11)]))])), (AVar(CTy"instruction"),LS"unmatched_cap_inst")])) ; val SWC2InstructionToString_def = Def ("SWC2InstructionToString",Var("i",CTy"instruction"), CS(Var("i",CTy"instruction"), [(Call ("SWC2",CTy"instruction", Call("CHERISWC2",CTy"SWC2",Var("j",CTy"CHERISWC2"))), CS(Var("j",CTy"CHERISWC2"), [(Call ("CStore",CTy"CHERISWC2", TP[Var("rs",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",F8),Var("t",FTy 2)]), CS(Var("t",FTy 2), [(LW(0,2), Call ("op_gr_cr_gr_imm",sTy, TP[LS"csb",Var("rs",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5),Var("offset",F8)])), (LW(1,2), Call ("op_gr_cr_gr_imm",sTy, TP[LS"csh",Var("rs",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5),Var("offset",F8)])), (LW(2,2), Call ("op_gr_cr_gr_imm",sTy, TP[LS"csw",Var("rs",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5),Var("offset",F8)])), (LW(3,2), Call ("op_gr_cr_gr_imm",sTy, TP[LS"csd",Var("rs",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5),Var("offset",F8)]))]))])), (AVar(CTy"instruction"),LS"unmatched_cap_inst")])) ; val SDC2InstructionToString_def = Def ("SDC2InstructionToString",Var("i",CTy"instruction"), CS(Var("i",CTy"instruction"), [(Call ("SDC2",CTy"instruction", Call("CHERISDC2",CTy"SDC2",Var("j",CTy"CHERISDC2"))), CS(Var("j",CTy"CHERISDC2"), [(Call ("CSC",CTy"CHERISDC2", TP[Var("cs",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",FTy 11)]), Call ("op_cr_cr_gr_imm",sTy, TP[LS"csc",Var("cs",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5),Var("offset",FTy 11)]))])), (AVar(CTy"instruction"),LS"unmatched_cap_inst")])) ; val CHERICOP2Encode_def = Def ("CHERICOP2Encode",Var("j",CTy"CHERICOP2"), Close (qVar"state", CS(Var("j",CTy"CHERICOP2"), [(Const("DumpCapReg",CTy"CHERICOP2"), TP[CC[LW(4,5),LW(0,18),LW(6,3)],qVar"state"]), (Call("CGet",CTy"CHERICOP2",Var("v#0",CTy"CGet")), CS(Var("v#0",CTy"CGet"), [(Call ("CGetBase",CTy"CGet", TP[Var("rd",FTy 5),Var("cb",FTy 5)]), TP[CC[LW(0,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,5), LW(2,6)],qVar"state"]), (Call ("CGetOffset",CTy"CGet", TP[Var("rd",FTy 5),Var("cb",FTy 5)]), TP[CC[LW(13,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,5), LW(2,6)],qVar"state"]), (Call ("CGetLen",CTy"CGet",TP[Var("rd",FTy 5),Var("cb",FTy 5)]), TP[CC[LW(0,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,5), LW(3,6)],qVar"state"]), (Call ("CGetTag",CTy"CGet",TP[Var("rd",FTy 5),Var("cb",FTy 5)]), TP[CC[LW(0,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,5), LW(5,6)],qVar"state"]), (Call ("CGetSealed",CTy"CGet", TP[Var("rd",FTy 5),Var("cb",FTy 5)]), TP[CC[LW(0,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,5), LW(6,6)],qVar"state"]), (Call ("CGetPerm",CTy"CGet", TP[Var("rd",FTy 5),Var("cb",FTy 5)]), TP[CC[LW(0,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,5), LW(0,6)],qVar"state"]), (Call ("CGetType",CTy"CGet", TP[Var("rd",FTy 5),Var("cb",FTy 5)]), TP[CC[LW(0,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,5), LW(1,6)],qVar"state"]), (Call("CGetPCC",CTy"CGet",Var("cd",FTy 5)), TP[CC[LW(0,5),Var("cd",FTy 5),LW(0,5),LW(31,5),LW(63,6)], qVar"state"]), (Call ("CGetPCCSetOffset",CTy"CGet", TP[Var("cd",FTy 5),Var("rs",FTy 5)]), TP[CC[LW(0,5),Var("cd",FTy 5),Var("rs",FTy 5),LW(7,5), LW(63,6)],qVar"state"]), (Call("CGetCause",CTy"CGet",Var("rd",FTy 5)), TP[CC[LW(0,5),Var("rd",FTy 5),LW(0,5),LW(0,6),LW(4,5)], qVar"state"]), (Call ("CToPtr",CTy"CGet", TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("ct",FTy 5)]), TP[CC[LW(12,5),Var("rd",FTy 5),Var("cb",FTy 5), Var("ct",FTy 5),LW(0,6)],qVar"state"])])), (Call("CSet",CTy"CHERICOP2",Var("v#1",CTy"CSet")), CS(Var("v#1",CTy"CSet"), [(Call("CSetCause",CTy"CSet",Var("rt",FTy 5)), TP[CC[LW(4,5),LW(0,5),LW(0,5),Var("rt",FTy 5),LW(0,3), LW(4,3)],qVar"state"]), (Call ("CSetBounds",CTy"CSet", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)]), TP[CC[LW(1,5),Var("cd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5),LW(0,6)],qVar"state"]), (Call ("CSetBoundsExact",CTy"CSet", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)]), TP[CC[LW(0,5),Var("cd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5),LW(9,6)],qVar"state"]), (Call ("CSetBoundsImmediate",CTy"CSet", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("len",FTy 11)]), TP[CC[LW(20,5),Var("cd",FTy 5),Var("cb",FTy 5), Var("len",FTy 11)],qVar"state"]), (Call ("CIncOffset",CTy"CSet", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)]), TP[CC[LW(13,5),Var("cd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5),LW(0,3),LW(0,3)],qVar"state"]), (Call ("CIncOffsetImmediate",CTy"CSet", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("inc",FTy 11)]), TP[CC[LW(11,5),Var("cd",FTy 5),Var("cb",FTy 5), Var("inc",FTy 11)],qVar"state"]), (Call ("CClearRegs",CTy"CSet", TP[Var("regset",FTy 5),Var("mask",F16)]), TP[CC[LW(15,5),Var("regset",FTy 5),Var("mask",F16)], qVar"state"]), (Call ("CClearTag",CTy"CSet", TP[Var("cd",FTy 5),Var("cb",FTy 5)]), TP[CC[LW(4,5),Var("cd",FTy 5),Var("cb",FTy 5),LW(0,8), LW(5,3)],qVar"state"]), (Call ("CAndPerm",CTy"CSet", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)]), TP[CC[LW(4,5),Var("cd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5),LW(0,3),LW(0,3)],qVar"state"]), (Call ("CSetOffset",CTy"CSet", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)]), TP[CC[LW(13,5),Var("cd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5),LW(0,3),LW(1,3)],qVar"state"]), (Call ("CFromPtr",CTy"CSet", TP[Var("cd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5)]), TP[CC[LW(4,5),Var("cd",FTy 5),Var("cb",FTy 5), Var("rt",FTy 5),LW(0,3),LW(7,3)],qVar"state"])])), (Call ("CSub",CTy"CHERICOP2",Var("v#2",PTy(FTy 5,PTy(FTy 5,FTy 5)))), CS(Var("v#2",PTy(FTy 5,PTy(FTy 5,FTy 5))), [(TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("ct",FTy 5)], TP[CC[LW(0,5),Var("rd",FTy 5),Var("cb",FTy 5), Var("ct",FTy 5),LW(10,6)],qVar"state"])])), (Call("CCheck",CTy"CHERICOP2",Var("v#3",CTy"CCheck")), CS(Var("v#3",CTy"CCheck"), [(Call ("CCheckPerm",CTy"CCheck", TP[Var("cs",FTy 5),Var("rt",FTy 5)]), TP[CC[LW(11,5),Var("cs",FTy 5),LW(0,5),Var("rt",FTy 5), LW(0,3),LW(0,3)],qVar"state"]), (Call ("CCheckType",CTy"CCheck", TP[Var("cs",FTy 5),Var("cb",FTy 5)]), TP[CC[LW(11,5),Var("cs",FTy 5),Var("cb",FTy 5),LW(0,8), LW(1,3)],qVar"state"])])), (Call ("CPtrCmp",CTy"CHERICOP2", Var("v#4",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 3))))), CS(Var("v#4",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 3)))), [(TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("ct",FTy 5), Var("t",FTy 3)], TP[CC[LW(14,5),Var("rd",FTy 5),Var("cb",FTy 5), Var("ct",FTy 5),LW(0,3),Var("t",FTy 3)],qVar"state"])])), (Call("CBTU",CTy"CHERICOP2",Var("v#5",PTy(FTy 5,F16))), CS(Var("v#5",PTy(FTy 5,F16)), [(TP[Var("cb",FTy 5),Var("offset",F16)], TP[CC[LW(9,5),Var("cb",FTy 5),Var("offset",F16)], qVar"state"])])), (Call("CBTS",CTy"CHERICOP2",Var("v#6",PTy(FTy 5,F16))), CS(Var("v#6",PTy(FTy 5,F16)), [(TP[Var("cb",FTy 5),Var("offset",F16)], TP[CC[LW(10,5),Var("cb",FTy 5),Var("offset",F16)], qVar"state"])])), (Call("CJR",CTy"CHERICOP2",Var("v#7",FTy 5)), TP[CC[LW(8,5),LW(0,5),Var("v#7",FTy 5),LW(0,11)],qVar"state"]), (Call("CJALR",CTy"CHERICOP2",Var("v#8",PTy(FTy 5,FTy 5))), CS(Var("v#8",PTy(FTy 5,FTy 5)), [(TP[Var("cd",FTy 5),Var("cb",FTy 5)], TP[CC[LW(7,5),Var("cd",FTy 5),Var("cb",FTy 5),LW(0,11)], qVar"state"])])), (Call ("CSeal",CTy"CHERICOP2", Var("v#9",PTy(FTy 5,PTy(FTy 5,FTy 5)))), CS(Var("v#9",PTy(FTy 5,PTy(FTy 5,FTy 5))), [(TP[Var("cd",FTy 5),Var("cs",FTy 5),Var("ct",FTy 5)], TP[CC[LW(2,5),Var("cd",FTy 5),Var("cs",FTy 5), Var("ct",FTy 5),LW(0,6)],qVar"state"])])), (Call ("CUnseal",CTy"CHERICOP2", Var("v#10",PTy(FTy 5,PTy(FTy 5,FTy 5)))), CS(Var("v#10",PTy(FTy 5,PTy(FTy 5,FTy 5))), [(TP[Var("cd",FTy 5),Var("cs",FTy 5),Var("ct",FTy 5)], TP[CC[LW(3,5),Var("cd",FTy 5),Var("cs",FTy 5), Var("ct",FTy 5),LW(0,6)],qVar"state"])])), (Call("CCall0",CTy"CHERICOP2",Var("v#11",PTy(FTy 5,FTy 5))), CS(Var("v#11",PTy(FTy 5,FTy 5)), [(TP[Var("cs",FTy 5),Var("cb",FTy 5)], TP[CC[LW(5,5),Var("cs",FTy 5),Var("cb",FTy 5),LW(0,11)], qVar"state"])])), (Call("CCall1",CTy"CHERICOP2",Var("v#12",PTy(FTy 5,FTy 5))), CS(Var("v#12",PTy(FTy 5,FTy 5)), [(TP[Var("cs",FTy 5),Var("cb",FTy 5)], TP[CC[LW(5,5),Var("cs",FTy 5),Var("cb",FTy 5),LW(1,11)], qVar"state"])])), (Const("CReturn",CTy"CHERICOP2"), TP[CC[LW(6,5),LW(0,21)],qVar"state"]), (Call ("CLLx",CTy"CHERICOP2", Var("v#13",PTy(FTy 5,PTy(FTy 5,FTy 3)))), CS(TP[Mop(Fst,Var("v#13",PTy(FTy 5,PTy(FTy 5,FTy 3)))), Mop(Fst,Mop(Snd,Var("v#13",PTy(FTy 5,PTy(FTy 5,FTy 3))))), BL(3, Mop(Snd, Mop(Snd,Var("v#13",PTy(FTy 5,PTy(FTy 5,FTy 3))))))], [(TP[Var("rd",FTy 5),Var("cb",FTy 5),bVar"s'0",LF,LF], TP[CC[LW(16,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,7), LW(1,1),Mop(Cast F1,LL[bVar"s'0"]),LW(0,2)], qVar"state"]), (TP[Var("rd",FTy 5),Var("cb",FTy 5),bVar"s'0",LF,LT], TP[CC[LW(16,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,7), LW(1,1),Mop(Cast F1,LL[bVar"s'0"]),LW(1,2)], qVar"state"]), (TP[Var("rd",FTy 5),Var("cb",FTy 5),bVar"s'0",LT,LF], TP[CC[LW(16,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,7), LW(1,1),Mop(Cast F1,LL[bVar"s'0"]),LW(2,2)], qVar"state"]), (TP[Var("rd",FTy 5),Var("cb",FTy 5),LF,LT,LT], TP[CC[LW(16,5),Var("rd",FTy 5),Var("cb",FTy 5),LW(0,7), LW(11,4)],qVar"state"]), (TP[Var("rd",FTy 5),Var("cb",FTy 5),LT,LT,LT], Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)), LS"instruction-encoding"),qVar"state"), TP[Apply (LX(ATy(PTy(nTy,sTy),FTy 26)), Var("v",PTy(nTy,sTy))),qVar"s"]))])), (Call("CLLC",CTy"CHERICOP2",Var("v#14",PTy(FTy 5,FTy 5))), CS(Var("v#14",PTy(FTy 5,FTy 5)), [(TP[Var("cd",FTy 5),Var("cb",FTy 5)], TP[CC[LW(16,5),Var("cd",FTy 5),Var("cb",FTy 5),LW(0,7), LW(15,4)],qVar"state"])])), (Call ("CSCx",CTy"CHERICOP2", Var("v#15",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 2))))), CS(Var("v#15",PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 2)))), [(TP[Var("rs",FTy 5),Var("cb",FTy 5),Var("rd",FTy 5), Var("tt",FTy 2)], TP[CC[LW(16,5),Var("rs",FTy 5),Var("cb",FTy 5), Var("rd",FTy 5),LW(0,2),LW(0,2),Var("tt",FTy 2)], qVar"state"])])), (Call ("CSCC",CTy"CHERICOP2", Var("v#16",PTy(FTy 5,PTy(FTy 5,FTy 5)))), CS(Var("v#16",PTy(FTy 5,PTy(FTy 5,FTy 5))), [(TP[Var("cs",FTy 5),Var("cb",FTy 5),Var("rd",FTy 5)], TP[CC[LW(16,5),Var("cs",FTy 5),Var("cb",FTy 5), Var("rd",FTy 5),LW(0,2),LW(7,4)],qVar"state"])])), (Const("UnknownCapInstruction",CTy"CHERICOP2"), TP[CC[LW(31,5),LW(0,21)],qVar"state"])]))) ; val COP2Encode_def = Def ("COP2Encode",Var("i",CTy"instruction"), Close (qVar"state", CS(Var("i",CTy"instruction"), [(Call ("COP2",CTy"instruction", Call("CHERICOP2",CTy"COP2",Var("j",CTy"CHERICOP2"))), Let(TP[Var("v",FTy 26),qVar"s"], Apply (Call ("CHERICOP2Encode",ATy(qTy,PTy(FTy 26,qTy)), Var("j",CTy"CHERICOP2")),qVar"state"), TP[CC[LW(18,6),Var("v",FTy 26)],qVar"s"])), (AVar(CTy"instruction"), Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)), LS"instruction-encoding"),qVar"state"), TP[Apply(LX(ATy(PTy(nTy,sTy),F32)),Var("v",PTy(nTy,sTy))), qVar"s"]))]))) ; val LWC2Encode_def = Def ("LWC2Encode",Var("i",CTy"instruction"), Close (qVar"state", CS(Var("i",CTy"instruction"), [(Call ("LWC2",CTy"instruction", Call ("CHERILWC2",CTy"LWC2", Call ("CLoad",CTy"CHERILWC2", TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",F8),LW(0,1),Var("t",FTy 2)]))), TP[CC[LW(50,6),Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",F8),LW(0,1),Var("t",FTy 2)],qVar"state"]), (Call ("LWC2",CTy"instruction", Call ("CHERILWC2",CTy"LWC2", Call ("CLoad",CTy"CHERILWC2", TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",F8),LW(1,1),LW(0,2)]))), TP[CC[LW(50,6),Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",F8),LW(4,3)],qVar"state"]), (Call ("LWC2",CTy"instruction", Call ("CHERILWC2",CTy"LWC2", Call ("CLoad",CTy"CHERILWC2", TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",F8),LW(1,1),LW(1,2)]))), TP[CC[LW(50,6),Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",F8),LW(5,3)],qVar"state"]), (Call ("LWC2",CTy"instruction", Call ("CHERILWC2",CTy"LWC2", Call ("CLoad",CTy"CHERILWC2", TP[Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",F8),LW(1,1),LW(2,2)]))), TP[CC[LW(50,6),Var("rd",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",F8),LW(6,3)],qVar"state"]), (AVar(CTy"instruction"), Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)), LS"instruction-encoding"),qVar"state"), TP[Apply(LX(ATy(PTy(nTy,sTy),F32)),Var("v",PTy(nTy,sTy))), qVar"s"]))]))) ; val LDC2Encode_def = Def ("LDC2Encode",Var("i",CTy"instruction"), Close (qVar"state", CS(Var("i",CTy"instruction"), [(Call ("LDC2",CTy"instruction", Call ("CHERILDC2",CTy"LDC2", Call ("CLC",CTy"CHERILDC2", TP[Var("c",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",FTy 11)]))), TP[CC[LW(54,6),Var("c",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",FTy 11)],qVar"state"]), (AVar(CTy"instruction"), Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)), LS"instruction-encoding"),qVar"state"), TP[Apply(LX(ATy(PTy(nTy,sTy),F32)),Var("v",PTy(nTy,sTy))), qVar"s"]))]))) ; val SWC2Encode_def = Def ("SWC2Encode",Var("i",CTy"instruction"), Close (qVar"state", CS(Var("i",CTy"instruction"), [(Call ("SWC2",CTy"instruction", Call ("CHERISWC2",CTy"SWC2", Call ("CStore",CTy"CHERISWC2", TP[Var("rs",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",F8),Var("t",FTy 2)]))), TP[CC[LW(58,6),Var("rs",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",F8),LW(0,1),Var("t",FTy 2)],qVar"state"]), (AVar(CTy"instruction"), Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)), LS"instruction-encoding"),qVar"state"), TP[Apply(LX(ATy(PTy(nTy,sTy),F32)),Var("v",PTy(nTy,sTy))), qVar"s"]))]))) ; val SDC2Encode_def = Def ("SDC2Encode",Var("i",CTy"instruction"), Close (qVar"state", CS(Var("i",CTy"instruction"), [(Call ("SDC2",CTy"instruction", Call ("CHERISDC2",CTy"SDC2", Call ("CSC",CTy"CHERISDC2", TP[Var("c",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",FTy 11)]))), TP[CC[LW(62,6),Var("c",FTy 5),Var("cb",FTy 5),Var("rt",FTy 5), Var("offset",FTy 11)],qVar"state"]), (AVar(CTy"instruction"), Let(TP[Var("v",PTy(nTy,sTy)),qVar"s"], Apply (Call ("next_unknown",ATy(qTy,PTy(PTy(nTy,sTy),qTy)), LS"instruction-encoding"),qVar"state"), TP[Apply(LX(ATy(PTy(nTy,sTy),F32)),Var("v",PTy(nTy,sTy))), qVar"s"]))]))) ; val instructionToString_def = Def ("instructionToString",Var("i",CTy"instruction"), CS(Var("i",CTy"instruction"), [(Call ("Shift",CTy"instruction", Call("SLL",CTy"Shift",TP[LW(0,5),LW(0,5),LW(0,5)])),LS"nop"), (Call ("Shift",CTy"instruction", Call("SLL",CTy"Shift",TP[LW(0,5),LW(0,5),LW(1,5)])),LS"ssnop"), (Call ("Shift",CTy"instruction", Call ("SLL",CTy"Shift", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])), Call ("op2ri",sTy, TP[LS"sll",Var("rd",FTy 5),Var("rt",FTy 5),Var("imm5",FTy 5)])), (Call ("Shift",CTy"instruction", Call ("SRL",CTy"Shift", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])), Call ("op2ri",sTy, TP[LS"srl",Var("rd",FTy 5),Var("rt",FTy 5),Var("imm5",FTy 5)])), (Call ("Shift",CTy"instruction", Call ("SRA",CTy"Shift", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])), Call ("op2ri",sTy, TP[LS"sra",Var("rd",FTy 5),Var("rt",FTy 5),Var("imm5",FTy 5)])), (Call ("Shift",CTy"instruction", Call ("SLLV",CTy"Shift", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"sllv",Var("rd",FTy 5),Var("rt",FTy 5),Var("rs",FTy 5)])), (Call ("Shift",CTy"instruction", Call ("SRLV",CTy"Shift", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"srlv",Var("rd",FTy 5),Var("rt",FTy 5),Var("rs",FTy 5)])), (Call ("Shift",CTy"instruction", Call ("SRAV",CTy"Shift", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"srav",Var("rd",FTy 5),Var("rt",FTy 5),Var("rs",FTy 5)])), (Call ("Branch",CTy"instruction", Call("JR",CTy"Branch",Var("rs",FTy 5))), Call("op1r",sTy,TP[LS"jr",Var("rs",FTy 5)])), (Call ("Branch",CTy"instruction", Call("JALR",CTy"Branch",TP[Var("rs",FTy 5),Var("rd",FTy 5)])), Call("op2r",sTy,TP[LS"jalr",Var("rd",FTy 5),Var("rs",FTy 5)])), (Call ("MultDiv",CTy"instruction", Call("MFHI",CTy"MultDiv",Var("rd",FTy 5))), Call("op1r",sTy,TP[LS"mfhi",Var("rd",FTy 5)])), (Call ("MultDiv",CTy"instruction", Call("MTHI",CTy"MultDiv",Var("rd",FTy 5))), Call("op1r",sTy,TP[LS"mthi",Var("rd",FTy 5)])), (Call ("MultDiv",CTy"instruction", Call("MFLO",CTy"MultDiv",Var("rs",FTy 5))), Call("op1r",sTy,TP[LS"mflo",Var("rs",FTy 5)])), (Call ("MultDiv",CTy"instruction", Call("MTLO",CTy"MultDiv",Var("rs",FTy 5))), Call("op1r",sTy,TP[LS"mtlo",Var("rs",FTy 5)])), (Call ("Shift",CTy"instruction", Call ("DSLLV",CTy"Shift", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"dsllv",Var("rd",FTy 5),Var("rt",FTy 5),Var("rs",FTy 5)])), (Call ("Shift",CTy"instruction", Call ("DSRLV",CTy"Shift", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"dsrlv",Var("rd",FTy 5),Var("rt",FTy 5),Var("rs",FTy 5)])), (Call ("Shift",CTy"instruction", Call ("DSRAV",CTy"Shift", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"dsrav",Var("rd",FTy 5),Var("rt",FTy 5),Var("rs",FTy 5)])), (Call ("MultDiv",CTy"instruction", Call("MADD",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), Call("op2r",sTy,TP[LS"madd",Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("MultDiv",CTy"instruction", Call("MADDU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), Call("op2r",sTy,TP[LS"maddu",Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("MultDiv",CTy"instruction", Call("MSUB",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), Call("op2r",sTy,TP[LS"msub",Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("MultDiv",CTy"instruction", Call("MSUBU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), Call("op2r",sTy,TP[LS"msubu",Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("MultDiv",CTy"instruction", Call ("MUL",CTy"MultDiv", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"mul",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("MultDiv",CTy"instruction", Call("MULT",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), Call("op2r",sTy,TP[LS"mult",Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("MultDiv",CTy"instruction", Call("MULTU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), Call("op2r",sTy,TP[LS"multu",Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("MultDiv",CTy"instruction", Call("DIV",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), Call("op2r",sTy,TP[LS"div",Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("MultDiv",CTy"instruction", Call("DIVU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), Call("op2r",sTy,TP[LS"divu",Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("MultDiv",CTy"instruction", Call("DMULT",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), Call("op2r",sTy,TP[LS"dmult",Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("MultDiv",CTy"instruction", Call("DMULTU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), Call("op2r",sTy,TP[LS"dmultu",Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("MultDiv",CTy"instruction", Call("DDIV",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), Call("op2r",sTy,TP[LS"ddiv",Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("MultDiv",CTy"instruction", Call("DDIVU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), Call("op2r",sTy,TP[LS"ddivu",Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("ArithR",CTy"instruction", Call ("MOVN",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"movn",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("ArithR",CTy"instruction", Call ("MOVZ",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"movz",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("ArithR",CTy"instruction", Call ("ADD",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"add",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("ArithR",CTy"instruction", Call ("ADDU",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"addu",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("ArithR",CTy"instruction", Call ("SUB",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"sub",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("ArithR",CTy"instruction", Call ("SUBU",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"subu",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("ArithR",CTy"instruction", Call ("AND",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"and",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("ArithR",CTy"instruction", Call ("OR",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"or",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("ArithR",CTy"instruction", Call ("XOR",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"xor",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("ArithR",CTy"instruction", Call ("NOR",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"nor",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("ArithR",CTy"instruction", Call ("SLT",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"slt",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("ArithR",CTy"instruction", Call ("SLTU",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"sltu",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("ArithR",CTy"instruction", Call ("DADD",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"dadd",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("ArithR",CTy"instruction", Call ("DADDU",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"daddu",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("ArithR",CTy"instruction", Call ("DSUB",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"dsub",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("ArithR",CTy"instruction", Call ("DSUBU",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), Call ("op3r",sTy, TP[LS"dsubu",Var("rd",FTy 5),Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("Trap",CTy"instruction", Call("TGE",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), Call("op2r",sTy,TP[LS"tge",Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("Trap",CTy"instruction", Call("TGEU",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), Call("op2r",sTy,TP[LS"tgeu",Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("Trap",CTy"instruction", Call("TLT",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), Call("op2r",sTy,TP[LS"tlt",Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("Trap",CTy"instruction", Call("TLTU",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), Call("op2r",sTy,TP[LS"tltu",Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("Trap",CTy"instruction", Call("TEQ",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), Call("op2r",sTy,TP[LS"teq",Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("Trap",CTy"instruction", Call("TNE",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), Call("op2r",sTy,TP[LS"tne",Var("rs",FTy 5),Var("rt",FTy 5)])), (Call ("Shift",CTy"instruction", Call ("DSLL",CTy"Shift", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])), Call ("op2ri",sTy, TP[LS"dsll",Var("rd",FTy 5),Var("rt",FTy 5),Var("imm5",FTy 5)])), (Call ("Shift",CTy"instruction", Call ("DSRL",CTy"Shift", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])), Call ("op2ri",sTy, TP[LS"dsrl",Var("rd",FTy 5),Var("rt",FTy 5),Var("imm5",FTy 5)])), (Call ("Shift",CTy"instruction", Call ("DSRA",CTy"Shift", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])), Call ("op2ri",sTy, TP[LS"dsra",Var("rd",FTy 5),Var("rt",FTy 5),Var("imm5",FTy 5)])), (Call ("Shift",CTy"instruction", Call ("DSLL32",CTy"Shift", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])), Call ("op2ri",sTy, TP[LS"dsll32",Var("rd",FTy 5),Var("rt",FTy 5),Var("imm5",FTy 5)])), (Call ("Shift",CTy"instruction", Call ("DSRL32",CTy"Shift", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])), Call ("op2ri",sTy, TP[LS"dsrl32",Var("rd",FTy 5),Var("rt",FTy 5),Var("imm5",FTy 5)])), (Call ("Shift",CTy"instruction", Call ("DSRA32",CTy"Shift", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])), Call ("op2ri",sTy, TP[LS"dsra32",Var("rd",FTy 5),Var("rt",FTy 5),Var("imm5",FTy 5)])), (Call ("Branch",CTy"instruction", Call("BLTZ",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), Call("op1rai",sTy,TP[LS"bltz",Var("rs",FTy 5),Var("imm",F16)])), (Call ("Branch",CTy"instruction", Call("BGEZ",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), Call("op1rai",sTy,TP[LS"bgez",Var("rs",FTy 5),Var("imm",F16)])), (Call ("Branch",CTy"instruction", Call("BLTZL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), Call("op1rlai",sTy,TP[LS"bltzl",Var("rs",FTy 5),Var("imm",F16)])), (Call ("Branch",CTy"instruction", Call("BGEZL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), Call("op1rlai",sTy,TP[LS"bgezl",Var("rs",FTy 5),Var("imm",F16)])), (Call ("Trap",CTy"instruction", Call("TGEI",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])), Call("op1ri",sTy,TP[LS"tgei",Var("rs",FTy 5),Var("imm",F16)])), (Call ("Trap",CTy"instruction", Call("TGEIU",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])), Call("op1ri",sTy,TP[LS"tgeiu",Var("rs",FTy 5),Var("imm",F16)])), (Call ("Trap",CTy"instruction", Call("TLTI",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])), Call("op1ri",sTy,TP[LS"tlti",Var("rs",FTy 5),Var("imm",F16)])), (Call ("Trap",CTy"instruction", Call("TLTIU",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])), Call("op1ri",sTy,TP[LS"tltiu",Var("rs",FTy 5),Var("imm",F16)])), (Call ("Trap",CTy"instruction", Call("TEQI",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])), Call("op1ri",sTy,TP[LS"teqi",Var("rs",FTy 5),Var("imm",F16)])), (Call ("Trap",CTy"instruction", Call("TNEI",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])), Call("op1ri",sTy,TP[LS"tnei",Var("rs",FTy 5),Var("imm",F16)])), (Call ("Branch",CTy"instruction", Call("BLTZAL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), Call("op1rai",sTy,TP[LS"bltzal",Var("rs",FTy 5),Var("imm",F16)])), (Call ("Branch",CTy"instruction", Call("BGEZAL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), Call("op1rai",sTy,TP[LS"bgezal",Var("rs",FTy 5),Var("imm",F16)])), (Call ("Branch",CTy"instruction", Call("BLTZALL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), Call("op1rlai",sTy,TP[LS"bltzall",Var("rs",FTy 5),Var("imm",F16)])), (Call ("Branch",CTy"instruction", Call("BGEZALL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), Call("op1rlai",sTy,TP[LS"bgezall",Var("rs",FTy 5),Var("imm",F16)])), (Call ("Branch",CTy"instruction", Call("J",CTy"Branch",Var("imm",FTy 26))), Call("op1ai",sTy,TP[LS"j",Var("imm",FTy 26)])), (Call ("Branch",CTy"instruction", Call("JAL",CTy"Branch",Var("imm",FTy 26))), Call("op1ai",sTy,TP[LS"jal",Var("imm",FTy 26)])), (Call ("CP",CTy"instruction", Call ("MFC0",CTy"CP", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])), Call ("op2roi",sTy, TP[LS"mfc0",Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])), (Call ("CP",CTy"instruction", Call ("DMFC0",CTy"CP", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])), Call ("op2roi",sTy, TP[LS"dmfc0",Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])), (Call ("CP",CTy"instruction", Call ("MTC0",CTy"CP", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])), Call ("op2roi",sTy, TP[LS"mtc0",Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])), (Call ("CP",CTy"instruction", Call ("DMTC0",CTy"CP", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])), Call ("op2roi",sTy, TP[LS"dmtc0",Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])), (Call ("Branch",CTy"instruction", Call("BEQ",CTy"Branch",TP[LW(0,5),LW(0,5),Var("imm",F16)])), Call("op1ai",sTy,TP[LS"b",Var("imm",F16)])), (Call ("Branch",CTy"instruction", Call ("BEQ",CTy"Branch", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("op2rai",sTy, TP[LS"beq",Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), (Call ("Branch",CTy"instruction", Call ("BNE",CTy"Branch", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("op2rai",sTy, TP[LS"bne",Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), (Call ("Branch",CTy"instruction", Call("BLEZ",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), Call("op1rai",sTy,TP[LS"blez",Var("rs",FTy 5),Var("imm",F16)])), (Call ("Branch",CTy"instruction", Call("BGTZ",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), Call("op1rai",sTy,TP[LS"bgtz",Var("rs",FTy 5),Var("imm",F16)])), (Call ("ArithI",CTy"instruction", Call ("ADDI",CTy"ArithI", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("op2ri",sTy, TP[LS"addi",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("ArithI",CTy"instruction", Call ("ADDIU",CTy"ArithI", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("op2ri",sTy, TP[LS"addiu",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("ArithI",CTy"instruction", Call ("SLTI",CTy"ArithI", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("op2ri",sTy, TP[LS"slti",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("ArithI",CTy"instruction", Call ("SLTIU",CTy"ArithI", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("op2ri",sTy, TP[LS"sltiu",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("ArithI",CTy"instruction", Call ("ANDI",CTy"ArithI", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("op2ri",sTy, TP[LS"andi",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("ArithI",CTy"instruction", Call ("ORI",CTy"ArithI", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("op2ri",sTy, TP[LS"ori",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("ArithI",CTy"instruction", Call ("XORI",CTy"ArithI", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("op2ri",sTy, TP[LS"xori",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("ArithI",CTy"instruction", Call("LUI",CTy"ArithI",TP[Var("rt",FTy 5),Var("imm",F16)])), Call("op1ri",sTy,TP[LS"lui",Var("rt",FTy 5),Var("imm",F16)])), (Call ("Branch",CTy"instruction", Call ("BEQL",CTy"Branch", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("op2rlai",sTy, TP[LS"beql",Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), (Call ("Branch",CTy"instruction", Call ("BNEL",CTy"Branch", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("op2rlai",sTy, TP[LS"bnel",Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), (Call ("Branch",CTy"instruction", Call("BLEZL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), Call("op1rlai",sTy,TP[LS"blezl",Var("rs",FTy 5),Var("imm",F16)])), (Call ("Branch",CTy"instruction", Call("BGTZL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), Call("op1rlai",sTy,TP[LS"bgtzl",Var("rs",FTy 5),Var("imm",F16)])), (Call ("ArithI",CTy"instruction", Call ("DADDI",CTy"ArithI", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("op2ri",sTy, TP[LS"daddi",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("ArithI",CTy"instruction", Call ("DADDIU",CTy"ArithI", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("op2ri",sTy, TP[LS"daddiu",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Load",CTy"instruction", Call ("LDL",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"ldl",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Load",CTy"instruction", Call ("LDR",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"ldr",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Load",CTy"instruction", Call ("LB",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"lb",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Load",CTy"instruction", Call ("LH",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"lh",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Load",CTy"instruction", Call ("LWL",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"lwl",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Load",CTy"instruction", Call ("LW",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"lw",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Load",CTy"instruction", Call ("LBU",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"lbu",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Load",CTy"instruction", Call ("LHU",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"lhu",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Load",CTy"instruction", Call ("LWR",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"lwr",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Load",CTy"instruction", Call ("LWU",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"lwu",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Store",CTy"instruction", Call ("SB",CTy"Store", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"sb",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Store",CTy"instruction", Call ("SH",CTy"Store", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"sh",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Store",CTy"instruction", Call ("SWL",CTy"Store", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"swl",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Store",CTy"instruction", Call ("SW",CTy"Store", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"sw",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Store",CTy"instruction", Call ("SDL",CTy"Store", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"sdl",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Store",CTy"instruction", Call ("SDR",CTy"Store", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"sdr",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Store",CTy"instruction", Call ("SWR",CTy"Store", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"swr",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Load",CTy"instruction", Call ("LL",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"ll",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Load",CTy"instruction", Call ("LLD",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"lld",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Load",CTy"instruction", Call ("LD",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"ld",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Store",CTy"instruction", Call ("SC",CTy"Store", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"sc",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Store",CTy"instruction", Call ("SCD",CTy"Store", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"scd",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("Store",CTy"instruction", Call ("SD",CTy"Store", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), Call ("opmem",sTy, TP[LS"sd",Var("rt",FTy 5),Var("rs",FTy 5),Var("imm",F16)])), (Call ("CACHE",CTy"instruction", TP[Var("rs",FTy 5),Var("opn",FTy 5),Var("imm",F16)]), CC[LS"cache ",Call("ihex",sTy,Var("opn",FTy 5)),LS", ", Call("ihex",sTy,Var("imm",F16)),LS"(", Call("reg_name",sTy,Var("rs",FTy 5)),LS")"]), (Const("SYSCALL",CTy"instruction"),LS"syscall"), (Const("BREAK",CTy"instruction"),LS"break"), (Call("SYNC",CTy"instruction",Var("imm5",FTy 5)), CC[LS"sync ",Call("ihex",sTy,Var("imm5",FTy 5))]), (Const("TLBR",CTy"instruction"),LS"tlbr"), (Const("TLBWI",CTy"instruction"),LS"tlbwi"), (Const("TLBWR",CTy"instruction"),LS"tlbwr"), (Const("TLBP",CTy"instruction"),LS"tlbp"), (Const("ERET",CTy"instruction"),LS"eret"), (Call("RDHWR",CTy"instruction",TP[Var("rt",FTy 5),Var("rd",FTy 5)]), Call("op2r",sTy,TP[LS"rdhwr",Var("rt",FTy 5),Var("rd",FTy 5)])), (Const("WAIT",CTy"instruction"),LS"wait"), (Call("COP1",CTy"instruction",AVar(CTy"COP1")), Call("COP1InstructionToString",sTy,Var("i",CTy"instruction"))), (Call("COP2",CTy"instruction",AVar(CTy"COP2")), Call("COP2InstructionToString",sTy,Var("i",CTy"instruction"))), (Call("LWC2",CTy"instruction",AVar(CTy"LWC2")), Call("LWC2InstructionToString",sTy,Var("i",CTy"instruction"))), (Call("LDC2",CTy"instruction",AVar(CTy"LDC2")), Call("LDC2InstructionToString",sTy,Var("i",CTy"instruction"))), (Call("SWC2",CTy"instruction",AVar(CTy"SWC2")), Call("SWC2InstructionToString",sTy,Var("i",CTy"instruction"))), (Call("SDC2",CTy"instruction",AVar(CTy"SDC2")), Call("SDC2InstructionToString",sTy,Var("i",CTy"instruction"))), (Const("Unpredictable",CTy"instruction"),LS"???"), (Const("ReservedInstruction",CTy"instruction"),LS"???")])) ; val Encode_def = Def ("Encode",Var("i",CTy"instruction"), Close (qVar"state", CS(Var("i",CTy"instruction"), [(Call ("Shift",CTy"instruction", Call ("SLL",CTy"Shift", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])), TP[Call ("form1",F32, TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5), Var("imm5",FTy 5),LW(0,6)]),qVar"state"]), (Call ("Shift",CTy"instruction", Call ("SRL",CTy"Shift", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])), TP[Call ("form1",F32, TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5), Var("imm5",FTy 5),LW(2,6)]),qVar"state"]), (Call ("Shift",CTy"instruction", Call ("SRA",CTy"Shift", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])), TP[Call ("form1",F32, TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5), Var("imm5",FTy 5),LW(3,6)]),qVar"state"]), (Call ("Shift",CTy"instruction", Call ("SLLV",CTy"Shift", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(4,6)]),qVar"state"]), (Call ("Shift",CTy"instruction", Call ("SRLV",CTy"Shift", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(6,6)]),qVar"state"]), (Call ("Shift",CTy"instruction", Call ("SRAV",CTy"Shift", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(7,6)]),qVar"state"]), (Call ("Branch",CTy"instruction", Call("JR",CTy"Branch",Var("rs",FTy 5))), TP[Call ("form1",F32, TP[Var("rs",FTy 5),LW(0,5),LW(0,5),LW(0,5),LW(8,6)]), qVar"state"]), (Call ("Branch",CTy"instruction", Call("JALR",CTy"Branch",TP[Var("rs",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),LW(0,5),Var("rd",FTy 5),LW(0,5), LW(9,6)]),qVar"state"]), (Call ("MultDiv",CTy"instruction", Call("MFHI",CTy"MultDiv",Var("rd",FTy 5))), TP[Call ("form1",F32, TP[LW(0,5),LW(0,5),Var("rd",FTy 5),LW(0,5),LW(16,6)]), qVar"state"]), (Call ("MultDiv",CTy"instruction", Call("MTHI",CTy"MultDiv",Var("rs",FTy 5))), TP[Call ("form1",F32, TP[Var("rs",FTy 5),LW(0,5),LW(0,5),LW(0,5),LW(17,6)]), qVar"state"]), (Call ("MultDiv",CTy"instruction", Call("MFLO",CTy"MultDiv",Var("rd",FTy 5))), TP[Call ("form1",F32, TP[LW(0,5),LW(0,5),Var("rd",FTy 5),LW(0,5),LW(18,6)]), qVar"state"]), (Call ("MultDiv",CTy"instruction", Call("MTLO",CTy"MultDiv",Var("rs",FTy 5))), TP[Call ("form1",F32, TP[Var("rs",FTy 5),LW(0,5),LW(0,5),LW(0,5),LW(19,6)]), qVar"state"]), (Call ("Shift",CTy"instruction", Call ("DSLLV",CTy"Shift", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(20,6)]),qVar"state"]), (Call ("Shift",CTy"instruction", Call ("DSRLV",CTy"Shift", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(22,6)]),qVar"state"]), (Call ("Shift",CTy"instruction", Call ("DSRAV",CTy"Shift", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(23,6)]),qVar"state"]), (Call ("MultDiv",CTy"instruction", Call ("MADD",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), TP[Call ("form5",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,6)]), qVar"state"]), (Call ("MultDiv",CTy"instruction", Call ("MADDU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), TP[Call ("form5",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(1,6)]), qVar"state"]), (Call ("MultDiv",CTy"instruction", Call ("MSUB",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), TP[Call ("form5",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(4,6)]), qVar"state"]), (Call ("MultDiv",CTy"instruction", Call ("MSUBU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), TP[Call ("form5",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(5,6)]), qVar"state"]), (Call ("MultDiv",CTy"instruction", Call ("MUL",CTy"MultDiv", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form5",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(2,6)]),qVar"state"]), (Call ("MultDiv",CTy"instruction", Call ("MULT",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5), LW(24,6)]),qVar"state"]), (Call ("MultDiv",CTy"instruction", Call ("MULTU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5), LW(25,6)]),qVar"state"]), (Call ("MultDiv",CTy"instruction", Call("DIV",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5), LW(26,6)]),qVar"state"]), (Call ("MultDiv",CTy"instruction", Call ("DIVU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5), LW(27,6)]),qVar"state"]), (Call ("MultDiv",CTy"instruction", Call ("DMULT",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5), LW(28,6)]),qVar"state"]), (Call ("MultDiv",CTy"instruction", Call ("DMULTU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5), LW(29,6)]),qVar"state"]), (Call ("MultDiv",CTy"instruction", Call ("DDIV",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5), LW(30,6)]),qVar"state"]), (Call ("MultDiv",CTy"instruction", Call ("DDIVU",CTy"MultDiv",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5), LW(31,6)]),qVar"state"]), (Call ("ArithR",CTy"instruction", Call ("MOVZ",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(10,6)]),qVar"state"]), (Call ("ArithR",CTy"instruction", Call ("MOVN",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(11,6)]),qVar"state"]), (Call ("ArithR",CTy"instruction", Call ("ADD",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(32,6)]),qVar"state"]), (Call ("ArithR",CTy"instruction", Call ("ADDU",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(33,6)]),qVar"state"]), (Call ("ArithR",CTy"instruction", Call ("SUB",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(34,6)]),qVar"state"]), (Call ("ArithR",CTy"instruction", Call ("SUBU",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(35,6)]),qVar"state"]), (Call ("ArithR",CTy"instruction", Call ("AND",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(36,6)]),qVar"state"]), (Call ("ArithR",CTy"instruction", Call ("OR",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(37,6)]),qVar"state"]), (Call ("ArithR",CTy"instruction", Call ("XOR",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(38,6)]),qVar"state"]), (Call ("ArithR",CTy"instruction", Call ("NOR",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(39,6)]),qVar"state"]), (Call ("ArithR",CTy"instruction", Call ("SLT",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(42,6)]),qVar"state"]), (Call ("ArithR",CTy"instruction", Call ("SLTU",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(43,6)]),qVar"state"]), (Call ("ArithR",CTy"instruction", Call ("DADD",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(44,6)]),qVar"state"]), (Call ("ArithR",CTy"instruction", Call ("DADDU",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(45,6)]),qVar"state"]), (Call ("ArithR",CTy"instruction", Call ("DSUB",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(46,6)]),qVar"state"]), (Call ("ArithR",CTy"instruction", Call ("DSUBU",CTy"ArithR", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("rd",FTy 5), LW(0,5),LW(47,6)]),qVar"state"]), (Call ("Trap",CTy"instruction", Call("TGE",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5), LW(48,6)]),qVar"state"]), (Call ("Trap",CTy"instruction", Call("TGEU",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5), LW(49,6)]),qVar"state"]), (Call ("Trap",CTy"instruction", Call("TLT",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5), LW(50,6)]),qVar"state"]), (Call ("Trap",CTy"instruction", Call("TLTU",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5), LW(51,6)]),qVar"state"]), (Call ("Trap",CTy"instruction", Call("TEQ",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5), LW(52,6)]),qVar"state"]), (Call ("Trap",CTy"instruction", Call("TNE",CTy"Trap",TP[Var("rs",FTy 5),Var("rt",FTy 5)])), TP[Call ("form1",F32, TP[Var("rs",FTy 5),Var("rt",FTy 5),LW(0,5),LW(0,5), LW(54,6)]),qVar"state"]), (Call ("Shift",CTy"instruction", Call ("DSLL",CTy"Shift", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])), TP[Call ("form1",F32, TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5), Var("imm5",FTy 5),LW(56,6)]),qVar"state"]), (Call ("Shift",CTy"instruction", Call ("DSRL",CTy"Shift", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])), TP[Call ("form1",F32, TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5), Var("imm5",FTy 5),LW(58,6)]),qVar"state"]), (Call ("Shift",CTy"instruction", Call ("DSRA",CTy"Shift", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])), TP[Call ("form1",F32, TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5), Var("imm5",FTy 5),LW(59,6)]),qVar"state"]), (Call ("Shift",CTy"instruction", Call ("DSLL32",CTy"Shift", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])), TP[Call ("form1",F32, TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5), Var("imm5",FTy 5),LW(60,6)]),qVar"state"]), (Call ("Shift",CTy"instruction", Call ("DSRL32",CTy"Shift", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])), TP[Call ("form1",F32, TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5), Var("imm5",FTy 5),LW(62,6)]),qVar"state"]), (Call ("Shift",CTy"instruction", Call ("DSRA32",CTy"Shift", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("imm5",FTy 5)])), TP[Call ("form1",F32, TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5), Var("imm5",FTy 5),LW(63,6)]),qVar"state"]), (Call ("Branch",CTy"instruction", Call("BLTZ",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), TP[Call("form2",F32,TP[Var("rs",FTy 5),LW(0,5),Var("imm",F16)]), qVar"state"]), (Call ("Branch",CTy"instruction", Call("BGEZ",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), TP[Call("form2",F32,TP[Var("rs",FTy 5),LW(1,5),Var("imm",F16)]), qVar"state"]), (Call ("Branch",CTy"instruction", Call("BLTZL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), TP[Call("form2",F32,TP[Var("rs",FTy 5),LW(2,5),Var("imm",F16)]), qVar"state"]), (Call ("Branch",CTy"instruction", Call("BGEZL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), TP[Call("form2",F32,TP[Var("rs",FTy 5),LW(3,5),Var("imm",F16)]), qVar"state"]), (Call ("Trap",CTy"instruction", Call("TGEI",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])), TP[Call("form2",F32,TP[Var("rs",FTy 5),LW(8,5),Var("imm",F16)]), qVar"state"]), (Call ("Trap",CTy"instruction", Call("TGEIU",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])), TP[Call("form2",F32,TP[Var("rs",FTy 5),LW(9,5),Var("imm",F16)]), qVar"state"]), (Call ("Trap",CTy"instruction", Call("TLTI",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])), TP[Call ("form2",F32,TP[Var("rs",FTy 5),LW(10,5),Var("imm",F16)]), qVar"state"]), (Call ("Trap",CTy"instruction", Call("TLTIU",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])), TP[Call ("form2",F32,TP[Var("rs",FTy 5),LW(11,5),Var("imm",F16)]), qVar"state"]), (Call ("Trap",CTy"instruction", Call("TEQI",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])), TP[Call ("form2",F32,TP[Var("rs",FTy 5),LW(12,5),Var("imm",F16)]), qVar"state"]), (Call ("Trap",CTy"instruction", Call("TNEI",CTy"Trap",TP[Var("rs",FTy 5),Var("imm",F16)])), TP[Call ("form2",F32,TP[Var("rs",FTy 5),LW(14,5),Var("imm",F16)]), qVar"state"]), (Call ("Branch",CTy"instruction", Call ("BLTZAL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), TP[Call ("form2",F32,TP[Var("rs",FTy 5),LW(16,5),Var("imm",F16)]), qVar"state"]), (Call ("Branch",CTy"instruction", Call ("BGEZAL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), TP[Call ("form2",F32,TP[Var("rs",FTy 5),LW(17,5),Var("imm",F16)]), qVar"state"]), (Call ("Branch",CTy"instruction", Call ("BLTZALL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), TP[Call ("form2",F32,TP[Var("rs",FTy 5),LW(18,5),Var("imm",F16)]), qVar"state"]), (Call ("Branch",CTy"instruction", Call ("BGEZALL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), TP[Call ("form2",F32,TP[Var("rs",FTy 5),LW(19,5),Var("imm",F16)]), qVar"state"]), (Call ("Branch",CTy"instruction", Call("J",CTy"Branch",Var("imm",FTy 26))), TP[CC[LW(2,6),Var("imm",FTy 26)],qVar"state"]), (Call ("Branch",CTy"instruction", Call("JAL",CTy"Branch",Var("imm",FTy 26))), TP[CC[LW(3,6),Var("imm",FTy 26)],qVar"state"]), (Call ("CP",CTy"instruction", Call ("MFC0",CTy"CP", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])), TP[Call ("form3",F32, TP[LW(0,5),Var("rt",FTy 5),Var("rd",FTy 5), Var("sel",FTy 3)]),qVar"state"]), (Call ("CP",CTy"instruction", Call ("DMFC0",CTy"CP", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])), TP[Call ("form3",F32, TP[LW(1,5),Var("rt",FTy 5),Var("rd",FTy 5), Var("sel",FTy 3)]),qVar"state"]), (Call ("CP",CTy"instruction", Call ("MTC0",CTy"CP", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])), TP[Call ("form3",F32, TP[LW(4,5),Var("rt",FTy 5),Var("rd",FTy 5), Var("sel",FTy 3)]),qVar"state"]), (Call ("CP",CTy"instruction", Call ("DMTC0",CTy"CP", TP[Var("rt",FTy 5),Var("rd",FTy 5),Var("sel",FTy 3)])), TP[Call ("form3",F32, TP[LW(5,5),Var("rt",FTy 5),Var("rd",FTy 5), Var("sel",FTy 3)]),qVar"state"]), (Call ("Branch",CTy"instruction", Call ("BEQ",CTy"Branch", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(4,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)]), qVar"state"]), (Call ("Branch",CTy"instruction", Call ("BNE",CTy"Branch", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(5,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)]), qVar"state"]), (Call ("Branch",CTy"instruction", Call("BLEZ",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(6,6),Var("rs",FTy 5),LW(0,5),Var("imm",F16)]), qVar"state"]), (Call ("Branch",CTy"instruction", Call("BGTZ",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(7,6),Var("rs",FTy 5),LW(0,5),Var("imm",F16)]), qVar"state"]), (Call ("ArithI",CTy"instruction", Call ("ADDI",CTy"ArithI", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(8,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)]), qVar"state"]), (Call ("ArithI",CTy"instruction", Call ("ADDIU",CTy"ArithI", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(9,6),Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)]), qVar"state"]), (Call ("ArithI",CTy"instruction", Call ("SLTI",CTy"ArithI", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(10,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("ArithI",CTy"instruction", Call ("SLTIU",CTy"ArithI", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(11,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("ArithI",CTy"instruction", Call ("ANDI",CTy"ArithI", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(12,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("ArithI",CTy"instruction", Call ("ORI",CTy"ArithI", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(13,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("ArithI",CTy"instruction", Call ("XORI",CTy"ArithI", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(14,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("ArithI",CTy"instruction", Call("LUI",CTy"ArithI",TP[Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(15,6),LW(0,5),Var("rt",FTy 5),Var("imm",F16)]), qVar"state"]), (Call ("Branch",CTy"instruction", Call ("BEQL",CTy"Branch", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(20,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Branch",CTy"instruction", Call ("BNEL",CTy"Branch", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(21,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Branch",CTy"instruction", Call("BLEZL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(22,6),Var("rs",FTy 5),LW(0,5),Var("imm",F16)]), qVar"state"]), (Call ("Branch",CTy"instruction", Call("BGTZL",CTy"Branch",TP[Var("rs",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(23,6),Var("rs",FTy 5),LW(0,5),Var("imm",F16)]), qVar"state"]), (Call ("ArithI",CTy"instruction", Call ("DADDI",CTy"ArithI", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(24,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("ArithI",CTy"instruction", Call ("DADDIU",CTy"ArithI", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(25,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Load",CTy"instruction", Call ("LDL",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(26,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Load",CTy"instruction", Call ("LDR",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(27,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Load",CTy"instruction", Call ("LB",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(32,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Load",CTy"instruction", Call ("LH",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(33,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Load",CTy"instruction", Call ("LWL",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(34,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Load",CTy"instruction", Call ("LW",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(35,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Load",CTy"instruction", Call ("LBU",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(36,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Load",CTy"instruction", Call ("LHU",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(37,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Load",CTy"instruction", Call ("LWR",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(38,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Load",CTy"instruction", Call ("LWU",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(39,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Store",CTy"instruction", Call ("SB",CTy"Store", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(40,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Store",CTy"instruction", Call ("SH",CTy"Store", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(41,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Store",CTy"instruction", Call ("SWL",CTy"Store", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(42,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Store",CTy"instruction", Call ("SW",CTy"Store", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(43,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Store",CTy"instruction", Call ("SDL",CTy"Store", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(44,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Store",CTy"instruction", Call ("SDR",CTy"Store", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(45,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Store",CTy"instruction", Call ("SWR",CTy"Store", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(46,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Load",CTy"instruction", Call ("LL",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(48,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Load",CTy"instruction", Call ("LLD",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(52,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Load",CTy"instruction", Call ("LD",CTy"Load", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(55,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Store",CTy"instruction", Call ("SC",CTy"Store", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(56,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Store",CTy"instruction", Call ("SCD",CTy"Store", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(60,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("Store",CTy"instruction", Call ("SD",CTy"Store", TP[Var("rs",FTy 5),Var("rt",FTy 5),Var("imm",F16)])), TP[Call ("form4",F32, TP[LW(63,6),Var("rs",FTy 5),Var("rt",FTy 5), Var("imm",F16)]),qVar"state"]), (Call ("CACHE",CTy"instruction", TP[Var("rs",FTy 5),Var("opn",FTy 5),Var("imm",F16)]), TP[Call ("form4",F32, TP[LW(47,6),Var("rs",FTy 5),Var("opn",FTy 5), Var("imm",F16)]),qVar"state"]), (Const("SYSCALL",CTy"instruction"), TP[Mop(Cast F32,LW(12,6)),qVar"state"]), (Const("BREAK",CTy"instruction"), TP[Mop(Cast F32,LW(13,6)),qVar"state"]), (Call("SYNC",CTy"instruction",Var("imm5",FTy 5)), TP[Mop(Cast F32,CC[Var("imm5",FTy 5),LW(15,6)]),qVar"state"]), (Const("TLBR",CTy"instruction"), TP[LW(1107296257,32),qVar"state"]), (Const("TLBWI",CTy"instruction"), TP[LW(1107296258,32),qVar"state"]), (Const("TLBWR",CTy"instruction"), TP[LW(1107296262,32),qVar"state"]), (Const("TLBP",CTy"instruction"), TP[LW(1107296264,32),qVar"state"]), (Const("ERET",CTy"instruction"), TP[LW(1107296280,32),qVar"state"]), (Call ("RDHWR",CTy"instruction",TP[Var("rt",FTy 5),Var("rd",FTy 5)]), TP[Call ("form6",F32,TP[Var("rt",FTy 5),Var("rd",FTy 5),LW(59,6)]), qVar"state"]), (Const("WAIT",CTy"instruction"), TP[LW(1107296288,32),qVar"state"]), (Call("COP1",CTy"instruction",AVar(CTy"COP1")), TP[Call("COP1Encode",F32,Var("i",CTy"instruction")),qVar"state"]), (Call("COP2",CTy"instruction",AVar(CTy"COP2")), Apply (Call ("COP2Encode",ATy(qTy,PTy(F32,qTy)), Var("i",CTy"instruction")),qVar"state")), (Call("LWC2",CTy"instruction",AVar(CTy"LWC2")), Apply (Call ("LWC2Encode",ATy(qTy,PTy(F32,qTy)), Var("i",CTy"instruction")),qVar"state")), (Call("LDC2",CTy"instruction",AVar(CTy"LDC2")), Apply (Call ("LDC2Encode",ATy(qTy,PTy(F32,qTy)), Var("i",CTy"instruction")),qVar"state")), (Call("SWC2",CTy"instruction",AVar(CTy"SWC2")), Apply (Call ("SWC2Encode",ATy(qTy,PTy(F32,qTy)), Var("i",CTy"instruction")),qVar"state")), (Call("SDC2",CTy"instruction",AVar(CTy"SDC2")), Apply (Call ("SDC2Encode",ATy(qTy,PTy(F32,qTy)), Var("i",CTy"instruction")),qVar"state")), (Const("Unpredictable",CTy"instruction"), TP[LW(133169152,32),qVar"state"]), (Const("ReservedInstruction",CTy"instruction"), TP[LW(0,32),qVar"state"])]))) ; val hasCP1_def = Def0 ("hasCP1",LT) ; val COP1Init_def = Def ("COP1Init",AVar uTy, Close (qVar"state", Let(qVar"s", Rupd ("fcsr", TP[qVar"state", Rupd("FS",TP[Dest("fcsr",CTy"FCSR",qVar"state"),LF])]), Let(qVar"s", Rupd ("fcsr", TP[qVar"s", Rupd("FCC",TP[Dest("fcsr",CTy"FCSR",qVar"s"),LW(0,8)])]), Let(qVar"s", Rupd ("fcsr", TP[qVar"s", Rupd ("ABS2008",TP[Dest("fcsr",CTy"FCSR",qVar"s"),LF])]), Let(qVar"s", Rupd ("fcsr", TP[qVar"s", Rupd ("NAN2008", TP[Dest("fcsr",CTy"FCSR",qVar"s"),LT])]), Let(qVar"s", Rupd ("fcsr", TP[qVar"s", Rupd ("CauseE", TP[Dest("fcsr",CTy"FCSR",qVar"s"),LF])]), Let(qVar"s", Rupd ("fcsr", TP[qVar"s", Rupd ("CauseV", TP[Dest("fcsr",CTy"FCSR",qVar"s"), LF])]), Let(qVar"s", Rupd ("fcsr", TP[qVar"s", Rupd ("CauseZ", TP[Dest ("fcsr",CTy"FCSR",qVar"s"), LF])]), Let(qVar"s", Rupd ("fcsr", TP[qVar"s", Rupd ("CauseO", TP[Dest ("fcsr",CTy"FCSR", qVar"s"),LF])]), Let(qVar"s", Rupd ("fcsr", TP[qVar"s", Rupd ("CauseU", TP[Dest ("fcsr",CTy"FCSR", qVar"s"),LF])]), Let(qVar"s", Rupd ("fcsr", TP[qVar"s", Rupd ("CauseI", TP[Dest ("fcsr", CTy"FCSR", qVar"s"),LF])]), Let(qVar"s", Rupd ("fcsr", TP[qVar"s", Rupd ("EnableV", TP[Dest ("fcsr", CTy"FCSR", qVar"s"), LF])]), Let(qVar"s", Rupd ("fcsr", TP[qVar"s", Rupd ("EnableZ", TP[Dest ("fcsr", CTy"FCSR", qVar"s"), LF])]), Let(qVar"s", Rupd ("fcsr", TP[qVar"s", Rupd ("EnableO", TP[Dest ("fcsr", CTy"FCSR", qVar"s"), LF])]), Let(qVar"s", Rupd ("fcsr", TP[qVar"s", Rupd ("EnableU", TP[Dest ("fcsr", CTy"FCSR", qVar"s"), LF])]), Let(qVar"s", Rupd ("fcsr", TP[qVar"s", Rupd ("EnableI", TP[Dest ("fcsr", CTy"FCSR", qVar"s"), LF])]), Let(qVar"s", Rupd ("fcsr", TP[qVar"s", Rupd ("FlagV", TP[Dest ("fcsr", CTy"FCSR", qVar"s"), LF])]), Let(qVar"s", Rupd ("fcsr", TP[qVar"s", Rupd ("FlagZ", TP[Dest ("fcsr", CTy"FCSR", qVar"s"), LF])]), Let(qVar"s", Rupd ("fcsr", TP[qVar"s", Rupd ("FlagO", TP[Dest ("fcsr", CTy"FCSR", qVar"s"), LF])]), Let(qVar"s", Rupd ("fcsr", TP[qVar"s", Rupd ("FlagU", TP[Dest ("fcsr", CTy"FCSR", qVar"s"), LF])]), Let(qVar"s", Rupd ("fcsr", TP[qVar"s", Rupd ("FlagI", TP[Dest ("fcsr", CTy"FCSR", qVar"s"), LF])]), Let(qVar"s", Rupd ("fcsr", TP[qVar"s", Rupd ("RM", TP[Dest ("fcsr", CTy"FCSR", qVar"s"), LW(0, 2)])]), Let(qVar"s", Rupd ("fir", TP[qVar"s", Rupd ("F64", TP[Dest ("fir", CTy"FIR", qVar"s"), LT])]), Let(qVar"s", Rupd ("fir", TP[qVar"s", Rupd ("L", TP[Dest ("fir", CTy"FIR", qVar"s"), LT])]), Let(qVar"s", Rupd ("fir", TP[qVar"s", Rupd ("W", TP[Dest ("fir", CTy"FIR", qVar"s"), LT])]), Let(qVar"s", Rupd ("fir", TP[qVar"s", Rupd ("ASE", TP[Dest ("fir", CTy"FIR", qVar"s"), LF])]), Let(qVar"s", Rupd ("fir", TP[qVar"s", Rupd ("PS", TP[Dest ("fir", CTy"FIR", qVar"s"), LF])]), Let(qVar"s", Rupd ("fir", TP[qVar"s", Rupd ("D", TP[Dest ("fir", CTy"FIR", qVar"s"), LT])]), Let(qVar"s", Rupd ("fir", TP[qVar"s", Rupd ("S", TP[Dest ("fir", CTy"FIR", qVar"s"), LT])]), Let(qVar"s", Rupd ("fir", TP[qVar"s", Rupd ("PrID", TP[Dest ("fir", CTy"FIR", qVar"s"), LW(0, 8)])]), Rupd ("fir", TP[qVar"s", Rupd ("Rev", TP[Dest ("fir", CTy"FIR", qVar"s"), LW(0, 8)])])))))))))))))))))))))))))))))))) ; val log_instruction_def = Def ("log_instruction",TP[Var("w",F32),Var("inst",CTy"instruction")], Close (qVar"state", CC[LS"instr ",Mop(Cast sTy,Dest("procID",F8,qVar"state")),LS" ", Mop(Cast sTy,Dest("instCnt",nTy,qVar"state")),LS" ", Mop(Drop, TP[LN 2, Call ("hex",sTy, Bop(Add,Apply(Const("PC",ATy(qTy,F64)),qVar"state"), Call ("getBase",F64, Apply (Const("PCC",ATy(qTy,CTy"Capability")), qVar"state"))))]),LS" : ", Mop(Drop,TP[LN 2,Call("hex",sTy,Var("w",F32))]),LS" ", Call("instructionToString",sTy,Var("inst",CTy"instruction"))])) ; val Next_def = Def ("Next",qVar"state", Let(TP[Var("v",OTy F32),qVar"s"], Apply (Const("Fetch",ATy(qTy,PTy(OTy F32,qTy))), Rupd("currentInst",TP[qVar"state",LO F32])), Let(qVar"s",Rupd("currentInst",TP[qVar"s",Var("v",OTy F32)]), Let(TP[Var("v",OTy F64),qVar"s"], Let(qVar"s0", CS(Dest("currentInst",OTy F32,qVar"s"), [(Mop(Some,Var("w",F32)), Apply (Call ("Run",ATy(qTy,qTy), Call("Decode",CTy"instruction",Var("w",F32))), qVar"s")),(LO F32,qVar"s")]), TP[Apply (Const("BranchDelay",ATy(qTy,OTy F64)),qVar"s0"), qVar"s0"]), Let(TP[Var("v",CTy"CP0"),qVar"s"], Let(qVar"s0", Apply (Call("write'exceptionSignalled",ATy(qTy,qTy),LF), CS(TP[Var("v",OTy F64), Apply (Const("BranchTo",ATy(qTy,OTy F64)), qVar"s"), Dest ("BranchDelayPCC", OTy(PTy(F64,CTy"Capability")),qVar"s"), Dest ("BranchToPCC", OTy(PTy(F64,CTy"Capability")),qVar"s")], [(TP[LO F64,LO F64, LO(PTy(F64,CTy"Capability")), LO(PTy(F64,CTy"Capability"))], ITE(Mop(Not, Apply (Const ("exceptionSignalled", ATy(qTy,bTy)),qVar"s")), Apply (Call ("write'PC",ATy(qTy,qTy), Bop(Add, Apply (Const("PC",ATy(qTy,F64)), qVar"s"),LW(4,64))), qVar"s"),qVar"s")), (TP[Mop(Some,Var("addr",F64)),LO F64, LO(PTy(F64,CTy"Capability")), LO(PTy(F64,CTy"Capability"))], Apply (Call ("write'PC",ATy(qTy,qTy), Var("addr",F64)), Rupd ("CCallBranchDelay", TP[Apply (Call ("write'BranchDelay", ATy(qTy,qTy),LO F64),qVar"s"), LF]))), (TP[LO F64,Mop(Some,Var("addr",F64)), LO(PTy(F64,CTy"Capability")), LO(PTy(F64,CTy"Capability"))], Let(qVar"s", Apply (Call ("write'BranchDelay",ATy(qTy,qTy), Mop(Some,Var("addr",F64))), qVar"s"), Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", Rupd ("CCallBranch", TP[Apply (Call ("write'BranchTo", ATy(qTy,qTy),LO F64), Rupd ("CCallBranchDelay", TP[qVar"s", Dest ("CCallBranch", bTy,qVar"s")])), LF]), TP[Apply (Const("PC",ATy(qTy,F64)), qVar"s0"),qVar"s0"]), Apply (Call ("write'PC",ATy(qTy,qTy), Bop(Add,Var("v",F64),LW(4,64))), qVar"s")))), (TP[LO F64,LO F64, Mop(Some, TP[Var("addr",F64), Var("cap",CTy"Capability")]), LO(PTy(F64,CTy"Capability"))], Apply (Call ("write'PCC",ATy(qTy,qTy), Var("cap",CTy"Capability")), Apply (Call ("write'PC",ATy(qTy,qTy), Var("addr",F64)), Rupd ("CCallBranchDelay", TP[Rupd ("BranchDelayPCC", TP[qVar"s", LO(PTy(F64, CTy"Capability"))]), LF])))), (TP[LO F64,LO F64, LO(PTy(F64,CTy"Capability")), Mop(Some, TP[Var("addr",F64), Var("cap",CTy"Capability")])], Let(qVar"s", Rupd ("BranchDelayPCC", TP[qVar"s", Mop(Some, TP[Var("addr",F64), Var("cap",CTy"Capability")])]), Let(TP[Var("v",F64),qVar"s"], Let(qVar"s0", Rupd ("CCallBranch", TP[Rupd ("BranchToPCC", TP[Rupd ("CCallBranchDelay", TP[qVar"s", Dest ("CCallBranch", bTy, qVar"s")]), LO(PTy(F64, CTy"Capability"))]), LF]), TP[Apply (Const("PC",ATy(qTy,F64)), qVar"s0"),qVar"s0"]), Apply (Call ("write'PC",ATy(qTy,qTy), Bop(Add,Var("v",F64),LW(4,64))), qVar"s")))), (AVar (PTy(OTy F64, PTy(OTy F64, PTy(OTy(PTy(F64,CTy"Capability")), OTy(PTy(F64,CTy"Capability")))))), Mop(Snd, Apply (Call ("raise'exception", ATy(qTy,PTy(uTy,qTy)), Call ("UNPREDICTABLE", CTy"exception", LS"Branch follows branch")), qVar"s")))])), TP[Apply(Const("CP0",ATy(qTy,CTy"CP0")),qVar"s0"), qVar"s0"]), Apply (Call ("write'CP0",ATy(qTy,qTy), Rupd ("Count", TP[Var("v",CTy"CP0"), Bop(Add, Dest ("Count",F32, Apply (Const("CP0",ATy(qTy,CTy"CP0")), qVar"s")),LW(1,32))])),qVar"s")))))) ; val hasCP2_def = Def0 ("hasCP2",LT) ; val COP2Init_def = Def ("COP2Init",AVar uTy, Close (qVar"state", Let(Var("s0",CTy"CapCause"), Rupd ("RegNum", TP[Rupd("ExcCode",TP[LX(CTy"CapCause"),LW(0,8)]),LW(0,8)]), Mop(Snd, Mop(Snd, Apply (For(TP[LN 0,LN 31, Close (nVar"i", Close (Var("state",PTy(CTy"CapCause",qTy)), TP[LU, Mop(Fst, Var("state", PTy(CTy"CapCause",qTy))), Apply (Call ("write'CAPR",ATy(qTy,qTy), TP[Const ("defaultCap", CTy"Capability"), Mop(Cast(FTy 5),nVar"i")]), Mop(Snd, Var("state", PTy(CTy"CapCause",qTy))))]))]), TP[Var("s0",CTy"CapCause"), Apply (Call ("write'PCC",ATy(qTy,qTy), Const("defaultCap",CTy"Capability")), Rupd ("capcause", TP[qVar"state",Var("s0",CTy"CapCause")]))])))))) val () = Import.finish 0