1(* armScript.sml - generated by L<3> - Fri Mar 14 11:12:38 2014 *) 2open HolKernel boolLib bossLib Import 3 4val () = Import.start "arm" 5 6open monadsyntax 7val _ = Construct 8 [("Architecture", 9 [("ARMv4",[]),("ARMv4T",[]),("ARMv5T",[]),("ARMv5TE",[]),("ARMv6",[]), 10 ("ARMv6K",[]),("ARMv6T2",[]),("ARMv7_A",[]),("ARMv7_R",[])])] 11; 12val _ = Construct 13 [("Extensions", 14 [("Extension_ThumbEE",[]),("Extension_Security",[]), 15 ("Extension_Multiprocessing",[]),("Extension_Virtualization",[]), 16 ("Extension_VFP",[]),("Extension_AdvanvedSIMD",[])])] 17; 18val _ = Record 19 ("PSR", 20 [("A",bTy),("C",bTy),("E",bTy),("F",bTy),("GE",F4),("I",bTy),("IT",F8), 21 ("J",bTy),("M",FTy 5),("N",bTy),("Q",bTy),("T",bTy),("V",bTy), 22 ("Z",bTy),("psr'rst",F4)]) 23; 24val _ = Record ("CP14",[("TEEHBR",F32)]) 25; 26val _ = Record 27 ("SCTLR", 28 [("A",bTy),("B",bTy),("BR",bTy),("C",bTy),("DZ",bTy),("EE",bTy), 29 ("FI",bTy),("I",bTy),("IE",bTy),("M",bTy),("NMFI",bTy),("RR",bTy), 30 ("SW",bTy),("TE",bTy),("U",bTy),("V",bTy),("VE",bTy),("Z",bTy), 31 ("sctlr'rst",FTy 14)]) 32; 33val _ = Record 34 ("HSCTLR", 35 [("A",bTy),("C",bTy),("CP15BEN",bTy),("EE",bTy),("FI",bTy),("I",bTy), 36 ("M",bTy),("TE",bTy),("WXN",bTy),("hsctlr'rst",FTy 23)]) 37; 38val _ = Record ("HSR",[("EC",FTy 6),("IL",bTy),("ISS",FTy 25)]) 39; 40val _ = Record 41 ("SCR", 42 [("AW",bTy),("EA",bTy),("FIQ",bTy),("FW",bTy),("HCE",bTy),("IRQ",bTy), 43 ("NS",bTy),("SCD",bTy),("SIF",bTy),("nET",bTy),("scr'rst",FTy 22)]) 44; 45val _ = Record 46 ("NSACR", 47 [("NSASEDIS",bTy),("NSD32DIS",bTy),("NSTRCDIS",bTy),("RFR",bTy), 48 ("cp",FTy 14),("nsacr'rst",FTy 14)]) 49; 50val _ = Record 51 ("HCR", 52 [("AMO",bTy),("BSU",FTy 2),("DC",bTy),("FB",bTy),("FMO",bTy), 53 ("IMO",bTy),("PTW",bTy),("SWIO",bTy),("TAC",bTy),("TGE",bTy), 54 ("TID",F4),("TIDCP",bTy),("TPC",bTy),("TPU",bTy),("TSC",bTy), 55 ("TSW",bTy),("TTLB",bTy),("TVM",bTy),("TWE",bTy),("TWI",bTy), 56 ("VA",bTy),("VF",bTy),("VI",bTy),("VM",bTy),("hcr'rst",F4)]) 57; 58val _ = Record 59 ("CP15", 60 [("HCR",CTy"HCR"),("HSCTLR",CTy"HSCTLR"),("HSR",CTy"HSR"), 61 ("MVBAR",F32),("NSACR",CTy"NSACR"),("SCR",CTy"SCR"), 62 ("SCTLR",CTy"SCTLR"),("VBAR",F32)]) 63; 64val _ = Construct 65 [("InstrSet", 66 [("InstrSet_ARM",[]),("InstrSet_Thumb",[]),("InstrSet_Jazelle",[]), 67 ("InstrSet_ThumbEE",[])])] 68; 69val _ = Construct 70 [("Encoding", 71 [("Encoding_Thumb",[]),("Encoding_Thumb2",[]),("Encoding_ARM",[])])] 72; 73val _ = Construct 74 [("RName", 75 [("RName_0usr",[]),("RName_1usr",[]),("RName_2usr",[]), 76 ("RName_3usr",[]),("RName_4usr",[]),("RName_5usr",[]), 77 ("RName_6usr",[]),("RName_7usr",[]),("RName_8usr",[]), 78 ("RName_8fiq",[]),("RName_9usr",[]),("RName_9fiq",[]), 79 ("RName_10usr",[]),("RName_10fiq",[]),("RName_11usr",[]), 80 ("RName_11fiq",[]),("RName_12usr",[]),("RName_12fiq",[]), 81 ("RName_SPusr",[]),("RName_SPfiq",[]),("RName_SPirq",[]), 82 ("RName_SPsvc",[]),("RName_SPabt",[]),("RName_SPund",[]), 83 ("RName_SPmon",[]),("RName_SPhyp",[]),("RName_LRusr",[]), 84 ("RName_LRfiq",[]),("RName_LRirq",[]),("RName_LRsvc",[]), 85 ("RName_LRabt",[]),("RName_LRund",[]),("RName_LRmon",[]), 86 ("RName_PC",[])])] 87; 88val _ = Construct 89 [("rights", 90 [("Restricted",[]),("ReadPermit",[]),("ReadWritePermit",[]), 91 ("XNeverRead",[]),("XNeverReadWrite",[])])] 92; 93val _ = Construct 94 [("SRType", 95 [("SRType_LSL",[]),("SRType_LSR",[]),("SRType_ASR",[]), 96 ("SRType_ROR",[]),("SRType_RRX",[])])] 97; 98val _ = Construct 99 [("offset1", 100 [("immediate_form1",[F32]), 101 ("register_form1",[PTy(F4,PTy(CTy"SRType",nTy))])])] 102; 103val _ = Construct 104 [("offset2",[("immediate_form2",[F32]),("register_form2",[F4])])] 105; 106val _ = Construct 107 [("Hint", 108 [("Breakpoint",[F32]),("DataMemoryBarrier",[F4]), 109 ("DataSynchronizationBarrier",[F4]),("Debug",[F4]), 110 ("InstructionSynchronizationBarrier",[F4]), 111 ("PreloadData",[PTy(bTy,PTy(bTy,PTy(F4,CTy"offset1")))]), 112 ("PreloadDataLiteral",[PTy(bTy,F32)]), 113 ("PreloadInstruction",[PTy(bTy,PTy(F4,CTy"offset1"))]), 114 ("SendEvent",[]),("WaitForEvent",[]),("WaitForInterrupt",[]), 115 ("Yield",[])])] 116; 117val _ = Construct 118 [("System", 119 [("ChangeProcessorState", 120 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(bTy,PTy(bTy,PTy(bTy,FTy 5))))))]), 121 ("ChangeProcessorStateT1",[PTy(bTy,PTy(bTy,PTy(bTy,bTy)))]), 122 ("EnterxLeavex",[bTy]),("ExceptionReturn",[]), 123 ("HypervisorCall",[F16]), 124 ("MoveToBankedOrSpecialRegister",[PTy(bTy,PTy(FTy 5,F4))]), 125 ("MoveToRegisterFromBankedOrSpecial",[PTy(bTy,PTy(FTy 5,F4))]), 126 ("MoveToRegisterFromSpecial",[PTy(bTy,F4)]), 127 ("MoveToSpecialFromImmediate",[PTy(bTy,PTy(F32,F4))]), 128 ("MoveToSpecialFromRegister",[PTy(bTy,PTy(F4,F4))]), 129 ("ReturnFromException",[PTy(bTy,PTy(bTy,PTy(bTy,F4)))]), 130 ("SecureMonitorCall",[F4]),("Setend",[bTy]), 131 ("StoreReturnState",[PTy(bTy,PTy(bTy,PTy(bTy,FTy 5)))]), 132 ("SupervisorCall",[F32])])] 133; 134val _ = Construct 135 [("Store", 136 [("StoreByte", 137 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))]), 138 ("StoreByteUnprivileged", 139 [PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))]), 140 ("StoreDual", 141 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,CTy"offset2"))))))]), 142 ("StoreExclusive",[PTy(F4,PTy(F4,PTy(F4,F32)))]), 143 ("StoreExclusiveByte",[PTy(F4,PTy(F4,F4))]), 144 ("StoreExclusiveDoubleword",[PTy(F4,PTy(F4,PTy(F4,F4)))]), 145 ("StoreExclusiveHalf",[PTy(F4,PTy(F4,F4))]), 146 ("StoreHalf", 147 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))]), 148 ("StoreHalfUnprivileged", 149 [PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset2"))))]), 150 ("StoreMultiple",[PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,F16))))]), 151 ("StoreMultipleUserRegisters",[PTy(bTy,PTy(bTy,PTy(F4,F16)))]), 152 ("StoreUnprivileged",[PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))]), 153 ("StoreWord", 154 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))])])] 155; 156val _ = Construct 157 [("Load", 158 [("LoadByte", 159 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))]), 160 ("LoadByteLiteral",[PTy(bTy,PTy(bTy,PTy(F4,F32)))]), 161 ("LoadByteUnprivileged", 162 [PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))]), 163 ("LoadDual", 164 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,CTy"offset2"))))))]), 165 ("LoadDualLiteral",[PTy(bTy,PTy(F4,PTy(F4,F32)))]), 166 ("LoadExclusive",[PTy(F4,PTy(F4,F32))]), 167 ("LoadExclusiveByte",[PTy(F4,F4)]), 168 ("LoadExclusiveDoubleword",[PTy(F4,PTy(F4,F4))]), 169 ("LoadExclusiveHalf",[PTy(F4,F4)]), 170 ("LoadHalf", 171 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))]), 172 ("LoadHalfLiteral",[PTy(bTy,PTy(bTy,PTy(F4,F32)))]), 173 ("LoadHalfUnprivileged", 174 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset2")))))]), 175 ("LoadLiteral",[PTy(bTy,PTy(F4,F32))]), 176 ("LoadMultiple",[PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,F16))))]), 177 ("LoadMultipleExceptionReturn", 178 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,FTy 15))))]), 179 ("LoadMultipleUserRegisters",[PTy(bTy,PTy(bTy,PTy(F4,FTy 15)))]), 180 ("LoadSignedByteUnprivileged", 181 [PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset2"))))]), 182 ("LoadUnprivileged",[PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))]), 183 ("LoadWord",[PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))])])] 184; 185val _ = Construct 186 [("Media", 187 [("BitFieldClearOrInsert",[PTy(F4,PTy(F4,PTy(nTy,nTy)))]), 188 ("BitFieldExtract",[PTy(bTy,PTy(F4,PTy(F4,PTy(nTy,nTy))))]), 189 ("ByteReverse",[PTy(F4,F4)]), 190 ("ByteReversePackedHalfword",[PTy(F4,F4)]), 191 ("ByteReverseSignedHalfword",[PTy(F4,F4)]), 192 ("ExtendByte",[PTy(bTy,PTy(F4,PTy(F4,PTy(F4,nTy))))]), 193 ("ExtendByte16",[PTy(bTy,PTy(F4,PTy(F4,PTy(F4,nTy))))]), 194 ("ExtendHalfword",[PTy(bTy,PTy(F4,PTy(F4,PTy(F4,nTy))))]), 195 ("PackHalfword", 196 [PTy(CTy"SRType",PTy(nTy,PTy(bTy,PTy(F4,PTy(F4,F4)))))]), 197 ("ReverseBits",[PTy(F4,F4)]), 198 ("Saturate",[PTy(CTy"SRType",PTy(nTy,PTy(nTy,PTy(bTy,PTy(F4,F4)))))]), 199 ("Saturate16",[PTy(nTy,PTy(bTy,PTy(F4,F4)))]), 200 ("SaturatingAddSubtract",[PTy(FTy 2,PTy(F4,PTy(F4,F4)))]), 201 ("SelectBytes",[PTy(F4,PTy(F4,F4))])])] 202; 203val _ = Construct 204 [("SIMD", 205 [("SignedAddSub16",[PTy(FTy 2,PTy(F4,PTy(F4,F4)))]), 206 ("SignedAddSub8",[PTy(bTy,PTy(F4,PTy(F4,F4)))]), 207 ("SignedHalvingAddSub16",[PTy(FTy 2,PTy(F4,PTy(F4,F4)))]), 208 ("SignedHalvingAddSub8",[PTy(bTy,PTy(F4,PTy(F4,F4)))]), 209 ("SignedSaturatingAddSub16",[PTy(FTy 2,PTy(F4,PTy(F4,F4)))]), 210 ("SignedSaturatingAddSub8",[PTy(bTy,PTy(F4,PTy(F4,F4)))]), 211 ("UnsignedAddSub16",[PTy(FTy 2,PTy(F4,PTy(F4,F4)))]), 212 ("UnsignedAddSub8",[PTy(bTy,PTy(F4,PTy(F4,F4)))]), 213 ("UnsignedHalvingAddSub16",[PTy(FTy 2,PTy(F4,PTy(F4,F4)))]), 214 ("UnsignedHalvingAddSub8",[PTy(bTy,PTy(F4,PTy(F4,F4)))]), 215 ("UnsignedSaturatingAddSub16",[PTy(FTy 2,PTy(F4,PTy(F4,F4)))]), 216 ("UnsignedSaturatingAddSub8",[PTy(bTy,PTy(F4,PTy(F4,F4)))]), 217 ("UnsignedSumAbsoluteDifferences",[PTy(F4,PTy(F4,PTy(F4,F4)))])])] 218; 219val _ = Construct 220 [("Multiply", 221 [("Multiply32",[PTy(bTy,PTy(F4,PTy(F4,F4)))]), 222 ("MultiplyAccumulate",[PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))]), 223 ("MultiplyAccumulateAccumulate",[PTy(F4,PTy(F4,PTy(F4,F4)))]), 224 ("MultiplyLong", 225 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))))]), 226 ("MultiplySubtract",[PTy(F4,PTy(F4,PTy(F4,F4)))]), 227 ("Signed16Multiply32Accumulate", 228 [PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))]), 229 ("Signed16Multiply32Result",[PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,F4))))]), 230 ("Signed16Multiply64Accumulate", 231 [PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))]), 232 ("Signed16x32Multiply32Accumulate", 233 [PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))]), 234 ("Signed16x32Multiply32Result",[PTy(bTy,PTy(F4,PTy(F4,F4)))]), 235 ("SignedMostSignificantMultiply", 236 [PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))]), 237 ("SignedMostSignificantMultiplySubtract", 238 [PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))]), 239 ("SignedMultiplyDual",[PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))]), 240 ("SignedMultiplyLongDual", 241 [PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))])])] 242; 243val _ = Construct 244 [("Data", 245 [("AddSub",[PTy(bTy,PTy(F4,PTy(F4,FTy 12)))]), 246 ("ArithLogicImmediate",[PTy(F4,PTy(bTy,PTy(F4,PTy(F4,FTy 12))))]), 247 ("CountLeadingZeroes",[PTy(F4,F4)]), 248 ("Move",[PTy(bTy,PTy(bTy,PTy(F4,FTy 12)))]), 249 ("MoveHalfword",[PTy(bTy,PTy(F4,F16))]), 250 ("Register", 251 [PTy(F4,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,PTy(CTy"SRType",nTy))))))]), 252 ("RegisterShiftedRegister", 253 [PTy(F4,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,PTy(CTy"SRType",F4))))))]), 254 ("ShiftImmediate", 255 [PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(CTy"SRType",nTy)))))]), 256 ("ShiftRegister", 257 [PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(CTy"SRType",F4)))))]), 258 ("TestCompareImmediate",[PTy(FTy 2,PTy(F4,FTy 12))]), 259 ("TestCompareRegister", 260 [PTy(FTy 2,PTy(F4,PTy(F4,PTy(CTy"SRType",nTy))))])])] 261; 262val _ = Construct 263 [("Branch", 264 [("BranchExchange",[F4]), 265 ("BranchLinkExchangeImmediate",[PTy(CTy"InstrSet",F32)]), 266 ("BranchLinkExchangeRegister",[F4]),("BranchTarget",[F32]), 267 ("CheckArray",[PTy(F4,F4)]),("CompareBranch",[PTy(bTy,PTy(F4,F32))]), 268 ("HandlerBranchLink",[PTy(bTy,F32)]), 269 ("HandlerBranchLinkParameter",[PTy(F32,F32)]), 270 ("HandlerBranchParameter",[PTy(F32,F32)]), 271 ("TableBranchByte",[PTy(bTy,PTy(F4,F4))])])] 272; 273val _ = Construct 274 [("instruction", 275 [("Branch",[CTy"Branch"]),("ClearExclusive",[]),("Data",[CTy"Data"]), 276 ("Divide",[PTy(bTy,PTy(F4,PTy(F4,F4)))]),("Hint",[CTy"Hint"]), 277 ("IfThen",[PTy(F4,F4)]),("Load",[CTy"Load"]),("Media",[CTy"Media"]), 278 ("Multiply",[CTy"Multiply"]),("NoOperation",[]),("SIMD",[CTy"SIMD"]), 279 ("Store",[CTy"Store"]),("Swap",[PTy(bTy,PTy(F4,PTy(F4,F4)))]), 280 ("System",[CTy"System"]),("Undefined",[F32])])] 281; 282val _ = Construct 283 [("MachineCode", 284 [("ARM",[F32]),("Thumb",[F16]),("Thumb2",[PTy(F16,F16)]), 285 ("ThumbEE",[F16])])] 286; 287val _ = Construct 288 [("exception", 289 [("ASSERT",[sTy]),("IMPLEMENTATION_DEFINED",[sTy]),("NoException",[]), 290 ("UNPREDICTABLE",[sTy])])] 291; 292val _ = Record 293 ("arm_state", 294 [("Architecture",CTy"Architecture"),("CP14",CTy"CP14"), 295 ("CP15",CTy"CP15"),("CPSR",CTy"PSR"), 296 ("ClearExclusiveLocal", 297 ATy(PTy(iTy,PTy(LTy(STy F32),STy(PTy(F32,nTy)))), 298 PTy(LTy(STy F32),STy(PTy(F32,nTy))))),("CurrentCondition",F4), 299 ("ELR_hyp",F32),("Encoding",CTy"Encoding"), 300 ("ExclusiveMonitorsPass", 301 ATy(PTy(F32,PTy(nTy,PTy(LTy(STy F32),STy(PTy(F32,nTy))))),bTy)), 302 ("Extensions",STy(CTy"Extensions")),("MEM",ATy(F32,F8)), 303 ("REG",ATy(CTy"RName",F32)),("SPSR_abt",CTy"PSR"), 304 ("SPSR_fiq",CTy"PSR"),("SPSR_hyp",CTy"PSR"),("SPSR_irq",CTy"PSR"), 305 ("SPSR_mon",CTy"PSR"),("SPSR_svc",CTy"PSR"),("SPSR_und",CTy"PSR"), 306 ("SetExclusiveMonitors", 307 ATy(PTy(F32,PTy(nTy,PTy(LTy(STy F32),STy(PTy(F32,nTy))))), 308 PTy(LTy(STy F32),STy(PTy(F32,nTy))))),("data_abort",bTy), 309 ("exception",CTy"exception"), 310 ("exclusive_state",PTy(LTy(STy F32),STy(PTy(F32,nTy)))), 311 ("external_abort_oracle",ATy(nTy,bTy)), 312 ("external_abort_oracle_count",nTy),("isfetch",bTy), 313 ("rights_map",ATy(F32,CTy"rights")),("transfer_unknown",bTy), 314 ("translate_address",ATy(F32,OTy F32)),("undefined",bTy)]) 315; 316val qTy = CTy "arm_state"; 317fun qVar v = Term.mk_var (v, ParseDatatype.pretypeToType qTy); 318val raise'exception_def = Def 319 ("raise'exception",Var("e",CTy"exception"), 320 MB(MR(Close(qVar"s",Dest("exception",CTy"exception",qVar"s"))), 321 Close 322 (Var("v",CTy"exception"), 323 MB(MB(MU(EQ(Var("v",CTy"exception"), 324 Const("NoException",CTy"exception")),qTy), 325 Close 326 (bVar"b", 327 ITE(bVar"b", 328 MW(Close 329 (qVar"s", 330 Rupd 331 ("exception", 332 TP[qVar"s",Var("e",CTy"exception")]))), 333 MU(LU,qTy)))),Close(AVar uTy,MU(LX(VTy"a"),qTy)))))) 334; 335val ArchVersion_def = Def 336 ("ArchVersion",AVar uTy, 337 MB(MR(Close(qVar"s",Dest("Architecture",CTy"Architecture",qVar"s"))), 338 Close 339 (Var("x",CTy"Architecture"), 340 MU(CS(Var("x",CTy"Architecture"), 341 [(LC("ARMv4",CTy"Architecture"),LN 4), 342 (LC("ARMv4T",CTy"Architecture"),LN 4), 343 (LC("ARMv5T",CTy"Architecture"),LN 5), 344 (LC("ARMv5TE",CTy"Architecture"),LN 5), 345 (LC("ARMv6",CTy"Architecture"),LN 6), 346 (LC("ARMv6K",CTy"Architecture"),LN 6), 347 (LC("ARMv6T2",CTy"Architecture"),LN 6), 348 (LC("ARMv7_A",CTy"Architecture"),LN 7), 349 (LC("ARMv7_R",CTy"Architecture"),LN 7)]),qTy)))) 350; 351val HaveDSPSupport_def = Def 352 ("HaveDSPSupport",AVar uTy, 353 MB(MR(Close(qVar"s",Dest("Architecture",CTy"Architecture",qVar"s"))), 354 Close 355 (Var("v",CTy"Architecture"), 356 MB(MU(Bop(In,Var("v",CTy"Architecture"), 357 SL[LC("ARMv4",CTy"Architecture"), 358 LC("ARMv4T",CTy"Architecture"), 359 LC("ARMv5T",CTy"Architecture")]),qTy), 360 Close(bVar"v",MU(Mop(Not,bVar"v"),qTy)))))) 361; 362val HaveThumb2_def = Def 363 ("HaveThumb2",AVar uTy, 364 MB(MR(Close(qVar"s",Dest("Architecture",CTy"Architecture",qVar"s"))), 365 Close 366 (Var("v",CTy"Architecture"), 367 MU(Bop(In,Var("v",CTy"Architecture"), 368 SL[LC("ARMv6T2",CTy"Architecture"), 369 LC("ARMv7_A",CTy"Architecture"), 370 LC("ARMv7_R",CTy"Architecture")]),qTy)))) 371; 372val HaveThumbEE_def = Def 373 ("HaveThumbEE",AVar uTy, 374 MB(MR(Close(qVar"s",Dest("Architecture",CTy"Architecture",qVar"s"))), 375 Close 376 (Var("v",CTy"Architecture"), 377 MB(MU(EQ(Var("v",CTy"Architecture"), 378 LC("ARMv7_A",CTy"Architecture")),qTy), 379 Close 380 (bVar"b", 381 ITE(bVar"b",MU(LT,qTy), 382 MB(MR(Close 383 (qVar"s", 384 Dest("Architecture",CTy"Architecture",qVar"s"))), 385 Close 386 (Var("v",CTy"Architecture"), 387 MB(MU(EQ(Var("v",CTy"Architecture"), 388 LC("ARMv7_R",CTy"Architecture")),qTy), 389 Close 390 (bVar"b", 391 ITE(bVar"b", 392 MB(MR(Close 393 (qVar"s", 394 Dest 395 ("Extensions", 396 STy(CTy"Extensions"), 397 qVar"s"))), 398 Close 399 (Var("v",STy(CTy"Extensions")), 400 MU(Bop(In, 401 LC("Extension_ThumbEE", 402 CTy"Extensions"), 403 Var("v", 404 STy(CTy"Extensions"))), 405 qTy))),MU(LF,qTy)))))))))))) 406; 407val HaveMPExt_def = Def 408 ("HaveMPExt",AVar uTy, 409 MB(Call("ArchVersion",ATy(qTy,PTy(nTy,qTy)),LU), 410 Close 411 (nVar"v", 412 MB(MU(Bop(Ge,nVar"v",LN 7),qTy), 413 Close 414 (bVar"b", 415 ITE(bVar"b", 416 MB(MR(Close 417 (qVar"s", 418 Dest 419 ("Extensions",STy(CTy"Extensions"),qVar"s"))), 420 Close 421 (Var("v",STy(CTy"Extensions")), 422 MU(Bop(In, 423 LC("Extension_Multiprocessing", 424 CTy"Extensions"), 425 Var("v",STy(CTy"Extensions"))),qTy))), 426 MU(LF,qTy))))))) 427; 428val HaveSecurityExt_def = Def 429 ("HaveSecurityExt",AVar uTy, 430 MB(MR(Close(qVar"s",Dest("Architecture",CTy"Architecture",qVar"s"))), 431 Close 432 (Var("v",CTy"Architecture"), 433 MB(MU(Bop(In,Var("v",CTy"Architecture"), 434 SL[LC("ARMv6K",CTy"Architecture"), 435 LC("ARMv7_A",CTy"Architecture")]),qTy), 436 Close 437 (bVar"b", 438 ITE(bVar"b", 439 MB(MR(Close 440 (qVar"s", 441 Dest 442 ("Extensions",STy(CTy"Extensions"),qVar"s"))), 443 Close 444 (Var("v",STy(CTy"Extensions")), 445 MU(Bop(In, 446 LC("Extension_Security",CTy"Extensions"), 447 Var("v",STy(CTy"Extensions"))),qTy))), 448 MU(LF,qTy))))))) 449; 450val HaveVirtExt_def = Def 451 ("HaveVirtExt",AVar uTy, 452 MB(Call("ArchVersion",ATy(qTy,PTy(nTy,qTy)),LU), 453 Close 454 (nVar"v", 455 MB(MU(Bop(Ge,nVar"v",LN 7),qTy), 456 Close 457 (bVar"b", 458 ITE(bVar"b", 459 MB(MR(Close 460 (qVar"s", 461 Dest 462 ("Extensions",STy(CTy"Extensions"),qVar"s"))), 463 Close 464 (Var("v",STy(CTy"Extensions")), 465 MU(Bop(In, 466 LC("Extension_Virtualization", 467 CTy"Extensions"), 468 Var("v",STy(CTy"Extensions"))),qTy))), 469 MU(LF,qTy))))))) 470; 471val rec'PSR_def = Def 472 ("rec'PSR",Var("x",F32), 473 Rec(CTy"PSR", 474 [Bop(Bit,Var("x",F32),LN 8),Bop(Bit,Var("x",F32),LN 29), 475 Bop(Bit,Var("x",F32),LN 9),Bop(Bit,Var("x",F32),LN 6), 476 EX(Var("x",F32),LN 19,LN 16,F4),Bop(Bit,Var("x",F32),LN 7), 477 CC[EX(Var("x",F32),LN 15,LN 10,FTy 6), 478 EX(Var("x",F32),LN 26,LN 25,FTy 2)], 479 Bop(Bit,Var("x",F32),LN 24),EX(Var("x",F32),LN 4,LN 0,FTy 5), 480 Bop(Bit,Var("x",F32),LN 31),Bop(Bit,Var("x",F32),LN 27), 481 Bop(Bit,Var("x",F32),LN 5),Bop(Bit,Var("x",F32),LN 28), 482 Bop(Bit,Var("x",F32),LN 30),EX(Var("x",F32),LN 23,LN 20,F4)])) 483; 484val reg'PSR_def = Def 485 ("reg'PSR",Var("x",CTy"PSR"), 486 CS(Var("x",CTy"PSR"), 487 [(Rec(CTy"PSR", 488 [bVar"A",bVar"C",bVar"E",bVar"F",Var("GE",F4),bVar"I", 489 Var("IT",F8),bVar"J",Var("M",FTy 5),bVar"N",bVar"Q",bVar"T", 490 bVar"V",bVar"Z",Var("psr'rst",F4)]), 491 Bop(Mdfy, 492 Close 493 (TP[nVar"i",AVar bTy], 494 ITB([(EQ(nVar"i",LN 31),bVar"N"), 495 (EQ(nVar"i",LN 30),bVar"Z"), 496 (EQ(nVar"i",LN 29),bVar"C"), 497 (EQ(nVar"i",LN 28),bVar"V"), 498 (EQ(nVar"i",LN 27),bVar"Q"), 499 (EQ(nVar"i",LN 26),Bop(Bit,Var("IT",F8),LN 1)), 500 (EQ(nVar"i",LN 25),Bop(Bit,Var("IT",F8),LN 0)), 501 (EQ(nVar"i",LN 24),bVar"J"), 502 (EQ(nVar"i",LN 23),Bop(Bit,Var("psr'rst",F4),LN 3)), 503 (EQ(nVar"i",LN 22),Bop(Bit,Var("psr'rst",F4),LN 2)), 504 (EQ(nVar"i",LN 21),Bop(Bit,Var("psr'rst",F4),LN 1)), 505 (EQ(nVar"i",LN 20),Bop(Bit,Var("psr'rst",F4),LN 0)), 506 (EQ(nVar"i",LN 19),Bop(Bit,Var("GE",F4),LN 3)), 507 (EQ(nVar"i",LN 18),Bop(Bit,Var("GE",F4),LN 2)), 508 (EQ(nVar"i",LN 17),Bop(Bit,Var("GE",F4),LN 1)), 509 (EQ(nVar"i",LN 16),Bop(Bit,Var("GE",F4),LN 0)), 510 (EQ(nVar"i",LN 15),Bop(Bit,Var("IT",F8),LN 7)), 511 (EQ(nVar"i",LN 14),Bop(Bit,Var("IT",F8),LN 6)), 512 (EQ(nVar"i",LN 13),Bop(Bit,Var("IT",F8),LN 5)), 513 (EQ(nVar"i",LN 12),Bop(Bit,Var("IT",F8),LN 4)), 514 (EQ(nVar"i",LN 11),Bop(Bit,Var("IT",F8),LN 3)), 515 (EQ(nVar"i",LN 10),Bop(Bit,Var("IT",F8),LN 2)), 516 (EQ(nVar"i",LN 9),bVar"E"),(EQ(nVar"i",LN 8),bVar"A"), 517 (EQ(nVar"i",LN 7),bVar"I"),(EQ(nVar"i",LN 6),bVar"F"), 518 (EQ(nVar"i",LN 5),bVar"T"), 519 (EQ(nVar"i",LN 4),Bop(Bit,Var("M",FTy 5),LN 4)), 520 (EQ(nVar"i",LN 3),Bop(Bit,Var("M",FTy 5),LN 3)), 521 (EQ(nVar"i",LN 2),Bop(Bit,Var("M",FTy 5),LN 2)), 522 (EQ(nVar"i",LN 1),Bop(Bit,Var("M",FTy 5),LN 1))], 523 Bop(Bit,Var("M",FTy 5),LN 0))),LW(0,32)))])) 524; 525val write'rec'PSR_def = Def 526 ("write'rec'PSR",TP[AVar F32,Var("x",CTy"PSR")], 527 Call("reg'PSR",F32,Var("x",CTy"PSR"))) 528; 529val write'reg'PSR_def = Def 530 ("write'reg'PSR",TP[AVar(CTy"PSR"),Var("x",F32)], 531 Call("rec'PSR",CTy"PSR",Var("x",F32))) 532; 533val rec'SCTLR_def = Def 534 ("rec'SCTLR",Var("x",F32), 535 Rec(CTy"SCTLR", 536 [Bop(Bit,Var("x",F32),LN 1),Bop(Bit,Var("x",F32),LN 7), 537 Bop(Bit,Var("x",F32),LN 17),Bop(Bit,Var("x",F32),LN 2), 538 Bop(Bit,Var("x",F32),LN 19),Bop(Bit,Var("x",F32),LN 25), 539 Bop(Bit,Var("x",F32),LN 21),Bop(Bit,Var("x",F32),LN 12), 540 Bop(Bit,Var("x",F32),LN 31),Bop(Bit,Var("x",F32),LN 0), 541 Bop(Bit,Var("x",F32),LN 27),Bop(Bit,Var("x",F32),LN 14), 542 Bop(Bit,Var("x",F32),LN 10),Bop(Bit,Var("x",F32),LN 30), 543 Bop(Bit,Var("x",F32),LN 22),Bop(Bit,Var("x",F32),LN 13), 544 Bop(Bit,Var("x",F32),LN 24),Bop(Bit,Var("x",F32),LN 11), 545 CC[EX(Var("x",F32),LN 6,LN 3,F4),EX(Var("x",F32),LN 9,LN 8,FTy 2), 546 EX(Var("x",F32),LN 16,LN 15,FTy 2), 547 EX(Var("x",F32),LN 18,LN 18,F1), 548 EX(Var("x",F32),LN 20,LN 20,F1), 549 EX(Var("x",F32),LN 23,LN 23,F1), 550 EX(Var("x",F32),LN 26,LN 26,F1), 551 EX(Var("x",F32),LN 29,LN 28,FTy 2)]])) 552; 553val reg'SCTLR_def = Def 554 ("reg'SCTLR",Var("x",CTy"SCTLR"), 555 CS(Var("x",CTy"SCTLR"), 556 [(Rec(CTy"SCTLR", 557 [bVar"A",bVar"B",bVar"BR",bVar"C",bVar"DZ",bVar"EE",bVar"FI", 558 bVar"I",bVar"IE",bVar"M",bVar"NMFI",bVar"RR",bVar"SW", 559 bVar"TE",bVar"U",bVar"V",bVar"VE",bVar"Z", 560 Var("sctlr'rst",FTy 14)]), 561 Bop(Mdfy, 562 Close 563 (TP[nVar"i",AVar bTy], 564 ITB([(EQ(nVar"i",LN 31),bVar"IE"), 565 (EQ(nVar"i",LN 30),bVar"TE"), 566 (EQ(nVar"i",LN 29), 567 Bop(Bit,Var("sctlr'rst",FTy 14),LN 1)), 568 (EQ(nVar"i",LN 28), 569 Bop(Bit,Var("sctlr'rst",FTy 14),LN 0)), 570 (EQ(nVar"i",LN 27),bVar"NMFI"), 571 (EQ(nVar"i",LN 26), 572 Bop(Bit,Var("sctlr'rst",FTy 14),LN 2)), 573 (EQ(nVar"i",LN 25),bVar"EE"), 574 (EQ(nVar"i",LN 24),bVar"VE"), 575 (EQ(nVar"i",LN 23), 576 Bop(Bit,Var("sctlr'rst",FTy 14),LN 3)), 577 (EQ(nVar"i",LN 22),bVar"U"), 578 (EQ(nVar"i",LN 21),bVar"FI"), 579 (EQ(nVar"i",LN 20), 580 Bop(Bit,Var("sctlr'rst",FTy 14),LN 4)), 581 (EQ(nVar"i",LN 19),bVar"DZ"), 582 (EQ(nVar"i",LN 18), 583 Bop(Bit,Var("sctlr'rst",FTy 14),LN 5)), 584 (EQ(nVar"i",LN 17),bVar"BR"), 585 (EQ(nVar"i",LN 16), 586 Bop(Bit,Var("sctlr'rst",FTy 14),LN 7)), 587 (EQ(nVar"i",LN 15), 588 Bop(Bit,Var("sctlr'rst",FTy 14),LN 6)), 589 (EQ(nVar"i",LN 14),bVar"RR"), 590 (EQ(nVar"i",LN 13),bVar"V"), 591 (EQ(nVar"i",LN 12),bVar"I"), 592 (EQ(nVar"i",LN 11),bVar"Z"), 593 (EQ(nVar"i",LN 10),bVar"SW"), 594 (EQ(nVar"i",LN 9), 595 Bop(Bit,Var("sctlr'rst",FTy 14),LN 9)), 596 (EQ(nVar"i",LN 8), 597 Bop(Bit,Var("sctlr'rst",FTy 14),LN 8)), 598 (EQ(nVar"i",LN 7),bVar"B"), 599 (EQ(nVar"i",LN 6), 600 Bop(Bit,Var("sctlr'rst",FTy 14),LN 13)), 601 (EQ(nVar"i",LN 5), 602 Bop(Bit,Var("sctlr'rst",FTy 14),LN 12)), 603 (EQ(nVar"i",LN 4), 604 Bop(Bit,Var("sctlr'rst",FTy 14),LN 11)), 605 (EQ(nVar"i",LN 3), 606 Bop(Bit,Var("sctlr'rst",FTy 14),LN 10)), 607 (EQ(nVar"i",LN 2),bVar"C"),(EQ(nVar"i",LN 1),bVar"A")], 608 bVar"M")),LW(0,32)))])) 609; 610val write'rec'SCTLR_def = Def 611 ("write'rec'SCTLR",TP[AVar F32,Var("x",CTy"SCTLR")], 612 Call("reg'SCTLR",F32,Var("x",CTy"SCTLR"))) 613; 614val write'reg'SCTLR_def = Def 615 ("write'reg'SCTLR",TP[AVar(CTy"SCTLR"),Var("x",F32)], 616 Call("rec'SCTLR",CTy"SCTLR",Var("x",F32))) 617; 618val rec'HSCTLR_def = Def 619 ("rec'HSCTLR",Var("x",F32), 620 Rec(CTy"HSCTLR", 621 [Bop(Bit,Var("x",F32),LN 1),Bop(Bit,Var("x",F32),LN 2), 622 Bop(Bit,Var("x",F32),LN 5),Bop(Bit,Var("x",F32),LN 25), 623 Bop(Bit,Var("x",F32),LN 21),Bop(Bit,Var("x",F32),LN 12), 624 Bop(Bit,Var("x",F32),LN 0),Bop(Bit,Var("x",F32),LN 30), 625 Bop(Bit,Var("x",F32),LN 19), 626 CC[EX(Var("x",F32),LN 4,LN 3,FTy 2), 627 EX(Var("x",F32),LN 11,LN 6,FTy 6), 628 EX(Var("x",F32),LN 18,LN 13,FTy 6), 629 EX(Var("x",F32),LN 20,LN 20,F1), 630 EX(Var("x",F32),LN 24,LN 22,FTy 3), 631 EX(Var("x",F32),LN 29,LN 26,F4),EX(Var("x",F32),LN 31,LN 31,F1)]])) 632; 633val reg'HSCTLR_def = Def 634 ("reg'HSCTLR",Var("x",CTy"HSCTLR"), 635 CS(Var("x",CTy"HSCTLR"), 636 [(Rec(CTy"HSCTLR", 637 [bVar"A",bVar"C",bVar"CP15BEN",bVar"EE",bVar"FI",bVar"I", 638 bVar"M",bVar"TE",bVar"WXN",Var("hsctlr'rst",FTy 23)]), 639 Bop(Mdfy, 640 Close 641 (TP[nVar"i",AVar bTy], 642 ITB([(EQ(nVar"i",LN 31), 643 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 0)), 644 (EQ(nVar"i",LN 30),bVar"TE"), 645 (EQ(nVar"i",LN 29), 646 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 4)), 647 (EQ(nVar"i",LN 28), 648 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 3)), 649 (EQ(nVar"i",LN 27), 650 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 2)), 651 (EQ(nVar"i",LN 26), 652 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 1)), 653 (EQ(nVar"i",LN 25),bVar"EE"), 654 (EQ(nVar"i",LN 24), 655 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 7)), 656 (EQ(nVar"i",LN 23), 657 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 6)), 658 (EQ(nVar"i",LN 22), 659 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 5)), 660 (EQ(nVar"i",LN 21),bVar"FI"), 661 (EQ(nVar"i",LN 20), 662 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 8)), 663 (EQ(nVar"i",LN 19),bVar"WXN"), 664 (EQ(nVar"i",LN 18), 665 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 14)), 666 (EQ(nVar"i",LN 17), 667 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 13)), 668 (EQ(nVar"i",LN 16), 669 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 12)), 670 (EQ(nVar"i",LN 15), 671 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 11)), 672 (EQ(nVar"i",LN 14), 673 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 10)), 674 (EQ(nVar"i",LN 13), 675 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 9)), 676 (EQ(nVar"i",LN 12),bVar"I"), 677 (EQ(nVar"i",LN 11), 678 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 20)), 679 (EQ(nVar"i",LN 10), 680 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 19)), 681 (EQ(nVar"i",LN 9), 682 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 18)), 683 (EQ(nVar"i",LN 8), 684 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 17)), 685 (EQ(nVar"i",LN 7), 686 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 16)), 687 (EQ(nVar"i",LN 6), 688 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 15)), 689 (EQ(nVar"i",LN 5),bVar"CP15BEN"), 690 (EQ(nVar"i",LN 4), 691 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 22)), 692 (EQ(nVar"i",LN 3), 693 Bop(Bit,Var("hsctlr'rst",FTy 23),LN 21)), 694 (EQ(nVar"i",LN 2),bVar"C"),(EQ(nVar"i",LN 1),bVar"A")], 695 bVar"M")),LW(0,32)))])) 696; 697val write'rec'HSCTLR_def = Def 698 ("write'rec'HSCTLR",TP[AVar F32,Var("x",CTy"HSCTLR")], 699 Call("reg'HSCTLR",F32,Var("x",CTy"HSCTLR"))) 700; 701val write'reg'HSCTLR_def = Def 702 ("write'reg'HSCTLR",TP[AVar(CTy"HSCTLR"),Var("x",F32)], 703 Call("rec'HSCTLR",CTy"HSCTLR",Var("x",F32))) 704; 705val rec'HSR_def = Def 706 ("rec'HSR",Var("x",F32), 707 Rec(CTy"HSR", 708 [EX(Var("x",F32),LN 31,LN 26,FTy 6),Bop(Bit,Var("x",F32),LN 25), 709 EX(Var("x",F32),LN 24,LN 0,FTy 25)])) 710; 711val reg'HSR_def = Def 712 ("reg'HSR",Var("x",CTy"HSR"), 713 CS(Var("x",CTy"HSR"), 714 [(Rec(CTy"HSR",[Var("EC",FTy 6),bVar"IL",Var("ISS",FTy 25)]), 715 Bop(Mdfy, 716 Close 717 (TP[nVar"i",AVar bTy], 718 ITB([(EQ(nVar"i",LN 31),Bop(Bit,Var("EC",FTy 6),LN 5)), 719 (EQ(nVar"i",LN 30),Bop(Bit,Var("EC",FTy 6),LN 4)), 720 (EQ(nVar"i",LN 29),Bop(Bit,Var("EC",FTy 6),LN 3)), 721 (EQ(nVar"i",LN 28),Bop(Bit,Var("EC",FTy 6),LN 2)), 722 (EQ(nVar"i",LN 27),Bop(Bit,Var("EC",FTy 6),LN 1)), 723 (EQ(nVar"i",LN 26),Bop(Bit,Var("EC",FTy 6),LN 0)), 724 (EQ(nVar"i",LN 25),bVar"IL"), 725 (EQ(nVar"i",LN 24),Bop(Bit,Var("ISS",FTy 25),LN 24)), 726 (EQ(nVar"i",LN 23),Bop(Bit,Var("ISS",FTy 25),LN 23)), 727 (EQ(nVar"i",LN 22),Bop(Bit,Var("ISS",FTy 25),LN 22)), 728 (EQ(nVar"i",LN 21),Bop(Bit,Var("ISS",FTy 25),LN 21)), 729 (EQ(nVar"i",LN 20),Bop(Bit,Var("ISS",FTy 25),LN 20)), 730 (EQ(nVar"i",LN 19),Bop(Bit,Var("ISS",FTy 25),LN 19)), 731 (EQ(nVar"i",LN 18),Bop(Bit,Var("ISS",FTy 25),LN 18)), 732 (EQ(nVar"i",LN 17),Bop(Bit,Var("ISS",FTy 25),LN 17)), 733 (EQ(nVar"i",LN 16),Bop(Bit,Var("ISS",FTy 25),LN 16)), 734 (EQ(nVar"i",LN 15),Bop(Bit,Var("ISS",FTy 25),LN 15)), 735 (EQ(nVar"i",LN 14),Bop(Bit,Var("ISS",FTy 25),LN 14)), 736 (EQ(nVar"i",LN 13),Bop(Bit,Var("ISS",FTy 25),LN 13)), 737 (EQ(nVar"i",LN 12),Bop(Bit,Var("ISS",FTy 25),LN 12)), 738 (EQ(nVar"i",LN 11),Bop(Bit,Var("ISS",FTy 25),LN 11)), 739 (EQ(nVar"i",LN 10),Bop(Bit,Var("ISS",FTy 25),LN 10)), 740 (EQ(nVar"i",LN 9),Bop(Bit,Var("ISS",FTy 25),LN 9)), 741 (EQ(nVar"i",LN 8),Bop(Bit,Var("ISS",FTy 25),LN 8)), 742 (EQ(nVar"i",LN 7),Bop(Bit,Var("ISS",FTy 25),LN 7)), 743 (EQ(nVar"i",LN 6),Bop(Bit,Var("ISS",FTy 25),LN 6)), 744 (EQ(nVar"i",LN 5),Bop(Bit,Var("ISS",FTy 25),LN 5)), 745 (EQ(nVar"i",LN 4),Bop(Bit,Var("ISS",FTy 25),LN 4)), 746 (EQ(nVar"i",LN 3),Bop(Bit,Var("ISS",FTy 25),LN 3)), 747 (EQ(nVar"i",LN 2),Bop(Bit,Var("ISS",FTy 25),LN 2)), 748 (EQ(nVar"i",LN 1),Bop(Bit,Var("ISS",FTy 25),LN 1))], 749 Bop(Bit,Var("ISS",FTy 25),LN 0))),LW(0,32)))])) 750; 751val write'rec'HSR_def = Def 752 ("write'rec'HSR",TP[AVar F32,Var("x",CTy"HSR")], 753 Call("reg'HSR",F32,Var("x",CTy"HSR"))) 754; 755val write'reg'HSR_def = Def 756 ("write'reg'HSR",TP[AVar(CTy"HSR"),Var("x",F32)], 757 Call("rec'HSR",CTy"HSR",Var("x",F32))) 758; 759val rec'SCR_def = Def 760 ("rec'SCR",Var("x",F32), 761 Rec(CTy"SCR", 762 [Bop(Bit,Var("x",F32),LN 5),Bop(Bit,Var("x",F32),LN 3), 763 Bop(Bit,Var("x",F32),LN 2),Bop(Bit,Var("x",F32),LN 4), 764 Bop(Bit,Var("x",F32),LN 8),Bop(Bit,Var("x",F32),LN 1), 765 Bop(Bit,Var("x",F32),LN 0),Bop(Bit,Var("x",F32),LN 7), 766 Bop(Bit,Var("x",F32),LN 9),Bop(Bit,Var("x",F32),LN 6), 767 EX(Var("x",F32),LN 31,LN 10,FTy 22)])) 768; 769val reg'SCR_def = Def 770 ("reg'SCR",Var("x",CTy"SCR"), 771 CS(Var("x",CTy"SCR"), 772 [(Rec(CTy"SCR", 773 [bVar"AW",bVar"EA",bVar"FIQ",bVar"FW",bVar"HCE",bVar"IRQ", 774 bVar"NS",bVar"SCD",bVar"SIF",bVar"nET",Var("scr'rst",FTy 22)]), 775 Bop(Mdfy, 776 Close 777 (TP[nVar"i",AVar bTy], 778 ITB([(EQ(nVar"i",LN 31), 779 Bop(Bit,Var("scr'rst",FTy 22),LN 21)), 780 (EQ(nVar"i",LN 30), 781 Bop(Bit,Var("scr'rst",FTy 22),LN 20)), 782 (EQ(nVar"i",LN 29), 783 Bop(Bit,Var("scr'rst",FTy 22),LN 19)), 784 (EQ(nVar"i",LN 28), 785 Bop(Bit,Var("scr'rst",FTy 22),LN 18)), 786 (EQ(nVar"i",LN 27), 787 Bop(Bit,Var("scr'rst",FTy 22),LN 17)), 788 (EQ(nVar"i",LN 26), 789 Bop(Bit,Var("scr'rst",FTy 22),LN 16)), 790 (EQ(nVar"i",LN 25), 791 Bop(Bit,Var("scr'rst",FTy 22),LN 15)), 792 (EQ(nVar"i",LN 24), 793 Bop(Bit,Var("scr'rst",FTy 22),LN 14)), 794 (EQ(nVar"i",LN 23), 795 Bop(Bit,Var("scr'rst",FTy 22),LN 13)), 796 (EQ(nVar"i",LN 22), 797 Bop(Bit,Var("scr'rst",FTy 22),LN 12)), 798 (EQ(nVar"i",LN 21), 799 Bop(Bit,Var("scr'rst",FTy 22),LN 11)), 800 (EQ(nVar"i",LN 20), 801 Bop(Bit,Var("scr'rst",FTy 22),LN 10)), 802 (EQ(nVar"i",LN 19),Bop(Bit,Var("scr'rst",FTy 22),LN 9)), 803 (EQ(nVar"i",LN 18),Bop(Bit,Var("scr'rst",FTy 22),LN 8)), 804 (EQ(nVar"i",LN 17),Bop(Bit,Var("scr'rst",FTy 22),LN 7)), 805 (EQ(nVar"i",LN 16),Bop(Bit,Var("scr'rst",FTy 22),LN 6)), 806 (EQ(nVar"i",LN 15),Bop(Bit,Var("scr'rst",FTy 22),LN 5)), 807 (EQ(nVar"i",LN 14),Bop(Bit,Var("scr'rst",FTy 22),LN 4)), 808 (EQ(nVar"i",LN 13),Bop(Bit,Var("scr'rst",FTy 22),LN 3)), 809 (EQ(nVar"i",LN 12),Bop(Bit,Var("scr'rst",FTy 22),LN 2)), 810 (EQ(nVar"i",LN 11),Bop(Bit,Var("scr'rst",FTy 22),LN 1)), 811 (EQ(nVar"i",LN 10),Bop(Bit,Var("scr'rst",FTy 22),LN 0)), 812 (EQ(nVar"i",LN 9),bVar"SIF"), 813 (EQ(nVar"i",LN 8),bVar"HCE"), 814 (EQ(nVar"i",LN 7),bVar"SCD"), 815 (EQ(nVar"i",LN 6),bVar"nET"), 816 (EQ(nVar"i",LN 5),bVar"AW"), 817 (EQ(nVar"i",LN 4),bVar"FW"), 818 (EQ(nVar"i",LN 3),bVar"EA"), 819 (EQ(nVar"i",LN 2),bVar"FIQ"), 820 (EQ(nVar"i",LN 1),bVar"IRQ")],bVar"NS")),LW(0,32)))])) 821; 822val write'rec'SCR_def = Def 823 ("write'rec'SCR",TP[AVar F32,Var("x",CTy"SCR")], 824 Call("reg'SCR",F32,Var("x",CTy"SCR"))) 825; 826val write'reg'SCR_def = Def 827 ("write'reg'SCR",TP[AVar(CTy"SCR"),Var("x",F32)], 828 Call("rec'SCR",CTy"SCR",Var("x",F32))) 829; 830val rec'NSACR_def = Def 831 ("rec'NSACR",Var("x",F32), 832 Rec(CTy"NSACR", 833 [Bop(Bit,Var("x",F32),LN 15),Bop(Bit,Var("x",F32),LN 14), 834 Bop(Bit,Var("x",F32),LN 20),Bop(Bit,Var("x",F32),LN 19), 835 EX(Var("x",F32),LN 13,LN 0,FTy 14), 836 CC[EX(Var("x",F32),LN 18,LN 16,FTy 3), 837 EX(Var("x",F32),LN 31,LN 21,FTy 11)]])) 838; 839val reg'NSACR_def = Def 840 ("reg'NSACR",Var("x",CTy"NSACR"), 841 CS(Var("x",CTy"NSACR"), 842 [(Rec(CTy"NSACR", 843 [bVar"NSASEDIS",bVar"NSD32DIS",bVar"NSTRCDIS",bVar"RFR", 844 Var("cp",FTy 14),Var("nsacr'rst",FTy 14)]), 845 Bop(Mdfy, 846 Close 847 (TP[nVar"i",AVar bTy], 848 ITB([(EQ(nVar"i",LN 31), 849 Bop(Bit,Var("nsacr'rst",FTy 14),LN 10)), 850 (EQ(nVar"i",LN 30), 851 Bop(Bit,Var("nsacr'rst",FTy 14),LN 9)), 852 (EQ(nVar"i",LN 29), 853 Bop(Bit,Var("nsacr'rst",FTy 14),LN 8)), 854 (EQ(nVar"i",LN 28), 855 Bop(Bit,Var("nsacr'rst",FTy 14),LN 7)), 856 (EQ(nVar"i",LN 27), 857 Bop(Bit,Var("nsacr'rst",FTy 14),LN 6)), 858 (EQ(nVar"i",LN 26), 859 Bop(Bit,Var("nsacr'rst",FTy 14),LN 5)), 860 (EQ(nVar"i",LN 25), 861 Bop(Bit,Var("nsacr'rst",FTy 14),LN 4)), 862 (EQ(nVar"i",LN 24), 863 Bop(Bit,Var("nsacr'rst",FTy 14),LN 3)), 864 (EQ(nVar"i",LN 23), 865 Bop(Bit,Var("nsacr'rst",FTy 14),LN 2)), 866 (EQ(nVar"i",LN 22), 867 Bop(Bit,Var("nsacr'rst",FTy 14),LN 1)), 868 (EQ(nVar"i",LN 21), 869 Bop(Bit,Var("nsacr'rst",FTy 14),LN 0)), 870 (EQ(nVar"i",LN 20),bVar"NSTRCDIS"), 871 (EQ(nVar"i",LN 19),bVar"RFR"), 872 (EQ(nVar"i",LN 18), 873 Bop(Bit,Var("nsacr'rst",FTy 14),LN 13)), 874 (EQ(nVar"i",LN 17), 875 Bop(Bit,Var("nsacr'rst",FTy 14),LN 12)), 876 (EQ(nVar"i",LN 16), 877 Bop(Bit,Var("nsacr'rst",FTy 14),LN 11)), 878 (EQ(nVar"i",LN 15),bVar"NSASEDIS"), 879 (EQ(nVar"i",LN 14),bVar"NSD32DIS"), 880 (EQ(nVar"i",LN 13),Bop(Bit,Var("cp",FTy 14),LN 13)), 881 (EQ(nVar"i",LN 12),Bop(Bit,Var("cp",FTy 14),LN 12)), 882 (EQ(nVar"i",LN 11),Bop(Bit,Var("cp",FTy 14),LN 11)), 883 (EQ(nVar"i",LN 10),Bop(Bit,Var("cp",FTy 14),LN 10)), 884 (EQ(nVar"i",LN 9),Bop(Bit,Var("cp",FTy 14),LN 9)), 885 (EQ(nVar"i",LN 8),Bop(Bit,Var("cp",FTy 14),LN 8)), 886 (EQ(nVar"i",LN 7),Bop(Bit,Var("cp",FTy 14),LN 7)), 887 (EQ(nVar"i",LN 6),Bop(Bit,Var("cp",FTy 14),LN 6)), 888 (EQ(nVar"i",LN 5),Bop(Bit,Var("cp",FTy 14),LN 5)), 889 (EQ(nVar"i",LN 4),Bop(Bit,Var("cp",FTy 14),LN 4)), 890 (EQ(nVar"i",LN 3),Bop(Bit,Var("cp",FTy 14),LN 3)), 891 (EQ(nVar"i",LN 2),Bop(Bit,Var("cp",FTy 14),LN 2)), 892 (EQ(nVar"i",LN 1),Bop(Bit,Var("cp",FTy 14),LN 1))], 893 Bop(Bit,Var("cp",FTy 14),LN 0))),LW(0,32)))])) 894; 895val write'rec'NSACR_def = Def 896 ("write'rec'NSACR",TP[AVar F32,Var("x",CTy"NSACR")], 897 Call("reg'NSACR",F32,Var("x",CTy"NSACR"))) 898; 899val write'reg'NSACR_def = Def 900 ("write'reg'NSACR",TP[AVar(CTy"NSACR"),Var("x",F32)], 901 Call("rec'NSACR",CTy"NSACR",Var("x",F32))) 902; 903val rec'HCR_def = Def 904 ("rec'HCR",Var("x",F32), 905 Rec(CTy"HCR", 906 [Bop(Bit,Var("x",F32),LN 5),EX(Var("x",F32),LN 11,LN 10,FTy 2), 907 Bop(Bit,Var("x",F32),LN 12),Bop(Bit,Var("x",F32),LN 9), 908 Bop(Bit,Var("x",F32),LN 3),Bop(Bit,Var("x",F32),LN 4), 909 Bop(Bit,Var("x",F32),LN 2),Bop(Bit,Var("x",F32),LN 1), 910 Bop(Bit,Var("x",F32),LN 21),Bop(Bit,Var("x",F32),LN 27), 911 EX(Var("x",F32),LN 18,LN 15,F4),Bop(Bit,Var("x",F32),LN 20), 912 Bop(Bit,Var("x",F32),LN 23),Bop(Bit,Var("x",F32),LN 24), 913 Bop(Bit,Var("x",F32),LN 19),Bop(Bit,Var("x",F32),LN 22), 914 Bop(Bit,Var("x",F32),LN 25),Bop(Bit,Var("x",F32),LN 26), 915 Bop(Bit,Var("x",F32),LN 14),Bop(Bit,Var("x",F32),LN 13), 916 Bop(Bit,Var("x",F32),LN 8),Bop(Bit,Var("x",F32),LN 6), 917 Bop(Bit,Var("x",F32),LN 7),Bop(Bit,Var("x",F32),LN 0), 918 EX(Var("x",F32),LN 31,LN 28,F4)])) 919; 920val reg'HCR_def = Def 921 ("reg'HCR",Var("x",CTy"HCR"), 922 CS(Var("x",CTy"HCR"), 923 [(Rec(CTy"HCR", 924 [bVar"AMO",Var("BSU",FTy 2),bVar"DC",bVar"FB",bVar"FMO", 925 bVar"IMO",bVar"PTW",bVar"SWIO",bVar"TAC",bVar"TGE", 926 Var("TID",F4),bVar"TIDCP",bVar"TPC",bVar"TPU",bVar"TSC", 927 bVar"TSW",bVar"TTLB",bVar"TVM",bVar"TWE",bVar"TWI",bVar"VA", 928 bVar"VF",bVar"VI",bVar"VM",Var("hcr'rst",F4)]), 929 Bop(Mdfy, 930 Close 931 (TP[nVar"i",AVar bTy], 932 ITB([(EQ(nVar"i",LN 31),Bop(Bit,Var("hcr'rst",F4),LN 3)), 933 (EQ(nVar"i",LN 30),Bop(Bit,Var("hcr'rst",F4),LN 2)), 934 (EQ(nVar"i",LN 29),Bop(Bit,Var("hcr'rst",F4),LN 1)), 935 (EQ(nVar"i",LN 28),Bop(Bit,Var("hcr'rst",F4),LN 0)), 936 (EQ(nVar"i",LN 27),bVar"TGE"), 937 (EQ(nVar"i",LN 26),bVar"TVM"), 938 (EQ(nVar"i",LN 25),bVar"TTLB"), 939 (EQ(nVar"i",LN 24),bVar"TPU"), 940 (EQ(nVar"i",LN 23),bVar"TPC"), 941 (EQ(nVar"i",LN 22),bVar"TSW"), 942 (EQ(nVar"i",LN 21),bVar"TAC"), 943 (EQ(nVar"i",LN 20),bVar"TIDCP"), 944 (EQ(nVar"i",LN 19),bVar"TSC"), 945 (EQ(nVar"i",LN 18),Bop(Bit,Var("TID",F4),LN 3)), 946 (EQ(nVar"i",LN 17),Bop(Bit,Var("TID",F4),LN 2)), 947 (EQ(nVar"i",LN 16),Bop(Bit,Var("TID",F4),LN 1)), 948 (EQ(nVar"i",LN 15),Bop(Bit,Var("TID",F4),LN 0)), 949 (EQ(nVar"i",LN 14),bVar"TWE"), 950 (EQ(nVar"i",LN 13),bVar"TWI"), 951 (EQ(nVar"i",LN 12),bVar"DC"), 952 (EQ(nVar"i",LN 11),Bop(Bit,Var("BSU",FTy 2),LN 1)), 953 (EQ(nVar"i",LN 10),Bop(Bit,Var("BSU",FTy 2),LN 0)), 954 (EQ(nVar"i",LN 9),bVar"FB"), 955 (EQ(nVar"i",LN 8),bVar"VA"), 956 (EQ(nVar"i",LN 7),bVar"VI"), 957 (EQ(nVar"i",LN 6),bVar"VF"), 958 (EQ(nVar"i",LN 5),bVar"AMO"), 959 (EQ(nVar"i",LN 4),bVar"IMO"), 960 (EQ(nVar"i",LN 3),bVar"FMO"), 961 (EQ(nVar"i",LN 2),bVar"PTW"), 962 (EQ(nVar"i",LN 1),bVar"SWIO")],bVar"VM")),LW(0,32)))])) 963; 964val write'rec'HCR_def = Def 965 ("write'rec'HCR",TP[AVar F32,Var("x",CTy"HCR")], 966 Call("reg'HCR",F32,Var("x",CTy"HCR"))) 967; 968val write'reg'HCR_def = Def 969 ("write'reg'HCR",TP[AVar(CTy"HCR"),Var("x",F32)], 970 Call("rec'HCR",CTy"HCR",Var("x",F32))) 971; 972val ProcessorID_def = Def ("ProcessorID",AVar uTy,LI 0) 973; 974val IsExternalAbort_def = Def 975 ("IsExternalAbort",AVar uTy, 976 MB(MR(Close(qVar"s",Dest("external_abort_oracle",ATy(nTy,bTy),qVar"s"))), 977 Close 978 (Var("v",ATy(nTy,bTy)), 979 MB(MB(MR(Close 980 (qVar"s", 981 Dest("external_abort_oracle_count",nTy,qVar"s"))), 982 Close 983 (nVar"v0",MU(Apply(Var("v",ATy(nTy,bTy)),nVar"v0"),qTy))), 984 Close 985 (bVar"ext", 986 MB(MR(Close 987 (qVar"s", 988 Dest("external_abort_oracle_count",nTy,qVar"s"))), 989 Close 990 (nVar"v", 991 MB(MB(MU(Bop(Add,nVar"v",LN 1),qTy), 992 Close 993 (nVar"v", 994 MW(Close 995 (qVar"s", 996 Rupd 997 ("external_abort_oracle_count", 998 TP[qVar"s",nVar"v"]))))), 999 Close(AVar uTy,MU(bVar"ext",qTy)))))))))) 1000; 1001val IsSecure_def = Def 1002 ("IsSecure",AVar uTy, 1003 MB(Call("HaveSecurityExt",ATy(qTy,PTy(bTy,qTy)),LU), 1004 Close 1005 (bVar"v", 1006 MB(MB(MU(Mop(Not,bVar"v"),qTy), 1007 Close 1008 (bVar"b", 1009 ITE(bVar"b",MU(LT,qTy), 1010 MB(MR(Close(qVar"s",Dest("CP15",CTy"CP15",qVar"s"))), 1011 Close 1012 (Var("v",CTy"CP15"), 1013 MB(MB(MU(Dest 1014 ("SCR",CTy"SCR",Var("v",CTy"CP15")), 1015 qTy), 1016 Close 1017 (Var("v",CTy"SCR"), 1018 MU(Dest("NS",bTy,Var("v",CTy"SCR")), 1019 qTy))), 1020 Close(bVar"v",MU(Mop(Not,bVar"v"),qTy)))))))), 1021 Close 1022 (bVar"b", 1023 ITE(bVar"b",MU(LT,qTy), 1024 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1025 Close 1026 (Var("v",CTy"PSR"), 1027 MB(MU(Dest("M",FTy 5,Var("v",CTy"PSR")),qTy), 1028 Close 1029 (Var("v",FTy 5), 1030 MU(EQ(Var("v",FTy 5),LW(22,5)),qTy))))))))))) 1031; 1032val UnalignedSupport_def = Def 1033 ("UnalignedSupport",AVar uTy, 1034 MB(Call("ArchVersion",ATy(qTy,PTy(nTy,qTy)),LU), 1035 Close 1036 (nVar"v", 1037 MB(MR(Close(qVar"s",Dest("CP15",CTy"CP15",qVar"s"))), 1038 Close 1039 (Var("v0",CTy"CP15"), 1040 MB(MB(MB(MU(Dest("SCTLR",CTy"SCTLR",Var("v0",CTy"CP15")), 1041 qTy), 1042 Close 1043 (Var("v",CTy"SCTLR"), 1044 MU(Dest("U",bTy,Var("v",CTy"SCTLR")),qTy))), 1045 Close 1046 (bVar"v0", 1047 MU(Bop(And,EQ(nVar"v",LN 6),bVar"v0"),qTy))), 1048 Close 1049 (bVar"v0", 1050 MU(Bop(Or,Bop(Ge,nVar"v",LN 7),bVar"v0"),qTy)))))))) 1051; 1052val BadMode_def = Def 1053 ("BadMode",Var("mode",FTy 5), 1054 CS(Var("mode",FTy 5), 1055 [(LW(16,5),MU(LF,qTy)),(LW(17,5),MU(LF,qTy)),(LW(18,5),MU(LF,qTy)), 1056 (LW(19,5),MU(LF,qTy)), 1057 (LW(22,5), 1058 MB(Call("HaveSecurityExt",ATy(qTy,PTy(bTy,qTy)),LU), 1059 Close(bVar"v",MU(Mop(Not,bVar"v"),qTy)))), 1060 (LW(23,5),MU(LF,qTy)), 1061 (LW(26,5), 1062 MB(Call("HaveVirtExt",ATy(qTy,PTy(bTy,qTy)),LU), 1063 Close(bVar"v",MU(Mop(Not,bVar"v"),qTy)))), 1064 (LW(27,5),MU(LF,qTy)),(LW(31,5),MU(LF,qTy)), 1065 (AVar(FTy 5),MU(LT,qTy))])) 1066; 1067val CurrentModeIsNotUser_def = Def 1068 ("CurrentModeIsNotUser",AVar uTy, 1069 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1070 Close 1071 (Var("v",CTy"PSR"), 1072 MB(MB(MB(MU(Dest("M",FTy 5,Var("v",CTy"PSR")),qTy), 1073 Close 1074 (Var("v",FTy 5), 1075 Call("BadMode",ATy(qTy,PTy(bTy,qTy)),Var("v",FTy 5)))), 1076 Close 1077 (bVar"b", 1078 ITE(bVar"b", 1079 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1080 Close 1081 (Var("v",CTy"PSR"), 1082 MB(MB(MB(MB(MU(Dest 1083 ("M",FTy 5,Var("v",CTy"PSR")), 1084 qTy), 1085 Close 1086 (Var("v",FTy 5), 1087 MU(Mop(Cast sTy,Var("v",FTy 5)), 1088 qTy))), 1089 Close 1090 (sVar"v", 1091 MU(CC[LS"BadMode: ",sVar"v"],qTy))), 1092 Close 1093 (sVar"v", 1094 MU(Call 1095 ("UNPREDICTABLE",CTy"exception", 1096 sVar"v"),qTy))), 1097 Close 1098 (Var("v",CTy"exception"), 1099 Call 1100 ("raise'exception", 1101 ATy(qTy,PTy(uTy,qTy)), 1102 Var("v",CTy"exception")))))), 1103 MU(LU,qTy)))), 1104 Close 1105 (AVar uTy, 1106 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1107 Close 1108 (Var("v",CTy"PSR"), 1109 MB(MB(MU(Dest("M",FTy 5,Var("v",CTy"PSR")),qTy), 1110 Close 1111 (Var("v",FTy 5), 1112 MU(EQ(Var("v",FTy 5),LW(16,5)),qTy))), 1113 Close(bVar"v",MU(Mop(Not,bVar"v"),qTy)))))))))) 1114; 1115val CurrentModeIsUserOrSystem_def = Def 1116 ("CurrentModeIsUserOrSystem",AVar uTy, 1117 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1118 Close 1119 (Var("v",CTy"PSR"), 1120 MB(MB(MB(MU(Dest("M",FTy 5,Var("v",CTy"PSR")),qTy), 1121 Close 1122 (Var("v",FTy 5), 1123 Call("BadMode",ATy(qTy,PTy(bTy,qTy)),Var("v",FTy 5)))), 1124 Close 1125 (bVar"b", 1126 ITE(bVar"b", 1127 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1128 Close 1129 (Var("v",CTy"PSR"), 1130 MB(MB(MB(MB(MU(Dest 1131 ("M",FTy 5,Var("v",CTy"PSR")), 1132 qTy), 1133 Close 1134 (Var("v",FTy 5), 1135 MU(Mop(Cast sTy,Var("v",FTy 5)), 1136 qTy))), 1137 Close 1138 (sVar"v", 1139 MU(CC[LS"BadMode: ",sVar"v"],qTy))), 1140 Close 1141 (sVar"v", 1142 MU(Call 1143 ("UNPREDICTABLE",CTy"exception", 1144 sVar"v"),qTy))), 1145 Close 1146 (Var("v",CTy"exception"), 1147 Call 1148 ("raise'exception", 1149 ATy(qTy,PTy(uTy,qTy)), 1150 Var("v",CTy"exception")))))), 1151 MU(LU,qTy)))), 1152 Close 1153 (AVar uTy, 1154 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1155 Close 1156 (Var("v",CTy"PSR"), 1157 MB(MU(Dest("M",FTy 5,Var("v",CTy"PSR")),qTy), 1158 Close 1159 (Var("v",FTy 5), 1160 MU(Bop(In,Var("v",FTy 5),SL[LW(16,5),LW(31,5)]), 1161 qTy)))))))))) 1162; 1163val CurrentModeIsHyp_def = Def 1164 ("CurrentModeIsHyp",AVar uTy, 1165 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1166 Close 1167 (Var("v",CTy"PSR"), 1168 MB(MB(MB(MU(Dest("M",FTy 5,Var("v",CTy"PSR")),qTy), 1169 Close 1170 (Var("v",FTy 5), 1171 Call("BadMode",ATy(qTy,PTy(bTy,qTy)),Var("v",FTy 5)))), 1172 Close 1173 (bVar"b", 1174 ITE(bVar"b", 1175 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1176 Close 1177 (Var("v",CTy"PSR"), 1178 MB(MB(MB(MB(MU(Dest 1179 ("M",FTy 5,Var("v",CTy"PSR")), 1180 qTy), 1181 Close 1182 (Var("v",FTy 5), 1183 MU(Mop(Cast sTy,Var("v",FTy 5)), 1184 qTy))), 1185 Close 1186 (sVar"v", 1187 MU(CC[LS"BadMode: ",sVar"v"],qTy))), 1188 Close 1189 (sVar"v", 1190 MU(Call 1191 ("UNPREDICTABLE",CTy"exception", 1192 sVar"v"),qTy))), 1193 Close 1194 (Var("v",CTy"exception"), 1195 Call 1196 ("raise'exception", 1197 ATy(qTy,PTy(uTy,qTy)), 1198 Var("v",CTy"exception")))))), 1199 MU(LU,qTy)))), 1200 Close 1201 (AVar uTy, 1202 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1203 Close 1204 (Var("v",CTy"PSR"), 1205 MB(MU(Dest("M",FTy 5,Var("v",CTy"PSR")),qTy), 1206 Close 1207 (Var("v",FTy 5), 1208 MU(EQ(Var("v",FTy 5),LW(26,5)),qTy)))))))))) 1209; 1210val IntegerZeroDivideTrappingEnabled_def = Def 1211 ("IntegerZeroDivideTrappingEnabled",AVar uTy, 1212 MB(MR(Close(qVar"s",Dest("CP15",CTy"CP15",qVar"s"))), 1213 Close 1214 (Var("v",CTy"CP15"), 1215 MB(MU(Dest("SCTLR",CTy"SCTLR",Var("v",CTy"CP15")),qTy), 1216 Close 1217 (Var("v",CTy"SCTLR"), 1218 MU(Dest("DZ",bTy,Var("v",CTy"SCTLR")),qTy)))))) 1219; 1220val ISETSTATE_def = Def0 1221 ("ISETSTATE", 1222 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1223 Close 1224 (Var("v",CTy"PSR"), 1225 MB(MB(MU(Dest("J",bTy,Var("v",CTy"PSR")),qTy), 1226 Close(bVar"v",MU(Mop(Cast F1,bVar"v"),qTy))), 1227 Close 1228 (Var("v",F1), 1229 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1230 Close 1231 (Var("v0",CTy"PSR"), 1232 MB(MB(MU(Dest("T",bTy,Var("v0",CTy"PSR")),qTy), 1233 Close(bVar"v",MU(Mop(Cast F1,bVar"v"),qTy))), 1234 Close 1235 (Var("v0",F1), 1236 MU(CC[Var("v",F1),Var("v0",F1)],qTy)))))))))) 1237; 1238val write'ISETSTATE_def = Def 1239 ("write'ISETSTATE",Var("value",FTy 2), 1240 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1241 Close 1242 (Var("v",CTy"PSR"), 1243 MB(MB(MB(MU(TP[Var("v",CTy"PSR"),Bop(Bit,Var("value",FTy 2),LN 1)], 1244 qTy), 1245 Close 1246 (Var("v",PTy(CTy"PSR",bTy)), 1247 MU(Rupd("J",Var("v",PTy(CTy"PSR",bTy))),qTy))), 1248 Close 1249 (Var("v",CTy"PSR"), 1250 MW(Close 1251 (qVar"s",Rupd("CPSR",TP[qVar"s",Var("v",CTy"PSR")]))))), 1252 Close 1253 (AVar uTy, 1254 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1255 Close 1256 (Var("v",CTy"PSR"), 1257 MB(MB(MU(TP[Var("v",CTy"PSR"), 1258 Bop(Bit,Var("value",FTy 2),LN 0)],qTy), 1259 Close 1260 (Var("v",PTy(CTy"PSR",bTy)), 1261 MU(Rupd("T",Var("v",PTy(CTy"PSR",bTy))),qTy))), 1262 Close 1263 (Var("v",CTy"PSR"), 1264 MW(Close 1265 (qVar"s", 1266 Rupd 1267 ("CPSR",TP[qVar"s",Var("v",CTy"PSR")])))))))))))) 1268; 1269val CurrentInstrSet_def = Def 1270 ("CurrentInstrSet",AVar uTy, 1271 MB(Const("ISETSTATE",ATy(qTy,PTy(FTy 2,qTy))), 1272 Close 1273 (Var("x",FTy 2), 1274 MU(CS(Var("x",FTy 2), 1275 [(LW(0,2),LC("InstrSet_ARM",CTy"InstrSet")), 1276 (LW(1,2),LC("InstrSet_Thumb",CTy"InstrSet")), 1277 (LW(2,2),LC("InstrSet_Jazelle",CTy"InstrSet")), 1278 (LW(3,2),LC("InstrSet_ThumbEE",CTy"InstrSet"))]),qTy)))) 1279; 1280val SelectInstrSet_def = Def 1281 ("SelectInstrSet",Var("iset",CTy"InstrSet"), 1282 CS(Var("iset",CTy"InstrSet"), 1283 [(LC("InstrSet_ARM",CTy"InstrSet"), 1284 MB(Call("CurrentInstrSet",ATy(qTy,PTy(CTy"InstrSet",qTy)),LU), 1285 Close 1286 (Var("v",CTy"InstrSet"), 1287 MB(MU(EQ(Var("v",CTy"InstrSet"), 1288 LC("InstrSet_ThumbEE",CTy"InstrSet")),qTy), 1289 Close 1290 (bVar"b", 1291 ITE(bVar"b", 1292 Call 1293 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 1294 Call 1295 ("UNPREDICTABLE",CTy"exception", 1296 LS"SelectInstrSet")), 1297 Call 1298 ("write'ISETSTATE",ATy(qTy,PTy(uTy,qTy)),LW(0,2)))))))), 1299 (LC("InstrSet_Thumb",CTy"InstrSet"), 1300 Call("write'ISETSTATE",ATy(qTy,PTy(uTy,qTy)),LW(1,2))), 1301 (LC("InstrSet_Jazelle",CTy"InstrSet"), 1302 Call("write'ISETSTATE",ATy(qTy,PTy(uTy,qTy)),LW(2,2))), 1303 (LC("InstrSet_ThumbEE",CTy"InstrSet"), 1304 Call("write'ISETSTATE",ATy(qTy,PTy(uTy,qTy)),LW(3,2)))])) 1305; 1306val ITSTATE_def = Def0 1307 ("ITSTATE", 1308 MB(Call("HaveThumb2",ATy(qTy,PTy(bTy,qTy)),LU), 1309 Close 1310 (bVar"b", 1311 ITE(bVar"b", 1312 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1313 Close 1314 (Var("v",CTy"PSR"), 1315 MU(Dest("IT",F8,Var("v",CTy"PSR")),qTy))), 1316 MU(LW(0,8),qTy))))) 1317; 1318val write'ITSTATE_def = Def 1319 ("write'ITSTATE",Var("value",F8), 1320 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1321 Close 1322 (Var("v",CTy"PSR"), 1323 MB(MB(MU(TP[Var("v",CTy"PSR"),Var("value",F8)],qTy), 1324 Close 1325 (Var("v",PTy(CTy"PSR",F8)), 1326 MU(Rupd("IT",Var("v",PTy(CTy"PSR",F8))),qTy))), 1327 Close 1328 (Var("v",CTy"PSR"), 1329 MW(Close 1330 (qVar"s",Rupd("CPSR",TP[qVar"s",Var("v",CTy"PSR")])))))))) 1331; 1332val ITAdvance_def = Def 1333 ("ITAdvance",AVar uTy, 1334 MB(Call("HaveThumb2",ATy(qTy,PTy(bTy,qTy)),LU), 1335 Close 1336 (bVar"v", 1337 MB(ITE(bVar"v", 1338 MB(MR(Close 1339 (qVar"s",Dest("Encoding",CTy"Encoding",qVar"s"))), 1340 Close 1341 (Var("v",CTy"Encoding"), 1342 MB(MU(EQ(Var("v",CTy"Encoding"), 1343 LC("Encoding_ARM",CTy"Encoding")),qTy), 1344 Close(bVar"v",MU(Mop(Not,bVar"v"),qTy))))), 1345 MU(LF,qTy)), 1346 Close 1347 (bVar"b", 1348 ITE(bVar"b", 1349 MB(Const("ITSTATE",ATy(qTy,PTy(F8,qTy))), 1350 Close 1351 (Var("v",F8), 1352 MB(MB(MU(EX(Var("v",F8),LN 2,LN 0,FTy 3),qTy), 1353 Close 1354 (Var("v",FTy 3), 1355 MU(EQ(Var("v",FTy 3),LW(0,3)),qTy))), 1356 Close 1357 (bVar"b", 1358 ITE(bVar"b", 1359 Call 1360 ("write'ITSTATE", 1361 ATy(qTy,PTy(uTy,qTy)),LW(0,8)), 1362 MB(Const 1363 ("ITSTATE",ATy(qTy,PTy(F8,qTy))), 1364 Close 1365 (Var("w",F8), 1366 MB(Const 1367 ("ITSTATE", 1368 ATy(qTy,PTy(F8,qTy))), 1369 Close 1370 (Var("v",F8), 1371 MB(MB(MB(MU(EX(Var("v",F8), 1372 LN 4,LN 0, 1373 FTy 5),qTy), 1374 Close 1375 (Var("v",FTy 5), 1376 MU(Bop(Lsl, 1377 Var("v", 1378 FTy 5), 1379 LN 1), 1380 qTy))), 1381 Close 1382 (Var("v",FTy 5), 1383 MU(BFI(LN 4,LN 0, 1384 Var("v", 1385 FTy 5), 1386 Var("w",F8)), 1387 qTy))), 1388 Close 1389 (Var("v",F8), 1390 Call 1391 ("write'ITSTATE", 1392 ATy(qTy, 1393 PTy(uTy,qTy)), 1394 Var("v",F8))))))))))))), 1395 MU(LU,qTy))))))) 1396; 1397val InITBlock_def = Def 1398 ("InITBlock",AVar uTy, 1399 MB(Const("ITSTATE",ATy(qTy,PTy(F8,qTy))), 1400 Close 1401 (Var("v",F8), 1402 MB(MB(MU(EX(Var("v",F8),LN 3,LN 0,F4),qTy), 1403 Close(Var("v",F4),MU(EQ(Var("v",F4),LW(0,4)),qTy))), 1404 Close(bVar"v",MU(Mop(Not,bVar"v"),qTy)))))) 1405; 1406val LastInITBlock_def = Def 1407 ("LastInITBlock",AVar uTy, 1408 MB(Const("ITSTATE",ATy(qTy,PTy(F8,qTy))), 1409 Close 1410 (Var("v",F8), 1411 MB(MU(EX(Var("v",F8),LN 3,LN 0,F4),qTy), 1412 Close(Var("v",F4),MU(EQ(Var("v",F4),LW(8,4)),qTy)))))) 1413; 1414val ThumbCondition_def = Def 1415 ("ThumbCondition",AVar uTy, 1416 MB(Const("ITSTATE",ATy(qTy,PTy(F8,qTy))), 1417 Close 1418 (Var("v",F8), 1419 MB(MU(EQ(Var("v",F8),LW(0,8)),qTy), 1420 Close 1421 (bVar"b", 1422 ITE(bVar"b",MU(LW(14,4),qTy), 1423 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1424 Close 1425 (Var("v",CTy"PSR"), 1426 MB(MB(MB(MB(MU(Dest("IT",F8,Var("v",CTy"PSR")), 1427 qTy), 1428 Close 1429 (Var("v",F8), 1430 MU(EX(Var("v",F8),LN 3,LN 0,F4), 1431 qTy))), 1432 Close 1433 (Var("v",F4), 1434 MU(EQ(Var("v",F4),LW(0,4)),qTy))), 1435 Close(bVar"v",MU(Mop(Not,bVar"v"),qTy))), 1436 Close 1437 (bVar"b", 1438 ITE(bVar"b", 1439 MB(MR(Close 1440 (qVar"s", 1441 Dest("CPSR",CTy"PSR",qVar"s"))), 1442 Close 1443 (Var("v",CTy"PSR"), 1444 MB(MU(Dest 1445 ("IT",F8, 1446 Var("v",CTy"PSR")),qTy), 1447 Close 1448 (Var("v",F8), 1449 MU(EX(Var("v",F8),LN 7, 1450 LN 4,F4),qTy))))), 1451 Call 1452 ("raise'exception", 1453 ATy(qTy,PTy(F4,qTy)), 1454 Call 1455 ("UNPREDICTABLE",CTy"exception", 1456 LS"ThumbCondition"))))))))))))) 1457; 1458val BigEndian_def = Def 1459 ("BigEndian",AVar uTy, 1460 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1461 Close(Var("v",CTy"PSR"),MU(Dest("E",bTy,Var("v",CTy"PSR")),qTy)))) 1462; 1463val CurrentCond_def = Def 1464 ("CurrentCond",AVar uTy, 1465 MR(Close(qVar"s",Dest("CurrentCondition",F4,qVar"s")))) 1466; 1467val ConditionPassed_def = Def 1468 ("ConditionPassed",AVar uTy, 1469 MB(Call("CurrentCond",ATy(qTy,PTy(F4,qTy)),LU), 1470 Close 1471 (Var("cond",F4), 1472 MB(CS(EX(Var("cond",F4),LN 3,LN 1,FTy 3), 1473 [(LW(0,3), 1474 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1475 Close 1476 (Var("v",CTy"PSR"), 1477 MU(Dest("Z",bTy,Var("v",CTy"PSR")),qTy)))), 1478 (LW(1,3), 1479 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1480 Close 1481 (Var("v",CTy"PSR"), 1482 MU(Dest("C",bTy,Var("v",CTy"PSR")),qTy)))), 1483 (LW(2,3), 1484 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1485 Close 1486 (Var("v",CTy"PSR"), 1487 MU(Dest("N",bTy,Var("v",CTy"PSR")),qTy)))), 1488 (LW(3,3), 1489 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1490 Close 1491 (Var("v",CTy"PSR"), 1492 MU(Dest("V",bTy,Var("v",CTy"PSR")),qTy)))), 1493 (LW(4,3), 1494 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1495 Close 1496 (Var("v",CTy"PSR"), 1497 MB(MU(Dest("C",bTy,Var("v",CTy"PSR")),qTy), 1498 Close 1499 (bVar"b", 1500 ITE(bVar"b", 1501 MB(MR(Close 1502 (qVar"s", 1503 Dest("CPSR",CTy"PSR",qVar"s"))), 1504 Close 1505 (Var("v",CTy"PSR"), 1506 MB(MU(Dest 1507 ("Z",bTy,Var("v",CTy"PSR")), 1508 qTy), 1509 Close 1510 (bVar"v", 1511 MU(Mop(Not,bVar"v"),qTy))))), 1512 MU(LF,qTy))))))), 1513 (LW(5,3), 1514 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1515 Close 1516 (Var("v",CTy"PSR"), 1517 MB(MU(Dest("N",bTy,Var("v",CTy"PSR")),qTy), 1518 Close 1519 (bVar"v", 1520 MB(MR(Close 1521 (qVar"s", 1522 Dest("CPSR",CTy"PSR",qVar"s"))), 1523 Close 1524 (Var("v0",CTy"PSR"), 1525 MB(MU(Dest("V",bTy,Var("v0",CTy"PSR")), 1526 qTy), 1527 Close 1528 (bVar"v0", 1529 MU(EQ(bVar"v",bVar"v0"),qTy)))))))))), 1530 (LW(6,3), 1531 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1532 Close 1533 (Var("v",CTy"PSR"), 1534 MB(MB(MU(Dest("N",bTy,Var("v",CTy"PSR")),qTy), 1535 Close 1536 (bVar"v", 1537 MB(MR(Close 1538 (qVar"s", 1539 Dest("CPSR",CTy"PSR",qVar"s"))), 1540 Close 1541 (Var("v0",CTy"PSR"), 1542 MB(MU(Dest 1543 ("V",bTy,Var("v0",CTy"PSR")), 1544 qTy), 1545 Close 1546 (bVar"v0", 1547 MU(EQ(bVar"v",bVar"v0"),qTy))))))), 1548 Close 1549 (bVar"b", 1550 ITE(bVar"b", 1551 MB(MR(Close 1552 (qVar"s", 1553 Dest("CPSR",CTy"PSR",qVar"s"))), 1554 Close 1555 (Var("v",CTy"PSR"), 1556 MB(MU(Dest 1557 ("Z",bTy,Var("v",CTy"PSR")), 1558 qTy), 1559 Close 1560 (bVar"v", 1561 MU(Mop(Not,bVar"v"),qTy))))), 1562 MU(LF,qTy))))))),(LW(7,3),MU(LT,qTy))]), 1563 Close 1564 (bVar"result", 1565 MU(ITE(Bop(And,Bop(Bit,Var("cond",F4),LN 0), 1566 Mop(Not,EQ(Var("cond",F4),LW(15,4)))), 1567 Mop(Not,bVar"result"),bVar"result"),qTy)))))) 1568; 1569val SPSR_def = Def0 1570 ("SPSR", 1571 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1572 Close 1573 (Var("v",CTy"PSR"), 1574 MB(MB(MU(Dest("M",FTy 5,Var("v",CTy"PSR")),qTy), 1575 Close 1576 (Var("v",FTy 5), 1577 Call("BadMode",ATy(qTy,PTy(bTy,qTy)),Var("v",FTy 5)))), 1578 Close 1579 (bVar"b", 1580 ITE(bVar"b", 1581 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1582 Close 1583 (Var("v",CTy"PSR"), 1584 MB(MB(MB(MB(MU(Dest("M",FTy 5,Var("v",CTy"PSR")), 1585 qTy), 1586 Close 1587 (Var("v",FTy 5), 1588 MU(Mop(Cast sTy,Var("v",FTy 5)), 1589 qTy))), 1590 Close 1591 (sVar"v", 1592 MU(CC[LS"SPSR: BadMode: ",sVar"v"], 1593 qTy))), 1594 Close 1595 (sVar"v", 1596 MU(Call 1597 ("UNPREDICTABLE",CTy"exception", 1598 sVar"v"),qTy))), 1599 Close 1600 (Var("v",CTy"exception"), 1601 Call 1602 ("raise'exception", 1603 ATy(qTy,PTy(CTy"PSR",qTy)), 1604 Var("v",CTy"exception")))))), 1605 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1606 Close 1607 (Var("v",CTy"PSR"), 1608 MB(MU(Dest("M",FTy 5,Var("v",CTy"PSR")),qTy), 1609 Close 1610 (Var("x",FTy 5), 1611 CS(Var("x",FTy 5), 1612 [(LW(17,5), 1613 MR(Close 1614 (qVar"s", 1615 Dest 1616 ("SPSR_fiq",CTy"PSR",qVar"s")))), 1617 (LW(18,5), 1618 MR(Close 1619 (qVar"s", 1620 Dest 1621 ("SPSR_irq",CTy"PSR",qVar"s")))), 1622 (LW(19,5), 1623 MR(Close 1624 (qVar"s", 1625 Dest 1626 ("SPSR_svc",CTy"PSR",qVar"s")))), 1627 (LW(22,5), 1628 MR(Close 1629 (qVar"s", 1630 Dest 1631 ("SPSR_mon",CTy"PSR",qVar"s")))), 1632 (LW(23,5), 1633 MR(Close 1634 (qVar"s", 1635 Dest 1636 ("SPSR_abt",CTy"PSR",qVar"s")))), 1637 (LW(26,5), 1638 MR(Close 1639 (qVar"s", 1640 Dest 1641 ("SPSR_hyp",CTy"PSR",qVar"s")))), 1642 (LW(27,5), 1643 MR(Close 1644 (qVar"s", 1645 Dest 1646 ("SPSR_und",CTy"PSR",qVar"s")))), 1647 (AVar(FTy 5), 1648 Call 1649 ("raise'exception", 1650 ATy(qTy,PTy(CTy"PSR",qTy)), 1651 Call 1652 ("UNPREDICTABLE",CTy"exception", 1653 LS"SPSR")))]))))))))))) 1654; 1655val write'SPSR_def = Def 1656 ("write'SPSR",Var("value",CTy"PSR"), 1657 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1658 Close 1659 (Var("v",CTy"PSR"), 1660 MB(MB(MU(Dest("M",FTy 5,Var("v",CTy"PSR")),qTy), 1661 Close 1662 (Var("v",FTy 5), 1663 Call("BadMode",ATy(qTy,PTy(bTy,qTy)),Var("v",FTy 5)))), 1664 Close 1665 (bVar"b", 1666 ITE(bVar"b", 1667 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1668 Close 1669 (Var("v",CTy"PSR"), 1670 MB(MB(MB(MB(MU(Dest("M",FTy 5,Var("v",CTy"PSR")), 1671 qTy), 1672 Close 1673 (Var("v",FTy 5), 1674 MU(Mop(Cast sTy,Var("v",FTy 5)), 1675 qTy))), 1676 Close 1677 (sVar"v", 1678 MU(CC[LS"SPSR: BadMode: ",sVar"v"], 1679 qTy))), 1680 Close 1681 (sVar"v", 1682 MU(Call 1683 ("UNPREDICTABLE",CTy"exception", 1684 sVar"v"),qTy))), 1685 Close 1686 (Var("v",CTy"exception"), 1687 Call 1688 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 1689 Var("v",CTy"exception")))))), 1690 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1691 Close 1692 (Var("v",CTy"PSR"), 1693 MB(MU(Dest("M",FTy 5,Var("v",CTy"PSR")),qTy), 1694 Close 1695 (Var("x",FTy 5), 1696 CS(Var("x",FTy 5), 1697 [(LW(17,5), 1698 MW(Close 1699 (qVar"s", 1700 Rupd 1701 ("SPSR_fiq", 1702 TP[qVar"s", 1703 Var("value",CTy"PSR")])))), 1704 (LW(18,5), 1705 MW(Close 1706 (qVar"s", 1707 Rupd 1708 ("SPSR_irq", 1709 TP[qVar"s", 1710 Var("value",CTy"PSR")])))), 1711 (LW(19,5), 1712 MW(Close 1713 (qVar"s", 1714 Rupd 1715 ("SPSR_svc", 1716 TP[qVar"s", 1717 Var("value",CTy"PSR")])))), 1718 (LW(22,5), 1719 MW(Close 1720 (qVar"s", 1721 Rupd 1722 ("SPSR_mon", 1723 TP[qVar"s", 1724 Var("value",CTy"PSR")])))), 1725 (LW(23,5), 1726 MW(Close 1727 (qVar"s", 1728 Rupd 1729 ("SPSR_abt", 1730 TP[qVar"s", 1731 Var("value",CTy"PSR")])))), 1732 (LW(26,5), 1733 MW(Close 1734 (qVar"s", 1735 Rupd 1736 ("SPSR_hyp", 1737 TP[qVar"s", 1738 Var("value",CTy"PSR")])))), 1739 (LW(27,5), 1740 MW(Close 1741 (qVar"s", 1742 Rupd 1743 ("SPSR_und", 1744 TP[qVar"s", 1745 Var("value",CTy"PSR")])))), 1746 (AVar(FTy 5), 1747 Call 1748 ("raise'exception", 1749 ATy(qTy,PTy(uTy,qTy)), 1750 Call 1751 ("UNPREDICTABLE",CTy"exception", 1752 LS"SPSR")))]))))))))))) 1753; 1754val CPSRWriteByInstr_def = Def 1755 ("CPSRWriteByInstr", 1756 TP[Var("value",F32),Var("bytemask",F4),bVar"is_excpt_return"], 1757 MB(Call("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)),LU), 1758 Close 1759 (bVar"privileged", 1760 MB(MR(Close(qVar"s",Dest("CP15",CTy"CP15",qVar"s"))), 1761 Close 1762 (Var("v",CTy"CP15"), 1763 MB(MB(MU(Dest("SCTLR",CTy"SCTLR",Var("v",CTy"CP15")),qTy), 1764 Close 1765 (Var("v",CTy"SCTLR"), 1766 MU(Dest("NMFI",bTy,Var("v",CTy"SCTLR")),qTy))), 1767 Close 1768 (bVar"nmfi", 1769 MB(ITE(Bop(Bit,Var("bytemask",F4),LN 3), 1770 MB(MR(Close 1771 (qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 1772 Close 1773 (Var("v",CTy"PSR"), 1774 MB(MB(MU(Call 1775 ("reg'PSR",F32, 1776 Var("v",CTy"PSR")),qTy), 1777 Close 1778 (Var("w",F32), 1779 MB(MR(Close 1780 (qVar"s", 1781 Dest 1782 ("CPSR",CTy"PSR", 1783 qVar"s"))), 1784 Close 1785 (Var("v",CTy"PSR"), 1786 MB(MB(MU(TP[Var("v", 1787 CTy"PSR"), 1788 BFI(LN 31, 1789 LN 27, 1790 EX(Var("value", 1791 F32), 1792 LN 31, 1793 LN 27, 1794 FTy 5), 1795 Var("w", 1796 F32))], 1797 qTy), 1798 Close 1799 (Var("v", 1800 PTy(CTy"PSR", 1801 F32)), 1802 MU(Call 1803 ("write'reg'PSR", 1804 CTy"PSR", 1805 Var("v", 1806 PTy(CTy"PSR", 1807 F32))), 1808 qTy))), 1809 Close 1810 (Var("v",CTy"PSR"), 1811 MW(Close 1812 (qVar"s", 1813 Rupd 1814 ("CPSR", 1815 TP[qVar"s", 1816 Var("v", 1817 CTy"PSR")]))))))))), 1818 Close 1819 (AVar uTy, 1820 ITE(bVar"is_excpt_return", 1821 MB(MR(Close 1822 (qVar"s", 1823 Dest 1824 ("CPSR",CTy"PSR", 1825 qVar"s"))), 1826 Close 1827 (Var("v",CTy"PSR"), 1828 MB(MU(Call 1829 ("reg'PSR",F32, 1830 Var("v", 1831 CTy"PSR")), 1832 qTy), 1833 Close 1834 (Var("w",F32), 1835 MB(MR(Close 1836 (qVar"s", 1837 Dest 1838 ("CPSR", 1839 CTy"PSR", 1840 qVar"s"))), 1841 Close 1842 (Var("v", 1843 CTy"PSR"), 1844 MB(MB(MU(TP[Var("v", 1845 CTy"PSR"), 1846 BFI(LN 1847 26, 1848 LN 1849 24, 1850 EX(Var("value", 1851 F32), 1852 LN 1853 26, 1854 LN 1855 24, 1856 FTy 3), 1857 Var("w", 1858 F32))], 1859 qTy), 1860 Close 1861 (Var("v", 1862 PTy(CTy"PSR", 1863 F32)), 1864 MU(Call 1865 ("write'reg'PSR", 1866 CTy"PSR", 1867 Var("v", 1868 PTy(CTy"PSR", 1869 F32))), 1870 qTy))), 1871 Close 1872 (Var("v", 1873 CTy"PSR"), 1874 MW(Close 1875 (qVar"s", 1876 Rupd 1877 ("CPSR", 1878 TP[qVar"s", 1879 Var("v", 1880 CTy"PSR")]))))))))))), 1881 MU(LU,qTy)))))),MU(LU,qTy)), 1882 Close 1883 (AVar uTy, 1884 MB(ITE(Bop(Bit,Var("bytemask",F4),LN 2), 1885 MB(MR(Close 1886 (qVar"s", 1887 Dest("CPSR",CTy"PSR",qVar"s"))), 1888 Close 1889 (Var("v",CTy"PSR"), 1890 MB(MU(Call 1891 ("reg'PSR",F32, 1892 Var("v",CTy"PSR")),qTy), 1893 Close 1894 (Var("w",F32), 1895 MB(MR(Close 1896 (qVar"s", 1897 Dest 1898 ("CPSR",CTy"PSR", 1899 qVar"s"))), 1900 Close 1901 (Var("v",CTy"PSR"), 1902 MB(MB(MU(TP[Var("v", 1903 CTy"PSR"), 1904 BFI(LN 19, 1905 LN 16, 1906 EX(Var("value", 1907 F32), 1908 LN 1909 19, 1910 LN 1911 16, 1912 F4), 1913 Var("w", 1914 F32))], 1915 qTy), 1916 Close 1917 (Var("v", 1918 PTy(CTy"PSR", 1919 F32)), 1920 MU(Call 1921 ("write'reg'PSR", 1922 CTy"PSR", 1923 Var("v", 1924 PTy(CTy"PSR", 1925 F32))), 1926 qTy))), 1927 Close 1928 (Var("v",CTy"PSR"), 1929 MW(Close 1930 (qVar"s", 1931 Rupd 1932 ("CPSR", 1933 TP[qVar"s", 1934 Var("v", 1935 CTy"PSR")]))))))))))), 1936 MU(LU,qTy)), 1937 Close 1938 (AVar uTy, 1939 MB(ITE(Bop(Bit,Var("bytemask",F4),LN 1), 1940 MB(ITE(bVar"is_excpt_return", 1941 MB(MR(Close 1942 (qVar"s", 1943 Dest 1944 ("CPSR", 1945 CTy"PSR", 1946 qVar"s"))), 1947 Close 1948 (Var("v",CTy"PSR"), 1949 MB(MU(Call 1950 ("reg'PSR", 1951 F32, 1952 Var("v", 1953 CTy"PSR")), 1954 qTy), 1955 Close 1956 (Var("w",F32), 1957 MB(MR(Close 1958 (qVar"s", 1959 Dest 1960 ("CPSR", 1961 CTy"PSR", 1962 qVar"s"))), 1963 Close 1964 (Var("v", 1965 CTy"PSR"), 1966 MB(MB(MU(TP[Var("v", 1967 CTy"PSR"), 1968 BFI(LN 1969 15, 1970 LN 1971 10, 1972 EX(Var("value", 1973 F32), 1974 LN 1975 15, 1976 LN 1977 10, 1978 FTy 6), 1979 Var("w", 1980 F32))], 1981 qTy), 1982 Close 1983 (Var("v", 1984 PTy(CTy"PSR", 1985 F32)), 1986 MU(Call 1987 ("write'reg'PSR", 1988 CTy"PSR", 1989 Var("v", 1990 PTy(CTy"PSR", 1991 F32))), 1992 qTy))), 1993 Close 1994 (Var("v", 1995 CTy"PSR"), 1996 MW(Close 1997 (qVar"s", 1998 Rupd 1999 ("CPSR", 2000 TP[qVar"s", 2001 Var("v", 2002 CTy"PSR")]))))))))))), 2003 MU(LU,qTy)), 2004 Close 2005 (AVar uTy, 2006 MB(MR(Close 2007 (qVar"s", 2008 Dest 2009 ("CPSR",CTy"PSR", 2010 qVar"s"))), 2011 Close 2012 (Var("v",CTy"PSR"), 2013 MB(MB(MU(Call 2014 ("reg'PSR", 2015 F32, 2016 Var("v", 2017 CTy"PSR")), 2018 qTy), 2019 Close 2020 (Var("w",F32), 2021 MB(MR(Close 2022 (qVar"s", 2023 Dest 2024 ("CPSR", 2025 CTy"PSR", 2026 qVar"s"))), 2027 Close 2028 (Var("v", 2029 CTy"PSR"), 2030 MB(MB(MU(TP[Var("v", 2031 CTy"PSR"), 2032 BFI(LN 2033 9, 2034 LN 2035 9, 2036 Mop(Cast 2037 F1, 2038 Bop(Bit, 2039 Var("value", 2040 F32), 2041 LN 2042 9)), 2043 Var("w", 2044 F32))], 2045 qTy), 2046 Close 2047 (Var("v", 2048 PTy(CTy"PSR", 2049 F32)), 2050 MU(Call 2051 ("write'reg'PSR", 2052 CTy"PSR", 2053 Var("v", 2054 PTy(CTy"PSR", 2055 F32))), 2056 qTy))), 2057 Close 2058 (Var("v", 2059 CTy"PSR"), 2060 MW(Close 2061 (qVar"s", 2062 Rupd 2063 ("CPSR", 2064 TP[qVar"s", 2065 Var("v", 2066 CTy"PSR")]))))))))), 2067 Close 2068 (AVar uTy, 2069 MB(Call 2070 ("IsSecure", 2071 ATy(qTy, 2072 PTy(bTy, 2073 qTy)), 2074 LU), 2075 Close 2076 (bVar"v", 2077 MB(MB(ITE(bVar"v", 2078 MU(LT, 2079 qTy), 2080 MB(MR(Close 2081 (qVar"s", 2082 Dest 2083 ("CP15", 2084 CTy"CP15", 2085 qVar"s"))), 2086 Close 2087 (Var("v", 2088 CTy"CP15"), 2089 MB(MU(Dest 2090 ("SCR", 2091 CTy"SCR", 2092 Var("v", 2093 CTy"CP15")), 2094 qTy), 2095 Close 2096 (Var("v", 2097 CTy"SCR"), 2098 MU(Dest 2099 ("AW", 2100 bTy, 2101 Var("v", 2102 CTy"SCR")), 2103 qTy)))))), 2104 Close 2105 (bVar"v", 2106 MU(Bop(And, 2107 bVar"privileged", 2108 bVar"v"), 2109 qTy))), 2110 Close 2111 (bVar"b", 2112 ITE(bVar"b", 2113 MB(MR(Close 2114 (qVar"s", 2115 Dest 2116 ("CPSR", 2117 CTy"PSR", 2118 qVar"s"))), 2119 Close 2120 (Var("v", 2121 CTy"PSR"), 2122 MB(MU(Call 2123 ("reg'PSR", 2124 F32, 2125 Var("v", 2126 CTy"PSR")), 2127 qTy), 2128 Close 2129 (Var("w", 2130 F32), 2131 MB(MR(Close 2132 (qVar"s", 2133 Dest 2134 ("CPSR", 2135 CTy"PSR", 2136 qVar"s"))), 2137 Close 2138 (Var("v", 2139 CTy"PSR"), 2140 MB(MB(MU(TP[Var("v", 2141 CTy"PSR"), 2142 BFI(LN 2143 8, 2144 LN 2145 8, 2146 Mop(Cast 2147 F1, 2148 Bop(Bit, 2149 Var("value", 2150 F32), 2151 LN 2152 8)), 2153 Var("w", 2154 F32))], 2155 qTy), 2156 Close 2157 (Var("v", 2158 PTy(CTy"PSR", 2159 F32)), 2160 MU(Call 2161 ("write'reg'PSR", 2162 CTy"PSR", 2163 Var("v", 2164 PTy(CTy"PSR", 2165 F32))), 2166 qTy))), 2167 Close 2168 (Var("v", 2169 CTy"PSR"), 2170 MW(Close 2171 (qVar"s", 2172 Rupd 2173 ("CPSR", 2174 TP[qVar"s", 2175 Var("v", 2176 CTy"PSR")]))))))))))), 2177 MU(LU, 2178 qTy)))))))))))), 2179 MU(LU,qTy)), 2180 Close 2181 (AVar uTy, 2182 ITE(Bop(Bit,Var("bytemask",F4),LN 0), 2183 MB(ITE(bVar"privileged", 2184 MB(MR(Close 2185 (qVar"s", 2186 Dest 2187 ("CPSR", 2188 CTy"PSR", 2189 qVar"s"))), 2190 Close 2191 (Var("v",CTy"PSR"), 2192 MB(MU(Call 2193 ("reg'PSR", 2194 F32, 2195 Var("v", 2196 CTy"PSR")), 2197 qTy), 2198 Close 2199 (Var("w",F32), 2200 MB(MR(Close 2201 (qVar"s", 2202 Dest 2203 ("CPSR", 2204 CTy"PSR", 2205 qVar"s"))), 2206 Close 2207 (Var("v", 2208 CTy"PSR"), 2209 MB(MB(MU(TP[Var("v", 2210 CTy"PSR"), 2211 BFI(LN 2212 7, 2213 LN 2214 7, 2215 Mop(Cast 2216 F1, 2217 Bop(Bit, 2218 Var("value", 2219 F32), 2220 LN 2221 7)), 2222 Var("w", 2223 F32))], 2224 qTy), 2225 Close 2226 (Var("v", 2227 PTy(CTy"PSR", 2228 F32)), 2229 MU(Call 2230 ("write'reg'PSR", 2231 CTy"PSR", 2232 Var("v", 2233 PTy(CTy"PSR", 2234 F32))), 2235 qTy))), 2236 Close 2237 (Var("v", 2238 CTy"PSR"), 2239 MW(Close 2240 (qVar"s", 2241 Rupd 2242 ("CPSR", 2243 TP[qVar"s", 2244 Var("v", 2245 CTy"PSR")]))))))))))), 2246 MU(LU,qTy)), 2247 Close 2248 (AVar uTy, 2249 MB(Call 2250 ("IsSecure", 2251 ATy(qTy, 2252 PTy(bTy,qTy)), 2253 LU), 2254 Close 2255 (bVar"v", 2256 MB(MB(MB(MB(ITE(bVar"v", 2257 MU(LT, 2258 qTy), 2259 MB(MR(Close 2260 (qVar"s", 2261 Dest 2262 ("CP15", 2263 CTy"CP15", 2264 qVar"s"))), 2265 Close 2266 (Var("v", 2267 CTy"CP15"), 2268 MB(MU(Dest 2269 ("SCR", 2270 CTy"SCR", 2271 Var("v", 2272 CTy"CP15")), 2273 qTy), 2274 Close 2275 (Var("v", 2276 CTy"SCR"), 2277 MU(Dest 2278 ("FW", 2279 bTy, 2280 Var("v", 2281 CTy"SCR")), 2282 qTy)))))), 2283 Close 2284 (bVar"b", 2285 ITE(bVar"b", 2286 MU(LT, 2287 qTy), 2288 Call 2289 ("HaveVirtExt", 2290 ATy(qTy, 2291 PTy(bTy, 2292 qTy)), 2293 LU)))), 2294 Close 2295 (bVar"v", 2296 MU(Bop(And, 2297 Bop(And, 2298 bVar"privileged", 2299 Bop(Or, 2300 Mop(Not, 2301 bVar"nmfi"), 2302 Mop(Not, 2303 Bop(Bit, 2304 Var("value", 2305 F32), 2306 LN 2307 6)))), 2308 bVar"v"), 2309 qTy))), 2310 Close 2311 (bVar"b", 2312 ITE(bVar"b", 2313 MB(MR(Close 2314 (qVar"s", 2315 Dest 2316 ("CPSR", 2317 CTy"PSR", 2318 qVar"s"))), 2319 Close 2320 (Var("v", 2321 CTy"PSR"), 2322 MB(MU(Call 2323 ("reg'PSR", 2324 F32, 2325 Var("v", 2326 CTy"PSR")), 2327 qTy), 2328 Close 2329 (Var("w", 2330 F32), 2331 MB(MR(Close 2332 (qVar"s", 2333 Dest 2334 ("CPSR", 2335 CTy"PSR", 2336 qVar"s"))), 2337 Close 2338 (Var("v", 2339 CTy"PSR"), 2340 MB(MB(MU(TP[Var("v", 2341 CTy"PSR"), 2342 BFI(LN 2343 6, 2344 LN 2345 6, 2346 Mop(Cast 2347 F1, 2348 Bop(Bit, 2349 Var("value", 2350 F32), 2351 LN 2352 6)), 2353 Var("w", 2354 F32))], 2355 qTy), 2356 Close 2357 (Var("v", 2358 PTy(CTy"PSR", 2359 F32)), 2360 MU(Call 2361 ("write'reg'PSR", 2362 CTy"PSR", 2363 Var("v", 2364 PTy(CTy"PSR", 2365 F32))), 2366 qTy))), 2367 Close 2368 (Var("v", 2369 CTy"PSR"), 2370 MW(Close 2371 (qVar"s", 2372 Rupd 2373 ("CPSR", 2374 TP[qVar"s", 2375 Var("v", 2376 CTy"PSR")]))))))))))), 2377 MU(LU, 2378 qTy)))), 2379 Close 2380 (AVar uTy, 2381 MB(ITE(bVar"is_excpt_return", 2382 MB(MR(Close 2383 (qVar"s", 2384 Dest 2385 ("CPSR", 2386 CTy"PSR", 2387 qVar"s"))), 2388 Close 2389 (Var("v", 2390 CTy"PSR"), 2391 MB(MU(Call 2392 ("reg'PSR", 2393 F32, 2394 Var("v", 2395 CTy"PSR")), 2396 qTy), 2397 Close 2398 (Var("w", 2399 F32), 2400 MB(MR(Close 2401 (qVar"s", 2402 Dest 2403 ("CPSR", 2404 CTy"PSR", 2405 qVar"s"))), 2406 Close 2407 (Var("v", 2408 CTy"PSR"), 2409 MB(MB(MU(TP[Var("v", 2410 CTy"PSR"), 2411 BFI(LN 2412 5, 2413 LN 2414 5, 2415 Mop(Cast 2416 F1, 2417 Bop(Bit, 2418 Var("value", 2419 F32), 2420 LN 2421 5)), 2422 Var("w", 2423 F32))], 2424 qTy), 2425 Close 2426 (Var("v", 2427 PTy(CTy"PSR", 2428 F32)), 2429 MU(Call 2430 ("write'reg'PSR", 2431 CTy"PSR", 2432 Var("v", 2433 PTy(CTy"PSR", 2434 F32))), 2435 qTy))), 2436 Close 2437 (Var("v", 2438 CTy"PSR"), 2439 MW(Close 2440 (qVar"s", 2441 Rupd 2442 ("CPSR", 2443 TP[qVar"s", 2444 Var("v", 2445 CTy"PSR")]))))))))))), 2446 MU(LU, 2447 qTy)), 2448 Close 2449 (AVar 2450 uTy, 2451 ITE(bVar"privileged", 2452 MB(Call 2453 ("BadMode", 2454 ATy(qTy, 2455 PTy(bTy, 2456 qTy)), 2457 EX(Var("value", 2458 F32), 2459 LN 2460 4, 2461 LN 2462 0, 2463 FTy 5)), 2464 Close 2465 (bVar"b", 2466 ITE(bVar"b", 2467 Call 2468 ("raise'exception", 2469 ATy(qTy, 2470 PTy(uTy, 2471 qTy)), 2472 Call 2473 ("UNPREDICTABLE", 2474 CTy"exception", 2475 CC[LS 2476 "CPSRWriteByInstr: BadMode: ", 2477 Mop(Cast 2478 sTy, 2479 EX(Var("value", 2480 F32), 2481 LN 2482 4, 2483 LN 2484 0, 2485 FTy 5))])), 2486 MB(Call 2487 ("IsSecure", 2488 ATy(qTy, 2489 PTy(bTy, 2490 qTy)), 2491 LU), 2492 Close 2493 (bVar"v", 2494 MB(MB(MB(MU(Mop(Not, 2495 bVar"v"), 2496 qTy), 2497 Close 2498 (bVar"b", 2499 MU(Bop(And, 2500 bVar"b", 2501 EQ(EX(Var("value", 2502 F32), 2503 LN 2504 4, 2505 LN 2506 0, 2507 FTy 5), 2508 LW(22, 2509 5))), 2510 qTy))), 2511 Close 2512 (bVar"b", 2513 ITE(bVar"b", 2514 Call 2515 ("raise'exception", 2516 ATy(qTy, 2517 PTy(uTy, 2518 qTy)), 2519 Call 2520 ("UNPREDICTABLE", 2521 CTy"exception", 2522 LS 2523 "CPSRWriteByInstr")), 2524 MU(LU, 2525 qTy)))), 2526 Close 2527 (AVar 2528 uTy, 2529 MB(Call 2530 ("IsSecure", 2531 ATy(qTy, 2532 PTy(bTy, 2533 qTy)), 2534 LU), 2535 Close 2536 (bVar"v", 2537 MB(MB(MB(MB(MU(Mop(Not, 2538 bVar"v"), 2539 qTy), 2540 Close 2541 (bVar"b", 2542 MU(Bop(And, 2543 bVar"b", 2544 EQ(EX(Var("value", 2545 F32), 2546 LN 2547 4, 2548 LN 2549 0, 2550 FTy 5), 2551 LW(17, 2552 5))), 2553 qTy))), 2554 Close 2555 (bVar"b", 2556 ITE(bVar"b", 2557 MB(MR(Close 2558 (qVar"s", 2559 Dest 2560 ("CP15", 2561 CTy"CP15", 2562 qVar"s"))), 2563 Close 2564 (Var("v", 2565 CTy"CP15"), 2566 MB(MU(Dest 2567 ("NSACR", 2568 CTy"NSACR", 2569 Var("v", 2570 CTy"CP15")), 2571 qTy), 2572 Close 2573 (Var("v", 2574 CTy"NSACR"), 2575 MU(Dest 2576 ("RFR", 2577 bTy, 2578 Var("v", 2579 CTy"NSACR")), 2580 qTy))))), 2581 MU(LF, 2582 qTy)))), 2583 Close 2584 (bVar"b", 2585 ITE(bVar"b", 2586 Call 2587 ("raise'exception", 2588 ATy(qTy, 2589 PTy(uTy, 2590 qTy)), 2591 Call 2592 ("UNPREDICTABLE", 2593 CTy"exception", 2594 LS 2595 "CPSRWriteByInstr")), 2596 MU(LU, 2597 qTy)))), 2598 Close 2599 (AVar 2600 uTy, 2601 MB(MR(Close 2602 (qVar"s", 2603 Dest 2604 ("CP15", 2605 CTy"CP15", 2606 qVar"s"))), 2607 Close 2608 (Var("v", 2609 CTy"CP15"), 2610 MB(MB(MB(MB(MB(MU(Dest 2611 ("SCR", 2612 CTy"SCR", 2613 Var("v", 2614 CTy"CP15")), 2615 qTy), 2616 Close 2617 (Var("v", 2618 CTy"SCR"), 2619 MU(Dest 2620 ("NS", 2621 bTy, 2622 Var("v", 2623 CTy"SCR")), 2624 qTy))), 2625 Close 2626 (bVar"v", 2627 MU(Mop(Not, 2628 bVar"v"), 2629 qTy))), 2630 Close 2631 (bVar"b", 2632 MU(Bop(And, 2633 bVar"b", 2634 EQ(EX(Var("value", 2635 F32), 2636 LN 2637 4, 2638 LN 2639 0, 2640 FTy 5), 2641 LW(26, 2642 5))), 2643 qTy))), 2644 Close 2645 (bVar"b", 2646 ITE(bVar"b", 2647 Call 2648 ("raise'exception", 2649 ATy(qTy, 2650 PTy(uTy, 2651 qTy)), 2652 Call 2653 ("UNPREDICTABLE", 2654 CTy"exception", 2655 LS 2656 "CPSRWriteByInstr")), 2657 MU(LU, 2658 qTy)))), 2659 Close 2660 (AVar 2661 uTy, 2662 MB(Call 2663 ("IsSecure", 2664 ATy(qTy, 2665 PTy(bTy, 2666 qTy)), 2667 LU), 2668 Close 2669 (bVar"v", 2670 MB(MB(MB(MB(MU(Mop(Not, 2671 bVar"v"), 2672 qTy), 2673 Close 2674 (bVar"b", 2675 ITE(bVar"b", 2676 MB(MR(Close 2677 (qVar"s", 2678 Dest 2679 ("CPSR", 2680 CTy"PSR", 2681 qVar"s"))), 2682 Close 2683 (Var("v", 2684 CTy"PSR"), 2685 MB(MB(MU(Dest 2686 ("M", 2687 FTy 5, 2688 Var("v", 2689 CTy"PSR")), 2690 qTy), 2691 Close 2692 (Var("v", 2693 FTy 5), 2694 MU(EQ(Var("v", 2695 FTy 5), 2696 LW(26, 2697 5)), 2698 qTy))), 2699 Close 2700 (bVar"v", 2701 MU(Mop(Not, 2702 bVar"v"), 2703 qTy))))), 2704 MU(LF, 2705 qTy)))), 2706 Close 2707 (bVar"b", 2708 MU(Bop(And, 2709 bVar"b", 2710 EQ(EX(Var("value", 2711 F32), 2712 LN 2713 4, 2714 LN 2715 0, 2716 FTy 5), 2717 LW(26, 2718 5))), 2719 qTy))), 2720 Close 2721 (bVar"b", 2722 ITE(bVar"b", 2723 Call 2724 ("raise'exception", 2725 ATy(qTy, 2726 PTy(uTy, 2727 qTy)), 2728 Call 2729 ("UNPREDICTABLE", 2730 CTy"exception", 2731 LS 2732 "CPSRWriteByInstr")), 2733 MU(LU, 2734 qTy)))), 2735 Close 2736 (AVar 2737 uTy, 2738 MB(MR(Close 2739 (qVar"s", 2740 Dest 2741 ("CPSR", 2742 CTy"PSR", 2743 qVar"s"))), 2744 Close 2745 (Var("v", 2746 CTy"PSR"), 2747 MB(MB(MB(MB(MB(MU(Dest 2748 ("M", 2749 FTy 5, 2750 Var("v", 2751 CTy"PSR")), 2752 qTy), 2753 Close 2754 (Var("v", 2755 FTy 5), 2756 MU(EQ(Var("v", 2757 FTy 5), 2758 LW(26, 2759 5)), 2760 qTy))), 2761 Close 2762 (bVar"b", 2763 MU(Bop(And, 2764 bVar"b", 2765 Mop(Not, 2766 EQ(EX(Var("value", 2767 F32), 2768 LN 2769 4, 2770 LN 2771 0, 2772 FTy 5), 2773 LW(26, 2774 5)))), 2775 qTy))), 2776 Close 2777 (bVar"b", 2778 MU(Bop(And, 2779 bVar"b", 2780 Mop(Not, 2781 bVar"is_excpt_return")), 2782 qTy))), 2783 Close 2784 (bVar"b", 2785 ITE(bVar"b", 2786 Call 2787 ("raise'exception", 2788 ATy(qTy, 2789 PTy(uTy, 2790 qTy)), 2791 Call 2792 ("UNPREDICTABLE", 2793 CTy"exception", 2794 LS 2795 "CPSRWriteByInstr")), 2796 MU(LU, 2797 qTy)))), 2798 Close 2799 (AVar 2800 uTy, 2801 MB(MR(Close 2802 (qVar"s", 2803 Dest 2804 ("CPSR", 2805 CTy"PSR", 2806 qVar"s"))), 2807 Close 2808 (Var("v", 2809 CTy"PSR"), 2810 MB(MU(Call 2811 ("reg'PSR", 2812 F32, 2813 Var("v", 2814 CTy"PSR")), 2815 qTy), 2816 Close 2817 (Var("w", 2818 F32), 2819 MB(MR(Close 2820 (qVar"s", 2821 Dest 2822 ("CPSR", 2823 CTy"PSR", 2824 qVar"s"))), 2825 Close 2826 (Var("v", 2827 CTy"PSR"), 2828 MB(MB(MU(TP[Var("v", 2829 CTy"PSR"), 2830 BFI(LN 2831 4, 2832 LN 2833 0, 2834 EX(Var("value", 2835 F32), 2836 LN 2837 4, 2838 LN 2839 0, 2840 FTy 5), 2841 Var("w", 2842 F32))], 2843 qTy), 2844 Close 2845 (Var("v", 2846 PTy(CTy"PSR", 2847 F32)), 2848 MU(Call 2849 ("write'reg'PSR", 2850 CTy"PSR", 2851 Var("v", 2852 PTy(CTy"PSR", 2853 F32))), 2854 qTy))), 2855 Close 2856 (Var("v", 2857 CTy"PSR"), 2858 MW(Close 2859 (qVar"s", 2860 Rupd 2861 ("CPSR", 2862 TP[qVar"s", 2863 Var("v", 2864 CTy"PSR")])))))))))))))))))))))))))))))))))), 2865 MU(LU, 2866 qTy)))))))))), 2867 MU(LU,qTy))))))))))))))) 2868; 2869val SPSRWriteByInstr_def = Def 2870 ("SPSRWriteByInstr",TP[Var("value",F32),Var("bytemask",F4)], 2871 MB(Call("CurrentModeIsUserOrSystem",ATy(qTy,PTy(bTy,qTy)),LU), 2872 Close 2873 (bVar"v", 2874 MB(ITE(bVar"v", 2875 Call 2876 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2877 Call 2878 ("UNPREDICTABLE",CTy"exception",LS"SPSRWriteByInstr")), 2879 MU(LU,qTy)), 2880 Close 2881 (AVar uTy, 2882 MB(ITE(Bop(Bit,Var("bytemask",F4),LN 3), 2883 MB(Const("SPSR",ATy(qTy,PTy(CTy"PSR",qTy))), 2884 Close 2885 (Var("x",CTy"PSR"), 2886 Call 2887 ("write'SPSR",ATy(qTy,PTy(uTy,qTy)), 2888 Call 2889 ("write'reg'PSR",CTy"PSR", 2890 TP[Var("x",CTy"PSR"), 2891 BFI(LN 31,LN 24, 2892 EX(Var("value",F32),LN 31,LN 24, 2893 F8), 2894 Call 2895 ("reg'PSR",F32, 2896 Var("x",CTy"PSR")))])))), 2897 MU(LU,qTy)), 2898 Close 2899 (AVar uTy, 2900 MB(ITE(Bop(Bit,Var("bytemask",F4),LN 2), 2901 MB(Const("SPSR",ATy(qTy,PTy(CTy"PSR",qTy))), 2902 Close 2903 (Var("x",CTy"PSR"), 2904 Call 2905 ("write'SPSR",ATy(qTy,PTy(uTy,qTy)), 2906 Call 2907 ("write'reg'PSR",CTy"PSR", 2908 TP[Var("x",CTy"PSR"), 2909 BFI(LN 19,LN 16, 2910 EX(Var("value",F32),LN 19, 2911 LN 16,F4), 2912 Call 2913 ("reg'PSR",F32, 2914 Var("x",CTy"PSR")))])))), 2915 MU(LU,qTy)), 2916 Close 2917 (AVar uTy, 2918 MB(ITE(Bop(Bit,Var("bytemask",F4),LN 1), 2919 MB(Const 2920 ("SPSR",ATy(qTy,PTy(CTy"PSR",qTy))), 2921 Close 2922 (Var("x",CTy"PSR"), 2923 Call 2924 ("write'SPSR", 2925 ATy(qTy,PTy(uTy,qTy)), 2926 Call 2927 ("write'reg'PSR",CTy"PSR", 2928 TP[Var("x",CTy"PSR"), 2929 BFI(LN 15,LN 8, 2930 EX(Var("value",F32), 2931 LN 15,LN 8,F8), 2932 Call 2933 ("reg'PSR",F32, 2934 Var("x",CTy"PSR")))])))), 2935 MU(LU,qTy)), 2936 Close 2937 (AVar uTy, 2938 ITE(Bop(Bit,Var("bytemask",F4),LN 0), 2939 MB(Const 2940 ("SPSR", 2941 ATy(qTy,PTy(CTy"PSR",qTy))), 2942 Close 2943 (Var("v",CTy"PSR"), 2944 MB(Call 2945 ("write'SPSR", 2946 ATy(qTy,PTy(uTy,qTy)), 2947 Call 2948 ("write'reg'PSR", 2949 CTy"PSR", 2950 TP[Var("v",CTy"PSR"), 2951 BFI(LN 7,LN 5, 2952 EX(Var("value", 2953 F32), 2954 LN 7,LN 5, 2955 FTy 3), 2956 Call 2957 ("reg'PSR", 2958 F32, 2959 Var("v", 2960 CTy"PSR")))])), 2961 Close 2962 (AVar uTy, 2963 MB(Call 2964 ("BadMode", 2965 ATy(qTy, 2966 PTy(bTy,qTy)), 2967 EX(Var("value",F32), 2968 LN 4,LN 0,FTy 5)), 2969 Close 2970 (bVar"b", 2971 ITE(bVar"b", 2972 Call 2973 ("raise'exception", 2974 ATy(qTy, 2975 PTy(uTy, 2976 qTy)), 2977 Call 2978 ("UNPREDICTABLE", 2979 CTy"exception", 2980 CC[LS 2981 "SPSRWriteByInstr: BadMode: ", 2982 Mop(Cast 2983 sTy, 2984 EX(Var("value", 2985 F32), 2986 LN 2987 4, 2988 LN 2989 0, 2990 FTy 5))])), 2991 MB(Const 2992 ("SPSR", 2993 ATy(qTy, 2994 PTy(CTy"PSR", 2995 qTy))), 2996 Close 2997 (Var("x", 2998 CTy"PSR"), 2999 Call 3000 ("write'SPSR", 3001 ATy(qTy, 3002 PTy(uTy, 3003 qTy)), 3004 Call 3005 ("write'reg'PSR", 3006 CTy"PSR", 3007 TP[Var("x", 3008 CTy"PSR"), 3009 BFI(LN 3010 4, 3011 LN 3012 0, 3013 EX(Var("value", 3014 F32), 3015 LN 3016 4, 3017 LN 3018 0, 3019 FTy 5), 3020 Call 3021 ("reg'PSR", 3022 F32, 3023 Var("x", 3024 CTy"PSR")))]))))))))))), 3025 MU(LU,qTy))))))))))))) 3026; 3027val RBankSelect_def = Def 3028 ("RBankSelect", 3029 TP[Var("mode",FTy 5),Var("usr",CTy"RName"),Var("fiq",CTy"RName"), 3030 Var("irq",CTy"RName"),Var("svc",CTy"RName"),Var("abt",CTy"RName"), 3031 Var("und",CTy"RName"),Var("mon",CTy"RName"),Var("hyp",CTy"RName")], 3032 MB(Call("BadMode",ATy(qTy,PTy(bTy,qTy)),Var("mode",FTy 5)), 3033 Close 3034 (bVar"b", 3035 ITE(bVar"b", 3036 Call 3037 ("raise'exception",ATy(qTy,PTy(CTy"RName",qTy)), 3038 Call 3039 ("UNPREDICTABLE",CTy"exception", 3040 CC[LS"RBankSelect: BadMode", 3041 Mop(Cast sTy,Var("mode",FTy 5))])), 3042 MU(CS(Var("mode",FTy 5), 3043 [(LW(16,5),Var("usr",CTy"RName")), 3044 (LW(17,5),Var("fiq",CTy"RName")), 3045 (LW(18,5),Var("irq",CTy"RName")), 3046 (LW(19,5),Var("svc",CTy"RName")), 3047 (LW(22,5),Var("mon",CTy"RName")), 3048 (LW(23,5),Var("abt",CTy"RName")), 3049 (LW(26,5),Var("hyp",CTy"RName")), 3050 (LW(27,5),Var("und",CTy"RName")), 3051 (LW(31,5),Var("usr",CTy"RName"))]),qTy))))) 3052; 3053val RfiqBankSelect_def = Def 3054 ("RfiqBankSelect", 3055 TP[Var("mode",FTy 5),Var("usr",CTy"RName"),Var("fiq",CTy"RName")], 3056 Call 3057 ("RBankSelect",ATy(qTy,PTy(CTy"RName",qTy)), 3058 TP[Var("mode",FTy 5),Var("usr",CTy"RName"),Var("fiq",CTy"RName"), 3059 Var("usr",CTy"RName"),Var("usr",CTy"RName"), 3060 Var("usr",CTy"RName"),Var("usr",CTy"RName"), 3061 Var("usr",CTy"RName"),Var("usr",CTy"RName")])) 3062; 3063val LookUpRName_def = Def 3064 ("LookUpRName",TP[Var("n",F4),Var("mode",FTy 5)], 3065 CS(Var("n",F4), 3066 [(LW(0,4),MU(LC("RName_0usr",CTy"RName"),qTy)), 3067 (LW(1,4),MU(LC("RName_1usr",CTy"RName"),qTy)), 3068 (LW(2,4),MU(LC("RName_2usr",CTy"RName"),qTy)), 3069 (LW(3,4),MU(LC("RName_3usr",CTy"RName"),qTy)), 3070 (LW(4,4),MU(LC("RName_4usr",CTy"RName"),qTy)), 3071 (LW(5,4),MU(LC("RName_5usr",CTy"RName"),qTy)), 3072 (LW(6,4),MU(LC("RName_6usr",CTy"RName"),qTy)), 3073 (LW(7,4),MU(LC("RName_7usr",CTy"RName"),qTy)), 3074 (LW(8,4), 3075 Call 3076 ("RfiqBankSelect",ATy(qTy,PTy(CTy"RName",qTy)), 3077 TP[Var("mode",FTy 5),LC("RName_8usr",CTy"RName"), 3078 LC("RName_8fiq",CTy"RName")])), 3079 (LW(9,4), 3080 Call 3081 ("RfiqBankSelect",ATy(qTy,PTy(CTy"RName",qTy)), 3082 TP[Var("mode",FTy 5),LC("RName_9usr",CTy"RName"), 3083 LC("RName_9fiq",CTy"RName")])), 3084 (LW(10,4), 3085 Call 3086 ("RfiqBankSelect",ATy(qTy,PTy(CTy"RName",qTy)), 3087 TP[Var("mode",FTy 5),LC("RName_10usr",CTy"RName"), 3088 LC("RName_10fiq",CTy"RName")])), 3089 (LW(11,4), 3090 Call 3091 ("RfiqBankSelect",ATy(qTy,PTy(CTy"RName",qTy)), 3092 TP[Var("mode",FTy 5),LC("RName_11usr",CTy"RName"), 3093 LC("RName_11fiq",CTy"RName")])), 3094 (LW(12,4), 3095 Call 3096 ("RfiqBankSelect",ATy(qTy,PTy(CTy"RName",qTy)), 3097 TP[Var("mode",FTy 5),LC("RName_12usr",CTy"RName"), 3098 LC("RName_12fiq",CTy"RName")])), 3099 (LW(13,4), 3100 Call 3101 ("RBankSelect",ATy(qTy,PTy(CTy"RName",qTy)), 3102 TP[Var("mode",FTy 5),LC("RName_SPusr",CTy"RName"), 3103 LC("RName_SPfiq",CTy"RName"),LC("RName_SPirq",CTy"RName"), 3104 LC("RName_SPsvc",CTy"RName"),LC("RName_SPabt",CTy"RName"), 3105 LC("RName_SPund",CTy"RName"),LC("RName_SPmon",CTy"RName"), 3106 LC("RName_SPhyp",CTy"RName")])), 3107 (LW(14,4), 3108 Call 3109 ("RBankSelect",ATy(qTy,PTy(CTy"RName",qTy)), 3110 TP[Var("mode",FTy 5),LC("RName_LRusr",CTy"RName"), 3111 LC("RName_LRfiq",CTy"RName"),LC("RName_LRirq",CTy"RName"), 3112 LC("RName_LRsvc",CTy"RName"),LC("RName_LRabt",CTy"RName"), 3113 LC("RName_LRund",CTy"RName"),LC("RName_LRmon",CTy"RName"), 3114 LC("RName_LRusr",CTy"RName")])), 3115 (LW(15,4), 3116 Call 3117 ("raise'exception",ATy(qTy,PTy(CTy"RName",qTy)), 3118 Call 3119 ("ASSERT",CTy"exception",LS"LookUpRName: n >= 0 and n <= 14")))])) 3120; 3121val Rmode_def = Def 3122 ("Rmode",TP[Var("n",F4),Var("mode",FTy 5)], 3123 MB(Call("IsSecure",ATy(qTy,PTy(bTy,qTy)),LU), 3124 Close 3125 (bVar"v", 3126 MB(MU(Mop(Not,bVar"v"),qTy), 3127 Close 3128 (bVar"notSecure", 3129 MB(ITE(Bop(And,bVar"notSecure", 3130 EQ(Var("mode",FTy 5),LW(22,5))), 3131 Call 3132 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 3133 Call("UNPREDICTABLE",CTy"exception",LS"Rmode")), 3134 MU(LU,qTy)), 3135 Close 3136 (AVar uTy, 3137 MB(MR(Close(qVar"s",Dest("CP15",CTy"CP15",qVar"s"))), 3138 Close 3139 (Var("v",CTy"CP15"), 3140 MB(MB(MB(MB(MU(Dest 3141 ("NSACR",CTy"NSACR", 3142 Var("v",CTy"CP15")),qTy), 3143 Close 3144 (Var("v",CTy"NSACR"), 3145 MU(Dest 3146 ("RFR",bTy, 3147 Var("v",CTy"NSACR")),qTy))), 3148 Close 3149 (bVar"v", 3150 MU(Bop(And, 3151 Bop(And,bVar"notSecure", 3152 EQ(Var("mode",FTy 5), 3153 LW(17,5))),bVar"v"), 3154 qTy))), 3155 Close 3156 (bVar"b", 3157 ITE(bVar"b", 3158 Call 3159 ("raise'exception", 3160 ATy(qTy,PTy(uTy,qTy)), 3161 Call 3162 ("UNPREDICTABLE", 3163 CTy"exception",LS"Rmode")), 3164 MU(LU,qTy)))), 3165 Close 3166 (AVar uTy, 3167 MB(MR(Close 3168 (qVar"s", 3169 Dest 3170 ("REG",ATy(CTy"RName",F32), 3171 qVar"s"))), 3172 Close 3173 (Var("v",ATy(CTy"RName",F32)), 3174 MB(Call 3175 ("LookUpRName", 3176 ATy(qTy,PTy(CTy"RName",qTy)), 3177 TP[Var("n",F4), 3178 Var("mode",FTy 5)]), 3179 Close 3180 (Var("v0",CTy"RName"), 3181 MU(Apply 3182 (Var("v", 3183 ATy(CTy"RName",F32)), 3184 Var("v0",CTy"RName")), 3185 qTy)))))))))))))))) 3186; 3187val write'Rmode_def = Def 3188 ("write'Rmode",TP[Var("value",F32),Var("n",F4),Var("mode",FTy 5)], 3189 MB(MR(Close(qVar"s",Dest("data_abort",bTy,qVar"s"))), 3190 Close 3191 (bVar"v", 3192 MB(MU(Mop(Not,bVar"v"),qTy), 3193 Close 3194 (bVar"b", 3195 ITE(bVar"b", 3196 MB(Call("IsSecure",ATy(qTy,PTy(bTy,qTy)),LU), 3197 Close 3198 (bVar"v", 3199 MB(MU(Mop(Not,bVar"v"),qTy), 3200 Close 3201 (bVar"notSecure", 3202 MB(ITE(Bop(And,bVar"notSecure", 3203 EQ(Var("mode",FTy 5),LW(22,5))), 3204 Call 3205 ("raise'exception", 3206 ATy(qTy,PTy(uTy,qTy)), 3207 Call 3208 ("UNPREDICTABLE", 3209 CTy"exception",LS"Rmode")), 3210 MU(LU,qTy)), 3211 Close 3212 (AVar uTy, 3213 MB(MR(Close 3214 (qVar"s", 3215 Dest 3216 ("CP15",CTy"CP15",qVar"s"))), 3217 Close 3218 (Var("v",CTy"CP15"), 3219 MB(MB(MB(MB(MU(Dest 3220 ("NSACR", 3221 CTy"NSACR", 3222 Var("v", 3223 CTy"CP15")), 3224 qTy), 3225 Close 3226 (Var("v", 3227 CTy"NSACR"), 3228 MU(Dest 3229 ("RFR",bTy, 3230 Var("v", 3231 CTy"NSACR")), 3232 qTy))), 3233 Close 3234 (bVar"v", 3235 MU(Bop(And, 3236 Bop(And, 3237 bVar"notSecure", 3238 EQ(Var("mode", 3239 FTy 5), 3240 LW(17, 3241 5))), 3242 bVar"v"),qTy))), 3243 Close 3244 (bVar"b", 3245 ITE(bVar"b", 3246 Call 3247 ("raise'exception", 3248 ATy(qTy, 3249 PTy(uTy,qTy)), 3250 Call 3251 ("UNPREDICTABLE", 3252 CTy"exception", 3253 LS"Rmode")), 3254 MU(LU,qTy)))), 3255 Close 3256 (AVar uTy, 3257 MB(Call 3258 ("CurrentInstrSet", 3259 ATy(qTy, 3260 PTy(CTy"InstrSet", 3261 qTy)),LU), 3262 Close 3263 (Var("v", 3264 CTy"InstrSet"), 3265 MB(MB(MB(MB(MU(EQ(Var("v", 3266 CTy"InstrSet"), 3267 LC("InstrSet_ARM", 3268 CTy"InstrSet")), 3269 qTy), 3270 Close 3271 (bVar"v", 3272 MU(Mop(Not, 3273 bVar"v"), 3274 qTy))), 3275 Close 3276 (bVar"v", 3277 MU(Bop(And, 3278 Bop(And, 3279 EQ(Var("n", 3280 F4), 3281 LW(13, 3282 4)), 3283 Mop(Not, 3284 EQ(EX(Var("value", 3285 F32), 3286 LN 3287 1, 3288 LN 3289 0, 3290 FTy 2), 3291 LW(0, 3292 2)))), 3293 bVar"v"), 3294 qTy))), 3295 Close 3296 (bVar"b", 3297 ITE(bVar"b", 3298 Call 3299 ("raise'exception", 3300 ATy(qTy, 3301 PTy(uTy, 3302 qTy)), 3303 Call 3304 ("UNPREDICTABLE", 3305 CTy"exception", 3306 LS 3307 "Rmode")), 3308 MU(LU, 3309 qTy)))), 3310 Close 3311 (AVar uTy, 3312 MB(Call 3313 ("LookUpRName", 3314 ATy(qTy, 3315 PTy(CTy"RName", 3316 qTy)), 3317 TP[Var("n", 3318 F4), 3319 Var("mode", 3320 FTy 5)]), 3321 Close 3322 (Var("x", 3323 CTy"RName"), 3324 MB(MR(Close 3325 (qVar"s", 3326 Dest 3327 ("REG", 3328 ATy(CTy"RName", 3329 F32), 3330 qVar"s"))), 3331 Close 3332 (Var("v", 3333 ATy(CTy"RName", 3334 F32)), 3335 MB(MU(Fupd 3336 (Var("v", 3337 ATy(CTy"RName", 3338 F32)), 3339 Var("x", 3340 CTy"RName"), 3341 Var("value", 3342 F32)), 3343 qTy), 3344 Close 3345 (Var("v", 3346 ATy(CTy"RName", 3347 F32)), 3348 MW(Close 3349 (qVar"s", 3350 Rupd 3351 ("REG", 3352 TP[qVar"s", 3353 Var("v", 3354 ATy(CTy"RName", 3355 F32))]))))))))))))))))))))))), 3356 MU(LU,qTy))))))) 3357; 3358val R_def = Def 3359 ("R",Var("n",F4), 3360 ITE(EQ(Var("n",F4),LW(15,4)), 3361 MB(Call("CurrentInstrSet",ATy(qTy,PTy(CTy"InstrSet",qTy)),LU), 3362 Close 3363 (Var("v",CTy"InstrSet"), 3364 MB(MB(MU(EQ(Var("v",CTy"InstrSet"), 3365 LC("InstrSet_ARM",CTy"InstrSet")),qTy), 3366 Close(bVar"b",MU(ITE(bVar"b",LW(8,32),LW(4,32)),qTy))), 3367 Close 3368 (Var("offset",F32), 3369 MB(MR(Close 3370 (qVar"s", 3371 Dest("REG",ATy(CTy"RName",F32),qVar"s"))), 3372 Close 3373 (Var("v",ATy(CTy"RName",F32)), 3374 MB(MU(Apply 3375 (Var("v",ATy(CTy"RName",F32)), 3376 LC("RName_PC",CTy"RName")),qTy), 3377 Close 3378 (Var("v",F32), 3379 MU(Bop(Add,Var("v",F32),Var("offset",F32)), 3380 qTy))))))))), 3381 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 3382 Close 3383 (Var("v",CTy"PSR"), 3384 MB(MB(MU(Dest("M",FTy 5,Var("v",CTy"PSR")),qTy), 3385 Close 3386 (Var("v",FTy 5), 3387 MU(TP[Var("n",F4),Var("v",FTy 5)],qTy))), 3388 Close 3389 (Var("v",PTy(F4,FTy 5)), 3390 Call 3391 ("Rmode",ATy(qTy,PTy(F32,qTy)),Var("v",PTy(F4,FTy 5))))))))) 3392; 3393val write'R_def = Def 3394 ("write'R",TP[Var("value",F32),Var("n",F4)], 3395 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 3396 Close 3397 (Var("v",CTy"PSR"), 3398 MB(MB(MU(Dest("M",FTy 5,Var("v",CTy"PSR")),qTy), 3399 Close 3400 (Var("v",FTy 5),MU(TP[Var("n",F4),Var("v",FTy 5)],qTy))), 3401 Close 3402 (Var("x",PTy(F4,FTy 5)), 3403 Call 3404 ("write'Rmode",ATy(qTy,PTy(uTy,qTy)), 3405 TP[Var("value",F32),Var("x",PTy(F4,FTy 5))])))))) 3406; 3407val SP_def = Def0 ("SP",Call("R",ATy(qTy,PTy(F32,qTy)),LW(13,4))) 3408; 3409val write'SP_def = Def 3410 ("write'SP",Var("value",F32), 3411 Call("write'R",ATy(qTy,PTy(uTy,qTy)),TP[Var("value",F32),LW(13,4)])) 3412; 3413val LR_def = Def0 ("LR",Call("R",ATy(qTy,PTy(F32,qTy)),LW(14,4))) 3414; 3415val write'LR_def = Def 3416 ("write'LR",Var("value",F32), 3417 Call("write'R",ATy(qTy,PTy(uTy,qTy)),TP[Var("value",F32),LW(14,4)])) 3418; 3419val PC_def = Def0 ("PC",Call("R",ATy(qTy,PTy(F32,qTy)),LW(15,4))) 3420; 3421val BranchTo_def = Def 3422 ("BranchTo",Var("address",F32), 3423 MB(MR(Close(qVar"s",Dest("REG",ATy(CTy"RName",F32),qVar"s"))), 3424 Close 3425 (Var("v",ATy(CTy"RName",F32)), 3426 MB(MU(Fupd 3427 (Var("v",ATy(CTy"RName",F32)),LC("RName_PC",CTy"RName"), 3428 Var("address",F32)),qTy), 3429 Close 3430 (Var("v",ATy(CTy"RName",F32)), 3431 MW(Close 3432 (qVar"s", 3433 Rupd("REG",TP[qVar"s",Var("v",ATy(CTy"RName",F32))])))))))) 3434; 3435val PCStoreValue_def = Def 3436 ("PCStoreValue",AVar uTy,Const("PC",ATy(qTy,PTy(F32,qTy)))) 3437; 3438val BranchWritePC_def = Def 3439 ("BranchWritePC",Var("address",F32), 3440 MB(Call("CurrentInstrSet",ATy(qTy,PTy(CTy"InstrSet",qTy)),LU), 3441 Close 3442 (Var("v",CTy"InstrSet"), 3443 MB(MU(EQ(Var("v",CTy"InstrSet"),LC("InstrSet_ARM",CTy"InstrSet")), 3444 qTy), 3445 Close 3446 (bVar"b", 3447 ITE(bVar"b", 3448 MB(Call("ArchVersion",ATy(qTy,PTy(nTy,qTy)),LU), 3449 Close 3450 (nVar"v", 3451 MB(MB(MB(MU(Bop(Lt,nVar"v",LN 6),qTy), 3452 Close 3453 (bVar"b", 3454 MU(Bop(And,bVar"b", 3455 Mop(Not, 3456 EQ(EX(Var("address",F32), 3457 LN 1,LN 0,FTy 2), 3458 LW(0,2)))),qTy))), 3459 Close 3460 (bVar"b", 3461 ITE(bVar"b", 3462 Call 3463 ("raise'exception", 3464 ATy(qTy,PTy(uTy,qTy)), 3465 Call 3466 ("UNPREDICTABLE", 3467 CTy"exception", 3468 LS"BranchWritePC")),MU(LU,qTy)))), 3469 Close 3470 (AVar uTy, 3471 Call 3472 ("BranchTo",ATy(qTy,PTy(uTy,qTy)), 3473 CC[EX(Var("address",F32),LN 31,LN 2, 3474 FTy 30),LW(0,2)]))))), 3475 Call 3476 ("BranchTo",ATy(qTy,PTy(uTy,qTy)), 3477 CC[EX(Var("address",F32),LN 31,LN 1,FTy 31),LW(0,1)]))))))) 3478; 3479val BXWritePC_def = Def 3480 ("BXWritePC",Var("address",F32), 3481 MB(Call("CurrentInstrSet",ATy(qTy,PTy(CTy"InstrSet",qTy)),LU), 3482 Close 3483 (Var("v",CTy"InstrSet"), 3484 MB(MU(EQ(Var("v",CTy"InstrSet"), 3485 LC("InstrSet_ThumbEE",CTy"InstrSet")),qTy), 3486 Close 3487 (bVar"b", 3488 ITB([(bVar"b", 3489 ITE(Bop(Bit,Var("address",F32),LN 0), 3490 Call 3491 ("BranchTo",ATy(qTy,PTy(uTy,qTy)), 3492 CC[EX(Var("address",F32),LN 31,LN 1,FTy 31), 3493 LW(0,1)]), 3494 Call 3495 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 3496 Call 3497 ("UNPREDICTABLE",CTy"exception", 3498 LS"BXWritePC")))), 3499 (Bop(Bit,Var("address",F32),LN 0), 3500 MB(Call 3501 ("SelectInstrSet",ATy(qTy,PTy(uTy,qTy)), 3502 LC("InstrSet_Thumb",CTy"InstrSet")), 3503 Close 3504 (AVar uTy, 3505 Call 3506 ("BranchTo",ATy(qTy,PTy(uTy,qTy)), 3507 CC[EX(Var("address",F32),LN 31,LN 1,FTy 31), 3508 LW(0,1)])))), 3509 (Mop(Not,Bop(Bit,Var("address",F32),LN 1)), 3510 MB(Call 3511 ("SelectInstrSet",ATy(qTy,PTy(uTy,qTy)), 3512 LC("InstrSet_ARM",CTy"InstrSet")), 3513 Close 3514 (AVar uTy, 3515 Call 3516 ("BranchTo",ATy(qTy,PTy(uTy,qTy)), 3517 Var("address",F32)))))], 3518 Call 3519 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 3520 Call("UNPREDICTABLE",CTy"exception",LS"BXWritePC")))))))) 3521; 3522val LoadWritePC_def = Def 3523 ("LoadWritePC",Var("address",F32), 3524 MB(Call("ArchVersion",ATy(qTy,PTy(nTy,qTy)),LU), 3525 Close 3526 (nVar"v", 3527 MB(MU(Bop(Ge,nVar"v",LN 5),qTy), 3528 Close 3529 (bVar"b", 3530 ITE(bVar"b", 3531 Call 3532 ("BXWritePC",ATy(qTy,PTy(uTy,qTy)),Var("address",F32)), 3533 Call 3534 ("BranchWritePC",ATy(qTy,PTy(uTy,qTy)), 3535 Var("address",F32)))))))) 3536; 3537val ALUWritePC_def = Def 3538 ("ALUWritePC",Var("address",F32), 3539 MB(Call("ArchVersion",ATy(qTy,PTy(nTy,qTy)),LU), 3540 Close 3541 (nVar"v", 3542 MB(MB(MU(Bop(Ge,nVar"v",LN 7),qTy), 3543 Close 3544 (bVar"b", 3545 ITE(bVar"b", 3546 MB(Call 3547 ("CurrentInstrSet", 3548 ATy(qTy,PTy(CTy"InstrSet",qTy)),LU), 3549 Close 3550 (Var("v",CTy"InstrSet"), 3551 MU(EQ(Var("v",CTy"InstrSet"), 3552 LC("InstrSet_ARM",CTy"InstrSet")),qTy))), 3553 MU(LF,qTy)))), 3554 Close 3555 (bVar"b", 3556 ITE(bVar"b", 3557 Call 3558 ("BXWritePC",ATy(qTy,PTy(uTy,qTy)),Var("address",F32)), 3559 Call 3560 ("BranchWritePC",ATy(qTy,PTy(uTy,qTy)), 3561 Var("address",F32)))))))) 3562; 3563val ThisInstrLength_def = Def 3564 ("ThisInstrLength",AVar uTy, 3565 MB(MR(Close(qVar"s",Dest("Encoding",CTy"Encoding",qVar"s"))), 3566 Close 3567 (Var("v",CTy"Encoding"), 3568 MB(MU(EQ(Var("v",CTy"Encoding"), 3569 LC("Encoding_Thumb",CTy"Encoding")),qTy), 3570 Close(bVar"b",MU(ITE(bVar"b",LN 16,LN 32),qTy)))))) 3571; 3572val IncPC_def = Def 3573 ("IncPC",AVar uTy, 3574 MB(MR(Close(qVar"s",Dest("REG",ATy(CTy"RName",F32),qVar"s"))), 3575 Close 3576 (Var("v",ATy(CTy"RName",F32)), 3577 MB(MB(MU(Apply 3578 (Var("v",ATy(CTy"RName",F32)), 3579 LC("RName_PC",CTy"RName")),qTy), 3580 Close 3581 (Var("v",F32), 3582 MB(Call("ThisInstrLength",ATy(qTy,PTy(nTy,qTy)),LU), 3583 Close 3584 (nVar"v0", 3585 MB(MB(MU(EQ(nVar"v0",LN 16),qTy), 3586 Close 3587 (bVar"b", 3588 MU(ITE(bVar"b",LW(2,32),LW(4,32)),qTy))), 3589 Close 3590 (Var("v0",F32), 3591 MU(Bop(Add,Var("v",F32),Var("v0",F32)),qTy))))))), 3592 Close 3593 (Var("v",F32), 3594 Call("BranchTo",ATy(qTy,PTy(uTy,qTy)),Var("v",F32))))))) 3595; 3596val TranslateAddress_def = Def 3597 ("TranslateAddress", 3598 TP[Var("VA",F32),bVar"privileged",bVar"iswrite",nVar"size"], 3599 MB(ITE(bVar"iswrite", 3600 MU(SL[LC("ReadWritePermit",CTy"rights"), 3601 LC("XNeverReadWrite",CTy"rights")],qTy), 3602 MB(MR(Close(qVar"s",Dest("isfetch",bTy,qVar"s"))), 3603 Close 3604 (bVar"b", 3605 MU(ITE(bVar"b", 3606 SL[LC("ReadPermit",CTy"rights"), 3607 LC("ReadWritePermit",CTy"rights")], 3608 SL[LC("ReadPermit",CTy"rights"), 3609 LC("ReadWritePermit",CTy"rights"), 3610 LC("XNeverRead",CTy"rights"), 3611 LC("XNeverReadWrite",CTy"rights")]),qTy)))), 3612 Close 3613 (Var("rights",STy(CTy"rights")), 3614 MB(For(TP[LN 0,Bop(Sub,nVar"size",LN 1), 3615 Close 3616 (nVar"i", 3617 MB(MR(Close(qVar"s",Dest("data_abort",bTy,qVar"s"))), 3618 Close 3619 (bVar"v", 3620 MB(MB(MR(Close 3621 (qVar"s", 3622 Dest 3623 ("rights_map", 3624 ATy(F32,CTy"rights"),qVar"s"))), 3625 Close 3626 (Var("v0",ATy(F32,CTy"rights")), 3627 MB(MB(MB(MU(Apply 3628 (Var("v0", 3629 ATy(F32, 3630 CTy"rights")), 3631 Bop(Add,Var("VA",F32), 3632 Mop(Cast F32, 3633 nVar"i"))),qTy), 3634 Close 3635 (Var("v",CTy"rights"), 3636 MU(Bop(In, 3637 Var("v", 3638 CTy"rights"), 3639 Var("rights", 3640 STy(CTy"rights"))), 3641 qTy))), 3642 Close 3643 (bVar"v", 3644 MU(Mop(Not,bVar"v"),qTy))), 3645 Close 3646 (bVar"v0", 3647 MU(Bop(Or,bVar"v",bVar"v0"),qTy))))), 3648 Close 3649 (bVar"v", 3650 MW(Close 3651 (qVar"s", 3652 Rupd 3653 ("data_abort", 3654 TP[qVar"s",bVar"v"]))))))))]), 3655 Close 3656 (AVar uTy, 3657 MB(MR(Close 3658 (qVar"s", 3659 Dest("translate_address",ATy(F32,OTy F32),qVar"s"))), 3660 Close 3661 (Var("v",ATy(F32,OTy F32)), 3662 MB(MU(Apply(Var("v",ATy(F32,OTy F32)),Var("VA",F32)), 3663 qTy), 3664 Close 3665 (Var("x",OTy F32), 3666 CS(Var("x",OTy F32), 3667 [(Mop(Some,Var("PA",F32)), 3668 MU(Var("PA",F32),qTy)), 3669 (LO F32, 3670 MB(MW(Close 3671 (qVar"s", 3672 Rupd("data_abort",TP[qVar"s",LT]))), 3673 Close(AVar uTy,MU(LX F32,qTy))))])))))))))) 3674; 3675val mem1_def = Def 3676 ("mem1",Var("address",F32), 3677 MB(MR(Close(qVar"s",Dest("MEM",ATy(F32,F8),qVar"s"))), 3678 Close 3679 (Var("v",ATy(F32,F8)), 3680 MB(MU(Apply(Var("v",ATy(F32,F8)),Var("address",F32)),qTy), 3681 Close(Var("v",F8),MU(Mop(Cast vTy,Var("v",F8)),qTy)))))) 3682; 3683val mem_def = Def 3684 ("mem",TP[Var("address",F32),nVar"size"], 3685 MB(MR(Close(qVar"s",Dest("data_abort",bTy,qVar"s"))), 3686 Close 3687 (bVar"b", 3688 ITE(bVar"b",MU(LX vTy,qTy), 3689 CS(nVar"size", 3690 [(LN 1, 3691 MB(Call 3692 ("mem1",ATy(qTy,PTy(vTy,qTy)), 3693 Bop(Add,Var("address",F32),LW(0,32))), 3694 Close(vVar"v",MU(EX(vVar"v",LN 7,LN 0,vTy),qTy)))), 3695 (LN 2, 3696 MB(Call 3697 ("mem1",ATy(qTy,PTy(vTy,qTy)), 3698 Bop(Add,Var("address",F32),LW(1,32))), 3699 Close 3700 (vVar"v", 3701 MB(MB(Call 3702 ("mem1",ATy(qTy,PTy(vTy,qTy)), 3703 Bop(Add,Var("address",F32),LW(0,32))), 3704 Close(vVar"v0",MU(CC[vVar"v",vVar"v0"],qTy))), 3705 Close 3706 (vVar"v",MU(EX(vVar"v",LN 15,LN 0,vTy),qTy)))))), 3707 (LN 4, 3708 MB(Call 3709 ("mem1",ATy(qTy,PTy(vTy,qTy)), 3710 Bop(Add,Var("address",F32),LW(3,32))), 3711 Close 3712 (vVar"v", 3713 MB(MB(Call 3714 ("mem1",ATy(qTy,PTy(vTy,qTy)), 3715 Bop(Add,Var("address",F32),LW(2,32))), 3716 Close 3717 (vVar"v0", 3718 MB(MB(Call 3719 ("mem1",ATy(qTy,PTy(vTy,qTy)), 3720 Bop(Add,Var("address",F32), 3721 LW(1,32))), 3722 Close 3723 (vVar"v1", 3724 MB(MB(Call 3725 ("mem1", 3726 ATy(qTy,PTy(vTy,qTy)), 3727 Bop(Add, 3728 Var("address",F32), 3729 LW(0,32))), 3730 Close 3731 (vVar"v2", 3732 MU(CC[vVar"v1",vVar"v2"], 3733 qTy))), 3734 Close 3735 (vVar"v1", 3736 MU(CC[vVar"v0",vVar"v1"], 3737 qTy))))), 3738 Close 3739 (vVar"v0", 3740 MU(CC[vVar"v",vVar"v0"],qTy))))), 3741 Close 3742 (vVar"v",MU(EX(vVar"v",LN 31,LN 0,vTy),qTy)))))), 3743 (LN 8, 3744 MB(Call 3745 ("mem1",ATy(qTy,PTy(vTy,qTy)), 3746 Bop(Add,Var("address",F32),LW(7,32))), 3747 Close 3748 (vVar"v", 3749 MB(MB(Call 3750 ("mem1",ATy(qTy,PTy(vTy,qTy)), 3751 Bop(Add,Var("address",F32),LW(6,32))), 3752 Close 3753 (vVar"v0", 3754 MB(MB(Call 3755 ("mem1",ATy(qTy,PTy(vTy,qTy)), 3756 Bop(Add,Var("address",F32), 3757 LW(5,32))), 3758 Close 3759 (vVar"v1", 3760 MB(MB(Call 3761 ("mem1", 3762 ATy(qTy,PTy(vTy,qTy)), 3763 Bop(Add, 3764 Var("address",F32), 3765 LW(4,32))), 3766 Close 3767 (vVar"v2", 3768 MB(MB(Call 3769 ("mem1", 3770 ATy(qTy, 3771 PTy(vTy, 3772 qTy)), 3773 Bop(Add, 3774 Var("address", 3775 F32), 3776 LW(3,32))), 3777 Close 3778 (vVar"v3", 3779 MB(MB(Call 3780 ("mem1", 3781 ATy(qTy, 3782 PTy(vTy, 3783 qTy)), 3784 Bop(Add, 3785 Var("address", 3786 F32), 3787 LW(2, 3788 32))), 3789 Close 3790 (vVar"v4", 3791 MB(MB(Call 3792 ("mem1", 3793 ATy(qTy, 3794 PTy(vTy, 3795 qTy)), 3796 Bop(Add, 3797 Var("address", 3798 F32), 3799 LW(1, 3800 32))), 3801 Close 3802 (vVar"v5", 3803 MB(MB(Call 3804 ("mem1", 3805 ATy(qTy, 3806 PTy(vTy, 3807 qTy)), 3808 Bop(Add, 3809 Var("address", 3810 F32), 3811 LW(0, 3812 32))), 3813 Close 3814 (vVar"v6", 3815 MU(CC[vVar"v5", 3816 vVar"v6"], 3817 qTy))), 3818 Close 3819 (vVar"v5", 3820 MU(CC[vVar"v4", 3821 vVar"v5"], 3822 qTy))))), 3823 Close 3824 (vVar"v4", 3825 MU(CC[vVar"v3", 3826 vVar"v4"], 3827 qTy))))), 3828 Close 3829 (vVar"v3", 3830 MU(CC[vVar"v2", 3831 vVar"v3"], 3832 qTy))))), 3833 Close 3834 (vVar"v2", 3835 MU(CC[vVar"v1", 3836 vVar"v2"], 3837 qTy))))), 3838 Close 3839 (vVar"v1", 3840 MU(CC[vVar"v0",vVar"v1"], 3841 qTy))))), 3842 Close 3843 (vVar"v0", 3844 MU(CC[vVar"v",vVar"v0"],qTy))))), 3845 Close 3846 (vVar"v",MU(EX(vVar"v",LN 63,LN 0,vTy),qTy)))))), 3847 (AVar nTy, 3848 Call 3849 ("raise'exception",ATy(qTy,PTy(vTy,qTy)), 3850 Call 3851 ("ASSERT",CTy"exception", 3852 LS"mem: size in {1, 2, 4, 8}")))]))))) 3853; 3854val write'mem_def = Def 3855 ("write'mem",TP[vVar"value",Var("address",F32),nVar"size"], 3856 MB(MR(Close(qVar"s",Dest("data_abort",bTy,qVar"s"))), 3857 Close 3858 (bVar"v", 3859 MB(MU(Mop(Not,bVar"v"),qTy), 3860 Close 3861 (bVar"b", 3862 ITE(bVar"b", 3863 CS(nVar"size", 3864 [(LN 1, 3865 MB(MR(Close 3866 (qVar"s",Dest("MEM",ATy(F32,F8),qVar"s"))), 3867 Close 3868 (Var("v",ATy(F32,F8)), 3869 MB(MU(Fupd 3870 (Var("v",ATy(F32,F8)), 3871 Bop(Add,Var("address",F32),LW(0,32)), 3872 Mop(Cast F8, 3873 EX(vVar"value",LN 7,LN 0,vTy))), 3874 qTy), 3875 Close 3876 (Var("v",ATy(F32,F8)), 3877 MW(Close 3878 (qVar"s", 3879 Rupd 3880 ("MEM", 3881 TP[qVar"s", 3882 Var("v",ATy(F32,F8))])))))))), 3883 (LN 2, 3884 MB(MB(MR(Close 3885 (qVar"s", 3886 Dest("MEM",ATy(F32,F8),qVar"s"))), 3887 Close 3888 (Var("v",ATy(F32,F8)), 3889 MB(MU(Fupd 3890 (Var("v",ATy(F32,F8)), 3891 Bop(Add,Var("address",F32), 3892 LW(0,32)), 3893 Mop(Cast F8, 3894 EX(vVar"value",LN 7,LN 0,vTy))), 3895 qTy), 3896 Close 3897 (Var("v",ATy(F32,F8)), 3898 MW(Close 3899 (qVar"s", 3900 Rupd 3901 ("MEM", 3902 TP[qVar"s", 3903 Var("v",ATy(F32,F8))]))))))), 3904 Close 3905 (AVar uTy, 3906 MB(MR(Close 3907 (qVar"s", 3908 Dest("MEM",ATy(F32,F8),qVar"s"))), 3909 Close 3910 (Var("v",ATy(F32,F8)), 3911 MB(MU(Fupd 3912 (Var("v",ATy(F32,F8)), 3913 Bop(Add,Var("address",F32), 3914 LW(1,32)), 3915 Mop(Cast F8, 3916 EX(vVar"value",LN 15, 3917 LN 8,vTy))),qTy), 3918 Close 3919 (Var("v",ATy(F32,F8)), 3920 MW(Close 3921 (qVar"s", 3922 Rupd 3923 ("MEM", 3924 TP[qVar"s", 3925 Var("v",ATy(F32,F8))])))))))))), 3926 (LN 4, 3927 MB(MB(MR(Close 3928 (qVar"s", 3929 Dest("MEM",ATy(F32,F8),qVar"s"))), 3930 Close 3931 (Var("v",ATy(F32,F8)), 3932 MB(MU(Fupd 3933 (Var("v",ATy(F32,F8)), 3934 Bop(Add,Var("address",F32), 3935 LW(0,32)), 3936 Mop(Cast F8, 3937 EX(vVar"value",LN 7,LN 0,vTy))), 3938 qTy), 3939 Close 3940 (Var("v",ATy(F32,F8)), 3941 MW(Close 3942 (qVar"s", 3943 Rupd 3944 ("MEM", 3945 TP[qVar"s", 3946 Var("v",ATy(F32,F8))]))))))), 3947 Close 3948 (AVar uTy, 3949 MB(MB(MR(Close 3950 (qVar"s", 3951 Dest("MEM",ATy(F32,F8),qVar"s"))), 3952 Close 3953 (Var("v",ATy(F32,F8)), 3954 MB(MU(Fupd 3955 (Var("v",ATy(F32,F8)), 3956 Bop(Add, 3957 Var("address",F32), 3958 LW(1,32)), 3959 Mop(Cast F8, 3960 EX(vVar"value",LN 15, 3961 LN 8,vTy))),qTy), 3962 Close 3963 (Var("v",ATy(F32,F8)), 3964 MW(Close 3965 (qVar"s", 3966 Rupd 3967 ("MEM", 3968 TP[qVar"s", 3969 Var("v", 3970 ATy(F32,F8))]))))))), 3971 Close 3972 (AVar uTy, 3973 MB(MB(MR(Close 3974 (qVar"s", 3975 Dest 3976 ("MEM",ATy(F32,F8), 3977 qVar"s"))), 3978 Close 3979 (Var("v",ATy(F32,F8)), 3980 MB(MU(Fupd 3981 (Var("v",ATy(F32,F8)), 3982 Bop(Add, 3983 Var("address", 3984 F32), 3985 LW(2,32)), 3986 Mop(Cast F8, 3987 EX(vVar"value", 3988 LN 23,LN 16, 3989 vTy))),qTy), 3990 Close 3991 (Var("v",ATy(F32,F8)), 3992 MW(Close 3993 (qVar"s", 3994 Rupd 3995 ("MEM", 3996 TP[qVar"s", 3997 Var("v", 3998 ATy(F32, 3999 F8))]))))))), 4000 Close 4001 (AVar uTy, 4002 MB(MR(Close 4003 (qVar"s", 4004 Dest 4005 ("MEM",ATy(F32,F8), 4006 qVar"s"))), 4007 Close 4008 (Var("v",ATy(F32,F8)), 4009 MB(MU(Fupd 4010 (Var("v", 4011 ATy(F32,F8)), 4012 Bop(Add, 4013 Var("address", 4014 F32), 4015 LW(3,32)), 4016 Mop(Cast F8, 4017 EX(vVar"value", 4018 LN 31, 4019 LN 24,vTy))), 4020 qTy), 4021 Close 4022 (Var("v",ATy(F32,F8)), 4023 MW(Close 4024 (qVar"s", 4025 Rupd 4026 ("MEM", 4027 TP[qVar"s", 4028 Var("v", 4029 ATy(F32, 4030 F8))])))))))))))))), 4031 (LN 8, 4032 MB(MB(MR(Close 4033 (qVar"s", 4034 Dest("MEM",ATy(F32,F8),qVar"s"))), 4035 Close 4036 (Var("v",ATy(F32,F8)), 4037 MB(MU(Fupd 4038 (Var("v",ATy(F32,F8)), 4039 Bop(Add,Var("address",F32), 4040 LW(0,32)), 4041 Mop(Cast F8, 4042 EX(vVar"value",LN 7,LN 0,vTy))), 4043 qTy), 4044 Close 4045 (Var("v",ATy(F32,F8)), 4046 MW(Close 4047 (qVar"s", 4048 Rupd 4049 ("MEM", 4050 TP[qVar"s", 4051 Var("v",ATy(F32,F8))]))))))), 4052 Close 4053 (AVar uTy, 4054 MB(MB(MR(Close 4055 (qVar"s", 4056 Dest("MEM",ATy(F32,F8),qVar"s"))), 4057 Close 4058 (Var("v",ATy(F32,F8)), 4059 MB(MU(Fupd 4060 (Var("v",ATy(F32,F8)), 4061 Bop(Add, 4062 Var("address",F32), 4063 LW(1,32)), 4064 Mop(Cast F8, 4065 EX(vVar"value",LN 15, 4066 LN 8,vTy))),qTy), 4067 Close 4068 (Var("v",ATy(F32,F8)), 4069 MW(Close 4070 (qVar"s", 4071 Rupd 4072 ("MEM", 4073 TP[qVar"s", 4074 Var("v", 4075 ATy(F32,F8))]))))))), 4076 Close 4077 (AVar uTy, 4078 MB(MB(MR(Close 4079 (qVar"s", 4080 Dest 4081 ("MEM",ATy(F32,F8), 4082 qVar"s"))), 4083 Close 4084 (Var("v",ATy(F32,F8)), 4085 MB(MU(Fupd 4086 (Var("v",ATy(F32,F8)), 4087 Bop(Add, 4088 Var("address", 4089 F32), 4090 LW(2,32)), 4091 Mop(Cast F8, 4092 EX(vVar"value", 4093 LN 23,LN 16, 4094 vTy))),qTy), 4095 Close 4096 (Var("v",ATy(F32,F8)), 4097 MW(Close 4098 (qVar"s", 4099 Rupd 4100 ("MEM", 4101 TP[qVar"s", 4102 Var("v", 4103 ATy(F32, 4104 F8))]))))))), 4105 Close 4106 (AVar uTy, 4107 MB(MB(MR(Close 4108 (qVar"s", 4109 Dest 4110 ("MEM", 4111 ATy(F32,F8), 4112 qVar"s"))), 4113 Close 4114 (Var("v",ATy(F32,F8)), 4115 MB(MU(Fupd 4116 (Var("v", 4117 ATy(F32,F8)), 4118 Bop(Add, 4119 Var("address", 4120 F32), 4121 LW(3,32)), 4122 Mop(Cast F8, 4123 EX(vVar"value", 4124 LN 31, 4125 LN 24, 4126 vTy))), 4127 qTy), 4128 Close 4129 (Var("v", 4130 ATy(F32,F8)), 4131 MW(Close 4132 (qVar"s", 4133 Rupd 4134 ("MEM", 4135 TP[qVar"s", 4136 Var("v", 4137 ATy(F32, 4138 F8))]))))))), 4139 Close 4140 (AVar uTy, 4141 MB(MB(MR(Close 4142 (qVar"s", 4143 Dest 4144 ("MEM", 4145 ATy(F32,F8), 4146 qVar"s"))), 4147 Close 4148 (Var("v", 4149 ATy(F32,F8)), 4150 MB(MU(Fupd 4151 (Var("v", 4152 ATy(F32, 4153 F8)), 4154 Bop(Add, 4155 Var("address", 4156 F32), 4157 LW(4, 4158 32)), 4159 Mop(Cast 4160 F8, 4161 EX(vVar"value", 4162 LN 4163 39, 4164 LN 4165 32, 4166 vTy))), 4167 qTy), 4168 Close 4169 (Var("v", 4170 ATy(F32, 4171 F8)), 4172 MW(Close 4173 (qVar"s", 4174 Rupd 4175 ("MEM", 4176 TP[qVar"s", 4177 Var("v", 4178 ATy(F32, 4179 F8))]))))))), 4180 Close 4181 (AVar uTy, 4182 MB(MB(MR(Close 4183 (qVar"s", 4184 Dest 4185 ("MEM", 4186 ATy(F32, 4187 F8), 4188 qVar"s"))), 4189 Close 4190 (Var("v", 4191 ATy(F32, 4192 F8)), 4193 MB(MU(Fupd 4194 (Var("v", 4195 ATy(F32, 4196 F8)), 4197 Bop(Add, 4198 Var("address", 4199 F32), 4200 LW(5, 4201 32)), 4202 Mop(Cast 4203 F8, 4204 EX(vVar"value", 4205 LN 4206 47, 4207 LN 4208 40, 4209 vTy))), 4210 qTy), 4211 Close 4212 (Var("v", 4213 ATy(F32, 4214 F8)), 4215 MW(Close 4216 (qVar"s", 4217 Rupd 4218 ("MEM", 4219 TP[qVar"s", 4220 Var("v", 4221 ATy(F32, 4222 F8))]))))))), 4223 Close 4224 (AVar uTy, 4225 MB(MB(MR(Close 4226 (qVar"s", 4227 Dest 4228 ("MEM", 4229 ATy(F32, 4230 F8), 4231 qVar"s"))), 4232 Close 4233 (Var("v", 4234 ATy(F32, 4235 F8)), 4236 MB(MU(Fupd 4237 (Var("v", 4238 ATy(F32, 4239 F8)), 4240 Bop(Add, 4241 Var("address", 4242 F32), 4243 LW(6, 4244 32)), 4245 Mop(Cast 4246 F8, 4247 EX(vVar"value", 4248 LN 4249 55, 4250 LN 4251 48, 4252 vTy))), 4253 qTy), 4254 Close 4255 (Var("v", 4256 ATy(F32, 4257 F8)), 4258 MW(Close 4259 (qVar"s", 4260 Rupd 4261 ("MEM", 4262 TP[qVar"s", 4263 Var("v", 4264 ATy(F32, 4265 F8))]))))))), 4266 Close 4267 (AVar uTy, 4268 MB(MR(Close 4269 (qVar"s", 4270 Dest 4271 ("MEM", 4272 ATy(F32, 4273 F8), 4274 qVar"s"))), 4275 Close 4276 (Var("v", 4277 ATy(F32, 4278 F8)), 4279 MB(MU(Fupd 4280 (Var("v", 4281 ATy(F32, 4282 F8)), 4283 Bop(Add, 4284 Var("address", 4285 F32), 4286 LW(7, 4287 32)), 4288 Mop(Cast 4289 F8, 4290 EX(vVar"value", 4291 LN 4292 63, 4293 LN 4294 56, 4295 vTy))), 4296 qTy), 4297 Close 4298 (Var("v", 4299 ATy(F32, 4300 F8)), 4301 MW(Close 4302 (qVar"s", 4303 Rupd 4304 ("MEM", 4305 TP[qVar"s", 4306 Var("v", 4307 ATy(F32, 4308 F8))])))))))))))))))))))))), 4309 (AVar nTy, 4310 Call 4311 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 4312 Call 4313 ("ASSERT",CTy"exception", 4314 LS"mem: size in {1, 2, 4, 8}")))]), 4315 MU(LU,qTy))))))) 4316; 4317val BigEndianReverse_def = Def 4318 ("BigEndianReverse",TP[vVar"value",nVar"n"], 4319 CS(nVar"n", 4320 [(LN 1,MU(EX(vVar"value",LN 7,LN 0,vTy),qTy)), 4321 (LN 2, 4322 MU(CC[EX(vVar"value",LN 7,LN 0,vTy),EX(vVar"value",LN 15,LN 8,vTy)], 4323 qTy)), 4324 (LN 4, 4325 MU(CC[EX(vVar"value",LN 7,LN 0,vTy), 4326 EX(vVar"value",LN 15,LN 8,vTy), 4327 EX(vVar"value",LN 23,LN 16,vTy), 4328 EX(vVar"value",LN 31,LN 24,vTy)],qTy)), 4329 (LN 8, 4330 MU(CC[EX(vVar"value",LN 7,LN 0,vTy), 4331 EX(vVar"value",LN 15,LN 8,vTy), 4332 EX(vVar"value",LN 23,LN 16,vTy), 4333 EX(vVar"value",LN 31,LN 24,vTy), 4334 EX(vVar"value",LN 39,LN 32,vTy), 4335 EX(vVar"value",LN 47,LN 40,vTy), 4336 EX(vVar"value",LN 55,LN 48,vTy), 4337 EX(vVar"value",LN 63,LN 56,vTy)],qTy)), 4338 (AVar nTy, 4339 Call 4340 ("raise'exception",ATy(qTy,PTy(vTy,qTy)), 4341 Call 4342 ("ASSERT",CTy"exception", 4343 LS"BigEndianReverse: n in {1, 2, 4, 8}")))])) 4344; 4345val Align_def = Def 4346 ("Align",TP[Var("w",BTy"N"),nVar"n"], 4347 Mop(Cast(BTy"N"), 4348 Bop(Mul,nVar"n",Bop(Div,Mop(Cast nTy,Var("w",BTy"N")),nVar"n")))) 4349; 4350val Aligned_def = Def 4351 ("Aligned",TP[Var("w",BTy"N"),nVar"n"], 4352 EQ(Var("w",BTy"N"),Call("Align",BTy"N",TP[Var("w",BTy"N"),nVar"n"]))) 4353; 4354val AlignmentFault_def = Def 4355 ("AlignmentFault",Var("address",F32), 4356 MW(Close(qVar"s",Rupd("data_abort",TP[qVar"s",LT])))) 4357; 4358val MemA_with_priv_def = Def 4359 ("MemA_with_priv",TP[Var("address",F32),nVar"size",bVar"privileged"], 4360 MN(LX F32, 4361 MB(ITE(Call("Aligned",bTy,TP[Var("address",F32),nVar"size"]), 4362 MW(Close 4363 (Var("s",PTy(F32,qTy)), 4364 TP[Var("address",F32),Mop(Snd,Var("s",PTy(F32,qTy)))])), 4365 MB(MR(Close 4366 (Var("s",PTy(F32,qTy)), 4367 Dest 4368 ("CP15",CTy"CP15",Mop(Snd,Var("s",PTy(F32,qTy)))))), 4369 Close 4370 (Var("v",CTy"CP15"), 4371 MB(MB(MB(MU(Dest("SCTLR",CTy"SCTLR",Var("v",CTy"CP15")), 4372 PTy(F32,qTy)), 4373 Close 4374 (Var("v",CTy"SCTLR"), 4375 MU(Dest("A",bTy,Var("v",CTy"SCTLR")), 4376 PTy(F32,qTy)))), 4377 Close 4378 (bVar"b", 4379 ITE(bVar"b",MU(LT,PTy(F32,qTy)), 4380 MB(MR(Close 4381 (Var("s",PTy(F32,qTy)), 4382 Dest 4383 ("CP15",CTy"CP15", 4384 Mop(Snd,Var("s",PTy(F32,qTy)))))), 4385 Close 4386 (Var("v",CTy"CP15"), 4387 MB(MU(Dest 4388 ("SCTLR",CTy"SCTLR", 4389 Var("v",CTy"CP15")), 4390 PTy(F32,qTy)), 4391 Close 4392 (Var("v",CTy"SCTLR"), 4393 MU(Dest 4394 ("U",bTy, 4395 Var("v",CTy"SCTLR")), 4396 PTy(F32,qTy))))))))), 4397 Close 4398 (bVar"b", 4399 ITE(bVar"b", 4400 MD(Call 4401 ("AlignmentFault",ATy(qTy,PTy(uTy,qTy)), 4402 Var("address",F32)),F32), 4403 MW(Close 4404 (Var("s",PTy(F32,qTy)), 4405 TP[Call 4406 ("Align",F32, 4407 TP[Var("address",F32),nVar"size"]), 4408 Mop(Snd,Var("s",PTy(F32,qTy)))])))))))), 4409 Close 4410 (AVar uTy, 4411 MB(MR(Close 4412 (Var("s",PTy(F32,qTy)),Mop(Fst,Var("s",PTy(F32,qTy))))), 4413 Close 4414 (Var("v",F32), 4415 MB(MB(MU(TP[Var("v",F32),bVar"privileged",LF,nVar"size"], 4416 PTy(F32,qTy)), 4417 Close 4418 (Var("v",PTy(F32,PTy(bTy,PTy(bTy,nTy)))), 4419 MD(Call 4420 ("TranslateAddress",ATy(qTy,PTy(F32,qTy)), 4421 Var("v",PTy(F32,PTy(bTy,PTy(bTy,nTy))))), 4422 F32))), 4423 Close 4424 (Var("memaddrdesc",F32), 4425 MB(MD(Call 4426 ("mem",ATy(qTy,PTy(vTy,qTy)), 4427 TP[Var("memaddrdesc",F32),nVar"size"]), 4428 F32), 4429 Close 4430 (vVar"v", 4431 MN(vVar"v", 4432 MB(MR(Close 4433 (Var("s",PTy(vTy,PTy(F32,qTy))), 4434 Dest 4435 ("isfetch",bTy, 4436 Mop(Snd, 4437 Mop(Snd, 4438 Var("s", 4439 PTy(vTy, 4440 PTy(F32,qTy)))))))), 4441 Close 4442 (bVar"v", 4443 MB(ITE(bVar"v", 4444 MB(MR(Close 4445 (Var("s", 4446 PTy(vTy, 4447 PTy(F32,qTy))), 4448 Dest 4449 ("CP15", 4450 CTy"CP15", 4451 Mop(Snd, 4452 Mop(Snd, 4453 Var("s", 4454 PTy(vTy, 4455 PTy(F32, 4456 qTy)))))))), 4457 Close 4458 (Var("v",CTy"CP15"), 4459 MB(MU(Dest 4460 ("SCTLR", 4461 CTy"SCTLR", 4462 Var("v", 4463 CTy"CP15")), 4464 PTy(vTy, 4465 PTy(F32,qTy))), 4466 Close 4467 (Var("v", 4468 CTy"SCTLR"), 4469 MU(Dest 4470 ("IE",bTy, 4471 Var("v", 4472 CTy"SCTLR")), 4473 PTy(vTy, 4474 PTy(F32, 4475 qTy))))))), 4476 MB(MR(Close 4477 (Var("s", 4478 PTy(vTy, 4479 PTy(F32,qTy))), 4480 Dest 4481 ("CPSR",CTy"PSR", 4482 Mop(Snd, 4483 Mop(Snd, 4484 Var("s", 4485 PTy(vTy, 4486 PTy(F32, 4487 qTy)))))))), 4488 Close 4489 (Var("v",CTy"PSR"), 4490 MU(Dest 4491 ("E",bTy, 4492 Var("v",CTy"PSR")), 4493 PTy(vTy, 4494 PTy(F32,qTy)))))), 4495 Close 4496 (bVar"bigend", 4497 MB(ITE(bVar"bigend", 4498 MB(MR(Close 4499 (Var("s", 4500 PTy(vTy, 4501 PTy(F32, 4502 qTy))), 4503 Mop(Fst, 4504 Var("s", 4505 PTy(vTy, 4506 PTy(F32, 4507 qTy)))))), 4508 Close 4509 (vVar"v", 4510 MB(MB(MU(TP[vVar"v", 4511 nVar"size"], 4512 PTy(vTy, 4513 PTy(F32, 4514 qTy))), 4515 Close 4516 (Var("v", 4517 PTy(vTy, 4518 nTy)), 4519 MD(MD(Call 4520 ("BigEndianReverse", 4521 ATy(qTy, 4522 PTy(vTy, 4523 qTy)), 4524 Var("v", 4525 PTy(vTy, 4526 nTy))), 4527 F32), 4528 vTy))), 4529 Close 4530 (vVar"v", 4531 MW(Close 4532 (Var("s", 4533 PTy(vTy, 4534 PTy(F32, 4535 qTy))), 4536 TP[vVar"v", 4537 Mop(Snd, 4538 Var("s", 4539 PTy(vTy, 4540 PTy(F32, 4541 qTy))))])))))), 4542 MU(LU, 4543 PTy(vTy, 4544 PTy(F32,qTy)))), 4545 Close 4546 (AVar uTy, 4547 MB(MR(Close 4548 (Var("s", 4549 PTy(vTy, 4550 PTy(F32, 4551 qTy))), 4552 Mop(Fst, 4553 Var("s", 4554 PTy(vTy, 4555 PTy(F32, 4556 qTy)))))), 4557 Close 4558 (vVar"v", 4559 MU(Mop(Cast 4560 (BTy"N"), 4561 vVar"v"), 4562 PTy(vTy, 4563 PTy(F32, 4564 qTy)))))))))))))))))))))) 4565; 4566val write'MemA_with_priv_def = Def 4567 ("write'MemA_with_priv", 4568 TP[Var("value",BTy"N"),Var("address",F32),nVar"size",bVar"privileged"], 4569 MN(LX F32, 4570 MB(ITE(Call("Aligned",bTy,TP[Var("address",F32),nVar"size"]), 4571 MW(Close 4572 (Var("s",PTy(F32,qTy)), 4573 TP[Var("address",F32),Mop(Snd,Var("s",PTy(F32,qTy)))])), 4574 MB(MR(Close 4575 (Var("s",PTy(F32,qTy)), 4576 Dest 4577 ("CP15",CTy"CP15",Mop(Snd,Var("s",PTy(F32,qTy)))))), 4578 Close 4579 (Var("v",CTy"CP15"), 4580 MB(MB(MB(MU(Dest("SCTLR",CTy"SCTLR",Var("v",CTy"CP15")), 4581 PTy(F32,qTy)), 4582 Close 4583 (Var("v",CTy"SCTLR"), 4584 MU(Dest("A",bTy,Var("v",CTy"SCTLR")), 4585 PTy(F32,qTy)))), 4586 Close 4587 (bVar"b", 4588 ITE(bVar"b",MU(LT,PTy(F32,qTy)), 4589 MB(MR(Close 4590 (Var("s",PTy(F32,qTy)), 4591 Dest 4592 ("CP15",CTy"CP15", 4593 Mop(Snd,Var("s",PTy(F32,qTy)))))), 4594 Close 4595 (Var("v",CTy"CP15"), 4596 MB(MU(Dest 4597 ("SCTLR",CTy"SCTLR", 4598 Var("v",CTy"CP15")), 4599 PTy(F32,qTy)), 4600 Close 4601 (Var("v",CTy"SCTLR"), 4602 MU(Dest 4603 ("U",bTy, 4604 Var("v",CTy"SCTLR")), 4605 PTy(F32,qTy))))))))), 4606 Close 4607 (bVar"b", 4608 ITE(bVar"b", 4609 MD(Call 4610 ("AlignmentFault",ATy(qTy,PTy(uTy,qTy)), 4611 Var("address",F32)),F32), 4612 MW(Close 4613 (Var("s",PTy(F32,qTy)), 4614 TP[Call 4615 ("Align",F32, 4616 TP[Var("address",F32),nVar"size"]), 4617 Mop(Snd,Var("s",PTy(F32,qTy)))])))))))), 4618 Close 4619 (AVar uTy, 4620 MB(MR(Close 4621 (Var("s",PTy(F32,qTy)),Mop(Fst,Var("s",PTy(F32,qTy))))), 4622 Close 4623 (Var("v",F32), 4624 MB(MB(MU(TP[Var("v",F32),bVar"privileged",LT,nVar"size"], 4625 PTy(F32,qTy)), 4626 Close 4627 (Var("v",PTy(F32,PTy(bTy,PTy(bTy,nTy)))), 4628 MD(Call 4629 ("TranslateAddress",ATy(qTy,PTy(F32,qTy)), 4630 Var("v",PTy(F32,PTy(bTy,PTy(bTy,nTy))))), 4631 F32))), 4632 Close 4633 (Var("memaddrdesc",F32), 4634 MB(MR(Close 4635 (Var("s",PTy(F32,qTy)), 4636 Dest 4637 ("isfetch",bTy, 4638 Mop(Snd,Var("s",PTy(F32,qTy)))))), 4639 Close 4640 (bVar"v", 4641 MB(ITE(bVar"v", 4642 MB(MR(Close 4643 (Var("s",PTy(F32,qTy)), 4644 Dest 4645 ("CP15",CTy"CP15", 4646 Mop(Snd, 4647 Var("s",PTy(F32,qTy)))))), 4648 Close 4649 (Var("v",CTy"CP15"), 4650 MB(MU(Dest 4651 ("SCTLR",CTy"SCTLR", 4652 Var("v",CTy"CP15")), 4653 PTy(F32,qTy)), 4654 Close 4655 (Var("v",CTy"SCTLR"), 4656 MU(Dest 4657 ("IE",bTy, 4658 Var("v",CTy"SCTLR")), 4659 PTy(F32,qTy)))))), 4660 MB(MR(Close 4661 (Var("s",PTy(F32,qTy)), 4662 Dest 4663 ("CPSR",CTy"PSR", 4664 Mop(Snd, 4665 Var("s",PTy(F32,qTy)))))), 4666 Close 4667 (Var("v",CTy"PSR"), 4668 MU(Dest 4669 ("E",bTy,Var("v",CTy"PSR")), 4670 PTy(F32,qTy))))), 4671 Close 4672 (bVar"bigend", 4673 MB(ITE(bVar"bigend", 4674 MD(Call 4675 ("BigEndianReverse", 4676 ATy(qTy,PTy(vTy,qTy)), 4677 TP[Mop(Cast vTy, 4678 Var("value",BTy"N")), 4679 nVar"size"]),F32), 4680 MU(Mop(Cast vTy, 4681 Var("value",BTy"N")), 4682 PTy(F32,qTy))), 4683 Close 4684 (vVar"value", 4685 MD(Call 4686 ("write'mem", 4687 ATy(qTy,PTy(uTy,qTy)), 4688 TP[vVar"value", 4689 Var("memaddrdesc",F32), 4690 nVar"size"]),F32))))))))))))))) 4691; 4692val MemA_unpriv_def = Def 4693 ("MemA_unpriv",TP[Var("address",F32),nVar"size"], 4694 Call 4695 ("MemA_with_priv",ATy(qTy,PTy(BTy"N",qTy)), 4696 TP[Var("address",F32),nVar"size",LF])) 4697; 4698val write'MemA_unpriv_def = Def 4699 ("write'MemA_unpriv", 4700 TP[Var("value",BTy"N"),Var("address",F32),nVar"size"], 4701 Call 4702 ("write'MemA_with_priv",ATy(qTy,PTy(uTy,qTy)), 4703 TP[Var("value",BTy"N"),Var("address",F32),nVar"size",LF])) 4704; 4705val MemA_def = Def 4706 ("MemA",TP[Var("address",F32),nVar"size"], 4707 MB(Call("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)),LU), 4708 Close 4709 (bVar"v", 4710 MB(MB(MU(TP[nVar"size",bVar"v"],qTy), 4711 Close 4712 (Var("v",PTy(nTy,bTy)), 4713 MU(TP[Var("address",F32),Var("v",PTy(nTy,bTy))],qTy))), 4714 Close 4715 (Var("v",PTy(F32,PTy(nTy,bTy))), 4716 Call 4717 ("MemA_with_priv",ATy(qTy,PTy(BTy"N",qTy)), 4718 Var("v",PTy(F32,PTy(nTy,bTy))))))))) 4719; 4720val write'MemA_def = Def 4721 ("write'MemA",TP[Var("value",BTy"N"),Var("address",F32),nVar"size"], 4722 MB(Call("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)),LU), 4723 Close 4724 (bVar"v", 4725 MB(MB(MU(TP[nVar"size",bVar"v"],qTy), 4726 Close 4727 (Var("v",PTy(nTy,bTy)), 4728 MU(TP[Var("address",F32),Var("v",PTy(nTy,bTy))],qTy))), 4729 Close 4730 (Var("x",PTy(F32,PTy(nTy,bTy))), 4731 Call 4732 ("write'MemA_with_priv",ATy(qTy,PTy(uTy,qTy)), 4733 TP[Var("value",BTy"N"),Var("x",PTy(F32,PTy(nTy,bTy)))])))))) 4734; 4735val MemU_with_priv_def = Def 4736 ("MemU_with_priv",TP[Var("address",F32),nVar"size",bVar"privileged"], 4737 MN(Bop(Rep,LV"0",LN 64), 4738 MB(MR(Close 4739 (Var("s",PTy(vTy,qTy)), 4740 Dest("CP15",CTy"CP15",Mop(Snd,Var("s",PTy(vTy,qTy)))))), 4741 Close 4742 (Var("v",CTy"CP15"), 4743 MB(MB(MB(MB(MB(MU(Dest("SCTLR",CTy"SCTLR",Var("v",CTy"CP15")), 4744 PTy(vTy,qTy)), 4745 Close 4746 (Var("v",CTy"SCTLR"), 4747 MU(Dest("A",bTy,Var("v",CTy"SCTLR")), 4748 PTy(vTy,qTy)))), 4749 Close(bVar"v",MU(Mop(Not,bVar"v"),PTy(vTy,qTy)))), 4750 Close 4751 (bVar"b", 4752 ITE(bVar"b", 4753 MB(MR(Close 4754 (Var("s",PTy(vTy,qTy)), 4755 Dest 4756 ("CP15",CTy"CP15", 4757 Mop(Snd,Var("s",PTy(vTy,qTy)))))), 4758 Close 4759 (Var("v",CTy"CP15"), 4760 MB(MB(MU(Dest 4761 ("SCTLR",CTy"SCTLR", 4762 Var("v",CTy"CP15")), 4763 PTy(vTy,qTy)), 4764 Close 4765 (Var("v",CTy"SCTLR"), 4766 MU(Dest 4767 ("U",bTy, 4768 Var("v",CTy"SCTLR")), 4769 PTy(vTy,qTy)))), 4770 Close 4771 (bVar"v", 4772 MU(Mop(Not,bVar"v"),PTy(vTy,qTy)))))), 4773 MU(LF,PTy(vTy,qTy))))), 4774 Close 4775 (bVar"b", 4776 MU(ITE(bVar"b", 4777 Call 4778 ("Align",F32, 4779 TP[Var("address",F32),nVar"size"]), 4780 Var("address",F32)),PTy(vTy,qTy)))), 4781 Close 4782 (Var("VA",F32), 4783 MB(ITE(Call("Aligned",bTy,TP[Var("VA",F32),nVar"size"]), 4784 MB(MD(Call 4785 ("MemA_with_priv", 4786 ATy(qTy,PTy(BTy"N",qTy)), 4787 TP[Var("VA",F32),nVar"size", 4788 bVar"privileged"]),vTy), 4789 Close 4790 (Var("v",BTy"N"), 4791 MB(MU(Mop(Cast vTy,Var("v",BTy"N")), 4792 PTy(vTy,qTy)), 4793 Close 4794 (vVar"v", 4795 MW(Close 4796 (Var("s",PTy(vTy,qTy)), 4797 TP[vVar"v", 4798 Mop(Snd, 4799 Var("s",PTy(vTy,qTy)))])))))), 4800 MB(MR(Close 4801 (Var("s",PTy(vTy,qTy)), 4802 Dest 4803 ("CP15",CTy"CP15", 4804 Mop(Snd,Var("s",PTy(vTy,qTy)))))), 4805 Close 4806 (Var("v",CTy"CP15"), 4807 MB(MB(MU(Dest 4808 ("SCTLR",CTy"SCTLR", 4809 Var("v",CTy"CP15")), 4810 PTy(vTy,qTy)), 4811 Close 4812 (Var("v",CTy"SCTLR"), 4813 MU(Dest 4814 ("A",bTy,Var("v",CTy"SCTLR")), 4815 PTy(vTy,qTy)))), 4816 Close 4817 (bVar"b", 4818 ITE(bVar"b", 4819 MB(MW(Close 4820 (Var("s",PTy(vTy,qTy)), 4821 TP[LX vTy, 4822 Mop(Snd, 4823 Var("s", 4824 PTy(vTy,qTy)))])), 4825 Close 4826 (AVar uTy, 4827 MD(Call 4828 ("AlignmentFault", 4829 ATy(qTy,PTy(uTy,qTy)), 4830 Var("address",F32)), 4831 vTy))), 4832 MB(For(TP[LN 0, 4833 Bop(Sub,nVar"size",LN 1), 4834 Close 4835 (nVar"i", 4836 MB(MR(Close 4837 (Var("s", 4838 PTy(vTy, 4839 qTy)), 4840 Mop(Fst, 4841 Var("s", 4842 PTy(vTy, 4843 qTy))))), 4844 Close 4845 (vVar"v", 4846 MB(MB(MD(Call 4847 ("MemA_with_priv", 4848 ATy(qTy, 4849 PTy(F8, 4850 qTy)), 4851 TP[Bop(Add, 4852 Var("VA", 4853 F32), 4854 Mop(Cast 4855 F32, 4856 nVar"i")), 4857 LN 4858 1, 4859 bVar"privileged"]), 4860 vTy), 4861 Close 4862 (Var("v0", 4863 F8), 4864 MB(MU(Mop(Cast 4865 vTy, 4866 Var("v0", 4867 F8)), 4868 PTy(vTy, 4869 qTy)), 4870 Close 4871 (vVar"v0", 4872 MU(BFI(Bop(Add, 4873 Bop(Mul, 4874 LN 4875 8, 4876 nVar"i"), 4877 LN 4878 7), 4879 Bop(Mul, 4880 LN 4881 8, 4882 nVar"i"), 4883 vVar"v0", 4884 vVar"v"), 4885 PTy(vTy, 4886 qTy)))))), 4887 Close 4888 (vVar"v", 4889 MW(Close 4890 (Var("s", 4891 PTy(vTy, 4892 qTy)), 4893 TP[vVar"v", 4894 Mop(Snd, 4895 Var("s", 4896 PTy(vTy, 4897 qTy)))])))))))]), 4898 Close 4899 (AVar uTy, 4900 MB(MR(Close 4901 (Var("s", 4902 PTy(vTy,qTy)), 4903 Dest 4904 ("CPSR", 4905 CTy"PSR", 4906 Mop(Snd, 4907 Var("s", 4908 PTy(vTy, 4909 qTy)))))), 4910 Close 4911 (Var("v",CTy"PSR"), 4912 MB(MU(Dest 4913 ("E",bTy, 4914 Var("v", 4915 CTy"PSR")), 4916 PTy(vTy,qTy)), 4917 Close 4918 (bVar"b", 4919 ITE(bVar"b", 4920 MB(MR(Close 4921 (Var("s", 4922 PTy(vTy, 4923 qTy)), 4924 Mop(Fst, 4925 Var("s", 4926 PTy(vTy, 4927 qTy))))), 4928 Close 4929 (vVar"v", 4930 MB(MB(MU(TP[vVar"v", 4931 nVar"size"], 4932 PTy(vTy, 4933 qTy)), 4934 Close 4935 (Var("v", 4936 PTy(vTy, 4937 nTy)), 4938 MD(Call 4939 ("BigEndianReverse", 4940 ATy(qTy, 4941 PTy(vTy, 4942 qTy)), 4943 Var("v", 4944 PTy(vTy, 4945 nTy))), 4946 vTy))), 4947 Close 4948 (vVar"v", 4949 MW(Close 4950 (Var("s", 4951 PTy(vTy, 4952 qTy)), 4953 TP[vVar"v", 4954 Mop(Snd, 4955 Var("s", 4956 PTy(vTy, 4957 qTy)))])))))), 4958 MU(LU, 4959 PTy(vTy, 4960 qTy))))))))))))))), 4961 Close 4962 (AVar uTy, 4963 MB(MR(Close 4964 (Var("s",PTy(vTy,qTy)), 4965 Mop(Fst,Var("s",PTy(vTy,qTy))))), 4966 Close 4967 (vVar"v", 4968 MU(Mop(Cast(BTy"N"),vVar"v"),PTy(vTy,qTy)))))))))))) 4969; 4970val write'MemU_with_priv_def = Def 4971 ("write'MemU_with_priv", 4972 TP[Var("value",BTy"N"),Var("address",F32),nVar"size",bVar"privileged"], 4973 MB(MR(Close(qVar"s",Dest("CP15",CTy"CP15",qVar"s"))), 4974 Close 4975 (Var("v",CTy"CP15"), 4976 MB(MB(MB(MB(MB(MU(Dest("SCTLR",CTy"SCTLR",Var("v",CTy"CP15")),qTy), 4977 Close 4978 (Var("v",CTy"SCTLR"), 4979 MU(Dest("A",bTy,Var("v",CTy"SCTLR")),qTy))), 4980 Close(bVar"v",MU(Mop(Not,bVar"v"),qTy))), 4981 Close 4982 (bVar"b", 4983 ITE(bVar"b", 4984 MB(MR(Close 4985 (qVar"s",Dest("CP15",CTy"CP15",qVar"s"))), 4986 Close 4987 (Var("v",CTy"CP15"), 4988 MB(MB(MU(Dest 4989 ("SCTLR",CTy"SCTLR", 4990 Var("v",CTy"CP15")),qTy), 4991 Close 4992 (Var("v",CTy"SCTLR"), 4993 MU(Dest 4994 ("U",bTy,Var("v",CTy"SCTLR")), 4995 qTy))), 4996 Close(bVar"v",MU(Mop(Not,bVar"v"),qTy))))), 4997 MU(LF,qTy)))), 4998 Close 4999 (bVar"b", 5000 MU(ITE(bVar"b", 5001 Call 5002 ("Align",F32,TP[Var("address",F32),nVar"size"]), 5003 Var("address",F32)),qTy))), 5004 Close 5005 (Var("VA",F32), 5006 ITE(Call("Aligned",bTy,TP[Var("VA",F32),nVar"size"]), 5007 Call 5008 ("write'MemA_with_priv",ATy(qTy,PTy(uTy,qTy)), 5009 TP[Var("value",BTy"N"),Var("VA",F32),nVar"size", 5010 bVar"privileged"]), 5011 MB(MR(Close(qVar"s",Dest("CP15",CTy"CP15",qVar"s"))), 5012 Close 5013 (Var("v",CTy"CP15"), 5014 MB(MB(MU(Dest 5015 ("SCTLR",CTy"SCTLR",Var("v",CTy"CP15")), 5016 qTy), 5017 Close 5018 (Var("v",CTy"SCTLR"), 5019 MU(Dest("A",bTy,Var("v",CTy"SCTLR")),qTy))), 5020 Close 5021 (bVar"b", 5022 ITE(bVar"b", 5023 Call 5024 ("AlignmentFault", 5025 ATy(qTy,PTy(uTy,qTy)), 5026 Var("address",F32)), 5027 MB(MR(Close 5028 (qVar"s", 5029 Dest("CPSR",CTy"PSR",qVar"s"))), 5030 Close 5031 (Var("v",CTy"PSR"), 5032 MB(MB(MU(Dest 5033 ("E",bTy, 5034 Var("v",CTy"PSR")), 5035 qTy), 5036 Close 5037 (bVar"b", 5038 ITE(bVar"b", 5039 Call 5040 ("BigEndianReverse", 5041 ATy(qTy, 5042 PTy(vTy,qTy)), 5043 TP[Mop(Cast vTy, 5044 Var("value", 5045 BTy"N")), 5046 nVar"size"]), 5047 MU(Mop(Cast vTy, 5048 Var("value", 5049 BTy"N")), 5050 qTy)))), 5051 Close 5052 (vVar"v", 5053 For(TP[LN 0, 5054 Bop(Sub,nVar"size", 5055 LN 1), 5056 Close 5057 (nVar"i", 5058 Call 5059 ("write'MemA_with_priv", 5060 ATy(qTy, 5061 PTy(uTy, 5062 qTy)), 5063 TP[Mop(Cast F8, 5064 EX(vVar"v", 5065 Bop(Add, 5066 Bop(Mul, 5067 LN 5068 8, 5069 nVar"i"), 5070 LN 5071 7), 5072 Bop(Mul, 5073 LN 5074 8, 5075 nVar"i"), 5076 vTy)), 5077 Bop(Add, 5078 Var("VA", 5079 F32), 5080 Mop(Cast 5081 F32, 5082 nVar"i")), 5083 LN 1, 5084 bVar"privileged"]))])))))))))))))))) 5085; 5086val MemU_unpriv_def = Def 5087 ("MemU_unpriv",TP[Var("address",F32),nVar"size"], 5088 Call 5089 ("MemU_with_priv",ATy(qTy,PTy(BTy"N",qTy)), 5090 TP[Var("address",F32),nVar"size",LF])) 5091; 5092val write'MemU_unpriv_def = Def 5093 ("write'MemU_unpriv", 5094 TP[Var("value",BTy"N"),Var("address",F32),nVar"size"], 5095 Call 5096 ("write'MemU_with_priv",ATy(qTy,PTy(uTy,qTy)), 5097 TP[Var("value",BTy"N"),Var("address",F32),nVar"size",LF])) 5098; 5099val MemU_def = Def 5100 ("MemU",TP[Var("address",F32),nVar"size"], 5101 MB(Call("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)),LU), 5102 Close 5103 (bVar"v", 5104 MB(MB(MU(TP[nVar"size",bVar"v"],qTy), 5105 Close 5106 (Var("v",PTy(nTy,bTy)), 5107 MU(TP[Var("address",F32),Var("v",PTy(nTy,bTy))],qTy))), 5108 Close 5109 (Var("v",PTy(F32,PTy(nTy,bTy))), 5110 Call 5111 ("MemU_with_priv",ATy(qTy,PTy(BTy"N",qTy)), 5112 Var("v",PTy(F32,PTy(nTy,bTy))))))))) 5113; 5114val write'MemU_def = Def 5115 ("write'MemU",TP[Var("value",BTy"N"),Var("address",F32),nVar"size"], 5116 MB(Call("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)),LU), 5117 Close 5118 (bVar"v", 5119 MB(MB(MU(TP[nVar"size",bVar"v"],qTy), 5120 Close 5121 (Var("v",PTy(nTy,bTy)), 5122 MU(TP[Var("address",F32),Var("v",PTy(nTy,bTy))],qTy))), 5123 Close 5124 (Var("x",PTy(F32,PTy(nTy,bTy))), 5125 Call 5126 ("write'MemU_with_priv",ATy(qTy,PTy(uTy,qTy)), 5127 TP[Var("value",BTy"N"),Var("x",PTy(F32,PTy(nTy,bTy)))])))))) 5128; 5129val NullCheckIfThumbEE_def = Def 5130 ("NullCheckIfThumbEE",Var("n",F4), 5131 MN(LF, 5132 MB(MD(Call("CurrentInstrSet",ATy(qTy,PTy(CTy"InstrSet",qTy)),LU),bTy), 5133 Close 5134 (Var("v",CTy"InstrSet"), 5135 MB(MB(MU(EQ(Var("v",CTy"InstrSet"), 5136 LC("InstrSet_ThumbEE",CTy"InstrSet")),PTy(bTy,qTy)), 5137 Close 5138 (bVar"b", 5139 ITE(bVar"b", 5140 ITB([(EQ(Var("n",F4),LW(15,4)), 5141 MB(MD(Const("PC",ATy(qTy,PTy(F32,qTy))),bTy), 5142 Close 5143 (Var("v",F32), 5144 MB(MB(MB(MU(TP[Var("v",F32),LN 4], 5145 PTy(bTy,qTy)), 5146 Close 5147 (Var("v",PTy(F32,nTy)), 5148 MU(Call 5149 ("Align",F32, 5150 Var("v", 5151 PTy(F32,nTy))), 5152 PTy(bTy,qTy)))), 5153 Close 5154 (Var("v",F32), 5155 MU(EQ(Var("v",F32),LW(0,32)), 5156 PTy(bTy,qTy)))), 5157 Close 5158 (bVar"b", 5159 ITE(bVar"b", 5160 MD(Call 5161 ("raise'exception", 5162 ATy(qTy,PTy(uTy,qTy)), 5163 Call 5164 ("UNPREDICTABLE", 5165 CTy"exception", 5166 LS 5167 "NullCheckIfThumbEE")), 5168 bTy),MU(LU,PTy(bTy,qTy)))))))), 5169 (EQ(Var("n",F4),LW(13,4)), 5170 MB(MD(Const("SP",ATy(qTy,PTy(F32,qTy))),bTy), 5171 Close 5172 (Var("v",F32), 5173 MB(MU(EQ(Var("v",F32),LW(0,32)), 5174 PTy(bTy,qTy)), 5175 Close 5176 (bVar"b", 5177 ITE(bVar"b", 5178 MD(Call 5179 ("raise'exception", 5180 ATy(qTy,PTy(uTy,qTy)), 5181 Call 5182 ("UNPREDICTABLE", 5183 CTy"exception", 5184 LS 5185 "NullCheckIfThumbEE")), 5186 bTy),MU(LU,PTy(bTy,qTy))))))))], 5187 MB(MD(Call 5188 ("R",ATy(qTy,PTy(F32,qTy)), 5189 Var("n",F4)),bTy), 5190 Close 5191 (Var("v",F32), 5192 MB(MU(EQ(Var("v",F32),LW(0,32)), 5193 PTy(bTy,qTy)), 5194 Close 5195 (bVar"b", 5196 ITE(bVar"b", 5197 MB(MD(Const 5198 ("PC", 5199 ATy(qTy,PTy(F32,qTy))), 5200 bTy), 5201 Close 5202 (Var("v",F32), 5203 MB(MB(MB(MU(EX(Var("v", 5204 F32), 5205 LN 31, 5206 LN 1, 5207 FTy 31), 5208 PTy(bTy,qTy)), 5209 Close 5210 (Var("v", 5211 FTy 31), 5212 MU(CC[Var("v", 5213 FTy 31), 5214 LW(1, 5215 1)], 5216 PTy(bTy, 5217 qTy)))), 5218 Close 5219 (Var("v",F32), 5220 MD(Call 5221 ("write'LR", 5222 ATy(qTy, 5223 PTy(uTy, 5224 qTy)), 5225 Var("v", 5226 F32)), 5227 bTy))), 5228 Close 5229 (AVar uTy, 5230 MB(MD(Call 5231 ("write'ITSTATE", 5232 ATy(qTy, 5233 PTy(uTy, 5234 qTy)), 5235 LW(0,8)), 5236 bTy), 5237 Close 5238 (AVar uTy, 5239 MB(MR(Close 5240 (Var("s", 5241 PTy(bTy, 5242 qTy)), 5243 Dest 5244 ("CP14", 5245 CTy"CP14", 5246 Mop(Snd, 5247 Var("s", 5248 PTy(bTy, 5249 qTy)))))), 5250 Close 5251 (Var("v", 5252 CTy"CP14"), 5253 MB(MB(MB(MU(Dest 5254 ("TEEHBR", 5255 F32, 5256 Var("v", 5257 CTy"CP14")), 5258 PTy(bTy, 5259 qTy)), 5260 Close 5261 (Var("v", 5262 F32), 5263 MU(Bop(Sub, 5264 Var("v", 5265 F32), 5266 LW(4, 5267 32)), 5268 PTy(bTy, 5269 qTy)))), 5270 Close 5271 (Var("v", 5272 F32), 5273 MD(Call 5274 ("BranchWritePC", 5275 ATy(qTy, 5276 PTy(uTy, 5277 qTy)), 5278 Var("v", 5279 F32)), 5280 bTy))), 5281 Close 5282 (AVar 5283 uTy, 5284 MW(Close 5285 (Var("s", 5286 PTy(bTy, 5287 qTy)), 5288 TP[LT, 5289 Mop(Snd, 5290 Var("s", 5291 PTy(bTy, 5292 qTy)))])))))))))))), 5293 MU(LU,PTy(bTy,qTy)))))))), 5294 MU(LU,PTy(bTy,qTy))))), 5295 Close 5296 (AVar uTy, 5297 MB(MR(Close 5298 (Var("s",PTy(bTy,qTy)), 5299 Mop(Fst,Var("s",PTy(bTy,qTy))))), 5300 Close(bVar"v",MU(Mop(Not,bVar"v"),PTy(bTy,qTy)))))))))) 5301; 5302val HighestSetBit_def = Def 5303 ("HighestSetBit",Var("w",BTy"N"), 5304 ITE(EQ(Var("w",BTy"N"),LY(0,"N")),Mop(Neg,LI 1), 5305 Mop(Cast iTy,Mop(Log,Var("w",BTy"N"))))) 5306; 5307val CountLeadingZeroBits_def = Def 5308 ("CountLeadingZeroBits",Var("w",BTy"N"), 5309 Mop(Cast nTy, 5310 Bop(Sub,Bop(Sub,Mop(Cast iTy,Mop(Size,LY(0,"N"))),LI 1), 5311 Call("HighestSetBit",iTy,Var("w",BTy"N"))))) 5312; 5313val LowestSetBit_def = Def 5314 ("LowestSetBit",Var("w",BTy"N"), 5315 Call("CountLeadingZeroBits",nTy,Mop(Rev,Var("w",BTy"N")))) 5316; 5317val BitCount_def = Def 5318 ("BitCount",Var("w",BTy"N"), 5319 MN(LN 0, 5320 MB(For(TP[LN 0,Bop(Sub,Mop(Size,LY(0,"N")),LN 1), 5321 Close 5322 (nVar"i", 5323 ITE(Bop(Bit,Var("w",BTy"N"),nVar"i"), 5324 MB(MR(Close 5325 (Var("s",PTy(nTy,qTy)), 5326 Mop(Fst,Var("s",PTy(nTy,qTy))))), 5327 Close 5328 (nVar"v", 5329 MB(MU(Bop(Add,nVar"v",LN 1),PTy(nTy,qTy)), 5330 Close 5331 (nVar"v", 5332 MW(Close 5333 (Var("s",PTy(nTy,qTy)), 5334 TP[nVar"v", 5335 Mop(Snd,Var("s",PTy(nTy,qTy)))])))))), 5336 MU(LU,PTy(nTy,qTy))))]), 5337 Close 5338 (AVar uTy, 5339 MR(Close(Var("s",PTy(nTy,qTy)),Mop(Fst,Var("s",PTy(nTy,qTy))))))))) 5340; 5341val SignExtendFrom_def = Def 5342 ("SignExtendFrom",TP[Var("w",BTy"N"),nVar"p"], 5343 Let(nVar"s",Bop(Sub,Mop(Size,LY(0,"N")),nVar"p"), 5344 Bop(Asr,Bop(Lsl,Var("w",BTy"N"),nVar"s"),nVar"s"))) 5345; 5346val Extend_def = Def 5347 ("Extend",TP[bVar"unsigned",Var("w",BTy"M")], 5348 ITE(bVar"unsigned",Mop(Cast(BTy"N"),Var("w",BTy"M")), 5349 Mop(SE(BTy"N"),Var("w",BTy"M")))) 5350; 5351val UInt_def = Def 5352 ("UInt",Var("w",BTy"N"),Mop(Cast iTy,Mop(Cast nTy,Var("w",BTy"N")))) 5353; 5354val SignedSatQ_def = Def 5355 ("SignedSatQ",TP[iVar"i",nVar"N"], 5356 MB(ITE(Bop(Lt,Mop(Size,LY(0,"M")),nVar"N"), 5357 Call 5358 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5359 Call("ASSERT",CTy"exception",LS"SignedSatQ: M < N")), 5360 MU(LU,qTy)), 5361 Close 5362 (AVar uTy, 5363 MU(Let(iVar"max", 5364 Mop(Cast iTy, 5365 Bop(Sub,Bop(Exp,LN 2,Bop(Sub,nVar"N",LN 1)),LN 1)), 5366 ITB([(Bop(Gt,iVar"i",iVar"max"), 5367 TP[Mop(Cast(BTy"M"),iVar"max"),LT]), 5368 (Bop(Lt,iVar"i",Mop(Neg,iVar"max")), 5369 TP[Mop(Neg,Mop(Cast(BTy"M"),iVar"max")),LT])], 5370 TP[Mop(Cast(BTy"M"),iVar"i"),LF])),qTy)))) 5371; 5372val UnsignedSatQ_def = Def 5373 ("UnsignedSatQ",TP[iVar"i",nVar"N"], 5374 MB(ITE(Bop(Lt,Mop(Size,LY(0,"M")),nVar"N"), 5375 Call 5376 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5377 Call("ASSERT",CTy"exception",LS"UnsignedSatQ: M < N")), 5378 MU(LU,qTy)), 5379 Close 5380 (AVar uTy, 5381 MU(Let(iVar"max", 5382 Mop(Cast iTy,Bop(Sub,Bop(Exp,LN 2,nVar"N"),LN 1)), 5383 ITB([(Bop(Gt,iVar"i",iVar"max"), 5384 TP[Mop(Cast(BTy"M"),iVar"max"),LT]), 5385 (Bop(Lt,iVar"i",LI 0),TP[LY(0,"M"),LT])], 5386 TP[Mop(Cast(BTy"M"),iVar"i"),LF])),qTy)))) 5387; 5388val SignedSat_def = Def 5389 ("SignedSat",TP[iVar"i",nVar"N"], 5390 MB(Call 5391 ("SignedSatQ",ATy(qTy,PTy(PTy(BTy"M",bTy),qTy)), 5392 TP[iVar"i",nVar"N"]), 5393 Close 5394 (Var("v",PTy(BTy"M",bTy)), 5395 MU(Mop(Fst,Var("v",PTy(BTy"M",bTy))),qTy)))) 5396; 5397val UnsignedSat_def = Def 5398 ("UnsignedSat",TP[iVar"i",nVar"N"], 5399 MB(Call 5400 ("UnsignedSatQ",ATy(qTy,PTy(PTy(BTy"M",bTy),qTy)), 5401 TP[iVar"i",nVar"N"]), 5402 Close 5403 (Var("v",PTy(BTy"M",bTy)), 5404 MU(Mop(Fst,Var("v",PTy(BTy"M",bTy))),qTy)))) 5405; 5406val LSL_C_def = Def 5407 ("LSL_C",TP[Var("x",BTy"N"),nVar"shift"], 5408 MB(ITE(EQ(nVar"shift",LN 0), 5409 Call 5410 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5411 Call("ASSERT",CTy"exception",LS"LSL_C")),MU(LU,qTy)), 5412 Close 5413 (AVar uTy, 5414 MU(TP[Bop(Lsl,Var("x",BTy"N"),nVar"shift"), 5415 Bop(Bit, 5416 CC[Mop(Cast vTy,Var("x",BTy"N")), 5417 Bop(Rep,LV"0",nVar"shift")],Mop(Size,LY(0,"N")))], 5418 qTy)))) 5419; 5420val LSL_def = Def 5421 ("LSL",TP[Var("x",BTy"N"),nVar"shift"], 5422 ITE(EQ(nVar"shift",LN 0),MU(Var("x",BTy"N"),qTy), 5423 MB(Call 5424 ("LSL_C",ATy(qTy,PTy(PTy(BTy"N",bTy),qTy)), 5425 TP[Var("x",BTy"N"),nVar"shift"]), 5426 Close 5427 (Var("v",PTy(BTy"N",bTy)), 5428 MU(Mop(Fst,Var("v",PTy(BTy"N",bTy))),qTy))))) 5429; 5430val LSR_C_def = Def 5431 ("LSR_C",TP[Var("x",BTy"N"),nVar"shift"], 5432 MB(ITE(EQ(nVar"shift",LN 0), 5433 Call 5434 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5435 Call("ASSERT",CTy"exception",LS"LSR_C")),MU(LU,qTy)), 5436 Close 5437 (AVar uTy, 5438 MU(TP[Bop(Lsr,Var("x",BTy"N"),nVar"shift"), 5439 Bop(And,Bop(Le,nVar"shift",Mop(Size,LY(0,"N"))), 5440 Bop(Bit,Var("x",BTy"N"),Bop(Sub,nVar"shift",LN 1)))], 5441 qTy)))) 5442; 5443val LSR_def = Def 5444 ("LSR",TP[Var("x",BTy"N"),nVar"shift"], 5445 ITE(EQ(nVar"shift",LN 0),MU(Var("x",BTy"N"),qTy), 5446 MB(Call 5447 ("LSR_C",ATy(qTy,PTy(PTy(BTy"N",bTy),qTy)), 5448 TP[Var("x",BTy"N"),nVar"shift"]), 5449 Close 5450 (Var("v",PTy(BTy"N",bTy)), 5451 MU(Mop(Fst,Var("v",PTy(BTy"N",bTy))),qTy))))) 5452; 5453val ASR_C_def = Def 5454 ("ASR_C",TP[Var("x",BTy"N"),nVar"shift"], 5455 MB(ITE(EQ(nVar"shift",LN 0), 5456 Call 5457 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5458 Call("ASSERT",CTy"exception",LS"ASR_C")),MU(LU,qTy)), 5459 Close 5460 (AVar uTy, 5461 MU(TP[Bop(Asr,Var("x",BTy"N"),nVar"shift"), 5462 Bop(Bit,Var("x",BTy"N"), 5463 Bop(Sub,Mop(Min,TP[Mop(Size,LY(0,"N")),nVar"shift"]), 5464 LN 1))],qTy)))) 5465; 5466val ASR_def = Def 5467 ("ASR",TP[Var("x",BTy"N"),nVar"shift"], 5468 ITE(EQ(nVar"shift",LN 0),MU(Var("x",BTy"N"),qTy), 5469 MB(Call 5470 ("ASR_C",ATy(qTy,PTy(PTy(BTy"N",bTy),qTy)), 5471 TP[Var("x",BTy"N"),nVar"shift"]), 5472 Close 5473 (Var("v",PTy(BTy"N",bTy)), 5474 MU(Mop(Fst,Var("v",PTy(BTy"N",bTy))),qTy))))) 5475; 5476val ROR_C_def = Def 5477 ("ROR_C",TP[Var("x",BTy"N"),nVar"shift"], 5478 MB(ITE(EQ(nVar"shift",LN 0), 5479 Call 5480 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5481 Call("ASSERT",CTy"exception",LS"ROR_C")),MU(LU,qTy)), 5482 Close 5483 (AVar uTy, 5484 MU(Let(Var("result",BTy"N"),Bop(Ror,Var("x",BTy"N"),nVar"shift"), 5485 TP[Var("result",BTy"N"),Mop(Msb,Var("result",BTy"N"))]), 5486 qTy)))) 5487; 5488val ROR_def = Def 5489 ("ROR",TP[Var("x",BTy"N"),nVar"shift"], 5490 ITE(EQ(nVar"shift",LN 0),MU(Var("x",BTy"N"),qTy), 5491 MB(Call 5492 ("ROR_C",ATy(qTy,PTy(PTy(BTy"N",bTy),qTy)), 5493 TP[Var("x",BTy"N"),nVar"shift"]), 5494 Close 5495 (Var("v",PTy(BTy"N",bTy)), 5496 MU(Mop(Fst,Var("v",PTy(BTy"N",bTy))),qTy))))) 5497; 5498val RRX_C_def = Def 5499 ("RRX_C",TP[Var("x",BTy"N"),bVar"carry_in"], 5500 TP[Mop(Cast(BTy"N"), 5501 CC[Mop(Cast vTy,bVar"carry_in"), 5502 EX(Mop(Cast vTy,Var("x",BTy"N")), 5503 Bop(Sub,Mop(Size,LY(0,"N")),LN 1),LN 1,vTy)]), 5504 Bop(Bit,Var("x",BTy"N"),LN 0)]) 5505; 5506val RRX_def = Def 5507 ("RRX",TP[Var("x",BTy"N"),bVar"carry_in"], 5508 Mop(Fst, 5509 Call("RRX_C",PTy(BTy"N",bTy),TP[Var("x",BTy"N"),bVar"carry_in"]))) 5510; 5511val DecodeImmShift_def = Def 5512 ("DecodeImmShift",TP[Var("typ",FTy 2),Var("imm5",FTy 5)], 5513 CS(Var("typ",FTy 2), 5514 [(LW(0,2), 5515 TP[LC("SRType_LSL",CTy"SRType"),Mop(Cast nTy,Var("imm5",FTy 5))]), 5516 (LW(1,2), 5517 TP[LC("SRType_LSR",CTy"SRType"), 5518 ITE(EQ(Var("imm5",FTy 5),LW(0,5)),LN 32, 5519 Mop(Cast nTy,Var("imm5",FTy 5)))]), 5520 (LW(2,2), 5521 TP[LC("SRType_ASR",CTy"SRType"), 5522 ITE(EQ(Var("imm5",FTy 5),LW(0,5)),LN 32, 5523 Mop(Cast nTy,Var("imm5",FTy 5)))]), 5524 (LW(3,2), 5525 ITE(EQ(Var("imm5",FTy 5),LW(0,5)), 5526 TP[LC("SRType_RRX",CTy"SRType"),LN 1], 5527 TP[LC("SRType_ROR",CTy"SRType"), 5528 Mop(Cast nTy,Var("imm5",FTy 5))]))])) 5529; 5530val DecodeRegShift_def = Def 5531 ("DecodeRegShift",Var("typ",FTy 2), 5532 CS(Var("typ",FTy 2), 5533 [(LW(0,2),LC("SRType_LSL",CTy"SRType")), 5534 (LW(1,2),LC("SRType_LSR",CTy"SRType")), 5535 (LW(2,2),LC("SRType_ASR",CTy"SRType")), 5536 (LW(3,2),LC("SRType_ROR",CTy"SRType"))])) 5537; 5538val Shift_C_def = Def 5539 ("Shift_C", 5540 TP[Var("value",BTy"N"),Var("typ",CTy"SRType"),nVar"amount", 5541 bVar"carry_in"], 5542 ITE(EQ(nVar"amount",LN 0), 5543 MU(TP[Var("value",BTy"N"),bVar"carry_in"],qTy), 5544 CS(Var("typ",CTy"SRType"), 5545 [(LC("SRType_LSL",CTy"SRType"), 5546 Call 5547 ("LSL_C",ATy(qTy,PTy(PTy(BTy"N",bTy),qTy)), 5548 TP[Var("value",BTy"N"),nVar"amount"])), 5549 (LC("SRType_LSR",CTy"SRType"), 5550 Call 5551 ("LSR_C",ATy(qTy,PTy(PTy(BTy"N",bTy),qTy)), 5552 TP[Var("value",BTy"N"),nVar"amount"])), 5553 (LC("SRType_ASR",CTy"SRType"), 5554 Call 5555 ("ASR_C",ATy(qTy,PTy(PTy(BTy"N",bTy),qTy)), 5556 TP[Var("value",BTy"N"),nVar"amount"])), 5557 (LC("SRType_ROR",CTy"SRType"), 5558 Call 5559 ("ROR_C",ATy(qTy,PTy(PTy(BTy"N",bTy),qTy)), 5560 TP[Var("value",BTy"N"),nVar"amount"])), 5561 (LC("SRType_RRX",CTy"SRType"), 5562 MU(Call 5563 ("RRX_C",PTy(BTy"N",bTy), 5564 TP[Var("value",BTy"N"),bVar"carry_in"]),qTy))]))) 5565; 5566val Shift_def = Def 5567 ("Shift", 5568 TP[Var("value",BTy"N"),Var("typ",CTy"SRType"),nVar"amount", 5569 bVar"carry_in"], 5570 MB(Call 5571 ("Shift_C",ATy(qTy,PTy(PTy(BTy"N",bTy),qTy)), 5572 TP[Var("value",BTy"N"),Var("typ",CTy"SRType"),nVar"amount", 5573 bVar"carry_in"]), 5574 Close 5575 (Var("v",PTy(BTy"N",bTy)), 5576 MU(Mop(Fst,Var("v",PTy(BTy"N",bTy))),qTy)))) 5577; 5578val ARMExpandImm_C_def = Def 5579 ("ARMExpandImm_C",TP[Var("imm12",FTy 12),bVar"carry_in"], 5580 Call 5581 ("Shift_C",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 5582 TP[Mop(Cast F32,EX(Var("imm12",FTy 12),LN 7,LN 0,F8)), 5583 LC("SRType_ROR",CTy"SRType"), 5584 Bop(Mul,LN 2,Mop(Cast nTy,EX(Var("imm12",FTy 12),LN 11,LN 8,F4))), 5585 bVar"carry_in"])) 5586; 5587val ARMExpandImm_def = Def 5588 ("ARMExpandImm",Var("imm12",FTy 12), 5589 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 5590 Close 5591 (Var("v",CTy"PSR"), 5592 MB(MB(MB(MU(Dest("C",bTy,Var("v",CTy"PSR")),qTy), 5593 Close(bVar"v",MU(TP[Var("imm12",FTy 12),bVar"v"],qTy))), 5594 Close 5595 (Var("v",PTy(FTy 12,bTy)), 5596 Call 5597 ("ARMExpandImm_C",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 5598 Var("v",PTy(FTy 12,bTy))))), 5599 Close 5600 (Var("v",PTy(F32,bTy)), 5601 MU(Mop(Fst,Var("v",PTy(F32,bTy))),qTy)))))) 5602; 5603val ThumbExpandImm_C_def = Def 5604 ("ThumbExpandImm_C",TP[Var("imm12",FTy 12),bVar"carry_in"], 5605 ITE(EQ(EX(Var("imm12",FTy 12),LN 11,LN 10,FTy 2),LW(0,2)), 5606 MB(CS(EX(Var("imm12",FTy 12),LN 9,LN 8,FTy 2), 5607 [(LW(0,2), 5608 MU(Mop(Cast F32,EX(Var("imm12",FTy 12),LN 7,LN 0,F8)),qTy)), 5609 (LW(1,2), 5610 ITE(EQ(EX(Var("imm12",FTy 12),LN 7,LN 0,F8),LW(0,8)), 5611 Call 5612 ("raise'exception",ATy(qTy,PTy(F32,qTy)), 5613 Call 5614 ("UNPREDICTABLE",CTy"exception", 5615 LS"ThumbExpandImm_C")), 5616 MU(CC[LW(0,8),EX(Var("imm12",FTy 12),LN 7,LN 0,F8), 5617 LW(0,8),EX(Var("imm12",FTy 12),LN 7,LN 0,F8)],qTy))), 5618 (LW(2,2), 5619 ITE(EQ(EX(Var("imm12",FTy 12),LN 7,LN 0,F8),LW(0,8)), 5620 Call 5621 ("raise'exception",ATy(qTy,PTy(F32,qTy)), 5622 Call 5623 ("UNPREDICTABLE",CTy"exception", 5624 LS"ThumbExpandImm_C")), 5625 MU(CC[EX(Var("imm12",FTy 12),LN 7,LN 0,F8),LW(0,8), 5626 EX(Var("imm12",FTy 12),LN 7,LN 0,F8),LW(0,8)],qTy))), 5627 (LW(3,2), 5628 ITE(EQ(EX(Var("imm12",FTy 12),LN 7,LN 0,F8),LW(0,8)), 5629 Call 5630 ("raise'exception",ATy(qTy,PTy(F32,qTy)), 5631 Call 5632 ("UNPREDICTABLE",CTy"exception", 5633 LS"ThumbExpandImm_C")), 5634 MU(CC[EX(Var("imm12",FTy 12),LN 7,LN 0,F8), 5635 EX(Var("imm12",FTy 12),LN 7,LN 0,F8), 5636 EX(Var("imm12",FTy 12),LN 7,LN 0,F8), 5637 EX(Var("imm12",FTy 12),LN 7,LN 0,F8)],qTy)))]), 5638 Close 5639 (Var("imm32",F32),MU(TP[Var("imm32",F32),bVar"carry_in"],qTy))), 5640 Call 5641 ("ROR_C",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 5642 TP[Mop(Cast F32, 5643 CC[LW(1,1),EX(Var("imm12",FTy 12),LN 6,LN 0,FTy 7)]), 5644 Mop(Cast nTy,EX(Var("imm12",FTy 12),LN 11,LN 7,FTy 5))]))) 5645; 5646val ExpandImm_C_def = Def 5647 ("ExpandImm_C",TP[Var("imm12",FTy 12),bVar"carry_in"], 5648 MB(MR(Close(qVar"s",Dest("Encoding",CTy"Encoding",qVar"s"))), 5649 Close 5650 (Var("v",CTy"Encoding"), 5651 MB(MU(EQ(Var("v",CTy"Encoding"), 5652 LC("Encoding_Thumb2",CTy"Encoding")),qTy), 5653 Close 5654 (bVar"b", 5655 ITE(bVar"b", 5656 Call 5657 ("ThumbExpandImm_C",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 5658 TP[Var("imm12",FTy 12),bVar"carry_in"]), 5659 Call 5660 ("ARMExpandImm_C",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 5661 TP[Var("imm12",FTy 12),bVar"carry_in"]))))))) 5662; 5663val AddWithCarry_def = Def 5664 ("AddWithCarry",TP[Var("x",BTy"N"),Var("y",BTy"N"),bVar"carry_in"], 5665 Let(nVar"unsigned_sum", 5666 Bop(Add, 5667 Bop(Add,Mop(Cast nTy,Var("x",BTy"N")), 5668 Mop(Cast nTy,Var("y",BTy"N"))),Mop(Cast nTy,bVar"carry_in")), 5669 Let(Var("result",BTy"N"),Mop(Cast(BTy"N"),nVar"unsigned_sum"), 5670 TP[Var("result",BTy"N"), 5671 Mop(Not, 5672 EQ(Mop(Cast nTy,Var("result",BTy"N")),nVar"unsigned_sum")), 5673 Mop(Not, 5674 EQ(Mop(Cast iTy,Var("result",BTy"N")), 5675 Bop(Add, 5676 Bop(Add,Mop(Cast iTy,Var("x",BTy"N")), 5677 Mop(Cast iTy,Var("y",BTy"N"))), 5678 Mop(Cast iTy,bVar"carry_in"))))]))) 5679; 5680val DataProcessingALU_def = Def 5681 ("DataProcessingALU", 5682 TP[Var("opc",F4),Var("a",F32),Var("b",F32),bVar"c"], 5683 CS(Var("opc",F4), 5684 [(LW(0,4),TP[Bop(BAnd,Var("a",F32),Var("b",F32)),bVar"c",LX bTy]), 5685 (LW(8,4),TP[Bop(BAnd,Var("a",F32),Var("b",F32)),bVar"c",LX bTy]), 5686 (LW(1,4),TP[Bop(BXor,Var("a",F32),Var("b",F32)),bVar"c",LX bTy]), 5687 (LW(9,4),TP[Bop(BXor,Var("a",F32),Var("b",F32)),bVar"c",LX bTy]), 5688 (LW(2,4), 5689 Call 5690 ("AddWithCarry",PTy(F32,PTy(bTy,bTy)), 5691 TP[Var("a",F32),Mop(BNot,Var("b",F32)),LT])), 5692 (LW(10,4), 5693 Call 5694 ("AddWithCarry",PTy(F32,PTy(bTy,bTy)), 5695 TP[Var("a",F32),Mop(BNot,Var("b",F32)),LT])), 5696 (LW(3,4), 5697 Call 5698 ("AddWithCarry",PTy(F32,PTy(bTy,bTy)), 5699 TP[Mop(BNot,Var("a",F32)),Var("b",F32),LT])), 5700 (LW(4,4), 5701 Call 5702 ("AddWithCarry",PTy(F32,PTy(bTy,bTy)), 5703 TP[Var("a",F32),Var("b",F32),LF])), 5704 (LW(11,4), 5705 Call 5706 ("AddWithCarry",PTy(F32,PTy(bTy,bTy)), 5707 TP[Var("a",F32),Var("b",F32),LF])), 5708 (LW(5,4), 5709 Call 5710 ("AddWithCarry",PTy(F32,PTy(bTy,bTy)), 5711 TP[Var("a",F32),Var("b",F32),bVar"c"])), 5712 (LW(6,4), 5713 Call 5714 ("AddWithCarry",PTy(F32,PTy(bTy,bTy)), 5715 TP[Var("a",F32),Mop(BNot,Var("b",F32)),bVar"c"])), 5716 (LW(7,4), 5717 Call 5718 ("AddWithCarry",PTy(F32,PTy(bTy,bTy)), 5719 TP[Mop(BNot,Var("a",F32)),Var("b",F32),bVar"c"])), 5720 (LW(12,4),TP[Bop(BOr,Var("a",F32),Var("b",F32)),bVar"c",LX bTy]), 5721 (LW(13,4),TP[Var("b",F32),bVar"c",LX bTy]), 5722 (LW(14,4), 5723 TP[Bop(BAnd,Var("a",F32),Mop(BNot,Var("b",F32))),bVar"c",LX bTy]), 5724 (LW(15,4), 5725 TP[Bop(BOr,Var("a",F32),Mop(BNot,Var("b",F32))),bVar"c",LX bTy])])) 5726; 5727val ArithmeticOpcode_def = Def 5728 ("ArithmeticOpcode",Var("opc",F4), 5729 Bop(And, 5730 Bop(Or,Bop(Bit,Var("opc",F4),LN 2),Bop(Bit,Var("opc",F4),LN 1)), 5731 Mop(Not, 5732 Bop(And,Bop(Bit,Var("opc",F4),LN 3),Bop(Bit,Var("opc",F4),LN 2))))) 5733; 5734val ExcVectorBase_def = Def 5735 ("ExcVectorBase",AVar uTy, 5736 MB(MR(Close(qVar"s",Dest("CP15",CTy"CP15",qVar"s"))), 5737 Close 5738 (Var("v",CTy"CP15"), 5739 MB(MB(MU(Dest("SCTLR",CTy"SCTLR",Var("v",CTy"CP15")),qTy), 5740 Close 5741 (Var("v",CTy"SCTLR"), 5742 MU(Dest("V",bTy,Var("v",CTy"SCTLR")),qTy))), 5743 Close 5744 (bVar"b", 5745 ITE(bVar"b",MU(LW(268431360,32),qTy), 5746 MB(Call("HaveSecurityExt",ATy(qTy,PTy(bTy,qTy)),LU), 5747 Close 5748 (bVar"b", 5749 ITE(bVar"b", 5750 MB(MR(Close 5751 (qVar"s", 5752 Dest("CP15",CTy"CP15",qVar"s"))), 5753 Close 5754 (Var("v",CTy"CP15"), 5755 MU(Dest("VBAR",F32,Var("v",CTy"CP15")), 5756 qTy))),MU(LW(0,32),qTy)))))))))) 5757; 5758val EnterMonitorMode_def = Def 5759 ("EnterMonitorMode", 5760 TP[Var("new_spsr_value",CTy"PSR"),Var("new_lr_value",F32), 5761 Var("vect_offset",F32)], 5762 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 5763 Close 5764 (Var("v",CTy"PSR"), 5765 MB(MB(MB(MU(TP[Var("v",CTy"PSR"),LW(22,5)],qTy), 5766 Close 5767 (Var("v",PTy(CTy"PSR",FTy 5)), 5768 MU(Rupd("M",Var("v",PTy(CTy"PSR",FTy 5))),qTy))), 5769 Close 5770 (Var("v",CTy"PSR"), 5771 MW(Close 5772 (qVar"s",Rupd("CPSR",TP[qVar"s",Var("v",CTy"PSR")]))))), 5773 Close 5774 (AVar uTy, 5775 MB(Call 5776 ("write'SPSR",ATy(qTy,PTy(uTy,qTy)), 5777 Var("new_spsr_value",CTy"PSR")), 5778 Close 5779 (AVar uTy, 5780 MB(Call 5781 ("write'R",ATy(qTy,PTy(uTy,qTy)), 5782 TP[Var("new_lr_value",F32),LW(14,4)]), 5783 Close 5784 (AVar uTy, 5785 MB(MR(Close 5786 (qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 5787 Close 5788 (Var("v",CTy"PSR"), 5789 MB(MB(MB(MU(TP[Var("v",CTy"PSR"),LF],qTy), 5790 Close 5791 (Var("v",PTy(CTy"PSR",bTy)), 5792 MU(Rupd 5793 ("J", 5794 Var("v", 5795 PTy(CTy"PSR",bTy))), 5796 qTy))), 5797 Close 5798 (Var("v",CTy"PSR"), 5799 MW(Close 5800 (qVar"s", 5801 Rupd 5802 ("CPSR", 5803 TP[qVar"s", 5804 Var("v",CTy"PSR")]))))), 5805 Close 5806 (AVar uTy, 5807 MB(MR(Close 5808 (qVar"s", 5809 Dest 5810 ("CPSR",CTy"PSR",qVar"s"))), 5811 Close 5812 (Var("v",CTy"PSR"), 5813 MB(MB(MB(MB(MR(Close 5814 (qVar"s", 5815 Dest 5816 ("CP15", 5817 CTy"CP15", 5818 qVar"s"))), 5819 Close 5820 (Var("v0", 5821 CTy"CP15"), 5822 MB(MB(MU(Dest 5823 ("SCTLR", 5824 CTy"SCTLR", 5825 Var("v0", 5826 CTy"CP15")), 5827 qTy), 5828 Close 5829 (Var("v", 5830 CTy"SCTLR"), 5831 MU(Dest 5832 ("TE", 5833 bTy, 5834 Var("v", 5835 CTy"SCTLR")), 5836 qTy))), 5837 Close 5838 (bVar"v0", 5839 MU(TP[Var("v", 5840 CTy"PSR"), 5841 bVar"v0"], 5842 qTy))))), 5843 Close 5844 (Var("v", 5845 PTy(CTy"PSR", 5846 bTy)), 5847 MU(Rupd 5848 ("T", 5849 Var("v", 5850 PTy(CTy"PSR", 5851 bTy))), 5852 qTy))), 5853 Close 5854 (Var("v",CTy"PSR"), 5855 MW(Close 5856 (qVar"s", 5857 Rupd 5858 ("CPSR", 5859 TP[qVar"s", 5860 Var("v", 5861 CTy"PSR")]))))), 5862 Close 5863 (AVar uTy, 5864 MB(MR(Close 5865 (qVar"s", 5866 Dest 5867 ("CPSR", 5868 CTy"PSR", 5869 qVar"s"))), 5870 Close 5871 (Var("v",CTy"PSR"), 5872 MB(MB(MB(MB(MR(Close 5873 (qVar"s", 5874 Dest 5875 ("CP15", 5876 CTy"CP15", 5877 qVar"s"))), 5878 Close 5879 (Var("v0", 5880 CTy"CP15"), 5881 MB(MB(MU(Dest 5882 ("SCTLR", 5883 CTy"SCTLR", 5884 Var("v0", 5885 CTy"CP15")), 5886 qTy), 5887 Close 5888 (Var("v", 5889 CTy"SCTLR"), 5890 MU(Dest 5891 ("EE", 5892 bTy, 5893 Var("v", 5894 CTy"SCTLR")), 5895 qTy))), 5896 Close 5897 (bVar"v0", 5898 MU(TP[Var("v", 5899 CTy"PSR"), 5900 bVar"v0"], 5901 qTy))))), 5902 Close 5903 (Var("v", 5904 PTy(CTy"PSR", 5905 bTy)), 5906 MU(Rupd 5907 ("E", 5908 Var("v", 5909 PTy(CTy"PSR", 5910 bTy))), 5911 qTy))), 5912 Close 5913 (Var("v", 5914 CTy"PSR"), 5915 MW(Close 5916 (qVar"s", 5917 Rupd 5918 ("CPSR", 5919 TP[qVar"s", 5920 Var("v", 5921 CTy"PSR")]))))), 5922 Close 5923 (AVar uTy, 5924 MB(MR(Close 5925 (qVar"s", 5926 Dest 5927 ("CPSR", 5928 CTy"PSR", 5929 qVar"s"))), 5930 Close 5931 (Var("v", 5932 CTy"PSR"), 5933 MB(MB(MB(MU(TP[Var("v", 5934 CTy"PSR"), 5935 LT], 5936 qTy), 5937 Close 5938 (Var("v", 5939 PTy(CTy"PSR", 5940 bTy)), 5941 MU(Rupd 5942 ("A", 5943 Var("v", 5944 PTy(CTy"PSR", 5945 bTy))), 5946 qTy))), 5947 Close 5948 (Var("v", 5949 CTy"PSR"), 5950 MW(Close 5951 (qVar"s", 5952 Rupd 5953 ("CPSR", 5954 TP[qVar"s", 5955 Var("v", 5956 CTy"PSR")]))))), 5957 Close 5958 (AVar 5959 uTy, 5960 MB(MR(Close 5961 (qVar"s", 5962 Dest 5963 ("CPSR", 5964 CTy"PSR", 5965 qVar"s"))), 5966 Close 5967 (Var("v", 5968 CTy"PSR"), 5969 MB(MB(MB(MU(TP[Var("v", 5970 CTy"PSR"), 5971 LT], 5972 qTy), 5973 Close 5974 (Var("v", 5975 PTy(CTy"PSR", 5976 bTy)), 5977 MU(Rupd 5978 ("F", 5979 Var("v", 5980 PTy(CTy"PSR", 5981 bTy))), 5982 qTy))), 5983 Close 5984 (Var("v", 5985 CTy"PSR"), 5986 MW(Close 5987 (qVar"s", 5988 Rupd 5989 ("CPSR", 5990 TP[qVar"s", 5991 Var("v", 5992 CTy"PSR")]))))), 5993 Close 5994 (AVar 5995 uTy, 5996 MB(MR(Close 5997 (qVar"s", 5998 Dest 5999 ("CPSR", 6000 CTy"PSR", 6001 qVar"s"))), 6002 Close 6003 (Var("v", 6004 CTy"PSR"), 6005 MB(MB(MB(MU(TP[Var("v", 6006 CTy"PSR"), 6007 LT], 6008 qTy), 6009 Close 6010 (Var("v", 6011 PTy(CTy"PSR", 6012 bTy)), 6013 MU(Rupd 6014 ("I", 6015 Var("v", 6016 PTy(CTy"PSR", 6017 bTy))), 6018 qTy))), 6019 Close 6020 (Var("v", 6021 CTy"PSR"), 6022 MW(Close 6023 (qVar"s", 6024 Rupd 6025 ("CPSR", 6026 TP[qVar"s", 6027 Var("v", 6028 CTy"PSR")]))))), 6029 Close 6030 (AVar 6031 uTy, 6032 MB(MR(Close 6033 (qVar"s", 6034 Dest 6035 ("CPSR", 6036 CTy"PSR", 6037 qVar"s"))), 6038 Close 6039 (Var("v", 6040 CTy"PSR"), 6041 MB(MB(MB(MU(TP[Var("v", 6042 CTy"PSR"), 6043 LW(0, 6044 8)], 6045 qTy), 6046 Close 6047 (Var("v", 6048 PTy(CTy"PSR", 6049 F8)), 6050 MU(Rupd 6051 ("IT", 6052 Var("v", 6053 PTy(CTy"PSR", 6054 F8))), 6055 qTy))), 6056 Close 6057 (Var("v", 6058 CTy"PSR"), 6059 MW(Close 6060 (qVar"s", 6061 Rupd 6062 ("CPSR", 6063 TP[qVar"s", 6064 Var("v", 6065 CTy"PSR")]))))), 6066 Close 6067 (AVar 6068 uTy, 6069 MB(MR(Close 6070 (qVar"s", 6071 Dest 6072 ("CP15", 6073 CTy"CP15", 6074 qVar"s"))), 6075 Close 6076 (Var("v", 6077 CTy"CP15"), 6078 MB(MB(MU(Dest 6079 ("MVBAR", 6080 F32, 6081 Var("v", 6082 CTy"CP15")), 6083 qTy), 6084 Close 6085 (Var("v", 6086 F32), 6087 MU(Bop(Add, 6088 Var("v", 6089 F32), 6090 Var("vect_offset", 6091 F32)), 6092 qTy))), 6093 Close 6094 (Var("v", 6095 F32), 6096 Call 6097 ("BranchTo", 6098 ATy(qTy, 6099 PTy(uTy, 6100 qTy)), 6101 Var("v", 6102 F32))))))))))))))))))))))))))))))))))))))))))) 6103; 6104val EnterHypMode_def = Def 6105 ("EnterHypMode", 6106 TP[Var("new_spsr_value",CTy"PSR"),Var("new_lr_value",F32), 6107 Var("vect_offset",F32)], 6108 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 6109 Close 6110 (Var("v",CTy"PSR"), 6111 MB(MB(MB(MU(TP[Var("v",CTy"PSR"),LW(26,5)],qTy), 6112 Close 6113 (Var("v",PTy(CTy"PSR",FTy 5)), 6114 MU(Rupd("M",Var("v",PTy(CTy"PSR",FTy 5))),qTy))), 6115 Close 6116 (Var("v",CTy"PSR"), 6117 MW(Close 6118 (qVar"s",Rupd("CPSR",TP[qVar"s",Var("v",CTy"PSR")]))))), 6119 Close 6120 (AVar uTy, 6121 MB(Call 6122 ("write'SPSR",ATy(qTy,PTy(uTy,qTy)), 6123 Var("new_spsr_value",CTy"PSR")), 6124 Close 6125 (AVar uTy, 6126 MB(Call 6127 ("write'R",ATy(qTy,PTy(uTy,qTy)), 6128 TP[Var("new_lr_value",F32),LW(14,4)]), 6129 Close 6130 (AVar uTy, 6131 MB(MR(Close 6132 (qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 6133 Close 6134 (Var("v",CTy"PSR"), 6135 MB(MB(MB(MU(TP[Var("v",CTy"PSR"),LF],qTy), 6136 Close 6137 (Var("v",PTy(CTy"PSR",bTy)), 6138 MU(Rupd 6139 ("J", 6140 Var("v", 6141 PTy(CTy"PSR",bTy))), 6142 qTy))), 6143 Close 6144 (Var("v",CTy"PSR"), 6145 MW(Close 6146 (qVar"s", 6147 Rupd 6148 ("CPSR", 6149 TP[qVar"s", 6150 Var("v",CTy"PSR")]))))), 6151 Close 6152 (AVar uTy, 6153 MB(MR(Close 6154 (qVar"s", 6155 Dest 6156 ("CPSR",CTy"PSR",qVar"s"))), 6157 Close 6158 (Var("v",CTy"PSR"), 6159 MB(MB(MB(MB(MR(Close 6160 (qVar"s", 6161 Dest 6162 ("CP15", 6163 CTy"CP15", 6164 qVar"s"))), 6165 Close 6166 (Var("v0", 6167 CTy"CP15"), 6168 MB(MB(MU(Dest 6169 ("SCTLR", 6170 CTy"SCTLR", 6171 Var("v0", 6172 CTy"CP15")), 6173 qTy), 6174 Close 6175 (Var("v", 6176 CTy"SCTLR"), 6177 MU(Dest 6178 ("TE", 6179 bTy, 6180 Var("v", 6181 CTy"SCTLR")), 6182 qTy))), 6183 Close 6184 (bVar"v0", 6185 MU(TP[Var("v", 6186 CTy"PSR"), 6187 bVar"v0"], 6188 qTy))))), 6189 Close 6190 (Var("v", 6191 PTy(CTy"PSR", 6192 bTy)), 6193 MU(Rupd 6194 ("T", 6195 Var("v", 6196 PTy(CTy"PSR", 6197 bTy))), 6198 qTy))), 6199 Close 6200 (Var("v",CTy"PSR"), 6201 MW(Close 6202 (qVar"s", 6203 Rupd 6204 ("CPSR", 6205 TP[qVar"s", 6206 Var("v", 6207 CTy"PSR")]))))), 6208 Close 6209 (AVar uTy, 6210 MB(MR(Close 6211 (qVar"s", 6212 Dest 6213 ("CPSR", 6214 CTy"PSR", 6215 qVar"s"))), 6216 Close 6217 (Var("v",CTy"PSR"), 6218 MB(MB(MB(MB(MR(Close 6219 (qVar"s", 6220 Dest 6221 ("CP15", 6222 CTy"CP15", 6223 qVar"s"))), 6224 Close 6225 (Var("v0", 6226 CTy"CP15"), 6227 MB(MB(MU(Dest 6228 ("SCTLR", 6229 CTy"SCTLR", 6230 Var("v0", 6231 CTy"CP15")), 6232 qTy), 6233 Close 6234 (Var("v", 6235 CTy"SCTLR"), 6236 MU(Dest 6237 ("EE", 6238 bTy, 6239 Var("v", 6240 CTy"SCTLR")), 6241 qTy))), 6242 Close 6243 (bVar"v0", 6244 MU(TP[Var("v", 6245 CTy"PSR"), 6246 bVar"v0"], 6247 qTy))))), 6248 Close 6249 (Var("v", 6250 PTy(CTy"PSR", 6251 bTy)), 6252 MU(Rupd 6253 ("E", 6254 Var("v", 6255 PTy(CTy"PSR", 6256 bTy))), 6257 qTy))), 6258 Close 6259 (Var("v", 6260 CTy"PSR"), 6261 MW(Close 6262 (qVar"s", 6263 Rupd 6264 ("CPSR", 6265 TP[qVar"s", 6266 Var("v", 6267 CTy"PSR")]))))), 6268 Close 6269 (AVar uTy, 6270 MB(MR(Close 6271 (qVar"s", 6272 Dest 6273 ("CPSR", 6274 CTy"PSR", 6275 qVar"s"))), 6276 Close 6277 (Var("v", 6278 CTy"PSR"), 6279 MB(MB(MB(MU(TP[Var("v", 6280 CTy"PSR"), 6281 LT], 6282 qTy), 6283 Close 6284 (Var("v", 6285 PTy(CTy"PSR", 6286 bTy)), 6287 MU(Rupd 6288 ("A", 6289 Var("v", 6290 PTy(CTy"PSR", 6291 bTy))), 6292 qTy))), 6293 Close 6294 (Var("v", 6295 CTy"PSR"), 6296 MW(Close 6297 (qVar"s", 6298 Rupd 6299 ("CPSR", 6300 TP[qVar"s", 6301 Var("v", 6302 CTy"PSR")]))))), 6303 Close 6304 (AVar 6305 uTy, 6306 MB(MR(Close 6307 (qVar"s", 6308 Dest 6309 ("CPSR", 6310 CTy"PSR", 6311 qVar"s"))), 6312 Close 6313 (Var("v", 6314 CTy"PSR"), 6315 MB(MB(MB(MU(TP[Var("v", 6316 CTy"PSR"), 6317 LT], 6318 qTy), 6319 Close 6320 (Var("v", 6321 PTy(CTy"PSR", 6322 bTy)), 6323 MU(Rupd 6324 ("F", 6325 Var("v", 6326 PTy(CTy"PSR", 6327 bTy))), 6328 qTy))), 6329 Close 6330 (Var("v", 6331 CTy"PSR"), 6332 MW(Close 6333 (qVar"s", 6334 Rupd 6335 ("CPSR", 6336 TP[qVar"s", 6337 Var("v", 6338 CTy"PSR")]))))), 6339 Close 6340 (AVar 6341 uTy, 6342 MB(MR(Close 6343 (qVar"s", 6344 Dest 6345 ("CPSR", 6346 CTy"PSR", 6347 qVar"s"))), 6348 Close 6349 (Var("v", 6350 CTy"PSR"), 6351 MB(MB(MB(MU(TP[Var("v", 6352 CTy"PSR"), 6353 LT], 6354 qTy), 6355 Close 6356 (Var("v", 6357 PTy(CTy"PSR", 6358 bTy)), 6359 MU(Rupd 6360 ("I", 6361 Var("v", 6362 PTy(CTy"PSR", 6363 bTy))), 6364 qTy))), 6365 Close 6366 (Var("v", 6367 CTy"PSR"), 6368 MW(Close 6369 (qVar"s", 6370 Rupd 6371 ("CPSR", 6372 TP[qVar"s", 6373 Var("v", 6374 CTy"PSR")]))))), 6375 Close 6376 (AVar 6377 uTy, 6378 MB(MR(Close 6379 (qVar"s", 6380 Dest 6381 ("CPSR", 6382 CTy"PSR", 6383 qVar"s"))), 6384 Close 6385 (Var("v", 6386 CTy"PSR"), 6387 MB(MB(MB(MU(TP[Var("v", 6388 CTy"PSR"), 6389 LW(0, 6390 8)], 6391 qTy), 6392 Close 6393 (Var("v", 6394 PTy(CTy"PSR", 6395 F8)), 6396 MU(Rupd 6397 ("IT", 6398 Var("v", 6399 PTy(CTy"PSR", 6400 F8))), 6401 qTy))), 6402 Close 6403 (Var("v", 6404 CTy"PSR"), 6405 MW(Close 6406 (qVar"s", 6407 Rupd 6408 ("CPSR", 6409 TP[qVar"s", 6410 Var("v", 6411 CTy"PSR")]))))), 6412 Close 6413 (AVar 6414 uTy, 6415 MB(MR(Close 6416 (qVar"s", 6417 Dest 6418 ("CP15", 6419 CTy"CP15", 6420 qVar"s"))), 6421 Close 6422 (Var("v", 6423 CTy"CP15"), 6424 MB(MB(MU(Dest 6425 ("MVBAR", 6426 F32, 6427 Var("v", 6428 CTy"CP15")), 6429 qTy), 6430 Close 6431 (Var("v", 6432 F32), 6433 MU(Bop(Add, 6434 Var("v", 6435 F32), 6436 Var("vect_offset", 6437 F32)), 6438 qTy))), 6439 Close 6440 (Var("v", 6441 F32), 6442 Call 6443 ("BranchTo", 6444 ATy(qTy, 6445 PTy(uTy, 6446 qTy)), 6447 Var("v", 6448 F32))))))))))))))))))))))))))))))))))))))))))) 6449; 6450val TakeReset_def = Def 6451 ("TakeReset",AVar uTy, 6452 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 6453 Close 6454 (Var("v",CTy"PSR"), 6455 MB(MB(MB(MU(TP[Var("v",CTy"PSR"),LW(19,5)],qTy), 6456 Close 6457 (Var("v",PTy(CTy"PSR",FTy 5)), 6458 MU(Rupd("M",Var("v",PTy(CTy"PSR",FTy 5))),qTy))), 6459 Close 6460 (Var("v",CTy"PSR"), 6461 MW(Close 6462 (qVar"s",Rupd("CPSR",TP[qVar"s",Var("v",CTy"PSR")]))))), 6463 Close 6464 (AVar uTy, 6465 MB(Call("HaveSecurityExt",ATy(qTy,PTy(bTy,qTy)),LU), 6466 Close 6467 (bVar"v", 6468 MB(ITE(bVar"v", 6469 MB(MR(Close 6470 (qVar"s", 6471 Dest("CP15",CTy"CP15",qVar"s"))), 6472 Close 6473 (Var("v",CTy"CP15"), 6474 MB(MU(Dest 6475 ("SCR",CTy"SCR", 6476 Var("v",CTy"CP15")),qTy), 6477 Close 6478 (Var("x0",CTy"SCR"), 6479 MB(MR(Close 6480 (qVar"s", 6481 Dest 6482 ("CP15",CTy"CP15", 6483 qVar"s"))), 6484 Close 6485 (Var("v",CTy"CP15"), 6486 MB(MB(MU(TP[Var("v", 6487 CTy"CP15"), 6488 Rupd 6489 ("NS", 6490 TP[Var("x0", 6491 CTy"SCR"), 6492 LF])],qTy), 6493 Close 6494 (Var("v", 6495 PTy(CTy"CP15", 6496 CTy"SCR")), 6497 MU(Rupd 6498 ("SCR", 6499 Var("v", 6500 PTy(CTy"CP15", 6501 CTy"SCR"))), 6502 qTy))), 6503 Close 6504 (Var("v",CTy"CP15"), 6505 MW(Close 6506 (qVar"s", 6507 Rupd 6508 ("CP15", 6509 TP[qVar"s", 6510 Var("v", 6511 CTy"CP15")]))))))))))), 6512 MU(LU,qTy)), 6513 Close 6514 (AVar uTy, 6515 MB(MR(Close 6516 (qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 6517 Close 6518 (Var("v",CTy"PSR"), 6519 MB(MB(MB(MU(TP[Var("v",CTy"PSR"),LT],qTy), 6520 Close 6521 (Var("v",PTy(CTy"PSR",bTy)), 6522 MU(Rupd 6523 ("I", 6524 Var("v", 6525 PTy(CTy"PSR",bTy))), 6526 qTy))), 6527 Close 6528 (Var("v",CTy"PSR"), 6529 MW(Close 6530 (qVar"s", 6531 Rupd 6532 ("CPSR", 6533 TP[qVar"s", 6534 Var("v",CTy"PSR")]))))), 6535 Close 6536 (AVar uTy, 6537 MB(MR(Close 6538 (qVar"s", 6539 Dest 6540 ("CPSR",CTy"PSR",qVar"s"))), 6541 Close 6542 (Var("v",CTy"PSR"), 6543 MB(MB(MB(MU(TP[Var("v", 6544 CTy"PSR"), 6545 LT],qTy), 6546 Close 6547 (Var("v", 6548 PTy(CTy"PSR", 6549 bTy)), 6550 MU(Rupd 6551 ("F", 6552 Var("v", 6553 PTy(CTy"PSR", 6554 bTy))), 6555 qTy))), 6556 Close 6557 (Var("v",CTy"PSR"), 6558 MW(Close 6559 (qVar"s", 6560 Rupd 6561 ("CPSR", 6562 TP[qVar"s", 6563 Var("v", 6564 CTy"PSR")]))))), 6565 Close 6566 (AVar uTy, 6567 MB(MR(Close 6568 (qVar"s", 6569 Dest 6570 ("CPSR", 6571 CTy"PSR", 6572 qVar"s"))), 6573 Close 6574 (Var("v",CTy"PSR"), 6575 MB(MB(MB(MU(TP[Var("v", 6576 CTy"PSR"), 6577 LT], 6578 qTy), 6579 Close 6580 (Var("v", 6581 PTy(CTy"PSR", 6582 bTy)), 6583 MU(Rupd 6584 ("A", 6585 Var("v", 6586 PTy(CTy"PSR", 6587 bTy))), 6588 qTy))), 6589 Close 6590 (Var("v", 6591 CTy"PSR"), 6592 MW(Close 6593 (qVar"s", 6594 Rupd 6595 ("CPSR", 6596 TP[qVar"s", 6597 Var("v", 6598 CTy"PSR")]))))), 6599 Close 6600 (AVar uTy, 6601 MB(MR(Close 6602 (qVar"s", 6603 Dest 6604 ("CPSR", 6605 CTy"PSR", 6606 qVar"s"))), 6607 Close 6608 (Var("v", 6609 CTy"PSR"), 6610 MB(MB(MB(MU(TP[Var("v", 6611 CTy"PSR"), 6612 LW(0, 6613 8)], 6614 qTy), 6615 Close 6616 (Var("v", 6617 PTy(CTy"PSR", 6618 F8)), 6619 MU(Rupd 6620 ("IT", 6621 Var("v", 6622 PTy(CTy"PSR", 6623 F8))), 6624 qTy))), 6625 Close 6626 (Var("v", 6627 CTy"PSR"), 6628 MW(Close 6629 (qVar"s", 6630 Rupd 6631 ("CPSR", 6632 TP[qVar"s", 6633 Var("v", 6634 CTy"PSR")]))))), 6635 Close 6636 (AVar 6637 uTy, 6638 MB(MR(Close 6639 (qVar"s", 6640 Dest 6641 ("CPSR", 6642 CTy"PSR", 6643 qVar"s"))), 6644 Close 6645 (Var("v", 6646 CTy"PSR"), 6647 MB(MB(MB(MU(TP[Var("v", 6648 CTy"PSR"), 6649 LF], 6650 qTy), 6651 Close 6652 (Var("v", 6653 PTy(CTy"PSR", 6654 bTy)), 6655 MU(Rupd 6656 ("J", 6657 Var("v", 6658 PTy(CTy"PSR", 6659 bTy))), 6660 qTy))), 6661 Close 6662 (Var("v", 6663 CTy"PSR"), 6664 MW(Close 6665 (qVar"s", 6666 Rupd 6667 ("CPSR", 6668 TP[qVar"s", 6669 Var("v", 6670 CTy"PSR")]))))), 6671 Close 6672 (AVar 6673 uTy, 6674 MB(MR(Close 6675 (qVar"s", 6676 Dest 6677 ("CPSR", 6678 CTy"PSR", 6679 qVar"s"))), 6680 Close 6681 (Var("v", 6682 CTy"PSR"), 6683 MB(MB(MB(MB(MR(Close 6684 (qVar"s", 6685 Dest 6686 ("CP15", 6687 CTy"CP15", 6688 qVar"s"))), 6689 Close 6690 (Var("v0", 6691 CTy"CP15"), 6692 MB(MB(MU(Dest 6693 ("SCTLR", 6694 CTy"SCTLR", 6695 Var("v0", 6696 CTy"CP15")), 6697 qTy), 6698 Close 6699 (Var("v", 6700 CTy"SCTLR"), 6701 MU(Dest 6702 ("TE", 6703 bTy, 6704 Var("v", 6705 CTy"SCTLR")), 6706 qTy))), 6707 Close 6708 (bVar"v0", 6709 MU(TP[Var("v", 6710 CTy"PSR"), 6711 bVar"v0"], 6712 qTy))))), 6713 Close 6714 (Var("v", 6715 PTy(CTy"PSR", 6716 bTy)), 6717 MU(Rupd 6718 ("T", 6719 Var("v", 6720 PTy(CTy"PSR", 6721 bTy))), 6722 qTy))), 6723 Close 6724 (Var("v", 6725 CTy"PSR"), 6726 MW(Close 6727 (qVar"s", 6728 Rupd 6729 ("CPSR", 6730 TP[qVar"s", 6731 Var("v", 6732 CTy"PSR")]))))), 6733 Close 6734 (AVar 6735 uTy, 6736 MB(MR(Close 6737 (qVar"s", 6738 Dest 6739 ("CPSR", 6740 CTy"PSR", 6741 qVar"s"))), 6742 Close 6743 (Var("v", 6744 CTy"PSR"), 6745 MB(MB(MB(MB(MR(Close 6746 (qVar"s", 6747 Dest 6748 ("CP15", 6749 CTy"CP15", 6750 qVar"s"))), 6751 Close 6752 (Var("v0", 6753 CTy"CP15"), 6754 MB(MB(MU(Dest 6755 ("SCTLR", 6756 CTy"SCTLR", 6757 Var("v0", 6758 CTy"CP15")), 6759 qTy), 6760 Close 6761 (Var("v", 6762 CTy"SCTLR"), 6763 MU(Dest 6764 ("EE", 6765 bTy, 6766 Var("v", 6767 CTy"SCTLR")), 6768 qTy))), 6769 Close 6770 (bVar"v0", 6771 MU(TP[Var("v", 6772 CTy"PSR"), 6773 bVar"v0"], 6774 qTy))))), 6775 Close 6776 (Var("v", 6777 PTy(CTy"PSR", 6778 bTy)), 6779 MU(Rupd 6780 ("E", 6781 Var("v", 6782 PTy(CTy"PSR", 6783 bTy))), 6784 qTy))), 6785 Close 6786 (Var("v", 6787 CTy"PSR"), 6788 MW(Close 6789 (qVar"s", 6790 Rupd 6791 ("CPSR", 6792 TP[qVar"s", 6793 Var("v", 6794 CTy"PSR")]))))), 6795 Close 6796 (AVar 6797 uTy, 6798 MB(Call 6799 ("ExcVectorBase", 6800 ATy(qTy, 6801 PTy(F32, 6802 qTy)), 6803 LU), 6804 Close 6805 (Var("v", 6806 F32), 6807 MB(MU(Bop(Add, 6808 Var("v", 6809 F32), 6810 LW(0, 6811 32)), 6812 qTy), 6813 Close 6814 (Var("v", 6815 F32), 6816 Call 6817 ("BranchTo", 6818 ATy(qTy, 6819 PTy(uTy, 6820 qTy)), 6821 Var("v", 6822 F32))))))))))))))))))))))))))))))))))))))))))) 6823; 6824val TakeUndefInstrException_def = Def 6825 ("TakeUndefInstrException",AVar uTy, 6826 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 6827 Close 6828 (Var("v",CTy"PSR"), 6829 MB(MB(MU(Dest("T",bTy,Var("v",CTy"PSR")),qTy), 6830 Close 6831 (bVar"b", 6832 ITE(bVar"b", 6833 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 6834 Close 6835 (Var("v",F32), 6836 MU(Bop(Sub,Var("v",F32),LW(2,32)),qTy))), 6837 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 6838 Close 6839 (Var("v",F32), 6840 MU(Bop(Sub,Var("v",F32),LW(4,32)),qTy)))))), 6841 Close 6842 (Var("new_lr_value",F32), 6843 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 6844 Close 6845 (Var("new_spsr_value",CTy"PSR"), 6846 Let(Var("vect_offset",F32),LW(4,32), 6847 MB(Call("HaveVirtExt",ATy(qTy,PTy(bTy,qTy)),LU), 6848 Close 6849 (bVar"v", 6850 MB(MB(MB(ITE(bVar"v", 6851 Call 6852 ("HaveSecurityExt", 6853 ATy(qTy,PTy(bTy,qTy)),LU), 6854 MU(LF,qTy)), 6855 Close 6856 (bVar"b", 6857 ITE(bVar"b", 6858 MB(MR(Close 6859 (qVar"s", 6860 Dest 6861 ("CP15", 6862 CTy"CP15", 6863 qVar"s"))), 6864 Close 6865 (Var("v",CTy"CP15"), 6866 MB(MU(Dest 6867 ("SCR", 6868 CTy"SCR", 6869 Var("v", 6870 CTy"CP15")), 6871 qTy), 6872 Close 6873 (Var("v", 6874 CTy"SCR"), 6875 MU(Dest 6876 ("NS",bTy, 6877 Var("v", 6878 CTy"SCR")), 6879 qTy))))), 6880 MU(LF,qTy)))), 6881 Close 6882 (bVar"b", 6883 ITE(bVar"b", 6884 MB(MR(Close 6885 (qVar"s", 6886 Dest 6887 ("CPSR",CTy"PSR", 6888 qVar"s"))), 6889 Close 6890 (Var("v",CTy"PSR"), 6891 MB(MU(Dest 6892 ("M",FTy 5, 6893 Var("v", 6894 CTy"PSR")), 6895 qTy), 6896 Close 6897 (Var("v",FTy 5), 6898 MU(EQ(Var("v", 6899 FTy 5), 6900 LW(26,5)), 6901 qTy))))), 6902 MU(LF,qTy)))), 6903 Close 6904 (bVar"take_to_hyp", 6905 MB(Call 6906 ("HaveVirtExt", 6907 ATy(qTy,PTy(bTy,qTy)),LU), 6908 Close 6909 (bVar"v", 6910 MB(MB(MB(MB(ITE(bVar"v", 6911 Call 6912 ("HaveSecurityExt", 6913 ATy(qTy, 6914 PTy(bTy, 6915 qTy)), 6916 LU), 6917 MU(LF,qTy)), 6918 Close 6919 (bVar"b", 6920 ITE(bVar"b", 6921 MB(Call 6922 ("IsSecure", 6923 ATy(qTy, 6924 PTy(bTy, 6925 qTy)), 6926 LU), 6927 Close 6928 (bVar"v", 6929 MU(Mop(Not, 6930 bVar"v"), 6931 qTy))), 6932 MU(LF,qTy)))), 6933 Close 6934 (bVar"b", 6935 ITE(bVar"b", 6936 MB(MR(Close 6937 (qVar"s", 6938 Dest 6939 ("CP15", 6940 CTy"CP15", 6941 qVar"s"))), 6942 Close 6943 (Var("v", 6944 CTy"CP15"), 6945 MB(MU(Dest 6946 ("HCR", 6947 CTy"HCR", 6948 Var("v", 6949 CTy"CP15")), 6950 qTy), 6951 Close 6952 (Var("v", 6953 CTy"HCR"), 6954 MU(Dest 6955 ("TGE", 6956 bTy, 6957 Var("v", 6958 CTy"HCR")), 6959 qTy))))), 6960 MU(LF,qTy)))), 6961 Close 6962 (bVar"b", 6963 ITE(bVar"b", 6964 MB(MR(Close 6965 (qVar"s", 6966 Dest 6967 ("CPSR", 6968 CTy"PSR", 6969 qVar"s"))), 6970 Close 6971 (Var("v", 6972 CTy"PSR"), 6973 MB(MU(Dest 6974 ("M", 6975 FTy 5, 6976 Var("v", 6977 CTy"PSR")), 6978 qTy), 6979 Close 6980 (Var("v", 6981 FTy 5), 6982 MU(EQ(Var("v", 6983 FTy 5), 6984 LW(16, 6985 5)), 6986 qTy))))), 6987 MU(LF,qTy)))), 6988 Close 6989 (bVar"route_to_hyp", 6990 MB(MR(Close 6991 (qVar"s", 6992 Dest 6993 ("CPSR", 6994 CTy"PSR", 6995 qVar"s"))), 6996 Close 6997 (Var("v",CTy"PSR"), 6998 MB(MB(MU(Dest 6999 ("T", 7000 bTy, 7001 Var("v", 7002 CTy"PSR")), 7003 qTy), 7004 Close 7005 (bVar"b", 7006 MU(ITE(bVar"b", 7007 LW(2, 7008 32), 7009 LW(4, 7010 32)), 7011 qTy))), 7012 Close 7013 (Var("return_offset", 7014 F32), 7015 Let(Var("preferred_exceptn_return", 7016 F32), 7017 Bop(Sub, 7018 Var("new_lr_value", 7019 F32), 7020 Var("return_offset", 7021 F32)), 7022 ITB([(bVar"take_to_hyp", 7023 Call 7024 ("EnterHypMode", 7025 ATy(qTy, 7026 PTy(uTy, 7027 qTy)), 7028 TP[Var("new_spsr_value", 7029 CTy"PSR"), 7030 Var("preferred_exceptn_return", 7031 F32), 7032 Var("vect_offset", 7033 F32)])), 7034 (bVar"route_to_hyp", 7035 Call 7036 ("EnterHypMode", 7037 ATy(qTy, 7038 PTy(uTy, 7039 qTy)), 7040 TP[Var("new_spsr_value", 7041 CTy"PSR"), 7042 Var("preferred_exceptn_return", 7043 F32), 7044 LW(20, 7045 32)]))], 7046 MB(MR(Close 7047 (qVar"s", 7048 Dest 7049 ("CPSR", 7050 CTy"PSR", 7051 qVar"s"))), 7052 Close 7053 (Var("v", 7054 CTy"PSR"), 7055 MB(MB(MB(MU(Dest 7056 ("M", 7057 FTy 5, 7058 Var("v", 7059 CTy"PSR")), 7060 qTy), 7061 Close 7062 (Var("v", 7063 FTy 5), 7064 MU(EQ(Var("v", 7065 FTy 5), 7066 LW(22, 7067 5)), 7068 qTy))), 7069 Close 7070 (bVar"b", 7071 ITE(bVar"b", 7072 MB(MR(Close 7073 (qVar"s", 7074 Dest 7075 ("CP15", 7076 CTy"CP15", 7077 qVar"s"))), 7078 Close 7079 (Var("v", 7080 CTy"CP15"), 7081 MB(MU(Dest 7082 ("SCR", 7083 CTy"SCR", 7084 Var("v", 7085 CTy"CP15")), 7086 qTy), 7087 Close 7088 (Var("x0", 7089 CTy"SCR"), 7090 MB(MR(Close 7091 (qVar"s", 7092 Dest 7093 ("CP15", 7094 CTy"CP15", 7095 qVar"s"))), 7096 Close 7097 (Var("v", 7098 CTy"CP15"), 7099 MB(MB(MU(TP[Var("v", 7100 CTy"CP15"), 7101 Rupd 7102 ("NS", 7103 TP[Var("x0", 7104 CTy"SCR"), 7105 LF])], 7106 qTy), 7107 Close 7108 (Var("v", 7109 PTy(CTy"CP15", 7110 CTy"SCR")), 7111 MU(Rupd 7112 ("SCR", 7113 Var("v", 7114 PTy(CTy"CP15", 7115 CTy"SCR"))), 7116 qTy))), 7117 Close 7118 (Var("v", 7119 CTy"CP15"), 7120 MW(Close 7121 (qVar"s", 7122 Rupd 7123 ("CP15", 7124 TP[qVar"s", 7125 Var("v", 7126 CTy"CP15")]))))))))))), 7127 MU(LU, 7128 qTy)))), 7129 Close 7130 (AVar 7131 uTy, 7132 MB(MR(Close 7133 (qVar"s", 7134 Dest 7135 ("CPSR", 7136 CTy"PSR", 7137 qVar"s"))), 7138 Close 7139 (Var("v", 7140 CTy"PSR"), 7141 MB(MB(MB(MU(TP[Var("v", 7142 CTy"PSR"), 7143 LW(27, 7144 5)], 7145 qTy), 7146 Close 7147 (Var("v", 7148 PTy(CTy"PSR", 7149 FTy 5)), 7150 MU(Rupd 7151 ("M", 7152 Var("v", 7153 PTy(CTy"PSR", 7154 FTy 5))), 7155 qTy))), 7156 Close 7157 (Var("v", 7158 CTy"PSR"), 7159 MW(Close 7160 (qVar"s", 7161 Rupd 7162 ("CPSR", 7163 TP[qVar"s", 7164 Var("v", 7165 CTy"PSR")]))))), 7166 Close 7167 (AVar 7168 uTy, 7169 MB(Call 7170 ("write'SPSR", 7171 ATy(qTy, 7172 PTy(uTy, 7173 qTy)), 7174 Var("new_spsr_value", 7175 CTy"PSR")), 7176 Close 7177 (AVar 7178 uTy, 7179 MB(Call 7180 ("write'R", 7181 ATy(qTy, 7182 PTy(uTy, 7183 qTy)), 7184 TP[Var("new_lr_value", 7185 F32), 7186 LW(14, 7187 4)]), 7188 Close 7189 (AVar 7190 uTy, 7191 MB(MR(Close 7192 (qVar"s", 7193 Dest 7194 ("CPSR", 7195 CTy"PSR", 7196 qVar"s"))), 7197 Close 7198 (Var("v", 7199 CTy"PSR"), 7200 MB(MB(MB(MU(TP[Var("v", 7201 CTy"PSR"), 7202 LT], 7203 qTy), 7204 Close 7205 (Var("v", 7206 PTy(CTy"PSR", 7207 bTy)), 7208 MU(Rupd 7209 ("I", 7210 Var("v", 7211 PTy(CTy"PSR", 7212 bTy))), 7213 qTy))), 7214 Close 7215 (Var("v", 7216 CTy"PSR"), 7217 MW(Close 7218 (qVar"s", 7219 Rupd 7220 ("CPSR", 7221 TP[qVar"s", 7222 Var("v", 7223 CTy"PSR")]))))), 7224 Close 7225 (AVar 7226 uTy, 7227 MB(MR(Close 7228 (qVar"s", 7229 Dest 7230 ("CPSR", 7231 CTy"PSR", 7232 qVar"s"))), 7233 Close 7234 (Var("v", 7235 CTy"PSR"), 7236 MB(MB(MB(MU(TP[Var("v", 7237 CTy"PSR"), 7238 LW(0, 7239 8)], 7240 qTy), 7241 Close 7242 (Var("v", 7243 PTy(CTy"PSR", 7244 F8)), 7245 MU(Rupd 7246 ("IT", 7247 Var("v", 7248 PTy(CTy"PSR", 7249 F8))), 7250 qTy))), 7251 Close 7252 (Var("v", 7253 CTy"PSR"), 7254 MW(Close 7255 (qVar"s", 7256 Rupd 7257 ("CPSR", 7258 TP[qVar"s", 7259 Var("v", 7260 CTy"PSR")]))))), 7261 Close 7262 (AVar 7263 uTy, 7264 MB(MR(Close 7265 (qVar"s", 7266 Dest 7267 ("CPSR", 7268 CTy"PSR", 7269 qVar"s"))), 7270 Close 7271 (Var("v", 7272 CTy"PSR"), 7273 MB(MB(MB(MU(TP[Var("v", 7274 CTy"PSR"), 7275 LF], 7276 qTy), 7277 Close 7278 (Var("v", 7279 PTy(CTy"PSR", 7280 bTy)), 7281 MU(Rupd 7282 ("J", 7283 Var("v", 7284 PTy(CTy"PSR", 7285 bTy))), 7286 qTy))), 7287 Close 7288 (Var("v", 7289 CTy"PSR"), 7290 MW(Close 7291 (qVar"s", 7292 Rupd 7293 ("CPSR", 7294 TP[qVar"s", 7295 Var("v", 7296 CTy"PSR")]))))), 7297 Close 7298 (AVar 7299 uTy, 7300 MB(MR(Close 7301 (qVar"s", 7302 Dest 7303 ("CPSR", 7304 CTy"PSR", 7305 qVar"s"))), 7306 Close 7307 (Var("v", 7308 CTy"PSR"), 7309 MB(MB(MB(MB(MR(Close 7310 (qVar"s", 7311 Dest 7312 ("CP15", 7313 CTy"CP15", 7314 qVar"s"))), 7315 Close 7316 (Var("v0", 7317 CTy"CP15"), 7318 MB(MB(MU(Dest 7319 ("SCTLR", 7320 CTy"SCTLR", 7321 Var("v0", 7322 CTy"CP15")), 7323 qTy), 7324 Close 7325 (Var("v", 7326 CTy"SCTLR"), 7327 MU(Dest 7328 ("TE", 7329 bTy, 7330 Var("v", 7331 CTy"SCTLR")), 7332 qTy))), 7333 Close 7334 (bVar"v0", 7335 MU(TP[Var("v", 7336 CTy"PSR"), 7337 bVar"v0"], 7338 qTy))))), 7339 Close 7340 (Var("v", 7341 PTy(CTy"PSR", 7342 bTy)), 7343 MU(Rupd 7344 ("T", 7345 Var("v", 7346 PTy(CTy"PSR", 7347 bTy))), 7348 qTy))), 7349 Close 7350 (Var("v", 7351 CTy"PSR"), 7352 MW(Close 7353 (qVar"s", 7354 Rupd 7355 ("CPSR", 7356 TP[qVar"s", 7357 Var("v", 7358 CTy"PSR")]))))), 7359 Close 7360 (AVar 7361 uTy, 7362 MB(MR(Close 7363 (qVar"s", 7364 Dest 7365 ("CPSR", 7366 CTy"PSR", 7367 qVar"s"))), 7368 Close 7369 (Var("v", 7370 CTy"PSR"), 7371 MB(MB(MB(MB(MR(Close 7372 (qVar"s", 7373 Dest 7374 ("CP15", 7375 CTy"CP15", 7376 qVar"s"))), 7377 Close 7378 (Var("v0", 7379 CTy"CP15"), 7380 MB(MB(MU(Dest 7381 ("SCTLR", 7382 CTy"SCTLR", 7383 Var("v0", 7384 CTy"CP15")), 7385 qTy), 7386 Close 7387 (Var("v", 7388 CTy"SCTLR"), 7389 MU(Dest 7390 ("EE", 7391 bTy, 7392 Var("v", 7393 CTy"SCTLR")), 7394 qTy))), 7395 Close 7396 (bVar"v0", 7397 MU(TP[Var("v", 7398 CTy"PSR"), 7399 bVar"v0"], 7400 qTy))))), 7401 Close 7402 (Var("v", 7403 PTy(CTy"PSR", 7404 bTy)), 7405 MU(Rupd 7406 ("E", 7407 Var("v", 7408 PTy(CTy"PSR", 7409 bTy))), 7410 qTy))), 7411 Close 7412 (Var("v", 7413 CTy"PSR"), 7414 MW(Close 7415 (qVar"s", 7416 Rupd 7417 ("CPSR", 7418 TP[qVar"s", 7419 Var("v", 7420 CTy"PSR")]))))), 7421 Close 7422 (AVar 7423 uTy, 7424 MB(Call 7425 ("ExcVectorBase", 7426 ATy(qTy, 7427 PTy(F32, 7428 qTy)), 7429 LU), 7430 Close 7431 (Var("v", 7432 F32), 7433 MB(MU(Bop(Add, 7434 Var("v", 7435 F32), 7436 Var("vect_offset", 7437 F32)), 7438 qTy), 7439 Close 7440 (Var("v", 7441 F32), 7442 Call 7443 ("BranchTo", 7444 ATy(qTy, 7445 PTy(uTy, 7446 qTy)), 7447 Var("v", 7448 F32)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 7449; 7450val TakeSVCException_def = Def 7451 ("TakeSVCException",AVar uTy, 7452 MB(Call("ITAdvance",ATy(qTy,PTy(uTy,qTy)),LU), 7453 Close 7454 (AVar uTy, 7455 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 7456 Close 7457 (Var("v",CTy"PSR"), 7458 MB(MB(MU(Dest("T",bTy,Var("v",CTy"PSR")),qTy), 7459 Close 7460 (bVar"b", 7461 ITE(bVar"b", 7462 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 7463 Close 7464 (Var("v",F32), 7465 MU(Bop(Sub,Var("v",F32),LW(2,32)),qTy))), 7466 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 7467 Close 7468 (Var("v",F32), 7469 MU(Bop(Sub,Var("v",F32),LW(4,32)),qTy)))))), 7470 Close 7471 (Var("new_lr_value",F32), 7472 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 7473 Close 7474 (Var("new_spsr_value",CTy"PSR"), 7475 Let(Var("vect_offset",F32),LW(8,32), 7476 MB(Call 7477 ("HaveVirtExt",ATy(qTy,PTy(bTy,qTy)), 7478 LU), 7479 Close 7480 (bVar"v", 7481 MB(MB(MB(ITE(bVar"v", 7482 Call 7483 ("HaveSecurityExt", 7484 ATy(qTy,PTy(bTy,qTy)), 7485 LU),MU(LF,qTy)), 7486 Close 7487 (bVar"b", 7488 ITE(bVar"b", 7489 MB(MR(Close 7490 (qVar"s", 7491 Dest 7492 ("CP15", 7493 CTy"CP15", 7494 qVar"s"))), 7495 Close 7496 (Var("v", 7497 CTy"CP15"), 7498 MB(MU(Dest 7499 ("SCR", 7500 CTy"SCR", 7501 Var("v", 7502 CTy"CP15")), 7503 qTy), 7504 Close 7505 (Var("v", 7506 CTy"SCR"), 7507 MU(Dest 7508 ("NS", 7509 bTy, 7510 Var("v", 7511 CTy"SCR")), 7512 qTy))))), 7513 MU(LF,qTy)))), 7514 Close 7515 (bVar"b", 7516 ITE(bVar"b", 7517 MB(MR(Close 7518 (qVar"s", 7519 Dest 7520 ("CPSR", 7521 CTy"PSR", 7522 qVar"s"))), 7523 Close 7524 (Var("v",CTy"PSR"), 7525 MB(MU(Dest 7526 ("M", 7527 FTy 5, 7528 Var("v", 7529 CTy"PSR")), 7530 qTy), 7531 Close 7532 (Var("v", 7533 FTy 5), 7534 MU(EQ(Var("v", 7535 FTy 5), 7536 LW(26, 7537 5)), 7538 qTy))))), 7539 MU(LF,qTy)))), 7540 Close 7541 (bVar"take_to_hyp", 7542 MB(Call 7543 ("HaveVirtExt", 7544 ATy(qTy,PTy(bTy,qTy)),LU), 7545 Close 7546 (bVar"v", 7547 MB(MB(MB(MB(ITE(bVar"v", 7548 Call 7549 ("HaveSecurityExt", 7550 ATy(qTy, 7551 PTy(bTy, 7552 qTy)), 7553 LU), 7554 MU(LF,qTy)), 7555 Close 7556 (bVar"b", 7557 ITE(bVar"b", 7558 MB(Call 7559 ("IsSecure", 7560 ATy(qTy, 7561 PTy(bTy, 7562 qTy)), 7563 LU), 7564 Close 7565 (bVar"v", 7566 MU(Mop(Not, 7567 bVar"v"), 7568 qTy))), 7569 MU(LF, 7570 qTy)))), 7571 Close 7572 (bVar"b", 7573 ITE(bVar"b", 7574 MB(MR(Close 7575 (qVar"s", 7576 Dest 7577 ("CP15", 7578 CTy"CP15", 7579 qVar"s"))), 7580 Close 7581 (Var("v", 7582 CTy"CP15"), 7583 MB(MU(Dest 7584 ("HCR", 7585 CTy"HCR", 7586 Var("v", 7587 CTy"CP15")), 7588 qTy), 7589 Close 7590 (Var("v", 7591 CTy"HCR"), 7592 MU(Dest 7593 ("TGE", 7594 bTy, 7595 Var("v", 7596 CTy"HCR")), 7597 qTy))))), 7598 MU(LF,qTy)))), 7599 Close 7600 (bVar"b", 7601 ITE(bVar"b", 7602 MB(MR(Close 7603 (qVar"s", 7604 Dest 7605 ("CPSR", 7606 CTy"PSR", 7607 qVar"s"))), 7608 Close 7609 (Var("v", 7610 CTy"PSR"), 7611 MB(MU(Dest 7612 ("M", 7613 FTy 5, 7614 Var("v", 7615 CTy"PSR")), 7616 qTy), 7617 Close 7618 (Var("v", 7619 FTy 5), 7620 MU(EQ(Var("v", 7621 FTy 5), 7622 LW(16, 7623 5)), 7624 qTy))))), 7625 MU(LF,qTy)))), 7626 Close 7627 (bVar"route_to_hyp", 7628 ITB([(bVar"take_to_hyp", 7629 Call 7630 ("EnterHypMode", 7631 ATy(qTy, 7632 PTy(uTy, 7633 qTy)), 7634 TP[Var("new_spsr_value", 7635 CTy"PSR"), 7636 Var("new_lr_value", 7637 F32), 7638 Var("vect_offset", 7639 F32)])), 7640 (bVar"route_to_hyp", 7641 Call 7642 ("EnterHypMode", 7643 ATy(qTy, 7644 PTy(uTy, 7645 qTy)), 7646 TP[Var("new_spsr_value", 7647 CTy"PSR"), 7648 Var("new_lr_value", 7649 F32), 7650 LW(20, 7651 32)]))], 7652 MB(MR(Close 7653 (qVar"s", 7654 Dest 7655 ("CPSR", 7656 CTy"PSR", 7657 qVar"s"))), 7658 Close 7659 (Var("v", 7660 CTy"PSR"), 7661 MB(MB(MB(MU(Dest 7662 ("M", 7663 FTy 5, 7664 Var("v", 7665 CTy"PSR")), 7666 qTy), 7667 Close 7668 (Var("v", 7669 FTy 5), 7670 MU(EQ(Var("v", 7671 FTy 5), 7672 LW(22, 7673 5)), 7674 qTy))), 7675 Close 7676 (bVar"b", 7677 ITE(bVar"b", 7678 MB(MR(Close 7679 (qVar"s", 7680 Dest 7681 ("CP15", 7682 CTy"CP15", 7683 qVar"s"))), 7684 Close 7685 (Var("v", 7686 CTy"CP15"), 7687 MB(MU(Dest 7688 ("SCR", 7689 CTy"SCR", 7690 Var("v", 7691 CTy"CP15")), 7692 qTy), 7693 Close 7694 (Var("x0", 7695 CTy"SCR"), 7696 MB(MR(Close 7697 (qVar"s", 7698 Dest 7699 ("CP15", 7700 CTy"CP15", 7701 qVar"s"))), 7702 Close 7703 (Var("v", 7704 CTy"CP15"), 7705 MB(MB(MU(TP[Var("v", 7706 CTy"CP15"), 7707 Rupd 7708 ("NS", 7709 TP[Var("x0", 7710 CTy"SCR"), 7711 LF])], 7712 qTy), 7713 Close 7714 (Var("v", 7715 PTy(CTy"CP15", 7716 CTy"SCR")), 7717 MU(Rupd 7718 ("SCR", 7719 Var("v", 7720 PTy(CTy"CP15", 7721 CTy"SCR"))), 7722 qTy))), 7723 Close 7724 (Var("v", 7725 CTy"CP15"), 7726 MW(Close 7727 (qVar"s", 7728 Rupd 7729 ("CP15", 7730 TP[qVar"s", 7731 Var("v", 7732 CTy"CP15")]))))))))))), 7733 MU(LU, 7734 qTy)))), 7735 Close 7736 (AVar 7737 uTy, 7738 MB(MR(Close 7739 (qVar"s", 7740 Dest 7741 ("CPSR", 7742 CTy"PSR", 7743 qVar"s"))), 7744 Close 7745 (Var("v", 7746 CTy"PSR"), 7747 MB(MB(MB(MU(TP[Var("v", 7748 CTy"PSR"), 7749 LW(19, 7750 5)], 7751 qTy), 7752 Close 7753 (Var("v", 7754 PTy(CTy"PSR", 7755 FTy 5)), 7756 MU(Rupd 7757 ("M", 7758 Var("v", 7759 PTy(CTy"PSR", 7760 FTy 5))), 7761 qTy))), 7762 Close 7763 (Var("v", 7764 CTy"PSR"), 7765 MW(Close 7766 (qVar"s", 7767 Rupd 7768 ("CPSR", 7769 TP[qVar"s", 7770 Var("v", 7771 CTy"PSR")]))))), 7772 Close 7773 (AVar 7774 uTy, 7775 MB(Call 7776 ("write'SPSR", 7777 ATy(qTy, 7778 PTy(uTy, 7779 qTy)), 7780 Var("new_spsr_value", 7781 CTy"PSR")), 7782 Close 7783 (AVar 7784 uTy, 7785 MB(Call 7786 ("write'R", 7787 ATy(qTy, 7788 PTy(uTy, 7789 qTy)), 7790 TP[Var("new_lr_value", 7791 F32), 7792 LW(14, 7793 4)]), 7794 Close 7795 (AVar 7796 uTy, 7797 MB(MR(Close 7798 (qVar"s", 7799 Dest 7800 ("CPSR", 7801 CTy"PSR", 7802 qVar"s"))), 7803 Close 7804 (Var("v", 7805 CTy"PSR"), 7806 MB(MB(MB(MU(TP[Var("v", 7807 CTy"PSR"), 7808 LT], 7809 qTy), 7810 Close 7811 (Var("v", 7812 PTy(CTy"PSR", 7813 bTy)), 7814 MU(Rupd 7815 ("I", 7816 Var("v", 7817 PTy(CTy"PSR", 7818 bTy))), 7819 qTy))), 7820 Close 7821 (Var("v", 7822 CTy"PSR"), 7823 MW(Close 7824 (qVar"s", 7825 Rupd 7826 ("CPSR", 7827 TP[qVar"s", 7828 Var("v", 7829 CTy"PSR")]))))), 7830 Close 7831 (AVar 7832 uTy, 7833 MB(MR(Close 7834 (qVar"s", 7835 Dest 7836 ("CPSR", 7837 CTy"PSR", 7838 qVar"s"))), 7839 Close 7840 (Var("v", 7841 CTy"PSR"), 7842 MB(MB(MB(MU(TP[Var("v", 7843 CTy"PSR"), 7844 LW(0, 7845 8)], 7846 qTy), 7847 Close 7848 (Var("v", 7849 PTy(CTy"PSR", 7850 F8)), 7851 MU(Rupd 7852 ("IT", 7853 Var("v", 7854 PTy(CTy"PSR", 7855 F8))), 7856 qTy))), 7857 Close 7858 (Var("v", 7859 CTy"PSR"), 7860 MW(Close 7861 (qVar"s", 7862 Rupd 7863 ("CPSR", 7864 TP[qVar"s", 7865 Var("v", 7866 CTy"PSR")]))))), 7867 Close 7868 (AVar 7869 uTy, 7870 MB(MR(Close 7871 (qVar"s", 7872 Dest 7873 ("CPSR", 7874 CTy"PSR", 7875 qVar"s"))), 7876 Close 7877 (Var("v", 7878 CTy"PSR"), 7879 MB(MB(MB(MU(TP[Var("v", 7880 CTy"PSR"), 7881 LF], 7882 qTy), 7883 Close 7884 (Var("v", 7885 PTy(CTy"PSR", 7886 bTy)), 7887 MU(Rupd 7888 ("J", 7889 Var("v", 7890 PTy(CTy"PSR", 7891 bTy))), 7892 qTy))), 7893 Close 7894 (Var("v", 7895 CTy"PSR"), 7896 MW(Close 7897 (qVar"s", 7898 Rupd 7899 ("CPSR", 7900 TP[qVar"s", 7901 Var("v", 7902 CTy"PSR")]))))), 7903 Close 7904 (AVar 7905 uTy, 7906 MB(MR(Close 7907 (qVar"s", 7908 Dest 7909 ("CPSR", 7910 CTy"PSR", 7911 qVar"s"))), 7912 Close 7913 (Var("v", 7914 CTy"PSR"), 7915 MB(MB(MB(MB(MR(Close 7916 (qVar"s", 7917 Dest 7918 ("CP15", 7919 CTy"CP15", 7920 qVar"s"))), 7921 Close 7922 (Var("v0", 7923 CTy"CP15"), 7924 MB(MB(MU(Dest 7925 ("SCTLR", 7926 CTy"SCTLR", 7927 Var("v0", 7928 CTy"CP15")), 7929 qTy), 7930 Close 7931 (Var("v", 7932 CTy"SCTLR"), 7933 MU(Dest 7934 ("TE", 7935 bTy, 7936 Var("v", 7937 CTy"SCTLR")), 7938 qTy))), 7939 Close 7940 (bVar"v0", 7941 MU(TP[Var("v", 7942 CTy"PSR"), 7943 bVar"v0"], 7944 qTy))))), 7945 Close 7946 (Var("v", 7947 PTy(CTy"PSR", 7948 bTy)), 7949 MU(Rupd 7950 ("T", 7951 Var("v", 7952 PTy(CTy"PSR", 7953 bTy))), 7954 qTy))), 7955 Close 7956 (Var("v", 7957 CTy"PSR"), 7958 MW(Close 7959 (qVar"s", 7960 Rupd 7961 ("CPSR", 7962 TP[qVar"s", 7963 Var("v", 7964 CTy"PSR")]))))), 7965 Close 7966 (AVar 7967 uTy, 7968 MB(MR(Close 7969 (qVar"s", 7970 Dest 7971 ("CPSR", 7972 CTy"PSR", 7973 qVar"s"))), 7974 Close 7975 (Var("v", 7976 CTy"PSR"), 7977 MB(MB(MB(MB(MR(Close 7978 (qVar"s", 7979 Dest 7980 ("CP15", 7981 CTy"CP15", 7982 qVar"s"))), 7983 Close 7984 (Var("v0", 7985 CTy"CP15"), 7986 MB(MB(MU(Dest 7987 ("SCTLR", 7988 CTy"SCTLR", 7989 Var("v0", 7990 CTy"CP15")), 7991 qTy), 7992 Close 7993 (Var("v", 7994 CTy"SCTLR"), 7995 MU(Dest 7996 ("EE", 7997 bTy, 7998 Var("v", 7999 CTy"SCTLR")), 8000 qTy))), 8001 Close 8002 (bVar"v0", 8003 MU(TP[Var("v", 8004 CTy"PSR"), 8005 bVar"v0"], 8006 qTy))))), 8007 Close 8008 (Var("v", 8009 PTy(CTy"PSR", 8010 bTy)), 8011 MU(Rupd 8012 ("E", 8013 Var("v", 8014 PTy(CTy"PSR", 8015 bTy))), 8016 qTy))), 8017 Close 8018 (Var("v", 8019 CTy"PSR"), 8020 MW(Close 8021 (qVar"s", 8022 Rupd 8023 ("CPSR", 8024 TP[qVar"s", 8025 Var("v", 8026 CTy"PSR")]))))), 8027 Close 8028 (AVar 8029 uTy, 8030 MB(Call 8031 ("ExcVectorBase", 8032 ATy(qTy, 8033 PTy(F32, 8034 qTy)), 8035 LU), 8036 Close 8037 (Var("v", 8038 F32), 8039 MB(MU(Bop(Add, 8040 Var("v", 8041 F32), 8042 Var("vect_offset", 8043 F32)), 8044 qTy), 8045 Close 8046 (Var("v", 8047 F32), 8048 Call 8049 ("BranchTo", 8050 ATy(qTy, 8051 PTy(uTy, 8052 qTy)), 8053 Var("v", 8054 F32))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 8055; 8056val TakeSMCException_def = Def 8057 ("TakeSMCException",AVar uTy, 8058 MB(Call("ITAdvance",ATy(qTy,PTy(uTy,qTy)),LU), 8059 Close 8060 (AVar uTy, 8061 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 8062 Close 8063 (Var("v",CTy"PSR"), 8064 MB(MB(MU(Dest("T",bTy,Var("v",CTy"PSR")),qTy), 8065 Close 8066 (bVar"b", 8067 ITE(bVar"b",Const("PC",ATy(qTy,PTy(F32,qTy))), 8068 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 8069 Close 8070 (Var("v",F32), 8071 MU(Bop(Sub,Var("v",F32),LW(4,32)),qTy)))))), 8072 Close 8073 (Var("new_lr_value",F32), 8074 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 8075 Close 8076 (Var("new_spsr_value",CTy"PSR"), 8077 MB(MR(Close 8078 (qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 8079 Close 8080 (Var("v",CTy"PSR"), 8081 MB(MB(MB(MU(Dest 8082 ("M",FTy 5, 8083 Var("v",CTy"PSR")),qTy), 8084 Close 8085 (Var("v",FTy 5), 8086 MU(EQ(Var("v",FTy 5),LW(22,5)), 8087 qTy))), 8088 Close 8089 (bVar"b", 8090 ITE(bVar"b", 8091 MB(MR(Close 8092 (qVar"s", 8093 Dest 8094 ("CP15", 8095 CTy"CP15", 8096 qVar"s"))), 8097 Close 8098 (Var("v",CTy"CP15"), 8099 MB(MU(Dest 8100 ("SCR", 8101 CTy"SCR", 8102 Var("v", 8103 CTy"CP15")), 8104 qTy), 8105 Close 8106 (Var("x0", 8107 CTy"SCR"), 8108 MB(MR(Close 8109 (qVar"s", 8110 Dest 8111 ("CP15", 8112 CTy"CP15", 8113 qVar"s"))), 8114 Close 8115 (Var("v", 8116 CTy"CP15"), 8117 MB(MB(MU(TP[Var("v", 8118 CTy"CP15"), 8119 Rupd 8120 ("NS", 8121 TP[Var("x0", 8122 CTy"SCR"), 8123 LF])], 8124 qTy), 8125 Close 8126 (Var("v", 8127 PTy(CTy"CP15", 8128 CTy"SCR")), 8129 MU(Rupd 8130 ("SCR", 8131 Var("v", 8132 PTy(CTy"CP15", 8133 CTy"SCR"))), 8134 qTy))), 8135 Close 8136 (Var("v", 8137 CTy"CP15"), 8138 MW(Close 8139 (qVar"s", 8140 Rupd 8141 ("CP15", 8142 TP[qVar"s", 8143 Var("v", 8144 CTy"CP15")]))))))))))), 8145 MU(LU,qTy)))), 8146 Close 8147 (AVar uTy, 8148 MB(MR(Close 8149 (qVar"s", 8150 Dest 8151 ("CPSR",CTy"PSR",qVar"s"))), 8152 Close 8153 (Var("v",CTy"PSR"), 8154 MB(MB(MB(MU(TP[Var("v", 8155 CTy"PSR"), 8156 LW(22,5)],qTy), 8157 Close 8158 (Var("v", 8159 PTy(CTy"PSR", 8160 FTy 5)), 8161 MU(Rupd 8162 ("M", 8163 Var("v", 8164 PTy(CTy"PSR", 8165 FTy 5))), 8166 qTy))), 8167 Close 8168 (Var("v",CTy"PSR"), 8169 MW(Close 8170 (qVar"s", 8171 Rupd 8172 ("CPSR", 8173 TP[qVar"s", 8174 Var("v", 8175 CTy"PSR")]))))), 8176 Close 8177 (AVar uTy, 8178 Call 8179 ("EnterMonitorMode", 8180 ATy(qTy,PTy(uTy,qTy)), 8181 TP[Var("new_spsr_value", 8182 CTy"PSR"), 8183 Var("new_lr_value", 8184 F32),LW(8,32)])))))))))))))))))) 8185; 8186val TakeHVCException_def = Def 8187 ("TakeHVCException",AVar uTy, 8188 MB(Call("ITAdvance",ATy(qTy,PTy(uTy,qTy)),LU), 8189 Close 8190 (AVar uTy, 8191 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 8192 Close 8193 (Var("v",CTy"PSR"), 8194 MB(MB(MU(Dest("T",bTy,Var("v",CTy"PSR")),qTy), 8195 Close 8196 (bVar"b", 8197 ITE(bVar"b",Const("PC",ATy(qTy,PTy(F32,qTy))), 8198 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 8199 Close 8200 (Var("v",F32), 8201 MU(Bop(Sub,Var("v",F32),LW(4,32)),qTy)))))), 8202 Close 8203 (Var("preferred_exceptn_return",F32), 8204 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 8205 Close 8206 (Var("new_spsr_value",CTy"PSR"), 8207 MB(MR(Close 8208 (qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 8209 Close 8210 (Var("v",CTy"PSR"), 8211 MB(MB(MU(Dest 8212 ("M",FTy 5,Var("v",CTy"PSR")), 8213 qTy), 8214 Close 8215 (Var("v",FTy 5), 8216 MU(EQ(Var("v",FTy 5),LW(26,5)), 8217 qTy))), 8218 Close 8219 (bVar"b", 8220 ITE(bVar"b", 8221 Call 8222 ("EnterHypMode", 8223 ATy(qTy,PTy(uTy,qTy)), 8224 TP[Var("new_spsr_value", 8225 CTy"PSR"), 8226 Var("preferred_exceptn_return", 8227 F32),LW(8,32)]), 8228 Call 8229 ("EnterHypMode", 8230 ATy(qTy,PTy(uTy,qTy)), 8231 TP[Var("new_spsr_value", 8232 CTy"PSR"), 8233 Var("preferred_exceptn_return", 8234 F32),LW(20,32)]))))))))))))))) 8235; 8236val TakeDataAbortException_def = Def 8237 ("TakeDataAbortException",AVar uTy, 8238 MB(MW(Close(qVar"s",Rupd("data_abort",TP[qVar"s",LF]))), 8239 Close 8240 (AVar uTy, 8241 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 8242 Close 8243 (Var("v",CTy"PSR"), 8244 MB(MB(MU(Dest("T",bTy,Var("v",CTy"PSR")),qTy), 8245 Close 8246 (bVar"b", 8247 ITE(bVar"b", 8248 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 8249 Close 8250 (Var("v",F32), 8251 MU(Bop(Add,Var("v",F32),LW(4,32)),qTy))), 8252 Const("PC",ATy(qTy,PTy(F32,qTy)))))), 8253 Close 8254 (Var("new_lr_value",F32), 8255 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 8256 Close 8257 (Var("new_spsr_value",CTy"PSR"), 8258 Let(Var("vect_offset",F32),LW(16,32), 8259 Let(Var("preferred_exceptn_return",F32), 8260 Bop(Sub,Var("new_lr_value",F32), 8261 LW(8,32)), 8262 MB(Call 8263 ("HaveSecurityExt", 8264 ATy(qTy,PTy(bTy,qTy)),LU), 8265 Close 8266 (bVar"v", 8267 MB(MB(ITE(bVar"v", 8268 MB(MR(Close 8269 (qVar"s", 8270 Dest 8271 ("CP15", 8272 CTy"CP15", 8273 qVar"s"))), 8274 Close 8275 (Var("v",CTy"CP15"), 8276 MB(MU(Dest 8277 ("SCR", 8278 CTy"SCR", 8279 Var("v", 8280 CTy"CP15")), 8281 qTy), 8282 Close 8283 (Var("v", 8284 CTy"SCR"), 8285 MU(Dest 8286 ("EA", 8287 bTy, 8288 Var("v", 8289 CTy"SCR")), 8290 qTy))))), 8291 MU(LF,qTy)), 8292 Close 8293 (bVar"b", 8294 ITE(bVar"b", 8295 Call 8296 ("IsExternalAbort", 8297 ATy(qTy, 8298 PTy(bTy,qTy)), 8299 LU),MU(LF,qTy)))), 8300 Close 8301 (bVar"route_to_monitor", 8302 MB(Call 8303 ("HaveVirtExt", 8304 ATy(qTy,PTy(bTy,qTy)), 8305 LU), 8306 Close 8307 (bVar"v", 8308 MB(MB(MB(ITE(bVar"v", 8309 Call 8310 ("HaveSecurityExt", 8311 ATy(qTy, 8312 PTy(bTy, 8313 qTy)), 8314 LU), 8315 MU(LF, 8316 qTy)), 8317 Close 8318 (bVar"b", 8319 ITE(bVar"b", 8320 MB(MR(Close 8321 (qVar"s", 8322 Dest 8323 ("CP15", 8324 CTy"CP15", 8325 qVar"s"))), 8326 Close 8327 (Var("v", 8328 CTy"CP15"), 8329 MB(MU(Dest 8330 ("SCR", 8331 CTy"SCR", 8332 Var("v", 8333 CTy"CP15")), 8334 qTy), 8335 Close 8336 (Var("v", 8337 CTy"SCR"), 8338 MU(Dest 8339 ("NS", 8340 bTy, 8341 Var("v", 8342 CTy"SCR")), 8343 qTy))))), 8344 MU(LF, 8345 qTy)))), 8346 Close 8347 (bVar"b", 8348 ITE(bVar"b", 8349 MB(MR(Close 8350 (qVar"s", 8351 Dest 8352 ("CPSR", 8353 CTy"PSR", 8354 qVar"s"))), 8355 Close 8356 (Var("v", 8357 CTy"PSR"), 8358 MB(MU(Dest 8359 ("M", 8360 FTy 5, 8361 Var("v", 8362 CTy"PSR")), 8363 qTy), 8364 Close 8365 (Var("v", 8366 FTy 5), 8367 MU(EQ(Var("v", 8368 FTy 5), 8369 LW(26, 8370 5)), 8371 qTy))))), 8372 MU(LF, 8373 qTy)))), 8374 Close 8375 (bVar"take_to_hyp", 8376 MB(ITB([(bVar"route_to_monitor", 8377 MB(MR(Close 8378 (qVar"s", 8379 Dest 8380 ("CPSR", 8381 CTy"PSR", 8382 qVar"s"))), 8383 Close 8384 (Var("v", 8385 CTy"PSR"), 8386 MB(MB(MB(MU(Dest 8387 ("M", 8388 FTy 5, 8389 Var("v", 8390 CTy"PSR")), 8391 qTy), 8392 Close 8393 (Var("v", 8394 FTy 5), 8395 MU(EQ(Var("v", 8396 FTy 5), 8397 LW(22, 8398 5)), 8399 qTy))), 8400 Close 8401 (bVar"b", 8402 ITE(bVar"b", 8403 MB(MR(Close 8404 (qVar"s", 8405 Dest 8406 ("CP15", 8407 CTy"CP15", 8408 qVar"s"))), 8409 Close 8410 (Var("v", 8411 CTy"CP15"), 8412 MB(MU(Dest 8413 ("SCR", 8414 CTy"SCR", 8415 Var("v", 8416 CTy"CP15")), 8417 qTy), 8418 Close 8419 (Var("x0", 8420 CTy"SCR"), 8421 MB(MR(Close 8422 (qVar"s", 8423 Dest 8424 ("CP15", 8425 CTy"CP15", 8426 qVar"s"))), 8427 Close 8428 (Var("v", 8429 CTy"CP15"), 8430 MB(MB(MU(TP[Var("v", 8431 CTy"CP15"), 8432 Rupd 8433 ("NS", 8434 TP[Var("x0", 8435 CTy"SCR"), 8436 LF])], 8437 qTy), 8438 Close 8439 (Var("v", 8440 PTy(CTy"CP15", 8441 CTy"SCR")), 8442 MU(Rupd 8443 ("SCR", 8444 Var("v", 8445 PTy(CTy"CP15", 8446 CTy"SCR"))), 8447 qTy))), 8448 Close 8449 (Var("v", 8450 CTy"CP15"), 8451 MW(Close 8452 (qVar"s", 8453 Rupd 8454 ("CP15", 8455 TP[qVar"s", 8456 Var("v", 8457 CTy"CP15")]))))))))))), 8458 MU(LU, 8459 qTy)))), 8460 Close 8461 (AVar 8462 uTy, 8463 Call 8464 ("EnterMonitorMode", 8465 ATy(qTy, 8466 PTy(uTy, 8467 qTy)), 8468 TP[Var("new_spsr_value", 8469 CTy"PSR"), 8470 Var("new_lr_value", 8471 F32), 8472 Var("vect_offset", 8473 F32)])))))), 8474 (bVar"take_to_hyp", 8475 Call 8476 ("EnterHypMode", 8477 ATy(qTy, 8478 PTy(uTy, 8479 qTy)), 8480 TP[Var("new_spsr_value", 8481 CTy"PSR"), 8482 Var("preferred_exceptn_return", 8483 F32), 8484 Var("vect_offset", 8485 F32)])), 8486 (LF, 8487 Call 8488 ("EnterHypMode", 8489 ATy(qTy, 8490 PTy(uTy, 8491 qTy)), 8492 TP[Var("new_spsr_value", 8493 CTy"PSR"), 8494 Var("preferred_exceptn_return", 8495 F32), 8496 LW(20, 8497 32)]))], 8498 MB(Call 8499 ("HaveSecurityExt", 8500 ATy(qTy, 8501 PTy(bTy, 8502 qTy)), 8503 LU), 8504 Close 8505 (bVar"v", 8506 MB(MB(ITE(bVar"v", 8507 MB(MR(Close 8508 (qVar"s", 8509 Dest 8510 ("CPSR", 8511 CTy"PSR", 8512 qVar"s"))), 8513 Close 8514 (Var("v", 8515 CTy"PSR"), 8516 MB(MU(Dest 8517 ("M", 8518 FTy 5, 8519 Var("v", 8520 CTy"PSR")), 8521 qTy), 8522 Close 8523 (Var("v", 8524 FTy 5), 8525 MU(EQ(Var("v", 8526 FTy 5), 8527 LW(22, 8528 5)), 8529 qTy))))), 8530 MU(LF, 8531 qTy)), 8532 Close 8533 (bVar"b", 8534 ITE(bVar"b", 8535 MB(MR(Close 8536 (qVar"s", 8537 Dest 8538 ("CP15", 8539 CTy"CP15", 8540 qVar"s"))), 8541 Close 8542 (Var("v", 8543 CTy"CP15"), 8544 MB(MU(Dest 8545 ("SCR", 8546 CTy"SCR", 8547 Var("v", 8548 CTy"CP15")), 8549 qTy), 8550 Close 8551 (Var("x0", 8552 CTy"SCR"), 8553 MB(MR(Close 8554 (qVar"s", 8555 Dest 8556 ("CP15", 8557 CTy"CP15", 8558 qVar"s"))), 8559 Close 8560 (Var("v", 8561 CTy"CP15"), 8562 MB(MB(MU(TP[Var("v", 8563 CTy"CP15"), 8564 Rupd 8565 ("NS", 8566 TP[Var("x0", 8567 CTy"SCR"), 8568 LF])], 8569 qTy), 8570 Close 8571 (Var("v", 8572 PTy(CTy"CP15", 8573 CTy"SCR")), 8574 MU(Rupd 8575 ("SCR", 8576 Var("v", 8577 PTy(CTy"CP15", 8578 CTy"SCR"))), 8579 qTy))), 8580 Close 8581 (Var("v", 8582 CTy"CP15"), 8583 MW(Close 8584 (qVar"s", 8585 Rupd 8586 ("CP15", 8587 TP[qVar"s", 8588 Var("v", 8589 CTy"CP15")]))))))))))), 8590 MU(LU, 8591 qTy)))), 8592 Close 8593 (AVar 8594 uTy, 8595 MB(MR(Close 8596 (qVar"s", 8597 Dest 8598 ("CPSR", 8599 CTy"PSR", 8600 qVar"s"))), 8601 Close 8602 (Var("v", 8603 CTy"PSR"), 8604 MB(MB(MB(MU(TP[Var("v", 8605 CTy"PSR"), 8606 LW(23, 8607 5)], 8608 qTy), 8609 Close 8610 (Var("v", 8611 PTy(CTy"PSR", 8612 FTy 5)), 8613 MU(Rupd 8614 ("M", 8615 Var("v", 8616 PTy(CTy"PSR", 8617 FTy 5))), 8618 qTy))), 8619 Close 8620 (Var("v", 8621 CTy"PSR"), 8622 MW(Close 8623 (qVar"s", 8624 Rupd 8625 ("CPSR", 8626 TP[qVar"s", 8627 Var("v", 8628 CTy"PSR")]))))), 8629 Close 8630 (AVar 8631 uTy, 8632 MB(Call 8633 ("write'SPSR", 8634 ATy(qTy, 8635 PTy(uTy, 8636 qTy)), 8637 Var("new_spsr_value", 8638 CTy"PSR")), 8639 Close 8640 (AVar 8641 uTy, 8642 MB(Call 8643 ("write'R", 8644 ATy(qTy, 8645 PTy(uTy, 8646 qTy)), 8647 TP[Var("new_lr_value", 8648 F32), 8649 LW(14, 8650 4)]), 8651 Close 8652 (AVar 8653 uTy, 8654 MB(MR(Close 8655 (qVar"s", 8656 Dest 8657 ("CPSR", 8658 CTy"PSR", 8659 qVar"s"))), 8660 Close 8661 (Var("v", 8662 CTy"PSR"), 8663 MB(MB(MB(MU(TP[Var("v", 8664 CTy"PSR"), 8665 LT], 8666 qTy), 8667 Close 8668 (Var("v", 8669 PTy(CTy"PSR", 8670 bTy)), 8671 MU(Rupd 8672 ("I", 8673 Var("v", 8674 PTy(CTy"PSR", 8675 bTy))), 8676 qTy))), 8677 Close 8678 (Var("v", 8679 CTy"PSR"), 8680 MW(Close 8681 (qVar"s", 8682 Rupd 8683 ("CPSR", 8684 TP[qVar"s", 8685 Var("v", 8686 CTy"PSR")]))))), 8687 Close 8688 (AVar 8689 uTy, 8690 MB(Call 8691 ("HaveSecurityExt", 8692 ATy(qTy, 8693 PTy(bTy, 8694 qTy)), 8695 LU), 8696 Close 8697 (bVar"v", 8698 MB(MB(MB(MB(MB(MU(Mop(Not, 8699 bVar"v"), 8700 qTy), 8701 Close 8702 (bVar"b", 8703 ITE(bVar"b", 8704 MU(LT, 8705 qTy), 8706 Call 8707 ("HaveVirtExt", 8708 ATy(qTy, 8709 PTy(bTy, 8710 qTy)), 8711 LU)))), 8712 Close 8713 (bVar"b", 8714 ITE(bVar"b", 8715 MU(LT, 8716 qTy), 8717 MB(MR(Close 8718 (qVar"s", 8719 Dest 8720 ("CP15", 8721 CTy"CP15", 8722 qVar"s"))), 8723 Close 8724 (Var("v", 8725 CTy"CP15"), 8726 MB(MB(MU(Dest 8727 ("SCR", 8728 CTy"SCR", 8729 Var("v", 8730 CTy"CP15")), 8731 qTy), 8732 Close 8733 (Var("v", 8734 CTy"SCR"), 8735 MU(Dest 8736 ("NS", 8737 bTy, 8738 Var("v", 8739 CTy"SCR")), 8740 qTy))), 8741 Close 8742 (bVar"v", 8743 MU(Mop(Not, 8744 bVar"v"), 8745 qTy)))))))), 8746 Close 8747 (bVar"b", 8748 ITE(bVar"b", 8749 MU(LT, 8750 qTy), 8751 MB(MR(Close 8752 (qVar"s", 8753 Dest 8754 ("CP15", 8755 CTy"CP15", 8756 qVar"s"))), 8757 Close 8758 (Var("v", 8759 CTy"CP15"), 8760 MB(MU(Dest 8761 ("SCR", 8762 CTy"SCR", 8763 Var("v", 8764 CTy"CP15")), 8765 qTy), 8766 Close 8767 (Var("v", 8768 CTy"SCR"), 8769 MU(Dest 8770 ("AW", 8771 bTy, 8772 Var("v", 8773 CTy"SCR")), 8774 qTy)))))))), 8775 Close 8776 (bVar"b", 8777 ITE(bVar"b", 8778 MB(MR(Close 8779 (qVar"s", 8780 Dest 8781 ("CPSR", 8782 CTy"PSR", 8783 qVar"s"))), 8784 Close 8785 (Var("v", 8786 CTy"PSR"), 8787 MB(MB(MU(TP[Var("v", 8788 CTy"PSR"), 8789 LT], 8790 qTy), 8791 Close 8792 (Var("v", 8793 PTy(CTy"PSR", 8794 bTy)), 8795 MU(Rupd 8796 ("A", 8797 Var("v", 8798 PTy(CTy"PSR", 8799 bTy))), 8800 qTy))), 8801 Close 8802 (Var("v", 8803 CTy"PSR"), 8804 MW(Close 8805 (qVar"s", 8806 Rupd 8807 ("CPSR", 8808 TP[qVar"s", 8809 Var("v", 8810 CTy"PSR")]))))))), 8811 MU(LU, 8812 qTy)))), 8813 Close 8814 (AVar 8815 uTy, 8816 MB(MR(Close 8817 (qVar"s", 8818 Dest 8819 ("CPSR", 8820 CTy"PSR", 8821 qVar"s"))), 8822 Close 8823 (Var("v", 8824 CTy"PSR"), 8825 MB(MB(MB(MU(TP[Var("v", 8826 CTy"PSR"), 8827 LW(0, 8828 8)], 8829 qTy), 8830 Close 8831 (Var("v", 8832 PTy(CTy"PSR", 8833 F8)), 8834 MU(Rupd 8835 ("IT", 8836 Var("v", 8837 PTy(CTy"PSR", 8838 F8))), 8839 qTy))), 8840 Close 8841 (Var("v", 8842 CTy"PSR"), 8843 MW(Close 8844 (qVar"s", 8845 Rupd 8846 ("CPSR", 8847 TP[qVar"s", 8848 Var("v", 8849 CTy"PSR")]))))), 8850 Close 8851 (AVar 8852 uTy, 8853 MB(MR(Close 8854 (qVar"s", 8855 Dest 8856 ("CPSR", 8857 CTy"PSR", 8858 qVar"s"))), 8859 Close 8860 (Var("v", 8861 CTy"PSR"), 8862 MB(MB(MB(MU(TP[Var("v", 8863 CTy"PSR"), 8864 LF], 8865 qTy), 8866 Close 8867 (Var("v", 8868 PTy(CTy"PSR", 8869 bTy)), 8870 MU(Rupd 8871 ("J", 8872 Var("v", 8873 PTy(CTy"PSR", 8874 bTy))), 8875 qTy))), 8876 Close 8877 (Var("v", 8878 CTy"PSR"), 8879 MW(Close 8880 (qVar"s", 8881 Rupd 8882 ("CPSR", 8883 TP[qVar"s", 8884 Var("v", 8885 CTy"PSR")]))))), 8886 Close 8887 (AVar 8888 uTy, 8889 MB(MR(Close 8890 (qVar"s", 8891 Dest 8892 ("CPSR", 8893 CTy"PSR", 8894 qVar"s"))), 8895 Close 8896 (Var("v", 8897 CTy"PSR"), 8898 MB(MB(MB(MB(MR(Close 8899 (qVar"s", 8900 Dest 8901 ("CP15", 8902 CTy"CP15", 8903 qVar"s"))), 8904 Close 8905 (Var("v0", 8906 CTy"CP15"), 8907 MB(MB(MU(Dest 8908 ("SCTLR", 8909 CTy"SCTLR", 8910 Var("v0", 8911 CTy"CP15")), 8912 qTy), 8913 Close 8914 (Var("v", 8915 CTy"SCTLR"), 8916 MU(Dest 8917 ("TE", 8918 bTy, 8919 Var("v", 8920 CTy"SCTLR")), 8921 qTy))), 8922 Close 8923 (bVar"v0", 8924 MU(TP[Var("v", 8925 CTy"PSR"), 8926 bVar"v0"], 8927 qTy))))), 8928 Close 8929 (Var("v", 8930 PTy(CTy"PSR", 8931 bTy)), 8932 MU(Rupd 8933 ("T", 8934 Var("v", 8935 PTy(CTy"PSR", 8936 bTy))), 8937 qTy))), 8938 Close 8939 (Var("v", 8940 CTy"PSR"), 8941 MW(Close 8942 (qVar"s", 8943 Rupd 8944 ("CPSR", 8945 TP[qVar"s", 8946 Var("v", 8947 CTy"PSR")]))))), 8948 Close 8949 (AVar 8950 uTy, 8951 MB(MR(Close 8952 (qVar"s", 8953 Dest 8954 ("CPSR", 8955 CTy"PSR", 8956 qVar"s"))), 8957 Close 8958 (Var("v", 8959 CTy"PSR"), 8960 MB(MB(MB(MB(MR(Close 8961 (qVar"s", 8962 Dest 8963 ("CP15", 8964 CTy"CP15", 8965 qVar"s"))), 8966 Close 8967 (Var("v0", 8968 CTy"CP15"), 8969 MB(MB(MU(Dest 8970 ("SCTLR", 8971 CTy"SCTLR", 8972 Var("v0", 8973 CTy"CP15")), 8974 qTy), 8975 Close 8976 (Var("v", 8977 CTy"SCTLR"), 8978 MU(Dest 8979 ("EE", 8980 bTy, 8981 Var("v", 8982 CTy"SCTLR")), 8983 qTy))), 8984 Close 8985 (bVar"v0", 8986 MU(TP[Var("v", 8987 CTy"PSR"), 8988 bVar"v0"], 8989 qTy))))), 8990 Close 8991 (Var("v", 8992 PTy(CTy"PSR", 8993 bTy)), 8994 MU(Rupd 8995 ("E", 8996 Var("v", 8997 PTy(CTy"PSR", 8998 bTy))), 8999 qTy))), 9000 Close 9001 (Var("v", 9002 CTy"PSR"), 9003 MW(Close 9004 (qVar"s", 9005 Rupd 9006 ("CPSR", 9007 TP[qVar"s", 9008 Var("v", 9009 CTy"PSR")]))))), 9010 Close 9011 (AVar 9012 uTy, 9013 MB(Call 9014 ("ExcVectorBase", 9015 ATy(qTy, 9016 PTy(F32, 9017 qTy)), 9018 LU), 9019 Close 9020 (Var("v", 9021 F32), 9022 MB(MU(Bop(Add, 9023 Var("v", 9024 F32), 9025 Var("vect_offset", 9026 F32)), 9027 qTy), 9028 Close 9029 (Var("v", 9030 F32), 9031 Call 9032 ("BranchTo", 9033 ATy(qTy, 9034 PTy(uTy, 9035 qTy)), 9036 Var("v", 9037 F32))))))))))))))))))))))))))))))))))))))))))), 9038 Close 9039 (AVar uTy, 9040 MW(Close 9041 (qVar"s", 9042 Rupd 9043 ("data_abort", 9044 TP[qVar"s", 9045 LT])))))))))))))))))))))))) 9046; 9047val TakePrefetchAbortException_def = Def 9048 ("TakePrefetchAbortException",AVar uTy, 9049 MB(MW(Close(qVar"s",Rupd("data_abort",TP[qVar"s",LF]))), 9050 Close 9051 (AVar uTy, 9052 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 9053 Close 9054 (Var("v",CTy"PSR"), 9055 MB(MB(MU(Dest("T",bTy,Var("v",CTy"PSR")),qTy), 9056 Close 9057 (bVar"b", 9058 ITE(bVar"b",Const("PC",ATy(qTy,PTy(F32,qTy))), 9059 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 9060 Close 9061 (Var("v",F32), 9062 MU(Bop(Sub,Var("v",F32),LW(4,32)),qTy)))))), 9063 Close 9064 (Var("new_lr_value",F32), 9065 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 9066 Close 9067 (Var("new_spsr_value",CTy"PSR"), 9068 Let(Var("vect_offset",F32),LW(12,32), 9069 Let(Var("preferred_exceptn_return",F32), 9070 Bop(Sub,Var("new_lr_value",F32), 9071 LW(4,32)), 9072 MB(Call 9073 ("HaveSecurityExt", 9074 ATy(qTy,PTy(bTy,qTy)),LU), 9075 Close 9076 (bVar"v", 9077 MB(MB(ITE(bVar"v", 9078 MB(MR(Close 9079 (qVar"s", 9080 Dest 9081 ("CP15", 9082 CTy"CP15", 9083 qVar"s"))), 9084 Close 9085 (Var("v",CTy"CP15"), 9086 MB(MU(Dest 9087 ("SCR", 9088 CTy"SCR", 9089 Var("v", 9090 CTy"CP15")), 9091 qTy), 9092 Close 9093 (Var("v", 9094 CTy"SCR"), 9095 MU(Dest 9096 ("EA", 9097 bTy, 9098 Var("v", 9099 CTy"SCR")), 9100 qTy))))), 9101 MU(LF,qTy)), 9102 Close 9103 (bVar"b", 9104 ITE(bVar"b", 9105 Call 9106 ("IsExternalAbort", 9107 ATy(qTy, 9108 PTy(bTy,qTy)), 9109 LU),MU(LF,qTy)))), 9110 Close 9111 (bVar"route_to_monitor", 9112 MB(Call 9113 ("HaveVirtExt", 9114 ATy(qTy,PTy(bTy,qTy)), 9115 LU), 9116 Close 9117 (bVar"v", 9118 MB(MB(MB(ITE(bVar"v", 9119 Call 9120 ("HaveSecurityExt", 9121 ATy(qTy, 9122 PTy(bTy, 9123 qTy)), 9124 LU), 9125 MU(LF, 9126 qTy)), 9127 Close 9128 (bVar"b", 9129 ITE(bVar"b", 9130 MB(MR(Close 9131 (qVar"s", 9132 Dest 9133 ("CP15", 9134 CTy"CP15", 9135 qVar"s"))), 9136 Close 9137 (Var("v", 9138 CTy"CP15"), 9139 MB(MU(Dest 9140 ("SCR", 9141 CTy"SCR", 9142 Var("v", 9143 CTy"CP15")), 9144 qTy), 9145 Close 9146 (Var("v", 9147 CTy"SCR"), 9148 MU(Dest 9149 ("NS", 9150 bTy, 9151 Var("v", 9152 CTy"SCR")), 9153 qTy))))), 9154 MU(LF, 9155 qTy)))), 9156 Close 9157 (bVar"b", 9158 ITE(bVar"b", 9159 MB(MR(Close 9160 (qVar"s", 9161 Dest 9162 ("CPSR", 9163 CTy"PSR", 9164 qVar"s"))), 9165 Close 9166 (Var("v", 9167 CTy"PSR"), 9168 MB(MU(Dest 9169 ("M", 9170 FTy 5, 9171 Var("v", 9172 CTy"PSR")), 9173 qTy), 9174 Close 9175 (Var("v", 9176 FTy 5), 9177 MU(EQ(Var("v", 9178 FTy 5), 9179 LW(26, 9180 5)), 9181 qTy))))), 9182 MU(LF, 9183 qTy)))), 9184 Close 9185 (bVar"take_to_hyp", 9186 MB(ITB([(bVar"route_to_monitor", 9187 MB(MR(Close 9188 (qVar"s", 9189 Dest 9190 ("CPSR", 9191 CTy"PSR", 9192 qVar"s"))), 9193 Close 9194 (Var("v", 9195 CTy"PSR"), 9196 MB(MB(MB(MU(Dest 9197 ("M", 9198 FTy 5, 9199 Var("v", 9200 CTy"PSR")), 9201 qTy), 9202 Close 9203 (Var("v", 9204 FTy 5), 9205 MU(EQ(Var("v", 9206 FTy 5), 9207 LW(22, 9208 5)), 9209 qTy))), 9210 Close 9211 (bVar"b", 9212 ITE(bVar"b", 9213 MB(MR(Close 9214 (qVar"s", 9215 Dest 9216 ("CP15", 9217 CTy"CP15", 9218 qVar"s"))), 9219 Close 9220 (Var("v", 9221 CTy"CP15"), 9222 MB(MU(Dest 9223 ("SCR", 9224 CTy"SCR", 9225 Var("v", 9226 CTy"CP15")), 9227 qTy), 9228 Close 9229 (Var("x0", 9230 CTy"SCR"), 9231 MB(MR(Close 9232 (qVar"s", 9233 Dest 9234 ("CP15", 9235 CTy"CP15", 9236 qVar"s"))), 9237 Close 9238 (Var("v", 9239 CTy"CP15"), 9240 MB(MB(MU(TP[Var("v", 9241 CTy"CP15"), 9242 Rupd 9243 ("NS", 9244 TP[Var("x0", 9245 CTy"SCR"), 9246 LF])], 9247 qTy), 9248 Close 9249 (Var("v", 9250 PTy(CTy"CP15", 9251 CTy"SCR")), 9252 MU(Rupd 9253 ("SCR", 9254 Var("v", 9255 PTy(CTy"CP15", 9256 CTy"SCR"))), 9257 qTy))), 9258 Close 9259 (Var("v", 9260 CTy"CP15"), 9261 MW(Close 9262 (qVar"s", 9263 Rupd 9264 ("CP15", 9265 TP[qVar"s", 9266 Var("v", 9267 CTy"CP15")]))))))))))), 9268 MU(LU, 9269 qTy)))), 9270 Close 9271 (AVar 9272 uTy, 9273 Call 9274 ("EnterMonitorMode", 9275 ATy(qTy, 9276 PTy(uTy, 9277 qTy)), 9278 TP[Var("new_spsr_value", 9279 CTy"PSR"), 9280 Var("new_lr_value", 9281 F32), 9282 Var("vect_offset", 9283 F32)])))))), 9284 (bVar"take_to_hyp", 9285 Call 9286 ("EnterHypMode", 9287 ATy(qTy, 9288 PTy(uTy, 9289 qTy)), 9290 TP[Var("new_spsr_value", 9291 CTy"PSR"), 9292 Var("preferred_exceptn_return", 9293 F32), 9294 Var("vect_offset", 9295 F32)])), 9296 (LF, 9297 Call 9298 ("EnterHypMode", 9299 ATy(qTy, 9300 PTy(uTy, 9301 qTy)), 9302 TP[Var("new_spsr_value", 9303 CTy"PSR"), 9304 Var("preferred_exceptn_return", 9305 F32), 9306 LW(20, 9307 32)]))], 9308 MB(Call 9309 ("HaveSecurityExt", 9310 ATy(qTy, 9311 PTy(bTy, 9312 qTy)), 9313 LU), 9314 Close 9315 (bVar"v", 9316 MB(MB(ITE(bVar"v", 9317 MB(MR(Close 9318 (qVar"s", 9319 Dest 9320 ("CPSR", 9321 CTy"PSR", 9322 qVar"s"))), 9323 Close 9324 (Var("v", 9325 CTy"PSR"), 9326 MB(MU(Dest 9327 ("M", 9328 FTy 5, 9329 Var("v", 9330 CTy"PSR")), 9331 qTy), 9332 Close 9333 (Var("v", 9334 FTy 5), 9335 MU(EQ(Var("v", 9336 FTy 5), 9337 LW(22, 9338 5)), 9339 qTy))))), 9340 MU(LF, 9341 qTy)), 9342 Close 9343 (bVar"b", 9344 ITE(bVar"b", 9345 MB(MR(Close 9346 (qVar"s", 9347 Dest 9348 ("CP15", 9349 CTy"CP15", 9350 qVar"s"))), 9351 Close 9352 (Var("v", 9353 CTy"CP15"), 9354 MB(MU(Dest 9355 ("SCR", 9356 CTy"SCR", 9357 Var("v", 9358 CTy"CP15")), 9359 qTy), 9360 Close 9361 (Var("x0", 9362 CTy"SCR"), 9363 MB(MR(Close 9364 (qVar"s", 9365 Dest 9366 ("CP15", 9367 CTy"CP15", 9368 qVar"s"))), 9369 Close 9370 (Var("v", 9371 CTy"CP15"), 9372 MB(MB(MU(TP[Var("v", 9373 CTy"CP15"), 9374 Rupd 9375 ("NS", 9376 TP[Var("x0", 9377 CTy"SCR"), 9378 LF])], 9379 qTy), 9380 Close 9381 (Var("v", 9382 PTy(CTy"CP15", 9383 CTy"SCR")), 9384 MU(Rupd 9385 ("SCR", 9386 Var("v", 9387 PTy(CTy"CP15", 9388 CTy"SCR"))), 9389 qTy))), 9390 Close 9391 (Var("v", 9392 CTy"CP15"), 9393 MW(Close 9394 (qVar"s", 9395 Rupd 9396 ("CP15", 9397 TP[qVar"s", 9398 Var("v", 9399 CTy"CP15")]))))))))))), 9400 MU(LU, 9401 qTy)))), 9402 Close 9403 (AVar 9404 uTy, 9405 MB(MR(Close 9406 (qVar"s", 9407 Dest 9408 ("CPSR", 9409 CTy"PSR", 9410 qVar"s"))), 9411 Close 9412 (Var("v", 9413 CTy"PSR"), 9414 MB(MB(MB(MU(TP[Var("v", 9415 CTy"PSR"), 9416 LW(23, 9417 5)], 9418 qTy), 9419 Close 9420 (Var("v", 9421 PTy(CTy"PSR", 9422 FTy 5)), 9423 MU(Rupd 9424 ("M", 9425 Var("v", 9426 PTy(CTy"PSR", 9427 FTy 5))), 9428 qTy))), 9429 Close 9430 (Var("v", 9431 CTy"PSR"), 9432 MW(Close 9433 (qVar"s", 9434 Rupd 9435 ("CPSR", 9436 TP[qVar"s", 9437 Var("v", 9438 CTy"PSR")]))))), 9439 Close 9440 (AVar 9441 uTy, 9442 MB(Call 9443 ("write'SPSR", 9444 ATy(qTy, 9445 PTy(uTy, 9446 qTy)), 9447 Var("new_spsr_value", 9448 CTy"PSR")), 9449 Close 9450 (AVar 9451 uTy, 9452 MB(Call 9453 ("write'R", 9454 ATy(qTy, 9455 PTy(uTy, 9456 qTy)), 9457 TP[Var("new_lr_value", 9458 F32), 9459 LW(14, 9460 4)]), 9461 Close 9462 (AVar 9463 uTy, 9464 MB(MR(Close 9465 (qVar"s", 9466 Dest 9467 ("CPSR", 9468 CTy"PSR", 9469 qVar"s"))), 9470 Close 9471 (Var("v", 9472 CTy"PSR"), 9473 MB(MB(MB(MU(TP[Var("v", 9474 CTy"PSR"), 9475 LT], 9476 qTy), 9477 Close 9478 (Var("v", 9479 PTy(CTy"PSR", 9480 bTy)), 9481 MU(Rupd 9482 ("I", 9483 Var("v", 9484 PTy(CTy"PSR", 9485 bTy))), 9486 qTy))), 9487 Close 9488 (Var("v", 9489 CTy"PSR"), 9490 MW(Close 9491 (qVar"s", 9492 Rupd 9493 ("CPSR", 9494 TP[qVar"s", 9495 Var("v", 9496 CTy"PSR")]))))), 9497 Close 9498 (AVar 9499 uTy, 9500 MB(Call 9501 ("HaveSecurityExt", 9502 ATy(qTy, 9503 PTy(bTy, 9504 qTy)), 9505 LU), 9506 Close 9507 (bVar"v", 9508 MB(MB(MB(MB(MB(MU(Mop(Not, 9509 bVar"v"), 9510 qTy), 9511 Close 9512 (bVar"b", 9513 ITE(bVar"b", 9514 MU(LT, 9515 qTy), 9516 Call 9517 ("HaveVirtExt", 9518 ATy(qTy, 9519 PTy(bTy, 9520 qTy)), 9521 LU)))), 9522 Close 9523 (bVar"b", 9524 ITE(bVar"b", 9525 MU(LT, 9526 qTy), 9527 MB(MR(Close 9528 (qVar"s", 9529 Dest 9530 ("CP15", 9531 CTy"CP15", 9532 qVar"s"))), 9533 Close 9534 (Var("v", 9535 CTy"CP15"), 9536 MB(MB(MU(Dest 9537 ("SCR", 9538 CTy"SCR", 9539 Var("v", 9540 CTy"CP15")), 9541 qTy), 9542 Close 9543 (Var("v", 9544 CTy"SCR"), 9545 MU(Dest 9546 ("NS", 9547 bTy, 9548 Var("v", 9549 CTy"SCR")), 9550 qTy))), 9551 Close 9552 (bVar"v", 9553 MU(Mop(Not, 9554 bVar"v"), 9555 qTy)))))))), 9556 Close 9557 (bVar"b", 9558 ITE(bVar"b", 9559 MU(LT, 9560 qTy), 9561 MB(MR(Close 9562 (qVar"s", 9563 Dest 9564 ("CP15", 9565 CTy"CP15", 9566 qVar"s"))), 9567 Close 9568 (Var("v", 9569 CTy"CP15"), 9570 MB(MU(Dest 9571 ("SCR", 9572 CTy"SCR", 9573 Var("v", 9574 CTy"CP15")), 9575 qTy), 9576 Close 9577 (Var("v", 9578 CTy"SCR"), 9579 MU(Dest 9580 ("AW", 9581 bTy, 9582 Var("v", 9583 CTy"SCR")), 9584 qTy)))))))), 9585 Close 9586 (bVar"b", 9587 ITE(bVar"b", 9588 MB(MR(Close 9589 (qVar"s", 9590 Dest 9591 ("CPSR", 9592 CTy"PSR", 9593 qVar"s"))), 9594 Close 9595 (Var("v", 9596 CTy"PSR"), 9597 MB(MB(MU(TP[Var("v", 9598 CTy"PSR"), 9599 LT], 9600 qTy), 9601 Close 9602 (Var("v", 9603 PTy(CTy"PSR", 9604 bTy)), 9605 MU(Rupd 9606 ("A", 9607 Var("v", 9608 PTy(CTy"PSR", 9609 bTy))), 9610 qTy))), 9611 Close 9612 (Var("v", 9613 CTy"PSR"), 9614 MW(Close 9615 (qVar"s", 9616 Rupd 9617 ("CPSR", 9618 TP[qVar"s", 9619 Var("v", 9620 CTy"PSR")]))))))), 9621 MU(LU, 9622 qTy)))), 9623 Close 9624 (AVar 9625 uTy, 9626 MB(MR(Close 9627 (qVar"s", 9628 Dest 9629 ("CPSR", 9630 CTy"PSR", 9631 qVar"s"))), 9632 Close 9633 (Var("v", 9634 CTy"PSR"), 9635 MB(MB(MB(MU(TP[Var("v", 9636 CTy"PSR"), 9637 LW(0, 9638 8)], 9639 qTy), 9640 Close 9641 (Var("v", 9642 PTy(CTy"PSR", 9643 F8)), 9644 MU(Rupd 9645 ("IT", 9646 Var("v", 9647 PTy(CTy"PSR", 9648 F8))), 9649 qTy))), 9650 Close 9651 (Var("v", 9652 CTy"PSR"), 9653 MW(Close 9654 (qVar"s", 9655 Rupd 9656 ("CPSR", 9657 TP[qVar"s", 9658 Var("v", 9659 CTy"PSR")]))))), 9660 Close 9661 (AVar 9662 uTy, 9663 MB(MR(Close 9664 (qVar"s", 9665 Dest 9666 ("CPSR", 9667 CTy"PSR", 9668 qVar"s"))), 9669 Close 9670 (Var("v", 9671 CTy"PSR"), 9672 MB(MB(MB(MU(TP[Var("v", 9673 CTy"PSR"), 9674 LF], 9675 qTy), 9676 Close 9677 (Var("v", 9678 PTy(CTy"PSR", 9679 bTy)), 9680 MU(Rupd 9681 ("J", 9682 Var("v", 9683 PTy(CTy"PSR", 9684 bTy))), 9685 qTy))), 9686 Close 9687 (Var("v", 9688 CTy"PSR"), 9689 MW(Close 9690 (qVar"s", 9691 Rupd 9692 ("CPSR", 9693 TP[qVar"s", 9694 Var("v", 9695 CTy"PSR")]))))), 9696 Close 9697 (AVar 9698 uTy, 9699 MB(MR(Close 9700 (qVar"s", 9701 Dest 9702 ("CPSR", 9703 CTy"PSR", 9704 qVar"s"))), 9705 Close 9706 (Var("v", 9707 CTy"PSR"), 9708 MB(MB(MB(MB(MR(Close 9709 (qVar"s", 9710 Dest 9711 ("CP15", 9712 CTy"CP15", 9713 qVar"s"))), 9714 Close 9715 (Var("v0", 9716 CTy"CP15"), 9717 MB(MB(MU(Dest 9718 ("SCTLR", 9719 CTy"SCTLR", 9720 Var("v0", 9721 CTy"CP15")), 9722 qTy), 9723 Close 9724 (Var("v", 9725 CTy"SCTLR"), 9726 MU(Dest 9727 ("TE", 9728 bTy, 9729 Var("v", 9730 CTy"SCTLR")), 9731 qTy))), 9732 Close 9733 (bVar"v0", 9734 MU(TP[Var("v", 9735 CTy"PSR"), 9736 bVar"v0"], 9737 qTy))))), 9738 Close 9739 (Var("v", 9740 PTy(CTy"PSR", 9741 bTy)), 9742 MU(Rupd 9743 ("T", 9744 Var("v", 9745 PTy(CTy"PSR", 9746 bTy))), 9747 qTy))), 9748 Close 9749 (Var("v", 9750 CTy"PSR"), 9751 MW(Close 9752 (qVar"s", 9753 Rupd 9754 ("CPSR", 9755 TP[qVar"s", 9756 Var("v", 9757 CTy"PSR")]))))), 9758 Close 9759 (AVar 9760 uTy, 9761 MB(MR(Close 9762 (qVar"s", 9763 Dest 9764 ("CPSR", 9765 CTy"PSR", 9766 qVar"s"))), 9767 Close 9768 (Var("v", 9769 CTy"PSR"), 9770 MB(MB(MB(MB(MR(Close 9771 (qVar"s", 9772 Dest 9773 ("CP15", 9774 CTy"CP15", 9775 qVar"s"))), 9776 Close 9777 (Var("v0", 9778 CTy"CP15"), 9779 MB(MB(MU(Dest 9780 ("SCTLR", 9781 CTy"SCTLR", 9782 Var("v0", 9783 CTy"CP15")), 9784 qTy), 9785 Close 9786 (Var("v", 9787 CTy"SCTLR"), 9788 MU(Dest 9789 ("EE", 9790 bTy, 9791 Var("v", 9792 CTy"SCTLR")), 9793 qTy))), 9794 Close 9795 (bVar"v0", 9796 MU(TP[Var("v", 9797 CTy"PSR"), 9798 bVar"v0"], 9799 qTy))))), 9800 Close 9801 (Var("v", 9802 PTy(CTy"PSR", 9803 bTy)), 9804 MU(Rupd 9805 ("E", 9806 Var("v", 9807 PTy(CTy"PSR", 9808 bTy))), 9809 qTy))), 9810 Close 9811 (Var("v", 9812 CTy"PSR"), 9813 MW(Close 9814 (qVar"s", 9815 Rupd 9816 ("CPSR", 9817 TP[qVar"s", 9818 Var("v", 9819 CTy"PSR")]))))), 9820 Close 9821 (AVar 9822 uTy, 9823 MB(Call 9824 ("ExcVectorBase", 9825 ATy(qTy, 9826 PTy(F32, 9827 qTy)), 9828 LU), 9829 Close 9830 (Var("v", 9831 F32), 9832 MB(MU(Bop(Add, 9833 Var("v", 9834 F32), 9835 Var("vect_offset", 9836 F32)), 9837 qTy), 9838 Close 9839 (Var("v", 9840 F32), 9841 Call 9842 ("BranchTo", 9843 ATy(qTy, 9844 PTy(uTy, 9845 qTy)), 9846 Var("v", 9847 F32))))))))))))))))))))))))))))))))))))))))))), 9848 Close 9849 (AVar uTy, 9850 MW(Close 9851 (qVar"s", 9852 Rupd 9853 ("data_abort", 9854 TP[qVar"s", 9855 LT])))))))))))))))))))))))) 9856; 9857val TakePhysicalIRQException_def = Def 9858 ("TakePhysicalIRQException",AVar uTy, 9859 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 9860 Close 9861 (Var("v",CTy"PSR"), 9862 MB(MB(MU(Dest("T",bTy,Var("v",CTy"PSR")),qTy), 9863 Close 9864 (bVar"b", 9865 ITE(bVar"b",Const("PC",ATy(qTy,PTy(F32,qTy))), 9866 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 9867 Close 9868 (Var("v",F32), 9869 MU(Bop(Sub,Var("v",F32),LW(4,32)),qTy)))))), 9870 Close 9871 (Var("new_lr_value",F32), 9872 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 9873 Close 9874 (Var("new_spsr_value",CTy"PSR"), 9875 Let(Var("vect_offset",F32),LW(24,32), 9876 MB(Call 9877 ("HaveSecurityExt",ATy(qTy,PTy(bTy,qTy)),LU), 9878 Close 9879 (bVar"v", 9880 MB(ITE(bVar"v", 9881 MB(MR(Close 9882 (qVar"s", 9883 Dest 9884 ("CP15",CTy"CP15",qVar"s"))), 9885 Close 9886 (Var("v",CTy"CP15"), 9887 MB(MU(Dest 9888 ("SCR",CTy"SCR", 9889 Var("v",CTy"CP15")), 9890 qTy), 9891 Close 9892 (Var("v",CTy"SCR"), 9893 MU(Dest 9894 ("IRQ",bTy, 9895 Var("v",CTy"SCR")), 9896 qTy))))),MU(LF,qTy)), 9897 Close 9898 (bVar"route_to_monitor", 9899 MB(Call 9900 ("HaveVirtExt", 9901 ATy(qTy,PTy(bTy,qTy)),LU), 9902 Close 9903 (bVar"v", 9904 MB(MB(MB(MB(MB(ITE(bVar"v", 9905 Call 9906 ("HaveSecurityExt", 9907 ATy(qTy, 9908 PTy(bTy, 9909 qTy)), 9910 LU), 9911 MU(LF,qTy)), 9912 Close 9913 (bVar"b", 9914 ITE(bVar"b", 9915 MB(MR(Close 9916 (qVar"s", 9917 Dest 9918 ("CP15", 9919 CTy"CP15", 9920 qVar"s"))), 9921 Close 9922 (Var("v", 9923 CTy"CP15"), 9924 MB(MB(MU(Dest 9925 ("SCR", 9926 CTy"SCR", 9927 Var("v", 9928 CTy"CP15")), 9929 qTy), 9930 Close 9931 (Var("v", 9932 CTy"SCR"), 9933 MU(Dest 9934 ("IRQ", 9935 bTy, 9936 Var("v", 9937 CTy"SCR")), 9938 qTy))), 9939 Close 9940 (bVar"v", 9941 MU(Mop(Not, 9942 bVar"v"), 9943 qTy))))), 9944 MU(LF,qTy)))), 9945 Close 9946 (bVar"b", 9947 ITE(bVar"b", 9948 MB(MR(Close 9949 (qVar"s", 9950 Dest 9951 ("CP15", 9952 CTy"CP15", 9953 qVar"s"))), 9954 Close 9955 (Var("v", 9956 CTy"CP15"), 9957 MB(MU(Dest 9958 ("HCR", 9959 CTy"HCR", 9960 Var("v", 9961 CTy"CP15")), 9962 qTy), 9963 Close 9964 (Var("v", 9965 CTy"HCR"), 9966 MU(Dest 9967 ("IMO", 9968 bTy, 9969 Var("v", 9970 CTy"HCR")), 9971 qTy))))), 9972 MU(LF,qTy)))), 9973 Close 9974 (bVar"b", 9975 ITE(bVar"b", 9976 MB(Call 9977 ("IsSecure", 9978 ATy(qTy, 9979 PTy(bTy, 9980 qTy)), 9981 LU), 9982 Close 9983 (bVar"v", 9984 MU(Mop(Not, 9985 bVar"v"), 9986 qTy))), 9987 MU(LF,qTy)))), 9988 Close 9989 (bVar"b", 9990 ITE(bVar"b", 9991 MU(LT,qTy), 9992 MB(MR(Close 9993 (qVar"s", 9994 Dest 9995 ("CPSR", 9996 CTy"PSR", 9997 qVar"s"))), 9998 Close 9999 (Var("v", 10000 CTy"PSR"), 10001 MB(MU(Dest 10002 ("M", 10003 FTy 5, 10004 Var("v", 10005 CTy"PSR")), 10006 qTy), 10007 Close 10008 (Var("v", 10009 FTy 5), 10010 MU(EQ(Var("v", 10011 FTy 5), 10012 LW(26, 10013 5)), 10014 qTy)))))))), 10015 Close 10016 (bVar"route_to_hyp", 10017 ITB([(bVar"route_to_monitor", 10018 MB(MR(Close 10019 (qVar"s", 10020 Dest 10021 ("CPSR", 10022 CTy"PSR", 10023 qVar"s"))), 10024 Close 10025 (Var("v", 10026 CTy"PSR"), 10027 MB(MB(MB(MU(Dest 10028 ("M", 10029 FTy 5, 10030 Var("v", 10031 CTy"PSR")), 10032 qTy), 10033 Close 10034 (Var("v", 10035 FTy 5), 10036 MU(EQ(Var("v", 10037 FTy 5), 10038 LW(22, 10039 5)), 10040 qTy))), 10041 Close 10042 (bVar"b", 10043 ITE(bVar"b", 10044 MB(MR(Close 10045 (qVar"s", 10046 Dest 10047 ("CP15", 10048 CTy"CP15", 10049 qVar"s"))), 10050 Close 10051 (Var("v", 10052 CTy"CP15"), 10053 MB(MU(Dest 10054 ("SCR", 10055 CTy"SCR", 10056 Var("v", 10057 CTy"CP15")), 10058 qTy), 10059 Close 10060 (Var("x0", 10061 CTy"SCR"), 10062 MB(MR(Close 10063 (qVar"s", 10064 Dest 10065 ("CP15", 10066 CTy"CP15", 10067 qVar"s"))), 10068 Close 10069 (Var("v", 10070 CTy"CP15"), 10071 MB(MB(MU(TP[Var("v", 10072 CTy"CP15"), 10073 Rupd 10074 ("NS", 10075 TP[Var("x0", 10076 CTy"SCR"), 10077 LF])], 10078 qTy), 10079 Close 10080 (Var("v", 10081 PTy(CTy"CP15", 10082 CTy"SCR")), 10083 MU(Rupd 10084 ("SCR", 10085 Var("v", 10086 PTy(CTy"CP15", 10087 CTy"SCR"))), 10088 qTy))), 10089 Close 10090 (Var("v", 10091 CTy"CP15"), 10092 MW(Close 10093 (qVar"s", 10094 Rupd 10095 ("CP15", 10096 TP[qVar"s", 10097 Var("v", 10098 CTy"CP15")]))))))))))), 10099 MU(LU, 10100 qTy)))), 10101 Close 10102 (AVar 10103 uTy, 10104 Call 10105 ("EnterMonitorMode", 10106 ATy(qTy, 10107 PTy(uTy, 10108 qTy)), 10109 TP[Var("new_spsr_value", 10110 CTy"PSR"), 10111 Var("new_lr_value", 10112 F32), 10113 Var("vect_offset", 10114 F32)])))))), 10115 (bVar"route_to_hyp", 10116 MB(MR(Close 10117 (qVar"s", 10118 Dest 10119 ("CP15", 10120 CTy"CP15", 10121 qVar"s"))), 10122 Close 10123 (Var("v", 10124 CTy"CP15"), 10125 MB(MB(MB(MU(TP[Var("v", 10126 CTy"CP15"), 10127 LX(CTy"HSR")], 10128 qTy), 10129 Close 10130 (Var("v", 10131 PTy(CTy"CP15", 10132 CTy"HSR")), 10133 MU(Rupd 10134 ("HSR", 10135 Var("v", 10136 PTy(CTy"CP15", 10137 CTy"HSR"))), 10138 qTy))), 10139 Close 10140 (Var("v", 10141 CTy"CP15"), 10142 MW(Close 10143 (qVar"s", 10144 Rupd 10145 ("CP15", 10146 TP[qVar"s", 10147 Var("v", 10148 CTy"CP15")]))))), 10149 Close 10150 (AVar 10151 uTy, 10152 Call 10153 ("EnterHypMode", 10154 ATy(qTy, 10155 PTy(uTy, 10156 qTy)), 10157 TP[Var("new_spsr_value", 10158 CTy"PSR"), 10159 Bop(Sub, 10160 Var("new_lr_value", 10161 F32), 10162 LW(4, 10163 32)), 10164 Var("vect_offset", 10165 F32)]))))))], 10166 MB(MR(Close 10167 (qVar"s", 10168 Dest 10169 ("CPSR", 10170 CTy"PSR", 10171 qVar"s"))), 10172 Close 10173 (Var("v", 10174 CTy"PSR"), 10175 MB(MB(MB(MU(Dest 10176 ("M", 10177 FTy 5, 10178 Var("v", 10179 CTy"PSR")), 10180 qTy), 10181 Close 10182 (Var("v", 10183 FTy 5), 10184 MU(EQ(Var("v", 10185 FTy 5), 10186 LW(22, 10187 5)), 10188 qTy))), 10189 Close 10190 (bVar"b", 10191 ITE(bVar"b", 10192 MB(MR(Close 10193 (qVar"s", 10194 Dest 10195 ("CP15", 10196 CTy"CP15", 10197 qVar"s"))), 10198 Close 10199 (Var("v", 10200 CTy"CP15"), 10201 MB(MU(Dest 10202 ("SCR", 10203 CTy"SCR", 10204 Var("v", 10205 CTy"CP15")), 10206 qTy), 10207 Close 10208 (Var("x0", 10209 CTy"SCR"), 10210 MB(MR(Close 10211 (qVar"s", 10212 Dest 10213 ("CP15", 10214 CTy"CP15", 10215 qVar"s"))), 10216 Close 10217 (Var("v", 10218 CTy"CP15"), 10219 MB(MB(MU(TP[Var("v", 10220 CTy"CP15"), 10221 Rupd 10222 ("NS", 10223 TP[Var("x0", 10224 CTy"SCR"), 10225 LF])], 10226 qTy), 10227 Close 10228 (Var("v", 10229 PTy(CTy"CP15", 10230 CTy"SCR")), 10231 MU(Rupd 10232 ("SCR", 10233 Var("v", 10234 PTy(CTy"CP15", 10235 CTy"SCR"))), 10236 qTy))), 10237 Close 10238 (Var("v", 10239 CTy"CP15"), 10240 MW(Close 10241 (qVar"s", 10242 Rupd 10243 ("CP15", 10244 TP[qVar"s", 10245 Var("v", 10246 CTy"CP15")]))))))))))), 10247 MU(LU, 10248 qTy)))), 10249 Close 10250 (AVar uTy, 10251 MB(MR(Close 10252 (qVar"s", 10253 Dest 10254 ("CPSR", 10255 CTy"PSR", 10256 qVar"s"))), 10257 Close 10258 (Var("v", 10259 CTy"PSR"), 10260 MB(MB(MB(MU(TP[Var("v", 10261 CTy"PSR"), 10262 LW(18, 10263 5)], 10264 qTy), 10265 Close 10266 (Var("v", 10267 PTy(CTy"PSR", 10268 FTy 5)), 10269 MU(Rupd 10270 ("M", 10271 Var("v", 10272 PTy(CTy"PSR", 10273 FTy 5))), 10274 qTy))), 10275 Close 10276 (Var("v", 10277 CTy"PSR"), 10278 MW(Close 10279 (qVar"s", 10280 Rupd 10281 ("CPSR", 10282 TP[qVar"s", 10283 Var("v", 10284 CTy"PSR")]))))), 10285 Close 10286 (AVar 10287 uTy, 10288 MB(Call 10289 ("write'SPSR", 10290 ATy(qTy, 10291 PTy(uTy, 10292 qTy)), 10293 Var("new_spsr_value", 10294 CTy"PSR")), 10295 Close 10296 (AVar 10297 uTy, 10298 MB(Call 10299 ("write'R", 10300 ATy(qTy, 10301 PTy(uTy, 10302 qTy)), 10303 TP[Var("new_lr_value", 10304 F32), 10305 LW(14, 10306 4)]), 10307 Close 10308 (AVar 10309 uTy, 10310 MB(MR(Close 10311 (qVar"s", 10312 Dest 10313 ("CPSR", 10314 CTy"PSR", 10315 qVar"s"))), 10316 Close 10317 (Var("v", 10318 CTy"PSR"), 10319 MB(MB(MB(MU(TP[Var("v", 10320 CTy"PSR"), 10321 LT], 10322 qTy), 10323 Close 10324 (Var("v", 10325 PTy(CTy"PSR", 10326 bTy)), 10327 MU(Rupd 10328 ("I", 10329 Var("v", 10330 PTy(CTy"PSR", 10331 bTy))), 10332 qTy))), 10333 Close 10334 (Var("v", 10335 CTy"PSR"), 10336 MW(Close 10337 (qVar"s", 10338 Rupd 10339 ("CPSR", 10340 TP[qVar"s", 10341 Var("v", 10342 CTy"PSR")]))))), 10343 Close 10344 (AVar 10345 uTy, 10346 MB(Call 10347 ("HaveSecurityExt", 10348 ATy(qTy, 10349 PTy(bTy, 10350 qTy)), 10351 LU), 10352 Close 10353 (bVar"v", 10354 MB(MB(MB(MB(MB(MU(Mop(Not, 10355 bVar"v"), 10356 qTy), 10357 Close 10358 (bVar"b", 10359 ITE(bVar"b", 10360 MU(LT, 10361 qTy), 10362 Call 10363 ("HaveVirtExt", 10364 ATy(qTy, 10365 PTy(bTy, 10366 qTy)), 10367 LU)))), 10368 Close 10369 (bVar"b", 10370 ITE(bVar"b", 10371 MU(LT, 10372 qTy), 10373 MB(MR(Close 10374 (qVar"s", 10375 Dest 10376 ("CP15", 10377 CTy"CP15", 10378 qVar"s"))), 10379 Close 10380 (Var("v", 10381 CTy"CP15"), 10382 MB(MB(MU(Dest 10383 ("SCR", 10384 CTy"SCR", 10385 Var("v", 10386 CTy"CP15")), 10387 qTy), 10388 Close 10389 (Var("v", 10390 CTy"SCR"), 10391 MU(Dest 10392 ("NS", 10393 bTy, 10394 Var("v", 10395 CTy"SCR")), 10396 qTy))), 10397 Close 10398 (bVar"v", 10399 MU(Mop(Not, 10400 bVar"v"), 10401 qTy)))))))), 10402 Close 10403 (bVar"b", 10404 ITE(bVar"b", 10405 MU(LT, 10406 qTy), 10407 MB(MR(Close 10408 (qVar"s", 10409 Dest 10410 ("CP15", 10411 CTy"CP15", 10412 qVar"s"))), 10413 Close 10414 (Var("v", 10415 CTy"CP15"), 10416 MB(MU(Dest 10417 ("SCR", 10418 CTy"SCR", 10419 Var("v", 10420 CTy"CP15")), 10421 qTy), 10422 Close 10423 (Var("v", 10424 CTy"SCR"), 10425 MU(Dest 10426 ("AW", 10427 bTy, 10428 Var("v", 10429 CTy"SCR")), 10430 qTy)))))))), 10431 Close 10432 (bVar"b", 10433 ITE(bVar"b", 10434 MB(MR(Close 10435 (qVar"s", 10436 Dest 10437 ("CPSR", 10438 CTy"PSR", 10439 qVar"s"))), 10440 Close 10441 (Var("v", 10442 CTy"PSR"), 10443 MB(MB(MU(TP[Var("v", 10444 CTy"PSR"), 10445 LT], 10446 qTy), 10447 Close 10448 (Var("v", 10449 PTy(CTy"PSR", 10450 bTy)), 10451 MU(Rupd 10452 ("A", 10453 Var("v", 10454 PTy(CTy"PSR", 10455 bTy))), 10456 qTy))), 10457 Close 10458 (Var("v", 10459 CTy"PSR"), 10460 MW(Close 10461 (qVar"s", 10462 Rupd 10463 ("CPSR", 10464 TP[qVar"s", 10465 Var("v", 10466 CTy"PSR")]))))))), 10467 MU(LU, 10468 qTy)))), 10469 Close 10470 (AVar 10471 uTy, 10472 MB(MR(Close 10473 (qVar"s", 10474 Dest 10475 ("CPSR", 10476 CTy"PSR", 10477 qVar"s"))), 10478 Close 10479 (Var("v", 10480 CTy"PSR"), 10481 MB(MB(MB(MU(TP[Var("v", 10482 CTy"PSR"), 10483 LW(0, 10484 8)], 10485 qTy), 10486 Close 10487 (Var("v", 10488 PTy(CTy"PSR", 10489 F8)), 10490 MU(Rupd 10491 ("IT", 10492 Var("v", 10493 PTy(CTy"PSR", 10494 F8))), 10495 qTy))), 10496 Close 10497 (Var("v", 10498 CTy"PSR"), 10499 MW(Close 10500 (qVar"s", 10501 Rupd 10502 ("CPSR", 10503 TP[qVar"s", 10504 Var("v", 10505 CTy"PSR")]))))), 10506 Close 10507 (AVar 10508 uTy, 10509 MB(MR(Close 10510 (qVar"s", 10511 Dest 10512 ("CPSR", 10513 CTy"PSR", 10514 qVar"s"))), 10515 Close 10516 (Var("v", 10517 CTy"PSR"), 10518 MB(MB(MB(MU(TP[Var("v", 10519 CTy"PSR"), 10520 LF], 10521 qTy), 10522 Close 10523 (Var("v", 10524 PTy(CTy"PSR", 10525 bTy)), 10526 MU(Rupd 10527 ("J", 10528 Var("v", 10529 PTy(CTy"PSR", 10530 bTy))), 10531 qTy))), 10532 Close 10533 (Var("v", 10534 CTy"PSR"), 10535 MW(Close 10536 (qVar"s", 10537 Rupd 10538 ("CPSR", 10539 TP[qVar"s", 10540 Var("v", 10541 CTy"PSR")]))))), 10542 Close 10543 (AVar 10544 uTy, 10545 MB(MR(Close 10546 (qVar"s", 10547 Dest 10548 ("CPSR", 10549 CTy"PSR", 10550 qVar"s"))), 10551 Close 10552 (Var("v", 10553 CTy"PSR"), 10554 MB(MB(MB(MB(MR(Close 10555 (qVar"s", 10556 Dest 10557 ("CP15", 10558 CTy"CP15", 10559 qVar"s"))), 10560 Close 10561 (Var("v0", 10562 CTy"CP15"), 10563 MB(MB(MU(Dest 10564 ("SCTLR", 10565 CTy"SCTLR", 10566 Var("v0", 10567 CTy"CP15")), 10568 qTy), 10569 Close 10570 (Var("v", 10571 CTy"SCTLR"), 10572 MU(Dest 10573 ("TE", 10574 bTy, 10575 Var("v", 10576 CTy"SCTLR")), 10577 qTy))), 10578 Close 10579 (bVar"v0", 10580 MU(TP[Var("v", 10581 CTy"PSR"), 10582 bVar"v0"], 10583 qTy))))), 10584 Close 10585 (Var("v", 10586 PTy(CTy"PSR", 10587 bTy)), 10588 MU(Rupd 10589 ("T", 10590 Var("v", 10591 PTy(CTy"PSR", 10592 bTy))), 10593 qTy))), 10594 Close 10595 (Var("v", 10596 CTy"PSR"), 10597 MW(Close 10598 (qVar"s", 10599 Rupd 10600 ("CPSR", 10601 TP[qVar"s", 10602 Var("v", 10603 CTy"PSR")]))))), 10604 Close 10605 (AVar 10606 uTy, 10607 MB(MR(Close 10608 (qVar"s", 10609 Dest 10610 ("CPSR", 10611 CTy"PSR", 10612 qVar"s"))), 10613 Close 10614 (Var("v", 10615 CTy"PSR"), 10616 MB(MB(MB(MB(MR(Close 10617 (qVar"s", 10618 Dest 10619 ("CP15", 10620 CTy"CP15", 10621 qVar"s"))), 10622 Close 10623 (Var("v0", 10624 CTy"CP15"), 10625 MB(MB(MU(Dest 10626 ("SCTLR", 10627 CTy"SCTLR", 10628 Var("v0", 10629 CTy"CP15")), 10630 qTy), 10631 Close 10632 (Var("v", 10633 CTy"SCTLR"), 10634 MU(Dest 10635 ("EE", 10636 bTy, 10637 Var("v", 10638 CTy"SCTLR")), 10639 qTy))), 10640 Close 10641 (bVar"v0", 10642 MU(TP[Var("v", 10643 CTy"PSR"), 10644 bVar"v0"], 10645 qTy))))), 10646 Close 10647 (Var("v", 10648 PTy(CTy"PSR", 10649 bTy)), 10650 MU(Rupd 10651 ("E", 10652 Var("v", 10653 PTy(CTy"PSR", 10654 bTy))), 10655 qTy))), 10656 Close 10657 (Var("v", 10658 CTy"PSR"), 10659 MW(Close 10660 (qVar"s", 10661 Rupd 10662 ("CPSR", 10663 TP[qVar"s", 10664 Var("v", 10665 CTy"PSR")]))))), 10666 Close 10667 (AVar 10668 uTy, 10669 MB(MR(Close 10670 (qVar"s", 10671 Dest 10672 ("CP15", 10673 CTy"CP15", 10674 qVar"s"))), 10675 Close 10676 (Var("v", 10677 CTy"CP15"), 10678 MB(MB(MU(Dest 10679 ("SCTLR", 10680 CTy"SCTLR", 10681 Var("v", 10682 CTy"CP15")), 10683 qTy), 10684 Close 10685 (Var("v", 10686 CTy"SCTLR"), 10687 MU(Dest 10688 ("VE", 10689 bTy, 10690 Var("v", 10691 CTy"SCTLR")), 10692 qTy))), 10693 Close 10694 (bVar"b", 10695 ITE(bVar"b", 10696 Call 10697 ("raise'exception", 10698 ATy(qTy, 10699 PTy(uTy, 10700 qTy)), 10701 Call 10702 ("IMPLEMENTATION_DEFINED", 10703 CTy"exception", 10704 LS 10705 "branch to an IRQ vector")), 10706 MB(Call 10707 ("ExcVectorBase", 10708 ATy(qTy, 10709 PTy(F32, 10710 qTy)), 10711 LU), 10712 Close 10713 (Var("v", 10714 F32), 10715 MB(MU(Bop(Add, 10716 Var("v", 10717 F32), 10718 Var("vect_offset", 10719 F32)), 10720 qTy), 10721 Close 10722 (Var("v", 10723 F32), 10724 Call 10725 ("BranchTo", 10726 ATy(qTy, 10727 PTy(uTy, 10728 qTy)), 10729 Var("v", 10730 F32)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 10731; 10732val TakeVirtualIRQException_def = Def 10733 ("TakeVirtualIRQException",AVar uTy, 10734 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 10735 Close 10736 (Var("v",CTy"PSR"), 10737 MB(MB(MU(Dest("T",bTy,Var("v",CTy"PSR")),qTy), 10738 Close 10739 (bVar"b", 10740 ITE(bVar"b",Const("PC",ATy(qTy,PTy(F32,qTy))), 10741 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 10742 Close 10743 (Var("v",F32), 10744 MU(Bop(Sub,Var("v",F32),LW(4,32)),qTy)))))), 10745 Close 10746 (Var("new_lr_value",F32), 10747 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 10748 Close 10749 (Var("new_spsr_value",CTy"PSR"), 10750 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 10751 Close 10752 (Var("v",CTy"PSR"), 10753 MB(MB(MB(MU(TP[Var("v",CTy"PSR"),LW(18,5)],qTy), 10754 Close 10755 (Var("v",PTy(CTy"PSR",FTy 5)), 10756 MU(Rupd 10757 ("M", 10758 Var("v",PTy(CTy"PSR",FTy 5))), 10759 qTy))), 10760 Close 10761 (Var("v",CTy"PSR"), 10762 MW(Close 10763 (qVar"s", 10764 Rupd 10765 ("CPSR", 10766 TP[qVar"s",Var("v",CTy"PSR")]))))), 10767 Close 10768 (AVar uTy, 10769 MB(Call 10770 ("write'SPSR",ATy(qTy,PTy(uTy,qTy)), 10771 Var("new_spsr_value",CTy"PSR")), 10772 Close 10773 (AVar uTy, 10774 MB(Call 10775 ("write'R", 10776 ATy(qTy,PTy(uTy,qTy)), 10777 TP[Var("new_lr_value",F32), 10778 LW(14,4)]), 10779 Close 10780 (AVar uTy, 10781 MB(MR(Close 10782 (qVar"s", 10783 Dest 10784 ("CPSR",CTy"PSR", 10785 qVar"s"))), 10786 Close 10787 (Var("v",CTy"PSR"), 10788 MB(MB(MB(MU(TP[Var("v", 10789 CTy"PSR"), 10790 LT],qTy), 10791 Close 10792 (Var("v", 10793 PTy(CTy"PSR", 10794 bTy)), 10795 MU(Rupd 10796 ("I", 10797 Var("v", 10798 PTy(CTy"PSR", 10799 bTy))), 10800 qTy))), 10801 Close 10802 (Var("v", 10803 CTy"PSR"), 10804 MW(Close 10805 (qVar"s", 10806 Rupd 10807 ("CPSR", 10808 TP[qVar"s", 10809 Var("v", 10810 CTy"PSR")]))))), 10811 Close 10812 (AVar uTy, 10813 MB(MR(Close 10814 (qVar"s", 10815 Dest 10816 ("CPSR", 10817 CTy"PSR", 10818 qVar"s"))), 10819 Close 10820 (Var("v", 10821 CTy"PSR"), 10822 MB(MB(MB(MU(TP[Var("v", 10823 CTy"PSR"), 10824 LT], 10825 qTy), 10826 Close 10827 (Var("v", 10828 PTy(CTy"PSR", 10829 bTy)), 10830 MU(Rupd 10831 ("A", 10832 Var("v", 10833 PTy(CTy"PSR", 10834 bTy))), 10835 qTy))), 10836 Close 10837 (Var("v", 10838 CTy"PSR"), 10839 MW(Close 10840 (qVar"s", 10841 Rupd 10842 ("CPSR", 10843 TP[qVar"s", 10844 Var("v", 10845 CTy"PSR")]))))), 10846 Close 10847 (AVar 10848 uTy, 10849 MB(MR(Close 10850 (qVar"s", 10851 Dest 10852 ("CPSR", 10853 CTy"PSR", 10854 qVar"s"))), 10855 Close 10856 (Var("v", 10857 CTy"PSR"), 10858 MB(MB(MB(MU(TP[Var("v", 10859 CTy"PSR"), 10860 LW(0, 10861 8)], 10862 qTy), 10863 Close 10864 (Var("v", 10865 PTy(CTy"PSR", 10866 F8)), 10867 MU(Rupd 10868 ("IT", 10869 Var("v", 10870 PTy(CTy"PSR", 10871 F8))), 10872 qTy))), 10873 Close 10874 (Var("v", 10875 CTy"PSR"), 10876 MW(Close 10877 (qVar"s", 10878 Rupd 10879 ("CPSR", 10880 TP[qVar"s", 10881 Var("v", 10882 CTy"PSR")]))))), 10883 Close 10884 (AVar 10885 uTy, 10886 MB(MR(Close 10887 (qVar"s", 10888 Dest 10889 ("CPSR", 10890 CTy"PSR", 10891 qVar"s"))), 10892 Close 10893 (Var("v", 10894 CTy"PSR"), 10895 MB(MB(MB(MU(TP[Var("v", 10896 CTy"PSR"), 10897 LF], 10898 qTy), 10899 Close 10900 (Var("v", 10901 PTy(CTy"PSR", 10902 bTy)), 10903 MU(Rupd 10904 ("J", 10905 Var("v", 10906 PTy(CTy"PSR", 10907 bTy))), 10908 qTy))), 10909 Close 10910 (Var("v", 10911 CTy"PSR"), 10912 MW(Close 10913 (qVar"s", 10914 Rupd 10915 ("CPSR", 10916 TP[qVar"s", 10917 Var("v", 10918 CTy"PSR")]))))), 10919 Close 10920 (AVar 10921 uTy, 10922 MB(MR(Close 10923 (qVar"s", 10924 Dest 10925 ("CPSR", 10926 CTy"PSR", 10927 qVar"s"))), 10928 Close 10929 (Var("v", 10930 CTy"PSR"), 10931 MB(MB(MB(MB(MR(Close 10932 (qVar"s", 10933 Dest 10934 ("CP15", 10935 CTy"CP15", 10936 qVar"s"))), 10937 Close 10938 (Var("v0", 10939 CTy"CP15"), 10940 MB(MB(MU(Dest 10941 ("SCTLR", 10942 CTy"SCTLR", 10943 Var("v0", 10944 CTy"CP15")), 10945 qTy), 10946 Close 10947 (Var("v", 10948 CTy"SCTLR"), 10949 MU(Dest 10950 ("TE", 10951 bTy, 10952 Var("v", 10953 CTy"SCTLR")), 10954 qTy))), 10955 Close 10956 (bVar"v0", 10957 MU(TP[Var("v", 10958 CTy"PSR"), 10959 bVar"v0"], 10960 qTy))))), 10961 Close 10962 (Var("v", 10963 PTy(CTy"PSR", 10964 bTy)), 10965 MU(Rupd 10966 ("T", 10967 Var("v", 10968 PTy(CTy"PSR", 10969 bTy))), 10970 qTy))), 10971 Close 10972 (Var("v", 10973 CTy"PSR"), 10974 MW(Close 10975 (qVar"s", 10976 Rupd 10977 ("CPSR", 10978 TP[qVar"s", 10979 Var("v", 10980 CTy"PSR")]))))), 10981 Close 10982 (AVar 10983 uTy, 10984 MB(MR(Close 10985 (qVar"s", 10986 Dest 10987 ("CPSR", 10988 CTy"PSR", 10989 qVar"s"))), 10990 Close 10991 (Var("v", 10992 CTy"PSR"), 10993 MB(MB(MB(MB(MR(Close 10994 (qVar"s", 10995 Dest 10996 ("CP15", 10997 CTy"CP15", 10998 qVar"s"))), 10999 Close 11000 (Var("v0", 11001 CTy"CP15"), 11002 MB(MB(MU(Dest 11003 ("SCTLR", 11004 CTy"SCTLR", 11005 Var("v0", 11006 CTy"CP15")), 11007 qTy), 11008 Close 11009 (Var("v", 11010 CTy"SCTLR"), 11011 MU(Dest 11012 ("EE", 11013 bTy, 11014 Var("v", 11015 CTy"SCTLR")), 11016 qTy))), 11017 Close 11018 (bVar"v0", 11019 MU(TP[Var("v", 11020 CTy"PSR"), 11021 bVar"v0"], 11022 qTy))))), 11023 Close 11024 (Var("v", 11025 PTy(CTy"PSR", 11026 bTy)), 11027 MU(Rupd 11028 ("E", 11029 Var("v", 11030 PTy(CTy"PSR", 11031 bTy))), 11032 qTy))), 11033 Close 11034 (Var("v", 11035 CTy"PSR"), 11036 MW(Close 11037 (qVar"s", 11038 Rupd 11039 ("CPSR", 11040 TP[qVar"s", 11041 Var("v", 11042 CTy"PSR")]))))), 11043 Close 11044 (AVar 11045 uTy, 11046 MB(MR(Close 11047 (qVar"s", 11048 Dest 11049 ("CP15", 11050 CTy"CP15", 11051 qVar"s"))), 11052 Close 11053 (Var("v", 11054 CTy"CP15"), 11055 MB(MB(MU(Dest 11056 ("SCTLR", 11057 CTy"SCTLR", 11058 Var("v", 11059 CTy"CP15")), 11060 qTy), 11061 Close 11062 (Var("v", 11063 CTy"SCTLR"), 11064 MU(Dest 11065 ("VE", 11066 bTy, 11067 Var("v", 11068 CTy"SCTLR")), 11069 qTy))), 11070 Close 11071 (bVar"b", 11072 ITE(bVar"b", 11073 Call 11074 ("raise'exception", 11075 ATy(qTy, 11076 PTy(uTy, 11077 qTy)), 11078 Call 11079 ("IMPLEMENTATION_DEFINED", 11080 CTy"exception", 11081 LS 11082 "branch to an IRQ vector")), 11083 MB(Call 11084 ("ExcVectorBase", 11085 ATy(qTy, 11086 PTy(F32, 11087 qTy)), 11088 LU), 11089 Close 11090 (Var("v", 11091 F32), 11092 MB(MU(Bop(Add, 11093 Var("v", 11094 F32), 11095 LW(24, 11096 32)), 11097 qTy), 11098 Close 11099 (Var("v", 11100 F32), 11101 Call 11102 ("BranchTo", 11103 ATy(qTy, 11104 PTy(uTy, 11105 qTy)), 11106 Var("v", 11107 F32)))))))))))))))))))))))))))))))))))))))))))))))))) 11108; 11109val TakePhysicalFIQException_def = Def 11110 ("TakePhysicalFIQException",AVar uTy, 11111 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 11112 Close 11113 (Var("v",CTy"PSR"), 11114 MB(MB(MU(Dest("T",bTy,Var("v",CTy"PSR")),qTy), 11115 Close 11116 (bVar"b", 11117 ITE(bVar"b",Const("PC",ATy(qTy,PTy(F32,qTy))), 11118 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 11119 Close 11120 (Var("v",F32), 11121 MU(Bop(Sub,Var("v",F32),LW(4,32)),qTy)))))), 11122 Close 11123 (Var("new_lr_value",F32), 11124 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 11125 Close 11126 (Var("new_spsr_value",CTy"PSR"), 11127 Let(Var("vect_offset",F32),LW(28,32), 11128 MB(Call 11129 ("HaveSecurityExt",ATy(qTy,PTy(bTy,qTy)),LU), 11130 Close 11131 (bVar"v", 11132 MB(ITE(bVar"v", 11133 MB(MR(Close 11134 (qVar"s", 11135 Dest 11136 ("CP15",CTy"CP15",qVar"s"))), 11137 Close 11138 (Var("v",CTy"CP15"), 11139 MB(MU(Dest 11140 ("SCR",CTy"SCR", 11141 Var("v",CTy"CP15")), 11142 qTy), 11143 Close 11144 (Var("v",CTy"SCR"), 11145 MU(Dest 11146 ("FIQ",bTy, 11147 Var("v",CTy"SCR")), 11148 qTy))))),MU(LF,qTy)), 11149 Close 11150 (bVar"route_to_monitor", 11151 MB(Call 11152 ("HaveVirtExt", 11153 ATy(qTy,PTy(bTy,qTy)),LU), 11154 Close 11155 (bVar"v", 11156 MB(MB(MB(MB(MB(ITE(bVar"v", 11157 Call 11158 ("HaveSecurityExt", 11159 ATy(qTy, 11160 PTy(bTy, 11161 qTy)), 11162 LU), 11163 MU(LF,qTy)), 11164 Close 11165 (bVar"b", 11166 ITE(bVar"b", 11167 MB(MR(Close 11168 (qVar"s", 11169 Dest 11170 ("CP15", 11171 CTy"CP15", 11172 qVar"s"))), 11173 Close 11174 (Var("v", 11175 CTy"CP15"), 11176 MB(MB(MU(Dest 11177 ("SCR", 11178 CTy"SCR", 11179 Var("v", 11180 CTy"CP15")), 11181 qTy), 11182 Close 11183 (Var("v", 11184 CTy"SCR"), 11185 MU(Dest 11186 ("FIQ", 11187 bTy, 11188 Var("v", 11189 CTy"SCR")), 11190 qTy))), 11191 Close 11192 (bVar"v", 11193 MU(Mop(Not, 11194 bVar"v"), 11195 qTy))))), 11196 MU(LF,qTy)))), 11197 Close 11198 (bVar"b", 11199 ITE(bVar"b", 11200 MB(MR(Close 11201 (qVar"s", 11202 Dest 11203 ("CP15", 11204 CTy"CP15", 11205 qVar"s"))), 11206 Close 11207 (Var("v", 11208 CTy"CP15"), 11209 MB(MU(Dest 11210 ("HCR", 11211 CTy"HCR", 11212 Var("v", 11213 CTy"CP15")), 11214 qTy), 11215 Close 11216 (Var("v", 11217 CTy"HCR"), 11218 MU(Dest 11219 ("FMO", 11220 bTy, 11221 Var("v", 11222 CTy"HCR")), 11223 qTy))))), 11224 MU(LF,qTy)))), 11225 Close 11226 (bVar"b", 11227 ITE(bVar"b", 11228 MB(Call 11229 ("IsSecure", 11230 ATy(qTy, 11231 PTy(bTy, 11232 qTy)), 11233 LU), 11234 Close 11235 (bVar"v", 11236 MU(Mop(Not, 11237 bVar"v"), 11238 qTy))), 11239 MU(LF,qTy)))), 11240 Close 11241 (bVar"b", 11242 ITE(bVar"b", 11243 MU(LT,qTy), 11244 MB(MR(Close 11245 (qVar"s", 11246 Dest 11247 ("CPSR", 11248 CTy"PSR", 11249 qVar"s"))), 11250 Close 11251 (Var("v", 11252 CTy"PSR"), 11253 MB(MU(Dest 11254 ("M", 11255 FTy 5, 11256 Var("v", 11257 CTy"PSR")), 11258 qTy), 11259 Close 11260 (Var("v", 11261 FTy 5), 11262 MU(EQ(Var("v", 11263 FTy 5), 11264 LW(26, 11265 5)), 11266 qTy)))))))), 11267 Close 11268 (bVar"route_to_hyp", 11269 ITB([(bVar"route_to_monitor", 11270 MB(MR(Close 11271 (qVar"s", 11272 Dest 11273 ("CPSR", 11274 CTy"PSR", 11275 qVar"s"))), 11276 Close 11277 (Var("v", 11278 CTy"PSR"), 11279 MB(MB(MB(MU(Dest 11280 ("M", 11281 FTy 5, 11282 Var("v", 11283 CTy"PSR")), 11284 qTy), 11285 Close 11286 (Var("v", 11287 FTy 5), 11288 MU(EQ(Var("v", 11289 FTy 5), 11290 LW(22, 11291 5)), 11292 qTy))), 11293 Close 11294 (bVar"b", 11295 ITE(bVar"b", 11296 MB(MR(Close 11297 (qVar"s", 11298 Dest 11299 ("CP15", 11300 CTy"CP15", 11301 qVar"s"))), 11302 Close 11303 (Var("v", 11304 CTy"CP15"), 11305 MB(MU(Dest 11306 ("SCR", 11307 CTy"SCR", 11308 Var("v", 11309 CTy"CP15")), 11310 qTy), 11311 Close 11312 (Var("x0", 11313 CTy"SCR"), 11314 MB(MR(Close 11315 (qVar"s", 11316 Dest 11317 ("CP15", 11318 CTy"CP15", 11319 qVar"s"))), 11320 Close 11321 (Var("v", 11322 CTy"CP15"), 11323 MB(MB(MU(TP[Var("v", 11324 CTy"CP15"), 11325 Rupd 11326 ("NS", 11327 TP[Var("x0", 11328 CTy"SCR"), 11329 LF])], 11330 qTy), 11331 Close 11332 (Var("v", 11333 PTy(CTy"CP15", 11334 CTy"SCR")), 11335 MU(Rupd 11336 ("SCR", 11337 Var("v", 11338 PTy(CTy"CP15", 11339 CTy"SCR"))), 11340 qTy))), 11341 Close 11342 (Var("v", 11343 CTy"CP15"), 11344 MW(Close 11345 (qVar"s", 11346 Rupd 11347 ("CP15", 11348 TP[qVar"s", 11349 Var("v", 11350 CTy"CP15")]))))))))))), 11351 MU(LU, 11352 qTy)))), 11353 Close 11354 (AVar 11355 uTy, 11356 Call 11357 ("EnterMonitorMode", 11358 ATy(qTy, 11359 PTy(uTy, 11360 qTy)), 11361 TP[Var("new_spsr_value", 11362 CTy"PSR"), 11363 Var("new_lr_value", 11364 F32), 11365 Var("vect_offset", 11366 F32)])))))), 11367 (bVar"route_to_hyp", 11368 MB(MR(Close 11369 (qVar"s", 11370 Dest 11371 ("CP15", 11372 CTy"CP15", 11373 qVar"s"))), 11374 Close 11375 (Var("v", 11376 CTy"CP15"), 11377 MB(MB(MB(MU(TP[Var("v", 11378 CTy"CP15"), 11379 LX(CTy"HSR")], 11380 qTy), 11381 Close 11382 (Var("v", 11383 PTy(CTy"CP15", 11384 CTy"HSR")), 11385 MU(Rupd 11386 ("HSR", 11387 Var("v", 11388 PTy(CTy"CP15", 11389 CTy"HSR"))), 11390 qTy))), 11391 Close 11392 (Var("v", 11393 CTy"CP15"), 11394 MW(Close 11395 (qVar"s", 11396 Rupd 11397 ("CP15", 11398 TP[qVar"s", 11399 Var("v", 11400 CTy"CP15")]))))), 11401 Close 11402 (AVar 11403 uTy, 11404 Call 11405 ("EnterHypMode", 11406 ATy(qTy, 11407 PTy(uTy, 11408 qTy)), 11409 TP[Var("new_spsr_value", 11410 CTy"PSR"), 11411 Bop(Sub, 11412 Var("new_lr_value", 11413 F32), 11414 LW(4, 11415 32)), 11416 Var("vect_offset", 11417 F32)]))))))], 11418 MB(MR(Close 11419 (qVar"s", 11420 Dest 11421 ("CPSR", 11422 CTy"PSR", 11423 qVar"s"))), 11424 Close 11425 (Var("v", 11426 CTy"PSR"), 11427 MB(MB(MB(MU(Dest 11428 ("M", 11429 FTy 5, 11430 Var("v", 11431 CTy"PSR")), 11432 qTy), 11433 Close 11434 (Var("v", 11435 FTy 5), 11436 MU(EQ(Var("v", 11437 FTy 5), 11438 LW(22, 11439 5)), 11440 qTy))), 11441 Close 11442 (bVar"b", 11443 ITE(bVar"b", 11444 MB(MR(Close 11445 (qVar"s", 11446 Dest 11447 ("CP15", 11448 CTy"CP15", 11449 qVar"s"))), 11450 Close 11451 (Var("v", 11452 CTy"CP15"), 11453 MB(MU(Dest 11454 ("SCR", 11455 CTy"SCR", 11456 Var("v", 11457 CTy"CP15")), 11458 qTy), 11459 Close 11460 (Var("x0", 11461 CTy"SCR"), 11462 MB(MR(Close 11463 (qVar"s", 11464 Dest 11465 ("CP15", 11466 CTy"CP15", 11467 qVar"s"))), 11468 Close 11469 (Var("v", 11470 CTy"CP15"), 11471 MB(MB(MU(TP[Var("v", 11472 CTy"CP15"), 11473 Rupd 11474 ("NS", 11475 TP[Var("x0", 11476 CTy"SCR"), 11477 LF])], 11478 qTy), 11479 Close 11480 (Var("v", 11481 PTy(CTy"CP15", 11482 CTy"SCR")), 11483 MU(Rupd 11484 ("SCR", 11485 Var("v", 11486 PTy(CTy"CP15", 11487 CTy"SCR"))), 11488 qTy))), 11489 Close 11490 (Var("v", 11491 CTy"CP15"), 11492 MW(Close 11493 (qVar"s", 11494 Rupd 11495 ("CP15", 11496 TP[qVar"s", 11497 Var("v", 11498 CTy"CP15")]))))))))))), 11499 MU(LU, 11500 qTy)))), 11501 Close 11502 (AVar uTy, 11503 MB(MR(Close 11504 (qVar"s", 11505 Dest 11506 ("CPSR", 11507 CTy"PSR", 11508 qVar"s"))), 11509 Close 11510 (Var("v", 11511 CTy"PSR"), 11512 MB(MB(MB(MU(TP[Var("v", 11513 CTy"PSR"), 11514 LW(17, 11515 5)], 11516 qTy), 11517 Close 11518 (Var("v", 11519 PTy(CTy"PSR", 11520 FTy 5)), 11521 MU(Rupd 11522 ("M", 11523 Var("v", 11524 PTy(CTy"PSR", 11525 FTy 5))), 11526 qTy))), 11527 Close 11528 (Var("v", 11529 CTy"PSR"), 11530 MW(Close 11531 (qVar"s", 11532 Rupd 11533 ("CPSR", 11534 TP[qVar"s", 11535 Var("v", 11536 CTy"PSR")]))))), 11537 Close 11538 (AVar 11539 uTy, 11540 MB(Call 11541 ("write'SPSR", 11542 ATy(qTy, 11543 PTy(uTy, 11544 qTy)), 11545 Var("new_spsr_value", 11546 CTy"PSR")), 11547 Close 11548 (AVar 11549 uTy, 11550 MB(Call 11551 ("write'R", 11552 ATy(qTy, 11553 PTy(uTy, 11554 qTy)), 11555 TP[Var("new_lr_value", 11556 F32), 11557 LW(14, 11558 4)]), 11559 Close 11560 (AVar 11561 uTy, 11562 MB(MR(Close 11563 (qVar"s", 11564 Dest 11565 ("CPSR", 11566 CTy"PSR", 11567 qVar"s"))), 11568 Close 11569 (Var("v", 11570 CTy"PSR"), 11571 MB(MB(MB(MU(TP[Var("v", 11572 CTy"PSR"), 11573 LT], 11574 qTy), 11575 Close 11576 (Var("v", 11577 PTy(CTy"PSR", 11578 bTy)), 11579 MU(Rupd 11580 ("I", 11581 Var("v", 11582 PTy(CTy"PSR", 11583 bTy))), 11584 qTy))), 11585 Close 11586 (Var("v", 11587 CTy"PSR"), 11588 MW(Close 11589 (qVar"s", 11590 Rupd 11591 ("CPSR", 11592 TP[qVar"s", 11593 Var("v", 11594 CTy"PSR")]))))), 11595 Close 11596 (AVar 11597 uTy, 11598 MB(Call 11599 ("HaveSecurityExt", 11600 ATy(qTy, 11601 PTy(bTy, 11602 qTy)), 11603 LU), 11604 Close 11605 (bVar"v", 11606 MB(MB(MB(MB(MB(MU(Mop(Not, 11607 bVar"v"), 11608 qTy), 11609 Close 11610 (bVar"b", 11611 ITE(bVar"b", 11612 MU(LT, 11613 qTy), 11614 Call 11615 ("HaveVirtExt", 11616 ATy(qTy, 11617 PTy(bTy, 11618 qTy)), 11619 LU)))), 11620 Close 11621 (bVar"b", 11622 ITE(bVar"b", 11623 MU(LT, 11624 qTy), 11625 MB(MR(Close 11626 (qVar"s", 11627 Dest 11628 ("CP15", 11629 CTy"CP15", 11630 qVar"s"))), 11631 Close 11632 (Var("v", 11633 CTy"CP15"), 11634 MB(MB(MU(Dest 11635 ("SCR", 11636 CTy"SCR", 11637 Var("v", 11638 CTy"CP15")), 11639 qTy), 11640 Close 11641 (Var("v", 11642 CTy"SCR"), 11643 MU(Dest 11644 ("NS", 11645 bTy, 11646 Var("v", 11647 CTy"SCR")), 11648 qTy))), 11649 Close 11650 (bVar"v", 11651 MU(Mop(Not, 11652 bVar"v"), 11653 qTy)))))))), 11654 Close 11655 (bVar"b", 11656 ITE(bVar"b", 11657 MU(LT, 11658 qTy), 11659 MB(MR(Close 11660 (qVar"s", 11661 Dest 11662 ("CP15", 11663 CTy"CP15", 11664 qVar"s"))), 11665 Close 11666 (Var("v", 11667 CTy"CP15"), 11668 MB(MU(Dest 11669 ("SCR", 11670 CTy"SCR", 11671 Var("v", 11672 CTy"CP15")), 11673 qTy), 11674 Close 11675 (Var("v", 11676 CTy"SCR"), 11677 MU(Dest 11678 ("FW", 11679 bTy, 11680 Var("v", 11681 CTy"SCR")), 11682 qTy)))))))), 11683 Close 11684 (bVar"b", 11685 ITE(bVar"b", 11686 MB(MR(Close 11687 (qVar"s", 11688 Dest 11689 ("CPSR", 11690 CTy"PSR", 11691 qVar"s"))), 11692 Close 11693 (Var("v", 11694 CTy"PSR"), 11695 MB(MB(MU(TP[Var("v", 11696 CTy"PSR"), 11697 LT], 11698 qTy), 11699 Close 11700 (Var("v", 11701 PTy(CTy"PSR", 11702 bTy)), 11703 MU(Rupd 11704 ("F", 11705 Var("v", 11706 PTy(CTy"PSR", 11707 bTy))), 11708 qTy))), 11709 Close 11710 (Var("v", 11711 CTy"PSR"), 11712 MW(Close 11713 (qVar"s", 11714 Rupd 11715 ("CPSR", 11716 TP[qVar"s", 11717 Var("v", 11718 CTy"PSR")]))))))), 11719 MU(LU, 11720 qTy)))), 11721 Close 11722 (AVar 11723 uTy, 11724 MB(Call 11725 ("HaveSecurityExt", 11726 ATy(qTy, 11727 PTy(bTy, 11728 qTy)), 11729 LU), 11730 Close 11731 (bVar"v", 11732 MB(MB(MB(MB(MB(MU(Mop(Not, 11733 bVar"v"), 11734 qTy), 11735 Close 11736 (bVar"b", 11737 ITE(bVar"b", 11738 MU(LT, 11739 qTy), 11740 Call 11741 ("HaveVirtExt", 11742 ATy(qTy, 11743 PTy(bTy, 11744 qTy)), 11745 LU)))), 11746 Close 11747 (bVar"b", 11748 ITE(bVar"b", 11749 MU(LT, 11750 qTy), 11751 MB(MR(Close 11752 (qVar"s", 11753 Dest 11754 ("CP15", 11755 CTy"CP15", 11756 qVar"s"))), 11757 Close 11758 (Var("v", 11759 CTy"CP15"), 11760 MB(MB(MU(Dest 11761 ("SCR", 11762 CTy"SCR", 11763 Var("v", 11764 CTy"CP15")), 11765 qTy), 11766 Close 11767 (Var("v", 11768 CTy"SCR"), 11769 MU(Dest 11770 ("NS", 11771 bTy, 11772 Var("v", 11773 CTy"SCR")), 11774 qTy))), 11775 Close 11776 (bVar"v", 11777 MU(Mop(Not, 11778 bVar"v"), 11779 qTy)))))))), 11780 Close 11781 (bVar"b", 11782 ITE(bVar"b", 11783 MU(LT, 11784 qTy), 11785 MB(MR(Close 11786 (qVar"s", 11787 Dest 11788 ("CP15", 11789 CTy"CP15", 11790 qVar"s"))), 11791 Close 11792 (Var("v", 11793 CTy"CP15"), 11794 MB(MU(Dest 11795 ("SCR", 11796 CTy"SCR", 11797 Var("v", 11798 CTy"CP15")), 11799 qTy), 11800 Close 11801 (Var("v", 11802 CTy"SCR"), 11803 MU(Dest 11804 ("AW", 11805 bTy, 11806 Var("v", 11807 CTy"SCR")), 11808 qTy)))))))), 11809 Close 11810 (bVar"b", 11811 ITE(bVar"b", 11812 MB(MR(Close 11813 (qVar"s", 11814 Dest 11815 ("CPSR", 11816 CTy"PSR", 11817 qVar"s"))), 11818 Close 11819 (Var("v", 11820 CTy"PSR"), 11821 MB(MB(MU(TP[Var("v", 11822 CTy"PSR"), 11823 LT], 11824 qTy), 11825 Close 11826 (Var("v", 11827 PTy(CTy"PSR", 11828 bTy)), 11829 MU(Rupd 11830 ("A", 11831 Var("v", 11832 PTy(CTy"PSR", 11833 bTy))), 11834 qTy))), 11835 Close 11836 (Var("v", 11837 CTy"PSR"), 11838 MW(Close 11839 (qVar"s", 11840 Rupd 11841 ("CPSR", 11842 TP[qVar"s", 11843 Var("v", 11844 CTy"PSR")]))))))), 11845 MU(LU, 11846 qTy)))), 11847 Close 11848 (AVar 11849 uTy, 11850 MB(MR(Close 11851 (qVar"s", 11852 Dest 11853 ("CPSR", 11854 CTy"PSR", 11855 qVar"s"))), 11856 Close 11857 (Var("v", 11858 CTy"PSR"), 11859 MB(MB(MB(MU(TP[Var("v", 11860 CTy"PSR"), 11861 LW(0, 11862 8)], 11863 qTy), 11864 Close 11865 (Var("v", 11866 PTy(CTy"PSR", 11867 F8)), 11868 MU(Rupd 11869 ("IT", 11870 Var("v", 11871 PTy(CTy"PSR", 11872 F8))), 11873 qTy))), 11874 Close 11875 (Var("v", 11876 CTy"PSR"), 11877 MW(Close 11878 (qVar"s", 11879 Rupd 11880 ("CPSR", 11881 TP[qVar"s", 11882 Var("v", 11883 CTy"PSR")]))))), 11884 Close 11885 (AVar 11886 uTy, 11887 MB(MR(Close 11888 (qVar"s", 11889 Dest 11890 ("CPSR", 11891 CTy"PSR", 11892 qVar"s"))), 11893 Close 11894 (Var("v", 11895 CTy"PSR"), 11896 MB(MB(MB(MU(TP[Var("v", 11897 CTy"PSR"), 11898 LF], 11899 qTy), 11900 Close 11901 (Var("v", 11902 PTy(CTy"PSR", 11903 bTy)), 11904 MU(Rupd 11905 ("J", 11906 Var("v", 11907 PTy(CTy"PSR", 11908 bTy))), 11909 qTy))), 11910 Close 11911 (Var("v", 11912 CTy"PSR"), 11913 MW(Close 11914 (qVar"s", 11915 Rupd 11916 ("CPSR", 11917 TP[qVar"s", 11918 Var("v", 11919 CTy"PSR")]))))), 11920 Close 11921 (AVar 11922 uTy, 11923 MB(MR(Close 11924 (qVar"s", 11925 Dest 11926 ("CPSR", 11927 CTy"PSR", 11928 qVar"s"))), 11929 Close 11930 (Var("v", 11931 CTy"PSR"), 11932 MB(MB(MB(MB(MR(Close 11933 (qVar"s", 11934 Dest 11935 ("CP15", 11936 CTy"CP15", 11937 qVar"s"))), 11938 Close 11939 (Var("v0", 11940 CTy"CP15"), 11941 MB(MB(MU(Dest 11942 ("SCTLR", 11943 CTy"SCTLR", 11944 Var("v0", 11945 CTy"CP15")), 11946 qTy), 11947 Close 11948 (Var("v", 11949 CTy"SCTLR"), 11950 MU(Dest 11951 ("TE", 11952 bTy, 11953 Var("v", 11954 CTy"SCTLR")), 11955 qTy))), 11956 Close 11957 (bVar"v0", 11958 MU(TP[Var("v", 11959 CTy"PSR"), 11960 bVar"v0"], 11961 qTy))))), 11962 Close 11963 (Var("v", 11964 PTy(CTy"PSR", 11965 bTy)), 11966 MU(Rupd 11967 ("T", 11968 Var("v", 11969 PTy(CTy"PSR", 11970 bTy))), 11971 qTy))), 11972 Close 11973 (Var("v", 11974 CTy"PSR"), 11975 MW(Close 11976 (qVar"s", 11977 Rupd 11978 ("CPSR", 11979 TP[qVar"s", 11980 Var("v", 11981 CTy"PSR")]))))), 11982 Close 11983 (AVar 11984 uTy, 11985 MB(MR(Close 11986 (qVar"s", 11987 Dest 11988 ("CPSR", 11989 CTy"PSR", 11990 qVar"s"))), 11991 Close 11992 (Var("v", 11993 CTy"PSR"), 11994 MB(MB(MB(MB(MR(Close 11995 (qVar"s", 11996 Dest 11997 ("CP15", 11998 CTy"CP15", 11999 qVar"s"))), 12000 Close 12001 (Var("v0", 12002 CTy"CP15"), 12003 MB(MB(MU(Dest 12004 ("SCTLR", 12005 CTy"SCTLR", 12006 Var("v0", 12007 CTy"CP15")), 12008 qTy), 12009 Close 12010 (Var("v", 12011 CTy"SCTLR"), 12012 MU(Dest 12013 ("EE", 12014 bTy, 12015 Var("v", 12016 CTy"SCTLR")), 12017 qTy))), 12018 Close 12019 (bVar"v0", 12020 MU(TP[Var("v", 12021 CTy"PSR"), 12022 bVar"v0"], 12023 qTy))))), 12024 Close 12025 (Var("v", 12026 PTy(CTy"PSR", 12027 bTy)), 12028 MU(Rupd 12029 ("E", 12030 Var("v", 12031 PTy(CTy"PSR", 12032 bTy))), 12033 qTy))), 12034 Close 12035 (Var("v", 12036 CTy"PSR"), 12037 MW(Close 12038 (qVar"s", 12039 Rupd 12040 ("CPSR", 12041 TP[qVar"s", 12042 Var("v", 12043 CTy"PSR")]))))), 12044 Close 12045 (AVar 12046 uTy, 12047 MB(MR(Close 12048 (qVar"s", 12049 Dest 12050 ("CP15", 12051 CTy"CP15", 12052 qVar"s"))), 12053 Close 12054 (Var("v", 12055 CTy"CP15"), 12056 MB(MB(MU(Dest 12057 ("SCTLR", 12058 CTy"SCTLR", 12059 Var("v", 12060 CTy"CP15")), 12061 qTy), 12062 Close 12063 (Var("v", 12064 CTy"SCTLR"), 12065 MU(Dest 12066 ("VE", 12067 bTy, 12068 Var("v", 12069 CTy"SCTLR")), 12070 qTy))), 12071 Close 12072 (bVar"b", 12073 ITE(bVar"b", 12074 Call 12075 ("raise'exception", 12076 ATy(qTy, 12077 PTy(uTy, 12078 qTy)), 12079 Call 12080 ("IMPLEMENTATION_DEFINED", 12081 CTy"exception", 12082 LS 12083 "branch to an FIQ vector")), 12084 MB(Call 12085 ("ExcVectorBase", 12086 ATy(qTy, 12087 PTy(F32, 12088 qTy)), 12089 LU), 12090 Close 12091 (Var("v", 12092 F32), 12093 MB(MU(Bop(Add, 12094 Var("v", 12095 F32), 12096 Var("vect_offset", 12097 F32)), 12098 qTy), 12099 Close 12100 (Var("v", 12101 F32), 12102 Call 12103 ("BranchTo", 12104 ATy(qTy, 12105 PTy(uTy, 12106 qTy)), 12107 Var("v", 12108 F32)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 12109; 12110val TakeVirtualFIQException_def = Def 12111 ("TakeVirtualFIQException",AVar uTy, 12112 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 12113 Close 12114 (Var("v",CTy"PSR"), 12115 MB(MB(MU(Dest("T",bTy,Var("v",CTy"PSR")),qTy), 12116 Close 12117 (bVar"b", 12118 ITE(bVar"b",Const("PC",ATy(qTy,PTy(F32,qTy))), 12119 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 12120 Close 12121 (Var("v",F32), 12122 MU(Bop(Sub,Var("v",F32),LW(4,32)),qTy)))))), 12123 Close 12124 (Var("new_lr_value",F32), 12125 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 12126 Close 12127 (Var("new_spsr_value",CTy"PSR"), 12128 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 12129 Close 12130 (Var("v",CTy"PSR"), 12131 MB(MB(MB(MU(TP[Var("v",CTy"PSR"),LW(17,5)],qTy), 12132 Close 12133 (Var("v",PTy(CTy"PSR",FTy 5)), 12134 MU(Rupd 12135 ("M", 12136 Var("v",PTy(CTy"PSR",FTy 5))), 12137 qTy))), 12138 Close 12139 (Var("v",CTy"PSR"), 12140 MW(Close 12141 (qVar"s", 12142 Rupd 12143 ("CPSR", 12144 TP[qVar"s",Var("v",CTy"PSR")]))))), 12145 Close 12146 (AVar uTy, 12147 MB(Call 12148 ("write'SPSR",ATy(qTy,PTy(uTy,qTy)), 12149 Var("new_spsr_value",CTy"PSR")), 12150 Close 12151 (AVar uTy, 12152 MB(Call 12153 ("write'R", 12154 ATy(qTy,PTy(uTy,qTy)), 12155 TP[Var("new_lr_value",F32), 12156 LW(14,4)]), 12157 Close 12158 (AVar uTy, 12159 MB(MR(Close 12160 (qVar"s", 12161 Dest 12162 ("CPSR",CTy"PSR", 12163 qVar"s"))), 12164 Close 12165 (Var("v",CTy"PSR"), 12166 MB(MB(MB(MU(TP[Var("v", 12167 CTy"PSR"), 12168 LT],qTy), 12169 Close 12170 (Var("v", 12171 PTy(CTy"PSR", 12172 bTy)), 12173 MU(Rupd 12174 ("I", 12175 Var("v", 12176 PTy(CTy"PSR", 12177 bTy))), 12178 qTy))), 12179 Close 12180 (Var("v", 12181 CTy"PSR"), 12182 MW(Close 12183 (qVar"s", 12184 Rupd 12185 ("CPSR", 12186 TP[qVar"s", 12187 Var("v", 12188 CTy"PSR")]))))), 12189 Close 12190 (AVar uTy, 12191 MB(MR(Close 12192 (qVar"s", 12193 Dest 12194 ("CPSR", 12195 CTy"PSR", 12196 qVar"s"))), 12197 Close 12198 (Var("v", 12199 CTy"PSR"), 12200 MB(MB(MB(MU(TP[Var("v", 12201 CTy"PSR"), 12202 LT], 12203 qTy), 12204 Close 12205 (Var("v", 12206 PTy(CTy"PSR", 12207 bTy)), 12208 MU(Rupd 12209 ("F", 12210 Var("v", 12211 PTy(CTy"PSR", 12212 bTy))), 12213 qTy))), 12214 Close 12215 (Var("v", 12216 CTy"PSR"), 12217 MW(Close 12218 (qVar"s", 12219 Rupd 12220 ("CPSR", 12221 TP[qVar"s", 12222 Var("v", 12223 CTy"PSR")]))))), 12224 Close 12225 (AVar 12226 uTy, 12227 MB(MR(Close 12228 (qVar"s", 12229 Dest 12230 ("CPSR", 12231 CTy"PSR", 12232 qVar"s"))), 12233 Close 12234 (Var("v", 12235 CTy"PSR"), 12236 MB(MB(MB(MU(TP[Var("v", 12237 CTy"PSR"), 12238 LT], 12239 qTy), 12240 Close 12241 (Var("v", 12242 PTy(CTy"PSR", 12243 bTy)), 12244 MU(Rupd 12245 ("A", 12246 Var("v", 12247 PTy(CTy"PSR", 12248 bTy))), 12249 qTy))), 12250 Close 12251 (Var("v", 12252 CTy"PSR"), 12253 MW(Close 12254 (qVar"s", 12255 Rupd 12256 ("CPSR", 12257 TP[qVar"s", 12258 Var("v", 12259 CTy"PSR")]))))), 12260 Close 12261 (AVar 12262 uTy, 12263 MB(MR(Close 12264 (qVar"s", 12265 Dest 12266 ("CPSR", 12267 CTy"PSR", 12268 qVar"s"))), 12269 Close 12270 (Var("v", 12271 CTy"PSR"), 12272 MB(MB(MB(MU(TP[Var("v", 12273 CTy"PSR"), 12274 LW(0, 12275 8)], 12276 qTy), 12277 Close 12278 (Var("v", 12279 PTy(CTy"PSR", 12280 F8)), 12281 MU(Rupd 12282 ("IT", 12283 Var("v", 12284 PTy(CTy"PSR", 12285 F8))), 12286 qTy))), 12287 Close 12288 (Var("v", 12289 CTy"PSR"), 12290 MW(Close 12291 (qVar"s", 12292 Rupd 12293 ("CPSR", 12294 TP[qVar"s", 12295 Var("v", 12296 CTy"PSR")]))))), 12297 Close 12298 (AVar 12299 uTy, 12300 MB(MR(Close 12301 (qVar"s", 12302 Dest 12303 ("CPSR", 12304 CTy"PSR", 12305 qVar"s"))), 12306 Close 12307 (Var("v", 12308 CTy"PSR"), 12309 MB(MB(MB(MU(TP[Var("v", 12310 CTy"PSR"), 12311 LF], 12312 qTy), 12313 Close 12314 (Var("v", 12315 PTy(CTy"PSR", 12316 bTy)), 12317 MU(Rupd 12318 ("J", 12319 Var("v", 12320 PTy(CTy"PSR", 12321 bTy))), 12322 qTy))), 12323 Close 12324 (Var("v", 12325 CTy"PSR"), 12326 MW(Close 12327 (qVar"s", 12328 Rupd 12329 ("CPSR", 12330 TP[qVar"s", 12331 Var("v", 12332 CTy"PSR")]))))), 12333 Close 12334 (AVar 12335 uTy, 12336 MB(MR(Close 12337 (qVar"s", 12338 Dest 12339 ("CPSR", 12340 CTy"PSR", 12341 qVar"s"))), 12342 Close 12343 (Var("v", 12344 CTy"PSR"), 12345 MB(MB(MB(MB(MR(Close 12346 (qVar"s", 12347 Dest 12348 ("CP15", 12349 CTy"CP15", 12350 qVar"s"))), 12351 Close 12352 (Var("v0", 12353 CTy"CP15"), 12354 MB(MB(MU(Dest 12355 ("SCTLR", 12356 CTy"SCTLR", 12357 Var("v0", 12358 CTy"CP15")), 12359 qTy), 12360 Close 12361 (Var("v", 12362 CTy"SCTLR"), 12363 MU(Dest 12364 ("TE", 12365 bTy, 12366 Var("v", 12367 CTy"SCTLR")), 12368 qTy))), 12369 Close 12370 (bVar"v0", 12371 MU(TP[Var("v", 12372 CTy"PSR"), 12373 bVar"v0"], 12374 qTy))))), 12375 Close 12376 (Var("v", 12377 PTy(CTy"PSR", 12378 bTy)), 12379 MU(Rupd 12380 ("T", 12381 Var("v", 12382 PTy(CTy"PSR", 12383 bTy))), 12384 qTy))), 12385 Close 12386 (Var("v", 12387 CTy"PSR"), 12388 MW(Close 12389 (qVar"s", 12390 Rupd 12391 ("CPSR", 12392 TP[qVar"s", 12393 Var("v", 12394 CTy"PSR")]))))), 12395 Close 12396 (AVar 12397 uTy, 12398 MB(MR(Close 12399 (qVar"s", 12400 Dest 12401 ("CPSR", 12402 CTy"PSR", 12403 qVar"s"))), 12404 Close 12405 (Var("v", 12406 CTy"PSR"), 12407 MB(MB(MB(MB(MR(Close 12408 (qVar"s", 12409 Dest 12410 ("CP15", 12411 CTy"CP15", 12412 qVar"s"))), 12413 Close 12414 (Var("v0", 12415 CTy"CP15"), 12416 MB(MB(MU(Dest 12417 ("SCTLR", 12418 CTy"SCTLR", 12419 Var("v0", 12420 CTy"CP15")), 12421 qTy), 12422 Close 12423 (Var("v", 12424 CTy"SCTLR"), 12425 MU(Dest 12426 ("EE", 12427 bTy, 12428 Var("v", 12429 CTy"SCTLR")), 12430 qTy))), 12431 Close 12432 (bVar"v0", 12433 MU(TP[Var("v", 12434 CTy"PSR"), 12435 bVar"v0"], 12436 qTy))))), 12437 Close 12438 (Var("v", 12439 PTy(CTy"PSR", 12440 bTy)), 12441 MU(Rupd 12442 ("E", 12443 Var("v", 12444 PTy(CTy"PSR", 12445 bTy))), 12446 qTy))), 12447 Close 12448 (Var("v", 12449 CTy"PSR"), 12450 MW(Close 12451 (qVar"s", 12452 Rupd 12453 ("CPSR", 12454 TP[qVar"s", 12455 Var("v", 12456 CTy"PSR")]))))), 12457 Close 12458 (AVar 12459 uTy, 12460 MB(MR(Close 12461 (qVar"s", 12462 Dest 12463 ("CP15", 12464 CTy"CP15", 12465 qVar"s"))), 12466 Close 12467 (Var("v", 12468 CTy"CP15"), 12469 MB(MB(MU(Dest 12470 ("SCTLR", 12471 CTy"SCTLR", 12472 Var("v", 12473 CTy"CP15")), 12474 qTy), 12475 Close 12476 (Var("v", 12477 CTy"SCTLR"), 12478 MU(Dest 12479 ("VE", 12480 bTy, 12481 Var("v", 12482 CTy"SCTLR")), 12483 qTy))), 12484 Close 12485 (bVar"b", 12486 ITE(bVar"b", 12487 Call 12488 ("raise'exception", 12489 ATy(qTy, 12490 PTy(uTy, 12491 qTy)), 12492 Call 12493 ("IMPLEMENTATION_DEFINED", 12494 CTy"exception", 12495 LS 12496 "branch to an FIQ vector")), 12497 MB(Call 12498 ("ExcVectorBase", 12499 ATy(qTy, 12500 PTy(F32, 12501 qTy)), 12502 LU), 12503 Close 12504 (Var("v", 12505 F32), 12506 MB(MU(Bop(Add, 12507 Var("v", 12508 F32), 12509 LW(28, 12510 32)), 12511 qTy), 12512 Close 12513 (Var("v", 12514 F32), 12515 Call 12516 ("BranchTo", 12517 ATy(qTy, 12518 PTy(uTy, 12519 qTy)), 12520 Var("v", 12521 F32)))))))))))))))))))))))))))))))))))))))))))))))))))))) 12522; 12523val TakeHypTrapException_def = Def 12524 ("TakeHypTrapException",AVar uTy, 12525 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 12526 Close 12527 (Var("v",CTy"PSR"), 12528 MB(MB(MU(Dest("T",bTy,Var("v",CTy"PSR")),qTy), 12529 Close 12530 (bVar"b", 12531 ITE(bVar"b", 12532 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 12533 Close 12534 (Var("v",F32), 12535 MU(Bop(Sub,Var("v",F32),LW(4,32)),qTy))), 12536 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 12537 Close 12538 (Var("v",F32), 12539 MU(Bop(Sub,Var("v",F32),LW(8,32)),qTy)))))), 12540 Close 12541 (Var("preferred_exceptn_return",F32), 12542 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 12543 Close 12544 (Var("new_spsr_value",CTy"PSR"), 12545 Call 12546 ("EnterHypMode",ATy(qTy,PTy(uTy,qTy)), 12547 TP[Var("new_spsr_value",CTy"PSR"), 12548 Var("preferred_exceptn_return",F32),LW(20,32)])))))))) 12549; 12550val WriteHSR_def = Def 12551 ("WriteHSR",TP[Var("ec",FTy 6),Var("HSRString",FTy 25)], 12552 MN(LW(0,32), 12553 MB(MR(Close(Var("s",PTy(F32,qTy)),Mop(Fst,Var("s",PTy(F32,qTy))))), 12554 Close 12555 (Var("v",F32), 12556 MB(MB(MU(BFI(LN 31,LN 26,Var("ec",FTy 6),Var("v",F32)), 12557 PTy(F32,qTy)), 12558 Close 12559 (Var("v",F32), 12560 MW(Close 12561 (Var("s",PTy(F32,qTy)), 12562 TP[Var("v",F32),Mop(Snd,Var("s",PTy(F32,qTy)))])))), 12563 Close 12564 (AVar uTy, 12565 MB(ITE(Bop(Or, 12566 Mop(Not, 12567 EQ(EX(Var("ec",FTy 6),LN 5,LN 3,FTy 3), 12568 LW(4,3))), 12569 Bop(And,Bop(Bit,Var("ec",FTy 6),LN 2), 12570 Bop(Bit,Var("HSRString",FTy 25),LN 24))), 12571 MB(MR(Close 12572 (Var("s",PTy(F32,qTy)), 12573 Mop(Fst,Var("s",PTy(F32,qTy))))), 12574 Close 12575 (Var("v",F32), 12576 MB(MB(MD(Call 12577 ("ThisInstrLength", 12578 ATy(qTy,PTy(nTy,qTy)),LU),F32), 12579 Close 12580 (nVar"v0", 12581 MB(MB(MU(EQ(nVar"v0",LN 32), 12582 PTy(F32,qTy)), 12583 Close 12584 (bVar"v", 12585 MU(Mop(Cast F1,bVar"v"), 12586 PTy(F32,qTy)))), 12587 Close 12588 (Var("v0",F1), 12589 MU(BFI(LN 25,LN 25, 12590 Var("v0",F1), 12591 Var("v",F32)), 12592 PTy(F32,qTy)))))), 12593 Close 12594 (Var("v",F32), 12595 MW(Close 12596 (Var("s",PTy(F32,qTy)), 12597 TP[Var("v",F32), 12598 Mop(Snd, 12599 Var("s",PTy(F32,qTy)))])))))), 12600 MU(LU,PTy(F32,qTy))), 12601 Close 12602 (AVar uTy, 12603 MB(ITE(Bop(And, 12604 EQ(EX(Var("ec",FTy 6),LN 5,LN 4,FTy 2), 12605 LW(0,2)), 12606 Mop(Not, 12607 EQ(EX(Var("ec",FTy 6),LN 3,LN 0,F4), 12608 LW(0,4)))), 12609 MB(MD(Call 12610 ("CurrentInstrSet", 12611 ATy(qTy,PTy(CTy"InstrSet",qTy)),LU), 12612 F32), 12613 Close 12614 (Var("v",CTy"InstrSet"), 12615 MB(MU(EQ(Var("v",CTy"InstrSet"), 12616 LC("InstrSet_ARM", 12617 CTy"InstrSet")), 12618 PTy(F32,qTy)), 12619 Close 12620 (bVar"b", 12621 ITE(bVar"b", 12622 MB(MR(Close 12623 (Var("s", 12624 PTy(F32,qTy)), 12625 Mop(Fst, 12626 Var("s", 12627 PTy(F32, 12628 qTy))))), 12629 Close 12630 (Var("v",F32), 12631 MB(MB(MU(BFI(LN 24, 12632 LN 24, 12633 Mop(Cast 12634 F1, 12635 LT), 12636 Var("v", 12637 F32)), 12638 PTy(F32,qTy)), 12639 Close 12640 (Var("v",F32), 12641 MW(Close 12642 (Var("s", 12643 PTy(F32, 12644 qTy)), 12645 TP[Var("v", 12646 F32), 12647 Mop(Snd, 12648 Var("s", 12649 PTy(F32, 12650 qTy)))])))), 12651 Close 12652 (AVar uTy, 12653 MB(MR(Close 12654 (Var("s", 12655 PTy(F32, 12656 qTy)), 12657 Mop(Fst, 12658 Var("s", 12659 PTy(F32, 12660 qTy))))), 12661 Close 12662 (Var("v", 12663 F32), 12664 MB(MB(MD(Call 12665 ("CurrentCond", 12666 ATy(qTy, 12667 PTy(F4, 12668 qTy)), 12669 LU), 12670 F32), 12671 Close 12672 (Var("v0", 12673 F4), 12674 MU(BFI(LN 12675 23, 12676 LN 12677 20, 12678 Var("v0", 12679 F4), 12680 Var("v", 12681 F32)), 12682 PTy(F32, 12683 qTy)))), 12684 Close 12685 (Var("v", 12686 F32), 12687 MW(Close 12688 (Var("s", 12689 PTy(F32, 12690 qTy)), 12691 TP[Var("v", 12692 F32), 12693 Mop(Snd, 12694 Var("s", 12695 PTy(F32, 12696 qTy)))])))))))))), 12697 MB(MR(Close 12698 (Var("s", 12699 PTy(F32,qTy)), 12700 Mop(Fst, 12701 Var("s", 12702 PTy(F32, 12703 qTy))))), 12704 Close 12705 (Var("v",F32), 12706 MB(MB(MU(BFI(LN 24, 12707 LN 24, 12708 Mop(Cast 12709 F1, 12710 LX bTy), 12711 Var("v", 12712 F32)), 12713 PTy(F32,qTy)), 12714 Close 12715 (Var("v",F32), 12716 MW(Close 12717 (Var("s", 12718 PTy(F32, 12719 qTy)), 12720 TP[Var("v", 12721 F32), 12722 Mop(Snd, 12723 Var("s", 12724 PTy(F32, 12725 qTy)))])))), 12726 Close 12727 (AVar uTy, 12728 MB(MR(Close 12729 (Var("s", 12730 PTy(F32, 12731 qTy)), 12732 Mop(Fst, 12733 Var("s", 12734 PTy(F32, 12735 qTy))))), 12736 Close 12737 (Var("v", 12738 F32), 12739 MB(MB(MU(Bop(Bit, 12740 Var("v", 12741 F32), 12742 LN 12743 24), 12744 PTy(F32, 12745 qTy)), 12746 Close 12747 (bVar"b", 12748 ITE(bVar"b", 12749 MB(MD(Call 12750 ("ConditionPassed", 12751 ATy(qTy, 12752 PTy(bTy, 12753 qTy)), 12754 LU), 12755 F32), 12756 Close 12757 (bVar"b", 12758 ITE(bVar"b", 12759 MB(MR(Close 12760 (Var("s", 12761 PTy(F32, 12762 qTy)), 12763 Mop(Fst, 12764 Var("s", 12765 PTy(F32, 12766 qTy))))), 12767 Close 12768 (Var("v", 12769 F32), 12770 MB(MB(ITE(LX bTy, 12771 MD(Call 12772 ("CurrentCond", 12773 ATy(qTy, 12774 PTy(F4, 12775 qTy)), 12776 LU), 12777 F32), 12778 MU(LW(14, 12779 4), 12780 PTy(F32, 12781 qTy))), 12782 Close 12783 (Var("v0", 12784 F4), 12785 MU(BFI(LN 12786 23, 12787 LN 12788 20, 12789 Var("v0", 12790 F4), 12791 Var("v", 12792 F32)), 12793 PTy(F32, 12794 qTy)))), 12795 Close 12796 (Var("v", 12797 F32), 12798 MW(Close 12799 (Var("s", 12800 PTy(F32, 12801 qTy)), 12802 TP[Var("v", 12803 F32), 12804 Mop(Snd, 12805 Var("s", 12806 PTy(F32, 12807 qTy)))])))))), 12808 MB(MR(Close 12809 (Var("s", 12810 PTy(F32, 12811 qTy)), 12812 Mop(Fst, 12813 Var("s", 12814 PTy(F32, 12815 qTy))))), 12816 Close 12817 (Var("v", 12818 F32), 12819 MB(MB(MD(Call 12820 ("CurrentCond", 12821 ATy(qTy, 12822 PTy(F4, 12823 qTy)), 12824 LU), 12825 F32), 12826 Close 12827 (Var("v0", 12828 F4), 12829 MU(BFI(LN 12830 23, 12831 LN 12832 20, 12833 Var("v0", 12834 F4), 12835 Var("v", 12836 F32)), 12837 PTy(F32, 12838 qTy)))), 12839 Close 12840 (Var("v", 12841 F32), 12842 MW(Close 12843 (Var("s", 12844 PTy(F32, 12845 qTy)), 12846 TP[Var("v", 12847 F32), 12848 Mop(Snd, 12849 Var("s", 12850 PTy(F32, 12851 qTy)))]))))))))), 12852 MU(LU, 12853 PTy(F32, 12854 qTy))))), 12855 Close 12856 (AVar 12857 uTy, 12858 MB(MR(Close 12859 (Var("s", 12860 PTy(F32, 12861 qTy)), 12862 Mop(Fst, 12863 Var("s", 12864 PTy(F32, 12865 qTy))))), 12866 Close 12867 (Var("v", 12868 F32), 12869 MB(MU(BFI(LN 12870 19, 12871 LN 12872 0, 12873 EX(Var("HSRString", 12874 FTy 25), 12875 LN 12876 19, 12877 LN 12878 0, 12879 FTy 20), 12880 Var("v", 12881 F32)), 12882 PTy(F32, 12883 qTy)), 12884 Close 12885 (Var("v", 12886 F32), 12887 MW(Close 12888 (Var("s", 12889 PTy(F32, 12890 qTy)), 12891 TP[Var("v", 12892 F32), 12893 Mop(Snd, 12894 Var("s", 12895 PTy(F32, 12896 qTy)))]))))))))))))))))))), 12897 MB(MR(Close 12898 (Var("s",PTy(F32,qTy)), 12899 Mop(Fst,Var("s",PTy(F32,qTy))))), 12900 Close 12901 (Var("v",F32), 12902 MB(MU(BFI(LN 24,LN 0, 12903 Var("HSRString",FTy 25), 12904 Var("v",F32)),PTy(F32,qTy)), 12905 Close 12906 (Var("v",F32), 12907 MW(Close 12908 (Var("s",PTy(F32,qTy)), 12909 TP[Var("v",F32), 12910 Mop(Snd, 12911 Var("s", 12912 PTy(F32,qTy)))]))))))), 12913 Close 12914 (AVar uTy, 12915 MB(MR(Close 12916 (Var("s",PTy(F32,qTy)), 12917 Dest 12918 ("CP15",CTy"CP15", 12919 Mop(Snd,Var("s",PTy(F32,qTy)))))), 12920 Close 12921 (Var("v",CTy"CP15"), 12922 MB(MU(Dest 12923 ("HSR",CTy"HSR", 12924 Var("v",CTy"CP15")), 12925 PTy(F32,qTy)), 12926 Close 12927 (Var("x0",CTy"HSR"), 12928 MB(MR(Close 12929 (Var("s",PTy(F32,qTy)), 12930 Dest 12931 ("CP15",CTy"CP15", 12932 Mop(Snd, 12933 Var("s", 12934 PTy(F32,qTy)))))), 12935 Close 12936 (Var("v",CTy"CP15"), 12937 MB(MB(MB(MR(Close 12938 (Var("s", 12939 PTy(F32, 12940 qTy)), 12941 Mop(Fst, 12942 Var("s", 12943 PTy(F32, 12944 qTy))))), 12945 Close 12946 (Var("v0",F32), 12947 MB(MB(MU(TP[Var("x0", 12948 CTy"HSR"), 12949 Var("v0", 12950 F32)], 12951 PTy(F32, 12952 qTy)), 12953 Close 12954 (Var("v", 12955 PTy(CTy"HSR", 12956 F32)), 12957 MU(Call 12958 ("write'reg'HSR", 12959 CTy"HSR", 12960 Var("v", 12961 PTy(CTy"HSR", 12962 F32))), 12963 PTy(F32, 12964 qTy)))), 12965 Close 12966 (Var("v0", 12967 CTy"HSR"), 12968 MU(TP[Var("v", 12969 CTy"CP15"), 12970 Var("v0", 12971 CTy"HSR")], 12972 PTy(F32, 12973 qTy)))))), 12974 Close 12975 (Var("v", 12976 PTy(CTy"CP15", 12977 CTy"HSR")), 12978 MU(Rupd 12979 ("HSR", 12980 Var("v", 12981 PTy(CTy"CP15", 12982 CTy"HSR"))), 12983 PTy(F32,qTy)))), 12984 Close 12985 (Var("v",CTy"CP15"), 12986 MW(Close 12987 (Var("s", 12988 PTy(F32, 12989 qTy)), 12990 TP[Mop(Fst, 12991 Var("s", 12992 PTy(F32, 12993 qTy))), 12994 Rupd 12995 ("CP15", 12996 TP[Mop(Snd, 12997 Var("s", 12998 PTy(F32, 12999 qTy))), 13000 Var("v", 13001 CTy"CP15")])])))))))))))))))))))) 13002; 13003val CallSupervisor_def = Def 13004 ("CallSupervisor",Var("immediate",F16), 13005 MB(Call("CurrentModeIsHyp",ATy(qTy,PTy(bTy,qTy)),LU), 13006 Close 13007 (bVar"v", 13008 MB(MB(ITE(bVar"v",MU(LT,qTy), 13009 MB(Call("HaveVirtExt",ATy(qTy,PTy(bTy,qTy)),LU), 13010 Close 13011 (bVar"v", 13012 MB(MB(ITE(bVar"v", 13013 MB(Call 13014 ("IsSecure",ATy(qTy,PTy(bTy,qTy)), 13015 LU), 13016 Close 13017 (bVar"v",MU(Mop(Not,bVar"v"),qTy))), 13018 MU(LF,qTy)), 13019 Close 13020 (bVar"b", 13021 ITE(bVar"b", 13022 MB(Call 13023 ("CurrentModeIsNotUser", 13024 ATy(qTy,PTy(bTy,qTy)),LU), 13025 Close 13026 (bVar"v", 13027 MU(Mop(Not,bVar"v"),qTy))), 13028 MU(LF,qTy)))), 13029 Close 13030 (bVar"b", 13031 ITE(bVar"b", 13032 MB(MR(Close 13033 (qVar"s", 13034 Dest("CP15",CTy"CP15",qVar"s"))), 13035 Close 13036 (Var("v",CTy"CP15"), 13037 MB(MU(Dest 13038 ("HCR",CTy"HCR", 13039 Var("v",CTy"CP15")),qTy), 13040 Close 13041 (Var("v",CTy"HCR"), 13042 MU(Dest 13043 ("TGE",bTy, 13044 Var("v",CTy"HCR")), 13045 qTy))))),MU(LF,qTy))))))), 13046 Close 13047 (bVar"b", 13048 ITE(bVar"b", 13049 MN(LW(0,25), 13050 MB(MR(Close 13051 (Var("s",PTy(FTy 25,qTy)), 13052 Mop(Fst,Var("s",PTy(FTy 25,qTy))))), 13053 Close 13054 (Var("v",FTy 25), 13055 MB(MB(MB(MD(Call 13056 ("CurrentCond", 13057 ATy(qTy,PTy(F4,qTy)),LU), 13058 FTy 25), 13059 Close 13060 (Var("v0",F4), 13061 MB(MB(MU(EQ(Var("v0",F4), 13062 LW(14,4)), 13063 PTy(FTy 25,qTy)), 13064 Close 13065 (bVar"b", 13066 MU(ITE(bVar"b", 13067 Var("immediate", 13068 F16),LX F16), 13069 PTy(FTy 25,qTy)))), 13070 Close 13071 (Var("v0",F16), 13072 MU(BFI(LN 15,LN 0, 13073 Var("v0",F16), 13074 Var("v",FTy 25)), 13075 PTy(FTy 25,qTy)))))), 13076 Close 13077 (Var("v",FTy 25), 13078 MW(Close 13079 (Var("s",PTy(FTy 25,qTy)), 13080 TP[Var("v",FTy 25), 13081 Mop(Snd, 13082 Var("s", 13083 PTy(FTy 25,qTy)))])))), 13084 Close 13085 (AVar uTy, 13086 MB(MR(Close 13087 (Var("s",PTy(FTy 25,qTy)), 13088 Mop(Fst, 13089 Var("s",PTy(FTy 25,qTy))))), 13090 Close 13091 (Var("v",FTy 25), 13092 MB(MU(TP[LW(18,6), 13093 Var("v",FTy 25)], 13094 PTy(FTy 25,qTy)), 13095 Close 13096 (Var("v",PTy(FTy 6,FTy 25)), 13097 MD(Call 13098 ("WriteHSR", 13099 ATy(qTy, 13100 PTy(uTy,qTy)), 13101 Var("v", 13102 PTy(FTy 6, 13103 FTy 25))), 13104 FTy 25)))))))))), 13105 MU(LU,qTy)))), 13106 Close 13107 (AVar uTy,Call("TakeSVCException",ATy(qTy,PTy(uTy,qTy)),LU)))))) 13108; 13109val CallHypervisor_def = Def 13110 ("CallHypervisor",Var("immediate",F16), 13111 MB(Call 13112 ("WriteHSR",ATy(qTy,PTy(uTy,qTy)), 13113 TP[LW(18,6),CC[Var("immediate",F16),LW(0,9)]]), 13114 Close(AVar uTy,Call("TakeHVCException",ATy(qTy,PTy(uTy,qTy)),LU)))) 13115; 13116val BankedRegisterAccessValid_def = Def 13117 ("BankedRegisterAccessValid",TP[Var("SYSm",FTy 5),Var("mode",FTy 5)], 13118 ITB([(EQ(EX(Var("SYSm",FTy 5),LN 4,LN 3,FTy 2),LW(0,2)), 13119 ITB([(EQ(EX(Var("SYSm",FTy 5),LN 2,LN 0,FTy 3),LW(7,3)), 13120 Call 13121 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13122 Call 13123 ("UNPREDICTABLE",CTy"exception", 13124 LS"BankedRegisterAccessValid"))), 13125 (EQ(EX(Var("SYSm",FTy 5),LN 2,LN 0,FTy 3),LW(6,3)), 13126 ITE(Bop(In,Var("mode",FTy 5),SL[LW(26,5),LW(31,5)]), 13127 Call 13128 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13129 Call 13130 ("UNPREDICTABLE",CTy"exception", 13131 LS"BankedRegisterAccessValid")),MU(LU,qTy))), 13132 (EQ(EX(Var("SYSm",FTy 5),LN 2,LN 0,FTy 3),LW(5,3)), 13133 ITE(EQ(Var("mode",FTy 5),LW(31,5)), 13134 Call 13135 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13136 Call 13137 ("UNPREDICTABLE",CTy"exception", 13138 LS"BankedRegisterAccessValid")),MU(LU,qTy))), 13139 (Mop(Not,EQ(Var("mode",FTy 5),LW(17,5))), 13140 Call 13141 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13142 Call 13143 ("UNPREDICTABLE",CTy"exception", 13144 LS"BankedRegisterAccessValid")))],MU(LU,qTy))), 13145 (EQ(EX(Var("SYSm",FTy 5),LN 4,LN 3,FTy 2),LW(1,2)), 13146 MB(MR(Close(qVar"s",Dest("CP15",CTy"CP15",qVar"s"))), 13147 Close 13148 (Var("v",CTy"CP15"), 13149 MB(MB(MB(MB(MU(Dest("NSACR",CTy"NSACR",Var("v",CTy"CP15")), 13150 qTy), 13151 Close 13152 (Var("v",CTy"NSACR"), 13153 MU(Dest("RFR",bTy,Var("v",CTy"NSACR")),qTy))), 13154 Close 13155 (bVar"b", 13156 ITE(bVar"b", 13157 MB(Call 13158 ("IsSecure",ATy(qTy,PTy(bTy,qTy)),LU), 13159 Close(bVar"v",MU(Mop(Not,bVar"v"),qTy))), 13160 MU(LF,qTy)))), 13161 Close 13162 (bVar"v", 13163 MU(Bop(Or, 13164 Bop(Or, 13165 EQ(EX(Var("SYSm",FTy 5),LN 2,LN 0,FTy 3), 13166 LW(7,3)), 13167 EQ(Var("mode",FTy 5),LW(17,5))),bVar"v"), 13168 qTy))), 13169 Close 13170 (bVar"b", 13171 ITE(bVar"b", 13172 Call 13173 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13174 Call 13175 ("UNPREDICTABLE",CTy"exception", 13176 LS"BankedRegisterAccessValid")),MU(LU,qTy))))))), 13177 (EQ(EX(Var("SYSm",FTy 5),LN 4,LN 3,FTy 2),LW(3,2)), 13178 ITB([(Mop(Not,Bop(Bit,Var("SYSm",FTy 5),LN 2)), 13179 Call 13180 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13181 Call 13182 ("UNPREDICTABLE",CTy"exception", 13183 LS"BankedRegisterAccessValid"))), 13184 (Mop(Not,Bop(Bit,Var("SYSm",FTy 5),LN 1)), 13185 MB(Call("IsSecure",ATy(qTy,PTy(bTy,qTy)),LU), 13186 Close 13187 (bVar"v", 13188 MB(MB(MU(Mop(Not,bVar"v"),qTy), 13189 Close 13190 (bVar"b", 13191 MU(Bop(Or,bVar"b", 13192 EQ(Var("mode",FTy 5),LW(22,5))),qTy))), 13193 Close 13194 (bVar"b", 13195 ITE(bVar"b", 13196 Call 13197 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13198 Call 13199 ("UNPREDICTABLE",CTy"exception", 13200 LS"BankedRegisterAccessValid")), 13201 MU(LU,qTy))))))), 13202 (Mop(Not,EQ(Var("mode",FTy 5),LW(22,5))), 13203 Call 13204 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13205 Call 13206 ("UNPREDICTABLE",CTy"exception", 13207 LS"BankedRegisterAccessValid")))],MU(LU,qTy)))], 13208 MU(LU,qTy))) 13209; 13210val SPSRAccessValid_def = Def 13211 ("SPSRAccessValid",TP[Var("SYSm",FTy 5),Var("mode",FTy 5)], 13212 CS(Var("SYSm",FTy 5), 13213 [(LW(14,5), 13214 MB(Call("IsSecure",ATy(qTy,PTy(bTy,qTy)),LU), 13215 Close 13216 (bVar"v", 13217 MB(MB(MB(MU(Mop(Not,bVar"v"),qTy), 13218 Close 13219 (bVar"b", 13220 ITE(bVar"b", 13221 MB(MR(Close 13222 (qVar"s", 13223 Dest("CP15",CTy"CP15",qVar"s"))), 13224 Close 13225 (Var("v",CTy"CP15"), 13226 MB(MU(Dest 13227 ("NSACR",CTy"NSACR", 13228 Var("v",CTy"CP15")),qTy), 13229 Close 13230 (Var("v",CTy"NSACR"), 13231 MU(Dest 13232 ("RFR",bTy, 13233 Var("v",CTy"NSACR")),qTy))))), 13234 MU(LF,qTy)))), 13235 Close 13236 (bVar"b", 13237 MU(Bop(Or,bVar"b",EQ(Var("mode",FTy 5),LW(17,5))), 13238 qTy))), 13239 Close 13240 (bVar"b", 13241 ITE(bVar"b", 13242 Call 13243 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13244 Call 13245 ("UNPREDICTABLE",CTy"exception", 13246 LS"SPSRAccessValid")),MU(LU,qTy))))))), 13247 (LW(16,5), 13248 ITE(EQ(Var("mode",FTy 5),LW(18,5)), 13249 Call 13250 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13251 Call("UNPREDICTABLE",CTy"exception",LS"SPSRAccessValid")), 13252 MU(LU,qTy))), 13253 (LW(18,5), 13254 ITE(EQ(Var("mode",FTy 5),LW(19,5)), 13255 Call 13256 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13257 Call("UNPREDICTABLE",CTy"exception",LS"SPSRAccessValid")), 13258 MU(LU,qTy))), 13259 (LW(20,5), 13260 ITE(EQ(Var("mode",FTy 5),LW(23,5)), 13261 Call 13262 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13263 Call("UNPREDICTABLE",CTy"exception",LS"SPSRAccessValid")), 13264 MU(LU,qTy))), 13265 (LW(22,5), 13266 ITE(EQ(Var("mode",FTy 5),LW(27,5)), 13267 Call 13268 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13269 Call("UNPREDICTABLE",CTy"exception",LS"SPSRAccessValid")), 13270 MU(LU,qTy))), 13271 (LW(28,5), 13272 MB(Call("IsSecure",ATy(qTy,PTy(bTy,qTy)),LU), 13273 Close 13274 (bVar"v", 13275 MB(MB(MU(Mop(Not,bVar"v"),qTy), 13276 Close 13277 (bVar"v", 13278 MU(Bop(Or,EQ(Var("mode",FTy 5),LW(22,5)),bVar"v"), 13279 qTy))), 13280 Close 13281 (bVar"b", 13282 ITE(bVar"b", 13283 Call 13284 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13285 Call 13286 ("UNPREDICTABLE",CTy"exception", 13287 LS"SPSRAccessValid")),MU(LU,qTy))))))), 13288 (LW(30,5), 13289 ITE(Mop(Not,EQ(Var("mode",FTy 5),LW(22,5))), 13290 Call 13291 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13292 Call("UNPREDICTABLE",CTy"exception",LS"SPSRAccessValid")), 13293 MU(LU,qTy))), 13294 (AVar(FTy 5), 13295 Call 13296 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13297 Call("UNPREDICTABLE",CTy"exception",LS"SPSRAccessValid")))])) 13298; 13299val dfn'BranchTarget_def = Def 13300 ("dfn'BranchTarget",Var("imm32",F32), 13301 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 13302 Close 13303 (Var("v",F32), 13304 MB(MU(Bop(Add,Var("v",F32),Var("imm32",F32)),qTy), 13305 Close 13306 (Var("v",F32), 13307 Call("BranchWritePC",ATy(qTy,PTy(uTy,qTy)),Var("v",F32))))))) 13308; 13309val dfn'BranchExchange_def = Def 13310 ("dfn'BranchExchange",Var("m",F4), 13311 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 13312 Close 13313 (Var("v",F32),Call("BXWritePC",ATy(qTy,PTy(uTy,qTy)),Var("v",F32))))) 13314; 13315val dfn'BranchLinkExchangeImmediate_def = Def 13316 ("dfn'BranchLinkExchangeImmediate", 13317 TP[Var("targetInstrSet",CTy"InstrSet"),Var("imm32",F32)], 13318 MB(Call("CurrentInstrSet",ATy(qTy,PTy(CTy"InstrSet",qTy)),LU), 13319 Close 13320 (Var("v",CTy"InstrSet"), 13321 MB(MB(MU(EQ(Var("v",CTy"InstrSet"), 13322 LC("InstrSet_ARM",CTy"InstrSet")),qTy), 13323 Close 13324 (bVar"b", 13325 ITE(bVar"b", 13326 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 13327 Close 13328 (Var("v",F32), 13329 MB(MU(Bop(Sub,Var("v",F32),LW(4,32)),qTy), 13330 Close 13331 (Var("v",F32), 13332 Call 13333 ("write'LR",ATy(qTy,PTy(uTy,qTy)), 13334 Var("v",F32)))))), 13335 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 13336 Close 13337 (Var("v",F32), 13338 MB(MB(MU(EX(Var("v",F32),LN 31,LN 1,FTy 31), 13339 qTy), 13340 Close 13341 (Var("v",FTy 31), 13342 MU(CC[Var("v",FTy 31),LW(1,1)],qTy))), 13343 Close 13344 (Var("v",F32), 13345 Call 13346 ("write'LR",ATy(qTy,PTy(uTy,qTy)), 13347 Var("v",F32))))))))), 13348 Close 13349 (AVar uTy, 13350 MB(ITE(EQ(Var("targetInstrSet",CTy"InstrSet"), 13351 LC("InstrSet_ARM",CTy"InstrSet")), 13352 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 13353 Close 13354 (Var("v",F32), 13355 MB(MB(MU(TP[Var("v",F32),LN 4],qTy), 13356 Close 13357 (Var("v",PTy(F32,nTy)), 13358 MU(Call 13359 ("Align",F32, 13360 Var("v",PTy(F32,nTy))),qTy))), 13361 Close 13362 (Var("v",F32), 13363 MU(Bop(Add,Var("v",F32),Var("imm32",F32)), 13364 qTy))))), 13365 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 13366 Close 13367 (Var("v",F32), 13368 MU(Bop(Add,Var("v",F32),Var("imm32",F32)),qTy)))), 13369 Close 13370 (Var("targetAddress",F32), 13371 MB(Call 13372 ("SelectInstrSet",ATy(qTy,PTy(uTy,qTy)), 13373 Var("targetInstrSet",CTy"InstrSet")), 13374 Close 13375 (AVar uTy, 13376 Call 13377 ("BranchWritePC",ATy(qTy,PTy(uTy,qTy)), 13378 Var("targetAddress",F32))))))))))) 13379; 13380val dfn'BranchLinkExchangeRegister_def = Def 13381 ("dfn'BranchLinkExchangeRegister",Var("m",F4), 13382 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 13383 Close 13384 (Var("target",F32), 13385 MB(Call("CurrentInstrSet",ATy(qTy,PTy(CTy"InstrSet",qTy)),LU), 13386 Close 13387 (Var("v",CTy"InstrSet"), 13388 MB(MB(MU(EQ(Var("v",CTy"InstrSet"), 13389 LC("InstrSet_ARM",CTy"InstrSet")),qTy), 13390 Close 13391 (bVar"b", 13392 ITE(bVar"b", 13393 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 13394 Close 13395 (Var("v",F32), 13396 MB(MU(Bop(Sub,Var("v",F32),LW(4,32)),qTy), 13397 Close 13398 (Var("next_instr_addr",F32), 13399 Call 13400 ("write'LR", 13401 ATy(qTy,PTy(uTy,qTy)), 13402 Var("next_instr_addr",F32)))))), 13403 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 13404 Close 13405 (Var("v",F32), 13406 MB(MU(Bop(Sub,Var("v",F32),LW(2,32)),qTy), 13407 Close 13408 (Var("next_instr_addr",F32), 13409 Call 13410 ("write'LR", 13411 ATy(qTy,PTy(uTy,qTy)), 13412 CC[EX(Var("next_instr_addr",F32), 13413 LN 31,LN 1,FTy 31), 13414 LW(1,1)])))))))), 13415 Close 13416 (AVar uTy, 13417 Call 13418 ("BXWritePC",ATy(qTy,PTy(uTy,qTy)), 13419 Var("target",F32))))))))) 13420; 13421val dfn'CompareBranch_def = Def 13422 ("dfn'CompareBranch",TP[bVar"nonzero",Var("n",F4),Var("imm32",F32)], 13423 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 13424 Close 13425 (Var("v",F32), 13426 MB(MB(MB(MU(EQ(Var("v",F32),LW(0,32)),qTy), 13427 Close(bVar"v",MU(EQ(bVar"nonzero",bVar"v"),qTy))), 13428 Close(bVar"v",MU(Mop(Not,bVar"v"),qTy))), 13429 Close 13430 (bVar"b", 13431 ITE(bVar"b", 13432 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 13433 Close 13434 (Var("v",F32), 13435 MB(MU(Bop(Add,Var("v",F32),Var("imm32",F32)),qTy), 13436 Close 13437 (Var("v",F32), 13438 Call 13439 ("BranchWritePC",ATy(qTy,PTy(uTy,qTy)), 13440 Var("v",F32)))))), 13441 Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU))))))) 13442; 13443val dfn'TableBranchByte_def = Def 13444 ("dfn'TableBranchByte",TP[bVar"is_tbh",Var("m",F4),Var("n",F4)], 13445 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 13446 Close 13447 (bVar"b", 13448 ITE(bVar"b", 13449 MB(ITE(bVar"is_tbh", 13450 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 13451 Close 13452 (Var("v",F32), 13453 MB(MB(MB(Call 13454 ("R",ATy(qTy,PTy(F32,qTy)), 13455 Var("m",F4)), 13456 Close 13457 (Var("v0",F32), 13458 MB(MB(MU(TP[Var("v0",F32),LN 1],qTy), 13459 Close 13460 (Var("v",PTy(F32,nTy)), 13461 Call 13462 ("LSL", 13463 ATy(qTy,PTy(F32,qTy)), 13464 Var("v",PTy(F32,nTy))))), 13465 Close 13466 (Var("v0",F32), 13467 MU(Bop(Add,Var("v",F32), 13468 Var("v0",F32)),qTy))))), 13469 Close 13470 (Var("v",F32), 13471 MU(TP[Var("v",F32),LN 2],qTy))), 13472 Close 13473 (Var("v",PTy(F32,nTy)), 13474 Call 13475 ("MemU",ATy(qTy,PTy(F16,qTy)), 13476 Var("v",PTy(F32,nTy))))))), 13477 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 13478 Close 13479 (Var("v",F32), 13480 MB(MB(MB(Call 13481 ("R",ATy(qTy,PTy(F32,qTy)), 13482 Var("m",F4)), 13483 Close 13484 (Var("v0",F32), 13485 MU(Bop(Add,Var("v",F32), 13486 Var("v0",F32)),qTy))), 13487 Close 13488 (Var("v",F32), 13489 MU(TP[Var("v",F32),LN 1],qTy))), 13490 Close 13491 (Var("v",PTy(F32,nTy)), 13492 Call 13493 ("MemU",ATy(qTy,PTy(F16,qTy)), 13494 Var("v",PTy(F32,nTy)))))))), 13495 Close 13496 (Var("halfwords",F16), 13497 MB(MR(Close(qVar"s",Dest("data_abort",bTy,qVar"s"))), 13498 Close 13499 (bVar"b", 13500 ITE(bVar"b", 13501 Call 13502 ("TakeDataAbortException", 13503 ATy(qTy,PTy(uTy,qTy)),LU), 13504 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 13505 Close 13506 (Var("v",F32), 13507 MB(MU(Bop(Add,Var("v",F32), 13508 Bop(Mul,LW(2,32), 13509 Mop(Cast F32, 13510 Var("halfwords",F16)))), 13511 qTy), 13512 Close 13513 (Var("v",F32), 13514 Call 13515 ("BranchWritePC", 13516 ATy(qTy,PTy(uTy,qTy)), 13517 Var("v",F32))))))))))), 13518 MU(LU,qTy))))) 13519; 13520val dfn'CheckArray_def = Def 13521 ("dfn'CheckArray",TP[Var("m",F4),Var("n",F4)], 13522 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 13523 Close 13524 (Var("v",F32), 13525 MB(MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 13526 Close 13527 (Var("v0",F32), 13528 MU(Bop(Ule,Var("v",F32),Var("v0",F32)),qTy))), 13529 Close 13530 (bVar"b", 13531 ITE(bVar"b", 13532 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 13533 Close 13534 (Var("v",F32), 13535 MB(MB(MB(MU(EX(Var("v",F32),LN 31,LN 1,FTy 31), 13536 qTy), 13537 Close 13538 (Var("v",FTy 31), 13539 MU(CC[Var("v",FTy 31),LW(1,1)],qTy))), 13540 Close 13541 (Var("v",F32), 13542 Call 13543 ("write'LR",ATy(qTy,PTy(uTy,qTy)), 13544 Var("v",F32)))), 13545 Close 13546 (AVar uTy, 13547 MB(Call 13548 ("write'ITSTATE", 13549 ATy(qTy,PTy(uTy,qTy)),LW(0,8)), 13550 Close 13551 (AVar uTy, 13552 MB(MR(Close 13553 (qVar"s", 13554 Dest 13555 ("CP14",CTy"CP14",qVar"s"))), 13556 Close 13557 (Var("v",CTy"CP14"), 13558 MB(MB(MU(Dest 13559 ("TEEHBR",F32, 13560 Var("v",CTy"CP14")), 13561 qTy), 13562 Close 13563 (Var("v",F32), 13564 MU(Bop(Sub, 13565 Var("v",F32), 13566 LW(8,32)),qTy))), 13567 Close 13568 (Var("v",F32), 13569 Call 13570 ("BranchWritePC", 13571 ATy(qTy,PTy(uTy,qTy)), 13572 Var("v",F32)))))))))))), 13573 Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU))))))) 13574; 13575val dfn'HandlerBranchLink_def = Def 13576 ("dfn'HandlerBranchLink", 13577 TP[bVar"generate_link",Var("handler_offset",F32)], 13578 MB(ITE(bVar"generate_link", 13579 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 13580 Close 13581 (Var("v",F32), 13582 MB(MU(Bop(Sub,Var("v",F32),LW(2,32)),qTy), 13583 Close 13584 (Var("next_instr_addr",F32), 13585 Call 13586 ("write'LR",ATy(qTy,PTy(uTy,qTy)), 13587 CC[EX(Var("next_instr_addr",F32),LN 31,LN 1, 13588 FTy 31),LW(1,1)]))))),MU(LU,qTy)), 13589 Close 13590 (AVar uTy, 13591 MB(MR(Close(qVar"s",Dest("CP14",CTy"CP14",qVar"s"))), 13592 Close 13593 (Var("v",CTy"CP14"), 13594 MB(MB(MU(Dest("TEEHBR",F32,Var("v",CTy"CP14")),qTy), 13595 Close 13596 (Var("v",F32), 13597 MU(Bop(Add,Var("v",F32),Var("handler_offset",F32)), 13598 qTy))), 13599 Close 13600 (Var("v",F32), 13601 Call 13602 ("BranchWritePC",ATy(qTy,PTy(uTy,qTy)),Var("v",F32))))))))) 13603; 13604val dfn'HandlerBranchLinkParameter_def = Def 13605 ("dfn'HandlerBranchLinkParameter", 13606 TP[Var("imm32",F32),Var("handler_offset",F32)], 13607 MB(Call("write'R",ATy(qTy,PTy(uTy,qTy)),TP[Var("imm32",F32),LW(8,4)]), 13608 Close 13609 (AVar uTy, 13610 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 13611 Close 13612 (Var("v",F32), 13613 MB(MU(Bop(Sub,Var("v",F32),LW(2,32)),qTy), 13614 Close 13615 (Var("next_instr_addr",F32), 13616 MB(Call 13617 ("write'LR",ATy(qTy,PTy(uTy,qTy)), 13618 CC[EX(Var("next_instr_addr",F32),LN 31,LN 1, 13619 FTy 31),LW(1,1)]), 13620 Close 13621 (AVar uTy, 13622 MB(MR(Close 13623 (qVar"s",Dest("CP14",CTy"CP14",qVar"s"))), 13624 Close 13625 (Var("v",CTy"CP14"), 13626 MB(MB(MU(Dest 13627 ("TEEHBR",F32, 13628 Var("v",CTy"CP14")),qTy), 13629 Close 13630 (Var("v",F32), 13631 MU(Bop(Add,Var("v",F32), 13632 Var("handler_offset",F32)), 13633 qTy))), 13634 Close 13635 (Var("v",F32), 13636 Call 13637 ("BranchWritePC", 13638 ATy(qTy,PTy(uTy,qTy)), 13639 Var("v",F32))))))))))))))) 13640; 13641val dfn'HandlerBranchParameter_def = Def 13642 ("dfn'HandlerBranchParameter", 13643 TP[Var("imm32",F32),Var("handler_offset",F32)], 13644 MB(Call("write'R",ATy(qTy,PTy(uTy,qTy)),TP[Var("imm32",F32),LW(8,4)]), 13645 Close 13646 (AVar uTy, 13647 MB(MR(Close(qVar"s",Dest("CP14",CTy"CP14",qVar"s"))), 13648 Close 13649 (Var("v",CTy"CP14"), 13650 MB(MB(MU(Dest("TEEHBR",F32,Var("v",CTy"CP14")),qTy), 13651 Close 13652 (Var("v",F32), 13653 MU(Bop(Add,Var("v",F32),Var("handler_offset",F32)), 13654 qTy))), 13655 Close 13656 (Var("v",F32), 13657 Call 13658 ("BranchWritePC",ATy(qTy,PTy(uTy,qTy)),Var("v",F32))))))))) 13659; 13660val dfn'EnterxLeavex_def = Def 13661 ("dfn'EnterxLeavex",bVar"is_enterx", 13662 ITE(bVar"is_enterx", 13663 MB(Call("CurrentModeIsHyp",ATy(qTy,PTy(bTy,qTy)),LU), 13664 Close 13665 (bVar"b", 13666 ITE(bVar"b", 13667 Call("TakeUndefInstrException",ATy(qTy,PTy(uTy,qTy)),LU), 13668 MB(Call 13669 ("SelectInstrSet",ATy(qTy,PTy(uTy,qTy)), 13670 LC("InstrSet_ThumbEE",CTy"InstrSet")), 13671 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))))), 13672 MB(Call 13673 ("SelectInstrSet",ATy(qTy,PTy(uTy,qTy)), 13674 LC("InstrSet_Thumb",CTy"InstrSet")), 13675 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU))))) 13676; 13677val dfn'IfThen_def = Def 13678 ("dfn'IfThen",TP[Var("firstcond",F4),Var("mask",F4)], 13679 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 13680 Close 13681 (Var("v",CTy"PSR"), 13682 MB(MB(MB(MU(TP[Var("v",CTy"PSR"), 13683 CC[Var("firstcond",F4),Var("mask",F4)]],qTy), 13684 Close 13685 (Var("v",PTy(CTy"PSR",F8)), 13686 MU(Rupd("IT",Var("v",PTy(CTy"PSR",F8))),qTy))), 13687 Close 13688 (Var("v",CTy"PSR"), 13689 MW(Close 13690 (qVar"s",Rupd("CPSR",TP[qVar"s",Var("v",CTy"PSR")]))))), 13691 Close 13692 (AVar uTy, 13693 MB(Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU), 13694 Close 13695 (AVar uTy, 13696 MW(Close 13697 (qVar"s", 13698 Rupd 13699 ("Encoding", 13700 TP[qVar"s",LC("Encoding_ARM",CTy"Encoding")])))))))))) 13701; 13702val dfn'CountLeadingZeroes_def = Def 13703 ("dfn'CountLeadingZeroes",TP[Var("d",F4),Var("m",F4)], 13704 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 13705 Close 13706 (Var("v",F32), 13707 MB(MB(MB(MB(MU(Call("CountLeadingZeroBits",nTy,Var("v",F32)),qTy), 13708 Close(nVar"v",MU(Mop(Cast F32,nVar"v"),qTy))), 13709 Close(Var("v",F32),MU(TP[Var("v",F32),Var("d",F4)],qTy))), 13710 Close 13711 (Var("v",PTy(F32,F4)), 13712 Call 13713 ("write'R",ATy(qTy,PTy(uTy,qTy)),Var("v",PTy(F32,F4))))), 13714 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))))) 13715; 13716val dfn'MoveHalfword_def = Def 13717 ("dfn'MoveHalfword",TP[bVar"high",Var("d",F4),Var("imm16",F16)], 13718 MB(ITE(bVar"high", 13719 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("d",F4)), 13720 Close 13721 (Var("w",F32), 13722 Call 13723 ("write'R",ATy(qTy,PTy(uTy,qTy)), 13724 TP[BFI(LN 31,LN 16,Var("imm16",F16),Var("w",F32)), 13725 Var("d",F4)]))), 13726 Call 13727 ("write'R",ATy(qTy,PTy(uTy,qTy)), 13728 TP[Mop(Cast F32,Var("imm16",F16)),Var("d",F4)])), 13729 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))) 13730; 13731val DataProcessing_def = Def 13732 ("DataProcessing", 13733 TP[Var("opc",F4),bVar"setflags",Var("d",F4),Var("n",F4), 13734 Var("imm32",F32),bVar"C"], 13735 MB(ITB([(Bop(Or,EQ(Var("opc",F4),LW(13,4)), 13736 Bop(And,EQ(Var("opc",F4),LW(15,4)), 13737 EQ(Var("n",F4),LW(15,4)))),MU(LW(0,32),qTy)), 13738 (Bop(And, 13739 Bop(And,Bop(In,Var("opc",F4),SL[LW(4,4),LW(2,4)]), 13740 EQ(Var("n",F4),LW(15,4))),Mop(Not,bVar"setflags")), 13741 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 13742 Close 13743 (Var("v",F32), 13744 MB(MU(TP[Var("v",F32),LN 4],qTy), 13745 Close 13746 (Var("v",PTy(F32,nTy)), 13747 MU(Call("Align",F32,Var("v",PTy(F32,nTy))),qTy))))))], 13748 Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4))), 13749 Close 13750 (Var("rn",F32), 13751 Let(TP[Var("result",F32),bVar"carry",bVar"overflow"], 13752 Call 13753 ("DataProcessingALU",PTy(F32,PTy(bTy,bTy)), 13754 TP[Var("opc",F4),Var("rn",F32),Var("imm32",F32),bVar"C"]), 13755 MB(ITE(Mop(Not,EQ(EX(Var("opc",F4),LN 3,LN 2,FTy 2),LW(2,2))), 13756 Call 13757 ("write'R",ATy(qTy,PTy(uTy,qTy)), 13758 TP[Var("result",F32),Var("d",F4)]),MU(LU,qTy)), 13759 Close 13760 (AVar uTy, 13761 MB(ITE(bVar"setflags", 13762 MB(MR(Close 13763 (qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 13764 Close 13765 (Var("v",CTy"PSR"), 13766 MB(MB(MB(MU(TP[Var("v",CTy"PSR"), 13767 Bop(Bit,Var("result",F32), 13768 LN 31)],qTy), 13769 Close 13770 (Var("v",PTy(CTy"PSR",bTy)), 13771 MU(Rupd 13772 ("N", 13773 Var("v", 13774 PTy(CTy"PSR",bTy))), 13775 qTy))), 13776 Close 13777 (Var("v",CTy"PSR"), 13778 MW(Close 13779 (qVar"s", 13780 Rupd 13781 ("CPSR", 13782 TP[qVar"s", 13783 Var("v",CTy"PSR")]))))), 13784 Close 13785 (AVar uTy, 13786 MB(MR(Close 13787 (qVar"s", 13788 Dest 13789 ("CPSR",CTy"PSR",qVar"s"))), 13790 Close 13791 (Var("v",CTy"PSR"), 13792 MB(MB(MB(MU(TP[Var("v", 13793 CTy"PSR"), 13794 EQ(Var("result", 13795 F32), 13796 LW(0,32))], 13797 qTy), 13798 Close 13799 (Var("v", 13800 PTy(CTy"PSR", 13801 bTy)), 13802 MU(Rupd 13803 ("Z", 13804 Var("v", 13805 PTy(CTy"PSR", 13806 bTy))), 13807 qTy))), 13808 Close 13809 (Var("v",CTy"PSR"), 13810 MW(Close 13811 (qVar"s", 13812 Rupd 13813 ("CPSR", 13814 TP[qVar"s", 13815 Var("v", 13816 CTy"PSR")]))))), 13817 Close 13818 (AVar uTy, 13819 MB(MR(Close 13820 (qVar"s", 13821 Dest 13822 ("CPSR", 13823 CTy"PSR", 13824 qVar"s"))), 13825 Close 13826 (Var("v",CTy"PSR"), 13827 MB(MB(MB(MU(TP[Var("v", 13828 CTy"PSR"), 13829 bVar"carry"], 13830 qTy), 13831 Close 13832 (Var("v", 13833 PTy(CTy"PSR", 13834 bTy)), 13835 MU(Rupd 13836 ("C", 13837 Var("v", 13838 PTy(CTy"PSR", 13839 bTy))), 13840 qTy))), 13841 Close 13842 (Var("v", 13843 CTy"PSR"), 13844 MW(Close 13845 (qVar"s", 13846 Rupd 13847 ("CPSR", 13848 TP[qVar"s", 13849 Var("v", 13850 CTy"PSR")]))))), 13851 Close 13852 (AVar uTy, 13853 ITE(Call 13854 ("ArithmeticOpcode", 13855 bTy, 13856 Var("opc", 13857 F4)), 13858 MB(MR(Close 13859 (qVar"s", 13860 Dest 13861 ("CPSR", 13862 CTy"PSR", 13863 qVar"s"))), 13864 Close 13865 (Var("v", 13866 CTy"PSR"), 13867 MB(MB(MU(TP[Var("v", 13868 CTy"PSR"), 13869 bVar"overflow"], 13870 qTy), 13871 Close 13872 (Var("v", 13873 PTy(CTy"PSR", 13874 bTy)), 13875 MU(Rupd 13876 ("V", 13877 Var("v", 13878 PTy(CTy"PSR", 13879 bTy))), 13880 qTy))), 13881 Close 13882 (Var("v", 13883 CTy"PSR"), 13884 MW(Close 13885 (qVar"s", 13886 Rupd 13887 ("CPSR", 13888 TP[qVar"s", 13889 Var("v", 13890 CTy"PSR")]))))))), 13891 MU(LU, 13892 qTy)))))))))))))), 13893 MU(LU,qTy)), 13894 Close 13895 (AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU))))))))) 13896; 13897val DataProcessingPC_def = Def 13898 ("DataProcessingPC", 13899 TP[Var("opc",F4),bVar"setflags",Var("n",F4),Var("imm32",F32),bVar"C"], 13900 MB(ITB([(Bop(Or,EQ(Var("opc",F4),LW(13,4)), 13901 Bop(And,EQ(Var("opc",F4),LW(15,4)), 13902 EQ(Var("n",F4),LW(15,4)))),MU(LW(0,32),qTy)), 13903 (Bop(And, 13904 Bop(And,Bop(In,Var("opc",F4),SL[LW(4,4),LW(2,4)]), 13905 EQ(Var("n",F4),LW(15,4))),Mop(Not,bVar"setflags")), 13906 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 13907 Close 13908 (Var("v",F32), 13909 MB(MU(TP[Var("v",F32),LN 4],qTy), 13910 Close 13911 (Var("v",PTy(F32,nTy)), 13912 MU(Call("Align",F32,Var("v",PTy(F32,nTy))),qTy))))))], 13913 Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4))), 13914 Close 13915 (Var("rn",F32), 13916 Let(TP[Var("result",F32),bVar"carry",bVar"overflow"], 13917 Call 13918 ("DataProcessingALU",PTy(F32,PTy(bTy,bTy)), 13919 TP[Var("opc",F4),Var("rn",F32),Var("imm32",F32),bVar"C"]), 13920 ITE(bVar"setflags", 13921 MB(Call("CurrentModeIsHyp",ATy(qTy,PTy(bTy,qTy)),LU), 13922 Close 13923 (bVar"b", 13924 ITE(bVar"b", 13925 Call 13926 ("TakeUndefInstrException", 13927 ATy(qTy,PTy(uTy,qTy)),LU), 13928 MB(Call 13929 ("CurrentModeIsUserOrSystem", 13930 ATy(qTy,PTy(bTy,qTy)),LU), 13931 Close 13932 (bVar"b", 13933 ITE(bVar"b", 13934 Call 13935 ("raise'exception", 13936 ATy(qTy,PTy(uTy,qTy)), 13937 Call 13938 ("UNPREDICTABLE",CTy"exception", 13939 LS"DataProcessingPC")), 13940 MB(Const 13941 ("SPSR", 13942 ATy(qTy,PTy(CTy"PSR",qTy))), 13943 Close 13944 (Var("v",CTy"PSR"), 13945 MB(MB(MB(MU(Call 13946 ("reg'PSR",F32, 13947 Var("v",CTy"PSR")), 13948 qTy), 13949 Close 13950 (Var("v",F32), 13951 MU(TP[Var("v",F32), 13952 LW(15,4),LT], 13953 qTy))), 13954 Close 13955 (Var("v", 13956 PTy(F32, 13957 PTy(F4,bTy))), 13958 Call 13959 ("CPSRWriteByInstr", 13960 ATy(qTy, 13961 PTy(uTy,qTy)), 13962 Var("v", 13963 PTy(F32, 13964 PTy(F4,bTy)))))), 13965 Close 13966 (AVar uTy, 13967 MB(MR(Close 13968 (qVar"s", 13969 Dest 13970 ("CPSR", 13971 CTy"PSR", 13972 qVar"s"))), 13973 Close 13974 (Var("v",CTy"PSR"), 13975 MB(MB(MB(MU(Dest 13976 ("M", 13977 FTy 5, 13978 Var("v", 13979 CTy"PSR")), 13980 qTy), 13981 Close 13982 (Var("v", 13983 FTy 5), 13984 MU(EQ(Var("v", 13985 FTy 5), 13986 LW(26, 13987 5)), 13988 qTy))), 13989 Close 13990 (bVar"b", 13991 ITE(bVar"b", 13992 MB(Call 13993 ("CurrentInstrSet", 13994 ATy(qTy, 13995 PTy(CTy"InstrSet", 13996 qTy)), 13997 LU), 13998 Close 13999 (Var("v", 14000 CTy"InstrSet"), 14001 MU(EQ(Var("v", 14002 CTy"InstrSet"), 14003 LC("InstrSet_ThumbEE", 14004 CTy"InstrSet")), 14005 qTy))), 14006 MU(LF, 14007 qTy)))), 14008 Close 14009 (bVar"b", 14010 ITE(bVar"b", 14011 Call 14012 ("raise'exception", 14013 ATy(qTy, 14014 PTy(uTy, 14015 qTy)), 14016 Call 14017 ("UNPREDICTABLE", 14018 CTy"exception", 14019 LS 14020 "DataProcessingPC")), 14021 Call 14022 ("BranchWritePC", 14023 ATy(qTy, 14024 PTy(uTy, 14025 qTy)), 14026 Var("result", 14027 F32))))))))))))))))), 14028 Call 14029 ("ALUWritePC",ATy(qTy,PTy(uTy,qTy)),Var("result",F32))))))) 14030; 14031val dfn'Move_def = Def 14032 ("dfn'Move", 14033 TP[bVar"setflags",bVar"negate",Var("d",F4),Var("imm12",FTy 12)], 14034 Let(Var("opc",F4),CC[LW(3,2),Mop(Cast F1,bVar"negate"),LW(1,1)], 14035 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 14036 Close 14037 (Var("v",CTy"PSR"), 14038 MB(MB(MB(MU(Dest("C",bTy,Var("v",CTy"PSR")),qTy), 14039 Close 14040 (bVar"v",MU(TP[Var("imm12",FTy 12),bVar"v"],qTy))), 14041 Close 14042 (Var("v",PTy(FTy 12,bTy)), 14043 Call 14044 ("ExpandImm_C",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 14045 Var("v",PTy(FTy 12,bTy))))), 14046 Close 14047 (Var("x",PTy(F32,bTy)), 14048 CS(Var("x",PTy(F32,bTy)), 14049 [(TP[Var("imm32",F32),bVar"carry"], 14050 ITE(EQ(Var("d",F4),LW(15,4)), 14051 Call 14052 ("DataProcessingPC",ATy(qTy,PTy(uTy,qTy)), 14053 TP[Var("opc",F4),bVar"setflags",LW(15,4), 14054 Var("imm32",F32),bVar"carry"]), 14055 Call 14056 ("DataProcessing",ATy(qTy,PTy(uTy,qTy)), 14057 TP[Var("opc",F4),bVar"setflags", 14058 Var("d",F4),LW(15,4),Var("imm32",F32), 14059 bVar"carry"])))]))))))) 14060; 14061val dfn'AddSub_def = Def 14062 ("dfn'AddSub",TP[bVar"sub",Var("d",F4),Var("n",F4),Var("imm12",FTy 12)], 14063 Call 14064 ("DataProcessing",ATy(qTy,PTy(uTy,qTy)), 14065 TP[ITE(bVar"sub",LW(2,4),LW(4,4)),LF,Var("d",F4),Var("n",F4), 14066 Mop(Cast F32,Var("imm12",FTy 12)),LX bTy])) 14067; 14068val dfn'TestCompareImmediate_def = Def 14069 ("dfn'TestCompareImmediate", 14070 TP[Var("op",FTy 2),Var("n",F4),Var("imm12",FTy 12)], 14071 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 14072 Close 14073 (Var("v",CTy"PSR"), 14074 MB(MB(MB(MU(Dest("C",bTy,Var("v",CTy"PSR")),qTy), 14075 Close(bVar"v",MU(TP[Var("imm12",FTy 12),bVar"v"],qTy))), 14076 Close 14077 (Var("v",PTy(FTy 12,bTy)), 14078 Call 14079 ("ExpandImm_C",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 14080 Var("v",PTy(FTy 12,bTy))))), 14081 Close 14082 (Var("x",PTy(F32,bTy)), 14083 CS(Var("x",PTy(F32,bTy)), 14084 [(TP[Var("imm32",F32),bVar"carry"], 14085 Call 14086 ("DataProcessing",ATy(qTy,PTy(uTy,qTy)), 14087 TP[CC[LW(2,2),Var("op",FTy 2)],LT,LX F4, 14088 Var("n",F4),Var("imm32",F32),bVar"carry"]))])))))) 14089; 14090val dfn'ArithLogicImmediate_def = Def 14091 ("dfn'ArithLogicImmediate", 14092 TP[Var("opc",F4),bVar"setflags",Var("d",F4),Var("n",F4), 14093 Var("imm12",FTy 12)], 14094 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 14095 Close 14096 (Var("v",CTy"PSR"), 14097 MB(MB(MB(MU(Dest("C",bTy,Var("v",CTy"PSR")),qTy), 14098 Close(bVar"v",MU(TP[Var("imm12",FTy 12),bVar"v"],qTy))), 14099 Close 14100 (Var("v",PTy(FTy 12,bTy)), 14101 Call 14102 ("ExpandImm_C",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 14103 Var("v",PTy(FTy 12,bTy))))), 14104 Close 14105 (Var("x",PTy(F32,bTy)), 14106 CS(Var("x",PTy(F32,bTy)), 14107 [(TP[Var("imm32",F32),bVar"carry"], 14108 ITE(EQ(Var("d",F4),LW(15,4)), 14109 Call 14110 ("DataProcessingPC",ATy(qTy,PTy(uTy,qTy)), 14111 TP[Var("opc",F4),bVar"setflags",Var("n",F4), 14112 Var("imm32",F32),bVar"carry"]), 14113 Call 14114 ("DataProcessing",ATy(qTy,PTy(uTy,qTy)), 14115 TP[Var("opc",F4),bVar"setflags",Var("d",F4), 14116 Var("n",F4),Var("imm32",F32),bVar"carry"])))])))))) 14117; 14118val doRegister_def = Def 14119 ("doRegister", 14120 TP[Var("opc",F4),bVar"setflags",Var("d",F4),Var("n",F4),Var("m",F4), 14121 Var("shift_t",CTy"SRType"),nVar"shift_n"], 14122 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 14123 Close 14124 (Var("v",F32), 14125 MB(MB(MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 14126 Close 14127 (Var("v0",CTy"PSR"), 14128 MB(MB(MB(MU(Dest("C",bTy,Var("v0",CTy"PSR")),qTy), 14129 Close 14130 (bVar"v",MU(TP[nVar"shift_n",bVar"v"],qTy))), 14131 Close 14132 (Var("v",PTy(nTy,bTy)), 14133 MU(TP[Var("shift_t",CTy"SRType"), 14134 Var("v",PTy(nTy,bTy))],qTy))), 14135 Close 14136 (Var("v0",PTy(CTy"SRType",PTy(nTy,bTy))), 14137 MU(TP[Var("v",F32), 14138 Var("v0",PTy(CTy"SRType",PTy(nTy,bTy)))], 14139 qTy))))), 14140 Close 14141 (Var("v",PTy(F32,PTy(CTy"SRType",PTy(nTy,bTy)))), 14142 Call 14143 ("Shift_C",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 14144 Var("v",PTy(F32,PTy(CTy"SRType",PTy(nTy,bTy))))))), 14145 Close 14146 (Var("x",PTy(F32,bTy)), 14147 CS(Var("x",PTy(F32,bTy)), 14148 [(TP[Var("shifted",F32),bVar"carry"], 14149 MB(ITE(Call("ArithmeticOpcode",bTy,Var("opc",F4)), 14150 MB(MR(Close 14151 (qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 14152 Close 14153 (Var("v",CTy"PSR"), 14154 MU(Dest("C",bTy,Var("v",CTy"PSR")),qTy))), 14155 MU(bVar"carry",qTy)), 14156 Close 14157 (bVar"carry", 14158 ITE(EQ(Var("d",F4),LW(15,4)), 14159 Call 14160 ("DataProcessingPC",ATy(qTy,PTy(uTy,qTy)), 14161 TP[Var("opc",F4),bVar"setflags", 14162 Var("n",F4),Var("shifted",F32), 14163 bVar"carry"]), 14164 Call 14165 ("DataProcessing",ATy(qTy,PTy(uTy,qTy)), 14166 TP[Var("opc",F4),bVar"setflags", 14167 Var("d",F4),Var("n",F4), 14168 Var("shifted",F32),bVar"carry"])))))])))))) 14169; 14170val dfn'Register_def = Def 14171 ("dfn'Register", 14172 TP[Var("opc",F4),bVar"setflags",Var("d",F4),Var("n",F4),Var("m",F4), 14173 Var("shift_t",CTy"SRType"),nVar"shift_n"], 14174 Call 14175 ("doRegister",ATy(qTy,PTy(uTy,qTy)), 14176 TP[Var("opc",F4),bVar"setflags",Var("d",F4),Var("n",F4),Var("m",F4), 14177 Var("shift_t",CTy"SRType"),nVar"shift_n"])) 14178; 14179val dfn'TestCompareRegister_def = Def 14180 ("dfn'TestCompareRegister", 14181 TP[Var("opc",FTy 2),Var("n",F4),Var("m",F4),Var("shift_t",CTy"SRType"), 14182 nVar"shift_n"], 14183 Call 14184 ("doRegister",ATy(qTy,PTy(uTy,qTy)), 14185 TP[CC[LW(2,2),Var("opc",FTy 2)],LT,LW(0,4),Var("n",F4),Var("m",F4), 14186 Var("shift_t",CTy"SRType"),nVar"shift_n"])) 14187; 14188val dfn'ShiftImmediate_def = Def 14189 ("dfn'ShiftImmediate", 14190 TP[bVar"negate",bVar"setflags",Var("d",F4),Var("m",F4), 14191 Var("shift_t",CTy"SRType"),nVar"shift_n"], 14192 ITE(bVar"negate", 14193 Call 14194 ("doRegister",ATy(qTy,PTy(uTy,qTy)), 14195 TP[LW(15,4),bVar"setflags",Var("d",F4),LW(15,4),Var("m",F4), 14196 Var("shift_t",CTy"SRType"),nVar"shift_n"]), 14197 Call 14198 ("doRegister",ATy(qTy,PTy(uTy,qTy)), 14199 TP[LW(13,4),bVar"setflags",Var("d",F4),LX F4,Var("m",F4), 14200 Var("shift_t",CTy"SRType"),nVar"shift_n"]))) 14201; 14202val doRegisterShiftedRegister_def = Def 14203 ("doRegisterShiftedRegister", 14204 TP[Var("opc",F4),bVar"setflags",Var("d",F4),Var("n",F4),Var("m",F4), 14205 Var("shift_t",CTy"SRType"),Var("s",F4)], 14206 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 14207 Close 14208 (Var("v",F32), 14209 MB(MB(MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("s",F4)), 14210 Close 14211 (Var("v0",F32), 14212 MB(MB(MB(MB(MU(EX(Var("v0",F32),LN 7,LN 0,F8),qTy), 14213 Close 14214 (Var("v",F8), 14215 MU(Mop(Cast nTy,Var("v",F8)),qTy))), 14216 Close 14217 (nVar"v", 14218 MB(MR(Close 14219 (qVar"s", 14220 Dest("CPSR",CTy"PSR",qVar"s"))), 14221 Close 14222 (Var("v0",CTy"PSR"), 14223 MB(MU(Dest 14224 ("C",bTy,Var("v0",CTy"PSR")), 14225 qTy), 14226 Close 14227 (bVar"v0", 14228 MU(TP[nVar"v",bVar"v0"],qTy))))))), 14229 Close 14230 (Var("v",PTy(nTy,bTy)), 14231 MU(TP[Var("shift_t",CTy"SRType"), 14232 Var("v",PTy(nTy,bTy))],qTy))), 14233 Close 14234 (Var("v0",PTy(CTy"SRType",PTy(nTy,bTy))), 14235 MU(TP[Var("v",F32), 14236 Var("v0",PTy(CTy"SRType",PTy(nTy,bTy)))], 14237 qTy))))), 14238 Close 14239 (Var("v",PTy(F32,PTy(CTy"SRType",PTy(nTy,bTy)))), 14240 Call 14241 ("Shift_C",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 14242 Var("v",PTy(F32,PTy(CTy"SRType",PTy(nTy,bTy))))))), 14243 Close 14244 (Var("x",PTy(F32,bTy)), 14245 CS(Var("x",PTy(F32,bTy)), 14246 [(TP[Var("shifted",F32),bVar"carry"], 14247 MB(ITE(Call("ArithmeticOpcode",bTy,Var("opc",F4)), 14248 MB(MR(Close 14249 (qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 14250 Close 14251 (Var("v",CTy"PSR"), 14252 MU(Dest("C",bTy,Var("v",CTy"PSR")),qTy))), 14253 MU(bVar"carry",qTy)), 14254 Close 14255 (bVar"carry", 14256 Call 14257 ("DataProcessing",ATy(qTy,PTy(uTy,qTy)), 14258 TP[Var("opc",F4),bVar"setflags",Var("d",F4), 14259 Var("n",F4),Var("shifted",F32),bVar"carry"]))))])))))) 14260; 14261val dfn'RegisterShiftedRegister_def = Def 14262 ("dfn'RegisterShiftedRegister", 14263 TP[Var("opc",F4),bVar"setflags",Var("d",F4),Var("n",F4),Var("m",F4), 14264 Var("shift_t",CTy"SRType"),Var("s",F4)], 14265 Call 14266 ("doRegisterShiftedRegister",ATy(qTy,PTy(uTy,qTy)), 14267 TP[Var("opc",F4),bVar"setflags",Var("d",F4),Var("n",F4),Var("m",F4), 14268 Var("shift_t",CTy"SRType"),Var("s",F4)])) 14269; 14270val dfn'ShiftRegister_def = Def 14271 ("dfn'ShiftRegister", 14272 TP[bVar"negate",bVar"setflags",Var("d",F4),Var("n",F4), 14273 Var("shift_t",CTy"SRType"),Var("m",F4)], 14274 ITE(bVar"negate", 14275 Call 14276 ("doRegisterShiftedRegister",ATy(qTy,PTy(uTy,qTy)), 14277 TP[LW(15,4),bVar"setflags",Var("d",F4),LW(15,4),Var("n",F4), 14278 Var("shift_t",CTy"SRType"),Var("m",F4)]), 14279 Call 14280 ("doRegisterShiftedRegister",ATy(qTy,PTy(uTy,qTy)), 14281 TP[LW(13,4),bVar"setflags",Var("d",F4),LX F4,Var("n",F4), 14282 Var("shift_t",CTy"SRType"),Var("m",F4)]))) 14283; 14284val dfn'SaturatingAddSubtract_def = Def 14285 ("dfn'SaturatingAddSubtract", 14286 TP[Var("opc",FTy 2),Var("d",F4),Var("m",F4),Var("n",F4)], 14287 MN(LX F32, 14288 MN(LX bTy, 14289 MB(CS(Var("opc",FTy 2), 14290 [(LW(0,2), 14291 MB(MD(MD(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),F32), 14292 bTy), 14293 Close 14294 (Var("v",F32), 14295 MB(MB(MB(MB(MU(Mop(Cast iTy,Var("v",F32)), 14296 PTy(bTy,PTy(F32,qTy))), 14297 Close 14298 (iVar"v", 14299 MB(MD(MD(Call 14300 ("R", 14301 ATy(qTy,PTy(F32,qTy)), 14302 Var("n",F4)),F32),bTy), 14303 Close 14304 (Var("v0",F32), 14305 MB(MU(Mop(Cast iTy, 14306 Var("v0",F32)), 14307 PTy(bTy,PTy(F32,qTy))), 14308 Close 14309 (iVar"v0", 14310 MU(Bop(Add,iVar"v", 14311 iVar"v0"), 14312 PTy(bTy,PTy(F32,qTy))))))))), 14313 Close 14314 (iVar"v", 14315 MU(TP[iVar"v",LN 32], 14316 PTy(bTy,PTy(F32,qTy))))), 14317 Close 14318 (Var("v",PTy(iTy,nTy)), 14319 MD(MD(Call 14320 ("SignedSatQ", 14321 ATy(qTy,PTy(PTy(F32,bTy),qTy)), 14322 Var("v",PTy(iTy,nTy))),F32),bTy))), 14323 Close 14324 (Var("x",PTy(F32,bTy)), 14325 CS(Var("x",PTy(F32,bTy)), 14326 [(TP[Var("r",F32),bVar"s"], 14327 MB(MW(Close 14328 (Var("s",PTy(bTy,PTy(F32,qTy))), 14329 TP[Mop(Fst, 14330 Var("s", 14331 PTy(bTy,PTy(F32,qTy)))), 14332 Var("r",F32), 14333 Mop(Snd, 14334 Mop(Snd, 14335 Var("s", 14336 PTy(bTy, 14337 PTy(F32,qTy)))))])), 14338 Close 14339 (AVar uTy, 14340 MW(Close 14341 (Var("s0", 14342 PTy(bTy,PTy(F32,qTy))), 14343 TP[bVar"s", 14344 Mop(Snd, 14345 Var("s0", 14346 PTy(bTy, 14347 PTy(F32,qTy))))])))))])))))), 14348 (LW(1,2), 14349 MB(MD(MD(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),F32), 14350 bTy), 14351 Close 14352 (Var("v",F32), 14353 MB(MB(MB(MB(MU(Mop(Cast iTy,Var("v",F32)), 14354 PTy(bTy,PTy(F32,qTy))), 14355 Close 14356 (iVar"v", 14357 MB(MD(MD(Call 14358 ("R", 14359 ATy(qTy,PTy(F32,qTy)), 14360 Var("n",F4)),F32),bTy), 14361 Close 14362 (Var("v0",F32), 14363 MB(MU(Mop(Cast iTy, 14364 Var("v0",F32)), 14365 PTy(bTy,PTy(F32,qTy))), 14366 Close 14367 (iVar"v0", 14368 MU(Bop(Sub,iVar"v", 14369 iVar"v0"), 14370 PTy(bTy,PTy(F32,qTy))))))))), 14371 Close 14372 (iVar"v", 14373 MU(TP[iVar"v",LN 32], 14374 PTy(bTy,PTy(F32,qTy))))), 14375 Close 14376 (Var("v",PTy(iTy,nTy)), 14377 MD(MD(Call 14378 ("SignedSatQ", 14379 ATy(qTy,PTy(PTy(F32,bTy),qTy)), 14380 Var("v",PTy(iTy,nTy))),F32),bTy))), 14381 Close 14382 (Var("x",PTy(F32,bTy)), 14383 CS(Var("x",PTy(F32,bTy)), 14384 [(TP[Var("r",F32),bVar"s"], 14385 MB(MW(Close 14386 (Var("s",PTy(bTy,PTy(F32,qTy))), 14387 TP[Mop(Fst, 14388 Var("s", 14389 PTy(bTy,PTy(F32,qTy)))), 14390 Var("r",F32), 14391 Mop(Snd, 14392 Mop(Snd, 14393 Var("s", 14394 PTy(bTy, 14395 PTy(F32,qTy)))))])), 14396 Close 14397 (AVar uTy, 14398 MW(Close 14399 (Var("s0", 14400 PTy(bTy,PTy(F32,qTy))), 14401 TP[bVar"s", 14402 Mop(Snd, 14403 Var("s0", 14404 PTy(bTy, 14405 PTy(F32,qTy))))])))))])))))), 14406 (LW(2,2), 14407 MB(MD(MD(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),F32), 14408 bTy), 14409 Close 14410 (Var("v",F32), 14411 MB(MB(MB(MB(MU(Mop(Cast iTy,Var("v",F32)), 14412 PTy(bTy,PTy(F32,qTy))), 14413 Close 14414 (iVar"v", 14415 MU(Bop(Mul,LI 2,iVar"v"), 14416 PTy(bTy,PTy(F32,qTy))))), 14417 Close 14418 (iVar"v", 14419 MU(TP[iVar"v",LN 32], 14420 PTy(bTy,PTy(F32,qTy))))), 14421 Close 14422 (Var("v",PTy(iTy,nTy)), 14423 MD(MD(Call 14424 ("SignedSatQ", 14425 ATy(qTy,PTy(PTy(F32,bTy),qTy)), 14426 Var("v",PTy(iTy,nTy))),F32),bTy))), 14427 Close 14428 (Var("x",PTy(F32,bTy)), 14429 CS(Var("x",PTy(F32,bTy)), 14430 [(TP[Var("doubled",F32),bVar"sat1"], 14431 MB(MD(MD(Call 14432 ("R",ATy(qTy,PTy(F32,qTy)), 14433 Var("m",F4)),F32),bTy), 14434 Close 14435 (Var("v",F32), 14436 MB(MB(MB(MB(MU(Mop(Cast iTy, 14437 Var("v",F32)), 14438 PTy(bTy, 14439 PTy(F32,qTy))), 14440 Close 14441 (iVar"v", 14442 MU(Bop(Add,iVar"v", 14443 Mop(Cast iTy, 14444 Var("doubled", 14445 F32))), 14446 PTy(bTy, 14447 PTy(F32,qTy))))), 14448 Close 14449 (iVar"v", 14450 MU(TP[iVar"v",LN 32], 14451 PTy(bTy, 14452 PTy(F32,qTy))))), 14453 Close 14454 (Var("v",PTy(iTy,nTy)), 14455 MD(MD(Call 14456 ("SignedSatQ", 14457 ATy(qTy, 14458 PTy(PTy(F32, 14459 bTy), 14460 qTy)), 14461 Var("v", 14462 PTy(iTy,nTy))), 14463 F32),bTy))), 14464 Close 14465 (Var("x",PTy(F32,bTy)), 14466 CS(Var("x",PTy(F32,bTy)), 14467 [(TP[Var("r",F32), 14468 bVar"sat2"], 14469 MB(MW(Close 14470 (Var("s", 14471 PTy(bTy, 14472 PTy(F32, 14473 qTy))), 14474 TP[Mop(Fst, 14475 Var("s", 14476 PTy(bTy, 14477 PTy(F32, 14478 qTy)))), 14479 Var("r",F32), 14480 Mop(Snd, 14481 Mop(Snd, 14482 Var("s", 14483 PTy(bTy, 14484 PTy(F32, 14485 qTy)))))])), 14486 Close 14487 (AVar uTy, 14488 MW(Close 14489 (Var("s", 14490 PTy(bTy, 14491 PTy(F32, 14492 qTy))), 14493 TP[bVar"sat1", 14494 Mop(Snd, 14495 Var("s", 14496 PTy(bTy, 14497 PTy(F32, 14498 qTy))))])))))]))))))])))))), 14499 (LW(3,2), 14500 MB(MD(MD(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),F32), 14501 bTy), 14502 Close 14503 (Var("v",F32), 14504 MB(MB(MB(MB(MU(Mop(Cast iTy,Var("v",F32)), 14505 PTy(bTy,PTy(F32,qTy))), 14506 Close 14507 (iVar"v", 14508 MU(Bop(Mul,LI 2,iVar"v"), 14509 PTy(bTy,PTy(F32,qTy))))), 14510 Close 14511 (iVar"v", 14512 MU(TP[iVar"v",LN 32], 14513 PTy(bTy,PTy(F32,qTy))))), 14514 Close 14515 (Var("v",PTy(iTy,nTy)), 14516 MD(MD(Call 14517 ("SignedSatQ", 14518 ATy(qTy,PTy(PTy(F32,bTy),qTy)), 14519 Var("v",PTy(iTy,nTy))),F32),bTy))), 14520 Close 14521 (Var("x",PTy(F32,bTy)), 14522 CS(Var("x",PTy(F32,bTy)), 14523 [(TP[Var("doubled",F32),bVar"sat1"], 14524 MB(MD(MD(Call 14525 ("R",ATy(qTy,PTy(F32,qTy)), 14526 Var("m",F4)),F32),bTy), 14527 Close 14528 (Var("v",F32), 14529 MB(MB(MB(MB(MU(Mop(Cast iTy, 14530 Var("v",F32)), 14531 PTy(bTy, 14532 PTy(F32,qTy))), 14533 Close 14534 (iVar"v", 14535 MU(Bop(Sub,iVar"v", 14536 Mop(Cast iTy, 14537 Var("doubled", 14538 F32))), 14539 PTy(bTy, 14540 PTy(F32,qTy))))), 14541 Close 14542 (iVar"v", 14543 MU(TP[iVar"v",LN 32], 14544 PTy(bTy, 14545 PTy(F32,qTy))))), 14546 Close 14547 (Var("v",PTy(iTy,nTy)), 14548 MD(MD(Call 14549 ("SignedSatQ", 14550 ATy(qTy, 14551 PTy(PTy(F32, 14552 bTy), 14553 qTy)), 14554 Var("v", 14555 PTy(iTy,nTy))), 14556 F32),bTy))), 14557 Close 14558 (Var("x",PTy(F32,bTy)), 14559 CS(Var("x",PTy(F32,bTy)), 14560 [(TP[Var("r",F32), 14561 bVar"sat2"], 14562 MB(MW(Close 14563 (Var("s", 14564 PTy(bTy, 14565 PTy(F32, 14566 qTy))), 14567 TP[Mop(Fst, 14568 Var("s", 14569 PTy(bTy, 14570 PTy(F32, 14571 qTy)))), 14572 Var("r",F32), 14573 Mop(Snd, 14574 Mop(Snd, 14575 Var("s", 14576 PTy(bTy, 14577 PTy(F32, 14578 qTy)))))])), 14579 Close 14580 (AVar uTy, 14581 MW(Close 14582 (Var("s", 14583 PTy(bTy, 14584 PTy(F32, 14585 qTy))), 14586 TP[Bop(Or, 14587 bVar"sat1", 14588 bVar"sat2"), 14589 Mop(Snd, 14590 Var("s", 14591 PTy(bTy, 14592 PTy(F32, 14593 qTy))))])))))]))))))]))))))]), 14594 Close 14595 (AVar uTy, 14596 MB(MR(Close 14597 (Var("s",PTy(bTy,PTy(F32,qTy))), 14598 Mop(Fst,Mop(Snd,Var("s",PTy(bTy,PTy(F32,qTy))))))), 14599 Close 14600 (Var("v",F32), 14601 MB(MB(MU(TP[Var("v",F32),Var("d",F4)], 14602 PTy(bTy,PTy(F32,qTy))), 14603 Close 14604 (Var("v",PTy(F32,F4)), 14605 MD(MD(Call 14606 ("write'R",ATy(qTy,PTy(uTy,qTy)), 14607 Var("v",PTy(F32,F4))),F32),bTy))), 14608 Close 14609 (AVar uTy, 14610 MB(MR(Close 14611 (Var("s",PTy(bTy,PTy(F32,qTy))), 14612 Mop(Fst,Var("s",PTy(bTy,PTy(F32,qTy)))))), 14613 Close 14614 (bVar"v", 14615 MB(ITE(bVar"v", 14616 MB(MR(Close 14617 (Var("s", 14618 PTy(bTy,PTy(F32,qTy))), 14619 Dest 14620 ("CPSR",CTy"PSR", 14621 Mop(Snd, 14622 Mop(Snd, 14623 Var("s", 14624 PTy(bTy, 14625 PTy(F32, 14626 qTy)))))))), 14627 Close 14628 (Var("v",CTy"PSR"), 14629 MB(MB(MU(TP[Var("v",CTy"PSR"), 14630 LT], 14631 PTy(bTy, 14632 PTy(F32,qTy))), 14633 Close 14634 (Var("v", 14635 PTy(CTy"PSR", 14636 bTy)), 14637 MU(Rupd 14638 ("Q", 14639 Var("v", 14640 PTy(CTy"PSR", 14641 bTy))), 14642 PTy(bTy, 14643 PTy(F32,qTy))))), 14644 Close 14645 (Var("v",CTy"PSR"), 14646 MW(Close 14647 (Var("s", 14648 PTy(bTy, 14649 PTy(F32, 14650 qTy))), 14651 TP[Mop(Fst, 14652 Var("s", 14653 PTy(bTy, 14654 PTy(F32, 14655 qTy)))), 14656 Let(Var("s", 14657 PTy(F32, 14658 qTy)), 14659 Mop(Snd, 14660 Var("s", 14661 PTy(bTy, 14662 PTy(F32, 14663 qTy)))), 14664 TP[Mop(Fst, 14665 Var("s", 14666 PTy(F32, 14667 qTy))), 14668 Rupd 14669 ("CPSR", 14670 TP[Mop(Snd, 14671 Var("s", 14672 PTy(F32, 14673 qTy))), 14674 Var("v", 14675 CTy"PSR")])])])))))), 14676 MU(LU,PTy(bTy,PTy(F32,qTy)))), 14677 Close 14678 (AVar uTy, 14679 MD(MD(Call 14680 ("IncPC", 14681 ATy(qTy,PTy(uTy,qTy)),LU), 14682 F32),bTy)))))))))))))) 14683; 14684val dfn'Multiply32_def = Def 14685 ("dfn'Multiply32", 14686 TP[bVar"setflags",Var("d",F4),Var("n",F4),Var("m",F4)], 14687 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 14688 Close 14689 (Var("rn",F32), 14690 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 14691 Close 14692 (Var("rm",F32), 14693 Let(Var("result",F32),Bop(Mul,Var("rn",F32),Var("rm",F32)), 14694 MB(Call 14695 ("write'R",ATy(qTy,PTy(uTy,qTy)), 14696 TP[Var("result",F32),Var("d",F4)]), 14697 Close 14698 (AVar uTy, 14699 MB(ITE(bVar"setflags", 14700 MB(MR(Close 14701 (qVar"s", 14702 Dest("CPSR",CTy"PSR",qVar"s"))), 14703 Close 14704 (Var("v",CTy"PSR"), 14705 MB(MB(MB(MU(TP[Var("v",CTy"PSR"), 14706 Bop(Bit, 14707 Var("result",F32), 14708 LN 31)],qTy), 14709 Close 14710 (Var("v", 14711 PTy(CTy"PSR",bTy)), 14712 MU(Rupd 14713 ("N", 14714 Var("v", 14715 PTy(CTy"PSR", 14716 bTy))),qTy))), 14717 Close 14718 (Var("v",CTy"PSR"), 14719 MW(Close 14720 (qVar"s", 14721 Rupd 14722 ("CPSR", 14723 TP[qVar"s", 14724 Var("v", 14725 CTy"PSR")]))))), 14726 Close 14727 (AVar uTy, 14728 MB(MR(Close 14729 (qVar"s", 14730 Dest 14731 ("CPSR",CTy"PSR", 14732 qVar"s"))), 14733 Close 14734 (Var("v",CTy"PSR"), 14735 MB(MB(MB(MU(TP[Var("v", 14736 CTy"PSR"), 14737 EQ(Var("result", 14738 F32), 14739 LW(0, 14740 32))], 14741 qTy), 14742 Close 14743 (Var("v", 14744 PTy(CTy"PSR", 14745 bTy)), 14746 MU(Rupd 14747 ("Z", 14748 Var("v", 14749 PTy(CTy"PSR", 14750 bTy))), 14751 qTy))), 14752 Close 14753 (Var("v", 14754 CTy"PSR"), 14755 MW(Close 14756 (qVar"s", 14757 Rupd 14758 ("CPSR", 14759 TP[qVar"s", 14760 Var("v", 14761 CTy"PSR")]))))), 14762 Close 14763 (AVar uTy, 14764 MB(Call 14765 ("ArchVersion", 14766 ATy(qTy, 14767 PTy(nTy, 14768 qTy)), 14769 LU), 14770 Close 14771 (nVar"v", 14772 MB(MU(EQ(nVar"v", 14773 LN 14774 4), 14775 qTy), 14776 Close 14777 (bVar"b", 14778 ITE(bVar"b", 14779 MB(MR(Close 14780 (qVar"s", 14781 Dest 14782 ("CPSR", 14783 CTy"PSR", 14784 qVar"s"))), 14785 Close 14786 (Var("v", 14787 CTy"PSR"), 14788 MB(MB(MB(MR(Close 14789 (qVar"s", 14790 Dest 14791 ("CPSR", 14792 CTy"PSR", 14793 qVar"s"))), 14794 Close 14795 (Var("v0", 14796 CTy"PSR"), 14797 MB(MB(MB(MB(MU(Dest 14798 ("C", 14799 bTy, 14800 Var("v0", 14801 CTy"PSR")), 14802 qTy), 14803 Close 14804 (bVar"v", 14805 MU(TP[Var("rm", 14806 F32), 14807 bVar"v"], 14808 qTy))), 14809 Close 14810 (Var("v", 14811 PTy(F32, 14812 bTy)), 14813 MU(TP[Var("rn", 14814 F32), 14815 Var("v", 14816 PTy(F32, 14817 bTy))], 14818 qTy))), 14819 Close 14820 (Var("v", 14821 PTy(F32, 14822 PTy(F32, 14823 bTy))), 14824 MU(Apply 14825 (LX(ATy(PTy(F32, 14826 PTy(F32, 14827 bTy)), 14828 bTy)), 14829 Var("v", 14830 PTy(F32, 14831 PTy(F32, 14832 bTy)))), 14833 qTy))), 14834 Close 14835 (bVar"v0", 14836 MU(TP[Var("v", 14837 CTy"PSR"), 14838 bVar"v0"], 14839 qTy))))), 14840 Close 14841 (Var("v", 14842 PTy(CTy"PSR", 14843 bTy)), 14844 MU(Rupd 14845 ("C", 14846 Var("v", 14847 PTy(CTy"PSR", 14848 bTy))), 14849 qTy))), 14850 Close 14851 (Var("v", 14852 CTy"PSR"), 14853 MW(Close 14854 (qVar"s", 14855 Rupd 14856 ("CPSR", 14857 TP[qVar"s", 14858 Var("v", 14859 CTy"PSR")]))))))), 14860 MU(LU, 14861 qTy)))))))))))))), 14862 MU(LU,qTy)), 14863 Close 14864 (AVar uTy, 14865 Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU))))))))))) 14866; 14867val dfn'MultiplyAccumulate_def = Def 14868 ("dfn'MultiplyAccumulate", 14869 TP[bVar"setflags",Var("d",F4),Var("n",F4),Var("m",F4),Var("a",F4)], 14870 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 14871 Close 14872 (Var("rn",F32), 14873 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 14874 Close 14875 (Var("rm",F32), 14876 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("a",F4)), 14877 Close 14878 (Var("ra",F32), 14879 Let(Var("result",F32), 14880 Bop(Add,Bop(Mul,Var("rn",F32),Var("rm",F32)), 14881 Var("ra",F32)), 14882 MB(Call 14883 ("write'R",ATy(qTy,PTy(uTy,qTy)), 14884 TP[Var("result",F32),Var("d",F4)]), 14885 Close 14886 (AVar uTy, 14887 MB(ITE(bVar"setflags", 14888 MB(MR(Close 14889 (qVar"s", 14890 Dest 14891 ("CPSR",CTy"PSR",qVar"s"))), 14892 Close 14893 (Var("v",CTy"PSR"), 14894 MB(MB(MB(MU(TP[Var("v", 14895 CTy"PSR"), 14896 Bop(Bit, 14897 Var("result", 14898 F32), 14899 LN 31)],qTy), 14900 Close 14901 (Var("v", 14902 PTy(CTy"PSR", 14903 bTy)), 14904 MU(Rupd 14905 ("N", 14906 Var("v", 14907 PTy(CTy"PSR", 14908 bTy))), 14909 qTy))), 14910 Close 14911 (Var("v",CTy"PSR"), 14912 MW(Close 14913 (qVar"s", 14914 Rupd 14915 ("CPSR", 14916 TP[qVar"s", 14917 Var("v", 14918 CTy"PSR")]))))), 14919 Close 14920 (AVar uTy, 14921 MB(MR(Close 14922 (qVar"s", 14923 Dest 14924 ("CPSR", 14925 CTy"PSR", 14926 qVar"s"))), 14927 Close 14928 (Var("v",CTy"PSR"), 14929 MB(MB(MB(MU(TP[Var("v", 14930 CTy"PSR"), 14931 EQ(Var("result", 14932 F32), 14933 LW(0, 14934 32))], 14935 qTy), 14936 Close 14937 (Var("v", 14938 PTy(CTy"PSR", 14939 bTy)), 14940 MU(Rupd 14941 ("Z", 14942 Var("v", 14943 PTy(CTy"PSR", 14944 bTy))), 14945 qTy))), 14946 Close 14947 (Var("v", 14948 CTy"PSR"), 14949 MW(Close 14950 (qVar"s", 14951 Rupd 14952 ("CPSR", 14953 TP[qVar"s", 14954 Var("v", 14955 CTy"PSR")]))))), 14956 Close 14957 (AVar uTy, 14958 MB(Call 14959 ("ArchVersion", 14960 ATy(qTy, 14961 PTy(nTy, 14962 qTy)), 14963 LU), 14964 Close 14965 (nVar"v", 14966 MB(MU(EQ(nVar"v", 14967 LN 14968 4), 14969 qTy), 14970 Close 14971 (bVar"b", 14972 ITE(bVar"b", 14973 MB(MR(Close 14974 (qVar"s", 14975 Dest 14976 ("CPSR", 14977 CTy"PSR", 14978 qVar"s"))), 14979 Close 14980 (Var("v", 14981 CTy"PSR"), 14982 MB(MB(MB(MR(Close 14983 (qVar"s", 14984 Dest 14985 ("CPSR", 14986 CTy"PSR", 14987 qVar"s"))), 14988 Close 14989 (Var("v0", 14990 CTy"PSR"), 14991 MB(MB(MB(MB(MB(MU(Dest 14992 ("C", 14993 bTy, 14994 Var("v0", 14995 CTy"PSR")), 14996 qTy), 14997 Close 14998 (bVar"v", 14999 MU(TP[Var("ra", 15000 F32), 15001 bVar"v"], 15002 qTy))), 15003 Close 15004 (Var("v", 15005 PTy(F32, 15006 bTy)), 15007 MU(TP[Var("rm", 15008 F32), 15009 Var("v", 15010 PTy(F32, 15011 bTy))], 15012 qTy))), 15013 Close 15014 (Var("v", 15015 PTy(F32, 15016 PTy(F32, 15017 bTy))), 15018 MU(TP[Var("rn", 15019 F32), 15020 Var("v", 15021 PTy(F32, 15022 PTy(F32, 15023 bTy)))], 15024 qTy))), 15025 Close 15026 (Var("v", 15027 PTy(F32, 15028 PTy(F32, 15029 PTy(F32, 15030 bTy)))), 15031 MU(Apply 15032 (LX(ATy(PTy(F32, 15033 PTy(F32, 15034 PTy(F32, 15035 bTy))), 15036 bTy)), 15037 Var("v", 15038 PTy(F32, 15039 PTy(F32, 15040 PTy(F32, 15041 bTy))))), 15042 qTy))), 15043 Close 15044 (bVar"v0", 15045 MU(TP[Var("v", 15046 CTy"PSR"), 15047 bVar"v0"], 15048 qTy))))), 15049 Close 15050 (Var("v", 15051 PTy(CTy"PSR", 15052 bTy)), 15053 MU(Rupd 15054 ("C", 15055 Var("v", 15056 PTy(CTy"PSR", 15057 bTy))), 15058 qTy))), 15059 Close 15060 (Var("v", 15061 CTy"PSR"), 15062 MW(Close 15063 (qVar"s", 15064 Rupd 15065 ("CPSR", 15066 TP[qVar"s", 15067 Var("v", 15068 CTy"PSR")]))))))), 15069 MU(LU, 15070 qTy)))))))))))))), 15071 MU(LU,qTy)), 15072 Close 15073 (AVar uTy, 15074 Call 15075 ("IncPC",ATy(qTy,PTy(uTy,qTy)),LU))))))))))))) 15076; 15077val dfn'MultiplyLong_def = Def 15078 ("dfn'MultiplyLong", 15079 TP[bVar"accumulate",bVar"signed",bVar"setflags",Var("dhi",F4), 15080 Var("dlo",F4),Var("n",F4),Var("m",F4)], 15081 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 15082 Close 15083 (Var("rn",F32), 15084 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 15085 Close 15086 (Var("rm",F32), 15087 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("dhi",F4)), 15088 Close 15089 (Var("rdhi",F32), 15090 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("dlo",F4)), 15091 Close 15092 (Var("rdlo",F32), 15093 Let(Var("result",F64), 15094 Bop(Add, 15095 ITE(bVar"signed", 15096 Bop(Mul,Mop(SE F64,Var("rn",F32)), 15097 Mop(SE F64,Var("rm",F32))), 15098 Bop(Mul, 15099 Mop(Cast F64,Var("rn",F32)), 15100 Mop(Cast F64,Var("rm",F32)))), 15101 ITE(bVar"accumulate", 15102 CC[Var("rdhi",F32),Var("rdlo",F32)], 15103 LW(0,64))), 15104 MB(Call 15105 ("write'R",ATy(qTy,PTy(uTy,qTy)), 15106 TP[EX(Var("result",F64),LN 63,LN 32, 15107 F32),Var("dhi",F4)]), 15108 Close 15109 (AVar uTy, 15110 MB(Call 15111 ("write'R", 15112 ATy(qTy,PTy(uTy,qTy)), 15113 TP[EX(Var("result",F64),LN 31, 15114 LN 0,F32),Var("dlo",F4)]), 15115 Close 15116 (AVar uTy, 15117 MB(ITE(bVar"setflags", 15118 MB(MR(Close 15119 (qVar"s", 15120 Dest 15121 ("CPSR", 15122 CTy"PSR", 15123 qVar"s"))), 15124 Close 15125 (Var("v",CTy"PSR"), 15126 MB(MB(MB(MU(TP[Var("v", 15127 CTy"PSR"), 15128 Bop(Bit, 15129 Var("result", 15130 F64), 15131 LN 15132 63)], 15133 qTy), 15134 Close 15135 (Var("v", 15136 PTy(CTy"PSR", 15137 bTy)), 15138 MU(Rupd 15139 ("N", 15140 Var("v", 15141 PTy(CTy"PSR", 15142 bTy))), 15143 qTy))), 15144 Close 15145 (Var("v", 15146 CTy"PSR"), 15147 MW(Close 15148 (qVar"s", 15149 Rupd 15150 ("CPSR", 15151 TP[qVar"s", 15152 Var("v", 15153 CTy"PSR")]))))), 15154 Close 15155 (AVar uTy, 15156 MB(MR(Close 15157 (qVar"s", 15158 Dest 15159 ("CPSR", 15160 CTy"PSR", 15161 qVar"s"))), 15162 Close 15163 (Var("v", 15164 CTy"PSR"), 15165 MB(MB(MB(MU(TP[Var("v", 15166 CTy"PSR"), 15167 EQ(Var("result", 15168 F64), 15169 LW(0, 15170 64))], 15171 qTy), 15172 Close 15173 (Var("v", 15174 PTy(CTy"PSR", 15175 bTy)), 15176 MU(Rupd 15177 ("Z", 15178 Var("v", 15179 PTy(CTy"PSR", 15180 bTy))), 15181 qTy))), 15182 Close 15183 (Var("v", 15184 CTy"PSR"), 15185 MW(Close 15186 (qVar"s", 15187 Rupd 15188 ("CPSR", 15189 TP[qVar"s", 15190 Var("v", 15191 CTy"PSR")]))))), 15192 Close 15193 (AVar 15194 uTy, 15195 MB(Call 15196 ("ArchVersion", 15197 ATy(qTy, 15198 PTy(nTy, 15199 qTy)), 15200 LU), 15201 Close 15202 (nVar"v", 15203 MB(MU(EQ(nVar"v", 15204 LN 15205 4), 15206 qTy), 15207 Close 15208 (bVar"b", 15209 ITE(bVar"b", 15210 MB(MR(Close 15211 (qVar"s", 15212 Dest 15213 ("CPSR", 15214 CTy"PSR", 15215 qVar"s"))), 15216 Close 15217 (Var("v", 15218 CTy"PSR"), 15219 MB(MB(MB(MB(MR(Close 15220 (qVar"s", 15221 Dest 15222 ("CPSR", 15223 CTy"PSR", 15224 qVar"s"))), 15225 Close 15226 (Var("v0", 15227 CTy"PSR"), 15228 MB(MB(MB(MB(MB(MB(MU(Dest 15229 ("C", 15230 bTy, 15231 Var("v0", 15232 CTy"PSR")), 15233 qTy), 15234 Close 15235 (bVar"v", 15236 MU(TP[Var("rdlo", 15237 F32), 15238 bVar"v"], 15239 qTy))), 15240 Close 15241 (Var("v", 15242 PTy(F32, 15243 bTy)), 15244 MU(TP[Var("rdhi", 15245 F32), 15246 Var("v", 15247 PTy(F32, 15248 bTy))], 15249 qTy))), 15250 Close 15251 (Var("v", 15252 PTy(F32, 15253 PTy(F32, 15254 bTy))), 15255 MU(TP[Var("rm", 15256 F32), 15257 Var("v", 15258 PTy(F32, 15259 PTy(F32, 15260 bTy)))], 15261 qTy))), 15262 Close 15263 (Var("v", 15264 PTy(F32, 15265 PTy(F32, 15266 PTy(F32, 15267 bTy)))), 15268 MU(TP[Var("rn", 15269 F32), 15270 Var("v", 15271 PTy(F32, 15272 PTy(F32, 15273 PTy(F32, 15274 bTy))))], 15275 qTy))), 15276 Close 15277 (Var("v", 15278 PTy(F32, 15279 PTy(F32, 15280 PTy(F32, 15281 PTy(F32, 15282 bTy))))), 15283 MU(Apply 15284 (LX(ATy(PTy(F32, 15285 PTy(F32, 15286 PTy(F32, 15287 PTy(F32, 15288 bTy)))), 15289 bTy)), 15290 Var("v", 15291 PTy(F32, 15292 PTy(F32, 15293 PTy(F32, 15294 PTy(F32, 15295 bTy)))))), 15296 qTy))), 15297 Close 15298 (bVar"v0", 15299 MU(TP[Var("v", 15300 CTy"PSR"), 15301 bVar"v0"], 15302 qTy))))), 15303 Close 15304 (Var("v", 15305 PTy(CTy"PSR", 15306 bTy)), 15307 MU(Rupd 15308 ("C", 15309 Var("v", 15310 PTy(CTy"PSR", 15311 bTy))), 15312 qTy))), 15313 Close 15314 (Var("v", 15315 CTy"PSR"), 15316 MW(Close 15317 (qVar"s", 15318 Rupd 15319 ("CPSR", 15320 TP[qVar"s", 15321 Var("v", 15322 CTy"PSR")]))))), 15323 Close 15324 (AVar 15325 uTy, 15326 MB(MR(Close 15327 (qVar"s", 15328 Dest 15329 ("CPSR", 15330 CTy"PSR", 15331 qVar"s"))), 15332 Close 15333 (Var("v", 15334 CTy"PSR"), 15335 MB(MB(MB(MR(Close 15336 (qVar"s", 15337 Dest 15338 ("CPSR", 15339 CTy"PSR", 15340 qVar"s"))), 15341 Close 15342 (Var("v0", 15343 CTy"PSR"), 15344 MB(MB(MB(MB(MB(MB(MU(Dest 15345 ("V", 15346 bTy, 15347 Var("v0", 15348 CTy"PSR")), 15349 qTy), 15350 Close 15351 (bVar"v", 15352 MU(TP[Var("rdlo", 15353 F32), 15354 bVar"v"], 15355 qTy))), 15356 Close 15357 (Var("v", 15358 PTy(F32, 15359 bTy)), 15360 MU(TP[Var("rdhi", 15361 F32), 15362 Var("v", 15363 PTy(F32, 15364 bTy))], 15365 qTy))), 15366 Close 15367 (Var("v", 15368 PTy(F32, 15369 PTy(F32, 15370 bTy))), 15371 MU(TP[Var("rm", 15372 F32), 15373 Var("v", 15374 PTy(F32, 15375 PTy(F32, 15376 bTy)))], 15377 qTy))), 15378 Close 15379 (Var("v", 15380 PTy(F32, 15381 PTy(F32, 15382 PTy(F32, 15383 bTy)))), 15384 MU(TP[Var("rn", 15385 F32), 15386 Var("v", 15387 PTy(F32, 15388 PTy(F32, 15389 PTy(F32, 15390 bTy))))], 15391 qTy))), 15392 Close 15393 (Var("v", 15394 PTy(F32, 15395 PTy(F32, 15396 PTy(F32, 15397 PTy(F32, 15398 bTy))))), 15399 MU(Apply 15400 (LX(ATy(PTy(F32, 15401 PTy(F32, 15402 PTy(F32, 15403 PTy(F32, 15404 bTy)))), 15405 bTy)), 15406 Var("v", 15407 PTy(F32, 15408 PTy(F32, 15409 PTy(F32, 15410 PTy(F32, 15411 bTy)))))), 15412 qTy))), 15413 Close 15414 (bVar"v0", 15415 MU(TP[Var("v", 15416 CTy"PSR"), 15417 bVar"v0"], 15418 qTy))))), 15419 Close 15420 (Var("v", 15421 PTy(CTy"PSR", 15422 bTy)), 15423 MU(Rupd 15424 ("V", 15425 Var("v", 15426 PTy(CTy"PSR", 15427 bTy))), 15428 qTy))), 15429 Close 15430 (Var("v", 15431 CTy"PSR"), 15432 MW(Close 15433 (qVar"s", 15434 Rupd 15435 ("CPSR", 15436 TP[qVar"s", 15437 Var("v", 15438 CTy"PSR")]))))))))))), 15439 MU(LU, 15440 qTy)))))))))))))), 15441 MU(LU,qTy)), 15442 Close 15443 (AVar uTy, 15444 Call 15445 ("IncPC", 15446 ATy(qTy,PTy(uTy,qTy)), 15447 LU))))))))))))))))) 15448; 15449val dfn'MultiplyAccumulateAccumulate_def = Def 15450 ("dfn'MultiplyAccumulateAccumulate", 15451 TP[Var("dhi",F4),Var("dlo",F4),Var("n",F4),Var("m",F4)], 15452 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 15453 Close 15454 (Var("v",F32), 15455 MB(MB(MB(MB(MU(Mop(Cast F64,Var("v",F32)),qTy), 15456 Close 15457 (Var("v",F64), 15458 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 15459 Close 15460 (Var("v0",F32), 15461 MB(MU(Mop(Cast F64,Var("v0",F32)),qTy), 15462 Close 15463 (Var("v0",F64), 15464 MU(Bop(Mul,Var("v",F64),Var("v0",F64)), 15465 qTy))))))), 15466 Close 15467 (Var("v",F64), 15468 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("dhi",F4)), 15469 Close 15470 (Var("v0",F32), 15471 MB(MU(Mop(Cast F64,Var("v0",F32)),qTy), 15472 Close 15473 (Var("v0",F64), 15474 MU(Bop(Add,Var("v",F64),Var("v0",F64)), 15475 qTy))))))), 15476 Close 15477 (Var("v",F64), 15478 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("dlo",F4)), 15479 Close 15480 (Var("v0",F32), 15481 MB(MU(Mop(Cast F64,Var("v0",F32)),qTy), 15482 Close 15483 (Var("v0",F64), 15484 MU(Bop(Add,Var("v",F64),Var("v0",F64)),qTy))))))), 15485 Close 15486 (Var("result",F64), 15487 MB(Call 15488 ("write'R",ATy(qTy,PTy(uTy,qTy)), 15489 TP[EX(Var("result",F64),LN 63,LN 32,F32), 15490 Var("dhi",F4)]), 15491 Close 15492 (AVar uTy, 15493 MB(Call 15494 ("write'R",ATy(qTy,PTy(uTy,qTy)), 15495 TP[EX(Var("result",F64),LN 31,LN 0,F32), 15496 Var("dlo",F4)]), 15497 Close 15498 (AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))))))))) 15499; 15500val dfn'MultiplySubtract_def = Def 15501 ("dfn'MultiplySubtract", 15502 TP[Var("d",F4),Var("n",F4),Var("m",F4),Var("a",F4)], 15503 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("a",F4)), 15504 Close 15505 (Var("v",F32), 15506 MB(MB(MB(MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 15507 Close 15508 (Var("v0",F32), 15509 MB(MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 15510 Close 15511 (Var("v1",F32), 15512 MU(Bop(Mul,Var("v0",F32),Var("v1",F32)), 15513 qTy))), 15514 Close 15515 (Var("v0",F32), 15516 MU(Bop(Sub,Var("v",F32),Var("v0",F32)),qTy))))), 15517 Close(Var("v",F32),MU(TP[Var("v",F32),Var("d",F4)],qTy))), 15518 Close 15519 (Var("v",PTy(F32,F4)), 15520 Call 15521 ("write'R",ATy(qTy,PTy(uTy,qTy)),Var("v",PTy(F32,F4))))), 15522 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))))) 15523; 15524val dfn'Signed16Multiply32Accumulate_def = Def 15525 ("dfn'Signed16Multiply32Accumulate", 15526 TP[bVar"m_high",bVar"n_high",Var("d",F4),Var("n",F4),Var("m",F4), 15527 Var("a",F4)], 15528 MB(ITE(bVar"n_high", 15529 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 15530 Close(Var("v",F32),MU(EX(Var("v",F32),LN 31,LN 16,F16),qTy))), 15531 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 15532 Close(Var("v",F32),MU(EX(Var("v",F32),LN 15,LN 0,F16),qTy)))), 15533 Close 15534 (Var("operand1",F16), 15535 MB(ITE(bVar"m_high", 15536 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 15537 Close 15538 (Var("v",F32), 15539 MU(EX(Var("v",F32),LN 31,LN 16,F16),qTy))), 15540 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 15541 Close 15542 (Var("v",F32),MU(EX(Var("v",F32),LN 15,LN 0,F16),qTy)))), 15543 Close 15544 (Var("operand2",F16), 15545 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("a",F4)), 15546 Close 15547 (Var("v",F32), 15548 MB(MB(MU(Mop(Cast iTy,Var("v",F32)),qTy), 15549 Close 15550 (iVar"v", 15551 MU(Bop(Add, 15552 Bop(Mul, 15553 Mop(Cast iTy,Var("operand1",F16)), 15554 Mop(Cast iTy,Var("operand2",F16))), 15555 iVar"v"),qTy))), 15556 Close 15557 (iVar"result", 15558 Let(Var("result32",F32), 15559 Mop(Cast F32,iVar"result"), 15560 MB(Call 15561 ("write'R",ATy(qTy,PTy(uTy,qTy)), 15562 TP[Var("result32",F32),Var("d",F4)]), 15563 Close 15564 (AVar uTy, 15565 MB(ITE(Mop(Not, 15566 EQ(iVar"result", 15567 Mop(Cast iTy, 15568 Var("result32",F32)))), 15569 MB(MR(Close 15570 (qVar"s", 15571 Dest 15572 ("CPSR",CTy"PSR", 15573 qVar"s"))), 15574 Close 15575 (Var("v",CTy"PSR"), 15576 MB(MB(MU(TP[Var("v", 15577 CTy"PSR"), 15578 LT],qTy), 15579 Close 15580 (Var("v", 15581 PTy(CTy"PSR", 15582 bTy)), 15583 MU(Rupd 15584 ("Q", 15585 Var("v", 15586 PTy(CTy"PSR", 15587 bTy))), 15588 qTy))), 15589 Close 15590 (Var("v",CTy"PSR"), 15591 MW(Close 15592 (qVar"s", 15593 Rupd 15594 ("CPSR", 15595 TP[qVar"s", 15596 Var("v", 15597 CTy"PSR")]))))))), 15598 MU(LU,qTy)), 15599 Close 15600 (AVar uTy, 15601 Call 15602 ("IncPC", 15603 ATy(qTy,PTy(uTy,qTy)),LU))))))))))))))) 15604; 15605val dfn'Signed16Multiply32Result_def = Def 15606 ("dfn'Signed16Multiply32Result", 15607 TP[bVar"m_high",bVar"n_high",Var("d",F4),Var("n",F4),Var("m",F4)], 15608 MB(ITE(bVar"n_high", 15609 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 15610 Close(Var("v",F32),MU(EX(Var("v",F32),LN 31,LN 16,F16),qTy))), 15611 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 15612 Close(Var("v",F32),MU(EX(Var("v",F32),LN 15,LN 0,F16),qTy)))), 15613 Close 15614 (Var("operand1",F16), 15615 MB(ITE(bVar"m_high", 15616 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 15617 Close 15618 (Var("v",F32), 15619 MU(EX(Var("v",F32),LN 31,LN 16,F16),qTy))), 15620 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 15621 Close 15622 (Var("v",F32),MU(EX(Var("v",F32),LN 15,LN 0,F16),qTy)))), 15623 Close 15624 (Var("operand2",F16), 15625 MB(Call 15626 ("write'R",ATy(qTy,PTy(uTy,qTy)), 15627 TP[Mop(Cast F32, 15628 Bop(Mul,Mop(Cast iTy,Var("operand1",F16)), 15629 Mop(Cast iTy,Var("operand2",F16)))), 15630 Var("d",F4)]), 15631 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))))))) 15632; 15633val dfn'Signed16x32Multiply32Accumulate_def = Def 15634 ("dfn'Signed16x32Multiply32Accumulate", 15635 TP[bVar"m_high",Var("d",F4),Var("n",F4),Var("m",F4),Var("a",F4)], 15636 MB(ITE(bVar"m_high", 15637 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 15638 Close(Var("v",F32),MU(EX(Var("v",F32),LN 31,LN 16,F16),qTy))), 15639 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 15640 Close(Var("v",F32),MU(EX(Var("v",F32),LN 15,LN 0,F16),qTy)))), 15641 Close 15642 (Var("operand2",F16), 15643 Let(iVar"sh16",Bop(Exp,LI 2,LN 16), 15644 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 15645 Close 15646 (Var("v",F32), 15647 MB(MB(MB(MB(MU(Mop(Cast iTy,Var("v",F32)),qTy), 15648 Close 15649 (iVar"v", 15650 MU(Bop(Mul,iVar"v", 15651 Mop(Cast iTy,Var("operand2",F16))), 15652 qTy))), 15653 Close 15654 (iVar"v", 15655 MB(Call 15656 ("R",ATy(qTy,PTy(F32,qTy)),Var("a",F4)), 15657 Close 15658 (Var("v0",F32), 15659 MB(MB(MU(Mop(Cast iTy,Var("v0",F32)), 15660 qTy), 15661 Close 15662 (iVar"v", 15663 MU(Bop(Mul,iVar"v", 15664 iVar"sh16"),qTy))), 15665 Close 15666 (iVar"v0", 15667 MU(Bop(Add,iVar"v",iVar"v0"), 15668 qTy))))))), 15669 Close 15670 (iVar"v",MU(Bop(Div,iVar"v",iVar"sh16"),qTy))), 15671 Close 15672 (iVar"result", 15673 Let(Var("result32",F32), 15674 Mop(Cast F32,iVar"result"), 15675 MB(Call 15676 ("write'R",ATy(qTy,PTy(uTy,qTy)), 15677 TP[Var("result32",F32),Var("d",F4)]), 15678 Close 15679 (AVar uTy, 15680 MB(ITE(Mop(Not, 15681 EQ(iVar"result", 15682 Mop(Cast iTy, 15683 Var("result32",F32)))), 15684 MB(MR(Close 15685 (qVar"s", 15686 Dest 15687 ("CPSR",CTy"PSR", 15688 qVar"s"))), 15689 Close 15690 (Var("v",CTy"PSR"), 15691 MB(MB(MU(TP[Var("v", 15692 CTy"PSR"), 15693 LT],qTy), 15694 Close 15695 (Var("v", 15696 PTy(CTy"PSR", 15697 bTy)), 15698 MU(Rupd 15699 ("Q", 15700 Var("v", 15701 PTy(CTy"PSR", 15702 bTy))), 15703 qTy))), 15704 Close 15705 (Var("v",CTy"PSR"), 15706 MW(Close 15707 (qVar"s", 15708 Rupd 15709 ("CPSR", 15710 TP[qVar"s", 15711 Var("v", 15712 CTy"PSR")]))))))), 15713 MU(LU,qTy)), 15714 Close 15715 (AVar uTy, 15716 Call 15717 ("IncPC",ATy(qTy,PTy(uTy,qTy)), 15718 LU)))))))))))))) 15719; 15720val dfn'Signed16x32Multiply32Result_def = Def 15721 ("dfn'Signed16x32Multiply32Result", 15722 TP[bVar"m_high",Var("d",F4),Var("n",F4),Var("m",F4)], 15723 MB(ITE(bVar"m_high", 15724 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 15725 Close(Var("v",F32),MU(EX(Var("v",F32),LN 31,LN 16,F16),qTy))), 15726 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 15727 Close(Var("v",F32),MU(EX(Var("v",F32),LN 15,LN 0,F16),qTy)))), 15728 Close 15729 (Var("operand2",F16), 15730 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 15731 Close 15732 (Var("v",F32), 15733 MB(MB(MB(MU(Mop(Cast iTy,Var("v",F32)),qTy), 15734 Close 15735 (iVar"v", 15736 MU(Bop(Mul,iVar"v", 15737 Mop(Cast iTy,Var("operand2",F16))),qTy))), 15738 Close 15739 (iVar"v", 15740 MU(Bop(Div,iVar"v",Bop(Exp,LI 2,LN 16)),qTy))), 15741 Close 15742 (iVar"result", 15743 MB(Call 15744 ("write'R",ATy(qTy,PTy(uTy,qTy)), 15745 TP[Mop(Cast F32,iVar"result"),Var("d",F4)]), 15746 Close 15747 (AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))))))))) 15748; 15749val dfn'Signed16Multiply64Accumulate_def = Def 15750 ("dfn'Signed16Multiply64Accumulate", 15751 TP[bVar"m_high",bVar"n_high",Var("dhi",F4),Var("dlo",F4),Var("n",F4), 15752 Var("m",F4)], 15753 MB(ITE(bVar"n_high", 15754 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 15755 Close(Var("v",F32),MU(EX(Var("v",F32),LN 31,LN 16,F16),qTy))), 15756 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 15757 Close(Var("v",F32),MU(EX(Var("v",F32),LN 15,LN 0,F16),qTy)))), 15758 Close 15759 (Var("operand1",F16), 15760 MB(ITE(bVar"m_high", 15761 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 15762 Close 15763 (Var("v",F32), 15764 MU(EX(Var("v",F32),LN 31,LN 16,F16),qTy))), 15765 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 15766 Close 15767 (Var("v",F32),MU(EX(Var("v",F32),LN 15,LN 0,F16),qTy)))), 15768 Close 15769 (Var("operand2",F16), 15770 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("dhi",F4)), 15771 Close 15772 (Var("v",F32), 15773 MB(MB(MB(MB(Call 15774 ("R",ATy(qTy,PTy(F32,qTy)), 15775 Var("dlo",F4)), 15776 Close 15777 (Var("v0",F32), 15778 MU(CC[Var("v",F32),Var("v0",F32)],qTy))), 15779 Close 15780 (Var("v",F64), 15781 MU(Mop(Cast iTy,Var("v",F64)),qTy))), 15782 Close 15783 (iVar"v", 15784 MU(Bop(Add, 15785 Bop(Mul, 15786 Mop(Cast iTy,Var("operand1",F16)), 15787 Mop(Cast iTy,Var("operand2",F16))), 15788 iVar"v"),qTy))), 15789 Close 15790 (iVar"result", 15791 Let(Var("result64",F64), 15792 Mop(Cast F64,iVar"result"), 15793 MB(Call 15794 ("write'R",ATy(qTy,PTy(uTy,qTy)), 15795 TP[EX(Var("result64",F64),LN 63, 15796 LN 32,F32),Var("dhi",F4)]), 15797 Close 15798 (AVar uTy, 15799 MB(Call 15800 ("write'R", 15801 ATy(qTy,PTy(uTy,qTy)), 15802 TP[EX(Var("result64",F64), 15803 LN 31,LN 0,F32), 15804 Var("dlo",F4)]), 15805 Close 15806 (AVar uTy, 15807 Call 15808 ("IncPC", 15809 ATy(qTy,PTy(uTy,qTy)),LU))))))))))))))) 15810; 15811val dfn'SignedMultiplyDual_def = Def 15812 ("dfn'SignedMultiplyDual", 15813 TP[bVar"sub",bVar"m_swap",Var("d",F4),Var("n",F4),Var("m",F4), 15814 Var("a",F4)], 15815 MB(ITE(bVar"m_swap", 15816 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 15817 Close 15818 (Var("v",F32), 15819 MB(MU(TP[Var("v",F32),LN 16],qTy), 15820 Close 15821 (Var("v",PTy(F32,nTy)), 15822 Call 15823 ("ROR",ATy(qTy,PTy(F32,qTy)),Var("v",PTy(F32,nTy))))))), 15824 Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4))), 15825 Close 15826 (Var("operand2",F32), 15827 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 15828 Close 15829 (Var("v",F32), 15830 MB(MB(MB(MU(EX(Var("v",F32),LN 15,LN 0,F16),qTy), 15831 Close 15832 (Var("v",F16),MU(Mop(Cast iTy,Var("v",F16)),qTy))), 15833 Close 15834 (iVar"v", 15835 MU(Bop(Mul,iVar"v", 15836 Mop(Cast iTy, 15837 EX(Var("operand2",F32),LN 15,LN 0,F16))), 15838 qTy))), 15839 Close 15840 (iVar"product1", 15841 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 15842 Close 15843 (Var("v",F32), 15844 MB(MB(MB(MU(EX(Var("v",F32),LN 31,LN 16,F16), 15845 qTy), 15846 Close 15847 (Var("v",F16), 15848 MU(Mop(Cast iTy,Var("v",F16)),qTy))), 15849 Close 15850 (iVar"v", 15851 MU(Bop(Mul,iVar"v", 15852 Mop(Cast iTy, 15853 EX(Var("operand2",F32), 15854 LN 31,LN 16,F16))),qTy))), 15855 Close 15856 (iVar"product2", 15857 MB(ITE(EQ(Var("a",F4),LW(15,4)), 15858 MU(LW(0,32),qTy), 15859 Call 15860 ("R",ATy(qTy,PTy(F32,qTy)), 15861 Var("a",F4))), 15862 Close 15863 (Var("acc",F32), 15864 Let(iVar"result", 15865 ITE(bVar"sub", 15866 Bop(Add, 15867 Bop(Sub,iVar"product1", 15868 iVar"product2"), 15869 Mop(Cast iTy, 15870 Var("acc",F32))), 15871 Bop(Add, 15872 Bop(Add,iVar"product1", 15873 iVar"product2"), 15874 Mop(Cast iTy, 15875 Var("acc",F32)))), 15876 Let(Var("result32",F32), 15877 Mop(Cast F32,iVar"result"), 15878 MB(Call 15879 ("write'R", 15880 ATy(qTy,PTy(uTy,qTy)), 15881 TP[Var("result32",F32), 15882 Var("d",F4)]), 15883 Close 15884 (AVar uTy, 15885 MB(ITE(Mop(Not, 15886 EQ(iVar"result", 15887 Mop(Cast 15888 iTy, 15889 Var("result32", 15890 F32)))), 15891 MB(MR(Close 15892 (qVar"s", 15893 Dest 15894 ("CPSR", 15895 CTy"PSR", 15896 qVar"s"))), 15897 Close 15898 (Var("v", 15899 CTy"PSR"), 15900 MB(MB(MU(TP[Var("v", 15901 CTy"PSR"), 15902 LT], 15903 qTy), 15904 Close 15905 (Var("v", 15906 PTy(CTy"PSR", 15907 bTy)), 15908 MU(Rupd 15909 ("Q", 15910 Var("v", 15911 PTy(CTy"PSR", 15912 bTy))), 15913 qTy))), 15914 Close 15915 (Var("v", 15916 CTy"PSR"), 15917 MW(Close 15918 (qVar"s", 15919 Rupd 15920 ("CPSR", 15921 TP[qVar"s", 15922 Var("v", 15923 CTy"PSR")]))))))), 15924 MU(LU,qTy)), 15925 Close 15926 (AVar uTy, 15927 Call 15928 ("IncPC", 15929 ATy(qTy, 15930 PTy(uTy, 15931 qTy)), 15932 LU)))))))))))))))))))) 15933; 15934val dfn'SignedMultiplyLongDual_def = Def 15935 ("dfn'SignedMultiplyLongDual", 15936 TP[bVar"sub",bVar"m_swap",Var("dhi",F4),Var("dlo",F4),Var("n",F4), 15937 Var("m",F4)], 15938 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 15939 Close 15940 (Var("Rn",F32), 15941 MB(ITE(bVar"m_swap", 15942 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 15943 Close 15944 (Var("v",F32), 15945 MB(MU(TP[Var("v",F32),LN 16],qTy), 15946 Close 15947 (Var("v",PTy(F32,nTy)), 15948 Call 15949 ("ROR",ATy(qTy,PTy(F32,qTy)), 15950 Var("v",PTy(F32,nTy))))))), 15951 Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4))), 15952 Close 15953 (Var("operand2",F32), 15954 Let(iVar"product1", 15955 Bop(Mul,Mop(Cast iTy,EX(Var("Rn",F32),LN 15,LN 0,F16)), 15956 Mop(Cast iTy,EX(Var("operand2",F32),LN 15,LN 0,F16))), 15957 Let(iVar"product2", 15958 Bop(Mul, 15959 Mop(Cast iTy,EX(Var("Rn",F32),LN 31,LN 16,F16)), 15960 Mop(Cast iTy, 15961 EX(Var("operand2",F32),LN 31,LN 16,F16))), 15962 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("dhi",F4)), 15963 Close 15964 (Var("v",F32), 15965 MB(MB(Call 15966 ("R",ATy(qTy,PTy(F32,qTy)), 15967 Var("dlo",F4)), 15968 Close 15969 (Var("v0",F32), 15970 MU(CC[Var("v",F32),Var("v0",F32)], 15971 qTy))), 15972 Close 15973 (Var("acc",F64), 15974 Let(Var("result64",F64), 15975 Mop(Cast F64, 15976 ITE(bVar"sub", 15977 Bop(Add, 15978 Bop(Sub,iVar"product1", 15979 iVar"product2"), 15980 Mop(Cast iTy, 15981 Var("acc",F64))), 15982 Bop(Add, 15983 Bop(Add,iVar"product1", 15984 iVar"product2"), 15985 Mop(Cast iTy, 15986 Var("acc",F64))))), 15987 MB(Call 15988 ("write'R", 15989 ATy(qTy,PTy(uTy,qTy)), 15990 TP[EX(Var("result64",F64), 15991 LN 63,LN 32,F32), 15992 Var("dhi",F4)]), 15993 Close 15994 (AVar uTy, 15995 MB(Call 15996 ("write'R", 15997 ATy(qTy,PTy(uTy,qTy)), 15998 TP[EX(Var("result64", 15999 F64),LN 31, 16000 LN 0,F32), 16001 Var("dlo",F4)]), 16002 Close 16003 (AVar uTy, 16004 Call 16005 ("IncPC", 16006 ATy(qTy,PTy(uTy,qTy)), 16007 LU))))))))))))))))) 16008; 16009val dfn'SignedMostSignificantMultiply_def = Def 16010 ("dfn'SignedMostSignificantMultiply", 16011 TP[bVar"round",Var("d",F4),Var("n",F4),Var("m",F4),Var("a",F4)], 16012 MB(ITE(EQ(Var("a",F4),LW(15,4)),MU(LW(0,32),qTy), 16013 Call("R",ATy(qTy,PTy(F32,qTy)),Var("a",F4))), 16014 Close 16015 (Var("acc",F32), 16016 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 16017 Close 16018 (Var("v",F32), 16019 MB(MB(MB(MU(Mop(Cast iTy,Var("v",F32)),qTy), 16020 Close 16021 (iVar"v", 16022 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 16023 Close 16024 (Var("v0",F32), 16025 MB(MU(Mop(Cast iTy,Var("v0",F32)),qTy), 16026 Close 16027 (iVar"v0", 16028 MU(Bop(Mul,iVar"v",iVar"v0"),qTy))))))), 16029 Close 16030 (iVar"v", 16031 MU(Bop(Add, 16032 Mop(Cast iTy, 16033 Bop(Lsl,Mop(Cast F64,Var("acc",F32)), 16034 LN 32)),iVar"v"),qTy))), 16035 Close 16036 (iVar"result", 16037 MB(Call 16038 ("write'R",ATy(qTy,PTy(uTy,qTy)), 16039 TP[EX(Mop(Cast F64, 16040 ITE(bVar"round", 16041 Bop(Add,iVar"result", 16042 LI 2147483648),iVar"result")), 16043 LN 63,LN 32,F32),Var("d",F4)]), 16044 Close 16045 (AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))))))))) 16046; 16047val dfn'SignedMostSignificantMultiplySubtract_def = Def 16048 ("dfn'SignedMostSignificantMultiplySubtract", 16049 TP[bVar"round",Var("d",F4),Var("n",F4),Var("m",F4),Var("a",F4)], 16050 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("a",F4)), 16051 Close 16052 (Var("v",F32), 16053 MB(MB(MB(MB(MU(Mop(Cast F64,Var("v",F32)),qTy), 16054 Close 16055 (Var("v",F64),MU(Bop(Lsl,Var("v",F64),LN 32),qTy))), 16056 Close(Var("v",F64),MU(Mop(Cast iTy,Var("v",F64)),qTy))), 16057 Close 16058 (iVar"v", 16059 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 16060 Close 16061 (Var("v0",F32), 16062 MB(MB(MU(Mop(Cast iTy,Var("v0",F32)),qTy), 16063 Close 16064 (iVar"v", 16065 MB(Call 16066 ("R",ATy(qTy,PTy(F32,qTy)), 16067 Var("m",F4)), 16068 Close 16069 (Var("v0",F32), 16070 MB(MU(Mop(Cast iTy,Var("v0",F32)), 16071 qTy), 16072 Close 16073 (iVar"v0", 16074 MU(Bop(Mul,iVar"v",iVar"v0"), 16075 qTy))))))), 16076 Close 16077 (iVar"v0",MU(Bop(Sub,iVar"v",iVar"v0"),qTy))))))), 16078 Close 16079 (iVar"result", 16080 MB(Call 16081 ("write'R",ATy(qTy,PTy(uTy,qTy)), 16082 TP[EX(Mop(Cast F64, 16083 ITE(bVar"round", 16084 Bop(Add,iVar"result",LI 2147483648), 16085 iVar"result")),LN 63,LN 32,F32), 16086 Var("d",F4)]), 16087 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))))))) 16088; 16089val SignedParallelAddSub16_def = Def 16090 ("SignedParallelAddSub16",TP[Var("op",FTy 2),Var("n",F4),Var("m",F4)], 16091 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 16092 Close 16093 (Var("Rn",F32), 16094 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 16095 Close 16096 (Var("Rm",F32), 16097 MU(CS(Var("op",FTy 2), 16098 [(LW(0,2), 16099 TP[Bop(Add, 16100 Mop(Cast iTy, 16101 EX(Var("Rn",F32),LN 15,LN 0,F16)), 16102 Mop(Cast iTy, 16103 EX(Var("Rm",F32),LN 15,LN 0,F16))), 16104 Bop(Add, 16105 Mop(Cast iTy, 16106 EX(Var("Rn",F32),LN 31,LN 16,F16)), 16107 Mop(Cast iTy, 16108 EX(Var("Rm",F32),LN 31,LN 16,F16)))]), 16109 (LW(1,2), 16110 TP[Bop(Sub, 16111 Mop(Cast iTy, 16112 EX(Var("Rn",F32),LN 15,LN 0,F16)), 16113 Mop(Cast iTy, 16114 EX(Var("Rm",F32),LN 31,LN 16,F16))), 16115 Bop(Add, 16116 Mop(Cast iTy, 16117 EX(Var("Rn",F32),LN 31,LN 16,F16)), 16118 Mop(Cast iTy, 16119 EX(Var("Rm",F32),LN 15,LN 0,F16)))]), 16120 (LW(2,2), 16121 TP[Bop(Add, 16122 Mop(Cast iTy, 16123 EX(Var("Rn",F32),LN 15,LN 0,F16)), 16124 Mop(Cast iTy, 16125 EX(Var("Rm",F32),LN 31,LN 16,F16))), 16126 Bop(Sub, 16127 Mop(Cast iTy, 16128 EX(Var("Rn",F32),LN 31,LN 16,F16)), 16129 Mop(Cast iTy, 16130 EX(Var("Rm",F32),LN 15,LN 0,F16)))]), 16131 (LW(3,2), 16132 TP[Bop(Sub, 16133 Mop(Cast iTy, 16134 EX(Var("Rn",F32),LN 15,LN 0,F16)), 16135 Mop(Cast iTy, 16136 EX(Var("Rm",F32),LN 15,LN 0,F16))), 16137 Bop(Sub, 16138 Mop(Cast iTy, 16139 EX(Var("Rn",F32),LN 31,LN 16,F16)), 16140 Mop(Cast iTy, 16141 EX(Var("Rm",F32),LN 31,LN 16,F16)))])]), 16142 qTy)))))) 16143; 16144val dfn'SignedAddSub16_def = Def 16145 ("dfn'SignedAddSub16", 16146 TP[Var("op",FTy 2),Var("d",F4),Var("n",F4),Var("m",F4)], 16147 MB(Call 16148 ("SignedParallelAddSub16",ATy(qTy,PTy(PTy(iTy,iTy),qTy)), 16149 TP[Var("op",FTy 2),Var("n",F4),Var("m",F4)]), 16150 Close 16151 (Var("x",PTy(iTy,iTy)), 16152 CS(Var("x",PTy(iTy,iTy)), 16153 [(TP[iVar"res1",iVar"res2"], 16154 MB(Call 16155 ("write'R",ATy(qTy,PTy(uTy,qTy)), 16156 TP[CC[Mop(Cast F16,iVar"res2"), 16157 Mop(Cast F16,iVar"res1")],Var("d",F4)]), 16158 Close 16159 (AVar uTy, 16160 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 16161 Close 16162 (Var("v",CTy"PSR"), 16163 MB(MB(MU(Dest("GE",F4,Var("v",CTy"PSR")),qTy), 16164 Close 16165 (Var("w",F4), 16166 MB(MR(Close 16167 (qVar"s", 16168 Dest("CPSR",CTy"PSR",qVar"s"))), 16169 Close 16170 (Var("v",CTy"PSR"), 16171 MB(MB(MU(TP[Var("v",CTy"PSR"), 16172 BFI(LN 1,LN 0, 16173 ITE(Bop(Ge, 16174 iVar"res1", 16175 LI 0), 16176 LW(3,2), 16177 LW(0,2)), 16178 Var("w",F4))],qTy), 16179 Close 16180 (Var("v",PTy(CTy"PSR",F4)), 16181 MU(Rupd 16182 ("GE", 16183 Var("v", 16184 PTy(CTy"PSR", 16185 F4))),qTy))), 16186 Close 16187 (Var("v",CTy"PSR"), 16188 MW(Close 16189 (qVar"s", 16190 Rupd 16191 ("CPSR", 16192 TP[qVar"s", 16193 Var("v", 16194 CTy"PSR")]))))))))), 16195 Close 16196 (AVar uTy, 16197 MB(MR(Close 16198 (qVar"s", 16199 Dest("CPSR",CTy"PSR",qVar"s"))), 16200 Close 16201 (Var("v",CTy"PSR"), 16202 MB(MB(MU(Dest 16203 ("GE",F4, 16204 Var("v",CTy"PSR")),qTy), 16205 Close 16206 (Var("w",F4), 16207 MB(MR(Close 16208 (qVar"s", 16209 Dest 16210 ("CPSR", 16211 CTy"PSR", 16212 qVar"s"))), 16213 Close 16214 (Var("v",CTy"PSR"), 16215 MB(MB(MU(TP[Var("v", 16216 CTy"PSR"), 16217 BFI(LN 3, 16218 LN 2, 16219 ITE(Bop(Ge, 16220 iVar"res2", 16221 LI 16222 0), 16223 LW(3, 16224 2), 16225 LW(0, 16226 2)), 16227 Var("w", 16228 F4))], 16229 qTy), 16230 Close 16231 (Var("v", 16232 PTy(CTy"PSR", 16233 F4)), 16234 MU(Rupd 16235 ("GE", 16236 Var("v", 16237 PTy(CTy"PSR", 16238 F4))), 16239 qTy))), 16240 Close 16241 (Var("v", 16242 CTy"PSR"), 16243 MW(Close 16244 (qVar"s", 16245 Rupd 16246 ("CPSR", 16247 TP[qVar"s", 16248 Var("v", 16249 CTy"PSR")]))))))))), 16250 Close 16251 (AVar uTy, 16252 Call 16253 ("IncPC", 16254 ATy(qTy,PTy(uTy,qTy)),LU))))))))))))])))) 16255; 16256val dfn'SignedSaturatingAddSub16_def = Def 16257 ("dfn'SignedSaturatingAddSub16", 16258 TP[Var("op",FTy 2),Var("d",F4),Var("n",F4),Var("m",F4)], 16259 MB(Call 16260 ("SignedParallelAddSub16",ATy(qTy,PTy(PTy(iTy,iTy),qTy)), 16261 TP[Var("op",FTy 2),Var("n",F4),Var("m",F4)]), 16262 Close 16263 (Var("x",PTy(iTy,iTy)), 16264 CS(Var("x",PTy(iTy,iTy)), 16265 [(TP[iVar"res1",iVar"res2"], 16266 MB(Call 16267 ("SignedSat",ATy(qTy,PTy(F16,qTy)),TP[iVar"res2",LN 16]), 16268 Close 16269 (Var("v",F16), 16270 MB(MB(MB(MB(Call 16271 ("SignedSat",ATy(qTy,PTy(F16,qTy)), 16272 TP[iVar"res1",LN 16]), 16273 Close 16274 (Var("v0",F16), 16275 MU(CC[Var("v",F16),Var("v0",F16)],qTy))), 16276 Close 16277 (Var("v",F32), 16278 MU(TP[Var("v",F32),Var("d",F4)],qTy))), 16279 Close 16280 (Var("v",PTy(F32,F4)), 16281 Call 16282 ("write'R",ATy(qTy,PTy(uTy,qTy)), 16283 Var("v",PTy(F32,F4))))), 16284 Close 16285 (AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU))))))])))) 16286; 16287val dfn'SignedHalvingAddSub16_def = Def 16288 ("dfn'SignedHalvingAddSub16", 16289 TP[Var("op",FTy 2),Var("d",F4),Var("n",F4),Var("m",F4)], 16290 MB(Call 16291 ("SignedParallelAddSub16",ATy(qTy,PTy(PTy(iTy,iTy),qTy)), 16292 TP[Var("op",FTy 2),Var("n",F4),Var("m",F4)]), 16293 Close 16294 (Var("x",PTy(iTy,iTy)), 16295 CS(Var("x",PTy(iTy,iTy)), 16296 [(TP[iVar"res1",iVar"res2"], 16297 MB(Call 16298 ("write'R",ATy(qTy,PTy(uTy,qTy)), 16299 TP[CC[Mop(Cast F16,Bop(Div,iVar"res2",LI 2)), 16300 Mop(Cast F16,Bop(Div,iVar"res1",LI 2))], 16301 Var("d",F4)]), 16302 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU))))])))) 16303; 16304val SignedParallelAddSub8_def = Def 16305 ("SignedParallelAddSub8",TP[bVar"sub",Var("n",F4),Var("m",F4)], 16306 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 16307 Close 16308 (Var("Rn",F32), 16309 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 16310 Close 16311 (Var("Rm",F32), 16312 MU(ITE(bVar"sub", 16313 TP[Bop(Sub, 16314 Mop(Cast iTy,EX(Var("Rn",F32),LN 7,LN 0,F8)), 16315 Mop(Cast iTy,EX(Var("Rm",F32),LN 7,LN 0,F8))), 16316 Bop(Sub, 16317 Mop(Cast iTy,EX(Var("Rn",F32),LN 15,LN 8,F8)), 16318 Mop(Cast iTy,EX(Var("Rm",F32),LN 15,LN 8,F8))), 16319 Bop(Sub, 16320 Mop(Cast iTy,EX(Var("Rn",F32),LN 23,LN 16,F8)), 16321 Mop(Cast iTy,EX(Var("Rm",F32),LN 23,LN 16,F8))), 16322 Bop(Sub, 16323 Mop(Cast iTy,EX(Var("Rn",F32),LN 31,LN 24,F8)), 16324 Mop(Cast iTy,EX(Var("Rm",F32),LN 31,LN 24,F8)))], 16325 TP[Bop(Add, 16326 Mop(Cast iTy,EX(Var("Rn",F32),LN 7,LN 0,F8)), 16327 Mop(Cast iTy,EX(Var("Rm",F32),LN 7,LN 0,F8))), 16328 Bop(Add, 16329 Mop(Cast iTy,EX(Var("Rn",F32),LN 15,LN 8,F8)), 16330 Mop(Cast iTy,EX(Var("Rm",F32),LN 15,LN 8,F8))), 16331 Bop(Add, 16332 Mop(Cast iTy,EX(Var("Rn",F32),LN 23,LN 16,F8)), 16333 Mop(Cast iTy,EX(Var("Rm",F32),LN 23,LN 16,F8))), 16334 Bop(Add, 16335 Mop(Cast iTy,EX(Var("Rn",F32),LN 31,LN 24,F8)), 16336 Mop(Cast iTy,EX(Var("Rm",F32),LN 31,LN 24,F8)))]), 16337 qTy)))))) 16338; 16339val dfn'SignedAddSub8_def = Def 16340 ("dfn'SignedAddSub8",TP[bVar"sub",Var("d",F4),Var("n",F4),Var("m",F4)], 16341 MB(Call 16342 ("SignedParallelAddSub8", 16343 ATy(qTy,PTy(PTy(iTy,PTy(iTy,PTy(iTy,iTy))),qTy)), 16344 TP[bVar"sub",Var("n",F4),Var("m",F4)]), 16345 Close 16346 (Var("x",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))), 16347 CS(Var("x",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))), 16348 [(TP[iVar"res1",iVar"res2",iVar"res3",iVar"res4"], 16349 MB(Call 16350 ("write'R",ATy(qTy,PTy(uTy,qTy)), 16351 TP[CC[Mop(Cast F8,iVar"res4"),Mop(Cast F8,iVar"res3"), 16352 Mop(Cast F8,iVar"res2"),Mop(Cast F8,iVar"res1")], 16353 Var("d",F4)]), 16354 Close 16355 (AVar uTy, 16356 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 16357 Close 16358 (Var("v",CTy"PSR"), 16359 MB(MB(MU(Dest("GE",F4,Var("v",CTy"PSR")),qTy), 16360 Close 16361 (Var("w",F4), 16362 MB(MR(Close 16363 (qVar"s", 16364 Dest("CPSR",CTy"PSR",qVar"s"))), 16365 Close 16366 (Var("v",CTy"PSR"), 16367 MB(MB(MU(TP[Var("v",CTy"PSR"), 16368 BFI(LN 0,LN 0, 16369 Mop(Cast F1, 16370 Bop(Ge, 16371 iVar"res1", 16372 LI 0)), 16373 Var("w",F4))],qTy), 16374 Close 16375 (Var("v",PTy(CTy"PSR",F4)), 16376 MU(Rupd 16377 ("GE", 16378 Var("v", 16379 PTy(CTy"PSR", 16380 F4))),qTy))), 16381 Close 16382 (Var("v",CTy"PSR"), 16383 MW(Close 16384 (qVar"s", 16385 Rupd 16386 ("CPSR", 16387 TP[qVar"s", 16388 Var("v", 16389 CTy"PSR")]))))))))), 16390 Close 16391 (AVar uTy, 16392 MB(MR(Close 16393 (qVar"s", 16394 Dest("CPSR",CTy"PSR",qVar"s"))), 16395 Close 16396 (Var("v",CTy"PSR"), 16397 MB(MB(MU(Dest 16398 ("GE",F4, 16399 Var("v",CTy"PSR")),qTy), 16400 Close 16401 (Var("w",F4), 16402 MB(MR(Close 16403 (qVar"s", 16404 Dest 16405 ("CPSR", 16406 CTy"PSR", 16407 qVar"s"))), 16408 Close 16409 (Var("v",CTy"PSR"), 16410 MB(MB(MU(TP[Var("v", 16411 CTy"PSR"), 16412 BFI(LN 1, 16413 LN 1, 16414 Mop(Cast 16415 F1, 16416 Bop(Ge, 16417 iVar"res2", 16418 LI 16419 0)), 16420 Var("w", 16421 F4))], 16422 qTy), 16423 Close 16424 (Var("v", 16425 PTy(CTy"PSR", 16426 F4)), 16427 MU(Rupd 16428 ("GE", 16429 Var("v", 16430 PTy(CTy"PSR", 16431 F4))), 16432 qTy))), 16433 Close 16434 (Var("v", 16435 CTy"PSR"), 16436 MW(Close 16437 (qVar"s", 16438 Rupd 16439 ("CPSR", 16440 TP[qVar"s", 16441 Var("v", 16442 CTy"PSR")]))))))))), 16443 Close 16444 (AVar uTy, 16445 MB(MR(Close 16446 (qVar"s", 16447 Dest 16448 ("CPSR",CTy"PSR", 16449 qVar"s"))), 16450 Close 16451 (Var("v",CTy"PSR"), 16452 MB(MB(MU(Dest 16453 ("GE",F4, 16454 Var("v", 16455 CTy"PSR")), 16456 qTy), 16457 Close 16458 (Var("w",F4), 16459 MB(MR(Close 16460 (qVar"s", 16461 Dest 16462 ("CPSR", 16463 CTy"PSR", 16464 qVar"s"))), 16465 Close 16466 (Var("v", 16467 CTy"PSR"), 16468 MB(MB(MU(TP[Var("v", 16469 CTy"PSR"), 16470 BFI(LN 16471 2, 16472 LN 16473 2, 16474 Mop(Cast 16475 F1, 16476 Bop(Ge, 16477 iVar"res3", 16478 LI 16479 0)), 16480 Var("w", 16481 F4))], 16482 qTy), 16483 Close 16484 (Var("v", 16485 PTy(CTy"PSR", 16486 F4)), 16487 MU(Rupd 16488 ("GE", 16489 Var("v", 16490 PTy(CTy"PSR", 16491 F4))), 16492 qTy))), 16493 Close 16494 (Var("v", 16495 CTy"PSR"), 16496 MW(Close 16497 (qVar"s", 16498 Rupd 16499 ("CPSR", 16500 TP[qVar"s", 16501 Var("v", 16502 CTy"PSR")]))))))))), 16503 Close 16504 (AVar uTy, 16505 MB(MR(Close 16506 (qVar"s", 16507 Dest 16508 ("CPSR", 16509 CTy"PSR", 16510 qVar"s"))), 16511 Close 16512 (Var("v", 16513 CTy"PSR"), 16514 MB(MB(MU(Dest 16515 ("GE", 16516 F4, 16517 Var("v", 16518 CTy"PSR")), 16519 qTy), 16520 Close 16521 (Var("w", 16522 F4), 16523 MB(MR(Close 16524 (qVar"s", 16525 Dest 16526 ("CPSR", 16527 CTy"PSR", 16528 qVar"s"))), 16529 Close 16530 (Var("v", 16531 CTy"PSR"), 16532 MB(MB(MU(TP[Var("v", 16533 CTy"PSR"), 16534 BFI(LN 16535 3, 16536 LN 16537 3, 16538 Mop(Cast 16539 F1, 16540 Bop(Ge, 16541 iVar"res4", 16542 LI 16543 0)), 16544 Var("w", 16545 F4))], 16546 qTy), 16547 Close 16548 (Var("v", 16549 PTy(CTy"PSR", 16550 F4)), 16551 MU(Rupd 16552 ("GE", 16553 Var("v", 16554 PTy(CTy"PSR", 16555 F4))), 16556 qTy))), 16557 Close 16558 (Var("v", 16559 CTy"PSR"), 16560 MW(Close 16561 (qVar"s", 16562 Rupd 16563 ("CPSR", 16564 TP[qVar"s", 16565 Var("v", 16566 CTy"PSR")]))))))))), 16567 Close 16568 (AVar 16569 uTy, 16570 Call 16571 ("IncPC", 16572 ATy(qTy, 16573 PTy(uTy, 16574 qTy)), 16575 LU))))))))))))))))))))])))) 16576; 16577val dfn'SignedSaturatingAddSub8_def = Def 16578 ("dfn'SignedSaturatingAddSub8", 16579 TP[bVar"sub",Var("d",F4),Var("n",F4),Var("m",F4)], 16580 MB(Call 16581 ("SignedParallelAddSub8", 16582 ATy(qTy,PTy(PTy(iTy,PTy(iTy,PTy(iTy,iTy))),qTy)), 16583 TP[bVar"sub",Var("n",F4),Var("m",F4)]), 16584 Close 16585 (Var("x",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))), 16586 CS(Var("x",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))), 16587 [(TP[iVar"res1",iVar"res2",iVar"res3",iVar"res4"], 16588 MB(Call 16589 ("SignedSat",ATy(qTy,PTy(F8,qTy)),TP[iVar"res4",LN 8]), 16590 Close 16591 (Var("v",F8), 16592 MB(MB(MB(MB(Call 16593 ("SignedSat",ATy(qTy,PTy(F8,qTy)), 16594 TP[iVar"res3",LN 8]), 16595 Close 16596 (Var("v0",F8), 16597 MB(MB(Call 16598 ("SignedSat", 16599 ATy(qTy,PTy(F8,qTy)), 16600 TP[iVar"res2",LN 8]), 16601 Close 16602 (Var("v1",F8), 16603 MB(MB(Call 16604 ("SignedSat", 16605 ATy(qTy,PTy(F8,qTy)), 16606 TP[iVar"res1",LN 8]), 16607 Close 16608 (Var("v2",F8), 16609 MU(CC[Var("v1",F8), 16610 Var("v2",F8)], 16611 qTy))), 16612 Close 16613 (Var("v1",F16), 16614 MU(CC[Var("v0",F8), 16615 Var("v1",F16)],qTy))))), 16616 Close 16617 (Var("v0",FTy 24), 16618 MU(CC[Var("v",F8), 16619 Var("v0",FTy 24)],qTy))))), 16620 Close 16621 (Var("v",F32), 16622 MU(TP[Var("v",F32),Var("d",F4)],qTy))), 16623 Close 16624 (Var("v",PTy(F32,F4)), 16625 Call 16626 ("write'R",ATy(qTy,PTy(uTy,qTy)), 16627 Var("v",PTy(F32,F4))))), 16628 Close 16629 (AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU))))))])))) 16630; 16631val dfn'SignedHalvingAddSub8_def = Def 16632 ("dfn'SignedHalvingAddSub8", 16633 TP[bVar"sub",Var("d",F4),Var("n",F4),Var("m",F4)], 16634 MB(Call 16635 ("SignedParallelAddSub8", 16636 ATy(qTy,PTy(PTy(iTy,PTy(iTy,PTy(iTy,iTy))),qTy)), 16637 TP[bVar"sub",Var("n",F4),Var("m",F4)]), 16638 Close 16639 (Var("x",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))), 16640 CS(Var("x",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))), 16641 [(TP[iVar"res1",iVar"res2",iVar"res3",iVar"res4"], 16642 MB(Call 16643 ("write'R",ATy(qTy,PTy(uTy,qTy)), 16644 TP[CC[Mop(Cast F8,Bop(Div,iVar"res4",LI 2)), 16645 Mop(Cast F8,Bop(Div,iVar"res3",LI 2)), 16646 Mop(Cast F8,Bop(Div,iVar"res2",LI 2)), 16647 Mop(Cast F8,Bop(Div,iVar"res1",LI 2))], 16648 Var("d",F4)]), 16649 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU))))])))) 16650; 16651val UnsignedParallelAddSub16_def = Def 16652 ("UnsignedParallelAddSub16",TP[Var("op",FTy 2),Var("n",F4),Var("m",F4)], 16653 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 16654 Close 16655 (Var("Rn",F32), 16656 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 16657 Close 16658 (Var("Rm",F32), 16659 MU(CS(Var("op",FTy 2), 16660 [(LW(0,2), 16661 TP[Bop(Add, 16662 Call 16663 ("UInt",iTy, 16664 EX(Var("Rn",F32),LN 15,LN 0,F16)), 16665 Call 16666 ("UInt",iTy, 16667 EX(Var("Rm",F32),LN 15,LN 0,F16))), 16668 Bop(Add, 16669 Call 16670 ("UInt",iTy, 16671 EX(Var("Rn",F32),LN 31,LN 16,F16)), 16672 Call 16673 ("UInt",iTy, 16674 EX(Var("Rm",F32),LN 31,LN 16,F16)))]), 16675 (LW(1,2), 16676 TP[Bop(Sub, 16677 Call 16678 ("UInt",iTy, 16679 EX(Var("Rn",F32),LN 15,LN 0,F16)), 16680 Call 16681 ("UInt",iTy, 16682 EX(Var("Rm",F32),LN 31,LN 16,F16))), 16683 Bop(Add, 16684 Call 16685 ("UInt",iTy, 16686 EX(Var("Rn",F32),LN 31,LN 16,F16)), 16687 Call 16688 ("UInt",iTy, 16689 EX(Var("Rm",F32),LN 15,LN 0,F16)))]), 16690 (LW(2,2), 16691 TP[Bop(Add, 16692 Call 16693 ("UInt",iTy, 16694 EX(Var("Rn",F32),LN 15,LN 0,F16)), 16695 Call 16696 ("UInt",iTy, 16697 EX(Var("Rm",F32),LN 31,LN 16,F16))), 16698 Bop(Sub, 16699 Call 16700 ("UInt",iTy, 16701 EX(Var("Rn",F32),LN 31,LN 16,F16)), 16702 Call 16703 ("UInt",iTy, 16704 EX(Var("Rm",F32),LN 15,LN 0,F16)))]), 16705 (LW(3,2), 16706 TP[Bop(Sub, 16707 Call 16708 ("UInt",iTy, 16709 EX(Var("Rn",F32),LN 15,LN 0,F16)), 16710 Call 16711 ("UInt",iTy, 16712 EX(Var("Rm",F32),LN 15,LN 0,F16))), 16713 Bop(Sub, 16714 Call 16715 ("UInt",iTy, 16716 EX(Var("Rn",F32),LN 31,LN 16,F16)), 16717 Call 16718 ("UInt",iTy, 16719 EX(Var("Rm",F32),LN 31,LN 16,F16)))])]), 16720 qTy)))))) 16721; 16722val dfn'UnsignedAddSub16_def = Def 16723 ("dfn'UnsignedAddSub16", 16724 TP[Var("op",FTy 2),Var("d",F4),Var("n",F4),Var("m",F4)], 16725 MB(Call 16726 ("UnsignedParallelAddSub16",ATy(qTy,PTy(PTy(iTy,iTy),qTy)), 16727 TP[Var("op",FTy 2),Var("n",F4),Var("m",F4)]), 16728 Close 16729 (Var("x",PTy(iTy,iTy)), 16730 CS(Var("x",PTy(iTy,iTy)), 16731 [(TP[iVar"res1",iVar"res2"], 16732 MB(Call 16733 ("write'R",ATy(qTy,PTy(uTy,qTy)), 16734 TP[CC[Mop(Cast F16,iVar"res2"), 16735 Mop(Cast F16,iVar"res1")],Var("d",F4)]), 16736 Close 16737 (AVar uTy, 16738 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 16739 Close 16740 (Var("v",CTy"PSR"), 16741 MB(MB(MU(Dest("GE",F4,Var("v",CTy"PSR")),qTy), 16742 Close 16743 (Var("w",F4), 16744 MB(MR(Close 16745 (qVar"s", 16746 Dest("CPSR",CTy"PSR",qVar"s"))), 16747 Close 16748 (Var("v",CTy"PSR"), 16749 MB(MB(MU(TP[Var("v",CTy"PSR"), 16750 BFI(LN 1,LN 0, 16751 ITE(Bop(Ge, 16752 iVar"res1", 16753 ITE(Bop(In, 16754 Var("op", 16755 FTy 2), 16756 SL[LW(1, 16757 2), 16758 LW(2, 16759 2)]), 16760 LI 0, 16761 LI 16762 65536)), 16763 LW(3,2), 16764 LW(0,2)), 16765 Var("w",F4))],qTy), 16766 Close 16767 (Var("v",PTy(CTy"PSR",F4)), 16768 MU(Rupd 16769 ("GE", 16770 Var("v", 16771 PTy(CTy"PSR", 16772 F4))),qTy))), 16773 Close 16774 (Var("v",CTy"PSR"), 16775 MW(Close 16776 (qVar"s", 16777 Rupd 16778 ("CPSR", 16779 TP[qVar"s", 16780 Var("v", 16781 CTy"PSR")]))))))))), 16782 Close 16783 (AVar uTy, 16784 MB(MR(Close 16785 (qVar"s", 16786 Dest("CPSR",CTy"PSR",qVar"s"))), 16787 Close 16788 (Var("v",CTy"PSR"), 16789 MB(MB(MU(Dest 16790 ("GE",F4, 16791 Var("v",CTy"PSR")),qTy), 16792 Close 16793 (Var("w",F4), 16794 MB(MR(Close 16795 (qVar"s", 16796 Dest 16797 ("CPSR", 16798 CTy"PSR", 16799 qVar"s"))), 16800 Close 16801 (Var("v",CTy"PSR"), 16802 MB(MB(MU(TP[Var("v", 16803 CTy"PSR"), 16804 BFI(LN 3, 16805 LN 2, 16806 ITE(Bop(Ge, 16807 iVar"res2", 16808 ITE(Bop(In, 16809 Var("op", 16810 FTy 2), 16811 SL[LW(2, 16812 2), 16813 LW(3, 16814 2)]), 16815 LI 16816 0, 16817 LI 16818 65536)), 16819 LW(3, 16820 2), 16821 LW(0, 16822 2)), 16823 Var("w", 16824 F4))], 16825 qTy), 16826 Close 16827 (Var("v", 16828 PTy(CTy"PSR", 16829 F4)), 16830 MU(Rupd 16831 ("GE", 16832 Var("v", 16833 PTy(CTy"PSR", 16834 F4))), 16835 qTy))), 16836 Close 16837 (Var("v", 16838 CTy"PSR"), 16839 MW(Close 16840 (qVar"s", 16841 Rupd 16842 ("CPSR", 16843 TP[qVar"s", 16844 Var("v", 16845 CTy"PSR")]))))))))), 16846 Close 16847 (AVar uTy, 16848 Call 16849 ("IncPC", 16850 ATy(qTy,PTy(uTy,qTy)),LU))))))))))))])))) 16851; 16852val dfn'UnsignedSaturatingAddSub16_def = Def 16853 ("dfn'UnsignedSaturatingAddSub16", 16854 TP[Var("op",FTy 2),Var("d",F4),Var("n",F4),Var("m",F4)], 16855 MB(Call 16856 ("UnsignedParallelAddSub16",ATy(qTy,PTy(PTy(iTy,iTy),qTy)), 16857 TP[Var("op",FTy 2),Var("n",F4),Var("m",F4)]), 16858 Close 16859 (Var("x",PTy(iTy,iTy)), 16860 CS(Var("x",PTy(iTy,iTy)), 16861 [(TP[iVar"res1",iVar"res2"], 16862 MB(Call 16863 ("UnsignedSat",ATy(qTy,PTy(F16,qTy)), 16864 TP[iVar"res2",LN 16]), 16865 Close 16866 (Var("v",F16), 16867 MB(MB(MB(MB(Call 16868 ("UnsignedSat",ATy(qTy,PTy(F16,qTy)), 16869 TP[iVar"res1",LN 16]), 16870 Close 16871 (Var("v0",F16), 16872 MU(CC[Var("v",F16),Var("v0",F16)],qTy))), 16873 Close 16874 (Var("v",F32), 16875 MU(TP[Var("v",F32),Var("d",F4)],qTy))), 16876 Close 16877 (Var("v",PTy(F32,F4)), 16878 Call 16879 ("write'R",ATy(qTy,PTy(uTy,qTy)), 16880 Var("v",PTy(F32,F4))))), 16881 Close 16882 (AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU))))))])))) 16883; 16884val dfn'UnsignedHalvingAddSub16_def = Def 16885 ("dfn'UnsignedHalvingAddSub16", 16886 TP[Var("op",FTy 2),Var("d",F4),Var("n",F4),Var("m",F4)], 16887 MB(Call 16888 ("UnsignedParallelAddSub16",ATy(qTy,PTy(PTy(iTy,iTy),qTy)), 16889 TP[Var("op",FTy 2),Var("n",F4),Var("m",F4)]), 16890 Close 16891 (Var("x",PTy(iTy,iTy)), 16892 CS(Var("x",PTy(iTy,iTy)), 16893 [(TP[iVar"res1",iVar"res2"], 16894 MB(Call 16895 ("write'R",ATy(qTy,PTy(uTy,qTy)), 16896 TP[CC[Mop(Cast F16,Bop(Div,iVar"res2",LI 2)), 16897 Mop(Cast F16,Bop(Div,iVar"res1",LI 2))], 16898 Var("d",F4)]), 16899 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU))))])))) 16900; 16901val UnsignedParallelAddSub8_def = Def 16902 ("UnsignedParallelAddSub8",TP[bVar"sub",Var("n",F4),Var("m",F4)], 16903 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 16904 Close 16905 (Var("Rn",F32), 16906 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 16907 Close 16908 (Var("Rm",F32), 16909 MU(ITE(bVar"sub", 16910 TP[Bop(Sub, 16911 Call 16912 ("UInt",iTy,EX(Var("Rn",F32),LN 7,LN 0,F8)), 16913 Call 16914 ("UInt",iTy,EX(Var("Rm",F32),LN 7,LN 0,F8))), 16915 Bop(Sub, 16916 Call 16917 ("UInt",iTy,EX(Var("Rn",F32),LN 15,LN 8,F8)), 16918 Call 16919 ("UInt",iTy,EX(Var("Rm",F32),LN 15,LN 8,F8))), 16920 Bop(Sub, 16921 Call 16922 ("UInt",iTy, 16923 EX(Var("Rn",F32),LN 23,LN 16,F8)), 16924 Call 16925 ("UInt",iTy, 16926 EX(Var("Rm",F32),LN 23,LN 16,F8))), 16927 Bop(Sub, 16928 Call 16929 ("UInt",iTy, 16930 EX(Var("Rn",F32),LN 31,LN 24,F8)), 16931 Call 16932 ("UInt",iTy, 16933 EX(Var("Rm",F32),LN 31,LN 24,F8)))], 16934 TP[Bop(Add, 16935 Call 16936 ("UInt",iTy,EX(Var("Rn",F32),LN 7,LN 0,F8)), 16937 Call 16938 ("UInt",iTy,EX(Var("Rm",F32),LN 7,LN 0,F8))), 16939 Bop(Add, 16940 Call 16941 ("UInt",iTy,EX(Var("Rn",F32),LN 15,LN 8,F8)), 16942 Call 16943 ("UInt",iTy,EX(Var("Rm",F32),LN 15,LN 8,F8))), 16944 Bop(Add, 16945 Call 16946 ("UInt",iTy, 16947 EX(Var("Rn",F32),LN 23,LN 16,F8)), 16948 Call 16949 ("UInt",iTy, 16950 EX(Var("Rm",F32),LN 23,LN 16,F8))), 16951 Bop(Add, 16952 Call 16953 ("UInt",iTy, 16954 EX(Var("Rn",F32),LN 31,LN 24,F8)), 16955 Call 16956 ("UInt",iTy, 16957 EX(Var("Rm",F32),LN 31,LN 24,F8)))]),qTy)))))) 16958; 16959val dfn'UnsignedAddSub8_def = Def 16960 ("dfn'UnsignedAddSub8", 16961 TP[bVar"sub",Var("d",F4),Var("n",F4),Var("m",F4)], 16962 MB(Call 16963 ("UnsignedParallelAddSub8", 16964 ATy(qTy,PTy(PTy(iTy,PTy(iTy,PTy(iTy,iTy))),qTy)), 16965 TP[bVar"sub",Var("n",F4),Var("m",F4)]), 16966 Close 16967 (Var("x",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))), 16968 CS(Var("x",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))), 16969 [(TP[iVar"res1",iVar"res2",iVar"res3",iVar"res4"], 16970 MB(Call 16971 ("write'R",ATy(qTy,PTy(uTy,qTy)), 16972 TP[CC[Mop(Cast F8,iVar"res4"),Mop(Cast F8,iVar"res3"), 16973 Mop(Cast F8,iVar"res2"),Mop(Cast F8,iVar"res1")], 16974 Var("d",F4)]), 16975 Close 16976 (AVar uTy, 16977 Let(iVar"ge_lim",ITE(bVar"sub",LI 0,LI 256), 16978 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 16979 Close 16980 (Var("v",CTy"PSR"), 16981 MB(MB(MU(Dest("GE",F4,Var("v",CTy"PSR")),qTy), 16982 Close 16983 (Var("w",F4), 16984 MB(MR(Close 16985 (qVar"s", 16986 Dest 16987 ("CPSR",CTy"PSR",qVar"s"))), 16988 Close 16989 (Var("v",CTy"PSR"), 16990 MB(MB(MU(TP[Var("v",CTy"PSR"), 16991 BFI(LN 0,LN 0, 16992 Mop(Cast F1, 16993 Bop(Ge, 16994 iVar"res1", 16995 iVar"ge_lim")), 16996 Var("w",F4))], 16997 qTy), 16998 Close 16999 (Var("v", 17000 PTy(CTy"PSR",F4)), 17001 MU(Rupd 17002 ("GE", 17003 Var("v", 17004 PTy(CTy"PSR", 17005 F4))), 17006 qTy))), 17007 Close 17008 (Var("v",CTy"PSR"), 17009 MW(Close 17010 (qVar"s", 17011 Rupd 17012 ("CPSR", 17013 TP[qVar"s", 17014 Var("v", 17015 CTy"PSR")]))))))))), 17016 Close 17017 (AVar uTy, 17018 MB(MR(Close 17019 (qVar"s", 17020 Dest("CPSR",CTy"PSR",qVar"s"))), 17021 Close 17022 (Var("v",CTy"PSR"), 17023 MB(MB(MU(Dest 17024 ("GE",F4, 17025 Var("v",CTy"PSR")), 17026 qTy), 17027 Close 17028 (Var("w",F4), 17029 MB(MR(Close 17030 (qVar"s", 17031 Dest 17032 ("CPSR", 17033 CTy"PSR", 17034 qVar"s"))), 17035 Close 17036 (Var("v",CTy"PSR"), 17037 MB(MB(MU(TP[Var("v", 17038 CTy"PSR"), 17039 BFI(LN 17040 1, 17041 LN 17042 1, 17043 Mop(Cast 17044 F1, 17045 Bop(Ge, 17046 iVar"res2", 17047 iVar"ge_lim")), 17048 Var("w", 17049 F4))], 17050 qTy), 17051 Close 17052 (Var("v", 17053 PTy(CTy"PSR", 17054 F4)), 17055 MU(Rupd 17056 ("GE", 17057 Var("v", 17058 PTy(CTy"PSR", 17059 F4))), 17060 qTy))), 17061 Close 17062 (Var("v", 17063 CTy"PSR"), 17064 MW(Close 17065 (qVar"s", 17066 Rupd 17067 ("CPSR", 17068 TP[qVar"s", 17069 Var("v", 17070 CTy"PSR")]))))))))), 17071 Close 17072 (AVar uTy, 17073 MB(MR(Close 17074 (qVar"s", 17075 Dest 17076 ("CPSR", 17077 CTy"PSR", 17078 qVar"s"))), 17079 Close 17080 (Var("v",CTy"PSR"), 17081 MB(MB(MU(Dest 17082 ("GE",F4, 17083 Var("v", 17084 CTy"PSR")), 17085 qTy), 17086 Close 17087 (Var("w",F4), 17088 MB(MR(Close 17089 (qVar"s", 17090 Dest 17091 ("CPSR", 17092 CTy"PSR", 17093 qVar"s"))), 17094 Close 17095 (Var("v", 17096 CTy"PSR"), 17097 MB(MB(MU(TP[Var("v", 17098 CTy"PSR"), 17099 BFI(LN 17100 2, 17101 LN 17102 2, 17103 Mop(Cast 17104 F1, 17105 Bop(Ge, 17106 iVar"res3", 17107 iVar"ge_lim")), 17108 Var("w", 17109 F4))], 17110 qTy), 17111 Close 17112 (Var("v", 17113 PTy(CTy"PSR", 17114 F4)), 17115 MU(Rupd 17116 ("GE", 17117 Var("v", 17118 PTy(CTy"PSR", 17119 F4))), 17120 qTy))), 17121 Close 17122 (Var("v", 17123 CTy"PSR"), 17124 MW(Close 17125 (qVar"s", 17126 Rupd 17127 ("CPSR", 17128 TP[qVar"s", 17129 Var("v", 17130 CTy"PSR")]))))))))), 17131 Close 17132 (AVar uTy, 17133 MB(MR(Close 17134 (qVar"s", 17135 Dest 17136 ("CPSR", 17137 CTy"PSR", 17138 qVar"s"))), 17139 Close 17140 (Var("v", 17141 CTy"PSR"), 17142 MB(MB(MU(Dest 17143 ("GE", 17144 F4, 17145 Var("v", 17146 CTy"PSR")), 17147 qTy), 17148 Close 17149 (Var("w", 17150 F4), 17151 MB(MR(Close 17152 (qVar"s", 17153 Dest 17154 ("CPSR", 17155 CTy"PSR", 17156 qVar"s"))), 17157 Close 17158 (Var("v", 17159 CTy"PSR"), 17160 MB(MB(MU(TP[Var("v", 17161 CTy"PSR"), 17162 BFI(LN 17163 3, 17164 LN 17165 3, 17166 Mop(Cast 17167 F1, 17168 Bop(Ge, 17169 iVar"res4", 17170 iVar"ge_lim")), 17171 Var("w", 17172 F4))], 17173 qTy), 17174 Close 17175 (Var("v", 17176 PTy(CTy"PSR", 17177 F4)), 17178 MU(Rupd 17179 ("GE", 17180 Var("v", 17181 PTy(CTy"PSR", 17182 F4))), 17183 qTy))), 17184 Close 17185 (Var("v", 17186 CTy"PSR"), 17187 MW(Close 17188 (qVar"s", 17189 Rupd 17190 ("CPSR", 17191 TP[qVar"s", 17192 Var("v", 17193 CTy"PSR")]))))))))), 17194 Close 17195 (AVar 17196 uTy, 17197 Call 17198 ("IncPC", 17199 ATy(qTy, 17200 PTy(uTy, 17201 qTy)), 17202 LU)))))))))))))))))))))])))) 17203; 17204val dfn'UnsignedSaturatingAddSub8_def = Def 17205 ("dfn'UnsignedSaturatingAddSub8", 17206 TP[bVar"sub",Var("d",F4),Var("n",F4),Var("m",F4)], 17207 MB(Call 17208 ("UnsignedParallelAddSub8", 17209 ATy(qTy,PTy(PTy(iTy,PTy(iTy,PTy(iTy,iTy))),qTy)), 17210 TP[bVar"sub",Var("n",F4),Var("m",F4)]), 17211 Close 17212 (Var("x",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))), 17213 CS(Var("x",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))), 17214 [(TP[iVar"res1",iVar"res2",iVar"res3",iVar"res4"], 17215 MB(Call 17216 ("UnsignedSat",ATy(qTy,PTy(F8,qTy)),TP[iVar"res4",LN 8]), 17217 Close 17218 (Var("v",F8), 17219 MB(MB(MB(MB(Call 17220 ("UnsignedSat",ATy(qTy,PTy(F8,qTy)), 17221 TP[iVar"res3",LN 8]), 17222 Close 17223 (Var("v0",F8), 17224 MB(MB(Call 17225 ("UnsignedSat", 17226 ATy(qTy,PTy(F8,qTy)), 17227 TP[iVar"res2",LN 8]), 17228 Close 17229 (Var("v1",F8), 17230 MB(MB(Call 17231 ("UnsignedSat", 17232 ATy(qTy,PTy(F8,qTy)), 17233 TP[iVar"res1",LN 8]), 17234 Close 17235 (Var("v2",F8), 17236 MU(CC[Var("v1",F8), 17237 Var("v2",F8)], 17238 qTy))), 17239 Close 17240 (Var("v1",F16), 17241 MU(CC[Var("v0",F8), 17242 Var("v1",F16)],qTy))))), 17243 Close 17244 (Var("v0",FTy 24), 17245 MU(CC[Var("v",F8), 17246 Var("v0",FTy 24)],qTy))))), 17247 Close 17248 (Var("v",F32), 17249 MU(TP[Var("v",F32),Var("d",F4)],qTy))), 17250 Close 17251 (Var("v",PTy(F32,F4)), 17252 Call 17253 ("write'R",ATy(qTy,PTy(uTy,qTy)), 17254 Var("v",PTy(F32,F4))))), 17255 Close 17256 (AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU))))))])))) 17257; 17258val dfn'UnsignedHalvingAddSub8_def = Def 17259 ("dfn'UnsignedHalvingAddSub8", 17260 TP[bVar"sub",Var("d",F4),Var("n",F4),Var("m",F4)], 17261 MB(Call 17262 ("UnsignedParallelAddSub8", 17263 ATy(qTy,PTy(PTy(iTy,PTy(iTy,PTy(iTy,iTy))),qTy)), 17264 TP[bVar"sub",Var("n",F4),Var("m",F4)]), 17265 Close 17266 (Var("x",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))), 17267 CS(Var("x",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))), 17268 [(TP[iVar"res1",iVar"res2",iVar"res3",iVar"res4"], 17269 MB(Call 17270 ("write'R",ATy(qTy,PTy(uTy,qTy)), 17271 TP[CC[Mop(Cast F8,Bop(Div,iVar"res4",LI 2)), 17272 Mop(Cast F8,Bop(Div,iVar"res3",LI 2)), 17273 Mop(Cast F8,Bop(Div,iVar"res2",LI 2)), 17274 Mop(Cast F8,Bop(Div,iVar"res1",LI 2))], 17275 Var("d",F4)]), 17276 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU))))])))) 17277; 17278val dfn'UnsignedSumAbsoluteDifferences_def = Def 17279 ("dfn'UnsignedSumAbsoluteDifferences", 17280 TP[Var("d",F4),Var("n",F4),Var("m",F4),Var("a",F4)], 17281 MB(ITE(EQ(Var("a",F4),LW(15,4)),MU(LW(0,32),qTy), 17282 Call("R",ATy(qTy,PTy(F32,qTy)),Var("a",F4))), 17283 Close 17284 (Var("acc",F32), 17285 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 17286 Close 17287 (Var("Rn",F32), 17288 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 17289 Close 17290 (Var("Rm",F32), 17291 MB(Call 17292 ("write'R",ATy(qTy,PTy(uTy,qTy)), 17293 TP[Mop(Cast F32, 17294 Bop(Add, 17295 Bop(Add, 17296 Bop(Add, 17297 Bop(Add, 17298 Call 17299 ("UInt",iTy, 17300 Var("acc",F32)), 17301 Mop(Abs, 17302 Bop(Sub, 17303 Call 17304 ("UInt",iTy, 17305 EX(Var("Rn", 17306 F32), 17307 LN 7,LN 0, 17308 F8)), 17309 Call 17310 ("UInt",iTy, 17311 EX(Var("Rm", 17312 F32), 17313 LN 7,LN 0, 17314 F8))))), 17315 Mop(Abs, 17316 Bop(Sub, 17317 Call 17318 ("UInt",iTy, 17319 EX(Var("Rn",F32), 17320 LN 15,LN 8,F8)), 17321 Call 17322 ("UInt",iTy, 17323 EX(Var("Rm",F32), 17324 LN 15,LN 8,F8))))), 17325 Mop(Abs, 17326 Bop(Sub, 17327 Call 17328 ("UInt",iTy, 17329 EX(Var("Rn",F32), 17330 LN 23,LN 16,F8)), 17331 Call 17332 ("UInt",iTy, 17333 EX(Var("Rm",F32), 17334 LN 23,LN 16,F8))))), 17335 Mop(Abs, 17336 Bop(Sub, 17337 Call 17338 ("UInt",iTy, 17339 EX(Var("Rn",F32),LN 31, 17340 LN 24,F8)), 17341 Call 17342 ("UInt",iTy, 17343 EX(Var("Rm",F32),LN 31, 17344 LN 24,F8)))))), 17345 Var("d",F4)]), 17346 Close 17347 (AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))))))))) 17348; 17349val GenerateIntegerZeroDivide_def = Def 17350 ("GenerateIntegerZeroDivide",AVar uTy, 17351 Call("TakeUndefInstrException",ATy(qTy,PTy(uTy,qTy)),LU)) 17352; 17353val dfn'Divide_def = Def 17354 ("dfn'Divide",TP[bVar"unsigned",Var("d",F4),Var("n",F4),Var("m",F4)], 17355 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 17356 Close 17357 (Var("v",F32), 17358 MB(MU(EQ(Var("v",F32),LW(0,32)),qTy), 17359 Close 17360 (bVar"b", 17361 ITE(bVar"b", 17362 MB(Call 17363 ("IntegerZeroDivideTrappingEnabled", 17364 ATy(qTy,PTy(bTy,qTy)),LU), 17365 Close 17366 (bVar"b", 17367 ITE(bVar"b", 17368 Call 17369 ("GenerateIntegerZeroDivide", 17370 ATy(qTy,PTy(uTy,qTy)),LU), 17371 MB(Call 17372 ("write'R",ATy(qTy,PTy(uTy,qTy)), 17373 TP[LW(0,32),Var("d",F4)]), 17374 Close 17375 (AVar uTy, 17376 Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))))), 17377 MB(ITE(bVar"unsigned", 17378 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 17379 Close 17380 (Var("v",F32), 17381 MB(Call 17382 ("R",ATy(qTy,PTy(F32,qTy)), 17383 Var("m",F4)), 17384 Close 17385 (Var("v0",F32), 17386 MU(Bop(Div,Var("v",F32), 17387 Var("v0",F32)),qTy))))), 17388 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 17389 Close 17390 (Var("v",F32), 17391 MB(Call 17392 ("R",ATy(qTy,PTy(F32,qTy)), 17393 Var("m",F4)), 17394 Close 17395 (Var("v0",F32), 17396 MU(Bop(Quot,Var("v",F32), 17397 Var("v0",F32)),qTy)))))), 17398 Close 17399 (Var("v",F32), 17400 MB(MB(MU(TP[Var("v",F32),Var("d",F4)],qTy), 17401 Close 17402 (Var("v",PTy(F32,F4)), 17403 Call 17404 ("write'R",ATy(qTy,PTy(uTy,qTy)), 17405 Var("v",PTy(F32,F4))))), 17406 Close 17407 (AVar uTy, 17408 Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU))))))))))) 17409; 17410val dfn'PackHalfword_def = Def 17411 ("dfn'PackHalfword", 17412 TP[Var("shift_t",CTy"SRType"),nVar"shift_n",bVar"tbform",Var("d",F4), 17413 Var("n",F4),Var("m",F4)], 17414 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 17415 Close 17416 (Var("v",F32), 17417 MB(MB(MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 17418 Close 17419 (Var("v0",CTy"PSR"), 17420 MB(MB(MB(MU(Dest("C",bTy,Var("v0",CTy"PSR")),qTy), 17421 Close 17422 (bVar"v",MU(TP[nVar"shift_n",bVar"v"],qTy))), 17423 Close 17424 (Var("v",PTy(nTy,bTy)), 17425 MU(TP[Var("shift_t",CTy"SRType"), 17426 Var("v",PTy(nTy,bTy))],qTy))), 17427 Close 17428 (Var("v0",PTy(CTy"SRType",PTy(nTy,bTy))), 17429 MU(TP[Var("v",F32), 17430 Var("v0",PTy(CTy"SRType",PTy(nTy,bTy)))], 17431 qTy))))), 17432 Close 17433 (Var("v",PTy(F32,PTy(CTy"SRType",PTy(nTy,bTy)))), 17434 Call 17435 ("Shift",ATy(qTy,PTy(F32,qTy)), 17436 Var("v",PTy(F32,PTy(CTy"SRType",PTy(nTy,bTy))))))), 17437 Close 17438 (Var("operand2",F32), 17439 MB(ITE(bVar"tbform", 17440 MU(EX(Var("operand2",F32),LN 15,LN 0,F16),qTy), 17441 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 17442 Close 17443 (Var("v",F32), 17444 MU(EX(Var("v",F32),LN 15,LN 0,F16),qTy)))), 17445 Close 17446 (Var("bot",F16), 17447 MB(ITE(bVar"tbform", 17448 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 17449 Close 17450 (Var("v",F32), 17451 MU(EX(Var("v",F32),LN 31,LN 16,F16),qTy))), 17452 MU(EX(Var("operand2",F32),LN 31,LN 16,F16),qTy)), 17453 Close 17454 (Var("top",F16), 17455 MB(Call 17456 ("write'R",ATy(qTy,PTy(uTy,qTy)), 17457 TP[CC[Var("top",F16),Var("bot",F16)], 17458 Var("d",F4)]), 17459 Close 17460 (AVar uTy, 17461 Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))))))))))) 17462; 17463val dfn'Saturate_def = Def 17464 ("dfn'Saturate", 17465 TP[Var("shift_t",CTy"SRType"),nVar"shift_n",nVar"saturate_to", 17466 bVar"unsigned",Var("d",F4),Var("n",F4)], 17467 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 17468 Close 17469 (Var("v",F32), 17470 MB(MB(MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 17471 Close 17472 (Var("v0",CTy"PSR"), 17473 MB(MB(MB(MU(Dest("C",bTy,Var("v0",CTy"PSR")),qTy), 17474 Close 17475 (bVar"v",MU(TP[nVar"shift_n",bVar"v"],qTy))), 17476 Close 17477 (Var("v",PTy(nTy,bTy)), 17478 MU(TP[Var("shift_t",CTy"SRType"), 17479 Var("v",PTy(nTy,bTy))],qTy))), 17480 Close 17481 (Var("v0",PTy(CTy"SRType",PTy(nTy,bTy))), 17482 MU(TP[Var("v",F32), 17483 Var("v0",PTy(CTy"SRType",PTy(nTy,bTy)))], 17484 qTy))))), 17485 Close 17486 (Var("v",PTy(F32,PTy(CTy"SRType",PTy(nTy,bTy)))), 17487 Call 17488 ("Shift",ATy(qTy,PTy(F32,qTy)), 17489 Var("v",PTy(F32,PTy(CTy"SRType",PTy(nTy,bTy))))))), 17490 Close 17491 (Var("operand",F32), 17492 MB(ITE(bVar"unsigned", 17493 Call 17494 ("UnsignedSatQ",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 17495 TP[Mop(Cast iTy,Var("operand",F32)), 17496 nVar"saturate_to"]), 17497 Call 17498 ("SignedSatQ",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 17499 TP[Mop(Cast iTy,Var("operand",F32)), 17500 nVar"saturate_to"])), 17501 Close 17502 (Var("x",PTy(F32,bTy)), 17503 CS(Var("x",PTy(F32,bTy)), 17504 [(TP[Var("result",F32),bVar"sat"], 17505 MB(Call 17506 ("write'R",ATy(qTy,PTy(uTy,qTy)), 17507 TP[ITE(bVar"unsigned",Var("result",F32), 17508 Call 17509 ("SignExtendFrom",F32, 17510 TP[Var("result",F32), 17511 nVar"saturate_to"])), 17512 Var("d",F4)]), 17513 Close 17514 (AVar uTy, 17515 MB(ITE(bVar"sat", 17516 MB(MR(Close 17517 (qVar"s", 17518 Dest 17519 ("CPSR",CTy"PSR",qVar"s"))), 17520 Close 17521 (Var("v",CTy"PSR"), 17522 MB(MB(MU(TP[Var("v",CTy"PSR"), 17523 LT],qTy), 17524 Close 17525 (Var("v", 17526 PTy(CTy"PSR",bTy)), 17527 MU(Rupd 17528 ("Q", 17529 Var("v", 17530 PTy(CTy"PSR", 17531 bTy))), 17532 qTy))), 17533 Close 17534 (Var("v",CTy"PSR"), 17535 MW(Close 17536 (qVar"s", 17537 Rupd 17538 ("CPSR", 17539 TP[qVar"s", 17540 Var("v", 17541 CTy"PSR")]))))))), 17542 MU(LU,qTy)), 17543 Close 17544 (AVar uTy, 17545 Call 17546 ("IncPC",ATy(qTy,PTy(uTy,qTy)),LU))))))])))))))) 17547; 17548val dfn'Saturate16_def = Def 17549 ("dfn'Saturate16", 17550 TP[nVar"saturate_to",bVar"unsigned",Var("d",F4),Var("n",F4)], 17551 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 17552 Close 17553 (Var("Rn",F32), 17554 MB(ITE(bVar"unsigned", 17555 MB(Call 17556 ("UnsignedSatQ",ATy(qTy,PTy(PTy(F16,bTy),qTy)), 17557 TP[Mop(Cast iTy,EX(Var("Rn",F32),LN 15,LN 0,F16)), 17558 nVar"saturate_to"]), 17559 Close 17560 (Var("v",PTy(F16,bTy)), 17561 MB(Call 17562 ("UnsignedSatQ",ATy(qTy,PTy(PTy(F16,bTy),qTy)), 17563 TP[Mop(Cast iTy, 17564 EX(Var("Rn",F32),LN 31,LN 16,F16)), 17565 nVar"saturate_to"]), 17566 Close 17567 (Var("v0",PTy(F16,bTy)), 17568 MU(TP[Var("v",PTy(F16,bTy)), 17569 Var("v0",PTy(F16,bTy))],qTy))))), 17570 MB(Call 17571 ("SignedSatQ",ATy(qTy,PTy(PTy(F16,bTy),qTy)), 17572 TP[Mop(Cast iTy,EX(Var("Rn",F32),LN 15,LN 0,F16)), 17573 nVar"saturate_to"]), 17574 Close 17575 (Var("v",PTy(F16,bTy)), 17576 MB(Call 17577 ("SignedSatQ",ATy(qTy,PTy(PTy(F16,bTy),qTy)), 17578 TP[Mop(Cast iTy, 17579 EX(Var("Rn",F32),LN 31,LN 16,F16)), 17580 nVar"saturate_to"]), 17581 Close 17582 (Var("v0",PTy(F16,bTy)), 17583 MU(TP[Var("v",PTy(F16,bTy)), 17584 Var("v0",PTy(F16,bTy))],qTy)))))), 17585 Close 17586 (Var("x",PTy(PTy(F16,bTy),PTy(F16,bTy))), 17587 CS(Var("x",PTy(PTy(F16,bTy),PTy(F16,bTy))), 17588 [(TP[TP[Var("result1",F16),bVar"sat1"], 17589 Var("result2",F16),bVar"sat2"], 17590 MB(Call 17591 ("write'R",ATy(qTy,PTy(uTy,qTy)), 17592 TP[ITE(bVar"unsigned", 17593 CC[Var("result2",F16),Var("result1",F16)], 17594 CC[Call 17595 ("SignExtendFrom",F16, 17596 TP[Var("result2",F16), 17597 nVar"saturate_to"]), 17598 Call 17599 ("SignExtendFrom",F16, 17600 TP[Var("result1",F16), 17601 nVar"saturate_to"])]), 17602 Var("d",F4)]), 17603 Close 17604 (AVar uTy, 17605 MB(ITE(Bop(Or,bVar"sat1",bVar"sat2"), 17606 MB(MR(Close 17607 (qVar"s", 17608 Dest("CPSR",CTy"PSR",qVar"s"))), 17609 Close 17610 (Var("v",CTy"PSR"), 17611 MB(MB(MU(TP[Var("v",CTy"PSR"),LT], 17612 qTy), 17613 Close 17614 (Var("v",PTy(CTy"PSR",bTy)), 17615 MU(Rupd 17616 ("Q", 17617 Var("v", 17618 PTy(CTy"PSR",bTy))), 17619 qTy))), 17620 Close 17621 (Var("v",CTy"PSR"), 17622 MW(Close 17623 (qVar"s", 17624 Rupd 17625 ("CPSR", 17626 TP[qVar"s", 17627 Var("v",CTy"PSR")]))))))), 17628 MU(LU,qTy)), 17629 Close 17630 (AVar uTy, 17631 Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU))))))])))))) 17632; 17633val dfn'ExtendByte_def = Def 17634 ("dfn'ExtendByte", 17635 TP[bVar"unsigned",Var("d",F4),Var("n",F4),Var("m",F4),nVar"rotation"], 17636 MB(ITE(EQ(Var("n",F4),LW(15,4)),MU(LW(0,32),qTy), 17637 Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4))), 17638 Close 17639 (Var("acc",F32), 17640 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 17641 Close 17642 (Var("v",F32), 17643 MB(MB(MU(TP[Var("v",F32),nVar"rotation"],qTy), 17644 Close 17645 (Var("v",PTy(F32,nTy)), 17646 Call 17647 ("ROR",ATy(qTy,PTy(F32,qTy)), 17648 Var("v",PTy(F32,nTy))))), 17649 Close 17650 (Var("rotated",F32), 17651 MB(Call 17652 ("write'R",ATy(qTy,PTy(uTy,qTy)), 17653 TP[Bop(Add,Var("acc",F32), 17654 Call 17655 ("Extend",F32, 17656 TP[bVar"unsigned", 17657 EX(Var("rotated",F32),LN 7,LN 0,F8)])), 17658 Var("d",F4)]), 17659 Close 17660 (AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))))))))) 17661; 17662val dfn'ExtendByte16_def = Def 17663 ("dfn'ExtendByte16", 17664 TP[bVar"unsigned",Var("d",F4),Var("n",F4),Var("m",F4),nVar"rotation"], 17665 MB(ITE(EQ(Var("n",F4),LW(15,4)),MU(LW(0,32),qTy), 17666 Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4))), 17667 Close 17668 (Var("acc",F32), 17669 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 17670 Close 17671 (Var("v",F32), 17672 MB(MB(MU(TP[Var("v",F32),nVar"rotation"],qTy), 17673 Close 17674 (Var("v",PTy(F32,nTy)), 17675 Call 17676 ("ROR",ATy(qTy,PTy(F32,qTy)), 17677 Var("v",PTy(F32,nTy))))), 17678 Close 17679 (Var("rotated",F32), 17680 Let(Var("r1",F16), 17681 Bop(Add,EX(Var("acc",F32),LN 15,LN 0,F16), 17682 Call 17683 ("Extend",F16, 17684 TP[bVar"unsigned", 17685 EX(Var("rotated",F32),LN 7,LN 0,F8)])), 17686 MB(Call 17687 ("write'R",ATy(qTy,PTy(uTy,qTy)), 17688 TP[CC[Var("r1",F16),Var("r1",F16)], 17689 Var("d",F4)]), 17690 Close 17691 (AVar uTy, 17692 Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU))))))))))) 17693; 17694val dfn'ExtendHalfword_def = Def 17695 ("dfn'ExtendHalfword", 17696 TP[bVar"unsigned",Var("d",F4),Var("n",F4),Var("m",F4),nVar"rotation"], 17697 MB(ITE(EQ(Var("n",F4),LW(15,4)),MU(LW(0,32),qTy), 17698 Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4))), 17699 Close 17700 (Var("acc",F32), 17701 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 17702 Close 17703 (Var("v",F32), 17704 MB(MB(MU(TP[Var("v",F32),nVar"rotation"],qTy), 17705 Close 17706 (Var("v",PTy(F32,nTy)), 17707 Call 17708 ("ROR",ATy(qTy,PTy(F32,qTy)), 17709 Var("v",PTy(F32,nTy))))), 17710 Close 17711 (Var("rotated",F32), 17712 MB(Call 17713 ("write'R",ATy(qTy,PTy(uTy,qTy)), 17714 TP[Bop(Add,Var("acc",F32), 17715 Call 17716 ("Extend",F32, 17717 TP[bVar"unsigned", 17718 EX(Var("rotated",F32),LN 15,LN 0, 17719 F16)])),Var("d",F4)]), 17720 Close 17721 (AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))))))))) 17722; 17723val dfn'SelectBytes_def = Def 17724 ("dfn'SelectBytes",TP[Var("d",F4),Var("n",F4),Var("m",F4)], 17725 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 17726 Close 17727 (Var("Rn",F32), 17728 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 17729 Close 17730 (Var("Rm",F32), 17731 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 17732 Close 17733 (Var("v",CTy"PSR"), 17734 MB(MB(MB(MU(Dest("GE",F4,Var("v",CTy"PSR")),qTy), 17735 Close 17736 (Var("v",F4), 17737 MU(Bop(Bit,Var("v",F4),LN 0),qTy))), 17738 Close 17739 (bVar"b", 17740 MU(ITE(bVar"b", 17741 EX(Var("Rn",F32),LN 7,LN 0,F8), 17742 EX(Var("Rm",F32),LN 7,LN 0,F8)),qTy))), 17743 Close 17744 (Var("r1",F8), 17745 MB(MR(Close 17746 (qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 17747 Close 17748 (Var("v",CTy"PSR"), 17749 MB(MB(MB(MU(Dest 17750 ("GE",F4,Var("v",CTy"PSR")), 17751 qTy), 17752 Close 17753 (Var("v",F4), 17754 MU(Bop(Bit,Var("v",F4),LN 1), 17755 qTy))), 17756 Close 17757 (bVar"b", 17758 MU(ITE(bVar"b", 17759 EX(Var("Rn",F32),LN 15, 17760 LN 8,F8), 17761 EX(Var("Rm",F32),LN 15, 17762 LN 8,F8)),qTy))), 17763 Close 17764 (Var("r2",F8), 17765 MB(MR(Close 17766 (qVar"s", 17767 Dest 17768 ("CPSR",CTy"PSR",qVar"s"))), 17769 Close 17770 (Var("v",CTy"PSR"), 17771 MB(MB(MB(MU(Dest 17772 ("GE",F4, 17773 Var("v", 17774 CTy"PSR")), 17775 qTy), 17776 Close 17777 (Var("v",F4), 17778 MU(Bop(Bit, 17779 Var("v",F4), 17780 LN 2),qTy))), 17781 Close 17782 (bVar"b", 17783 MU(ITE(bVar"b", 17784 EX(Var("Rn", 17785 F32), 17786 LN 23, 17787 LN 16,F8), 17788 EX(Var("Rm", 17789 F32), 17790 LN 23, 17791 LN 16,F8)), 17792 qTy))), 17793 Close 17794 (Var("r3",F8), 17795 MB(MR(Close 17796 (qVar"s", 17797 Dest 17798 ("CPSR", 17799 CTy"PSR", 17800 qVar"s"))), 17801 Close 17802 (Var("v",CTy"PSR"), 17803 MB(MB(MB(MU(Dest 17804 ("GE", 17805 F4, 17806 Var("v", 17807 CTy"PSR")), 17808 qTy), 17809 Close 17810 (Var("v", 17811 F4), 17812 MU(Bop(Bit, 17813 Var("v", 17814 F4), 17815 LN 17816 3), 17817 qTy))), 17818 Close 17819 (bVar"b", 17820 MU(ITE(bVar"b", 17821 EX(Var("Rn", 17822 F32), 17823 LN 17824 31, 17825 LN 17826 24, 17827 F8), 17828 EX(Var("Rm", 17829 F32), 17830 LN 17831 31, 17832 LN 17833 24, 17834 F8)), 17835 qTy))), 17836 Close 17837 (Var("r4",F8), 17838 MB(Call 17839 ("write'R", 17840 ATy(qTy, 17841 PTy(uTy, 17842 qTy)), 17843 TP[CC[Var("r4", 17844 F8), 17845 Var("r3", 17846 F8), 17847 Var("r2", 17848 F8), 17849 Var("r1", 17850 F8)], 17851 Var("d", 17852 F4)]), 17853 Close 17854 (AVar 17855 uTy, 17856 Call 17857 ("IncPC", 17858 ATy(qTy, 17859 PTy(uTy, 17860 qTy)), 17861 LU)))))))))))))))))))))))) 17862; 17863val dfn'ByteReverse_def = Def 17864 ("dfn'ByteReverse",TP[Var("d",F4),Var("m",F4)], 17865 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 17866 Close 17867 (Var("Rm",F32), 17868 MB(Call 17869 ("write'R",ATy(qTy,PTy(uTy,qTy)), 17870 TP[CC[EX(Var("Rm",F32),LN 7,LN 0,F8), 17871 EX(Var("Rm",F32),LN 15,LN 8,F8), 17872 EX(Var("Rm",F32),LN 23,LN 16,F8), 17873 EX(Var("Rm",F32),LN 31,LN 24,F8)],Var("d",F4)]), 17874 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))))) 17875; 17876val dfn'ByteReversePackedHalfword_def = Def 17877 ("dfn'ByteReversePackedHalfword",TP[Var("d",F4),Var("m",F4)], 17878 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 17879 Close 17880 (Var("Rm",F32), 17881 MB(Call 17882 ("write'R",ATy(qTy,PTy(uTy,qTy)), 17883 TP[CC[EX(Var("Rm",F32),LN 23,LN 16,F8), 17884 EX(Var("Rm",F32),LN 31,LN 24,F8), 17885 EX(Var("Rm",F32),LN 7,LN 0,F8), 17886 EX(Var("Rm",F32),LN 15,LN 8,F8)],Var("d",F4)]), 17887 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))))) 17888; 17889val dfn'ByteReverseSignedHalfword_def = Def 17890 ("dfn'ByteReverseSignedHalfword",TP[Var("d",F4),Var("m",F4)], 17891 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 17892 Close 17893 (Var("Rm",F32), 17894 MB(Call 17895 ("write'R",ATy(qTy,PTy(uTy,qTy)), 17896 TP[CC[Mop(SE(FTy 24),EX(Var("Rm",F32),LN 7,LN 0,F8)), 17897 EX(Var("Rm",F32),LN 15,LN 8,F8)],Var("d",F4)]), 17898 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))))) 17899; 17900val dfn'ReverseBits_def = Def 17901 ("dfn'ReverseBits",TP[Var("d",F4),Var("m",F4)], 17902 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 17903 Close 17904 (Var("v",F32), 17905 MB(MB(MB(MU(Mop(Rev,Var("v",F32)),qTy), 17906 Close(Var("v",F32),MU(TP[Var("v",F32),Var("d",F4)],qTy))), 17907 Close 17908 (Var("v",PTy(F32,F4)), 17909 Call 17910 ("write'R",ATy(qTy,PTy(uTy,qTy)),Var("v",PTy(F32,F4))))), 17911 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))))) 17912; 17913val dfn'BitFieldExtract_def = Def 17914 ("dfn'BitFieldExtract", 17915 TP[bVar"unsigned",Var("d",F4),Var("n",F4),nVar"lsbit",nVar"widthminus1"], 17916 Let(nVar"msbit",Bop(Add,nVar"lsbit",nVar"widthminus1"), 17917 MB(ITE(bVar"unsigned", 17918 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 17919 Close 17920 (Var("v",F32), 17921 MU(EX(Var("v",F32),nVar"msbit",nVar"lsbit",F32),qTy))), 17922 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 17923 Close 17924 (Var("v",F32), 17925 MB(MB(MU(EX(Var("v",F32),nVar"msbit",nVar"lsbit",F32), 17926 qTy), 17927 Close 17928 (Var("v",F32), 17929 MU(TP[Var("v",F32),nVar"widthminus1"],qTy))), 17930 Close 17931 (Var("v",PTy(F32,nTy)), 17932 MU(Call 17933 ("SignExtendFrom",F32,Var("v",PTy(F32,nTy))), 17934 qTy)))))), 17935 Close 17936 (Var("v",F32), 17937 MB(MB(MU(TP[Var("v",F32),Var("d",F4)],qTy), 17938 Close 17939 (Var("v",PTy(F32,F4)), 17940 Call 17941 ("write'R",ATy(qTy,PTy(uTy,qTy)), 17942 Var("v",PTy(F32,F4))))), 17943 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU))))))) 17944; 17945val dfn'BitFieldClearOrInsert_def = Def 17946 ("dfn'BitFieldClearOrInsert", 17947 TP[Var("d",F4),Var("n",F4),nVar"lsbit",nVar"msbit"], 17948 MB(ITE(EQ(Var("n",F4),LW(15,4)),MU(LW(0,32),qTy), 17949 Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4))), 17950 Close 17951 (Var("v",F32), 17952 MB(MU(Mop(Cast vTy,Var("v",F32)),qTy), 17953 Close 17954 (vVar"field", 17955 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("d",F4)), 17956 Close 17957 (Var("v",F32), 17958 MB(MU(Mop(Cast vTy,Var("v",F32)),qTy), 17959 Close 17960 (vVar"v", 17961 MN(vVar"v", 17962 MB(MR(Close 17963 (Var("s",PTy(vTy,qTy)), 17964 Mop(Fst,Var("s",PTy(vTy,qTy))))), 17965 Close 17966 (vVar"v", 17967 MB(MB(MU(BFI(nVar"msbit",nVar"lsbit", 17968 EX(vVar"field", 17969 Bop(Sub,nVar"msbit", 17970 nVar"lsbit"),LN 0, 17971 vTy),vVar"v"), 17972 PTy(vTy,qTy)), 17973 Close 17974 (vVar"v", 17975 MW(Close 17976 (Var("s",PTy(vTy,qTy)), 17977 TP[vVar"v", 17978 Mop(Snd, 17979 Var("s", 17980 PTy(vTy,qTy)))])))), 17981 Close 17982 (AVar uTy, 17983 MB(MR(Close 17984 (Var("s",PTy(vTy,qTy)), 17985 Mop(Fst, 17986 Var("s", 17987 PTy(vTy,qTy))))), 17988 Close 17989 (vVar"v", 17990 MB(MB(MB(MU(Mop(Cast F32, 17991 vVar"v"), 17992 PTy(vTy,qTy)), 17993 Close 17994 (Var("v",F32), 17995 MU(TP[Var("v", 17996 F32), 17997 Var("d", 17998 F4)], 17999 PTy(vTy,qTy)))), 18000 Close 18001 (Var("v", 18002 PTy(F32,F4)), 18003 MD(Call 18004 ("write'R", 18005 ATy(qTy, 18006 PTy(uTy, 18007 qTy)), 18008 Var("v", 18009 PTy(F32, 18010 F4))), 18011 vTy))), 18012 Close 18013 (AVar uTy, 18014 MD(Call 18015 ("IncPC", 18016 ATy(qTy, 18017 PTy(uTy, 18018 qTy)), 18019 LU),vTy))))))))))))))))))) 18020; 18021val dfn'LoadWord_def = Def 18022 ("dfn'LoadWord", 18023 TP[bVar"add",bVar"index",bVar"wback",Var("t",F4),Var("n",F4), 18024 Var("m",CTy"offset1")], 18025 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 18026 Close 18027 (bVar"b", 18028 ITE(bVar"b", 18029 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 18030 Close 18031 (Var("Rn",F32), 18032 MB(CS(Var("m",CTy"offset1"), 18033 [(Call 18034 ("register_form1",CTy"offset1", 18035 TP[Var("m",F4),Var("shift_t",CTy"SRType"), 18036 nVar"shift_n"]), 18037 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 18038 Close 18039 (Var("v",F32), 18040 MB(MB(MR(Close 18041 (qVar"s", 18042 Dest("CPSR",CTy"PSR",qVar"s"))), 18043 Close 18044 (Var("v0",CTy"PSR"), 18045 MB(MB(MB(MU(Dest 18046 ("C",bTy, 18047 Var("v0",CTy"PSR")), 18048 qTy), 18049 Close 18050 (bVar"v", 18051 MU(TP[nVar"shift_n", 18052 bVar"v"],qTy))), 18053 Close 18054 (Var("v",PTy(nTy,bTy)), 18055 MU(TP[Var("shift_t", 18056 CTy"SRType"), 18057 Var("v", 18058 PTy(nTy,bTy))], 18059 qTy))), 18060 Close 18061 (Var("v0", 18062 PTy(CTy"SRType", 18063 PTy(nTy,bTy))), 18064 MU(TP[Var("v",F32), 18065 Var("v0", 18066 PTy(CTy"SRType", 18067 PTy(nTy,bTy)))], 18068 qTy))))), 18069 Close 18070 (Var("v", 18071 PTy(F32, 18072 PTy(CTy"SRType", 18073 PTy(nTy,bTy)))), 18074 Call 18075 ("Shift",ATy(qTy,PTy(F32,qTy)), 18076 Var("v", 18077 PTy(F32, 18078 PTy(CTy"SRType", 18079 PTy(nTy,bTy)))))))))), 18080 (Call 18081 ("immediate_form1",CTy"offset1", 18082 Var("imm32",F32)),MU(Var("imm32",F32),qTy))]), 18083 Close 18084 (Var("offset",F32), 18085 Let(Var("offset_addr",F32), 18086 ITE(bVar"add", 18087 Bop(Add,Var("Rn",F32),Var("offset",F32)), 18088 Bop(Sub,Var("Rn",F32),Var("offset",F32))), 18089 Let(Var("address",F32), 18090 ITE(bVar"index",Var("offset_addr",F32), 18091 Var("Rn",F32)), 18092 MB(Call 18093 ("MemU",ATy(qTy,PTy(F32,qTy)), 18094 TP[Var("address",F32),LN 4]), 18095 Close 18096 (Var("data",F32), 18097 MB(MR(Close 18098 (qVar"s", 18099 Dest 18100 ("data_abort",bTy, 18101 qVar"s"))), 18102 Close 18103 (bVar"b", 18104 ITE(bVar"b", 18105 Call 18106 ("TakeDataAbortException", 18107 ATy(qTy,PTy(uTy,qTy)), 18108 LU), 18109 MB(ITE(bVar"wback", 18110 Call 18111 ("write'R", 18112 ATy(qTy, 18113 PTy(uTy,qTy)), 18114 TP[Var("offset_addr", 18115 F32), 18116 Var("n",F4)]), 18117 MU(LU,qTy)), 18118 Close 18119 (AVar uTy, 18120 ITE(EQ(Var("t",F4), 18121 LW(15,4)), 18122 ITE(Call 18123 ("Aligned", 18124 bTy, 18125 TP[Var("address", 18126 F32), 18127 LN 4]), 18128 Call 18129 ("LoadWritePC", 18130 ATy(qTy, 18131 PTy(uTy, 18132 qTy)), 18133 Var("data", 18134 F32)), 18135 Call 18136 ("raise'exception", 18137 ATy(qTy, 18138 PTy(uTy, 18139 qTy)), 18140 Call 18141 ("UNPREDICTABLE", 18142 CTy"exception", 18143 LS 18144 "Load"))), 18145 MB(Call 18146 ("UnalignedSupport", 18147 ATy(qTy, 18148 PTy(bTy, 18149 qTy)), 18150 LU), 18151 Close 18152 (bVar"v", 18153 MB(MB(MU(Bop(Or, 18154 bVar"v", 18155 Call 18156 ("Aligned", 18157 bTy, 18158 TP[Var("address", 18159 F32), 18160 LN 18161 4])), 18162 qTy), 18163 Close 18164 (bVar"b", 18165 ITE(bVar"b", 18166 Call 18167 ("write'R", 18168 ATy(qTy, 18169 PTy(uTy, 18170 qTy)), 18171 TP[Var("data", 18172 F32), 18173 Var("t", 18174 F4)]), 18175 MB(MR(Close 18176 (qVar"s", 18177 Dest 18178 ("Encoding", 18179 CTy"Encoding", 18180 qVar"s"))), 18181 Close 18182 (Var("v", 18183 CTy"Encoding"), 18184 MB(MU(EQ(Var("v", 18185 CTy"Encoding"), 18186 LC("Encoding_ARM", 18187 CTy"Encoding")), 18188 qTy), 18189 Close 18190 (bVar"b", 18191 ITE(bVar"b", 18192 MB(Call 18193 ("ROR", 18194 ATy(qTy, 18195 PTy(F32, 18196 qTy)), 18197 TP[Var("data", 18198 F32), 18199 Bop(Mul, 18200 LN 18201 8, 18202 Mop(Cast 18203 nTy, 18204 EX(Var("address", 18205 F32), 18206 LN 18207 1, 18208 LN 18209 0, 18210 FTy 2)))]), 18211 Close 18212 (Var("v", 18213 F32), 18214 MB(MU(TP[Var("v", 18215 F32), 18216 Var("t", 18217 F4)], 18218 qTy), 18219 Close 18220 (Var("v", 18221 PTy(F32, 18222 F4)), 18223 Call 18224 ("write'R", 18225 ATy(qTy, 18226 PTy(uTy, 18227 qTy)), 18228 Var("v", 18229 PTy(F32, 18230 F4))))))), 18231 MB(MW(Close 18232 (qVar"s", 18233 Rupd 18234 ("transfer_unknown", 18235 TP[qVar"s", 18236 LT]))), 18237 Close 18238 (AVar 18239 uTy, 18240 Call 18241 ("write'R", 18242 ATy(qTy, 18243 PTy(uTy, 18244 qTy)), 18245 TP[LX F32, 18246 Var("t", 18247 F4)]))))))))))), 18248 Close 18249 (AVar 18250 uTy, 18251 Call 18252 ("IncPC", 18253 ATy(qTy, 18254 PTy(uTy, 18255 qTy)), 18256 LU))))))))))))))))))), 18257 MU(LU,qTy))))) 18258; 18259val dfn'LoadLiteral_def = Def 18260 ("dfn'LoadLiteral",TP[bVar"add",Var("t",F4),Var("imm32",F32)], 18261 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),LW(15,4)), 18262 Close 18263 (bVar"b", 18264 ITE(bVar"b", 18265 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 18266 Close 18267 (Var("v",F32), 18268 MB(MB(MU(TP[Var("v",F32),LN 4],qTy), 18269 Close 18270 (Var("v",PTy(F32,nTy)), 18271 MU(Call("Align",F32,Var("v",PTy(F32,nTy))),qTy))), 18272 Close 18273 (Var("base",F32), 18274 Let(Var("address",F32), 18275 ITE(bVar"add", 18276 Bop(Add,Var("base",F32),Var("imm32",F32)), 18277 Bop(Sub,Var("base",F32),Var("imm32",F32))), 18278 MB(Call 18279 ("MemU",ATy(qTy,PTy(F32,qTy)), 18280 TP[Var("address",F32),LN 4]), 18281 Close 18282 (Var("data",F32), 18283 MB(MR(Close 18284 (qVar"s", 18285 Dest("data_abort",bTy,qVar"s"))), 18286 Close 18287 (bVar"b", 18288 ITB([(bVar"b", 18289 Call 18290 ("TakeDataAbortException", 18291 ATy(qTy,PTy(uTy,qTy)),LU)), 18292 (EQ(Var("t",F4),LW(15,4)), 18293 ITE(Call 18294 ("Aligned",bTy, 18295 TP[Var("address",F32), 18296 LN 4]), 18297 Call 18298 ("LoadWritePC", 18299 ATy(qTy,PTy(uTy,qTy)), 18300 Var("data",F32)), 18301 Call 18302 ("raise'exception", 18303 ATy(qTy,PTy(uTy,qTy)), 18304 Call 18305 ("UNPREDICTABLE", 18306 CTy"exception", 18307 LS"LoadLiteral"))))], 18308 MB(Call 18309 ("UnalignedSupport", 18310 ATy(qTy,PTy(bTy,qTy)), 18311 LU), 18312 Close 18313 (bVar"v", 18314 MB(MB(MU(Bop(Or, 18315 bVar"v", 18316 Call 18317 ("Aligned", 18318 bTy, 18319 TP[Var("address", 18320 F32), 18321 LN 4])), 18322 qTy), 18323 Close 18324 (bVar"b", 18325 ITE(bVar"b", 18326 Call 18327 ("write'R", 18328 ATy(qTy, 18329 PTy(uTy, 18330 qTy)), 18331 TP[Var("data", 18332 F32), 18333 Var("t", 18334 F4)]), 18335 MB(MR(Close 18336 (qVar"s", 18337 Dest 18338 ("Encoding", 18339 CTy"Encoding", 18340 qVar"s"))), 18341 Close 18342 (Var("v", 18343 CTy"Encoding"), 18344 MB(MU(EQ(Var("v", 18345 CTy"Encoding"), 18346 LC("Encoding_ARM", 18347 CTy"Encoding")), 18348 qTy), 18349 Close 18350 (bVar"b", 18351 ITE(bVar"b", 18352 MB(Call 18353 ("ROR", 18354 ATy(qTy, 18355 PTy(F32, 18356 qTy)), 18357 TP[Var("data", 18358 F32), 18359 Bop(Mul, 18360 LN 18361 8, 18362 Mop(Cast 18363 nTy, 18364 EX(Var("address", 18365 F32), 18366 LN 18367 1, 18368 LN 18369 0, 18370 FTy 2)))]), 18371 Close 18372 (Var("v", 18373 F32), 18374 MB(MU(TP[Var("v", 18375 F32), 18376 Var("t", 18377 F4)], 18378 qTy), 18379 Close 18380 (Var("v", 18381 PTy(F32, 18382 F4)), 18383 Call 18384 ("write'R", 18385 ATy(qTy, 18386 PTy(uTy, 18387 qTy)), 18388 Var("v", 18389 PTy(F32, 18390 F4))))))), 18391 MB(MW(Close 18392 (qVar"s", 18393 Rupd 18394 ("transfer_unknown", 18395 TP[qVar"s", 18396 LT]))), 18397 Close 18398 (AVar 18399 uTy, 18400 Call 18401 ("write'R", 18402 ATy(qTy, 18403 PTy(uTy, 18404 qTy)), 18405 TP[LX F32, 18406 Var("t", 18407 F4)]))))))))))), 18408 Close 18409 (AVar uTy, 18410 Call 18411 ("IncPC", 18412 ATy(qTy, 18413 PTy(uTy, 18414 qTy)), 18415 LU))))))))))))))), 18416 MU(LU,qTy))))) 18417; 18418val dfn'LoadUnprivileged_def = Def 18419 ("dfn'LoadUnprivileged", 18420 TP[bVar"add",bVar"postindex",Var("t",F4),Var("n",F4), 18421 Var("m",CTy"offset1")], 18422 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 18423 Close 18424 (bVar"b", 18425 ITE(bVar"b", 18426 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 18427 Close 18428 (Var("Rn",F32), 18429 MB(CS(Var("m",CTy"offset1"), 18430 [(Call 18431 ("register_form1",CTy"offset1", 18432 TP[Var("m",F4),Var("shift_t",CTy"SRType"), 18433 nVar"shift_n"]), 18434 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 18435 Close 18436 (Var("v",F32), 18437 MB(MB(MR(Close 18438 (qVar"s", 18439 Dest("CPSR",CTy"PSR",qVar"s"))), 18440 Close 18441 (Var("v0",CTy"PSR"), 18442 MB(MB(MB(MU(Dest 18443 ("C",bTy, 18444 Var("v0",CTy"PSR")), 18445 qTy), 18446 Close 18447 (bVar"v", 18448 MU(TP[nVar"shift_n", 18449 bVar"v"],qTy))), 18450 Close 18451 (Var("v",PTy(nTy,bTy)), 18452 MU(TP[Var("shift_t", 18453 CTy"SRType"), 18454 Var("v", 18455 PTy(nTy,bTy))], 18456 qTy))), 18457 Close 18458 (Var("v0", 18459 PTy(CTy"SRType", 18460 PTy(nTy,bTy))), 18461 MU(TP[Var("v",F32), 18462 Var("v0", 18463 PTy(CTy"SRType", 18464 PTy(nTy,bTy)))], 18465 qTy))))), 18466 Close 18467 (Var("v", 18468 PTy(F32, 18469 PTy(CTy"SRType", 18470 PTy(nTy,bTy)))), 18471 Call 18472 ("Shift",ATy(qTy,PTy(F32,qTy)), 18473 Var("v", 18474 PTy(F32, 18475 PTy(CTy"SRType", 18476 PTy(nTy,bTy)))))))))), 18477 (Call 18478 ("immediate_form1",CTy"offset1", 18479 Var("imm32",F32)),MU(Var("imm32",F32),qTy))]), 18480 Close 18481 (Var("offset",F32), 18482 Let(Var("offset_addr",F32), 18483 ITE(bVar"add", 18484 Bop(Add,Var("Rn",F32),Var("offset",F32)), 18485 Bop(Sub,Var("Rn",F32),Var("offset",F32))), 18486 Let(Var("address",F32), 18487 ITE(bVar"postindex",Var("Rn",F32), 18488 Var("offset_addr",F32)), 18489 MB(Call 18490 ("MemU_unpriv", 18491 ATy(qTy,PTy(F32,qTy)), 18492 TP[Var("address",F32),LN 4]), 18493 Close 18494 (Var("data",F32), 18495 MB(MR(Close 18496 (qVar"s", 18497 Dest 18498 ("data_abort",bTy, 18499 qVar"s"))), 18500 Close 18501 (bVar"b", 18502 ITE(bVar"b", 18503 Call 18504 ("TakeDataAbortException", 18505 ATy(qTy,PTy(uTy,qTy)), 18506 LU), 18507 MB(ITE(bVar"postindex", 18508 Call 18509 ("write'R", 18510 ATy(qTy, 18511 PTy(uTy,qTy)), 18512 TP[Var("offset_addr", 18513 F32), 18514 Var("n",F4)]), 18515 MU(LU,qTy)), 18516 Close 18517 (AVar uTy, 18518 MB(Call 18519 ("UnalignedSupport", 18520 ATy(qTy, 18521 PTy(bTy, 18522 qTy)), 18523 LU), 18524 Close 18525 (bVar"v", 18526 MB(MB(MU(Bop(Or, 18527 bVar"v", 18528 Call 18529 ("Aligned", 18530 bTy, 18531 TP[Var("address", 18532 F32), 18533 LN 18534 4])), 18535 qTy), 18536 Close 18537 (bVar"b", 18538 ITE(bVar"b", 18539 Call 18540 ("write'R", 18541 ATy(qTy, 18542 PTy(uTy, 18543 qTy)), 18544 TP[Var("data", 18545 F32), 18546 Var("t", 18547 F4)]), 18548 MB(MR(Close 18549 (qVar"s", 18550 Dest 18551 ("Encoding", 18552 CTy"Encoding", 18553 qVar"s"))), 18554 Close 18555 (Var("v", 18556 CTy"Encoding"), 18557 MB(MU(EQ(Var("v", 18558 CTy"Encoding"), 18559 LC("Encoding_ARM", 18560 CTy"Encoding")), 18561 qTy), 18562 Close 18563 (bVar"b", 18564 ITE(bVar"b", 18565 MB(Call 18566 ("ROR", 18567 ATy(qTy, 18568 PTy(F32, 18569 qTy)), 18570 TP[Var("data", 18571 F32), 18572 Bop(Mul, 18573 LN 18574 8, 18575 Mop(Cast 18576 nTy, 18577 EX(Var("address", 18578 F32), 18579 LN 18580 1, 18581 LN 18582 0, 18583 FTy 2)))]), 18584 Close 18585 (Var("v", 18586 F32), 18587 MB(MU(TP[Var("v", 18588 F32), 18589 Var("t", 18590 F4)], 18591 qTy), 18592 Close 18593 (Var("v", 18594 PTy(F32, 18595 F4)), 18596 Call 18597 ("write'R", 18598 ATy(qTy, 18599 PTy(uTy, 18600 qTy)), 18601 Var("v", 18602 PTy(F32, 18603 F4))))))), 18604 MB(MW(Close 18605 (qVar"s", 18606 Rupd 18607 ("transfer_unknown", 18608 TP[qVar"s", 18609 LT]))), 18610 Close 18611 (AVar 18612 uTy, 18613 Call 18614 ("write'R", 18615 ATy(qTy, 18616 PTy(uTy, 18617 qTy)), 18618 TP[LX F32, 18619 Var("t", 18620 F4)]))))))))))), 18621 Close 18622 (AVar 18623 uTy, 18624 Call 18625 ("IncPC", 18626 ATy(qTy, 18627 PTy(uTy, 18628 qTy)), 18629 LU)))))))))))))))))), 18630 MU(LU,qTy))))) 18631; 18632val dfn'LoadByte_def = Def 18633 ("dfn'LoadByte", 18634 TP[bVar"unsigned",bVar"add",bVar"index",bVar"wback",Var("t",F4), 18635 Var("n",F4),Var("m",CTy"offset1")], 18636 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 18637 Close 18638 (bVar"b", 18639 ITE(bVar"b", 18640 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 18641 Close 18642 (Var("Rn",F32), 18643 MB(CS(Var("m",CTy"offset1"), 18644 [(Call 18645 ("register_form1",CTy"offset1", 18646 TP[Var("m",F4),Var("shift_t",CTy"SRType"), 18647 nVar"shift_n"]), 18648 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 18649 Close 18650 (Var("v",F32), 18651 MB(MB(MR(Close 18652 (qVar"s", 18653 Dest("CPSR",CTy"PSR",qVar"s"))), 18654 Close 18655 (Var("v0",CTy"PSR"), 18656 MB(MB(MB(MU(Dest 18657 ("C",bTy, 18658 Var("v0",CTy"PSR")), 18659 qTy), 18660 Close 18661 (bVar"v", 18662 MU(TP[nVar"shift_n", 18663 bVar"v"],qTy))), 18664 Close 18665 (Var("v",PTy(nTy,bTy)), 18666 MU(TP[Var("shift_t", 18667 CTy"SRType"), 18668 Var("v", 18669 PTy(nTy,bTy))], 18670 qTy))), 18671 Close 18672 (Var("v0", 18673 PTy(CTy"SRType", 18674 PTy(nTy,bTy))), 18675 MU(TP[Var("v",F32), 18676 Var("v0", 18677 PTy(CTy"SRType", 18678 PTy(nTy,bTy)))], 18679 qTy))))), 18680 Close 18681 (Var("v", 18682 PTy(F32, 18683 PTy(CTy"SRType", 18684 PTy(nTy,bTy)))), 18685 Call 18686 ("Shift",ATy(qTy,PTy(F32,qTy)), 18687 Var("v", 18688 PTy(F32, 18689 PTy(CTy"SRType", 18690 PTy(nTy,bTy)))))))))), 18691 (Call 18692 ("immediate_form1",CTy"offset1", 18693 Var("imm32",F32)),MU(Var("imm32",F32),qTy))]), 18694 Close 18695 (Var("offset",F32), 18696 Let(Var("offset_addr",F32), 18697 ITE(bVar"add", 18698 Bop(Add,Var("Rn",F32),Var("offset",F32)), 18699 Bop(Sub,Var("Rn",F32),Var("offset",F32))), 18700 MB(Call 18701 ("MemU",ATy(qTy,PTy(F8,qTy)), 18702 TP[ITE(bVar"index", 18703 Var("offset_addr",F32), 18704 Var("Rn",F32)),LN 1]), 18705 Close 18706 (Var("data",F8), 18707 MB(MR(Close 18708 (qVar"s", 18709 Dest("data_abort",bTy,qVar"s"))), 18710 Close 18711 (bVar"b", 18712 ITE(bVar"b", 18713 Call 18714 ("TakeDataAbortException", 18715 ATy(qTy,PTy(uTy,qTy)),LU), 18716 MB(Call 18717 ("write'R", 18718 ATy(qTy,PTy(uTy,qTy)), 18719 TP[Call 18720 ("Extend",F32, 18721 TP[bVar"unsigned", 18722 Var("data",F8)]), 18723 Var("t",F4)]), 18724 Close 18725 (AVar uTy, 18726 MB(ITE(bVar"wback", 18727 Call 18728 ("write'R", 18729 ATy(qTy, 18730 PTy(uTy, 18731 qTy)), 18732 TP[Var("offset_addr", 18733 F32), 18734 Var("n",F4)]), 18735 MU(LU,qTy)), 18736 Close 18737 (AVar uTy, 18738 Call 18739 ("IncPC", 18740 ATy(qTy, 18741 PTy(uTy, 18742 qTy)), 18743 LU))))))))))))))), 18744 MU(LU,qTy))))) 18745; 18746val dfn'LoadByteLiteral_def = Def 18747 ("dfn'LoadByteLiteral", 18748 TP[bVar"unsigned",bVar"add",Var("t",F4),Var("imm32",F32)], 18749 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),LW(15,4)), 18750 Close 18751 (bVar"b", 18752 ITE(bVar"b", 18753 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 18754 Close 18755 (Var("v",F32), 18756 MB(MB(MU(TP[Var("v",F32),LN 4],qTy), 18757 Close 18758 (Var("v",PTy(F32,nTy)), 18759 MU(Call("Align",F32,Var("v",PTy(F32,nTy))),qTy))), 18760 Close 18761 (Var("base",F32), 18762 MB(Call 18763 ("MemU",ATy(qTy,PTy(F8,qTy)), 18764 TP[ITE(bVar"add", 18765 Bop(Add,Var("base",F32), 18766 Var("imm32",F32)), 18767 Bop(Sub,Var("base",F32), 18768 Var("imm32",F32))),LN 1]), 18769 Close 18770 (Var("data",F8), 18771 MB(MR(Close 18772 (qVar"s", 18773 Dest("data_abort",bTy,qVar"s"))), 18774 Close 18775 (bVar"b", 18776 ITE(bVar"b", 18777 Call 18778 ("TakeDataAbortException", 18779 ATy(qTy,PTy(uTy,qTy)),LU), 18780 MB(Call 18781 ("write'R", 18782 ATy(qTy,PTy(uTy,qTy)), 18783 TP[Call 18784 ("Extend",F32, 18785 TP[bVar"unsigned", 18786 Var("data",F8)]), 18787 Var("t",F4)]), 18788 Close 18789 (AVar uTy, 18790 Call 18791 ("IncPC", 18792 ATy(qTy,PTy(uTy,qTy)),LU)))))))))))), 18793 MU(LU,qTy))))) 18794; 18795val dfn'LoadByteUnprivileged_def = Def 18796 ("dfn'LoadByteUnprivileged", 18797 TP[bVar"add",bVar"postindex",Var("t",F4),Var("n",F4), 18798 Var("m",CTy"offset1")], 18799 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 18800 Close 18801 (bVar"b", 18802 ITE(bVar"b", 18803 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 18804 Close 18805 (Var("Rn",F32), 18806 MB(CS(Var("m",CTy"offset1"), 18807 [(Call 18808 ("register_form1",CTy"offset1", 18809 TP[Var("m",F4),Var("shift_t",CTy"SRType"), 18810 nVar"shift_n"]), 18811 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 18812 Close 18813 (Var("v",F32), 18814 MB(MB(MR(Close 18815 (qVar"s", 18816 Dest("CPSR",CTy"PSR",qVar"s"))), 18817 Close 18818 (Var("v0",CTy"PSR"), 18819 MB(MB(MB(MU(Dest 18820 ("C",bTy, 18821 Var("v0",CTy"PSR")), 18822 qTy), 18823 Close 18824 (bVar"v", 18825 MU(TP[nVar"shift_n", 18826 bVar"v"],qTy))), 18827 Close 18828 (Var("v",PTy(nTy,bTy)), 18829 MU(TP[Var("shift_t", 18830 CTy"SRType"), 18831 Var("v", 18832 PTy(nTy,bTy))], 18833 qTy))), 18834 Close 18835 (Var("v0", 18836 PTy(CTy"SRType", 18837 PTy(nTy,bTy))), 18838 MU(TP[Var("v",F32), 18839 Var("v0", 18840 PTy(CTy"SRType", 18841 PTy(nTy,bTy)))], 18842 qTy))))), 18843 Close 18844 (Var("v", 18845 PTy(F32, 18846 PTy(CTy"SRType", 18847 PTy(nTy,bTy)))), 18848 Call 18849 ("Shift",ATy(qTy,PTy(F32,qTy)), 18850 Var("v", 18851 PTy(F32, 18852 PTy(CTy"SRType", 18853 PTy(nTy,bTy)))))))))), 18854 (Call 18855 ("immediate_form1",CTy"offset1", 18856 Var("imm32",F32)),MU(Var("imm32",F32),qTy))]), 18857 Close 18858 (Var("offset",F32), 18859 Let(Var("offset_addr",F32), 18860 ITE(bVar"add", 18861 Bop(Add,Var("Rn",F32),Var("offset",F32)), 18862 Bop(Sub,Var("Rn",F32),Var("offset",F32))), 18863 MB(Call 18864 ("MemU_unpriv",ATy(qTy,PTy(F8,qTy)), 18865 TP[ITE(bVar"postindex",Var("Rn",F32), 18866 Var("offset_addr",F32)),LN 1]), 18867 Close 18868 (Var("data",F8), 18869 MB(MR(Close 18870 (qVar"s", 18871 Dest("data_abort",bTy,qVar"s"))), 18872 Close 18873 (bVar"b", 18874 ITE(bVar"b", 18875 Call 18876 ("TakeDataAbortException", 18877 ATy(qTy,PTy(uTy,qTy)),LU), 18878 MB(Call 18879 ("write'R", 18880 ATy(qTy,PTy(uTy,qTy)), 18881 TP[Mop(Cast F32, 18882 Var("data",F8)), 18883 Var("t",F4)]), 18884 Close 18885 (AVar uTy, 18886 MB(ITE(bVar"postindex", 18887 Call 18888 ("write'R", 18889 ATy(qTy, 18890 PTy(uTy, 18891 qTy)), 18892 TP[Var("offset_addr", 18893 F32), 18894 Var("n",F4)]), 18895 MU(LU,qTy)), 18896 Close 18897 (AVar uTy, 18898 Call 18899 ("IncPC", 18900 ATy(qTy, 18901 PTy(uTy, 18902 qTy)), 18903 LU))))))))))))))), 18904 MU(LU,qTy))))) 18905; 18906val dfn'LoadSignedByteUnprivileged_def = Def 18907 ("dfn'LoadSignedByteUnprivileged", 18908 TP[bVar"add",bVar"postindex",Var("t",F4),Var("n",F4), 18909 Var("m",CTy"offset2")], 18910 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 18911 Close 18912 (bVar"b", 18913 ITE(bVar"b", 18914 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 18915 Close 18916 (Var("Rn",F32), 18917 MB(CS(Var("m",CTy"offset2"), 18918 [(Call("register_form2",CTy"offset2",Var("m",F4)), 18919 Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4))), 18920 (Call 18921 ("immediate_form2",CTy"offset2", 18922 Var("imm32",F32)),MU(Var("imm32",F32),qTy))]), 18923 Close 18924 (Var("offset",F32), 18925 Let(Var("offset_addr",F32), 18926 ITE(bVar"add", 18927 Bop(Add,Var("Rn",F32),Var("offset",F32)), 18928 Bop(Sub,Var("Rn",F32),Var("offset",F32))), 18929 MB(Call 18930 ("MemU_unpriv",ATy(qTy,PTy(F8,qTy)), 18931 TP[ITE(bVar"postindex",Var("Rn",F32), 18932 Var("offset_addr",F32)),LN 1]), 18933 Close 18934 (Var("data",F8), 18935 MB(MR(Close 18936 (qVar"s", 18937 Dest("data_abort",bTy,qVar"s"))), 18938 Close 18939 (bVar"b", 18940 ITE(bVar"b", 18941 Call 18942 ("TakeDataAbortException", 18943 ATy(qTy,PTy(uTy,qTy)),LU), 18944 MB(Call 18945 ("write'R", 18946 ATy(qTy,PTy(uTy,qTy)), 18947 TP[Mop(SE F32, 18948 Var("data",F8)), 18949 Var("t",F4)]), 18950 Close 18951 (AVar uTy, 18952 MB(ITE(bVar"postindex", 18953 Call 18954 ("write'R", 18955 ATy(qTy, 18956 PTy(uTy, 18957 qTy)), 18958 TP[Var("offset_addr", 18959 F32), 18960 Var("n",F4)]), 18961 MU(LU,qTy)), 18962 Close 18963 (AVar uTy, 18964 Call 18965 ("IncPC", 18966 ATy(qTy, 18967 PTy(uTy, 18968 qTy)), 18969 LU))))))))))))))), 18970 MU(LU,qTy))))) 18971; 18972val dfn'LoadHalf_def = Def 18973 ("dfn'LoadHalf", 18974 TP[bVar"unsigned",bVar"add",bVar"index",bVar"wback",Var("t",F4), 18975 Var("n",F4),Var("m",CTy"offset1")], 18976 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 18977 Close 18978 (bVar"b", 18979 ITE(bVar"b", 18980 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 18981 Close 18982 (Var("Rn",F32), 18983 MB(CS(Var("m",CTy"offset1"), 18984 [(Call 18985 ("register_form1",CTy"offset1", 18986 TP[Var("m",F4),Var("shift_t",CTy"SRType"), 18987 nVar"shift_n"]), 18988 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 18989 Close 18990 (Var("v",F32), 18991 MB(MB(MR(Close 18992 (qVar"s", 18993 Dest("CPSR",CTy"PSR",qVar"s"))), 18994 Close 18995 (Var("v0",CTy"PSR"), 18996 MB(MB(MB(MU(Dest 18997 ("C",bTy, 18998 Var("v0",CTy"PSR")), 18999 qTy), 19000 Close 19001 (bVar"v", 19002 MU(TP[nVar"shift_n", 19003 bVar"v"],qTy))), 19004 Close 19005 (Var("v",PTy(nTy,bTy)), 19006 MU(TP[Var("shift_t", 19007 CTy"SRType"), 19008 Var("v", 19009 PTy(nTy,bTy))], 19010 qTy))), 19011 Close 19012 (Var("v0", 19013 PTy(CTy"SRType", 19014 PTy(nTy,bTy))), 19015 MU(TP[Var("v",F32), 19016 Var("v0", 19017 PTy(CTy"SRType", 19018 PTy(nTy,bTy)))], 19019 qTy))))), 19020 Close 19021 (Var("v", 19022 PTy(F32, 19023 PTy(CTy"SRType", 19024 PTy(nTy,bTy)))), 19025 Call 19026 ("Shift",ATy(qTy,PTy(F32,qTy)), 19027 Var("v", 19028 PTy(F32, 19029 PTy(CTy"SRType", 19030 PTy(nTy,bTy)))))))))), 19031 (Call 19032 ("immediate_form1",CTy"offset1", 19033 Var("imm32",F32)),MU(Var("imm32",F32),qTy))]), 19034 Close 19035 (Var("offset",F32), 19036 Let(Var("offset_addr",F32), 19037 ITE(bVar"add", 19038 Bop(Add,Var("Rn",F32),Var("offset",F32)), 19039 Bop(Sub,Var("Rn",F32),Var("offset",F32))), 19040 Let(Var("address",F32), 19041 ITE(bVar"index",Var("offset_addr",F32), 19042 Var("Rn",F32)), 19043 MB(Call 19044 ("MemU",ATy(qTy,PTy(F16,qTy)), 19045 TP[Var("address",F32),LN 2]), 19046 Close 19047 (Var("data",F16), 19048 MB(MR(Close 19049 (qVar"s", 19050 Dest 19051 ("data_abort",bTy, 19052 qVar"s"))), 19053 Close 19054 (bVar"b", 19055 ITE(bVar"b", 19056 Call 19057 ("TakeDataAbortException", 19058 ATy(qTy,PTy(uTy,qTy)), 19059 LU), 19060 MB(ITE(bVar"wback", 19061 Call 19062 ("write'R", 19063 ATy(qTy, 19064 PTy(uTy,qTy)), 19065 TP[Var("offset_addr", 19066 F32), 19067 Var("n",F4)]), 19068 MU(LU,qTy)), 19069 Close 19070 (AVar uTy, 19071 MB(Call 19072 ("UnalignedSupport", 19073 ATy(qTy, 19074 PTy(bTy, 19075 qTy)), 19076 LU), 19077 Close 19078 (bVar"v", 19079 MB(MB(MU(Bop(Or, 19080 bVar"v", 19081 Call 19082 ("Aligned", 19083 bTy, 19084 TP[Var("address", 19085 F32), 19086 LN 19087 2])), 19088 qTy), 19089 Close 19090 (bVar"b", 19091 ITE(bVar"b", 19092 Call 19093 ("write'R", 19094 ATy(qTy, 19095 PTy(uTy, 19096 qTy)), 19097 TP[Call 19098 ("Extend", 19099 F32, 19100 TP[bVar"unsigned", 19101 Var("data", 19102 F16)]), 19103 Var("t", 19104 F4)]), 19105 MB(MW(Close 19106 (qVar"s", 19107 Rupd 19108 ("transfer_unknown", 19109 TP[qVar"s", 19110 LT]))), 19111 Close 19112 (AVar 19113 uTy, 19114 Call 19115 ("write'R", 19116 ATy(qTy, 19117 PTy(uTy, 19118 qTy)), 19119 TP[LX F32, 19120 Var("t", 19121 F4)])))))), 19122 Close 19123 (AVar 19124 uTy, 19125 Call 19126 ("IncPC", 19127 ATy(qTy, 19128 PTy(uTy, 19129 qTy)), 19130 LU)))))))))))))))))), 19131 MU(LU,qTy))))) 19132; 19133val dfn'LoadHalfLiteral_def = Def 19134 ("dfn'LoadHalfLiteral", 19135 TP[bVar"unsigned",bVar"add",Var("t",F4),Var("imm32",F32)], 19136 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),LW(15,4)), 19137 Close 19138 (bVar"b", 19139 ITE(bVar"b", 19140 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 19141 Close 19142 (Var("v",F32), 19143 MB(MB(MU(TP[Var("v",F32),LN 4],qTy), 19144 Close 19145 (Var("v",PTy(F32,nTy)), 19146 MU(Call("Align",F32,Var("v",PTy(F32,nTy))),qTy))), 19147 Close 19148 (Var("base",F32), 19149 Let(Var("address",F32), 19150 ITE(bVar"add", 19151 Bop(Add,Var("base",F32),Var("imm32",F32)), 19152 Bop(Sub,Var("base",F32),Var("imm32",F32))), 19153 MB(Call 19154 ("MemU",ATy(qTy,PTy(F16,qTy)), 19155 TP[Var("address",F32),LN 2]), 19156 Close 19157 (Var("data",F16), 19158 MB(MR(Close 19159 (qVar"s", 19160 Dest("data_abort",bTy,qVar"s"))), 19161 Close 19162 (bVar"b", 19163 ITE(bVar"b", 19164 Call 19165 ("TakeDataAbortException", 19166 ATy(qTy,PTy(uTy,qTy)),LU), 19167 MB(Call 19168 ("UnalignedSupport", 19169 ATy(qTy,PTy(bTy,qTy)), 19170 LU), 19171 Close 19172 (bVar"v", 19173 MB(MB(MU(Bop(Or, 19174 bVar"v", 19175 Call 19176 ("Aligned", 19177 bTy, 19178 TP[Var("address", 19179 F32), 19180 LN 2])), 19181 qTy), 19182 Close 19183 (bVar"b", 19184 ITE(bVar"b", 19185 Call 19186 ("write'R", 19187 ATy(qTy, 19188 PTy(uTy, 19189 qTy)), 19190 TP[Call 19191 ("Extend", 19192 F32, 19193 TP[bVar"unsigned", 19194 Var("data", 19195 F16)]), 19196 Var("t", 19197 F4)]), 19198 MB(MW(Close 19199 (qVar"s", 19200 Rupd 19201 ("transfer_unknown", 19202 TP[qVar"s", 19203 LT]))), 19204 Close 19205 (AVar 19206 uTy, 19207 Call 19208 ("write'R", 19209 ATy(qTy, 19210 PTy(uTy, 19211 qTy)), 19212 TP[LX F32, 19213 Var("t", 19214 F4)])))))), 19215 Close 19216 (AVar uTy, 19217 Call 19218 ("IncPC", 19219 ATy(qTy, 19220 PTy(uTy, 19221 qTy)), 19222 LU))))))))))))))), 19223 MU(LU,qTy))))) 19224; 19225val dfn'LoadHalfUnprivileged_def = Def 19226 ("dfn'LoadHalfUnprivileged", 19227 TP[bVar"unsigned",bVar"add",bVar"postindex",Var("t",F4),Var("n",F4), 19228 Var("m",CTy"offset2")], 19229 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 19230 Close 19231 (bVar"b", 19232 ITE(bVar"b", 19233 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 19234 Close 19235 (Var("Rn",F32), 19236 MB(CS(Var("m",CTy"offset2"), 19237 [(Call("register_form2",CTy"offset2",Var("m",F4)), 19238 Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4))), 19239 (Call 19240 ("immediate_form2",CTy"offset2", 19241 Var("imm32",F32)),MU(Var("imm32",F32),qTy))]), 19242 Close 19243 (Var("offset",F32), 19244 Let(Var("offset_addr",F32), 19245 ITE(bVar"add", 19246 Bop(Add,Var("Rn",F32),Var("offset",F32)), 19247 Bop(Sub,Var("Rn",F32),Var("offset",F32))), 19248 Let(Var("address",F32), 19249 ITE(bVar"postindex",Var("Rn",F32), 19250 Var("offset_addr",F32)), 19251 MB(Call 19252 ("MemU_unpriv", 19253 ATy(qTy,PTy(F16,qTy)), 19254 TP[Var("address",F32),LN 2]), 19255 Close 19256 (Var("data",F16), 19257 MB(MR(Close 19258 (qVar"s", 19259 Dest 19260 ("data_abort",bTy, 19261 qVar"s"))), 19262 Close 19263 (bVar"b", 19264 ITE(bVar"b", 19265 Call 19266 ("TakeDataAbortException", 19267 ATy(qTy,PTy(uTy,qTy)), 19268 LU), 19269 MB(ITE(bVar"postindex", 19270 Call 19271 ("write'R", 19272 ATy(qTy, 19273 PTy(uTy,qTy)), 19274 TP[Var("offset_addr", 19275 F32), 19276 Var("n",F4)]), 19277 MU(LU,qTy)), 19278 Close 19279 (AVar uTy, 19280 MB(Call 19281 ("UnalignedSupport", 19282 ATy(qTy, 19283 PTy(bTy, 19284 qTy)), 19285 LU), 19286 Close 19287 (bVar"v", 19288 MB(MB(MU(Bop(Or, 19289 bVar"v", 19290 Call 19291 ("Aligned", 19292 bTy, 19293 TP[Var("address", 19294 F32), 19295 LN 19296 2])), 19297 qTy), 19298 Close 19299 (bVar"b", 19300 ITE(bVar"b", 19301 Call 19302 ("write'R", 19303 ATy(qTy, 19304 PTy(uTy, 19305 qTy)), 19306 TP[Call 19307 ("Extend", 19308 F32, 19309 TP[bVar"unsigned", 19310 Var("data", 19311 F16)]), 19312 Var("t", 19313 F4)]), 19314 MB(MW(Close 19315 (qVar"s", 19316 Rupd 19317 ("transfer_unknown", 19318 TP[qVar"s", 19319 LT]))), 19320 Close 19321 (AVar 19322 uTy, 19323 Call 19324 ("write'R", 19325 ATy(qTy, 19326 PTy(uTy, 19327 qTy)), 19328 TP[LX F32, 19329 Var("t", 19330 F4)])))))), 19331 Close 19332 (AVar 19333 uTy, 19334 Call 19335 ("IncPC", 19336 ATy(qTy, 19337 PTy(uTy, 19338 qTy)), 19339 LU)))))))))))))))))), 19340 MU(LU,qTy))))) 19341; 19342val dfn'LoadMultiple_def = Def 19343 ("dfn'LoadMultiple", 19344 TP[bVar"increment",bVar"index",bVar"wback",Var("n",F4), 19345 Var("registers",F16)], 19346 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 19347 Close 19348 (bVar"b", 19349 ITE(bVar"b", 19350 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 19351 Close 19352 (Var("Rn",F32), 19353 MB(Call 19354 ("BitCount",ATy(qTy,PTy(nTy,qTy)), 19355 Var("registers",F16)), 19356 Close 19357 (nVar"v", 19358 MB(MB(MU(Mop(Cast F32,nVar"v"),qTy), 19359 Close 19360 (Var("v",F32), 19361 MU(Bop(Mul,LW(4,32),Var("v",F32)),qTy))), 19362 Close 19363 (Var("length",F32), 19364 MN(ITE(bVar"increment",Var("Rn",F32), 19365 Bop(Sub,Var("Rn",F32), 19366 Var("length",F32))), 19367 MB(ITE(EQ(bVar"index",bVar"increment"), 19368 MB(MR(Close 19369 (Var("s",PTy(F32,qTy)), 19370 Mop(Fst, 19371 Var("s",PTy(F32,qTy))))), 19372 Close 19373 (Var("v",F32), 19374 MB(MU(Bop(Add,Var("v",F32), 19375 LW(4,32)), 19376 PTy(F32,qTy)), 19377 Close 19378 (Var("v",F32), 19379 MW(Close 19380 (Var("s", 19381 PTy(F32,qTy)), 19382 TP[Var("v",F32), 19383 Mop(Snd, 19384 Var("s", 19385 PTy(F32, 19386 qTy)))])))))), 19387 MU(LU,PTy(F32,qTy))), 19388 Close 19389 (AVar uTy, 19390 MB(MR(Close 19391 (Var("s",PTy(F32,qTy)), 19392 Dest 19393 ("REG", 19394 ATy(CTy"RName",F32), 19395 Mop(Snd, 19396 Var("s", 19397 PTy(F32,qTy)))))), 19398 Close 19399 (Var("oreg", 19400 ATy(CTy"RName",F32)), 19401 MB(For(TP[LN 0,LN 14, 19402 Close 19403 (nVar"i", 19404 ITE(Bop(Bit, 19405 Var("registers", 19406 F16), 19407 nVar"i"), 19408 MB(MB(MR(Close 19409 (Var("s", 19410 PTy(F32, 19411 qTy)), 19412 Mop(Fst, 19413 Var("s", 19414 PTy(F32, 19415 qTy))))), 19416 Close 19417 (Var("v", 19418 F32), 19419 MB(MB(MB(MU(TP[Var("v", 19420 F32), 19421 LN 19422 4], 19423 PTy(F32, 19424 qTy)), 19425 Close 19426 (Var("v", 19427 PTy(F32, 19428 nTy)), 19429 MD(Call 19430 ("MemA", 19431 ATy(qTy, 19432 PTy(F32, 19433 qTy)), 19434 Var("v", 19435 PTy(F32, 19436 nTy))), 19437 F32))), 19438 Close 19439 (Var("v", 19440 F32), 19441 MU(TP[Var("v", 19442 F32), 19443 Mop(Cast 19444 F4, 19445 nVar"i")], 19446 PTy(F32, 19447 qTy)))), 19448 Close 19449 (Var("v", 19450 PTy(F32, 19451 F4)), 19452 MD(Call 19453 ("write'R", 19454 ATy(qTy, 19455 PTy(uTy, 19456 qTy)), 19457 Var("v", 19458 PTy(F32, 19459 F4))), 19460 F32))))), 19461 Close 19462 (AVar 19463 uTy, 19464 MB(MR(Close 19465 (Var("s", 19466 PTy(F32, 19467 qTy)), 19468 Mop(Fst, 19469 Var("s", 19470 PTy(F32, 19471 qTy))))), 19472 Close 19473 (Var("v", 19474 F32), 19475 MB(MU(Bop(Add, 19476 Var("v", 19477 F32), 19478 LW(4, 19479 32)), 19480 PTy(F32, 19481 qTy)), 19482 Close 19483 (Var("v", 19484 F32), 19485 MW(Close 19486 (Var("s", 19487 PTy(F32, 19488 qTy)), 19489 TP[Var("v", 19490 F32), 19491 Mop(Snd, 19492 Var("s", 19493 PTy(F32, 19494 qTy)))])))))))), 19495 MU(LU, 19496 PTy(F32, 19497 qTy))))]), 19498 Close 19499 (AVar uTy, 19500 MB(MR(Close 19501 (Var("s", 19502 PTy(F32, 19503 qTy)), 19504 Dest 19505 ("data_abort", 19506 bTy, 19507 Mop(Snd, 19508 Var("s", 19509 PTy(F32, 19510 qTy)))))), 19511 Close 19512 (bVar"v", 19513 MB(ITB([(bVar"v", 19514 MB(MW(Close 19515 (Var("s", 19516 PTy(F32, 19517 qTy)), 19518 TP[Mop(Fst, 19519 Var("s", 19520 PTy(F32, 19521 qTy))), 19522 Rupd 19523 ("REG", 19524 TP[Mop(Snd, 19525 Var("s", 19526 PTy(F32, 19527 qTy))), 19528 Var("oreg", 19529 ATy(CTy"RName", 19530 F32))])])), 19531 Close 19532 (AVar 19533 uTy, 19534 MD(Call 19535 ("TakeDataAbortException", 19536 ATy(qTy, 19537 PTy(uTy, 19538 qTy)), 19539 LU), 19540 F32)))), 19541 (Bop(Bit, 19542 Var("registers", 19543 F16), 19544 LN 19545 15), 19546 MB(MR(Close 19547 (Var("s", 19548 PTy(F32, 19549 qTy)), 19550 Mop(Fst, 19551 Var("s", 19552 PTy(F32, 19553 qTy))))), 19554 Close 19555 (Var("v", 19556 F32), 19557 MB(MB(MU(TP[Var("v", 19558 F32), 19559 LN 19560 4], 19561 PTy(F32, 19562 qTy)), 19563 Close 19564 (Var("v", 19565 PTy(F32, 19566 nTy)), 19567 MD(Call 19568 ("MemA", 19569 ATy(qTy, 19570 PTy(F32, 19571 qTy)), 19572 Var("v", 19573 PTy(F32, 19574 nTy))), 19575 F32))), 19576 Close 19577 (Var("new_pc_value", 19578 F32), 19579 MB(MR(Close 19580 (Var("s", 19581 PTy(F32, 19582 qTy)), 19583 Dest 19584 ("data_abort", 19585 bTy, 19586 Mop(Snd, 19587 Var("s", 19588 PTy(F32, 19589 qTy)))))), 19590 Close 19591 (bVar"b", 19592 ITE(bVar"b", 19593 MB(MW(Close 19594 (Var("s", 19595 PTy(F32, 19596 qTy)), 19597 TP[Mop(Fst, 19598 Var("s", 19599 PTy(F32, 19600 qTy))), 19601 Rupd 19602 ("REG", 19603 TP[Mop(Snd, 19604 Var("s", 19605 PTy(F32, 19606 qTy))), 19607 Var("oreg", 19608 ATy(CTy"RName", 19609 F32))])])), 19610 Close 19611 (AVar 19612 uTy, 19613 MD(Call 19614 ("TakeDataAbortException", 19615 ATy(qTy, 19616 PTy(uTy, 19617 qTy)), 19618 LU), 19619 F32))), 19620 MD(Call 19621 ("LoadWritePC", 19622 ATy(qTy, 19623 PTy(uTy, 19624 qTy)), 19625 Var("new_pc_value", 19626 F32)), 19627 F32)))))))))], 19628 MD(Call 19629 ("IncPC", 19630 ATy(qTy, 19631 PTy(uTy, 19632 qTy)), 19633 LU), 19634 F32)), 19635 Close 19636 (AVar uTy, 19637 ITE(bVar"wback", 19638 ITE(Bop(Bit, 19639 Var("registers", 19640 F16), 19641 Mop(Cast 19642 nTy, 19643 Var("n", 19644 F4))), 19645 MB(MW(Close 19646 (Var("s", 19647 PTy(F32, 19648 qTy)), 19649 TP[Mop(Fst, 19650 Var("s", 19651 PTy(F32, 19652 qTy))), 19653 Rupd 19654 ("transfer_unknown", 19655 TP[Mop(Snd, 19656 Var("s", 19657 PTy(F32, 19658 qTy))), 19659 LT])])), 19660 Close 19661 (AVar 19662 uTy, 19663 MD(Call 19664 ("write'R", 19665 ATy(qTy, 19666 PTy(uTy, 19667 qTy)), 19668 TP[LX F32, 19669 Var("n", 19670 F4)]), 19671 F32))), 19672 MD(Call 19673 ("write'R", 19674 ATy(qTy, 19675 PTy(uTy, 19676 qTy)), 19677 TP[ITE(bVar"increment", 19678 Bop(Add, 19679 Var("Rn", 19680 F32), 19681 Var("length", 19682 F32)), 19683 Bop(Sub, 19684 Var("Rn", 19685 F32), 19686 Var("length", 19687 F32))), 19688 Var("n", 19689 F4)]), 19690 F32)), 19691 MU(LU, 19692 PTy(F32, 19693 qTy)))))))))))))))))))), 19694 MU(LU,qTy))))) 19695; 19696val dfn'LoadMultipleExceptionReturn_def = Def 19697 ("dfn'LoadMultipleExceptionReturn", 19698 TP[bVar"increment",bVar"wordhigher",bVar"wback",Var("n",F4), 19699 Var("registers",FTy 15)], 19700 MB(Call("CurrentModeIsHyp",ATy(qTy,PTy(bTy,qTy)),LU), 19701 Close 19702 (bVar"v", 19703 MB(ITE(bVar"v", 19704 Call("TakeUndefInstrException",ATy(qTy,PTy(uTy,qTy)),LU), 19705 MU(LU,qTy)), 19706 Close 19707 (AVar uTy, 19708 MB(Call 19709 ("CurrentModeIsUserOrSystem",ATy(qTy,PTy(bTy,qTy)),LU), 19710 Close 19711 (bVar"v", 19712 MB(ITE(bVar"v", 19713 Call 19714 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 19715 Call 19716 ("UNPREDICTABLE",CTy"exception", 19717 LS"LoadMultipleExceptionReturn")), 19718 MU(LU,qTy)), 19719 Close 19720 (AVar uTy, 19721 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 19722 Close 19723 (Var("Rn",F32), 19724 MB(Call 19725 ("BitCount",ATy(qTy,PTy(nTy,qTy)), 19726 Var("registers",FTy 15)), 19727 Close 19728 (nVar"v", 19729 MB(MB(MB(MU(Mop(Cast F32,nVar"v"), 19730 qTy), 19731 Close 19732 (Var("v",F32), 19733 MU(Bop(Mul,LW(4,32), 19734 Var("v",F32)), 19735 qTy))), 19736 Close 19737 (Var("v",F32), 19738 MU(Bop(Add,Var("v",F32), 19739 LW(4,32)),qTy))), 19740 Close 19741 (Var("length",F32), 19742 MN(ITE(bVar"increment", 19743 Var("Rn",F32), 19744 Bop(Sub,Var("Rn",F32), 19745 Var("length",F32))), 19746 MB(ITE(bVar"wordhigher", 19747 MB(MR(Close 19748 (Var("s", 19749 PTy(F32, 19750 qTy)), 19751 Mop(Fst, 19752 Var("s", 19753 PTy(F32, 19754 qTy))))), 19755 Close 19756 (Var("v",F32), 19757 MB(MU(Bop(Add, 19758 Var("v", 19759 F32), 19760 LW(4, 19761 32)), 19762 PTy(F32, 19763 qTy)), 19764 Close 19765 (Var("v", 19766 F32), 19767 MW(Close 19768 (Var("s", 19769 PTy(F32, 19770 qTy)), 19771 TP[Var("v", 19772 F32), 19773 Mop(Snd, 19774 Var("s", 19775 PTy(F32, 19776 qTy)))])))))), 19777 MU(LU,PTy(F32,qTy))), 19778 Close 19779 (AVar uTy, 19780 MB(MR(Close 19781 (Var("s", 19782 PTy(F32, 19783 qTy)), 19784 Dest 19785 ("REG", 19786 ATy(CTy"RName", 19787 F32), 19788 Mop(Snd, 19789 Var("s", 19790 PTy(F32, 19791 qTy)))))), 19792 Close 19793 (Var("oreg", 19794 ATy(CTy"RName", 19795 F32)), 19796 MB(For(TP[LN 0, 19797 LN 19798 14, 19799 Close 19800 (nVar"i", 19801 ITE(Bop(Bit, 19802 Var("registers", 19803 FTy 15), 19804 nVar"i"), 19805 MB(MB(MR(Close 19806 (Var("s", 19807 PTy(F32, 19808 qTy)), 19809 Mop(Fst, 19810 Var("s", 19811 PTy(F32, 19812 qTy))))), 19813 Close 19814 (Var("v", 19815 F32), 19816 MB(MB(MB(MU(TP[Var("v", 19817 F32), 19818 LN 19819 4], 19820 PTy(F32, 19821 qTy)), 19822 Close 19823 (Var("v", 19824 PTy(F32, 19825 nTy)), 19826 MD(Call 19827 ("MemA", 19828 ATy(qTy, 19829 PTy(F32, 19830 qTy)), 19831 Var("v", 19832 PTy(F32, 19833 nTy))), 19834 F32))), 19835 Close 19836 (Var("v", 19837 F32), 19838 MU(TP[Var("v", 19839 F32), 19840 Mop(Cast 19841 F4, 19842 nVar"i")], 19843 PTy(F32, 19844 qTy)))), 19845 Close 19846 (Var("v", 19847 PTy(F32, 19848 F4)), 19849 MD(Call 19850 ("write'R", 19851 ATy(qTy, 19852 PTy(uTy, 19853 qTy)), 19854 Var("v", 19855 PTy(F32, 19856 F4))), 19857 F32))))), 19858 Close 19859 (AVar 19860 uTy, 19861 MB(MR(Close 19862 (Var("s", 19863 PTy(F32, 19864 qTy)), 19865 Mop(Fst, 19866 Var("s", 19867 PTy(F32, 19868 qTy))))), 19869 Close 19870 (Var("v", 19871 F32), 19872 MB(MU(Bop(Add, 19873 Var("v", 19874 F32), 19875 LW(4, 19876 32)), 19877 PTy(F32, 19878 qTy)), 19879 Close 19880 (Var("v", 19881 F32), 19882 MW(Close 19883 (Var("s", 19884 PTy(F32, 19885 qTy)), 19886 TP[Var("v", 19887 F32), 19888 Mop(Snd, 19889 Var("s", 19890 PTy(F32, 19891 qTy)))])))))))), 19892 MU(LU, 19893 PTy(F32, 19894 qTy))))]), 19895 Close 19896 (AVar uTy, 19897 MB(MR(Close 19898 (Var("s", 19899 PTy(F32, 19900 qTy)), 19901 Mop(Fst, 19902 Var("s", 19903 PTy(F32, 19904 qTy))))), 19905 Close 19906 (Var("v", 19907 F32), 19908 MB(MB(MU(TP[Var("v", 19909 F32), 19910 LN 19911 4], 19912 PTy(F32, 19913 qTy)), 19914 Close 19915 (Var("v", 19916 PTy(F32, 19917 nTy)), 19918 MD(Call 19919 ("MemA", 19920 ATy(qTy, 19921 PTy(F32, 19922 qTy)), 19923 Var("v", 19924 PTy(F32, 19925 nTy))), 19926 F32))), 19927 Close 19928 (Var("new_pc_value", 19929 F32), 19930 MB(MR(Close 19931 (Var("s", 19932 PTy(F32, 19933 qTy)), 19934 Dest 19935 ("data_abort", 19936 bTy, 19937 Mop(Snd, 19938 Var("s", 19939 PTy(F32, 19940 qTy)))))), 19941 Close 19942 (bVar"b", 19943 ITE(bVar"b", 19944 MB(MW(Close 19945 (Var("s", 19946 PTy(F32, 19947 qTy)), 19948 TP[Mop(Fst, 19949 Var("s", 19950 PTy(F32, 19951 qTy))), 19952 Rupd 19953 ("REG", 19954 TP[Mop(Snd, 19955 Var("s", 19956 PTy(F32, 19957 qTy))), 19958 Var("oreg", 19959 ATy(CTy"RName", 19960 F32))])])), 19961 Close 19962 (AVar 19963 uTy, 19964 MD(Call 19965 ("TakeDataAbortException", 19966 ATy(qTy, 19967 PTy(uTy, 19968 qTy)), 19969 LU), 19970 F32))), 19971 MB(ITE(bVar"wback", 19972 ITE(Bop(Bit, 19973 Var("registers", 19974 FTy 15), 19975 Mop(Cast 19976 nTy, 19977 Var("n", 19978 F4))), 19979 MB(MW(Close 19980 (Var("s", 19981 PTy(F32, 19982 qTy)), 19983 TP[Mop(Fst, 19984 Var("s", 19985 PTy(F32, 19986 qTy))), 19987 Rupd 19988 ("transfer_unknown", 19989 TP[Mop(Snd, 19990 Var("s", 19991 PTy(F32, 19992 qTy))), 19993 LT])])), 19994 Close 19995 (AVar 19996 uTy, 19997 MD(Call 19998 ("write'R", 19999 ATy(qTy, 20000 PTy(uTy, 20001 qTy)), 20002 TP[LX F32, 20003 Var("n", 20004 F4)]), 20005 F32))), 20006 MD(Call 20007 ("write'R", 20008 ATy(qTy, 20009 PTy(uTy, 20010 qTy)), 20011 TP[ITE(bVar"increment", 20012 Bop(Add, 20013 Var("Rn", 20014 F32), 20015 Var("length", 20016 F32)), 20017 Bop(Sub, 20018 Var("Rn", 20019 F32), 20020 Var("length", 20021 F32))), 20022 Var("n", 20023 F4)]), 20024 F32)), 20025 MU(LU, 20026 PTy(F32, 20027 qTy))), 20028 Close 20029 (AVar 20030 uTy, 20031 MB(MD(Const 20032 ("SPSR", 20033 ATy(qTy, 20034 PTy(CTy"PSR", 20035 qTy))), 20036 F32), 20037 Close 20038 (Var("v", 20039 CTy"PSR"), 20040 MB(MB(MB(MU(Call 20041 ("reg'PSR", 20042 F32, 20043 Var("v", 20044 CTy"PSR")), 20045 PTy(F32, 20046 qTy)), 20047 Close 20048 (Var("v", 20049 F32), 20050 MU(TP[Var("v", 20051 F32), 20052 LW(15, 20053 4), 20054 LT], 20055 PTy(F32, 20056 qTy)))), 20057 Close 20058 (Var("v", 20059 PTy(F32, 20060 PTy(F4, 20061 bTy))), 20062 MD(Call 20063 ("CPSRWriteByInstr", 20064 ATy(qTy, 20065 PTy(uTy, 20066 qTy)), 20067 Var("v", 20068 PTy(F32, 20069 PTy(F4, 20070 bTy)))), 20071 F32))), 20072 Close 20073 (AVar 20074 uTy, 20075 MD(Call 20076 ("BranchWritePC", 20077 ATy(qTy, 20078 PTy(uTy, 20079 qTy)), 20080 Var("new_pc_value", 20081 F32)), 20082 F32)))))))))))))))))))))))))))))))))))) 20083; 20084val dfn'LoadMultipleUserRegisters_def = Def 20085 ("dfn'LoadMultipleUserRegisters", 20086 TP[bVar"increment",bVar"wordhigher",Var("n",F4),Var("registers",FTy 15)], 20087 MB(Call("CurrentModeIsHyp",ATy(qTy,PTy(bTy,qTy)),LU), 20088 Close 20089 (bVar"v", 20090 MB(ITE(bVar"v", 20091 Call("TakeUndefInstrException",ATy(qTy,PTy(uTy,qTy)),LU), 20092 MU(LU,qTy)), 20093 Close 20094 (AVar uTy, 20095 MB(Call 20096 ("CurrentModeIsUserOrSystem",ATy(qTy,PTy(bTy,qTy)),LU), 20097 Close 20098 (bVar"v", 20099 MB(ITE(bVar"v", 20100 Call 20101 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 20102 Call 20103 ("UNPREDICTABLE",CTy"exception", 20104 LS"LoadMultipleUserRegisters")), 20105 MU(LU,qTy)), 20106 Close 20107 (AVar uTy, 20108 MB(Call 20109 ("BitCount",ATy(qTy,PTy(nTy,qTy)), 20110 Var("registers",FTy 15)), 20111 Close 20112 (nVar"v", 20113 MB(MB(MU(Mop(Cast F32,nVar"v"),qTy), 20114 Close 20115 (Var("v",F32), 20116 MU(Bop(Mul,LW(4,32),Var("v",F32)), 20117 qTy))), 20118 Close 20119 (Var("length",F32), 20120 MB(ITE(bVar"increment", 20121 Call 20122 ("R", 20123 ATy(qTy,PTy(F32,qTy)), 20124 Var("n",F4)), 20125 MB(Call 20126 ("R", 20127 ATy(qTy,PTy(F32,qTy)), 20128 Var("n",F4)), 20129 Close 20130 (Var("v",F32), 20131 MU(Bop(Sub, 20132 Var("v",F32), 20133 Var("length", 20134 F32)),qTy)))), 20135 Close 20136 (Var("v",F32), 20137 MN(Var("v",F32), 20138 MB(ITE(bVar"wordhigher", 20139 MB(MR(Close 20140 (Var("s", 20141 PTy(F32, 20142 qTy)), 20143 Mop(Fst, 20144 Var("s", 20145 PTy(F32, 20146 qTy))))), 20147 Close 20148 (Var("v",F32), 20149 MB(MU(Bop(Add, 20150 Var("v", 20151 F32), 20152 LW(4, 20153 32)), 20154 PTy(F32, 20155 qTy)), 20156 Close 20157 (Var("v", 20158 F32), 20159 MW(Close 20160 (Var("s", 20161 PTy(F32, 20162 qTy)), 20163 TP[Var("v", 20164 F32), 20165 Mop(Snd, 20166 Var("s", 20167 PTy(F32, 20168 qTy)))])))))), 20169 MU(LU,PTy(F32,qTy))), 20170 Close 20171 (AVar uTy, 20172 MB(MR(Close 20173 (Var("s", 20174 PTy(F32, 20175 qTy)), 20176 Dest 20177 ("REG", 20178 ATy(CTy"RName", 20179 F32), 20180 Mop(Snd, 20181 Var("s", 20182 PTy(F32, 20183 qTy)))))), 20184 Close 20185 (Var("oreg", 20186 ATy(CTy"RName", 20187 F32)), 20188 MB(For(TP[LN 0, 20189 LN 20190 14, 20191 Close 20192 (nVar"i", 20193 ITE(Bop(Bit, 20194 Var("registers", 20195 FTy 15), 20196 nVar"i"), 20197 MB(MB(MR(Close 20198 (Var("s", 20199 PTy(F32, 20200 qTy)), 20201 Mop(Fst, 20202 Var("s", 20203 PTy(F32, 20204 qTy))))), 20205 Close 20206 (Var("v", 20207 F32), 20208 MB(MB(MB(MU(TP[Var("v", 20209 F32), 20210 LN 20211 4], 20212 PTy(F32, 20213 qTy)), 20214 Close 20215 (Var("v", 20216 PTy(F32, 20217 nTy)), 20218 MD(Call 20219 ("MemA", 20220 ATy(qTy, 20221 PTy(F32, 20222 qTy)), 20223 Var("v", 20224 PTy(F32, 20225 nTy))), 20226 F32))), 20227 Close 20228 (Var("v", 20229 F32), 20230 MU(TP[Var("v", 20231 F32), 20232 Mop(Cast 20233 F4, 20234 nVar"i"), 20235 LW(16, 20236 5)], 20237 PTy(F32, 20238 qTy)))), 20239 Close 20240 (Var("v", 20241 PTy(F32, 20242 PTy(F4, 20243 FTy 5))), 20244 MD(Call 20245 ("write'Rmode", 20246 ATy(qTy, 20247 PTy(uTy, 20248 qTy)), 20249 Var("v", 20250 PTy(F32, 20251 PTy(F4, 20252 FTy 5)))), 20253 F32))))), 20254 Close 20255 (AVar 20256 uTy, 20257 MB(MR(Close 20258 (Var("s", 20259 PTy(F32, 20260 qTy)), 20261 Mop(Fst, 20262 Var("s", 20263 PTy(F32, 20264 qTy))))), 20265 Close 20266 (Var("v", 20267 F32), 20268 MB(MU(Bop(Add, 20269 Var("v", 20270 F32), 20271 LW(4, 20272 32)), 20273 PTy(F32, 20274 qTy)), 20275 Close 20276 (Var("v", 20277 F32), 20278 MW(Close 20279 (Var("s", 20280 PTy(F32, 20281 qTy)), 20282 TP[Var("v", 20283 F32), 20284 Mop(Snd, 20285 Var("s", 20286 PTy(F32, 20287 qTy)))])))))))), 20288 MU(LU, 20289 PTy(F32, 20290 qTy))))]), 20291 Close 20292 (AVar uTy, 20293 MB(MR(Close 20294 (Var("s", 20295 PTy(F32, 20296 qTy)), 20297 Dest 20298 ("data_abort", 20299 bTy, 20300 Mop(Snd, 20301 Var("s", 20302 PTy(F32, 20303 qTy)))))), 20304 Close 20305 (bVar"b", 20306 ITE(bVar"b", 20307 MB(MW(Close 20308 (Var("s", 20309 PTy(F32, 20310 qTy)), 20311 TP[Mop(Fst, 20312 Var("s", 20313 PTy(F32, 20314 qTy))), 20315 Rupd 20316 ("REG", 20317 TP[Mop(Snd, 20318 Var("s", 20319 PTy(F32, 20320 qTy))), 20321 Var("oreg", 20322 ATy(CTy"RName", 20323 F32))])])), 20324 Close 20325 (AVar 20326 uTy, 20327 MD(Call 20328 ("TakeDataAbortException", 20329 ATy(qTy, 20330 PTy(uTy, 20331 qTy)), 20332 LU), 20333 F32))), 20334 MD(Call 20335 ("IncPC", 20336 ATy(qTy, 20337 PTy(uTy, 20338 qTy)), 20339 LU), 20340 F32)))))))))))))))))))))))))) 20341; 20342val dfn'LoadDual_def = Def 20343 ("dfn'LoadDual", 20344 TP[bVar"add",bVar"index",bVar"wback",Var("t",F4),Var("t2",F4), 20345 Var("n",F4),Var("m",CTy"offset2")], 20346 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 20347 Close 20348 (bVar"b", 20349 ITE(bVar"b", 20350 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 20351 Close 20352 (Var("Rn",F32), 20353 MB(CS(Var("m",CTy"offset2"), 20354 [(Call("register_form2",CTy"offset2",Var("m",F4)), 20355 Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4))), 20356 (Call 20357 ("immediate_form2",CTy"offset2", 20358 Var("imm32",F32)),MU(Var("imm32",F32),qTy))]), 20359 Close 20360 (Var("offset",F32), 20361 Let(Var("offset_addr",F32), 20362 ITE(bVar"add", 20363 Bop(Add,Var("Rn",F32),Var("offset",F32)), 20364 Bop(Sub,Var("Rn",F32),Var("offset",F32))), 20365 Let(Var("address",F32), 20366 ITE(bVar"index",Var("offset_addr",F32), 20367 Var("Rn",F32)), 20368 MB(Call 20369 ("MemA",ATy(qTy,PTy(F32,qTy)), 20370 TP[Var("address",F32),LN 4]), 20371 Close 20372 (Var("data1",F32), 20373 MB(Call 20374 ("MemA",ATy(qTy,PTy(F32,qTy)), 20375 TP[Bop(Add, 20376 Var("address",F32), 20377 LW(4,32)),LN 4]), 20378 Close 20379 (Var("data2",F32), 20380 MB(MR(Close 20381 (qVar"s", 20382 Dest 20383 ("data_abort",bTy, 20384 qVar"s"))), 20385 Close 20386 (bVar"b", 20387 ITE(bVar"b", 20388 Call 20389 ("TakeDataAbortException", 20390 ATy(qTy, 20391 PTy(uTy,qTy)), 20392 LU), 20393 MB(Call 20394 ("write'R", 20395 ATy(qTy, 20396 PTy(uTy, 20397 qTy)), 20398 TP[Var("data1", 20399 F32), 20400 Var("t",F4)]), 20401 Close 20402 (AVar uTy, 20403 MB(Call 20404 ("write'R", 20405 ATy(qTy, 20406 PTy(uTy, 20407 qTy)), 20408 TP[Var("data2", 20409 F32), 20410 Var("t2", 20411 F4)]), 20412 Close 20413 (AVar 20414 uTy, 20415 MB(ITE(bVar"wback", 20416 Call 20417 ("write'R", 20418 ATy(qTy, 20419 PTy(uTy, 20420 qTy)), 20421 TP[Var("offset_addr", 20422 F32), 20423 Var("n", 20424 F4)]), 20425 MU(LU, 20426 qTy)), 20427 Close 20428 (AVar 20429 uTy, 20430 Call 20431 ("IncPC", 20432 ATy(qTy, 20433 PTy(uTy, 20434 qTy)), 20435 LU)))))))))))))))))))), 20436 MU(LU,qTy))))) 20437; 20438val dfn'LoadDualLiteral_def = Def 20439 ("dfn'LoadDualLiteral", 20440 TP[bVar"add",Var("t",F4),Var("t2",F4),Var("imm32",F32)], 20441 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),LW(15,4)), 20442 Close 20443 (bVar"b", 20444 ITE(bVar"b", 20445 MB(ITE(bVar"add", 20446 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 20447 Close 20448 (Var("v",F32), 20449 MB(MB(MU(TP[Var("v",F32),LN 4],qTy), 20450 Close 20451 (Var("v",PTy(F32,nTy)), 20452 MU(Call 20453 ("Align",F32,Var("v",PTy(F32,nTy))), 20454 qTy))), 20455 Close 20456 (Var("v",F32), 20457 MU(Bop(Add,Var("v",F32),Var("imm32",F32)), 20458 qTy))))), 20459 MB(Const("PC",ATy(qTy,PTy(F32,qTy))), 20460 Close 20461 (Var("v",F32), 20462 MB(MB(MU(TP[Var("v",F32),LN 4],qTy), 20463 Close 20464 (Var("v",PTy(F32,nTy)), 20465 MU(Call 20466 ("Align",F32,Var("v",PTy(F32,nTy))), 20467 qTy))), 20468 Close 20469 (Var("v",F32), 20470 MU(Bop(Sub,Var("v",F32),Var("imm32",F32)), 20471 qTy)))))), 20472 Close 20473 (Var("address",F32), 20474 MB(Call 20475 ("MemA",ATy(qTy,PTy(F32,qTy)), 20476 TP[Var("address",F32),LN 4]), 20477 Close 20478 (Var("data1",F32), 20479 MB(Call 20480 ("MemA",ATy(qTy,PTy(F32,qTy)), 20481 TP[Bop(Add,Var("address",F32),LW(4,32)), 20482 LN 4]), 20483 Close 20484 (Var("data2",F32), 20485 MB(MR(Close 20486 (qVar"s", 20487 Dest("data_abort",bTy,qVar"s"))), 20488 Close 20489 (bVar"b", 20490 ITE(bVar"b", 20491 Call 20492 ("TakeDataAbortException", 20493 ATy(qTy,PTy(uTy,qTy)),LU), 20494 MB(Call 20495 ("write'R", 20496 ATy(qTy,PTy(uTy,qTy)), 20497 TP[Var("data1",F32), 20498 Var("t",F4)]), 20499 Close 20500 (AVar uTy, 20501 MB(Call 20502 ("write'R", 20503 ATy(qTy,PTy(uTy,qTy)), 20504 TP[Var("data2",F32), 20505 Var("t2",F4)]), 20506 Close 20507 (AVar uTy, 20508 Call 20509 ("IncPC", 20510 ATy(qTy, 20511 PTy(uTy,qTy)), 20512 LU)))))))))))))), 20513 MU(LU,qTy))))) 20514; 20515val dfn'LoadExclusive_def = Def 20516 ("dfn'LoadExclusive",TP[Var("t",F4),Var("n",F4),Var("imm32",F32)], 20517 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 20518 Close 20519 (bVar"b", 20520 ITE(bVar"b", 20521 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 20522 Close 20523 (Var("v",F32), 20524 MB(MU(Bop(Add,Var("v",F32),Var("imm32",F32)),qTy), 20525 Close 20526 (Var("address",F32), 20527 MB(MR(Close 20528 (qVar"s", 20529 Dest 20530 ("SetExclusiveMonitors", 20531 ATy(PTy(F32, 20532 PTy(nTy, 20533 PTy(LTy(STy F32), 20534 STy(PTy(F32,nTy))))), 20535 PTy(LTy(STy F32), 20536 STy(PTy(F32,nTy)))),qVar"s"))), 20537 Close 20538 (Var("v", 20539 ATy(PTy(F32, 20540 PTy(nTy, 20541 PTy(LTy(STy F32), 20542 STy(PTy(F32,nTy))))), 20543 PTy(LTy(STy F32),STy(PTy(F32,nTy))))), 20544 MB(MB(MB(MR(Close 20545 (qVar"s", 20546 Dest 20547 ("exclusive_state", 20548 PTy(LTy(STy F32), 20549 STy(PTy(F32,nTy))), 20550 qVar"s"))), 20551 Close 20552 (Var("v0", 20553 PTy(LTy(STy F32), 20554 STy(PTy(F32,nTy)))), 20555 MB(MB(MU(TP[LN 4, 20556 Var("v0", 20557 PTy(LTy(STy F32), 20558 STy(PTy(F32, 20559 nTy))))], 20560 qTy), 20561 Close 20562 (Var("v", 20563 PTy(nTy, 20564 PTy(LTy(STy F32), 20565 STy(PTy(F32, 20566 nTy))))), 20567 MU(TP[Var("address", 20568 F32), 20569 Var("v", 20570 PTy(nTy, 20571 PTy(LTy(STy F32), 20572 STy(PTy(F32, 20573 nTy)))))], 20574 qTy))), 20575 Close 20576 (Var("v0", 20577 PTy(F32, 20578 PTy(nTy, 20579 PTy(LTy(STy F32), 20580 STy(PTy(F32, 20581 nTy)))))), 20582 MU(Apply 20583 (Var("v", 20584 ATy(PTy(F32, 20585 PTy(nTy, 20586 PTy(LTy(STy F32), 20587 STy(PTy(F32, 20588 nTy))))), 20589 PTy(LTy(STy F32), 20590 STy(PTy(F32, 20591 nTy))))), 20592 Var("v0", 20593 PTy(F32, 20594 PTy(nTy, 20595 PTy(LTy(STy F32), 20596 STy(PTy(F32, 20597 nTy))))))), 20598 qTy))))), 20599 Close 20600 (Var("v", 20601 PTy(LTy(STy F32), 20602 STy(PTy(F32,nTy)))), 20603 MW(Close 20604 (qVar"s", 20605 Rupd 20606 ("exclusive_state", 20607 TP[qVar"s", 20608 Var("v", 20609 PTy(LTy(STy F32), 20610 STy(PTy(F32, 20611 nTy))))]))))), 20612 Close 20613 (AVar uTy, 20614 MB(Call 20615 ("MemA",ATy(qTy,PTy(F32,qTy)), 20616 TP[Var("address",F32),LN 4]), 20617 Close 20618 (Var("data",F32), 20619 MB(MR(Close 20620 (qVar"s", 20621 Dest 20622 ("data_abort",bTy, 20623 qVar"s"))), 20624 Close 20625 (bVar"b", 20626 ITE(bVar"b", 20627 Call 20628 ("TakeDataAbortException", 20629 ATy(qTy, 20630 PTy(uTy,qTy)), 20631 LU), 20632 MB(Call 20633 ("write'R", 20634 ATy(qTy, 20635 PTy(uTy,qTy)), 20636 TP[Var("data", 20637 F32), 20638 Var("t",F4)]), 20639 Close 20640 (AVar uTy, 20641 Call 20642 ("IncPC", 20643 ATy(qTy, 20644 PTy(uTy, 20645 qTy)), 20646 LU)))))))))))))))), 20647 MU(LU,qTy))))) 20648; 20649val dfn'LoadExclusiveByte_def = Def 20650 ("dfn'LoadExclusiveByte",TP[Var("t",F4),Var("n",F4)], 20651 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 20652 Close 20653 (bVar"b", 20654 ITE(bVar"b", 20655 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 20656 Close 20657 (Var("address",F32), 20658 MB(MR(Close 20659 (qVar"s", 20660 Dest 20661 ("SetExclusiveMonitors", 20662 ATy(PTy(F32, 20663 PTy(nTy, 20664 PTy(LTy(STy F32), 20665 STy(PTy(F32,nTy))))), 20666 PTy(LTy(STy F32),STy(PTy(F32,nTy)))), 20667 qVar"s"))), 20668 Close 20669 (Var("v", 20670 ATy(PTy(F32, 20671 PTy(nTy, 20672 PTy(LTy(STy F32), 20673 STy(PTy(F32,nTy))))), 20674 PTy(LTy(STy F32),STy(PTy(F32,nTy))))), 20675 MB(MB(MB(MR(Close 20676 (qVar"s", 20677 Dest 20678 ("exclusive_state", 20679 PTy(LTy(STy F32), 20680 STy(PTy(F32,nTy))),qVar"s"))), 20681 Close 20682 (Var("v0", 20683 PTy(LTy(STy F32), 20684 STy(PTy(F32,nTy)))), 20685 MB(MB(MU(TP[LN 1, 20686 Var("v0", 20687 PTy(LTy(STy F32), 20688 STy(PTy(F32,nTy))))], 20689 qTy), 20690 Close 20691 (Var("v", 20692 PTy(nTy, 20693 PTy(LTy(STy F32), 20694 STy(PTy(F32,nTy))))), 20695 MU(TP[Var("address",F32), 20696 Var("v", 20697 PTy(nTy, 20698 PTy(LTy(STy F32), 20699 STy(PTy(F32, 20700 nTy)))))], 20701 qTy))), 20702 Close 20703 (Var("v0", 20704 PTy(F32, 20705 PTy(nTy, 20706 PTy(LTy(STy F32), 20707 STy(PTy(F32,nTy)))))), 20708 MU(Apply 20709 (Var("v", 20710 ATy(PTy(F32, 20711 PTy(nTy, 20712 PTy(LTy(STy F32), 20713 STy(PTy(F32, 20714 nTy))))), 20715 PTy(LTy(STy F32), 20716 STy(PTy(F32, 20717 nTy))))), 20718 Var("v0", 20719 PTy(F32, 20720 PTy(nTy, 20721 PTy(LTy(STy F32), 20722 STy(PTy(F32, 20723 nTy))))))), 20724 qTy))))), 20725 Close 20726 (Var("v", 20727 PTy(LTy(STy F32),STy(PTy(F32,nTy)))), 20728 MW(Close 20729 (qVar"s", 20730 Rupd 20731 ("exclusive_state", 20732 TP[qVar"s", 20733 Var("v", 20734 PTy(LTy(STy F32), 20735 STy(PTy(F32,nTy))))]))))), 20736 Close 20737 (AVar uTy, 20738 MB(Call 20739 ("MemA",ATy(qTy,PTy(F8,qTy)), 20740 TP[Var("address",F32),LN 1]), 20741 Close 20742 (Var("data",F8), 20743 MB(MR(Close 20744 (qVar"s", 20745 Dest 20746 ("data_abort",bTy,qVar"s"))), 20747 Close 20748 (bVar"b", 20749 ITE(bVar"b", 20750 Call 20751 ("TakeDataAbortException", 20752 ATy(qTy,PTy(uTy,qTy)),LU), 20753 MB(Call 20754 ("write'R", 20755 ATy(qTy,PTy(uTy,qTy)), 20756 TP[Mop(Cast F32, 20757 Var("data",F8)), 20758 Var("t",F4)]), 20759 Close 20760 (AVar uTy, 20761 Call 20762 ("IncPC", 20763 ATy(qTy, 20764 PTy(uTy,qTy)), 20765 LU)))))))))))))), 20766 MU(LU,qTy))))) 20767; 20768val dfn'LoadExclusiveHalf_def = Def 20769 ("dfn'LoadExclusiveHalf",TP[Var("t",F4),Var("n",F4)], 20770 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 20771 Close 20772 (bVar"b", 20773 ITE(bVar"b", 20774 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 20775 Close 20776 (Var("address",F32), 20777 MB(MR(Close 20778 (qVar"s", 20779 Dest 20780 ("SetExclusiveMonitors", 20781 ATy(PTy(F32, 20782 PTy(nTy, 20783 PTy(LTy(STy F32), 20784 STy(PTy(F32,nTy))))), 20785 PTy(LTy(STy F32),STy(PTy(F32,nTy)))), 20786 qVar"s"))), 20787 Close 20788 (Var("v", 20789 ATy(PTy(F32, 20790 PTy(nTy, 20791 PTy(LTy(STy F32), 20792 STy(PTy(F32,nTy))))), 20793 PTy(LTy(STy F32),STy(PTy(F32,nTy))))), 20794 MB(MB(MB(MR(Close 20795 (qVar"s", 20796 Dest 20797 ("exclusive_state", 20798 PTy(LTy(STy F32), 20799 STy(PTy(F32,nTy))),qVar"s"))), 20800 Close 20801 (Var("v0", 20802 PTy(LTy(STy F32), 20803 STy(PTy(F32,nTy)))), 20804 MB(MB(MU(TP[LN 2, 20805 Var("v0", 20806 PTy(LTy(STy F32), 20807 STy(PTy(F32,nTy))))], 20808 qTy), 20809 Close 20810 (Var("v", 20811 PTy(nTy, 20812 PTy(LTy(STy F32), 20813 STy(PTy(F32,nTy))))), 20814 MU(TP[Var("address",F32), 20815 Var("v", 20816 PTy(nTy, 20817 PTy(LTy(STy F32), 20818 STy(PTy(F32, 20819 nTy)))))], 20820 qTy))), 20821 Close 20822 (Var("v0", 20823 PTy(F32, 20824 PTy(nTy, 20825 PTy(LTy(STy F32), 20826 STy(PTy(F32,nTy)))))), 20827 MU(Apply 20828 (Var("v", 20829 ATy(PTy(F32, 20830 PTy(nTy, 20831 PTy(LTy(STy F32), 20832 STy(PTy(F32, 20833 nTy))))), 20834 PTy(LTy(STy F32), 20835 STy(PTy(F32, 20836 nTy))))), 20837 Var("v0", 20838 PTy(F32, 20839 PTy(nTy, 20840 PTy(LTy(STy F32), 20841 STy(PTy(F32, 20842 nTy))))))), 20843 qTy))))), 20844 Close 20845 (Var("v", 20846 PTy(LTy(STy F32),STy(PTy(F32,nTy)))), 20847 MW(Close 20848 (qVar"s", 20849 Rupd 20850 ("exclusive_state", 20851 TP[qVar"s", 20852 Var("v", 20853 PTy(LTy(STy F32), 20854 STy(PTy(F32,nTy))))]))))), 20855 Close 20856 (AVar uTy, 20857 MB(Call 20858 ("MemA",ATy(qTy,PTy(F16,qTy)), 20859 TP[Var("address",F32),LN 2]), 20860 Close 20861 (Var("data",F16), 20862 MB(MR(Close 20863 (qVar"s", 20864 Dest 20865 ("data_abort",bTy,qVar"s"))), 20866 Close 20867 (bVar"b", 20868 ITE(bVar"b", 20869 Call 20870 ("TakeDataAbortException", 20871 ATy(qTy,PTy(uTy,qTy)),LU), 20872 MB(Call 20873 ("write'R", 20874 ATy(qTy,PTy(uTy,qTy)), 20875 TP[Mop(Cast F32, 20876 Var("data",F16)), 20877 Var("t",F4)]), 20878 Close 20879 (AVar uTy, 20880 Call 20881 ("IncPC", 20882 ATy(qTy, 20883 PTy(uTy,qTy)), 20884 LU)))))))))))))), 20885 MU(LU,qTy))))) 20886; 20887val dfn'LoadExclusiveDoubleword_def = Def 20888 ("dfn'LoadExclusiveDoubleword",TP[Var("t",F4),Var("t2",F4),Var("n",F4)], 20889 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 20890 Close 20891 (bVar"b", 20892 ITE(bVar"b", 20893 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 20894 Close 20895 (Var("address",F32), 20896 MB(MR(Close 20897 (qVar"s", 20898 Dest 20899 ("SetExclusiveMonitors", 20900 ATy(PTy(F32, 20901 PTy(nTy, 20902 PTy(LTy(STy F32), 20903 STy(PTy(F32,nTy))))), 20904 PTy(LTy(STy F32),STy(PTy(F32,nTy)))), 20905 qVar"s"))), 20906 Close 20907 (Var("v", 20908 ATy(PTy(F32, 20909 PTy(nTy, 20910 PTy(LTy(STy F32), 20911 STy(PTy(F32,nTy))))), 20912 PTy(LTy(STy F32),STy(PTy(F32,nTy))))), 20913 MB(MB(MB(MR(Close 20914 (qVar"s", 20915 Dest 20916 ("exclusive_state", 20917 PTy(LTy(STy F32), 20918 STy(PTy(F32,nTy))),qVar"s"))), 20919 Close 20920 (Var("v0", 20921 PTy(LTy(STy F32), 20922 STy(PTy(F32,nTy)))), 20923 MB(MB(MU(TP[LN 8, 20924 Var("v0", 20925 PTy(LTy(STy F32), 20926 STy(PTy(F32,nTy))))], 20927 qTy), 20928 Close 20929 (Var("v", 20930 PTy(nTy, 20931 PTy(LTy(STy F32), 20932 STy(PTy(F32,nTy))))), 20933 MU(TP[Var("address",F32), 20934 Var("v", 20935 PTy(nTy, 20936 PTy(LTy(STy F32), 20937 STy(PTy(F32, 20938 nTy)))))], 20939 qTy))), 20940 Close 20941 (Var("v0", 20942 PTy(F32, 20943 PTy(nTy, 20944 PTy(LTy(STy F32), 20945 STy(PTy(F32,nTy)))))), 20946 MU(Apply 20947 (Var("v", 20948 ATy(PTy(F32, 20949 PTy(nTy, 20950 PTy(LTy(STy F32), 20951 STy(PTy(F32, 20952 nTy))))), 20953 PTy(LTy(STy F32), 20954 STy(PTy(F32, 20955 nTy))))), 20956 Var("v0", 20957 PTy(F32, 20958 PTy(nTy, 20959 PTy(LTy(STy F32), 20960 STy(PTy(F32, 20961 nTy))))))), 20962 qTy))))), 20963 Close 20964 (Var("v", 20965 PTy(LTy(STy F32),STy(PTy(F32,nTy)))), 20966 MW(Close 20967 (qVar"s", 20968 Rupd 20969 ("exclusive_state", 20970 TP[qVar"s", 20971 Var("v", 20972 PTy(LTy(STy F32), 20973 STy(PTy(F32,nTy))))]))))), 20974 Close 20975 (AVar uTy, 20976 MB(Call 20977 ("MemA",ATy(qTy,PTy(F64,qTy)), 20978 TP[Var("address",F32),LN 8]), 20979 Close 20980 (Var("value",F64), 20981 MB(MR(Close 20982 (qVar"s", 20983 Dest 20984 ("data_abort",bTy,qVar"s"))), 20985 Close 20986 (bVar"b", 20987 ITE(bVar"b", 20988 Call 20989 ("TakeDataAbortException", 20990 ATy(qTy,PTy(uTy,qTy)),LU), 20991 MB(Call 20992 ("BigEndian", 20993 ATy(qTy,PTy(bTy,qTy)), 20994 LU), 20995 Close 20996 (bVar"v", 20997 MB(MB(MB(MU(ITE(bVar"v", 20998 EX(Var("value", 20999 F64), 21000 LN 21001 63, 21002 LN 21003 32, 21004 F32), 21005 EX(Var("value", 21006 F64), 21007 LN 21008 31, 21009 LN 21010 0, 21011 F32)), 21012 qTy), 21013 Close 21014 (Var("v", 21015 F32), 21016 MU(TP[Var("v", 21017 F32), 21018 Var("t", 21019 F4)], 21020 qTy))), 21021 Close 21022 (Var("v", 21023 PTy(F32, 21024 F4)), 21025 Call 21026 ("write'R", 21027 ATy(qTy, 21028 PTy(uTy, 21029 qTy)), 21030 Var("v", 21031 PTy(F32, 21032 F4))))), 21033 Close 21034 (AVar uTy, 21035 MB(Call 21036 ("BigEndian", 21037 ATy(qTy, 21038 PTy(bTy, 21039 qTy)), 21040 LU), 21041 Close 21042 (bVar"v", 21043 MB(MB(MB(MU(ITE(bVar"v", 21044 EX(Var("value", 21045 F64), 21046 LN 21047 31, 21048 LN 21049 0, 21050 F32), 21051 EX(Var("value", 21052 F64), 21053 LN 21054 63, 21055 LN 21056 32, 21057 F32)), 21058 qTy), 21059 Close 21060 (Var("v", 21061 F32), 21062 MU(TP[Var("v", 21063 F32), 21064 Var("t2", 21065 F4)], 21066 qTy))), 21067 Close 21068 (Var("v", 21069 PTy(F32, 21070 F4)), 21071 Call 21072 ("write'R", 21073 ATy(qTy, 21074 PTy(uTy, 21075 qTy)), 21076 Var("v", 21077 PTy(F32, 21078 F4))))), 21079 Close 21080 (AVar 21081 uTy, 21082 Call 21083 ("IncPC", 21084 ATy(qTy, 21085 PTy(uTy, 21086 qTy)), 21087 LU)))))))))))))))))))), 21088 MU(LU,qTy))))) 21089; 21090val dfn'StoreWord_def = Def 21091 ("dfn'StoreWord", 21092 TP[bVar"add",bVar"index",bVar"wback",Var("t",F4),Var("n",F4), 21093 Var("m",CTy"offset1")], 21094 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 21095 Close 21096 (bVar"b", 21097 ITE(bVar"b", 21098 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 21099 Close 21100 (Var("Rn",F32), 21101 MB(CS(Var("m",CTy"offset1"), 21102 [(Call 21103 ("register_form1",CTy"offset1", 21104 TP[Var("m",F4),Var("shift_t",CTy"SRType"), 21105 nVar"shift_n"]), 21106 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 21107 Close 21108 (Var("v",F32), 21109 MB(MB(MR(Close 21110 (qVar"s", 21111 Dest("CPSR",CTy"PSR",qVar"s"))), 21112 Close 21113 (Var("v0",CTy"PSR"), 21114 MB(MB(MB(MU(Dest 21115 ("C",bTy, 21116 Var("v0",CTy"PSR")), 21117 qTy), 21118 Close 21119 (bVar"v", 21120 MU(TP[nVar"shift_n", 21121 bVar"v"],qTy))), 21122 Close 21123 (Var("v",PTy(nTy,bTy)), 21124 MU(TP[Var("shift_t", 21125 CTy"SRType"), 21126 Var("v", 21127 PTy(nTy,bTy))], 21128 qTy))), 21129 Close 21130 (Var("v0", 21131 PTy(CTy"SRType", 21132 PTy(nTy,bTy))), 21133 MU(TP[Var("v",F32), 21134 Var("v0", 21135 PTy(CTy"SRType", 21136 PTy(nTy,bTy)))], 21137 qTy))))), 21138 Close 21139 (Var("v", 21140 PTy(F32, 21141 PTy(CTy"SRType", 21142 PTy(nTy,bTy)))), 21143 Call 21144 ("Shift",ATy(qTy,PTy(F32,qTy)), 21145 Var("v", 21146 PTy(F32, 21147 PTy(CTy"SRType", 21148 PTy(nTy,bTy)))))))))), 21149 (Call 21150 ("immediate_form1",CTy"offset1", 21151 Var("imm32",F32)),MU(Var("imm32",F32),qTy))]), 21152 Close 21153 (Var("offset",F32), 21154 Let(Var("offset_addr",F32), 21155 ITE(bVar"add", 21156 Bop(Add,Var("Rn",F32),Var("offset",F32)), 21157 Bop(Sub,Var("Rn",F32),Var("offset",F32))), 21158 Let(Var("address",F32), 21159 ITE(bVar"index",Var("offset_addr",F32), 21160 Var("Rn",F32)), 21161 MB(ITE(EQ(Var("t",F4),LW(15,4)), 21162 Call 21163 ("PCStoreValue", 21164 ATy(qTy,PTy(F32,qTy)),LU), 21165 Call 21166 ("R",ATy(qTy,PTy(F32,qTy)), 21167 Var("t",F4))), 21168 Close 21169 (Var("data",F32), 21170 MB(Call 21171 ("UnalignedSupport", 21172 ATy(qTy,PTy(bTy,qTy)),LU), 21173 Close 21174 (bVar"v", 21175 MB(MB(MB(MU(Bop(Or,bVar"v", 21176 Call 21177 ("Aligned", 21178 bTy, 21179 TP[Var("address", 21180 F32), 21181 LN 4])), 21182 qTy), 21183 Close 21184 (bVar"b", 21185 ITE(bVar"b", 21186 MU(LT,qTy), 21187 MB(Call 21188 ("CurrentInstrSet", 21189 ATy(qTy, 21190 PTy(CTy"InstrSet", 21191 qTy)), 21192 LU), 21193 Close 21194 (Var("v", 21195 CTy"InstrSet"), 21196 MU(EQ(Var("v", 21197 CTy"InstrSet"), 21198 LC("InstrSet_ARM", 21199 CTy"InstrSet")), 21200 qTy)))))), 21201 Close 21202 (bVar"b", 21203 ITE(bVar"b", 21204 Call 21205 ("write'MemU", 21206 ATy(qTy, 21207 PTy(uTy, 21208 qTy)), 21209 TP[Var("data", 21210 F32), 21211 Var("address", 21212 F32), 21213 LN 4]), 21214 MB(Call 21215 ("write'MemU", 21216 ATy(qTy, 21217 PTy(uTy, 21218 qTy)), 21219 TP[LX F32, 21220 Var("address", 21221 F32), 21222 LN 4]), 21223 Close 21224 (AVar uTy, 21225 MB(MR(Close 21226 (qVar"s", 21227 Dest 21228 ("data_abort", 21229 bTy, 21230 qVar"s"))), 21231 Close 21232 (bVar"v", 21233 MB(MU(Mop(Not, 21234 bVar"v"), 21235 qTy), 21236 Close 21237 (bVar"b", 21238 ITE(bVar"b", 21239 MW(Close 21240 (qVar"s", 21241 Rupd 21242 ("transfer_unknown", 21243 TP[qVar"s", 21244 LT]))), 21245 MU(LU, 21246 qTy))))))))))), 21247 Close 21248 (AVar uTy, 21249 MB(MR(Close 21250 (qVar"s", 21251 Dest 21252 ("data_abort", 21253 bTy,qVar"s"))), 21254 Close 21255 (bVar"b", 21256 ITE(bVar"b", 21257 Call 21258 ("TakeDataAbortException", 21259 ATy(qTy, 21260 PTy(uTy, 21261 qTy)), 21262 LU), 21263 MB(ITE(bVar"wback", 21264 Call 21265 ("write'R", 21266 ATy(qTy, 21267 PTy(uTy, 21268 qTy)), 21269 TP[Var("offset_addr", 21270 F32), 21271 Var("n", 21272 F4)]), 21273 MU(LU, 21274 qTy)), 21275 Close 21276 (AVar 21277 uTy, 21278 Call 21279 ("IncPC", 21280 ATy(qTy, 21281 PTy(uTy, 21282 qTy)), 21283 LU)))))))))))))))))), 21284 MU(LU,qTy))))) 21285; 21286val dfn'StoreUnprivileged_def = Def 21287 ("dfn'StoreUnprivileged", 21288 TP[bVar"add",bVar"postindex",Var("t",F4),Var("n",F4), 21289 Var("m",CTy"offset1")], 21290 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 21291 Close 21292 (bVar"b", 21293 ITE(bVar"b", 21294 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 21295 Close 21296 (Var("Rn",F32), 21297 MB(CS(Var("m",CTy"offset1"), 21298 [(Call 21299 ("register_form1",CTy"offset1", 21300 TP[Var("m",F4),Var("shift_t",CTy"SRType"), 21301 nVar"shift_n"]), 21302 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 21303 Close 21304 (Var("v",F32), 21305 MB(MB(MR(Close 21306 (qVar"s", 21307 Dest("CPSR",CTy"PSR",qVar"s"))), 21308 Close 21309 (Var("v0",CTy"PSR"), 21310 MB(MB(MB(MU(Dest 21311 ("C",bTy, 21312 Var("v0",CTy"PSR")), 21313 qTy), 21314 Close 21315 (bVar"v", 21316 MU(TP[nVar"shift_n", 21317 bVar"v"],qTy))), 21318 Close 21319 (Var("v",PTy(nTy,bTy)), 21320 MU(TP[Var("shift_t", 21321 CTy"SRType"), 21322 Var("v", 21323 PTy(nTy,bTy))], 21324 qTy))), 21325 Close 21326 (Var("v0", 21327 PTy(CTy"SRType", 21328 PTy(nTy,bTy))), 21329 MU(TP[Var("v",F32), 21330 Var("v0", 21331 PTy(CTy"SRType", 21332 PTy(nTy,bTy)))], 21333 qTy))))), 21334 Close 21335 (Var("v", 21336 PTy(F32, 21337 PTy(CTy"SRType", 21338 PTy(nTy,bTy)))), 21339 Call 21340 ("Shift",ATy(qTy,PTy(F32,qTy)), 21341 Var("v", 21342 PTy(F32, 21343 PTy(CTy"SRType", 21344 PTy(nTy,bTy)))))))))), 21345 (Call 21346 ("immediate_form1",CTy"offset1", 21347 Var("imm32",F32)),MU(Var("imm32",F32),qTy))]), 21348 Close 21349 (Var("offset",F32), 21350 Let(Var("offset_addr",F32), 21351 ITE(bVar"add", 21352 Bop(Add,Var("Rn",F32),Var("offset",F32)), 21353 Bop(Sub,Var("Rn",F32),Var("offset",F32))), 21354 Let(Var("address",F32), 21355 ITE(bVar"postindex",Var("Rn",F32), 21356 Var("offset_addr",F32)), 21357 MB(ITE(EQ(Var("t",F4),LW(15,4)), 21358 Call 21359 ("PCStoreValue", 21360 ATy(qTy,PTy(F32,qTy)),LU), 21361 Call 21362 ("R",ATy(qTy,PTy(F32,qTy)), 21363 Var("t",F4))), 21364 Close 21365 (Var("data",F32), 21366 MB(Call 21367 ("UnalignedSupport", 21368 ATy(qTy,PTy(bTy,qTy)),LU), 21369 Close 21370 (bVar"v", 21371 MB(MB(MB(MU(Bop(Or,bVar"v", 21372 Call 21373 ("Aligned", 21374 bTy, 21375 TP[Var("address", 21376 F32), 21377 LN 4])), 21378 qTy), 21379 Close 21380 (bVar"b", 21381 ITE(bVar"b", 21382 MU(LT,qTy), 21383 MB(Call 21384 ("CurrentInstrSet", 21385 ATy(qTy, 21386 PTy(CTy"InstrSet", 21387 qTy)), 21388 LU), 21389 Close 21390 (Var("v", 21391 CTy"InstrSet"), 21392 MU(EQ(Var("v", 21393 CTy"InstrSet"), 21394 LC("InstrSet_ARM", 21395 CTy"InstrSet")), 21396 qTy)))))), 21397 Close 21398 (bVar"b", 21399 ITE(bVar"b", 21400 Call 21401 ("write'MemU_unpriv", 21402 ATy(qTy, 21403 PTy(uTy, 21404 qTy)), 21405 TP[Var("data", 21406 F32), 21407 Var("address", 21408 F32), 21409 LN 4]), 21410 MB(Call 21411 ("write'MemU_unpriv", 21412 ATy(qTy, 21413 PTy(uTy, 21414 qTy)), 21415 TP[LX F32, 21416 Var("address", 21417 F32), 21418 LN 4]), 21419 Close 21420 (AVar uTy, 21421 MB(MR(Close 21422 (qVar"s", 21423 Dest 21424 ("data_abort", 21425 bTy, 21426 qVar"s"))), 21427 Close 21428 (bVar"v", 21429 MB(MU(Mop(Not, 21430 bVar"v"), 21431 qTy), 21432 Close 21433 (bVar"b", 21434 ITE(bVar"b", 21435 MW(Close 21436 (qVar"s", 21437 Rupd 21438 ("transfer_unknown", 21439 TP[qVar"s", 21440 LT]))), 21441 MU(LU, 21442 qTy))))))))))), 21443 Close 21444 (AVar uTy, 21445 MB(MR(Close 21446 (qVar"s", 21447 Dest 21448 ("data_abort", 21449 bTy,qVar"s"))), 21450 Close 21451 (bVar"b", 21452 ITE(bVar"b", 21453 Call 21454 ("TakeDataAbortException", 21455 ATy(qTy, 21456 PTy(uTy, 21457 qTy)), 21458 LU), 21459 MB(ITE(bVar"postindex", 21460 Call 21461 ("write'R", 21462 ATy(qTy, 21463 PTy(uTy, 21464 qTy)), 21465 TP[Var("offset_addr", 21466 F32), 21467 Var("n", 21468 F4)]), 21469 MU(LU, 21470 qTy)), 21471 Close 21472 (AVar 21473 uTy, 21474 Call 21475 ("IncPC", 21476 ATy(qTy, 21477 PTy(uTy, 21478 qTy)), 21479 LU)))))))))))))))))), 21480 MU(LU,qTy))))) 21481; 21482val dfn'StoreByte_def = Def 21483 ("dfn'StoreByte", 21484 TP[bVar"add",bVar"index",bVar"wback",Var("t",F4),Var("n",F4), 21485 Var("m",CTy"offset1")], 21486 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 21487 Close 21488 (bVar"b", 21489 ITE(bVar"b", 21490 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 21491 Close 21492 (Var("Rn",F32), 21493 MB(CS(Var("m",CTy"offset1"), 21494 [(Call 21495 ("register_form1",CTy"offset1", 21496 TP[Var("m",F4),Var("shift_t",CTy"SRType"), 21497 nVar"shift_n"]), 21498 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 21499 Close 21500 (Var("v",F32), 21501 MB(MB(MR(Close 21502 (qVar"s", 21503 Dest("CPSR",CTy"PSR",qVar"s"))), 21504 Close 21505 (Var("v0",CTy"PSR"), 21506 MB(MB(MB(MU(Dest 21507 ("C",bTy, 21508 Var("v0",CTy"PSR")), 21509 qTy), 21510 Close 21511 (bVar"v", 21512 MU(TP[nVar"shift_n", 21513 bVar"v"],qTy))), 21514 Close 21515 (Var("v",PTy(nTy,bTy)), 21516 MU(TP[Var("shift_t", 21517 CTy"SRType"), 21518 Var("v", 21519 PTy(nTy,bTy))], 21520 qTy))), 21521 Close 21522 (Var("v0", 21523 PTy(CTy"SRType", 21524 PTy(nTy,bTy))), 21525 MU(TP[Var("v",F32), 21526 Var("v0", 21527 PTy(CTy"SRType", 21528 PTy(nTy,bTy)))], 21529 qTy))))), 21530 Close 21531 (Var("v", 21532 PTy(F32, 21533 PTy(CTy"SRType", 21534 PTy(nTy,bTy)))), 21535 Call 21536 ("Shift",ATy(qTy,PTy(F32,qTy)), 21537 Var("v", 21538 PTy(F32, 21539 PTy(CTy"SRType", 21540 PTy(nTy,bTy)))))))))), 21541 (Call 21542 ("immediate_form1",CTy"offset1", 21543 Var("imm32",F32)),MU(Var("imm32",F32),qTy))]), 21544 Close 21545 (Var("offset",F32), 21546 Let(Var("offset_addr",F32), 21547 ITE(bVar"add", 21548 Bop(Add,Var("Rn",F32),Var("offset",F32)), 21549 Bop(Sub,Var("Rn",F32),Var("offset",F32))), 21550 MB(MB(Call 21551 ("R",ATy(qTy,PTy(F32,qTy)), 21552 Var("t",F4)), 21553 Close 21554 (Var("v",F32), 21555 MB(MB(MU(EX(Var("v",F32),LN 7,LN 0, 21556 F8),qTy), 21557 Close 21558 (Var("v",F8), 21559 MU(TP[Var("v",F8), 21560 ITE(bVar"index", 21561 Var("offset_addr", 21562 F32), 21563 Var("Rn",F32)), 21564 LN 1],qTy))), 21565 Close 21566 (Var("v",PTy(F8,PTy(F32,nTy))), 21567 Call 21568 ("write'MemU", 21569 ATy(qTy,PTy(uTy,qTy)), 21570 Var("v", 21571 PTy(F8,PTy(F32,nTy)))))))), 21572 Close 21573 (AVar uTy, 21574 MB(MR(Close 21575 (qVar"s", 21576 Dest("data_abort",bTy,qVar"s"))), 21577 Close 21578 (bVar"b", 21579 ITE(bVar"b", 21580 Call 21581 ("TakeDataAbortException", 21582 ATy(qTy,PTy(uTy,qTy)),LU), 21583 MB(ITE(bVar"wback", 21584 Call 21585 ("write'R", 21586 ATy(qTy, 21587 PTy(uTy,qTy)), 21588 TP[Var("offset_addr", 21589 F32), 21590 Var("n",F4)]), 21591 MU(LU,qTy)), 21592 Close 21593 (AVar uTy, 21594 Call 21595 ("IncPC", 21596 ATy(qTy,PTy(uTy,qTy)), 21597 LU))))))))))))), 21598 MU(LU,qTy))))) 21599; 21600val dfn'StoreByteUnprivileged_def = Def 21601 ("dfn'StoreByteUnprivileged", 21602 TP[bVar"add",bVar"postindex",Var("t",F4),Var("n",F4), 21603 Var("m",CTy"offset1")], 21604 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 21605 Close 21606 (bVar"b", 21607 ITE(bVar"b", 21608 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 21609 Close 21610 (Var("Rn",F32), 21611 MB(CS(Var("m",CTy"offset1"), 21612 [(Call 21613 ("register_form1",CTy"offset1", 21614 TP[Var("m",F4),Var("shift_t",CTy"SRType"), 21615 nVar"shift_n"]), 21616 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 21617 Close 21618 (Var("v",F32), 21619 MB(MB(MR(Close 21620 (qVar"s", 21621 Dest("CPSR",CTy"PSR",qVar"s"))), 21622 Close 21623 (Var("v0",CTy"PSR"), 21624 MB(MB(MB(MU(Dest 21625 ("C",bTy, 21626 Var("v0",CTy"PSR")), 21627 qTy), 21628 Close 21629 (bVar"v", 21630 MU(TP[nVar"shift_n", 21631 bVar"v"],qTy))), 21632 Close 21633 (Var("v",PTy(nTy,bTy)), 21634 MU(TP[Var("shift_t", 21635 CTy"SRType"), 21636 Var("v", 21637 PTy(nTy,bTy))], 21638 qTy))), 21639 Close 21640 (Var("v0", 21641 PTy(CTy"SRType", 21642 PTy(nTy,bTy))), 21643 MU(TP[Var("v",F32), 21644 Var("v0", 21645 PTy(CTy"SRType", 21646 PTy(nTy,bTy)))], 21647 qTy))))), 21648 Close 21649 (Var("v", 21650 PTy(F32, 21651 PTy(CTy"SRType", 21652 PTy(nTy,bTy)))), 21653 Call 21654 ("Shift",ATy(qTy,PTy(F32,qTy)), 21655 Var("v", 21656 PTy(F32, 21657 PTy(CTy"SRType", 21658 PTy(nTy,bTy)))))))))), 21659 (Call 21660 ("immediate_form1",CTy"offset1", 21661 Var("imm32",F32)),MU(Var("imm32",F32),qTy))]), 21662 Close 21663 (Var("offset",F32), 21664 Let(Var("offset_addr",F32), 21665 ITE(bVar"add", 21666 Bop(Add,Var("Rn",F32),Var("offset",F32)), 21667 Bop(Sub,Var("Rn",F32),Var("offset",F32))), 21668 MB(MB(Call 21669 ("R",ATy(qTy,PTy(F32,qTy)), 21670 Var("t",F4)), 21671 Close 21672 (Var("v",F32), 21673 MB(MB(MU(EX(Var("v",F32),LN 7,LN 0, 21674 F8),qTy), 21675 Close 21676 (Var("v",F8), 21677 MU(TP[Var("v",F8), 21678 ITE(bVar"postindex", 21679 Var("Rn",F32), 21680 Var("offset_addr", 21681 F32)),LN 1], 21682 qTy))), 21683 Close 21684 (Var("v",PTy(F8,PTy(F32,nTy))), 21685 Call 21686 ("write'MemU_unpriv", 21687 ATy(qTy,PTy(uTy,qTy)), 21688 Var("v", 21689 PTy(F8,PTy(F32,nTy)))))))), 21690 Close 21691 (AVar uTy, 21692 MB(MR(Close 21693 (qVar"s", 21694 Dest("data_abort",bTy,qVar"s"))), 21695 Close 21696 (bVar"b", 21697 ITE(bVar"b", 21698 Call 21699 ("TakeDataAbortException", 21700 ATy(qTy,PTy(uTy,qTy)),LU), 21701 MB(ITE(bVar"postindex", 21702 Call 21703 ("write'R", 21704 ATy(qTy, 21705 PTy(uTy,qTy)), 21706 TP[Var("offset_addr", 21707 F32), 21708 Var("n",F4)]), 21709 MU(LU,qTy)), 21710 Close 21711 (AVar uTy, 21712 Call 21713 ("IncPC", 21714 ATy(qTy,PTy(uTy,qTy)), 21715 LU))))))))))))), 21716 MU(LU,qTy))))) 21717; 21718val dfn'StoreHalf_def = Def 21719 ("dfn'StoreHalf", 21720 TP[bVar"add",bVar"index",bVar"wback",Var("t",F4),Var("n",F4), 21721 Var("m",CTy"offset1")], 21722 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 21723 Close 21724 (bVar"b", 21725 ITE(bVar"b", 21726 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 21727 Close 21728 (Var("Rn",F32), 21729 MB(CS(Var("m",CTy"offset1"), 21730 [(Call 21731 ("register_form1",CTy"offset1", 21732 TP[Var("m",F4),Var("shift_t",CTy"SRType"), 21733 nVar"shift_n"]), 21734 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 21735 Close 21736 (Var("v",F32), 21737 MB(MB(MR(Close 21738 (qVar"s", 21739 Dest("CPSR",CTy"PSR",qVar"s"))), 21740 Close 21741 (Var("v0",CTy"PSR"), 21742 MB(MB(MB(MU(Dest 21743 ("C",bTy, 21744 Var("v0",CTy"PSR")), 21745 qTy), 21746 Close 21747 (bVar"v", 21748 MU(TP[nVar"shift_n", 21749 bVar"v"],qTy))), 21750 Close 21751 (Var("v",PTy(nTy,bTy)), 21752 MU(TP[Var("shift_t", 21753 CTy"SRType"), 21754 Var("v", 21755 PTy(nTy,bTy))], 21756 qTy))), 21757 Close 21758 (Var("v0", 21759 PTy(CTy"SRType", 21760 PTy(nTy,bTy))), 21761 MU(TP[Var("v",F32), 21762 Var("v0", 21763 PTy(CTy"SRType", 21764 PTy(nTy,bTy)))], 21765 qTy))))), 21766 Close 21767 (Var("v", 21768 PTy(F32, 21769 PTy(CTy"SRType", 21770 PTy(nTy,bTy)))), 21771 Call 21772 ("Shift",ATy(qTy,PTy(F32,qTy)), 21773 Var("v", 21774 PTy(F32, 21775 PTy(CTy"SRType", 21776 PTy(nTy,bTy)))))))))), 21777 (Call 21778 ("immediate_form1",CTy"offset1", 21779 Var("imm32",F32)),MU(Var("imm32",F32),qTy))]), 21780 Close 21781 (Var("offset",F32), 21782 Let(Var("offset_addr",F32), 21783 ITE(bVar"add", 21784 Bop(Add,Var("Rn",F32),Var("offset",F32)), 21785 Bop(Sub,Var("Rn",F32),Var("offset",F32))), 21786 Let(Var("address",F32), 21787 ITE(bVar"index",Var("offset_addr",F32), 21788 Var("Rn",F32)), 21789 MB(Call 21790 ("UnalignedSupport", 21791 ATy(qTy,PTy(bTy,qTy)),LU), 21792 Close 21793 (bVar"v", 21794 MB(MB(MU(Bop(Or,bVar"v", 21795 Call 21796 ("Aligned",bTy, 21797 TP[Var("address", 21798 F32),LN 2])), 21799 qTy), 21800 Close 21801 (bVar"b", 21802 ITE(bVar"b", 21803 MB(Call 21804 ("R", 21805 ATy(qTy, 21806 PTy(F32,qTy)), 21807 Var("t",F4)), 21808 Close 21809 (Var("v",F32), 21810 MB(MB(MU(EX(Var("v", 21811 F32), 21812 LN 21813 15, 21814 LN 0, 21815 F16), 21816 qTy), 21817 Close 21818 (Var("v", 21819 F16), 21820 MU(TP[Var("v", 21821 F16), 21822 Var("address", 21823 F32), 21824 LN 21825 2], 21826 qTy))), 21827 Close 21828 (Var("v", 21829 PTy(F16, 21830 PTy(F32, 21831 nTy))), 21832 Call 21833 ("write'MemU", 21834 ATy(qTy, 21835 PTy(uTy, 21836 qTy)), 21837 Var("v", 21838 PTy(F16, 21839 PTy(F32, 21840 nTy)))))))), 21841 MB(Call 21842 ("write'MemU", 21843 ATy(qTy, 21844 PTy(uTy,qTy)), 21845 TP[LX F16, 21846 Var("address", 21847 F32),LN 2]), 21848 Close 21849 (AVar uTy, 21850 MB(MR(Close 21851 (qVar"s", 21852 Dest 21853 ("data_abort", 21854 bTy, 21855 qVar"s"))), 21856 Close 21857 (bVar"v", 21858 MB(MU(Mop(Not, 21859 bVar"v"), 21860 qTy), 21861 Close 21862 (bVar"b", 21863 ITE(bVar"b", 21864 MW(Close 21865 (qVar"s", 21866 Rupd 21867 ("transfer_unknown", 21868 TP[qVar"s", 21869 LT]))), 21870 MU(LU, 21871 qTy))))))))))), 21872 Close 21873 (AVar uTy, 21874 MB(MR(Close 21875 (qVar"s", 21876 Dest 21877 ("data_abort",bTy, 21878 qVar"s"))), 21879 Close 21880 (bVar"b", 21881 ITE(bVar"b", 21882 Call 21883 ("TakeDataAbortException", 21884 ATy(qTy, 21885 PTy(uTy,qTy)), 21886 LU), 21887 MB(ITE(bVar"wback", 21888 Call 21889 ("write'R", 21890 ATy(qTy, 21891 PTy(uTy, 21892 qTy)), 21893 TP[Var("offset_addr", 21894 F32), 21895 Var("n", 21896 F4)]), 21897 MU(LU,qTy)), 21898 Close 21899 (AVar uTy, 21900 Call 21901 ("IncPC", 21902 ATy(qTy, 21903 PTy(uTy, 21904 qTy)), 21905 LU)))))))))))))))), 21906 MU(LU,qTy))))) 21907; 21908val dfn'StoreHalfUnprivileged_def = Def 21909 ("dfn'StoreHalfUnprivileged", 21910 TP[bVar"add",bVar"postindex",Var("t",F4),Var("n",F4), 21911 Var("m",CTy"offset2")], 21912 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 21913 Close 21914 (bVar"b", 21915 ITE(bVar"b", 21916 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 21917 Close 21918 (Var("Rn",F32), 21919 MB(CS(Var("m",CTy"offset2"), 21920 [(Call("register_form2",CTy"offset2",Var("m",F4)), 21921 Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4))), 21922 (Call 21923 ("immediate_form2",CTy"offset2", 21924 Var("imm32",F32)),MU(Var("imm32",F32),qTy))]), 21925 Close 21926 (Var("offset",F32), 21927 Let(Var("offset_addr",F32), 21928 ITE(bVar"add", 21929 Bop(Add,Var("Rn",F32),Var("offset",F32)), 21930 Bop(Sub,Var("Rn",F32),Var("offset",F32))), 21931 Let(Var("address",F32), 21932 ITE(bVar"postindex",Var("Rn",F32), 21933 Var("offset_addr",F32)), 21934 MB(Call 21935 ("UnalignedSupport", 21936 ATy(qTy,PTy(bTy,qTy)),LU), 21937 Close 21938 (bVar"v", 21939 MB(MB(MU(Bop(Or,bVar"v", 21940 Call 21941 ("Aligned",bTy, 21942 TP[Var("address", 21943 F32),LN 2])), 21944 qTy), 21945 Close 21946 (bVar"b", 21947 ITE(bVar"b", 21948 MB(Call 21949 ("R", 21950 ATy(qTy, 21951 PTy(F32,qTy)), 21952 Var("t",F4)), 21953 Close 21954 (Var("v",F32), 21955 MB(MB(MU(EX(Var("v", 21956 F32), 21957 LN 21958 15, 21959 LN 0, 21960 F16), 21961 qTy), 21962 Close 21963 (Var("v", 21964 F16), 21965 MU(TP[Var("v", 21966 F16), 21967 Var("address", 21968 F32), 21969 LN 21970 2], 21971 qTy))), 21972 Close 21973 (Var("v", 21974 PTy(F16, 21975 PTy(F32, 21976 nTy))), 21977 Call 21978 ("write'MemU_unpriv", 21979 ATy(qTy, 21980 PTy(uTy, 21981 qTy)), 21982 Var("v", 21983 PTy(F16, 21984 PTy(F32, 21985 nTy)))))))), 21986 MB(Call 21987 ("write'MemU_unpriv", 21988 ATy(qTy, 21989 PTy(uTy,qTy)), 21990 TP[LX F16, 21991 Var("address", 21992 F32),LN 2]), 21993 Close 21994 (AVar uTy, 21995 MB(MR(Close 21996 (qVar"s", 21997 Dest 21998 ("data_abort", 21999 bTy, 22000 qVar"s"))), 22001 Close 22002 (bVar"v", 22003 MB(MU(Mop(Not, 22004 bVar"v"), 22005 qTy), 22006 Close 22007 (bVar"b", 22008 ITE(bVar"b", 22009 MW(Close 22010 (qVar"s", 22011 Rupd 22012 ("transfer_unknown", 22013 TP[qVar"s", 22014 LT]))), 22015 MU(LU, 22016 qTy))))))))))), 22017 Close 22018 (AVar uTy, 22019 MB(MR(Close 22020 (qVar"s", 22021 Dest 22022 ("data_abort",bTy, 22023 qVar"s"))), 22024 Close 22025 (bVar"b", 22026 ITE(bVar"b", 22027 Call 22028 ("TakeDataAbortException", 22029 ATy(qTy, 22030 PTy(uTy,qTy)), 22031 LU), 22032 MB(ITE(bVar"postindex", 22033 Call 22034 ("write'R", 22035 ATy(qTy, 22036 PTy(uTy, 22037 qTy)), 22038 TP[Var("offset_addr", 22039 F32), 22040 Var("n", 22041 F4)]), 22042 MU(LU,qTy)), 22043 Close 22044 (AVar uTy, 22045 Call 22046 ("IncPC", 22047 ATy(qTy, 22048 PTy(uTy, 22049 qTy)), 22050 LU)))))))))))))))), 22051 MU(LU,qTy))))) 22052; 22053val dfn'StoreMultiple_def = Def 22054 ("dfn'StoreMultiple", 22055 TP[bVar"increment",bVar"index",bVar"wback",Var("n",F4), 22056 Var("registers",F16)], 22057 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 22058 Close 22059 (bVar"b", 22060 ITE(bVar"b", 22061 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 22062 Close 22063 (Var("Rn",F32), 22064 MB(Call 22065 ("BitCount",ATy(qTy,PTy(nTy,qTy)), 22066 Var("registers",F16)), 22067 Close 22068 (nVar"v", 22069 MB(MB(MU(Mop(Cast F32,nVar"v"),qTy), 22070 Close 22071 (Var("v",F32), 22072 MU(Bop(Mul,LW(4,32),Var("v",F32)),qTy))), 22073 Close 22074 (Var("length",F32), 22075 MN(ITE(bVar"increment",Var("Rn",F32), 22076 Bop(Sub,Var("Rn",F32), 22077 Var("length",F32))), 22078 MB(ITE(EQ(bVar"index",bVar"increment"), 22079 MB(MR(Close 22080 (Var("s",PTy(F32,qTy)), 22081 Mop(Fst, 22082 Var("s",PTy(F32,qTy))))), 22083 Close 22084 (Var("v",F32), 22085 MB(MU(Bop(Add,Var("v",F32), 22086 LW(4,32)), 22087 PTy(F32,qTy)), 22088 Close 22089 (Var("v",F32), 22090 MW(Close 22091 (Var("s", 22092 PTy(F32,qTy)), 22093 TP[Var("v",F32), 22094 Mop(Snd, 22095 Var("s", 22096 PTy(F32, 22097 qTy)))])))))), 22098 MU(LU,PTy(F32,qTy))), 22099 Close 22100 (AVar uTy, 22101 MB(MR(Close 22102 (Var("s",PTy(F32,qTy)), 22103 Dest 22104 ("MEM",ATy(F32,F8), 22105 Mop(Snd, 22106 Var("s", 22107 PTy(F32,qTy)))))), 22108 Close 22109 (Var("omem",ATy(F32,F8)), 22110 MB(For(TP[LN 0,LN 14, 22111 Close 22112 (nVar"i", 22113 ITE(Bop(Bit, 22114 Var("registers", 22115 F16), 22116 Mop(Cast 22117 nTy, 22118 nVar"i")), 22119 MB(ITE(Bop(And, 22120 Bop(And, 22121 EQ(Mop(Cast 22122 F4, 22123 nVar"i"), 22124 Var("n", 22125 F4)), 22126 bVar"wback"), 22127 Mop(Not, 22128 EQ(nVar"i", 22129 Call 22130 ("LowestSetBit", 22131 nTy, 22132 Var("registers", 22133 F16))))), 22134 MB(MR(Close 22135 (Var("s", 22136 PTy(F32, 22137 qTy)), 22138 Mop(Fst, 22139 Var("s", 22140 PTy(F32, 22141 qTy))))), 22142 Close 22143 (Var("v", 22144 F32), 22145 MB(MB(MU(TP[Var("v", 22146 F32), 22147 LN 22148 4], 22149 PTy(F32, 22150 qTy)), 22151 Close 22152 (Var("x", 22153 PTy(F32, 22154 nTy)), 22155 MD(Call 22156 ("write'MemA", 22157 ATy(qTy, 22158 PTy(uTy, 22159 qTy)), 22160 TP[LX F32, 22161 Var("x", 22162 PTy(F32, 22163 nTy))]), 22164 F32))), 22165 Close 22166 (AVar 22167 uTy, 22168 MB(MR(Close 22169 (Var("s", 22170 PTy(F32, 22171 qTy)), 22172 Dest 22173 ("data_abort", 22174 bTy, 22175 Mop(Snd, 22176 Var("s", 22177 PTy(F32, 22178 qTy)))))), 22179 Close 22180 (bVar"v", 22181 MB(MU(Mop(Not, 22182 bVar"v"), 22183 PTy(F32, 22184 qTy)), 22185 Close 22186 (bVar"b", 22187 ITE(bVar"b", 22188 MW(Close 22189 (Var("s", 22190 PTy(F32, 22191 qTy)), 22192 TP[Mop(Fst, 22193 Var("s", 22194 PTy(F32, 22195 qTy))), 22196 Rupd 22197 ("transfer_unknown", 22198 TP[Mop(Snd, 22199 Var("s", 22200 PTy(F32, 22201 qTy))), 22202 LT])])), 22203 MU(LU, 22204 PTy(F32, 22205 qTy))))))))))), 22206 MB(MR(Close 22207 (Var("s", 22208 PTy(F32, 22209 qTy)), 22210 Mop(Fst, 22211 Var("s", 22212 PTy(F32, 22213 qTy))))), 22214 Close 22215 (Var("v", 22216 F32), 22217 MB(MU(TP[Var("v", 22218 F32), 22219 LN 22220 4], 22221 PTy(F32, 22222 qTy)), 22223 Close 22224 (Var("x", 22225 PTy(F32, 22226 nTy)), 22227 MB(MD(Call 22228 ("R", 22229 ATy(qTy, 22230 PTy(F32, 22231 qTy)), 22232 Mop(Cast 22233 F4, 22234 nVar"i")), 22235 F32), 22236 Close 22237 (Var("v", 22238 F32), 22239 MB(MU(TP[Var("v", 22240 F32), 22241 Var("x", 22242 PTy(F32, 22243 nTy))], 22244 PTy(F32, 22245 qTy)), 22246 Close 22247 (Var("v", 22248 PTy(F32, 22249 PTy(F32, 22250 nTy))), 22251 MD(Call 22252 ("write'MemA", 22253 ATy(qTy, 22254 PTy(uTy, 22255 qTy)), 22256 Var("v", 22257 PTy(F32, 22258 PTy(F32, 22259 nTy)))), 22260 F32)))))))))), 22261 Close 22262 (AVar 22263 uTy, 22264 MB(MR(Close 22265 (Var("s", 22266 PTy(F32, 22267 qTy)), 22268 Mop(Fst, 22269 Var("s", 22270 PTy(F32, 22271 qTy))))), 22272 Close 22273 (Var("v", 22274 F32), 22275 MB(MU(Bop(Add, 22276 Var("v", 22277 F32), 22278 LW(4, 22279 32)), 22280 PTy(F32, 22281 qTy)), 22282 Close 22283 (Var("v", 22284 F32), 22285 MW(Close 22286 (Var("s", 22287 PTy(F32, 22288 qTy)), 22289 TP[Var("v", 22290 F32), 22291 Mop(Snd, 22292 Var("s", 22293 PTy(F32, 22294 qTy)))])))))))), 22295 MU(LU, 22296 PTy(F32, 22297 qTy))))]), 22298 Close 22299 (AVar uTy, 22300 MB(ITE(Bop(Bit, 22301 Var("registers", 22302 F16), 22303 LN 15), 22304 MB(MR(Close 22305 (Var("s", 22306 PTy(F32, 22307 qTy)), 22308 Mop(Fst, 22309 Var("s", 22310 PTy(F32, 22311 qTy))))), 22312 Close 22313 (Var("v", 22314 F32), 22315 MB(MU(TP[Var("v", 22316 F32), 22317 LN 22318 4], 22319 PTy(F32, 22320 qTy)), 22321 Close 22322 (Var("x", 22323 PTy(F32, 22324 nTy)), 22325 MB(MD(Call 22326 ("PCStoreValue", 22327 ATy(qTy, 22328 PTy(F32, 22329 qTy)), 22330 LU), 22331 F32), 22332 Close 22333 (Var("v", 22334 F32), 22335 MB(MU(TP[Var("v", 22336 F32), 22337 Var("x", 22338 PTy(F32, 22339 nTy))], 22340 PTy(F32, 22341 qTy)), 22342 Close 22343 (Var("v", 22344 PTy(F32, 22345 PTy(F32, 22346 nTy))), 22347 MD(Call 22348 ("write'MemA", 22349 ATy(qTy, 22350 PTy(uTy, 22351 qTy)), 22352 Var("v", 22353 PTy(F32, 22354 PTy(F32, 22355 nTy)))), 22356 F32))))))))), 22357 MU(LU, 22358 PTy(F32,qTy))), 22359 Close 22360 (AVar uTy, 22361 MB(MR(Close 22362 (Var("s", 22363 PTy(F32, 22364 qTy)), 22365 Dest 22366 ("data_abort", 22367 bTy, 22368 Mop(Snd, 22369 Var("s", 22370 PTy(F32, 22371 qTy)))))), 22372 Close 22373 (bVar"b", 22374 ITE(bVar"b", 22375 MB(MW(Close 22376 (Var("s", 22377 PTy(F32, 22378 qTy)), 22379 TP[Mop(Fst, 22380 Var("s", 22381 PTy(F32, 22382 qTy))), 22383 Rupd 22384 ("MEM", 22385 TP[Mop(Snd, 22386 Var("s", 22387 PTy(F32, 22388 qTy))), 22389 Var("omem", 22390 ATy(F32, 22391 F8))])])), 22392 Close 22393 (AVar 22394 uTy, 22395 MD(Call 22396 ("TakeDataAbortException", 22397 ATy(qTy, 22398 PTy(uTy, 22399 qTy)), 22400 LU), 22401 F32))), 22402 MB(ITE(bVar"wback", 22403 MD(Call 22404 ("write'R", 22405 ATy(qTy, 22406 PTy(uTy, 22407 qTy)), 22408 TP[ITE(bVar"increment", 22409 Bop(Add, 22410 Var("Rn", 22411 F32), 22412 Var("length", 22413 F32)), 22414 Bop(Sub, 22415 Var("Rn", 22416 F32), 22417 Var("length", 22418 F32))), 22419 Var("n", 22420 F4)]), 22421 F32), 22422 MU(LU, 22423 PTy(F32, 22424 qTy))), 22425 Close 22426 (AVar 22427 uTy, 22428 MD(Call 22429 ("IncPC", 22430 ATy(qTy, 22431 PTy(uTy, 22432 qTy)), 22433 LU), 22434 F32))))))))))))))))))))), 22435 MU(LU,qTy))))) 22436; 22437val dfn'StoreMultipleUserRegisters_def = Def 22438 ("dfn'StoreMultipleUserRegisters", 22439 TP[bVar"increment",bVar"wordhigher",Var("n",F4),Var("registers",F16)], 22440 MB(Call("CurrentModeIsHyp",ATy(qTy,PTy(bTy,qTy)),LU), 22441 Close 22442 (bVar"v", 22443 MB(ITE(bVar"v", 22444 Call("TakeUndefInstrException",ATy(qTy,PTy(uTy,qTy)),LU), 22445 MU(LU,qTy)), 22446 Close 22447 (AVar uTy, 22448 MB(Call 22449 ("CurrentModeIsUserOrSystem",ATy(qTy,PTy(bTy,qTy)),LU), 22450 Close 22451 (bVar"v", 22452 MB(ITE(bVar"v", 22453 Call 22454 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 22455 Call 22456 ("UNPREDICTABLE",CTy"exception", 22457 LS"StoreMultipleUserRegisters")), 22458 MU(LU,qTy)), 22459 Close 22460 (AVar uTy, 22461 MB(Call 22462 ("BitCount",ATy(qTy,PTy(nTy,qTy)), 22463 Var("registers",F16)), 22464 Close 22465 (nVar"v", 22466 MB(MB(MU(Mop(Cast F32,nVar"v"),qTy), 22467 Close 22468 (Var("v",F32), 22469 MU(Bop(Mul,LW(4,32),Var("v",F32)), 22470 qTy))), 22471 Close 22472 (Var("length",F32), 22473 MB(ITE(bVar"increment", 22474 Call 22475 ("R", 22476 ATy(qTy,PTy(F32,qTy)), 22477 Var("n",F4)), 22478 MB(Call 22479 ("R", 22480 ATy(qTy,PTy(F32,qTy)), 22481 Var("n",F4)), 22482 Close 22483 (Var("v",F32), 22484 MU(Bop(Sub, 22485 Var("v",F32), 22486 Var("length", 22487 F32)),qTy)))), 22488 Close 22489 (Var("v",F32), 22490 MN(Var("v",F32), 22491 MB(ITE(bVar"wordhigher", 22492 MB(MR(Close 22493 (Var("s", 22494 PTy(F32, 22495 qTy)), 22496 Mop(Fst, 22497 Var("s", 22498 PTy(F32, 22499 qTy))))), 22500 Close 22501 (Var("v",F32), 22502 MB(MU(Bop(Add, 22503 Var("v", 22504 F32), 22505 LW(4, 22506 32)), 22507 PTy(F32, 22508 qTy)), 22509 Close 22510 (Var("v", 22511 F32), 22512 MW(Close 22513 (Var("s", 22514 PTy(F32, 22515 qTy)), 22516 TP[Var("v", 22517 F32), 22518 Mop(Snd, 22519 Var("s", 22520 PTy(F32, 22521 qTy)))])))))), 22522 MU(LU,PTy(F32,qTy))), 22523 Close 22524 (AVar uTy, 22525 MB(MR(Close 22526 (Var("s", 22527 PTy(F32, 22528 qTy)), 22529 Dest 22530 ("MEM", 22531 ATy(F32, 22532 F8), 22533 Mop(Snd, 22534 Var("s", 22535 PTy(F32, 22536 qTy)))))), 22537 Close 22538 (Var("omem", 22539 ATy(F32,F8)), 22540 MB(For(TP[LN 0, 22541 LN 22542 14, 22543 Close 22544 (nVar"i", 22545 ITE(Bop(Bit, 22546 Var("registers", 22547 F16), 22548 Mop(Cast 22549 nTy, 22550 nVar"i")), 22551 MB(MR(Close 22552 (Var("s", 22553 PTy(F32, 22554 qTy)), 22555 Mop(Fst, 22556 Var("s", 22557 PTy(F32, 22558 qTy))))), 22559 Close 22560 (Var("v", 22561 F32), 22562 MB(MB(MU(TP[Var("v", 22563 F32), 22564 LN 22565 4], 22566 PTy(F32, 22567 qTy)), 22568 Close 22569 (Var("x", 22570 PTy(F32, 22571 nTy)), 22572 MB(MD(Call 22573 ("Rmode", 22574 ATy(qTy, 22575 PTy(F32, 22576 qTy)), 22577 TP[Mop(Cast 22578 F4, 22579 nVar"i"), 22580 LW(16, 22581 5)]), 22582 F32), 22583 Close 22584 (Var("v", 22585 F32), 22586 MB(MU(TP[Var("v", 22587 F32), 22588 Var("x", 22589 PTy(F32, 22590 nTy))], 22591 PTy(F32, 22592 qTy)), 22593 Close 22594 (Var("v", 22595 PTy(F32, 22596 PTy(F32, 22597 nTy))), 22598 MD(Call 22599 ("write'MemA", 22600 ATy(qTy, 22601 PTy(uTy, 22602 qTy)), 22603 Var("v", 22604 PTy(F32, 22605 PTy(F32, 22606 nTy)))), 22607 F32))))))), 22608 Close 22609 (AVar 22610 uTy, 22611 MB(MR(Close 22612 (Var("s", 22613 PTy(F32, 22614 qTy)), 22615 Mop(Fst, 22616 Var("s", 22617 PTy(F32, 22618 qTy))))), 22619 Close 22620 (Var("v", 22621 F32), 22622 MB(MU(Bop(Add, 22623 Var("v", 22624 F32), 22625 LW(4, 22626 32)), 22627 PTy(F32, 22628 qTy)), 22629 Close 22630 (Var("v", 22631 F32), 22632 MW(Close 22633 (Var("s", 22634 PTy(F32, 22635 qTy)), 22636 TP[Var("v", 22637 F32), 22638 Mop(Snd, 22639 Var("s", 22640 PTy(F32, 22641 qTy)))])))))))))), 22642 MU(LU, 22643 PTy(F32, 22644 qTy))))]), 22645 Close 22646 (AVar uTy, 22647 MB(ITE(Bop(Bit, 22648 Var("registers", 22649 F16), 22650 LN 22651 15), 22652 MB(MR(Close 22653 (Var("s", 22654 PTy(F32, 22655 qTy)), 22656 Mop(Fst, 22657 Var("s", 22658 PTy(F32, 22659 qTy))))), 22660 Close 22661 (Var("v", 22662 F32), 22663 MB(MU(TP[Var("v", 22664 F32), 22665 LN 22666 4], 22667 PTy(F32, 22668 qTy)), 22669 Close 22670 (Var("x", 22671 PTy(F32, 22672 nTy)), 22673 MB(MD(Call 22674 ("PCStoreValue", 22675 ATy(qTy, 22676 PTy(F32, 22677 qTy)), 22678 LU), 22679 F32), 22680 Close 22681 (Var("v", 22682 F32), 22683 MB(MU(TP[Var("v", 22684 F32), 22685 Var("x", 22686 PTy(F32, 22687 nTy))], 22688 PTy(F32, 22689 qTy)), 22690 Close 22691 (Var("v", 22692 PTy(F32, 22693 PTy(F32, 22694 nTy))), 22695 MD(Call 22696 ("write'MemA", 22697 ATy(qTy, 22698 PTy(uTy, 22699 qTy)), 22700 Var("v", 22701 PTy(F32, 22702 PTy(F32, 22703 nTy)))), 22704 F32))))))))), 22705 MU(LU, 22706 PTy(F32, 22707 qTy))), 22708 Close 22709 (AVar 22710 uTy, 22711 MB(MR(Close 22712 (Var("s", 22713 PTy(F32, 22714 qTy)), 22715 Dest 22716 ("data_abort", 22717 bTy, 22718 Mop(Snd, 22719 Var("s", 22720 PTy(F32, 22721 qTy)))))), 22722 Close 22723 (bVar"b", 22724 ITE(bVar"b", 22725 MB(MW(Close 22726 (Var("s", 22727 PTy(F32, 22728 qTy)), 22729 TP[Mop(Fst, 22730 Var("s", 22731 PTy(F32, 22732 qTy))), 22733 Rupd 22734 ("MEM", 22735 TP[Mop(Snd, 22736 Var("s", 22737 PTy(F32, 22738 qTy))), 22739 Var("omem", 22740 ATy(F32, 22741 F8))])])), 22742 Close 22743 (AVar 22744 uTy, 22745 MD(Call 22746 ("TakeDataAbortException", 22747 ATy(qTy, 22748 PTy(uTy, 22749 qTy)), 22750 LU), 22751 F32))), 22752 MD(Call 22753 ("IncPC", 22754 ATy(qTy, 22755 PTy(uTy, 22756 qTy)), 22757 LU), 22758 F32)))))))))))))))))))))))))))) 22759; 22760val dfn'StoreDual_def = Def 22761 ("dfn'StoreDual", 22762 TP[bVar"add",bVar"index",bVar"wback",Var("t",F4),Var("t2",F4), 22763 Var("n",F4),Var("m",CTy"offset2")], 22764 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 22765 Close 22766 (bVar"b", 22767 ITE(bVar"b", 22768 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 22769 Close 22770 (Var("Rn",F32), 22771 MB(CS(Var("m",CTy"offset2"), 22772 [(Call("register_form2",CTy"offset2",Var("m",F4)), 22773 Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4))), 22774 (Call 22775 ("immediate_form2",CTy"offset2", 22776 Var("imm32",F32)),MU(Var("imm32",F32),qTy))]), 22777 Close 22778 (Var("offset",F32), 22779 Let(Var("offset_addr",F32), 22780 ITE(bVar"add", 22781 Bop(Add,Var("Rn",F32),Var("offset",F32)), 22782 Bop(Sub,Var("Rn",F32),Var("offset",F32))), 22783 Let(Var("address",F32), 22784 ITE(bVar"index",Var("offset_addr",F32), 22785 Var("Rn",F32)), 22786 MB(MR(Close 22787 (qVar"s", 22788 Dest("MEM",ATy(F32,F8),qVar"s"))), 22789 Close 22790 (Var("omem",ATy(F32,F8)), 22791 MB(MB(Call 22792 ("R",ATy(qTy,PTy(F32,qTy)), 22793 Var("t",F4)), 22794 Close 22795 (Var("v",F32), 22796 MB(MU(TP[Var("v",F32), 22797 Var("address",F32), 22798 LN 4],qTy), 22799 Close 22800 (Var("v", 22801 PTy(F32, 22802 PTy(F32,nTy))), 22803 Call 22804 ("write'MemA", 22805 ATy(qTy, 22806 PTy(uTy,qTy)), 22807 Var("v", 22808 PTy(F32, 22809 PTy(F32, 22810 nTy)))))))), 22811 Close 22812 (AVar uTy, 22813 MB(MB(Call 22814 ("R", 22815 ATy(qTy,PTy(F32,qTy)), 22816 Var("t2",F4)), 22817 Close 22818 (Var("v",F32), 22819 MB(MU(TP[Var("v",F32), 22820 Bop(Add, 22821 Var("address", 22822 F32), 22823 LW(4,32)), 22824 LN 4],qTy), 22825 Close 22826 (Var("v", 22827 PTy(F32, 22828 PTy(F32, 22829 nTy))), 22830 Call 22831 ("write'MemA", 22832 ATy(qTy, 22833 PTy(uTy, 22834 qTy)), 22835 Var("v", 22836 PTy(F32, 22837 PTy(F32, 22838 nTy)))))))), 22839 Close 22840 (AVar uTy, 22841 MB(MR(Close 22842 (qVar"s", 22843 Dest 22844 ("data_abort", 22845 bTy,qVar"s"))), 22846 Close 22847 (bVar"b", 22848 ITE(bVar"b", 22849 MB(MW(Close 22850 (qVar"s", 22851 Rupd 22852 ("MEM", 22853 TP[qVar"s", 22854 Var("omem", 22855 ATy(F32, 22856 F8))]))), 22857 Close 22858 (AVar 22859 uTy, 22860 Call 22861 ("TakeDataAbortException", 22862 ATy(qTy, 22863 PTy(uTy, 22864 qTy)), 22865 LU))), 22866 MB(ITE(bVar"wback", 22867 Call 22868 ("write'R", 22869 ATy(qTy, 22870 PTy(uTy, 22871 qTy)), 22872 TP[Var("offset_addr", 22873 F32), 22874 Var("n", 22875 F4)]), 22876 MU(LU, 22877 qTy)), 22878 Close 22879 (AVar 22880 uTy, 22881 Call 22882 ("IncPC", 22883 ATy(qTy, 22884 PTy(uTy, 22885 qTy)), 22886 LU)))))))))))))))))), 22887 MU(LU,qTy))))) 22888; 22889val dfn'StoreExclusive_def = Def 22890 ("dfn'StoreExclusive", 22891 TP[Var("d",F4),Var("t",F4),Var("n",F4),Var("imm32",F32)], 22892 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 22893 Close 22894 (bVar"b", 22895 ITE(bVar"b", 22896 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 22897 Close 22898 (Var("v",F32), 22899 MB(MU(Bop(Add,Var("v",F32),Var("imm32",F32)),qTy), 22900 Close 22901 (Var("address",F32), 22902 MB(MR(Close 22903 (qVar"s", 22904 Dest 22905 ("ExclusiveMonitorsPass", 22906 ATy(PTy(F32, 22907 PTy(nTy, 22908 PTy(LTy(STy F32), 22909 STy(PTy(F32,nTy))))), 22910 bTy),qVar"s"))), 22911 Close 22912 (Var("v", 22913 ATy(PTy(F32, 22914 PTy(nTy, 22915 PTy(LTy(STy F32), 22916 STy(PTy(F32,nTy))))), 22917 bTy)), 22918 MB(MB(MB(MR(Close 22919 (qVar"s", 22920 Dest 22921 ("exclusive_state", 22922 PTy(LTy(STy F32), 22923 STy(PTy(F32,nTy))), 22924 qVar"s"))), 22925 Close 22926 (Var("v0", 22927 PTy(LTy(STy F32), 22928 STy(PTy(F32,nTy)))), 22929 MB(MB(MU(TP[LN 4, 22930 Var("v0", 22931 PTy(LTy(STy F32), 22932 STy(PTy(F32, 22933 nTy))))], 22934 qTy), 22935 Close 22936 (Var("v", 22937 PTy(nTy, 22938 PTy(LTy(STy F32), 22939 STy(PTy(F32, 22940 nTy))))), 22941 MU(TP[Var("address", 22942 F32), 22943 Var("v", 22944 PTy(nTy, 22945 PTy(LTy(STy F32), 22946 STy(PTy(F32, 22947 nTy)))))], 22948 qTy))), 22949 Close 22950 (Var("v0", 22951 PTy(F32, 22952 PTy(nTy, 22953 PTy(LTy(STy F32), 22954 STy(PTy(F32, 22955 nTy)))))), 22956 MU(Apply 22957 (Var("v", 22958 ATy(PTy(F32, 22959 PTy(nTy, 22960 PTy(LTy(STy F32), 22961 STy(PTy(F32, 22962 nTy))))), 22963 bTy)), 22964 Var("v0", 22965 PTy(F32, 22966 PTy(nTy, 22967 PTy(LTy(STy F32), 22968 STy(PTy(F32, 22969 nTy))))))), 22970 qTy))))), 22971 Close 22972 (bVar"b", 22973 ITE(bVar"b", 22974 MB(MB(Call 22975 ("R", 22976 ATy(qTy,PTy(F32,qTy)), 22977 Var("t",F4)), 22978 Close 22979 (Var("v",F32), 22980 MB(MU(TP[Var("v",F32), 22981 Var("address", 22982 F32), 22983 LN 4],qTy), 22984 Close 22985 (Var("v", 22986 PTy(F32, 22987 PTy(F32, 22988 nTy))), 22989 Call 22990 ("write'MemA", 22991 ATy(qTy, 22992 PTy(uTy, 22993 qTy)), 22994 Var("v", 22995 PTy(F32, 22996 PTy(F32, 22997 nTy)))))))), 22998 Close 22999 (AVar uTy, 23000 MB(MR(Close 23001 (qVar"s", 23002 Dest 23003 ("data_abort", 23004 bTy,qVar"s"))), 23005 Close 23006 (bVar"v", 23007 MB(MU(Mop(Not, 23008 bVar"v"), 23009 qTy), 23010 Close 23011 (bVar"b", 23012 ITE(bVar"b", 23013 Call 23014 ("write'R", 23015 ATy(qTy, 23016 PTy(uTy, 23017 qTy)), 23018 TP[LW(0, 23019 32), 23020 Var("d", 23021 F4)]), 23022 MU(LU, 23023 qTy)))))))), 23024 Call 23025 ("write'R", 23026 ATy(qTy,PTy(uTy,qTy)), 23027 TP[LW(1,32),Var("d",F4)])))), 23028 Close 23029 (AVar uTy, 23030 MB(MR(Close 23031 (qVar"s", 23032 Dest 23033 ("data_abort",bTy,qVar"s"))), 23034 Close 23035 (bVar"b", 23036 ITE(bVar"b", 23037 Call 23038 ("TakeDataAbortException", 23039 ATy(qTy,PTy(uTy,qTy)),LU), 23040 Call 23041 ("IncPC", 23042 ATy(qTy,PTy(uTy,qTy)),LU)))))))))))), 23043 MU(LU,qTy))))) 23044; 23045val dfn'StoreExclusiveByte_def = Def 23046 ("dfn'StoreExclusiveByte",TP[Var("d",F4),Var("t",F4),Var("n",F4)], 23047 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 23048 Close 23049 (bVar"b", 23050 ITE(bVar"b", 23051 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 23052 Close 23053 (Var("address",F32), 23054 MB(MR(Close 23055 (qVar"s", 23056 Dest 23057 ("ExclusiveMonitorsPass", 23058 ATy(PTy(F32, 23059 PTy(nTy, 23060 PTy(LTy(STy F32), 23061 STy(PTy(F32,nTy))))),bTy), 23062 qVar"s"))), 23063 Close 23064 (Var("v", 23065 ATy(PTy(F32, 23066 PTy(nTy, 23067 PTy(LTy(STy F32), 23068 STy(PTy(F32,nTy))))),bTy)), 23069 MB(MB(MB(MR(Close 23070 (qVar"s", 23071 Dest 23072 ("exclusive_state", 23073 PTy(LTy(STy F32), 23074 STy(PTy(F32,nTy))),qVar"s"))), 23075 Close 23076 (Var("v0", 23077 PTy(LTy(STy F32), 23078 STy(PTy(F32,nTy)))), 23079 MB(MB(MU(TP[LN 1, 23080 Var("v0", 23081 PTy(LTy(STy F32), 23082 STy(PTy(F32,nTy))))], 23083 qTy), 23084 Close 23085 (Var("v", 23086 PTy(nTy, 23087 PTy(LTy(STy F32), 23088 STy(PTy(F32,nTy))))), 23089 MU(TP[Var("address",F32), 23090 Var("v", 23091 PTy(nTy, 23092 PTy(LTy(STy F32), 23093 STy(PTy(F32, 23094 nTy)))))], 23095 qTy))), 23096 Close 23097 (Var("v0", 23098 PTy(F32, 23099 PTy(nTy, 23100 PTy(LTy(STy F32), 23101 STy(PTy(F32,nTy)))))), 23102 MU(Apply 23103 (Var("v", 23104 ATy(PTy(F32, 23105 PTy(nTy, 23106 PTy(LTy(STy F32), 23107 STy(PTy(F32, 23108 nTy))))), 23109 bTy)), 23110 Var("v0", 23111 PTy(F32, 23112 PTy(nTy, 23113 PTy(LTy(STy F32), 23114 STy(PTy(F32, 23115 nTy))))))), 23116 qTy))))), 23117 Close 23118 (bVar"b", 23119 ITE(bVar"b", 23120 MB(MB(Call 23121 ("R",ATy(qTy,PTy(F32,qTy)), 23122 Var("t",F4)), 23123 Close 23124 (Var("v",F32), 23125 MB(MB(MU(EX(Var("v",F32), 23126 LN 7,LN 0,F8), 23127 qTy), 23128 Close 23129 (Var("v",F8), 23130 MU(TP[Var("v",F8), 23131 Var("address", 23132 F32), 23133 LN 1],qTy))), 23134 Close 23135 (Var("v", 23136 PTy(F8, 23137 PTy(F32,nTy))), 23138 Call 23139 ("write'MemA", 23140 ATy(qTy, 23141 PTy(uTy,qTy)), 23142 Var("v", 23143 PTy(F8, 23144 PTy(F32, 23145 nTy)))))))), 23146 Close 23147 (AVar uTy, 23148 MB(MR(Close 23149 (qVar"s", 23150 Dest 23151 ("data_abort",bTy, 23152 qVar"s"))), 23153 Close 23154 (bVar"v", 23155 MB(MU(Mop(Not,bVar"v"), 23156 qTy), 23157 Close 23158 (bVar"b", 23159 ITE(bVar"b", 23160 Call 23161 ("write'R", 23162 ATy(qTy, 23163 PTy(uTy, 23164 qTy)), 23165 TP[LW(0,32), 23166 Var("d", 23167 F4)]), 23168 MU(LU,qTy)))))))), 23169 Call 23170 ("write'R",ATy(qTy,PTy(uTy,qTy)), 23171 TP[LW(1,32),Var("d",F4)])))), 23172 Close 23173 (AVar uTy, 23174 MB(MR(Close 23175 (qVar"s", 23176 Dest("data_abort",bTy,qVar"s"))), 23177 Close 23178 (bVar"b", 23179 ITE(bVar"b", 23180 Call 23181 ("TakeDataAbortException", 23182 ATy(qTy,PTy(uTy,qTy)),LU), 23183 Call 23184 ("IncPC",ATy(qTy,PTy(uTy,qTy)), 23185 LU)))))))))),MU(LU,qTy))))) 23186; 23187val dfn'StoreExclusiveHalf_def = Def 23188 ("dfn'StoreExclusiveHalf",TP[Var("d",F4),Var("t",F4),Var("n",F4)], 23189 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 23190 Close 23191 (bVar"b", 23192 ITE(bVar"b", 23193 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 23194 Close 23195 (Var("address",F32), 23196 MB(MR(Close 23197 (qVar"s", 23198 Dest 23199 ("ExclusiveMonitorsPass", 23200 ATy(PTy(F32, 23201 PTy(nTy, 23202 PTy(LTy(STy F32), 23203 STy(PTy(F32,nTy))))),bTy), 23204 qVar"s"))), 23205 Close 23206 (Var("v", 23207 ATy(PTy(F32, 23208 PTy(nTy, 23209 PTy(LTy(STy F32), 23210 STy(PTy(F32,nTy))))),bTy)), 23211 MB(MB(MB(MR(Close 23212 (qVar"s", 23213 Dest 23214 ("exclusive_state", 23215 PTy(LTy(STy F32), 23216 STy(PTy(F32,nTy))),qVar"s"))), 23217 Close 23218 (Var("v0", 23219 PTy(LTy(STy F32), 23220 STy(PTy(F32,nTy)))), 23221 MB(MB(MU(TP[LN 2, 23222 Var("v0", 23223 PTy(LTy(STy F32), 23224 STy(PTy(F32,nTy))))], 23225 qTy), 23226 Close 23227 (Var("v", 23228 PTy(nTy, 23229 PTy(LTy(STy F32), 23230 STy(PTy(F32,nTy))))), 23231 MU(TP[Var("address",F32), 23232 Var("v", 23233 PTy(nTy, 23234 PTy(LTy(STy F32), 23235 STy(PTy(F32, 23236 nTy)))))], 23237 qTy))), 23238 Close 23239 (Var("v0", 23240 PTy(F32, 23241 PTy(nTy, 23242 PTy(LTy(STy F32), 23243 STy(PTy(F32,nTy)))))), 23244 MU(Apply 23245 (Var("v", 23246 ATy(PTy(F32, 23247 PTy(nTy, 23248 PTy(LTy(STy F32), 23249 STy(PTy(F32, 23250 nTy))))), 23251 bTy)), 23252 Var("v0", 23253 PTy(F32, 23254 PTy(nTy, 23255 PTy(LTy(STy F32), 23256 STy(PTy(F32, 23257 nTy))))))), 23258 qTy))))), 23259 Close 23260 (bVar"b", 23261 ITE(bVar"b", 23262 MB(MB(Call 23263 ("R",ATy(qTy,PTy(F32,qTy)), 23264 Var("t",F4)), 23265 Close 23266 (Var("v",F32), 23267 MB(MB(MU(EX(Var("v",F32), 23268 LN 15,LN 0,F16), 23269 qTy), 23270 Close 23271 (Var("v",F16), 23272 MU(TP[Var("v",F16), 23273 Var("address", 23274 F32), 23275 LN 2],qTy))), 23276 Close 23277 (Var("v", 23278 PTy(F16, 23279 PTy(F32,nTy))), 23280 Call 23281 ("write'MemA", 23282 ATy(qTy, 23283 PTy(uTy,qTy)), 23284 Var("v", 23285 PTy(F16, 23286 PTy(F32, 23287 nTy)))))))), 23288 Close 23289 (AVar uTy, 23290 MB(MR(Close 23291 (qVar"s", 23292 Dest 23293 ("data_abort",bTy, 23294 qVar"s"))), 23295 Close 23296 (bVar"v", 23297 MB(MU(Mop(Not,bVar"v"), 23298 qTy), 23299 Close 23300 (bVar"b", 23301 ITE(bVar"b", 23302 Call 23303 ("write'R", 23304 ATy(qTy, 23305 PTy(uTy, 23306 qTy)), 23307 TP[LW(0,32), 23308 Var("d", 23309 F4)]), 23310 MU(LU,qTy)))))))), 23311 Call 23312 ("write'R",ATy(qTy,PTy(uTy,qTy)), 23313 TP[LW(1,32),Var("d",F4)])))), 23314 Close 23315 (AVar uTy, 23316 MB(MR(Close 23317 (qVar"s", 23318 Dest("data_abort",bTy,qVar"s"))), 23319 Close 23320 (bVar"b", 23321 ITE(bVar"b", 23322 Call 23323 ("TakeDataAbortException", 23324 ATy(qTy,PTy(uTy,qTy)),LU), 23325 Call 23326 ("IncPC",ATy(qTy,PTy(uTy,qTy)), 23327 LU)))))))))),MU(LU,qTy))))) 23328; 23329val dfn'StoreExclusiveDoubleword_def = Def 23330 ("dfn'StoreExclusiveDoubleword", 23331 TP[Var("d",F4),Var("t",F4),Var("t2",F4),Var("n",F4)], 23332 MB(Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 23333 Close 23334 (bVar"b", 23335 ITE(bVar"b", 23336 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 23337 Close 23338 (Var("address",F32), 23339 MB(Call("BigEndian",ATy(qTy,PTy(bTy,qTy)),LU), 23340 Close 23341 (bVar"v", 23342 MB(ITE(bVar"v", 23343 MB(Call 23344 ("R",ATy(qTy,PTy(F32,qTy)), 23345 Var("t",F4)), 23346 Close 23347 (Var("v",F32), 23348 MB(Call 23349 ("R",ATy(qTy,PTy(F32,qTy)), 23350 Var("t2",F4)), 23351 Close 23352 (Var("v0",F32), 23353 MU(CC[Var("v",F32), 23354 Var("v0",F32)],qTy))))), 23355 MB(Call 23356 ("R",ATy(qTy,PTy(F32,qTy)), 23357 Var("t2",F4)), 23358 Close 23359 (Var("v",F32), 23360 MB(Call 23361 ("R",ATy(qTy,PTy(F32,qTy)), 23362 Var("t",F4)), 23363 Close 23364 (Var("v0",F32), 23365 MU(CC[Var("v",F32), 23366 Var("v0",F32)],qTy)))))), 23367 Close 23368 (Var("value",F64), 23369 MB(MR(Close 23370 (qVar"s", 23371 Dest 23372 ("ExclusiveMonitorsPass", 23373 ATy(PTy(F32, 23374 PTy(nTy, 23375 PTy(LTy(STy F32), 23376 STy(PTy(F32,nTy))))), 23377 bTy),qVar"s"))), 23378 Close 23379 (Var("v", 23380 ATy(PTy(F32, 23381 PTy(nTy, 23382 PTy(LTy(STy F32), 23383 STy(PTy(F32,nTy))))), 23384 bTy)), 23385 MB(MB(MB(MR(Close 23386 (qVar"s", 23387 Dest 23388 ("exclusive_state", 23389 PTy(LTy(STy F32), 23390 STy(PTy(F32,nTy))), 23391 qVar"s"))), 23392 Close 23393 (Var("v0", 23394 PTy(LTy(STy F32), 23395 STy(PTy(F32,nTy)))), 23396 MB(MB(MU(TP[LN 8, 23397 Var("v0", 23398 PTy(LTy(STy F32), 23399 STy(PTy(F32, 23400 nTy))))], 23401 qTy), 23402 Close 23403 (Var("v", 23404 PTy(nTy, 23405 PTy(LTy(STy F32), 23406 STy(PTy(F32, 23407 nTy))))), 23408 MU(TP[Var("address", 23409 F32), 23410 Var("v", 23411 PTy(nTy, 23412 PTy(LTy(STy F32), 23413 STy(PTy(F32, 23414 nTy)))))], 23415 qTy))), 23416 Close 23417 (Var("v0", 23418 PTy(F32, 23419 PTy(nTy, 23420 PTy(LTy(STy F32), 23421 STy(PTy(F32, 23422 nTy)))))), 23423 MU(Apply 23424 (Var("v", 23425 ATy(PTy(F32, 23426 PTy(nTy, 23427 PTy(LTy(STy F32), 23428 STy(PTy(F32, 23429 nTy))))), 23430 bTy)), 23431 Var("v0", 23432 PTy(F32, 23433 PTy(nTy, 23434 PTy(LTy(STy F32), 23435 STy(PTy(F32, 23436 nTy))))))), 23437 qTy))))), 23438 Close 23439 (bVar"b", 23440 ITE(bVar"b", 23441 MB(Call 23442 ("write'MemA", 23443 ATy(qTy, 23444 PTy(uTy,qTy)), 23445 TP[Var("value",F64), 23446 Var("address", 23447 F32),LN 8]), 23448 Close 23449 (AVar uTy, 23450 MB(MR(Close 23451 (qVar"s", 23452 Dest 23453 ("data_abort", 23454 bTy, 23455 qVar"s"))), 23456 Close 23457 (bVar"v", 23458 MB(MU(Mop(Not, 23459 bVar"v"), 23460 qTy), 23461 Close 23462 (bVar"b", 23463 ITE(bVar"b", 23464 Call 23465 ("write'R", 23466 ATy(qTy, 23467 PTy(uTy, 23468 qTy)), 23469 TP[LW(0, 23470 32), 23471 Var("d", 23472 F4)]), 23473 MU(LU, 23474 qTy)))))))), 23475 Call 23476 ("write'R", 23477 ATy(qTy,PTy(uTy,qTy)), 23478 TP[LW(1,32), 23479 Var("d",F4)])))), 23480 Close 23481 (AVar uTy, 23482 MB(MR(Close 23483 (qVar"s", 23484 Dest 23485 ("data_abort",bTy, 23486 qVar"s"))), 23487 Close 23488 (bVar"b", 23489 ITE(bVar"b", 23490 Call 23491 ("TakeDataAbortException", 23492 ATy(qTy, 23493 PTy(uTy,qTy)), 23494 LU), 23495 Call 23496 ("IncPC", 23497 ATy(qTy, 23498 PTy(uTy,qTy)), 23499 LU)))))))))))))), 23500 MU(LU,qTy))))) 23501; 23502val dfn'ClearExclusive_def = Def0 23503 ("dfn'ClearExclusive", 23504 MB(MR(Close 23505 (qVar"s", 23506 Dest 23507 ("ClearExclusiveLocal", 23508 ATy(PTy(iTy,PTy(LTy(STy F32),STy(PTy(F32,nTy)))), 23509 PTy(LTy(STy F32),STy(PTy(F32,nTy)))),qVar"s"))), 23510 Close 23511 (Var("v", 23512 ATy(PTy(iTy,PTy(LTy(STy F32),STy(PTy(F32,nTy)))), 23513 PTy(LTy(STy F32),STy(PTy(F32,nTy))))), 23514 MB(MB(MB(MR(Close 23515 (qVar"s", 23516 Dest 23517 ("exclusive_state", 23518 PTy(LTy(STy F32),STy(PTy(F32,nTy))),qVar"s"))), 23519 Close 23520 (Var("v0",PTy(LTy(STy F32),STy(PTy(F32,nTy)))), 23521 MB(MU(TP[Call("ProcessorID",iTy,LU), 23522 Var("v0",PTy(LTy(STy F32),STy(PTy(F32,nTy))))], 23523 qTy), 23524 Close 23525 (Var("v0", 23526 PTy(iTy,PTy(LTy(STy F32),STy(PTy(F32,nTy))))), 23527 MU(Apply 23528 (Var("v", 23529 ATy(PTy(iTy, 23530 PTy(LTy(STy F32), 23531 STy(PTy(F32,nTy)))), 23532 PTy(LTy(STy F32), 23533 STy(PTy(F32,nTy))))), 23534 Var("v0", 23535 PTy(iTy, 23536 PTy(LTy(STy F32), 23537 STy(PTy(F32,nTy)))))),qTy))))), 23538 Close 23539 (Var("v",PTy(LTy(STy F32),STy(PTy(F32,nTy)))), 23540 MW(Close 23541 (qVar"s", 23542 Rupd 23543 ("exclusive_state", 23544 TP[qVar"s", 23545 Var("v",PTy(LTy(STy F32),STy(PTy(F32,nTy))))]))))), 23546 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))))) 23547; 23548val dfn'Swap_def = Def 23549 ("dfn'Swap",TP[bVar"b",Var("t",F4),Var("t2",F4),Var("n",F4)], 23550 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 23551 Close 23552 (Var("Rn",F32), 23553 MB(ITE(bVar"b", 23554 MB(Call 23555 ("MemA",ATy(qTy,PTy(F8,qTy)),TP[Var("Rn",F32),LN 1]), 23556 Close 23557 (Var("data",F8), 23558 MB(MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("t2",F4)), 23559 Close 23560 (Var("v",F32), 23561 MB(MB(MU(EX(Var("v",F32),LN 7,LN 0,F8),qTy), 23562 Close 23563 (Var("v",F8), 23564 MU(TP[Var("v",F8),Var("Rn",F32), 23565 LN 1],qTy))), 23566 Close 23567 (Var("v",PTy(F8,PTy(F32,nTy))), 23568 Call 23569 ("write'MemA", 23570 ATy(qTy,PTy(uTy,qTy)), 23571 Var("v",PTy(F8,PTy(F32,nTy)))))))), 23572 Close 23573 (AVar uTy, 23574 Call 23575 ("write'R",ATy(qTy,PTy(uTy,qTy)), 23576 TP[Mop(Cast F32,Var("data",F8)),Var("t",F4)]))))), 23577 MB(Call 23578 ("MemA",ATy(qTy,PTy(F32,qTy)),TP[Var("Rn",F32),LN 4]), 23579 Close 23580 (Var("data",F32), 23581 MB(MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("t2",F4)), 23582 Close 23583 (Var("v",F32), 23584 MB(MU(TP[Var("v",F32),Var("Rn",F32),LN 4], 23585 qTy), 23586 Close 23587 (Var("v",PTy(F32,PTy(F32,nTy))), 23588 Call 23589 ("write'MemA", 23590 ATy(qTy,PTy(uTy,qTy)), 23591 Var("v",PTy(F32,PTy(F32,nTy)))))))), 23592 Close 23593 (AVar uTy, 23594 MB(Call 23595 ("ROR",ATy(qTy,PTy(F32,qTy)), 23596 TP[Var("data",F32), 23597 Bop(Mul,LN 8, 23598 Mop(Cast nTy, 23599 EX(Var("Rn",F32),LN 1,LN 0, 23600 FTy 2)))]), 23601 Close 23602 (Var("v",F32), 23603 MB(MU(TP[Var("v",F32),Var("t",F4)],qTy), 23604 Close 23605 (Var("v",PTy(F32,F4)), 23606 Call 23607 ("write'R", 23608 ATy(qTy,PTy(uTy,qTy)), 23609 Var("v",PTy(F32,F4)))))))))))), 23610 Close 23611 (AVar uTy, 23612 MB(MR(Close(qVar"s",Dest("data_abort",bTy,qVar"s"))), 23613 Close 23614 (bVar"b", 23615 ITE(bVar"b", 23616 Call 23617 ("TakeDataAbortException", 23618 ATy(qTy,PTy(uTy,qTy)),LU), 23619 Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU))))))))) 23620; 23621val doChangeProcessorState_def = Def 23622 ("doChangeProcessorState", 23623 TP[bVar"enable",bVar"disable",bVar"affectA",bVar"affectI", 23624 bVar"affectF",bVar"changemode",Var("mode",FTy 5)], 23625 MB(Call("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)),LU), 23626 Close 23627 (bVar"v", 23628 MB(ITE(bVar"v", 23629 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 23630 Close 23631 (Var("v",CTy"PSR"), 23632 MN(Var("v",CTy"PSR"), 23633 MB(ITE(bVar"enable", 23634 MB(ITE(bVar"affectA", 23635 MB(MR(Close 23636 (Var("s",PTy(CTy"PSR",qTy)), 23637 Mop(Fst, 23638 Var("s", 23639 PTy(CTy"PSR",qTy))))), 23640 Close 23641 (Var("v",CTy"PSR"), 23642 MB(MB(MU(TP[Var("v",CTy"PSR"), 23643 LF], 23644 PTy(CTy"PSR",qTy)), 23645 Close 23646 (Var("v", 23647 PTy(CTy"PSR",bTy)), 23648 MU(Rupd 23649 ("A", 23650 Var("v", 23651 PTy(CTy"PSR", 23652 bTy))), 23653 PTy(CTy"PSR",qTy)))), 23654 Close 23655 (Var("v",CTy"PSR"), 23656 MW(Close 23657 (Var("s", 23658 PTy(CTy"PSR", 23659 qTy)), 23660 TP[Var("v", 23661 CTy"PSR"), 23662 Mop(Snd, 23663 Var("s", 23664 PTy(CTy"PSR", 23665 qTy)))])))))), 23666 MU(LU,PTy(CTy"PSR",qTy))), 23667 Close 23668 (AVar uTy, 23669 MB(ITE(bVar"affectI", 23670 MB(MR(Close 23671 (Var("s", 23672 PTy(CTy"PSR",qTy)), 23673 Mop(Fst, 23674 Var("s", 23675 PTy(CTy"PSR", 23676 qTy))))), 23677 Close 23678 (Var("v",CTy"PSR"), 23679 MB(MB(MU(TP[Var("v", 23680 CTy"PSR"), 23681 LF], 23682 PTy(CTy"PSR", 23683 qTy)), 23684 Close 23685 (Var("v", 23686 PTy(CTy"PSR", 23687 bTy)), 23688 MU(Rupd 23689 ("I", 23690 Var("v", 23691 PTy(CTy"PSR", 23692 bTy))), 23693 PTy(CTy"PSR", 23694 qTy)))), 23695 Close 23696 (Var("v",CTy"PSR"), 23697 MW(Close 23698 (Var("s", 23699 PTy(CTy"PSR", 23700 qTy)), 23701 TP[Var("v", 23702 CTy"PSR"), 23703 Mop(Snd, 23704 Var("s", 23705 PTy(CTy"PSR", 23706 qTy)))])))))), 23707 MU(LU,PTy(CTy"PSR",qTy))), 23708 Close 23709 (AVar uTy, 23710 ITE(bVar"affectF", 23711 MB(MR(Close 23712 (Var("s", 23713 PTy(CTy"PSR", 23714 qTy)), 23715 Mop(Fst, 23716 Var("s", 23717 PTy(CTy"PSR", 23718 qTy))))), 23719 Close 23720 (Var("v",CTy"PSR"), 23721 MB(MB(MU(TP[Var("v", 23722 CTy"PSR"), 23723 LF], 23724 PTy(CTy"PSR", 23725 qTy)), 23726 Close 23727 (Var("v", 23728 PTy(CTy"PSR", 23729 bTy)), 23730 MU(Rupd 23731 ("F", 23732 Var("v", 23733 PTy(CTy"PSR", 23734 bTy))), 23735 PTy(CTy"PSR", 23736 qTy)))), 23737 Close 23738 (Var("v", 23739 CTy"PSR"), 23740 MW(Close 23741 (Var("s", 23742 PTy(CTy"PSR", 23743 qTy)), 23744 TP[Var("v", 23745 CTy"PSR"), 23746 Mop(Snd, 23747 Var("s", 23748 PTy(CTy"PSR", 23749 qTy)))])))))), 23750 MU(LU,PTy(CTy"PSR",qTy))))))), 23751 MU(LU,PTy(CTy"PSR",qTy))), 23752 Close 23753 (AVar uTy, 23754 MB(ITE(bVar"disable", 23755 MB(ITE(bVar"affectA", 23756 MB(MR(Close 23757 (Var("s", 23758 PTy(CTy"PSR",qTy)), 23759 Mop(Fst, 23760 Var("s", 23761 PTy(CTy"PSR", 23762 qTy))))), 23763 Close 23764 (Var("v",CTy"PSR"), 23765 MB(MB(MU(TP[Var("v", 23766 CTy"PSR"), 23767 LT], 23768 PTy(CTy"PSR", 23769 qTy)), 23770 Close 23771 (Var("v", 23772 PTy(CTy"PSR", 23773 bTy)), 23774 MU(Rupd 23775 ("A", 23776 Var("v", 23777 PTy(CTy"PSR", 23778 bTy))), 23779 PTy(CTy"PSR", 23780 qTy)))), 23781 Close 23782 (Var("v",CTy"PSR"), 23783 MW(Close 23784 (Var("s", 23785 PTy(CTy"PSR", 23786 qTy)), 23787 TP[Var("v", 23788 CTy"PSR"), 23789 Mop(Snd, 23790 Var("s", 23791 PTy(CTy"PSR", 23792 qTy)))])))))), 23793 MU(LU,PTy(CTy"PSR",qTy))), 23794 Close 23795 (AVar uTy, 23796 MB(ITE(bVar"affectI", 23797 MB(MR(Close 23798 (Var("s", 23799 PTy(CTy"PSR", 23800 qTy)), 23801 Mop(Fst, 23802 Var("s", 23803 PTy(CTy"PSR", 23804 qTy))))), 23805 Close 23806 (Var("v",CTy"PSR"), 23807 MB(MB(MU(TP[Var("v", 23808 CTy"PSR"), 23809 LT], 23810 PTy(CTy"PSR", 23811 qTy)), 23812 Close 23813 (Var("v", 23814 PTy(CTy"PSR", 23815 bTy)), 23816 MU(Rupd 23817 ("I", 23818 Var("v", 23819 PTy(CTy"PSR", 23820 bTy))), 23821 PTy(CTy"PSR", 23822 qTy)))), 23823 Close 23824 (Var("v", 23825 CTy"PSR"), 23826 MW(Close 23827 (Var("s", 23828 PTy(CTy"PSR", 23829 qTy)), 23830 TP[Var("v", 23831 CTy"PSR"), 23832 Mop(Snd, 23833 Var("s", 23834 PTy(CTy"PSR", 23835 qTy)))])))))), 23836 MU(LU,PTy(CTy"PSR",qTy))), 23837 Close 23838 (AVar uTy, 23839 ITE(bVar"affectF", 23840 MB(MR(Close 23841 (Var("s", 23842 PTy(CTy"PSR", 23843 qTy)), 23844 Mop(Fst, 23845 Var("s", 23846 PTy(CTy"PSR", 23847 qTy))))), 23848 Close 23849 (Var("v", 23850 CTy"PSR"), 23851 MB(MB(MU(TP[Var("v", 23852 CTy"PSR"), 23853 LT], 23854 PTy(CTy"PSR", 23855 qTy)), 23856 Close 23857 (Var("v", 23858 PTy(CTy"PSR", 23859 bTy)), 23860 MU(Rupd 23861 ("F", 23862 Var("v", 23863 PTy(CTy"PSR", 23864 bTy))), 23865 PTy(CTy"PSR", 23866 qTy)))), 23867 Close 23868 (Var("v", 23869 CTy"PSR"), 23870 MW(Close 23871 (Var("s", 23872 PTy(CTy"PSR", 23873 qTy)), 23874 TP[Var("v", 23875 CTy"PSR"), 23876 Mop(Snd, 23877 Var("s", 23878 PTy(CTy"PSR", 23879 qTy)))])))))), 23880 MU(LU, 23881 PTy(CTy"PSR",qTy))))))), 23882 MU(LU,PTy(CTy"PSR",qTy))), 23883 Close 23884 (AVar uTy, 23885 MB(ITE(bVar"changemode", 23886 MB(MR(Close 23887 (Var("s", 23888 PTy(CTy"PSR",qTy)), 23889 Mop(Fst, 23890 Var("s", 23891 PTy(CTy"PSR", 23892 qTy))))), 23893 Close 23894 (Var("v",CTy"PSR"), 23895 MB(MB(MU(TP[Var("v", 23896 CTy"PSR"), 23897 Var("mode", 23898 FTy 5)], 23899 PTy(CTy"PSR", 23900 qTy)), 23901 Close 23902 (Var("v", 23903 PTy(CTy"PSR", 23904 FTy 5)), 23905 MU(Rupd 23906 ("M", 23907 Var("v", 23908 PTy(CTy"PSR", 23909 FTy 5))), 23910 PTy(CTy"PSR", 23911 qTy)))), 23912 Close 23913 (Var("v",CTy"PSR"), 23914 MW(Close 23915 (Var("s", 23916 PTy(CTy"PSR", 23917 qTy)), 23918 TP[Var("v", 23919 CTy"PSR"), 23920 Mop(Snd, 23921 Var("s", 23922 PTy(CTy"PSR", 23923 qTy)))])))))), 23924 MU(LU,PTy(CTy"PSR",qTy))), 23925 Close 23926 (AVar uTy, 23927 MB(MR(Close 23928 (Var("s", 23929 PTy(CTy"PSR",qTy)), 23930 Mop(Fst, 23931 Var("s", 23932 PTy(CTy"PSR", 23933 qTy))))), 23934 Close 23935 (Var("v",CTy"PSR"), 23936 MB(MB(MB(MU(Call 23937 ("reg'PSR", 23938 F32, 23939 Var("v", 23940 CTy"PSR")), 23941 PTy(CTy"PSR", 23942 qTy)), 23943 Close 23944 (Var("v",F32), 23945 MU(TP[Var("v", 23946 F32), 23947 LW(15,4), 23948 LF], 23949 PTy(CTy"PSR", 23950 qTy)))), 23951 Close 23952 (Var("v", 23953 PTy(F32, 23954 PTy(F4, 23955 bTy))), 23956 MD(Call 23957 ("CPSRWriteByInstr", 23958 ATy(qTy, 23959 PTy(uTy, 23960 qTy)), 23961 Var("v", 23962 PTy(F32, 23963 PTy(F4, 23964 bTy)))), 23965 CTy"PSR"))), 23966 Close 23967 (AVar uTy, 23968 MB(MR(Close 23969 (Var("s", 23970 PTy(CTy"PSR", 23971 qTy)), 23972 Dest 23973 ("CPSR", 23974 CTy"PSR", 23975 Mop(Snd, 23976 Var("s", 23977 PTy(CTy"PSR", 23978 qTy)))))), 23979 Close 23980 (Var("v", 23981 CTy"PSR"), 23982 MB(MB(MB(MU(Dest 23983 ("M", 23984 FTy 5, 23985 Var("v", 23986 CTy"PSR")), 23987 PTy(CTy"PSR", 23988 qTy)), 23989 Close 23990 (Var("v", 23991 FTy 5), 23992 MU(EQ(Var("v", 23993 FTy 5), 23994 LW(26, 23995 5)), 23996 PTy(CTy"PSR", 23997 qTy)))), 23998 Close 23999 (bVar"b", 24000 ITE(bVar"b", 24001 MB(MD(Call 24002 ("CurrentInstrSet", 24003 ATy(qTy, 24004 PTy(CTy"InstrSet", 24005 qTy)), 24006 LU), 24007 CTy"PSR"), 24008 Close 24009 (Var("v", 24010 CTy"InstrSet"), 24011 MU(EQ(Var("v", 24012 CTy"InstrSet"), 24013 LC("InstrSet_ThumbEE", 24014 CTy"InstrSet")), 24015 PTy(CTy"PSR", 24016 qTy)))), 24017 MU(LF, 24018 PTy(CTy"PSR", 24019 qTy))))), 24020 Close 24021 (bVar"b", 24022 ITE(bVar"b", 24023 MD(Call 24024 ("raise'exception", 24025 ATy(qTy, 24026 PTy(uTy, 24027 qTy)), 24028 Call 24029 ("UNPREDICTABLE", 24030 CTy"exception", 24031 LS 24032 "ChangeProcessorState")), 24033 CTy"PSR"), 24034 MU(LU, 24035 PTy(CTy"PSR", 24036 qTy)))))))))))))))))))), 24037 MU(LU,qTy)), 24038 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))))) 24039; 24040val dfn'ChangeProcessorState_def = Def 24041 ("dfn'ChangeProcessorState", 24042 TP[bVar"enable",bVar"disable",bVar"affectA",bVar"affectI", 24043 bVar"affectF",bVar"changemode",Var("mode",FTy 5)], 24044 Call 24045 ("doChangeProcessorState",ATy(qTy,PTy(uTy,qTy)), 24046 TP[bVar"enable",bVar"disable",bVar"affectA",bVar"affectI", 24047 bVar"affectF",bVar"changemode",Var("mode",FTy 5)])) 24048; 24049val dfn'ChangeProcessorStateT1_def = Def 24050 ("dfn'ChangeProcessorStateT1", 24051 TP[bVar"enable",bVar"affectA",bVar"affectI",bVar"affectF"], 24052 Call 24053 ("doChangeProcessorState",ATy(qTy,PTy(uTy,qTy)), 24054 TP[bVar"enable",Mop(Not,bVar"enable"),bVar"affectA",bVar"affectI", 24055 bVar"affectF",LF,LX(FTy 5)])) 24056; 24057val dfn'ExceptionReturn_def = Def0 24058 ("dfn'ExceptionReturn", 24059 MB(Call("CurrentModeIsUserOrSystem",ATy(qTy,PTy(bTy,qTy)),LU), 24060 Close 24061 (bVar"v", 24062 MB(ITE(bVar"v",MU(LT,qTy), 24063 MB(Call 24064 ("CurrentInstrSet",ATy(qTy,PTy(CTy"InstrSet",qTy)),LU), 24065 Close 24066 (Var("v",CTy"InstrSet"), 24067 MU(EQ(Var("v",CTy"InstrSet"), 24068 LC("InstrSet_ThumbEE",CTy"InstrSet")),qTy)))), 24069 Close 24070 (bVar"b", 24071 ITE(bVar"b", 24072 Call 24073 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 24074 Call 24075 ("UNPREDICTABLE",CTy"exception", 24076 LS"ExceptionReturn")), 24077 MB(Call("CurrentModeIsHyp",ATy(qTy,PTy(bTy,qTy)),LU), 24078 Close 24079 (bVar"v", 24080 MB(ITE(bVar"v", 24081 MR(Close 24082 (qVar"s",Dest("ELR_hyp",F32,qVar"s"))), 24083 Call("R",ATy(qTy,PTy(F32,qTy)),LW(14,4))), 24084 Close 24085 (Var("new_pc_value",F32), 24086 MB(Const("SPSR",ATy(qTy,PTy(CTy"PSR",qTy))), 24087 Close 24088 (Var("v",CTy"PSR"), 24089 MB(MB(MB(MU(Call 24090 ("reg'PSR",F32, 24091 Var("v",CTy"PSR")),qTy), 24092 Close 24093 (Var("v",F32), 24094 MU(TP[Var("v",F32), 24095 LW(15,4),LT],qTy))), 24096 Close 24097 (Var("v",PTy(F32,PTy(F4,bTy))), 24098 Call 24099 ("CPSRWriteByInstr", 24100 ATy(qTy,PTy(uTy,qTy)), 24101 Var("v", 24102 PTy(F32,PTy(F4,bTy)))))), 24103 Close 24104 (AVar uTy, 24105 MB(MR(Close 24106 (qVar"s", 24107 Dest 24108 ("CPSR",CTy"PSR", 24109 qVar"s"))), 24110 Close 24111 (Var("v",CTy"PSR"), 24112 MB(MB(MB(MU(Dest 24113 ("M",FTy 5, 24114 Var("v", 24115 CTy"PSR")), 24116 qTy), 24117 Close 24118 (Var("v",FTy 5), 24119 MU(EQ(Var("v", 24120 FTy 5), 24121 LW(26,5)), 24122 qTy))), 24123 Close 24124 (bVar"b", 24125 ITE(bVar"b", 24126 MB(Call 24127 ("CurrentInstrSet", 24128 ATy(qTy, 24129 PTy(CTy"InstrSet", 24130 qTy)), 24131 LU), 24132 Close 24133 (Var("v", 24134 CTy"InstrSet"), 24135 MU(EQ(Var("v", 24136 CTy"InstrSet"), 24137 LC("InstrSet_ThumbEE", 24138 CTy"InstrSet")), 24139 qTy))), 24140 MU(LF,qTy)))), 24141 Close 24142 (bVar"b", 24143 ITE(bVar"b", 24144 Call 24145 ("raise'exception", 24146 ATy(qTy, 24147 PTy(uTy, 24148 qTy)), 24149 Call 24150 ("UNPREDICTABLE", 24151 CTy"exception", 24152 LS 24153 "ExceptionReturn")), 24154 Call 24155 ("BranchWritePC", 24156 ATy(qTy, 24157 PTy(uTy, 24158 qTy)), 24159 Var("new_pc_value", 24160 F32))))))))))))))))))))) 24161; 24162val dfn'HypervisorCall_def = Def 24163 ("dfn'HypervisorCall",Var("imm16",F16), 24164 MB(Call("HaveVirtExt",ATy(qTy,PTy(bTy,qTy)),LU), 24165 Close 24166 (bVar"v", 24167 MB(MB(MB(MU(Mop(Not,bVar"v"),qTy), 24168 Close 24169 (bVar"b", 24170 ITE(bVar"b",MU(LT,qTy), 24171 Call("IsSecure",ATy(qTy,PTy(bTy,qTy)),LU)))), 24172 Close 24173 (bVar"b", 24174 ITE(bVar"b",MU(LT,qTy), 24175 MB(Call 24176 ("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)), 24177 LU),Close(bVar"v",MU(Mop(Not,bVar"v"),qTy)))))), 24178 Close 24179 (bVar"b", 24180 ITE(bVar"b", 24181 Call 24182 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 24183 Call 24184 ("UNPREDICTABLE",CTy"exception",LS"HypervisorCall")), 24185 MB(MR(Close(qVar"s",Dest("CP15",CTy"CP15",qVar"s"))), 24186 Close 24187 (Var("v",CTy"CP15"), 24188 MB(MB(MB(MU(Dest 24189 ("SCR",CTy"SCR",Var("v",CTy"CP15")), 24190 qTy), 24191 Close 24192 (Var("v",CTy"SCR"), 24193 MU(Dest("HCE",bTy,Var("v",CTy"SCR")), 24194 qTy))), 24195 Close(bVar"v",MU(Mop(Not,bVar"v"),qTy))), 24196 Close 24197 (bVar"b", 24198 ITE(bVar"b", 24199 MB(Call 24200 ("CurrentModeIsHyp", 24201 ATy(qTy,PTy(bTy,qTy)),LU), 24202 Close 24203 (bVar"b", 24204 ITE(bVar"b", 24205 Call 24206 ("raise'exception", 24207 ATy(qTy,PTy(uTy,qTy)), 24208 Call 24209 ("UNPREDICTABLE", 24210 CTy"exception", 24211 LS"HypervisorCall")), 24212 Call 24213 ("TakeUndefInstrException", 24214 ATy(qTy,PTy(uTy,qTy)),LU)))), 24215 Call 24216 ("CallHypervisor", 24217 ATy(qTy,PTy(uTy,qTy)), 24218 Var("imm16",F16))))))))))))) 24219; 24220val dfn'MoveToRegisterFromSpecial_def = Def 24221 ("dfn'MoveToRegisterFromSpecial",TP[bVar"read_spsr",Var("d",F4)], 24222 MB(ITE(bVar"read_spsr", 24223 MB(Call("CurrentModeIsUserOrSystem",ATy(qTy,PTy(bTy,qTy)),LU), 24224 Close 24225 (bVar"b", 24226 ITE(bVar"b", 24227 Call 24228 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 24229 Call 24230 ("UNPREDICTABLE",CTy"exception", 24231 LS"MoveToRegisterFromSpecial")), 24232 MB(Const("SPSR",ATy(qTy,PTy(CTy"PSR",qTy))), 24233 Close 24234 (Var("v",CTy"PSR"), 24235 MB(MB(MU(Call("reg'PSR",F32,Var("v",CTy"PSR")), 24236 qTy), 24237 Close 24238 (Var("v",F32), 24239 MU(TP[Var("v",F32),Var("d",F4)],qTy))), 24240 Close 24241 (Var("v",PTy(F32,F4)), 24242 Call 24243 ("write'R",ATy(qTy,PTy(uTy,qTy)), 24244 Var("v",PTy(F32,F4)))))))))), 24245 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 24246 Close 24247 (Var("v",CTy"PSR"), 24248 MB(MB(MB(MU(Call("reg'PSR",F32,Var("v",CTy"PSR")),qTy), 24249 Close 24250 (Var("v",F32), 24251 MU(Bop(BAnd,Var("v",F32),LW(4177462239,32)), 24252 qTy))), 24253 Close 24254 (Var("v",F32),MU(TP[Var("v",F32),Var("d",F4)],qTy))), 24255 Close 24256 (Var("v",PTy(F32,F4)), 24257 Call 24258 ("write'R",ATy(qTy,PTy(uTy,qTy)), 24259 Var("v",PTy(F32,F4)))))))), 24260 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))) 24261; 24262val dfn'MoveToRegisterFromBankedOrSpecial_def = Def 24263 ("dfn'MoveToRegisterFromBankedOrSpecial", 24264 TP[bVar"read_spsr",Var("SYSm",FTy 5),Var("d",F4)], 24265 MB(Call("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)),LU), 24266 Close 24267 (bVar"v", 24268 MB(MB(MU(Mop(Not,bVar"v"),qTy), 24269 Close 24270 (bVar"b", 24271 ITE(bVar"b", 24272 Call 24273 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 24274 Call 24275 ("UNPREDICTABLE",CTy"exception", 24276 LS"MoveToRegisterFromBankedOrSpecial")), 24277 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 24278 Close 24279 (Var("v",CTy"PSR"), 24280 MB(MU(Dest("M",FTy 5,Var("v",CTy"PSR")),qTy), 24281 Close 24282 (Var("mode",FTy 5), 24283 ITE(bVar"read_spsr", 24284 MB(Call 24285 ("SPSRAccessValid", 24286 ATy(qTy,PTy(uTy,qTy)), 24287 TP[Var("SYSm",FTy 5), 24288 Var("mode",FTy 5)]), 24289 Close 24290 (uVar"_0", 24291 CS(Var("SYSm",FTy 5), 24292 [(LW(14,5), 24293 MB(MR(Close 24294 (qVar"s", 24295 Dest 24296 ("SPSR_fiq", 24297 CTy"PSR", 24298 qVar"s"))), 24299 Close 24300 (Var("v",CTy"PSR"), 24301 MB(MB(MU(Call 24302 ("reg'PSR", 24303 F32, 24304 Var("v", 24305 CTy"PSR")), 24306 qTy), 24307 Close 24308 (Var("v", 24309 F32), 24310 MU(TP[Var("v", 24311 F32), 24312 Var("d", 24313 F4)], 24314 qTy))), 24315 Close 24316 (Var("v", 24317 PTy(F32, 24318 F4)), 24319 Call 24320 ("write'R", 24321 ATy(qTy, 24322 PTy(uTy, 24323 qTy)), 24324 Var("v", 24325 PTy(F32, 24326 F4)))))))), 24327 (LW(16,5), 24328 MB(MR(Close 24329 (qVar"s", 24330 Dest 24331 ("SPSR_irq", 24332 CTy"PSR", 24333 qVar"s"))), 24334 Close 24335 (Var("v",CTy"PSR"), 24336 MB(MB(MU(Call 24337 ("reg'PSR", 24338 F32, 24339 Var("v", 24340 CTy"PSR")), 24341 qTy), 24342 Close 24343 (Var("v", 24344 F32), 24345 MU(TP[Var("v", 24346 F32), 24347 Var("d", 24348 F4)], 24349 qTy))), 24350 Close 24351 (Var("v", 24352 PTy(F32, 24353 F4)), 24354 Call 24355 ("write'R", 24356 ATy(qTy, 24357 PTy(uTy, 24358 qTy)), 24359 Var("v", 24360 PTy(F32, 24361 F4)))))))), 24362 (LW(18,5), 24363 MB(MR(Close 24364 (qVar"s", 24365 Dest 24366 ("SPSR_svc", 24367 CTy"PSR", 24368 qVar"s"))), 24369 Close 24370 (Var("v",CTy"PSR"), 24371 MB(MB(MU(Call 24372 ("reg'PSR", 24373 F32, 24374 Var("v", 24375 CTy"PSR")), 24376 qTy), 24377 Close 24378 (Var("v", 24379 F32), 24380 MU(TP[Var("v", 24381 F32), 24382 Var("d", 24383 F4)], 24384 qTy))), 24385 Close 24386 (Var("v", 24387 PTy(F32, 24388 F4)), 24389 Call 24390 ("write'R", 24391 ATy(qTy, 24392 PTy(uTy, 24393 qTy)), 24394 Var("v", 24395 PTy(F32, 24396 F4)))))))), 24397 (LW(20,5), 24398 MB(MR(Close 24399 (qVar"s", 24400 Dest 24401 ("SPSR_abt", 24402 CTy"PSR", 24403 qVar"s"))), 24404 Close 24405 (Var("v",CTy"PSR"), 24406 MB(MB(MU(Call 24407 ("reg'PSR", 24408 F32, 24409 Var("v", 24410 CTy"PSR")), 24411 qTy), 24412 Close 24413 (Var("v", 24414 F32), 24415 MU(TP[Var("v", 24416 F32), 24417 Var("d", 24418 F4)], 24419 qTy))), 24420 Close 24421 (Var("v", 24422 PTy(F32, 24423 F4)), 24424 Call 24425 ("write'R", 24426 ATy(qTy, 24427 PTy(uTy, 24428 qTy)), 24429 Var("v", 24430 PTy(F32, 24431 F4)))))))), 24432 (LW(22,5), 24433 MB(MR(Close 24434 (qVar"s", 24435 Dest 24436 ("SPSR_und", 24437 CTy"PSR", 24438 qVar"s"))), 24439 Close 24440 (Var("v",CTy"PSR"), 24441 MB(MB(MU(Call 24442 ("reg'PSR", 24443 F32, 24444 Var("v", 24445 CTy"PSR")), 24446 qTy), 24447 Close 24448 (Var("v", 24449 F32), 24450 MU(TP[Var("v", 24451 F32), 24452 Var("d", 24453 F4)], 24454 qTy))), 24455 Close 24456 (Var("v", 24457 PTy(F32, 24458 F4)), 24459 Call 24460 ("write'R", 24461 ATy(qTy, 24462 PTy(uTy, 24463 qTy)), 24464 Var("v", 24465 PTy(F32, 24466 F4)))))))), 24467 (LW(28,5), 24468 MB(MR(Close 24469 (qVar"s", 24470 Dest 24471 ("SPSR_mon", 24472 CTy"PSR", 24473 qVar"s"))), 24474 Close 24475 (Var("v",CTy"PSR"), 24476 MB(MB(MU(Call 24477 ("reg'PSR", 24478 F32, 24479 Var("v", 24480 CTy"PSR")), 24481 qTy), 24482 Close 24483 (Var("v", 24484 F32), 24485 MU(TP[Var("v", 24486 F32), 24487 Var("d", 24488 F4)], 24489 qTy))), 24490 Close 24491 (Var("v", 24492 PTy(F32, 24493 F4)), 24494 Call 24495 ("write'R", 24496 ATy(qTy, 24497 PTy(uTy, 24498 qTy)), 24499 Var("v", 24500 PTy(F32, 24501 F4)))))))), 24502 (LW(30,5), 24503 MB(MR(Close 24504 (qVar"s", 24505 Dest 24506 ("SPSR_hyp", 24507 CTy"PSR", 24508 qVar"s"))), 24509 Close 24510 (Var("v",CTy"PSR"), 24511 MB(MB(MU(Call 24512 ("reg'PSR", 24513 F32, 24514 Var("v", 24515 CTy"PSR")), 24516 qTy), 24517 Close 24518 (Var("v", 24519 F32), 24520 MU(TP[Var("v", 24521 F32), 24522 Var("d", 24523 F4)], 24524 qTy))), 24525 Close 24526 (Var("v", 24527 PTy(F32, 24528 F4)), 24529 Call 24530 ("write'R", 24531 ATy(qTy, 24532 PTy(uTy, 24533 qTy)), 24534 Var("v", 24535 PTy(F32, 24536 F4)))))))), 24537 (AVar(FTy 5),MU(LU,qTy))]))), 24538 MB(Call 24539 ("BankedRegisterAccessValid", 24540 ATy(qTy,PTy(uTy,qTy)), 24541 TP[Var("SYSm",FTy 5), 24542 Var("mode",FTy 5)]), 24543 Close 24544 (AVar uTy, 24545 ITB([(EQ(EX(Var("SYSm",FTy 5), 24546 LN 4,LN 3,FTy 2), 24547 LW(0,2)), 24548 MB(Call 24549 ("Rmode", 24550 ATy(qTy, 24551 PTy(F32,qTy)), 24552 TP[Bop(Add, 24553 Mop(Cast F4, 24554 EX(Var("SYSm", 24555 FTy 5), 24556 LN 2, 24557 LN 0, 24558 FTy 3)), 24559 LW(8,4)), 24560 LW(16,5)]), 24561 Close 24562 (Var("v",F32), 24563 MB(MU(TP[Var("v", 24564 F32), 24565 Var("d", 24566 F4)], 24567 qTy), 24568 Close 24569 (Var("v", 24570 PTy(F32, 24571 F4)), 24572 Call 24573 ("write'R", 24574 ATy(qTy, 24575 PTy(uTy, 24576 qTy)), 24577 Var("v", 24578 PTy(F32, 24579 F4)))))))), 24580 (EQ(EX(Var("SYSm",FTy 5), 24581 LN 4,LN 3,FTy 2), 24582 LW(1,2)), 24583 MB(Call 24584 ("Rmode", 24585 ATy(qTy, 24586 PTy(F32,qTy)), 24587 TP[Bop(Add, 24588 Mop(Cast F4, 24589 EX(Var("SYSm", 24590 FTy 5), 24591 LN 2, 24592 LN 0, 24593 FTy 3)), 24594 LW(8,4)), 24595 LW(17,5)]), 24596 Close 24597 (Var("v",F32), 24598 MB(MU(TP[Var("v", 24599 F32), 24600 Var("d", 24601 F4)], 24602 qTy), 24603 Close 24604 (Var("v", 24605 PTy(F32, 24606 F4)), 24607 Call 24608 ("write'R", 24609 ATy(qTy, 24610 PTy(uTy, 24611 qTy)), 24612 Var("v", 24613 PTy(F32, 24614 F4)))))))), 24615 (EQ(EX(Var("SYSm",FTy 5), 24616 LN 4,LN 3,FTy 2), 24617 LW(3,2)), 24618 ITB([(Mop(Not, 24619 Bop(Bit, 24620 Var("SYSm", 24621 FTy 5), 24622 LN 1)), 24623 MB(Call 24624 ("Rmode", 24625 ATy(qTy, 24626 PTy(F32, 24627 qTy)), 24628 TP[Bop(Add, 24629 Mop(Cast 24630 F4, 24631 Bop(Bit, 24632 Var("SYSm", 24633 FTy 5), 24634 LN 24635 0)), 24636 LW(13, 24637 4)), 24638 LW(22,5)]), 24639 Close 24640 (Var("v",F32), 24641 MB(MU(TP[Var("v", 24642 F32), 24643 Var("d", 24644 F4)], 24645 qTy), 24646 Close 24647 (Var("v", 24648 PTy(F32, 24649 F4)), 24650 Call 24651 ("write'R", 24652 ATy(qTy, 24653 PTy(uTy, 24654 qTy)), 24655 Var("v", 24656 PTy(F32, 24657 F4)))))))), 24658 (Mop(Not, 24659 Bop(Bit, 24660 Var("SYSm", 24661 FTy 5), 24662 LN 0)), 24663 MB(Call 24664 ("Rmode", 24665 ATy(qTy, 24666 PTy(F32, 24667 qTy)), 24668 TP[LW(13,4), 24669 LW(26,5)]), 24670 Close 24671 (Var("v",F32), 24672 MB(MU(TP[Var("v", 24673 F32), 24674 Var("d", 24675 F4)], 24676 qTy), 24677 Close 24678 (Var("v", 24679 PTy(F32, 24680 F4)), 24681 Call 24682 ("write'R", 24683 ATy(qTy, 24684 PTy(uTy, 24685 qTy)), 24686 Var("v", 24687 PTy(F32, 24688 F4))))))))], 24689 MB(MR(Close 24690 (qVar"s", 24691 Dest 24692 ("ELR_hyp", 24693 F32, 24694 qVar"s"))), 24695 Close 24696 (Var("v",F32), 24697 MB(MU(TP[Var("v", 24698 F32), 24699 Var("d", 24700 F4)], 24701 qTy), 24702 Close 24703 (Var("v", 24704 PTy(F32, 24705 F4)), 24706 Call 24707 ("write'R", 24708 ATy(qTy, 24709 PTy(uTy, 24710 qTy)), 24711 Var("v", 24712 PTy(F32, 24713 F4)))))))))], 24714 MN(LX(FTy 5), 24715 MB(MR(Close 24716 (Var("s", 24717 PTy(FTy 5, 24718 qTy)), 24719 Mop(Fst, 24720 Var("s", 24721 PTy(FTy 5, 24722 qTy))))), 24723 Close 24724 (Var("v",FTy 5), 24725 MB(MB(MU(BFI(LN 0, 24726 LN 0, 24727 Mop(Cast 24728 F1, 24729 Bop(Or, 24730 Bop(Bit, 24731 Var("SYSm", 24732 FTy 5), 24733 LN 24734 2), 24735 Bop(Bit, 24736 Var("SYSm", 24737 FTy 5), 24738 LN 24739 1))), 24740 Var("v", 24741 FTy 5)), 24742 PTy(FTy 5, 24743 qTy)), 24744 Close 24745 (Var("v", 24746 FTy 5), 24747 MW(Close 24748 (Var("s", 24749 PTy(FTy 5, 24750 qTy)), 24751 TP[Var("v", 24752 FTy 5), 24753 Mop(Snd, 24754 Var("s", 24755 PTy(FTy 5, 24756 qTy)))])))), 24757 Close 24758 (AVar uTy, 24759 MB(MR(Close 24760 (Var("s", 24761 PTy(FTy 5, 24762 qTy)), 24763 Mop(Fst, 24764 Var("s", 24765 PTy(FTy 5, 24766 qTy))))), 24767 Close 24768 (Var("v", 24769 FTy 5), 24770 MB(MB(MU(BFI(LN 24771 1, 24772 LN 24773 1, 24774 Mop(Cast 24775 F1, 24776 LT), 24777 Var("v", 24778 FTy 5)), 24779 PTy(FTy 5, 24780 qTy)), 24781 Close 24782 (Var("v", 24783 FTy 5), 24784 MW(Close 24785 (Var("s", 24786 PTy(FTy 5, 24787 qTy)), 24788 TP[Var("v", 24789 FTy 5), 24790 Mop(Snd, 24791 Var("s", 24792 PTy(FTy 5, 24793 qTy)))])))), 24794 Close 24795 (AVar 24796 uTy, 24797 MB(MR(Close 24798 (Var("s", 24799 PTy(FTy 5, 24800 qTy)), 24801 Mop(Fst, 24802 Var("s", 24803 PTy(FTy 5, 24804 qTy))))), 24805 Close 24806 (Var("v", 24807 FTy 5), 24808 MB(MB(MU(BFI(LN 24809 2, 24810 LN 24811 2, 24812 Mop(Cast 24813 F1, 24814 Bop(And, 24815 Bop(Bit, 24816 Var("SYSm", 24817 FTy 5), 24818 LN 24819 2), 24820 Mop(Not, 24821 Bop(Bit, 24822 Var("SYSm", 24823 FTy 5), 24824 LN 24825 1)))), 24826 Var("v", 24827 FTy 5)), 24828 PTy(FTy 5, 24829 qTy)), 24830 Close 24831 (Var("v", 24832 FTy 5), 24833 MW(Close 24834 (Var("s", 24835 PTy(FTy 5, 24836 qTy)), 24837 TP[Var("v", 24838 FTy 5), 24839 Mop(Snd, 24840 Var("s", 24841 PTy(FTy 5, 24842 qTy)))])))), 24843 Close 24844 (AVar 24845 uTy, 24846 MB(MR(Close 24847 (Var("s", 24848 PTy(FTy 5, 24849 qTy)), 24850 Mop(Fst, 24851 Var("s", 24852 PTy(FTy 5, 24853 qTy))))), 24854 Close 24855 (Var("v", 24856 FTy 5), 24857 MB(MB(MU(BFI(LN 24858 3, 24859 LN 24860 3, 24861 Mop(Cast 24862 F1, 24863 Bop(And, 24864 Bop(Bit, 24865 Var("SYSm", 24866 FTy 5), 24867 LN 24868 2), 24869 Bop(Bit, 24870 Var("SYSm", 24871 FTy 5), 24872 LN 24873 1))), 24874 Var("v", 24875 FTy 5)), 24876 PTy(FTy 5, 24877 qTy)), 24878 Close 24879 (Var("v", 24880 FTy 5), 24881 MW(Close 24882 (Var("s", 24883 PTy(FTy 5, 24884 qTy)), 24885 TP[Var("v", 24886 FTy 5), 24887 Mop(Snd, 24888 Var("s", 24889 PTy(FTy 5, 24890 qTy)))])))), 24891 Close 24892 (AVar 24893 uTy, 24894 MB(MR(Close 24895 (Var("s", 24896 PTy(FTy 5, 24897 qTy)), 24898 Mop(Fst, 24899 Var("s", 24900 PTy(FTy 5, 24901 qTy))))), 24902 Close 24903 (Var("v", 24904 FTy 5), 24905 MB(MB(MU(BFI(LN 24906 4, 24907 LN 24908 4, 24909 Mop(Cast 24910 F1, 24911 LT), 24912 Var("v", 24913 FTy 5)), 24914 PTy(FTy 5, 24915 qTy)), 24916 Close 24917 (Var("v", 24918 FTy 5), 24919 MW(Close 24920 (Var("s", 24921 PTy(FTy 5, 24922 qTy)), 24923 TP[Var("v", 24924 FTy 5), 24925 Mop(Snd, 24926 Var("s", 24927 PTy(FTy 5, 24928 qTy)))])))), 24929 Close 24930 (AVar 24931 uTy, 24932 MB(MR(Close 24933 (Var("s", 24934 PTy(FTy 5, 24935 qTy)), 24936 Mop(Fst, 24937 Var("s", 24938 PTy(FTy 5, 24939 qTy))))), 24940 Close 24941 (Var("v", 24942 FTy 5), 24943 MB(MU(EQ(Var("mode", 24944 FTy 5), 24945 Var("v", 24946 FTy 5)), 24947 PTy(FTy 5, 24948 qTy)), 24949 Close 24950 (bVar"b", 24951 ITE(bVar"b", 24952 MD(Call 24953 ("raise'exception", 24954 ATy(qTy, 24955 PTy(uTy, 24956 qTy)), 24957 Call 24958 ("UNPREDICTABLE", 24959 CTy"exception", 24960 LS 24961 "MoveToRegisterFromBankedOrSpecial")), 24962 FTy 5), 24963 MB(MR(Close 24964 (Var("s", 24965 PTy(FTy 5, 24966 qTy)), 24967 Mop(Fst, 24968 Var("s", 24969 PTy(FTy 5, 24970 qTy))))), 24971 Close 24972 (Var("v", 24973 FTy 5), 24974 MB(MB(MB(MU(TP[Bop(Add, 24975 Mop(Cast 24976 F4, 24977 Bop(Bit, 24978 Var("SYSm", 24979 FTy 5), 24980 LN 24981 0)), 24982 LW(13, 24983 4)), 24984 Var("v", 24985 FTy 5)], 24986 PTy(FTy 5, 24987 qTy)), 24988 Close 24989 (Var("v", 24990 PTy(F4, 24991 FTy 5)), 24992 MD(Call 24993 ("Rmode", 24994 ATy(qTy, 24995 PTy(F32, 24996 qTy)), 24997 Var("v", 24998 PTy(F4, 24999 FTy 5))), 25000 FTy 5))), 25001 Close 25002 (Var("v", 25003 F32), 25004 MU(TP[Var("v", 25005 F32), 25006 Var("d", 25007 F4)], 25008 PTy(FTy 5, 25009 qTy)))), 25010 Close 25011 (Var("v", 25012 PTy(F32, 25013 F4)), 25014 MD(Call 25015 ("write'R", 25016 ATy(qTy, 25017 PTy(uTy, 25018 qTy)), 25019 Var("v", 25020 PTy(F32, 25021 F4))), 25022 FTy 5)))))))))))))))))))))))))))))))))))))))))), 25023 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))))) 25024; 25025val dfn'MoveToSpecialFromImmediate_def = Def 25026 ("dfn'MoveToSpecialFromImmediate", 25027 TP[bVar"write_spsr",Var("imm32",F32),Var("mask",F4)], 25028 MB(ITE(bVar"write_spsr", 25029 Call 25030 ("SPSRWriteByInstr",ATy(qTy,PTy(uTy,qTy)), 25031 TP[Var("imm32",F32),Var("mask",F4)]), 25032 MB(Call 25033 ("CPSRWriteByInstr",ATy(qTy,PTy(uTy,qTy)), 25034 TP[Var("imm32",F32),Var("mask",F4),LF]), 25035 Close 25036 (AVar uTy, 25037 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 25038 Close 25039 (Var("v",CTy"PSR"), 25040 MB(MB(MB(MU(Dest("M",FTy 5,Var("v",CTy"PSR")),qTy), 25041 Close 25042 (Var("v",FTy 5), 25043 MU(EQ(Var("v",FTy 5),LW(26,5)),qTy))), 25044 Close 25045 (bVar"b", 25046 ITE(bVar"b", 25047 MB(Call 25048 ("CurrentInstrSet", 25049 ATy(qTy,PTy(CTy"InstrSet",qTy)), 25050 LU), 25051 Close 25052 (Var("v",CTy"InstrSet"), 25053 MU(EQ(Var("v",CTy"InstrSet"), 25054 LC("InstrSet_ThumbEE", 25055 CTy"InstrSet")),qTy))), 25056 MU(LF,qTy)))), 25057 Close 25058 (bVar"b", 25059 ITE(bVar"b", 25060 Call 25061 ("raise'exception", 25062 ATy(qTy,PTy(uTy,qTy)), 25063 Call 25064 ("UNPREDICTABLE",CTy"exception", 25065 LS"MoveToSpecialFromImmediate")), 25066 MU(LU,qTy))))))))), 25067 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))) 25068; 25069val dfn'MoveToSpecialFromRegister_def = Def 25070 ("dfn'MoveToSpecialFromRegister", 25071 TP[bVar"write_spsr",Var("n",F4),Var("mask",F4)], 25072 MB(ITE(bVar"write_spsr", 25073 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 25074 Close 25075 (Var("v",F32), 25076 MB(MU(TP[Var("v",F32),Var("mask",F4)],qTy), 25077 Close 25078 (Var("v",PTy(F32,F4)), 25079 Call 25080 ("SPSRWriteByInstr",ATy(qTy,PTy(uTy,qTy)), 25081 Var("v",PTy(F32,F4))))))), 25082 MB(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 25083 Close 25084 (Var("v",F32), 25085 MB(MB(MU(TP[Var("v",F32),Var("mask",F4),LF],qTy), 25086 Close 25087 (Var("v",PTy(F32,PTy(F4,bTy))), 25088 Call 25089 ("CPSRWriteByInstr",ATy(qTy,PTy(uTy,qTy)), 25090 Var("v",PTy(F32,PTy(F4,bTy)))))), 25091 Close 25092 (AVar uTy, 25093 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 25094 Close 25095 (Var("v",CTy"PSR"), 25096 MB(MB(MB(MU(Dest("M",FTy 5,Var("v",CTy"PSR")), 25097 qTy), 25098 Close 25099 (Var("v",FTy 5), 25100 MU(EQ(Var("v",FTy 5),LW(26,5)),qTy))), 25101 Close 25102 (bVar"b", 25103 ITE(bVar"b", 25104 MB(Call 25105 ("CurrentInstrSet", 25106 ATy(qTy, 25107 PTy(CTy"InstrSet",qTy)), 25108 LU), 25109 Close 25110 (Var("v",CTy"InstrSet"), 25111 MU(EQ(Var("v",CTy"InstrSet"), 25112 LC("InstrSet_ThumbEE", 25113 CTy"InstrSet")), 25114 qTy))),MU(LF,qTy)))), 25115 Close 25116 (bVar"b", 25117 ITE(bVar"b", 25118 Call 25119 ("raise'exception", 25120 ATy(qTy,PTy(uTy,qTy)), 25121 Call 25122 ("UNPREDICTABLE", 25123 CTy"exception", 25124 LS"MoveToSpecialFromRegister")), 25125 MU(LU,qTy))))))))))), 25126 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))) 25127; 25128val dfn'MoveToBankedOrSpecialRegister_def = Def 25129 ("dfn'MoveToBankedOrSpecialRegister", 25130 TP[bVar"write_spsr",Var("SYSm",FTy 5),Var("n",F4)], 25131 MB(Call("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)),LU), 25132 Close 25133 (bVar"v", 25134 MB(MU(Mop(Not,bVar"v"),qTy), 25135 Close 25136 (bVar"b", 25137 ITE(bVar"b", 25138 Call 25139 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 25140 Call 25141 ("UNPREDICTABLE",CTy"exception", 25142 LS"MoveToBankedOrSpecialRegister")), 25143 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 25144 Close 25145 (Var("v",CTy"PSR"), 25146 MB(MU(Dest("M",FTy 5,Var("v",CTy"PSR")),qTy), 25147 Close 25148 (Var("mode",FTy 5), 25149 MB(ITE(bVar"write_spsr", 25150 MB(Call 25151 ("SPSRAccessValid", 25152 ATy(qTy,PTy(uTy,qTy)), 25153 TP[Var("SYSm",FTy 5), 25154 Var("mode",FTy 5)]), 25155 Close 25156 (uVar"_0", 25157 CS(Var("SYSm",FTy 5), 25158 [(LW(14,5), 25159 MB(MR(Close 25160 (qVar"s", 25161 Dest 25162 ("SPSR_fiq", 25163 CTy"PSR", 25164 qVar"s"))), 25165 Close 25166 (Var("v",CTy"PSR"), 25167 MB(MB(MB(Call 25168 ("R", 25169 ATy(qTy, 25170 PTy(F32, 25171 qTy)), 25172 Var("n", 25173 F4)), 25174 Close 25175 (Var("v0", 25176 F32), 25177 MU(TP[Var("v", 25178 CTy"PSR"), 25179 Var("v0", 25180 F32)], 25181 qTy))), 25182 Close 25183 (Var("v", 25184 PTy(CTy"PSR", 25185 F32)), 25186 MU(Call 25187 ("write'reg'PSR", 25188 CTy"PSR", 25189 Var("v", 25190 PTy(CTy"PSR", 25191 F32))), 25192 qTy))), 25193 Close 25194 (Var("v", 25195 CTy"PSR"), 25196 MW(Close 25197 (qVar"s", 25198 Rupd 25199 ("SPSR_fiq", 25200 TP[qVar"s", 25201 Var("v", 25202 CTy"PSR")])))))))), 25203 (LW(16,5), 25204 MB(MR(Close 25205 (qVar"s", 25206 Dest 25207 ("SPSR_irq", 25208 CTy"PSR", 25209 qVar"s"))), 25210 Close 25211 (Var("v",CTy"PSR"), 25212 MB(MB(MB(Call 25213 ("R", 25214 ATy(qTy, 25215 PTy(F32, 25216 qTy)), 25217 Var("n", 25218 F4)), 25219 Close 25220 (Var("v0", 25221 F32), 25222 MU(TP[Var("v", 25223 CTy"PSR"), 25224 Var("v0", 25225 F32)], 25226 qTy))), 25227 Close 25228 (Var("v", 25229 PTy(CTy"PSR", 25230 F32)), 25231 MU(Call 25232 ("write'reg'PSR", 25233 CTy"PSR", 25234 Var("v", 25235 PTy(CTy"PSR", 25236 F32))), 25237 qTy))), 25238 Close 25239 (Var("v", 25240 CTy"PSR"), 25241 MW(Close 25242 (qVar"s", 25243 Rupd 25244 ("SPSR_irq", 25245 TP[qVar"s", 25246 Var("v", 25247 CTy"PSR")])))))))), 25248 (LW(18,5), 25249 MB(MR(Close 25250 (qVar"s", 25251 Dest 25252 ("SPSR_svc", 25253 CTy"PSR", 25254 qVar"s"))), 25255 Close 25256 (Var("v",CTy"PSR"), 25257 MB(MB(MB(Call 25258 ("R", 25259 ATy(qTy, 25260 PTy(F32, 25261 qTy)), 25262 Var("n", 25263 F4)), 25264 Close 25265 (Var("v0", 25266 F32), 25267 MU(TP[Var("v", 25268 CTy"PSR"), 25269 Var("v0", 25270 F32)], 25271 qTy))), 25272 Close 25273 (Var("v", 25274 PTy(CTy"PSR", 25275 F32)), 25276 MU(Call 25277 ("write'reg'PSR", 25278 CTy"PSR", 25279 Var("v", 25280 PTy(CTy"PSR", 25281 F32))), 25282 qTy))), 25283 Close 25284 (Var("v", 25285 CTy"PSR"), 25286 MW(Close 25287 (qVar"s", 25288 Rupd 25289 ("SPSR_svc", 25290 TP[qVar"s", 25291 Var("v", 25292 CTy"PSR")])))))))), 25293 (LW(20,5), 25294 MB(MR(Close 25295 (qVar"s", 25296 Dest 25297 ("SPSR_abt", 25298 CTy"PSR", 25299 qVar"s"))), 25300 Close 25301 (Var("v",CTy"PSR"), 25302 MB(MB(MB(Call 25303 ("R", 25304 ATy(qTy, 25305 PTy(F32, 25306 qTy)), 25307 Var("n", 25308 F4)), 25309 Close 25310 (Var("v0", 25311 F32), 25312 MU(TP[Var("v", 25313 CTy"PSR"), 25314 Var("v0", 25315 F32)], 25316 qTy))), 25317 Close 25318 (Var("v", 25319 PTy(CTy"PSR", 25320 F32)), 25321 MU(Call 25322 ("write'reg'PSR", 25323 CTy"PSR", 25324 Var("v", 25325 PTy(CTy"PSR", 25326 F32))), 25327 qTy))), 25328 Close 25329 (Var("v", 25330 CTy"PSR"), 25331 MW(Close 25332 (qVar"s", 25333 Rupd 25334 ("SPSR_abt", 25335 TP[qVar"s", 25336 Var("v", 25337 CTy"PSR")])))))))), 25338 (LW(22,5), 25339 MB(MR(Close 25340 (qVar"s", 25341 Dest 25342 ("SPSR_und", 25343 CTy"PSR", 25344 qVar"s"))), 25345 Close 25346 (Var("v",CTy"PSR"), 25347 MB(MB(MB(Call 25348 ("R", 25349 ATy(qTy, 25350 PTy(F32, 25351 qTy)), 25352 Var("n", 25353 F4)), 25354 Close 25355 (Var("v0", 25356 F32), 25357 MU(TP[Var("v", 25358 CTy"PSR"), 25359 Var("v0", 25360 F32)], 25361 qTy))), 25362 Close 25363 (Var("v", 25364 PTy(CTy"PSR", 25365 F32)), 25366 MU(Call 25367 ("write'reg'PSR", 25368 CTy"PSR", 25369 Var("v", 25370 PTy(CTy"PSR", 25371 F32))), 25372 qTy))), 25373 Close 25374 (Var("v", 25375 CTy"PSR"), 25376 MW(Close 25377 (qVar"s", 25378 Rupd 25379 ("SPSR_und", 25380 TP[qVar"s", 25381 Var("v", 25382 CTy"PSR")])))))))), 25383 (LW(28,5), 25384 MB(MR(Close 25385 (qVar"s", 25386 Dest 25387 ("SPSR_mon", 25388 CTy"PSR", 25389 qVar"s"))), 25390 Close 25391 (Var("v",CTy"PSR"), 25392 MB(MB(MB(Call 25393 ("R", 25394 ATy(qTy, 25395 PTy(F32, 25396 qTy)), 25397 Var("n", 25398 F4)), 25399 Close 25400 (Var("v0", 25401 F32), 25402 MU(TP[Var("v", 25403 CTy"PSR"), 25404 Var("v0", 25405 F32)], 25406 qTy))), 25407 Close 25408 (Var("v", 25409 PTy(CTy"PSR", 25410 F32)), 25411 MU(Call 25412 ("write'reg'PSR", 25413 CTy"PSR", 25414 Var("v", 25415 PTy(CTy"PSR", 25416 F32))), 25417 qTy))), 25418 Close 25419 (Var("v", 25420 CTy"PSR"), 25421 MW(Close 25422 (qVar"s", 25423 Rupd 25424 ("SPSR_mon", 25425 TP[qVar"s", 25426 Var("v", 25427 CTy"PSR")])))))))), 25428 (LW(30,5), 25429 MB(MR(Close 25430 (qVar"s", 25431 Dest 25432 ("SPSR_hyp", 25433 CTy"PSR", 25434 qVar"s"))), 25435 Close 25436 (Var("v",CTy"PSR"), 25437 MB(MB(MB(Call 25438 ("R", 25439 ATy(qTy, 25440 PTy(F32, 25441 qTy)), 25442 Var("n", 25443 F4)), 25444 Close 25445 (Var("v0", 25446 F32), 25447 MU(TP[Var("v", 25448 CTy"PSR"), 25449 Var("v0", 25450 F32)], 25451 qTy))), 25452 Close 25453 (Var("v", 25454 PTy(CTy"PSR", 25455 F32)), 25456 MU(Call 25457 ("write'reg'PSR", 25458 CTy"PSR", 25459 Var("v", 25460 PTy(CTy"PSR", 25461 F32))), 25462 qTy))), 25463 Close 25464 (Var("v", 25465 CTy"PSR"), 25466 MW(Close 25467 (qVar"s", 25468 Rupd 25469 ("SPSR_hyp", 25470 TP[qVar"s", 25471 Var("v", 25472 CTy"PSR")])))))))), 25473 (AVar(FTy 5),MU(LU,qTy))]))), 25474 MB(Call 25475 ("BankedRegisterAccessValid", 25476 ATy(qTy,PTy(uTy,qTy)), 25477 TP[Var("SYSm",FTy 5), 25478 Var("mode",FTy 5)]), 25479 Close 25480 (AVar uTy, 25481 ITB([(EQ(EX(Var("SYSm",FTy 5), 25482 LN 4,LN 3,FTy 2), 25483 LW(0,2)), 25484 MB(Call 25485 ("R", 25486 ATy(qTy, 25487 PTy(F32,qTy)), 25488 Var("n",F4)), 25489 Close 25490 (Var("v",F32), 25491 MB(MU(TP[Var("v", 25492 F32), 25493 Bop(Add, 25494 Mop(Cast 25495 F4, 25496 EX(Var("SYSm", 25497 FTy 5), 25498 LN 25499 2, 25500 LN 25501 0, 25502 FTy 3)), 25503 LW(8, 25504 4)), 25505 LW(16,5)], 25506 qTy), 25507 Close 25508 (Var("v", 25509 PTy(F32, 25510 PTy(F4, 25511 FTy 5))), 25512 Call 25513 ("write'Rmode", 25514 ATy(qTy, 25515 PTy(uTy, 25516 qTy)), 25517 Var("v", 25518 PTy(F32, 25519 PTy(F4, 25520 FTy 5))))))))), 25521 (EQ(EX(Var("SYSm",FTy 5), 25522 LN 4,LN 3,FTy 2), 25523 LW(1,2)), 25524 MB(Call 25525 ("R", 25526 ATy(qTy, 25527 PTy(F32,qTy)), 25528 Var("n",F4)), 25529 Close 25530 (Var("v",F32), 25531 MB(MU(TP[Var("v", 25532 F32), 25533 Bop(Add, 25534 Mop(Cast 25535 F4, 25536 EX(Var("SYSm", 25537 FTy 5), 25538 LN 25539 2, 25540 LN 25541 0, 25542 FTy 3)), 25543 LW(8, 25544 4)), 25545 LW(17,5)], 25546 qTy), 25547 Close 25548 (Var("v", 25549 PTy(F32, 25550 PTy(F4, 25551 FTy 5))), 25552 Call 25553 ("write'Rmode", 25554 ATy(qTy, 25555 PTy(uTy, 25556 qTy)), 25557 Var("v", 25558 PTy(F32, 25559 PTy(F4, 25560 FTy 5))))))))), 25561 (EQ(EX(Var("SYSm",FTy 5), 25562 LN 4,LN 3,FTy 2), 25563 LW(3,2)), 25564 ITB([(Mop(Not, 25565 Bop(Bit, 25566 Var("SYSm", 25567 FTy 5), 25568 LN 1)), 25569 MB(Call 25570 ("R", 25571 ATy(qTy, 25572 PTy(F32, 25573 qTy)), 25574 Var("n",F4)), 25575 Close 25576 (Var("v",F32), 25577 MB(MU(TP[Var("v", 25578 F32), 25579 Bop(Add, 25580 Mop(Cast 25581 F4, 25582 Bop(Bit, 25583 Var("SYSm", 25584 FTy 5), 25585 LN 25586 0)), 25587 LW(13, 25588 4)), 25589 LW(22, 25590 5)], 25591 qTy), 25592 Close 25593 (Var("v", 25594 PTy(F32, 25595 PTy(F4, 25596 FTy 5))), 25597 Call 25598 ("write'Rmode", 25599 ATy(qTy, 25600 PTy(uTy, 25601 qTy)), 25602 Var("v", 25603 PTy(F32, 25604 PTy(F4, 25605 FTy 5))))))))), 25606 (Mop(Not, 25607 Bop(Bit, 25608 Var("SYSm", 25609 FTy 5), 25610 LN 0)), 25611 MB(Call 25612 ("R", 25613 ATy(qTy, 25614 PTy(F32, 25615 qTy)), 25616 Var("n",F4)), 25617 Close 25618 (Var("v",F32), 25619 MB(MU(TP[Var("v", 25620 F32), 25621 LW(13, 25622 4), 25623 LW(26, 25624 5)], 25625 qTy), 25626 Close 25627 (Var("v", 25628 PTy(F32, 25629 PTy(F4, 25630 FTy 5))), 25631 Call 25632 ("write'Rmode", 25633 ATy(qTy, 25634 PTy(uTy, 25635 qTy)), 25636 Var("v", 25637 PTy(F32, 25638 PTy(F4, 25639 FTy 5)))))))))], 25640 MB(Call 25641 ("R", 25642 ATy(qTy, 25643 PTy(F32, 25644 qTy)), 25645 Var("n",F4)), 25646 Close 25647 (Var("v",F32), 25648 MW(Close 25649 (qVar"s", 25650 Rupd 25651 ("ELR_hyp", 25652 TP[qVar"s", 25653 Var("v", 25654 F32)])))))))], 25655 MN(LX(FTy 5), 25656 MB(MR(Close 25657 (Var("s", 25658 PTy(FTy 5, 25659 qTy)), 25660 Mop(Fst, 25661 Var("s", 25662 PTy(FTy 5, 25663 qTy))))), 25664 Close 25665 (Var("v",FTy 5), 25666 MB(MB(MU(BFI(LN 0, 25667 LN 0, 25668 Mop(Cast 25669 F1, 25670 Bop(Or, 25671 Bop(Bit, 25672 Var("SYSm", 25673 FTy 5), 25674 LN 25675 2), 25676 Bop(Bit, 25677 Var("SYSm", 25678 FTy 5), 25679 LN 25680 1))), 25681 Var("v", 25682 FTy 5)), 25683 PTy(FTy 5, 25684 qTy)), 25685 Close 25686 (Var("v", 25687 FTy 5), 25688 MW(Close 25689 (Var("s", 25690 PTy(FTy 5, 25691 qTy)), 25692 TP[Var("v", 25693 FTy 5), 25694 Mop(Snd, 25695 Var("s", 25696 PTy(FTy 5, 25697 qTy)))])))), 25698 Close 25699 (AVar uTy, 25700 MB(MR(Close 25701 (Var("s", 25702 PTy(FTy 5, 25703 qTy)), 25704 Mop(Fst, 25705 Var("s", 25706 PTy(FTy 5, 25707 qTy))))), 25708 Close 25709 (Var("v", 25710 FTy 5), 25711 MB(MB(MU(BFI(LN 25712 1, 25713 LN 25714 1, 25715 Mop(Cast 25716 F1, 25717 LT), 25718 Var("v", 25719 FTy 5)), 25720 PTy(FTy 5, 25721 qTy)), 25722 Close 25723 (Var("v", 25724 FTy 5), 25725 MW(Close 25726 (Var("s", 25727 PTy(FTy 5, 25728 qTy)), 25729 TP[Var("v", 25730 FTy 5), 25731 Mop(Snd, 25732 Var("s", 25733 PTy(FTy 5, 25734 qTy)))])))), 25735 Close 25736 (AVar 25737 uTy, 25738 MB(MR(Close 25739 (Var("s", 25740 PTy(FTy 5, 25741 qTy)), 25742 Mop(Fst, 25743 Var("s", 25744 PTy(FTy 5, 25745 qTy))))), 25746 Close 25747 (Var("v", 25748 FTy 5), 25749 MB(MB(MU(BFI(LN 25750 2, 25751 LN 25752 2, 25753 Mop(Cast 25754 F1, 25755 Bop(And, 25756 Bop(Bit, 25757 Var("SYSm", 25758 FTy 5), 25759 LN 25760 2), 25761 Mop(Not, 25762 Bop(Bit, 25763 Var("SYSm", 25764 FTy 5), 25765 LN 25766 1)))), 25767 Var("v", 25768 FTy 5)), 25769 PTy(FTy 5, 25770 qTy)), 25771 Close 25772 (Var("v", 25773 FTy 5), 25774 MW(Close 25775 (Var("s", 25776 PTy(FTy 5, 25777 qTy)), 25778 TP[Var("v", 25779 FTy 5), 25780 Mop(Snd, 25781 Var("s", 25782 PTy(FTy 5, 25783 qTy)))])))), 25784 Close 25785 (AVar 25786 uTy, 25787 MB(MR(Close 25788 (Var("s", 25789 PTy(FTy 5, 25790 qTy)), 25791 Mop(Fst, 25792 Var("s", 25793 PTy(FTy 5, 25794 qTy))))), 25795 Close 25796 (Var("v", 25797 FTy 5), 25798 MB(MB(MU(BFI(LN 25799 3, 25800 LN 25801 3, 25802 Mop(Cast 25803 F1, 25804 Bop(And, 25805 Bop(Bit, 25806 Var("SYSm", 25807 FTy 5), 25808 LN 25809 2), 25810 Bop(Bit, 25811 Var("SYSm", 25812 FTy 5), 25813 LN 25814 1))), 25815 Var("v", 25816 FTy 5)), 25817 PTy(FTy 5, 25818 qTy)), 25819 Close 25820 (Var("v", 25821 FTy 5), 25822 MW(Close 25823 (Var("s", 25824 PTy(FTy 5, 25825 qTy)), 25826 TP[Var("v", 25827 FTy 5), 25828 Mop(Snd, 25829 Var("s", 25830 PTy(FTy 5, 25831 qTy)))])))), 25832 Close 25833 (AVar 25834 uTy, 25835 MB(MR(Close 25836 (Var("s", 25837 PTy(FTy 5, 25838 qTy)), 25839 Mop(Fst, 25840 Var("s", 25841 PTy(FTy 5, 25842 qTy))))), 25843 Close 25844 (Var("v", 25845 FTy 5), 25846 MB(MB(MU(BFI(LN 25847 4, 25848 LN 25849 4, 25850 Mop(Cast 25851 F1, 25852 LT), 25853 Var("v", 25854 FTy 5)), 25855 PTy(FTy 5, 25856 qTy)), 25857 Close 25858 (Var("v", 25859 FTy 5), 25860 MW(Close 25861 (Var("s", 25862 PTy(FTy 5, 25863 qTy)), 25864 TP[Var("v", 25865 FTy 5), 25866 Mop(Snd, 25867 Var("s", 25868 PTy(FTy 5, 25869 qTy)))])))), 25870 Close 25871 (AVar 25872 uTy, 25873 MB(MR(Close 25874 (Var("s", 25875 PTy(FTy 5, 25876 qTy)), 25877 Mop(Fst, 25878 Var("s", 25879 PTy(FTy 5, 25880 qTy))))), 25881 Close 25882 (Var("v", 25883 FTy 5), 25884 MB(MU(EQ(Var("mode", 25885 FTy 5), 25886 Var("v", 25887 FTy 5)), 25888 PTy(FTy 5, 25889 qTy)), 25890 Close 25891 (bVar"b", 25892 ITE(bVar"b", 25893 MD(Call 25894 ("raise'exception", 25895 ATy(qTy, 25896 PTy(uTy, 25897 qTy)), 25898 Call 25899 ("UNPREDICTABLE", 25900 CTy"exception", 25901 LS 25902 "MoveToBankedOrSpecialRegister")), 25903 FTy 5), 25904 MB(MR(Close 25905 (Var("s", 25906 PTy(FTy 5, 25907 qTy)), 25908 Mop(Fst, 25909 Var("s", 25910 PTy(FTy 5, 25911 qTy))))), 25912 Close 25913 (Var("v", 25914 FTy 5), 25915 MB(MU(TP[Bop(Add, 25916 Mop(Cast 25917 F4, 25918 Bop(Bit, 25919 Var("SYSm", 25920 FTy 5), 25921 LN 25922 0)), 25923 LW(13, 25924 4)), 25925 Var("v", 25926 FTy 5)], 25927 PTy(FTy 5, 25928 qTy)), 25929 Close 25930 (Var("x", 25931 PTy(F4, 25932 FTy 5)), 25933 MB(MD(Call 25934 ("R", 25935 ATy(qTy, 25936 PTy(F32, 25937 qTy)), 25938 Var("n", 25939 F4)), 25940 FTy 5), 25941 Close 25942 (Var("v", 25943 F32), 25944 MB(MU(TP[Var("v", 25945 F32), 25946 Var("x", 25947 PTy(F4, 25948 FTy 5))], 25949 PTy(FTy 5, 25950 qTy)), 25951 Close 25952 (Var("v", 25953 PTy(F32, 25954 PTy(F4, 25955 FTy 5))), 25956 MD(Call 25957 ("write'Rmode", 25958 ATy(qTy, 25959 PTy(uTy, 25960 qTy)), 25961 Var("v", 25962 PTy(F32, 25963 PTy(F4, 25964 FTy 5)))), 25965 FTy 5))))))))))))))))))))))))))))))))))))))), 25966 Close 25967 (AVar uTy, 25968 Call 25969 ("IncPC",ATy(qTy,PTy(uTy,qTy)),LU))))))))))))) 25970; 25971val dfn'ReturnFromException_def = Def 25972 ("dfn'ReturnFromException", 25973 TP[bVar"increment",bVar"wordhigher",bVar"wback",Var("n",F4)], 25974 MB(Call("CurrentModeIsHyp",ATy(qTy,PTy(bTy,qTy)),LU), 25975 Close 25976 (bVar"b", 25977 ITE(bVar"b", 25978 Call("TakeUndefInstrException",ATy(qTy,PTy(uTy,qTy)),LU), 25979 MB(Call("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)),LU), 25980 Close 25981 (bVar"v", 25982 MB(MB(MU(Mop(Not,bVar"v"),qTy), 25983 Close 25984 (bVar"b", 25985 ITE(bVar"b",MU(LT,qTy), 25986 MB(Call 25987 ("CurrentInstrSet", 25988 ATy(qTy,PTy(CTy"InstrSet",qTy)),LU), 25989 Close 25990 (Var("v",CTy"InstrSet"), 25991 MU(EQ(Var("v",CTy"InstrSet"), 25992 LC("InstrSet_ThumbEE", 25993 CTy"InstrSet")),qTy)))))), 25994 Close 25995 (bVar"b", 25996 ITE(bVar"b", 25997 Call 25998 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 25999 Call 26000 ("UNPREDICTABLE",CTy"exception", 26001 LS"ReturnFromException")), 26002 MB(Call 26003 ("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 26004 Close 26005 (Var("Rn",F32), 26006 Let(Var("address",F32), 26007 ITE(bVar"increment",Var("Rn",F32), 26008 Bop(Sub,Var("Rn",F32),LW(8,32))), 26009 Let(Var("address",F32), 26010 ITE(bVar"wordhigher", 26011 Bop(Add,Var("address",F32), 26012 LW(4,32)), 26013 Var("address",F32)), 26014 MB(Call 26015 ("MemA", 26016 ATy(qTy,PTy(F32,qTy)), 26017 TP[Var("address",F32), 26018 LN 4]), 26019 Close 26020 (Var("new_pc_value",F32), 26021 MB(Call 26022 ("MemA", 26023 ATy(qTy, 26024 PTy(F32,qTy)), 26025 TP[Bop(Add, 26026 Var("address", 26027 F32), 26028 LW(4,32)), 26029 LN 4]), 26030 Close 26031 (Var("data",F32), 26032 MB(MR(Close 26033 (qVar"s", 26034 Dest 26035 ("data_abort", 26036 bTy, 26037 qVar"s"))), 26038 Close 26039 (bVar"b", 26040 ITE(bVar"b", 26041 Call 26042 ("TakeDataAbortException", 26043 ATy(qTy, 26044 PTy(uTy, 26045 qTy)), 26046 LU), 26047 MB(Call 26048 ("CPSRWriteByInstr", 26049 ATy(qTy, 26050 PTy(uTy, 26051 qTy)), 26052 TP[Var("data", 26053 F32), 26054 LW(15, 26055 4), 26056 LT]), 26057 Close 26058 (AVar 26059 uTy, 26060 MB(MR(Close 26061 (qVar"s", 26062 Dest 26063 ("CPSR", 26064 CTy"PSR", 26065 qVar"s"))), 26066 Close 26067 (Var("v", 26068 CTy"PSR"), 26069 MB(MB(MB(MB(MU(Dest 26070 ("M", 26071 FTy 5, 26072 Var("v", 26073 CTy"PSR")), 26074 qTy), 26075 Close 26076 (Var("v", 26077 FTy 5), 26078 MU(EQ(Var("v", 26079 FTy 5), 26080 LW(26, 26081 5)), 26082 qTy))), 26083 Close 26084 (bVar"b", 26085 ITE(bVar"b", 26086 MB(MR(Close 26087 (qVar"s", 26088 Dest 26089 ("CPSR", 26090 CTy"PSR", 26091 qVar"s"))), 26092 Close 26093 (Var("v", 26094 CTy"PSR"), 26095 MU(Dest 26096 ("J", 26097 bTy, 26098 Var("v", 26099 CTy"PSR")), 26100 qTy))), 26101 MU(LF, 26102 qTy)))), 26103 Close 26104 (bVar"b", 26105 ITE(bVar"b", 26106 MB(MR(Close 26107 (qVar"s", 26108 Dest 26109 ("CPSR", 26110 CTy"PSR", 26111 qVar"s"))), 26112 Close 26113 (Var("v", 26114 CTy"PSR"), 26115 MU(Dest 26116 ("T", 26117 bTy, 26118 Var("v", 26119 CTy"PSR")), 26120 qTy))), 26121 MU(LF, 26122 qTy)))), 26123 Close 26124 (bVar"b", 26125 ITE(bVar"b", 26126 Call 26127 ("raise'exception", 26128 ATy(qTy, 26129 PTy(uTy, 26130 qTy)), 26131 Call 26132 ("UNPREDICTABLE", 26133 CTy"exception", 26134 LS 26135 "ReturnFromException")), 26136 Call 26137 ("BranchWritePC", 26138 ATy(qTy, 26139 PTy(uTy, 26140 qTy)), 26141 Var("new_pc_value", 26142 F32))))))))))))))))))))))))))))) 26143; 26144val dfn'SecureMonitorCall_def = Def 26145 ("dfn'SecureMonitorCall",Var("imm4",F4), 26146 MB(Call("HaveSecurityExt",ATy(qTy,PTy(bTy,qTy)),LU), 26147 Close 26148 (bVar"v", 26149 MB(ITE(bVar"v", 26150 Call("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)),LU), 26151 MU(LF,qTy)), 26152 Close 26153 (bVar"b", 26154 ITE(bVar"b", 26155 MB(Call("HaveVirtExt",ATy(qTy,PTy(bTy,qTy)),LU), 26156 Close 26157 (bVar"v", 26158 MB(MB(MB(ITE(bVar"v", 26159 MB(Call 26160 ("IsSecure", 26161 ATy(qTy,PTy(bTy,qTy)),LU), 26162 Close 26163 (bVar"v", 26164 MU(Mop(Not,bVar"v"),qTy))), 26165 MU(LF,qTy)), 26166 Close 26167 (bVar"b", 26168 ITE(bVar"b", 26169 MB(Call 26170 ("CurrentModeIsHyp", 26171 ATy(qTy,PTy(bTy,qTy)),LU), 26172 Close 26173 (bVar"v", 26174 MU(Mop(Not,bVar"v"),qTy))), 26175 MU(LF,qTy)))), 26176 Close 26177 (bVar"b", 26178 ITE(bVar"b", 26179 MB(MR(Close 26180 (qVar"s", 26181 Dest 26182 ("CP15",CTy"CP15",qVar"s"))), 26183 Close 26184 (Var("v",CTy"CP15"), 26185 MB(MU(Dest 26186 ("HCR",CTy"HCR", 26187 Var("v",CTy"CP15")), 26188 qTy), 26189 Close 26190 (Var("v",CTy"HCR"), 26191 MU(Dest 26192 ("TSC",bTy, 26193 Var("v",CTy"HCR")), 26194 qTy))))),MU(LF,qTy)))), 26195 Close 26196 (bVar"b", 26197 ITE(bVar"b", 26198 MB(Call 26199 ("WriteHSR",ATy(qTy,PTy(uTy,qTy)), 26200 TP[LW(19,6),LW(0,25)]), 26201 Close 26202 (AVar uTy, 26203 Call 26204 ("TakeHypTrapException", 26205 ATy(qTy,PTy(uTy,qTy)),LU))), 26206 MB(MR(Close 26207 (qVar"s", 26208 Dest("CP15",CTy"CP15",qVar"s"))), 26209 Close 26210 (Var("v",CTy"CP15"), 26211 MB(MB(MU(Dest 26212 ("SCR",CTy"SCR", 26213 Var("v",CTy"CP15")), 26214 qTy), 26215 Close 26216 (Var("v",CTy"SCR"), 26217 MU(Dest 26218 ("SCD",bTy, 26219 Var("v",CTy"SCR")), 26220 qTy))), 26221 Close 26222 (bVar"b", 26223 ITE(bVar"b", 26224 MB(Call 26225 ("IsSecure", 26226 ATy(qTy, 26227 PTy(bTy,qTy)), 26228 LU), 26229 Close 26230 (bVar"b", 26231 ITE(bVar"b", 26232 Call 26233 ("raise'exception", 26234 ATy(qTy, 26235 PTy(uTy, 26236 qTy)), 26237 Call 26238 ("UNPREDICTABLE", 26239 CTy"exception", 26240 LS 26241 "SecureMonitorCall")), 26242 Call 26243 ("TakeUndefInstrException", 26244 ATy(qTy, 26245 PTy(uTy, 26246 qTy)), 26247 LU)))), 26248 Call 26249 ("TakeSMCException", 26250 ATy(qTy,PTy(uTy,qTy)), 26251 LU))))))))))), 26252 Call 26253 ("TakeUndefInstrException",ATy(qTy,PTy(uTy,qTy)),LU))))))) 26254; 26255val dfn'SupervisorCall_def = Def 26256 ("dfn'SupervisorCall",Var("imm32",F32), 26257 Call 26258 ("CallSupervisor",ATy(qTy,PTy(uTy,qTy)), 26259 EX(Var("imm32",F32),LN 15,LN 0,F16))) 26260; 26261val dfn'StoreReturnState_def = Def 26262 ("dfn'StoreReturnState", 26263 TP[bVar"increment",bVar"wordhigher",bVar"wback",Var("mode",FTy 5)], 26264 MB(Call("CurrentModeIsHyp",ATy(qTy,PTy(bTy,qTy)),LU), 26265 Close 26266 (bVar"b", 26267 ITE(bVar"b", 26268 Call("TakeUndefInstrException",ATy(qTy,PTy(uTy,qTy)),LU), 26269 MB(Call("CurrentModeIsUserOrSystem",ATy(qTy,PTy(bTy,qTy)),LU), 26270 Close 26271 (bVar"v", 26272 MB(ITE(bVar"v",MU(LT,qTy), 26273 MB(Call 26274 ("CurrentInstrSet", 26275 ATy(qTy,PTy(CTy"InstrSet",qTy)),LU), 26276 Close 26277 (Var("v",CTy"InstrSet"), 26278 MU(EQ(Var("v",CTy"InstrSet"), 26279 LC("InstrSet_ThumbEE",CTy"InstrSet")), 26280 qTy)))), 26281 Close 26282 (bVar"b", 26283 ITB([(bVar"b", 26284 Call 26285 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 26286 Call 26287 ("UNPREDICTABLE",CTy"exception", 26288 LS"StoreReturnState"))), 26289 (EQ(Var("mode",FTy 5),LW(26,5)), 26290 Call 26291 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 26292 Call 26293 ("UNPREDICTABLE",CTy"exception", 26294 LS"StoreReturnState")))], 26295 MB(Call("IsSecure",ATy(qTy,PTy(bTy,qTy)),LU), 26296 Close 26297 (bVar"v", 26298 MB(MB(MU(Mop(Not,bVar"v"),qTy), 26299 Close 26300 (bVar"b", 26301 ITE(bVar"b", 26302 MB(MR(Close 26303 (qVar"s", 26304 Dest 26305 ("CP15", 26306 CTy"CP15", 26307 qVar"s"))), 26308 Close 26309 (Var("v",CTy"CP15"), 26310 MB(MB(MB(MB(MU(Dest 26311 ("NSACR", 26312 CTy"NSACR", 26313 Var("v", 26314 CTy"CP15")), 26315 qTy), 26316 Close 26317 (Var("v", 26318 CTy"NSACR"), 26319 MU(Dest 26320 ("RFR", 26321 bTy, 26322 Var("v", 26323 CTy"NSACR")), 26324 qTy))), 26325 Close 26326 (bVar"v", 26327 MU(Bop(And, 26328 EQ(Var("mode", 26329 FTy 5), 26330 LW(17, 26331 5)), 26332 bVar"v"), 26333 qTy))), 26334 Close 26335 (bVar"v", 26336 MU(Bop(Or, 26337 EQ(Var("mode", 26338 FTy 5), 26339 LW(22, 26340 5)), 26341 bVar"v"), 26342 qTy))), 26343 Close 26344 (bVar"b", 26345 ITE(bVar"b", 26346 Call 26347 ("raise'exception", 26348 ATy(qTy, 26349 PTy(uTy, 26350 qTy)), 26351 Call 26352 ("UNPREDICTABLE", 26353 CTy"exception", 26354 LS 26355 "StoreReturnState")), 26356 MU(LU,qTy)))))), 26357 MU(LU,qTy)))), 26358 Close 26359 (AVar uTy, 26360 MB(Call 26361 ("Rmode", 26362 ATy(qTy,PTy(F32,qTy)), 26363 TP[LW(13,4), 26364 Var("mode",FTy 5)]), 26365 Close 26366 (Var("base",F32), 26367 Let(Var("address",F32), 26368 ITE(bVar"increment", 26369 Var("base",F32), 26370 Bop(Sub, 26371 Var("base",F32), 26372 LW(8,32))), 26373 Let(Var("address",F32), 26374 ITE(bVar"wordhigher", 26375 Bop(Add, 26376 Var("address", 26377 F32), 26378 LW(4,32)), 26379 Var("address", 26380 F32)), 26381 MB(MB(Const 26382 ("LR", 26383 ATy(qTy, 26384 PTy(F32, 26385 qTy))), 26386 Close 26387 (Var("v", 26388 F32), 26389 MB(MU(TP[Var("v", 26390 F32), 26391 Var("address", 26392 F32), 26393 LN 26394 4], 26395 qTy), 26396 Close 26397 (Var("v", 26398 PTy(F32, 26399 PTy(F32, 26400 nTy))), 26401 Call 26402 ("write'MemA", 26403 ATy(qTy, 26404 PTy(uTy, 26405 qTy)), 26406 Var("v", 26407 PTy(F32, 26408 PTy(F32, 26409 nTy)))))))), 26410 Close 26411 (AVar uTy, 26412 MB(MB(Const 26413 ("SPSR", 26414 ATy(qTy, 26415 PTy(CTy"PSR", 26416 qTy))), 26417 Close 26418 (Var("v", 26419 CTy"PSR"), 26420 MB(MB(MU(Call 26421 ("reg'PSR", 26422 F32, 26423 Var("v", 26424 CTy"PSR")), 26425 qTy), 26426 Close 26427 (Var("v", 26428 F32), 26429 MU(TP[Var("v", 26430 F32), 26431 Bop(Add, 26432 Var("address", 26433 F32), 26434 LW(4, 26435 32)), 26436 LN 26437 4], 26438 qTy))), 26439 Close 26440 (Var("v", 26441 PTy(F32, 26442 PTy(F32, 26443 nTy))), 26444 Call 26445 ("write'MemA", 26446 ATy(qTy, 26447 PTy(uTy, 26448 qTy)), 26449 Var("v", 26450 PTy(F32, 26451 PTy(F32, 26452 nTy)))))))), 26453 Close 26454 (AVar 26455 uTy, 26456 MB(MR(Close 26457 (qVar"s", 26458 Dest 26459 ("data_abort", 26460 bTy, 26461 qVar"s"))), 26462 Close 26463 (bVar"b", 26464 ITE(bVar"b", 26465 Call 26466 ("TakeDataAbortException", 26467 ATy(qTy, 26468 PTy(uTy, 26469 qTy)), 26470 LU), 26471 MB(ITE(bVar"wback", 26472 Call 26473 ("write'Rmode", 26474 ATy(qTy, 26475 PTy(uTy, 26476 qTy)), 26477 TP[ITE(bVar"increment", 26478 Bop(Add, 26479 Var("base", 26480 F32), 26481 LW(8, 26482 32)), 26483 Bop(Sub, 26484 Var("base", 26485 F32), 26486 LW(8, 26487 32))), 26488 LW(13, 26489 4), 26490 Var("mode", 26491 FTy 5)]), 26492 MU(LU, 26493 qTy)), 26494 Close 26495 (AVar 26496 uTy, 26497 Call 26498 ("IncPC", 26499 ATy(qTy, 26500 PTy(uTy, 26501 qTy)), 26502 LU))))))))))))))))))))))))))) 26503; 26504val dfn'Setend_def = Def 26505 ("dfn'Setend",bVar"set_bigend", 26506 MB(MR(Close(qVar"s",Dest("CPSR",CTy"PSR",qVar"s"))), 26507 Close 26508 (Var("v",CTy"PSR"), 26509 MB(MB(MB(MU(TP[Var("v",CTy"PSR"),bVar"set_bigend"],qTy), 26510 Close 26511 (Var("v",PTy(CTy"PSR",bTy)), 26512 MU(Rupd("E",Var("v",PTy(CTy"PSR",bTy))),qTy))), 26513 Close 26514 (Var("v",CTy"PSR"), 26515 MW(Close 26516 (qVar"s",Rupd("CPSR",TP[qVar"s",Var("v",CTy"PSR")]))))), 26517 Close(AVar uTy,Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)))))) 26518; 26519val dfn'Undefined_def = Def 26520 ("dfn'Undefined",Var("imm32",F32), 26521 Call("TakeUndefInstrException",ATy(qTy,PTy(uTy,qTy)),LU)) 26522; 26523val dfn'NoOperation_def = Def0 26524 ("dfn'NoOperation",Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)) 26525; 26526val dfn'Breakpoint_def = Def 26527 ("dfn'Breakpoint",Var("imm32",F32), 26528 Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)) 26529; 26530val dfn'Debug_def = Def 26531 ("dfn'Debug",Var("option",F4),Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)) 26532; 26533val dfn'DataMemoryBarrier_def = Def 26534 ("dfn'DataMemoryBarrier",Var("option",F4), 26535 Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)) 26536; 26537val dfn'DataSynchronizationBarrier_def = Def 26538 ("dfn'DataSynchronizationBarrier",Var("option",F4), 26539 Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)) 26540; 26541val dfn'InstructionSynchronizationBarrier_def = Def 26542 ("dfn'InstructionSynchronizationBarrier",Var("option",F4), 26543 Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)) 26544; 26545val dfn'PreloadData_def = Def 26546 ("dfn'PreloadData", 26547 TP[bVar"add",bVar"is_pldw",Var("n",F4),Var("m",CTy"offset1")], 26548 Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)) 26549; 26550val dfn'PreloadDataLiteral_def = Def 26551 ("dfn'PreloadDataLiteral",TP[bVar"add",Var("imm32",F32)], 26552 Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)) 26553; 26554val dfn'PreloadInstruction_def = Def 26555 ("dfn'PreloadInstruction", 26556 TP[bVar"add",Var("n",F4),Var("m",CTy"offset1")], 26557 Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)) 26558; 26559val dfn'SendEvent_def = Def0 26560 ("dfn'SendEvent",Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)) 26561; 26562val dfn'WaitForEvent_def = Def0 26563 ("dfn'WaitForEvent",Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)) 26564; 26565val dfn'WaitForInterrupt_def = Def0 26566 ("dfn'WaitForInterrupt",Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)) 26567; 26568val dfn'Yield_def = Def0 26569 ("dfn'Yield",Call("IncPC",ATy(qTy,PTy(uTy,qTy)),LU)) 26570; 26571val Run_def = Def 26572 ("Run",Var("v0",CTy"instruction"), 26573 CS(Var("v0",CTy"instruction"), 26574 [(Const("ClearExclusive",CTy"instruction"), 26575 Const("dfn'ClearExclusive",ATy(qTy,PTy(uTy,qTy)))), 26576 (Const("NoOperation",CTy"instruction"), 26577 Const("dfn'NoOperation",ATy(qTy,PTy(uTy,qTy)))), 26578 (Call 26579 ("Divide",CTy"instruction", 26580 Var("v126",PTy(bTy,PTy(F4,PTy(F4,F4))))), 26581 Call 26582 ("dfn'Divide",ATy(qTy,PTy(uTy,qTy)), 26583 Var("v126",PTy(bTy,PTy(F4,PTy(F4,F4)))))), 26584 (Call("IfThen",CTy"instruction",Var("v127",PTy(F4,F4))), 26585 Call("dfn'IfThen",ATy(qTy,PTy(uTy,qTy)),Var("v127",PTy(F4,F4)))), 26586 (Call 26587 ("Swap",CTy"instruction",Var("v128",PTy(bTy,PTy(F4,PTy(F4,F4))))), 26588 Call 26589 ("dfn'Swap",ATy(qTy,PTy(uTy,qTy)), 26590 Var("v128",PTy(bTy,PTy(F4,PTy(F4,F4)))))), 26591 (Call("Undefined",CTy"instruction",Var("v129",F32)), 26592 Call("dfn'Undefined",ATy(qTy,PTy(uTy,qTy)),Var("v129",F32))), 26593 (Call("Branch",CTy"instruction",Var("v1",CTy"Branch")), 26594 CS(Var("v1",CTy"Branch"), 26595 [(Call("BranchExchange",CTy"Branch",Var("v2",F4)), 26596 Call("dfn'BranchExchange",ATy(qTy,PTy(uTy,qTy)),Var("v2",F4))), 26597 (Call 26598 ("BranchLinkExchangeImmediate",CTy"Branch", 26599 Var("v3",PTy(CTy"InstrSet",F32))), 26600 Call 26601 ("dfn'BranchLinkExchangeImmediate",ATy(qTy,PTy(uTy,qTy)), 26602 Var("v3",PTy(CTy"InstrSet",F32)))), 26603 (Call("BranchLinkExchangeRegister",CTy"Branch",Var("v4",F4)), 26604 Call 26605 ("dfn'BranchLinkExchangeRegister",ATy(qTy,PTy(uTy,qTy)), 26606 Var("v4",F4))), 26607 (Call("BranchTarget",CTy"Branch",Var("v5",F32)), 26608 Call("dfn'BranchTarget",ATy(qTy,PTy(uTy,qTy)),Var("v5",F32))), 26609 (Call("CheckArray",CTy"Branch",Var("v6",PTy(F4,F4))), 26610 Call 26611 ("dfn'CheckArray",ATy(qTy,PTy(uTy,qTy)), 26612 Var("v6",PTy(F4,F4)))), 26613 (Call 26614 ("CompareBranch",CTy"Branch",Var("v7",PTy(bTy,PTy(F4,F32)))), 26615 Call 26616 ("dfn'CompareBranch",ATy(qTy,PTy(uTy,qTy)), 26617 Var("v7",PTy(bTy,PTy(F4,F32))))), 26618 (Call("HandlerBranchLink",CTy"Branch",Var("v8",PTy(bTy,F32))), 26619 Call 26620 ("dfn'HandlerBranchLink",ATy(qTy,PTy(uTy,qTy)), 26621 Var("v8",PTy(bTy,F32)))), 26622 (Call 26623 ("HandlerBranchLinkParameter",CTy"Branch", 26624 Var("v9",PTy(F32,F32))), 26625 Call 26626 ("dfn'HandlerBranchLinkParameter",ATy(qTy,PTy(uTy,qTy)), 26627 Var("v9",PTy(F32,F32)))), 26628 (Call 26629 ("HandlerBranchParameter",CTy"Branch", 26630 Var("v10",PTy(F32,F32))), 26631 Call 26632 ("dfn'HandlerBranchParameter",ATy(qTy,PTy(uTy,qTy)), 26633 Var("v10",PTy(F32,F32)))), 26634 (Call 26635 ("TableBranchByte",CTy"Branch", 26636 Var("v11",PTy(bTy,PTy(F4,F4)))), 26637 Call 26638 ("dfn'TableBranchByte",ATy(qTy,PTy(uTy,qTy)), 26639 Var("v11",PTy(bTy,PTy(F4,F4)))))])), 26640 (Call("Data",CTy"instruction",Var("v12",CTy"Data")), 26641 CS(Var("v12",CTy"Data"), 26642 [(Call 26643 ("AddSub",CTy"Data", 26644 Var("v13",PTy(bTy,PTy(F4,PTy(F4,FTy 12))))), 26645 Call 26646 ("dfn'AddSub",ATy(qTy,PTy(uTy,qTy)), 26647 Var("v13",PTy(bTy,PTy(F4,PTy(F4,FTy 12)))))), 26648 (Call 26649 ("ArithLogicImmediate",CTy"Data", 26650 Var("v14",PTy(F4,PTy(bTy,PTy(F4,PTy(F4,FTy 12)))))), 26651 Call 26652 ("dfn'ArithLogicImmediate",ATy(qTy,PTy(uTy,qTy)), 26653 Var("v14",PTy(F4,PTy(bTy,PTy(F4,PTy(F4,FTy 12))))))), 26654 (Call("CountLeadingZeroes",CTy"Data",Var("v15",PTy(F4,F4))), 26655 Call 26656 ("dfn'CountLeadingZeroes",ATy(qTy,PTy(uTy,qTy)), 26657 Var("v15",PTy(F4,F4)))), 26658 (Call 26659 ("Move",CTy"Data", 26660 Var("v16",PTy(bTy,PTy(bTy,PTy(F4,FTy 12))))), 26661 Call 26662 ("dfn'Move",ATy(qTy,PTy(uTy,qTy)), 26663 Var("v16",PTy(bTy,PTy(bTy,PTy(F4,FTy 12)))))), 26664 (Call 26665 ("MoveHalfword",CTy"Data",Var("v17",PTy(bTy,PTy(F4,F16)))), 26666 Call 26667 ("dfn'MoveHalfword",ATy(qTy,PTy(uTy,qTy)), 26668 Var("v17",PTy(bTy,PTy(F4,F16))))), 26669 (Call 26670 ("Register",CTy"Data", 26671 Var("v18", 26672 PTy(F4, 26673 PTy(bTy, 26674 PTy(F4,PTy(F4,PTy(F4,PTy(CTy"SRType",nTy)))))))), 26675 Call 26676 ("dfn'Register",ATy(qTy,PTy(uTy,qTy)), 26677 Var("v18", 26678 PTy(F4, 26679 PTy(bTy, 26680 PTy(F4,PTy(F4,PTy(F4,PTy(CTy"SRType",nTy))))))))), 26681 (Call 26682 ("RegisterShiftedRegister",CTy"Data", 26683 Var("v19", 26684 PTy(F4, 26685 PTy(bTy, 26686 PTy(F4,PTy(F4,PTy(F4,PTy(CTy"SRType",F4)))))))), 26687 Call 26688 ("dfn'RegisterShiftedRegister",ATy(qTy,PTy(uTy,qTy)), 26689 Var("v19", 26690 PTy(F4, 26691 PTy(bTy, 26692 PTy(F4,PTy(F4,PTy(F4,PTy(CTy"SRType",F4))))))))), 26693 (Call 26694 ("ShiftImmediate",CTy"Data", 26695 Var("v20", 26696 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(CTy"SRType",nTy))))))), 26697 Call 26698 ("dfn'ShiftImmediate",ATy(qTy,PTy(uTy,qTy)), 26699 Var("v20", 26700 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(CTy"SRType",nTy)))))))), 26701 (Call 26702 ("ShiftRegister",CTy"Data", 26703 Var("v21", 26704 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(CTy"SRType",F4))))))), 26705 Call 26706 ("dfn'ShiftRegister",ATy(qTy,PTy(uTy,qTy)), 26707 Var("v21", 26708 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(CTy"SRType",F4)))))))), 26709 (Call 26710 ("TestCompareImmediate",CTy"Data", 26711 Var("v22",PTy(FTy 2,PTy(F4,FTy 12)))), 26712 Call 26713 ("dfn'TestCompareImmediate",ATy(qTy,PTy(uTy,qTy)), 26714 Var("v22",PTy(FTy 2,PTy(F4,FTy 12))))), 26715 (Call 26716 ("TestCompareRegister",CTy"Data", 26717 Var("v23",PTy(FTy 2,PTy(F4,PTy(F4,PTy(CTy"SRType",nTy)))))), 26718 Call 26719 ("dfn'TestCompareRegister",ATy(qTy,PTy(uTy,qTy)), 26720 Var("v23",PTy(FTy 2,PTy(F4,PTy(F4,PTy(CTy"SRType",nTy)))))))])), 26721 (Call("Hint",CTy"instruction",Var("v24",CTy"Hint")), 26722 CS(Var("v24",CTy"Hint"), 26723 [(Const("SendEvent",CTy"Hint"), 26724 Const("dfn'SendEvent",ATy(qTy,PTy(uTy,qTy)))), 26725 (Const("WaitForEvent",CTy"Hint"), 26726 Const("dfn'WaitForEvent",ATy(qTy,PTy(uTy,qTy)))), 26727 (Const("WaitForInterrupt",CTy"Hint"), 26728 Const("dfn'WaitForInterrupt",ATy(qTy,PTy(uTy,qTy)))), 26729 (Const("Yield",CTy"Hint"), 26730 Const("dfn'Yield",ATy(qTy,PTy(uTy,qTy)))), 26731 (Call("Breakpoint",CTy"Hint",Var("v25",F32)), 26732 Call("dfn'Breakpoint",ATy(qTy,PTy(uTy,qTy)),Var("v25",F32))), 26733 (Call("DataMemoryBarrier",CTy"Hint",Var("v26",F4)), 26734 Call 26735 ("dfn'DataMemoryBarrier",ATy(qTy,PTy(uTy,qTy)), 26736 Var("v26",F4))), 26737 (Call("DataSynchronizationBarrier",CTy"Hint",Var("v27",F4)), 26738 Call 26739 ("dfn'DataSynchronizationBarrier",ATy(qTy,PTy(uTy,qTy)), 26740 Var("v27",F4))), 26741 (Call("Debug",CTy"Hint",Var("v28",F4)), 26742 Call("dfn'Debug",ATy(qTy,PTy(uTy,qTy)),Var("v28",F4))), 26743 (Call 26744 ("InstructionSynchronizationBarrier",CTy"Hint", 26745 Var("v29",F4)), 26746 Call 26747 ("dfn'InstructionSynchronizationBarrier", 26748 ATy(qTy,PTy(uTy,qTy)),Var("v29",F4))), 26749 (Call 26750 ("PreloadData",CTy"Hint", 26751 Var("v30",PTy(bTy,PTy(bTy,PTy(F4,CTy"offset1"))))), 26752 Call 26753 ("dfn'PreloadData",ATy(qTy,PTy(uTy,qTy)), 26754 Var("v30",PTy(bTy,PTy(bTy,PTy(F4,CTy"offset1")))))), 26755 (Call("PreloadDataLiteral",CTy"Hint",Var("v31",PTy(bTy,F32))), 26756 Call 26757 ("dfn'PreloadDataLiteral",ATy(qTy,PTy(uTy,qTy)), 26758 Var("v31",PTy(bTy,F32)))), 26759 (Call 26760 ("PreloadInstruction",CTy"Hint", 26761 Var("v32",PTy(bTy,PTy(F4,CTy"offset1")))), 26762 Call 26763 ("dfn'PreloadInstruction",ATy(qTy,PTy(uTy,qTy)), 26764 Var("v32",PTy(bTy,PTy(F4,CTy"offset1")))))])), 26765 (Call("Load",CTy"instruction",Var("v33",CTy"Load")), 26766 CS(Var("v33",CTy"Load"), 26767 [(Call 26768 ("LoadByte",CTy"Load", 26769 Var("v34", 26770 PTy(bTy, 26771 PTy(bTy, 26772 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))))), 26773 Call 26774 ("dfn'LoadByte",ATy(qTy,PTy(uTy,qTy)), 26775 Var("v34", 26776 PTy(bTy, 26777 PTy(bTy, 26778 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))))), 26779 (Call 26780 ("LoadByteLiteral",CTy"Load", 26781 Var("v35",PTy(bTy,PTy(bTy,PTy(F4,F32))))), 26782 Call 26783 ("dfn'LoadByteLiteral",ATy(qTy,PTy(uTy,qTy)), 26784 Var("v35",PTy(bTy,PTy(bTy,PTy(F4,F32)))))), 26785 (Call 26786 ("LoadByteUnprivileged",CTy"Load", 26787 Var("v36",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))), 26788 Call 26789 ("dfn'LoadByteUnprivileged",ATy(qTy,PTy(uTy,qTy)), 26790 Var("v36",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))), 26791 (Call 26792 ("LoadDual",CTy"Load", 26793 Var("v37", 26794 PTy(bTy, 26795 PTy(bTy, 26796 PTy(bTy,PTy(F4,PTy(F4,PTy(F4,CTy"offset2")))))))), 26797 Call 26798 ("dfn'LoadDual",ATy(qTy,PTy(uTy,qTy)), 26799 Var("v37", 26800 PTy(bTy, 26801 PTy(bTy, 26802 PTy(bTy,PTy(F4,PTy(F4,PTy(F4,CTy"offset2"))))))))), 26803 (Call 26804 ("LoadDualLiteral",CTy"Load", 26805 Var("v38",PTy(bTy,PTy(F4,PTy(F4,F32))))), 26806 Call 26807 ("dfn'LoadDualLiteral",ATy(qTy,PTy(uTy,qTy)), 26808 Var("v38",PTy(bTy,PTy(F4,PTy(F4,F32)))))), 26809 (Call 26810 ("LoadExclusive",CTy"Load",Var("v39",PTy(F4,PTy(F4,F32)))), 26811 Call 26812 ("dfn'LoadExclusive",ATy(qTy,PTy(uTy,qTy)), 26813 Var("v39",PTy(F4,PTy(F4,F32))))), 26814 (Call("LoadExclusiveByte",CTy"Load",Var("v40",PTy(F4,F4))), 26815 Call 26816 ("dfn'LoadExclusiveByte",ATy(qTy,PTy(uTy,qTy)), 26817 Var("v40",PTy(F4,F4)))), 26818 (Call 26819 ("LoadExclusiveDoubleword",CTy"Load", 26820 Var("v41",PTy(F4,PTy(F4,F4)))), 26821 Call 26822 ("dfn'LoadExclusiveDoubleword",ATy(qTy,PTy(uTy,qTy)), 26823 Var("v41",PTy(F4,PTy(F4,F4))))), 26824 (Call("LoadExclusiveHalf",CTy"Load",Var("v42",PTy(F4,F4))), 26825 Call 26826 ("dfn'LoadExclusiveHalf",ATy(qTy,PTy(uTy,qTy)), 26827 Var("v42",PTy(F4,F4)))), 26828 (Call 26829 ("LoadHalf",CTy"Load", 26830 Var("v43", 26831 PTy(bTy, 26832 PTy(bTy, 26833 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))))), 26834 Call 26835 ("dfn'LoadHalf",ATy(qTy,PTy(uTy,qTy)), 26836 Var("v43", 26837 PTy(bTy, 26838 PTy(bTy, 26839 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))))), 26840 (Call 26841 ("LoadHalfLiteral",CTy"Load", 26842 Var("v44",PTy(bTy,PTy(bTy,PTy(F4,F32))))), 26843 Call 26844 ("dfn'LoadHalfLiteral",ATy(qTy,PTy(uTy,qTy)), 26845 Var("v44",PTy(bTy,PTy(bTy,PTy(F4,F32)))))), 26846 (Call 26847 ("LoadHalfUnprivileged",CTy"Load", 26848 Var("v45", 26849 PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset2"))))))), 26850 Call 26851 ("dfn'LoadHalfUnprivileged",ATy(qTy,PTy(uTy,qTy)), 26852 Var("v45", 26853 PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset2")))))))), 26854 (Call("LoadLiteral",CTy"Load",Var("v46",PTy(bTy,PTy(F4,F32)))), 26855 Call 26856 ("dfn'LoadLiteral",ATy(qTy,PTy(uTy,qTy)), 26857 Var("v46",PTy(bTy,PTy(F4,F32))))), 26858 (Call 26859 ("LoadMultiple",CTy"Load", 26860 Var("v47",PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,F16)))))), 26861 Call 26862 ("dfn'LoadMultiple",ATy(qTy,PTy(uTy,qTy)), 26863 Var("v47",PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,F16))))))), 26864 (Call 26865 ("LoadMultipleExceptionReturn",CTy"Load", 26866 Var("v48",PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,FTy 15)))))), 26867 Call 26868 ("dfn'LoadMultipleExceptionReturn",ATy(qTy,PTy(uTy,qTy)), 26869 Var("v48",PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,FTy 15))))))), 26870 (Call 26871 ("LoadMultipleUserRegisters",CTy"Load", 26872 Var("v49",PTy(bTy,PTy(bTy,PTy(F4,FTy 15))))), 26873 Call 26874 ("dfn'LoadMultipleUserRegisters",ATy(qTy,PTy(uTy,qTy)), 26875 Var("v49",PTy(bTy,PTy(bTy,PTy(F4,FTy 15)))))), 26876 (Call 26877 ("LoadSignedByteUnprivileged",CTy"Load", 26878 Var("v50",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset2")))))), 26879 Call 26880 ("dfn'LoadSignedByteUnprivileged",ATy(qTy,PTy(uTy,qTy)), 26881 Var("v50",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset2"))))))), 26882 (Call 26883 ("LoadUnprivileged",CTy"Load", 26884 Var("v51",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))), 26885 Call 26886 ("dfn'LoadUnprivileged",ATy(qTy,PTy(uTy,qTy)), 26887 Var("v51",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))), 26888 (Call 26889 ("LoadWord",CTy"Load", 26890 Var("v52", 26891 PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))), 26892 Call 26893 ("dfn'LoadWord",ATy(qTy,PTy(uTy,qTy)), 26894 Var("v52", 26895 PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))))])), 26896 (Call("Media",CTy"instruction",Var("v53",CTy"Media")), 26897 CS(Var("v53",CTy"Media"), 26898 [(Call 26899 ("BitFieldClearOrInsert",CTy"Media", 26900 Var("v54",PTy(F4,PTy(F4,PTy(nTy,nTy))))), 26901 Call 26902 ("dfn'BitFieldClearOrInsert",ATy(qTy,PTy(uTy,qTy)), 26903 Var("v54",PTy(F4,PTy(F4,PTy(nTy,nTy)))))), 26904 (Call 26905 ("BitFieldExtract",CTy"Media", 26906 Var("v55",PTy(bTy,PTy(F4,PTy(F4,PTy(nTy,nTy)))))), 26907 Call 26908 ("dfn'BitFieldExtract",ATy(qTy,PTy(uTy,qTy)), 26909 Var("v55",PTy(bTy,PTy(F4,PTy(F4,PTy(nTy,nTy))))))), 26910 (Call("ByteReverse",CTy"Media",Var("v56",PTy(F4,F4))), 26911 Call 26912 ("dfn'ByteReverse",ATy(qTy,PTy(uTy,qTy)), 26913 Var("v56",PTy(F4,F4)))), 26914 (Call 26915 ("ByteReversePackedHalfword",CTy"Media", 26916 Var("v57",PTy(F4,F4))), 26917 Call 26918 ("dfn'ByteReversePackedHalfword",ATy(qTy,PTy(uTy,qTy)), 26919 Var("v57",PTy(F4,F4)))), 26920 (Call 26921 ("ByteReverseSignedHalfword",CTy"Media", 26922 Var("v58",PTy(F4,F4))), 26923 Call 26924 ("dfn'ByteReverseSignedHalfword",ATy(qTy,PTy(uTy,qTy)), 26925 Var("v58",PTy(F4,F4)))), 26926 (Call 26927 ("ExtendByte",CTy"Media", 26928 Var("v59",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,nTy)))))), 26929 Call 26930 ("dfn'ExtendByte",ATy(qTy,PTy(uTy,qTy)), 26931 Var("v59",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,nTy))))))), 26932 (Call 26933 ("ExtendByte16",CTy"Media", 26934 Var("v60",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,nTy)))))), 26935 Call 26936 ("dfn'ExtendByte16",ATy(qTy,PTy(uTy,qTy)), 26937 Var("v60",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,nTy))))))), 26938 (Call 26939 ("ExtendHalfword",CTy"Media", 26940 Var("v61",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,nTy)))))), 26941 Call 26942 ("dfn'ExtendHalfword",ATy(qTy,PTy(uTy,qTy)), 26943 Var("v61",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,nTy))))))), 26944 (Call 26945 ("PackHalfword",CTy"Media", 26946 Var("v62", 26947 PTy(CTy"SRType",PTy(nTy,PTy(bTy,PTy(F4,PTy(F4,F4))))))), 26948 Call 26949 ("dfn'PackHalfword",ATy(qTy,PTy(uTy,qTy)), 26950 Var("v62", 26951 PTy(CTy"SRType",PTy(nTy,PTy(bTy,PTy(F4,PTy(F4,F4)))))))), 26952 (Call("ReverseBits",CTy"Media",Var("v63",PTy(F4,F4))), 26953 Call 26954 ("dfn'ReverseBits",ATy(qTy,PTy(uTy,qTy)), 26955 Var("v63",PTy(F4,F4)))), 26956 (Call 26957 ("Saturate",CTy"Media", 26958 Var("v64", 26959 PTy(CTy"SRType",PTy(nTy,PTy(nTy,PTy(bTy,PTy(F4,F4))))))), 26960 Call 26961 ("dfn'Saturate",ATy(qTy,PTy(uTy,qTy)), 26962 Var("v64", 26963 PTy(CTy"SRType",PTy(nTy,PTy(nTy,PTy(bTy,PTy(F4,F4)))))))), 26964 (Call 26965 ("Saturate16",CTy"Media", 26966 Var("v65",PTy(nTy,PTy(bTy,PTy(F4,F4))))), 26967 Call 26968 ("dfn'Saturate16",ATy(qTy,PTy(uTy,qTy)), 26969 Var("v65",PTy(nTy,PTy(bTy,PTy(F4,F4)))))), 26970 (Call 26971 ("SaturatingAddSubtract",CTy"Media", 26972 Var("v66",PTy(FTy 2,PTy(F4,PTy(F4,F4))))), 26973 Call 26974 ("dfn'SaturatingAddSubtract",ATy(qTy,PTy(uTy,qTy)), 26975 Var("v66",PTy(FTy 2,PTy(F4,PTy(F4,F4)))))), 26976 (Call("SelectBytes",CTy"Media",Var("v67",PTy(F4,PTy(F4,F4)))), 26977 Call 26978 ("dfn'SelectBytes",ATy(qTy,PTy(uTy,qTy)), 26979 Var("v67",PTy(F4,PTy(F4,F4)))))])), 26980 (Call("Multiply",CTy"instruction",Var("v68",CTy"Multiply")), 26981 CS(Var("v68",CTy"Multiply"), 26982 [(Call 26983 ("Multiply32",CTy"Multiply", 26984 Var("v69",PTy(bTy,PTy(F4,PTy(F4,F4))))), 26985 Call 26986 ("dfn'Multiply32",ATy(qTy,PTy(uTy,qTy)), 26987 Var("v69",PTy(bTy,PTy(F4,PTy(F4,F4)))))), 26988 (Call 26989 ("MultiplyAccumulate",CTy"Multiply", 26990 Var("v70",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))), 26991 Call 26992 ("dfn'MultiplyAccumulate",ATy(qTy,PTy(uTy,qTy)), 26993 Var("v70",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))))), 26994 (Call 26995 ("MultiplyAccumulateAccumulate",CTy"Multiply", 26996 Var("v71",PTy(F4,PTy(F4,PTy(F4,F4))))), 26997 Call 26998 ("dfn'MultiplyAccumulateAccumulate",ATy(qTy,PTy(uTy,qTy)), 26999 Var("v71",PTy(F4,PTy(F4,PTy(F4,F4)))))), 27000 (Call 27001 ("MultiplyLong",CTy"Multiply", 27002 Var("v72", 27003 PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))))), 27004 Call 27005 ("dfn'MultiplyLong",ATy(qTy,PTy(uTy,qTy)), 27006 Var("v72", 27007 PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))))))), 27008 (Call 27009 ("MultiplySubtract",CTy"Multiply", 27010 Var("v73",PTy(F4,PTy(F4,PTy(F4,F4))))), 27011 Call 27012 ("dfn'MultiplySubtract",ATy(qTy,PTy(uTy,qTy)), 27013 Var("v73",PTy(F4,PTy(F4,PTy(F4,F4)))))), 27014 (Call 27015 ("Signed16Multiply32Accumulate",CTy"Multiply", 27016 Var("v74",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))))), 27017 Call 27018 ("dfn'Signed16Multiply32Accumulate",ATy(qTy,PTy(uTy,qTy)), 27019 Var("v74",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))))), 27020 (Call 27021 ("Signed16Multiply32Result",CTy"Multiply", 27022 Var("v75",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,F4)))))), 27023 Call 27024 ("dfn'Signed16Multiply32Result",ATy(qTy,PTy(uTy,qTy)), 27025 Var("v75",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,F4))))))), 27026 (Call 27027 ("Signed16Multiply64Accumulate",CTy"Multiply", 27028 Var("v76",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))))), 27029 Call 27030 ("dfn'Signed16Multiply64Accumulate",ATy(qTy,PTy(uTy,qTy)), 27031 Var("v76",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))))), 27032 (Call 27033 ("Signed16x32Multiply32Accumulate",CTy"Multiply", 27034 Var("v77",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))), 27035 Call 27036 ("dfn'Signed16x32Multiply32Accumulate", 27037 ATy(qTy,PTy(uTy,qTy)), 27038 Var("v77",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))))), 27039 (Call 27040 ("Signed16x32Multiply32Result",CTy"Multiply", 27041 Var("v78",PTy(bTy,PTy(F4,PTy(F4,F4))))), 27042 Call 27043 ("dfn'Signed16x32Multiply32Result",ATy(qTy,PTy(uTy,qTy)), 27044 Var("v78",PTy(bTy,PTy(F4,PTy(F4,F4)))))), 27045 (Call 27046 ("SignedMostSignificantMultiply",CTy"Multiply", 27047 Var("v79",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))), 27048 Call 27049 ("dfn'SignedMostSignificantMultiply",ATy(qTy,PTy(uTy,qTy)), 27050 Var("v79",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))))), 27051 (Call 27052 ("SignedMostSignificantMultiplySubtract",CTy"Multiply", 27053 Var("v80",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))), 27054 Call 27055 ("dfn'SignedMostSignificantMultiplySubtract", 27056 ATy(qTy,PTy(uTy,qTy)), 27057 Var("v80",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))))), 27058 (Call 27059 ("SignedMultiplyDual",CTy"Multiply", 27060 Var("v81",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))))), 27061 Call 27062 ("dfn'SignedMultiplyDual",ATy(qTy,PTy(uTy,qTy)), 27063 Var("v81",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))))), 27064 (Call 27065 ("SignedMultiplyLongDual",CTy"Multiply", 27066 Var("v82",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))))), 27067 Call 27068 ("dfn'SignedMultiplyLongDual",ATy(qTy,PTy(uTy,qTy)), 27069 Var("v82",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))))))])), 27070 (Call("SIMD",CTy"instruction",Var("v83",CTy"SIMD")), 27071 CS(Var("v83",CTy"SIMD"), 27072 [(Call 27073 ("SignedAddSub16",CTy"SIMD", 27074 Var("v84",PTy(FTy 2,PTy(F4,PTy(F4,F4))))), 27075 Call 27076 ("dfn'SignedAddSub16",ATy(qTy,PTy(uTy,qTy)), 27077 Var("v84",PTy(FTy 2,PTy(F4,PTy(F4,F4)))))), 27078 (Call 27079 ("SignedAddSub8",CTy"SIMD", 27080 Var("v85",PTy(bTy,PTy(F4,PTy(F4,F4))))), 27081 Call 27082 ("dfn'SignedAddSub8",ATy(qTy,PTy(uTy,qTy)), 27083 Var("v85",PTy(bTy,PTy(F4,PTy(F4,F4)))))), 27084 (Call 27085 ("SignedHalvingAddSub16",CTy"SIMD", 27086 Var("v86",PTy(FTy 2,PTy(F4,PTy(F4,F4))))), 27087 Call 27088 ("dfn'SignedHalvingAddSub16",ATy(qTy,PTy(uTy,qTy)), 27089 Var("v86",PTy(FTy 2,PTy(F4,PTy(F4,F4)))))), 27090 (Call 27091 ("SignedHalvingAddSub8",CTy"SIMD", 27092 Var("v87",PTy(bTy,PTy(F4,PTy(F4,F4))))), 27093 Call 27094 ("dfn'SignedHalvingAddSub8",ATy(qTy,PTy(uTy,qTy)), 27095 Var("v87",PTy(bTy,PTy(F4,PTy(F4,F4)))))), 27096 (Call 27097 ("SignedSaturatingAddSub16",CTy"SIMD", 27098 Var("v88",PTy(FTy 2,PTy(F4,PTy(F4,F4))))), 27099 Call 27100 ("dfn'SignedSaturatingAddSub16",ATy(qTy,PTy(uTy,qTy)), 27101 Var("v88",PTy(FTy 2,PTy(F4,PTy(F4,F4)))))), 27102 (Call 27103 ("SignedSaturatingAddSub8",CTy"SIMD", 27104 Var("v89",PTy(bTy,PTy(F4,PTy(F4,F4))))), 27105 Call 27106 ("dfn'SignedSaturatingAddSub8",ATy(qTy,PTy(uTy,qTy)), 27107 Var("v89",PTy(bTy,PTy(F4,PTy(F4,F4)))))), 27108 (Call 27109 ("UnsignedAddSub16",CTy"SIMD", 27110 Var("v90",PTy(FTy 2,PTy(F4,PTy(F4,F4))))), 27111 Call 27112 ("dfn'UnsignedAddSub16",ATy(qTy,PTy(uTy,qTy)), 27113 Var("v90",PTy(FTy 2,PTy(F4,PTy(F4,F4)))))), 27114 (Call 27115 ("UnsignedAddSub8",CTy"SIMD", 27116 Var("v91",PTy(bTy,PTy(F4,PTy(F4,F4))))), 27117 Call 27118 ("dfn'UnsignedAddSub8",ATy(qTy,PTy(uTy,qTy)), 27119 Var("v91",PTy(bTy,PTy(F4,PTy(F4,F4)))))), 27120 (Call 27121 ("UnsignedHalvingAddSub16",CTy"SIMD", 27122 Var("v92",PTy(FTy 2,PTy(F4,PTy(F4,F4))))), 27123 Call 27124 ("dfn'UnsignedHalvingAddSub16",ATy(qTy,PTy(uTy,qTy)), 27125 Var("v92",PTy(FTy 2,PTy(F4,PTy(F4,F4)))))), 27126 (Call 27127 ("UnsignedHalvingAddSub8",CTy"SIMD", 27128 Var("v93",PTy(bTy,PTy(F4,PTy(F4,F4))))), 27129 Call 27130 ("dfn'UnsignedHalvingAddSub8",ATy(qTy,PTy(uTy,qTy)), 27131 Var("v93",PTy(bTy,PTy(F4,PTy(F4,F4)))))), 27132 (Call 27133 ("UnsignedSaturatingAddSub16",CTy"SIMD", 27134 Var("v94",PTy(FTy 2,PTy(F4,PTy(F4,F4))))), 27135 Call 27136 ("dfn'UnsignedSaturatingAddSub16",ATy(qTy,PTy(uTy,qTy)), 27137 Var("v94",PTy(FTy 2,PTy(F4,PTy(F4,F4)))))), 27138 (Call 27139 ("UnsignedSaturatingAddSub8",CTy"SIMD", 27140 Var("v95",PTy(bTy,PTy(F4,PTy(F4,F4))))), 27141 Call 27142 ("dfn'UnsignedSaturatingAddSub8",ATy(qTy,PTy(uTy,qTy)), 27143 Var("v95",PTy(bTy,PTy(F4,PTy(F4,F4)))))), 27144 (Call 27145 ("UnsignedSumAbsoluteDifferences",CTy"SIMD", 27146 Var("v96",PTy(F4,PTy(F4,PTy(F4,F4))))), 27147 Call 27148 ("dfn'UnsignedSumAbsoluteDifferences", 27149 ATy(qTy,PTy(uTy,qTy)), 27150 Var("v96",PTy(F4,PTy(F4,PTy(F4,F4))))))])), 27151 (Call("Store",CTy"instruction",Var("v97",CTy"Store")), 27152 CS(Var("v97",CTy"Store"), 27153 [(Call 27154 ("StoreByte",CTy"Store", 27155 Var("v98", 27156 PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))), 27157 Call 27158 ("dfn'StoreByte",ATy(qTy,PTy(uTy,qTy)), 27159 Var("v98", 27160 PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))))), 27161 (Call 27162 ("StoreByteUnprivileged",CTy"Store", 27163 Var("v99",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))), 27164 Call 27165 ("dfn'StoreByteUnprivileged",ATy(qTy,PTy(uTy,qTy)), 27166 Var("v99",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))), 27167 (Call 27168 ("StoreDual",CTy"Store", 27169 Var("v100", 27170 PTy(bTy, 27171 PTy(bTy, 27172 PTy(bTy,PTy(F4,PTy(F4,PTy(F4,CTy"offset2")))))))), 27173 Call 27174 ("dfn'StoreDual",ATy(qTy,PTy(uTy,qTy)), 27175 Var("v100", 27176 PTy(bTy, 27177 PTy(bTy, 27178 PTy(bTy,PTy(F4,PTy(F4,PTy(F4,CTy"offset2"))))))))), 27179 (Call 27180 ("StoreExclusive",CTy"Store", 27181 Var("v101",PTy(F4,PTy(F4,PTy(F4,F32))))), 27182 Call 27183 ("dfn'StoreExclusive",ATy(qTy,PTy(uTy,qTy)), 27184 Var("v101",PTy(F4,PTy(F4,PTy(F4,F32)))))), 27185 (Call 27186 ("StoreExclusiveByte",CTy"Store", 27187 Var("v102",PTy(F4,PTy(F4,F4)))), 27188 Call 27189 ("dfn'StoreExclusiveByte",ATy(qTy,PTy(uTy,qTy)), 27190 Var("v102",PTy(F4,PTy(F4,F4))))), 27191 (Call 27192 ("StoreExclusiveDoubleword",CTy"Store", 27193 Var("v103",PTy(F4,PTy(F4,PTy(F4,F4))))), 27194 Call 27195 ("dfn'StoreExclusiveDoubleword",ATy(qTy,PTy(uTy,qTy)), 27196 Var("v103",PTy(F4,PTy(F4,PTy(F4,F4)))))), 27197 (Call 27198 ("StoreExclusiveHalf",CTy"Store", 27199 Var("v104",PTy(F4,PTy(F4,F4)))), 27200 Call 27201 ("dfn'StoreExclusiveHalf",ATy(qTy,PTy(uTy,qTy)), 27202 Var("v104",PTy(F4,PTy(F4,F4))))), 27203 (Call 27204 ("StoreHalf",CTy"Store", 27205 Var("v105", 27206 PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))), 27207 Call 27208 ("dfn'StoreHalf",ATy(qTy,PTy(uTy,qTy)), 27209 Var("v105", 27210 PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))))), 27211 (Call 27212 ("StoreHalfUnprivileged",CTy"Store", 27213 Var("v106",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset2")))))), 27214 Call 27215 ("dfn'StoreHalfUnprivileged",ATy(qTy,PTy(uTy,qTy)), 27216 Var("v106",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset2"))))))), 27217 (Call 27218 ("StoreMultiple",CTy"Store", 27219 Var("v107",PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,F16)))))), 27220 Call 27221 ("dfn'StoreMultiple",ATy(qTy,PTy(uTy,qTy)), 27222 Var("v107",PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,F16))))))), 27223 (Call 27224 ("StoreMultipleUserRegisters",CTy"Store", 27225 Var("v108",PTy(bTy,PTy(bTy,PTy(F4,F16))))), 27226 Call 27227 ("dfn'StoreMultipleUserRegisters",ATy(qTy,PTy(uTy,qTy)), 27228 Var("v108",PTy(bTy,PTy(bTy,PTy(F4,F16)))))), 27229 (Call 27230 ("StoreUnprivileged",CTy"Store", 27231 Var("v109",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))), 27232 Call 27233 ("dfn'StoreUnprivileged",ATy(qTy,PTy(uTy,qTy)), 27234 Var("v109",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))), 27235 (Call 27236 ("StoreWord",CTy"Store", 27237 Var("v110", 27238 PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))), 27239 Call 27240 ("dfn'StoreWord",ATy(qTy,PTy(uTy,qTy)), 27241 Var("v110", 27242 PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))))])), 27243 (Call("System",CTy"instruction",Var("v111",CTy"System")), 27244 CS(Var("v111",CTy"System"), 27245 [(Const("ExceptionReturn",CTy"System"), 27246 Const("dfn'ExceptionReturn",ATy(qTy,PTy(uTy,qTy)))), 27247 (Call 27248 ("ChangeProcessorState",CTy"System", 27249 Var("v112", 27250 PTy(bTy, 27251 PTy(bTy,PTy(bTy,PTy(bTy,PTy(bTy,PTy(bTy,FTy 5)))))))), 27252 Call 27253 ("dfn'ChangeProcessorState",ATy(qTy,PTy(uTy,qTy)), 27254 Var("v112", 27255 PTy(bTy, 27256 PTy(bTy,PTy(bTy,PTy(bTy,PTy(bTy,PTy(bTy,FTy 5))))))))), 27257 (Call 27258 ("ChangeProcessorStateT1",CTy"System", 27259 Var("v113",PTy(bTy,PTy(bTy,PTy(bTy,bTy))))), 27260 Call 27261 ("dfn'ChangeProcessorStateT1",ATy(qTy,PTy(uTy,qTy)), 27262 Var("v113",PTy(bTy,PTy(bTy,PTy(bTy,bTy)))))), 27263 (Call("EnterxLeavex",CTy"System",bVar"v114"), 27264 Call("dfn'EnterxLeavex",ATy(qTy,PTy(uTy,qTy)),bVar"v114")), 27265 (Call("HypervisorCall",CTy"System",Var("v115",F16)), 27266 Call 27267 ("dfn'HypervisorCall",ATy(qTy,PTy(uTy,qTy)),Var("v115",F16))), 27268 (Call 27269 ("MoveToBankedOrSpecialRegister",CTy"System", 27270 Var("v116",PTy(bTy,PTy(FTy 5,F4)))), 27271 Call 27272 ("dfn'MoveToBankedOrSpecialRegister",ATy(qTy,PTy(uTy,qTy)), 27273 Var("v116",PTy(bTy,PTy(FTy 5,F4))))), 27274 (Call 27275 ("MoveToRegisterFromBankedOrSpecial",CTy"System", 27276 Var("v117",PTy(bTy,PTy(FTy 5,F4)))), 27277 Call 27278 ("dfn'MoveToRegisterFromBankedOrSpecial", 27279 ATy(qTy,PTy(uTy,qTy)),Var("v117",PTy(bTy,PTy(FTy 5,F4))))), 27280 (Call 27281 ("MoveToRegisterFromSpecial",CTy"System", 27282 Var("v118",PTy(bTy,F4))), 27283 Call 27284 ("dfn'MoveToRegisterFromSpecial",ATy(qTy,PTy(uTy,qTy)), 27285 Var("v118",PTy(bTy,F4)))), 27286 (Call 27287 ("MoveToSpecialFromImmediate",CTy"System", 27288 Var("v119",PTy(bTy,PTy(F32,F4)))), 27289 Call 27290 ("dfn'MoveToSpecialFromImmediate",ATy(qTy,PTy(uTy,qTy)), 27291 Var("v119",PTy(bTy,PTy(F32,F4))))), 27292 (Call 27293 ("MoveToSpecialFromRegister",CTy"System", 27294 Var("v120",PTy(bTy,PTy(F4,F4)))), 27295 Call 27296 ("dfn'MoveToSpecialFromRegister",ATy(qTy,PTy(uTy,qTy)), 27297 Var("v120",PTy(bTy,PTy(F4,F4))))), 27298 (Call 27299 ("ReturnFromException",CTy"System", 27300 Var("v121",PTy(bTy,PTy(bTy,PTy(bTy,F4))))), 27301 Call 27302 ("dfn'ReturnFromException",ATy(qTy,PTy(uTy,qTy)), 27303 Var("v121",PTy(bTy,PTy(bTy,PTy(bTy,F4)))))), 27304 (Call("SecureMonitorCall",CTy"System",Var("v122",F4)), 27305 Call 27306 ("dfn'SecureMonitorCall",ATy(qTy,PTy(uTy,qTy)), 27307 Var("v122",F4))), 27308 (Call("Setend",CTy"System",bVar"v123"), 27309 Call("dfn'Setend",ATy(qTy,PTy(uTy,qTy)),bVar"v123")), 27310 (Call 27311 ("StoreReturnState",CTy"System", 27312 Var("v124",PTy(bTy,PTy(bTy,PTy(bTy,FTy 5))))), 27313 Call 27314 ("dfn'StoreReturnState",ATy(qTy,PTy(uTy,qTy)), 27315 Var("v124",PTy(bTy,PTy(bTy,PTy(bTy,FTy 5)))))), 27316 (Call("SupervisorCall",CTy"System",Var("v125",F32)), 27317 Call 27318 ("dfn'SupervisorCall",ATy(qTy,PTy(uTy,qTy)),Var("v125",F32)))]))])) 27319; 27320val Fetch_def = Def0 27321 ("Fetch", 27322 MB(Call("CurrentInstrSet",ATy(qTy,PTy(CTy"InstrSet",qTy)),LU), 27323 Close 27324 (Var("iset",CTy"InstrSet"), 27325 MB(MR(Close 27326 (qVar"s",Dest("Architecture",CTy"Architecture",qVar"s"))), 27327 Close 27328 (Var("v",CTy"Architecture"), 27329 MB(MB(MU(EQ(Var("v",CTy"Architecture"), 27330 LC("ARMv4",CTy"Architecture")),qTy), 27331 Close 27332 (bVar"v", 27333 MU(Bop(Or, 27334 EQ(Var("iset",CTy"InstrSet"), 27335 LC("InstrSet_ARM",CTy"InstrSet")), 27336 bVar"v"),qTy))), 27337 Close 27338 (bVar"b", 27339 ITB([(bVar"b", 27340 MB(MW(Close 27341 (qVar"s", 27342 Rupd 27343 ("Encoding", 27344 TP[qVar"s", 27345 LC("Encoding_ARM",CTy"Encoding")]))), 27346 Close 27347 (AVar uTy, 27348 MB(MR(Close 27349 (qVar"s", 27350 Dest 27351 ("REG",ATy(CTy"RName",F32), 27352 qVar"s"))), 27353 Close 27354 (Var("v",ATy(CTy"RName",F32)), 27355 MB(MB(MB(MU(Apply 27356 (Var("v", 27357 ATy(CTy"RName", 27358 F32)), 27359 LC("RName_PC", 27360 CTy"RName")),qTy), 27361 Close 27362 (Var("v",F32), 27363 MU(TP[Var("v",F32),LN 4], 27364 qTy))), 27365 Close 27366 (Var("v",PTy(F32,nTy)), 27367 Call 27368 ("MemA", 27369 ATy(qTy,PTy(F32,qTy)), 27370 Var("v",PTy(F32,nTy))))), 27371 Close 27372 (Var("v",F32), 27373 MU(Call 27374 ("ARM",CTy"MachineCode", 27375 Var("v",F32)),qTy)))))))), 27376 (EQ(Var("iset",CTy"InstrSet"), 27377 LC("InstrSet_Jazelle",CTy"InstrSet")), 27378 Call 27379 ("raise'exception", 27380 ATy(qTy,PTy(CTy"MachineCode",qTy)), 27381 Call 27382 ("UNPREDICTABLE",CTy"exception",LS"Fetch")))], 27383 MB(MR(Close 27384 (qVar"s", 27385 Dest("REG",ATy(CTy"RName",F32),qVar"s"))), 27386 Close 27387 (Var("v",ATy(CTy"RName",F32)), 27388 MB(MU(Apply 27389 (Var("v",ATy(CTy"RName",F32)), 27390 LC("RName_PC",CTy"RName")),qTy), 27391 Close 27392 (Var("fpc",F32), 27393 MB(Call 27394 ("MemA",ATy(qTy,PTy(F16,qTy)), 27395 TP[Var("fpc",F32),LN 2]), 27396 Close 27397 (Var("ireg",F16), 27398 MB(MR(Close 27399 (qVar"s", 27400 Dest 27401 ("data_abort",bTy, 27402 qVar"s"))), 27403 Close 27404 (bVar"b", 27405 ITB([(bVar"b", 27406 MU(LX(CTy"MachineCode"), 27407 qTy)), 27408 (Bop(And, 27409 EQ(EX(Var("ireg", 27410 F16), 27411 LN 15, 27412 LN 13, 27413 FTy 3), 27414 LW(7,3)), 27415 Mop(Not, 27416 EQ(EX(Var("ireg", 27417 F16), 27418 LN 12, 27419 LN 11, 27420 FTy 2), 27421 LW(0,2)))), 27422 MB(MW(Close 27423 (qVar"s", 27424 Rupd 27425 ("Encoding", 27426 TP[qVar"s", 27427 LC("Encoding_Thumb2", 27428 CTy"Encoding")]))), 27429 Close 27430 (AVar uTy, 27431 MB(Call 27432 ("MemA", 27433 ATy(qTy, 27434 PTy(F16, 27435 qTy)), 27436 TP[Bop(Add, 27437 Var("fpc", 27438 F32), 27439 LW(2, 27440 32)), 27441 LN 2]), 27442 Close 27443 (Var("v", 27444 F16), 27445 MB(MU(TP[Var("ireg", 27446 F16), 27447 Var("v", 27448 F16)], 27449 qTy), 27450 Close 27451 (Var("v", 27452 PTy(F16, 27453 F16)), 27454 MU(Call 27455 ("Thumb2", 27456 CTy"MachineCode", 27457 Var("v", 27458 PTy(F16, 27459 F16))), 27460 qTy))))))))], 27461 MB(MW(Close 27462 (qVar"s", 27463 Rupd 27464 ("Encoding", 27465 TP[qVar"s", 27466 LC("Encoding_Thumb", 27467 CTy"Encoding")]))), 27468 Close 27469 (AVar uTy, 27470 MB(Call 27471 ("HaveThumbEE", 27472 ATy(qTy, 27473 PTy(bTy, 27474 qTy)), 27475 LU), 27476 Close 27477 (bVar"v", 27478 MB(MB(MU(Mop(Not, 27479 bVar"v"), 27480 qTy), 27481 Close 27482 (bVar"v", 27483 MU(Bop(Or, 27484 EQ(Var("iset", 27485 CTy"InstrSet"), 27486 LC("InstrSet_Thumb", 27487 CTy"InstrSet")), 27488 bVar"v"), 27489 qTy))), 27490 Close 27491 (bVar"b", 27492 MU(ITE(bVar"b", 27493 Call 27494 ("Thumb", 27495 CTy"MachineCode", 27496 Var("ireg", 27497 F16)), 27498 Call 27499 ("ThumbEE", 27500 CTy"MachineCode", 27501 Var("ireg", 27502 F16))), 27503 qTy)))))))))))))))))))))))) 27504; 27505val Take_def = Def 27506 ("Take",TP[Var("cond",F4),bVar"defined"], 27507 MB(MW(Close 27508 (qVar"s",Rupd("CurrentCondition",TP[qVar"s",Var("cond",F4)]))), 27509 Close 27510 (AVar uTy, 27511 MB(Call("ConditionPassed",ATy(qTy,PTy(bTy,qTy)),LU), 27512 Close 27513 (bVar"pass", 27514 MB(MW(Close 27515 (qVar"s", 27516 Rupd 27517 ("undefined", 27518 TP[qVar"s", 27519 Bop(And,bVar"pass",Mop(Not,bVar"defined"))]))), 27520 Close 27521 (AVar uTy,MU(Bop(And,bVar"pass",bVar"defined"),qTy)))))))) 27522; 27523val Skip_def = Def 27524 ("Skip",AVar uTy, 27525 MB(MR(Close(qVar"s",Dest("undefined",bTy,qVar"s"))), 27526 Close 27527 (bVar"b", 27528 MU(ITE(bVar"b",Call("Undefined",CTy"instruction",LW(0,32)), 27529 Const("NoOperation",CTy"instruction")),qTy)))) 27530; 27531val UndefinedARM_def = Def 27532 ("UndefinedARM",Var("cond",F4), 27533 MB(MW(Close 27534 (qVar"s",Rupd("CurrentCondition",TP[qVar"s",Var("cond",F4)]))), 27535 Close 27536 (AVar uTy, 27537 MB(Call("ConditionPassed",ATy(qTy,PTy(bTy,qTy)),LU), 27538 Close 27539 (bVar"b", 27540 MU(ITE(bVar"b",Call("Undefined",CTy"instruction",LW(0,32)), 27541 Const("NoOperation",CTy"instruction")),qTy)))))) 27542; 27543val UndefinedThumb_def = Def 27544 ("UndefinedThumb",AVar uTy, 27545 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 27546 Close 27547 (Var("v",F4), 27548 Call 27549 ("UndefinedARM",ATy(qTy,PTy(CTy"instruction",qTy)),Var("v",F4))))) 27550; 27551val DECODE_UNPREDICTABLE_def = Def 27552 ("DECODE_UNPREDICTABLE",TP[Var("mc",CTy"MachineCode"),sVar"s"], 27553 Call 27554 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 27555 Call 27556 ("UNPREDICTABLE",CTy"exception", 27557 CC[LS"Decode ", 27558 CS(Var("mc",CTy"MachineCode"), 27559 [(Call("ARM",CTy"MachineCode",Var("opc",F32)), 27560 CC[Mop(Cast sTy,Mop(Cast vTy,Var("opc",F32))),LS"; ARM; "]), 27561 (Call("Thumb",CTy"MachineCode",Var("opc",F16)), 27562 CC[Mop(Cast sTy,Mop(Cast vTy,Var("opc",F16))), 27563 LS"; Thumb; "]), 27564 (Call("ThumbEE",CTy"MachineCode",Var("opc",F16)), 27565 CC[Mop(Cast sTy,Mop(Cast vTy,Var("opc",F16))), 27566 LS"; ThumbEE; "]), 27567 (Call 27568 ("Thumb2",CTy"MachineCode", 27569 TP[Var("opc1",F16),Var("opc2",F16)]), 27570 CC[Mop(Cast sTy,Mop(Cast vTy,Var("opc1",F16))),LS", ", 27571 Mop(Cast sTy,Mop(Cast vTy,Var("opc2",F16))), 27572 LS"; Thumb2; "])]),sVar"s"]))) 27573; 27574val DecodeHint_def = Def 27575 ("DecodeHint",TP[Var("cond",F4),Var("op",F8)], 27576 MB(MR(Close(qVar"s",Dest("Architecture",CTy"Architecture",qVar"s"))), 27577 Close 27578 (Var("v",CTy"Architecture"), 27579 MB(MB(MU(EQ(Var("v",CTy"Architecture"), 27580 LC("ARMv6T2",CTy"Architecture")),qTy), 27581 Close 27582 (bVar"b", 27583 ITE(bVar"b",MU(LT,qTy), 27584 MB(MR(Close 27585 (qVar"s", 27586 Dest("Encoding",CTy"Encoding",qVar"s"))), 27587 Close 27588 (Var("v",CTy"Encoding"), 27589 MB(MB(MU(EQ(Var("v",CTy"Encoding"), 27590 LC("Encoding_ARM",CTy"Encoding")), 27591 qTy), 27592 Close 27593 (bVar"v", 27594 MU(Bop(And, 27595 EQ(EX(Var("op",F8),LN 7,LN 4, 27596 F4),LW(15,4)),bVar"v"), 27597 qTy))), 27598 Close 27599 (bVar"b", 27600 ITE(bVar"b", 27601 MB(MR(Close 27602 (qVar"s", 27603 Dest 27604 ("Architecture", 27605 CTy"Architecture", 27606 qVar"s"))), 27607 Close 27608 (Var("v",CTy"Architecture"), 27609 MU(EQ(Var("v", 27610 CTy"Architecture"), 27611 LC("ARMv6K", 27612 CTy"Architecture")), 27613 qTy))),MU(LF,qTy))))))))), 27614 Close 27615 (bVar"b", 27616 ITE(bVar"b",MU(Const("NoOperation",CTy"instruction"),qTy), 27617 MB(Call("ArchVersion",ATy(qTy,PTy(nTy,qTy)),LU), 27618 Close 27619 (nVar"v", 27620 MB(MB(MB(MB(MU(Bop(Ge,nVar"v",LN 7),qTy), 27621 Close 27622 (bVar"b", 27623 ITE(bVar"b",MU(LT,qTy), 27624 MB(MR(Close 27625 (qVar"s", 27626 Dest 27627 ("Encoding", 27628 CTy"Encoding", 27629 qVar"s"))), 27630 Close 27631 (Var("v",CTy"Encoding"), 27632 MB(MU(EQ(Var("v", 27633 CTy"Encoding"), 27634 LC("Encoding_ARM", 27635 CTy"Encoding")), 27636 qTy), 27637 Close 27638 (bVar"b", 27639 ITE(bVar"b", 27640 MB(MR(Close 27641 (qVar"s", 27642 Dest 27643 ("Architecture", 27644 CTy"Architecture", 27645 qVar"s"))), 27646 Close 27647 (Var("v", 27648 CTy"Architecture"), 27649 MU(EQ(Var("v", 27650 CTy"Architecture"), 27651 LC("ARMv6K", 27652 CTy"Architecture")), 27653 qTy))), 27654 MU(LF,qTy))))))))), 27655 Close 27656 (bVar"v", 27657 MU(TP[Var("cond",F4),bVar"v"],qTy))), 27658 Close 27659 (Var("v",PTy(F4,bTy)), 27660 Call 27661 ("Take",ATy(qTy,PTy(bTy,qTy)), 27662 Var("v",PTy(F4,bTy))))), 27663 Close 27664 (bVar"b", 27665 ITE(bVar"b", 27666 MU(Let(TP[bVar"b'7",bVar"b'6", 27667 bVar"b'5",bVar"b'4", 27668 bVar"b'3",bVar"b'2", 27669 bVar"b'1",bVar"b'0"], 27670 BL(8,Var("op",F8)), 27671 ITB([(Bop(And, 27672 Mop(Not,bVar"b'7"), 27673 Bop(And, 27674 Mop(Not,bVar"b'6"), 27675 Bop(And, 27676 Mop(Not, 27677 bVar"b'5"), 27678 Bop(And, 27679 Mop(Not, 27680 bVar"b'4"), 27681 Bop(And, 27682 Mop(Not, 27683 bVar"b'3"), 27684 Bop(And, 27685 Mop(Not, 27686 bVar"b'2"), 27687 Bop(And, 27688 Mop(Not, 27689 bVar"b'1"), 27690 bVar"b'0"))))))), 27691 Call 27692 ("Hint", 27693 CTy"instruction", 27694 Const 27695 ("Yield",CTy"Hint"))), 27696 (Bop(And, 27697 Mop(Not,bVar"b'7"), 27698 Bop(And, 27699 Mop(Not,bVar"b'6"), 27700 Bop(And, 27701 Mop(Not, 27702 bVar"b'5"), 27703 Bop(And, 27704 Mop(Not, 27705 bVar"b'4"), 27706 Bop(And, 27707 Mop(Not, 27708 bVar"b'3"), 27709 Bop(And, 27710 Mop(Not, 27711 bVar"b'2"), 27712 Bop(And, 27713 bVar"b'1", 27714 Mop(Not, 27715 bVar"b'0")))))))), 27716 Call 27717 ("Hint", 27718 CTy"instruction", 27719 Const 27720 ("WaitForEvent", 27721 CTy"Hint"))), 27722 (Bop(And, 27723 Mop(Not,bVar"b'7"), 27724 Bop(And, 27725 Mop(Not,bVar"b'6"), 27726 Bop(And, 27727 Mop(Not, 27728 bVar"b'5"), 27729 Bop(And, 27730 Mop(Not, 27731 bVar"b'4"), 27732 Bop(And, 27733 Mop(Not, 27734 bVar"b'3"), 27735 Bop(And, 27736 Mop(Not, 27737 bVar"b'2"), 27738 Bop(And, 27739 bVar"b'1", 27740 bVar"b'0"))))))), 27741 Call 27742 ("Hint", 27743 CTy"instruction", 27744 Const 27745 ("WaitForInterrupt", 27746 CTy"Hint"))), 27747 (Bop(And, 27748 Mop(Not,bVar"b'7"), 27749 Bop(And, 27750 Mop(Not,bVar"b'6"), 27751 Bop(And, 27752 Mop(Not, 27753 bVar"b'5"), 27754 Bop(And, 27755 Mop(Not, 27756 bVar"b'4"), 27757 Bop(And, 27758 Mop(Not, 27759 bVar"b'3"), 27760 Bop(And, 27761 bVar"b'2", 27762 Bop(And, 27763 Mop(Not, 27764 bVar"b'1"), 27765 Mop(Not, 27766 bVar"b'0")))))))), 27767 Call 27768 ("Hint", 27769 CTy"instruction", 27770 Const 27771 ("SendEvent", 27772 CTy"Hint"))), 27773 (Bop(And,bVar"b'7", 27774 Bop(And,bVar"b'6", 27775 Bop(And,bVar"b'5", 27776 bVar"b'4"))), 27777 Call 27778 ("Hint", 27779 CTy"instruction", 27780 Call 27781 ("Debug",CTy"Hint", 27782 Mop(Cast F4, 27783 LL[bVar"b'3", 27784 bVar"b'2", 27785 bVar"b'1", 27786 bVar"b'0"]))))], 27787 Const 27788 ("NoOperation", 27789 CTy"instruction"))),qTy), 27790 Call 27791 ("Skip", 27792 ATy(qTy,PTy(CTy"instruction",qTy)), 27793 LU)))))))))))) 27794; 27795val DecodeParallelAdditionSubtraction_def = Def 27796 ("DecodeParallelAdditionSubtraction", 27797 TP[Var("op1",FTy 2),Var("op2",FTy 3),Var("U",F1),Var("Rd",F4), 27798 Var("Rn",F4),Var("Rm",F4)], 27799 ITE(EQ(Var("U",F1),LW(1,1)), 27800 CS(TP[Var("op1",FTy 2),BL(3,Var("op2",FTy 3))], 27801 [(TP[LW(1,2),LF,bVar"x'1",bVar"x'0"], 27802 Call 27803 ("SIMD",CTy"instruction", 27804 Call 27805 ("UnsignedAddSub16",CTy"SIMD", 27806 TP[Mop(Cast(FTy 2),LL[bVar"x'1",bVar"x'0"]), 27807 Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 27808 (TP[LW(1,2),LT,LF,LF], 27809 Call 27810 ("SIMD",CTy"instruction", 27811 Call 27812 ("UnsignedAddSub8",CTy"SIMD", 27813 TP[LF,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 27814 (TP[LW(1,2),LT,LT,LT], 27815 Call 27816 ("SIMD",CTy"instruction", 27817 Call 27818 ("UnsignedAddSub8",CTy"SIMD", 27819 TP[LT,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 27820 (TP[LW(2,2),LF,bVar"x'1",bVar"x'0"], 27821 Call 27822 ("SIMD",CTy"instruction", 27823 Call 27824 ("UnsignedSaturatingAddSub16",CTy"SIMD", 27825 TP[Mop(Cast(FTy 2),LL[bVar"x'1",bVar"x'0"]), 27826 Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 27827 (TP[LW(2,2),LT,LF,LF], 27828 Call 27829 ("SIMD",CTy"instruction", 27830 Call 27831 ("UnsignedSaturatingAddSub8",CTy"SIMD", 27832 TP[LF,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 27833 (TP[LW(2,2),LT,LT,LT], 27834 Call 27835 ("SIMD",CTy"instruction", 27836 Call 27837 ("UnsignedSaturatingAddSub8",CTy"SIMD", 27838 TP[LT,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 27839 (TP[LW(3,2),LF,bVar"x'1",bVar"x'0"], 27840 Call 27841 ("SIMD",CTy"instruction", 27842 Call 27843 ("UnsignedHalvingAddSub16",CTy"SIMD", 27844 TP[Mop(Cast(FTy 2),LL[bVar"x'1",bVar"x'0"]), 27845 Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 27846 (TP[LW(3,2),LT,LF,LF], 27847 Call 27848 ("SIMD",CTy"instruction", 27849 Call 27850 ("UnsignedHalvingAddSub8",CTy"SIMD", 27851 TP[LF,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 27852 (TP[LW(3,2),LT,LT,LT], 27853 Call 27854 ("SIMD",CTy"instruction", 27855 Call 27856 ("UnsignedHalvingAddSub8",CTy"SIMD", 27857 TP[LT,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 27858 (TP[AVar(FTy 2),AVar bTy,AVar bTy,AVar bTy], 27859 Call("Undefined",CTy"instruction",LW(0,32)))]), 27860 CS(TP[Var("op1",FTy 2),BL(3,Var("op2",FTy 3))], 27861 [(TP[LW(1,2),LF,bVar"x'1",bVar"x'0"], 27862 Call 27863 ("SIMD",CTy"instruction", 27864 Call 27865 ("SignedAddSub16",CTy"SIMD", 27866 TP[Mop(Cast(FTy 2),LL[bVar"x'1",bVar"x'0"]), 27867 Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 27868 (TP[LW(1,2),LT,LF,LF], 27869 Call 27870 ("SIMD",CTy"instruction", 27871 Call 27872 ("SignedAddSub8",CTy"SIMD", 27873 TP[LF,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 27874 (TP[LW(1,2),LT,LT,LT], 27875 Call 27876 ("SIMD",CTy"instruction", 27877 Call 27878 ("SignedAddSub8",CTy"SIMD", 27879 TP[LT,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 27880 (TP[LW(2,2),LF,bVar"x'1",bVar"x'0"], 27881 Call 27882 ("SIMD",CTy"instruction", 27883 Call 27884 ("SignedSaturatingAddSub16",CTy"SIMD", 27885 TP[Mop(Cast(FTy 2),LL[bVar"x'1",bVar"x'0"]), 27886 Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 27887 (TP[LW(2,2),LT,LF,LF], 27888 Call 27889 ("SIMD",CTy"instruction", 27890 Call 27891 ("SignedSaturatingAddSub8",CTy"SIMD", 27892 TP[LF,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 27893 (TP[LW(2,2),LT,LT,LT], 27894 Call 27895 ("SIMD",CTy"instruction", 27896 Call 27897 ("SignedSaturatingAddSub8",CTy"SIMD", 27898 TP[LT,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 27899 (TP[LW(3,2),LF,bVar"x'1",bVar"x'0"], 27900 Call 27901 ("SIMD",CTy"instruction", 27902 Call 27903 ("SignedHalvingAddSub16",CTy"SIMD", 27904 TP[Mop(Cast(FTy 2),LL[bVar"x'1",bVar"x'0"]), 27905 Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 27906 (TP[LW(3,2),LT,LF,LF], 27907 Call 27908 ("SIMD",CTy"instruction", 27909 Call 27910 ("SignedHalvingAddSub8",CTy"SIMD", 27911 TP[LF,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 27912 (TP[LW(3,2),LT,LT,LT], 27913 Call 27914 ("SIMD",CTy"instruction", 27915 Call 27916 ("SignedHalvingAddSub8",CTy"SIMD", 27917 TP[LT,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 27918 (TP[AVar(FTy 2),AVar bTy,AVar bTy,AVar bTy], 27919 Call("Undefined",CTy"instruction",LW(0,32)))]))) 27920; 27921val DecodeARM_def = Def 27922 ("DecodeARM",Var("w",F32), 27923 Let(Var("mc",CTy"MachineCode"), 27924 Call("ARM",CTy"MachineCode",Var("w",F32)), 27925 Let(Var("cond",F4),EX(Var("w",F32),LN 31,LN 28,F4), 27926 ITE(EQ(Var("cond",F4),LW(15,4)), 27927 Let(TP[bVar"b'27",bVar"b'26",bVar"b'25",bVar"b'24", 27928 bVar"b'23",bVar"b'22",bVar"b'21",bVar"b'20", 27929 bVar"b'19",bVar"b'18",bVar"b'17",bVar"b'16", 27930 bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", 27931 bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7", 27932 bVar"b'6",bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2", 27933 bVar"b'1",bVar"b'0"], 27934 BL(28,EX(Var("w",F32),LN 27,LN 0,FTy 28)), 27935 ITB([(bVar"b'26", 27936 ITB([(bVar"b'21", 27937 ITE(Bop(And,Mop(Not,bVar"b'27"), 27938 Bop(And,Mop(Not,bVar"b'25"), 27939 Bop(And,bVar"b'24", 27940 Bop(And, 27941 Mop(Not,bVar"b'23"), 27942 Bop(And,bVar"b'22", 27943 Bop(And,bVar"b'20", 27944 Mop(Not, 27945 bVar"b'7"))))))), 27946 ITB([(Bop(And,Mop(Not,bVar"b'6"), 27947 Bop(And,Mop(Not,bVar"b'5"), 27948 bVar"b'4")), 27949 MB(MR(Close 27950 (qVar"s", 27951 Dest 27952 ("Architecture", 27953 CTy"Architecture", 27954 qVar"s"))), 27955 Close 27956 (Var("v",CTy"Architecture"), 27957 MB(MB(MB(MU(Bop(In, 27958 Var("v", 27959 CTy"Architecture"), 27960 SL[LC("ARMv6K", 27961 CTy"Architecture"), 27962 LC("ARMv7_A", 27963 CTy"Architecture"), 27964 LC("ARMv7_R", 27965 CTy"Architecture")]), 27966 qTy), 27967 Close 27968 (bVar"v", 27969 MU(TP[LW(14,4), 27970 bVar"v"], 27971 qTy))), 27972 Close 27973 (Var("v", 27974 PTy(F4,bTy)), 27975 Call 27976 ("Take", 27977 ATy(qTy, 27978 PTy(bTy,qTy)), 27979 Var("v", 27980 PTy(F4,bTy))))), 27981 Close 27982 (bVar"b", 27983 ITE(bVar"b", 27984 MU(Const 27985 ("ClearExclusive", 27986 CTy"instruction"), 27987 qTy), 27988 Call 27989 ("Skip", 27990 ATy(qTy, 27991 PTy(CTy"instruction", 27992 qTy)), 27993 LU))))))), 27994 (Bop(And,bVar"b'19", 27995 Bop(And,bVar"b'18", 27996 Bop(And,bVar"b'17", 27997 Bop(And,bVar"b'16", 27998 Bop(And, 27999 bVar"b'15", 28000 Bop(And, 28001 bVar"b'14", 28002 Bop(And, 28003 bVar"b'13", 28004 Bop(And, 28005 bVar"b'12", 28006 Bop(And, 28007 Mop(Not, 28008 bVar"b'11"), 28009 Bop(And, 28010 Mop(Not, 28011 bVar"b'10"), 28012 Bop(And, 28013 Mop(Not, 28014 bVar"b'9"), 28015 Bop(And, 28016 Mop(Not, 28017 bVar"b'8"), 28018 Bop(And, 28019 bVar"b'6", 28020 Bop(And, 28021 Mop(Not, 28022 bVar"b'5"), 28023 Mop(Not, 28024 bVar"b'4"))))))))))))))), 28025 MB(Call 28026 ("ArchVersion", 28027 ATy(qTy,PTy(nTy,qTy)),LU), 28028 Close 28029 (nVar"v", 28030 MB(MB(MB(MU(Bop(Ge,nVar"v", 28031 LN 7),qTy), 28032 Close 28033 (bVar"v", 28034 MU(TP[LW(14,4), 28035 bVar"v"], 28036 qTy))), 28037 Close 28038 (Var("v", 28039 PTy(F4,bTy)), 28040 Call 28041 ("Take", 28042 ATy(qTy, 28043 PTy(bTy,qTy)), 28044 Var("v", 28045 PTy(F4,bTy))))), 28046 Close 28047 (bVar"b", 28048 ITE(bVar"b", 28049 MU(Call 28050 ("Hint", 28051 CTy"instruction", 28052 Call 28053 ("DataSynchronizationBarrier", 28054 CTy"Hint", 28055 Mop(Cast 28056 F4, 28057 LL[bVar"b'3", 28058 bVar"b'2", 28059 bVar"b'1", 28060 bVar"b'0"]))), 28061 qTy), 28062 Call 28063 ("Skip", 28064 ATy(qTy, 28065 PTy(CTy"instruction", 28066 qTy)), 28067 LU))))))), 28068 (Bop(And,bVar"b'6", 28069 Bop(And,Mop(Not,bVar"b'5"), 28070 bVar"b'4")), 28071 MB(Call 28072 ("ArchVersion", 28073 ATy(qTy,PTy(nTy,qTy)),LU), 28074 Close 28075 (nVar"v", 28076 MB(MB(MB(MU(Bop(Ge,nVar"v", 28077 LN 7),qTy), 28078 Close 28079 (bVar"v", 28080 MU(TP[LW(14,4), 28081 bVar"v"], 28082 qTy))), 28083 Close 28084 (Var("v", 28085 PTy(F4,bTy)), 28086 Call 28087 ("Take", 28088 ATy(qTy, 28089 PTy(bTy,qTy)), 28090 Var("v", 28091 PTy(F4,bTy))))), 28092 Close 28093 (bVar"b", 28094 ITE(bVar"b", 28095 MU(Call 28096 ("Hint", 28097 CTy"instruction", 28098 Call 28099 ("DataMemoryBarrier", 28100 CTy"Hint", 28101 Mop(Cast 28102 F4, 28103 LL[bVar"b'3", 28104 bVar"b'2", 28105 bVar"b'1", 28106 bVar"b'0"]))), 28107 qTy), 28108 Call 28109 ("Skip", 28110 ATy(qTy, 28111 PTy(CTy"instruction", 28112 qTy)), 28113 LU))))))), 28114 (Bop(And,bVar"b'6", 28115 Bop(And,bVar"b'5", 28116 Mop(Not,bVar"b'4"))), 28117 MB(Call 28118 ("ArchVersion", 28119 ATy(qTy,PTy(nTy,qTy)),LU), 28120 Close 28121 (nVar"v", 28122 MB(MB(MB(MU(Bop(Ge,nVar"v", 28123 LN 7),qTy), 28124 Close 28125 (bVar"v", 28126 MU(TP[LW(14,4), 28127 bVar"v"], 28128 qTy))), 28129 Close 28130 (Var("v", 28131 PTy(F4,bTy)), 28132 Call 28133 ("Take", 28134 ATy(qTy, 28135 PTy(bTy,qTy)), 28136 Var("v", 28137 PTy(F4,bTy))))), 28138 Close 28139 (bVar"b", 28140 ITE(bVar"b", 28141 MU(Call 28142 ("Hint", 28143 CTy"instruction", 28144 Call 28145 ("InstructionSynchronizationBarrier", 28146 CTy"Hint", 28147 Mop(Cast 28148 F4, 28149 LL[bVar"b'3", 28150 bVar"b'2", 28151 bVar"b'1", 28152 bVar"b'0"]))), 28153 qTy), 28154 Call 28155 ("Skip", 28156 ATy(qTy, 28157 PTy(CTy"instruction", 28158 qTy)), 28159 LU)))))))], 28160 MB(Call 28161 ("ArchVersion", 28162 ATy(qTy,PTy(nTy,qTy)),LU), 28163 Close 28164 (nVar"v", 28165 MB(MU(Bop(Ge,nVar"v",LN 5), 28166 qTy), 28167 Close 28168 (bVar"b", 28169 ITE(bVar"b", 28170 MU(Call 28171 ("Undefined", 28172 CTy"instruction", 28173 LW(0,32)),qTy), 28174 MB(Call 28175 ("DECODE_UNPREDICTABLE", 28176 ATy(qTy, 28177 PTy(uTy, 28178 qTy)), 28179 TP[Var("mc", 28180 CTy"MachineCode"), 28181 LS""]), 28182 Close 28183 (AVar uTy, 28184 MU(LX(CTy"instruction"), 28185 qTy))))))))), 28186 MB(Call 28187 ("ArchVersion", 28188 ATy(qTy,PTy(nTy,qTy)),LU), 28189 Close 28190 (nVar"v", 28191 MB(MU(Bop(Ge,nVar"v",LN 5),qTy), 28192 Close 28193 (bVar"b", 28194 ITE(bVar"b", 28195 MU(Call 28196 ("Undefined", 28197 CTy"instruction", 28198 LW(0,32)),qTy), 28199 MB(Call 28200 ("DECODE_UNPREDICTABLE", 28201 ATy(qTy, 28202 PTy(uTy,qTy)), 28203 TP[Var("mc", 28204 CTy"MachineCode"), 28205 LS""]), 28206 Close 28207 (AVar uTy, 28208 MU(LX(CTy"instruction"), 28209 qTy)))))))))), 28210 (Bop(And,Mop(Not,bVar"b'27"),bVar"b'20"), 28211 ITB([(Bop(And,Mop(Not,bVar"b'25"), 28212 Bop(And,Mop(Not,bVar"b'24"), 28213 bVar"b'22")), 28214 MB(Call 28215 ("ArchVersion", 28216 ATy(qTy,PTy(nTy,qTy)),LU), 28217 Close 28218 (nVar"v", 28219 MB(MB(MB(MU(Bop(Ge,nVar"v",LN 7), 28220 qTy), 28221 Close 28222 (bVar"v", 28223 MU(TP[LW(14,4), 28224 bVar"v"],qTy))), 28225 Close 28226 (Var("v",PTy(F4,bTy)), 28227 Call 28228 ("Take", 28229 ATy(qTy, 28230 PTy(bTy,qTy)), 28231 Var("v",PTy(F4,bTy))))), 28232 Close 28233 (bVar"b", 28234 ITE(bVar"b", 28235 MU(Call 28236 ("Hint", 28237 CTy"instruction", 28238 Call 28239 ("PreloadInstruction", 28240 CTy"Hint", 28241 TP[EQ(Mop(Cast 28242 F1, 28243 LL[bVar"b'23"]), 28244 LW(1,1)), 28245 Mop(Cast 28246 F4, 28247 LL[bVar"b'19", 28248 bVar"b'18", 28249 bVar"b'17", 28250 bVar"b'16"]), 28251 Call 28252 ("immediate_form1", 28253 CTy"offset1", 28254 Mop(Cast 28255 F32, 28256 Mop(Cast 28257 (FTy 12), 28258 LL[bVar"b'11", 28259 bVar"b'10", 28260 bVar"b'9", 28261 bVar"b'8", 28262 bVar"b'7", 28263 bVar"b'6", 28264 bVar"b'5", 28265 bVar"b'4", 28266 bVar"b'3", 28267 bVar"b'2", 28268 bVar"b'1", 28269 bVar"b'0"])))])), 28270 qTy), 28271 Call 28272 ("Skip", 28273 ATy(qTy, 28274 PTy(CTy"instruction", 28275 qTy)),LU))))))), 28276 (Bop(And,bVar"b'25", 28277 Bop(And,Mop(Not,bVar"b'24"), 28278 Bop(And,bVar"b'22", 28279 Mop(Not,bVar"b'4")))), 28280 Let(Var("Rm",F4), 28281 Mop(Cast F4, 28282 LL[bVar"b'3",bVar"b'2", 28283 bVar"b'1",bVar"b'0"]), 28284 MB(Call 28285 ("ArchVersion", 28286 ATy(qTy,PTy(nTy,qTy)),LU), 28287 Close 28288 (nVar"v", 28289 MB(MB(MB(MU(Bop(Ge,nVar"v", 28290 LN 7),qTy), 28291 Close 28292 (bVar"v", 28293 MU(TP[LW(14,4), 28294 bVar"v"], 28295 qTy))), 28296 Close 28297 (Var("v", 28298 PTy(F4,bTy)), 28299 Call 28300 ("Take", 28301 ATy(qTy, 28302 PTy(bTy,qTy)), 28303 Var("v", 28304 PTy(F4,bTy))))), 28305 Close 28306 (bVar"b", 28307 ITE(bVar"b", 28308 MB(ITE(EQ(Var("Rm", 28309 F4), 28310 LW(15,4)), 28311 Call 28312 ("DECODE_UNPREDICTABLE", 28313 ATy(qTy, 28314 PTy(uTy, 28315 qTy)), 28316 TP[Var("mc", 28317 CTy"MachineCode"), 28318 LS 28319 "PreloadInstruction (register)"]), 28320 MU(LU,qTy)), 28321 Close 28322 (AVar uTy, 28323 MU(Let(TP[Var("shift_t", 28324 CTy"SRType"), 28325 nVar"shift_n"], 28326 Call 28327 ("DecodeImmShift", 28328 PTy(CTy"SRType", 28329 nTy), 28330 TP[Mop(Cast 28331 (FTy 2), 28332 LL[bVar"b'6", 28333 bVar"b'5"]), 28334 Mop(Cast 28335 (FTy 5), 28336 LL[bVar"b'11", 28337 bVar"b'10", 28338 bVar"b'9", 28339 bVar"b'8", 28340 bVar"b'7"])]), 28341 Call 28342 ("Hint", 28343 CTy"instruction", 28344 Call 28345 ("PreloadInstruction", 28346 CTy"Hint", 28347 TP[EQ(Mop(Cast 28348 F1, 28349 LL[bVar"b'23"]), 28350 LW(1, 28351 1)), 28352 Mop(Cast 28353 F4, 28354 LL[bVar"b'19", 28355 bVar"b'18", 28356 bVar"b'17", 28357 bVar"b'16"]), 28358 Call 28359 ("register_form1", 28360 CTy"offset1", 28361 TP[Var("Rm", 28362 F4), 28363 Var("shift_t", 28364 CTy"SRType"), 28365 nVar"shift_n"])]))), 28366 qTy))), 28367 Call 28368 ("Skip", 28369 ATy(qTy, 28370 PTy(CTy"instruction", 28371 qTy)), 28372 LU)))))))), 28373 (Bop(And,Mop(Not,bVar"b'25"), 28374 Bop(And,bVar"b'24", 28375 Bop(And,bVar"b'19", 28376 Bop(And,bVar"b'18", 28377 Bop(And,bVar"b'17", 28378 bVar"b'16"))))), 28379 MB(Call 28380 ("HaveDSPSupport", 28381 ATy(qTy,PTy(bTy,qTy)),LU), 28382 Close 28383 (bVar"v", 28384 MB(MB(MU(TP[LW(14,4),bVar"v"], 28385 qTy), 28386 Close 28387 (Var("v",PTy(F4,bTy)), 28388 Call 28389 ("Take", 28390 ATy(qTy, 28391 PTy(bTy,qTy)), 28392 Var("v",PTy(F4,bTy))))), 28393 Close 28394 (bVar"b", 28395 ITE(bVar"b", 28396 MU(Call 28397 ("Hint", 28398 CTy"instruction", 28399 Call 28400 ("PreloadDataLiteral", 28401 CTy"Hint", 28402 TP[EQ(Mop(Cast 28403 F1, 28404 LL[bVar"b'23"]), 28405 LW(1,1)), 28406 Mop(Cast 28407 F32, 28408 Mop(Cast 28409 (FTy 12), 28410 LL[bVar"b'11", 28411 bVar"b'10", 28412 bVar"b'9", 28413 bVar"b'8", 28414 bVar"b'7", 28415 bVar"b'6", 28416 bVar"b'5", 28417 bVar"b'4", 28418 bVar"b'3", 28419 bVar"b'2", 28420 bVar"b'1", 28421 bVar"b'0"]))])), 28422 qTy), 28423 Call 28424 ("Skip", 28425 ATy(qTy, 28426 PTy(CTy"instruction", 28427 qTy)),LU))))))), 28428 (Bop(And,Mop(Not,bVar"b'25"), 28429 bVar"b'24"), 28430 Let(Var("R",F1), 28431 Mop(Cast F1,LL[bVar"b'22"]), 28432 MB(Call 28433 ("ArchVersion", 28434 ATy(qTy,PTy(nTy,qTy)),LU), 28435 Close 28436 (nVar"v", 28437 MB(MB(MB(MB(MB(MB(MU(Bop(Ge, 28438 nVar"v", 28439 LN 28440 7), 28441 qTy), 28442 Close 28443 (bVar"v", 28444 MU(Bop(And, 28445 EQ(Var("R", 28446 F1), 28447 LW(1, 28448 1)), 28449 bVar"v"), 28450 qTy))), 28451 Close 28452 (bVar"b", 28453 ITE(bVar"b", 28454 MB(MR(Close 28455 (qVar"s", 28456 Dest 28457 ("Extensions", 28458 STy(CTy"Extensions"), 28459 qVar"s"))), 28460 Close 28461 (Var("v", 28462 STy(CTy"Extensions")), 28463 MU(Bop(In, 28464 LC("Extension_Multiprocessing", 28465 CTy"Extensions"), 28466 Var("v", 28467 STy(CTy"Extensions"))), 28468 qTy))), 28469 MU(LF, 28470 qTy)))), 28471 Close 28472 (bVar"b", 28473 ITE(bVar"b", 28474 MU(LT, 28475 qTy), 28476 MB(Call 28477 ("HaveDSPSupport", 28478 ATy(qTy, 28479 PTy(bTy, 28480 qTy)), 28481 LU), 28482 Close 28483 (bVar"v", 28484 MU(Bop(And, 28485 EQ(Var("R", 28486 F1), 28487 LW(0, 28488 1)), 28489 bVar"v"), 28490 qTy)))))), 28491 Close 28492 (bVar"v", 28493 MU(TP[LW(14,4), 28494 bVar"v"], 28495 qTy))), 28496 Close 28497 (Var("v", 28498 PTy(F4,bTy)), 28499 Call 28500 ("Take", 28501 ATy(qTy, 28502 PTy(bTy,qTy)), 28503 Var("v", 28504 PTy(F4,bTy))))), 28505 Close 28506 (bVar"b", 28507 ITE(bVar"b", 28508 MU(Call 28509 ("Hint", 28510 CTy"instruction", 28511 Call 28512 ("PreloadData", 28513 CTy"Hint", 28514 TP[EQ(Mop(Cast 28515 F1, 28516 LL[bVar"b'23"]), 28517 LW(1, 28518 1)), 28519 EQ(Var("R", 28520 F1), 28521 LW(0, 28522 1)), 28523 Mop(Cast 28524 F4, 28525 LL[bVar"b'19", 28526 bVar"b'18", 28527 bVar"b'17", 28528 bVar"b'16"]), 28529 Call 28530 ("immediate_form1", 28531 CTy"offset1", 28532 Mop(Cast 28533 F32, 28534 Mop(Cast 28535 (FTy 12), 28536 LL[bVar"b'11", 28537 bVar"b'10", 28538 bVar"b'9", 28539 bVar"b'8", 28540 bVar"b'7", 28541 bVar"b'6", 28542 bVar"b'5", 28543 bVar"b'4", 28544 bVar"b'3", 28545 bVar"b'2", 28546 bVar"b'1", 28547 bVar"b'0"])))])), 28548 qTy), 28549 Call 28550 ("Skip", 28551 ATy(qTy, 28552 PTy(CTy"instruction", 28553 qTy)), 28554 LU)))))))), 28555 (Bop(And,bVar"b'25", 28556 Bop(And,bVar"b'24", 28557 Mop(Not,bVar"b'4"))), 28558 Let(Var("Rm",F4), 28559 Mop(Cast F4, 28560 LL[bVar"b'3",bVar"b'2", 28561 bVar"b'1",bVar"b'0"]), 28562 Let(Var("Rn",F4), 28563 Mop(Cast F4, 28564 LL[bVar"b'19",bVar"b'18", 28565 bVar"b'17",bVar"b'16"]), 28566 Let(Var("R",F1), 28567 Mop(Cast F1, 28568 LL[bVar"b'22"]), 28569 MB(Call 28570 ("ArchVersion", 28571 ATy(qTy, 28572 PTy(nTy,qTy)), 28573 LU), 28574 Close 28575 (nVar"v", 28576 MB(MB(MB(MB(MB(MB(MU(Bop(Ge, 28577 nVar"v", 28578 LN 28579 7), 28580 qTy), 28581 Close 28582 (bVar"v", 28583 MU(Bop(And, 28584 EQ(Var("R", 28585 F1), 28586 LW(1, 28587 1)), 28588 bVar"v"), 28589 qTy))), 28590 Close 28591 (bVar"b", 28592 ITE(bVar"b", 28593 MB(MR(Close 28594 (qVar"s", 28595 Dest 28596 ("Extensions", 28597 STy(CTy"Extensions"), 28598 qVar"s"))), 28599 Close 28600 (Var("v", 28601 STy(CTy"Extensions")), 28602 MU(Bop(In, 28603 LC("Extension_Multiprocessing", 28604 CTy"Extensions"), 28605 Var("v", 28606 STy(CTy"Extensions"))), 28607 qTy))), 28608 MU(LF, 28609 qTy)))), 28610 Close 28611 (bVar"b", 28612 ITE(bVar"b", 28613 MU(LT, 28614 qTy), 28615 MB(Call 28616 ("HaveDSPSupport", 28617 ATy(qTy, 28618 PTy(bTy, 28619 qTy)), 28620 LU), 28621 Close 28622 (bVar"v", 28623 MU(Bop(And, 28624 EQ(Var("R", 28625 F1), 28626 LW(0, 28627 1)), 28628 bVar"v"), 28629 qTy)))))), 28630 Close 28631 (bVar"v", 28632 MU(TP[LW(14, 28633 4), 28634 bVar"v"], 28635 qTy))), 28636 Close 28637 (Var("v", 28638 PTy(F4, 28639 bTy)), 28640 Call 28641 ("Take", 28642 ATy(qTy, 28643 PTy(bTy, 28644 qTy)), 28645 Var("v", 28646 PTy(F4, 28647 bTy))))), 28648 Close 28649 (bVar"b", 28650 ITE(bVar"b", 28651 Let(bVar"is_pldw", 28652 EQ(Var("R", 28653 F1), 28654 LW(0, 28655 1)), 28656 MB(ITE(Bop(Or, 28657 EQ(Var("Rm", 28658 F4), 28659 LW(15, 28660 4)), 28661 Bop(And, 28662 EQ(Var("Rn", 28663 F4), 28664 LW(15, 28665 4)), 28666 bVar"is_pldw")), 28667 Call 28668 ("DECODE_UNPREDICTABLE", 28669 ATy(qTy, 28670 PTy(uTy, 28671 qTy)), 28672 TP[Var("mc", 28673 CTy"MachineCode"), 28674 LS 28675 "PreloadData (register)"]), 28676 MU(LU, 28677 qTy)), 28678 Close 28679 (AVar 28680 uTy, 28681 MU(Let(TP[Var("shift_t", 28682 CTy"SRType"), 28683 nVar"shift_n"], 28684 Call 28685 ("DecodeImmShift", 28686 PTy(CTy"SRType", 28687 nTy), 28688 TP[Mop(Cast 28689 (FTy 2), 28690 LL[bVar"b'6", 28691 bVar"b'5"]), 28692 Mop(Cast 28693 (FTy 5), 28694 LL[bVar"b'11", 28695 bVar"b'10", 28696 bVar"b'9", 28697 bVar"b'8", 28698 bVar"b'7"])]), 28699 Call 28700 ("Hint", 28701 CTy"instruction", 28702 Call 28703 ("PreloadData", 28704 CTy"Hint", 28705 TP[EQ(Mop(Cast 28706 F1, 28707 LL[bVar"b'23"]), 28708 LW(1, 28709 1)), 28710 bVar"is_pldw", 28711 Var("Rn", 28712 F4), 28713 Call 28714 ("register_form1", 28715 CTy"offset1", 28716 TP[Var("Rm", 28717 F4), 28718 Var("shift_t", 28719 CTy"SRType"), 28720 nVar"shift_n"])]))), 28721 qTy)))), 28722 Call 28723 ("Skip", 28724 ATy(qTy, 28725 PTy(CTy"instruction", 28726 qTy)), 28727 LU))))))))))], 28728 MB(Call 28729 ("ArchVersion", 28730 ATy(qTy,PTy(nTy,qTy)),LU), 28731 Close 28732 (nVar"v", 28733 MB(MU(Bop(Ge,nVar"v",LN 5),qTy), 28734 Close 28735 (bVar"b", 28736 ITE(bVar"b", 28737 MU(Call 28738 ("Undefined", 28739 CTy"instruction", 28740 LW(0,32)),qTy), 28741 MB(Call 28742 ("DECODE_UNPREDICTABLE", 28743 ATy(qTy, 28744 PTy(uTy,qTy)), 28745 TP[Var("mc", 28746 CTy"MachineCode"), 28747 LS""]), 28748 Close 28749 (AVar uTy, 28750 MU(LX(CTy"instruction"), 28751 qTy))))))))))], 28752 MB(Call 28753 ("ArchVersion",ATy(qTy,PTy(nTy,qTy)),LU), 28754 Close 28755 (nVar"v", 28756 MB(MU(Bop(Ge,nVar"v",LN 5),qTy), 28757 Close 28758 (bVar"b", 28759 ITE(bVar"b", 28760 MU(Call 28761 ("Undefined", 28762 CTy"instruction", 28763 LW(0,32)),qTy), 28764 MB(Call 28765 ("DECODE_UNPREDICTABLE", 28766 ATy(qTy,PTy(uTy,qTy)), 28767 TP[Var("mc", 28768 CTy"MachineCode"), 28769 LS""]), 28770 Close 28771 (AVar uTy, 28772 MU(LX(CTy"instruction"), 28773 qTy)))))))))), 28774 (Bop(And,Mop(Not,bVar"b'27"), 28775 Bop(And,Mop(Not,bVar"b'25"), 28776 Bop(And,bVar"b'24", 28777 Bop(And,Mop(Not,bVar"b'23"), 28778 Bop(And,Mop(Not,bVar"b'22"), 28779 Bop(And,Mop(Not,bVar"b'21"), 28780 Bop(And, 28781 Mop(Not,bVar"b'20"), 28782 Bop(And,bVar"b'16", 28783 Bop(And, 28784 Mop(Not, 28785 bVar"b'7"), 28786 Bop(And, 28787 Mop(Not, 28788 bVar"b'6"), 28789 Bop(And, 28790 Mop(Not, 28791 bVar"b'5"), 28792 Mop(Not, 28793 bVar"b'4")))))))))))), 28794 MB(Call("ArchVersion",ATy(qTy,PTy(nTy,qTy)),LU), 28795 Close 28796 (nVar"v", 28797 MB(MB(MB(MU(Bop(Ge,nVar"v",LN 6),qTy), 28798 Close 28799 (bVar"v", 28800 MU(TP[LW(14,4),bVar"v"],qTy))), 28801 Close 28802 (Var("v",PTy(F4,bTy)), 28803 Call 28804 ("Take",ATy(qTy,PTy(bTy,qTy)), 28805 Var("v",PTy(F4,bTy))))), 28806 Close 28807 (bVar"b", 28808 ITE(bVar"b", 28809 MU(Call 28810 ("System",CTy"instruction", 28811 Call 28812 ("Setend",CTy"System", 28813 EQ(Mop(Cast F1, 28814 LL[bVar"b'9"]), 28815 LW(1,1)))),qTy), 28816 Call 28817 ("Skip", 28818 ATy(qTy, 28819 PTy(CTy"instruction",qTy)), 28820 LU))))))), 28821 (Bop(And,Mop(Not,bVar"b'27"), 28822 Bop(And,Mop(Not,bVar"b'25"), 28823 Bop(And,bVar"b'24", 28824 Bop(And,Mop(Not,bVar"b'23"), 28825 Bop(And,Mop(Not,bVar"b'22"), 28826 Bop(And,Mop(Not,bVar"b'21"), 28827 Bop(And, 28828 Mop(Not,bVar"b'20"), 28829 Bop(And, 28830 Mop(Not, 28831 bVar"b'16"), 28832 Mop(Not,bVar"b'5"))))))))), 28833 Let(Var("mode",FTy 5), 28834 Mop(Cast(FTy 5), 28835 LL[bVar"b'4",bVar"b'3",bVar"b'2", 28836 bVar"b'1",bVar"b'0"]), 28837 Let(Var("F",F1),Mop(Cast F1,LL[bVar"b'6"]), 28838 Let(Var("I",F1), 28839 Mop(Cast F1,LL[bVar"b'7"]), 28840 Let(Var("A",F1), 28841 Mop(Cast F1,LL[bVar"b'8"]), 28842 Let(Var("M",F1), 28843 Mop(Cast F1,LL[bVar"b'17"]), 28844 Let(Var("imod",FTy 2), 28845 Mop(Cast(FTy 2), 28846 LL[bVar"b'19", 28847 bVar"b'18"]), 28848 MB(Call 28849 ("ArchVersion", 28850 ATy(qTy, 28851 PTy(nTy,qTy)), 28852 LU), 28853 Close 28854 (nVar"v", 28855 MB(MB(MB(MU(Bop(Ge, 28856 nVar"v", 28857 LN 28858 6), 28859 qTy), 28860 Close 28861 (bVar"v", 28862 MU(TP[LW(14, 28863 4), 28864 bVar"v"], 28865 qTy))), 28866 Close 28867 (Var("v", 28868 PTy(F4, 28869 bTy)), 28870 Call 28871 ("Take", 28872 ATy(qTy, 28873 PTy(bTy, 28874 qTy)), 28875 Var("v", 28876 PTy(F4, 28877 bTy))))), 28878 Close 28879 (bVar"b", 28880 ITE(bVar"b", 28881 MB(ITE(Bop(Or, 28882 Bop(Or, 28883 Bop(Or, 28884 Bop(And, 28885 Mop(Not, 28886 EQ(Var("mode", 28887 FTy 5), 28888 LW(0, 28889 5))), 28890 EQ(Var("M", 28891 F1), 28892 LW(0, 28893 1))), 28894 EQ(Bop(Bit, 28895 Var("imod", 28896 FTy 2), 28897 LN 28898 1), 28899 EQ(CC[Var("A", 28900 F1), 28901 Var("I", 28902 F1), 28903 Var("F", 28904 F1)], 28905 LW(0, 28906 3)))), 28907 Bop(And, 28908 EQ(Var("imod", 28909 FTy 2), 28910 LW(0, 28911 2)), 28912 EQ(Var("M", 28913 F1), 28914 LW(0, 28915 1)))), 28916 EQ(Var("imod", 28917 FTy 2), 28918 LW(1, 28919 2))), 28920 Call 28921 ("DECODE_UNPREDICTABLE", 28922 ATy(qTy, 28923 PTy(uTy, 28924 qTy)), 28925 TP[Var("mc", 28926 CTy"MachineCode"), 28927 LS 28928 "ChangeProcessorState"]), 28929 MU(LU, 28930 qTy)), 28931 Close 28932 (AVar 28933 uTy, 28934 MU(Call 28935 ("System", 28936 CTy"instruction", 28937 Call 28938 ("ChangeProcessorState", 28939 CTy"System", 28940 TP[EQ(Var("imod", 28941 FTy 2), 28942 LW(2, 28943 2)), 28944 EQ(Var("imod", 28945 FTy 2), 28946 LW(3, 28947 2)), 28948 EQ(Var("A", 28949 F1), 28950 LW(1, 28951 1)), 28952 EQ(Var("I", 28953 F1), 28954 LW(1, 28955 1)), 28956 EQ(Var("F", 28957 F1), 28958 LW(1, 28959 1)), 28960 EQ(Var("M", 28961 F1), 28962 LW(1, 28963 1)), 28964 Var("mode", 28965 FTy 5)])), 28966 qTy))), 28967 Call 28968 ("Skip", 28969 ATy(qTy, 28970 PTy(CTy"instruction", 28971 qTy)), 28972 LU))))))))))))), 28973 (Bop(And,bVar"b'27", 28974 Bop(And,Mop(Not,bVar"b'25"), 28975 Bop(And,bVar"b'22",Mop(Not,bVar"b'20")))), 28976 Let(Var("U",F1),Mop(Cast F1,LL[bVar"b'23"]), 28977 MB(Call 28978 ("ArchVersion",ATy(qTy,PTy(nTy,qTy)),LU), 28979 Close 28980 (nVar"v", 28981 MB(MB(MB(MU(Bop(Ge,nVar"v",LN 6),qTy), 28982 Close 28983 (bVar"v", 28984 MU(TP[LW(14,4),bVar"v"],qTy))), 28985 Close 28986 (Var("v",PTy(F4,bTy)), 28987 Call 28988 ("Take", 28989 ATy(qTy,PTy(bTy,qTy)), 28990 Var("v",PTy(F4,bTy))))), 28991 Close 28992 (bVar"b", 28993 ITE(bVar"b", 28994 MU(Call 28995 ("System", 28996 CTy"instruction", 28997 Call 28998 ("StoreReturnState", 28999 CTy"System", 29000 TP[EQ(Var("U",F1), 29001 LW(1,1)), 29002 EQ(Mop(Cast F1, 29003 LL[bVar"b'24"]), 29004 Var("U",F1)), 29005 EQ(Mop(Cast F1, 29006 LL[bVar"b'21"]), 29007 LW(1,1)), 29008 Mop(Cast(FTy 5), 29009 LL[bVar"b'4", 29010 bVar"b'3", 29011 bVar"b'2", 29012 bVar"b'1", 29013 bVar"b'0"])])), 29014 qTy), 29015 Call 29016 ("Skip", 29017 ATy(qTy, 29018 PTy(CTy"instruction", 29019 qTy)),LU)))))))), 29020 (Bop(And,bVar"b'27", 29021 Bop(And,Mop(Not,bVar"b'25"), 29022 Bop(And,Mop(Not,bVar"b'22"),bVar"b'20"))), 29023 Let(Var("Rn",F4), 29024 Mop(Cast F4, 29025 LL[bVar"b'19",bVar"b'18",bVar"b'17", 29026 bVar"b'16"]), 29027 Let(Var("U",F1),Mop(Cast F1,LL[bVar"b'23"]), 29028 MB(Call 29029 ("ArchVersion", 29030 ATy(qTy,PTy(nTy,qTy)),LU), 29031 Close 29032 (nVar"v", 29033 MB(MB(MB(MU(Bop(Ge,nVar"v",LN 6), 29034 qTy), 29035 Close 29036 (bVar"v", 29037 MU(TP[LW(14,4),bVar"v"], 29038 qTy))), 29039 Close 29040 (Var("v",PTy(F4,bTy)), 29041 Call 29042 ("Take", 29043 ATy(qTy,PTy(bTy,qTy)), 29044 Var("v",PTy(F4,bTy))))), 29045 Close 29046 (bVar"b", 29047 ITE(bVar"b", 29048 MB(ITE(EQ(Var("Rn",F4), 29049 LW(15,4)), 29050 Call 29051 ("DECODE_UNPREDICTABLE", 29052 ATy(qTy, 29053 PTy(uTy,qTy)), 29054 TP[Var("mc", 29055 CTy"MachineCode"), 29056 LS 29057 "ReturnFromException"]), 29058 MU(LU,qTy)), 29059 Close 29060 (AVar uTy, 29061 MU(Call 29062 ("System", 29063 CTy"instruction", 29064 Call 29065 ("ReturnFromException", 29066 CTy"System", 29067 TP[EQ(Var("U", 29068 F1), 29069 LW(1, 29070 1)), 29071 EQ(Mop(Cast 29072 F1, 29073 LL[bVar"b'24"]), 29074 Var("U", 29075 F1)), 29076 EQ(Mop(Cast 29077 F1, 29078 LL[bVar"b'21"]), 29079 LW(1, 29080 1)), 29081 Var("Rn", 29082 F4)])), 29083 qTy))), 29084 Call 29085 ("Skip", 29086 ATy(qTy, 29087 PTy(CTy"instruction", 29088 qTy)),LU))))))))), 29089 (Bop(And,bVar"b'27",bVar"b'25"), 29090 MB(Call("ArchVersion",ATy(qTy,PTy(nTy,qTy)),LU), 29091 Close 29092 (nVar"v", 29093 MB(MB(MB(MU(Bop(Ge,nVar"v",LN 5),qTy), 29094 Close 29095 (bVar"v", 29096 MU(TP[LW(14,4),bVar"v"],qTy))), 29097 Close 29098 (Var("v",PTy(F4,bTy)), 29099 Call 29100 ("Take",ATy(qTy,PTy(bTy,qTy)), 29101 Var("v",PTy(F4,bTy))))), 29102 Close 29103 (bVar"b", 29104 ITE(bVar"b", 29105 MU(Call 29106 ("Branch",CTy"instruction", 29107 Call 29108 ("BranchLinkExchangeImmediate", 29109 CTy"Branch", 29110 TP[LC("InstrSet_Thumb", 29111 CTy"InstrSet"), 29112 Mop(SE F32, 29113 CC[Mop(Cast 29114 (FTy 24), 29115 LL[bVar"b'23", 29116 bVar"b'22", 29117 bVar"b'21", 29118 bVar"b'20", 29119 bVar"b'19", 29120 bVar"b'18", 29121 bVar"b'17", 29122 bVar"b'16", 29123 bVar"b'15", 29124 bVar"b'14", 29125 bVar"b'13", 29126 bVar"b'12", 29127 bVar"b'11", 29128 bVar"b'10", 29129 bVar"b'9", 29130 bVar"b'8", 29131 bVar"b'7", 29132 bVar"b'6", 29133 bVar"b'5", 29134 bVar"b'4", 29135 bVar"b'3", 29136 bVar"b'2", 29137 bVar"b'1", 29138 bVar"b'0"]), 29139 Mop(Cast F1, 29140 LL[bVar"b'24"]), 29141 LW(0,1)])])), 29142 qTy), 29143 Call 29144 ("Skip", 29145 ATy(qTy, 29146 PTy(CTy"instruction",qTy)), 29147 LU)))))))], 29148 MB(Call("ArchVersion",ATy(qTy,PTy(nTy,qTy)),LU), 29149 Close 29150 (nVar"v", 29151 MB(MU(Bop(Ge,nVar"v",LN 5),qTy), 29152 Close 29153 (bVar"b", 29154 ITE(bVar"b", 29155 MU(Call 29156 ("Undefined",CTy"instruction", 29157 LW(0,32)),qTy), 29158 MB(Call 29159 ("DECODE_UNPREDICTABLE", 29160 ATy(qTy,PTy(uTy,qTy)), 29161 TP[Var("mc",CTy"MachineCode"), 29162 LS""]), 29163 Close 29164 (AVar uTy, 29165 MU(LX(CTy"instruction"),qTy)))))))))), 29166 Let(TP[bVar"b'27",bVar"b'26",bVar"b'25",bVar"b'24", 29167 bVar"b'23",bVar"b'22",bVar"b'21",bVar"b'20", 29168 bVar"b'19",bVar"b'18",bVar"b'17",bVar"b'16", 29169 bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", 29170 bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7", 29171 bVar"b'6",bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2", 29172 bVar"b'1",bVar"b'0"], 29173 BL(28,EX(Var("w",F32),LN 27,LN 0,FTy 28)), 29174 ITB([(bVar"b'25", 29175 ITB([(bVar"b'26", 29176 ITB([(Bop(And,Mop(Not,bVar"b'27"), 29177 Bop(And,bVar"b'24", 29178 Bop(And,bVar"b'23", 29179 Bop(And,bVar"b'22", 29180 Bop(And,bVar"b'21", 29181 Bop(And, 29182 bVar"b'20", 29183 Bop(And, 29184 bVar"b'7", 29185 Bop(And, 29186 bVar"b'6", 29187 Bop(And, 29188 bVar"b'5", 29189 bVar"b'4"))))))))), 29190 MB(MW(Close 29191 (qVar"s", 29192 Rupd 29193 ("CurrentCondition", 29194 TP[qVar"s",Var("cond",F4)]))), 29195 Close 29196 (AVar uTy, 29197 MB(Call 29198 ("ConditionPassed", 29199 ATy(qTy,PTy(bTy,qTy)),LU), 29200 Close 29201 (bVar"b", 29202 MU(ITE(bVar"b", 29203 Call 29204 ("Undefined", 29205 CTy"instruction", 29206 Mop(Cast F32, 29207 CC[Mop(Cast 29208 (FTy 12), 29209 LL[bVar"b'19", 29210 bVar"b'18", 29211 bVar"b'17", 29212 bVar"b'16", 29213 bVar"b'15", 29214 bVar"b'14", 29215 bVar"b'13", 29216 bVar"b'12", 29217 bVar"b'11", 29218 bVar"b'10", 29219 bVar"b'9", 29220 bVar"b'8"]), 29221 Mop(Cast 29222 F4, 29223 LL[bVar"b'3", 29224 bVar"b'2", 29225 bVar"b'1", 29226 bVar"b'0"])])), 29227 Const 29228 ("NoOperation", 29229 CTy"instruction")), 29230 qTy)))))), 29231 (Bop(And,Mop(Not,bVar"b'27"), 29232 Bop(And,Mop(Not,bVar"b'24"), 29233 Bop(And,bVar"b'21", 29234 Bop(And, 29235 Mop(Not,bVar"b'20"), 29236 Mop(Not,bVar"b'4"))))), 29237 Let(Var("Rm",F4), 29238 Mop(Cast F4, 29239 LL[bVar"b'3",bVar"b'2", 29240 bVar"b'1",bVar"b'0"]), 29241 Let(Var("Rt",F4), 29242 Mop(Cast F4, 29243 LL[bVar"b'15",bVar"b'14", 29244 bVar"b'13",bVar"b'12"]), 29245 Let(Var("Rn",F4), 29246 Mop(Cast F4, 29247 LL[bVar"b'19", 29248 bVar"b'18", 29249 bVar"b'17", 29250 bVar"b'16"]), 29251 Let(Var("B",F1), 29252 Mop(Cast F1, 29253 LL[bVar"b'22"]), 29254 MB(Call 29255 ("Take", 29256 ATy(qTy, 29257 PTy(bTy,qTy)), 29258 TP[Var("cond", 29259 F4),LT]), 29260 Close 29261 (bVar"b", 29262 ITE(bVar"b", 29263 MB(Call 29264 ("ArchVersion", 29265 ATy(qTy, 29266 PTy(nTy, 29267 qTy)), 29268 LU), 29269 Close 29270 (nVar"v", 29271 MB(MB(MB(MB(MU(Bop(Lt, 29272 nVar"v", 29273 LN 29274 6), 29275 qTy), 29276 Close 29277 (bVar"b", 29278 MU(Bop(And, 29279 bVar"b", 29280 EQ(Var("Rm", 29281 F4), 29282 Var("Rn", 29283 F4))), 29284 qTy))), 29285 Close 29286 (bVar"v", 29287 MU(Bop(Or, 29288 Bop(Or, 29289 Bop(Or, 29290 Bop(Or, 29291 Bop(And, 29292 EQ(Var("B", 29293 F1), 29294 LW(1, 29295 1)), 29296 EQ(Var("Rt", 29297 F4), 29298 LW(15, 29299 4))), 29300 EQ(Var("Rn", 29301 F4), 29302 LW(15, 29303 4))), 29304 EQ(Var("Rn", 29305 F4), 29306 Var("Rt", 29307 F4))), 29308 EQ(Var("Rm", 29309 F4), 29310 LW(15, 29311 4))), 29312 bVar"v"), 29313 qTy))), 29314 Close 29315 (bVar"b", 29316 ITE(bVar"b", 29317 Call 29318 ("DECODE_UNPREDICTABLE", 29319 ATy(qTy, 29320 PTy(uTy, 29321 qTy)), 29322 TP[Var("mc", 29323 CTy"MachineCode"), 29324 LS 29325 "StoreUnprivileged (regiser)"]), 29326 MU(LU, 29327 qTy)))), 29328 Close 29329 (AVar 29330 uTy, 29331 MU(Let(bVar"add", 29332 EQ(Mop(Cast 29333 F1, 29334 LL[bVar"b'23"]), 29335 LW(1, 29336 1)), 29337 Let(bVar"postindex", 29338 LT, 29339 Let(TP[Var("shift_t", 29340 CTy"SRType"), 29341 nVar"shift_n"], 29342 Call 29343 ("DecodeImmShift", 29344 PTy(CTy"SRType", 29345 nTy), 29346 TP[Mop(Cast 29347 (FTy 2), 29348 LL[bVar"b'6", 29349 bVar"b'5"]), 29350 Mop(Cast 29351 (FTy 5), 29352 LL[bVar"b'11", 29353 bVar"b'10", 29354 bVar"b'9", 29355 bVar"b'8", 29356 bVar"b'7"])]), 29357 Let(Var("m", 29358 CTy"offset1"), 29359 Call 29360 ("register_form1", 29361 CTy"offset1", 29362 TP[Var("Rm", 29363 F4), 29364 Var("shift_t", 29365 CTy"SRType"), 29366 nVar"shift_n"]), 29367 ITE(EQ(Var("B", 29368 F1), 29369 LW(1, 29370 1)), 29371 Call 29372 ("Store", 29373 CTy"instruction", 29374 Call 29375 ("StoreByteUnprivileged", 29376 CTy"Store", 29377 TP[bVar"add", 29378 bVar"postindex", 29379 Var("Rt", 29380 F4), 29381 Var("Rn", 29382 F4), 29383 Var("m", 29384 CTy"offset1")])), 29385 Call 29386 ("Store", 29387 CTy"instruction", 29388 Call 29389 ("StoreUnprivileged", 29390 CTy"Store", 29391 TP[bVar"add", 29392 bVar"postindex", 29393 Var("Rt", 29394 F4), 29395 Var("Rn", 29396 F4), 29397 Var("m", 29398 CTy"offset1")]))))))), 29399 qTy))))), 29400 Call 29401 ("Skip", 29402 ATy(qTy, 29403 PTy(CTy"instruction", 29404 qTy)), 29405 LU))))))))), 29406 (Bop(And,Mop(Not,bVar"b'27"), 29407 Bop(And,Mop(Not,bVar"b'20"), 29408 Mop(Not,bVar"b'4"))), 29409 Let(Var("Rm",F4), 29410 Mop(Cast F4, 29411 LL[bVar"b'3",bVar"b'2", 29412 bVar"b'1",bVar"b'0"]), 29413 Let(Var("Rt",F4), 29414 Mop(Cast F4, 29415 LL[bVar"b'15",bVar"b'14", 29416 bVar"b'13",bVar"b'12"]), 29417 Let(Var("Rn",F4), 29418 Mop(Cast F4, 29419 LL[bVar"b'19", 29420 bVar"b'18", 29421 bVar"b'17", 29422 bVar"b'16"]), 29423 Let(Var("B",F1), 29424 Mop(Cast F1, 29425 LL[bVar"b'22"]), 29426 Let(Var("P",F1), 29427 Mop(Cast F1, 29428 LL[bVar"b'24"]), 29429 MB(Call 29430 ("Take", 29431 ATy(qTy, 29432 PTy(bTy, 29433 qTy)), 29434 TP[Var("cond", 29435 F4), 29436 LT]), 29437 Close 29438 (bVar"b", 29439 ITE(bVar"b", 29440 Let(bVar"wback", 29441 Bop(Or, 29442 EQ(Var("P", 29443 F1), 29444 LW(0, 29445 1)), 29446 EQ(Mop(Cast 29447 F1, 29448 LL[bVar"b'21"]), 29449 LW(1, 29450 1))), 29451 MB(Call 29452 ("ArchVersion", 29453 ATy(qTy, 29454 PTy(nTy, 29455 qTy)), 29456 LU), 29457 Close 29458 (nVar"v", 29459 MB(MB(MB(MB(MB(MU(Bop(Lt, 29460 nVar"v", 29461 LN 29462 6), 29463 qTy), 29464 Close 29465 (bVar"b", 29466 MU(Bop(And, 29467 bVar"b", 29468 bVar"wback"), 29469 qTy))), 29470 Close 29471 (bVar"b", 29472 MU(Bop(And, 29473 bVar"b", 29474 EQ(Var("Rm", 29475 F4), 29476 Var("Rn", 29477 F4))), 29478 qTy))), 29479 Close 29480 (bVar"v", 29481 MU(Bop(Or, 29482 Bop(Or, 29483 Bop(Or, 29484 Bop(And, 29485 EQ(Var("B", 29486 F1), 29487 LW(1, 29488 1)), 29489 EQ(Var("Rt", 29490 F4), 29491 LW(15, 29492 4))), 29493 EQ(Var("Rm", 29494 F4), 29495 LW(15, 29496 4))), 29497 Bop(And, 29498 bVar"wback", 29499 Bop(Or, 29500 EQ(Var("Rn", 29501 F4), 29502 LW(15, 29503 4)), 29504 EQ(Var("Rn", 29505 F4), 29506 Var("Rt", 29507 F4))))), 29508 bVar"v"), 29509 qTy))), 29510 Close 29511 (bVar"b", 29512 ITE(bVar"b", 29513 Call 29514 ("DECODE_UNPREDICTABLE", 29515 ATy(qTy, 29516 PTy(uTy, 29517 qTy)), 29518 TP[Var("mc", 29519 CTy"MachineCode"), 29520 LS 29521 "Store (regiser)"]), 29522 MU(LU, 29523 qTy)))), 29524 Close 29525 (AVar 29526 uTy, 29527 MU(Let(bVar"add", 29528 EQ(Mop(Cast 29529 F1, 29530 LL[bVar"b'23"]), 29531 LW(1, 29532 1)), 29533 Let(bVar"index", 29534 EQ(Var("P", 29535 F1), 29536 LW(1, 29537 1)), 29538 Let(TP[Var("shift_t", 29539 CTy"SRType"), 29540 nVar"shift_n"], 29541 Call 29542 ("DecodeImmShift", 29543 PTy(CTy"SRType", 29544 nTy), 29545 TP[Mop(Cast 29546 (FTy 2), 29547 LL[bVar"b'6", 29548 bVar"b'5"]), 29549 Mop(Cast 29550 (FTy 5), 29551 LL[bVar"b'11", 29552 bVar"b'10", 29553 bVar"b'9", 29554 bVar"b'8", 29555 bVar"b'7"])]), 29556 Let(Var("m", 29557 CTy"offset1"), 29558 Call 29559 ("register_form1", 29560 CTy"offset1", 29561 TP[Var("Rm", 29562 F4), 29563 Var("shift_t", 29564 CTy"SRType"), 29565 nVar"shift_n"]), 29566 ITE(EQ(Var("B", 29567 F1), 29568 LW(1, 29569 1)), 29570 Call 29571 ("Store", 29572 CTy"instruction", 29573 Call 29574 ("StoreByte", 29575 CTy"Store", 29576 TP[bVar"add", 29577 bVar"index", 29578 bVar"wback", 29579 Var("Rt", 29580 F4), 29581 Var("Rn", 29582 F4), 29583 Var("m", 29584 CTy"offset1")])), 29585 Call 29586 ("Store", 29587 CTy"instruction", 29588 Call 29589 ("StoreWord", 29590 CTy"Store", 29591 TP[bVar"add", 29592 bVar"index", 29593 bVar"wback", 29594 Var("Rt", 29595 F4), 29596 Var("Rn", 29597 F4), 29598 Var("m", 29599 CTy"offset1")]))))))), 29600 qTy)))))), 29601 Call 29602 ("Skip", 29603 ATy(qTy, 29604 PTy(CTy"instruction", 29605 qTy)), 29606 LU)))))))))), 29607 (Bop(And,Mop(Not,bVar"b'27"), 29608 Bop(And,Mop(Not,bVar"b'24"), 29609 Bop(And,bVar"b'21", 29610 Bop(And,bVar"b'20", 29611 Mop(Not,bVar"b'4"))))), 29612 Let(Var("Rm",F4), 29613 Mop(Cast F4, 29614 LL[bVar"b'3",bVar"b'2", 29615 bVar"b'1",bVar"b'0"]), 29616 Let(Var("Rt",F4), 29617 Mop(Cast F4, 29618 LL[bVar"b'15",bVar"b'14", 29619 bVar"b'13",bVar"b'12"]), 29620 Let(Var("Rn",F4), 29621 Mop(Cast F4, 29622 LL[bVar"b'19", 29623 bVar"b'18", 29624 bVar"b'17", 29625 bVar"b'16"]), 29626 MB(Call 29627 ("Take", 29628 ATy(qTy, 29629 PTy(bTy,qTy)), 29630 TP[Var("cond",F4), 29631 LT]), 29632 Close 29633 (bVar"b", 29634 ITE(bVar"b", 29635 MB(Call 29636 ("ArchVersion", 29637 ATy(qTy, 29638 PTy(nTy, 29639 qTy)), 29640 LU), 29641 Close 29642 (nVar"v", 29643 MB(MB(MB(MB(MU(Bop(Lt, 29644 nVar"v", 29645 LN 29646 6), 29647 qTy), 29648 Close 29649 (bVar"b", 29650 MU(Bop(And, 29651 bVar"b", 29652 EQ(Var("Rm", 29653 F4), 29654 Var("Rn", 29655 F4))), 29656 qTy))), 29657 Close 29658 (bVar"v", 29659 MU(Bop(Or, 29660 Bop(Or, 29661 Bop(Or, 29662 Bop(Or, 29663 EQ(Var("Rt", 29664 F4), 29665 LW(15, 29666 4)), 29667 EQ(Var("Rn", 29668 F4), 29669 LW(15, 29670 4))), 29671 EQ(Var("Rn", 29672 F4), 29673 Var("Rt", 29674 F4))), 29675 EQ(Var("Rm", 29676 F4), 29677 LW(15, 29678 4))), 29679 bVar"v"), 29680 qTy))), 29681 Close 29682 (bVar"b", 29683 ITE(bVar"b", 29684 Call 29685 ("DECODE_UNPREDICTABLE", 29686 ATy(qTy, 29687 PTy(uTy, 29688 qTy)), 29689 TP[Var("mc", 29690 CTy"MachineCode"), 29691 LS 29692 "LoadUnprivileged (regiser)"]), 29693 MU(LU, 29694 qTy)))), 29695 Close 29696 (AVar 29697 uTy, 29698 MU(Let(bVar"add", 29699 EQ(Mop(Cast 29700 F1, 29701 LL[bVar"b'23"]), 29702 LW(1, 29703 1)), 29704 Let(bVar"postindex", 29705 LT, 29706 Let(TP[Var("shift_t", 29707 CTy"SRType"), 29708 nVar"shift_n"], 29709 Call 29710 ("DecodeImmShift", 29711 PTy(CTy"SRType", 29712 nTy), 29713 TP[Mop(Cast 29714 (FTy 2), 29715 LL[bVar"b'6", 29716 bVar"b'5"]), 29717 Mop(Cast 29718 (FTy 5), 29719 LL[bVar"b'11", 29720 bVar"b'10", 29721 bVar"b'9", 29722 bVar"b'8", 29723 bVar"b'7"])]), 29724 Let(Var("m", 29725 CTy"offset1"), 29726 Call 29727 ("register_form1", 29728 CTy"offset1", 29729 TP[Var("Rm", 29730 F4), 29731 Var("shift_t", 29732 CTy"SRType"), 29733 nVar"shift_n"]), 29734 ITE(EQ(Mop(Cast 29735 F1, 29736 LL[bVar"b'22"]), 29737 LW(1, 29738 1)), 29739 Call 29740 ("Load", 29741 CTy"instruction", 29742 Call 29743 ("LoadByteUnprivileged", 29744 CTy"Load", 29745 TP[bVar"add", 29746 bVar"postindex", 29747 Var("Rt", 29748 F4), 29749 Var("Rn", 29750 F4), 29751 Var("m", 29752 CTy"offset1")])), 29753 Call 29754 ("Load", 29755 CTy"instruction", 29756 Call 29757 ("LoadUnprivileged", 29758 CTy"Load", 29759 TP[bVar"add", 29760 bVar"postindex", 29761 Var("Rt", 29762 F4), 29763 Var("Rn", 29764 F4), 29765 Var("m", 29766 CTy"offset1")]))))))), 29767 qTy))))), 29768 Call 29769 ("Skip", 29770 ATy(qTy, 29771 PTy(CTy"instruction", 29772 qTy)), 29773 LU)))))))), 29774 (Bop(And,Mop(Not,bVar"b'27"), 29775 Bop(And,bVar"b'20", 29776 Mop(Not,bVar"b'4"))), 29777 Let(Var("Rm",F4), 29778 Mop(Cast F4, 29779 LL[bVar"b'3",bVar"b'2", 29780 bVar"b'1",bVar"b'0"]), 29781 Let(Var("Rt",F4), 29782 Mop(Cast F4, 29783 LL[bVar"b'15",bVar"b'14", 29784 bVar"b'13",bVar"b'12"]), 29785 Let(Var("Rn",F4), 29786 Mop(Cast F4, 29787 LL[bVar"b'19", 29788 bVar"b'18", 29789 bVar"b'17", 29790 bVar"b'16"]), 29791 Let(Var("B",F1), 29792 Mop(Cast F1, 29793 LL[bVar"b'22"]), 29794 Let(Var("P",F1), 29795 Mop(Cast F1, 29796 LL[bVar"b'24"]), 29797 MB(Call 29798 ("Take", 29799 ATy(qTy, 29800 PTy(bTy, 29801 qTy)), 29802 TP[Var("cond", 29803 F4), 29804 LT]), 29805 Close 29806 (bVar"b", 29807 ITE(bVar"b", 29808 Let(bVar"wback", 29809 Bop(Or, 29810 EQ(Var("P", 29811 F1), 29812 LW(0, 29813 1)), 29814 EQ(Mop(Cast 29815 F1, 29816 LL[bVar"b'21"]), 29817 LW(1, 29818 1))), 29819 MB(Call 29820 ("ArchVersion", 29821 ATy(qTy, 29822 PTy(nTy, 29823 qTy)), 29824 LU), 29825 Close 29826 (nVar"v", 29827 MB(MB(MB(MB(MB(MU(Bop(Lt, 29828 nVar"v", 29829 LN 29830 6), 29831 qTy), 29832 Close 29833 (bVar"b", 29834 MU(Bop(And, 29835 bVar"b", 29836 bVar"wback"), 29837 qTy))), 29838 Close 29839 (bVar"b", 29840 MU(Bop(And, 29841 bVar"b", 29842 EQ(Var("Rm", 29843 F4), 29844 Var("Rn", 29845 F4))), 29846 qTy))), 29847 Close 29848 (bVar"v", 29849 MU(Bop(Or, 29850 Bop(Or, 29851 Bop(Or, 29852 Bop(And, 29853 EQ(Var("B", 29854 F1), 29855 LW(1, 29856 1)), 29857 EQ(Var("Rt", 29858 F4), 29859 LW(15, 29860 4))), 29861 EQ(Var("Rm", 29862 F4), 29863 LW(15, 29864 4))), 29865 Bop(And, 29866 bVar"wback", 29867 Bop(Or, 29868 EQ(Var("Rn", 29869 F4), 29870 LW(15, 29871 4)), 29872 EQ(Var("Rn", 29873 F4), 29874 Var("Rt", 29875 F4))))), 29876 bVar"v"), 29877 qTy))), 29878 Close 29879 (bVar"b", 29880 ITE(bVar"b", 29881 Call 29882 ("DECODE_UNPREDICTABLE", 29883 ATy(qTy, 29884 PTy(uTy, 29885 qTy)), 29886 TP[Var("mc", 29887 CTy"MachineCode"), 29888 LS 29889 "LoadWord/Byte (regiser)"]), 29890 MU(LU, 29891 qTy)))), 29892 Close 29893 (AVar 29894 uTy, 29895 MU(Let(bVar"add", 29896 EQ(Mop(Cast 29897 F1, 29898 LL[bVar"b'23"]), 29899 LW(1, 29900 1)), 29901 Let(bVar"index", 29902 EQ(Var("P", 29903 F1), 29904 LW(1, 29905 1)), 29906 Let(TP[Var("shift_t", 29907 CTy"SRType"), 29908 nVar"shift_n"], 29909 Call 29910 ("DecodeImmShift", 29911 PTy(CTy"SRType", 29912 nTy), 29913 TP[Mop(Cast 29914 (FTy 2), 29915 LL[bVar"b'6", 29916 bVar"b'5"]), 29917 Mop(Cast 29918 (FTy 5), 29919 LL[bVar"b'11", 29920 bVar"b'10", 29921 bVar"b'9", 29922 bVar"b'8", 29923 bVar"b'7"])]), 29924 Let(Var("m", 29925 CTy"offset1"), 29926 Call 29927 ("register_form1", 29928 CTy"offset1", 29929 TP[Var("Rm", 29930 F4), 29931 Var("shift_t", 29932 CTy"SRType"), 29933 nVar"shift_n"]), 29934 ITE(EQ(Var("B", 29935 F1), 29936 LW(1, 29937 1)), 29938 Call 29939 ("Load", 29940 CTy"instruction", 29941 Call 29942 ("LoadByte", 29943 CTy"Load", 29944 TP[LT, 29945 bVar"add", 29946 bVar"index", 29947 bVar"wback", 29948 Var("Rt", 29949 F4), 29950 Var("Rn", 29951 F4), 29952 Var("m", 29953 CTy"offset1")])), 29954 Call 29955 ("Load", 29956 CTy"instruction", 29957 Call 29958 ("LoadWord", 29959 CTy"Load", 29960 TP[bVar"add", 29961 bVar"index", 29962 bVar"wback", 29963 Var("Rt", 29964 F4), 29965 Var("Rn", 29966 F4), 29967 Var("m", 29968 CTy"offset1")]))))))), 29969 qTy)))))), 29970 Call 29971 ("Skip", 29972 ATy(qTy, 29973 PTy(CTy"instruction", 29974 qTy)), 29975 LU)))))))))), 29976 (Bop(And,Mop(Not,bVar"b'27"), 29977 Bop(And,Mop(Not,bVar"b'24"), 29978 Bop(And,Mop(Not,bVar"b'23"), 29979 bVar"b'4"))), 29980 Let(Var("Rm",F4), 29981 Mop(Cast F4, 29982 LL[bVar"b'3",bVar"b'2", 29983 bVar"b'1",bVar"b'0"]), 29984 Let(Var("Rd",F4), 29985 Mop(Cast F4, 29986 LL[bVar"b'15",bVar"b'14", 29987 bVar"b'13",bVar"b'12"]), 29988 Let(Var("Rn",F4), 29989 Mop(Cast F4, 29990 LL[bVar"b'19", 29991 bVar"b'18", 29992 bVar"b'17", 29993 bVar"b'16"]), 29994 MB(Call 29995 ("ArchVersion", 29996 ATy(qTy, 29997 PTy(nTy,qTy)), 29998 LU), 29999 Close 30000 (nVar"v", 30001 MB(MB(MB(MU(Bop(Ge, 30002 nVar"v", 30003 LN 30004 6), 30005 qTy), 30006 Close 30007 (bVar"v", 30008 MU(TP[Var("cond", 30009 F4), 30010 bVar"v"], 30011 qTy))), 30012 Close 30013 (Var("v", 30014 PTy(F4, 30015 bTy)), 30016 Call 30017 ("Take", 30018 ATy(qTy, 30019 PTy(bTy, 30020 qTy)), 30021 Var("v", 30022 PTy(F4, 30023 bTy))))), 30024 Close 30025 (bVar"b", 30026 ITE(bVar"b", 30027 MB(ITE(Bop(Or, 30028 Bop(Or, 30029 EQ(Var("Rd", 30030 F4), 30031 LW(15, 30032 4)), 30033 EQ(Var("Rn", 30034 F4), 30035 LW(15, 30036 4))), 30037 EQ(Var("Rm", 30038 F4), 30039 LW(15, 30040 4))), 30041 Call 30042 ("DECODE_UNPREDICTABLE", 30043 ATy(qTy, 30044 PTy(uTy, 30045 qTy)), 30046 TP[Var("mc", 30047 CTy"MachineCode"), 30048 LS 30049 "Parallel addition and subtraction"]), 30050 MU(LU, 30051 qTy)), 30052 Close 30053 (AVar 30054 uTy, 30055 MU(Call 30056 ("DecodeParallelAdditionSubtraction", 30057 CTy"instruction", 30058 TP[Mop(Cast 30059 (FTy 2), 30060 LL[bVar"b'21", 30061 bVar"b'20"]), 30062 Mop(Cast 30063 (FTy 3), 30064 LL[bVar"b'7", 30065 bVar"b'6", 30066 bVar"b'5"]), 30067 Mop(Cast 30068 F1, 30069 LL[bVar"b'22"]), 30070 Var("Rd", 30071 F4), 30072 Var("Rn", 30073 F4), 30074 Var("Rm", 30075 F4)]), 30076 qTy))), 30077 Call 30078 ("Skip", 30079 ATy(qTy, 30080 PTy(CTy"instruction", 30081 qTy)), 30082 LU)))))))))), 30083 (Bop(And,Mop(Not,bVar"b'27"), 30084 Bop(And,Mop(Not,bVar"b'24"), 30085 Bop(And,bVar"b'23", 30086 Bop(And, 30087 Mop(Not,bVar"b'22"), 30088 Bop(And, 30089 Mop(Not, 30090 bVar"b'21"), 30091 Bop(And, 30092 Mop(Not, 30093 bVar"b'20"), 30094 Bop(And, 30095 Mop(Not, 30096 bVar"b'5"), 30097 bVar"b'4"))))))), 30098 Let(Var("Rm",F4), 30099 Mop(Cast F4, 30100 LL[bVar"b'3",bVar"b'2", 30101 bVar"b'1",bVar"b'0"]), 30102 Let(Var("tb",F1), 30103 Mop(Cast F1,LL[bVar"b'6"]), 30104 Let(Var("Rd",F4), 30105 Mop(Cast F4, 30106 LL[bVar"b'15", 30107 bVar"b'14", 30108 bVar"b'13", 30109 bVar"b'12"]), 30110 Let(Var("Rn",F4), 30111 Mop(Cast F4, 30112 LL[bVar"b'19", 30113 bVar"b'18", 30114 bVar"b'17", 30115 bVar"b'16"]), 30116 MB(Call 30117 ("ArchVersion", 30118 ATy(qTy, 30119 PTy(nTy,qTy)), 30120 LU), 30121 Close 30122 (nVar"v", 30123 MB(MB(MB(MU(Bop(Ge, 30124 nVar"v", 30125 LN 30126 6), 30127 qTy), 30128 Close 30129 (bVar"v", 30130 MU(TP[Var("cond", 30131 F4), 30132 bVar"v"], 30133 qTy))), 30134 Close 30135 (Var("v", 30136 PTy(F4, 30137 bTy)), 30138 Call 30139 ("Take", 30140 ATy(qTy, 30141 PTy(bTy, 30142 qTy)), 30143 Var("v", 30144 PTy(F4, 30145 bTy))))), 30146 Close 30147 (bVar"b", 30148 ITE(bVar"b", 30149 MB(ITE(Bop(Or, 30150 Bop(Or, 30151 EQ(Var("Rd", 30152 F4), 30153 LW(15, 30154 4)), 30155 EQ(Var("Rn", 30156 F4), 30157 LW(15, 30158 4))), 30159 EQ(Var("Rm", 30160 F4), 30161 LW(15, 30162 4))), 30163 Call 30164 ("DECODE_UNPREDICTABLE", 30165 ATy(qTy, 30166 PTy(uTy, 30167 qTy)), 30168 TP[Var("mc", 30169 CTy"MachineCode"), 30170 LS 30171 "PackHalfword"]), 30172 MU(LU, 30173 qTy)), 30174 Close 30175 (AVar 30176 uTy, 30177 MU(Let(TP[Var("shift_t", 30178 CTy"SRType"), 30179 nVar"shift_n"], 30180 Call 30181 ("DecodeImmShift", 30182 PTy(CTy"SRType", 30183 nTy), 30184 TP[CC[Var("tb", 30185 F1), 30186 LW(0, 30187 1)], 30188 Mop(Cast 30189 (FTy 5), 30190 LL[bVar"b'11", 30191 bVar"b'10", 30192 bVar"b'9", 30193 bVar"b'8", 30194 bVar"b'7"])]), 30195 Call 30196 ("Media", 30197 CTy"instruction", 30198 Call 30199 ("PackHalfword", 30200 CTy"Media", 30201 TP[Var("shift_t", 30202 CTy"SRType"), 30203 nVar"shift_n", 30204 EQ(Var("tb", 30205 F1), 30206 LW(1, 30207 1)), 30208 Var("Rd", 30209 F4), 30210 Var("Rn", 30211 F4), 30212 Var("Rm", 30213 F4)]))), 30214 qTy))), 30215 Call 30216 ("Skip", 30217 ATy(qTy, 30218 PTy(CTy"instruction", 30219 qTy)), 30220 LU))))))))))), 30221 (Bop(And,Mop(Not,bVar"b'27"), 30222 Bop(And,Mop(Not,bVar"b'24"), 30223 Bop(And,bVar"b'23", 30224 Bop(And, 30225 Mop(Not,bVar"b'22"), 30226 Bop(And, 30227 Mop(Not, 30228 bVar"b'21"), 30229 Bop(And, 30230 Mop(Not, 30231 bVar"b'20"), 30232 Bop(And, 30233 bVar"b'7", 30234 Bop(And, 30235 Mop(Not, 30236 bVar"b'6"), 30237 Bop(And, 30238 bVar"b'5", 30239 bVar"b'4"))))))))), 30240 Let(Var("Rm",F4), 30241 Mop(Cast F4, 30242 LL[bVar"b'3",bVar"b'2", 30243 bVar"b'1",bVar"b'0"]), 30244 Let(Var("Rd",F4), 30245 Mop(Cast F4, 30246 LL[bVar"b'15",bVar"b'14", 30247 bVar"b'13",bVar"b'12"]), 30248 Let(Var("Rn",F4), 30249 Mop(Cast F4, 30250 LL[bVar"b'19", 30251 bVar"b'18", 30252 bVar"b'17", 30253 bVar"b'16"]), 30254 MB(Call 30255 ("ArchVersion", 30256 ATy(qTy, 30257 PTy(nTy,qTy)), 30258 LU), 30259 Close 30260 (nVar"v", 30261 MB(MB(MB(MU(Bop(Ge, 30262 nVar"v", 30263 LN 30264 6), 30265 qTy), 30266 Close 30267 (bVar"v", 30268 MU(TP[Var("cond", 30269 F4), 30270 bVar"v"], 30271 qTy))), 30272 Close 30273 (Var("v", 30274 PTy(F4, 30275 bTy)), 30276 Call 30277 ("Take", 30278 ATy(qTy, 30279 PTy(bTy, 30280 qTy)), 30281 Var("v", 30282 PTy(F4, 30283 bTy))))), 30284 Close 30285 (bVar"b", 30286 ITE(bVar"b", 30287 MB(ITE(Bop(Or, 30288 Bop(Or, 30289 EQ(Var("Rd", 30290 F4), 30291 LW(15, 30292 4)), 30293 EQ(Var("Rn", 30294 F4), 30295 LW(15, 30296 4))), 30297 EQ(Var("Rm", 30298 F4), 30299 LW(15, 30300 4))), 30301 Call 30302 ("DECODE_UNPREDICTABLE", 30303 ATy(qTy, 30304 PTy(uTy, 30305 qTy)), 30306 TP[Var("mc", 30307 CTy"MachineCode"), 30308 LS 30309 "SelectBytes"]), 30310 MU(LU, 30311 qTy)), 30312 Close 30313 (AVar 30314 uTy, 30315 MU(Call 30316 ("Media", 30317 CTy"instruction", 30318 Call 30319 ("SelectBytes", 30320 CTy"Media", 30321 TP[Var("Rd", 30322 F4), 30323 Var("Rn", 30324 F4), 30325 Var("Rm", 30326 F4)])), 30327 qTy))), 30328 Call 30329 ("Skip", 30330 ATy(qTy, 30331 PTy(CTy"instruction", 30332 qTy)), 30333 LU)))))))))), 30334 (Bop(And,Mop(Not,bVar"b'27"), 30335 Bop(And,Mop(Not,bVar"b'24"), 30336 Bop(And,bVar"b'23", 30337 Bop(And,bVar"b'21", 30338 Bop(And, 30339 Mop(Not,bVar"b'5"), 30340 bVar"b'4"))))), 30341 Let(Var("Rn",F4), 30342 Mop(Cast F4, 30343 LL[bVar"b'3",bVar"b'2", 30344 bVar"b'1",bVar"b'0"]), 30345 Let(Var("Rd",F4), 30346 Mop(Cast F4, 30347 LL[bVar"b'15",bVar"b'14", 30348 bVar"b'13",bVar"b'12"]), 30349 Let(Var("sat_imm",FTy 5), 30350 Mop(Cast(FTy 5), 30351 LL[bVar"b'20", 30352 bVar"b'19", 30353 bVar"b'18", 30354 bVar"b'17", 30355 bVar"b'16"]), 30356 MB(Call 30357 ("ArchVersion", 30358 ATy(qTy, 30359 PTy(nTy,qTy)), 30360 LU), 30361 Close 30362 (nVar"v", 30363 MB(MB(MB(MU(Bop(Ge, 30364 nVar"v", 30365 LN 30366 6), 30367 qTy), 30368 Close 30369 (bVar"v", 30370 MU(TP[Var("cond", 30371 F4), 30372 bVar"v"], 30373 qTy))), 30374 Close 30375 (Var("v", 30376 PTy(F4, 30377 bTy)), 30378 Call 30379 ("Take", 30380 ATy(qTy, 30381 PTy(bTy, 30382 qTy)), 30383 Var("v", 30384 PTy(F4, 30385 bTy))))), 30386 Close 30387 (bVar"b", 30388 ITE(bVar"b", 30389 MB(ITE(Bop(Or, 30390 EQ(Var("Rd", 30391 F4), 30392 LW(15, 30393 4)), 30394 EQ(Var("Rn", 30395 F4), 30396 LW(15, 30397 4))), 30398 Call 30399 ("DECODE_UNPREDICTABLE", 30400 ATy(qTy, 30401 PTy(uTy, 30402 qTy)), 30403 TP[Var("mc", 30404 CTy"MachineCode"), 30405 LS 30406 "Saturate"]), 30407 MU(LU, 30408 qTy)), 30409 Close 30410 (AVar 30411 uTy, 30412 MU(Let(bVar"unsigned", 30413 EQ(Mop(Cast 30414 F1, 30415 LL[bVar"b'22"]), 30416 LW(1, 30417 1)), 30418 Let(TP[Var("shift_t", 30419 CTy"SRType"), 30420 nVar"shift_n"], 30421 Call 30422 ("DecodeImmShift", 30423 PTy(CTy"SRType", 30424 nTy), 30425 TP[CC[Mop(Cast 30426 F1, 30427 LL[bVar"b'6"]), 30428 LW(0, 30429 1)], 30430 Mop(Cast 30431 (FTy 5), 30432 LL[bVar"b'11", 30433 bVar"b'10", 30434 bVar"b'9", 30435 bVar"b'8", 30436 bVar"b'7"])]), 30437 Call 30438 ("Media", 30439 CTy"instruction", 30440 Call 30441 ("Saturate", 30442 CTy"Media", 30443 TP[Var("shift_t", 30444 CTy"SRType"), 30445 nVar"shift_n", 30446 ITE(bVar"unsigned", 30447 Mop(Cast 30448 nTy, 30449 Var("sat_imm", 30450 FTy 5)), 30451 Bop(Add, 30452 Mop(Cast 30453 nTy, 30454 Var("sat_imm", 30455 FTy 5)), 30456 LN 30457 1)), 30458 bVar"unsigned", 30459 Var("Rd", 30460 F4), 30461 Var("Rn", 30462 F4)])))), 30463 qTy))), 30464 Call 30465 ("Skip", 30466 ATy(qTy, 30467 PTy(CTy"instruction", 30468 qTy)), 30469 LU)))))))))), 30470 (Bop(And,Mop(Not,bVar"b'27"), 30471 Bop(And,Mop(Not,bVar"b'24"), 30472 Bop(And,bVar"b'23", 30473 Bop(And,bVar"b'21", 30474 Bop(And, 30475 Mop(Not, 30476 bVar"b'20"), 30477 Bop(And, 30478 Mop(Not, 30479 bVar"b'7"), 30480 Bop(And, 30481 Mop(Not, 30482 bVar"b'6"), 30483 Bop(And, 30484 bVar"b'5", 30485 bVar"b'4")))))))), 30486 Let(Var("Rn",F4), 30487 Mop(Cast F4, 30488 LL[bVar"b'3",bVar"b'2", 30489 bVar"b'1",bVar"b'0"]), 30490 Let(Var("Rd",F4), 30491 Mop(Cast F4, 30492 LL[bVar"b'15",bVar"b'14", 30493 bVar"b'13",bVar"b'12"]), 30494 Let(Var("sat_imm",F4), 30495 Mop(Cast F4, 30496 LL[bVar"b'19", 30497 bVar"b'18", 30498 bVar"b'17", 30499 bVar"b'16"]), 30500 MB(Call 30501 ("ArchVersion", 30502 ATy(qTy, 30503 PTy(nTy,qTy)), 30504 LU), 30505 Close 30506 (nVar"v", 30507 MB(MB(MB(MU(Bop(Ge, 30508 nVar"v", 30509 LN 30510 6), 30511 qTy), 30512 Close 30513 (bVar"v", 30514 MU(TP[Var("cond", 30515 F4), 30516 bVar"v"], 30517 qTy))), 30518 Close 30519 (Var("v", 30520 PTy(F4, 30521 bTy)), 30522 Call 30523 ("Take", 30524 ATy(qTy, 30525 PTy(bTy, 30526 qTy)), 30527 Var("v", 30528 PTy(F4, 30529 bTy))))), 30530 Close 30531 (bVar"b", 30532 ITE(bVar"b", 30533 MB(ITE(Bop(Or, 30534 EQ(Var("Rd", 30535 F4), 30536 LW(15, 30537 4)), 30538 EQ(Var("Rn", 30539 F4), 30540 LW(15, 30541 4))), 30542 Call 30543 ("DECODE_UNPREDICTABLE", 30544 ATy(qTy, 30545 PTy(uTy, 30546 qTy)), 30547 TP[Var("mc", 30548 CTy"MachineCode"), 30549 LS 30550 "Saturate16"]), 30551 MU(LU, 30552 qTy)), 30553 Close 30554 (AVar 30555 uTy, 30556 MU(Let(bVar"unsigned", 30557 EQ(Mop(Cast 30558 F1, 30559 LL[bVar"b'22"]), 30560 LW(1, 30561 1)), 30562 Call 30563 ("Media", 30564 CTy"instruction", 30565 Call 30566 ("Saturate16", 30567 CTy"Media", 30568 TP[ITE(bVar"unsigned", 30569 Mop(Cast 30570 nTy, 30571 Var("sat_imm", 30572 F4)), 30573 Bop(Add, 30574 Mop(Cast 30575 nTy, 30576 Var("sat_imm", 30577 F4)), 30578 LN 30579 1)), 30580 bVar"unsigned", 30581 Var("Rd", 30582 F4), 30583 Var("Rn", 30584 F4)]))), 30585 qTy))), 30586 Call 30587 ("Skip", 30588 ATy(qTy, 30589 PTy(CTy"instruction", 30590 qTy)), 30591 LU)))))))))), 30592 (Bop(And,Mop(Not,bVar"b'27"), 30593 Bop(And,Mop(Not,bVar"b'24"), 30594 Bop(And,bVar"b'23", 30595 Bop(And, 30596 Mop(Not,bVar"b'21"), 30597 Bop(And, 30598 Mop(Not, 30599 bVar"b'20"), 30600 Bop(And, 30601 Mop(Not, 30602 bVar"b'7"), 30603 Bop(And, 30604 bVar"b'6", 30605 Bop(And, 30606 bVar"b'5", 30607 bVar"b'4")))))))), 30608 Let(Var("Rm",F4), 30609 Mop(Cast F4, 30610 LL[bVar"b'3",bVar"b'2", 30611 bVar"b'1",bVar"b'0"]), 30612 Let(Var("Rd",F4), 30613 Mop(Cast F4, 30614 LL[bVar"b'15",bVar"b'14", 30615 bVar"b'13",bVar"b'12"]), 30616 MB(Call 30617 ("ArchVersion", 30618 ATy(qTy,PTy(nTy,qTy)), 30619 LU), 30620 Close 30621 (nVar"v", 30622 MB(MB(MB(MU(Bop(Ge, 30623 nVar"v", 30624 LN 6), 30625 qTy), 30626 Close 30627 (bVar"v", 30628 MU(TP[Var("cond", 30629 F4), 30630 bVar"v"], 30631 qTy))), 30632 Close 30633 (Var("v", 30634 PTy(F4,bTy)), 30635 Call 30636 ("Take", 30637 ATy(qTy, 30638 PTy(bTy, 30639 qTy)), 30640 Var("v", 30641 PTy(F4, 30642 bTy))))), 30643 Close 30644 (bVar"b", 30645 ITE(bVar"b", 30646 MB(ITE(Bop(Or, 30647 EQ(Var("Rd", 30648 F4), 30649 LW(15, 30650 4)), 30651 EQ(Var("Rm", 30652 F4), 30653 LW(15, 30654 4))), 30655 Call 30656 ("DECODE_UNPREDICTABLE", 30657 ATy(qTy, 30658 PTy(uTy, 30659 qTy)), 30660 TP[Var("mc", 30661 CTy"MachineCode"), 30662 LS 30663 "ExtendByte16"]), 30664 MU(LU, 30665 qTy)), 30666 Close 30667 (AVar 30668 uTy, 30669 MU(Call 30670 ("Media", 30671 CTy"instruction", 30672 Call 30673 ("ExtendByte16", 30674 CTy"Media", 30675 TP[EQ(Mop(Cast 30676 F1, 30677 LL[bVar"b'22"]), 30678 LW(1, 30679 1)), 30680 Var("Rd", 30681 F4), 30682 Mop(Cast 30683 F4, 30684 LL[bVar"b'19", 30685 bVar"b'18", 30686 bVar"b'17", 30687 bVar"b'16"]), 30688 Var("Rm", 30689 F4), 30690 Mop(Cast 30691 nTy, 30692 CC[Mop(Cast 30693 (FTy 2), 30694 LL[bVar"b'11", 30695 bVar"b'10"]), 30696 LW(0, 30697 3)])])), 30698 qTy))), 30699 Call 30700 ("Skip", 30701 ATy(qTy, 30702 PTy(CTy"instruction", 30703 qTy)), 30704 LU))))))))), 30705 (Bop(And,Mop(Not,bVar"b'27"), 30706 Bop(And,Mop(Not,bVar"b'24"), 30707 Bop(And,bVar"b'23", 30708 Bop(And,bVar"b'21", 30709 Bop(And, 30710 Mop(Not, 30711 bVar"b'20"), 30712 Bop(And, 30713 Mop(Not, 30714 bVar"b'7"), 30715 Bop(And, 30716 bVar"b'6", 30717 Bop(And, 30718 bVar"b'5", 30719 bVar"b'4")))))))), 30720 Let(Var("Rm",F4), 30721 Mop(Cast F4, 30722 LL[bVar"b'3",bVar"b'2", 30723 bVar"b'1",bVar"b'0"]), 30724 Let(Var("Rd",F4), 30725 Mop(Cast F4, 30726 LL[bVar"b'15",bVar"b'14", 30727 bVar"b'13",bVar"b'12"]), 30728 MB(Call 30729 ("ArchVersion", 30730 ATy(qTy,PTy(nTy,qTy)), 30731 LU), 30732 Close 30733 (nVar"v", 30734 MB(MB(MB(MU(Bop(Ge, 30735 nVar"v", 30736 LN 6), 30737 qTy), 30738 Close 30739 (bVar"v", 30740 MU(TP[Var("cond", 30741 F4), 30742 bVar"v"], 30743 qTy))), 30744 Close 30745 (Var("v", 30746 PTy(F4,bTy)), 30747 Call 30748 ("Take", 30749 ATy(qTy, 30750 PTy(bTy, 30751 qTy)), 30752 Var("v", 30753 PTy(F4, 30754 bTy))))), 30755 Close 30756 (bVar"b", 30757 ITE(bVar"b", 30758 MB(ITE(Bop(Or, 30759 EQ(Var("Rd", 30760 F4), 30761 LW(15, 30762 4)), 30763 EQ(Var("Rm", 30764 F4), 30765 LW(15, 30766 4))), 30767 Call 30768 ("DECODE_UNPREDICTABLE", 30769 ATy(qTy, 30770 PTy(uTy, 30771 qTy)), 30772 TP[Var("mc", 30773 CTy"MachineCode"), 30774 LS 30775 "ExtendByte"]), 30776 MU(LU, 30777 qTy)), 30778 Close 30779 (AVar 30780 uTy, 30781 MU(Call 30782 ("Media", 30783 CTy"instruction", 30784 Call 30785 ("ExtendByte", 30786 CTy"Media", 30787 TP[EQ(Mop(Cast 30788 F1, 30789 LL[bVar"b'22"]), 30790 LW(1, 30791 1)), 30792 Var("Rd", 30793 F4), 30794 Mop(Cast 30795 F4, 30796 LL[bVar"b'19", 30797 bVar"b'18", 30798 bVar"b'17", 30799 bVar"b'16"]), 30800 Var("Rm", 30801 F4), 30802 Mop(Cast 30803 nTy, 30804 CC[Mop(Cast 30805 (FTy 2), 30806 LL[bVar"b'11", 30807 bVar"b'10"]), 30808 LW(0, 30809 3)])])), 30810 qTy))), 30811 Call 30812 ("Skip", 30813 ATy(qTy, 30814 PTy(CTy"instruction", 30815 qTy)), 30816 LU))))))))), 30817 (Bop(And,Mop(Not,bVar"b'27"), 30818 Bop(And,Mop(Not,bVar"b'24"), 30819 Bop(And,bVar"b'23", 30820 Bop(And,bVar"b'21", 30821 Bop(And,bVar"b'20", 30822 Bop(And, 30823 Mop(Not, 30824 bVar"b'7"), 30825 Bop(And, 30826 bVar"b'6", 30827 Bop(And, 30828 bVar"b'5", 30829 bVar"b'4")))))))), 30830 Let(Var("Rm",F4), 30831 Mop(Cast F4, 30832 LL[bVar"b'3",bVar"b'2", 30833 bVar"b'1",bVar"b'0"]), 30834 Let(Var("Rd",F4), 30835 Mop(Cast F4, 30836 LL[bVar"b'15",bVar"b'14", 30837 bVar"b'13",bVar"b'12"]), 30838 MB(Call 30839 ("ArchVersion", 30840 ATy(qTy,PTy(nTy,qTy)), 30841 LU), 30842 Close 30843 (nVar"v", 30844 MB(MB(MB(MU(Bop(Ge, 30845 nVar"v", 30846 LN 6), 30847 qTy), 30848 Close 30849 (bVar"v", 30850 MU(TP[Var("cond", 30851 F4), 30852 bVar"v"], 30853 qTy))), 30854 Close 30855 (Var("v", 30856 PTy(F4,bTy)), 30857 Call 30858 ("Take", 30859 ATy(qTy, 30860 PTy(bTy, 30861 qTy)), 30862 Var("v", 30863 PTy(F4, 30864 bTy))))), 30865 Close 30866 (bVar"b", 30867 ITE(bVar"b", 30868 MB(ITE(Bop(Or, 30869 EQ(Var("Rd", 30870 F4), 30871 LW(15, 30872 4)), 30873 EQ(Var("Rm", 30874 F4), 30875 LW(15, 30876 4))), 30877 Call 30878 ("DECODE_UNPREDICTABLE", 30879 ATy(qTy, 30880 PTy(uTy, 30881 qTy)), 30882 TP[Var("mc", 30883 CTy"MachineCode"), 30884 LS 30885 "ExtendHalfword"]), 30886 MU(LU, 30887 qTy)), 30888 Close 30889 (AVar 30890 uTy, 30891 MU(Call 30892 ("Media", 30893 CTy"instruction", 30894 Call 30895 ("ExtendHalfword", 30896 CTy"Media", 30897 TP[EQ(Mop(Cast 30898 F1, 30899 LL[bVar"b'22"]), 30900 LW(1, 30901 1)), 30902 Var("Rd", 30903 F4), 30904 Mop(Cast 30905 F4, 30906 LL[bVar"b'19", 30907 bVar"b'18", 30908 bVar"b'17", 30909 bVar"b'16"]), 30910 Var("Rm", 30911 F4), 30912 Mop(Cast 30913 nTy, 30914 CC[Mop(Cast 30915 (FTy 2), 30916 LL[bVar"b'11", 30917 bVar"b'10"]), 30918 LW(0, 30919 3)])])), 30920 qTy))), 30921 Call 30922 ("Skip", 30923 ATy(qTy, 30924 PTy(CTy"instruction", 30925 qTy)), 30926 LU))))))))), 30927 (Bop(And,Mop(Not,bVar"b'27"), 30928 Bop(And,Mop(Not,bVar"b'24"), 30929 Bop(And,bVar"b'23", 30930 Bop(And, 30931 Mop(Not,bVar"b'22"), 30932 Bop(And,bVar"b'21", 30933 Bop(And, 30934 bVar"b'20", 30935 Bop(And, 30936 Mop(Not, 30937 bVar"b'7"), 30938 Bop(And, 30939 Mop(Not, 30940 bVar"b'6"), 30941 Bop(And, 30942 bVar"b'5", 30943 bVar"b'4"))))))))), 30944 Let(Var("Rm",F4), 30945 Mop(Cast F4, 30946 LL[bVar"b'3",bVar"b'2", 30947 bVar"b'1",bVar"b'0"]), 30948 Let(Var("Rd",F4), 30949 Mop(Cast F4, 30950 LL[bVar"b'15",bVar"b'14", 30951 bVar"b'13",bVar"b'12"]), 30952 MB(Call 30953 ("ArchVersion", 30954 ATy(qTy,PTy(nTy,qTy)), 30955 LU), 30956 Close 30957 (nVar"v", 30958 MB(MB(MB(MU(Bop(Ge, 30959 nVar"v", 30960 LN 6), 30961 qTy), 30962 Close 30963 (bVar"v", 30964 MU(TP[Var("cond", 30965 F4), 30966 bVar"v"], 30967 qTy))), 30968 Close 30969 (Var("v", 30970 PTy(F4,bTy)), 30971 Call 30972 ("Take", 30973 ATy(qTy, 30974 PTy(bTy, 30975 qTy)), 30976 Var("v", 30977 PTy(F4, 30978 bTy))))), 30979 Close 30980 (bVar"b", 30981 ITE(bVar"b", 30982 MB(ITE(Bop(Or, 30983 EQ(Var("Rd", 30984 F4), 30985 LW(15, 30986 4)), 30987 EQ(Var("Rm", 30988 F4), 30989 LW(15, 30990 4))), 30991 Call 30992 ("DECODE_UNPREDICTABLE", 30993 ATy(qTy, 30994 PTy(uTy, 30995 qTy)), 30996 TP[Var("mc", 30997 CTy"MachineCode"), 30998 LS 30999 "ByteReverse"]), 31000 MU(LU, 31001 qTy)), 31002 Close 31003 (AVar 31004 uTy, 31005 MU(Call 31006 ("Media", 31007 CTy"instruction", 31008 Call 31009 ("ByteReverse", 31010 CTy"Media", 31011 TP[Var("Rd", 31012 F4), 31013 Var("Rm", 31014 F4)])), 31015 qTy))), 31016 Call 31017 ("Skip", 31018 ATy(qTy, 31019 PTy(CTy"instruction", 31020 qTy)), 31021 LU))))))))), 31022 (Bop(And,Mop(Not,bVar"b'27"), 31023 Bop(And,Mop(Not,bVar"b'24"), 31024 Bop(And,bVar"b'23", 31025 Bop(And, 31026 Mop(Not,bVar"b'22"), 31027 Bop(And,bVar"b'21", 31028 Bop(And, 31029 bVar"b'20", 31030 Bop(And, 31031 bVar"b'7", 31032 Bop(And, 31033 Mop(Not, 31034 bVar"b'6"), 31035 Bop(And, 31036 bVar"b'5", 31037 bVar"b'4"))))))))), 31038 Let(Var("Rm",F4), 31039 Mop(Cast F4, 31040 LL[bVar"b'3",bVar"b'2", 31041 bVar"b'1",bVar"b'0"]), 31042 Let(Var("Rd",F4), 31043 Mop(Cast F4, 31044 LL[bVar"b'15",bVar"b'14", 31045 bVar"b'13",bVar"b'12"]), 31046 MB(Call 31047 ("ArchVersion", 31048 ATy(qTy,PTy(nTy,qTy)), 31049 LU), 31050 Close 31051 (nVar"v", 31052 MB(MB(MB(MU(Bop(Ge, 31053 nVar"v", 31054 LN 6), 31055 qTy), 31056 Close 31057 (bVar"v", 31058 MU(TP[Var("cond", 31059 F4), 31060 bVar"v"], 31061 qTy))), 31062 Close 31063 (Var("v", 31064 PTy(F4,bTy)), 31065 Call 31066 ("Take", 31067 ATy(qTy, 31068 PTy(bTy, 31069 qTy)), 31070 Var("v", 31071 PTy(F4, 31072 bTy))))), 31073 Close 31074 (bVar"b", 31075 ITE(bVar"b", 31076 MB(ITE(Bop(Or, 31077 EQ(Var("Rd", 31078 F4), 31079 LW(15, 31080 4)), 31081 EQ(Var("Rm", 31082 F4), 31083 LW(15, 31084 4))), 31085 Call 31086 ("DECODE_UNPREDICTABLE", 31087 ATy(qTy, 31088 PTy(uTy, 31089 qTy)), 31090 TP[Var("mc", 31091 CTy"MachineCode"), 31092 LS 31093 "ByteReversePackedHalfword"]), 31094 MU(LU, 31095 qTy)), 31096 Close 31097 (AVar 31098 uTy, 31099 MU(Call 31100 ("Media", 31101 CTy"instruction", 31102 Call 31103 ("ByteReversePackedHalfword", 31104 CTy"Media", 31105 TP[Var("Rd", 31106 F4), 31107 Var("Rm", 31108 F4)])), 31109 qTy))), 31110 Call 31111 ("Skip", 31112 ATy(qTy, 31113 PTy(CTy"instruction", 31114 qTy)), 31115 LU))))))))), 31116 (Bop(And,Mop(Not,bVar"b'27"), 31117 Bop(And,Mop(Not,bVar"b'24"), 31118 Bop(And,bVar"b'23", 31119 Bop(And,bVar"b'22", 31120 Bop(And,bVar"b'21", 31121 Bop(And, 31122 bVar"b'20", 31123 Bop(And, 31124 bVar"b'7", 31125 Bop(And, 31126 Mop(Not, 31127 bVar"b'6"), 31128 Bop(And, 31129 bVar"b'5", 31130 bVar"b'4"))))))))), 31131 Let(Var("Rm",F4), 31132 Mop(Cast F4, 31133 LL[bVar"b'3",bVar"b'2", 31134 bVar"b'1",bVar"b'0"]), 31135 Let(Var("Rd",F4), 31136 Mop(Cast F4, 31137 LL[bVar"b'15",bVar"b'14", 31138 bVar"b'13",bVar"b'12"]), 31139 MB(Call 31140 ("ArchVersion", 31141 ATy(qTy,PTy(nTy,qTy)), 31142 LU), 31143 Close 31144 (nVar"v", 31145 MB(MB(MB(MU(Bop(Ge, 31146 nVar"v", 31147 LN 6), 31148 qTy), 31149 Close 31150 (bVar"v", 31151 MU(TP[Var("cond", 31152 F4), 31153 bVar"v"], 31154 qTy))), 31155 Close 31156 (Var("v", 31157 PTy(F4,bTy)), 31158 Call 31159 ("Take", 31160 ATy(qTy, 31161 PTy(bTy, 31162 qTy)), 31163 Var("v", 31164 PTy(F4, 31165 bTy))))), 31166 Close 31167 (bVar"b", 31168 ITE(bVar"b", 31169 MB(ITE(Bop(Or, 31170 EQ(Var("Rd", 31171 F4), 31172 LW(15, 31173 4)), 31174 EQ(Var("Rm", 31175 F4), 31176 LW(15, 31177 4))), 31178 Call 31179 ("DECODE_UNPREDICTABLE", 31180 ATy(qTy, 31181 PTy(uTy, 31182 qTy)), 31183 TP[Var("mc", 31184 CTy"MachineCode"), 31185 LS 31186 "ByteReverseSignedHalfword"]), 31187 MU(LU, 31188 qTy)), 31189 Close 31190 (AVar 31191 uTy, 31192 MU(Call 31193 ("Media", 31194 CTy"instruction", 31195 Call 31196 ("ByteReverseSignedHalfword", 31197 CTy"Media", 31198 TP[Var("Rd", 31199 F4), 31200 Var("Rm", 31201 F4)])), 31202 qTy))), 31203 Call 31204 ("Skip", 31205 ATy(qTy, 31206 PTy(CTy"instruction", 31207 qTy)), 31208 LU))))))))), 31209 (Bop(And,Mop(Not,bVar"b'27"), 31210 Bop(And,Mop(Not,bVar"b'24"), 31211 Bop(And,bVar"b'23", 31212 Bop(And,bVar"b'22", 31213 Bop(And,bVar"b'21", 31214 Bop(And, 31215 bVar"b'20", 31216 Bop(And, 31217 Mop(Not, 31218 bVar"b'7"), 31219 Bop(And, 31220 Mop(Not, 31221 bVar"b'6"), 31222 Bop(And, 31223 bVar"b'5", 31224 bVar"b'4"))))))))), 31225 Let(Var("Rm",F4), 31226 Mop(Cast F4, 31227 LL[bVar"b'3",bVar"b'2", 31228 bVar"b'1",bVar"b'0"]), 31229 Let(Var("Rd",F4), 31230 Mop(Cast F4, 31231 LL[bVar"b'15",bVar"b'14", 31232 bVar"b'13",bVar"b'12"]), 31233 MB(Call 31234 ("ArchVersion", 31235 ATy(qTy,PTy(nTy,qTy)), 31236 LU), 31237 Close 31238 (nVar"v", 31239 MB(MB(MB(MU(Bop(Ge, 31240 nVar"v", 31241 LN 6), 31242 qTy), 31243 Close 31244 (bVar"v", 31245 MU(TP[Var("cond", 31246 F4), 31247 bVar"v"], 31248 qTy))), 31249 Close 31250 (Var("v", 31251 PTy(F4,bTy)), 31252 Call 31253 ("Take", 31254 ATy(qTy, 31255 PTy(bTy, 31256 qTy)), 31257 Var("v", 31258 PTy(F4, 31259 bTy))))), 31260 Close 31261 (bVar"b", 31262 ITE(bVar"b", 31263 MB(ITE(Bop(Or, 31264 EQ(Var("Rd", 31265 F4), 31266 LW(15, 31267 4)), 31268 EQ(Var("Rm", 31269 F4), 31270 LW(15, 31271 4))), 31272 Call 31273 ("DECODE_UNPREDICTABLE", 31274 ATy(qTy, 31275 PTy(uTy, 31276 qTy)), 31277 TP[Var("mc", 31278 CTy"MachineCode"), 31279 LS 31280 "ReverseBits"]), 31281 MU(LU, 31282 qTy)), 31283 Close 31284 (AVar 31285 uTy, 31286 MU(Call 31287 ("Media", 31288 CTy"instruction", 31289 Call 31290 ("ReverseBits", 31291 CTy"Media", 31292 TP[Var("Rd", 31293 F4), 31294 Var("Rm", 31295 F4)])), 31296 qTy))), 31297 Call 31298 ("Skip", 31299 ATy(qTy, 31300 PTy(CTy"instruction", 31301 qTy)), 31302 LU))))))))), 31303 (Bop(And,Mop(Not,bVar"b'27"), 31304 Bop(And,bVar"b'24", 31305 Bop(And,Mop(Not,bVar"b'23"), 31306 Bop(And, 31307 Mop(Not,bVar"b'22"), 31308 Bop(And, 31309 Mop(Not, 31310 bVar"b'21"), 31311 Bop(And, 31312 Mop(Not, 31313 bVar"b'20"), 31314 Bop(And, 31315 Mop(Not, 31316 bVar"b'7"), 31317 bVar"b'4"))))))), 31318 Let(Var("Rn",F4), 31319 Mop(Cast F4, 31320 LL[bVar"b'3",bVar"b'2", 31321 bVar"b'1",bVar"b'0"]), 31322 Let(Var("Rm",F4), 31323 Mop(Cast F4, 31324 LL[bVar"b'11",bVar"b'10", 31325 bVar"b'9",bVar"b'8"]), 31326 Let(Var("Rd",F4), 31327 Mop(Cast F4, 31328 LL[bVar"b'19", 31329 bVar"b'18", 31330 bVar"b'17", 31331 bVar"b'16"]), 31332 MB(Call 31333 ("ArchVersion", 31334 ATy(qTy, 31335 PTy(nTy,qTy)), 31336 LU), 31337 Close 31338 (nVar"v", 31339 MB(MB(MB(MU(Bop(Ge, 31340 nVar"v", 31341 LN 31342 6), 31343 qTy), 31344 Close 31345 (bVar"v", 31346 MU(TP[Var("cond", 31347 F4), 31348 bVar"v"], 31349 qTy))), 31350 Close 31351 (Var("v", 31352 PTy(F4, 31353 bTy)), 31354 Call 31355 ("Take", 31356 ATy(qTy, 31357 PTy(bTy, 31358 qTy)), 31359 Var("v", 31360 PTy(F4, 31361 bTy))))), 31362 Close 31363 (bVar"b", 31364 ITE(bVar"b", 31365 MB(ITE(Bop(Or, 31366 Bop(Or, 31367 EQ(Var("Rd", 31368 F4), 31369 LW(15, 31370 4)), 31371 EQ(Var("Rn", 31372 F4), 31373 LW(15, 31374 4))), 31375 EQ(Var("Rm", 31376 F4), 31377 LW(15, 31378 4))), 31379 Call 31380 ("DECODE_UNPREDICTABLE", 31381 ATy(qTy, 31382 PTy(uTy, 31383 qTy)), 31384 TP[Var("mc", 31385 CTy"MachineCode"), 31386 LS 31387 "SignedMultiplyDual"]), 31388 MU(LU, 31389 qTy)), 31390 Close 31391 (AVar 31392 uTy, 31393 MU(Call 31394 ("Multiply", 31395 CTy"instruction", 31396 Call 31397 ("SignedMultiplyDual", 31398 CTy"Multiply", 31399 TP[EQ(Mop(Cast 31400 F1, 31401 LL[bVar"b'6"]), 31402 LW(1, 31403 1)), 31404 EQ(Mop(Cast 31405 F1, 31406 LL[bVar"b'5"]), 31407 LW(1, 31408 1)), 31409 Var("Rd", 31410 F4), 31411 Var("Rn", 31412 F4), 31413 Var("Rm", 31414 F4), 31415 Mop(Cast 31416 F4, 31417 LL[bVar"b'15", 31418 bVar"b'14", 31419 bVar"b'13", 31420 bVar"b'12"])])), 31421 qTy))), 31422 Call 31423 ("Skip", 31424 ATy(qTy, 31425 PTy(CTy"instruction", 31426 qTy)), 31427 LU)))))))))), 31428 (Bop(And,Mop(Not,bVar"b'27"), 31429 Bop(And,bVar"b'24", 31430 Bop(And,Mop(Not,bVar"b'23"), 31431 Bop(And,bVar"b'22", 31432 Bop(And, 31433 Mop(Not, 31434 bVar"b'21"), 31435 Bop(And, 31436 Mop(Not, 31437 bVar"b'20"), 31438 Bop(And, 31439 Mop(Not, 31440 bVar"b'7"), 31441 bVar"b'4"))))))), 31442 Let(Var("Rn",F4), 31443 Mop(Cast F4, 31444 LL[bVar"b'3",bVar"b'2", 31445 bVar"b'1",bVar"b'0"]), 31446 Let(Var("Rm",F4), 31447 Mop(Cast F4, 31448 LL[bVar"b'11",bVar"b'10", 31449 bVar"b'9",bVar"b'8"]), 31450 Let(Var("RdLo",F4), 31451 Mop(Cast F4, 31452 LL[bVar"b'15", 31453 bVar"b'14", 31454 bVar"b'13", 31455 bVar"b'12"]), 31456 Let(Var("RdHi",F4), 31457 Mop(Cast F4, 31458 LL[bVar"b'19", 31459 bVar"b'18", 31460 bVar"b'17", 31461 bVar"b'16"]), 31462 MB(Call 31463 ("ArchVersion", 31464 ATy(qTy, 31465 PTy(nTy,qTy)), 31466 LU), 31467 Close 31468 (nVar"v", 31469 MB(MB(MB(MU(Bop(Ge, 31470 nVar"v", 31471 LN 31472 6), 31473 qTy), 31474 Close 31475 (bVar"v", 31476 MU(TP[Var("cond", 31477 F4), 31478 bVar"v"], 31479 qTy))), 31480 Close 31481 (Var("v", 31482 PTy(F4, 31483 bTy)), 31484 Call 31485 ("Take", 31486 ATy(qTy, 31487 PTy(bTy, 31488 qTy)), 31489 Var("v", 31490 PTy(F4, 31491 bTy))))), 31492 Close 31493 (bVar"b", 31494 ITE(bVar"b", 31495 MB(ITE(Bop(Or, 31496 Bop(Or, 31497 Bop(Or, 31498 EQ(Var("RdLo", 31499 F4), 31500 LW(15, 31501 4)), 31502 EQ(Var("RdHi", 31503 F4), 31504 LW(15, 31505 4))), 31506 EQ(Var("Rn", 31507 F4), 31508 LW(15, 31509 4))), 31510 EQ(Var("Rm", 31511 F4), 31512 LW(15, 31513 4))), 31514 Call 31515 ("DECODE_UNPREDICTABLE", 31516 ATy(qTy, 31517 PTy(uTy, 31518 qTy)), 31519 TP[Var("mc", 31520 CTy"MachineCode"), 31521 LS 31522 "SignedMultiplyLongDual"]), 31523 MU(LU, 31524 qTy)), 31525 Close 31526 (AVar 31527 uTy, 31528 MU(Call 31529 ("Multiply", 31530 CTy"instruction", 31531 Call 31532 ("SignedMultiplyLongDual", 31533 CTy"Multiply", 31534 TP[EQ(Mop(Cast 31535 F1, 31536 LL[bVar"b'6"]), 31537 LW(1, 31538 1)), 31539 EQ(Mop(Cast 31540 F1, 31541 LL[bVar"b'5"]), 31542 LW(1, 31543 1)), 31544 Var("RdHi", 31545 F4), 31546 Var("RdLo", 31547 F4), 31548 Var("Rn", 31549 F4), 31550 Var("Rm", 31551 F4)])), 31552 qTy))), 31553 Call 31554 ("Skip", 31555 ATy(qTy, 31556 PTy(CTy"instruction", 31557 qTy)), 31558 LU))))))))))), 31559 (Bop(And,Mop(Not,bVar"b'27"), 31560 Bop(And,bVar"b'24", 31561 Bop(And,Mop(Not,bVar"b'23"), 31562 Bop(And,bVar"b'22", 31563 Bop(And, 31564 Mop(Not, 31565 bVar"b'21"), 31566 Bop(And, 31567 bVar"b'20", 31568 Bop(And, 31569 Mop(Not, 31570 bVar"b'7"), 31571 Bop(And, 31572 Mop(Not, 31573 bVar"b'6"), 31574 bVar"b'4")))))))), 31575 Let(Var("Rn",F4), 31576 Mop(Cast F4, 31577 LL[bVar"b'3",bVar"b'2", 31578 bVar"b'1",bVar"b'0"]), 31579 Let(Var("Rm",F4), 31580 Mop(Cast F4, 31581 LL[bVar"b'11",bVar"b'10", 31582 bVar"b'9",bVar"b'8"]), 31583 Let(Var("Rd",F4), 31584 Mop(Cast F4, 31585 LL[bVar"b'19", 31586 bVar"b'18", 31587 bVar"b'17", 31588 bVar"b'16"]), 31589 MB(Call 31590 ("ArchVersion", 31591 ATy(qTy, 31592 PTy(nTy,qTy)), 31593 LU), 31594 Close 31595 (nVar"v", 31596 MB(MB(MB(MU(Bop(Ge, 31597 nVar"v", 31598 LN 31599 6), 31600 qTy), 31601 Close 31602 (bVar"v", 31603 MU(TP[Var("cond", 31604 F4), 31605 bVar"v"], 31606 qTy))), 31607 Close 31608 (Var("v", 31609 PTy(F4, 31610 bTy)), 31611 Call 31612 ("Take", 31613 ATy(qTy, 31614 PTy(bTy, 31615 qTy)), 31616 Var("v", 31617 PTy(F4, 31618 bTy))))), 31619 Close 31620 (bVar"b", 31621 ITE(bVar"b", 31622 MB(ITE(Bop(Or, 31623 Bop(Or, 31624 EQ(Var("Rd", 31625 F4), 31626 LW(15, 31627 4)), 31628 EQ(Var("Rn", 31629 F4), 31630 LW(15, 31631 4))), 31632 EQ(Var("Rm", 31633 F4), 31634 LW(15, 31635 4))), 31636 Call 31637 ("DECODE_UNPREDICTABLE", 31638 ATy(qTy, 31639 PTy(uTy, 31640 qTy)), 31641 TP[Var("mc", 31642 CTy"MachineCode"), 31643 LS 31644 "SignedMostSignificantMultiply"]), 31645 MU(LU, 31646 qTy)), 31647 Close 31648 (AVar 31649 uTy, 31650 MU(Call 31651 ("Multiply", 31652 CTy"instruction", 31653 Call 31654 ("SignedMostSignificantMultiply", 31655 CTy"Multiply", 31656 TP[EQ(Mop(Cast 31657 F1, 31658 LL[bVar"b'5"]), 31659 LW(1, 31660 1)), 31661 Var("Rd", 31662 F4), 31663 Var("Rn", 31664 F4), 31665 Var("Rm", 31666 F4), 31667 Mop(Cast 31668 F4, 31669 LL[bVar"b'15", 31670 bVar"b'14", 31671 bVar"b'13", 31672 bVar"b'12"])])), 31673 qTy))), 31674 Call 31675 ("Skip", 31676 ATy(qTy, 31677 PTy(CTy"instruction", 31678 qTy)), 31679 LU)))))))))), 31680 (Bop(And,Mop(Not,bVar"b'27"), 31681 Bop(And,bVar"b'24", 31682 Bop(And,Mop(Not,bVar"b'23"), 31683 Bop(And,bVar"b'22", 31684 Bop(And, 31685 Mop(Not, 31686 bVar"b'21"), 31687 Bop(And, 31688 bVar"b'20", 31689 Bop(And, 31690 bVar"b'7", 31691 Bop(And, 31692 bVar"b'6", 31693 bVar"b'4")))))))), 31694 Let(Var("Rn",F4), 31695 Mop(Cast F4, 31696 LL[bVar"b'3",bVar"b'2", 31697 bVar"b'1",bVar"b'0"]), 31698 Let(Var("Rm",F4), 31699 Mop(Cast F4, 31700 LL[bVar"b'11",bVar"b'10", 31701 bVar"b'9",bVar"b'8"]), 31702 Let(Var("Ra",F4), 31703 Mop(Cast F4, 31704 LL[bVar"b'15", 31705 bVar"b'14", 31706 bVar"b'13", 31707 bVar"b'12"]), 31708 Let(Var("Rd",F4), 31709 Mop(Cast F4, 31710 LL[bVar"b'19", 31711 bVar"b'18", 31712 bVar"b'17", 31713 bVar"b'16"]), 31714 MB(Call 31715 ("ArchVersion", 31716 ATy(qTy, 31717 PTy(nTy,qTy)), 31718 LU), 31719 Close 31720 (nVar"v", 31721 MB(MB(MB(MU(Bop(Ge, 31722 nVar"v", 31723 LN 31724 6), 31725 qTy), 31726 Close 31727 (bVar"v", 31728 MU(TP[Var("cond", 31729 F4), 31730 bVar"v"], 31731 qTy))), 31732 Close 31733 (Var("v", 31734 PTy(F4, 31735 bTy)), 31736 Call 31737 ("Take", 31738 ATy(qTy, 31739 PTy(bTy, 31740 qTy)), 31741 Var("v", 31742 PTy(F4, 31743 bTy))))), 31744 Close 31745 (bVar"b", 31746 ITE(bVar"b", 31747 MB(ITE(Bop(Or, 31748 Bop(Or, 31749 Bop(Or, 31750 EQ(Var("Rd", 31751 F4), 31752 LW(15, 31753 4)), 31754 EQ(Var("Rn", 31755 F4), 31756 LW(15, 31757 4))), 31758 EQ(Var("Rm", 31759 F4), 31760 LW(15, 31761 4))), 31762 EQ(Var("Ra", 31763 F4), 31764 LW(15, 31765 4))), 31766 Call 31767 ("DECODE_UNPREDICTABLE", 31768 ATy(qTy, 31769 PTy(uTy, 31770 qTy)), 31771 TP[Var("mc", 31772 CTy"MachineCode"), 31773 LS 31774 "SignedMostSignificantMultiplySubtract"]), 31775 MU(LU, 31776 qTy)), 31777 Close 31778 (AVar 31779 uTy, 31780 MU(Call 31781 ("Multiply", 31782 CTy"instruction", 31783 Call 31784 ("SignedMostSignificantMultiplySubtract", 31785 CTy"Multiply", 31786 TP[EQ(Mop(Cast 31787 F1, 31788 LL[bVar"b'5"]), 31789 LW(1, 31790 1)), 31791 Var("Rd", 31792 F4), 31793 Var("Rn", 31794 F4), 31795 Var("Rm", 31796 F4), 31797 Var("Ra", 31798 F4)])), 31799 qTy))), 31800 Call 31801 ("Skip", 31802 ATy(qTy, 31803 PTy(CTy"instruction", 31804 qTy)), 31805 LU))))))))))), 31806 (Bop(And,Mop(Not,bVar"b'27"), 31807 Bop(And,bVar"b'24", 31808 Bop(And,bVar"b'23", 31809 Bop(And, 31810 Mop(Not,bVar"b'22"), 31811 Bop(And, 31812 Mop(Not, 31813 bVar"b'21"), 31814 Bop(And, 31815 Mop(Not, 31816 bVar"b'20"), 31817 Bop(And, 31818 Mop(Not, 31819 bVar"b'7"), 31820 Bop(And, 31821 Mop(Not, 31822 bVar"b'6"), 31823 Bop(And, 31824 Mop(Not, 31825 bVar"b'5"), 31826 bVar"b'4"))))))))), 31827 Let(Var("Rn",F4), 31828 Mop(Cast F4, 31829 LL[bVar"b'3",bVar"b'2", 31830 bVar"b'1",bVar"b'0"]), 31831 Let(Var("Rm",F4), 31832 Mop(Cast F4, 31833 LL[bVar"b'11",bVar"b'10", 31834 bVar"b'9",bVar"b'8"]), 31835 Let(Var("Rd",F4), 31836 Mop(Cast F4, 31837 LL[bVar"b'19", 31838 bVar"b'18", 31839 bVar"b'17", 31840 bVar"b'16"]), 31841 MB(Call 31842 ("ArchVersion", 31843 ATy(qTy, 31844 PTy(nTy,qTy)), 31845 LU), 31846 Close 31847 (nVar"v", 31848 MB(MB(MB(MU(Bop(Ge, 31849 nVar"v", 31850 LN 31851 6), 31852 qTy), 31853 Close 31854 (bVar"v", 31855 MU(TP[Var("cond", 31856 F4), 31857 bVar"v"], 31858 qTy))), 31859 Close 31860 (Var("v", 31861 PTy(F4, 31862 bTy)), 31863 Call 31864 ("Take", 31865 ATy(qTy, 31866 PTy(bTy, 31867 qTy)), 31868 Var("v", 31869 PTy(F4, 31870 bTy))))), 31871 Close 31872 (bVar"b", 31873 ITE(bVar"b", 31874 MB(ITE(Bop(Or, 31875 Bop(Or, 31876 EQ(Var("Rd", 31877 F4), 31878 LW(15, 31879 4)), 31880 EQ(Var("Rn", 31881 F4), 31882 LW(15, 31883 4))), 31884 EQ(Var("Rm", 31885 F4), 31886 LW(15, 31887 4))), 31888 Call 31889 ("DECODE_UNPREDICTABLE", 31890 ATy(qTy, 31891 PTy(uTy, 31892 qTy)), 31893 TP[Var("mc", 31894 CTy"MachineCode"), 31895 LS 31896 "UnsignedSumAbsoluteDifferences"]), 31897 MU(LU, 31898 qTy)), 31899 Close 31900 (AVar 31901 uTy, 31902 MU(Call 31903 ("SIMD", 31904 CTy"instruction", 31905 Call 31906 ("UnsignedSumAbsoluteDifferences", 31907 CTy"SIMD", 31908 TP[Var("Rd", 31909 F4), 31910 Var("Rn", 31911 F4), 31912 Var("Rm", 31913 F4), 31914 Mop(Cast 31915 F4, 31916 LL[bVar"b'15", 31917 bVar"b'14", 31918 bVar"b'13", 31919 bVar"b'12"])])), 31920 qTy))), 31921 Call 31922 ("Skip", 31923 ATy(qTy, 31924 PTy(CTy"instruction", 31925 qTy)), 31926 LU)))))))))), 31927 (Bop(And,Mop(Not,bVar"b'27"), 31928 Bop(And,bVar"b'24", 31929 Bop(And,bVar"b'23", 31930 Bop(And,bVar"b'21", 31931 Bop(And,bVar"b'6", 31932 Bop(And, 31933 Mop(Not, 31934 bVar"b'5"), 31935 bVar"b'4")))))), 31936 Let(Var("Rn",F4), 31937 Mop(Cast F4, 31938 LL[bVar"b'3",bVar"b'2", 31939 bVar"b'1",bVar"b'0"]), 31940 Let(Var("Rd",F4), 31941 Mop(Cast F4, 31942 LL[bVar"b'15",bVar"b'14", 31943 bVar"b'13",bVar"b'12"]), 31944 MB(Call 31945 ("ArchVersion", 31946 ATy(qTy,PTy(nTy,qTy)), 31947 LU), 31948 Close 31949 (nVar"v", 31950 MB(MB(MB(MU(Bop(Ge, 31951 nVar"v", 31952 LN 6), 31953 qTy), 31954 Close 31955 (bVar"v", 31956 MU(TP[Var("cond", 31957 F4), 31958 bVar"v"], 31959 qTy))), 31960 Close 31961 (Var("v", 31962 PTy(F4,bTy)), 31963 Call 31964 ("Take", 31965 ATy(qTy, 31966 PTy(bTy, 31967 qTy)), 31968 Var("v", 31969 PTy(F4, 31970 bTy))))), 31971 Close 31972 (bVar"b", 31973 ITE(bVar"b", 31974 Let(nVar"lsbit", 31975 Mop(Cast 31976 nTy, 31977 Mop(Cast 31978 (FTy 5), 31979 LL[bVar"b'11", 31980 bVar"b'10", 31981 bVar"b'9", 31982 bVar"b'8", 31983 bVar"b'7"])), 31984 Let(nVar"widthminus1", 31985 Mop(Cast 31986 nTy, 31987 Mop(Cast 31988 (FTy 5), 31989 LL[bVar"b'20", 31990 bVar"b'19", 31991 bVar"b'18", 31992 bVar"b'17", 31993 bVar"b'16"])), 31994 MB(ITE(Bop(Or, 31995 Bop(Or, 31996 EQ(Var("Rd", 31997 F4), 31998 LW(15, 31999 4)), 32000 EQ(Var("Rn", 32001 F4), 32002 LW(15, 32003 4))), 32004 Bop(Lt, 32005 LN 32006 31, 32007 Bop(Add, 32008 nVar"lsbit", 32009 nVar"widthminus1"))), 32010 Call 32011 ("DECODE_UNPREDICTABLE", 32012 ATy(qTy, 32013 PTy(uTy, 32014 qTy)), 32015 TP[Var("mc", 32016 CTy"MachineCode"), 32017 LS 32018 "BitFieldExtract"]), 32019 MU(LU, 32020 qTy)), 32021 Close 32022 (AVar 32023 uTy, 32024 MU(Call 32025 ("Media", 32026 CTy"instruction", 32027 Call 32028 ("BitFieldExtract", 32029 CTy"Media", 32030 TP[EQ(Mop(Cast 32031 F1, 32032 LL[bVar"b'22"]), 32033 LW(1, 32034 1)), 32035 Var("Rd", 32036 F4), 32037 Var("Rn", 32038 F4), 32039 nVar"lsbit", 32040 nVar"widthminus1"])), 32041 qTy))))), 32042 Call 32043 ("Skip", 32044 ATy(qTy, 32045 PTy(CTy"instruction", 32046 qTy)), 32047 LU))))))))), 32048 (Bop(And,Mop(Not,bVar"b'27"), 32049 Bop(And,bVar"b'24", 32050 Bop(And,bVar"b'23", 32051 Bop(And,bVar"b'22", 32052 Bop(And, 32053 Mop(Not, 32054 bVar"b'21"), 32055 Bop(And, 32056 Mop(Not, 32057 bVar"b'6"), 32058 Bop(And, 32059 Mop(Not, 32060 bVar"b'5"), 32061 bVar"b'4"))))))), 32062 Let(Var("Rd",F4), 32063 Mop(Cast F4, 32064 LL[bVar"b'15",bVar"b'14", 32065 bVar"b'13",bVar"b'12"]), 32066 MB(Call 32067 ("ArchVersion", 32068 ATy(qTy,PTy(nTy,qTy)),LU), 32069 Close 32070 (nVar"v", 32071 MB(MB(MB(MU(Bop(Ge,nVar"v", 32072 LN 6),qTy), 32073 Close 32074 (bVar"v", 32075 MU(TP[Var("cond", 32076 F4), 32077 bVar"v"], 32078 qTy))), 32079 Close 32080 (Var("v", 32081 PTy(F4,bTy)), 32082 Call 32083 ("Take", 32084 ATy(qTy, 32085 PTy(bTy,qTy)), 32086 Var("v", 32087 PTy(F4,bTy))))), 32088 Close 32089 (bVar"b", 32090 ITE(bVar"b", 32091 Let(nVar"lsbit", 32092 Mop(Cast nTy, 32093 Mop(Cast 32094 (FTy 5), 32095 LL[bVar"b'11", 32096 bVar"b'10", 32097 bVar"b'9", 32098 bVar"b'8", 32099 bVar"b'7"])), 32100 Let(nVar"msbit", 32101 Mop(Cast 32102 nTy, 32103 Mop(Cast 32104 (FTy 5), 32105 LL[bVar"b'20", 32106 bVar"b'19", 32107 bVar"b'18", 32108 bVar"b'17", 32109 bVar"b'16"])), 32110 MB(ITE(Bop(Or, 32111 EQ(Var("Rd", 32112 F4), 32113 LW(15, 32114 4)), 32115 Bop(Lt, 32116 nVar"msbit", 32117 nVar"lsbit")), 32118 Call 32119 ("DECODE_UNPREDICTABLE", 32120 ATy(qTy, 32121 PTy(uTy, 32122 qTy)), 32123 TP[Var("mc", 32124 CTy"MachineCode"), 32125 LS 32126 "BitFieldClearOrInsert"]), 32127 MU(LU, 32128 qTy)), 32129 Close 32130 (AVar 32131 uTy, 32132 MU(Call 32133 ("Media", 32134 CTy"instruction", 32135 Call 32136 ("BitFieldClearOrInsert", 32137 CTy"Media", 32138 TP[Var("Rd", 32139 F4), 32140 Mop(Cast 32141 F4, 32142 LL[bVar"b'3", 32143 bVar"b'2", 32144 bVar"b'1", 32145 bVar"b'0"]), 32146 nVar"lsbit", 32147 nVar"msbit"])), 32148 qTy))))), 32149 Call 32150 ("Skip", 32151 ATy(qTy, 32152 PTy(CTy"instruction", 32153 qTy)), 32154 LU)))))))), 32155 (Bop(And,bVar"b'27",bVar"b'24"), 32156 MB(Call 32157 ("Take",ATy(qTy,PTy(bTy,qTy)), 32158 TP[Var("cond",F4),LT]), 32159 Close 32160 (bVar"b", 32161 ITE(bVar"b", 32162 MU(Call 32163 ("System", 32164 CTy"instruction", 32165 Call 32166 ("SupervisorCall", 32167 CTy"System", 32168 Mop(SE F32, 32169 Mop(Cast 32170 (FTy 24), 32171 LL[bVar"b'23", 32172 bVar"b'22", 32173 bVar"b'21", 32174 bVar"b'20", 32175 bVar"b'19", 32176 bVar"b'18", 32177 bVar"b'17", 32178 bVar"b'16", 32179 bVar"b'15", 32180 bVar"b'14", 32181 bVar"b'13", 32182 bVar"b'12", 32183 bVar"b'11", 32184 bVar"b'10", 32185 bVar"b'9", 32186 bVar"b'8", 32187 bVar"b'7", 32188 bVar"b'6", 32189 bVar"b'5", 32190 bVar"b'4", 32191 bVar"b'3", 32192 bVar"b'2", 32193 bVar"b'1", 32194 bVar"b'0"])))), 32195 qTy), 32196 Call 32197 ("Skip", 32198 ATy(qTy, 32199 PTy(CTy"instruction", 32200 qTy)),LU)))))], 32201 Call 32202 ("UndefinedARM", 32203 ATy(qTy,PTy(CTy"instruction",qTy)), 32204 Var("cond",F4)))), 32205 (Bop(And,Mop(Not,bVar"b'27"), 32206 Bop(And,bVar"b'24", 32207 Bop(And,Mop(Not,bVar"b'23"), 32208 Bop(And,Mop(Not,bVar"b'21"), 32209 Mop(Not,bVar"b'20"))))), 32210 Let(Var("Rd",F4), 32211 Mop(Cast F4, 32212 LL[bVar"b'15",bVar"b'14", 32213 bVar"b'13",bVar"b'12"]), 32214 MB(Call 32215 ("HaveThumb2", 32216 ATy(qTy,PTy(bTy,qTy)),LU), 32217 Close 32218 (bVar"v", 32219 MB(MB(MU(TP[Var("cond",F4), 32220 bVar"v"],qTy), 32221 Close 32222 (Var("v",PTy(F4,bTy)), 32223 Call 32224 ("Take", 32225 ATy(qTy,PTy(bTy,qTy)), 32226 Var("v",PTy(F4,bTy))))), 32227 Close 32228 (bVar"b", 32229 ITE(bVar"b", 32230 MB(ITE(EQ(Var("Rd",F4), 32231 LW(15,4)), 32232 Call 32233 ("DECODE_UNPREDICTABLE", 32234 ATy(qTy, 32235 PTy(uTy, 32236 qTy)), 32237 TP[Var("mc", 32238 CTy"MachineCode"), 32239 LS 32240 "MoveTopHalfword"]), 32241 MU(LU,qTy)), 32242 Close 32243 (AVar uTy, 32244 MU(Call 32245 ("Data", 32246 CTy"instruction", 32247 Call 32248 ("MoveHalfword", 32249 CTy"Data", 32250 TP[EQ(Mop(Cast 32251 F1, 32252 LL[bVar"b'22"]), 32253 LW(1, 32254 1)), 32255 Var("Rd", 32256 F4), 32257 CC[Mop(Cast 32258 F4, 32259 LL[bVar"b'19", 32260 bVar"b'18", 32261 bVar"b'17", 32262 bVar"b'16"]), 32263 Mop(Cast 32264 (FTy 12), 32265 LL[bVar"b'11", 32266 bVar"b'10", 32267 bVar"b'9", 32268 bVar"b'8", 32269 bVar"b'7", 32270 bVar"b'6", 32271 bVar"b'5", 32272 bVar"b'4", 32273 bVar"b'3", 32274 bVar"b'2", 32275 bVar"b'1", 32276 bVar"b'0"])]])), 32277 qTy))), 32278 Call 32279 ("Skip", 32280 ATy(qTy, 32281 PTy(CTy"instruction", 32282 qTy)),LU)))))))), 32283 (Bop(And,Mop(Not,bVar"b'27"), 32284 Bop(And,bVar"b'24", 32285 Bop(And,Mop(Not,bVar"b'23"), 32286 Bop(And,Mop(Not,bVar"b'22"), 32287 Bop(And,bVar"b'21", 32288 Bop(And, 32289 Mop(Not,bVar"b'20"), 32290 Bop(And, 32291 Mop(Not, 32292 bVar"b'19"), 32293 Bop(And, 32294 Mop(Not, 32295 bVar"b'18"), 32296 Bop(And, 32297 Mop(Not, 32298 bVar"b'17"), 32299 Mop(Not, 32300 bVar"b'16")))))))))), 32301 Call 32302 ("DecodeHint", 32303 ATy(qTy,PTy(CTy"instruction",qTy)), 32304 TP[Var("cond",F4), 32305 Mop(Cast F8, 32306 LL[bVar"b'7",bVar"b'6",bVar"b'5", 32307 bVar"b'4",bVar"b'3",bVar"b'2", 32308 bVar"b'1",bVar"b'0"])])), 32309 (Bop(And,Mop(Not,bVar"b'27"), 32310 Bop(And,bVar"b'24", 32311 Bop(And,Mop(Not,bVar"b'23"), 32312 Bop(And,bVar"b'21", 32313 Mop(Not,bVar"b'20"))))), 32314 Let(Var("mask",F4), 32315 Mop(Cast F4, 32316 LL[bVar"b'19",bVar"b'18", 32317 bVar"b'17",bVar"b'16"]), 32318 MB(Call 32319 ("Take",ATy(qTy,PTy(bTy,qTy)), 32320 TP[Var("cond",F4),LT]), 32321 Close 32322 (bVar"b", 32323 ITE(bVar"b", 32324 MB(ITE(EQ(Var("mask",F4), 32325 LW(0,4)), 32326 Call 32327 ("DECODE_UNPREDICTABLE", 32328 ATy(qTy, 32329 PTy(uTy,qTy)), 32330 TP[Var("mc", 32331 CTy"MachineCode"), 32332 LS 32333 "MoveToSpecialFromImmediate"]), 32334 MU(LU,qTy)), 32335 Close 32336 (AVar uTy, 32337 MB(Call 32338 ("ARMExpandImm", 32339 ATy(qTy, 32340 PTy(F32,qTy)), 32341 Mop(Cast(FTy 12), 32342 LL[bVar"b'11", 32343 bVar"b'10", 32344 bVar"b'9", 32345 bVar"b'8", 32346 bVar"b'7", 32347 bVar"b'6", 32348 bVar"b'5", 32349 bVar"b'4", 32350 bVar"b'3", 32351 bVar"b'2", 32352 bVar"b'1", 32353 bVar"b'0"])), 32354 Close 32355 (Var("imm32",F32), 32356 MU(Call 32357 ("System", 32358 CTy"instruction", 32359 Call 32360 ("MoveToSpecialFromImmediate", 32361 CTy"System", 32362 TP[EQ(Mop(Cast 32363 F1, 32364 LL[bVar"b'22"]), 32365 LW(1, 32366 1)), 32367 Var("imm32", 32368 F32), 32369 Var("mask", 32370 F4)])), 32371 qTy))))), 32372 Call 32373 ("Skip", 32374 ATy(qTy, 32375 PTy(CTy"instruction", 32376 qTy)),LU)))))), 32377 (Mop(Not,bVar"b'27"), 32378 Let(Var("imm12",FTy 12), 32379 Mop(Cast(FTy 12), 32380 LL[bVar"b'11",bVar"b'10",bVar"b'9", 32381 bVar"b'8",bVar"b'7",bVar"b'6", 32382 bVar"b'5",bVar"b'4",bVar"b'3", 32383 bVar"b'2",bVar"b'1",bVar"b'0"]), 32384 Let(Var("Rd",F4), 32385 Mop(Cast F4, 32386 LL[bVar"b'15",bVar"b'14", 32387 bVar"b'13",bVar"b'12"]), 32388 Let(Var("Rn",F4), 32389 Mop(Cast F4, 32390 LL[bVar"b'19",bVar"b'18", 32391 bVar"b'17",bVar"b'16"]), 32392 Let(Var("opc",F4), 32393 Mop(Cast F4, 32394 LL[bVar"b'24", 32395 bVar"b'23", 32396 bVar"b'22", 32397 bVar"b'21"]), 32398 MB(Call 32399 ("Take", 32400 ATy(qTy,PTy(bTy,qTy)), 32401 TP[Var("cond",F4),LT]), 32402 Close 32403 (bVar"b", 32404 ITE(bVar"b", 32405 MU(Let(bVar"setflags", 32406 EQ(Mop(Cast 32407 F1, 32408 LL[bVar"b'20"]), 32409 LW(1,1)), 32410 Let(TP[bVar"b'3", 32411 bVar"b'2", 32412 bVar"b'1", 32413 bVar"b'0"], 32414 BL(4, 32415 Var("opc", 32416 F4)), 32417 ITE(bVar"b'3", 32418 ITB([(Bop(And, 32419 bVar"b'2", 32420 bVar"b'0"), 32421 Call 32422 ("Data", 32423 CTy"instruction", 32424 Call 32425 ("Move", 32426 CTy"Data", 32427 TP[bVar"setflags", 32428 Mop(Cast 32429 bTy, 32430 Mop(Cast 32431 F1, 32432 LL[bVar"b'1"])), 32433 Var("Rd", 32434 F4), 32435 Var("imm12", 32436 FTy 12)]))), 32437 (Mop(Not, 32438 bVar"b'2"), 32439 Call 32440 ("Data", 32441 CTy"instruction", 32442 Call 32443 ("TestCompareImmediate", 32444 CTy"Data", 32445 TP[Mop(Cast 32446 (FTy 2), 32447 LL[bVar"b'1", 32448 bVar"b'0"]), 32449 Var("Rn", 32450 F4), 32451 Var("imm12", 32452 FTy 12)])))], 32453 Call 32454 ("Data", 32455 CTy"instruction", 32456 Call 32457 ("ArithLogicImmediate", 32458 CTy"Data", 32459 TP[Var("opc", 32460 F4), 32461 bVar"setflags", 32462 Var("Rd", 32463 F4), 32464 Var("Rn", 32465 F4), 32466 Var("imm12", 32467 FTy 12)]))), 32468 Call 32469 ("Data", 32470 CTy"instruction", 32471 Call 32472 ("ArithLogicImmediate", 32473 CTy"Data", 32474 TP[Var("opc", 32475 F4), 32476 bVar"setflags", 32477 Var("Rd", 32478 F4), 32479 Var("Rn", 32480 F4), 32481 Var("imm12", 32482 FTy 12)]))))), 32483 qTy), 32484 Call 32485 ("Skip", 32486 ATy(qTy, 32487 PTy(CTy"instruction", 32488 qTy)), 32489 LU))))))))), 32490 (Bop(And,bVar"b'27",Mop(Not,bVar"b'24")), 32491 MB(Call 32492 ("Take",ATy(qTy,PTy(bTy,qTy)), 32493 TP[Var("cond",F4),LT]), 32494 Close 32495 (bVar"b", 32496 ITE(bVar"b", 32497 MU(Call 32498 ("Branch",CTy"instruction", 32499 Call 32500 ("BranchTarget", 32501 CTy"Branch", 32502 Mop(SE F32, 32503 CC[Mop(Cast(FTy 24), 32504 LL[bVar"b'23", 32505 bVar"b'22", 32506 bVar"b'21", 32507 bVar"b'20", 32508 bVar"b'19", 32509 bVar"b'18", 32510 bVar"b'17", 32511 bVar"b'16", 32512 bVar"b'15", 32513 bVar"b'14", 32514 bVar"b'13", 32515 bVar"b'12", 32516 bVar"b'11", 32517 bVar"b'10", 32518 bVar"b'9", 32519 bVar"b'8", 32520 bVar"b'7", 32521 bVar"b'6", 32522 bVar"b'5", 32523 bVar"b'4", 32524 bVar"b'3", 32525 bVar"b'2", 32526 bVar"b'1", 32527 bVar"b'0"]), 32528 LW(0,2)]))),qTy), 32529 Call 32530 ("Skip", 32531 ATy(qTy, 32532 PTy(CTy"instruction",qTy)), 32533 LU))))), 32534 (Bop(And,bVar"b'27",bVar"b'24"), 32535 MB(Call 32536 ("Take",ATy(qTy,PTy(bTy,qTy)), 32537 TP[Var("cond",F4),LT]), 32538 Close 32539 (bVar"b", 32540 ITE(bVar"b", 32541 MU(Call 32542 ("Branch",CTy"instruction", 32543 Call 32544 ("BranchLinkExchangeImmediate", 32545 CTy"Branch", 32546 TP[LC("InstrSet_ARM", 32547 CTy"InstrSet"), 32548 Mop(SE F32, 32549 CC[Mop(Cast 32550 (FTy 24), 32551 LL[bVar"b'23", 32552 bVar"b'22", 32553 bVar"b'21", 32554 bVar"b'20", 32555 bVar"b'19", 32556 bVar"b'18", 32557 bVar"b'17", 32558 bVar"b'16", 32559 bVar"b'15", 32560 bVar"b'14", 32561 bVar"b'13", 32562 bVar"b'12", 32563 bVar"b'11", 32564 bVar"b'10", 32565 bVar"b'9", 32566 bVar"b'8", 32567 bVar"b'7", 32568 bVar"b'6", 32569 bVar"b'5", 32570 bVar"b'4", 32571 bVar"b'3", 32572 bVar"b'2", 32573 bVar"b'1", 32574 bVar"b'0"]), 32575 LW(0,2)])])), 32576 qTy), 32577 Call 32578 ("Skip", 32579 ATy(qTy, 32580 PTy(CTy"instruction",qTy)), 32581 LU)))))], 32582 Call 32583 ("UndefinedARM", 32584 ATy(qTy,PTy(CTy"instruction",qTy)), 32585 Var("cond",F4)))), 32586 (bVar"b'27", 32587 ITE(Mop(Not,bVar"b'26"), 32588 ITB([(Bop(And,bVar"b'22",Mop(Not,bVar"b'20")), 32589 Let(Var("registers",F16), 32590 Mop(Cast F16, 32591 LL[bVar"b'15",bVar"b'14", 32592 bVar"b'13",bVar"b'12", 32593 bVar"b'11",bVar"b'10", 32594 bVar"b'9",bVar"b'8", 32595 bVar"b'7",bVar"b'6", 32596 bVar"b'5",bVar"b'4", 32597 bVar"b'3",bVar"b'2", 32598 bVar"b'1",bVar"b'0"]), 32599 Let(Var("Rn",F4), 32600 Mop(Cast F4, 32601 LL[bVar"b'19",bVar"b'18", 32602 bVar"b'17",bVar"b'16"]), 32603 Let(Var("U",F1), 32604 Mop(Cast F1,LL[bVar"b'23"]), 32605 MB(Call 32606 ("Take", 32607 ATy(qTy,PTy(bTy,qTy)), 32608 TP[Var("cond",F4),LT]), 32609 Close 32610 (bVar"b", 32611 ITE(bVar"b", 32612 MB(Call 32613 ("BitCount", 32614 ATy(qTy, 32615 PTy(nTy, 32616 qTy)), 32617 Var("registers", 32618 F16)), 32619 Close 32620 (nVar"v", 32621 MB(MB(MB(MU(Bop(Lt, 32622 nVar"v", 32623 LN 32624 1), 32625 qTy), 32626 Close 32627 (bVar"v", 32628 MU(Bop(Or, 32629 EQ(Var("Rn", 32630 F4), 32631 LW(15, 32632 4)), 32633 bVar"v"), 32634 qTy))), 32635 Close 32636 (bVar"b", 32637 ITE(bVar"b", 32638 Call 32639 ("DECODE_UNPREDICTABLE", 32640 ATy(qTy, 32641 PTy(uTy, 32642 qTy)), 32643 TP[Var("mc", 32644 CTy"MachineCode"), 32645 LS 32646 "StoreMultipleUserRegisters"]), 32647 MU(LU, 32648 qTy)))), 32649 Close 32650 (AVar 32651 uTy, 32652 MU(Call 32653 ("Store", 32654 CTy"instruction", 32655 Call 32656 ("StoreMultipleUserRegisters", 32657 CTy"Store", 32658 TP[EQ(Var("U", 32659 F1), 32660 LW(1, 32661 1)), 32662 EQ(Mop(Cast 32663 F1, 32664 LL[bVar"b'24"]), 32665 Var("U", 32666 F1)), 32667 Var("Rn", 32668 F4), 32669 Var("registers", 32670 F16)])), 32671 qTy))))), 32672 Call 32673 ("Skip", 32674 ATy(qTy, 32675 PTy(CTy"instruction", 32676 qTy)), 32677 LU)))))))), 32678 (Bop(And,Mop(Not,bVar"b'22"), 32679 Mop(Not,bVar"b'20")), 32680 Let(Var("registers",F16), 32681 Mop(Cast F16, 32682 LL[bVar"b'15",bVar"b'14", 32683 bVar"b'13",bVar"b'12", 32684 bVar"b'11",bVar"b'10", 32685 bVar"b'9",bVar"b'8", 32686 bVar"b'7",bVar"b'6", 32687 bVar"b'5",bVar"b'4", 32688 bVar"b'3",bVar"b'2", 32689 bVar"b'1",bVar"b'0"]), 32690 Let(Var("Rn",F4), 32691 Mop(Cast F4, 32692 LL[bVar"b'19",bVar"b'18", 32693 bVar"b'17",bVar"b'16"]), 32694 MB(Call 32695 ("Take", 32696 ATy(qTy,PTy(bTy,qTy)), 32697 TP[Var("cond",F4),LT]), 32698 Close 32699 (bVar"b", 32700 ITE(bVar"b", 32701 MB(Call 32702 ("BitCount", 32703 ATy(qTy, 32704 PTy(nTy,qTy)), 32705 Var("registers", 32706 F16)), 32707 Close 32708 (nVar"v", 32709 MB(MB(MB(MU(Bop(Lt, 32710 nVar"v", 32711 LN 32712 1), 32713 qTy), 32714 Close 32715 (bVar"v", 32716 MU(Bop(Or, 32717 EQ(Var("Rn", 32718 F4), 32719 LW(15, 32720 4)), 32721 bVar"v"), 32722 qTy))), 32723 Close 32724 (bVar"b", 32725 ITE(bVar"b", 32726 Call 32727 ("DECODE_UNPREDICTABLE", 32728 ATy(qTy, 32729 PTy(uTy, 32730 qTy)), 32731 TP[Var("mc", 32732 CTy"MachineCode"), 32733 LS 32734 "StoreMultiple"]), 32735 MU(LU, 32736 qTy)))), 32737 Close 32738 (AVar uTy, 32739 MU(Call 32740 ("Store", 32741 CTy"instruction", 32742 Call 32743 ("StoreMultiple", 32744 CTy"Store", 32745 TP[EQ(Mop(Cast 32746 F1, 32747 LL[bVar"b'23"]), 32748 LW(1, 32749 1)), 32750 EQ(Mop(Cast 32751 F1, 32752 LL[bVar"b'24"]), 32753 LW(1, 32754 1)), 32755 EQ(Mop(Cast 32756 F1, 32757 LL[bVar"b'21"]), 32758 LW(1, 32759 1)), 32760 Var("Rn", 32761 F4), 32762 Var("registers", 32763 F16)])), 32764 qTy))))), 32765 Call 32766 ("Skip", 32767 ATy(qTy, 32768 PTy(CTy"instruction", 32769 qTy)),LU))))))), 32770 (Bop(And,bVar"b'22", 32771 Bop(And,bVar"b'20", 32772 Mop(Not,bVar"b'15"))), 32773 Let(Var("registers",FTy 15), 32774 Mop(Cast(FTy 15), 32775 LL[bVar"b'14",bVar"b'13", 32776 bVar"b'12",bVar"b'11", 32777 bVar"b'10",bVar"b'9", 32778 bVar"b'8",bVar"b'7", 32779 bVar"b'6",bVar"b'5", 32780 bVar"b'4",bVar"b'3", 32781 bVar"b'2",bVar"b'1", 32782 bVar"b'0"]), 32783 Let(Var("Rn",F4), 32784 Mop(Cast F4, 32785 LL[bVar"b'19",bVar"b'18", 32786 bVar"b'17",bVar"b'16"]), 32787 Let(Var("U",F1), 32788 Mop(Cast F1,LL[bVar"b'23"]), 32789 MB(Call 32790 ("Take", 32791 ATy(qTy,PTy(bTy,qTy)), 32792 TP[Var("cond",F4),LT]), 32793 Close 32794 (bVar"b", 32795 ITE(bVar"b", 32796 MB(Call 32797 ("BitCount", 32798 ATy(qTy, 32799 PTy(nTy, 32800 qTy)), 32801 Var("registers", 32802 FTy 15)), 32803 Close 32804 (nVar"v", 32805 MB(MB(MB(MU(Bop(Lt, 32806 nVar"v", 32807 LN 32808 1), 32809 qTy), 32810 Close 32811 (bVar"v", 32812 MU(Bop(Or, 32813 EQ(Var("Rn", 32814 F4), 32815 LW(15, 32816 4)), 32817 bVar"v"), 32818 qTy))), 32819 Close 32820 (bVar"b", 32821 ITE(bVar"b", 32822 Call 32823 ("DECODE_UNPREDICTABLE", 32824 ATy(qTy, 32825 PTy(uTy, 32826 qTy)), 32827 TP[Var("mc", 32828 CTy"MachineCode"), 32829 LS 32830 "LoadMultipleUserRegisters"]), 32831 MU(LU, 32832 qTy)))), 32833 Close 32834 (AVar 32835 uTy, 32836 MU(Call 32837 ("Load", 32838 CTy"instruction", 32839 Call 32840 ("LoadMultipleUserRegisters", 32841 CTy"Load", 32842 TP[EQ(Var("U", 32843 F1), 32844 LW(1, 32845 1)), 32846 EQ(Mop(Cast 32847 F1, 32848 LL[bVar"b'24"]), 32849 Var("U", 32850 F1)), 32851 Var("Rn", 32852 F4), 32853 Var("registers", 32854 FTy 15)])), 32855 qTy))))), 32856 Call 32857 ("Skip", 32858 ATy(qTy, 32859 PTy(CTy"instruction", 32860 qTy)), 32861 LU)))))))), 32862 (Bop(And,bVar"b'22", 32863 Bop(And,bVar"b'20",bVar"b'15")), 32864 Let(Var("registers",FTy 15), 32865 Mop(Cast(FTy 15), 32866 LL[bVar"b'14",bVar"b'13", 32867 bVar"b'12",bVar"b'11", 32868 bVar"b'10",bVar"b'9", 32869 bVar"b'8",bVar"b'7", 32870 bVar"b'6",bVar"b'5", 32871 bVar"b'4",bVar"b'3", 32872 bVar"b'2",bVar"b'1", 32873 bVar"b'0"]), 32874 Let(Var("Rn",F4), 32875 Mop(Cast F4, 32876 LL[bVar"b'19",bVar"b'18", 32877 bVar"b'17",bVar"b'16"]), 32878 Let(Var("U",F1), 32879 Mop(Cast F1,LL[bVar"b'23"]), 32880 MB(Call 32881 ("Take", 32882 ATy(qTy,PTy(bTy,qTy)), 32883 TP[Var("cond",F4),LT]), 32884 Close 32885 (bVar"b", 32886 ITE(bVar"b", 32887 Let(bVar"wback", 32888 EQ(Mop(Cast 32889 F1, 32890 LL[bVar"b'21"]), 32891 LW(1,1)), 32892 MB(Call 32893 ("ArchVersion", 32894 ATy(qTy, 32895 PTy(nTy, 32896 qTy)), 32897 LU), 32898 Close 32899 (nVar"v", 32900 MB(MB(MB(MB(MU(Bop(Ge, 32901 nVar"v", 32902 LN 32903 7), 32904 qTy), 32905 Close 32906 (bVar"v", 32907 MU(Bop(And, 32908 Bop(And, 32909 bVar"wback", 32910 Bop(Bit, 32911 Var("registers", 32912 FTy 15), 32913 Mop(Cast 32914 nTy, 32915 Var("Rn", 32916 F4)))), 32917 bVar"v"), 32918 qTy))), 32919 Close 32920 (bVar"v", 32921 MU(Bop(Or, 32922 EQ(Var("Rn", 32923 F4), 32924 LW(15, 32925 4)), 32926 bVar"v"), 32927 qTy))), 32928 Close 32929 (bVar"b", 32930 ITE(bVar"b", 32931 Call 32932 ("DECODE_UNPREDICTABLE", 32933 ATy(qTy, 32934 PTy(uTy, 32935 qTy)), 32936 TP[Var("mc", 32937 CTy"MachineCode"), 32938 LS 32939 "LoadMultipleExceptionReturn"]), 32940 MU(LU, 32941 qTy)))), 32942 Close 32943 (AVar 32944 uTy, 32945 MU(Call 32946 ("Load", 32947 CTy"instruction", 32948 Call 32949 ("LoadMultipleExceptionReturn", 32950 CTy"Load", 32951 TP[EQ(Var("U", 32952 F1), 32953 LW(1, 32954 1)), 32955 EQ(Mop(Cast 32956 F1, 32957 LL[bVar"b'24"]), 32958 Var("U", 32959 F1)), 32960 bVar"wback", 32961 Var("Rn", 32962 F4), 32963 Var("registers", 32964 FTy 15)])), 32965 qTy)))))), 32966 Call 32967 ("Skip", 32968 ATy(qTy, 32969 PTy(CTy"instruction", 32970 qTy)), 32971 LU)))))))), 32972 (Bop(And,Mop(Not,bVar"b'22"),bVar"b'20"), 32973 Let(Var("registers",F16), 32974 Mop(Cast F16, 32975 LL[bVar"b'15",bVar"b'14", 32976 bVar"b'13",bVar"b'12", 32977 bVar"b'11",bVar"b'10", 32978 bVar"b'9",bVar"b'8", 32979 bVar"b'7",bVar"b'6", 32980 bVar"b'5",bVar"b'4", 32981 bVar"b'3",bVar"b'2", 32982 bVar"b'1",bVar"b'0"]), 32983 Let(Var("Rn",F4), 32984 Mop(Cast F4, 32985 LL[bVar"b'19",bVar"b'18", 32986 bVar"b'17",bVar"b'16"]), 32987 MB(Call 32988 ("Take", 32989 ATy(qTy,PTy(bTy,qTy)), 32990 TP[Var("cond",F4),LT]), 32991 Close 32992 (bVar"b", 32993 ITE(bVar"b", 32994 Let(bVar"wback", 32995 EQ(Mop(Cast F1, 32996 LL[bVar"b'21"]), 32997 LW(1,1)), 32998 MB(Call 32999 ("BitCount", 33000 ATy(qTy, 33001 PTy(nTy, 33002 qTy)), 33003 Var("registers", 33004 F16)), 33005 Close 33006 (nVar"v", 33007 MB(MB(MB(MB(MU(Bop(Lt, 33008 nVar"v", 33009 LN 33010 1), 33011 qTy), 33012 Close 33013 (bVar"v", 33014 MU(Bop(Or, 33015 EQ(Var("Rn", 33016 F4), 33017 LW(15, 33018 4)), 33019 bVar"v"), 33020 qTy))), 33021 Close 33022 (bVar"b", 33023 ITE(bVar"b", 33024 MU(LT, 33025 qTy), 33026 MB(Call 33027 ("ArchVersion", 33028 ATy(qTy, 33029 PTy(nTy, 33030 qTy)), 33031 LU), 33032 Close 33033 (nVar"v", 33034 MB(MU(Bop(Ge, 33035 nVar"v", 33036 LN 33037 7), 33038 qTy), 33039 Close 33040 (bVar"v", 33041 MU(Bop(And, 33042 Bop(And, 33043 bVar"wback", 33044 Bop(Bit, 33045 Var("registers", 33046 F16), 33047 Mop(Cast 33048 nTy, 33049 Var("Rn", 33050 F4)))), 33051 bVar"v"), 33052 qTy)))))))), 33053 Close 33054 (bVar"b", 33055 ITE(bVar"b", 33056 Call 33057 ("DECODE_UNPREDICTABLE", 33058 ATy(qTy, 33059 PTy(uTy, 33060 qTy)), 33061 TP[Var("mc", 33062 CTy"MachineCode"), 33063 LS 33064 "LoadMultiple"]), 33065 MU(LU, 33066 qTy)))), 33067 Close 33068 (AVar 33069 uTy, 33070 MU(Call 33071 ("Load", 33072 CTy"instruction", 33073 Call 33074 ("LoadMultiple", 33075 CTy"Load", 33076 TP[EQ(Mop(Cast 33077 F1, 33078 LL[bVar"b'23"]), 33079 LW(1, 33080 1)), 33081 EQ(Mop(Cast 33082 F1, 33083 LL[bVar"b'24"]), 33084 LW(1, 33085 1)), 33086 bVar"wback", 33087 Var("Rn", 33088 F4), 33089 Var("registers", 33090 F16)])), 33091 qTy)))))), 33092 Call 33093 ("Skip", 33094 ATy(qTy, 33095 PTy(CTy"instruction", 33096 qTy)),LU)))))))], 33097 Call 33098 ("UndefinedARM", 33099 ATy(qTy,PTy(CTy"instruction",qTy)), 33100 Var("cond",F4))), 33101 Call 33102 ("UndefinedARM", 33103 ATy(qTy,PTy(CTy"instruction",qTy)), 33104 Var("cond",F4)))), 33105 (bVar"b'26", 33106 ITB([(Bop(And,Mop(Not,bVar"b'24"), 33107 Bop(And,bVar"b'21",Mop(Not,bVar"b'20"))), 33108 Let(Var("Rt",F4), 33109 Mop(Cast F4, 33110 LL[bVar"b'15",bVar"b'14", 33111 bVar"b'13",bVar"b'12"]), 33112 Let(Var("Rn",F4), 33113 Mop(Cast F4, 33114 LL[bVar"b'19",bVar"b'18", 33115 bVar"b'17",bVar"b'16"]), 33116 Let(Var("B",F1), 33117 Mop(Cast F1,LL[bVar"b'22"]), 33118 MB(Call 33119 ("Take", 33120 ATy(qTy,PTy(bTy,qTy)), 33121 TP[Var("cond",F4),LT]), 33122 Close 33123 (bVar"b", 33124 ITE(bVar"b", 33125 MB(ITE(Bop(Or, 33126 Bop(Or, 33127 Bop(And, 33128 EQ(Var("B", 33129 F1), 33130 LW(1, 33131 1)), 33132 EQ(Var("Rt", 33133 F4), 33134 LW(15, 33135 4))), 33136 EQ(Var("Rn", 33137 F4), 33138 LW(15, 33139 4))), 33140 EQ(Var("Rn", 33141 F4), 33142 Var("Rt", 33143 F4))), 33144 Call 33145 ("DECODE_UNPREDICTABLE", 33146 ATy(qTy, 33147 PTy(uTy, 33148 qTy)), 33149 TP[Var("mc", 33150 CTy"MachineCode"), 33151 LS 33152 "StoreUnprivileged (immediate)"]), 33153 MU(LU,qTy)), 33154 Close 33155 (AVar uTy, 33156 MU(Let(bVar"add", 33157 EQ(Mop(Cast 33158 F1, 33159 LL[bVar"b'23"]), 33160 LW(1, 33161 1)), 33162 Let(bVar"postindex", 33163 LT, 33164 Let(Var("m", 33165 CTy"offset1"), 33166 Call 33167 ("immediate_form1", 33168 CTy"offset1", 33169 Mop(Cast 33170 F32, 33171 Mop(Cast 33172 (FTy 12), 33173 LL[bVar"b'11", 33174 bVar"b'10", 33175 bVar"b'9", 33176 bVar"b'8", 33177 bVar"b'7", 33178 bVar"b'6", 33179 bVar"b'5", 33180 bVar"b'4", 33181 bVar"b'3", 33182 bVar"b'2", 33183 bVar"b'1", 33184 bVar"b'0"]))), 33185 ITE(EQ(Var("B", 33186 F1), 33187 LW(1, 33188 1)), 33189 Call 33190 ("Store", 33191 CTy"instruction", 33192 Call 33193 ("StoreByteUnprivileged", 33194 CTy"Store", 33195 TP[bVar"add", 33196 bVar"postindex", 33197 Var("Rt", 33198 F4), 33199 Var("Rn", 33200 F4), 33201 Var("m", 33202 CTy"offset1")])), 33203 Call 33204 ("Store", 33205 CTy"instruction", 33206 Call 33207 ("StoreUnprivileged", 33208 CTy"Store", 33209 TP[bVar"add", 33210 bVar"postindex", 33211 Var("Rt", 33212 F4), 33213 Var("Rn", 33214 F4), 33215 Var("m", 33216 CTy"offset1")])))))), 33217 qTy))), 33218 Call 33219 ("Skip", 33220 ATy(qTy, 33221 PTy(CTy"instruction", 33222 qTy)),LU)))))))), 33223 (Mop(Not,bVar"b'20"), 33224 Let(Var("Rt",F4), 33225 Mop(Cast F4, 33226 LL[bVar"b'15",bVar"b'14", 33227 bVar"b'13",bVar"b'12"]), 33228 Let(Var("Rn",F4), 33229 Mop(Cast F4, 33230 LL[bVar"b'19",bVar"b'18", 33231 bVar"b'17",bVar"b'16"]), 33232 Let(Var("B",F1), 33233 Mop(Cast F1,LL[bVar"b'22"]), 33234 Let(Var("P",F1), 33235 Mop(Cast F1,LL[bVar"b'24"]), 33236 MB(Call 33237 ("Take", 33238 ATy(qTy,PTy(bTy,qTy)), 33239 TP[Var("cond",F4),LT]), 33240 Close 33241 (bVar"b", 33242 ITE(bVar"b", 33243 Let(bVar"wback", 33244 Bop(Or, 33245 EQ(Var("P", 33246 F1), 33247 LW(0,1)), 33248 EQ(Mop(Cast 33249 F1, 33250 LL[bVar"b'21"]), 33251 LW(1,1))), 33252 MB(ITE(Bop(Or, 33253 Bop(And, 33254 EQ(Var("B", 33255 F1), 33256 LW(1, 33257 1)), 33258 EQ(Var("Rt", 33259 F4), 33260 LW(15, 33261 4))), 33262 Bop(And, 33263 bVar"wback", 33264 Bop(Or, 33265 EQ(Var("Rn", 33266 F4), 33267 LW(15, 33268 4)), 33269 EQ(Var("Rn", 33270 F4), 33271 Var("Rt", 33272 F4))))), 33273 Call 33274 ("DECODE_UNPREDICTABLE", 33275 ATy(qTy, 33276 PTy(uTy, 33277 qTy)), 33278 TP[Var("mc", 33279 CTy"MachineCode"), 33280 LS 33281 "Store (immediate)"]), 33282 MU(LU, 33283 qTy)), 33284 Close 33285 (AVar 33286 uTy, 33287 MU(Let(bVar"add", 33288 EQ(Mop(Cast 33289 F1, 33290 LL[bVar"b'23"]), 33291 LW(1, 33292 1)), 33293 Let(bVar"index", 33294 EQ(Var("P", 33295 F1), 33296 LW(1, 33297 1)), 33298 Let(Var("m", 33299 CTy"offset1"), 33300 Call 33301 ("immediate_form1", 33302 CTy"offset1", 33303 Mop(Cast 33304 F32, 33305 Mop(Cast 33306 (FTy 12), 33307 LL[bVar"b'11", 33308 bVar"b'10", 33309 bVar"b'9", 33310 bVar"b'8", 33311 bVar"b'7", 33312 bVar"b'6", 33313 bVar"b'5", 33314 bVar"b'4", 33315 bVar"b'3", 33316 bVar"b'2", 33317 bVar"b'1", 33318 bVar"b'0"]))), 33319 ITE(EQ(Var("B", 33320 F1), 33321 LW(1, 33322 1)), 33323 Call 33324 ("Store", 33325 CTy"instruction", 33326 Call 33327 ("StoreByte", 33328 CTy"Store", 33329 TP[bVar"add", 33330 bVar"index", 33331 bVar"wback", 33332 Var("Rt", 33333 F4), 33334 Var("Rn", 33335 F4), 33336 Var("m", 33337 CTy"offset1")])), 33338 Call 33339 ("Store", 33340 CTy"instruction", 33341 Call 33342 ("StoreWord", 33343 CTy"Store", 33344 TP[bVar"add", 33345 bVar"index", 33346 bVar"wback", 33347 Var("Rt", 33348 F4), 33349 Var("Rn", 33350 F4), 33351 Var("m", 33352 CTy"offset1")])))))), 33353 qTy)))), 33354 Call 33355 ("Skip", 33356 ATy(qTy, 33357 PTy(CTy"instruction", 33358 qTy)), 33359 LU))))))))), 33360 (Bop(And,Mop(Not,bVar"b'24"), 33361 Bop(And,bVar"b'21",bVar"b'20")), 33362 Let(Var("Rt",F4), 33363 Mop(Cast F4, 33364 LL[bVar"b'15",bVar"b'14", 33365 bVar"b'13",bVar"b'12"]), 33366 Let(Var("Rn",F4), 33367 Mop(Cast F4, 33368 LL[bVar"b'19",bVar"b'18", 33369 bVar"b'17",bVar"b'16"]), 33370 MB(Call 33371 ("Take",ATy(qTy,PTy(bTy,qTy)), 33372 TP[Var("cond",F4),LT]), 33373 Close 33374 (bVar"b", 33375 ITE(bVar"b", 33376 MB(ITE(Bop(Or, 33377 Bop(Or, 33378 EQ(Var("Rt", 33379 F4), 33380 LW(15,4)), 33381 EQ(Var("Rn", 33382 F4), 33383 LW(15,4))), 33384 EQ(Var("Rn",F4), 33385 Var("Rt",F4))), 33386 Call 33387 ("DECODE_UNPREDICTABLE", 33388 ATy(qTy, 33389 PTy(uTy,qTy)), 33390 TP[Var("mc", 33391 CTy"MachineCode"), 33392 LS 33393 "LoadUnprivileged (immediate)"]), 33394 MU(LU,qTy)), 33395 Close 33396 (AVar uTy, 33397 MU(Let(bVar"add", 33398 EQ(Mop(Cast 33399 F1, 33400 LL[bVar"b'23"]), 33401 LW(1,1)), 33402 Let(bVar"postindex", 33403 LT, 33404 Let(Var("m", 33405 CTy"offset1"), 33406 Call 33407 ("immediate_form1", 33408 CTy"offset1", 33409 Mop(Cast 33410 F32, 33411 Mop(Cast 33412 (FTy 12), 33413 LL[bVar"b'11", 33414 bVar"b'10", 33415 bVar"b'9", 33416 bVar"b'8", 33417 bVar"b'7", 33418 bVar"b'6", 33419 bVar"b'5", 33420 bVar"b'4", 33421 bVar"b'3", 33422 bVar"b'2", 33423 bVar"b'1", 33424 bVar"b'0"]))), 33425 ITE(EQ(Mop(Cast 33426 F1, 33427 LL[bVar"b'22"]), 33428 LW(1, 33429 1)), 33430 Call 33431 ("Load", 33432 CTy"instruction", 33433 Call 33434 ("LoadByteUnprivileged", 33435 CTy"Load", 33436 TP[bVar"add", 33437 bVar"postindex", 33438 Var("Rt", 33439 F4), 33440 Var("Rn", 33441 F4), 33442 Var("m", 33443 CTy"offset1")])), 33444 Call 33445 ("Load", 33446 CTy"instruction", 33447 Call 33448 ("LoadUnprivileged", 33449 CTy"Load", 33450 TP[bVar"add", 33451 bVar"postindex", 33452 Var("Rt", 33453 F4), 33454 Var("Rn", 33455 F4), 33456 Var("m", 33457 CTy"offset1")])))))), 33458 qTy))), 33459 Call 33460 ("Skip", 33461 ATy(qTy, 33462 PTy(CTy"instruction", 33463 qTy)),LU))))))), 33464 (Bop(And,bVar"b'20", 33465 Bop(And,bVar"b'19", 33466 Bop(And,bVar"b'18", 33467 Bop(And,bVar"b'17",bVar"b'16")))), 33468 Let(Var("Rt",F4), 33469 Mop(Cast F4, 33470 LL[bVar"b'15",bVar"b'14", 33471 bVar"b'13",bVar"b'12"]), 33472 Let(Var("B",F1), 33473 Mop(Cast F1,LL[bVar"b'22"]), 33474 MB(Call 33475 ("Take",ATy(qTy,PTy(bTy,qTy)), 33476 TP[Var("cond",F4),LT]), 33477 Close 33478 (bVar"b", 33479 ITE(bVar"b", 33480 MB(ITE(Bop(And, 33481 EQ(Var("B",F1), 33482 LW(1,1)), 33483 EQ(Var("Rt",F4), 33484 LW(15,4))), 33485 Call 33486 ("DECODE_UNPREDICTABLE", 33487 ATy(qTy, 33488 PTy(uTy,qTy)), 33489 TP[Var("mc", 33490 CTy"MachineCode"), 33491 LS 33492 "LoadByte (literal)"]), 33493 MU(LU,qTy)), 33494 Close 33495 (AVar uTy, 33496 MU(Let(bVar"add", 33497 EQ(Mop(Cast 33498 F1, 33499 LL[bVar"b'23"]), 33500 LW(1,1)), 33501 Let(Var("imm32", 33502 F32), 33503 Mop(Cast 33504 F32, 33505 Mop(Cast 33506 (FTy 12), 33507 LL[bVar"b'11", 33508 bVar"b'10", 33509 bVar"b'9", 33510 bVar"b'8", 33511 bVar"b'7", 33512 bVar"b'6", 33513 bVar"b'5", 33514 bVar"b'4", 33515 bVar"b'3", 33516 bVar"b'2", 33517 bVar"b'1", 33518 bVar"b'0"])), 33519 ITE(EQ(Var("B", 33520 F1), 33521 LW(1, 33522 1)), 33523 Call 33524 ("Load", 33525 CTy"instruction", 33526 Call 33527 ("LoadByteLiteral", 33528 CTy"Load", 33529 TP[LT, 33530 bVar"add", 33531 Var("Rt", 33532 F4), 33533 Var("imm32", 33534 F32)])), 33535 Call 33536 ("Load", 33537 CTy"instruction", 33538 Call 33539 ("LoadLiteral", 33540 CTy"Load", 33541 TP[bVar"add", 33542 Var("Rt", 33543 F4), 33544 Var("imm32", 33545 F32)]))))), 33546 qTy))), 33547 Call 33548 ("Skip", 33549 ATy(qTy, 33550 PTy(CTy"instruction", 33551 qTy)),LU))))))), 33552 (bVar"b'20", 33553 Let(Var("Rt",F4), 33554 Mop(Cast F4, 33555 LL[bVar"b'15",bVar"b'14", 33556 bVar"b'13",bVar"b'12"]), 33557 Let(Var("Rn",F4), 33558 Mop(Cast F4, 33559 LL[bVar"b'19",bVar"b'18", 33560 bVar"b'17",bVar"b'16"]), 33561 Let(Var("B",F1), 33562 Mop(Cast F1,LL[bVar"b'22"]), 33563 Let(Var("P",F1), 33564 Mop(Cast F1,LL[bVar"b'24"]), 33565 MB(Call 33566 ("Take", 33567 ATy(qTy,PTy(bTy,qTy)), 33568 TP[Var("cond",F4),LT]), 33569 Close 33570 (bVar"b", 33571 ITE(bVar"b", 33572 Let(bVar"wback", 33573 Bop(Or, 33574 EQ(Var("P", 33575 F1), 33576 LW(0,1)), 33577 EQ(Mop(Cast 33578 F1, 33579 LL[bVar"b'21"]), 33580 LW(1,1))), 33581 MB(ITE(Bop(Or, 33582 Bop(And, 33583 EQ(Var("B", 33584 F1), 33585 LW(1, 33586 1)), 33587 EQ(Var("Rt", 33588 F4), 33589 LW(15, 33590 4))), 33591 Bop(And, 33592 bVar"wback", 33593 EQ(Var("Rn", 33594 F4), 33595 Var("Rt", 33596 F4)))), 33597 Call 33598 ("DECODE_UNPREDICTABLE", 33599 ATy(qTy, 33600 PTy(uTy, 33601 qTy)), 33602 TP[Var("mc", 33603 CTy"MachineCode"), 33604 LS 33605 "LoadWord/Byte (immediate)"]), 33606 MU(LU, 33607 qTy)), 33608 Close 33609 (AVar 33610 uTy, 33611 MU(Let(bVar"add", 33612 EQ(Mop(Cast 33613 F1, 33614 LL[bVar"b'23"]), 33615 LW(1, 33616 1)), 33617 Let(bVar"index", 33618 EQ(Var("P", 33619 F1), 33620 LW(1, 33621 1)), 33622 Let(Var("m", 33623 CTy"offset1"), 33624 Call 33625 ("immediate_form1", 33626 CTy"offset1", 33627 Mop(Cast 33628 F32, 33629 Mop(Cast 33630 (FTy 12), 33631 LL[bVar"b'11", 33632 bVar"b'10", 33633 bVar"b'9", 33634 bVar"b'8", 33635 bVar"b'7", 33636 bVar"b'6", 33637 bVar"b'5", 33638 bVar"b'4", 33639 bVar"b'3", 33640 bVar"b'2", 33641 bVar"b'1", 33642 bVar"b'0"]))), 33643 ITE(EQ(Var("B", 33644 F1), 33645 LW(1, 33646 1)), 33647 Call 33648 ("Load", 33649 CTy"instruction", 33650 Call 33651 ("LoadByte", 33652 CTy"Load", 33653 TP[LT, 33654 bVar"add", 33655 bVar"index", 33656 bVar"wback", 33657 Var("Rt", 33658 F4), 33659 Var("Rn", 33660 F4), 33661 Var("m", 33662 CTy"offset1")])), 33663 Call 33664 ("Load", 33665 CTy"instruction", 33666 Call 33667 ("LoadWord", 33668 CTy"Load", 33669 TP[bVar"add", 33670 bVar"index", 33671 bVar"wback", 33672 Var("Rt", 33673 F4), 33674 Var("Rn", 33675 F4), 33676 Var("m", 33677 CTy"offset1")])))))), 33678 qTy)))), 33679 Call 33680 ("Skip", 33681 ATy(qTy, 33682 PTy(CTy"instruction", 33683 qTy)), 33684 LU)))))))))], 33685 Call 33686 ("UndefinedARM", 33687 ATy(qTy,PTy(CTy"instruction",qTy)), 33688 Var("cond",F4)))), 33689 (Bop(And,bVar"b'24", 33690 Bop(And,Mop(Not,bVar"b'23"), 33691 Bop(And,Mop(Not,bVar"b'21"), 33692 Bop(And,Mop(Not,bVar"b'20"), 33693 Bop(And,bVar"b'9", 33694 Bop(And,Mop(Not,bVar"b'7"), 33695 Bop(And, 33696 Mop(Not,bVar"b'6"), 33697 Bop(And, 33698 Mop(Not,bVar"b'5"), 33699 Mop(Not,bVar"b'4"))))))))), 33700 Let(Var("Rd",F4), 33701 Mop(Cast F4, 33702 LL[bVar"b'15",bVar"b'14",bVar"b'13", 33703 bVar"b'12"]), 33704 MB(Call 33705 ("HaveVirtExt",ATy(qTy,PTy(bTy,qTy)),LU), 33706 Close 33707 (bVar"v", 33708 MB(MB(MU(TP[Var("cond",F4),bVar"v"],qTy), 33709 Close 33710 (Var("v",PTy(F4,bTy)), 33711 Call 33712 ("Take", 33713 ATy(qTy,PTy(bTy,qTy)), 33714 Var("v",PTy(F4,bTy))))), 33715 Close 33716 (bVar"b", 33717 ITE(bVar"b", 33718 MB(ITE(EQ(Var("Rd",F4), 33719 LW(15,4)), 33720 Call 33721 ("DECODE_UNPREDICTABLE", 33722 ATy(qTy, 33723 PTy(uTy,qTy)), 33724 TP[Var("mc", 33725 CTy"MachineCode"), 33726 LS 33727 "MoveToRegisterFromBankedOrSpecial"]), 33728 MU(LU,qTy)), 33729 Close 33730 (AVar uTy, 33731 MU(Call 33732 ("System", 33733 CTy"instruction", 33734 Call 33735 ("MoveToRegisterFromBankedOrSpecial", 33736 CTy"System", 33737 TP[EQ(Mop(Cast 33738 F1, 33739 LL[bVar"b'22"]), 33740 LW(1,1)), 33741 CC[Mop(Cast 33742 F1, 33743 LL[bVar"b'8"]), 33744 Mop(Cast 33745 F4, 33746 LL[bVar"b'19", 33747 bVar"b'18", 33748 bVar"b'17", 33749 bVar"b'16"])], 33750 Var("Rd",F4)])), 33751 qTy))), 33752 Call 33753 ("Skip", 33754 ATy(qTy, 33755 PTy(CTy"instruction", 33756 qTy)),LU)))))))), 33757 (Bop(And,bVar"b'24", 33758 Bop(And,Mop(Not,bVar"b'23"), 33759 Bop(And,Mop(Not,bVar"b'21"), 33760 Bop(And,Mop(Not,bVar"b'20"), 33761 Bop(And,Mop(Not,bVar"b'9"), 33762 Bop(And,Mop(Not,bVar"b'7"), 33763 Bop(And, 33764 Mop(Not,bVar"b'6"), 33765 Bop(And, 33766 Mop(Not,bVar"b'5"), 33767 Mop(Not,bVar"b'4"))))))))), 33768 Let(Var("Rd",F4), 33769 Mop(Cast F4, 33770 LL[bVar"b'15",bVar"b'14",bVar"b'13", 33771 bVar"b'12"]), 33772 MB(Call 33773 ("Take",ATy(qTy,PTy(bTy,qTy)), 33774 TP[Var("cond",F4),LT]), 33775 Close 33776 (bVar"b", 33777 ITE(bVar"b", 33778 MB(ITE(EQ(Var("Rd",F4),LW(15,4)), 33779 Call 33780 ("DECODE_UNPREDICTABLE", 33781 ATy(qTy,PTy(uTy,qTy)), 33782 TP[Var("mc", 33783 CTy"MachineCode"), 33784 LS 33785 "MoveToRegisterFromSpecial"]), 33786 MU(LU,qTy)), 33787 Close 33788 (AVar uTy, 33789 MU(Call 33790 ("System", 33791 CTy"instruction", 33792 Call 33793 ("MoveToRegisterFromSpecial", 33794 CTy"System", 33795 TP[EQ(Mop(Cast F1, 33796 LL[bVar"b'22"]), 33797 LW(1,1)), 33798 Var("Rd",F4)])), 33799 qTy))), 33800 Call 33801 ("Skip", 33802 ATy(qTy, 33803 PTy(CTy"instruction",qTy)), 33804 LU)))))), 33805 (Bop(And,bVar"b'24", 33806 Bop(And,Mop(Not,bVar"b'23"), 33807 Bop(And,bVar"b'21", 33808 Bop(And,Mop(Not,bVar"b'20"), 33809 Bop(And,bVar"b'9", 33810 Bop(And,Mop(Not,bVar"b'7"), 33811 Bop(And, 33812 Mop(Not,bVar"b'6"), 33813 Bop(And, 33814 Mop(Not,bVar"b'5"), 33815 Mop(Not,bVar"b'4"))))))))), 33816 Let(Var("Rn",F4), 33817 Mop(Cast F4, 33818 LL[bVar"b'3",bVar"b'2",bVar"b'1", 33819 bVar"b'0"]), 33820 MB(Call 33821 ("HaveVirtExt",ATy(qTy,PTy(bTy,qTy)),LU), 33822 Close 33823 (bVar"v", 33824 MB(MB(MU(TP[Var("cond",F4),bVar"v"],qTy), 33825 Close 33826 (Var("v",PTy(F4,bTy)), 33827 Call 33828 ("Take", 33829 ATy(qTy,PTy(bTy,qTy)), 33830 Var("v",PTy(F4,bTy))))), 33831 Close 33832 (bVar"b", 33833 ITE(bVar"b", 33834 MB(ITE(Bop(In,Var("Rn",F4), 33835 SL[LW(13,4), 33836 LW(15,4)]), 33837 Call 33838 ("DECODE_UNPREDICTABLE", 33839 ATy(qTy, 33840 PTy(uTy,qTy)), 33841 TP[Var("mc", 33842 CTy"MachineCode"), 33843 LS 33844 "MoveToBankedOrSpecialRegister"]), 33845 MU(LU,qTy)), 33846 Close 33847 (AVar uTy, 33848 MU(Call 33849 ("System", 33850 CTy"instruction", 33851 Call 33852 ("MoveToBankedOrSpecialRegister", 33853 CTy"System", 33854 TP[EQ(Mop(Cast 33855 F1, 33856 LL[bVar"b'22"]), 33857 LW(1,1)), 33858 CC[Mop(Cast 33859 F1, 33860 LL[bVar"b'8"]), 33861 Mop(Cast 33862 F4, 33863 LL[bVar"b'19", 33864 bVar"b'18", 33865 bVar"b'17", 33866 bVar"b'16"])], 33867 Var("Rn",F4)])), 33868 qTy))), 33869 Call 33870 ("Skip", 33871 ATy(qTy, 33872 PTy(CTy"instruction", 33873 qTy)),LU)))))))), 33874 (Bop(And,bVar"b'24", 33875 Bop(And,Mop(Not,bVar"b'23"), 33876 Bop(And,bVar"b'21", 33877 Bop(And,Mop(Not,bVar"b'20"), 33878 Bop(And,Mop(Not,bVar"b'9"), 33879 Bop(And,Mop(Not,bVar"b'7"), 33880 Bop(And, 33881 Mop(Not,bVar"b'6"), 33882 Bop(And, 33883 Mop(Not,bVar"b'5"), 33884 Mop(Not,bVar"b'4"))))))))), 33885 Let(Var("Rn",F4), 33886 Mop(Cast F4, 33887 LL[bVar"b'3",bVar"b'2",bVar"b'1", 33888 bVar"b'0"]), 33889 Let(Var("mask",F4), 33890 Mop(Cast F4, 33891 LL[bVar"b'19",bVar"b'18",bVar"b'17", 33892 bVar"b'16"]), 33893 MB(Call 33894 ("Take",ATy(qTy,PTy(bTy,qTy)), 33895 TP[Var("cond",F4),LT]), 33896 Close 33897 (bVar"b", 33898 ITE(bVar"b", 33899 MB(ITE(Bop(Or, 33900 EQ(Var("Rn",F4), 33901 LW(15,4)), 33902 EQ(Var("mask",F4), 33903 LW(0,4))), 33904 Call 33905 ("DECODE_UNPREDICTABLE", 33906 ATy(qTy,PTy(uTy,qTy)), 33907 TP[Var("mc", 33908 CTy"MachineCode"), 33909 LS 33910 "MoveToSpecialFromRegister"]), 33911 MU(LU,qTy)), 33912 Close 33913 (AVar uTy, 33914 MU(Call 33915 ("System", 33916 CTy"instruction", 33917 Call 33918 ("MoveToSpecialFromRegister", 33919 CTy"System", 33920 TP[EQ(Mop(Cast 33921 F1, 33922 LL[bVar"b'22"]), 33923 LW(1,1)), 33924 Var("Rn",F4), 33925 Var("mask",F4)])), 33926 qTy))), 33927 Call 33928 ("Skip", 33929 ATy(qTy, 33930 PTy(CTy"instruction",qTy)), 33931 LU))))))), 33932 (Bop(And,bVar"b'24", 33933 Bop(And,Mop(Not,bVar"b'23"), 33934 Bop(And,Mop(Not,bVar"b'22"), 33935 Bop(And,bVar"b'21", 33936 Bop(And,Mop(Not,bVar"b'20"), 33937 Bop(And,Mop(Not,bVar"b'7"), 33938 Bop(And, 33939 Mop(Not,bVar"b'6"), 33940 Bop(And, 33941 Mop(Not,bVar"b'5"), 33942 bVar"b'4")))))))), 33943 MB(MR(Close 33944 (qVar"s", 33945 Dest 33946 ("Architecture",CTy"Architecture", 33947 qVar"s"))), 33948 Close 33949 (Var("v",CTy"Architecture"), 33950 MB(MB(MB(MB(MU(EQ(Var("v",CTy"Architecture"), 33951 LC("ARMv4", 33952 CTy"Architecture")), 33953 qTy), 33954 Close 33955 (bVar"v", 33956 MU(Mop(Not,bVar"v"),qTy))), 33957 Close 33958 (bVar"v", 33959 MU(TP[Var("cond",F4),bVar"v"], 33960 qTy))), 33961 Close 33962 (Var("v",PTy(F4,bTy)), 33963 Call 33964 ("Take",ATy(qTy,PTy(bTy,qTy)), 33965 Var("v",PTy(F4,bTy))))), 33966 Close 33967 (bVar"b", 33968 ITE(bVar"b", 33969 MU(Call 33970 ("Branch",CTy"instruction", 33971 Call 33972 ("BranchExchange", 33973 CTy"Branch", 33974 Mop(Cast F4, 33975 LL[bVar"b'3", 33976 bVar"b'2", 33977 bVar"b'1", 33978 bVar"b'0"]))),qTy), 33979 Call 33980 ("Skip", 33981 ATy(qTy, 33982 PTy(CTy"instruction",qTy)), 33983 LU))))))), 33984 (Bop(And,bVar"b'24", 33985 Bop(And,Mop(Not,bVar"b'23"), 33986 Bop(And,bVar"b'22", 33987 Bop(And,bVar"b'21", 33988 Bop(And,Mop(Not,bVar"b'20"), 33989 Bop(And,Mop(Not,bVar"b'7"), 33990 Bop(And, 33991 Mop(Not,bVar"b'6"), 33992 Bop(And, 33993 Mop(Not,bVar"b'5"), 33994 bVar"b'4")))))))), 33995 Let(Var("Rm",F4), 33996 Mop(Cast F4, 33997 LL[bVar"b'3",bVar"b'2",bVar"b'1", 33998 bVar"b'0"]), 33999 Let(Var("Rd",F4), 34000 Mop(Cast F4, 34001 LL[bVar"b'15",bVar"b'14",bVar"b'13", 34002 bVar"b'12"]), 34003 MB(Call 34004 ("ArchVersion", 34005 ATy(qTy,PTy(nTy,qTy)),LU), 34006 Close 34007 (nVar"v", 34008 MB(MB(MB(MU(Bop(Ge,nVar"v",LN 5), 34009 qTy), 34010 Close 34011 (bVar"v", 34012 MU(TP[Var("cond",F4), 34013 bVar"v"],qTy))), 34014 Close 34015 (Var("v",PTy(F4,bTy)), 34016 Call 34017 ("Take", 34018 ATy(qTy,PTy(bTy,qTy)), 34019 Var("v",PTy(F4,bTy))))), 34020 Close 34021 (bVar"b", 34022 ITE(bVar"b", 34023 MB(ITE(Bop(Or, 34024 EQ(Var("Rd",F4), 34025 LW(15,4)), 34026 EQ(Var("Rm",F4), 34027 LW(15,4))), 34028 Call 34029 ("DECODE_UNPREDICTABLE", 34030 ATy(qTy, 34031 PTy(uTy,qTy)), 34032 TP[Var("mc", 34033 CTy"MachineCode"), 34034 LS 34035 "CountLeadingZeroes"]), 34036 MU(LU,qTy)), 34037 Close 34038 (AVar uTy, 34039 MU(Call 34040 ("Data", 34041 CTy"instruction", 34042 Call 34043 ("CountLeadingZeroes", 34044 CTy"Data", 34045 TP[Var("Rd", 34046 F4), 34047 Var("Rm", 34048 F4)])), 34049 qTy))), 34050 Call 34051 ("Skip", 34052 ATy(qTy, 34053 PTy(CTy"instruction", 34054 qTy)),LU))))))))), 34055 (Bop(And,bVar"b'24", 34056 Bop(And,Mop(Not,bVar"b'23"), 34057 Bop(And,Mop(Not,bVar"b'22"), 34058 Bop(And,bVar"b'21", 34059 Bop(And,Mop(Not,bVar"b'20"), 34060 Bop(And,Mop(Not,bVar"b'7"), 34061 Bop(And, 34062 Mop(Not,bVar"b'6"), 34063 Bop(And,bVar"b'5", 34064 bVar"b'4")))))))), 34065 Let(Var("Rm",F4), 34066 Mop(Cast F4, 34067 LL[bVar"b'3",bVar"b'2",bVar"b'1", 34068 bVar"b'0"]), 34069 MB(Call 34070 ("ArchVersion",ATy(qTy,PTy(nTy,qTy)),LU), 34071 Close 34072 (nVar"v", 34073 MB(MB(MB(MU(Bop(Ge,nVar"v",LN 5),qTy), 34074 Close 34075 (bVar"v", 34076 MU(TP[Var("cond",F4), 34077 bVar"v"],qTy))), 34078 Close 34079 (Var("v",PTy(F4,bTy)), 34080 Call 34081 ("Take", 34082 ATy(qTy,PTy(bTy,qTy)), 34083 Var("v",PTy(F4,bTy))))), 34084 Close 34085 (bVar"b", 34086 ITE(bVar"b", 34087 MB(ITE(EQ(Var("Rm",F4), 34088 LW(15,4)), 34089 Call 34090 ("DECODE_UNPREDICTABLE", 34091 ATy(qTy, 34092 PTy(uTy,qTy)), 34093 TP[Var("mc", 34094 CTy"MachineCode"), 34095 LS 34096 "BranchLinkExchangeRegister"]), 34097 MU(LU,qTy)), 34098 Close 34099 (AVar uTy, 34100 MU(Call 34101 ("Branch", 34102 CTy"instruction", 34103 Call 34104 ("BranchLinkExchangeRegister", 34105 CTy"Branch", 34106 Var("Rm",F4))), 34107 qTy))), 34108 Call 34109 ("Skip", 34110 ATy(qTy, 34111 PTy(CTy"instruction", 34112 qTy)),LU)))))))), 34113 (Bop(And,bVar"b'24", 34114 Bop(And,Mop(Not,bVar"b'23"), 34115 Bop(And,Mop(Not,bVar"b'20"), 34116 Bop(And,Mop(Not,bVar"b'7"), 34117 Bop(And,bVar"b'6", 34118 Bop(And,Mop(Not,bVar"b'5"), 34119 bVar"b'4")))))), 34120 Let(Var("Rm",F4), 34121 Mop(Cast F4, 34122 LL[bVar"b'3",bVar"b'2",bVar"b'1", 34123 bVar"b'0"]), 34124 Let(Var("Rd",F4), 34125 Mop(Cast F4, 34126 LL[bVar"b'15",bVar"b'14",bVar"b'13", 34127 bVar"b'12"]), 34128 Let(Var("Rn",F4), 34129 Mop(Cast F4, 34130 LL[bVar"b'19",bVar"b'18", 34131 bVar"b'17",bVar"b'16"]), 34132 MB(Call 34133 ("HaveDSPSupport", 34134 ATy(qTy,PTy(bTy,qTy)),LU), 34135 Close 34136 (bVar"v", 34137 MB(MB(MU(TP[Var("cond",F4), 34138 bVar"v"],qTy), 34139 Close 34140 (Var("v",PTy(F4,bTy)), 34141 Call 34142 ("Take", 34143 ATy(qTy, 34144 PTy(bTy,qTy)), 34145 Var("v",PTy(F4,bTy))))), 34146 Close 34147 (bVar"b", 34148 ITE(bVar"b", 34149 MB(ITE(Bop(Or, 34150 Bop(Or, 34151 EQ(Var("Rd", 34152 F4), 34153 LW(15, 34154 4)), 34155 EQ(Var("Rn", 34156 F4), 34157 LW(15, 34158 4))), 34159 EQ(Var("Rm", 34160 F4), 34161 LW(15,4))), 34162 Call 34163 ("DECODE_UNPREDICTABLE", 34164 ATy(qTy, 34165 PTy(uTy, 34166 qTy)), 34167 TP[Var("mc", 34168 CTy"MachineCode"), 34169 LS 34170 "SaturatingAddSubtract"]), 34171 MU(LU,qTy)), 34172 Close 34173 (AVar uTy, 34174 MU(Call 34175 ("Media", 34176 CTy"instruction", 34177 Call 34178 ("SaturatingAddSubtract", 34179 CTy"Media", 34180 TP[Mop(Cast 34181 (FTy 2), 34182 LL[bVar"b'22", 34183 bVar"b'21"]), 34184 Var("Rd", 34185 F4), 34186 Var("Rm", 34187 F4), 34188 Var("Rn", 34189 F4)])), 34190 qTy))), 34191 Call 34192 ("Skip", 34193 ATy(qTy, 34194 PTy(CTy"instruction", 34195 qTy)),LU)))))))))), 34196 (Bop(And,bVar"b'24", 34197 Bop(And,Mop(Not,bVar"b'23"), 34198 Bop(And,Mop(Not,bVar"b'22"), 34199 Bop(And,bVar"b'21", 34200 Bop(And,Mop(Not,bVar"b'20"), 34201 Bop(And,Mop(Not,bVar"b'7"), 34202 Bop(And,bVar"b'6", 34203 Bop(And,bVar"b'5", 34204 bVar"b'4")))))))), 34205 MB(Call("ArchVersion",ATy(qTy,PTy(nTy,qTy)),LU), 34206 Close 34207 (nVar"v", 34208 MB(MU(Bop(Ge,nVar"v",LN 5),qTy), 34209 Close 34210 (bVar"b", 34211 ITE(bVar"b", 34212 MB(ITE(Mop(Not, 34213 EQ(Var("cond",F4), 34214 LW(14,4))), 34215 Call 34216 ("DECODE_UNPREDICTABLE", 34217 ATy(qTy,PTy(uTy,qTy)), 34218 TP[Var("mc", 34219 CTy"MachineCode"), 34220 LS"Breakpoint"]), 34221 MU(LU,qTy)), 34222 Close 34223 (AVar uTy, 34224 MB(MW(Close 34225 (qVar"s", 34226 Rupd 34227 ("CurrentCondition", 34228 TP[qVar"s", 34229 Var("cond", 34230 F4)]))), 34231 Close 34232 (AVar uTy, 34233 MU(Call 34234 ("Hint", 34235 CTy"instruction", 34236 Call 34237 ("Breakpoint", 34238 CTy"Hint", 34239 Mop(Cast F32, 34240 CC[Mop(Cast 34241 (FTy 12), 34242 LL[bVar"b'19", 34243 bVar"b'18", 34244 bVar"b'17", 34245 bVar"b'16", 34246 bVar"b'15", 34247 bVar"b'14", 34248 bVar"b'13", 34249 bVar"b'12", 34250 bVar"b'11", 34251 bVar"b'10", 34252 bVar"b'9", 34253 bVar"b'8"]), 34254 Mop(Cast 34255 F4, 34256 LL[bVar"b'3", 34257 bVar"b'2", 34258 bVar"b'1", 34259 bVar"b'0"])]))), 34260 qTy))))), 34261 MB(Call 34262 ("Take", 34263 ATy(qTy,PTy(bTy,qTy)), 34264 TP[Var("cond",F4),LF]), 34265 Close 34266 (bVar"b", 34267 MU(ITE(bVar"b", 34268 Call 34269 ("Undefined", 34270 CTy"instruction", 34271 LW(0,32)), 34272 Const 34273 ("NoOperation", 34274 CTy"instruction")), 34275 qTy))))))))), 34276 (Bop(And,bVar"b'24", 34277 Bop(And,Mop(Not,bVar"b'23"), 34278 Bop(And,bVar"b'22", 34279 Bop(And,Mop(Not,bVar"b'21"), 34280 Bop(And,Mop(Not,bVar"b'20"), 34281 Bop(And,Mop(Not,bVar"b'7"), 34282 Bop(And,bVar"b'6", 34283 Bop(And,bVar"b'5", 34284 bVar"b'4")))))))), 34285 MB(Call("HaveVirtExt",ATy(qTy,PTy(bTy,qTy)),LU), 34286 Close 34287 (bVar"v", 34288 MB(MB(MU(TP[Var("cond",F4),bVar"v"],qTy), 34289 Close 34290 (Var("v",PTy(F4,bTy)), 34291 Call 34292 ("Take",ATy(qTy,PTy(bTy,qTy)), 34293 Var("v",PTy(F4,bTy))))), 34294 Close 34295 (bVar"b", 34296 ITE(bVar"b", 34297 MB(ITE(Mop(Not, 34298 EQ(Var("cond",F4), 34299 LW(14,4))), 34300 Call 34301 ("DECODE_UNPREDICTABLE", 34302 ATy(qTy,PTy(uTy,qTy)), 34303 TP[Var("mc", 34304 CTy"MachineCode"), 34305 LS"HypervisorCall"]), 34306 MU(LU,qTy)), 34307 Close 34308 (AVar uTy, 34309 MU(Call 34310 ("System", 34311 CTy"instruction", 34312 Call 34313 ("HypervisorCall", 34314 CTy"System", 34315 CC[Mop(Cast 34316 (FTy 12), 34317 LL[bVar"b'19", 34318 bVar"b'18", 34319 bVar"b'17", 34320 bVar"b'16", 34321 bVar"b'15", 34322 bVar"b'14", 34323 bVar"b'13", 34324 bVar"b'12", 34325 bVar"b'11", 34326 bVar"b'10", 34327 bVar"b'9", 34328 bVar"b'8"]), 34329 Mop(Cast F4, 34330 LL[bVar"b'3", 34331 bVar"b'2", 34332 bVar"b'1", 34333 bVar"b'0"])])), 34334 qTy))), 34335 Call 34336 ("Skip", 34337 ATy(qTy, 34338 PTy(CTy"instruction",qTy)), 34339 LU))))))), 34340 (Bop(And,bVar"b'24", 34341 Bop(And,Mop(Not,bVar"b'23"), 34342 Bop(And,bVar"b'22", 34343 Bop(And,bVar"b'21", 34344 Bop(And,Mop(Not,bVar"b'20"), 34345 Bop(And,Mop(Not,bVar"b'7"), 34346 Bop(And,bVar"b'6", 34347 Bop(And,bVar"b'5", 34348 bVar"b'4")))))))), 34349 MB(Call 34350 ("HaveSecurityExt",ATy(qTy,PTy(bTy,qTy)),LU), 34351 Close 34352 (bVar"v", 34353 MB(MB(MU(TP[Var("cond",F4),bVar"v"],qTy), 34354 Close 34355 (Var("v",PTy(F4,bTy)), 34356 Call 34357 ("Take",ATy(qTy,PTy(bTy,qTy)), 34358 Var("v",PTy(F4,bTy))))), 34359 Close 34360 (bVar"b", 34361 ITE(bVar"b", 34362 MU(Call 34363 ("System",CTy"instruction", 34364 Call 34365 ("SecureMonitorCall", 34366 CTy"System", 34367 Mop(Cast F4, 34368 LL[bVar"b'3", 34369 bVar"b'2", 34370 bVar"b'1", 34371 bVar"b'0"]))),qTy), 34372 Call 34373 ("Skip", 34374 ATy(qTy, 34375 PTy(CTy"instruction",qTy)), 34376 LU))))))), 34377 (Bop(And,bVar"b'24", 34378 Bop(And,Mop(Not,bVar"b'23"), 34379 Bop(And,Mop(Not,bVar"b'22"), 34380 Bop(And,Mop(Not,bVar"b'21"), 34381 Bop(And,Mop(Not,bVar"b'20"), 34382 Bop(And,bVar"b'7", 34383 Mop(Not,bVar"b'4"))))))), 34384 Let(Var("Rn",F4), 34385 Mop(Cast F4, 34386 LL[bVar"b'3",bVar"b'2",bVar"b'1", 34387 bVar"b'0"]), 34388 Let(Var("Rm",F4), 34389 Mop(Cast F4, 34390 LL[bVar"b'11",bVar"b'10",bVar"b'9", 34391 bVar"b'8"]), 34392 Let(Var("Ra",F4), 34393 Mop(Cast F4, 34394 LL[bVar"b'15",bVar"b'14", 34395 bVar"b'13",bVar"b'12"]), 34396 Let(Var("Rd",F4), 34397 Mop(Cast F4, 34398 LL[bVar"b'19",bVar"b'18", 34399 bVar"b'17",bVar"b'16"]), 34400 MB(Call 34401 ("HaveDSPSupport", 34402 ATy(qTy,PTy(bTy,qTy)),LU), 34403 Close 34404 (bVar"v", 34405 MB(MB(MU(TP[Var("cond",F4), 34406 bVar"v"],qTy), 34407 Close 34408 (Var("v", 34409 PTy(F4,bTy)), 34410 Call 34411 ("Take", 34412 ATy(qTy, 34413 PTy(bTy,qTy)), 34414 Var("v", 34415 PTy(F4,bTy))))), 34416 Close 34417 (bVar"b", 34418 ITE(bVar"b", 34419 MB(ITE(Bop(Or, 34420 Bop(Or, 34421 Bop(Or, 34422 EQ(Var("Rd", 34423 F4), 34424 LW(15, 34425 4)), 34426 EQ(Var("Rn", 34427 F4), 34428 LW(15, 34429 4))), 34430 EQ(Var("Rm", 34431 F4), 34432 LW(15, 34433 4))), 34434 EQ(Var("Ra", 34435 F4), 34436 LW(15, 34437 4))), 34438 Call 34439 ("DECODE_UNPREDICTABLE", 34440 ATy(qTy, 34441 PTy(uTy, 34442 qTy)), 34443 TP[Var("mc", 34444 CTy"MachineCode"), 34445 LS 34446 "Signed16Multiply32Accumulate"]), 34447 MU(LU,qTy)), 34448 Close 34449 (AVar uTy, 34450 MU(Call 34451 ("Multiply", 34452 CTy"instruction", 34453 Call 34454 ("Signed16Multiply32Accumulate", 34455 CTy"Multiply", 34456 TP[EQ(Mop(Cast 34457 F1, 34458 LL[bVar"b'6"]), 34459 LW(1, 34460 1)), 34461 EQ(Mop(Cast 34462 F1, 34463 LL[bVar"b'5"]), 34464 LW(1, 34465 1)), 34466 Var("Rd", 34467 F4), 34468 Var("Rn", 34469 F4), 34470 Var("Rm", 34471 F4), 34472 Var("Ra", 34473 F4)])), 34474 qTy))), 34475 Call 34476 ("Skip", 34477 ATy(qTy, 34478 PTy(CTy"instruction", 34479 qTy)), 34480 LU))))))))))), 34481 (Bop(And,bVar"b'24", 34482 Bop(And,Mop(Not,bVar"b'23"), 34483 Bop(And,Mop(Not,bVar"b'22"), 34484 Bop(And,bVar"b'21", 34485 Bop(And,Mop(Not,bVar"b'20"), 34486 Bop(And,bVar"b'7", 34487 Bop(And, 34488 Mop(Not,bVar"b'5"), 34489 Mop(Not,bVar"b'4")))))))), 34490 Let(Var("Rn",F4), 34491 Mop(Cast F4, 34492 LL[bVar"b'3",bVar"b'2",bVar"b'1", 34493 bVar"b'0"]), 34494 Let(Var("Rm",F4), 34495 Mop(Cast F4, 34496 LL[bVar"b'11",bVar"b'10",bVar"b'9", 34497 bVar"b'8"]), 34498 Let(Var("Ra",F4), 34499 Mop(Cast F4, 34500 LL[bVar"b'15",bVar"b'14", 34501 bVar"b'13",bVar"b'12"]), 34502 Let(Var("Rd",F4), 34503 Mop(Cast F4, 34504 LL[bVar"b'19",bVar"b'18", 34505 bVar"b'17",bVar"b'16"]), 34506 MB(Call 34507 ("HaveDSPSupport", 34508 ATy(qTy,PTy(bTy,qTy)),LU), 34509 Close 34510 (bVar"v", 34511 MB(MB(MU(TP[Var("cond",F4), 34512 bVar"v"],qTy), 34513 Close 34514 (Var("v", 34515 PTy(F4,bTy)), 34516 Call 34517 ("Take", 34518 ATy(qTy, 34519 PTy(bTy,qTy)), 34520 Var("v", 34521 PTy(F4,bTy))))), 34522 Close 34523 (bVar"b", 34524 ITE(bVar"b", 34525 MB(ITE(Bop(Or, 34526 Bop(Or, 34527 Bop(Or, 34528 EQ(Var("Rd", 34529 F4), 34530 LW(15, 34531 4)), 34532 EQ(Var("Rn", 34533 F4), 34534 LW(15, 34535 4))), 34536 EQ(Var("Rm", 34537 F4), 34538 LW(15, 34539 4))), 34540 EQ(Var("Ra", 34541 F4), 34542 LW(15, 34543 4))), 34544 Call 34545 ("DECODE_UNPREDICTABLE", 34546 ATy(qTy, 34547 PTy(uTy, 34548 qTy)), 34549 TP[Var("mc", 34550 CTy"MachineCode"), 34551 LS 34552 "Signed16x32Multiply32Accumulate"]), 34553 MU(LU,qTy)), 34554 Close 34555 (AVar uTy, 34556 MU(Call 34557 ("Multiply", 34558 CTy"instruction", 34559 Call 34560 ("Signed16x32Multiply32Accumulate", 34561 CTy"Multiply", 34562 TP[EQ(Mop(Cast 34563 F1, 34564 LL[bVar"b'6"]), 34565 LW(1, 34566 1)), 34567 Var("Rd", 34568 F4), 34569 Var("Rn", 34570 F4), 34571 Var("Rm", 34572 F4), 34573 Var("Ra", 34574 F4)])), 34575 qTy))), 34576 Call 34577 ("Skip", 34578 ATy(qTy, 34579 PTy(CTy"instruction", 34580 qTy)), 34581 LU))))))))))), 34582 (Bop(And,bVar"b'24", 34583 Bop(And,Mop(Not,bVar"b'23"), 34584 Bop(And,Mop(Not,bVar"b'22"), 34585 Bop(And,bVar"b'21", 34586 Bop(And,Mop(Not,bVar"b'20"), 34587 Bop(And,bVar"b'7", 34588 Bop(And,bVar"b'5", 34589 Mop(Not,bVar"b'4")))))))), 34590 Let(Var("Rn",F4), 34591 Mop(Cast F4, 34592 LL[bVar"b'3",bVar"b'2",bVar"b'1", 34593 bVar"b'0"]), 34594 Let(Var("Rm",F4), 34595 Mop(Cast F4, 34596 LL[bVar"b'11",bVar"b'10",bVar"b'9", 34597 bVar"b'8"]), 34598 Let(Var("Rd",F4), 34599 Mop(Cast F4, 34600 LL[bVar"b'19",bVar"b'18", 34601 bVar"b'17",bVar"b'16"]), 34602 MB(Call 34603 ("HaveDSPSupport", 34604 ATy(qTy,PTy(bTy,qTy)),LU), 34605 Close 34606 (bVar"v", 34607 MB(MB(MU(TP[Var("cond",F4), 34608 bVar"v"],qTy), 34609 Close 34610 (Var("v",PTy(F4,bTy)), 34611 Call 34612 ("Take", 34613 ATy(qTy, 34614 PTy(bTy,qTy)), 34615 Var("v",PTy(F4,bTy))))), 34616 Close 34617 (bVar"b", 34618 ITE(bVar"b", 34619 MB(ITE(Bop(Or, 34620 Bop(Or, 34621 EQ(Var("Rd", 34622 F4), 34623 LW(15, 34624 4)), 34625 EQ(Var("Rn", 34626 F4), 34627 LW(15, 34628 4))), 34629 EQ(Var("Rm", 34630 F4), 34631 LW(15,4))), 34632 Call 34633 ("DECODE_UNPREDICTABLE", 34634 ATy(qTy, 34635 PTy(uTy, 34636 qTy)), 34637 TP[Var("mc", 34638 CTy"MachineCode"), 34639 LS 34640 "Signed16x32Multiply32Result"]), 34641 MU(LU,qTy)), 34642 Close 34643 (AVar uTy, 34644 MU(Call 34645 ("Multiply", 34646 CTy"instruction", 34647 Call 34648 ("Signed16x32Multiply32Result", 34649 CTy"Multiply", 34650 TP[EQ(Mop(Cast 34651 F1, 34652 LL[bVar"b'6"]), 34653 LW(1, 34654 1)), 34655 Var("Rd", 34656 F4), 34657 Var("Rn", 34658 F4), 34659 Var("Rm", 34660 F4)])), 34661 qTy))), 34662 Call 34663 ("Skip", 34664 ATy(qTy, 34665 PTy(CTy"instruction", 34666 qTy)),LU)))))))))), 34667 (Bop(And,bVar"b'24", 34668 Bop(And,Mop(Not,bVar"b'23"), 34669 Bop(And,bVar"b'22", 34670 Bop(And,Mop(Not,bVar"b'21"), 34671 Bop(And,Mop(Not,bVar"b'20"), 34672 Bop(And,bVar"b'7", 34673 Mop(Not,bVar"b'4"))))))), 34674 Let(Var("Rn",F4), 34675 Mop(Cast F4, 34676 LL[bVar"b'3",bVar"b'2",bVar"b'1", 34677 bVar"b'0"]), 34678 Let(Var("Rm",F4), 34679 Mop(Cast F4, 34680 LL[bVar"b'11",bVar"b'10",bVar"b'9", 34681 bVar"b'8"]), 34682 Let(Var("RdLo",F4), 34683 Mop(Cast F4, 34684 LL[bVar"b'15",bVar"b'14", 34685 bVar"b'13",bVar"b'12"]), 34686 Let(Var("RdHi",F4), 34687 Mop(Cast F4, 34688 LL[bVar"b'19",bVar"b'18", 34689 bVar"b'17",bVar"b'16"]), 34690 MB(Call 34691 ("HaveDSPSupport", 34692 ATy(qTy,PTy(bTy,qTy)),LU), 34693 Close 34694 (bVar"v", 34695 MB(MB(MU(TP[Var("cond",F4), 34696 bVar"v"],qTy), 34697 Close 34698 (Var("v", 34699 PTy(F4,bTy)), 34700 Call 34701 ("Take", 34702 ATy(qTy, 34703 PTy(bTy,qTy)), 34704 Var("v", 34705 PTy(F4,bTy))))), 34706 Close 34707 (bVar"b", 34708 ITE(bVar"b", 34709 MB(ITE(Bop(Or, 34710 Bop(Or, 34711 Bop(Or, 34712 EQ(Var("RdLo", 34713 F4), 34714 LW(15, 34715 4)), 34716 EQ(Var("RdHi", 34717 F4), 34718 LW(15, 34719 4))), 34720 EQ(Var("Rn", 34721 F4), 34722 LW(15, 34723 4))), 34724 EQ(Var("Rm", 34725 F4), 34726 LW(15, 34727 4))), 34728 Call 34729 ("DECODE_UNPREDICTABLE", 34730 ATy(qTy, 34731 PTy(uTy, 34732 qTy)), 34733 TP[Var("mc", 34734 CTy"MachineCode"), 34735 LS 34736 "Signed16Multiply64Accumulate"]), 34737 MU(LU,qTy)), 34738 Close 34739 (AVar uTy, 34740 MU(Call 34741 ("Multiply", 34742 CTy"instruction", 34743 Call 34744 ("Signed16Multiply64Accumulate", 34745 CTy"Multiply", 34746 TP[EQ(Mop(Cast 34747 F1, 34748 LL[bVar"b'6"]), 34749 LW(1, 34750 1)), 34751 EQ(Mop(Cast 34752 F1, 34753 LL[bVar"b'5"]), 34754 LW(1, 34755 1)), 34756 Var("RdHi", 34757 F4), 34758 Var("RdLo", 34759 F4), 34760 Var("Rn", 34761 F4), 34762 Var("Rm", 34763 F4)])), 34764 qTy))), 34765 Call 34766 ("Skip", 34767 ATy(qTy, 34768 PTy(CTy"instruction", 34769 qTy)), 34770 LU))))))))))), 34771 (Bop(And,bVar"b'24", 34772 Bop(And,Mop(Not,bVar"b'23"), 34773 Bop(And,bVar"b'22", 34774 Bop(And,bVar"b'21", 34775 Bop(And,Mop(Not,bVar"b'20"), 34776 Bop(And,bVar"b'7", 34777 Mop(Not,bVar"b'4"))))))), 34778 Let(Var("Rn",F4), 34779 Mop(Cast F4, 34780 LL[bVar"b'3",bVar"b'2",bVar"b'1", 34781 bVar"b'0"]), 34782 Let(Var("Rm",F4), 34783 Mop(Cast F4, 34784 LL[bVar"b'11",bVar"b'10",bVar"b'9", 34785 bVar"b'8"]), 34786 Let(Var("Rd",F4), 34787 Mop(Cast F4, 34788 LL[bVar"b'19",bVar"b'18", 34789 bVar"b'17",bVar"b'16"]), 34790 MB(Call 34791 ("HaveDSPSupport", 34792 ATy(qTy,PTy(bTy,qTy)),LU), 34793 Close 34794 (bVar"v", 34795 MB(MB(MU(TP[Var("cond",F4), 34796 bVar"v"],qTy), 34797 Close 34798 (Var("v",PTy(F4,bTy)), 34799 Call 34800 ("Take", 34801 ATy(qTy, 34802 PTy(bTy,qTy)), 34803 Var("v",PTy(F4,bTy))))), 34804 Close 34805 (bVar"b", 34806 ITE(bVar"b", 34807 MB(ITE(Bop(Or, 34808 Bop(Or, 34809 EQ(Var("Rd", 34810 F4), 34811 LW(15, 34812 4)), 34813 EQ(Var("Rn", 34814 F4), 34815 LW(15, 34816 4))), 34817 EQ(Var("Rm", 34818 F4), 34819 LW(15,4))), 34820 Call 34821 ("DECODE_UNPREDICTABLE", 34822 ATy(qTy, 34823 PTy(uTy, 34824 qTy)), 34825 TP[Var("mc", 34826 CTy"MachineCode"), 34827 LS 34828 "Signed16Multiply32Result"]), 34829 MU(LU,qTy)), 34830 Close 34831 (AVar uTy, 34832 MU(Call 34833 ("Multiply", 34834 CTy"instruction", 34835 Call 34836 ("Signed16Multiply32Result", 34837 CTy"Multiply", 34838 TP[EQ(Mop(Cast 34839 F1, 34840 LL[bVar"b'6"]), 34841 LW(1, 34842 1)), 34843 EQ(Mop(Cast 34844 F1, 34845 LL[bVar"b'5"]), 34846 LW(1, 34847 1)), 34848 Var("Rd", 34849 F4), 34850 Var("Rn", 34851 F4), 34852 Var("Rm", 34853 F4)])), 34854 qTy))), 34855 Call 34856 ("Skip", 34857 ATy(qTy, 34858 PTy(CTy"instruction", 34859 qTy)),LU)))))))))), 34860 (Bop(And,bVar"b'24", 34861 Bop(And,Mop(Not,bVar"b'23"), 34862 Bop(And,bVar"b'22", 34863 Bop(And,bVar"b'21", 34864 Bop(And,Mop(Not,bVar"b'20"), 34865 Bop(And,Mop(Not,bVar"b'19"), 34866 Bop(And, 34867 Mop(Not,bVar"b'18"), 34868 Bop(And, 34869 Mop(Not, 34870 bVar"b'17"), 34871 Bop(And, 34872 Mop(Not, 34873 bVar"b'16"), 34874 Bop(And, 34875 Mop(Not, 34876 bVar"b'15"), 34877 Bop(And, 34878 Mop(Not, 34879 bVar"b'14"), 34880 Bop(And, 34881 Mop(Not, 34882 bVar"b'13"), 34883 Bop(And, 34884 Mop(Not, 34885 bVar"b'12"), 34886 Bop(And, 34887 Mop(Not, 34888 bVar"b'11"), 34889 Bop(And, 34890 Mop(Not, 34891 bVar"b'10"), 34892 Bop(And, 34893 Mop(Not, 34894 bVar"b'9"), 34895 Bop(And, 34896 Mop(Not, 34897 bVar"b'8"), 34898 Bop(And, 34899 Mop(Not, 34900 bVar"b'7"), 34901 Bop(And, 34902 bVar"b'6", 34903 Bop(And, 34904 bVar"b'5", 34905 Bop(And, 34906 Mop(Not, 34907 bVar"b'4"), 34908 Bop(And, 34909 bVar"b'3", 34910 Bop(And, 34911 bVar"b'2", 34912 Bop(And, 34913 bVar"b'1", 34914 Mop(Not, 34915 bVar"b'0"))))))))))))))))))))))))), 34916 MB(Call("HaveVirtExt",ATy(qTy,PTy(bTy,qTy)),LU), 34917 Close 34918 (bVar"v", 34919 MB(MB(MU(TP[Var("cond",F4),bVar"v"],qTy), 34920 Close 34921 (Var("v",PTy(F4,bTy)), 34922 Call 34923 ("Take",ATy(qTy,PTy(bTy,qTy)), 34924 Var("v",PTy(F4,bTy))))), 34925 Close 34926 (bVar"b", 34927 ITE(bVar"b", 34928 MU(Call 34929 ("System",CTy"instruction", 34930 Const 34931 ("ExceptionReturn", 34932 CTy"System")),qTy), 34933 Call 34934 ("Skip", 34935 ATy(qTy, 34936 PTy(CTy"instruction",qTy)), 34937 LU))))))), 34938 (Bop(And,bVar"b'24", 34939 Bop(And,Mop(Not,bVar"b'23"), 34940 Bop(And,Mop(Not,bVar"b'20"), 34941 Mop(Not,bVar"b'7")))), 34942 MU(Call("Undefined",CTy"instruction",LW(0,32)), 34943 qTy)), 34944 (Mop(Not,bVar"b'4"), 34945 Let(Var("Rm",F4), 34946 Mop(Cast F4, 34947 LL[bVar"b'3",bVar"b'2",bVar"b'1", 34948 bVar"b'0"]), 34949 Let(Var("Rd",F4), 34950 Mop(Cast F4, 34951 LL[bVar"b'15",bVar"b'14",bVar"b'13", 34952 bVar"b'12"]), 34953 Let(Var("Rn",F4), 34954 Mop(Cast F4, 34955 LL[bVar"b'19",bVar"b'18", 34956 bVar"b'17",bVar"b'16"]), 34957 Let(Var("opc",F4), 34958 Mop(Cast F4, 34959 LL[bVar"b'24",bVar"b'23", 34960 bVar"b'22",bVar"b'21"]), 34961 MB(Call 34962 ("Take", 34963 ATy(qTy,PTy(bTy,qTy)), 34964 TP[Var("cond",F4),LT]), 34965 Close 34966 (bVar"b", 34967 ITE(bVar"b", 34968 MU(Let(bVar"setflags", 34969 EQ(Mop(Cast F1, 34970 LL[bVar"b'20"]), 34971 LW(1,1)), 34972 Let(TP[Var("shift_t", 34973 CTy"SRType"), 34974 nVar"shift_n"], 34975 Call 34976 ("DecodeImmShift", 34977 PTy(CTy"SRType", 34978 nTy), 34979 TP[Mop(Cast 34980 (FTy 2), 34981 LL[bVar"b'6", 34982 bVar"b'5"]), 34983 Mop(Cast 34984 (FTy 5), 34985 LL[bVar"b'11", 34986 bVar"b'10", 34987 bVar"b'9", 34988 bVar"b'8", 34989 bVar"b'7"])]), 34990 ITB([(EQ(EX(Var("opc", 34991 F4), 34992 LN 34993 3, 34994 LN 34995 2, 34996 FTy 2), 34997 LW(2, 34998 2)), 34999 Call 35000 ("Data", 35001 CTy"instruction", 35002 Call 35003 ("TestCompareRegister", 35004 CTy"Data", 35005 TP[EX(Var("opc", 35006 F4), 35007 LN 35008 1, 35009 LN 35010 0, 35011 FTy 2), 35012 Var("Rn", 35013 F4), 35014 Var("Rm", 35015 F4), 35016 Var("shift_t", 35017 CTy"SRType"), 35018 nVar"shift_n"]))), 35019 (Bop(In, 35020 Var("opc", 35021 F4), 35022 SL[LW(13, 35023 4), 35024 LW(15, 35025 4)]), 35026 Call 35027 ("Data", 35028 CTy"instruction", 35029 Call 35030 ("ShiftImmediate", 35031 CTy"Data", 35032 TP[Bop(Bit, 35033 Var("opc", 35034 F4), 35035 LN 35036 1), 35037 bVar"setflags", 35038 Var("Rd", 35039 F4), 35040 Var("Rm", 35041 F4), 35042 Var("shift_t", 35043 CTy"SRType"), 35044 nVar"shift_n"])))], 35045 Call 35046 ("Data", 35047 CTy"instruction", 35048 Call 35049 ("Register", 35050 CTy"Data", 35051 TP[Var("opc", 35052 F4), 35053 bVar"setflags", 35054 Var("Rd", 35055 F4), 35056 Var("Rn", 35057 F4), 35058 Var("Rm", 35059 F4), 35060 Var("shift_t", 35061 CTy"SRType"), 35062 nVar"shift_n"]))))), 35063 qTy), 35064 Call 35065 ("Skip", 35066 ATy(qTy, 35067 PTy(CTy"instruction", 35068 qTy)),LU))))))))), 35069 (Bop(And,Mop(Not,bVar"b'7"),bVar"b'4"), 35070 Let(Var("Rm",F4), 35071 Mop(Cast F4, 35072 LL[bVar"b'3",bVar"b'2",bVar"b'1", 35073 bVar"b'0"]), 35074 Let(Var("Rs",F4), 35075 Mop(Cast F4, 35076 LL[bVar"b'11",bVar"b'10",bVar"b'9", 35077 bVar"b'8"]), 35078 Let(Var("Rd",F4), 35079 Mop(Cast F4, 35080 LL[bVar"b'15",bVar"b'14", 35081 bVar"b'13",bVar"b'12"]), 35082 Let(Var("Rn",F4), 35083 Mop(Cast F4, 35084 LL[bVar"b'19",bVar"b'18", 35085 bVar"b'17",bVar"b'16"]), 35086 Let(Var("opc",F4), 35087 Mop(Cast F4, 35088 LL[bVar"b'24",bVar"b'23", 35089 bVar"b'22",bVar"b'21"]), 35090 MB(Call 35091 ("Take", 35092 ATy(qTy,PTy(bTy,qTy)), 35093 TP[Var("cond",F4),LT]), 35094 Close 35095 (bVar"b", 35096 ITE(bVar"b", 35097 MB(ITE(Bop(Or, 35098 Bop(Or, 35099 Bop(Or, 35100 Bop(And, 35101 EQ(Var("Rd", 35102 F4), 35103 LW(15, 35104 4)), 35105 Mop(Not, 35106 EQ(EX(Var("opc", 35107 F4), 35108 LN 35109 3, 35110 LN 35111 2, 35112 FTy 2), 35113 LW(2, 35114 2)))), 35115 EQ(Var("Rn", 35116 F4), 35117 LW(15, 35118 4))), 35119 EQ(Var("Rm", 35120 F4), 35121 LW(15, 35122 4))), 35123 EQ(Var("Rs", 35124 F4), 35125 LW(15, 35126 4))), 35127 Call 35128 ("DECODE_UNPREDICTABLE", 35129 ATy(qTy, 35130 PTy(uTy, 35131 qTy)), 35132 TP[Var("mc", 35133 CTy"MachineCode"), 35134 LS 35135 "RegisterShiftedRegister"]), 35136 MU(LU,qTy)), 35137 Close 35138 (AVar uTy, 35139 MU(Let(bVar"setflags", 35140 EQ(Mop(Cast 35141 F1, 35142 LL[bVar"b'20"]), 35143 LW(1, 35144 1)), 35145 Let(Var("shift_t", 35146 CTy"SRType"), 35147 Call 35148 ("DecodeRegShift", 35149 CTy"SRType", 35150 Mop(Cast 35151 (FTy 2), 35152 LL[bVar"b'6", 35153 bVar"b'5"])), 35154 ITE(Bop(Or, 35155 EQ(Var("opc", 35156 F4), 35157 LW(13, 35158 4)), 35159 EQ(Var("opc", 35160 F4), 35161 LW(15, 35162 4))), 35163 Call 35164 ("Data", 35165 CTy"instruction", 35166 Call 35167 ("ShiftRegister", 35168 CTy"Data", 35169 TP[Bop(Bit, 35170 Var("opc", 35171 F4), 35172 LN 35173 1), 35174 bVar"setflags", 35175 Var("Rd", 35176 F4), 35177 Var("Rm", 35178 F4), 35179 Var("shift_t", 35180 CTy"SRType"), 35181 Var("Rs", 35182 F4)])), 35183 Call 35184 ("Data", 35185 CTy"instruction", 35186 Call 35187 ("RegisterShiftedRegister", 35188 CTy"Data", 35189 TP[Var("opc", 35190 F4), 35191 bVar"setflags", 35192 Var("Rd", 35193 F4), 35194 Var("Rn", 35195 F4), 35196 Var("Rm", 35197 F4), 35198 Var("shift_t", 35199 CTy"SRType"), 35200 Var("Rs", 35201 F4)]))))), 35202 qTy))), 35203 Call 35204 ("Skip", 35205 ATy(qTy, 35206 PTy(CTy"instruction", 35207 qTy)),LU)))))))))), 35208 (Bop(And,Mop(Not,bVar"b'24"), 35209 Bop(And,Mop(Not,bVar"b'23"), 35210 Bop(And,Mop(Not,bVar"b'22"), 35211 Bop(And,bVar"b'7", 35212 Bop(And,Mop(Not,bVar"b'6"), 35213 Bop(And,Mop(Not,bVar"b'5"), 35214 bVar"b'4")))))), 35215 Let(Var("Rn",F4), 35216 Mop(Cast F4, 35217 LL[bVar"b'3",bVar"b'2",bVar"b'1", 35218 bVar"b'0"]), 35219 Let(Var("Rm",F4), 35220 Mop(Cast F4, 35221 LL[bVar"b'11",bVar"b'10",bVar"b'9", 35222 bVar"b'8"]), 35223 Let(Var("Ra",F4), 35224 Mop(Cast F4, 35225 LL[bVar"b'15",bVar"b'14", 35226 bVar"b'13",bVar"b'12"]), 35227 Let(Var("Rd",F4), 35228 Mop(Cast F4, 35229 LL[bVar"b'19",bVar"b'18", 35230 bVar"b'17",bVar"b'16"]), 35231 Let(Var("A",F1), 35232 Mop(Cast F1,LL[bVar"b'21"]), 35233 MB(Call 35234 ("Take", 35235 ATy(qTy,PTy(bTy,qTy)), 35236 TP[Var("cond",F4),LT]), 35237 Close 35238 (bVar"b", 35239 ITE(bVar"b", 35240 MB(Call 35241 ("ArchVersion", 35242 ATy(qTy, 35243 PTy(nTy, 35244 qTy)), 35245 LU), 35246 Close 35247 (nVar"v", 35248 MB(MB(MB(MB(MU(Bop(Lt, 35249 nVar"v", 35250 LN 35251 6), 35252 qTy), 35253 Close 35254 (bVar"b", 35255 MU(Bop(And, 35256 bVar"b", 35257 EQ(Var("Rd", 35258 F4), 35259 Var("Rn", 35260 F4))), 35261 qTy))), 35262 Close 35263 (bVar"v", 35264 MU(Bop(Or, 35265 Bop(Or, 35266 Bop(Or, 35267 Bop(Or, 35268 EQ(Var("Rd", 35269 F4), 35270 LW(15, 35271 4)), 35272 EQ(Var("Rn", 35273 F4), 35274 LW(15, 35275 4))), 35276 EQ(Var("Rm", 35277 F4), 35278 LW(15, 35279 4))), 35280 Bop(And, 35281 EQ(Var("A", 35282 F1), 35283 LW(1, 35284 1)), 35285 EQ(Var("Ra", 35286 F4), 35287 LW(15, 35288 4)))), 35289 bVar"v"), 35290 qTy))), 35291 Close 35292 (bVar"b", 35293 ITE(bVar"b", 35294 Call 35295 ("DECODE_UNPREDICTABLE", 35296 ATy(qTy, 35297 PTy(uTy, 35298 qTy)), 35299 TP[Var("mc", 35300 CTy"MachineCode"), 35301 LS 35302 "Multiply"]), 35303 MU(LU, 35304 qTy)))), 35305 Close 35306 (AVar 35307 uTy, 35308 MU(Let(bVar"setflags", 35309 EQ(Mop(Cast 35310 F1, 35311 LL[bVar"b'20"]), 35312 LW(1, 35313 1)), 35314 ITE(EQ(Var("A", 35315 F1), 35316 LW(1, 35317 1)), 35318 Call 35319 ("Multiply", 35320 CTy"instruction", 35321 Call 35322 ("MultiplyAccumulate", 35323 CTy"Multiply", 35324 TP[bVar"setflags", 35325 Var("Rd", 35326 F4), 35327 Var("Rn", 35328 F4), 35329 Var("Rm", 35330 F4), 35331 Var("Ra", 35332 F4)])), 35333 Call 35334 ("Multiply", 35335 CTy"instruction", 35336 Call 35337 ("Multiply32", 35338 CTy"Multiply", 35339 TP[bVar"setflags", 35340 Var("Rd", 35341 F4), 35342 Var("Rn", 35343 F4), 35344 Var("Rm", 35345 F4)])))), 35346 qTy))))), 35347 Call 35348 ("Skip", 35349 ATy(qTy, 35350 PTy(CTy"instruction", 35351 qTy)),LU)))))))))), 35352 (Bop(And,Mop(Not,bVar"b'24"), 35353 Bop(And,Mop(Not,bVar"b'23"), 35354 Bop(And,bVar"b'22", 35355 Bop(And,Mop(Not,bVar"b'21"), 35356 Bop(And,Mop(Not,bVar"b'20"), 35357 Bop(And,bVar"b'7", 35358 Bop(And, 35359 Mop(Not,bVar"b'6"), 35360 Bop(And, 35361 Mop(Not,bVar"b'5"), 35362 bVar"b'4")))))))), 35363 Let(Var("Rn",F4), 35364 Mop(Cast F4, 35365 LL[bVar"b'3",bVar"b'2",bVar"b'1", 35366 bVar"b'0"]), 35367 Let(Var("Rm",F4), 35368 Mop(Cast F4, 35369 LL[bVar"b'11",bVar"b'10",bVar"b'9", 35370 bVar"b'8"]), 35371 Let(Var("RdLo",F4), 35372 Mop(Cast F4, 35373 LL[bVar"b'15",bVar"b'14", 35374 bVar"b'13",bVar"b'12"]), 35375 Let(Var("RdHi",F4), 35376 Mop(Cast F4, 35377 LL[bVar"b'19",bVar"b'18", 35378 bVar"b'17",bVar"b'16"]), 35379 MB(Call 35380 ("ArchVersion", 35381 ATy(qTy,PTy(nTy,qTy)),LU), 35382 Close 35383 (nVar"v", 35384 MB(MB(MB(MU(Bop(Ge,nVar"v", 35385 LN 6),qTy), 35386 Close 35387 (bVar"v", 35388 MU(TP[Var("cond", 35389 F4), 35390 bVar"v"], 35391 qTy))), 35392 Close 35393 (Var("v", 35394 PTy(F4,bTy)), 35395 Call 35396 ("Take", 35397 ATy(qTy, 35398 PTy(bTy,qTy)), 35399 Var("v", 35400 PTy(F4,bTy))))), 35401 Close 35402 (bVar"b", 35403 ITE(bVar"b", 35404 MB(ITE(Bop(Or, 35405 Bop(Or, 35406 Bop(Or, 35407 Bop(Or, 35408 EQ(Var("RdHi", 35409 F4), 35410 LW(15, 35411 4)), 35412 EQ(Var("RdLo", 35413 F4), 35414 LW(15, 35415 4))), 35416 EQ(Var("Rn", 35417 F4), 35418 LW(15, 35419 4))), 35420 EQ(Var("Rm", 35421 F4), 35422 LW(15, 35423 4))), 35424 EQ(Var("RdHi", 35425 F4), 35426 Var("RdLo", 35427 F4))), 35428 Call 35429 ("DECODE_UNPREDICTABLE", 35430 ATy(qTy, 35431 PTy(uTy, 35432 qTy)), 35433 TP[Var("mc", 35434 CTy"MachineCode"), 35435 LS 35436 "MultiplyAccumulateAccumulate"]), 35437 MU(LU,qTy)), 35438 Close 35439 (AVar uTy, 35440 MU(Call 35441 ("Multiply", 35442 CTy"instruction", 35443 Call 35444 ("MultiplyAccumulateAccumulate", 35445 CTy"Multiply", 35446 TP[Var("RdHi", 35447 F4), 35448 Var("RdLo", 35449 F4), 35450 Var("Rn", 35451 F4), 35452 Var("Rm", 35453 F4)])), 35454 qTy))), 35455 Call 35456 ("Skip", 35457 ATy(qTy, 35458 PTy(CTy"instruction", 35459 qTy)), 35460 LU))))))))))), 35461 (Bop(And,Mop(Not,bVar"b'24"), 35462 Bop(And,Mop(Not,bVar"b'23"), 35463 Bop(And,bVar"b'22", 35464 Bop(And,bVar"b'21", 35465 Bop(And,Mop(Not,bVar"b'20"), 35466 Bop(And,bVar"b'7", 35467 Bop(And, 35468 Mop(Not,bVar"b'6"), 35469 Bop(And, 35470 Mop(Not,bVar"b'5"), 35471 bVar"b'4")))))))), 35472 Let(Var("Rn",F4), 35473 Mop(Cast F4, 35474 LL[bVar"b'3",bVar"b'2",bVar"b'1", 35475 bVar"b'0"]), 35476 Let(Var("Rm",F4), 35477 Mop(Cast F4, 35478 LL[bVar"b'11",bVar"b'10",bVar"b'9", 35479 bVar"b'8"]), 35480 Let(Var("Ra",F4), 35481 Mop(Cast F4, 35482 LL[bVar"b'15",bVar"b'14", 35483 bVar"b'13",bVar"b'12"]), 35484 Let(Var("Rd",F4), 35485 Mop(Cast F4, 35486 LL[bVar"b'19",bVar"b'18", 35487 bVar"b'17",bVar"b'16"]), 35488 MB(Call 35489 ("HaveThumb2", 35490 ATy(qTy,PTy(bTy,qTy)),LU), 35491 Close 35492 (bVar"v", 35493 MB(MB(MU(TP[Var("cond",F4), 35494 bVar"v"],qTy), 35495 Close 35496 (Var("v", 35497 PTy(F4,bTy)), 35498 Call 35499 ("Take", 35500 ATy(qTy, 35501 PTy(bTy,qTy)), 35502 Var("v", 35503 PTy(F4,bTy))))), 35504 Close 35505 (bVar"b", 35506 ITE(bVar"b", 35507 MB(ITE(Bop(Or, 35508 Bop(Or, 35509 Bop(Or, 35510 EQ(Var("Rd", 35511 F4), 35512 LW(15, 35513 4)), 35514 EQ(Var("Rn", 35515 F4), 35516 LW(15, 35517 4))), 35518 EQ(Var("Rm", 35519 F4), 35520 LW(15, 35521 4))), 35522 EQ(Var("Ra", 35523 F4), 35524 LW(15, 35525 4))), 35526 Call 35527 ("DECODE_UNPREDICTABLE", 35528 ATy(qTy, 35529 PTy(uTy, 35530 qTy)), 35531 TP[Var("mc", 35532 CTy"MachineCode"), 35533 LS 35534 "MultiplySubtract"]), 35535 MU(LU,qTy)), 35536 Close 35537 (AVar uTy, 35538 MU(Call 35539 ("Multiply", 35540 CTy"instruction", 35541 Call 35542 ("MultiplySubtract", 35543 CTy"Multiply", 35544 TP[Var("Rd", 35545 F4), 35546 Var("Rn", 35547 F4), 35548 Var("Rm", 35549 F4), 35550 Var("Ra", 35551 F4)])), 35552 qTy))), 35553 Call 35554 ("Skip", 35555 ATy(qTy, 35556 PTy(CTy"instruction", 35557 qTy)), 35558 LU))))))))))), 35559 (Bop(And,Mop(Not,bVar"b'24"), 35560 Bop(And,bVar"b'23", 35561 Bop(And,bVar"b'7", 35562 Bop(And,Mop(Not,bVar"b'6"), 35563 Bop(And,Mop(Not,bVar"b'5"), 35564 bVar"b'4"))))), 35565 Let(Var("Rn",F4), 35566 Mop(Cast F4, 35567 LL[bVar"b'3",bVar"b'2",bVar"b'1", 35568 bVar"b'0"]), 35569 Let(Var("Rm",F4), 35570 Mop(Cast F4, 35571 LL[bVar"b'11",bVar"b'10",bVar"b'9", 35572 bVar"b'8"]), 35573 Let(Var("RdLo",F4), 35574 Mop(Cast F4, 35575 LL[bVar"b'15",bVar"b'14", 35576 bVar"b'13",bVar"b'12"]), 35577 Let(Var("RdHi",F4), 35578 Mop(Cast F4, 35579 LL[bVar"b'19",bVar"b'18", 35580 bVar"b'17",bVar"b'16"]), 35581 MB(Call 35582 ("Take", 35583 ATy(qTy,PTy(bTy,qTy)), 35584 TP[Var("cond",F4),LT]), 35585 Close 35586 (bVar"b", 35587 ITE(bVar"b", 35588 MB(Call 35589 ("ArchVersion", 35590 ATy(qTy, 35591 PTy(nTy,qTy)), 35592 LU), 35593 Close 35594 (nVar"v", 35595 MB(MB(MB(MB(MU(Bop(Lt, 35596 nVar"v", 35597 LN 35598 6), 35599 qTy), 35600 Close 35601 (bVar"b", 35602 MU(Bop(And, 35603 bVar"b", 35604 Bop(Or, 35605 EQ(Var("RdHi", 35606 F4), 35607 Var("Rn", 35608 F4)), 35609 EQ(Var("RdLo", 35610 F4), 35611 Var("Rn", 35612 F4)))), 35613 qTy))), 35614 Close 35615 (bVar"v", 35616 MU(Bop(Or, 35617 Bop(Or, 35618 Bop(Or, 35619 Bop(Or, 35620 Bop(Or, 35621 EQ(Var("RdLo", 35622 F4), 35623 LW(15, 35624 4)), 35625 EQ(Var("RdHi", 35626 F4), 35627 LW(15, 35628 4))), 35629 EQ(Var("Rn", 35630 F4), 35631 LW(15, 35632 4))), 35633 EQ(Var("Rm", 35634 F4), 35635 LW(15, 35636 4))), 35637 EQ(Var("RdHi", 35638 F4), 35639 Var("RdLo", 35640 F4))), 35641 bVar"v"), 35642 qTy))), 35643 Close 35644 (bVar"b", 35645 ITE(bVar"b", 35646 Call 35647 ("DECODE_UNPREDICTABLE", 35648 ATy(qTy, 35649 PTy(uTy, 35650 qTy)), 35651 TP[Var("mc", 35652 CTy"MachineCode"), 35653 LS 35654 "MultiplyLong"]), 35655 MU(LU, 35656 qTy)))), 35657 Close 35658 (AVar uTy, 35659 MU(Call 35660 ("Multiply", 35661 CTy"instruction", 35662 Call 35663 ("MultiplyLong", 35664 CTy"Multiply", 35665 TP[EQ(Mop(Cast 35666 F1, 35667 LL[bVar"b'21"]), 35668 LW(1, 35669 1)), 35670 EQ(Mop(Cast 35671 F1, 35672 LL[bVar"b'22"]), 35673 LW(1, 35674 1)), 35675 EQ(Mop(Cast 35676 F1, 35677 LL[bVar"b'20"]), 35678 LW(1, 35679 1)), 35680 Var("RdHi", 35681 F4), 35682 Var("RdLo", 35683 F4), 35684 Var("Rn", 35685 F4), 35686 Var("Rm", 35687 F4)])), 35688 qTy))))), 35689 Call 35690 ("Skip", 35691 ATy(qTy, 35692 PTy(CTy"instruction", 35693 qTy)),LU))))))))), 35694 (Bop(And,bVar"b'24", 35695 Bop(And,Mop(Not,bVar"b'23"), 35696 Bop(And,Mop(Not,bVar"b'21"), 35697 Bop(And,Mop(Not,bVar"b'20"), 35698 Bop(And,bVar"b'7", 35699 Bop(And,Mop(Not,bVar"b'6"), 35700 Bop(And, 35701 Mop(Not,bVar"b'5"), 35702 bVar"b'4"))))))), 35703 Let(Var("Rt2",F4), 35704 Mop(Cast F4, 35705 LL[bVar"b'3",bVar"b'2",bVar"b'1", 35706 bVar"b'0"]), 35707 Let(Var("Rt",F4), 35708 Mop(Cast F4, 35709 LL[bVar"b'15",bVar"b'14",bVar"b'13", 35710 bVar"b'12"]), 35711 Let(Var("Rn",F4), 35712 Mop(Cast F4, 35713 LL[bVar"b'19",bVar"b'18", 35714 bVar"b'17",bVar"b'16"]), 35715 MB(Call 35716 ("Take",ATy(qTy,PTy(bTy,qTy)), 35717 TP[Var("cond",F4),LT]), 35718 Close 35719 (bVar"b", 35720 ITE(bVar"b", 35721 MB(ITE(Bop(Or, 35722 Bop(Or, 35723 Bop(Or, 35724 Bop(Or, 35725 EQ(Var("Rt", 35726 F4), 35727 LW(15, 35728 4)), 35729 EQ(Var("Rt2", 35730 F4), 35731 LW(15, 35732 4))), 35733 EQ(Var("Rn", 35734 F4), 35735 LW(15, 35736 4))), 35737 EQ(Var("Rn", 35738 F4), 35739 Var("Rt", 35740 F4))), 35741 EQ(Var("Rn",F4), 35742 Var("Rt2",F4))), 35743 Call 35744 ("DECODE_UNPREDICTABLE", 35745 ATy(qTy, 35746 PTy(uTy,qTy)), 35747 TP[Var("mc", 35748 CTy"MachineCode"), 35749 LS"Swap"]), 35750 MU(LU,qTy)), 35751 Close 35752 (AVar uTy, 35753 MU(Call 35754 ("Swap", 35755 CTy"instruction", 35756 TP[EQ(Mop(Cast 35757 F1, 35758 LL[bVar"b'22"]), 35759 LW(1,1)), 35760 Var("Rt",F4), 35761 Var("Rt2",F4), 35762 Var("Rn",F4)]), 35763 qTy))), 35764 Call 35765 ("Skip", 35766 ATy(qTy, 35767 PTy(CTy"instruction", 35768 qTy)),LU)))))))), 35769 (Bop(And,bVar"b'24", 35770 Bop(And,bVar"b'23", 35771 Bop(And,Mop(Not,bVar"b'22"), 35772 Bop(And,Mop(Not,bVar"b'21"), 35773 Bop(And,Mop(Not,bVar"b'20"), 35774 Bop(And,bVar"b'7", 35775 Bop(And, 35776 Mop(Not,bVar"b'6"), 35777 Bop(And, 35778 Mop(Not,bVar"b'5"), 35779 bVar"b'4")))))))), 35780 Let(Var("Rt",F4), 35781 Mop(Cast F4, 35782 LL[bVar"b'3",bVar"b'2",bVar"b'1", 35783 bVar"b'0"]), 35784 Let(Var("Rd",F4), 35785 Mop(Cast F4, 35786 LL[bVar"b'15",bVar"b'14",bVar"b'13", 35787 bVar"b'12"]), 35788 Let(Var("Rn",F4), 35789 Mop(Cast F4, 35790 LL[bVar"b'19",bVar"b'18", 35791 bVar"b'17",bVar"b'16"]), 35792 MB(Call 35793 ("ArchVersion", 35794 ATy(qTy,PTy(nTy,qTy)),LU), 35795 Close 35796 (nVar"v", 35797 MB(MB(MB(MU(Bop(Ge,nVar"v",LN 6), 35798 qTy), 35799 Close 35800 (bVar"v", 35801 MU(TP[Var("cond",F4), 35802 bVar"v"],qTy))), 35803 Close 35804 (Var("v",PTy(F4,bTy)), 35805 Call 35806 ("Take", 35807 ATy(qTy, 35808 PTy(bTy,qTy)), 35809 Var("v",PTy(F4,bTy))))), 35810 Close 35811 (bVar"b", 35812 ITE(bVar"b", 35813 MB(ITE(Bop(Or, 35814 Bop(Or, 35815 Bop(Or, 35816 Bop(Or, 35817 EQ(Var("Rd", 35818 F4), 35819 LW(15, 35820 4)), 35821 EQ(Var("Rt", 35822 F4), 35823 LW(15, 35824 4))), 35825 EQ(Var("Rn", 35826 F4), 35827 LW(15, 35828 4))), 35829 EQ(Var("Rd", 35830 F4), 35831 Var("Rn", 35832 F4))), 35833 EQ(Var("Rd", 35834 F4), 35835 Var("Rt", 35836 F4))), 35837 Call 35838 ("DECODE_UNPREDICTABLE", 35839 ATy(qTy, 35840 PTy(uTy, 35841 qTy)), 35842 TP[Var("mc", 35843 CTy"MachineCode"), 35844 LS 35845 "StoreExclusive"]), 35846 MU(LU,qTy)), 35847 Close 35848 (AVar uTy, 35849 MU(Call 35850 ("Store", 35851 CTy"instruction", 35852 Call 35853 ("StoreExclusive", 35854 CTy"Store", 35855 TP[Var("Rd", 35856 F4), 35857 Var("Rt", 35858 F4), 35859 Var("Rn", 35860 F4), 35861 LW(0, 35862 32)])), 35863 qTy))), 35864 Call 35865 ("Skip", 35866 ATy(qTy, 35867 PTy(CTy"instruction", 35868 qTy)),LU)))))))))), 35869 (Bop(And,bVar"b'24", 35870 Bop(And,bVar"b'23", 35871 Bop(And,Mop(Not,bVar"b'22"), 35872 Bop(And,Mop(Not,bVar"b'21"), 35873 Bop(And,bVar"b'20", 35874 Bop(And,bVar"b'7", 35875 Bop(And, 35876 Mop(Not,bVar"b'6"), 35877 Bop(And, 35878 Mop(Not,bVar"b'5"), 35879 bVar"b'4")))))))), 35880 Let(Var("Rt",F4), 35881 Mop(Cast F4, 35882 LL[bVar"b'15",bVar"b'14",bVar"b'13", 35883 bVar"b'12"]), 35884 Let(Var("Rn",F4), 35885 Mop(Cast F4, 35886 LL[bVar"b'19",bVar"b'18",bVar"b'17", 35887 bVar"b'16"]), 35888 MB(Call 35889 ("ArchVersion", 35890 ATy(qTy,PTy(nTy,qTy)),LU), 35891 Close 35892 (nVar"v", 35893 MB(MB(MB(MU(Bop(Ge,nVar"v",LN 6), 35894 qTy), 35895 Close 35896 (bVar"v", 35897 MU(TP[Var("cond",F4), 35898 bVar"v"],qTy))), 35899 Close 35900 (Var("v",PTy(F4,bTy)), 35901 Call 35902 ("Take", 35903 ATy(qTy,PTy(bTy,qTy)), 35904 Var("v",PTy(F4,bTy))))), 35905 Close 35906 (bVar"b", 35907 ITE(bVar"b", 35908 MB(ITE(Bop(Or, 35909 EQ(Var("Rt",F4), 35910 LW(15,4)), 35911 EQ(Var("Rn",F4), 35912 LW(15,4))), 35913 Call 35914 ("DECODE_UNPREDICTABLE", 35915 ATy(qTy, 35916 PTy(uTy,qTy)), 35917 TP[Var("mc", 35918 CTy"MachineCode"), 35919 LS 35920 "LoadExclusive"]), 35921 MU(LU,qTy)), 35922 Close 35923 (AVar uTy, 35924 MU(Call 35925 ("Load", 35926 CTy"instruction", 35927 Call 35928 ("LoadExclusive", 35929 CTy"Load", 35930 TP[Var("Rt", 35931 F4), 35932 Var("Rn", 35933 F4), 35934 LW(0,32)])), 35935 qTy))), 35936 Call 35937 ("Skip", 35938 ATy(qTy, 35939 PTy(CTy"instruction", 35940 qTy)),LU))))))))), 35941 (Bop(And,bVar"b'24", 35942 Bop(And,bVar"b'23", 35943 Bop(And,Mop(Not,bVar"b'22"), 35944 Bop(And,bVar"b'21", 35945 Bop(And,Mop(Not,bVar"b'20"), 35946 Bop(And,bVar"b'7", 35947 Bop(And, 35948 Mop(Not,bVar"b'6"), 35949 Bop(And, 35950 Mop(Not,bVar"b'5"), 35951 bVar"b'4")))))))), 35952 Let(Var("Rt",F4), 35953 Mop(Cast F4, 35954 LL[bVar"b'3",bVar"b'2",bVar"b'1", 35955 bVar"b'0"]), 35956 Let(Var("Rd",F4), 35957 Mop(Cast F4, 35958 LL[bVar"b'15",bVar"b'14",bVar"b'13", 35959 bVar"b'12"]), 35960 Let(Var("Rn",F4), 35961 Mop(Cast F4, 35962 LL[bVar"b'19",bVar"b'18", 35963 bVar"b'17",bVar"b'16"]), 35964 MB(MR(Close 35965 (qVar"s", 35966 Dest 35967 ("Architecture", 35968 CTy"Architecture",qVar"s"))), 35969 Close 35970 (Var("v",CTy"Architecture"), 35971 MB(MB(MB(MU(Bop(In, 35972 Var("v", 35973 CTy"Architecture"), 35974 SL[LC("ARMv6K", 35975 CTy"Architecture"), 35976 LC("ARMv7_A", 35977 CTy"Architecture"), 35978 LC("ARMv7_R", 35979 CTy"Architecture")]), 35980 qTy), 35981 Close 35982 (bVar"v", 35983 MU(TP[Var("cond",F4), 35984 bVar"v"],qTy))), 35985 Close 35986 (Var("v",PTy(F4,bTy)), 35987 Call 35988 ("Take", 35989 ATy(qTy, 35990 PTy(bTy,qTy)), 35991 Var("v",PTy(F4,bTy))))), 35992 Close 35993 (bVar"b", 35994 ITE(bVar"b", 35995 Let(Var("Rt2",F4), 35996 Bop(Add, 35997 Var("Rt",F4), 35998 LW(1,4)), 35999 MB(ITE(Bop(Or, 36000 Bop(Or, 36001 Bop(Or, 36002 Bop(Or, 36003 Bop(Or, 36004 Bop(Or, 36005 EQ(Var("Rd", 36006 F4), 36007 LW(15, 36008 4)), 36009 Bop(Bit, 36010 Var("Rt", 36011 F4), 36012 LN 36013 0)), 36014 EQ(Var("Rt", 36015 F4), 36016 LW(14, 36017 4))), 36018 EQ(Var("Rn", 36019 F4), 36020 LW(15, 36021 4))), 36022 EQ(Var("Rd", 36023 F4), 36024 Var("Rn", 36025 F4))), 36026 EQ(Var("Rd", 36027 F4), 36028 Var("Rt", 36029 F4))), 36030 EQ(Var("Rd", 36031 F4), 36032 Var("Rt2", 36033 F4))), 36034 Call 36035 ("DECODE_UNPREDICTABLE", 36036 ATy(qTy, 36037 PTy(uTy, 36038 qTy)), 36039 TP[Var("mc", 36040 CTy"MachineCode"), 36041 LS 36042 "StoreExclusiveDoubleword"]), 36043 MU(LU,qTy)), 36044 Close 36045 (AVar uTy, 36046 MU(Call 36047 ("Store", 36048 CTy"instruction", 36049 Call 36050 ("StoreExclusiveDoubleword", 36051 CTy"Store", 36052 TP[Var("Rd", 36053 F4), 36054 Var("Rt", 36055 F4), 36056 Var("Rt2", 36057 F4), 36058 Var("Rn", 36059 F4)])), 36060 qTy)))), 36061 Call 36062 ("Skip", 36063 ATy(qTy, 36064 PTy(CTy"instruction", 36065 qTy)),LU)))))))))), 36066 (Bop(And,bVar"b'24", 36067 Bop(And,bVar"b'23", 36068 Bop(And,Mop(Not,bVar"b'22"), 36069 Bop(And,bVar"b'21", 36070 Bop(And,bVar"b'20", 36071 Bop(And,bVar"b'7", 36072 Bop(And, 36073 Mop(Not,bVar"b'6"), 36074 Bop(And, 36075 Mop(Not,bVar"b'5"), 36076 bVar"b'4")))))))), 36077 Let(Var("Rt",F4), 36078 Mop(Cast F4, 36079 LL[bVar"b'15",bVar"b'14",bVar"b'13", 36080 bVar"b'12"]), 36081 Let(Var("Rn",F4), 36082 Mop(Cast F4, 36083 LL[bVar"b'19",bVar"b'18",bVar"b'17", 36084 bVar"b'16"]), 36085 MB(MR(Close 36086 (qVar"s", 36087 Dest 36088 ("Architecture", 36089 CTy"Architecture",qVar"s"))), 36090 Close 36091 (Var("v",CTy"Architecture"), 36092 MB(MB(MB(MU(Bop(In, 36093 Var("v", 36094 CTy"Architecture"), 36095 SL[LC("ARMv6K", 36096 CTy"Architecture"), 36097 LC("ARMv7_A", 36098 CTy"Architecture"), 36099 LC("ARMv7_R", 36100 CTy"Architecture")]), 36101 qTy), 36102 Close 36103 (bVar"v", 36104 MU(TP[Var("cond",F4), 36105 bVar"v"],qTy))), 36106 Close 36107 (Var("v",PTy(F4,bTy)), 36108 Call 36109 ("Take", 36110 ATy(qTy,PTy(bTy,qTy)), 36111 Var("v",PTy(F4,bTy))))), 36112 Close 36113 (bVar"b", 36114 ITE(bVar"b", 36115 MB(ITE(Bop(Or, 36116 Bop(Or, 36117 Bop(Bit, 36118 Var("Rt", 36119 F4), 36120 LN 0), 36121 EQ(Var("Rt", 36122 F4), 36123 LW(14,4))), 36124 EQ(Var("Rn",F4), 36125 LW(15,4))), 36126 Call 36127 ("DECODE_UNPREDICTABLE", 36128 ATy(qTy, 36129 PTy(uTy,qTy)), 36130 TP[Var("mc", 36131 CTy"MachineCode"), 36132 LS 36133 "LoadExclusiveDoubleword"]), 36134 MU(LU,qTy)), 36135 Close 36136 (AVar uTy, 36137 MU(Call 36138 ("Load", 36139 CTy"instruction", 36140 Call 36141 ("LoadExclusiveDoubleword", 36142 CTy"Load", 36143 TP[Var("Rt", 36144 F4), 36145 Bop(Add, 36146 Var("Rt", 36147 F4), 36148 LW(1, 36149 4)), 36150 Var("Rn", 36151 F4)])), 36152 qTy))), 36153 Call 36154 ("Skip", 36155 ATy(qTy, 36156 PTy(CTy"instruction", 36157 qTy)),LU))))))))), 36158 (Bop(And,bVar"b'24", 36159 Bop(And,bVar"b'23", 36160 Bop(And,bVar"b'22", 36161 Bop(And,Mop(Not,bVar"b'21"), 36162 Bop(And,Mop(Not,bVar"b'20"), 36163 Bop(And,bVar"b'7", 36164 Bop(And, 36165 Mop(Not,bVar"b'6"), 36166 Bop(And, 36167 Mop(Not,bVar"b'5"), 36168 bVar"b'4")))))))), 36169 Let(Var("Rt",F4), 36170 Mop(Cast F4, 36171 LL[bVar"b'3",bVar"b'2",bVar"b'1", 36172 bVar"b'0"]), 36173 Let(Var("Rd",F4), 36174 Mop(Cast F4, 36175 LL[bVar"b'15",bVar"b'14",bVar"b'13", 36176 bVar"b'12"]), 36177 Let(Var("Rn",F4), 36178 Mop(Cast F4, 36179 LL[bVar"b'19",bVar"b'18", 36180 bVar"b'17",bVar"b'16"]), 36181 MB(MR(Close 36182 (qVar"s", 36183 Dest 36184 ("Architecture", 36185 CTy"Architecture",qVar"s"))), 36186 Close 36187 (Var("v",CTy"Architecture"), 36188 MB(MB(MB(MU(Bop(In, 36189 Var("v", 36190 CTy"Architecture"), 36191 SL[LC("ARMv6K", 36192 CTy"Architecture"), 36193 LC("ARMv7_A", 36194 CTy"Architecture"), 36195 LC("ARMv7_R", 36196 CTy"Architecture")]), 36197 qTy), 36198 Close 36199 (bVar"v", 36200 MU(TP[Var("cond",F4), 36201 bVar"v"],qTy))), 36202 Close 36203 (Var("v",PTy(F4,bTy)), 36204 Call 36205 ("Take", 36206 ATy(qTy, 36207 PTy(bTy,qTy)), 36208 Var("v",PTy(F4,bTy))))), 36209 Close 36210 (bVar"b", 36211 ITE(bVar"b", 36212 MB(ITE(Bop(Or, 36213 Bop(Or, 36214 Bop(Or, 36215 Bop(Or, 36216 EQ(Var("Rd", 36217 F4), 36218 LW(15, 36219 4)), 36220 EQ(Var("Rt", 36221 F4), 36222 LW(15, 36223 4))), 36224 EQ(Var("Rn", 36225 F4), 36226 LW(15, 36227 4))), 36228 EQ(Var("Rd", 36229 F4), 36230 Var("Rn", 36231 F4))), 36232 EQ(Var("Rd", 36233 F4), 36234 Var("Rt", 36235 F4))), 36236 Call 36237 ("DECODE_UNPREDICTABLE", 36238 ATy(qTy, 36239 PTy(uTy, 36240 qTy)), 36241 TP[Var("mc", 36242 CTy"MachineCode"), 36243 LS 36244 "StoreExclusiveByte"]), 36245 MU(LU,qTy)), 36246 Close 36247 (AVar uTy, 36248 MU(Call 36249 ("Store", 36250 CTy"instruction", 36251 Call 36252 ("StoreExclusiveByte", 36253 CTy"Store", 36254 TP[Var("Rd", 36255 F4), 36256 Var("Rt", 36257 F4), 36258 Var("Rn", 36259 F4)])), 36260 qTy))), 36261 Call 36262 ("Skip", 36263 ATy(qTy, 36264 PTy(CTy"instruction", 36265 qTy)),LU)))))))))), 36266 (Bop(And,bVar"b'24", 36267 Bop(And,bVar"b'23", 36268 Bop(And,bVar"b'22", 36269 Bop(And,Mop(Not,bVar"b'21"), 36270 Bop(And,bVar"b'20", 36271 Bop(And,bVar"b'7", 36272 Bop(And, 36273 Mop(Not,bVar"b'6"), 36274 Bop(And, 36275 Mop(Not,bVar"b'5"), 36276 bVar"b'4")))))))), 36277 Let(Var("Rt",F4), 36278 Mop(Cast F4, 36279 LL[bVar"b'15",bVar"b'14",bVar"b'13", 36280 bVar"b'12"]), 36281 Let(Var("Rn",F4), 36282 Mop(Cast F4, 36283 LL[bVar"b'19",bVar"b'18",bVar"b'17", 36284 bVar"b'16"]), 36285 MB(MR(Close 36286 (qVar"s", 36287 Dest 36288 ("Architecture", 36289 CTy"Architecture",qVar"s"))), 36290 Close 36291 (Var("v",CTy"Architecture"), 36292 MB(MB(MB(MU(Bop(In, 36293 Var("v", 36294 CTy"Architecture"), 36295 SL[LC("ARMv6K", 36296 CTy"Architecture"), 36297 LC("ARMv7_A", 36298 CTy"Architecture"), 36299 LC("ARMv7_R", 36300 CTy"Architecture")]), 36301 qTy), 36302 Close 36303 (bVar"v", 36304 MU(TP[Var("cond",F4), 36305 bVar"v"],qTy))), 36306 Close 36307 (Var("v",PTy(F4,bTy)), 36308 Call 36309 ("Take", 36310 ATy(qTy,PTy(bTy,qTy)), 36311 Var("v",PTy(F4,bTy))))), 36312 Close 36313 (bVar"b", 36314 ITE(bVar"b", 36315 MB(ITE(Bop(Or, 36316 EQ(Var("Rt",F4), 36317 LW(15,4)), 36318 EQ(Var("Rn",F4), 36319 LW(15,4))), 36320 Call 36321 ("DECODE_UNPREDICTABLE", 36322 ATy(qTy, 36323 PTy(uTy,qTy)), 36324 TP[Var("mc", 36325 CTy"MachineCode"), 36326 LS 36327 "LoadExclusiveByte"]), 36328 MU(LU,qTy)), 36329 Close 36330 (AVar uTy, 36331 MU(Call 36332 ("Load", 36333 CTy"instruction", 36334 Call 36335 ("LoadExclusiveByte", 36336 CTy"Load", 36337 TP[Var("Rt", 36338 F4), 36339 Var("Rn", 36340 F4)])), 36341 qTy))), 36342 Call 36343 ("Skip", 36344 ATy(qTy, 36345 PTy(CTy"instruction", 36346 qTy)),LU))))))))), 36347 (Bop(And,bVar"b'24", 36348 Bop(And,bVar"b'23", 36349 Bop(And,bVar"b'22", 36350 Bop(And,bVar"b'21", 36351 Bop(And,Mop(Not,bVar"b'20"), 36352 Bop(And,bVar"b'7", 36353 Bop(And, 36354 Mop(Not,bVar"b'6"), 36355 Bop(And, 36356 Mop(Not,bVar"b'5"), 36357 bVar"b'4")))))))), 36358 Let(Var("Rt",F4), 36359 Mop(Cast F4, 36360 LL[bVar"b'3",bVar"b'2",bVar"b'1", 36361 bVar"b'0"]), 36362 Let(Var("Rd",F4), 36363 Mop(Cast F4, 36364 LL[bVar"b'15",bVar"b'14",bVar"b'13", 36365 bVar"b'12"]), 36366 Let(Var("Rn",F4), 36367 Mop(Cast F4, 36368 LL[bVar"b'19",bVar"b'18", 36369 bVar"b'17",bVar"b'16"]), 36370 MB(MR(Close 36371 (qVar"s", 36372 Dest 36373 ("Architecture", 36374 CTy"Architecture",qVar"s"))), 36375 Close 36376 (Var("v",CTy"Architecture"), 36377 MB(MB(MB(MU(Bop(In, 36378 Var("v", 36379 CTy"Architecture"), 36380 SL[LC("ARMv6K", 36381 CTy"Architecture"), 36382 LC("ARMv7_A", 36383 CTy"Architecture"), 36384 LC("ARMv7_R", 36385 CTy"Architecture")]), 36386 qTy), 36387 Close 36388 (bVar"v", 36389 MU(TP[Var("cond",F4), 36390 bVar"v"],qTy))), 36391 Close 36392 (Var("v",PTy(F4,bTy)), 36393 Call 36394 ("Take", 36395 ATy(qTy, 36396 PTy(bTy,qTy)), 36397 Var("v",PTy(F4,bTy))))), 36398 Close 36399 (bVar"b", 36400 ITE(bVar"b", 36401 MB(ITE(Bop(Or, 36402 Bop(Or, 36403 Bop(Or, 36404 Bop(Or, 36405 EQ(Var("Rd", 36406 F4), 36407 LW(15, 36408 4)), 36409 EQ(Var("Rt", 36410 F4), 36411 LW(15, 36412 4))), 36413 EQ(Var("Rn", 36414 F4), 36415 LW(15, 36416 4))), 36417 EQ(Var("Rd", 36418 F4), 36419 Var("Rn", 36420 F4))), 36421 EQ(Var("Rd", 36422 F4), 36423 Var("Rt", 36424 F4))), 36425 Call 36426 ("DECODE_UNPREDICTABLE", 36427 ATy(qTy, 36428 PTy(uTy, 36429 qTy)), 36430 TP[Var("mc", 36431 CTy"MachineCode"), 36432 LS 36433 "StoreExclusiveHalf"]), 36434 MU(LU,qTy)), 36435 Close 36436 (AVar uTy, 36437 MU(Call 36438 ("Store", 36439 CTy"instruction", 36440 Call 36441 ("StoreExclusiveHalf", 36442 CTy"Store", 36443 TP[Var("Rd", 36444 F4), 36445 Var("Rt", 36446 F4), 36447 Var("Rn", 36448 F4)])), 36449 qTy))), 36450 Call 36451 ("Skip", 36452 ATy(qTy, 36453 PTy(CTy"instruction", 36454 qTy)),LU)))))))))), 36455 (Bop(And,bVar"b'24", 36456 Bop(And,bVar"b'23", 36457 Bop(And,bVar"b'22", 36458 Bop(And,bVar"b'21", 36459 Bop(And,bVar"b'20", 36460 Bop(And,bVar"b'7", 36461 Bop(And, 36462 Mop(Not,bVar"b'6"), 36463 Bop(And, 36464 Mop(Not,bVar"b'5"), 36465 bVar"b'4")))))))), 36466 Let(Var("Rt",F4), 36467 Mop(Cast F4, 36468 LL[bVar"b'15",bVar"b'14",bVar"b'13", 36469 bVar"b'12"]), 36470 Let(Var("Rn",F4), 36471 Mop(Cast F4, 36472 LL[bVar"b'19",bVar"b'18",bVar"b'17", 36473 bVar"b'16"]), 36474 MB(MR(Close 36475 (qVar"s", 36476 Dest 36477 ("Architecture", 36478 CTy"Architecture",qVar"s"))), 36479 Close 36480 (Var("v",CTy"Architecture"), 36481 MB(MB(MB(MU(Bop(In, 36482 Var("v", 36483 CTy"Architecture"), 36484 SL[LC("ARMv6K", 36485 CTy"Architecture"), 36486 LC("ARMv7_A", 36487 CTy"Architecture"), 36488 LC("ARMv7_R", 36489 CTy"Architecture")]), 36490 qTy), 36491 Close 36492 (bVar"v", 36493 MU(TP[Var("cond",F4), 36494 bVar"v"],qTy))), 36495 Close 36496 (Var("v",PTy(F4,bTy)), 36497 Call 36498 ("Take", 36499 ATy(qTy,PTy(bTy,qTy)), 36500 Var("v",PTy(F4,bTy))))), 36501 Close 36502 (bVar"b", 36503 ITE(bVar"b", 36504 MB(ITE(Bop(Or, 36505 EQ(Var("Rt",F4), 36506 LW(15,4)), 36507 EQ(Var("Rn",F4), 36508 LW(15,4))), 36509 Call 36510 ("DECODE_UNPREDICTABLE", 36511 ATy(qTy, 36512 PTy(uTy,qTy)), 36513 TP[Var("mc", 36514 CTy"MachineCode"), 36515 LS 36516 "LoadExclusiveHalf"]), 36517 MU(LU,qTy)), 36518 Close 36519 (AVar uTy, 36520 MU(Call 36521 ("Load", 36522 CTy"instruction", 36523 Call 36524 ("LoadExclusiveHalf", 36525 CTy"Load", 36526 TP[Var("Rt", 36527 F4), 36528 Var("Rn", 36529 F4)])), 36530 qTy))), 36531 Call 36532 ("Skip", 36533 ATy(qTy, 36534 PTy(CTy"instruction", 36535 qTy)),LU))))))))), 36536 (Bop(And,Mop(Not,bVar"b'24"), 36537 Bop(And,Mop(Not,bVar"b'22"), 36538 Bop(And,bVar"b'21", 36539 Bop(And,Mop(Not,bVar"b'20"), 36540 Bop(And,bVar"b'7", 36541 Bop(And,Mop(Not,bVar"b'6"), 36542 Bop(And,bVar"b'5", 36543 bVar"b'4"))))))), 36544 Let(Var("Rm",F4), 36545 Mop(Cast F4, 36546 LL[bVar"b'3",bVar"b'2",bVar"b'1", 36547 bVar"b'0"]), 36548 Let(Var("Rt",F4), 36549 Mop(Cast F4, 36550 LL[bVar"b'15",bVar"b'14",bVar"b'13", 36551 bVar"b'12"]), 36552 Let(Var("Rn",F4), 36553 Mop(Cast F4, 36554 LL[bVar"b'19",bVar"b'18", 36555 bVar"b'17",bVar"b'16"]), 36556 MB(Call 36557 ("HaveThumb2", 36558 ATy(qTy,PTy(bTy,qTy)),LU), 36559 Close 36560 (bVar"v", 36561 MB(MB(MU(TP[Var("cond",F4), 36562 bVar"v"],qTy), 36563 Close 36564 (Var("v",PTy(F4,bTy)), 36565 Call 36566 ("Take", 36567 ATy(qTy, 36568 PTy(bTy,qTy)), 36569 Var("v",PTy(F4,bTy))))), 36570 Close 36571 (bVar"b", 36572 ITE(bVar"b", 36573 MB(ITE(Bop(Or, 36574 Bop(Or, 36575 Bop(Or, 36576 EQ(Var("Rt", 36577 F4), 36578 LW(15, 36579 4)), 36580 EQ(Var("Rn", 36581 F4), 36582 LW(15, 36583 4))), 36584 EQ(Var("Rn", 36585 F4), 36586 Var("Rt", 36587 F4))), 36588 EQ(Var("Rm", 36589 F4), 36590 LW(15,4))), 36591 Call 36592 ("DECODE_UNPREDICTABLE", 36593 ATy(qTy, 36594 PTy(uTy, 36595 qTy)), 36596 TP[Var("mc", 36597 CTy"MachineCode"), 36598 LS 36599 "StoreHalfUnprivileged"]), 36600 MU(LU,qTy)), 36601 Close 36602 (AVar uTy, 36603 MU(Call 36604 ("Store", 36605 CTy"instruction", 36606 Call 36607 ("StoreHalfUnprivileged", 36608 CTy"Store", 36609 TP[EQ(Mop(Cast 36610 F1, 36611 LL[bVar"b'23"]), 36612 LW(1, 36613 1)), 36614 LT, 36615 Var("Rt", 36616 F4), 36617 Var("Rn", 36618 F4), 36619 Call 36620 ("register_form2", 36621 CTy"offset2", 36622 Var("Rm", 36623 F4))])), 36624 qTy))), 36625 Call 36626 ("Skip", 36627 ATy(qTy, 36628 PTy(CTy"instruction", 36629 qTy)),LU)))))))))), 36630 (Bop(And,Mop(Not,bVar"b'22"), 36631 Bop(And,Mop(Not,bVar"b'20"), 36632 Bop(And,bVar"b'7", 36633 Bop(And,Mop(Not,bVar"b'6"), 36634 Bop(And,bVar"b'5",bVar"b'4"))))), 36635 Let(Var("Rm",F4), 36636 Mop(Cast F4, 36637 LL[bVar"b'3",bVar"b'2",bVar"b'1", 36638 bVar"b'0"]), 36639 Let(Var("Rt",F4), 36640 Mop(Cast F4, 36641 LL[bVar"b'15",bVar"b'14",bVar"b'13", 36642 bVar"b'12"]), 36643 Let(Var("Rn",F4), 36644 Mop(Cast F4, 36645 LL[bVar"b'19",bVar"b'18", 36646 bVar"b'17",bVar"b'16"]), 36647 Let(Var("P",F1), 36648 Mop(Cast F1,LL[bVar"b'24"]), 36649 MB(Call 36650 ("Take", 36651 ATy(qTy,PTy(bTy,qTy)), 36652 TP[Var("cond",F4),LT]), 36653 Close 36654 (bVar"b", 36655 ITE(bVar"b", 36656 Let(bVar"wback", 36657 Bop(Or, 36658 EQ(Var("P",F1), 36659 LW(0,1)), 36660 EQ(Mop(Cast F1, 36661 LL[bVar"b'21"]), 36662 LW(1,1))), 36663 MB(Call 36664 ("ArchVersion", 36665 ATy(qTy, 36666 PTy(nTy, 36667 qTy)), 36668 LU), 36669 Close 36670 (nVar"v", 36671 MB(MB(MB(MB(MB(MU(Bop(Lt, 36672 nVar"v", 36673 LN 36674 6), 36675 qTy), 36676 Close 36677 (bVar"b", 36678 MU(Bop(And, 36679 bVar"b", 36680 bVar"wback"), 36681 qTy))), 36682 Close 36683 (bVar"b", 36684 MU(Bop(And, 36685 bVar"b", 36686 EQ(Var("Rm", 36687 F4), 36688 Var("Rn", 36689 F4))), 36690 qTy))), 36691 Close 36692 (bVar"v", 36693 MU(Bop(Or, 36694 Bop(Or, 36695 Bop(Or, 36696 EQ(Var("Rt", 36697 F4), 36698 LW(15, 36699 4)), 36700 EQ(Var("Rm", 36701 F4), 36702 LW(15, 36703 4))), 36704 Bop(And, 36705 bVar"wback", 36706 Bop(Or, 36707 EQ(Var("Rn", 36708 F4), 36709 LW(15, 36710 4)), 36711 EQ(Var("Rn", 36712 F4), 36713 Var("Rt", 36714 F4))))), 36715 bVar"v"), 36716 qTy))), 36717 Close 36718 (bVar"b", 36719 ITE(bVar"b", 36720 Call 36721 ("DECODE_UNPREDICTABLE", 36722 ATy(qTy, 36723 PTy(uTy, 36724 qTy)), 36725 TP[Var("mc", 36726 CTy"MachineCode"), 36727 LS 36728 "StoreHalf"]), 36729 MU(LU, 36730 qTy)))), 36731 Close 36732 (AVar 36733 uTy, 36734 MU(Call 36735 ("Store", 36736 CTy"instruction", 36737 Call 36738 ("StoreHalf", 36739 CTy"Store", 36740 TP[EQ(Mop(Cast 36741 F1, 36742 LL[bVar"b'23"]), 36743 LW(1, 36744 1)), 36745 EQ(Var("P", 36746 F1), 36747 LW(1, 36748 1)), 36749 bVar"wback", 36750 Var("Rt", 36751 F4), 36752 Var("Rn", 36753 F4), 36754 Call 36755 ("register_form1", 36756 CTy"offset1", 36757 TP[Var("Rm", 36758 F4), 36759 LC("SRType_LSL", 36760 CTy"SRType"), 36761 LN 36762 0])])), 36763 qTy)))))), 36764 Call 36765 ("Skip", 36766 ATy(qTy, 36767 PTy(CTy"instruction", 36768 qTy)),LU))))))))), 36769 (Bop(And,Mop(Not,bVar"b'24"), 36770 Bop(And,Mop(Not,bVar"b'22"), 36771 Bop(And,bVar"b'21", 36772 Bop(And,bVar"b'20", 36773 Bop(And,bVar"b'7",bVar"b'4"))))), 36774 Let(Var("Rm",F4), 36775 Mop(Cast F4, 36776 LL[bVar"b'3",bVar"b'2",bVar"b'1", 36777 bVar"b'0"]), 36778 Let(Var("H",F1),Mop(Cast F1,LL[bVar"b'5"]), 36779 Let(Var("S",F1), 36780 Mop(Cast F1,LL[bVar"b'6"]), 36781 Let(Var("Rt",F4), 36782 Mop(Cast F4, 36783 LL[bVar"b'15",bVar"b'14", 36784 bVar"b'13",bVar"b'12"]), 36785 Let(Var("Rn",F4), 36786 Mop(Cast F4, 36787 LL[bVar"b'19",bVar"b'18", 36788 bVar"b'17",bVar"b'16"]), 36789 MB(Call 36790 ("HaveThumb2", 36791 ATy(qTy,PTy(bTy,qTy)), 36792 LU), 36793 Close 36794 (bVar"v", 36795 MB(MB(MB(MU(Bop(And, 36796 Bop(Or, 36797 Mop(Not, 36798 EQ(Var("H", 36799 F1), 36800 LW(0, 36801 1))), 36802 EQ(Var("S", 36803 F1), 36804 LW(1, 36805 1))), 36806 bVar"v"), 36807 qTy), 36808 Close 36809 (bVar"v", 36810 MU(TP[Var("cond", 36811 F4), 36812 bVar"v"], 36813 qTy))), 36814 Close 36815 (Var("v", 36816 PTy(F4,bTy)), 36817 Call 36818 ("Take", 36819 ATy(qTy, 36820 PTy(bTy, 36821 qTy)), 36822 Var("v", 36823 PTy(F4, 36824 bTy))))), 36825 Close 36826 (bVar"b", 36827 ITE(bVar"b", 36828 MB(ITE(Bop(Or, 36829 Bop(Or, 36830 Bop(Or, 36831 EQ(Var("Rt", 36832 F4), 36833 LW(15, 36834 4)), 36835 EQ(Var("Rn", 36836 F4), 36837 LW(15, 36838 4))), 36839 EQ(Var("Rn", 36840 F4), 36841 Var("Rt", 36842 F4))), 36843 EQ(Var("Rm", 36844 F4), 36845 LW(15, 36846 4))), 36847 Call 36848 ("DECODE_UNPREDICTABLE", 36849 ATy(qTy, 36850 PTy(uTy, 36851 qTy)), 36852 TP[Var("mc", 36853 CTy"MachineCode"), 36854 LS 36855 "LoadHalf/Byte (unprivileged)"]), 36856 MU(LU, 36857 qTy)), 36858 Close 36859 (AVar 36860 uTy, 36861 MU(Let(bVar"add", 36862 EQ(Mop(Cast 36863 F1, 36864 LL[bVar"b'23"]), 36865 LW(1, 36866 1)), 36867 Let(bVar"postindex", 36868 LT, 36869 Let(Var("m", 36870 CTy"offset2"), 36871 Call 36872 ("register_form2", 36873 CTy"offset2", 36874 Var("Rm", 36875 F4)), 36876 ITE(EQ(Var("H", 36877 F1), 36878 LW(1, 36879 1)), 36880 Call 36881 ("Load", 36882 CTy"instruction", 36883 Call 36884 ("LoadHalfUnprivileged", 36885 CTy"Load", 36886 TP[EQ(Var("S", 36887 F1), 36888 LW(0, 36889 1)), 36890 bVar"add", 36891 bVar"postindex", 36892 Var("Rt", 36893 F4), 36894 Var("Rn", 36895 F4), 36896 Var("m", 36897 CTy"offset2")])), 36898 Call 36899 ("Load", 36900 CTy"instruction", 36901 Call 36902 ("LoadSignedByteUnprivileged", 36903 CTy"Load", 36904 TP[bVar"add", 36905 bVar"postindex", 36906 Var("Rt", 36907 F4), 36908 Var("Rn", 36909 F4), 36910 Var("m", 36911 CTy"offset2")])))))), 36912 qTy))), 36913 Call 36914 ("Skip", 36915 ATy(qTy, 36916 PTy(CTy"instruction", 36917 qTy)), 36918 LU)))))))))))), 36919 (Bop(And,Mop(Not,bVar"b'22"), 36920 Bop(And,bVar"b'20", 36921 Bop(And,bVar"b'7",bVar"b'4"))), 36922 Let(Var("Rm",F4), 36923 Mop(Cast F4, 36924 LL[bVar"b'3",bVar"b'2",bVar"b'1", 36925 bVar"b'0"]), 36926 Let(Var("H",F1),Mop(Cast F1,LL[bVar"b'5"]), 36927 Let(Var("S",F1), 36928 Mop(Cast F1,LL[bVar"b'6"]), 36929 Let(Var("Rt",F4), 36930 Mop(Cast F4, 36931 LL[bVar"b'15",bVar"b'14", 36932 bVar"b'13",bVar"b'12"]), 36933 Let(Var("Rn",F4), 36934 Mop(Cast F4, 36935 LL[bVar"b'19",bVar"b'18", 36936 bVar"b'17",bVar"b'16"]), 36937 Let(Var("P",F1), 36938 Mop(Cast F1, 36939 LL[bVar"b'24"]), 36940 MB(Call 36941 ("Take", 36942 ATy(qTy, 36943 PTy(bTy,qTy)), 36944 TP[Var("cond",F4), 36945 Bop(Or, 36946 Mop(Not, 36947 EQ(Var("H", 36948 F1), 36949 LW(0, 36950 1))), 36951 EQ(Var("S", 36952 F1), 36953 LW(1,1)))]), 36954 Close 36955 (bVar"b", 36956 ITE(bVar"b", 36957 Let(bVar"wback", 36958 Bop(Or, 36959 EQ(Var("P", 36960 F1), 36961 LW(0, 36962 1)), 36963 EQ(Mop(Cast 36964 F1, 36965 LL[bVar"b'21"]), 36966 LW(1, 36967 1))), 36968 MB(Call 36969 ("ArchVersion", 36970 ATy(qTy, 36971 PTy(nTy, 36972 qTy)), 36973 LU), 36974 Close 36975 (nVar"v", 36976 MB(MB(MB(MB(MB(MU(Bop(Lt, 36977 nVar"v", 36978 LN 36979 6), 36980 qTy), 36981 Close 36982 (bVar"b", 36983 MU(Bop(And, 36984 bVar"b", 36985 bVar"wback"), 36986 qTy))), 36987 Close 36988 (bVar"b", 36989 MU(Bop(And, 36990 bVar"b", 36991 EQ(Var("Rm", 36992 F4), 36993 Var("Rn", 36994 F4))), 36995 qTy))), 36996 Close 36997 (bVar"v", 36998 MU(Bop(Or, 36999 Bop(Or, 37000 EQ(Var("Rt", 37001 F4), 37002 LW(15, 37003 4)), 37004 EQ(Var("Rm", 37005 F4), 37006 LW(15, 37007 4))), 37008 bVar"v"), 37009 qTy))), 37010 Close 37011 (bVar"b", 37012 ITE(bVar"b", 37013 Call 37014 ("DECODE_UNPREDICTABLE", 37015 ATy(qTy, 37016 PTy(uTy, 37017 qTy)), 37018 TP[Var("mc", 37019 CTy"MachineCode"), 37020 LS 37021 "LoadHalf/Byte"]), 37022 MU(LU, 37023 qTy)))), 37024 Close 37025 (AVar 37026 uTy, 37027 MU(Let(bVar"index", 37028 EQ(Var("P", 37029 F1), 37030 LW(1, 37031 1)), 37032 Let(bVar"add", 37033 EQ(Mop(Cast 37034 F1, 37035 LL[bVar"b'23"]), 37036 LW(1, 37037 1)), 37038 Let(bVar"unsigned", 37039 EQ(Var("S", 37040 F1), 37041 LW(0, 37042 1)), 37043 Let(Var("m", 37044 CTy"offset1"), 37045 Call 37046 ("register_form1", 37047 CTy"offset1", 37048 TP[Var("Rm", 37049 F4), 37050 LC("SRType_LSL", 37051 CTy"SRType"), 37052 LN 37053 0]), 37054 ITE(EQ(Var("H", 37055 F1), 37056 LW(1, 37057 1)), 37058 Call 37059 ("Load", 37060 CTy"instruction", 37061 Call 37062 ("LoadHalf", 37063 CTy"Load", 37064 TP[bVar"unsigned", 37065 bVar"add", 37066 bVar"index", 37067 bVar"wback", 37068 Var("Rt", 37069 F4), 37070 Var("Rn", 37071 F4), 37072 Var("m", 37073 CTy"offset1")])), 37074 Call 37075 ("Load", 37076 CTy"instruction", 37077 Call 37078 ("LoadByte", 37079 CTy"Load", 37080 TP[bVar"unsigned", 37081 bVar"add", 37082 bVar"index", 37083 bVar"wback", 37084 Var("Rt", 37085 F4), 37086 Var("Rn", 37087 F4), 37088 Var("m", 37089 CTy"offset1")]))))))), 37090 qTy)))))), 37091 Call 37092 ("Skip", 37093 ATy(qTy, 37094 PTy(CTy"instruction", 37095 qTy)), 37096 LU))))))))))), 37097 (Bop(And,Mop(Not,bVar"b'22"), 37098 Bop(And,Mop(Not,bVar"b'20"), 37099 Bop(And,bVar"b'7", 37100 Bop(And,bVar"b'6",bVar"b'4")))), 37101 Let(Var("Rm",F4), 37102 Mop(Cast F4, 37103 LL[bVar"b'3",bVar"b'2",bVar"b'1", 37104 bVar"b'0"]), 37105 Let(Var("Rt",F4), 37106 Mop(Cast F4, 37107 LL[bVar"b'15",bVar"b'14",bVar"b'13", 37108 bVar"b'12"]), 37109 Let(Var("Rn",F4), 37110 Mop(Cast F4, 37111 LL[bVar"b'19",bVar"b'18", 37112 bVar"b'17",bVar"b'16"]), 37113 Let(Var("W",F1), 37114 Mop(Cast F1,LL[bVar"b'21"]), 37115 Let(Var("P",F1), 37116 Mop(Cast F1,LL[bVar"b'24"]), 37117 MB(Call 37118 ("HaveDSPSupport", 37119 ATy(qTy,PTy(bTy,qTy)), 37120 LU), 37121 Close 37122 (bVar"v", 37123 MB(MB(MU(TP[Var("cond", 37124 F4), 37125 bVar"v"], 37126 qTy), 37127 Close 37128 (Var("v", 37129 PTy(F4,bTy)), 37130 Call 37131 ("Take", 37132 ATy(qTy, 37133 PTy(bTy, 37134 qTy)), 37135 Var("v", 37136 PTy(F4, 37137 bTy))))), 37138 Close 37139 (bVar"b", 37140 ITE(bVar"b", 37141 Let(Var("Rt2", 37142 F4), 37143 Bop(Add, 37144 Var("Rt", 37145 F4), 37146 LW(1, 37147 4)), 37148 Let(bVar"wback", 37149 Bop(Or, 37150 EQ(Var("P", 37151 F1), 37152 LW(0, 37153 1)), 37154 EQ(Var("W", 37155 F1), 37156 LW(1, 37157 1))), 37158 MB(Call 37159 ("ArchVersion", 37160 ATy(qTy, 37161 PTy(nTy, 37162 qTy)), 37163 LU), 37164 Close 37165 (nVar"v", 37166 MB(MB(MB(MB(MB(MU(Bop(Lt, 37167 nVar"v", 37168 LN 37169 6), 37170 qTy), 37171 Close 37172 (bVar"b", 37173 MU(Bop(And, 37174 bVar"b", 37175 bVar"wback"), 37176 qTy))), 37177 Close 37178 (bVar"b", 37179 MU(Bop(And, 37180 bVar"b", 37181 EQ(Var("Rm", 37182 F4), 37183 Var("Rn", 37184 F4))), 37185 qTy))), 37186 Close 37187 (bVar"v", 37188 MU(Bop(Or, 37189 Bop(Or, 37190 Bop(Or, 37191 Bop(Or, 37192 Bop(Or, 37193 Bop(Or, 37194 Bop(Or, 37195 Bop(Bit, 37196 Var("Rt", 37197 F4), 37198 LN 37199 0), 37200 Bop(And, 37201 EQ(Var("P", 37202 F1), 37203 LW(0, 37204 1)), 37205 EQ(Var("W", 37206 F1), 37207 LW(1, 37208 1)))), 37209 EQ(Var("Rt2", 37210 F4), 37211 LW(15, 37212 4))), 37213 EQ(Var("Rm", 37214 F4), 37215 LW(15, 37216 4))), 37217 EQ(Var("Rm", 37218 F4), 37219 Var("Rt", 37220 F4))), 37221 EQ(Var("Rm", 37222 F4), 37223 Var("Rt2", 37224 F4))), 37225 Bop(And, 37226 bVar"wback", 37227 Bop(Or, 37228 Bop(Or, 37229 EQ(Var("Rn", 37230 F4), 37231 LW(15, 37232 4)), 37233 EQ(Var("Rn", 37234 F4), 37235 Var("Rt", 37236 F4))), 37237 EQ(Var("Rn", 37238 F4), 37239 Var("Rt2", 37240 F4))))), 37241 bVar"v"), 37242 qTy))), 37243 Close 37244 (bVar"b", 37245 ITE(bVar"b", 37246 Call 37247 ("DECODE_UNPREDICTABLE", 37248 ATy(qTy, 37249 PTy(uTy, 37250 qTy)), 37251 TP[Var("mc", 37252 CTy"MachineCode"), 37253 LS 37254 "Load/StoreDual (register)"]), 37255 MU(LU, 37256 qTy)))), 37257 Close 37258 (AVar 37259 uTy, 37260 MU(Let(bVar"index", 37261 EQ(Var("P", 37262 F1), 37263 LW(1, 37264 1)), 37265 Let(bVar"add", 37266 EQ(Mop(Cast 37267 F1, 37268 LL[bVar"b'23"]), 37269 LW(1, 37270 1)), 37271 Let(Var("m", 37272 CTy"offset2"), 37273 Call 37274 ("register_form2", 37275 CTy"offset2", 37276 Var("Rm", 37277 F4)), 37278 ITE(EQ(Mop(Cast 37279 F1, 37280 LL[bVar"b'5"]), 37281 LW(1, 37282 1)), 37283 Call 37284 ("Store", 37285 CTy"instruction", 37286 Call 37287 ("StoreDual", 37288 CTy"Store", 37289 TP[bVar"add", 37290 bVar"index", 37291 bVar"wback", 37292 Var("Rt", 37293 F4), 37294 Var("Rt2", 37295 F4), 37296 Var("Rn", 37297 F4), 37298 Var("m", 37299 CTy"offset2")])), 37300 Call 37301 ("Load", 37302 CTy"instruction", 37303 Call 37304 ("LoadDual", 37305 CTy"Load", 37306 TP[bVar"add", 37307 bVar"index", 37308 bVar"wback", 37309 Var("Rt", 37310 F4), 37311 Var("Rt2", 37312 F4), 37313 Var("Rn", 37314 F4), 37315 Var("m", 37316 CTy"offset2")])))))), 37317 qTy))))))), 37318 Call 37319 ("Skip", 37320 ATy(qTy, 37321 PTy(CTy"instruction", 37322 qTy)), 37323 LU)))))))))))), 37324 (Bop(And,bVar"b'22", 37325 Bop(And,Mop(Not,bVar"b'20"), 37326 Bop(And,bVar"b'19", 37327 Bop(And,bVar"b'18", 37328 Bop(And,bVar"b'17", 37329 Bop(And,bVar"b'16", 37330 Bop(And,bVar"b'7", 37331 Bop(And,bVar"b'6", 37332 Bop(And, 37333 Mop(Not, 37334 bVar"b'5"), 37335 bVar"b'4"))))))))), 37336 Let(Var("Rt",F4), 37337 Mop(Cast F4, 37338 LL[bVar"b'15",bVar"b'14",bVar"b'13", 37339 bVar"b'12"]), 37340 MB(Call 37341 ("HaveDSPSupport",ATy(qTy,PTy(bTy,qTy)), 37342 LU), 37343 Close 37344 (bVar"v", 37345 MB(MB(MU(TP[Var("cond",F4),bVar"v"],qTy), 37346 Close 37347 (Var("v",PTy(F4,bTy)), 37348 Call 37349 ("Take", 37350 ATy(qTy,PTy(bTy,qTy)), 37351 Var("v",PTy(F4,bTy))))), 37352 Close 37353 (bVar"b", 37354 ITE(bVar"b", 37355 Let(Var("Rt2",F4), 37356 Bop(Add,Var("Rt",F4), 37357 LW(1,4)), 37358 MB(ITE(Bop(Or, 37359 Bop(Bit, 37360 Var("Rt", 37361 F4), 37362 LN 0), 37363 EQ(Var("Rt2", 37364 F4), 37365 LW(15,4))), 37366 Call 37367 ("DECODE_UNPREDICTABLE", 37368 ATy(qTy, 37369 PTy(uTy,qTy)), 37370 TP[Var("mc", 37371 CTy"MachineCode"), 37372 LS 37373 "LoadDual (literal)"]), 37374 MU(LU,qTy)), 37375 Close 37376 (AVar uTy, 37377 MU(Call 37378 ("Load", 37379 CTy"instruction", 37380 Call 37381 ("LoadDualLiteral", 37382 CTy"Load", 37383 TP[EQ(Mop(Cast 37384 F1, 37385 LL[bVar"b'23"]), 37386 LW(1, 37387 1)), 37388 Var("Rt", 37389 F4), 37390 Var("Rt2", 37391 F4), 37392 Mop(Cast 37393 F32, 37394 CC[Mop(Cast 37395 F4, 37396 LL[bVar"b'11", 37397 bVar"b'10", 37398 bVar"b'9", 37399 bVar"b'8"]), 37400 Mop(Cast 37401 F4, 37402 LL[bVar"b'3", 37403 bVar"b'2", 37404 bVar"b'1", 37405 bVar"b'0"])])])), 37406 qTy)))), 37407 Call 37408 ("Skip", 37409 ATy(qTy, 37410 PTy(CTy"instruction", 37411 qTy)),LU)))))))), 37412 (Bop(And,bVar"b'22", 37413 Bop(And,Mop(Not,bVar"b'20"), 37414 Bop(And,bVar"b'7", 37415 Bop(And,bVar"b'6",bVar"b'4")))), 37416 Let(Var("S",F1),Mop(Cast F1,LL[bVar"b'5"]), 37417 Let(Var("Rt",F4), 37418 Mop(Cast F4, 37419 LL[bVar"b'15",bVar"b'14",bVar"b'13", 37420 bVar"b'12"]), 37421 Let(Var("Rn",F4), 37422 Mop(Cast F4, 37423 LL[bVar"b'19",bVar"b'18", 37424 bVar"b'17",bVar"b'16"]), 37425 Let(Var("W",F1), 37426 Mop(Cast F1,LL[bVar"b'21"]), 37427 Let(Var("P",F1), 37428 Mop(Cast F1,LL[bVar"b'24"]), 37429 MB(Call 37430 ("HaveDSPSupport", 37431 ATy(qTy,PTy(bTy,qTy)), 37432 LU), 37433 Close 37434 (bVar"v", 37435 MB(MB(MU(TP[Var("cond", 37436 F4), 37437 bVar"v"], 37438 qTy), 37439 Close 37440 (Var("v", 37441 PTy(F4,bTy)), 37442 Call 37443 ("Take", 37444 ATy(qTy, 37445 PTy(bTy, 37446 qTy)), 37447 Var("v", 37448 PTy(F4, 37449 bTy))))), 37450 Close 37451 (bVar"b", 37452 ITE(bVar"b", 37453 Let(Var("Rt2", 37454 F4), 37455 Bop(Add, 37456 Var("Rt", 37457 F4), 37458 LW(1, 37459 4)), 37460 Let(bVar"wback", 37461 Bop(Or, 37462 EQ(Var("P", 37463 F1), 37464 LW(0, 37465 1)), 37466 EQ(Var("W", 37467 F1), 37468 LW(1, 37469 1))), 37470 MB(ITE(Bop(Or, 37471 Bop(Or, 37472 Bop(Or, 37473 Bop(Bit, 37474 Var("Rt", 37475 F4), 37476 LN 37477 0), 37478 Bop(And, 37479 EQ(Var("P", 37480 F1), 37481 LW(0, 37482 1)), 37483 EQ(Var("W", 37484 F1), 37485 LW(1, 37486 1)))), 37487 Bop(And, 37488 bVar"wback", 37489 Bop(Or, 37490 Bop(Or, 37491 Bop(And, 37492 EQ(Var("S", 37493 F1), 37494 LW(1, 37495 1)), 37496 EQ(Var("Rn", 37497 F4), 37498 LW(15, 37499 4))), 37500 EQ(Var("Rn", 37501 F4), 37502 Var("Rt", 37503 F4))), 37504 EQ(Var("Rn", 37505 F4), 37506 Var("Rt2", 37507 F4))))), 37508 EQ(Var("Rt2", 37509 F4), 37510 LW(15, 37511 4))), 37512 Call 37513 ("DECODE_UNPREDICTABLE", 37514 ATy(qTy, 37515 PTy(uTy, 37516 qTy)), 37517 TP[Var("mc", 37518 CTy"MachineCode"), 37519 LS 37520 "Load/StoreDual (immediate)"]), 37521 MU(LU, 37522 qTy)), 37523 Close 37524 (AVar 37525 uTy, 37526 MU(Let(bVar"index", 37527 EQ(Var("P", 37528 F1), 37529 LW(1, 37530 1)), 37531 Let(bVar"add", 37532 EQ(Mop(Cast 37533 F1, 37534 LL[bVar"b'23"]), 37535 LW(1, 37536 1)), 37537 Let(Var("m", 37538 CTy"offset2"), 37539 Call 37540 ("immediate_form2", 37541 CTy"offset2", 37542 Mop(Cast 37543 F32, 37544 CC[Mop(Cast 37545 F4, 37546 LL[bVar"b'11", 37547 bVar"b'10", 37548 bVar"b'9", 37549 bVar"b'8"]), 37550 Mop(Cast 37551 F4, 37552 LL[bVar"b'3", 37553 bVar"b'2", 37554 bVar"b'1", 37555 bVar"b'0"])])), 37556 ITE(EQ(Var("S", 37557 F1), 37558 LW(1, 37559 1)), 37560 Call 37561 ("Store", 37562 CTy"instruction", 37563 Call 37564 ("StoreDual", 37565 CTy"Store", 37566 TP[bVar"add", 37567 bVar"index", 37568 bVar"wback", 37569 Var("Rt", 37570 F4), 37571 Var("Rt2", 37572 F4), 37573 Var("Rn", 37574 F4), 37575 Var("m", 37576 CTy"offset2")])), 37577 Call 37578 ("Load", 37579 CTy"instruction", 37580 Call 37581 ("LoadDual", 37582 CTy"Load", 37583 TP[bVar"add", 37584 bVar"index", 37585 bVar"wback", 37586 Var("Rt", 37587 F4), 37588 Var("Rt2", 37589 F4), 37590 Var("Rn", 37591 F4), 37592 Var("m", 37593 CTy"offset2")])))))), 37594 qTy))))), 37595 Call 37596 ("Skip", 37597 ATy(qTy, 37598 PTy(CTy"instruction", 37599 qTy)), 37600 LU)))))))))))), 37601 (Bop(And,Mop(Not,bVar"b'24"), 37602 Bop(And,bVar"b'22", 37603 Bop(And,bVar"b'21", 37604 Bop(And,bVar"b'20", 37605 Bop(And,bVar"b'7",bVar"b'4"))))), 37606 Let(Var("H",F1),Mop(Cast F1,LL[bVar"b'5"]), 37607 Let(Var("S",F1),Mop(Cast F1,LL[bVar"b'6"]), 37608 Let(Var("Rt",F4), 37609 Mop(Cast F4, 37610 LL[bVar"b'15",bVar"b'14", 37611 bVar"b'13",bVar"b'12"]), 37612 Let(Var("Rn",F4), 37613 Mop(Cast F4, 37614 LL[bVar"b'19",bVar"b'18", 37615 bVar"b'17",bVar"b'16"]), 37616 MB(Call 37617 ("HaveThumb2", 37618 ATy(qTy,PTy(bTy,qTy)),LU), 37619 Close 37620 (bVar"v", 37621 MB(MB(MB(MU(Bop(And, 37622 Bop(Or, 37623 Mop(Not, 37624 EQ(Var("H", 37625 F1), 37626 LW(0, 37627 1))), 37628 EQ(Var("S", 37629 F1), 37630 LW(1, 37631 1))), 37632 bVar"v"), 37633 qTy), 37634 Close 37635 (bVar"v", 37636 MU(TP[Var("cond", 37637 F4), 37638 bVar"v"], 37639 qTy))), 37640 Close 37641 (Var("v", 37642 PTy(F4,bTy)), 37643 Call 37644 ("Take", 37645 ATy(qTy, 37646 PTy(bTy,qTy)), 37647 Var("v", 37648 PTy(F4,bTy))))), 37649 Close 37650 (bVar"b", 37651 ITE(bVar"b", 37652 MB(ITE(Bop(Or, 37653 Bop(Or, 37654 EQ(Var("Rt", 37655 F4), 37656 LW(15, 37657 4)), 37658 EQ(Var("Rn", 37659 F4), 37660 LW(15, 37661 4))), 37662 EQ(Var("Rn", 37663 F4), 37664 Var("Rt", 37665 F4))), 37666 Call 37667 ("DECODE_UNPREDICTABLE", 37668 ATy(qTy, 37669 PTy(uTy, 37670 qTy)), 37671 TP[Var("mc", 37672 CTy"MachineCode"), 37673 LS 37674 "LoadHalf/Byte (unprivileged)"]), 37675 MU(LU,qTy)), 37676 Close 37677 (AVar uTy, 37678 MU(Let(bVar"postindex", 37679 LT, 37680 Let(bVar"add", 37681 EQ(Mop(Cast 37682 F1, 37683 LL[bVar"b'23"]), 37684 LW(1, 37685 1)), 37686 Let(Var("m", 37687 CTy"offset2"), 37688 Call 37689 ("immediate_form2", 37690 CTy"offset2", 37691 Mop(Cast 37692 F32, 37693 CC[Mop(Cast 37694 F4, 37695 LL[bVar"b'11", 37696 bVar"b'10", 37697 bVar"b'9", 37698 bVar"b'8"]), 37699 Mop(Cast 37700 F4, 37701 LL[bVar"b'3", 37702 bVar"b'2", 37703 bVar"b'1", 37704 bVar"b'0"])])), 37705 ITE(EQ(Var("H", 37706 F1), 37707 LW(1, 37708 1)), 37709 Call 37710 ("Load", 37711 CTy"instruction", 37712 Call 37713 ("LoadHalfUnprivileged", 37714 CTy"Load", 37715 TP[EQ(Var("S", 37716 F1), 37717 LW(0, 37718 1)), 37719 bVar"add", 37720 bVar"postindex", 37721 Var("Rt", 37722 F4), 37723 Var("Rn", 37724 F4), 37725 Var("m", 37726 CTy"offset2")])), 37727 Call 37728 ("Load", 37729 CTy"instruction", 37730 Call 37731 ("LoadSignedByteUnprivileged", 37732 CTy"Load", 37733 TP[bVar"add", 37734 bVar"postindex", 37735 Var("Rt", 37736 F4), 37737 Var("Rn", 37738 F4), 37739 Var("m", 37740 CTy"offset2")])))))), 37741 qTy))), 37742 Call 37743 ("Skip", 37744 ATy(qTy, 37745 PTy(CTy"instruction", 37746 qTy)), 37747 LU))))))))))), 37748 (Bop(And,bVar"b'22", 37749 Bop(And,bVar"b'20", 37750 Bop(And,bVar"b'19", 37751 Bop(And,bVar"b'18", 37752 Bop(And,bVar"b'17", 37753 Bop(And,bVar"b'16", 37754 Bop(And,bVar"b'7", 37755 bVar"b'4"))))))), 37756 Let(Var("H",F1),Mop(Cast F1,LL[bVar"b'5"]), 37757 Let(Var("S",F1),Mop(Cast F1,LL[bVar"b'6"]), 37758 Let(Var("Rt",F4), 37759 Mop(Cast F4, 37760 LL[bVar"b'15",bVar"b'14", 37761 bVar"b'13",bVar"b'12"]), 37762 MB(Call 37763 ("Take",ATy(qTy,PTy(bTy,qTy)), 37764 TP[Var("cond",F4), 37765 Bop(Or, 37766 Mop(Not, 37767 EQ(Var("H",F1), 37768 LW(0,1))), 37769 EQ(Var("S",F1),LW(1,1)))]), 37770 Close 37771 (bVar"b", 37772 ITE(bVar"b", 37773 MB(ITE(EQ(Var("Rt",F4), 37774 LW(15,4)), 37775 Call 37776 ("DECODE_UNPREDICTABLE", 37777 ATy(qTy, 37778 PTy(uTy,qTy)), 37779 TP[Var("mc", 37780 CTy"MachineCode"), 37781 LS 37782 "LoadHalf/Byte (literal)"]), 37783 MU(LU,qTy)), 37784 Close 37785 (AVar uTy, 37786 MU(Let(bVar"add", 37787 EQ(Mop(Cast F1, 37788 LL[bVar"b'23"]), 37789 LW(1,1)), 37790 Let(bVar"unsigned", 37791 EQ(Var("S", 37792 F1), 37793 LW(0,1)), 37794 Let(Var("imm32", 37795 F32), 37796 Mop(Cast 37797 F32, 37798 CC[Mop(Cast 37799 F4, 37800 LL[bVar"b'11", 37801 bVar"b'10", 37802 bVar"b'9", 37803 bVar"b'8"]), 37804 Mop(Cast 37805 F4, 37806 LL[bVar"b'3", 37807 bVar"b'2", 37808 bVar"b'1", 37809 bVar"b'0"])]), 37810 ITE(EQ(Var("H", 37811 F1), 37812 LW(1, 37813 1)), 37814 Call 37815 ("Load", 37816 CTy"instruction", 37817 Call 37818 ("LoadHalfLiteral", 37819 CTy"Load", 37820 TP[bVar"unsigned", 37821 bVar"add", 37822 Var("Rt", 37823 F4), 37824 Var("imm32", 37825 F32)])), 37826 Call 37827 ("Load", 37828 CTy"instruction", 37829 Call 37830 ("LoadByteLiteral", 37831 CTy"Load", 37832 TP[bVar"unsigned", 37833 bVar"add", 37834 Var("Rt", 37835 F4), 37836 Var("imm32", 37837 F32)])))))), 37838 qTy))), 37839 Call 37840 ("Skip", 37841 ATy(qTy, 37842 PTy(CTy"instruction", 37843 qTy)),LU)))))))), 37844 (Bop(And,bVar"b'22", 37845 Bop(And,bVar"b'20", 37846 Bop(And,bVar"b'7",bVar"b'4"))), 37847 Let(Var("H",F1),Mop(Cast F1,LL[bVar"b'5"]), 37848 Let(Var("S",F1),Mop(Cast F1,LL[bVar"b'6"]), 37849 Let(Var("Rt",F4), 37850 Mop(Cast F4, 37851 LL[bVar"b'15",bVar"b'14", 37852 bVar"b'13",bVar"b'12"]), 37853 Let(Var("Rn",F4), 37854 Mop(Cast F4, 37855 LL[bVar"b'19",bVar"b'18", 37856 bVar"b'17",bVar"b'16"]), 37857 Let(Var("P",F1), 37858 Mop(Cast F1,LL[bVar"b'24"]), 37859 MB(Call 37860 ("Take", 37861 ATy(qTy,PTy(bTy,qTy)), 37862 TP[Var("cond",F4), 37863 Bop(Or, 37864 Mop(Not, 37865 EQ(Var("H", 37866 F1), 37867 LW(0,1))), 37868 EQ(Var("S",F1), 37869 LW(1,1)))]), 37870 Close 37871 (bVar"b", 37872 ITE(bVar"b", 37873 Let(bVar"wback", 37874 Bop(Or, 37875 EQ(Var("P", 37876 F1), 37877 LW(0,1)), 37878 EQ(Mop(Cast 37879 F1, 37880 LL[bVar"b'21"]), 37881 LW(1,1))), 37882 MB(ITE(Bop(Or, 37883 EQ(Var("Rt", 37884 F4), 37885 LW(15, 37886 4)), 37887 Bop(And, 37888 bVar"wback", 37889 EQ(Var("Rn", 37890 F4), 37891 Var("Rt", 37892 F4)))), 37893 Call 37894 ("DECODE_UNPREDICTABLE", 37895 ATy(qTy, 37896 PTy(uTy, 37897 qTy)), 37898 TP[Var("mc", 37899 CTy"MachineCode"), 37900 LS 37901 "LoadHalf/Byte (immediate)"]), 37902 MU(LU, 37903 qTy)), 37904 Close 37905 (AVar uTy, 37906 MU(Let(bVar"index", 37907 EQ(Var("P", 37908 F1), 37909 LW(1, 37910 1)), 37911 Let(bVar"add", 37912 EQ(Mop(Cast 37913 F1, 37914 LL[bVar"b'23"]), 37915 LW(1, 37916 1)), 37917 Let(bVar"unsigned", 37918 EQ(Var("S", 37919 F1), 37920 LW(0, 37921 1)), 37922 Let(Var("m", 37923 CTy"offset1"), 37924 Call 37925 ("immediate_form1", 37926 CTy"offset1", 37927 Mop(Cast 37928 F32, 37929 CC[Mop(Cast 37930 F4, 37931 LL[bVar"b'11", 37932 bVar"b'10", 37933 bVar"b'9", 37934 bVar"b'8"]), 37935 Mop(Cast 37936 F4, 37937 LL[bVar"b'3", 37938 bVar"b'2", 37939 bVar"b'1", 37940 bVar"b'0"])])), 37941 ITE(EQ(Var("H", 37942 F1), 37943 LW(1, 37944 1)), 37945 Call 37946 ("Load", 37947 CTy"instruction", 37948 Call 37949 ("LoadHalf", 37950 CTy"Load", 37951 TP[bVar"unsigned", 37952 bVar"add", 37953 bVar"index", 37954 bVar"wback", 37955 Var("Rt", 37956 F4), 37957 Var("Rn", 37958 F4), 37959 Var("m", 37960 CTy"offset1")])), 37961 Call 37962 ("Load", 37963 CTy"instruction", 37964 Call 37965 ("LoadByte", 37966 CTy"Load", 37967 TP[bVar"unsigned", 37968 bVar"add", 37969 bVar"index", 37970 bVar"wback", 37971 Var("Rt", 37972 F4), 37973 Var("Rn", 37974 F4), 37975 Var("m", 37976 CTy"offset1")]))))))), 37977 qTy)))), 37978 Call 37979 ("Skip", 37980 ATy(qTy, 37981 PTy(CTy"instruction", 37982 qTy)),LU)))))))))), 37983 (Bop(And,Mop(Not,bVar"b'24"), 37984 Bop(And,bVar"b'22", 37985 Bop(And,bVar"b'21", 37986 Bop(And,Mop(Not,bVar"b'20"), 37987 Bop(And,bVar"b'7", 37988 Bop(And,Mop(Not,bVar"b'6"), 37989 Bop(And,bVar"b'5", 37990 bVar"b'4"))))))), 37991 Let(Var("Rt",F4), 37992 Mop(Cast F4, 37993 LL[bVar"b'15",bVar"b'14",bVar"b'13", 37994 bVar"b'12"]), 37995 Let(Var("Rn",F4), 37996 Mop(Cast F4, 37997 LL[bVar"b'19",bVar"b'18",bVar"b'17", 37998 bVar"b'16"]), 37999 MB(Call 38000 ("HaveThumb2",ATy(qTy,PTy(bTy,qTy)), 38001 LU), 38002 Close 38003 (bVar"v", 38004 MB(MB(MU(TP[Var("cond",F4),bVar"v"], 38005 qTy), 38006 Close 38007 (Var("v",PTy(F4,bTy)), 38008 Call 38009 ("Take", 38010 ATy(qTy,PTy(bTy,qTy)), 38011 Var("v",PTy(F4,bTy))))), 38012 Close 38013 (bVar"b", 38014 ITE(bVar"b", 38015 MB(ITE(Bop(Or, 38016 Bop(Or, 38017 EQ(Var("Rt", 38018 F4), 38019 LW(15,4)), 38020 EQ(Var("Rn", 38021 F4), 38022 LW(15,4))), 38023 EQ(Var("Rn",F4), 38024 Var("Rt",F4))), 38025 Call 38026 ("DECODE_UNPREDICTABLE", 38027 ATy(qTy, 38028 PTy(uTy,qTy)), 38029 TP[Var("mc", 38030 CTy"MachineCode"), 38031 LS 38032 "StoreHalf (immediate)"]), 38033 MU(LU,qTy)), 38034 Close 38035 (AVar uTy, 38036 MU(Call 38037 ("Store", 38038 CTy"instruction", 38039 Call 38040 ("StoreHalfUnprivileged", 38041 CTy"Store", 38042 TP[EQ(Mop(Cast 38043 F1, 38044 LL[bVar"b'23"]), 38045 LW(1, 38046 1)), 38047 LT, 38048 Var("Rt", 38049 F4), 38050 Var("Rn", 38051 F4), 38052 Call 38053 ("immediate_form2", 38054 CTy"offset2", 38055 Mop(Cast 38056 F32, 38057 CC[Mop(Cast 38058 F4, 38059 LL[bVar"b'11", 38060 bVar"b'10", 38061 bVar"b'9", 38062 bVar"b'8"]), 38063 Mop(Cast 38064 F4, 38065 LL[bVar"b'3", 38066 bVar"b'2", 38067 bVar"b'1", 38068 bVar"b'0"])]))])), 38069 qTy))), 38070 Call 38071 ("Skip", 38072 ATy(qTy, 38073 PTy(CTy"instruction", 38074 qTy)),LU))))))))), 38075 (Bop(And,bVar"b'22", 38076 Bop(And,Mop(Not,bVar"b'20"), 38077 Bop(And,bVar"b'7", 38078 Bop(And,Mop(Not,bVar"b'6"), 38079 Bop(And,bVar"b'5",bVar"b'4"))))), 38080 Let(Var("Rt",F4), 38081 Mop(Cast F4, 38082 LL[bVar"b'15",bVar"b'14",bVar"b'13", 38083 bVar"b'12"]), 38084 Let(Var("Rn",F4), 38085 Mop(Cast F4, 38086 LL[bVar"b'19",bVar"b'18",bVar"b'17", 38087 bVar"b'16"]), 38088 Let(Var("P",F1), 38089 Mop(Cast F1,LL[bVar"b'24"]), 38090 MB(Call 38091 ("Take",ATy(qTy,PTy(bTy,qTy)), 38092 TP[Var("cond",F4),LT]), 38093 Close 38094 (bVar"b", 38095 ITE(bVar"b", 38096 Let(bVar"wback", 38097 Bop(Or, 38098 EQ(Var("P",F1), 38099 LW(0,1)), 38100 EQ(Mop(Cast F1, 38101 LL[bVar"b'21"]), 38102 LW(1,1))), 38103 MB(ITE(Bop(Or, 38104 EQ(Var("Rt", 38105 F4), 38106 LW(15,4)), 38107 Bop(And, 38108 bVar"wback", 38109 Bop(Or, 38110 EQ(Var("Rn", 38111 F4), 38112 LW(15, 38113 4)), 38114 EQ(Var("Rn", 38115 F4), 38116 Var("Rt", 38117 F4))))), 38118 Call 38119 ("DECODE_UNPREDICTABLE", 38120 ATy(qTy, 38121 PTy(uTy, 38122 qTy)), 38123 TP[Var("mc", 38124 CTy"MachineCode"), 38125 LS 38126 "StoreHalf (immediate)"]), 38127 MU(LU,qTy)), 38128 Close 38129 (AVar uTy, 38130 MU(Call 38131 ("Store", 38132 CTy"instruction", 38133 Call 38134 ("StoreHalf", 38135 CTy"Store", 38136 TP[EQ(Mop(Cast 38137 F1, 38138 LL[bVar"b'23"]), 38139 LW(1, 38140 1)), 38141 EQ(Var("P", 38142 F1), 38143 LW(1, 38144 1)), 38145 bVar"wback", 38146 Var("Rt", 38147 F4), 38148 Var("Rn", 38149 F4), 38150 Call 38151 ("immediate_form1", 38152 CTy"offset1", 38153 Mop(Cast 38154 F32, 38155 CC[Mop(Cast 38156 F4, 38157 LL[bVar"b'11", 38158 bVar"b'10", 38159 bVar"b'9", 38160 bVar"b'8"]), 38161 Mop(Cast 38162 F4, 38163 LL[bVar"b'3", 38164 bVar"b'2", 38165 bVar"b'1", 38166 bVar"b'0"])]))])), 38167 qTy)))), 38168 Call 38169 ("Skip", 38170 ATy(qTy, 38171 PTy(CTy"instruction", 38172 qTy)),LU))))))))], 38173 Call 38174 ("UndefinedARM", 38175 ATy(qTy,PTy(CTy"instruction",qTy)), 38176 Var("cond",F4)))))))) 38177; 38178val DecodeThumb_def = Def 38179 ("DecodeThumb",Var("h",F16), 38180 Let(Var("mc",CTy"MachineCode"), 38181 Call("Thumb",CTy"MachineCode",Var("h",F16)), 38182 Let(TP[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",bVar"b'11", 38183 bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 38184 bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"], 38185 BL(16,Var("h",F16)), 38186 ITB([(bVar"b'13", 38187 ITB([(bVar"b'15", 38188 ITB([(Bop(And,Mop(Not,bVar"b'14"), 38189 Mop(Not,bVar"b'12")), 38190 MB(Call 38191 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)), 38192 LU), 38193 Close 38194 (Var("v",F4), 38195 MB(MB(MU(TP[Var("v",F4),LT],qTy), 38196 Close 38197 (Var("v",PTy(F4,bTy)), 38198 Call 38199 ("Take", 38200 ATy(qTy,PTy(bTy,qTy)), 38201 Var("v",PTy(F4,bTy))))), 38202 Close 38203 (bVar"b", 38204 ITE(bVar"b", 38205 MU(Call 38206 ("Data", 38207 CTy"instruction", 38208 Call 38209 ("ArithLogicImmediate", 38210 CTy"Data", 38211 TP[LW(4,4),LF, 38212 Mop(Cast F4, 38213 Mop(Cast 38214 (FTy 3), 38215 LL[bVar"b'10", 38216 bVar"b'9", 38217 bVar"b'8"])), 38218 ITE(EQ(Mop(Cast 38219 F1, 38220 LL[bVar"b'11"]), 38221 LW(1,1)), 38222 LW(13,4), 38223 LW(15,4)), 38224 CC[LW(15,4), 38225 Mop(Cast F8, 38226 LL[bVar"b'7", 38227 bVar"b'6", 38228 bVar"b'5", 38229 bVar"b'4", 38230 bVar"b'3", 38231 bVar"b'2", 38232 bVar"b'1", 38233 bVar"b'0"])]])), 38234 qTy), 38235 Call 38236 ("Skip", 38237 ATy(qTy, 38238 PTy(CTy"instruction", 38239 qTy)),LU))))))), 38240 (Bop(And,Mop(Not,bVar"b'14"), 38241 Bop(And,bVar"b'12", 38242 Bop(And,Mop(Not,bVar"b'11"), 38243 Bop(And,Mop(Not,bVar"b'10"), 38244 Bop(And,Mop(Not,bVar"b'9"), 38245 Mop(Not,bVar"b'8")))))), 38246 MB(Call 38247 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)), 38248 LU), 38249 Close 38250 (Var("v",F4), 38251 MB(MB(MU(TP[Var("v",F4),LT],qTy), 38252 Close 38253 (Var("v",PTy(F4,bTy)), 38254 Call 38255 ("Take", 38256 ATy(qTy,PTy(bTy,qTy)), 38257 Var("v",PTy(F4,bTy))))), 38258 Close 38259 (bVar"b", 38260 ITE(bVar"b", 38261 MU(Call 38262 ("Data", 38263 CTy"instruction", 38264 Call 38265 ("ArithLogicImmediate", 38266 CTy"Data", 38267 TP[ITE(EQ(Mop(Cast 38268 F1, 38269 LL[bVar"b'7"]), 38270 LW(1,1)), 38271 LW(2,4), 38272 LW(4,4)),LF, 38273 LW(13,4), 38274 LW(13,4), 38275 CC[LW(30,5), 38276 Mop(Cast 38277 (FTy 7), 38278 LL[bVar"b'6", 38279 bVar"b'5", 38280 bVar"b'4", 38281 bVar"b'3", 38282 bVar"b'2", 38283 bVar"b'1", 38284 bVar"b'0"])]])), 38285 qTy), 38286 Call 38287 ("Skip", 38288 ATy(qTy, 38289 PTy(CTy"instruction", 38290 qTy)),LU))))))), 38291 (Bop(And,Mop(Not,bVar"b'14"), 38292 Bop(And,bVar"b'12", 38293 Bop(And,Mop(Not,bVar"b'10"),bVar"b'8"))), 38294 MB(Call 38295 ("HaveThumb2",ATy(qTy,PTy(bTy,qTy)),LU), 38296 Close 38297 (bVar"v", 38298 MB(MB(MU(TP[LW(14,4),bVar"v"],qTy), 38299 Close 38300 (Var("v",PTy(F4,bTy)), 38301 Call 38302 ("Take", 38303 ATy(qTy,PTy(bTy,qTy)), 38304 Var("v",PTy(F4,bTy))))), 38305 Close 38306 (bVar"b", 38307 ITE(bVar"b", 38308 MB(Call 38309 ("InITBlock", 38310 ATy(qTy,PTy(bTy,qTy)), 38311 LU), 38312 Close 38313 (bVar"v", 38314 MB(ITE(bVar"v", 38315 Call 38316 ("DECODE_UNPREDICTABLE", 38317 ATy(qTy, 38318 PTy(uTy, 38319 qTy)), 38320 TP[Var("mc", 38321 CTy"MachineCode"), 38322 LS 38323 "CompareBranch"]), 38324 MU(LU,qTy)), 38325 Close 38326 (AVar uTy, 38327 MU(Call 38328 ("Branch", 38329 CTy"instruction", 38330 Call 38331 ("CompareBranch", 38332 CTy"Branch", 38333 TP[EQ(Mop(Cast 38334 F1, 38335 LL[bVar"b'11"]), 38336 LW(1, 38337 1)), 38338 Mop(Cast 38339 F4, 38340 Mop(Cast 38341 (FTy 3), 38342 LL[bVar"b'2", 38343 bVar"b'1", 38344 bVar"b'0"])), 38345 Mop(Cast 38346 F32, 38347 CC[Mop(Cast 38348 F1, 38349 LL[bVar"b'9"]), 38350 Mop(Cast 38351 (FTy 5), 38352 LL[bVar"b'7", 38353 bVar"b'6", 38354 bVar"b'5", 38355 bVar"b'4", 38356 bVar"b'3"]), 38357 LW(0, 38358 1)])])), 38359 qTy))))), 38360 Call 38361 ("Skip", 38362 ATy(qTy, 38363 PTy(CTy"instruction", 38364 qTy)),LU))))))), 38365 (Bop(And,Mop(Not,bVar"b'14"), 38366 Bop(And,bVar"b'12", 38367 Bop(And,Mop(Not,bVar"b'11"), 38368 Bop(And,Mop(Not,bVar"b'10"), 38369 Bop(And,bVar"b'9", 38370 Bop(And, 38371 Mop(Not,bVar"b'8"), 38372 Mop(Not,bVar"b'6"))))))), 38373 MB(Call 38374 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)), 38375 LU), 38376 Close 38377 (Var("v",F4), 38378 MB(MB(MB(Call 38379 ("ArchVersion", 38380 ATy(qTy,PTy(nTy,qTy)),LU), 38381 Close 38382 (nVar"v0", 38383 MB(MU(Bop(Ge,nVar"v0",LN 6), 38384 qTy), 38385 Close 38386 (bVar"v0", 38387 MU(TP[Var("v",F4), 38388 bVar"v0"],qTy))))), 38389 Close 38390 (Var("v",PTy(F4,bTy)), 38391 Call 38392 ("Take", 38393 ATy(qTy,PTy(bTy,qTy)), 38394 Var("v",PTy(F4,bTy))))), 38395 Close 38396 (bVar"b", 38397 ITE(bVar"b", 38398 MU(Call 38399 ("Media", 38400 CTy"instruction", 38401 Call 38402 ("ExtendHalfword", 38403 CTy"Media", 38404 TP[EQ(Mop(Cast F1, 38405 LL[bVar"b'7"]), 38406 LW(1,1)), 38407 Mop(Cast F4, 38408 Mop(Cast 38409 (FTy 3), 38410 LL[bVar"b'2", 38411 bVar"b'1", 38412 bVar"b'0"])), 38413 LW(15,4), 38414 Mop(Cast F4, 38415 Mop(Cast 38416 (FTy 3), 38417 LL[bVar"b'5", 38418 bVar"b'4", 38419 bVar"b'3"])), 38420 LN 0])),qTy), 38421 Call 38422 ("Skip", 38423 ATy(qTy, 38424 PTy(CTy"instruction", 38425 qTy)),LU))))))), 38426 (Bop(And,Mop(Not,bVar"b'14"), 38427 Bop(And,bVar"b'12", 38428 Bop(And,Mop(Not,bVar"b'11"), 38429 Bop(And,Mop(Not,bVar"b'10"), 38430 Bop(And,bVar"b'9", 38431 Bop(And, 38432 Mop(Not,bVar"b'8"), 38433 bVar"b'6")))))), 38434 MB(Call 38435 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)), 38436 LU), 38437 Close 38438 (Var("v",F4), 38439 MB(MB(MB(Call 38440 ("ArchVersion", 38441 ATy(qTy,PTy(nTy,qTy)),LU), 38442 Close 38443 (nVar"v0", 38444 MB(MU(Bop(Ge,nVar"v0",LN 6), 38445 qTy), 38446 Close 38447 (bVar"v0", 38448 MU(TP[Var("v",F4), 38449 bVar"v0"],qTy))))), 38450 Close 38451 (Var("v",PTy(F4,bTy)), 38452 Call 38453 ("Take", 38454 ATy(qTy,PTy(bTy,qTy)), 38455 Var("v",PTy(F4,bTy))))), 38456 Close 38457 (bVar"b", 38458 ITE(bVar"b", 38459 MU(Call 38460 ("Media", 38461 CTy"instruction", 38462 Call 38463 ("ExtendByte", 38464 CTy"Media", 38465 TP[EQ(Mop(Cast F1, 38466 LL[bVar"b'7"]), 38467 LW(1,1)), 38468 Mop(Cast F4, 38469 Mop(Cast 38470 (FTy 3), 38471 LL[bVar"b'2", 38472 bVar"b'1", 38473 bVar"b'0"])), 38474 LW(15,4), 38475 Mop(Cast F4, 38476 Mop(Cast 38477 (FTy 3), 38478 LL[bVar"b'5", 38479 bVar"b'4", 38480 bVar"b'3"])), 38481 LN 0])),qTy), 38482 Call 38483 ("Skip", 38484 ATy(qTy, 38485 PTy(CTy"instruction", 38486 qTy)),LU))))))), 38487 (Bop(And,Mop(Not,bVar"b'14"), 38488 Bop(And,bVar"b'12", 38489 Bop(And,Mop(Not,bVar"b'11"), 38490 Bop(And,bVar"b'10", 38491 Mop(Not,bVar"b'9"))))), 38492 MB(Call 38493 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)), 38494 LU), 38495 Close 38496 (Var("v",F4), 38497 MB(MB(MU(TP[Var("v",F4),LT],qTy), 38498 Close 38499 (Var("v",PTy(F4,bTy)), 38500 Call 38501 ("Take", 38502 ATy(qTy,PTy(bTy,qTy)), 38503 Var("v",PTy(F4,bTy))))), 38504 Close 38505 (bVar"b", 38506 ITE(bVar"b", 38507 Let(Var("registers",F16), 38508 CC[LW(0,1), 38509 Mop(Cast F1, 38510 LL[bVar"b'8"]), 38511 LW(0,6), 38512 Mop(Cast F8, 38513 LL[bVar"b'7", 38514 bVar"b'6", 38515 bVar"b'5", 38516 bVar"b'4", 38517 bVar"b'3", 38518 bVar"b'2", 38519 bVar"b'1", 38520 bVar"b'0"])], 38521 MB(Call 38522 ("BitCount", 38523 ATy(qTy, 38524 PTy(nTy,qTy)), 38525 Var("registers",F16)), 38526 Close 38527 (nVar"v", 38528 MB(MB(MU(Bop(Lt, 38529 nVar"v", 38530 LN 1), 38531 qTy), 38532 Close 38533 (bVar"b", 38534 ITE(bVar"b", 38535 Call 38536 ("DECODE_UNPREDICTABLE", 38537 ATy(qTy, 38538 PTy(uTy, 38539 qTy)), 38540 TP[Var("mc", 38541 CTy"MachineCode"), 38542 LS 38543 "StoreMultiple"]), 38544 MU(LU, 38545 qTy)))), 38546 Close 38547 (AVar uTy, 38548 MU(Call 38549 ("Store", 38550 CTy"instruction", 38551 Call 38552 ("StoreMultiple", 38553 CTy"Store", 38554 TP[LF, 38555 LT, 38556 LT, 38557 LW(13, 38558 4), 38559 Var("registers", 38560 F16)])), 38561 qTy)))))), 38562 Call 38563 ("Skip", 38564 ATy(qTy, 38565 PTy(CTy"instruction", 38566 qTy)),LU))))))), 38567 (Bop(And,Mop(Not,bVar"b'14"), 38568 Bop(And,bVar"b'12", 38569 Bop(And,Mop(Not,bVar"b'11"), 38570 Bop(And,bVar"b'10", 38571 Bop(And,bVar"b'9", 38572 Bop(And, 38573 Mop(Not,bVar"b'8"), 38574 Bop(And, 38575 Mop(Not,bVar"b'7"), 38576 Bop(And, 38577 bVar"b'6", 38578 Mop(Not, 38579 bVar"b'5"))))))))), 38580 MB(Call 38581 ("ArchVersion",ATy(qTy,PTy(nTy,qTy)),LU), 38582 Close 38583 (nVar"v", 38584 MB(MB(MB(MU(Bop(Ge,nVar"v",LN 6),qTy), 38585 Close 38586 (bVar"v", 38587 MU(TP[LW(14,4),bVar"v"],qTy))), 38588 Close 38589 (Var("v",PTy(F4,bTy)), 38590 Call 38591 ("Take", 38592 ATy(qTy,PTy(bTy,qTy)), 38593 Var("v",PTy(F4,bTy))))), 38594 Close 38595 (bVar"b", 38596 ITE(bVar"b", 38597 MB(Call 38598 ("InITBlock", 38599 ATy(qTy,PTy(bTy,qTy)), 38600 LU), 38601 Close 38602 (bVar"v", 38603 MB(ITE(bVar"v", 38604 Call 38605 ("DECODE_UNPREDICTABLE", 38606 ATy(qTy, 38607 PTy(uTy, 38608 qTy)), 38609 TP[Var("mc", 38610 CTy"MachineCode"), 38611 LS"Setend"]), 38612 MU(LU,qTy)), 38613 Close 38614 (AVar uTy, 38615 MU(Call 38616 ("System", 38617 CTy"instruction", 38618 Call 38619 ("Setend", 38620 CTy"System", 38621 EQ(Mop(Cast 38622 F1, 38623 LL[bVar"b'3"]), 38624 LW(1, 38625 1)))), 38626 qTy))))), 38627 Call 38628 ("Skip", 38629 ATy(qTy, 38630 PTy(CTy"instruction", 38631 qTy)),LU))))))), 38632 (Bop(And,Mop(Not,bVar"b'14"), 38633 Bop(And,bVar"b'12", 38634 Bop(And,Mop(Not,bVar"b'11"), 38635 Bop(And,bVar"b'10", 38636 Bop(And,bVar"b'9", 38637 Bop(And, 38638 Mop(Not,bVar"b'8"), 38639 Bop(And, 38640 Mop(Not,bVar"b'7"), 38641 Bop(And, 38642 bVar"b'6", 38643 bVar"b'5")))))))), 38644 Let(Var("F",F1),Mop(Cast F1,LL[bVar"b'0"]), 38645 Let(Var("I",F1), 38646 Mop(Cast F1,LL[bVar"b'1"]), 38647 Let(Var("A",F1), 38648 Mop(Cast F1,LL[bVar"b'2"]), 38649 MB(Call 38650 ("ArchVersion", 38651 ATy(qTy,PTy(nTy,qTy)),LU), 38652 Close 38653 (nVar"v", 38654 MB(MB(MB(MU(Bop(Ge,nVar"v", 38655 LN 6),qTy), 38656 Close 38657 (bVar"v", 38658 MU(TP[LW(14,4), 38659 bVar"v"], 38660 qTy))), 38661 Close 38662 (Var("v", 38663 PTy(F4,bTy)), 38664 Call 38665 ("Take", 38666 ATy(qTy, 38667 PTy(bTy,qTy)), 38668 Var("v", 38669 PTy(F4,bTy))))), 38670 Close 38671 (bVar"b", 38672 ITE(bVar"b", 38673 MB(Call 38674 ("InITBlock", 38675 ATy(qTy, 38676 PTy(bTy, 38677 qTy)), 38678 LU), 38679 Close 38680 (bVar"v", 38681 MB(MB(MU(Bop(Or, 38682 EQ(CC[Var("A", 38683 F1), 38684 Var("I", 38685 F1), 38686 Var("F", 38687 F1)], 38688 LW(0, 38689 3)), 38690 bVar"v"), 38691 qTy), 38692 Close 38693 (bVar"b", 38694 ITE(bVar"b", 38695 Call 38696 ("DECODE_UNPREDICTABLE", 38697 ATy(qTy, 38698 PTy(uTy, 38699 qTy)), 38700 TP[Var("mc", 38701 CTy"MachineCode"), 38702 LS 38703 "ChangeProcessorStateT1"]), 38704 MU(LU, 38705 qTy)))), 38706 Close 38707 (AVar 38708 uTy, 38709 MU(Call 38710 ("System", 38711 CTy"instruction", 38712 Call 38713 ("ChangeProcessorStateT1", 38714 CTy"System", 38715 TP[EQ(Mop(Cast 38716 F1, 38717 LL[bVar"b'4"]), 38718 LW(0, 38719 1)), 38720 EQ(Var("A", 38721 F1), 38722 LW(1, 38723 1)), 38724 EQ(Var("I", 38725 F1), 38726 LW(1, 38727 1)), 38728 EQ(Var("F", 38729 F1), 38730 LW(1, 38731 1))])), 38732 qTy))))), 38733 Call 38734 ("Skip", 38735 ATy(qTy, 38736 PTy(CTy"instruction", 38737 qTy)), 38738 LU)))))))))), 38739 (Bop(And,Mop(Not,bVar"b'14"), 38740 Bop(And,bVar"b'12", 38741 Bop(And,bVar"b'11", 38742 Bop(And,Mop(Not,bVar"b'10"), 38743 Bop(And,bVar"b'9", 38744 Mop(Not,bVar"b'8")))))), 38745 Let(Var("Rd",FTy 3), 38746 Mop(Cast(FTy 3), 38747 LL[bVar"b'2",bVar"b'1",bVar"b'0"]), 38748 Let(Var("Rm",FTy 3), 38749 Mop(Cast(FTy 3), 38750 LL[bVar"b'5",bVar"b'4",bVar"b'3"]), 38751 MB(Call 38752 ("ThumbCondition", 38753 ATy(qTy,PTy(F4,qTy)),LU), 38754 Close 38755 (Var("v",F4), 38756 MB(MB(MB(Call 38757 ("ArchVersion", 38758 ATy(qTy, 38759 PTy(nTy,qTy)), 38760 LU), 38761 Close 38762 (nVar"v0", 38763 MB(MU(Bop(Ge, 38764 nVar"v0", 38765 LN 6),qTy), 38766 Close 38767 (bVar"v0", 38768 MU(TP[Var("v", 38769 F4), 38770 bVar"v0"], 38771 qTy))))), 38772 Close 38773 (Var("v",PTy(F4,bTy)), 38774 Call 38775 ("Take", 38776 ATy(qTy, 38777 PTy(bTy,qTy)), 38778 Var("v",PTy(F4,bTy))))), 38779 Close 38780 (bVar"b", 38781 ITE(bVar"b", 38782 MU(CS(Mop(Cast(FTy 2), 38783 LL[bVar"b'7", 38784 bVar"b'6"]), 38785 [(LW(0,2), 38786 Call 38787 ("Media", 38788 CTy"instruction", 38789 Call 38790 ("ByteReverse", 38791 CTy"Media", 38792 TP[Mop(Cast 38793 F4, 38794 Var("Rd", 38795 FTy 3)), 38796 Mop(Cast 38797 F4, 38798 Var("Rm", 38799 FTy 3))]))), 38800 (LW(1,2), 38801 Call 38802 ("Media", 38803 CTy"instruction", 38804 Call 38805 ("ByteReversePackedHalfword", 38806 CTy"Media", 38807 TP[Mop(Cast 38808 F4, 38809 Var("Rd", 38810 FTy 3)), 38811 Mop(Cast 38812 F4, 38813 Var("Rm", 38814 FTy 3))]))), 38815 (LW(3,2), 38816 Call 38817 ("Media", 38818 CTy"instruction", 38819 Call 38820 ("ByteReverseSignedHalfword", 38821 CTy"Media", 38822 TP[Mop(Cast 38823 F4, 38824 Var("Rd", 38825 FTy 3)), 38826 Mop(Cast 38827 F4, 38828 Var("Rm", 38829 FTy 3))]))), 38830 (AVar(FTy 2), 38831 Call 38832 ("Undefined", 38833 CTy"instruction", 38834 LW(0,32)))]), 38835 qTy), 38836 Call 38837 ("Skip", 38838 ATy(qTy, 38839 PTy(CTy"instruction", 38840 qTy)),LU))))))))), 38841 (Bop(And,Mop(Not,bVar"b'14"), 38842 Bop(And,bVar"b'12", 38843 Bop(And,bVar"b'11", 38844 Bop(And,bVar"b'10", 38845 Mop(Not,bVar"b'9"))))), 38846 MB(Call 38847 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)), 38848 LU), 38849 Close 38850 (Var("v",F4), 38851 MB(MB(MU(TP[Var("v",F4),LT],qTy), 38852 Close 38853 (Var("v",PTy(F4,bTy)), 38854 Call 38855 ("Take", 38856 ATy(qTy,PTy(bTy,qTy)), 38857 Var("v",PTy(F4,bTy))))), 38858 Close 38859 (bVar"b", 38860 ITE(bVar"b", 38861 Let(Var("registers",F16), 38862 CC[Mop(Cast F1, 38863 LL[bVar"b'8"]), 38864 LW(0,7), 38865 Mop(Cast F8, 38866 LL[bVar"b'7", 38867 bVar"b'6", 38868 bVar"b'5", 38869 bVar"b'4", 38870 bVar"b'3", 38871 bVar"b'2", 38872 bVar"b'1", 38873 bVar"b'0"])], 38874 MB(Call 38875 ("BitCount", 38876 ATy(qTy, 38877 PTy(nTy,qTy)), 38878 Var("registers",F16)), 38879 Close 38880 (nVar"v", 38881 MB(MB(MB(MU(Bop(Lt, 38882 nVar"v", 38883 LN 38884 1), 38885 qTy), 38886 Close 38887 (bVar"b", 38888 ITE(bVar"b", 38889 MU(LT, 38890 qTy), 38891 MB(Call 38892 ("InITBlock", 38893 ATy(qTy, 38894 PTy(bTy, 38895 qTy)), 38896 LU), 38897 Close 38898 (bVar"v", 38899 MB(MU(Bop(And, 38900 Bop(Bit, 38901 Var("registers", 38902 F16), 38903 LN 38904 15), 38905 bVar"v"), 38906 qTy), 38907 Close 38908 (bVar"b", 38909 ITE(bVar"b", 38910 MB(Call 38911 ("LastInITBlock", 38912 ATy(qTy, 38913 PTy(bTy, 38914 qTy)), 38915 LU), 38916 Close 38917 (bVar"v", 38918 MU(Mop(Not, 38919 bVar"v"), 38920 qTy))), 38921 MU(LF, 38922 qTy))))))))), 38923 Close 38924 (bVar"b", 38925 ITE(bVar"b", 38926 Call 38927 ("DECODE_UNPREDICTABLE", 38928 ATy(qTy, 38929 PTy(uTy, 38930 qTy)), 38931 TP[Var("mc", 38932 CTy"MachineCode"), 38933 LS 38934 "LoadMultiple"]), 38935 MU(LU, 38936 qTy)))), 38937 Close 38938 (AVar uTy, 38939 MU(Call 38940 ("Load", 38941 CTy"instruction", 38942 Call 38943 ("LoadMultiple", 38944 CTy"Load", 38945 TP[LT, 38946 LF, 38947 LT, 38948 LW(13, 38949 4), 38950 Var("registers", 38951 F16)])), 38952 qTy)))))), 38953 Call 38954 ("Skip", 38955 ATy(qTy, 38956 PTy(CTy"instruction", 38957 qTy)),LU))))))), 38958 (Bop(And,Mop(Not,bVar"b'14"), 38959 Bop(And,bVar"b'12", 38960 Bop(And,bVar"b'11", 38961 Bop(And,bVar"b'10", 38962 Bop(And,bVar"b'9", 38963 Mop(Not,bVar"b'8")))))), 38964 MB(Call 38965 ("ArchVersion",ATy(qTy,PTy(nTy,qTy)),LU), 38966 Close 38967 (nVar"v", 38968 MB(MB(MB(MU(Bop(Ge,nVar"v",LN 5),qTy), 38969 Close 38970 (bVar"v", 38971 MU(TP[LW(14,4),bVar"v"],qTy))), 38972 Close 38973 (Var("v",PTy(F4,bTy)), 38974 Call 38975 ("Take", 38976 ATy(qTy,PTy(bTy,qTy)), 38977 Var("v",PTy(F4,bTy))))), 38978 Close 38979 (bVar"b", 38980 ITE(bVar"b", 38981 MU(Call 38982 ("Hint", 38983 CTy"instruction", 38984 Call 38985 ("Breakpoint", 38986 CTy"Hint", 38987 Mop(Cast F32, 38988 Mop(Cast F8, 38989 LL[bVar"b'7", 38990 bVar"b'6", 38991 bVar"b'5", 38992 bVar"b'4", 38993 bVar"b'3", 38994 bVar"b'2", 38995 bVar"b'1", 38996 bVar"b'0"])))), 38997 qTy), 38998 Call 38999 ("Skip", 39000 ATy(qTy, 39001 PTy(CTy"instruction", 39002 qTy)),LU))))))), 39003 (Bop(And,Mop(Not,bVar"b'14"), 39004 Bop(And,bVar"b'12", 39005 Bop(And,bVar"b'11", 39006 Bop(And,bVar"b'10", 39007 Bop(And,bVar"b'9", 39008 Bop(And,bVar"b'8", 39009 Bop(And, 39010 Mop(Not,bVar"b'3"), 39011 Bop(And, 39012 Mop(Not, 39013 bVar"b'2"), 39014 Bop(And, 39015 Mop(Not, 39016 bVar"b'1"), 39017 Mop(Not, 39018 bVar"b'0")))))))))), 39019 MB(Call 39020 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)), 39021 LU), 39022 Close 39023 (Var("v",F4), 39024 MB(MU(TP[Var("v",F4), 39025 Mop(Cast F8, 39026 Mop(Cast F4, 39027 LL[bVar"b'7", 39028 bVar"b'6", 39029 bVar"b'5",bVar"b'4"]))], 39030 qTy), 39031 Close 39032 (Var("v",PTy(F4,F8)), 39033 Call 39034 ("DecodeHint", 39035 ATy(qTy, 39036 PTy(CTy"instruction",qTy)), 39037 Var("v",PTy(F4,F8)))))))), 39038 (Bop(And,Mop(Not,bVar"b'14"), 39039 Bop(And,bVar"b'12", 39040 Bop(And,bVar"b'11", 39041 Bop(And,bVar"b'10", 39042 Bop(And,bVar"b'9",bVar"b'8"))))), 39043 Let(Var("mask",F4), 39044 Mop(Cast F4, 39045 LL[bVar"b'3",bVar"b'2",bVar"b'1", 39046 bVar"b'0"]), 39047 Let(Var("firstcond",F4), 39048 Mop(Cast F4, 39049 LL[bVar"b'7",bVar"b'6",bVar"b'5", 39050 bVar"b'4"]), 39051 MB(Call 39052 ("HaveThumb2", 39053 ATy(qTy,PTy(bTy,qTy)),LU), 39054 Close 39055 (bVar"v", 39056 MB(MB(MU(TP[LW(14,4),bVar"v"], 39057 qTy), 39058 Close 39059 (Var("v",PTy(F4,bTy)), 39060 Call 39061 ("Take", 39062 ATy(qTy, 39063 PTy(bTy,qTy)), 39064 Var("v",PTy(F4,bTy))))), 39065 Close 39066 (bVar"b", 39067 ITE(bVar"b", 39068 MB(Call 39069 ("BitCount", 39070 ATy(qTy, 39071 PTy(nTy,qTy)), 39072 Var("mask",F4)), 39073 Close 39074 (nVar"v", 39075 MB(MB(MB(MB(MB(MB(MU(EQ(nVar"v", 39076 LN 39077 1), 39078 qTy), 39079 Close 39080 (bVar"v", 39081 MU(Mop(Not, 39082 bVar"v"), 39083 qTy))), 39084 Close 39085 (bVar"v", 39086 MU(Bop(And, 39087 EQ(Var("firstcond", 39088 F4), 39089 LW(14, 39090 4)), 39091 bVar"v"), 39092 qTy))), 39093 Close 39094 (bVar"v", 39095 MU(Bop(Or, 39096 EQ(Var("firstcond", 39097 F4), 39098 LW(15, 39099 4)), 39100 bVar"v"), 39101 qTy))), 39102 Close 39103 (bVar"b", 39104 ITE(bVar"b", 39105 MU(LT, 39106 qTy), 39107 Call 39108 ("InITBlock", 39109 ATy(qTy, 39110 PTy(bTy, 39111 qTy)), 39112 LU)))), 39113 Close 39114 (bVar"b", 39115 ITE(bVar"b", 39116 Call 39117 ("DECODE_UNPREDICTABLE", 39118 ATy(qTy, 39119 PTy(uTy, 39120 qTy)), 39121 TP[Var("mc", 39122 CTy"MachineCode"), 39123 LS 39124 "IfThen"]), 39125 MU(LU, 39126 qTy)))), 39127 Close 39128 (AVar uTy, 39129 MU(Call 39130 ("IfThen", 39131 CTy"instruction", 39132 TP[Var("firstcond", 39133 F4), 39134 Var("mask", 39135 F4)]), 39136 qTy))))), 39137 Call 39138 ("Skip", 39139 ATy(qTy, 39140 PTy(CTy"instruction", 39141 qTy)),LU))))))))), 39142 (Bop(And,bVar"b'14", 39143 Bop(And,Mop(Not,bVar"b'12"), 39144 Mop(Not,bVar"b'11"))), 39145 MB(Call 39146 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)), 39147 LU), 39148 Close 39149 (Var("v",F4), 39150 MB(MB(MU(TP[Var("v",F4),LT],qTy), 39151 Close 39152 (Var("v",PTy(F4,bTy)), 39153 Call 39154 ("Take", 39155 ATy(qTy,PTy(bTy,qTy)), 39156 Var("v",PTy(F4,bTy))))), 39157 Close 39158 (bVar"b", 39159 ITE(bVar"b", 39160 MB(Call 39161 ("InITBlock", 39162 ATy(qTy,PTy(bTy,qTy)), 39163 LU), 39164 Close 39165 (bVar"v", 39166 MB(MB(ITE(bVar"v", 39167 MB(Call 39168 ("LastInITBlock", 39169 ATy(qTy, 39170 PTy(bTy, 39171 qTy)), 39172 LU), 39173 Close 39174 (bVar"v", 39175 MU(Mop(Not, 39176 bVar"v"), 39177 qTy))), 39178 MU(LF,qTy)), 39179 Close 39180 (bVar"b", 39181 ITE(bVar"b", 39182 Call 39183 ("DECODE_UNPREDICTABLE", 39184 ATy(qTy, 39185 PTy(uTy, 39186 qTy)), 39187 TP[Var("mc", 39188 CTy"MachineCode"), 39189 LS 39190 "BranchTarget"]), 39191 MU(LU,qTy)))), 39192 Close 39193 (AVar uTy, 39194 MU(Call 39195 ("Branch", 39196 CTy"instruction", 39197 Call 39198 ("BranchTarget", 39199 CTy"Branch", 39200 Mop(SE F32, 39201 CC[Mop(Cast 39202 (FTy 11), 39203 LL[bVar"b'10", 39204 bVar"b'9", 39205 bVar"b'8", 39206 bVar"b'7", 39207 bVar"b'6", 39208 bVar"b'5", 39209 bVar"b'4", 39210 bVar"b'3", 39211 bVar"b'2", 39212 bVar"b'1", 39213 bVar"b'0"]), 39214 LW(0, 39215 1)]))), 39216 qTy))))), 39217 Call 39218 ("Skip", 39219 ATy(qTy, 39220 PTy(CTy"instruction", 39221 qTy)),LU)))))))], 39222 Call 39223 ("UndefinedThumb", 39224 ATy(qTy,PTy(CTy"instruction",qTy)),LU))), 39225 (Bop(And,Mop(Not,bVar"b'14"), 39226 Bop(And,Mop(Not,bVar"b'12"),Mop(Not,bVar"b'11"))), 39227 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 39228 Close 39229 (Var("v",F4), 39230 MB(MB(MU(TP[Var("v",F4),LT],qTy), 39231 Close 39232 (Var("v",PTy(F4,bTy)), 39233 Call 39234 ("Take",ATy(qTy,PTy(bTy,qTy)), 39235 Var("v",PTy(F4,bTy))))), 39236 Close 39237 (bVar"b", 39238 ITE(bVar"b", 39239 MB(Call 39240 ("InITBlock", 39241 ATy(qTy,PTy(bTy,qTy)),LU), 39242 Close 39243 (bVar"v", 39244 MB(MU(Mop(Not,bVar"v"),qTy), 39245 Close 39246 (bVar"setflags", 39247 MU(Call 39248 ("Data", 39249 CTy"instruction", 39250 Call 39251 ("Move", 39252 CTy"Data", 39253 TP[bVar"setflags", 39254 LF, 39255 Mop(Cast F4, 39256 Mop(Cast 39257 (FTy 3), 39258 LL[bVar"b'10", 39259 bVar"b'9", 39260 bVar"b'8"])), 39261 Mop(Cast 39262 (FTy 12), 39263 Mop(Cast 39264 F8, 39265 LL[bVar"b'7", 39266 bVar"b'6", 39267 bVar"b'5", 39268 bVar"b'4", 39269 bVar"b'3", 39270 bVar"b'2", 39271 bVar"b'1", 39272 bVar"b'0"]))])), 39273 qTy))))), 39274 Call 39275 ("Skip", 39276 ATy(qTy, 39277 PTy(CTy"instruction",qTy)), 39278 LU))))))), 39279 (Bop(And,Mop(Not,bVar"b'14"), 39280 Bop(And,Mop(Not,bVar"b'12"),bVar"b'11")), 39281 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 39282 Close 39283 (Var("v",F4), 39284 MB(MB(MU(TP[Var("v",F4),LT],qTy), 39285 Close 39286 (Var("v",PTy(F4,bTy)), 39287 Call 39288 ("Take",ATy(qTy,PTy(bTy,qTy)), 39289 Var("v",PTy(F4,bTy))))), 39290 Close 39291 (bVar"b", 39292 ITE(bVar"b", 39293 MU(Call 39294 ("Data",CTy"instruction", 39295 Call 39296 ("TestCompareImmediate", 39297 CTy"Data", 39298 TP[LW(2,2), 39299 Mop(Cast F4, 39300 Mop(Cast(FTy 3), 39301 LL[bVar"b'10", 39302 bVar"b'9", 39303 bVar"b'8"])), 39304 Mop(Cast(FTy 12), 39305 Mop(Cast F8, 39306 LL[bVar"b'7", 39307 bVar"b'6", 39308 bVar"b'5", 39309 bVar"b'4", 39310 bVar"b'3", 39311 bVar"b'2", 39312 bVar"b'1", 39313 bVar"b'0"]))])), 39314 qTy), 39315 Call 39316 ("Skip", 39317 ATy(qTy, 39318 PTy(CTy"instruction",qTy)), 39319 LU))))))), 39320 (Bop(And,Mop(Not,bVar"b'14"),bVar"b'12"), 39321 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 39322 Close 39323 (Var("v",F4), 39324 MB(MB(MU(TP[Var("v",F4),LT],qTy), 39325 Close 39326 (Var("v",PTy(F4,bTy)), 39327 Call 39328 ("Take",ATy(qTy,PTy(bTy,qTy)), 39329 Var("v",PTy(F4,bTy))))), 39330 Close 39331 (bVar"b", 39332 ITE(bVar"b", 39333 Let(Var("d",F4), 39334 Mop(Cast F4, 39335 Mop(Cast(FTy 3), 39336 LL[bVar"b'10", 39337 bVar"b'9",bVar"b'8"])), 39338 MB(Call 39339 ("InITBlock", 39340 ATy(qTy,PTy(bTy,qTy)),LU), 39341 Close 39342 (bVar"v", 39343 MB(MU(Mop(Not,bVar"v"), 39344 qTy), 39345 Close 39346 (bVar"setflags", 39347 MU(Call 39348 ("Data", 39349 CTy"instruction", 39350 Call 39351 ("ArithLogicImmediate", 39352 CTy"Data", 39353 TP[ITE(EQ(Mop(Cast 39354 F1, 39355 LL[bVar"b'11"]), 39356 LW(1, 39357 1)), 39358 LW(2, 39359 4), 39360 LW(4, 39361 4)), 39362 bVar"setflags", 39363 Var("d", 39364 F4), 39365 Var("d", 39366 F4), 39367 Mop(Cast 39368 (FTy 12), 39369 Mop(Cast 39370 F8, 39371 LL[bVar"b'7", 39372 bVar"b'6", 39373 bVar"b'5", 39374 bVar"b'4", 39375 bVar"b'3", 39376 bVar"b'2", 39377 bVar"b'1", 39378 bVar"b'0"]))])), 39379 qTy)))))), 39380 Call 39381 ("Skip", 39382 ATy(qTy, 39383 PTy(CTy"instruction",qTy)), 39384 LU))))))), 39385 (Bop(And,bVar"b'14",Mop(Not,bVar"b'12")), 39386 Let(Var("Rt",FTy 3), 39387 Mop(Cast(FTy 3), 39388 LL[bVar"b'2",bVar"b'1",bVar"b'0"]), 39389 Let(Var("Rn",FTy 3), 39390 Mop(Cast(FTy 3), 39391 LL[bVar"b'5",bVar"b'4",bVar"b'3"]), 39392 MB(Call 39393 ("ThumbCondition", 39394 ATy(qTy,PTy(F4,qTy)),LU), 39395 Close 39396 (Var("v",F4), 39397 MB(MB(MU(TP[Var("v",F4),LT],qTy), 39398 Close 39399 (Var("v",PTy(F4,bTy)), 39400 Call 39401 ("Take", 39402 ATy(qTy,PTy(bTy,qTy)), 39403 Var("v",PTy(F4,bTy))))), 39404 Close 39405 (bVar"b", 39406 ITE(bVar"b", 39407 MU(Let(bVar"index",LT, 39408 Let(bVar"add",LT, 39409 Let(bVar"wback", 39410 LF, 39411 Let(Var("m", 39412 CTy"offset1"), 39413 Call 39414 ("immediate_form1", 39415 CTy"offset1", 39416 Mop(Cast 39417 F32, 39418 CC[Mop(Cast 39419 (FTy 5), 39420 LL[bVar"b'10", 39421 bVar"b'9", 39422 bVar"b'8", 39423 bVar"b'7", 39424 bVar"b'6"]), 39425 LW(0, 39426 2)])), 39427 ITE(EQ(Mop(Cast 39428 F1, 39429 LL[bVar"b'11"]), 39430 LW(1, 39431 1)), 39432 Call 39433 ("Load", 39434 CTy"instruction", 39435 Call 39436 ("LoadWord", 39437 CTy"Load", 39438 TP[bVar"add", 39439 bVar"index", 39440 bVar"wback", 39441 Mop(Cast 39442 F4, 39443 Var("Rt", 39444 FTy 3)), 39445 Mop(Cast 39446 F4, 39447 Var("Rn", 39448 FTy 3)), 39449 Var("m", 39450 CTy"offset1")])), 39451 Call 39452 ("Store", 39453 CTy"instruction", 39454 Call 39455 ("StoreWord", 39456 CTy"Store", 39457 TP[bVar"add", 39458 bVar"index", 39459 bVar"wback", 39460 Mop(Cast 39461 F4, 39462 Var("Rt", 39463 FTy 3)), 39464 Mop(Cast 39465 F4, 39466 Var("Rn", 39467 FTy 3)), 39468 Var("m", 39469 CTy"offset1")]))))))), 39470 qTy), 39471 Call 39472 ("Skip", 39473 ATy(qTy, 39474 PTy(CTy"instruction", 39475 qTy)),LU))))))))), 39476 (Bop(And,bVar"b'14",bVar"b'12"), 39477 Let(Var("Rt",FTy 3), 39478 Mop(Cast(FTy 3), 39479 LL[bVar"b'2",bVar"b'1",bVar"b'0"]), 39480 Let(Var("Rn",FTy 3), 39481 Mop(Cast(FTy 3), 39482 LL[bVar"b'5",bVar"b'4",bVar"b'3"]), 39483 MB(Call 39484 ("ThumbCondition", 39485 ATy(qTy,PTy(F4,qTy)),LU), 39486 Close 39487 (Var("v",F4), 39488 MB(MB(MU(TP[Var("v",F4),LT],qTy), 39489 Close 39490 (Var("v",PTy(F4,bTy)), 39491 Call 39492 ("Take", 39493 ATy(qTy,PTy(bTy,qTy)), 39494 Var("v",PTy(F4,bTy))))), 39495 Close 39496 (bVar"b", 39497 ITE(bVar"b", 39498 MU(Let(bVar"index",LT, 39499 Let(bVar"add",LT, 39500 Let(bVar"wback", 39501 LF, 39502 Let(Var("m", 39503 CTy"offset1"), 39504 Call 39505 ("immediate_form1", 39506 CTy"offset1", 39507 Mop(Cast 39508 F32, 39509 Mop(Cast 39510 (FTy 5), 39511 LL[bVar"b'10", 39512 bVar"b'9", 39513 bVar"b'8", 39514 bVar"b'7", 39515 bVar"b'6"]))), 39516 ITE(EQ(Mop(Cast 39517 F1, 39518 LL[bVar"b'11"]), 39519 LW(1, 39520 1)), 39521 Call 39522 ("Load", 39523 CTy"instruction", 39524 Call 39525 ("LoadByte", 39526 CTy"Load", 39527 TP[LT, 39528 bVar"add", 39529 bVar"index", 39530 bVar"wback", 39531 Mop(Cast 39532 F4, 39533 Var("Rt", 39534 FTy 3)), 39535 Mop(Cast 39536 F4, 39537 Var("Rn", 39538 FTy 3)), 39539 Var("m", 39540 CTy"offset1")])), 39541 Call 39542 ("Store", 39543 CTy"instruction", 39544 Call 39545 ("StoreByte", 39546 CTy"Store", 39547 TP[bVar"add", 39548 bVar"index", 39549 bVar"wback", 39550 Mop(Cast 39551 F4, 39552 Var("Rt", 39553 FTy 3)), 39554 Mop(Cast 39555 F4, 39556 Var("Rn", 39557 FTy 3)), 39558 Var("m", 39559 CTy"offset1")]))))))), 39560 qTy), 39561 Call 39562 ("Skip", 39563 ATy(qTy, 39564 PTy(CTy"instruction", 39565 qTy)),LU)))))))))], 39566 Call 39567 ("UndefinedThumb", 39568 ATy(qTy,PTy(CTy"instruction",qTy)),LU))), 39569 (bVar"b'15", 39570 ITB([(Bop(And,Mop(Not,bVar"b'14"),Mop(Not,bVar"b'12")), 39571 Let(Var("Rt",FTy 3), 39572 Mop(Cast(FTy 3), 39573 LL[bVar"b'2",bVar"b'1",bVar"b'0"]), 39574 Let(Var("Rn",FTy 3), 39575 Mop(Cast(FTy 3), 39576 LL[bVar"b'5",bVar"b'4",bVar"b'3"]), 39577 MB(Call 39578 ("ThumbCondition", 39579 ATy(qTy,PTy(F4,qTy)),LU), 39580 Close 39581 (Var("v",F4), 39582 MB(MB(MU(TP[Var("v",F4),LT],qTy), 39583 Close 39584 (Var("v",PTy(F4,bTy)), 39585 Call 39586 ("Take", 39587 ATy(qTy,PTy(bTy,qTy)), 39588 Var("v",PTy(F4,bTy))))), 39589 Close 39590 (bVar"b", 39591 ITE(bVar"b", 39592 MU(Let(bVar"index",LT, 39593 Let(bVar"add",LT, 39594 Let(bVar"wback", 39595 LF, 39596 Let(Var("m", 39597 CTy"offset1"), 39598 Call 39599 ("immediate_form1", 39600 CTy"offset1", 39601 Mop(Cast 39602 F32, 39603 CC[Mop(Cast 39604 (FTy 5), 39605 LL[bVar"b'10", 39606 bVar"b'9", 39607 bVar"b'8", 39608 bVar"b'7", 39609 bVar"b'6"]), 39610 LW(0, 39611 1)])), 39612 ITE(EQ(Mop(Cast 39613 F1, 39614 LL[bVar"b'11"]), 39615 LW(1, 39616 1)), 39617 Call 39618 ("Load", 39619 CTy"instruction", 39620 Call 39621 ("LoadHalf", 39622 CTy"Load", 39623 TP[LT, 39624 bVar"add", 39625 bVar"index", 39626 bVar"wback", 39627 Mop(Cast 39628 F4, 39629 Var("Rt", 39630 FTy 3)), 39631 Mop(Cast 39632 F4, 39633 Var("Rn", 39634 FTy 3)), 39635 Var("m", 39636 CTy"offset1")])), 39637 Call 39638 ("Store", 39639 CTy"instruction", 39640 Call 39641 ("StoreHalf", 39642 CTy"Store", 39643 TP[bVar"add", 39644 bVar"index", 39645 bVar"wback", 39646 Mop(Cast 39647 F4, 39648 Var("Rt", 39649 FTy 3)), 39650 Mop(Cast 39651 F4, 39652 Var("Rn", 39653 FTy 3)), 39654 Var("m", 39655 CTy"offset1")]))))))), 39656 qTy), 39657 Call 39658 ("Skip", 39659 ATy(qTy, 39660 PTy(CTy"instruction", 39661 qTy)),LU))))))))), 39662 (Bop(And,Mop(Not,bVar"b'14"),bVar"b'12"), 39663 Let(Var("Rt",FTy 3), 39664 Mop(Cast(FTy 3), 39665 LL[bVar"b'10",bVar"b'9",bVar"b'8"]), 39666 MB(Call 39667 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 39668 Close 39669 (Var("v",F4), 39670 MB(MB(MU(TP[Var("v",F4),LT],qTy), 39671 Close 39672 (Var("v",PTy(F4,bTy)), 39673 Call 39674 ("Take",ATy(qTy,PTy(bTy,qTy)), 39675 Var("v",PTy(F4,bTy))))), 39676 Close 39677 (bVar"b", 39678 ITE(bVar"b", 39679 MU(Let(bVar"index",LT, 39680 Let(bVar"add",LT, 39681 Let(bVar"wback",LF, 39682 Let(Var("m", 39683 CTy"offset1"), 39684 Call 39685 ("immediate_form1", 39686 CTy"offset1", 39687 Mop(Cast 39688 F32, 39689 CC[Mop(Cast 39690 F8, 39691 LL[bVar"b'7", 39692 bVar"b'6", 39693 bVar"b'5", 39694 bVar"b'4", 39695 bVar"b'3", 39696 bVar"b'2", 39697 bVar"b'1", 39698 bVar"b'0"]), 39699 LW(0, 39700 2)])), 39701 ITE(EQ(Mop(Cast 39702 F1, 39703 LL[bVar"b'11"]), 39704 LW(1, 39705 1)), 39706 Call 39707 ("Load", 39708 CTy"instruction", 39709 Call 39710 ("LoadWord", 39711 CTy"Load", 39712 TP[bVar"add", 39713 bVar"index", 39714 bVar"wback", 39715 Mop(Cast 39716 F4, 39717 Var("Rt", 39718 FTy 3)), 39719 LW(13, 39720 4), 39721 Var("m", 39722 CTy"offset1")])), 39723 Call 39724 ("Store", 39725 CTy"instruction", 39726 Call 39727 ("StoreWord", 39728 CTy"Store", 39729 TP[bVar"add", 39730 bVar"index", 39731 bVar"wback", 39732 Mop(Cast 39733 F4, 39734 Var("Rt", 39735 FTy 3)), 39736 LW(13, 39737 4), 39738 Var("m", 39739 CTy"offset1")]))))))), 39740 qTy), 39741 Call 39742 ("Skip", 39743 ATy(qTy, 39744 PTy(CTy"instruction",qTy)), 39745 LU)))))))), 39746 (Bop(And,bVar"b'14", 39747 Bop(And,Mop(Not,bVar"b'12"),Mop(Not,bVar"b'11"))), 39748 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 39749 Close 39750 (Var("v",F4), 39751 MB(MB(MU(TP[Var("v",F4),LT],qTy), 39752 Close 39753 (Var("v",PTy(F4,bTy)), 39754 Call 39755 ("Take",ATy(qTy,PTy(bTy,qTy)), 39756 Var("v",PTy(F4,bTy))))), 39757 Close 39758 (bVar"b", 39759 ITE(bVar"b", 39760 Let(Var("registers",F16), 39761 Mop(Cast F16, 39762 Mop(Cast F8, 39763 LL[bVar"b'7",bVar"b'6", 39764 bVar"b'5",bVar"b'4", 39765 bVar"b'3",bVar"b'2", 39766 bVar"b'1",bVar"b'0"])), 39767 MB(Call 39768 ("BitCount", 39769 ATy(qTy,PTy(nTy,qTy)), 39770 Var("registers",F16)), 39771 Close 39772 (nVar"v", 39773 MB(MB(MU(Bop(Lt,nVar"v", 39774 LN 1),qTy), 39775 Close 39776 (bVar"b", 39777 ITE(bVar"b", 39778 Call 39779 ("DECODE_UNPREDICTABLE", 39780 ATy(qTy, 39781 PTy(uTy, 39782 qTy)), 39783 TP[Var("mc", 39784 CTy"MachineCode"), 39785 LS 39786 "StoreMultiple"]), 39787 MU(LU,qTy)))), 39788 Close 39789 (AVar uTy, 39790 MU(Call 39791 ("Store", 39792 CTy"instruction", 39793 Call 39794 ("StoreMultiple", 39795 CTy"Store", 39796 TP[LT,LF, 39797 LT, 39798 Mop(Cast 39799 F4, 39800 Mop(Cast 39801 (FTy 3), 39802 LL[bVar"b'10", 39803 bVar"b'9", 39804 bVar"b'8"])), 39805 Var("registers", 39806 F16)])), 39807 qTy)))))), 39808 Call 39809 ("Skip", 39810 ATy(qTy, 39811 PTy(CTy"instruction",qTy)), 39812 LU))))))), 39813 (Bop(And,bVar"b'14", 39814 Bop(And,Mop(Not,bVar"b'12"),bVar"b'11")), 39815 Let(Var("Rn",FTy 3), 39816 Mop(Cast(FTy 3), 39817 LL[bVar"b'10",bVar"b'9",bVar"b'8"]), 39818 MB(Call 39819 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 39820 Close 39821 (Var("v",F4), 39822 MB(MB(MU(TP[Var("v",F4),LT],qTy), 39823 Close 39824 (Var("v",PTy(F4,bTy)), 39825 Call 39826 ("Take",ATy(qTy,PTy(bTy,qTy)), 39827 Var("v",PTy(F4,bTy))))), 39828 Close 39829 (bVar"b", 39830 ITE(bVar"b", 39831 Let(Var("registers",F16), 39832 Mop(Cast F16, 39833 Mop(Cast F8, 39834 LL[bVar"b'7", 39835 bVar"b'6", 39836 bVar"b'5", 39837 bVar"b'4", 39838 bVar"b'3", 39839 bVar"b'2", 39840 bVar"b'1", 39841 bVar"b'0"])), 39842 MB(Call 39843 ("BitCount", 39844 ATy(qTy,PTy(nTy,qTy)), 39845 Var("registers",F16)), 39846 Close 39847 (nVar"v", 39848 MB(MB(MU(Bop(Lt, 39849 nVar"v", 39850 LN 1), 39851 qTy), 39852 Close 39853 (bVar"b", 39854 ITE(bVar"b", 39855 Call 39856 ("DECODE_UNPREDICTABLE", 39857 ATy(qTy, 39858 PTy(uTy, 39859 qTy)), 39860 TP[Var("mc", 39861 CTy"MachineCode"), 39862 LS 39863 "LoadMultiple"]), 39864 MU(LU, 39865 qTy)))), 39866 Close 39867 (AVar uTy, 39868 MU(Call 39869 ("Load", 39870 CTy"instruction", 39871 Call 39872 ("LoadMultiple", 39873 CTy"Load", 39874 TP[LT, 39875 LF, 39876 Mop(Not, 39877 Bop(Bit, 39878 Var("registers", 39879 F16), 39880 Mop(Cast 39881 nTy, 39882 Var("Rn", 39883 FTy 3)))), 39884 Mop(Cast 39885 F4, 39886 Var("Rn", 39887 FTy 3)), 39888 Var("registers", 39889 F16)])), 39890 qTy)))))), 39891 Call 39892 ("Skip", 39893 ATy(qTy, 39894 PTy(CTy"instruction",qTy)), 39895 LU)))))))), 39896 (Bop(And,bVar"b'14", 39897 Bop(And,bVar"b'12", 39898 Bop(And,bVar"b'11", 39899 Bop(And,bVar"b'10", 39900 Bop(And,bVar"b'9", 39901 Mop(Not,bVar"b'8")))))), 39902 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 39903 Close 39904 (Var("v",F4), 39905 MB(MB(MU(TP[Var("v",F4),LT],qTy), 39906 Close 39907 (Var("v",PTy(F4,bTy)), 39908 Call 39909 ("Take",ATy(qTy,PTy(bTy,qTy)), 39910 Var("v",PTy(F4,bTy))))), 39911 Close 39912 (bVar"b", 39913 ITE(bVar"b", 39914 MU(Call 39915 ("Undefined",CTy"instruction", 39916 Mop(Cast F32, 39917 Mop(Cast F8, 39918 LL[bVar"b'7", 39919 bVar"b'6", 39920 bVar"b'5", 39921 bVar"b'4", 39922 bVar"b'3", 39923 bVar"b'2", 39924 bVar"b'1", 39925 bVar"b'0"]))),qTy), 39926 Call 39927 ("Skip", 39928 ATy(qTy, 39929 PTy(CTy"instruction",qTy)), 39930 LU))))))), 39931 (Bop(And,bVar"b'14", 39932 Bop(And,bVar"b'12", 39933 Bop(And,bVar"b'11", 39934 Bop(And,bVar"b'10", 39935 Bop(And,bVar"b'9",bVar"b'8"))))), 39936 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 39937 Close 39938 (Var("v",F4), 39939 MB(MB(MU(TP[Var("v",F4),LT],qTy), 39940 Close 39941 (Var("v",PTy(F4,bTy)), 39942 Call 39943 ("Take",ATy(qTy,PTy(bTy,qTy)), 39944 Var("v",PTy(F4,bTy))))), 39945 Close 39946 (bVar"b", 39947 ITE(bVar"b", 39948 MU(Call 39949 ("System",CTy"instruction", 39950 Call 39951 ("SupervisorCall", 39952 CTy"System", 39953 Mop(Cast F32, 39954 Mop(Cast F8, 39955 LL[bVar"b'7", 39956 bVar"b'6", 39957 bVar"b'5", 39958 bVar"b'4", 39959 bVar"b'3", 39960 bVar"b'2", 39961 bVar"b'1", 39962 bVar"b'0"])))), 39963 qTy), 39964 Call 39965 ("Skip", 39966 ATy(qTy, 39967 PTy(CTy"instruction",qTy)), 39968 LU))))))), 39969 (Bop(And,bVar"b'14",bVar"b'12"), 39970 MB(Call 39971 ("Take",ATy(qTy,PTy(bTy,qTy)), 39972 TP[Mop(Cast F4, 39973 LL[bVar"b'11",bVar"b'10",bVar"b'9", 39974 bVar"b'8"]),LT]), 39975 Close 39976 (bVar"b", 39977 ITE(bVar"b", 39978 MB(Call 39979 ("InITBlock",ATy(qTy,PTy(bTy,qTy)), 39980 LU), 39981 Close 39982 (bVar"v", 39983 MB(ITE(bVar"v", 39984 Call 39985 ("DECODE_UNPREDICTABLE", 39986 ATy(qTy,PTy(uTy,qTy)), 39987 TP[Var("mc", 39988 CTy"MachineCode"), 39989 LS"BranchTarget"]), 39990 MU(LU,qTy)), 39991 Close 39992 (AVar uTy, 39993 MU(Call 39994 ("Branch", 39995 CTy"instruction", 39996 Call 39997 ("BranchTarget", 39998 CTy"Branch", 39999 Mop(SE F32, 40000 CC[Mop(Cast F8, 40001 LL[bVar"b'7", 40002 bVar"b'6", 40003 bVar"b'5", 40004 bVar"b'4", 40005 bVar"b'3", 40006 bVar"b'2", 40007 bVar"b'1", 40008 bVar"b'0"]), 40009 LW(0,1)]))), 40010 qTy))))), 40011 Call 40012 ("Skip", 40013 ATy(qTy,PTy(CTy"instruction",qTy)),LU)))))], 40014 Call 40015 ("UndefinedThumb", 40016 ATy(qTy,PTy(CTy"instruction",qTy)),LU))), 40017 (Bop(And,Mop(Not,bVar"b'14"), 40018 Bop(And,bVar"b'12", 40019 Bop(And,bVar"b'11",Mop(Not,bVar"b'10")))), 40020 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 40021 Close 40022 (Var("v",F4), 40023 MB(MB(MU(TP[Var("v",F4),LT],qTy), 40024 Close 40025 (Var("v",PTy(F4,bTy)), 40026 Call 40027 ("Take",ATy(qTy,PTy(bTy,qTy)), 40028 Var("v",PTy(F4,bTy))))), 40029 Close 40030 (bVar"b", 40031 ITE(bVar"b", 40032 MB(Call 40033 ("InITBlock",ATy(qTy,PTy(bTy,qTy)), 40034 LU), 40035 Close 40036 (bVar"v", 40037 MB(MU(Mop(Not,bVar"v"),qTy), 40038 Close 40039 (bVar"setflags", 40040 MU(Call 40041 ("Data", 40042 CTy"instruction", 40043 Call 40044 ("Register", 40045 CTy"Data", 40046 TP[ITE(EQ(Mop(Cast 40047 F1, 40048 LL[bVar"b'9"]), 40049 LW(1,1)), 40050 LW(2,4), 40051 LW(4,4)), 40052 bVar"setflags", 40053 Mop(Cast F4, 40054 Mop(Cast 40055 (FTy 3), 40056 LL[bVar"b'2", 40057 bVar"b'1", 40058 bVar"b'0"])), 40059 Mop(Cast F4, 40060 Mop(Cast 40061 (FTy 3), 40062 LL[bVar"b'5", 40063 bVar"b'4", 40064 bVar"b'3"])), 40065 Mop(Cast F4, 40066 Mop(Cast 40067 (FTy 3), 40068 LL[bVar"b'8", 40069 bVar"b'7", 40070 bVar"b'6"])), 40071 LC("SRType_LSL", 40072 CTy"SRType"), 40073 LN 0])),qTy))))), 40074 Call 40075 ("Skip", 40076 ATy(qTy,PTy(CTy"instruction",qTy)),LU))))))), 40077 (Bop(And,Mop(Not,bVar"b'14"), 40078 Bop(And,bVar"b'12",Bop(And,bVar"b'11",bVar"b'10"))), 40079 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 40080 Close 40081 (Var("v",F4), 40082 MB(MB(MU(TP[Var("v",F4),LT],qTy), 40083 Close 40084 (Var("v",PTy(F4,bTy)), 40085 Call 40086 ("Take",ATy(qTy,PTy(bTy,qTy)), 40087 Var("v",PTy(F4,bTy))))), 40088 Close 40089 (bVar"b", 40090 ITE(bVar"b", 40091 MB(Call 40092 ("InITBlock",ATy(qTy,PTy(bTy,qTy)), 40093 LU), 40094 Close 40095 (bVar"v", 40096 MB(MU(Mop(Not,bVar"v"),qTy), 40097 Close 40098 (bVar"setflags", 40099 MU(Call 40100 ("Data", 40101 CTy"instruction", 40102 Call 40103 ("ArithLogicImmediate", 40104 CTy"Data", 40105 TP[ITE(EQ(Mop(Cast 40106 F1, 40107 LL[bVar"b'9"]), 40108 LW(1,1)), 40109 LW(2,4), 40110 LW(4,4)), 40111 bVar"setflags", 40112 Mop(Cast F4, 40113 Mop(Cast 40114 (FTy 3), 40115 LL[bVar"b'2", 40116 bVar"b'1", 40117 bVar"b'0"])), 40118 Mop(Cast F4, 40119 Mop(Cast 40120 (FTy 3), 40121 LL[bVar"b'5", 40122 bVar"b'4", 40123 bVar"b'3"])), 40124 Mop(Cast(FTy 12), 40125 Mop(Cast 40126 (FTy 3), 40127 LL[bVar"b'8", 40128 bVar"b'7", 40129 bVar"b'6"]))])), 40130 qTy))))), 40131 Call 40132 ("Skip", 40133 ATy(qTy,PTy(CTy"instruction",qTy)),LU))))))), 40134 (Mop(Not,bVar"b'14"), 40135 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 40136 Close 40137 (Var("v",F4), 40138 MB(MB(MU(TP[Var("v",F4),LT],qTy), 40139 Close 40140 (Var("v",PTy(F4,bTy)), 40141 Call 40142 ("Take",ATy(qTy,PTy(bTy,qTy)), 40143 Var("v",PTy(F4,bTy))))), 40144 Close 40145 (bVar"b", 40146 ITE(bVar"b", 40147 MB(Call 40148 ("InITBlock",ATy(qTy,PTy(bTy,qTy)), 40149 LU), 40150 Close 40151 (bVar"v", 40152 MB(MU(Mop(Not,bVar"v"),qTy), 40153 Close 40154 (bVar"setflags", 40155 MU(Let(TP[Var("shift_t", 40156 CTy"SRType"), 40157 nVar"shift_n"], 40158 Call 40159 ("DecodeImmShift", 40160 PTy(CTy"SRType",nTy), 40161 TP[Mop(Cast(FTy 2), 40162 LL[bVar"b'12", 40163 bVar"b'11"]), 40164 Mop(Cast(FTy 5), 40165 LL[bVar"b'10", 40166 bVar"b'9", 40167 bVar"b'8", 40168 bVar"b'7", 40169 bVar"b'6"])]), 40170 Call 40171 ("Data", 40172 CTy"instruction", 40173 Call 40174 ("ShiftImmediate", 40175 CTy"Data", 40176 TP[LF, 40177 bVar"setflags", 40178 Mop(Cast F4, 40179 Mop(Cast 40180 (FTy 3), 40181 LL[bVar"b'2", 40182 bVar"b'1", 40183 bVar"b'0"])), 40184 Mop(Cast F4, 40185 Mop(Cast 40186 (FTy 3), 40187 LL[bVar"b'5", 40188 bVar"b'4", 40189 bVar"b'3"])), 40190 Var("shift_t", 40191 CTy"SRType"), 40192 nVar"shift_n"]))), 40193 qTy))))), 40194 Call 40195 ("Skip", 40196 ATy(qTy,PTy(CTy"instruction",qTy)),LU))))))), 40197 (Bop(And,bVar"b'14", 40198 Bop(And,Mop(Not,bVar"b'12"), 40199 Bop(And,Mop(Not,bVar"b'11"),Mop(Not,bVar"b'10")))), 40200 Let(Var("Ry",FTy 3), 40201 Mop(Cast(FTy 3),LL[bVar"b'2",bVar"b'1",bVar"b'0"]), 40202 Let(Var("Rx",FTy 3), 40203 Mop(Cast(FTy 3),LL[bVar"b'5",bVar"b'4",bVar"b'3"]), 40204 Let(Var("opc",F4), 40205 Mop(Cast F4, 40206 LL[bVar"b'9",bVar"b'8",bVar"b'7", 40207 bVar"b'6"]), 40208 MB(Call 40209 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)), 40210 LU), 40211 Close 40212 (Var("v",F4), 40213 MB(MB(MU(TP[Var("v",F4),LT],qTy), 40214 Close 40215 (Var("v",PTy(F4,bTy)), 40216 Call 40217 ("Take", 40218 ATy(qTy,PTy(bTy,qTy)), 40219 Var("v",PTy(F4,bTy))))), 40220 Close 40221 (bVar"b", 40222 ITE(bVar"b", 40223 CS(Var("opc",F4), 40224 [(LW(0,4), 40225 Let(Var("d",F4), 40226 Mop(Cast F4, 40227 Var("Ry",FTy 3)), 40228 MB(Call 40229 ("InITBlock", 40230 ATy(qTy, 40231 PTy(bTy, 40232 qTy)), 40233 LU), 40234 Close 40235 (bVar"v", 40236 MB(MU(Mop(Not, 40237 bVar"v"), 40238 qTy), 40239 Close 40240 (bVar"setflags", 40241 MU(Call 40242 ("Data", 40243 CTy"instruction", 40244 Call 40245 ("Register", 40246 CTy"Data", 40247 TP[Var("opc", 40248 F4), 40249 bVar"setflags", 40250 Var("d", 40251 F4), 40252 Var("d", 40253 F4), 40254 Mop(Cast 40255 F4, 40256 Var("Rx", 40257 FTy 3)), 40258 LC("SRType_LSL", 40259 CTy"SRType"), 40260 LN 40261 0])), 40262 qTy))))))), 40263 (LW(1,4), 40264 Let(Var("d",F4), 40265 Mop(Cast F4, 40266 Var("Ry",FTy 3)), 40267 MB(Call 40268 ("InITBlock", 40269 ATy(qTy, 40270 PTy(bTy, 40271 qTy)), 40272 LU), 40273 Close 40274 (bVar"v", 40275 MB(MU(Mop(Not, 40276 bVar"v"), 40277 qTy), 40278 Close 40279 (bVar"setflags", 40280 MU(Call 40281 ("Data", 40282 CTy"instruction", 40283 Call 40284 ("Register", 40285 CTy"Data", 40286 TP[Var("opc", 40287 F4), 40288 bVar"setflags", 40289 Var("d", 40290 F4), 40291 Var("d", 40292 F4), 40293 Mop(Cast 40294 F4, 40295 Var("Rx", 40296 FTy 3)), 40297 LC("SRType_LSL", 40298 CTy"SRType"), 40299 LN 40300 0])), 40301 qTy))))))), 40302 (LW(5,4), 40303 Let(Var("d",F4), 40304 Mop(Cast F4, 40305 Var("Ry",FTy 3)), 40306 MB(Call 40307 ("InITBlock", 40308 ATy(qTy, 40309 PTy(bTy, 40310 qTy)), 40311 LU), 40312 Close 40313 (bVar"v", 40314 MB(MU(Mop(Not, 40315 bVar"v"), 40316 qTy), 40317 Close 40318 (bVar"setflags", 40319 MU(Call 40320 ("Data", 40321 CTy"instruction", 40322 Call 40323 ("Register", 40324 CTy"Data", 40325 TP[Var("opc", 40326 F4), 40327 bVar"setflags", 40328 Var("d", 40329 F4), 40330 Var("d", 40331 F4), 40332 Mop(Cast 40333 F4, 40334 Var("Rx", 40335 FTy 3)), 40336 LC("SRType_LSL", 40337 CTy"SRType"), 40338 LN 40339 0])), 40340 qTy))))))), 40341 (LW(6,4), 40342 Let(Var("d",F4), 40343 Mop(Cast F4, 40344 Var("Ry",FTy 3)), 40345 MB(Call 40346 ("InITBlock", 40347 ATy(qTy, 40348 PTy(bTy, 40349 qTy)), 40350 LU), 40351 Close 40352 (bVar"v", 40353 MB(MU(Mop(Not, 40354 bVar"v"), 40355 qTy), 40356 Close 40357 (bVar"setflags", 40358 MU(Call 40359 ("Data", 40360 CTy"instruction", 40361 Call 40362 ("Register", 40363 CTy"Data", 40364 TP[Var("opc", 40365 F4), 40366 bVar"setflags", 40367 Var("d", 40368 F4), 40369 Var("d", 40370 F4), 40371 Mop(Cast 40372 F4, 40373 Var("Rx", 40374 FTy 3)), 40375 LC("SRType_LSL", 40376 CTy"SRType"), 40377 LN 40378 0])), 40379 qTy))))))), 40380 (LW(12,4), 40381 Let(Var("d",F4), 40382 Mop(Cast F4, 40383 Var("Ry",FTy 3)), 40384 MB(Call 40385 ("InITBlock", 40386 ATy(qTy, 40387 PTy(bTy, 40388 qTy)), 40389 LU), 40390 Close 40391 (bVar"v", 40392 MB(MU(Mop(Not, 40393 bVar"v"), 40394 qTy), 40395 Close 40396 (bVar"setflags", 40397 MU(Call 40398 ("Data", 40399 CTy"instruction", 40400 Call 40401 ("Register", 40402 CTy"Data", 40403 TP[Var("opc", 40404 F4), 40405 bVar"setflags", 40406 Var("d", 40407 F4), 40408 Var("d", 40409 F4), 40410 Mop(Cast 40411 F4, 40412 Var("Rx", 40413 FTy 3)), 40414 LC("SRType_LSL", 40415 CTy"SRType"), 40416 LN 40417 0])), 40418 qTy))))))), 40419 (LW(14,4), 40420 Let(Var("d",F4), 40421 Mop(Cast F4, 40422 Var("Ry",FTy 3)), 40423 MB(Call 40424 ("InITBlock", 40425 ATy(qTy, 40426 PTy(bTy, 40427 qTy)), 40428 LU), 40429 Close 40430 (bVar"v", 40431 MB(MU(Mop(Not, 40432 bVar"v"), 40433 qTy), 40434 Close 40435 (bVar"setflags", 40436 MU(Call 40437 ("Data", 40438 CTy"instruction", 40439 Call 40440 ("Register", 40441 CTy"Data", 40442 TP[Var("opc", 40443 F4), 40444 bVar"setflags", 40445 Var("d", 40446 F4), 40447 Var("d", 40448 F4), 40449 Mop(Cast 40450 F4, 40451 Var("Rx", 40452 FTy 3)), 40453 LC("SRType_LSL", 40454 CTy"SRType"), 40455 LN 40456 0])), 40457 qTy))))))), 40458 (LW(2,4), 40459 Let(Var("d",F4), 40460 Mop(Cast F4, 40461 Var("Ry",FTy 3)), 40462 MB(Call 40463 ("InITBlock", 40464 ATy(qTy, 40465 PTy(bTy, 40466 qTy)), 40467 LU), 40468 Close 40469 (bVar"v", 40470 MB(MU(Mop(Not, 40471 bVar"v"), 40472 qTy), 40473 Close 40474 (bVar"setflags", 40475 MU(Call 40476 ("Data", 40477 CTy"instruction", 40478 Call 40479 ("ShiftRegister", 40480 CTy"Data", 40481 TP[LF, 40482 bVar"setflags", 40483 Var("d", 40484 F4), 40485 Var("d", 40486 F4), 40487 Call 40488 ("DecodeRegShift", 40489 CTy"SRType", 40490 Mop(Cast 40491 (FTy 2), 40492 Bop(Sub, 40493 Var("opc", 40494 F4), 40495 LW(2, 40496 4)))), 40497 Mop(Cast 40498 F4, 40499 Var("Rx", 40500 FTy 3))])), 40501 qTy))))))), 40502 (LW(3,4), 40503 Let(Var("d",F4), 40504 Mop(Cast F4, 40505 Var("Ry",FTy 3)), 40506 MB(Call 40507 ("InITBlock", 40508 ATy(qTy, 40509 PTy(bTy, 40510 qTy)), 40511 LU), 40512 Close 40513 (bVar"v", 40514 MB(MU(Mop(Not, 40515 bVar"v"), 40516 qTy), 40517 Close 40518 (bVar"setflags", 40519 MU(Call 40520 ("Data", 40521 CTy"instruction", 40522 Call 40523 ("ShiftRegister", 40524 CTy"Data", 40525 TP[LF, 40526 bVar"setflags", 40527 Var("d", 40528 F4), 40529 Var("d", 40530 F4), 40531 Call 40532 ("DecodeRegShift", 40533 CTy"SRType", 40534 Mop(Cast 40535 (FTy 2), 40536 Bop(Sub, 40537 Var("opc", 40538 F4), 40539 LW(2, 40540 4)))), 40541 Mop(Cast 40542 F4, 40543 Var("Rx", 40544 FTy 3))])), 40545 qTy))))))), 40546 (LW(4,4), 40547 Let(Var("d",F4), 40548 Mop(Cast F4, 40549 Var("Ry",FTy 3)), 40550 MB(Call 40551 ("InITBlock", 40552 ATy(qTy, 40553 PTy(bTy, 40554 qTy)), 40555 LU), 40556 Close 40557 (bVar"v", 40558 MB(MU(Mop(Not, 40559 bVar"v"), 40560 qTy), 40561 Close 40562 (bVar"setflags", 40563 MU(Call 40564 ("Data", 40565 CTy"instruction", 40566 Call 40567 ("ShiftRegister", 40568 CTy"Data", 40569 TP[LF, 40570 bVar"setflags", 40571 Var("d", 40572 F4), 40573 Var("d", 40574 F4), 40575 Call 40576 ("DecodeRegShift", 40577 CTy"SRType", 40578 Mop(Cast 40579 (FTy 2), 40580 Bop(Sub, 40581 Var("opc", 40582 F4), 40583 LW(2, 40584 4)))), 40585 Mop(Cast 40586 F4, 40587 Var("Rx", 40588 FTy 3))])), 40589 qTy))))))), 40590 (LW(7,4), 40591 Let(Var("d",F4), 40592 Mop(Cast F4, 40593 Var("Ry",FTy 3)), 40594 MB(Call 40595 ("InITBlock", 40596 ATy(qTy, 40597 PTy(bTy, 40598 qTy)), 40599 LU), 40600 Close 40601 (bVar"v", 40602 MB(MU(Mop(Not, 40603 bVar"v"), 40604 qTy), 40605 Close 40606 (bVar"setflags", 40607 MU(Call 40608 ("Data", 40609 CTy"instruction", 40610 Call 40611 ("ShiftRegister", 40612 CTy"Data", 40613 TP[LF, 40614 bVar"setflags", 40615 Var("d", 40616 F4), 40617 Var("d", 40618 F4), 40619 LC("SRType_ROR", 40620 CTy"SRType"), 40621 Mop(Cast 40622 F4, 40623 Var("Rx", 40624 FTy 3))])), 40625 qTy))))))), 40626 (LW(8,4), 40627 MU(Call 40628 ("Data", 40629 CTy"instruction", 40630 Call 40631 ("TestCompareRegister", 40632 CTy"Data", 40633 TP[EX(Var("opc", 40634 F4), 40635 LN 1, 40636 LN 0, 40637 FTy 2), 40638 Mop(Cast F4, 40639 Var("Ry", 40640 FTy 3)), 40641 Mop(Cast F4, 40642 Var("Rx", 40643 FTy 3)), 40644 LC("SRType_LSL", 40645 CTy"SRType"), 40646 LN 0])),qTy)), 40647 (LW(10,4), 40648 MU(Call 40649 ("Data", 40650 CTy"instruction", 40651 Call 40652 ("TestCompareRegister", 40653 CTy"Data", 40654 TP[EX(Var("opc", 40655 F4), 40656 LN 1, 40657 LN 0, 40658 FTy 2), 40659 Mop(Cast F4, 40660 Var("Ry", 40661 FTy 3)), 40662 Mop(Cast F4, 40663 Var("Rx", 40664 FTy 3)), 40665 LC("SRType_LSL", 40666 CTy"SRType"), 40667 LN 0])),qTy)), 40668 (LW(11,4), 40669 MU(Call 40670 ("Data", 40671 CTy"instruction", 40672 Call 40673 ("TestCompareRegister", 40674 CTy"Data", 40675 TP[EX(Var("opc", 40676 F4), 40677 LN 1, 40678 LN 0, 40679 FTy 2), 40680 Mop(Cast F4, 40681 Var("Ry", 40682 FTy 3)), 40683 Mop(Cast F4, 40684 Var("Rx", 40685 FTy 3)), 40686 LC("SRType_LSL", 40687 CTy"SRType"), 40688 LN 0])),qTy)), 40689 (LW(9,4), 40690 MB(Call 40691 ("InITBlock", 40692 ATy(qTy, 40693 PTy(bTy,qTy)), 40694 LU), 40695 Close 40696 (bVar"v", 40697 MB(MU(Mop(Not, 40698 bVar"v"), 40699 qTy), 40700 Close 40701 (bVar"setflags", 40702 MU(Call 40703 ("Data", 40704 CTy"instruction", 40705 Call 40706 ("ArithLogicImmediate", 40707 CTy"Data", 40708 TP[LW(3, 40709 4), 40710 bVar"setflags", 40711 Mop(Cast 40712 F4, 40713 Var("Ry", 40714 FTy 3)), 40715 Mop(Cast 40716 F4, 40717 Var("Rx", 40718 FTy 3)), 40719 LW(0, 40720 12)])), 40721 qTy)))))), 40722 (LW(13,4), 40723 Let(Var("d",F4), 40724 Mop(Cast F4, 40725 Var("Ry",FTy 3)), 40726 Let(Var("n",F4), 40727 Mop(Cast F4, 40728 Var("Rx", 40729 FTy 3)), 40730 MB(Call 40731 ("ArchVersion", 40732 ATy(qTy, 40733 PTy(nTy, 40734 qTy)), 40735 LU), 40736 Close 40737 (nVar"v", 40738 MB(MB(MB(MU(Bop(Lt, 40739 nVar"v", 40740 LN 40741 6), 40742 qTy), 40743 Close 40744 (bVar"b", 40745 MU(Bop(And, 40746 bVar"b", 40747 EQ(Var("d", 40748 F4), 40749 Var("n", 40750 F4))), 40751 qTy))), 40752 Close 40753 (bVar"b", 40754 ITE(bVar"b", 40755 Call 40756 ("DECODE_UNPREDICTABLE", 40757 ATy(qTy, 40758 PTy(uTy, 40759 qTy)), 40760 TP[Var("mc", 40761 CTy"MachineCode"), 40762 LS 40763 "Multiply"]), 40764 MU(LU, 40765 qTy)))), 40766 Close 40767 (AVar 40768 uTy, 40769 MB(Call 40770 ("InITBlock", 40771 ATy(qTy, 40772 PTy(bTy, 40773 qTy)), 40774 LU), 40775 Close 40776 (bVar"v", 40777 MB(MU(Mop(Not, 40778 bVar"v"), 40779 qTy), 40780 Close 40781 (bVar"setflags", 40782 MU(Call 40783 ("Multiply", 40784 CTy"instruction", 40785 Call 40786 ("Multiply32", 40787 CTy"Multiply", 40788 TP[bVar"setflags", 40789 Var("d", 40790 F4), 40791 Var("n", 40792 F4), 40793 Var("d", 40794 F4)])), 40795 qTy)))))))))))), 40796 (LW(15,4), 40797 MB(Call 40798 ("InITBlock", 40799 ATy(qTy, 40800 PTy(bTy,qTy)), 40801 LU), 40802 Close 40803 (bVar"v", 40804 MB(MU(Mop(Not, 40805 bVar"v"), 40806 qTy), 40807 Close 40808 (bVar"setflags", 40809 MU(Call 40810 ("Data", 40811 CTy"instruction", 40812 Call 40813 ("ShiftImmediate", 40814 CTy"Data", 40815 TP[LT, 40816 bVar"setflags", 40817 Mop(Cast 40818 F4, 40819 Var("Ry", 40820 FTy 3)), 40821 Mop(Cast 40822 F4, 40823 Var("Rx", 40824 FTy 3)), 40825 LC("SRType_LSL", 40826 CTy"SRType"), 40827 LN 40828 0])), 40829 qTy))))))]), 40830 Call 40831 ("Skip", 40832 ATy(qTy, 40833 PTy(CTy"instruction", 40834 qTy)),LU)))))))))), 40835 (Bop(And,bVar"b'14", 40836 Bop(And,Mop(Not,bVar"b'12"), 40837 Bop(And,Mop(Not,bVar"b'11"), 40838 Bop(And,bVar"b'10", 40839 Bop(And,Mop(Not,bVar"b'9"), 40840 Mop(Not,bVar"b'8")))))), 40841 Let(Var("Rm",F4), 40842 Mop(Cast F4, 40843 LL[bVar"b'6",bVar"b'5",bVar"b'4",bVar"b'3"]), 40844 Let(Var("DN",F1),Mop(Cast F1,LL[bVar"b'7"]), 40845 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 40846 Close 40847 (Var("v",F4), 40848 MB(MB(MB(Call 40849 ("HaveThumb2", 40850 ATy(qTy,PTy(bTy,qTy)),LU), 40851 Close 40852 (bVar"v0", 40853 MB(MU(Bop(Or, 40854 Bop(Or, 40855 Mop(Msb, 40856 Var("Rm",F4)), 40857 EQ(Var("DN",F1), 40858 LW(1,1))), 40859 bVar"v0"),qTy), 40860 Close 40861 (bVar"v0", 40862 MU(TP[Var("v",F4), 40863 bVar"v0"],qTy))))), 40864 Close 40865 (Var("v",PTy(F4,bTy)), 40866 Call 40867 ("Take",ATy(qTy,PTy(bTy,qTy)), 40868 Var("v",PTy(F4,bTy))))), 40869 Close 40870 (bVar"b", 40871 ITE(bVar"b", 40872 Let(Var("d",F4), 40873 CC[Var("DN",F1), 40874 Mop(Cast(FTy 3), 40875 LL[bVar"b'2", 40876 bVar"b'1",bVar"b'0"])], 40877 MB(Call 40878 ("InITBlock", 40879 ATy(qTy,PTy(bTy,qTy)), 40880 LU), 40881 Close 40882 (bVar"v", 40883 MB(MB(MB(MB(MU(Bop(And, 40884 EQ(Var("d", 40885 F4), 40886 LW(15, 40887 4)), 40888 bVar"v"), 40889 qTy), 40890 Close 40891 (bVar"b", 40892 ITE(bVar"b", 40893 MB(Call 40894 ("LastInITBlock", 40895 ATy(qTy, 40896 PTy(bTy, 40897 qTy)), 40898 LU), 40899 Close 40900 (bVar"v", 40901 MU(Mop(Not, 40902 bVar"v"), 40903 qTy))), 40904 MU(LF, 40905 qTy)))), 40906 Close 40907 (bVar"v", 40908 MU(Bop(Or, 40909 Bop(And, 40910 EQ(Var("d", 40911 F4), 40912 LW(15, 40913 4)), 40914 EQ(Var("Rm", 40915 F4), 40916 LW(15, 40917 4))), 40918 bVar"v"), 40919 qTy))), 40920 Close 40921 (bVar"b", 40922 ITE(bVar"b", 40923 Call 40924 ("DECODE_UNPREDICTABLE", 40925 ATy(qTy, 40926 PTy(uTy, 40927 qTy)), 40928 TP[Var("mc", 40929 CTy"MachineCode"), 40930 LS 40931 "ADD"]), 40932 MU(LU,qTy)))), 40933 Close 40934 (AVar uTy, 40935 MU(Call 40936 ("Data", 40937 CTy"instruction", 40938 Call 40939 ("Register", 40940 CTy"Data", 40941 TP[LW(4, 40942 4), 40943 LF, 40944 Var("d", 40945 F4), 40946 Var("d", 40947 F4), 40948 Var("Rm", 40949 F4), 40950 LC("SRType_LSL", 40951 CTy"SRType"), 40952 LN 0])), 40953 qTy)))))), 40954 Call 40955 ("Skip", 40956 ATy(qTy, 40957 PTy(CTy"instruction",qTy)), 40958 LU))))))))), 40959 (Bop(And,bVar"b'14", 40960 Bop(And,Mop(Not,bVar"b'12"), 40961 Bop(And,Mop(Not,bVar"b'11"), 40962 Bop(And,bVar"b'10", 40963 Bop(And,Mop(Not,bVar"b'9"), 40964 Bop(And,bVar"b'8", 40965 Bop(And,Mop(Not,bVar"b'7"), 40966 Mop(Not,bVar"b'6")))))))), 40967 Call 40968 ("raise'exception",ATy(qTy,PTy(CTy"instruction",qTy)), 40969 Call 40970 ("UNPREDICTABLE",CTy"exception", 40971 LS"Thumb: 010001 0100 _"))), 40972 (Bop(And,bVar"b'14", 40973 Bop(And,Mop(Not,bVar"b'12"), 40974 Bop(And,Mop(Not,bVar"b'11"), 40975 Bop(And,bVar"b'10", 40976 Bop(And,Mop(Not,bVar"b'9"),bVar"b'8"))))), 40977 Let(Var("Rm",F4), 40978 Mop(Cast F4, 40979 LL[bVar"b'6",bVar"b'5",bVar"b'4",bVar"b'3"]), 40980 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 40981 Close 40982 (Var("v",F4), 40983 MB(MB(MU(TP[Var("v",F4),LT],qTy), 40984 Close 40985 (Var("v",PTy(F4,bTy)), 40986 Call 40987 ("Take",ATy(qTy,PTy(bTy,qTy)), 40988 Var("v",PTy(F4,bTy))))), 40989 Close 40990 (bVar"b", 40991 ITE(bVar"b", 40992 Let(Var("n",F4), 40993 CC[Mop(Cast F1,LL[bVar"b'7"]), 40994 Mop(Cast(FTy 3), 40995 LL[bVar"b'2",bVar"b'1", 40996 bVar"b'0"])], 40997 MB(ITE(Bop(Or, 40998 Bop(Or, 40999 Bop(And, 41000 Bop(Ult, 41001 Var("n",F4), 41002 LW(8,4)), 41003 Bop(Ult, 41004 Var("Rm", 41005 F4), 41006 LW(8,4))), 41007 EQ(Var("n",F4), 41008 LW(15,4))), 41009 EQ(Var("Rm",F4), 41010 LW(15,4))), 41011 Call 41012 ("DECODE_UNPREDICTABLE", 41013 ATy(qTy,PTy(uTy,qTy)), 41014 TP[Var("mc", 41015 CTy"MachineCode"), 41016 LS"CMP"]),MU(LU,qTy)), 41017 Close 41018 (AVar uTy, 41019 MU(Call 41020 ("Data", 41021 CTy"instruction", 41022 Call 41023 ("TestCompareRegister", 41024 CTy"Data", 41025 TP[LW(2,2), 41026 Var("n",F4), 41027 Var("Rm",F4), 41028 LC("SRType_LSL", 41029 CTy"SRType"), 41030 LN 0])),qTy)))), 41031 Call 41032 ("Skip", 41033 ATy(qTy,PTy(CTy"instruction",qTy)), 41034 LU)))))))), 41035 (Bop(And,bVar"b'14", 41036 Bop(And,Mop(Not,bVar"b'12"), 41037 Bop(And,Mop(Not,bVar"b'11"), 41038 Bop(And,bVar"b'10", 41039 Bop(And,bVar"b'9",Mop(Not,bVar"b'8")))))), 41040 Let(Var("Rm",F4), 41041 Mop(Cast F4, 41042 LL[bVar"b'6",bVar"b'5",bVar"b'4",bVar"b'3"]), 41043 Let(Var("D",F1),Mop(Cast F1,LL[bVar"b'7"]), 41044 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 41045 Close 41046 (Var("v",F4), 41047 MB(MB(MB(Call 41048 ("ArchVersion", 41049 ATy(qTy,PTy(nTy,qTy)),LU), 41050 Close 41051 (nVar"v0", 41052 MB(MB(MU(Bop(Ge,nVar"v0",LN 6), 41053 qTy), 41054 Close 41055 (bVar"v", 41056 MU(Bop(Or, 41057 Bop(Or, 41058 Mop(Msb, 41059 Var("Rm", 41060 F4)), 41061 EQ(Var("D", 41062 F1), 41063 LW(1,1))), 41064 bVar"v"),qTy))), 41065 Close 41066 (bVar"v0", 41067 MU(TP[Var("v",F4), 41068 bVar"v0"],qTy))))), 41069 Close 41070 (Var("v",PTy(F4,bTy)), 41071 Call 41072 ("Take",ATy(qTy,PTy(bTy,qTy)), 41073 Var("v",PTy(F4,bTy))))), 41074 Close 41075 (bVar"b", 41076 ITE(bVar"b", 41077 Let(Var("d",F4), 41078 CC[Var("D",F1), 41079 Mop(Cast(FTy 3), 41080 LL[bVar"b'2", 41081 bVar"b'1",bVar"b'0"])], 41082 MB(Call 41083 ("InITBlock", 41084 ATy(qTy,PTy(bTy,qTy)), 41085 LU), 41086 Close 41087 (bVar"v", 41088 MB(MB(MB(MU(Bop(And, 41089 EQ(Var("d", 41090 F4), 41091 LW(15, 41092 4)), 41093 bVar"v"), 41094 qTy), 41095 Close 41096 (bVar"b", 41097 ITE(bVar"b", 41098 MB(Call 41099 ("LastInITBlock", 41100 ATy(qTy, 41101 PTy(bTy, 41102 qTy)), 41103 LU), 41104 Close 41105 (bVar"v", 41106 MU(Mop(Not, 41107 bVar"v"), 41108 qTy))), 41109 MU(LF, 41110 qTy)))), 41111 Close 41112 (bVar"b", 41113 ITE(bVar"b", 41114 Call 41115 ("DECODE_UNPREDICTABLE", 41116 ATy(qTy, 41117 PTy(uTy, 41118 qTy)), 41119 TP[Var("mc", 41120 CTy"MachineCode"), 41121 LS 41122 "MOV"]), 41123 MU(LU,qTy)))), 41124 Close 41125 (AVar uTy, 41126 MU(Call 41127 ("Data", 41128 CTy"instruction", 41129 Call 41130 ("ShiftImmediate", 41131 CTy"Data", 41132 TP[LF, 41133 LF, 41134 Var("d", 41135 F4), 41136 Var("Rm", 41137 F4), 41138 LC("SRType_LSL", 41139 CTy"SRType"), 41140 LN 0])), 41141 qTy)))))), 41142 Call 41143 ("Skip", 41144 ATy(qTy, 41145 PTy(CTy"instruction",qTy)), 41146 LU))))))))), 41147 (Bop(And,bVar"b'14", 41148 Bop(And,Mop(Not,bVar"b'12"), 41149 Bop(And,Mop(Not,bVar"b'11"), 41150 Bop(And,bVar"b'10", 41151 Bop(And,bVar"b'9", 41152 Bop(And,bVar"b'8",Mop(Not,bVar"b'7"))))))), 41153 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 41154 Close 41155 (Var("v",F4), 41156 MB(MB(MU(TP[Var("v",F4),LT],qTy), 41157 Close 41158 (Var("v",PTy(F4,bTy)), 41159 Call 41160 ("Take",ATy(qTy,PTy(bTy,qTy)), 41161 Var("v",PTy(F4,bTy))))), 41162 Close 41163 (bVar"b", 41164 ITE(bVar"b", 41165 MB(Call 41166 ("InITBlock",ATy(qTy,PTy(bTy,qTy)), 41167 LU), 41168 Close 41169 (bVar"v", 41170 MB(MB(ITE(bVar"v", 41171 MB(Call 41172 ("LastInITBlock", 41173 ATy(qTy, 41174 PTy(bTy,qTy)), 41175 LU), 41176 Close 41177 (bVar"v", 41178 MU(Mop(Not,bVar"v"), 41179 qTy))), 41180 MU(LF,qTy)), 41181 Close 41182 (bVar"b", 41183 ITE(bVar"b", 41184 Call 41185 ("DECODE_UNPREDICTABLE", 41186 ATy(qTy, 41187 PTy(uTy,qTy)), 41188 TP[Var("mc", 41189 CTy"MachineCode"), 41190 LS 41191 "BranchExchange"]), 41192 MU(LU,qTy)))), 41193 Close 41194 (AVar uTy, 41195 MU(Call 41196 ("Branch", 41197 CTy"instruction", 41198 Call 41199 ("BranchExchange", 41200 CTy"Branch", 41201 Mop(Cast F4, 41202 LL[bVar"b'6", 41203 bVar"b'5", 41204 bVar"b'4", 41205 bVar"b'3"]))), 41206 qTy))))), 41207 Call 41208 ("Skip", 41209 ATy(qTy,PTy(CTy"instruction",qTy)),LU))))))), 41210 (Bop(And,bVar"b'14", 41211 Bop(And,Mop(Not,bVar"b'12"), 41212 Bop(And,Mop(Not,bVar"b'11"), 41213 Bop(And,bVar"b'10", 41214 Bop(And,bVar"b'9", 41215 Bop(And,bVar"b'8",bVar"b'7")))))), 41216 Let(Var("Rm",F4), 41217 Mop(Cast F4, 41218 LL[bVar"b'6",bVar"b'5",bVar"b'4",bVar"b'3"]), 41219 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 41220 Close 41221 (Var("v",F4), 41222 MB(MB(MB(Call 41223 ("ArchVersion", 41224 ATy(qTy,PTy(nTy,qTy)),LU), 41225 Close 41226 (nVar"v0", 41227 MB(MU(Bop(Ge,nVar"v0",LN 5),qTy), 41228 Close 41229 (bVar"v0", 41230 MU(TP[Var("v",F4),bVar"v0"], 41231 qTy))))), 41232 Close 41233 (Var("v",PTy(F4,bTy)), 41234 Call 41235 ("Take",ATy(qTy,PTy(bTy,qTy)), 41236 Var("v",PTy(F4,bTy))))), 41237 Close 41238 (bVar"b", 41239 ITE(bVar"b", 41240 MB(Call 41241 ("InITBlock", 41242 ATy(qTy,PTy(bTy,qTy)),LU), 41243 Close 41244 (bVar"v", 41245 MB(MB(MB(ITE(bVar"v", 41246 MB(Call 41247 ("LastInITBlock", 41248 ATy(qTy, 41249 PTy(bTy, 41250 qTy)), 41251 LU), 41252 Close 41253 (bVar"v", 41254 MU(Mop(Not, 41255 bVar"v"), 41256 qTy))), 41257 MU(LF,qTy)), 41258 Close 41259 (bVar"v", 41260 MU(Bop(Or, 41261 EQ(Var("Rm", 41262 F4), 41263 LW(15,4)), 41264 bVar"v"),qTy))), 41265 Close 41266 (bVar"b", 41267 ITE(bVar"b", 41268 Call 41269 ("DECODE_UNPREDICTABLE", 41270 ATy(qTy, 41271 PTy(uTy,qTy)), 41272 TP[Var("mc", 41273 CTy"MachineCode"), 41274 LS 41275 "BranchLinkExchangeRegister"]), 41276 MU(LU,qTy)))), 41277 Close 41278 (AVar uTy, 41279 MU(Call 41280 ("Branch", 41281 CTy"instruction", 41282 Call 41283 ("BranchLinkExchangeRegister", 41284 CTy"Branch", 41285 Var("Rm",F4))), 41286 qTy))))), 41287 Call 41288 ("Skip", 41289 ATy(qTy,PTy(CTy"instruction",qTy)), 41290 LU)))))))), 41291 (Bop(And,bVar"b'14", 41292 Bop(And,Mop(Not,bVar"b'12"),bVar"b'11")), 41293 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 41294 Close 41295 (Var("v",F4), 41296 MB(MB(MU(TP[Var("v",F4),LT],qTy), 41297 Close 41298 (Var("v",PTy(F4,bTy)), 41299 Call 41300 ("Take",ATy(qTy,PTy(bTy,qTy)), 41301 Var("v",PTy(F4,bTy))))), 41302 Close 41303 (bVar"b", 41304 ITE(bVar"b", 41305 MU(Call 41306 ("Load",CTy"instruction", 41307 Call 41308 ("LoadLiteral",CTy"Load", 41309 TP[LT, 41310 Mop(Cast F4, 41311 Mop(Cast(FTy 3), 41312 LL[bVar"b'10", 41313 bVar"b'9", 41314 bVar"b'8"])), 41315 Mop(Cast F32, 41316 CC[Mop(Cast F8, 41317 LL[bVar"b'7", 41318 bVar"b'6", 41319 bVar"b'5", 41320 bVar"b'4", 41321 bVar"b'3", 41322 bVar"b'2", 41323 bVar"b'1", 41324 bVar"b'0"]), 41325 LW(0,2)])])),qTy), 41326 Call 41327 ("Skip", 41328 ATy(qTy,PTy(CTy"instruction",qTy)),LU))))))), 41329 (Bop(And,bVar"b'14",bVar"b'12"), 41330 Let(Var("Rt",FTy 3), 41331 Mop(Cast(FTy 3),LL[bVar"b'2",bVar"b'1",bVar"b'0"]), 41332 Let(Var("Rn",FTy 3), 41333 Mop(Cast(FTy 3),LL[bVar"b'5",bVar"b'4",bVar"b'3"]), 41334 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 41335 Close 41336 (Var("v",F4), 41337 MB(MB(MU(TP[Var("v",F4),LT],qTy), 41338 Close 41339 (Var("v",PTy(F4,bTy)), 41340 Call 41341 ("Take",ATy(qTy,PTy(bTy,qTy)), 41342 Var("v",PTy(F4,bTy))))), 41343 Close 41344 (bVar"b", 41345 ITE(bVar"b", 41346 MU(Let(bVar"index",LT, 41347 Let(bVar"add",LT, 41348 Let(bVar"wback",LF, 41349 Let(Var("m", 41350 CTy"offset1"), 41351 Call 41352 ("register_form1", 41353 CTy"offset1", 41354 TP[Mop(Cast 41355 F4, 41356 Mop(Cast 41357 (FTy 3), 41358 LL[bVar"b'8", 41359 bVar"b'7", 41360 bVar"b'6"])), 41361 LC("SRType_LSL", 41362 CTy"SRType"), 41363 LN 0]), 41364 CS(Mop(Cast 41365 (FTy 3), 41366 LL[bVar"b'11", 41367 bVar"b'10", 41368 bVar"b'9"]), 41369 [(LW(0,3), 41370 Call 41371 ("Store", 41372 CTy"instruction", 41373 Call 41374 ("StoreWord", 41375 CTy"Store", 41376 TP[bVar"add", 41377 bVar"index", 41378 bVar"wback", 41379 Mop(Cast 41380 F4, 41381 Var("Rt", 41382 FTy 3)), 41383 Mop(Cast 41384 F4, 41385 Var("Rn", 41386 FTy 3)), 41387 Var("m", 41388 CTy"offset1")]))), 41389 (LW(1,3), 41390 Call 41391 ("Store", 41392 CTy"instruction", 41393 Call 41394 ("StoreHalf", 41395 CTy"Store", 41396 TP[bVar"add", 41397 bVar"index", 41398 bVar"wback", 41399 Mop(Cast 41400 F4, 41401 Var("Rt", 41402 FTy 3)), 41403 Mop(Cast 41404 F4, 41405 Var("Rn", 41406 FTy 3)), 41407 Var("m", 41408 CTy"offset1")]))), 41409 (LW(2,3), 41410 Call 41411 ("Store", 41412 CTy"instruction", 41413 Call 41414 ("StoreByte", 41415 CTy"Store", 41416 TP[bVar"add", 41417 bVar"index", 41418 bVar"wback", 41419 Mop(Cast 41420 F4, 41421 Var("Rt", 41422 FTy 3)), 41423 Mop(Cast 41424 F4, 41425 Var("Rn", 41426 FTy 3)), 41427 Var("m", 41428 CTy"offset1")]))), 41429 (LW(3,3), 41430 Call 41431 ("Load", 41432 CTy"instruction", 41433 Call 41434 ("LoadByte", 41435 CTy"Load", 41436 TP[LF, 41437 bVar"add", 41438 bVar"index", 41439 bVar"wback", 41440 Mop(Cast 41441 F4, 41442 Var("Rt", 41443 FTy 3)), 41444 Mop(Cast 41445 F4, 41446 Var("Rn", 41447 FTy 3)), 41448 Var("m", 41449 CTy"offset1")]))), 41450 (LW(4,3), 41451 Call 41452 ("Load", 41453 CTy"instruction", 41454 Call 41455 ("LoadWord", 41456 CTy"Load", 41457 TP[bVar"add", 41458 bVar"index", 41459 bVar"wback", 41460 Mop(Cast 41461 F4, 41462 Var("Rt", 41463 FTy 3)), 41464 Mop(Cast 41465 F4, 41466 Var("Rn", 41467 FTy 3)), 41468 Var("m", 41469 CTy"offset1")]))), 41470 (LW(5,3), 41471 Call 41472 ("Load", 41473 CTy"instruction", 41474 Call 41475 ("LoadHalf", 41476 CTy"Load", 41477 TP[LT, 41478 bVar"add", 41479 bVar"index", 41480 bVar"wback", 41481 Mop(Cast 41482 F4, 41483 Var("Rt", 41484 FTy 3)), 41485 Mop(Cast 41486 F4, 41487 Var("Rn", 41488 FTy 3)), 41489 Var("m", 41490 CTy"offset1")]))), 41491 (LW(6,3), 41492 Call 41493 ("Load", 41494 CTy"instruction", 41495 Call 41496 ("LoadByte", 41497 CTy"Load", 41498 TP[LT, 41499 bVar"add", 41500 bVar"index", 41501 bVar"wback", 41502 Mop(Cast 41503 F4, 41504 Var("Rt", 41505 FTy 3)), 41506 Mop(Cast 41507 F4, 41508 Var("Rn", 41509 FTy 3)), 41510 Var("m", 41511 CTy"offset1")]))), 41512 (LW(7,3), 41513 Call 41514 ("Load", 41515 CTy"instruction", 41516 Call 41517 ("LoadHalf", 41518 CTy"Load", 41519 TP[LF, 41520 bVar"add", 41521 bVar"index", 41522 bVar"wback", 41523 Mop(Cast 41524 F4, 41525 Var("Rt", 41526 FTy 3)), 41527 Mop(Cast 41528 F4, 41529 Var("Rn", 41530 FTy 3)), 41531 Var("m", 41532 CTy"offset1")])))]))))), 41533 qTy), 41534 Call 41535 ("Skip", 41536 ATy(qTy, 41537 PTy(CTy"instruction",qTy)), 41538 LU)))))))))], 41539 Call 41540 ("UndefinedThumb",ATy(qTy,PTy(CTy"instruction",qTy)),LU))))) 41541; 41542val DecodeThumbEE_def = Def 41543 ("DecodeThumbEE",Var("h",F16), 41544 Let(Var("mc",CTy"MachineCode"), 41545 Call("Thumb",CTy"MachineCode",Var("h",F16)), 41546 Let(TP[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",bVar"b'11", 41547 bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 41548 bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"], 41549 BL(16,Var("h",F16)), 41550 ITE(Bop(And,bVar"b'14",Mop(Not,bVar"b'13")), 41551 ITB([(Bop(And,Mop(Not,bVar"b'15"),bVar"b'12"), 41552 Let(Var("Rt",FTy 3), 41553 Mop(Cast(FTy 3),LL[bVar"b'2",bVar"b'1",bVar"b'0"]), 41554 Let(Var("Rn",FTy 3), 41555 Mop(Cast(FTy 3), 41556 LL[bVar"b'5",bVar"b'4",bVar"b'3"]), 41557 MB(Call 41558 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)), 41559 LU), 41560 Close 41561 (Var("v",F4), 41562 MB(MB(MU(TP[Var("v",F4),LT],qTy), 41563 Close 41564 (Var("v",PTy(F4,bTy)), 41565 Call 41566 ("Take", 41567 ATy(qTy,PTy(bTy,qTy)), 41568 Var("v",PTy(F4,bTy))))), 41569 Close 41570 (bVar"b", 41571 ITE(bVar"b", 41572 Let(bVar"index",LT, 41573 Let(bVar"add",LT, 41574 Let(bVar"wback",LF, 41575 Let(Var("m",F4), 41576 Mop(Cast F4, 41577 Mop(Cast 41578 (FTy 3), 41579 LL[bVar"b'8", 41580 bVar"b'7", 41581 bVar"b'6"])), 41582 Let(Var("m1", 41583 CTy"offset1"), 41584 Call 41585 ("register_form1", 41586 CTy"offset1", 41587 TP[Var("m", 41588 F4), 41589 LC("SRType_LSL", 41590 CTy"SRType"), 41591 LN 41592 1]), 41593 Let(Var("m2", 41594 CTy"offset1"), 41595 Call 41596 ("register_form1", 41597 CTy"offset1", 41598 TP[Var("m", 41599 F4), 41600 LC("SRType_LSL", 41601 CTy"SRType"), 41602 LN 41603 2]), 41604 CS(Mop(Cast 41605 (FTy 3), 41606 LL[bVar"b'11", 41607 bVar"b'10", 41608 bVar"b'9"]), 41609 [(LW(0, 41610 3), 41611 MU(Call 41612 ("Store", 41613 CTy"instruction", 41614 Call 41615 ("StoreWord", 41616 CTy"Store", 41617 TP[bVar"add", 41618 bVar"index", 41619 bVar"wback", 41620 Mop(Cast 41621 F4, 41622 Var("Rt", 41623 FTy 3)), 41624 Mop(Cast 41625 F4, 41626 Var("Rn", 41627 FTy 3)), 41628 Var("m2", 41629 CTy"offset1")])), 41630 qTy)), 41631 (LW(1, 41632 3), 41633 MU(Call 41634 ("Store", 41635 CTy"instruction", 41636 Call 41637 ("StoreHalf", 41638 CTy"Store", 41639 TP[bVar"add", 41640 bVar"index", 41641 bVar"wback", 41642 Mop(Cast 41643 F4, 41644 Var("Rt", 41645 FTy 3)), 41646 Mop(Cast 41647 F4, 41648 Var("Rn", 41649 FTy 3)), 41650 Var("m1", 41651 CTy"offset1")])), 41652 qTy)), 41653 (LW(4, 41654 3), 41655 MU(Call 41656 ("Load", 41657 CTy"instruction", 41658 Call 41659 ("LoadWord", 41660 CTy"Load", 41661 TP[bVar"add", 41662 bVar"index", 41663 bVar"wback", 41664 Mop(Cast 41665 F4, 41666 Var("Rt", 41667 FTy 3)), 41668 Mop(Cast 41669 F4, 41670 Var("Rn", 41671 FTy 3)), 41672 Var("m2", 41673 CTy"offset1")])), 41674 qTy)), 41675 (LW(5, 41676 3), 41677 MU(Call 41678 ("Load", 41679 CTy"instruction", 41680 Call 41681 ("LoadHalf", 41682 CTy"Load", 41683 TP[LT, 41684 bVar"add", 41685 bVar"index", 41686 bVar"wback", 41687 Mop(Cast 41688 F4, 41689 Var("Rt", 41690 FTy 3)), 41691 Mop(Cast 41692 F4, 41693 Var("Rn", 41694 FTy 3)), 41695 Var("m1", 41696 CTy"offset1")])), 41697 qTy)), 41698 (LW(7, 41699 3), 41700 MU(Call 41701 ("Load", 41702 CTy"instruction", 41703 Call 41704 ("LoadHalf", 41705 CTy"Load", 41706 TP[LF, 41707 bVar"add", 41708 bVar"index", 41709 bVar"wback", 41710 Mop(Cast 41711 F4, 41712 Var("Rt", 41713 FTy 3)), 41714 Mop(Cast 41715 F4, 41716 Var("Rn", 41717 FTy 3)), 41718 Var("m1", 41719 CTy"offset1")])), 41720 qTy)), 41721 (AVar 41722 (FTy 3), 41723 Call 41724 ("DecodeThumb", 41725 ATy(qTy, 41726 PTy(CTy"instruction", 41727 qTy)), 41728 Var("h", 41729 F16)))]))))))), 41730 Call 41731 ("Skip", 41732 ATy(qTy, 41733 PTy(CTy"instruction", 41734 qTy)),LU))))))))), 41735 (Bop(And,bVar"b'15", 41736 Bop(And,Mop(Not,bVar"b'12"), 41737 Bop(And,Mop(Not,bVar"b'11"), 41738 Bop(And,Mop(Not,bVar"b'10"), 41739 Bop(And,Mop(Not,bVar"b'9"), 41740 Mop(Not,bVar"b'8")))))), 41741 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 41742 Close 41743 (Var("v",F4), 41744 MB(MB(MU(TP[Var("v",F4),LT],qTy), 41745 Close 41746 (Var("v",PTy(F4,bTy)), 41747 Call 41748 ("Take",ATy(qTy,PTy(bTy,qTy)), 41749 Var("v",PTy(F4,bTy))))), 41750 Close 41751 (bVar"b", 41752 ITE(bVar"b", 41753 MB(Call 41754 ("InITBlock", 41755 ATy(qTy,PTy(bTy,qTy)),LU), 41756 Close 41757 (bVar"v", 41758 MB(MB(ITE(bVar"v", 41759 MB(Call 41760 ("LastInITBlock", 41761 ATy(qTy, 41762 PTy(bTy,qTy)), 41763 LU), 41764 Close 41765 (bVar"v", 41766 MU(Mop(Not, 41767 bVar"v"), 41768 qTy))), 41769 MU(LF,qTy)), 41770 Close 41771 (bVar"b", 41772 ITE(bVar"b", 41773 Call 41774 ("DECODE_UNPREDICTABLE", 41775 ATy(qTy, 41776 PTy(uTy,qTy)), 41777 TP[Var("mc", 41778 CTy"MachineCode"), 41779 LS 41780 "HandlerBranchParameter"]), 41781 MU(LU,qTy)))), 41782 Close 41783 (AVar uTy, 41784 MU(Call 41785 ("Branch", 41786 CTy"instruction", 41787 Call 41788 ("HandlerBranchParameter", 41789 CTy"Branch", 41790 TP[Mop(Cast F32, 41791 Mop(Cast 41792 (FTy 3), 41793 LL[bVar"b'7", 41794 bVar"b'6", 41795 bVar"b'5"])), 41796 Mop(Cast F32, 41797 CC[Mop(Cast 41798 (FTy 5), 41799 LL[bVar"b'4", 41800 bVar"b'3", 41801 bVar"b'2", 41802 bVar"b'1", 41803 bVar"b'0"]), 41804 LW(0,5)])])), 41805 qTy))))), 41806 Call 41807 ("Skip", 41808 ATy(qTy,PTy(CTy"instruction",qTy)), 41809 LU))))))), 41810 (Bop(And,bVar"b'15", 41811 Bop(And,Mop(Not,bVar"b'12"), 41812 Bop(And,Mop(Not,bVar"b'11"), 41813 Bop(And,Mop(Not,bVar"b'10"), 41814 Bop(And,Mop(Not,bVar"b'9"),bVar"b'8"))))), 41815 MU(Call("Undefined",CTy"instruction",LW(0,32)),qTy)), 41816 (Bop(And,bVar"b'15", 41817 Bop(And,Mop(Not,bVar"b'12"), 41818 Bop(And,Mop(Not,bVar"b'11"), 41819 Bop(And,Mop(Not,bVar"b'10"),bVar"b'9")))), 41820 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 41821 Close 41822 (Var("v",F4), 41823 MB(MB(MU(TP[Var("v",F4),LT],qTy), 41824 Close 41825 (Var("v",PTy(F4,bTy)), 41826 Call 41827 ("Take",ATy(qTy,PTy(bTy,qTy)), 41828 Var("v",PTy(F4,bTy))))), 41829 Close 41830 (bVar"b", 41831 ITE(bVar"b", 41832 MB(Call 41833 ("InITBlock", 41834 ATy(qTy,PTy(bTy,qTy)),LU), 41835 Close 41836 (bVar"v", 41837 MB(MB(ITE(bVar"v", 41838 MB(Call 41839 ("LastInITBlock", 41840 ATy(qTy, 41841 PTy(bTy,qTy)), 41842 LU), 41843 Close 41844 (bVar"v", 41845 MU(Mop(Not, 41846 bVar"v"), 41847 qTy))), 41848 MU(LF,qTy)), 41849 Close 41850 (bVar"b", 41851 ITE(bVar"b", 41852 Call 41853 ("DECODE_UNPREDICTABLE", 41854 ATy(qTy, 41855 PTy(uTy,qTy)), 41856 TP[Var("mc", 41857 CTy"MachineCode"), 41858 LS 41859 "HandlerBranchLink"]), 41860 MU(LU,qTy)))), 41861 Close 41862 (AVar uTy, 41863 MU(Call 41864 ("Branch", 41865 CTy"instruction", 41866 Call 41867 ("HandlerBranchLink", 41868 CTy"Branch", 41869 TP[EQ(Mop(Cast 41870 F1, 41871 LL[bVar"b'8"]), 41872 LW(1,1)), 41873 Mop(Cast F32, 41874 CC[Mop(Cast 41875 F8, 41876 LL[bVar"b'7", 41877 bVar"b'6", 41878 bVar"b'5", 41879 bVar"b'4", 41880 bVar"b'3", 41881 bVar"b'2", 41882 bVar"b'1", 41883 bVar"b'0"]), 41884 LW(0,5)])])), 41885 qTy))))), 41886 Call 41887 ("Skip", 41888 ATy(qTy,PTy(CTy"instruction",qTy)), 41889 LU))))))), 41890 (Bop(And,bVar"b'15", 41891 Bop(And,Mop(Not,bVar"b'12"), 41892 Bop(And,Mop(Not,bVar"b'11"),bVar"b'10"))), 41893 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 41894 Close 41895 (Var("v",F4), 41896 MB(MB(MU(TP[Var("v",F4),LT],qTy), 41897 Close 41898 (Var("v",PTy(F4,bTy)), 41899 Call 41900 ("Take",ATy(qTy,PTy(bTy,qTy)), 41901 Var("v",PTy(F4,bTy))))), 41902 Close 41903 (bVar"b", 41904 ITE(bVar"b", 41905 MB(Call 41906 ("InITBlock", 41907 ATy(qTy,PTy(bTy,qTy)),LU), 41908 Close 41909 (bVar"v", 41910 MB(MB(ITE(bVar"v", 41911 MB(Call 41912 ("LastInITBlock", 41913 ATy(qTy, 41914 PTy(bTy,qTy)), 41915 LU), 41916 Close 41917 (bVar"v", 41918 MU(Mop(Not, 41919 bVar"v"), 41920 qTy))), 41921 MU(LF,qTy)), 41922 Close 41923 (bVar"b", 41924 ITE(bVar"b", 41925 Call 41926 ("DECODE_UNPREDICTABLE", 41927 ATy(qTy, 41928 PTy(uTy,qTy)), 41929 TP[Var("mc", 41930 CTy"MachineCode"), 41931 LS 41932 "HandlerBranchLinkParameter"]), 41933 MU(LU,qTy)))), 41934 Close 41935 (AVar uTy, 41936 MU(Call 41937 ("Branch", 41938 CTy"instruction", 41939 Call 41940 ("HandlerBranchLinkParameter", 41941 CTy"Branch", 41942 TP[Mop(Cast F32, 41943 Mop(Cast 41944 (FTy 5), 41945 LL[bVar"b'9", 41946 bVar"b'8", 41947 bVar"b'7", 41948 bVar"b'6", 41949 bVar"b'5"])), 41950 Mop(Cast F32, 41951 CC[Mop(Cast 41952 (FTy 5), 41953 LL[bVar"b'4", 41954 bVar"b'3", 41955 bVar"b'2", 41956 bVar"b'1", 41957 bVar"b'0"]), 41958 LW(0,5)])])), 41959 qTy))))), 41960 Call 41961 ("Skip", 41962 ATy(qTy,PTy(CTy"instruction",qTy)), 41963 LU))))))), 41964 (Bop(And,bVar"b'15", 41965 Bop(And,Mop(Not,bVar"b'12"), 41966 Bop(And,bVar"b'11", 41967 Bop(And,Mop(Not,bVar"b'10"), 41968 Mop(Not,bVar"b'9"))))), 41969 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 41970 Close 41971 (Var("v",F4), 41972 MB(MB(MU(TP[Var("v",F4),LT],qTy), 41973 Close 41974 (Var("v",PTy(F4,bTy)), 41975 Call 41976 ("Take",ATy(qTy,PTy(bTy,qTy)), 41977 Var("v",PTy(F4,bTy))))), 41978 Close 41979 (bVar"b", 41980 ITE(bVar"b", 41981 MU(Call 41982 ("Load",CTy"instruction", 41983 Call 41984 ("LoadWord",CTy"Load", 41985 TP[LF,LT,LF, 41986 Mop(Cast F4, 41987 Mop(Cast(FTy 3), 41988 LL[bVar"b'2", 41989 bVar"b'1", 41990 bVar"b'0"])), 41991 Mop(Cast F4, 41992 Mop(Cast(FTy 3), 41993 LL[bVar"b'5", 41994 bVar"b'4", 41995 bVar"b'3"])), 41996 Call 41997 ("immediate_form1", 41998 CTy"offset1", 41999 Mop(Cast F32, 42000 CC[Mop(Cast(FTy 3), 42001 LL[bVar"b'8", 42002 bVar"b'7", 42003 bVar"b'6"]), 42004 LW(0,2)]))])), 42005 qTy), 42006 Call 42007 ("Skip", 42008 ATy(qTy,PTy(CTy"instruction",qTy)), 42009 LU))))))), 42010 (Bop(And,bVar"b'15", 42011 Bop(And,Mop(Not,bVar"b'12"), 42012 Bop(And,bVar"b'11", 42013 Bop(And,Mop(Not,bVar"b'10"), 42014 Bop(And,bVar"b'9",Mop(Not,bVar"b'8")))))), 42015 Let(Var("Rm",F4), 42016 Mop(Cast F4, 42017 LL[bVar"b'6",bVar"b'5",bVar"b'4",bVar"b'3"]), 42018 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 42019 Close 42020 (Var("v",F4), 42021 MB(MB(MU(TP[Var("v",F4),LT],qTy), 42022 Close 42023 (Var("v",PTy(F4,bTy)), 42024 Call 42025 ("Take",ATy(qTy,PTy(bTy,qTy)), 42026 Var("v",PTy(F4,bTy))))), 42027 Close 42028 (bVar"b", 42029 ITE(bVar"b", 42030 Let(Var("n",F4), 42031 CC[Mop(Cast F1,LL[bVar"b'7"]), 42032 Mop(Cast(FTy 3), 42033 LL[bVar"b'2", 42034 bVar"b'1",bVar"b'0"])], 42035 MB(ITE(Bop(Or, 42036 EQ(Var("n",F4), 42037 LW(15,4)), 42038 Bop(In, 42039 Var("Rm",F4), 42040 SL[LW(13,4), 42041 LW(15,4)])), 42042 Call 42043 ("DECODE_UNPREDICTABLE", 42044 ATy(qTy, 42045 PTy(uTy,qTy)), 42046 TP[Var("mc", 42047 CTy"MachineCode"), 42048 LS"CheckArray"]), 42049 MU(LU,qTy)), 42050 Close 42051 (AVar uTy, 42052 MU(Call 42053 ("Branch", 42054 CTy"instruction", 42055 Call 42056 ("CheckArray", 42057 CTy"Branch", 42058 TP[Var("Rm",F4), 42059 Var("n",F4)])), 42060 qTy)))), 42061 Call 42062 ("Skip", 42063 ATy(qTy, 42064 PTy(CTy"instruction",qTy)), 42065 LU)))))))), 42066 (Bop(And,bVar"b'15", 42067 Bop(And,Mop(Not,bVar"b'12"), 42068 Bop(And,bVar"b'11", 42069 Bop(And,Mop(Not,bVar"b'10"), 42070 Bop(And,bVar"b'9",bVar"b'8"))))), 42071 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 42072 Close 42073 (Var("v",F4), 42074 MB(MB(MU(TP[Var("v",F4),LT],qTy), 42075 Close 42076 (Var("v",PTy(F4,bTy)), 42077 Call 42078 ("Take",ATy(qTy,PTy(bTy,qTy)), 42079 Var("v",PTy(F4,bTy))))), 42080 Close 42081 (bVar"b", 42082 ITE(bVar"b", 42083 MU(Call 42084 ("Load",CTy"instruction", 42085 Call 42086 ("LoadWord",CTy"Load", 42087 TP[LT,LT,LF, 42088 Mop(Cast F4, 42089 Mop(Cast(FTy 3), 42090 LL[bVar"b'2", 42091 bVar"b'1", 42092 bVar"b'0"])), 42093 LW(10,4), 42094 Call 42095 ("immediate_form1", 42096 CTy"offset1", 42097 Mop(Cast F32, 42098 CC[Mop(Cast(FTy 5), 42099 LL[bVar"b'7", 42100 bVar"b'6", 42101 bVar"b'5", 42102 bVar"b'4", 42103 bVar"b'3"]), 42104 LW(0,2)]))])), 42105 qTy), 42106 Call 42107 ("Skip", 42108 ATy(qTy,PTy(CTy"instruction",qTy)), 42109 LU))))))), 42110 (Bop(And,bVar"b'15", 42111 Bop(And,Mop(Not,bVar"b'12"), 42112 Bop(And,bVar"b'11",bVar"b'10"))), 42113 Let(Var("Rt",FTy 3), 42114 Mop(Cast(FTy 3),LL[bVar"b'2",bVar"b'1",bVar"b'0"]), 42115 MB(Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 42116 Close 42117 (Var("v",F4), 42118 MB(MB(MU(TP[Var("v",F4),LT],qTy), 42119 Close 42120 (Var("v",PTy(F4,bTy)), 42121 Call 42122 ("Take",ATy(qTy,PTy(bTy,qTy)), 42123 Var("v",PTy(F4,bTy))))), 42124 Close 42125 (bVar"b", 42126 ITE(bVar"b", 42127 MU(Let(bVar"index",LT, 42128 Let(bVar"add",LT, 42129 Let(bVar"wback",LF, 42130 Let(Var("m", 42131 CTy"offset1"), 42132 Call 42133 ("immediate_form1", 42134 CTy"offset1", 42135 Mop(Cast 42136 F32, 42137 CC[Mop(Cast 42138 (FTy 6), 42139 LL[bVar"b'8", 42140 bVar"b'7", 42141 bVar"b'6", 42142 bVar"b'5", 42143 bVar"b'4", 42144 bVar"b'3"]), 42145 LW(0, 42146 2)])), 42147 ITE(EQ(Mop(Cast 42148 F1, 42149 LL[bVar"b'9"]), 42150 LW(1,1)), 42151 Call 42152 ("Store", 42153 CTy"instruction", 42154 Call 42155 ("StoreWord", 42156 CTy"Store", 42157 TP[bVar"add", 42158 bVar"index", 42159 bVar"wback", 42160 Mop(Cast 42161 F4, 42162 Var("Rt", 42163 FTy 3)), 42164 LW(9, 42165 4), 42166 Var("m", 42167 CTy"offset1")])), 42168 Call 42169 ("Load", 42170 CTy"instruction", 42171 Call 42172 ("LoadWord", 42173 CTy"Load", 42174 TP[bVar"add", 42175 bVar"index", 42176 bVar"wback", 42177 Mop(Cast 42178 F4, 42179 Var("Rt", 42180 FTy 3)), 42181 LW(9, 42182 4), 42183 Var("m", 42184 CTy"offset1")]))))))), 42185 qTy), 42186 Call 42187 ("Skip", 42188 ATy(qTy, 42189 PTy(CTy"instruction",qTy)), 42190 LU))))))))], 42191 Call 42192 ("DecodeThumb",ATy(qTy,PTy(CTy"instruction",qTy)), 42193 Mop(Cast F16, 42194 LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", 42195 bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8", 42196 bVar"b'7",bVar"b'6",bVar"b'5",bVar"b'4", 42197 bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"]))), 42198 Call 42199 ("DecodeThumb",ATy(qTy,PTy(CTy"instruction",qTy)), 42200 Mop(Cast F16, 42201 LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", 42202 bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8", 42203 bVar"b'7",bVar"b'6",bVar"b'5",bVar"b'4", 42204 bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])))))) 42205; 42206val DecodeThumb2_def = Def 42207 ("DecodeThumb2",Var("h",PTy(F16,F16)), 42208 Let(Var("mc",CTy"MachineCode"), 42209 Call("Thumb2",CTy"MachineCode",Var("h",PTy(F16,F16))), 42210 Let(TP[TP[bVar"b'31",bVar"b'30",bVar"b'29",bVar"b'28",bVar"b'27", 42211 bVar"b'26",bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", 42212 bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 42213 bVar"b'16"],bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", 42214 bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7", 42215 bVar"b'6",bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 42216 bVar"b'0"], 42217 TP[BL(16,Mop(Fst,Var("h",PTy(F16,F16)))), 42218 BL(16,Mop(Snd,Var("h",PTy(F16,F16))))], 42219 ITB([(bVar"b'27", 42220 ITB([(bVar"b'28", 42221 ITB([(bVar"b'25", 42222 ITE(Bop(And,bVar"b'31", 42223 Bop(And,bVar"b'30", 42224 Bop(And,bVar"b'29", 42225 Mop(Not,bVar"b'26")))), 42226 ITB([(Bop(And,Mop(Not,bVar"b'24"), 42227 Bop(And,Mop(Not,bVar"b'23"), 42228 Bop(And,bVar"b'15", 42229 Bop(And,bVar"b'14", 42230 Bop(And,bVar"b'13", 42231 Bop(And, 42232 bVar"b'12", 42233 Bop(And, 42234 Mop(Not, 42235 bVar"b'7"), 42236 Bop(And, 42237 Mop(Not, 42238 bVar"b'6"), 42239 Bop(And, 42240 Mop(Not, 42241 bVar"b'5"), 42242 Mop(Not, 42243 bVar"b'4")))))))))), 42244 Let(Var("Rn",F4), 42245 Mop(Cast F4, 42246 LL[bVar"b'19",bVar"b'18", 42247 bVar"b'17",bVar"b'16"]), 42248 Let(Var("Rm",F4), 42249 Mop(Cast F4, 42250 LL[bVar"b'3",bVar"b'2", 42251 bVar"b'1",bVar"b'0"]), 42252 Let(Var("Rd",F4), 42253 Mop(Cast F4, 42254 LL[bVar"b'11", 42255 bVar"b'10", 42256 bVar"b'9", 42257 bVar"b'8"]), 42258 MB(Call 42259 ("ThumbCondition", 42260 ATy(qTy, 42261 PTy(F4,qTy)), 42262 LU), 42263 Close 42264 (Var("v",F4), 42265 MB(MB(MB(Call 42266 ("HaveThumb2", 42267 ATy(qTy, 42268 PTy(bTy, 42269 qTy)), 42270 LU), 42271 Close 42272 (bVar"v0", 42273 MU(TP[Var("v", 42274 F4), 42275 bVar"v0"], 42276 qTy))), 42277 Close 42278 (Var("v", 42279 PTy(F4, 42280 bTy)), 42281 Call 42282 ("Take", 42283 ATy(qTy, 42284 PTy(bTy, 42285 qTy)), 42286 Var("v", 42287 PTy(F4, 42288 bTy))))), 42289 Close 42290 (bVar"b", 42291 ITE(bVar"b", 42292 MB(ITE(Bop(Or, 42293 Bop(Or, 42294 Bop(In, 42295 Var("Rd", 42296 F4), 42297 SL[LW(13, 42298 4), 42299 LW(15, 42300 4)]), 42301 Bop(In, 42302 Var("Rn", 42303 F4), 42304 SL[LW(13, 42305 4), 42306 LW(15, 42307 4)])), 42308 Bop(In, 42309 Var("Rm", 42310 F4), 42311 SL[LW(13, 42312 4), 42313 LW(15, 42314 4)])), 42315 Call 42316 ("DECODE_UNPREDICTABLE", 42317 ATy(qTy, 42318 PTy(uTy, 42319 qTy)), 42320 TP[Var("mc", 42321 CTy"MachineCode"), 42322 LS 42323 "Shift (register)"]), 42324 MU(LU, 42325 qTy)), 42326 Close 42327 (AVar 42328 uTy, 42329 MU(Call 42330 ("Data", 42331 CTy"instruction", 42332 Call 42333 ("ShiftRegister", 42334 CTy"Data", 42335 TP[LF, 42336 EQ(Mop(Cast 42337 F1, 42338 LL[bVar"b'20"]), 42339 LW(1, 42340 1)), 42341 Var("Rd", 42342 F4), 42343 Var("Rn", 42344 F4), 42345 Call 42346 ("DecodeRegShift", 42347 CTy"SRType", 42348 Mop(Cast 42349 (FTy 2), 42350 LL[bVar"b'22", 42351 bVar"b'21"])), 42352 Var("Rm", 42353 F4)])), 42354 qTy))), 42355 Call 42356 ("Skip", 42357 ATy(qTy, 42358 PTy(CTy"instruction", 42359 qTy)), 42360 LU)))))))))), 42361 (Bop(And,Mop(Not,bVar"b'24"), 42362 Bop(And,Mop(Not,bVar"b'23"), 42363 Bop(And,bVar"b'15", 42364 Bop(And,bVar"b'14", 42365 Bop(And,bVar"b'13", 42366 Bop(And, 42367 bVar"b'12", 42368 bVar"b'7")))))), 42369 Let(Var("Rn",F4), 42370 Mop(Cast F4, 42371 LL[bVar"b'19",bVar"b'18", 42372 bVar"b'17",bVar"b'16"]), 42373 Let(Var("Rm",F4), 42374 Mop(Cast F4, 42375 LL[bVar"b'3",bVar"b'2", 42376 bVar"b'1",bVar"b'0"]), 42377 Let(Var("Rd",F4), 42378 Mop(Cast F4, 42379 LL[bVar"b'11", 42380 bVar"b'10", 42381 bVar"b'9", 42382 bVar"b'8"]), 42383 MB(Call 42384 ("ThumbCondition", 42385 ATy(qTy, 42386 PTy(F4,qTy)), 42387 LU), 42388 Close 42389 (Var("v",F4), 42390 MB(MB(MB(Call 42391 ("HaveThumb2", 42392 ATy(qTy, 42393 PTy(bTy, 42394 qTy)), 42395 LU), 42396 Close 42397 (bVar"v0", 42398 MU(TP[Var("v", 42399 F4), 42400 bVar"v0"], 42401 qTy))), 42402 Close 42403 (Var("v", 42404 PTy(F4, 42405 bTy)), 42406 Call 42407 ("Take", 42408 ATy(qTy, 42409 PTy(bTy, 42410 qTy)), 42411 Var("v", 42412 PTy(F4, 42413 bTy))))), 42414 Close 42415 (bVar"b", 42416 ITE(bVar"b", 42417 MB(ITE(Bop(Or, 42418 Bop(Or, 42419 Bop(In, 42420 Var("Rd", 42421 F4), 42422 SL[LW(13, 42423 4), 42424 LW(15, 42425 4)]), 42426 EQ(Var("Rn", 42427 F4), 42428 LW(13, 42429 4))), 42430 Bop(In, 42431 Var("Rm", 42432 F4), 42433 SL[LW(13, 42434 4), 42435 LW(15, 42436 4)])), 42437 Call 42438 ("DECODE_UNPREDICTABLE", 42439 ATy(qTy, 42440 PTy(uTy, 42441 qTy)), 42442 TP[Var("mc", 42443 CTy"MachineCode"), 42444 LS 42445 "Extend (register)"]), 42446 MU(LU, 42447 qTy)), 42448 Close 42449 (AVar 42450 uTy, 42451 MU(Let(Var("args", 42452 PTy(bTy, 42453 PTy(F4, 42454 PTy(F4, 42455 PTy(F4, 42456 nTy))))), 42457 TP[EQ(Mop(Cast 42458 F1, 42459 LL[bVar"b'20"]), 42460 LW(1, 42461 1)), 42462 Var("Rd", 42463 F4), 42464 Var("Rn", 42465 F4), 42466 Var("Rm", 42467 F4), 42468 Mop(Cast 42469 nTy, 42470 CC[Mop(Cast 42471 (FTy 2), 42472 LL[bVar"b'5", 42473 bVar"b'4"]), 42474 LW(0, 42475 3)])], 42476 CS(Mop(Cast 42477 (FTy 2), 42478 LL[bVar"b'22", 42479 bVar"b'21"]), 42480 [(LW(0, 42481 2), 42482 Call 42483 ("Media", 42484 CTy"instruction", 42485 Call 42486 ("ExtendHalfword", 42487 CTy"Media", 42488 Var("args", 42489 PTy(bTy, 42490 PTy(F4, 42491 PTy(F4, 42492 PTy(F4, 42493 nTy)))))))), 42494 (LW(1, 42495 2), 42496 Call 42497 ("Media", 42498 CTy"instruction", 42499 Call 42500 ("ExtendByte16", 42501 CTy"Media", 42502 Var("args", 42503 PTy(bTy, 42504 PTy(F4, 42505 PTy(F4, 42506 PTy(F4, 42507 nTy)))))))), 42508 (LW(2, 42509 2), 42510 Call 42511 ("Media", 42512 CTy"instruction", 42513 Call 42514 ("ExtendByte", 42515 CTy"Media", 42516 Var("args", 42517 PTy(bTy, 42518 PTy(F4, 42519 PTy(F4, 42520 PTy(F4, 42521 nTy)))))))), 42522 (LW(3, 42523 2), 42524 Call 42525 ("Undefined", 42526 CTy"instruction", 42527 LW(0, 42528 32)))])), 42529 qTy))), 42530 Call 42531 ("Skip", 42532 ATy(qTy, 42533 PTy(CTy"instruction", 42534 qTy)), 42535 LU)))))))))), 42536 (Bop(And,Mop(Not,bVar"b'24"), 42537 Bop(And,bVar"b'23", 42538 Bop(And,bVar"b'15", 42539 Bop(And,bVar"b'14", 42540 Bop(And,bVar"b'13", 42541 Bop(And, 42542 bVar"b'12", 42543 Mop(Not, 42544 bVar"b'7"))))))), 42545 Let(Var("Rn",F4), 42546 Mop(Cast F4, 42547 LL[bVar"b'19",bVar"b'18", 42548 bVar"b'17",bVar"b'16"]), 42549 Let(Var("Rm",F4), 42550 Mop(Cast F4, 42551 LL[bVar"b'3",bVar"b'2", 42552 bVar"b'1",bVar"b'0"]), 42553 Let(Var("Rd",F4), 42554 Mop(Cast F4, 42555 LL[bVar"b'11", 42556 bVar"b'10", 42557 bVar"b'9", 42558 bVar"b'8"]), 42559 MB(Call 42560 ("ThumbCondition", 42561 ATy(qTy, 42562 PTy(F4,qTy)), 42563 LU), 42564 Close 42565 (Var("v",F4), 42566 MB(MB(MB(Call 42567 ("HaveThumb2", 42568 ATy(qTy, 42569 PTy(bTy, 42570 qTy)), 42571 LU), 42572 Close 42573 (bVar"v0", 42574 MU(TP[Var("v", 42575 F4), 42576 bVar"v0"], 42577 qTy))), 42578 Close 42579 (Var("v", 42580 PTy(F4, 42581 bTy)), 42582 Call 42583 ("Take", 42584 ATy(qTy, 42585 PTy(bTy, 42586 qTy)), 42587 Var("v", 42588 PTy(F4, 42589 bTy))))), 42590 Close 42591 (bVar"b", 42592 ITE(bVar"b", 42593 MB(ITE(Bop(Or, 42594 Bop(Or, 42595 Bop(In, 42596 Var("Rd", 42597 F4), 42598 SL[LW(13, 42599 4), 42600 LW(15, 42601 4)]), 42602 Bop(In, 42603 Var("Rn", 42604 F4), 42605 SL[LW(13, 42606 4), 42607 LW(15, 42608 4)])), 42609 Bop(In, 42610 Var("Rm", 42611 F4), 42612 SL[LW(13, 42613 4), 42614 LW(15, 42615 4)])), 42616 Call 42617 ("DECODE_UNPREDICTABLE", 42618 ATy(qTy, 42619 PTy(uTy, 42620 qTy)), 42621 TP[Var("mc", 42622 CTy"MachineCode"), 42623 LS 42624 "Parallel addition and subtraction"]), 42625 MU(LU, 42626 qTy)), 42627 Close 42628 (uVar"_0", 42629 MU(Call 42630 ("DecodeParallelAdditionSubtraction", 42631 CTy"instruction", 42632 TP[Bop(Add, 42633 Mop(Cast 42634 (FTy 2), 42635 LL[bVar"b'5", 42636 bVar"b'4"]), 42637 LW(1, 42638 2)), 42639 CS(Mop(Cast 42640 (FTy 3), 42641 LL[bVar"b'22", 42642 bVar"b'21", 42643 bVar"b'20"]), 42644 [(LW(1, 42645 3), 42646 LW(0, 42647 3)), 42648 (LW(2, 42649 3), 42650 LW(1, 42651 3)), 42652 (LW(6, 42653 3), 42654 LW(2, 42655 3)), 42656 (LW(5, 42657 3), 42658 LW(3, 42659 3)), 42660 (LW(0, 42661 3), 42662 LW(4, 42663 3)), 42664 (LW(4, 42665 3), 42666 LW(7, 42667 3)), 42668 (AVar 42669 (FTy 3), 42670 LW(5, 42671 3))]), 42672 Mop(Cast 42673 F1, 42674 LL[bVar"b'6"]), 42675 Var("Rd", 42676 F4), 42677 Var("Rn", 42678 F4), 42679 Var("Rm", 42680 F4)]), 42681 qTy))), 42682 Call 42683 ("Skip", 42684 ATy(qTy, 42685 PTy(CTy"instruction", 42686 qTy)), 42687 LU)))))))))), 42688 (Bop(And,Mop(Not,bVar"b'24"), 42689 Bop(And,bVar"b'23", 42690 Bop(And, 42691 Mop(Not,bVar"b'22"), 42692 Bop(And, 42693 Mop(Not,bVar"b'21"), 42694 Bop(And, 42695 Mop(Not, 42696 bVar"b'20"), 42697 Bop(And, 42698 bVar"b'15", 42699 Bop(And, 42700 bVar"b'14", 42701 Bop(And, 42702 bVar"b'13", 42703 Bop(And, 42704 bVar"b'12", 42705 Bop(And, 42706 bVar"b'7", 42707 Mop(Not, 42708 bVar"b'6"))))))))))), 42709 Let(Var("Rn",F4), 42710 Mop(Cast F4, 42711 LL[bVar"b'19",bVar"b'18", 42712 bVar"b'17",bVar"b'16"]), 42713 Let(Var("Rm",F4), 42714 Mop(Cast F4, 42715 LL[bVar"b'3",bVar"b'2", 42716 bVar"b'1",bVar"b'0"]), 42717 Let(Var("Rd",F4), 42718 Mop(Cast F4, 42719 LL[bVar"b'11", 42720 bVar"b'10", 42721 bVar"b'9", 42722 bVar"b'8"]), 42723 MB(Call 42724 ("ThumbCondition", 42725 ATy(qTy, 42726 PTy(F4,qTy)), 42727 LU), 42728 Close 42729 (Var("v",F4), 42730 MB(MB(MB(Call 42731 ("HaveThumb2", 42732 ATy(qTy, 42733 PTy(bTy, 42734 qTy)), 42735 LU), 42736 Close 42737 (bVar"v0", 42738 MU(TP[Var("v", 42739 F4), 42740 bVar"v0"], 42741 qTy))), 42742 Close 42743 (Var("v", 42744 PTy(F4, 42745 bTy)), 42746 Call 42747 ("Take", 42748 ATy(qTy, 42749 PTy(bTy, 42750 qTy)), 42751 Var("v", 42752 PTy(F4, 42753 bTy))))), 42754 Close 42755 (bVar"b", 42756 ITE(bVar"b", 42757 MB(ITE(Bop(Or, 42758 Bop(Or, 42759 Bop(In, 42760 Var("Rd", 42761 F4), 42762 SL[LW(13, 42763 4), 42764 LW(15, 42765 4)]), 42766 Bop(In, 42767 Var("Rn", 42768 F4), 42769 SL[LW(13, 42770 4), 42771 LW(15, 42772 4)])), 42773 Bop(In, 42774 Var("Rm", 42775 F4), 42776 SL[LW(13, 42777 4), 42778 LW(15, 42779 4)])), 42780 Call 42781 ("DECODE_UNPREDICTABLE", 42782 ATy(qTy, 42783 PTy(uTy, 42784 qTy)), 42785 TP[Var("mc", 42786 CTy"MachineCode"), 42787 LS 42788 "SaturatingAddSubtract"]), 42789 MU(LU, 42790 qTy)), 42791 Close 42792 (AVar 42793 uTy, 42794 MU(Call 42795 ("Media", 42796 CTy"instruction", 42797 Call 42798 ("SaturatingAddSubtract", 42799 CTy"Media", 42800 TP[Mop(Rev, 42801 Mop(Cast 42802 (FTy 2), 42803 LL[bVar"b'5", 42804 bVar"b'4"])), 42805 Var("Rd", 42806 F4), 42807 Var("Rm", 42808 F4), 42809 Var("Rn", 42810 F4)])), 42811 qTy))), 42812 Call 42813 ("Skip", 42814 ATy(qTy, 42815 PTy(CTy"instruction", 42816 qTy)), 42817 LU)))))))))), 42818 (Bop(And,Mop(Not,bVar"b'24"), 42819 Bop(And,bVar"b'23", 42820 Bop(And, 42821 Mop(Not,bVar"b'22"), 42822 Bop(And, 42823 Mop(Not,bVar"b'21"), 42824 Bop(And,bVar"b'20", 42825 Bop(And, 42826 bVar"b'15", 42827 Bop(And, 42828 bVar"b'14", 42829 Bop(And, 42830 bVar"b'13", 42831 Bop(And, 42832 bVar"b'12", 42833 Bop(And, 42834 bVar"b'7", 42835 Mop(Not, 42836 bVar"b'6"))))))))))), 42837 Let(Var("Rm",F4), 42838 Mop(Cast F4, 42839 LL[bVar"b'3",bVar"b'2", 42840 bVar"b'1",bVar"b'0"]), 42841 Let(Var("Rd",F4), 42842 Mop(Cast F4, 42843 LL[bVar"b'11", 42844 bVar"b'10", 42845 bVar"b'9",bVar"b'8"]), 42846 MB(Call 42847 ("ThumbCondition", 42848 ATy(qTy,PTy(F4,qTy)), 42849 LU), 42850 Close 42851 (Var("v",F4), 42852 MB(MB(MB(Call 42853 ("HaveThumb2", 42854 ATy(qTy, 42855 PTy(bTy, 42856 qTy)), 42857 LU), 42858 Close 42859 (bVar"v0", 42860 MU(TP[Var("v", 42861 F4), 42862 bVar"v0"], 42863 qTy))), 42864 Close 42865 (Var("v", 42866 PTy(F4, 42867 bTy)), 42868 Call 42869 ("Take", 42870 ATy(qTy, 42871 PTy(bTy, 42872 qTy)), 42873 Var("v", 42874 PTy(F4, 42875 bTy))))), 42876 Close 42877 (bVar"b", 42878 ITE(bVar"b", 42879 MB(ITE(Bop(Or, 42880 Bop(Or, 42881 Mop(Not, 42882 EQ(Mop(Cast 42883 F4, 42884 LL[bVar"b'19", 42885 bVar"b'18", 42886 bVar"b'17", 42887 bVar"b'16"]), 42888 Var("Rm", 42889 F4))), 42890 Bop(In, 42891 Var("Rd", 42892 F4), 42893 SL[LW(13, 42894 4), 42895 LW(15, 42896 4)])), 42897 Bop(In, 42898 Var("Rm", 42899 F4), 42900 SL[LW(13, 42901 4), 42902 LW(15, 42903 4)])), 42904 Call 42905 ("DECODE_UNPREDICTABLE", 42906 ATy(qTy, 42907 PTy(uTy, 42908 qTy)), 42909 TP[Var("mc", 42910 CTy"MachineCode"), 42911 LS 42912 "Reverses"]), 42913 MU(LU, 42914 qTy)), 42915 Close 42916 (AVar 42917 uTy, 42918 MU(CS(Mop(Cast 42919 (FTy 2), 42920 LL[bVar"b'5", 42921 bVar"b'4"]), 42922 [(LW(0, 42923 2), 42924 Call 42925 ("Media", 42926 CTy"instruction", 42927 Call 42928 ("ByteReverse", 42929 CTy"Media", 42930 TP[Var("Rd", 42931 F4), 42932 Var("Rm", 42933 F4)]))), 42934 (LW(1, 42935 2), 42936 Call 42937 ("Media", 42938 CTy"instruction", 42939 Call 42940 ("ByteReversePackedHalfword", 42941 CTy"Media", 42942 TP[Var("Rd", 42943 F4), 42944 Var("Rm", 42945 F4)]))), 42946 (LW(2, 42947 2), 42948 Call 42949 ("Media", 42950 CTy"instruction", 42951 Call 42952 ("ReverseBits", 42953 CTy"Media", 42954 TP[Var("Rd", 42955 F4), 42956 Var("Rm", 42957 F4)]))), 42958 (LW(3, 42959 2), 42960 Call 42961 ("Media", 42962 CTy"instruction", 42963 Call 42964 ("ByteReverseSignedHalfword", 42965 CTy"Media", 42966 TP[Var("Rd", 42967 F4), 42968 Var("Rm", 42969 F4)])))]), 42970 qTy))), 42971 Call 42972 ("Skip", 42973 ATy(qTy, 42974 PTy(CTy"instruction", 42975 qTy)), 42976 LU))))))))), 42977 (Bop(And,Mop(Not,bVar"b'24"), 42978 Bop(And,bVar"b'23", 42979 Bop(And, 42980 Mop(Not,bVar"b'22"), 42981 Bop(And,bVar"b'21", 42982 Bop(And, 42983 Mop(Not, 42984 bVar"b'20"), 42985 Bop(And, 42986 bVar"b'15", 42987 Bop(And, 42988 bVar"b'14", 42989 Bop(And, 42990 bVar"b'13", 42991 Bop(And, 42992 bVar"b'12", 42993 Bop(And, 42994 bVar"b'7", 42995 Bop(And, 42996 Mop(Not, 42997 bVar"b'6"), 42998 Bop(And, 42999 Mop(Not, 43000 bVar"b'5"), 43001 Mop(Not, 43002 bVar"b'4"))))))))))))), 43003 Let(Var("Rn",F4), 43004 Mop(Cast F4, 43005 LL[bVar"b'19",bVar"b'18", 43006 bVar"b'17",bVar"b'16"]), 43007 Let(Var("Rm",F4), 43008 Mop(Cast F4, 43009 LL[bVar"b'3",bVar"b'2", 43010 bVar"b'1",bVar"b'0"]), 43011 Let(Var("Rd",F4), 43012 Mop(Cast F4, 43013 LL[bVar"b'11", 43014 bVar"b'10", 43015 bVar"b'9", 43016 bVar"b'8"]), 43017 MB(Call 43018 ("ThumbCondition", 43019 ATy(qTy, 43020 PTy(F4,qTy)), 43021 LU), 43022 Close 43023 (Var("v",F4), 43024 MB(MB(MB(Call 43025 ("HaveThumb2", 43026 ATy(qTy, 43027 PTy(bTy, 43028 qTy)), 43029 LU), 43030 Close 43031 (bVar"v0", 43032 MU(TP[Var("v", 43033 F4), 43034 bVar"v0"], 43035 qTy))), 43036 Close 43037 (Var("v", 43038 PTy(F4, 43039 bTy)), 43040 Call 43041 ("Take", 43042 ATy(qTy, 43043 PTy(bTy, 43044 qTy)), 43045 Var("v", 43046 PTy(F4, 43047 bTy))))), 43048 Close 43049 (bVar"b", 43050 ITE(bVar"b", 43051 MB(ITE(Bop(Or, 43052 Bop(Or, 43053 Bop(In, 43054 Var("Rd", 43055 F4), 43056 SL[LW(13, 43057 4), 43058 LW(15, 43059 4)]), 43060 Bop(In, 43061 Var("Rn", 43062 F4), 43063 SL[LW(13, 43064 4), 43065 LW(15, 43066 4)])), 43067 Bop(In, 43068 Var("Rm", 43069 F4), 43070 SL[LW(13, 43071 4), 43072 LW(15, 43073 4)])), 43074 Call 43075 ("DECODE_UNPREDICTABLE", 43076 ATy(qTy, 43077 PTy(uTy, 43078 qTy)), 43079 TP[Var("mc", 43080 CTy"MachineCode"), 43081 LS 43082 "SelectBytes"]), 43083 MU(LU, 43084 qTy)), 43085 Close 43086 (AVar 43087 uTy, 43088 MU(Call 43089 ("Media", 43090 CTy"instruction", 43091 Call 43092 ("SelectBytes", 43093 CTy"Media", 43094 TP[Var("Rd", 43095 F4), 43096 Var("Rn", 43097 F4), 43098 Var("Rm", 43099 F4)])), 43100 qTy))), 43101 Call 43102 ("Skip", 43103 ATy(qTy, 43104 PTy(CTy"instruction", 43105 qTy)), 43106 LU)))))))))), 43107 (Bop(And,Mop(Not,bVar"b'24"), 43108 Bop(And,bVar"b'23", 43109 Bop(And, 43110 Mop(Not,bVar"b'22"), 43111 Bop(And,bVar"b'21", 43112 Bop(And,bVar"b'20", 43113 Bop(And, 43114 bVar"b'15", 43115 Bop(And, 43116 bVar"b'14", 43117 Bop(And, 43118 bVar"b'13", 43119 Bop(And, 43120 bVar"b'12", 43121 Bop(And, 43122 bVar"b'7", 43123 Bop(And, 43124 Mop(Not, 43125 bVar"b'6"), 43126 Bop(And, 43127 Mop(Not, 43128 bVar"b'5"), 43129 Mop(Not, 43130 bVar"b'4"))))))))))))), 43131 Let(Var("Rm",F4), 43132 Mop(Cast F4, 43133 LL[bVar"b'3",bVar"b'2", 43134 bVar"b'1",bVar"b'0"]), 43135 Let(Var("Rd",F4), 43136 Mop(Cast F4, 43137 LL[bVar"b'11", 43138 bVar"b'10", 43139 bVar"b'9",bVar"b'8"]), 43140 MB(Call 43141 ("ThumbCondition", 43142 ATy(qTy,PTy(F4,qTy)), 43143 LU), 43144 Close 43145 (Var("v",F4), 43146 MB(MB(MB(Call 43147 ("HaveThumb2", 43148 ATy(qTy, 43149 PTy(bTy, 43150 qTy)), 43151 LU), 43152 Close 43153 (bVar"v0", 43154 MU(TP[Var("v", 43155 F4), 43156 bVar"v0"], 43157 qTy))), 43158 Close 43159 (Var("v", 43160 PTy(F4, 43161 bTy)), 43162 Call 43163 ("Take", 43164 ATy(qTy, 43165 PTy(bTy, 43166 qTy)), 43167 Var("v", 43168 PTy(F4, 43169 bTy))))), 43170 Close 43171 (bVar"b", 43172 ITE(bVar"b", 43173 MB(ITE(Bop(Or, 43174 Bop(Or, 43175 Mop(Not, 43176 EQ(Mop(Cast 43177 F4, 43178 LL[bVar"b'19", 43179 bVar"b'18", 43180 bVar"b'17", 43181 bVar"b'16"]), 43182 Var("Rm", 43183 F4))), 43184 Bop(In, 43185 Var("Rd", 43186 F4), 43187 SL[LW(13, 43188 4), 43189 LW(15, 43190 4)])), 43191 Bop(In, 43192 Var("Rm", 43193 F4), 43194 SL[LW(13, 43195 4), 43196 LW(15, 43197 4)])), 43198 Call 43199 ("DECODE_UNPREDICTABLE", 43200 ATy(qTy, 43201 PTy(uTy, 43202 qTy)), 43203 TP[Var("mc", 43204 CTy"MachineCode"), 43205 LS 43206 "CountLeadingZeroes"]), 43207 MU(LU, 43208 qTy)), 43209 Close 43210 (AVar 43211 uTy, 43212 MU(Call 43213 ("Data", 43214 CTy"instruction", 43215 Call 43216 ("CountLeadingZeroes", 43217 CTy"Data", 43218 TP[Var("Rd", 43219 F4), 43220 Var("Rm", 43221 F4)])), 43222 qTy))), 43223 Call 43224 ("Skip", 43225 ATy(qTy, 43226 PTy(CTy"instruction", 43227 qTy)), 43228 LU))))))))), 43229 (Bop(And,bVar"b'24", 43230 Bop(And,Mop(Not,bVar"b'23"), 43231 Bop(And,Mop(Not,bVar"b'7"), 43232 Mop(Not,bVar"b'6")))), 43233 Let(Var("Rn",F4), 43234 Mop(Cast F4, 43235 LL[bVar"b'19",bVar"b'18", 43236 bVar"b'17",bVar"b'16"]), 43237 Let(Var("Rm",F4), 43238 Mop(Cast F4, 43239 LL[bVar"b'3",bVar"b'2", 43240 bVar"b'1",bVar"b'0"]), 43241 Let(Var("Rd",F4), 43242 Mop(Cast F4, 43243 LL[bVar"b'11", 43244 bVar"b'10", 43245 bVar"b'9", 43246 bVar"b'8"]), 43247 Let(Var("Ra",F4), 43248 Mop(Cast F4, 43249 LL[bVar"b'15", 43250 bVar"b'14", 43251 bVar"b'13", 43252 bVar"b'12"]), 43253 MB(Call 43254 ("ThumbCondition", 43255 ATy(qTy, 43256 PTy(F4, 43257 qTy)), 43258 LU), 43259 Close 43260 (Var("v",F4), 43261 MB(MB(MB(Call 43262 ("HaveThumb2", 43263 ATy(qTy, 43264 PTy(bTy, 43265 qTy)), 43266 LU), 43267 Close 43268 (bVar"v0", 43269 MU(TP[Var("v", 43270 F4), 43271 bVar"v0"], 43272 qTy))), 43273 Close 43274 (Var("v", 43275 PTy(F4, 43276 bTy)), 43277 Call 43278 ("Take", 43279 ATy(qTy, 43280 PTy(bTy, 43281 qTy)), 43282 Var("v", 43283 PTy(F4, 43284 bTy))))), 43285 Close 43286 (bVar"b", 43287 ITE(bVar"b", 43288 MB(ITE(Bop(Or, 43289 Bop(Or, 43290 Bop(Or, 43291 Bop(In, 43292 Var("Rd", 43293 F4), 43294 SL[LW(13, 43295 4), 43296 LW(15, 43297 4)]), 43298 Bop(In, 43299 Var("Rn", 43300 F4), 43301 SL[LW(13, 43302 4), 43303 LW(15, 43304 4)])), 43305 Bop(In, 43306 Var("Rm", 43307 F4), 43308 SL[LW(13, 43309 4), 43310 LW(15, 43311 4)])), 43312 EQ(Var("Ra", 43313 F4), 43314 LW(13, 43315 4))), 43316 Call 43317 ("DECODE_UNPREDICTABLE", 43318 ATy(qTy, 43319 PTy(uTy, 43320 qTy)), 43321 TP[Var("mc", 43322 CTy"MachineCode"), 43323 LS 43324 "Multiplies and absolute difference"]), 43325 MU(LU, 43326 qTy)), 43327 Close 43328 (uVar"_0", 43329 CS(TP[Mop(Cast 43330 (FTy 3), 43331 LL[bVar"b'22", 43332 bVar"b'21", 43333 bVar"b'20"]), 43334 Var("Ra", 43335 F4), 43336 EQ(Mop(Cast 43337 F1, 43338 LL[bVar"b'5"]), 43339 LW(1, 43340 1)), 43341 EQ(Mop(Cast 43342 F1, 43343 LL[bVar"b'4"]), 43344 LW(1, 43345 1))], 43346 [(TP[LW(0, 43347 3), 43348 LW(15, 43349 4), 43350 LF, 43351 LF], 43352 MU(Call 43353 ("Multiply", 43354 CTy"instruction", 43355 Call 43356 ("Multiply32", 43357 CTy"Multiply", 43358 TP[LF, 43359 Var("Rd", 43360 F4), 43361 Var("Rn", 43362 F4), 43363 Var("Rm", 43364 F4)])), 43365 qTy)), 43366 (TP[LW(0, 43367 3), 43368 AVar 43369 F4, 43370 LF, 43371 LF], 43372 MU(Call 43373 ("Multiply", 43374 CTy"instruction", 43375 Call 43376 ("MultiplyAccumulate", 43377 CTy"Multiply", 43378 TP[LF, 43379 Var("Rd", 43380 F4), 43381 Var("Rn", 43382 F4), 43383 Var("Rm", 43384 F4), 43385 Var("Ra", 43386 F4)])), 43387 qTy)), 43388 (TP[LW(0, 43389 3), 43390 LW(15, 43391 4), 43392 LF, 43393 LT], 43394 MB(Call 43395 ("DECODE_UNPREDICTABLE", 43396 ATy(qTy, 43397 PTy(uTy, 43398 qTy)), 43399 TP[Var("mc", 43400 CTy"MachineCode"), 43401 LS 43402 "MultiplySubtract"]), 43403 Close 43404 (AVar 43405 uTy, 43406 MU(LX(CTy"instruction"), 43407 qTy)))), 43408 (TP[LW(0, 43409 3), 43410 AVar 43411 F4, 43412 LF, 43413 LT], 43414 MU(Call 43415 ("Multiply", 43416 CTy"instruction", 43417 Call 43418 ("MultiplySubtract", 43419 CTy"Multiply", 43420 TP[Var("Rd", 43421 F4), 43422 Var("Rn", 43423 F4), 43424 Var("Rm", 43425 F4), 43426 Var("Ra", 43427 F4)])), 43428 qTy)), 43429 (TP[LW(1, 43430 3), 43431 LW(15, 43432 4), 43433 bVar"n_high", 43434 bVar"m_high"], 43435 MU(Call 43436 ("Multiply", 43437 CTy"instruction", 43438 Call 43439 ("Signed16Multiply32Result", 43440 CTy"Multiply", 43441 TP[bVar"m_high", 43442 bVar"n_high", 43443 Var("Rd", 43444 F4), 43445 Var("Rn", 43446 F4), 43447 Var("Rm", 43448 F4)])), 43449 qTy)), 43450 (TP[LW(1, 43451 3), 43452 AVar 43453 F4, 43454 bVar"n_high", 43455 bVar"m_high"], 43456 MU(Call 43457 ("Multiply", 43458 CTy"instruction", 43459 Call 43460 ("Signed16Multiply32Accumulate", 43461 CTy"Multiply", 43462 TP[bVar"m_high", 43463 bVar"n_high", 43464 Var("Rd", 43465 F4), 43466 Var("Rn", 43467 F4), 43468 Var("Rm", 43469 F4), 43470 Var("Ra", 43471 F4)])), 43472 qTy)), 43473 (TP[LW(2, 43474 3), 43475 AVar 43476 F4, 43477 LF, 43478 bVar"m_swap"], 43479 MU(Call 43480 ("Multiply", 43481 CTy"instruction", 43482 Call 43483 ("SignedMultiplyDual", 43484 CTy"Multiply", 43485 TP[LF, 43486 bVar"m_swap", 43487 Var("Rd", 43488 F4), 43489 Var("Rn", 43490 F4), 43491 Var("Rm", 43492 F4), 43493 Var("Ra", 43494 F4)])), 43495 qTy)), 43496 (TP[LW(3, 43497 3), 43498 LW(15, 43499 4), 43500 LF, 43501 bVar"m_high"], 43502 MU(Call 43503 ("Multiply", 43504 CTy"instruction", 43505 Call 43506 ("Signed16x32Multiply32Result", 43507 CTy"Multiply", 43508 TP[bVar"m_high", 43509 Var("Rd", 43510 F4), 43511 Var("Rn", 43512 F4), 43513 Var("Rm", 43514 F4)])), 43515 qTy)), 43516 (TP[LW(3, 43517 3), 43518 AVar 43519 F4, 43520 LF, 43521 bVar"m_high"], 43522 MU(Call 43523 ("Multiply", 43524 CTy"instruction", 43525 Call 43526 ("Signed16x32Multiply32Accumulate", 43527 CTy"Multiply", 43528 TP[bVar"m_high", 43529 Var("Rd", 43530 F4), 43531 Var("Rn", 43532 F4), 43533 Var("Rm", 43534 F4), 43535 Var("Ra", 43536 F4)])), 43537 qTy)), 43538 (TP[LW(4, 43539 3), 43540 AVar 43541 F4, 43542 LF, 43543 bVar"m_swap"], 43544 MU(Call 43545 ("Multiply", 43546 CTy"instruction", 43547 Call 43548 ("SignedMultiplyDual", 43549 CTy"Multiply", 43550 TP[LT, 43551 bVar"m_swap", 43552 Var("Rd", 43553 F4), 43554 Var("Rn", 43555 F4), 43556 Var("Rm", 43557 F4), 43558 Var("Ra", 43559 F4)])), 43560 qTy)), 43561 (TP[LW(5, 43562 3), 43563 AVar 43564 F4, 43565 LF, 43566 bVar"round"], 43567 MU(Call 43568 ("Multiply", 43569 CTy"instruction", 43570 Call 43571 ("SignedMostSignificantMultiply", 43572 CTy"Multiply", 43573 TP[bVar"round", 43574 Var("Rd", 43575 F4), 43576 Var("Rn", 43577 F4), 43578 Var("Rm", 43579 F4), 43580 Var("Ra", 43581 F4)])), 43582 qTy)), 43583 (TP[LW(6, 43584 3), 43585 LW(15, 43586 4), 43587 LF, 43588 AVar 43589 bTy], 43590 MB(Call 43591 ("DECODE_UNPREDICTABLE", 43592 ATy(qTy, 43593 PTy(uTy, 43594 qTy)), 43595 TP[Var("mc", 43596 CTy"MachineCode"), 43597 LS 43598 "SignedMostSignificantMultiplySubtract"]), 43599 Close 43600 (AVar 43601 uTy, 43602 MU(LX(CTy"instruction"), 43603 qTy)))), 43604 (TP[LW(6, 43605 3), 43606 AVar 43607 F4, 43608 LF, 43609 bVar"round"], 43610 MU(Call 43611 ("Multiply", 43612 CTy"instruction", 43613 Call 43614 ("SignedMostSignificantMultiplySubtract", 43615 CTy"Multiply", 43616 TP[bVar"round", 43617 Var("Rd", 43618 F4), 43619 Var("Rn", 43620 F4), 43621 Var("Rm", 43622 F4), 43623 Var("Ra", 43624 F4)])), 43625 qTy)), 43626 (TP[LW(7, 43627 3), 43628 AVar 43629 F4, 43630 LF, 43631 LF], 43632 MU(Call 43633 ("SIMD", 43634 CTy"instruction", 43635 Call 43636 ("UnsignedSumAbsoluteDifferences", 43637 CTy"SIMD", 43638 TP[Var("Rd", 43639 F4), 43640 Var("Rn", 43641 F4), 43642 Var("Rm", 43643 F4), 43644 Var("Ra", 43645 F4)])), 43646 qTy)), 43647 (AVar 43648 (PTy(FTy 3, 43649 PTy(F4, 43650 PTy(bTy, 43651 bTy)))), 43652 MU(Call 43653 ("Undefined", 43654 CTy"instruction", 43655 LW(0, 43656 32)), 43657 qTy))]))), 43658 Call 43659 ("Skip", 43660 ATy(qTy, 43661 PTy(CTy"instruction", 43662 qTy)), 43663 LU))))))))))), 43664 (Bop(And,bVar"b'24", 43665 Bop(And,bVar"b'23", 43666 Bop(And, 43667 Mop(Not,bVar"b'22"), 43668 Bop(And,bVar"b'20", 43669 Bop(And,bVar"b'7", 43670 Bop(And, 43671 bVar"b'6", 43672 Bop(And, 43673 bVar"b'5", 43674 bVar"b'4"))))))), 43675 Let(Var("Rn",F4), 43676 Mop(Cast F4, 43677 LL[bVar"b'19",bVar"b'18", 43678 bVar"b'17",bVar"b'16"]), 43679 Let(Var("Rm",F4), 43680 Mop(Cast F4, 43681 LL[bVar"b'3",bVar"b'2", 43682 bVar"b'1",bVar"b'0"]), 43683 Let(Var("Rd",F4), 43684 Mop(Cast F4, 43685 LL[bVar"b'11", 43686 bVar"b'10", 43687 bVar"b'9", 43688 bVar"b'8"]), 43689 MB(Call 43690 ("ThumbCondition", 43691 ATy(qTy, 43692 PTy(F4,qTy)), 43693 LU), 43694 Close 43695 (Var("v",F4), 43696 MB(MB(MB(Call 43697 ("HaveVirtExt", 43698 ATy(qTy, 43699 PTy(bTy, 43700 qTy)), 43701 LU), 43702 Close 43703 (bVar"v0", 43704 MB(ITE(bVar"v0", 43705 MU(LT, 43706 qTy), 43707 MB(MR(Close 43708 (qVar"s", 43709 Dest 43710 ("Architecture", 43711 CTy"Architecture", 43712 qVar"s"))), 43713 Close 43714 (Var("v", 43715 CTy"Architecture"), 43716 MU(EQ(Var("v", 43717 CTy"Architecture"), 43718 LC("ARMv7_R", 43719 CTy"Architecture")), 43720 qTy)))), 43721 Close 43722 (bVar"v0", 43723 MU(TP[Var("v", 43724 F4), 43725 bVar"v0"], 43726 qTy))))), 43727 Close 43728 (Var("v", 43729 PTy(F4, 43730 bTy)), 43731 Call 43732 ("Take", 43733 ATy(qTy, 43734 PTy(bTy, 43735 qTy)), 43736 Var("v", 43737 PTy(F4, 43738 bTy))))), 43739 Close 43740 (bVar"b", 43741 ITE(bVar"b", 43742 MB(ITE(Bop(Or, 43743 Bop(Or, 43744 Bop(In, 43745 Var("Rd", 43746 F4), 43747 SL[LW(13, 43748 4), 43749 LW(15, 43750 4)]), 43751 Bop(In, 43752 Var("Rn", 43753 F4), 43754 SL[LW(13, 43755 4), 43756 LW(15, 43757 4)])), 43758 Bop(In, 43759 Var("Rm", 43760 F4), 43761 SL[LW(13, 43762 4), 43763 LW(15, 43764 4)])), 43765 Call 43766 ("DECODE_UNPREDICTABLE", 43767 ATy(qTy, 43768 PTy(uTy, 43769 qTy)), 43770 TP[Var("mc", 43771 CTy"MachineCode"), 43772 LS 43773 "Divide"]), 43774 MU(LU, 43775 qTy)), 43776 Close 43777 (AVar 43778 uTy, 43779 MU(Call 43780 ("Divide", 43781 CTy"instruction", 43782 TP[EQ(Mop(Cast 43783 F1, 43784 LL[bVar"b'21"]), 43785 LW(1, 43786 1)), 43787 Var("Rd", 43788 F4), 43789 Var("Rn", 43790 F4), 43791 Var("Rm", 43792 F4)]), 43793 qTy))), 43794 Call 43795 ("Skip", 43796 ATy(qTy, 43797 PTy(CTy"instruction", 43798 qTy)), 43799 LU)))))))))), 43800 (Bop(And,bVar"b'24",bVar"b'23"), 43801 Let(Var("Rn",F4), 43802 Mop(Cast F4, 43803 LL[bVar"b'19",bVar"b'18", 43804 bVar"b'17",bVar"b'16"]), 43805 Let(Var("Rm",F4), 43806 Mop(Cast F4, 43807 LL[bVar"b'3",bVar"b'2", 43808 bVar"b'1",bVar"b'0"]), 43809 Let(Var("RdHi",F4), 43810 Mop(Cast F4, 43811 LL[bVar"b'11", 43812 bVar"b'10", 43813 bVar"b'9", 43814 bVar"b'8"]), 43815 Let(Var("RdLo",F4), 43816 Mop(Cast F4, 43817 LL[bVar"b'15", 43818 bVar"b'14", 43819 bVar"b'13", 43820 bVar"b'12"]), 43821 MB(Call 43822 ("ThumbCondition", 43823 ATy(qTy, 43824 PTy(F4, 43825 qTy)), 43826 LU), 43827 Close 43828 (Var("v",F4), 43829 MB(MB(MB(Call 43830 ("HaveThumb2", 43831 ATy(qTy, 43832 PTy(bTy, 43833 qTy)), 43834 LU), 43835 Close 43836 (bVar"v0", 43837 MU(TP[Var("v", 43838 F4), 43839 bVar"v0"], 43840 qTy))), 43841 Close 43842 (Var("v", 43843 PTy(F4, 43844 bTy)), 43845 Call 43846 ("Take", 43847 ATy(qTy, 43848 PTy(bTy, 43849 qTy)), 43850 Var("v", 43851 PTy(F4, 43852 bTy))))), 43853 Close 43854 (bVar"b", 43855 ITE(bVar"b", 43856 MB(ITE(Bop(Or, 43857 Bop(Or, 43858 Bop(Or, 43859 Bop(Or, 43860 Bop(In, 43861 Var("RdLo", 43862 F4), 43863 SL[LW(13, 43864 4), 43865 LW(15, 43866 4)]), 43867 Bop(In, 43868 Var("RdHi", 43869 F4), 43870 SL[LW(13, 43871 4), 43872 LW(15, 43873 4)])), 43874 Bop(In, 43875 Var("Rn", 43876 F4), 43877 SL[LW(13, 43878 4), 43879 LW(15, 43880 4)])), 43881 Bop(In, 43882 Var("Rm", 43883 F4), 43884 SL[LW(13, 43885 4), 43886 LW(15, 43887 4)])), 43888 EQ(Var("RdHi", 43889 F4), 43890 Var("RdLo", 43891 F4))), 43892 Call 43893 ("DECODE_UNPREDICTABLE", 43894 ATy(qTy, 43895 PTy(uTy, 43896 qTy)), 43897 TP[Var("mc", 43898 CTy"MachineCode"), 43899 LS 43900 "Long multiply, long multiply accumulate"]), 43901 MU(LU, 43902 qTy)), 43903 Close 43904 (uVar"_0", 43905 MU(Let(TP[TP[bVar"b'6", 43906 bVar"b'5", 43907 bVar"b'4"], 43908 bVar"b'3", 43909 bVar"b'2", 43910 bVar"b'1", 43911 bVar"b'0"], 43912 TP[BL(3, 43913 Mop(Cast 43914 (FTy 3), 43915 LL[bVar"b'22", 43916 bVar"b'21", 43917 bVar"b'20"])), 43918 BL(4, 43919 Mop(Cast 43920 F4, 43921 LL[bVar"b'7", 43922 bVar"b'6", 43923 bVar"b'5", 43924 bVar"b'4"]))], 43925 ITB([(Bop(And, 43926 Mop(Not, 43927 bVar"b'4"), 43928 Bop(And, 43929 Mop(Not, 43930 bVar"b'3"), 43931 Bop(And, 43932 Mop(Not, 43933 bVar"b'2"), 43934 Bop(And, 43935 Mop(Not, 43936 bVar"b'1"), 43937 Mop(Not, 43938 bVar"b'0"))))), 43939 Call 43940 ("Multiply", 43941 CTy"instruction", 43942 Call 43943 ("MultiplyLong", 43944 CTy"Multiply", 43945 TP[EQ(Mop(Cast 43946 F1, 43947 LL[bVar"b'6"]), 43948 LW(1, 43949 1)), 43950 EQ(Mop(Cast 43951 F1, 43952 LL[bVar"b'5"]), 43953 LW(0, 43954 1)), 43955 LF, 43956 Var("RdHi", 43957 F4), 43958 Var("RdLo", 43959 F4), 43960 Var("Rn", 43961 F4), 43962 Var("Rm", 43963 F4)]))), 43964 (Bop(And, 43965 bVar"b'6", 43966 Bop(And, 43967 Mop(Not, 43968 bVar"b'5"), 43969 Bop(And, 43970 Mop(Not, 43971 bVar"b'4"), 43972 Bop(And, 43973 bVar"b'3", 43974 Mop(Not, 43975 bVar"b'2"))))), 43976 Call 43977 ("Multiply", 43978 CTy"instruction", 43979 Call 43980 ("Signed16Multiply64Accumulate", 43981 CTy"Multiply", 43982 TP[EQ(Mop(Cast 43983 F1, 43984 LL[bVar"b'0"]), 43985 LW(1, 43986 1)), 43987 EQ(Mop(Cast 43988 F1, 43989 LL[bVar"b'1"]), 43990 LW(1, 43991 1)), 43992 Var("RdHi", 43993 F4), 43994 Var("RdLo", 43995 F4), 43996 Var("Rn", 43997 F4), 43998 Var("Rm", 43999 F4)]))), 44000 (Bop(And, 44001 bVar"b'6", 44002 Bop(And, 44003 Mop(Not, 44004 bVar"b'5"), 44005 Bop(And, 44006 bVar"b'3", 44007 Bop(And, 44008 bVar"b'2", 44009 Mop(Not, 44010 bVar"b'1"))))), 44011 Call 44012 ("Multiply", 44013 CTy"instruction", 44014 Call 44015 ("SignedMultiplyLongDual", 44016 CTy"Multiply", 44017 TP[EQ(Mop(Cast 44018 F1, 44019 LL[bVar"b'4"]), 44020 LW(1, 44021 1)), 44022 EQ(Mop(Cast 44023 F1, 44024 LL[bVar"b'0"]), 44025 LW(1, 44026 1)), 44027 Var("RdHi", 44028 F4), 44029 Var("RdLo", 44030 F4), 44031 Var("Rn", 44032 F4), 44033 Var("Rm", 44034 F4)]))), 44035 (Bop(And, 44036 bVar"b'6", 44037 Bop(And, 44038 bVar"b'5", 44039 Bop(And, 44040 Mop(Not, 44041 bVar"b'4"), 44042 Bop(And, 44043 Mop(Not, 44044 bVar"b'3"), 44045 Bop(And, 44046 bVar"b'2", 44047 Bop(And, 44048 bVar"b'1", 44049 Mop(Not, 44050 bVar"b'0"))))))), 44051 Call 44052 ("Multiply", 44053 CTy"instruction", 44054 Call 44055 ("MultiplyAccumulateAccumulate", 44056 CTy"Multiply", 44057 TP[Var("RdHi", 44058 F4), 44059 Var("RdLo", 44060 F4), 44061 Var("Rn", 44062 F4), 44063 Var("Rm", 44064 F4)])))], 44065 Call 44066 ("Undefined", 44067 CTy"instruction", 44068 LW(0, 44069 32)))), 44070 qTy))), 44071 Call 44072 ("Skip", 44073 ATy(qTy, 44074 PTy(CTy"instruction", 44075 qTy)), 44076 LU)))))))))))], 44077 Call 44078 ("UndefinedThumb", 44079 ATy(qTy,PTy(CTy"instruction",qTy)), 44080 LU)), 44081 Call 44082 ("UndefinedThumb", 44083 ATy(qTy,PTy(CTy"instruction",qTy)),LU))), 44084 (bVar"b'22", 44085 ITB([(bVar"b'20", 44086 ITE(Bop(And,bVar"b'31", 44087 Bop(And,bVar"b'30", 44088 Bop(And,bVar"b'29", 44089 Bop(And, 44090 Mop(Not,bVar"b'26"), 44091 Bop(And, 44092 Mop(Not, 44093 bVar"b'24"), 44094 Mop(Not, 44095 bVar"b'21")))))), 44096 ITB([(Bop(And,bVar"b'19", 44097 Bop(And,bVar"b'18", 44098 Bop(And,bVar"b'17", 44099 bVar"b'16"))), 44100 Let(Var("Rt",F4), 44101 Mop(Cast F4, 44102 LL[bVar"b'15", 44103 bVar"b'14", 44104 bVar"b'13", 44105 bVar"b'12"]), 44106 MB(Call 44107 ("ThumbCondition", 44108 ATy(qTy,PTy(F4,qTy)), 44109 LU), 44110 Close 44111 (Var("v",F4), 44112 MB(MB(MB(Call 44113 ("HaveThumb2", 44114 ATy(qTy, 44115 PTy(bTy, 44116 qTy)), 44117 LU), 44118 Close 44119 (bVar"v0", 44120 MU(TP[Var("v", 44121 F4), 44122 bVar"v0"], 44123 qTy))), 44124 Close 44125 (Var("v", 44126 PTy(F4, 44127 bTy)), 44128 Call 44129 ("Take", 44130 ATy(qTy, 44131 PTy(bTy, 44132 qTy)), 44133 Var("v", 44134 PTy(F4, 44135 bTy))))), 44136 Close 44137 (bVar"b", 44138 ITE(bVar"b", 44139 MB(Call 44140 ("InITBlock", 44141 ATy(qTy, 44142 PTy(bTy, 44143 qTy)), 44144 LU), 44145 Close 44146 (bVar"v", 44147 MB(MB(MB(MU(Bop(And, 44148 EQ(Var("Rt", 44149 F4), 44150 LW(15, 44151 4)), 44152 bVar"v"), 44153 qTy), 44154 Close 44155 (bVar"b", 44156 ITE(bVar"b", 44157 MB(Call 44158 ("LastInITBlock", 44159 ATy(qTy, 44160 PTy(bTy, 44161 qTy)), 44162 LU), 44163 Close 44164 (bVar"v", 44165 MU(Mop(Not, 44166 bVar"v"), 44167 qTy))), 44168 MU(LF, 44169 qTy)))), 44170 Close 44171 (bVar"b", 44172 ITE(bVar"b", 44173 Call 44174 ("DECODE_UNPREDICTABLE", 44175 ATy(qTy, 44176 PTy(uTy, 44177 qTy)), 44178 TP[Var("mc", 44179 CTy"MachineCode"), 44180 LS 44181 "LoadLiteral"]), 44182 MU(LU, 44183 qTy)))), 44184 Close 44185 (AVar 44186 uTy, 44187 MU(Call 44188 ("Load", 44189 CTy"instruction", 44190 Call 44191 ("LoadLiteral", 44192 CTy"Load", 44193 TP[EQ(Mop(Cast 44194 F1, 44195 LL[bVar"b'23"]), 44196 LW(1, 44197 1)), 44198 Var("Rt", 44199 F4), 44200 Mop(Cast 44201 F32, 44202 Mop(Cast 44203 (FTy 12), 44204 LL[bVar"b'11", 44205 bVar"b'10", 44206 bVar"b'9", 44207 bVar"b'8", 44208 bVar"b'7", 44209 bVar"b'6", 44210 bVar"b'5", 44211 bVar"b'4", 44212 bVar"b'3", 44213 bVar"b'2", 44214 bVar"b'1", 44215 bVar"b'0"]))])), 44216 qTy))))), 44217 Call 44218 ("Skip", 44219 ATy(qTy, 44220 PTy(CTy"instruction", 44221 qTy)), 44222 LU)))))))), 44223 (bVar"b'23", 44224 Let(Var("Rt",F4), 44225 Mop(Cast F4, 44226 LL[bVar"b'15", 44227 bVar"b'14", 44228 bVar"b'13", 44229 bVar"b'12"]), 44230 MB(Call 44231 ("ThumbCondition", 44232 ATy(qTy,PTy(F4,qTy)), 44233 LU), 44234 Close 44235 (Var("v",F4), 44236 MB(MB(MB(Call 44237 ("HaveThumb2", 44238 ATy(qTy, 44239 PTy(bTy, 44240 qTy)), 44241 LU), 44242 Close 44243 (bVar"v0", 44244 MU(TP[Var("v", 44245 F4), 44246 bVar"v0"], 44247 qTy))), 44248 Close 44249 (Var("v", 44250 PTy(F4, 44251 bTy)), 44252 Call 44253 ("Take", 44254 ATy(qTy, 44255 PTy(bTy, 44256 qTy)), 44257 Var("v", 44258 PTy(F4, 44259 bTy))))), 44260 Close 44261 (bVar"b", 44262 ITE(bVar"b", 44263 MB(Call 44264 ("InITBlock", 44265 ATy(qTy, 44266 PTy(bTy, 44267 qTy)), 44268 LU), 44269 Close 44270 (bVar"v", 44271 MB(MB(MB(MU(Bop(And, 44272 EQ(Var("Rt", 44273 F4), 44274 LW(15, 44275 4)), 44276 bVar"v"), 44277 qTy), 44278 Close 44279 (bVar"b", 44280 ITE(bVar"b", 44281 MB(Call 44282 ("LastInITBlock", 44283 ATy(qTy, 44284 PTy(bTy, 44285 qTy)), 44286 LU), 44287 Close 44288 (bVar"v", 44289 MU(Mop(Not, 44290 bVar"v"), 44291 qTy))), 44292 MU(LF, 44293 qTy)))), 44294 Close 44295 (bVar"b", 44296 ITE(bVar"b", 44297 Call 44298 ("DECODE_UNPREDICTABLE", 44299 ATy(qTy, 44300 PTy(uTy, 44301 qTy)), 44302 TP[Var("mc", 44303 CTy"MachineCode"), 44304 LS 44305 "LoadWord"]), 44306 MU(LU, 44307 qTy)))), 44308 Close 44309 (AVar 44310 uTy, 44311 MU(Call 44312 ("Load", 44313 CTy"instruction", 44314 Call 44315 ("LoadWord", 44316 CTy"Load", 44317 TP[LT, 44318 LT, 44319 LF, 44320 Var("Rt", 44321 F4), 44322 Mop(Cast 44323 F4, 44324 LL[bVar"b'19", 44325 bVar"b'18", 44326 bVar"b'17", 44327 bVar"b'16"]), 44328 Call 44329 ("immediate_form1", 44330 CTy"offset1", 44331 Mop(Cast 44332 F32, 44333 Mop(Cast 44334 (FTy 12), 44335 LL[bVar"b'11", 44336 bVar"b'10", 44337 bVar"b'9", 44338 bVar"b'8", 44339 bVar"b'7", 44340 bVar"b'6", 44341 bVar"b'5", 44342 bVar"b'4", 44343 bVar"b'3", 44344 bVar"b'2", 44345 bVar"b'1", 44346 bVar"b'0"])))])), 44347 qTy))))), 44348 Call 44349 ("Skip", 44350 ATy(qTy, 44351 PTy(CTy"instruction", 44352 qTy)), 44353 LU)))))))), 44354 (Bop(And,Mop(Not,bVar"b'23"), 44355 Bop(And,bVar"b'11", 44356 Bop(And,bVar"b'10", 44357 Bop(And, 44358 bVar"b'9", 44359 Mop(Not, 44360 bVar"b'8"))))), 44361 Let(Var("Rt",F4), 44362 Mop(Cast F4, 44363 LL[bVar"b'15", 44364 bVar"b'14", 44365 bVar"b'13", 44366 bVar"b'12"]), 44367 MB(Call 44368 ("ThumbCondition", 44369 ATy(qTy,PTy(F4,qTy)), 44370 LU), 44371 Close 44372 (Var("v",F4), 44373 MB(MB(MB(Call 44374 ("HaveThumb2", 44375 ATy(qTy, 44376 PTy(bTy, 44377 qTy)), 44378 LU), 44379 Close 44380 (bVar"v0", 44381 MU(TP[Var("v", 44382 F4), 44383 bVar"v0"], 44384 qTy))), 44385 Close 44386 (Var("v", 44387 PTy(F4, 44388 bTy)), 44389 Call 44390 ("Take", 44391 ATy(qTy, 44392 PTy(bTy, 44393 qTy)), 44394 Var("v", 44395 PTy(F4, 44396 bTy))))), 44397 Close 44398 (bVar"b", 44399 ITE(bVar"b", 44400 MB(ITE(Bop(In, 44401 Var("Rt", 44402 F4), 44403 SL[LW(13, 44404 4), 44405 LW(15, 44406 4)]), 44407 Call 44408 ("DECODE_UNPREDICTABLE", 44409 ATy(qTy, 44410 PTy(uTy, 44411 qTy)), 44412 TP[Var("mc", 44413 CTy"MachineCode"), 44414 LS 44415 "LoadUnprivileged"]), 44416 MU(LU, 44417 qTy)), 44418 Close 44419 (AVar 44420 uTy, 44421 MU(Call 44422 ("Load", 44423 CTy"instruction", 44424 Call 44425 ("LoadUnprivileged", 44426 CTy"Load", 44427 TP[LT, 44428 LF, 44429 Var("Rt", 44430 F4), 44431 Mop(Cast 44432 F4, 44433 LL[bVar"b'19", 44434 bVar"b'18", 44435 bVar"b'17", 44436 bVar"b'16"]), 44437 Call 44438 ("immediate_form1", 44439 CTy"offset1", 44440 Mop(Cast 44441 F32, 44442 Mop(Cast 44443 F8, 44444 LL[bVar"b'7", 44445 bVar"b'6", 44446 bVar"b'5", 44447 bVar"b'4", 44448 bVar"b'3", 44449 bVar"b'2", 44450 bVar"b'1", 44451 bVar"b'0"])))])), 44452 qTy))), 44453 Call 44454 ("Skip", 44455 ATy(qTy, 44456 PTy(CTy"instruction", 44457 qTy)), 44458 LU)))))))), 44459 (Bop(And,Mop(Not,bVar"b'23"), 44460 bVar"b'11"), 44461 Let(Var("Rn",F4), 44462 Mop(Cast F4, 44463 LL[bVar"b'19", 44464 bVar"b'18", 44465 bVar"b'17", 44466 bVar"b'16"]), 44467 Let(Var("W",F1), 44468 Mop(Cast F1, 44469 LL[bVar"b'8"]), 44470 Let(Var("P",F1), 44471 Mop(Cast F1, 44472 LL[bVar"b'10"]), 44473 Let(Var("Rt",F4), 44474 Mop(Cast F4, 44475 LL[bVar"b'15", 44476 bVar"b'14", 44477 bVar"b'13", 44478 bVar"b'12"]), 44479 MB(Call 44480 ("ThumbCondition", 44481 ATy(qTy, 44482 PTy(F4, 44483 qTy)), 44484 LU), 44485 Close 44486 (Var("v", 44487 F4), 44488 MB(MB(MB(Call 44489 ("HaveThumb2", 44490 ATy(qTy, 44491 PTy(bTy, 44492 qTy)), 44493 LU), 44494 Close 44495 (bVar"v0", 44496 MB(MU(Bop(And, 44497 Bop(Or, 44498 EQ(Var("P", 44499 F1), 44500 LW(1, 44501 1)), 44502 EQ(Var("W", 44503 F1), 44504 LW(1, 44505 1))), 44506 bVar"v0"), 44507 qTy), 44508 Close 44509 (bVar"v0", 44510 MU(TP[Var("v", 44511 F4), 44512 bVar"v0"], 44513 qTy))))), 44514 Close 44515 (Var("v", 44516 PTy(F4, 44517 bTy)), 44518 Call 44519 ("Take", 44520 ATy(qTy, 44521 PTy(bTy, 44522 qTy)), 44523 Var("v", 44524 PTy(F4, 44525 bTy))))), 44526 Close 44527 (bVar"b", 44528 ITE(bVar"b", 44529 Let(bVar"wback", 44530 EQ(Var("W", 44531 F1), 44532 LW(1, 44533 1)), 44534 MB(Call 44535 ("InITBlock", 44536 ATy(qTy, 44537 PTy(bTy, 44538 qTy)), 44539 LU), 44540 Close 44541 (bVar"v", 44542 MB(MB(MB(MB(MU(Bop(And, 44543 EQ(Var("Rt", 44544 F4), 44545 LW(15, 44546 4)), 44547 bVar"v"), 44548 qTy), 44549 Close 44550 (bVar"b", 44551 ITE(bVar"b", 44552 MB(Call 44553 ("LastInITBlock", 44554 ATy(qTy, 44555 PTy(bTy, 44556 qTy)), 44557 LU), 44558 Close 44559 (bVar"v", 44560 MU(Mop(Not, 44561 bVar"v"), 44562 qTy))), 44563 MU(LF, 44564 qTy)))), 44565 Close 44566 (bVar"v", 44567 MU(Bop(Or, 44568 Bop(And, 44569 bVar"wback", 44570 EQ(Var("Rn", 44571 F4), 44572 Var("Rt", 44573 F4))), 44574 bVar"v"), 44575 qTy))), 44576 Close 44577 (bVar"b", 44578 ITE(bVar"b", 44579 Call 44580 ("DECODE_UNPREDICTABLE", 44581 ATy(qTy, 44582 PTy(uTy, 44583 qTy)), 44584 TP[Var("mc", 44585 CTy"MachineCode"), 44586 LS 44587 "LoadWord"]), 44588 MU(LU, 44589 qTy)))), 44590 Close 44591 (AVar 44592 uTy, 44593 MU(Call 44594 ("Load", 44595 CTy"instruction", 44596 Call 44597 ("LoadWord", 44598 CTy"Load", 44599 TP[EQ(Mop(Cast 44600 F1, 44601 LL[bVar"b'9"]), 44602 LW(1, 44603 1)), 44604 EQ(Var("P", 44605 F1), 44606 LW(1, 44607 1)), 44608 bVar"wback", 44609 Var("Rt", 44610 F4), 44611 Var("Rn", 44612 F4), 44613 Call 44614 ("immediate_form1", 44615 CTy"offset1", 44616 Mop(Cast 44617 F32, 44618 Mop(Cast 44619 F8, 44620 LL[bVar"b'7", 44621 bVar"b'6", 44622 bVar"b'5", 44623 bVar"b'4", 44624 bVar"b'3", 44625 bVar"b'2", 44626 bVar"b'1", 44627 bVar"b'0"])))])), 44628 qTy)))))), 44629 Call 44630 ("Skip", 44631 ATy(qTy, 44632 PTy(CTy"instruction", 44633 qTy)), 44634 LU))))))))))), 44635 (Bop(And,Mop(Not,bVar"b'23"), 44636 Bop(And, 44637 Mop(Not,bVar"b'11"), 44638 Bop(And, 44639 Mop(Not, 44640 bVar"b'10"), 44641 Bop(And, 44642 Mop(Not, 44643 bVar"b'9"), 44644 Bop(And, 44645 Mop(Not, 44646 bVar"b'8"), 44647 Bop(And, 44648 Mop(Not, 44649 bVar"b'7"), 44650 Mop(Not, 44651 bVar"b'6"))))))), 44652 Let(Var("Rm",F4), 44653 Mop(Cast F4, 44654 LL[bVar"b'3", 44655 bVar"b'2", 44656 bVar"b'1", 44657 bVar"b'0"]), 44658 Let(Var("Rt",F4), 44659 Mop(Cast F4, 44660 LL[bVar"b'15", 44661 bVar"b'14", 44662 bVar"b'13", 44663 bVar"b'12"]), 44664 MB(Call 44665 ("ThumbCondition", 44666 ATy(qTy, 44667 PTy(F4,qTy)), 44668 LU), 44669 Close 44670 (Var("v",F4), 44671 MB(MB(MB(Call 44672 ("HaveThumb2", 44673 ATy(qTy, 44674 PTy(bTy, 44675 qTy)), 44676 LU), 44677 Close 44678 (bVar"v0", 44679 MU(TP[Var("v", 44680 F4), 44681 bVar"v0"], 44682 qTy))), 44683 Close 44684 (Var("v", 44685 PTy(F4, 44686 bTy)), 44687 Call 44688 ("Take", 44689 ATy(qTy, 44690 PTy(bTy, 44691 qTy)), 44692 Var("v", 44693 PTy(F4, 44694 bTy))))), 44695 Close 44696 (bVar"b", 44697 ITE(bVar"b", 44698 MB(Call 44699 ("InITBlock", 44700 ATy(qTy, 44701 PTy(bTy, 44702 qTy)), 44703 LU), 44704 Close 44705 (bVar"v", 44706 MB(MB(MB(MB(MU(Bop(And, 44707 EQ(Var("Rt", 44708 F4), 44709 LW(15, 44710 4)), 44711 bVar"v"), 44712 qTy), 44713 Close 44714 (bVar"b", 44715 ITE(bVar"b", 44716 MB(Call 44717 ("LastInITBlock", 44718 ATy(qTy, 44719 PTy(bTy, 44720 qTy)), 44721 LU), 44722 Close 44723 (bVar"v", 44724 MU(Mop(Not, 44725 bVar"v"), 44726 qTy))), 44727 MU(LF, 44728 qTy)))), 44729 Close 44730 (bVar"b", 44731 MU(Bop(Or, 44732 bVar"b", 44733 Bop(In, 44734 Var("Rm", 44735 F4), 44736 SL[LW(13, 44737 4), 44738 LW(15, 44739 4)])), 44740 qTy))), 44741 Close 44742 (bVar"b", 44743 ITE(bVar"b", 44744 Call 44745 ("DECODE_UNPREDICTABLE", 44746 ATy(qTy, 44747 PTy(uTy, 44748 qTy)), 44749 TP[Var("mc", 44750 CTy"MachineCode"), 44751 LS 44752 "LoadWord"]), 44753 MU(LU, 44754 qTy)))), 44755 Close 44756 (AVar 44757 uTy, 44758 MU(Call 44759 ("Load", 44760 CTy"instruction", 44761 Call 44762 ("LoadWord", 44763 CTy"Load", 44764 TP[LT, 44765 LT, 44766 LF, 44767 Var("Rt", 44768 F4), 44769 Mop(Cast 44770 F4, 44771 LL[bVar"b'19", 44772 bVar"b'18", 44773 bVar"b'17", 44774 bVar"b'16"]), 44775 Call 44776 ("register_form1", 44777 CTy"offset1", 44778 TP[Var("Rm", 44779 F4), 44780 LC("SRType_LSL", 44781 CTy"SRType"), 44782 Mop(Cast 44783 nTy, 44784 Mop(Cast 44785 (FTy 2), 44786 LL[bVar"b'5", 44787 bVar"b'4"]))])])), 44788 qTy))))), 44789 Call 44790 ("Skip", 44791 ATy(qTy, 44792 PTy(CTy"instruction", 44793 qTy)), 44794 LU)))))))))], 44795 Call 44796 ("UndefinedThumb", 44797 ATy(qTy, 44798 PTy(CTy"instruction",qTy)), 44799 LU)), 44800 Call 44801 ("UndefinedThumb", 44802 ATy(qTy, 44803 PTy(CTy"instruction",qTy)), 44804 LU))), 44805 (Bop(And,bVar"b'31", 44806 Bop(And,bVar"b'30", 44807 Bop(And,bVar"b'29", 44808 Bop(And, 44809 Mop(Not,bVar"b'26"), 44810 Bop(And, 44811 Mop(Not,bVar"b'24"), 44812 Mop(Not,bVar"b'21")))))), 44813 ITB([(Bop(And,Mop(Not,bVar"b'23"), 44814 Bop(And,Mop(Not,bVar"b'11"), 44815 Bop(And, 44816 Mop(Not,bVar"b'10"), 44817 Bop(And, 44818 Mop(Not,bVar"b'9"), 44819 Bop(And, 44820 Mop(Not, 44821 bVar"b'8"), 44822 Bop(And, 44823 Mop(Not, 44824 bVar"b'7"), 44825 Mop(Not, 44826 bVar"b'6"))))))), 44827 Let(Var("Rn",F4), 44828 Mop(Cast F4, 44829 LL[bVar"b'19",bVar"b'18", 44830 bVar"b'17",bVar"b'16"]), 44831 Let(Var("Rm",F4), 44832 Mop(Cast F4, 44833 LL[bVar"b'3", 44834 bVar"b'2", 44835 bVar"b'1", 44836 bVar"b'0"]), 44837 Let(Var("Rt",F4), 44838 Mop(Cast F4, 44839 LL[bVar"b'15", 44840 bVar"b'14", 44841 bVar"b'13", 44842 bVar"b'12"]), 44843 MB(Call 44844 ("ThumbCondition", 44845 ATy(qTy, 44846 PTy(F4,qTy)), 44847 LU), 44848 Close 44849 (Var("v",F4), 44850 MB(MB(MB(Call 44851 ("HaveThumb2", 44852 ATy(qTy, 44853 PTy(bTy, 44854 qTy)), 44855 LU), 44856 Close 44857 (bVar"v0", 44858 MB(MU(Bop(And, 44859 Mop(Not, 44860 EQ(Var("Rn", 44861 F4), 44862 LW(15, 44863 4))), 44864 bVar"v0"), 44865 qTy), 44866 Close 44867 (bVar"v0", 44868 MU(TP[Var("v", 44869 F4), 44870 bVar"v0"], 44871 qTy))))), 44872 Close 44873 (Var("v", 44874 PTy(F4, 44875 bTy)), 44876 Call 44877 ("Take", 44878 ATy(qTy, 44879 PTy(bTy, 44880 qTy)), 44881 Var("v", 44882 PTy(F4, 44883 bTy))))), 44884 Close 44885 (bVar"b", 44886 ITE(bVar"b", 44887 MB(ITE(Bop(Or, 44888 EQ(Var("Rt", 44889 F4), 44890 LW(15, 44891 4)), 44892 Bop(In, 44893 Var("Rm", 44894 F4), 44895 SL[LW(13, 44896 4), 44897 LW(15, 44898 4)])), 44899 Call 44900 ("DECODE_UNPREDICTABLE", 44901 ATy(qTy, 44902 PTy(uTy, 44903 qTy)), 44904 TP[Var("mc", 44905 CTy"MachineCode"), 44906 LS 44907 "Store (register)"]), 44908 MU(LU, 44909 qTy)), 44910 Close 44911 (AVar 44912 uTy, 44913 MU(Call 44914 ("Store", 44915 CTy"instruction", 44916 Call 44917 ("StoreWord", 44918 CTy"Store", 44919 TP[LT, 44920 LT, 44921 LF, 44922 Var("Rt", 44923 F4), 44924 Var("Rn", 44925 F4), 44926 Call 44927 ("register_form1", 44928 CTy"offset1", 44929 TP[Var("Rm", 44930 F4), 44931 LC("SRType_LSL", 44932 CTy"SRType"), 44933 Mop(Cast 44934 nTy, 44935 Mop(Cast 44936 (FTy 2), 44937 LL[bVar"b'5", 44938 bVar"b'4"]))])])), 44939 qTy))), 44940 Call 44941 ("Skip", 44942 ATy(qTy, 44943 PTy(CTy"instruction", 44944 qTy)), 44945 LU)))))))))), 44946 (Bop(And,Mop(Not,bVar"b'23"), 44947 Bop(And,bVar"b'11", 44948 Bop(And,bVar"b'10", 44949 Bop(And,bVar"b'9", 44950 Mop(Not,bVar"b'8"))))), 44951 Let(Var("Rn",F4), 44952 Mop(Cast F4, 44953 LL[bVar"b'19",bVar"b'18", 44954 bVar"b'17",bVar"b'16"]), 44955 Let(Var("Rt",F4), 44956 Mop(Cast F4, 44957 LL[bVar"b'15", 44958 bVar"b'14", 44959 bVar"b'13", 44960 bVar"b'12"]), 44961 MB(Call 44962 ("ThumbCondition", 44963 ATy(qTy,PTy(F4,qTy)), 44964 LU), 44965 Close 44966 (Var("v",F4), 44967 MB(MB(MB(Call 44968 ("HaveThumb2", 44969 ATy(qTy, 44970 PTy(bTy, 44971 qTy)), 44972 LU), 44973 Close 44974 (bVar"v0", 44975 MB(MU(Bop(And, 44976 Mop(Not, 44977 EQ(Var("Rn", 44978 F4), 44979 LW(15, 44980 4))), 44981 bVar"v0"), 44982 qTy), 44983 Close 44984 (bVar"v0", 44985 MU(TP[Var("v", 44986 F4), 44987 bVar"v0"], 44988 qTy))))), 44989 Close 44990 (Var("v", 44991 PTy(F4, 44992 bTy)), 44993 Call 44994 ("Take", 44995 ATy(qTy, 44996 PTy(bTy, 44997 qTy)), 44998 Var("v", 44999 PTy(F4, 45000 bTy))))), 45001 Close 45002 (bVar"b", 45003 ITE(bVar"b", 45004 MB(ITE(Bop(In, 45005 Var("Rt", 45006 F4), 45007 SL[LW(13, 45008 4), 45009 LW(15, 45010 4)]), 45011 Call 45012 ("DECODE_UNPREDICTABLE", 45013 ATy(qTy, 45014 PTy(uTy, 45015 qTy)), 45016 TP[Var("mc", 45017 CTy"MachineCode"), 45018 LS 45019 "StoreUnprivileged"]), 45020 MU(LU, 45021 qTy)), 45022 Close 45023 (AVar 45024 uTy, 45025 MU(Call 45026 ("Store", 45027 CTy"instruction", 45028 Call 45029 ("StoreUnprivileged", 45030 CTy"Store", 45031 TP[LT, 45032 LF, 45033 Var("Rt", 45034 F4), 45035 Var("Rn", 45036 F4), 45037 Call 45038 ("immediate_form1", 45039 CTy"offset1", 45040 Mop(Cast 45041 F32, 45042 Mop(Cast 45043 F8, 45044 LL[bVar"b'7", 45045 bVar"b'6", 45046 bVar"b'5", 45047 bVar"b'4", 45048 bVar"b'3", 45049 bVar"b'2", 45050 bVar"b'1", 45051 bVar"b'0"])))])), 45052 qTy))), 45053 Call 45054 ("Skip", 45055 ATy(qTy, 45056 PTy(CTy"instruction", 45057 qTy)), 45058 LU))))))))), 45059 (Bop(And,Mop(Not,bVar"b'23"), 45060 bVar"b'11"), 45061 Let(Var("Rn",F4), 45062 Mop(Cast F4, 45063 LL[bVar"b'19",bVar"b'18", 45064 bVar"b'17",bVar"b'16"]), 45065 Let(Var("W",F1), 45066 Mop(Cast F1,LL[bVar"b'8"]), 45067 Let(Var("P",F1), 45068 Mop(Cast F1, 45069 LL[bVar"b'10"]), 45070 Let(Var("Rt",F4), 45071 Mop(Cast F4, 45072 LL[bVar"b'15", 45073 bVar"b'14", 45074 bVar"b'13", 45075 bVar"b'12"]), 45076 MB(Call 45077 ("ThumbCondition", 45078 ATy(qTy, 45079 PTy(F4, 45080 qTy)), 45081 LU), 45082 Close 45083 (Var("v",F4), 45084 MB(MB(MB(Call 45085 ("HaveThumb2", 45086 ATy(qTy, 45087 PTy(bTy, 45088 qTy)), 45089 LU), 45090 Close 45091 (bVar"v0", 45092 MB(MU(Bop(And, 45093 Bop(And, 45094 Mop(Not, 45095 EQ(Var("Rn", 45096 F4), 45097 LW(15, 45098 4))), 45099 Bop(Or, 45100 EQ(Var("P", 45101 F1), 45102 LW(1, 45103 1)), 45104 EQ(Var("W", 45105 F1), 45106 LW(1, 45107 1)))), 45108 bVar"v0"), 45109 qTy), 45110 Close 45111 (bVar"v0", 45112 MU(TP[Var("v", 45113 F4), 45114 bVar"v0"], 45115 qTy))))), 45116 Close 45117 (Var("v", 45118 PTy(F4, 45119 bTy)), 45120 Call 45121 ("Take", 45122 ATy(qTy, 45123 PTy(bTy, 45124 qTy)), 45125 Var("v", 45126 PTy(F4, 45127 bTy))))), 45128 Close 45129 (bVar"b", 45130 ITE(bVar"b", 45131 Let(bVar"wback", 45132 EQ(Var("W", 45133 F1), 45134 LW(1, 45135 1)), 45136 MB(ITE(Bop(Or, 45137 EQ(Var("Rt", 45138 F4), 45139 LW(15, 45140 4)), 45141 Bop(And, 45142 bVar"wback", 45143 EQ(Var("Rn", 45144 F4), 45145 Var("Rt", 45146 F4)))), 45147 Call 45148 ("DECODE_UNPREDICTABLE", 45149 ATy(qTy, 45150 PTy(uTy, 45151 qTy)), 45152 TP[Var("mc", 45153 CTy"MachineCode"), 45154 LS 45155 "Store (immediate)"]), 45156 MU(LU, 45157 qTy)), 45158 Close 45159 (AVar 45160 uTy, 45161 MU(Call 45162 ("Store", 45163 CTy"instruction", 45164 Call 45165 ("StoreWord", 45166 CTy"Store", 45167 TP[EQ(Mop(Cast 45168 F1, 45169 LL[bVar"b'9"]), 45170 LW(1, 45171 1)), 45172 EQ(Var("P", 45173 F1), 45174 LW(1, 45175 1)), 45176 bVar"wback", 45177 Var("Rt", 45178 F4), 45179 Var("Rn", 45180 F4), 45181 Call 45182 ("immediate_form1", 45183 CTy"offset1", 45184 Mop(Cast 45185 F32, 45186 Mop(Cast 45187 F8, 45188 LL[bVar"b'7", 45189 bVar"b'6", 45190 bVar"b'5", 45191 bVar"b'4", 45192 bVar"b'3", 45193 bVar"b'2", 45194 bVar"b'1", 45195 bVar"b'0"])))])), 45196 qTy)))), 45197 Call 45198 ("Skip", 45199 ATy(qTy, 45200 PTy(CTy"instruction", 45201 qTy)), 45202 LU))))))))))), 45203 (bVar"b'23", 45204 Let(Var("Rn",F4), 45205 Mop(Cast F4, 45206 LL[bVar"b'19",bVar"b'18", 45207 bVar"b'17",bVar"b'16"]), 45208 Let(Var("Rt",F4), 45209 Mop(Cast F4, 45210 LL[bVar"b'15", 45211 bVar"b'14", 45212 bVar"b'13", 45213 bVar"b'12"]), 45214 MB(Call 45215 ("ThumbCondition", 45216 ATy(qTy,PTy(F4,qTy)), 45217 LU), 45218 Close 45219 (Var("v",F4), 45220 MB(MB(MB(Call 45221 ("HaveThumb2", 45222 ATy(qTy, 45223 PTy(bTy, 45224 qTy)), 45225 LU), 45226 Close 45227 (bVar"v0", 45228 MB(MU(Bop(And, 45229 Mop(Not, 45230 EQ(Var("Rn", 45231 F4), 45232 LW(15, 45233 4))), 45234 bVar"v0"), 45235 qTy), 45236 Close 45237 (bVar"v0", 45238 MU(TP[Var("v", 45239 F4), 45240 bVar"v0"], 45241 qTy))))), 45242 Close 45243 (Var("v", 45244 PTy(F4, 45245 bTy)), 45246 Call 45247 ("Take", 45248 ATy(qTy, 45249 PTy(bTy, 45250 qTy)), 45251 Var("v", 45252 PTy(F4, 45253 bTy))))), 45254 Close 45255 (bVar"b", 45256 ITE(bVar"b", 45257 MB(ITE(EQ(Var("Rt", 45258 F4), 45259 LW(15, 45260 4)), 45261 Call 45262 ("DECODE_UNPREDICTABLE", 45263 ATy(qTy, 45264 PTy(uTy, 45265 qTy)), 45266 TP[Var("mc", 45267 CTy"MachineCode"), 45268 LS 45269 "Store (immediate)"]), 45270 MU(LU, 45271 qTy)), 45272 Close 45273 (AVar 45274 uTy, 45275 MU(Call 45276 ("Store", 45277 CTy"instruction", 45278 Call 45279 ("StoreWord", 45280 CTy"Store", 45281 TP[LT, 45282 LT, 45283 LF, 45284 Var("Rt", 45285 F4), 45286 Var("Rn", 45287 F4), 45288 Call 45289 ("immediate_form1", 45290 CTy"offset1", 45291 Mop(Cast 45292 F32, 45293 Mop(Cast 45294 (FTy 12), 45295 LL[bVar"b'11", 45296 bVar"b'10", 45297 bVar"b'9", 45298 bVar"b'8", 45299 bVar"b'7", 45300 bVar"b'6", 45301 bVar"b'5", 45302 bVar"b'4", 45303 bVar"b'3", 45304 bVar"b'2", 45305 bVar"b'1", 45306 bVar"b'0"])))])), 45307 qTy))), 45308 Call 45309 ("Skip", 45310 ATy(qTy, 45311 PTy(CTy"instruction", 45312 qTy)), 45313 LU)))))))))], 45314 Call 45315 ("UndefinedThumb", 45316 ATy(qTy, 45317 PTy(CTy"instruction",qTy)), 45318 LU)))], 45319 Call 45320 ("UndefinedThumb", 45321 ATy(qTy,PTy(CTy"instruction",qTy)),LU))), 45322 (bVar"b'20", 45323 ITE(Bop(And,bVar"b'31", 45324 Bop(And,bVar"b'30", 45325 Bop(And,bVar"b'29", 45326 Mop(Not,bVar"b'26")))), 45327 ITB([(Bop(And,Mop(Not,bVar"b'24"), 45328 Bop(And,bVar"b'21", 45329 Bop(And,bVar"b'19", 45330 Bop(And,bVar"b'18", 45331 Bop(And,bVar"b'17", 45332 Bop(And, 45333 bVar"b'16", 45334 Bop(And, 45335 bVar"b'15", 45336 Bop(And, 45337 bVar"b'14", 45338 Bop(And, 45339 bVar"b'13", 45340 bVar"b'12"))))))))), 45341 MB(Call 45342 ("DECODE_UNPREDICTABLE", 45343 ATy(qTy,PTy(uTy,qTy)), 45344 TP[Var("mc",CTy"MachineCode"), 45345 LS"PreloadDataLiteral"]), 45346 Close 45347 (AVar uTy, 45348 MU(LX(CTy"instruction"),qTy)))), 45349 (Bop(And,Mop(Not,bVar"b'24"), 45350 Bop(And,bVar"b'19", 45351 Bop(And,bVar"b'18", 45352 Bop(And,bVar"b'17", 45353 Bop(And,bVar"b'16", 45354 Bop(And, 45355 bVar"b'15", 45356 Bop(And, 45357 bVar"b'14", 45358 Bop(And, 45359 bVar"b'13", 45360 bVar"b'12")))))))), 45361 MB(Call 45362 ("ThumbCondition", 45363 ATy(qTy,PTy(F4,qTy)),LU), 45364 Close 45365 (Var("v",F4), 45366 MB(MB(MB(Call 45367 ("HaveThumb2", 45368 ATy(qTy, 45369 PTy(bTy,qTy)), 45370 LU), 45371 Close 45372 (bVar"v0", 45373 MU(TP[Var("v",F4), 45374 bVar"v0"], 45375 qTy))), 45376 Close 45377 (Var("v",PTy(F4,bTy)), 45378 Call 45379 ("Take", 45380 ATy(qTy, 45381 PTy(bTy,qTy)), 45382 Var("v", 45383 PTy(F4,bTy))))), 45384 Close 45385 (bVar"b", 45386 ITE(bVar"b", 45387 MU(Call 45388 ("Hint", 45389 CTy"instruction", 45390 Call 45391 ("PreloadDataLiteral", 45392 CTy"Hint", 45393 TP[EQ(Mop(Cast 45394 F1, 45395 LL[bVar"b'23"]), 45396 LW(1, 45397 1)), 45398 Mop(Cast 45399 F32, 45400 Mop(Cast 45401 (FTy 12), 45402 LL[bVar"b'11", 45403 bVar"b'10", 45404 bVar"b'9", 45405 bVar"b'8", 45406 bVar"b'7", 45407 bVar"b'6", 45408 bVar"b'5", 45409 bVar"b'4", 45410 bVar"b'3", 45411 bVar"b'2", 45412 bVar"b'1", 45413 bVar"b'0"]))])), 45414 qTy), 45415 Call 45416 ("Skip", 45417 ATy(qTy, 45418 PTy(CTy"instruction", 45419 qTy)),LU))))))), 45420 (Bop(And,bVar"b'24", 45421 Bop(And,Mop(Not,bVar"b'21"), 45422 Bop(And,bVar"b'19", 45423 Bop(And,bVar"b'18", 45424 Bop(And,bVar"b'17", 45425 Bop(And, 45426 bVar"b'16", 45427 Bop(And, 45428 bVar"b'15", 45429 Bop(And, 45430 bVar"b'14", 45431 Bop(And, 45432 bVar"b'13", 45433 bVar"b'12"))))))))), 45434 MB(Call 45435 ("ThumbCondition", 45436 ATy(qTy,PTy(F4,qTy)),LU), 45437 Close 45438 (Var("v",F4), 45439 MB(MB(MB(Call 45440 ("ArchVersion", 45441 ATy(qTy, 45442 PTy(nTy,qTy)), 45443 LU), 45444 Close 45445 (nVar"v0", 45446 MB(MU(Bop(Ge, 45447 nVar"v0", 45448 LN 7), 45449 qTy), 45450 Close 45451 (bVar"v0", 45452 MU(TP[Var("v", 45453 F4), 45454 bVar"v0"], 45455 qTy))))), 45456 Close 45457 (Var("v",PTy(F4,bTy)), 45458 Call 45459 ("Take", 45460 ATy(qTy, 45461 PTy(bTy,qTy)), 45462 Var("v", 45463 PTy(F4,bTy))))), 45464 Close 45465 (bVar"b", 45466 ITE(bVar"b", 45467 MU(Call 45468 ("Hint", 45469 CTy"instruction", 45470 Call 45471 ("PreloadInstruction", 45472 CTy"Hint", 45473 TP[EQ(Mop(Cast 45474 F1, 45475 LL[bVar"b'23"]), 45476 LW(1, 45477 1)), 45478 LW(15,4), 45479 Call 45480 ("immediate_form1", 45481 CTy"offset1", 45482 Mop(Cast 45483 F32, 45484 Mop(Cast 45485 (FTy 12), 45486 LL[bVar"b'11", 45487 bVar"b'10", 45488 bVar"b'9", 45489 bVar"b'8", 45490 bVar"b'7", 45491 bVar"b'6", 45492 bVar"b'5", 45493 bVar"b'4", 45494 bVar"b'3", 45495 bVar"b'2", 45496 bVar"b'1", 45497 bVar"b'0"])))])), 45498 qTy), 45499 Call 45500 ("Skip", 45501 ATy(qTy, 45502 PTy(CTy"instruction", 45503 qTy)),LU))))))), 45504 (Bop(And,bVar"b'24", 45505 Bop(And,bVar"b'23", 45506 Bop(And, 45507 Mop(Not,bVar"b'21"), 45508 Bop(And,bVar"b'15", 45509 Bop(And,bVar"b'14", 45510 Bop(And, 45511 bVar"b'13", 45512 bVar"b'12")))))), 45513 MB(Call 45514 ("ThumbCondition", 45515 ATy(qTy,PTy(F4,qTy)),LU), 45516 Close 45517 (Var("v",F4), 45518 MB(MB(MB(Call 45519 ("ArchVersion", 45520 ATy(qTy, 45521 PTy(nTy,qTy)), 45522 LU), 45523 Close 45524 (nVar"v0", 45525 MB(MU(Bop(Ge, 45526 nVar"v0", 45527 LN 7), 45528 qTy), 45529 Close 45530 (bVar"v0", 45531 MU(TP[Var("v", 45532 F4), 45533 bVar"v0"], 45534 qTy))))), 45535 Close 45536 (Var("v",PTy(F4,bTy)), 45537 Call 45538 ("Take", 45539 ATy(qTy, 45540 PTy(bTy,qTy)), 45541 Var("v", 45542 PTy(F4,bTy))))), 45543 Close 45544 (bVar"b", 45545 ITE(bVar"b", 45546 MU(Call 45547 ("Hint", 45548 CTy"instruction", 45549 Call 45550 ("PreloadInstruction", 45551 CTy"Hint", 45552 TP[LT, 45553 Mop(Cast 45554 F4, 45555 LL[bVar"b'19", 45556 bVar"b'18", 45557 bVar"b'17", 45558 bVar"b'16"]), 45559 Call 45560 ("immediate_form1", 45561 CTy"offset1", 45562 Mop(Cast 45563 F32, 45564 Mop(Cast 45565 (FTy 12), 45566 LL[bVar"b'11", 45567 bVar"b'10", 45568 bVar"b'9", 45569 bVar"b'8", 45570 bVar"b'7", 45571 bVar"b'6", 45572 bVar"b'5", 45573 bVar"b'4", 45574 bVar"b'3", 45575 bVar"b'2", 45576 bVar"b'1", 45577 bVar"b'0"])))])), 45578 qTy), 45579 Call 45580 ("Skip", 45581 ATy(qTy, 45582 PTy(CTy"instruction", 45583 qTy)),LU))))))), 45584 (Bop(And,Mop(Not,bVar"b'24"), 45585 Bop(And,bVar"b'23", 45586 Bop(And,bVar"b'15", 45587 Bop(And,bVar"b'14", 45588 Bop(And,bVar"b'13", 45589 bVar"b'12"))))), 45590 Let(Var("W",F1), 45591 Mop(Cast F1,LL[bVar"b'21"]), 45592 MB(Call 45593 ("ThumbCondition", 45594 ATy(qTy,PTy(F4,qTy)),LU), 45595 Close 45596 (Var("v",F4), 45597 MB(MB(MB(ITE(EQ(Var("W", 45598 F1), 45599 LW(1,1)), 45600 Call 45601 ("HaveMPExt", 45602 ATy(qTy, 45603 PTy(bTy, 45604 qTy)), 45605 LU), 45606 Call 45607 ("HaveThumb2", 45608 ATy(qTy, 45609 PTy(bTy, 45610 qTy)), 45611 LU)), 45612 Close 45613 (bVar"v0", 45614 MU(TP[Var("v", 45615 F4), 45616 bVar"v0"], 45617 qTy))), 45618 Close 45619 (Var("v", 45620 PTy(F4,bTy)), 45621 Call 45622 ("Take", 45623 ATy(qTy, 45624 PTy(bTy, 45625 qTy)), 45626 Var("v", 45627 PTy(F4, 45628 bTy))))), 45629 Close 45630 (bVar"b", 45631 ITE(bVar"b", 45632 MU(Call 45633 ("Hint", 45634 CTy"instruction", 45635 Call 45636 ("PreloadData", 45637 CTy"Hint", 45638 TP[LT, 45639 EQ(Var("W", 45640 F1), 45641 LW(1, 45642 1)), 45643 Mop(Cast 45644 F4, 45645 LL[bVar"b'19", 45646 bVar"b'18", 45647 bVar"b'17", 45648 bVar"b'16"]), 45649 Call 45650 ("immediate_form1", 45651 CTy"offset1", 45652 Mop(Cast 45653 F32, 45654 Mop(Cast 45655 (FTy 12), 45656 LL[bVar"b'11", 45657 bVar"b'10", 45658 bVar"b'9", 45659 bVar"b'8", 45660 bVar"b'7", 45661 bVar"b'6", 45662 bVar"b'5", 45663 bVar"b'4", 45664 bVar"b'3", 45665 bVar"b'2", 45666 bVar"b'1", 45667 bVar"b'0"])))])), 45668 qTy), 45669 Call 45670 ("Skip", 45671 ATy(qTy, 45672 PTy(CTy"instruction", 45673 qTy)), 45674 LU)))))))), 45675 (Bop(And,bVar"b'24", 45676 Bop(And,bVar"b'21", 45677 Bop(And,bVar"b'19", 45678 Bop(And,bVar"b'18", 45679 Bop(And,bVar"b'17", 45680 Bop(And, 45681 bVar"b'16", 45682 Bop(And, 45683 bVar"b'15", 45684 Bop(And, 45685 bVar"b'14", 45686 Bop(And, 45687 bVar"b'13", 45688 bVar"b'12"))))))))), 45689 MU(Const 45690 ("NoOperation", 45691 CTy"instruction"),qTy)), 45692 (Bop(And,bVar"b'19", 45693 Bop(And,bVar"b'18", 45694 Bop(And,bVar"b'17", 45695 bVar"b'16"))), 45696 Let(Var("Rt",F4), 45697 Mop(Cast F4, 45698 LL[bVar"b'15",bVar"b'14", 45699 bVar"b'13",bVar"b'12"]), 45700 MB(Call 45701 ("ThumbCondition", 45702 ATy(qTy,PTy(F4,qTy)),LU), 45703 Close 45704 (Var("v",F4), 45705 MB(MB(MB(Call 45706 ("HaveThumb2", 45707 ATy(qTy, 45708 PTy(bTy, 45709 qTy)), 45710 LU), 45711 Close 45712 (bVar"v0", 45713 MU(TP[Var("v", 45714 F4), 45715 bVar"v0"], 45716 qTy))), 45717 Close 45718 (Var("v", 45719 PTy(F4,bTy)), 45720 Call 45721 ("Take", 45722 ATy(qTy, 45723 PTy(bTy, 45724 qTy)), 45725 Var("v", 45726 PTy(F4, 45727 bTy))))), 45728 Close 45729 (bVar"b", 45730 ITE(bVar"b", 45731 MB(ITE(EQ(Var("Rt", 45732 F4), 45733 LW(13, 45734 4)), 45735 Call 45736 ("DECODE_UNPREDICTABLE", 45737 ATy(qTy, 45738 PTy(uTy, 45739 qTy)), 45740 TP[Var("mc", 45741 CTy"MachineCode"), 45742 LS 45743 "LoadByteLiteral/LoadHalfLiteral"]), 45744 MU(LU, 45745 qTy)), 45746 Close 45747 (AVar uTy, 45748 MU(Let(Var("imm32", 45749 F32), 45750 Mop(Cast 45751 F32, 45752 Mop(Cast 45753 (FTy 12), 45754 LL[bVar"b'11", 45755 bVar"b'10", 45756 bVar"b'9", 45757 bVar"b'8", 45758 bVar"b'7", 45759 bVar"b'6", 45760 bVar"b'5", 45761 bVar"b'4", 45762 bVar"b'3", 45763 bVar"b'2", 45764 bVar"b'1", 45765 bVar"b'0"])), 45766 Let(bVar"add", 45767 EQ(Mop(Cast 45768 F1, 45769 LL[bVar"b'23"]), 45770 LW(1, 45771 1)), 45772 Let(bVar"unsigned", 45773 EQ(Mop(Cast 45774 F1, 45775 LL[bVar"b'24"]), 45776 LW(0, 45777 1)), 45778 ITE(EQ(Mop(Cast 45779 F1, 45780 LL[bVar"b'21"]), 45781 LW(1, 45782 1)), 45783 Call 45784 ("Load", 45785 CTy"instruction", 45786 Call 45787 ("LoadHalfLiteral", 45788 CTy"Load", 45789 TP[bVar"unsigned", 45790 bVar"add", 45791 Var("Rt", 45792 F4), 45793 Var("imm32", 45794 F32)])), 45795 Call 45796 ("Load", 45797 CTy"instruction", 45798 Call 45799 ("LoadByteLiteral", 45800 CTy"Load", 45801 TP[bVar"unsigned", 45802 bVar"add", 45803 Var("Rt", 45804 F4), 45805 Var("imm32", 45806 F32)])))))), 45807 qTy))), 45808 Call 45809 ("Skip", 45810 ATy(qTy, 45811 PTy(CTy"instruction", 45812 qTy)), 45813 LU)))))))), 45814 (bVar"b'23", 45815 Let(Var("Rn",F4), 45816 Mop(Cast F4, 45817 LL[bVar"b'19",bVar"b'18", 45818 bVar"b'17",bVar"b'16"]), 45819 Let(Var("Rt",F4), 45820 Mop(Cast F4, 45821 LL[bVar"b'15", 45822 bVar"b'14", 45823 bVar"b'13", 45824 bVar"b'12"]), 45825 MB(Call 45826 ("ThumbCondition", 45827 ATy(qTy,PTy(F4,qTy)), 45828 LU), 45829 Close 45830 (Var("v",F4), 45831 MB(MB(MB(Call 45832 ("HaveThumb2", 45833 ATy(qTy, 45834 PTy(bTy, 45835 qTy)), 45836 LU), 45837 Close 45838 (bVar"v0", 45839 MU(TP[Var("v", 45840 F4), 45841 bVar"v0"], 45842 qTy))), 45843 Close 45844 (Var("v", 45845 PTy(F4, 45846 bTy)), 45847 Call 45848 ("Take", 45849 ATy(qTy, 45850 PTy(bTy, 45851 qTy)), 45852 Var("v", 45853 PTy(F4, 45854 bTy))))), 45855 Close 45856 (bVar"b", 45857 ITE(bVar"b", 45858 MB(ITE(EQ(Var("Rt", 45859 F4), 45860 LW(13, 45861 4)), 45862 Call 45863 ("DECODE_UNPREDICTABLE", 45864 ATy(qTy, 45865 PTy(uTy, 45866 qTy)), 45867 TP[Var("mc", 45868 CTy"MachineCode"), 45869 LS 45870 "LoadByte/LoadHalf (immediate)"]), 45871 MU(LU, 45872 qTy)), 45873 Close 45874 (AVar 45875 uTy, 45876 MU(Let(bVar"add", 45877 LT, 45878 Let(bVar"index", 45879 LT, 45880 Let(bVar"wback", 45881 LF, 45882 Let(Var("m", 45883 CTy"offset1"), 45884 Call 45885 ("immediate_form1", 45886 CTy"offset1", 45887 Mop(Cast 45888 F32, 45889 Mop(Cast 45890 (FTy 12), 45891 LL[bVar"b'11", 45892 bVar"b'10", 45893 bVar"b'9", 45894 bVar"b'8", 45895 bVar"b'7", 45896 bVar"b'6", 45897 bVar"b'5", 45898 bVar"b'4", 45899 bVar"b'3", 45900 bVar"b'2", 45901 bVar"b'1", 45902 bVar"b'0"]))), 45903 Let(bVar"unsigned", 45904 EQ(Mop(Cast 45905 F1, 45906 LL[bVar"b'24"]), 45907 LW(0, 45908 1)), 45909 ITE(EQ(Mop(Cast 45910 F1, 45911 LL[bVar"b'21"]), 45912 LW(1, 45913 1)), 45914 Call 45915 ("Load", 45916 CTy"instruction", 45917 Call 45918 ("LoadHalf", 45919 CTy"Load", 45920 TP[bVar"unsigned", 45921 bVar"add", 45922 bVar"index", 45923 bVar"wback", 45924 Var("Rt", 45925 F4), 45926 Var("Rn", 45927 F4), 45928 Var("m", 45929 CTy"offset1")])), 45930 Call 45931 ("Load", 45932 CTy"instruction", 45933 Call 45934 ("LoadByte", 45935 CTy"Load", 45936 TP[bVar"unsigned", 45937 bVar"add", 45938 bVar"index", 45939 bVar"wback", 45940 Var("Rt", 45941 F4), 45942 Var("Rn", 45943 F4), 45944 Var("m", 45945 CTy"offset1")])))))))), 45946 qTy))), 45947 Call 45948 ("Skip", 45949 ATy(qTy, 45950 PTy(CTy"instruction", 45951 qTy)), 45952 LU))))))))), 45953 (Bop(And,Mop(Not,bVar"b'24"), 45954 Bop(And,Mop(Not,bVar"b'23"), 45955 Bop(And,bVar"b'15", 45956 Bop(And,bVar"b'14", 45957 Bop(And,bVar"b'13", 45958 Bop(And, 45959 bVar"b'12", 45960 Bop(And, 45961 bVar"b'11", 45962 Bop(And, 45963 bVar"b'10", 45964 Bop(And, 45965 Mop(Not, 45966 bVar"b'9"), 45967 Mop(Not, 45968 bVar"b'8")))))))))), 45969 Let(Var("W",F1), 45970 Mop(Cast F1,LL[bVar"b'21"]), 45971 MB(Call 45972 ("ThumbCondition", 45973 ATy(qTy,PTy(F4,qTy)),LU), 45974 Close 45975 (Var("v",F4), 45976 MB(MB(MB(ITE(EQ(Var("W", 45977 F1), 45978 LW(1,1)), 45979 Call 45980 ("HaveMPExt", 45981 ATy(qTy, 45982 PTy(bTy, 45983 qTy)), 45984 LU), 45985 Call 45986 ("HaveThumb2", 45987 ATy(qTy, 45988 PTy(bTy, 45989 qTy)), 45990 LU)), 45991 Close 45992 (bVar"v0", 45993 MU(TP[Var("v", 45994 F4), 45995 bVar"v0"], 45996 qTy))), 45997 Close 45998 (Var("v", 45999 PTy(F4,bTy)), 46000 Call 46001 ("Take", 46002 ATy(qTy, 46003 PTy(bTy, 46004 qTy)), 46005 Var("v", 46006 PTy(F4, 46007 bTy))))), 46008 Close 46009 (bVar"b", 46010 ITE(bVar"b", 46011 MU(Call 46012 ("Hint", 46013 CTy"instruction", 46014 Call 46015 ("PreloadData", 46016 CTy"Hint", 46017 TP[LF, 46018 EQ(Var("W", 46019 F1), 46020 LW(1, 46021 1)), 46022 Mop(Cast 46023 F4, 46024 LL[bVar"b'19", 46025 bVar"b'18", 46026 bVar"b'17", 46027 bVar"b'16"]), 46028 Call 46029 ("immediate_form1", 46030 CTy"offset1", 46031 Mop(Cast 46032 F32, 46033 Mop(Cast 46034 F8, 46035 LL[bVar"b'7", 46036 bVar"b'6", 46037 bVar"b'5", 46038 bVar"b'4", 46039 bVar"b'3", 46040 bVar"b'2", 46041 bVar"b'1", 46042 bVar"b'0"])))])), 46043 qTy), 46044 Call 46045 ("Skip", 46046 ATy(qTy, 46047 PTy(CTy"instruction", 46048 qTy)), 46049 LU)))))))), 46050 (Bop(And,bVar"b'24", 46051 Bop(And,Mop(Not,bVar"b'23"), 46052 Bop(And, 46053 Mop(Not,bVar"b'21"), 46054 Bop(And,bVar"b'15", 46055 Bop(And,bVar"b'14", 46056 Bop(And, 46057 bVar"b'13", 46058 Bop(And, 46059 bVar"b'12", 46060 Bop(And, 46061 bVar"b'11", 46062 Bop(And, 46063 bVar"b'10", 46064 Bop(And, 46065 Mop(Not, 46066 bVar"b'9"), 46067 Mop(Not, 46068 bVar"b'8"))))))))))), 46069 MB(Call 46070 ("ThumbCondition", 46071 ATy(qTy,PTy(F4,qTy)),LU), 46072 Close 46073 (Var("v",F4), 46074 MB(MB(MB(Call 46075 ("ArchVersion", 46076 ATy(qTy, 46077 PTy(nTy,qTy)), 46078 LU), 46079 Close 46080 (nVar"v0", 46081 MB(MU(Bop(Ge, 46082 nVar"v0", 46083 LN 7), 46084 qTy), 46085 Close 46086 (bVar"v0", 46087 MU(TP[Var("v", 46088 F4), 46089 bVar"v0"], 46090 qTy))))), 46091 Close 46092 (Var("v",PTy(F4,bTy)), 46093 Call 46094 ("Take", 46095 ATy(qTy, 46096 PTy(bTy,qTy)), 46097 Var("v", 46098 PTy(F4,bTy))))), 46099 Close 46100 (bVar"b", 46101 ITE(bVar"b", 46102 MU(Call 46103 ("Hint", 46104 CTy"instruction", 46105 Call 46106 ("PreloadInstruction", 46107 CTy"Hint", 46108 TP[LF, 46109 Mop(Cast 46110 F4, 46111 LL[bVar"b'19", 46112 bVar"b'18", 46113 bVar"b'17", 46114 bVar"b'16"]), 46115 Call 46116 ("immediate_form1", 46117 CTy"offset1", 46118 Mop(Cast 46119 F32, 46120 Mop(Cast 46121 F8, 46122 LL[bVar"b'7", 46123 bVar"b'6", 46124 bVar"b'5", 46125 bVar"b'4", 46126 bVar"b'3", 46127 bVar"b'2", 46128 bVar"b'1", 46129 bVar"b'0"])))])), 46130 qTy), 46131 Call 46132 ("Skip", 46133 ATy(qTy, 46134 PTy(CTy"instruction", 46135 qTy)),LU))))))), 46136 (Bop(And,Mop(Not,bVar"b'23"), 46137 Bop(And,bVar"b'11", 46138 Bop(And, 46139 Mop(Not,bVar"b'10"), 46140 Mop(Not,bVar"b'8")))), 46141 MU(Call 46142 ("Undefined",CTy"instruction", 46143 LW(0,32)),qTy)), 46144 (Bop(And,Mop(Not,bVar"b'23"), 46145 Bop(And,bVar"b'11", 46146 Bop(And,bVar"b'10", 46147 Bop(And,bVar"b'9", 46148 Mop(Not,bVar"b'8"))))), 46149 Let(Var("Rn",F4), 46150 Mop(Cast F4, 46151 LL[bVar"b'19",bVar"b'18", 46152 bVar"b'17",bVar"b'16"]), 46153 Let(Var("Rt",F4), 46154 Mop(Cast F4, 46155 LL[bVar"b'15", 46156 bVar"b'14", 46157 bVar"b'13", 46158 bVar"b'12"]), 46159 MB(Call 46160 ("ThumbCondition", 46161 ATy(qTy,PTy(F4,qTy)), 46162 LU), 46163 Close 46164 (Var("v",F4), 46165 MB(MB(MB(Call 46166 ("HaveThumb2", 46167 ATy(qTy, 46168 PTy(bTy, 46169 qTy)), 46170 LU), 46171 Close 46172 (bVar"v0", 46173 MU(TP[Var("v", 46174 F4), 46175 bVar"v0"], 46176 qTy))), 46177 Close 46178 (Var("v", 46179 PTy(F4, 46180 bTy)), 46181 Call 46182 ("Take", 46183 ATy(qTy, 46184 PTy(bTy, 46185 qTy)), 46186 Var("v", 46187 PTy(F4, 46188 bTy))))), 46189 Close 46190 (bVar"b", 46191 ITE(bVar"b", 46192 MB(ITE(Bop(In, 46193 Var("Rt", 46194 F4), 46195 SL[LW(13, 46196 4), 46197 LW(15, 46198 4)]), 46199 Call 46200 ("DECODE_UNPREDICTABLE", 46201 ATy(qTy, 46202 PTy(uTy, 46203 qTy)), 46204 TP[Var("mc", 46205 CTy"MachineCode"), 46206 LS 46207 "LoadUnprivileged"]), 46208 MU(LU, 46209 qTy)), 46210 Close 46211 (AVar 46212 uTy, 46213 MU(Let(bVar"add", 46214 LT, 46215 Let(bVar"postindex", 46216 LF, 46217 Let(bVar"unsigned", 46218 EQ(Mop(Cast 46219 F1, 46220 LL[bVar"b'24"]), 46221 LW(0, 46222 1)), 46223 Let(Var("imm32", 46224 F32), 46225 Mop(Cast 46226 F32, 46227 Mop(Cast 46228 F8, 46229 LL[bVar"b'7", 46230 bVar"b'6", 46231 bVar"b'5", 46232 bVar"b'4", 46233 bVar"b'3", 46234 bVar"b'2", 46235 bVar"b'1", 46236 bVar"b'0"])), 46237 Let(Var("m", 46238 CTy"offset2"), 46239 Call 46240 ("immediate_form2", 46241 CTy"offset2", 46242 Var("imm32", 46243 F32)), 46244 ITB([(EQ(Mop(Cast 46245 F1, 46246 LL[bVar"b'21"]), 46247 LW(1, 46248 1)), 46249 Call 46250 ("Load", 46251 CTy"instruction", 46252 Call 46253 ("LoadHalfUnprivileged", 46254 CTy"Load", 46255 TP[bVar"unsigned", 46256 bVar"add", 46257 bVar"postindex", 46258 Var("Rt", 46259 F4), 46260 Var("Rn", 46261 F4), 46262 Var("m", 46263 CTy"offset2")]))), 46264 (bVar"unsigned", 46265 Call 46266 ("Load", 46267 CTy"instruction", 46268 Call 46269 ("LoadByteUnprivileged", 46270 CTy"Load", 46271 TP[bVar"add", 46272 bVar"postindex", 46273 Var("Rt", 46274 F4), 46275 Var("Rn", 46276 F4), 46277 Call 46278 ("immediate_form1", 46279 CTy"offset1", 46280 Var("imm32", 46281 F32))])))], 46282 Call 46283 ("Load", 46284 CTy"instruction", 46285 Call 46286 ("LoadSignedByteUnprivileged", 46287 CTy"Load", 46288 TP[bVar"add", 46289 bVar"postindex", 46290 Var("Rt", 46291 F4), 46292 Var("Rn", 46293 F4), 46294 Var("m", 46295 CTy"offset2")])))))))), 46296 qTy))), 46297 Call 46298 ("Skip", 46299 ATy(qTy, 46300 PTy(CTy"instruction", 46301 qTy)), 46302 LU))))))))), 46303 (Bop(And,bVar"b'24", 46304 Bop(And,Mop(Not,bVar"b'23"), 46305 Bop(And,bVar"b'21", 46306 Bop(And,bVar"b'15", 46307 Bop(And,bVar"b'14", 46308 Bop(And, 46309 bVar"b'13", 46310 Bop(And, 46311 bVar"b'12", 46312 Bop(And, 46313 bVar"b'11", 46314 Bop(And, 46315 bVar"b'10", 46316 Bop(And, 46317 Mop(Not, 46318 bVar"b'9"), 46319 Mop(Not, 46320 bVar"b'8"))))))))))), 46321 MU(Const 46322 ("NoOperation", 46323 CTy"instruction"),qTy)), 46324 (Bop(And,Mop(Not,bVar"b'23"), 46325 bVar"b'11"), 46326 Let(Var("Rn",F4), 46327 Mop(Cast F4, 46328 LL[bVar"b'19",bVar"b'18", 46329 bVar"b'17",bVar"b'16"]), 46330 Let(Var("Rt",F4), 46331 Mop(Cast F4, 46332 LL[bVar"b'15", 46333 bVar"b'14", 46334 bVar"b'13", 46335 bVar"b'12"]), 46336 MB(Call 46337 ("ThumbCondition", 46338 ATy(qTy,PTy(F4,qTy)), 46339 LU), 46340 Close 46341 (Var("v",F4), 46342 MB(MB(MB(Call 46343 ("HaveThumb2", 46344 ATy(qTy, 46345 PTy(bTy, 46346 qTy)), 46347 LU), 46348 Close 46349 (bVar"v0", 46350 MU(TP[Var("v", 46351 F4), 46352 bVar"v0"], 46353 qTy))), 46354 Close 46355 (Var("v", 46356 PTy(F4, 46357 bTy)), 46358 Call 46359 ("Take", 46360 ATy(qTy, 46361 PTy(bTy, 46362 qTy)), 46363 Var("v", 46364 PTy(F4, 46365 bTy))))), 46366 Close 46367 (bVar"b", 46368 ITE(bVar"b", 46369 Let(bVar"wback", 46370 EQ(Mop(Cast 46371 F1, 46372 LL[bVar"b'8"]), 46373 LW(1, 46374 1)), 46375 MB(ITE(Bop(Or, 46376 Bop(Or, 46377 EQ(Var("Rt", 46378 F4), 46379 LW(13, 46380 4)), 46381 Bop(And, 46382 EQ(Var("Rt", 46383 F4), 46384 LW(15, 46385 4)), 46386 bVar"wback")), 46387 Bop(And, 46388 bVar"wback", 46389 EQ(Var("Rn", 46390 F4), 46391 Var("Rt", 46392 F4)))), 46393 Call 46394 ("DECODE_UNPREDICTABLE", 46395 ATy(qTy, 46396 PTy(uTy, 46397 qTy)), 46398 TP[Var("mc", 46399 CTy"MachineCode"), 46400 LS 46401 "Load (immediate)"]), 46402 MU(LU, 46403 qTy)), 46404 Close 46405 (AVar 46406 uTy, 46407 MU(Let(bVar"add", 46408 EQ(Mop(Cast 46409 F1, 46410 LL[bVar"b'9"]), 46411 LW(1, 46412 1)), 46413 Let(bVar"index", 46414 EQ(Mop(Cast 46415 F1, 46416 LL[bVar"b'10"]), 46417 LW(1, 46418 1)), 46419 Let(bVar"unsigned", 46420 EQ(Mop(Cast 46421 F1, 46422 LL[bVar"b'24"]), 46423 LW(0, 46424 1)), 46425 Let(Var("m", 46426 CTy"offset1"), 46427 Call 46428 ("immediate_form1", 46429 CTy"offset1", 46430 Mop(Cast 46431 F32, 46432 Mop(Cast 46433 F8, 46434 LL[bVar"b'7", 46435 bVar"b'6", 46436 bVar"b'5", 46437 bVar"b'4", 46438 bVar"b'3", 46439 bVar"b'2", 46440 bVar"b'1", 46441 bVar"b'0"]))), 46442 ITE(EQ(Mop(Cast 46443 F1, 46444 LL[bVar"b'21"]), 46445 LW(1, 46446 1)), 46447 Call 46448 ("Load", 46449 CTy"instruction", 46450 Call 46451 ("LoadHalf", 46452 CTy"Load", 46453 TP[bVar"unsigned", 46454 bVar"add", 46455 bVar"index", 46456 bVar"wback", 46457 Var("Rt", 46458 F4), 46459 Var("Rn", 46460 F4), 46461 Var("m", 46462 CTy"offset1")])), 46463 Call 46464 ("Load", 46465 CTy"instruction", 46466 Call 46467 ("LoadByte", 46468 CTy"Load", 46469 TP[bVar"unsigned", 46470 bVar"add", 46471 bVar"index", 46472 bVar"wback", 46473 Var("Rt", 46474 F4), 46475 Var("Rn", 46476 F4), 46477 Var("m", 46478 CTy"offset1")]))))))), 46479 qTy)))), 46480 Call 46481 ("Skip", 46482 ATy(qTy, 46483 PTy(CTy"instruction", 46484 qTy)), 46485 LU))))))))), 46486 (Bop(And,Mop(Not,bVar"b'24"), 46487 Bop(And,Mop(Not,bVar"b'23"), 46488 Bop(And,bVar"b'15", 46489 Bop(And,bVar"b'14", 46490 Bop(And,bVar"b'13", 46491 Bop(And, 46492 bVar"b'12", 46493 Bop(And, 46494 Mop(Not, 46495 bVar"b'11"), 46496 Bop(And, 46497 Mop(Not, 46498 bVar"b'10"), 46499 Bop(And, 46500 Mop(Not, 46501 bVar"b'9"), 46502 Bop(And, 46503 Mop(Not, 46504 bVar"b'8"), 46505 Bop(And, 46506 Mop(Not, 46507 bVar"b'7"), 46508 Mop(Not, 46509 bVar"b'6")))))))))))), 46510 Let(Var("W",F1), 46511 Mop(Cast F1,LL[bVar"b'21"]), 46512 Let(Var("Rm",F4), 46513 Mop(Cast F4, 46514 LL[bVar"b'3",bVar"b'2", 46515 bVar"b'1",bVar"b'0"]), 46516 MB(Call 46517 ("ThumbCondition", 46518 ATy(qTy,PTy(F4,qTy)), 46519 LU), 46520 Close 46521 (Var("v",F4), 46522 MB(MB(MB(ITE(EQ(Var("W", 46523 F1), 46524 LW(1, 46525 1)), 46526 Call 46527 ("HaveMPExt", 46528 ATy(qTy, 46529 PTy(bTy, 46530 qTy)), 46531 LU), 46532 Call 46533 ("HaveThumb2", 46534 ATy(qTy, 46535 PTy(bTy, 46536 qTy)), 46537 LU)), 46538 Close 46539 (bVar"v0", 46540 MU(TP[Var("v", 46541 F4), 46542 bVar"v0"], 46543 qTy))), 46544 Close 46545 (Var("v", 46546 PTy(F4, 46547 bTy)), 46548 Call 46549 ("Take", 46550 ATy(qTy, 46551 PTy(bTy, 46552 qTy)), 46553 Var("v", 46554 PTy(F4, 46555 bTy))))), 46556 Close 46557 (bVar"b", 46558 ITE(bVar"b", 46559 MB(ITE(Bop(In, 46560 Var("Rm", 46561 F4), 46562 SL[LW(13, 46563 4), 46564 LW(15, 46565 4)]), 46566 Call 46567 ("DECODE_UNPREDICTABLE", 46568 ATy(qTy, 46569 PTy(uTy, 46570 qTy)), 46571 TP[Var("mc", 46572 CTy"MachineCode"), 46573 LS 46574 "PreloadData"]), 46575 MU(LU, 46576 qTy)), 46577 Close 46578 (AVar 46579 uTy, 46580 MU(Call 46581 ("Hint", 46582 CTy"instruction", 46583 Call 46584 ("PreloadData", 46585 CTy"Hint", 46586 TP[LT, 46587 EQ(Var("W", 46588 F1), 46589 LW(1, 46590 1)), 46591 Mop(Cast 46592 F4, 46593 LL[bVar"b'19", 46594 bVar"b'18", 46595 bVar"b'17", 46596 bVar"b'16"]), 46597 Call 46598 ("register_form1", 46599 CTy"offset1", 46600 TP[Var("Rm", 46601 F4), 46602 LC("SRType_LSL", 46603 CTy"SRType"), 46604 Mop(Cast 46605 nTy, 46606 Mop(Cast 46607 (FTy 2), 46608 LL[bVar"b'5", 46609 bVar"b'4"]))])])), 46610 qTy))), 46611 Call 46612 ("Skip", 46613 ATy(qTy, 46614 PTy(CTy"instruction", 46615 qTy)), 46616 LU))))))))), 46617 (Bop(And,bVar"b'24", 46618 Bop(And,Mop(Not,bVar"b'23"), 46619 Bop(And, 46620 Mop(Not,bVar"b'21"), 46621 Bop(And,bVar"b'15", 46622 Bop(And,bVar"b'14", 46623 Bop(And, 46624 bVar"b'13", 46625 Bop(And, 46626 bVar"b'12", 46627 Bop(And, 46628 Mop(Not, 46629 bVar"b'11"), 46630 Bop(And, 46631 Mop(Not, 46632 bVar"b'10"), 46633 Bop(And, 46634 Mop(Not, 46635 bVar"b'9"), 46636 Bop(And, 46637 Mop(Not, 46638 bVar"b'8"), 46639 Bop(And, 46640 Mop(Not, 46641 bVar"b'7"), 46642 Mop(Not, 46643 bVar"b'6"))))))))))))), 46644 Let(Var("Rm",F4), 46645 Mop(Cast F4, 46646 LL[bVar"b'3",bVar"b'2", 46647 bVar"b'1",bVar"b'0"]), 46648 MB(Call 46649 ("ThumbCondition", 46650 ATy(qTy,PTy(F4,qTy)),LU), 46651 Close 46652 (Var("v",F4), 46653 MB(MB(MB(Call 46654 ("ArchVersion", 46655 ATy(qTy, 46656 PTy(nTy, 46657 qTy)), 46658 LU), 46659 Close 46660 (nVar"v0", 46661 MB(MU(Bop(Ge, 46662 nVar"v0", 46663 LN 46664 7), 46665 qTy), 46666 Close 46667 (bVar"v0", 46668 MU(TP[Var("v", 46669 F4), 46670 bVar"v0"], 46671 qTy))))), 46672 Close 46673 (Var("v", 46674 PTy(F4,bTy)), 46675 Call 46676 ("Take", 46677 ATy(qTy, 46678 PTy(bTy, 46679 qTy)), 46680 Var("v", 46681 PTy(F4, 46682 bTy))))), 46683 Close 46684 (bVar"b", 46685 ITE(bVar"b", 46686 MB(ITE(Bop(In, 46687 Var("Rm", 46688 F4), 46689 SL[LW(13, 46690 4), 46691 LW(15, 46692 4)]), 46693 Call 46694 ("DECODE_UNPREDICTABLE", 46695 ATy(qTy, 46696 PTy(uTy, 46697 qTy)), 46698 TP[Var("mc", 46699 CTy"MachineCode"), 46700 LS 46701 "PreloadInstruction"]), 46702 MU(LU, 46703 qTy)), 46704 Close 46705 (AVar uTy, 46706 MU(Call 46707 ("Hint", 46708 CTy"instruction", 46709 Call 46710 ("PreloadInstruction", 46711 CTy"Hint", 46712 TP[LT, 46713 Mop(Cast 46714 F4, 46715 LL[bVar"b'19", 46716 bVar"b'18", 46717 bVar"b'17", 46718 bVar"b'16"]), 46719 Call 46720 ("register_form1", 46721 CTy"offset1", 46722 TP[Var("Rm", 46723 F4), 46724 LC("SRType_LSL", 46725 CTy"SRType"), 46726 Mop(Cast 46727 nTy, 46728 Mop(Cast 46729 (FTy 2), 46730 LL[bVar"b'5", 46731 bVar"b'4"]))])])), 46732 qTy))), 46733 Call 46734 ("Skip", 46735 ATy(qTy, 46736 PTy(CTy"instruction", 46737 qTy)), 46738 LU)))))))), 46739 (Bop(And,bVar"b'24", 46740 Bop(And,Mop(Not,bVar"b'23"), 46741 Bop(And,bVar"b'21", 46742 Bop(And,bVar"b'15", 46743 Bop(And,bVar"b'14", 46744 Bop(And, 46745 bVar"b'13", 46746 Bop(And, 46747 bVar"b'12", 46748 Bop(And, 46749 Mop(Not, 46750 bVar"b'11"), 46751 Bop(And, 46752 Mop(Not, 46753 bVar"b'10"), 46754 Bop(And, 46755 Mop(Not, 46756 bVar"b'9"), 46757 Bop(And, 46758 Mop(Not, 46759 bVar"b'8"), 46760 Bop(And, 46761 Mop(Not, 46762 bVar"b'7"), 46763 Mop(Not, 46764 bVar"b'6"))))))))))))), 46765 MU(Const 46766 ("NoOperation", 46767 CTy"instruction"),qTy)), 46768 (Bop(And,Mop(Not,bVar"b'23"), 46769 Bop(And,Mop(Not,bVar"b'11"), 46770 Bop(And, 46771 Mop(Not,bVar"b'10"), 46772 Bop(And, 46773 Mop(Not,bVar"b'9"), 46774 Bop(And, 46775 Mop(Not, 46776 bVar"b'8"), 46777 Bop(And, 46778 Mop(Not, 46779 bVar"b'7"), 46780 Mop(Not, 46781 bVar"b'6"))))))), 46782 Let(Var("Rn",F4), 46783 Mop(Cast F4, 46784 LL[bVar"b'19",bVar"b'18", 46785 bVar"b'17",bVar"b'16"]), 46786 Let(Var("Rm",F4), 46787 Mop(Cast F4, 46788 LL[bVar"b'3",bVar"b'2", 46789 bVar"b'1",bVar"b'0"]), 46790 Let(Var("Rt",F4), 46791 Mop(Cast F4, 46792 LL[bVar"b'15", 46793 bVar"b'14", 46794 bVar"b'13", 46795 bVar"b'12"]), 46796 MB(Call 46797 ("ThumbCondition", 46798 ATy(qTy, 46799 PTy(F4,qTy)), 46800 LU), 46801 Close 46802 (Var("v",F4), 46803 MB(MB(MB(Call 46804 ("HaveThumb2", 46805 ATy(qTy, 46806 PTy(bTy, 46807 qTy)), 46808 LU), 46809 Close 46810 (bVar"v0", 46811 MU(TP[Var("v", 46812 F4), 46813 bVar"v0"], 46814 qTy))), 46815 Close 46816 (Var("v", 46817 PTy(F4, 46818 bTy)), 46819 Call 46820 ("Take", 46821 ATy(qTy, 46822 PTy(bTy, 46823 qTy)), 46824 Var("v", 46825 PTy(F4, 46826 bTy))))), 46827 Close 46828 (bVar"b", 46829 ITE(bVar"b", 46830 MB(ITE(Bop(Or, 46831 EQ(Var("Rt", 46832 F4), 46833 LW(13, 46834 4)), 46835 Bop(In, 46836 Var("Rm", 46837 F4), 46838 SL[LW(13, 46839 4), 46840 LW(15, 46841 4)])), 46842 Call 46843 ("DECODE_UNPREDICTABLE", 46844 ATy(qTy, 46845 PTy(uTy, 46846 qTy)), 46847 TP[Var("mc", 46848 CTy"MachineCode"), 46849 LS 46850 "Load (register)"]), 46851 MU(LU, 46852 qTy)), 46853 Close 46854 (AVar 46855 uTy, 46856 MU(Let(bVar"add", 46857 LT, 46858 Let(bVar"index", 46859 LT, 46860 Let(bVar"wback", 46861 LF, 46862 Let(bVar"unsigned", 46863 EQ(Mop(Cast 46864 F1, 46865 LL[bVar"b'24"]), 46866 LW(0, 46867 1)), 46868 Let(Var("m", 46869 CTy"offset1"), 46870 Call 46871 ("register_form1", 46872 CTy"offset1", 46873 TP[Var("Rm", 46874 F4), 46875 LC("SRType_LSL", 46876 CTy"SRType"), 46877 Mop(Cast 46878 nTy, 46879 Mop(Cast 46880 (FTy 2), 46881 LL[bVar"b'5", 46882 bVar"b'4"]))]), 46883 ITE(EQ(Mop(Cast 46884 F1, 46885 LL[bVar"b'21"]), 46886 LW(1, 46887 1)), 46888 Call 46889 ("Load", 46890 CTy"instruction", 46891 Call 46892 ("LoadHalf", 46893 CTy"Load", 46894 TP[bVar"unsigned", 46895 bVar"add", 46896 bVar"index", 46897 bVar"wback", 46898 Var("Rt", 46899 F4), 46900 Var("Rn", 46901 F4), 46902 Var("m", 46903 CTy"offset1")])), 46904 Call 46905 ("Load", 46906 CTy"instruction", 46907 Call 46908 ("LoadByte", 46909 CTy"Load", 46910 TP[bVar"unsigned", 46911 bVar"add", 46912 bVar"index", 46913 bVar"wback", 46914 Var("Rt", 46915 F4), 46916 Var("Rn", 46917 F4), 46918 Var("m", 46919 CTy"offset1")])))))))), 46920 qTy))), 46921 Call 46922 ("Skip", 46923 ATy(qTy, 46924 PTy(CTy"instruction", 46925 qTy)), 46926 LU))))))))))], 46927 Call 46928 ("UndefinedThumb", 46929 ATy(qTy,PTy(CTy"instruction",qTy)), 46930 LU)), 46931 Call 46932 ("UndefinedThumb", 46933 ATy(qTy,PTy(CTy"instruction",qTy)),LU))), 46934 (Bop(And,bVar"b'31", 46935 Bop(And,bVar"b'30", 46936 Bop(And,bVar"b'29", 46937 Bop(And,Mop(Not,bVar"b'26"), 46938 Mop(Not,bVar"b'24"))))), 46939 ITB([(Bop(And,Mop(Not,bVar"b'23"), 46940 Bop(And,Mop(Not,bVar"b'11"), 46941 Bop(And,Mop(Not,bVar"b'10"), 46942 Bop(And,Mop(Not,bVar"b'9"), 46943 Bop(And, 46944 Mop(Not,bVar"b'8"), 46945 Bop(And, 46946 Mop(Not, 46947 bVar"b'7"), 46948 Mop(Not, 46949 bVar"b'6"))))))), 46950 Let(Var("Rn",F4), 46951 Mop(Cast F4, 46952 LL[bVar"b'19",bVar"b'18", 46953 bVar"b'17",bVar"b'16"]), 46954 Let(Var("Rm",F4), 46955 Mop(Cast F4, 46956 LL[bVar"b'3",bVar"b'2", 46957 bVar"b'1",bVar"b'0"]), 46958 Let(Var("Rt",F4), 46959 Mop(Cast F4, 46960 LL[bVar"b'15", 46961 bVar"b'14", 46962 bVar"b'13", 46963 bVar"b'12"]), 46964 MB(Call 46965 ("ThumbCondition", 46966 ATy(qTy,PTy(F4,qTy)), 46967 LU), 46968 Close 46969 (Var("v",F4), 46970 MB(MB(MB(Call 46971 ("HaveThumb2", 46972 ATy(qTy, 46973 PTy(bTy, 46974 qTy)), 46975 LU), 46976 Close 46977 (bVar"v0", 46978 MB(MU(Bop(And, 46979 Mop(Not, 46980 EQ(Var("Rn", 46981 F4), 46982 LW(15, 46983 4))), 46984 bVar"v0"), 46985 qTy), 46986 Close 46987 (bVar"v0", 46988 MU(TP[Var("v", 46989 F4), 46990 bVar"v0"], 46991 qTy))))), 46992 Close 46993 (Var("v", 46994 PTy(F4, 46995 bTy)), 46996 Call 46997 ("Take", 46998 ATy(qTy, 46999 PTy(bTy, 47000 qTy)), 47001 Var("v", 47002 PTy(F4, 47003 bTy))))), 47004 Close 47005 (bVar"b", 47006 ITE(bVar"b", 47007 MB(ITE(Bop(Or, 47008 Bop(In, 47009 Var("Rt", 47010 F4), 47011 SL[LW(13, 47012 4), 47013 LW(15, 47014 4)]), 47015 Bop(In, 47016 Var("Rm", 47017 F4), 47018 SL[LW(13, 47019 4), 47020 LW(15, 47021 4)])), 47022 Call 47023 ("DECODE_UNPREDICTABLE", 47024 ATy(qTy, 47025 PTy(uTy, 47026 qTy)), 47027 TP[Var("mc", 47028 CTy"MachineCode"), 47029 LS 47030 "StoreByte/Half (register)"]), 47031 MU(LU, 47032 qTy)), 47033 Close 47034 (AVar 47035 uTy, 47036 MU(Let(bVar"add", 47037 LT, 47038 Let(bVar"index", 47039 LT, 47040 Let(bVar"wback", 47041 LF, 47042 Let(Var("m", 47043 CTy"offset1"), 47044 Call 47045 ("register_form1", 47046 CTy"offset1", 47047 TP[Var("Rm", 47048 F4), 47049 LC("SRType_LSL", 47050 CTy"SRType"), 47051 Mop(Cast 47052 nTy, 47053 Mop(Cast 47054 (FTy 2), 47055 LL[bVar"b'5", 47056 bVar"b'4"]))]), 47057 ITE(EQ(Mop(Cast 47058 F1, 47059 LL[bVar"b'21"]), 47060 LW(1, 47061 1)), 47062 Call 47063 ("Store", 47064 CTy"instruction", 47065 Call 47066 ("StoreHalf", 47067 CTy"Store", 47068 TP[bVar"add", 47069 bVar"index", 47070 bVar"wback", 47071 Var("Rt", 47072 F4), 47073 Var("Rn", 47074 F4), 47075 Var("m", 47076 CTy"offset1")])), 47077 Call 47078 ("Store", 47079 CTy"instruction", 47080 Call 47081 ("StoreByte", 47082 CTy"Store", 47083 TP[bVar"add", 47084 bVar"index", 47085 bVar"wback", 47086 Var("Rt", 47087 F4), 47088 Var("Rn", 47089 F4), 47090 Var("m", 47091 CTy"offset1")]))))))), 47092 qTy))), 47093 Call 47094 ("Skip", 47095 ATy(qTy, 47096 PTy(CTy"instruction", 47097 qTy)), 47098 LU)))))))))), 47099 (Bop(And,Mop(Not,bVar"b'23"), 47100 Bop(And,bVar"b'11", 47101 Bop(And,bVar"b'10", 47102 Bop(And,bVar"b'9", 47103 Mop(Not,bVar"b'8"))))), 47104 Let(Var("Rn",F4), 47105 Mop(Cast F4, 47106 LL[bVar"b'19",bVar"b'18", 47107 bVar"b'17",bVar"b'16"]), 47108 Let(Var("Rt",F4), 47109 Mop(Cast F4, 47110 LL[bVar"b'15",bVar"b'14", 47111 bVar"b'13",bVar"b'12"]), 47112 MB(Call 47113 ("ThumbCondition", 47114 ATy(qTy,PTy(F4,qTy)),LU), 47115 Close 47116 (Var("v",F4), 47117 MB(MB(MB(Call 47118 ("HaveThumb2", 47119 ATy(qTy, 47120 PTy(bTy, 47121 qTy)), 47122 LU), 47123 Close 47124 (bVar"v0", 47125 MB(MU(Bop(And, 47126 Mop(Not, 47127 EQ(Var("Rn", 47128 F4), 47129 LW(15, 47130 4))), 47131 bVar"v0"), 47132 qTy), 47133 Close 47134 (bVar"v0", 47135 MU(TP[Var("v", 47136 F4), 47137 bVar"v0"], 47138 qTy))))), 47139 Close 47140 (Var("v", 47141 PTy(F4,bTy)), 47142 Call 47143 ("Take", 47144 ATy(qTy, 47145 PTy(bTy, 47146 qTy)), 47147 Var("v", 47148 PTy(F4, 47149 bTy))))), 47150 Close 47151 (bVar"b", 47152 ITE(bVar"b", 47153 MB(ITE(Bop(In, 47154 Var("Rt", 47155 F4), 47156 SL[LW(13, 47157 4), 47158 LW(15, 47159 4)]), 47160 Call 47161 ("DECODE_UNPREDICTABLE", 47162 ATy(qTy, 47163 PTy(uTy, 47164 qTy)), 47165 TP[Var("mc", 47166 CTy"MachineCode"), 47167 LS 47168 "StoreByte/HalfUnprivileged"]), 47169 MU(LU, 47170 qTy)), 47171 Close 47172 (AVar uTy, 47173 MU(Let(bVar"add", 47174 LT, 47175 Let(bVar"postindex", 47176 LF, 47177 Let(Var("imm32", 47178 F32), 47179 Mop(Cast 47180 F32, 47181 Mop(Cast 47182 F8, 47183 LL[bVar"b'7", 47184 bVar"b'6", 47185 bVar"b'5", 47186 bVar"b'4", 47187 bVar"b'3", 47188 bVar"b'2", 47189 bVar"b'1", 47190 bVar"b'0"])), 47191 ITE(EQ(Mop(Cast 47192 F1, 47193 LL[bVar"b'21"]), 47194 LW(1, 47195 1)), 47196 Call 47197 ("Store", 47198 CTy"instruction", 47199 Call 47200 ("StoreHalfUnprivileged", 47201 CTy"Store", 47202 TP[bVar"add", 47203 bVar"postindex", 47204 Var("Rt", 47205 F4), 47206 Var("Rn", 47207 F4), 47208 Call 47209 ("immediate_form2", 47210 CTy"offset2", 47211 Var("imm32", 47212 F32))])), 47213 Call 47214 ("Store", 47215 CTy"instruction", 47216 Call 47217 ("StoreByteUnprivileged", 47218 CTy"Store", 47219 TP[bVar"add", 47220 bVar"postindex", 47221 Var("Rt", 47222 F4), 47223 Var("Rn", 47224 F4), 47225 Call 47226 ("immediate_form1", 47227 CTy"offset1", 47228 Var("imm32", 47229 F32))])))))), 47230 qTy))), 47231 Call 47232 ("Skip", 47233 ATy(qTy, 47234 PTy(CTy"instruction", 47235 qTy)), 47236 LU))))))))), 47237 (Bop(And,Mop(Not,bVar"b'23"),bVar"b'11"), 47238 Let(Var("Rn",F4), 47239 Mop(Cast F4, 47240 LL[bVar"b'19",bVar"b'18", 47241 bVar"b'17",bVar"b'16"]), 47242 Let(Var("W",F1), 47243 Mop(Cast F1,LL[bVar"b'8"]), 47244 Let(Var("P",F1), 47245 Mop(Cast F1,LL[bVar"b'10"]), 47246 Let(Var("Rt",F4), 47247 Mop(Cast F4, 47248 LL[bVar"b'15", 47249 bVar"b'14", 47250 bVar"b'13", 47251 bVar"b'12"]), 47252 MB(Call 47253 ("ThumbCondition", 47254 ATy(qTy, 47255 PTy(F4,qTy)), 47256 LU), 47257 Close 47258 (Var("v",F4), 47259 MB(MB(MB(Call 47260 ("HaveThumb2", 47261 ATy(qTy, 47262 PTy(bTy, 47263 qTy)), 47264 LU), 47265 Close 47266 (bVar"v0", 47267 MB(MU(Bop(And, 47268 Bop(And, 47269 Mop(Not, 47270 EQ(Var("Rn", 47271 F4), 47272 LW(15, 47273 4))), 47274 Bop(Or, 47275 EQ(Var("P", 47276 F1), 47277 LW(1, 47278 1)), 47279 EQ(Var("W", 47280 F1), 47281 LW(1, 47282 1)))), 47283 bVar"v0"), 47284 qTy), 47285 Close 47286 (bVar"v0", 47287 MU(TP[Var("v", 47288 F4), 47289 bVar"v0"], 47290 qTy))))), 47291 Close 47292 (Var("v", 47293 PTy(F4, 47294 bTy)), 47295 Call 47296 ("Take", 47297 ATy(qTy, 47298 PTy(bTy, 47299 qTy)), 47300 Var("v", 47301 PTy(F4, 47302 bTy))))), 47303 Close 47304 (bVar"b", 47305 ITE(bVar"b", 47306 Let(bVar"wback", 47307 EQ(Var("W", 47308 F1), 47309 LW(1, 47310 1)), 47311 MB(ITE(Bop(Or, 47312 Bop(In, 47313 Var("Rt", 47314 F4), 47315 SL[LW(13, 47316 4), 47317 LW(15, 47318 4)]), 47319 Bop(And, 47320 bVar"wback", 47321 EQ(Var("Rn", 47322 F4), 47323 Var("Rt", 47324 F4)))), 47325 Call 47326 ("DECODE_UNPREDICTABLE", 47327 ATy(qTy, 47328 PTy(uTy, 47329 qTy)), 47330 TP[Var("mc", 47331 CTy"MachineCode"), 47332 LS 47333 "StoreByte/Half (immediate)"]), 47334 MU(LU, 47335 qTy)), 47336 Close 47337 (AVar 47338 uTy, 47339 MU(Let(bVar"add", 47340 EQ(Mop(Cast 47341 F1, 47342 LL[bVar"b'9"]), 47343 LW(1, 47344 1)), 47345 Let(bVar"index", 47346 EQ(Var("P", 47347 F1), 47348 LW(1, 47349 1)), 47350 Let(Var("m", 47351 CTy"offset1"), 47352 Call 47353 ("immediate_form1", 47354 CTy"offset1", 47355 Mop(Cast 47356 F32, 47357 Mop(Cast 47358 F8, 47359 LL[bVar"b'7", 47360 bVar"b'6", 47361 bVar"b'5", 47362 bVar"b'4", 47363 bVar"b'3", 47364 bVar"b'2", 47365 bVar"b'1", 47366 bVar"b'0"]))), 47367 ITE(EQ(Mop(Cast 47368 F1, 47369 LL[bVar"b'21"]), 47370 LW(1, 47371 1)), 47372 Call 47373 ("Store", 47374 CTy"instruction", 47375 Call 47376 ("StoreHalf", 47377 CTy"Store", 47378 TP[bVar"add", 47379 bVar"index", 47380 bVar"wback", 47381 Var("Rt", 47382 F4), 47383 Var("Rn", 47384 F4), 47385 Var("m", 47386 CTy"offset1")])), 47387 Call 47388 ("Store", 47389 CTy"instruction", 47390 Call 47391 ("StoreByte", 47392 CTy"Store", 47393 TP[bVar"add", 47394 bVar"index", 47395 bVar"wback", 47396 Var("Rt", 47397 F4), 47398 Var("Rn", 47399 F4), 47400 Var("m", 47401 CTy"offset1")])))))), 47402 qTy)))), 47403 Call 47404 ("Skip", 47405 ATy(qTy, 47406 PTy(CTy"instruction", 47407 qTy)), 47408 LU))))))))))), 47409 (bVar"b'23", 47410 Let(Var("Rn",F4), 47411 Mop(Cast F4, 47412 LL[bVar"b'19",bVar"b'18", 47413 bVar"b'17",bVar"b'16"]), 47414 Let(Var("Rt",F4), 47415 Mop(Cast F4, 47416 LL[bVar"b'15",bVar"b'14", 47417 bVar"b'13",bVar"b'12"]), 47418 MB(Call 47419 ("ThumbCondition", 47420 ATy(qTy,PTy(F4,qTy)),LU), 47421 Close 47422 (Var("v",F4), 47423 MB(MB(MB(Call 47424 ("HaveThumb2", 47425 ATy(qTy, 47426 PTy(bTy, 47427 qTy)), 47428 LU), 47429 Close 47430 (bVar"v0", 47431 MB(MU(Bop(And, 47432 Mop(Not, 47433 EQ(Var("Rn", 47434 F4), 47435 LW(15, 47436 4))), 47437 bVar"v0"), 47438 qTy), 47439 Close 47440 (bVar"v0", 47441 MU(TP[Var("v", 47442 F4), 47443 bVar"v0"], 47444 qTy))))), 47445 Close 47446 (Var("v", 47447 PTy(F4,bTy)), 47448 Call 47449 ("Take", 47450 ATy(qTy, 47451 PTy(bTy, 47452 qTy)), 47453 Var("v", 47454 PTy(F4, 47455 bTy))))), 47456 Close 47457 (bVar"b", 47458 ITE(bVar"b", 47459 MB(ITE(Bop(In, 47460 Var("Rt", 47461 F4), 47462 SL[LW(13, 47463 4), 47464 LW(15, 47465 4)]), 47466 Call 47467 ("DECODE_UNPREDICTABLE", 47468 ATy(qTy, 47469 PTy(uTy, 47470 qTy)), 47471 TP[Var("mc", 47472 CTy"MachineCode"), 47473 LS 47474 "StoreByte/Half (immediate)"]), 47475 MU(LU, 47476 qTy)), 47477 Close 47478 (AVar uTy, 47479 MU(Let(bVar"add", 47480 LT, 47481 Let(bVar"index", 47482 LT, 47483 Let(bVar"wback", 47484 LF, 47485 Let(Var("m", 47486 CTy"offset1"), 47487 Call 47488 ("immediate_form1", 47489 CTy"offset1", 47490 Mop(Cast 47491 F32, 47492 Mop(Cast 47493 (FTy 12), 47494 LL[bVar"b'11", 47495 bVar"b'10", 47496 bVar"b'9", 47497 bVar"b'8", 47498 bVar"b'7", 47499 bVar"b'6", 47500 bVar"b'5", 47501 bVar"b'4", 47502 bVar"b'3", 47503 bVar"b'2", 47504 bVar"b'1", 47505 bVar"b'0"]))), 47506 ITE(EQ(Mop(Cast 47507 F1, 47508 LL[bVar"b'21"]), 47509 LW(1, 47510 1)), 47511 Call 47512 ("Store", 47513 CTy"instruction", 47514 Call 47515 ("StoreHalf", 47516 CTy"Store", 47517 TP[bVar"add", 47518 bVar"index", 47519 bVar"wback", 47520 Var("Rt", 47521 F4), 47522 Var("Rn", 47523 F4), 47524 Var("m", 47525 CTy"offset1")])), 47526 Call 47527 ("Store", 47528 CTy"instruction", 47529 Call 47530 ("StoreByte", 47531 CTy"Store", 47532 TP[bVar"add", 47533 bVar"index", 47534 bVar"wback", 47535 Var("Rt", 47536 F4), 47537 Var("Rn", 47538 F4), 47539 Var("m", 47540 CTy"offset1")]))))))), 47541 qTy))), 47542 Call 47543 ("Skip", 47544 ATy(qTy, 47545 PTy(CTy"instruction", 47546 qTy)), 47547 LU)))))))))], 47548 Call 47549 ("UndefinedThumb", 47550 ATy(qTy,PTy(CTy"instruction",qTy)),LU)))], 47551 Call 47552 ("UndefinedThumb", 47553 ATy(qTy,PTy(CTy"instruction",qTy)),LU))), 47554 (Bop(And,bVar"b'31", 47555 Bop(And,bVar"b'30", 47556 Bop(And,bVar"b'29",Mop(Not,bVar"b'26")))), 47557 ITB([(Bop(And,Mop(Not,bVar"b'25"), 47558 Bop(And,Mop(Not,bVar"b'24"), 47559 Bop(And,bVar"b'23", 47560 Bop(And,Mop(Not,bVar"b'22"), 47561 Mop(Not,bVar"b'20"))))), 47562 Let(Var("Rn",F4), 47563 Mop(Cast F4, 47564 LL[bVar"b'19",bVar"b'18",bVar"b'17", 47565 bVar"b'16"]), 47566 MB(Call 47567 ("ThumbCondition", 47568 ATy(qTy,PTy(F4,qTy)),LU), 47569 Close 47570 (Var("v",F4), 47571 MB(MB(MB(Call 47572 ("HaveThumb2", 47573 ATy(qTy,PTy(bTy,qTy)), 47574 LU), 47575 Close 47576 (bVar"v0", 47577 MU(TP[Var("v",F4), 47578 bVar"v0"],qTy))), 47579 Close 47580 (Var("v",PTy(F4,bTy)), 47581 Call 47582 ("Take", 47583 ATy(qTy,PTy(bTy,qTy)), 47584 Var("v",PTy(F4,bTy))))), 47585 Close 47586 (bVar"b", 47587 ITE(bVar"b", 47588 Let(Var("registers",F16), 47589 CC[LW(0,1), 47590 Mop(Cast F1, 47591 LL[bVar"b'14"]), 47592 LW(0,1), 47593 Mop(Cast(FTy 13), 47594 LL[bVar"b'12", 47595 bVar"b'11", 47596 bVar"b'10", 47597 bVar"b'9", 47598 bVar"b'8", 47599 bVar"b'7", 47600 bVar"b'6", 47601 bVar"b'5", 47602 bVar"b'4", 47603 bVar"b'3", 47604 bVar"b'2", 47605 bVar"b'1", 47606 bVar"b'0"])], 47607 Let(bVar"wback", 47608 EQ(Mop(Cast F1, 47609 LL[bVar"b'21"]), 47610 LW(1,1)), 47611 MB(Call 47612 ("BitCount", 47613 ATy(qTy, 47614 PTy(nTy, 47615 qTy)), 47616 Var("registers", 47617 F16)), 47618 Close 47619 (nVar"v", 47620 MB(MB(MB(MB(MU(Bop(Lt, 47621 nVar"v", 47622 LN 47623 2), 47624 qTy), 47625 Close 47626 (bVar"v", 47627 MU(Bop(Or, 47628 EQ(Var("Rn", 47629 F4), 47630 LW(15, 47631 4)), 47632 bVar"v"), 47633 qTy))), 47634 Close 47635 (bVar"b", 47636 MU(Bop(Or, 47637 bVar"b", 47638 Bop(And, 47639 bVar"wback", 47640 Bop(Bit, 47641 Var("registers", 47642 F16), 47643 Mop(Cast 47644 nTy, 47645 Var("Rn", 47646 F4))))), 47647 qTy))), 47648 Close 47649 (bVar"b", 47650 ITE(bVar"b", 47651 Call 47652 ("DECODE_UNPREDICTABLE", 47653 ATy(qTy, 47654 PTy(uTy, 47655 qTy)), 47656 TP[Var("mc", 47657 CTy"MachineCode"), 47658 LS 47659 "StoreMultiple"]), 47660 MU(LU, 47661 qTy)))), 47662 Close 47663 (AVar 47664 uTy, 47665 MU(Call 47666 ("Store", 47667 CTy"instruction", 47668 Call 47669 ("StoreMultiple", 47670 CTy"Store", 47671 TP[LT, 47672 LF, 47673 bVar"wback", 47674 Var("Rn", 47675 F4), 47676 Var("registers", 47677 F16)])), 47678 qTy))))))), 47679 Call 47680 ("Skip", 47681 ATy(qTy, 47682 PTy(CTy"instruction", 47683 qTy)),LU)))))))), 47684 (Bop(And,Mop(Not,bVar"b'25"), 47685 Bop(And,bVar"b'24", 47686 Bop(And,Mop(Not,bVar"b'23"), 47687 Bop(And,Mop(Not,bVar"b'22"), 47688 Mop(Not,bVar"b'20"))))), 47689 Let(Var("Rn",F4), 47690 Mop(Cast F4, 47691 LL[bVar"b'19",bVar"b'18",bVar"b'17", 47692 bVar"b'16"]), 47693 MB(Call 47694 ("ThumbCondition", 47695 ATy(qTy,PTy(F4,qTy)),LU), 47696 Close 47697 (Var("v",F4), 47698 MB(MB(MB(Call 47699 ("HaveThumb2", 47700 ATy(qTy,PTy(bTy,qTy)), 47701 LU), 47702 Close 47703 (bVar"v0", 47704 MU(TP[Var("v",F4), 47705 bVar"v0"],qTy))), 47706 Close 47707 (Var("v",PTy(F4,bTy)), 47708 Call 47709 ("Take", 47710 ATy(qTy,PTy(bTy,qTy)), 47711 Var("v",PTy(F4,bTy))))), 47712 Close 47713 (bVar"b", 47714 ITE(bVar"b", 47715 Let(Var("registers",F16), 47716 CC[LW(0,1), 47717 Mop(Cast F1, 47718 LL[bVar"b'14"]), 47719 LW(0,1), 47720 Mop(Cast(FTy 13), 47721 LL[bVar"b'12", 47722 bVar"b'11", 47723 bVar"b'10", 47724 bVar"b'9", 47725 bVar"b'8", 47726 bVar"b'7", 47727 bVar"b'6", 47728 bVar"b'5", 47729 bVar"b'4", 47730 bVar"b'3", 47731 bVar"b'2", 47732 bVar"b'1", 47733 bVar"b'0"])], 47734 Let(bVar"wback", 47735 EQ(Mop(Cast F1, 47736 LL[bVar"b'21"]), 47737 LW(1,1)), 47738 MB(Call 47739 ("BitCount", 47740 ATy(qTy, 47741 PTy(nTy, 47742 qTy)), 47743 Var("registers", 47744 F16)), 47745 Close 47746 (nVar"v", 47747 MB(MB(MB(MB(MU(Bop(Lt, 47748 nVar"v", 47749 LN 47750 2), 47751 qTy), 47752 Close 47753 (bVar"v", 47754 MU(Bop(Or, 47755 EQ(Var("Rn", 47756 F4), 47757 LW(15, 47758 4)), 47759 bVar"v"), 47760 qTy))), 47761 Close 47762 (bVar"b", 47763 MU(Bop(Or, 47764 bVar"b", 47765 Bop(And, 47766 bVar"wback", 47767 Bop(Bit, 47768 Var("registers", 47769 F16), 47770 Mop(Cast 47771 nTy, 47772 Var("Rn", 47773 F4))))), 47774 qTy))), 47775 Close 47776 (bVar"b", 47777 ITE(bVar"b", 47778 Call 47779 ("DECODE_UNPREDICTABLE", 47780 ATy(qTy, 47781 PTy(uTy, 47782 qTy)), 47783 TP[Var("mc", 47784 CTy"MachineCode"), 47785 LS 47786 "StoreMultiple"]), 47787 MU(LU, 47788 qTy)))), 47789 Close 47790 (AVar 47791 uTy, 47792 MU(Call 47793 ("Store", 47794 CTy"instruction", 47795 Call 47796 ("StoreMultiple", 47797 CTy"Store", 47798 TP[LF, 47799 LT, 47800 bVar"wback", 47801 Var("Rn", 47802 F4), 47803 Var("registers", 47804 F16)])), 47805 qTy))))))), 47806 Call 47807 ("Skip", 47808 ATy(qTy, 47809 PTy(CTy"instruction", 47810 qTy)),LU)))))))), 47811 (Bop(And,Mop(Not,bVar"b'25"), 47812 Bop(And,Mop(Not,bVar"b'24"), 47813 Bop(And,bVar"b'23", 47814 Bop(And,Mop(Not,bVar"b'22"), 47815 bVar"b'20")))), 47816 Let(Var("Rn",F4), 47817 Mop(Cast F4, 47818 LL[bVar"b'19",bVar"b'18",bVar"b'17", 47819 bVar"b'16"]), 47820 Let(Var("M",F1), 47821 Mop(Cast F1,LL[bVar"b'14"]), 47822 Let(Var("P",F1), 47823 Mop(Cast F1,LL[bVar"b'15"]), 47824 MB(Call 47825 ("ThumbCondition", 47826 ATy(qTy,PTy(F4,qTy)),LU), 47827 Close 47828 (Var("v",F4), 47829 MB(MB(MB(Call 47830 ("HaveThumb2", 47831 ATy(qTy, 47832 PTy(bTy,qTy)), 47833 LU), 47834 Close 47835 (bVar"v0", 47836 MU(TP[Var("v", 47837 F4), 47838 bVar"v0"], 47839 qTy))), 47840 Close 47841 (Var("v", 47842 PTy(F4,bTy)), 47843 Call 47844 ("Take", 47845 ATy(qTy, 47846 PTy(bTy,qTy)), 47847 Var("v", 47848 PTy(F4,bTy))))), 47849 Close 47850 (bVar"b", 47851 ITE(bVar"b", 47852 Let(Var("registers", 47853 F16), 47854 CC[Var("P",F1), 47855 Var("M",F1), 47856 LW(0,1), 47857 Mop(Cast 47858 (FTy 13), 47859 LL[bVar"b'12", 47860 bVar"b'11", 47861 bVar"b'10", 47862 bVar"b'9", 47863 bVar"b'8", 47864 bVar"b'7", 47865 bVar"b'6", 47866 bVar"b'5", 47867 bVar"b'4", 47868 bVar"b'3", 47869 bVar"b'2", 47870 bVar"b'1", 47871 bVar"b'0"])], 47872 Let(bVar"wback", 47873 EQ(Mop(Cast 47874 F1, 47875 LL[bVar"b'21"]), 47876 LW(1,1)), 47877 MB(Call 47878 ("BitCount", 47879 ATy(qTy, 47880 PTy(nTy, 47881 qTy)), 47882 Var("registers", 47883 F16)), 47884 Close 47885 (nVar"v", 47886 MB(MB(MB(MB(MB(MB(MU(Bop(Lt, 47887 nVar"v", 47888 LN 47889 2), 47890 qTy), 47891 Close 47892 (bVar"v", 47893 MU(Bop(Or, 47894 EQ(Var("Rn", 47895 F4), 47896 LW(15, 47897 4)), 47898 bVar"v"), 47899 qTy))), 47900 Close 47901 (bVar"b", 47902 MU(Bop(Or, 47903 bVar"b", 47904 Bop(And, 47905 EQ(Var("P", 47906 F1), 47907 LW(1, 47908 1)), 47909 EQ(Var("M", 47910 F1), 47911 LW(1, 47912 1)))), 47913 qTy))), 47914 Close 47915 (bVar"b", 47916 ITE(bVar"b", 47917 MU(LT, 47918 qTy), 47919 MB(Call 47920 ("InITBlock", 47921 ATy(qTy, 47922 PTy(bTy, 47923 qTy)), 47924 LU), 47925 Close 47926 (bVar"v", 47927 MB(MU(Bop(And, 47928 Bop(Bit, 47929 Var("registers", 47930 F16), 47931 LN 47932 15), 47933 bVar"v"), 47934 qTy), 47935 Close 47936 (bVar"b", 47937 ITE(bVar"b", 47938 MB(Call 47939 ("LastInITBlock", 47940 ATy(qTy, 47941 PTy(bTy, 47942 qTy)), 47943 LU), 47944 Close 47945 (bVar"v", 47946 MU(Mop(Not, 47947 bVar"v"), 47948 qTy))), 47949 MU(LF, 47950 qTy))))))))), 47951 Close 47952 (bVar"b", 47953 MU(Bop(Or, 47954 bVar"b", 47955 Bop(And, 47956 bVar"wback", 47957 Bop(Bit, 47958 Var("registers", 47959 F16), 47960 Mop(Cast 47961 nTy, 47962 Var("Rn", 47963 F4))))), 47964 qTy))), 47965 Close 47966 (bVar"b", 47967 ITE(bVar"b", 47968 Call 47969 ("DECODE_UNPREDICTABLE", 47970 ATy(qTy, 47971 PTy(uTy, 47972 qTy)), 47973 TP[Var("mc", 47974 CTy"MachineCode"), 47975 LS 47976 "LoadMultiple"]), 47977 MU(LU, 47978 qTy)))), 47979 Close 47980 (AVar 47981 uTy, 47982 MU(Call 47983 ("Load", 47984 CTy"instruction", 47985 Call 47986 ("LoadMultiple", 47987 CTy"Load", 47988 TP[LT, 47989 LF, 47990 bVar"wback", 47991 Var("Rn", 47992 F4), 47993 Var("registers", 47994 F16)])), 47995 qTy))))))), 47996 Call 47997 ("Skip", 47998 ATy(qTy, 47999 PTy(CTy"instruction", 48000 qTy)), 48001 LU)))))))))), 48002 (Bop(And,Mop(Not,bVar"b'25"), 48003 Bop(And,bVar"b'24", 48004 Bop(And,Mop(Not,bVar"b'23"), 48005 Bop(And,Mop(Not,bVar"b'22"), 48006 bVar"b'20")))), 48007 Let(Var("Rn",F4), 48008 Mop(Cast F4, 48009 LL[bVar"b'19",bVar"b'18",bVar"b'17", 48010 bVar"b'16"]), 48011 Let(Var("M",F1), 48012 Mop(Cast F1,LL[bVar"b'14"]), 48013 Let(Var("P",F1), 48014 Mop(Cast F1,LL[bVar"b'15"]), 48015 MB(Call 48016 ("ThumbCondition", 48017 ATy(qTy,PTy(F4,qTy)),LU), 48018 Close 48019 (Var("v",F4), 48020 MB(MB(MB(Call 48021 ("HaveThumb2", 48022 ATy(qTy, 48023 PTy(bTy,qTy)), 48024 LU), 48025 Close 48026 (bVar"v0", 48027 MU(TP[Var("v", 48028 F4), 48029 bVar"v0"], 48030 qTy))), 48031 Close 48032 (Var("v", 48033 PTy(F4,bTy)), 48034 Call 48035 ("Take", 48036 ATy(qTy, 48037 PTy(bTy,qTy)), 48038 Var("v", 48039 PTy(F4,bTy))))), 48040 Close 48041 (bVar"b", 48042 ITE(bVar"b", 48043 Let(Var("registers", 48044 F16), 48045 CC[Var("P",F1), 48046 Var("M",F1), 48047 LW(0,1), 48048 Mop(Cast 48049 (FTy 13), 48050 LL[bVar"b'12", 48051 bVar"b'11", 48052 bVar"b'10", 48053 bVar"b'9", 48054 bVar"b'8", 48055 bVar"b'7", 48056 bVar"b'6", 48057 bVar"b'5", 48058 bVar"b'4", 48059 bVar"b'3", 48060 bVar"b'2", 48061 bVar"b'1", 48062 bVar"b'0"])], 48063 Let(bVar"wback", 48064 EQ(Mop(Cast 48065 F1, 48066 LL[bVar"b'21"]), 48067 LW(1,1)), 48068 MB(Call 48069 ("BitCount", 48070 ATy(qTy, 48071 PTy(nTy, 48072 qTy)), 48073 Var("registers", 48074 F16)), 48075 Close 48076 (nVar"v", 48077 MB(MB(MB(MB(MB(MB(MU(Bop(Lt, 48078 nVar"v", 48079 LN 48080 2), 48081 qTy), 48082 Close 48083 (bVar"v", 48084 MU(Bop(Or, 48085 EQ(Var("Rn", 48086 F4), 48087 LW(15, 48088 4)), 48089 bVar"v"), 48090 qTy))), 48091 Close 48092 (bVar"b", 48093 MU(Bop(Or, 48094 bVar"b", 48095 Bop(And, 48096 EQ(Var("P", 48097 F1), 48098 LW(1, 48099 1)), 48100 EQ(Var("M", 48101 F1), 48102 LW(1, 48103 1)))), 48104 qTy))), 48105 Close 48106 (bVar"b", 48107 ITE(bVar"b", 48108 MU(LT, 48109 qTy), 48110 MB(Call 48111 ("InITBlock", 48112 ATy(qTy, 48113 PTy(bTy, 48114 qTy)), 48115 LU), 48116 Close 48117 (bVar"v", 48118 MB(MU(Bop(And, 48119 Bop(Bit, 48120 Var("registers", 48121 F16), 48122 LN 48123 15), 48124 bVar"v"), 48125 qTy), 48126 Close 48127 (bVar"b", 48128 ITE(bVar"b", 48129 MB(Call 48130 ("LastInITBlock", 48131 ATy(qTy, 48132 PTy(bTy, 48133 qTy)), 48134 LU), 48135 Close 48136 (bVar"v", 48137 MU(Mop(Not, 48138 bVar"v"), 48139 qTy))), 48140 MU(LF, 48141 qTy))))))))), 48142 Close 48143 (bVar"b", 48144 MU(Bop(Or, 48145 bVar"b", 48146 Bop(And, 48147 bVar"wback", 48148 Bop(Bit, 48149 Var("registers", 48150 F16), 48151 Mop(Cast 48152 nTy, 48153 Var("Rn", 48154 F4))))), 48155 qTy))), 48156 Close 48157 (bVar"b", 48158 ITE(bVar"b", 48159 Call 48160 ("DECODE_UNPREDICTABLE", 48161 ATy(qTy, 48162 PTy(uTy, 48163 qTy)), 48164 TP[Var("mc", 48165 CTy"MachineCode"), 48166 LS 48167 "LoadMultiple"]), 48168 MU(LU, 48169 qTy)))), 48170 Close 48171 (AVar 48172 uTy, 48173 MU(Call 48174 ("Load", 48175 CTy"instruction", 48176 Call 48177 ("LoadMultiple", 48178 CTy"Load", 48179 TP[LF, 48180 LT, 48181 bVar"wback", 48182 Var("Rn", 48183 F4), 48184 Var("registers", 48185 F16)])), 48186 qTy))))))), 48187 Call 48188 ("Skip", 48189 ATy(qTy, 48190 PTy(CTy"instruction", 48191 qTy)), 48192 LU)))))))))), 48193 (Bop(And,Mop(Not,bVar"b'25"), 48194 Bop(And,Mop(Not,bVar"b'22"), 48195 Mop(Not,bVar"b'20"))), 48196 Let(Var("op",FTy 2), 48197 Mop(Cast(FTy 2),LL[bVar"b'24",bVar"b'23"]), 48198 MB(Call 48199 ("ThumbCondition", 48200 ATy(qTy,PTy(F4,qTy)),LU), 48201 Close 48202 (Var("v",F4), 48203 MB(MB(MB(Call 48204 ("HaveThumb2", 48205 ATy(qTy,PTy(bTy,qTy)), 48206 LU), 48207 Close 48208 (bVar"v0", 48209 MB(MU(Bop(And, 48210 Bop(In, 48211 Var("op", 48212 FTy 2), 48213 SL[LW(0,2), 48214 LW(3,2)]), 48215 bVar"v0"),qTy), 48216 Close 48217 (bVar"v0", 48218 MU(TP[Var("v",F4), 48219 bVar"v0"], 48220 qTy))))), 48221 Close 48222 (Var("v",PTy(F4,bTy)), 48223 Call 48224 ("Take", 48225 ATy(qTy,PTy(bTy,qTy)), 48226 Var("v",PTy(F4,bTy))))), 48227 Close 48228 (bVar"b", 48229 ITE(bVar"b", 48230 MB(Call 48231 ("CurrentInstrSet", 48232 ATy(qTy, 48233 PTy(CTy"InstrSet", 48234 qTy)),LU), 48235 Close 48236 (Var("v", 48237 CTy"InstrSet"), 48238 MB(MB(MU(EQ(Var("v", 48239 CTy"InstrSet"), 48240 LC("InstrSet_ThumbEE", 48241 CTy"InstrSet")), 48242 qTy), 48243 Close 48244 (bVar"b", 48245 ITE(bVar"b", 48246 Call 48247 ("DECODE_UNPREDICTABLE", 48248 ATy(qTy, 48249 PTy(uTy, 48250 qTy)), 48251 TP[Var("mc", 48252 CTy"MachineCode"), 48253 LS 48254 "StoreReturnState"]), 48255 MU(LU, 48256 qTy)))), 48257 Close 48258 (AVar uTy, 48259 MU(Call 48260 ("System", 48261 CTy"instruction", 48262 Call 48263 ("StoreReturnState", 48264 CTy"System", 48265 TP[EQ(Var("op", 48266 FTy 2), 48267 LW(3, 48268 2)), 48269 LF, 48270 EQ(Mop(Cast 48271 F1, 48272 LL[bVar"b'21"]), 48273 LW(1, 48274 1)), 48275 Mop(Cast 48276 (FTy 5), 48277 LL[bVar"b'4", 48278 bVar"b'3", 48279 bVar"b'2", 48280 bVar"b'1", 48281 bVar"b'0"])])), 48282 qTy))))), 48283 Call 48284 ("Skip", 48285 ATy(qTy, 48286 PTy(CTy"instruction", 48287 qTy)),LU)))))))), 48288 (Bop(And,Mop(Not,bVar"b'25"), 48289 Bop(And,Mop(Not,bVar"b'22"),bVar"b'20")), 48290 Let(Var("Rn",F4), 48291 Mop(Cast F4, 48292 LL[bVar"b'19",bVar"b'18",bVar"b'17", 48293 bVar"b'16"]), 48294 Let(Var("op",FTy 2), 48295 Mop(Cast(FTy 2), 48296 LL[bVar"b'24",bVar"b'23"]), 48297 MB(Call 48298 ("ThumbCondition", 48299 ATy(qTy,PTy(F4,qTy)),LU), 48300 Close 48301 (Var("v",F4), 48302 MB(MB(MB(Call 48303 ("HaveThumb2", 48304 ATy(qTy, 48305 PTy(bTy,qTy)), 48306 LU), 48307 Close 48308 (bVar"v0", 48309 MB(MU(Bop(And, 48310 Bop(In, 48311 Var("op", 48312 FTy 2), 48313 SL[LW(0, 48314 2), 48315 LW(3, 48316 2)]), 48317 bVar"v0"), 48318 qTy), 48319 Close 48320 (bVar"v0", 48321 MU(TP[Var("v", 48322 F4), 48323 bVar"v0"], 48324 qTy))))), 48325 Close 48326 (Var("v",PTy(F4,bTy)), 48327 Call 48328 ("Take", 48329 ATy(qTy, 48330 PTy(bTy,qTy)), 48331 Var("v",PTy(F4,bTy))))), 48332 Close 48333 (bVar"b", 48334 ITE(bVar"b", 48335 MB(Call 48336 ("CurrentInstrSet", 48337 ATy(qTy, 48338 PTy(CTy"InstrSet", 48339 qTy)), 48340 LU), 48341 Close 48342 (Var("v", 48343 CTy"InstrSet"), 48344 MB(MB(MB(MB(MU(EQ(Var("v", 48345 CTy"InstrSet"), 48346 LC("InstrSet_ThumbEE", 48347 CTy"InstrSet")), 48348 qTy), 48349 Close 48350 (bVar"b", 48351 MU(Bop(Or, 48352 bVar"b", 48353 EQ(Var("Rn", 48354 F4), 48355 LW(15, 48356 4))), 48357 qTy))), 48358 Close 48359 (bVar"b", 48360 ITE(bVar"b", 48361 MU(LT, 48362 qTy), 48363 MB(Call 48364 ("InITBlock", 48365 ATy(qTy, 48366 PTy(bTy, 48367 qTy)), 48368 LU), 48369 Close 48370 (bVar"b", 48371 ITE(bVar"b", 48372 MB(Call 48373 ("LastInITBlock", 48374 ATy(qTy, 48375 PTy(bTy, 48376 qTy)), 48377 LU), 48378 Close 48379 (bVar"v", 48380 MU(Mop(Not, 48381 bVar"v"), 48382 qTy))), 48383 MU(LF, 48384 qTy))))))), 48385 Close 48386 (bVar"b", 48387 ITE(bVar"b", 48388 Call 48389 ("DECODE_UNPREDICTABLE", 48390 ATy(qTy, 48391 PTy(uTy, 48392 qTy)), 48393 TP[Var("mc", 48394 CTy"MachineCode"), 48395 LS 48396 "ReturnFromException"]), 48397 MU(LU, 48398 qTy)))), 48399 Close 48400 (AVar uTy, 48401 MU(Call 48402 ("System", 48403 CTy"instruction", 48404 Call 48405 ("ReturnFromException", 48406 CTy"System", 48407 TP[EQ(Var("op", 48408 FTy 2), 48409 LW(3, 48410 2)), 48411 LF, 48412 EQ(Mop(Cast 48413 F1, 48414 LL[bVar"b'21"]), 48415 LW(1, 48416 1)), 48417 Var("Rn", 48418 F4)])), 48419 qTy))))), 48420 Call 48421 ("Skip", 48422 ATy(qTy, 48423 PTy(CTy"instruction", 48424 qTy)),LU))))))))), 48425 (Bop(And,Mop(Not,bVar"b'25"), 48426 Bop(And,Mop(Not,bVar"b'24"), 48427 Bop(And,Mop(Not,bVar"b'23"), 48428 Bop(And,bVar"b'22", 48429 Bop(And,Mop(Not,bVar"b'21"), 48430 Mop(Not,bVar"b'20")))))), 48431 Let(Var("Rn",F4), 48432 Mop(Cast F4, 48433 LL[bVar"b'19",bVar"b'18",bVar"b'17", 48434 bVar"b'16"]), 48435 Let(Var("Rd",F4), 48436 Mop(Cast F4, 48437 LL[bVar"b'11",bVar"b'10", 48438 bVar"b'9",bVar"b'8"]), 48439 Let(Var("Rt",F4), 48440 Mop(Cast F4, 48441 LL[bVar"b'15",bVar"b'14", 48442 bVar"b'13",bVar"b'12"]), 48443 MB(Call 48444 ("ThumbCondition", 48445 ATy(qTy,PTy(F4,qTy)),LU), 48446 Close 48447 (Var("v",F4), 48448 MB(MB(MB(Call 48449 ("HaveThumb2", 48450 ATy(qTy, 48451 PTy(bTy,qTy)), 48452 LU), 48453 Close 48454 (bVar"v0", 48455 MU(TP[Var("v", 48456 F4), 48457 bVar"v0"], 48458 qTy))), 48459 Close 48460 (Var("v", 48461 PTy(F4,bTy)), 48462 Call 48463 ("Take", 48464 ATy(qTy, 48465 PTy(bTy,qTy)), 48466 Var("v", 48467 PTy(F4,bTy))))), 48468 Close 48469 (bVar"b", 48470 ITE(bVar"b", 48471 MB(ITE(Bop(Or, 48472 Bop(Or, 48473 Bop(Or, 48474 Bop(Or, 48475 Bop(In, 48476 Var("Rd", 48477 F4), 48478 SL[LW(13, 48479 4), 48480 LW(15, 48481 4)]), 48482 Bop(In, 48483 Var("Rt", 48484 F4), 48485 SL[LW(13, 48486 4), 48487 LW(15, 48488 4)])), 48489 EQ(Var("Rn", 48490 F4), 48491 LW(15, 48492 4))), 48493 EQ(Var("Rd", 48494 F4), 48495 Var("Rn", 48496 F4))), 48497 EQ(Var("Rd", 48498 F4), 48499 Var("Rt", 48500 F4))), 48501 Call 48502 ("DECODE_UNPREDICTABLE", 48503 ATy(qTy, 48504 PTy(uTy, 48505 qTy)), 48506 TP[Var("mc", 48507 CTy"MachineCode"), 48508 LS 48509 "StoreExclusive"]), 48510 MU(LU,qTy)), 48511 Close 48512 (AVar uTy, 48513 MU(Call 48514 ("Store", 48515 CTy"instruction", 48516 Call 48517 ("StoreExclusive", 48518 CTy"Store", 48519 TP[Var("Rd", 48520 F4), 48521 Var("Rt", 48522 F4), 48523 Var("Rn", 48524 F4), 48525 Mop(Cast 48526 F32, 48527 CC[Mop(Cast 48528 F8, 48529 LL[bVar"b'7", 48530 bVar"b'6", 48531 bVar"b'5", 48532 bVar"b'4", 48533 bVar"b'3", 48534 bVar"b'2", 48535 bVar"b'1", 48536 bVar"b'0"]), 48537 LW(0, 48538 2)])])), 48539 qTy))), 48540 Call 48541 ("Skip", 48542 ATy(qTy, 48543 PTy(CTy"instruction", 48544 qTy)), 48545 LU)))))))))), 48546 (Bop(And,Mop(Not,bVar"b'25"), 48547 Bop(And,Mop(Not,bVar"b'24"), 48548 Bop(And,Mop(Not,bVar"b'23"), 48549 Bop(And,bVar"b'22", 48550 Bop(And,Mop(Not,bVar"b'21"), 48551 bVar"b'20"))))), 48552 Let(Var("Rn",F4), 48553 Mop(Cast F4, 48554 LL[bVar"b'19",bVar"b'18",bVar"b'17", 48555 bVar"b'16"]), 48556 Let(Var("Rt",F4), 48557 Mop(Cast F4, 48558 LL[bVar"b'15",bVar"b'14", 48559 bVar"b'13",bVar"b'12"]), 48560 MB(Call 48561 ("ThumbCondition", 48562 ATy(qTy,PTy(F4,qTy)),LU), 48563 Close 48564 (Var("v",F4), 48565 MB(MB(MB(Call 48566 ("HaveThumb2", 48567 ATy(qTy, 48568 PTy(bTy,qTy)), 48569 LU), 48570 Close 48571 (bVar"v0", 48572 MU(TP[Var("v",F4), 48573 bVar"v0"],qTy))), 48574 Close 48575 (Var("v",PTy(F4,bTy)), 48576 Call 48577 ("Take", 48578 ATy(qTy, 48579 PTy(bTy,qTy)), 48580 Var("v",PTy(F4,bTy))))), 48581 Close 48582 (bVar"b", 48583 ITE(bVar"b", 48584 MB(ITE(Bop(Or, 48585 Bop(In, 48586 Var("Rt", 48587 F4), 48588 SL[LW(13, 48589 4), 48590 LW(15, 48591 4)]), 48592 EQ(Var("Rn", 48593 F4), 48594 LW(15,4))), 48595 Call 48596 ("DECODE_UNPREDICTABLE", 48597 ATy(qTy, 48598 PTy(uTy, 48599 qTy)), 48600 TP[Var("mc", 48601 CTy"MachineCode"), 48602 LS 48603 "StoreExclusive"]), 48604 MU(LU,qTy)), 48605 Close 48606 (AVar uTy, 48607 MU(Call 48608 ("Load", 48609 CTy"instruction", 48610 Call 48611 ("LoadExclusive", 48612 CTy"Load", 48613 TP[Var("Rt", 48614 F4), 48615 Var("Rn", 48616 F4), 48617 Mop(Cast 48618 F32, 48619 CC[Mop(Cast 48620 F8, 48621 LL[bVar"b'7", 48622 bVar"b'6", 48623 bVar"b'5", 48624 bVar"b'4", 48625 bVar"b'3", 48626 bVar"b'2", 48627 bVar"b'1", 48628 bVar"b'0"]), 48629 LW(0, 48630 2)])])), 48631 qTy))), 48632 Call 48633 ("Skip", 48634 ATy(qTy, 48635 PTy(CTy"instruction", 48636 qTy)),LU))))))))), 48637 (Bop(And,Mop(Not,bVar"b'25"), 48638 Bop(And,Mop(Not,bVar"b'24"), 48639 Bop(And,bVar"b'23", 48640 Bop(And,bVar"b'22", 48641 Bop(And,Mop(Not,bVar"b'21"), 48642 Bop(And, 48643 Mop(Not,bVar"b'20"), 48644 Bop(And, 48645 Mop(Not,bVar"b'7"), 48646 Bop(And, 48647 bVar"b'6", 48648 Mop(Not, 48649 bVar"b'5"))))))))), 48650 Let(Var("Rn",F4), 48651 Mop(Cast F4, 48652 LL[bVar"b'19",bVar"b'18",bVar"b'17", 48653 bVar"b'16"]), 48654 Let(Var("Rd",F4), 48655 Mop(Cast F4, 48656 LL[bVar"b'3",bVar"b'2",bVar"b'1", 48657 bVar"b'0"]), 48658 Let(Var("Rt",F4), 48659 Mop(Cast F4, 48660 LL[bVar"b'15",bVar"b'14", 48661 bVar"b'13",bVar"b'12"]), 48662 MB(Call 48663 ("ThumbCondition", 48664 ATy(qTy,PTy(F4,qTy)),LU), 48665 Close 48666 (Var("v",F4), 48667 MB(MB(MB(Call 48668 ("ArchVersion", 48669 ATy(qTy, 48670 PTy(nTy,qTy)), 48671 LU), 48672 Close 48673 (nVar"v0", 48674 MB(MU(Bop(Ge, 48675 nVar"v0", 48676 LN 7), 48677 qTy), 48678 Close 48679 (bVar"v0", 48680 MU(TP[Var("v", 48681 F4), 48682 bVar"v0"], 48683 qTy))))), 48684 Close 48685 (Var("v", 48686 PTy(F4,bTy)), 48687 Call 48688 ("Take", 48689 ATy(qTy, 48690 PTy(bTy,qTy)), 48691 Var("v", 48692 PTy(F4,bTy))))), 48693 Close 48694 (bVar"b", 48695 ITE(bVar"b", 48696 MB(ITE(Bop(Or, 48697 Bop(Or, 48698 Bop(Or, 48699 Bop(Or, 48700 Bop(In, 48701 Var("Rd", 48702 F4), 48703 SL[LW(13, 48704 4), 48705 LW(15, 48706 4)]), 48707 Bop(In, 48708 Var("Rt", 48709 F4), 48710 SL[LW(13, 48711 4), 48712 LW(15, 48713 4)])), 48714 EQ(Var("Rn", 48715 F4), 48716 LW(15, 48717 4))), 48718 EQ(Var("Rd", 48719 F4), 48720 Var("Rn", 48721 F4))), 48722 EQ(Var("Rd", 48723 F4), 48724 Var("Rt", 48725 F4))), 48726 Call 48727 ("DECODE_UNPREDICTABLE", 48728 ATy(qTy, 48729 PTy(uTy, 48730 qTy)), 48731 TP[Var("mc", 48732 CTy"MachineCode"), 48733 LS 48734 "StoreExclusive: Byte or Halfword"]), 48735 MU(LU,qTy)), 48736 Close 48737 (AVar uTy, 48738 MU(ITE(EQ(Mop(Cast 48739 F1, 48740 LL[bVar"b'4"]), 48741 LW(1, 48742 1)), 48743 Call 48744 ("Store", 48745 CTy"instruction", 48746 Call 48747 ("StoreExclusiveHalf", 48748 CTy"Store", 48749 TP[Var("Rd", 48750 F4), 48751 Var("Rt", 48752 F4), 48753 Var("Rn", 48754 F4)])), 48755 Call 48756 ("Store", 48757 CTy"instruction", 48758 Call 48759 ("StoreExclusiveByte", 48760 CTy"Store", 48761 TP[Var("Rd", 48762 F4), 48763 Var("Rt", 48764 F4), 48765 Var("Rn", 48766 F4)]))), 48767 qTy))), 48768 Call 48769 ("Skip", 48770 ATy(qTy, 48771 PTy(CTy"instruction", 48772 qTy)), 48773 LU)))))))))), 48774 (Bop(And,Mop(Not,bVar"b'25"), 48775 Bop(And,Mop(Not,bVar"b'24"), 48776 Bop(And,bVar"b'23", 48777 Bop(And,bVar"b'22", 48778 Bop(And,Mop(Not,bVar"b'21"), 48779 Bop(And, 48780 Mop(Not,bVar"b'20"), 48781 Bop(And, 48782 Mop(Not,bVar"b'7"), 48783 Bop(And, 48784 bVar"b'6", 48785 Bop(And, 48786 bVar"b'5", 48787 bVar"b'4"))))))))), 48788 Let(Var("Rn",F4), 48789 Mop(Cast F4, 48790 LL[bVar"b'19",bVar"b'18",bVar"b'17", 48791 bVar"b'16"]), 48792 Let(Var("Rd",F4), 48793 Mop(Cast F4, 48794 LL[bVar"b'3",bVar"b'2",bVar"b'1", 48795 bVar"b'0"]), 48796 Let(Var("Rt2",F4), 48797 Mop(Cast F4, 48798 LL[bVar"b'11",bVar"b'10", 48799 bVar"b'9",bVar"b'8"]), 48800 Let(Var("Rt",F4), 48801 Mop(Cast F4, 48802 LL[bVar"b'15",bVar"b'14", 48803 bVar"b'13",bVar"b'12"]), 48804 MB(Call 48805 ("ThumbCondition", 48806 ATy(qTy,PTy(F4,qTy)),LU), 48807 Close 48808 (Var("v",F4), 48809 MB(MB(MB(Call 48810 ("ArchVersion", 48811 ATy(qTy, 48812 PTy(nTy, 48813 qTy)), 48814 LU), 48815 Close 48816 (nVar"v0", 48817 MB(MU(Bop(Ge, 48818 nVar"v0", 48819 LN 48820 7), 48821 qTy), 48822 Close 48823 (bVar"v0", 48824 MU(TP[Var("v", 48825 F4), 48826 bVar"v0"], 48827 qTy))))), 48828 Close 48829 (Var("v", 48830 PTy(F4,bTy)), 48831 Call 48832 ("Take", 48833 ATy(qTy, 48834 PTy(bTy, 48835 qTy)), 48836 Var("v", 48837 PTy(F4, 48838 bTy))))), 48839 Close 48840 (bVar"b", 48841 ITE(bVar"b", 48842 MB(ITE(Bop(Or, 48843 Bop(Or, 48844 Bop(Or, 48845 Bop(Or, 48846 Bop(Or, 48847 Bop(In, 48848 Var("Rd", 48849 F4), 48850 SL[LW(13, 48851 4), 48852 LW(15, 48853 4)]), 48854 Bop(In, 48855 Var("Rt", 48856 F4), 48857 SL[LW(13, 48858 4), 48859 LW(15, 48860 4)])), 48861 Bop(In, 48862 Var("Rt2", 48863 F4), 48864 SL[LW(13, 48865 4), 48866 LW(15, 48867 4)])), 48868 EQ(Var("Rn", 48869 F4), 48870 LW(15, 48871 4))), 48872 EQ(Var("Rd", 48873 F4), 48874 Var("Rn", 48875 F4))), 48876 EQ(Var("Rd", 48877 F4), 48878 Var("Rt", 48879 F4))), 48880 Call 48881 ("DECODE_UNPREDICTABLE", 48882 ATy(qTy, 48883 PTy(uTy, 48884 qTy)), 48885 TP[Var("mc", 48886 CTy"MachineCode"), 48887 LS 48888 "StoreExclusivDoubleword"]), 48889 MU(LU, 48890 qTy)), 48891 Close 48892 (AVar 48893 uTy, 48894 MU(Call 48895 ("Store", 48896 CTy"instruction", 48897 Call 48898 ("StoreExclusiveDoubleword", 48899 CTy"Store", 48900 TP[Var("Rd", 48901 F4), 48902 Var("Rt", 48903 F4), 48904 Var("Rt2", 48905 F4), 48906 Var("Rn", 48907 F4)])), 48908 qTy))), 48909 Call 48910 ("Skip", 48911 ATy(qTy, 48912 PTy(CTy"instruction", 48913 qTy)), 48914 LU))))))))))), 48915 (Bop(And,Mop(Not,bVar"b'25"), 48916 Bop(And,Mop(Not,bVar"b'24"), 48917 Bop(And,bVar"b'23", 48918 Bop(And,bVar"b'22", 48919 Bop(And,Mop(Not,bVar"b'21"), 48920 Bop(And,bVar"b'20", 48921 Bop(And, 48922 Mop(Not,bVar"b'7"), 48923 Bop(And, 48924 Mop(Not, 48925 bVar"b'6"), 48926 Mop(Not, 48927 bVar"b'5"))))))))), 48928 Let(Var("Rn",F4), 48929 Mop(Cast F4, 48930 LL[bVar"b'19",bVar"b'18",bVar"b'17", 48931 bVar"b'16"]), 48932 Let(Var("Rm",F4), 48933 Mop(Cast F4, 48934 LL[bVar"b'3",bVar"b'2",bVar"b'1", 48935 bVar"b'0"]), 48936 MB(Call 48937 ("ThumbCondition", 48938 ATy(qTy,PTy(F4,qTy)),LU), 48939 Close 48940 (Var("v",F4), 48941 MB(MB(MB(Call 48942 ("HaveThumb2", 48943 ATy(qTy, 48944 PTy(bTy,qTy)), 48945 LU), 48946 Close 48947 (bVar"v0", 48948 MU(TP[Var("v",F4), 48949 bVar"v0"],qTy))), 48950 Close 48951 (Var("v",PTy(F4,bTy)), 48952 Call 48953 ("Take", 48954 ATy(qTy, 48955 PTy(bTy,qTy)), 48956 Var("v",PTy(F4,bTy))))), 48957 Close 48958 (bVar"b", 48959 ITE(bVar"b", 48960 MB(Call 48961 ("InITBlock", 48962 ATy(qTy, 48963 PTy(bTy,qTy)), 48964 LU), 48965 Close 48966 (bVar"v", 48967 MB(MB(MB(ITE(bVar"v", 48968 MB(Call 48969 ("LastInITBlock", 48970 ATy(qTy, 48971 PTy(bTy, 48972 qTy)), 48973 LU), 48974 Close 48975 (bVar"v", 48976 MU(Mop(Not, 48977 bVar"v"), 48978 qTy))), 48979 MU(LF, 48980 qTy)), 48981 Close 48982 (bVar"v", 48983 MU(Bop(Or, 48984 Bop(Or, 48985 EQ(Var("Rn", 48986 F4), 48987 LW(13, 48988 4)), 48989 Bop(In, 48990 Var("Rm", 48991 F4), 48992 SL[LW(13, 48993 4), 48994 LW(15, 48995 4)])), 48996 bVar"v"), 48997 qTy))), 48998 Close 48999 (bVar"b", 49000 ITE(bVar"b", 49001 Call 49002 ("DECODE_UNPREDICTABLE", 49003 ATy(qTy, 49004 PTy(uTy, 49005 qTy)), 49006 TP[Var("mc", 49007 CTy"MachineCode"), 49008 LS 49009 "TableBranchByte"]), 49010 MU(LU, 49011 qTy)))), 49012 Close 49013 (AVar uTy, 49014 MU(Call 49015 ("Branch", 49016 CTy"instruction", 49017 Call 49018 ("TableBranchByte", 49019 CTy"Branch", 49020 TP[EQ(Mop(Cast 49021 F1, 49022 LL[bVar"b'4"]), 49023 LW(1, 49024 1)), 49025 Var("Rm", 49026 F4), 49027 Var("Rn", 49028 F4)])), 49029 qTy))))), 49030 Call 49031 ("Skip", 49032 ATy(qTy, 49033 PTy(CTy"instruction", 49034 qTy)),LU))))))))), 49035 (Bop(And,Mop(Not,bVar"b'25"), 49036 Bop(And,Mop(Not,bVar"b'24"), 49037 Bop(And,bVar"b'23", 49038 Bop(And,bVar"b'22", 49039 Bop(And,Mop(Not,bVar"b'21"), 49040 Bop(And,bVar"b'20", 49041 Bop(And, 49042 Mop(Not,bVar"b'7"), 49043 Bop(And, 49044 bVar"b'6", 49045 Mop(Not, 49046 bVar"b'5"))))))))), 49047 Let(Var("Rn",F4), 49048 Mop(Cast F4, 49049 LL[bVar"b'19",bVar"b'18",bVar"b'17", 49050 bVar"b'16"]), 49051 Let(Var("Rt",F4), 49052 Mop(Cast F4, 49053 LL[bVar"b'15",bVar"b'14", 49054 bVar"b'13",bVar"b'12"]), 49055 MB(Call 49056 ("ThumbCondition", 49057 ATy(qTy,PTy(F4,qTy)),LU), 49058 Close 49059 (Var("v",F4), 49060 MB(MB(MB(Call 49061 ("ArchVersion", 49062 ATy(qTy, 49063 PTy(nTy,qTy)), 49064 LU), 49065 Close 49066 (nVar"v0", 49067 MB(MU(Bop(Ge, 49068 nVar"v0", 49069 LN 7),qTy), 49070 Close 49071 (bVar"v0", 49072 MU(TP[Var("v", 49073 F4), 49074 bVar"v0"], 49075 qTy))))), 49076 Close 49077 (Var("v",PTy(F4,bTy)), 49078 Call 49079 ("Take", 49080 ATy(qTy, 49081 PTy(bTy,qTy)), 49082 Var("v",PTy(F4,bTy))))), 49083 Close 49084 (bVar"b", 49085 ITE(bVar"b", 49086 MB(ITE(Bop(Or, 49087 Bop(In, 49088 Var("Rt", 49089 F4), 49090 SL[LW(13, 49091 4), 49092 LW(15, 49093 4)]), 49094 EQ(Var("Rn", 49095 F4), 49096 LW(15,4))), 49097 Call 49098 ("DECODE_UNPREDICTABLE", 49099 ATy(qTy, 49100 PTy(uTy, 49101 qTy)), 49102 TP[Var("mc", 49103 CTy"MachineCode"), 49104 LS 49105 "LoadExclusive: Byte or Halfword"]), 49106 MU(LU,qTy)), 49107 Close 49108 (AVar uTy, 49109 MU(ITE(EQ(Mop(Cast 49110 F1, 49111 LL[bVar"b'4"]), 49112 LW(1, 49113 1)), 49114 Call 49115 ("Load", 49116 CTy"instruction", 49117 Call 49118 ("LoadExclusiveHalf", 49119 CTy"Load", 49120 TP[Var("Rt", 49121 F4), 49122 Var("Rn", 49123 F4)])), 49124 Call 49125 ("Load", 49126 CTy"instruction", 49127 Call 49128 ("LoadExclusiveByte", 49129 CTy"Load", 49130 TP[Var("Rt", 49131 F4), 49132 Var("Rn", 49133 F4)]))), 49134 qTy))), 49135 Call 49136 ("Skip", 49137 ATy(qTy, 49138 PTy(CTy"instruction", 49139 qTy)),LU))))))))), 49140 (Bop(And,Mop(Not,bVar"b'25"), 49141 Bop(And,Mop(Not,bVar"b'24"), 49142 Bop(And,bVar"b'23", 49143 Bop(And,bVar"b'22", 49144 Bop(And,Mop(Not,bVar"b'21"), 49145 Bop(And,bVar"b'20", 49146 Bop(And, 49147 Mop(Not,bVar"b'7"), 49148 Bop(And, 49149 bVar"b'6", 49150 Bop(And, 49151 bVar"b'5", 49152 bVar"b'4"))))))))), 49153 Let(Var("Rn",F4), 49154 Mop(Cast F4, 49155 LL[bVar"b'19",bVar"b'18",bVar"b'17", 49156 bVar"b'16"]), 49157 Let(Var("Rt2",F4), 49158 Mop(Cast F4, 49159 LL[bVar"b'11",bVar"b'10", 49160 bVar"b'9",bVar"b'8"]), 49161 Let(Var("Rt",F4), 49162 Mop(Cast F4, 49163 LL[bVar"b'15",bVar"b'14", 49164 bVar"b'13",bVar"b'12"]), 49165 MB(Call 49166 ("ThumbCondition", 49167 ATy(qTy,PTy(F4,qTy)),LU), 49168 Close 49169 (Var("v",F4), 49170 MB(MB(MB(Call 49171 ("ArchVersion", 49172 ATy(qTy, 49173 PTy(nTy,qTy)), 49174 LU), 49175 Close 49176 (nVar"v0", 49177 MB(MU(Bop(Ge, 49178 nVar"v0", 49179 LN 7), 49180 qTy), 49181 Close 49182 (bVar"v0", 49183 MU(TP[Var("v", 49184 F4), 49185 bVar"v0"], 49186 qTy))))), 49187 Close 49188 (Var("v", 49189 PTy(F4,bTy)), 49190 Call 49191 ("Take", 49192 ATy(qTy, 49193 PTy(bTy,qTy)), 49194 Var("v", 49195 PTy(F4,bTy))))), 49196 Close 49197 (bVar"b", 49198 ITE(bVar"b", 49199 MB(ITE(Bop(Or, 49200 Bop(Or, 49201 Bop(Or, 49202 Bop(In, 49203 Var("Rt", 49204 F4), 49205 SL[LW(13, 49206 4), 49207 LW(15, 49208 4)]), 49209 Bop(In, 49210 Var("Rt2", 49211 F4), 49212 SL[LW(13, 49213 4), 49214 LW(15, 49215 4)])), 49216 EQ(Var("Rt", 49217 F4), 49218 Var("Rt2", 49219 F4))), 49220 EQ(Var("Rn", 49221 F4), 49222 LW(15, 49223 4))), 49224 Call 49225 ("DECODE_UNPREDICTABLE", 49226 ATy(qTy, 49227 PTy(uTy, 49228 qTy)), 49229 TP[Var("mc", 49230 CTy"MachineCode"), 49231 LS 49232 "LoadExclusiveDoubleword"]), 49233 MU(LU,qTy)), 49234 Close 49235 (AVar uTy, 49236 MU(Call 49237 ("Load", 49238 CTy"instruction", 49239 Call 49240 ("LoadExclusiveDoubleword", 49241 CTy"Load", 49242 TP[Var("Rt", 49243 F4), 49244 Var("Rt2", 49245 F4), 49246 Var("Rn", 49247 F4)])), 49248 qTy))), 49249 Call 49250 ("Skip", 49251 ATy(qTy, 49252 PTy(CTy"instruction", 49253 qTy)), 49254 LU)))))))))), 49255 (Bop(And,Mop(Not,bVar"b'25"), 49256 Bop(And,bVar"b'22",Mop(Not,bVar"b'20"))), 49257 Let(Var("Rn",F4), 49258 Mop(Cast F4, 49259 LL[bVar"b'19",bVar"b'18",bVar"b'17", 49260 bVar"b'16"]), 49261 Let(Var("W",F1), 49262 Mop(Cast F1,LL[bVar"b'21"]), 49263 Let(Var("P",F1), 49264 Mop(Cast F1,LL[bVar"b'24"]), 49265 Let(Var("Rt2",F4), 49266 Mop(Cast F4, 49267 LL[bVar"b'11",bVar"b'10", 49268 bVar"b'9",bVar"b'8"]), 49269 Let(Var("Rt",F4), 49270 Mop(Cast F4, 49271 LL[bVar"b'15", 49272 bVar"b'14", 49273 bVar"b'13", 49274 bVar"b'12"]), 49275 MB(Call 49276 ("ThumbCondition", 49277 ATy(qTy,PTy(F4,qTy)), 49278 LU), 49279 Close 49280 (Var("v",F4), 49281 MB(MB(MB(Call 49282 ("HaveThumb2", 49283 ATy(qTy, 49284 PTy(bTy, 49285 qTy)), 49286 LU), 49287 Close 49288 (bVar"v0", 49289 MB(MU(Bop(And, 49290 Bop(Or, 49291 EQ(Var("P", 49292 F1), 49293 LW(1, 49294 1)), 49295 EQ(Var("W", 49296 F1), 49297 LW(1, 49298 1))), 49299 bVar"v0"), 49300 qTy), 49301 Close 49302 (bVar"v0", 49303 MU(TP[Var("v", 49304 F4), 49305 bVar"v0"], 49306 qTy))))), 49307 Close 49308 (Var("v", 49309 PTy(F4, 49310 bTy)), 49311 Call 49312 ("Take", 49313 ATy(qTy, 49314 PTy(bTy, 49315 qTy)), 49316 Var("v", 49317 PTy(F4, 49318 bTy))))), 49319 Close 49320 (bVar"b", 49321 ITE(bVar"b", 49322 Let(bVar"wback", 49323 EQ(Var("W", 49324 F1), 49325 LW(1, 49326 1)), 49327 MB(ITE(Bop(Or, 49328 Bop(Or, 49329 Bop(Or, 49330 Bop(And, 49331 bVar"wback", 49332 Bop(Or, 49333 EQ(Var("Rn", 49334 F4), 49335 Var("Rt", 49336 F4)), 49337 EQ(Var("Rn", 49338 F4), 49339 Var("Rt2", 49340 F4)))), 49341 EQ(Var("Rn", 49342 F4), 49343 LW(15, 49344 4))), 49345 Bop(In, 49346 Var("Rt", 49347 F4), 49348 SL[LW(13, 49349 4), 49350 LW(15, 49351 4)])), 49352 Bop(In, 49353 Var("Rt2", 49354 F4), 49355 SL[LW(13, 49356 4), 49357 LW(15, 49358 4)])), 49359 Call 49360 ("DECODE_UNPREDICTABLE", 49361 ATy(qTy, 49362 PTy(uTy, 49363 qTy)), 49364 TP[Var("mc", 49365 CTy"MachineCode"), 49366 LS 49367 "StoreDual"]), 49368 MU(LU, 49369 qTy)), 49370 Close 49371 (AVar 49372 uTy, 49373 MU(Call 49374 ("Store", 49375 CTy"instruction", 49376 Call 49377 ("StoreDual", 49378 CTy"Store", 49379 TP[EQ(Mop(Cast 49380 F1, 49381 LL[bVar"b'23"]), 49382 LW(1, 49383 1)), 49384 EQ(Var("P", 49385 F1), 49386 LW(1, 49387 1)), 49388 bVar"wback", 49389 Var("Rt", 49390 F4), 49391 Var("Rt2", 49392 F4), 49393 Var("Rn", 49394 F4), 49395 Call 49396 ("immediate_form2", 49397 CTy"offset2", 49398 Mop(Cast 49399 F32, 49400 CC[Mop(Cast 49401 F8, 49402 LL[bVar"b'7", 49403 bVar"b'6", 49404 bVar"b'5", 49405 bVar"b'4", 49406 bVar"b'3", 49407 bVar"b'2", 49408 bVar"b'1", 49409 bVar"b'0"]), 49410 LW(0, 49411 2)]))])), 49412 qTy)))), 49413 Call 49414 ("Skip", 49415 ATy(qTy, 49416 PTy(CTy"instruction", 49417 qTy)), 49418 LU)))))))))))), 49419 (Bop(And,Mop(Not,bVar"b'25"), 49420 Bop(And,bVar"b'22", 49421 Bop(And,bVar"b'20", 49422 Bop(And,bVar"b'19", 49423 Bop(And,bVar"b'18", 49424 Bop(And,bVar"b'17", 49425 bVar"b'16")))))), 49426 Let(Var("W",F1),Mop(Cast F1,LL[bVar"b'21"]), 49427 Let(Var("Rt2",F4), 49428 Mop(Cast F4, 49429 LL[bVar"b'11",bVar"b'10", 49430 bVar"b'9",bVar"b'8"]), 49431 Let(Var("Rt",F4), 49432 Mop(Cast F4, 49433 LL[bVar"b'15",bVar"b'14", 49434 bVar"b'13",bVar"b'12"]), 49435 MB(Call 49436 ("ThumbCondition", 49437 ATy(qTy,PTy(F4,qTy)),LU), 49438 Close 49439 (Var("v",F4), 49440 MB(MB(MB(Call 49441 ("HaveThumb2", 49442 ATy(qTy, 49443 PTy(bTy,qTy)), 49444 LU), 49445 Close 49446 (bVar"v0", 49447 MB(MU(Bop(And, 49448 Bop(Or, 49449 EQ(Mop(Cast 49450 F1, 49451 LL[bVar"b'24"]), 49452 LW(1, 49453 1)), 49454 EQ(Var("W", 49455 F1), 49456 LW(1, 49457 1))), 49458 bVar"v0"), 49459 qTy), 49460 Close 49461 (bVar"v0", 49462 MU(TP[Var("v", 49463 F4), 49464 bVar"v0"], 49465 qTy))))), 49466 Close 49467 (Var("v", 49468 PTy(F4,bTy)), 49469 Call 49470 ("Take", 49471 ATy(qTy, 49472 PTy(bTy,qTy)), 49473 Var("v", 49474 PTy(F4,bTy))))), 49475 Close 49476 (bVar"b", 49477 ITE(bVar"b", 49478 MB(ITE(Bop(Or, 49479 Bop(Or, 49480 Bop(Or, 49481 Bop(In, 49482 Var("Rt", 49483 F4), 49484 SL[LW(13, 49485 4), 49486 LW(15, 49487 4)]), 49488 Bop(In, 49489 Var("Rt2", 49490 F4), 49491 SL[LW(13, 49492 4), 49493 LW(15, 49494 4)])), 49495 EQ(Var("Rt", 49496 F4), 49497 Var("Rt2", 49498 F4))), 49499 EQ(Var("W", 49500 F1), 49501 LW(1, 49502 1))), 49503 Call 49504 ("DECODE_UNPREDICTABLE", 49505 ATy(qTy, 49506 PTy(uTy, 49507 qTy)), 49508 TP[Var("mc", 49509 CTy"MachineCode"), 49510 LS 49511 "LoadDual: literal"]), 49512 MU(LU,qTy)), 49513 Close 49514 (AVar uTy, 49515 MU(Call 49516 ("Load", 49517 CTy"instruction", 49518 Call 49519 ("LoadDualLiteral", 49520 CTy"Load", 49521 TP[EQ(Mop(Cast 49522 F1, 49523 LL[bVar"b'23"]), 49524 LW(1, 49525 1)), 49526 Var("Rt", 49527 F4), 49528 Var("Rt2", 49529 F4), 49530 Mop(Cast 49531 F32, 49532 CC[Mop(Cast 49533 F8, 49534 LL[bVar"b'7", 49535 bVar"b'6", 49536 bVar"b'5", 49537 bVar"b'4", 49538 bVar"b'3", 49539 bVar"b'2", 49540 bVar"b'1", 49541 bVar"b'0"]), 49542 LW(0, 49543 2)])])), 49544 qTy))), 49545 Call 49546 ("Skip", 49547 ATy(qTy, 49548 PTy(CTy"instruction", 49549 qTy)), 49550 LU)))))))))), 49551 (Bop(And,Mop(Not,bVar"b'25"), 49552 Bop(And,bVar"b'22",bVar"b'20")), 49553 Let(Var("Rn",F4), 49554 Mop(Cast F4, 49555 LL[bVar"b'19",bVar"b'18",bVar"b'17", 49556 bVar"b'16"]), 49557 Let(Var("W",F1), 49558 Mop(Cast F1,LL[bVar"b'21"]), 49559 Let(Var("P",F1), 49560 Mop(Cast F1,LL[bVar"b'24"]), 49561 Let(Var("Rt2",F4), 49562 Mop(Cast F4, 49563 LL[bVar"b'11",bVar"b'10", 49564 bVar"b'9",bVar"b'8"]), 49565 Let(Var("Rt",F4), 49566 Mop(Cast F4, 49567 LL[bVar"b'15", 49568 bVar"b'14", 49569 bVar"b'13", 49570 bVar"b'12"]), 49571 MB(Call 49572 ("ThumbCondition", 49573 ATy(qTy,PTy(F4,qTy)), 49574 LU), 49575 Close 49576 (Var("v",F4), 49577 MB(MB(MB(Call 49578 ("HaveThumb2", 49579 ATy(qTy, 49580 PTy(bTy, 49581 qTy)), 49582 LU), 49583 Close 49584 (bVar"v0", 49585 MB(MU(Bop(And, 49586 Bop(Or, 49587 EQ(Var("P", 49588 F1), 49589 LW(1, 49590 1)), 49591 EQ(Var("W", 49592 F1), 49593 LW(1, 49594 1))), 49595 bVar"v0"), 49596 qTy), 49597 Close 49598 (bVar"v0", 49599 MU(TP[Var("v", 49600 F4), 49601 bVar"v0"], 49602 qTy))))), 49603 Close 49604 (Var("v", 49605 PTy(F4, 49606 bTy)), 49607 Call 49608 ("Take", 49609 ATy(qTy, 49610 PTy(bTy, 49611 qTy)), 49612 Var("v", 49613 PTy(F4, 49614 bTy))))), 49615 Close 49616 (bVar"b", 49617 ITE(bVar"b", 49618 Let(bVar"wback", 49619 EQ(Var("W", 49620 F1), 49621 LW(1, 49622 1)), 49623 MB(ITE(Bop(Or, 49624 Bop(Or, 49625 Bop(Or, 49626 Bop(And, 49627 bVar"wback", 49628 Bop(Or, 49629 EQ(Var("Rn", 49630 F4), 49631 Var("Rt", 49632 F4)), 49633 EQ(Var("Rn", 49634 F4), 49635 Var("Rt2", 49636 F4)))), 49637 Bop(In, 49638 Var("Rt", 49639 F4), 49640 SL[LW(13, 49641 4), 49642 LW(15, 49643 4)])), 49644 Bop(In, 49645 Var("Rt2", 49646 F4), 49647 SL[LW(13, 49648 4), 49649 LW(15, 49650 4)])), 49651 EQ(Var("Rt", 49652 F4), 49653 Var("Rt2", 49654 F4))), 49655 Call 49656 ("DECODE_UNPREDICTABLE", 49657 ATy(qTy, 49658 PTy(uTy, 49659 qTy)), 49660 TP[Var("mc", 49661 CTy"MachineCode"), 49662 LS 49663 "LoadDual"]), 49664 MU(LU, 49665 qTy)), 49666 Close 49667 (AVar 49668 uTy, 49669 MU(Call 49670 ("Load", 49671 CTy"instruction", 49672 Call 49673 ("LoadDual", 49674 CTy"Load", 49675 TP[EQ(Mop(Cast 49676 F1, 49677 LL[bVar"b'23"]), 49678 LW(1, 49679 1)), 49680 EQ(Var("P", 49681 F1), 49682 LW(1, 49683 1)), 49684 bVar"wback", 49685 Var("Rt", 49686 F4), 49687 Var("Rt2", 49688 F4), 49689 Var("Rn", 49690 F4), 49691 Call 49692 ("immediate_form2", 49693 CTy"offset2", 49694 Mop(Cast 49695 F32, 49696 CC[Mop(Cast 49697 F8, 49698 LL[bVar"b'7", 49699 bVar"b'6", 49700 bVar"b'5", 49701 bVar"b'4", 49702 bVar"b'3", 49703 bVar"b'2", 49704 bVar"b'1", 49705 bVar"b'0"]), 49706 LW(0, 49707 2)]))])), 49708 qTy)))), 49709 Call 49710 ("Skip", 49711 ATy(qTy, 49712 PTy(CTy"instruction", 49713 qTy)), 49714 LU)))))))))))), 49715 (bVar"b'25", 49716 Let(Var("Rn",F4), 49717 Mop(Cast F4, 49718 LL[bVar"b'19",bVar"b'18",bVar"b'17", 49719 bVar"b'16"]), 49720 Let(Var("S",F1), 49721 Mop(Cast F1,LL[bVar"b'20"]), 49722 Let(Var("Rm",F4), 49723 Mop(Cast F4, 49724 LL[bVar"b'3",bVar"b'2", 49725 bVar"b'1",bVar"b'0"]), 49726 Let(Var("typ",FTy 2), 49727 Mop(Cast(FTy 2), 49728 LL[bVar"b'5",bVar"b'4"]), 49729 Let(Var("imm2",FTy 2), 49730 Mop(Cast(FTy 2), 49731 LL[bVar"b'7", 49732 bVar"b'6"]), 49733 Let(Var("Rd",F4), 49734 Mop(Cast F4, 49735 LL[bVar"b'11", 49736 bVar"b'10", 49737 bVar"b'9", 49738 bVar"b'8"]), 49739 Let(Var("imm3",FTy 3), 49740 Mop(Cast(FTy 3), 49741 LL[bVar"b'14", 49742 bVar"b'13", 49743 bVar"b'12"]), 49744 MB(Call 49745 ("ThumbCondition", 49746 ATy(qTy, 49747 PTy(F4, 49748 qTy)), 49749 LU), 49750 Close 49751 (Var("v",F4), 49752 MB(MB(MB(Call 49753 ("HaveThumb2", 49754 ATy(qTy, 49755 PTy(bTy, 49756 qTy)), 49757 LU), 49758 Close 49759 (bVar"v0", 49760 MU(TP[Var("v", 49761 F4), 49762 bVar"v0"], 49763 qTy))), 49764 Close 49765 (Var("v", 49766 PTy(F4, 49767 bTy)), 49768 Call 49769 ("Take", 49770 ATy(qTy, 49771 PTy(bTy, 49772 qTy)), 49773 Var("v", 49774 PTy(F4, 49775 bTy))))), 49776 Close 49777 (bVar"b", 49778 ITE(bVar"b", 49779 Let(TP[Var("shift_t", 49780 CTy"SRType"), 49781 nVar"shift_n"], 49782 Call 49783 ("DecodeImmShift", 49784 PTy(CTy"SRType", 49785 nTy), 49786 TP[Var("typ", 49787 FTy 2), 49788 CC[Var("imm3", 49789 FTy 3), 49790 Var("imm2", 49791 FTy 2)]]), 49792 Let(bVar"setflags", 49793 EQ(Var("S", 49794 F1), 49795 LW(1, 49796 1)), 49797 CS(TP[Mop(Cast 49798 F4, 49799 LL[bVar"b'24", 49800 bVar"b'23", 49801 bVar"b'22", 49802 bVar"b'21"]), 49803 Var("Rn", 49804 F4), 49805 Var("Rd", 49806 F4), 49807 Var("S", 49808 F1)], 49809 [(TP[LW(0, 49810 4), 49811 AVar 49812 F4, 49813 LW(15, 49814 4), 49815 LW(1, 49816 1)], 49817 MB(ITE(Bop(Or, 49818 Bop(In, 49819 Var("Rn", 49820 F4), 49821 SL[LW(13, 49822 4), 49823 LW(15, 49824 4)]), 49825 Bop(In, 49826 Var("Rm", 49827 F4), 49828 SL[LW(13, 49829 4), 49830 LW(15, 49831 4)])), 49832 Call 49833 ("DECODE_UNPREDICTABLE", 49834 ATy(qTy, 49835 PTy(uTy, 49836 qTy)), 49837 TP[Var("mc", 49838 CTy"MachineCode"), 49839 LS 49840 "TST (register)"]), 49841 MU(LU, 49842 qTy)), 49843 Close 49844 (AVar 49845 uTy, 49846 MU(Call 49847 ("Data", 49848 CTy"instruction", 49849 Call 49850 ("TestCompareRegister", 49851 CTy"Data", 49852 TP[LW(0, 49853 2), 49854 Var("Rn", 49855 F4), 49856 Var("Rm", 49857 F4), 49858 Var("shift_t", 49859 CTy"SRType"), 49860 nVar"shift_n"])), 49861 qTy)))), 49862 (TP[LW(0, 49863 4), 49864 AVar 49865 (PTy(F4, 49866 PTy(F4, 49867 F1)))], 49868 MB(ITE(Bop(Or, 49869 Bop(Or, 49870 Bop(Or, 49871 EQ(Var("Rd", 49872 F4), 49873 LW(13, 49874 4)), 49875 Bop(And, 49876 EQ(Var("Rd", 49877 F4), 49878 LW(15, 49879 4)), 49880 Mop(Not, 49881 bVar"setflags"))), 49882 Bop(In, 49883 Var("Rn", 49884 F4), 49885 SL[LW(13, 49886 4), 49887 LW(15, 49888 4)])), 49889 Bop(In, 49890 Var("Rm", 49891 F4), 49892 SL[LW(13, 49893 4), 49894 LW(15, 49895 4)])), 49896 Call 49897 ("DECODE_UNPREDICTABLE", 49898 ATy(qTy, 49899 PTy(uTy, 49900 qTy)), 49901 TP[Var("mc", 49902 CTy"MachineCode"), 49903 LS 49904 "AND (register)"]), 49905 MU(LU, 49906 qTy)), 49907 Close 49908 (AVar 49909 uTy, 49910 MU(Call 49911 ("Data", 49912 CTy"instruction", 49913 Call 49914 ("Register", 49915 CTy"Data", 49916 TP[LW(0, 49917 4), 49918 bVar"setflags", 49919 Var("Rd", 49920 F4), 49921 Var("Rn", 49922 F4), 49923 Var("Rm", 49924 F4), 49925 Var("shift_t", 49926 CTy"SRType"), 49927 nVar"shift_n"])), 49928 qTy)))), 49929 (TP[LW(1, 49930 4), 49931 AVar 49932 (PTy(F4, 49933 PTy(F4, 49934 F1)))], 49935 MB(ITE(Bop(Or, 49936 Bop(Or, 49937 Bop(In, 49938 Var("Rd", 49939 F4), 49940 SL[LW(13, 49941 4), 49942 LW(15, 49943 4)]), 49944 Bop(In, 49945 Var("Rn", 49946 F4), 49947 SL[LW(13, 49948 4), 49949 LW(15, 49950 4)])), 49951 Bop(In, 49952 Var("Rm", 49953 F4), 49954 SL[LW(13, 49955 4), 49956 LW(15, 49957 4)])), 49958 Call 49959 ("DECODE_UNPREDICTABLE", 49960 ATy(qTy, 49961 PTy(uTy, 49962 qTy)), 49963 TP[Var("mc", 49964 CTy"MachineCode"), 49965 LS 49966 "BIC (register)"]), 49967 MU(LU, 49968 qTy)), 49969 Close 49970 (AVar 49971 uTy, 49972 MU(Call 49973 ("Data", 49974 CTy"instruction", 49975 Call 49976 ("Register", 49977 CTy"Data", 49978 TP[LW(14, 49979 4), 49980 bVar"setflags", 49981 Var("Rd", 49982 F4), 49983 Var("Rn", 49984 F4), 49985 Var("Rm", 49986 F4), 49987 Var("shift_t", 49988 CTy"SRType"), 49989 nVar"shift_n"])), 49990 qTy)))), 49991 (TP[LW(2, 49992 4), 49993 LW(15, 49994 4), 49995 AVar 49996 (PTy(F4, 49997 F1))], 49998 MB(ITB([(Bop(And, 49999 Bop(And, 50000 EQ(Var("typ", 50001 FTy 2), 50002 LW(0, 50003 2)), 50004 EQ(Var("imm3", 50005 FTy 3), 50006 LW(0, 50007 3))), 50008 EQ(Var("imm2", 50009 FTy 2), 50010 LW(0, 50011 2))), 50012 ITE(Bop(Or, 50013 Bop(And, 50014 bVar"setflags", 50015 Bop(Or, 50016 Bop(In, 50017 Var("Rd", 50018 F4), 50019 SL[LW(13, 50020 4), 50021 LW(15, 50022 4)]), 50023 Bop(In, 50024 Var("Rm", 50025 F4), 50026 SL[LW(13, 50027 4), 50028 LW(15, 50029 4)]))), 50030 Bop(And, 50031 Mop(Not, 50032 bVar"setflags"), 50033 Bop(Or, 50034 Bop(Or, 50035 EQ(Var("Rd", 50036 F4), 50037 LW(15, 50038 4)), 50039 EQ(Var("Rm", 50040 F4), 50041 LW(15, 50042 4))), 50043 Bop(And, 50044 EQ(Var("Rd", 50045 F4), 50046 LW(13, 50047 4)), 50048 EQ(Var("Rm", 50049 F4), 50050 LW(13, 50051 4)))))), 50052 Call 50053 ("DECODE_UNPREDICTABLE", 50054 ATy(qTy, 50055 PTy(uTy, 50056 qTy)), 50057 TP[Var("mc", 50058 CTy"MachineCode"), 50059 LS 50060 "MOV (register)"]), 50061 MU(LU, 50062 qTy))), 50063 (Bop(Or, 50064 Bop(In, 50065 Var("Rd", 50066 F4), 50067 SL[LW(13, 50068 4), 50069 LW(15, 50070 4)]), 50071 Bop(In, 50072 Var("Rm", 50073 F4), 50074 SL[LW(13, 50075 4), 50076 LW(15, 50077 4)])), 50078 Call 50079 ("DECODE_UNPREDICTABLE", 50080 ATy(qTy, 50081 PTy(uTy, 50082 qTy)), 50083 TP[Var("mc", 50084 CTy"MachineCode"), 50085 LS 50086 "SHIFT (register)"]))], 50087 MU(LU, 50088 qTy)), 50089 Close 50090 (AVar 50091 uTy, 50092 MU(Call 50093 ("Data", 50094 CTy"instruction", 50095 Call 50096 ("ShiftImmediate", 50097 CTy"Data", 50098 TP[LF, 50099 bVar"setflags", 50100 Var("Rd", 50101 F4), 50102 Var("Rm", 50103 F4), 50104 Var("shift_t", 50105 CTy"SRType"), 50106 nVar"shift_n"])), 50107 qTy)))), 50108 (TP[LW(2, 50109 4), 50110 AVar 50111 (PTy(F4, 50112 PTy(F4, 50113 F1)))], 50114 MB(ITE(Bop(Or, 50115 Bop(Or, 50116 Bop(In, 50117 Var("Rd", 50118 F4), 50119 SL[LW(13, 50120 4), 50121 LW(15, 50122 4)]), 50123 EQ(Var("Rn", 50124 F4), 50125 LW(13, 50126 4))), 50127 Bop(In, 50128 Var("Rm", 50129 F4), 50130 SL[LW(13, 50131 4), 50132 LW(15, 50133 4)])), 50134 Call 50135 ("DECODE_UNPREDICTABLE", 50136 ATy(qTy, 50137 PTy(uTy, 50138 qTy)), 50139 TP[Var("mc", 50140 CTy"MachineCode"), 50141 LS 50142 "ORR (register)"]), 50143 MU(LU, 50144 qTy)), 50145 Close 50146 (AVar 50147 uTy, 50148 MU(Call 50149 ("Data", 50150 CTy"instruction", 50151 Call 50152 ("Register", 50153 CTy"Data", 50154 TP[LW(12, 50155 4), 50156 bVar"setflags", 50157 Var("Rd", 50158 F4), 50159 Var("Rn", 50160 F4), 50161 Var("Rm", 50162 F4), 50163 Var("shift_t", 50164 CTy"SRType"), 50165 nVar"shift_n"])), 50166 qTy)))), 50167 (TP[LW(3, 50168 4), 50169 LW(15, 50170 4), 50171 AVar 50172 (PTy(F4, 50173 F1))], 50174 MB(ITE(Bop(Or, 50175 Bop(In, 50176 Var("Rd", 50177 F4), 50178 SL[LW(13, 50179 4), 50180 LW(15, 50181 4)]), 50182 Bop(In, 50183 Var("Rm", 50184 F4), 50185 SL[LW(13, 50186 4), 50187 LW(15, 50188 4)])), 50189 Call 50190 ("DECODE_UNPREDICTABLE", 50191 ATy(qTy, 50192 PTy(uTy, 50193 qTy)), 50194 TP[Var("mc", 50195 CTy"MachineCode"), 50196 LS 50197 "MVN (register)"]), 50198 MU(LU, 50199 qTy)), 50200 Close 50201 (AVar 50202 uTy, 50203 MU(Call 50204 ("Data", 50205 CTy"instruction", 50206 Call 50207 ("ShiftImmediate", 50208 CTy"Data", 50209 TP[LT, 50210 bVar"setflags", 50211 Var("Rd", 50212 F4), 50213 Var("Rm", 50214 F4), 50215 Var("shift_t", 50216 CTy"SRType"), 50217 nVar"shift_n"])), 50218 qTy)))), 50219 (TP[LW(3, 50220 4), 50221 AVar 50222 (PTy(F4, 50223 PTy(F4, 50224 F1)))], 50225 MB(ITE(Bop(Or, 50226 Bop(Or, 50227 Bop(In, 50228 Var("Rd", 50229 F4), 50230 SL[LW(13, 50231 4), 50232 LW(15, 50233 4)]), 50234 EQ(Var("Rn", 50235 F4), 50236 LW(13, 50237 4))), 50238 Bop(In, 50239 Var("Rm", 50240 F4), 50241 SL[LW(13, 50242 4), 50243 LW(15, 50244 4)])), 50245 Call 50246 ("DECODE_UNPREDICTABLE", 50247 ATy(qTy, 50248 PTy(uTy, 50249 qTy)), 50250 TP[Var("mc", 50251 CTy"MachineCode"), 50252 LS 50253 "ORN (register)"]), 50254 MU(LU, 50255 qTy)), 50256 Close 50257 (AVar 50258 uTy, 50259 MU(Call 50260 ("Data", 50261 CTy"instruction", 50262 Call 50263 ("Register", 50264 CTy"Data", 50265 TP[LW(15, 50266 4), 50267 bVar"setflags", 50268 Var("Rd", 50269 F4), 50270 Var("Rn", 50271 F4), 50272 Var("Rm", 50273 F4), 50274 Var("shift_t", 50275 CTy"SRType"), 50276 nVar"shift_n"])), 50277 qTy)))), 50278 (TP[LW(4, 50279 4), 50280 AVar 50281 F4, 50282 LW(15, 50283 4), 50284 LW(1, 50285 1)], 50286 MB(ITE(Bop(Or, 50287 Bop(In, 50288 Var("Rn", 50289 F4), 50290 SL[LW(13, 50291 4), 50292 LW(15, 50293 4)]), 50294 Bop(In, 50295 Var("Rm", 50296 F4), 50297 SL[LW(13, 50298 4), 50299 LW(15, 50300 4)])), 50301 Call 50302 ("DECODE_UNPREDICTABLE", 50303 ATy(qTy, 50304 PTy(uTy, 50305 qTy)), 50306 TP[Var("mc", 50307 CTy"MachineCode"), 50308 LS 50309 "TEQ (register)"]), 50310 MU(LU, 50311 qTy)), 50312 Close 50313 (AVar 50314 uTy, 50315 MU(Call 50316 ("Data", 50317 CTy"instruction", 50318 Call 50319 ("TestCompareRegister", 50320 CTy"Data", 50321 TP[LW(1, 50322 2), 50323 Var("Rn", 50324 F4), 50325 Var("Rm", 50326 F4), 50327 Var("shift_t", 50328 CTy"SRType"), 50329 nVar"shift_n"])), 50330 qTy)))), 50331 (TP[LW(4, 50332 4), 50333 AVar 50334 (PTy(F4, 50335 PTy(F4, 50336 F1)))], 50337 MB(ITE(Bop(Or, 50338 Bop(Or, 50339 Bop(Or, 50340 EQ(Var("Rd", 50341 F4), 50342 LW(13, 50343 4)), 50344 Bop(And, 50345 EQ(Var("Rd", 50346 F4), 50347 LW(15, 50348 4)), 50349 Mop(Not, 50350 bVar"setflags"))), 50351 Bop(In, 50352 Var("Rn", 50353 F4), 50354 SL[LW(13, 50355 4), 50356 LW(15, 50357 4)])), 50358 Bop(In, 50359 Var("Rm", 50360 F4), 50361 SL[LW(13, 50362 4), 50363 LW(15, 50364 4)])), 50365 Call 50366 ("DECODE_UNPREDICTABLE", 50367 ATy(qTy, 50368 PTy(uTy, 50369 qTy)), 50370 TP[Var("mc", 50371 CTy"MachineCode"), 50372 LS 50373 "EOR (register)"]), 50374 MU(LU, 50375 qTy)), 50376 Close 50377 (AVar 50378 uTy, 50379 MU(Call 50380 ("Data", 50381 CTy"instruction", 50382 Call 50383 ("Register", 50384 CTy"Data", 50385 TP[LW(1, 50386 4), 50387 bVar"setflags", 50388 Var("Rd", 50389 F4), 50390 Var("Rn", 50391 F4), 50392 Var("Rm", 50393 F4), 50394 Var("shift_t", 50395 CTy"SRType"), 50396 nVar"shift_n"])), 50397 qTy)))), 50398 (TP[LW(6, 50399 4), 50400 AVar 50401 F4, 50402 AVar 50403 F4, 50404 LW(0, 50405 1)], 50406 ITE(Bop(Bit, 50407 Var("typ", 50408 FTy 2), 50409 LN 50410 0), 50411 MU(Call 50412 ("Undefined", 50413 CTy"instruction", 50414 LW(0, 50415 32)), 50416 qTy), 50417 MB(ITE(Bop(Or, 50418 Bop(Or, 50419 Bop(In, 50420 Var("Rd", 50421 F4), 50422 SL[LW(13, 50423 4), 50424 LW(15, 50425 4)]), 50426 Bop(In, 50427 Var("Rn", 50428 F4), 50429 SL[LW(13, 50430 4), 50431 LW(15, 50432 4)])), 50433 Bop(In, 50434 Var("Rm", 50435 F4), 50436 SL[LW(13, 50437 4), 50438 LW(15, 50439 4)])), 50440 Call 50441 ("DECODE_UNPREDICTABLE", 50442 ATy(qTy, 50443 PTy(uTy, 50444 qTy)), 50445 TP[Var("mc", 50446 CTy"MachineCode"), 50447 LS 50448 "PackHalfword"]), 50449 MU(LU, 50450 qTy)), 50451 Close 50452 (AVar 50453 uTy, 50454 MU(Call 50455 ("Media", 50456 CTy"instruction", 50457 Call 50458 ("PackHalfword", 50459 CTy"Media", 50460 TP[Var("shift_t", 50461 CTy"SRType"), 50462 nVar"shift_n", 50463 Bop(Bit, 50464 Var("typ", 50465 FTy 2), 50466 LN 50467 1), 50468 Var("Rd", 50469 F4), 50470 Var("Rn", 50471 F4), 50472 Var("Rm", 50473 F4)])), 50474 qTy))))), 50475 (TP[LW(8, 50476 4), 50477 AVar 50478 F4, 50479 LW(15, 50480 4), 50481 LW(1, 50482 1)], 50483 MB(ITE(Bop(Or, 50484 EQ(Var("Rn", 50485 F4), 50486 LW(15, 50487 4)), 50488 Bop(In, 50489 Var("Rm", 50490 F4), 50491 SL[LW(13, 50492 4), 50493 LW(15, 50494 4)])), 50495 Call 50496 ("DECODE_UNPREDICTABLE", 50497 ATy(qTy, 50498 PTy(uTy, 50499 qTy)), 50500 TP[Var("mc", 50501 CTy"MachineCode"), 50502 LS 50503 "CMN (register)"]), 50504 MU(LU, 50505 qTy)), 50506 Close 50507 (AVar 50508 uTy, 50509 MU(Call 50510 ("Data", 50511 CTy"instruction", 50512 Call 50513 ("TestCompareRegister", 50514 CTy"Data", 50515 TP[LW(3, 50516 2), 50517 Var("Rn", 50518 F4), 50519 Var("Rm", 50520 F4), 50521 Var("shift_t", 50522 CTy"SRType"), 50523 nVar"shift_n"])), 50524 qTy)))), 50525 (TP[LW(8, 50526 4), 50527 AVar 50528 (PTy(F4, 50529 PTy(F4, 50530 F1)))], 50531 MB(ITE(Bop(Or, 50532 Bop(Or, 50533 Bop(Or, 50534 EQ(Var("Rd", 50535 F4), 50536 LW(13, 50537 4)), 50538 Bop(And, 50539 EQ(Var("Rd", 50540 F4), 50541 LW(15, 50542 4)), 50543 Mop(Not, 50544 bVar"setflags"))), 50545 EQ(Var("Rn", 50546 F4), 50547 LW(15, 50548 4))), 50549 Bop(In, 50550 Var("Rm", 50551 F4), 50552 SL[LW(13, 50553 4), 50554 LW(15, 50555 4)])), 50556 Call 50557 ("DECODE_UNPREDICTABLE", 50558 ATy(qTy, 50559 PTy(uTy, 50560 qTy)), 50561 TP[Var("mc", 50562 CTy"MachineCode"), 50563 LS 50564 "ADD (register)"]), 50565 MU(LU, 50566 qTy)), 50567 Close 50568 (AVar 50569 uTy, 50570 MU(Let(TP[Var("shift_t", 50571 CTy"SRType"), 50572 nVar"shift_n"], 50573 Call 50574 ("DecodeImmShift", 50575 PTy(CTy"SRType", 50576 nTy), 50577 TP[Var("typ", 50578 FTy 2), 50579 CC[Var("imm3", 50580 FTy 3), 50581 Var("imm2", 50582 FTy 2)]]), 50583 Call 50584 ("Data", 50585 CTy"instruction", 50586 Call 50587 ("Register", 50588 CTy"Data", 50589 TP[LW(4, 50590 4), 50591 bVar"setflags", 50592 Var("Rd", 50593 F4), 50594 Var("Rn", 50595 F4), 50596 Var("Rm", 50597 F4), 50598 Var("shift_t", 50599 CTy"SRType"), 50600 nVar"shift_n"]))), 50601 qTy)))), 50602 (TP[LW(10, 50603 4), 50604 AVar 50605 (PTy(F4, 50606 PTy(F4, 50607 F1)))], 50608 MB(ITE(Bop(Or, 50609 Bop(Or, 50610 Bop(In, 50611 Var("Rd", 50612 F4), 50613 SL[LW(13, 50614 4), 50615 LW(15, 50616 4)]), 50617 Bop(In, 50618 Var("Rn", 50619 F4), 50620 SL[LW(13, 50621 4), 50622 LW(15, 50623 4)])), 50624 Bop(In, 50625 Var("Rm", 50626 F4), 50627 SL[LW(13, 50628 4), 50629 LW(15, 50630 4)])), 50631 Call 50632 ("DECODE_UNPREDICTABLE", 50633 ATy(qTy, 50634 PTy(uTy, 50635 qTy)), 50636 TP[Var("mc", 50637 CTy"MachineCode"), 50638 LS 50639 "ADC (register)"]), 50640 MU(LU, 50641 qTy)), 50642 Close 50643 (AVar 50644 uTy, 50645 MU(Call 50646 ("Data", 50647 CTy"instruction", 50648 Call 50649 ("Register", 50650 CTy"Data", 50651 TP[LW(5, 50652 4), 50653 bVar"setflags", 50654 Var("Rd", 50655 F4), 50656 Var("Rn", 50657 F4), 50658 Var("Rm", 50659 F4), 50660 Var("shift_t", 50661 CTy"SRType"), 50662 nVar"shift_n"])), 50663 qTy)))), 50664 (TP[LW(11, 50665 4), 50666 AVar 50667 (PTy(F4, 50668 PTy(F4, 50669 F1)))], 50670 MB(ITE(Bop(Or, 50671 Bop(Or, 50672 Bop(In, 50673 Var("Rd", 50674 F4), 50675 SL[LW(13, 50676 4), 50677 LW(15, 50678 4)]), 50679 Bop(In, 50680 Var("Rn", 50681 F4), 50682 SL[LW(13, 50683 4), 50684 LW(15, 50685 4)])), 50686 Bop(In, 50687 Var("Rm", 50688 F4), 50689 SL[LW(13, 50690 4), 50691 LW(15, 50692 4)])), 50693 Call 50694 ("DECODE_UNPREDICTABLE", 50695 ATy(qTy, 50696 PTy(uTy, 50697 qTy)), 50698 TP[Var("mc", 50699 CTy"MachineCode"), 50700 LS 50701 "SBC (register)"]), 50702 MU(LU, 50703 qTy)), 50704 Close 50705 (AVar 50706 uTy, 50707 MU(Call 50708 ("Data", 50709 CTy"instruction", 50710 Call 50711 ("Register", 50712 CTy"Data", 50713 TP[LW(6, 50714 4), 50715 bVar"setflags", 50716 Var("Rd", 50717 F4), 50718 Var("Rn", 50719 F4), 50720 Var("Rm", 50721 F4), 50722 Var("shift_t", 50723 CTy"SRType"), 50724 nVar"shift_n"])), 50725 qTy)))), 50726 (TP[LW(13, 50727 4), 50728 AVar 50729 F4, 50730 LW(15, 50731 4), 50732 LW(1, 50733 1)], 50734 MB(ITE(Bop(Or, 50735 EQ(Var("Rn", 50736 F4), 50737 LW(15, 50738 4)), 50739 Bop(In, 50740 Var("Rm", 50741 F4), 50742 SL[LW(13, 50743 4), 50744 LW(15, 50745 4)])), 50746 Call 50747 ("DECODE_UNPREDICTABLE", 50748 ATy(qTy, 50749 PTy(uTy, 50750 qTy)), 50751 TP[Var("mc", 50752 CTy"MachineCode"), 50753 LS 50754 "CMP (register)"]), 50755 MU(LU, 50756 qTy)), 50757 Close 50758 (AVar 50759 uTy, 50760 MU(Call 50761 ("Data", 50762 CTy"instruction", 50763 Call 50764 ("TestCompareRegister", 50765 CTy"Data", 50766 TP[LW(2, 50767 2), 50768 Var("Rn", 50769 F4), 50770 Var("Rm", 50771 F4), 50772 Var("shift_t", 50773 CTy"SRType"), 50774 nVar"shift_n"])), 50775 qTy)))), 50776 (TP[LW(13, 50777 4), 50778 AVar 50779 (PTy(F4, 50780 PTy(F4, 50781 F1)))], 50782 MB(ITE(Bop(Or, 50783 Bop(Or, 50784 Bop(Or, 50785 EQ(Var("Rd", 50786 F4), 50787 LW(13, 50788 4)), 50789 Bop(And, 50790 EQ(Var("Rd", 50791 F4), 50792 LW(15, 50793 4)), 50794 Mop(Not, 50795 bVar"setflags"))), 50796 EQ(Var("Rn", 50797 F4), 50798 LW(15, 50799 4))), 50800 Bop(In, 50801 Var("Rm", 50802 F4), 50803 SL[LW(13, 50804 4), 50805 LW(15, 50806 4)])), 50807 Call 50808 ("DECODE_UNPREDICTABLE", 50809 ATy(qTy, 50810 PTy(uTy, 50811 qTy)), 50812 TP[Var("mc", 50813 CTy"MachineCode"), 50814 LS 50815 "SUB (register)"]), 50816 MU(LU, 50817 qTy)), 50818 Close 50819 (AVar 50820 uTy, 50821 MU(Call 50822 ("Data", 50823 CTy"instruction", 50824 Call 50825 ("Register", 50826 CTy"Data", 50827 TP[LW(2, 50828 4), 50829 bVar"setflags", 50830 Var("Rd", 50831 F4), 50832 Var("Rn", 50833 F4), 50834 Var("Rm", 50835 F4), 50836 Var("shift_t", 50837 CTy"SRType"), 50838 nVar"shift_n"])), 50839 qTy)))), 50840 (TP[LW(14, 50841 4), 50842 AVar 50843 (PTy(F4, 50844 PTy(F4, 50845 F1)))], 50846 MB(ITE(Bop(Or, 50847 Bop(Or, 50848 Bop(In, 50849 Var("Rd", 50850 F4), 50851 SL[LW(13, 50852 4), 50853 LW(15, 50854 4)]), 50855 Bop(In, 50856 Var("Rn", 50857 F4), 50858 SL[LW(13, 50859 4), 50860 LW(15, 50861 4)])), 50862 Bop(In, 50863 Var("Rm", 50864 F4), 50865 SL[LW(13, 50866 4), 50867 LW(15, 50868 4)])), 50869 Call 50870 ("DECODE_UNPREDICTABLE", 50871 ATy(qTy, 50872 PTy(uTy, 50873 qTy)), 50874 TP[Var("mc", 50875 CTy"MachineCode"), 50876 LS 50877 "RSB (register)"]), 50878 MU(LU, 50879 qTy)), 50880 Close 50881 (AVar 50882 uTy, 50883 MU(Call 50884 ("Data", 50885 CTy"instruction", 50886 Call 50887 ("Register", 50888 CTy"Data", 50889 TP[LW(3, 50890 4), 50891 bVar"setflags", 50892 Var("Rd", 50893 F4), 50894 Var("Rn", 50895 F4), 50896 Var("Rm", 50897 F4), 50898 Var("shift_t", 50899 CTy"SRType"), 50900 nVar"shift_n"])), 50901 qTy)))), 50902 (AVar 50903 (PTy(F4, 50904 PTy(F4, 50905 PTy(F4, 50906 F1)))), 50907 MU(Call 50908 ("Undefined", 50909 CTy"instruction", 50910 LW(0, 50911 32)), 50912 qTy))]))), 50913 Call 50914 ("Skip", 50915 ATy(qTy, 50916 PTy(CTy"instruction", 50917 qTy)), 50918 LU))))))))))))))], 50919 Call 50920 ("UndefinedThumb", 50921 ATy(qTy,PTy(CTy"instruction",qTy)),LU)))], 50922 Call 50923 ("UndefinedThumb", 50924 ATy(qTy,PTy(CTy"instruction",qTy)),LU))), 50925 (bVar"b'15", 50926 ITE(Bop(And,bVar"b'31", 50927 Bop(And,bVar"b'30",Bop(And,bVar"b'29",bVar"b'28"))), 50928 ITB([(Bop(And,Mop(Not,bVar"b'26"), 50929 Bop(And,bVar"b'25", 50930 Bop(And,bVar"b'24", 50931 Bop(And,bVar"b'23", 50932 Bop(And,Mop(Not,bVar"b'22"), 50933 Bop(And, 50934 Mop(Not,bVar"b'21"), 50935 Bop(And, 50936 Mop(Not,bVar"b'14"), 50937 Bop(And, 50938 Mop(Not, 50939 bVar"b'12"), 50940 bVar"b'5")))))))), 50941 Let(Var("Rn",F4), 50942 Mop(Cast F4, 50943 LL[bVar"b'19",bVar"b'18",bVar"b'17", 50944 bVar"b'16"]), 50945 MB(Call 50946 ("ThumbCondition", 50947 ATy(qTy,PTy(F4,qTy)),LU), 50948 Close 50949 (Var("v",F4), 50950 MB(MB(MB(Call 50951 ("HaveVirtExt", 50952 ATy(qTy,PTy(bTy,qTy)),LU), 50953 Close 50954 (bVar"v0", 50955 MU(TP[Var("v",F4), 50956 bVar"v0"],qTy))), 50957 Close 50958 (Var("v",PTy(F4,bTy)), 50959 Call 50960 ("Take", 50961 ATy(qTy,PTy(bTy,qTy)), 50962 Var("v",PTy(F4,bTy))))), 50963 Close 50964 (bVar"b", 50965 ITE(bVar"b", 50966 MB(ITE(Bop(In,Var("Rn",F4), 50967 SL[LW(13,4), 50968 LW(15,4)]), 50969 Call 50970 ("DECODE_UNPREDICTABLE", 50971 ATy(qTy, 50972 PTy(uTy,qTy)), 50973 TP[Var("mc", 50974 CTy"MachineCode"), 50975 LS 50976 "MoveToBankedOrSpecialRegister"]), 50977 MU(LU,qTy)), 50978 Close 50979 (AVar uTy, 50980 MU(Call 50981 ("System", 50982 CTy"instruction", 50983 Call 50984 ("MoveToBankedOrSpecialRegister", 50985 CTy"System", 50986 TP[EQ(Mop(Cast 50987 F1, 50988 LL[bVar"b'20"]), 50989 LW(1,1)), 50990 CC[Mop(Cast 50991 F1, 50992 LL[bVar"b'4"]), 50993 Mop(Cast 50994 F4, 50995 LL[bVar"b'11", 50996 bVar"b'10", 50997 bVar"b'9", 50998 bVar"b'8"])], 50999 Var("Rn", 51000 F4)])), 51001 qTy))), 51002 Call 51003 ("Skip", 51004 ATy(qTy, 51005 PTy(CTy"instruction", 51006 qTy)),LU)))))))), 51007 (Bop(And,Mop(Not,bVar"b'26"), 51008 Bop(And,bVar"b'25", 51009 Bop(And,bVar"b'24", 51010 Bop(And,bVar"b'23", 51011 Bop(And,Mop(Not,bVar"b'22"), 51012 Bop(And, 51013 Mop(Not,bVar"b'21"), 51014 Bop(And, 51015 Mop(Not,bVar"b'14"), 51016 Bop(And, 51017 Mop(Not, 51018 bVar"b'12"), 51019 Mop(Not, 51020 bVar"b'5"))))))))), 51021 Let(Var("Rn",F4), 51022 Mop(Cast F4, 51023 LL[bVar"b'19",bVar"b'18",bVar"b'17", 51024 bVar"b'16"]), 51025 Let(Var("mask",F4), 51026 Mop(Cast F4, 51027 LL[bVar"b'11",bVar"b'10",bVar"b'9", 51028 bVar"b'8"]), 51029 MB(Call 51030 ("ThumbCondition", 51031 ATy(qTy,PTy(F4,qTy)),LU), 51032 Close 51033 (Var("v",F4), 51034 MB(MB(MB(Call 51035 ("HaveThumb2", 51036 ATy(qTy,PTy(bTy,qTy)), 51037 LU), 51038 Close 51039 (bVar"v0", 51040 MU(TP[Var("v",F4), 51041 bVar"v0"],qTy))), 51042 Close 51043 (Var("v",PTy(F4,bTy)), 51044 Call 51045 ("Take", 51046 ATy(qTy,PTy(bTy,qTy)), 51047 Var("v",PTy(F4,bTy))))), 51048 Close 51049 (bVar"b", 51050 ITE(bVar"b", 51051 MB(ITE(Bop(Or, 51052 EQ(Var("mask", 51053 F4), 51054 LW(0,4)), 51055 Bop(In, 51056 Var("Rn", 51057 F4), 51058 SL[LW(13, 51059 4), 51060 LW(15, 51061 4)])), 51062 Call 51063 ("DECODE_UNPREDICTABLE", 51064 ATy(qTy, 51065 PTy(uTy, 51066 qTy)), 51067 TP[Var("mc", 51068 CTy"MachineCode"), 51069 LS 51070 "MoveToSpecialFromRegister"]), 51071 MU(LU,qTy)), 51072 Close 51073 (AVar uTy, 51074 MU(Call 51075 ("System", 51076 CTy"instruction", 51077 Call 51078 ("MoveToSpecialFromRegister", 51079 CTy"System", 51080 TP[EQ(Mop(Cast 51081 F1, 51082 LL[bVar"b'20"]), 51083 LW(1, 51084 1)), 51085 Var("Rn", 51086 F4), 51087 Var("mask", 51088 F4)])), 51089 qTy))), 51090 Call 51091 ("Skip", 51092 ATy(qTy, 51093 PTy(CTy"instruction", 51094 qTy)),LU))))))))), 51095 (Bop(And,Mop(Not,bVar"b'26"), 51096 Bop(And,bVar"b'25", 51097 Bop(And,bVar"b'24", 51098 Bop(And,bVar"b'23", 51099 Bop(And,Mop(Not,bVar"b'22"), 51100 Bop(And,bVar"b'21", 51101 Bop(And, 51102 Mop(Not,bVar"b'20"), 51103 Bop(And, 51104 Mop(Not, 51105 bVar"b'14"), 51106 Bop(And, 51107 Mop(Not, 51108 bVar"b'12"), 51109 Bop(And, 51110 Mop(Not, 51111 bVar"b'10"), 51112 Bop(And, 51113 Mop(Not, 51114 bVar"b'9"), 51115 Mop(Not, 51116 bVar"b'8")))))))))))), 51117 MB(Call 51118 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 51119 Close 51120 (Var("v",F4), 51121 MB(MU(TP[Var("v",F4), 51122 Mop(Cast F8, 51123 LL[bVar"b'7",bVar"b'6", 51124 bVar"b'5",bVar"b'4", 51125 bVar"b'3",bVar"b'2", 51126 bVar"b'1",bVar"b'0"])], 51127 qTy), 51128 Close 51129 (Var("v",PTy(F4,F8)), 51130 Call 51131 ("DecodeHint", 51132 ATy(qTy, 51133 PTy(CTy"instruction",qTy)), 51134 Var("v",PTy(F4,F8)))))))), 51135 (Bop(And,Mop(Not,bVar"b'26"), 51136 Bop(And,bVar"b'25", 51137 Bop(And,bVar"b'24", 51138 Bop(And,bVar"b'23", 51139 Bop(And,Mop(Not,bVar"b'22"), 51140 Bop(And,bVar"b'21", 51141 Bop(And, 51142 Mop(Not,bVar"b'20"), 51143 Bop(And, 51144 Mop(Not, 51145 bVar"b'14"), 51146 Mop(Not, 51147 bVar"b'12"))))))))), 51148 Let(Var("mode",FTy 5), 51149 Mop(Cast(FTy 5), 51150 LL[bVar"b'4",bVar"b'3",bVar"b'2", 51151 bVar"b'1",bVar"b'0"]), 51152 Let(Var("F",F1),Mop(Cast F1,LL[bVar"b'5"]), 51153 Let(Var("I",F1), 51154 Mop(Cast F1,LL[bVar"b'6"]), 51155 Let(Var("A",F1), 51156 Mop(Cast F1,LL[bVar"b'7"]), 51157 Let(Var("M",F1), 51158 Mop(Cast F1,LL[bVar"b'8"]), 51159 Let(Var("imod",FTy 2), 51160 Mop(Cast(FTy 2), 51161 LL[bVar"b'10", 51162 bVar"b'9"]), 51163 MB(Call 51164 ("ThumbCondition", 51165 ATy(qTy, 51166 PTy(F4,qTy)), 51167 LU), 51168 Close 51169 (Var("v",F4), 51170 MB(MB(MB(Call 51171 ("HaveThumb2", 51172 ATy(qTy, 51173 PTy(bTy, 51174 qTy)), 51175 LU), 51176 Close 51177 (bVar"v0", 51178 MU(TP[Var("v", 51179 F4), 51180 bVar"v0"], 51181 qTy))), 51182 Close 51183 (Var("v", 51184 PTy(F4, 51185 bTy)), 51186 Call 51187 ("Take", 51188 ATy(qTy, 51189 PTy(bTy, 51190 qTy)), 51191 Var("v", 51192 PTy(F4, 51193 bTy))))), 51194 Close 51195 (bVar"b", 51196 ITE(bVar"b", 51197 MB(Call 51198 ("InITBlock", 51199 ATy(qTy, 51200 PTy(bTy, 51201 qTy)), 51202 LU), 51203 Close 51204 (bVar"v", 51205 MB(MB(MU(Bop(Or, 51206 Bop(Or, 51207 Bop(Or, 51208 Bop(And, 51209 Mop(Not, 51210 EQ(Var("mode", 51211 FTy 5), 51212 LW(0, 51213 5))), 51214 EQ(Var("M", 51215 F1), 51216 LW(0, 51217 1))), 51218 EQ(Bop(Bit, 51219 Var("imod", 51220 FTy 2), 51221 LN 51222 1), 51223 EQ(CC[Var("A", 51224 F1), 51225 Var("I", 51226 F1), 51227 Var("F", 51228 F1)], 51229 LW(0, 51230 3)))), 51231 EQ(Var("imod", 51232 FTy 2), 51233 LW(1, 51234 2))), 51235 bVar"v"), 51236 qTy), 51237 Close 51238 (bVar"b", 51239 ITE(bVar"b", 51240 Call 51241 ("DECODE_UNPREDICTABLE", 51242 ATy(qTy, 51243 PTy(uTy, 51244 qTy)), 51245 TP[Var("mc", 51246 CTy"MachineCode"), 51247 LS 51248 "ChangeProcessorState"]), 51249 MU(LU, 51250 qTy)))), 51251 Close 51252 (AVar 51253 uTy, 51254 MU(Call 51255 ("System", 51256 CTy"instruction", 51257 Call 51258 ("ChangeProcessorState", 51259 CTy"System", 51260 TP[EQ(Var("imod", 51261 FTy 2), 51262 LW(2, 51263 2)), 51264 EQ(Var("imod", 51265 FTy 2), 51266 LW(3, 51267 2)), 51268 EQ(Var("A", 51269 F1), 51270 LW(1, 51271 1)), 51272 EQ(Var("I", 51273 F1), 51274 LW(1, 51275 1)), 51276 EQ(Var("F", 51277 F1), 51278 LW(1, 51279 1)), 51280 EQ(Var("M", 51281 F1), 51282 LW(1, 51283 1)), 51284 Var("mode", 51285 FTy 5)])), 51286 qTy))))), 51287 Call 51288 ("Skip", 51289 ATy(qTy, 51290 PTy(CTy"instruction", 51291 qTy)), 51292 LU))))))))))))), 51293 (Bop(And,Mop(Not,bVar"b'26"), 51294 Bop(And,bVar"b'25", 51295 Bop(And,bVar"b'24", 51296 Bop(And,bVar"b'23", 51297 Bop(And,Mop(Not,bVar"b'22"), 51298 Bop(And,bVar"b'21", 51299 Bop(And,bVar"b'20", 51300 Bop(And, 51301 Mop(Not, 51302 bVar"b'14"), 51303 Bop(And, 51304 Mop(Not, 51305 bVar"b'12"), 51306 Bop(And, 51307 Mop(Not, 51308 bVar"b'7"), 51309 Bop(And, 51310 Mop(Not, 51311 bVar"b'6"), 51312 Mop(Not, 51313 bVar"b'5")))))))))))), 51314 Let(Var("J",F1),Mop(Cast F1,LL[bVar"b'4"]), 51315 MB(Call 51316 ("ThumbCondition", 51317 ATy(qTy,PTy(F4,qTy)),LU), 51318 Close 51319 (Var("v",F4), 51320 MB(MB(MB(MB(Call 51321 ("HaveThumbEE", 51322 ATy(qTy,PTy(bTy,qTy)), 51323 LU), 51324 Close 51325 (bVar"v0", 51326 MU(TP[Var("v",F4), 51327 bVar"v0"],qTy))), 51328 Close 51329 (Var("v",PTy(F4,bTy)), 51330 Call 51331 ("Take", 51332 ATy(qTy,PTy(bTy,qTy)), 51333 Var("v",PTy(F4,bTy))))), 51334 Close 51335 (bVar"b", 51336 ITE(bVar"b", 51337 MB(Call 51338 ("CurrentInstrSet", 51339 ATy(qTy, 51340 PTy(CTy"InstrSet", 51341 qTy)),LU), 51342 Close 51343 (Var("v", 51344 CTy"InstrSet"), 51345 MB(MB(MU(EQ(Var("v", 51346 CTy"InstrSet"), 51347 LC("InstrSet_Thumb", 51348 CTy"InstrSet")), 51349 qTy), 51350 Close 51351 (bVar"b", 51352 MU(Bop(And, 51353 bVar"b", 51354 EQ(Var("J", 51355 F1), 51356 LW(0, 51357 1))), 51358 qTy))), 51359 Close 51360 (bVar"v", 51361 MU(Mop(Not, 51362 bVar"v"), 51363 qTy))))), 51364 MU(LF,qTy)))), 51365 Close 51366 (bVar"b", 51367 ITE(bVar"b", 51368 MB(Call 51369 ("InITBlock", 51370 ATy(qTy,PTy(bTy,qTy)), 51371 LU), 51372 Close 51373 (bVar"v", 51374 MB(ITE(bVar"v", 51375 Call 51376 ("DECODE_UNPREDICTABLE", 51377 ATy(qTy, 51378 PTy(uTy, 51379 qTy)), 51380 TP[Var("mc", 51381 CTy"MachineCode"), 51382 LS 51383 "EnterxLeavex"]), 51384 MU(LU,qTy)), 51385 Close 51386 (AVar uTy, 51387 MU(Call 51388 ("System", 51389 CTy"instruction", 51390 Call 51391 ("EnterxLeavex", 51392 CTy"System", 51393 EQ(Var("J", 51394 F1), 51395 LW(1, 51396 1)))), 51397 qTy))))), 51398 Call 51399 ("Skip", 51400 ATy(qTy, 51401 PTy(CTy"instruction", 51402 qTy)),LU)))))))), 51403 (Bop(And,Mop(Not,bVar"b'26"), 51404 Bop(And,bVar"b'25", 51405 Bop(And,bVar"b'24", 51406 Bop(And,bVar"b'23", 51407 Bop(And,Mop(Not,bVar"b'22"), 51408 Bop(And,bVar"b'21", 51409 Bop(And,bVar"b'20", 51410 Bop(And, 51411 Mop(Not, 51412 bVar"b'14"), 51413 Mop(Not, 51414 bVar"b'12"))))))))), 51415 Let(Var("option",F4), 51416 Mop(Cast F4, 51417 LL[bVar"b'3",bVar"b'2",bVar"b'1", 51418 bVar"b'0"]), 51419 MB(Call 51420 ("ThumbCondition", 51421 ATy(qTy,PTy(F4,qTy)),LU), 51422 Close 51423 (Var("v",F4), 51424 MB(MB(MB(Call 51425 ("HaveThumb2", 51426 ATy(qTy,PTy(bTy,qTy)),LU), 51427 Close 51428 (bVar"v0", 51429 MU(TP[Var("v",F4), 51430 bVar"v0"],qTy))), 51431 Close 51432 (Var("v",PTy(F4,bTy)), 51433 Call 51434 ("Take", 51435 ATy(qTy,PTy(bTy,qTy)), 51436 Var("v",PTy(F4,bTy))))), 51437 Close 51438 (bVar"b", 51439 ITE(bVar"b", 51440 CS(Mop(Cast F4, 51441 LL[bVar"b'7", 51442 bVar"b'6", 51443 bVar"b'5", 51444 bVar"b'4"]), 51445 [(LW(2,4), 51446 MU(Const 51447 ("ClearExclusive", 51448 CTy"instruction"), 51449 qTy)), 51450 (LW(4,4), 51451 MU(Call 51452 ("Hint", 51453 CTy"instruction", 51454 Call 51455 ("DataSynchronizationBarrier", 51456 CTy"Hint", 51457 Var("option", 51458 F4))),qTy)), 51459 (LW(5,4), 51460 MU(Call 51461 ("Hint", 51462 CTy"instruction", 51463 Call 51464 ("DataMemoryBarrier", 51465 CTy"Hint", 51466 Var("option", 51467 F4))),qTy)), 51468 (LW(6,4), 51469 MU(Call 51470 ("Hint", 51471 CTy"instruction", 51472 Call 51473 ("InstructionSynchronizationBarrier", 51474 CTy"Hint", 51475 Var("option", 51476 F4))),qTy)), 51477 (AVar F4, 51478 MB(Call 51479 ("ArchVersion", 51480 ATy(qTy, 51481 PTy(nTy,qTy)), 51482 LU), 51483 Close 51484 (nVar"v", 51485 MB(MU(Bop(Ge, 51486 nVar"v", 51487 LN 7), 51488 qTy), 51489 Close 51490 (bVar"b", 51491 ITE(bVar"b", 51492 MU(Call 51493 ("Undefined", 51494 CTy"instruction", 51495 LW(0, 51496 32)), 51497 qTy), 51498 MB(Call 51499 ("DECODE_UNPREDICTABLE", 51500 ATy(qTy, 51501 PTy(uTy, 51502 qTy)), 51503 TP[Var("mc", 51504 CTy"MachineCode"), 51505 LS 51506 "Miscellaneous control"]), 51507 Close 51508 (AVar 51509 uTy, 51510 MU(LX(CTy"instruction"), 51511 qTy)))))))))]), 51512 Call 51513 ("Skip", 51514 ATy(qTy, 51515 PTy(CTy"instruction", 51516 qTy)),LU)))))))), 51517 (Bop(And,Mop(Not,bVar"b'26"), 51518 Bop(And,bVar"b'25", 51519 Bop(And,bVar"b'24", 51520 Bop(And,bVar"b'23", 51521 Bop(And,bVar"b'22", 51522 Bop(And, 51523 Mop(Not,bVar"b'21"), 51524 Bop(And,bVar"b'20", 51525 Bop(And, 51526 Mop(Not, 51527 bVar"b'14"), 51528 Mop(Not, 51529 bVar"b'12"))))))))), 51530 Let(Var("imm8",F8), 51531 Mop(Cast F8, 51532 LL[bVar"b'7",bVar"b'6",bVar"b'5", 51533 bVar"b'4",bVar"b'3",bVar"b'2", 51534 bVar"b'1",bVar"b'0"]), 51535 MB(Call 51536 ("ThumbCondition", 51537 ATy(qTy,PTy(F4,qTy)),LU), 51538 Close 51539 (Var("v",F4), 51540 MB(MB(MB(Call 51541 ("HaveThumb2", 51542 ATy(qTy,PTy(bTy,qTy)),LU), 51543 Close 51544 (bVar"v0", 51545 MU(TP[Var("v",F4), 51546 bVar"v0"],qTy))), 51547 Close 51548 (Var("v",PTy(F4,bTy)), 51549 Call 51550 ("Take", 51551 ATy(qTy,PTy(bTy,qTy)), 51552 Var("v",PTy(F4,bTy))))), 51553 Close 51554 (bVar"b", 51555 ITE(bVar"b", 51556 MB(Call 51557 ("HaveVirtExt", 51558 ATy(qTy,PTy(bTy,qTy)), 51559 LU), 51560 Close 51561 (bVar"v", 51562 MB(MU(Bop(And, 51563 bVar"v", 51564 EQ(Var("imm8", 51565 F8), 51566 LW(0,8))), 51567 qTy), 51568 Close 51569 (bVar"b", 51570 ITE(bVar"b", 51571 MU(Call 51572 ("System", 51573 CTy"instruction", 51574 Const 51575 ("ExceptionReturn", 51576 CTy"System")), 51577 qTy), 51578 MB(Call 51579 ("CurrentInstrSet", 51580 ATy(qTy, 51581 PTy(CTy"InstrSet", 51582 qTy)), 51583 LU), 51584 Close 51585 (Var("v", 51586 CTy"InstrSet"), 51587 MB(MB(MB(MU(EQ(Var("v", 51588 CTy"InstrSet"), 51589 LC("InstrSet_ThumbEE", 51590 CTy"InstrSet")), 51591 qTy), 51592 Close 51593 (bVar"b", 51594 ITE(bVar"b", 51595 MU(LT, 51596 qTy), 51597 MB(Call 51598 ("InITBlock", 51599 ATy(qTy, 51600 PTy(bTy, 51601 qTy)), 51602 LU), 51603 Close 51604 (bVar"b", 51605 ITE(bVar"b", 51606 MB(Call 51607 ("LastInITBlock", 51608 ATy(qTy, 51609 PTy(bTy, 51610 qTy)), 51611 LU), 51612 Close 51613 (bVar"v", 51614 MU(Mop(Not, 51615 bVar"v"), 51616 qTy))), 51617 MU(LF, 51618 qTy))))))), 51619 Close 51620 (bVar"b", 51621 ITE(bVar"b", 51622 Call 51623 ("DECODE_UNPREDICTABLE", 51624 ATy(qTy, 51625 PTy(uTy, 51626 qTy)), 51627 TP[Var("mc", 51628 CTy"MachineCode"), 51629 LS 51630 "SUBS<c> PC, LR, #0"]), 51631 MU(LU, 51632 qTy)))), 51633 Close 51634 (AVar 51635 uTy, 51636 MB(Call 51637 ("CurrentModeIsHyp", 51638 ATy(qTy, 51639 PTy(bTy, 51640 qTy)), 51641 LU), 51642 Close 51643 (bVar"b", 51644 MU(ITE(bVar"b", 51645 Call 51646 ("Undefined", 51647 CTy"instruction", 51648 LW(0, 51649 32)), 51650 Call 51651 ("Data", 51652 CTy"instruction", 51653 Call 51654 ("ArithLogicImmediate", 51655 CTy"Data", 51656 TP[LW(2, 51657 4), 51658 LT, 51659 LW(15, 51660 4), 51661 LW(14, 51662 4), 51663 Mop(Cast 51664 (FTy 12), 51665 Var("imm8", 51666 F8))]))), 51667 qTy)))))))))))), 51668 Call 51669 ("Skip", 51670 ATy(qTy, 51671 PTy(CTy"instruction", 51672 qTy)),LU)))))))), 51673 (Bop(And,Mop(Not,bVar"b'26"), 51674 Bop(And,bVar"b'25", 51675 Bop(And,bVar"b'24", 51676 Bop(And,bVar"b'23", 51677 Bop(And,bVar"b'22", 51678 Bop(And,bVar"b'21", 51679 Bop(And, 51680 Mop(Not,bVar"b'14"), 51681 Bop(And, 51682 Mop(Not, 51683 bVar"b'12"), 51684 bVar"b'5")))))))), 51685 Let(Var("Rd",F4), 51686 Mop(Cast F4, 51687 LL[bVar"b'11",bVar"b'10",bVar"b'9", 51688 bVar"b'8"]), 51689 MB(Call 51690 ("ThumbCondition", 51691 ATy(qTy,PTy(F4,qTy)),LU), 51692 Close 51693 (Var("v",F4), 51694 MB(MB(MB(Call 51695 ("HaveVirtExt", 51696 ATy(qTy,PTy(bTy,qTy)),LU), 51697 Close 51698 (bVar"v0", 51699 MU(TP[Var("v",F4), 51700 bVar"v0"],qTy))), 51701 Close 51702 (Var("v",PTy(F4,bTy)), 51703 Call 51704 ("Take", 51705 ATy(qTy,PTy(bTy,qTy)), 51706 Var("v",PTy(F4,bTy))))), 51707 Close 51708 (bVar"b", 51709 ITE(bVar"b", 51710 MB(ITE(Bop(In,Var("Rd",F4), 51711 SL[LW(13,4), 51712 LW(15,4)]), 51713 Call 51714 ("DECODE_UNPREDICTABLE", 51715 ATy(qTy, 51716 PTy(uTy,qTy)), 51717 TP[Var("mc", 51718 CTy"MachineCode"), 51719 LS 51720 "MoveToRegisterFromBankedOrSpecial"]), 51721 MU(LU,qTy)), 51722 Close 51723 (AVar uTy, 51724 MU(Call 51725 ("System", 51726 CTy"instruction", 51727 Call 51728 ("MoveToRegisterFromBankedOrSpecial", 51729 CTy"System", 51730 TP[EQ(Mop(Cast 51731 F1, 51732 LL[bVar"b'20"]), 51733 LW(1,1)), 51734 CC[Mop(Cast 51735 F1, 51736 LL[bVar"b'4"]), 51737 Mop(Cast 51738 F4, 51739 LL[bVar"b'19", 51740 bVar"b'18", 51741 bVar"b'17", 51742 bVar"b'16"])], 51743 Var("Rd", 51744 F4)])), 51745 qTy))), 51746 Call 51747 ("Skip", 51748 ATy(qTy, 51749 PTy(CTy"instruction", 51750 qTy)),LU)))))))), 51751 (Bop(And,Mop(Not,bVar"b'26"), 51752 Bop(And,bVar"b'25", 51753 Bop(And,bVar"b'24", 51754 Bop(And,bVar"b'23", 51755 Bop(And,bVar"b'22", 51756 Bop(And,bVar"b'21", 51757 Bop(And, 51758 Mop(Not,bVar"b'14"), 51759 Bop(And, 51760 Mop(Not, 51761 bVar"b'12"), 51762 Mop(Not, 51763 bVar"b'5"))))))))), 51764 Let(Var("Rd",F4), 51765 Mop(Cast F4, 51766 LL[bVar"b'11",bVar"b'10",bVar"b'9", 51767 bVar"b'8"]), 51768 MB(Call 51769 ("ThumbCondition", 51770 ATy(qTy,PTy(F4,qTy)),LU), 51771 Close 51772 (Var("v",F4), 51773 MB(MB(MB(Call 51774 ("HaveThumb2", 51775 ATy(qTy,PTy(bTy,qTy)),LU), 51776 Close 51777 (bVar"v0", 51778 MU(TP[Var("v",F4), 51779 bVar"v0"],qTy))), 51780 Close 51781 (Var("v",PTy(F4,bTy)), 51782 Call 51783 ("Take", 51784 ATy(qTy,PTy(bTy,qTy)), 51785 Var("v",PTy(F4,bTy))))), 51786 Close 51787 (bVar"b", 51788 ITE(bVar"b", 51789 MB(ITE(Bop(In,Var("Rd",F4), 51790 SL[LW(13,4), 51791 LW(15,4)]), 51792 Call 51793 ("DECODE_UNPREDICTABLE", 51794 ATy(qTy, 51795 PTy(uTy,qTy)), 51796 TP[Var("mc", 51797 CTy"MachineCode"), 51798 LS 51799 "MoveToRegisterFromSpecial"]), 51800 MU(LU,qTy)), 51801 Close 51802 (AVar uTy, 51803 MU(Call 51804 ("System", 51805 CTy"instruction", 51806 Call 51807 ("MoveToRegisterFromSpecial", 51808 CTy"System", 51809 TP[EQ(Mop(Cast 51810 F1, 51811 LL[bVar"b'20"]), 51812 LW(1,1)), 51813 Var("Rd", 51814 F4)])), 51815 qTy))), 51816 Call 51817 ("Skip", 51818 ATy(qTy, 51819 PTy(CTy"instruction", 51820 qTy)),LU)))))))), 51821 (Bop(And,bVar"b'26", 51822 Bop(And,bVar"b'25", 51823 Bop(And,bVar"b'24", 51824 Bop(And,bVar"b'23", 51825 Bop(And,bVar"b'22", 51826 Bop(And,bVar"b'21", 51827 Bop(And, 51828 Mop(Not,bVar"b'20"), 51829 Bop(And, 51830 Mop(Not, 51831 bVar"b'14"), 51832 Bop(And, 51833 Mop(Not, 51834 bVar"b'13"), 51835 Mop(Not, 51836 bVar"b'12")))))))))), 51837 MB(Call 51838 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 51839 Close 51840 (Var("v",F4), 51841 MB(MB(MB(Call 51842 ("HaveVirtExt", 51843 ATy(qTy,PTy(bTy,qTy)),LU), 51844 Close 51845 (bVar"v0", 51846 MU(TP[Var("v",F4),bVar"v0"], 51847 qTy))), 51848 Close 51849 (Var("v",PTy(F4,bTy)), 51850 Call 51851 ("Take",ATy(qTy,PTy(bTy,qTy)), 51852 Var("v",PTy(F4,bTy))))), 51853 Close 51854 (bVar"b", 51855 ITE(bVar"b", 51856 MB(Call 51857 ("InITBlock", 51858 ATy(qTy,PTy(bTy,qTy)),LU), 51859 Close 51860 (bVar"v", 51861 MB(ITE(bVar"v", 51862 Call 51863 ("DECODE_UNPREDICTABLE", 51864 ATy(qTy, 51865 PTy(uTy,qTy)), 51866 TP[Var("mc", 51867 CTy"MachineCode"), 51868 LS 51869 "HypervisorCall"]), 51870 MU(LU,qTy)), 51871 Close 51872 (AVar uTy, 51873 MU(Call 51874 ("System", 51875 CTy"instruction", 51876 Call 51877 ("HypervisorCall", 51878 CTy"System", 51879 CC[Mop(Cast 51880 F4, 51881 LL[bVar"b'19", 51882 bVar"b'18", 51883 bVar"b'17", 51884 bVar"b'16"]), 51885 Mop(Cast 51886 (FTy 12), 51887 LL[bVar"b'11", 51888 bVar"b'10", 51889 bVar"b'9", 51890 bVar"b'8", 51891 bVar"b'7", 51892 bVar"b'6", 51893 bVar"b'5", 51894 bVar"b'4", 51895 bVar"b'3", 51896 bVar"b'2", 51897 bVar"b'1", 51898 bVar"b'0"])])), 51899 qTy))))), 51900 Call 51901 ("Skip", 51902 ATy(qTy, 51903 PTy(CTy"instruction",qTy)), 51904 LU))))))), 51905 (Bop(And,bVar"b'26", 51906 Bop(And,bVar"b'25", 51907 Bop(And,bVar"b'24", 51908 Bop(And,bVar"b'23", 51909 Bop(And,bVar"b'22", 51910 Bop(And,bVar"b'21", 51911 Bop(And,bVar"b'20", 51912 Bop(And, 51913 Mop(Not, 51914 bVar"b'14"), 51915 Bop(And, 51916 Mop(Not, 51917 bVar"b'13"), 51918 Mop(Not, 51919 bVar"b'12")))))))))), 51920 MB(Call 51921 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 51922 Close 51923 (Var("v",F4), 51924 MB(MB(MB(Call 51925 ("HaveSecurityExt", 51926 ATy(qTy,PTy(bTy,qTy)),LU), 51927 Close 51928 (bVar"v0", 51929 MB(ITE(bVar"v0", 51930 MB(MR(Close 51931 (qVar"s", 51932 Dest 51933 ("Architecture", 51934 CTy"Architecture", 51935 qVar"s"))), 51936 Close 51937 (Var("v", 51938 CTy"Architecture"), 51939 MB(MU(EQ(Var("v", 51940 CTy"Architecture"), 51941 LC("ARMv6K", 51942 CTy"Architecture")), 51943 qTy), 51944 Close 51945 (bVar"v", 51946 MU(Mop(Not, 51947 bVar"v"), 51948 qTy))))), 51949 MU(LF,qTy)), 51950 Close 51951 (bVar"v0", 51952 MU(TP[Var("v",F4), 51953 bVar"v0"],qTy))))), 51954 Close 51955 (Var("v",PTy(F4,bTy)), 51956 Call 51957 ("Take",ATy(qTy,PTy(bTy,qTy)), 51958 Var("v",PTy(F4,bTy))))), 51959 Close 51960 (bVar"b", 51961 ITE(bVar"b", 51962 MB(Call 51963 ("InITBlock", 51964 ATy(qTy,PTy(bTy,qTy)),LU), 51965 Close 51966 (bVar"v", 51967 MB(MB(ITE(bVar"v", 51968 MB(Call 51969 ("LastInITBlock", 51970 ATy(qTy, 51971 PTy(bTy, 51972 qTy)), 51973 LU), 51974 Close 51975 (bVar"v", 51976 MU(Mop(Not, 51977 bVar"v"), 51978 qTy))), 51979 MU(LF,qTy)), 51980 Close 51981 (bVar"b", 51982 ITE(bVar"b", 51983 Call 51984 ("DECODE_UNPREDICTABLE", 51985 ATy(qTy, 51986 PTy(uTy, 51987 qTy)), 51988 TP[Var("mc", 51989 CTy"MachineCode"), 51990 LS 51991 "SecureMonitorCall"]), 51992 MU(LU,qTy)))), 51993 Close 51994 (AVar uTy, 51995 MU(Call 51996 ("System", 51997 CTy"instruction", 51998 Call 51999 ("SecureMonitorCall", 52000 CTy"System", 52001 Mop(Cast 52002 F4, 52003 LL[bVar"b'19", 52004 bVar"b'18", 52005 bVar"b'17", 52006 bVar"b'16"]))), 52007 qTy))))), 52008 Call 52009 ("Skip", 52010 ATy(qTy, 52011 PTy(CTy"instruction",qTy)), 52012 LU))))))), 52013 (Bop(And,bVar"b'26", 52014 Bop(And,bVar"b'25", 52015 Bop(And,bVar"b'24", 52016 Bop(And,bVar"b'23", 52017 Bop(And,bVar"b'22", 52018 Bop(And,bVar"b'21", 52019 Bop(And,bVar"b'20", 52020 Bop(And, 52021 Mop(Not, 52022 bVar"b'14"), 52023 Bop(And, 52024 bVar"b'13", 52025 Mop(Not, 52026 bVar"b'12")))))))))), 52027 MB(Call 52028 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 52029 Close 52030 (Var("v",F4), 52031 MB(MB(MB(Call 52032 ("HaveThumb2", 52033 ATy(qTy,PTy(bTy,qTy)),LU), 52034 Close 52035 (bVar"v0", 52036 MU(TP[Var("v",F4),bVar"v0"], 52037 qTy))), 52038 Close 52039 (Var("v",PTy(F4,bTy)), 52040 Call 52041 ("Take",ATy(qTy,PTy(bTy,qTy)), 52042 Var("v",PTy(F4,bTy))))), 52043 Close 52044 (bVar"b", 52045 ITE(bVar"b", 52046 MU(Call 52047 ("Undefined", 52048 CTy"instruction", 52049 Mop(Cast F32, 52050 CC[Mop(Cast F4, 52051 LL[bVar"b'19", 52052 bVar"b'18", 52053 bVar"b'17", 52054 bVar"b'16"]), 52055 Mop(Cast(FTy 12), 52056 LL[bVar"b'11", 52057 bVar"b'10", 52058 bVar"b'9", 52059 bVar"b'8", 52060 bVar"b'7", 52061 bVar"b'6", 52062 bVar"b'5", 52063 bVar"b'4", 52064 bVar"b'3", 52065 bVar"b'2", 52066 bVar"b'1", 52067 bVar"b'0"])])), 52068 qTy), 52069 Call 52070 ("Skip", 52071 ATy(qTy, 52072 PTy(CTy"instruction",qTy)), 52073 LU))))))), 52074 (Bop(And,Mop(Not,bVar"b'14"),Mop(Not,bVar"b'12")), 52075 MB(Call("HaveThumb2",ATy(qTy,PTy(bTy,qTy)),LU), 52076 Close 52077 (bVar"v", 52078 MB(MB(MU(TP[Mop(Cast F4, 52079 LL[bVar"b'25",bVar"b'24", 52080 bVar"b'23",bVar"b'22"]), 52081 bVar"v"],qTy), 52082 Close 52083 (Var("v",PTy(F4,bTy)), 52084 Call 52085 ("Take",ATy(qTy,PTy(bTy,qTy)), 52086 Var("v",PTy(F4,bTy))))), 52087 Close 52088 (bVar"b", 52089 ITE(bVar"b", 52090 MB(Call 52091 ("InITBlock", 52092 ATy(qTy,PTy(bTy,qTy)),LU), 52093 Close 52094 (bVar"v", 52095 MB(ITE(bVar"v", 52096 Call 52097 ("DECODE_UNPREDICTABLE", 52098 ATy(qTy, 52099 PTy(uTy,qTy)), 52100 TP[Var("mc", 52101 CTy"MachineCode"), 52102 LS 52103 "BranchTarget"]), 52104 MU(LU,qTy)), 52105 Close 52106 (AVar uTy, 52107 MU(Call 52108 ("Branch", 52109 CTy"instruction", 52110 Call 52111 ("BranchTarget", 52112 CTy"Branch", 52113 Mop(SE F32, 52114 CC[Mop(Cast 52115 F1, 52116 LL[bVar"b'26"]), 52117 Mop(Cast 52118 F1, 52119 LL[bVar"b'11"]), 52120 Mop(Cast 52121 F1, 52122 LL[bVar"b'13"]), 52123 Mop(Cast 52124 (FTy 6), 52125 LL[bVar"b'21", 52126 bVar"b'20", 52127 bVar"b'19", 52128 bVar"b'18", 52129 bVar"b'17", 52130 bVar"b'16"]), 52131 Mop(Cast 52132 (FTy 11), 52133 LL[bVar"b'10", 52134 bVar"b'9", 52135 bVar"b'8", 52136 bVar"b'7", 52137 bVar"b'6", 52138 bVar"b'5", 52139 bVar"b'4", 52140 bVar"b'3", 52141 bVar"b'2", 52142 bVar"b'1", 52143 bVar"b'0"]), 52144 LW(0, 52145 1)]))), 52146 qTy))))), 52147 Call 52148 ("Skip", 52149 ATy(qTy, 52150 PTy(CTy"instruction",qTy)), 52151 LU))))))), 52152 (bVar"b'12", 52153 Let(Var("S",F1),Mop(Cast F1,LL[bVar"b'26"]), 52154 Let(Var("J2",F1), 52155 Mop(Cast F1,LL[bVar"b'11"]), 52156 Let(Var("J1",F1), 52157 Mop(Cast F1,LL[bVar"b'13"]), 52158 Let(Var("L",F1), 52159 Mop(Cast F1,LL[bVar"b'14"]), 52160 MB(Call 52161 ("ThumbCondition", 52162 ATy(qTy,PTy(F4,qTy)),LU), 52163 Close 52164 (Var("v",F4), 52165 MB(MB(MB(Call 52166 ("HaveThumb2", 52167 ATy(qTy, 52168 PTy(bTy, 52169 qTy)), 52170 LU), 52171 Close 52172 (bVar"v0", 52173 MB(MU(Bop(Or, 52174 Bop(And, 52175 Bop(And, 52176 EQ(Var("L", 52177 F1), 52178 LW(1, 52179 1)), 52180 EQ(Var("J1", 52181 F1), 52182 LW(1, 52183 1))), 52184 EQ(Var("J1", 52185 F1), 52186 Var("J2", 52187 F1))), 52188 bVar"v0"), 52189 qTy), 52190 Close 52191 (bVar"v0", 52192 MU(TP[Var("v", 52193 F4), 52194 bVar"v0"], 52195 qTy))))), 52196 Close 52197 (Var("v", 52198 PTy(F4,bTy)), 52199 Call 52200 ("Take", 52201 ATy(qTy, 52202 PTy(bTy, 52203 qTy)), 52204 Var("v", 52205 PTy(F4, 52206 bTy))))), 52207 Close 52208 (bVar"b", 52209 ITE(bVar"b", 52210 MB(Call 52211 ("InITBlock", 52212 ATy(qTy, 52213 PTy(bTy, 52214 qTy)), 52215 LU), 52216 Close 52217 (bVar"v", 52218 MB(MB(ITE(bVar"v", 52219 MB(Call 52220 ("LastInITBlock", 52221 ATy(qTy, 52222 PTy(bTy, 52223 qTy)), 52224 LU), 52225 Close 52226 (bVar"v", 52227 MU(Mop(Not, 52228 bVar"v"), 52229 qTy))), 52230 MU(LF, 52231 qTy)), 52232 Close 52233 (bVar"b", 52234 ITE(bVar"b", 52235 Call 52236 ("DECODE_UNPREDICTABLE", 52237 ATy(qTy, 52238 PTy(uTy, 52239 qTy)), 52240 TP[Var("mc", 52241 CTy"MachineCode"), 52242 LS 52243 "BranchTarget or BranchLinkExchangeImmediate"]), 52244 MU(LU, 52245 qTy)))), 52246 Close 52247 (AVar 52248 uTy, 52249 MU(Let(Var("imm32", 52250 F32), 52251 Mop(SE F32, 52252 CC[Var("S", 52253 F1), 52254 Mop(BNot, 52255 Bop(BXor, 52256 Var("J1", 52257 F1), 52258 Var("S", 52259 F1))), 52260 Mop(BNot, 52261 Bop(BXor, 52262 Var("J2", 52263 F1), 52264 Var("S", 52265 F1))), 52266 Mop(Cast 52267 (FTy 10), 52268 LL[bVar"b'25", 52269 bVar"b'24", 52270 bVar"b'23", 52271 bVar"b'22", 52272 bVar"b'21", 52273 bVar"b'20", 52274 bVar"b'19", 52275 bVar"b'18", 52276 bVar"b'17", 52277 bVar"b'16"]), 52278 Mop(Cast 52279 (FTy 11), 52280 LL[bVar"b'10", 52281 bVar"b'9", 52282 bVar"b'8", 52283 bVar"b'7", 52284 bVar"b'6", 52285 bVar"b'5", 52286 bVar"b'4", 52287 bVar"b'3", 52288 bVar"b'2", 52289 bVar"b'1", 52290 bVar"b'0"]), 52291 LW(0, 52292 1)]), 52293 ITE(EQ(Var("L", 52294 F1), 52295 LW(1, 52296 1)), 52297 Call 52298 ("Branch", 52299 CTy"instruction", 52300 Call 52301 ("BranchLinkExchangeImmediate", 52302 CTy"Branch", 52303 TP[LC("InstrSet_Thumb", 52304 CTy"InstrSet"), 52305 Var("imm32", 52306 F32)])), 52307 Call 52308 ("Branch", 52309 CTy"instruction", 52310 Call 52311 ("BranchTarget", 52312 CTy"Branch", 52313 Var("imm32", 52314 F32))))), 52315 qTy))))), 52316 Call 52317 ("Skip", 52318 ATy(qTy, 52319 PTy(CTy"instruction", 52320 qTy)), 52321 LU))))))))))), 52322 (Bop(And,bVar"b'14",Mop(Not,bVar"b'12")), 52323 Let(Var("S",F1),Mop(Cast F1,LL[bVar"b'26"]), 52324 Let(Var("J2",F1), 52325 Mop(Cast F1,LL[bVar"b'11"]), 52326 Let(Var("J1",F1), 52327 Mop(Cast F1,LL[bVar"b'13"]), 52328 MB(Call 52329 ("ThumbCondition", 52330 ATy(qTy,PTy(F4,qTy)),LU), 52331 Close 52332 (Var("v",F4), 52333 MB(MB(MB(Call 52334 ("CurrentInstrSet", 52335 ATy(qTy, 52336 PTy(CTy"InstrSet", 52337 qTy)),LU), 52338 Close 52339 (Var("v0", 52340 CTy"InstrSet"), 52341 MB(MB(MB(MB(MU(EQ(Var("v0", 52342 CTy"InstrSet"), 52343 LC("InstrSet_ThumbEE", 52344 CTy"InstrSet")), 52345 qTy), 52346 Close 52347 (bVar"b", 52348 MU(Bop(Or, 52349 bVar"b", 52350 EQ(Mop(Cast 52351 F1, 52352 LL[bVar"b'0"]), 52353 LW(1, 52354 1))), 52355 qTy))), 52356 Close 52357 (bVar"v", 52358 MU(Mop(Not, 52359 bVar"v"), 52360 qTy))), 52361 Close 52362 (bVar"b", 52363 ITE(bVar"b", 52364 ITE(Bop(And, 52365 EQ(Var("J1", 52366 F1), 52367 LW(1, 52368 1)), 52369 EQ(Var("J1", 52370 F1), 52371 Var("J2", 52372 F1))), 52373 MB(Call 52374 ("ArchVersion", 52375 ATy(qTy, 52376 PTy(nTy, 52377 qTy)), 52378 LU), 52379 Close 52380 (nVar"v", 52381 MU(Bop(Ge, 52382 nVar"v", 52383 LN 52384 5), 52385 qTy))), 52386 Call 52387 ("HaveThumb2", 52388 ATy(qTy, 52389 PTy(bTy, 52390 qTy)), 52391 LU)), 52392 MU(LF, 52393 qTy)))), 52394 Close 52395 (bVar"v0", 52396 MU(TP[Var("v", 52397 F4), 52398 bVar"v0"], 52399 qTy))))), 52400 Close 52401 (Var("v",PTy(F4,bTy)), 52402 Call 52403 ("Take", 52404 ATy(qTy, 52405 PTy(bTy,qTy)), 52406 Var("v", 52407 PTy(F4,bTy))))), 52408 Close 52409 (bVar"b", 52410 ITE(bVar"b", 52411 MB(Call 52412 ("InITBlock", 52413 ATy(qTy, 52414 PTy(bTy, 52415 qTy)), 52416 LU), 52417 Close 52418 (bVar"v", 52419 MB(MB(ITE(bVar"v", 52420 MB(Call 52421 ("LastInITBlock", 52422 ATy(qTy, 52423 PTy(bTy, 52424 qTy)), 52425 LU), 52426 Close 52427 (bVar"v", 52428 MU(Mop(Not, 52429 bVar"v"), 52430 qTy))), 52431 MU(LF, 52432 qTy)), 52433 Close 52434 (bVar"b", 52435 ITE(bVar"b", 52436 Call 52437 ("DECODE_UNPREDICTABLE", 52438 ATy(qTy, 52439 PTy(uTy, 52440 qTy)), 52441 TP[Var("mc", 52442 CTy"MachineCode"), 52443 LS 52444 "BranchLinkExchangeImmediate"]), 52445 MU(LU, 52446 qTy)))), 52447 Close 52448 (AVar 52449 uTy, 52450 MU(Call 52451 ("Branch", 52452 CTy"instruction", 52453 Call 52454 ("BranchLinkExchangeImmediate", 52455 CTy"Branch", 52456 TP[LC("InstrSet_ARM", 52457 CTy"InstrSet"), 52458 Mop(SE F32, 52459 CC[Var("S", 52460 F1), 52461 Mop(BNot, 52462 Bop(BXor, 52463 Var("J1", 52464 F1), 52465 Var("S", 52466 F1))), 52467 Mop(BNot, 52468 Bop(BXor, 52469 Var("J2", 52470 F1), 52471 Var("S", 52472 F1))), 52473 Mop(Cast 52474 (FTy 10), 52475 LL[bVar"b'25", 52476 bVar"b'24", 52477 bVar"b'23", 52478 bVar"b'22", 52479 bVar"b'21", 52480 bVar"b'20", 52481 bVar"b'19", 52482 bVar"b'18", 52483 bVar"b'17", 52484 bVar"b'16"]), 52485 Mop(Cast 52486 (FTy 10), 52487 LL[bVar"b'10", 52488 bVar"b'9", 52489 bVar"b'8", 52490 bVar"b'7", 52491 bVar"b'6", 52492 bVar"b'5", 52493 bVar"b'4", 52494 bVar"b'3", 52495 bVar"b'2", 52496 bVar"b'1"]), 52497 LW(0, 52498 2)])])), 52499 qTy))))), 52500 Call 52501 ("Skip", 52502 ATy(qTy, 52503 PTy(CTy"instruction", 52504 qTy)),LU))))))))))], 52505 Call 52506 ("UndefinedThumb", 52507 ATy(qTy,PTy(CTy"instruction",qTy)),LU)), 52508 Call 52509 ("UndefinedThumb", 52510 ATy(qTy,PTy(CTy"instruction",qTy)),LU))), 52511 (Bop(And,bVar"b'31", 52512 Bop(And,bVar"b'30",Bop(And,bVar"b'29",bVar"b'28"))), 52513 ITB([(Mop(Not,bVar"b'25"), 52514 Let(Var("Rn",F4), 52515 Mop(Cast F4, 52516 LL[bVar"b'19",bVar"b'18",bVar"b'17", 52517 bVar"b'16"]), 52518 Let(Var("S",F1),Mop(Cast F1,LL[bVar"b'20"]), 52519 Let(Var("Rd",F4), 52520 Mop(Cast F4, 52521 LL[bVar"b'11",bVar"b'10",bVar"b'9", 52522 bVar"b'8"]), 52523 MB(Call 52524 ("ThumbCondition", 52525 ATy(qTy,PTy(F4,qTy)),LU), 52526 Close 52527 (Var("v",F4), 52528 MB(MB(MB(Call 52529 ("HaveThumb2", 52530 ATy(qTy,PTy(bTy,qTy)), 52531 LU), 52532 Close 52533 (bVar"v0", 52534 MU(TP[Var("v",F4), 52535 bVar"v0"],qTy))), 52536 Close 52537 (Var("v",PTy(F4,bTy)), 52538 Call 52539 ("Take", 52540 ATy(qTy,PTy(bTy,qTy)), 52541 Var("v",PTy(F4,bTy))))), 52542 Close 52543 (bVar"b", 52544 ITE(bVar"b", 52545 Let(Var("imm12",FTy 12), 52546 CC[Mop(Cast F1, 52547 LL[bVar"b'26"]), 52548 Mop(Cast(FTy 3), 52549 LL[bVar"b'14", 52550 bVar"b'13", 52551 bVar"b'12"]), 52552 Mop(Cast F8, 52553 LL[bVar"b'7", 52554 bVar"b'6", 52555 bVar"b'5", 52556 bVar"b'4", 52557 bVar"b'3", 52558 bVar"b'2", 52559 bVar"b'1", 52560 bVar"b'0"])], 52561 MB(MR(Close 52562 (qVar"s", 52563 Dest 52564 ("CPSR", 52565 CTy"PSR", 52566 qVar"s"))), 52567 Close 52568 (Var("v", 52569 CTy"PSR"), 52570 MB(MB(MB(MU(Dest 52571 ("C", 52572 bTy, 52573 Var("v", 52574 CTy"PSR")), 52575 qTy), 52576 Close 52577 (bVar"v", 52578 MU(TP[Var("imm12", 52579 FTy 12), 52580 bVar"v"], 52581 qTy))), 52582 Close 52583 (Var("v", 52584 PTy(FTy 12, 52585 bTy)), 52586 Call 52587 ("ThumbExpandImm_C", 52588 ATy(qTy, 52589 PTy(PTy(F32, 52590 bTy), 52591 qTy)), 52592 Var("v", 52593 PTy(FTy 12, 52594 bTy))))), 52595 Close 52596 (Var("x", 52597 PTy(F32, 52598 bTy)), 52599 Let(bVar"setflags", 52600 EQ(Var("S", 52601 F1), 52602 LW(1, 52603 1)), 52604 CS(TP[Mop(Cast 52605 F4, 52606 LL[bVar"b'24", 52607 bVar"b'23", 52608 bVar"b'22", 52609 bVar"b'21"]), 52610 Var("Rn", 52611 F4), 52612 Var("Rd", 52613 F4), 52614 Var("S", 52615 F1)], 52616 [(TP[LW(0, 52617 4), 52618 AVar 52619 F4, 52620 LW(15, 52621 4), 52622 LW(1, 52623 1)], 52624 MB(ITE(Bop(In, 52625 Var("Rn", 52626 F4), 52627 SL[LW(13, 52628 4), 52629 LW(15, 52630 4)]), 52631 Call 52632 ("DECODE_UNPREDICTABLE", 52633 ATy(qTy, 52634 PTy(uTy, 52635 qTy)), 52636 TP[Var("mc", 52637 CTy"MachineCode"), 52638 LS 52639 "TST (immediate)"]), 52640 MU(LU, 52641 qTy)), 52642 Close 52643 (AVar 52644 uTy, 52645 MU(Call 52646 ("Data", 52647 CTy"instruction", 52648 Call 52649 ("TestCompareImmediate", 52650 CTy"Data", 52651 TP[LW(0, 52652 2), 52653 Var("Rn", 52654 F4), 52655 Var("imm12", 52656 FTy 12)])), 52657 qTy)))), 52658 (TP[LW(0, 52659 4), 52660 AVar 52661 (PTy(F4, 52662 PTy(F4, 52663 F1)))], 52664 MB(ITE(Bop(Or, 52665 Bop(Or, 52666 EQ(Var("Rd", 52667 F4), 52668 LW(13, 52669 4)), 52670 Bop(And, 52671 EQ(Var("Rd", 52672 F4), 52673 LW(15, 52674 4)), 52675 Mop(Not, 52676 bVar"setflags"))), 52677 Bop(In, 52678 Var("Rn", 52679 F4), 52680 SL[LW(13, 52681 4), 52682 LW(15, 52683 4)])), 52684 Call 52685 ("DECODE_UNPREDICTABLE", 52686 ATy(qTy, 52687 PTy(uTy, 52688 qTy)), 52689 TP[Var("mc", 52690 CTy"MachineCode"), 52691 LS 52692 "AND (immediate)"]), 52693 MU(LU, 52694 qTy)), 52695 Close 52696 (AVar 52697 uTy, 52698 MU(Call 52699 ("Data", 52700 CTy"instruction", 52701 Call 52702 ("ArithLogicImmediate", 52703 CTy"Data", 52704 TP[LW(0, 52705 4), 52706 bVar"setflags", 52707 Var("Rd", 52708 F4), 52709 Var("Rn", 52710 F4), 52711 Var("imm12", 52712 FTy 12)])), 52713 qTy)))), 52714 (TP[LW(1, 52715 4), 52716 AVar 52717 (PTy(F4, 52718 PTy(F4, 52719 F1)))], 52720 MB(ITE(Bop(Or, 52721 Bop(In, 52722 Var("Rd", 52723 F4), 52724 SL[LW(13, 52725 4), 52726 LW(15, 52727 4)]), 52728 Bop(In, 52729 Var("Rn", 52730 F4), 52731 SL[LW(13, 52732 4), 52733 LW(15, 52734 4)])), 52735 Call 52736 ("DECODE_UNPREDICTABLE", 52737 ATy(qTy, 52738 PTy(uTy, 52739 qTy)), 52740 TP[Var("mc", 52741 CTy"MachineCode"), 52742 LS 52743 "BIC (immediate)"]), 52744 MU(LU, 52745 qTy)), 52746 Close 52747 (AVar 52748 uTy, 52749 MU(Call 52750 ("Data", 52751 CTy"instruction", 52752 Call 52753 ("ArithLogicImmediate", 52754 CTy"Data", 52755 TP[LW(14, 52756 4), 52757 bVar"setflags", 52758 Var("Rd", 52759 F4), 52760 Var("Rn", 52761 F4), 52762 Var("imm12", 52763 FTy 12)])), 52764 qTy)))), 52765 (TP[LW(2, 52766 4), 52767 LW(15, 52768 4), 52769 AVar 52770 (PTy(F4, 52771 F1))], 52772 MB(ITE(Bop(In, 52773 Var("Rd", 52774 F4), 52775 SL[LW(13, 52776 4), 52777 LW(15, 52778 4)]), 52779 Call 52780 ("DECODE_UNPREDICTABLE", 52781 ATy(qTy, 52782 PTy(uTy, 52783 qTy)), 52784 TP[Var("mc", 52785 CTy"MachineCode"), 52786 LS 52787 "MOV (immediate)"]), 52788 MU(LU, 52789 qTy)), 52790 Close 52791 (AVar 52792 uTy, 52793 MU(Call 52794 ("Data", 52795 CTy"instruction", 52796 Call 52797 ("Move", 52798 CTy"Data", 52799 TP[bVar"setflags", 52800 LF, 52801 Var("Rd", 52802 F4), 52803 Var("imm12", 52804 FTy 12)])), 52805 qTy)))), 52806 (TP[LW(2, 52807 4), 52808 AVar 52809 (PTy(F4, 52810 PTy(F4, 52811 F1)))], 52812 MB(ITE(Bop(Or, 52813 Bop(In, 52814 Var("Rd", 52815 F4), 52816 SL[LW(13, 52817 4), 52818 LW(15, 52819 4)]), 52820 EQ(Var("Rn", 52821 F4), 52822 LW(13, 52823 4))), 52824 Call 52825 ("DECODE_UNPREDICTABLE", 52826 ATy(qTy, 52827 PTy(uTy, 52828 qTy)), 52829 TP[Var("mc", 52830 CTy"MachineCode"), 52831 LS 52832 "ORR (immediate)"]), 52833 MU(LU, 52834 qTy)), 52835 Close 52836 (AVar 52837 uTy, 52838 MU(Call 52839 ("Data", 52840 CTy"instruction", 52841 Call 52842 ("ArithLogicImmediate", 52843 CTy"Data", 52844 TP[LW(12, 52845 4), 52846 bVar"setflags", 52847 Var("Rd", 52848 F4), 52849 Var("Rn", 52850 F4), 52851 Var("imm12", 52852 FTy 12)])), 52853 qTy)))), 52854 (TP[LW(3, 52855 4), 52856 LW(15, 52857 4), 52858 AVar 52859 (PTy(F4, 52860 F1))], 52861 MB(ITE(Bop(In, 52862 Var("Rd", 52863 F4), 52864 SL[LW(13, 52865 4), 52866 LW(15, 52867 4)]), 52868 Call 52869 ("DECODE_UNPREDICTABLE", 52870 ATy(qTy, 52871 PTy(uTy, 52872 qTy)), 52873 TP[Var("mc", 52874 CTy"MachineCode"), 52875 LS 52876 "MVN (immediate)"]), 52877 MU(LU, 52878 qTy)), 52879 Close 52880 (AVar 52881 uTy, 52882 MU(Call 52883 ("Data", 52884 CTy"instruction", 52885 Call 52886 ("Move", 52887 CTy"Data", 52888 TP[bVar"setflags", 52889 LT, 52890 Var("Rd", 52891 F4), 52892 Var("imm12", 52893 FTy 12)])), 52894 qTy)))), 52895 (TP[LW(3, 52896 4), 52897 AVar 52898 (PTy(F4, 52899 PTy(F4, 52900 F1)))], 52901 MB(ITE(Bop(Or, 52902 Bop(In, 52903 Var("Rd", 52904 F4), 52905 SL[LW(13, 52906 4), 52907 LW(15, 52908 4)]), 52909 EQ(Var("Rn", 52910 F4), 52911 LW(13, 52912 4))), 52913 Call 52914 ("DECODE_UNPREDICTABLE", 52915 ATy(qTy, 52916 PTy(uTy, 52917 qTy)), 52918 TP[Var("mc", 52919 CTy"MachineCode"), 52920 LS 52921 "ORN (immediate)"]), 52922 MU(LU, 52923 qTy)), 52924 Close 52925 (AVar 52926 uTy, 52927 MU(Call 52928 ("Data", 52929 CTy"instruction", 52930 Call 52931 ("ArithLogicImmediate", 52932 CTy"Data", 52933 TP[LW(15, 52934 4), 52935 bVar"setflags", 52936 Var("Rd", 52937 F4), 52938 Var("Rn", 52939 F4), 52940 Var("imm12", 52941 FTy 12)])), 52942 qTy)))), 52943 (TP[LW(4, 52944 4), 52945 AVar 52946 F4, 52947 LW(15, 52948 4), 52949 LW(1, 52950 1)], 52951 MB(ITE(Bop(In, 52952 Var("Rn", 52953 F4), 52954 SL[LW(13, 52955 4), 52956 LW(15, 52957 4)]), 52958 Call 52959 ("DECODE_UNPREDICTABLE", 52960 ATy(qTy, 52961 PTy(uTy, 52962 qTy)), 52963 TP[Var("mc", 52964 CTy"MachineCode"), 52965 LS 52966 "TEQ (immediate)"]), 52967 MU(LU, 52968 qTy)), 52969 Close 52970 (AVar 52971 uTy, 52972 MU(Call 52973 ("Data", 52974 CTy"instruction", 52975 Call 52976 ("TestCompareImmediate", 52977 CTy"Data", 52978 TP[LW(1, 52979 2), 52980 Var("Rn", 52981 F4), 52982 Var("imm12", 52983 FTy 12)])), 52984 qTy)))), 52985 (TP[LW(4, 52986 4), 52987 AVar 52988 (PTy(F4, 52989 PTy(F4, 52990 F1)))], 52991 MB(ITE(Bop(Or, 52992 Bop(Or, 52993 EQ(Var("Rd", 52994 F4), 52995 LW(13, 52996 4)), 52997 Bop(And, 52998 EQ(Var("Rd", 52999 F4), 53000 LW(15, 53001 4)), 53002 Mop(Not, 53003 bVar"setflags"))), 53004 Bop(In, 53005 Var("Rn", 53006 F4), 53007 SL[LW(13, 53008 4), 53009 LW(15, 53010 4)])), 53011 Call 53012 ("DECODE_UNPREDICTABLE", 53013 ATy(qTy, 53014 PTy(uTy, 53015 qTy)), 53016 TP[Var("mc", 53017 CTy"MachineCode"), 53018 LS 53019 "EOR (immediate)"]), 53020 MU(LU, 53021 qTy)), 53022 Close 53023 (AVar 53024 uTy, 53025 MU(Call 53026 ("Data", 53027 CTy"instruction", 53028 Call 53029 ("ArithLogicImmediate", 53030 CTy"Data", 53031 TP[LW(1, 53032 4), 53033 bVar"setflags", 53034 Var("Rd", 53035 F4), 53036 Var("Rn", 53037 F4), 53038 Var("imm12", 53039 FTy 12)])), 53040 qTy)))), 53041 (TP[LW(8, 53042 4), 53043 AVar 53044 F4, 53045 LW(15, 53046 4), 53047 LW(1, 53048 1)], 53049 MB(ITE(EQ(Var("Rn", 53050 F4), 53051 LW(15, 53052 4)), 53053 Call 53054 ("DECODE_UNPREDICTABLE", 53055 ATy(qTy, 53056 PTy(uTy, 53057 qTy)), 53058 TP[Var("mc", 53059 CTy"MachineCode"), 53060 LS 53061 "CMN (immediate)"]), 53062 MU(LU, 53063 qTy)), 53064 Close 53065 (AVar 53066 uTy, 53067 MU(Call 53068 ("Data", 53069 CTy"instruction", 53070 Call 53071 ("TestCompareImmediate", 53072 CTy"Data", 53073 TP[LW(3, 53074 2), 53075 Var("Rn", 53076 F4), 53077 Var("imm12", 53078 FTy 12)])), 53079 qTy)))), 53080 (TP[LW(8, 53081 4), 53082 AVar 53083 (PTy(F4, 53084 PTy(F4, 53085 F1)))], 53086 MB(ITE(Bop(Or, 53087 Bop(Or, 53088 EQ(Var("Rd", 53089 F4), 53090 LW(13, 53091 4)), 53092 Bop(And, 53093 EQ(Var("Rd", 53094 F4), 53095 LW(15, 53096 4)), 53097 Mop(Not, 53098 bVar"setflags"))), 53099 EQ(Var("Rn", 53100 F4), 53101 LW(15, 53102 4))), 53103 Call 53104 ("DECODE_UNPREDICTABLE", 53105 ATy(qTy, 53106 PTy(uTy, 53107 qTy)), 53108 TP[Var("mc", 53109 CTy"MachineCode"), 53110 LS 53111 "ADD (immediate)"]), 53112 MU(LU, 53113 qTy)), 53114 Close 53115 (AVar 53116 uTy, 53117 MU(Call 53118 ("Data", 53119 CTy"instruction", 53120 Call 53121 ("ArithLogicImmediate", 53122 CTy"Data", 53123 TP[LW(4, 53124 4), 53125 bVar"setflags", 53126 Var("Rd", 53127 F4), 53128 Var("Rn", 53129 F4), 53130 Var("imm12", 53131 FTy 12)])), 53132 qTy)))), 53133 (TP[LW(10, 53134 4), 53135 AVar 53136 (PTy(F4, 53137 PTy(F4, 53138 F1)))], 53139 MB(ITE(Bop(Or, 53140 Bop(In, 53141 Var("Rd", 53142 F4), 53143 SL[LW(13, 53144 4), 53145 LW(15, 53146 4)]), 53147 Bop(In, 53148 Var("Rn", 53149 F4), 53150 SL[LW(13, 53151 4), 53152 LW(15, 53153 4)])), 53154 Call 53155 ("DECODE_UNPREDICTABLE", 53156 ATy(qTy, 53157 PTy(uTy, 53158 qTy)), 53159 TP[Var("mc", 53160 CTy"MachineCode"), 53161 LS 53162 "ADC (immediate)"]), 53163 MU(LU, 53164 qTy)), 53165 Close 53166 (AVar 53167 uTy, 53168 MU(Call 53169 ("Data", 53170 CTy"instruction", 53171 Call 53172 ("ArithLogicImmediate", 53173 CTy"Data", 53174 TP[LW(5, 53175 4), 53176 bVar"setflags", 53177 Var("Rd", 53178 F4), 53179 Var("Rn", 53180 F4), 53181 Var("imm12", 53182 FTy 12)])), 53183 qTy)))), 53184 (TP[LW(11, 53185 4), 53186 AVar 53187 (PTy(F4, 53188 PTy(F4, 53189 F1)))], 53190 MB(ITE(Bop(Or, 53191 Bop(In, 53192 Var("Rd", 53193 F4), 53194 SL[LW(13, 53195 4), 53196 LW(15, 53197 4)]), 53198 Bop(In, 53199 Var("Rn", 53200 F4), 53201 SL[LW(13, 53202 4), 53203 LW(15, 53204 4)])), 53205 Call 53206 ("DECODE_UNPREDICTABLE", 53207 ATy(qTy, 53208 PTy(uTy, 53209 qTy)), 53210 TP[Var("mc", 53211 CTy"MachineCode"), 53212 LS 53213 "SBC (immediate)"]), 53214 MU(LU, 53215 qTy)), 53216 Close 53217 (AVar 53218 uTy, 53219 MU(Call 53220 ("Data", 53221 CTy"instruction", 53222 Call 53223 ("ArithLogicImmediate", 53224 CTy"Data", 53225 TP[LW(6, 53226 4), 53227 bVar"setflags", 53228 Var("Rd", 53229 F4), 53230 Var("Rn", 53231 F4), 53232 Var("imm12", 53233 FTy 12)])), 53234 qTy)))), 53235 (TP[LW(13, 53236 4), 53237 AVar 53238 F4, 53239 LW(15, 53240 4), 53241 LW(1, 53242 1)], 53243 MB(ITE(EQ(Var("Rn", 53244 F4), 53245 LW(15, 53246 4)), 53247 Call 53248 ("DECODE_UNPREDICTABLE", 53249 ATy(qTy, 53250 PTy(uTy, 53251 qTy)), 53252 TP[Var("mc", 53253 CTy"MachineCode"), 53254 LS 53255 "CMP (immediate)"]), 53256 MU(LU, 53257 qTy)), 53258 Close 53259 (AVar 53260 uTy, 53261 MU(Call 53262 ("Data", 53263 CTy"instruction", 53264 Call 53265 ("TestCompareImmediate", 53266 CTy"Data", 53267 TP[LW(2, 53268 2), 53269 Var("Rn", 53270 F4), 53271 Var("imm12", 53272 FTy 12)])), 53273 qTy)))), 53274 (TP[LW(13, 53275 4), 53276 AVar 53277 (PTy(F4, 53278 PTy(F4, 53279 F1)))], 53280 MB(ITE(Bop(Or, 53281 Bop(Or, 53282 EQ(Var("Rd", 53283 F4), 53284 LW(13, 53285 4)), 53286 Bop(And, 53287 EQ(Var("Rd", 53288 F4), 53289 LW(15, 53290 4)), 53291 Mop(Not, 53292 bVar"setflags"))), 53293 EQ(Var("Rn", 53294 F4), 53295 LW(15, 53296 4))), 53297 Call 53298 ("DECODE_UNPREDICTABLE", 53299 ATy(qTy, 53300 PTy(uTy, 53301 qTy)), 53302 TP[Var("mc", 53303 CTy"MachineCode"), 53304 LS 53305 "SUB (immediate)"]), 53306 MU(LU, 53307 qTy)), 53308 Close 53309 (AVar 53310 uTy, 53311 MU(Call 53312 ("Data", 53313 CTy"instruction", 53314 Call 53315 ("ArithLogicImmediate", 53316 CTy"Data", 53317 TP[LW(2, 53318 4), 53319 bVar"setflags", 53320 Var("Rd", 53321 F4), 53322 Var("Rn", 53323 F4), 53324 Var("imm12", 53325 FTy 12)])), 53326 qTy)))), 53327 (TP[LW(14, 53328 4), 53329 AVar 53330 (PTy(F4, 53331 PTy(F4, 53332 F1)))], 53333 MB(ITE(Bop(Or, 53334 Bop(In, 53335 Var("Rd", 53336 F4), 53337 SL[LW(13, 53338 4), 53339 LW(15, 53340 4)]), 53341 Bop(In, 53342 Var("Rn", 53343 F4), 53344 SL[LW(13, 53345 4), 53346 LW(15, 53347 4)])), 53348 Call 53349 ("DECODE_UNPREDICTABLE", 53350 ATy(qTy, 53351 PTy(uTy, 53352 qTy)), 53353 TP[Var("mc", 53354 CTy"MachineCode"), 53355 LS 53356 "RSB (immediate)"]), 53357 MU(LU, 53358 qTy)), 53359 Close 53360 (AVar 53361 uTy, 53362 MU(Call 53363 ("Data", 53364 CTy"instruction", 53365 Call 53366 ("ArithLogicImmediate", 53367 CTy"Data", 53368 TP[LW(3, 53369 4), 53370 bVar"setflags", 53371 Var("Rd", 53372 F4), 53373 Var("Rn", 53374 F4), 53375 Var("imm12", 53376 FTy 12)])), 53377 qTy)))), 53378 (AVar 53379 (PTy(F4, 53380 PTy(F4, 53381 PTy(F4, 53382 F1)))), 53383 MU(Call 53384 ("Undefined", 53385 CTy"instruction", 53386 LW(0, 53387 32)), 53388 qTy))]))))))), 53389 Call 53390 ("Skip", 53391 ATy(qTy, 53392 PTy(CTy"instruction", 53393 qTy)),LU)))))))))), 53394 (Bop(And,bVar"b'25", 53395 Bop(And,Mop(Not,bVar"b'24"), 53396 Bop(And,Mop(Not,bVar"b'23"), 53397 Bop(And,Mop(Not,bVar"b'22"), 53398 Bop(And,Mop(Not,bVar"b'21"), 53399 Mop(Not,bVar"b'20")))))), 53400 Let(Var("Rd",F4), 53401 Mop(Cast F4, 53402 LL[bVar"b'11",bVar"b'10",bVar"b'9", 53403 bVar"b'8"]), 53404 MB(Call 53405 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 53406 Close 53407 (Var("v",F4), 53408 MB(MB(MB(Call 53409 ("HaveThumb2", 53410 ATy(qTy,PTy(bTy,qTy)),LU), 53411 Close 53412 (bVar"v0", 53413 MU(TP[Var("v",F4),bVar"v0"], 53414 qTy))), 53415 Close 53416 (Var("v",PTy(F4,bTy)), 53417 Call 53418 ("Take",ATy(qTy,PTy(bTy,qTy)), 53419 Var("v",PTy(F4,bTy))))), 53420 Close 53421 (bVar"b", 53422 ITE(bVar"b", 53423 MB(ITE(Bop(In,Var("Rd",F4), 53424 SL[LW(13,4),LW(15,4)]), 53425 Call 53426 ("DECODE_UNPREDICTABLE", 53427 ATy(qTy,PTy(uTy,qTy)), 53428 TP[Var("mc", 53429 CTy"MachineCode"), 53430 LS 53431 "ADDW (immediate)"]), 53432 MU(LU,qTy)), 53433 Close 53434 (AVar uTy, 53435 MU(Call 53436 ("Data", 53437 CTy"instruction", 53438 Call 53439 ("AddSub", 53440 CTy"Data", 53441 TP[LF, 53442 Var("Rd",F4), 53443 Mop(Cast F4, 53444 LL[bVar"b'19", 53445 bVar"b'18", 53446 bVar"b'17", 53447 bVar"b'16"]), 53448 CC[Mop(Cast 53449 F1, 53450 LL[bVar"b'26"]), 53451 Mop(Cast 53452 (FTy 3), 53453 LL[bVar"b'14", 53454 bVar"b'13", 53455 bVar"b'12"]), 53456 Mop(Cast 53457 F8, 53458 LL[bVar"b'7", 53459 bVar"b'6", 53460 bVar"b'5", 53461 bVar"b'4", 53462 bVar"b'3", 53463 bVar"b'2", 53464 bVar"b'1", 53465 bVar"b'0"])]])), 53466 qTy))), 53467 Call 53468 ("Skip", 53469 ATy(qTy, 53470 PTy(CTy"instruction",qTy)), 53471 LU)))))))), 53472 (Bop(And,bVar"b'25", 53473 Bop(And,Mop(Not,bVar"b'24"), 53474 Bop(And,bVar"b'23", 53475 Bop(And,Mop(Not,bVar"b'22"), 53476 Bop(And,bVar"b'21", 53477 Mop(Not,bVar"b'20")))))), 53478 Let(Var("Rd",F4), 53479 Mop(Cast F4, 53480 LL[bVar"b'11",bVar"b'10",bVar"b'9", 53481 bVar"b'8"]), 53482 MB(Call 53483 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 53484 Close 53485 (Var("v",F4), 53486 MB(MB(MB(Call 53487 ("HaveThumb2", 53488 ATy(qTy,PTy(bTy,qTy)),LU), 53489 Close 53490 (bVar"v0", 53491 MU(TP[Var("v",F4),bVar"v0"], 53492 qTy))), 53493 Close 53494 (Var("v",PTy(F4,bTy)), 53495 Call 53496 ("Take",ATy(qTy,PTy(bTy,qTy)), 53497 Var("v",PTy(F4,bTy))))), 53498 Close 53499 (bVar"b", 53500 ITE(bVar"b", 53501 MB(ITE(Bop(In,Var("Rd",F4), 53502 SL[LW(13,4),LW(15,4)]), 53503 Call 53504 ("DECODE_UNPREDICTABLE", 53505 ATy(qTy,PTy(uTy,qTy)), 53506 TP[Var("mc", 53507 CTy"MachineCode"), 53508 LS 53509 "SUBW (immediate)"]), 53510 MU(LU,qTy)), 53511 Close 53512 (AVar uTy, 53513 MU(Call 53514 ("Data", 53515 CTy"instruction", 53516 Call 53517 ("AddSub", 53518 CTy"Data", 53519 TP[LT, 53520 Var("Rd",F4), 53521 Mop(Cast F4, 53522 LL[bVar"b'19", 53523 bVar"b'18", 53524 bVar"b'17", 53525 bVar"b'16"]), 53526 CC[Mop(Cast 53527 F1, 53528 LL[bVar"b'26"]), 53529 Mop(Cast 53530 (FTy 3), 53531 LL[bVar"b'14", 53532 bVar"b'13", 53533 bVar"b'12"]), 53534 Mop(Cast 53535 F8, 53536 LL[bVar"b'7", 53537 bVar"b'6", 53538 bVar"b'5", 53539 bVar"b'4", 53540 bVar"b'3", 53541 bVar"b'2", 53542 bVar"b'1", 53543 bVar"b'0"])]])), 53544 qTy))), 53545 Call 53546 ("Skip", 53547 ATy(qTy, 53548 PTy(CTy"instruction",qTy)), 53549 LU)))))))), 53550 (Bop(And,bVar"b'25", 53551 Bop(And,Mop(Not,bVar"b'24"), 53552 Bop(And,bVar"b'22", 53553 Bop(And,Mop(Not,bVar"b'21"), 53554 Mop(Not,bVar"b'20"))))), 53555 Let(Var("Rd",F4), 53556 Mop(Cast F4, 53557 LL[bVar"b'11",bVar"b'10",bVar"b'9", 53558 bVar"b'8"]), 53559 MB(Call 53560 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 53561 Close 53562 (Var("v",F4), 53563 MB(MB(MB(Call 53564 ("HaveThumb2", 53565 ATy(qTy,PTy(bTy,qTy)),LU), 53566 Close 53567 (bVar"v0", 53568 MU(TP[Var("v",F4),bVar"v0"], 53569 qTy))), 53570 Close 53571 (Var("v",PTy(F4,bTy)), 53572 Call 53573 ("Take",ATy(qTy,PTy(bTy,qTy)), 53574 Var("v",PTy(F4,bTy))))), 53575 Close 53576 (bVar"b", 53577 ITE(bVar"b", 53578 MB(ITE(Bop(In,Var("Rd",F4), 53579 SL[LW(13,4),LW(15,4)]), 53580 Call 53581 ("DECODE_UNPREDICTABLE", 53582 ATy(qTy,PTy(uTy,qTy)), 53583 TP[Var("mc", 53584 CTy"MachineCode"), 53585 LS 53586 "MOVT or MOVW (immediate)"]), 53587 MU(LU,qTy)), 53588 Close 53589 (AVar uTy, 53590 MU(Call 53591 ("Data", 53592 CTy"instruction", 53593 Call 53594 ("MoveHalfword", 53595 CTy"Data", 53596 TP[EQ(Mop(Cast 53597 F1, 53598 LL[bVar"b'23"]), 53599 LW(1,1)), 53600 Var("Rd",F4), 53601 CC[Mop(Cast 53602 F4, 53603 LL[bVar"b'19", 53604 bVar"b'18", 53605 bVar"b'17", 53606 bVar"b'16"]), 53607 Mop(Cast 53608 F1, 53609 LL[bVar"b'26"]), 53610 Mop(Cast 53611 (FTy 3), 53612 LL[bVar"b'14", 53613 bVar"b'13", 53614 bVar"b'12"]), 53615 Mop(Cast 53616 F8, 53617 LL[bVar"b'7", 53618 bVar"b'6", 53619 bVar"b'5", 53620 bVar"b'4", 53621 bVar"b'3", 53622 bVar"b'2", 53623 bVar"b'1", 53624 bVar"b'0"])]])), 53625 qTy))), 53626 Call 53627 ("Skip", 53628 ATy(qTy, 53629 PTy(CTy"instruction",qTy)), 53630 LU)))))))), 53631 (Bop(And,bVar"b'25", 53632 Bop(And,bVar"b'24", 53633 Bop(And,Mop(Not,bVar"b'22"), 53634 Bop(And,bVar"b'21", 53635 Bop(And,Mop(Not,bVar"b'20"), 53636 Bop(And,Mop(Not,bVar"b'14"), 53637 Bop(And, 53638 Mop(Not,bVar"b'13"), 53639 Bop(And, 53640 Mop(Not,bVar"b'12"), 53641 Bop(And, 53642 Mop(Not, 53643 bVar"b'7"), 53644 Mop(Not, 53645 bVar"b'6")))))))))), 53646 Let(Var("Rn",F4), 53647 Mop(Cast F4, 53648 LL[bVar"b'19",bVar"b'18",bVar"b'17", 53649 bVar"b'16"]), 53650 Let(Var("sat_imm",F4), 53651 Mop(Cast F4, 53652 LL[bVar"b'3",bVar"b'2",bVar"b'1", 53653 bVar"b'0"]), 53654 Let(Var("Rd",F4), 53655 Mop(Cast F4, 53656 LL[bVar"b'11",bVar"b'10",bVar"b'9", 53657 bVar"b'8"]), 53658 MB(Call 53659 ("ThumbCondition", 53660 ATy(qTy,PTy(F4,qTy)),LU), 53661 Close 53662 (Var("v",F4), 53663 MB(MB(MB(Call 53664 ("HaveThumb2", 53665 ATy(qTy,PTy(bTy,qTy)), 53666 LU), 53667 Close 53668 (bVar"v0", 53669 MU(TP[Var("v",F4), 53670 bVar"v0"],qTy))), 53671 Close 53672 (Var("v",PTy(F4,bTy)), 53673 Call 53674 ("Take", 53675 ATy(qTy,PTy(bTy,qTy)), 53676 Var("v",PTy(F4,bTy))))), 53677 Close 53678 (bVar"b", 53679 ITE(bVar"b", 53680 MB(ITE(Bop(Or, 53681 Bop(In, 53682 Var("Rd", 53683 F4), 53684 SL[LW(13, 53685 4), 53686 LW(15, 53687 4)]), 53688 Bop(In, 53689 Var("Rn", 53690 F4), 53691 SL[LW(13, 53692 4), 53693 LW(15, 53694 4)])), 53695 Call 53696 ("DECODE_UNPREDICTABLE", 53697 ATy(qTy, 53698 PTy(uTy, 53699 qTy)), 53700 TP[Var("mc", 53701 CTy"MachineCode"), 53702 LS 53703 "Saturate16"]), 53704 MU(LU,qTy)), 53705 Close 53706 (AVar uTy, 53707 MU(Let(bVar"unsigned", 53708 EQ(Mop(Cast 53709 F1, 53710 LL[bVar"b'23"]), 53711 LW(1,1)), 53712 Call 53713 ("Media", 53714 CTy"instruction", 53715 Call 53716 ("Saturate16", 53717 CTy"Media", 53718 TP[ITE(bVar"unsigned", 53719 Mop(Cast 53720 nTy, 53721 Var("sat_imm", 53722 F4)), 53723 Bop(Add, 53724 Mop(Cast 53725 nTy, 53726 Var("sat_imm", 53727 F4)), 53728 LN 53729 1)), 53730 bVar"unsigned", 53731 Var("Rd", 53732 F4), 53733 Var("Rn", 53734 F4)]))), 53735 qTy))), 53736 Call 53737 ("Skip", 53738 ATy(qTy, 53739 PTy(CTy"instruction", 53740 qTy)),LU)))))))))), 53741 (Bop(And,bVar"b'25", 53742 Bop(And,bVar"b'24", 53743 Bop(And,Mop(Not,bVar"b'22"), 53744 Mop(Not,bVar"b'20")))), 53745 Let(Var("Rn",F4), 53746 Mop(Cast F4, 53747 LL[bVar"b'19",bVar"b'18",bVar"b'17", 53748 bVar"b'16"]), 53749 Let(Var("sat_imm",FTy 5), 53750 Mop(Cast(FTy 5), 53751 LL[bVar"b'4",bVar"b'3",bVar"b'2", 53752 bVar"b'1",bVar"b'0"]), 53753 Let(Var("Rd",F4), 53754 Mop(Cast F4, 53755 LL[bVar"b'11",bVar"b'10",bVar"b'9", 53756 bVar"b'8"]), 53757 MB(Call 53758 ("ThumbCondition", 53759 ATy(qTy,PTy(F4,qTy)),LU), 53760 Close 53761 (Var("v",F4), 53762 MB(MB(MB(Call 53763 ("HaveThumb2", 53764 ATy(qTy,PTy(bTy,qTy)), 53765 LU), 53766 Close 53767 (bVar"v0", 53768 MU(TP[Var("v",F4), 53769 bVar"v0"],qTy))), 53770 Close 53771 (Var("v",PTy(F4,bTy)), 53772 Call 53773 ("Take", 53774 ATy(qTy,PTy(bTy,qTy)), 53775 Var("v",PTy(F4,bTy))))), 53776 Close 53777 (bVar"b", 53778 ITE(bVar"b", 53779 MB(ITE(Bop(Or, 53780 Bop(In, 53781 Var("Rd", 53782 F4), 53783 SL[LW(13, 53784 4), 53785 LW(15, 53786 4)]), 53787 Bop(In, 53788 Var("Rn", 53789 F4), 53790 SL[LW(13, 53791 4), 53792 LW(15, 53793 4)])), 53794 Call 53795 ("DECODE_UNPREDICTABLE", 53796 ATy(qTy, 53797 PTy(uTy, 53798 qTy)), 53799 TP[Var("mc", 53800 CTy"MachineCode"), 53801 LS 53802 "Saturate"]), 53803 MU(LU,qTy)), 53804 Close 53805 (AVar uTy, 53806 MU(Let(bVar"unsigned", 53807 EQ(Mop(Cast 53808 F1, 53809 LL[bVar"b'23"]), 53810 LW(1,1)), 53811 Let(TP[Var("shift_t", 53812 CTy"SRType"), 53813 nVar"shift_n"], 53814 Call 53815 ("DecodeImmShift", 53816 PTy(CTy"SRType", 53817 nTy), 53818 TP[CC[Mop(Cast 53819 F1, 53820 LL[bVar"b'21"]), 53821 LW(0, 53822 1)], 53823 CC[Mop(Cast 53824 (FTy 3), 53825 LL[bVar"b'14", 53826 bVar"b'13", 53827 bVar"b'12"]), 53828 Mop(Cast 53829 (FTy 2), 53830 LL[bVar"b'7", 53831 bVar"b'6"])]]), 53832 Call 53833 ("Media", 53834 CTy"instruction", 53835 Call 53836 ("Saturate", 53837 CTy"Media", 53838 TP[Var("shift_t", 53839 CTy"SRType"), 53840 nVar"shift_n", 53841 ITE(bVar"unsigned", 53842 Mop(Cast 53843 nTy, 53844 Var("sat_imm", 53845 FTy 5)), 53846 Bop(Add, 53847 Mop(Cast 53848 nTy, 53849 Var("sat_imm", 53850 FTy 5)), 53851 LN 53852 1)), 53853 bVar"unsigned", 53854 Var("Rd", 53855 F4), 53856 Var("Rn", 53857 F4)])))), 53858 qTy))), 53859 Call 53860 ("Skip", 53861 ATy(qTy, 53862 PTy(CTy"instruction", 53863 qTy)),LU)))))))))), 53864 (Bop(And,bVar"b'25", 53865 Bop(And,bVar"b'24", 53866 Bop(And,bVar"b'22", 53867 Bop(And,Mop(Not,bVar"b'21"), 53868 Mop(Not,bVar"b'20"))))), 53869 Let(Var("Rn",F4), 53870 Mop(Cast F4, 53871 LL[bVar"b'19",bVar"b'18",bVar"b'17", 53872 bVar"b'16"]), 53873 Let(Var("Rd",F4), 53874 Mop(Cast F4, 53875 LL[bVar"b'11",bVar"b'10",bVar"b'9", 53876 bVar"b'8"]), 53877 MB(Call 53878 ("ThumbCondition", 53879 ATy(qTy,PTy(F4,qTy)),LU), 53880 Close 53881 (Var("v",F4), 53882 MB(MB(MB(Call 53883 ("HaveThumb2", 53884 ATy(qTy,PTy(bTy,qTy)),LU), 53885 Close 53886 (bVar"v0", 53887 MU(TP[Var("v",F4), 53888 bVar"v0"],qTy))), 53889 Close 53890 (Var("v",PTy(F4,bTy)), 53891 Call 53892 ("Take", 53893 ATy(qTy,PTy(bTy,qTy)), 53894 Var("v",PTy(F4,bTy))))), 53895 Close 53896 (bVar"b", 53897 ITE(bVar"b", 53898 Let(nVar"widthminus1", 53899 Mop(Cast nTy, 53900 Mop(Cast(FTy 5), 53901 LL[bVar"b'4", 53902 bVar"b'3", 53903 bVar"b'2", 53904 bVar"b'1", 53905 bVar"b'0"])), 53906 Let(nVar"lsbit", 53907 Mop(Cast nTy, 53908 CC[Mop(Cast 53909 (FTy 3), 53910 LL[bVar"b'14", 53911 bVar"b'13", 53912 bVar"b'12"]), 53913 Mop(Cast 53914 (FTy 2), 53915 LL[bVar"b'7", 53916 bVar"b'6"])]), 53917 MB(ITE(Bop(Or, 53918 Bop(Or, 53919 Bop(In, 53920 Var("Rd", 53921 F4), 53922 SL[LW(13, 53923 4), 53924 LW(15, 53925 4)]), 53926 Bop(In, 53927 Var("Rn", 53928 F4), 53929 SL[LW(13, 53930 4), 53931 LW(15, 53932 4)])), 53933 Bop(Lt, 53934 LN 53935 31, 53936 Bop(Add, 53937 nVar"lsbit", 53938 nVar"widthminus1"))), 53939 Call 53940 ("DECODE_UNPREDICTABLE", 53941 ATy(qTy, 53942 PTy(uTy, 53943 qTy)), 53944 TP[Var("mc", 53945 CTy"MachineCode"), 53946 LS 53947 "BitFieldExtract"]), 53948 MU(LU,qTy)), 53949 Close 53950 (AVar uTy, 53951 MU(Call 53952 ("Media", 53953 CTy"instruction", 53954 Call 53955 ("BitFieldExtract", 53956 CTy"Media", 53957 TP[EQ(Mop(Cast 53958 F1, 53959 LL[bVar"b'23"]), 53960 LW(1, 53961 1)), 53962 Var("Rd", 53963 F4), 53964 Var("Rn", 53965 F4), 53966 nVar"lsbit", 53967 nVar"widthminus1"])), 53968 qTy))))), 53969 Call 53970 ("Skip", 53971 ATy(qTy, 53972 PTy(CTy"instruction", 53973 qTy)),LU))))))))), 53974 (Bop(And,bVar"b'25", 53975 Bop(And,bVar"b'24", 53976 Bop(And,Mop(Not,bVar"b'23"), 53977 Bop(And,bVar"b'22", 53978 Bop(And,bVar"b'21", 53979 Mop(Not,bVar"b'20")))))), 53980 Let(Var("Rn",F4), 53981 Mop(Cast F4, 53982 LL[bVar"b'19",bVar"b'18",bVar"b'17", 53983 bVar"b'16"]), 53984 Let(Var("Rd",F4), 53985 Mop(Cast F4, 53986 LL[bVar"b'11",bVar"b'10",bVar"b'9", 53987 bVar"b'8"]), 53988 MB(Call 53989 ("ThumbCondition", 53990 ATy(qTy,PTy(F4,qTy)),LU), 53991 Close 53992 (Var("v",F4), 53993 MB(MB(MB(Call 53994 ("HaveThumb2", 53995 ATy(qTy,PTy(bTy,qTy)),LU), 53996 Close 53997 (bVar"v0", 53998 MU(TP[Var("v",F4), 53999 bVar"v0"],qTy))), 54000 Close 54001 (Var("v",PTy(F4,bTy)), 54002 Call 54003 ("Take", 54004 ATy(qTy,PTy(bTy,qTy)), 54005 Var("v",PTy(F4,bTy))))), 54006 Close 54007 (bVar"b", 54008 ITE(bVar"b", 54009 Let(nVar"msbit", 54010 Mop(Cast nTy, 54011 Mop(Cast(FTy 5), 54012 LL[bVar"b'4", 54013 bVar"b'3", 54014 bVar"b'2", 54015 bVar"b'1", 54016 bVar"b'0"])), 54017 Let(nVar"lsbit", 54018 Mop(Cast nTy, 54019 CC[Mop(Cast 54020 (FTy 3), 54021 LL[bVar"b'14", 54022 bVar"b'13", 54023 bVar"b'12"]), 54024 Mop(Cast 54025 (FTy 2), 54026 LL[bVar"b'7", 54027 bVar"b'6"])]), 54028 MB(ITE(Bop(Or, 54029 Bop(Or, 54030 Bop(In, 54031 Var("Rd", 54032 F4), 54033 SL[LW(13, 54034 4), 54035 LW(15, 54036 4)]), 54037 EQ(Var("Rn", 54038 F4), 54039 LW(13, 54040 4))), 54041 Bop(Lt, 54042 nVar"msbit", 54043 nVar"lsbit")), 54044 Call 54045 ("DECODE_UNPREDICTABLE", 54046 ATy(qTy, 54047 PTy(uTy, 54048 qTy)), 54049 TP[Var("mc", 54050 CTy"MachineCode"), 54051 LS 54052 "BitFieldClearOrInsert"]), 54053 MU(LU,qTy)), 54054 Close 54055 (AVar uTy, 54056 MU(Call 54057 ("Media", 54058 CTy"instruction", 54059 Call 54060 ("BitFieldClearOrInsert", 54061 CTy"Media", 54062 TP[Var("Rd", 54063 F4), 54064 Var("Rn", 54065 F4), 54066 nVar"lsbit", 54067 nVar"msbit"])), 54068 qTy))))), 54069 Call 54070 ("Skip", 54071 ATy(qTy, 54072 PTy(CTy"instruction", 54073 qTy)),LU)))))))))], 54074 Call 54075 ("UndefinedThumb", 54076 ATy(qTy,PTy(CTy"instruction",qTy)),LU)))], 54077 Call 54078 ("UndefinedThumb",ATy(qTy,PTy(CTy"instruction",qTy)),LU))))) 54079; 54080val Decode_def = Def 54081 ("Decode",Var("mc",CTy"MachineCode"), 54082 CS(Var("mc",CTy"MachineCode"), 54083 [(Call("ARM",CTy"MachineCode",Var("w",F32)), 54084 Call("DecodeARM",ATy(qTy,PTy(CTy"instruction",qTy)),Var("w",F32))), 54085 (Call("Thumb",CTy"MachineCode",Var("h",F16)), 54086 Call 54087 ("DecodeThumb",ATy(qTy,PTy(CTy"instruction",qTy)),Var("h",F16))), 54088 (Call("ThumbEE",CTy"MachineCode",Var("h",F16)), 54089 Call 54090 ("DecodeThumbEE",ATy(qTy,PTy(CTy"instruction",qTy)),Var("h",F16))), 54091 (Call("Thumb2",CTy"MachineCode",Var("hs",PTy(F16,F16))), 54092 Call 54093 ("DecodeThumb2",ATy(qTy,PTy(CTy"instruction",qTy)), 54094 Var("hs",PTy(F16,F16))))])) 54095; 54096val Next_def = Def0 54097 ("Next", 54098 MB(MW(Close(qVar"s",Rupd("isfetch",TP[qVar"s",LT]))), 54099 Close 54100 (AVar uTy, 54101 MB(MW(Close(qVar"s",Rupd("data_abort",TP[qVar"s",LF]))), 54102 Close 54103 (AVar uTy, 54104 MB(MW(Close 54105 (qVar"s",Rupd("transfer_unknown",TP[qVar"s",LF]))), 54106 Close 54107 (AVar uTy, 54108 MB(Const("Fetch",ATy(qTy,PTy(CTy"MachineCode",qTy))), 54109 Close 54110 (Var("i",CTy"MachineCode"), 54111 MB(MW(Close 54112 (qVar"s",Rupd("isfetch",TP[qVar"s",LF]))), 54113 Close 54114 (AVar uTy, 54115 MB(MR(Close 54116 (qVar"s", 54117 Dest("data_abort",bTy,qVar"s"))), 54118 Close 54119 (bVar"b", 54120 ITE(bVar"b", 54121 Call 54122 ("TakePrefetchAbortException", 54123 ATy(qTy,PTy(uTy,qTy)),LU), 54124 MB(Call 54125 ("Decode", 54126 ATy(qTy, 54127 PTy(CTy"instruction", 54128 qTy)), 54129 Var("i",CTy"MachineCode")), 54130 Close 54131 (Var("v",CTy"instruction"), 54132 MB(Call 54133 ("Run", 54134 ATy(qTy, 54135 PTy(uTy,qTy)), 54136 Var("v", 54137 CTy"instruction")), 54138 Close 54139 (AVar uTy, 54140 Call 54141 ("ITAdvance", 54142 ATy(qTy, 54143 PTy(uTy,qTy)), 54144 LU))))))))))))))))))) 54145 54146val () = Import.finish 0