1(* armScript.sml - generated by L3 - Wed Jan 31 16:14:43 2018 *) 2open HolKernel boolLib bossLib Import 3 4val () = Import.start "arm" 5 6val () = ieee_underflow_before := true 7 8val _ = Construct 9 [("Architecture", 10 [("ARMv4",[]),("ARMv4T",[]),("ARMv5T",[]),("ARMv5TE",[]),("ARMv6",[]), 11 ("ARMv6K",[]),("ARMv6T2",[]),("ARMv7_A",[]),("ARMv7_R",[])])] 12; 13val _ = Construct 14 [("Extensions", 15 [("Extension_ThumbEE",[]),("Extension_Security",[]), 16 ("Extension_Multiprocessing",[]),("Extension_Virtualization",[]), 17 ("Extension_AdvanvedSIMD",[])])] 18; 19val _ = Record 20 ("PSR", 21 [("A",bTy),("C",bTy),("E",bTy),("F",bTy),("GE",F4),("I",bTy),("IT",F8), 22 ("J",bTy),("M",FTy 5),("N",bTy),("Q",bTy),("T",bTy),("V",bTy), 23 ("Z",bTy),("psr'rst",F4)]) 24; 25val _ = Record ("CP14",[("TEEHBR",F32)]) 26; 27val _ = Record 28 ("SCTLR", 29 [("A",bTy),("B",bTy),("BR",bTy),("C",bTy),("DZ",bTy),("EE",bTy), 30 ("FI",bTy),("I",bTy),("IE",bTy),("M",bTy),("NMFI",bTy),("RR",bTy), 31 ("SW",bTy),("TE",bTy),("U",bTy),("V",bTy),("VE",bTy),("Z",bTy), 32 ("sctlr'rst",FTy 14)]) 33; 34val _ = Record 35 ("HSCTLR", 36 [("A",bTy),("C",bTy),("CP15BEN",bTy),("EE",bTy),("FI",bTy),("I",bTy), 37 ("M",bTy),("TE",bTy),("WXN",bTy),("hsctlr'rst",FTy 23)]) 38; 39val _ = Record ("HSR",[("EC",FTy 6),("IL",bTy),("ISS",FTy 25)]) 40; 41val _ = Record 42 ("SCR", 43 [("AW",bTy),("EA",bTy),("FIQ",bTy),("FW",bTy),("HCE",bTy),("IRQ",bTy), 44 ("NS",bTy),("SCD",bTy),("SIF",bTy),("nET",bTy),("scr'rst",FTy 22)]) 45; 46val _ = Record 47 ("NSACR", 48 [("NSASEDIS",bTy),("NSD32DIS",bTy),("NSTRCDIS",bTy),("RFR",bTy), 49 ("cp",FTy 14),("nsacr'rst",FTy 14)]) 50; 51val _ = Record 52 ("HCR", 53 [("AMO",bTy),("BSU",FTy 2),("DC",bTy),("FB",bTy),("FMO",bTy), 54 ("IMO",bTy),("PTW",bTy),("SWIO",bTy),("TAC",bTy),("TGE",bTy), 55 ("TID",F4),("TIDCP",bTy),("TPC",bTy),("TPU",bTy),("TSC",bTy), 56 ("TSW",bTy),("TTLB",bTy),("TVM",bTy),("TWE",bTy),("TWI",bTy), 57 ("VA",bTy),("VF",bTy),("VI",bTy),("VM",bTy),("hcr'rst",F4)]) 58; 59val _ = Record 60 ("CP15", 61 [("HCR",CTy"HCR"),("HSCTLR",CTy"HSCTLR"),("HSR",CTy"HSR"), 62 ("MVBAR",F32),("NSACR",CTy"NSACR"),("SCR",CTy"SCR"), 63 ("SCTLR",CTy"SCTLR"),("VBAR",F32)]) 64; 65val _ = Construct 66 [("InstrSet", 67 [("InstrSet_ARM",[]),("InstrSet_Thumb",[]),("InstrSet_Jazelle",[]), 68 ("InstrSet_ThumbEE",[])])] 69; 70val _ = Construct 71 [("Encoding", 72 [("Encoding_Thumb",[]),("Encoding_Thumb2",[]),("Encoding_ARM",[])])] 73; 74val _ = Construct 75 [("RName", 76 [("RName_0usr",[]),("RName_1usr",[]),("RName_2usr",[]), 77 ("RName_3usr",[]),("RName_4usr",[]),("RName_5usr",[]), 78 ("RName_6usr",[]),("RName_7usr",[]),("RName_8usr",[]), 79 ("RName_8fiq",[]),("RName_9usr",[]),("RName_9fiq",[]), 80 ("RName_10usr",[]),("RName_10fiq",[]),("RName_11usr",[]), 81 ("RName_11fiq",[]),("RName_12usr",[]),("RName_12fiq",[]), 82 ("RName_SPusr",[]),("RName_SPfiq",[]),("RName_SPirq",[]), 83 ("RName_SPsvc",[]),("RName_SPabt",[]),("RName_SPund",[]), 84 ("RName_SPmon",[]),("RName_SPhyp",[]),("RName_LRusr",[]), 85 ("RName_LRfiq",[]),("RName_LRirq",[]),("RName_LRsvc",[]), 86 ("RName_LRabt",[]),("RName_LRund",[]),("RName_LRmon",[]), 87 ("RName_PC",[])])] 88; 89val _ = Construct 90 [("SRType", 91 [("SRType_LSL",[]),("SRType_LSR",[]),("SRType_ASR",[]), 92 ("SRType_ROR",[]),("SRType_RRX",[])])] 93; 94val _ = Construct 95 [("VFPExtension",[("NoVFP",[]),("VFPv2",[]),("VFPv3",[]),("VFPv4",[])])] 96; 97val _ = Record 98 ("FPSCR", 99 [("AHP",bTy),("C",bTy),("DN",bTy),("DZC",bTy),("DZE",bTy),("FZ",bTy), 100 ("IDC",bTy),("IDE",bTy),("IOC",bTy),("IOE",bTy),("IXC",bTy), 101 ("IXE",bTy),("N",bTy),("OFC",bTy),("OFE",bTy),("QC",bTy), 102 ("RMode",FTy 2),("UFC",bTy),("UFE",bTy),("V",bTy),("Z",bTy), 103 ("fpscr'rst",FTy 10)]) 104; 105val _ = Record ("FP",[("FPSCR",CTy"FPSCR"),("REG",ATy(FTy 5,F64))]) 106; 107val _ = Construct 108 [("VFPNegMul", 109 [("VFPNegMul_VNMLA",[]),("VFPNegMul_VNMLS",[]),("VFPNegMul_VNMUL",[])])] 110; 111val _ = Construct 112 [("offset1", 113 [("immediate_form1",[F32]), 114 ("register_form1",[PTy(F4,PTy(CTy"SRType",nTy))])])] 115; 116val _ = Construct 117 [("offset2",[("immediate_form2",[F32]),("register_form2",[F4])])] 118; 119val _ = Construct 120 [("Hint", 121 [("Breakpoint",[F32]),("DataMemoryBarrier",[F4]), 122 ("DataSynchronizationBarrier",[F4]),("Debug",[F4]), 123 ("InstructionSynchronizationBarrier",[F4]), 124 ("PreloadData",[PTy(bTy,PTy(bTy,PTy(F4,CTy"offset1")))]), 125 ("PreloadDataLiteral",[PTy(bTy,F32)]), 126 ("PreloadInstruction",[PTy(bTy,PTy(F4,CTy"offset1"))]), 127 ("SendEvent",[]),("WaitForEvent",[]),("WaitForInterrupt",[]), 128 ("Yield",[])])] 129; 130val _ = Construct 131 [("System", 132 [("ChangeProcessorState", 133 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(bTy,PTy(bTy,OTy(FTy 5))))))]), 134 ("EnterxLeavex",[bTy]),("ExceptionReturn",[]), 135 ("HypervisorCall",[F16]), 136 ("MoveToBankedOrSpecialRegister",[PTy(bTy,PTy(FTy 5,F4))]), 137 ("MoveToRegisterFromBankedOrSpecial",[PTy(bTy,PTy(FTy 5,F4))]), 138 ("MoveToRegisterFromSpecial",[PTy(bTy,F4)]), 139 ("MoveToSpecialFromImmediate",[PTy(bTy,PTy(F32,F4))]), 140 ("MoveToSpecialFromRegister",[PTy(bTy,PTy(F4,F4))]), 141 ("ReturnFromException",[PTy(bTy,PTy(bTy,PTy(bTy,F4)))]), 142 ("SecureMonitorCall",[F4]),("Setend",[bTy]), 143 ("StoreReturnState",[PTy(bTy,PTy(bTy,PTy(bTy,FTy 5)))]), 144 ("SupervisorCall",[F32])])] 145; 146val _ = Construct 147 [("Store", 148 [("StoreByte", 149 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))]), 150 ("StoreByteUnprivileged", 151 [PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))]), 152 ("StoreDual", 153 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,CTy"offset2"))))))]), 154 ("StoreExclusive",[PTy(F4,PTy(F4,PTy(F4,F32)))]), 155 ("StoreExclusiveByte",[PTy(F4,PTy(F4,F4))]), 156 ("StoreExclusiveDoubleword",[PTy(F4,PTy(F4,PTy(F4,F4)))]), 157 ("StoreExclusiveHalf",[PTy(F4,PTy(F4,F4))]), 158 ("StoreHalf", 159 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))]), 160 ("StoreHalfUnprivileged", 161 [PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset2"))))]), 162 ("StoreMultiple",[PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,F16))))]), 163 ("StoreMultipleUserRegisters",[PTy(bTy,PTy(bTy,PTy(F4,F16)))]), 164 ("StoreUnprivileged",[PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))]), 165 ("StoreWord", 166 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))])])] 167; 168val _ = Construct 169 [("Load", 170 [("LoadByte", 171 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))]), 172 ("LoadByteLiteral",[PTy(bTy,PTy(bTy,PTy(F4,F32)))]), 173 ("LoadByteUnprivileged", 174 [PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))]), 175 ("LoadDual", 176 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,CTy"offset2"))))))]), 177 ("LoadDualLiteral",[PTy(bTy,PTy(F4,PTy(F4,F32)))]), 178 ("LoadExclusive",[PTy(F4,PTy(F4,F32))]), 179 ("LoadExclusiveByte",[PTy(F4,F4)]), 180 ("LoadExclusiveDoubleword",[PTy(F4,PTy(F4,F4))]), 181 ("LoadExclusiveHalf",[PTy(F4,F4)]), 182 ("LoadHalf", 183 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))]), 184 ("LoadHalfLiteral",[PTy(bTy,PTy(bTy,PTy(F4,F32)))]), 185 ("LoadHalfUnprivileged", 186 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset2")))))]), 187 ("LoadLiteral",[PTy(bTy,PTy(F4,F32))]), 188 ("LoadMultiple",[PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,F16))))]), 189 ("LoadMultipleExceptionReturn", 190 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,FTy 15))))]), 191 ("LoadMultipleUserRegisters",[PTy(bTy,PTy(bTy,PTy(F4,FTy 15)))]), 192 ("LoadSignedByteUnprivileged", 193 [PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset2"))))]), 194 ("LoadUnprivileged",[PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))]), 195 ("LoadWord",[PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))])])] 196; 197val _ = Construct 198 [("Media", 199 [("BitFieldClearOrInsert",[PTy(F4,PTy(F4,PTy(nTy,nTy)))]), 200 ("BitFieldExtract",[PTy(bTy,PTy(F4,PTy(F4,PTy(nTy,nTy))))]), 201 ("ByteReverse",[PTy(F4,F4)]), 202 ("ByteReversePackedHalfword",[PTy(F4,F4)]), 203 ("ByteReverseSignedHalfword",[PTy(F4,F4)]), 204 ("ExtendByte",[PTy(bTy,PTy(F4,PTy(F4,PTy(F4,nTy))))]), 205 ("ExtendByte16",[PTy(bTy,PTy(F4,PTy(F4,PTy(F4,nTy))))]), 206 ("ExtendHalfword",[PTy(bTy,PTy(F4,PTy(F4,PTy(F4,nTy))))]), 207 ("PackHalfword", 208 [PTy(CTy"SRType",PTy(nTy,PTy(bTy,PTy(F4,PTy(F4,F4)))))]), 209 ("ReverseBits",[PTy(F4,F4)]), 210 ("Saturate",[PTy(CTy"SRType",PTy(nTy,PTy(nTy,PTy(bTy,PTy(F4,F4)))))]), 211 ("Saturate16",[PTy(nTy,PTy(bTy,PTy(F4,F4)))]), 212 ("SaturatingAddSubtract",[PTy(FTy 2,PTy(F4,PTy(F4,F4)))]), 213 ("SelectBytes",[PTy(F4,PTy(F4,F4))])])] 214; 215val _ = Construct 216 [("SIMD", 217 [("SignedAddSub16",[PTy(FTy 2,PTy(F4,PTy(F4,F4)))]), 218 ("SignedAddSub8",[PTy(bTy,PTy(F4,PTy(F4,F4)))]), 219 ("SignedHalvingAddSub16",[PTy(FTy 2,PTy(F4,PTy(F4,F4)))]), 220 ("SignedHalvingAddSub8",[PTy(bTy,PTy(F4,PTy(F4,F4)))]), 221 ("SignedSaturatingAddSub16",[PTy(FTy 2,PTy(F4,PTy(F4,F4)))]), 222 ("SignedSaturatingAddSub8",[PTy(bTy,PTy(F4,PTy(F4,F4)))]), 223 ("UnsignedAddSub16",[PTy(FTy 2,PTy(F4,PTy(F4,F4)))]), 224 ("UnsignedAddSub8",[PTy(bTy,PTy(F4,PTy(F4,F4)))]), 225 ("UnsignedHalvingAddSub16",[PTy(FTy 2,PTy(F4,PTy(F4,F4)))]), 226 ("UnsignedHalvingAddSub8",[PTy(bTy,PTy(F4,PTy(F4,F4)))]), 227 ("UnsignedSaturatingAddSub16",[PTy(FTy 2,PTy(F4,PTy(F4,F4)))]), 228 ("UnsignedSaturatingAddSub8",[PTy(bTy,PTy(F4,PTy(F4,F4)))]), 229 ("UnsignedSumAbsoluteDifferences",[PTy(F4,PTy(F4,PTy(F4,F4)))])])] 230; 231val _ = Construct 232 [("Multiply", 233 [("Multiply32",[PTy(bTy,PTy(F4,PTy(F4,F4)))]), 234 ("MultiplyAccumulate",[PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))]), 235 ("MultiplyAccumulateAccumulate",[PTy(F4,PTy(F4,PTy(F4,F4)))]), 236 ("MultiplyLong", 237 [PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))))]), 238 ("MultiplySubtract",[PTy(F4,PTy(F4,PTy(F4,F4)))]), 239 ("Signed16Multiply32Accumulate", 240 [PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))]), 241 ("Signed16Multiply32Result",[PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,F4))))]), 242 ("Signed16Multiply64Accumulate", 243 [PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))]), 244 ("Signed16x32Multiply32Accumulate", 245 [PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))]), 246 ("Signed16x32Multiply32Result",[PTy(bTy,PTy(F4,PTy(F4,F4)))]), 247 ("SignedMostSignificantMultiply", 248 [PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))]), 249 ("SignedMostSignificantMultiplySubtract", 250 [PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))]), 251 ("SignedMultiplyDual",[PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))]), 252 ("SignedMultiplyLongDual", 253 [PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))])])] 254; 255val _ = Construct 256 [("Data", 257 [("AddSub",[PTy(bTy,PTy(F4,PTy(F4,FTy 12)))]), 258 ("ArithLogicImmediate",[PTy(F4,PTy(bTy,PTy(F4,PTy(F4,FTy 12))))]), 259 ("CountLeadingZeroes",[PTy(F4,F4)]), 260 ("Move",[PTy(bTy,PTy(bTy,PTy(F4,FTy 12)))]), 261 ("MoveHalfword",[PTy(bTy,PTy(F4,F16))]), 262 ("Register", 263 [PTy(F4,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,PTy(CTy"SRType",nTy))))))]), 264 ("RegisterShiftedRegister", 265 [PTy(F4,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,PTy(CTy"SRType",F4))))))]), 266 ("ShiftImmediate", 267 [PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(CTy"SRType",nTy)))))]), 268 ("ShiftRegister", 269 [PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(CTy"SRType",F4)))))]), 270 ("TestCompareImmediate",[PTy(FTy 2,PTy(F4,FTy 12))]), 271 ("TestCompareRegister", 272 [PTy(FTy 2,PTy(F4,PTy(F4,PTy(CTy"SRType",nTy))))])])] 273; 274val _ = Construct 275 [("Branch", 276 [("BranchExchange",[F4]), 277 ("BranchLinkExchangeImmediate",[PTy(CTy"InstrSet",F32)]), 278 ("BranchLinkExchangeRegister",[F4]),("BranchTarget",[F32]), 279 ("CheckArray",[PTy(F4,F4)]),("CompareBranch",[PTy(bTy,PTy(F4,F32))]), 280 ("HandlerBranchLink",[PTy(bTy,F32)]), 281 ("HandlerBranchLinkParameter",[PTy(F32,F32)]), 282 ("HandlerBranchParameter",[PTy(F32,F32)]), 283 ("TableBranchByte",[PTy(bTy,PTy(F4,F4))])])] 284; 285val _ = Construct 286 [("VFP", 287 [("vabs",[PTy(bTy,PTy(FTy 5,FTy 5))]), 288 ("vadd",[PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))]), 289 ("vcmp",[PTy(bTy,PTy(FTy 5,OTy(FTy 5)))]), 290 ("vcvt_float",[PTy(bTy,PTy(FTy 5,FTy 5))]), 291 ("vcvt_from_integer",[PTy(bTy,PTy(bTy,PTy(FTy 5,FTy 5)))]), 292 ("vcvt_to_integer",[PTy(bTy,PTy(bTy,PTy(bTy,PTy(FTy 5,FTy 5))))]), 293 ("vdiv",[PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))]), 294 ("vfma_vfms",[PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))]), 295 ("vfnma_vfnms",[PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))]), 296 ("vldm",[PTy(bTy,PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(F4,F8)))))]), 297 ("vldr",[PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(F4,F32))))]), 298 ("vmla_vmls",[PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))]), 299 ("vmov",[PTy(bTy,PTy(FTy 5,FTy 5))]), 300 ("vmov_double",[PTy(bTy,PTy(F4,PTy(F4,FTy 5)))]), 301 ("vmov_imm",[PTy(bTy,PTy(FTy 5,F64))]), 302 ("vmov_single",[PTy(bTy,PTy(F4,FTy 5))]), 303 ("vmov_two_singles",[PTy(bTy,PTy(F4,PTy(F4,FTy 5)))]),("vmrs",[F4]), 304 ("vmsr",[F4]),("vmul",[PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))]), 305 ("vneg",[PTy(bTy,PTy(FTy 5,FTy 5))]), 306 ("vneg_mul", 307 [PTy(bTy,PTy(CTy"VFPNegMul",PTy(FTy 5,PTy(FTy 5,FTy 5))))]), 308 ("vsqrt",[PTy(bTy,PTy(FTy 5,FTy 5))]), 309 ("vstm",[PTy(bTy,PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(F4,F8)))))]), 310 ("vstr",[PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(F4,F32))))]), 311 ("vsub",[PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))])])] 312; 313val _ = Construct 314 [("instruction", 315 [("Branch",[CTy"Branch"]),("ClearExclusive",[]),("Data",[CTy"Data"]), 316 ("Divide",[PTy(bTy,PTy(F4,PTy(F4,F4)))]),("Hint",[CTy"Hint"]), 317 ("IfThen",[PTy(F4,F4)]),("Load",[CTy"Load"]),("Media",[CTy"Media"]), 318 ("Multiply",[CTy"Multiply"]),("NoOperation",[]),("SIMD",[CTy"SIMD"]), 319 ("Store",[CTy"Store"]),("Swap",[PTy(bTy,PTy(F4,PTy(F4,F4)))]), 320 ("System",[CTy"System"]),("Undefined",[F32]),("VFP",[CTy"VFP"])])] 321; 322val _ = Construct 323 [("MachineCode", 324 [("ARM",[F32]),("BadCode",[sTy]),("Thumb",[F16]), 325 ("Thumb2",[PTy(F16,F16)]),("ThumbEE",[F16])])] 326; 327val _ = Construct 328 [("exception", 329 [("ASSERT",[sTy]),("AlignmentFault",[F32]), 330 ("IMPLEMENTATION_DEFINED",[sTy]),("NoException",[]), 331 ("UNPREDICTABLE",[sTy]),("VFP_EXCEPTION",[sTy])])] 332; 333val _ = Record 334 ("arm_state", 335 [("Architecture",CTy"Architecture"),("CP14",CTy"CP14"), 336 ("CP15",CTy"CP15"),("CPSR",CTy"PSR"),("CurrentCondition",F4), 337 ("ELR_hyp",F32),("Encoding",CTy"Encoding"), 338 ("Extensions",STy(CTy"Extensions")),("FP",CTy"FP"), 339 ("MEM",ATy(F32,F8)),("REG",ATy(CTy"RName",F32)),("SPSR_abt",CTy"PSR"), 340 ("SPSR_fiq",CTy"PSR"),("SPSR_hyp",CTy"PSR"),("SPSR_irq",CTy"PSR"), 341 ("SPSR_mon",CTy"PSR"),("SPSR_svc",CTy"PSR"),("SPSR_und",CTy"PSR"), 342 ("VFPExtension",CTy"VFPExtension"),("exception",CTy"exception"), 343 ("undefined",bTy)]) 344; 345val qTy = CTy "arm_state"; 346fun qVar v = Term.mk_var (v, ParseDatatype.pretypeToType qTy); 347val raise'exception_def = Def 348 ("raise'exception",Var("e",CTy"exception"), 349 Close 350 (qVar"state", 351 TP[LX(VTy"a"), 352 ITE(EQ(Dest("exception",CTy"exception",qVar"state"), 353 Const("NoException",CTy"exception")), 354 Rupd("exception",TP[qVar"state",Var("e",CTy"exception")]), 355 qVar"state")])) 356; 357val ArchVersion_def = Def 358 ("ArchVersion",AVar uTy, 359 Close 360 (qVar"state", 361 CS(Dest("Architecture",CTy"Architecture",qVar"state"), 362 [(LC("ARMv4",CTy"Architecture"),LN 4), 363 (LC("ARMv4T",CTy"Architecture"),LN 4), 364 (LC("ARMv5T",CTy"Architecture"),LN 5), 365 (LC("ARMv5TE",CTy"Architecture"),LN 5), 366 (LC("ARMv6",CTy"Architecture"),LN 6), 367 (LC("ARMv6K",CTy"Architecture"),LN 6), 368 (LC("ARMv6T2",CTy"Architecture"),LN 6), 369 (LC("ARMv7_A",CTy"Architecture"),LN 7), 370 (LC("ARMv7_R",CTy"Architecture"),LN 7)]))) 371; 372val HaveDSPSupport_def = Def 373 ("HaveDSPSupport",AVar uTy, 374 Close 375 (qVar"state", 376 Mop(Not, 377 Bop(In,Dest("Architecture",CTy"Architecture",qVar"state"), 378 SL[LC("ARMv4",CTy"Architecture"), 379 LC("ARMv4T",CTy"Architecture"), 380 LC("ARMv5T",CTy"Architecture")])))) 381; 382val HaveThumb2_def = Def 383 ("HaveThumb2",AVar uTy, 384 Close 385 (qVar"state", 386 Bop(In,Dest("Architecture",CTy"Architecture",qVar"state"), 387 SL[LC("ARMv6T2",CTy"Architecture"), 388 LC("ARMv7_A",CTy"Architecture"), 389 LC("ARMv7_R",CTy"Architecture")]))) 390; 391val HaveThumbEE_def = Def 392 ("HaveThumbEE",AVar uTy, 393 Close 394 (qVar"state", 395 Bop(Or, 396 EQ(Dest("Architecture",CTy"Architecture",qVar"state"), 397 LC("ARMv7_A",CTy"Architecture")), 398 Bop(And, 399 EQ(Dest("Architecture",CTy"Architecture",qVar"state"), 400 LC("ARMv7_R",CTy"Architecture")), 401 Bop(In,LC("Extension_ThumbEE",CTy"Extensions"), 402 Dest("Extensions",STy(CTy"Extensions"),qVar"state")))))) 403; 404val HaveMPExt_def = Def 405 ("HaveMPExt",AVar uTy, 406 Close 407 (qVar"state", 408 Bop(And, 409 Bop(Ge,Apply(Call("ArchVersion",ATy(qTy,nTy),LU),qVar"state"), 410 LN 7), 411 Bop(In,LC("Extension_Multiprocessing",CTy"Extensions"), 412 Dest("Extensions",STy(CTy"Extensions"),qVar"state"))))) 413; 414val HaveSecurityExt_def = Def 415 ("HaveSecurityExt",AVar uTy, 416 Close 417 (qVar"state", 418 Bop(And, 419 Bop(In,Dest("Architecture",CTy"Architecture",qVar"state"), 420 SL[LC("ARMv6K",CTy"Architecture"), 421 LC("ARMv7_A",CTy"Architecture")]), 422 Bop(In,LC("Extension_Security",CTy"Extensions"), 423 Dest("Extensions",STy(CTy"Extensions"),qVar"state"))))) 424; 425val HaveVirtExt_def = Def 426 ("HaveVirtExt",AVar uTy, 427 Close 428 (qVar"state", 429 Bop(And, 430 Bop(Ge,Apply(Call("ArchVersion",ATy(qTy,nTy),LU),qVar"state"), 431 LN 7), 432 Bop(In,LC("Extension_Virtualization",CTy"Extensions"), 433 Dest("Extensions",STy(CTy"Extensions"),qVar"state"))))) 434; 435val rec'PSR_def = Def 436 ("rec'PSR",Var("x",F32), 437 Rec(CTy"PSR", 438 [Bop(Bit,Var("x",F32),LN 8),Bop(Bit,Var("x",F32),LN 29), 439 Bop(Bit,Var("x",F32),LN 9),Bop(Bit,Var("x",F32),LN 6), 440 EX(Var("x",F32),LN 19,LN 16,F4),Bop(Bit,Var("x",F32),LN 7), 441 CC[EX(Var("x",F32),LN 15,LN 10,FTy 6), 442 EX(Var("x",F32),LN 26,LN 25,FTy 2)], 443 Bop(Bit,Var("x",F32),LN 24),EX(Var("x",F32),LN 4,LN 0,FTy 5), 444 Bop(Bit,Var("x",F32),LN 31),Bop(Bit,Var("x",F32),LN 27), 445 Bop(Bit,Var("x",F32),LN 5),Bop(Bit,Var("x",F32),LN 28), 446 Bop(Bit,Var("x",F32),LN 30),EX(Var("x",F32),LN 23,LN 20,F4)])) 447; 448val reg'PSR_def = Def 449 ("reg'PSR",Var("x",CTy"PSR"), 450 CS(Var("x",CTy"PSR"), 451 [(Rec(CTy"PSR", 452 [bVar"A",bVar"C",bVar"E",bVar"F",Var("GE",F4),bVar"I", 453 Var("IT",F8),bVar"J",Var("M",FTy 5),bVar"N",bVar"Q",bVar"T", 454 bVar"V",bVar"Z",Var("psr'rst",F4)]), 455 CC[Mop(Cast F1,bVar"N"),Mop(Cast F1,bVar"Z"),Mop(Cast F1,bVar"C"), 456 Mop(Cast F1,bVar"V"),Mop(Cast F1,bVar"Q"), 457 EX(Var("IT",F8),LN 1,LN 0,FTy 2),Mop(Cast F1,bVar"J"), 458 Var("psr'rst",F4),Var("GE",F4), 459 EX(Var("IT",F8),LN 7,LN 2,FTy 6),Mop(Cast F1,bVar"E"), 460 Mop(Cast F1,bVar"A"),Mop(Cast F1,bVar"I"),Mop(Cast F1,bVar"F"), 461 Mop(Cast F1,bVar"T"),Var("M",FTy 5)])])) 462; 463val write'rec'PSR_def = Def 464 ("write'rec'PSR",TP[AVar F32,Var("x",CTy"PSR")], 465 Call("reg'PSR",F32,Var("x",CTy"PSR"))) 466; 467val write'reg'PSR_def = Def 468 ("write'reg'PSR",TP[AVar(CTy"PSR"),Var("x",F32)], 469 Call("rec'PSR",CTy"PSR",Var("x",F32))) 470; 471val rec'SCTLR_def = Def 472 ("rec'SCTLR",Var("x",F32), 473 Rec(CTy"SCTLR", 474 [Bop(Bit,Var("x",F32),LN 1),Bop(Bit,Var("x",F32),LN 7), 475 Bop(Bit,Var("x",F32),LN 17),Bop(Bit,Var("x",F32),LN 2), 476 Bop(Bit,Var("x",F32),LN 19),Bop(Bit,Var("x",F32),LN 25), 477 Bop(Bit,Var("x",F32),LN 21),Bop(Bit,Var("x",F32),LN 12), 478 Bop(Bit,Var("x",F32),LN 31),Bop(Bit,Var("x",F32),LN 0), 479 Bop(Bit,Var("x",F32),LN 27),Bop(Bit,Var("x",F32),LN 14), 480 Bop(Bit,Var("x",F32),LN 10),Bop(Bit,Var("x",F32),LN 30), 481 Bop(Bit,Var("x",F32),LN 22),Bop(Bit,Var("x",F32),LN 13), 482 Bop(Bit,Var("x",F32),LN 24),Bop(Bit,Var("x",F32),LN 11), 483 CC[EX(Var("x",F32),LN 6,LN 3,F4),EX(Var("x",F32),LN 9,LN 8,FTy 2), 484 EX(Var("x",F32),LN 16,LN 15,FTy 2), 485 EX(Var("x",F32),LN 18,LN 18,F1), 486 EX(Var("x",F32),LN 20,LN 20,F1), 487 EX(Var("x",F32),LN 23,LN 23,F1), 488 EX(Var("x",F32),LN 26,LN 26,F1), 489 EX(Var("x",F32),LN 29,LN 28,FTy 2)]])) 490; 491val reg'SCTLR_def = Def 492 ("reg'SCTLR",Var("x",CTy"SCTLR"), 493 CS(Var("x",CTy"SCTLR"), 494 [(Rec(CTy"SCTLR", 495 [bVar"A",bVar"B",bVar"BR",bVar"C",bVar"DZ",bVar"EE",bVar"FI", 496 bVar"I",bVar"IE",bVar"M",bVar"NMFI",bVar"RR",bVar"SW", 497 bVar"TE",bVar"U",bVar"V",bVar"VE",bVar"Z", 498 Var("sctlr'rst",FTy 14)]), 499 CC[Mop(Cast F1,bVar"IE"),Mop(Cast F1,bVar"TE"), 500 EX(Var("sctlr'rst",FTy 14),LN 1,LN 0,FTy 2), 501 Mop(Cast F1,bVar"NMFI"), 502 EX(Var("sctlr'rst",FTy 14),LN 2,LN 2,F1),Mop(Cast F1,bVar"EE"), 503 Mop(Cast F1,bVar"VE"),EX(Var("sctlr'rst",FTy 14),LN 3,LN 3,F1), 504 Mop(Cast F1,bVar"U"),Mop(Cast F1,bVar"FI"), 505 EX(Var("sctlr'rst",FTy 14),LN 4,LN 4,F1),Mop(Cast F1,bVar"DZ"), 506 EX(Var("sctlr'rst",FTy 14),LN 5,LN 5,F1),Mop(Cast F1,bVar"BR"), 507 EX(Var("sctlr'rst",FTy 14),LN 7,LN 6,FTy 2), 508 Mop(Cast F1,bVar"RR"),Mop(Cast F1,bVar"V"), 509 Mop(Cast F1,bVar"I"),Mop(Cast F1,bVar"Z"), 510 Mop(Cast F1,bVar"SW"), 511 EX(Var("sctlr'rst",FTy 14),LN 9,LN 8,FTy 2), 512 Mop(Cast F1,bVar"B"), 513 EX(Var("sctlr'rst",FTy 14),LN 13,LN 10,F4), 514 Mop(Cast F1,bVar"C"),Mop(Cast F1,bVar"A"),Mop(Cast F1,bVar"M")])])) 515; 516val write'rec'SCTLR_def = Def 517 ("write'rec'SCTLR",TP[AVar F32,Var("x",CTy"SCTLR")], 518 Call("reg'SCTLR",F32,Var("x",CTy"SCTLR"))) 519; 520val write'reg'SCTLR_def = Def 521 ("write'reg'SCTLR",TP[AVar(CTy"SCTLR"),Var("x",F32)], 522 Call("rec'SCTLR",CTy"SCTLR",Var("x",F32))) 523; 524val rec'HSCTLR_def = Def 525 ("rec'HSCTLR",Var("x",F32), 526 Rec(CTy"HSCTLR", 527 [Bop(Bit,Var("x",F32),LN 1),Bop(Bit,Var("x",F32),LN 2), 528 Bop(Bit,Var("x",F32),LN 5),Bop(Bit,Var("x",F32),LN 25), 529 Bop(Bit,Var("x",F32),LN 21),Bop(Bit,Var("x",F32),LN 12), 530 Bop(Bit,Var("x",F32),LN 0),Bop(Bit,Var("x",F32),LN 30), 531 Bop(Bit,Var("x",F32),LN 19), 532 CC[EX(Var("x",F32),LN 4,LN 3,FTy 2), 533 EX(Var("x",F32),LN 11,LN 6,FTy 6), 534 EX(Var("x",F32),LN 18,LN 13,FTy 6), 535 EX(Var("x",F32),LN 20,LN 20,F1), 536 EX(Var("x",F32),LN 24,LN 22,FTy 3), 537 EX(Var("x",F32),LN 29,LN 26,F4),EX(Var("x",F32),LN 31,LN 31,F1)]])) 538; 539val reg'HSCTLR_def = Def 540 ("reg'HSCTLR",Var("x",CTy"HSCTLR"), 541 CS(Var("x",CTy"HSCTLR"), 542 [(Rec(CTy"HSCTLR", 543 [bVar"A",bVar"C",bVar"CP15BEN",bVar"EE",bVar"FI",bVar"I", 544 bVar"M",bVar"TE",bVar"WXN",Var("hsctlr'rst",FTy 23)]), 545 CC[EX(Var("hsctlr'rst",FTy 23),LN 0,LN 0,F1), 546 Mop(Cast F1,bVar"TE"), 547 EX(Var("hsctlr'rst",FTy 23),LN 4,LN 1,F4), 548 Mop(Cast F1,bVar"EE"), 549 EX(Var("hsctlr'rst",FTy 23),LN 7,LN 5,FTy 3), 550 Mop(Cast F1,bVar"FI"), 551 EX(Var("hsctlr'rst",FTy 23),LN 8,LN 8,F1), 552 Mop(Cast F1,bVar"WXN"), 553 EX(Var("hsctlr'rst",FTy 23),LN 14,LN 9,FTy 6), 554 Mop(Cast F1,bVar"I"), 555 EX(Var("hsctlr'rst",FTy 23),LN 20,LN 15,FTy 6), 556 Mop(Cast F1,bVar"CP15BEN"), 557 EX(Var("hsctlr'rst",FTy 23),LN 22,LN 21,FTy 2), 558 Mop(Cast F1,bVar"C"),Mop(Cast F1,bVar"A"),Mop(Cast F1,bVar"M")])])) 559; 560val write'rec'HSCTLR_def = Def 561 ("write'rec'HSCTLR",TP[AVar F32,Var("x",CTy"HSCTLR")], 562 Call("reg'HSCTLR",F32,Var("x",CTy"HSCTLR"))) 563; 564val write'reg'HSCTLR_def = Def 565 ("write'reg'HSCTLR",TP[AVar(CTy"HSCTLR"),Var("x",F32)], 566 Call("rec'HSCTLR",CTy"HSCTLR",Var("x",F32))) 567; 568val rec'HSR_def = Def 569 ("rec'HSR",Var("x",F32), 570 Rec(CTy"HSR", 571 [EX(Var("x",F32),LN 31,LN 26,FTy 6),Bop(Bit,Var("x",F32),LN 25), 572 EX(Var("x",F32),LN 24,LN 0,FTy 25)])) 573; 574val reg'HSR_def = Def 575 ("reg'HSR",Var("x",CTy"HSR"), 576 CS(Var("x",CTy"HSR"), 577 [(Rec(CTy"HSR",[Var("EC",FTy 6),bVar"IL",Var("ISS",FTy 25)]), 578 CC[Var("EC",FTy 6),Mop(Cast F1,bVar"IL"),Var("ISS",FTy 25)])])) 579; 580val write'rec'HSR_def = Def 581 ("write'rec'HSR",TP[AVar F32,Var("x",CTy"HSR")], 582 Call("reg'HSR",F32,Var("x",CTy"HSR"))) 583; 584val write'reg'HSR_def = Def 585 ("write'reg'HSR",TP[AVar(CTy"HSR"),Var("x",F32)], 586 Call("rec'HSR",CTy"HSR",Var("x",F32))) 587; 588val rec'SCR_def = Def 589 ("rec'SCR",Var("x",F32), 590 Rec(CTy"SCR", 591 [Bop(Bit,Var("x",F32),LN 5),Bop(Bit,Var("x",F32),LN 3), 592 Bop(Bit,Var("x",F32),LN 2),Bop(Bit,Var("x",F32),LN 4), 593 Bop(Bit,Var("x",F32),LN 8),Bop(Bit,Var("x",F32),LN 1), 594 Bop(Bit,Var("x",F32),LN 0),Bop(Bit,Var("x",F32),LN 7), 595 Bop(Bit,Var("x",F32),LN 9),Bop(Bit,Var("x",F32),LN 6), 596 EX(Var("x",F32),LN 31,LN 10,FTy 22)])) 597; 598val reg'SCR_def = Def 599 ("reg'SCR",Var("x",CTy"SCR"), 600 CS(Var("x",CTy"SCR"), 601 [(Rec(CTy"SCR", 602 [bVar"AW",bVar"EA",bVar"FIQ",bVar"FW",bVar"HCE",bVar"IRQ", 603 bVar"NS",bVar"SCD",bVar"SIF",bVar"nET",Var("scr'rst",FTy 22)]), 604 CC[Var("scr'rst",FTy 22),Mop(Cast F1,bVar"SIF"), 605 Mop(Cast F1,bVar"HCE"),Mop(Cast F1,bVar"SCD"), 606 Mop(Cast F1,bVar"nET"),Mop(Cast F1,bVar"AW"), 607 Mop(Cast F1,bVar"FW"),Mop(Cast F1,bVar"EA"), 608 Mop(Cast F1,bVar"FIQ"),Mop(Cast F1,bVar"IRQ"), 609 Mop(Cast F1,bVar"NS")])])) 610; 611val write'rec'SCR_def = Def 612 ("write'rec'SCR",TP[AVar F32,Var("x",CTy"SCR")], 613 Call("reg'SCR",F32,Var("x",CTy"SCR"))) 614; 615val write'reg'SCR_def = Def 616 ("write'reg'SCR",TP[AVar(CTy"SCR"),Var("x",F32)], 617 Call("rec'SCR",CTy"SCR",Var("x",F32))) 618; 619val rec'NSACR_def = Def 620 ("rec'NSACR",Var("x",F32), 621 Rec(CTy"NSACR", 622 [Bop(Bit,Var("x",F32),LN 15),Bop(Bit,Var("x",F32),LN 14), 623 Bop(Bit,Var("x",F32),LN 20),Bop(Bit,Var("x",F32),LN 19), 624 EX(Var("x",F32),LN 13,LN 0,FTy 14), 625 CC[EX(Var("x",F32),LN 18,LN 16,FTy 3), 626 EX(Var("x",F32),LN 31,LN 21,FTy 11)]])) 627; 628val reg'NSACR_def = Def 629 ("reg'NSACR",Var("x",CTy"NSACR"), 630 CS(Var("x",CTy"NSACR"), 631 [(Rec(CTy"NSACR", 632 [bVar"NSASEDIS",bVar"NSD32DIS",bVar"NSTRCDIS",bVar"RFR", 633 Var("cp",FTy 14),Var("nsacr'rst",FTy 14)]), 634 CC[EX(Var("nsacr'rst",FTy 14),LN 10,LN 0,FTy 11), 635 Mop(Cast F1,bVar"NSTRCDIS"),Mop(Cast F1,bVar"RFR"), 636 EX(Var("nsacr'rst",FTy 14),LN 13,LN 11,FTy 3), 637 Mop(Cast F1,bVar"NSASEDIS"),Mop(Cast F1,bVar"NSD32DIS"), 638 Var("cp",FTy 14)])])) 639; 640val write'rec'NSACR_def = Def 641 ("write'rec'NSACR",TP[AVar F32,Var("x",CTy"NSACR")], 642 Call("reg'NSACR",F32,Var("x",CTy"NSACR"))) 643; 644val write'reg'NSACR_def = Def 645 ("write'reg'NSACR",TP[AVar(CTy"NSACR"),Var("x",F32)], 646 Call("rec'NSACR",CTy"NSACR",Var("x",F32))) 647; 648val rec'HCR_def = Def 649 ("rec'HCR",Var("x",F32), 650 Rec(CTy"HCR", 651 [Bop(Bit,Var("x",F32),LN 5),EX(Var("x",F32),LN 11,LN 10,FTy 2), 652 Bop(Bit,Var("x",F32),LN 12),Bop(Bit,Var("x",F32),LN 9), 653 Bop(Bit,Var("x",F32),LN 3),Bop(Bit,Var("x",F32),LN 4), 654 Bop(Bit,Var("x",F32),LN 2),Bop(Bit,Var("x",F32),LN 1), 655 Bop(Bit,Var("x",F32),LN 21),Bop(Bit,Var("x",F32),LN 27), 656 EX(Var("x",F32),LN 18,LN 15,F4),Bop(Bit,Var("x",F32),LN 20), 657 Bop(Bit,Var("x",F32),LN 23),Bop(Bit,Var("x",F32),LN 24), 658 Bop(Bit,Var("x",F32),LN 19),Bop(Bit,Var("x",F32),LN 22), 659 Bop(Bit,Var("x",F32),LN 25),Bop(Bit,Var("x",F32),LN 26), 660 Bop(Bit,Var("x",F32),LN 14),Bop(Bit,Var("x",F32),LN 13), 661 Bop(Bit,Var("x",F32),LN 8),Bop(Bit,Var("x",F32),LN 6), 662 Bop(Bit,Var("x",F32),LN 7),Bop(Bit,Var("x",F32),LN 0), 663 EX(Var("x",F32),LN 31,LN 28,F4)])) 664; 665val reg'HCR_def = Def 666 ("reg'HCR",Var("x",CTy"HCR"), 667 CS(Var("x",CTy"HCR"), 668 [(Rec(CTy"HCR", 669 [bVar"AMO",Var("BSU",FTy 2),bVar"DC",bVar"FB",bVar"FMO", 670 bVar"IMO",bVar"PTW",bVar"SWIO",bVar"TAC",bVar"TGE", 671 Var("TID",F4),bVar"TIDCP",bVar"TPC",bVar"TPU",bVar"TSC", 672 bVar"TSW",bVar"TTLB",bVar"TVM",bVar"TWE",bVar"TWI",bVar"VA", 673 bVar"VF",bVar"VI",bVar"VM",Var("hcr'rst",F4)]), 674 CC[Var("hcr'rst",F4),Mop(Cast F1,bVar"TGE"), 675 Mop(Cast F1,bVar"TVM"),Mop(Cast F1,bVar"TTLB"), 676 Mop(Cast F1,bVar"TPU"),Mop(Cast F1,bVar"TPC"), 677 Mop(Cast F1,bVar"TSW"),Mop(Cast F1,bVar"TAC"), 678 Mop(Cast F1,bVar"TIDCP"),Mop(Cast F1,bVar"TSC"),Var("TID",F4), 679 Mop(Cast F1,bVar"TWE"),Mop(Cast F1,bVar"TWI"), 680 Mop(Cast F1,bVar"DC"),Var("BSU",FTy 2),Mop(Cast F1,bVar"FB"), 681 Mop(Cast F1,bVar"VA"),Mop(Cast F1,bVar"VI"), 682 Mop(Cast F1,bVar"VF"),Mop(Cast F1,bVar"AMO"), 683 Mop(Cast F1,bVar"IMO"),Mop(Cast F1,bVar"FMO"), 684 Mop(Cast F1,bVar"PTW"),Mop(Cast F1,bVar"SWIO"), 685 Mop(Cast F1,bVar"VM")])])) 686; 687val write'rec'HCR_def = Def 688 ("write'rec'HCR",TP[AVar F32,Var("x",CTy"HCR")], 689 Call("reg'HCR",F32,Var("x",CTy"HCR"))) 690; 691val write'reg'HCR_def = Def 692 ("write'reg'HCR",TP[AVar(CTy"HCR"),Var("x",F32)], 693 Call("rec'HCR",CTy"HCR",Var("x",F32))) 694; 695val ProcessorID_def = Def ("ProcessorID",AVar uTy,LI 0) 696; 697val IsExternalAbort_def = Def ("IsExternalAbort",AVar uTy,LX bTy) 698; 699val IsSecure_def = Def 700 ("IsSecure",AVar uTy, 701 Close 702 (qVar"state", 703 Bop(Or, 704 Mop(Not, 705 Apply(Call("HaveSecurityExt",ATy(qTy,bTy),LU),qVar"state")), 706 Bop(Or, 707 Mop(Not, 708 Dest 709 ("NS",bTy, 710 Dest 711 ("SCR",CTy"SCR",Dest("CP15",CTy"CP15",qVar"state")))), 712 EQ(Dest("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"state")), 713 LW(22,5)))))) 714; 715val UnalignedSupport_def = Def 716 ("UnalignedSupport",AVar uTy, 717 Close 718 (qVar"state", 719 Let(nVar"v",Apply(Call("ArchVersion",ATy(qTy,nTy),LU),qVar"state"), 720 Bop(Or,Bop(Ge,nVar"v",LN 7), 721 Bop(And,EQ(nVar"v",LN 6), 722 Dest 723 ("U",bTy, 724 Dest 725 ("SCTLR",CTy"SCTLR", 726 Dest("CP15",CTy"CP15",qVar"state")))))))) 727; 728val BadMode_def = Def 729 ("BadMode",Var("mode",FTy 5), 730 Close 731 (qVar"state", 732 CS(Var("mode",FTy 5), 733 [(LW(16,5),LF),(LW(17,5),LF),(LW(18,5),LF),(LW(19,5),LF), 734 (LW(22,5), 735 Mop(Not, 736 Apply(Call("HaveSecurityExt",ATy(qTy,bTy),LU),qVar"state"))), 737 (LW(23,5),LF), 738 (LW(26,5), 739 Mop(Not,Apply(Call("HaveVirtExt",ATy(qTy,bTy),LU),qVar"state"))), 740 (LW(27,5),LF),(LW(31,5),LF),(AVar(FTy 5),LT)]))) 741; 742val CurrentModeIsNotUser_def = Def 743 ("CurrentModeIsNotUser",AVar uTy, 744 Close 745 (qVar"state", 746 Let(qVar"s", 747 ITE(Apply 748 (Call 749 ("BadMode",ATy(qTy,bTy), 750 Dest("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"state"))), 751 qVar"state"), 752 Mop(Snd, 753 Apply 754 (Call 755 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 756 Call 757 ("UNPREDICTABLE",CTy"exception", 758 CC[LS"BadMode: ", 759 Mop(Cast sTy, 760 Dest 761 ("M",FTy 5, 762 Dest("CPSR",CTy"PSR",qVar"state")))])), 763 qVar"state")),qVar"state"), 764 TP[Mop(Not, 765 EQ(Dest("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"s")),LW(16,5))), 766 qVar"s"]))) 767; 768val CurrentModeIsUserOrSystem_def = Def 769 ("CurrentModeIsUserOrSystem",AVar uTy, 770 Close 771 (qVar"state", 772 Let(qVar"s", 773 ITE(Apply 774 (Call 775 ("BadMode",ATy(qTy,bTy), 776 Dest("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"state"))), 777 qVar"state"), 778 Mop(Snd, 779 Apply 780 (Call 781 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 782 Call 783 ("UNPREDICTABLE",CTy"exception", 784 CC[LS"BadMode: ", 785 Mop(Cast sTy, 786 Dest 787 ("M",FTy 5, 788 Dest("CPSR",CTy"PSR",qVar"state")))])), 789 qVar"state")),qVar"state"), 790 TP[Bop(In,Dest("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"s")), 791 SL[LW(16,5),LW(31,5)]),qVar"s"]))) 792; 793val CurrentModeIsHyp_def = Def 794 ("CurrentModeIsHyp",AVar uTy, 795 Close 796 (qVar"state", 797 Let(qVar"s", 798 ITE(Apply 799 (Call 800 ("BadMode",ATy(qTy,bTy), 801 Dest("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"state"))), 802 qVar"state"), 803 Mop(Snd, 804 Apply 805 (Call 806 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 807 Call 808 ("UNPREDICTABLE",CTy"exception", 809 CC[LS"BadMode: ", 810 Mop(Cast sTy, 811 Dest 812 ("M",FTy 5, 813 Dest("CPSR",CTy"PSR",qVar"state")))])), 814 qVar"state")),qVar"state"), 815 TP[EQ(Dest("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"s")),LW(26,5)), 816 qVar"s"]))) 817; 818val IntegerZeroDivideTrappingEnabled_def = Def 819 ("IntegerZeroDivideTrappingEnabled",AVar uTy, 820 Close 821 (qVar"state", 822 Dest 823 ("DZ",bTy, 824 Dest("SCTLR",CTy"SCTLR",Dest("CP15",CTy"CP15",qVar"state"))))) 825; 826val ISETSTATE_def = Def 827 ("ISETSTATE",qVar"state", 828 CC[Mop(Cast F1,Dest("J",bTy,Dest("CPSR",CTy"PSR",qVar"state"))), 829 Mop(Cast F1,Dest("T",bTy,Dest("CPSR",CTy"PSR",qVar"state")))]) 830; 831val write'ISETSTATE_def = Def 832 ("write'ISETSTATE",Var("value",FTy 2), 833 Close 834 (qVar"state", 835 Let(qVar"s", 836 Rupd 837 ("CPSR", 838 TP[qVar"state", 839 Rupd 840 ("J", 841 TP[Dest("CPSR",CTy"PSR",qVar"state"), 842 Bop(Bit,Var("value",FTy 2),LN 1)])]), 843 Rupd 844 ("CPSR", 845 TP[qVar"s", 846 Rupd 847 ("T", 848 TP[Dest("CPSR",CTy"PSR",qVar"s"), 849 Bop(Bit,Var("value",FTy 2),LN 0)])])))) 850; 851val CurrentInstrSet_def = Def 852 ("CurrentInstrSet",AVar uTy, 853 Close 854 (qVar"state", 855 CS(Apply(Const("ISETSTATE",ATy(qTy,FTy 2)),qVar"state"), 856 [(LW(0,2),LC("InstrSet_ARM",CTy"InstrSet")), 857 (LW(1,2),LC("InstrSet_Thumb",CTy"InstrSet")), 858 (LW(2,2),LC("InstrSet_Jazelle",CTy"InstrSet")), 859 (LW(3,2),LC("InstrSet_ThumbEE",CTy"InstrSet"))]))) 860; 861val SelectInstrSet_def = Def 862 ("SelectInstrSet",Var("iset",CTy"InstrSet"), 863 Close 864 (qVar"state", 865 CS(Var("iset",CTy"InstrSet"), 866 [(LC("InstrSet_ARM",CTy"InstrSet"), 867 ITE(EQ(Apply 868 (Call("CurrentInstrSet",ATy(qTy,CTy"InstrSet"),LU), 869 qVar"state"),LC("InstrSet_ThumbEE",CTy"InstrSet")), 870 Mop(Snd, 871 Apply 872 (Call 873 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 874 Call 875 ("UNPREDICTABLE",CTy"exception", 876 LS"SelectInstrSet")),qVar"state")), 877 Apply 878 (Call("write'ISETSTATE",ATy(qTy,qTy),LW(0,2)),qVar"state"))), 879 (LC("InstrSet_Thumb",CTy"InstrSet"), 880 Apply(Call("write'ISETSTATE",ATy(qTy,qTy),LW(1,2)),qVar"state")), 881 (LC("InstrSet_Jazelle",CTy"InstrSet"), 882 Apply(Call("write'ISETSTATE",ATy(qTy,qTy),LW(2,2)),qVar"state")), 883 (LC("InstrSet_ThumbEE",CTy"InstrSet"), 884 Apply(Call("write'ISETSTATE",ATy(qTy,qTy),LW(3,2)),qVar"state"))]))) 885; 886val ITSTATE_def = Def 887 ("ITSTATE",qVar"state", 888 ITE(Apply(Call("HaveThumb2",ATy(qTy,bTy),LU),qVar"state"), 889 Dest("IT",F8,Dest("CPSR",CTy"PSR",qVar"state")),LW(0,8))) 890; 891val write'ITSTATE_def = Def 892 ("write'ITSTATE",Var("value",F8), 893 Close 894 (qVar"state", 895 Rupd 896 ("CPSR", 897 TP[qVar"state", 898 Rupd 899 ("IT",TP[Dest("CPSR",CTy"PSR",qVar"state"),Var("value",F8)])]))) 900; 901val ITAdvance_def = Def 902 ("ITAdvance",AVar uTy, 903 Close 904 (qVar"state", 905 ITE(Bop(And,Apply(Call("HaveThumb2",ATy(qTy,bTy),LU),qVar"state"), 906 Mop(Not, 907 EQ(Dest("Encoding",CTy"Encoding",qVar"state"), 908 LC("Encoding_ARM",CTy"Encoding")))), 909 ITE(EQ(EX(Apply(Const("ITSTATE",ATy(qTy,F8)),qVar"state"),LN 2, 910 LN 0,FTy 3),LW(0,3)), 911 Apply 912 (Call("write'ITSTATE",ATy(qTy,qTy),LW(0,8)),qVar"state"), 913 Apply 914 (Call 915 ("write'ITSTATE",ATy(qTy,qTy), 916 BFI(LN 4,LN 0, 917 Bop(Lsl, 918 EX(Apply 919 (Const("ITSTATE",ATy(qTy,F8)),qVar"state"), 920 LN 4,LN 0,FTy 5),LN 1), 921 Apply(Const("ITSTATE",ATy(qTy,F8)),qVar"state"))), 922 qVar"state")),qVar"state"))) 923; 924val InITBlock_def = Def 925 ("InITBlock",AVar uTy, 926 Close 927 (qVar"state", 928 Mop(Not, 929 EQ(EX(Apply(Const("ITSTATE",ATy(qTy,F8)),qVar"state"),LN 3,LN 0, 930 F4),LW(0,4))))) 931; 932val LastInITBlock_def = Def 933 ("LastInITBlock",AVar uTy, 934 Close 935 (qVar"state", 936 EQ(EX(Apply(Const("ITSTATE",ATy(qTy,F8)),qVar"state"),LN 3,LN 0,F4), 937 LW(8,4)))) 938; 939val ThumbCondition_def = Def 940 ("ThumbCondition",AVar uTy, 941 Close 942 (qVar"state", 943 ITB([(EQ(Apply(Const("ITSTATE",ATy(qTy,F8)),qVar"state"),LW(0,8)), 944 TP[LW(14,4),qVar"state"]), 945 (Mop(Not, 946 EQ(EX(Dest("IT",F8,Dest("CPSR",CTy"PSR",qVar"state")), 947 LN 3,LN 0,F4),LW(0,4))), 948 TP[EX(Dest("IT",F8,Dest("CPSR",CTy"PSR",qVar"state")),LN 7, 949 LN 4,F4),qVar"state"])], 950 Apply 951 (Call 952 ("raise'exception",ATy(qTy,PTy(F4,qTy)), 953 Call("UNPREDICTABLE",CTy"exception",LS"ThumbCondition")), 954 qVar"state")))) 955; 956val BigEndian_def = Def 957 ("BigEndian",AVar uTy, 958 Close(qVar"state",Dest("E",bTy,Dest("CPSR",CTy"PSR",qVar"state")))) 959; 960val SetExclusiveMonitors_def = Def 961 ("SetExclusiveMonitors",TP[Var("address",F32),nVar"n"],LU) 962; 963val ExclusiveMonitorsPass_def = Def 964 ("ExclusiveMonitorsPass",TP[Var("address",F32),nVar"n"],LX bTy) 965; 966val ClearExclusiveLocal_def = Def ("ClearExclusiveLocal",iVar"id",LU) 967; 968val CurrentCond_def = Def 969 ("CurrentCond",AVar uTy, 970 Close(qVar"state",Dest("CurrentCondition",F4,qVar"state"))) 971; 972val ConditionPassed_def = Def 973 ("ConditionPassed",AVar uTy, 974 Close 975 (qVar"state", 976 Let(Var("v",F4), 977 Apply(Call("CurrentCond",ATy(qTy,F4),LU),qVar"state"), 978 Let(TP[bVar"v0",qVar"s"], 979 CS(EX(Var("v",F4),LN 3,LN 1,FTy 3), 980 [(LW(0,3), 981 TP[Dest("Z",bTy,Dest("CPSR",CTy"PSR",qVar"state")), 982 qVar"state"]), 983 (LW(1,3), 984 TP[Dest("C",bTy,Dest("CPSR",CTy"PSR",qVar"state")), 985 qVar"state"]), 986 (LW(2,3), 987 TP[Dest("N",bTy,Dest("CPSR",CTy"PSR",qVar"state")), 988 qVar"state"]), 989 (LW(3,3), 990 TP[Dest("V",bTy,Dest("CPSR",CTy"PSR",qVar"state")), 991 qVar"state"]), 992 (LW(4,3), 993 TP[Bop(And, 994 Dest("C",bTy,Dest("CPSR",CTy"PSR",qVar"state")), 995 Mop(Not, 996 Dest 997 ("Z",bTy,Dest("CPSR",CTy"PSR",qVar"state")))), 998 qVar"state"]), 999 (LW(5,3), 1000 TP[EQ(Dest("N",bTy,Dest("CPSR",CTy"PSR",qVar"state")), 1001 Dest("V",bTy,Dest("CPSR",CTy"PSR",qVar"state"))), 1002 qVar"state"]), 1003 (LW(6,3), 1004 TP[Bop(And, 1005 EQ(Dest 1006 ("N",bTy,Dest("CPSR",CTy"PSR",qVar"state")), 1007 Dest 1008 ("V",bTy,Dest("CPSR",CTy"PSR",qVar"state"))), 1009 Mop(Not, 1010 Dest 1011 ("Z",bTy,Dest("CPSR",CTy"PSR",qVar"state")))), 1012 qVar"state"]),(LW(7,3),TP[LT,qVar"state"])]), 1013 ITE(Bop(And,Bop(Bit,Var("v",F4),LN 0), 1014 Mop(Not,EQ(Var("v",F4),LW(15,4)))), 1015 Mop(Not,bVar"v0"),bVar"v0"))))) 1016; 1017val SPSR_def = Def 1018 ("SPSR",qVar"state", 1019 ITE(Apply 1020 (Call 1021 ("BadMode",ATy(qTy,bTy), 1022 Dest("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"state"))), 1023 qVar"state"), 1024 Apply 1025 (Call 1026 ("raise'exception",ATy(qTy,PTy(CTy"PSR",qTy)), 1027 Call 1028 ("UNPREDICTABLE",CTy"exception", 1029 CC[LS"SPSR: BadMode: ", 1030 Mop(Cast sTy, 1031 Dest("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"state")))])), 1032 qVar"state"), 1033 CS(Dest("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"state")), 1034 [(LW(17,5),TP[Dest("SPSR_fiq",CTy"PSR",qVar"state"),qVar"state"]), 1035 (LW(18,5),TP[Dest("SPSR_irq",CTy"PSR",qVar"state"),qVar"state"]), 1036 (LW(19,5),TP[Dest("SPSR_svc",CTy"PSR",qVar"state"),qVar"state"]), 1037 (LW(22,5),TP[Dest("SPSR_mon",CTy"PSR",qVar"state"),qVar"state"]), 1038 (LW(23,5),TP[Dest("SPSR_abt",CTy"PSR",qVar"state"),qVar"state"]), 1039 (LW(26,5),TP[Dest("SPSR_hyp",CTy"PSR",qVar"state"),qVar"state"]), 1040 (LW(27,5),TP[Dest("SPSR_und",CTy"PSR",qVar"state"),qVar"state"]), 1041 (AVar(FTy 5), 1042 Apply 1043 (Call 1044 ("raise'exception",ATy(qTy,PTy(CTy"PSR",qTy)), 1045 Call("UNPREDICTABLE",CTy"exception",LS"SPSR")), 1046 qVar"state"))]))) 1047; 1048val write'SPSR_def = Def 1049 ("write'SPSR",Var("value",CTy"PSR"), 1050 Close 1051 (qVar"state", 1052 ITE(Apply 1053 (Call 1054 ("BadMode",ATy(qTy,bTy), 1055 Dest("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"state"))), 1056 qVar"state"), 1057 Mop(Snd, 1058 Apply 1059 (Call 1060 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 1061 Call 1062 ("UNPREDICTABLE",CTy"exception", 1063 CC[LS"SPSR: BadMode: ", 1064 Mop(Cast sTy, 1065 Dest 1066 ("M",FTy 5, 1067 Dest("CPSR",CTy"PSR",qVar"state")))])), 1068 qVar"state")), 1069 CS(Dest("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"state")), 1070 [(LW(17,5), 1071 Rupd("SPSR_fiq",TP[qVar"state",Var("value",CTy"PSR")])), 1072 (LW(18,5), 1073 Rupd("SPSR_irq",TP[qVar"state",Var("value",CTy"PSR")])), 1074 (LW(19,5), 1075 Rupd("SPSR_svc",TP[qVar"state",Var("value",CTy"PSR")])), 1076 (LW(22,5), 1077 Rupd("SPSR_mon",TP[qVar"state",Var("value",CTy"PSR")])), 1078 (LW(23,5), 1079 Rupd("SPSR_abt",TP[qVar"state",Var("value",CTy"PSR")])), 1080 (LW(26,5), 1081 Rupd("SPSR_hyp",TP[qVar"state",Var("value",CTy"PSR")])), 1082 (LW(27,5), 1083 Rupd("SPSR_und",TP[qVar"state",Var("value",CTy"PSR")])), 1084 (AVar(FTy 5), 1085 Mop(Snd, 1086 Apply 1087 (Call 1088 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 1089 Call("UNPREDICTABLE",CTy"exception",LS"SPSR")), 1090 qVar"state")))])))) 1091; 1092val CPSRWriteByInstr_def = Def 1093 ("CPSRWriteByInstr", 1094 TP[Var("value",F32),Var("bytemask",F4),bVar"is_excpt_return"], 1095 Close 1096 (qVar"state", 1097 Let(TP[bVar"v",qVar"s"], 1098 Apply 1099 (Call("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)),LU), 1100 qVar"state"), 1101 Let(qVar"s0", 1102 ITE(Bop(Bit,Var("bytemask",F4),LN 3), 1103 Let(qVar"s", 1104 Rupd 1105 ("CPSR", 1106 TP[qVar"s", 1107 Call 1108 ("write'reg'PSR",CTy"PSR", 1109 TP[Dest("CPSR",CTy"PSR",qVar"s"), 1110 BFI(LN 31,LN 27, 1111 EX(Var("value",F32),LN 31,LN 27, 1112 FTy 5), 1113 Call 1114 ("reg'PSR",F32, 1115 Dest("CPSR",CTy"PSR",qVar"s")))])]), 1116 ITE(bVar"is_excpt_return", 1117 Rupd 1118 ("CPSR", 1119 TP[qVar"s", 1120 Call 1121 ("write'reg'PSR",CTy"PSR", 1122 TP[Dest("CPSR",CTy"PSR",qVar"s"), 1123 BFI(LN 26,LN 24, 1124 EX(Var("value",F32),LN 26,LN 24, 1125 FTy 3), 1126 Call 1127 ("reg'PSR",F32, 1128 Dest("CPSR",CTy"PSR",qVar"s")))])]), 1129 qVar"s")),qVar"s"), 1130 Let(qVar"s0", 1131 ITE(Bop(Bit,Var("bytemask",F4),LN 2), 1132 Rupd 1133 ("CPSR", 1134 TP[qVar"s0", 1135 Call 1136 ("write'reg'PSR",CTy"PSR", 1137 TP[Dest("CPSR",CTy"PSR",qVar"s0"), 1138 BFI(LN 19,LN 16, 1139 EX(Var("value",F32),LN 19,LN 16,F4), 1140 Call 1141 ("reg'PSR",F32, 1142 Dest("CPSR",CTy"PSR",qVar"s0")))])]), 1143 qVar"s0"), 1144 Let(qVar"s0", 1145 ITE(Bop(Bit,Var("bytemask",F4),LN 1), 1146 Let(qVar"s", 1147 ITE(bVar"is_excpt_return", 1148 Rupd 1149 ("CPSR", 1150 TP[qVar"s0", 1151 Call 1152 ("write'reg'PSR",CTy"PSR", 1153 TP[Dest 1154 ("CPSR",CTy"PSR",qVar"s0"), 1155 BFI(LN 15,LN 10, 1156 EX(Var("value",F32), 1157 LN 15,LN 10,FTy 6), 1158 Call 1159 ("reg'PSR",F32, 1160 Dest 1161 ("CPSR",CTy"PSR", 1162 qVar"s0")))])]), 1163 qVar"s0"), 1164 Let(qVar"s", 1165 Rupd 1166 ("CPSR", 1167 TP[qVar"s", 1168 Call 1169 ("write'reg'PSR",CTy"PSR", 1170 TP[Dest 1171 ("CPSR",CTy"PSR",qVar"s"), 1172 BFI(LN 9,LN 9, 1173 Mop(Cast F1, 1174 Bop(Bit, 1175 Var("value",F32), 1176 LN 9)), 1177 Call 1178 ("reg'PSR",F32, 1179 Dest 1180 ("CPSR",CTy"PSR", 1181 qVar"s")))])]), 1182 ITE(Bop(And,bVar"v", 1183 Bop(Or, 1184 Apply 1185 (Call 1186 ("IsSecure", 1187 ATy(qTy,bTy),LU), 1188 qVar"s"), 1189 Dest 1190 ("AW",bTy, 1191 Dest 1192 ("SCR",CTy"SCR", 1193 Dest 1194 ("CP15",CTy"CP15", 1195 qVar"s"))))), 1196 Rupd 1197 ("CPSR", 1198 TP[qVar"s", 1199 Call 1200 ("write'reg'PSR",CTy"PSR", 1201 TP[Dest 1202 ("CPSR",CTy"PSR", 1203 qVar"s"), 1204 BFI(LN 8,LN 8, 1205 Mop(Cast F1, 1206 Bop(Bit, 1207 Var("value", 1208 F32), 1209 LN 8)), 1210 Call 1211 ("reg'PSR",F32, 1212 Dest 1213 ("CPSR", 1214 CTy"PSR", 1215 qVar"s")))])]), 1216 qVar"s"))),qVar"s0"), 1217 ITE(Bop(Bit,Var("bytemask",F4),LN 0), 1218 Let(qVar"s0", 1219 ITE(bVar"v", 1220 Rupd 1221 ("CPSR", 1222 TP[qVar"s0", 1223 Call 1224 ("write'reg'PSR",CTy"PSR", 1225 TP[Dest 1226 ("CPSR",CTy"PSR",qVar"s0"), 1227 BFI(LN 7,LN 7, 1228 Mop(Cast F1, 1229 Bop(Bit, 1230 Var("value",F32), 1231 LN 7)), 1232 Call 1233 ("reg'PSR",F32, 1234 Dest 1235 ("CPSR",CTy"PSR", 1236 qVar"s0")))])]), 1237 qVar"s0"), 1238 Let(qVar"s", 1239 ITE(Bop(And,bVar"v", 1240 Bop(And, 1241 Bop(Or, 1242 Mop(Not, 1243 Dest 1244 ("NMFI",bTy, 1245 Dest 1246 ("SCTLR", 1247 CTy"SCTLR", 1248 Dest 1249 ("CP15", 1250 CTy"CP15", 1251 qVar"s")))), 1252 Mop(Not, 1253 Bop(Bit, 1254 Var("value",F32), 1255 LN 6))), 1256 Bop(Or, 1257 Apply 1258 (Call 1259 ("IsSecure", 1260 ATy(qTy,bTy),LU), 1261 qVar"s0"), 1262 Bop(Or, 1263 Dest 1264 ("FW",bTy, 1265 Dest 1266 ("SCR", 1267 CTy"SCR", 1268 Dest 1269 ("CP15", 1270 CTy"CP15", 1271 qVar"s0"))), 1272 Apply 1273 (Call 1274 ("HaveVirtExt", 1275 ATy(qTy,bTy), 1276 LU),qVar"s0"))))), 1277 Rupd 1278 ("CPSR", 1279 TP[qVar"s0", 1280 Call 1281 ("write'reg'PSR",CTy"PSR", 1282 TP[Dest 1283 ("CPSR",CTy"PSR", 1284 qVar"s0"), 1285 BFI(LN 6,LN 6, 1286 Mop(Cast F1, 1287 Bop(Bit, 1288 Var("value", 1289 F32), 1290 LN 6)), 1291 Call 1292 ("reg'PSR",F32, 1293 Dest 1294 ("CPSR", 1295 CTy"PSR", 1296 qVar"s0")))])]), 1297 qVar"s0"), 1298 Let(qVar"s", 1299 ITE(bVar"is_excpt_return", 1300 Rupd 1301 ("CPSR", 1302 TP[qVar"s", 1303 Call 1304 ("write'reg'PSR", 1305 CTy"PSR", 1306 TP[Dest 1307 ("CPSR",CTy"PSR", 1308 qVar"s"), 1309 BFI(LN 5,LN 5, 1310 Mop(Cast F1, 1311 Bop(Bit, 1312 Var("value", 1313 F32), 1314 LN 5)), 1315 Call 1316 ("reg'PSR", 1317 F32, 1318 Dest 1319 ("CPSR", 1320 CTy"PSR", 1321 qVar"s")))])]), 1322 qVar"s"), 1323 ITE(bVar"v", 1324 ITE(Apply 1325 (Call 1326 ("BadMode", 1327 ATy(qTy,bTy), 1328 EX(Var("value",F32), 1329 LN 4,LN 0,FTy 5)), 1330 qVar"s"), 1331 Mop(Snd, 1332 Apply 1333 (Call 1334 ("raise'exception", 1335 ATy(qTy, 1336 PTy(uTy,qTy)), 1337 Call 1338 ("UNPREDICTABLE", 1339 CTy"exception", 1340 CC[LS 1341 "CPSRWriteByInstr: BadMode: ", 1342 Mop(Cast sTy, 1343 EX(Var("value", 1344 F32), 1345 LN 4, 1346 LN 0, 1347 FTy 5))])), 1348 qVar"s")), 1349 Let(TP[bVar"v",qVar"s"], 1350 Let(qVar"s0", 1351 ITE(Bop(And, 1352 Mop(Not, 1353 Apply 1354 (Call 1355 ("IsSecure", 1356 ATy(qTy, 1357 bTy), 1358 LU), 1359 qVar"s")), 1360 EQ(EX(Var("value", 1361 F32), 1362 LN 4, 1363 LN 0, 1364 FTy 5), 1365 LW(22,5))), 1366 Mop(Snd, 1367 Apply 1368 (Call 1369 ("raise'exception", 1370 ATy(qTy, 1371 PTy(uTy, 1372 qTy)), 1373 Call 1374 ("UNPREDICTABLE", 1375 CTy"exception", 1376 LS 1377 "CPSRWriteByInstr")), 1378 qVar"s")), 1379 qVar"s"), 1380 TP[Apply 1381 (Call 1382 ("IsSecure", 1383 ATy(qTy,bTy), 1384 LU), 1385 qVar"s0"), 1386 qVar"s0"]), 1387 Let(qVar"s", 1388 ITE(Bop(And, 1389 Mop(Not, 1390 bVar"v"), 1391 Bop(And, 1392 EQ(EX(Var("value", 1393 F32), 1394 LN 1395 4, 1396 LN 1397 0, 1398 FTy 5), 1399 LW(17, 1400 5)), 1401 Dest 1402 ("RFR", 1403 bTy, 1404 Dest 1405 ("NSACR", 1406 CTy"NSACR", 1407 Dest 1408 ("CP15", 1409 CTy"CP15", 1410 qVar"s"))))), 1411 Mop(Snd, 1412 Apply 1413 (Call 1414 ("raise'exception", 1415 ATy(qTy, 1416 PTy(uTy, 1417 qTy)), 1418 Call 1419 ("UNPREDICTABLE", 1420 CTy"exception", 1421 LS 1422 "CPSRWriteByInstr")), 1423 qVar"s")), 1424 qVar"s"), 1425 Let(TP[bVar"v", 1426 qVar"s"], 1427 Let(qVar"s0", 1428 ITE(Bop(And, 1429 Mop(Not, 1430 Dest 1431 ("NS", 1432 bTy, 1433 Dest 1434 ("SCR", 1435 CTy"SCR", 1436 Dest 1437 ("CP15", 1438 CTy"CP15", 1439 qVar"s")))), 1440 EQ(EX(Var("value", 1441 F32), 1442 LN 1443 4, 1444 LN 1445 0, 1446 FTy 5), 1447 LW(26, 1448 5))), 1449 Mop(Snd, 1450 Apply 1451 (Call 1452 ("raise'exception", 1453 ATy(qTy, 1454 PTy(uTy, 1455 qTy)), 1456 Call 1457 ("UNPREDICTABLE", 1458 CTy"exception", 1459 LS 1460 "CPSRWriteByInstr")), 1461 qVar"s")), 1462 qVar"s"), 1463 TP[Apply 1464 (Call 1465 ("IsSecure", 1466 ATy(qTy, 1467 bTy), 1468 LU), 1469 qVar"s0"), 1470 qVar"s0"]), 1471 Let(qVar"s", 1472 ITE(Bop(And, 1473 Mop(Not, 1474 bVar"v"), 1475 Bop(And, 1476 Mop(Not, 1477 EQ(Dest 1478 ("M", 1479 FTy 5, 1480 Dest 1481 ("CPSR", 1482 CTy"PSR", 1483 qVar"s")), 1484 LW(26, 1485 5))), 1486 EQ(EX(Var("value", 1487 F32), 1488 LN 1489 4, 1490 LN 1491 0, 1492 FTy 5), 1493 LW(26, 1494 5)))), 1495 Mop(Snd, 1496 Apply 1497 (Call 1498 ("raise'exception", 1499 ATy(qTy, 1500 PTy(uTy, 1501 qTy)), 1502 Call 1503 ("UNPREDICTABLE", 1504 CTy"exception", 1505 LS 1506 "CPSRWriteByInstr")), 1507 qVar"s")), 1508 qVar"s"), 1509 Let(qVar"s", 1510 ITE(Bop(And, 1511 EQ(Dest 1512 ("M", 1513 FTy 5, 1514 Dest 1515 ("CPSR", 1516 CTy"PSR", 1517 qVar"s")), 1518 LW(26, 1519 5)), 1520 Bop(And, 1521 Mop(Not, 1522 EQ(EX(Var("value", 1523 F32), 1524 LN 1525 4, 1526 LN 1527 0, 1528 FTy 5), 1529 LW(26, 1530 5))), 1531 Mop(Not, 1532 bVar"is_excpt_return"))), 1533 Mop(Snd, 1534 Apply 1535 (Call 1536 ("raise'exception", 1537 ATy(qTy, 1538 PTy(uTy, 1539 qTy)), 1540 Call 1541 ("UNPREDICTABLE", 1542 CTy"exception", 1543 LS 1544 "CPSRWriteByInstr")), 1545 qVar"s")), 1546 qVar"s"), 1547 Rupd 1548 ("CPSR", 1549 TP[qVar"s", 1550 Call 1551 ("write'reg'PSR", 1552 CTy"PSR", 1553 TP[Dest 1554 ("CPSR", 1555 CTy"PSR", 1556 qVar"s"), 1557 BFI(LN 1558 4, 1559 LN 1560 0, 1561 EX(Var("value", 1562 F32), 1563 LN 1564 4, 1565 LN 1566 0, 1567 FTy 5), 1568 Call 1569 ("reg'PSR", 1570 F32, 1571 Dest 1572 ("CPSR", 1573 CTy"PSR", 1574 qVar"s")))])]))))))), 1575 qVar"s")))),qVar"s0"))))))) 1576; 1577val SPSRWriteByInstr_def = Def 1578 ("SPSRWriteByInstr",TP[Var("value",F32),Var("bytemask",F4)], 1579 Close 1580 (qVar"state", 1581 Let(TP[bVar"v",qVar"s"], 1582 Apply 1583 (Call("CurrentModeIsUserOrSystem",ATy(qTy,PTy(bTy,qTy)),LU), 1584 qVar"state"), 1585 Let(qVar"s", 1586 ITE(bVar"v", 1587 Mop(Snd, 1588 Apply 1589 (Call 1590 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 1591 Call 1592 ("UNPREDICTABLE",CTy"exception", 1593 LS"SPSRWriteByInstr")),qVar"s")),qVar"s"), 1594 Let(qVar"s", 1595 ITE(Bop(Bit,Var("bytemask",F4),LN 3), 1596 Let(TP[Var("v",CTy"PSR"),qVar"s"], 1597 Apply 1598 (Const("SPSR",ATy(qTy,PTy(CTy"PSR",qTy))), 1599 qVar"s"), 1600 Apply 1601 (Call 1602 ("write'SPSR",ATy(qTy,qTy), 1603 Call 1604 ("write'reg'PSR",CTy"PSR", 1605 TP[Var("v",CTy"PSR"), 1606 BFI(LN 31,LN 24, 1607 EX(Var("value",F32),LN 31,LN 24, 1608 F8), 1609 Call 1610 ("reg'PSR",F32, 1611 Var("v",CTy"PSR")))])), 1612 qVar"s")),qVar"s"), 1613 Let(qVar"s", 1614 ITE(Bop(Bit,Var("bytemask",F4),LN 2), 1615 Let(TP[Var("v",CTy"PSR"),qVar"s"], 1616 Apply 1617 (Const("SPSR",ATy(qTy,PTy(CTy"PSR",qTy))), 1618 qVar"s"), 1619 Apply 1620 (Call 1621 ("write'SPSR",ATy(qTy,qTy), 1622 Call 1623 ("write'reg'PSR",CTy"PSR", 1624 TP[Var("v",CTy"PSR"), 1625 BFI(LN 19,LN 16, 1626 EX(Var("value",F32),LN 19, 1627 LN 16,F4), 1628 Call 1629 ("reg'PSR",F32, 1630 Var("v",CTy"PSR")))])), 1631 qVar"s")),qVar"s"), 1632 Let(qVar"s", 1633 ITE(Bop(Bit,Var("bytemask",F4),LN 1), 1634 Let(TP[Var("v",CTy"PSR"),qVar"s"], 1635 Apply 1636 (Const 1637 ("SPSR",ATy(qTy,PTy(CTy"PSR",qTy))), 1638 qVar"s"), 1639 Apply 1640 (Call 1641 ("write'SPSR",ATy(qTy,qTy), 1642 Call 1643 ("write'reg'PSR",CTy"PSR", 1644 TP[Var("v",CTy"PSR"), 1645 BFI(LN 15,LN 8, 1646 EX(Var("value",F32), 1647 LN 15,LN 8,F8), 1648 Call 1649 ("reg'PSR",F32, 1650 Var("v",CTy"PSR")))])), 1651 qVar"s")),qVar"s"), 1652 ITE(Bop(Bit,Var("bytemask",F4),LN 0), 1653 Let(TP[Var("v",CTy"PSR"),qVar"s"], 1654 Apply 1655 (Const 1656 ("SPSR",ATy(qTy,PTy(CTy"PSR",qTy))), 1657 qVar"s"), 1658 Let(TP[bVar"v",qVar"s"], 1659 Let(qVar"s0", 1660 Apply 1661 (Call 1662 ("write'SPSR",ATy(qTy,qTy), 1663 Call 1664 ("write'reg'PSR", 1665 CTy"PSR", 1666 TP[Var("v",CTy"PSR"), 1667 BFI(LN 7,LN 5, 1668 EX(Var("value", 1669 F32), 1670 LN 7,LN 5, 1671 FTy 3), 1672 Call 1673 ("reg'PSR", 1674 F32, 1675 Var("v", 1676 CTy"PSR")))])), 1677 qVar"s"), 1678 TP[Apply 1679 (Call 1680 ("BadMode",ATy(qTy,bTy), 1681 EX(Var("value",F32), 1682 LN 4,LN 0,FTy 5)), 1683 qVar"s0"),qVar"s0"]), 1684 ITE(bVar"v", 1685 Mop(Snd, 1686 Apply 1687 (Call 1688 ("raise'exception", 1689 ATy(qTy,PTy(uTy,qTy)), 1690 Call 1691 ("UNPREDICTABLE", 1692 CTy"exception", 1693 CC[LS 1694 "SPSRWriteByInstr: BadMode: ", 1695 Mop(Cast sTy, 1696 EX(Var("value", 1697 F32), 1698 LN 4, 1699 LN 0, 1700 FTy 5))])), 1701 qVar"s")), 1702 Let(TP[Var("v",CTy"PSR"),qVar"s"], 1703 Apply 1704 (Const 1705 ("SPSR", 1706 ATy(qTy, 1707 PTy(CTy"PSR",qTy))), 1708 qVar"s"), 1709 Apply 1710 (Call 1711 ("write'SPSR", 1712 ATy(qTy,qTy), 1713 Call 1714 ("write'reg'PSR", 1715 CTy"PSR", 1716 TP[Var("v",CTy"PSR"), 1717 BFI(LN 4,LN 0, 1718 EX(Var("value", 1719 F32), 1720 LN 4, 1721 LN 0, 1722 FTy 5), 1723 Call 1724 ("reg'PSR", 1725 F32, 1726 Var("v", 1727 CTy"PSR")))])), 1728 qVar"s"))))),qVar"s")))))))) 1729; 1730val RBankSelect_def = Def 1731 ("RBankSelect", 1732 TP[Var("mode",FTy 5),Var("usr",CTy"RName"),Var("fiq",CTy"RName"), 1733 Var("irq",CTy"RName"),Var("svc",CTy"RName"),Var("abt",CTy"RName"), 1734 Var("und",CTy"RName"),Var("mon",CTy"RName"),Var("hyp",CTy"RName")], 1735 Close 1736 (qVar"state", 1737 ITE(Apply 1738 (Call("BadMode",ATy(qTy,bTy),Var("mode",FTy 5)),qVar"state"), 1739 Apply 1740 (Call 1741 ("raise'exception",ATy(qTy,PTy(CTy"RName",qTy)), 1742 Call 1743 ("UNPREDICTABLE",CTy"exception", 1744 CC[LS"RBankSelect: BadMode", 1745 Mop(Cast sTy,Var("mode",FTy 5))])),qVar"state"), 1746 TP[CS(Var("mode",FTy 5), 1747 [(LW(16,5),Var("usr",CTy"RName")), 1748 (LW(17,5),Var("fiq",CTy"RName")), 1749 (LW(18,5),Var("irq",CTy"RName")), 1750 (LW(19,5),Var("svc",CTy"RName")), 1751 (LW(22,5),Var("mon",CTy"RName")), 1752 (LW(23,5),Var("abt",CTy"RName")), 1753 (LW(26,5),Var("hyp",CTy"RName")), 1754 (LW(27,5),Var("und",CTy"RName")), 1755 (LW(31,5),Var("usr",CTy"RName"))]),qVar"state"]))) 1756; 1757val RfiqBankSelect_def = Def 1758 ("RfiqBankSelect", 1759 TP[Var("mode",FTy 5),Var("usr",CTy"RName"),Var("fiq",CTy"RName")], 1760 Close 1761 (qVar"state", 1762 Apply 1763 (Call 1764 ("RBankSelect",ATy(qTy,PTy(CTy"RName",qTy)), 1765 TP[Var("mode",FTy 5),Var("usr",CTy"RName"), 1766 Var("fiq",CTy"RName"),Var("usr",CTy"RName"), 1767 Var("usr",CTy"RName"),Var("usr",CTy"RName"), 1768 Var("usr",CTy"RName"),Var("usr",CTy"RName"), 1769 Var("usr",CTy"RName")]),qVar"state"))) 1770; 1771val LookUpRName_def = Def 1772 ("LookUpRName",TP[Var("n",F4),Var("mode",FTy 5)], 1773 Close 1774 (qVar"state", 1775 CS(Var("n",F4), 1776 [(LW(0,4),TP[LC("RName_0usr",CTy"RName"),qVar"state"]), 1777 (LW(1,4),TP[LC("RName_1usr",CTy"RName"),qVar"state"]), 1778 (LW(2,4),TP[LC("RName_2usr",CTy"RName"),qVar"state"]), 1779 (LW(3,4),TP[LC("RName_3usr",CTy"RName"),qVar"state"]), 1780 (LW(4,4),TP[LC("RName_4usr",CTy"RName"),qVar"state"]), 1781 (LW(5,4),TP[LC("RName_5usr",CTy"RName"),qVar"state"]), 1782 (LW(6,4),TP[LC("RName_6usr",CTy"RName"),qVar"state"]), 1783 (LW(7,4),TP[LC("RName_7usr",CTy"RName"),qVar"state"]), 1784 (LW(8,4), 1785 Apply 1786 (Call 1787 ("RfiqBankSelect",ATy(qTy,PTy(CTy"RName",qTy)), 1788 TP[Var("mode",FTy 5),LC("RName_8usr",CTy"RName"), 1789 LC("RName_8fiq",CTy"RName")]),qVar"state")), 1790 (LW(9,4), 1791 Apply 1792 (Call 1793 ("RfiqBankSelect",ATy(qTy,PTy(CTy"RName",qTy)), 1794 TP[Var("mode",FTy 5),LC("RName_9usr",CTy"RName"), 1795 LC("RName_9fiq",CTy"RName")]),qVar"state")), 1796 (LW(10,4), 1797 Apply 1798 (Call 1799 ("RfiqBankSelect",ATy(qTy,PTy(CTy"RName",qTy)), 1800 TP[Var("mode",FTy 5),LC("RName_10usr",CTy"RName"), 1801 LC("RName_10fiq",CTy"RName")]),qVar"state")), 1802 (LW(11,4), 1803 Apply 1804 (Call 1805 ("RfiqBankSelect",ATy(qTy,PTy(CTy"RName",qTy)), 1806 TP[Var("mode",FTy 5),LC("RName_11usr",CTy"RName"), 1807 LC("RName_11fiq",CTy"RName")]),qVar"state")), 1808 (LW(12,4), 1809 Apply 1810 (Call 1811 ("RfiqBankSelect",ATy(qTy,PTy(CTy"RName",qTy)), 1812 TP[Var("mode",FTy 5),LC("RName_12usr",CTy"RName"), 1813 LC("RName_12fiq",CTy"RName")]),qVar"state")), 1814 (LW(13,4), 1815 Apply 1816 (Call 1817 ("RBankSelect",ATy(qTy,PTy(CTy"RName",qTy)), 1818 TP[Var("mode",FTy 5),LC("RName_SPusr",CTy"RName"), 1819 LC("RName_SPfiq",CTy"RName"), 1820 LC("RName_SPirq",CTy"RName"), 1821 LC("RName_SPsvc",CTy"RName"), 1822 LC("RName_SPabt",CTy"RName"), 1823 LC("RName_SPund",CTy"RName"), 1824 LC("RName_SPmon",CTy"RName"), 1825 LC("RName_SPhyp",CTy"RName")]),qVar"state")), 1826 (LW(14,4), 1827 Apply 1828 (Call 1829 ("RBankSelect",ATy(qTy,PTy(CTy"RName",qTy)), 1830 TP[Var("mode",FTy 5),LC("RName_LRusr",CTy"RName"), 1831 LC("RName_LRfiq",CTy"RName"), 1832 LC("RName_LRirq",CTy"RName"), 1833 LC("RName_LRsvc",CTy"RName"), 1834 LC("RName_LRabt",CTy"RName"), 1835 LC("RName_LRund",CTy"RName"), 1836 LC("RName_LRmon",CTy"RName"), 1837 LC("RName_LRusr",CTy"RName")]),qVar"state")), 1838 (LW(15,4), 1839 Apply 1840 (Call 1841 ("raise'exception",ATy(qTy,PTy(CTy"RName",qTy)), 1842 Call 1843 ("ASSERT",CTy"exception", 1844 LS"LookUpRName: n >= 0 and n <= 14")),qVar"state"))]))) 1845; 1846val Rmode_def = Def 1847 ("Rmode",TP[Var("n",F4),Var("mode",FTy 5)], 1848 Close 1849 (qVar"state", 1850 Let(bVar"v", 1851 Mop(Not,Apply(Call("IsSecure",ATy(qTy,bTy),LU),qVar"state")), 1852 Let(qVar"s", 1853 ITE(Bop(And,bVar"v",EQ(Var("mode",FTy 5),LW(22,5))), 1854 Mop(Snd, 1855 Apply 1856 (Call 1857 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 1858 Call("UNPREDICTABLE",CTy"exception",LS"Rmode")), 1859 qVar"state")),qVar"state"), 1860 Let(qVar"s", 1861 ITE(Bop(And,bVar"v", 1862 Bop(And,EQ(Var("mode",FTy 5),LW(17,5)), 1863 Dest 1864 ("RFR",bTy, 1865 Dest 1866 ("NSACR",CTy"NSACR", 1867 Dest("CP15",CTy"CP15",qVar"s"))))), 1868 Mop(Snd, 1869 Apply 1870 (Call 1871 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 1872 Call 1873 ("UNPREDICTABLE",CTy"exception", 1874 LS"Rmode")),qVar"s")),qVar"s"), 1875 Let(TP[Var("v0",CTy"RName"),qVar"s0"], 1876 Apply 1877 (Call 1878 ("LookUpRName",ATy(qTy,PTy(CTy"RName",qTy)), 1879 TP[Var("n",F4),Var("mode",FTy 5)]),qVar"s"), 1880 TP[Apply 1881 (Dest("REG",ATy(CTy"RName",F32),qVar"s"), 1882 Var("v0",CTy"RName")),qVar"s0"])))))) 1883; 1884val write'Rmode_def = Def 1885 ("write'Rmode",TP[Var("value",F32),Var("n",F4),Var("mode",FTy 5)], 1886 Close 1887 (qVar"state", 1888 Let(bVar"v", 1889 Mop(Not,Apply(Call("IsSecure",ATy(qTy,bTy),LU),qVar"state")), 1890 Let(qVar"s", 1891 ITE(Bop(And,bVar"v",EQ(Var("mode",FTy 5),LW(22,5))), 1892 Mop(Snd, 1893 Apply 1894 (Call 1895 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 1896 Call("UNPREDICTABLE",CTy"exception",LS"Rmode")), 1897 qVar"state")),qVar"state"), 1898 Let(qVar"s", 1899 ITE(Bop(And,bVar"v", 1900 Bop(And,EQ(Var("mode",FTy 5),LW(17,5)), 1901 Dest 1902 ("RFR",bTy, 1903 Dest 1904 ("NSACR",CTy"NSACR", 1905 Dest("CP15",CTy"CP15",qVar"s"))))), 1906 Mop(Snd, 1907 Apply 1908 (Call 1909 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 1910 Call 1911 ("UNPREDICTABLE",CTy"exception", 1912 LS"Rmode")),qVar"s")),qVar"s"), 1913 Let(TP[Var("v",CTy"RName"),qVar"s"], 1914 Apply 1915 (Call 1916 ("LookUpRName",ATy(qTy,PTy(CTy"RName",qTy)), 1917 TP[Var("n",F4),Var("mode",FTy 5)]), 1918 ITE(Bop(And,EQ(Var("n",F4),LW(13,4)), 1919 Bop(And, 1920 Mop(Not, 1921 EQ(EX(Var("value",F32),LN 1,LN 0, 1922 FTy 2),LW(0,2))), 1923 Mop(Not, 1924 EQ(Apply 1925 (Call 1926 ("CurrentInstrSet", 1927 ATy(qTy,CTy"InstrSet"), 1928 LU),qVar"s"), 1929 LC("InstrSet_ARM", 1930 CTy"InstrSet"))))), 1931 Mop(Snd, 1932 Apply 1933 (Call 1934 ("raise'exception", 1935 ATy(qTy,PTy(uTy,qTy)), 1936 Call 1937 ("UNPREDICTABLE",CTy"exception", 1938 LS"Rmode")),qVar"s")),qVar"s")), 1939 Rupd 1940 ("REG", 1941 TP[qVar"s", 1942 Fupd 1943 (Dest("REG",ATy(CTy"RName",F32),qVar"s"), 1944 Var("v",CTy"RName"),Var("value",F32))]))))))) 1945; 1946val R_def = Def 1947 ("R",Var("n",F4), 1948 Close 1949 (qVar"state", 1950 ITE(EQ(Var("n",F4),LW(15,4)), 1951 TP[Bop(Add, 1952 Apply 1953 (Dest("REG",ATy(CTy"RName",F32),qVar"state"), 1954 LC("RName_PC",CTy"RName")), 1955 ITE(EQ(Apply 1956 (Call 1957 ("CurrentInstrSet",ATy(qTy,CTy"InstrSet"),LU), 1958 qVar"state"),LC("InstrSet_ARM",CTy"InstrSet")), 1959 LW(8,32),LW(4,32))),qVar"state"], 1960 Apply 1961 (Call 1962 ("Rmode",ATy(qTy,PTy(F32,qTy)), 1963 TP[Var("n",F4), 1964 Dest("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"state"))]), 1965 qVar"state")))) 1966; 1967val write'R_def = Def 1968 ("write'R",TP[Var("value",F32),Var("n",F4)], 1969 Close 1970 (qVar"state", 1971 Apply 1972 (Call 1973 ("write'Rmode",ATy(qTy,qTy), 1974 TP[Var("value",F32),Var("n",F4), 1975 Dest("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"state"))]), 1976 qVar"state"))) 1977; 1978val SP_def = Def 1979 ("SP",qVar"state", 1980 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),LW(13,4)),qVar"state")) 1981; 1982val write'SP_def = Def 1983 ("write'SP",Var("value",F32), 1984 Close 1985 (qVar"state", 1986 Apply 1987 (Call("write'R",ATy(qTy,qTy),TP[Var("value",F32),LW(13,4)]), 1988 qVar"state"))) 1989; 1990val LR_def = Def 1991 ("LR",qVar"state", 1992 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),LW(14,4)),qVar"state")) 1993; 1994val write'LR_def = Def 1995 ("write'LR",Var("value",F32), 1996 Close 1997 (qVar"state", 1998 Apply 1999 (Call("write'R",ATy(qTy,qTy),TP[Var("value",F32),LW(14,4)]), 2000 qVar"state"))) 2001; 2002val PC_def = Def 2003 ("PC",qVar"state", 2004 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),LW(15,4)),qVar"state")) 2005; 2006val BranchTo_def = Def 2007 ("BranchTo",Var("address",F32), 2008 Close 2009 (qVar"state", 2010 Rupd 2011 ("REG", 2012 TP[qVar"state", 2013 Fupd 2014 (Dest("REG",ATy(CTy"RName",F32),qVar"state"), 2015 LC("RName_PC",CTy"RName"),Var("address",F32))]))) 2016; 2017val PCStoreValue_def = Def 2018 ("PCStoreValue",AVar uTy, 2019 Close(qVar"state",Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"))) 2020; 2021val BranchWritePC_def = Def 2022 ("BranchWritePC",Var("address",F32), 2023 Close 2024 (qVar"state", 2025 ITE(EQ(Apply 2026 (Call("CurrentInstrSet",ATy(qTy,CTy"InstrSet"),LU), 2027 qVar"state"),LC("InstrSet_ARM",CTy"InstrSet")), 2028 Apply 2029 (Call 2030 ("BranchTo",ATy(qTy,qTy), 2031 CC[EX(Var("address",F32),LN 31,LN 2,FTy 30),LW(0,2)]), 2032 ITE(Bop(And, 2033 Bop(Lt, 2034 Apply 2035 (Call("ArchVersion",ATy(qTy,nTy),LU), 2036 qVar"state"),LN 6), 2037 Mop(Not, 2038 EQ(EX(Var("address",F32),LN 1,LN 0,FTy 2),LW(0,2)))), 2039 Mop(Snd, 2040 Apply 2041 (Call 2042 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2043 Call 2044 ("UNPREDICTABLE",CTy"exception", 2045 LS"BranchWritePC")),qVar"state")), 2046 qVar"state")), 2047 Apply 2048 (Call 2049 ("BranchTo",ATy(qTy,qTy), 2050 CC[EX(Var("address",F32),LN 31,LN 1,FTy 31),LW(0,1)]), 2051 qVar"state")))) 2052; 2053val BXWritePC_def = Def 2054 ("BXWritePC",Var("address",F32), 2055 Close 2056 (qVar"state", 2057 ITB([(EQ(Apply 2058 (Call("CurrentInstrSet",ATy(qTy,CTy"InstrSet"),LU), 2059 qVar"state"),LC("InstrSet_ThumbEE",CTy"InstrSet")), 2060 ITE(Bop(Bit,Var("address",F32),LN 0), 2061 Apply 2062 (Call 2063 ("BranchTo",ATy(qTy,qTy), 2064 CC[EX(Var("address",F32),LN 31,LN 1,FTy 31),LW(0,1)]), 2065 qVar"state"), 2066 Mop(Snd, 2067 Apply 2068 (Call 2069 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2070 Call 2071 ("UNPREDICTABLE",CTy"exception",LS"BXWritePC")), 2072 qVar"state")))), 2073 (Bop(Bit,Var("address",F32),LN 0), 2074 Apply 2075 (Call 2076 ("BranchTo",ATy(qTy,qTy), 2077 CC[EX(Var("address",F32),LN 31,LN 1,FTy 31),LW(0,1)]), 2078 Apply 2079 (Call 2080 ("SelectInstrSet",ATy(qTy,qTy), 2081 LC("InstrSet_Thumb",CTy"InstrSet")),qVar"state"))), 2082 (Mop(Not,Bop(Bit,Var("address",F32),LN 1)), 2083 Apply 2084 (Call("BranchTo",ATy(qTy,qTy),Var("address",F32)), 2085 Apply 2086 (Call 2087 ("SelectInstrSet",ATy(qTy,qTy), 2088 LC("InstrSet_ARM",CTy"InstrSet")),qVar"state")))], 2089 Mop(Snd, 2090 Apply 2091 (Call 2092 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2093 Call("UNPREDICTABLE",CTy"exception",LS"BXWritePC")), 2094 qVar"state"))))) 2095; 2096val LoadWritePC_def = Def 2097 ("LoadWritePC",Var("address",F32), 2098 Close 2099 (qVar"state", 2100 ITE(Bop(Ge,Apply(Call("ArchVersion",ATy(qTy,nTy),LU),qVar"state"), 2101 LN 5), 2102 Apply 2103 (Call("BXWritePC",ATy(qTy,qTy),Var("address",F32)),qVar"state"), 2104 Apply 2105 (Call("BranchWritePC",ATy(qTy,qTy),Var("address",F32)), 2106 qVar"state")))) 2107; 2108val ALUWritePC_def = Def 2109 ("ALUWritePC",Var("address",F32), 2110 Close 2111 (qVar"state", 2112 ITE(Bop(And, 2113 Bop(Ge, 2114 Apply(Call("ArchVersion",ATy(qTy,nTy),LU),qVar"state"), 2115 LN 7), 2116 EQ(Apply 2117 (Call("CurrentInstrSet",ATy(qTy,CTy"InstrSet"),LU), 2118 qVar"state"),LC("InstrSet_ARM",CTy"InstrSet"))), 2119 Apply 2120 (Call("BXWritePC",ATy(qTy,qTy),Var("address",F32)),qVar"state"), 2121 Apply 2122 (Call("BranchWritePC",ATy(qTy,qTy),Var("address",F32)), 2123 qVar"state")))) 2124; 2125val ThisInstrLength_def = Def 2126 ("ThisInstrLength",AVar uTy, 2127 Close 2128 (qVar"state", 2129 ITE(EQ(Dest("Encoding",CTy"Encoding",qVar"state"), 2130 LC("Encoding_Thumb",CTy"Encoding")),LN 16,LN 32))) 2131; 2132val IncPC_def = Def 2133 ("IncPC",AVar uTy, 2134 Close 2135 (qVar"state", 2136 Apply 2137 (Call 2138 ("BranchTo",ATy(qTy,qTy), 2139 Bop(Add, 2140 Apply 2141 (Dest("REG",ATy(CTy"RName",F32),qVar"state"), 2142 LC("RName_PC",CTy"RName")), 2143 ITE(EQ(Apply 2144 (Call("ThisInstrLength",ATy(qTy,nTy),LU), 2145 qVar"state"),LN 16),LW(2,32),LW(4,32)))), 2146 qVar"state"))) 2147; 2148val mem1_def = Def 2149 ("mem1",Var("address",F32), 2150 Close 2151 (qVar"state", 2152 Mop(Cast vTy, 2153 Apply(Dest("MEM",ATy(F32,F8),qVar"state"),Var("address",F32))))) 2154; 2155val mem_def = Def 2156 ("mem",TP[Var("address",F32),nVar"size"], 2157 Close 2158 (qVar"state", 2159 CS(nVar"size", 2160 [(LN 1, 2161 TP[EX(Apply 2162 (Call 2163 ("mem1",ATy(qTy,vTy), 2164 Bop(Add,Var("address",F32),LW(0,32))),qVar"state"), 2165 LN 7,LN 0,vTy),qVar"state"]), 2166 (LN 2, 2167 TP[EX(CC[Apply 2168 (Call 2169 ("mem1",ATy(qTy,vTy), 2170 Bop(Add,Var("address",F32),LW(1,32))), 2171 qVar"state"), 2172 Apply 2173 (Call 2174 ("mem1",ATy(qTy,vTy), 2175 Bop(Add,Var("address",F32),LW(0,32))), 2176 qVar"state")],LN 15,LN 0,vTy),qVar"state"]), 2177 (LN 4, 2178 TP[EX(CC[Apply 2179 (Call 2180 ("mem1",ATy(qTy,vTy), 2181 Bop(Add,Var("address",F32),LW(3,32))), 2182 qVar"state"), 2183 Apply 2184 (Call 2185 ("mem1",ATy(qTy,vTy), 2186 Bop(Add,Var("address",F32),LW(2,32))), 2187 qVar"state"), 2188 Apply 2189 (Call 2190 ("mem1",ATy(qTy,vTy), 2191 Bop(Add,Var("address",F32),LW(1,32))), 2192 qVar"state"), 2193 Apply 2194 (Call 2195 ("mem1",ATy(qTy,vTy), 2196 Bop(Add,Var("address",F32),LW(0,32))), 2197 qVar"state")],LN 31,LN 0,vTy),qVar"state"]), 2198 (LN 8, 2199 TP[EX(CC[Apply 2200 (Call 2201 ("mem1",ATy(qTy,vTy), 2202 Bop(Add,Var("address",F32),LW(7,32))), 2203 qVar"state"), 2204 Apply 2205 (Call 2206 ("mem1",ATy(qTy,vTy), 2207 Bop(Add,Var("address",F32),LW(6,32))), 2208 qVar"state"), 2209 Apply 2210 (Call 2211 ("mem1",ATy(qTy,vTy), 2212 Bop(Add,Var("address",F32),LW(5,32))), 2213 qVar"state"), 2214 Apply 2215 (Call 2216 ("mem1",ATy(qTy,vTy), 2217 Bop(Add,Var("address",F32),LW(4,32))), 2218 qVar"state"), 2219 Apply 2220 (Call 2221 ("mem1",ATy(qTy,vTy), 2222 Bop(Add,Var("address",F32),LW(3,32))), 2223 qVar"state"), 2224 Apply 2225 (Call 2226 ("mem1",ATy(qTy,vTy), 2227 Bop(Add,Var("address",F32),LW(2,32))), 2228 qVar"state"), 2229 Apply 2230 (Call 2231 ("mem1",ATy(qTy,vTy), 2232 Bop(Add,Var("address",F32),LW(1,32))), 2233 qVar"state"), 2234 Apply 2235 (Call 2236 ("mem1",ATy(qTy,vTy), 2237 Bop(Add,Var("address",F32),LW(0,32))), 2238 qVar"state")],LN 63,LN 0,vTy),qVar"state"]), 2239 (AVar nTy, 2240 Apply 2241 (Call 2242 ("raise'exception",ATy(qTy,PTy(vTy,qTy)), 2243 Call 2244 ("ASSERT",CTy"exception",LS"mem: size in {1, 2, 4, 8}")), 2245 qVar"state"))]))) 2246; 2247val write'mem_def = Def 2248 ("write'mem",TP[vVar"value",Var("address",F32),nVar"size"], 2249 Close 2250 (qVar"state", 2251 CS(nVar"size", 2252 [(LN 1, 2253 Rupd 2254 ("MEM", 2255 TP[qVar"state", 2256 Fupd 2257 (Dest("MEM",ATy(F32,F8),qVar"state"), 2258 Bop(Add,Var("address",F32),LW(0,32)), 2259 Mop(Cast F8,EX(vVar"value",LN 7,LN 0,vTy)))])), 2260 (LN 2, 2261 Let(qVar"s", 2262 Rupd 2263 ("MEM", 2264 TP[qVar"state", 2265 Fupd 2266 (Dest("MEM",ATy(F32,F8),qVar"state"), 2267 Bop(Add,Var("address",F32),LW(0,32)), 2268 Mop(Cast F8,EX(vVar"value",LN 7,LN 0,vTy)))]), 2269 Rupd 2270 ("MEM", 2271 TP[qVar"s", 2272 Fupd 2273 (Dest("MEM",ATy(F32,F8),qVar"s"), 2274 Bop(Add,Var("address",F32),LW(1,32)), 2275 Mop(Cast F8,EX(vVar"value",LN 15,LN 8,vTy)))]))), 2276 (LN 4, 2277 Let(qVar"s", 2278 Rupd 2279 ("MEM", 2280 TP[qVar"state", 2281 Fupd 2282 (Dest("MEM",ATy(F32,F8),qVar"state"), 2283 Bop(Add,Var("address",F32),LW(0,32)), 2284 Mop(Cast F8,EX(vVar"value",LN 7,LN 0,vTy)))]), 2285 Let(qVar"s", 2286 Rupd 2287 ("MEM", 2288 TP[qVar"s", 2289 Fupd 2290 (Dest("MEM",ATy(F32,F8),qVar"s"), 2291 Bop(Add,Var("address",F32),LW(1,32)), 2292 Mop(Cast F8,EX(vVar"value",LN 15,LN 8,vTy)))]), 2293 Let(qVar"s", 2294 Rupd 2295 ("MEM", 2296 TP[qVar"s", 2297 Fupd 2298 (Dest("MEM",ATy(F32,F8),qVar"s"), 2299 Bop(Add,Var("address",F32),LW(2,32)), 2300 Mop(Cast F8, 2301 EX(vVar"value",LN 23,LN 16,vTy)))]), 2302 Rupd 2303 ("MEM", 2304 TP[qVar"s", 2305 Fupd 2306 (Dest("MEM",ATy(F32,F8),qVar"s"), 2307 Bop(Add,Var("address",F32),LW(3,32)), 2308 Mop(Cast F8, 2309 EX(vVar"value",LN 31,LN 24,vTy)))]))))), 2310 (LN 8, 2311 Let(qVar"s", 2312 Rupd 2313 ("MEM", 2314 TP[qVar"state", 2315 Fupd 2316 (Dest("MEM",ATy(F32,F8),qVar"state"), 2317 Bop(Add,Var("address",F32),LW(0,32)), 2318 Mop(Cast F8,EX(vVar"value",LN 7,LN 0,vTy)))]), 2319 Let(qVar"s", 2320 Rupd 2321 ("MEM", 2322 TP[qVar"s", 2323 Fupd 2324 (Dest("MEM",ATy(F32,F8),qVar"s"), 2325 Bop(Add,Var("address",F32),LW(1,32)), 2326 Mop(Cast F8,EX(vVar"value",LN 15,LN 8,vTy)))]), 2327 Let(qVar"s", 2328 Rupd 2329 ("MEM", 2330 TP[qVar"s", 2331 Fupd 2332 (Dest("MEM",ATy(F32,F8),qVar"s"), 2333 Bop(Add,Var("address",F32),LW(2,32)), 2334 Mop(Cast F8, 2335 EX(vVar"value",LN 23,LN 16,vTy)))]), 2336 Let(qVar"s", 2337 Rupd 2338 ("MEM", 2339 TP[qVar"s", 2340 Fupd 2341 (Dest("MEM",ATy(F32,F8),qVar"s"), 2342 Bop(Add,Var("address",F32),LW(3,32)), 2343 Mop(Cast F8, 2344 EX(vVar"value",LN 31,LN 24,vTy)))]), 2345 Let(qVar"s", 2346 Rupd 2347 ("MEM", 2348 TP[qVar"s", 2349 Fupd 2350 (Dest("MEM",ATy(F32,F8),qVar"s"), 2351 Bop(Add,Var("address",F32), 2352 LW(4,32)), 2353 Mop(Cast F8, 2354 EX(vVar"value",LN 39,LN 32,vTy)))]), 2355 Let(qVar"s", 2356 Rupd 2357 ("MEM", 2358 TP[qVar"s", 2359 Fupd 2360 (Dest 2361 ("MEM",ATy(F32,F8),qVar"s"), 2362 Bop(Add,Var("address",F32), 2363 LW(5,32)), 2364 Mop(Cast F8, 2365 EX(vVar"value",LN 47, 2366 LN 40,vTy)))]), 2367 Let(qVar"s", 2368 Rupd 2369 ("MEM", 2370 TP[qVar"s", 2371 Fupd 2372 (Dest 2373 ("MEM",ATy(F32,F8), 2374 qVar"s"), 2375 Bop(Add, 2376 Var("address",F32), 2377 LW(6,32)), 2378 Mop(Cast F8, 2379 EX(vVar"value",LN 55, 2380 LN 48,vTy)))]), 2381 Rupd 2382 ("MEM", 2383 TP[qVar"s", 2384 Fupd 2385 (Dest 2386 ("MEM",ATy(F32,F8), 2387 qVar"s"), 2388 Bop(Add, 2389 Var("address",F32), 2390 LW(7,32)), 2391 Mop(Cast F8, 2392 EX(vVar"value",LN 63, 2393 LN 56,vTy)))]))))))))), 2394 (AVar nTy, 2395 Mop(Snd, 2396 Apply 2397 (Call 2398 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2399 Call 2400 ("ASSERT",CTy"exception", 2401 LS"mem: size in {1, 2, 4, 8}")),qVar"state")))]))) 2402; 2403val BigEndianReverse_def = Def 2404 ("BigEndianReverse",TP[vVar"value",nVar"n"], 2405 Close 2406 (qVar"state", 2407 CS(nVar"n", 2408 [(LN 1,TP[EX(vVar"value",LN 7,LN 0,vTy),qVar"state"]), 2409 (LN 2, 2410 TP[CC[EX(vVar"value",LN 7,LN 0,vTy), 2411 EX(vVar"value",LN 15,LN 8,vTy)],qVar"state"]), 2412 (LN 4, 2413 TP[CC[EX(vVar"value",LN 7,LN 0,vTy), 2414 EX(vVar"value",LN 15,LN 8,vTy), 2415 EX(vVar"value",LN 23,LN 16,vTy), 2416 EX(vVar"value",LN 31,LN 24,vTy)],qVar"state"]), 2417 (LN 8, 2418 TP[CC[EX(vVar"value",LN 7,LN 0,vTy), 2419 EX(vVar"value",LN 15,LN 8,vTy), 2420 EX(vVar"value",LN 23,LN 16,vTy), 2421 EX(vVar"value",LN 31,LN 24,vTy), 2422 EX(vVar"value",LN 39,LN 32,vTy), 2423 EX(vVar"value",LN 47,LN 40,vTy), 2424 EX(vVar"value",LN 55,LN 48,vTy), 2425 EX(vVar"value",LN 63,LN 56,vTy)],qVar"state"]), 2426 (AVar nTy, 2427 Apply 2428 (Call 2429 ("raise'exception",ATy(qTy,PTy(vTy,qTy)), 2430 Call 2431 ("ASSERT",CTy"exception", 2432 LS"BigEndianReverse: n in {1, 2, 4, 8}")),qVar"state"))]))) 2433; 2434val Align_def = Def 2435 ("Align",TP[Var("w",BTy"N"),nVar"n"], 2436 Mop(Cast(BTy"N"), 2437 Bop(Mul,nVar"n",Bop(Div,Mop(Cast nTy,Var("w",BTy"N")),nVar"n")))) 2438; 2439val Aligned_def = Def 2440 ("Aligned",TP[Var("w",BTy"N"),nVar"n"], 2441 EQ(Var("w",BTy"N"),Call("Align",BTy"N",TP[Var("w",BTy"N"),nVar"n"]))) 2442; 2443val MemA_with_priv_def = Def 2444 ("MemA_with_priv",TP[Var("address",F32),nVar"size",bVar"privileged"], 2445 Close 2446 (qVar"state", 2447 Let(TP[Var("r",BTy"N"),Var("s1",PTy(F32,qTy))], 2448 Let(Var("s",PTy(F32,qTy)), 2449 ITB([(Call("Aligned",bTy,TP[Var("address",F32),nVar"size"]), 2450 TP[Var("address",F32),qVar"state"]), 2451 (Bop(Or, 2452 Dest 2453 ("A",bTy, 2454 Dest 2455 ("SCTLR",CTy"SCTLR", 2456 Dest("CP15",CTy"CP15",qVar"state"))), 2457 Dest 2458 ("U",bTy, 2459 Dest 2460 ("SCTLR",CTy"SCTLR", 2461 Dest("CP15",CTy"CP15",qVar"state")))), 2462 TP[LX F32, 2463 Mop(Snd, 2464 Apply 2465 (Call 2466 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2467 Call 2468 ("AlignmentFault",CTy"exception", 2469 Var("address",F32))),qVar"state"))])], 2470 TP[Call("Align",F32,TP[Var("address",F32),nVar"size"]), 2471 qVar"state"]), 2472 Let(TP[vVar"v",Var("s",PTy(F32,qTy))], 2473 Let(TP[vVar"v",qVar"s3"], 2474 Apply 2475 (Call 2476 ("mem",ATy(qTy,PTy(vTy,qTy)), 2477 TP[Mop(Fst,Var("s",PTy(F32,qTy))),nVar"size"]), 2478 Mop(Snd,Var("s",PTy(F32,qTy)))), 2479 TP[vVar"v",Mop(Fst,Var("s",PTy(F32,qTy))),qVar"s3"]), 2480 Let(TP[Var("r",BTy"N"),Var("s1",PTy(vTy,PTy(F32,qTy)))], 2481 Let(Var("s0",PTy(vTy,PTy(F32,qTy))), 2482 TP[vVar"v",Var("s",PTy(F32,qTy))], 2483 Let(Var("s",PTy(vTy,PTy(F32,qTy))), 2484 ITE(Dest 2485 ("E",bTy, 2486 Dest 2487 ("CPSR",CTy"PSR", 2488 Mop(Snd,Var("s",PTy(F32,qTy))))), 2489 Let(TP[vVar"v", 2490 Var("s",PTy(vTy,PTy(F32,qTy)))], 2491 CS(Let(TP[vVar"v",qVar"s3"], 2492 Apply 2493 (Call 2494 ("BigEndianReverse", 2495 ATy(qTy,PTy(vTy,qTy)), 2496 TP[Mop(Fst, 2497 Var("s0", 2498 PTy(vTy, 2499 PTy(F32, 2500 qTy)))), 2501 nVar"size"]), 2502 Mop(Snd, 2503 Mop(Snd, 2504 Var("s0", 2505 PTy(vTy, 2506 PTy(F32, 2507 qTy)))))), 2508 TP[vVar"v", 2509 Mop(Fst, 2510 Mop(Snd, 2511 Var("s0", 2512 PTy(vTy, 2513 PTy(F32, 2514 qTy))))), 2515 qVar"s3"]), 2516 [(TP[vVar"v", 2517 Var("s3",PTy(F32,qTy))], 2518 TP[vVar"v", 2519 Mop(Fst, 2520 Var("s0", 2521 PTy(vTy,PTy(F32,qTy)))), 2522 Var("s3",PTy(F32,qTy))])]), 2523 TP[vVar"v", 2524 Mop(Snd, 2525 Var("s",PTy(vTy,PTy(F32,qTy))))]), 2526 Var("s0",PTy(vTy,PTy(F32,qTy)))), 2527 TP[Mop(Cast(BTy"N"), 2528 Mop(Fst, 2529 Var("s",PTy(vTy,PTy(F32,qTy))))), 2530 Var("s",PTy(vTy,PTy(F32,qTy)))])), 2531 TP[Var("r",BTy"N"), 2532 Mop(Snd,Var("s1",PTy(vTy,PTy(F32,qTy))))]))), 2533 TP[Var("r",BTy"N"),Mop(Snd,Var("s1",PTy(F32,qTy)))]))) 2534; 2535val write'MemA_with_priv_def = Def 2536 ("write'MemA_with_priv", 2537 TP[Var("value",BTy"N"),Var("address",F32),nVar"size",bVar"privileged"], 2538 Close 2539 (qVar"state", 2540 Let(Var("s",PTy(F32,qTy)), 2541 ITB([(Call("Aligned",bTy,TP[Var("address",F32),nVar"size"]), 2542 TP[Var("address",F32),qVar"state"]), 2543 (Bop(Or, 2544 Dest 2545 ("A",bTy, 2546 Dest 2547 ("SCTLR",CTy"SCTLR", 2548 Dest("CP15",CTy"CP15",qVar"state"))), 2549 Dest 2550 ("U",bTy, 2551 Dest 2552 ("SCTLR",CTy"SCTLR", 2553 Dest("CP15",CTy"CP15",qVar"state")))), 2554 TP[LX F32, 2555 Mop(Snd, 2556 Apply 2557 (Call 2558 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2559 Call 2560 ("AlignmentFault",CTy"exception", 2561 Var("address",F32))),qVar"state"))])], 2562 TP[Call("Align",F32,TP[Var("address",F32),nVar"size"]), 2563 qVar"state"]), 2564 Let(TP[vVar"v",Var("s",PTy(F32,qTy))], 2565 ITE(Dest 2566 ("E",bTy, 2567 Dest("CPSR",CTy"PSR",Mop(Snd,Var("s",PTy(F32,qTy))))), 2568 Let(TP[vVar"v",qVar"s3"], 2569 Apply 2570 (Call 2571 ("BigEndianReverse",ATy(qTy,PTy(vTy,qTy)), 2572 TP[Mop(Cast vTy,Var("value",BTy"N")), 2573 nVar"size"]),Mop(Snd,Var("s",PTy(F32,qTy)))), 2574 TP[vVar"v",Mop(Fst,Var("s",PTy(F32,qTy))),qVar"s3"]), 2575 TP[Mop(Cast vTy,Var("value",BTy"N")), 2576 Var("s",PTy(F32,qTy))]), 2577 Apply 2578 (Call 2579 ("write'mem",ATy(qTy,qTy), 2580 TP[vVar"v",Mop(Fst,Var("s",PTy(F32,qTy))),nVar"size"]), 2581 Mop(Snd,Var("s",PTy(F32,qTy)))))))) 2582; 2583val MemA_unpriv_def = Def 2584 ("MemA_unpriv",TP[Var("address",F32),nVar"size"], 2585 Close 2586 (qVar"state", 2587 Apply 2588 (Call 2589 ("MemA_with_priv",ATy(qTy,PTy(BTy"N",qTy)), 2590 TP[Var("address",F32),nVar"size",LF]),qVar"state"))) 2591; 2592val write'MemA_unpriv_def = Def 2593 ("write'MemA_unpriv", 2594 TP[Var("value",BTy"N"),Var("address",F32),nVar"size"], 2595 Close 2596 (qVar"state", 2597 Apply 2598 (Call 2599 ("write'MemA_with_priv",ATy(qTy,qTy), 2600 TP[Var("value",BTy"N"),Var("address",F32),nVar"size",LF]), 2601 qVar"state"))) 2602; 2603val MemA_def = Def 2604 ("MemA",TP[Var("address",F32),nVar"size"], 2605 Close 2606 (qVar"state", 2607 Let(TP[bVar"v",qVar"s"], 2608 Apply 2609 (Call("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)),LU), 2610 qVar"state"), 2611 Apply 2612 (Call 2613 ("MemA_with_priv",ATy(qTy,PTy(BTy"N",qTy)), 2614 TP[Var("address",F32),nVar"size",bVar"v"]),qVar"s")))) 2615; 2616val write'MemA_def = Def 2617 ("write'MemA",TP[Var("value",BTy"N"),Var("address",F32),nVar"size"], 2618 Close 2619 (qVar"state", 2620 Let(TP[bVar"v",qVar"s"], 2621 Apply 2622 (Call("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)),LU), 2623 qVar"state"), 2624 Apply 2625 (Call 2626 ("write'MemA_with_priv",ATy(qTy,qTy), 2627 TP[Var("value",BTy"N"),Var("address",F32),nVar"size", 2628 bVar"v"]),qVar"s")))) 2629; 2630val MemU_with_priv_def = Def 2631 ("MemU_with_priv",TP[Var("address",F32),nVar"size",bVar"privileged"], 2632 Close 2633 (qVar"state", 2634 Let(TP[Var("r",BTy"N"),Var("s1",PTy(vTy,qTy))], 2635 Let(vVar"s0",Bop(Rep,LV"0",LN 64), 2636 Let(Var("v",F32), 2637 ITE(Bop(And, 2638 Mop(Not, 2639 Dest 2640 ("A",bTy, 2641 Dest 2642 ("SCTLR",CTy"SCTLR", 2643 Dest("CP15",CTy"CP15",qVar"state")))), 2644 Mop(Not, 2645 Dest 2646 ("U",bTy, 2647 Dest 2648 ("SCTLR",CTy"SCTLR", 2649 Dest("CP15",CTy"CP15",qVar"state"))))), 2650 Call("Align",F32,TP[Var("address",F32),nVar"size"]), 2651 Var("address",F32)), 2652 Let(Var("s",PTy(vTy,qTy)), 2653 ITB([(Call 2654 ("Aligned",bTy,TP[Var("v",F32),nVar"size"]), 2655 Let(TP[Var("v",BTy"N"),Var("s",PTy(vTy,qTy))], 2656 Let(TP[Var("v",BTy"N"),qVar"s3"], 2657 Apply 2658 (Call 2659 ("MemA_with_priv", 2660 ATy(qTy,PTy(BTy"N",qTy)), 2661 TP[Var("v",F32),nVar"size", 2662 bVar"privileged"]), 2663 qVar"state"), 2664 TP[Var("v",BTy"N"),vVar"s0",qVar"s3"]), 2665 TP[Mop(Cast vTy,Var("v",BTy"N")), 2666 Mop(Snd,Var("s",PTy(vTy,qTy)))])), 2667 (Dest 2668 ("A",bTy, 2669 Dest 2670 ("SCTLR",CTy"SCTLR", 2671 Dest("CP15",CTy"CP15",qVar"state"))), 2672 TP[vVar"s0", 2673 Mop(Snd, 2674 Apply 2675 (Call 2676 ("raise'exception", 2677 ATy(qTy,PTy(uTy,qTy)), 2678 Call 2679 ("AlignmentFault", 2680 CTy"exception", 2681 Var("address",F32))), 2682 qVar"state"))])], 2683 Let(Var("s",PTy(vTy,qTy)), 2684 Mop(Snd, 2685 Apply 2686 (For(TP[LN 0,Bop(Sub,nVar"size",LN 1), 2687 Close 2688 (nVar"i", 2689 Close 2690 (Var("state",PTy(vTy,qTy)), 2691 Let(TP[vVar"v", 2692 Var("s", 2693 PTy(vTy,qTy))], 2694 Let(TP[Var("v0",F8), 2695 Var("s", 2696 PTy(vTy, 2697 qTy))], 2698 Let(TP[Var("v", 2699 F8), 2700 qVar"s3"], 2701 Apply 2702 (Call 2703 ("MemA_with_priv", 2704 ATy(qTy, 2705 PTy(F8, 2706 qTy)), 2707 TP[Bop(Add, 2708 Var("v", 2709 F32), 2710 Mop(Cast 2711 F32, 2712 nVar"i")), 2713 LN 2714 1, 2715 bVar"privileged"]), 2716 Mop(Snd, 2717 Var("state", 2718 PTy(vTy, 2719 qTy)))), 2720 TP[Var("v", 2721 F8), 2722 Mop(Fst, 2723 Var("state", 2724 PTy(vTy, 2725 qTy))), 2726 qVar"s3"]), 2727 TP[BFI(Bop(Add, 2728 Bop(Mul, 2729 LN 2730 8, 2731 nVar"i"), 2732 LN 7), 2733 Bop(Mul, 2734 LN 8, 2735 nVar"i"), 2736 Mop(Cast 2737 vTy, 2738 Var("v0", 2739 F8)), 2740 Mop(Fst, 2741 Var("state", 2742 PTy(vTy, 2743 qTy)))), 2744 Var("s", 2745 PTy(vTy, 2746 qTy))]), 2747 TP[LU,vVar"v", 2748 Mop(Snd, 2749 Var("s", 2750 PTy(vTy, 2751 qTy)))])))]), 2752 TP[vVar"s0",qVar"state"])), 2753 ITE(Dest 2754 ("E",bTy, 2755 Dest 2756 ("CPSR",CTy"PSR", 2757 Mop(Snd,Var("s",PTy(vTy,qTy))))), 2758 Let(TP[vVar"v",Var("s",PTy(vTy,qTy))], 2759 CS(Apply 2760 (Call 2761 ("BigEndianReverse", 2762 ATy(qTy,PTy(vTy,qTy)), 2763 TP[Mop(Fst, 2764 Var("s",PTy(vTy,qTy))), 2765 nVar"size"]), 2766 Mop(Snd,Var("s",PTy(vTy,qTy)))), 2767 [(TP[vVar"v",qVar"s3"], 2768 TP[vVar"v", 2769 Mop(Fst, 2770 Var("s",PTy(vTy,qTy))), 2771 qVar"s3"])]), 2772 TP[vVar"v", 2773 Mop(Snd,Var("s",PTy(vTy,qTy)))]), 2774 Var("s",PTy(vTy,qTy))))), 2775 TP[Mop(Cast(BTy"N"),Mop(Fst,Var("s",PTy(vTy,qTy)))), 2776 Var("s",PTy(vTy,qTy))]))), 2777 TP[Var("r",BTy"N"),Mop(Snd,Var("s1",PTy(vTy,qTy)))]))) 2778; 2779val write'MemU_with_priv_def = Def 2780 ("write'MemU_with_priv", 2781 TP[Var("value",BTy"N"),Var("address",F32),nVar"size",bVar"privileged"], 2782 Close 2783 (qVar"state", 2784 Let(Var("v",F32), 2785 ITE(Bop(And, 2786 Mop(Not, 2787 Dest 2788 ("A",bTy, 2789 Dest 2790 ("SCTLR",CTy"SCTLR", 2791 Dest("CP15",CTy"CP15",qVar"state")))), 2792 Mop(Not, 2793 Dest 2794 ("U",bTy, 2795 Dest 2796 ("SCTLR",CTy"SCTLR", 2797 Dest("CP15",CTy"CP15",qVar"state"))))), 2798 Call("Align",F32,TP[Var("address",F32),nVar"size"]), 2799 Var("address",F32)), 2800 ITB([(Call("Aligned",bTy,TP[Var("v",F32),nVar"size"]), 2801 Apply 2802 (Call 2803 ("write'MemA_with_priv",ATy(qTy,qTy), 2804 TP[Var("value",BTy"N"),Var("v",F32),nVar"size", 2805 bVar"privileged"]),qVar"state")), 2806 (Dest 2807 ("A",bTy, 2808 Dest 2809 ("SCTLR",CTy"SCTLR", 2810 Dest("CP15",CTy"CP15",qVar"state"))), 2811 Mop(Snd, 2812 Apply 2813 (Call 2814 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2815 Call 2816 ("AlignmentFault",CTy"exception", 2817 Var("address",F32))),qVar"state")))], 2818 Let(TP[vVar"v0",qVar"s"], 2819 ITE(Dest("E",bTy,Dest("CPSR",CTy"PSR",qVar"state")), 2820 Apply 2821 (Call 2822 ("BigEndianReverse",ATy(qTy,PTy(vTy,qTy)), 2823 TP[Mop(Cast vTy,Var("value",BTy"N")), 2824 nVar"size"]),qVar"state"), 2825 TP[Mop(Cast vTy,Var("value",BTy"N")),qVar"state"]), 2826 Mop(Snd, 2827 Apply 2828 (For(TP[LN 0,Bop(Sub,nVar"size",LN 1), 2829 Close 2830 (nVar"i", 2831 Close 2832 (qVar"state", 2833 TP[LU, 2834 Apply 2835 (Call 2836 ("write'MemA_with_priv", 2837 ATy(qTy,qTy), 2838 TP[Mop(Cast F8, 2839 EX(vVar"v0", 2840 Bop(Add, 2841 Bop(Mul,LN 8, 2842 nVar"i"), 2843 LN 7), 2844 Bop(Mul,LN 8, 2845 nVar"i"),vTy)), 2846 Bop(Add,Var("v",F32), 2847 Mop(Cast F32,nVar"i")), 2848 LN 1,bVar"privileged"]), 2849 qVar"state")]))]),qVar"s"))))))) 2850; 2851val MemU_unpriv_def = Def 2852 ("MemU_unpriv",TP[Var("address",F32),nVar"size"], 2853 Close 2854 (qVar"state", 2855 Apply 2856 (Call 2857 ("MemU_with_priv",ATy(qTy,PTy(BTy"N",qTy)), 2858 TP[Var("address",F32),nVar"size",LF]),qVar"state"))) 2859; 2860val write'MemU_unpriv_def = Def 2861 ("write'MemU_unpriv", 2862 TP[Var("value",BTy"N"),Var("address",F32),nVar"size"], 2863 Close 2864 (qVar"state", 2865 Apply 2866 (Call 2867 ("write'MemU_with_priv",ATy(qTy,qTy), 2868 TP[Var("value",BTy"N"),Var("address",F32),nVar"size",LF]), 2869 qVar"state"))) 2870; 2871val MemU_def = Def 2872 ("MemU",TP[Var("address",F32),nVar"size"], 2873 Close 2874 (qVar"state", 2875 Let(TP[bVar"v",qVar"s"], 2876 Apply 2877 (Call("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)),LU), 2878 qVar"state"), 2879 Apply 2880 (Call 2881 ("MemU_with_priv",ATy(qTy,PTy(BTy"N",qTy)), 2882 TP[Var("address",F32),nVar"size",bVar"v"]),qVar"s")))) 2883; 2884val write'MemU_def = Def 2885 ("write'MemU",TP[Var("value",BTy"N"),Var("address",F32),nVar"size"], 2886 Close 2887 (qVar"state", 2888 Let(TP[bVar"v",qVar"s"], 2889 Apply 2890 (Call("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)),LU), 2891 qVar"state"), 2892 Apply 2893 (Call 2894 ("write'MemU_with_priv",ATy(qTy,qTy), 2895 TP[Var("value",BTy"N"),Var("address",F32),nVar"size", 2896 bVar"v"]),qVar"s")))) 2897; 2898val NullCheckIfThumbEE_def = Def 2899 ("NullCheckIfThumbEE",Var("n",F4), 2900 Close 2901 (qVar"state", 2902 Let(TP[bVar"r",Var("s1",PTy(bTy,qTy))], 2903 Let(Var("s",PTy(bTy,qTy)), 2904 ITE(EQ(Apply 2905 (Call("CurrentInstrSet",ATy(qTy,CTy"InstrSet"),LU), 2906 qVar"state"),LC("InstrSet_ThumbEE",CTy"InstrSet")), 2907 ITB([(EQ(Var("n",F4),LW(15,4)), 2908 Let(TP[Var("v",F32),Var("s",PTy(bTy,qTy))], 2909 Let(TP[Var("v",F32),qVar"s3"], 2910 Apply 2911 (Const("PC",ATy(qTy,PTy(F32,qTy))), 2912 qVar"state"), 2913 TP[Var("v",F32),LF,qVar"s3"]), 2914 ITE(EQ(Call("Align",F32,TP[Var("v",F32),LN 4]), 2915 LW(0,32)), 2916 TP[Mop(Fst,Var("s",PTy(bTy,qTy))), 2917 Mop(Snd, 2918 Apply 2919 (Call 2920 ("raise'exception", 2921 ATy(qTy,PTy(uTy,qTy)), 2922 Call 2923 ("UNPREDICTABLE", 2924 CTy"exception", 2925 LS"NullCheckIfThumbEE")), 2926 Mop(Snd,Var("s",PTy(bTy,qTy)))))], 2927 Var("s",PTy(bTy,qTy))))), 2928 (EQ(Var("n",F4),LW(13,4)), 2929 Let(TP[Var("v",F32),Var("s",PTy(bTy,qTy))], 2930 Let(TP[Var("v",F32),qVar"s3"], 2931 Apply 2932 (Const("SP",ATy(qTy,PTy(F32,qTy))), 2933 qVar"state"), 2934 TP[Var("v",F32),LF,qVar"s3"]), 2935 ITE(EQ(Var("v",F32),LW(0,32)), 2936 TP[Mop(Fst,Var("s",PTy(bTy,qTy))), 2937 Mop(Snd, 2938 Apply 2939 (Call 2940 ("raise'exception", 2941 ATy(qTy,PTy(uTy,qTy)), 2942 Call 2943 ("UNPREDICTABLE", 2944 CTy"exception", 2945 LS"NullCheckIfThumbEE")), 2946 Mop(Snd,Var("s",PTy(bTy,qTy)))))], 2947 Var("s",PTy(bTy,qTy)))))], 2948 Let(TP[Var("v",F32),Var("s",PTy(bTy,qTy))], 2949 Let(TP[Var("v",F32),qVar"s3"], 2950 Apply 2951 (Call 2952 ("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 2953 qVar"state"),TP[Var("v",F32),LF,qVar"s3"]), 2954 ITE(EQ(Var("v",F32),LW(0,32)), 2955 Let(TP[Var("v",F32),Var("s",PTy(bTy,qTy))], 2956 Let(TP[Var("v",F32),qVar"s3"], 2957 Apply 2958 (Const("PC",ATy(qTy,PTy(F32,qTy))), 2959 Mop(Snd,Var("s",PTy(bTy,qTy)))), 2960 TP[Var("v",F32), 2961 Mop(Fst,Var("s",PTy(bTy,qTy))), 2962 qVar"s3"]), 2963 Let(qVar"s1", 2964 Apply 2965 (Call 2966 ("write'ITSTATE",ATy(qTy,qTy), 2967 LW(0,8)), 2968 Apply 2969 (Call 2970 ("write'LR",ATy(qTy,qTy), 2971 CC[EX(Var("v",F32),LN 31, 2972 LN 1,FTy 31),LW(1,1)]), 2973 Mop(Snd,Var("s",PTy(bTy,qTy))))), 2974 TP[LT, 2975 Apply 2976 (Call 2977 ("BranchWritePC", 2978 ATy(qTy,qTy), 2979 Bop(Sub, 2980 Dest 2981 ("TEEHBR",F32, 2982 Dest 2983 ("CP14",CTy"CP14", 2984 qVar"s1")), 2985 LW(4,32))),qVar"s1")])), 2986 Var("s",PTy(bTy,qTy))))),TP[LF,qVar"state"]), 2987 TP[Mop(Not,Mop(Fst,Var("s",PTy(bTy,qTy)))), 2988 Var("s",PTy(bTy,qTy))]), 2989 TP[bVar"r",Mop(Snd,Var("s1",PTy(bTy,qTy)))]))) 2990; 2991val HighestSetBit_def = Def 2992 ("HighestSetBit",Var("w",BTy"N"), 2993 ITE(EQ(Var("w",BTy"N"),LY(0,"N")),Mop(Neg,LI 1), 2994 Mop(Cast iTy,Mop(Log,Var("w",BTy"N"))))) 2995; 2996val CountLeadingZeroBits_def = Def 2997 ("CountLeadingZeroBits",Var("w",BTy"N"), 2998 Mop(Cast nTy, 2999 Bop(Sub,Bop(Sub,Mop(Cast iTy,Mop(Size,LY(0,"N"))),LI 1), 3000 Call("HighestSetBit",iTy,Var("w",BTy"N"))))) 3001; 3002val LowestSetBit_def = Def 3003 ("LowestSetBit",Var("w",BTy"N"), 3004 Call("CountLeadingZeroBits",nTy,Mop(Rev,Var("w",BTy"N")))) 3005; 3006val BitCount_def = Def 3007 ("BitCount",Var("w",BTy"N"), 3008 Mop(Fst, 3009 Mop(Snd, 3010 Apply 3011 (For(TP[LN 0,Bop(Sub,Mop(Size,LY(0,"N")),LN 1), 3012 Close 3013 (nVar"i", 3014 Close 3015 (Var("state",PTy(nTy,uTy)), 3016 TP[LU, 3017 ITE(Bop(Bit,Var("w",BTy"N"),nVar"i"), 3018 TP[Bop(Add, 3019 Mop(Fst,Var("state",PTy(nTy,uTy))), 3020 LN 1),LU], 3021 Var("state",PTy(nTy,uTy)))]))]), 3022 TP[LN 0,LU])))) 3023; 3024val SignExtendFrom_def = Def 3025 ("SignExtendFrom",TP[Var("w",BTy"N"),nVar"p"], 3026 Let(nVar"s",Bop(Sub,Bop(Sub,Mop(Size,LY(0,"N")),LN 1),nVar"p"), 3027 Bop(Asr,Bop(Lsl,Var("w",BTy"N"),nVar"s"),nVar"s"))) 3028; 3029val Extend_def = Def 3030 ("Extend",TP[bVar"unsigned",Var("w",BTy"M")], 3031 ITE(bVar"unsigned",Mop(Cast(BTy"N"),Var("w",BTy"M")), 3032 Mop(SE(BTy"N"),Var("w",BTy"M")))) 3033; 3034val UInt_def = Def 3035 ("UInt",Var("w",BTy"N"),Mop(Cast iTy,Mop(Cast nTy,Var("w",BTy"N")))) 3036; 3037val SignedSatQ_def = Def 3038 ("SignedSatQ",TP[iVar"i",nVar"N"], 3039 Close 3040 (qVar"state", 3041 TP[Let(iVar"max",Mop(Cast iTy,Bop(Exp,LN 2,Bop(Sub,nVar"N",LN 1))), 3042 ITB([(Bop(Gt,iVar"i",Bop(Sub,iVar"max",LI 1)), 3043 TP[Mop(Cast(BTy"M"),Bop(Sub,iVar"max",LI 1)),LT]), 3044 (Bop(Lt,iVar"i",Mop(Neg,iVar"max")), 3045 TP[Mop(Cast(BTy"M"),Mop(Neg,iVar"max")),LT])], 3046 TP[Mop(Cast(BTy"M"),iVar"i"),LF])), 3047 ITE(Bop(Lt,Mop(Size,LY(0,"M")),nVar"N"), 3048 Mop(Snd, 3049 Apply 3050 (Call 3051 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 3052 Call("ASSERT",CTy"exception",LS"SignedSatQ: M < N")), 3053 qVar"state")),qVar"state")])) 3054; 3055val UnsignedSatQ_def = Def 3056 ("UnsignedSatQ",TP[iVar"i",nVar"N"], 3057 Close 3058 (qVar"state", 3059 TP[Let(iVar"max",Mop(Cast iTy,Bop(Sub,Bop(Exp,LN 2,nVar"N"),LN 1)), 3060 ITB([(Bop(Gt,iVar"i",iVar"max"), 3061 TP[Mop(Cast(BTy"M"),iVar"max"),LT]), 3062 (Bop(Lt,iVar"i",LI 0),TP[LY(0,"M"),LT])], 3063 TP[Mop(Cast(BTy"M"),iVar"i"),LF])), 3064 ITE(Bop(Lt,Mop(Size,LY(0,"M")),nVar"N"), 3065 Mop(Snd, 3066 Apply 3067 (Call 3068 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 3069 Call 3070 ("ASSERT",CTy"exception",LS"UnsignedSatQ: M < N")), 3071 qVar"state")),qVar"state")])) 3072; 3073val SatQ_def = Def 3074 ("SatQ",TP[iVar"i",nVar"N",bVar"unsigned"], 3075 Close 3076 (qVar"state", 3077 ITE(bVar"unsigned", 3078 Apply 3079 (Call 3080 ("UnsignedSatQ",ATy(qTy,PTy(PTy(BTy"M",bTy),qTy)), 3081 TP[iVar"i",nVar"N"]),qVar"state"), 3082 Apply 3083 (Call 3084 ("SignedSatQ",ATy(qTy,PTy(PTy(BTy"M",bTy),qTy)), 3085 TP[iVar"i",nVar"N"]),qVar"state")))) 3086; 3087val SignedSat_def = Def 3088 ("SignedSat",TP[iVar"i",nVar"N"], 3089 Close 3090 (qVar"state", 3091 Let(TP[Var("v",PTy(BTy"M",bTy)),qVar"s"], 3092 Apply 3093 (Call 3094 ("SignedSatQ",ATy(qTy,PTy(PTy(BTy"M",bTy),qTy)), 3095 TP[iVar"i",nVar"N"]),qVar"state"), 3096 TP[Mop(Fst,Var("v",PTy(BTy"M",bTy))),qVar"s"]))) 3097; 3098val UnsignedSat_def = Def 3099 ("UnsignedSat",TP[iVar"i",nVar"N"], 3100 Close 3101 (qVar"state", 3102 Let(TP[Var("v",PTy(BTy"M",bTy)),qVar"s"], 3103 Apply 3104 (Call 3105 ("UnsignedSatQ",ATy(qTy,PTy(PTy(BTy"M",bTy),qTy)), 3106 TP[iVar"i",nVar"N"]),qVar"state"), 3107 TP[Mop(Fst,Var("v",PTy(BTy"M",bTy))),qVar"s"]))) 3108; 3109val LSL_C_def = Def 3110 ("LSL_C",TP[Var("x",BTy"N"),nVar"shift"], 3111 Close 3112 (qVar"state", 3113 TP[TP[Bop(Lsl,Var("x",BTy"N"),nVar"shift"), 3114 Bop(Bit, 3115 CC[Mop(Cast vTy,Var("x",BTy"N")), 3116 Bop(Rep,LV"0",nVar"shift")],Mop(Size,LY(0,"N")))], 3117 ITE(EQ(nVar"shift",LN 0), 3118 Mop(Snd, 3119 Apply 3120 (Call 3121 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 3122 Call("ASSERT",CTy"exception",LS"LSL_C")), 3123 qVar"state")),qVar"state")])) 3124; 3125val LSL_def = Def 3126 ("LSL",TP[Var("x",BTy"N"),nVar"shift"], 3127 Close 3128 (qVar"state", 3129 ITE(EQ(nVar"shift",LN 0),TP[Var("x",BTy"N"),qVar"state"], 3130 Let(TP[Var("v",PTy(BTy"N",bTy)),qVar"s"], 3131 Apply 3132 (Call 3133 ("LSL_C",ATy(qTy,PTy(PTy(BTy"N",bTy),qTy)), 3134 TP[Var("x",BTy"N"),nVar"shift"]),qVar"state"), 3135 TP[Mop(Fst,Var("v",PTy(BTy"N",bTy))),qVar"s"])))) 3136; 3137val LSR_C_def = Def 3138 ("LSR_C",TP[Var("x",BTy"N"),nVar"shift"], 3139 Close 3140 (qVar"state", 3141 TP[TP[Bop(Lsr,Var("x",BTy"N"),nVar"shift"), 3142 Bop(And,Bop(Le,nVar"shift",Mop(Size,LY(0,"N"))), 3143 Bop(Bit,Var("x",BTy"N"),Bop(Sub,nVar"shift",LN 1)))], 3144 ITE(EQ(nVar"shift",LN 0), 3145 Mop(Snd, 3146 Apply 3147 (Call 3148 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 3149 Call("ASSERT",CTy"exception",LS"LSR_C")), 3150 qVar"state")),qVar"state")])) 3151; 3152val LSR_def = Def 3153 ("LSR",TP[Var("x",BTy"N"),nVar"shift"], 3154 Close 3155 (qVar"state", 3156 ITE(EQ(nVar"shift",LN 0),TP[Var("x",BTy"N"),qVar"state"], 3157 Let(TP[Var("v",PTy(BTy"N",bTy)),qVar"s"], 3158 Apply 3159 (Call 3160 ("LSR_C",ATy(qTy,PTy(PTy(BTy"N",bTy),qTy)), 3161 TP[Var("x",BTy"N"),nVar"shift"]),qVar"state"), 3162 TP[Mop(Fst,Var("v",PTy(BTy"N",bTy))),qVar"s"])))) 3163; 3164val ASR_C_def = Def 3165 ("ASR_C",TP[Var("x",BTy"N"),nVar"shift"], 3166 Close 3167 (qVar"state", 3168 TP[TP[Bop(Asr,Var("x",BTy"N"),nVar"shift"), 3169 Bop(Bit,Var("x",BTy"N"), 3170 Bop(Sub,Mop(Min,TP[Mop(Size,LY(0,"N")),nVar"shift"]),LN 1))], 3171 ITE(EQ(nVar"shift",LN 0), 3172 Mop(Snd, 3173 Apply 3174 (Call 3175 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 3176 Call("ASSERT",CTy"exception",LS"ASR_C")), 3177 qVar"state")),qVar"state")])) 3178; 3179val ASR_def = Def 3180 ("ASR",TP[Var("x",BTy"N"),nVar"shift"], 3181 Close 3182 (qVar"state", 3183 ITE(EQ(nVar"shift",LN 0),TP[Var("x",BTy"N"),qVar"state"], 3184 Let(TP[Var("v",PTy(BTy"N",bTy)),qVar"s"], 3185 Apply 3186 (Call 3187 ("ASR_C",ATy(qTy,PTy(PTy(BTy"N",bTy),qTy)), 3188 TP[Var("x",BTy"N"),nVar"shift"]),qVar"state"), 3189 TP[Mop(Fst,Var("v",PTy(BTy"N",bTy))),qVar"s"])))) 3190; 3191val ROR_C_def = Def 3192 ("ROR_C",TP[Var("x",BTy"N"),nVar"shift"], 3193 Close 3194 (qVar"state", 3195 TP[Let(Var("result",BTy"N"),Bop(Ror,Var("x",BTy"N"),nVar"shift"), 3196 TP[Var("result",BTy"N"),Mop(Msb,Var("result",BTy"N"))]), 3197 ITE(EQ(nVar"shift",LN 0), 3198 Mop(Snd, 3199 Apply 3200 (Call 3201 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 3202 Call("ASSERT",CTy"exception",LS"ROR_C")), 3203 qVar"state")),qVar"state")])) 3204; 3205val ROR_def = Def 3206 ("ROR",TP[Var("x",BTy"N"),nVar"shift"], 3207 Close 3208 (qVar"state", 3209 ITE(EQ(nVar"shift",LN 0),TP[Var("x",BTy"N"),qVar"state"], 3210 Let(TP[Var("v",PTy(BTy"N",bTy)),qVar"s"], 3211 Apply 3212 (Call 3213 ("ROR_C",ATy(qTy,PTy(PTy(BTy"N",bTy),qTy)), 3214 TP[Var("x",BTy"N"),nVar"shift"]),qVar"state"), 3215 TP[Mop(Fst,Var("v",PTy(BTy"N",bTy))),qVar"s"])))) 3216; 3217val RRX_C_def = Def 3218 ("RRX_C",TP[Var("x",BTy"N"),bVar"carry_in"], 3219 TP[Mop(Cast(BTy"N"), 3220 CC[Mop(Cast vTy,bVar"carry_in"), 3221 EX(Mop(Cast vTy,Var("x",BTy"N")), 3222 Bop(Sub,Mop(Size,LY(0,"N")),LN 1),LN 1,vTy)]), 3223 Bop(Bit,Var("x",BTy"N"),LN 0)]) 3224; 3225val RRX_def = Def 3226 ("RRX",TP[Var("x",BTy"N"),bVar"carry_in"], 3227 Mop(Fst, 3228 Call("RRX_C",PTy(BTy"N",bTy),TP[Var("x",BTy"N"),bVar"carry_in"]))) 3229; 3230val DecodeImmShift_def = Def 3231 ("DecodeImmShift",TP[Var("typ",FTy 2),Var("imm5",FTy 5)], 3232 CS(Var("typ",FTy 2), 3233 [(LW(0,2), 3234 TP[LC("SRType_LSL",CTy"SRType"),Mop(Cast nTy,Var("imm5",FTy 5))]), 3235 (LW(1,2), 3236 TP[LC("SRType_LSR",CTy"SRType"), 3237 ITE(EQ(Var("imm5",FTy 5),LW(0,5)),LN 32, 3238 Mop(Cast nTy,Var("imm5",FTy 5)))]), 3239 (LW(2,2), 3240 TP[LC("SRType_ASR",CTy"SRType"), 3241 ITE(EQ(Var("imm5",FTy 5),LW(0,5)),LN 32, 3242 Mop(Cast nTy,Var("imm5",FTy 5)))]), 3243 (LW(3,2), 3244 ITE(EQ(Var("imm5",FTy 5),LW(0,5)), 3245 TP[LC("SRType_RRX",CTy"SRType"),LN 1], 3246 TP[LC("SRType_ROR",CTy"SRType"), 3247 Mop(Cast nTy,Var("imm5",FTy 5))]))])) 3248; 3249val DecodeRegShift_def = Def 3250 ("DecodeRegShift",Var("typ",FTy 2), 3251 CS(Var("typ",FTy 2), 3252 [(LW(0,2),LC("SRType_LSL",CTy"SRType")), 3253 (LW(1,2),LC("SRType_LSR",CTy"SRType")), 3254 (LW(2,2),LC("SRType_ASR",CTy"SRType")), 3255 (LW(3,2),LC("SRType_ROR",CTy"SRType"))])) 3256; 3257val Shift_C_def = Def 3258 ("Shift_C", 3259 TP[Var("value",BTy"N"),Var("typ",CTy"SRType"),nVar"amount", 3260 bVar"carry_in"], 3261 Close 3262 (qVar"state", 3263 ITE(EQ(nVar"amount",LN 0), 3264 TP[TP[Var("value",BTy"N"),bVar"carry_in"],qVar"state"], 3265 CS(Var("typ",CTy"SRType"), 3266 [(LC("SRType_LSL",CTy"SRType"), 3267 Apply 3268 (Call 3269 ("LSL_C",ATy(qTy,PTy(PTy(BTy"N",bTy),qTy)), 3270 TP[Var("value",BTy"N"),nVar"amount"]),qVar"state")), 3271 (LC("SRType_LSR",CTy"SRType"), 3272 Apply 3273 (Call 3274 ("LSR_C",ATy(qTy,PTy(PTy(BTy"N",bTy),qTy)), 3275 TP[Var("value",BTy"N"),nVar"amount"]),qVar"state")), 3276 (LC("SRType_ASR",CTy"SRType"), 3277 Apply 3278 (Call 3279 ("ASR_C",ATy(qTy,PTy(PTy(BTy"N",bTy),qTy)), 3280 TP[Var("value",BTy"N"),nVar"amount"]),qVar"state")), 3281 (LC("SRType_ROR",CTy"SRType"), 3282 Apply 3283 (Call 3284 ("ROR_C",ATy(qTy,PTy(PTy(BTy"N",bTy),qTy)), 3285 TP[Var("value",BTy"N"),nVar"amount"]),qVar"state")), 3286 (LC("SRType_RRX",CTy"SRType"), 3287 TP[Call 3288 ("RRX_C",PTy(BTy"N",bTy), 3289 TP[Var("value",BTy"N"),bVar"carry_in"]),qVar"state"])])))) 3290; 3291val Shift_def = Def 3292 ("Shift", 3293 TP[Var("value",BTy"N"),Var("typ",CTy"SRType"),nVar"amount", 3294 bVar"carry_in"], 3295 Close 3296 (qVar"state", 3297 Let(TP[Var("v",PTy(BTy"N",bTy)),qVar"s"], 3298 Apply 3299 (Call 3300 ("Shift_C",ATy(qTy,PTy(PTy(BTy"N",bTy),qTy)), 3301 TP[Var("value",BTy"N"),Var("typ",CTy"SRType"), 3302 nVar"amount",bVar"carry_in"]),qVar"state"), 3303 TP[Mop(Fst,Var("v",PTy(BTy"N",bTy))),qVar"s"]))) 3304; 3305val ARMExpandImm_C_def = Def 3306 ("ARMExpandImm_C",TP[Var("imm12",FTy 12),bVar"carry_in"], 3307 Close 3308 (qVar"state", 3309 Apply 3310 (Call 3311 ("Shift_C",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 3312 TP[Mop(Cast F32,EX(Var("imm12",FTy 12),LN 7,LN 0,F8)), 3313 LC("SRType_ROR",CTy"SRType"), 3314 Bop(Mul,LN 2, 3315 Mop(Cast nTy,EX(Var("imm12",FTy 12),LN 11,LN 8,F4))), 3316 bVar"carry_in"]),qVar"state"))) 3317; 3318val ARMExpandImm_def = Def 3319 ("ARMExpandImm",Var("imm12",FTy 12), 3320 Close 3321 (qVar"state", 3322 Let(TP[Var("v",PTy(F32,bTy)),qVar"s"], 3323 Apply 3324 (Call 3325 ("ARMExpandImm_C",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 3326 TP[Var("imm12",FTy 12), 3327 Dest("C",bTy,Dest("CPSR",CTy"PSR",qVar"state"))]), 3328 qVar"state"),TP[Mop(Fst,Var("v",PTy(F32,bTy))),qVar"s"]))) 3329; 3330val ThumbExpandImm_C_def = Def 3331 ("ThumbExpandImm_C",TP[Var("imm12",FTy 12),bVar"carry_in"], 3332 Close 3333 (qVar"state", 3334 ITE(EQ(EX(Var("imm12",FTy 12),LN 11,LN 10,FTy 2),LW(0,2)), 3335 Let(TP[Var("v",F32),qVar"s"], 3336 CS(EX(Var("imm12",FTy 12),LN 9,LN 8,FTy 2), 3337 [(LW(0,2), 3338 TP[Mop(Cast F32,EX(Var("imm12",FTy 12),LN 7,LN 0,F8)), 3339 qVar"state"]), 3340 (LW(1,2), 3341 ITE(EQ(EX(Var("imm12",FTy 12),LN 7,LN 0,F8),LW(0,8)), 3342 Apply 3343 (Call 3344 ("raise'exception",ATy(qTy,PTy(F32,qTy)), 3345 Call 3346 ("UNPREDICTABLE",CTy"exception", 3347 LS"ThumbExpandImm_C")),qVar"state"), 3348 TP[CC[LW(0,8),EX(Var("imm12",FTy 12),LN 7,LN 0,F8), 3349 LW(0,8),EX(Var("imm12",FTy 12),LN 7,LN 0,F8)], 3350 qVar"state"])), 3351 (LW(2,2), 3352 ITE(EQ(EX(Var("imm12",FTy 12),LN 7,LN 0,F8),LW(0,8)), 3353 Apply 3354 (Call 3355 ("raise'exception",ATy(qTy,PTy(F32,qTy)), 3356 Call 3357 ("UNPREDICTABLE",CTy"exception", 3358 LS"ThumbExpandImm_C")),qVar"state"), 3359 TP[CC[EX(Var("imm12",FTy 12),LN 7,LN 0,F8),LW(0,8), 3360 EX(Var("imm12",FTy 12),LN 7,LN 0,F8),LW(0,8)], 3361 qVar"state"])), 3362 (LW(3,2), 3363 ITE(EQ(EX(Var("imm12",FTy 12),LN 7,LN 0,F8),LW(0,8)), 3364 Apply 3365 (Call 3366 ("raise'exception",ATy(qTy,PTy(F32,qTy)), 3367 Call 3368 ("UNPREDICTABLE",CTy"exception", 3369 LS"ThumbExpandImm_C")),qVar"state"), 3370 TP[CC[EX(Var("imm12",FTy 12),LN 7,LN 0,F8), 3371 EX(Var("imm12",FTy 12),LN 7,LN 0,F8), 3372 EX(Var("imm12",FTy 12),LN 7,LN 0,F8), 3373 EX(Var("imm12",FTy 12),LN 7,LN 0,F8)], 3374 qVar"state"]))]), 3375 TP[TP[Var("v",F32),bVar"carry_in"],qVar"s"]), 3376 Apply 3377 (Call 3378 ("ROR_C",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 3379 TP[Mop(Cast F32, 3380 CC[LW(1,1),EX(Var("imm12",FTy 12),LN 6,LN 0,FTy 7)]), 3381 Mop(Cast nTy,EX(Var("imm12",FTy 12),LN 11,LN 7,FTy 5))]), 3382 qVar"state")))) 3383; 3384val ExpandImm_C_def = Def 3385 ("ExpandImm_C",TP[Var("imm12",FTy 12),bVar"carry_in"], 3386 Close 3387 (qVar"state", 3388 ITE(EQ(Dest("Encoding",CTy"Encoding",qVar"state"), 3389 LC("Encoding_Thumb2",CTy"Encoding")), 3390 Apply 3391 (Call 3392 ("ThumbExpandImm_C",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 3393 TP[Var("imm12",FTy 12),bVar"carry_in"]),qVar"state"), 3394 Apply 3395 (Call 3396 ("ARMExpandImm_C",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 3397 TP[Var("imm12",FTy 12),bVar"carry_in"]),qVar"state")))) 3398; 3399val AddWithCarry_def = Def 3400 ("AddWithCarry",TP[Var("x",BTy"N"),Var("y",BTy"N"),bVar"carry_in"], 3401 Let(nVar"unsigned_sum", 3402 Bop(Add, 3403 Bop(Add,Mop(Cast nTy,Var("x",BTy"N")), 3404 Mop(Cast nTy,Var("y",BTy"N"))),Mop(Cast nTy,bVar"carry_in")), 3405 Let(Var("result",BTy"N"),Mop(Cast(BTy"N"),nVar"unsigned_sum"), 3406 TP[Var("result",BTy"N"), 3407 Mop(Not, 3408 EQ(Mop(Cast nTy,Var("result",BTy"N")),nVar"unsigned_sum")), 3409 Mop(Not, 3410 EQ(Mop(Cast iTy,Var("result",BTy"N")), 3411 Bop(Add, 3412 Bop(Add,Mop(Cast iTy,Var("x",BTy"N")), 3413 Mop(Cast iTy,Var("y",BTy"N"))), 3414 Mop(Cast iTy,bVar"carry_in"))))]))) 3415; 3416val DataProcessingALU_def = Def 3417 ("DataProcessingALU", 3418 TP[Var("opc",F4),Var("a",F32),Var("b",F32),bVar"c"], 3419 CS(Var("opc",F4), 3420 [(LW(0,4),TP[Bop(BAnd,Var("a",F32),Var("b",F32)),bVar"c",LX bTy]), 3421 (LW(8,4),TP[Bop(BAnd,Var("a",F32),Var("b",F32)),bVar"c",LX bTy]), 3422 (LW(1,4),TP[Bop(BXor,Var("a",F32),Var("b",F32)),bVar"c",LX bTy]), 3423 (LW(9,4),TP[Bop(BXor,Var("a",F32),Var("b",F32)),bVar"c",LX bTy]), 3424 (LW(2,4), 3425 Call 3426 ("AddWithCarry",PTy(F32,PTy(bTy,bTy)), 3427 TP[Var("a",F32),Mop(BNot,Var("b",F32)),LT])), 3428 (LW(10,4), 3429 Call 3430 ("AddWithCarry",PTy(F32,PTy(bTy,bTy)), 3431 TP[Var("a",F32),Mop(BNot,Var("b",F32)),LT])), 3432 (LW(3,4), 3433 Call 3434 ("AddWithCarry",PTy(F32,PTy(bTy,bTy)), 3435 TP[Mop(BNot,Var("a",F32)),Var("b",F32),LT])), 3436 (LW(4,4), 3437 Call 3438 ("AddWithCarry",PTy(F32,PTy(bTy,bTy)), 3439 TP[Var("a",F32),Var("b",F32),LF])), 3440 (LW(11,4), 3441 Call 3442 ("AddWithCarry",PTy(F32,PTy(bTy,bTy)), 3443 TP[Var("a",F32),Var("b",F32),LF])), 3444 (LW(5,4), 3445 Call 3446 ("AddWithCarry",PTy(F32,PTy(bTy,bTy)), 3447 TP[Var("a",F32),Var("b",F32),bVar"c"])), 3448 (LW(6,4), 3449 Call 3450 ("AddWithCarry",PTy(F32,PTy(bTy,bTy)), 3451 TP[Var("a",F32),Mop(BNot,Var("b",F32)),bVar"c"])), 3452 (LW(7,4), 3453 Call 3454 ("AddWithCarry",PTy(F32,PTy(bTy,bTy)), 3455 TP[Mop(BNot,Var("a",F32)),Var("b",F32),bVar"c"])), 3456 (LW(12,4),TP[Bop(BOr,Var("a",F32),Var("b",F32)),bVar"c",LX bTy]), 3457 (LW(13,4),TP[Var("b",F32),bVar"c",LX bTy]), 3458 (LW(14,4), 3459 TP[Bop(BAnd,Var("a",F32),Mop(BNot,Var("b",F32))),bVar"c",LX bTy]), 3460 (LW(15,4), 3461 TP[Bop(BOr,Var("a",F32),Mop(BNot,Var("b",F32))),bVar"c",LX bTy])])) 3462; 3463val ArithmeticOpcode_def = Def 3464 ("ArithmeticOpcode",Var("opc",F4), 3465 Bop(And, 3466 Bop(Or,Bop(Bit,Var("opc",F4),LN 2),Bop(Bit,Var("opc",F4),LN 1)), 3467 Mop(Not, 3468 Bop(And,Bop(Bit,Var("opc",F4),LN 3),Bop(Bit,Var("opc",F4),LN 2))))) 3469; 3470val ExcVectorBase_def = Def 3471 ("ExcVectorBase",AVar uTy, 3472 Close 3473 (qVar"state", 3474 ITB([(Dest 3475 ("V",bTy, 3476 Dest("SCTLR",CTy"SCTLR",Dest("CP15",CTy"CP15",qVar"state"))), 3477 LW(268431360,32)), 3478 (Apply(Call("HaveSecurityExt",ATy(qTy,bTy),LU),qVar"state"), 3479 Dest("VBAR",F32,Dest("CP15",CTy"CP15",qVar"state")))],LW(0,32)))) 3480; 3481val EnterMonitorMode_def = Def 3482 ("EnterMonitorMode", 3483 TP[Var("new_spsr_value",CTy"PSR"),Var("new_lr_value",F32), 3484 Var("vect_offset",F32)], 3485 Close 3486 (qVar"state", 3487 Let(qVar"s", 3488 Apply 3489 (Call 3490 ("write'R",ATy(qTy,qTy), 3491 TP[Var("new_lr_value",F32),LW(14,4)]), 3492 Apply 3493 (Call 3494 ("write'SPSR",ATy(qTy,qTy), 3495 Var("new_spsr_value",CTy"PSR")), 3496 Rupd 3497 ("CPSR", 3498 TP[qVar"state", 3499 Rupd 3500 ("M", 3501 TP[Dest("CPSR",CTy"PSR",qVar"state"),LW(22,5)])]))), 3502 Let(qVar"s", 3503 Rupd 3504 ("CPSR", 3505 TP[qVar"s",Rupd("J",TP[Dest("CPSR",CTy"PSR",qVar"s"),LF])]), 3506 Let(qVar"s", 3507 Rupd 3508 ("CPSR", 3509 TP[qVar"s", 3510 Rupd 3511 ("T", 3512 TP[Dest("CPSR",CTy"PSR",qVar"s"), 3513 Dest 3514 ("TE",bTy, 3515 Dest 3516 ("SCTLR",CTy"SCTLR", 3517 Dest("CP15",CTy"CP15",qVar"s")))])]), 3518 Let(qVar"s", 3519 Rupd 3520 ("CPSR", 3521 TP[qVar"s", 3522 Rupd 3523 ("E", 3524 TP[Dest("CPSR",CTy"PSR",qVar"s"), 3525 Dest 3526 ("EE",bTy, 3527 Dest 3528 ("SCTLR",CTy"SCTLR", 3529 Dest("CP15",CTy"CP15",qVar"s")))])]), 3530 Let(qVar"s", 3531 Rupd 3532 ("CPSR", 3533 TP[qVar"s", 3534 Rupd 3535 ("A", 3536 TP[Dest("CPSR",CTy"PSR",qVar"s"),LT])]), 3537 Let(qVar"s", 3538 Rupd 3539 ("CPSR", 3540 TP[qVar"s", 3541 Rupd 3542 ("F", 3543 TP[Dest("CPSR",CTy"PSR",qVar"s"),LT])]), 3544 Let(qVar"s", 3545 Rupd 3546 ("CPSR", 3547 TP[qVar"s", 3548 Rupd 3549 ("I", 3550 TP[Dest 3551 ("CPSR",CTy"PSR",qVar"s"), 3552 LT])]), 3553 Let(qVar"s", 3554 Rupd 3555 ("CPSR", 3556 TP[qVar"s", 3557 Rupd 3558 ("IT", 3559 TP[Dest 3560 ("CPSR",CTy"PSR", 3561 qVar"s"),LW(0,8)])]), 3562 Apply 3563 (Call 3564 ("BranchTo",ATy(qTy,qTy), 3565 Bop(Add, 3566 Dest 3567 ("MVBAR",F32, 3568 Dest 3569 ("CP15",CTy"CP15", 3570 qVar"s")), 3571 Var("vect_offset",F32))), 3572 qVar"s"))))))))))) 3573; 3574val EnterHypMode_def = Def 3575 ("EnterHypMode", 3576 TP[Var("new_spsr_value",CTy"PSR"),Var("new_lr_value",F32), 3577 Var("vect_offset",F32)], 3578 Close 3579 (qVar"state", 3580 Let(qVar"s", 3581 Apply 3582 (Call 3583 ("write'R",ATy(qTy,qTy), 3584 TP[Var("new_lr_value",F32),LW(14,4)]), 3585 Apply 3586 (Call 3587 ("write'SPSR",ATy(qTy,qTy), 3588 Var("new_spsr_value",CTy"PSR")), 3589 Rupd 3590 ("CPSR", 3591 TP[qVar"state", 3592 Rupd 3593 ("M", 3594 TP[Dest("CPSR",CTy"PSR",qVar"state"),LW(26,5)])]))), 3595 Let(qVar"s", 3596 Rupd 3597 ("CPSR", 3598 TP[qVar"s",Rupd("J",TP[Dest("CPSR",CTy"PSR",qVar"s"),LF])]), 3599 Let(qVar"s", 3600 Rupd 3601 ("CPSR", 3602 TP[qVar"s", 3603 Rupd 3604 ("T", 3605 TP[Dest("CPSR",CTy"PSR",qVar"s"), 3606 Dest 3607 ("TE",bTy, 3608 Dest 3609 ("SCTLR",CTy"SCTLR", 3610 Dest("CP15",CTy"CP15",qVar"s")))])]), 3611 Let(qVar"s", 3612 Rupd 3613 ("CPSR", 3614 TP[qVar"s", 3615 Rupd 3616 ("E", 3617 TP[Dest("CPSR",CTy"PSR",qVar"s"), 3618 Dest 3619 ("EE",bTy, 3620 Dest 3621 ("SCTLR",CTy"SCTLR", 3622 Dest("CP15",CTy"CP15",qVar"s")))])]), 3623 Let(qVar"s", 3624 Rupd 3625 ("CPSR", 3626 TP[qVar"s", 3627 Rupd 3628 ("A", 3629 TP[Dest("CPSR",CTy"PSR",qVar"s"),LT])]), 3630 Let(qVar"s", 3631 Rupd 3632 ("CPSR", 3633 TP[qVar"s", 3634 Rupd 3635 ("F", 3636 TP[Dest("CPSR",CTy"PSR",qVar"s"),LT])]), 3637 Let(qVar"s", 3638 Rupd 3639 ("CPSR", 3640 TP[qVar"s", 3641 Rupd 3642 ("I", 3643 TP[Dest 3644 ("CPSR",CTy"PSR",qVar"s"), 3645 LT])]), 3646 Let(qVar"s", 3647 Rupd 3648 ("CPSR", 3649 TP[qVar"s", 3650 Rupd 3651 ("IT", 3652 TP[Dest 3653 ("CPSR",CTy"PSR", 3654 qVar"s"),LW(0,8)])]), 3655 Apply 3656 (Call 3657 ("BranchTo",ATy(qTy,qTy), 3658 Bop(Add, 3659 Dest 3660 ("MVBAR",F32, 3661 Dest 3662 ("CP15",CTy"CP15", 3663 qVar"s")), 3664 Var("vect_offset",F32))), 3665 qVar"s"))))))))))) 3666; 3667val TakeReset_def = Def 3668 ("TakeReset",AVar uTy, 3669 Close 3670 (qVar"state", 3671 Let(TP[bVar"v",qVar"s"], 3672 Let(qVar"s", 3673 Rupd 3674 ("CPSR", 3675 TP[qVar"state", 3676 Rupd 3677 ("M",TP[Dest("CPSR",CTy"PSR",qVar"state"),LW(19,5)])]), 3678 TP[Apply(Call("HaveSecurityExt",ATy(qTy,bTy),LU),qVar"s"), 3679 qVar"s"]), 3680 Let(qVar"s", 3681 ITE(bVar"v", 3682 Rupd 3683 ("CP15", 3684 TP[qVar"s", 3685 Rupd 3686 ("SCR", 3687 TP[Dest("CP15",CTy"CP15",qVar"s"), 3688 Rupd 3689 ("NS", 3690 TP[Dest 3691 ("SCR",CTy"SCR", 3692 Dest("CP15",CTy"CP15",qVar"s")),LF])])]), 3693 qVar"s"), 3694 Let(qVar"s", 3695 Rupd 3696 ("CPSR", 3697 TP[qVar"s", 3698 Rupd("I",TP[Dest("CPSR",CTy"PSR",qVar"s"),LT])]), 3699 Let(qVar"s", 3700 Rupd 3701 ("CPSR", 3702 TP[qVar"s", 3703 Rupd("F",TP[Dest("CPSR",CTy"PSR",qVar"s"),LT])]), 3704 Let(qVar"s", 3705 Rupd 3706 ("CPSR", 3707 TP[qVar"s", 3708 Rupd 3709 ("A", 3710 TP[Dest("CPSR",CTy"PSR",qVar"s"),LT])]), 3711 Let(qVar"s", 3712 Rupd 3713 ("CPSR", 3714 TP[qVar"s", 3715 Rupd 3716 ("IT", 3717 TP[Dest("CPSR",CTy"PSR",qVar"s"), 3718 LW(0,8)])]), 3719 Let(qVar"s", 3720 Rupd 3721 ("CPSR", 3722 TP[qVar"s", 3723 Rupd 3724 ("J", 3725 TP[Dest 3726 ("CPSR",CTy"PSR",qVar"s"), 3727 LF])]), 3728 Let(qVar"s", 3729 Rupd 3730 ("CPSR", 3731 TP[qVar"s", 3732 Rupd 3733 ("T", 3734 TP[Dest 3735 ("CPSR",CTy"PSR", 3736 qVar"s"), 3737 Dest 3738 ("TE",bTy, 3739 Dest 3740 ("SCTLR", 3741 CTy"SCTLR", 3742 Dest 3743 ("CP15", 3744 CTy"CP15", 3745 qVar"s")))])]), 3746 Let(TP[Var("v",F32),qVar"s"], 3747 Let(qVar"s0", 3748 Rupd 3749 ("CPSR", 3750 TP[qVar"s", 3751 Rupd 3752 ("E", 3753 TP[Dest 3754 ("CPSR", 3755 CTy"PSR", 3756 qVar"s"), 3757 Dest 3758 ("EE",bTy, 3759 Dest 3760 ("SCTLR", 3761 CTy"SCTLR", 3762 Dest 3763 ("CP15", 3764 CTy"CP15", 3765 qVar"s")))])]), 3766 TP[Apply 3767 (Call 3768 ("ExcVectorBase", 3769 ATy(qTy,F32),LU), 3770 qVar"s0"),qVar"s0"]), 3771 Apply 3772 (Call 3773 ("BranchTo",ATy(qTy,qTy), 3774 Bop(Add,Var("v",F32), 3775 LW(0,32))),qVar"s")))))))))))) 3776; 3777val TakeUndefInstrException_def = Def 3778 ("TakeUndefInstrException",AVar uTy, 3779 Close 3780 (qVar"state", 3781 Let(TP[Var("v",F32),qVar"s"], 3782 ITE(Dest("T",bTy,Dest("CPSR",CTy"PSR",qVar"state")), 3783 Let(TP[Var("v",F32),qVar"s"], 3784 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 3785 TP[Bop(Sub,Var("v",F32),LW(2,32)),qVar"s"]), 3786 Let(TP[Var("v",F32),qVar"s"], 3787 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 3788 TP[Bop(Sub,Var("v",F32),LW(4,32)),qVar"s"])), 3789 Let(Var("v0",CTy"PSR"),Dest("CPSR",CTy"PSR",qVar"s"), 3790 Let(Var("vect_offset",F32),LW(4,32), 3791 Let(Var("preferred_exceptn_return",F32), 3792 Bop(Sub,Var("v",F32), 3793 ITE(Dest("T",bTy,Dest("CPSR",CTy"PSR",qVar"s")), 3794 LW(2,32),LW(4,32))), 3795 ITB([(Bop(And, 3796 Apply 3797 (Call("HaveVirtExt",ATy(qTy,bTy),LU), 3798 qVar"s"), 3799 Bop(And, 3800 Apply 3801 (Call 3802 ("HaveSecurityExt",ATy(qTy,bTy), 3803 LU),qVar"s"), 3804 Bop(And, 3805 Dest 3806 ("NS",bTy, 3807 Dest 3808 ("SCR",CTy"SCR", 3809 Dest 3810 ("CP15",CTy"CP15",qVar"s"))), 3811 EQ(Dest 3812 ("M",FTy 5, 3813 Dest 3814 ("CPSR",CTy"PSR",qVar"s")), 3815 LW(26,5))))), 3816 Apply 3817 (Call 3818 ("EnterHypMode",ATy(qTy,qTy), 3819 TP[Var("v0",CTy"PSR"), 3820 Var("preferred_exceptn_return",F32), 3821 Var("vect_offset",F32)]),qVar"s")), 3822 (Bop(And, 3823 Apply 3824 (Call("HaveVirtExt",ATy(qTy,bTy),LU), 3825 qVar"s"), 3826 Bop(And, 3827 Apply 3828 (Call 3829 ("HaveSecurityExt",ATy(qTy,bTy), 3830 LU),qVar"s"), 3831 Bop(And, 3832 Mop(Not, 3833 Apply 3834 (Call 3835 ("IsSecure",ATy(qTy,bTy), 3836 LU),qVar"s")), 3837 Bop(And, 3838 Dest 3839 ("TGE",bTy, 3840 Dest 3841 ("HCR",CTy"HCR", 3842 Dest 3843 ("CP15",CTy"CP15", 3844 qVar"s"))), 3845 EQ(Dest 3846 ("M",FTy 5, 3847 Dest 3848 ("CPSR",CTy"PSR", 3849 qVar"s")),LW(16,5)))))), 3850 Apply 3851 (Call 3852 ("EnterHypMode",ATy(qTy,qTy), 3853 TP[Var("v0",CTy"PSR"), 3854 Var("preferred_exceptn_return",F32), 3855 LW(20,32)]),qVar"s"))], 3856 Let(qVar"s", 3857 ITE(EQ(Dest 3858 ("M",FTy 5, 3859 Dest("CPSR",CTy"PSR",qVar"s")), 3860 LW(22,5)), 3861 Rupd 3862 ("CP15", 3863 TP[qVar"s", 3864 Rupd 3865 ("SCR", 3866 TP[Dest 3867 ("CP15",CTy"CP15",qVar"s"), 3868 Rupd 3869 ("NS", 3870 TP[Dest 3871 ("SCR",CTy"SCR", 3872 Dest 3873 ("CP15", 3874 CTy"CP15", 3875 qVar"s")),LF])])]), 3876 qVar"s"), 3877 Let(qVar"s", 3878 Apply 3879 (Call 3880 ("write'R",ATy(qTy,qTy), 3881 TP[Var("v",F32),LW(14,4)]), 3882 Apply 3883 (Call 3884 ("write'SPSR",ATy(qTy,qTy), 3885 Var("v0",CTy"PSR")), 3886 Rupd 3887 ("CPSR", 3888 TP[qVar"s", 3889 Rupd 3890 ("M", 3891 TP[Dest 3892 ("CPSR",CTy"PSR", 3893 qVar"s"),LW(27,5)])]))), 3894 Let(qVar"s", 3895 Rupd 3896 ("CPSR", 3897 TP[qVar"s", 3898 Rupd 3899 ("I", 3900 TP[Dest 3901 ("CPSR",CTy"PSR", 3902 qVar"s"),LT])]), 3903 Let(qVar"s", 3904 Rupd 3905 ("CPSR", 3906 TP[qVar"s", 3907 Rupd 3908 ("IT", 3909 TP[Dest 3910 ("CPSR",CTy"PSR", 3911 qVar"s"),LW(0,8)])]), 3912 Let(qVar"s", 3913 Rupd 3914 ("CPSR", 3915 TP[qVar"s", 3916 Rupd 3917 ("J", 3918 TP[Dest 3919 ("CPSR", 3920 CTy"PSR", 3921 qVar"s"),LF])]), 3922 Let(qVar"s", 3923 Rupd 3924 ("CPSR", 3925 TP[qVar"s", 3926 Rupd 3927 ("T", 3928 TP[Dest 3929 ("CPSR", 3930 CTy"PSR", 3931 qVar"s"), 3932 Dest 3933 ("TE",bTy, 3934 Dest 3935 ("SCTLR", 3936 CTy"SCTLR", 3937 Dest 3938 ("CP15", 3939 CTy"CP15", 3940 qVar"s")))])]), 3941 Let(TP[Var("v",F32), 3942 qVar"s"], 3943 Let(qVar"s0", 3944 Rupd 3945 ("CPSR", 3946 TP[qVar"s", 3947 Rupd 3948 ("E", 3949 TP[Dest 3950 ("CPSR", 3951 CTy"PSR", 3952 qVar"s"), 3953 Dest 3954 ("EE", 3955 bTy, 3956 Dest 3957 ("SCTLR", 3958 CTy"SCTLR", 3959 Dest 3960 ("CP15", 3961 CTy"CP15", 3962 qVar"s")))])]), 3963 TP[Apply 3964 (Call 3965 ("ExcVectorBase", 3966 ATy(qTy, 3967 F32), 3968 LU), 3969 qVar"s0"), 3970 qVar"s0"]), 3971 Apply 3972 (Call 3973 ("BranchTo", 3974 ATy(qTy,qTy), 3975 Bop(Add, 3976 Var("v", 3977 F32), 3978 Var("vect_offset", 3979 F32))), 3980 qVar"s"))))))))))))))) 3981; 3982val TakeSVCException_def = Def 3983 ("TakeSVCException",AVar uTy, 3984 Close 3985 (qVar"state", 3986 Let(qVar"s",Apply(Call("ITAdvance",ATy(qTy,qTy),LU),qVar"state"), 3987 Let(TP[Var("v",F32),qVar"s"], 3988 ITE(Dest("T",bTy,Dest("CPSR",CTy"PSR",qVar"s")), 3989 Let(TP[Var("v",F32),qVar"s"], 3990 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"s"), 3991 TP[Bop(Sub,Var("v",F32),LW(2,32)),qVar"s"]), 3992 Let(TP[Var("v",F32),qVar"s"], 3993 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"s"), 3994 TP[Bop(Sub,Var("v",F32),LW(4,32)),qVar"s"])), 3995 Let(Var("v0",CTy"PSR"),Dest("CPSR",CTy"PSR",qVar"s"), 3996 Let(Var("vect_offset",F32),LW(8,32), 3997 ITB([(Bop(And, 3998 Apply 3999 (Call("HaveVirtExt",ATy(qTy,bTy),LU), 4000 qVar"s"), 4001 Bop(And, 4002 Apply 4003 (Call 4004 ("HaveSecurityExt",ATy(qTy,bTy), 4005 LU),qVar"s"), 4006 Bop(And, 4007 Dest 4008 ("NS",bTy, 4009 Dest 4010 ("SCR",CTy"SCR", 4011 Dest 4012 ("CP15",CTy"CP15",qVar"s"))), 4013 EQ(Dest 4014 ("M",FTy 5, 4015 Dest 4016 ("CPSR",CTy"PSR",qVar"s")), 4017 LW(26,5))))), 4018 Apply 4019 (Call 4020 ("EnterHypMode",ATy(qTy,qTy), 4021 TP[Var("v0",CTy"PSR"),Var("v",F32), 4022 Var("vect_offset",F32)]),qVar"s")), 4023 (Bop(And, 4024 Apply 4025 (Call("HaveVirtExt",ATy(qTy,bTy),LU), 4026 qVar"s"), 4027 Bop(And, 4028 Apply 4029 (Call 4030 ("HaveSecurityExt",ATy(qTy,bTy), 4031 LU),qVar"s"), 4032 Bop(And, 4033 Mop(Not, 4034 Apply 4035 (Call 4036 ("IsSecure",ATy(qTy,bTy), 4037 LU),qVar"s")), 4038 Bop(And, 4039 Dest 4040 ("TGE",bTy, 4041 Dest 4042 ("HCR",CTy"HCR", 4043 Dest 4044 ("CP15",CTy"CP15", 4045 qVar"s"))), 4046 EQ(Dest 4047 ("M",FTy 5, 4048 Dest 4049 ("CPSR",CTy"PSR", 4050 qVar"s")),LW(16,5)))))), 4051 Apply 4052 (Call 4053 ("EnterHypMode",ATy(qTy,qTy), 4054 TP[Var("v0",CTy"PSR"),Var("v",F32), 4055 LW(20,32)]),qVar"s"))], 4056 Let(qVar"s", 4057 ITE(EQ(Dest 4058 ("M",FTy 5, 4059 Dest("CPSR",CTy"PSR",qVar"s")), 4060 LW(22,5)), 4061 Rupd 4062 ("CP15", 4063 TP[qVar"s", 4064 Rupd 4065 ("SCR", 4066 TP[Dest 4067 ("CP15",CTy"CP15",qVar"s"), 4068 Rupd 4069 ("NS", 4070 TP[Dest 4071 ("SCR",CTy"SCR", 4072 Dest 4073 ("CP15", 4074 CTy"CP15", 4075 qVar"s")),LF])])]), 4076 qVar"s"), 4077 Let(qVar"s", 4078 Apply 4079 (Call 4080 ("write'R",ATy(qTy,qTy), 4081 TP[Var("v",F32),LW(14,4)]), 4082 Apply 4083 (Call 4084 ("write'SPSR",ATy(qTy,qTy), 4085 Var("v0",CTy"PSR")), 4086 Rupd 4087 ("CPSR", 4088 TP[qVar"s", 4089 Rupd 4090 ("M", 4091 TP[Dest 4092 ("CPSR",CTy"PSR", 4093 qVar"s"),LW(19,5)])]))), 4094 Let(qVar"s", 4095 Rupd 4096 ("CPSR", 4097 TP[qVar"s", 4098 Rupd 4099 ("I", 4100 TP[Dest 4101 ("CPSR",CTy"PSR", 4102 qVar"s"),LT])]), 4103 Let(qVar"s", 4104 Rupd 4105 ("CPSR", 4106 TP[qVar"s", 4107 Rupd 4108 ("IT", 4109 TP[Dest 4110 ("CPSR",CTy"PSR", 4111 qVar"s"),LW(0,8)])]), 4112 Let(qVar"s", 4113 Rupd 4114 ("CPSR", 4115 TP[qVar"s", 4116 Rupd 4117 ("J", 4118 TP[Dest 4119 ("CPSR", 4120 CTy"PSR", 4121 qVar"s"),LF])]), 4122 Let(qVar"s", 4123 Rupd 4124 ("CPSR", 4125 TP[qVar"s", 4126 Rupd 4127 ("T", 4128 TP[Dest 4129 ("CPSR", 4130 CTy"PSR", 4131 qVar"s"), 4132 Dest 4133 ("TE",bTy, 4134 Dest 4135 ("SCTLR", 4136 CTy"SCTLR", 4137 Dest 4138 ("CP15", 4139 CTy"CP15", 4140 qVar"s")))])]), 4141 Let(TP[Var("v",F32), 4142 qVar"s"], 4143 Let(qVar"s0", 4144 Rupd 4145 ("CPSR", 4146 TP[qVar"s", 4147 Rupd 4148 ("E", 4149 TP[Dest 4150 ("CPSR", 4151 CTy"PSR", 4152 qVar"s"), 4153 Dest 4154 ("EE", 4155 bTy, 4156 Dest 4157 ("SCTLR", 4158 CTy"SCTLR", 4159 Dest 4160 ("CP15", 4161 CTy"CP15", 4162 qVar"s")))])]), 4163 TP[Apply 4164 (Call 4165 ("ExcVectorBase", 4166 ATy(qTy, 4167 F32), 4168 LU), 4169 qVar"s0"), 4170 qVar"s0"]), 4171 Apply 4172 (Call 4173 ("BranchTo", 4174 ATy(qTy,qTy), 4175 Bop(Add, 4176 Var("v", 4177 F32), 4178 Var("vect_offset", 4179 F32))), 4180 qVar"s"))))))))))))))) 4181; 4182val TakeSMCException_def = Def 4183 ("TakeSMCException",AVar uTy, 4184 Close 4185 (qVar"state", 4186 Let(qVar"s",Apply(Call("ITAdvance",ATy(qTy,qTy),LU),qVar"state"), 4187 Let(TP[Var("v",F32),qVar"s"], 4188 ITE(Dest("T",bTy,Dest("CPSR",CTy"PSR",qVar"s")), 4189 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"s"), 4190 Let(TP[Var("v",F32),qVar"s"], 4191 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"s"), 4192 TP[Bop(Sub,Var("v",F32),LW(4,32)),qVar"s"])), 4193 Let(qVar"s0", 4194 ITE(EQ(Dest("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"s")), 4195 LW(22,5)), 4196 Rupd 4197 ("CP15", 4198 TP[qVar"s", 4199 Rupd 4200 ("SCR", 4201 TP[Dest("CP15",CTy"CP15",qVar"s"), 4202 Rupd 4203 ("NS", 4204 TP[Dest 4205 ("SCR",CTy"SCR", 4206 Dest("CP15",CTy"CP15",qVar"s")), 4207 LF])])]),qVar"s"), 4208 Apply 4209 (Call 4210 ("EnterMonitorMode",ATy(qTy,qTy), 4211 TP[Dest("CPSR",CTy"PSR",qVar"s"),Var("v",F32), 4212 LW(8,32)]), 4213 Rupd 4214 ("CPSR", 4215 TP[qVar"s0", 4216 Rupd 4217 ("M", 4218 TP[Dest("CPSR",CTy"PSR",qVar"s0"),LW(22,5)])]))))))) 4219; 4220val TakeHVCException_def = Def 4221 ("TakeHVCException",AVar uTy, 4222 Close 4223 (qVar"state", 4224 Let(qVar"s",Apply(Call("ITAdvance",ATy(qTy,qTy),LU),qVar"state"), 4225 Let(TP[Var("v",F32),qVar"s"], 4226 ITE(Dest("T",bTy,Dest("CPSR",CTy"PSR",qVar"s")), 4227 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"s"), 4228 Let(TP[Var("v",F32),qVar"s"], 4229 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"s"), 4230 TP[Bop(Sub,Var("v",F32),LW(4,32)),qVar"s"])), 4231 Let(Var("v0",CTy"PSR"),Dest("CPSR",CTy"PSR",qVar"s"), 4232 ITE(EQ(Dest("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"s")), 4233 LW(26,5)), 4234 Apply 4235 (Call 4236 ("EnterHypMode",ATy(qTy,qTy), 4237 TP[Var("v0",CTy"PSR"),Var("v",F32),LW(8,32)]), 4238 qVar"s"), 4239 Apply 4240 (Call 4241 ("EnterHypMode",ATy(qTy,qTy), 4242 TP[Var("v0",CTy"PSR"),Var("v",F32),LW(20,32)]), 4243 qVar"s"))))))) 4244; 4245val TakeDataAbortException_def = Def 4246 ("TakeDataAbortException",AVar uTy, 4247 Close 4248 (qVar"state", 4249 Let(TP[Var("v",F32),qVar"s"], 4250 ITE(Dest("T",bTy,Dest("CPSR",CTy"PSR",qVar"state")), 4251 Let(TP[Var("v",F32),qVar"s"], 4252 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 4253 TP[Bop(Add,Var("v",F32),LW(4,32)),qVar"s"]), 4254 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state")), 4255 Let(Var("v0",CTy"PSR"),Dest("CPSR",CTy"PSR",qVar"s"), 4256 Let(Var("vect_offset",F32),LW(16,32), 4257 ITB([(Bop(And, 4258 Apply 4259 (Call("HaveSecurityExt",ATy(qTy,bTy),LU), 4260 qVar"s"), 4261 Bop(And, 4262 Dest 4263 ("EA",bTy, 4264 Dest 4265 ("SCR",CTy"SCR", 4266 Dest("CP15",CTy"CP15",qVar"s"))), 4267 Call("IsExternalAbort",bTy,LU))), 4268 Apply 4269 (Call 4270 ("EnterMonitorMode",ATy(qTy,qTy), 4271 TP[Var("v0",CTy"PSR"),Var("v",F32), 4272 Var("vect_offset",F32)]), 4273 ITE(EQ(Dest 4274 ("M",FTy 5, 4275 Dest("CPSR",CTy"PSR",qVar"s")), 4276 LW(22,5)), 4277 Rupd 4278 ("CP15", 4279 TP[qVar"s", 4280 Rupd 4281 ("SCR", 4282 TP[Dest("CP15",CTy"CP15",qVar"s"), 4283 Rupd 4284 ("NS", 4285 TP[Dest 4286 ("SCR",CTy"SCR", 4287 Dest 4288 ("CP15",CTy"CP15", 4289 qVar"s")),LF])])]), 4290 qVar"s"))), 4291 (Bop(And, 4292 Apply 4293 (Call("HaveVirtExt",ATy(qTy,bTy),LU),qVar"s"), 4294 Bop(And, 4295 Apply 4296 (Call("HaveSecurityExt",ATy(qTy,bTy),LU), 4297 qVar"s"), 4298 Bop(And, 4299 Dest 4300 ("NS",bTy, 4301 Dest 4302 ("SCR",CTy"SCR", 4303 Dest("CP15",CTy"CP15",qVar"s"))), 4304 EQ(Dest 4305 ("M",FTy 5, 4306 Dest("CPSR",CTy"PSR",qVar"s")), 4307 LW(26,5))))), 4308 Apply 4309 (Call 4310 ("EnterHypMode",ATy(qTy,qTy), 4311 TP[Var("v0",CTy"PSR"), 4312 Bop(Sub,Var("v",F32),LW(8,32)), 4313 Var("vect_offset",F32)]),qVar"s"))], 4314 Let(qVar"s", 4315 ITE(Bop(And, 4316 Apply 4317 (Call 4318 ("HaveSecurityExt",ATy(qTy,bTy),LU), 4319 qVar"s"), 4320 EQ(Dest 4321 ("M",FTy 5, 4322 Dest("CPSR",CTy"PSR",qVar"s")), 4323 LW(22,5))), 4324 Rupd 4325 ("CP15", 4326 TP[qVar"s", 4327 Rupd 4328 ("SCR", 4329 TP[Dest("CP15",CTy"CP15",qVar"s"), 4330 Rupd 4331 ("NS", 4332 TP[Dest 4333 ("SCR",CTy"SCR", 4334 Dest 4335 ("CP15",CTy"CP15", 4336 qVar"s")),LF])])]), 4337 qVar"s"), 4338 Let(qVar"s", 4339 Apply 4340 (Call 4341 ("write'R",ATy(qTy,qTy), 4342 TP[Var("v",F32),LW(14,4)]), 4343 Apply 4344 (Call 4345 ("write'SPSR",ATy(qTy,qTy), 4346 Var("v0",CTy"PSR")), 4347 Rupd 4348 ("CPSR", 4349 TP[qVar"s", 4350 Rupd 4351 ("M", 4352 TP[Dest 4353 ("CPSR",CTy"PSR",qVar"s"), 4354 LW(23,5)])]))), 4355 Let(TP[bVar"v",qVar"s"], 4356 Let(qVar"s0", 4357 Rupd 4358 ("CPSR", 4359 TP[qVar"s", 4360 Rupd 4361 ("I", 4362 TP[Dest 4363 ("CPSR",CTy"PSR", 4364 qVar"s"),LT])]), 4365 TP[Apply 4366 (Call 4367 ("HaveSecurityExt", 4368 ATy(qTy,bTy),LU),qVar"s0"), 4369 qVar"s0"]), 4370 Let(qVar"s", 4371 ITE(Bop(Or,Mop(Not,bVar"v"), 4372 Bop(Or, 4373 Apply 4374 (Call 4375 ("HaveVirtExt", 4376 ATy(qTy,bTy),LU), 4377 qVar"s"), 4378 Bop(Or, 4379 Mop(Not, 4380 Dest 4381 ("NS",bTy, 4382 Dest 4383 ("SCR", 4384 CTy"SCR", 4385 Dest 4386 ("CP15", 4387 CTy"CP15", 4388 qVar"s")))), 4389 Dest 4390 ("AW",bTy, 4391 Dest 4392 ("SCR", 4393 CTy"SCR", 4394 Dest 4395 ("CP15", 4396 CTy"CP15", 4397 qVar"s")))))), 4398 Rupd 4399 ("CPSR", 4400 TP[qVar"s", 4401 Rupd 4402 ("A", 4403 TP[Dest 4404 ("CPSR",CTy"PSR", 4405 qVar"s"),LT])]), 4406 qVar"s"), 4407 Let(qVar"s", 4408 Rupd 4409 ("CPSR", 4410 TP[qVar"s", 4411 Rupd 4412 ("IT", 4413 TP[Dest 4414 ("CPSR",CTy"PSR", 4415 qVar"s"),LW(0,8)])]), 4416 Let(qVar"s", 4417 Rupd 4418 ("CPSR", 4419 TP[qVar"s", 4420 Rupd 4421 ("J", 4422 TP[Dest 4423 ("CPSR", 4424 CTy"PSR", 4425 qVar"s"),LF])]), 4426 Let(qVar"s", 4427 Rupd 4428 ("CPSR", 4429 TP[qVar"s", 4430 Rupd 4431 ("T", 4432 TP[Dest 4433 ("CPSR", 4434 CTy"PSR", 4435 qVar"s"), 4436 Dest 4437 ("TE",bTy, 4438 Dest 4439 ("SCTLR", 4440 CTy"SCTLR", 4441 Dest 4442 ("CP15", 4443 CTy"CP15", 4444 qVar"s")))])]), 4445 Let(TP[Var("v",F32), 4446 qVar"s"], 4447 Let(qVar"s0", 4448 Rupd 4449 ("CPSR", 4450 TP[qVar"s", 4451 Rupd 4452 ("E", 4453 TP[Dest 4454 ("CPSR", 4455 CTy"PSR", 4456 qVar"s"), 4457 Dest 4458 ("EE", 4459 bTy, 4460 Dest 4461 ("SCTLR", 4462 CTy"SCTLR", 4463 Dest 4464 ("CP15", 4465 CTy"CP15", 4466 qVar"s")))])]), 4467 TP[Apply 4468 (Call 4469 ("ExcVectorBase", 4470 ATy(qTy, 4471 F32), 4472 LU), 4473 qVar"s0"), 4474 qVar"s0"]), 4475 Apply 4476 (Call 4477 ("BranchTo", 4478 ATy(qTy,qTy), 4479 Bop(Add, 4480 Var("v", 4481 F32), 4482 Var("vect_offset", 4483 F32))), 4484 qVar"s"))))))))))))))) 4485; 4486val TakePrefetchAbortException_def = Def 4487 ("TakePrefetchAbortException",AVar uTy, 4488 Close 4489 (qVar"state", 4490 Let(TP[Var("v",F32),qVar"s"], 4491 ITE(Dest("T",bTy,Dest("CPSR",CTy"PSR",qVar"state")), 4492 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 4493 Let(TP[Var("v",F32),qVar"s"], 4494 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 4495 TP[Bop(Sub,Var("v",F32),LW(4,32)),qVar"s"])), 4496 Let(Var("v0",CTy"PSR"),Dest("CPSR",CTy"PSR",qVar"s"), 4497 Let(Var("vect_offset",F32),LW(12,32), 4498 ITB([(Bop(And, 4499 Apply 4500 (Call("HaveSecurityExt",ATy(qTy,bTy),LU), 4501 qVar"s"), 4502 Bop(And, 4503 Dest 4504 ("EA",bTy, 4505 Dest 4506 ("SCR",CTy"SCR", 4507 Dest("CP15",CTy"CP15",qVar"s"))), 4508 Call("IsExternalAbort",bTy,LU))), 4509 Apply 4510 (Call 4511 ("EnterMonitorMode",ATy(qTy,qTy), 4512 TP[Var("v0",CTy"PSR"),Var("v",F32), 4513 Var("vect_offset",F32)]), 4514 ITE(EQ(Dest 4515 ("M",FTy 5, 4516 Dest("CPSR",CTy"PSR",qVar"s")), 4517 LW(22,5)), 4518 Rupd 4519 ("CP15", 4520 TP[qVar"s", 4521 Rupd 4522 ("SCR", 4523 TP[Dest("CP15",CTy"CP15",qVar"s"), 4524 Rupd 4525 ("NS", 4526 TP[Dest 4527 ("SCR",CTy"SCR", 4528 Dest 4529 ("CP15",CTy"CP15", 4530 qVar"s")),LF])])]), 4531 qVar"s"))), 4532 (Bop(And, 4533 Apply 4534 (Call("HaveVirtExt",ATy(qTy,bTy),LU),qVar"s"), 4535 Bop(And, 4536 Apply 4537 (Call("HaveSecurityExt",ATy(qTy,bTy),LU), 4538 qVar"s"), 4539 Bop(And, 4540 Dest 4541 ("NS",bTy, 4542 Dest 4543 ("SCR",CTy"SCR", 4544 Dest("CP15",CTy"CP15",qVar"s"))), 4545 EQ(Dest 4546 ("M",FTy 5, 4547 Dest("CPSR",CTy"PSR",qVar"s")), 4548 LW(26,5))))), 4549 Apply 4550 (Call 4551 ("EnterHypMode",ATy(qTy,qTy), 4552 TP[Var("v0",CTy"PSR"), 4553 Bop(Sub,Var("v",F32),LW(4,32)), 4554 Var("vect_offset",F32)]),qVar"s"))], 4555 Let(qVar"s", 4556 ITE(Bop(And, 4557 Apply 4558 (Call 4559 ("HaveSecurityExt",ATy(qTy,bTy),LU), 4560 qVar"s"), 4561 EQ(Dest 4562 ("M",FTy 5, 4563 Dest("CPSR",CTy"PSR",qVar"s")), 4564 LW(22,5))), 4565 Rupd 4566 ("CP15", 4567 TP[qVar"s", 4568 Rupd 4569 ("SCR", 4570 TP[Dest("CP15",CTy"CP15",qVar"s"), 4571 Rupd 4572 ("NS", 4573 TP[Dest 4574 ("SCR",CTy"SCR", 4575 Dest 4576 ("CP15",CTy"CP15", 4577 qVar"s")),LF])])]), 4578 qVar"s"), 4579 Let(qVar"s", 4580 Apply 4581 (Call 4582 ("write'R",ATy(qTy,qTy), 4583 TP[Var("v",F32),LW(14,4)]), 4584 Apply 4585 (Call 4586 ("write'SPSR",ATy(qTy,qTy), 4587 Var("v0",CTy"PSR")), 4588 Rupd 4589 ("CPSR", 4590 TP[qVar"s", 4591 Rupd 4592 ("M", 4593 TP[Dest 4594 ("CPSR",CTy"PSR",qVar"s"), 4595 LW(23,5)])]))), 4596 Let(TP[bVar"v",qVar"s"], 4597 Let(qVar"s0", 4598 Rupd 4599 ("CPSR", 4600 TP[qVar"s", 4601 Rupd 4602 ("I", 4603 TP[Dest 4604 ("CPSR",CTy"PSR", 4605 qVar"s"),LT])]), 4606 TP[Apply 4607 (Call 4608 ("HaveSecurityExt", 4609 ATy(qTy,bTy),LU),qVar"s0"), 4610 qVar"s0"]), 4611 Let(qVar"s", 4612 ITE(Bop(Or,Mop(Not,bVar"v"), 4613 Bop(Or, 4614 Apply 4615 (Call 4616 ("HaveVirtExt", 4617 ATy(qTy,bTy),LU), 4618 qVar"s"), 4619 Bop(Or, 4620 Mop(Not, 4621 Dest 4622 ("NS",bTy, 4623 Dest 4624 ("SCR", 4625 CTy"SCR", 4626 Dest 4627 ("CP15", 4628 CTy"CP15", 4629 qVar"s")))), 4630 Dest 4631 ("AW",bTy, 4632 Dest 4633 ("SCR", 4634 CTy"SCR", 4635 Dest 4636 ("CP15", 4637 CTy"CP15", 4638 qVar"s")))))), 4639 Rupd 4640 ("CPSR", 4641 TP[qVar"s", 4642 Rupd 4643 ("A", 4644 TP[Dest 4645 ("CPSR",CTy"PSR", 4646 qVar"s"),LT])]), 4647 qVar"s"), 4648 Let(qVar"s", 4649 Rupd 4650 ("CPSR", 4651 TP[qVar"s", 4652 Rupd 4653 ("IT", 4654 TP[Dest 4655 ("CPSR",CTy"PSR", 4656 qVar"s"),LW(0,8)])]), 4657 Let(qVar"s", 4658 Rupd 4659 ("CPSR", 4660 TP[qVar"s", 4661 Rupd 4662 ("J", 4663 TP[Dest 4664 ("CPSR", 4665 CTy"PSR", 4666 qVar"s"),LF])]), 4667 Let(qVar"s", 4668 Rupd 4669 ("CPSR", 4670 TP[qVar"s", 4671 Rupd 4672 ("T", 4673 TP[Dest 4674 ("CPSR", 4675 CTy"PSR", 4676 qVar"s"), 4677 Dest 4678 ("TE",bTy, 4679 Dest 4680 ("SCTLR", 4681 CTy"SCTLR", 4682 Dest 4683 ("CP15", 4684 CTy"CP15", 4685 qVar"s")))])]), 4686 Let(TP[Var("v",F32), 4687 qVar"s"], 4688 Let(qVar"s0", 4689 Rupd 4690 ("CPSR", 4691 TP[qVar"s", 4692 Rupd 4693 ("E", 4694 TP[Dest 4695 ("CPSR", 4696 CTy"PSR", 4697 qVar"s"), 4698 Dest 4699 ("EE", 4700 bTy, 4701 Dest 4702 ("SCTLR", 4703 CTy"SCTLR", 4704 Dest 4705 ("CP15", 4706 CTy"CP15", 4707 qVar"s")))])]), 4708 TP[Apply 4709 (Call 4710 ("ExcVectorBase", 4711 ATy(qTy, 4712 F32), 4713 LU), 4714 qVar"s0"), 4715 qVar"s0"]), 4716 Apply 4717 (Call 4718 ("BranchTo", 4719 ATy(qTy,qTy), 4720 Bop(Add, 4721 Var("v", 4722 F32), 4723 Var("vect_offset", 4724 F32))), 4725 qVar"s"))))))))))))))) 4726; 4727val TakePhysicalIRQException_def = Def 4728 ("TakePhysicalIRQException",AVar uTy, 4729 Close 4730 (qVar"state", 4731 Let(TP[Var("v",F32),qVar"s"], 4732 ITE(Dest("T",bTy,Dest("CPSR",CTy"PSR",qVar"state")), 4733 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 4734 Let(TP[Var("v",F32),qVar"s"], 4735 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 4736 TP[Bop(Sub,Var("v",F32),LW(4,32)),qVar"s"])), 4737 Let(Var("v0",CTy"PSR"),Dest("CPSR",CTy"PSR",qVar"s"), 4738 Let(Var("vect_offset",F32),LW(24,32), 4739 ITB([(Bop(And, 4740 Apply 4741 (Call("HaveSecurityExt",ATy(qTy,bTy),LU), 4742 qVar"s"), 4743 Dest 4744 ("IRQ",bTy, 4745 Dest 4746 ("SCR",CTy"SCR", 4747 Dest("CP15",CTy"CP15",qVar"s")))), 4748 Apply 4749 (Call 4750 ("EnterMonitorMode",ATy(qTy,qTy), 4751 TP[Var("v0",CTy"PSR"),Var("v",F32), 4752 Var("vect_offset",F32)]), 4753 ITE(EQ(Dest 4754 ("M",FTy 5, 4755 Dest("CPSR",CTy"PSR",qVar"s")), 4756 LW(22,5)), 4757 Rupd 4758 ("CP15", 4759 TP[qVar"s", 4760 Rupd 4761 ("SCR", 4762 TP[Dest("CP15",CTy"CP15",qVar"s"), 4763 Rupd 4764 ("NS", 4765 TP[Dest 4766 ("SCR",CTy"SCR", 4767 Dest 4768 ("CP15",CTy"CP15", 4769 qVar"s")),LF])])]), 4770 qVar"s"))), 4771 (Bop(Or, 4772 Bop(And, 4773 Apply 4774 (Call("HaveVirtExt",ATy(qTy,bTy),LU), 4775 qVar"s"), 4776 Bop(And, 4777 Apply 4778 (Call 4779 ("HaveSecurityExt",ATy(qTy,bTy), 4780 LU),qVar"s"), 4781 Bop(And, 4782 Mop(Not, 4783 Dest 4784 ("IRQ",bTy, 4785 Dest 4786 ("SCR",CTy"SCR", 4787 Dest 4788 ("CP15",CTy"CP15", 4789 qVar"s")))), 4790 Bop(And, 4791 Dest 4792 ("IMO",bTy, 4793 Dest 4794 ("HCR",CTy"HCR", 4795 Dest 4796 ("CP15",CTy"CP15", 4797 qVar"s"))), 4798 Mop(Not, 4799 Apply 4800 (Call 4801 ("IsSecure", 4802 ATy(qTy,bTy),LU), 4803 qVar"s")))))), 4804 EQ(Dest 4805 ("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"s")), 4806 LW(26,5))), 4807 Apply 4808 (Call 4809 ("EnterHypMode",ATy(qTy,qTy), 4810 TP[Var("v0",CTy"PSR"), 4811 Bop(Sub,Var("v",F32),LW(4,32)), 4812 Var("vect_offset",F32)]), 4813 Rupd 4814 ("CP15", 4815 TP[qVar"s", 4816 Rupd 4817 ("HSR", 4818 TP[Dest("CP15",CTy"CP15",qVar"s"), 4819 LX(CTy"HSR")])])))], 4820 Let(qVar"s", 4821 ITE(EQ(Dest 4822 ("M",FTy 5, 4823 Dest("CPSR",CTy"PSR",qVar"s")), 4824 LW(22,5)), 4825 Rupd 4826 ("CP15", 4827 TP[qVar"s", 4828 Rupd 4829 ("SCR", 4830 TP[Dest("CP15",CTy"CP15",qVar"s"), 4831 Rupd 4832 ("NS", 4833 TP[Dest 4834 ("SCR",CTy"SCR", 4835 Dest 4836 ("CP15",CTy"CP15", 4837 qVar"s")),LF])])]), 4838 qVar"s"), 4839 Let(qVar"s", 4840 Apply 4841 (Call 4842 ("write'R",ATy(qTy,qTy), 4843 TP[Var("v",F32),LW(14,4)]), 4844 Apply 4845 (Call 4846 ("write'SPSR",ATy(qTy,qTy), 4847 Var("v0",CTy"PSR")), 4848 Rupd 4849 ("CPSR", 4850 TP[qVar"s", 4851 Rupd 4852 ("M", 4853 TP[Dest 4854 ("CPSR",CTy"PSR",qVar"s"), 4855 LW(18,5)])]))), 4856 Let(TP[bVar"v",qVar"s"], 4857 Let(qVar"s0", 4858 Rupd 4859 ("CPSR", 4860 TP[qVar"s", 4861 Rupd 4862 ("I", 4863 TP[Dest 4864 ("CPSR",CTy"PSR", 4865 qVar"s"),LT])]), 4866 TP[Apply 4867 (Call 4868 ("HaveSecurityExt", 4869 ATy(qTy,bTy),LU),qVar"s0"), 4870 qVar"s0"]), 4871 Let(qVar"s", 4872 ITE(Bop(Or,Mop(Not,bVar"v"), 4873 Bop(Or, 4874 Apply 4875 (Call 4876 ("HaveVirtExt", 4877 ATy(qTy,bTy),LU), 4878 qVar"s"), 4879 Bop(Or, 4880 Mop(Not, 4881 Dest 4882 ("NS",bTy, 4883 Dest 4884 ("SCR", 4885 CTy"SCR", 4886 Dest 4887 ("CP15", 4888 CTy"CP15", 4889 qVar"s")))), 4890 Dest 4891 ("AW",bTy, 4892 Dest 4893 ("SCR", 4894 CTy"SCR", 4895 Dest 4896 ("CP15", 4897 CTy"CP15", 4898 qVar"s")))))), 4899 Rupd 4900 ("CPSR", 4901 TP[qVar"s", 4902 Rupd 4903 ("A", 4904 TP[Dest 4905 ("CPSR",CTy"PSR", 4906 qVar"s"),LT])]), 4907 qVar"s"), 4908 Let(qVar"s", 4909 Rupd 4910 ("CPSR", 4911 TP[qVar"s", 4912 Rupd 4913 ("IT", 4914 TP[Dest 4915 ("CPSR",CTy"PSR", 4916 qVar"s"),LW(0,8)])]), 4917 Let(qVar"s", 4918 Rupd 4919 ("CPSR", 4920 TP[qVar"s", 4921 Rupd 4922 ("J", 4923 TP[Dest 4924 ("CPSR", 4925 CTy"PSR", 4926 qVar"s"),LF])]), 4927 Let(qVar"s", 4928 Rupd 4929 ("CPSR", 4930 TP[qVar"s", 4931 Rupd 4932 ("T", 4933 TP[Dest 4934 ("CPSR", 4935 CTy"PSR", 4936 qVar"s"), 4937 Dest 4938 ("TE",bTy, 4939 Dest 4940 ("SCTLR", 4941 CTy"SCTLR", 4942 Dest 4943 ("CP15", 4944 CTy"CP15", 4945 qVar"s")))])]), 4946 Let(qVar"s", 4947 Rupd 4948 ("CPSR", 4949 TP[qVar"s", 4950 Rupd 4951 ("E", 4952 TP[Dest 4953 ("CPSR", 4954 CTy"PSR", 4955 qVar"s"), 4956 Dest 4957 ("EE", 4958 bTy, 4959 Dest 4960 ("SCTLR", 4961 CTy"SCTLR", 4962 Dest 4963 ("CP15", 4964 CTy"CP15", 4965 qVar"s")))])]), 4966 ITE(Dest 4967 ("VE",bTy, 4968 Dest 4969 ("SCTLR", 4970 CTy"SCTLR", 4971 Dest 4972 ("CP15", 4973 CTy"CP15", 4974 qVar"s"))), 4975 Mop(Snd, 4976 Apply 4977 (Call 4978 ("raise'exception", 4979 ATy(qTy, 4980 PTy(uTy, 4981 qTy)), 4982 Call 4983 ("IMPLEMENTATION_DEFINED", 4984 CTy"exception", 4985 LS 4986 "branch to an IRQ vector")), 4987 qVar"s")), 4988 Apply 4989 (Call 4990 ("BranchTo", 4991 ATy(qTy, 4992 qTy), 4993 Bop(Add, 4994 Apply 4995 (Call 4996 ("ExcVectorBase", 4997 ATy(qTy, 4998 F32), 4999 LU), 5000 qVar"s"), 5001 Var("vect_offset", 5002 F32))), 5003 qVar"s")))))))))))))))) 5004; 5005val TakeVirtualIRQException_def = Def 5006 ("TakeVirtualIRQException",AVar uTy, 5007 Close 5008 (qVar"state", 5009 Let(TP[Var("v",F32),qVar"s"], 5010 ITE(Dest("T",bTy,Dest("CPSR",CTy"PSR",qVar"state")), 5011 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 5012 Let(TP[Var("v",F32),qVar"s"], 5013 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 5014 TP[Bop(Sub,Var("v",F32),LW(4,32)),qVar"s"])), 5015 Let(qVar"s", 5016 Apply 5017 (Call("write'R",ATy(qTy,qTy),TP[Var("v",F32),LW(14,4)]), 5018 Apply 5019 (Call 5020 ("write'SPSR",ATy(qTy,qTy), 5021 Dest("CPSR",CTy"PSR",qVar"s")), 5022 Rupd 5023 ("CPSR", 5024 TP[qVar"s", 5025 Rupd 5026 ("M", 5027 TP[Dest("CPSR",CTy"PSR",qVar"s"),LW(18,5)])]))), 5028 Let(qVar"s", 5029 Rupd 5030 ("CPSR", 5031 TP[qVar"s", 5032 Rupd("I",TP[Dest("CPSR",CTy"PSR",qVar"s"),LT])]), 5033 Let(qVar"s", 5034 Rupd 5035 ("CPSR", 5036 TP[qVar"s", 5037 Rupd("A",TP[Dest("CPSR",CTy"PSR",qVar"s"),LT])]), 5038 Let(qVar"s", 5039 Rupd 5040 ("CPSR", 5041 TP[qVar"s", 5042 Rupd 5043 ("IT", 5044 TP[Dest("CPSR",CTy"PSR",qVar"s"), 5045 LW(0,8)])]), 5046 Let(qVar"s", 5047 Rupd 5048 ("CPSR", 5049 TP[qVar"s", 5050 Rupd 5051 ("J", 5052 TP[Dest("CPSR",CTy"PSR",qVar"s"),LF])]), 5053 Let(qVar"s", 5054 Rupd 5055 ("CPSR", 5056 TP[qVar"s", 5057 Rupd 5058 ("T", 5059 TP[Dest 5060 ("CPSR",CTy"PSR",qVar"s"), 5061 Dest 5062 ("TE",bTy, 5063 Dest 5064 ("SCTLR",CTy"SCTLR", 5065 Dest 5066 ("CP15",CTy"CP15", 5067 qVar"s")))])]), 5068 Let(qVar"s", 5069 Rupd 5070 ("CPSR", 5071 TP[qVar"s", 5072 Rupd 5073 ("E", 5074 TP[Dest 5075 ("CPSR",CTy"PSR", 5076 qVar"s"), 5077 Dest 5078 ("EE",bTy, 5079 Dest 5080 ("SCTLR", 5081 CTy"SCTLR", 5082 Dest 5083 ("CP15", 5084 CTy"CP15", 5085 qVar"s")))])]), 5086 ITE(Dest 5087 ("VE",bTy, 5088 Dest 5089 ("SCTLR",CTy"SCTLR", 5090 Dest 5091 ("CP15",CTy"CP15", 5092 qVar"s"))), 5093 Mop(Snd, 5094 Apply 5095 (Call 5096 ("raise'exception", 5097 ATy(qTy,PTy(uTy,qTy)), 5098 Call 5099 ("IMPLEMENTATION_DEFINED", 5100 CTy"exception", 5101 LS 5102 "branch to an IRQ vector")), 5103 qVar"s")), 5104 Apply 5105 (Call 5106 ("BranchTo",ATy(qTy,qTy), 5107 Bop(Add, 5108 Apply 5109 (Call 5110 ("ExcVectorBase", 5111 ATy(qTy,F32),LU), 5112 qVar"s"),LW(24,32))), 5113 qVar"s")))))))))))) 5114; 5115val TakePhysicalFIQException_def = Def 5116 ("TakePhysicalFIQException",AVar uTy, 5117 Close 5118 (qVar"state", 5119 Let(TP[Var("v",F32),qVar"s"], 5120 ITE(Dest("T",bTy,Dest("CPSR",CTy"PSR",qVar"state")), 5121 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 5122 Let(TP[Var("v",F32),qVar"s"], 5123 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 5124 TP[Bop(Sub,Var("v",F32),LW(4,32)),qVar"s"])), 5125 Let(Var("v0",CTy"PSR"),Dest("CPSR",CTy"PSR",qVar"s"), 5126 Let(Var("vect_offset",F32),LW(28,32), 5127 ITB([(Bop(And, 5128 Apply 5129 (Call("HaveSecurityExt",ATy(qTy,bTy),LU), 5130 qVar"s"), 5131 Dest 5132 ("FIQ",bTy, 5133 Dest 5134 ("SCR",CTy"SCR", 5135 Dest("CP15",CTy"CP15",qVar"s")))), 5136 Apply 5137 (Call 5138 ("EnterMonitorMode",ATy(qTy,qTy), 5139 TP[Var("v0",CTy"PSR"),Var("v",F32), 5140 Var("vect_offset",F32)]), 5141 ITE(EQ(Dest 5142 ("M",FTy 5, 5143 Dest("CPSR",CTy"PSR",qVar"s")), 5144 LW(22,5)), 5145 Rupd 5146 ("CP15", 5147 TP[qVar"s", 5148 Rupd 5149 ("SCR", 5150 TP[Dest("CP15",CTy"CP15",qVar"s"), 5151 Rupd 5152 ("NS", 5153 TP[Dest 5154 ("SCR",CTy"SCR", 5155 Dest 5156 ("CP15",CTy"CP15", 5157 qVar"s")),LF])])]), 5158 qVar"s"))), 5159 (Bop(Or, 5160 Bop(And, 5161 Apply 5162 (Call("HaveVirtExt",ATy(qTy,bTy),LU), 5163 qVar"s"), 5164 Bop(And, 5165 Apply 5166 (Call 5167 ("HaveSecurityExt",ATy(qTy,bTy), 5168 LU),qVar"s"), 5169 Bop(And, 5170 Mop(Not, 5171 Dest 5172 ("FIQ",bTy, 5173 Dest 5174 ("SCR",CTy"SCR", 5175 Dest 5176 ("CP15",CTy"CP15", 5177 qVar"s")))), 5178 Bop(And, 5179 Dest 5180 ("FMO",bTy, 5181 Dest 5182 ("HCR",CTy"HCR", 5183 Dest 5184 ("CP15",CTy"CP15", 5185 qVar"s"))), 5186 Mop(Not, 5187 Apply 5188 (Call 5189 ("IsSecure", 5190 ATy(qTy,bTy),LU), 5191 qVar"s")))))), 5192 EQ(Dest 5193 ("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"s")), 5194 LW(26,5))), 5195 Apply 5196 (Call 5197 ("EnterHypMode",ATy(qTy,qTy), 5198 TP[Var("v0",CTy"PSR"), 5199 Bop(Sub,Var("v",F32),LW(4,32)), 5200 Var("vect_offset",F32)]), 5201 Rupd 5202 ("CP15", 5203 TP[qVar"s", 5204 Rupd 5205 ("HSR", 5206 TP[Dest("CP15",CTy"CP15",qVar"s"), 5207 LX(CTy"HSR")])])))], 5208 Let(qVar"s", 5209 ITE(EQ(Dest 5210 ("M",FTy 5, 5211 Dest("CPSR",CTy"PSR",qVar"s")), 5212 LW(22,5)), 5213 Rupd 5214 ("CP15", 5215 TP[qVar"s", 5216 Rupd 5217 ("SCR", 5218 TP[Dest("CP15",CTy"CP15",qVar"s"), 5219 Rupd 5220 ("NS", 5221 TP[Dest 5222 ("SCR",CTy"SCR", 5223 Dest 5224 ("CP15",CTy"CP15", 5225 qVar"s")),LF])])]), 5226 qVar"s"), 5227 Let(qVar"s", 5228 Apply 5229 (Call 5230 ("write'R",ATy(qTy,qTy), 5231 TP[Var("v",F32),LW(14,4)]), 5232 Apply 5233 (Call 5234 ("write'SPSR",ATy(qTy,qTy), 5235 Var("v0",CTy"PSR")), 5236 Rupd 5237 ("CPSR", 5238 TP[qVar"s", 5239 Rupd 5240 ("M", 5241 TP[Dest 5242 ("CPSR",CTy"PSR",qVar"s"), 5243 LW(17,5)])]))), 5244 Let(TP[bVar"v",qVar"s"], 5245 Let(qVar"s0", 5246 Rupd 5247 ("CPSR", 5248 TP[qVar"s", 5249 Rupd 5250 ("I", 5251 TP[Dest 5252 ("CPSR",CTy"PSR", 5253 qVar"s"),LT])]), 5254 TP[Apply 5255 (Call 5256 ("HaveSecurityExt", 5257 ATy(qTy,bTy),LU),qVar"s0"), 5258 qVar"s0"]), 5259 Let(TP[bVar"v",qVar"s"], 5260 Let(qVar"s0", 5261 ITE(Bop(Or,Mop(Not,bVar"v"), 5262 Bop(Or, 5263 Apply 5264 (Call 5265 ("HaveVirtExt", 5266 ATy(qTy,bTy), 5267 LU),qVar"s"), 5268 Bop(Or, 5269 Mop(Not, 5270 Dest 5271 ("NS",bTy, 5272 Dest 5273 ("SCR", 5274 CTy"SCR", 5275 Dest 5276 ("CP15", 5277 CTy"CP15", 5278 qVar"s")))), 5279 Dest 5280 ("FW",bTy, 5281 Dest 5282 ("SCR", 5283 CTy"SCR", 5284 Dest 5285 ("CP15", 5286 CTy"CP15", 5287 qVar"s")))))), 5288 Rupd 5289 ("CPSR", 5290 TP[qVar"s", 5291 Rupd 5292 ("F", 5293 TP[Dest 5294 ("CPSR", 5295 CTy"PSR", 5296 qVar"s"),LT])]), 5297 qVar"s"), 5298 TP[Apply 5299 (Call 5300 ("HaveSecurityExt", 5301 ATy(qTy,bTy),LU), 5302 qVar"s0"),qVar"s0"]), 5303 Let(qVar"s", 5304 ITE(Bop(Or,Mop(Not,bVar"v"), 5305 Bop(Or, 5306 Apply 5307 (Call 5308 ("HaveVirtExt", 5309 ATy(qTy,bTy), 5310 LU),qVar"s"), 5311 Bop(Or, 5312 Mop(Not, 5313 Dest 5314 ("NS",bTy, 5315 Dest 5316 ("SCR", 5317 CTy"SCR", 5318 Dest 5319 ("CP15", 5320 CTy"CP15", 5321 qVar"s")))), 5322 Dest 5323 ("AW",bTy, 5324 Dest 5325 ("SCR", 5326 CTy"SCR", 5327 Dest 5328 ("CP15", 5329 CTy"CP15", 5330 qVar"s")))))), 5331 Rupd 5332 ("CPSR", 5333 TP[qVar"s", 5334 Rupd 5335 ("A", 5336 TP[Dest 5337 ("CPSR", 5338 CTy"PSR", 5339 qVar"s"),LT])]), 5340 qVar"s"), 5341 Let(qVar"s", 5342 Rupd 5343 ("CPSR", 5344 TP[qVar"s", 5345 Rupd 5346 ("IT", 5347 TP[Dest 5348 ("CPSR", 5349 CTy"PSR", 5350 qVar"s"), 5351 LW(0,8)])]), 5352 Let(qVar"s", 5353 Rupd 5354 ("CPSR", 5355 TP[qVar"s", 5356 Rupd 5357 ("J", 5358 TP[Dest 5359 ("CPSR", 5360 CTy"PSR", 5361 qVar"s"), 5362 LF])]), 5363 Let(qVar"s", 5364 Rupd 5365 ("CPSR", 5366 TP[qVar"s", 5367 Rupd 5368 ("T", 5369 TP[Dest 5370 ("CPSR", 5371 CTy"PSR", 5372 qVar"s"), 5373 Dest 5374 ("TE", 5375 bTy, 5376 Dest 5377 ("SCTLR", 5378 CTy"SCTLR", 5379 Dest 5380 ("CP15", 5381 CTy"CP15", 5382 qVar"s")))])]), 5383 Let(qVar"s", 5384 Rupd 5385 ("CPSR", 5386 TP[qVar"s", 5387 Rupd 5388 ("E", 5389 TP[Dest 5390 ("CPSR", 5391 CTy"PSR", 5392 qVar"s"), 5393 Dest 5394 ("EE", 5395 bTy, 5396 Dest 5397 ("SCTLR", 5398 CTy"SCTLR", 5399 Dest 5400 ("CP15", 5401 CTy"CP15", 5402 qVar"s")))])]), 5403 ITE(Dest 5404 ("VE",bTy, 5405 Dest 5406 ("SCTLR", 5407 CTy"SCTLR", 5408 Dest 5409 ("CP15", 5410 CTy"CP15", 5411 qVar"s"))), 5412 Mop(Snd, 5413 Apply 5414 (Call 5415 ("raise'exception", 5416 ATy(qTy, 5417 PTy(uTy, 5418 qTy)), 5419 Call 5420 ("IMPLEMENTATION_DEFINED", 5421 CTy"exception", 5422 LS 5423 "branch to an FIQ vector")), 5424 qVar"s")), 5425 Apply 5426 (Call 5427 ("BranchTo", 5428 ATy(qTy, 5429 qTy), 5430 Bop(Add, 5431 Apply 5432 (Call 5433 ("ExcVectorBase", 5434 ATy(qTy, 5435 F32), 5436 LU), 5437 qVar"s"), 5438 Var("vect_offset", 5439 F32))), 5440 qVar"s"))))))))))))))))) 5441; 5442val TakeVirtualFIQException_def = Def 5443 ("TakeVirtualFIQException",AVar uTy, 5444 Close 5445 (qVar"state", 5446 Let(TP[Var("v",F32),qVar"s"], 5447 ITE(Dest("T",bTy,Dest("CPSR",CTy"PSR",qVar"state")), 5448 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 5449 Let(TP[Var("v",F32),qVar"s"], 5450 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 5451 TP[Bop(Sub,Var("v",F32),LW(4,32)),qVar"s"])), 5452 Let(qVar"s", 5453 Apply 5454 (Call("write'R",ATy(qTy,qTy),TP[Var("v",F32),LW(14,4)]), 5455 Apply 5456 (Call 5457 ("write'SPSR",ATy(qTy,qTy), 5458 Dest("CPSR",CTy"PSR",qVar"s")), 5459 Rupd 5460 ("CPSR", 5461 TP[qVar"s", 5462 Rupd 5463 ("M", 5464 TP[Dest("CPSR",CTy"PSR",qVar"s"),LW(17,5)])]))), 5465 Let(qVar"s", 5466 Rupd 5467 ("CPSR", 5468 TP[qVar"s", 5469 Rupd("I",TP[Dest("CPSR",CTy"PSR",qVar"s"),LT])]), 5470 Let(qVar"s", 5471 Rupd 5472 ("CPSR", 5473 TP[qVar"s", 5474 Rupd("F",TP[Dest("CPSR",CTy"PSR",qVar"s"),LT])]), 5475 Let(qVar"s", 5476 Rupd 5477 ("CPSR", 5478 TP[qVar"s", 5479 Rupd 5480 ("A", 5481 TP[Dest("CPSR",CTy"PSR",qVar"s"),LT])]), 5482 Let(qVar"s", 5483 Rupd 5484 ("CPSR", 5485 TP[qVar"s", 5486 Rupd 5487 ("IT", 5488 TP[Dest("CPSR",CTy"PSR",qVar"s"), 5489 LW(0,8)])]), 5490 Let(qVar"s", 5491 Rupd 5492 ("CPSR", 5493 TP[qVar"s", 5494 Rupd 5495 ("J", 5496 TP[Dest 5497 ("CPSR",CTy"PSR",qVar"s"), 5498 LF])]), 5499 Let(qVar"s", 5500 Rupd 5501 ("CPSR", 5502 TP[qVar"s", 5503 Rupd 5504 ("T", 5505 TP[Dest 5506 ("CPSR",CTy"PSR", 5507 qVar"s"), 5508 Dest 5509 ("TE",bTy, 5510 Dest 5511 ("SCTLR", 5512 CTy"SCTLR", 5513 Dest 5514 ("CP15", 5515 CTy"CP15", 5516 qVar"s")))])]), 5517 Let(qVar"s", 5518 Rupd 5519 ("CPSR", 5520 TP[qVar"s", 5521 Rupd 5522 ("E", 5523 TP[Dest 5524 ("CPSR",CTy"PSR", 5525 qVar"s"), 5526 Dest 5527 ("EE",bTy, 5528 Dest 5529 ("SCTLR", 5530 CTy"SCTLR", 5531 Dest 5532 ("CP15", 5533 CTy"CP15", 5534 qVar"s")))])]), 5535 ITE(Dest 5536 ("VE",bTy, 5537 Dest 5538 ("SCTLR",CTy"SCTLR", 5539 Dest 5540 ("CP15",CTy"CP15", 5541 qVar"s"))), 5542 Mop(Snd, 5543 Apply 5544 (Call 5545 ("raise'exception", 5546 ATy(qTy, 5547 PTy(uTy,qTy)), 5548 Call 5549 ("IMPLEMENTATION_DEFINED", 5550 CTy"exception", 5551 LS 5552 "branch to an FIQ vector")), 5553 qVar"s")), 5554 Apply 5555 (Call 5556 ("BranchTo", 5557 ATy(qTy,qTy), 5558 Bop(Add, 5559 Apply 5560 (Call 5561 ("ExcVectorBase", 5562 ATy(qTy,F32), 5563 LU),qVar"s"), 5564 LW(28,32))), 5565 qVar"s"))))))))))))) 5566; 5567val TakeHypTrapException_def = Def 5568 ("TakeHypTrapException",AVar uTy, 5569 Close 5570 (qVar"state", 5571 Let(TP[Var("v",F32),qVar"s"], 5572 ITE(Dest("T",bTy,Dest("CPSR",CTy"PSR",qVar"state")), 5573 Let(TP[Var("v",F32),qVar"s"], 5574 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 5575 TP[Bop(Sub,Var("v",F32),LW(4,32)),qVar"s"]), 5576 Let(TP[Var("v",F32),qVar"s"], 5577 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 5578 TP[Bop(Sub,Var("v",F32),LW(8,32)),qVar"s"])), 5579 Apply 5580 (Call 5581 ("EnterHypMode",ATy(qTy,qTy), 5582 TP[Dest("CPSR",CTy"PSR",qVar"s"),Var("v",F32),LW(20,32)]), 5583 qVar"s")))) 5584; 5585val WriteHSR_def = Def 5586 ("WriteHSR",TP[Var("ec",FTy 6),Var("HSRString",FTy 25)], 5587 Close 5588 (qVar"state", 5589 Let(Var("s0",F32),BFI(LN 31,LN 26,Var("ec",FTy 6),LW(0,32)), 5590 Let(Var("s0",F32), 5591 ITE(Bop(Or, 5592 Mop(Not, 5593 EQ(EX(Var("ec",FTy 6),LN 5,LN 3,FTy 3),LW(4,3))), 5594 Bop(And,Bop(Bit,Var("ec",FTy 6),LN 2), 5595 Bop(Bit,Var("HSRString",FTy 25),LN 24))), 5596 BFI(LN 25,LN 25, 5597 Mop(Cast F1, 5598 EQ(Apply 5599 (Call("ThisInstrLength",ATy(qTy,nTy),LU), 5600 qVar"state"),LN 32)),Var("s0",F32)), 5601 Var("s0",F32)), 5602 Let(Var("s",PTy(F32,qTy)), 5603 ITE(Bop(And, 5604 EQ(EX(Var("ec",FTy 6),LN 5,LN 4,FTy 2),LW(0,2)), 5605 Mop(Not, 5606 EQ(EX(Var("ec",FTy 6),LN 3,LN 0,F4),LW(0,4)))), 5607 ITE(EQ(Apply 5608 (Call 5609 ("CurrentInstrSet", 5610 ATy(qTy,CTy"InstrSet"),LU),qVar"state"), 5611 LC("InstrSet_ARM",CTy"InstrSet")), 5612 TP[BFI(LN 23,LN 20, 5613 Apply 5614 (Call("CurrentCond",ATy(qTy,F4),LU), 5615 qVar"state"), 5616 BFI(LN 24,LN 24,Mop(Cast F1,LT), 5617 Var("s0",F32))),qVar"state"], 5618 Let(Var("s0",F32), 5619 BFI(LN 24,LN 24,Mop(Cast F1,LX bTy), 5620 Var("s0",F32)), 5621 TP[BFI(LN 19,LN 0, 5622 EX(Var("HSRString",FTy 25),LN 19, 5623 LN 0,FTy 20), 5624 ITE(Bop(Bit,Var("s0",F32),LN 24), 5625 ITE(Apply 5626 (Call 5627 ("ConditionPassed", 5628 ATy(qTy,bTy),LU), 5629 qVar"state"), 5630 BFI(LN 23,LN 20, 5631 ITE(LX bTy, 5632 Apply 5633 (Call 5634 ("CurrentCond", 5635 ATy(qTy,F4),LU), 5636 qVar"state"), 5637 LW(14,4)), 5638 Var("s0",F32)), 5639 BFI(LN 23,LN 20, 5640 Apply 5641 (Call 5642 ("CurrentCond", 5643 ATy(qTy,F4),LU), 5644 qVar"state"), 5645 Var("s0",F32))), 5646 Var("s0",F32))),qVar"state"])), 5647 TP[BFI(LN 24,LN 0,Var("HSRString",FTy 25), 5648 Var("s0",F32)),qVar"state"]), 5649 Rupd 5650 ("CP15", 5651 TP[Mop(Snd,Var("s",PTy(F32,qTy))), 5652 Rupd 5653 ("HSR", 5654 TP[Dest 5655 ("CP15",CTy"CP15", 5656 Mop(Snd,Var("s",PTy(F32,qTy)))), 5657 Call 5658 ("write'reg'HSR",CTy"HSR", 5659 TP[Dest 5660 ("HSR",CTy"HSR", 5661 Dest 5662 ("CP15",CTy"CP15", 5663 Mop(Snd,Var("s",PTy(F32,qTy))))), 5664 Mop(Fst,Var("s",PTy(F32,qTy)))])])])))))) 5665; 5666val CallSupervisor_def = Def 5667 ("CallSupervisor",Var("immediate",F16), 5668 Close 5669 (qVar"state", 5670 Let(TP[bVar"v",qVar"s"], 5671 Apply 5672 (Call("CurrentModeIsHyp",ATy(qTy,PTy(bTy,qTy)),LU),qVar"state"), 5673 Apply 5674 (Call("TakeSVCException",ATy(qTy,qTy),LU), 5675 Let(TP[bVar"v",qVar"s"], 5676 ITB([(bVar"v",TP[LT,qVar"s"]), 5677 (Apply(Call("HaveVirtExt",ATy(qTy,bTy),LU),qVar"s"), 5678 ITE(Mop(Not, 5679 Apply 5680 (Call("IsSecure",ATy(qTy,bTy),LU),qVar"s")), 5681 Let(TP[bVar"v",qVar"s"], 5682 Apply 5683 (Call 5684 ("CurrentModeIsNotUser", 5685 ATy(qTy,PTy(bTy,qTy)),LU),qVar"s"), 5686 TP[Bop(And,Mop(Not,bVar"v"), 5687 Dest 5688 ("TGE",bTy, 5689 Dest 5690 ("HCR",CTy"HCR", 5691 Dest("CP15",CTy"CP15",qVar"s")))), 5692 qVar"s"]),TP[LF,qVar"s"]))], 5693 TP[LF,qVar"s"]), 5694 ITE(bVar"v", 5695 Apply 5696 (Call 5697 ("WriteHSR",ATy(qTy,qTy), 5698 TP[LW(18,6), 5699 BFI(LN 15,LN 0, 5700 ITE(EQ(Apply 5701 (Call 5702 ("CurrentCond",ATy(qTy,F4), 5703 LU),qVar"s"),LW(14,4)), 5704 Var("immediate",F16),LX F16), 5705 LW(0,25))]),qVar"s"),qVar"s")))))) 5706; 5707val CallHypervisor_def = Def 5708 ("CallHypervisor",Var("immediate",F16), 5709 Close 5710 (qVar"state", 5711 Apply 5712 (Call("TakeHVCException",ATy(qTy,qTy),LU), 5713 Apply 5714 (Call 5715 ("WriteHSR",ATy(qTy,qTy), 5716 TP[LW(18,6),CC[Var("immediate",F16),LW(0,9)]]),qVar"state")))) 5717; 5718val BankedRegisterAccessValid_def = Def 5719 ("BankedRegisterAccessValid",TP[Var("SYSm",FTy 5),Var("mode",FTy 5)], 5720 Close 5721 (qVar"state", 5722 ITB([(EQ(EX(Var("SYSm",FTy 5),LN 4,LN 3,FTy 2),LW(0,2)), 5723 ITB([(EQ(EX(Var("SYSm",FTy 5),LN 2,LN 0,FTy 3),LW(7,3)), 5724 Mop(Snd, 5725 Apply 5726 (Call 5727 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5728 Call 5729 ("UNPREDICTABLE",CTy"exception", 5730 LS"BankedRegisterAccessValid")),qVar"state"))), 5731 (EQ(EX(Var("SYSm",FTy 5),LN 2,LN 0,FTy 3),LW(6,3)), 5732 ITE(Bop(In,Var("mode",FTy 5),SL[LW(26,5),LW(31,5)]), 5733 Mop(Snd, 5734 Apply 5735 (Call 5736 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5737 Call 5738 ("UNPREDICTABLE",CTy"exception", 5739 LS"BankedRegisterAccessValid")), 5740 qVar"state")),qVar"state")), 5741 (EQ(EX(Var("SYSm",FTy 5),LN 2,LN 0,FTy 3),LW(5,3)), 5742 ITE(EQ(Var("mode",FTy 5),LW(31,5)), 5743 Mop(Snd, 5744 Apply 5745 (Call 5746 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5747 Call 5748 ("UNPREDICTABLE",CTy"exception", 5749 LS"BankedRegisterAccessValid")), 5750 qVar"state")),qVar"state")), 5751 (Mop(Not,EQ(Var("mode",FTy 5),LW(17,5))), 5752 Mop(Snd, 5753 Apply 5754 (Call 5755 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5756 Call 5757 ("UNPREDICTABLE",CTy"exception", 5758 LS"BankedRegisterAccessValid")),qVar"state")))], 5759 qVar"state")), 5760 (EQ(EX(Var("SYSm",FTy 5),LN 4,LN 3,FTy 2),LW(1,2)), 5761 ITE(Bop(Or,EQ(EX(Var("SYSm",FTy 5),LN 2,LN 0,FTy 3),LW(7,3)), 5762 Bop(Or,EQ(Var("mode",FTy 5),LW(17,5)), 5763 Bop(And, 5764 Dest 5765 ("RFR",bTy, 5766 Dest 5767 ("NSACR",CTy"NSACR", 5768 Dest("CP15",CTy"CP15",qVar"state"))), 5769 Mop(Not, 5770 Apply 5771 (Call("IsSecure",ATy(qTy,bTy),LU), 5772 qVar"state"))))), 5773 Mop(Snd, 5774 Apply 5775 (Call 5776 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5777 Call 5778 ("UNPREDICTABLE",CTy"exception", 5779 LS"BankedRegisterAccessValid")),qVar"state")), 5780 qVar"state")), 5781 (EQ(EX(Var("SYSm",FTy 5),LN 4,LN 3,FTy 2),LW(3,2)), 5782 ITB([(Mop(Not,Bop(Bit,Var("SYSm",FTy 5),LN 2)), 5783 Mop(Snd, 5784 Apply 5785 (Call 5786 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5787 Call 5788 ("UNPREDICTABLE",CTy"exception", 5789 LS"BankedRegisterAccessValid")),qVar"state"))), 5790 (Mop(Not,Bop(Bit,Var("SYSm",FTy 5),LN 1)), 5791 ITE(Bop(Or, 5792 Mop(Not, 5793 Apply 5794 (Call("IsSecure",ATy(qTy,bTy),LU), 5795 qVar"state")), 5796 EQ(Var("mode",FTy 5),LW(22,5))), 5797 Mop(Snd, 5798 Apply 5799 (Call 5800 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5801 Call 5802 ("UNPREDICTABLE",CTy"exception", 5803 LS"BankedRegisterAccessValid")), 5804 qVar"state")),qVar"state")), 5805 (Mop(Not,EQ(Var("mode",FTy 5),LW(22,5))), 5806 Mop(Snd, 5807 Apply 5808 (Call 5809 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5810 Call 5811 ("UNPREDICTABLE",CTy"exception", 5812 LS"BankedRegisterAccessValid")),qVar"state")))], 5813 qVar"state"))],qVar"state"))) 5814; 5815val SPSRAccessValid_def = Def 5816 ("SPSRAccessValid",TP[Var("SYSm",FTy 5),Var("mode",FTy 5)], 5817 Close 5818 (qVar"state", 5819 CS(Var("SYSm",FTy 5), 5820 [(LW(14,5), 5821 ITE(Bop(Or, 5822 Bop(And, 5823 Mop(Not, 5824 Apply 5825 (Call("IsSecure",ATy(qTy,bTy),LU),qVar"state")), 5826 Dest 5827 ("RFR",bTy, 5828 Dest 5829 ("NSACR",CTy"NSACR", 5830 Dest("CP15",CTy"CP15",qVar"state")))), 5831 EQ(Var("mode",FTy 5),LW(17,5))), 5832 Mop(Snd, 5833 Apply 5834 (Call 5835 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5836 Call 5837 ("UNPREDICTABLE",CTy"exception", 5838 LS"SPSRAccessValid")),qVar"state")), 5839 qVar"state")), 5840 (LW(16,5), 5841 ITE(EQ(Var("mode",FTy 5),LW(18,5)), 5842 Mop(Snd, 5843 Apply 5844 (Call 5845 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5846 Call 5847 ("UNPREDICTABLE",CTy"exception", 5848 LS"SPSRAccessValid")),qVar"state")), 5849 qVar"state")), 5850 (LW(18,5), 5851 ITE(EQ(Var("mode",FTy 5),LW(19,5)), 5852 Mop(Snd, 5853 Apply 5854 (Call 5855 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5856 Call 5857 ("UNPREDICTABLE",CTy"exception", 5858 LS"SPSRAccessValid")),qVar"state")), 5859 qVar"state")), 5860 (LW(20,5), 5861 ITE(EQ(Var("mode",FTy 5),LW(23,5)), 5862 Mop(Snd, 5863 Apply 5864 (Call 5865 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5866 Call 5867 ("UNPREDICTABLE",CTy"exception", 5868 LS"SPSRAccessValid")),qVar"state")), 5869 qVar"state")), 5870 (LW(22,5), 5871 ITE(EQ(Var("mode",FTy 5),LW(27,5)), 5872 Mop(Snd, 5873 Apply 5874 (Call 5875 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5876 Call 5877 ("UNPREDICTABLE",CTy"exception", 5878 LS"SPSRAccessValid")),qVar"state")), 5879 qVar"state")), 5880 (LW(28,5), 5881 ITE(Bop(Or,EQ(Var("mode",FTy 5),LW(22,5)), 5882 Mop(Not, 5883 Apply(Call("IsSecure",ATy(qTy,bTy),LU),qVar"state"))), 5884 Mop(Snd, 5885 Apply 5886 (Call 5887 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5888 Call 5889 ("UNPREDICTABLE",CTy"exception", 5890 LS"SPSRAccessValid")),qVar"state")), 5891 qVar"state")), 5892 (LW(30,5), 5893 ITE(Mop(Not,EQ(Var("mode",FTy 5),LW(22,5))), 5894 Mop(Snd, 5895 Apply 5896 (Call 5897 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5898 Call 5899 ("UNPREDICTABLE",CTy"exception", 5900 LS"SPSRAccessValid")),qVar"state")), 5901 qVar"state")), 5902 (AVar(FTy 5), 5903 Mop(Snd, 5904 Apply 5905 (Call 5906 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 5907 Call 5908 ("UNPREDICTABLE",CTy"exception",LS"SPSRAccessValid")), 5909 qVar"state")))]))) 5910; 5911val rec'FPSCR_def = Def 5912 ("rec'FPSCR",Var("x",F32), 5913 Rec(CTy"FPSCR", 5914 [Bop(Bit,Var("x",F32),LN 26),Bop(Bit,Var("x",F32),LN 29), 5915 Bop(Bit,Var("x",F32),LN 25),Bop(Bit,Var("x",F32),LN 1), 5916 Bop(Bit,Var("x",F32),LN 9),Bop(Bit,Var("x",F32),LN 24), 5917 Bop(Bit,Var("x",F32),LN 7),Bop(Bit,Var("x",F32),LN 15), 5918 Bop(Bit,Var("x",F32),LN 0),Bop(Bit,Var("x",F32),LN 8), 5919 Bop(Bit,Var("x",F32),LN 4),Bop(Bit,Var("x",F32),LN 12), 5920 Bop(Bit,Var("x",F32),LN 31),Bop(Bit,Var("x",F32),LN 2), 5921 Bop(Bit,Var("x",F32),LN 10),Bop(Bit,Var("x",F32),LN 27), 5922 EX(Var("x",F32),LN 23,LN 22,FTy 2),Bop(Bit,Var("x",F32),LN 3), 5923 Bop(Bit,Var("x",F32),LN 11),Bop(Bit,Var("x",F32),LN 28), 5924 Bop(Bit,Var("x",F32),LN 30), 5925 CC[EX(Var("x",F32),LN 6,LN 5,FTy 2), 5926 EX(Var("x",F32),LN 14,LN 13,FTy 2), 5927 EX(Var("x",F32),LN 21,LN 16,FTy 6)]])) 5928; 5929val reg'FPSCR_def = Def 5930 ("reg'FPSCR",Var("x",CTy"FPSCR"), 5931 CS(Var("x",CTy"FPSCR"), 5932 [(Rec(CTy"FPSCR", 5933 [bVar"AHP",bVar"C",bVar"DN",bVar"DZC",bVar"DZE",bVar"FZ", 5934 bVar"IDC",bVar"IDE",bVar"IOC",bVar"IOE",bVar"IXC",bVar"IXE", 5935 bVar"N",bVar"OFC",bVar"OFE",bVar"QC",Var("RMode",FTy 2), 5936 bVar"UFC",bVar"UFE",bVar"V",bVar"Z",Var("fpscr'rst",FTy 10)]), 5937 CC[Mop(Cast F1,bVar"N"),Mop(Cast F1,bVar"Z"),Mop(Cast F1,bVar"C"), 5938 Mop(Cast F1,bVar"V"),Mop(Cast F1,bVar"QC"), 5939 Mop(Cast F1,bVar"AHP"),Mop(Cast F1,bVar"DN"), 5940 Mop(Cast F1,bVar"FZ"),Var("RMode",FTy 2), 5941 EX(Var("fpscr'rst",FTy 10),LN 5,LN 0,FTy 6), 5942 Mop(Cast F1,bVar"IDE"), 5943 EX(Var("fpscr'rst",FTy 10),LN 7,LN 6,FTy 2), 5944 Mop(Cast F1,bVar"IXE"),Mop(Cast F1,bVar"UFE"), 5945 Mop(Cast F1,bVar"OFE"),Mop(Cast F1,bVar"DZE"), 5946 Mop(Cast F1,bVar"IOE"),Mop(Cast F1,bVar"IDC"), 5947 EX(Var("fpscr'rst",FTy 10),LN 9,LN 8,FTy 2), 5948 Mop(Cast F1,bVar"IXC"),Mop(Cast F1,bVar"UFC"), 5949 Mop(Cast F1,bVar"OFC"),Mop(Cast F1,bVar"DZC"), 5950 Mop(Cast F1,bVar"IOC")])])) 5951; 5952val write'rec'FPSCR_def = Def 5953 ("write'rec'FPSCR",TP[AVar F32,Var("x",CTy"FPSCR")], 5954 Call("reg'FPSCR",F32,Var("x",CTy"FPSCR"))) 5955; 5956val write'reg'FPSCR_def = Def 5957 ("write'reg'FPSCR",TP[AVar(CTy"FPSCR"),Var("x",F32)], 5958 Call("rec'FPSCR",CTy"FPSCR",Var("x",F32))) 5959; 5960val RoundingMode_def = Def 5961 ("RoundingMode",qVar"state", 5962 CS(Dest 5963 ("RMode",FTy 2, 5964 Dest("FPSCR",CTy"FPSCR",Dest("FP",CTy"FP",qVar"state"))), 5965 [(LW(0,2),binary_ieeeSyntax.roundTiesToEven_tm), 5966 (LW(1,2),binary_ieeeSyntax.roundTowardPositive_tm), 5967 (LW(2,2),binary_ieeeSyntax.roundTowardNegative_tm), 5968 (LW(3,2),binary_ieeeSyntax.roundTowardZero_tm)])) 5969; 5970val FPAdd32_def = Def 5971 ("FPAdd32",TP[Var("op1",F32),Var("op2",F32)], 5972 Close 5973 (qVar"state", 5974 Mop(FPAdd 32, 5975 TP[Apply(Const("RoundingMode",ATy(qTy,rTy)),qVar"state"), 5976 Var("op1",F32),Var("op2",F32)]))) 5977; 5978val FPSub32_def = Def 5979 ("FPSub32",TP[Var("op1",F32),Var("op2",F32)], 5980 Close 5981 (qVar"state", 5982 Mop(FPSub 32, 5983 TP[Apply(Const("RoundingMode",ATy(qTy,rTy)),qVar"state"), 5984 Var("op1",F32),Var("op2",F32)]))) 5985; 5986val FPMul32_def = Def 5987 ("FPMul32",TP[Var("op1",F32),Var("op2",F32)], 5988 Close 5989 (qVar"state", 5990 Mop(FPMul 32, 5991 TP[Apply(Const("RoundingMode",ATy(qTy,rTy)),qVar"state"), 5992 Var("op1",F32),Var("op2",F32)]))) 5993; 5994val FPAdd64_def = Def 5995 ("FPAdd64",TP[Var("op1",F64),Var("op2",F64)], 5996 Close 5997 (qVar"state", 5998 Mop(FPAdd 64, 5999 TP[Apply(Const("RoundingMode",ATy(qTy,rTy)),qVar"state"), 6000 Var("op1",F64),Var("op2",F64)]))) 6001; 6002val FPSub64_def = Def 6003 ("FPSub64",TP[Var("op1",F64),Var("op2",F64)], 6004 Close 6005 (qVar"state", 6006 Mop(FPSub 64, 6007 TP[Apply(Const("RoundingMode",ATy(qTy,rTy)),qVar"state"), 6008 Var("op1",F64),Var("op2",F64)]))) 6009; 6010val FPMul64_def = Def 6011 ("FPMul64",TP[Var("op1",F64),Var("op2",F64)], 6012 Close 6013 (qVar"state", 6014 Mop(FPMul 64, 6015 TP[Apply(Const("RoundingMode",ATy(qTy,rTy)),qVar"state"), 6016 Var("op1",F64),Var("op2",F64)]))) 6017; 6018val FPToFixed32_def = Def 6019 ("FPToFixed32", 6020 TP[Var("operand",F32),bVar"unsigned",bVar"round_towards_zero"], 6021 Close 6022 (qVar"state", 6023 CS(Mop(FPToInt 32, 6024 TP[ITE(bVar"round_towards_zero", 6025 binary_ieeeSyntax.roundTowardZero_tm, 6026 Apply(Const("RoundingMode",ATy(qTy,rTy)),qVar"state")), 6027 Var("operand",F32)]), 6028 [(Mop(Some,iVar"i"), 6029 Let(TP[Var("v",PTy(F32,bTy)),qVar"s"], 6030 Apply 6031 (Call 6032 ("SatQ",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 6033 TP[iVar"i",LN 32,bVar"unsigned"]),qVar"state"), 6034 Let(TP[Var("result",F32),bVar"overflow"], 6035 Var("v",PTy(F32,bTy)), 6036 ITE(bVar"overflow", 6037 Apply 6038 (Call 6039 ("raise'exception",ATy(qTy,PTy(F32,qTy)), 6040 Call 6041 ("VFP_EXCEPTION",CTy"exception", 6042 LS"FPToFixed32: overflow exception")), 6043 qVar"s"),TP[Var("result",F32),qVar"s"])))), 6044 (LO iTy, 6045 Apply 6046 (Call 6047 ("raise'exception",ATy(qTy,PTy(F32,qTy)), 6048 Call 6049 ("VFP_EXCEPTION",CTy"exception", 6050 LS"FPToFixed32: NaN or infinity")),qVar"state"))]))) 6051; 6052val FPToFixed64_def = Def 6053 ("FPToFixed64", 6054 TP[Var("operand",F64),bVar"unsigned",bVar"round_towards_zero"], 6055 Close 6056 (qVar"state", 6057 CS(Mop(FPToInt 64, 6058 TP[ITE(bVar"round_towards_zero", 6059 binary_ieeeSyntax.roundTowardZero_tm, 6060 Apply(Const("RoundingMode",ATy(qTy,rTy)),qVar"state")), 6061 Var("operand",F64)]), 6062 [(Mop(Some,iVar"i"), 6063 Let(TP[Var("v",PTy(F32,bTy)),qVar"s"], 6064 Apply 6065 (Call 6066 ("SatQ",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 6067 TP[iVar"i",LN 32,bVar"unsigned"]),qVar"state"), 6068 Let(TP[Var("result",F32),bVar"overflow"], 6069 Var("v",PTy(F32,bTy)), 6070 ITE(bVar"overflow", 6071 Apply 6072 (Call 6073 ("raise'exception",ATy(qTy,PTy(F32,qTy)), 6074 Call 6075 ("VFP_EXCEPTION",CTy"exception", 6076 LS"FPToFixed64: overflow exception")), 6077 qVar"s"),TP[Var("result",F32),qVar"s"])))), 6078 (LO iTy, 6079 Apply 6080 (Call 6081 ("raise'exception",ATy(qTy,PTy(F32,qTy)), 6082 Call 6083 ("VFP_EXCEPTION",CTy"exception", 6084 LS"FPToFixed64: NaN or infinity")),qVar"state"))]))) 6085; 6086val FixedToFP32_def = Def 6087 ("FixedToFP32", 6088 TP[Var("operand",F32),bVar"unsigned",bVar"round_to_nearest"], 6089 Close 6090 (qVar"state", 6091 Mop(FPFromInt 32, 6092 TP[ITE(bVar"round_to_nearest", 6093 binary_ieeeSyntax.roundTiesToEven_tm, 6094 Apply(Const("RoundingMode",ATy(qTy,rTy)),qVar"state")), 6095 ITE(bVar"unsigned", 6096 Mop(Cast iTy,Mop(Cast nTy,Var("operand",F32))), 6097 Mop(Cast iTy,Var("operand",F32)))]))) 6098; 6099val FixedToFP64_def = Def 6100 ("FixedToFP64", 6101 TP[Var("operand",F32),bVar"unsigned",bVar"round_to_nearest"], 6102 Close 6103 (qVar"state", 6104 Mop(FPFromInt 64, 6105 TP[ITE(bVar"round_to_nearest", 6106 binary_ieeeSyntax.roundTiesToEven_tm, 6107 Apply(Const("RoundingMode",ATy(qTy,rTy)),qVar"state")), 6108 ITE(bVar"unsigned", 6109 Mop(Cast iTy,Mop(Cast nTy,Var("operand",F32))), 6110 Mop(Cast iTy,Var("operand",F32)))]))) 6111; 6112val D_def = Def 6113 ("D",Var("n",FTy 5), 6114 Close 6115 (qVar"state", 6116 Apply 6117 (Dest("REG",ATy(FTy 5,F64),Dest("FP",CTy"FP",qVar"state")), 6118 Var("n",FTy 5)))) 6119; 6120val write'D_def = Def 6121 ("write'D",TP[Var("value",F64),Var("n",FTy 5)], 6122 Close 6123 (qVar"state", 6124 Rupd 6125 ("FP", 6126 TP[qVar"state", 6127 Rupd 6128 ("REG", 6129 TP[Dest("FP",CTy"FP",qVar"state"), 6130 Fupd 6131 (Dest 6132 ("REG",ATy(FTy 5,F64), 6133 Dest("FP",CTy"FP",qVar"state")),Var("n",FTy 5), 6134 Var("value",F64))])]))) 6135; 6136val S_def = Def 6137 ("S",Var("n",FTy 5), 6138 Close 6139 (qVar"state", 6140 ITE(Bop(Bit,Var("n",FTy 5),LN 0), 6141 EX(Apply 6142 (Call("D",ATy(qTy,F64),Bop(Div,Var("n",FTy 5),LW(2,5))), 6143 qVar"state"),LN 63,LN 32,F32), 6144 EX(Apply 6145 (Call("D",ATy(qTy,F64),Bop(Div,Var("n",FTy 5),LW(2,5))), 6146 qVar"state"),LN 31,LN 0,F32)))) 6147; 6148val write'S_def = Def 6149 ("write'S",TP[Var("value",F32),Var("n",FTy 5)], 6150 Close 6151 (qVar"state", 6152 ITE(Bop(Bit,Var("n",FTy 5),LN 0), 6153 Let(Var("x",FTy 5),Bop(Div,Var("n",FTy 5),LW(2,5)), 6154 Apply 6155 (Call 6156 ("write'D",ATy(qTy,qTy), 6157 TP[BFI(LN 63,LN 32,Var("value",F32), 6158 Apply 6159 (Call("D",ATy(qTy,F64),Var("x",FTy 5)), 6160 qVar"state")),Var("x",FTy 5)]),qVar"state")), 6161 Let(Var("x",FTy 5),Bop(Div,Var("n",FTy 5),LW(2,5)), 6162 Apply 6163 (Call 6164 ("write'D",ATy(qTy,qTy), 6165 TP[BFI(LN 31,LN 0,Var("value",F32), 6166 Apply 6167 (Call("D",ATy(qTy,F64),Var("x",FTy 5)), 6168 qVar"state")),Var("x",FTy 5)]),qVar"state"))))) 6169; 6170val VFPExpandImm_def = Def 6171 ("VFPExpandImm",TP[Var("imm8",F8),bVar"single"], 6172 ITE(bVar"single", 6173 Mop(Cast F64, 6174 CC[EX(Var("imm8",F8),LN 7,LN 7,F1), 6175 Mop(BNot,EX(Var("imm8",F8),LN 6,LN 6,F1)), 6176 REP(EX(Var("imm8",F8),LN 6,LN 6,F1),LN 5,FTy 5), 6177 EX(Var("imm8",F8),LN 5,LN 0,FTy 6),REP(LW(0,1),LN 19,FTy 19)]), 6178 CC[EX(Var("imm8",F8),LN 7,LN 7,F1), 6179 Mop(BNot,EX(Var("imm8",F8),LN 6,LN 6,F1)), 6180 REP(EX(Var("imm8",F8),LN 6,LN 6,F1),LN 8,F8), 6181 EX(Var("imm8",F8),LN 5,LN 0,FTy 6),REP(LW(0,1),LN 48,FTy 48)])) 6182; 6183val FPCompare32_def = Def 6184 ("FPCompare32",TP[Var("op1",F32),Var("op2",F32)], 6185 ITB([(Bop(Or,Mop(FPIsNan 32,Var("op1",F32)), 6186 Mop(FPIsNan 32,Var("op2",F32))),LW(3,4)), 6187 (Mop(FPEq 32,TP[Var("op1",F32),Var("op2",F32)]),LW(6,4)), 6188 (Mop(FPLt 32,TP[Var("op1",F32),Var("op2",F32)]),LW(8,4))],LW(2,4))) 6189; 6190val FPCompare64_def = Def 6191 ("FPCompare64",TP[Var("op1",F64),Var("op2",F64)], 6192 ITB([(Bop(Or,Mop(FPIsNan 64,Var("op1",F64)), 6193 Mop(FPIsNan 64,Var("op2",F64))),LW(3,4)), 6194 (Mop(FPEq 64,TP[Var("op1",F64),Var("op2",F64)]),LW(6,4)), 6195 (Mop(FPLt 64,TP[Var("op1",F64),Var("op2",F64)]),LW(8,4))],LW(2,4))) 6196; 6197val FPZero32_def = Def 6198 ("FPZero32",Var("sign",F1),CC[Var("sign",F1),LW(0,31)]) 6199; 6200val FPZero64_def = Def 6201 ("FPZero64",Var("sign",F1),CC[Var("sign",F1),LW(0,63)]) 6202; 6203val dfn'vmov_imm_def = Def 6204 ("dfn'vmov_imm", 6205 TP[bVar"single_register",Var("d",FTy 5),Var("imm64",F64)], 6206 Close 6207 (qVar"state", 6208 Apply 6209 (Call("IncPC",ATy(qTy,qTy),LU), 6210 ITE(bVar"single_register", 6211 Apply 6212 (Call 6213 ("write'S",ATy(qTy,qTy), 6214 TP[EX(Var("imm64",F64),LN 31,LN 0,F32),Var("d",FTy 5)]), 6215 qVar"state"), 6216 Apply 6217 (Call 6218 ("write'D",ATy(qTy,qTy), 6219 TP[Var("imm64",F64),Var("d",FTy 5)]),qVar"state"))))) 6220; 6221val dfn'vmov_def = Def 6222 ("dfn'vmov",TP[bVar"single_register",Var("d",FTy 5),Var("m",FTy 5)], 6223 Close 6224 (qVar"state", 6225 Apply 6226 (Call("IncPC",ATy(qTy,qTy),LU), 6227 ITE(bVar"single_register", 6228 Apply 6229 (Call 6230 ("write'S",ATy(qTy,qTy), 6231 TP[Apply 6232 (Call("S",ATy(qTy,F32),Var("m",FTy 5)),qVar"state"), 6233 Var("d",FTy 5)]),qVar"state"), 6234 Apply 6235 (Call 6236 ("write'D",ATy(qTy,qTy), 6237 TP[Apply 6238 (Call("D",ATy(qTy,F64),Var("m",FTy 5)),qVar"state"), 6239 Var("d",FTy 5)]),qVar"state"))))) 6240; 6241val dfn'vmov_single_def = Def 6242 ("dfn'vmov_single",TP[bVar"to_arm_register",Var("t",F4),Var("n",FTy 5)], 6243 Close 6244 (qVar"state", 6245 Apply 6246 (Call("IncPC",ATy(qTy,qTy),LU), 6247 ITE(bVar"to_arm_register", 6248 Apply 6249 (Call 6250 ("write'R",ATy(qTy,qTy), 6251 TP[Apply 6252 (Call("S",ATy(qTy,F32),Var("n",FTy 5)),qVar"state"), 6253 Var("t",F4)]),qVar"state"), 6254 Let(TP[Var("v",F32),qVar"s"], 6255 Apply 6256 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("t",F4)), 6257 qVar"state"), 6258 Apply 6259 (Call 6260 ("write'S",ATy(qTy,qTy), 6261 TP[Var("v",F32),Var("n",FTy 5)]),qVar"s")))))) 6262; 6263val dfn'vmov_two_singles_def = Def 6264 ("dfn'vmov_two_singles", 6265 TP[bVar"to_arm_registers",Var("t",F4),Var("t2",F4),Var("m",FTy 5)], 6266 Close 6267 (qVar"state", 6268 Apply 6269 (Call("IncPC",ATy(qTy,qTy),LU), 6270 ITE(bVar"to_arm_registers", 6271 Let(TP[Var("v",F32),qVar"s"], 6272 Let(qVar"s0", 6273 Apply 6274 (Call 6275 ("write'R",ATy(qTy,qTy), 6276 TP[Apply 6277 (Call("S",ATy(qTy,F32),Var("m",FTy 5)), 6278 qVar"state"),Var("t",F4)]),qVar"state"), 6279 TP[Apply 6280 (Call 6281 ("S",ATy(qTy,F32), 6282 Bop(Add,Var("m",FTy 5),LW(1,5))),qVar"s0"), 6283 qVar"s0"]), 6284 Apply 6285 (Call 6286 ("write'R",ATy(qTy,qTy), 6287 TP[Var("v",F32),Var("t2",F4)]),qVar"s")), 6288 Let(TP[Var("v",F32),qVar"s"], 6289 Apply 6290 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("t",F4)), 6291 qVar"state"), 6292 Let(TP[Var("v",F32),qVar"s"], 6293 Apply 6294 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("t2",F4)), 6295 Apply 6296 (Call 6297 ("write'S",ATy(qTy,qTy), 6298 TP[Var("v",F32),Var("m",FTy 5)]),qVar"s")), 6299 Apply 6300 (Call 6301 ("write'S",ATy(qTy,qTy), 6302 TP[Var("v",F32),Bop(Add,Var("m",FTy 5),LW(1,5))]), 6303 qVar"s"))))))) 6304; 6305val dfn'vmov_double_def = Def 6306 ("dfn'vmov_double", 6307 TP[bVar"to_arm_registers",Var("t",F4),Var("t2",F4),Var("m",FTy 5)], 6308 Close 6309 (qVar"state", 6310 Apply 6311 (Call("IncPC",ATy(qTy,qTy),LU), 6312 ITE(bVar"to_arm_registers", 6313 Let(TP[Var("v",F64),qVar"s"], 6314 Let(qVar"s0", 6315 Apply 6316 (Call 6317 ("write'R",ATy(qTy,qTy), 6318 TP[EX(Apply 6319 (Call("D",ATy(qTy,F64),Var("m",FTy 5)), 6320 qVar"state"),LN 31,LN 0,F32), 6321 Var("t",F4)]),qVar"state"), 6322 TP[Apply 6323 (Call("D",ATy(qTy,F64),Var("m",FTy 5)),qVar"s0"), 6324 qVar"s0"]), 6325 Apply 6326 (Call 6327 ("write'R",ATy(qTy,qTy), 6328 TP[EX(Var("v",F64),LN 63,LN 32,F32),Var("t2",F4)]), 6329 qVar"s")), 6330 Let(TP[Var("v",F64),qVar"s"], 6331 Let(qVar"s0", 6332 Let(TP[Var("v0",F32),qVar"s"], 6333 Apply 6334 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("t",F4)), 6335 qVar"state"), 6336 Apply 6337 (Call 6338 ("write'D",ATy(qTy,qTy), 6339 TP[BFI(LN 31,LN 0,Var("v0",F32), 6340 Apply 6341 (Call 6342 ("D",ATy(qTy,F64), 6343 Var("m",FTy 5)),qVar"state")), 6344 Var("m",FTy 5)]),qVar"s")), 6345 TP[Apply 6346 (Call("D",ATy(qTy,F64),Var("m",FTy 5)),qVar"s0"), 6347 qVar"s0"]), 6348 Let(TP[Var("v0",F32),qVar"s"], 6349 Apply 6350 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("t2",F4)), 6351 qVar"s"), 6352 Apply 6353 (Call 6354 ("write'D",ATy(qTy,qTy), 6355 TP[BFI(LN 63,LN 32,Var("v0",F32),Var("v",F64)), 6356 Var("m",FTy 5)]),qVar"s"))))))) 6357; 6358val dfn'vabs_def = Def 6359 ("dfn'vabs",TP[bVar"dp_operation",Var("d",FTy 5),Var("m",FTy 5)], 6360 Close 6361 (qVar"state", 6362 Apply 6363 (Call("IncPC",ATy(qTy,qTy),LU), 6364 ITE(bVar"dp_operation", 6365 Apply 6366 (Call 6367 ("write'D",ATy(qTy,qTy), 6368 TP[Mop(FPAbs 64, 6369 Apply 6370 (Call("D",ATy(qTy,F64),Var("m",FTy 5)), 6371 qVar"state")),Var("d",FTy 5)]),qVar"state"), 6372 Apply 6373 (Call 6374 ("write'S",ATy(qTy,qTy), 6375 TP[Mop(FPAbs 32, 6376 Apply 6377 (Call("S",ATy(qTy,F32),Var("m",FTy 5)), 6378 qVar"state")),Var("d",FTy 5)]),qVar"state"))))) 6379; 6380val dfn'vneg_def = Def 6381 ("dfn'vneg",TP[bVar"dp_operation",Var("d",FTy 5),Var("m",FTy 5)], 6382 Close 6383 (qVar"state", 6384 Apply 6385 (Call("IncPC",ATy(qTy,qTy),LU), 6386 ITE(bVar"dp_operation", 6387 Apply 6388 (Call 6389 ("write'D",ATy(qTy,qTy), 6390 TP[Mop(FPNeg 64, 6391 Apply 6392 (Call("D",ATy(qTy,F64),Var("m",FTy 5)), 6393 qVar"state")),Var("d",FTy 5)]),qVar"state"), 6394 Apply 6395 (Call 6396 ("write'S",ATy(qTy,qTy), 6397 TP[Mop(FPNeg 32, 6398 Apply 6399 (Call("S",ATy(qTy,F32),Var("m",FTy 5)), 6400 qVar"state")),Var("d",FTy 5)]),qVar"state"))))) 6401; 6402val dfn'vsqrt_def = Def 6403 ("dfn'vsqrt",TP[bVar"dp_operation",Var("d",FTy 5),Var("m",FTy 5)], 6404 Close 6405 (qVar"state", 6406 Apply 6407 (Call("IncPC",ATy(qTy,qTy),LU), 6408 ITE(bVar"dp_operation", 6409 Apply 6410 (Call 6411 ("write'D",ATy(qTy,qTy), 6412 TP[Mop(FPSqrt 64, 6413 TP[Apply 6414 (Const("RoundingMode",ATy(qTy,rTy)), 6415 qVar"state"), 6416 Apply 6417 (Call("D",ATy(qTy,F64),Var("m",FTy 5)), 6418 qVar"state")]),Var("d",FTy 5)]), 6419 qVar"state"), 6420 Apply 6421 (Call 6422 ("write'S",ATy(qTy,qTy), 6423 TP[Mop(FPSqrt 32, 6424 TP[Apply 6425 (Const("RoundingMode",ATy(qTy,rTy)), 6426 qVar"state"), 6427 Apply 6428 (Call("S",ATy(qTy,F32),Var("m",FTy 5)), 6429 qVar"state")]),Var("d",FTy 5)]), 6430 qVar"state"))))) 6431; 6432val dfn'vcvt_float_def = Def 6433 ("dfn'vcvt_float", 6434 TP[bVar"double_to_single",Var("d",FTy 5),Var("m",FTy 5)], 6435 Close 6436 (qVar"state", 6437 Apply 6438 (Call("IncPC",ATy(qTy,qTy),LU), 6439 ITE(bVar"double_to_single", 6440 Apply 6441 (Call 6442 ("write'S",ATy(qTy,qTy), 6443 TP[Mop(FP64To32, 6444 TP[Apply 6445 (Const("RoundingMode",ATy(qTy,rTy)), 6446 qVar"state"), 6447 Apply 6448 (Call("D",ATy(qTy,F64),Var("m",FTy 5)), 6449 qVar"state")]),Var("d",FTy 5)]), 6450 qVar"state"), 6451 Apply 6452 (Call 6453 ("write'D",ATy(qTy,qTy), 6454 TP[Mop(FP32To64, 6455 Apply 6456 (Call("S",ATy(qTy,F32),Var("m",FTy 5)), 6457 qVar"state")),Var("d",FTy 5)]),qVar"state"))))) 6458; 6459val dfn'vcvt_to_integer_def = Def 6460 ("dfn'vcvt_to_integer", 6461 TP[bVar"dp_operation",bVar"unsigned",bVar"round_zero",Var("d",FTy 5), 6462 Var("m",FTy 5)], 6463 Close 6464 (qVar"state", 6465 Apply 6466 (Call("IncPC",ATy(qTy,qTy),LU), 6467 ITE(bVar"dp_operation", 6468 Let(TP[Var("v",PTy(F32,FTy 5)),qVar"s"], 6469 Let(TP[Var("v",F32),qVar"s"], 6470 Apply 6471 (Call 6472 ("FPToFixed64",ATy(qTy,PTy(F32,qTy)), 6473 TP[Apply 6474 (Call("D",ATy(qTy,F64),Var("m",FTy 5)), 6475 qVar"state"),bVar"unsigned", 6476 bVar"round_zero"]),qVar"state"), 6477 TP[TP[Var("v",F32),Var("d",FTy 5)],qVar"s"]), 6478 Apply 6479 (Call("write'S",ATy(qTy,qTy),Var("v",PTy(F32,FTy 5))), 6480 qVar"s")), 6481 Let(TP[Var("v",PTy(F32,FTy 5)),qVar"s"], 6482 Let(TP[Var("v",F32),qVar"s"], 6483 Apply 6484 (Call 6485 ("FPToFixed32",ATy(qTy,PTy(F32,qTy)), 6486 TP[Apply 6487 (Call("S",ATy(qTy,F32),Var("m",FTy 5)), 6488 qVar"state"),bVar"unsigned", 6489 bVar"round_zero"]),qVar"state"), 6490 TP[TP[Var("v",F32),Var("d",FTy 5)],qVar"s"]), 6491 Apply 6492 (Call("write'S",ATy(qTy,qTy),Var("v",PTy(F32,FTy 5))), 6493 qVar"s")))))) 6494; 6495val dfn'vcvt_from_integer_def = Def 6496 ("dfn'vcvt_from_integer", 6497 TP[bVar"dp_operation",bVar"unsigned",Var("d",FTy 5),Var("m",FTy 5)], 6498 Close 6499 (qVar"state", 6500 Apply 6501 (Call("IncPC",ATy(qTy,qTy),LU), 6502 ITE(bVar"dp_operation", 6503 Apply 6504 (Call 6505 ("write'D",ATy(qTy,qTy), 6506 TP[Apply 6507 (Call 6508 ("FixedToFP64",ATy(qTy,F64), 6509 TP[Apply 6510 (Call("S",ATy(qTy,F32),Var("m",FTy 5)), 6511 qVar"state"),bVar"unsigned",LF]), 6512 qVar"state"),Var("d",FTy 5)]),qVar"state"), 6513 Apply 6514 (Call 6515 ("write'S",ATy(qTy,qTy), 6516 TP[Apply 6517 (Call 6518 ("FixedToFP32",ATy(qTy,F32), 6519 TP[Apply 6520 (Call("S",ATy(qTy,F32),Var("m",FTy 5)), 6521 qVar"state"),bVar"unsigned",LF]), 6522 qVar"state"),Var("d",FTy 5)]),qVar"state"))))) 6523; 6524val dfn'vcmp_def = Def 6525 ("dfn'vcmp", 6526 TP[bVar"dp_operation",Var("d",FTy 5),Var("m_with_zero",OTy(FTy 5))], 6527 Close 6528 (qVar"state", 6529 Apply 6530 (Call("IncPC",ATy(qTy,qTy),LU), 6531 ITE(bVar"dp_operation", 6532 Let(TP[Var("v",F64),qVar"s"], 6533 CS(Var("m_with_zero",OTy(FTy 5)), 6534 [(Mop(Some,Var("m",FTy 5)), 6535 TP[Apply 6536 (Call("D",ATy(qTy,F64),Var("m",FTy 5)), 6537 qVar"state"),qVar"state"]), 6538 (LO(FTy 5), 6539 TP[Call("FPZero64",F64,LW(0,1)),qVar"state"])]), 6540 Let(Var("v0",CTy"FPSCR"), 6541 Dest("FPSCR",CTy"FPSCR",Dest("FP",CTy"FP",qVar"s")), 6542 Rupd 6543 ("FP", 6544 TP[qVar"s", 6545 Rupd 6546 ("FPSCR", 6547 TP[Dest("FP",CTy"FP",qVar"s"), 6548 Call 6549 ("write'reg'FPSCR",CTy"FPSCR", 6550 TP[Var("v0",CTy"FPSCR"), 6551 BFI(LN 31,LN 28, 6552 Call 6553 ("FPCompare64",F4, 6554 TP[Apply 6555 (Call 6556 ("D",ATy(qTy,F64), 6557 Var("d",FTy 5)), 6558 qVar"s"),Var("v",F64)]), 6559 Call 6560 ("reg'FPSCR",F32, 6561 Var("v0",CTy"FPSCR")))])])]))), 6562 Let(TP[Var("v",F32),qVar"s"], 6563 CS(Var("m_with_zero",OTy(FTy 5)), 6564 [(Mop(Some,Var("m",FTy 5)), 6565 TP[Apply 6566 (Call("S",ATy(qTy,F32),Var("m",FTy 5)), 6567 qVar"state"),qVar"state"]), 6568 (LO(FTy 5), 6569 TP[Call("FPZero32",F32,LW(0,1)),qVar"state"])]), 6570 Let(Var("v0",CTy"FPSCR"), 6571 Dest("FPSCR",CTy"FPSCR",Dest("FP",CTy"FP",qVar"s")), 6572 Rupd 6573 ("FP", 6574 TP[qVar"s", 6575 Rupd 6576 ("FPSCR", 6577 TP[Dest("FP",CTy"FP",qVar"s"), 6578 Call 6579 ("write'reg'FPSCR",CTy"FPSCR", 6580 TP[Var("v0",CTy"FPSCR"), 6581 BFI(LN 31,LN 28, 6582 Call 6583 ("FPCompare32",F4, 6584 TP[Apply 6585 (Call 6586 ("S",ATy(qTy,F32), 6587 Var("d",FTy 5)), 6588 qVar"s"),Var("v",F32)]), 6589 Call 6590 ("reg'FPSCR",F32, 6591 Var("v0",CTy"FPSCR")))])])]))))))) 6592; 6593val dfn'vmsr_def = Def 6594 ("dfn'vmsr",Var("t",F4), 6595 Close 6596 (qVar"state", 6597 Apply 6598 (Call("IncPC",ATy(qTy,qTy),LU), 6599 Let(TP[Var("v",CTy"FP"),qVar"s"], 6600 Let(TP[Var("v",PTy(CTy"FP",CTy"FPSCR")),qVar"s"], 6601 Let(TP[Var("v0",F32),qVar"s0"], 6602 Apply 6603 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("t",F4)), 6604 qVar"state"), 6605 TP[TP[Dest("FP",CTy"FP",qVar"state"), 6606 Call 6607 ("write'reg'FPSCR",CTy"FPSCR", 6608 TP[Dest 6609 ("FPSCR",CTy"FPSCR", 6610 Dest("FP",CTy"FP",qVar"state")), 6611 Var("v0",F32)])],qVar"s0"]), 6612 TP[Rupd("FPSCR",Var("v",PTy(CTy"FP",CTy"FPSCR"))),qVar"s"]), 6613 Rupd("FP",TP[qVar"s",Var("v",CTy"FP")]))))) 6614; 6615val dfn'vmrs_def = Def 6616 ("dfn'vmrs",Var("t",F4), 6617 Close 6618 (qVar"state", 6619 Apply 6620 (Call("IncPC",ATy(qTy,qTy),LU), 6621 ITE(Mop(Not,EQ(Var("t",F4),LW(15,4))), 6622 Apply 6623 (Call 6624 ("write'R",ATy(qTy,qTy), 6625 TP[Call 6626 ("reg'FPSCR",F32, 6627 Dest 6628 ("FPSCR",CTy"FPSCR", 6629 Dest("FP",CTy"FP",qVar"state"))),Var("t",F4)]), 6630 qVar"state"), 6631 Let(qVar"s", 6632 Rupd 6633 ("CPSR", 6634 TP[qVar"state", 6635 Rupd 6636 ("N", 6637 TP[Dest("CPSR",CTy"PSR",qVar"state"), 6638 Dest 6639 ("N",bTy, 6640 Dest 6641 ("FPSCR",CTy"FPSCR", 6642 Dest("FP",CTy"FP",qVar"state")))])]), 6643 Let(qVar"s", 6644 Rupd 6645 ("CPSR", 6646 TP[qVar"s", 6647 Rupd 6648 ("Z", 6649 TP[Dest("CPSR",CTy"PSR",qVar"s"), 6650 Dest 6651 ("Z",bTy, 6652 Dest 6653 ("FPSCR",CTy"FPSCR", 6654 Dest("FP",CTy"FP",qVar"s")))])]), 6655 Let(qVar"s", 6656 Rupd 6657 ("CPSR", 6658 TP[qVar"s", 6659 Rupd 6660 ("C", 6661 TP[Dest("CPSR",CTy"PSR",qVar"s"), 6662 Dest 6663 ("C",bTy, 6664 Dest 6665 ("FPSCR",CTy"FPSCR", 6666 Dest("FP",CTy"FP",qVar"s")))])]), 6667 Rupd 6668 ("CPSR", 6669 TP[qVar"s", 6670 Rupd 6671 ("V", 6672 TP[Dest("CPSR",CTy"PSR",qVar"s"), 6673 Dest 6674 ("V",bTy, 6675 Dest 6676 ("FPSCR",CTy"FPSCR", 6677 Dest("FP",CTy"FP",qVar"s")))])])))))))) 6678; 6679val dfn'vadd_def = Def 6680 ("dfn'vadd", 6681 TP[bVar"dp_operation",Var("d",FTy 5),Var("n",FTy 5),Var("m",FTy 5)], 6682 Close 6683 (qVar"state", 6684 Apply 6685 (Call("IncPC",ATy(qTy,qTy),LU), 6686 ITE(bVar"dp_operation", 6687 Apply 6688 (Call 6689 ("write'D",ATy(qTy,qTy), 6690 TP[Apply 6691 (Call 6692 ("FPAdd64",ATy(qTy,F64), 6693 TP[Apply 6694 (Call("D",ATy(qTy,F64),Var("n",FTy 5)), 6695 qVar"state"), 6696 Apply 6697 (Call("D",ATy(qTy,F64),Var("m",FTy 5)), 6698 qVar"state")]),qVar"state"), 6699 Var("d",FTy 5)]),qVar"state"), 6700 Apply 6701 (Call 6702 ("write'S",ATy(qTy,qTy), 6703 TP[Apply 6704 (Call 6705 ("FPAdd32",ATy(qTy,F32), 6706 TP[Apply 6707 (Call("S",ATy(qTy,F32),Var("n",FTy 5)), 6708 qVar"state"), 6709 Apply 6710 (Call("S",ATy(qTy,F32),Var("m",FTy 5)), 6711 qVar"state")]),qVar"state"), 6712 Var("d",FTy 5)]),qVar"state"))))) 6713; 6714val dfn'vsub_def = Def 6715 ("dfn'vsub", 6716 TP[bVar"dp_operation",Var("d",FTy 5),Var("n",FTy 5),Var("m",FTy 5)], 6717 Close 6718 (qVar"state", 6719 Apply 6720 (Call("IncPC",ATy(qTy,qTy),LU), 6721 ITE(bVar"dp_operation", 6722 Apply 6723 (Call 6724 ("write'D",ATy(qTy,qTy), 6725 TP[Apply 6726 (Call 6727 ("FPSub64",ATy(qTy,F64), 6728 TP[Apply 6729 (Call("D",ATy(qTy,F64),Var("n",FTy 5)), 6730 qVar"state"), 6731 Apply 6732 (Call("D",ATy(qTy,F64),Var("m",FTy 5)), 6733 qVar"state")]),qVar"state"), 6734 Var("d",FTy 5)]),qVar"state"), 6735 Apply 6736 (Call 6737 ("write'S",ATy(qTy,qTy), 6738 TP[Apply 6739 (Call 6740 ("FPSub32",ATy(qTy,F32), 6741 TP[Apply 6742 (Call("S",ATy(qTy,F32),Var("n",FTy 5)), 6743 qVar"state"), 6744 Apply 6745 (Call("S",ATy(qTy,F32),Var("m",FTy 5)), 6746 qVar"state")]),qVar"state"), 6747 Var("d",FTy 5)]),qVar"state"))))) 6748; 6749val dfn'vmul_def = Def 6750 ("dfn'vmul", 6751 TP[bVar"dp_operation",Var("d",FTy 5),Var("n",FTy 5),Var("m",FTy 5)], 6752 Close 6753 (qVar"state", 6754 Apply 6755 (Call("IncPC",ATy(qTy,qTy),LU), 6756 ITE(bVar"dp_operation", 6757 Apply 6758 (Call 6759 ("write'D",ATy(qTy,qTy), 6760 TP[Apply 6761 (Call 6762 ("FPMul64",ATy(qTy,F64), 6763 TP[Apply 6764 (Call("D",ATy(qTy,F64),Var("n",FTy 5)), 6765 qVar"state"), 6766 Apply 6767 (Call("D",ATy(qTy,F64),Var("m",FTy 5)), 6768 qVar"state")]),qVar"state"), 6769 Var("d",FTy 5)]),qVar"state"), 6770 Apply 6771 (Call 6772 ("write'S",ATy(qTy,qTy), 6773 TP[Apply 6774 (Call 6775 ("FPMul32",ATy(qTy,F32), 6776 TP[Apply 6777 (Call("S",ATy(qTy,F32),Var("n",FTy 5)), 6778 qVar"state"), 6779 Apply 6780 (Call("S",ATy(qTy,F32),Var("m",FTy 5)), 6781 qVar"state")]),qVar"state"), 6782 Var("d",FTy 5)]),qVar"state"))))) 6783; 6784val dfn'vdiv_def = Def 6785 ("dfn'vdiv", 6786 TP[bVar"dp_operation",Var("d",FTy 5),Var("n",FTy 5),Var("m",FTy 5)], 6787 Close 6788 (qVar"state", 6789 Apply 6790 (Call("IncPC",ATy(qTy,qTy),LU), 6791 ITE(bVar"dp_operation", 6792 Apply 6793 (Call 6794 ("write'D",ATy(qTy,qTy), 6795 TP[Mop(FPDiv 64, 6796 TP[Apply 6797 (Const("RoundingMode",ATy(qTy,rTy)), 6798 qVar"state"), 6799 Apply 6800 (Call("D",ATy(qTy,F64),Var("n",FTy 5)), 6801 qVar"state"), 6802 Apply 6803 (Call("D",ATy(qTy,F64),Var("m",FTy 5)), 6804 qVar"state")]),Var("d",FTy 5)]), 6805 qVar"state"), 6806 Apply 6807 (Call 6808 ("write'S",ATy(qTy,qTy), 6809 TP[Mop(FPDiv 32, 6810 TP[Apply 6811 (Const("RoundingMode",ATy(qTy,rTy)), 6812 qVar"state"), 6813 Apply 6814 (Call("S",ATy(qTy,F32),Var("n",FTy 5)), 6815 qVar"state"), 6816 Apply 6817 (Call("S",ATy(qTy,F32),Var("m",FTy 5)), 6818 qVar"state")]),Var("d",FTy 5)]), 6819 qVar"state"))))) 6820; 6821val dfn'vmla_vmls_def = Def 6822 ("dfn'vmla_vmls", 6823 TP[bVar"dp_operation",bVar"add",Var("d",FTy 5),Var("n",FTy 5), 6824 Var("m",FTy 5)], 6825 Close 6826 (qVar"state", 6827 Apply 6828 (Call("IncPC",ATy(qTy,qTy),LU), 6829 ITE(bVar"dp_operation", 6830 Let(Var("v",F64), 6831 Apply 6832 (Call 6833 ("FPMul64",ATy(qTy,F64), 6834 TP[Apply 6835 (Call("D",ATy(qTy,F64),Var("n",FTy 5)), 6836 qVar"state"), 6837 Apply 6838 (Call("D",ATy(qTy,F64),Var("m",FTy 5)), 6839 qVar"state")]),qVar"state"), 6840 Apply 6841 (Call 6842 ("write'D",ATy(qTy,qTy), 6843 TP[Apply 6844 (Call 6845 ("FPAdd64",ATy(qTy,F64), 6846 TP[Apply 6847 (Call 6848 ("D",ATy(qTy,F64),Var("n",FTy 5)), 6849 qVar"state"), 6850 ITE(bVar"add",Var("v",F64), 6851 Mop(FPNeg 64,Var("v",F64)))]), 6852 qVar"state"),Var("d",FTy 5)]),qVar"state")), 6853 Let(Var("v",F32), 6854 Apply 6855 (Call 6856 ("FPMul32",ATy(qTy,F32), 6857 TP[Apply 6858 (Call("S",ATy(qTy,F32),Var("n",FTy 5)), 6859 qVar"state"), 6860 Apply 6861 (Call("S",ATy(qTy,F32),Var("m",FTy 5)), 6862 qVar"state")]),qVar"state"), 6863 Apply 6864 (Call 6865 ("write'S",ATy(qTy,qTy), 6866 TP[Apply 6867 (Call 6868 ("FPAdd32",ATy(qTy,F32), 6869 TP[Apply 6870 (Call 6871 ("S",ATy(qTy,F32),Var("n",FTy 5)), 6872 qVar"state"), 6873 ITE(bVar"add",Var("v",F32), 6874 Mop(FPNeg 32,Var("v",F32)))]), 6875 qVar"state"),Var("d",FTy 5)]),qVar"state")))))) 6876; 6877val dfn'vfma_vfms_def = Def 6878 ("dfn'vfma_vfms", 6879 TP[bVar"dp_operation",bVar"add",Var("d",FTy 5),Var("n",FTy 5), 6880 Var("m",FTy 5)], 6881 Close 6882 (qVar"state", 6883 Apply 6884 (Call("IncPC",ATy(qTy,qTy),LU), 6885 ITE(bVar"dp_operation", 6886 Let(Var("v",F64), 6887 Apply(Call("D",ATy(qTy,F64),Var("n",FTy 5)),qVar"state"), 6888 Apply 6889 (Call 6890 ("write'D",ATy(qTy,qTy), 6891 TP[Mop(FPMulAdd 64, 6892 TP[Apply 6893 (Const("RoundingMode",ATy(qTy,rTy)), 6894 qVar"state"), 6895 ITE(bVar"add",Var("v",F64), 6896 Mop(FPNeg 64,Var("v",F64))), 6897 Apply 6898 (Call("D",ATy(qTy,F64),Var("m",FTy 5)), 6899 qVar"state"), 6900 Apply 6901 (Call("D",ATy(qTy,F64),Var("d",FTy 5)), 6902 qVar"state")]),Var("d",FTy 5)]), 6903 qVar"state")), 6904 Let(Var("v",F32), 6905 Apply(Call("S",ATy(qTy,F32),Var("n",FTy 5)),qVar"state"), 6906 Apply 6907 (Call 6908 ("write'S",ATy(qTy,qTy), 6909 TP[Mop(FPMulAdd 32, 6910 TP[Apply 6911 (Const("RoundingMode",ATy(qTy,rTy)), 6912 qVar"state"), 6913 ITE(bVar"add",Var("v",F32), 6914 Mop(FPNeg 32,Var("v",F32))), 6915 Apply 6916 (Call("S",ATy(qTy,F32),Var("m",FTy 5)), 6917 qVar"state"), 6918 Apply 6919 (Call("S",ATy(qTy,F32),Var("d",FTy 5)), 6920 qVar"state")]),Var("d",FTy 5)]), 6921 qVar"state")))))) 6922; 6923val dfn'vfnma_vfnms_def = Def 6924 ("dfn'vfnma_vfnms", 6925 TP[bVar"dp_operation",bVar"add",Var("d",FTy 5),Var("n",FTy 5), 6926 Var("m",FTy 5)], 6927 Close 6928 (qVar"state", 6929 Apply 6930 (Call("IncPC",ATy(qTy,qTy),LU), 6931 ITE(bVar"dp_operation", 6932 Let(Var("v",F64), 6933 Apply(Call("D",ATy(qTy,F64),Var("n",FTy 5)),qVar"state"), 6934 Apply 6935 (Call 6936 ("write'D",ATy(qTy,qTy), 6937 TP[Mop(FPMulAdd 64, 6938 TP[Apply 6939 (Const("RoundingMode",ATy(qTy,rTy)), 6940 qVar"state"), 6941 ITE(bVar"add",Var("v",F64), 6942 Mop(FPNeg 64,Var("v",F64))), 6943 Apply 6944 (Call("D",ATy(qTy,F64),Var("m",FTy 5)), 6945 qVar"state"), 6946 Mop(FPNeg 64, 6947 Apply 6948 (Call 6949 ("D",ATy(qTy,F64),Var("d",FTy 5)), 6950 qVar"state"))]),Var("d",FTy 5)]), 6951 qVar"state")), 6952 Let(Var("v",F32), 6953 Apply(Call("S",ATy(qTy,F32),Var("n",FTy 5)),qVar"state"), 6954 Apply 6955 (Call 6956 ("write'S",ATy(qTy,qTy), 6957 TP[Mop(FPMulAdd 32, 6958 TP[Apply 6959 (Const("RoundingMode",ATy(qTy,rTy)), 6960 qVar"state"), 6961 ITE(bVar"add",Var("v",F32), 6962 Mop(FPNeg 32,Var("v",F32))), 6963 Apply 6964 (Call("S",ATy(qTy,F32),Var("m",FTy 5)), 6965 qVar"state"), 6966 Mop(FPNeg 32, 6967 Apply 6968 (Call 6969 ("S",ATy(qTy,F32),Var("d",FTy 5)), 6970 qVar"state"))]),Var("d",FTy 5)]), 6971 qVar"state")))))) 6972; 6973val dfn'vneg_mul_def = Def 6974 ("dfn'vneg_mul", 6975 TP[bVar"dp_operation",Var("typ",CTy"VFPNegMul"),Var("d",FTy 5), 6976 Var("n",FTy 5),Var("m",FTy 5)], 6977 Close 6978 (qVar"state", 6979 Apply 6980 (Call("IncPC",ATy(qTy,qTy),LU), 6981 ITE(bVar"dp_operation", 6982 Let(Var("v",F64), 6983 Apply 6984 (Call 6985 ("FPMul64",ATy(qTy,F64), 6986 TP[Apply 6987 (Call("D",ATy(qTy,F64),Var("n",FTy 5)), 6988 qVar"state"), 6989 Apply 6990 (Call("D",ATy(qTy,F64),Var("m",FTy 5)), 6991 qVar"state")]),qVar"state"), 6992 CS(Var("typ",CTy"VFPNegMul"), 6993 [(LC("VFPNegMul_VNMLA",CTy"VFPNegMul"), 6994 Apply 6995 (Call 6996 ("write'D",ATy(qTy,qTy), 6997 TP[Apply 6998 (Call 6999 ("FPAdd64",ATy(qTy,F64), 7000 TP[Mop(FPNeg 64, 7001 Apply 7002 (Call 7003 ("D",ATy(qTy,F64), 7004 Var("d",FTy 5)), 7005 qVar"state")), 7006 Mop(FPNeg 64,Var("v",F64))]), 7007 qVar"state"),Var("d",FTy 5)]), 7008 qVar"state")), 7009 (LC("VFPNegMul_VNMLS",CTy"VFPNegMul"), 7010 Apply 7011 (Call 7012 ("write'D",ATy(qTy,qTy), 7013 TP[Apply 7014 (Call 7015 ("FPAdd64",ATy(qTy,F64), 7016 TP[Mop(FPNeg 64, 7017 Apply 7018 (Call 7019 ("D",ATy(qTy,F64), 7020 Var("d",FTy 5)), 7021 qVar"state")),Var("v",F64)]), 7022 qVar"state"),Var("d",FTy 5)]), 7023 qVar"state")), 7024 (LC("VFPNegMul_VNMUL",CTy"VFPNegMul"), 7025 Apply 7026 (Call 7027 ("write'D",ATy(qTy,qTy), 7028 TP[Mop(FPNeg 64,Var("v",F64)),Var("d",FTy 5)]), 7029 qVar"state"))])), 7030 Let(Var("v",F32), 7031 Apply 7032 (Call 7033 ("FPMul32",ATy(qTy,F32), 7034 TP[Apply 7035 (Call("S",ATy(qTy,F32),Var("n",FTy 5)), 7036 qVar"state"), 7037 Apply 7038 (Call("S",ATy(qTy,F32),Var("m",FTy 5)), 7039 qVar"state")]),qVar"state"), 7040 CS(Var("typ",CTy"VFPNegMul"), 7041 [(LC("VFPNegMul_VNMLA",CTy"VFPNegMul"), 7042 Apply 7043 (Call 7044 ("write'S",ATy(qTy,qTy), 7045 TP[Apply 7046 (Call 7047 ("FPAdd32",ATy(qTy,F32), 7048 TP[Mop(FPNeg 32, 7049 Apply 7050 (Call 7051 ("S",ATy(qTy,F32), 7052 Var("d",FTy 5)), 7053 qVar"state")), 7054 Mop(FPNeg 32,Var("v",F32))]), 7055 qVar"state"),Var("d",FTy 5)]), 7056 qVar"state")), 7057 (LC("VFPNegMul_VNMLS",CTy"VFPNegMul"), 7058 Apply 7059 (Call 7060 ("write'S",ATy(qTy,qTy), 7061 TP[Apply 7062 (Call 7063 ("FPAdd32",ATy(qTy,F32), 7064 TP[Mop(FPNeg 32, 7065 Apply 7066 (Call 7067 ("S",ATy(qTy,F32), 7068 Var("d",FTy 5)), 7069 qVar"state")),Var("v",F32)]), 7070 qVar"state"),Var("d",FTy 5)]), 7071 qVar"state")), 7072 (LC("VFPNegMul_VNMUL",CTy"VFPNegMul"), 7073 Apply 7074 (Call 7075 ("write'S",ATy(qTy,qTy), 7076 TP[Mop(FPNeg 32,Var("v",F32)),Var("d",FTy 5)]), 7077 qVar"state"))])))))) 7078; 7079val dfn'vldr_def = Def 7080 ("dfn'vldr", 7081 TP[bVar"single_reg",bVar"add",Var("d",FTy 5),Var("n",F4), 7082 Var("imm32",F32)], 7083 Close 7084 (qVar"state", 7085 Let(TP[Var("v",F32),qVar"s"], 7086 ITE(EQ(Var("n",F4),LW(15,4)), 7087 Let(TP[Var("v",F32),qVar"s"], 7088 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 7089 TP[Call("Align",F32,TP[Var("v",F32),LN 4]),qVar"s"]), 7090 Apply 7091 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state")), 7092 Let(Var("address",F32), 7093 ITE(bVar"add",Bop(Add,Var("v",F32),Var("imm32",F32)), 7094 Bop(Sub,Var("v",F32),Var("imm32",F32))), 7095 Apply 7096 (Call("IncPC",ATy(qTy,qTy),LU), 7097 ITE(bVar"single_reg", 7098 Let(TP[Var("v",F32),qVar"s"], 7099 Apply 7100 (Call 7101 ("MemA",ATy(qTy,PTy(F32,qTy)), 7102 TP[Var("address",F32),LN 4]),qVar"s"), 7103 Apply 7104 (Call 7105 ("write'S",ATy(qTy,qTy), 7106 TP[Var("v",F32),Var("d",FTy 5)]),qVar"s")), 7107 Let(TP[Var("v",F32),qVar"s"], 7108 Apply 7109 (Call 7110 ("MemA",ATy(qTy,PTy(F32,qTy)), 7111 TP[Var("address",F32),LN 4]),qVar"s"), 7112 Let(TP[Var("v0",F32),qVar"s"], 7113 Apply 7114 (Call 7115 ("MemA",ATy(qTy,PTy(F32,qTy)), 7116 TP[Bop(Add,Var("address",F32),LW(4,32)), 7117 LN 4]),qVar"s"), 7118 Apply 7119 (Call 7120 ("write'D",ATy(qTy,qTy), 7121 TP[ITE(Apply 7122 (Call 7123 ("BigEndian",ATy(qTy,bTy), 7124 LU),qVar"s"), 7125 CC[Var("v",F32),Var("v0",F32)], 7126 CC[Var("v0",F32),Var("v",F32)]), 7127 Var("d",FTy 5)]),qVar"s"))))))))) 7128; 7129val dfn'vstr_def = Def 7130 ("dfn'vstr", 7131 TP[bVar"single_reg",bVar"add",Var("d",FTy 5),Var("n",F4), 7132 Var("imm32",F32)], 7133 Close 7134 (qVar"state", 7135 Let(TP[Var("v",F32),qVar"s"], 7136 ITE(bVar"add", 7137 Let(TP[Var("v",F32),qVar"s"], 7138 Apply 7139 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 7140 qVar"state"), 7141 TP[Bop(Add,Var("v",F32),Var("imm32",F32)),qVar"s"]), 7142 Let(TP[Var("v",F32),qVar"s"], 7143 Apply 7144 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 7145 qVar"state"), 7146 TP[Bop(Sub,Var("v",F32),Var("imm32",F32)),qVar"s"])), 7147 Apply 7148 (Call("IncPC",ATy(qTy,qTy),LU), 7149 ITE(bVar"single_reg", 7150 Apply 7151 (Call 7152 ("write'MemA",ATy(qTy,qTy), 7153 TP[Apply 7154 (Call("S",ATy(qTy,F32),Var("d",FTy 5)),qVar"s"), 7155 Var("v",F32),LN 4]),qVar"s"), 7156 Let(Var("v0",F64), 7157 Apply(Call("D",ATy(qTy,F64),Var("d",FTy 5)),qVar"s"), 7158 Let(TP[bVar"v1",qVar"s"], 7159 Let(qVar"s0", 7160 Apply 7161 (Call 7162 ("write'MemA",ATy(qTy,qTy), 7163 TP[ITE(Apply 7164 (Call 7165 ("BigEndian",ATy(qTy,bTy), 7166 LU),qVar"s"), 7167 EX(Var("v0",F64),LN 63,LN 32,F32), 7168 EX(Var("v0",F64),LN 31,LN 0,F32)), 7169 Var("v",F32),LN 4]),qVar"s"), 7170 TP[Apply 7171 (Call("BigEndian",ATy(qTy,bTy),LU), 7172 qVar"s0"),qVar"s0"]), 7173 Apply 7174 (Call 7175 ("write'MemA",ATy(qTy,qTy), 7176 TP[ITE(bVar"v1", 7177 EX(Var("v0",F64),LN 31,LN 0,F32), 7178 EX(Var("v0",F64),LN 63,LN 32,F32)), 7179 Bop(Add,Var("v",F32),LW(4,32)),LN 4]), 7180 qVar"s")))))))) 7181; 7182val dfn'vldm_def = Def 7183 ("dfn'vldm", 7184 TP[bVar"single_regs",bVar"add",bVar"wback",Var("d",FTy 5),Var("n",F4), 7185 Var("imm8",F8)], 7186 Close 7187 (qVar"state", 7188 Let(Var("imm32",F32),Mop(Cast F32,CC[Var("imm8",F8),LW(0,2)]), 7189 Let(TP[Var("v",F32),qVar"s"], 7190 ITE(bVar"add", 7191 Apply 7192 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 7193 qVar"state"), 7194 Let(TP[Var("v",F32),qVar"s"], 7195 Apply 7196 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 7197 qVar"state"), 7198 TP[Bop(Sub,Var("v",F32),Var("imm32",F32)),qVar"s"])), 7199 Let(Var("s",PTy(F32,qTy)), 7200 Mop(Snd, 7201 Apply 7202 (For(TP[LN 0, 7203 Bop(Sub, 7204 ITE(bVar"single_regs", 7205 Mop(Cast nTy,Var("imm8",F8)), 7206 Bop(Div, 7207 Mop(Cast nTy,Var("imm8",F8)), 7208 LN 2)),LN 1), 7209 Close 7210 (nVar"r", 7211 Close 7212 (Var("state",PTy(F32,qTy)), 7213 ITE(bVar"single_regs", 7214 Let(Var("s",PTy(F32,qTy)), 7215 Let(TP[Var("v", 7216 PTy(F32,FTy 5)), 7217 Var("s",PTy(F32,qTy))], 7218 Let(TP[Var("v",F32), 7219 Var("s", 7220 PTy(F32,qTy))], 7221 CS(Apply 7222 (Call 7223 ("MemA", 7224 ATy(qTy, 7225 PTy(F32, 7226 qTy)), 7227 TP[Mop(Fst, 7228 Var("state", 7229 PTy(F32, 7230 qTy))), 7231 LN 4]), 7232 Mop(Snd, 7233 Var("state", 7234 PTy(F32, 7235 qTy)))), 7236 [(TP[Var("v",F32), 7237 qVar"s3"], 7238 TP[Var("v",F32), 7239 Mop(Fst, 7240 Var("state", 7241 PTy(F32, 7242 qTy))), 7243 qVar"s3"])]), 7244 TP[TP[Var("v",F32), 7245 Bop(Add, 7246 Var("d", 7247 FTy 5), 7248 Mop(Cast 7249 (FTy 5), 7250 nVar"r"))], 7251 Var("s", 7252 PTy(F32,qTy))]), 7253 TP[Mop(Fst, 7254 Var("s", 7255 PTy(F32,qTy))), 7256 Apply 7257 (Call 7258 ("write'S", 7259 ATy(qTy,qTy), 7260 Var("v", 7261 PTy(F32, 7262 FTy 5))), 7263 Mop(Snd, 7264 Var("s", 7265 PTy(F32, 7266 qTy))))]), 7267 TP[LU, 7268 Bop(Add, 7269 Mop(Fst, 7270 Var("s", 7271 PTy(F32,qTy))), 7272 LW(4,32)), 7273 Mop(Snd, 7274 Var("s",PTy(F32,qTy)))]), 7275 Let(TP[Var("v",F32), 7276 Var("s",PTy(F32,qTy))], 7277 CS(Apply 7278 (Call 7279 ("MemA", 7280 ATy(qTy, 7281 PTy(F32,qTy)), 7282 TP[Mop(Fst, 7283 Var("state", 7284 PTy(F32, 7285 qTy))), 7286 LN 4]), 7287 Mop(Snd, 7288 Var("state", 7289 PTy(F32,qTy)))), 7290 [(TP[Var("v",F32), 7291 qVar"s3"], 7292 TP[Var("v",F32), 7293 Mop(Fst, 7294 Var("state", 7295 PTy(F32,qTy))), 7296 qVar"s3"])]), 7297 Let(TP[Var("v0",F32), 7298 Var("s",PTy(F32,qTy))], 7299 CS(Apply 7300 (Call 7301 ("MemA", 7302 ATy(qTy, 7303 PTy(F32,qTy)), 7304 TP[Bop(Add, 7305 Mop(Fst, 7306 Var("s", 7307 PTy(F32, 7308 qTy))), 7309 LW(4,32)), 7310 LN 4]), 7311 Mop(Snd, 7312 Var("s", 7313 PTy(F32, 7314 qTy)))), 7315 [(TP[Var("v",F32), 7316 qVar"s3"], 7317 TP[Var("v",F32), 7318 Mop(Fst, 7319 Var("s", 7320 PTy(F32, 7321 qTy))), 7322 qVar"s3"])]), 7323 Let(qVar"s1", 7324 Mop(Snd, 7325 Var("s", 7326 PTy(F32,qTy))), 7327 TP[LU, 7328 Bop(Add, 7329 Mop(Fst, 7330 Var("s", 7331 PTy(F32, 7332 qTy))), 7333 LW(8,32)), 7334 Apply 7335 (Call 7336 ("write'D", 7337 ATy(qTy,qTy), 7338 TP[ITE(Apply 7339 (Call 7340 ("BigEndian", 7341 ATy(qTy, 7342 bTy), 7343 LU), 7344 qVar"s1"), 7345 CC[Var("v", 7346 F32), 7347 Var("v0", 7348 F32)], 7349 CC[Var("v0", 7350 F32), 7351 Var("v", 7352 F32)]), 7353 Bop(Add, 7354 Var("d", 7355 FTy 5), 7356 Mop(Cast 7357 (FTy 5), 7358 nVar"r"))]), 7359 qVar"s1")]))))))]), 7360 TP[Var("v",F32),qVar"s"])), 7361 Apply 7362 (Call("IncPC",ATy(qTy,qTy),LU), 7363 ITE(bVar"wback", 7364 Let(TP[Var("v",F32),Var("s",PTy(F32,qTy))], 7365 ITE(bVar"add", 7366 Let(TP[Var("v",F32),Var("s",PTy(F32,qTy))], 7367 CS(Apply 7368 (Call 7369 ("R",ATy(qTy,PTy(F32,qTy)), 7370 Var("n",F4)), 7371 Mop(Snd,Var("s",PTy(F32,qTy)))), 7372 [(TP[Var("v",F32),qVar"s3"], 7373 TP[Var("v",F32), 7374 Mop(Fst,Var("s",PTy(F32,qTy))), 7375 qVar"s3"])]), 7376 TP[Bop(Add,Var("v",F32), 7377 Var("imm32",F32)), 7378 Var("s",PTy(F32,qTy))]), 7379 Let(TP[Var("v",F32),Var("s",PTy(F32,qTy))], 7380 CS(Apply 7381 (Call 7382 ("R",ATy(qTy,PTy(F32,qTy)), 7383 Var("n",F4)), 7384 Mop(Snd,Var("s",PTy(F32,qTy)))), 7385 [(TP[Var("v",F32),qVar"s3"], 7386 TP[Var("v",F32), 7387 Mop(Fst,Var("s",PTy(F32,qTy))), 7388 qVar"s3"])]), 7389 TP[Bop(Sub,Var("v",F32), 7390 Var("imm32",F32)), 7391 Var("s",PTy(F32,qTy))])), 7392 Apply 7393 (Call 7394 ("write'R",ATy(qTy,qTy), 7395 TP[Var("v",F32),Var("n",F4)]), 7396 Mop(Snd,Var("s",PTy(F32,qTy))))), 7397 Mop(Snd,Var("s",PTy(F32,qTy)))))))))) 7398; 7399val dfn'vstm_def = Def 7400 ("dfn'vstm", 7401 TP[bVar"single_regs",bVar"add",bVar"wback",Var("d",FTy 5),Var("n",F4), 7402 Var("imm8",F8)], 7403 Close 7404 (qVar"state", 7405 Let(Var("imm32",F32),Mop(Cast F32,CC[Var("imm8",F8),LW(0,2)]), 7406 Let(TP[Var("v",F32),qVar"s"], 7407 ITE(bVar"add", 7408 Apply 7409 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 7410 qVar"state"), 7411 Let(TP[Var("v",F32),qVar"s"], 7412 Apply 7413 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 7414 qVar"state"), 7415 TP[Bop(Sub,Var("v",F32),Var("imm32",F32)),qVar"s"])), 7416 Let(Var("s",PTy(F32,qTy)), 7417 Mop(Snd, 7418 Apply 7419 (For(TP[LN 0, 7420 Bop(Sub, 7421 ITE(bVar"single_regs", 7422 Mop(Cast nTy,Var("imm8",F8)), 7423 Bop(Div, 7424 Mop(Cast nTy,Var("imm8",F8)), 7425 LN 2)),LN 1), 7426 Close 7427 (nVar"r", 7428 Close 7429 (Var("state",PTy(F32,qTy)), 7430 ITE(bVar"single_regs", 7431 TP[LU, 7432 Bop(Add, 7433 Mop(Fst, 7434 Var("state", 7435 PTy(F32,qTy))), 7436 LW(4,32)), 7437 Apply 7438 (Call 7439 ("write'MemA", 7440 ATy(qTy,qTy), 7441 TP[Apply 7442 (Call 7443 ("S", 7444 ATy(qTy,F32), 7445 Bop(Add, 7446 Var("d", 7447 FTy 5), 7448 Mop(Cast 7449 (FTy 5), 7450 nVar"r"))), 7451 Mop(Snd, 7452 Var("state", 7453 PTy(F32, 7454 qTy)))), 7455 Mop(Fst, 7456 Var("state", 7457 PTy(F32,qTy))), 7458 LN 4]), 7459 Mop(Snd, 7460 Var("state", 7461 PTy(F32,qTy))))], 7462 Let(Var("v",F64), 7463 Apply 7464 (Call 7465 ("D",ATy(qTy,F64), 7466 Bop(Add, 7467 Var("d",FTy 5), 7468 Mop(Cast(FTy 5), 7469 nVar"r"))), 7470 Mop(Snd, 7471 Var("state", 7472 PTy(F32,qTy)))), 7473 Let(TP[Var("s0",F32), 7474 qVar"s1"], 7475 TP[Mop(Fst, 7476 Var("state", 7477 PTy(F32,qTy))), 7478 Apply 7479 (Call 7480 ("write'MemA", 7481 ATy(qTy,qTy), 7482 TP[ITE(Apply 7483 (Call 7484 ("BigEndian", 7485 ATy(qTy, 7486 bTy), 7487 LU), 7488 Mop(Snd, 7489 Var("state", 7490 PTy(F32, 7491 qTy)))), 7492 EX(Var("v", 7493 F64), 7494 LN 63, 7495 LN 32, 7496 F32), 7497 EX(Var("v", 7498 F64), 7499 LN 31, 7500 LN 0, 7501 F32)), 7502 Mop(Fst, 7503 Var("state", 7504 PTy(F32, 7505 qTy))), 7506 LN 4]), 7507 Mop(Snd, 7508 Var("state", 7509 PTy(F32, 7510 qTy))))], 7511 TP[LU, 7512 Bop(Add, 7513 Var("s0",F32), 7514 LW(8,32)), 7515 Apply 7516 (Call 7517 ("write'MemA", 7518 ATy(qTy,qTy), 7519 TP[ITE(Apply 7520 (Call 7521 ("BigEndian", 7522 ATy(qTy, 7523 bTy), 7524 LU), 7525 qVar"s1"), 7526 EX(Var("v", 7527 F64), 7528 LN 31, 7529 LN 0, 7530 F32), 7531 EX(Var("v", 7532 F64), 7533 LN 63, 7534 LN 32, 7535 F32)), 7536 Bop(Add, 7537 Var("s0", 7538 F32), 7539 LW(4,32)), 7540 LN 4]), 7541 qVar"s1")])))))]), 7542 TP[Var("v",F32),qVar"s"])), 7543 Apply 7544 (Call("IncPC",ATy(qTy,qTy),LU), 7545 ITE(bVar"wback", 7546 Let(TP[Var("v",F32),Var("s",PTy(F32,qTy))], 7547 ITE(bVar"add", 7548 Let(TP[Var("v",F32),Var("s",PTy(F32,qTy))], 7549 CS(Apply 7550 (Call 7551 ("R",ATy(qTy,PTy(F32,qTy)), 7552 Var("n",F4)), 7553 Mop(Snd,Var("s",PTy(F32,qTy)))), 7554 [(TP[Var("v",F32),qVar"s3"], 7555 TP[Var("v",F32), 7556 Mop(Fst,Var("s",PTy(F32,qTy))), 7557 qVar"s3"])]), 7558 TP[Bop(Add,Var("v",F32), 7559 Var("imm32",F32)), 7560 Var("s",PTy(F32,qTy))]), 7561 Let(TP[Var("v",F32),Var("s",PTy(F32,qTy))], 7562 CS(Apply 7563 (Call 7564 ("R",ATy(qTy,PTy(F32,qTy)), 7565 Var("n",F4)), 7566 Mop(Snd,Var("s",PTy(F32,qTy)))), 7567 [(TP[Var("v",F32),qVar"s3"], 7568 TP[Var("v",F32), 7569 Mop(Fst,Var("s",PTy(F32,qTy))), 7570 qVar"s3"])]), 7571 TP[Bop(Sub,Var("v",F32), 7572 Var("imm32",F32)), 7573 Var("s",PTy(F32,qTy))])), 7574 Apply 7575 (Call 7576 ("write'R",ATy(qTy,qTy), 7577 TP[Var("v",F32),Var("n",F4)]), 7578 Mop(Snd,Var("s",PTy(F32,qTy))))), 7579 Mop(Snd,Var("s",PTy(F32,qTy)))))))))) 7580; 7581val dfn'BranchTarget_def = Def 7582 ("dfn'BranchTarget",Var("imm32",F32), 7583 Close 7584 (qVar"state", 7585 Let(TP[Var("v",F32),qVar"s"], 7586 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 7587 Apply 7588 (Call 7589 ("BranchWritePC",ATy(qTy,qTy), 7590 Bop(Add,Var("v",F32),Var("imm32",F32))),qVar"s")))) 7591; 7592val dfn'BranchExchange_def = Def 7593 ("dfn'BranchExchange",Var("m",F4), 7594 Close 7595 (qVar"state", 7596 Let(TP[Var("v",F32),qVar"s"], 7597 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"state"), 7598 Apply(Call("BXWritePC",ATy(qTy,qTy),Var("v",F32)),qVar"s")))) 7599; 7600val dfn'BranchLinkExchangeImmediate_def = Def 7601 ("dfn'BranchLinkExchangeImmediate", 7602 TP[Var("targetInstrSet",CTy"InstrSet"),Var("imm32",F32)], 7603 Close 7604 (qVar"state", 7605 Let(qVar"s", 7606 ITE(EQ(Apply 7607 (Call("CurrentInstrSet",ATy(qTy,CTy"InstrSet"),LU), 7608 qVar"state"),LC("InstrSet_ARM",CTy"InstrSet")), 7609 Let(TP[Var("v",F32),qVar"s"], 7610 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 7611 Apply 7612 (Call 7613 ("write'LR",ATy(qTy,qTy), 7614 Bop(Sub,Var("v",F32),LW(4,32))),qVar"s")), 7615 Let(TP[Var("v",F32),qVar"s"], 7616 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 7617 Apply 7618 (Call 7619 ("write'LR",ATy(qTy,qTy), 7620 CC[EX(Var("v",F32),LN 31,LN 1,FTy 31),LW(1,1)]), 7621 qVar"s"))), 7622 Let(TP[Var("v",F32),qVar"s"], 7623 ITE(EQ(Var("targetInstrSet",CTy"InstrSet"), 7624 LC("InstrSet_ARM",CTy"InstrSet")), 7625 Let(TP[Var("v",F32),qVar"s"], 7626 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"s"), 7627 TP[Bop(Add,Call("Align",F32,TP[Var("v",F32),LN 4]), 7628 Var("imm32",F32)),qVar"s"]), 7629 Let(TP[Var("v",F32),qVar"s"], 7630 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"s"), 7631 TP[Bop(Add,Var("v",F32),Var("imm32",F32)),qVar"s"])), 7632 Apply 7633 (Call("BranchWritePC",ATy(qTy,qTy),Var("v",F32)), 7634 Apply 7635 (Call 7636 ("SelectInstrSet",ATy(qTy,qTy), 7637 Var("targetInstrSet",CTy"InstrSet")),qVar"s")))))) 7638; 7639val dfn'BranchLinkExchangeRegister_def = Def 7640 ("dfn'BranchLinkExchangeRegister",Var("m",F4), 7641 Close 7642 (qVar"state", 7643 Let(TP[Var("v",F32),qVar"s"], 7644 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"state"), 7645 Apply 7646 (Call("BXWritePC",ATy(qTy,qTy),Var("v",F32)), 7647 ITE(EQ(Apply 7648 (Call("CurrentInstrSet",ATy(qTy,CTy"InstrSet"),LU), 7649 qVar"s"),LC("InstrSet_ARM",CTy"InstrSet")), 7650 Let(TP[Var("v",F32),qVar"s"], 7651 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"s"), 7652 Apply 7653 (Call 7654 ("write'LR",ATy(qTy,qTy), 7655 Bop(Sub,Var("v",F32),LW(4,32))),qVar"s")), 7656 Let(TP[Var("v",F32),qVar"s"], 7657 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"s"), 7658 Apply 7659 (Call 7660 ("write'LR",ATy(qTy,qTy), 7661 CC[EX(Bop(Sub,Var("v",F32),LW(2,32)),LN 31, 7662 LN 1,FTy 31),LW(1,1)]),qVar"s"))))))) 7663; 7664val dfn'CompareBranch_def = Def 7665 ("dfn'CompareBranch",TP[bVar"nonzero",Var("n",F4),Var("imm32",F32)], 7666 Close 7667 (qVar"state", 7668 Let(TP[Var("v",F32),qVar"s"], 7669 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state"), 7670 ITE(Mop(Not,EQ(bVar"nonzero",EQ(Var("v",F32),LW(0,32)))), 7671 Let(TP[Var("v",F32),qVar"s"], 7672 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"s"), 7673 Apply 7674 (Call 7675 ("BranchWritePC",ATy(qTy,qTy), 7676 Bop(Add,Var("v",F32),Var("imm32",F32))),qVar"s")), 7677 Apply(Call("IncPC",ATy(qTy,qTy),LU),qVar"s"))))) 7678; 7679val dfn'TableBranchByte_def = Def 7680 ("dfn'TableBranchByte",TP[bVar"is_tbh",Var("m",F4),Var("n",F4)], 7681 Close 7682 (qVar"state", 7683 Let(TP[bVar"v",qVar"s"], 7684 Apply 7685 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 7686 qVar"state"), 7687 ITE(bVar"v", 7688 Let(TP[Var("v",F16),qVar"s"], 7689 ITE(bVar"is_tbh", 7690 Let(TP[Var("v",F32),qVar"s"], 7691 Apply 7692 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 7693 qVar"s"), 7694 Let(TP[Var("v",PTy(F32,nTy)),qVar"s"], 7695 Let(TP[Var("v",F32),qVar"s"], 7696 Let(TP[Var("v0",F32),qVar"s"], 7697 Apply 7698 (Call 7699 ("R",ATy(qTy,PTy(F32,qTy)), 7700 Var("m",F4)),qVar"s"), 7701 Let(TP[Var("v0",F32),qVar"s"], 7702 Apply 7703 (Call 7704 ("LSL", 7705 ATy(qTy,PTy(F32,qTy)), 7706 TP[Var("v0",F32),LN 1]), 7707 qVar"s"), 7708 TP[Bop(Add,Var("v",F32), 7709 Var("v0",F32)),qVar"s"])), 7710 TP[TP[Var("v",F32),LN 2],qVar"s"]), 7711 Apply 7712 (Call 7713 ("MemU",ATy(qTy,PTy(F16,qTy)), 7714 Var("v",PTy(F32,nTy))),qVar"s"))), 7715 Let(TP[Var("v",F32),qVar"s"], 7716 Apply 7717 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 7718 qVar"s"), 7719 Let(TP[Var("v",PTy(F32,nTy)),qVar"s"], 7720 Let(TP[Var("v",F32),qVar"s"], 7721 Let(TP[Var("v0",F32),qVar"s"], 7722 Apply 7723 (Call 7724 ("R",ATy(qTy,PTy(F32,qTy)), 7725 Var("m",F4)),qVar"s"), 7726 TP[Bop(Add,Var("v",F32), 7727 Var("v0",F32)),qVar"s"]), 7728 TP[TP[Var("v",F32),LN 1],qVar"s"]), 7729 Apply 7730 (Call 7731 ("MemU",ATy(qTy,PTy(F16,qTy)), 7732 Var("v",PTy(F32,nTy))),qVar"s")))), 7733 Let(TP[Var("v0",F32),qVar"s"], 7734 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"s"), 7735 Apply 7736 (Call 7737 ("BranchWritePC",ATy(qTy,qTy), 7738 Bop(Add,Var("v0",F32), 7739 Bop(Mul,LW(2,32), 7740 Mop(Cast F32,Var("v",F16))))),qVar"s"))), 7741 qVar"s")))) 7742; 7743val dfn'CheckArray_def = Def 7744 ("dfn'CheckArray",TP[Var("m",F4),Var("n",F4)], 7745 Close 7746 (qVar"state", 7747 Let(TP[Var("v",F32),qVar"s"], 7748 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state"), 7749 Let(TP[bVar"v",qVar"s"], 7750 Let(TP[Var("v0",F32),qVar"s"], 7751 Apply 7752 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"s"), 7753 TP[Bop(Ule,Var("v",F32),Var("v0",F32)),qVar"s"]), 7754 ITE(bVar"v", 7755 Let(TP[Var("v",F32),qVar"s"], 7756 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"s"), 7757 Let(qVar"s", 7758 Apply 7759 (Call("write'ITSTATE",ATy(qTy,qTy),LW(0,8)), 7760 Apply 7761 (Call 7762 ("write'LR",ATy(qTy,qTy), 7763 CC[EX(Var("v",F32),LN 31,LN 1,FTy 31), 7764 LW(1,1)]),qVar"s")), 7765 Apply 7766 (Call 7767 ("BranchWritePC",ATy(qTy,qTy), 7768 Bop(Sub, 7769 Dest 7770 ("TEEHBR",F32, 7771 Dest("CP14",CTy"CP14",qVar"s")), 7772 LW(8,32))),qVar"s"))), 7773 Apply(Call("IncPC",ATy(qTy,qTy),LU),qVar"s")))))) 7774; 7775val dfn'HandlerBranchLink_def = Def 7776 ("dfn'HandlerBranchLink", 7777 TP[bVar"generate_link",Var("handler_offset",F32)], 7778 Close 7779 (qVar"state", 7780 Let(qVar"s", 7781 ITE(bVar"generate_link", 7782 Let(TP[Var("v",F32),qVar"s"], 7783 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 7784 Apply 7785 (Call 7786 ("write'LR",ATy(qTy,qTy), 7787 CC[EX(Bop(Sub,Var("v",F32),LW(2,32)),LN 31,LN 1, 7788 FTy 31),LW(1,1)]),qVar"s")),qVar"state"), 7789 Apply 7790 (Call 7791 ("BranchWritePC",ATy(qTy,qTy), 7792 Bop(Add,Dest("TEEHBR",F32,Dest("CP14",CTy"CP14",qVar"s")), 7793 Var("handler_offset",F32))),qVar"s")))) 7794; 7795val dfn'HandlerBranchLinkParameter_def = Def 7796 ("dfn'HandlerBranchLinkParameter", 7797 TP[Var("imm32",F32),Var("handler_offset",F32)], 7798 Close 7799 (qVar"state", 7800 Let(TP[Var("v",F32),qVar"s"], 7801 Apply 7802 (Const("PC",ATy(qTy,PTy(F32,qTy))), 7803 Apply 7804 (Call("write'R",ATy(qTy,qTy),TP[Var("imm32",F32),LW(8,4)]), 7805 qVar"state")), 7806 Let(qVar"s", 7807 Apply 7808 (Call 7809 ("write'LR",ATy(qTy,qTy), 7810 CC[EX(Bop(Sub,Var("v",F32),LW(2,32)),LN 31,LN 1,FTy 31), 7811 LW(1,1)]),qVar"s"), 7812 Apply 7813 (Call 7814 ("BranchWritePC",ATy(qTy,qTy), 7815 Bop(Add, 7816 Dest("TEEHBR",F32,Dest("CP14",CTy"CP14",qVar"s")), 7817 Var("handler_offset",F32))),qVar"s"))))) 7818; 7819val dfn'HandlerBranchParameter_def = Def 7820 ("dfn'HandlerBranchParameter", 7821 TP[Var("imm32",F32),Var("handler_offset",F32)], 7822 Close 7823 (qVar"state", 7824 Let(qVar"s", 7825 Apply 7826 (Call("write'R",ATy(qTy,qTy),TP[Var("imm32",F32),LW(8,4)]), 7827 qVar"state"), 7828 Apply 7829 (Call 7830 ("BranchWritePC",ATy(qTy,qTy), 7831 Bop(Add,Dest("TEEHBR",F32,Dest("CP14",CTy"CP14",qVar"s")), 7832 Var("handler_offset",F32))),qVar"s")))) 7833; 7834val dfn'EnterxLeavex_def = Def 7835 ("dfn'EnterxLeavex",bVar"is_enterx", 7836 Close 7837 (qVar"state", 7838 ITE(bVar"is_enterx", 7839 Let(TP[bVar"v",qVar"s"], 7840 Apply 7841 (Call("CurrentModeIsHyp",ATy(qTy,PTy(bTy,qTy)),LU), 7842 qVar"state"), 7843 ITE(bVar"v", 7844 Apply 7845 (Call("TakeUndefInstrException",ATy(qTy,qTy),LU), 7846 qVar"s"), 7847 Apply 7848 (Call("IncPC",ATy(qTy,qTy),LU), 7849 Apply 7850 (Call 7851 ("SelectInstrSet",ATy(qTy,qTy), 7852 LC("InstrSet_ThumbEE",CTy"InstrSet")),qVar"s")))), 7853 Apply 7854 (Call("IncPC",ATy(qTy,qTy),LU), 7855 Apply 7856 (Call 7857 ("SelectInstrSet",ATy(qTy,qTy), 7858 LC("InstrSet_Thumb",CTy"InstrSet")),qVar"state"))))) 7859; 7860val dfn'IfThen_def = Def 7861 ("dfn'IfThen",TP[Var("firstcond",F4),Var("mask",F4)], 7862 Close 7863 (qVar"state", 7864 Rupd 7865 ("Encoding", 7866 TP[Apply 7867 (Call("IncPC",ATy(qTy,qTy),LU), 7868 Rupd 7869 ("CPSR", 7870 TP[qVar"state", 7871 Rupd 7872 ("IT", 7873 TP[Dest("CPSR",CTy"PSR",qVar"state"), 7874 CC[Var("firstcond",F4),Var("mask",F4)]])])), 7875 LC("Encoding_ARM",CTy"Encoding")]))) 7876; 7877val dfn'CountLeadingZeroes_def = Def 7878 ("dfn'CountLeadingZeroes",TP[Var("d",F4),Var("m",F4)], 7879 Close 7880 (qVar"state", 7881 Let(TP[Var("v",F32),qVar"s"], 7882 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"state"), 7883 Apply 7884 (Call("IncPC",ATy(qTy,qTy),LU), 7885 Apply 7886 (Call 7887 ("write'R",ATy(qTy,qTy), 7888 TP[Mop(Cast F32, 7889 Call("CountLeadingZeroBits",nTy,Var("v",F32))), 7890 Var("d",F4)]),qVar"s"))))) 7891; 7892val dfn'MoveHalfword_def = Def 7893 ("dfn'MoveHalfword",TP[bVar"high",Var("d",F4),Var("imm16",F16)], 7894 Close 7895 (qVar"state", 7896 Apply 7897 (Call("IncPC",ATy(qTy,qTy),LU), 7898 ITE(bVar"high", 7899 Let(TP[Var("v",F32),qVar"s"], 7900 Apply 7901 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("d",F4)), 7902 qVar"state"), 7903 Apply 7904 (Call 7905 ("write'R",ATy(qTy,qTy), 7906 TP[BFI(LN 31,LN 16,Var("imm16",F16),Var("v",F32)), 7907 Var("d",F4)]),qVar"s")), 7908 Apply 7909 (Call 7910 ("write'R",ATy(qTy,qTy), 7911 TP[Mop(Cast F32,Var("imm16",F16)),Var("d",F4)]), 7912 qVar"state"))))) 7913; 7914val DataProcessing_def = Def 7915 ("DataProcessing", 7916 TP[Var("opc",F4),bVar"setflags",Var("d",F4),Var("n",F4), 7917 Var("imm32",F32),bVar"C"], 7918 Close 7919 (qVar"state", 7920 Let(TP[Var("v",F32),qVar"s"], 7921 ITB([(Bop(Or,EQ(Var("opc",F4),LW(13,4)), 7922 Bop(And,EQ(Var("opc",F4),LW(15,4)), 7923 EQ(Var("n",F4),LW(15,4)))), 7924 TP[LW(0,32),qVar"state"]), 7925 (Bop(And,Bop(In,Var("opc",F4),SL[LW(4,4),LW(2,4)]), 7926 Bop(And,EQ(Var("n",F4),LW(15,4)), 7927 Mop(Not,bVar"setflags"))), 7928 Let(TP[Var("v",F32),qVar"s"], 7929 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 7930 TP[Call("Align",F32,TP[Var("v",F32),LN 4]),qVar"s"]))], 7931 Apply 7932 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state")), 7933 Let(TP[Var("result",F32),bVar"carry",bVar"overflow"], 7934 Call 7935 ("DataProcessingALU",PTy(F32,PTy(bTy,bTy)), 7936 TP[Var("opc",F4),Var("v",F32),Var("imm32",F32), 7937 Dest("C",bTy,Dest("CPSR",CTy"PSR",qVar"s"))]), 7938 Let(qVar"s", 7939 ITE(Mop(Not, 7940 EQ(EX(Var("opc",F4),LN 3,LN 2,FTy 2),LW(2,2))), 7941 Apply 7942 (Call 7943 ("write'R",ATy(qTy,qTy), 7944 TP[Var("result",F32),Var("d",F4)]),qVar"s"), 7945 qVar"s"), 7946 Apply 7947 (Call("IncPC",ATy(qTy,qTy),LU), 7948 ITE(bVar"setflags", 7949 Let(qVar"s", 7950 Rupd 7951 ("CPSR", 7952 TP[qVar"s", 7953 Rupd 7954 ("N", 7955 TP[Dest("CPSR",CTy"PSR",qVar"s"), 7956 Bop(Bit,Var("result",F32),LN 31)])]), 7957 Let(qVar"s", 7958 Rupd 7959 ("CPSR", 7960 TP[qVar"s", 7961 Rupd 7962 ("Z", 7963 TP[Dest("CPSR",CTy"PSR",qVar"s"), 7964 EQ(Var("result",F32),LW(0,32))])]), 7965 ITE(Call 7966 ("ArithmeticOpcode",bTy, 7967 Var("opc",F4)), 7968 Let(qVar"s", 7969 Rupd 7970 ("CPSR", 7971 TP[qVar"s", 7972 Rupd 7973 ("C", 7974 TP[Dest 7975 ("CPSR",CTy"PSR", 7976 qVar"s"), 7977 bVar"carry"])]), 7978 Rupd 7979 ("CPSR", 7980 TP[qVar"s", 7981 Rupd 7982 ("V", 7983 TP[Dest 7984 ("CPSR",CTy"PSR", 7985 qVar"s"), 7986 bVar"overflow"])])), 7987 Rupd 7988 ("CPSR", 7989 TP[qVar"s", 7990 Rupd 7991 ("C", 7992 TP[Dest 7993 ("CPSR",CTy"PSR", 7994 qVar"s"),bVar"C"])])))), 7995 qVar"s"))))))) 7996; 7997val DataProcessingPC_def = Def 7998 ("DataProcessingPC", 7999 TP[Var("opc",F4),bVar"setflags",Var("n",F4),Var("imm32",F32)], 8000 Close 8001 (qVar"state", 8002 Let(TP[Var("v",F32),qVar"s"], 8003 ITB([(Bop(Or,EQ(Var("opc",F4),LW(13,4)), 8004 Bop(And,EQ(Var("opc",F4),LW(15,4)), 8005 EQ(Var("n",F4),LW(15,4)))), 8006 TP[LW(0,32),qVar"state"]), 8007 (Bop(And,Bop(In,Var("opc",F4),SL[LW(4,4),LW(2,4)]), 8008 Bop(And,EQ(Var("n",F4),LW(15,4)), 8009 Mop(Not,bVar"setflags"))), 8010 Let(TP[Var("v",F32),qVar"s"], 8011 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"state"), 8012 TP[Call("Align",F32,TP[Var("v",F32),LN 4]),qVar"s"]))], 8013 Apply 8014 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state")), 8015 Let(TP[Var("result",F32),AVar bTy,AVar bTy], 8016 Call 8017 ("DataProcessingALU",PTy(F32,PTy(bTy,bTy)), 8018 TP[Var("opc",F4),Var("v",F32),Var("imm32",F32), 8019 Dest("C",bTy,Dest("CPSR",CTy"PSR",qVar"s"))]), 8020 ITE(bVar"setflags", 8021 Let(TP[bVar"v",qVar"s"], 8022 Apply 8023 (Call("CurrentModeIsHyp",ATy(qTy,PTy(bTy,qTy)),LU), 8024 qVar"s"), 8025 ITE(bVar"v", 8026 Apply 8027 (Call 8028 ("TakeUndefInstrException",ATy(qTy,qTy),LU), 8029 qVar"s"), 8030 Let(TP[bVar"v",qVar"s"], 8031 Apply 8032 (Call 8033 ("CurrentModeIsUserOrSystem", 8034 ATy(qTy,PTy(bTy,qTy)),LU),qVar"s"), 8035 ITE(bVar"v", 8036 Mop(Snd, 8037 Apply 8038 (Call 8039 ("raise'exception", 8040 ATy(qTy,PTy(uTy,qTy)), 8041 Call 8042 ("UNPREDICTABLE", 8043 CTy"exception", 8044 LS"DataProcessingPC")), 8045 qVar"s")), 8046 Let(TP[Var("v",CTy"PSR"),qVar"s"], 8047 Apply 8048 (Const 8049 ("SPSR", 8050 ATy(qTy,PTy(CTy"PSR",qTy))), 8051 qVar"s"), 8052 Let(qVar"s", 8053 Apply 8054 (Call 8055 ("CPSRWriteByInstr", 8056 ATy(qTy,qTy), 8057 TP[Call 8058 ("reg'PSR",F32, 8059 Var("v",CTy"PSR")), 8060 LW(15,4),LT]),qVar"s"), 8061 ITE(Bop(And, 8062 EQ(Dest 8063 ("M",FTy 5, 8064 Dest 8065 ("CPSR", 8066 CTy"PSR", 8067 qVar"s")), 8068 LW(26,5)), 8069 EQ(Apply 8070 (Call 8071 ("CurrentInstrSet", 8072 ATy(qTy, 8073 CTy"InstrSet"), 8074 LU),qVar"s"), 8075 LC("InstrSet_ThumbEE", 8076 CTy"InstrSet"))), 8077 Mop(Snd, 8078 Apply 8079 (Call 8080 ("raise'exception", 8081 ATy(qTy, 8082 PTy(uTy,qTy)), 8083 Call 8084 ("UNPREDICTABLE", 8085 CTy"exception", 8086 LS 8087 "DataProcessingPC")), 8088 qVar"s")), 8089 Apply 8090 (Call 8091 ("BranchWritePC", 8092 ATy(qTy,qTy), 8093 Var("result",F32)), 8094 qVar"s")))))))), 8095 Apply 8096 (Call("ALUWritePC",ATy(qTy,qTy),Var("result",F32)), 8097 qVar"s")))))) 8098; 8099val dfn'Move_def = Def 8100 ("dfn'Move", 8101 TP[bVar"setflags",bVar"negate",Var("d",F4),Var("imm12",FTy 12)], 8102 Close 8103 (qVar"state", 8104 Let(Var("opc",F4),CC[LW(3,2),Mop(Cast F1,bVar"negate"),LW(1,1)], 8105 Let(TP[Var("v",PTy(F32,bTy)),qVar"s"], 8106 Apply 8107 (Call 8108 ("ExpandImm_C",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 8109 TP[Var("imm12",FTy 12), 8110 Dest("C",bTy,Dest("CPSR",CTy"PSR",qVar"state"))]), 8111 qVar"state"), 8112 Let(TP[Var("imm32",F32),bVar"carry"],Var("v",PTy(F32,bTy)), 8113 ITE(EQ(Var("d",F4),LW(15,4)), 8114 Apply 8115 (Call 8116 ("DataProcessingPC",ATy(qTy,qTy), 8117 TP[Var("opc",F4),bVar"setflags",LW(15,4), 8118 Var("imm32",F32)]),qVar"s"), 8119 Apply 8120 (Call 8121 ("DataProcessing",ATy(qTy,qTy), 8122 TP[Var("opc",F4),bVar"setflags",Var("d",F4), 8123 LW(15,4),Var("imm32",F32),bVar"carry"]), 8124 qVar"s"))))))) 8125; 8126val dfn'TestCompareImmediate_def = Def 8127 ("dfn'TestCompareImmediate", 8128 TP[Var("op",FTy 2),Var("n",F4),Var("imm12",FTy 12)], 8129 Close 8130 (qVar"state", 8131 Let(TP[Var("v",PTy(F32,bTy)),qVar"s"], 8132 Apply 8133 (Call 8134 ("ExpandImm_C",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 8135 TP[Var("imm12",FTy 12), 8136 Dest("C",bTy,Dest("CPSR",CTy"PSR",qVar"state"))]), 8137 qVar"state"), 8138 Let(TP[Var("imm32",F32),bVar"carry"],Var("v",PTy(F32,bTy)), 8139 Apply 8140 (Call 8141 ("DataProcessing",ATy(qTy,qTy), 8142 TP[CC[LW(2,2),Var("op",FTy 2)],LT,LX F4,Var("n",F4), 8143 Var("imm32",F32),bVar"carry"]),qVar"s"))))) 8144; 8145val dfn'ArithLogicImmediate_def = Def 8146 ("dfn'ArithLogicImmediate", 8147 TP[Var("opc",F4),bVar"setflags",Var("d",F4),Var("n",F4), 8148 Var("imm12",FTy 12)], 8149 Close 8150 (qVar"state", 8151 Let(TP[Var("v",PTy(F32,bTy)),qVar"s"], 8152 Apply 8153 (Call 8154 ("ExpandImm_C",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 8155 TP[Var("imm12",FTy 12), 8156 Dest("C",bTy,Dest("CPSR",CTy"PSR",qVar"state"))]), 8157 qVar"state"), 8158 Let(TP[Var("imm32",F32),bVar"carry"],Var("v",PTy(F32,bTy)), 8159 ITE(EQ(Var("d",F4),LW(15,4)), 8160 Apply 8161 (Call 8162 ("DataProcessingPC",ATy(qTy,qTy), 8163 TP[Var("opc",F4),bVar"setflags",Var("n",F4), 8164 Var("imm32",F32)]),qVar"s"), 8165 Apply 8166 (Call 8167 ("DataProcessing",ATy(qTy,qTy), 8168 TP[Var("opc",F4),bVar"setflags",Var("d",F4), 8169 Var("n",F4),Var("imm32",F32),bVar"carry"]), 8170 qVar"s")))))) 8171; 8172val doRegister_def = Def 8173 ("doRegister", 8174 TP[Var("opc",F4),bVar"setflags",Var("d",F4),Var("n",F4),Var("m",F4), 8175 Var("shift_t",CTy"SRType"),nVar"shift_n"], 8176 Close 8177 (qVar"state", 8178 Let(TP[Var("v",F32),qVar"s"], 8179 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"state"), 8180 Let(TP[Var("v",PTy(F32,bTy)),qVar"s"], 8181 Apply 8182 (Call 8183 ("Shift_C",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 8184 TP[Var("v",F32),Var("shift_t",CTy"SRType"), 8185 nVar"shift_n", 8186 Dest("C",bTy,Dest("CPSR",CTy"PSR",qVar"s"))]), 8187 qVar"s"), 8188 Let(TP[Var("shifted",F32),bVar"carry"], 8189 Var("v",PTy(F32,bTy)), 8190 ITE(EQ(Var("d",F4),LW(15,4)), 8191 Apply 8192 (Call 8193 ("DataProcessingPC",ATy(qTy,qTy), 8194 TP[Var("opc",F4),bVar"setflags",Var("n",F4), 8195 Var("shifted",F32)]),qVar"s"), 8196 Apply 8197 (Call 8198 ("DataProcessing",ATy(qTy,qTy), 8199 TP[Var("opc",F4),bVar"setflags",Var("d",F4), 8200 Var("n",F4),Var("shifted",F32),bVar"carry"]), 8201 qVar"s"))))))) 8202; 8203val dfn'Register_def = Def 8204 ("dfn'Register", 8205 TP[Var("opc",F4),bVar"setflags",Var("d",F4),Var("n",F4),Var("m",F4), 8206 Var("shift_t",CTy"SRType"),nVar"shift_n"], 8207 Close 8208 (qVar"state", 8209 Apply 8210 (Call 8211 ("doRegister",ATy(qTy,qTy), 8212 TP[Var("opc",F4),bVar"setflags",Var("d",F4),Var("n",F4), 8213 Var("m",F4),Var("shift_t",CTy"SRType"),nVar"shift_n"]), 8214 qVar"state"))) 8215; 8216val dfn'TestCompareRegister_def = Def 8217 ("dfn'TestCompareRegister", 8218 TP[Var("opc",FTy 2),Var("n",F4),Var("m",F4),Var("shift_t",CTy"SRType"), 8219 nVar"shift_n"], 8220 Close 8221 (qVar"state", 8222 Apply 8223 (Call 8224 ("doRegister",ATy(qTy,qTy), 8225 TP[CC[LW(2,2),Var("opc",FTy 2)],LT,LW(0,4),Var("n",F4), 8226 Var("m",F4),Var("shift_t",CTy"SRType"),nVar"shift_n"]), 8227 qVar"state"))) 8228; 8229val dfn'ShiftImmediate_def = Def 8230 ("dfn'ShiftImmediate", 8231 TP[bVar"negate",bVar"setflags",Var("d",F4),Var("m",F4), 8232 Var("shift_t",CTy"SRType"),nVar"shift_n"], 8233 Close 8234 (qVar"state", 8235 ITE(bVar"negate", 8236 Apply 8237 (Call 8238 ("doRegister",ATy(qTy,qTy), 8239 TP[LW(15,4),bVar"setflags",Var("d",F4),LW(15,4), 8240 Var("m",F4),Var("shift_t",CTy"SRType"),nVar"shift_n"]), 8241 qVar"state"), 8242 Apply 8243 (Call 8244 ("doRegister",ATy(qTy,qTy), 8245 TP[LW(13,4),bVar"setflags",Var("d",F4),LX F4,Var("m",F4), 8246 Var("shift_t",CTy"SRType"),nVar"shift_n"]),qVar"state")))) 8247; 8248val doRegisterShiftedRegister_def = Def 8249 ("doRegisterShiftedRegister", 8250 TP[Var("opc",F4),bVar"setflags",Var("d",F4),Var("n",F4),Var("m",F4), 8251 Var("shift_t",CTy"SRType"),Var("s",F4)], 8252 Close 8253 (qVar"state", 8254 Let(TP[Var("v",F32),qVar"s0"], 8255 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"state"), 8256 Let(TP[Var("v",PTy(F32,bTy)),qVar"s"], 8257 Let(TP[Var("v",PTy(F32,PTy(CTy"SRType",PTy(nTy,bTy)))), 8258 qVar"s"], 8259 Let(TP[Var("v0",F32),qVar"s"], 8260 Apply 8261 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("s",F4)), 8262 qVar"s0"), 8263 TP[TP[Var("v",F32),Var("shift_t",CTy"SRType"), 8264 Mop(Cast nTy,EX(Var("v0",F32),LN 7,LN 0,F8)), 8265 Dest("C",bTy,Dest("CPSR",CTy"PSR",qVar"s"))], 8266 qVar"s"]), 8267 Apply 8268 (Call 8269 ("Shift_C",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 8270 Var("v",PTy(F32,PTy(CTy"SRType",PTy(nTy,bTy))))), 8271 qVar"s")), 8272 Let(TP[Var("shifted",F32),bVar"carry"], 8273 Var("v",PTy(F32,bTy)), 8274 Apply 8275 (Call 8276 ("DataProcessing",ATy(qTy,qTy), 8277 TP[Var("opc",F4),bVar"setflags",Var("d",F4), 8278 Var("n",F4),Var("shifted",F32),bVar"carry"]), 8279 qVar"s")))))) 8280; 8281val dfn'RegisterShiftedRegister_def = Def 8282 ("dfn'RegisterShiftedRegister", 8283 TP[Var("opc",F4),bVar"setflags",Var("d",F4),Var("n",F4),Var("m",F4), 8284 Var("shift_t",CTy"SRType"),Var("s",F4)], 8285 Close 8286 (qVar"state", 8287 Apply 8288 (Call 8289 ("doRegisterShiftedRegister",ATy(qTy,qTy), 8290 TP[Var("opc",F4),bVar"setflags",Var("d",F4),Var("n",F4), 8291 Var("m",F4),Var("shift_t",CTy"SRType"),Var("s",F4)]), 8292 qVar"state"))) 8293; 8294val dfn'ShiftRegister_def = Def 8295 ("dfn'ShiftRegister", 8296 TP[bVar"negate",bVar"setflags",Var("d",F4),Var("n",F4), 8297 Var("shift_t",CTy"SRType"),Var("m",F4)], 8298 Close 8299 (qVar"state", 8300 ITE(bVar"negate", 8301 Apply 8302 (Call 8303 ("doRegisterShiftedRegister",ATy(qTy,qTy), 8304 TP[LW(15,4),bVar"setflags",Var("d",F4),LW(15,4), 8305 Var("n",F4),Var("shift_t",CTy"SRType"),Var("m",F4)]), 8306 qVar"state"), 8307 Apply 8308 (Call 8309 ("doRegisterShiftedRegister",ATy(qTy,qTy), 8310 TP[LW(13,4),bVar"setflags",Var("d",F4),LX F4,Var("n",F4), 8311 Var("shift_t",CTy"SRType"),Var("m",F4)]),qVar"state")))) 8312; 8313val dfn'AddSub_def = Def 8314 ("dfn'AddSub",TP[bVar"sub",Var("d",F4),Var("n",F4),Var("imm12",FTy 12)], 8315 Close 8316 (qVar"state", 8317 Apply 8318 (Call 8319 ("DataProcessing",ATy(qTy,qTy), 8320 TP[ITE(bVar"sub",LW(2,4),LW(4,4)),LF,Var("d",F4),Var("n",F4), 8321 Mop(Cast F32,Var("imm12",FTy 12)),LX bTy]),qVar"state"))) 8322; 8323val dfn'SaturatingAddSubtract_def = Def 8324 ("dfn'SaturatingAddSubtract", 8325 TP[Var("opc",FTy 2),Var("d",F4),Var("m",F4),Var("n",F4)], 8326 Close 8327 (qVar"state", 8328 Let(Var("s",PTy(bTy,PTy(F32,qTy))), 8329 CS(Var("opc",FTy 2), 8330 [(LW(0,2), 8331 Let(TP[Var("v",F32),Var("s",PTy(bTy,PTy(F32,qTy)))], 8332 Let(TP[Var("v",F32),Var("s3",PTy(F32,qTy))], 8333 Let(TP[Var("v",F32),qVar"s3"], 8334 Apply 8335 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 8336 qVar"state"), 8337 TP[Var("v",F32),LX F32,qVar"s3"]), 8338 TP[Var("v",F32),LX bTy,Var("s3",PTy(F32,qTy))]), 8339 Let(TP[Var("v",PTy(F32,bTy)), 8340 Var("s",PTy(bTy,PTy(F32,qTy)))], 8341 Let(TP[Var("v",PTy(iTy,nTy)), 8342 Var("s",PTy(bTy,PTy(F32,qTy)))], 8343 Let(TP[iVar"v",Var("s",PTy(bTy,PTy(F32,qTy)))], 8344 Let(TP[Var("v0",F32), 8345 Var("s",PTy(bTy,PTy(F32,qTy)))], 8346 Let(TP[Var("v",F32), 8347 Var("s3",PTy(F32,qTy))], 8348 Let(TP[Var("v",F32),qVar"s3"], 8349 Apply 8350 (Call 8351 ("R", 8352 ATy(qTy,PTy(F32,qTy)), 8353 Var("n",F4)), 8354 Mop(Snd, 8355 Mop(Snd, 8356 Var("s", 8357 PTy(bTy, 8358 PTy(F32,qTy)))))), 8359 TP[Var("v",F32), 8360 Mop(Fst, 8361 Mop(Snd, 8362 Var("s", 8363 PTy(bTy, 8364 PTy(F32,qTy))))), 8365 qVar"s3"]), 8366 TP[Var("v",F32), 8367 Mop(Fst, 8368 Var("s", 8369 PTy(bTy,PTy(F32,qTy)))), 8370 Var("s3",PTy(F32,qTy))]), 8371 TP[Bop(Add,Mop(Cast iTy,Var("v",F32)), 8372 Mop(Cast iTy,Var("v0",F32))), 8373 Var("s",PTy(bTy,PTy(F32,qTy)))]), 8374 TP[TP[iVar"v",LN 32], 8375 Var("s",PTy(bTy,PTy(F32,qTy)))]), 8376 Let(TP[Var("v",PTy(F32,bTy)), 8377 Var("s3",PTy(F32,qTy))], 8378 Let(TP[Var("v",PTy(F32,bTy)),qVar"s3"], 8379 Apply 8380 (Call 8381 ("SignedSatQ", 8382 ATy(qTy,PTy(PTy(F32,bTy),qTy)), 8383 Var("v",PTy(iTy,nTy))), 8384 Mop(Snd, 8385 Mop(Snd, 8386 Var("s", 8387 PTy(bTy,PTy(F32,qTy)))))), 8388 TP[Var("v",PTy(F32,bTy)), 8389 Mop(Fst, 8390 Mop(Snd, 8391 Var("s", 8392 PTy(bTy,PTy(F32,qTy))))), 8393 qVar"s3"]), 8394 TP[Var("v",PTy(F32,bTy)), 8395 Mop(Fst,Var("s",PTy(bTy,PTy(F32,qTy)))), 8396 Var("s3",PTy(F32,qTy))])), 8397 Let(TP[Var("r",F32),bVar"s0"], 8398 Var("v",PTy(F32,bTy)), 8399 TP[bVar"s0",Var("r",F32), 8400 Mop(Snd, 8401 Mop(Snd,Var("s",PTy(bTy,PTy(F32,qTy)))))])))), 8402 (LW(1,2), 8403 Let(TP[Var("v",F32),Var("s",PTy(bTy,PTy(F32,qTy)))], 8404 Let(TP[Var("v",F32),Var("s3",PTy(F32,qTy))], 8405 Let(TP[Var("v",F32),qVar"s3"], 8406 Apply 8407 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 8408 qVar"state"), 8409 TP[Var("v",F32),LX F32,qVar"s3"]), 8410 TP[Var("v",F32),LX bTy,Var("s3",PTy(F32,qTy))]), 8411 Let(TP[Var("v",PTy(F32,bTy)), 8412 Var("s",PTy(bTy,PTy(F32,qTy)))], 8413 Let(TP[Var("v",PTy(iTy,nTy)), 8414 Var("s",PTy(bTy,PTy(F32,qTy)))], 8415 Let(TP[iVar"v",Var("s",PTy(bTy,PTy(F32,qTy)))], 8416 Let(TP[Var("v0",F32), 8417 Var("s",PTy(bTy,PTy(F32,qTy)))], 8418 Let(TP[Var("v",F32), 8419 Var("s3",PTy(F32,qTy))], 8420 Let(TP[Var("v",F32),qVar"s3"], 8421 Apply 8422 (Call 8423 ("R", 8424 ATy(qTy,PTy(F32,qTy)), 8425 Var("n",F4)), 8426 Mop(Snd, 8427 Mop(Snd, 8428 Var("s", 8429 PTy(bTy, 8430 PTy(F32,qTy)))))), 8431 TP[Var("v",F32), 8432 Mop(Fst, 8433 Mop(Snd, 8434 Var("s", 8435 PTy(bTy, 8436 PTy(F32,qTy))))), 8437 qVar"s3"]), 8438 TP[Var("v",F32), 8439 Mop(Fst, 8440 Var("s", 8441 PTy(bTy,PTy(F32,qTy)))), 8442 Var("s3",PTy(F32,qTy))]), 8443 TP[Bop(Sub,Mop(Cast iTy,Var("v",F32)), 8444 Mop(Cast iTy,Var("v0",F32))), 8445 Var("s",PTy(bTy,PTy(F32,qTy)))]), 8446 TP[TP[iVar"v",LN 32], 8447 Var("s",PTy(bTy,PTy(F32,qTy)))]), 8448 Let(TP[Var("v",PTy(F32,bTy)), 8449 Var("s3",PTy(F32,qTy))], 8450 Let(TP[Var("v",PTy(F32,bTy)),qVar"s3"], 8451 Apply 8452 (Call 8453 ("SignedSatQ", 8454 ATy(qTy,PTy(PTy(F32,bTy),qTy)), 8455 Var("v",PTy(iTy,nTy))), 8456 Mop(Snd, 8457 Mop(Snd, 8458 Var("s", 8459 PTy(bTy,PTy(F32,qTy)))))), 8460 TP[Var("v",PTy(F32,bTy)), 8461 Mop(Fst, 8462 Mop(Snd, 8463 Var("s", 8464 PTy(bTy,PTy(F32,qTy))))), 8465 qVar"s3"]), 8466 TP[Var("v",PTy(F32,bTy)), 8467 Mop(Fst,Var("s",PTy(bTy,PTy(F32,qTy)))), 8468 Var("s3",PTy(F32,qTy))])), 8469 Let(TP[Var("r",F32),bVar"s0"], 8470 Var("v",PTy(F32,bTy)), 8471 TP[bVar"s0",Var("r",F32), 8472 Mop(Snd, 8473 Mop(Snd,Var("s",PTy(bTy,PTy(F32,qTy)))))])))), 8474 (LW(2,2), 8475 Let(TP[Var("v",F32),Var("s",PTy(bTy,PTy(F32,qTy)))], 8476 Let(TP[Var("v",F32),Var("s3",PTy(F32,qTy))], 8477 Let(TP[Var("v",F32),qVar"s3"], 8478 Apply 8479 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 8480 qVar"state"), 8481 TP[Var("v",F32),LX F32,qVar"s3"]), 8482 TP[Var("v",F32),LX bTy,Var("s3",PTy(F32,qTy))]), 8483 Let(TP[Var("v",PTy(F32,bTy)), 8484 Var("s",PTy(bTy,PTy(F32,qTy)))], 8485 Let(TP[Var("v",PTy(F32,bTy)),Var("s3",PTy(F32,qTy))], 8486 Let(TP[Var("v",PTy(F32,bTy)),qVar"s3"], 8487 Apply 8488 (Call 8489 ("SignedSatQ", 8490 ATy(qTy,PTy(PTy(F32,bTy),qTy)), 8491 TP[Bop(Mul,LI 2, 8492 Mop(Cast iTy,Var("v",F32))), 8493 LN 32]), 8494 Mop(Snd, 8495 Mop(Snd, 8496 Var("s",PTy(bTy,PTy(F32,qTy)))))), 8497 TP[Var("v",PTy(F32,bTy)), 8498 Mop(Fst, 8499 Mop(Snd, 8500 Var("s",PTy(bTy,PTy(F32,qTy))))), 8501 qVar"s3"]), 8502 TP[Var("v",PTy(F32,bTy)), 8503 Mop(Fst,Var("s",PTy(bTy,PTy(F32,qTy)))), 8504 Var("s3",PTy(F32,qTy))]), 8505 Let(TP[Var("doubled",F32),bVar"sat1"], 8506 Var("v",PTy(F32,bTy)), 8507 Let(TP[Var("v",F32), 8508 Var("s",PTy(bTy,PTy(F32,qTy)))], 8509 Let(TP[Var("v",F32),Var("s3",PTy(F32,qTy))], 8510 Let(TP[Var("v",F32),qVar"s3"], 8511 Apply 8512 (Call 8513 ("R",ATy(qTy,PTy(F32,qTy)), 8514 Var("m",F4)), 8515 Mop(Snd, 8516 Mop(Snd, 8517 Var("s", 8518 PTy(bTy,PTy(F32,qTy)))))), 8519 TP[Var("v",F32), 8520 Mop(Fst, 8521 Mop(Snd, 8522 Var("s", 8523 PTy(bTy,PTy(F32,qTy))))), 8524 qVar"s3"]), 8525 TP[Var("v",F32), 8526 Mop(Fst, 8527 Var("s",PTy(bTy,PTy(F32,qTy)))), 8528 Var("s3",PTy(F32,qTy))]), 8529 Let(TP[Var("v",PTy(F32,bTy)), 8530 Var("s",PTy(bTy,PTy(F32,qTy)))], 8531 Let(TP[Var("v",PTy(F32,bTy)), 8532 Var("s3",PTy(F32,qTy))], 8533 Let(TP[Var("v",PTy(F32,bTy)), 8534 qVar"s3"], 8535 Apply 8536 (Call 8537 ("SignedSatQ", 8538 ATy(qTy, 8539 PTy(PTy(F32,bTy),qTy)), 8540 TP[Bop(Add, 8541 Mop(Cast iTy, 8542 Var("v",F32)), 8543 Mop(Cast iTy, 8544 Var("doubled", 8545 F32))), 8546 LN 32]), 8547 Mop(Snd, 8548 Mop(Snd, 8549 Var("s", 8550 PTy(bTy, 8551 PTy(F32,qTy)))))), 8552 TP[Var("v",PTy(F32,bTy)), 8553 Mop(Fst, 8554 Mop(Snd, 8555 Var("s", 8556 PTy(bTy, 8557 PTy(F32,qTy))))), 8558 qVar"s3"]), 8559 TP[Var("v",PTy(F32,bTy)), 8560 Mop(Fst, 8561 Var("s", 8562 PTy(bTy,PTy(F32,qTy)))), 8563 Var("s3",PTy(F32,qTy))]), 8564 Let(TP[Var("r",F32),bVar"sat2"], 8565 Var("v",PTy(F32,bTy)), 8566 TP[Bop(Or,bVar"sat1",bVar"sat2"), 8567 Var("r",F32), 8568 Mop(Snd, 8569 Mop(Snd, 8570 Var("s", 8571 PTy(bTy,PTy(F32,qTy)))))]))))))), 8572 (LW(3,2), 8573 Let(TP[Var("v",F32),Var("s",PTy(bTy,PTy(F32,qTy)))], 8574 Let(TP[Var("v",F32),Var("s3",PTy(F32,qTy))], 8575 Let(TP[Var("v",F32),qVar"s3"], 8576 Apply 8577 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 8578 qVar"state"), 8579 TP[Var("v",F32),LX F32,qVar"s3"]), 8580 TP[Var("v",F32),LX bTy,Var("s3",PTy(F32,qTy))]), 8581 Let(TP[Var("v",PTy(F32,bTy)), 8582 Var("s",PTy(bTy,PTy(F32,qTy)))], 8583 Let(TP[Var("v",PTy(F32,bTy)),Var("s3",PTy(F32,qTy))], 8584 Let(TP[Var("v",PTy(F32,bTy)),qVar"s3"], 8585 Apply 8586 (Call 8587 ("SignedSatQ", 8588 ATy(qTy,PTy(PTy(F32,bTy),qTy)), 8589 TP[Bop(Mul,LI 2, 8590 Mop(Cast iTy,Var("v",F32))), 8591 LN 32]), 8592 Mop(Snd, 8593 Mop(Snd, 8594 Var("s",PTy(bTy,PTy(F32,qTy)))))), 8595 TP[Var("v",PTy(F32,bTy)), 8596 Mop(Fst, 8597 Mop(Snd, 8598 Var("s",PTy(bTy,PTy(F32,qTy))))), 8599 qVar"s3"]), 8600 TP[Var("v",PTy(F32,bTy)), 8601 Mop(Fst,Var("s",PTy(bTy,PTy(F32,qTy)))), 8602 Var("s3",PTy(F32,qTy))]), 8603 Let(TP[Var("doubled",F32),bVar"sat1"], 8604 Var("v",PTy(F32,bTy)), 8605 Let(TP[Var("v",F32), 8606 Var("s",PTy(bTy,PTy(F32,qTy)))], 8607 Let(TP[Var("v",F32),Var("s3",PTy(F32,qTy))], 8608 Let(TP[Var("v",F32),qVar"s3"], 8609 Apply 8610 (Call 8611 ("R",ATy(qTy,PTy(F32,qTy)), 8612 Var("m",F4)), 8613 Mop(Snd, 8614 Mop(Snd, 8615 Var("s", 8616 PTy(bTy,PTy(F32,qTy)))))), 8617 TP[Var("v",F32), 8618 Mop(Fst, 8619 Mop(Snd, 8620 Var("s", 8621 PTy(bTy,PTy(F32,qTy))))), 8622 qVar"s3"]), 8623 TP[Var("v",F32), 8624 Mop(Fst, 8625 Var("s",PTy(bTy,PTy(F32,qTy)))), 8626 Var("s3",PTy(F32,qTy))]), 8627 Let(TP[Var("v",PTy(F32,bTy)), 8628 Var("s",PTy(bTy,PTy(F32,qTy)))], 8629 Let(TP[Var("v",PTy(F32,bTy)), 8630 Var("s3",PTy(F32,qTy))], 8631 Let(TP[Var("v",PTy(F32,bTy)), 8632 qVar"s3"], 8633 Apply 8634 (Call 8635 ("SignedSatQ", 8636 ATy(qTy, 8637 PTy(PTy(F32,bTy),qTy)), 8638 TP[Bop(Sub, 8639 Mop(Cast iTy, 8640 Var("v",F32)), 8641 Mop(Cast iTy, 8642 Var("doubled", 8643 F32))), 8644 LN 32]), 8645 Mop(Snd, 8646 Mop(Snd, 8647 Var("s", 8648 PTy(bTy, 8649 PTy(F32,qTy)))))), 8650 TP[Var("v",PTy(F32,bTy)), 8651 Mop(Fst, 8652 Mop(Snd, 8653 Var("s", 8654 PTy(bTy, 8655 PTy(F32,qTy))))), 8656 qVar"s3"]), 8657 TP[Var("v",PTy(F32,bTy)), 8658 Mop(Fst, 8659 Var("s", 8660 PTy(bTy,PTy(F32,qTy)))), 8661 Var("s3",PTy(F32,qTy))]), 8662 Let(TP[Var("r",F32),bVar"sat2"], 8663 Var("v",PTy(F32,bTy)), 8664 TP[Bop(Or,bVar"sat1",bVar"sat2"), 8665 Var("r",F32), 8666 Mop(Snd, 8667 Mop(Snd, 8668 Var("s", 8669 PTy(bTy,PTy(F32,qTy)))))])))))))]), 8670 Let(qVar"s2", 8671 Apply 8672 (Call 8673 ("write'R",ATy(qTy,qTy), 8674 TP[Mop(Fst,Mop(Snd,Var("s",PTy(bTy,PTy(F32,qTy))))), 8675 Var("d",F4)]), 8676 Mop(Snd,Mop(Snd,Var("s",PTy(bTy,PTy(F32,qTy)))))), 8677 Apply 8678 (Call("IncPC",ATy(qTy,qTy),LU), 8679 ITE(Mop(Fst,Var("s",PTy(bTy,PTy(F32,qTy)))), 8680 Rupd 8681 ("CPSR", 8682 TP[qVar"s2", 8683 Rupd("Q",TP[Dest("CPSR",CTy"PSR",qVar"s2"),LT])]), 8684 qVar"s2")))))) 8685; 8686val dfn'Multiply32_def = Def 8687 ("dfn'Multiply32", 8688 TP[bVar"setflags",Var("d",F4),Var("n",F4),Var("m",F4)], 8689 Close 8690 (qVar"state", 8691 Let(TP[Var("v",F32),qVar"s"], 8692 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state"), 8693 Let(TP[Var("v0",F32),qVar"s"], 8694 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"s"), 8695 Let(Var("result",F32),Bop(Mul,Var("v",F32),Var("v0",F32)), 8696 Let(qVar"s", 8697 Apply 8698 (Call 8699 ("write'R",ATy(qTy,qTy), 8700 TP[Var("result",F32),Var("d",F4)]),qVar"s"), 8701 Apply 8702 (Call("IncPC",ATy(qTy,qTy),LU), 8703 ITE(bVar"setflags", 8704 Let(qVar"s", 8705 Rupd 8706 ("CPSR", 8707 TP[qVar"s", 8708 Rupd 8709 ("N", 8710 TP[Dest("CPSR",CTy"PSR",qVar"s"), 8711 Bop(Bit,Var("result",F32), 8712 LN 31)])]), 8713 Let(TP[nVar"v1",qVar"s"], 8714 Let(qVar"s0", 8715 Rupd 8716 ("CPSR", 8717 TP[qVar"s", 8718 Rupd 8719 ("Z", 8720 TP[Dest 8721 ("CPSR",CTy"PSR", 8722 qVar"s"), 8723 EQ(Var("result",F32), 8724 LW(0,32))])]), 8725 TP[Apply 8726 (Call 8727 ("ArchVersion", 8728 ATy(qTy,nTy),LU), 8729 qVar"s0"),qVar"s0"]), 8730 ITE(EQ(nVar"v1",LN 4), 8731 Rupd 8732 ("CPSR", 8733 TP[qVar"s", 8734 Rupd 8735 ("C", 8736 TP[Dest 8737 ("CPSR",CTy"PSR", 8738 qVar"s"), 8739 Apply 8740 (LX(ATy(PTy(F32, 8741 PTy(F32, 8742 bTy)), 8743 bTy)), 8744 TP[Var("v",F32), 8745 Var("v0",F32), 8746 Dest 8747 ("C",bTy, 8748 Dest 8749 ("CPSR", 8750 CTy"PSR", 8751 qVar"s"))])])]), 8752 qVar"s"))),qVar"s")))))))) 8753; 8754val dfn'MultiplyAccumulate_def = Def 8755 ("dfn'MultiplyAccumulate", 8756 TP[bVar"setflags",Var("d",F4),Var("n",F4),Var("m",F4),Var("a",F4)], 8757 Close 8758 (qVar"state", 8759 Let(TP[Var("v",F32),qVar"s"], 8760 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state"), 8761 Let(TP[Var("v0",F32),qVar"s"], 8762 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"s"), 8763 Let(TP[Var("v1",F32),qVar"s"], 8764 Apply 8765 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("a",F4)),qVar"s"), 8766 Let(Var("result",F32), 8767 Bop(Add,Bop(Mul,Var("v",F32),Var("v0",F32)), 8768 Var("v1",F32)), 8769 Let(qVar"s", 8770 Apply 8771 (Call 8772 ("write'R",ATy(qTy,qTy), 8773 TP[Var("result",F32),Var("d",F4)]),qVar"s"), 8774 Apply 8775 (Call("IncPC",ATy(qTy,qTy),LU), 8776 ITE(bVar"setflags", 8777 Let(qVar"s", 8778 Rupd 8779 ("CPSR", 8780 TP[qVar"s", 8781 Rupd 8782 ("N", 8783 TP[Dest 8784 ("CPSR",CTy"PSR", 8785 qVar"s"), 8786 Bop(Bit, 8787 Var("result",F32), 8788 LN 31)])]), 8789 Let(TP[nVar"v2",qVar"s"], 8790 Let(qVar"s0", 8791 Rupd 8792 ("CPSR", 8793 TP[qVar"s", 8794 Rupd 8795 ("Z", 8796 TP[Dest 8797 ("CPSR", 8798 CTy"PSR", 8799 qVar"s"), 8800 EQ(Var("result", 8801 F32), 8802 LW(0,32))])]), 8803 TP[Apply 8804 (Call 8805 ("ArchVersion", 8806 ATy(qTy,nTy),LU), 8807 qVar"s0"),qVar"s0"]), 8808 ITE(EQ(nVar"v2",LN 4), 8809 Rupd 8810 ("CPSR", 8811 TP[qVar"s", 8812 Rupd 8813 ("C", 8814 TP[Dest 8815 ("CPSR", 8816 CTy"PSR", 8817 qVar"s"), 8818 Apply 8819 (LX(ATy(PTy(F32, 8820 PTy(F32, 8821 PTy(F32, 8822 bTy))), 8823 bTy)), 8824 TP[Var("v",F32), 8825 Var("v0", 8826 F32), 8827 Var("v1", 8828 F32), 8829 Dest 8830 ("C",bTy, 8831 Dest 8832 ("CPSR", 8833 CTy"PSR", 8834 qVar"s"))])])]), 8835 qVar"s"))),qVar"s"))))))))) 8836; 8837val dfn'MultiplyLong_def = Def 8838 ("dfn'MultiplyLong", 8839 TP[bVar"accumulate",bVar"signed",bVar"setflags",Var("dhi",F4), 8840 Var("dlo",F4),Var("n",F4),Var("m",F4)], 8841 Close 8842 (qVar"state", 8843 Let(TP[Var("v",F32),qVar"s"], 8844 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state"), 8845 Let(TP[Var("v0",F32),qVar"s"], 8846 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"s"), 8847 Let(TP[Var("v1",F32),qVar"s"], 8848 Apply 8849 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("dhi",F4)),qVar"s"), 8850 Let(TP[Var("v2",F32),qVar"s"], 8851 Apply 8852 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("dlo",F4)), 8853 qVar"s"), 8854 Let(Var("result",F64), 8855 Bop(Add, 8856 ITE(bVar"signed", 8857 Bop(Mul,Mop(SE F64,Var("v",F32)), 8858 Mop(SE F64,Var("v0",F32))), 8859 Bop(Mul,Mop(Cast F64,Var("v",F32)), 8860 Mop(Cast F64,Var("v0",F32)))), 8861 ITE(bVar"accumulate", 8862 CC[Var("v1",F32),Var("v2",F32)],LW(0,64))), 8863 Let(qVar"s", 8864 Apply 8865 (Call 8866 ("write'R",ATy(qTy,qTy), 8867 TP[EX(Var("result",F64),LN 31,LN 0,F32), 8868 Var("dlo",F4)]), 8869 Apply 8870 (Call 8871 ("write'R",ATy(qTy,qTy), 8872 TP[EX(Var("result",F64),LN 63, 8873 LN 32,F32),Var("dhi",F4)]), 8874 qVar"s")), 8875 Apply 8876 (Call("IncPC",ATy(qTy,qTy),LU), 8877 ITE(bVar"setflags", 8878 Let(qVar"s", 8879 Rupd 8880 ("CPSR", 8881 TP[qVar"s", 8882 Rupd 8883 ("N", 8884 TP[Dest 8885 ("CPSR",CTy"PSR", 8886 qVar"s"), 8887 Bop(Bit, 8888 Var("result",F64), 8889 LN 63)])]), 8890 Let(TP[nVar"v3",qVar"s"], 8891 Let(qVar"s0", 8892 Rupd 8893 ("CPSR", 8894 TP[qVar"s", 8895 Rupd 8896 ("Z", 8897 TP[Dest 8898 ("CPSR", 8899 CTy"PSR", 8900 qVar"s"), 8901 EQ(Var("result", 8902 F64), 8903 LW(0,64))])]), 8904 TP[Apply 8905 (Call 8906 ("ArchVersion", 8907 ATy(qTy,nTy),LU), 8908 qVar"s0"),qVar"s0"]), 8909 ITE(EQ(nVar"v3",LN 4), 8910 Let(qVar"s", 8911 Rupd 8912 ("CPSR", 8913 TP[qVar"s", 8914 Rupd 8915 ("C", 8916 TP[Dest 8917 ("CPSR", 8918 CTy"PSR", 8919 qVar"s"), 8920 Apply 8921 (LX(ATy(PTy(F32, 8922 PTy(F32, 8923 PTy(F32, 8924 PTy(F32, 8925 bTy)))), 8926 bTy)), 8927 TP[Var("v", 8928 F32), 8929 Var("v0", 8930 F32), 8931 Var("v1", 8932 F32), 8933 Var("v2", 8934 F32), 8935 Dest 8936 ("C", 8937 bTy, 8938 Dest 8939 ("CPSR", 8940 CTy"PSR", 8941 qVar"s"))])])]), 8942 Rupd 8943 ("CPSR", 8944 TP[qVar"s", 8945 Rupd 8946 ("V", 8947 TP[Dest 8948 ("CPSR", 8949 CTy"PSR", 8950 qVar"s"), 8951 Apply 8952 (LX(ATy(PTy(F32, 8953 PTy(F32, 8954 PTy(F32, 8955 PTy(F32, 8956 bTy)))), 8957 bTy)), 8958 TP[Var("v", 8959 F32), 8960 Var("v0", 8961 F32), 8962 Var("v1", 8963 F32), 8964 Var("v2", 8965 F32), 8966 Dest 8967 ("V", 8968 bTy, 8969 Dest 8970 ("CPSR", 8971 CTy"PSR", 8972 qVar"s"))])])])), 8973 qVar"s"))),qVar"s")))))))))) 8974; 8975val dfn'MultiplyAccumulateAccumulate_def = Def 8976 ("dfn'MultiplyAccumulateAccumulate", 8977 TP[Var("dhi",F4),Var("dlo",F4),Var("n",F4),Var("m",F4)], 8978 Close 8979 (qVar"state", 8980 Let(TP[Var("v",F32),qVar"s"], 8981 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state"), 8982 Let(TP[Var("v",F64),qVar"s"], 8983 Let(TP[Var("v",F64),qVar"s"], 8984 Let(TP[Var("v",F64),qVar"s"], 8985 Let(TP[Var("v0",F32),qVar"s"], 8986 Apply 8987 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 8988 qVar"s"), 8989 TP[Bop(Mul,Mop(Cast F64,Var("v",F32)), 8990 Mop(Cast F64,Var("v0",F32))),qVar"s"]), 8991 Let(TP[Var("v0",F32),qVar"s"], 8992 Apply 8993 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("dhi",F4)), 8994 qVar"s"), 8995 TP[Bop(Add,Var("v",F64), 8996 Mop(Cast F64,Var("v0",F32))),qVar"s"])), 8997 Let(TP[Var("v0",F32),qVar"s"], 8998 Apply 8999 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("dlo",F4)), 9000 qVar"s"), 9001 TP[Bop(Add,Var("v",F64),Mop(Cast F64,Var("v0",F32))), 9002 qVar"s"])), 9003 Apply 9004 (Call("IncPC",ATy(qTy,qTy),LU), 9005 Apply 9006 (Call 9007 ("write'R",ATy(qTy,qTy), 9008 TP[EX(Var("v",F64),LN 31,LN 0,F32),Var("dlo",F4)]), 9009 Apply 9010 (Call 9011 ("write'R",ATy(qTy,qTy), 9012 TP[EX(Var("v",F64),LN 63,LN 32,F32), 9013 Var("dhi",F4)]),qVar"s"))))))) 9014; 9015val dfn'MultiplySubtract_def = Def 9016 ("dfn'MultiplySubtract", 9017 TP[Var("d",F4),Var("n",F4),Var("m",F4),Var("a",F4)], 9018 Close 9019 (qVar"state", 9020 Let(TP[Var("v",F32),qVar"s"], 9021 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("a",F4)),qVar"state"), 9022 Apply 9023 (Call("IncPC",ATy(qTy,qTy),LU), 9024 Let(TP[Var("v",PTy(F32,F4)),qVar"s"], 9025 Let(TP[Var("v",F32),qVar"s"], 9026 Let(TP[Var("v0",F32),qVar"s"], 9027 Apply 9028 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 9029 qVar"s"), 9030 Let(TP[Var("v0",F32),qVar"s"], 9031 Let(TP[Var("v1",F32),qVar"s"], 9032 Apply 9033 (Call 9034 ("R",ATy(qTy,PTy(F32,qTy)), 9035 Var("n",F4)),qVar"s"), 9036 TP[Bop(Mul,Var("v0",F32),Var("v1",F32)), 9037 qVar"s"]), 9038 TP[Bop(Sub,Var("v",F32),Var("v0",F32)), 9039 qVar"s"])), 9040 TP[TP[Var("v",F32),Var("d",F4)],qVar"s"]), 9041 Apply 9042 (Call("write'R",ATy(qTy,qTy),Var("v",PTy(F32,F4))), 9043 qVar"s")))))) 9044; 9045val dfn'Signed16Multiply32Accumulate_def = Def 9046 ("dfn'Signed16Multiply32Accumulate", 9047 TP[bVar"m_high",bVar"n_high",Var("d",F4),Var("n",F4),Var("m",F4), 9048 Var("a",F4)], 9049 Close 9050 (qVar"state", 9051 Let(TP[Var("v",F16),qVar"s"], 9052 ITE(bVar"n_high", 9053 Let(TP[Var("v",F32),qVar"s"], 9054 Apply 9055 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 9056 qVar"state"), 9057 TP[EX(Var("v",F32),LN 31,LN 16,F16),qVar"s"]), 9058 Let(TP[Var("v",F32),qVar"s"], 9059 Apply 9060 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 9061 qVar"state"), 9062 TP[EX(Var("v",F32),LN 15,LN 0,F16),qVar"s"])), 9063 Let(TP[Var("v0",F16),qVar"s"], 9064 ITE(bVar"m_high", 9065 Let(TP[Var("v",F32),qVar"s"], 9066 Apply 9067 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 9068 qVar"s"), 9069 TP[EX(Var("v",F32),LN 31,LN 16,F16),qVar"s"]), 9070 Let(TP[Var("v",F32),qVar"s"], 9071 Apply 9072 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 9073 qVar"s"), 9074 TP[EX(Var("v",F32),LN 15,LN 0,F16),qVar"s"])), 9075 Let(TP[Var("v1",F32),qVar"s"], 9076 Apply 9077 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("a",F4)),qVar"s"), 9078 Let(iVar"v", 9079 Bop(Add, 9080 Bop(Mul,Mop(Cast iTy,Var("v",F16)), 9081 Mop(Cast iTy,Var("v0",F16))), 9082 Mop(Cast iTy,Var("v1",F32))), 9083 Let(Var("result32",F32),Mop(Cast F32,iVar"v"), 9084 Let(qVar"s", 9085 Apply 9086 (Call 9087 ("write'R",ATy(qTy,qTy), 9088 TP[Var("result32",F32),Var("d",F4)]), 9089 qVar"s"), 9090 Apply 9091 (Call("IncPC",ATy(qTy,qTy),LU), 9092 ITE(Mop(Not, 9093 EQ(iVar"v", 9094 Mop(Cast iTy, 9095 Var("result32",F32)))), 9096 Rupd 9097 ("CPSR", 9098 TP[qVar"s", 9099 Rupd 9100 ("Q", 9101 TP[Dest 9102 ("CPSR",CTy"PSR", 9103 qVar"s"),LT])]), 9104 qVar"s")))))))))) 9105; 9106val dfn'Signed16Multiply32Result_def = Def 9107 ("dfn'Signed16Multiply32Result", 9108 TP[bVar"m_high",bVar"n_high",Var("d",F4),Var("n",F4),Var("m",F4)], 9109 Close 9110 (qVar"state", 9111 Let(TP[Var("v",F16),qVar"s"], 9112 ITE(bVar"n_high", 9113 Let(TP[Var("v",F32),qVar"s"], 9114 Apply 9115 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 9116 qVar"state"), 9117 TP[EX(Var("v",F32),LN 31,LN 16,F16),qVar"s"]), 9118 Let(TP[Var("v",F32),qVar"s"], 9119 Apply 9120 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 9121 qVar"state"), 9122 TP[EX(Var("v",F32),LN 15,LN 0,F16),qVar"s"])), 9123 Let(TP[Var("v0",F16),qVar"s"], 9124 ITE(bVar"m_high", 9125 Let(TP[Var("v",F32),qVar"s"], 9126 Apply 9127 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 9128 qVar"s"), 9129 TP[EX(Var("v",F32),LN 31,LN 16,F16),qVar"s"]), 9130 Let(TP[Var("v",F32),qVar"s"], 9131 Apply 9132 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 9133 qVar"s"), 9134 TP[EX(Var("v",F32),LN 15,LN 0,F16),qVar"s"])), 9135 Apply 9136 (Call("IncPC",ATy(qTy,qTy),LU), 9137 Apply 9138 (Call 9139 ("write'R",ATy(qTy,qTy), 9140 TP[Mop(Cast F32, 9141 Bop(Mul,Mop(Cast iTy,Var("v",F16)), 9142 Mop(Cast iTy,Var("v0",F16)))), 9143 Var("d",F4)]),qVar"s")))))) 9144; 9145val dfn'Signed16x32Multiply32Accumulate_def = Def 9146 ("dfn'Signed16x32Multiply32Accumulate", 9147 TP[bVar"m_high",Var("d",F4),Var("n",F4),Var("m",F4),Var("a",F4)], 9148 Close 9149 (qVar"state", 9150 Let(TP[Var("v",F16),qVar"s"], 9151 ITE(bVar"m_high", 9152 Let(TP[Var("v",F32),qVar"s"], 9153 Apply 9154 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 9155 qVar"state"), 9156 TP[EX(Var("v",F32),LN 31,LN 16,F16),qVar"s"]), 9157 Let(TP[Var("v",F32),qVar"s"], 9158 Apply 9159 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 9160 qVar"state"), 9161 TP[EX(Var("v",F32),LN 15,LN 0,F16),qVar"s"])), 9162 Let(iVar"sh16",Bop(Exp,LI 2,LN 16), 9163 Let(TP[Var("v0",F32),qVar"s"], 9164 Apply 9165 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 9166 Let(TP[iVar"v",qVar"s"], 9167 Let(TP[iVar"v",qVar"s"], 9168 Let(TP[Var("v1",F32),qVar"s"], 9169 Apply 9170 (Call 9171 ("R",ATy(qTy,PTy(F32,qTy)),Var("a",F4)), 9172 qVar"s"), 9173 TP[Bop(Add, 9174 Bop(Mul,Mop(Cast iTy,Var("v0",F32)), 9175 Mop(Cast iTy,Var("v",F16))), 9176 Bop(Mul,Mop(Cast iTy,Var("v1",F32)), 9177 iVar"sh16")),qVar"s"]), 9178 TP[Bop(Div,iVar"v",iVar"sh16"),qVar"s"]), 9179 Let(Var("result32",F32),Mop(Cast F32,iVar"v"), 9180 Let(qVar"s", 9181 Apply 9182 (Call 9183 ("write'R",ATy(qTy,qTy), 9184 TP[Var("result32",F32),Var("d",F4)]), 9185 qVar"s"), 9186 Apply 9187 (Call("IncPC",ATy(qTy,qTy),LU), 9188 ITE(Mop(Not, 9189 EQ(iVar"v", 9190 Mop(Cast iTy, 9191 Var("result32",F32)))), 9192 Rupd 9193 ("CPSR", 9194 TP[qVar"s", 9195 Rupd 9196 ("Q", 9197 TP[Dest 9198 ("CPSR",CTy"PSR", 9199 qVar"s"),LT])]), 9200 qVar"s")))))))))) 9201; 9202val dfn'Signed16x32Multiply32Result_def = Def 9203 ("dfn'Signed16x32Multiply32Result", 9204 TP[bVar"m_high",Var("d",F4),Var("n",F4),Var("m",F4)], 9205 Close 9206 (qVar"state", 9207 Let(TP[Var("v",F16),qVar"s"], 9208 ITE(bVar"m_high", 9209 Let(TP[Var("v",F32),qVar"s"], 9210 Apply 9211 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 9212 qVar"state"), 9213 TP[EX(Var("v",F32),LN 31,LN 16,F16),qVar"s"]), 9214 Let(TP[Var("v",F32),qVar"s"], 9215 Apply 9216 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 9217 qVar"state"), 9218 TP[EX(Var("v",F32),LN 15,LN 0,F16),qVar"s"])), 9219 Let(TP[Var("v0",F32),qVar"s"], 9220 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 9221 Apply 9222 (Call("IncPC",ATy(qTy,qTy),LU), 9223 Apply 9224 (Call 9225 ("write'R",ATy(qTy,qTy), 9226 TP[Mop(Cast F32, 9227 Bop(Div, 9228 Bop(Mul,Mop(Cast iTy,Var("v0",F32)), 9229 Mop(Cast iTy,Var("v",F16))), 9230 Bop(Exp,LI 2,LN 16))),Var("d",F4)]), 9231 qVar"s")))))) 9232; 9233val dfn'Signed16Multiply64Accumulate_def = Def 9234 ("dfn'Signed16Multiply64Accumulate", 9235 TP[bVar"m_high",bVar"n_high",Var("dhi",F4),Var("dlo",F4),Var("n",F4), 9236 Var("m",F4)], 9237 Close 9238 (qVar"state", 9239 Let(TP[Var("v",F16),qVar"s"], 9240 ITE(bVar"n_high", 9241 Let(TP[Var("v",F32),qVar"s"], 9242 Apply 9243 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 9244 qVar"state"), 9245 TP[EX(Var("v",F32),LN 31,LN 16,F16),qVar"s"]), 9246 Let(TP[Var("v",F32),qVar"s"], 9247 Apply 9248 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 9249 qVar"state"), 9250 TP[EX(Var("v",F32),LN 15,LN 0,F16),qVar"s"])), 9251 Let(TP[Var("v0",F16),qVar"s"], 9252 ITE(bVar"m_high", 9253 Let(TP[Var("v",F32),qVar"s"], 9254 Apply 9255 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 9256 qVar"s"), 9257 TP[EX(Var("v",F32),LN 31,LN 16,F16),qVar"s"]), 9258 Let(TP[Var("v",F32),qVar"s"], 9259 Apply 9260 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 9261 qVar"s"), 9262 TP[EX(Var("v",F32),LN 15,LN 0,F16),qVar"s"])), 9263 Let(TP[Var("v1",F32),qVar"s"], 9264 Apply 9265 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("dhi",F4)),qVar"s"), 9266 Let(TP[iVar"v",qVar"s"], 9267 Let(TP[iVar"v1",qVar"s"], 9268 Let(TP[Var("v",F64),qVar"s"], 9269 Let(TP[Var("v2",F32),qVar"s"], 9270 Apply 9271 (Call 9272 ("R",ATy(qTy,PTy(F32,qTy)), 9273 Var("dlo",F4)),qVar"s"), 9274 TP[CC[Var("v1",F32),Var("v2",F32)], 9275 qVar"s"]), 9276 TP[Mop(Cast iTy,Var("v",F64)),qVar"s"]), 9277 TP[Bop(Add, 9278 Bop(Mul,Mop(Cast iTy,Var("v",F16)), 9279 Mop(Cast iTy,Var("v0",F16))),iVar"v1"), 9280 qVar"s"]), 9281 Let(Var("result64",F64),Mop(Cast F64,iVar"v"), 9282 Apply 9283 (Call("IncPC",ATy(qTy,qTy),LU), 9284 Apply 9285 (Call 9286 ("write'R",ATy(qTy,qTy), 9287 TP[EX(Var("result64",F64),LN 31,LN 0, 9288 F32),Var("dlo",F4)]), 9289 Apply 9290 (Call 9291 ("write'R",ATy(qTy,qTy), 9292 TP[EX(Var("result64",F64),LN 63, 9293 LN 32,F32),Var("dhi",F4)]), 9294 qVar"s")))))))))) 9295; 9296val dfn'SignedMultiplyDual_def = Def 9297 ("dfn'SignedMultiplyDual", 9298 TP[bVar"sub",bVar"m_swap",Var("d",F4),Var("n",F4),Var("m",F4), 9299 Var("a",F4)], 9300 Close 9301 (qVar"state", 9302 Let(TP[Var("v",F32),qVar"s"], 9303 ITE(bVar"m_swap", 9304 Let(TP[Var("v",F32),qVar"s"], 9305 Apply 9306 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 9307 qVar"state"), 9308 Apply 9309 (Call 9310 ("ROR",ATy(qTy,PTy(F32,qTy)),TP[Var("v",F32),LN 16]), 9311 qVar"s")), 9312 Apply 9313 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"state")), 9314 Let(TP[Var("v0",F32),qVar"s"], 9315 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 9316 Let(iVar"v0", 9317 Bop(Mul,Mop(Cast iTy,EX(Var("v0",F32),LN 15,LN 0,F16)), 9318 Mop(Cast iTy,EX(Var("v",F32),LN 15,LN 0,F16))), 9319 Let(TP[Var("v1",F32),qVar"s"], 9320 Apply 9321 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 9322 qVar"s"), 9323 Let(iVar"v1", 9324 Bop(Mul, 9325 Mop(Cast iTy, 9326 EX(Var("v1",F32),LN 31,LN 16,F16)), 9327 Mop(Cast iTy, 9328 EX(Var("v",F32),LN 31,LN 16,F16))), 9329 Let(TP[Var("v2",F32),qVar"s"], 9330 ITE(EQ(Var("a",F4),LW(15,4)), 9331 TP[LW(0,32),qVar"s"], 9332 Apply 9333 (Call 9334 ("R",ATy(qTy,PTy(F32,qTy)), 9335 Var("a",F4)),qVar"s")), 9336 Let(iVar"result", 9337 ITE(bVar"sub", 9338 Bop(Add,Bop(Sub,iVar"v0",iVar"v1"), 9339 Mop(Cast iTy,Var("v2",F32))), 9340 Bop(Add,Bop(Add,iVar"v0",iVar"v1"), 9341 Mop(Cast iTy,Var("v2",F32)))), 9342 Let(Var("result32",F32), 9343 Mop(Cast F32,iVar"result"), 9344 Let(qVar"s", 9345 Apply 9346 (Call 9347 ("write'R",ATy(qTy,qTy), 9348 TP[Var("result32",F32), 9349 Var("d",F4)]),qVar"s"), 9350 Apply 9351 (Call("IncPC",ATy(qTy,qTy),LU), 9352 ITE(Mop(Not, 9353 EQ(iVar"result", 9354 Mop(Cast iTy, 9355 Var("result32", 9356 F32)))), 9357 Rupd 9358 ("CPSR", 9359 TP[qVar"s", 9360 Rupd 9361 ("Q", 9362 TP[Dest 9363 ("CPSR", 9364 CTy"PSR", 9365 qVar"s"), 9366 LT])]), 9367 qVar"s"))))))))))))) 9368; 9369val dfn'SignedMultiplyLongDual_def = Def 9370 ("dfn'SignedMultiplyLongDual", 9371 TP[bVar"sub",bVar"m_swap",Var("dhi",F4),Var("dlo",F4),Var("n",F4), 9372 Var("m",F4)], 9373 Close 9374 (qVar"state", 9375 Let(TP[Var("v",F32),qVar"s"], 9376 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state"), 9377 Let(TP[Var("v0",F32),qVar"s"], 9378 ITE(bVar"m_swap", 9379 Let(TP[Var("v",F32),qVar"s"], 9380 Apply 9381 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 9382 qVar"s"), 9383 Apply 9384 (Call 9385 ("ROR",ATy(qTy,PTy(F32,qTy)), 9386 TP[Var("v",F32),LN 16]),qVar"s")), 9387 Apply 9388 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"s")), 9389 Let(iVar"product1", 9390 Bop(Mul,Mop(Cast iTy,EX(Var("v",F32),LN 15,LN 0,F16)), 9391 Mop(Cast iTy,EX(Var("v0",F32),LN 15,LN 0,F16))), 9392 Let(iVar"product2", 9393 Bop(Mul, 9394 Mop(Cast iTy,EX(Var("v",F32),LN 31,LN 16,F16)), 9395 Mop(Cast iTy,EX(Var("v0",F32),LN 31,LN 16,F16))), 9396 Let(TP[Var("v",F32),qVar"s"], 9397 Apply 9398 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("dhi",F4)), 9399 qVar"s"), 9400 Let(TP[Var("v",F64),qVar"s"], 9401 Let(TP[Var("v0",F32),qVar"s"], 9402 Apply 9403 (Call 9404 ("R",ATy(qTy,PTy(F32,qTy)), 9405 Var("dlo",F4)),qVar"s"), 9406 TP[CC[Var("v",F32),Var("v0",F32)], 9407 qVar"s"]), 9408 Let(Var("result64",F64), 9409 Mop(Cast F64, 9410 ITE(bVar"sub", 9411 Bop(Add, 9412 Bop(Sub,iVar"product1", 9413 iVar"product2"), 9414 Mop(Cast iTy,Var("v",F64))), 9415 Bop(Add, 9416 Bop(Add,iVar"product1", 9417 iVar"product2"), 9418 Mop(Cast iTy,Var("v",F64))))), 9419 Apply 9420 (Call("IncPC",ATy(qTy,qTy),LU), 9421 Apply 9422 (Call 9423 ("write'R",ATy(qTy,qTy), 9424 TP[EX(Var("result64",F64), 9425 LN 31,LN 0,F32), 9426 Var("dlo",F4)]), 9427 Apply 9428 (Call 9429 ("write'R",ATy(qTy,qTy), 9430 TP[EX(Var("result64",F64), 9431 LN 63,LN 32,F32), 9432 Var("dhi",F4)]),qVar"s")))))))))))) 9433; 9434val dfn'SignedMostSignificantMultiply_def = Def 9435 ("dfn'SignedMostSignificantMultiply", 9436 TP[bVar"round",Var("d",F4),Var("n",F4),Var("m",F4),Var("a",F4)], 9437 Close 9438 (qVar"state", 9439 Let(TP[Var("v",F32),qVar"s"], 9440 ITE(EQ(Var("a",F4),LW(15,4)),TP[LW(0,32),qVar"state"], 9441 Apply 9442 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("a",F4)),qVar"state")), 9443 Let(TP[Var("v0",F32),qVar"s"], 9444 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 9445 Let(TP[iVar"v",qVar"s"], 9446 Let(TP[iVar"v0",qVar"s"], 9447 Let(TP[Var("v1",F32),qVar"s"], 9448 Apply 9449 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 9450 qVar"s"), 9451 TP[Bop(Mul,Mop(Cast iTy,Var("v0",F32)), 9452 Mop(Cast iTy,Var("v1",F32))),qVar"s"]), 9453 TP[Bop(Add, 9454 Mop(Cast iTy, 9455 Bop(Lsl,Mop(Cast F64,Var("v",F32)),LN 32)), 9456 iVar"v0"),qVar"s"]), 9457 Apply 9458 (Call("IncPC",ATy(qTy,qTy),LU), 9459 Apply 9460 (Call 9461 ("write'R",ATy(qTy,qTy), 9462 TP[EX(Mop(Cast F64, 9463 ITE(bVar"round", 9464 Bop(Add,iVar"v",LI 2147483648), 9465 iVar"v")),LN 63,LN 32,F32), 9466 Var("d",F4)]),qVar"s"))))))) 9467; 9468val dfn'SignedMostSignificantMultiplySubtract_def = Def 9469 ("dfn'SignedMostSignificantMultiplySubtract", 9470 TP[bVar"round",Var("d",F4),Var("n",F4),Var("m",F4),Var("a",F4)], 9471 Close 9472 (qVar"state", 9473 Let(TP[Var("v",F32),qVar"s"], 9474 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("a",F4)),qVar"state"), 9475 Let(TP[iVar"v",qVar"s"], 9476 Let(TP[Var("v0",F32),qVar"s"], 9477 Apply 9478 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 9479 Let(TP[iVar"v0",qVar"s"], 9480 Let(TP[Var("v1",F32),qVar"s"], 9481 Apply 9482 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 9483 qVar"s"), 9484 TP[Bop(Mul,Mop(Cast iTy,Var("v0",F32)), 9485 Mop(Cast iTy,Var("v1",F32))),qVar"s"]), 9486 TP[Bop(Sub, 9487 Mop(Cast iTy, 9488 Bop(Lsl,Mop(Cast F64,Var("v",F32)),LN 32)), 9489 iVar"v0"),qVar"s"])), 9490 Apply 9491 (Call("IncPC",ATy(qTy,qTy),LU), 9492 Apply 9493 (Call 9494 ("write'R",ATy(qTy,qTy), 9495 TP[EX(Mop(Cast F64, 9496 ITE(bVar"round", 9497 Bop(Add,iVar"v",LI 2147483648), 9498 iVar"v")),LN 63,LN 32,F32), 9499 Var("d",F4)]),qVar"s")))))) 9500; 9501val SignedParallelAddSub16_def = Def 9502 ("SignedParallelAddSub16",TP[Var("op",FTy 2),Var("n",F4),Var("m",F4)], 9503 Close 9504 (qVar"state", 9505 Let(TP[Var("v",F32),qVar"s"], 9506 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state"), 9507 Let(TP[Var("v0",F32),qVar"s"], 9508 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"s"), 9509 TP[CS(Var("op",FTy 2), 9510 [(LW(0,2), 9511 TP[Bop(Add, 9512 Mop(Cast iTy,EX(Var("v",F32),LN 15,LN 0,F16)), 9513 Mop(Cast iTy,EX(Var("v0",F32),LN 15,LN 0,F16))), 9514 Bop(Add, 9515 Mop(Cast iTy,EX(Var("v",F32),LN 31,LN 16,F16)), 9516 Mop(Cast iTy, 9517 EX(Var("v0",F32),LN 31,LN 16,F16)))]), 9518 (LW(1,2), 9519 TP[Bop(Sub, 9520 Mop(Cast iTy,EX(Var("v",F32),LN 15,LN 0,F16)), 9521 Mop(Cast iTy, 9522 EX(Var("v0",F32),LN 31,LN 16,F16))), 9523 Bop(Add, 9524 Mop(Cast iTy,EX(Var("v",F32),LN 31,LN 16,F16)), 9525 Mop(Cast iTy,EX(Var("v0",F32),LN 15,LN 0,F16)))]), 9526 (LW(2,2), 9527 TP[Bop(Add, 9528 Mop(Cast iTy,EX(Var("v",F32),LN 15,LN 0,F16)), 9529 Mop(Cast iTy, 9530 EX(Var("v0",F32),LN 31,LN 16,F16))), 9531 Bop(Sub, 9532 Mop(Cast iTy,EX(Var("v",F32),LN 31,LN 16,F16)), 9533 Mop(Cast iTy,EX(Var("v0",F32),LN 15,LN 0,F16)))]), 9534 (LW(3,2), 9535 TP[Bop(Sub, 9536 Mop(Cast iTy,EX(Var("v",F32),LN 15,LN 0,F16)), 9537 Mop(Cast iTy,EX(Var("v0",F32),LN 15,LN 0,F16))), 9538 Bop(Sub, 9539 Mop(Cast iTy,EX(Var("v",F32),LN 31,LN 16,F16)), 9540 Mop(Cast iTy, 9541 EX(Var("v0",F32),LN 31,LN 16,F16)))])]), 9542 qVar"s"])))) 9543; 9544val dfn'SignedAddSub16_def = Def 9545 ("dfn'SignedAddSub16", 9546 TP[Var("op",FTy 2),Var("d",F4),Var("n",F4),Var("m",F4)], 9547 Close 9548 (qVar"state", 9549 Let(TP[Var("v",PTy(iTy,iTy)),qVar"s"], 9550 Apply 9551 (Call 9552 ("SignedParallelAddSub16",ATy(qTy,PTy(PTy(iTy,iTy),qTy)), 9553 TP[Var("op",FTy 2),Var("n",F4),Var("m",F4)]),qVar"state"), 9554 Let(TP[iVar"res1",iVar"res2"],Var("v",PTy(iTy,iTy)), 9555 Let(qVar"s", 9556 Apply 9557 (Call 9558 ("write'R",ATy(qTy,qTy), 9559 TP[CC[Mop(Cast F16,iVar"res2"), 9560 Mop(Cast F16,iVar"res1")],Var("d",F4)]), 9561 qVar"s"), 9562 Let(qVar"s", 9563 Rupd 9564 ("CPSR", 9565 TP[qVar"s", 9566 Rupd 9567 ("GE", 9568 TP[Dest("CPSR",CTy"PSR",qVar"s"), 9569 BFI(LN 1,LN 0, 9570 ITE(Bop(Ge,iVar"res1",LI 0),LW(3,2), 9571 LW(0,2)), 9572 Dest 9573 ("GE",F4, 9574 Dest("CPSR",CTy"PSR",qVar"s")))])]), 9575 Apply 9576 (Call("IncPC",ATy(qTy,qTy),LU), 9577 Rupd 9578 ("CPSR", 9579 TP[qVar"s", 9580 Rupd 9581 ("GE", 9582 TP[Dest("CPSR",CTy"PSR",qVar"s"), 9583 BFI(LN 3,LN 2, 9584 ITE(Bop(Ge,iVar"res2",LI 0), 9585 LW(3,2),LW(0,2)), 9586 Dest 9587 ("GE",F4, 9588 Dest("CPSR",CTy"PSR",qVar"s")))])])))))))) 9589; 9590val dfn'SignedSaturatingAddSub16_def = Def 9591 ("dfn'SignedSaturatingAddSub16", 9592 TP[Var("op",FTy 2),Var("d",F4),Var("n",F4),Var("m",F4)], 9593 Close 9594 (qVar"state", 9595 Let(TP[Var("v",PTy(iTy,iTy)),qVar"s"], 9596 Apply 9597 (Call 9598 ("SignedParallelAddSub16",ATy(qTy,PTy(PTy(iTy,iTy),qTy)), 9599 TP[Var("op",FTy 2),Var("n",F4),Var("m",F4)]),qVar"state"), 9600 Let(TP[iVar"res1",iVar"res2"],Var("v",PTy(iTy,iTy)), 9601 Let(TP[Var("v",F16),qVar"s"], 9602 Apply 9603 (Call 9604 ("SignedSat",ATy(qTy,PTy(F16,qTy)), 9605 TP[iVar"res2",LN 16]),qVar"s"), 9606 Apply 9607 (Call("IncPC",ATy(qTy,qTy),LU), 9608 Let(TP[Var("v",PTy(F32,F4)),qVar"s"], 9609 Let(TP[Var("v",F32),qVar"s"], 9610 Let(TP[Var("v0",F16),qVar"s"], 9611 Apply 9612 (Call 9613 ("SignedSat",ATy(qTy,PTy(F16,qTy)), 9614 TP[iVar"res1",LN 16]),qVar"s"), 9615 TP[CC[Var("v",F16),Var("v0",F16)],qVar"s"]), 9616 TP[TP[Var("v",F32),Var("d",F4)],qVar"s"]), 9617 Apply 9618 (Call 9619 ("write'R",ATy(qTy,qTy),Var("v",PTy(F32,F4))), 9620 qVar"s")))))))) 9621; 9622val dfn'SignedHalvingAddSub16_def = Def 9623 ("dfn'SignedHalvingAddSub16", 9624 TP[Var("op",FTy 2),Var("d",F4),Var("n",F4),Var("m",F4)], 9625 Close 9626 (qVar"state", 9627 Let(TP[Var("v",PTy(iTy,iTy)),qVar"s"], 9628 Apply 9629 (Call 9630 ("SignedParallelAddSub16",ATy(qTy,PTy(PTy(iTy,iTy),qTy)), 9631 TP[Var("op",FTy 2),Var("n",F4),Var("m",F4)]),qVar"state"), 9632 Let(TP[iVar"res1",iVar"res2"],Var("v",PTy(iTy,iTy)), 9633 Apply 9634 (Call("IncPC",ATy(qTy,qTy),LU), 9635 Apply 9636 (Call 9637 ("write'R",ATy(qTy,qTy), 9638 TP[CC[Mop(Cast F16,Bop(Div,iVar"res2",LI 2)), 9639 Mop(Cast F16,Bop(Div,iVar"res1",LI 2))], 9640 Var("d",F4)]),qVar"s")))))) 9641; 9642val SignedParallelAddSub8_def = Def 9643 ("SignedParallelAddSub8",TP[bVar"sub",Var("n",F4),Var("m",F4)], 9644 Close 9645 (qVar"state", 9646 Let(TP[Var("v",F32),qVar"s"], 9647 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state"), 9648 Let(TP[Var("v0",F32),qVar"s"], 9649 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"s"), 9650 TP[ITE(bVar"sub", 9651 TP[Bop(Sub, 9652 Mop(Cast iTy,EX(Var("v",F32),LN 7,LN 0,F8)), 9653 Mop(Cast iTy,EX(Var("v0",F32),LN 7,LN 0,F8))), 9654 Bop(Sub, 9655 Mop(Cast iTy,EX(Var("v",F32),LN 15,LN 8,F8)), 9656 Mop(Cast iTy,EX(Var("v0",F32),LN 15,LN 8,F8))), 9657 Bop(Sub, 9658 Mop(Cast iTy,EX(Var("v",F32),LN 23,LN 16,F8)), 9659 Mop(Cast iTy,EX(Var("v0",F32),LN 23,LN 16,F8))), 9660 Bop(Sub, 9661 Mop(Cast iTy,EX(Var("v",F32),LN 31,LN 24,F8)), 9662 Mop(Cast iTy,EX(Var("v0",F32),LN 31,LN 24,F8)))], 9663 TP[Bop(Add, 9664 Mop(Cast iTy,EX(Var("v",F32),LN 7,LN 0,F8)), 9665 Mop(Cast iTy,EX(Var("v0",F32),LN 7,LN 0,F8))), 9666 Bop(Add, 9667 Mop(Cast iTy,EX(Var("v",F32),LN 15,LN 8,F8)), 9668 Mop(Cast iTy,EX(Var("v0",F32),LN 15,LN 8,F8))), 9669 Bop(Add, 9670 Mop(Cast iTy,EX(Var("v",F32),LN 23,LN 16,F8)), 9671 Mop(Cast iTy,EX(Var("v0",F32),LN 23,LN 16,F8))), 9672 Bop(Add, 9673 Mop(Cast iTy,EX(Var("v",F32),LN 31,LN 24,F8)), 9674 Mop(Cast iTy,EX(Var("v0",F32),LN 31,LN 24,F8)))]), 9675 qVar"s"])))) 9676; 9677val dfn'SignedAddSub8_def = Def 9678 ("dfn'SignedAddSub8",TP[bVar"sub",Var("d",F4),Var("n",F4),Var("m",F4)], 9679 Close 9680 (qVar"state", 9681 Let(TP[Var("v",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))),qVar"s"], 9682 Apply 9683 (Call 9684 ("SignedParallelAddSub8", 9685 ATy(qTy,PTy(PTy(iTy,PTy(iTy,PTy(iTy,iTy))),qTy)), 9686 TP[bVar"sub",Var("n",F4),Var("m",F4)]),qVar"state"), 9687 Let(TP[iVar"res1",iVar"res2",iVar"res3",iVar"res4"], 9688 Var("v",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))), 9689 Let(qVar"s", 9690 Apply 9691 (Call 9692 ("write'R",ATy(qTy,qTy), 9693 TP[CC[Mop(Cast F8,iVar"res4"), 9694 Mop(Cast F8,iVar"res3"), 9695 Mop(Cast F8,iVar"res2"), 9696 Mop(Cast F8,iVar"res1")],Var("d",F4)]), 9697 qVar"s"), 9698 Let(qVar"s", 9699 Rupd 9700 ("CPSR", 9701 TP[qVar"s", 9702 Rupd 9703 ("GE", 9704 TP[Dest("CPSR",CTy"PSR",qVar"s"), 9705 BFI(LN 0,LN 0, 9706 Mop(Cast F1,Bop(Ge,iVar"res1",LI 0)), 9707 Dest 9708 ("GE",F4, 9709 Dest("CPSR",CTy"PSR",qVar"s")))])]), 9710 Let(qVar"s", 9711 Rupd 9712 ("CPSR", 9713 TP[qVar"s", 9714 Rupd 9715 ("GE", 9716 TP[Dest("CPSR",CTy"PSR",qVar"s"), 9717 BFI(LN 1,LN 1, 9718 Mop(Cast F1, 9719 Bop(Ge,iVar"res2",LI 0)), 9720 Dest 9721 ("GE",F4, 9722 Dest("CPSR",CTy"PSR",qVar"s")))])]), 9723 Let(qVar"s", 9724 Rupd 9725 ("CPSR", 9726 TP[qVar"s", 9727 Rupd 9728 ("GE", 9729 TP[Dest("CPSR",CTy"PSR",qVar"s"), 9730 BFI(LN 2,LN 2, 9731 Mop(Cast F1, 9732 Bop(Ge,iVar"res3",LI 0)), 9733 Dest 9734 ("GE",F4, 9735 Dest 9736 ("CPSR",CTy"PSR", 9737 qVar"s")))])]), 9738 Apply 9739 (Call("IncPC",ATy(qTy,qTy),LU), 9740 Rupd 9741 ("CPSR", 9742 TP[qVar"s", 9743 Rupd 9744 ("GE", 9745 TP[Dest("CPSR",CTy"PSR",qVar"s"), 9746 BFI(LN 3,LN 3, 9747 Mop(Cast F1, 9748 Bop(Ge,iVar"res4", 9749 LI 0)), 9750 Dest 9751 ("GE",F4, 9752 Dest 9753 ("CPSR",CTy"PSR", 9754 qVar"s")))])])))))))))) 9755; 9756val dfn'SignedSaturatingAddSub8_def = Def 9757 ("dfn'SignedSaturatingAddSub8", 9758 TP[bVar"sub",Var("d",F4),Var("n",F4),Var("m",F4)], 9759 Close 9760 (qVar"state", 9761 Let(TP[Var("v",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))),qVar"s"], 9762 Apply 9763 (Call 9764 ("SignedParallelAddSub8", 9765 ATy(qTy,PTy(PTy(iTy,PTy(iTy,PTy(iTy,iTy))),qTy)), 9766 TP[bVar"sub",Var("n",F4),Var("m",F4)]),qVar"state"), 9767 Let(TP[iVar"res1",iVar"res2",iVar"res3",iVar"res4"], 9768 Var("v",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))), 9769 Let(TP[Var("v",F8),qVar"s"], 9770 Apply 9771 (Call 9772 ("SignedSat",ATy(qTy,PTy(F8,qTy)), 9773 TP[iVar"res4",LN 8]),qVar"s"), 9774 Apply 9775 (Call("IncPC",ATy(qTy,qTy),LU), 9776 Let(TP[Var("v",PTy(F32,F4)),qVar"s"], 9777 Let(TP[Var("v",F32),qVar"s"], 9778 Let(TP[Var("v0",F8),qVar"s"], 9779 Apply 9780 (Call 9781 ("SignedSat",ATy(qTy,PTy(F8,qTy)), 9782 TP[iVar"res3",LN 8]),qVar"s"), 9783 Let(TP[Var("v0",FTy 24),qVar"s"], 9784 Let(TP[Var("v1",F8),qVar"s"], 9785 Apply 9786 (Call 9787 ("SignedSat", 9788 ATy(qTy,PTy(F8,qTy)), 9789 TP[iVar"res2",LN 8]), 9790 qVar"s"), 9791 Let(TP[Var("v1",F16),qVar"s"], 9792 Let(TP[Var("v2",F8),qVar"s"], 9793 Apply 9794 (Call 9795 ("SignedSat", 9796 ATy(qTy,PTy(F8,qTy)), 9797 TP[iVar"res1",LN 8]), 9798 qVar"s"), 9799 TP[CC[Var("v1",F8), 9800 Var("v2",F8)], 9801 qVar"s"]), 9802 TP[CC[Var("v0",F8), 9803 Var("v1",F16)],qVar"s"])), 9804 TP[CC[Var("v",F8),Var("v0",FTy 24)], 9805 qVar"s"])), 9806 TP[TP[Var("v",F32),Var("d",F4)],qVar"s"]), 9807 Apply 9808 (Call 9809 ("write'R",ATy(qTy,qTy),Var("v",PTy(F32,F4))), 9810 qVar"s")))))))) 9811; 9812val dfn'SignedHalvingAddSub8_def = Def 9813 ("dfn'SignedHalvingAddSub8", 9814 TP[bVar"sub",Var("d",F4),Var("n",F4),Var("m",F4)], 9815 Close 9816 (qVar"state", 9817 Let(TP[Var("v",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))),qVar"s"], 9818 Apply 9819 (Call 9820 ("SignedParallelAddSub8", 9821 ATy(qTy,PTy(PTy(iTy,PTy(iTy,PTy(iTy,iTy))),qTy)), 9822 TP[bVar"sub",Var("n",F4),Var("m",F4)]),qVar"state"), 9823 Let(TP[iVar"res1",iVar"res2",iVar"res3",iVar"res4"], 9824 Var("v",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))), 9825 Apply 9826 (Call("IncPC",ATy(qTy,qTy),LU), 9827 Apply 9828 (Call 9829 ("write'R",ATy(qTy,qTy), 9830 TP[CC[Mop(Cast F8,Bop(Div,iVar"res4",LI 2)), 9831 Mop(Cast F8,Bop(Div,iVar"res3",LI 2)), 9832 Mop(Cast F8,Bop(Div,iVar"res2",LI 2)), 9833 Mop(Cast F8,Bop(Div,iVar"res1",LI 2))], 9834 Var("d",F4)]),qVar"s")))))) 9835; 9836val UnsignedParallelAddSub16_def = Def 9837 ("UnsignedParallelAddSub16",TP[Var("op",FTy 2),Var("n",F4),Var("m",F4)], 9838 Close 9839 (qVar"state", 9840 Let(TP[Var("v",F32),qVar"s"], 9841 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state"), 9842 Let(TP[Var("v0",F32),qVar"s"], 9843 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"s"), 9844 TP[CS(Var("op",FTy 2), 9845 [(LW(0,2), 9846 TP[Bop(Add, 9847 Call 9848 ("UInt",iTy,EX(Var("v",F32),LN 15,LN 0,F16)), 9849 Call 9850 ("UInt",iTy, 9851 EX(Var("v0",F32),LN 15,LN 0,F16))), 9852 Bop(Add, 9853 Call 9854 ("UInt",iTy, 9855 EX(Var("v",F32),LN 31,LN 16,F16)), 9856 Call 9857 ("UInt",iTy, 9858 EX(Var("v0",F32),LN 31,LN 16,F16)))]), 9859 (LW(1,2), 9860 TP[Bop(Sub, 9861 Call 9862 ("UInt",iTy,EX(Var("v",F32),LN 15,LN 0,F16)), 9863 Call 9864 ("UInt",iTy, 9865 EX(Var("v0",F32),LN 31,LN 16,F16))), 9866 Bop(Add, 9867 Call 9868 ("UInt",iTy, 9869 EX(Var("v",F32),LN 31,LN 16,F16)), 9870 Call 9871 ("UInt",iTy, 9872 EX(Var("v0",F32),LN 15,LN 0,F16)))]), 9873 (LW(2,2), 9874 TP[Bop(Add, 9875 Call 9876 ("UInt",iTy,EX(Var("v",F32),LN 15,LN 0,F16)), 9877 Call 9878 ("UInt",iTy, 9879 EX(Var("v0",F32),LN 31,LN 16,F16))), 9880 Bop(Sub, 9881 Call 9882 ("UInt",iTy, 9883 EX(Var("v",F32),LN 31,LN 16,F16)), 9884 Call 9885 ("UInt",iTy, 9886 EX(Var("v0",F32),LN 15,LN 0,F16)))]), 9887 (LW(3,2), 9888 TP[Bop(Sub, 9889 Call 9890 ("UInt",iTy,EX(Var("v",F32),LN 15,LN 0,F16)), 9891 Call 9892 ("UInt",iTy, 9893 EX(Var("v0",F32),LN 15,LN 0,F16))), 9894 Bop(Sub, 9895 Call 9896 ("UInt",iTy, 9897 EX(Var("v",F32),LN 31,LN 16,F16)), 9898 Call 9899 ("UInt",iTy, 9900 EX(Var("v0",F32),LN 31,LN 16,F16)))])]), 9901 qVar"s"])))) 9902; 9903val dfn'UnsignedAddSub16_def = Def 9904 ("dfn'UnsignedAddSub16", 9905 TP[Var("op",FTy 2),Var("d",F4),Var("n",F4),Var("m",F4)], 9906 Close 9907 (qVar"state", 9908 Let(TP[Var("v",PTy(iTy,iTy)),qVar"s"], 9909 Apply 9910 (Call 9911 ("UnsignedParallelAddSub16",ATy(qTy,PTy(PTy(iTy,iTy),qTy)), 9912 TP[Var("op",FTy 2),Var("n",F4),Var("m",F4)]),qVar"state"), 9913 Let(TP[iVar"res1",iVar"res2"],Var("v",PTy(iTy,iTy)), 9914 Let(qVar"s", 9915 Apply 9916 (Call 9917 ("write'R",ATy(qTy,qTy), 9918 TP[CC[Mop(Cast F16,iVar"res2"), 9919 Mop(Cast F16,iVar"res1")],Var("d",F4)]), 9920 qVar"s"), 9921 Let(qVar"s", 9922 Rupd 9923 ("CPSR", 9924 TP[qVar"s", 9925 Rupd 9926 ("GE", 9927 TP[Dest("CPSR",CTy"PSR",qVar"s"), 9928 BFI(LN 1,LN 0, 9929 ITE(Bop(Ge,iVar"res1", 9930 ITE(Bop(In,Var("op",FTy 2), 9931 SL[LW(1,2),LW(3,2)]), 9932 LI 0,LI 65536)),LW(3,2), 9933 LW(0,2)), 9934 Dest 9935 ("GE",F4, 9936 Dest("CPSR",CTy"PSR",qVar"s")))])]), 9937 Apply 9938 (Call("IncPC",ATy(qTy,qTy),LU), 9939 Rupd 9940 ("CPSR", 9941 TP[qVar"s", 9942 Rupd 9943 ("GE", 9944 TP[Dest("CPSR",CTy"PSR",qVar"s"), 9945 BFI(LN 3,LN 2, 9946 ITE(Bop(Ge,iVar"res2", 9947 ITE(Bop(In, 9948 Var("op",FTy 2), 9949 SL[LW(2,2), 9950 LW(3,2)]), 9951 LI 0,LI 65536)), 9952 LW(3,2),LW(0,2)), 9953 Dest 9954 ("GE",F4, 9955 Dest("CPSR",CTy"PSR",qVar"s")))])])))))))) 9956; 9957val dfn'UnsignedSaturatingAddSub16_def = Def 9958 ("dfn'UnsignedSaturatingAddSub16", 9959 TP[Var("op",FTy 2),Var("d",F4),Var("n",F4),Var("m",F4)], 9960 Close 9961 (qVar"state", 9962 Let(TP[Var("v",PTy(iTy,iTy)),qVar"s"], 9963 Apply 9964 (Call 9965 ("UnsignedParallelAddSub16",ATy(qTy,PTy(PTy(iTy,iTy),qTy)), 9966 TP[Var("op",FTy 2),Var("n",F4),Var("m",F4)]),qVar"state"), 9967 Let(TP[iVar"res1",iVar"res2"],Var("v",PTy(iTy,iTy)), 9968 Let(TP[Var("v",F16),qVar"s"], 9969 Apply 9970 (Call 9971 ("UnsignedSat",ATy(qTy,PTy(F16,qTy)), 9972 TP[iVar"res2",LN 16]),qVar"s"), 9973 Apply 9974 (Call("IncPC",ATy(qTy,qTy),LU), 9975 Let(TP[Var("v",PTy(F32,F4)),qVar"s"], 9976 Let(TP[Var("v",F32),qVar"s"], 9977 Let(TP[Var("v0",F16),qVar"s"], 9978 Apply 9979 (Call 9980 ("UnsignedSat", 9981 ATy(qTy,PTy(F16,qTy)), 9982 TP[iVar"res1",LN 16]),qVar"s"), 9983 TP[CC[Var("v",F16),Var("v0",F16)],qVar"s"]), 9984 TP[TP[Var("v",F32),Var("d",F4)],qVar"s"]), 9985 Apply 9986 (Call 9987 ("write'R",ATy(qTy,qTy),Var("v",PTy(F32,F4))), 9988 qVar"s")))))))) 9989; 9990val dfn'UnsignedHalvingAddSub16_def = Def 9991 ("dfn'UnsignedHalvingAddSub16", 9992 TP[Var("op",FTy 2),Var("d",F4),Var("n",F4),Var("m",F4)], 9993 Close 9994 (qVar"state", 9995 Let(TP[Var("v",PTy(iTy,iTy)),qVar"s"], 9996 Apply 9997 (Call 9998 ("UnsignedParallelAddSub16",ATy(qTy,PTy(PTy(iTy,iTy),qTy)), 9999 TP[Var("op",FTy 2),Var("n",F4),Var("m",F4)]),qVar"state"), 10000 Let(TP[iVar"res1",iVar"res2"],Var("v",PTy(iTy,iTy)), 10001 Apply 10002 (Call("IncPC",ATy(qTy,qTy),LU), 10003 Apply 10004 (Call 10005 ("write'R",ATy(qTy,qTy), 10006 TP[CC[Mop(Cast F16,Bop(Div,iVar"res2",LI 2)), 10007 Mop(Cast F16,Bop(Div,iVar"res1",LI 2))], 10008 Var("d",F4)]),qVar"s")))))) 10009; 10010val UnsignedParallelAddSub8_def = Def 10011 ("UnsignedParallelAddSub8",TP[bVar"sub",Var("n",F4),Var("m",F4)], 10012 Close 10013 (qVar"state", 10014 Let(TP[Var("v",F32),qVar"s"], 10015 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state"), 10016 Let(TP[Var("v0",F32),qVar"s"], 10017 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"s"), 10018 TP[ITE(bVar"sub", 10019 TP[Bop(Sub, 10020 Call("UInt",iTy,EX(Var("v",F32),LN 7,LN 0,F8)), 10021 Call 10022 ("UInt",iTy,EX(Var("v0",F32),LN 7,LN 0,F8))), 10023 Bop(Sub, 10024 Call 10025 ("UInt",iTy,EX(Var("v",F32),LN 15,LN 8,F8)), 10026 Call 10027 ("UInt",iTy,EX(Var("v0",F32),LN 15,LN 8,F8))), 10028 Bop(Sub, 10029 Call 10030 ("UInt",iTy,EX(Var("v",F32),LN 23,LN 16,F8)), 10031 Call 10032 ("UInt",iTy,EX(Var("v0",F32),LN 23,LN 16,F8))), 10033 Bop(Sub, 10034 Call 10035 ("UInt",iTy,EX(Var("v",F32),LN 31,LN 24,F8)), 10036 Call 10037 ("UInt",iTy,EX(Var("v0",F32),LN 31,LN 24,F8)))], 10038 TP[Bop(Add, 10039 Call("UInt",iTy,EX(Var("v",F32),LN 7,LN 0,F8)), 10040 Call 10041 ("UInt",iTy,EX(Var("v0",F32),LN 7,LN 0,F8))), 10042 Bop(Add, 10043 Call 10044 ("UInt",iTy,EX(Var("v",F32),LN 15,LN 8,F8)), 10045 Call 10046 ("UInt",iTy,EX(Var("v0",F32),LN 15,LN 8,F8))), 10047 Bop(Add, 10048 Call 10049 ("UInt",iTy,EX(Var("v",F32),LN 23,LN 16,F8)), 10050 Call 10051 ("UInt",iTy,EX(Var("v0",F32),LN 23,LN 16,F8))), 10052 Bop(Add, 10053 Call 10054 ("UInt",iTy,EX(Var("v",F32),LN 31,LN 24,F8)), 10055 Call 10056 ("UInt",iTy,EX(Var("v0",F32),LN 31,LN 24,F8)))]), 10057 qVar"s"])))) 10058; 10059val dfn'UnsignedAddSub8_def = Def 10060 ("dfn'UnsignedAddSub8", 10061 TP[bVar"sub",Var("d",F4),Var("n",F4),Var("m",F4)], 10062 Close 10063 (qVar"state", 10064 Let(TP[Var("v",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))),qVar"s"], 10065 Apply 10066 (Call 10067 ("UnsignedParallelAddSub8", 10068 ATy(qTy,PTy(PTy(iTy,PTy(iTy,PTy(iTy,iTy))),qTy)), 10069 TP[bVar"sub",Var("n",F4),Var("m",F4)]),qVar"state"), 10070 Let(TP[iVar"res1",iVar"res2",iVar"res3",iVar"res4"], 10071 Var("v",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))), 10072 Let(qVar"s", 10073 Apply 10074 (Call 10075 ("write'R",ATy(qTy,qTy), 10076 TP[CC[Mop(Cast F8,iVar"res4"), 10077 Mop(Cast F8,iVar"res3"), 10078 Mop(Cast F8,iVar"res2"), 10079 Mop(Cast F8,iVar"res1")],Var("d",F4)]), 10080 qVar"s"), 10081 Let(iVar"ge_lim",ITE(bVar"sub",LI 0,LI 256), 10082 Let(qVar"s", 10083 Rupd 10084 ("CPSR", 10085 TP[qVar"s", 10086 Rupd 10087 ("GE", 10088 TP[Dest("CPSR",CTy"PSR",qVar"s"), 10089 BFI(LN 0,LN 0, 10090 Mop(Cast F1, 10091 Bop(Ge,iVar"res1", 10092 iVar"ge_lim")), 10093 Dest 10094 ("GE",F4, 10095 Dest("CPSR",CTy"PSR",qVar"s")))])]), 10096 Let(qVar"s", 10097 Rupd 10098 ("CPSR", 10099 TP[qVar"s", 10100 Rupd 10101 ("GE", 10102 TP[Dest("CPSR",CTy"PSR",qVar"s"), 10103 BFI(LN 1,LN 1, 10104 Mop(Cast F1, 10105 Bop(Ge,iVar"res2", 10106 iVar"ge_lim")), 10107 Dest 10108 ("GE",F4, 10109 Dest 10110 ("CPSR",CTy"PSR", 10111 qVar"s")))])]), 10112 Let(qVar"s", 10113 Rupd 10114 ("CPSR", 10115 TP[qVar"s", 10116 Rupd 10117 ("GE", 10118 TP[Dest 10119 ("CPSR",CTy"PSR",qVar"s"), 10120 BFI(LN 2,LN 2, 10121 Mop(Cast F1, 10122 Bop(Ge,iVar"res3", 10123 iVar"ge_lim")), 10124 Dest 10125 ("GE",F4, 10126 Dest 10127 ("CPSR",CTy"PSR", 10128 qVar"s")))])]), 10129 Apply 10130 (Call("IncPC",ATy(qTy,qTy),LU), 10131 Rupd 10132 ("CPSR", 10133 TP[qVar"s", 10134 Rupd 10135 ("GE", 10136 TP[Dest 10137 ("CPSR",CTy"PSR", 10138 qVar"s"), 10139 BFI(LN 3,LN 3, 10140 Mop(Cast F1, 10141 Bop(Ge, 10142 iVar"res4", 10143 iVar"ge_lim")), 10144 Dest 10145 ("GE",F4, 10146 Dest 10147 ("CPSR", 10148 CTy"PSR", 10149 qVar"s")))])]))))))))))) 10150; 10151val dfn'UnsignedSaturatingAddSub8_def = Def 10152 ("dfn'UnsignedSaturatingAddSub8", 10153 TP[bVar"sub",Var("d",F4),Var("n",F4),Var("m",F4)], 10154 Close 10155 (qVar"state", 10156 Let(TP[Var("v",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))),qVar"s"], 10157 Apply 10158 (Call 10159 ("UnsignedParallelAddSub8", 10160 ATy(qTy,PTy(PTy(iTy,PTy(iTy,PTy(iTy,iTy))),qTy)), 10161 TP[bVar"sub",Var("n",F4),Var("m",F4)]),qVar"state"), 10162 Let(TP[iVar"res1",iVar"res2",iVar"res3",iVar"res4"], 10163 Var("v",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))), 10164 Let(TP[Var("v",F8),qVar"s"], 10165 Apply 10166 (Call 10167 ("UnsignedSat",ATy(qTy,PTy(F8,qTy)), 10168 TP[iVar"res4",LN 8]),qVar"s"), 10169 Apply 10170 (Call("IncPC",ATy(qTy,qTy),LU), 10171 Let(TP[Var("v",PTy(F32,F4)),qVar"s"], 10172 Let(TP[Var("v",F32),qVar"s"], 10173 Let(TP[Var("v0",F8),qVar"s"], 10174 Apply 10175 (Call 10176 ("UnsignedSat",ATy(qTy,PTy(F8,qTy)), 10177 TP[iVar"res3",LN 8]),qVar"s"), 10178 Let(TP[Var("v0",FTy 24),qVar"s"], 10179 Let(TP[Var("v1",F8),qVar"s"], 10180 Apply 10181 (Call 10182 ("UnsignedSat", 10183 ATy(qTy,PTy(F8,qTy)), 10184 TP[iVar"res2",LN 8]), 10185 qVar"s"), 10186 Let(TP[Var("v1",F16),qVar"s"], 10187 Let(TP[Var("v2",F8),qVar"s"], 10188 Apply 10189 (Call 10190 ("UnsignedSat", 10191 ATy(qTy,PTy(F8,qTy)), 10192 TP[iVar"res1",LN 8]), 10193 qVar"s"), 10194 TP[CC[Var("v1",F8), 10195 Var("v2",F8)], 10196 qVar"s"]), 10197 TP[CC[Var("v0",F8), 10198 Var("v1",F16)],qVar"s"])), 10199 TP[CC[Var("v",F8),Var("v0",FTy 24)], 10200 qVar"s"])), 10201 TP[TP[Var("v",F32),Var("d",F4)],qVar"s"]), 10202 Apply 10203 (Call 10204 ("write'R",ATy(qTy,qTy),Var("v",PTy(F32,F4))), 10205 qVar"s")))))))) 10206; 10207val dfn'UnsignedHalvingAddSub8_def = Def 10208 ("dfn'UnsignedHalvingAddSub8", 10209 TP[bVar"sub",Var("d",F4),Var("n",F4),Var("m",F4)], 10210 Close 10211 (qVar"state", 10212 Let(TP[Var("v",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))),qVar"s"], 10213 Apply 10214 (Call 10215 ("UnsignedParallelAddSub8", 10216 ATy(qTy,PTy(PTy(iTy,PTy(iTy,PTy(iTy,iTy))),qTy)), 10217 TP[bVar"sub",Var("n",F4),Var("m",F4)]),qVar"state"), 10218 Let(TP[iVar"res1",iVar"res2",iVar"res3",iVar"res4"], 10219 Var("v",PTy(iTy,PTy(iTy,PTy(iTy,iTy)))), 10220 Apply 10221 (Call("IncPC",ATy(qTy,qTy),LU), 10222 Apply 10223 (Call 10224 ("write'R",ATy(qTy,qTy), 10225 TP[CC[Mop(Cast F8,Bop(Div,iVar"res4",LI 2)), 10226 Mop(Cast F8,Bop(Div,iVar"res3",LI 2)), 10227 Mop(Cast F8,Bop(Div,iVar"res2",LI 2)), 10228 Mop(Cast F8,Bop(Div,iVar"res1",LI 2))], 10229 Var("d",F4)]),qVar"s")))))) 10230; 10231val dfn'UnsignedSumAbsoluteDifferences_def = Def 10232 ("dfn'UnsignedSumAbsoluteDifferences", 10233 TP[Var("d",F4),Var("n",F4),Var("m",F4),Var("a",F4)], 10234 Close 10235 (qVar"state", 10236 Let(TP[Var("v",F32),qVar"s"], 10237 ITE(EQ(Var("a",F4),LW(15,4)),TP[LW(0,32),qVar"state"], 10238 Apply 10239 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("a",F4)),qVar"state")), 10240 Let(TP[Var("v0",F32),qVar"s"], 10241 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 10242 Let(TP[Var("v1",F32),qVar"s"], 10243 Apply 10244 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"s"), 10245 Apply 10246 (Call("IncPC",ATy(qTy,qTy),LU), 10247 Apply 10248 (Call 10249 ("write'R",ATy(qTy,qTy), 10250 TP[Mop(Cast F32, 10251 Bop(Add, 10252 Bop(Add, 10253 Bop(Add, 10254 Bop(Add, 10255 Call 10256 ("UInt",iTy, 10257 Var("v",F32)), 10258 Mop(Abs, 10259 Bop(Sub, 10260 Call 10261 ("UInt",iTy, 10262 EX(Var("v0", 10263 F32), 10264 LN 7,LN 0, 10265 F8)), 10266 Call 10267 ("UInt",iTy, 10268 EX(Var("v1", 10269 F32), 10270 LN 7,LN 0, 10271 F8))))), 10272 Mop(Abs, 10273 Bop(Sub, 10274 Call 10275 ("UInt",iTy, 10276 EX(Var("v0",F32), 10277 LN 15,LN 8,F8)), 10278 Call 10279 ("UInt",iTy, 10280 EX(Var("v1",F32), 10281 LN 15,LN 8,F8))))), 10282 Mop(Abs, 10283 Bop(Sub, 10284 Call 10285 ("UInt",iTy, 10286 EX(Var("v0",F32), 10287 LN 23,LN 16,F8)), 10288 Call 10289 ("UInt",iTy, 10290 EX(Var("v1",F32), 10291 LN 23,LN 16,F8))))), 10292 Mop(Abs, 10293 Bop(Sub, 10294 Call 10295 ("UInt",iTy, 10296 EX(Var("v0",F32),LN 31, 10297 LN 24,F8)), 10298 Call 10299 ("UInt",iTy, 10300 EX(Var("v1",F32),LN 31, 10301 LN 24,F8)))))), 10302 Var("d",F4)]),qVar"s"))))))) 10303; 10304val GenerateIntegerZeroDivide_def = Def 10305 ("GenerateIntegerZeroDivide",AVar uTy, 10306 Close 10307 (qVar"state", 10308 Apply(Call("TakeUndefInstrException",ATy(qTy,qTy),LU),qVar"state"))) 10309; 10310val dfn'Divide_def = Def 10311 ("dfn'Divide",TP[bVar"unsigned",Var("d",F4),Var("n",F4),Var("m",F4)], 10312 Close 10313 (qVar"state", 10314 Let(TP[Var("v",F32),qVar"s"], 10315 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"state"), 10316 ITE(EQ(Var("v",F32),LW(0,32)), 10317 ITE(Apply 10318 (Call 10319 ("IntegerZeroDivideTrappingEnabled",ATy(qTy,bTy),LU), 10320 qVar"s"), 10321 Apply 10322 (Call("GenerateIntegerZeroDivide",ATy(qTy,qTy),LU), 10323 qVar"s"), 10324 Apply 10325 (Call("IncPC",ATy(qTy,qTy),LU), 10326 Apply 10327 (Call 10328 ("write'R",ATy(qTy,qTy),TP[LW(0,32),Var("d",F4)]), 10329 qVar"s"))), 10330 Let(TP[Var("v",F32),qVar"s"], 10331 ITE(bVar"unsigned", 10332 Let(TP[Var("v",F32),qVar"s"], 10333 Apply 10334 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 10335 qVar"s"), 10336 Let(TP[Var("v0",F32),qVar"s"], 10337 Apply 10338 (Call 10339 ("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 10340 qVar"s"), 10341 TP[Bop(Div,Var("v",F32),Var("v0",F32)), 10342 qVar"s"])), 10343 Let(TP[Var("v",F32),qVar"s"], 10344 Apply 10345 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 10346 qVar"s"), 10347 Let(TP[Var("v0",F32),qVar"s"], 10348 Apply 10349 (Call 10350 ("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 10351 qVar"s"), 10352 TP[Bop(Quot,Var("v",F32),Var("v0",F32)), 10353 qVar"s"]))), 10354 Apply 10355 (Call("IncPC",ATy(qTy,qTy),LU), 10356 Apply 10357 (Call 10358 ("write'R",ATy(qTy,qTy), 10359 TP[Var("v",F32),Var("d",F4)]),qVar"s"))))))) 10360; 10361val dfn'PackHalfword_def = Def 10362 ("dfn'PackHalfword", 10363 TP[Var("shift_t",CTy"SRType"),nVar"shift_n",bVar"tbform",Var("d",F4), 10364 Var("n",F4),Var("m",F4)], 10365 Close 10366 (qVar"state", 10367 Let(TP[Var("v",F32),qVar"s"], 10368 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"state"), 10369 Let(TP[Var("v",F32),qVar"s"], 10370 Apply 10371 (Call 10372 ("Shift",ATy(qTy,PTy(F32,qTy)), 10373 TP[Var("v",F32),Var("shift_t",CTy"SRType"), 10374 nVar"shift_n", 10375 Dest("C",bTy,Dest("CPSR",CTy"PSR",qVar"s"))]), 10376 qVar"s"), 10377 Let(TP[Var("v0",F16),qVar"s"], 10378 ITE(bVar"tbform", 10379 TP[EX(Var("v",F32),LN 15,LN 0,F16),qVar"s"], 10380 Let(TP[Var("v",F32),qVar"s"], 10381 Apply 10382 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 10383 qVar"s"), 10384 TP[EX(Var("v",F32),LN 15,LN 0,F16),qVar"s"])), 10385 Let(TP[Var("v1",F16),qVar"s"], 10386 ITE(bVar"tbform", 10387 Let(TP[Var("v",F32),qVar"s"], 10388 Apply 10389 (Call 10390 ("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 10391 qVar"s"), 10392 TP[EX(Var("v",F32),LN 31,LN 16,F16),qVar"s"]), 10393 TP[EX(Var("v",F32),LN 31,LN 16,F16),qVar"s"]), 10394 Apply 10395 (Call("IncPC",ATy(qTy,qTy),LU), 10396 Apply 10397 (Call 10398 ("write'R",ATy(qTy,qTy), 10399 TP[CC[Var("v1",F16),Var("v0",F16)], 10400 Var("d",F4)]),qVar"s")))))))) 10401; 10402val dfn'Saturate_def = Def 10403 ("dfn'Saturate", 10404 TP[Var("shift_t",CTy"SRType"),nVar"shift_n",nVar"saturate_to", 10405 bVar"unsigned",Var("d",F4),Var("n",F4)], 10406 Close 10407 (qVar"state", 10408 Let(TP[Var("v",F32),qVar"s"], 10409 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state"), 10410 Let(TP[Var("v",F32),qVar"s"], 10411 Apply 10412 (Call 10413 ("Shift",ATy(qTy,PTy(F32,qTy)), 10414 TP[Var("v",F32),Var("shift_t",CTy"SRType"), 10415 nVar"shift_n", 10416 Dest("C",bTy,Dest("CPSR",CTy"PSR",qVar"s"))]), 10417 qVar"s"), 10418 Let(TP[Var("v",PTy(F32,bTy)),qVar"s"], 10419 ITE(bVar"unsigned", 10420 Apply 10421 (Call 10422 ("UnsignedSatQ",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 10423 TP[Mop(Cast iTy,Var("v",F32)), 10424 nVar"saturate_to"]),qVar"s"), 10425 Apply 10426 (Call 10427 ("SignedSatQ",ATy(qTy,PTy(PTy(F32,bTy),qTy)), 10428 TP[Mop(Cast iTy,Var("v",F32)), 10429 nVar"saturate_to"]),qVar"s")), 10430 Let(TP[Var("result",F32),bVar"sat"], 10431 Var("v",PTy(F32,bTy)), 10432 Let(qVar"s", 10433 Apply 10434 (Call 10435 ("write'R",ATy(qTy,qTy), 10436 TP[ITE(bVar"unsigned",Var("result",F32), 10437 Call 10438 ("SignExtendFrom",F32, 10439 TP[Var("result",F32), 10440 nVar"saturate_to"])), 10441 Var("d",F4)]),qVar"s"), 10442 Apply 10443 (Call("IncPC",ATy(qTy,qTy),LU), 10444 ITE(bVar"sat", 10445 Rupd 10446 ("CPSR", 10447 TP[qVar"s", 10448 Rupd 10449 ("Q", 10450 TP[Dest("CPSR",CTy"PSR",qVar"s"), 10451 LT])]),qVar"s"))))))))) 10452; 10453val dfn'Saturate16_def = Def 10454 ("dfn'Saturate16", 10455 TP[nVar"saturate_to",bVar"unsigned",Var("d",F4),Var("n",F4)], 10456 Close 10457 (qVar"state", 10458 Let(TP[Var("v",F32),qVar"s"], 10459 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state"), 10460 Let(TP[Var("v",PTy(PTy(F16,bTy),PTy(F16,bTy))),qVar"s"], 10461 ITE(bVar"unsigned", 10462 Let(TP[Var("v0",PTy(F16,bTy)),qVar"s"], 10463 Apply 10464 (Call 10465 ("UnsignedSatQ",ATy(qTy,PTy(PTy(F16,bTy),qTy)), 10466 TP[Mop(Cast iTy, 10467 EX(Var("v",F32),LN 15,LN 0,F16)), 10468 nVar"saturate_to"]),qVar"s"), 10469 Let(TP[Var("v1",PTy(F16,bTy)),qVar"s"], 10470 Apply 10471 (Call 10472 ("UnsignedSatQ", 10473 ATy(qTy,PTy(PTy(F16,bTy),qTy)), 10474 TP[Mop(Cast iTy, 10475 EX(Var("v",F32),LN 31,LN 16,F16)), 10476 nVar"saturate_to"]),qVar"s"), 10477 TP[TP[Var("v0",PTy(F16,bTy)), 10478 Var("v1",PTy(F16,bTy))],qVar"s"])), 10479 Let(TP[Var("v0",PTy(F16,bTy)),qVar"s"], 10480 Apply 10481 (Call 10482 ("SignedSatQ",ATy(qTy,PTy(PTy(F16,bTy),qTy)), 10483 TP[Mop(Cast iTy, 10484 EX(Var("v",F32),LN 15,LN 0,F16)), 10485 nVar"saturate_to"]),qVar"s"), 10486 Let(TP[Var("v1",PTy(F16,bTy)),qVar"s"], 10487 Apply 10488 (Call 10489 ("SignedSatQ", 10490 ATy(qTy,PTy(PTy(F16,bTy),qTy)), 10491 TP[Mop(Cast iTy, 10492 EX(Var("v",F32),LN 31,LN 16,F16)), 10493 nVar"saturate_to"]),qVar"s"), 10494 TP[TP[Var("v0",PTy(F16,bTy)), 10495 Var("v1",PTy(F16,bTy))],qVar"s"]))), 10496 Let(TP[TP[Var("result1",F16),bVar"sat1"],Var("result2",F16), 10497 bVar"sat2"],Var("v",PTy(PTy(F16,bTy),PTy(F16,bTy))), 10498 Let(qVar"s", 10499 Apply 10500 (Call 10501 ("write'R",ATy(qTy,qTy), 10502 TP[ITE(bVar"unsigned", 10503 CC[Var("result2",F16), 10504 Var("result1",F16)], 10505 CC[Call 10506 ("SignExtendFrom",F16, 10507 TP[Var("result2",F16), 10508 nVar"saturate_to"]), 10509 Call 10510 ("SignExtendFrom",F16, 10511 TP[Var("result1",F16), 10512 nVar"saturate_to"])]), 10513 Var("d",F4)]),qVar"s"), 10514 Apply 10515 (Call("IncPC",ATy(qTy,qTy),LU), 10516 ITE(Bop(Or,bVar"sat1",bVar"sat2"), 10517 Rupd 10518 ("CPSR", 10519 TP[qVar"s", 10520 Rupd 10521 ("Q", 10522 TP[Dest("CPSR",CTy"PSR",qVar"s"),LT])]), 10523 qVar"s")))))))) 10524; 10525val dfn'ExtendByte_def = Def 10526 ("dfn'ExtendByte", 10527 TP[bVar"unsigned",Var("d",F4),Var("n",F4),Var("m",F4),nVar"rotation"], 10528 Close 10529 (qVar"state", 10530 Let(TP[Var("v",F32),qVar"s"], 10531 ITE(EQ(Var("n",F4),LW(15,4)),TP[LW(0,32),qVar"state"], 10532 Apply 10533 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state")), 10534 Let(TP[Var("v0",F32),qVar"s"], 10535 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"s"), 10536 Let(TP[Var("v0",F32),qVar"s"], 10537 Apply 10538 (Call 10539 ("ROR",ATy(qTy,PTy(F32,qTy)), 10540 TP[Var("v0",F32),nVar"rotation"]),qVar"s"), 10541 Apply 10542 (Call("IncPC",ATy(qTy,qTy),LU), 10543 Apply 10544 (Call 10545 ("write'R",ATy(qTy,qTy), 10546 TP[Bop(Add,Var("v",F32), 10547 Call 10548 ("Extend",F32, 10549 TP[bVar"unsigned", 10550 EX(Var("v0",F32),LN 7,LN 0,F8)])), 10551 Var("d",F4)]),qVar"s"))))))) 10552; 10553val dfn'ExtendByte16_def = Def 10554 ("dfn'ExtendByte16", 10555 TP[bVar"unsigned",Var("d",F4),Var("n",F4),Var("m",F4),nVar"rotation"], 10556 Close 10557 (qVar"state", 10558 Let(TP[Var("v",F32),qVar"s"], 10559 ITE(EQ(Var("n",F4),LW(15,4)),TP[LW(0,32),qVar"state"], 10560 Apply 10561 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state")), 10562 Let(TP[Var("v0",F32),qVar"s"], 10563 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"s"), 10564 Let(TP[Var("v0",F32),qVar"s"], 10565 Apply 10566 (Call 10567 ("ROR",ATy(qTy,PTy(F32,qTy)), 10568 TP[Var("v0",F32),nVar"rotation"]),qVar"s"), 10569 Apply 10570 (Call("IncPC",ATy(qTy,qTy),LU), 10571 Apply 10572 (Call 10573 ("write'R",ATy(qTy,qTy), 10574 TP[CC[Bop(Add,EX(Var("v",F32),LN 31,LN 16,F16), 10575 Call 10576 ("Extend",F16, 10577 TP[bVar"unsigned", 10578 EX(Var("v0",F32),LN 23,LN 16,F8)])), 10579 Bop(Add,EX(Var("v",F32),LN 15,LN 0,F16), 10580 Call 10581 ("Extend",F16, 10582 TP[bVar"unsigned", 10583 EX(Var("v0",F32),LN 7,LN 0,F8)]))], 10584 Var("d",F4)]),qVar"s"))))))) 10585; 10586val dfn'ExtendHalfword_def = Def 10587 ("dfn'ExtendHalfword", 10588 TP[bVar"unsigned",Var("d",F4),Var("n",F4),Var("m",F4),nVar"rotation"], 10589 Close 10590 (qVar"state", 10591 Let(TP[Var("v",F32),qVar"s"], 10592 ITE(EQ(Var("n",F4),LW(15,4)),TP[LW(0,32),qVar"state"], 10593 Apply 10594 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state")), 10595 Let(TP[Var("v0",F32),qVar"s"], 10596 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"s"), 10597 Let(TP[Var("v0",F32),qVar"s"], 10598 Apply 10599 (Call 10600 ("ROR",ATy(qTy,PTy(F32,qTy)), 10601 TP[Var("v0",F32),nVar"rotation"]),qVar"s"), 10602 Apply 10603 (Call("IncPC",ATy(qTy,qTy),LU), 10604 Apply 10605 (Call 10606 ("write'R",ATy(qTy,qTy), 10607 TP[Bop(Add,Var("v",F32), 10608 Call 10609 ("Extend",F32, 10610 TP[bVar"unsigned", 10611 EX(Var("v0",F32),LN 15,LN 0,F16)])), 10612 Var("d",F4)]),qVar"s"))))))) 10613; 10614val dfn'SelectBytes_def = Def 10615 ("dfn'SelectBytes",TP[Var("d",F4),Var("n",F4),Var("m",F4)], 10616 Close 10617 (qVar"state", 10618 Let(TP[Var("v",F32),qVar"s"], 10619 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state"), 10620 Let(TP[Var("v0",F32),qVar"s"], 10621 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"s"), 10622 Apply 10623 (Call("IncPC",ATy(qTy,qTy),LU), 10624 Apply 10625 (Call 10626 ("write'R",ATy(qTy,qTy), 10627 TP[CC[ITE(Bop(Bit, 10628 Dest 10629 ("GE",F4, 10630 Dest("CPSR",CTy"PSR",qVar"s")), 10631 LN 3), 10632 EX(Var("v",F32),LN 31,LN 24,F8), 10633 EX(Var("v0",F32),LN 31,LN 24,F8)), 10634 ITE(Bop(Bit, 10635 Dest 10636 ("GE",F4, 10637 Dest("CPSR",CTy"PSR",qVar"s")), 10638 LN 2), 10639 EX(Var("v",F32),LN 23,LN 16,F8), 10640 EX(Var("v0",F32),LN 23,LN 16,F8)), 10641 ITE(Bop(Bit, 10642 Dest 10643 ("GE",F4, 10644 Dest("CPSR",CTy"PSR",qVar"s")), 10645 LN 1),EX(Var("v",F32),LN 15,LN 8,F8), 10646 EX(Var("v0",F32),LN 15,LN 8,F8)), 10647 ITE(Bop(Bit, 10648 Dest 10649 ("GE",F4, 10650 Dest("CPSR",CTy"PSR",qVar"s")), 10651 LN 0),EX(Var("v",F32),LN 7,LN 0,F8), 10652 EX(Var("v0",F32),LN 7,LN 0,F8))], 10653 Var("d",F4)]),qVar"s")))))) 10654; 10655val dfn'ByteReverse_def = Def 10656 ("dfn'ByteReverse",TP[Var("d",F4),Var("m",F4)], 10657 Close 10658 (qVar"state", 10659 Let(TP[Var("v",F32),qVar"s"], 10660 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"state"), 10661 Apply 10662 (Call("IncPC",ATy(qTy,qTy),LU), 10663 Apply 10664 (Call 10665 ("write'R",ATy(qTy,qTy), 10666 TP[CC[EX(Var("v",F32),LN 7,LN 0,F8), 10667 EX(Var("v",F32),LN 15,LN 8,F8), 10668 EX(Var("v",F32),LN 23,LN 16,F8), 10669 EX(Var("v",F32),LN 31,LN 24,F8)],Var("d",F4)]), 10670 qVar"s"))))) 10671; 10672val dfn'ByteReversePackedHalfword_def = Def 10673 ("dfn'ByteReversePackedHalfword",TP[Var("d",F4),Var("m",F4)], 10674 Close 10675 (qVar"state", 10676 Let(TP[Var("v",F32),qVar"s"], 10677 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"state"), 10678 Apply 10679 (Call("IncPC",ATy(qTy,qTy),LU), 10680 Apply 10681 (Call 10682 ("write'R",ATy(qTy,qTy), 10683 TP[CC[EX(Var("v",F32),LN 23,LN 16,F8), 10684 EX(Var("v",F32),LN 31,LN 24,F8), 10685 EX(Var("v",F32),LN 7,LN 0,F8), 10686 EX(Var("v",F32),LN 15,LN 8,F8)],Var("d",F4)]), 10687 qVar"s"))))) 10688; 10689val dfn'ByteReverseSignedHalfword_def = Def 10690 ("dfn'ByteReverseSignedHalfword",TP[Var("d",F4),Var("m",F4)], 10691 Close 10692 (qVar"state", 10693 Let(TP[Var("v",F32),qVar"s"], 10694 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"state"), 10695 Apply 10696 (Call("IncPC",ATy(qTy,qTy),LU), 10697 Apply 10698 (Call 10699 ("write'R",ATy(qTy,qTy), 10700 TP[CC[Mop(SE(FTy 24),EX(Var("v",F32),LN 7,LN 0,F8)), 10701 EX(Var("v",F32),LN 15,LN 8,F8)],Var("d",F4)]), 10702 qVar"s"))))) 10703; 10704val dfn'ReverseBits_def = Def 10705 ("dfn'ReverseBits",TP[Var("d",F4),Var("m",F4)], 10706 Close 10707 (qVar"state", 10708 Let(TP[Var("v",F32),qVar"s"], 10709 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)),qVar"state"), 10710 Apply 10711 (Call("IncPC",ATy(qTy,qTy),LU), 10712 Apply 10713 (Call 10714 ("write'R",ATy(qTy,qTy), 10715 TP[Mop(Rev,Var("v",F32)),Var("d",F4)]),qVar"s"))))) 10716; 10717val dfn'BitFieldExtract_def = Def 10718 ("dfn'BitFieldExtract", 10719 TP[bVar"unsigned",Var("d",F4),Var("n",F4),nVar"lsbit",nVar"widthminus1"], 10720 Close 10721 (qVar"state", 10722 Let(nVar"msbit",Bop(Add,nVar"lsbit",nVar"widthminus1"), 10723 Let(TP[Var("v",F32),qVar"s"], 10724 ITE(bVar"unsigned", 10725 Let(TP[Var("v",F32),qVar"s"], 10726 Apply 10727 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 10728 qVar"state"), 10729 TP[EX(Var("v",F32),nVar"msbit",nVar"lsbit",F32), 10730 qVar"s"]), 10731 Let(TP[Var("v",F32),qVar"s"], 10732 Apply 10733 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 10734 qVar"state"), 10735 TP[Call 10736 ("SignExtendFrom",F32, 10737 TP[EX(Var("v",F32),nVar"msbit",nVar"lsbit",F32), 10738 nVar"widthminus1"]),qVar"s"])), 10739 Apply 10740 (Call("IncPC",ATy(qTy,qTy),LU), 10741 Apply 10742 (Call 10743 ("write'R",ATy(qTy,qTy),TP[Var("v",F32),Var("d",F4)]), 10744 qVar"s")))))) 10745; 10746val dfn'BitFieldClearOrInsert_def = Def 10747 ("dfn'BitFieldClearOrInsert", 10748 TP[Var("d",F4),Var("n",F4),nVar"lsbit",nVar"msbit"], 10749 Close 10750 (qVar"state", 10751 Let(TP[Var("v",F32),qVar"s"], 10752 ITE(EQ(Var("n",F4),LW(15,4)),TP[LW(0,32),qVar"state"], 10753 Apply 10754 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state")), 10755 Let(TP[Var("v0",F32),qVar"s"], 10756 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("d",F4)),qVar"s"), 10757 Apply 10758 (Call("IncPC",ATy(qTy,qTy),LU), 10759 Apply 10760 (Call 10761 ("write'R",ATy(qTy,qTy), 10762 TP[Mop(Cast F32, 10763 BFI(nVar"msbit",nVar"lsbit", 10764 EX(Mop(Cast vTy,Var("v",F32)), 10765 Bop(Sub,nVar"msbit",nVar"lsbit"), 10766 LN 0,vTy),Mop(Cast vTy,Var("v0",F32)))), 10767 Var("d",F4)]),qVar"s")))))) 10768; 10769val dfn'LoadWord_def = Def 10770 ("dfn'LoadWord", 10771 TP[bVar"add",bVar"index",bVar"wback",Var("t",F4),Var("n",F4), 10772 Var("m",CTy"offset1")], 10773 Close 10774 (qVar"state", 10775 Let(TP[bVar"v",qVar"s"], 10776 Apply 10777 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 10778 qVar"state"), 10779 ITE(bVar"v", 10780 Let(TP[Var("v",F32),qVar"s"], 10781 Apply 10782 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 10783 Let(TP[Var("v0",F32),qVar"s"], 10784 CS(Var("m",CTy"offset1"), 10785 [(Call 10786 ("register_form1",CTy"offset1", 10787 TP[Var("m",F4),Var("shift_t",CTy"SRType"), 10788 nVar"shift_n"]), 10789 Let(TP[Var("v",F32),qVar"s"], 10790 Apply 10791 (Call 10792 ("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 10793 qVar"s"), 10794 Apply 10795 (Call 10796 ("Shift",ATy(qTy,PTy(F32,qTy)), 10797 TP[Var("v",F32), 10798 Var("shift_t",CTy"SRType"), 10799 nVar"shift_n", 10800 Dest 10801 ("C",bTy, 10802 Dest("CPSR",CTy"PSR",qVar"s"))]), 10803 qVar"s"))), 10804 (Call 10805 ("immediate_form1",CTy"offset1", 10806 Var("imm32",F32)), 10807 TP[Var("imm32",F32),qVar"s"])]), 10808 Let(Var("offset_addr",F32), 10809 ITE(bVar"add", 10810 Bop(Add,Var("v",F32),Var("v0",F32)), 10811 Bop(Sub,Var("v",F32),Var("v0",F32))), 10812 Let(Var("address",F32), 10813 ITE(bVar"index",Var("offset_addr",F32), 10814 Var("v",F32)), 10815 Let(TP[Var("v",F32),qVar"s"], 10816 Apply 10817 (Call 10818 ("MemU",ATy(qTy,PTy(F32,qTy)), 10819 TP[Var("address",F32),LN 4]), 10820 qVar"s"), 10821 Let(qVar"s", 10822 ITE(bVar"wback", 10823 Apply 10824 (Call 10825 ("write'R",ATy(qTy,qTy), 10826 TP[Var("offset_addr",F32), 10827 Var("n",F4)]),qVar"s"), 10828 qVar"s"), 10829 ITE(EQ(Var("t",F4),LW(15,4)), 10830 ITE(Call 10831 ("Aligned",bTy, 10832 TP[Var("address",F32), 10833 LN 4]), 10834 Apply 10835 (Call 10836 ("LoadWritePC", 10837 ATy(qTy,qTy), 10838 Var("v",F32)),qVar"s"), 10839 Mop(Snd, 10840 Apply 10841 (Call 10842 ("raise'exception", 10843 ATy(qTy, 10844 PTy(uTy,qTy)), 10845 Call 10846 ("UNPREDICTABLE", 10847 CTy"exception", 10848 LS"Load")), 10849 qVar"s"))), 10850 Apply 10851 (Call("IncPC",ATy(qTy,qTy),LU), 10852 Let(TP[Var("v",PTy(F32,F4)), 10853 qVar"s"], 10854 Let(TP[Var("v",F32), 10855 qVar"s"], 10856 ITB([(Bop(Or, 10857 Apply 10858 (Call 10859 ("UnalignedSupport", 10860 ATy(qTy, 10861 bTy), 10862 LU), 10863 qVar"s"), 10864 Call 10865 ("Aligned", 10866 bTy, 10867 TP[Var("address", 10868 F32), 10869 LN 4])), 10870 TP[Var("v",F32), 10871 qVar"s"]), 10872 (EQ(Dest 10873 ("Encoding", 10874 CTy"Encoding", 10875 qVar"s"), 10876 LC("Encoding_ARM", 10877 CTy"Encoding")), 10878 Apply 10879 (Call 10880 ("ROR", 10881 ATy(qTy, 10882 PTy(F32, 10883 qTy)), 10884 TP[Var("v", 10885 F32), 10886 Bop(Mul, 10887 LN 10888 8, 10889 Mop(Cast 10890 nTy, 10891 EX(Var("address", 10892 F32), 10893 LN 10894 1, 10895 LN 10896 0, 10897 FTy 2)))]), 10898 qVar"s"))], 10899 TP[LX F32,qVar"s"]), 10900 TP[TP[Var("v",F32), 10901 Var("t",F4)], 10902 qVar"s"]), 10903 Apply 10904 (Call 10905 ("write'R", 10906 ATy(qTy,qTy), 10907 Var("v",PTy(F32,F4))), 10908 qVar"s")))))))))), 10909 qVar"s")))) 10910; 10911val dfn'LoadLiteral_def = Def 10912 ("dfn'LoadLiteral",TP[bVar"add",Var("t",F4),Var("imm32",F32)], 10913 Close 10914 (qVar"state", 10915 Let(TP[bVar"v",qVar"s"], 10916 Apply 10917 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),LW(15,4)), 10918 qVar"state"), 10919 ITE(bVar"v", 10920 Let(TP[Var("v",F32),qVar"s"], 10921 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"s"), 10922 Let(Var("v",F32), 10923 Call("Align",F32,TP[Var("v",F32),LN 4]), 10924 Let(Var("address",F32), 10925 ITE(bVar"add", 10926 Bop(Add,Var("v",F32),Var("imm32",F32)), 10927 Bop(Sub,Var("v",F32),Var("imm32",F32))), 10928 Let(TP[Var("v",F32),qVar"s"], 10929 Apply 10930 (Call 10931 ("MemU",ATy(qTy,PTy(F32,qTy)), 10932 TP[Var("address",F32),LN 4]),qVar"s"), 10933 ITE(EQ(Var("t",F4),LW(15,4)), 10934 ITE(Call 10935 ("Aligned",bTy, 10936 TP[Var("address",F32),LN 4]), 10937 Apply 10938 (Call 10939 ("LoadWritePC",ATy(qTy,qTy), 10940 Var("v",F32)),qVar"s"), 10941 Mop(Snd, 10942 Apply 10943 (Call 10944 ("raise'exception", 10945 ATy(qTy,PTy(uTy,qTy)), 10946 Call 10947 ("UNPREDICTABLE", 10948 CTy"exception", 10949 LS"LoadLiteral")), 10950 qVar"s"))), 10951 Apply 10952 (Call("IncPC",ATy(qTy,qTy),LU), 10953 Let(TP[Var("v",PTy(F32,F4)),qVar"s"], 10954 Let(TP[Var("v",F32),qVar"s"], 10955 ITB([(Bop(Or, 10956 Apply 10957 (Call 10958 ("UnalignedSupport", 10959 ATy(qTy,bTy), 10960 LU),qVar"s"), 10961 Call 10962 ("Aligned",bTy, 10963 TP[Var("address", 10964 F32),LN 4])), 10965 TP[Var("v",F32),qVar"s"]), 10966 (EQ(Dest 10967 ("Encoding", 10968 CTy"Encoding", 10969 qVar"s"), 10970 LC("Encoding_ARM", 10971 CTy"Encoding")), 10972 Apply 10973 (Call 10974 ("ROR", 10975 ATy(qTy, 10976 PTy(F32,qTy)), 10977 TP[Var("v",F32), 10978 Bop(Mul,LN 8, 10979 Mop(Cast 10980 nTy, 10981 EX(Var("address", 10982 F32), 10983 LN 10984 1, 10985 LN 10986 0, 10987 FTy 2)))]), 10988 qVar"s"))], 10989 TP[LX F32,qVar"s"]), 10990 TP[TP[Var("v",F32), 10991 Var("t",F4)],qVar"s"]), 10992 Apply 10993 (Call 10994 ("write'R",ATy(qTy,qTy), 10995 Var("v",PTy(F32,F4))), 10996 qVar"s")))))))),qVar"s")))) 10997; 10998val dfn'LoadUnprivileged_def = Def 10999 ("dfn'LoadUnprivileged", 11000 TP[bVar"add",bVar"postindex",Var("t",F4),Var("n",F4), 11001 Var("m",CTy"offset1")], 11002 Close 11003 (qVar"state", 11004 Let(TP[bVar"v",qVar"s"], 11005 Apply 11006 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 11007 qVar"state"), 11008 ITE(bVar"v", 11009 Let(TP[Var("v",F32),qVar"s"], 11010 Apply 11011 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 11012 Let(TP[Var("v0",F32),qVar"s"], 11013 CS(Var("m",CTy"offset1"), 11014 [(Call 11015 ("register_form1",CTy"offset1", 11016 TP[Var("m",F4),Var("shift_t",CTy"SRType"), 11017 nVar"shift_n"]), 11018 Let(TP[Var("v",F32),qVar"s"], 11019 Apply 11020 (Call 11021 ("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 11022 qVar"s"), 11023 Apply 11024 (Call 11025 ("Shift",ATy(qTy,PTy(F32,qTy)), 11026 TP[Var("v",F32), 11027 Var("shift_t",CTy"SRType"), 11028 nVar"shift_n", 11029 Dest 11030 ("C",bTy, 11031 Dest("CPSR",CTy"PSR",qVar"s"))]), 11032 qVar"s"))), 11033 (Call 11034 ("immediate_form1",CTy"offset1", 11035 Var("imm32",F32)), 11036 TP[Var("imm32",F32),qVar"s"])]), 11037 Let(Var("offset_addr",F32), 11038 ITE(bVar"add", 11039 Bop(Add,Var("v",F32),Var("v0",F32)), 11040 Bop(Sub,Var("v",F32),Var("v0",F32))), 11041 Let(Var("address",F32), 11042 ITE(bVar"postindex",Var("v",F32), 11043 Var("offset_addr",F32)), 11044 Let(TP[Var("v",F32),qVar"s"], 11045 Apply 11046 (Call 11047 ("MemU_unpriv", 11048 ATy(qTy,PTy(F32,qTy)), 11049 TP[Var("address",F32),LN 4]), 11050 qVar"s"), 11051 Let(TP[bVar"v0",qVar"s"], 11052 Let(qVar"s0", 11053 ITE(bVar"postindex", 11054 Apply 11055 (Call 11056 ("write'R", 11057 ATy(qTy,qTy), 11058 TP[Var("offset_addr", 11059 F32), 11060 Var("n",F4)]), 11061 qVar"s"),qVar"s"), 11062 TP[Apply 11063 (Call 11064 ("UnalignedSupport", 11065 ATy(qTy,bTy),LU), 11066 qVar"s0"),qVar"s0"]), 11067 Apply 11068 (Call("IncPC",ATy(qTy,qTy),LU), 11069 Let(TP[Var("v",PTy(F32,F4)), 11070 qVar"s"], 11071 Let(TP[Var("v",F32),qVar"s"], 11072 ITB([(Bop(Or,bVar"v0", 11073 Call 11074 ("Aligned", 11075 bTy, 11076 TP[Var("address", 11077 F32), 11078 LN 4])), 11079 TP[Var("v",F32), 11080 qVar"s"]), 11081 (EQ(Dest 11082 ("Encoding", 11083 CTy"Encoding", 11084 qVar"s"), 11085 LC("Encoding_ARM", 11086 CTy"Encoding")), 11087 Apply 11088 (Call 11089 ("ROR", 11090 ATy(qTy, 11091 PTy(F32, 11092 qTy)), 11093 TP[Var("v", 11094 F32), 11095 Bop(Mul, 11096 LN 8, 11097 Mop(Cast 11098 nTy, 11099 EX(Var("address", 11100 F32), 11101 LN 11102 1, 11103 LN 11104 0, 11105 FTy 2)))]), 11106 qVar"s"))], 11107 TP[LX F32,qVar"s"]), 11108 TP[TP[Var("v",F32), 11109 Var("t",F4)], 11110 qVar"s"]), 11111 Apply 11112 (Call 11113 ("write'R",ATy(qTy,qTy), 11114 Var("v",PTy(F32,F4))), 11115 qVar"s"))))))))),qVar"s")))) 11116; 11117val dfn'LoadByte_def = Def 11118 ("dfn'LoadByte", 11119 TP[bVar"unsigned",bVar"add",bVar"index",bVar"wback",Var("t",F4), 11120 Var("n",F4),Var("m",CTy"offset1")], 11121 Close 11122 (qVar"state", 11123 Let(TP[bVar"v",qVar"s"], 11124 Apply 11125 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 11126 qVar"state"), 11127 ITE(bVar"v", 11128 Let(TP[Var("v",F32),qVar"s"], 11129 Apply 11130 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 11131 Let(TP[Var("v0",F32),qVar"s"], 11132 CS(Var("m",CTy"offset1"), 11133 [(Call 11134 ("register_form1",CTy"offset1", 11135 TP[Var("m",F4),Var("shift_t",CTy"SRType"), 11136 nVar"shift_n"]), 11137 Let(TP[Var("v",F32),qVar"s"], 11138 Apply 11139 (Call 11140 ("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 11141 qVar"s"), 11142 Apply 11143 (Call 11144 ("Shift",ATy(qTy,PTy(F32,qTy)), 11145 TP[Var("v",F32), 11146 Var("shift_t",CTy"SRType"), 11147 nVar"shift_n", 11148 Dest 11149 ("C",bTy, 11150 Dest("CPSR",CTy"PSR",qVar"s"))]), 11151 qVar"s"))), 11152 (Call 11153 ("immediate_form1",CTy"offset1", 11154 Var("imm32",F32)), 11155 TP[Var("imm32",F32),qVar"s"])]), 11156 Let(Var("offset_addr",F32), 11157 ITE(bVar"add", 11158 Bop(Add,Var("v",F32),Var("v0",F32)), 11159 Bop(Sub,Var("v",F32),Var("v0",F32))), 11160 Let(TP[Var("v",F8),qVar"s"], 11161 Apply 11162 (Call 11163 ("MemU",ATy(qTy,PTy(F8,qTy)), 11164 TP[ITE(bVar"index", 11165 Var("offset_addr",F32), 11166 Var("v",F32)),LN 1]),qVar"s"), 11167 Let(qVar"s", 11168 Apply 11169 (Call 11170 ("write'R",ATy(qTy,qTy), 11171 TP[Call 11172 ("Extend",F32, 11173 TP[bVar"unsigned", 11174 Var("v",F8)]),Var("t",F4)]), 11175 qVar"s"), 11176 Apply 11177 (Call("IncPC",ATy(qTy,qTy),LU), 11178 ITE(bVar"wback", 11179 Apply 11180 (Call 11181 ("write'R",ATy(qTy,qTy), 11182 TP[Var("offset_addr",F32), 11183 Var("n",F4)]),qVar"s"), 11184 qVar"s"))))))),qVar"s")))) 11185; 11186val dfn'LoadByteLiteral_def = Def 11187 ("dfn'LoadByteLiteral", 11188 TP[bVar"unsigned",bVar"add",Var("t",F4),Var("imm32",F32)], 11189 Close 11190 (qVar"state", 11191 Let(TP[bVar"v",qVar"s"], 11192 Apply 11193 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),LW(15,4)), 11194 qVar"state"), 11195 ITE(bVar"v", 11196 Let(TP[Var("v",F32),qVar"s"], 11197 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"s"), 11198 Let(Var("v",F32), 11199 Call("Align",F32,TP[Var("v",F32),LN 4]), 11200 Let(TP[Var("v",F8),qVar"s"], 11201 Apply 11202 (Call 11203 ("MemU",ATy(qTy,PTy(F8,qTy)), 11204 TP[ITE(bVar"add", 11205 Bop(Add,Var("v",F32), 11206 Var("imm32",F32)), 11207 Bop(Sub,Var("v",F32), 11208 Var("imm32",F32))),LN 1]), 11209 qVar"s"), 11210 Apply 11211 (Call("IncPC",ATy(qTy,qTy),LU), 11212 Apply 11213 (Call 11214 ("write'R",ATy(qTy,qTy), 11215 TP[Call 11216 ("Extend",F32, 11217 TP[bVar"unsigned",Var("v",F8)]), 11218 Var("t",F4)]),qVar"s"))))),qVar"s")))) 11219; 11220val dfn'LoadByteUnprivileged_def = Def 11221 ("dfn'LoadByteUnprivileged", 11222 TP[bVar"add",bVar"postindex",Var("t",F4),Var("n",F4), 11223 Var("m",CTy"offset1")], 11224 Close 11225 (qVar"state", 11226 Let(TP[bVar"v",qVar"s"], 11227 Apply 11228 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 11229 qVar"state"), 11230 ITE(bVar"v", 11231 Let(TP[Var("v",F32),qVar"s"], 11232 Apply 11233 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 11234 Let(TP[Var("v0",F32),qVar"s"], 11235 CS(Var("m",CTy"offset1"), 11236 [(Call 11237 ("register_form1",CTy"offset1", 11238 TP[Var("m",F4),Var("shift_t",CTy"SRType"), 11239 nVar"shift_n"]), 11240 Let(TP[Var("v",F32),qVar"s"], 11241 Apply 11242 (Call 11243 ("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 11244 qVar"s"), 11245 Apply 11246 (Call 11247 ("Shift",ATy(qTy,PTy(F32,qTy)), 11248 TP[Var("v",F32), 11249 Var("shift_t",CTy"SRType"), 11250 nVar"shift_n", 11251 Dest 11252 ("C",bTy, 11253 Dest("CPSR",CTy"PSR",qVar"s"))]), 11254 qVar"s"))), 11255 (Call 11256 ("immediate_form1",CTy"offset1", 11257 Var("imm32",F32)), 11258 TP[Var("imm32",F32),qVar"s"])]), 11259 Let(Var("offset_addr",F32), 11260 ITE(bVar"add", 11261 Bop(Add,Var("v",F32),Var("v0",F32)), 11262 Bop(Sub,Var("v",F32),Var("v0",F32))), 11263 Let(TP[Var("v",F8),qVar"s"], 11264 Apply 11265 (Call 11266 ("MemU_unpriv",ATy(qTy,PTy(F8,qTy)), 11267 TP[ITE(bVar"postindex",Var("v",F32), 11268 Var("offset_addr",F32)),LN 1]), 11269 qVar"s"), 11270 Let(qVar"s", 11271 Apply 11272 (Call 11273 ("write'R",ATy(qTy,qTy), 11274 TP[Mop(Cast F32,Var("v",F8)), 11275 Var("t",F4)]),qVar"s"), 11276 Apply 11277 (Call("IncPC",ATy(qTy,qTy),LU), 11278 ITE(bVar"postindex", 11279 Apply 11280 (Call 11281 ("write'R",ATy(qTy,qTy), 11282 TP[Var("offset_addr",F32), 11283 Var("n",F4)]),qVar"s"), 11284 qVar"s"))))))),qVar"s")))) 11285; 11286val dfn'LoadSignedByteUnprivileged_def = Def 11287 ("dfn'LoadSignedByteUnprivileged", 11288 TP[bVar"add",bVar"postindex",Var("t",F4),Var("n",F4), 11289 Var("m",CTy"offset2")], 11290 Close 11291 (qVar"state", 11292 Let(TP[bVar"v",qVar"s"], 11293 Apply 11294 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 11295 qVar"state"), 11296 ITE(bVar"v", 11297 Let(TP[Var("v",F32),qVar"s"], 11298 Apply 11299 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 11300 Let(TP[Var("v0",F32),qVar"s"], 11301 CS(Var("m",CTy"offset2"), 11302 [(Call("register_form2",CTy"offset2",Var("m",F4)), 11303 Apply 11304 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 11305 qVar"s")), 11306 (Call 11307 ("immediate_form2",CTy"offset2", 11308 Var("imm32",F32)), 11309 TP[Var("imm32",F32),qVar"s"])]), 11310 Let(Var("offset_addr",F32), 11311 ITE(bVar"add", 11312 Bop(Add,Var("v",F32),Var("v0",F32)), 11313 Bop(Sub,Var("v",F32),Var("v0",F32))), 11314 Let(TP[Var("v",F8),qVar"s"], 11315 Apply 11316 (Call 11317 ("MemU_unpriv",ATy(qTy,PTy(F8,qTy)), 11318 TP[ITE(bVar"postindex",Var("v",F32), 11319 Var("offset_addr",F32)),LN 1]), 11320 qVar"s"), 11321 Let(qVar"s", 11322 Apply 11323 (Call 11324 ("write'R",ATy(qTy,qTy), 11325 TP[Mop(SE F32,Var("v",F8)), 11326 Var("t",F4)]),qVar"s"), 11327 Apply 11328 (Call("IncPC",ATy(qTy,qTy),LU), 11329 ITE(bVar"postindex", 11330 Apply 11331 (Call 11332 ("write'R",ATy(qTy,qTy), 11333 TP[Var("offset_addr",F32), 11334 Var("n",F4)]),qVar"s"), 11335 qVar"s"))))))),qVar"s")))) 11336; 11337val dfn'LoadHalf_def = Def 11338 ("dfn'LoadHalf", 11339 TP[bVar"unsigned",bVar"add",bVar"index",bVar"wback",Var("t",F4), 11340 Var("n",F4),Var("m",CTy"offset1")], 11341 Close 11342 (qVar"state", 11343 Let(TP[bVar"v",qVar"s"], 11344 Apply 11345 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 11346 qVar"state"), 11347 ITE(bVar"v", 11348 Let(TP[Var("v",F32),qVar"s"], 11349 Apply 11350 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 11351 Let(TP[Var("v0",F32),qVar"s"], 11352 CS(Var("m",CTy"offset1"), 11353 [(Call 11354 ("register_form1",CTy"offset1", 11355 TP[Var("m",F4),Var("shift_t",CTy"SRType"), 11356 nVar"shift_n"]), 11357 Let(TP[Var("v",F32),qVar"s"], 11358 Apply 11359 (Call 11360 ("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 11361 qVar"s"), 11362 Apply 11363 (Call 11364 ("Shift",ATy(qTy,PTy(F32,qTy)), 11365 TP[Var("v",F32), 11366 Var("shift_t",CTy"SRType"), 11367 nVar"shift_n", 11368 Dest 11369 ("C",bTy, 11370 Dest("CPSR",CTy"PSR",qVar"s"))]), 11371 qVar"s"))), 11372 (Call 11373 ("immediate_form1",CTy"offset1", 11374 Var("imm32",F32)), 11375 TP[Var("imm32",F32),qVar"s"])]), 11376 Let(Var("offset_addr",F32), 11377 ITE(bVar"add", 11378 Bop(Add,Var("v",F32),Var("v0",F32)), 11379 Bop(Sub,Var("v",F32),Var("v0",F32))), 11380 Let(Var("address",F32), 11381 ITE(bVar"index",Var("offset_addr",F32), 11382 Var("v",F32)), 11383 Let(TP[Var("v",F16),qVar"s"], 11384 Apply 11385 (Call 11386 ("MemU",ATy(qTy,PTy(F16,qTy)), 11387 TP[Var("address",F32),LN 2]), 11388 qVar"s"), 11389 Let(TP[bVar"v0",qVar"s"], 11390 Let(qVar"s0", 11391 ITE(bVar"wback", 11392 Apply 11393 (Call 11394 ("write'R", 11395 ATy(qTy,qTy), 11396 TP[Var("offset_addr", 11397 F32), 11398 Var("n",F4)]), 11399 qVar"s"),qVar"s"), 11400 TP[Apply 11401 (Call 11402 ("UnalignedSupport", 11403 ATy(qTy,bTy),LU), 11404 qVar"s0"),qVar"s0"]), 11405 Apply 11406 (Call("IncPC",ATy(qTy,qTy),LU), 11407 Apply 11408 (Call 11409 ("write'R",ATy(qTy,qTy), 11410 TP[ITE(Bop(Or,bVar"v0", 11411 Call 11412 ("Aligned", 11413 bTy, 11414 TP[Var("address", 11415 F32), 11416 LN 2])), 11417 Call 11418 ("Extend",F32, 11419 TP[bVar"unsigned", 11420 Var("v",F16)]), 11421 LX F32),Var("t",F4)]), 11422 qVar"s")))))))),qVar"s")))) 11423; 11424val dfn'LoadHalfLiteral_def = Def 11425 ("dfn'LoadHalfLiteral", 11426 TP[bVar"unsigned",bVar"add",Var("t",F4),Var("imm32",F32)], 11427 Close 11428 (qVar"state", 11429 Let(TP[bVar"v",qVar"s"], 11430 Apply 11431 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),LW(15,4)), 11432 qVar"state"), 11433 ITE(bVar"v", 11434 Let(TP[Var("v",F32),qVar"s"], 11435 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"s"), 11436 Let(Var("v",F32), 11437 Call("Align",F32,TP[Var("v",F32),LN 4]), 11438 Let(Var("address",F32), 11439 ITE(bVar"add", 11440 Bop(Add,Var("v",F32),Var("imm32",F32)), 11441 Bop(Sub,Var("v",F32),Var("imm32",F32))), 11442 Let(TP[Var("v",F16),qVar"s"], 11443 Apply 11444 (Call 11445 ("MemU",ATy(qTy,PTy(F16,qTy)), 11446 TP[Var("address",F32),LN 2]),qVar"s"), 11447 Apply 11448 (Call("IncPC",ATy(qTy,qTy),LU), 11449 Apply 11450 (Call 11451 ("write'R",ATy(qTy,qTy), 11452 TP[ITE(Bop(Or, 11453 Apply 11454 (Call 11455 ("UnalignedSupport", 11456 ATy(qTy,bTy),LU), 11457 qVar"s"), 11458 Call 11459 ("Aligned",bTy, 11460 TP[Var("address",F32), 11461 LN 2])), 11462 Call 11463 ("Extend",F32, 11464 TP[bVar"unsigned", 11465 Var("v",F16)]),LX F32), 11466 Var("t",F4)]),qVar"s")))))), 11467 qVar"s")))) 11468; 11469val dfn'LoadHalfUnprivileged_def = Def 11470 ("dfn'LoadHalfUnprivileged", 11471 TP[bVar"unsigned",bVar"add",bVar"postindex",Var("t",F4),Var("n",F4), 11472 Var("m",CTy"offset2")], 11473 Close 11474 (qVar"state", 11475 Let(TP[bVar"v",qVar"s"], 11476 Apply 11477 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 11478 qVar"state"), 11479 ITE(bVar"v", 11480 Let(TP[Var("v",F32),qVar"s"], 11481 Apply 11482 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 11483 Let(TP[Var("v0",F32),qVar"s"], 11484 CS(Var("m",CTy"offset2"), 11485 [(Call("register_form2",CTy"offset2",Var("m",F4)), 11486 Apply 11487 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 11488 qVar"s")), 11489 (Call 11490 ("immediate_form2",CTy"offset2", 11491 Var("imm32",F32)), 11492 TP[Var("imm32",F32),qVar"s"])]), 11493 Let(Var("offset_addr",F32), 11494 ITE(bVar"add", 11495 Bop(Add,Var("v",F32),Var("v0",F32)), 11496 Bop(Sub,Var("v",F32),Var("v0",F32))), 11497 Let(Var("address",F32), 11498 ITE(bVar"postindex",Var("v",F32), 11499 Var("offset_addr",F32)), 11500 Let(TP[Var("v",F16),qVar"s"], 11501 Apply 11502 (Call 11503 ("MemU_unpriv", 11504 ATy(qTy,PTy(F16,qTy)), 11505 TP[Var("address",F32),LN 2]), 11506 qVar"s"), 11507 Let(TP[bVar"v0",qVar"s"], 11508 Let(qVar"s0", 11509 ITE(bVar"postindex", 11510 Apply 11511 (Call 11512 ("write'R", 11513 ATy(qTy,qTy), 11514 TP[Var("offset_addr", 11515 F32), 11516 Var("n",F4)]), 11517 qVar"s"),qVar"s"), 11518 TP[Apply 11519 (Call 11520 ("UnalignedSupport", 11521 ATy(qTy,bTy),LU), 11522 qVar"s0"),qVar"s0"]), 11523 Apply 11524 (Call("IncPC",ATy(qTy,qTy),LU), 11525 Apply 11526 (Call 11527 ("write'R",ATy(qTy,qTy), 11528 TP[ITE(Bop(Or,bVar"v0", 11529 Call 11530 ("Aligned", 11531 bTy, 11532 TP[Var("address", 11533 F32), 11534 LN 2])), 11535 Call 11536 ("Extend",F32, 11537 TP[bVar"unsigned", 11538 Var("v",F16)]), 11539 LX F32),Var("t",F4)]), 11540 qVar"s")))))))),qVar"s")))) 11541; 11542val dfn'LoadMultiple_def = Def 11543 ("dfn'LoadMultiple", 11544 TP[bVar"increment",bVar"index",bVar"wback",Var("n",F4), 11545 Var("registers",F16)], 11546 Close 11547 (qVar"state", 11548 Let(TP[bVar"v",qVar"s"], 11549 Apply 11550 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 11551 qVar"state"), 11552 ITE(bVar"v", 11553 Let(TP[Var("v",F32),qVar"s"], 11554 Apply 11555 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 11556 Let(Var("length",F32), 11557 Bop(Mul,LW(4,32), 11558 Mop(Cast F32, 11559 Call("BitCount",nTy,Var("registers",F16)))), 11560 Let(Var("s",PTy(F32,qTy)), 11561 Mop(Snd, 11562 Apply 11563 (For(TP[LN 0,LN 14, 11564 Close 11565 (nVar"i", 11566 Close 11567 (Var("state",PTy(F32,qTy)), 11568 ITE(Bop(Bit, 11569 Var("registers",F16), 11570 nVar"i"), 11571 Let(Var("s",PTy(F32,qTy)), 11572 Let(TP[Var("v", 11573 PTy(F32, 11574 F4)), 11575 Var("s", 11576 PTy(F32, 11577 qTy))], 11578 Let(TP[Var("v", 11579 F32), 11580 Var("s", 11581 PTy(F32, 11582 qTy))], 11583 CS(Apply 11584 (Call 11585 ("MemA", 11586 ATy(qTy, 11587 PTy(F32, 11588 qTy)), 11589 TP[Mop(Fst, 11590 Var("state", 11591 PTy(F32, 11592 qTy))), 11593 LN 11594 4]), 11595 Mop(Snd, 11596 Var("state", 11597 PTy(F32, 11598 qTy)))), 11599 [(TP[Var("v", 11600 F32), 11601 qVar"s3"], 11602 TP[Var("v", 11603 F32), 11604 Mop(Fst, 11605 Var("state", 11606 PTy(F32, 11607 qTy))), 11608 qVar"s3"])]), 11609 TP[TP[Var("v", 11610 F32), 11611 Mop(Cast 11612 F4, 11613 nVar"i")], 11614 Var("s", 11615 PTy(F32, 11616 qTy))]), 11617 TP[Mop(Fst, 11618 Var("s", 11619 PTy(F32, 11620 qTy))), 11621 Apply 11622 (Call 11623 ("write'R", 11624 ATy(qTy, 11625 qTy), 11626 Var("v", 11627 PTy(F32, 11628 F4))), 11629 Mop(Snd, 11630 Var("s", 11631 PTy(F32, 11632 qTy))))]), 11633 TP[LU, 11634 Bop(Add, 11635 Mop(Fst, 11636 Var("s", 11637 PTy(F32, 11638 qTy))), 11639 LW(4,32)), 11640 Mop(Snd, 11641 Var("s", 11642 PTy(F32, 11643 qTy)))]), 11644 TP[LU, 11645 Var("state", 11646 PTy(F32,qTy))])))]), 11647 TP[ITB([(EQ(bVar"index",bVar"increment"), 11648 Bop(Add, 11649 ITE(bVar"increment", 11650 Var("v",F32), 11651 Bop(Sub,Var("v",F32), 11652 Var("length",F32))), 11653 LW(4,32))), 11654 (bVar"increment",Var("v",F32))], 11655 Bop(Sub,Var("v",F32), 11656 Var("length",F32))),qVar"s"])), 11657 Let(Var("s",PTy(F32,qTy)), 11658 ITE(Bop(Bit,Var("registers",F16),LN 15), 11659 Let(TP[Var("v",F32), 11660 Var("s",PTy(F32,qTy))], 11661 CS(Apply 11662 (Call 11663 ("MemA", 11664 ATy(qTy,PTy(F32,qTy)), 11665 TP[Mop(Fst, 11666 Var("s",PTy(F32,qTy))), 11667 LN 4]), 11668 Mop(Snd,Var("s",PTy(F32,qTy)))), 11669 [(TP[Var("v",F32),qVar"s3"], 11670 TP[Var("v",F32), 11671 Mop(Fst, 11672 Var("s",PTy(F32,qTy))), 11673 qVar"s3"])]), 11674 TP[Mop(Fst,Var("s",PTy(F32,qTy))), 11675 Apply 11676 (Call 11677 ("LoadWritePC",ATy(qTy,qTy), 11678 Var("v",F32)), 11679 Mop(Snd,Var("s",PTy(F32,qTy))))]), 11680 TP[Mop(Fst,Var("s",PTy(F32,qTy))), 11681 Apply 11682 (Call("IncPC",ATy(qTy,qTy),LU), 11683 Mop(Snd,Var("s",PTy(F32,qTy))))]), 11684 ITE(bVar"wback", 11685 ITE(Bop(Bit,Var("registers",F16), 11686 Mop(Cast nTy,Var("n",F4))), 11687 Apply 11688 (Call 11689 ("write'R",ATy(qTy,qTy), 11690 TP[LX F32,Var("n",F4)]), 11691 Mop(Snd,Var("s",PTy(F32,qTy)))), 11692 Apply 11693 (Call 11694 ("write'R",ATy(qTy,qTy), 11695 TP[ITE(bVar"increment", 11696 Bop(Add,Var("v",F32), 11697 Var("length",F32)), 11698 Bop(Sub,Var("v",F32), 11699 Var("length",F32))), 11700 Var("n",F4)]), 11701 Mop(Snd,Var("s",PTy(F32,qTy))))), 11702 Mop(Snd,Var("s",PTy(F32,qTy)))))))), 11703 qVar"s")))) 11704; 11705val dfn'LoadMultipleExceptionReturn_def = Def 11706 ("dfn'LoadMultipleExceptionReturn", 11707 TP[bVar"increment",bVar"wordhigher",bVar"wback",Var("n",F4), 11708 Var("registers",FTy 15)], 11709 Close 11710 (qVar"state", 11711 Let(TP[bVar"v",qVar"s"], 11712 Apply 11713 (Call("CurrentModeIsHyp",ATy(qTy,PTy(bTy,qTy)),LU),qVar"state"), 11714 Let(TP[bVar"v",qVar"s"], 11715 Apply 11716 (Call 11717 ("CurrentModeIsUserOrSystem",ATy(qTy,PTy(bTy,qTy)),LU), 11718 ITE(bVar"v", 11719 Apply 11720 (Call("TakeUndefInstrException",ATy(qTy,qTy),LU), 11721 qVar"s"),qVar"s")), 11722 Let(TP[Var("v",F32),qVar"s"], 11723 Apply 11724 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 11725 ITE(bVar"v", 11726 Mop(Snd, 11727 Apply 11728 (Call 11729 ("raise'exception", 11730 ATy(qTy,PTy(uTy,qTy)), 11731 Call 11732 ("UNPREDICTABLE",CTy"exception", 11733 LS"LoadMultipleExceptionReturn")), 11734 qVar"s")),qVar"s")), 11735 Let(Var("length",F32), 11736 Bop(Add, 11737 Bop(Mul,LW(4,32), 11738 Mop(Cast F32, 11739 Call 11740 ("BitCount",nTy, 11741 Var("registers",FTy 15)))),LW(4,32)), 11742 Let(Var("s",PTy(F32,qTy)), 11743 Mop(Snd, 11744 Apply 11745 (For(TP[LN 0,LN 14, 11746 Close 11747 (nVar"i", 11748 Close 11749 (Var("state",PTy(F32,qTy)), 11750 ITE(Bop(Bit, 11751 Var("registers", 11752 FTy 15),nVar"i"), 11753 Let(Var("s",PTy(F32,qTy)), 11754 Let(TP[Var("v", 11755 PTy(F32, 11756 F4)), 11757 Var("s", 11758 PTy(F32, 11759 qTy))], 11760 Let(TP[Var("v", 11761 F32), 11762 Var("s", 11763 PTy(F32, 11764 qTy))], 11765 CS(Apply 11766 (Call 11767 ("MemA", 11768 ATy(qTy, 11769 PTy(F32, 11770 qTy)), 11771 TP[Mop(Fst, 11772 Var("state", 11773 PTy(F32, 11774 qTy))), 11775 LN 11776 4]), 11777 Mop(Snd, 11778 Var("state", 11779 PTy(F32, 11780 qTy)))), 11781 [(TP[Var("v", 11782 F32), 11783 qVar"s3"], 11784 TP[Var("v", 11785 F32), 11786 Mop(Fst, 11787 Var("state", 11788 PTy(F32, 11789 qTy))), 11790 qVar"s3"])]), 11791 TP[TP[Var("v", 11792 F32), 11793 Mop(Cast 11794 F4, 11795 nVar"i")], 11796 Var("s", 11797 PTy(F32, 11798 qTy))]), 11799 TP[Mop(Fst, 11800 Var("s", 11801 PTy(F32, 11802 qTy))), 11803 Apply 11804 (Call 11805 ("write'R", 11806 ATy(qTy, 11807 qTy), 11808 Var("v", 11809 PTy(F32, 11810 F4))), 11811 Mop(Snd, 11812 Var("s", 11813 PTy(F32, 11814 qTy))))]), 11815 TP[LU, 11816 Bop(Add, 11817 Mop(Fst, 11818 Var("s", 11819 PTy(F32, 11820 qTy))), 11821 LW(4,32)), 11822 Mop(Snd, 11823 Var("s", 11824 PTy(F32, 11825 qTy)))]), 11826 TP[LU, 11827 Var("state", 11828 PTy(F32,qTy))])))]), 11829 TP[ITB([(bVar"wordhigher", 11830 Bop(Add, 11831 ITE(bVar"increment", 11832 Var("v",F32), 11833 Bop(Sub,Var("v",F32), 11834 Var("length",F32))), 11835 LW(4,32))), 11836 (bVar"increment",Var("v",F32))], 11837 Bop(Sub,Var("v",F32), 11838 Var("length",F32))),qVar"s"])), 11839 Let(TP[Var("v0",F32),Var("s",PTy(F32,qTy))], 11840 CS(Apply 11841 (Call 11842 ("MemA",ATy(qTy,PTy(F32,qTy)), 11843 TP[Mop(Fst,Var("s",PTy(F32,qTy))), 11844 LN 4]), 11845 Mop(Snd,Var("s",PTy(F32,qTy)))), 11846 [(TP[Var("v",F32),qVar"s3"], 11847 TP[Var("v",F32), 11848 Mop(Fst,Var("s",PTy(F32,qTy))), 11849 qVar"s3"])]), 11850 Let(Var("s",PTy(F32,qTy)), 11851 ITE(bVar"wback", 11852 TP[Mop(Fst,Var("s",PTy(F32,qTy))), 11853 ITE(Bop(Bit, 11854 Var("registers",FTy 15), 11855 Mop(Cast nTy,Var("n",F4))), 11856 Apply 11857 (Call 11858 ("write'R",ATy(qTy,qTy), 11859 TP[LX F32,Var("n",F4)]), 11860 Mop(Snd, 11861 Var("s",PTy(F32,qTy)))), 11862 Apply 11863 (Call 11864 ("write'R",ATy(qTy,qTy), 11865 TP[ITE(bVar"increment", 11866 Bop(Add, 11867 Var("v",F32), 11868 Var("length", 11869 F32)), 11870 Bop(Sub, 11871 Var("v",F32), 11872 Var("length", 11873 F32))), 11874 Var("n",F4)]), 11875 Mop(Snd, 11876 Var("s",PTy(F32,qTy)))))], 11877 Var("s",PTy(F32,qTy))), 11878 Let(TP[Var("v1",CTy"PSR"), 11879 Var("s",PTy(F32,qTy))], 11880 Let(TP[Var("v",CTy"PSR"),qVar"s3"], 11881 Apply 11882 (Const 11883 ("SPSR", 11884 ATy(qTy,PTy(CTy"PSR",qTy))), 11885 Mop(Snd,Var("s",PTy(F32,qTy)))), 11886 TP[Var("v",CTy"PSR"), 11887 Mop(Fst,Var("s",PTy(F32,qTy))), 11888 qVar"s3"]), 11889 Apply 11890 (Call 11891 ("BranchWritePC",ATy(qTy,qTy), 11892 Var("v0",F32)), 11893 Apply 11894 (Call 11895 ("CPSRWriteByInstr", 11896 ATy(qTy,qTy), 11897 TP[Call 11898 ("reg'PSR",F32, 11899 Var("v1",CTy"PSR")), 11900 LW(15,4),LT]), 11901 Mop(Snd,Var("s",PTy(F32,qTy))))))))))))))) 11902; 11903val dfn'LoadMultipleUserRegisters_def = Def 11904 ("dfn'LoadMultipleUserRegisters", 11905 TP[bVar"increment",bVar"wordhigher",Var("n",F4),Var("registers",FTy 15)], 11906 Close 11907 (qVar"state", 11908 Let(TP[bVar"v",qVar"s"], 11909 Apply 11910 (Call("CurrentModeIsHyp",ATy(qTy,PTy(bTy,qTy)),LU),qVar"state"), 11911 Let(TP[bVar"v",qVar"s"], 11912 Apply 11913 (Call 11914 ("CurrentModeIsUserOrSystem",ATy(qTy,PTy(bTy,qTy)),LU), 11915 ITE(bVar"v", 11916 Apply 11917 (Call("TakeUndefInstrException",ATy(qTy,qTy),LU), 11918 qVar"s"),qVar"s")), 11919 Let(qVar"s", 11920 ITE(bVar"v", 11921 Mop(Snd, 11922 Apply 11923 (Call 11924 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 11925 Call 11926 ("UNPREDICTABLE",CTy"exception", 11927 LS"LoadMultipleUserRegisters")),qVar"s")), 11928 qVar"s"), 11929 Let(TP[Var("v",F32),qVar"s"], 11930 ITE(bVar"increment", 11931 Apply 11932 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 11933 qVar"s"), 11934 Let(TP[Var("v",F32),qVar"s"], 11935 Apply 11936 (Call 11937 ("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 11938 qVar"s"), 11939 TP[Bop(Sub,Var("v",F32), 11940 Bop(Mul,LW(4,32), 11941 Mop(Cast F32, 11942 Call 11943 ("BitCount",nTy, 11944 Var("registers",FTy 15))))), 11945 qVar"s"])), 11946 Apply 11947 (Call("IncPC",ATy(qTy,qTy),LU), 11948 Mop(Snd, 11949 Mop(Snd, 11950 Apply 11951 (For(TP[LN 0,LN 14, 11952 Close 11953 (nVar"i", 11954 Close 11955 (Var("state",PTy(F32,qTy)), 11956 ITE(Bop(Bit, 11957 Var("registers", 11958 FTy 15), 11959 nVar"i"), 11960 Let(Var("s", 11961 PTy(F32,qTy)), 11962 Let(TP[Var("v", 11963 PTy(F32, 11964 PTy(F4, 11965 FTy 5))), 11966 Var("s", 11967 PTy(F32, 11968 qTy))], 11969 Let(TP[Var("v", 11970 F32), 11971 Var("s", 11972 PTy(F32, 11973 qTy))], 11974 CS(Apply 11975 (Call 11976 ("MemA", 11977 ATy(qTy, 11978 PTy(F32, 11979 qTy)), 11980 TP[Mop(Fst, 11981 Var("state", 11982 PTy(F32, 11983 qTy))), 11984 LN 11985 4]), 11986 Mop(Snd, 11987 Var("state", 11988 PTy(F32, 11989 qTy)))), 11990 [(TP[Var("v", 11991 F32), 11992 qVar"s3"], 11993 TP[Var("v", 11994 F32), 11995 Mop(Fst, 11996 Var("state", 11997 PTy(F32, 11998 qTy))), 11999 qVar"s3"])]), 12000 TP[TP[Var("v", 12001 F32), 12002 Mop(Cast 12003 F4, 12004 nVar"i"), 12005 LW(16, 12006 5)], 12007 Var("s", 12008 PTy(F32, 12009 qTy))]), 12010 TP[Mop(Fst, 12011 Var("s", 12012 PTy(F32, 12013 qTy))), 12014 Apply 12015 (Call 12016 ("write'Rmode", 12017 ATy(qTy, 12018 qTy), 12019 Var("v", 12020 PTy(F32, 12021 PTy(F4, 12022 FTy 5)))), 12023 Mop(Snd, 12024 Var("s", 12025 PTy(F32, 12026 qTy))))]), 12027 TP[LU, 12028 Bop(Add, 12029 Mop(Fst, 12030 Var("s", 12031 PTy(F32, 12032 qTy))), 12033 LW(4,32)), 12034 Mop(Snd, 12035 Var("s", 12036 PTy(F32, 12037 qTy)))]), 12038 TP[LU, 12039 Var("state", 12040 PTy(F32,qTy))])))]), 12041 TP[ITE(bVar"wordhigher", 12042 Bop(Add,Var("v",F32),LW(4,32)), 12043 Var("v",F32)),qVar"s"])))))))))) 12044; 12045val dfn'LoadDual_def = Def 12046 ("dfn'LoadDual", 12047 TP[bVar"add",bVar"index",bVar"wback",Var("t",F4),Var("t2",F4), 12048 Var("n",F4),Var("m",CTy"offset2")], 12049 Close 12050 (qVar"state", 12051 Let(TP[bVar"v",qVar"s"], 12052 Apply 12053 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 12054 qVar"state"), 12055 ITE(bVar"v", 12056 Let(TP[Var("v",F32),qVar"s"], 12057 Apply 12058 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 12059 Let(TP[Var("v0",F32),qVar"s"], 12060 CS(Var("m",CTy"offset2"), 12061 [(Call("register_form2",CTy"offset2",Var("m",F4)), 12062 Apply 12063 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 12064 qVar"s")), 12065 (Call 12066 ("immediate_form2",CTy"offset2", 12067 Var("imm32",F32)), 12068 TP[Var("imm32",F32),qVar"s"])]), 12069 Let(Var("offset_addr",F32), 12070 ITE(bVar"add", 12071 Bop(Add,Var("v",F32),Var("v0",F32)), 12072 Bop(Sub,Var("v",F32),Var("v0",F32))), 12073 Let(Var("address",F32), 12074 ITE(bVar"index",Var("offset_addr",F32), 12075 Var("v",F32)), 12076 Let(TP[Var("v",F32),qVar"s"], 12077 Apply 12078 (Call 12079 ("MemA",ATy(qTy,PTy(F32,qTy)), 12080 TP[Var("address",F32),LN 4]), 12081 qVar"s"), 12082 Let(TP[Var("v",F32),qVar"s"], 12083 Apply 12084 (Call 12085 ("MemA",ATy(qTy,PTy(F32,qTy)), 12086 TP[Bop(Add,Var("address",F32), 12087 LW(4,32)),LN 4]), 12088 Apply 12089 (Call 12090 ("write'R",ATy(qTy,qTy), 12091 TP[Var("v",F32),Var("t",F4)]), 12092 qVar"s")), 12093 Let(qVar"s", 12094 Apply 12095 (Call 12096 ("write'R",ATy(qTy,qTy), 12097 TP[Var("v",F32), 12098 Var("t2",F4)]),qVar"s"), 12099 Apply 12100 (Call("IncPC",ATy(qTy,qTy),LU), 12101 ITE(bVar"wback", 12102 Apply 12103 (Call 12104 ("write'R", 12105 ATy(qTy,qTy), 12106 TP[Var("offset_addr", 12107 F32), 12108 Var("n",F4)]), 12109 qVar"s"),qVar"s"))))))))), 12110 qVar"s")))) 12111; 12112val dfn'LoadDualLiteral_def = Def 12113 ("dfn'LoadDualLiteral", 12114 TP[bVar"add",Var("t",F4),Var("t2",F4),Var("imm32",F32)], 12115 Close 12116 (qVar"state", 12117 Let(TP[bVar"v",qVar"s"], 12118 Apply 12119 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),LW(15,4)), 12120 qVar"state"), 12121 ITE(bVar"v", 12122 Let(TP[Var("v",F32),qVar"s"], 12123 ITE(bVar"add", 12124 Let(TP[Var("v",F32),qVar"s"], 12125 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"s"), 12126 TP[Bop(Add, 12127 Call("Align",F32,TP[Var("v",F32),LN 4]), 12128 Var("imm32",F32)),qVar"s"]), 12129 Let(TP[Var("v",F32),qVar"s"], 12130 Apply(Const("PC",ATy(qTy,PTy(F32,qTy))),qVar"s"), 12131 TP[Bop(Sub, 12132 Call("Align",F32,TP[Var("v",F32),LN 4]), 12133 Var("imm32",F32)),qVar"s"])), 12134 Let(TP[Var("v0",F32),qVar"s"], 12135 Apply 12136 (Call 12137 ("MemA",ATy(qTy,PTy(F32,qTy)), 12138 TP[Var("v",F32),LN 4]),qVar"s"), 12139 Let(TP[Var("v",F32),qVar"s"], 12140 Apply 12141 (Call 12142 ("MemA",ATy(qTy,PTy(F32,qTy)), 12143 TP[Bop(Add,Var("v",F32),LW(4,32)),LN 4]), 12144 Apply 12145 (Call 12146 ("write'R",ATy(qTy,qTy), 12147 TP[Var("v0",F32),Var("t",F4)]),qVar"s")), 12148 Apply 12149 (Call("IncPC",ATy(qTy,qTy),LU), 12150 Apply 12151 (Call 12152 ("write'R",ATy(qTy,qTy), 12153 TP[Var("v",F32),Var("t2",F4)]),qVar"s"))))), 12154 qVar"s")))) 12155; 12156val dfn'LoadExclusive_def = Def 12157 ("dfn'LoadExclusive",TP[Var("t",F4),Var("n",F4),Var("imm32",F32)], 12158 Close 12159 (qVar"state", 12160 Let(TP[bVar"v",qVar"s"], 12161 Apply 12162 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 12163 qVar"state"), 12164 ITE(bVar"v", 12165 Let(TP[Var("v",F32),qVar"s"], 12166 Apply 12167 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 12168 Let(TP[Var("v",F32),qVar"s"], 12169 Apply 12170 (Call 12171 ("MemA",ATy(qTy,PTy(F32,qTy)), 12172 TP[Bop(Add,Var("v",F32),Var("imm32",F32)),LN 4]), 12173 qVar"s"), 12174 Apply 12175 (Call("IncPC",ATy(qTy,qTy),LU), 12176 Apply 12177 (Call 12178 ("write'R",ATy(qTy,qTy), 12179 TP[Var("v",F32),Var("t",F4)]),qVar"s")))), 12180 qVar"s")))) 12181; 12182val dfn'LoadExclusiveByte_def = Def 12183 ("dfn'LoadExclusiveByte",TP[Var("t",F4),Var("n",F4)], 12184 Close 12185 (qVar"state", 12186 Let(TP[bVar"v",qVar"s"], 12187 Apply 12188 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 12189 qVar"state"), 12190 ITE(bVar"v", 12191 Let(TP[Var("v",F32),qVar"s"], 12192 Apply 12193 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 12194 Let(TP[Var("v",F8),qVar"s"], 12195 Apply 12196 (Call 12197 ("MemA",ATy(qTy,PTy(F8,qTy)), 12198 TP[Var("v",F32),LN 1]),qVar"s"), 12199 Apply 12200 (Call("IncPC",ATy(qTy,qTy),LU), 12201 Apply 12202 (Call 12203 ("write'R",ATy(qTy,qTy), 12204 TP[Mop(Cast F32,Var("v",F8)),Var("t",F4)]), 12205 qVar"s")))),qVar"s")))) 12206; 12207val dfn'LoadExclusiveHalf_def = Def 12208 ("dfn'LoadExclusiveHalf",TP[Var("t",F4),Var("n",F4)], 12209 Close 12210 (qVar"state", 12211 Let(TP[bVar"v",qVar"s"], 12212 Apply 12213 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 12214 qVar"state"), 12215 ITE(bVar"v", 12216 Let(TP[Var("v",F32),qVar"s"], 12217 Apply 12218 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 12219 Let(TP[Var("v",F16),qVar"s"], 12220 Apply 12221 (Call 12222 ("MemA",ATy(qTy,PTy(F16,qTy)), 12223 TP[Var("v",F32),LN 2]),qVar"s"), 12224 Apply 12225 (Call("IncPC",ATy(qTy,qTy),LU), 12226 Apply 12227 (Call 12228 ("write'R",ATy(qTy,qTy), 12229 TP[Mop(Cast F32,Var("v",F16)),Var("t",F4)]), 12230 qVar"s")))),qVar"s")))) 12231; 12232val dfn'LoadExclusiveDoubleword_def = Def 12233 ("dfn'LoadExclusiveDoubleword",TP[Var("t",F4),Var("t2",F4),Var("n",F4)], 12234 Close 12235 (qVar"state", 12236 Let(TP[bVar"v",qVar"s"], 12237 Apply 12238 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 12239 qVar"state"), 12240 ITE(bVar"v", 12241 Let(TP[Var("v",F32),qVar"s"], 12242 Apply 12243 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 12244 Let(TP[Var("v",F64),qVar"s"], 12245 Apply 12246 (Call 12247 ("MemA",ATy(qTy,PTy(F64,qTy)), 12248 TP[Var("v",F32),LN 8]),qVar"s"), 12249 Let(TP[bVar"v0",qVar"s"], 12250 Let(qVar"s0", 12251 Apply 12252 (Call 12253 ("write'R",ATy(qTy,qTy), 12254 TP[ITE(Apply 12255 (Call 12256 ("BigEndian",ATy(qTy,bTy), 12257 LU),qVar"s"), 12258 EX(Var("v",F64),LN 63,LN 32,F32), 12259 EX(Var("v",F64),LN 31,LN 0,F32)), 12260 Var("t",F4)]),qVar"s"), 12261 TP[Apply 12262 (Call("BigEndian",ATy(qTy,bTy),LU), 12263 qVar"s0"),qVar"s0"]), 12264 Apply 12265 (Call("IncPC",ATy(qTy,qTy),LU), 12266 Apply 12267 (Call 12268 ("write'R",ATy(qTy,qTy), 12269 TP[ITE(bVar"v0", 12270 EX(Var("v",F64),LN 31,LN 0,F32), 12271 EX(Var("v",F64),LN 63,LN 32,F32)), 12272 Var("t2",F4)]),qVar"s"))))),qVar"s")))) 12273; 12274val dfn'StoreWord_def = Def 12275 ("dfn'StoreWord", 12276 TP[bVar"add",bVar"index",bVar"wback",Var("t",F4),Var("n",F4), 12277 Var("m",CTy"offset1")], 12278 Close 12279 (qVar"state", 12280 Let(TP[bVar"v",qVar"s"], 12281 Apply 12282 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 12283 qVar"state"), 12284 ITE(bVar"v", 12285 Let(TP[Var("v",F32),qVar"s"], 12286 Apply 12287 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 12288 Let(TP[Var("v0",F32),qVar"s"], 12289 CS(Var("m",CTy"offset1"), 12290 [(Call 12291 ("register_form1",CTy"offset1", 12292 TP[Var("m",F4),Var("shift_t",CTy"SRType"), 12293 nVar"shift_n"]), 12294 Let(TP[Var("v",F32),qVar"s"], 12295 Apply 12296 (Call 12297 ("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 12298 qVar"s"), 12299 Apply 12300 (Call 12301 ("Shift",ATy(qTy,PTy(F32,qTy)), 12302 TP[Var("v",F32), 12303 Var("shift_t",CTy"SRType"), 12304 nVar"shift_n", 12305 Dest 12306 ("C",bTy, 12307 Dest("CPSR",CTy"PSR",qVar"s"))]), 12308 qVar"s"))), 12309 (Call 12310 ("immediate_form1",CTy"offset1", 12311 Var("imm32",F32)), 12312 TP[Var("imm32",F32),qVar"s"])]), 12313 Let(Var("offset_addr",F32), 12314 ITE(bVar"add", 12315 Bop(Add,Var("v",F32),Var("v0",F32)), 12316 Bop(Sub,Var("v",F32),Var("v0",F32))), 12317 Let(Var("address",F32), 12318 ITE(bVar"index",Var("offset_addr",F32), 12319 Var("v",F32)), 12320 Let(TP[Var("v",F32),qVar"s"], 12321 ITE(EQ(Var("t",F4),LW(15,4)), 12322 Apply 12323 (Call 12324 ("PCStoreValue", 12325 ATy(qTy,PTy(F32,qTy)),LU), 12326 qVar"s"), 12327 Apply 12328 (Call 12329 ("R",ATy(qTy,PTy(F32,qTy)), 12330 Var("t",F4)),qVar"s")), 12331 Let(qVar"s", 12332 ITE(Bop(Or, 12333 Apply 12334 (Call 12335 ("UnalignedSupport", 12336 ATy(qTy,bTy),LU), 12337 qVar"s"), 12338 Bop(Or, 12339 Call 12340 ("Aligned",bTy, 12341 TP[Var("address",F32), 12342 LN 4]), 12343 EQ(Apply 12344 (Call 12345 ("CurrentInstrSet", 12346 ATy(qTy, 12347 CTy"InstrSet"), 12348 LU),qVar"s"), 12349 LC("InstrSet_ARM", 12350 CTy"InstrSet")))), 12351 Apply 12352 (Call 12353 ("write'MemU",ATy(qTy,qTy), 12354 TP[Var("v",F32), 12355 Var("address",F32),LN 4]), 12356 qVar"s"), 12357 Apply 12358 (Call 12359 ("write'MemU",ATy(qTy,qTy), 12360 TP[LX F32, 12361 Var("address",F32),LN 4]), 12362 qVar"s")), 12363 Apply 12364 (Call("IncPC",ATy(qTy,qTy),LU), 12365 ITE(bVar"wback", 12366 Apply 12367 (Call 12368 ("write'R",ATy(qTy,qTy), 12369 TP[Var("offset_addr", 12370 F32),Var("n",F4)]), 12371 qVar"s"),qVar"s")))))))), 12372 qVar"s")))) 12373; 12374val dfn'StoreUnprivileged_def = Def 12375 ("dfn'StoreUnprivileged", 12376 TP[bVar"add",bVar"postindex",Var("t",F4),Var("n",F4), 12377 Var("m",CTy"offset1")], 12378 Close 12379 (qVar"state", 12380 Let(TP[bVar"v",qVar"s"], 12381 Apply 12382 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 12383 qVar"state"), 12384 ITE(bVar"v", 12385 Let(TP[Var("v",F32),qVar"s"], 12386 Apply 12387 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 12388 Let(TP[Var("v0",F32),qVar"s"], 12389 CS(Var("m",CTy"offset1"), 12390 [(Call 12391 ("register_form1",CTy"offset1", 12392 TP[Var("m",F4),Var("shift_t",CTy"SRType"), 12393 nVar"shift_n"]), 12394 Let(TP[Var("v",F32),qVar"s"], 12395 Apply 12396 (Call 12397 ("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 12398 qVar"s"), 12399 Apply 12400 (Call 12401 ("Shift",ATy(qTy,PTy(F32,qTy)), 12402 TP[Var("v",F32), 12403 Var("shift_t",CTy"SRType"), 12404 nVar"shift_n", 12405 Dest 12406 ("C",bTy, 12407 Dest("CPSR",CTy"PSR",qVar"s"))]), 12408 qVar"s"))), 12409 (Call 12410 ("immediate_form1",CTy"offset1", 12411 Var("imm32",F32)), 12412 TP[Var("imm32",F32),qVar"s"])]), 12413 Let(Var("offset_addr",F32), 12414 ITE(bVar"add", 12415 Bop(Add,Var("v",F32),Var("v0",F32)), 12416 Bop(Sub,Var("v",F32),Var("v0",F32))), 12417 Let(Var("address",F32), 12418 ITE(bVar"postindex",Var("v",F32), 12419 Var("offset_addr",F32)), 12420 Let(TP[Var("v",F32),qVar"s"], 12421 ITE(EQ(Var("t",F4),LW(15,4)), 12422 Apply 12423 (Call 12424 ("PCStoreValue", 12425 ATy(qTy,PTy(F32,qTy)),LU), 12426 qVar"s"), 12427 Apply 12428 (Call 12429 ("R",ATy(qTy,PTy(F32,qTy)), 12430 Var("t",F4)),qVar"s")), 12431 Let(qVar"s", 12432 ITE(Bop(Or, 12433 Apply 12434 (Call 12435 ("UnalignedSupport", 12436 ATy(qTy,bTy),LU), 12437 qVar"s"), 12438 Bop(Or, 12439 Call 12440 ("Aligned",bTy, 12441 TP[Var("address",F32), 12442 LN 4]), 12443 EQ(Apply 12444 (Call 12445 ("CurrentInstrSet", 12446 ATy(qTy, 12447 CTy"InstrSet"), 12448 LU),qVar"s"), 12449 LC("InstrSet_ARM", 12450 CTy"InstrSet")))), 12451 Apply 12452 (Call 12453 ("write'MemU_unpriv", 12454 ATy(qTy,qTy), 12455 TP[Var("v",F32), 12456 Var("address",F32),LN 4]), 12457 qVar"s"), 12458 Apply 12459 (Call 12460 ("write'MemU_unpriv", 12461 ATy(qTy,qTy), 12462 TP[LX F32, 12463 Var("address",F32),LN 4]), 12464 qVar"s")), 12465 Apply 12466 (Call("IncPC",ATy(qTy,qTy),LU), 12467 ITE(bVar"postindex", 12468 Apply 12469 (Call 12470 ("write'R",ATy(qTy,qTy), 12471 TP[Var("offset_addr", 12472 F32),Var("n",F4)]), 12473 qVar"s"),qVar"s")))))))), 12474 qVar"s")))) 12475; 12476val dfn'StoreByte_def = Def 12477 ("dfn'StoreByte", 12478 TP[bVar"add",bVar"index",bVar"wback",Var("t",F4),Var("n",F4), 12479 Var("m",CTy"offset1")], 12480 Close 12481 (qVar"state", 12482 Let(TP[bVar"v",qVar"s"], 12483 Apply 12484 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 12485 qVar"state"), 12486 ITE(bVar"v", 12487 Let(TP[Var("v",F32),qVar"s"], 12488 Apply 12489 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 12490 Let(TP[Var("v0",F32),qVar"s"], 12491 CS(Var("m",CTy"offset1"), 12492 [(Call 12493 ("register_form1",CTy"offset1", 12494 TP[Var("m",F4),Var("shift_t",CTy"SRType"), 12495 nVar"shift_n"]), 12496 Let(TP[Var("v",F32),qVar"s"], 12497 Apply 12498 (Call 12499 ("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 12500 qVar"s"), 12501 Apply 12502 (Call 12503 ("Shift",ATy(qTy,PTy(F32,qTy)), 12504 TP[Var("v",F32), 12505 Var("shift_t",CTy"SRType"), 12506 nVar"shift_n", 12507 Dest 12508 ("C",bTy, 12509 Dest("CPSR",CTy"PSR",qVar"s"))]), 12510 qVar"s"))), 12511 (Call 12512 ("immediate_form1",CTy"offset1", 12513 Var("imm32",F32)), 12514 TP[Var("imm32",F32),qVar"s"])]), 12515 Let(Var("offset_addr",F32), 12516 ITE(bVar"add", 12517 Bop(Add,Var("v",F32),Var("v0",F32)), 12518 Bop(Sub,Var("v",F32),Var("v0",F32))), 12519 Let(qVar"s", 12520 Let(TP[Var("v0",F32),qVar"s"], 12521 Apply 12522 (Call 12523 ("R",ATy(qTy,PTy(F32,qTy)), 12524 Var("t",F4)),qVar"s"), 12525 Apply 12526 (Call 12527 ("write'MemU",ATy(qTy,qTy), 12528 TP[EX(Var("v0",F32),LN 7,LN 0,F8), 12529 ITE(bVar"index", 12530 Var("offset_addr",F32), 12531 Var("v",F32)),LN 1]), 12532 qVar"s")), 12533 Apply 12534 (Call("IncPC",ATy(qTy,qTy),LU), 12535 ITE(bVar"wback", 12536 Apply 12537 (Call 12538 ("write'R",ATy(qTy,qTy), 12539 TP[Var("offset_addr",F32), 12540 Var("n",F4)]),qVar"s"), 12541 qVar"s")))))),qVar"s")))) 12542; 12543val dfn'StoreByteUnprivileged_def = Def 12544 ("dfn'StoreByteUnprivileged", 12545 TP[bVar"add",bVar"postindex",Var("t",F4),Var("n",F4), 12546 Var("m",CTy"offset1")], 12547 Close 12548 (qVar"state", 12549 Let(TP[bVar"v",qVar"s"], 12550 Apply 12551 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 12552 qVar"state"), 12553 ITE(bVar"v", 12554 Let(TP[Var("v",F32),qVar"s"], 12555 Apply 12556 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 12557 Let(TP[Var("v0",F32),qVar"s"], 12558 CS(Var("m",CTy"offset1"), 12559 [(Call 12560 ("register_form1",CTy"offset1", 12561 TP[Var("m",F4),Var("shift_t",CTy"SRType"), 12562 nVar"shift_n"]), 12563 Let(TP[Var("v",F32),qVar"s"], 12564 Apply 12565 (Call 12566 ("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 12567 qVar"s"), 12568 Apply 12569 (Call 12570 ("Shift",ATy(qTy,PTy(F32,qTy)), 12571 TP[Var("v",F32), 12572 Var("shift_t",CTy"SRType"), 12573 nVar"shift_n", 12574 Dest 12575 ("C",bTy, 12576 Dest("CPSR",CTy"PSR",qVar"s"))]), 12577 qVar"s"))), 12578 (Call 12579 ("immediate_form1",CTy"offset1", 12580 Var("imm32",F32)), 12581 TP[Var("imm32",F32),qVar"s"])]), 12582 Let(Var("offset_addr",F32), 12583 ITE(bVar"add", 12584 Bop(Add,Var("v",F32),Var("v0",F32)), 12585 Bop(Sub,Var("v",F32),Var("v0",F32))), 12586 Let(qVar"s", 12587 Let(TP[Var("v0",F32),qVar"s"], 12588 Apply 12589 (Call 12590 ("R",ATy(qTy,PTy(F32,qTy)), 12591 Var("t",F4)),qVar"s"), 12592 Apply 12593 (Call 12594 ("write'MemU_unpriv",ATy(qTy,qTy), 12595 TP[EX(Var("v0",F32),LN 7,LN 0,F8), 12596 ITE(bVar"postindex", 12597 Var("v",F32), 12598 Var("offset_addr",F32)), 12599 LN 1]),qVar"s")), 12600 Apply 12601 (Call("IncPC",ATy(qTy,qTy),LU), 12602 ITE(bVar"postindex", 12603 Apply 12604 (Call 12605 ("write'R",ATy(qTy,qTy), 12606 TP[Var("offset_addr",F32), 12607 Var("n",F4)]),qVar"s"), 12608 qVar"s")))))),qVar"s")))) 12609; 12610val dfn'StoreHalf_def = Def 12611 ("dfn'StoreHalf", 12612 TP[bVar"add",bVar"index",bVar"wback",Var("t",F4),Var("n",F4), 12613 Var("m",CTy"offset1")], 12614 Close 12615 (qVar"state", 12616 Let(TP[bVar"v",qVar"s"], 12617 Apply 12618 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 12619 qVar"state"), 12620 ITE(bVar"v", 12621 Let(TP[Var("v",F32),qVar"s"], 12622 Apply 12623 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 12624 Let(TP[Var("v0",F32),qVar"s"], 12625 CS(Var("m",CTy"offset1"), 12626 [(Call 12627 ("register_form1",CTy"offset1", 12628 TP[Var("m",F4),Var("shift_t",CTy"SRType"), 12629 nVar"shift_n"]), 12630 Let(TP[Var("v",F32),qVar"s"], 12631 Apply 12632 (Call 12633 ("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 12634 qVar"s"), 12635 Apply 12636 (Call 12637 ("Shift",ATy(qTy,PTy(F32,qTy)), 12638 TP[Var("v",F32), 12639 Var("shift_t",CTy"SRType"), 12640 nVar"shift_n", 12641 Dest 12642 ("C",bTy, 12643 Dest("CPSR",CTy"PSR",qVar"s"))]), 12644 qVar"s"))), 12645 (Call 12646 ("immediate_form1",CTy"offset1", 12647 Var("imm32",F32)), 12648 TP[Var("imm32",F32),qVar"s"])]), 12649 Let(Var("offset_addr",F32), 12650 ITE(bVar"add", 12651 Bop(Add,Var("v",F32),Var("v0",F32)), 12652 Bop(Sub,Var("v",F32),Var("v0",F32))), 12653 Let(Var("address",F32), 12654 ITE(bVar"index",Var("offset_addr",F32), 12655 Var("v",F32)), 12656 Let(qVar"s", 12657 ITE(Bop(Or, 12658 Apply 12659 (Call 12660 ("UnalignedSupport", 12661 ATy(qTy,bTy),LU),qVar"s"), 12662 Call 12663 ("Aligned",bTy, 12664 TP[Var("address",F32),LN 2])), 12665 Let(TP[Var("v",F32),qVar"s"], 12666 Apply 12667 (Call 12668 ("R",ATy(qTy,PTy(F32,qTy)), 12669 Var("t",F4)),qVar"s"), 12670 Apply 12671 (Call 12672 ("write'MemU",ATy(qTy,qTy), 12673 TP[EX(Var("v",F32),LN 15, 12674 LN 0,F16), 12675 Var("address",F32),LN 2]), 12676 qVar"s")), 12677 Apply 12678 (Call 12679 ("write'MemU",ATy(qTy,qTy), 12680 TP[LX F16,Var("address",F32), 12681 LN 2]),qVar"s")), 12682 Apply 12683 (Call("IncPC",ATy(qTy,qTy),LU), 12684 ITE(bVar"wback", 12685 Apply 12686 (Call 12687 ("write'R",ATy(qTy,qTy), 12688 TP[Var("offset_addr",F32), 12689 Var("n",F4)]),qVar"s"), 12690 qVar"s"))))))),qVar"s")))) 12691; 12692val dfn'StoreHalfUnprivileged_def = Def 12693 ("dfn'StoreHalfUnprivileged", 12694 TP[bVar"add",bVar"postindex",Var("t",F4),Var("n",F4), 12695 Var("m",CTy"offset2")], 12696 Close 12697 (qVar"state", 12698 Let(TP[bVar"v",qVar"s"], 12699 Apply 12700 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 12701 qVar"state"), 12702 ITE(bVar"v", 12703 Let(TP[Var("v",F32),qVar"s"], 12704 Apply 12705 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 12706 Let(TP[Var("v0",F32),qVar"s"], 12707 CS(Var("m",CTy"offset2"), 12708 [(Call("register_form2",CTy"offset2",Var("m",F4)), 12709 Apply 12710 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 12711 qVar"s")), 12712 (Call 12713 ("immediate_form2",CTy"offset2", 12714 Var("imm32",F32)), 12715 TP[Var("imm32",F32),qVar"s"])]), 12716 Let(Var("offset_addr",F32), 12717 ITE(bVar"add", 12718 Bop(Add,Var("v",F32),Var("v0",F32)), 12719 Bop(Sub,Var("v",F32),Var("v0",F32))), 12720 Let(Var("address",F32), 12721 ITE(bVar"postindex",Var("v",F32), 12722 Var("offset_addr",F32)), 12723 Let(qVar"s", 12724 ITE(Bop(Or, 12725 Apply 12726 (Call 12727 ("UnalignedSupport", 12728 ATy(qTy,bTy),LU),qVar"s"), 12729 Call 12730 ("Aligned",bTy, 12731 TP[Var("address",F32),LN 2])), 12732 Let(TP[Var("v",F32),qVar"s"], 12733 Apply 12734 (Call 12735 ("R",ATy(qTy,PTy(F32,qTy)), 12736 Var("t",F4)),qVar"s"), 12737 Apply 12738 (Call 12739 ("write'MemU_unpriv", 12740 ATy(qTy,qTy), 12741 TP[EX(Var("v",F32),LN 15, 12742 LN 0,F16), 12743 Var("address",F32),LN 2]), 12744 qVar"s")), 12745 Apply 12746 (Call 12747 ("write'MemU_unpriv", 12748 ATy(qTy,qTy), 12749 TP[LX F16,Var("address",F32), 12750 LN 2]),qVar"s")), 12751 Apply 12752 (Call("IncPC",ATy(qTy,qTy),LU), 12753 ITE(bVar"postindex", 12754 Apply 12755 (Call 12756 ("write'R",ATy(qTy,qTy), 12757 TP[Var("offset_addr",F32), 12758 Var("n",F4)]),qVar"s"), 12759 qVar"s"))))))),qVar"s")))) 12760; 12761val dfn'StoreMultiple_def = Def 12762 ("dfn'StoreMultiple", 12763 TP[bVar"increment",bVar"index",bVar"wback",Var("n",F4), 12764 Var("registers",F16)], 12765 Close 12766 (qVar"state", 12767 Let(TP[bVar"v",qVar"s"], 12768 Apply 12769 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 12770 qVar"state"), 12771 ITE(bVar"v", 12772 Let(TP[Var("v",F32),qVar"s"], 12773 Apply 12774 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 12775 Let(Var("length",F32), 12776 Bop(Mul,LW(4,32), 12777 Mop(Cast F32, 12778 Call("BitCount",nTy,Var("registers",F16)))), 12779 Let(Var("s",PTy(F32,qTy)), 12780 Mop(Snd, 12781 Apply 12782 (For(TP[LN 0,LN 14, 12783 Close 12784 (nVar"i", 12785 Close 12786 (Var("state",PTy(F32,qTy)), 12787 ITE(Bop(Bit, 12788 Var("registers",F16), 12789 nVar"i"), 12790 Let(Var("s",PTy(F32,qTy)), 12791 ITE(Bop(And, 12792 EQ(Mop(Cast 12793 F4, 12794 nVar"i"), 12795 Var("n", 12796 F4)), 12797 Bop(And, 12798 bVar"wback", 12799 Mop(Not, 12800 EQ(nVar"i", 12801 Call 12802 ("LowestSetBit", 12803 nTy, 12804 Var("registers", 12805 F16)))))), 12806 TP[Mop(Fst, 12807 Var("state", 12808 PTy(F32, 12809 qTy))), 12810 Apply 12811 (Call 12812 ("write'MemA", 12813 ATy(qTy, 12814 qTy), 12815 TP[LX F32, 12816 Mop(Fst, 12817 Var("state", 12818 PTy(F32, 12819 qTy))), 12820 LN 4]), 12821 Mop(Snd, 12822 Var("state", 12823 PTy(F32, 12824 qTy))))], 12825 Let(TP[Var("v0", 12826 F32), 12827 Var("s", 12828 PTy(F32, 12829 qTy))], 12830 CS(Apply 12831 (Call 12832 ("R", 12833 ATy(qTy, 12834 PTy(F32, 12835 qTy)), 12836 Mop(Cast 12837 F4, 12838 nVar"i")), 12839 Mop(Snd, 12840 Var("state", 12841 PTy(F32, 12842 qTy)))), 12843 [(TP[Var("v", 12844 F32), 12845 qVar"s3"], 12846 TP[Var("v", 12847 F32), 12848 Mop(Fst, 12849 Var("state", 12850 PTy(F32, 12851 qTy))), 12852 qVar"s3"])]), 12853 TP[Mop(Fst, 12854 Var("s", 12855 PTy(F32, 12856 qTy))), 12857 Apply 12858 (Call 12859 ("write'MemA", 12860 ATy(qTy, 12861 qTy), 12862 TP[Var("v0", 12863 F32), 12864 Mop(Fst, 12865 Var("state", 12866 PTy(F32, 12867 qTy))), 12868 LN 12869 4]), 12870 Mop(Snd, 12871 Var("s", 12872 PTy(F32, 12873 qTy))))])), 12874 TP[LU, 12875 Bop(Add, 12876 Mop(Fst, 12877 Var("s", 12878 PTy(F32, 12879 qTy))), 12880 LW(4,32)), 12881 Mop(Snd, 12882 Var("s", 12883 PTy(F32, 12884 qTy)))]), 12885 TP[LU, 12886 Var("state", 12887 PTy(F32,qTy))])))]), 12888 TP[ITB([(EQ(bVar"index",bVar"increment"), 12889 Bop(Add, 12890 ITE(bVar"increment", 12891 Var("v",F32), 12892 Bop(Sub,Var("v",F32), 12893 Var("length",F32))), 12894 LW(4,32))), 12895 (bVar"increment",Var("v",F32))], 12896 Bop(Sub,Var("v",F32), 12897 Var("length",F32))),qVar"s"])), 12898 Let(Var("s",PTy(F32,qTy)), 12899 ITE(Bop(Bit,Var("registers",F16),LN 15), 12900 Let(TP[Var("v0",F32), 12901 Var("s0",PTy(F32,qTy))], 12902 CS(Apply 12903 (Call 12904 ("PCStoreValue", 12905 ATy(qTy,PTy(F32,qTy)),LU), 12906 Mop(Snd,Var("s",PTy(F32,qTy)))), 12907 [(TP[Var("v",F32),qVar"s3"], 12908 TP[Var("v",F32), 12909 Mop(Fst, 12910 Var("s",PTy(F32,qTy))), 12911 qVar"s3"])]), 12912 TP[Mop(Fst,Var("s0",PTy(F32,qTy))), 12913 Apply 12914 (Call 12915 ("write'MemA",ATy(qTy,qTy), 12916 TP[Var("v0",F32), 12917 Mop(Fst, 12918 Var("s",PTy(F32,qTy))), 12919 LN 4]), 12920 Mop(Snd,Var("s0",PTy(F32,qTy))))]), 12921 Var("s",PTy(F32,qTy))), 12922 Apply 12923 (Call("IncPC",ATy(qTy,qTy),LU), 12924 ITE(bVar"wback", 12925 Apply 12926 (Call 12927 ("write'R",ATy(qTy,qTy), 12928 TP[ITE(bVar"increment", 12929 Bop(Add,Var("v",F32), 12930 Var("length",F32)), 12931 Bop(Sub,Var("v",F32), 12932 Var("length",F32))), 12933 Var("n",F4)]), 12934 Mop(Snd,Var("s",PTy(F32,qTy)))), 12935 Mop(Snd,Var("s",PTy(F32,qTy))))))))), 12936 qVar"s")))) 12937; 12938val dfn'StoreMultipleUserRegisters_def = Def 12939 ("dfn'StoreMultipleUserRegisters", 12940 TP[bVar"increment",bVar"wordhigher",Var("n",F4),Var("registers",F16)], 12941 Close 12942 (qVar"state", 12943 Let(TP[bVar"v",qVar"s"], 12944 Apply 12945 (Call("CurrentModeIsHyp",ATy(qTy,PTy(bTy,qTy)),LU),qVar"state"), 12946 Let(TP[bVar"v",qVar"s"], 12947 Apply 12948 (Call 12949 ("CurrentModeIsUserOrSystem",ATy(qTy,PTy(bTy,qTy)),LU), 12950 ITE(bVar"v", 12951 Apply 12952 (Call("TakeUndefInstrException",ATy(qTy,qTy),LU), 12953 qVar"s"),qVar"s")), 12954 Let(qVar"s", 12955 ITE(bVar"v", 12956 Mop(Snd, 12957 Apply 12958 (Call 12959 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 12960 Call 12961 ("UNPREDICTABLE",CTy"exception", 12962 LS"StoreMultipleUserRegisters")), 12963 qVar"s")),qVar"s"), 12964 Let(TP[Var("v",F32),qVar"s"], 12965 ITE(bVar"increment", 12966 Apply 12967 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 12968 qVar"s"), 12969 Let(TP[Var("v",F32),qVar"s"], 12970 Apply 12971 (Call 12972 ("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 12973 qVar"s"), 12974 TP[Bop(Sub,Var("v",F32), 12975 Bop(Mul,LW(4,32), 12976 Mop(Cast F32, 12977 Call 12978 ("BitCount",nTy, 12979 Var("registers",F16))))), 12980 qVar"s"])), 12981 Let(Var("s",PTy(F32,qTy)), 12982 Mop(Snd, 12983 Apply 12984 (For(TP[LN 0,LN 14, 12985 Close 12986 (nVar"i", 12987 Close 12988 (Var("state",PTy(F32,qTy)), 12989 ITE(Bop(Bit, 12990 Var("registers",F16), 12991 nVar"i"), 12992 Let(Var("s",PTy(F32,qTy)), 12993 Let(TP[Var("v0",F32), 12994 Var("s", 12995 PTy(F32, 12996 qTy))], 12997 CS(Apply 12998 (Call 12999 ("Rmode", 13000 ATy(qTy, 13001 PTy(F32, 13002 qTy)), 13003 TP[Mop(Cast 13004 F4, 13005 nVar"i"), 13006 LW(16, 13007 5)]), 13008 Mop(Snd, 13009 Var("state", 13010 PTy(F32, 13011 qTy)))), 13012 [(TP[Var("v", 13013 F32), 13014 qVar"s3"], 13015 TP[Var("v", 13016 F32), 13017 Mop(Fst, 13018 Var("state", 13019 PTy(F32, 13020 qTy))), 13021 qVar"s3"])]), 13022 TP[Mop(Fst, 13023 Var("s", 13024 PTy(F32, 13025 qTy))), 13026 Apply 13027 (Call 13028 ("write'MemA", 13029 ATy(qTy, 13030 qTy), 13031 TP[Var("v0", 13032 F32), 13033 Mop(Fst, 13034 Var("state", 13035 PTy(F32, 13036 qTy))), 13037 LN 4]), 13038 Mop(Snd, 13039 Var("s", 13040 PTy(F32, 13041 qTy))))]), 13042 TP[LU, 13043 Bop(Add, 13044 Mop(Fst, 13045 Var("s", 13046 PTy(F32, 13047 qTy))), 13048 LW(4,32)), 13049 Mop(Snd, 13050 Var("s", 13051 PTy(F32, 13052 qTy)))]), 13053 TP[LU, 13054 Var("state", 13055 PTy(F32,qTy))])))]), 13056 TP[ITE(bVar"wordhigher", 13057 Bop(Add,Var("v",F32),LW(4,32)), 13058 Var("v",F32)),qVar"s"])), 13059 Apply 13060 (Call("IncPC",ATy(qTy,qTy),LU), 13061 ITE(Bop(Bit,Var("registers",F16),LN 15), 13062 Let(TP[Var("v0",F32), 13063 Var("s0",PTy(F32,qTy))], 13064 CS(Apply 13065 (Call 13066 ("PCStoreValue", 13067 ATy(qTy,PTy(F32,qTy)),LU), 13068 Mop(Snd,Var("s",PTy(F32,qTy)))), 13069 [(TP[Var("v",F32),qVar"s3"], 13070 TP[Var("v",F32), 13071 Mop(Fst,Var("s",PTy(F32,qTy))), 13072 qVar"s3"])]), 13073 Apply 13074 (Call 13075 ("write'MemA",ATy(qTy,qTy), 13076 TP[Var("v0",F32), 13077 Mop(Fst, 13078 Var("s",PTy(F32,qTy))), 13079 LN 4]), 13080 Mop(Snd,Var("s0",PTy(F32,qTy))))), 13081 Mop(Snd,Var("s",PTy(F32,qTy)))))))))))) 13082; 13083val dfn'StoreDual_def = Def 13084 ("dfn'StoreDual", 13085 TP[bVar"add",bVar"index",bVar"wback",Var("t",F4),Var("t2",F4), 13086 Var("n",F4),Var("m",CTy"offset2")], 13087 Close 13088 (qVar"state", 13089 Let(TP[bVar"v",qVar"s"], 13090 Apply 13091 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 13092 qVar"state"), 13093 ITE(bVar"v", 13094 Let(TP[Var("v",F32),qVar"s"], 13095 Apply 13096 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 13097 Let(TP[Var("v0",F32),qVar"s"], 13098 CS(Var("m",CTy"offset2"), 13099 [(Call("register_form2",CTy"offset2",Var("m",F4)), 13100 Apply 13101 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("m",F4)), 13102 qVar"s")), 13103 (Call 13104 ("immediate_form2",CTy"offset2", 13105 Var("imm32",F32)), 13106 TP[Var("imm32",F32),qVar"s"])]), 13107 Let(Var("offset_addr",F32), 13108 ITE(bVar"add", 13109 Bop(Add,Var("v",F32),Var("v0",F32)), 13110 Bop(Sub,Var("v",F32),Var("v0",F32))), 13111 Let(Var("address",F32), 13112 ITE(bVar"index",Var("offset_addr",F32), 13113 Var("v",F32)), 13114 Let(qVar"s", 13115 Let(TP[Var("v",F32),qVar"s"], 13116 Apply 13117 (Call 13118 ("R",ATy(qTy,PTy(F32,qTy)), 13119 Var("t2",F4)), 13120 Let(TP[Var("v",F32),qVar"s"], 13121 Apply 13122 (Call 13123 ("R", 13124 ATy(qTy,PTy(F32,qTy)), 13125 Var("t",F4)),qVar"s"), 13126 Apply 13127 (Call 13128 ("write'MemA", 13129 ATy(qTy,qTy), 13130 TP[Var("v",F32), 13131 Var("address",F32), 13132 LN 4]),qVar"s"))), 13133 Apply 13134 (Call 13135 ("write'MemA",ATy(qTy,qTy), 13136 TP[Var("v",F32), 13137 Bop(Add,Var("address",F32), 13138 LW(4,32)),LN 4]), 13139 qVar"s")), 13140 Apply 13141 (Call("IncPC",ATy(qTy,qTy),LU), 13142 ITE(bVar"wback", 13143 Apply 13144 (Call 13145 ("write'R",ATy(qTy,qTy), 13146 TP[Var("offset_addr",F32), 13147 Var("n",F4)]),qVar"s"), 13148 qVar"s"))))))),qVar"s")))) 13149; 13150val dfn'StoreExclusive_def = Def 13151 ("dfn'StoreExclusive", 13152 TP[Var("d",F4),Var("t",F4),Var("n",F4),Var("imm32",F32)], 13153 Close 13154 (qVar"state", 13155 Let(TP[bVar"v",qVar"s"], 13156 Apply 13157 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 13158 qVar"state"), 13159 ITE(bVar"v", 13160 Let(TP[Var("v",F32),qVar"s"], 13161 Apply 13162 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 13163 Let(Var("v",F32),Bop(Add,Var("v",F32),Var("imm32",F32)), 13164 Apply 13165 (Call("IncPC",ATy(qTy,qTy),LU), 13166 ITE(Call 13167 ("ExclusiveMonitorsPass",bTy, 13168 TP[Var("v",F32),LN 4]), 13169 Apply 13170 (Call 13171 ("write'R",ATy(qTy,qTy), 13172 TP[LW(0,32),Var("d",F4)]), 13173 Let(TP[Var("v0",F32),qVar"s"], 13174 Apply 13175 (Call 13176 ("R",ATy(qTy,PTy(F32,qTy)), 13177 Var("t",F4)),qVar"s"), 13178 Apply 13179 (Call 13180 ("write'MemA",ATy(qTy,qTy), 13181 TP[Var("v0",F32),Var("v",F32), 13182 LN 4]),qVar"s"))), 13183 Apply 13184 (Call 13185 ("write'R",ATy(qTy,qTy), 13186 TP[LW(1,32),Var("d",F4)]),qVar"s"))))), 13187 qVar"s")))) 13188; 13189val dfn'StoreExclusiveByte_def = Def 13190 ("dfn'StoreExclusiveByte",TP[Var("d",F4),Var("t",F4),Var("n",F4)], 13191 Close 13192 (qVar"state", 13193 Let(TP[bVar"v",qVar"s"], 13194 Apply 13195 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 13196 qVar"state"), 13197 ITE(bVar"v", 13198 Let(TP[Var("v",F32),qVar"s"], 13199 Apply 13200 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 13201 Apply 13202 (Call("IncPC",ATy(qTy,qTy),LU), 13203 ITE(Call 13204 ("ExclusiveMonitorsPass",bTy, 13205 TP[Var("v",F32),LN 1]), 13206 Apply 13207 (Call 13208 ("write'R",ATy(qTy,qTy), 13209 TP[LW(0,32),Var("d",F4)]), 13210 Let(TP[Var("v0",F32),qVar"s"], 13211 Apply 13212 (Call 13213 ("R",ATy(qTy,PTy(F32,qTy)), 13214 Var("t",F4)),qVar"s"), 13215 Apply 13216 (Call 13217 ("write'MemA",ATy(qTy,qTy), 13218 TP[EX(Var("v0",F32),LN 7,LN 0,F8), 13219 Var("v",F32),LN 1]),qVar"s"))), 13220 Apply 13221 (Call 13222 ("write'R",ATy(qTy,qTy), 13223 TP[LW(1,32),Var("d",F4)]),qVar"s")))), 13224 qVar"s")))) 13225; 13226val dfn'StoreExclusiveHalf_def = Def 13227 ("dfn'StoreExclusiveHalf",TP[Var("d",F4),Var("t",F4),Var("n",F4)], 13228 Close 13229 (qVar"state", 13230 Let(TP[bVar"v",qVar"s"], 13231 Apply 13232 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 13233 qVar"state"), 13234 ITE(bVar"v", 13235 Let(TP[Var("v",F32),qVar"s"], 13236 Apply 13237 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 13238 Apply 13239 (Call("IncPC",ATy(qTy,qTy),LU), 13240 ITE(Call 13241 ("ExclusiveMonitorsPass",bTy, 13242 TP[Var("v",F32),LN 2]), 13243 Apply 13244 (Call 13245 ("write'R",ATy(qTy,qTy), 13246 TP[LW(0,32),Var("d",F4)]), 13247 Let(TP[Var("v0",F32),qVar"s"], 13248 Apply 13249 (Call 13250 ("R",ATy(qTy,PTy(F32,qTy)), 13251 Var("t",F4)),qVar"s"), 13252 Apply 13253 (Call 13254 ("write'MemA",ATy(qTy,qTy), 13255 TP[EX(Var("v0",F32),LN 15,LN 0,F16), 13256 Var("v",F32),LN 2]),qVar"s"))), 13257 Apply 13258 (Call 13259 ("write'R",ATy(qTy,qTy), 13260 TP[LW(1,32),Var("d",F4)]),qVar"s")))), 13261 qVar"s")))) 13262; 13263val dfn'StoreExclusiveDoubleword_def = Def 13264 ("dfn'StoreExclusiveDoubleword", 13265 TP[Var("d",F4),Var("t",F4),Var("t2",F4),Var("n",F4)], 13266 Close 13267 (qVar"state", 13268 Let(TP[bVar"v",qVar"s"], 13269 Apply 13270 (Call("NullCheckIfThumbEE",ATy(qTy,PTy(bTy,qTy)),Var("n",F4)), 13271 qVar"state"), 13272 ITE(bVar"v", 13273 Let(TP[Var("v",F32),qVar"s"], 13274 Apply 13275 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"s"), 13276 Let(TP[Var("v0",F64),qVar"s"], 13277 ITE(Apply(Call("BigEndian",ATy(qTy,bTy),LU),qVar"s"), 13278 Let(TP[Var("v",F32),qVar"s"], 13279 Apply 13280 (Call 13281 ("R",ATy(qTy,PTy(F32,qTy)),Var("t",F4)), 13282 qVar"s"), 13283 Let(TP[Var("v0",F32),qVar"s"], 13284 Apply 13285 (Call 13286 ("R",ATy(qTy,PTy(F32,qTy)), 13287 Var("t2",F4)),qVar"s"), 13288 TP[CC[Var("v",F32),Var("v0",F32)], 13289 qVar"s"])), 13290 Let(TP[Var("v",F32),qVar"s"], 13291 Apply 13292 (Call 13293 ("R",ATy(qTy,PTy(F32,qTy)),Var("t2",F4)), 13294 qVar"s"), 13295 Let(TP[Var("v0",F32),qVar"s"], 13296 Apply 13297 (Call 13298 ("R",ATy(qTy,PTy(F32,qTy)), 13299 Var("t",F4)),qVar"s"), 13300 TP[CC[Var("v",F32),Var("v0",F32)], 13301 qVar"s"]))), 13302 Apply 13303 (Call("IncPC",ATy(qTy,qTy),LU), 13304 ITE(Call 13305 ("ExclusiveMonitorsPass",bTy, 13306 TP[Var("v",F32),LN 8]), 13307 Apply 13308 (Call 13309 ("write'R",ATy(qTy,qTy), 13310 TP[LW(0,32),Var("d",F4)]), 13311 Apply 13312 (Call 13313 ("write'MemA",ATy(qTy,qTy), 13314 TP[Var("v0",F64),Var("v",F32),LN 8]), 13315 qVar"s")), 13316 Apply 13317 (Call 13318 ("write'R",ATy(qTy,qTy), 13319 TP[LW(1,32),Var("d",F4)]),qVar"s"))))), 13320 qVar"s")))) 13321; 13322val dfn'ClearExclusive_def = Def 13323 ("dfn'ClearExclusive",qVar"state", 13324 Apply(Call("IncPC",ATy(qTy,qTy),LU),qVar"state")) 13325; 13326val dfn'Swap_def = Def 13327 ("dfn'Swap",TP[bVar"b",Var("t",F4),Var("t2",F4),Var("n",F4)], 13328 Close 13329 (qVar"state", 13330 Let(TP[Var("v",F32),qVar"s"], 13331 Apply(Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)),qVar"state"), 13332 Apply 13333 (Call("IncPC",ATy(qTy,qTy),LU), 13334 ITE(bVar"b", 13335 Let(TP[Var("v0",F8),qVar"s"], 13336 Apply 13337 (Call 13338 ("MemA",ATy(qTy,PTy(F8,qTy)), 13339 TP[Var("v",F32),LN 1]),qVar"s"), 13340 Apply 13341 (Call 13342 ("write'R",ATy(qTy,qTy), 13343 TP[Mop(Cast F32,Var("v0",F8)),Var("t",F4)]), 13344 Let(TP[Var("v0",F32),qVar"s"], 13345 Apply 13346 (Call 13347 ("R",ATy(qTy,PTy(F32,qTy)),Var("t2",F4)), 13348 qVar"s"), 13349 Apply 13350 (Call 13351 ("write'MemA",ATy(qTy,qTy), 13352 TP[EX(Var("v0",F32),LN 7,LN 0,F8), 13353 Var("v",F32),LN 1]),qVar"s")))), 13354 Let(TP[Var("v0",F32),qVar"s"], 13355 Apply 13356 (Call 13357 ("MemA",ATy(qTy,PTy(F32,qTy)), 13358 TP[Var("v",F32),LN 4]),qVar"s"), 13359 Let(TP[Var("v",F32),qVar"s"], 13360 Apply 13361 (Call 13362 ("ROR",ATy(qTy,PTy(F32,qTy)), 13363 TP[Var("v0",F32), 13364 Bop(Mul,LN 8, 13365 Mop(Cast nTy, 13366 EX(Var("v",F32),LN 1,LN 0,FTy 2)))]), 13367 Let(TP[Var("v0",F32),qVar"s"], 13368 Apply 13369 (Call 13370 ("R",ATy(qTy,PTy(F32,qTy)), 13371 Var("t2",F4)),qVar"s"), 13372 Apply 13373 (Call 13374 ("write'MemA",ATy(qTy,qTy), 13375 TP[Var("v0",F32),Var("v",F32),LN 4]), 13376 qVar"s"))), 13377 Apply 13378 (Call 13379 ("write'R",ATy(qTy,qTy), 13380 TP[Var("v",F32),Var("t",F4)]),qVar"s")))))))) 13381; 13382val dfn'ChangeProcessorState_def = Def 13383 ("dfn'ChangeProcessorState", 13384 TP[bVar"enable",bVar"disable",bVar"affectA",bVar"affectI", 13385 bVar"affectF",Var("changemode",OTy(FTy 5))], 13386 Close 13387 (qVar"state", 13388 Let(TP[bVar"v",qVar"s"], 13389 Apply 13390 (Call("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)),LU), 13391 qVar"state"), 13392 Apply 13393 (Call("IncPC",ATy(qTy,qTy),LU), 13394 ITE(bVar"v", 13395 Let(Var("v",CTy"PSR"),Dest("CPSR",CTy"PSR",qVar"s"), 13396 Let(Var("s",PTy(CTy"PSR",qTy)), 13397 ITE(bVar"enable", 13398 Let(Var("s0",CTy"PSR"), 13399 ITE(bVar"affectA", 13400 Rupd("A",TP[Var("v",CTy"PSR"),LF]), 13401 Var("v",CTy"PSR")), 13402 Let(Var("s0",CTy"PSR"), 13403 ITE(bVar"affectI", 13404 Rupd 13405 ("I",TP[Var("s0",CTy"PSR"),LF]), 13406 Var("s0",CTy"PSR")), 13407 TP[ITE(bVar"affectF", 13408 Rupd 13409 ("F", 13410 TP[Var("s0",CTy"PSR"),LF]), 13411 Var("s0",CTy"PSR")),qVar"s"])), 13412 TP[Var("v",CTy"PSR"),qVar"s"]), 13413 Let(Var("s",PTy(CTy"PSR",qTy)), 13414 ITE(bVar"disable", 13415 Let(Var("s",PTy(CTy"PSR",qTy)), 13416 ITE(bVar"affectA", 13417 TP[Rupd 13418 ("A", 13419 TP[Mop(Fst, 13420 Var("s", 13421 PTy(CTy"PSR",qTy))), 13422 LT]), 13423 Mop(Snd, 13424 Var("s",PTy(CTy"PSR",qTy)))], 13425 Var("s",PTy(CTy"PSR",qTy))), 13426 Let(Var("s",PTy(CTy"PSR",qTy)), 13427 ITE(bVar"affectI", 13428 TP[Rupd 13429 ("I", 13430 TP[Mop(Fst, 13431 Var("s", 13432 PTy(CTy"PSR", 13433 qTy))), 13434 LT]), 13435 Mop(Snd, 13436 Var("s", 13437 PTy(CTy"PSR",qTy)))], 13438 Var("s",PTy(CTy"PSR",qTy))), 13439 ITE(bVar"affectF", 13440 TP[Rupd 13441 ("F", 13442 TP[Mop(Fst, 13443 Var("s", 13444 PTy(CTy"PSR", 13445 qTy))), 13446 LT]), 13447 Mop(Snd, 13448 Var("s", 13449 PTy(CTy"PSR",qTy)))], 13450 Var("s",PTy(CTy"PSR",qTy))))), 13451 Var("s",PTy(CTy"PSR",qTy))), 13452 Let(Var("s",PTy(CTy"PSR",qTy)), 13453 CS(Var("changemode",OTy(FTy 5)), 13454 [(Mop(Some,Var("mode",FTy 5)), 13455 TP[Rupd 13456 ("M", 13457 TP[Mop(Fst, 13458 Var("s", 13459 PTy(CTy"PSR",qTy))), 13460 Var("mode",FTy 5)]), 13461 Mop(Snd, 13462 Var("s",PTy(CTy"PSR",qTy)))]), 13463 (LO(FTy 5),Var("s",PTy(CTy"PSR",qTy)))]), 13464 Let(qVar"s1", 13465 Apply 13466 (Call 13467 ("CPSRWriteByInstr", 13468 ATy(qTy,qTy), 13469 TP[Call 13470 ("reg'PSR",F32, 13471 Mop(Fst, 13472 Var("s", 13473 PTy(CTy"PSR",qTy)))), 13474 LW(15,4),LF]), 13475 Mop(Snd,Var("s",PTy(CTy"PSR",qTy)))), 13476 ITE(Bop(And, 13477 EQ(Dest 13478 ("M",FTy 5, 13479 Dest 13480 ("CPSR",CTy"PSR", 13481 qVar"s1")),LW(26,5)), 13482 EQ(Apply 13483 (Call 13484 ("CurrentInstrSet", 13485 ATy(qTy, 13486 CTy"InstrSet"), 13487 LU),qVar"s1"), 13488 LC("InstrSet_ThumbEE", 13489 CTy"InstrSet"))), 13490 Mop(Snd, 13491 Apply 13492 (Call 13493 ("raise'exception", 13494 ATy(qTy,PTy(uTy,qTy)), 13495 Call 13496 ("UNPREDICTABLE", 13497 CTy"exception", 13498 LS 13499 "ChangeProcessorState")), 13500 qVar"s1")),qVar"s1")))))), 13501 qVar"s"))))) 13502; 13503val dfn'ExceptionReturn_def = Def 13504 ("dfn'ExceptionReturn",qVar"state", 13505 Let(TP[bVar"v",qVar"s"], 13506 Apply 13507 (Call("CurrentModeIsUserOrSystem",ATy(qTy,PTy(bTy,qTy)),LU), 13508 qVar"state"), 13509 ITE(Bop(Or,bVar"v", 13510 EQ(Apply 13511 (Call("CurrentInstrSet",ATy(qTy,CTy"InstrSet"),LU), 13512 qVar"s"),LC("InstrSet_ThumbEE",CTy"InstrSet"))), 13513 Mop(Snd, 13514 Apply 13515 (Call 13516 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13517 Call 13518 ("UNPREDICTABLE",CTy"exception",LS"ExceptionReturn")), 13519 qVar"s")), 13520 Let(TP[bVar"v",qVar"s"], 13521 Apply 13522 (Call("CurrentModeIsHyp",ATy(qTy,PTy(bTy,qTy)),LU), 13523 qVar"s"), 13524 Let(TP[Var("v",F32),qVar"s"], 13525 ITE(bVar"v",TP[Dest("ELR_hyp",F32,qVar"s"),qVar"s"], 13526 Apply 13527 (Call("R",ATy(qTy,PTy(F32,qTy)),LW(14,4)),qVar"s")), 13528 Let(TP[Var("v0",CTy"PSR"),qVar"s"], 13529 Apply 13530 (Const("SPSR",ATy(qTy,PTy(CTy"PSR",qTy))),qVar"s"), 13531 Let(qVar"s", 13532 Apply 13533 (Call 13534 ("CPSRWriteByInstr",ATy(qTy,qTy), 13535 TP[Call("reg'PSR",F32,Var("v0",CTy"PSR")), 13536 LW(15,4),LT]),qVar"s"), 13537 ITE(Bop(And, 13538 EQ(Dest 13539 ("M",FTy 5, 13540 Dest("CPSR",CTy"PSR",qVar"s")), 13541 LW(26,5)), 13542 EQ(Apply 13543 (Call 13544 ("CurrentInstrSet", 13545 ATy(qTy,CTy"InstrSet"),LU), 13546 qVar"s"), 13547 LC("InstrSet_ThumbEE",CTy"InstrSet"))), 13548 Mop(Snd, 13549 Apply 13550 (Call 13551 ("raise'exception", 13552 ATy(qTy,PTy(uTy,qTy)), 13553 Call 13554 ("UNPREDICTABLE", 13555 CTy"exception", 13556 LS"ExceptionReturn")),qVar"s")), 13557 Apply 13558 (Call 13559 ("BranchWritePC",ATy(qTy,qTy), 13560 Var("v",F32)),qVar"s"))))))))) 13561; 13562val dfn'HypervisorCall_def = Def 13563 ("dfn'HypervisorCall",Var("imm16",F16), 13564 Close 13565 (qVar"state", 13566 Let(TP[bVar"v",qVar"s"], 13567 ITB([(Mop(Not, 13568 Apply(Call("HaveVirtExt",ATy(qTy,bTy),LU),qVar"state")), 13569 TP[LT,qVar"state"]), 13570 (Apply(Call("IsSecure",ATy(qTy,bTy),LU),qVar"state"), 13571 TP[LT,qVar"state"])], 13572 Let(TP[bVar"v",qVar"s"], 13573 Apply 13574 (Call("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)),LU), 13575 qVar"state"),TP[Mop(Not,bVar"v"),qVar"s"])), 13576 ITB([(bVar"v", 13577 Mop(Snd, 13578 Apply 13579 (Call 13580 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13581 Call 13582 ("UNPREDICTABLE",CTy"exception", 13583 LS"HypervisorCall")),qVar"s"))), 13584 (Mop(Not, 13585 Dest 13586 ("HCE",bTy, 13587 Dest("SCR",CTy"SCR",Dest("CP15",CTy"CP15",qVar"s")))), 13588 Let(TP[bVar"v",qVar"s"], 13589 Apply 13590 (Call("CurrentModeIsHyp",ATy(qTy,PTy(bTy,qTy)),LU), 13591 qVar"s"), 13592 ITE(bVar"v", 13593 Mop(Snd, 13594 Apply 13595 (Call 13596 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13597 Call 13598 ("UNPREDICTABLE",CTy"exception", 13599 LS"HypervisorCall")),qVar"s")), 13600 Apply 13601 (Call("TakeUndefInstrException",ATy(qTy,qTy),LU), 13602 qVar"s"))))], 13603 Apply 13604 (Call("CallHypervisor",ATy(qTy,qTy),Var("imm16",F16)), 13605 qVar"s"))))) 13606; 13607val dfn'MoveToRegisterFromSpecial_def = Def 13608 ("dfn'MoveToRegisterFromSpecial",TP[bVar"read_spsr",Var("d",F4)], 13609 Close 13610 (qVar"state", 13611 Apply 13612 (Call("IncPC",ATy(qTy,qTy),LU), 13613 ITE(bVar"read_spsr", 13614 Let(TP[bVar"v",qVar"s"], 13615 Apply 13616 (Call 13617 ("CurrentModeIsUserOrSystem",ATy(qTy,PTy(bTy,qTy)), 13618 LU),qVar"state"), 13619 ITE(bVar"v", 13620 Mop(Snd, 13621 Apply 13622 (Call 13623 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13624 Call 13625 ("UNPREDICTABLE",CTy"exception", 13626 LS"MoveToRegisterFromSpecial")),qVar"s")), 13627 Let(TP[Var("v",CTy"PSR"),qVar"s"], 13628 Apply 13629 (Const("SPSR",ATy(qTy,PTy(CTy"PSR",qTy))), 13630 qVar"s"), 13631 Apply 13632 (Call 13633 ("write'R",ATy(qTy,qTy), 13634 TP[Call("reg'PSR",F32,Var("v",CTy"PSR")), 13635 Var("d",F4)]),qVar"s")))), 13636 Apply 13637 (Call 13638 ("write'R",ATy(qTy,qTy), 13639 TP[Bop(BAnd, 13640 Call 13641 ("reg'PSR",F32, 13642 Dest("CPSR",CTy"PSR",qVar"state")), 13643 LW(4177462239,32)),Var("d",F4)]),qVar"state"))))) 13644; 13645val dfn'MoveToRegisterFromBankedOrSpecial_def = Def 13646 ("dfn'MoveToRegisterFromBankedOrSpecial", 13647 TP[bVar"read_spsr",Var("SYSm",FTy 5),Var("d",F4)], 13648 Close 13649 (qVar"state", 13650 Let(TP[bVar"v",qVar"s"], 13651 Apply 13652 (Call("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)),LU), 13653 qVar"state"), 13654 ITE(Mop(Not,bVar"v"), 13655 Mop(Snd, 13656 Apply 13657 (Call 13658 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13659 Call 13660 ("UNPREDICTABLE",CTy"exception", 13661 LS"MoveToRegisterFromBankedOrSpecial")),qVar"s")), 13662 Let(Var("v",FTy 5), 13663 Dest("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"s")), 13664 Apply 13665 (Call("IncPC",ATy(qTy,qTy),LU), 13666 ITE(bVar"read_spsr", 13667 Let(qVar"s", 13668 Apply 13669 (Call 13670 ("SPSRAccessValid",ATy(qTy,qTy), 13671 TP[Var("SYSm",FTy 5),Var("v",FTy 5)]), 13672 qVar"s"), 13673 CS(Var("SYSm",FTy 5), 13674 [(LW(14,5), 13675 Apply 13676 (Call 13677 ("write'R",ATy(qTy,qTy), 13678 TP[Call 13679 ("reg'PSR",F32, 13680 Dest 13681 ("SPSR_fiq",CTy"PSR", 13682 qVar"s")),Var("d",F4)]), 13683 qVar"s")), 13684 (LW(16,5), 13685 Apply 13686 (Call 13687 ("write'R",ATy(qTy,qTy), 13688 TP[Call 13689 ("reg'PSR",F32, 13690 Dest 13691 ("SPSR_irq",CTy"PSR", 13692 qVar"s")),Var("d",F4)]), 13693 qVar"s")), 13694 (LW(18,5), 13695 Apply 13696 (Call 13697 ("write'R",ATy(qTy,qTy), 13698 TP[Call 13699 ("reg'PSR",F32, 13700 Dest 13701 ("SPSR_svc",CTy"PSR", 13702 qVar"s")),Var("d",F4)]), 13703 qVar"s")), 13704 (LW(20,5), 13705 Apply 13706 (Call 13707 ("write'R",ATy(qTy,qTy), 13708 TP[Call 13709 ("reg'PSR",F32, 13710 Dest 13711 ("SPSR_abt",CTy"PSR", 13712 qVar"s")),Var("d",F4)]), 13713 qVar"s")), 13714 (LW(22,5), 13715 Apply 13716 (Call 13717 ("write'R",ATy(qTy,qTy), 13718 TP[Call 13719 ("reg'PSR",F32, 13720 Dest 13721 ("SPSR_und",CTy"PSR", 13722 qVar"s")),Var("d",F4)]), 13723 qVar"s")), 13724 (LW(28,5), 13725 Apply 13726 (Call 13727 ("write'R",ATy(qTy,qTy), 13728 TP[Call 13729 ("reg'PSR",F32, 13730 Dest 13731 ("SPSR_mon",CTy"PSR", 13732 qVar"s")),Var("d",F4)]), 13733 qVar"s")), 13734 (LW(30,5), 13735 Apply 13736 (Call 13737 ("write'R",ATy(qTy,qTy), 13738 TP[Call 13739 ("reg'PSR",F32, 13740 Dest 13741 ("SPSR_hyp",CTy"PSR", 13742 qVar"s")),Var("d",F4)]), 13743 qVar"s")),(AVar(FTy 5),qVar"s")])), 13744 Let(qVar"s", 13745 Apply 13746 (Call 13747 ("BankedRegisterAccessValid", 13748 ATy(qTy,qTy), 13749 TP[Var("SYSm",FTy 5),Var("v",FTy 5)]), 13750 qVar"s"), 13751 ITB([(EQ(EX(Var("SYSm",FTy 5),LN 4,LN 3,FTy 2), 13752 LW(0,2)), 13753 Let(TP[Var("v",F32),qVar"s"], 13754 Apply 13755 (Call 13756 ("Rmode", 13757 ATy(qTy,PTy(F32,qTy)), 13758 TP[Bop(Add, 13759 Mop(Cast F4, 13760 EX(Var("SYSm", 13761 FTy 5), 13762 LN 2,LN 0,FTy 3)), 13763 LW(8,4)),LW(16,5)]), 13764 qVar"s"), 13765 Apply 13766 (Call 13767 ("write'R",ATy(qTy,qTy), 13768 TP[Var("v",F32),Var("d",F4)]), 13769 qVar"s"))), 13770 (EQ(EX(Var("SYSm",FTy 5),LN 4,LN 3,FTy 2), 13771 LW(1,2)), 13772 Let(TP[Var("v",F32),qVar"s"], 13773 Apply 13774 (Call 13775 ("Rmode", 13776 ATy(qTy,PTy(F32,qTy)), 13777 TP[Bop(Add, 13778 Mop(Cast F4, 13779 EX(Var("SYSm", 13780 FTy 5), 13781 LN 2,LN 0,FTy 3)), 13782 LW(8,4)),LW(17,5)]), 13783 qVar"s"), 13784 Apply 13785 (Call 13786 ("write'R",ATy(qTy,qTy), 13787 TP[Var("v",F32),Var("d",F4)]), 13788 qVar"s"))), 13789 (EQ(EX(Var("SYSm",FTy 5),LN 4,LN 3,FTy 2), 13790 LW(3,2)), 13791 ITB([(Mop(Not, 13792 Bop(Bit,Var("SYSm",FTy 5), 13793 LN 1)), 13794 Let(TP[Var("v",F32),qVar"s"], 13795 Apply 13796 (Call 13797 ("Rmode", 13798 ATy(qTy,PTy(F32,qTy)), 13799 TP[Bop(Sub,LW(14,4), 13800 Mop(Cast F4, 13801 Bop(Bit, 13802 Var("SYSm", 13803 FTy 5), 13804 LN 0))), 13805 LW(22,5)]),qVar"s"), 13806 Apply 13807 (Call 13808 ("write'R",ATy(qTy,qTy), 13809 TP[Var("v",F32), 13810 Var("d",F4)]), 13811 qVar"s"))), 13812 (Bop(Bit,Var("SYSm",FTy 5),LN 0), 13813 Let(TP[Var("v",F32),qVar"s"], 13814 Apply 13815 (Call 13816 ("Rmode", 13817 ATy(qTy,PTy(F32,qTy)), 13818 TP[LW(13,4),LW(26,5)]), 13819 qVar"s"), 13820 Apply 13821 (Call 13822 ("write'R",ATy(qTy,qTy), 13823 TP[Var("v",F32), 13824 Var("d",F4)]), 13825 qVar"s")))], 13826 Apply 13827 (Call 13828 ("write'R",ATy(qTy,qTy), 13829 TP[Dest 13830 ("ELR_hyp",F32,qVar"s"), 13831 Var("d",F4)]),qVar"s")))], 13832 Let(Var("s0",FTy 5), 13833 BFI(LN 4,LN 4,Mop(Cast F1,LT), 13834 BFI(LN 3,LN 3, 13835 Mop(Cast F1, 13836 Bop(And, 13837 Bop(Bit, 13838 Var("SYSm",FTy 5), 13839 LN 2), 13840 Bop(Bit, 13841 Var("SYSm",FTy 5), 13842 LN 1))), 13843 BFI(LN 2,LN 2, 13844 Mop(Cast F1, 13845 Bop(And, 13846 Bop(Bit, 13847 Var("SYSm", 13848 FTy 5), 13849 LN 2), 13850 Mop(Not, 13851 Bop(Bit, 13852 Var("SYSm", 13853 FTy 5), 13854 LN 1)))), 13855 BFI(LN 1,LN 1, 13856 Mop(Cast F1,LT), 13857 BFI(LN 0,LN 0, 13858 Mop(Cast F1, 13859 Bop(Or, 13860 Bop(Bit, 13861 Var("SYSm", 13862 FTy 5), 13863 LN 2), 13864 Bop(Bit, 13865 Var("SYSm", 13866 FTy 5), 13867 LN 1))), 13868 LX(FTy 5)))))), 13869 ITE(EQ(Var("v",FTy 5),Var("s0",FTy 5)), 13870 Mop(Snd, 13871 Apply 13872 (Call 13873 ("raise'exception", 13874 ATy(qTy,PTy(uTy,qTy)), 13875 Call 13876 ("UNPREDICTABLE", 13877 CTy"exception", 13878 LS 13879 "MoveToRegisterFromBankedOrSpecial")), 13880 qVar"s")), 13881 Let(TP[Var("v",PTy(F32,F4)), 13882 Var("s",PTy(FTy 5,qTy))], 13883 Let(TP[Var("v",F32), 13884 Var("s",PTy(FTy 5,qTy))], 13885 Let(TP[Var("v",F32), 13886 qVar"s3"], 13887 Apply 13888 (Call 13889 ("Rmode", 13890 ATy(qTy, 13891 PTy(F32,qTy)), 13892 TP[Bop(Sub, 13893 LW(14,4), 13894 Mop(Cast 13895 F4, 13896 Bop(Bit, 13897 Var("SYSm", 13898 FTy 5), 13899 LN 13900 0))), 13901 Var("s0", 13902 FTy 5)]), 13903 qVar"s"), 13904 TP[Var("v",F32), 13905 Var("s0",FTy 5), 13906 qVar"s3"]), 13907 TP[TP[Var("v",F32), 13908 Var("d",F4)], 13909 Var("s",PTy(FTy 5,qTy))]), 13910 Apply 13911 (Call 13912 ("write'R",ATy(qTy,qTy), 13913 Var("v",PTy(F32,F4))), 13914 Mop(Snd, 13915 Var("s",PTy(FTy 5,qTy)))))))))))))))) 13916; 13917val dfn'MoveToSpecialFromImmediate_def = Def 13918 ("dfn'MoveToSpecialFromImmediate", 13919 TP[bVar"write_spsr",Var("imm32",F32),Var("mask",F4)], 13920 Close 13921 (qVar"state", 13922 Apply 13923 (Call("IncPC",ATy(qTy,qTy),LU), 13924 ITE(bVar"write_spsr", 13925 Apply 13926 (Call 13927 ("SPSRWriteByInstr",ATy(qTy,qTy), 13928 TP[Var("imm32",F32),Var("mask",F4)]),qVar"state"), 13929 Let(qVar"s", 13930 Apply 13931 (Call 13932 ("CPSRWriteByInstr",ATy(qTy,qTy), 13933 TP[Var("imm32",F32),Var("mask",F4),LF]),qVar"state"), 13934 ITE(Bop(And, 13935 EQ(Dest("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"s")), 13936 LW(26,5)), 13937 EQ(Apply 13938 (Call 13939 ("CurrentInstrSet", 13940 ATy(qTy,CTy"InstrSet"),LU),qVar"s"), 13941 LC("InstrSet_ThumbEE",CTy"InstrSet"))), 13942 Mop(Snd, 13943 Apply 13944 (Call 13945 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 13946 Call 13947 ("UNPREDICTABLE",CTy"exception", 13948 LS"MoveToSpecialFromImmediate")),qVar"s")), 13949 qVar"s")))))) 13950; 13951val dfn'MoveToSpecialFromRegister_def = Def 13952 ("dfn'MoveToSpecialFromRegister", 13953 TP[bVar"write_spsr",Var("n",F4),Var("mask",F4)], 13954 Close 13955 (qVar"state", 13956 Apply 13957 (Call("IncPC",ATy(qTy,qTy),LU), 13958 ITE(bVar"write_spsr", 13959 Let(TP[Var("v",F32),qVar"s"], 13960 Apply 13961 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 13962 qVar"state"), 13963 Apply 13964 (Call 13965 ("SPSRWriteByInstr",ATy(qTy,qTy), 13966 TP[Var("v",F32),Var("mask",F4)]),qVar"s")), 13967 Let(TP[Var("v",F32),qVar"s"], 13968 Apply 13969 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 13970 qVar"state"), 13971 Let(qVar"s", 13972 Apply 13973 (Call 13974 ("CPSRWriteByInstr",ATy(qTy,qTy), 13975 TP[Var("v",F32),Var("mask",F4),LF]),qVar"s"), 13976 ITE(Bop(And, 13977 EQ(Dest 13978 ("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"s")), 13979 LW(26,5)), 13980 EQ(Apply 13981 (Call 13982 ("CurrentInstrSet", 13983 ATy(qTy,CTy"InstrSet"),LU),qVar"s"), 13984 LC("InstrSet_ThumbEE",CTy"InstrSet"))), 13985 Mop(Snd, 13986 Apply 13987 (Call 13988 ("raise'exception", 13989 ATy(qTy,PTy(uTy,qTy)), 13990 Call 13991 ("UNPREDICTABLE",CTy"exception", 13992 LS"MoveToSpecialFromRegister")), 13993 qVar"s")),qVar"s"))))))) 13994; 13995val dfn'MoveToBankedOrSpecialRegister_def = Def 13996 ("dfn'MoveToBankedOrSpecialRegister", 13997 TP[bVar"write_spsr",Var("SYSm",FTy 5),Var("n",F4)], 13998 Close 13999 (qVar"state", 14000 Let(TP[bVar"v",qVar"s"], 14001 Apply 14002 (Call("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)),LU), 14003 qVar"state"), 14004 ITE(Mop(Not,bVar"v"), 14005 Mop(Snd, 14006 Apply 14007 (Call 14008 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 14009 Call 14010 ("UNPREDICTABLE",CTy"exception", 14011 LS"MoveToBankedOrSpecialRegister")),qVar"s")), 14012 Let(Var("v",FTy 5), 14013 Dest("M",FTy 5,Dest("CPSR",CTy"PSR",qVar"s")), 14014 Apply 14015 (Call("IncPC",ATy(qTy,qTy),LU), 14016 ITE(bVar"write_spsr", 14017 Let(qVar"s", 14018 Apply 14019 (Call 14020 ("SPSRAccessValid",ATy(qTy,qTy), 14021 TP[Var("SYSm",FTy 5),Var("v",FTy 5)]), 14022 qVar"s"), 14023 CS(Var("SYSm",FTy 5), 14024 [(LW(14,5), 14025 Let(TP[Var("v",CTy"PSR"),qVar"s"], 14026 Let(TP[Var("v",PTy(CTy"PSR",F32)), 14027 qVar"s"], 14028 Let(TP[Var("v0",F32),qVar"s0"], 14029 Apply 14030 (Call 14031 ("R", 14032 ATy(qTy,PTy(F32,qTy)), 14033 Var("n",F4)),qVar"s"), 14034 TP[TP[Dest 14035 ("SPSR_fiq", 14036 CTy"PSR",qVar"s"), 14037 Var("v0",F32)], 14038 qVar"s0"]), 14039 TP[Call 14040 ("write'reg'PSR",CTy"PSR", 14041 Var("v",PTy(CTy"PSR",F32))), 14042 qVar"s"]), 14043 Rupd 14044 ("SPSR_fiq", 14045 TP[qVar"s",Var("v",CTy"PSR")]))), 14046 (LW(16,5), 14047 Let(TP[Var("v",CTy"PSR"),qVar"s"], 14048 Let(TP[Var("v",PTy(CTy"PSR",F32)), 14049 qVar"s"], 14050 Let(TP[Var("v0",F32),qVar"s0"], 14051 Apply 14052 (Call 14053 ("R", 14054 ATy(qTy,PTy(F32,qTy)), 14055 Var("n",F4)),qVar"s"), 14056 TP[TP[Dest 14057 ("SPSR_irq", 14058 CTy"PSR",qVar"s"), 14059 Var("v0",F32)], 14060 qVar"s0"]), 14061 TP[Call 14062 ("write'reg'PSR",CTy"PSR", 14063 Var("v",PTy(CTy"PSR",F32))), 14064 qVar"s"]), 14065 Rupd 14066 ("SPSR_irq", 14067 TP[qVar"s",Var("v",CTy"PSR")]))), 14068 (LW(18,5), 14069 Let(TP[Var("v",CTy"PSR"),qVar"s"], 14070 Let(TP[Var("v",PTy(CTy"PSR",F32)), 14071 qVar"s"], 14072 Let(TP[Var("v0",F32),qVar"s0"], 14073 Apply 14074 (Call 14075 ("R", 14076 ATy(qTy,PTy(F32,qTy)), 14077 Var("n",F4)),qVar"s"), 14078 TP[TP[Dest 14079 ("SPSR_svc", 14080 CTy"PSR",qVar"s"), 14081 Var("v0",F32)], 14082 qVar"s0"]), 14083 TP[Call 14084 ("write'reg'PSR",CTy"PSR", 14085 Var("v",PTy(CTy"PSR",F32))), 14086 qVar"s"]), 14087 Rupd 14088 ("SPSR_svc", 14089 TP[qVar"s",Var("v",CTy"PSR")]))), 14090 (LW(20,5), 14091 Let(TP[Var("v",CTy"PSR"),qVar"s"], 14092 Let(TP[Var("v",PTy(CTy"PSR",F32)), 14093 qVar"s"], 14094 Let(TP[Var("v0",F32),qVar"s0"], 14095 Apply 14096 (Call 14097 ("R", 14098 ATy(qTy,PTy(F32,qTy)), 14099 Var("n",F4)),qVar"s"), 14100 TP[TP[Dest 14101 ("SPSR_abt", 14102 CTy"PSR",qVar"s"), 14103 Var("v0",F32)], 14104 qVar"s0"]), 14105 TP[Call 14106 ("write'reg'PSR",CTy"PSR", 14107 Var("v",PTy(CTy"PSR",F32))), 14108 qVar"s"]), 14109 Rupd 14110 ("SPSR_abt", 14111 TP[qVar"s",Var("v",CTy"PSR")]))), 14112 (LW(22,5), 14113 Let(TP[Var("v",CTy"PSR"),qVar"s"], 14114 Let(TP[Var("v",PTy(CTy"PSR",F32)), 14115 qVar"s"], 14116 Let(TP[Var("v0",F32),qVar"s0"], 14117 Apply 14118 (Call 14119 ("R", 14120 ATy(qTy,PTy(F32,qTy)), 14121 Var("n",F4)),qVar"s"), 14122 TP[TP[Dest 14123 ("SPSR_und", 14124 CTy"PSR",qVar"s"), 14125 Var("v0",F32)], 14126 qVar"s0"]), 14127 TP[Call 14128 ("write'reg'PSR",CTy"PSR", 14129 Var("v",PTy(CTy"PSR",F32))), 14130 qVar"s"]), 14131 Rupd 14132 ("SPSR_und", 14133 TP[qVar"s",Var("v",CTy"PSR")]))), 14134 (LW(28,5), 14135 Let(TP[Var("v",CTy"PSR"),qVar"s"], 14136 Let(TP[Var("v",PTy(CTy"PSR",F32)), 14137 qVar"s"], 14138 Let(TP[Var("v0",F32),qVar"s0"], 14139 Apply 14140 (Call 14141 ("R", 14142 ATy(qTy,PTy(F32,qTy)), 14143 Var("n",F4)),qVar"s"), 14144 TP[TP[Dest 14145 ("SPSR_mon", 14146 CTy"PSR",qVar"s"), 14147 Var("v0",F32)], 14148 qVar"s0"]), 14149 TP[Call 14150 ("write'reg'PSR",CTy"PSR", 14151 Var("v",PTy(CTy"PSR",F32))), 14152 qVar"s"]), 14153 Rupd 14154 ("SPSR_mon", 14155 TP[qVar"s",Var("v",CTy"PSR")]))), 14156 (LW(30,5), 14157 Let(TP[Var("v",CTy"PSR"),qVar"s"], 14158 Let(TP[Var("v",PTy(CTy"PSR",F32)), 14159 qVar"s"], 14160 Let(TP[Var("v0",F32),qVar"s0"], 14161 Apply 14162 (Call 14163 ("R", 14164 ATy(qTy,PTy(F32,qTy)), 14165 Var("n",F4)),qVar"s"), 14166 TP[TP[Dest 14167 ("SPSR_hyp", 14168 CTy"PSR",qVar"s"), 14169 Var("v0",F32)], 14170 qVar"s0"]), 14171 TP[Call 14172 ("write'reg'PSR",CTy"PSR", 14173 Var("v",PTy(CTy"PSR",F32))), 14174 qVar"s"]), 14175 Rupd 14176 ("SPSR_hyp", 14177 TP[qVar"s",Var("v",CTy"PSR")]))), 14178 (AVar(FTy 5),qVar"s")])), 14179 Let(qVar"s", 14180 Apply 14181 (Call 14182 ("BankedRegisterAccessValid", 14183 ATy(qTy,qTy), 14184 TP[Var("SYSm",FTy 5),Var("v",FTy 5)]), 14185 qVar"s"), 14186 ITB([(EQ(EX(Var("SYSm",FTy 5),LN 4,LN 3,FTy 2), 14187 LW(0,2)), 14188 Let(TP[Var("v",F32),qVar"s"], 14189 Apply 14190 (Call 14191 ("R",ATy(qTy,PTy(F32,qTy)), 14192 Var("n",F4)),qVar"s"), 14193 Apply 14194 (Call 14195 ("write'Rmode",ATy(qTy,qTy), 14196 TP[Var("v",F32), 14197 Bop(Add, 14198 Mop(Cast F4, 14199 EX(Var("SYSm", 14200 FTy 5), 14201 LN 2,LN 0,FTy 3)), 14202 LW(8,4)),LW(16,5)]), 14203 qVar"s"))), 14204 (EQ(EX(Var("SYSm",FTy 5),LN 4,LN 3,FTy 2), 14205 LW(1,2)), 14206 Let(TP[Var("v",F32),qVar"s"], 14207 Apply 14208 (Call 14209 ("R",ATy(qTy,PTy(F32,qTy)), 14210 Var("n",F4)),qVar"s"), 14211 Apply 14212 (Call 14213 ("write'Rmode",ATy(qTy,qTy), 14214 TP[Var("v",F32), 14215 Bop(Add, 14216 Mop(Cast F4, 14217 EX(Var("SYSm", 14218 FTy 5), 14219 LN 2,LN 0,FTy 3)), 14220 LW(8,4)),LW(17,5)]), 14221 qVar"s"))), 14222 (EQ(EX(Var("SYSm",FTy 5),LN 4,LN 3,FTy 2), 14223 LW(3,2)), 14224 ITB([(Mop(Not, 14225 Bop(Bit,Var("SYSm",FTy 5), 14226 LN 1)), 14227 Let(TP[Var("v",F32),qVar"s"], 14228 Apply 14229 (Call 14230 ("R", 14231 ATy(qTy,PTy(F32,qTy)), 14232 Var("n",F4)),qVar"s"), 14233 Apply 14234 (Call 14235 ("write'Rmode", 14236 ATy(qTy,qTy), 14237 TP[Var("v",F32), 14238 Bop(Sub,LW(14,4), 14239 Mop(Cast F4, 14240 Bop(Bit, 14241 Var("SYSm", 14242 FTy 5), 14243 LN 0))), 14244 LW(22,5)]),qVar"s"))), 14245 (Bop(Bit,Var("SYSm",FTy 5),LN 0), 14246 Let(TP[Var("v",F32),qVar"s"], 14247 Apply 14248 (Call 14249 ("R", 14250 ATy(qTy,PTy(F32,qTy)), 14251 Var("n",F4)),qVar"s"), 14252 Apply 14253 (Call 14254 ("write'Rmode", 14255 ATy(qTy,qTy), 14256 TP[Var("v",F32), 14257 LW(13,4),LW(26,5)]), 14258 qVar"s")))], 14259 Let(TP[Var("v",F32),qVar"s"], 14260 Apply 14261 (Call 14262 ("R", 14263 ATy(qTy,PTy(F32,qTy)), 14264 Var("n",F4)),qVar"s"), 14265 Rupd 14266 ("ELR_hyp", 14267 TP[qVar"s",Var("v",F32)]))))], 14268 Let(Var("s0",FTy 5), 14269 BFI(LN 4,LN 4,Mop(Cast F1,LT), 14270 BFI(LN 3,LN 3, 14271 Mop(Cast F1, 14272 Bop(And, 14273 Bop(Bit, 14274 Var("SYSm",FTy 5), 14275 LN 2), 14276 Bop(Bit, 14277 Var("SYSm",FTy 5), 14278 LN 1))), 14279 BFI(LN 2,LN 2, 14280 Mop(Cast F1, 14281 Bop(And, 14282 Bop(Bit, 14283 Var("SYSm", 14284 FTy 5), 14285 LN 2), 14286 Mop(Not, 14287 Bop(Bit, 14288 Var("SYSm", 14289 FTy 5), 14290 LN 1)))), 14291 BFI(LN 1,LN 1, 14292 Mop(Cast F1,LT), 14293 BFI(LN 0,LN 0, 14294 Mop(Cast F1, 14295 Bop(Or, 14296 Bop(Bit, 14297 Var("SYSm", 14298 FTy 5), 14299 LN 2), 14300 Bop(Bit, 14301 Var("SYSm", 14302 FTy 5), 14303 LN 1))), 14304 LX(FTy 5)))))), 14305 ITE(EQ(Var("v",FTy 5),Var("s0",FTy 5)), 14306 Mop(Snd, 14307 Apply 14308 (Call 14309 ("raise'exception", 14310 ATy(qTy,PTy(uTy,qTy)), 14311 Call 14312 ("UNPREDICTABLE", 14313 CTy"exception", 14314 LS 14315 "MoveToBankedOrSpecialRegister")), 14316 qVar"s")), 14317 Let(TP[Var("v0",F32), 14318 Var("s2",PTy(FTy 5,qTy))], 14319 Let(TP[Var("v",F32),qVar"s3"], 14320 Apply 14321 (Call 14322 ("R", 14323 ATy(qTy, 14324 PTy(F32,qTy)), 14325 Var("n",F4)), 14326 qVar"s"), 14327 TP[Var("v",F32), 14328 Var("s0",FTy 5), 14329 qVar"s3"]), 14330 Apply 14331 (Call 14332 ("write'Rmode", 14333 ATy(qTy,qTy), 14334 TP[Var("v0",F32), 14335 Bop(Sub,LW(14,4), 14336 Mop(Cast F4, 14337 Bop(Bit, 14338 Var("SYSm", 14339 FTy 5), 14340 LN 0))), 14341 Var("s0",FTy 5)]), 14342 Mop(Snd, 14343 Var("s2", 14344 PTy(FTy 5,qTy)))))))))))))))) 14345; 14346val dfn'ReturnFromException_def = Def 14347 ("dfn'ReturnFromException", 14348 TP[bVar"increment",bVar"wordhigher",bVar"wback",Var("n",F4)], 14349 Close 14350 (qVar"state", 14351 Let(TP[bVar"v",qVar"s"], 14352 Apply 14353 (Call("CurrentModeIsHyp",ATy(qTy,PTy(bTy,qTy)),LU),qVar"state"), 14354 ITE(bVar"v", 14355 Apply 14356 (Call("TakeUndefInstrException",ATy(qTy,qTy),LU),qVar"s"), 14357 Let(TP[bVar"v",qVar"s"], 14358 Apply 14359 (Call("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)),LU), 14360 qVar"s"), 14361 ITE(Bop(Or,Mop(Not,bVar"v"), 14362 EQ(Apply 14363 (Call 14364 ("CurrentInstrSet", 14365 ATy(qTy,CTy"InstrSet"),LU),qVar"s"), 14366 LC("InstrSet_ThumbEE",CTy"InstrSet"))), 14367 Mop(Snd, 14368 Apply 14369 (Call 14370 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 14371 Call 14372 ("UNPREDICTABLE",CTy"exception", 14373 LS"ReturnFromException")),qVar"s")), 14374 Let(TP[Var("v",F32),qVar"s"], 14375 Apply 14376 (Call("R",ATy(qTy,PTy(F32,qTy)),Var("n",F4)), 14377 qVar"s"), 14378 Let(Var("address",F32), 14379 ITE(bVar"increment",Var("v",F32), 14380 Bop(Sub,Var("v",F32),LW(8,32))), 14381 Let(Var("address",F32), 14382 ITE(bVar"wordhigher", 14383 Bop(Add,Var("address",F32),LW(4,32)), 14384 Var("address",F32)), 14385 Let(TP[Var("v",F32),qVar"s"], 14386 Apply 14387 (Call 14388 ("MemA",ATy(qTy,PTy(F32,qTy)), 14389 TP[Var("address",F32),LN 4]), 14390 ITE(bVar"wback", 14391 Apply 14392 (Call 14393 ("write'R",ATy(qTy,qTy), 14394 TP[ITE(bVar"increment", 14395 Bop(Add, 14396 Var("v",F32), 14397 LW(8,32)), 14398 Bop(Sub, 14399 Var("v",F32), 14400 LW(8,32))), 14401 Var("n",F4)]), 14402 qVar"s"),qVar"s")), 14403 Let(TP[Var("v0",F32),qVar"s"], 14404 Apply 14405 (Call 14406 ("MemA", 14407 ATy(qTy,PTy(F32,qTy)), 14408 TP[Bop(Add, 14409 Var("address",F32), 14410 LW(4,32)),LN 4]), 14411 qVar"s"), 14412 Let(qVar"s", 14413 Apply 14414 (Call 14415 ("CPSRWriteByInstr", 14416 ATy(qTy,qTy), 14417 TP[Var("v0",F32), 14418 LW(15,4),LT]), 14419 qVar"s"), 14420 ITE(Bop(And, 14421 EQ(Dest 14422 ("M",FTy 5, 14423 Dest 14424 ("CPSR", 14425 CTy"PSR", 14426 qVar"s")), 14427 LW(26,5)), 14428 Bop(And, 14429 Dest 14430 ("J",bTy, 14431 Dest 14432 ("CPSR", 14433 CTy"PSR", 14434 qVar"s")), 14435 Dest 14436 ("T",bTy, 14437 Dest 14438 ("CPSR", 14439 CTy"PSR", 14440 qVar"s")))), 14441 Mop(Snd, 14442 Apply 14443 (Call 14444 ("raise'exception", 14445 ATy(qTy, 14446 PTy(uTy, 14447 qTy)), 14448 Call 14449 ("UNPREDICTABLE", 14450 CTy"exception", 14451 LS 14452 "ReturnFromException")), 14453 qVar"s")), 14454 Apply 14455 (Call 14456 ("BranchWritePC", 14457 ATy(qTy,qTy), 14458 Var("v",F32)), 14459 qVar"s")))))))))))))) 14460; 14461val dfn'SecureMonitorCall_def = Def 14462 ("dfn'SecureMonitorCall",Var("imm4",F4), 14463 Close 14464 (qVar"state", 14465 Let(TP[bVar"v",qVar"s"], 14466 ITE(Apply(Call("HaveSecurityExt",ATy(qTy,bTy),LU),qVar"state"), 14467 Apply 14468 (Call("CurrentModeIsNotUser",ATy(qTy,PTy(bTy,qTy)),LU), 14469 qVar"state"),TP[LF,qVar"state"]), 14470 ITE(bVar"v", 14471 Let(TP[bVar"v",qVar"s"], 14472 ITE(Apply(Call("HaveVirtExt",ATy(qTy,bTy),LU),qVar"s"), 14473 ITE(Mop(Not, 14474 Apply 14475 (Call("IsSecure",ATy(qTy,bTy),LU),qVar"s")), 14476 Let(TP[bVar"v",qVar"s"], 14477 Apply 14478 (Call 14479 ("CurrentModeIsHyp", 14480 ATy(qTy,PTy(bTy,qTy)),LU),qVar"s"), 14481 TP[Bop(And,Mop(Not,bVar"v"), 14482 Dest 14483 ("TSC",bTy, 14484 Dest 14485 ("HCR",CTy"HCR", 14486 Dest("CP15",CTy"CP15",qVar"s")))), 14487 qVar"s"]),TP[LF,qVar"s"]),TP[LF,qVar"s"]), 14488 ITB([(bVar"v", 14489 Apply 14490 (Call("TakeHypTrapException",ATy(qTy,qTy),LU), 14491 Apply 14492 (Call 14493 ("WriteHSR",ATy(qTy,qTy), 14494 TP[LW(19,6),LW(0,25)]),qVar"s"))), 14495 (Dest 14496 ("SCD",bTy, 14497 Dest 14498 ("SCR",CTy"SCR", 14499 Dest("CP15",CTy"CP15",qVar"s"))), 14500 ITE(Apply 14501 (Call("IsSecure",ATy(qTy,bTy),LU),qVar"s"), 14502 Mop(Snd, 14503 Apply 14504 (Call 14505 ("raise'exception", 14506 ATy(qTy,PTy(uTy,qTy)), 14507 Call 14508 ("UNPREDICTABLE",CTy"exception", 14509 LS"SecureMonitorCall")),qVar"s")), 14510 Apply 14511 (Call 14512 ("TakeUndefInstrException",ATy(qTy,qTy), 14513 LU),qVar"s")))], 14514 Apply 14515 (Call("TakeSMCException",ATy(qTy,qTy),LU),qVar"s"))), 14516 Apply 14517 (Call("TakeUndefInstrException",ATy(qTy,qTy),LU),qVar"s"))))) 14518; 14519val dfn'SupervisorCall_def = Def 14520 ("dfn'SupervisorCall",Var("imm32",F32), 14521 Close 14522 (qVar"state", 14523 Apply 14524 (Call 14525 ("CallSupervisor",ATy(qTy,qTy), 14526 EX(Var("imm32",F32),LN 15,LN 0,F16)),qVar"state"))) 14527; 14528val dfn'StoreReturnState_def = Def 14529 ("dfn'StoreReturnState", 14530 TP[bVar"increment",bVar"wordhigher",bVar"wback",Var("mode",FTy 5)], 14531 Close 14532 (qVar"state", 14533 Let(TP[bVar"v",qVar"s"], 14534 Apply 14535 (Call("CurrentModeIsHyp",ATy(qTy,PTy(bTy,qTy)),LU),qVar"state"), 14536 ITE(bVar"v", 14537 Apply 14538 (Call("TakeUndefInstrException",ATy(qTy,qTy),LU),qVar"s"), 14539 Let(TP[bVar"v",qVar"s"], 14540 Apply 14541 (Call 14542 ("CurrentModeIsUserOrSystem",ATy(qTy,PTy(bTy,qTy)), 14543 LU),qVar"s"), 14544 ITB([(Bop(Or,bVar"v", 14545 EQ(Apply 14546 (Call 14547 ("CurrentInstrSet", 14548 ATy(qTy,CTy"InstrSet"),LU),qVar"s"), 14549 LC("InstrSet_ThumbEE",CTy"InstrSet"))), 14550 Mop(Snd, 14551 Apply 14552 (Call 14553 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 14554 Call 14555 ("UNPREDICTABLE",CTy"exception", 14556 LS"StoreReturnState")),qVar"s"))), 14557 (EQ(Var("mode",FTy 5),LW(26,5)), 14558 Mop(Snd, 14559 Apply 14560 (Call 14561 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 14562 Call 14563 ("UNPREDICTABLE",CTy"exception", 14564 LS"StoreReturnState")),qVar"s")))], 14565 Let(TP[Var("v",F32),qVar"s"], 14566 Apply 14567 (Call 14568 ("Rmode",ATy(qTy,PTy(F32,qTy)), 14569 TP[LW(13,4),Var("mode",FTy 5)]), 14570 ITE(Mop(Not, 14571 Apply 14572 (Call("IsSecure",ATy(qTy,bTy),LU), 14573 qVar"s")), 14574 ITE(Bop(Or, 14575 EQ(Var("mode",FTy 5),LW(22,5)), 14576 Bop(And, 14577 EQ(Var("mode",FTy 5),LW(17,5)), 14578 Dest 14579 ("RFR",bTy, 14580 Dest 14581 ("NSACR",CTy"NSACR", 14582 Dest 14583 ("CP15",CTy"CP15", 14584 qVar"s"))))), 14585 Mop(Snd, 14586 Apply 14587 (Call 14588 ("raise'exception", 14589 ATy(qTy,PTy(uTy,qTy)), 14590 Call 14591 ("UNPREDICTABLE", 14592 CTy"exception", 14593 LS"StoreReturnState")), 14594 qVar"s")),qVar"s"),qVar"s")), 14595 Let(Var("address",F32), 14596 ITE(bVar"increment",Var("v",F32), 14597 Bop(Sub,Var("v",F32),LW(8,32))), 14598 Let(Var("address",F32), 14599 ITE(bVar"wordhigher", 14600 Bop(Add,Var("address",F32),LW(4,32)), 14601 Var("address",F32)), 14602 Let(qVar"s", 14603 Let(TP[Var("v",CTy"PSR"),qVar"s"], 14604 Apply 14605 (Const 14606 ("SPSR", 14607 ATy(qTy,PTy(CTy"PSR",qTy))), 14608 Let(TP[Var("v",F32),qVar"s"], 14609 Apply 14610 (Const 14611 ("LR", 14612 ATy(qTy, 14613 PTy(F32,qTy))), 14614 qVar"s"), 14615 Apply 14616 (Call 14617 ("write'MemA", 14618 ATy(qTy,qTy), 14619 TP[Var("v",F32), 14620 Var("address", 14621 F32),LN 4]), 14622 qVar"s"))), 14623 Apply 14624 (Call 14625 ("write'MemA",ATy(qTy,qTy), 14626 TP[Call 14627 ("reg'PSR",F32, 14628 Var("v",CTy"PSR")), 14629 Bop(Add, 14630 Var("address",F32), 14631 LW(4,32)),LN 4]), 14632 qVar"s")), 14633 Apply 14634 (Call("IncPC",ATy(qTy,qTy),LU), 14635 ITE(bVar"wback", 14636 Apply 14637 (Call 14638 ("write'Rmode", 14639 ATy(qTy,qTy), 14640 TP[ITE(bVar"increment", 14641 Bop(Add, 14642 Var("v",F32), 14643 LW(8,32)), 14644 Bop(Sub, 14645 Var("v",F32), 14646 LW(8,32))), 14647 LW(13,4), 14648 Var("mode",FTy 5)]), 14649 qVar"s"),qVar"s")))))))))))) 14650; 14651val dfn'Setend_def = Def 14652 ("dfn'Setend",bVar"set_bigend", 14653 Close 14654 (qVar"state", 14655 Apply 14656 (Call("IncPC",ATy(qTy,qTy),LU), 14657 Rupd 14658 ("CPSR", 14659 TP[qVar"state", 14660 Rupd 14661 ("E", 14662 TP[Dest("CPSR",CTy"PSR",qVar"state"),bVar"set_bigend"])])))) 14663; 14664val dfn'Undefined_def = Def 14665 ("dfn'Undefined",Var("imm32",F32), 14666 Close 14667 (qVar"state", 14668 Apply(Call("TakeUndefInstrException",ATy(qTy,qTy),LU),qVar"state"))) 14669; 14670val dfn'NoOperation_def = Def 14671 ("dfn'NoOperation",qVar"state", 14672 Apply(Call("IncPC",ATy(qTy,qTy),LU),qVar"state")) 14673; 14674val dfn'Breakpoint_def = Def 14675 ("dfn'Breakpoint",Var("imm32",F32), 14676 Close(qVar"state",Apply(Call("IncPC",ATy(qTy,qTy),LU),qVar"state"))) 14677; 14678val dfn'Debug_def = Def 14679 ("dfn'Debug",Var("option",F4), 14680 Close(qVar"state",Apply(Call("IncPC",ATy(qTy,qTy),LU),qVar"state"))) 14681; 14682val dfn'DataMemoryBarrier_def = Def 14683 ("dfn'DataMemoryBarrier",Var("option",F4), 14684 Close(qVar"state",Apply(Call("IncPC",ATy(qTy,qTy),LU),qVar"state"))) 14685; 14686val dfn'DataSynchronizationBarrier_def = Def 14687 ("dfn'DataSynchronizationBarrier",Var("option",F4), 14688 Close(qVar"state",Apply(Call("IncPC",ATy(qTy,qTy),LU),qVar"state"))) 14689; 14690val dfn'InstructionSynchronizationBarrier_def = Def 14691 ("dfn'InstructionSynchronizationBarrier",Var("option",F4), 14692 Close(qVar"state",Apply(Call("IncPC",ATy(qTy,qTy),LU),qVar"state"))) 14693; 14694val dfn'PreloadData_def = Def 14695 ("dfn'PreloadData", 14696 TP[bVar"add",bVar"is_pldw",Var("n",F4),Var("m",CTy"offset1")], 14697 Close(qVar"state",Apply(Call("IncPC",ATy(qTy,qTy),LU),qVar"state"))) 14698; 14699val dfn'PreloadDataLiteral_def = Def 14700 ("dfn'PreloadDataLiteral",TP[bVar"add",Var("imm32",F32)], 14701 Close(qVar"state",Apply(Call("IncPC",ATy(qTy,qTy),LU),qVar"state"))) 14702; 14703val dfn'PreloadInstruction_def = Def 14704 ("dfn'PreloadInstruction", 14705 TP[bVar"add",Var("n",F4),Var("m",CTy"offset1")], 14706 Close(qVar"state",Apply(Call("IncPC",ATy(qTy,qTy),LU),qVar"state"))) 14707; 14708val dfn'SendEvent_def = Def 14709 ("dfn'SendEvent",qVar"state", 14710 Apply(Call("IncPC",ATy(qTy,qTy),LU),qVar"state")) 14711; 14712val dfn'WaitForEvent_def = Def 14713 ("dfn'WaitForEvent",qVar"state", 14714 Apply(Call("IncPC",ATy(qTy,qTy),LU),qVar"state")) 14715; 14716val dfn'WaitForInterrupt_def = Def 14717 ("dfn'WaitForInterrupt",qVar"state", 14718 Apply(Call("IncPC",ATy(qTy,qTy),LU),qVar"state")) 14719; 14720val dfn'Yield_def = Def 14721 ("dfn'Yield",qVar"state", 14722 Apply(Call("IncPC",ATy(qTy,qTy),LU),qVar"state")) 14723; 14724val Run_def = Def 14725 ("Run",Var("v0",CTy"instruction"), 14726 Close 14727 (qVar"state", 14728 CS(Var("v0",CTy"instruction"), 14729 [(Const("ClearExclusive",CTy"instruction"), 14730 Apply(Const("dfn'ClearExclusive",ATy(qTy,qTy)),qVar"state")), 14731 (Const("NoOperation",CTy"instruction"), 14732 Apply(Const("dfn'NoOperation",ATy(qTy,qTy)),qVar"state")), 14733 (Call 14734 ("Divide",CTy"instruction", 14735 Var("v152",PTy(bTy,PTy(F4,PTy(F4,F4))))), 14736 Apply 14737 (Call 14738 ("dfn'Divide",ATy(qTy,qTy), 14739 Var("v152",PTy(bTy,PTy(F4,PTy(F4,F4))))),qVar"state")), 14740 (Call("IfThen",CTy"instruction",Var("v153",PTy(F4,F4))), 14741 Apply 14742 (Call("dfn'IfThen",ATy(qTy,qTy),Var("v153",PTy(F4,F4))), 14743 qVar"state")), 14744 (Call 14745 ("Swap",CTy"instruction", 14746 Var("v154",PTy(bTy,PTy(F4,PTy(F4,F4))))), 14747 Apply 14748 (Call 14749 ("dfn'Swap",ATy(qTy,qTy), 14750 Var("v154",PTy(bTy,PTy(F4,PTy(F4,F4))))),qVar"state")), 14751 (Call("Undefined",CTy"instruction",Var("v155",F32)), 14752 Apply 14753 (Call("dfn'Undefined",ATy(qTy,qTy),Var("v155",F32)), 14754 qVar"state")), 14755 (Call("Branch",CTy"instruction",Var("v1",CTy"Branch")), 14756 CS(Var("v1",CTy"Branch"), 14757 [(Call("BranchExchange",CTy"Branch",Var("v2",F4)), 14758 Apply 14759 (Call("dfn'BranchExchange",ATy(qTy,qTy),Var("v2",F4)), 14760 qVar"state")), 14761 (Call 14762 ("BranchLinkExchangeImmediate",CTy"Branch", 14763 Var("v3",PTy(CTy"InstrSet",F32))), 14764 Apply 14765 (Call 14766 ("dfn'BranchLinkExchangeImmediate",ATy(qTy,qTy), 14767 Var("v3",PTy(CTy"InstrSet",F32))),qVar"state")), 14768 (Call 14769 ("BranchLinkExchangeRegister",CTy"Branch",Var("v4",F4)), 14770 Apply 14771 (Call 14772 ("dfn'BranchLinkExchangeRegister",ATy(qTy,qTy), 14773 Var("v4",F4)),qVar"state")), 14774 (Call("BranchTarget",CTy"Branch",Var("v5",F32)), 14775 Apply 14776 (Call("dfn'BranchTarget",ATy(qTy,qTy),Var("v5",F32)), 14777 qVar"state")), 14778 (Call("CheckArray",CTy"Branch",Var("v6",PTy(F4,F4))), 14779 Apply 14780 (Call 14781 ("dfn'CheckArray",ATy(qTy,qTy),Var("v6",PTy(F4,F4))), 14782 qVar"state")), 14783 (Call 14784 ("CompareBranch",CTy"Branch", 14785 Var("v7",PTy(bTy,PTy(F4,F32)))), 14786 Apply 14787 (Call 14788 ("dfn'CompareBranch",ATy(qTy,qTy), 14789 Var("v7",PTy(bTy,PTy(F4,F32)))),qVar"state")), 14790 (Call 14791 ("HandlerBranchLink",CTy"Branch",Var("v8",PTy(bTy,F32))), 14792 Apply 14793 (Call 14794 ("dfn'HandlerBranchLink",ATy(qTy,qTy), 14795 Var("v8",PTy(bTy,F32))),qVar"state")), 14796 (Call 14797 ("HandlerBranchLinkParameter",CTy"Branch", 14798 Var("v9",PTy(F32,F32))), 14799 Apply 14800 (Call 14801 ("dfn'HandlerBranchLinkParameter",ATy(qTy,qTy), 14802 Var("v9",PTy(F32,F32))),qVar"state")), 14803 (Call 14804 ("HandlerBranchParameter",CTy"Branch", 14805 Var("v10",PTy(F32,F32))), 14806 Apply 14807 (Call 14808 ("dfn'HandlerBranchParameter",ATy(qTy,qTy), 14809 Var("v10",PTy(F32,F32))),qVar"state")), 14810 (Call 14811 ("TableBranchByte",CTy"Branch", 14812 Var("v11",PTy(bTy,PTy(F4,F4)))), 14813 Apply 14814 (Call 14815 ("dfn'TableBranchByte",ATy(qTy,qTy), 14816 Var("v11",PTy(bTy,PTy(F4,F4)))),qVar"state"))])), 14817 (Call("Data",CTy"instruction",Var("v12",CTy"Data")), 14818 CS(Var("v12",CTy"Data"), 14819 [(Call 14820 ("AddSub",CTy"Data", 14821 Var("v13",PTy(bTy,PTy(F4,PTy(F4,FTy 12))))), 14822 Apply 14823 (Call 14824 ("dfn'AddSub",ATy(qTy,qTy), 14825 Var("v13",PTy(bTy,PTy(F4,PTy(F4,FTy 12))))), 14826 qVar"state")), 14827 (Call 14828 ("ArithLogicImmediate",CTy"Data", 14829 Var("v14",PTy(F4,PTy(bTy,PTy(F4,PTy(F4,FTy 12)))))), 14830 Apply 14831 (Call 14832 ("dfn'ArithLogicImmediate",ATy(qTy,qTy), 14833 Var("v14",PTy(F4,PTy(bTy,PTy(F4,PTy(F4,FTy 12)))))), 14834 qVar"state")), 14835 (Call("CountLeadingZeroes",CTy"Data",Var("v15",PTy(F4,F4))), 14836 Apply 14837 (Call 14838 ("dfn'CountLeadingZeroes",ATy(qTy,qTy), 14839 Var("v15",PTy(F4,F4))),qVar"state")), 14840 (Call 14841 ("Move",CTy"Data", 14842 Var("v16",PTy(bTy,PTy(bTy,PTy(F4,FTy 12))))), 14843 Apply 14844 (Call 14845 ("dfn'Move",ATy(qTy,qTy), 14846 Var("v16",PTy(bTy,PTy(bTy,PTy(F4,FTy 12))))), 14847 qVar"state")), 14848 (Call 14849 ("MoveHalfword",CTy"Data", 14850 Var("v17",PTy(bTy,PTy(F4,F16)))), 14851 Apply 14852 (Call 14853 ("dfn'MoveHalfword",ATy(qTy,qTy), 14854 Var("v17",PTy(bTy,PTy(F4,F16)))),qVar"state")), 14855 (Call 14856 ("Register",CTy"Data", 14857 Var("v18", 14858 PTy(F4, 14859 PTy(bTy, 14860 PTy(F4,PTy(F4,PTy(F4,PTy(CTy"SRType",nTy)))))))), 14861 Apply 14862 (Call 14863 ("dfn'Register",ATy(qTy,qTy), 14864 Var("v18", 14865 PTy(F4, 14866 PTy(bTy, 14867 PTy(F4, 14868 PTy(F4,PTy(F4,PTy(CTy"SRType",nTy)))))))), 14869 qVar"state")), 14870 (Call 14871 ("RegisterShiftedRegister",CTy"Data", 14872 Var("v19", 14873 PTy(F4, 14874 PTy(bTy, 14875 PTy(F4,PTy(F4,PTy(F4,PTy(CTy"SRType",F4)))))))), 14876 Apply 14877 (Call 14878 ("dfn'RegisterShiftedRegister",ATy(qTy,qTy), 14879 Var("v19", 14880 PTy(F4, 14881 PTy(bTy, 14882 PTy(F4, 14883 PTy(F4,PTy(F4,PTy(CTy"SRType",F4)))))))), 14884 qVar"state")), 14885 (Call 14886 ("ShiftImmediate",CTy"Data", 14887 Var("v20", 14888 PTy(bTy, 14889 PTy(bTy,PTy(F4,PTy(F4,PTy(CTy"SRType",nTy))))))), 14890 Apply 14891 (Call 14892 ("dfn'ShiftImmediate",ATy(qTy,qTy), 14893 Var("v20", 14894 PTy(bTy, 14895 PTy(bTy,PTy(F4,PTy(F4,PTy(CTy"SRType",nTy))))))), 14896 qVar"state")), 14897 (Call 14898 ("ShiftRegister",CTy"Data", 14899 Var("v21", 14900 PTy(bTy, 14901 PTy(bTy,PTy(F4,PTy(F4,PTy(CTy"SRType",F4))))))), 14902 Apply 14903 (Call 14904 ("dfn'ShiftRegister",ATy(qTy,qTy), 14905 Var("v21", 14906 PTy(bTy, 14907 PTy(bTy,PTy(F4,PTy(F4,PTy(CTy"SRType",F4))))))), 14908 qVar"state")), 14909 (Call 14910 ("TestCompareImmediate",CTy"Data", 14911 Var("v22",PTy(FTy 2,PTy(F4,FTy 12)))), 14912 Apply 14913 (Call 14914 ("dfn'TestCompareImmediate",ATy(qTy,qTy), 14915 Var("v22",PTy(FTy 2,PTy(F4,FTy 12)))),qVar"state")), 14916 (Call 14917 ("TestCompareRegister",CTy"Data", 14918 Var("v23", 14919 PTy(FTy 2,PTy(F4,PTy(F4,PTy(CTy"SRType",nTy)))))), 14920 Apply 14921 (Call 14922 ("dfn'TestCompareRegister",ATy(qTy,qTy), 14923 Var("v23", 14924 PTy(FTy 2,PTy(F4,PTy(F4,PTy(CTy"SRType",nTy)))))), 14925 qVar"state"))])), 14926 (Call("Hint",CTy"instruction",Var("v24",CTy"Hint")), 14927 CS(Var("v24",CTy"Hint"), 14928 [(Const("SendEvent",CTy"Hint"), 14929 Apply(Const("dfn'SendEvent",ATy(qTy,qTy)),qVar"state")), 14930 (Const("WaitForEvent",CTy"Hint"), 14931 Apply(Const("dfn'WaitForEvent",ATy(qTy,qTy)),qVar"state")), 14932 (Const("WaitForInterrupt",CTy"Hint"), 14933 Apply 14934 (Const("dfn'WaitForInterrupt",ATy(qTy,qTy)),qVar"state")), 14935 (Const("Yield",CTy"Hint"), 14936 Apply(Const("dfn'Yield",ATy(qTy,qTy)),qVar"state")), 14937 (Call("Breakpoint",CTy"Hint",Var("v25",F32)), 14938 Apply 14939 (Call("dfn'Breakpoint",ATy(qTy,qTy),Var("v25",F32)), 14940 qVar"state")), 14941 (Call("DataMemoryBarrier",CTy"Hint",Var("v26",F4)), 14942 Apply 14943 (Call 14944 ("dfn'DataMemoryBarrier",ATy(qTy,qTy),Var("v26",F4)), 14945 qVar"state")), 14946 (Call("DataSynchronizationBarrier",CTy"Hint",Var("v27",F4)), 14947 Apply 14948 (Call 14949 ("dfn'DataSynchronizationBarrier",ATy(qTy,qTy), 14950 Var("v27",F4)),qVar"state")), 14951 (Call("Debug",CTy"Hint",Var("v28",F4)), 14952 Apply 14953 (Call("dfn'Debug",ATy(qTy,qTy),Var("v28",F4)), 14954 qVar"state")), 14955 (Call 14956 ("InstructionSynchronizationBarrier",CTy"Hint", 14957 Var("v29",F4)), 14958 Apply 14959 (Call 14960 ("dfn'InstructionSynchronizationBarrier", 14961 ATy(qTy,qTy),Var("v29",F4)),qVar"state")), 14962 (Call 14963 ("PreloadData",CTy"Hint", 14964 Var("v30",PTy(bTy,PTy(bTy,PTy(F4,CTy"offset1"))))), 14965 Apply 14966 (Call 14967 ("dfn'PreloadData",ATy(qTy,qTy), 14968 Var("v30",PTy(bTy,PTy(bTy,PTy(F4,CTy"offset1"))))), 14969 qVar"state")), 14970 (Call 14971 ("PreloadDataLiteral",CTy"Hint",Var("v31",PTy(bTy,F32))), 14972 Apply 14973 (Call 14974 ("dfn'PreloadDataLiteral",ATy(qTy,qTy), 14975 Var("v31",PTy(bTy,F32))),qVar"state")), 14976 (Call 14977 ("PreloadInstruction",CTy"Hint", 14978 Var("v32",PTy(bTy,PTy(F4,CTy"offset1")))), 14979 Apply 14980 (Call 14981 ("dfn'PreloadInstruction",ATy(qTy,qTy), 14982 Var("v32",PTy(bTy,PTy(F4,CTy"offset1")))), 14983 qVar"state"))])), 14984 (Call("Load",CTy"instruction",Var("v33",CTy"Load")), 14985 CS(Var("v33",CTy"Load"), 14986 [(Call 14987 ("LoadByte",CTy"Load", 14988 Var("v34", 14989 PTy(bTy, 14990 PTy(bTy, 14991 PTy(bTy, 14992 PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))))), 14993 Apply 14994 (Call 14995 ("dfn'LoadByte",ATy(qTy,qTy), 14996 Var("v34", 14997 PTy(bTy, 14998 PTy(bTy, 14999 PTy(bTy, 15000 PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))))), 15001 qVar"state")), 15002 (Call 15003 ("LoadByteLiteral",CTy"Load", 15004 Var("v35",PTy(bTy,PTy(bTy,PTy(F4,F32))))), 15005 Apply 15006 (Call 15007 ("dfn'LoadByteLiteral",ATy(qTy,qTy), 15008 Var("v35",PTy(bTy,PTy(bTy,PTy(F4,F32))))), 15009 qVar"state")), 15010 (Call 15011 ("LoadByteUnprivileged",CTy"Load", 15012 Var("v36", 15013 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))), 15014 Apply 15015 (Call 15016 ("dfn'LoadByteUnprivileged",ATy(qTy,qTy), 15017 Var("v36", 15018 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))), 15019 qVar"state")), 15020 (Call 15021 ("LoadDual",CTy"Load", 15022 Var("v37", 15023 PTy(bTy, 15024 PTy(bTy, 15025 PTy(bTy, 15026 PTy(F4,PTy(F4,PTy(F4,CTy"offset2")))))))), 15027 Apply 15028 (Call 15029 ("dfn'LoadDual",ATy(qTy,qTy), 15030 Var("v37", 15031 PTy(bTy, 15032 PTy(bTy, 15033 PTy(bTy, 15034 PTy(F4,PTy(F4,PTy(F4,CTy"offset2")))))))), 15035 qVar"state")), 15036 (Call 15037 ("LoadDualLiteral",CTy"Load", 15038 Var("v38",PTy(bTy,PTy(F4,PTy(F4,F32))))), 15039 Apply 15040 (Call 15041 ("dfn'LoadDualLiteral",ATy(qTy,qTy), 15042 Var("v38",PTy(bTy,PTy(F4,PTy(F4,F32))))),qVar"state")), 15043 (Call 15044 ("LoadExclusive",CTy"Load", 15045 Var("v39",PTy(F4,PTy(F4,F32)))), 15046 Apply 15047 (Call 15048 ("dfn'LoadExclusive",ATy(qTy,qTy), 15049 Var("v39",PTy(F4,PTy(F4,F32)))),qVar"state")), 15050 (Call("LoadExclusiveByte",CTy"Load",Var("v40",PTy(F4,F4))), 15051 Apply 15052 (Call 15053 ("dfn'LoadExclusiveByte",ATy(qTy,qTy), 15054 Var("v40",PTy(F4,F4))),qVar"state")), 15055 (Call 15056 ("LoadExclusiveDoubleword",CTy"Load", 15057 Var("v41",PTy(F4,PTy(F4,F4)))), 15058 Apply 15059 (Call 15060 ("dfn'LoadExclusiveDoubleword",ATy(qTy,qTy), 15061 Var("v41",PTy(F4,PTy(F4,F4)))),qVar"state")), 15062 (Call("LoadExclusiveHalf",CTy"Load",Var("v42",PTy(F4,F4))), 15063 Apply 15064 (Call 15065 ("dfn'LoadExclusiveHalf",ATy(qTy,qTy), 15066 Var("v42",PTy(F4,F4))),qVar"state")), 15067 (Call 15068 ("LoadHalf",CTy"Load", 15069 Var("v43", 15070 PTy(bTy, 15071 PTy(bTy, 15072 PTy(bTy, 15073 PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))))), 15074 Apply 15075 (Call 15076 ("dfn'LoadHalf",ATy(qTy,qTy), 15077 Var("v43", 15078 PTy(bTy, 15079 PTy(bTy, 15080 PTy(bTy, 15081 PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))))), 15082 qVar"state")), 15083 (Call 15084 ("LoadHalfLiteral",CTy"Load", 15085 Var("v44",PTy(bTy,PTy(bTy,PTy(F4,F32))))), 15086 Apply 15087 (Call 15088 ("dfn'LoadHalfLiteral",ATy(qTy,qTy), 15089 Var("v44",PTy(bTy,PTy(bTy,PTy(F4,F32))))), 15090 qVar"state")), 15091 (Call 15092 ("LoadHalfUnprivileged",CTy"Load", 15093 Var("v45", 15094 PTy(bTy, 15095 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset2"))))))), 15096 Apply 15097 (Call 15098 ("dfn'LoadHalfUnprivileged",ATy(qTy,qTy), 15099 Var("v45", 15100 PTy(bTy, 15101 PTy(bTy, 15102 PTy(bTy,PTy(F4,PTy(F4,CTy"offset2"))))))), 15103 qVar"state")), 15104 (Call 15105 ("LoadLiteral",CTy"Load",Var("v46",PTy(bTy,PTy(F4,F32)))), 15106 Apply 15107 (Call 15108 ("dfn'LoadLiteral",ATy(qTy,qTy), 15109 Var("v46",PTy(bTy,PTy(F4,F32)))),qVar"state")), 15110 (Call 15111 ("LoadMultiple",CTy"Load", 15112 Var("v47",PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,F16)))))), 15113 Apply 15114 (Call 15115 ("dfn'LoadMultiple",ATy(qTy,qTy), 15116 Var("v47",PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,F16)))))), 15117 qVar"state")), 15118 (Call 15119 ("LoadMultipleExceptionReturn",CTy"Load", 15120 Var("v48",PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,FTy 15)))))), 15121 Apply 15122 (Call 15123 ("dfn'LoadMultipleExceptionReturn",ATy(qTy,qTy), 15124 Var("v48",PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,FTy 15)))))), 15125 qVar"state")), 15126 (Call 15127 ("LoadMultipleUserRegisters",CTy"Load", 15128 Var("v49",PTy(bTy,PTy(bTy,PTy(F4,FTy 15))))), 15129 Apply 15130 (Call 15131 ("dfn'LoadMultipleUserRegisters",ATy(qTy,qTy), 15132 Var("v49",PTy(bTy,PTy(bTy,PTy(F4,FTy 15))))), 15133 qVar"state")), 15134 (Call 15135 ("LoadSignedByteUnprivileged",CTy"Load", 15136 Var("v50", 15137 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset2")))))), 15138 Apply 15139 (Call 15140 ("dfn'LoadSignedByteUnprivileged",ATy(qTy,qTy), 15141 Var("v50", 15142 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset2")))))), 15143 qVar"state")), 15144 (Call 15145 ("LoadUnprivileged",CTy"Load", 15146 Var("v51", 15147 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))), 15148 Apply 15149 (Call 15150 ("dfn'LoadUnprivileged",ATy(qTy,qTy), 15151 Var("v51", 15152 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))), 15153 qVar"state")), 15154 (Call 15155 ("LoadWord",CTy"Load", 15156 Var("v52", 15157 PTy(bTy, 15158 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))), 15159 Apply 15160 (Call 15161 ("dfn'LoadWord",ATy(qTy,qTy), 15162 Var("v52", 15163 PTy(bTy, 15164 PTy(bTy, 15165 PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))), 15166 qVar"state"))])), 15167 (Call("Media",CTy"instruction",Var("v53",CTy"Media")), 15168 CS(Var("v53",CTy"Media"), 15169 [(Call 15170 ("BitFieldClearOrInsert",CTy"Media", 15171 Var("v54",PTy(F4,PTy(F4,PTy(nTy,nTy))))), 15172 Apply 15173 (Call 15174 ("dfn'BitFieldClearOrInsert",ATy(qTy,qTy), 15175 Var("v54",PTy(F4,PTy(F4,PTy(nTy,nTy))))),qVar"state")), 15176 (Call 15177 ("BitFieldExtract",CTy"Media", 15178 Var("v55",PTy(bTy,PTy(F4,PTy(F4,PTy(nTy,nTy)))))), 15179 Apply 15180 (Call 15181 ("dfn'BitFieldExtract",ATy(qTy,qTy), 15182 Var("v55",PTy(bTy,PTy(F4,PTy(F4,PTy(nTy,nTy)))))), 15183 qVar"state")), 15184 (Call("ByteReverse",CTy"Media",Var("v56",PTy(F4,F4))), 15185 Apply 15186 (Call 15187 ("dfn'ByteReverse",ATy(qTy,qTy),Var("v56",PTy(F4,F4))), 15188 qVar"state")), 15189 (Call 15190 ("ByteReversePackedHalfword",CTy"Media", 15191 Var("v57",PTy(F4,F4))), 15192 Apply 15193 (Call 15194 ("dfn'ByteReversePackedHalfword",ATy(qTy,qTy), 15195 Var("v57",PTy(F4,F4))),qVar"state")), 15196 (Call 15197 ("ByteReverseSignedHalfword",CTy"Media", 15198 Var("v58",PTy(F4,F4))), 15199 Apply 15200 (Call 15201 ("dfn'ByteReverseSignedHalfword",ATy(qTy,qTy), 15202 Var("v58",PTy(F4,F4))),qVar"state")), 15203 (Call 15204 ("ExtendByte",CTy"Media", 15205 Var("v59",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,nTy)))))), 15206 Apply 15207 (Call 15208 ("dfn'ExtendByte",ATy(qTy,qTy), 15209 Var("v59",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,nTy)))))), 15210 qVar"state")), 15211 (Call 15212 ("ExtendByte16",CTy"Media", 15213 Var("v60",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,nTy)))))), 15214 Apply 15215 (Call 15216 ("dfn'ExtendByte16",ATy(qTy,qTy), 15217 Var("v60",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,nTy)))))), 15218 qVar"state")), 15219 (Call 15220 ("ExtendHalfword",CTy"Media", 15221 Var("v61",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,nTy)))))), 15222 Apply 15223 (Call 15224 ("dfn'ExtendHalfword",ATy(qTy,qTy), 15225 Var("v61",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,nTy)))))), 15226 qVar"state")), 15227 (Call 15228 ("PackHalfword",CTy"Media", 15229 Var("v62", 15230 PTy(CTy"SRType", 15231 PTy(nTy,PTy(bTy,PTy(F4,PTy(F4,F4))))))), 15232 Apply 15233 (Call 15234 ("dfn'PackHalfword",ATy(qTy,qTy), 15235 Var("v62", 15236 PTy(CTy"SRType", 15237 PTy(nTy,PTy(bTy,PTy(F4,PTy(F4,F4))))))), 15238 qVar"state")), 15239 (Call("ReverseBits",CTy"Media",Var("v63",PTy(F4,F4))), 15240 Apply 15241 (Call 15242 ("dfn'ReverseBits",ATy(qTy,qTy),Var("v63",PTy(F4,F4))), 15243 qVar"state")), 15244 (Call 15245 ("Saturate",CTy"Media", 15246 Var("v64", 15247 PTy(CTy"SRType", 15248 PTy(nTy,PTy(nTy,PTy(bTy,PTy(F4,F4))))))), 15249 Apply 15250 (Call 15251 ("dfn'Saturate",ATy(qTy,qTy), 15252 Var("v64", 15253 PTy(CTy"SRType", 15254 PTy(nTy,PTy(nTy,PTy(bTy,PTy(F4,F4))))))), 15255 qVar"state")), 15256 (Call 15257 ("Saturate16",CTy"Media", 15258 Var("v65",PTy(nTy,PTy(bTy,PTy(F4,F4))))), 15259 Apply 15260 (Call 15261 ("dfn'Saturate16",ATy(qTy,qTy), 15262 Var("v65",PTy(nTy,PTy(bTy,PTy(F4,F4))))),qVar"state")), 15263 (Call 15264 ("SaturatingAddSubtract",CTy"Media", 15265 Var("v66",PTy(FTy 2,PTy(F4,PTy(F4,F4))))), 15266 Apply 15267 (Call 15268 ("dfn'SaturatingAddSubtract",ATy(qTy,qTy), 15269 Var("v66",PTy(FTy 2,PTy(F4,PTy(F4,F4))))), 15270 qVar"state")), 15271 (Call 15272 ("SelectBytes",CTy"Media",Var("v67",PTy(F4,PTy(F4,F4)))), 15273 Apply 15274 (Call 15275 ("dfn'SelectBytes",ATy(qTy,qTy), 15276 Var("v67",PTy(F4,PTy(F4,F4)))),qVar"state"))])), 15277 (Call("Multiply",CTy"instruction",Var("v68",CTy"Multiply")), 15278 CS(Var("v68",CTy"Multiply"), 15279 [(Call 15280 ("Multiply32",CTy"Multiply", 15281 Var("v69",PTy(bTy,PTy(F4,PTy(F4,F4))))), 15282 Apply 15283 (Call 15284 ("dfn'Multiply32",ATy(qTy,qTy), 15285 Var("v69",PTy(bTy,PTy(F4,PTy(F4,F4))))),qVar"state")), 15286 (Call 15287 ("MultiplyAccumulate",CTy"Multiply", 15288 Var("v70",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))), 15289 Apply 15290 (Call 15291 ("dfn'MultiplyAccumulate",ATy(qTy,qTy), 15292 Var("v70",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))), 15293 qVar"state")), 15294 (Call 15295 ("MultiplyAccumulateAccumulate",CTy"Multiply", 15296 Var("v71",PTy(F4,PTy(F4,PTy(F4,F4))))), 15297 Apply 15298 (Call 15299 ("dfn'MultiplyAccumulateAccumulate",ATy(qTy,qTy), 15300 Var("v71",PTy(F4,PTy(F4,PTy(F4,F4))))),qVar"state")), 15301 (Call 15302 ("MultiplyLong",CTy"Multiply", 15303 Var("v72", 15304 PTy(bTy, 15305 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))))), 15306 Apply 15307 (Call 15308 ("dfn'MultiplyLong",ATy(qTy,qTy), 15309 Var("v72", 15310 PTy(bTy, 15311 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))))), 15312 qVar"state")), 15313 (Call 15314 ("MultiplySubtract",CTy"Multiply", 15315 Var("v73",PTy(F4,PTy(F4,PTy(F4,F4))))), 15316 Apply 15317 (Call 15318 ("dfn'MultiplySubtract",ATy(qTy,qTy), 15319 Var("v73",PTy(F4,PTy(F4,PTy(F4,F4))))),qVar"state")), 15320 (Call 15321 ("Signed16Multiply32Accumulate",CTy"Multiply", 15322 Var("v74",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))))), 15323 Apply 15324 (Call 15325 ("dfn'Signed16Multiply32Accumulate",ATy(qTy,qTy), 15326 Var("v74", 15327 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))))), 15328 qVar"state")), 15329 (Call 15330 ("Signed16Multiply32Result",CTy"Multiply", 15331 Var("v75",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,F4)))))), 15332 Apply 15333 (Call 15334 ("dfn'Signed16Multiply32Result",ATy(qTy,qTy), 15335 Var("v75",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,F4)))))), 15336 qVar"state")), 15337 (Call 15338 ("Signed16Multiply64Accumulate",CTy"Multiply", 15339 Var("v76",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))))), 15340 Apply 15341 (Call 15342 ("dfn'Signed16Multiply64Accumulate",ATy(qTy,qTy), 15343 Var("v76", 15344 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))))), 15345 qVar"state")), 15346 (Call 15347 ("Signed16x32Multiply32Accumulate",CTy"Multiply", 15348 Var("v77",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))), 15349 Apply 15350 (Call 15351 ("dfn'Signed16x32Multiply32Accumulate",ATy(qTy,qTy), 15352 Var("v77",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))), 15353 qVar"state")), 15354 (Call 15355 ("Signed16x32Multiply32Result",CTy"Multiply", 15356 Var("v78",PTy(bTy,PTy(F4,PTy(F4,F4))))), 15357 Apply 15358 (Call 15359 ("dfn'Signed16x32Multiply32Result",ATy(qTy,qTy), 15360 Var("v78",PTy(bTy,PTy(F4,PTy(F4,F4))))),qVar"state")), 15361 (Call 15362 ("SignedMostSignificantMultiply",CTy"Multiply", 15363 Var("v79",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))), 15364 Apply 15365 (Call 15366 ("dfn'SignedMostSignificantMultiply",ATy(qTy,qTy), 15367 Var("v79",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))), 15368 qVar"state")), 15369 (Call 15370 ("SignedMostSignificantMultiplySubtract",CTy"Multiply", 15371 Var("v80",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))), 15372 Apply 15373 (Call 15374 ("dfn'SignedMostSignificantMultiplySubtract", 15375 ATy(qTy,qTy), 15376 Var("v80",PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4)))))), 15377 qVar"state")), 15378 (Call 15379 ("SignedMultiplyDual",CTy"Multiply", 15380 Var("v81",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))))), 15381 Apply 15382 (Call 15383 ("dfn'SignedMultiplyDual",ATy(qTy,qTy), 15384 Var("v81", 15385 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))))), 15386 qVar"state")), 15387 (Call 15388 ("SignedMultiplyLongDual",CTy"Multiply", 15389 Var("v82",PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))))), 15390 Apply 15391 (Call 15392 ("dfn'SignedMultiplyLongDual",ATy(qTy,qTy), 15393 Var("v82", 15394 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,PTy(F4,F4))))))), 15395 qVar"state"))])), 15396 (Call("SIMD",CTy"instruction",Var("v83",CTy"SIMD")), 15397 CS(Var("v83",CTy"SIMD"), 15398 [(Call 15399 ("SignedAddSub16",CTy"SIMD", 15400 Var("v84",PTy(FTy 2,PTy(F4,PTy(F4,F4))))), 15401 Apply 15402 (Call 15403 ("dfn'SignedAddSub16",ATy(qTy,qTy), 15404 Var("v84",PTy(FTy 2,PTy(F4,PTy(F4,F4))))), 15405 qVar"state")), 15406 (Call 15407 ("SignedAddSub8",CTy"SIMD", 15408 Var("v85",PTy(bTy,PTy(F4,PTy(F4,F4))))), 15409 Apply 15410 (Call 15411 ("dfn'SignedAddSub8",ATy(qTy,qTy), 15412 Var("v85",PTy(bTy,PTy(F4,PTy(F4,F4))))),qVar"state")), 15413 (Call 15414 ("SignedHalvingAddSub16",CTy"SIMD", 15415 Var("v86",PTy(FTy 2,PTy(F4,PTy(F4,F4))))), 15416 Apply 15417 (Call 15418 ("dfn'SignedHalvingAddSub16",ATy(qTy,qTy), 15419 Var("v86",PTy(FTy 2,PTy(F4,PTy(F4,F4))))), 15420 qVar"state")), 15421 (Call 15422 ("SignedHalvingAddSub8",CTy"SIMD", 15423 Var("v87",PTy(bTy,PTy(F4,PTy(F4,F4))))), 15424 Apply 15425 (Call 15426 ("dfn'SignedHalvingAddSub8",ATy(qTy,qTy), 15427 Var("v87",PTy(bTy,PTy(F4,PTy(F4,F4))))),qVar"state")), 15428 (Call 15429 ("SignedSaturatingAddSub16",CTy"SIMD", 15430 Var("v88",PTy(FTy 2,PTy(F4,PTy(F4,F4))))), 15431 Apply 15432 (Call 15433 ("dfn'SignedSaturatingAddSub16",ATy(qTy,qTy), 15434 Var("v88",PTy(FTy 2,PTy(F4,PTy(F4,F4))))), 15435 qVar"state")), 15436 (Call 15437 ("SignedSaturatingAddSub8",CTy"SIMD", 15438 Var("v89",PTy(bTy,PTy(F4,PTy(F4,F4))))), 15439 Apply 15440 (Call 15441 ("dfn'SignedSaturatingAddSub8",ATy(qTy,qTy), 15442 Var("v89",PTy(bTy,PTy(F4,PTy(F4,F4))))),qVar"state")), 15443 (Call 15444 ("UnsignedAddSub16",CTy"SIMD", 15445 Var("v90",PTy(FTy 2,PTy(F4,PTy(F4,F4))))), 15446 Apply 15447 (Call 15448 ("dfn'UnsignedAddSub16",ATy(qTy,qTy), 15449 Var("v90",PTy(FTy 2,PTy(F4,PTy(F4,F4))))), 15450 qVar"state")), 15451 (Call 15452 ("UnsignedAddSub8",CTy"SIMD", 15453 Var("v91",PTy(bTy,PTy(F4,PTy(F4,F4))))), 15454 Apply 15455 (Call 15456 ("dfn'UnsignedAddSub8",ATy(qTy,qTy), 15457 Var("v91",PTy(bTy,PTy(F4,PTy(F4,F4))))),qVar"state")), 15458 (Call 15459 ("UnsignedHalvingAddSub16",CTy"SIMD", 15460 Var("v92",PTy(FTy 2,PTy(F4,PTy(F4,F4))))), 15461 Apply 15462 (Call 15463 ("dfn'UnsignedHalvingAddSub16",ATy(qTy,qTy), 15464 Var("v92",PTy(FTy 2,PTy(F4,PTy(F4,F4))))), 15465 qVar"state")), 15466 (Call 15467 ("UnsignedHalvingAddSub8",CTy"SIMD", 15468 Var("v93",PTy(bTy,PTy(F4,PTy(F4,F4))))), 15469 Apply 15470 (Call 15471 ("dfn'UnsignedHalvingAddSub8",ATy(qTy,qTy), 15472 Var("v93",PTy(bTy,PTy(F4,PTy(F4,F4))))),qVar"state")), 15473 (Call 15474 ("UnsignedSaturatingAddSub16",CTy"SIMD", 15475 Var("v94",PTy(FTy 2,PTy(F4,PTy(F4,F4))))), 15476 Apply 15477 (Call 15478 ("dfn'UnsignedSaturatingAddSub16",ATy(qTy,qTy), 15479 Var("v94",PTy(FTy 2,PTy(F4,PTy(F4,F4))))), 15480 qVar"state")), 15481 (Call 15482 ("UnsignedSaturatingAddSub8",CTy"SIMD", 15483 Var("v95",PTy(bTy,PTy(F4,PTy(F4,F4))))), 15484 Apply 15485 (Call 15486 ("dfn'UnsignedSaturatingAddSub8",ATy(qTy,qTy), 15487 Var("v95",PTy(bTy,PTy(F4,PTy(F4,F4))))),qVar"state")), 15488 (Call 15489 ("UnsignedSumAbsoluteDifferences",CTy"SIMD", 15490 Var("v96",PTy(F4,PTy(F4,PTy(F4,F4))))), 15491 Apply 15492 (Call 15493 ("dfn'UnsignedSumAbsoluteDifferences",ATy(qTy,qTy), 15494 Var("v96",PTy(F4,PTy(F4,PTy(F4,F4))))),qVar"state"))])), 15495 (Call("Store",CTy"instruction",Var("v97",CTy"Store")), 15496 CS(Var("v97",CTy"Store"), 15497 [(Call 15498 ("StoreByte",CTy"Store", 15499 Var("v98", 15500 PTy(bTy, 15501 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))), 15502 Apply 15503 (Call 15504 ("dfn'StoreByte",ATy(qTy,qTy), 15505 Var("v98", 15506 PTy(bTy, 15507 PTy(bTy, 15508 PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))), 15509 qVar"state")), 15510 (Call 15511 ("StoreByteUnprivileged",CTy"Store", 15512 Var("v99", 15513 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))), 15514 Apply 15515 (Call 15516 ("dfn'StoreByteUnprivileged",ATy(qTy,qTy), 15517 Var("v99", 15518 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))), 15519 qVar"state")), 15520 (Call 15521 ("StoreDual",CTy"Store", 15522 Var("v100", 15523 PTy(bTy, 15524 PTy(bTy, 15525 PTy(bTy, 15526 PTy(F4,PTy(F4,PTy(F4,CTy"offset2")))))))), 15527 Apply 15528 (Call 15529 ("dfn'StoreDual",ATy(qTy,qTy), 15530 Var("v100", 15531 PTy(bTy, 15532 PTy(bTy, 15533 PTy(bTy, 15534 PTy(F4,PTy(F4,PTy(F4,CTy"offset2")))))))), 15535 qVar"state")), 15536 (Call 15537 ("StoreExclusive",CTy"Store", 15538 Var("v101",PTy(F4,PTy(F4,PTy(F4,F32))))), 15539 Apply 15540 (Call 15541 ("dfn'StoreExclusive",ATy(qTy,qTy), 15542 Var("v101",PTy(F4,PTy(F4,PTy(F4,F32))))),qVar"state")), 15543 (Call 15544 ("StoreExclusiveByte",CTy"Store", 15545 Var("v102",PTy(F4,PTy(F4,F4)))), 15546 Apply 15547 (Call 15548 ("dfn'StoreExclusiveByte",ATy(qTy,qTy), 15549 Var("v102",PTy(F4,PTy(F4,F4)))),qVar"state")), 15550 (Call 15551 ("StoreExclusiveDoubleword",CTy"Store", 15552 Var("v103",PTy(F4,PTy(F4,PTy(F4,F4))))), 15553 Apply 15554 (Call 15555 ("dfn'StoreExclusiveDoubleword",ATy(qTy,qTy), 15556 Var("v103",PTy(F4,PTy(F4,PTy(F4,F4))))),qVar"state")), 15557 (Call 15558 ("StoreExclusiveHalf",CTy"Store", 15559 Var("v104",PTy(F4,PTy(F4,F4)))), 15560 Apply 15561 (Call 15562 ("dfn'StoreExclusiveHalf",ATy(qTy,qTy), 15563 Var("v104",PTy(F4,PTy(F4,F4)))),qVar"state")), 15564 (Call 15565 ("StoreHalf",CTy"Store", 15566 Var("v105", 15567 PTy(bTy, 15568 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))), 15569 Apply 15570 (Call 15571 ("dfn'StoreHalf",ATy(qTy,qTy), 15572 Var("v105", 15573 PTy(bTy, 15574 PTy(bTy, 15575 PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))), 15576 qVar"state")), 15577 (Call 15578 ("StoreHalfUnprivileged",CTy"Store", 15579 Var("v106", 15580 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset2")))))), 15581 Apply 15582 (Call 15583 ("dfn'StoreHalfUnprivileged",ATy(qTy,qTy), 15584 Var("v106", 15585 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset2")))))), 15586 qVar"state")), 15587 (Call 15588 ("StoreMultiple",CTy"Store", 15589 Var("v107",PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,F16)))))), 15590 Apply 15591 (Call 15592 ("dfn'StoreMultiple",ATy(qTy,qTy), 15593 Var("v107",PTy(bTy,PTy(bTy,PTy(bTy,PTy(F4,F16)))))), 15594 qVar"state")), 15595 (Call 15596 ("StoreMultipleUserRegisters",CTy"Store", 15597 Var("v108",PTy(bTy,PTy(bTy,PTy(F4,F16))))), 15598 Apply 15599 (Call 15600 ("dfn'StoreMultipleUserRegisters",ATy(qTy,qTy), 15601 Var("v108",PTy(bTy,PTy(bTy,PTy(F4,F16))))), 15602 qVar"state")), 15603 (Call 15604 ("StoreUnprivileged",CTy"Store", 15605 Var("v109", 15606 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))), 15607 Apply 15608 (Call 15609 ("dfn'StoreUnprivileged",ATy(qTy,qTy), 15610 Var("v109", 15611 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1")))))), 15612 qVar"state")), 15613 (Call 15614 ("StoreWord",CTy"Store", 15615 Var("v110", 15616 PTy(bTy, 15617 PTy(bTy,PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))), 15618 Apply 15619 (Call 15620 ("dfn'StoreWord",ATy(qTy,qTy), 15621 Var("v110", 15622 PTy(bTy, 15623 PTy(bTy, 15624 PTy(bTy,PTy(F4,PTy(F4,CTy"offset1"))))))), 15625 qVar"state"))])), 15626 (Call("System",CTy"instruction",Var("v111",CTy"System")), 15627 CS(Var("v111",CTy"System"), 15628 [(Const("ExceptionReturn",CTy"System"), 15629 Apply 15630 (Const("dfn'ExceptionReturn",ATy(qTy,qTy)),qVar"state")), 15631 (Call 15632 ("ChangeProcessorState",CTy"System", 15633 Var("v112", 15634 PTy(bTy, 15635 PTy(bTy,PTy(bTy,PTy(bTy,PTy(bTy,OTy(FTy 5)))))))), 15636 Apply 15637 (Call 15638 ("dfn'ChangeProcessorState",ATy(qTy,qTy), 15639 Var("v112", 15640 PTy(bTy, 15641 PTy(bTy, 15642 PTy(bTy,PTy(bTy,PTy(bTy,OTy(FTy 5)))))))), 15643 qVar"state")), 15644 (Call("EnterxLeavex",CTy"System",bVar"v113"), 15645 Apply 15646 (Call("dfn'EnterxLeavex",ATy(qTy,qTy),bVar"v113"), 15647 qVar"state")), 15648 (Call("HypervisorCall",CTy"System",Var("v114",F16)), 15649 Apply 15650 (Call("dfn'HypervisorCall",ATy(qTy,qTy),Var("v114",F16)), 15651 qVar"state")), 15652 (Call 15653 ("MoveToBankedOrSpecialRegister",CTy"System", 15654 Var("v115",PTy(bTy,PTy(FTy 5,F4)))), 15655 Apply 15656 (Call 15657 ("dfn'MoveToBankedOrSpecialRegister",ATy(qTy,qTy), 15658 Var("v115",PTy(bTy,PTy(FTy 5,F4)))),qVar"state")), 15659 (Call 15660 ("MoveToRegisterFromBankedOrSpecial",CTy"System", 15661 Var("v116",PTy(bTy,PTy(FTy 5,F4)))), 15662 Apply 15663 (Call 15664 ("dfn'MoveToRegisterFromBankedOrSpecial", 15665 ATy(qTy,qTy),Var("v116",PTy(bTy,PTy(FTy 5,F4)))), 15666 qVar"state")), 15667 (Call 15668 ("MoveToRegisterFromSpecial",CTy"System", 15669 Var("v117",PTy(bTy,F4))), 15670 Apply 15671 (Call 15672 ("dfn'MoveToRegisterFromSpecial",ATy(qTy,qTy), 15673 Var("v117",PTy(bTy,F4))),qVar"state")), 15674 (Call 15675 ("MoveToSpecialFromImmediate",CTy"System", 15676 Var("v118",PTy(bTy,PTy(F32,F4)))), 15677 Apply 15678 (Call 15679 ("dfn'MoveToSpecialFromImmediate",ATy(qTy,qTy), 15680 Var("v118",PTy(bTy,PTy(F32,F4)))),qVar"state")), 15681 (Call 15682 ("MoveToSpecialFromRegister",CTy"System", 15683 Var("v119",PTy(bTy,PTy(F4,F4)))), 15684 Apply 15685 (Call 15686 ("dfn'MoveToSpecialFromRegister",ATy(qTy,qTy), 15687 Var("v119",PTy(bTy,PTy(F4,F4)))),qVar"state")), 15688 (Call 15689 ("ReturnFromException",CTy"System", 15690 Var("v120",PTy(bTy,PTy(bTy,PTy(bTy,F4))))), 15691 Apply 15692 (Call 15693 ("dfn'ReturnFromException",ATy(qTy,qTy), 15694 Var("v120",PTy(bTy,PTy(bTy,PTy(bTy,F4))))), 15695 qVar"state")), 15696 (Call("SecureMonitorCall",CTy"System",Var("v121",F4)), 15697 Apply 15698 (Call 15699 ("dfn'SecureMonitorCall",ATy(qTy,qTy),Var("v121",F4)), 15700 qVar"state")), 15701 (Call("Setend",CTy"System",bVar"v122"), 15702 Apply 15703 (Call("dfn'Setend",ATy(qTy,qTy),bVar"v122"),qVar"state")), 15704 (Call 15705 ("StoreReturnState",CTy"System", 15706 Var("v123",PTy(bTy,PTy(bTy,PTy(bTy,FTy 5))))), 15707 Apply 15708 (Call 15709 ("dfn'StoreReturnState",ATy(qTy,qTy), 15710 Var("v123",PTy(bTy,PTy(bTy,PTy(bTy,FTy 5))))), 15711 qVar"state")), 15712 (Call("SupervisorCall",CTy"System",Var("v124",F32)), 15713 Apply 15714 (Call("dfn'SupervisorCall",ATy(qTy,qTy),Var("v124",F32)), 15715 qVar"state"))])), 15716 (Call("VFP",CTy"instruction",Var("v125",CTy"VFP")), 15717 CS(Var("v125",CTy"VFP"), 15718 [(Call 15719 ("vabs",CTy"VFP",Var("v126",PTy(bTy,PTy(FTy 5,FTy 5)))), 15720 Apply 15721 (Call 15722 ("dfn'vabs",ATy(qTy,qTy), 15723 Var("v126",PTy(bTy,PTy(FTy 5,FTy 5)))),qVar"state")), 15724 (Call 15725 ("vadd",CTy"VFP", 15726 Var("v127",PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))), 15727 Apply 15728 (Call 15729 ("dfn'vadd",ATy(qTy,qTy), 15730 Var("v127",PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))), 15731 qVar"state")), 15732 (Call 15733 ("vcmp",CTy"VFP", 15734 Var("v128",PTy(bTy,PTy(FTy 5,OTy(FTy 5))))), 15735 Apply 15736 (Call 15737 ("dfn'vcmp",ATy(qTy,qTy), 15738 Var("v128",PTy(bTy,PTy(FTy 5,OTy(FTy 5))))), 15739 qVar"state")), 15740 (Call 15741 ("vcvt_float",CTy"VFP", 15742 Var("v129",PTy(bTy,PTy(FTy 5,FTy 5)))), 15743 Apply 15744 (Call 15745 ("dfn'vcvt_float",ATy(qTy,qTy), 15746 Var("v129",PTy(bTy,PTy(FTy 5,FTy 5)))),qVar"state")), 15747 (Call 15748 ("vcvt_from_integer",CTy"VFP", 15749 Var("v130",PTy(bTy,PTy(bTy,PTy(FTy 5,FTy 5))))), 15750 Apply 15751 (Call 15752 ("dfn'vcvt_from_integer",ATy(qTy,qTy), 15753 Var("v130",PTy(bTy,PTy(bTy,PTy(FTy 5,FTy 5))))), 15754 qVar"state")), 15755 (Call 15756 ("vcvt_to_integer",CTy"VFP", 15757 Var("v131",PTy(bTy,PTy(bTy,PTy(bTy,PTy(FTy 5,FTy 5)))))), 15758 Apply 15759 (Call 15760 ("dfn'vcvt_to_integer",ATy(qTy,qTy), 15761 Var("v131", 15762 PTy(bTy,PTy(bTy,PTy(bTy,PTy(FTy 5,FTy 5)))))), 15763 qVar"state")), 15764 (Call 15765 ("vdiv",CTy"VFP", 15766 Var("v132",PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))), 15767 Apply 15768 (Call 15769 ("dfn'vdiv",ATy(qTy,qTy), 15770 Var("v132",PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))), 15771 qVar"state")), 15772 (Call 15773 ("vfma_vfms",CTy"VFP", 15774 Var("v133", 15775 PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 15776 Apply 15777 (Call 15778 ("dfn'vfma_vfms",ATy(qTy,qTy), 15779 Var("v133", 15780 PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 15781 qVar"state")), 15782 (Call 15783 ("vfnma_vfnms",CTy"VFP", 15784 Var("v134", 15785 PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 15786 Apply 15787 (Call 15788 ("dfn'vfnma_vfnms",ATy(qTy,qTy), 15789 Var("v134", 15790 PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 15791 qVar"state")), 15792 (Call 15793 ("vldm",CTy"VFP", 15794 Var("v135", 15795 PTy(bTy,PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(F4,F8))))))), 15796 Apply 15797 (Call 15798 ("dfn'vldm",ATy(qTy,qTy), 15799 Var("v135", 15800 PTy(bTy,PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(F4,F8))))))), 15801 qVar"state")), 15802 (Call 15803 ("vldr",CTy"VFP", 15804 Var("v136",PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(F4,F32)))))), 15805 Apply 15806 (Call 15807 ("dfn'vldr",ATy(qTy,qTy), 15808 Var("v136",PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(F4,F32)))))), 15809 qVar"state")), 15810 (Call 15811 ("vmla_vmls",CTy"VFP", 15812 Var("v137", 15813 PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 15814 Apply 15815 (Call 15816 ("dfn'vmla_vmls",ATy(qTy,qTy), 15817 Var("v137", 15818 PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 15819 qVar"state")), 15820 (Call 15821 ("vmov",CTy"VFP",Var("v138",PTy(bTy,PTy(FTy 5,FTy 5)))), 15822 Apply 15823 (Call 15824 ("dfn'vmov",ATy(qTy,qTy), 15825 Var("v138",PTy(bTy,PTy(FTy 5,FTy 5)))),qVar"state")), 15826 (Call 15827 ("vmov_double",CTy"VFP", 15828 Var("v139",PTy(bTy,PTy(F4,PTy(F4,FTy 5))))), 15829 Apply 15830 (Call 15831 ("dfn'vmov_double",ATy(qTy,qTy), 15832 Var("v139",PTy(bTy,PTy(F4,PTy(F4,FTy 5))))), 15833 qVar"state")), 15834 (Call 15835 ("vmov_imm",CTy"VFP",Var("v140",PTy(bTy,PTy(FTy 5,F64)))), 15836 Apply 15837 (Call 15838 ("dfn'vmov_imm",ATy(qTy,qTy), 15839 Var("v140",PTy(bTy,PTy(FTy 5,F64)))),qVar"state")), 15840 (Call 15841 ("vmov_single",CTy"VFP", 15842 Var("v141",PTy(bTy,PTy(F4,FTy 5)))), 15843 Apply 15844 (Call 15845 ("dfn'vmov_single",ATy(qTy,qTy), 15846 Var("v141",PTy(bTy,PTy(F4,FTy 5)))),qVar"state")), 15847 (Call 15848 ("vmov_two_singles",CTy"VFP", 15849 Var("v142",PTy(bTy,PTy(F4,PTy(F4,FTy 5))))), 15850 Apply 15851 (Call 15852 ("dfn'vmov_two_singles",ATy(qTy,qTy), 15853 Var("v142",PTy(bTy,PTy(F4,PTy(F4,FTy 5))))), 15854 qVar"state")), 15855 (Call("vmrs",CTy"VFP",Var("v143",F4)), 15856 Apply 15857 (Call("dfn'vmrs",ATy(qTy,qTy),Var("v143",F4)), 15858 qVar"state")), 15859 (Call("vmsr",CTy"VFP",Var("v144",F4)), 15860 Apply 15861 (Call("dfn'vmsr",ATy(qTy,qTy),Var("v144",F4)), 15862 qVar"state")), 15863 (Call 15864 ("vmul",CTy"VFP", 15865 Var("v145",PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))), 15866 Apply 15867 (Call 15868 ("dfn'vmul",ATy(qTy,qTy), 15869 Var("v145",PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))), 15870 qVar"state")), 15871 (Call 15872 ("vneg",CTy"VFP",Var("v146",PTy(bTy,PTy(FTy 5,FTy 5)))), 15873 Apply 15874 (Call 15875 ("dfn'vneg",ATy(qTy,qTy), 15876 Var("v146",PTy(bTy,PTy(FTy 5,FTy 5)))),qVar"state")), 15877 (Call 15878 ("vneg_mul",CTy"VFP", 15879 Var("v147", 15880 PTy(bTy, 15881 PTy(CTy"VFPNegMul",PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 15882 Apply 15883 (Call 15884 ("dfn'vneg_mul",ATy(qTy,qTy), 15885 Var("v147", 15886 PTy(bTy, 15887 PTy(CTy"VFPNegMul", 15888 PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 15889 qVar"state")), 15890 (Call 15891 ("vsqrt",CTy"VFP",Var("v148",PTy(bTy,PTy(FTy 5,FTy 5)))), 15892 Apply 15893 (Call 15894 ("dfn'vsqrt",ATy(qTy,qTy), 15895 Var("v148",PTy(bTy,PTy(FTy 5,FTy 5)))),qVar"state")), 15896 (Call 15897 ("vstm",CTy"VFP", 15898 Var("v149", 15899 PTy(bTy,PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(F4,F8))))))), 15900 Apply 15901 (Call 15902 ("dfn'vstm",ATy(qTy,qTy), 15903 Var("v149", 15904 PTy(bTy,PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(F4,F8))))))), 15905 qVar"state")), 15906 (Call 15907 ("vstr",CTy"VFP", 15908 Var("v150",PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(F4,F32)))))), 15909 Apply 15910 (Call 15911 ("dfn'vstr",ATy(qTy,qTy), 15912 Var("v150",PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(F4,F32)))))), 15913 qVar"state")), 15914 (Call 15915 ("vsub",CTy"VFP", 15916 Var("v151",PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))), 15917 Apply 15918 (Call 15919 ("dfn'vsub",ATy(qTy,qTy), 15920 Var("v151",PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))), 15921 qVar"state"))]))]))) 15922; 15923val Fetch_def = Def 15924 ("Fetch",qVar"state", 15925 Let(Var("v",CTy"InstrSet"), 15926 Apply 15927 (Call("CurrentInstrSet",ATy(qTy,CTy"InstrSet"),LU),qVar"state"), 15928 ITB([(Bop(Or, 15929 EQ(Var("v",CTy"InstrSet"), 15930 LC("InstrSet_ARM",CTy"InstrSet")), 15931 EQ(Dest("Architecture",CTy"Architecture",qVar"state"), 15932 LC("ARMv4",CTy"Architecture"))), 15933 Let(qVar"s", 15934 Rupd 15935 ("Encoding", 15936 TP[qVar"state",LC("Encoding_ARM",CTy"Encoding")]), 15937 Let(TP[Var("v",F32),qVar"s"], 15938 Apply 15939 (Call 15940 ("MemA",ATy(qTy,PTy(F32,qTy)), 15941 TP[Apply 15942 (Dest("REG",ATy(CTy"RName",F32),qVar"s"), 15943 LC("RName_PC",CTy"RName")),LN 4]),qVar"s"), 15944 TP[Call("ARM",CTy"MachineCode",Var("v",F32)),qVar"s"]))), 15945 (EQ(Var("v",CTy"InstrSet"), 15946 LC("InstrSet_Jazelle",CTy"InstrSet")), 15947 TP[Call("BadCode",CTy"MachineCode",LS"Fetch"),qVar"state"])], 15948 Let(Var("v0",F32), 15949 Apply 15950 (Dest("REG",ATy(CTy"RName",F32),qVar"state"), 15951 LC("RName_PC",CTy"RName")), 15952 Let(TP[Var("v1",F16),qVar"s"], 15953 Apply 15954 (Call 15955 ("MemA",ATy(qTy,PTy(F16,qTy)), 15956 TP[Var("v0",F32),LN 2]),qVar"state"), 15957 ITE(Bop(And, 15958 EQ(EX(Var("v1",F16),LN 15,LN 13,FTy 3),LW(7,3)), 15959 Mop(Not, 15960 EQ(EX(Var("v1",F16),LN 12,LN 11,FTy 2), 15961 LW(0,2)))), 15962 Let(TP[Var("v2",F16),qVar"s"], 15963 Apply 15964 (Call 15965 ("MemA",ATy(qTy,PTy(F16,qTy)), 15966 TP[Bop(Add,Var("v0",F32),LW(2,32)),LN 2]), 15967 Rupd 15968 ("Encoding", 15969 TP[qVar"s", 15970 LC("Encoding_Thumb2",CTy"Encoding")])), 15971 TP[Call 15972 ("Thumb2",CTy"MachineCode", 15973 TP[Var("v1",F16),Var("v2",F16)]),qVar"s"]), 15974 Let(qVar"s", 15975 Rupd 15976 ("Encoding", 15977 TP[qVar"s", 15978 LC("Encoding_Thumb",CTy"Encoding")]), 15979 TP[ITE(Bop(Or, 15980 EQ(Var("v",CTy"InstrSet"), 15981 LC("InstrSet_Thumb",CTy"InstrSet")), 15982 Mop(Not, 15983 Apply 15984 (Call 15985 ("HaveThumbEE", 15986 ATy(qTy,bTy),LU),qVar"s"))), 15987 Call 15988 ("Thumb",CTy"MachineCode", 15989 Var("v1",F16)), 15990 Call 15991 ("ThumbEE",CTy"MachineCode", 15992 Var("v1",F16))),qVar"s"]))))))) 15993; 15994val Do_def = Def 15995 ("Do",TP[Var("cond",F4),bVar"defined"], 15996 Close 15997 (qVar"state", 15998 Let(TP[bVar"v",qVar"s"], 15999 Let(qVar"s", 16000 Rupd("CurrentCondition",TP[qVar"state",Var("cond",F4)]), 16001 TP[Apply(Call("ConditionPassed",ATy(qTy,bTy),LU),qVar"s"), 16002 qVar"s"]), 16003 TP[Bop(And,bVar"v",bVar"defined"), 16004 Rupd 16005 ("undefined", 16006 TP[qVar"s",Bop(And,bVar"v",Mop(Not,bVar"defined"))])]))) 16007; 16008val Skip_def = Def 16009 ("Skip",AVar uTy, 16010 Close 16011 (qVar"state", 16012 ITE(Dest("undefined",bTy,qVar"state"), 16013 Call("Undefined",CTy"instruction",LW(0,32)), 16014 Const("NoOperation",CTy"instruction")))) 16015; 16016val UndefinedARM_def = Def 16017 ("UndefinedARM",Var("cond",F4), 16018 Close 16019 (qVar"state", 16020 Let(TP[bVar"v",qVar"s"], 16021 Let(qVar"s", 16022 Rupd("CurrentCondition",TP[qVar"state",Var("cond",F4)]), 16023 TP[Apply(Call("ConditionPassed",ATy(qTy,bTy),LU),qVar"s"), 16024 qVar"s"]), 16025 TP[ITE(bVar"v",Call("Undefined",CTy"instruction",LW(0,32)), 16026 Const("NoOperation",CTy"instruction")),qVar"s"]))) 16027; 16028val UndefinedThumb_def = Def 16029 ("UndefinedThumb",AVar uTy, 16030 Close 16031 (qVar"state", 16032 Let(TP[Var("v",F4),qVar"s"], 16033 Apply 16034 (Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU),qVar"state"), 16035 Apply 16036 (Call 16037 ("UndefinedARM",ATy(qTy,PTy(CTy"instruction",qTy)), 16038 Var("v",F4)),qVar"s")))) 16039; 16040val DECODE_UNPREDICTABLE_def = Def 16041 ("DECODE_UNPREDICTABLE",TP[Var("mc",CTy"MachineCode"),sVar"s"], 16042 Close 16043 (qVar"state", 16044 Mop(Snd, 16045 Apply 16046 (Call 16047 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 16048 Call 16049 ("UNPREDICTABLE",CTy"exception", 16050 CC[LS"Decode ", 16051 CS(Var("mc",CTy"MachineCode"), 16052 [(Call("ARM",CTy"MachineCode",Var("opc",F32)), 16053 CC[Mop(Cast sTy,Mop(Cast vTy,Var("opc",F32))), 16054 LS"; ARM; "]), 16055 (Call("Thumb",CTy"MachineCode",Var("opc",F16)), 16056 CC[Mop(Cast sTy,Mop(Cast vTy,Var("opc",F16))), 16057 LS"; Thumb; "]), 16058 (Call("ThumbEE",CTy"MachineCode",Var("opc",F16)), 16059 CC[Mop(Cast sTy,Mop(Cast vTy,Var("opc",F16))), 16060 LS"; ThumbEE; "]), 16061 (Call 16062 ("Thumb2",CTy"MachineCode", 16063 TP[Var("opc1",F16),Var("opc2",F16)]), 16064 CC[Mop(Cast sTy,Mop(Cast vTy,Var("opc1",F16))), 16065 LS", ", 16066 Mop(Cast sTy,Mop(Cast vTy,Var("opc2",F16))), 16067 LS"; Thumb2; "]), 16068 (Call("BadCode",CTy"MachineCode",sVar"x"), 16069 sVar"x")]),sVar"s"])),qVar"state")))) 16070; 16071val DecodeHint_def = Def 16072 ("DecodeHint",TP[Var("cond",F4),Var("op",F8)], 16073 Close 16074 (qVar"state", 16075 ITE(Bop(Or, 16076 EQ(Dest("Architecture",CTy"Architecture",qVar"state"), 16077 LC("ARMv6T2",CTy"Architecture")), 16078 Bop(And,EQ(EX(Var("op",F8),LN 7,LN 4,F4),LW(15,4)), 16079 Bop(And, 16080 EQ(Dest("Encoding",CTy"Encoding",qVar"state"), 16081 LC("Encoding_ARM",CTy"Encoding")), 16082 EQ(Dest 16083 ("Architecture",CTy"Architecture",qVar"state"), 16084 LC("ARMv6K",CTy"Architecture"))))), 16085 TP[Const("NoOperation",CTy"instruction"),qVar"state"], 16086 Let(TP[bVar"v",qVar"s"], 16087 Apply 16088 (Call 16089 ("Do",ATy(qTy,PTy(bTy,qTy)), 16090 TP[Var("cond",F4), 16091 Bop(Or, 16092 Bop(Ge, 16093 Apply 16094 (Call("ArchVersion",ATy(qTy,nTy),LU), 16095 qVar"state"),LN 7), 16096 Bop(And, 16097 EQ(Dest 16098 ("Encoding",CTy"Encoding",qVar"state"), 16099 LC("Encoding_ARM",CTy"Encoding")), 16100 EQ(Dest 16101 ("Architecture",CTy"Architecture", 16102 qVar"state"), 16103 LC("ARMv6K",CTy"Architecture"))))]), 16104 qVar"state"), 16105 TP[ITE(bVar"v", 16106 Let(TP[bVar"b'7",bVar"b'6",bVar"b'5",bVar"b'4", 16107 bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"], 16108 BL(8,Var("op",F8)), 16109 ITB([(Bop(And,Mop(Not,bVar"b'7"), 16110 Bop(And,Mop(Not,bVar"b'6"), 16111 Bop(And,Mop(Not,bVar"b'5"), 16112 Bop(And,Mop(Not,bVar"b'4"), 16113 Bop(And,Mop(Not,bVar"b'3"), 16114 Bop(And, 16115 Mop(Not,bVar"b'2"), 16116 Bop(And, 16117 Mop(Not, 16118 bVar"b'1"), 16119 bVar"b'0"))))))), 16120 Call 16121 ("Hint",CTy"instruction", 16122 Const("Yield",CTy"Hint"))), 16123 (Bop(And,Mop(Not,bVar"b'7"), 16124 Bop(And,Mop(Not,bVar"b'6"), 16125 Bop(And,Mop(Not,bVar"b'5"), 16126 Bop(And,Mop(Not,bVar"b'4"), 16127 Bop(And,Mop(Not,bVar"b'3"), 16128 Bop(And, 16129 Mop(Not,bVar"b'2"), 16130 Bop(And,bVar"b'1", 16131 Mop(Not, 16132 bVar"b'0")))))))), 16133 Call 16134 ("Hint",CTy"instruction", 16135 Const("WaitForEvent",CTy"Hint"))), 16136 (Bop(And,Mop(Not,bVar"b'7"), 16137 Bop(And,Mop(Not,bVar"b'6"), 16138 Bop(And,Mop(Not,bVar"b'5"), 16139 Bop(And,Mop(Not,bVar"b'4"), 16140 Bop(And,Mop(Not,bVar"b'3"), 16141 Bop(And, 16142 Mop(Not,bVar"b'2"), 16143 Bop(And,bVar"b'1", 16144 bVar"b'0"))))))), 16145 Call 16146 ("Hint",CTy"instruction", 16147 Const("WaitForInterrupt",CTy"Hint"))), 16148 (Bop(And,Mop(Not,bVar"b'7"), 16149 Bop(And,Mop(Not,bVar"b'6"), 16150 Bop(And,Mop(Not,bVar"b'5"), 16151 Bop(And,Mop(Not,bVar"b'4"), 16152 Bop(And,Mop(Not,bVar"b'3"), 16153 Bop(And,bVar"b'2", 16154 Bop(And, 16155 Mop(Not, 16156 bVar"b'1"), 16157 Mop(Not, 16158 bVar"b'0")))))))), 16159 Call 16160 ("Hint",CTy"instruction", 16161 Const("SendEvent",CTy"Hint"))), 16162 (Bop(And,bVar"b'7", 16163 Bop(And,bVar"b'6", 16164 Bop(And,bVar"b'5",bVar"b'4"))), 16165 Call 16166 ("Hint",CTy"instruction", 16167 Call 16168 ("Debug",CTy"Hint", 16169 Mop(Cast F4, 16170 LL[bVar"b'3",bVar"b'2",bVar"b'1", 16171 bVar"b'0"]))))], 16172 Const("NoOperation",CTy"instruction"))), 16173 Apply 16174 (Call("Skip",ATy(qTy,CTy"instruction"),LU),qVar"s")), 16175 qVar"s"])))) 16176; 16177val DecodeParallelAdditionSubtraction_def = Def 16178 ("DecodeParallelAdditionSubtraction", 16179 TP[Var("op1",FTy 2),Var("op2",FTy 3),Var("U",F1),Var("Rd",F4), 16180 Var("Rn",F4),Var("Rm",F4)], 16181 ITE(EQ(Var("U",F1),LW(1,1)), 16182 CS(TP[Var("op1",FTy 2),BL(3,Var("op2",FTy 3))], 16183 [(TP[LW(1,2),LF,bVar"x'1",bVar"x'0"], 16184 Call 16185 ("SIMD",CTy"instruction", 16186 Call 16187 ("UnsignedAddSub16",CTy"SIMD", 16188 TP[Mop(Cast(FTy 2),LL[bVar"x'1",bVar"x'0"]), 16189 Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 16190 (TP[LW(1,2),LT,LF,LF], 16191 Call 16192 ("SIMD",CTy"instruction", 16193 Call 16194 ("UnsignedAddSub8",CTy"SIMD", 16195 TP[LF,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 16196 (TP[LW(1,2),LT,LT,LT], 16197 Call 16198 ("SIMD",CTy"instruction", 16199 Call 16200 ("UnsignedAddSub8",CTy"SIMD", 16201 TP[LT,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 16202 (TP[LW(2,2),LF,bVar"x'1",bVar"x'0"], 16203 Call 16204 ("SIMD",CTy"instruction", 16205 Call 16206 ("UnsignedSaturatingAddSub16",CTy"SIMD", 16207 TP[Mop(Cast(FTy 2),LL[bVar"x'1",bVar"x'0"]), 16208 Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 16209 (TP[LW(2,2),LT,LF,LF], 16210 Call 16211 ("SIMD",CTy"instruction", 16212 Call 16213 ("UnsignedSaturatingAddSub8",CTy"SIMD", 16214 TP[LF,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 16215 (TP[LW(2,2),LT,LT,LT], 16216 Call 16217 ("SIMD",CTy"instruction", 16218 Call 16219 ("UnsignedSaturatingAddSub8",CTy"SIMD", 16220 TP[LT,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 16221 (TP[LW(3,2),LF,bVar"x'1",bVar"x'0"], 16222 Call 16223 ("SIMD",CTy"instruction", 16224 Call 16225 ("UnsignedHalvingAddSub16",CTy"SIMD", 16226 TP[Mop(Cast(FTy 2),LL[bVar"x'1",bVar"x'0"]), 16227 Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 16228 (TP[LW(3,2),LT,LF,LF], 16229 Call 16230 ("SIMD",CTy"instruction", 16231 Call 16232 ("UnsignedHalvingAddSub8",CTy"SIMD", 16233 TP[LF,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 16234 (TP[LW(3,2),LT,LT,LT], 16235 Call 16236 ("SIMD",CTy"instruction", 16237 Call 16238 ("UnsignedHalvingAddSub8",CTy"SIMD", 16239 TP[LT,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 16240 (TP[AVar(FTy 2),AVar bTy,AVar bTy,AVar bTy], 16241 Call("Undefined",CTy"instruction",LW(0,32)))]), 16242 CS(TP[Var("op1",FTy 2),BL(3,Var("op2",FTy 3))], 16243 [(TP[LW(1,2),LF,bVar"x'1",bVar"x'0"], 16244 Call 16245 ("SIMD",CTy"instruction", 16246 Call 16247 ("SignedAddSub16",CTy"SIMD", 16248 TP[Mop(Cast(FTy 2),LL[bVar"x'1",bVar"x'0"]), 16249 Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 16250 (TP[LW(1,2),LT,LF,LF], 16251 Call 16252 ("SIMD",CTy"instruction", 16253 Call 16254 ("SignedAddSub8",CTy"SIMD", 16255 TP[LF,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 16256 (TP[LW(1,2),LT,LT,LT], 16257 Call 16258 ("SIMD",CTy"instruction", 16259 Call 16260 ("SignedAddSub8",CTy"SIMD", 16261 TP[LT,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 16262 (TP[LW(2,2),LF,bVar"x'1",bVar"x'0"], 16263 Call 16264 ("SIMD",CTy"instruction", 16265 Call 16266 ("SignedSaturatingAddSub16",CTy"SIMD", 16267 TP[Mop(Cast(FTy 2),LL[bVar"x'1",bVar"x'0"]), 16268 Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 16269 (TP[LW(2,2),LT,LF,LF], 16270 Call 16271 ("SIMD",CTy"instruction", 16272 Call 16273 ("SignedSaturatingAddSub8",CTy"SIMD", 16274 TP[LF,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 16275 (TP[LW(2,2),LT,LT,LT], 16276 Call 16277 ("SIMD",CTy"instruction", 16278 Call 16279 ("SignedSaturatingAddSub8",CTy"SIMD", 16280 TP[LT,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 16281 (TP[LW(3,2),LF,bVar"x'1",bVar"x'0"], 16282 Call 16283 ("SIMD",CTy"instruction", 16284 Call 16285 ("SignedHalvingAddSub16",CTy"SIMD", 16286 TP[Mop(Cast(FTy 2),LL[bVar"x'1",bVar"x'0"]), 16287 Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 16288 (TP[LW(3,2),LT,LF,LF], 16289 Call 16290 ("SIMD",CTy"instruction", 16291 Call 16292 ("SignedHalvingAddSub8",CTy"SIMD", 16293 TP[LF,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 16294 (TP[LW(3,2),LT,LT,LT], 16295 Call 16296 ("SIMD",CTy"instruction", 16297 Call 16298 ("SignedHalvingAddSub8",CTy"SIMD", 16299 TP[LT,Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]))), 16300 (TP[AVar(FTy 2),AVar bTy,AVar bTy,AVar bTy], 16301 Call("Undefined",CTy"instruction",LW(0,32)))]))) 16302; 16303val DecodeVFP_def = Def 16304 ("DecodeVFP",Var("w",F32), 16305 Close 16306 (qVar"state", 16307 Let(TP[bVar"b'27",bVar"b'26",bVar"b'25",bVar"b'24",bVar"b'23", 16308 bVar"b'22",bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18", 16309 bVar"b'17",bVar"b'16",bVar"b'15",bVar"b'14",bVar"b'13", 16310 bVar"b'12",bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8", 16311 bVar"b'7",bVar"b'6",bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2", 16312 bVar"b'1",bVar"b'0"], 16313 BL(28,EX(Var("w",F32),LN 27,LN 0,FTy 28)), 16314 ITB([(bVar"b'25", 16315 ITE(Bop(And,bVar"b'27", 16316 Bop(And,bVar"b'26", 16317 Bop(And,Mop(Not,bVar"b'24"), 16318 Bop(And,bVar"b'11", 16319 Bop(And,Mop(Not,bVar"b'10"),bVar"b'9"))))), 16320 ITB([(Bop(And,Mop(Not,bVar"b'23"),Mop(Not,bVar"b'4")), 16321 Let(Var("Vm",F4), 16322 Mop(Cast F4, 16323 LL[bVar"b'3",bVar"b'2",bVar"b'1", 16324 bVar"b'0"]), 16325 Let(Var("M",F1),Mop(Cast F1,LL[bVar"b'5"]), 16326 Let(Var("op2",F1), 16327 Mop(Cast F1,LL[bVar"b'6"]), 16328 Let(Var("N",F1), 16329 Mop(Cast F1,LL[bVar"b'7"]), 16330 Let(Var("Vd",F4), 16331 Mop(Cast F4, 16332 LL[bVar"b'15", 16333 bVar"b'14", 16334 bVar"b'13",bVar"b'12"]), 16335 Let(Var("Vn",F4), 16336 Mop(Cast F4, 16337 LL[bVar"b'19", 16338 bVar"b'18", 16339 bVar"b'17", 16340 bVar"b'16"]), 16341 Let(Var("D",F1), 16342 Mop(Cast F1, 16343 LL[bVar"b'22"]), 16344 Let(bVar"dp_operation", 16345 EQ(Mop(Cast F1, 16346 LL[bVar"b'8"]), 16347 LW(1,1)), 16348 Let(TP[Var("d", 16349 FTy 5), 16350 Var("n", 16351 FTy 5), 16352 Var("m", 16353 FTy 5)], 16354 ITE(bVar"dp_operation", 16355 TP[CC[Var("D", 16356 F1), 16357 Var("Vd", 16358 F4)], 16359 CC[Var("N", 16360 F1), 16361 Var("Vn", 16362 F4)], 16363 CC[Var("M", 16364 F1), 16365 Var("Vm", 16366 F4)]], 16367 TP[CC[Var("Vd", 16368 F4), 16369 Var("D", 16370 F1)], 16371 CC[Var("Vn", 16372 F4), 16373 Var("N", 16374 F1)], 16375 CC[Var("Vm", 16376 F4), 16377 Var("M", 16378 F1)]]), 16379 TP[Mop(Not, 16380 EQ(Dest 16381 ("VFPExtension", 16382 CTy"VFPExtension", 16383 qVar"state"), 16384 LC("NoVFP", 16385 CTy"VFPExtension"))), 16386 LNL cTy, 16387 Call 16388 ("VFP", 16389 CTy"instruction", 16390 CS(Mop(Cast 16391 (FTy 2), 16392 LL[bVar"b'21", 16393 bVar"b'20"]), 16394 [(LW(0, 16395 2), 16396 Call 16397 ("vmla_vmls", 16398 CTy"VFP", 16399 TP[bVar"dp_operation", 16400 EQ(Var("op2", 16401 F1), 16402 LW(0, 16403 1)), 16404 Var("d", 16405 FTy 5), 16406 Var("n", 16407 FTy 5), 16408 Var("m", 16409 FTy 5)])), 16410 (LW(1, 16411 2), 16412 Call 16413 ("vneg_mul", 16414 CTy"VFP", 16415 TP[bVar"dp_operation", 16416 ITE(EQ(Var("op2", 16417 F1), 16418 LW(1, 16419 1)), 16420 LC("VFPNegMul_VNMLA", 16421 CTy"VFPNegMul"), 16422 LC("VFPNegMul_VNMLS", 16423 CTy"VFPNegMul")), 16424 Var("d", 16425 FTy 5), 16426 Var("n", 16427 FTy 5), 16428 Var("m", 16429 FTy 5)])), 16430 (LW(2, 16431 2), 16432 ITE(EQ(Var("op2", 16433 F1), 16434 LW(1, 16435 1)), 16436 Call 16437 ("vneg_mul", 16438 CTy"VFP", 16439 TP[bVar"dp_operation", 16440 LC("VFPNegMul_VNMUL", 16441 CTy"VFPNegMul"), 16442 Var("d", 16443 FTy 5), 16444 Var("n", 16445 FTy 5), 16446 Var("m", 16447 FTy 5)]), 16448 Call 16449 ("vmul", 16450 CTy"VFP", 16451 TP[bVar"dp_operation", 16452 Var("d", 16453 FTy 5), 16454 Var("n", 16455 FTy 5), 16456 Var("m", 16457 FTy 5)]))), 16458 (LW(3, 16459 2), 16460 ITE(EQ(Var("op2", 16461 F1), 16462 LW(1, 16463 1)), 16464 Call 16465 ("vsub", 16466 CTy"VFP", 16467 TP[bVar"dp_operation", 16468 Var("d", 16469 FTy 5), 16470 Var("n", 16471 FTy 5), 16472 Var("m", 16473 FTy 5)]), 16474 Call 16475 ("vadd", 16476 CTy"VFP", 16477 TP[bVar"dp_operation", 16478 Var("d", 16479 FTy 5), 16480 Var("n", 16481 FTy 5), 16482 Var("m", 16483 FTy 5)])))]))])))))))))), 16484 (Bop(And,bVar"b'23", 16485 Bop(And,Mop(Not,bVar"b'21"), 16486 Bop(And,Mop(Not,bVar"b'20"), 16487 Bop(And,Mop(Not,bVar"b'6"), 16488 Mop(Not,bVar"b'4"))))), 16489 Let(Var("Vm",F4), 16490 Mop(Cast F4, 16491 LL[bVar"b'3",bVar"b'2",bVar"b'1", 16492 bVar"b'0"]), 16493 Let(Var("M",F1),Mop(Cast F1,LL[bVar"b'5"]), 16494 Let(Var("N",F1), 16495 Mop(Cast F1,LL[bVar"b'7"]), 16496 Let(Var("Vd",F4), 16497 Mop(Cast F4, 16498 LL[bVar"b'15",bVar"b'14", 16499 bVar"b'13",bVar"b'12"]), 16500 Let(Var("Vn",F4), 16501 Mop(Cast F4, 16502 LL[bVar"b'19", 16503 bVar"b'18", 16504 bVar"b'17",bVar"b'16"]), 16505 Let(Var("D",F1), 16506 Mop(Cast F1, 16507 LL[bVar"b'22"]), 16508 Let(bVar"dp_operation", 16509 EQ(Mop(Cast F1, 16510 LL[bVar"b'8"]), 16511 LW(1,1)), 16512 Let(TP[Var("d",FTy 5), 16513 Var("n",FTy 5), 16514 Var("m",FTy 5)], 16515 ITE(bVar"dp_operation", 16516 TP[CC[Var("D", 16517 F1), 16518 Var("Vd", 16519 F4)], 16520 CC[Var("N", 16521 F1), 16522 Var("Vn", 16523 F4)], 16524 CC[Var("M", 16525 F1), 16526 Var("Vm", 16527 F4)]], 16528 TP[CC[Var("Vd", 16529 F4), 16530 Var("D", 16531 F1)], 16532 CC[Var("Vn", 16533 F4), 16534 Var("N", 16535 F1)], 16536 CC[Var("Vm", 16537 F4), 16538 Var("M", 16539 F1)]]), 16540 TP[Mop(Not, 16541 EQ(Dest 16542 ("VFPExtension", 16543 CTy"VFPExtension", 16544 qVar"state"), 16545 LC("NoVFP", 16546 CTy"VFPExtension"))), 16547 LNL cTy, 16548 Call 16549 ("VFP", 16550 CTy"instruction", 16551 Call 16552 ("vdiv", 16553 CTy"VFP", 16554 TP[bVar"dp_operation", 16555 Var("d", 16556 FTy 5), 16557 Var("n", 16558 FTy 5), 16559 Var("m", 16560 FTy 5)]))]))))))))), 16561 (Bop(And,bVar"b'23", 16562 Bop(And,Mop(Not,bVar"b'21"), 16563 Bop(And,bVar"b'20",Mop(Not,bVar"b'4")))), 16564 Let(Var("Vm",F4), 16565 Mop(Cast F4, 16566 LL[bVar"b'3",bVar"b'2",bVar"b'1", 16567 bVar"b'0"]), 16568 Let(Var("M",F1),Mop(Cast F1,LL[bVar"b'5"]), 16569 Let(Var("N",F1), 16570 Mop(Cast F1,LL[bVar"b'7"]), 16571 Let(Var("Vd",F4), 16572 Mop(Cast F4, 16573 LL[bVar"b'15",bVar"b'14", 16574 bVar"b'13",bVar"b'12"]), 16575 Let(Var("Vn",F4), 16576 Mop(Cast F4, 16577 LL[bVar"b'19", 16578 bVar"b'18", 16579 bVar"b'17",bVar"b'16"]), 16580 Let(Var("D",F1), 16581 Mop(Cast F1, 16582 LL[bVar"b'22"]), 16583 Let(bVar"dp_operation", 16584 EQ(Mop(Cast F1, 16585 LL[bVar"b'8"]), 16586 LW(1,1)), 16587 Let(TP[Var("d",FTy 5), 16588 Var("n",FTy 5), 16589 Var("m",FTy 5)], 16590 ITE(bVar"dp_operation", 16591 TP[CC[Var("D", 16592 F1), 16593 Var("Vd", 16594 F4)], 16595 CC[Var("N", 16596 F1), 16597 Var("Vn", 16598 F4)], 16599 CC[Var("M", 16600 F1), 16601 Var("Vm", 16602 F4)]], 16603 TP[CC[Var("Vd", 16604 F4), 16605 Var("D", 16606 F1)], 16607 CC[Var("Vn", 16608 F4), 16609 Var("N", 16610 F1)], 16611 CC[Var("Vm", 16612 F4), 16613 Var("M", 16614 F1)]]), 16615 TP[EQ(Dest 16616 ("VFPExtension", 16617 CTy"VFPExtension", 16618 qVar"state"), 16619 LC("VFPv4", 16620 CTy"VFPExtension")), 16621 LNL cTy, 16622 Call 16623 ("VFP", 16624 CTy"instruction", 16625 Call 16626 ("vfnma_vfnms", 16627 CTy"VFP", 16628 TP[bVar"dp_operation", 16629 EQ(Mop(Cast 16630 F1, 16631 LL[bVar"b'6"]), 16632 LW(0, 16633 1)), 16634 Var("d", 16635 FTy 5), 16636 Var("n", 16637 FTy 5), 16638 Var("m", 16639 FTy 5)]))]))))))))), 16640 (Bop(And,bVar"b'23", 16641 Bop(And,bVar"b'21", 16642 Bop(And,Mop(Not,bVar"b'20"), 16643 Mop(Not,bVar"b'4")))), 16644 Let(Var("Vm",F4), 16645 Mop(Cast F4, 16646 LL[bVar"b'3",bVar"b'2",bVar"b'1", 16647 bVar"b'0"]), 16648 Let(Var("M",F1),Mop(Cast F1,LL[bVar"b'5"]), 16649 Let(Var("N",F1), 16650 Mop(Cast F1,LL[bVar"b'7"]), 16651 Let(Var("Vd",F4), 16652 Mop(Cast F4, 16653 LL[bVar"b'15",bVar"b'14", 16654 bVar"b'13",bVar"b'12"]), 16655 Let(Var("Vn",F4), 16656 Mop(Cast F4, 16657 LL[bVar"b'19", 16658 bVar"b'18", 16659 bVar"b'17",bVar"b'16"]), 16660 Let(Var("D",F1), 16661 Mop(Cast F1, 16662 LL[bVar"b'22"]), 16663 Let(bVar"dp_operation", 16664 EQ(Mop(Cast F1, 16665 LL[bVar"b'8"]), 16666 LW(1,1)), 16667 Let(TP[Var("d",FTy 5), 16668 Var("n",FTy 5), 16669 Var("m",FTy 5)], 16670 ITE(bVar"dp_operation", 16671 TP[CC[Var("D", 16672 F1), 16673 Var("Vd", 16674 F4)], 16675 CC[Var("N", 16676 F1), 16677 Var("Vn", 16678 F4)], 16679 CC[Var("M", 16680 F1), 16681 Var("Vm", 16682 F4)]], 16683 TP[CC[Var("Vd", 16684 F4), 16685 Var("D", 16686 F1)], 16687 CC[Var("Vn", 16688 F4), 16689 Var("N", 16690 F1)], 16691 CC[Var("Vm", 16692 F4), 16693 Var("M", 16694 F1)]]), 16695 TP[EQ(Dest 16696 ("VFPExtension", 16697 CTy"VFPExtension", 16698 qVar"state"), 16699 LC("VFPv4", 16700 CTy"VFPExtension")), 16701 LNL cTy, 16702 Call 16703 ("VFP", 16704 CTy"instruction", 16705 Call 16706 ("vfma_vfms", 16707 CTy"VFP", 16708 TP[bVar"dp_operation", 16709 EQ(Mop(Cast 16710 F1, 16711 LL[bVar"b'6"]), 16712 LW(0, 16713 1)), 16714 Var("d", 16715 FTy 5), 16716 Var("n", 16717 FTy 5), 16718 Var("m", 16719 FTy 5)]))]))))))))), 16720 (Bop(And,bVar"b'23", 16721 Bop(And,bVar"b'21", 16722 Bop(And,bVar"b'20", 16723 Bop(And,Mop(Not,bVar"b'19"), 16724 Bop(And,Mop(Not,bVar"b'18"), 16725 Bop(And,Mop(Not,bVar"b'17"), 16726 Bop(And, 16727 Mop(Not,bVar"b'16"), 16728 Bop(And, 16729 Mop(Not, 16730 bVar"b'7"), 16731 Bop(And, 16732 bVar"b'6", 16733 Mop(Not, 16734 bVar"b'4")))))))))), 16735 Let(Var("Vm",F4), 16736 Mop(Cast F4, 16737 LL[bVar"b'3",bVar"b'2",bVar"b'1", 16738 bVar"b'0"]), 16739 Let(Var("M",F1),Mop(Cast F1,LL[bVar"b'5"]), 16740 Let(Var("Vd",F4), 16741 Mop(Cast F4, 16742 LL[bVar"b'15",bVar"b'14", 16743 bVar"b'13",bVar"b'12"]), 16744 Let(Var("D",F1), 16745 Mop(Cast F1,LL[bVar"b'22"]), 16746 Let(bVar"single_register", 16747 EQ(Mop(Cast F1,LL[bVar"b'8"]), 16748 LW(0,1)), 16749 Let(TP[Var("d",FTy 5), 16750 Var("m",FTy 5)], 16751 ITE(bVar"single_register", 16752 TP[CC[Var("Vd",F4), 16753 Var("D",F1)], 16754 CC[Var("Vm",F4), 16755 Var("M",F1)]], 16756 TP[CC[Var("D",F1), 16757 Var("Vd",F4)], 16758 CC[Var("M",F1), 16759 Var("Vm",F4)]]), 16760 TP[Mop(Not, 16761 EQ(Dest 16762 ("VFPExtension", 16763 CTy"VFPExtension", 16764 qVar"state"), 16765 LC("NoVFP", 16766 CTy"VFPExtension"))), 16767 LNL cTy, 16768 Call 16769 ("VFP", 16770 CTy"instruction", 16771 Call 16772 ("vmov", 16773 CTy"VFP", 16774 TP[bVar"single_register", 16775 Var("d", 16776 FTy 5), 16777 Var("m", 16778 FTy 5)]))]))))))), 16779 (Bop(And,bVar"b'23", 16780 Bop(And,bVar"b'21", 16781 Bop(And,bVar"b'20", 16782 Bop(And,Mop(Not,bVar"b'19"), 16783 Bop(And,Mop(Not,bVar"b'18"), 16784 Bop(And,Mop(Not,bVar"b'17"), 16785 Bop(And, 16786 Mop(Not,bVar"b'16"), 16787 Bop(And,bVar"b'7", 16788 Bop(And, 16789 bVar"b'6", 16790 Mop(Not, 16791 bVar"b'4")))))))))), 16792 Let(Var("Vm",F4), 16793 Mop(Cast F4, 16794 LL[bVar"b'3",bVar"b'2",bVar"b'1", 16795 bVar"b'0"]), 16796 Let(Var("M",F1),Mop(Cast F1,LL[bVar"b'5"]), 16797 Let(Var("Vd",F4), 16798 Mop(Cast F4, 16799 LL[bVar"b'15",bVar"b'14", 16800 bVar"b'13",bVar"b'12"]), 16801 Let(Var("D",F1), 16802 Mop(Cast F1,LL[bVar"b'22"]), 16803 Let(bVar"dp_operation", 16804 EQ(Mop(Cast F1,LL[bVar"b'8"]), 16805 LW(1,1)), 16806 Let(TP[Var("d",FTy 5), 16807 Var("m",FTy 5)], 16808 ITE(bVar"dp_operation", 16809 TP[CC[Var("D",F1), 16810 Var("Vd",F4)], 16811 CC[Var("M",F1), 16812 Var("Vm",F4)]], 16813 TP[CC[Var("Vd",F4), 16814 Var("D",F1)], 16815 CC[Var("Vm",F4), 16816 Var("M",F1)]]), 16817 TP[Mop(Not, 16818 EQ(Dest 16819 ("VFPExtension", 16820 CTy"VFPExtension", 16821 qVar"state"), 16822 LC("NoVFP", 16823 CTy"VFPExtension"))), 16824 LNL cTy, 16825 Call 16826 ("VFP", 16827 CTy"instruction", 16828 Call 16829 ("vabs", 16830 CTy"VFP", 16831 TP[bVar"dp_operation", 16832 Var("d", 16833 FTy 5), 16834 Var("m", 16835 FTy 5)]))]))))))), 16836 (Bop(And,bVar"b'23", 16837 Bop(And,bVar"b'21", 16838 Bop(And,bVar"b'20", 16839 Bop(And,Mop(Not,bVar"b'19"), 16840 Bop(And,Mop(Not,bVar"b'18"), 16841 Bop(And,Mop(Not,bVar"b'17"), 16842 Bop(And,bVar"b'16", 16843 Bop(And, 16844 Mop(Not, 16845 bVar"b'7"), 16846 Bop(And, 16847 bVar"b'6", 16848 Mop(Not, 16849 bVar"b'4")))))))))), 16850 Let(Var("Vm",F4), 16851 Mop(Cast F4, 16852 LL[bVar"b'3",bVar"b'2",bVar"b'1", 16853 bVar"b'0"]), 16854 Let(Var("M",F1),Mop(Cast F1,LL[bVar"b'5"]), 16855 Let(Var("Vd",F4), 16856 Mop(Cast F4, 16857 LL[bVar"b'15",bVar"b'14", 16858 bVar"b'13",bVar"b'12"]), 16859 Let(Var("D",F1), 16860 Mop(Cast F1,LL[bVar"b'22"]), 16861 Let(bVar"dp_operation", 16862 EQ(Mop(Cast F1,LL[bVar"b'8"]), 16863 LW(1,1)), 16864 Let(TP[Var("d",FTy 5), 16865 Var("m",FTy 5)], 16866 ITE(bVar"dp_operation", 16867 TP[CC[Var("D",F1), 16868 Var("Vd",F4)], 16869 CC[Var("M",F1), 16870 Var("Vm",F4)]], 16871 TP[CC[Var("Vd",F4), 16872 Var("D",F1)], 16873 CC[Var("Vm",F4), 16874 Var("M",F1)]]), 16875 TP[Mop(Not, 16876 EQ(Dest 16877 ("VFPExtension", 16878 CTy"VFPExtension", 16879 qVar"state"), 16880 LC("NoVFP", 16881 CTy"VFPExtension"))), 16882 LNL cTy, 16883 Call 16884 ("VFP", 16885 CTy"instruction", 16886 Call 16887 ("vneg", 16888 CTy"VFP", 16889 TP[bVar"dp_operation", 16890 Var("d", 16891 FTy 5), 16892 Var("m", 16893 FTy 5)]))]))))))), 16894 (Bop(And,bVar"b'23", 16895 Bop(And,bVar"b'21", 16896 Bop(And,bVar"b'20", 16897 Bop(And,Mop(Not,bVar"b'19"), 16898 Bop(And,Mop(Not,bVar"b'18"), 16899 Bop(And,Mop(Not,bVar"b'17"), 16900 Bop(And,bVar"b'16", 16901 Bop(And,bVar"b'7", 16902 Bop(And, 16903 bVar"b'6", 16904 Mop(Not, 16905 bVar"b'4")))))))))), 16906 Let(Var("Vm",F4), 16907 Mop(Cast F4, 16908 LL[bVar"b'3",bVar"b'2",bVar"b'1", 16909 bVar"b'0"]), 16910 Let(Var("M",F1),Mop(Cast F1,LL[bVar"b'5"]), 16911 Let(Var("Vd",F4), 16912 Mop(Cast F4, 16913 LL[bVar"b'15",bVar"b'14", 16914 bVar"b'13",bVar"b'12"]), 16915 Let(Var("D",F1), 16916 Mop(Cast F1,LL[bVar"b'22"]), 16917 Let(bVar"dp_operation", 16918 EQ(Mop(Cast F1,LL[bVar"b'8"]), 16919 LW(1,1)), 16920 Let(TP[Var("d",FTy 5), 16921 Var("m",FTy 5)], 16922 ITE(bVar"dp_operation", 16923 TP[CC[Var("D",F1), 16924 Var("Vd",F4)], 16925 CC[Var("M",F1), 16926 Var("Vm",F4)]], 16927 TP[CC[Var("Vd",F4), 16928 Var("D",F1)], 16929 CC[Var("Vm",F4), 16930 Var("M",F1)]]), 16931 TP[Mop(Not, 16932 EQ(Dest 16933 ("VFPExtension", 16934 CTy"VFPExtension", 16935 qVar"state"), 16936 LC("NoVFP", 16937 CTy"VFPExtension"))), 16938 LNL cTy, 16939 Call 16940 ("VFP", 16941 CTy"instruction", 16942 Call 16943 ("vsqrt", 16944 CTy"VFP", 16945 TP[bVar"dp_operation", 16946 Var("d", 16947 FTy 5), 16948 Var("m", 16949 FTy 5)]))]))))))), 16950 (Bop(And,bVar"b'23", 16951 Bop(And,bVar"b'21", 16952 Bop(And,bVar"b'20", 16953 Bop(And,Mop(Not,bVar"b'19"), 16954 Bop(And,bVar"b'18", 16955 Bop(And,Mop(Not,bVar"b'17"), 16956 Bop(And, 16957 Mop(Not,bVar"b'16"), 16958 Bop(And,bVar"b'6", 16959 Mop(Not, 16960 bVar"b'4"))))))))), 16961 Let(Var("Vm",F4), 16962 Mop(Cast F4, 16963 LL[bVar"b'3",bVar"b'2",bVar"b'1", 16964 bVar"b'0"]), 16965 Let(Var("M",F1),Mop(Cast F1,LL[bVar"b'5"]), 16966 Let(Var("Vd",F4), 16967 Mop(Cast F4, 16968 LL[bVar"b'15",bVar"b'14", 16969 bVar"b'13",bVar"b'12"]), 16970 Let(Var("D",F1), 16971 Mop(Cast F1,LL[bVar"b'22"]), 16972 ITE(EQ(Mop(Cast F1,LL[bVar"b'7"]), 16973 LW(1,1)), 16974 Let(bVar"dp_operation", 16975 EQ(Mop(Cast F1, 16976 LL[bVar"b'8"]), 16977 LW(1,1)), 16978 Let(TP[Var("d",FTy 5), 16979 Var("m",FTy 5)], 16980 ITE(bVar"dp_operation", 16981 TP[CC[Var("D",F1), 16982 Var("Vd", 16983 F4)], 16984 CC[Var("M",F1), 16985 Var("Vm", 16986 F4)]], 16987 TP[CC[Var("Vd", 16988 F4), 16989 Var("D",F1)], 16990 CC[Var("Vm", 16991 F4), 16992 Var("M",F1)]]), 16993 TP[Mop(Not, 16994 EQ(Dest 16995 ("VFPExtension", 16996 CTy"VFPExtension", 16997 qVar"state"), 16998 LC("NoVFP", 16999 CTy"VFPExtension"))), 17000 LNL cTy, 17001 Call 17002 ("VFP", 17003 CTy"instruction", 17004 Call 17005 ("vcmp", 17006 CTy"VFP", 17007 TP[bVar"dp_operation", 17008 Var("d", 17009 FTy 5), 17010 Mop(Some, 17011 Var("m", 17012 FTy 5))]))])), 17013 TP[LF,LS"", 17014 Call 17015 ("Undefined", 17016 CTy"instruction", 17017 LW(0,32))])))))), 17018 (Bop(And,bVar"b'23", 17019 Bop(And,bVar"b'21", 17020 Bop(And,bVar"b'20", 17021 Bop(And,Mop(Not,bVar"b'19"), 17022 Bop(And,bVar"b'18", 17023 Bop(And,Mop(Not,bVar"b'17"), 17024 Bop(And,bVar"b'16", 17025 Bop(And,bVar"b'6", 17026 Mop(Not, 17027 bVar"b'4"))))))))), 17028 Let(Var("Vd",F4), 17029 Mop(Cast F4, 17030 LL[bVar"b'15",bVar"b'14",bVar"b'13", 17031 bVar"b'12"]), 17032 Let(Var("D",F1),Mop(Cast F1,LL[bVar"b'22"]), 17033 ITE(EQ(Mop(Cast F1,LL[bVar"b'7"]), 17034 LW(1,1)), 17035 Let(bVar"dp_operation", 17036 EQ(Mop(Cast F1,LL[bVar"b'8"]), 17037 LW(1,1)), 17038 TP[Mop(Not, 17039 EQ(Dest 17040 ("VFPExtension", 17041 CTy"VFPExtension", 17042 qVar"state"), 17043 LC("NoVFP", 17044 CTy"VFPExtension"))), 17045 ITE(Bop(And, 17046 EQ(Mop(Cast F1, 17047 LL[bVar"b'5"]), 17048 LW(0,1)), 17049 EQ(Mop(Cast F4, 17050 LL[bVar"b'3", 17051 bVar"b'2", 17052 bVar"b'1", 17053 bVar"b'0"]), 17054 LW(0,4))),LS"", 17055 LS"vcmp"), 17056 Call 17057 ("VFP",CTy"instruction", 17058 Call 17059 ("vcmp",CTy"VFP", 17060 TP[bVar"dp_operation", 17061 ITE(bVar"dp_operation", 17062 CC[Var("D",F1), 17063 Var("Vd",F4)], 17064 CC[Var("Vd",F4), 17065 Var("D",F1)]), 17066 LO(FTy 5)]))]), 17067 TP[LF,LS"", 17068 Call 17069 ("Undefined",CTy"instruction", 17070 LW(0,32))])))), 17071 (Bop(And,bVar"b'23", 17072 Bop(And,bVar"b'21", 17073 Bop(And,bVar"b'20", 17074 Bop(And,Mop(Not,bVar"b'19"), 17075 Bop(And,bVar"b'18", 17076 Bop(And,bVar"b'17", 17077 Bop(And,bVar"b'16", 17078 Bop(And,bVar"b'7", 17079 Bop(And, 17080 bVar"b'6", 17081 Mop(Not, 17082 bVar"b'4")))))))))), 17083 Let(Var("Vm",F4), 17084 Mop(Cast F4, 17085 LL[bVar"b'3",bVar"b'2",bVar"b'1", 17086 bVar"b'0"]), 17087 Let(Var("M",F1),Mop(Cast F1,LL[bVar"b'5"]), 17088 Let(Var("Vd",F4), 17089 Mop(Cast F4, 17090 LL[bVar"b'15",bVar"b'14", 17091 bVar"b'13",bVar"b'12"]), 17092 Let(Var("D",F1), 17093 Mop(Cast F1,LL[bVar"b'22"]), 17094 Let(bVar"double_to_single", 17095 EQ(Mop(Cast F1,LL[bVar"b'8"]), 17096 LW(1,1)), 17097 Let(TP[Var("d",FTy 5), 17098 Var("m",FTy 5)], 17099 ITE(bVar"double_to_single", 17100 TP[CC[Var("Vd",F4), 17101 Var("D",F1)], 17102 CC[Var("M",F1), 17103 Var("Vm",F4)]], 17104 TP[CC[Var("D",F1), 17105 Var("Vd",F4)], 17106 CC[Var("Vm",F4), 17107 Var("M",F1)]]), 17108 TP[Mop(Not, 17109 EQ(Dest 17110 ("VFPExtension", 17111 CTy"VFPExtension", 17112 qVar"state"), 17113 LC("NoVFP", 17114 CTy"VFPExtension"))), 17115 LNL cTy, 17116 Call 17117 ("VFP", 17118 CTy"instruction", 17119 Call 17120 ("vcvt_float", 17121 CTy"VFP", 17122 TP[bVar"double_to_single", 17123 Var("d", 17124 FTy 5), 17125 Var("m", 17126 FTy 5)]))]))))))), 17127 (Bop(And,bVar"b'23", 17128 Bop(And,bVar"b'21", 17129 Bop(And,bVar"b'20", 17130 Bop(And,bVar"b'19", 17131 Bop(And,Mop(Not,bVar"b'18"), 17132 Bop(And,Mop(Not,bVar"b'17"), 17133 Bop(And, 17134 Mop(Not,bVar"b'16"), 17135 Bop(And,bVar"b'6", 17136 Mop(Not, 17137 bVar"b'4"))))))))), 17138 Let(Var("Vd",F4), 17139 Mop(Cast F4, 17140 LL[bVar"b'15",bVar"b'14",bVar"b'13", 17141 bVar"b'12"]), 17142 Let(Var("D",F1),Mop(Cast F1,LL[bVar"b'22"]), 17143 Let(bVar"dp_operation", 17144 EQ(Mop(Cast F1,LL[bVar"b'8"]), 17145 LW(1,1)), 17146 TP[Mop(Not, 17147 EQ(Dest 17148 ("VFPExtension", 17149 CTy"VFPExtension", 17150 qVar"state"), 17151 LC("NoVFP", 17152 CTy"VFPExtension"))), 17153 LNL cTy, 17154 Call 17155 ("VFP",CTy"instruction", 17156 Call 17157 ("vcvt_from_integer", 17158 CTy"VFP", 17159 TP[bVar"dp_operation", 17160 EQ(Mop(Cast F1, 17161 LL[bVar"b'7"]), 17162 LW(0,1)), 17163 ITE(bVar"dp_operation", 17164 CC[Var("D",F1), 17165 Var("Vd",F4)], 17166 CC[Var("Vd",F4), 17167 Var("D",F1)]), 17168 CC[Mop(Cast F4, 17169 LL[bVar"b'3", 17170 bVar"b'2", 17171 bVar"b'1", 17172 bVar"b'0"]), 17173 Mop(Cast F1, 17174 LL[bVar"b'5"])]]))])))), 17175 (Bop(And,bVar"b'23", 17176 Bop(And,bVar"b'21", 17177 Bop(And,bVar"b'20", 17178 Bop(And,bVar"b'19", 17179 Bop(And,bVar"b'18", 17180 Bop(And,Mop(Not,bVar"b'17"), 17181 Bop(And,bVar"b'6", 17182 Mop(Not,bVar"b'4")))))))), 17183 Let(Var("Vm",F4), 17184 Mop(Cast F4, 17185 LL[bVar"b'3",bVar"b'2",bVar"b'1", 17186 bVar"b'0"]), 17187 Let(Var("M",F1),Mop(Cast F1,LL[bVar"b'5"]), 17188 Let(bVar"dp_operation", 17189 EQ(Mop(Cast F1,LL[bVar"b'8"]), 17190 LW(1,1)), 17191 TP[Mop(Not, 17192 EQ(Dest 17193 ("VFPExtension", 17194 CTy"VFPExtension", 17195 qVar"state"), 17196 LC("NoVFP", 17197 CTy"VFPExtension"))), 17198 LNL cTy, 17199 Call 17200 ("VFP",CTy"instruction", 17201 Call 17202 ("vcvt_to_integer",CTy"VFP", 17203 TP[bVar"dp_operation", 17204 EQ(Mop(Cast F1, 17205 LL[bVar"b'16"]), 17206 LW(0,1)), 17207 EQ(Mop(Cast F1, 17208 LL[bVar"b'7"]), 17209 LW(1,1)), 17210 CC[Mop(Cast F4, 17211 LL[bVar"b'15", 17212 bVar"b'14", 17213 bVar"b'13", 17214 bVar"b'12"]), 17215 Mop(Cast F1, 17216 LL[bVar"b'22"])], 17217 ITE(bVar"dp_operation", 17218 CC[Var("M",F1), 17219 Var("Vm",F4)], 17220 CC[Var("Vm",F4), 17221 Var("M",F1)])]))])))), 17222 (Bop(And,bVar"b'23", 17223 Bop(And,bVar"b'21", 17224 Bop(And,bVar"b'20", 17225 Bop(And,Mop(Not,bVar"b'6"), 17226 Mop(Not,bVar"b'4"))))), 17227 Let(Var("Vd",F4), 17228 Mop(Cast F4, 17229 LL[bVar"b'15",bVar"b'14",bVar"b'13", 17230 bVar"b'12"]), 17231 Let(Var("D",F1),Mop(Cast F1,LL[bVar"b'22"]), 17232 Let(bVar"single_register", 17233 EQ(Mop(Cast F1,LL[bVar"b'8"]), 17234 LW(0,1)), 17235 TP[Bop(In, 17236 Dest 17237 ("VFPExtension", 17238 CTy"VFPExtension", 17239 qVar"state"), 17240 SL[LC("VFPv3", 17241 CTy"VFPExtension"), 17242 LC("VFPv4", 17243 CTy"VFPExtension")]), 17244 ITE(Bop(And, 17245 EQ(Mop(Cast F1, 17246 LL[bVar"b'7"]), 17247 LW(0,1)), 17248 EQ(Mop(Cast F1, 17249 LL[bVar"b'5"]), 17250 LW(0,1))),LS"", 17251 LS"vmov (imm"), 17252 Call 17253 ("VFP",CTy"instruction", 17254 Call 17255 ("vmov_imm",CTy"VFP", 17256 TP[bVar"single_register", 17257 ITE(bVar"single_register", 17258 CC[Var("Vd",F4), 17259 Var("D",F1)], 17260 CC[Var("D",F1), 17261 Var("Vd",F4)]), 17262 Call 17263 ("VFPExpandImm",F64, 17264 TP[CC[Mop(Cast F4, 17265 LL[bVar"b'19", 17266 bVar"b'18", 17267 bVar"b'17", 17268 bVar"b'16"]), 17269 Mop(Cast F4, 17270 LL[bVar"b'3", 17271 bVar"b'2", 17272 bVar"b'1", 17273 bVar"b'0"])], 17274 bVar"single_register"])]))])))), 17275 (Bop(And,Mop(Not,bVar"b'23"), 17276 Bop(And,Mop(Not,bVar"b'22"), 17277 Bop(And,Mop(Not,bVar"b'21"), 17278 Bop(And,Mop(Not,bVar"b'8"),bVar"b'4")))), 17279 Let(Var("Rt",F4), 17280 Mop(Cast F4, 17281 LL[bVar"b'15",bVar"b'14",bVar"b'13", 17282 bVar"b'12"]), 17283 TP[Mop(Not, 17284 EQ(Dest 17285 ("VFPExtension", 17286 CTy"VFPExtension",qVar"state"), 17287 LC("NoVFP",CTy"VFPExtension"))), 17288 ITE(Bop(And,EQ(Var("Rt",F4),LW(15,4)), 17289 Mop(Not, 17290 Bop(And, 17291 EQ(Mop(Cast(FTy 2), 17292 LL[bVar"b'6", 17293 bVar"b'5"]), 17294 LW(0,2)), 17295 EQ(Mop(Cast F4, 17296 LL[bVar"b'3", 17297 bVar"b'2", 17298 bVar"b'1", 17299 bVar"b'0"]), 17300 LW(0,4))))), 17301 LS"vmov_single",LS""), 17302 Call 17303 ("VFP",CTy"instruction", 17304 Call 17305 ("vmov_single",CTy"VFP", 17306 TP[EQ(Mop(Cast F1,LL[bVar"b'20"]), 17307 LW(1,1)),Var("Rt",F4), 17308 CC[Mop(Cast F4, 17309 LL[bVar"b'19",bVar"b'18", 17310 bVar"b'17",bVar"b'16"]), 17311 Mop(Cast F1,LL[bVar"b'7"])]]))])), 17312 (Bop(And,bVar"b'23", 17313 Bop(And,bVar"b'22", 17314 Bop(And,bVar"b'21", 17315 Bop(And,Mop(Not,bVar"b'19"), 17316 Bop(And,Mop(Not,bVar"b'18"), 17317 Bop(And,Mop(Not,bVar"b'17"), 17318 Bop(And,bVar"b'16", 17319 Bop(And, 17320 Mop(Not, 17321 bVar"b'8"), 17322 bVar"b'4")))))))), 17323 Let(Var("Rt",F4), 17324 Mop(Cast F4, 17325 LL[bVar"b'15",bVar"b'14",bVar"b'13", 17326 bVar"b'12"]), 17327 Let(bVar"GOOD_MATCH", 17328 Bop(And, 17329 EQ(Mop(Cast(FTy 3), 17330 LL[bVar"b'7",bVar"b'6", 17331 bVar"b'5"]),LW(0,3)), 17332 EQ(Mop(Cast F4, 17333 LL[bVar"b'3",bVar"b'2", 17334 bVar"b'1",bVar"b'0"]), 17335 LW(0,4))), 17336 TP[Mop(Not, 17337 EQ(Dest 17338 ("VFPExtension", 17339 CTy"VFPExtension", 17340 qVar"state"), 17341 LC("NoVFP",CTy"VFPExtension"))), 17342 ITE(EQ(Mop(Cast F1,LL[bVar"b'20"]), 17343 LW(1,1)), 17344 TP[ITE(bVar"GOOD_MATCH",LS"", 17345 LS"mrs"), 17346 Call 17347 ("VFP",CTy"instruction", 17348 Call 17349 ("vmrs",CTy"VFP", 17350 Var("Rt",F4)))], 17351 TP[ITE(Bop(And, 17352 EQ(Var("Rt",F4), 17353 LW(15,4)), 17354 Mop(Not, 17355 bVar"GOOD_MATCH")), 17356 LS"msr",LS""), 17357 Call 17358 ("VFP",CTy"instruction", 17359 Call 17360 ("vmsr",CTy"VFP", 17361 Var("Rt",F4)))])])))], 17362 TP[LF,LS"", 17363 Call("Undefined",CTy"instruction",LW(0,32))]), 17364 TP[LF,LS"",Call("Undefined",CTy"instruction",LW(0,32))])), 17365 (Bop(And,bVar"b'27", 17366 Bop(And,bVar"b'26", 17367 Bop(And,bVar"b'11", 17368 Bop(And,Mop(Not,bVar"b'10"),bVar"b'9")))), 17369 ITB([(Bop(And,Mop(Not,bVar"b'24"),bVar"b'23"), 17370 Let(Var("imm8",F8), 17371 Mop(Cast F8, 17372 LL[bVar"b'7",bVar"b'6",bVar"b'5",bVar"b'4", 17373 bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"]), 17374 Let(Var("Vd",F4), 17375 Mop(Cast F4, 17376 LL[bVar"b'15",bVar"b'14",bVar"b'13", 17377 bVar"b'12"]), 17378 Let(Var("Rn",F4), 17379 Mop(Cast F4, 17380 LL[bVar"b'19",bVar"b'18",bVar"b'17", 17381 bVar"b'16"]), 17382 Let(Var("D",F1), 17383 Mop(Cast F1,LL[bVar"b'22"]), 17384 Let(bVar"single_regs", 17385 EQ(Mop(Cast F1,LL[bVar"b'8"]), 17386 LW(0,1)), 17387 Let(bVar"wback", 17388 EQ(Mop(Cast F1, 17389 LL[bVar"b'21"]), 17390 LW(1,1)), 17391 Let(TP[Var("d",FTy 5), 17392 nVar"regs"], 17393 ITE(bVar"single_regs", 17394 TP[CC[Var("Vd",F4), 17395 Var("D",F1)], 17396 Mop(Cast nTy, 17397 Var("imm8",F8))], 17398 TP[CC[Var("D",F1), 17399 Var("Vd",F4)], 17400 Bop(Div, 17401 Mop(Cast nTy, 17402 Var("imm8", 17403 F8)), 17404 LN 2)]), 17405 TP[Mop(Not, 17406 EQ(Dest 17407 ("VFPExtension", 17408 CTy"VFPExtension", 17409 qVar"state"), 17410 LC("NoVFP", 17411 CTy"VFPExtension"))), 17412 ITE(Bop(Or, 17413 EQ(nVar"regs", 17414 LN 0), 17415 Bop(Or, 17416 Bop(Gt, 17417 Bop(Add, 17418 Mop(Cast 17419 nTy, 17420 Var("d", 17421 FTy 5)), 17422 nVar"regs"), 17423 LN 32), 17424 Bop(Or, 17425 Bop(And, 17426 bVar"wback", 17427 EQ(Var("Rn", 17428 F4), 17429 LW(15, 17430 4))), 17431 Bop(And, 17432 Mop(Not, 17433 bVar"single_regs"), 17434 Bop(Or, 17435 Bop(Gt, 17436 nVar"regs", 17437 LN 17438 16), 17439 Bop(Bit, 17440 Var("imm8", 17441 F8), 17442 LN 17443 0)))))), 17444 LS"vpush/vpop", 17445 LS""), 17446 Call 17447 ("VFP", 17448 CTy"instruction", 17449 ITE(EQ(Mop(Cast F1, 17450 LL[bVar"b'20"]), 17451 LW(1,1)), 17452 Call 17453 ("vldm", 17454 CTy"VFP", 17455 TP[bVar"single_regs", 17456 LT, 17457 bVar"wback", 17458 Var("d", 17459 FTy 5), 17460 Var("Rn", 17461 F4), 17462 Var("imm8", 17463 F8)]), 17464 Call 17465 ("vstm", 17466 CTy"VFP", 17467 TP[bVar"single_regs", 17468 LT, 17469 bVar"wback", 17470 Var("d", 17471 FTy 5), 17472 Var("Rn", 17473 F4), 17474 Var("imm8", 17475 F8)])))])))))))), 17476 (Bop(And,bVar"b'24", 17477 Bop(And,Mop(Not,bVar"b'23"),bVar"b'21")), 17478 Let(Var("imm8",F8), 17479 Mop(Cast F8, 17480 LL[bVar"b'7",bVar"b'6",bVar"b'5",bVar"b'4", 17481 bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"]), 17482 Let(Var("Vd",F4), 17483 Mop(Cast F4, 17484 LL[bVar"b'15",bVar"b'14",bVar"b'13", 17485 bVar"b'12"]), 17486 Let(Var("Rn",F4), 17487 Mop(Cast F4, 17488 LL[bVar"b'19",bVar"b'18",bVar"b'17", 17489 bVar"b'16"]), 17490 Let(Var("D",F1), 17491 Mop(Cast F1,LL[bVar"b'22"]), 17492 Let(bVar"single_regs", 17493 EQ(Mop(Cast F1,LL[bVar"b'8"]), 17494 LW(0,1)), 17495 Let(TP[Var("d",FTy 5),nVar"regs"], 17496 ITE(bVar"single_regs", 17497 TP[CC[Var("Vd",F4), 17498 Var("D",F1)], 17499 Mop(Cast nTy, 17500 Var("imm8",F8))], 17501 TP[CC[Var("D",F1), 17502 Var("Vd",F4)], 17503 Bop(Div, 17504 Mop(Cast nTy, 17505 Var("imm8",F8)), 17506 LN 2)]), 17507 TP[Mop(Not, 17508 EQ(Dest 17509 ("VFPExtension", 17510 CTy"VFPExtension", 17511 qVar"state"), 17512 LC("NoVFP", 17513 CTy"VFPExtension"))), 17514 ITE(Bop(Or, 17515 EQ(nVar"regs", 17516 LN 0), 17517 Bop(Or, 17518 Bop(Gt, 17519 Bop(Add, 17520 Mop(Cast 17521 nTy, 17522 Var("d", 17523 FTy 5)), 17524 nVar"regs"), 17525 LN 32), 17526 Bop(Or, 17527 EQ(Var("Rn", 17528 F4), 17529 LW(15, 17530 4)), 17531 Bop(And, 17532 Mop(Not, 17533 bVar"single_regs"), 17534 Bop(Or, 17535 Bop(Gt, 17536 nVar"regs", 17537 LN 17538 16), 17539 Bop(Bit, 17540 Var("imm8", 17541 F8), 17542 LN 17543 0)))))), 17544 LS"vpush/vpop",LS""), 17545 Call 17546 ("VFP", 17547 CTy"instruction", 17548 ITE(EQ(Mop(Cast F1, 17549 LL[bVar"b'20"]), 17550 LW(1,1)), 17551 Call 17552 ("vldm", 17553 CTy"VFP", 17554 TP[bVar"single_regs", 17555 LF,LT, 17556 Var("d", 17557 FTy 5), 17558 Var("Rn",F4), 17559 Var("imm8", 17560 F8)]), 17561 Call 17562 ("vstm", 17563 CTy"VFP", 17564 TP[bVar"single_regs", 17565 LF,LT, 17566 Var("d", 17567 FTy 5), 17568 Var("Rn",F4), 17569 Var("imm8", 17570 F8)])))]))))))), 17571 (Bop(And,bVar"b'24",Mop(Not,bVar"b'21")), 17572 Let(Var("Vd",F4), 17573 Mop(Cast F4, 17574 LL[bVar"b'15",bVar"b'14",bVar"b'13", 17575 bVar"b'12"]), 17576 Let(Var("D",F1),Mop(Cast F1,LL[bVar"b'22"]), 17577 Let(bVar"single_reg", 17578 EQ(Mop(Cast F1,LL[bVar"b'8"]),LW(0,1)), 17579 Let(TP[bVar"args1",Var("args2",FTy 5), 17580 Var("args3",F4),Var("args4",F32)], 17581 TP[EQ(Mop(Cast F1,LL[bVar"b'23"]), 17582 LW(1,1)), 17583 ITE(bVar"single_reg", 17584 CC[Var("Vd",F4),Var("D",F1)], 17585 CC[Var("D",F1),Var("Vd",F4)]), 17586 Mop(Cast F4, 17587 LL[bVar"b'19",bVar"b'18", 17588 bVar"b'17",bVar"b'16"]), 17589 Mop(Cast F32, 17590 CC[Mop(Cast F8, 17591 LL[bVar"b'7", 17592 bVar"b'6", 17593 bVar"b'5", 17594 bVar"b'4", 17595 bVar"b'3", 17596 bVar"b'2", 17597 bVar"b'1",bVar"b'0"]), 17598 LW(0,2)])], 17599 TP[Mop(Not, 17600 EQ(Dest 17601 ("VFPExtension", 17602 CTy"VFPExtension", 17603 qVar"state"), 17604 LC("NoVFP", 17605 CTy"VFPExtension"))), 17606 LNL cTy, 17607 Call 17608 ("VFP",CTy"instruction", 17609 ITE(EQ(Mop(Cast F1, 17610 LL[bVar"b'20"]), 17611 LW(1,1)), 17612 Call 17613 ("vldr",CTy"VFP", 17614 TP[bVar"single_reg", 17615 bVar"args1", 17616 Var("args2",FTy 5), 17617 Var("args3",F4), 17618 Var("args4",F32)]), 17619 Call 17620 ("vstr",CTy"VFP", 17621 TP[bVar"single_reg", 17622 bVar"args1", 17623 Var("args2",FTy 5), 17624 Var("args3",F4), 17625 Var("args4",F32)])))]))))), 17626 (Bop(And,Mop(Not,bVar"b'24"), 17627 Bop(And,Mop(Not,bVar"b'23"), 17628 Bop(And,bVar"b'22", 17629 Bop(And,Mop(Not,bVar"b'21"), 17630 Bop(And,Mop(Not,bVar"b'8"), 17631 Bop(And,Mop(Not,bVar"b'7"), 17632 Bop(And,Mop(Not,bVar"b'6"), 17633 bVar"b'4"))))))), 17634 Let(Var("Rt",F4), 17635 Mop(Cast F4, 17636 LL[bVar"b'15",bVar"b'14",bVar"b'13", 17637 bVar"b'12"]), 17638 Let(Var("Rt2",F4), 17639 Mop(Cast F4, 17640 LL[bVar"b'19",bVar"b'18",bVar"b'17", 17641 bVar"b'16"]), 17642 Let(Var("m",FTy 5), 17643 CC[Mop(Cast F4, 17644 LL[bVar"b'3",bVar"b'2",bVar"b'1", 17645 bVar"b'0"]), 17646 Mop(Cast F1,LL[bVar"b'5"])], 17647 Let(bVar"to_arm_registers", 17648 EQ(Mop(Cast F1,LL[bVar"b'20"]), 17649 LW(1,1)), 17650 TP[Mop(Not, 17651 EQ(Dest 17652 ("VFPExtension", 17653 CTy"VFPExtension", 17654 qVar"state"), 17655 LC("NoVFP", 17656 CTy"VFPExtension"))), 17657 ITE(Bop(Or, 17658 EQ(Var("Rt",F4),LW(15,4)), 17659 Bop(Or, 17660 EQ(Var("Rt2",F4), 17661 LW(15,4)), 17662 Bop(Or, 17663 EQ(Var("m",FTy 5), 17664 LW(31,5)), 17665 Bop(And, 17666 bVar"to_arm_registers", 17667 EQ(Var("Rt", 17668 F4), 17669 Var("Rt2", 17670 F4)))))), 17671 LS"vmov_two_singles",LS""), 17672 Call 17673 ("VFP",CTy"instruction", 17674 Call 17675 ("vmov_two_singles", 17676 CTy"VFP", 17677 TP[bVar"to_arm_registers", 17678 Var("Rt",F4), 17679 Var("Rt2",F4), 17680 Var("m",FTy 5)]))]))))), 17681 (Bop(And,Mop(Not,bVar"b'24"), 17682 Bop(And,Mop(Not,bVar"b'23"), 17683 Bop(And,bVar"b'22", 17684 Bop(And,Mop(Not,bVar"b'21"), 17685 Bop(And,bVar"b'8", 17686 Bop(And,Mop(Not,bVar"b'7"), 17687 Bop(And,Mop(Not,bVar"b'6"), 17688 bVar"b'4"))))))), 17689 Let(Var("Rt",F4), 17690 Mop(Cast F4, 17691 LL[bVar"b'15",bVar"b'14",bVar"b'13", 17692 bVar"b'12"]), 17693 Let(Var("Rt2",F4), 17694 Mop(Cast F4, 17695 LL[bVar"b'19",bVar"b'18",bVar"b'17", 17696 bVar"b'16"]), 17697 Let(bVar"to_arm_registers", 17698 EQ(Mop(Cast F1,LL[bVar"b'20"]),LW(1,1)), 17699 TP[Mop(Not, 17700 EQ(Dest 17701 ("VFPExtension", 17702 CTy"VFPExtension", 17703 qVar"state"), 17704 LC("NoVFP",CTy"VFPExtension"))), 17705 ITE(Bop(Or,EQ(Var("Rt",F4),LW(15,4)), 17706 Bop(Or, 17707 EQ(Var("Rt2",F4),LW(15,4)), 17708 Bop(And, 17709 bVar"to_arm_registers", 17710 EQ(Var("Rt",F4), 17711 Var("Rt2",F4))))), 17712 LS"vmov_double",LS""), 17713 Call 17714 ("VFP",CTy"instruction", 17715 Call 17716 ("vmov_double",CTy"VFP", 17717 TP[bVar"to_arm_registers", 17718 Var("Rt",F4),Var("Rt2",F4), 17719 CC[Mop(Cast F1,LL[bVar"b'5"]), 17720 Mop(Cast F4, 17721 LL[bVar"b'3", 17722 bVar"b'2", 17723 bVar"b'1", 17724 bVar"b'0"])]]))]))))], 17725 TP[LF,LS"",Call("Undefined",CTy"instruction",LW(0,32))]))], 17726 TP[LF,LS"",Call("Undefined",CTy"instruction",LW(0,32))])))) 17727; 17728val DecodeARM_def = Def 17729 ("DecodeARM",Var("w",F32), 17730 Close 17731 (qVar"state", 17732 Let(Var("mc",CTy"MachineCode"), 17733 Call("ARM",CTy"MachineCode",Var("w",F32)), 17734 Let(Var("cond",F4),EX(Var("w",F32),LN 31,LN 28,F4), 17735 ITE(EQ(Var("cond",F4),LW(15,4)), 17736 Let(TP[bVar"b'27",bVar"b'26",bVar"b'25",bVar"b'24", 17737 bVar"b'23",bVar"b'22",bVar"b'21",bVar"b'20", 17738 bVar"b'19",bVar"b'18",bVar"b'17",bVar"b'16", 17739 bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", 17740 bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8", 17741 bVar"b'7",bVar"b'6",bVar"b'5",bVar"b'4", 17742 bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"], 17743 BL(28,EX(Var("w",F32),LN 27,LN 0,FTy 28)), 17744 ITB([(bVar"b'26", 17745 ITB([(bVar"b'21", 17746 ITB([(Bop(And,Mop(Not,bVar"b'27"), 17747 Bop(And,Mop(Not,bVar"b'25"), 17748 Bop(And,bVar"b'24", 17749 Bop(And, 17750 Mop(Not,bVar"b'23"), 17751 Bop(And, 17752 bVar"b'22", 17753 Bop(And, 17754 bVar"b'20", 17755 Mop(Not, 17756 bVar"b'7"))))))), 17757 ITB([(Bop(And,Mop(Not,bVar"b'6"), 17758 Bop(And, 17759 Mop(Not,bVar"b'5"), 17760 bVar"b'4")), 17761 Let(TP[bVar"v",qVar"s"], 17762 Apply 17763 (Call 17764 ("Do", 17765 ATy(qTy, 17766 PTy(bTy,qTy)), 17767 TP[LW(14,4), 17768 Bop(In, 17769 Dest 17770 ("Architecture", 17771 CTy"Architecture", 17772 qVar"state"), 17773 SL[LC("ARMv6K", 17774 CTy"Architecture"), 17775 LC("ARMv7_A", 17776 CTy"Architecture"), 17777 LC("ARMv7_R", 17778 CTy"Architecture")])]), 17779 qVar"state"), 17780 ITE(bVar"v", 17781 TP[Const 17782 ("ClearExclusive", 17783 CTy"instruction"), 17784 ITE(Mop(Not, 17785 Bop(And, 17786 EQ(Mop(Cast 17787 F1, 17788 LL[bVar"b'19"]), 17789 LW(1, 17790 1)), 17791 Bop(And, 17792 EQ(Mop(Cast 17793 (FTy 3), 17794 LL[bVar"b'18", 17795 bVar"b'17", 17796 bVar"b'16"]), 17797 LW(7, 17798 3)), 17799 Bop(And, 17800 EQ(Mop(Cast 17801 F4, 17802 LL[bVar"b'15", 17803 bVar"b'14", 17804 bVar"b'13", 17805 bVar"b'12"]), 17806 LW(15, 17807 4)), 17808 Bop(And, 17809 EQ(Mop(Cast 17810 F4, 17811 LL[bVar"b'11", 17812 bVar"b'10", 17813 bVar"b'9", 17814 bVar"b'8"]), 17815 LW(0, 17816 4)), 17817 EQ(Mop(Cast 17818 F4, 17819 LL[bVar"b'3", 17820 bVar"b'2", 17821 bVar"b'1", 17822 bVar"b'0"]), 17823 LW(15, 17824 4))))))), 17825 Apply 17826 (Call 17827 ("DECODE_UNPREDICTABLE", 17828 ATy(qTy, 17829 qTy), 17830 TP[Var("mc", 17831 CTy"MachineCode"), 17832 LS 17833 "CLREX"]), 17834 qVar"s"), 17835 qVar"s")], 17836 TP[Apply 17837 (Call 17838 ("Skip", 17839 ATy(qTy, 17840 CTy"instruction"), 17841 LU),qVar"s"), 17842 qVar"s"]))), 17843 (Bop(And,bVar"b'19", 17844 Bop(And,bVar"b'18", 17845 Bop(And,bVar"b'17", 17846 Bop(And, 17847 bVar"b'16", 17848 Bop(And, 17849 bVar"b'15", 17850 Bop(And, 17851 bVar"b'14", 17852 Bop(And, 17853 bVar"b'13", 17854 Bop(And, 17855 bVar"b'12", 17856 Bop(And, 17857 Mop(Not, 17858 bVar"b'11"), 17859 Bop(And, 17860 Mop(Not, 17861 bVar"b'10"), 17862 Bop(And, 17863 Mop(Not, 17864 bVar"b'9"), 17865 Bop(And, 17866 Mop(Not, 17867 bVar"b'8"), 17868 Bop(And, 17869 bVar"b'6", 17870 Bop(And, 17871 Mop(Not, 17872 bVar"b'5"), 17873 Mop(Not, 17874 bVar"b'4"))))))))))))))), 17875 Let(TP[bVar"v",qVar"s"], 17876 Apply 17877 (Call 17878 ("Do", 17879 ATy(qTy, 17880 PTy(bTy,qTy)), 17881 TP[LW(14,4), 17882 Bop(Ge, 17883 Apply 17884 (Call 17885 ("ArchVersion", 17886 ATy(qTy, 17887 nTy), 17888 LU), 17889 qVar"state"), 17890 LN 7)]), 17891 qVar"state"), 17892 TP[ITE(bVar"v", 17893 Call 17894 ("Hint", 17895 CTy"instruction", 17896 Call 17897 ("DataSynchronizationBarrier", 17898 CTy"Hint", 17899 Mop(Cast F4, 17900 LL[bVar"b'3", 17901 bVar"b'2", 17902 bVar"b'1", 17903 bVar"b'0"]))), 17904 Apply 17905 (Call 17906 ("Skip", 17907 ATy(qTy, 17908 CTy"instruction"), 17909 LU),qVar"s")), 17910 qVar"s"])), 17911 (Bop(And,bVar"b'6", 17912 Bop(And, 17913 Mop(Not,bVar"b'5"), 17914 bVar"b'4")), 17915 Let(TP[bVar"v",qVar"s"], 17916 Apply 17917 (Call 17918 ("Do", 17919 ATy(qTy, 17920 PTy(bTy,qTy)), 17921 TP[LW(14,4), 17922 Bop(Ge, 17923 Apply 17924 (Call 17925 ("ArchVersion", 17926 ATy(qTy, 17927 nTy), 17928 LU), 17929 qVar"state"), 17930 LN 7)]), 17931 qVar"state"), 17932 ITE(bVar"v", 17933 TP[Call 17934 ("Hint", 17935 CTy"instruction", 17936 Call 17937 ("DataMemoryBarrier", 17938 CTy"Hint", 17939 Mop(Cast F4, 17940 LL[bVar"b'3", 17941 bVar"b'2", 17942 bVar"b'1", 17943 bVar"b'0"]))), 17944 ITE(Mop(Not, 17945 Bop(And, 17946 EQ(Mop(Cast 17947 F4, 17948 LL[bVar"b'19", 17949 bVar"b'18", 17950 bVar"b'17", 17951 bVar"b'16"]), 17952 LW(15, 17953 4)), 17954 Bop(And, 17955 EQ(Mop(Cast 17956 F4, 17957 LL[bVar"b'15", 17958 bVar"b'14", 17959 bVar"b'13", 17960 bVar"b'12"]), 17961 LW(15, 17962 4)), 17963 EQ(Mop(Cast 17964 F4, 17965 LL[bVar"b'11", 17966 bVar"b'10", 17967 bVar"b'9", 17968 bVar"b'8"]), 17969 LW(0, 17970 4))))), 17971 Apply 17972 (Call 17973 ("DECODE_UNPREDICTABLE", 17974 ATy(qTy, 17975 qTy), 17976 TP[Var("mc", 17977 CTy"MachineCode"), 17978 LS 17979 "DMB"]), 17980 qVar"s"), 17981 qVar"s")], 17982 TP[Apply 17983 (Call 17984 ("Skip", 17985 ATy(qTy, 17986 CTy"instruction"), 17987 LU),qVar"s"), 17988 qVar"s"]))), 17989 (Bop(And,bVar"b'6", 17990 Bop(And,bVar"b'5", 17991 Mop(Not,bVar"b'4"))), 17992 Let(TP[bVar"v",qVar"s"], 17993 Apply 17994 (Call 17995 ("Do", 17996 ATy(qTy, 17997 PTy(bTy,qTy)), 17998 TP[LW(14,4), 17999 Bop(Ge, 18000 Apply 18001 (Call 18002 ("ArchVersion", 18003 ATy(qTy, 18004 nTy), 18005 LU), 18006 qVar"state"), 18007 LN 7)]), 18008 qVar"state"), 18009 ITE(bVar"v", 18010 TP[Call 18011 ("Hint", 18012 CTy"instruction", 18013 Call 18014 ("InstructionSynchronizationBarrier", 18015 CTy"Hint", 18016 Mop(Cast F4, 18017 LL[bVar"b'3", 18018 bVar"b'2", 18019 bVar"b'1", 18020 bVar"b'0"]))), 18021 ITE(Mop(Not, 18022 Bop(And, 18023 EQ(Mop(Cast 18024 F4, 18025 LL[bVar"b'19", 18026 bVar"b'18", 18027 bVar"b'17", 18028 bVar"b'16"]), 18029 LW(15, 18030 4)), 18031 Bop(And, 18032 EQ(Mop(Cast 18033 F4, 18034 LL[bVar"b'15", 18035 bVar"b'14", 18036 bVar"b'13", 18037 bVar"b'12"]), 18038 LW(15, 18039 4)), 18040 EQ(Mop(Cast 18041 F4, 18042 LL[bVar"b'11", 18043 bVar"b'10", 18044 bVar"b'9", 18045 bVar"b'8"]), 18046 LW(0, 18047 4))))), 18048 Apply 18049 (Call 18050 ("DECODE_UNPREDICTABLE", 18051 ATy(qTy, 18052 qTy), 18053 TP[Var("mc", 18054 CTy"MachineCode"), 18055 LS 18056 "ISB"]), 18057 qVar"s"), 18058 qVar"s")], 18059 TP[Apply 18060 (Call 18061 ("Skip", 18062 ATy(qTy, 18063 CTy"instruction"), 18064 LU),qVar"s"), 18065 qVar"s"]))), 18066 (Bop(Ge, 18067 Apply 18068 (Call 18069 ("ArchVersion", 18070 ATy(qTy,nTy),LU), 18071 qVar"state"),LN 5), 18072 TP[Call 18073 ("Undefined", 18074 CTy"instruction", 18075 LW(0,32)),qVar"state"])], 18076 TP[LX(CTy"instruction"), 18077 Apply 18078 (Call 18079 ("DECODE_UNPREDICTABLE", 18080 ATy(qTy,qTy), 18081 TP[Var("mc", 18082 CTy"MachineCode"), 18083 LS""]),qVar"state")])), 18084 (Bop(Ge, 18085 Apply 18086 (Call 18087 ("ArchVersion", 18088 ATy(qTy,nTy),LU), 18089 qVar"state"),LN 5), 18090 TP[Call 18091 ("Undefined", 18092 CTy"instruction",LW(0,32)), 18093 qVar"state"])], 18094 TP[LX(CTy"instruction"), 18095 Apply 18096 (Call 18097 ("DECODE_UNPREDICTABLE", 18098 ATy(qTy,qTy), 18099 TP[Var("mc", 18100 CTy"MachineCode"), 18101 LS""]),qVar"state")])), 18102 (Bop(And,Mop(Not,bVar"b'27"),bVar"b'20"), 18103 ITB([(Bop(And,Mop(Not,bVar"b'25"), 18104 Bop(And,Mop(Not,bVar"b'24"), 18105 bVar"b'22")), 18106 Let(TP[bVar"v",qVar"s"], 18107 Apply 18108 (Call 18109 ("Do", 18110 ATy(qTy,PTy(bTy,qTy)), 18111 TP[LW(14,4), 18112 Bop(Ge, 18113 Apply 18114 (Call 18115 ("ArchVersion", 18116 ATy(qTy,nTy), 18117 LU), 18118 qVar"state"), 18119 LN 7)]), 18120 qVar"state"), 18121 ITE(bVar"v", 18122 TP[Call 18123 ("Hint", 18124 CTy"instruction", 18125 Call 18126 ("PreloadInstruction", 18127 CTy"Hint", 18128 TP[EQ(Mop(Cast F1, 18129 LL[bVar"b'23"]), 18130 LW(1,1)), 18131 Mop(Cast F4, 18132 LL[bVar"b'19", 18133 bVar"b'18", 18134 bVar"b'17", 18135 bVar"b'16"]), 18136 Call 18137 ("immediate_form1", 18138 CTy"offset1", 18139 Mop(Cast 18140 F32, 18141 Mop(Cast 18142 (FTy 12), 18143 LL[bVar"b'11", 18144 bVar"b'10", 18145 bVar"b'9", 18146 bVar"b'8", 18147 bVar"b'7", 18148 bVar"b'6", 18149 bVar"b'5", 18150 bVar"b'4", 18151 bVar"b'3", 18152 bVar"b'2", 18153 bVar"b'1", 18154 bVar"b'0"])))])), 18155 ITE(Mop(Not, 18156 EQ(Mop(Cast F4, 18157 LL[bVar"b'15", 18158 bVar"b'14", 18159 bVar"b'13", 18160 bVar"b'12"]), 18161 LW(15,4))), 18162 Apply 18163 (Call 18164 ("DECODE_UNPREDICTABLE", 18165 ATy(qTy,qTy), 18166 TP[Var("mc", 18167 CTy"MachineCode"), 18168 LS"PLI"]), 18169 qVar"s"),qVar"s")], 18170 TP[Apply 18171 (Call 18172 ("Skip", 18173 ATy(qTy, 18174 CTy"instruction"), 18175 LU),qVar"s"), 18176 qVar"s"]))), 18177 (Bop(And,bVar"b'25", 18178 Bop(And,Mop(Not,bVar"b'24"), 18179 Bop(And,bVar"b'22", 18180 Mop(Not,bVar"b'4")))), 18181 Let(Var("Rm",F4), 18182 Mop(Cast F4, 18183 LL[bVar"b'3",bVar"b'2", 18184 bVar"b'1",bVar"b'0"]), 18185 Let(TP[bVar"v",qVar"s"], 18186 Apply 18187 (Call 18188 ("Do", 18189 ATy(qTy,PTy(bTy,qTy)), 18190 TP[LW(14,4), 18191 Bop(Ge, 18192 Apply 18193 (Call 18194 ("ArchVersion", 18195 ATy(qTy, 18196 nTy), 18197 LU), 18198 qVar"state"), 18199 LN 7)]), 18200 qVar"state"), 18201 ITE(bVar"v", 18202 TP[Let(TP[Var("shift_t", 18203 CTy"SRType"), 18204 nVar"shift_n"], 18205 Call 18206 ("DecodeImmShift", 18207 PTy(CTy"SRType", 18208 nTy), 18209 TP[Mop(Cast 18210 (FTy 2), 18211 LL[bVar"b'6", 18212 bVar"b'5"]), 18213 Mop(Cast 18214 (FTy 5), 18215 LL[bVar"b'11", 18216 bVar"b'10", 18217 bVar"b'9", 18218 bVar"b'8", 18219 bVar"b'7"])]), 18220 Call 18221 ("Hint", 18222 CTy"instruction", 18223 Call 18224 ("PreloadInstruction", 18225 CTy"Hint", 18226 TP[EQ(Mop(Cast 18227 F1, 18228 LL[bVar"b'23"]), 18229 LW(1, 18230 1)), 18231 Mop(Cast 18232 F4, 18233 LL[bVar"b'19", 18234 bVar"b'18", 18235 bVar"b'17", 18236 bVar"b'16"]), 18237 Call 18238 ("register_form1", 18239 CTy"offset1", 18240 TP[Var("Rm", 18241 F4), 18242 Var("shift_t", 18243 CTy"SRType"), 18244 nVar"shift_n"])]))), 18245 ITE(Bop(Or, 18246 EQ(Var("Rm", 18247 F4), 18248 LW(15,4)), 18249 Mop(Not, 18250 EQ(Mop(Cast 18251 F4, 18252 LL[bVar"b'15", 18253 bVar"b'14", 18254 bVar"b'13", 18255 bVar"b'12"]), 18256 LW(15, 18257 4)))), 18258 Apply 18259 (Call 18260 ("DECODE_UNPREDICTABLE", 18261 ATy(qTy, 18262 qTy), 18263 TP[Var("mc", 18264 CTy"MachineCode"), 18265 LS 18266 "PreloadInstruction (register)"]), 18267 qVar"s"), 18268 qVar"s")], 18269 TP[Apply 18270 (Call 18271 ("Skip", 18272 ATy(qTy, 18273 CTy"instruction"), 18274 LU),qVar"s"), 18275 qVar"s"])))), 18276 (Bop(And,Mop(Not,bVar"b'25"), 18277 Bop(And,bVar"b'24", 18278 Bop(And,bVar"b'19", 18279 Bop(And,bVar"b'18", 18280 Bop(And, 18281 bVar"b'17", 18282 bVar"b'16"))))), 18283 Let(TP[bVar"v",qVar"s"], 18284 Apply 18285 (Call 18286 ("Do", 18287 ATy(qTy,PTy(bTy,qTy)), 18288 TP[LW(14,4), 18289 Apply 18290 (Call 18291 ("HaveDSPSupport", 18292 ATy(qTy,bTy),LU), 18293 qVar"state")]), 18294 qVar"state"), 18295 ITE(bVar"v", 18296 TP[Call 18297 ("Hint", 18298 CTy"instruction", 18299 Call 18300 ("PreloadDataLiteral", 18301 CTy"Hint", 18302 TP[EQ(Mop(Cast F1, 18303 LL[bVar"b'23"]), 18304 LW(1,1)), 18305 Mop(Cast F32, 18306 Mop(Cast 18307 (FTy 12), 18308 LL[bVar"b'11", 18309 bVar"b'10", 18310 bVar"b'9", 18311 bVar"b'8", 18312 bVar"b'7", 18313 bVar"b'6", 18314 bVar"b'5", 18315 bVar"b'4", 18316 bVar"b'3", 18317 bVar"b'2", 18318 bVar"b'1", 18319 bVar"b'0"]))])), 18320 ITE(Mop(Not, 18321 Bop(And, 18322 EQ(Mop(Cast 18323 F1, 18324 LL[bVar"b'22"]), 18325 LW(1,1)), 18326 EQ(Mop(Cast 18327 F4, 18328 LL[bVar"b'15", 18329 bVar"b'14", 18330 bVar"b'13", 18331 bVar"b'12"]), 18332 LW(15,4)))), 18333 Apply 18334 (Call 18335 ("DECODE_UNPREDICTABLE", 18336 ATy(qTy,qTy), 18337 TP[Var("mc", 18338 CTy"MachineCode"), 18339 LS"PLD"]), 18340 qVar"s"),qVar"s")], 18341 TP[Apply 18342 (Call 18343 ("Skip", 18344 ATy(qTy, 18345 CTy"instruction"), 18346 LU),qVar"s"), 18347 qVar"s"]))), 18348 (Bop(And,Mop(Not,bVar"b'25"), 18349 bVar"b'24"), 18350 Let(Var("R",F1), 18351 Mop(Cast F1,LL[bVar"b'22"]), 18352 Let(TP[bVar"v",qVar"s"], 18353 Apply 18354 (Call 18355 ("Do", 18356 ATy(qTy,PTy(bTy,qTy)), 18357 TP[LW(14,4), 18358 Bop(Or, 18359 Bop(And, 18360 EQ(Var("R", 18361 F1), 18362 LW(1,1)), 18363 Bop(And, 18364 Bop(Ge, 18365 Apply 18366 (Call 18367 ("ArchVersion", 18368 ATy(qTy, 18369 nTy), 18370 LU), 18371 qVar"state"), 18372 LN 18373 7), 18374 Bop(In, 18375 LC("Extension_Multiprocessing", 18376 CTy"Extensions"), 18377 Dest 18378 ("Extensions", 18379 STy(CTy"Extensions"), 18380 qVar"state")))), 18381 Bop(And, 18382 EQ(Var("R", 18383 F1), 18384 LW(0,1)), 18385 Apply 18386 (Call 18387 ("HaveDSPSupport", 18388 ATy(qTy, 18389 bTy), 18390 LU), 18391 qVar"state")))]), 18392 qVar"state"), 18393 ITE(bVar"v", 18394 TP[Call 18395 ("Hint", 18396 CTy"instruction", 18397 Call 18398 ("PreloadData", 18399 CTy"Hint", 18400 TP[EQ(Mop(Cast 18401 F1, 18402 LL[bVar"b'23"]), 18403 LW(1,1)), 18404 EQ(Var("R", 18405 F1), 18406 LW(0,1)), 18407 Mop(Cast 18408 F4, 18409 LL[bVar"b'19", 18410 bVar"b'18", 18411 bVar"b'17", 18412 bVar"b'16"]), 18413 Call 18414 ("immediate_form1", 18415 CTy"offset1", 18416 Mop(Cast 18417 F32, 18418 Mop(Cast 18419 (FTy 12), 18420 LL[bVar"b'11", 18421 bVar"b'10", 18422 bVar"b'9", 18423 bVar"b'8", 18424 bVar"b'7", 18425 bVar"b'6", 18426 bVar"b'5", 18427 bVar"b'4", 18428 bVar"b'3", 18429 bVar"b'2", 18430 bVar"b'1", 18431 bVar"b'0"])))])), 18432 ITE(Mop(Not, 18433 EQ(Mop(Cast 18434 F4, 18435 LL[bVar"b'15", 18436 bVar"b'14", 18437 bVar"b'13", 18438 bVar"b'12"]), 18439 LW(15,4))), 18440 Apply 18441 (Call 18442 ("DECODE_UNPREDICTABLE", 18443 ATy(qTy, 18444 qTy), 18445 TP[Var("mc", 18446 CTy"MachineCode"), 18447 LS 18448 "PLD"]), 18449 qVar"s"), 18450 qVar"s")], 18451 TP[Apply 18452 (Call 18453 ("Skip", 18454 ATy(qTy, 18455 CTy"instruction"), 18456 LU),qVar"s"), 18457 qVar"s"])))), 18458 (Bop(And,bVar"b'25", 18459 Bop(And,bVar"b'24", 18460 Mop(Not,bVar"b'4"))), 18461 Let(Var("Rm",F4), 18462 Mop(Cast F4, 18463 LL[bVar"b'3",bVar"b'2", 18464 bVar"b'1",bVar"b'0"]), 18465 Let(Var("Rn",F4), 18466 Mop(Cast F4, 18467 LL[bVar"b'19", 18468 bVar"b'18", 18469 bVar"b'17", 18470 bVar"b'16"]), 18471 Let(Var("R",F1), 18472 Mop(Cast F1, 18473 LL[bVar"b'22"]), 18474 Let(TP[bVar"v",qVar"s"], 18475 Apply 18476 (Call 18477 ("Do", 18478 ATy(qTy, 18479 PTy(bTy, 18480 qTy)), 18481 TP[LW(14,4), 18482 Bop(Or, 18483 Bop(And, 18484 EQ(Var("R", 18485 F1), 18486 LW(1, 18487 1)), 18488 Bop(And, 18489 Bop(Ge, 18490 Apply 18491 (Call 18492 ("ArchVersion", 18493 ATy(qTy, 18494 nTy), 18495 LU), 18496 qVar"state"), 18497 LN 18498 7), 18499 Bop(In, 18500 LC("Extension_Multiprocessing", 18501 CTy"Extensions"), 18502 Dest 18503 ("Extensions", 18504 STy(CTy"Extensions"), 18505 qVar"state")))), 18506 Bop(And, 18507 EQ(Var("R", 18508 F1), 18509 LW(0, 18510 1)), 18511 Apply 18512 (Call 18513 ("HaveDSPSupport", 18514 ATy(qTy, 18515 bTy), 18516 LU), 18517 qVar"state")))]), 18518 qVar"state"), 18519 ITE(bVar"v", 18520 Let(bVar"is_pldw", 18521 EQ(Var("R", 18522 F1), 18523 LW(0,1)), 18524 TP[Let(TP[Var("shift_t", 18525 CTy"SRType"), 18526 nVar"shift_n"], 18527 Call 18528 ("DecodeImmShift", 18529 PTy(CTy"SRType", 18530 nTy), 18531 TP[Mop(Cast 18532 (FTy 2), 18533 LL[bVar"b'6", 18534 bVar"b'5"]), 18535 Mop(Cast 18536 (FTy 5), 18537 LL[bVar"b'11", 18538 bVar"b'10", 18539 bVar"b'9", 18540 bVar"b'8", 18541 bVar"b'7"])]), 18542 Call 18543 ("Hint", 18544 CTy"instruction", 18545 Call 18546 ("PreloadData", 18547 CTy"Hint", 18548 TP[EQ(Mop(Cast 18549 F1, 18550 LL[bVar"b'23"]), 18551 LW(1, 18552 1)), 18553 bVar"is_pldw", 18554 Var("Rn", 18555 F4), 18556 Call 18557 ("register_form1", 18558 CTy"offset1", 18559 TP[Var("Rm", 18560 F4), 18561 Var("shift_t", 18562 CTy"SRType"), 18563 nVar"shift_n"])]))), 18564 ITE(Bop(Or, 18565 EQ(Var("Rm", 18566 F4), 18567 LW(15, 18568 4)), 18569 Bop(Or, 18570 Bop(And, 18571 EQ(Var("Rn", 18572 F4), 18573 LW(15, 18574 4)), 18575 bVar"is_pldw"), 18576 Mop(Not, 18577 EQ(Mop(Cast 18578 F4, 18579 LL[bVar"b'15", 18580 bVar"b'14", 18581 bVar"b'13", 18582 bVar"b'12"]), 18583 LW(15, 18584 4))))), 18585 Apply 18586 (Call 18587 ("DECODE_UNPREDICTABLE", 18588 ATy(qTy, 18589 qTy), 18590 TP[Var("mc", 18591 CTy"MachineCode"), 18592 LS 18593 "PreloadData (register)"]), 18594 qVar"s"), 18595 qVar"s")]), 18596 TP[Apply 18597 (Call 18598 ("Skip", 18599 ATy(qTy, 18600 CTy"instruction"), 18601 LU), 18602 qVar"s"), 18603 qVar"s"])))))), 18604 (Bop(Ge, 18605 Apply 18606 (Call 18607 ("ArchVersion", 18608 ATy(qTy,nTy),LU), 18609 qVar"state"),LN 5), 18610 TP[Call 18611 ("Undefined", 18612 CTy"instruction",LW(0,32)), 18613 qVar"state"])], 18614 TP[LX(CTy"instruction"), 18615 Apply 18616 (Call 18617 ("DECODE_UNPREDICTABLE", 18618 ATy(qTy,qTy), 18619 TP[Var("mc", 18620 CTy"MachineCode"), 18621 LS""]),qVar"state")])), 18622 (Bop(Ge, 18623 Apply 18624 (Call 18625 ("ArchVersion",ATy(qTy,nTy),LU), 18626 qVar"state"),LN 5), 18627 TP[Call 18628 ("Undefined",CTy"instruction", 18629 LW(0,32)),qVar"state"])], 18630 TP[LX(CTy"instruction"), 18631 Apply 18632 (Call 18633 ("DECODE_UNPREDICTABLE", 18634 ATy(qTy,qTy), 18635 TP[Var("mc",CTy"MachineCode"), 18636 LS""]),qVar"state")])), 18637 (Bop(And,Mop(Not,bVar"b'27"), 18638 Bop(And,Mop(Not,bVar"b'25"), 18639 Bop(And,bVar"b'24", 18640 Bop(And,Mop(Not,bVar"b'23"), 18641 Bop(And,Mop(Not,bVar"b'22"), 18642 Bop(And, 18643 Mop(Not,bVar"b'21"), 18644 Bop(And, 18645 Mop(Not,bVar"b'20"), 18646 Bop(And, 18647 bVar"b'16", 18648 Bop(And, 18649 Mop(Not, 18650 bVar"b'7"), 18651 Bop(And, 18652 Mop(Not, 18653 bVar"b'6"), 18654 Bop(And, 18655 Mop(Not, 18656 bVar"b'5"), 18657 Mop(Not, 18658 bVar"b'4")))))))))))), 18659 Let(TP[bVar"v",qVar"s"], 18660 Apply 18661 (Call 18662 ("Do",ATy(qTy,PTy(bTy,qTy)), 18663 TP[LW(14,4), 18664 Bop(Ge, 18665 Apply 18666 (Call 18667 ("ArchVersion", 18668 ATy(qTy,nTy),LU), 18669 qVar"state"),LN 6)]), 18670 qVar"state"), 18671 ITE(bVar"v", 18672 TP[Call 18673 ("System",CTy"instruction", 18674 Call 18675 ("Setend",CTy"System", 18676 EQ(Mop(Cast F1,LL[bVar"b'9"]), 18677 LW(1,1)))), 18678 ITE(Mop(Not, 18679 Bop(And, 18680 EQ(Mop(Cast(FTy 3), 18681 LL[bVar"b'19", 18682 bVar"b'18", 18683 bVar"b'17"]), 18684 LW(0,3)), 18685 Bop(And, 18686 EQ(Mop(Cast(FTy 6), 18687 LL[bVar"b'15", 18688 bVar"b'14", 18689 bVar"b'13", 18690 bVar"b'12", 18691 bVar"b'11", 18692 bVar"b'10"]), 18693 LW(0,6)), 18694 Bop(And, 18695 EQ(Mop(Cast F1, 18696 LL[bVar"b'8"]), 18697 LW(0,1)), 18698 EQ(Mop(Cast F4, 18699 LL[bVar"b'3", 18700 bVar"b'2", 18701 bVar"b'1", 18702 bVar"b'0"]), 18703 LW(0,4)))))), 18704 Apply 18705 (Call 18706 ("DECODE_UNPREDICTABLE", 18707 ATy(qTy,qTy), 18708 TP[Var("mc", 18709 CTy"MachineCode"), 18710 LS"SETEND"]),qVar"s"), 18711 qVar"s")], 18712 TP[Apply 18713 (Call 18714 ("Skip", 18715 ATy(qTy,CTy"instruction"),LU), 18716 qVar"s"),qVar"s"]))), 18717 (Bop(And,Mop(Not,bVar"b'27"), 18718 Bop(And,Mop(Not,bVar"b'25"), 18719 Bop(And,bVar"b'24", 18720 Bop(And,Mop(Not,bVar"b'23"), 18721 Bop(And,Mop(Not,bVar"b'22"), 18722 Bop(And, 18723 Mop(Not,bVar"b'21"), 18724 Bop(And, 18725 Mop(Not,bVar"b'20"), 18726 Bop(And, 18727 Mop(Not, 18728 bVar"b'16"), 18729 Mop(Not, 18730 bVar"b'5"))))))))), 18731 Let(Var("mode",FTy 5), 18732 Mop(Cast(FTy 5), 18733 LL[bVar"b'4",bVar"b'3",bVar"b'2", 18734 bVar"b'1",bVar"b'0"]), 18735 Let(Var("F",F1), 18736 Mop(Cast F1,LL[bVar"b'6"]), 18737 Let(Var("I",F1), 18738 Mop(Cast F1,LL[bVar"b'7"]), 18739 Let(Var("A",F1), 18740 Mop(Cast F1,LL[bVar"b'8"]), 18741 Let(Var("M",F1), 18742 Mop(Cast F1,LL[bVar"b'17"]), 18743 Let(Var("imod",FTy 2), 18744 Mop(Cast(FTy 2), 18745 LL[bVar"b'19", 18746 bVar"b'18"]), 18747 Let(TP[bVar"v",qVar"s"], 18748 Apply 18749 (Call 18750 ("Do", 18751 ATy(qTy, 18752 PTy(bTy, 18753 qTy)), 18754 TP[LW(14,4), 18755 Bop(Ge, 18756 Apply 18757 (Call 18758 ("ArchVersion", 18759 ATy(qTy, 18760 nTy), 18761 LU), 18762 qVar"state"), 18763 LN 6)]), 18764 qVar"state"), 18765 ITE(bVar"v", 18766 TP[Call 18767 ("System", 18768 CTy"instruction", 18769 Call 18770 ("ChangeProcessorState", 18771 CTy"System", 18772 TP[EQ(Var("imod", 18773 FTy 2), 18774 LW(2, 18775 2)), 18776 EQ(Var("imod", 18777 FTy 2), 18778 LW(3, 18779 2)), 18780 EQ(Var("A", 18781 F1), 18782 LW(1, 18783 1)), 18784 EQ(Var("I", 18785 F1), 18786 LW(1, 18787 1)), 18788 EQ(Var("F", 18789 F1), 18790 LW(1, 18791 1)), 18792 ITE(EQ(Var("M", 18793 F1), 18794 LW(1, 18795 1)), 18796 Mop(Some, 18797 Var("mode", 18798 FTy 5)), 18799 LO(FTy 5))])), 18800 ITE(Bop(Or, 18801 Bop(And, 18802 Mop(Not, 18803 EQ(Var("mode", 18804 FTy 5), 18805 LW(0, 18806 5))), 18807 EQ(Var("M", 18808 F1), 18809 LW(0, 18810 1))), 18811 Bop(Or, 18812 EQ(Bop(Bit, 18813 Var("imod", 18814 FTy 2), 18815 LN 18816 1), 18817 EQ(CC[Var("A", 18818 F1), 18819 Var("I", 18820 F1), 18821 Var("F", 18822 F1)], 18823 LW(0, 18824 3))), 18825 Bop(Or, 18826 Bop(And, 18827 EQ(Var("imod", 18828 FTy 2), 18829 LW(0, 18830 2)), 18831 EQ(Var("M", 18832 F1), 18833 LW(0, 18834 1))), 18835 Bop(Or, 18836 EQ(Var("imod", 18837 FTy 2), 18838 LW(1, 18839 2)), 18840 Mop(Not, 18841 EQ(Mop(Cast 18842 (FTy 7), 18843 LL[bVar"b'15", 18844 bVar"b'14", 18845 bVar"b'13", 18846 bVar"b'12", 18847 bVar"b'11", 18848 bVar"b'10", 18849 bVar"b'9"]), 18850 LW(0, 18851 7))))))), 18852 Apply 18853 (Call 18854 ("DECODE_UNPREDICTABLE", 18855 ATy(qTy, 18856 qTy), 18857 TP[Var("mc", 18858 CTy"MachineCode"), 18859 LS 18860 "ChangeProcessorState"]), 18861 qVar"s"), 18862 qVar"s")], 18863 TP[Apply 18864 (Call 18865 ("Skip", 18866 ATy(qTy, 18867 CTy"instruction"), 18868 LU), 18869 qVar"s"), 18870 qVar"s"]))))))))), 18871 (Bop(And,bVar"b'27", 18872 Bop(And,Mop(Not,bVar"b'25"), 18873 Bop(And,bVar"b'22",Mop(Not,bVar"b'20")))), 18874 Let(Var("U",F1),Mop(Cast F1,LL[bVar"b'23"]), 18875 Let(TP[bVar"v",qVar"s"], 18876 Apply 18877 (Call 18878 ("Do",ATy(qTy,PTy(bTy,qTy)), 18879 TP[LW(14,4), 18880 Bop(Ge, 18881 Apply 18882 (Call 18883 ("ArchVersion", 18884 ATy(qTy,nTy),LU), 18885 qVar"state"),LN 6)]), 18886 qVar"state"), 18887 ITE(bVar"v", 18888 TP[Call 18889 ("System",CTy"instruction", 18890 Call 18891 ("StoreReturnState", 18892 CTy"System", 18893 TP[EQ(Var("U",F1),LW(1,1)), 18894 EQ(Mop(Cast F1, 18895 LL[bVar"b'24"]), 18896 Var("U",F1)), 18897 EQ(Mop(Cast F1, 18898 LL[bVar"b'21"]), 18899 LW(1,1)), 18900 Mop(Cast(FTy 5), 18901 LL[bVar"b'4", 18902 bVar"b'3", 18903 bVar"b'2", 18904 bVar"b'1", 18905 bVar"b'0"])])), 18906 ITE(Mop(Not, 18907 Bop(And, 18908 EQ(Mop(Cast F4, 18909 LL[bVar"b'19", 18910 bVar"b'18", 18911 bVar"b'17", 18912 bVar"b'16"]), 18913 LW(13,4)), 18914 Bop(And, 18915 EQ(Mop(Cast F4, 18916 LL[bVar"b'15", 18917 bVar"b'14", 18918 bVar"b'13", 18919 bVar"b'12"]), 18920 LW(0,4)), 18921 Bop(And, 18922 EQ(Mop(Cast 18923 F4, 18924 LL[bVar"b'11", 18925 bVar"b'10", 18926 bVar"b'9", 18927 bVar"b'8"]), 18928 LW(5,4)), 18929 EQ(Mop(Cast 18930 (FTy 3), 18931 LL[bVar"b'7", 18932 bVar"b'6", 18933 bVar"b'5"]), 18934 LW(0,3)))))), 18935 Apply 18936 (Call 18937 ("DECODE_UNPREDICTABLE", 18938 ATy(qTy,qTy), 18939 TP[Var("mc", 18940 CTy"MachineCode"), 18941 LS"SRS"]),qVar"s"), 18942 qVar"s")], 18943 TP[Apply 18944 (Call 18945 ("Skip", 18946 ATy(qTy,CTy"instruction"), 18947 LU),qVar"s"),qVar"s"])))), 18948 (Bop(And,bVar"b'27", 18949 Bop(And,Mop(Not,bVar"b'25"), 18950 Bop(And,Mop(Not,bVar"b'22"),bVar"b'20"))), 18951 Let(Var("Rn",F4), 18952 Mop(Cast F4, 18953 LL[bVar"b'19",bVar"b'18",bVar"b'17", 18954 bVar"b'16"]), 18955 Let(Var("U",F1), 18956 Mop(Cast F1,LL[bVar"b'23"]), 18957 Let(TP[bVar"v",qVar"s"], 18958 Apply 18959 (Call 18960 ("Do",ATy(qTy,PTy(bTy,qTy)), 18961 TP[LW(14,4), 18962 Bop(Ge, 18963 Apply 18964 (Call 18965 ("ArchVersion", 18966 ATy(qTy,nTy),LU), 18967 qVar"state"),LN 6)]), 18968 qVar"state"), 18969 ITE(bVar"v", 18970 TP[Call 18971 ("System", 18972 CTy"instruction", 18973 Call 18974 ("ReturnFromException", 18975 CTy"System", 18976 TP[EQ(Var("U",F1), 18977 LW(1,1)), 18978 EQ(Mop(Cast F1, 18979 LL[bVar"b'24"]), 18980 Var("U",F1)), 18981 EQ(Mop(Cast F1, 18982 LL[bVar"b'21"]), 18983 LW(1,1)), 18984 Var("Rn",F4)])), 18985 ITE(Bop(Or, 18986 EQ(Var("Rn",F4), 18987 LW(15,4)), 18988 Mop(Not, 18989 Bop(And, 18990 EQ(Mop(Cast 18991 F4, 18992 LL[bVar"b'15", 18993 bVar"b'14", 18994 bVar"b'13", 18995 bVar"b'12"]), 18996 LW(0,4)), 18997 Bop(And, 18998 EQ(Mop(Cast 18999 F4, 19000 LL[bVar"b'11", 19001 bVar"b'10", 19002 bVar"b'9", 19003 bVar"b'8"]), 19004 LW(10, 19005 4)), 19006 EQ(Mop(Cast 19007 F8, 19008 LL[bVar"b'7", 19009 bVar"b'6", 19010 bVar"b'5", 19011 bVar"b'4", 19012 bVar"b'3", 19013 bVar"b'2", 19014 bVar"b'1", 19015 bVar"b'0"]), 19016 LW(0, 19017 8)))))), 19018 Apply 19019 (Call 19020 ("DECODE_UNPREDICTABLE", 19021 ATy(qTy,qTy), 19022 TP[Var("mc", 19023 CTy"MachineCode"), 19024 LS 19025 "ReturnFromException"]), 19026 qVar"s"),qVar"s")], 19027 TP[Apply 19028 (Call 19029 ("Skip", 19030 ATy(qTy, 19031 CTy"instruction"), 19032 LU),qVar"s"),qVar"s"]))))), 19033 (Bop(And,bVar"b'27",bVar"b'25"), 19034 Let(TP[bVar"v",qVar"s"], 19035 Apply 19036 (Call 19037 ("Do",ATy(qTy,PTy(bTy,qTy)), 19038 TP[LW(14,4), 19039 Bop(Ge, 19040 Apply 19041 (Call 19042 ("ArchVersion", 19043 ATy(qTy,nTy),LU), 19044 qVar"state"),LN 5)]), 19045 qVar"state"), 19046 TP[ITE(bVar"v", 19047 Call 19048 ("Branch",CTy"instruction", 19049 Call 19050 ("BranchLinkExchangeImmediate", 19051 CTy"Branch", 19052 TP[LC("InstrSet_Thumb", 19053 CTy"InstrSet"), 19054 Mop(SE F32, 19055 CC[Mop(Cast(FTy 24), 19056 LL[bVar"b'23", 19057 bVar"b'22", 19058 bVar"b'21", 19059 bVar"b'20", 19060 bVar"b'19", 19061 bVar"b'18", 19062 bVar"b'17", 19063 bVar"b'16", 19064 bVar"b'15", 19065 bVar"b'14", 19066 bVar"b'13", 19067 bVar"b'12", 19068 bVar"b'11", 19069 bVar"b'10", 19070 bVar"b'9", 19071 bVar"b'8", 19072 bVar"b'7", 19073 bVar"b'6", 19074 bVar"b'5", 19075 bVar"b'4", 19076 bVar"b'3", 19077 bVar"b'2", 19078 bVar"b'1", 19079 bVar"b'0"]), 19080 Mop(Cast F1, 19081 LL[bVar"b'24"]), 19082 LW(0,1)])])), 19083 Apply 19084 (Call 19085 ("Skip", 19086 ATy(qTy,CTy"instruction"),LU), 19087 qVar"s")),qVar"s"])), 19088 (Bop(Ge, 19089 Apply 19090 (Call("ArchVersion",ATy(qTy,nTy),LU), 19091 qVar"state"),LN 5), 19092 TP[Call("Undefined",CTy"instruction",LW(0,32)), 19093 qVar"state"])], 19094 TP[LX(CTy"instruction"), 19095 Apply 19096 (Call 19097 ("DECODE_UNPREDICTABLE",ATy(qTy,qTy), 19098 TP[Var("mc",CTy"MachineCode"),LS""]), 19099 qVar"state")])), 19100 Let(TP[bVar"b'27",bVar"b'26",bVar"b'25",bVar"b'24", 19101 bVar"b'23",bVar"b'22",bVar"b'21",bVar"b'20", 19102 bVar"b'19",bVar"b'18",bVar"b'17",bVar"b'16", 19103 bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", 19104 bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8", 19105 bVar"b'7",bVar"b'6",bVar"b'5",bVar"b'4", 19106 bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"], 19107 BL(28,EX(Var("w",F32),LN 27,LN 0,FTy 28)), 19108 ITB([(bVar"b'26", 19109 ITB([(Bop(And,Mop(Not,bVar"b'27"), 19110 Bop(And,bVar"b'25", 19111 Bop(And,bVar"b'24", 19112 Bop(And,bVar"b'23", 19113 Bop(And,bVar"b'22", 19114 Bop(And,bVar"b'21", 19115 Bop(And, 19116 bVar"b'20", 19117 Bop(And, 19118 bVar"b'7", 19119 Bop(And, 19120 bVar"b'6", 19121 Bop(And, 19122 bVar"b'5", 19123 bVar"b'4")))))))))), 19124 Let(TP[bVar"v",qVar"s"], 19125 Let(qVar"s", 19126 Rupd 19127 ("CurrentCondition", 19128 TP[qVar"state",Var("cond",F4)]), 19129 TP[Apply 19130 (Call 19131 ("ConditionPassed", 19132 ATy(qTy,bTy),LU), 19133 qVar"s"),qVar"s"]), 19134 TP[ITE(bVar"v", 19135 Call 19136 ("Undefined", 19137 CTy"instruction", 19138 Mop(Cast F32, 19139 CC[Mop(Cast(FTy 12), 19140 LL[bVar"b'19", 19141 bVar"b'18", 19142 bVar"b'17", 19143 bVar"b'16", 19144 bVar"b'15", 19145 bVar"b'14", 19146 bVar"b'13", 19147 bVar"b'12", 19148 bVar"b'11", 19149 bVar"b'10", 19150 bVar"b'9", 19151 bVar"b'8"]), 19152 Mop(Cast F4, 19153 LL[bVar"b'3", 19154 bVar"b'2", 19155 bVar"b'1", 19156 bVar"b'0"])])), 19157 Const 19158 ("NoOperation", 19159 CTy"instruction")),qVar"s"])), 19160 (Bop(And,Mop(Not,bVar"b'27"), 19161 Bop(And,Mop(Not,bVar"b'25"), 19162 Bop(And,Mop(Not,bVar"b'24"), 19163 Bop(And,bVar"b'21", 19164 Mop(Not,bVar"b'20"))))), 19165 Let(Var("Rt",F4), 19166 Mop(Cast F4, 19167 LL[bVar"b'15",bVar"b'14", 19168 bVar"b'13",bVar"b'12"]), 19169 Let(Var("Rn",F4), 19170 Mop(Cast F4, 19171 LL[bVar"b'19",bVar"b'18", 19172 bVar"b'17",bVar"b'16"]), 19173 Let(Var("B",F1), 19174 Mop(Cast F1,LL[bVar"b'22"]), 19175 Let(TP[bVar"v",qVar"s"], 19176 Apply 19177 (Call 19178 ("Do", 19179 ATy(qTy, 19180 PTy(bTy,qTy)), 19181 TP[Var("cond",F4), 19182 LT]), 19183 qVar"state"), 19184 ITE(bVar"v", 19185 TP[Let(bVar"add", 19186 EQ(Mop(Cast 19187 F1, 19188 LL[bVar"b'23"]), 19189 LW(1,1)), 19190 Let(Var("m", 19191 CTy"offset1"), 19192 Call 19193 ("immediate_form1", 19194 CTy"offset1", 19195 Mop(Cast 19196 F32, 19197 Mop(Cast 19198 (FTy 12), 19199 LL[bVar"b'11", 19200 bVar"b'10", 19201 bVar"b'9", 19202 bVar"b'8", 19203 bVar"b'7", 19204 bVar"b'6", 19205 bVar"b'5", 19206 bVar"b'4", 19207 bVar"b'3", 19208 bVar"b'2", 19209 bVar"b'1", 19210 bVar"b'0"]))), 19211 ITE(EQ(Var("B", 19212 F1), 19213 LW(1, 19214 1)), 19215 Call 19216 ("Store", 19217 CTy"instruction", 19218 Call 19219 ("StoreByteUnprivileged", 19220 CTy"Store", 19221 TP[bVar"add", 19222 LT, 19223 Var("Rt", 19224 F4), 19225 Var("Rn", 19226 F4), 19227 Var("m", 19228 CTy"offset1")])), 19229 Call 19230 ("Store", 19231 CTy"instruction", 19232 Call 19233 ("StoreUnprivileged", 19234 CTy"Store", 19235 TP[bVar"add", 19236 LT, 19237 Var("Rt", 19238 F4), 19239 Var("Rn", 19240 F4), 19241 Var("m", 19242 CTy"offset1")]))))), 19243 ITE(Bop(Or, 19244 Bop(And, 19245 EQ(Var("B", 19246 F1), 19247 LW(1, 19248 1)), 19249 EQ(Var("Rt", 19250 F4), 19251 LW(15, 19252 4))), 19253 Bop(Or, 19254 EQ(Var("Rn", 19255 F4), 19256 LW(15, 19257 4)), 19258 EQ(Var("Rn", 19259 F4), 19260 Var("Rt", 19261 F4)))), 19262 Apply 19263 (Call 19264 ("DECODE_UNPREDICTABLE", 19265 ATy(qTy, 19266 qTy), 19267 TP[Var("mc", 19268 CTy"MachineCode"), 19269 LS 19270 "StoreUnprivileged (immediate)"]), 19271 qVar"s"), 19272 qVar"s")], 19273 TP[Apply 19274 (Call 19275 ("Skip", 19276 ATy(qTy, 19277 CTy"instruction"), 19278 LU),qVar"s"), 19279 qVar"s"])))))), 19280 (Bop(And,Mop(Not,bVar"b'27"), 19281 Bop(And,Mop(Not,bVar"b'25"), 19282 Mop(Not,bVar"b'20"))), 19283 Let(Var("Rt",F4), 19284 Mop(Cast F4, 19285 LL[bVar"b'15",bVar"b'14", 19286 bVar"b'13",bVar"b'12"]), 19287 Let(Var("Rn",F4), 19288 Mop(Cast F4, 19289 LL[bVar"b'19",bVar"b'18", 19290 bVar"b'17",bVar"b'16"]), 19291 Let(Var("B",F1), 19292 Mop(Cast F1,LL[bVar"b'22"]), 19293 Let(Var("P",F1), 19294 Mop(Cast F1, 19295 LL[bVar"b'24"]), 19296 Let(TP[bVar"v",qVar"s"], 19297 Apply 19298 (Call 19299 ("Do", 19300 ATy(qTy, 19301 PTy(bTy, 19302 qTy)), 19303 TP[Var("cond", 19304 F4),LT]), 19305 qVar"state"), 19306 ITE(bVar"v", 19307 Let(bVar"wback", 19308 Bop(Or, 19309 EQ(Var("P", 19310 F1), 19311 LW(0, 19312 1)), 19313 EQ(Mop(Cast 19314 F1, 19315 LL[bVar"b'21"]), 19316 LW(1, 19317 1))), 19318 TP[Let(bVar"add", 19319 EQ(Mop(Cast 19320 F1, 19321 LL[bVar"b'23"]), 19322 LW(1, 19323 1)), 19324 Let(bVar"index", 19325 EQ(Var("P", 19326 F1), 19327 LW(1, 19328 1)), 19329 Let(Var("m", 19330 CTy"offset1"), 19331 Call 19332 ("immediate_form1", 19333 CTy"offset1", 19334 Mop(Cast 19335 F32, 19336 Mop(Cast 19337 (FTy 12), 19338 LL[bVar"b'11", 19339 bVar"b'10", 19340 bVar"b'9", 19341 bVar"b'8", 19342 bVar"b'7", 19343 bVar"b'6", 19344 bVar"b'5", 19345 bVar"b'4", 19346 bVar"b'3", 19347 bVar"b'2", 19348 bVar"b'1", 19349 bVar"b'0"]))), 19350 ITE(EQ(Var("B", 19351 F1), 19352 LW(1, 19353 1)), 19354 Call 19355 ("Store", 19356 CTy"instruction", 19357 Call 19358 ("StoreByte", 19359 CTy"Store", 19360 TP[bVar"add", 19361 bVar"index", 19362 bVar"wback", 19363 Var("Rt", 19364 F4), 19365 Var("Rn", 19366 F4), 19367 Var("m", 19368 CTy"offset1")])), 19369 Call 19370 ("Store", 19371 CTy"instruction", 19372 Call 19373 ("StoreWord", 19374 CTy"Store", 19375 TP[bVar"add", 19376 bVar"index", 19377 bVar"wback", 19378 Var("Rt", 19379 F4), 19380 Var("Rn", 19381 F4), 19382 Var("m", 19383 CTy"offset1")])))))), 19384 ITE(Bop(Or, 19385 Bop(And, 19386 EQ(Var("B", 19387 F1), 19388 LW(1, 19389 1)), 19390 EQ(Var("Rt", 19391 F4), 19392 LW(15, 19393 4))), 19394 Bop(And, 19395 bVar"wback", 19396 Bop(Or, 19397 EQ(Var("Rn", 19398 F4), 19399 LW(15, 19400 4)), 19401 EQ(Var("Rn", 19402 F4), 19403 Var("Rt", 19404 F4))))), 19405 Apply 19406 (Call 19407 ("DECODE_UNPREDICTABLE", 19408 ATy(qTy, 19409 qTy), 19410 TP[Var("mc", 19411 CTy"MachineCode"), 19412 LS 19413 "Store (immediate)"]), 19414 qVar"s"), 19415 qVar"s")]), 19416 TP[Apply 19417 (Call 19418 ("Skip", 19419 ATy(qTy, 19420 CTy"instruction"), 19421 LU), 19422 qVar"s"), 19423 qVar"s"]))))))), 19424 (Bop(And,Mop(Not,bVar"b'27"), 19425 Bop(And,Mop(Not,bVar"b'25"), 19426 Bop(And,Mop(Not,bVar"b'24"), 19427 Bop(And,bVar"b'21", 19428 bVar"b'20")))), 19429 Let(Var("Rt",F4), 19430 Mop(Cast F4, 19431 LL[bVar"b'15",bVar"b'14", 19432 bVar"b'13",bVar"b'12"]), 19433 Let(Var("Rn",F4), 19434 Mop(Cast F4, 19435 LL[bVar"b'19",bVar"b'18", 19436 bVar"b'17",bVar"b'16"]), 19437 Let(TP[bVar"v",qVar"s"], 19438 Apply 19439 (Call 19440 ("Do", 19441 ATy(qTy,PTy(bTy,qTy)), 19442 TP[Var("cond",F4),LT]), 19443 qVar"state"), 19444 ITE(bVar"v", 19445 TP[Let(bVar"add", 19446 EQ(Mop(Cast F1, 19447 LL[bVar"b'23"]), 19448 LW(1,1)), 19449 Let(Var("m", 19450 CTy"offset1"), 19451 Call 19452 ("immediate_form1", 19453 CTy"offset1", 19454 Mop(Cast 19455 F32, 19456 Mop(Cast 19457 (FTy 12), 19458 LL[bVar"b'11", 19459 bVar"b'10", 19460 bVar"b'9", 19461 bVar"b'8", 19462 bVar"b'7", 19463 bVar"b'6", 19464 bVar"b'5", 19465 bVar"b'4", 19466 bVar"b'3", 19467 bVar"b'2", 19468 bVar"b'1", 19469 bVar"b'0"]))), 19470 ITE(EQ(Mop(Cast 19471 F1, 19472 LL[bVar"b'22"]), 19473 LW(1,1)), 19474 Call 19475 ("Load", 19476 CTy"instruction", 19477 Call 19478 ("LoadByteUnprivileged", 19479 CTy"Load", 19480 TP[bVar"add", 19481 LT, 19482 Var("Rt", 19483 F4), 19484 Var("Rn", 19485 F4), 19486 Var("m", 19487 CTy"offset1")])), 19488 Call 19489 ("Load", 19490 CTy"instruction", 19491 Call 19492 ("LoadUnprivileged", 19493 CTy"Load", 19494 TP[bVar"add", 19495 LT, 19496 Var("Rt", 19497 F4), 19498 Var("Rn", 19499 F4), 19500 Var("m", 19501 CTy"offset1")]))))), 19502 ITE(Bop(Or, 19503 EQ(Var("Rt", 19504 F4), 19505 LW(15,4)), 19506 Bop(Or, 19507 EQ(Var("Rn", 19508 F4), 19509 LW(15, 19510 4)), 19511 EQ(Var("Rn", 19512 F4), 19513 Var("Rt", 19514 F4)))), 19515 Apply 19516 (Call 19517 ("DECODE_UNPREDICTABLE", 19518 ATy(qTy,qTy), 19519 TP[Var("mc", 19520 CTy"MachineCode"), 19521 LS 19522 "LoadUnprivileged (immediate)"]), 19523 qVar"s"), 19524 qVar"s")], 19525 TP[Apply 19526 (Call 19527 ("Skip", 19528 ATy(qTy, 19529 CTy"instruction"), 19530 LU),qVar"s"), 19531 qVar"s"]))))), 19532 (Bop(And,Mop(Not,bVar"b'27"), 19533 Bop(And,Mop(Not,bVar"b'25"), 19534 Bop(And,bVar"b'20", 19535 Bop(And,bVar"b'19", 19536 Bop(And,bVar"b'18", 19537 Bop(And,bVar"b'17", 19538 bVar"b'16")))))), 19539 Let(Var("Rt",F4), 19540 Mop(Cast F4, 19541 LL[bVar"b'15",bVar"b'14", 19542 bVar"b'13",bVar"b'12"]), 19543 Let(Var("B",F1), 19544 Mop(Cast F1,LL[bVar"b'22"]), 19545 Let(TP[bVar"v",qVar"s"], 19546 Apply 19547 (Call 19548 ("Do", 19549 ATy(qTy,PTy(bTy,qTy)), 19550 TP[Var("cond",F4),LT]), 19551 qVar"state"), 19552 ITE(bVar"v", 19553 TP[Let(bVar"add", 19554 EQ(Mop(Cast F1, 19555 LL[bVar"b'23"]), 19556 LW(1,1)), 19557 Let(Var("imm32", 19558 F32), 19559 Mop(Cast F32, 19560 Mop(Cast 19561 (FTy 12), 19562 LL[bVar"b'11", 19563 bVar"b'10", 19564 bVar"b'9", 19565 bVar"b'8", 19566 bVar"b'7", 19567 bVar"b'6", 19568 bVar"b'5", 19569 bVar"b'4", 19570 bVar"b'3", 19571 bVar"b'2", 19572 bVar"b'1", 19573 bVar"b'0"])), 19574 ITE(EQ(Var("B", 19575 F1), 19576 LW(1,1)), 19577 Call 19578 ("Load", 19579 CTy"instruction", 19580 Call 19581 ("LoadByteLiteral", 19582 CTy"Load", 19583 TP[LT, 19584 bVar"add", 19585 Var("Rt", 19586 F4), 19587 Var("imm32", 19588 F32)])), 19589 Call 19590 ("Load", 19591 CTy"instruction", 19592 Call 19593 ("LoadLiteral", 19594 CTy"Load", 19595 TP[bVar"add", 19596 Var("Rt", 19597 F4), 19598 Var("imm32", 19599 F32)]))))), 19600 ITE(Bop(Or, 19601 Bop(And, 19602 EQ(Var("B", 19603 F1), 19604 LW(1,1)), 19605 EQ(Var("Rt", 19606 F4), 19607 LW(15, 19608 4))), 19609 Mop(Not, 19610 Bop(And, 19611 EQ(Mop(Cast 19612 F1, 19613 LL[bVar"b'24"]), 19614 LW(1, 19615 1)), 19616 EQ(Mop(Cast 19617 F1, 19618 LL[bVar"b'21"]), 19619 LW(0, 19620 1))))), 19621 Apply 19622 (Call 19623 ("DECODE_UNPREDICTABLE", 19624 ATy(qTy,qTy), 19625 TP[Var("mc", 19626 CTy"MachineCode"), 19627 LS 19628 "LoadByte (literal)"]), 19629 qVar"s"), 19630 qVar"s")], 19631 TP[Apply 19632 (Call 19633 ("Skip", 19634 ATy(qTy, 19635 CTy"instruction"), 19636 LU),qVar"s"), 19637 qVar"s"]))))), 19638 (Bop(And,Mop(Not,bVar"b'27"), 19639 Bop(And,Mop(Not,bVar"b'25"), 19640 bVar"b'20")), 19641 Let(Var("Rt",F4), 19642 Mop(Cast F4, 19643 LL[bVar"b'15",bVar"b'14", 19644 bVar"b'13",bVar"b'12"]), 19645 Let(Var("Rn",F4), 19646 Mop(Cast F4, 19647 LL[bVar"b'19",bVar"b'18", 19648 bVar"b'17",bVar"b'16"]), 19649 Let(Var("B",F1), 19650 Mop(Cast F1,LL[bVar"b'22"]), 19651 Let(Var("P",F1), 19652 Mop(Cast F1, 19653 LL[bVar"b'24"]), 19654 Let(TP[bVar"v",qVar"s"], 19655 Apply 19656 (Call 19657 ("Do", 19658 ATy(qTy, 19659 PTy(bTy, 19660 qTy)), 19661 TP[Var("cond", 19662 F4),LT]), 19663 qVar"state"), 19664 ITE(bVar"v", 19665 Let(bVar"wback", 19666 Bop(Or, 19667 EQ(Var("P", 19668 F1), 19669 LW(0, 19670 1)), 19671 EQ(Mop(Cast 19672 F1, 19673 LL[bVar"b'21"]), 19674 LW(1, 19675 1))), 19676 TP[Let(bVar"add", 19677 EQ(Mop(Cast 19678 F1, 19679 LL[bVar"b'23"]), 19680 LW(1, 19681 1)), 19682 Let(bVar"index", 19683 EQ(Var("P", 19684 F1), 19685 LW(1, 19686 1)), 19687 Let(Var("m", 19688 CTy"offset1"), 19689 Call 19690 ("immediate_form1", 19691 CTy"offset1", 19692 Mop(Cast 19693 F32, 19694 Mop(Cast 19695 (FTy 12), 19696 LL[bVar"b'11", 19697 bVar"b'10", 19698 bVar"b'9", 19699 bVar"b'8", 19700 bVar"b'7", 19701 bVar"b'6", 19702 bVar"b'5", 19703 bVar"b'4", 19704 bVar"b'3", 19705 bVar"b'2", 19706 bVar"b'1", 19707 bVar"b'0"]))), 19708 ITE(EQ(Var("B", 19709 F1), 19710 LW(1, 19711 1)), 19712 Call 19713 ("Load", 19714 CTy"instruction", 19715 Call 19716 ("LoadByte", 19717 CTy"Load", 19718 TP[LT, 19719 bVar"add", 19720 bVar"index", 19721 bVar"wback", 19722 Var("Rt", 19723 F4), 19724 Var("Rn", 19725 F4), 19726 Var("m", 19727 CTy"offset1")])), 19728 Call 19729 ("Load", 19730 CTy"instruction", 19731 Call 19732 ("LoadWord", 19733 CTy"Load", 19734 TP[bVar"add", 19735 bVar"index", 19736 bVar"wback", 19737 Var("Rt", 19738 F4), 19739 Var("Rn", 19740 F4), 19741 Var("m", 19742 CTy"offset1")])))))), 19743 ITE(Bop(Or, 19744 Bop(And, 19745 EQ(Var("B", 19746 F1), 19747 LW(1, 19748 1)), 19749 EQ(Var("Rt", 19750 F4), 19751 LW(15, 19752 4))), 19753 Bop(And, 19754 bVar"wback", 19755 EQ(Var("Rn", 19756 F4), 19757 Var("Rt", 19758 F4)))), 19759 Apply 19760 (Call 19761 ("DECODE_UNPREDICTABLE", 19762 ATy(qTy, 19763 qTy), 19764 TP[Var("mc", 19765 CTy"MachineCode"), 19766 LS 19767 "LoadWord/Byte (immediate)"]), 19768 qVar"s"), 19769 qVar"s")]), 19770 TP[Apply 19771 (Call 19772 ("Skip", 19773 ATy(qTy, 19774 CTy"instruction"), 19775 LU), 19776 qVar"s"), 19777 qVar"s"]))))))), 19778 (Bop(And,Mop(Not,bVar"b'27"), 19779 Bop(And,bVar"b'25", 19780 Bop(And,Mop(Not,bVar"b'24"), 19781 Bop(And,bVar"b'21", 19782 Bop(And, 19783 Mop(Not,bVar"b'20"), 19784 Mop(Not,bVar"b'4")))))), 19785 Let(Var("Rm",F4), 19786 Mop(Cast F4, 19787 LL[bVar"b'3",bVar"b'2", 19788 bVar"b'1",bVar"b'0"]), 19789 Let(Var("Rt",F4), 19790 Mop(Cast F4, 19791 LL[bVar"b'15",bVar"b'14", 19792 bVar"b'13",bVar"b'12"]), 19793 Let(Var("Rn",F4), 19794 Mop(Cast F4, 19795 LL[bVar"b'19", 19796 bVar"b'18", 19797 bVar"b'17",bVar"b'16"]), 19798 Let(Var("B",F1), 19799 Mop(Cast F1, 19800 LL[bVar"b'22"]), 19801 Let(TP[bVar"v",qVar"s"], 19802 Apply 19803 (Call 19804 ("Do", 19805 ATy(qTy, 19806 PTy(bTy, 19807 qTy)), 19808 TP[Var("cond", 19809 F4),LT]), 19810 qVar"state"), 19811 ITE(bVar"v", 19812 TP[Let(bVar"add", 19813 EQ(Mop(Cast 19814 F1, 19815 LL[bVar"b'23"]), 19816 LW(1,1)), 19817 Let(TP[Var("shift_t", 19818 CTy"SRType"), 19819 nVar"shift_n"], 19820 Call 19821 ("DecodeImmShift", 19822 PTy(CTy"SRType", 19823 nTy), 19824 TP[Mop(Cast 19825 (FTy 2), 19826 LL[bVar"b'6", 19827 bVar"b'5"]), 19828 Mop(Cast 19829 (FTy 5), 19830 LL[bVar"b'11", 19831 bVar"b'10", 19832 bVar"b'9", 19833 bVar"b'8", 19834 bVar"b'7"])]), 19835 Let(Var("m", 19836 CTy"offset1"), 19837 Call 19838 ("register_form1", 19839 CTy"offset1", 19840 TP[Var("Rm", 19841 F4), 19842 Var("shift_t", 19843 CTy"SRType"), 19844 nVar"shift_n"]), 19845 ITE(EQ(Var("B", 19846 F1), 19847 LW(1, 19848 1)), 19849 Call 19850 ("Store", 19851 CTy"instruction", 19852 Call 19853 ("StoreByteUnprivileged", 19854 CTy"Store", 19855 TP[bVar"add", 19856 LT, 19857 Var("Rt", 19858 F4), 19859 Var("Rn", 19860 F4), 19861 Var("m", 19862 CTy"offset1")])), 19863 Call 19864 ("Store", 19865 CTy"instruction", 19866 Call 19867 ("StoreUnprivileged", 19868 CTy"Store", 19869 TP[bVar"add", 19870 LT, 19871 Var("Rt", 19872 F4), 19873 Var("Rn", 19874 F4), 19875 Var("m", 19876 CTy"offset1")])))))), 19877 ITE(Bop(Or, 19878 Bop(And, 19879 EQ(Var("B", 19880 F1), 19881 LW(1, 19882 1)), 19883 EQ(Var("Rt", 19884 F4), 19885 LW(15, 19886 4))), 19887 Bop(Or, 19888 EQ(Var("Rn", 19889 F4), 19890 LW(15, 19891 4)), 19892 Bop(Or, 19893 EQ(Var("Rn", 19894 F4), 19895 Var("Rt", 19896 F4)), 19897 Bop(Or, 19898 EQ(Var("Rm", 19899 F4), 19900 LW(15, 19901 4)), 19902 Bop(And, 19903 Bop(Lt, 19904 Apply 19905 (Call 19906 ("ArchVersion", 19907 ATy(qTy, 19908 nTy), 19909 LU), 19910 qVar"s"), 19911 LN 19912 6), 19913 EQ(Var("Rm", 19914 F4), 19915 Var("Rn", 19916 F4))))))), 19917 Apply 19918 (Call 19919 ("DECODE_UNPREDICTABLE", 19920 ATy(qTy, 19921 qTy), 19922 TP[Var("mc", 19923 CTy"MachineCode"), 19924 LS 19925 "StoreUnprivileged (regiser)"]), 19926 qVar"s"), 19927 qVar"s")], 19928 TP[Apply 19929 (Call 19930 ("Skip", 19931 ATy(qTy, 19932 CTy"instruction"), 19933 LU), 19934 qVar"s"), 19935 qVar"s"]))))))), 19936 (Bop(And,Mop(Not,bVar"b'27"), 19937 Bop(And,bVar"b'25", 19938 Bop(And,Mop(Not,bVar"b'20"), 19939 Mop(Not,bVar"b'4")))), 19940 Let(Var("Rm",F4), 19941 Mop(Cast F4, 19942 LL[bVar"b'3",bVar"b'2", 19943 bVar"b'1",bVar"b'0"]), 19944 Let(Var("Rt",F4), 19945 Mop(Cast F4, 19946 LL[bVar"b'15",bVar"b'14", 19947 bVar"b'13",bVar"b'12"]), 19948 Let(Var("Rn",F4), 19949 Mop(Cast F4, 19950 LL[bVar"b'19", 19951 bVar"b'18", 19952 bVar"b'17",bVar"b'16"]), 19953 Let(Var("B",F1), 19954 Mop(Cast F1, 19955 LL[bVar"b'22"]), 19956 Let(Var("P",F1), 19957 Mop(Cast F1, 19958 LL[bVar"b'24"]), 19959 Let(TP[bVar"v", 19960 qVar"s"], 19961 Apply 19962 (Call 19963 ("Do", 19964 ATy(qTy, 19965 PTy(bTy, 19966 qTy)), 19967 TP[Var("cond", 19968 F4), 19969 LT]), 19970 qVar"state"), 19971 ITE(bVar"v", 19972 Let(bVar"wback", 19973 Bop(Or, 19974 EQ(Var("P", 19975 F1), 19976 LW(0, 19977 1)), 19978 EQ(Mop(Cast 19979 F1, 19980 LL[bVar"b'21"]), 19981 LW(1, 19982 1))), 19983 TP[Let(bVar"add", 19984 EQ(Mop(Cast 19985 F1, 19986 LL[bVar"b'23"]), 19987 LW(1, 19988 1)), 19989 Let(bVar"index", 19990 EQ(Var("P", 19991 F1), 19992 LW(1, 19993 1)), 19994 Let(TP[Var("shift_t", 19995 CTy"SRType"), 19996 nVar"shift_n"], 19997 Call 19998 ("DecodeImmShift", 19999 PTy(CTy"SRType", 20000 nTy), 20001 TP[Mop(Cast 20002 (FTy 2), 20003 LL[bVar"b'6", 20004 bVar"b'5"]), 20005 Mop(Cast 20006 (FTy 5), 20007 LL[bVar"b'11", 20008 bVar"b'10", 20009 bVar"b'9", 20010 bVar"b'8", 20011 bVar"b'7"])]), 20012 Let(Var("m", 20013 CTy"offset1"), 20014 Call 20015 ("register_form1", 20016 CTy"offset1", 20017 TP[Var("Rm", 20018 F4), 20019 Var("shift_t", 20020 CTy"SRType"), 20021 nVar"shift_n"]), 20022 ITE(EQ(Var("B", 20023 F1), 20024 LW(1, 20025 1)), 20026 Call 20027 ("Store", 20028 CTy"instruction", 20029 Call 20030 ("StoreByte", 20031 CTy"Store", 20032 TP[bVar"add", 20033 bVar"index", 20034 bVar"wback", 20035 Var("Rt", 20036 F4), 20037 Var("Rn", 20038 F4), 20039 Var("m", 20040 CTy"offset1")])), 20041 Call 20042 ("Store", 20043 CTy"instruction", 20044 Call 20045 ("StoreWord", 20046 CTy"Store", 20047 TP[bVar"add", 20048 bVar"index", 20049 bVar"wback", 20050 Var("Rt", 20051 F4), 20052 Var("Rn", 20053 F4), 20054 Var("m", 20055 CTy"offset1")]))))))), 20056 ITE(Bop(Or, 20057 Bop(And, 20058 EQ(Var("B", 20059 F1), 20060 LW(1, 20061 1)), 20062 EQ(Var("Rt", 20063 F4), 20064 LW(15, 20065 4))), 20066 Bop(Or, 20067 EQ(Var("Rm", 20068 F4), 20069 LW(15, 20070 4)), 20071 Bop(Or, 20072 Bop(And, 20073 bVar"wback", 20074 Bop(Or, 20075 EQ(Var("Rn", 20076 F4), 20077 LW(15, 20078 4)), 20079 EQ(Var("Rn", 20080 F4), 20081 Var("Rt", 20082 F4)))), 20083 Bop(And, 20084 Bop(Lt, 20085 Apply 20086 (Call 20087 ("ArchVersion", 20088 ATy(qTy, 20089 nTy), 20090 LU), 20091 qVar"s"), 20092 LN 20093 6), 20094 Bop(And, 20095 bVar"wback", 20096 EQ(Var("Rm", 20097 F4), 20098 Var("Rn", 20099 F4))))))), 20100 Apply 20101 (Call 20102 ("DECODE_UNPREDICTABLE", 20103 ATy(qTy, 20104 qTy), 20105 TP[Var("mc", 20106 CTy"MachineCode"), 20107 LS 20108 "Store (regiser)"]), 20109 qVar"s"), 20110 qVar"s")]), 20111 TP[Apply 20112 (Call 20113 ("Skip", 20114 ATy(qTy, 20115 CTy"instruction"), 20116 LU), 20117 qVar"s"), 20118 qVar"s"])))))))), 20119 (Bop(And,Mop(Not,bVar"b'27"), 20120 Bop(And,bVar"b'25", 20121 Bop(And,Mop(Not,bVar"b'24"), 20122 Bop(And,bVar"b'21", 20123 Bop(And,bVar"b'20", 20124 Mop(Not,bVar"b'4")))))), 20125 Let(Var("Rm",F4), 20126 Mop(Cast F4, 20127 LL[bVar"b'3",bVar"b'2", 20128 bVar"b'1",bVar"b'0"]), 20129 Let(Var("Rt",F4), 20130 Mop(Cast F4, 20131 LL[bVar"b'15",bVar"b'14", 20132 bVar"b'13",bVar"b'12"]), 20133 Let(Var("Rn",F4), 20134 Mop(Cast F4, 20135 LL[bVar"b'19", 20136 bVar"b'18", 20137 bVar"b'17",bVar"b'16"]), 20138 Let(TP[bVar"v",qVar"s"], 20139 Apply 20140 (Call 20141 ("Do", 20142 ATy(qTy, 20143 PTy(bTy,qTy)), 20144 TP[Var("cond",F4), 20145 LT]), 20146 qVar"state"), 20147 ITE(bVar"v", 20148 TP[Let(bVar"add", 20149 EQ(Mop(Cast 20150 F1, 20151 LL[bVar"b'23"]), 20152 LW(1,1)), 20153 Let(TP[Var("shift_t", 20154 CTy"SRType"), 20155 nVar"shift_n"], 20156 Call 20157 ("DecodeImmShift", 20158 PTy(CTy"SRType", 20159 nTy), 20160 TP[Mop(Cast 20161 (FTy 2), 20162 LL[bVar"b'6", 20163 bVar"b'5"]), 20164 Mop(Cast 20165 (FTy 5), 20166 LL[bVar"b'11", 20167 bVar"b'10", 20168 bVar"b'9", 20169 bVar"b'8", 20170 bVar"b'7"])]), 20171 Let(Var("m", 20172 CTy"offset1"), 20173 Call 20174 ("register_form1", 20175 CTy"offset1", 20176 TP[Var("Rm", 20177 F4), 20178 Var("shift_t", 20179 CTy"SRType"), 20180 nVar"shift_n"]), 20181 ITE(EQ(Mop(Cast 20182 F1, 20183 LL[bVar"b'22"]), 20184 LW(1, 20185 1)), 20186 Call 20187 ("Load", 20188 CTy"instruction", 20189 Call 20190 ("LoadByteUnprivileged", 20191 CTy"Load", 20192 TP[bVar"add", 20193 LT, 20194 Var("Rt", 20195 F4), 20196 Var("Rn", 20197 F4), 20198 Var("m", 20199 CTy"offset1")])), 20200 Call 20201 ("Load", 20202 CTy"instruction", 20203 Call 20204 ("LoadUnprivileged", 20205 CTy"Load", 20206 TP[bVar"add", 20207 LT, 20208 Var("Rt", 20209 F4), 20210 Var("Rn", 20211 F4), 20212 Var("m", 20213 CTy"offset1")])))))), 20214 ITE(Bop(Or, 20215 EQ(Var("Rt", 20216 F4), 20217 LW(15, 20218 4)), 20219 Bop(Or, 20220 EQ(Var("Rn", 20221 F4), 20222 LW(15, 20223 4)), 20224 Bop(Or, 20225 EQ(Var("Rn", 20226 F4), 20227 Var("Rt", 20228 F4)), 20229 Bop(Or, 20230 EQ(Var("Rm", 20231 F4), 20232 LW(15, 20233 4)), 20234 Bop(And, 20235 Bop(Lt, 20236 Apply 20237 (Call 20238 ("ArchVersion", 20239 ATy(qTy, 20240 nTy), 20241 LU), 20242 qVar"s"), 20243 LN 20244 6), 20245 EQ(Var("Rm", 20246 F4), 20247 Var("Rn", 20248 F4))))))), 20249 Apply 20250 (Call 20251 ("DECODE_UNPREDICTABLE", 20252 ATy(qTy, 20253 qTy), 20254 TP[Var("mc", 20255 CTy"MachineCode"), 20256 LS 20257 "LoadUnprivileged (regiser)"]), 20258 qVar"s"), 20259 qVar"s")], 20260 TP[Apply 20261 (Call 20262 ("Skip", 20263 ATy(qTy, 20264 CTy"instruction"), 20265 LU),qVar"s"), 20266 qVar"s"])))))), 20267 (Bop(And,Mop(Not,bVar"b'27"), 20268 Bop(And,bVar"b'25", 20269 Bop(And,bVar"b'20", 20270 Mop(Not,bVar"b'4")))), 20271 Let(Var("Rm",F4), 20272 Mop(Cast F4, 20273 LL[bVar"b'3",bVar"b'2", 20274 bVar"b'1",bVar"b'0"]), 20275 Let(Var("Rt",F4), 20276 Mop(Cast F4, 20277 LL[bVar"b'15",bVar"b'14", 20278 bVar"b'13",bVar"b'12"]), 20279 Let(Var("Rn",F4), 20280 Mop(Cast F4, 20281 LL[bVar"b'19", 20282 bVar"b'18", 20283 bVar"b'17",bVar"b'16"]), 20284 Let(Var("B",F1), 20285 Mop(Cast F1, 20286 LL[bVar"b'22"]), 20287 Let(Var("P",F1), 20288 Mop(Cast F1, 20289 LL[bVar"b'24"]), 20290 Let(TP[bVar"v", 20291 qVar"s"], 20292 Apply 20293 (Call 20294 ("Do", 20295 ATy(qTy, 20296 PTy(bTy, 20297 qTy)), 20298 TP[Var("cond", 20299 F4), 20300 LT]), 20301 qVar"state"), 20302 ITE(bVar"v", 20303 Let(bVar"wback", 20304 Bop(Or, 20305 EQ(Var("P", 20306 F1), 20307 LW(0, 20308 1)), 20309 EQ(Mop(Cast 20310 F1, 20311 LL[bVar"b'21"]), 20312 LW(1, 20313 1))), 20314 TP[Let(bVar"add", 20315 EQ(Mop(Cast 20316 F1, 20317 LL[bVar"b'23"]), 20318 LW(1, 20319 1)), 20320 Let(bVar"index", 20321 EQ(Var("P", 20322 F1), 20323 LW(1, 20324 1)), 20325 Let(TP[Var("shift_t", 20326 CTy"SRType"), 20327 nVar"shift_n"], 20328 Call 20329 ("DecodeImmShift", 20330 PTy(CTy"SRType", 20331 nTy), 20332 TP[Mop(Cast 20333 (FTy 2), 20334 LL[bVar"b'6", 20335 bVar"b'5"]), 20336 Mop(Cast 20337 (FTy 5), 20338 LL[bVar"b'11", 20339 bVar"b'10", 20340 bVar"b'9", 20341 bVar"b'8", 20342 bVar"b'7"])]), 20343 Let(Var("m", 20344 CTy"offset1"), 20345 Call 20346 ("register_form1", 20347 CTy"offset1", 20348 TP[Var("Rm", 20349 F4), 20350 Var("shift_t", 20351 CTy"SRType"), 20352 nVar"shift_n"]), 20353 ITE(EQ(Var("B", 20354 F1), 20355 LW(1, 20356 1)), 20357 Call 20358 ("Load", 20359 CTy"instruction", 20360 Call 20361 ("LoadByte", 20362 CTy"Load", 20363 TP[LT, 20364 bVar"add", 20365 bVar"index", 20366 bVar"wback", 20367 Var("Rt", 20368 F4), 20369 Var("Rn", 20370 F4), 20371 Var("m", 20372 CTy"offset1")])), 20373 Call 20374 ("Load", 20375 CTy"instruction", 20376 Call 20377 ("LoadWord", 20378 CTy"Load", 20379 TP[bVar"add", 20380 bVar"index", 20381 bVar"wback", 20382 Var("Rt", 20383 F4), 20384 Var("Rn", 20385 F4), 20386 Var("m", 20387 CTy"offset1")]))))))), 20388 ITE(Bop(Or, 20389 Bop(And, 20390 EQ(Var("B", 20391 F1), 20392 LW(1, 20393 1)), 20394 EQ(Var("Rt", 20395 F4), 20396 LW(15, 20397 4))), 20398 Bop(Or, 20399 EQ(Var("Rm", 20400 F4), 20401 LW(15, 20402 4)), 20403 Bop(Or, 20404 Bop(And, 20405 bVar"wback", 20406 Bop(Or, 20407 EQ(Var("Rn", 20408 F4), 20409 LW(15, 20410 4)), 20411 EQ(Var("Rn", 20412 F4), 20413 Var("Rt", 20414 F4)))), 20415 Bop(And, 20416 Bop(Lt, 20417 Apply 20418 (Call 20419 ("ArchVersion", 20420 ATy(qTy, 20421 nTy), 20422 LU), 20423 qVar"s"), 20424 LN 20425 6), 20426 Bop(And, 20427 bVar"wback", 20428 EQ(Var("Rm", 20429 F4), 20430 Var("Rn", 20431 F4))))))), 20432 Apply 20433 (Call 20434 ("DECODE_UNPREDICTABLE", 20435 ATy(qTy, 20436 qTy), 20437 TP[Var("mc", 20438 CTy"MachineCode"), 20439 LS 20440 "LoadWord/Byte (regiser)"]), 20441 qVar"s"), 20442 qVar"s")]), 20443 TP[Apply 20444 (Call 20445 ("Skip", 20446 ATy(qTy, 20447 CTy"instruction"), 20448 LU), 20449 qVar"s"), 20450 qVar"s"])))))))), 20451 (Bop(And,Mop(Not,bVar"b'27"), 20452 Bop(And,bVar"b'25", 20453 Bop(And,Mop(Not,bVar"b'24"), 20454 Bop(And,Mop(Not,bVar"b'23"), 20455 bVar"b'4")))), 20456 Let(Var("Rm",F4), 20457 Mop(Cast F4, 20458 LL[bVar"b'3",bVar"b'2", 20459 bVar"b'1",bVar"b'0"]), 20460 Let(Var("Rd",F4), 20461 Mop(Cast F4, 20462 LL[bVar"b'15",bVar"b'14", 20463 bVar"b'13",bVar"b'12"]), 20464 Let(Var("Rn",F4), 20465 Mop(Cast F4, 20466 LL[bVar"b'19", 20467 bVar"b'18", 20468 bVar"b'17",bVar"b'16"]), 20469 Let(TP[bVar"v",qVar"s"], 20470 Apply 20471 (Call 20472 ("Do", 20473 ATy(qTy, 20474 PTy(bTy,qTy)), 20475 TP[Var("cond",F4), 20476 Bop(Ge, 20477 Apply 20478 (Call 20479 ("ArchVersion", 20480 ATy(qTy, 20481 nTy), 20482 LU), 20483 qVar"state"), 20484 LN 6)]), 20485 qVar"state"), 20486 ITE(bVar"v", 20487 TP[Call 20488 ("DecodeParallelAdditionSubtraction", 20489 CTy"instruction", 20490 TP[Mop(Cast 20491 (FTy 2), 20492 LL[bVar"b'21", 20493 bVar"b'20"]), 20494 Mop(Cast 20495 (FTy 3), 20496 LL[bVar"b'7", 20497 bVar"b'6", 20498 bVar"b'5"]), 20499 Mop(Cast F1, 20500 LL[bVar"b'22"]), 20501 Var("Rd",F4), 20502 Var("Rn",F4), 20503 Var("Rm",F4)]), 20504 ITE(Bop(Or, 20505 EQ(Var("Rd", 20506 F4), 20507 LW(15, 20508 4)), 20509 Bop(Or, 20510 EQ(Var("Rn", 20511 F4), 20512 LW(15, 20513 4)), 20514 Bop(Or, 20515 EQ(Var("Rm", 20516 F4), 20517 LW(15, 20518 4)), 20519 Mop(Not, 20520 EQ(Mop(Cast 20521 F4, 20522 LL[bVar"b'11", 20523 bVar"b'10", 20524 bVar"b'9", 20525 bVar"b'8"]), 20526 LW(15, 20527 4)))))), 20528 Apply 20529 (Call 20530 ("DECODE_UNPREDICTABLE", 20531 ATy(qTy, 20532 qTy), 20533 TP[Var("mc", 20534 CTy"MachineCode"), 20535 LS 20536 "Parallel addition and subtraction"]), 20537 qVar"s"), 20538 qVar"s")], 20539 TP[Apply 20540 (Call 20541 ("Skip", 20542 ATy(qTy, 20543 CTy"instruction"), 20544 LU),qVar"s"), 20545 qVar"s"])))))), 20546 (Bop(And,Mop(Not,bVar"b'27"), 20547 Bop(And,bVar"b'25", 20548 Bop(And,Mop(Not,bVar"b'24"), 20549 Bop(And,bVar"b'23", 20550 Bop(And, 20551 Mop(Not,bVar"b'22"), 20552 Bop(And, 20553 Mop(Not, 20554 bVar"b'21"), 20555 Bop(And, 20556 Mop(Not, 20557 bVar"b'20"), 20558 Bop(And, 20559 Mop(Not, 20560 bVar"b'5"), 20561 bVar"b'4")))))))), 20562 Let(Var("Rm",F4), 20563 Mop(Cast F4, 20564 LL[bVar"b'3",bVar"b'2", 20565 bVar"b'1",bVar"b'0"]), 20566 Let(Var("tb",F1), 20567 Mop(Cast F1,LL[bVar"b'6"]), 20568 Let(Var("Rd",F4), 20569 Mop(Cast F4, 20570 LL[bVar"b'15", 20571 bVar"b'14", 20572 bVar"b'13",bVar"b'12"]), 20573 Let(Var("Rn",F4), 20574 Mop(Cast F4, 20575 LL[bVar"b'19", 20576 bVar"b'18", 20577 bVar"b'17", 20578 bVar"b'16"]), 20579 Let(TP[bVar"v",qVar"s"], 20580 Apply 20581 (Call 20582 ("Do", 20583 ATy(qTy, 20584 PTy(bTy, 20585 qTy)), 20586 TP[Var("cond", 20587 F4), 20588 Bop(Ge, 20589 Apply 20590 (Call 20591 ("ArchVersion", 20592 ATy(qTy, 20593 nTy), 20594 LU), 20595 qVar"state"), 20596 LN 6)]), 20597 qVar"state"), 20598 ITE(bVar"v", 20599 TP[Let(TP[Var("shift_t", 20600 CTy"SRType"), 20601 nVar"shift_n"], 20602 Call 20603 ("DecodeImmShift", 20604 PTy(CTy"SRType", 20605 nTy), 20606 TP[CC[Var("tb", 20607 F1), 20608 LW(0, 20609 1)], 20610 Mop(Cast 20611 (FTy 5), 20612 LL[bVar"b'11", 20613 bVar"b'10", 20614 bVar"b'9", 20615 bVar"b'8", 20616 bVar"b'7"])]), 20617 Call 20618 ("Media", 20619 CTy"instruction", 20620 Call 20621 ("PackHalfword", 20622 CTy"Media", 20623 TP[Var("shift_t", 20624 CTy"SRType"), 20625 nVar"shift_n", 20626 EQ(Var("tb", 20627 F1), 20628 LW(1, 20629 1)), 20630 Var("Rd", 20631 F4), 20632 Var("Rn", 20633 F4), 20634 Var("Rm", 20635 F4)]))), 20636 ITE(Bop(Or, 20637 EQ(Var("Rd", 20638 F4), 20639 LW(15, 20640 4)), 20641 Bop(Or, 20642 EQ(Var("Rn", 20643 F4), 20644 LW(15, 20645 4)), 20646 EQ(Var("Rm", 20647 F4), 20648 LW(15, 20649 4)))), 20650 Apply 20651 (Call 20652 ("DECODE_UNPREDICTABLE", 20653 ATy(qTy, 20654 qTy), 20655 TP[Var("mc", 20656 CTy"MachineCode"), 20657 LS 20658 "PackHalfword"]), 20659 qVar"s"), 20660 qVar"s")], 20661 TP[Apply 20662 (Call 20663 ("Skip", 20664 ATy(qTy, 20665 CTy"instruction"), 20666 LU), 20667 qVar"s"), 20668 qVar"s"]))))))), 20669 (Bop(And,Mop(Not,bVar"b'27"), 20670 Bop(And,bVar"b'25", 20671 Bop(And,Mop(Not,bVar"b'24"), 20672 Bop(And,bVar"b'23", 20673 Bop(And, 20674 Mop(Not,bVar"b'22"), 20675 Bop(And, 20676 Mop(Not, 20677 bVar"b'21"), 20678 Bop(And, 20679 Mop(Not, 20680 bVar"b'20"), 20681 Bop(And, 20682 bVar"b'7", 20683 Bop(And, 20684 Mop(Not, 20685 bVar"b'6"), 20686 Bop(And, 20687 bVar"b'5", 20688 bVar"b'4")))))))))), 20689 Let(Var("Rm",F4), 20690 Mop(Cast F4, 20691 LL[bVar"b'3",bVar"b'2", 20692 bVar"b'1",bVar"b'0"]), 20693 Let(Var("Rd",F4), 20694 Mop(Cast F4, 20695 LL[bVar"b'15",bVar"b'14", 20696 bVar"b'13",bVar"b'12"]), 20697 Let(Var("Rn",F4), 20698 Mop(Cast F4, 20699 LL[bVar"b'19", 20700 bVar"b'18", 20701 bVar"b'17",bVar"b'16"]), 20702 Let(TP[bVar"v",qVar"s"], 20703 Apply 20704 (Call 20705 ("Do", 20706 ATy(qTy, 20707 PTy(bTy,qTy)), 20708 TP[Var("cond",F4), 20709 Bop(Ge, 20710 Apply 20711 (Call 20712 ("ArchVersion", 20713 ATy(qTy, 20714 nTy), 20715 LU), 20716 qVar"state"), 20717 LN 6)]), 20718 qVar"state"), 20719 ITE(bVar"v", 20720 TP[Call 20721 ("Media", 20722 CTy"instruction", 20723 Call 20724 ("SelectBytes", 20725 CTy"Media", 20726 TP[Var("Rd", 20727 F4), 20728 Var("Rn", 20729 F4), 20730 Var("Rm", 20731 F4)])), 20732 ITE(Bop(Or, 20733 EQ(Var("Rd", 20734 F4), 20735 LW(15, 20736 4)), 20737 Bop(Or, 20738 EQ(Var("Rn", 20739 F4), 20740 LW(15, 20741 4)), 20742 Bop(Or, 20743 EQ(Var("Rm", 20744 F4), 20745 LW(15, 20746 4)), 20747 Mop(Not, 20748 EQ(Mop(Cast 20749 F4, 20750 LL[bVar"b'11", 20751 bVar"b'10", 20752 bVar"b'9", 20753 bVar"b'8"]), 20754 LW(15, 20755 4)))))), 20756 Apply 20757 (Call 20758 ("DECODE_UNPREDICTABLE", 20759 ATy(qTy, 20760 qTy), 20761 TP[Var("mc", 20762 CTy"MachineCode"), 20763 LS 20764 "SelectBytes"]), 20765 qVar"s"), 20766 qVar"s")], 20767 TP[Apply 20768 (Call 20769 ("Skip", 20770 ATy(qTy, 20771 CTy"instruction"), 20772 LU),qVar"s"), 20773 qVar"s"])))))), 20774 (Bop(And,Mop(Not,bVar"b'27"), 20775 Bop(And,bVar"b'25", 20776 Bop(And,Mop(Not,bVar"b'24"), 20777 Bop(And,bVar"b'23", 20778 Bop(And,bVar"b'21", 20779 Bop(And, 20780 Mop(Not, 20781 bVar"b'5"), 20782 bVar"b'4")))))), 20783 Let(Var("Rn",F4), 20784 Mop(Cast F4, 20785 LL[bVar"b'3",bVar"b'2", 20786 bVar"b'1",bVar"b'0"]), 20787 Let(Var("Rd",F4), 20788 Mop(Cast F4, 20789 LL[bVar"b'15",bVar"b'14", 20790 bVar"b'13",bVar"b'12"]), 20791 Let(Var("sat_imm",FTy 5), 20792 Mop(Cast(FTy 5), 20793 LL[bVar"b'20", 20794 bVar"b'19", 20795 bVar"b'18", 20796 bVar"b'17",bVar"b'16"]), 20797 Let(TP[bVar"v",qVar"s"], 20798 Apply 20799 (Call 20800 ("Do", 20801 ATy(qTy, 20802 PTy(bTy,qTy)), 20803 TP[Var("cond",F4), 20804 Bop(Ge, 20805 Apply 20806 (Call 20807 ("ArchVersion", 20808 ATy(qTy, 20809 nTy), 20810 LU), 20811 qVar"state"), 20812 LN 6)]), 20813 qVar"state"), 20814 ITE(bVar"v", 20815 TP[Let(bVar"unsigned", 20816 EQ(Mop(Cast 20817 F1, 20818 LL[bVar"b'22"]), 20819 LW(1,1)), 20820 Let(TP[Var("shift_t", 20821 CTy"SRType"), 20822 nVar"shift_n"], 20823 Call 20824 ("DecodeImmShift", 20825 PTy(CTy"SRType", 20826 nTy), 20827 TP[CC[Mop(Cast 20828 F1, 20829 LL[bVar"b'6"]), 20830 LW(0, 20831 1)], 20832 Mop(Cast 20833 (FTy 5), 20834 LL[bVar"b'11", 20835 bVar"b'10", 20836 bVar"b'9", 20837 bVar"b'8", 20838 bVar"b'7"])]), 20839 Call 20840 ("Media", 20841 CTy"instruction", 20842 Call 20843 ("Saturate", 20844 CTy"Media", 20845 TP[Var("shift_t", 20846 CTy"SRType"), 20847 nVar"shift_n", 20848 ITE(bVar"unsigned", 20849 Mop(Cast 20850 nTy, 20851 Var("sat_imm", 20852 FTy 5)), 20853 Bop(Add, 20854 Mop(Cast 20855 nTy, 20856 Var("sat_imm", 20857 FTy 5)), 20858 LN 20859 1)), 20860 bVar"unsigned", 20861 Var("Rd", 20862 F4), 20863 Var("Rn", 20864 F4)])))), 20865 ITE(Bop(Or, 20866 EQ(Var("Rd", 20867 F4), 20868 LW(15, 20869 4)), 20870 EQ(Var("Rn", 20871 F4), 20872 LW(15, 20873 4))), 20874 Apply 20875 (Call 20876 ("DECODE_UNPREDICTABLE", 20877 ATy(qTy, 20878 qTy), 20879 TP[Var("mc", 20880 CTy"MachineCode"), 20881 LS 20882 "Saturate"]), 20883 qVar"s"), 20884 qVar"s")], 20885 TP[Apply 20886 (Call 20887 ("Skip", 20888 ATy(qTy, 20889 CTy"instruction"), 20890 LU),qVar"s"), 20891 qVar"s"])))))), 20892 (Bop(And,Mop(Not,bVar"b'27"), 20893 Bop(And,bVar"b'25", 20894 Bop(And,Mop(Not,bVar"b'24"), 20895 Bop(And,bVar"b'23", 20896 Bop(And,bVar"b'21", 20897 Bop(And, 20898 Mop(Not, 20899 bVar"b'20"), 20900 Bop(And, 20901 Mop(Not, 20902 bVar"b'7"), 20903 Bop(And, 20904 Mop(Not, 20905 bVar"b'6"), 20906 Bop(And, 20907 bVar"b'5", 20908 bVar"b'4"))))))))), 20909 Let(Var("Rn",F4), 20910 Mop(Cast F4, 20911 LL[bVar"b'3",bVar"b'2", 20912 bVar"b'1",bVar"b'0"]), 20913 Let(Var("Rd",F4), 20914 Mop(Cast F4, 20915 LL[bVar"b'15",bVar"b'14", 20916 bVar"b'13",bVar"b'12"]), 20917 Let(Var("sat_imm",F4), 20918 Mop(Cast F4, 20919 LL[bVar"b'19", 20920 bVar"b'18", 20921 bVar"b'17",bVar"b'16"]), 20922 Let(TP[bVar"v",qVar"s"], 20923 Apply 20924 (Call 20925 ("Do", 20926 ATy(qTy, 20927 PTy(bTy,qTy)), 20928 TP[Var("cond",F4), 20929 Bop(Ge, 20930 Apply 20931 (Call 20932 ("ArchVersion", 20933 ATy(qTy, 20934 nTy), 20935 LU), 20936 qVar"state"), 20937 LN 6)]), 20938 qVar"state"), 20939 ITE(bVar"v", 20940 TP[Let(bVar"unsigned", 20941 EQ(Mop(Cast 20942 F1, 20943 LL[bVar"b'22"]), 20944 LW(1,1)), 20945 Call 20946 ("Media", 20947 CTy"instruction", 20948 Call 20949 ("Saturate16", 20950 CTy"Media", 20951 TP[ITE(bVar"unsigned", 20952 Mop(Cast 20953 nTy, 20954 Var("sat_imm", 20955 F4)), 20956 Bop(Add, 20957 Mop(Cast 20958 nTy, 20959 Var("sat_imm", 20960 F4)), 20961 LN 20962 1)), 20963 bVar"unsigned", 20964 Var("Rd", 20965 F4), 20966 Var("Rn", 20967 F4)]))), 20968 ITE(Bop(Or, 20969 EQ(Var("Rd", 20970 F4), 20971 LW(15, 20972 4)), 20973 Bop(Or, 20974 EQ(Var("Rn", 20975 F4), 20976 LW(15, 20977 4)), 20978 Mop(Not, 20979 EQ(Mop(Cast 20980 F4, 20981 LL[bVar"b'11", 20982 bVar"b'10", 20983 bVar"b'9", 20984 bVar"b'8"]), 20985 LW(15, 20986 4))))), 20987 Apply 20988 (Call 20989 ("DECODE_UNPREDICTABLE", 20990 ATy(qTy, 20991 qTy), 20992 TP[Var("mc", 20993 CTy"MachineCode"), 20994 LS 20995 "Saturate16"]), 20996 qVar"s"), 20997 qVar"s")], 20998 TP[Apply 20999 (Call 21000 ("Skip", 21001 ATy(qTy, 21002 CTy"instruction"), 21003 LU),qVar"s"), 21004 qVar"s"])))))), 21005 (Bop(And,Mop(Not,bVar"b'27"), 21006 Bop(And,bVar"b'25", 21007 Bop(And,Mop(Not,bVar"b'24"), 21008 Bop(And,bVar"b'23", 21009 Bop(And, 21010 Mop(Not,bVar"b'21"), 21011 Bop(And, 21012 Mop(Not, 21013 bVar"b'20"), 21014 Bop(And, 21015 Mop(Not, 21016 bVar"b'7"), 21017 Bop(And, 21018 bVar"b'6", 21019 Bop(And, 21020 bVar"b'5", 21021 bVar"b'4"))))))))), 21022 Let(Var("Rm",F4), 21023 Mop(Cast F4, 21024 LL[bVar"b'3",bVar"b'2", 21025 bVar"b'1",bVar"b'0"]), 21026 Let(Var("Rd",F4), 21027 Mop(Cast F4, 21028 LL[bVar"b'15",bVar"b'14", 21029 bVar"b'13",bVar"b'12"]), 21030 Let(TP[bVar"v",qVar"s"], 21031 Apply 21032 (Call 21033 ("Do", 21034 ATy(qTy,PTy(bTy,qTy)), 21035 TP[Var("cond",F4), 21036 Bop(Ge, 21037 Apply 21038 (Call 21039 ("ArchVersion", 21040 ATy(qTy, 21041 nTy), 21042 LU), 21043 qVar"state"), 21044 LN 6)]), 21045 qVar"state"), 21046 ITE(bVar"v", 21047 TP[Call 21048 ("Media", 21049 CTy"instruction", 21050 Call 21051 ("ExtendByte16", 21052 CTy"Media", 21053 TP[EQ(Mop(Cast 21054 F1, 21055 LL[bVar"b'22"]), 21056 LW(1,1)), 21057 Var("Rd",F4), 21058 Mop(Cast F4, 21059 LL[bVar"b'19", 21060 bVar"b'18", 21061 bVar"b'17", 21062 bVar"b'16"]), 21063 Var("Rm",F4), 21064 Mop(Cast nTy, 21065 CC[Mop(Cast 21066 (FTy 2), 21067 LL[bVar"b'11", 21068 bVar"b'10"]), 21069 LW(0, 21070 3)])])), 21071 ITE(Bop(Or, 21072 EQ(Var("Rd", 21073 F4), 21074 LW(15,4)), 21075 Bop(Or, 21076 EQ(Var("Rm", 21077 F4), 21078 LW(15, 21079 4)), 21080 Mop(Not, 21081 EQ(Mop(Cast 21082 (FTy 2), 21083 LL[bVar"b'9", 21084 bVar"b'8"]), 21085 LW(0, 21086 2))))), 21087 Apply 21088 (Call 21089 ("DECODE_UNPREDICTABLE", 21090 ATy(qTy,qTy), 21091 TP[Var("mc", 21092 CTy"MachineCode"), 21093 LS 21094 "ExtendByte16"]), 21095 qVar"s"), 21096 qVar"s")], 21097 TP[Apply 21098 (Call 21099 ("Skip", 21100 ATy(qTy, 21101 CTy"instruction"), 21102 LU),qVar"s"), 21103 qVar"s"]))))), 21104 (Bop(And,Mop(Not,bVar"b'27"), 21105 Bop(And,bVar"b'25", 21106 Bop(And,Mop(Not,bVar"b'24"), 21107 Bop(And,bVar"b'23", 21108 Bop(And,bVar"b'21", 21109 Bop(And, 21110 Mop(Not, 21111 bVar"b'20"), 21112 Bop(And, 21113 Mop(Not, 21114 bVar"b'7"), 21115 Bop(And, 21116 bVar"b'6", 21117 Bop(And, 21118 bVar"b'5", 21119 bVar"b'4"))))))))), 21120 Let(Var("Rm",F4), 21121 Mop(Cast F4, 21122 LL[bVar"b'3",bVar"b'2", 21123 bVar"b'1",bVar"b'0"]), 21124 Let(Var("Rd",F4), 21125 Mop(Cast F4, 21126 LL[bVar"b'15",bVar"b'14", 21127 bVar"b'13",bVar"b'12"]), 21128 Let(TP[bVar"v",qVar"s"], 21129 Apply 21130 (Call 21131 ("Do", 21132 ATy(qTy,PTy(bTy,qTy)), 21133 TP[Var("cond",F4), 21134 Bop(Ge, 21135 Apply 21136 (Call 21137 ("ArchVersion", 21138 ATy(qTy, 21139 nTy), 21140 LU), 21141 qVar"state"), 21142 LN 6)]), 21143 qVar"state"), 21144 ITE(bVar"v", 21145 TP[Call 21146 ("Media", 21147 CTy"instruction", 21148 Call 21149 ("ExtendByte", 21150 CTy"Media", 21151 TP[EQ(Mop(Cast 21152 F1, 21153 LL[bVar"b'22"]), 21154 LW(1,1)), 21155 Var("Rd",F4), 21156 Mop(Cast F4, 21157 LL[bVar"b'19", 21158 bVar"b'18", 21159 bVar"b'17", 21160 bVar"b'16"]), 21161 Var("Rm",F4), 21162 Mop(Cast nTy, 21163 CC[Mop(Cast 21164 (FTy 2), 21165 LL[bVar"b'11", 21166 bVar"b'10"]), 21167 LW(0, 21168 3)])])), 21169 ITE(Bop(Or, 21170 EQ(Var("Rd", 21171 F4), 21172 LW(15,4)), 21173 Bop(Or, 21174 EQ(Var("Rm", 21175 F4), 21176 LW(15, 21177 4)), 21178 Mop(Not, 21179 EQ(Mop(Cast 21180 (FTy 2), 21181 LL[bVar"b'9", 21182 bVar"b'8"]), 21183 LW(0, 21184 2))))), 21185 Apply 21186 (Call 21187 ("DECODE_UNPREDICTABLE", 21188 ATy(qTy,qTy), 21189 TP[Var("mc", 21190 CTy"MachineCode"), 21191 LS 21192 "ExtendByte"]), 21193 qVar"s"), 21194 qVar"s")], 21195 TP[Apply 21196 (Call 21197 ("Skip", 21198 ATy(qTy, 21199 CTy"instruction"), 21200 LU),qVar"s"), 21201 qVar"s"]))))), 21202 (Bop(And,Mop(Not,bVar"b'27"), 21203 Bop(And,bVar"b'25", 21204 Bop(And,Mop(Not,bVar"b'24"), 21205 Bop(And,bVar"b'23", 21206 Bop(And,bVar"b'21", 21207 Bop(And,bVar"b'20", 21208 Bop(And, 21209 Mop(Not, 21210 bVar"b'7"), 21211 Bop(And, 21212 bVar"b'6", 21213 Bop(And, 21214 bVar"b'5", 21215 bVar"b'4"))))))))), 21216 Let(Var("Rm",F4), 21217 Mop(Cast F4, 21218 LL[bVar"b'3",bVar"b'2", 21219 bVar"b'1",bVar"b'0"]), 21220 Let(Var("Rd",F4), 21221 Mop(Cast F4, 21222 LL[bVar"b'15",bVar"b'14", 21223 bVar"b'13",bVar"b'12"]), 21224 Let(TP[bVar"v",qVar"s"], 21225 Apply 21226 (Call 21227 ("Do", 21228 ATy(qTy,PTy(bTy,qTy)), 21229 TP[Var("cond",F4), 21230 Bop(Ge, 21231 Apply 21232 (Call 21233 ("ArchVersion", 21234 ATy(qTy, 21235 nTy), 21236 LU), 21237 qVar"state"), 21238 LN 6)]), 21239 qVar"state"), 21240 ITE(bVar"v", 21241 TP[Call 21242 ("Media", 21243 CTy"instruction", 21244 Call 21245 ("ExtendHalfword", 21246 CTy"Media", 21247 TP[EQ(Mop(Cast 21248 F1, 21249 LL[bVar"b'22"]), 21250 LW(1,1)), 21251 Var("Rd",F4), 21252 Mop(Cast F4, 21253 LL[bVar"b'19", 21254 bVar"b'18", 21255 bVar"b'17", 21256 bVar"b'16"]), 21257 Var("Rm",F4), 21258 Mop(Cast nTy, 21259 CC[Mop(Cast 21260 (FTy 2), 21261 LL[bVar"b'11", 21262 bVar"b'10"]), 21263 LW(0, 21264 3)])])), 21265 ITE(Bop(Or, 21266 EQ(Var("Rd", 21267 F4), 21268 LW(15,4)), 21269 Bop(Or, 21270 EQ(Var("Rm", 21271 F4), 21272 LW(15, 21273 4)), 21274 Mop(Not, 21275 EQ(Mop(Cast 21276 (FTy 2), 21277 LL[bVar"b'9", 21278 bVar"b'8"]), 21279 LW(0, 21280 2))))), 21281 Apply 21282 (Call 21283 ("DECODE_UNPREDICTABLE", 21284 ATy(qTy,qTy), 21285 TP[Var("mc", 21286 CTy"MachineCode"), 21287 LS 21288 "ExtendHalfword"]), 21289 qVar"s"), 21290 qVar"s")], 21291 TP[Apply 21292 (Call 21293 ("Skip", 21294 ATy(qTy, 21295 CTy"instruction"), 21296 LU),qVar"s"), 21297 qVar"s"]))))), 21298 (Bop(And,Mop(Not,bVar"b'27"), 21299 Bop(And,bVar"b'25", 21300 Bop(And,Mop(Not,bVar"b'24"), 21301 Bop(And,bVar"b'23", 21302 Bop(And, 21303 Mop(Not,bVar"b'22"), 21304 Bop(And,bVar"b'21", 21305 Bop(And, 21306 bVar"b'20", 21307 Bop(And, 21308 Mop(Not, 21309 bVar"b'7"), 21310 Bop(And, 21311 Mop(Not, 21312 bVar"b'6"), 21313 Bop(And, 21314 bVar"b'5", 21315 bVar"b'4")))))))))), 21316 Let(Var("Rm",F4), 21317 Mop(Cast F4, 21318 LL[bVar"b'3",bVar"b'2", 21319 bVar"b'1",bVar"b'0"]), 21320 Let(Var("Rd",F4), 21321 Mop(Cast F4, 21322 LL[bVar"b'15",bVar"b'14", 21323 bVar"b'13",bVar"b'12"]), 21324 Let(TP[bVar"v",qVar"s"], 21325 Apply 21326 (Call 21327 ("Do", 21328 ATy(qTy,PTy(bTy,qTy)), 21329 TP[Var("cond",F4), 21330 Bop(Ge, 21331 Apply 21332 (Call 21333 ("ArchVersion", 21334 ATy(qTy, 21335 nTy), 21336 LU), 21337 qVar"state"), 21338 LN 6)]), 21339 qVar"state"), 21340 ITE(bVar"v", 21341 TP[Call 21342 ("Media", 21343 CTy"instruction", 21344 Call 21345 ("ByteReverse", 21346 CTy"Media", 21347 TP[Var("Rd",F4), 21348 Var("Rm",F4)])), 21349 ITE(Bop(Or, 21350 EQ(Var("Rd", 21351 F4), 21352 LW(15,4)), 21353 Bop(Or, 21354 EQ(Var("Rm", 21355 F4), 21356 LW(15, 21357 4)), 21358 Mop(Not, 21359 Bop(And, 21360 EQ(Mop(Cast 21361 F4, 21362 LL[bVar"b'19", 21363 bVar"b'18", 21364 bVar"b'17", 21365 bVar"b'16"]), 21366 LW(15, 21367 4)), 21368 EQ(Mop(Cast 21369 F4, 21370 LL[bVar"b'11", 21371 bVar"b'10", 21372 bVar"b'9", 21373 bVar"b'8"]), 21374 LW(15, 21375 4)))))), 21376 Apply 21377 (Call 21378 ("DECODE_UNPREDICTABLE", 21379 ATy(qTy,qTy), 21380 TP[Var("mc", 21381 CTy"MachineCode"), 21382 LS 21383 "ByteReverse"]), 21384 qVar"s"), 21385 qVar"s")], 21386 TP[Apply 21387 (Call 21388 ("Skip", 21389 ATy(qTy, 21390 CTy"instruction"), 21391 LU),qVar"s"), 21392 qVar"s"]))))), 21393 (Bop(And,Mop(Not,bVar"b'27"), 21394 Bop(And,bVar"b'25", 21395 Bop(And,Mop(Not,bVar"b'24"), 21396 Bop(And,bVar"b'23", 21397 Bop(And, 21398 Mop(Not,bVar"b'22"), 21399 Bop(And,bVar"b'21", 21400 Bop(And, 21401 bVar"b'20", 21402 Bop(And, 21403 bVar"b'7", 21404 Bop(And, 21405 Mop(Not, 21406 bVar"b'6"), 21407 Bop(And, 21408 bVar"b'5", 21409 bVar"b'4")))))))))), 21410 Let(Var("Rm",F4), 21411 Mop(Cast F4, 21412 LL[bVar"b'3",bVar"b'2", 21413 bVar"b'1",bVar"b'0"]), 21414 Let(Var("Rd",F4), 21415 Mop(Cast F4, 21416 LL[bVar"b'15",bVar"b'14", 21417 bVar"b'13",bVar"b'12"]), 21418 Let(TP[bVar"v",qVar"s"], 21419 Apply 21420 (Call 21421 ("Do", 21422 ATy(qTy,PTy(bTy,qTy)), 21423 TP[Var("cond",F4), 21424 Bop(Ge, 21425 Apply 21426 (Call 21427 ("ArchVersion", 21428 ATy(qTy, 21429 nTy), 21430 LU), 21431 qVar"state"), 21432 LN 6)]), 21433 qVar"state"), 21434 ITE(bVar"v", 21435 TP[Call 21436 ("Media", 21437 CTy"instruction", 21438 Call 21439 ("ByteReversePackedHalfword", 21440 CTy"Media", 21441 TP[Var("Rd",F4), 21442 Var("Rm",F4)])), 21443 ITE(Bop(Or, 21444 EQ(Var("Rd", 21445 F4), 21446 LW(15,4)), 21447 Bop(Or, 21448 EQ(Var("Rm", 21449 F4), 21450 LW(15, 21451 4)), 21452 Mop(Not, 21453 Bop(And, 21454 EQ(Mop(Cast 21455 F4, 21456 LL[bVar"b'19", 21457 bVar"b'18", 21458 bVar"b'17", 21459 bVar"b'16"]), 21460 LW(15, 21461 4)), 21462 EQ(Mop(Cast 21463 F4, 21464 LL[bVar"b'11", 21465 bVar"b'10", 21466 bVar"b'9", 21467 bVar"b'8"]), 21468 LW(15, 21469 4)))))), 21470 Apply 21471 (Call 21472 ("DECODE_UNPREDICTABLE", 21473 ATy(qTy,qTy), 21474 TP[Var("mc", 21475 CTy"MachineCode"), 21476 LS 21477 "ByteReversePackedHalfword"]), 21478 qVar"s"), 21479 qVar"s")], 21480 TP[Apply 21481 (Call 21482 ("Skip", 21483 ATy(qTy, 21484 CTy"instruction"), 21485 LU),qVar"s"), 21486 qVar"s"]))))), 21487 (Bop(And,Mop(Not,bVar"b'27"), 21488 Bop(And,bVar"b'25", 21489 Bop(And,Mop(Not,bVar"b'24"), 21490 Bop(And,bVar"b'23", 21491 Bop(And,bVar"b'22", 21492 Bop(And,bVar"b'21", 21493 Bop(And, 21494 bVar"b'20", 21495 Bop(And, 21496 bVar"b'7", 21497 Bop(And, 21498 Mop(Not, 21499 bVar"b'6"), 21500 Bop(And, 21501 bVar"b'5", 21502 bVar"b'4")))))))))), 21503 Let(Var("Rm",F4), 21504 Mop(Cast F4, 21505 LL[bVar"b'3",bVar"b'2", 21506 bVar"b'1",bVar"b'0"]), 21507 Let(Var("Rd",F4), 21508 Mop(Cast F4, 21509 LL[bVar"b'15",bVar"b'14", 21510 bVar"b'13",bVar"b'12"]), 21511 Let(TP[bVar"v",qVar"s"], 21512 Apply 21513 (Call 21514 ("Do", 21515 ATy(qTy,PTy(bTy,qTy)), 21516 TP[Var("cond",F4), 21517 Bop(Ge, 21518 Apply 21519 (Call 21520 ("ArchVersion", 21521 ATy(qTy, 21522 nTy), 21523 LU), 21524 qVar"state"), 21525 LN 6)]), 21526 qVar"state"), 21527 ITE(bVar"v", 21528 TP[Call 21529 ("Media", 21530 CTy"instruction", 21531 Call 21532 ("ByteReverseSignedHalfword", 21533 CTy"Media", 21534 TP[Var("Rd",F4), 21535 Var("Rm",F4)])), 21536 ITE(Bop(Or, 21537 EQ(Var("Rd", 21538 F4), 21539 LW(15,4)), 21540 Bop(Or, 21541 EQ(Var("Rm", 21542 F4), 21543 LW(15, 21544 4)), 21545 Mop(Not, 21546 Bop(And, 21547 EQ(Mop(Cast 21548 F4, 21549 LL[bVar"b'19", 21550 bVar"b'18", 21551 bVar"b'17", 21552 bVar"b'16"]), 21553 LW(15, 21554 4)), 21555 EQ(Mop(Cast 21556 F4, 21557 LL[bVar"b'11", 21558 bVar"b'10", 21559 bVar"b'9", 21560 bVar"b'8"]), 21561 LW(15, 21562 4)))))), 21563 Apply 21564 (Call 21565 ("DECODE_UNPREDICTABLE", 21566 ATy(qTy,qTy), 21567 TP[Var("mc", 21568 CTy"MachineCode"), 21569 LS 21570 "ByteReverseSignedHalfword"]), 21571 qVar"s"), 21572 qVar"s")], 21573 TP[Apply 21574 (Call 21575 ("Skip", 21576 ATy(qTy, 21577 CTy"instruction"), 21578 LU),qVar"s"), 21579 qVar"s"]))))), 21580 (Bop(And,Mop(Not,bVar"b'27"), 21581 Bop(And,bVar"b'25", 21582 Bop(And,Mop(Not,bVar"b'24"), 21583 Bop(And,bVar"b'23", 21584 Bop(And,bVar"b'22", 21585 Bop(And,bVar"b'21", 21586 Bop(And, 21587 bVar"b'20", 21588 Bop(And, 21589 Mop(Not, 21590 bVar"b'7"), 21591 Bop(And, 21592 Mop(Not, 21593 bVar"b'6"), 21594 Bop(And, 21595 bVar"b'5", 21596 bVar"b'4")))))))))), 21597 Let(Var("Rm",F4), 21598 Mop(Cast F4, 21599 LL[bVar"b'3",bVar"b'2", 21600 bVar"b'1",bVar"b'0"]), 21601 Let(Var("Rd",F4), 21602 Mop(Cast F4, 21603 LL[bVar"b'15",bVar"b'14", 21604 bVar"b'13",bVar"b'12"]), 21605 Let(TP[bVar"v",qVar"s"], 21606 Apply 21607 (Call 21608 ("Do", 21609 ATy(qTy,PTy(bTy,qTy)), 21610 TP[Var("cond",F4), 21611 Bop(Ge, 21612 Apply 21613 (Call 21614 ("ArchVersion", 21615 ATy(qTy, 21616 nTy), 21617 LU), 21618 qVar"state"), 21619 LN 6)]), 21620 qVar"state"), 21621 ITE(bVar"v", 21622 TP[Call 21623 ("Media", 21624 CTy"instruction", 21625 Call 21626 ("ReverseBits", 21627 CTy"Media", 21628 TP[Var("Rd",F4), 21629 Var("Rm",F4)])), 21630 ITE(Bop(Or, 21631 EQ(Var("Rd", 21632 F4), 21633 LW(15,4)), 21634 Bop(Or, 21635 EQ(Var("Rm", 21636 F4), 21637 LW(15, 21638 4)), 21639 Mop(Not, 21640 Bop(And, 21641 EQ(Mop(Cast 21642 F4, 21643 LL[bVar"b'19", 21644 bVar"b'18", 21645 bVar"b'17", 21646 bVar"b'16"]), 21647 LW(15, 21648 4)), 21649 EQ(Mop(Cast 21650 F4, 21651 LL[bVar"b'11", 21652 bVar"b'10", 21653 bVar"b'9", 21654 bVar"b'8"]), 21655 LW(15, 21656 4)))))), 21657 Apply 21658 (Call 21659 ("DECODE_UNPREDICTABLE", 21660 ATy(qTy,qTy), 21661 TP[Var("mc", 21662 CTy"MachineCode"), 21663 LS 21664 "ReverseBits"]), 21665 qVar"s"), 21666 qVar"s")], 21667 TP[Apply 21668 (Call 21669 ("Skip", 21670 ATy(qTy, 21671 CTy"instruction"), 21672 LU),qVar"s"), 21673 qVar"s"]))))), 21674 (Bop(And,Mop(Not,bVar"b'27"), 21675 Bop(And,bVar"b'25", 21676 Bop(And,bVar"b'24", 21677 Bop(And,Mop(Not,bVar"b'23"), 21678 Bop(And, 21679 Mop(Not,bVar"b'22"), 21680 Bop(And, 21681 Mop(Not, 21682 bVar"b'21"), 21683 Bop(And, 21684 Mop(Not, 21685 bVar"b'20"), 21686 Bop(And, 21687 Mop(Not, 21688 bVar"b'7"), 21689 bVar"b'4")))))))), 21690 Let(Var("Rn",F4), 21691 Mop(Cast F4, 21692 LL[bVar"b'3",bVar"b'2", 21693 bVar"b'1",bVar"b'0"]), 21694 Let(Var("Rm",F4), 21695 Mop(Cast F4, 21696 LL[bVar"b'11",bVar"b'10", 21697 bVar"b'9",bVar"b'8"]), 21698 Let(Var("Rd",F4), 21699 Mop(Cast F4, 21700 LL[bVar"b'19", 21701 bVar"b'18", 21702 bVar"b'17",bVar"b'16"]), 21703 Let(TP[bVar"v",qVar"s"], 21704 Apply 21705 (Call 21706 ("Do", 21707 ATy(qTy, 21708 PTy(bTy,qTy)), 21709 TP[Var("cond",F4), 21710 Bop(Ge, 21711 Apply 21712 (Call 21713 ("ArchVersion", 21714 ATy(qTy, 21715 nTy), 21716 LU), 21717 qVar"state"), 21718 LN 6)]), 21719 qVar"state"), 21720 ITE(bVar"v", 21721 TP[Call 21722 ("Multiply", 21723 CTy"instruction", 21724 Call 21725 ("SignedMultiplyDual", 21726 CTy"Multiply", 21727 TP[EQ(Mop(Cast 21728 F1, 21729 LL[bVar"b'6"]), 21730 LW(1, 21731 1)), 21732 EQ(Mop(Cast 21733 F1, 21734 LL[bVar"b'5"]), 21735 LW(1, 21736 1)), 21737 Var("Rd", 21738 F4), 21739 Var("Rn", 21740 F4), 21741 Var("Rm", 21742 F4), 21743 Mop(Cast 21744 F4, 21745 LL[bVar"b'15", 21746 bVar"b'14", 21747 bVar"b'13", 21748 bVar"b'12"])])), 21749 ITE(Bop(Or, 21750 EQ(Var("Rd", 21751 F4), 21752 LW(15, 21753 4)), 21754 Bop(Or, 21755 EQ(Var("Rn", 21756 F4), 21757 LW(15, 21758 4)), 21759 EQ(Var("Rm", 21760 F4), 21761 LW(15, 21762 4)))), 21763 Apply 21764 (Call 21765 ("DECODE_UNPREDICTABLE", 21766 ATy(qTy, 21767 qTy), 21768 TP[Var("mc", 21769 CTy"MachineCode"), 21770 LS 21771 "SignedMultiplyDual"]), 21772 qVar"s"), 21773 qVar"s")], 21774 TP[Apply 21775 (Call 21776 ("Skip", 21777 ATy(qTy, 21778 CTy"instruction"), 21779 LU),qVar"s"), 21780 qVar"s"])))))), 21781 (Bop(And,Mop(Not,bVar"b'27"), 21782 Bop(And,bVar"b'25", 21783 Bop(And,bVar"b'24", 21784 Bop(And,Mop(Not,bVar"b'23"), 21785 Bop(And,bVar"b'22", 21786 Bop(And, 21787 Mop(Not, 21788 bVar"b'21"), 21789 Bop(And, 21790 Mop(Not, 21791 bVar"b'20"), 21792 Bop(And, 21793 Mop(Not, 21794 bVar"b'7"), 21795 bVar"b'4")))))))), 21796 Let(Var("Rn",F4), 21797 Mop(Cast F4, 21798 LL[bVar"b'3",bVar"b'2", 21799 bVar"b'1",bVar"b'0"]), 21800 Let(Var("Rm",F4), 21801 Mop(Cast F4, 21802 LL[bVar"b'11",bVar"b'10", 21803 bVar"b'9",bVar"b'8"]), 21804 Let(Var("RdLo",F4), 21805 Mop(Cast F4, 21806 LL[bVar"b'15", 21807 bVar"b'14", 21808 bVar"b'13",bVar"b'12"]), 21809 Let(Var("RdHi",F4), 21810 Mop(Cast F4, 21811 LL[bVar"b'19", 21812 bVar"b'18", 21813 bVar"b'17", 21814 bVar"b'16"]), 21815 Let(TP[bVar"v",qVar"s"], 21816 Apply 21817 (Call 21818 ("Do", 21819 ATy(qTy, 21820 PTy(bTy, 21821 qTy)), 21822 TP[Var("cond", 21823 F4), 21824 Bop(Ge, 21825 Apply 21826 (Call 21827 ("ArchVersion", 21828 ATy(qTy, 21829 nTy), 21830 LU), 21831 qVar"state"), 21832 LN 6)]), 21833 qVar"state"), 21834 ITE(bVar"v", 21835 TP[Call 21836 ("Multiply", 21837 CTy"instruction", 21838 Call 21839 ("SignedMultiplyLongDual", 21840 CTy"Multiply", 21841 TP[EQ(Mop(Cast 21842 F1, 21843 LL[bVar"b'6"]), 21844 LW(1, 21845 1)), 21846 EQ(Mop(Cast 21847 F1, 21848 LL[bVar"b'5"]), 21849 LW(1, 21850 1)), 21851 Var("RdHi", 21852 F4), 21853 Var("RdLo", 21854 F4), 21855 Var("Rn", 21856 F4), 21857 Var("Rm", 21858 F4)])), 21859 ITE(Bop(Or, 21860 EQ(Var("RdLo", 21861 F4), 21862 LW(15, 21863 4)), 21864 Bop(Or, 21865 EQ(Var("RdHi", 21866 F4), 21867 LW(15, 21868 4)), 21869 Bop(Or, 21870 EQ(Var("Rn", 21871 F4), 21872 LW(15, 21873 4)), 21874 EQ(Var("Rm", 21875 F4), 21876 LW(15, 21877 4))))), 21878 Apply 21879 (Call 21880 ("DECODE_UNPREDICTABLE", 21881 ATy(qTy, 21882 qTy), 21883 TP[Var("mc", 21884 CTy"MachineCode"), 21885 LS 21886 "SignedMultiplyLongDual"]), 21887 qVar"s"), 21888 qVar"s")], 21889 TP[Apply 21890 (Call 21891 ("Skip", 21892 ATy(qTy, 21893 CTy"instruction"), 21894 LU), 21895 qVar"s"), 21896 qVar"s"]))))))), 21897 (Bop(And,Mop(Not,bVar"b'27"), 21898 Bop(And,bVar"b'25", 21899 Bop(And,bVar"b'24", 21900 Bop(And,Mop(Not,bVar"b'23"), 21901 Bop(And,bVar"b'22", 21902 Bop(And, 21903 Mop(Not, 21904 bVar"b'21"), 21905 Bop(And, 21906 bVar"b'20", 21907 Bop(And, 21908 Mop(Not, 21909 bVar"b'7"), 21910 Bop(And, 21911 Mop(Not, 21912 bVar"b'6"), 21913 bVar"b'4"))))))))), 21914 Let(Var("Rn",F4), 21915 Mop(Cast F4, 21916 LL[bVar"b'3",bVar"b'2", 21917 bVar"b'1",bVar"b'0"]), 21918 Let(Var("Rm",F4), 21919 Mop(Cast F4, 21920 LL[bVar"b'11",bVar"b'10", 21921 bVar"b'9",bVar"b'8"]), 21922 Let(Var("Rd",F4), 21923 Mop(Cast F4, 21924 LL[bVar"b'19", 21925 bVar"b'18", 21926 bVar"b'17",bVar"b'16"]), 21927 Let(TP[bVar"v",qVar"s"], 21928 Apply 21929 (Call 21930 ("Do", 21931 ATy(qTy, 21932 PTy(bTy,qTy)), 21933 TP[Var("cond",F4), 21934 Bop(Ge, 21935 Apply 21936 (Call 21937 ("ArchVersion", 21938 ATy(qTy, 21939 nTy), 21940 LU), 21941 qVar"state"), 21942 LN 6)]), 21943 qVar"state"), 21944 ITE(bVar"v", 21945 TP[Call 21946 ("Multiply", 21947 CTy"instruction", 21948 Call 21949 ("SignedMostSignificantMultiply", 21950 CTy"Multiply", 21951 TP[EQ(Mop(Cast 21952 F1, 21953 LL[bVar"b'5"]), 21954 LW(1, 21955 1)), 21956 Var("Rd", 21957 F4), 21958 Var("Rn", 21959 F4), 21960 Var("Rm", 21961 F4), 21962 Mop(Cast 21963 F4, 21964 LL[bVar"b'15", 21965 bVar"b'14", 21966 bVar"b'13", 21967 bVar"b'12"])])), 21968 ITE(Bop(Or, 21969 EQ(Var("Rd", 21970 F4), 21971 LW(15, 21972 4)), 21973 Bop(Or, 21974 EQ(Var("Rn", 21975 F4), 21976 LW(15, 21977 4)), 21978 EQ(Var("Rm", 21979 F4), 21980 LW(15, 21981 4)))), 21982 Apply 21983 (Call 21984 ("DECODE_UNPREDICTABLE", 21985 ATy(qTy, 21986 qTy), 21987 TP[Var("mc", 21988 CTy"MachineCode"), 21989 LS 21990 "SignedMostSignificantMultiply"]), 21991 qVar"s"), 21992 qVar"s")], 21993 TP[Apply 21994 (Call 21995 ("Skip", 21996 ATy(qTy, 21997 CTy"instruction"), 21998 LU),qVar"s"), 21999 qVar"s"])))))), 22000 (Bop(And,Mop(Not,bVar"b'27"), 22001 Bop(And,bVar"b'25", 22002 Bop(And,bVar"b'24", 22003 Bop(And,Mop(Not,bVar"b'23"), 22004 Bop(And,bVar"b'22", 22005 Bop(And, 22006 Mop(Not, 22007 bVar"b'21"), 22008 Bop(And, 22009 bVar"b'20", 22010 Bop(And, 22011 bVar"b'7", 22012 Bop(And, 22013 bVar"b'6", 22014 bVar"b'4"))))))))), 22015 Let(Var("Rn",F4), 22016 Mop(Cast F4, 22017 LL[bVar"b'3",bVar"b'2", 22018 bVar"b'1",bVar"b'0"]), 22019 Let(Var("Rm",F4), 22020 Mop(Cast F4, 22021 LL[bVar"b'11",bVar"b'10", 22022 bVar"b'9",bVar"b'8"]), 22023 Let(Var("Ra",F4), 22024 Mop(Cast F4, 22025 LL[bVar"b'15", 22026 bVar"b'14", 22027 bVar"b'13",bVar"b'12"]), 22028 Let(Var("Rd",F4), 22029 Mop(Cast F4, 22030 LL[bVar"b'19", 22031 bVar"b'18", 22032 bVar"b'17", 22033 bVar"b'16"]), 22034 Let(TP[bVar"v",qVar"s"], 22035 Apply 22036 (Call 22037 ("Do", 22038 ATy(qTy, 22039 PTy(bTy, 22040 qTy)), 22041 TP[Var("cond", 22042 F4), 22043 Bop(Ge, 22044 Apply 22045 (Call 22046 ("ArchVersion", 22047 ATy(qTy, 22048 nTy), 22049 LU), 22050 qVar"state"), 22051 LN 6)]), 22052 qVar"state"), 22053 ITE(bVar"v", 22054 TP[Call 22055 ("Multiply", 22056 CTy"instruction", 22057 Call 22058 ("SignedMostSignificantMultiplySubtract", 22059 CTy"Multiply", 22060 TP[EQ(Mop(Cast 22061 F1, 22062 LL[bVar"b'5"]), 22063 LW(1, 22064 1)), 22065 Var("Rd", 22066 F4), 22067 Var("Rn", 22068 F4), 22069 Var("Rm", 22070 F4), 22071 Var("Ra", 22072 F4)])), 22073 ITE(Bop(Or, 22074 EQ(Var("Rd", 22075 F4), 22076 LW(15, 22077 4)), 22078 Bop(Or, 22079 EQ(Var("Rn", 22080 F4), 22081 LW(15, 22082 4)), 22083 Bop(Or, 22084 EQ(Var("Rm", 22085 F4), 22086 LW(15, 22087 4)), 22088 EQ(Var("Ra", 22089 F4), 22090 LW(15, 22091 4))))), 22092 Apply 22093 (Call 22094 ("DECODE_UNPREDICTABLE", 22095 ATy(qTy, 22096 qTy), 22097 TP[Var("mc", 22098 CTy"MachineCode"), 22099 LS 22100 "SignedMostSignificantMultiplySubtract"]), 22101 qVar"s"), 22102 qVar"s")], 22103 TP[Apply 22104 (Call 22105 ("Skip", 22106 ATy(qTy, 22107 CTy"instruction"), 22108 LU), 22109 qVar"s"), 22110 qVar"s"]))))))), 22111 (Bop(And,Mop(Not,bVar"b'27"), 22112 Bop(And,bVar"b'25", 22113 Bop(And,bVar"b'24", 22114 Bop(And,bVar"b'23", 22115 Bop(And, 22116 Mop(Not,bVar"b'22"), 22117 Bop(And, 22118 Mop(Not, 22119 bVar"b'21"), 22120 Bop(And, 22121 Mop(Not, 22122 bVar"b'20"), 22123 Bop(And, 22124 Mop(Not, 22125 bVar"b'7"), 22126 Bop(And, 22127 Mop(Not, 22128 bVar"b'6"), 22129 Bop(And, 22130 Mop(Not, 22131 bVar"b'5"), 22132 bVar"b'4")))))))))), 22133 Let(Var("Rn",F4), 22134 Mop(Cast F4, 22135 LL[bVar"b'3",bVar"b'2", 22136 bVar"b'1",bVar"b'0"]), 22137 Let(Var("Rm",F4), 22138 Mop(Cast F4, 22139 LL[bVar"b'11",bVar"b'10", 22140 bVar"b'9",bVar"b'8"]), 22141 Let(Var("Rd",F4), 22142 Mop(Cast F4, 22143 LL[bVar"b'19", 22144 bVar"b'18", 22145 bVar"b'17",bVar"b'16"]), 22146 Let(TP[bVar"v",qVar"s"], 22147 Apply 22148 (Call 22149 ("Do", 22150 ATy(qTy, 22151 PTy(bTy,qTy)), 22152 TP[Var("cond",F4), 22153 Bop(Ge, 22154 Apply 22155 (Call 22156 ("ArchVersion", 22157 ATy(qTy, 22158 nTy), 22159 LU), 22160 qVar"state"), 22161 LN 6)]), 22162 qVar"state"), 22163 ITE(bVar"v", 22164 TP[Call 22165 ("SIMD", 22166 CTy"instruction", 22167 Call 22168 ("UnsignedSumAbsoluteDifferences", 22169 CTy"SIMD", 22170 TP[Var("Rd", 22171 F4), 22172 Var("Rn", 22173 F4), 22174 Var("Rm", 22175 F4), 22176 Mop(Cast 22177 F4, 22178 LL[bVar"b'15", 22179 bVar"b'14", 22180 bVar"b'13", 22181 bVar"b'12"])])), 22182 ITE(Bop(Or, 22183 EQ(Var("Rd", 22184 F4), 22185 LW(15, 22186 4)), 22187 Bop(Or, 22188 EQ(Var("Rn", 22189 F4), 22190 LW(15, 22191 4)), 22192 EQ(Var("Rm", 22193 F4), 22194 LW(15, 22195 4)))), 22196 Apply 22197 (Call 22198 ("DECODE_UNPREDICTABLE", 22199 ATy(qTy, 22200 qTy), 22201 TP[Var("mc", 22202 CTy"MachineCode"), 22203 LS 22204 "UnsignedSumAbsoluteDifferences"]), 22205 qVar"s"), 22206 qVar"s")], 22207 TP[Apply 22208 (Call 22209 ("Skip", 22210 ATy(qTy, 22211 CTy"instruction"), 22212 LU),qVar"s"), 22213 qVar"s"])))))), 22214 (Bop(And,Mop(Not,bVar"b'27"), 22215 Bop(And,bVar"b'25", 22216 Bop(And,bVar"b'24", 22217 Bop(And,bVar"b'23", 22218 Bop(And,bVar"b'21", 22219 Bop(And,bVar"b'6", 22220 Bop(And, 22221 Mop(Not, 22222 bVar"b'5"), 22223 bVar"b'4"))))))), 22224 Let(Var("Rn",F4), 22225 Mop(Cast F4, 22226 LL[bVar"b'3",bVar"b'2", 22227 bVar"b'1",bVar"b'0"]), 22228 Let(Var("Rd",F4), 22229 Mop(Cast F4, 22230 LL[bVar"b'15",bVar"b'14", 22231 bVar"b'13",bVar"b'12"]), 22232 Let(TP[bVar"v",qVar"s"], 22233 Apply 22234 (Call 22235 ("Do", 22236 ATy(qTy,PTy(bTy,qTy)), 22237 TP[Var("cond",F4), 22238 Bop(Ge, 22239 Apply 22240 (Call 22241 ("ArchVersion", 22242 ATy(qTy, 22243 nTy), 22244 LU), 22245 qVar"state"), 22246 LN 6)]), 22247 qVar"state"), 22248 ITE(bVar"v", 22249 Let(nVar"lsbit", 22250 Mop(Cast nTy, 22251 Mop(Cast(FTy 5), 22252 LL[bVar"b'11", 22253 bVar"b'10", 22254 bVar"b'9", 22255 bVar"b'8", 22256 bVar"b'7"])), 22257 Let(nVar"widthminus1", 22258 Mop(Cast nTy, 22259 Mop(Cast 22260 (FTy 5), 22261 LL[bVar"b'20", 22262 bVar"b'19", 22263 bVar"b'18", 22264 bVar"b'17", 22265 bVar"b'16"])), 22266 TP[Call 22267 ("Media", 22268 CTy"instruction", 22269 Call 22270 ("BitFieldExtract", 22271 CTy"Media", 22272 TP[EQ(Mop(Cast 22273 F1, 22274 LL[bVar"b'22"]), 22275 LW(1, 22276 1)), 22277 Var("Rd", 22278 F4), 22279 Var("Rn", 22280 F4), 22281 nVar"lsbit", 22282 nVar"widthminus1"])), 22283 ITE(Bop(Or, 22284 EQ(Var("Rd", 22285 F4), 22286 LW(15, 22287 4)), 22288 Bop(Or, 22289 EQ(Var("Rn", 22290 F4), 22291 LW(15, 22292 4)), 22293 Bop(Lt, 22294 LN 22295 31, 22296 Bop(Add, 22297 nVar"lsbit", 22298 nVar"widthminus1")))), 22299 Apply 22300 (Call 22301 ("DECODE_UNPREDICTABLE", 22302 ATy(qTy, 22303 qTy), 22304 TP[Var("mc", 22305 CTy"MachineCode"), 22306 LS 22307 "BitFieldExtract"]), 22308 qVar"s"), 22309 qVar"s")])), 22310 TP[Apply 22311 (Call 22312 ("Skip", 22313 ATy(qTy, 22314 CTy"instruction"), 22315 LU),qVar"s"), 22316 qVar"s"]))))), 22317 (Bop(And,Mop(Not,bVar"b'27"), 22318 Bop(And,bVar"b'25", 22319 Bop(And,bVar"b'24", 22320 Bop(And,bVar"b'23", 22321 Bop(And,bVar"b'22", 22322 Bop(And, 22323 Mop(Not, 22324 bVar"b'21"), 22325 Bop(And, 22326 Mop(Not, 22327 bVar"b'6"), 22328 Bop(And, 22329 Mop(Not, 22330 bVar"b'5"), 22331 bVar"b'4")))))))), 22332 Let(Var("Rd",F4), 22333 Mop(Cast F4, 22334 LL[bVar"b'15",bVar"b'14", 22335 bVar"b'13",bVar"b'12"]), 22336 Let(TP[bVar"v",qVar"s"], 22337 Apply 22338 (Call 22339 ("Do", 22340 ATy(qTy,PTy(bTy,qTy)), 22341 TP[Var("cond",F4), 22342 Bop(Ge, 22343 Apply 22344 (Call 22345 ("ArchVersion", 22346 ATy(qTy,nTy), 22347 LU), 22348 qVar"state"), 22349 LN 6)]),qVar"state"), 22350 ITE(bVar"v", 22351 Let(nVar"lsbit", 22352 Mop(Cast nTy, 22353 Mop(Cast(FTy 5), 22354 LL[bVar"b'11", 22355 bVar"b'10", 22356 bVar"b'9", 22357 bVar"b'8", 22358 bVar"b'7"])), 22359 Let(nVar"msbit", 22360 Mop(Cast nTy, 22361 Mop(Cast(FTy 5), 22362 LL[bVar"b'20", 22363 bVar"b'19", 22364 bVar"b'18", 22365 bVar"b'17", 22366 bVar"b'16"])), 22367 TP[Call 22368 ("Media", 22369 CTy"instruction", 22370 Call 22371 ("BitFieldClearOrInsert", 22372 CTy"Media", 22373 TP[Var("Rd", 22374 F4), 22375 Mop(Cast 22376 F4, 22377 LL[bVar"b'3", 22378 bVar"b'2", 22379 bVar"b'1", 22380 bVar"b'0"]), 22381 nVar"lsbit", 22382 nVar"msbit"])), 22383 ITE(Bop(Or, 22384 EQ(Var("Rd", 22385 F4), 22386 LW(15, 22387 4)), 22388 Bop(Lt, 22389 nVar"msbit", 22390 nVar"lsbit")), 22391 Apply 22392 (Call 22393 ("DECODE_UNPREDICTABLE", 22394 ATy(qTy, 22395 qTy), 22396 TP[Var("mc", 22397 CTy"MachineCode"), 22398 LS 22399 "BitFieldClearOrInsert"]), 22400 qVar"s"), 22401 qVar"s")])), 22402 TP[Apply 22403 (Call 22404 ("Skip", 22405 ATy(qTy, 22406 CTy"instruction"), 22407 LU),qVar"s"), 22408 qVar"s"])))), 22409 (Bop(And,bVar"b'27", 22410 Bop(And,bVar"b'25",bVar"b'24")), 22411 Let(TP[bVar"v",qVar"s"], 22412 Apply 22413 (Call 22414 ("Do",ATy(qTy,PTy(bTy,qTy)), 22415 TP[Var("cond",F4),LT]), 22416 qVar"state"), 22417 TP[ITE(bVar"v", 22418 Call 22419 ("System",CTy"instruction", 22420 Call 22421 ("SupervisorCall", 22422 CTy"System", 22423 Mop(SE F32, 22424 Mop(Cast(FTy 24), 22425 LL[bVar"b'23", 22426 bVar"b'22", 22427 bVar"b'21", 22428 bVar"b'20", 22429 bVar"b'19", 22430 bVar"b'18", 22431 bVar"b'17", 22432 bVar"b'16", 22433 bVar"b'15", 22434 bVar"b'14", 22435 bVar"b'13", 22436 bVar"b'12", 22437 bVar"b'11", 22438 bVar"b'10", 22439 bVar"b'9", 22440 bVar"b'8", 22441 bVar"b'7", 22442 bVar"b'6", 22443 bVar"b'5", 22444 bVar"b'4", 22445 bVar"b'3", 22446 bVar"b'2", 22447 bVar"b'1", 22448 bVar"b'0"])))), 22449 Apply 22450 (Call 22451 ("Skip", 22452 ATy(qTy, 22453 CTy"instruction"), 22454 LU),qVar"s")),qVar"s"])), 22455 (Bop(And,bVar"b'27", 22456 Bop(And,bVar"b'11", 22457 Bop(And,Mop(Not,bVar"b'10"), 22458 bVar"b'9"))), 22459 Let(TP[bVar"defined",sVar"unpred", 22460 Var("i",CTy"instruction")], 22461 Apply 22462 (Call 22463 ("DecodeVFP", 22464 ATy(qTy, 22465 PTy(bTy, 22466 PTy(sTy, 22467 CTy"instruction"))), 22468 Var("w",F32)),qVar"state"), 22469 Let(TP[bVar"v",qVar"s"], 22470 Apply 22471 (Call 22472 ("Do", 22473 ATy(qTy,PTy(bTy,qTy)), 22474 TP[Var("cond",F4), 22475 bVar"defined"]), 22476 qVar"state"), 22477 ITE(bVar"v", 22478 TP[Var("i",CTy"instruction"), 22479 ITE(Mop(Not, 22480 EQ(sVar"unpred", 22481 LS"")), 22482 Apply 22483 (Call 22484 ("DECODE_UNPREDICTABLE", 22485 ATy(qTy,qTy), 22486 TP[Var("mc", 22487 CTy"MachineCode"), 22488 CC[LS 22489 "DecodeVFP: ", 22490 sVar"unpred"]]), 22491 qVar"s"),qVar"s")], 22492 TP[Apply 22493 (Call 22494 ("Skip", 22495 ATy(qTy, 22496 CTy"instruction"), 22497 LU),qVar"s"), 22498 qVar"s"]))))], 22499 Apply 22500 (Call 22501 ("UndefinedARM", 22502 ATy(qTy,PTy(CTy"instruction",qTy)), 22503 Var("cond",F4)),qVar"state"))), 22504 (bVar"b'27", 22505 ITB([(Bop(And,Mop(Not,bVar"b'25"), 22506 Bop(And,bVar"b'22", 22507 Mop(Not,bVar"b'20"))), 22508 Let(Var("registers",F16), 22509 Mop(Cast F16, 22510 LL[bVar"b'15",bVar"b'14", 22511 bVar"b'13",bVar"b'12", 22512 bVar"b'11",bVar"b'10", 22513 bVar"b'9",bVar"b'8", 22514 bVar"b'7",bVar"b'6", 22515 bVar"b'5",bVar"b'4", 22516 bVar"b'3",bVar"b'2", 22517 bVar"b'1",bVar"b'0"]), 22518 Let(Var("Rn",F4), 22519 Mop(Cast F4, 22520 LL[bVar"b'19",bVar"b'18", 22521 bVar"b'17",bVar"b'16"]), 22522 Let(Var("U",F1), 22523 Mop(Cast F1,LL[bVar"b'23"]), 22524 Let(TP[bVar"v",qVar"s"], 22525 Apply 22526 (Call 22527 ("Do", 22528 ATy(qTy, 22529 PTy(bTy,qTy)), 22530 TP[Var("cond",F4), 22531 LT]), 22532 qVar"state"), 22533 ITE(bVar"v", 22534 TP[Call 22535 ("Store", 22536 CTy"instruction", 22537 Call 22538 ("StoreMultipleUserRegisters", 22539 CTy"Store", 22540 TP[EQ(Var("U", 22541 F1), 22542 LW(1, 22543 1)), 22544 EQ(Mop(Cast 22545 F1, 22546 LL[bVar"b'24"]), 22547 Var("U", 22548 F1)), 22549 Var("Rn", 22550 F4), 22551 Var("registers", 22552 F16)])), 22553 ITE(Bop(Or, 22554 EQ(Var("Rn", 22555 F4), 22556 LW(15, 22557 4)), 22558 Bop(Or, 22559 Bop(Lt, 22560 Call 22561 ("BitCount", 22562 nTy, 22563 Var("registers", 22564 F16)), 22565 LN 22566 1), 22567 Mop(Not, 22568 EQ(Mop(Cast 22569 F1, 22570 LL[bVar"b'21"]), 22571 LW(0, 22572 1))))), 22573 Apply 22574 (Call 22575 ("DECODE_UNPREDICTABLE", 22576 ATy(qTy, 22577 qTy), 22578 TP[Var("mc", 22579 CTy"MachineCode"), 22580 LS 22581 "StoreMultipleUserRegisters"]), 22582 qVar"s"), 22583 qVar"s")], 22584 TP[Apply 22585 (Call 22586 ("Skip", 22587 ATy(qTy, 22588 CTy"instruction"), 22589 LU),qVar"s"), 22590 qVar"s"])))))), 22591 (Bop(And,Mop(Not,bVar"b'25"), 22592 Bop(And,Mop(Not,bVar"b'22"), 22593 Mop(Not,bVar"b'20"))), 22594 Let(Var("registers",F16), 22595 Mop(Cast F16, 22596 LL[bVar"b'15",bVar"b'14", 22597 bVar"b'13",bVar"b'12", 22598 bVar"b'11",bVar"b'10", 22599 bVar"b'9",bVar"b'8", 22600 bVar"b'7",bVar"b'6", 22601 bVar"b'5",bVar"b'4", 22602 bVar"b'3",bVar"b'2", 22603 bVar"b'1",bVar"b'0"]), 22604 Let(Var("Rn",F4), 22605 Mop(Cast F4, 22606 LL[bVar"b'19",bVar"b'18", 22607 bVar"b'17",bVar"b'16"]), 22608 Let(TP[bVar"v",qVar"s"], 22609 Apply 22610 (Call 22611 ("Do", 22612 ATy(qTy,PTy(bTy,qTy)), 22613 TP[Var("cond",F4),LT]), 22614 qVar"state"), 22615 ITE(bVar"v", 22616 TP[Call 22617 ("Store", 22618 CTy"instruction", 22619 Call 22620 ("StoreMultiple", 22621 CTy"Store", 22622 TP[EQ(Mop(Cast 22623 F1, 22624 LL[bVar"b'23"]), 22625 LW(1,1)), 22626 EQ(Mop(Cast 22627 F1, 22628 LL[bVar"b'24"]), 22629 LW(1,1)), 22630 EQ(Mop(Cast 22631 F1, 22632 LL[bVar"b'21"]), 22633 LW(1,1)), 22634 Var("Rn",F4), 22635 Var("registers", 22636 F16)])), 22637 ITE(Bop(Or, 22638 EQ(Var("Rn", 22639 F4), 22640 LW(15,4)), 22641 Bop(Lt, 22642 Call 22643 ("BitCount", 22644 nTy, 22645 Var("registers", 22646 F16)), 22647 LN 1)), 22648 Apply 22649 (Call 22650 ("DECODE_UNPREDICTABLE", 22651 ATy(qTy,qTy), 22652 TP[Var("mc", 22653 CTy"MachineCode"), 22654 LS 22655 "StoreMultiple"]), 22656 qVar"s"), 22657 qVar"s")], 22658 TP[Apply 22659 (Call 22660 ("Skip", 22661 ATy(qTy, 22662 CTy"instruction"), 22663 LU),qVar"s"), 22664 qVar"s"]))))), 22665 (Bop(And,Mop(Not,bVar"b'25"), 22666 Bop(And,bVar"b'22", 22667 Bop(And,bVar"b'20", 22668 Mop(Not,bVar"b'15")))), 22669 Let(Var("registers",FTy 15), 22670 Mop(Cast(FTy 15), 22671 LL[bVar"b'14",bVar"b'13", 22672 bVar"b'12",bVar"b'11", 22673 bVar"b'10",bVar"b'9", 22674 bVar"b'8",bVar"b'7", 22675 bVar"b'6",bVar"b'5", 22676 bVar"b'4",bVar"b'3", 22677 bVar"b'2",bVar"b'1",bVar"b'0"]), 22678 Let(Var("Rn",F4), 22679 Mop(Cast F4, 22680 LL[bVar"b'19",bVar"b'18", 22681 bVar"b'17",bVar"b'16"]), 22682 Let(Var("U",F1), 22683 Mop(Cast F1,LL[bVar"b'23"]), 22684 Let(TP[bVar"v",qVar"s"], 22685 Apply 22686 (Call 22687 ("Do", 22688 ATy(qTy, 22689 PTy(bTy,qTy)), 22690 TP[Var("cond",F4), 22691 LT]), 22692 qVar"state"), 22693 ITE(bVar"v", 22694 TP[Call 22695 ("Load", 22696 CTy"instruction", 22697 Call 22698 ("LoadMultipleUserRegisters", 22699 CTy"Load", 22700 TP[EQ(Var("U", 22701 F1), 22702 LW(1, 22703 1)), 22704 EQ(Mop(Cast 22705 F1, 22706 LL[bVar"b'24"]), 22707 Var("U", 22708 F1)), 22709 Var("Rn", 22710 F4), 22711 Var("registers", 22712 FTy 15)])), 22713 ITE(Bop(Or, 22714 EQ(Var("Rn", 22715 F4), 22716 LW(15, 22717 4)), 22718 Bop(Or, 22719 Bop(Lt, 22720 Call 22721 ("BitCount", 22722 nTy, 22723 Var("registers", 22724 FTy 15)), 22725 LN 22726 1), 22727 Mop(Not, 22728 EQ(Mop(Cast 22729 F1, 22730 LL[bVar"b'21"]), 22731 LW(0, 22732 1))))), 22733 Apply 22734 (Call 22735 ("DECODE_UNPREDICTABLE", 22736 ATy(qTy, 22737 qTy), 22738 TP[Var("mc", 22739 CTy"MachineCode"), 22740 LS 22741 "LoadMultipleUserRegisters"]), 22742 qVar"s"), 22743 qVar"s")], 22744 TP[Apply 22745 (Call 22746 ("Skip", 22747 ATy(qTy, 22748 CTy"instruction"), 22749 LU),qVar"s"), 22750 qVar"s"])))))), 22751 (Bop(And,Mop(Not,bVar"b'25"), 22752 Bop(And,bVar"b'22", 22753 Bop(And,bVar"b'20",bVar"b'15"))), 22754 Let(Var("registers",FTy 15), 22755 Mop(Cast(FTy 15), 22756 LL[bVar"b'14",bVar"b'13", 22757 bVar"b'12",bVar"b'11", 22758 bVar"b'10",bVar"b'9", 22759 bVar"b'8",bVar"b'7", 22760 bVar"b'6",bVar"b'5", 22761 bVar"b'4",bVar"b'3", 22762 bVar"b'2",bVar"b'1",bVar"b'0"]), 22763 Let(Var("Rn",F4), 22764 Mop(Cast F4, 22765 LL[bVar"b'19",bVar"b'18", 22766 bVar"b'17",bVar"b'16"]), 22767 Let(Var("U",F1), 22768 Mop(Cast F1,LL[bVar"b'23"]), 22769 Let(TP[bVar"v",qVar"s"], 22770 Apply 22771 (Call 22772 ("Do", 22773 ATy(qTy, 22774 PTy(bTy,qTy)), 22775 TP[Var("cond",F4), 22776 LT]), 22777 qVar"state"), 22778 ITE(bVar"v", 22779 Let(bVar"wback", 22780 EQ(Mop(Cast F1, 22781 LL[bVar"b'21"]), 22782 LW(1,1)), 22783 TP[Call 22784 ("Load", 22785 CTy"instruction", 22786 Call 22787 ("LoadMultipleExceptionReturn", 22788 CTy"Load", 22789 TP[EQ(Var("U", 22790 F1), 22791 LW(1, 22792 1)), 22793 EQ(Mop(Cast 22794 F1, 22795 LL[bVar"b'24"]), 22796 Var("U", 22797 F1)), 22798 bVar"wback", 22799 Var("Rn", 22800 F4), 22801 Var("registers", 22802 FTy 15)])), 22803 ITE(Bop(Or, 22804 EQ(Var("Rn", 22805 F4), 22806 LW(15, 22807 4)), 22808 Bop(And, 22809 bVar"wback", 22810 Bop(And, 22811 Bop(Bit, 22812 Var("registers", 22813 FTy 15), 22814 Mop(Cast 22815 nTy, 22816 Var("Rn", 22817 F4))), 22818 Bop(Ge, 22819 Apply 22820 (Call 22821 ("ArchVersion", 22822 ATy(qTy, 22823 nTy), 22824 LU), 22825 qVar"s"), 22826 LN 22827 7)))), 22828 Apply 22829 (Call 22830 ("DECODE_UNPREDICTABLE", 22831 ATy(qTy, 22832 qTy), 22833 TP[Var("mc", 22834 CTy"MachineCode"), 22835 LS 22836 "LoadMultipleExceptionReturn"]), 22837 qVar"s"), 22838 qVar"s")]), 22839 TP[Apply 22840 (Call 22841 ("Skip", 22842 ATy(qTy, 22843 CTy"instruction"), 22844 LU),qVar"s"), 22845 qVar"s"])))))), 22846 (Bop(And,Mop(Not,bVar"b'25"), 22847 Bop(And,Mop(Not,bVar"b'22"), 22848 bVar"b'20")), 22849 Let(Var("registers",F16), 22850 Mop(Cast F16, 22851 LL[bVar"b'15",bVar"b'14", 22852 bVar"b'13",bVar"b'12", 22853 bVar"b'11",bVar"b'10", 22854 bVar"b'9",bVar"b'8", 22855 bVar"b'7",bVar"b'6", 22856 bVar"b'5",bVar"b'4", 22857 bVar"b'3",bVar"b'2", 22858 bVar"b'1",bVar"b'0"]), 22859 Let(Var("Rn",F4), 22860 Mop(Cast F4, 22861 LL[bVar"b'19",bVar"b'18", 22862 bVar"b'17",bVar"b'16"]), 22863 Let(TP[bVar"v",qVar"s"], 22864 Apply 22865 (Call 22866 ("Do", 22867 ATy(qTy,PTy(bTy,qTy)), 22868 TP[Var("cond",F4),LT]), 22869 qVar"state"), 22870 ITE(bVar"v", 22871 Let(bVar"wback", 22872 EQ(Mop(Cast F1, 22873 LL[bVar"b'21"]), 22874 LW(1,1)), 22875 TP[Call 22876 ("Load", 22877 CTy"instruction", 22878 Call 22879 ("LoadMultiple", 22880 CTy"Load", 22881 TP[EQ(Mop(Cast 22882 F1, 22883 LL[bVar"b'23"]), 22884 LW(1, 22885 1)), 22886 EQ(Mop(Cast 22887 F1, 22888 LL[bVar"b'24"]), 22889 LW(1, 22890 1)), 22891 bVar"wback", 22892 Var("Rn", 22893 F4), 22894 Var("registers", 22895 F16)])), 22896 ITE(Bop(Or, 22897 EQ(Var("Rn", 22898 F4), 22899 LW(15, 22900 4)), 22901 Bop(Or, 22902 Bop(Lt, 22903 Call 22904 ("BitCount", 22905 nTy, 22906 Var("registers", 22907 F16)), 22908 LN 22909 1), 22910 Bop(And, 22911 bVar"wback", 22912 Bop(And, 22913 Bop(Bit, 22914 Var("registers", 22915 F16), 22916 Mop(Cast 22917 nTy, 22918 Var("Rn", 22919 F4))), 22920 Bop(Ge, 22921 Apply 22922 (Call 22923 ("ArchVersion", 22924 ATy(qTy, 22925 nTy), 22926 LU), 22927 qVar"s"), 22928 LN 22929 7))))), 22930 Apply 22931 (Call 22932 ("DECODE_UNPREDICTABLE", 22933 ATy(qTy, 22934 qTy), 22935 TP[Var("mc", 22936 CTy"MachineCode"), 22937 LS 22938 "LoadMultiple"]), 22939 qVar"s"), 22940 qVar"s")]), 22941 TP[Apply 22942 (Call 22943 ("Skip", 22944 ATy(qTy, 22945 CTy"instruction"), 22946 LU),qVar"s"), 22947 qVar"s"]))))), 22948 (Bop(And,bVar"b'25",Mop(Not,bVar"b'24")), 22949 Let(TP[bVar"v",qVar"s"], 22950 Apply 22951 (Call 22952 ("Do",ATy(qTy,PTy(bTy,qTy)), 22953 TP[Var("cond",F4),LT]), 22954 qVar"state"), 22955 TP[ITE(bVar"v", 22956 Call 22957 ("Branch",CTy"instruction", 22958 Call 22959 ("BranchTarget", 22960 CTy"Branch", 22961 Mop(SE F32, 22962 CC[Mop(Cast(FTy 24), 22963 LL[bVar"b'23", 22964 bVar"b'22", 22965 bVar"b'21", 22966 bVar"b'20", 22967 bVar"b'19", 22968 bVar"b'18", 22969 bVar"b'17", 22970 bVar"b'16", 22971 bVar"b'15", 22972 bVar"b'14", 22973 bVar"b'13", 22974 bVar"b'12", 22975 bVar"b'11", 22976 bVar"b'10", 22977 bVar"b'9", 22978 bVar"b'8", 22979 bVar"b'7", 22980 bVar"b'6", 22981 bVar"b'5", 22982 bVar"b'4", 22983 bVar"b'3", 22984 bVar"b'2", 22985 bVar"b'1", 22986 bVar"b'0"]), 22987 LW(0,2)]))), 22988 Apply 22989 (Call 22990 ("Skip", 22991 ATy(qTy, 22992 CTy"instruction"), 22993 LU),qVar"s")),qVar"s"])), 22994 (Bop(And,bVar"b'25",bVar"b'24"), 22995 Let(TP[bVar"v",qVar"s"], 22996 Apply 22997 (Call 22998 ("Do",ATy(qTy,PTy(bTy,qTy)), 22999 TP[Var("cond",F4),LT]), 23000 qVar"state"), 23001 TP[ITE(bVar"v", 23002 Call 23003 ("Branch",CTy"instruction", 23004 Call 23005 ("BranchLinkExchangeImmediate", 23006 CTy"Branch", 23007 TP[LC("InstrSet_ARM", 23008 CTy"InstrSet"), 23009 Mop(SE F32, 23010 CC[Mop(Cast 23011 (FTy 24), 23012 LL[bVar"b'23", 23013 bVar"b'22", 23014 bVar"b'21", 23015 bVar"b'20", 23016 bVar"b'19", 23017 bVar"b'18", 23018 bVar"b'17", 23019 bVar"b'16", 23020 bVar"b'15", 23021 bVar"b'14", 23022 bVar"b'13", 23023 bVar"b'12", 23024 bVar"b'11", 23025 bVar"b'10", 23026 bVar"b'9", 23027 bVar"b'8", 23028 bVar"b'7", 23029 bVar"b'6", 23030 bVar"b'5", 23031 bVar"b'4", 23032 bVar"b'3", 23033 bVar"b'2", 23034 bVar"b'1", 23035 bVar"b'0"]), 23036 LW(0,2)])])), 23037 Apply 23038 (Call 23039 ("Skip", 23040 ATy(qTy, 23041 CTy"instruction"), 23042 LU),qVar"s")),qVar"s"]))], 23043 Apply 23044 (Call 23045 ("UndefinedARM", 23046 ATy(qTy,PTy(CTy"instruction",qTy)), 23047 Var("cond",F4)),qVar"state"))), 23048 (bVar"b'25", 23049 ITB([(Bop(And,bVar"b'24", 23050 Bop(And,Mop(Not,bVar"b'23"), 23051 Bop(And,Mop(Not,bVar"b'21"), 23052 Mop(Not,bVar"b'20")))), 23053 Let(Var("Rd",F4), 23054 Mop(Cast F4, 23055 LL[bVar"b'15",bVar"b'14", 23056 bVar"b'13",bVar"b'12"]), 23057 Let(TP[bVar"v",qVar"s"], 23058 Apply 23059 (Call 23060 ("Do", 23061 ATy(qTy,PTy(bTy,qTy)), 23062 TP[Var("cond",F4), 23063 Apply 23064 (Call 23065 ("HaveThumb2", 23066 ATy(qTy,bTy),LU), 23067 qVar"state")]), 23068 qVar"state"), 23069 ITE(bVar"v", 23070 TP[Call 23071 ("Data", 23072 CTy"instruction", 23073 Call 23074 ("MoveHalfword", 23075 CTy"Data", 23076 TP[EQ(Mop(Cast F1, 23077 LL[bVar"b'22"]), 23078 LW(1,1)), 23079 Var("Rd",F4), 23080 CC[Mop(Cast F4, 23081 LL[bVar"b'19", 23082 bVar"b'18", 23083 bVar"b'17", 23084 bVar"b'16"]), 23085 Mop(Cast 23086 (FTy 12), 23087 LL[bVar"b'11", 23088 bVar"b'10", 23089 bVar"b'9", 23090 bVar"b'8", 23091 bVar"b'7", 23092 bVar"b'6", 23093 bVar"b'5", 23094 bVar"b'4", 23095 bVar"b'3", 23096 bVar"b'2", 23097 bVar"b'1", 23098 bVar"b'0"])]])), 23099 ITE(EQ(Var("Rd",F4), 23100 LW(15,4)), 23101 Apply 23102 (Call 23103 ("DECODE_UNPREDICTABLE", 23104 ATy(qTy,qTy), 23105 TP[Var("mc", 23106 CTy"MachineCode"), 23107 LS 23108 "MoveTopHalfword"]), 23109 qVar"s"),qVar"s")], 23110 TP[Apply 23111 (Call 23112 ("Skip", 23113 ATy(qTy, 23114 CTy"instruction"), 23115 LU),qVar"s"), 23116 qVar"s"])))), 23117 (Bop(And,bVar"b'24", 23118 Bop(And,Mop(Not,bVar"b'23"), 23119 Bop(And,Mop(Not,bVar"b'22"), 23120 Bop(And,bVar"b'21", 23121 Bop(And, 23122 Mop(Not,bVar"b'20"), 23123 Bop(And, 23124 Mop(Not, 23125 bVar"b'19"), 23126 Bop(And, 23127 Mop(Not, 23128 bVar"b'18"), 23129 Bop(And, 23130 Mop(Not, 23131 bVar"b'17"), 23132 Mop(Not, 23133 bVar"b'16"))))))))), 23134 Apply 23135 (Call 23136 ("DecodeHint", 23137 ATy(qTy,PTy(CTy"instruction",qTy)), 23138 TP[Var("cond",F4), 23139 Mop(Cast F8, 23140 LL[bVar"b'7",bVar"b'6", 23141 bVar"b'5",bVar"b'4", 23142 bVar"b'3",bVar"b'2", 23143 bVar"b'1",bVar"b'0"])]), 23144 ITE(Mop(Not, 23145 Bop(And, 23146 EQ(Mop(Cast F4, 23147 LL[bVar"b'15", 23148 bVar"b'14", 23149 bVar"b'13", 23150 bVar"b'12"]), 23151 LW(15,4)), 23152 EQ(Mop(Cast F4, 23153 LL[bVar"b'11", 23154 bVar"b'10", 23155 bVar"b'9", 23156 bVar"b'8"]), 23157 LW(0,4)))), 23158 Apply 23159 (Call 23160 ("DECODE_UNPREDICTABLE", 23161 ATy(qTy,qTy), 23162 TP[Var("mc", 23163 CTy"MachineCode"), 23164 LS"Hint"]),qVar"state"), 23165 qVar"state"))), 23166 (Bop(And,bVar"b'24", 23167 Bop(And,Mop(Not,bVar"b'23"), 23168 Bop(And,bVar"b'21", 23169 Mop(Not,bVar"b'20")))), 23170 Let(Var("mask",F4), 23171 Mop(Cast F4, 23172 LL[bVar"b'19",bVar"b'18", 23173 bVar"b'17",bVar"b'16"]), 23174 Let(TP[bVar"v",qVar"s"], 23175 Apply 23176 (Call 23177 ("Do", 23178 ATy(qTy,PTy(bTy,qTy)), 23179 TP[Var("cond",F4),LT]), 23180 qVar"state"), 23181 ITE(bVar"v", 23182 Let(TP[Var("v",F32),qVar"s"], 23183 Apply 23184 (Call 23185 ("ARMExpandImm", 23186 ATy(qTy, 23187 PTy(F32,qTy)), 23188 Mop(Cast(FTy 12), 23189 LL[bVar"b'11", 23190 bVar"b'10", 23191 bVar"b'9", 23192 bVar"b'8", 23193 bVar"b'7", 23194 bVar"b'6", 23195 bVar"b'5", 23196 bVar"b'4", 23197 bVar"b'3", 23198 bVar"b'2", 23199 bVar"b'1", 23200 bVar"b'0"])), 23201 ITE(Bop(Or, 23202 EQ(Var("mask", 23203 F4), 23204 LW(0,4)), 23205 Mop(Not, 23206 EQ(Mop(Cast 23207 F4, 23208 LL[bVar"b'15", 23209 bVar"b'14", 23210 bVar"b'13", 23211 bVar"b'12"]), 23212 LW(15, 23213 4)))), 23214 Apply 23215 (Call 23216 ("DECODE_UNPREDICTABLE", 23217 ATy(qTy,qTy), 23218 TP[Var("mc", 23219 CTy"MachineCode"), 23220 LS 23221 "MoveToSpecialFromImmediate"]), 23222 qVar"s"), 23223 qVar"s")), 23224 TP[Call 23225 ("System", 23226 CTy"instruction", 23227 Call 23228 ("MoveToSpecialFromImmediate", 23229 CTy"System", 23230 TP[EQ(Mop(Cast 23231 F1, 23232 LL[bVar"b'22"]), 23233 LW(1,1)), 23234 Var("v",F32), 23235 Var("mask", 23236 F4)])), 23237 qVar"s"]), 23238 TP[Apply 23239 (Call 23240 ("Skip", 23241 ATy(qTy, 23242 CTy"instruction"), 23243 LU),qVar"s"), 23244 qVar"s"]))))], 23245 Let(Var("imm12",FTy 12), 23246 Mop(Cast(FTy 12), 23247 LL[bVar"b'11",bVar"b'10", 23248 bVar"b'9",bVar"b'8",bVar"b'7", 23249 bVar"b'6",bVar"b'5",bVar"b'4", 23250 bVar"b'3",bVar"b'2",bVar"b'1", 23251 bVar"b'0"]), 23252 Let(Var("Rd",F4), 23253 Mop(Cast F4, 23254 LL[bVar"b'15",bVar"b'14", 23255 bVar"b'13",bVar"b'12"]), 23256 Let(Var("Rn",F4), 23257 Mop(Cast F4, 23258 LL[bVar"b'19",bVar"b'18", 23259 bVar"b'17",bVar"b'16"]), 23260 Let(Var("opc",F4), 23261 Mop(Cast F4, 23262 LL[bVar"b'24", 23263 bVar"b'23", 23264 bVar"b'22", 23265 bVar"b'21"]), 23266 Let(TP[bVar"v",qVar"s"], 23267 Apply 23268 (Call 23269 ("Do", 23270 ATy(qTy, 23271 PTy(bTy,qTy)), 23272 TP[Var("cond",F4), 23273 LT]), 23274 qVar"state"), 23275 TP[ITE(bVar"v", 23276 Let(bVar"setflags", 23277 EQ(Mop(Cast 23278 F1, 23279 LL[bVar"b'20"]), 23280 LW(1,1)), 23281 Let(TP[bVar"b'3", 23282 bVar"b'2", 23283 bVar"b'1", 23284 bVar"b'0"], 23285 BL(4, 23286 Var("opc", 23287 F4)), 23288 ITE(bVar"b'3", 23289 ITB([(Bop(And, 23290 bVar"b'2", 23291 bVar"b'0"), 23292 Call 23293 ("Data", 23294 CTy"instruction", 23295 Call 23296 ("Move", 23297 CTy"Data", 23298 TP[bVar"setflags", 23299 Mop(Cast 23300 bTy, 23301 Mop(Cast 23302 F1, 23303 LL[bVar"b'1"])), 23304 Var("Rd", 23305 F4), 23306 Var("imm12", 23307 FTy 12)]))), 23308 (Mop(Not, 23309 bVar"b'2"), 23310 Call 23311 ("Data", 23312 CTy"instruction", 23313 Call 23314 ("TestCompareImmediate", 23315 CTy"Data", 23316 TP[Mop(Cast 23317 (FTy 2), 23318 LL[bVar"b'1", 23319 bVar"b'0"]), 23320 Var("Rn", 23321 F4), 23322 Var("imm12", 23323 FTy 12)])))], 23324 Call 23325 ("Data", 23326 CTy"instruction", 23327 Call 23328 ("ArithLogicImmediate", 23329 CTy"Data", 23330 TP[Var("opc", 23331 F4), 23332 bVar"setflags", 23333 Var("Rd", 23334 F4), 23335 Var("Rn", 23336 F4), 23337 Var("imm12", 23338 FTy 12)]))), 23339 Call 23340 ("Data", 23341 CTy"instruction", 23342 Call 23343 ("ArithLogicImmediate", 23344 CTy"Data", 23345 TP[Var("opc", 23346 F4), 23347 bVar"setflags", 23348 Var("Rd", 23349 F4), 23350 Var("Rn", 23351 F4), 23352 Var("imm12", 23353 FTy 12)]))))), 23354 Apply 23355 (Call 23356 ("Skip", 23357 ATy(qTy, 23358 CTy"instruction"), 23359 LU), 23360 qVar"s")), 23361 qVar"s"]))))))), 23362 (Bop(And,bVar"b'24", 23363 Bop(And,Mop(Not,bVar"b'23"), 23364 Bop(And,Mop(Not,bVar"b'21"), 23365 Bop(And,Mop(Not,bVar"b'20"), 23366 Bop(And,bVar"b'9", 23367 Bop(And, 23368 Mop(Not,bVar"b'7"), 23369 Bop(And, 23370 Mop(Not,bVar"b'6"), 23371 Bop(And, 23372 Mop(Not, 23373 bVar"b'5"), 23374 Mop(Not, 23375 bVar"b'4"))))))))), 23376 Let(Var("Rd",F4), 23377 Mop(Cast F4, 23378 LL[bVar"b'15",bVar"b'14",bVar"b'13", 23379 bVar"b'12"]), 23380 Let(TP[bVar"v",qVar"s"], 23381 Apply 23382 (Call 23383 ("Do",ATy(qTy,PTy(bTy,qTy)), 23384 TP[Var("cond",F4), 23385 Apply 23386 (Call 23387 ("HaveVirtExt", 23388 ATy(qTy,bTy),LU), 23389 qVar"state")]),qVar"state"), 23390 ITE(bVar"v", 23391 TP[Call 23392 ("System",CTy"instruction", 23393 Call 23394 ("MoveToRegisterFromBankedOrSpecial", 23395 CTy"System", 23396 TP[EQ(Mop(Cast F1, 23397 LL[bVar"b'22"]), 23398 LW(1,1)), 23399 CC[Mop(Cast F1, 23400 LL[bVar"b'8"]), 23401 Mop(Cast F4, 23402 LL[bVar"b'19", 23403 bVar"b'18", 23404 bVar"b'17", 23405 bVar"b'16"])], 23406 Var("Rd",F4)])), 23407 ITE(Bop(Or, 23408 EQ(Var("Rd",F4), 23409 LW(15,4)), 23410 Mop(Not, 23411 Bop(And, 23412 EQ(Mop(Cast 23413 (FTy 2), 23414 LL[bVar"b'11", 23415 bVar"b'10"]), 23416 LW(0,2)), 23417 EQ(Mop(Cast F4, 23418 LL[bVar"b'3", 23419 bVar"b'2", 23420 bVar"b'1", 23421 bVar"b'0"]), 23422 LW(0,4))))), 23423 Apply 23424 (Call 23425 ("DECODE_UNPREDICTABLE", 23426 ATy(qTy,qTy), 23427 TP[Var("mc", 23428 CTy"MachineCode"), 23429 LS 23430 "MoveToRegisterFromBankedOrSpecial"]), 23431 qVar"s"),qVar"s")], 23432 TP[Apply 23433 (Call 23434 ("Skip", 23435 ATy(qTy,CTy"instruction"), 23436 LU),qVar"s"),qVar"s"])))), 23437 (Bop(And,bVar"b'24", 23438 Bop(And,Mop(Not,bVar"b'23"), 23439 Bop(And,Mop(Not,bVar"b'21"), 23440 Bop(And,Mop(Not,bVar"b'20"), 23441 Bop(And,Mop(Not,bVar"b'9"), 23442 Bop(And, 23443 Mop(Not,bVar"b'7"), 23444 Bop(And, 23445 Mop(Not,bVar"b'6"), 23446 Bop(And, 23447 Mop(Not, 23448 bVar"b'5"), 23449 Mop(Not, 23450 bVar"b'4"))))))))), 23451 Let(Var("Rd",F4), 23452 Mop(Cast F4, 23453 LL[bVar"b'15",bVar"b'14",bVar"b'13", 23454 bVar"b'12"]), 23455 Let(TP[bVar"v",qVar"s"], 23456 Apply 23457 (Call 23458 ("Do",ATy(qTy,PTy(bTy,qTy)), 23459 TP[Var("cond",F4),LT]), 23460 qVar"state"), 23461 ITE(bVar"v", 23462 TP[Call 23463 ("System",CTy"instruction", 23464 Call 23465 ("MoveToRegisterFromSpecial", 23466 CTy"System", 23467 TP[EQ(Mop(Cast F1, 23468 LL[bVar"b'22"]), 23469 LW(1,1)), 23470 Var("Rd",F4)])), 23471 ITE(Bop(Or, 23472 EQ(Var("Rd",F4), 23473 LW(15,4)), 23474 Mop(Not, 23475 Bop(And, 23476 EQ(Mop(Cast F4, 23477 LL[bVar"b'19", 23478 bVar"b'18", 23479 bVar"b'17", 23480 bVar"b'16"]), 23481 LW(15,4)), 23482 Bop(And, 23483 EQ(Mop(Cast 23484 (FTy 2), 23485 LL[bVar"b'11", 23486 bVar"b'10"]), 23487 LW(0,2)), 23488 Bop(And, 23489 EQ(Mop(Cast 23490 F1, 23491 LL[bVar"b'8"]), 23492 LW(0, 23493 1)), 23494 EQ(Mop(Cast 23495 F4, 23496 LL[bVar"b'3", 23497 bVar"b'2", 23498 bVar"b'1", 23499 bVar"b'0"]), 23500 LW(0, 23501 4))))))), 23502 Apply 23503 (Call 23504 ("DECODE_UNPREDICTABLE", 23505 ATy(qTy,qTy), 23506 TP[Var("mc", 23507 CTy"MachineCode"), 23508 LS 23509 "MoveToRegisterFromSpecial"]), 23510 qVar"s"),qVar"s")], 23511 TP[Apply 23512 (Call 23513 ("Skip", 23514 ATy(qTy,CTy"instruction"), 23515 LU),qVar"s"),qVar"s"])))), 23516 (Bop(And,bVar"b'24", 23517 Bop(And,Mop(Not,bVar"b'23"), 23518 Bop(And,bVar"b'21", 23519 Bop(And,Mop(Not,bVar"b'20"), 23520 Bop(And,bVar"b'9", 23521 Bop(And, 23522 Mop(Not,bVar"b'7"), 23523 Bop(And, 23524 Mop(Not,bVar"b'6"), 23525 Bop(And, 23526 Mop(Not, 23527 bVar"b'5"), 23528 Mop(Not, 23529 bVar"b'4"))))))))), 23530 Let(Var("Rn",F4), 23531 Mop(Cast F4, 23532 LL[bVar"b'3",bVar"b'2",bVar"b'1", 23533 bVar"b'0"]), 23534 Let(TP[bVar"v",qVar"s"], 23535 Apply 23536 (Call 23537 ("Do",ATy(qTy,PTy(bTy,qTy)), 23538 TP[Var("cond",F4), 23539 Apply 23540 (Call 23541 ("HaveVirtExt", 23542 ATy(qTy,bTy),LU), 23543 qVar"state")]),qVar"state"), 23544 ITE(bVar"v", 23545 TP[Call 23546 ("System",CTy"instruction", 23547 Call 23548 ("MoveToBankedOrSpecialRegister", 23549 CTy"System", 23550 TP[EQ(Mop(Cast F1, 23551 LL[bVar"b'22"]), 23552 LW(1,1)), 23553 CC[Mop(Cast F1, 23554 LL[bVar"b'8"]), 23555 Mop(Cast F4, 23556 LL[bVar"b'19", 23557 bVar"b'18", 23558 bVar"b'17", 23559 bVar"b'16"])], 23560 Var("Rn",F4)])), 23561 ITE(Bop(Or, 23562 Bop(In,Var("Rn",F4), 23563 SL[LW(13,4), 23564 LW(15,4)]), 23565 Mop(Not, 23566 Bop(And, 23567 EQ(Mop(Cast F4, 23568 LL[bVar"b'15", 23569 bVar"b'14", 23570 bVar"b'13", 23571 bVar"b'12"]), 23572 LW(15,4)), 23573 EQ(Mop(Cast 23574 (FTy 2), 23575 LL[bVar"b'11", 23576 bVar"b'10"]), 23577 LW(0,2))))), 23578 Apply 23579 (Call 23580 ("DECODE_UNPREDICTABLE", 23581 ATy(qTy,qTy), 23582 TP[Var("mc", 23583 CTy"MachineCode"), 23584 LS 23585 "MoveToBankedOrSpecialRegister"]), 23586 qVar"s"),qVar"s")], 23587 TP[Apply 23588 (Call 23589 ("Skip", 23590 ATy(qTy,CTy"instruction"), 23591 LU),qVar"s"),qVar"s"])))), 23592 (Bop(And,bVar"b'24", 23593 Bop(And,Mop(Not,bVar"b'23"), 23594 Bop(And,bVar"b'21", 23595 Bop(And,Mop(Not,bVar"b'20"), 23596 Bop(And,Mop(Not,bVar"b'9"), 23597 Bop(And, 23598 Mop(Not,bVar"b'7"), 23599 Bop(And, 23600 Mop(Not,bVar"b'6"), 23601 Bop(And, 23602 Mop(Not, 23603 bVar"b'5"), 23604 Mop(Not, 23605 bVar"b'4"))))))))), 23606 Let(Var("Rn",F4), 23607 Mop(Cast F4, 23608 LL[bVar"b'3",bVar"b'2",bVar"b'1", 23609 bVar"b'0"]), 23610 Let(Var("mask",F4), 23611 Mop(Cast F4, 23612 LL[bVar"b'19",bVar"b'18", 23613 bVar"b'17",bVar"b'16"]), 23614 Let(TP[bVar"v",qVar"s"], 23615 Apply 23616 (Call 23617 ("Do",ATy(qTy,PTy(bTy,qTy)), 23618 TP[Var("cond",F4),LT]), 23619 qVar"state"), 23620 ITE(bVar"v", 23621 TP[Call 23622 ("System", 23623 CTy"instruction", 23624 Call 23625 ("MoveToSpecialFromRegister", 23626 CTy"System", 23627 TP[EQ(Mop(Cast F1, 23628 LL[bVar"b'22"]), 23629 LW(1,1)), 23630 Var("Rn",F4), 23631 Var("mask",F4)])), 23632 ITE(Bop(Or, 23633 EQ(Var("Rn",F4), 23634 LW(15,4)), 23635 Bop(Or, 23636 EQ(Var("mask", 23637 F4), 23638 LW(0,4)), 23639 Mop(Not, 23640 Bop(And, 23641 EQ(Mop(Cast 23642 F4, 23643 LL[bVar"b'15", 23644 bVar"b'14", 23645 bVar"b'13", 23646 bVar"b'12"]), 23647 LW(15, 23648 4)), 23649 Bop(And, 23650 EQ(Mop(Cast 23651 (FTy 2), 23652 LL[bVar"b'11", 23653 bVar"b'10"]), 23654 LW(0, 23655 2)), 23656 EQ(Mop(Cast 23657 F1, 23658 LL[bVar"b'8"]), 23659 LW(0, 23660 1))))))), 23661 Apply 23662 (Call 23663 ("DECODE_UNPREDICTABLE", 23664 ATy(qTy,qTy), 23665 TP[Var("mc", 23666 CTy"MachineCode"), 23667 LS 23668 "MoveToSpecialFromRegister"]), 23669 qVar"s"),qVar"s")], 23670 TP[Apply 23671 (Call 23672 ("Skip", 23673 ATy(qTy, 23674 CTy"instruction"), 23675 LU),qVar"s"),qVar"s"]))))), 23676 (Bop(And,bVar"b'24", 23677 Bop(And,Mop(Not,bVar"b'23"), 23678 Bop(And,Mop(Not,bVar"b'22"), 23679 Bop(And,bVar"b'21", 23680 Bop(And,Mop(Not,bVar"b'20"), 23681 Bop(And, 23682 Mop(Not,bVar"b'7"), 23683 Bop(And, 23684 Mop(Not,bVar"b'6"), 23685 Bop(And, 23686 Mop(Not, 23687 bVar"b'5"), 23688 bVar"b'4")))))))), 23689 Let(TP[bVar"v",qVar"s"], 23690 Apply 23691 (Call 23692 ("Do",ATy(qTy,PTy(bTy,qTy)), 23693 TP[Var("cond",F4), 23694 Mop(Not, 23695 EQ(Dest 23696 ("Architecture", 23697 CTy"Architecture", 23698 qVar"state"), 23699 LC("ARMv4", 23700 CTy"Architecture")))]), 23701 qVar"state"), 23702 ITE(bVar"v", 23703 TP[Call 23704 ("Branch",CTy"instruction", 23705 Call 23706 ("BranchExchange",CTy"Branch", 23707 Mop(Cast F4, 23708 LL[bVar"b'3",bVar"b'2", 23709 bVar"b'1",bVar"b'0"]))), 23710 ITE(Mop(Not, 23711 Bop(And, 23712 EQ(Mop(Cast F4, 23713 LL[bVar"b'19", 23714 bVar"b'18", 23715 bVar"b'17", 23716 bVar"b'16"]), 23717 LW(15,4)), 23718 Bop(And, 23719 EQ(Mop(Cast F4, 23720 LL[bVar"b'15", 23721 bVar"b'14", 23722 bVar"b'13", 23723 bVar"b'12"]), 23724 LW(15,4)), 23725 EQ(Mop(Cast F4, 23726 LL[bVar"b'11", 23727 bVar"b'10", 23728 bVar"b'9", 23729 bVar"b'8"]), 23730 LW(15,4))))), 23731 Apply 23732 (Call 23733 ("DECODE_UNPREDICTABLE", 23734 ATy(qTy,qTy), 23735 TP[Var("mc", 23736 CTy"MachineCode"), 23737 LS"BX"]),qVar"s"), 23738 qVar"s")], 23739 TP[Apply 23740 (Call 23741 ("Skip", 23742 ATy(qTy,CTy"instruction"),LU), 23743 qVar"s"),qVar"s"]))), 23744 (Bop(And,bVar"b'24", 23745 Bop(And,Mop(Not,bVar"b'23"), 23746 Bop(And,bVar"b'22", 23747 Bop(And,bVar"b'21", 23748 Bop(And,Mop(Not,bVar"b'20"), 23749 Bop(And, 23750 Mop(Not,bVar"b'7"), 23751 Bop(And, 23752 Mop(Not,bVar"b'6"), 23753 Bop(And, 23754 Mop(Not, 23755 bVar"b'5"), 23756 bVar"b'4")))))))), 23757 Let(Var("Rm",F4), 23758 Mop(Cast F4, 23759 LL[bVar"b'3",bVar"b'2",bVar"b'1", 23760 bVar"b'0"]), 23761 Let(Var("Rd",F4), 23762 Mop(Cast F4, 23763 LL[bVar"b'15",bVar"b'14", 23764 bVar"b'13",bVar"b'12"]), 23765 Let(TP[bVar"v",qVar"s"], 23766 Apply 23767 (Call 23768 ("Do",ATy(qTy,PTy(bTy,qTy)), 23769 TP[Var("cond",F4), 23770 Bop(Ge, 23771 Apply 23772 (Call 23773 ("ArchVersion", 23774 ATy(qTy,nTy),LU), 23775 qVar"state"),LN 5)]), 23776 qVar"state"), 23777 ITE(bVar"v", 23778 TP[Call 23779 ("Data",CTy"instruction", 23780 Call 23781 ("CountLeadingZeroes", 23782 CTy"Data", 23783 TP[Var("Rd",F4), 23784 Var("Rm",F4)])), 23785 ITE(Bop(Or, 23786 EQ(Var("Rd",F4), 23787 LW(15,4)), 23788 Bop(Or, 23789 EQ(Var("Rm",F4), 23790 LW(15,4)), 23791 Mop(Not, 23792 Bop(And, 23793 EQ(Mop(Cast 23794 F4, 23795 LL[bVar"b'19", 23796 bVar"b'18", 23797 bVar"b'17", 23798 bVar"b'16"]), 23799 LW(15, 23800 4)), 23801 EQ(Mop(Cast 23802 F4, 23803 LL[bVar"b'11", 23804 bVar"b'10", 23805 bVar"b'9", 23806 bVar"b'8"]), 23807 LW(15, 23808 4)))))), 23809 Apply 23810 (Call 23811 ("DECODE_UNPREDICTABLE", 23812 ATy(qTy,qTy), 23813 TP[Var("mc", 23814 CTy"MachineCode"), 23815 LS 23816 "CountLeadingZeroes"]), 23817 qVar"s"),qVar"s")], 23818 TP[Apply 23819 (Call 23820 ("Skip", 23821 ATy(qTy, 23822 CTy"instruction"), 23823 LU),qVar"s"),qVar"s"]))))), 23824 (Bop(And,bVar"b'24", 23825 Bop(And,Mop(Not,bVar"b'23"), 23826 Bop(And,Mop(Not,bVar"b'22"), 23827 Bop(And,bVar"b'21", 23828 Bop(And,Mop(Not,bVar"b'20"), 23829 Bop(And, 23830 Mop(Not,bVar"b'7"), 23831 Bop(And, 23832 Mop(Not,bVar"b'6"), 23833 Bop(And,bVar"b'5", 23834 bVar"b'4")))))))), 23835 Let(Var("Rm",F4), 23836 Mop(Cast F4, 23837 LL[bVar"b'3",bVar"b'2",bVar"b'1", 23838 bVar"b'0"]), 23839 Let(TP[bVar"v",qVar"s"], 23840 Apply 23841 (Call 23842 ("Do",ATy(qTy,PTy(bTy,qTy)), 23843 TP[Var("cond",F4), 23844 Bop(Ge, 23845 Apply 23846 (Call 23847 ("ArchVersion", 23848 ATy(qTy,nTy),LU), 23849 qVar"state"),LN 5)]), 23850 qVar"state"), 23851 ITE(bVar"v", 23852 TP[Call 23853 ("Branch",CTy"instruction", 23854 Call 23855 ("BranchLinkExchangeRegister", 23856 CTy"Branch",Var("Rm",F4))), 23857 ITE(Bop(Or, 23858 EQ(Var("Rm",F4), 23859 LW(15,4)), 23860 Mop(Not, 23861 Bop(And, 23862 EQ(Mop(Cast F4, 23863 LL[bVar"b'19", 23864 bVar"b'18", 23865 bVar"b'17", 23866 bVar"b'16"]), 23867 LW(15,4)), 23868 Bop(And, 23869 EQ(Mop(Cast 23870 F4, 23871 LL[bVar"b'15", 23872 bVar"b'14", 23873 bVar"b'13", 23874 bVar"b'12"]), 23875 LW(15,4)), 23876 EQ(Mop(Cast 23877 F4, 23878 LL[bVar"b'11", 23879 bVar"b'10", 23880 bVar"b'9", 23881 bVar"b'8"]), 23882 LW(15,4)))))), 23883 Apply 23884 (Call 23885 ("DECODE_UNPREDICTABLE", 23886 ATy(qTy,qTy), 23887 TP[Var("mc", 23888 CTy"MachineCode"), 23889 LS 23890 "BranchLinkExchangeRegister"]), 23891 qVar"s"),qVar"s")], 23892 TP[Apply 23893 (Call 23894 ("Skip", 23895 ATy(qTy,CTy"instruction"), 23896 LU),qVar"s"),qVar"s"])))), 23897 (Bop(And,bVar"b'24", 23898 Bop(And,Mop(Not,bVar"b'23"), 23899 Bop(And,Mop(Not,bVar"b'20"), 23900 Bop(And,Mop(Not,bVar"b'7"), 23901 Bop(And,bVar"b'6", 23902 Bop(And, 23903 Mop(Not,bVar"b'5"), 23904 bVar"b'4")))))), 23905 Let(Var("Rm",F4), 23906 Mop(Cast F4, 23907 LL[bVar"b'3",bVar"b'2",bVar"b'1", 23908 bVar"b'0"]), 23909 Let(Var("Rd",F4), 23910 Mop(Cast F4, 23911 LL[bVar"b'15",bVar"b'14", 23912 bVar"b'13",bVar"b'12"]), 23913 Let(Var("Rn",F4), 23914 Mop(Cast F4, 23915 LL[bVar"b'19",bVar"b'18", 23916 bVar"b'17",bVar"b'16"]), 23917 Let(TP[bVar"v",qVar"s"], 23918 Apply 23919 (Call 23920 ("Do", 23921 ATy(qTy,PTy(bTy,qTy)), 23922 TP[Var("cond",F4), 23923 Apply 23924 (Call 23925 ("HaveDSPSupport", 23926 ATy(qTy,bTy),LU), 23927 qVar"state")]), 23928 qVar"state"), 23929 ITE(bVar"v", 23930 TP[Call 23931 ("Media", 23932 CTy"instruction", 23933 Call 23934 ("SaturatingAddSubtract", 23935 CTy"Media", 23936 TP[Mop(Cast 23937 (FTy 2), 23938 LL[bVar"b'22", 23939 bVar"b'21"]), 23940 Var("Rd",F4), 23941 Var("Rm",F4), 23942 Var("Rn",F4)])), 23943 ITE(Bop(Or, 23944 EQ(Var("Rd",F4), 23945 LW(15,4)), 23946 Bop(Or, 23947 EQ(Var("Rn", 23948 F4), 23949 LW(15,4)), 23950 Bop(Or, 23951 EQ(Var("Rm", 23952 F4), 23953 LW(15, 23954 4)), 23955 Mop(Not, 23956 EQ(Mop(Cast 23957 F4, 23958 LL[bVar"b'11", 23959 bVar"b'10", 23960 bVar"b'9", 23961 bVar"b'8"]), 23962 LW(0, 23963 4)))))), 23964 Apply 23965 (Call 23966 ("DECODE_UNPREDICTABLE", 23967 ATy(qTy,qTy), 23968 TP[Var("mc", 23969 CTy"MachineCode"), 23970 LS 23971 "SaturatingAddSubtract"]), 23972 qVar"s"),qVar"s")], 23973 TP[Apply 23974 (Call 23975 ("Skip", 23976 ATy(qTy, 23977 CTy"instruction"), 23978 LU),qVar"s"), 23979 qVar"s"])))))), 23980 (Bop(And,bVar"b'24", 23981 Bop(And,Mop(Not,bVar"b'23"), 23982 Bop(And,Mop(Not,bVar"b'22"), 23983 Bop(And,bVar"b'21", 23984 Bop(And,Mop(Not,bVar"b'20"), 23985 Bop(And, 23986 Mop(Not,bVar"b'7"), 23987 Bop(And,bVar"b'6", 23988 Bop(And,bVar"b'5", 23989 bVar"b'4")))))))), 23990 ITE(Bop(Ge, 23991 Apply 23992 (Call("ArchVersion",ATy(qTy,nTy),LU), 23993 qVar"state"),LN 5), 23994 TP[Call 23995 ("Hint",CTy"instruction", 23996 Call 23997 ("Breakpoint",CTy"Hint", 23998 Mop(Cast F32, 23999 CC[Mop(Cast(FTy 12), 24000 LL[bVar"b'19", 24001 bVar"b'18", 24002 bVar"b'17", 24003 bVar"b'16", 24004 bVar"b'15", 24005 bVar"b'14", 24006 bVar"b'13", 24007 bVar"b'12", 24008 bVar"b'11", 24009 bVar"b'10", 24010 bVar"b'9",bVar"b'8"]), 24011 Mop(Cast F4, 24012 LL[bVar"b'3", 24013 bVar"b'2", 24014 bVar"b'1",bVar"b'0"])]))), 24015 Rupd 24016 ("CurrentCondition", 24017 TP[ITE(Mop(Not, 24018 EQ(Var("cond",F4), 24019 LW(14,4))), 24020 Apply 24021 (Call 24022 ("DECODE_UNPREDICTABLE", 24023 ATy(qTy,qTy), 24024 TP[Var("mc", 24025 CTy"MachineCode"), 24026 LS"Breakpoint"]), 24027 qVar"state"),qVar"state"), 24028 Var("cond",F4)])], 24029 Let(TP[bVar"v",qVar"s"], 24030 Apply 24031 (Call 24032 ("Do",ATy(qTy,PTy(bTy,qTy)), 24033 TP[Var("cond",F4),LF]), 24034 qVar"state"), 24035 TP[ITE(bVar"v", 24036 Call 24037 ("Undefined", 24038 CTy"instruction",LW(0,32)), 24039 Const 24040 ("NoOperation", 24041 CTy"instruction")),qVar"s"]))), 24042 (Bop(And,bVar"b'24", 24043 Bop(And,Mop(Not,bVar"b'23"), 24044 Bop(And,bVar"b'22", 24045 Bop(And,Mop(Not,bVar"b'21"), 24046 Bop(And,Mop(Not,bVar"b'20"), 24047 Bop(And, 24048 Mop(Not,bVar"b'7"), 24049 Bop(And,bVar"b'6", 24050 Bop(And,bVar"b'5", 24051 bVar"b'4")))))))), 24052 Let(TP[bVar"v",qVar"s"], 24053 Apply 24054 (Call 24055 ("Do",ATy(qTy,PTy(bTy,qTy)), 24056 TP[Var("cond",F4), 24057 Apply 24058 (Call 24059 ("HaveVirtExt",ATy(qTy,bTy), 24060 LU),qVar"state")]), 24061 qVar"state"), 24062 ITE(bVar"v", 24063 TP[Call 24064 ("System",CTy"instruction", 24065 Call 24066 ("HypervisorCall",CTy"System", 24067 CC[Mop(Cast(FTy 12), 24068 LL[bVar"b'19", 24069 bVar"b'18", 24070 bVar"b'17", 24071 bVar"b'16", 24072 bVar"b'15", 24073 bVar"b'14", 24074 bVar"b'13", 24075 bVar"b'12", 24076 bVar"b'11", 24077 bVar"b'10", 24078 bVar"b'9",bVar"b'8"]), 24079 Mop(Cast F4, 24080 LL[bVar"b'3", 24081 bVar"b'2", 24082 bVar"b'1",bVar"b'0"])])), 24083 ITE(Mop(Not, 24084 EQ(Var("cond",F4),LW(14,4))), 24085 Apply 24086 (Call 24087 ("DECODE_UNPREDICTABLE", 24088 ATy(qTy,qTy), 24089 TP[Var("mc", 24090 CTy"MachineCode"), 24091 LS"HypervisorCall"]), 24092 qVar"s"),qVar"s")], 24093 TP[Apply 24094 (Call 24095 ("Skip", 24096 ATy(qTy,CTy"instruction"),LU), 24097 qVar"s"),qVar"s"]))), 24098 (Bop(And,bVar"b'24", 24099 Bop(And,Mop(Not,bVar"b'23"), 24100 Bop(And,bVar"b'22", 24101 Bop(And,bVar"b'21", 24102 Bop(And,Mop(Not,bVar"b'20"), 24103 Bop(And, 24104 Mop(Not,bVar"b'7"), 24105 Bop(And,bVar"b'6", 24106 Bop(And,bVar"b'5", 24107 bVar"b'4")))))))), 24108 Let(TP[bVar"v",qVar"s"], 24109 Apply 24110 (Call 24111 ("Do",ATy(qTy,PTy(bTy,qTy)), 24112 TP[Var("cond",F4), 24113 Apply 24114 (Call 24115 ("HaveSecurityExt", 24116 ATy(qTy,bTy),LU), 24117 qVar"state")]),qVar"state"), 24118 ITE(bVar"v", 24119 TP[Call 24120 ("System",CTy"instruction", 24121 Call 24122 ("SecureMonitorCall", 24123 CTy"System", 24124 Mop(Cast F4, 24125 LL[bVar"b'3",bVar"b'2", 24126 bVar"b'1",bVar"b'0"]))), 24127 ITE(Mop(Not, 24128 EQ(Mop(Cast(FTy 12), 24129 LL[bVar"b'19", 24130 bVar"b'18", 24131 bVar"b'17", 24132 bVar"b'16", 24133 bVar"b'15", 24134 bVar"b'14", 24135 bVar"b'13", 24136 bVar"b'12", 24137 bVar"b'11", 24138 bVar"b'10", 24139 bVar"b'9", 24140 bVar"b'8"]), 24141 LW(0,12))), 24142 Apply 24143 (Call 24144 ("DECODE_UNPREDICTABLE", 24145 ATy(qTy,qTy), 24146 TP[Var("mc", 24147 CTy"MachineCode"), 24148 LS"SMC"]),qVar"s"), 24149 qVar"s")], 24150 TP[Apply 24151 (Call 24152 ("Skip", 24153 ATy(qTy,CTy"instruction"),LU), 24154 qVar"s"),qVar"s"]))), 24155 (Bop(And,bVar"b'24", 24156 Bop(And,Mop(Not,bVar"b'23"), 24157 Bop(And,Mop(Not,bVar"b'22"), 24158 Bop(And,Mop(Not,bVar"b'21"), 24159 Bop(And,Mop(Not,bVar"b'20"), 24160 Bop(And,bVar"b'7", 24161 Mop(Not,bVar"b'4"))))))), 24162 Let(Var("Rn",F4), 24163 Mop(Cast F4, 24164 LL[bVar"b'3",bVar"b'2",bVar"b'1", 24165 bVar"b'0"]), 24166 Let(Var("Rm",F4), 24167 Mop(Cast F4, 24168 LL[bVar"b'11",bVar"b'10", 24169 bVar"b'9",bVar"b'8"]), 24170 Let(Var("Ra",F4), 24171 Mop(Cast F4, 24172 LL[bVar"b'15",bVar"b'14", 24173 bVar"b'13",bVar"b'12"]), 24174 Let(Var("Rd",F4), 24175 Mop(Cast F4, 24176 LL[bVar"b'19",bVar"b'18", 24177 bVar"b'17",bVar"b'16"]), 24178 Let(TP[bVar"v",qVar"s"], 24179 Apply 24180 (Call 24181 ("Do", 24182 ATy(qTy,PTy(bTy,qTy)), 24183 TP[Var("cond",F4), 24184 Apply 24185 (Call 24186 ("HaveDSPSupport", 24187 ATy(qTy,bTy), 24188 LU), 24189 qVar"state")]), 24190 qVar"state"), 24191 ITE(bVar"v", 24192 TP[Call 24193 ("Multiply", 24194 CTy"instruction", 24195 Call 24196 ("Signed16Multiply32Accumulate", 24197 CTy"Multiply", 24198 TP[EQ(Mop(Cast 24199 F1, 24200 LL[bVar"b'6"]), 24201 LW(1,1)), 24202 EQ(Mop(Cast 24203 F1, 24204 LL[bVar"b'5"]), 24205 LW(1,1)), 24206 Var("Rd", 24207 F4), 24208 Var("Rn", 24209 F4), 24210 Var("Rm", 24211 F4), 24212 Var("Ra", 24213 F4)])), 24214 ITE(Bop(Or, 24215 EQ(Var("Rd", 24216 F4), 24217 LW(15,4)), 24218 Bop(Or, 24219 EQ(Var("Rn", 24220 F4), 24221 LW(15, 24222 4)), 24223 Bop(Or, 24224 EQ(Var("Rm", 24225 F4), 24226 LW(15, 24227 4)), 24228 EQ(Var("Ra", 24229 F4), 24230 LW(15, 24231 4))))), 24232 Apply 24233 (Call 24234 ("DECODE_UNPREDICTABLE", 24235 ATy(qTy, 24236 qTy), 24237 TP[Var("mc", 24238 CTy"MachineCode"), 24239 LS 24240 "Signed16Multiply32Accumulate"]), 24241 qVar"s"), 24242 qVar"s")], 24243 TP[Apply 24244 (Call 24245 ("Skip", 24246 ATy(qTy, 24247 CTy"instruction"), 24248 LU),qVar"s"), 24249 qVar"s"]))))))), 24250 (Bop(And,bVar"b'24", 24251 Bop(And,Mop(Not,bVar"b'23"), 24252 Bop(And,Mop(Not,bVar"b'22"), 24253 Bop(And,bVar"b'21", 24254 Bop(And,Mop(Not,bVar"b'20"), 24255 Bop(And,bVar"b'7", 24256 Bop(And, 24257 Mop(Not,bVar"b'5"), 24258 Mop(Not,bVar"b'4")))))))), 24259 Let(Var("Rn",F4), 24260 Mop(Cast F4, 24261 LL[bVar"b'3",bVar"b'2",bVar"b'1", 24262 bVar"b'0"]), 24263 Let(Var("Rm",F4), 24264 Mop(Cast F4, 24265 LL[bVar"b'11",bVar"b'10", 24266 bVar"b'9",bVar"b'8"]), 24267 Let(Var("Ra",F4), 24268 Mop(Cast F4, 24269 LL[bVar"b'15",bVar"b'14", 24270 bVar"b'13",bVar"b'12"]), 24271 Let(Var("Rd",F4), 24272 Mop(Cast F4, 24273 LL[bVar"b'19",bVar"b'18", 24274 bVar"b'17",bVar"b'16"]), 24275 Let(TP[bVar"v",qVar"s"], 24276 Apply 24277 (Call 24278 ("Do", 24279 ATy(qTy,PTy(bTy,qTy)), 24280 TP[Var("cond",F4), 24281 Apply 24282 (Call 24283 ("HaveDSPSupport", 24284 ATy(qTy,bTy), 24285 LU), 24286 qVar"state")]), 24287 qVar"state"), 24288 ITE(bVar"v", 24289 TP[Call 24290 ("Multiply", 24291 CTy"instruction", 24292 Call 24293 ("Signed16x32Multiply32Accumulate", 24294 CTy"Multiply", 24295 TP[EQ(Mop(Cast 24296 F1, 24297 LL[bVar"b'6"]), 24298 LW(1,1)), 24299 Var("Rd", 24300 F4), 24301 Var("Rn", 24302 F4), 24303 Var("Rm", 24304 F4), 24305 Var("Ra", 24306 F4)])), 24307 ITE(Bop(Or, 24308 EQ(Var("Rd", 24309 F4), 24310 LW(15,4)), 24311 Bop(Or, 24312 EQ(Var("Rn", 24313 F4), 24314 LW(15, 24315 4)), 24316 Bop(Or, 24317 EQ(Var("Rm", 24318 F4), 24319 LW(15, 24320 4)), 24321 EQ(Var("Ra", 24322 F4), 24323 LW(15, 24324 4))))), 24325 Apply 24326 (Call 24327 ("DECODE_UNPREDICTABLE", 24328 ATy(qTy, 24329 qTy), 24330 TP[Var("mc", 24331 CTy"MachineCode"), 24332 LS 24333 "Signed16x32Multiply32Accumulate"]), 24334 qVar"s"), 24335 qVar"s")], 24336 TP[Apply 24337 (Call 24338 ("Skip", 24339 ATy(qTy, 24340 CTy"instruction"), 24341 LU),qVar"s"), 24342 qVar"s"]))))))), 24343 (Bop(And,bVar"b'24", 24344 Bop(And,Mop(Not,bVar"b'23"), 24345 Bop(And,Mop(Not,bVar"b'22"), 24346 Bop(And,bVar"b'21", 24347 Bop(And,Mop(Not,bVar"b'20"), 24348 Bop(And,bVar"b'7", 24349 Bop(And,bVar"b'5", 24350 Mop(Not,bVar"b'4")))))))), 24351 Let(Var("Rn",F4), 24352 Mop(Cast F4, 24353 LL[bVar"b'3",bVar"b'2",bVar"b'1", 24354 bVar"b'0"]), 24355 Let(Var("Rm",F4), 24356 Mop(Cast F4, 24357 LL[bVar"b'11",bVar"b'10", 24358 bVar"b'9",bVar"b'8"]), 24359 Let(Var("Rd",F4), 24360 Mop(Cast F4, 24361 LL[bVar"b'19",bVar"b'18", 24362 bVar"b'17",bVar"b'16"]), 24363 Let(TP[bVar"v",qVar"s"], 24364 Apply 24365 (Call 24366 ("Do", 24367 ATy(qTy,PTy(bTy,qTy)), 24368 TP[Var("cond",F4), 24369 Apply 24370 (Call 24371 ("HaveDSPSupport", 24372 ATy(qTy,bTy),LU), 24373 qVar"state")]), 24374 qVar"state"), 24375 ITE(bVar"v", 24376 TP[Call 24377 ("Multiply", 24378 CTy"instruction", 24379 Call 24380 ("Signed16x32Multiply32Result", 24381 CTy"Multiply", 24382 TP[EQ(Mop(Cast F1, 24383 LL[bVar"b'6"]), 24384 LW(1,1)), 24385 Var("Rd",F4), 24386 Var("Rn",F4), 24387 Var("Rm",F4)])), 24388 ITE(Bop(Or, 24389 EQ(Var("Rd",F4), 24390 LW(15,4)), 24391 Bop(Or, 24392 EQ(Var("Rn", 24393 F4), 24394 LW(15,4)), 24395 Bop(Or, 24396 EQ(Var("Rm", 24397 F4), 24398 LW(15, 24399 4)), 24400 Mop(Not, 24401 EQ(Mop(Cast 24402 F4, 24403 LL[bVar"b'15", 24404 bVar"b'14", 24405 bVar"b'13", 24406 bVar"b'12"]), 24407 LW(0, 24408 4)))))), 24409 Apply 24410 (Call 24411 ("DECODE_UNPREDICTABLE", 24412 ATy(qTy,qTy), 24413 TP[Var("mc", 24414 CTy"MachineCode"), 24415 LS 24416 "Signed16x32Multiply32Result"]), 24417 qVar"s"),qVar"s")], 24418 TP[Apply 24419 (Call 24420 ("Skip", 24421 ATy(qTy, 24422 CTy"instruction"), 24423 LU),qVar"s"), 24424 qVar"s"])))))), 24425 (Bop(And,bVar"b'24", 24426 Bop(And,Mop(Not,bVar"b'23"), 24427 Bop(And,bVar"b'22", 24428 Bop(And,Mop(Not,bVar"b'21"), 24429 Bop(And,Mop(Not,bVar"b'20"), 24430 Bop(And,bVar"b'7", 24431 Mop(Not,bVar"b'4"))))))), 24432 Let(Var("Rn",F4), 24433 Mop(Cast F4, 24434 LL[bVar"b'3",bVar"b'2",bVar"b'1", 24435 bVar"b'0"]), 24436 Let(Var("Rm",F4), 24437 Mop(Cast F4, 24438 LL[bVar"b'11",bVar"b'10", 24439 bVar"b'9",bVar"b'8"]), 24440 Let(Var("RdLo",F4), 24441 Mop(Cast F4, 24442 LL[bVar"b'15",bVar"b'14", 24443 bVar"b'13",bVar"b'12"]), 24444 Let(Var("RdHi",F4), 24445 Mop(Cast F4, 24446 LL[bVar"b'19",bVar"b'18", 24447 bVar"b'17",bVar"b'16"]), 24448 Let(TP[bVar"v",qVar"s"], 24449 Apply 24450 (Call 24451 ("Do", 24452 ATy(qTy,PTy(bTy,qTy)), 24453 TP[Var("cond",F4), 24454 Apply 24455 (Call 24456 ("HaveDSPSupport", 24457 ATy(qTy,bTy), 24458 LU), 24459 qVar"state")]), 24460 qVar"state"), 24461 ITE(bVar"v", 24462 TP[Call 24463 ("Multiply", 24464 CTy"instruction", 24465 Call 24466 ("Signed16Multiply64Accumulate", 24467 CTy"Multiply", 24468 TP[EQ(Mop(Cast 24469 F1, 24470 LL[bVar"b'6"]), 24471 LW(1,1)), 24472 EQ(Mop(Cast 24473 F1, 24474 LL[bVar"b'5"]), 24475 LW(1,1)), 24476 Var("RdHi", 24477 F4), 24478 Var("RdLo", 24479 F4), 24480 Var("Rn", 24481 F4), 24482 Var("Rm", 24483 F4)])), 24484 ITE(Bop(Or, 24485 EQ(Var("RdLo", 24486 F4), 24487 LW(15,4)), 24488 Bop(Or, 24489 EQ(Var("RdHi", 24490 F4), 24491 LW(15, 24492 4)), 24493 Bop(Or, 24494 EQ(Var("Rn", 24495 F4), 24496 LW(15, 24497 4)), 24498 EQ(Var("Rm", 24499 F4), 24500 LW(15, 24501 4))))), 24502 Apply 24503 (Call 24504 ("DECODE_UNPREDICTABLE", 24505 ATy(qTy, 24506 qTy), 24507 TP[Var("mc", 24508 CTy"MachineCode"), 24509 LS 24510 "Signed16Multiply64Accumulate"]), 24511 qVar"s"), 24512 qVar"s")], 24513 TP[Apply 24514 (Call 24515 ("Skip", 24516 ATy(qTy, 24517 CTy"instruction"), 24518 LU),qVar"s"), 24519 qVar"s"]))))))), 24520 (Bop(And,bVar"b'24", 24521 Bop(And,Mop(Not,bVar"b'23"), 24522 Bop(And,bVar"b'22", 24523 Bop(And,bVar"b'21", 24524 Bop(And,Mop(Not,bVar"b'20"), 24525 Bop(And,bVar"b'7", 24526 Mop(Not,bVar"b'4"))))))), 24527 Let(Var("Rn",F4), 24528 Mop(Cast F4, 24529 LL[bVar"b'3",bVar"b'2",bVar"b'1", 24530 bVar"b'0"]), 24531 Let(Var("Rm",F4), 24532 Mop(Cast F4, 24533 LL[bVar"b'11",bVar"b'10", 24534 bVar"b'9",bVar"b'8"]), 24535 Let(Var("Rd",F4), 24536 Mop(Cast F4, 24537 LL[bVar"b'19",bVar"b'18", 24538 bVar"b'17",bVar"b'16"]), 24539 Let(TP[bVar"v",qVar"s"], 24540 Apply 24541 (Call 24542 ("Do", 24543 ATy(qTy,PTy(bTy,qTy)), 24544 TP[Var("cond",F4), 24545 Apply 24546 (Call 24547 ("HaveDSPSupport", 24548 ATy(qTy,bTy),LU), 24549 qVar"state")]), 24550 qVar"state"), 24551 ITE(bVar"v", 24552 TP[Call 24553 ("Multiply", 24554 CTy"instruction", 24555 Call 24556 ("Signed16Multiply32Result", 24557 CTy"Multiply", 24558 TP[EQ(Mop(Cast F1, 24559 LL[bVar"b'6"]), 24560 LW(1,1)), 24561 EQ(Mop(Cast F1, 24562 LL[bVar"b'5"]), 24563 LW(1,1)), 24564 Var("Rd",F4), 24565 Var("Rn",F4), 24566 Var("Rm",F4)])), 24567 ITE(Bop(Or, 24568 EQ(Var("Rd",F4), 24569 LW(15,4)), 24570 Bop(Or, 24571 EQ(Var("Rn", 24572 F4), 24573 LW(15,4)), 24574 Bop(Or, 24575 EQ(Var("Rm", 24576 F4), 24577 LW(15, 24578 4)), 24579 Mop(Not, 24580 EQ(Mop(Cast 24581 F4, 24582 LL[bVar"b'15", 24583 bVar"b'14", 24584 bVar"b'13", 24585 bVar"b'12"]), 24586 LW(0, 24587 4)))))), 24588 Apply 24589 (Call 24590 ("DECODE_UNPREDICTABLE", 24591 ATy(qTy,qTy), 24592 TP[Var("mc", 24593 CTy"MachineCode"), 24594 LS 24595 "Signed16Multiply32Result"]), 24596 qVar"s"),qVar"s")], 24597 TP[Apply 24598 (Call 24599 ("Skip", 24600 ATy(qTy, 24601 CTy"instruction"), 24602 LU),qVar"s"), 24603 qVar"s"])))))), 24604 (Bop(And,bVar"b'24", 24605 Bop(And,Mop(Not,bVar"b'23"), 24606 Bop(And,bVar"b'22", 24607 Bop(And,bVar"b'21", 24608 Bop(And,Mop(Not,bVar"b'20"), 24609 Bop(And, 24610 Mop(Not,bVar"b'19"), 24611 Bop(And, 24612 Mop(Not,bVar"b'18"), 24613 Bop(And, 24614 Mop(Not, 24615 bVar"b'17"), 24616 Bop(And, 24617 Mop(Not, 24618 bVar"b'16"), 24619 Bop(And, 24620 Mop(Not, 24621 bVar"b'15"), 24622 Bop(And, 24623 Mop(Not, 24624 bVar"b'14"), 24625 Bop(And, 24626 Mop(Not, 24627 bVar"b'13"), 24628 Bop(And, 24629 Mop(Not, 24630 bVar"b'12"), 24631 Bop(And, 24632 Mop(Not, 24633 bVar"b'11"), 24634 Bop(And, 24635 Mop(Not, 24636 bVar"b'10"), 24637 Bop(And, 24638 Mop(Not, 24639 bVar"b'9"), 24640 Bop(And, 24641 Mop(Not, 24642 bVar"b'8"), 24643 Bop(And, 24644 Mop(Not, 24645 bVar"b'7"), 24646 Bop(And, 24647 bVar"b'6", 24648 Bop(And, 24649 bVar"b'5", 24650 Bop(And, 24651 Mop(Not, 24652 bVar"b'4"), 24653 Bop(And, 24654 bVar"b'3", 24655 Bop(And, 24656 bVar"b'2", 24657 Bop(And, 24658 bVar"b'1", 24659 Mop(Not, 24660 bVar"b'0"))))))))))))))))))))))))), 24661 Let(TP[bVar"v",qVar"s"], 24662 Apply 24663 (Call 24664 ("Do",ATy(qTy,PTy(bTy,qTy)), 24665 TP[Var("cond",F4), 24666 Apply 24667 (Call 24668 ("HaveVirtExt",ATy(qTy,bTy), 24669 LU),qVar"state")]), 24670 qVar"state"), 24671 TP[ITE(bVar"v", 24672 Call 24673 ("System",CTy"instruction", 24674 Const 24675 ("ExceptionReturn",CTy"System")), 24676 Apply 24677 (Call 24678 ("Skip", 24679 ATy(qTy,CTy"instruction"),LU), 24680 qVar"s")),qVar"s"])), 24681 (Bop(And,bVar"b'24", 24682 Bop(And,Mop(Not,bVar"b'23"), 24683 Bop(And,Mop(Not,bVar"b'20"), 24684 Mop(Not,bVar"b'7")))), 24685 TP[Call("Undefined",CTy"instruction",LW(0,32)), 24686 qVar"state"]), 24687 (Mop(Not,bVar"b'4"), 24688 Let(Var("Rm",F4), 24689 Mop(Cast F4, 24690 LL[bVar"b'3",bVar"b'2",bVar"b'1", 24691 bVar"b'0"]), 24692 Let(Var("Rd",F4), 24693 Mop(Cast F4, 24694 LL[bVar"b'15",bVar"b'14", 24695 bVar"b'13",bVar"b'12"]), 24696 Let(Var("Rn",F4), 24697 Mop(Cast F4, 24698 LL[bVar"b'19",bVar"b'18", 24699 bVar"b'17",bVar"b'16"]), 24700 Let(Var("opc",F4), 24701 Mop(Cast F4, 24702 LL[bVar"b'24",bVar"b'23", 24703 bVar"b'22",bVar"b'21"]), 24704 Let(TP[bVar"v",qVar"s"], 24705 Apply 24706 (Call 24707 ("Do", 24708 ATy(qTy,PTy(bTy,qTy)), 24709 TP[Var("cond",F4),LT]), 24710 qVar"state"), 24711 TP[ITE(bVar"v", 24712 Let(bVar"setflags", 24713 EQ(Mop(Cast F1, 24714 LL[bVar"b'20"]), 24715 LW(1,1)), 24716 Let(TP[Var("shift_t", 24717 CTy"SRType"), 24718 nVar"shift_n"], 24719 Call 24720 ("DecodeImmShift", 24721 PTy(CTy"SRType", 24722 nTy), 24723 TP[Mop(Cast 24724 (FTy 2), 24725 LL[bVar"b'6", 24726 bVar"b'5"]), 24727 Mop(Cast 24728 (FTy 5), 24729 LL[bVar"b'11", 24730 bVar"b'10", 24731 bVar"b'9", 24732 bVar"b'8", 24733 bVar"b'7"])]), 24734 ITB([(EQ(EX(Var("opc", 24735 F4), 24736 LN 24737 3, 24738 LN 24739 2, 24740 FTy 2), 24741 LW(2, 24742 2)), 24743 Call 24744 ("Data", 24745 CTy"instruction", 24746 Call 24747 ("TestCompareRegister", 24748 CTy"Data", 24749 TP[EX(Var("opc", 24750 F4), 24751 LN 24752 1, 24753 LN 24754 0, 24755 FTy 2), 24756 Var("Rn", 24757 F4), 24758 Var("Rm", 24759 F4), 24760 Var("shift_t", 24761 CTy"SRType"), 24762 nVar"shift_n"]))), 24763 (Bop(In, 24764 Var("opc", 24765 F4), 24766 SL[LW(13, 24767 4), 24768 LW(15, 24769 4)]), 24770 Call 24771 ("Data", 24772 CTy"instruction", 24773 Call 24774 ("ShiftImmediate", 24775 CTy"Data", 24776 TP[Bop(Bit, 24777 Var("opc", 24778 F4), 24779 LN 24780 1), 24781 bVar"setflags", 24782 Var("Rd", 24783 F4), 24784 Var("Rm", 24785 F4), 24786 Var("shift_t", 24787 CTy"SRType"), 24788 nVar"shift_n"])))], 24789 Call 24790 ("Data", 24791 CTy"instruction", 24792 Call 24793 ("Register", 24794 CTy"Data", 24795 TP[Var("opc", 24796 F4), 24797 bVar"setflags", 24798 Var("Rd", 24799 F4), 24800 Var("Rn", 24801 F4), 24802 Var("Rm", 24803 F4), 24804 Var("shift_t", 24805 CTy"SRType"), 24806 nVar"shift_n"]))))), 24807 Apply 24808 (Call 24809 ("Skip", 24810 ATy(qTy, 24811 CTy"instruction"), 24812 LU),qVar"s")), 24813 qVar"s"])))))), 24814 (Bop(And,Mop(Not,bVar"b'7"),bVar"b'4"), 24815 Let(Var("Rm",F4), 24816 Mop(Cast F4, 24817 LL[bVar"b'3",bVar"b'2",bVar"b'1", 24818 bVar"b'0"]), 24819 Let(Var("Rs",F4), 24820 Mop(Cast F4, 24821 LL[bVar"b'11",bVar"b'10", 24822 bVar"b'9",bVar"b'8"]), 24823 Let(Var("Rd",F4), 24824 Mop(Cast F4, 24825 LL[bVar"b'15",bVar"b'14", 24826 bVar"b'13",bVar"b'12"]), 24827 Let(Var("Rn",F4), 24828 Mop(Cast F4, 24829 LL[bVar"b'19",bVar"b'18", 24830 bVar"b'17",bVar"b'16"]), 24831 Let(Var("opc",F4), 24832 Mop(Cast F4, 24833 LL[bVar"b'24", 24834 bVar"b'23", 24835 bVar"b'22", 24836 bVar"b'21"]), 24837 Let(TP[bVar"v",qVar"s"], 24838 Apply 24839 (Call 24840 ("Do", 24841 ATy(qTy, 24842 PTy(bTy,qTy)), 24843 TP[Var("cond",F4), 24844 LT]), 24845 qVar"state"), 24846 ITE(bVar"v", 24847 TP[Let(bVar"setflags", 24848 EQ(Mop(Cast 24849 F1, 24850 LL[bVar"b'20"]), 24851 LW(1,1)), 24852 Let(Var("shift_t", 24853 CTy"SRType"), 24854 Call 24855 ("DecodeRegShift", 24856 CTy"SRType", 24857 Mop(Cast 24858 (FTy 2), 24859 LL[bVar"b'6", 24860 bVar"b'5"])), 24861 ITE(Bop(Or, 24862 EQ(Var("opc", 24863 F4), 24864 LW(13, 24865 4)), 24866 EQ(Var("opc", 24867 F4), 24868 LW(15, 24869 4))), 24870 Call 24871 ("Data", 24872 CTy"instruction", 24873 Call 24874 ("ShiftRegister", 24875 CTy"Data", 24876 TP[Bop(Bit, 24877 Var("opc", 24878 F4), 24879 LN 24880 1), 24881 bVar"setflags", 24882 Var("Rd", 24883 F4), 24884 Var("Rm", 24885 F4), 24886 Var("shift_t", 24887 CTy"SRType"), 24888 Var("Rs", 24889 F4)])), 24890 Call 24891 ("Data", 24892 CTy"instruction", 24893 Call 24894 ("RegisterShiftedRegister", 24895 CTy"Data", 24896 TP[Var("opc", 24897 F4), 24898 bVar"setflags", 24899 Var("Rd", 24900 F4), 24901 Var("Rn", 24902 F4), 24903 Var("Rm", 24904 F4), 24905 Var("shift_t", 24906 CTy"SRType"), 24907 Var("Rs", 24908 F4)]))))), 24909 ITE(Bop(Or, 24910 Bop(And, 24911 EQ(Var("Rd", 24912 F4), 24913 LW(15, 24914 4)), 24915 Mop(Not, 24916 EQ(EX(Var("opc", 24917 F4), 24918 LN 24919 3, 24920 LN 24921 2, 24922 FTy 2), 24923 LW(2, 24924 2)))), 24925 Bop(Or, 24926 EQ(Var("Rn", 24927 F4), 24928 LW(15, 24929 4)), 24930 Bop(Or, 24931 EQ(Var("Rm", 24932 F4), 24933 LW(15, 24934 4)), 24935 EQ(Var("Rs", 24936 F4), 24937 LW(15, 24938 4))))), 24939 Apply 24940 (Call 24941 ("DECODE_UNPREDICTABLE", 24942 ATy(qTy, 24943 qTy), 24944 TP[Var("mc", 24945 CTy"MachineCode"), 24946 LS 24947 "RegisterShiftedRegister"]), 24948 qVar"s"), 24949 qVar"s")], 24950 TP[Apply 24951 (Call 24952 ("Skip", 24953 ATy(qTy, 24954 CTy"instruction"), 24955 LU), 24956 qVar"s"), 24957 qVar"s"])))))))), 24958 (Bop(And,Mop(Not,bVar"b'24"), 24959 Bop(And,Mop(Not,bVar"b'23"), 24960 Bop(And,Mop(Not,bVar"b'22"), 24961 Bop(And,bVar"b'7", 24962 Bop(And,Mop(Not,bVar"b'6"), 24963 Bop(And, 24964 Mop(Not,bVar"b'5"), 24965 bVar"b'4")))))), 24966 Let(Var("Rn",F4), 24967 Mop(Cast F4, 24968 LL[bVar"b'3",bVar"b'2",bVar"b'1", 24969 bVar"b'0"]), 24970 Let(Var("Rm",F4), 24971 Mop(Cast F4, 24972 LL[bVar"b'11",bVar"b'10", 24973 bVar"b'9",bVar"b'8"]), 24974 Let(Var("Ra",F4), 24975 Mop(Cast F4, 24976 LL[bVar"b'15",bVar"b'14", 24977 bVar"b'13",bVar"b'12"]), 24978 Let(Var("Rd",F4), 24979 Mop(Cast F4, 24980 LL[bVar"b'19",bVar"b'18", 24981 bVar"b'17",bVar"b'16"]), 24982 Let(Var("A",F1), 24983 Mop(Cast F1,LL[bVar"b'21"]), 24984 Let(TP[bVar"v",qVar"s"], 24985 Apply 24986 (Call 24987 ("Do", 24988 ATy(qTy, 24989 PTy(bTy,qTy)), 24990 TP[Var("cond",F4), 24991 LT]), 24992 qVar"state"), 24993 ITE(bVar"v", 24994 TP[Let(bVar"setflags", 24995 EQ(Mop(Cast 24996 F1, 24997 LL[bVar"b'20"]), 24998 LW(1,1)), 24999 ITE(EQ(Var("A", 25000 F1), 25001 LW(1, 25002 1)), 25003 Call 25004 ("Multiply", 25005 CTy"instruction", 25006 Call 25007 ("MultiplyAccumulate", 25008 CTy"Multiply", 25009 TP[bVar"setflags", 25010 Var("Rd", 25011 F4), 25012 Var("Rn", 25013 F4), 25014 Var("Rm", 25015 F4), 25016 Var("Ra", 25017 F4)])), 25018 Call 25019 ("Multiply", 25020 CTy"instruction", 25021 Call 25022 ("Multiply32", 25023 CTy"Multiply", 25024 TP[bVar"setflags", 25025 Var("Rd", 25026 F4), 25027 Var("Rn", 25028 F4), 25029 Var("Rm", 25030 F4)])))), 25031 ITE(Bop(Or, 25032 EQ(Var("Rd", 25033 F4), 25034 LW(15, 25035 4)), 25036 Bop(Or, 25037 EQ(Var("Rn", 25038 F4), 25039 LW(15, 25040 4)), 25041 Bop(Or, 25042 EQ(Var("Rm", 25043 F4), 25044 LW(15, 25045 4)), 25046 Bop(Or, 25047 Bop(And, 25048 EQ(Var("A", 25049 F1), 25050 LW(1, 25051 1)), 25052 EQ(Var("Ra", 25053 F4), 25054 LW(15, 25055 4))), 25056 Bop(And, 25057 Bop(Lt, 25058 Apply 25059 (Call 25060 ("ArchVersion", 25061 ATy(qTy, 25062 nTy), 25063 LU), 25064 qVar"s"), 25065 LN 25066 6), 25067 EQ(Var("Rd", 25068 F4), 25069 Var("Rn", 25070 F4))))))), 25071 Apply 25072 (Call 25073 ("DECODE_UNPREDICTABLE", 25074 ATy(qTy, 25075 qTy), 25076 TP[Var("mc", 25077 CTy"MachineCode"), 25078 LS 25079 "Multiply"]), 25080 qVar"s"), 25081 qVar"s")], 25082 TP[Apply 25083 (Call 25084 ("Skip", 25085 ATy(qTy, 25086 CTy"instruction"), 25087 LU), 25088 qVar"s"), 25089 qVar"s"])))))))), 25090 (Bop(And,Mop(Not,bVar"b'24"), 25091 Bop(And,Mop(Not,bVar"b'23"), 25092 Bop(And,bVar"b'22", 25093 Bop(And,Mop(Not,bVar"b'21"), 25094 Bop(And,Mop(Not,bVar"b'20"), 25095 Bop(And,bVar"b'7", 25096 Bop(And, 25097 Mop(Not,bVar"b'6"), 25098 Bop(And, 25099 Mop(Not, 25100 bVar"b'5"), 25101 bVar"b'4")))))))), 25102 Let(Var("Rn",F4), 25103 Mop(Cast F4, 25104 LL[bVar"b'3",bVar"b'2",bVar"b'1", 25105 bVar"b'0"]), 25106 Let(Var("Rm",F4), 25107 Mop(Cast F4, 25108 LL[bVar"b'11",bVar"b'10", 25109 bVar"b'9",bVar"b'8"]), 25110 Let(Var("RdLo",F4), 25111 Mop(Cast F4, 25112 LL[bVar"b'15",bVar"b'14", 25113 bVar"b'13",bVar"b'12"]), 25114 Let(Var("RdHi",F4), 25115 Mop(Cast F4, 25116 LL[bVar"b'19",bVar"b'18", 25117 bVar"b'17",bVar"b'16"]), 25118 Let(TP[bVar"v",qVar"s"], 25119 Apply 25120 (Call 25121 ("Do", 25122 ATy(qTy,PTy(bTy,qTy)), 25123 TP[Var("cond",F4), 25124 Bop(Ge, 25125 Apply 25126 (Call 25127 ("ArchVersion", 25128 ATy(qTy, 25129 nTy), 25130 LU), 25131 qVar"state"), 25132 LN 6)]), 25133 qVar"state"), 25134 ITE(bVar"v", 25135 TP[Call 25136 ("Multiply", 25137 CTy"instruction", 25138 Call 25139 ("MultiplyAccumulateAccumulate", 25140 CTy"Multiply", 25141 TP[Var("RdHi", 25142 F4), 25143 Var("RdLo", 25144 F4), 25145 Var("Rn", 25146 F4), 25147 Var("Rm", 25148 F4)])), 25149 ITE(Bop(Or, 25150 EQ(Var("RdHi", 25151 F4), 25152 LW(15,4)), 25153 Bop(Or, 25154 EQ(Var("RdLo", 25155 F4), 25156 LW(15, 25157 4)), 25158 Bop(Or, 25159 EQ(Var("Rn", 25160 F4), 25161 LW(15, 25162 4)), 25163 Bop(Or, 25164 EQ(Var("Rm", 25165 F4), 25166 LW(15, 25167 4)), 25168 EQ(Var("RdHi", 25169 F4), 25170 Var("RdLo", 25171 F4)))))), 25172 Apply 25173 (Call 25174 ("DECODE_UNPREDICTABLE", 25175 ATy(qTy, 25176 qTy), 25177 TP[Var("mc", 25178 CTy"MachineCode"), 25179 LS 25180 "MultiplyAccumulateAccumulate"]), 25181 qVar"s"), 25182 qVar"s")], 25183 TP[Apply 25184 (Call 25185 ("Skip", 25186 ATy(qTy, 25187 CTy"instruction"), 25188 LU),qVar"s"), 25189 qVar"s"]))))))), 25190 (Bop(And,Mop(Not,bVar"b'24"), 25191 Bop(And,Mop(Not,bVar"b'23"), 25192 Bop(And,bVar"b'22", 25193 Bop(And,bVar"b'21", 25194 Bop(And,Mop(Not,bVar"b'20"), 25195 Bop(And,bVar"b'7", 25196 Bop(And, 25197 Mop(Not,bVar"b'6"), 25198 Bop(And, 25199 Mop(Not, 25200 bVar"b'5"), 25201 bVar"b'4")))))))), 25202 Let(Var("Rn",F4), 25203 Mop(Cast F4, 25204 LL[bVar"b'3",bVar"b'2",bVar"b'1", 25205 bVar"b'0"]), 25206 Let(Var("Rm",F4), 25207 Mop(Cast F4, 25208 LL[bVar"b'11",bVar"b'10", 25209 bVar"b'9",bVar"b'8"]), 25210 Let(Var("Ra",F4), 25211 Mop(Cast F4, 25212 LL[bVar"b'15",bVar"b'14", 25213 bVar"b'13",bVar"b'12"]), 25214 Let(Var("Rd",F4), 25215 Mop(Cast F4, 25216 LL[bVar"b'19",bVar"b'18", 25217 bVar"b'17",bVar"b'16"]), 25218 Let(TP[bVar"v",qVar"s"], 25219 Apply 25220 (Call 25221 ("Do", 25222 ATy(qTy,PTy(bTy,qTy)), 25223 TP[Var("cond",F4), 25224 Apply 25225 (Call 25226 ("HaveThumb2", 25227 ATy(qTy,bTy), 25228 LU), 25229 qVar"state")]), 25230 qVar"state"), 25231 ITE(bVar"v", 25232 TP[Call 25233 ("Multiply", 25234 CTy"instruction", 25235 Call 25236 ("MultiplySubtract", 25237 CTy"Multiply", 25238 TP[Var("Rd", 25239 F4), 25240 Var("Rn", 25241 F4), 25242 Var("Rm", 25243 F4), 25244 Var("Ra", 25245 F4)])), 25246 ITE(Bop(Or, 25247 EQ(Var("Rd", 25248 F4), 25249 LW(15,4)), 25250 Bop(Or, 25251 EQ(Var("Rn", 25252 F4), 25253 LW(15, 25254 4)), 25255 Bop(Or, 25256 EQ(Var("Rm", 25257 F4), 25258 LW(15, 25259 4)), 25260 EQ(Var("Ra", 25261 F4), 25262 LW(15, 25263 4))))), 25264 Apply 25265 (Call 25266 ("DECODE_UNPREDICTABLE", 25267 ATy(qTy, 25268 qTy), 25269 TP[Var("mc", 25270 CTy"MachineCode"), 25271 LS 25272 "MultiplySubtract"]), 25273 qVar"s"), 25274 qVar"s")], 25275 TP[Apply 25276 (Call 25277 ("Skip", 25278 ATy(qTy, 25279 CTy"instruction"), 25280 LU),qVar"s"), 25281 qVar"s"]))))))), 25282 (Bop(And,Mop(Not,bVar"b'24"), 25283 Bop(And,bVar"b'23", 25284 Bop(And,bVar"b'7", 25285 Bop(And,Mop(Not,bVar"b'6"), 25286 Bop(And,Mop(Not,bVar"b'5"), 25287 bVar"b'4"))))), 25288 Let(Var("Rn",F4), 25289 Mop(Cast F4, 25290 LL[bVar"b'3",bVar"b'2",bVar"b'1", 25291 bVar"b'0"]), 25292 Let(Var("Rm",F4), 25293 Mop(Cast F4, 25294 LL[bVar"b'11",bVar"b'10", 25295 bVar"b'9",bVar"b'8"]), 25296 Let(Var("RdLo",F4), 25297 Mop(Cast F4, 25298 LL[bVar"b'15",bVar"b'14", 25299 bVar"b'13",bVar"b'12"]), 25300 Let(Var("RdHi",F4), 25301 Mop(Cast F4, 25302 LL[bVar"b'19",bVar"b'18", 25303 bVar"b'17",bVar"b'16"]), 25304 Let(TP[bVar"v",qVar"s"], 25305 Apply 25306 (Call 25307 ("Do", 25308 ATy(qTy,PTy(bTy,qTy)), 25309 TP[Var("cond",F4),LT]), 25310 qVar"state"), 25311 ITE(bVar"v", 25312 TP[Call 25313 ("Multiply", 25314 CTy"instruction", 25315 Call 25316 ("MultiplyLong", 25317 CTy"Multiply", 25318 TP[EQ(Mop(Cast 25319 F1, 25320 LL[bVar"b'21"]), 25321 LW(1,1)), 25322 EQ(Mop(Cast 25323 F1, 25324 LL[bVar"b'22"]), 25325 LW(1,1)), 25326 EQ(Mop(Cast 25327 F1, 25328 LL[bVar"b'20"]), 25329 LW(1,1)), 25330 Var("RdHi", 25331 F4), 25332 Var("RdLo", 25333 F4), 25334 Var("Rn", 25335 F4), 25336 Var("Rm", 25337 F4)])), 25338 ITE(Bop(Or, 25339 EQ(Var("RdLo", 25340 F4), 25341 LW(15,4)), 25342 Bop(Or, 25343 EQ(Var("RdHi", 25344 F4), 25345 LW(15, 25346 4)), 25347 Bop(Or, 25348 EQ(Var("Rn", 25349 F4), 25350 LW(15, 25351 4)), 25352 Bop(Or, 25353 EQ(Var("Rm", 25354 F4), 25355 LW(15, 25356 4)), 25357 Bop(Or, 25358 EQ(Var("RdHi", 25359 F4), 25360 Var("RdLo", 25361 F4)), 25362 Bop(And, 25363 Bop(Lt, 25364 Apply 25365 (Call 25366 ("ArchVersion", 25367 ATy(qTy, 25368 nTy), 25369 LU), 25370 qVar"s"), 25371 LN 25372 6), 25373 Bop(Or, 25374 EQ(Var("RdHi", 25375 F4), 25376 Var("Rn", 25377 F4)), 25378 EQ(Var("RdLo", 25379 F4), 25380 Var("Rn", 25381 F4))))))))), 25382 Apply 25383 (Call 25384 ("DECODE_UNPREDICTABLE", 25385 ATy(qTy, 25386 qTy), 25387 TP[Var("mc", 25388 CTy"MachineCode"), 25389 LS 25390 "MultiplyLong"]), 25391 qVar"s"), 25392 qVar"s")], 25393 TP[Apply 25394 (Call 25395 ("Skip", 25396 ATy(qTy, 25397 CTy"instruction"), 25398 LU),qVar"s"), 25399 qVar"s"]))))))), 25400 (Bop(And,bVar"b'24", 25401 Bop(And,Mop(Not,bVar"b'23"), 25402 Bop(And,Mop(Not,bVar"b'21"), 25403 Bop(And,Mop(Not,bVar"b'20"), 25404 Bop(And,bVar"b'7", 25405 Bop(And, 25406 Mop(Not,bVar"b'6"), 25407 Bop(And, 25408 Mop(Not,bVar"b'5"), 25409 bVar"b'4"))))))), 25410 Let(Var("Rt2",F4), 25411 Mop(Cast F4, 25412 LL[bVar"b'3",bVar"b'2",bVar"b'1", 25413 bVar"b'0"]), 25414 Let(Var("Rt",F4), 25415 Mop(Cast F4, 25416 LL[bVar"b'15",bVar"b'14", 25417 bVar"b'13",bVar"b'12"]), 25418 Let(Var("Rn",F4), 25419 Mop(Cast F4, 25420 LL[bVar"b'19",bVar"b'18", 25421 bVar"b'17",bVar"b'16"]), 25422 Let(TP[bVar"v",qVar"s"], 25423 Apply 25424 (Call 25425 ("Do", 25426 ATy(qTy,PTy(bTy,qTy)), 25427 TP[Var("cond",F4),LT]), 25428 qVar"state"), 25429 ITE(bVar"v", 25430 TP[Call 25431 ("Swap", 25432 CTy"instruction", 25433 TP[EQ(Mop(Cast F1, 25434 LL[bVar"b'22"]), 25435 LW(1,1)), 25436 Var("Rt",F4), 25437 Var("Rt2",F4), 25438 Var("Rn",F4)]), 25439 ITE(Bop(Or, 25440 EQ(Var("Rt",F4), 25441 LW(15,4)), 25442 Bop(Or, 25443 EQ(Var("Rt2", 25444 F4), 25445 LW(15,4)), 25446 Bop(Or, 25447 EQ(Var("Rn", 25448 F4), 25449 LW(15, 25450 4)), 25451 Bop(Or, 25452 EQ(Var("Rn", 25453 F4), 25454 Var("Rt", 25455 F4)), 25456 Bop(Or, 25457 EQ(Var("Rn", 25458 F4), 25459 Var("Rt2", 25460 F4)), 25461 Mop(Not, 25462 EQ(Mop(Cast 25463 F4, 25464 LL[bVar"b'11", 25465 bVar"b'10", 25466 bVar"b'9", 25467 bVar"b'8"]), 25468 LW(0, 25469 4)))))))), 25470 Apply 25471 (Call 25472 ("DECODE_UNPREDICTABLE", 25473 ATy(qTy,qTy), 25474 TP[Var("mc", 25475 CTy"MachineCode"), 25476 LS"Swap"]), 25477 qVar"s"),qVar"s")], 25478 TP[Apply 25479 (Call 25480 ("Skip", 25481 ATy(qTy, 25482 CTy"instruction"), 25483 LU),qVar"s"), 25484 qVar"s"])))))), 25485 (Bop(And,bVar"b'24", 25486 Bop(And,bVar"b'23", 25487 Bop(And,Mop(Not,bVar"b'22"), 25488 Bop(And,Mop(Not,bVar"b'21"), 25489 Bop(And,Mop(Not,bVar"b'20"), 25490 Bop(And,bVar"b'7", 25491 Bop(And, 25492 Mop(Not,bVar"b'6"), 25493 Bop(And, 25494 Mop(Not, 25495 bVar"b'5"), 25496 bVar"b'4")))))))), 25497 Let(Var("Rt",F4), 25498 Mop(Cast F4, 25499 LL[bVar"b'3",bVar"b'2",bVar"b'1", 25500 bVar"b'0"]), 25501 Let(Var("Rd",F4), 25502 Mop(Cast F4, 25503 LL[bVar"b'15",bVar"b'14", 25504 bVar"b'13",bVar"b'12"]), 25505 Let(Var("Rn",F4), 25506 Mop(Cast F4, 25507 LL[bVar"b'19",bVar"b'18", 25508 bVar"b'17",bVar"b'16"]), 25509 Let(TP[bVar"v",qVar"s"], 25510 Apply 25511 (Call 25512 ("Do", 25513 ATy(qTy,PTy(bTy,qTy)), 25514 TP[Var("cond",F4), 25515 Bop(Ge, 25516 Apply 25517 (Call 25518 ("ArchVersion", 25519 ATy(qTy,nTy), 25520 LU), 25521 qVar"state"), 25522 LN 6)]), 25523 qVar"state"), 25524 ITE(bVar"v", 25525 TP[Call 25526 ("Store", 25527 CTy"instruction", 25528 Call 25529 ("StoreExclusive", 25530 CTy"Store", 25531 TP[Var("Rd",F4), 25532 Var("Rt",F4), 25533 Var("Rn",F4), 25534 LW(0,32)])), 25535 ITE(Bop(Or, 25536 EQ(Var("Rd",F4), 25537 LW(15,4)), 25538 Bop(Or, 25539 EQ(Var("Rt", 25540 F4), 25541 LW(15,4)), 25542 Bop(Or, 25543 EQ(Var("Rn", 25544 F4), 25545 LW(15, 25546 4)), 25547 Bop(Or, 25548 EQ(Var("Rd", 25549 F4), 25550 Var("Rn", 25551 F4)), 25552 Bop(Or, 25553 EQ(Var("Rd", 25554 F4), 25555 Var("Rt", 25556 F4)), 25557 Mop(Not, 25558 EQ(Mop(Cast 25559 F4, 25560 LL[bVar"b'11", 25561 bVar"b'10", 25562 bVar"b'9", 25563 bVar"b'8"]), 25564 LW(15, 25565 4)))))))), 25566 Apply 25567 (Call 25568 ("DECODE_UNPREDICTABLE", 25569 ATy(qTy,qTy), 25570 TP[Var("mc", 25571 CTy"MachineCode"), 25572 LS 25573 "StoreExclusive"]), 25574 qVar"s"),qVar"s")], 25575 TP[Apply 25576 (Call 25577 ("Skip", 25578 ATy(qTy, 25579 CTy"instruction"), 25580 LU),qVar"s"), 25581 qVar"s"])))))), 25582 (Bop(And,bVar"b'24", 25583 Bop(And,bVar"b'23", 25584 Bop(And,Mop(Not,bVar"b'22"), 25585 Bop(And,Mop(Not,bVar"b'21"), 25586 Bop(And,bVar"b'20", 25587 Bop(And,bVar"b'7", 25588 Bop(And, 25589 Mop(Not,bVar"b'6"), 25590 Bop(And, 25591 Mop(Not, 25592 bVar"b'5"), 25593 bVar"b'4")))))))), 25594 Let(Var("Rt",F4), 25595 Mop(Cast F4, 25596 LL[bVar"b'15",bVar"b'14",bVar"b'13", 25597 bVar"b'12"]), 25598 Let(Var("Rn",F4), 25599 Mop(Cast F4, 25600 LL[bVar"b'19",bVar"b'18", 25601 bVar"b'17",bVar"b'16"]), 25602 Let(TP[bVar"v",qVar"s"], 25603 Apply 25604 (Call 25605 ("Do",ATy(qTy,PTy(bTy,qTy)), 25606 TP[Var("cond",F4), 25607 Bop(Ge, 25608 Apply 25609 (Call 25610 ("ArchVersion", 25611 ATy(qTy,nTy),LU), 25612 qVar"state"),LN 6)]), 25613 qVar"state"), 25614 ITE(bVar"v", 25615 TP[Call 25616 ("Load",CTy"instruction", 25617 Call 25618 ("LoadExclusive", 25619 CTy"Load", 25620 TP[Var("Rt",F4), 25621 Var("Rn",F4), 25622 LW(0,32)])), 25623 ITE(Bop(Or, 25624 EQ(Var("Rt",F4), 25625 LW(15,4)), 25626 Bop(Or, 25627 EQ(Var("Rn",F4), 25628 LW(15,4)), 25629 Mop(Not, 25630 Bop(And, 25631 EQ(Mop(Cast 25632 F4, 25633 LL[bVar"b'11", 25634 bVar"b'10", 25635 bVar"b'9", 25636 bVar"b'8"]), 25637 LW(15, 25638 4)), 25639 EQ(Mop(Cast 25640 F4, 25641 LL[bVar"b'3", 25642 bVar"b'2", 25643 bVar"b'1", 25644 bVar"b'0"]), 25645 LW(15, 25646 4)))))), 25647 Apply 25648 (Call 25649 ("DECODE_UNPREDICTABLE", 25650 ATy(qTy,qTy), 25651 TP[Var("mc", 25652 CTy"MachineCode"), 25653 LS 25654 "LoadExclusive"]), 25655 qVar"s"),qVar"s")], 25656 TP[Apply 25657 (Call 25658 ("Skip", 25659 ATy(qTy, 25660 CTy"instruction"), 25661 LU),qVar"s"),qVar"s"]))))), 25662 (Bop(And,bVar"b'24", 25663 Bop(And,bVar"b'23", 25664 Bop(And,Mop(Not,bVar"b'22"), 25665 Bop(And,bVar"b'21", 25666 Bop(And,Mop(Not,bVar"b'20"), 25667 Bop(And,bVar"b'7", 25668 Bop(And, 25669 Mop(Not,bVar"b'6"), 25670 Bop(And, 25671 Mop(Not, 25672 bVar"b'5"), 25673 bVar"b'4")))))))), 25674 Let(Var("Rt",F4), 25675 Mop(Cast F4, 25676 LL[bVar"b'3",bVar"b'2",bVar"b'1", 25677 bVar"b'0"]), 25678 Let(Var("Rd",F4), 25679 Mop(Cast F4, 25680 LL[bVar"b'15",bVar"b'14", 25681 bVar"b'13",bVar"b'12"]), 25682 Let(Var("Rn",F4), 25683 Mop(Cast F4, 25684 LL[bVar"b'19",bVar"b'18", 25685 bVar"b'17",bVar"b'16"]), 25686 Let(TP[bVar"v",qVar"s"], 25687 Apply 25688 (Call 25689 ("Do", 25690 ATy(qTy,PTy(bTy,qTy)), 25691 TP[Var("cond",F4), 25692 Bop(In, 25693 Dest 25694 ("Architecture", 25695 CTy"Architecture", 25696 qVar"state"), 25697 SL[LC("ARMv6K", 25698 CTy"Architecture"), 25699 LC("ARMv7_A", 25700 CTy"Architecture"), 25701 LC("ARMv7_R", 25702 CTy"Architecture")])]), 25703 qVar"state"), 25704 ITE(bVar"v", 25705 Let(Var("Rt2",F4), 25706 Bop(Add,Var("Rt",F4), 25707 LW(1,4)), 25708 TP[Call 25709 ("Store", 25710 CTy"instruction", 25711 Call 25712 ("StoreExclusiveDoubleword", 25713 CTy"Store", 25714 TP[Var("Rd", 25715 F4), 25716 Var("Rt", 25717 F4), 25718 Var("Rt2", 25719 F4), 25720 Var("Rn", 25721 F4)])), 25722 ITE(Bop(Or, 25723 EQ(Var("Rd", 25724 F4), 25725 LW(15,4)), 25726 Bop(Or, 25727 Bop(Bit, 25728 Var("Rt", 25729 F4), 25730 LN 25731 0), 25732 Bop(Or, 25733 EQ(Var("Rt", 25734 F4), 25735 LW(14, 25736 4)), 25737 Bop(Or, 25738 EQ(Var("Rn", 25739 F4), 25740 LW(15, 25741 4)), 25742 Bop(Or, 25743 EQ(Var("Rd", 25744 F4), 25745 Var("Rn", 25746 F4)), 25747 Bop(Or, 25748 EQ(Var("Rd", 25749 F4), 25750 Var("Rt", 25751 F4)), 25752 Bop(Or, 25753 EQ(Var("Rd", 25754 F4), 25755 Var("Rt2", 25756 F4)), 25757 Mop(Not, 25758 EQ(Mop(Cast 25759 F4, 25760 LL[bVar"b'11", 25761 bVar"b'10", 25762 bVar"b'9", 25763 bVar"b'8"]), 25764 LW(15, 25765 4)))))))))), 25766 Apply 25767 (Call 25768 ("DECODE_UNPREDICTABLE", 25769 ATy(qTy, 25770 qTy), 25771 TP[Var("mc", 25772 CTy"MachineCode"), 25773 LS 25774 "StoreExclusiveDoubleword"]), 25775 qVar"s"), 25776 qVar"s")]), 25777 TP[Apply 25778 (Call 25779 ("Skip", 25780 ATy(qTy, 25781 CTy"instruction"), 25782 LU),qVar"s"), 25783 qVar"s"])))))), 25784 (Bop(And,bVar"b'24", 25785 Bop(And,bVar"b'23", 25786 Bop(And,Mop(Not,bVar"b'22"), 25787 Bop(And,bVar"b'21", 25788 Bop(And,bVar"b'20", 25789 Bop(And,bVar"b'7", 25790 Bop(And, 25791 Mop(Not,bVar"b'6"), 25792 Bop(And, 25793 Mop(Not, 25794 bVar"b'5"), 25795 bVar"b'4")))))))), 25796 Let(Var("Rt",F4), 25797 Mop(Cast F4, 25798 LL[bVar"b'15",bVar"b'14",bVar"b'13", 25799 bVar"b'12"]), 25800 Let(Var("Rn",F4), 25801 Mop(Cast F4, 25802 LL[bVar"b'19",bVar"b'18", 25803 bVar"b'17",bVar"b'16"]), 25804 Let(TP[bVar"v",qVar"s"], 25805 Apply 25806 (Call 25807 ("Do",ATy(qTy,PTy(bTy,qTy)), 25808 TP[Var("cond",F4), 25809 Bop(In, 25810 Dest 25811 ("Architecture", 25812 CTy"Architecture", 25813 qVar"state"), 25814 SL[LC("ARMv6K", 25815 CTy"Architecture"), 25816 LC("ARMv7_A", 25817 CTy"Architecture"), 25818 LC("ARMv7_R", 25819 CTy"Architecture")])]), 25820 qVar"state"), 25821 ITE(bVar"v", 25822 TP[Call 25823 ("Load",CTy"instruction", 25824 Call 25825 ("LoadExclusiveDoubleword", 25826 CTy"Load", 25827 TP[Var("Rt",F4), 25828 Bop(Add, 25829 Var("Rt",F4), 25830 LW(1,4)), 25831 Var("Rn",F4)])), 25832 ITE(Bop(Or, 25833 Bop(Bit, 25834 Var("Rt",F4), 25835 LN 0), 25836 Bop(Or, 25837 EQ(Var("Rt",F4), 25838 LW(14,4)), 25839 Bop(Or, 25840 EQ(Var("Rn", 25841 F4), 25842 LW(15,4)), 25843 Mop(Not, 25844 Bop(And, 25845 EQ(Mop(Cast 25846 F4, 25847 LL[bVar"b'11", 25848 bVar"b'10", 25849 bVar"b'9", 25850 bVar"b'8"]), 25851 LW(15, 25852 4)), 25853 EQ(Mop(Cast 25854 F4, 25855 LL[bVar"b'3", 25856 bVar"b'2", 25857 bVar"b'1", 25858 bVar"b'0"]), 25859 LW(15, 25860 4))))))), 25861 Apply 25862 (Call 25863 ("DECODE_UNPREDICTABLE", 25864 ATy(qTy,qTy), 25865 TP[Var("mc", 25866 CTy"MachineCode"), 25867 LS 25868 "LoadExclusiveDoubleword"]), 25869 qVar"s"),qVar"s")], 25870 TP[Apply 25871 (Call 25872 ("Skip", 25873 ATy(qTy, 25874 CTy"instruction"), 25875 LU),qVar"s"),qVar"s"]))))), 25876 (Bop(And,bVar"b'24", 25877 Bop(And,bVar"b'23", 25878 Bop(And,bVar"b'22", 25879 Bop(And,Mop(Not,bVar"b'21"), 25880 Bop(And,Mop(Not,bVar"b'20"), 25881 Bop(And,bVar"b'7", 25882 Bop(And, 25883 Mop(Not,bVar"b'6"), 25884 Bop(And, 25885 Mop(Not, 25886 bVar"b'5"), 25887 bVar"b'4")))))))), 25888 Let(Var("Rt",F4), 25889 Mop(Cast F4, 25890 LL[bVar"b'3",bVar"b'2",bVar"b'1", 25891 bVar"b'0"]), 25892 Let(Var("Rd",F4), 25893 Mop(Cast F4, 25894 LL[bVar"b'15",bVar"b'14", 25895 bVar"b'13",bVar"b'12"]), 25896 Let(Var("Rn",F4), 25897 Mop(Cast F4, 25898 LL[bVar"b'19",bVar"b'18", 25899 bVar"b'17",bVar"b'16"]), 25900 Let(TP[bVar"v",qVar"s"], 25901 Apply 25902 (Call 25903 ("Do", 25904 ATy(qTy,PTy(bTy,qTy)), 25905 TP[Var("cond",F4), 25906 Bop(In, 25907 Dest 25908 ("Architecture", 25909 CTy"Architecture", 25910 qVar"state"), 25911 SL[LC("ARMv6K", 25912 CTy"Architecture"), 25913 LC("ARMv7_A", 25914 CTy"Architecture"), 25915 LC("ARMv7_R", 25916 CTy"Architecture")])]), 25917 qVar"state"), 25918 ITE(bVar"v", 25919 TP[Call 25920 ("Store", 25921 CTy"instruction", 25922 Call 25923 ("StoreExclusiveByte", 25924 CTy"Store", 25925 TP[Var("Rd",F4), 25926 Var("Rt",F4), 25927 Var("Rn",F4)])), 25928 ITE(Bop(Or, 25929 EQ(Var("Rd",F4), 25930 LW(15,4)), 25931 Bop(Or, 25932 EQ(Var("Rt", 25933 F4), 25934 LW(15,4)), 25935 Bop(Or, 25936 EQ(Var("Rn", 25937 F4), 25938 LW(15, 25939 4)), 25940 Bop(Or, 25941 EQ(Var("Rd", 25942 F4), 25943 Var("Rn", 25944 F4)), 25945 Bop(Or, 25946 EQ(Var("Rd", 25947 F4), 25948 Var("Rt", 25949 F4)), 25950 Mop(Not, 25951 EQ(Mop(Cast 25952 F4, 25953 LL[bVar"b'11", 25954 bVar"b'10", 25955 bVar"b'9", 25956 bVar"b'8"]), 25957 LW(15, 25958 4)))))))), 25959 Apply 25960 (Call 25961 ("DECODE_UNPREDICTABLE", 25962 ATy(qTy,qTy), 25963 TP[Var("mc", 25964 CTy"MachineCode"), 25965 LS 25966 "StoreExclusiveByte"]), 25967 qVar"s"),qVar"s")], 25968 TP[Apply 25969 (Call 25970 ("Skip", 25971 ATy(qTy, 25972 CTy"instruction"), 25973 LU),qVar"s"), 25974 qVar"s"])))))), 25975 (Bop(And,bVar"b'24", 25976 Bop(And,bVar"b'23", 25977 Bop(And,bVar"b'22", 25978 Bop(And,Mop(Not,bVar"b'21"), 25979 Bop(And,bVar"b'20", 25980 Bop(And,bVar"b'7", 25981 Bop(And, 25982 Mop(Not,bVar"b'6"), 25983 Bop(And, 25984 Mop(Not, 25985 bVar"b'5"), 25986 bVar"b'4")))))))), 25987 Let(Var("Rt",F4), 25988 Mop(Cast F4, 25989 LL[bVar"b'15",bVar"b'14",bVar"b'13", 25990 bVar"b'12"]), 25991 Let(Var("Rn",F4), 25992 Mop(Cast F4, 25993 LL[bVar"b'19",bVar"b'18", 25994 bVar"b'17",bVar"b'16"]), 25995 Let(TP[bVar"v",qVar"s"], 25996 Apply 25997 (Call 25998 ("Do",ATy(qTy,PTy(bTy,qTy)), 25999 TP[Var("cond",F4), 26000 Bop(In, 26001 Dest 26002 ("Architecture", 26003 CTy"Architecture", 26004 qVar"state"), 26005 SL[LC("ARMv6K", 26006 CTy"Architecture"), 26007 LC("ARMv7_A", 26008 CTy"Architecture"), 26009 LC("ARMv7_R", 26010 CTy"Architecture")])]), 26011 qVar"state"), 26012 ITE(bVar"v", 26013 TP[Call 26014 ("Load",CTy"instruction", 26015 Call 26016 ("LoadExclusiveByte", 26017 CTy"Load", 26018 TP[Var("Rt",F4), 26019 Var("Rn",F4)])), 26020 ITE(Bop(Or, 26021 EQ(Var("Rt",F4), 26022 LW(15,4)), 26023 Bop(Or, 26024 EQ(Var("Rn",F4), 26025 LW(15,4)), 26026 Mop(Not, 26027 Bop(And, 26028 EQ(Mop(Cast 26029 F4, 26030 LL[bVar"b'11", 26031 bVar"b'10", 26032 bVar"b'9", 26033 bVar"b'8"]), 26034 LW(15, 26035 4)), 26036 EQ(Mop(Cast 26037 F4, 26038 LL[bVar"b'3", 26039 bVar"b'2", 26040 bVar"b'1", 26041 bVar"b'0"]), 26042 LW(15, 26043 4)))))), 26044 Apply 26045 (Call 26046 ("DECODE_UNPREDICTABLE", 26047 ATy(qTy,qTy), 26048 TP[Var("mc", 26049 CTy"MachineCode"), 26050 LS 26051 "LoadExclusiveByte"]), 26052 qVar"s"),qVar"s")], 26053 TP[Apply 26054 (Call 26055 ("Skip", 26056 ATy(qTy, 26057 CTy"instruction"), 26058 LU),qVar"s"),qVar"s"]))))), 26059 (Bop(And,bVar"b'24", 26060 Bop(And,bVar"b'23", 26061 Bop(And,bVar"b'22", 26062 Bop(And,bVar"b'21", 26063 Bop(And,Mop(Not,bVar"b'20"), 26064 Bop(And,bVar"b'7", 26065 Bop(And, 26066 Mop(Not,bVar"b'6"), 26067 Bop(And, 26068 Mop(Not, 26069 bVar"b'5"), 26070 bVar"b'4")))))))), 26071 Let(Var("Rt",F4), 26072 Mop(Cast F4, 26073 LL[bVar"b'3",bVar"b'2",bVar"b'1", 26074 bVar"b'0"]), 26075 Let(Var("Rd",F4), 26076 Mop(Cast F4, 26077 LL[bVar"b'15",bVar"b'14", 26078 bVar"b'13",bVar"b'12"]), 26079 Let(Var("Rn",F4), 26080 Mop(Cast F4, 26081 LL[bVar"b'19",bVar"b'18", 26082 bVar"b'17",bVar"b'16"]), 26083 Let(TP[bVar"v",qVar"s"], 26084 Apply 26085 (Call 26086 ("Do", 26087 ATy(qTy,PTy(bTy,qTy)), 26088 TP[Var("cond",F4), 26089 Bop(In, 26090 Dest 26091 ("Architecture", 26092 CTy"Architecture", 26093 qVar"state"), 26094 SL[LC("ARMv6K", 26095 CTy"Architecture"), 26096 LC("ARMv7_A", 26097 CTy"Architecture"), 26098 LC("ARMv7_R", 26099 CTy"Architecture")])]), 26100 qVar"state"), 26101 ITE(bVar"v", 26102 TP[Call 26103 ("Store", 26104 CTy"instruction", 26105 Call 26106 ("StoreExclusiveHalf", 26107 CTy"Store", 26108 TP[Var("Rd",F4), 26109 Var("Rt",F4), 26110 Var("Rn",F4)])), 26111 ITE(Bop(Or, 26112 EQ(Var("Rd",F4), 26113 LW(15,4)), 26114 Bop(Or, 26115 EQ(Var("Rt", 26116 F4), 26117 LW(15,4)), 26118 Bop(Or, 26119 EQ(Var("Rn", 26120 F4), 26121 LW(15, 26122 4)), 26123 Bop(Or, 26124 EQ(Var("Rd", 26125 F4), 26126 Var("Rn", 26127 F4)), 26128 Bop(Or, 26129 EQ(Var("Rd", 26130 F4), 26131 Var("Rt", 26132 F4)), 26133 Mop(Not, 26134 EQ(Mop(Cast 26135 F4, 26136 LL[bVar"b'11", 26137 bVar"b'10", 26138 bVar"b'9", 26139 bVar"b'8"]), 26140 LW(15, 26141 4)))))))), 26142 Apply 26143 (Call 26144 ("DECODE_UNPREDICTABLE", 26145 ATy(qTy,qTy), 26146 TP[Var("mc", 26147 CTy"MachineCode"), 26148 LS 26149 "StoreExclusiveHalf"]), 26150 qVar"s"),qVar"s")], 26151 TP[Apply 26152 (Call 26153 ("Skip", 26154 ATy(qTy, 26155 CTy"instruction"), 26156 LU),qVar"s"), 26157 qVar"s"])))))), 26158 (Bop(And,bVar"b'24", 26159 Bop(And,bVar"b'23", 26160 Bop(And,bVar"b'22", 26161 Bop(And,bVar"b'21", 26162 Bop(And,bVar"b'20", 26163 Bop(And,bVar"b'7", 26164 Bop(And, 26165 Mop(Not,bVar"b'6"), 26166 Bop(And, 26167 Mop(Not, 26168 bVar"b'5"), 26169 bVar"b'4")))))))), 26170 Let(Var("Rt",F4), 26171 Mop(Cast F4, 26172 LL[bVar"b'15",bVar"b'14",bVar"b'13", 26173 bVar"b'12"]), 26174 Let(Var("Rn",F4), 26175 Mop(Cast F4, 26176 LL[bVar"b'19",bVar"b'18", 26177 bVar"b'17",bVar"b'16"]), 26178 Let(TP[bVar"v",qVar"s"], 26179 Apply 26180 (Call 26181 ("Do",ATy(qTy,PTy(bTy,qTy)), 26182 TP[Var("cond",F4), 26183 Bop(In, 26184 Dest 26185 ("Architecture", 26186 CTy"Architecture", 26187 qVar"state"), 26188 SL[LC("ARMv6K", 26189 CTy"Architecture"), 26190 LC("ARMv7_A", 26191 CTy"Architecture"), 26192 LC("ARMv7_R", 26193 CTy"Architecture")])]), 26194 qVar"state"), 26195 ITE(bVar"v", 26196 TP[Call 26197 ("Load",CTy"instruction", 26198 Call 26199 ("LoadExclusiveHalf", 26200 CTy"Load", 26201 TP[Var("Rt",F4), 26202 Var("Rn",F4)])), 26203 ITE(Bop(Or, 26204 EQ(Var("Rt",F4), 26205 LW(15,4)), 26206 Bop(Or, 26207 EQ(Var("Rn",F4), 26208 LW(15,4)), 26209 Mop(Not, 26210 Bop(And, 26211 EQ(Mop(Cast 26212 F4, 26213 LL[bVar"b'11", 26214 bVar"b'10", 26215 bVar"b'9", 26216 bVar"b'8"]), 26217 LW(15, 26218 4)), 26219 EQ(Mop(Cast 26220 F4, 26221 LL[bVar"b'3", 26222 bVar"b'2", 26223 bVar"b'1", 26224 bVar"b'0"]), 26225 LW(15, 26226 4)))))), 26227 Apply 26228 (Call 26229 ("DECODE_UNPREDICTABLE", 26230 ATy(qTy,qTy), 26231 TP[Var("mc", 26232 CTy"MachineCode"), 26233 LS 26234 "LoadExclusiveHalf"]), 26235 qVar"s"),qVar"s")], 26236 TP[Apply 26237 (Call 26238 ("Skip", 26239 ATy(qTy, 26240 CTy"instruction"), 26241 LU),qVar"s"),qVar"s"]))))), 26242 (Bop(And,Mop(Not,bVar"b'24"), 26243 Bop(And,Mop(Not,bVar"b'22"), 26244 Bop(And,bVar"b'21", 26245 Bop(And,Mop(Not,bVar"b'20"), 26246 Bop(And,bVar"b'7", 26247 Bop(And, 26248 Mop(Not,bVar"b'6"), 26249 Bop(And,bVar"b'5", 26250 bVar"b'4"))))))), 26251 Let(Var("Rm",F4), 26252 Mop(Cast F4, 26253 LL[bVar"b'3",bVar"b'2",bVar"b'1", 26254 bVar"b'0"]), 26255 Let(Var("Rt",F4), 26256 Mop(Cast F4, 26257 LL[bVar"b'15",bVar"b'14", 26258 bVar"b'13",bVar"b'12"]), 26259 Let(Var("Rn",F4), 26260 Mop(Cast F4, 26261 LL[bVar"b'19",bVar"b'18", 26262 bVar"b'17",bVar"b'16"]), 26263 Let(TP[bVar"v",qVar"s"], 26264 Apply 26265 (Call 26266 ("Do", 26267 ATy(qTy,PTy(bTy,qTy)), 26268 TP[Var("cond",F4), 26269 Apply 26270 (Call 26271 ("HaveThumb2", 26272 ATy(qTy,bTy),LU), 26273 qVar"state")]), 26274 qVar"state"), 26275 ITE(bVar"v", 26276 TP[Call 26277 ("Store", 26278 CTy"instruction", 26279 Call 26280 ("StoreHalfUnprivileged", 26281 CTy"Store", 26282 TP[EQ(Mop(Cast F1, 26283 LL[bVar"b'23"]), 26284 LW(1,1)), 26285 LT, 26286 Var("Rt",F4), 26287 Var("Rn",F4), 26288 Call 26289 ("register_form2", 26290 CTy"offset2", 26291 Var("Rm",F4))])), 26292 ITE(Bop(Or, 26293 EQ(Var("Rt",F4), 26294 LW(15,4)), 26295 Bop(Or, 26296 EQ(Var("Rn", 26297 F4), 26298 LW(15,4)), 26299 Bop(Or, 26300 EQ(Var("Rn", 26301 F4), 26302 Var("Rt", 26303 F4)), 26304 Bop(Or, 26305 EQ(Var("Rm", 26306 F4), 26307 LW(15, 26308 4)), 26309 Mop(Not, 26310 EQ(Mop(Cast 26311 F4, 26312 LL[bVar"b'11", 26313 bVar"b'10", 26314 bVar"b'9", 26315 bVar"b'8"]), 26316 LW(0, 26317 4))))))), 26318 Apply 26319 (Call 26320 ("DECODE_UNPREDICTABLE", 26321 ATy(qTy,qTy), 26322 TP[Var("mc", 26323 CTy"MachineCode"), 26324 LS 26325 "StoreHalfUnprivileged"]), 26326 qVar"s"),qVar"s")], 26327 TP[Apply 26328 (Call 26329 ("Skip", 26330 ATy(qTy, 26331 CTy"instruction"), 26332 LU),qVar"s"), 26333 qVar"s"])))))), 26334 (Bop(And,Mop(Not,bVar"b'22"), 26335 Bop(And,Mop(Not,bVar"b'20"), 26336 Bop(And,bVar"b'7", 26337 Bop(And,Mop(Not,bVar"b'6"), 26338 Bop(And,bVar"b'5",bVar"b'4"))))), 26339 Let(Var("Rm",F4), 26340 Mop(Cast F4, 26341 LL[bVar"b'3",bVar"b'2",bVar"b'1", 26342 bVar"b'0"]), 26343 Let(Var("Rt",F4), 26344 Mop(Cast F4, 26345 LL[bVar"b'15",bVar"b'14", 26346 bVar"b'13",bVar"b'12"]), 26347 Let(Var("Rn",F4), 26348 Mop(Cast F4, 26349 LL[bVar"b'19",bVar"b'18", 26350 bVar"b'17",bVar"b'16"]), 26351 Let(Var("P",F1), 26352 Mop(Cast F1,LL[bVar"b'24"]), 26353 Let(TP[bVar"v",qVar"s"], 26354 Apply 26355 (Call 26356 ("Do", 26357 ATy(qTy,PTy(bTy,qTy)), 26358 TP[Var("cond",F4),LT]), 26359 qVar"state"), 26360 ITE(bVar"v", 26361 Let(bVar"wback", 26362 Bop(Or, 26363 EQ(Var("P",F1), 26364 LW(0,1)), 26365 EQ(Mop(Cast F1, 26366 LL[bVar"b'21"]), 26367 LW(1,1))), 26368 TP[Call 26369 ("Store", 26370 CTy"instruction", 26371 Call 26372 ("StoreHalf", 26373 CTy"Store", 26374 TP[EQ(Mop(Cast 26375 F1, 26376 LL[bVar"b'23"]), 26377 LW(1, 26378 1)), 26379 EQ(Var("P", 26380 F1), 26381 LW(1, 26382 1)), 26383 bVar"wback", 26384 Var("Rt", 26385 F4), 26386 Var("Rn", 26387 F4), 26388 Call 26389 ("register_form1", 26390 CTy"offset1", 26391 TP[Var("Rm", 26392 F4), 26393 LC("SRType_LSL", 26394 CTy"SRType"), 26395 LN 26396 0])])), 26397 ITE(Bop(Or, 26398 EQ(Var("Rt", 26399 F4), 26400 LW(15, 26401 4)), 26402 Bop(Or, 26403 EQ(Var("Rm", 26404 F4), 26405 LW(15, 26406 4)), 26407 Bop(Or, 26408 Bop(And, 26409 bVar"wback", 26410 Bop(Or, 26411 EQ(Var("Rn", 26412 F4), 26413 LW(15, 26414 4)), 26415 EQ(Var("Rn", 26416 F4), 26417 Var("Rt", 26418 F4)))), 26419 Bop(Or, 26420 Bop(And, 26421 Bop(Lt, 26422 Apply 26423 (Call 26424 ("ArchVersion", 26425 ATy(qTy, 26426 nTy), 26427 LU), 26428 qVar"s"), 26429 LN 26430 6), 26431 Bop(And, 26432 bVar"wback", 26433 EQ(Var("Rm", 26434 F4), 26435 Var("Rn", 26436 F4)))), 26437 Mop(Not, 26438 EQ(Mop(Cast 26439 F4, 26440 LL[bVar"b'11", 26441 bVar"b'10", 26442 bVar"b'9", 26443 bVar"b'8"]), 26444 LW(0, 26445 4))))))), 26446 Apply 26447 (Call 26448 ("DECODE_UNPREDICTABLE", 26449 ATy(qTy, 26450 qTy), 26451 TP[Var("mc", 26452 CTy"MachineCode"), 26453 LS 26454 "StoreHalf"]), 26455 qVar"s"), 26456 qVar"s")]), 26457 TP[Apply 26458 (Call 26459 ("Skip", 26460 ATy(qTy, 26461 CTy"instruction"), 26462 LU),qVar"s"), 26463 qVar"s"]))))))), 26464 (Bop(And,Mop(Not,bVar"b'24"), 26465 Bop(And,Mop(Not,bVar"b'22"), 26466 Bop(And,bVar"b'21", 26467 Bop(And,bVar"b'20", 26468 Bop(And,bVar"b'7",bVar"b'4"))))), 26469 Let(Var("Rm",F4), 26470 Mop(Cast F4, 26471 LL[bVar"b'3",bVar"b'2",bVar"b'1", 26472 bVar"b'0"]), 26473 Let(Var("H",F1), 26474 Mop(Cast F1,LL[bVar"b'5"]), 26475 Let(Var("S",F1), 26476 Mop(Cast F1,LL[bVar"b'6"]), 26477 Let(Var("Rt",F4), 26478 Mop(Cast F4, 26479 LL[bVar"b'15",bVar"b'14", 26480 bVar"b'13",bVar"b'12"]), 26481 Let(Var("Rn",F4), 26482 Mop(Cast F4, 26483 LL[bVar"b'19", 26484 bVar"b'18", 26485 bVar"b'17", 26486 bVar"b'16"]), 26487 Let(TP[bVar"v",qVar"s"], 26488 Apply 26489 (Call 26490 ("Do", 26491 ATy(qTy, 26492 PTy(bTy,qTy)), 26493 TP[Var("cond",F4), 26494 Bop(And, 26495 Bop(Or, 26496 Mop(Not, 26497 EQ(Var("H", 26498 F1), 26499 LW(0, 26500 1))), 26501 EQ(Var("S", 26502 F1), 26503 LW(1, 26504 1))), 26505 Apply 26506 (Call 26507 ("HaveThumb2", 26508 ATy(qTy, 26509 bTy), 26510 LU), 26511 qVar"state"))]), 26512 qVar"state"), 26513 ITE(bVar"v", 26514 TP[Let(bVar"add", 26515 EQ(Mop(Cast 26516 F1, 26517 LL[bVar"b'23"]), 26518 LW(1,1)), 26519 Let(Var("m", 26520 CTy"offset2"), 26521 Call 26522 ("register_form2", 26523 CTy"offset2", 26524 Var("Rm", 26525 F4)), 26526 ITE(EQ(Var("H", 26527 F1), 26528 LW(1, 26529 1)), 26530 Call 26531 ("Load", 26532 CTy"instruction", 26533 Call 26534 ("LoadHalfUnprivileged", 26535 CTy"Load", 26536 TP[EQ(Var("S", 26537 F1), 26538 LW(0, 26539 1)), 26540 bVar"add", 26541 LT, 26542 Var("Rt", 26543 F4), 26544 Var("Rn", 26545 F4), 26546 Var("m", 26547 CTy"offset2")])), 26548 Call 26549 ("Load", 26550 CTy"instruction", 26551 Call 26552 ("LoadSignedByteUnprivileged", 26553 CTy"Load", 26554 TP[bVar"add", 26555 LT, 26556 Var("Rt", 26557 F4), 26558 Var("Rn", 26559 F4), 26560 Var("m", 26561 CTy"offset2")]))))), 26562 ITE(Bop(Or, 26563 EQ(Var("Rt", 26564 F4), 26565 LW(15, 26566 4)), 26567 Bop(Or, 26568 EQ(Var("Rn", 26569 F4), 26570 LW(15, 26571 4)), 26572 Bop(Or, 26573 EQ(Var("Rn", 26574 F4), 26575 Var("Rt", 26576 F4)), 26577 Bop(Or, 26578 EQ(Var("Rm", 26579 F4), 26580 LW(15, 26581 4)), 26582 Mop(Not, 26583 EQ(Mop(Cast 26584 F4, 26585 LL[bVar"b'11", 26586 bVar"b'10", 26587 bVar"b'9", 26588 bVar"b'8"]), 26589 LW(0, 26590 4))))))), 26591 Apply 26592 (Call 26593 ("DECODE_UNPREDICTABLE", 26594 ATy(qTy, 26595 qTy), 26596 TP[Var("mc", 26597 CTy"MachineCode"), 26598 LS 26599 "LoadHalf/Byte (unprivileged)"]), 26600 qVar"s"), 26601 qVar"s")], 26602 TP[Apply 26603 (Call 26604 ("Skip", 26605 ATy(qTy, 26606 CTy"instruction"), 26607 LU), 26608 qVar"s"), 26609 qVar"s"])))))))), 26610 (Bop(And,Mop(Not,bVar"b'22"), 26611 Bop(And,bVar"b'20", 26612 Bop(And,bVar"b'7",bVar"b'4"))), 26613 Let(Var("Rm",F4), 26614 Mop(Cast F4, 26615 LL[bVar"b'3",bVar"b'2",bVar"b'1", 26616 bVar"b'0"]), 26617 Let(Var("H",F1), 26618 Mop(Cast F1,LL[bVar"b'5"]), 26619 Let(Var("S",F1), 26620 Mop(Cast F1,LL[bVar"b'6"]), 26621 Let(Var("Rt",F4), 26622 Mop(Cast F4, 26623 LL[bVar"b'15",bVar"b'14", 26624 bVar"b'13",bVar"b'12"]), 26625 Let(Var("Rn",F4), 26626 Mop(Cast F4, 26627 LL[bVar"b'19", 26628 bVar"b'18", 26629 bVar"b'17", 26630 bVar"b'16"]), 26631 Let(Var("P",F1), 26632 Mop(Cast F1, 26633 LL[bVar"b'24"]), 26634 Let(TP[bVar"v",qVar"s"], 26635 Apply 26636 (Call 26637 ("Do", 26638 ATy(qTy, 26639 PTy(bTy, 26640 qTy)), 26641 TP[Var("cond", 26642 F4), 26643 Bop(Or, 26644 Mop(Not, 26645 EQ(Var("H", 26646 F1), 26647 LW(0, 26648 1))), 26649 EQ(Var("S", 26650 F1), 26651 LW(1, 26652 1)))]), 26653 qVar"state"), 26654 ITE(bVar"v", 26655 Let(bVar"wback", 26656 Bop(Or, 26657 EQ(Var("P", 26658 F1), 26659 LW(0, 26660 1)), 26661 EQ(Mop(Cast 26662 F1, 26663 LL[bVar"b'21"]), 26664 LW(1, 26665 1))), 26666 TP[Let(bVar"index", 26667 EQ(Var("P", 26668 F1), 26669 LW(1, 26670 1)), 26671 Let(bVar"add", 26672 EQ(Mop(Cast 26673 F1, 26674 LL[bVar"b'23"]), 26675 LW(1, 26676 1)), 26677 Let(bVar"unsigned", 26678 EQ(Var("S", 26679 F1), 26680 LW(0, 26681 1)), 26682 Let(Var("m", 26683 CTy"offset1"), 26684 Call 26685 ("register_form1", 26686 CTy"offset1", 26687 TP[Var("Rm", 26688 F4), 26689 LC("SRType_LSL", 26690 CTy"SRType"), 26691 LN 26692 0]), 26693 ITE(EQ(Var("H", 26694 F1), 26695 LW(1, 26696 1)), 26697 Call 26698 ("Load", 26699 CTy"instruction", 26700 Call 26701 ("LoadHalf", 26702 CTy"Load", 26703 TP[bVar"unsigned", 26704 bVar"add", 26705 bVar"index", 26706 bVar"wback", 26707 Var("Rt", 26708 F4), 26709 Var("Rn", 26710 F4), 26711 Var("m", 26712 CTy"offset1")])), 26713 Call 26714 ("Load", 26715 CTy"instruction", 26716 Call 26717 ("LoadByte", 26718 CTy"Load", 26719 TP[bVar"unsigned", 26720 bVar"add", 26721 bVar"index", 26722 bVar"wback", 26723 Var("Rt", 26724 F4), 26725 Var("Rn", 26726 F4), 26727 Var("m", 26728 CTy"offset1")]))))))), 26729 ITE(Bop(Or, 26730 EQ(Var("Rt", 26731 F4), 26732 LW(15, 26733 4)), 26734 Bop(Or, 26735 EQ(Var("Rm", 26736 F4), 26737 LW(15, 26738 4)), 26739 Bop(Or, 26740 Bop(And, 26741 Bop(Lt, 26742 Apply 26743 (Call 26744 ("ArchVersion", 26745 ATy(qTy, 26746 nTy), 26747 LU), 26748 qVar"s"), 26749 LN 26750 6), 26751 Bop(And, 26752 bVar"wback", 26753 EQ(Var("Rm", 26754 F4), 26755 Var("Rn", 26756 F4)))), 26757 Mop(Not, 26758 EQ(Mop(Cast 26759 F4, 26760 LL[bVar"b'11", 26761 bVar"b'10", 26762 bVar"b'9", 26763 bVar"b'8"]), 26764 LW(0, 26765 4)))))), 26766 Apply 26767 (Call 26768 ("DECODE_UNPREDICTABLE", 26769 ATy(qTy, 26770 qTy), 26771 TP[Var("mc", 26772 CTy"MachineCode"), 26773 LS 26774 "LoadHalf/Byte"]), 26775 qVar"s"), 26776 qVar"s")]), 26777 TP[Apply 26778 (Call 26779 ("Skip", 26780 ATy(qTy, 26781 CTy"instruction"), 26782 LU), 26783 qVar"s"), 26784 qVar"s"]))))))))), 26785 (Bop(And,Mop(Not,bVar"b'22"), 26786 Bop(And,Mop(Not,bVar"b'20"), 26787 Bop(And,bVar"b'7", 26788 Bop(And,bVar"b'6",bVar"b'4")))), 26789 Let(Var("Rm",F4), 26790 Mop(Cast F4, 26791 LL[bVar"b'3",bVar"b'2",bVar"b'1", 26792 bVar"b'0"]), 26793 Let(Var("Rt",F4), 26794 Mop(Cast F4, 26795 LL[bVar"b'15",bVar"b'14", 26796 bVar"b'13",bVar"b'12"]), 26797 Let(Var("Rn",F4), 26798 Mop(Cast F4, 26799 LL[bVar"b'19",bVar"b'18", 26800 bVar"b'17",bVar"b'16"]), 26801 Let(Var("W",F1), 26802 Mop(Cast F1,LL[bVar"b'21"]), 26803 Let(Var("P",F1), 26804 Mop(Cast F1,LL[bVar"b'24"]), 26805 Let(TP[bVar"v",qVar"s"], 26806 Apply 26807 (Call 26808 ("Do", 26809 ATy(qTy, 26810 PTy(bTy,qTy)), 26811 TP[Var("cond",F4), 26812 Apply 26813 (Call 26814 ("HaveDSPSupport", 26815 ATy(qTy, 26816 bTy), 26817 LU), 26818 qVar"state")]), 26819 qVar"state"), 26820 ITE(bVar"v", 26821 Let(Var("Rt2",F4), 26822 Bop(Add, 26823 Var("Rt", 26824 F4), 26825 LW(1,4)), 26826 Let(bVar"wback", 26827 Bop(Or, 26828 EQ(Var("P", 26829 F1), 26830 LW(0, 26831 1)), 26832 EQ(Var("W", 26833 F1), 26834 LW(1, 26835 1))), 26836 Let(bVar"store", 26837 EQ(Mop(Cast 26838 F1, 26839 LL[bVar"b'5"]), 26840 LW(1, 26841 1)), 26842 TP[Let(bVar"index", 26843 EQ(Var("P", 26844 F1), 26845 LW(1, 26846 1)), 26847 Let(bVar"add", 26848 EQ(Mop(Cast 26849 F1, 26850 LL[bVar"b'23"]), 26851 LW(1, 26852 1)), 26853 Let(Var("m", 26854 CTy"offset2"), 26855 Call 26856 ("register_form2", 26857 CTy"offset2", 26858 Var("Rm", 26859 F4)), 26860 ITE(bVar"store", 26861 Call 26862 ("Store", 26863 CTy"instruction", 26864 Call 26865 ("StoreDual", 26866 CTy"Store", 26867 TP[bVar"add", 26868 bVar"index", 26869 bVar"wback", 26870 Var("Rt", 26871 F4), 26872 Var("Rt2", 26873 F4), 26874 Var("Rn", 26875 F4), 26876 Var("m", 26877 CTy"offset2")])), 26878 Call 26879 ("Load", 26880 CTy"instruction", 26881 Call 26882 ("LoadDual", 26883 CTy"Load", 26884 TP[bVar"add", 26885 bVar"index", 26886 bVar"wback", 26887 Var("Rt", 26888 F4), 26889 Var("Rt2", 26890 F4), 26891 Var("Rn", 26892 F4), 26893 Var("m", 26894 CTy"offset2")])))))), 26895 ITE(Bop(Or, 26896 Bop(Bit, 26897 Var("Rt", 26898 F4), 26899 LN 26900 0), 26901 Bop(Or, 26902 Bop(And, 26903 EQ(Var("P", 26904 F1), 26905 LW(0, 26906 1)), 26907 EQ(Var("W", 26908 F1), 26909 LW(1, 26910 1))), 26911 Bop(Or, 26912 EQ(Var("Rt2", 26913 F4), 26914 LW(15, 26915 4)), 26916 Bop(Or, 26917 EQ(Var("Rm", 26918 F4), 26919 LW(15, 26920 4)), 26921 Bop(Or, 26922 Bop(And, 26923 Mop(Not, 26924 bVar"store"), 26925 Bop(Or, 26926 EQ(Var("Rm", 26927 F4), 26928 Var("Rt", 26929 F4)), 26930 EQ(Var("Rm", 26931 F4), 26932 Var("Rt2", 26933 F4)))), 26934 Bop(Or, 26935 Bop(And, 26936 bVar"wback", 26937 Bop(Or, 26938 EQ(Var("Rn", 26939 F4), 26940 LW(15, 26941 4)), 26942 Bop(Or, 26943 EQ(Var("Rn", 26944 F4), 26945 Var("Rt", 26946 F4)), 26947 EQ(Var("Rn", 26948 F4), 26949 Var("Rt2", 26950 F4))))), 26951 Bop(Or, 26952 Bop(And, 26953 Bop(Lt, 26954 Apply 26955 (Call 26956 ("ArchVersion", 26957 ATy(qTy, 26958 nTy), 26959 LU), 26960 qVar"s"), 26961 LN 26962 6), 26963 Bop(And, 26964 bVar"wback", 26965 EQ(Var("Rm", 26966 F4), 26967 Var("Rn", 26968 F4)))), 26969 Mop(Not, 26970 EQ(Mop(Cast 26971 F4, 26972 LL[bVar"b'11", 26973 bVar"b'10", 26974 bVar"b'9", 26975 bVar"b'8"]), 26976 LW(0, 26977 4)))))))))), 26978 Apply 26979 (Call 26980 ("DECODE_UNPREDICTABLE", 26981 ATy(qTy, 26982 qTy), 26983 TP[Var("mc", 26984 CTy"MachineCode"), 26985 LS 26986 "Load/StoreDual (register)"]), 26987 qVar"s"), 26988 qVar"s")]))), 26989 TP[Apply 26990 (Call 26991 ("Skip", 26992 ATy(qTy, 26993 CTy"instruction"), 26994 LU), 26995 qVar"s"), 26996 qVar"s"])))))))), 26997 (Bop(And,bVar"b'22", 26998 Bop(And,Mop(Not,bVar"b'20"), 26999 Bop(And,bVar"b'19", 27000 Bop(And,bVar"b'18", 27001 Bop(And,bVar"b'17", 27002 Bop(And,bVar"b'16", 27003 Bop(And,bVar"b'7", 27004 Bop(And,bVar"b'6", 27005 Bop(And, 27006 Mop(Not, 27007 bVar"b'5"), 27008 bVar"b'4"))))))))), 27009 Let(Var("Rt",F4), 27010 Mop(Cast F4, 27011 LL[bVar"b'15",bVar"b'14",bVar"b'13", 27012 bVar"b'12"]), 27013 Let(TP[bVar"v",qVar"s"], 27014 Apply 27015 (Call 27016 ("Do",ATy(qTy,PTy(bTy,qTy)), 27017 TP[Var("cond",F4), 27018 Apply 27019 (Call 27020 ("HaveDSPSupport", 27021 ATy(qTy,bTy),LU), 27022 qVar"state")]),qVar"state"), 27023 ITE(bVar"v", 27024 Let(Var("Rt2",F4), 27025 Bop(Add,Var("Rt",F4),LW(1,4)), 27026 TP[Call 27027 ("Load",CTy"instruction", 27028 Call 27029 ("LoadDualLiteral", 27030 CTy"Load", 27031 TP[EQ(Mop(Cast F1, 27032 LL[bVar"b'23"]), 27033 LW(1,1)), 27034 Var("Rt",F4), 27035 Var("Rt2",F4), 27036 Mop(Cast F32, 27037 CC[Mop(Cast F4, 27038 LL[bVar"b'11", 27039 bVar"b'10", 27040 bVar"b'9", 27041 bVar"b'8"]), 27042 Mop(Cast F4, 27043 LL[bVar"b'3", 27044 bVar"b'2", 27045 bVar"b'1", 27046 bVar"b'0"])])])), 27047 ITE(Bop(Or, 27048 Bop(Bit, 27049 Var("Rt",F4), 27050 LN 0), 27051 Bop(Or, 27052 EQ(Var("Rt2",F4), 27053 LW(15,4)), 27054 Mop(Not, 27055 Bop(And, 27056 EQ(Mop(Cast 27057 F1, 27058 LL[bVar"b'24"]), 27059 LW(1, 27060 1)), 27061 EQ(Mop(Cast 27062 F1, 27063 LL[bVar"b'21"]), 27064 LW(0, 27065 1)))))), 27066 Apply 27067 (Call 27068 ("DECODE_UNPREDICTABLE", 27069 ATy(qTy,qTy), 27070 TP[Var("mc", 27071 CTy"MachineCode"), 27072 LS 27073 "LoadDual (literal)"]), 27074 qVar"s"),qVar"s")]), 27075 TP[Apply 27076 (Call 27077 ("Skip", 27078 ATy(qTy,CTy"instruction"), 27079 LU),qVar"s"),qVar"s"])))), 27080 (Bop(And,bVar"b'22", 27081 Bop(And,Mop(Not,bVar"b'20"), 27082 Bop(And,bVar"b'7", 27083 Bop(And,bVar"b'6",bVar"b'4")))), 27084 Let(Var("S",F1),Mop(Cast F1,LL[bVar"b'5"]), 27085 Let(Var("Rt",F4), 27086 Mop(Cast F4, 27087 LL[bVar"b'15",bVar"b'14", 27088 bVar"b'13",bVar"b'12"]), 27089 Let(Var("Rn",F4), 27090 Mop(Cast F4, 27091 LL[bVar"b'19",bVar"b'18", 27092 bVar"b'17",bVar"b'16"]), 27093 Let(Var("W",F1), 27094 Mop(Cast F1,LL[bVar"b'21"]), 27095 Let(Var("P",F1), 27096 Mop(Cast F1,LL[bVar"b'24"]), 27097 Let(TP[bVar"v",qVar"s"], 27098 Apply 27099 (Call 27100 ("Do", 27101 ATy(qTy, 27102 PTy(bTy,qTy)), 27103 TP[Var("cond",F4), 27104 Apply 27105 (Call 27106 ("HaveDSPSupport", 27107 ATy(qTy, 27108 bTy), 27109 LU), 27110 qVar"state")]), 27111 qVar"state"), 27112 ITE(bVar"v", 27113 Let(Var("Rt2",F4), 27114 Bop(Add, 27115 Var("Rt", 27116 F4), 27117 LW(1,4)), 27118 Let(bVar"wback", 27119 Bop(Or, 27120 EQ(Var("P", 27121 F1), 27122 LW(0, 27123 1)), 27124 EQ(Var("W", 27125 F1), 27126 LW(1, 27127 1))), 27128 TP[Let(bVar"index", 27129 EQ(Var("P", 27130 F1), 27131 LW(1, 27132 1)), 27133 Let(bVar"add", 27134 EQ(Mop(Cast 27135 F1, 27136 LL[bVar"b'23"]), 27137 LW(1, 27138 1)), 27139 Let(Var("m", 27140 CTy"offset2"), 27141 Call 27142 ("immediate_form2", 27143 CTy"offset2", 27144 Mop(Cast 27145 F32, 27146 CC[Mop(Cast 27147 F4, 27148 LL[bVar"b'11", 27149 bVar"b'10", 27150 bVar"b'9", 27151 bVar"b'8"]), 27152 Mop(Cast 27153 F4, 27154 LL[bVar"b'3", 27155 bVar"b'2", 27156 bVar"b'1", 27157 bVar"b'0"])])), 27158 ITE(EQ(Var("S", 27159 F1), 27160 LW(1, 27161 1)), 27162 Call 27163 ("Store", 27164 CTy"instruction", 27165 Call 27166 ("StoreDual", 27167 CTy"Store", 27168 TP[bVar"add", 27169 bVar"index", 27170 bVar"wback", 27171 Var("Rt", 27172 F4), 27173 Var("Rt2", 27174 F4), 27175 Var("Rn", 27176 F4), 27177 Var("m", 27178 CTy"offset2")])), 27179 Call 27180 ("Load", 27181 CTy"instruction", 27182 Call 27183 ("LoadDual", 27184 CTy"Load", 27185 TP[bVar"add", 27186 bVar"index", 27187 bVar"wback", 27188 Var("Rt", 27189 F4), 27190 Var("Rt2", 27191 F4), 27192 Var("Rn", 27193 F4), 27194 Var("m", 27195 CTy"offset2")])))))), 27196 ITE(Bop(Or, 27197 Bop(Bit, 27198 Var("Rt", 27199 F4), 27200 LN 27201 0), 27202 Bop(Or, 27203 Bop(And, 27204 EQ(Var("P", 27205 F1), 27206 LW(0, 27207 1)), 27208 EQ(Var("W", 27209 F1), 27210 LW(1, 27211 1))), 27212 Bop(Or, 27213 Bop(And, 27214 bVar"wback", 27215 Bop(Or, 27216 Bop(And, 27217 EQ(Var("S", 27218 F1), 27219 LW(1, 27220 1)), 27221 EQ(Var("Rn", 27222 F4), 27223 LW(15, 27224 4))), 27225 Bop(Or, 27226 EQ(Var("Rn", 27227 F4), 27228 Var("Rt", 27229 F4)), 27230 EQ(Var("Rn", 27231 F4), 27232 Var("Rt2", 27233 F4))))), 27234 EQ(Var("Rt2", 27235 F4), 27236 LW(15, 27237 4))))), 27238 Apply 27239 (Call 27240 ("DECODE_UNPREDICTABLE", 27241 ATy(qTy, 27242 qTy), 27243 TP[Var("mc", 27244 CTy"MachineCode"), 27245 LS 27246 "Load/StoreDual (immediate)"]), 27247 qVar"s"), 27248 qVar"s")])), 27249 TP[Apply 27250 (Call 27251 ("Skip", 27252 ATy(qTy, 27253 CTy"instruction"), 27254 LU), 27255 qVar"s"), 27256 qVar"s"])))))))), 27257 (Bop(And,Mop(Not,bVar"b'24"), 27258 Bop(And,bVar"b'22", 27259 Bop(And,bVar"b'21", 27260 Bop(And,bVar"b'20", 27261 Bop(And,bVar"b'7",bVar"b'4"))))), 27262 Let(Var("H",F1),Mop(Cast F1,LL[bVar"b'5"]), 27263 Let(Var("S",F1), 27264 Mop(Cast F1,LL[bVar"b'6"]), 27265 Let(Var("Rt",F4), 27266 Mop(Cast F4, 27267 LL[bVar"b'15",bVar"b'14", 27268 bVar"b'13",bVar"b'12"]), 27269 Let(Var("Rn",F4), 27270 Mop(Cast F4, 27271 LL[bVar"b'19",bVar"b'18", 27272 bVar"b'17",bVar"b'16"]), 27273 Let(TP[bVar"v",qVar"s"], 27274 Apply 27275 (Call 27276 ("Do", 27277 ATy(qTy,PTy(bTy,qTy)), 27278 TP[Var("cond",F4), 27279 Bop(And, 27280 Bop(Or, 27281 Mop(Not, 27282 EQ(Var("H", 27283 F1), 27284 LW(0, 27285 1))), 27286 EQ(Var("S", 27287 F1), 27288 LW(1,1))), 27289 Apply 27290 (Call 27291 ("HaveThumb2", 27292 ATy(qTy, 27293 bTy), 27294 LU), 27295 qVar"state"))]), 27296 qVar"state"), 27297 ITE(bVar"v", 27298 TP[Let(bVar"add", 27299 EQ(Mop(Cast F1, 27300 LL[bVar"b'23"]), 27301 LW(1,1)), 27302 Let(Var("m", 27303 CTy"offset2"), 27304 Call 27305 ("immediate_form2", 27306 CTy"offset2", 27307 Mop(Cast 27308 F32, 27309 CC[Mop(Cast 27310 F4, 27311 LL[bVar"b'11", 27312 bVar"b'10", 27313 bVar"b'9", 27314 bVar"b'8"]), 27315 Mop(Cast 27316 F4, 27317 LL[bVar"b'3", 27318 bVar"b'2", 27319 bVar"b'1", 27320 bVar"b'0"])])), 27321 ITE(EQ(Var("H", 27322 F1), 27323 LW(1, 27324 1)), 27325 Call 27326 ("Load", 27327 CTy"instruction", 27328 Call 27329 ("LoadHalfUnprivileged", 27330 CTy"Load", 27331 TP[EQ(Var("S", 27332 F1), 27333 LW(0, 27334 1)), 27335 bVar"add", 27336 LT, 27337 Var("Rt", 27338 F4), 27339 Var("Rn", 27340 F4), 27341 Var("m", 27342 CTy"offset2")])), 27343 Call 27344 ("Load", 27345 CTy"instruction", 27346 Call 27347 ("LoadSignedByteUnprivileged", 27348 CTy"Load", 27349 TP[bVar"add", 27350 LT, 27351 Var("Rt", 27352 F4), 27353 Var("Rn", 27354 F4), 27355 Var("m", 27356 CTy"offset2")]))))), 27357 ITE(Bop(Or, 27358 EQ(Var("Rt", 27359 F4), 27360 LW(15,4)), 27361 Bop(Or, 27362 EQ(Var("Rn", 27363 F4), 27364 LW(15, 27365 4)), 27366 EQ(Var("Rn", 27367 F4), 27368 Var("Rt", 27369 F4)))), 27370 Apply 27371 (Call 27372 ("DECODE_UNPREDICTABLE", 27373 ATy(qTy, 27374 qTy), 27375 TP[Var("mc", 27376 CTy"MachineCode"), 27377 LS 27378 "LoadHalf/Byte (unprivileged)"]), 27379 qVar"s"), 27380 qVar"s")], 27381 TP[Apply 27382 (Call 27383 ("Skip", 27384 ATy(qTy, 27385 CTy"instruction"), 27386 LU),qVar"s"), 27387 qVar"s"]))))))), 27388 (Bop(And,bVar"b'22", 27389 Bop(And,bVar"b'20", 27390 Bop(And,bVar"b'19", 27391 Bop(And,bVar"b'18", 27392 Bop(And,bVar"b'17", 27393 Bop(And,bVar"b'16", 27394 Bop(And,bVar"b'7", 27395 bVar"b'4"))))))), 27396 Let(Var("H",F1),Mop(Cast F1,LL[bVar"b'5"]), 27397 Let(Var("S",F1), 27398 Mop(Cast F1,LL[bVar"b'6"]), 27399 Let(Var("Rt",F4), 27400 Mop(Cast F4, 27401 LL[bVar"b'15",bVar"b'14", 27402 bVar"b'13",bVar"b'12"]), 27403 Let(TP[bVar"v",qVar"s"], 27404 Apply 27405 (Call 27406 ("Do", 27407 ATy(qTy,PTy(bTy,qTy)), 27408 TP[Var("cond",F4), 27409 Bop(Or, 27410 Mop(Not, 27411 EQ(Var("H",F1), 27412 LW(0,1))), 27413 EQ(Var("S",F1), 27414 LW(1,1)))]), 27415 qVar"state"), 27416 ITE(bVar"v", 27417 TP[Let(bVar"add", 27418 EQ(Mop(Cast F1, 27419 LL[bVar"b'23"]), 27420 LW(1,1)), 27421 Let(bVar"unsigned", 27422 EQ(Var("S",F1), 27423 LW(0,1)), 27424 Let(Var("imm32", 27425 F32), 27426 Mop(Cast 27427 F32, 27428 CC[Mop(Cast 27429 F4, 27430 LL[bVar"b'11", 27431 bVar"b'10", 27432 bVar"b'9", 27433 bVar"b'8"]), 27434 Mop(Cast 27435 F4, 27436 LL[bVar"b'3", 27437 bVar"b'2", 27438 bVar"b'1", 27439 bVar"b'0"])]), 27440 ITE(EQ(Var("H", 27441 F1), 27442 LW(1, 27443 1)), 27444 Call 27445 ("Load", 27446 CTy"instruction", 27447 Call 27448 ("LoadHalfLiteral", 27449 CTy"Load", 27450 TP[bVar"unsigned", 27451 bVar"add", 27452 Var("Rt", 27453 F4), 27454 Var("imm32", 27455 F32)])), 27456 Call 27457 ("Load", 27458 CTy"instruction", 27459 Call 27460 ("LoadByteLiteral", 27461 CTy"Load", 27462 TP[bVar"unsigned", 27463 bVar"add", 27464 Var("Rt", 27465 F4), 27466 Var("imm32", 27467 F32)])))))), 27468 ITE(Bop(Or, 27469 EQ(Var("Rt",F4), 27470 LW(15,4)), 27471 Mop(Not, 27472 Bop(And, 27473 EQ(Mop(Cast 27474 F1, 27475 LL[bVar"b'24"]), 27476 LW(1, 27477 1)), 27478 EQ(Mop(Cast 27479 F1, 27480 LL[bVar"b'21"]), 27481 LW(0, 27482 1))))), 27483 Apply 27484 (Call 27485 ("DECODE_UNPREDICTABLE", 27486 ATy(qTy,qTy), 27487 TP[Var("mc", 27488 CTy"MachineCode"), 27489 LS 27490 "LoadHalf/Byte (literal)"]), 27491 qVar"s"),qVar"s")], 27492 TP[Apply 27493 (Call 27494 ("Skip", 27495 ATy(qTy, 27496 CTy"instruction"), 27497 LU),qVar"s"), 27498 qVar"s"])))))), 27499 (Bop(And,bVar"b'22", 27500 Bop(And,bVar"b'20", 27501 Bop(And,bVar"b'7",bVar"b'4"))), 27502 Let(Var("H",F1),Mop(Cast F1,LL[bVar"b'5"]), 27503 Let(Var("S",F1), 27504 Mop(Cast F1,LL[bVar"b'6"]), 27505 Let(Var("Rt",F4), 27506 Mop(Cast F4, 27507 LL[bVar"b'15",bVar"b'14", 27508 bVar"b'13",bVar"b'12"]), 27509 Let(Var("Rn",F4), 27510 Mop(Cast F4, 27511 LL[bVar"b'19",bVar"b'18", 27512 bVar"b'17",bVar"b'16"]), 27513 Let(Var("P",F1), 27514 Mop(Cast F1,LL[bVar"b'24"]), 27515 Let(TP[bVar"v",qVar"s"], 27516 Apply 27517 (Call 27518 ("Do", 27519 ATy(qTy, 27520 PTy(bTy,qTy)), 27521 TP[Var("cond",F4), 27522 Bop(Or, 27523 Mop(Not, 27524 EQ(Var("H", 27525 F1), 27526 LW(0, 27527 1))), 27528 EQ(Var("S", 27529 F1), 27530 LW(1,1)))]), 27531 qVar"state"), 27532 ITE(bVar"v", 27533 Let(bVar"wback", 27534 Bop(Or, 27535 EQ(Var("P", 27536 F1), 27537 LW(0,1)), 27538 EQ(Mop(Cast 27539 F1, 27540 LL[bVar"b'21"]), 27541 LW(1,1))), 27542 TP[Let(bVar"index", 27543 EQ(Var("P", 27544 F1), 27545 LW(1, 27546 1)), 27547 Let(bVar"add", 27548 EQ(Mop(Cast 27549 F1, 27550 LL[bVar"b'23"]), 27551 LW(1, 27552 1)), 27553 Let(bVar"unsigned", 27554 EQ(Var("S", 27555 F1), 27556 LW(0, 27557 1)), 27558 Let(Var("m", 27559 CTy"offset1"), 27560 Call 27561 ("immediate_form1", 27562 CTy"offset1", 27563 Mop(Cast 27564 F32, 27565 CC[Mop(Cast 27566 F4, 27567 LL[bVar"b'11", 27568 bVar"b'10", 27569 bVar"b'9", 27570 bVar"b'8"]), 27571 Mop(Cast 27572 F4, 27573 LL[bVar"b'3", 27574 bVar"b'2", 27575 bVar"b'1", 27576 bVar"b'0"])])), 27577 ITE(EQ(Var("H", 27578 F1), 27579 LW(1, 27580 1)), 27581 Call 27582 ("Load", 27583 CTy"instruction", 27584 Call 27585 ("LoadHalf", 27586 CTy"Load", 27587 TP[bVar"unsigned", 27588 bVar"add", 27589 bVar"index", 27590 bVar"wback", 27591 Var("Rt", 27592 F4), 27593 Var("Rn", 27594 F4), 27595 Var("m", 27596 CTy"offset1")])), 27597 Call 27598 ("Load", 27599 CTy"instruction", 27600 Call 27601 ("LoadByte", 27602 CTy"Load", 27603 TP[bVar"unsigned", 27604 bVar"add", 27605 bVar"index", 27606 bVar"wback", 27607 Var("Rt", 27608 F4), 27609 Var("Rn", 27610 F4), 27611 Var("m", 27612 CTy"offset1")]))))))), 27613 ITE(Bop(Or, 27614 EQ(Var("Rt", 27615 F4), 27616 LW(15, 27617 4)), 27618 Bop(And, 27619 bVar"wback", 27620 EQ(Var("Rn", 27621 F4), 27622 Var("Rt", 27623 F4)))), 27624 Apply 27625 (Call 27626 ("DECODE_UNPREDICTABLE", 27627 ATy(qTy, 27628 qTy), 27629 TP[Var("mc", 27630 CTy"MachineCode"), 27631 LS 27632 "LoadHalf/Byte (immediate)"]), 27633 qVar"s"), 27634 qVar"s")]), 27635 TP[Apply 27636 (Call 27637 ("Skip", 27638 ATy(qTy, 27639 CTy"instruction"), 27640 LU), 27641 qVar"s"), 27642 qVar"s"])))))))), 27643 (Bop(And,Mop(Not,bVar"b'24"), 27644 Bop(And,bVar"b'22", 27645 Bop(And,bVar"b'21", 27646 Bop(And,Mop(Not,bVar"b'20"), 27647 Bop(And,bVar"b'7", 27648 Bop(And, 27649 Mop(Not,bVar"b'6"), 27650 Bop(And,bVar"b'5", 27651 bVar"b'4"))))))), 27652 Let(Var("Rt",F4), 27653 Mop(Cast F4, 27654 LL[bVar"b'15",bVar"b'14",bVar"b'13", 27655 bVar"b'12"]), 27656 Let(Var("Rn",F4), 27657 Mop(Cast F4, 27658 LL[bVar"b'19",bVar"b'18", 27659 bVar"b'17",bVar"b'16"]), 27660 Let(TP[bVar"v",qVar"s"], 27661 Apply 27662 (Call 27663 ("Do",ATy(qTy,PTy(bTy,qTy)), 27664 TP[Var("cond",F4), 27665 Apply 27666 (Call 27667 ("HaveThumb2", 27668 ATy(qTy,bTy),LU), 27669 qVar"state")]), 27670 qVar"state"), 27671 ITE(bVar"v", 27672 TP[Call 27673 ("Store", 27674 CTy"instruction", 27675 Call 27676 ("StoreHalfUnprivileged", 27677 CTy"Store", 27678 TP[EQ(Mop(Cast F1, 27679 LL[bVar"b'23"]), 27680 LW(1,1)),LT, 27681 Var("Rt",F4), 27682 Var("Rn",F4), 27683 Call 27684 ("immediate_form2", 27685 CTy"offset2", 27686 Mop(Cast F32, 27687 CC[Mop(Cast 27688 F4, 27689 LL[bVar"b'11", 27690 bVar"b'10", 27691 bVar"b'9", 27692 bVar"b'8"]), 27693 Mop(Cast 27694 F4, 27695 LL[bVar"b'3", 27696 bVar"b'2", 27697 bVar"b'1", 27698 bVar"b'0"])]))])), 27699 ITE(Bop(Or, 27700 EQ(Var("Rt",F4), 27701 LW(15,4)), 27702 Bop(Or, 27703 EQ(Var("Rn",F4), 27704 LW(15,4)), 27705 EQ(Var("Rn",F4), 27706 Var("Rt",F4)))), 27707 Apply 27708 (Call 27709 ("DECODE_UNPREDICTABLE", 27710 ATy(qTy,qTy), 27711 TP[Var("mc", 27712 CTy"MachineCode"), 27713 LS 27714 "StoreHalf (immediate)"]), 27715 qVar"s"),qVar"s")], 27716 TP[Apply 27717 (Call 27718 ("Skip", 27719 ATy(qTy, 27720 CTy"instruction"), 27721 LU),qVar"s"),qVar"s"]))))), 27722 (Bop(And,bVar"b'22", 27723 Bop(And,Mop(Not,bVar"b'20"), 27724 Bop(And,bVar"b'7", 27725 Bop(And,Mop(Not,bVar"b'6"), 27726 Bop(And,bVar"b'5",bVar"b'4"))))), 27727 Let(Var("Rt",F4), 27728 Mop(Cast F4, 27729 LL[bVar"b'15",bVar"b'14",bVar"b'13", 27730 bVar"b'12"]), 27731 Let(Var("Rn",F4), 27732 Mop(Cast F4, 27733 LL[bVar"b'19",bVar"b'18", 27734 bVar"b'17",bVar"b'16"]), 27735 Let(Var("P",F1), 27736 Mop(Cast F1,LL[bVar"b'24"]), 27737 Let(TP[bVar"v",qVar"s"], 27738 Apply 27739 (Call 27740 ("Do", 27741 ATy(qTy,PTy(bTy,qTy)), 27742 TP[Var("cond",F4),LT]), 27743 qVar"state"), 27744 ITE(bVar"v", 27745 Let(bVar"wback", 27746 Bop(Or, 27747 EQ(Var("P",F1), 27748 LW(0,1)), 27749 EQ(Mop(Cast F1, 27750 LL[bVar"b'21"]), 27751 LW(1,1))), 27752 TP[Call 27753 ("Store", 27754 CTy"instruction", 27755 Call 27756 ("StoreHalf", 27757 CTy"Store", 27758 TP[EQ(Mop(Cast 27759 F1, 27760 LL[bVar"b'23"]), 27761 LW(1,1)), 27762 EQ(Var("P", 27763 F1), 27764 LW(1,1)), 27765 bVar"wback", 27766 Var("Rt", 27767 F4), 27768 Var("Rn", 27769 F4), 27770 Call 27771 ("immediate_form1", 27772 CTy"offset1", 27773 Mop(Cast 27774 F32, 27775 CC[Mop(Cast 27776 F4, 27777 LL[bVar"b'11", 27778 bVar"b'10", 27779 bVar"b'9", 27780 bVar"b'8"]), 27781 Mop(Cast 27782 F4, 27783 LL[bVar"b'3", 27784 bVar"b'2", 27785 bVar"b'1", 27786 bVar"b'0"])]))])), 27787 ITE(Bop(Or, 27788 EQ(Var("Rt", 27789 F4), 27790 LW(15,4)), 27791 Bop(And, 27792 bVar"wback", 27793 Bop(Or, 27794 EQ(Var("Rn", 27795 F4), 27796 LW(15, 27797 4)), 27798 EQ(Var("Rn", 27799 F4), 27800 Var("Rt", 27801 F4))))), 27802 Apply 27803 (Call 27804 ("DECODE_UNPREDICTABLE", 27805 ATy(qTy, 27806 qTy), 27807 TP[Var("mc", 27808 CTy"MachineCode"), 27809 LS 27810 "StoreHalf (immediate)"]), 27811 qVar"s"), 27812 qVar"s")]), 27813 TP[Apply 27814 (Call 27815 ("Skip", 27816 ATy(qTy, 27817 CTy"instruction"), 27818 LU),qVar"s"), 27819 qVar"s"]))))))], 27820 Apply 27821 (Call 27822 ("UndefinedARM", 27823 ATy(qTy,PTy(CTy"instruction",qTy)), 27824 Var("cond",F4)),qVar"state")))))))) 27825; 27826val DecodeThumb_def = Def 27827 ("DecodeThumb",Var("h",F16), 27828 Close 27829 (qVar"state", 27830 Let(Var("mc",CTy"MachineCode"), 27831 Call("Thumb",CTy"MachineCode",Var("h",F16)), 27832 Let(TP[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",bVar"b'11", 27833 bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 27834 bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 27835 bVar"b'0"],BL(16,Var("h",F16)), 27836 ITB([(bVar"b'13", 27837 ITB([(bVar"b'15", 27838 ITB([(Bop(And,Mop(Not,bVar"b'14"), 27839 Mop(Not,bVar"b'12")), 27840 Let(TP[Var("v",F4),qVar"s"], 27841 Apply 27842 (Call 27843 ("ThumbCondition", 27844 ATy(qTy,PTy(F4,qTy)),LU), 27845 qVar"state"), 27846 Let(TP[bVar"v",qVar"s"], 27847 Apply 27848 (Call 27849 ("Do",ATy(qTy,PTy(bTy,qTy)), 27850 TP[Var("v",F4),LT]),qVar"s"), 27851 TP[ITE(bVar"v", 27852 Call 27853 ("Data",CTy"instruction", 27854 Call 27855 ("ArithLogicImmediate", 27856 CTy"Data", 27857 TP[LW(4,4),LF, 27858 Mop(Cast F4, 27859 Mop(Cast 27860 (FTy 3), 27861 LL[bVar"b'10", 27862 bVar"b'9", 27863 bVar"b'8"])), 27864 ITE(EQ(Mop(Cast F1, 27865 LL[bVar"b'11"]), 27866 LW(1,1)), 27867 LW(13,4), 27868 LW(15,4)), 27869 CC[LW(15,4), 27870 Mop(Cast F8, 27871 LL[bVar"b'7", 27872 bVar"b'6", 27873 bVar"b'5", 27874 bVar"b'4", 27875 bVar"b'3", 27876 bVar"b'2", 27877 bVar"b'1", 27878 bVar"b'0"])]])), 27879 Apply 27880 (Call 27881 ("Skip", 27882 ATy(qTy, 27883 CTy"instruction"), 27884 LU),qVar"s")),qVar"s"]))), 27885 (Bop(And,Mop(Not,bVar"b'14"), 27886 Bop(And,bVar"b'12", 27887 Bop(And,Mop(Not,bVar"b'11"), 27888 Bop(And,Mop(Not,bVar"b'10"), 27889 Bop(And, 27890 Mop(Not,bVar"b'9"), 27891 Mop(Not,bVar"b'8")))))), 27892 Let(TP[Var("v",F4),qVar"s"], 27893 Apply 27894 (Call 27895 ("ThumbCondition", 27896 ATy(qTy,PTy(F4,qTy)),LU), 27897 qVar"state"), 27898 Let(TP[bVar"v",qVar"s"], 27899 Apply 27900 (Call 27901 ("Do",ATy(qTy,PTy(bTy,qTy)), 27902 TP[Var("v",F4),LT]),qVar"s"), 27903 TP[ITE(bVar"v", 27904 Call 27905 ("Data",CTy"instruction", 27906 Call 27907 ("ArithLogicImmediate", 27908 CTy"Data", 27909 TP[ITE(EQ(Mop(Cast F1, 27910 LL[bVar"b'7"]), 27911 LW(1,1)), 27912 LW(2,4), 27913 LW(4,4)),LF, 27914 LW(13,4),LW(13,4), 27915 CC[LW(30,5), 27916 Mop(Cast(FTy 7), 27917 LL[bVar"b'6", 27918 bVar"b'5", 27919 bVar"b'4", 27920 bVar"b'3", 27921 bVar"b'2", 27922 bVar"b'1", 27923 bVar"b'0"])]])), 27924 Apply 27925 (Call 27926 ("Skip", 27927 ATy(qTy, 27928 CTy"instruction"), 27929 LU),qVar"s")),qVar"s"]))), 27930 (Bop(And,Mop(Not,bVar"b'14"), 27931 Bop(And,bVar"b'12", 27932 Bop(And,Mop(Not,bVar"b'10"), 27933 bVar"b'8"))), 27934 Let(TP[bVar"v",qVar"s"], 27935 Apply 27936 (Call 27937 ("Do",ATy(qTy,PTy(bTy,qTy)), 27938 TP[LW(14,4), 27939 Apply 27940 (Call 27941 ("HaveThumb2", 27942 ATy(qTy,bTy),LU), 27943 qVar"state")]),qVar"state"), 27944 ITE(bVar"v", 27945 TP[Call 27946 ("Branch",CTy"instruction", 27947 Call 27948 ("CompareBranch", 27949 CTy"Branch", 27950 TP[EQ(Mop(Cast F1, 27951 LL[bVar"b'11"]), 27952 LW(1,1)), 27953 Mop(Cast F4, 27954 Mop(Cast(FTy 3), 27955 LL[bVar"b'2", 27956 bVar"b'1", 27957 bVar"b'0"])), 27958 Mop(Cast F32, 27959 CC[Mop(Cast F1, 27960 LL[bVar"b'9"]), 27961 Mop(Cast(FTy 5), 27962 LL[bVar"b'7", 27963 bVar"b'6", 27964 bVar"b'5", 27965 bVar"b'4", 27966 bVar"b'3"]), 27967 LW(0,1)])])), 27968 ITE(Apply 27969 (Call 27970 ("InITBlock", 27971 ATy(qTy,bTy),LU), 27972 qVar"s"), 27973 Apply 27974 (Call 27975 ("DECODE_UNPREDICTABLE", 27976 ATy(qTy,qTy), 27977 TP[Var("mc", 27978 CTy"MachineCode"), 27979 LS"CompareBranch"]), 27980 qVar"s"),qVar"s")], 27981 TP[Apply 27982 (Call 27983 ("Skip", 27984 ATy(qTy,CTy"instruction"), 27985 LU),qVar"s"),qVar"s"]))), 27986 (Bop(And,Mop(Not,bVar"b'14"), 27987 Bop(And,bVar"b'12", 27988 Bop(And,Mop(Not,bVar"b'11"), 27989 Bop(And,Mop(Not,bVar"b'10"), 27990 Bop(And,bVar"b'9", 27991 Bop(And, 27992 Mop(Not,bVar"b'8"), 27993 Mop(Not,bVar"b'6"))))))), 27994 Let(TP[Var("v",F4),qVar"s"], 27995 Apply 27996 (Call 27997 ("ThumbCondition", 27998 ATy(qTy,PTy(F4,qTy)),LU), 27999 qVar"state"), 28000 Let(TP[bVar"v",qVar"s"], 28001 Apply 28002 (Call 28003 ("Do",ATy(qTy,PTy(bTy,qTy)), 28004 TP[Var("v",F4), 28005 Bop(Ge, 28006 Apply 28007 (Call 28008 ("ArchVersion", 28009 ATy(qTy,nTy),LU), 28010 qVar"s"),LN 6)]), 28011 qVar"s"), 28012 TP[ITE(bVar"v", 28013 Call 28014 ("Media", 28015 CTy"instruction", 28016 Call 28017 ("ExtendHalfword", 28018 CTy"Media", 28019 TP[EQ(Mop(Cast F1, 28020 LL[bVar"b'7"]), 28021 LW(1,1)), 28022 Mop(Cast F4, 28023 Mop(Cast 28024 (FTy 3), 28025 LL[bVar"b'2", 28026 bVar"b'1", 28027 bVar"b'0"])), 28028 LW(15,4), 28029 Mop(Cast F4, 28030 Mop(Cast 28031 (FTy 3), 28032 LL[bVar"b'5", 28033 bVar"b'4", 28034 bVar"b'3"])), 28035 LN 0])), 28036 Apply 28037 (Call 28038 ("Skip", 28039 ATy(qTy, 28040 CTy"instruction"), 28041 LU),qVar"s")),qVar"s"]))), 28042 (Bop(And,Mop(Not,bVar"b'14"), 28043 Bop(And,bVar"b'12", 28044 Bop(And,Mop(Not,bVar"b'11"), 28045 Bop(And,Mop(Not,bVar"b'10"), 28046 Bop(And,bVar"b'9", 28047 Bop(And, 28048 Mop(Not,bVar"b'8"), 28049 bVar"b'6")))))), 28050 Let(TP[Var("v",F4),qVar"s"], 28051 Apply 28052 (Call 28053 ("ThumbCondition", 28054 ATy(qTy,PTy(F4,qTy)),LU), 28055 qVar"state"), 28056 Let(TP[bVar"v",qVar"s"], 28057 Apply 28058 (Call 28059 ("Do",ATy(qTy,PTy(bTy,qTy)), 28060 TP[Var("v",F4), 28061 Bop(Ge, 28062 Apply 28063 (Call 28064 ("ArchVersion", 28065 ATy(qTy,nTy),LU), 28066 qVar"s"),LN 6)]), 28067 qVar"s"), 28068 TP[ITE(bVar"v", 28069 Call 28070 ("Media", 28071 CTy"instruction", 28072 Call 28073 ("ExtendByte", 28074 CTy"Media", 28075 TP[EQ(Mop(Cast F1, 28076 LL[bVar"b'7"]), 28077 LW(1,1)), 28078 Mop(Cast F4, 28079 Mop(Cast 28080 (FTy 3), 28081 LL[bVar"b'2", 28082 bVar"b'1", 28083 bVar"b'0"])), 28084 LW(15,4), 28085 Mop(Cast F4, 28086 Mop(Cast 28087 (FTy 3), 28088 LL[bVar"b'5", 28089 bVar"b'4", 28090 bVar"b'3"])), 28091 LN 0])), 28092 Apply 28093 (Call 28094 ("Skip", 28095 ATy(qTy, 28096 CTy"instruction"), 28097 LU),qVar"s")),qVar"s"]))), 28098 (Bop(And,Mop(Not,bVar"b'14"), 28099 Bop(And,bVar"b'12", 28100 Bop(And,Mop(Not,bVar"b'11"), 28101 Bop(And,bVar"b'10", 28102 Mop(Not,bVar"b'9"))))), 28103 Let(TP[Var("v",F4),qVar"s"], 28104 Apply 28105 (Call 28106 ("ThumbCondition", 28107 ATy(qTy,PTy(F4,qTy)),LU), 28108 qVar"state"), 28109 Let(TP[bVar"v",qVar"s"], 28110 Apply 28111 (Call 28112 ("Do",ATy(qTy,PTy(bTy,qTy)), 28113 TP[Var("v",F4),LT]),qVar"s"), 28114 ITE(bVar"v", 28115 Let(Var("registers",F16), 28116 CC[LW(0,1), 28117 Mop(Cast F1, 28118 LL[bVar"b'8"]), 28119 LW(0,6), 28120 Mop(Cast F8, 28121 LL[bVar"b'7", 28122 bVar"b'6", 28123 bVar"b'5", 28124 bVar"b'4", 28125 bVar"b'3", 28126 bVar"b'2", 28127 bVar"b'1", 28128 bVar"b'0"])], 28129 TP[Call 28130 ("Store", 28131 CTy"instruction", 28132 Call 28133 ("StoreMultiple", 28134 CTy"Store", 28135 TP[LF,LT,LT, 28136 LW(13,4), 28137 Var("registers", 28138 F16)])), 28139 ITE(Bop(Lt, 28140 Call 28141 ("BitCount", 28142 nTy, 28143 Var("registers", 28144 F16)), 28145 LN 1), 28146 Apply 28147 (Call 28148 ("DECODE_UNPREDICTABLE", 28149 ATy(qTy,qTy), 28150 TP[Var("mc", 28151 CTy"MachineCode"), 28152 LS 28153 "StoreMultiple"]), 28154 qVar"s"),qVar"s")]), 28155 TP[Apply 28156 (Call 28157 ("Skip", 28158 ATy(qTy, 28159 CTy"instruction"), 28160 LU),qVar"s"),qVar"s"])))), 28161 (Bop(And,Mop(Not,bVar"b'14"), 28162 Bop(And,bVar"b'12", 28163 Bop(And,Mop(Not,bVar"b'11"), 28164 Bop(And,bVar"b'10", 28165 Bop(And,bVar"b'9", 28166 Bop(And, 28167 Mop(Not,bVar"b'8"), 28168 Bop(And, 28169 Mop(Not, 28170 bVar"b'7"), 28171 Bop(And, 28172 bVar"b'6", 28173 Mop(Not, 28174 bVar"b'5"))))))))), 28175 Let(TP[bVar"v",qVar"s"], 28176 Apply 28177 (Call 28178 ("Do",ATy(qTy,PTy(bTy,qTy)), 28179 TP[LW(14,4), 28180 Bop(Ge, 28181 Apply 28182 (Call 28183 ("ArchVersion", 28184 ATy(qTy,nTy),LU), 28185 qVar"state"),LN 6)]), 28186 qVar"state"), 28187 ITE(bVar"v", 28188 TP[Call 28189 ("System",CTy"instruction", 28190 Call 28191 ("Setend",CTy"System", 28192 EQ(Mop(Cast F1, 28193 LL[bVar"b'3"]), 28194 LW(1,1)))), 28195 ITE(Bop(Or, 28196 Apply 28197 (Call 28198 ("InITBlock", 28199 ATy(qTy,bTy),LU), 28200 qVar"s"), 28201 Mop(Not, 28202 Bop(And, 28203 EQ(Mop(Cast F1, 28204 LL[bVar"b'4"]), 28205 LW(1,1)), 28206 EQ(Mop(Cast 28207 (FTy 3), 28208 LL[bVar"b'2", 28209 bVar"b'1", 28210 bVar"b'0"]), 28211 LW(0,3))))), 28212 Apply 28213 (Call 28214 ("DECODE_UNPREDICTABLE", 28215 ATy(qTy,qTy), 28216 TP[Var("mc", 28217 CTy"MachineCode"), 28218 LS"Setend"]), 28219 qVar"s"),qVar"s")], 28220 TP[Apply 28221 (Call 28222 ("Skip", 28223 ATy(qTy,CTy"instruction"), 28224 LU),qVar"s"),qVar"s"]))), 28225 (Bop(And,Mop(Not,bVar"b'14"), 28226 Bop(And,bVar"b'12", 28227 Bop(And,Mop(Not,bVar"b'11"), 28228 Bop(And,bVar"b'10", 28229 Bop(And,bVar"b'9", 28230 Bop(And, 28231 Mop(Not,bVar"b'8"), 28232 Bop(And, 28233 Mop(Not, 28234 bVar"b'7"), 28235 Bop(And, 28236 bVar"b'6", 28237 bVar"b'5")))))))), 28238 Let(Var("F",F1), 28239 Mop(Cast F1,LL[bVar"b'0"]), 28240 Let(Var("I",F1), 28241 Mop(Cast F1,LL[bVar"b'1"]), 28242 Let(Var("A",F1), 28243 Mop(Cast F1,LL[bVar"b'2"]), 28244 Let(TP[bVar"v",qVar"s"], 28245 Apply 28246 (Call 28247 ("Do", 28248 ATy(qTy,PTy(bTy,qTy)), 28249 TP[LW(14,4), 28250 Bop(Ge, 28251 Apply 28252 (Call 28253 ("ArchVersion", 28254 ATy(qTy, 28255 nTy), 28256 LU), 28257 qVar"state"), 28258 LN 6)]), 28259 qVar"state"), 28260 ITE(bVar"v", 28261 TP[Let(bVar"enable", 28262 EQ(Mop(Cast F1, 28263 LL[bVar"b'4"]), 28264 LW(0,1)), 28265 Call 28266 ("System", 28267 CTy"instruction", 28268 Call 28269 ("ChangeProcessorState", 28270 CTy"System", 28271 TP[bVar"enable", 28272 Mop(Not, 28273 bVar"enable"), 28274 EQ(Var("A", 28275 F1), 28276 LW(1, 28277 1)), 28278 EQ(Var("I", 28279 F1), 28280 LW(1, 28281 1)), 28282 EQ(Var("F", 28283 F1), 28284 LW(1, 28285 1)), 28286 LO(FTy 5)]))), 28287 ITE(Bop(Or, 28288 EQ(CC[Var("A", 28289 F1), 28290 Var("I", 28291 F1), 28292 Var("F", 28293 F1)], 28294 LW(0,3)), 28295 Bop(Or, 28296 Apply 28297 (Call 28298 ("InITBlock", 28299 ATy(qTy, 28300 bTy), 28301 LU), 28302 qVar"s"), 28303 Mop(Not, 28304 EQ(Mop(Cast 28305 F1, 28306 LL[bVar"b'3"]), 28307 LW(0, 28308 1))))), 28309 Apply 28310 (Call 28311 ("DECODE_UNPREDICTABLE", 28312 ATy(qTy, 28313 qTy), 28314 TP[Var("mc", 28315 CTy"MachineCode"), 28316 LS 28317 "ChangeProcessorState"]), 28318 qVar"s"), 28319 qVar"s")], 28320 TP[Apply 28321 (Call 28322 ("Skip", 28323 ATy(qTy, 28324 CTy"instruction"), 28325 LU),qVar"s"), 28326 qVar"s"])))))), 28327 (Bop(And,Mop(Not,bVar"b'14"), 28328 Bop(And,bVar"b'12", 28329 Bop(And,bVar"b'11", 28330 Bop(And,Mop(Not,bVar"b'10"), 28331 Bop(And,bVar"b'9", 28332 Mop(Not,bVar"b'8")))))), 28333 Let(Var("Rd",FTy 3), 28334 Mop(Cast(FTy 3), 28335 LL[bVar"b'2",bVar"b'1",bVar"b'0"]), 28336 Let(Var("Rm",FTy 3), 28337 Mop(Cast(FTy 3), 28338 LL[bVar"b'5",bVar"b'4", 28339 bVar"b'3"]), 28340 Let(TP[Var("v",F4),qVar"s"], 28341 Apply 28342 (Call 28343 ("ThumbCondition", 28344 ATy(qTy,PTy(F4,qTy)),LU), 28345 qVar"state"), 28346 Let(TP[bVar"v",qVar"s"], 28347 Apply 28348 (Call 28349 ("Do", 28350 ATy(qTy,PTy(bTy,qTy)), 28351 TP[Var("v",F4), 28352 Bop(Ge, 28353 Apply 28354 (Call 28355 ("ArchVersion", 28356 ATy(qTy, 28357 nTy), 28358 LU), 28359 qVar"s"), 28360 LN 6)]), 28361 qVar"s"), 28362 TP[ITE(bVar"v", 28363 CS(Mop(Cast(FTy 2), 28364 LL[bVar"b'7", 28365 bVar"b'6"]), 28366 [(LW(0,2), 28367 Call 28368 ("Media", 28369 CTy"instruction", 28370 Call 28371 ("ByteReverse", 28372 CTy"Media", 28373 TP[Mop(Cast 28374 F4, 28375 Var("Rd", 28376 FTy 3)), 28377 Mop(Cast 28378 F4, 28379 Var("Rm", 28380 FTy 3))]))), 28381 (LW(1,2), 28382 Call 28383 ("Media", 28384 CTy"instruction", 28385 Call 28386 ("ByteReversePackedHalfword", 28387 CTy"Media", 28388 TP[Mop(Cast 28389 F4, 28390 Var("Rd", 28391 FTy 3)), 28392 Mop(Cast 28393 F4, 28394 Var("Rm", 28395 FTy 3))]))), 28396 (LW(3,2), 28397 Call 28398 ("Media", 28399 CTy"instruction", 28400 Call 28401 ("ByteReverseSignedHalfword", 28402 CTy"Media", 28403 TP[Mop(Cast 28404 F4, 28405 Var("Rd", 28406 FTy 3)), 28407 Mop(Cast 28408 F4, 28409 Var("Rm", 28410 FTy 3))]))), 28411 (AVar(FTy 2), 28412 Call 28413 ("Undefined", 28414 CTy"instruction", 28415 LW(0,32)))]), 28416 Apply 28417 (Call 28418 ("Skip", 28419 ATy(qTy, 28420 CTy"instruction"), 28421 LU),qVar"s")), 28422 qVar"s"]))))), 28423 (Bop(And,Mop(Not,bVar"b'14"), 28424 Bop(And,bVar"b'12", 28425 Bop(And,bVar"b'11", 28426 Bop(And,bVar"b'10", 28427 Mop(Not,bVar"b'9"))))), 28428 Let(TP[Var("v",F4),qVar"s"], 28429 Apply 28430 (Call 28431 ("ThumbCondition", 28432 ATy(qTy,PTy(F4,qTy)),LU), 28433 qVar"state"), 28434 Let(TP[bVar"v",qVar"s"], 28435 Apply 28436 (Call 28437 ("Do",ATy(qTy,PTy(bTy,qTy)), 28438 TP[Var("v",F4),LT]),qVar"s"), 28439 ITE(bVar"v", 28440 Let(Var("registers",F16), 28441 CC[Mop(Cast F1, 28442 LL[bVar"b'8"]), 28443 LW(0,7), 28444 Mop(Cast F8, 28445 LL[bVar"b'7", 28446 bVar"b'6", 28447 bVar"b'5", 28448 bVar"b'4", 28449 bVar"b'3", 28450 bVar"b'2", 28451 bVar"b'1", 28452 bVar"b'0"])], 28453 TP[Call 28454 ("Load", 28455 CTy"instruction", 28456 Call 28457 ("LoadMultiple", 28458 CTy"Load", 28459 TP[LT,LF,LT, 28460 LW(13,4), 28461 Var("registers", 28462 F16)])), 28463 ITE(Bop(Or, 28464 Bop(Lt, 28465 Call 28466 ("BitCount", 28467 nTy, 28468 Var("registers", 28469 F16)), 28470 LN 1), 28471 Bop(And, 28472 Bop(Bit, 28473 Var("registers", 28474 F16), 28475 LN 15), 28476 Bop(And, 28477 Apply 28478 (Call 28479 ("InITBlock", 28480 ATy(qTy, 28481 bTy), 28482 LU), 28483 qVar"s"), 28484 Mop(Not, 28485 Apply 28486 (Call 28487 ("LastInITBlock", 28488 ATy(qTy, 28489 bTy), 28490 LU), 28491 qVar"s"))))), 28492 Apply 28493 (Call 28494 ("DECODE_UNPREDICTABLE", 28495 ATy(qTy,qTy), 28496 TP[Var("mc", 28497 CTy"MachineCode"), 28498 LS 28499 "LoadMultiple"]), 28500 qVar"s"),qVar"s")]), 28501 TP[Apply 28502 (Call 28503 ("Skip", 28504 ATy(qTy, 28505 CTy"instruction"), 28506 LU),qVar"s"),qVar"s"])))), 28507 (Bop(And,Mop(Not,bVar"b'14"), 28508 Bop(And,bVar"b'12", 28509 Bop(And,bVar"b'11", 28510 Bop(And,bVar"b'10", 28511 Bop(And,bVar"b'9", 28512 Mop(Not,bVar"b'8")))))), 28513 Let(TP[bVar"v",qVar"s"], 28514 Apply 28515 (Call 28516 ("Do",ATy(qTy,PTy(bTy,qTy)), 28517 TP[LW(14,4), 28518 Bop(Ge, 28519 Apply 28520 (Call 28521 ("ArchVersion", 28522 ATy(qTy,nTy),LU), 28523 qVar"state"),LN 5)]), 28524 qVar"state"), 28525 TP[ITE(bVar"v", 28526 Call 28527 ("Hint",CTy"instruction", 28528 Call 28529 ("Breakpoint",CTy"Hint", 28530 Mop(Cast F32, 28531 Mop(Cast F8, 28532 LL[bVar"b'7", 28533 bVar"b'6", 28534 bVar"b'5", 28535 bVar"b'4", 28536 bVar"b'3", 28537 bVar"b'2", 28538 bVar"b'1", 28539 bVar"b'0"])))), 28540 Apply 28541 (Call 28542 ("Skip", 28543 ATy(qTy,CTy"instruction"), 28544 LU),qVar"s")),qVar"s"])), 28545 (Bop(And,Mop(Not,bVar"b'14"), 28546 Bop(And,bVar"b'12", 28547 Bop(And,bVar"b'11", 28548 Bop(And,bVar"b'10", 28549 Bop(And,bVar"b'9", 28550 Bop(And,bVar"b'8", 28551 Bop(And, 28552 Mop(Not, 28553 bVar"b'3"), 28554 Bop(And, 28555 Mop(Not, 28556 bVar"b'2"), 28557 Bop(And, 28558 Mop(Not, 28559 bVar"b'1"), 28560 Mop(Not, 28561 bVar"b'0")))))))))), 28562 Let(TP[Var("v",F4),qVar"s"], 28563 Apply 28564 (Call 28565 ("ThumbCondition", 28566 ATy(qTy,PTy(F4,qTy)),LU), 28567 qVar"state"), 28568 Apply 28569 (Call 28570 ("DecodeHint", 28571 ATy(qTy, 28572 PTy(CTy"instruction",qTy)), 28573 TP[Var("v",F4), 28574 Mop(Cast F8, 28575 Mop(Cast F4, 28576 LL[bVar"b'7", 28577 bVar"b'6", 28578 bVar"b'5", 28579 bVar"b'4"]))]), 28580 qVar"s"))), 28581 (Bop(And,Mop(Not,bVar"b'14"), 28582 Bop(And,bVar"b'12", 28583 Bop(And,bVar"b'11", 28584 Bop(And,bVar"b'10", 28585 Bop(And,bVar"b'9", 28586 bVar"b'8"))))), 28587 Let(Var("mask",F4), 28588 Mop(Cast F4, 28589 LL[bVar"b'3",bVar"b'2",bVar"b'1", 28590 bVar"b'0"]), 28591 Let(Var("firstcond",F4), 28592 Mop(Cast F4, 28593 LL[bVar"b'7",bVar"b'6", 28594 bVar"b'5",bVar"b'4"]), 28595 Let(TP[bVar"v",qVar"s"], 28596 Apply 28597 (Call 28598 ("Do", 28599 ATy(qTy,PTy(bTy,qTy)), 28600 TP[LW(14,4), 28601 Apply 28602 (Call 28603 ("HaveThumb2", 28604 ATy(qTy,bTy),LU), 28605 qVar"state")]), 28606 qVar"state"), 28607 ITE(bVar"v", 28608 TP[Call 28609 ("IfThen", 28610 CTy"instruction", 28611 TP[Var("firstcond", 28612 F4), 28613 Var("mask",F4)]), 28614 ITE(Bop(Or, 28615 EQ(Var("firstcond", 28616 F4), 28617 LW(15,4)), 28618 Bop(Or, 28619 Bop(And, 28620 EQ(Var("firstcond", 28621 F4), 28622 LW(14, 28623 4)), 28624 Mop(Not, 28625 EQ(Call 28626 ("BitCount", 28627 nTy, 28628 Var("mask", 28629 F4)), 28630 LN 28631 1))), 28632 Apply 28633 (Call 28634 ("InITBlock", 28635 ATy(qTy, 28636 bTy), 28637 LU), 28638 qVar"s"))), 28639 Apply 28640 (Call 28641 ("DECODE_UNPREDICTABLE", 28642 ATy(qTy,qTy), 28643 TP[Var("mc", 28644 CTy"MachineCode"), 28645 LS"IfThen"]), 28646 qVar"s"),qVar"s")], 28647 TP[Apply 28648 (Call 28649 ("Skip", 28650 ATy(qTy, 28651 CTy"instruction"), 28652 LU),qVar"s"), 28653 qVar"s"]))))), 28654 (Bop(And,bVar"b'14", 28655 Bop(And,Mop(Not,bVar"b'12"), 28656 Mop(Not,bVar"b'11"))), 28657 Let(TP[Var("v",F4),qVar"s"], 28658 Apply 28659 (Call 28660 ("ThumbCondition", 28661 ATy(qTy,PTy(F4,qTy)),LU), 28662 qVar"state"), 28663 Let(TP[bVar"v",qVar"s"], 28664 Apply 28665 (Call 28666 ("Do",ATy(qTy,PTy(bTy,qTy)), 28667 TP[Var("v",F4),LT]),qVar"s"), 28668 ITE(bVar"v", 28669 TP[Call 28670 ("Branch", 28671 CTy"instruction", 28672 Call 28673 ("BranchTarget", 28674 CTy"Branch", 28675 Mop(SE F32, 28676 CC[Mop(Cast 28677 (FTy 11), 28678 LL[bVar"b'10", 28679 bVar"b'9", 28680 bVar"b'8", 28681 bVar"b'7", 28682 bVar"b'6", 28683 bVar"b'5", 28684 bVar"b'4", 28685 bVar"b'3", 28686 bVar"b'2", 28687 bVar"b'1", 28688 bVar"b'0"]), 28689 LW(0,1)]))), 28690 ITE(Bop(And, 28691 Apply 28692 (Call 28693 ("InITBlock", 28694 ATy(qTy,bTy), 28695 LU),qVar"s"), 28696 Mop(Not, 28697 Apply 28698 (Call 28699 ("LastInITBlock", 28700 ATy(qTy, 28701 bTy), 28702 LU), 28703 qVar"s"))), 28704 Apply 28705 (Call 28706 ("DECODE_UNPREDICTABLE", 28707 ATy(qTy,qTy), 28708 TP[Var("mc", 28709 CTy"MachineCode"), 28710 LS 28711 "BranchTarget"]), 28712 qVar"s"),qVar"s")], 28713 TP[Apply 28714 (Call 28715 ("Skip", 28716 ATy(qTy, 28717 CTy"instruction"), 28718 LU),qVar"s"),qVar"s"]))))], 28719 Apply 28720 (Call 28721 ("UndefinedThumb", 28722 ATy(qTy,PTy(CTy"instruction",qTy)),LU), 28723 qVar"state"))), 28724 (Bop(And,Mop(Not,bVar"b'14"), 28725 Bop(And,Mop(Not,bVar"b'12"), 28726 Mop(Not,bVar"b'11"))), 28727 Let(TP[Var("v",F4),qVar"s"], 28728 Apply 28729 (Call 28730 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)), 28731 LU),qVar"state"), 28732 Let(TP[bVar"v",qVar"s"], 28733 Apply 28734 (Call 28735 ("Do",ATy(qTy,PTy(bTy,qTy)), 28736 TP[Var("v",F4),LT]),qVar"s"), 28737 TP[ITE(bVar"v", 28738 Call 28739 ("Data",CTy"instruction", 28740 Call 28741 ("Move",CTy"Data", 28742 TP[Mop(Not, 28743 Apply 28744 (Call 28745 ("InITBlock", 28746 ATy(qTy,bTy), 28747 LU),qVar"s")), 28748 LF, 28749 Mop(Cast F4, 28750 Mop(Cast(FTy 3), 28751 LL[bVar"b'10", 28752 bVar"b'9", 28753 bVar"b'8"])), 28754 Mop(Cast(FTy 12), 28755 Mop(Cast F8, 28756 LL[bVar"b'7", 28757 bVar"b'6", 28758 bVar"b'5", 28759 bVar"b'4", 28760 bVar"b'3", 28761 bVar"b'2", 28762 bVar"b'1", 28763 bVar"b'0"]))])), 28764 Apply 28765 (Call 28766 ("Skip", 28767 ATy(qTy,CTy"instruction"), 28768 LU),qVar"s")),qVar"s"]))), 28769 (Bop(And,Mop(Not,bVar"b'14"), 28770 Bop(And,Mop(Not,bVar"b'12"),bVar"b'11")), 28771 Let(TP[Var("v",F4),qVar"s"], 28772 Apply 28773 (Call 28774 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)), 28775 LU),qVar"state"), 28776 Let(TP[bVar"v",qVar"s"], 28777 Apply 28778 (Call 28779 ("Do",ATy(qTy,PTy(bTy,qTy)), 28780 TP[Var("v",F4),LT]),qVar"s"), 28781 TP[ITE(bVar"v", 28782 Call 28783 ("Data",CTy"instruction", 28784 Call 28785 ("TestCompareImmediate", 28786 CTy"Data", 28787 TP[LW(2,2), 28788 Mop(Cast F4, 28789 Mop(Cast(FTy 3), 28790 LL[bVar"b'10", 28791 bVar"b'9", 28792 bVar"b'8"])), 28793 Mop(Cast(FTy 12), 28794 Mop(Cast F8, 28795 LL[bVar"b'7", 28796 bVar"b'6", 28797 bVar"b'5", 28798 bVar"b'4", 28799 bVar"b'3", 28800 bVar"b'2", 28801 bVar"b'1", 28802 bVar"b'0"]))])), 28803 Apply 28804 (Call 28805 ("Skip", 28806 ATy(qTy,CTy"instruction"), 28807 LU),qVar"s")),qVar"s"]))), 28808 (Bop(And,Mop(Not,bVar"b'14"),bVar"b'12"), 28809 Let(TP[Var("v",F4),qVar"s"], 28810 Apply 28811 (Call 28812 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)), 28813 LU),qVar"state"), 28814 Let(TP[bVar"v",qVar"s"], 28815 Apply 28816 (Call 28817 ("Do",ATy(qTy,PTy(bTy,qTy)), 28818 TP[Var("v",F4),LT]),qVar"s"), 28819 ITE(bVar"v", 28820 Let(Var("d",F4), 28821 Mop(Cast F4, 28822 Mop(Cast(FTy 3), 28823 LL[bVar"b'10",bVar"b'9", 28824 bVar"b'8"])), 28825 TP[Call 28826 ("Data",CTy"instruction", 28827 Call 28828 ("ArithLogicImmediate", 28829 CTy"Data", 28830 TP[ITE(EQ(Mop(Cast F1, 28831 LL[bVar"b'11"]), 28832 LW(1,1)), 28833 LW(2,4),LW(4,4)), 28834 Mop(Not, 28835 Apply 28836 (Call 28837 ("InITBlock", 28838 ATy(qTy, 28839 bTy), 28840 LU), 28841 qVar"s")), 28842 Var("d",F4), 28843 Var("d",F4), 28844 Mop(Cast(FTy 12), 28845 Mop(Cast F8, 28846 LL[bVar"b'7", 28847 bVar"b'6", 28848 bVar"b'5", 28849 bVar"b'4", 28850 bVar"b'3", 28851 bVar"b'2", 28852 bVar"b'1", 28853 bVar"b'0"]))])), 28854 qVar"s"]), 28855 TP[Apply 28856 (Call 28857 ("Skip", 28858 ATy(qTy,CTy"instruction"), 28859 LU),qVar"s"),qVar"s"])))), 28860 (Bop(And,bVar"b'14",Mop(Not,bVar"b'12")), 28861 Let(Var("Rt",FTy 3), 28862 Mop(Cast(FTy 3), 28863 LL[bVar"b'2",bVar"b'1",bVar"b'0"]), 28864 Let(Var("Rn",FTy 3), 28865 Mop(Cast(FTy 3), 28866 LL[bVar"b'5",bVar"b'4",bVar"b'3"]), 28867 Let(TP[Var("v",F4),qVar"s"], 28868 Apply 28869 (Call 28870 ("ThumbCondition", 28871 ATy(qTy,PTy(F4,qTy)),LU), 28872 qVar"state"), 28873 Let(TP[bVar"v",qVar"s"], 28874 Apply 28875 (Call 28876 ("Do", 28877 ATy(qTy,PTy(bTy,qTy)), 28878 TP[Var("v",F4),LT]), 28879 qVar"s"), 28880 TP[ITE(bVar"v", 28881 Let(Var("m",CTy"offset1"), 28882 Call 28883 ("immediate_form1", 28884 CTy"offset1", 28885 Mop(Cast F32, 28886 CC[Mop(Cast 28887 (FTy 5), 28888 LL[bVar"b'10", 28889 bVar"b'9", 28890 bVar"b'8", 28891 bVar"b'7", 28892 bVar"b'6"]), 28893 LW(0,2)])), 28894 ITE(EQ(Mop(Cast F1, 28895 LL[bVar"b'11"]), 28896 LW(1,1)), 28897 Call 28898 ("Load", 28899 CTy"instruction", 28900 Call 28901 ("LoadWord", 28902 CTy"Load", 28903 TP[LT,LT, 28904 LF, 28905 Mop(Cast 28906 F4, 28907 Var("Rt", 28908 FTy 3)), 28909 Mop(Cast 28910 F4, 28911 Var("Rn", 28912 FTy 3)), 28913 Var("m", 28914 CTy"offset1")])), 28915 Call 28916 ("Store", 28917 CTy"instruction", 28918 Call 28919 ("StoreWord", 28920 CTy"Store", 28921 TP[LT,LT, 28922 LF, 28923 Mop(Cast 28924 F4, 28925 Var("Rt", 28926 FTy 3)), 28927 Mop(Cast 28928 F4, 28929 Var("Rn", 28930 FTy 3)), 28931 Var("m", 28932 CTy"offset1")])))), 28933 Apply 28934 (Call 28935 ("Skip", 28936 ATy(qTy, 28937 CTy"instruction"), 28938 LU),qVar"s")), 28939 qVar"s"]))))), 28940 (Bop(And,bVar"b'14",bVar"b'12"), 28941 Let(Var("Rt",FTy 3), 28942 Mop(Cast(FTy 3), 28943 LL[bVar"b'2",bVar"b'1",bVar"b'0"]), 28944 Let(Var("Rn",FTy 3), 28945 Mop(Cast(FTy 3), 28946 LL[bVar"b'5",bVar"b'4",bVar"b'3"]), 28947 Let(TP[Var("v",F4),qVar"s"], 28948 Apply 28949 (Call 28950 ("ThumbCondition", 28951 ATy(qTy,PTy(F4,qTy)),LU), 28952 qVar"state"), 28953 Let(TP[bVar"v",qVar"s"], 28954 Apply 28955 (Call 28956 ("Do", 28957 ATy(qTy,PTy(bTy,qTy)), 28958 TP[Var("v",F4),LT]), 28959 qVar"s"), 28960 TP[ITE(bVar"v", 28961 Let(Var("m",CTy"offset1"), 28962 Call 28963 ("immediate_form1", 28964 CTy"offset1", 28965 Mop(Cast F32, 28966 Mop(Cast 28967 (FTy 5), 28968 LL[bVar"b'10", 28969 bVar"b'9", 28970 bVar"b'8", 28971 bVar"b'7", 28972 bVar"b'6"]))), 28973 ITE(EQ(Mop(Cast F1, 28974 LL[bVar"b'11"]), 28975 LW(1,1)), 28976 Call 28977 ("Load", 28978 CTy"instruction", 28979 Call 28980 ("LoadByte", 28981 CTy"Load", 28982 TP[LT,LT, 28983 LT,LF, 28984 Mop(Cast 28985 F4, 28986 Var("Rt", 28987 FTy 3)), 28988 Mop(Cast 28989 F4, 28990 Var("Rn", 28991 FTy 3)), 28992 Var("m", 28993 CTy"offset1")])), 28994 Call 28995 ("Store", 28996 CTy"instruction", 28997 Call 28998 ("StoreByte", 28999 CTy"Store", 29000 TP[LT,LT, 29001 LF, 29002 Mop(Cast 29003 F4, 29004 Var("Rt", 29005 FTy 3)), 29006 Mop(Cast 29007 F4, 29008 Var("Rn", 29009 FTy 3)), 29010 Var("m", 29011 CTy"offset1")])))), 29012 Apply 29013 (Call 29014 ("Skip", 29015 ATy(qTy, 29016 CTy"instruction"), 29017 LU),qVar"s")), 29018 qVar"s"])))))], 29019 Apply 29020 (Call 29021 ("UndefinedThumb", 29022 ATy(qTy,PTy(CTy"instruction",qTy)),LU), 29023 qVar"state"))), 29024 (bVar"b'15", 29025 ITB([(Bop(And,Mop(Not,bVar"b'14"),Mop(Not,bVar"b'12")), 29026 Let(Var("Rt",FTy 3), 29027 Mop(Cast(FTy 3), 29028 LL[bVar"b'2",bVar"b'1",bVar"b'0"]), 29029 Let(Var("Rn",FTy 3), 29030 Mop(Cast(FTy 3), 29031 LL[bVar"b'5",bVar"b'4",bVar"b'3"]), 29032 Let(TP[Var("v",F4),qVar"s"], 29033 Apply 29034 (Call 29035 ("ThumbCondition", 29036 ATy(qTy,PTy(F4,qTy)),LU), 29037 qVar"state"), 29038 Let(TP[bVar"v",qVar"s"], 29039 Apply 29040 (Call 29041 ("Do", 29042 ATy(qTy,PTy(bTy,qTy)), 29043 TP[Var("v",F4),LT]), 29044 qVar"s"), 29045 TP[ITE(bVar"v", 29046 Let(Var("m",CTy"offset1"), 29047 Call 29048 ("immediate_form1", 29049 CTy"offset1", 29050 Mop(Cast F32, 29051 CC[Mop(Cast 29052 (FTy 5), 29053 LL[bVar"b'10", 29054 bVar"b'9", 29055 bVar"b'8", 29056 bVar"b'7", 29057 bVar"b'6"]), 29058 LW(0,1)])), 29059 ITE(EQ(Mop(Cast F1, 29060 LL[bVar"b'11"]), 29061 LW(1,1)), 29062 Call 29063 ("Load", 29064 CTy"instruction", 29065 Call 29066 ("LoadHalf", 29067 CTy"Load", 29068 TP[LT,LT, 29069 LT,LF, 29070 Mop(Cast 29071 F4, 29072 Var("Rt", 29073 FTy 3)), 29074 Mop(Cast 29075 F4, 29076 Var("Rn", 29077 FTy 3)), 29078 Var("m", 29079 CTy"offset1")])), 29080 Call 29081 ("Store", 29082 CTy"instruction", 29083 Call 29084 ("StoreHalf", 29085 CTy"Store", 29086 TP[LT,LT, 29087 LF, 29088 Mop(Cast 29089 F4, 29090 Var("Rt", 29091 FTy 3)), 29092 Mop(Cast 29093 F4, 29094 Var("Rn", 29095 FTy 3)), 29096 Var("m", 29097 CTy"offset1")])))), 29098 Apply 29099 (Call 29100 ("Skip", 29101 ATy(qTy, 29102 CTy"instruction"), 29103 LU),qVar"s")), 29104 qVar"s"]))))), 29105 (Bop(And,Mop(Not,bVar"b'14"),bVar"b'12"), 29106 Let(Var("Rt",FTy 3), 29107 Mop(Cast(FTy 3), 29108 LL[bVar"b'10",bVar"b'9",bVar"b'8"]), 29109 Let(TP[Var("v",F4),qVar"s"], 29110 Apply 29111 (Call 29112 ("ThumbCondition", 29113 ATy(qTy,PTy(F4,qTy)),LU), 29114 qVar"state"), 29115 Let(TP[bVar"v",qVar"s"], 29116 Apply 29117 (Call 29118 ("Do",ATy(qTy,PTy(bTy,qTy)), 29119 TP[Var("v",F4),LT]),qVar"s"), 29120 TP[ITE(bVar"v", 29121 Let(Var("m",CTy"offset1"), 29122 Call 29123 ("immediate_form1", 29124 CTy"offset1", 29125 Mop(Cast F32, 29126 CC[Mop(Cast F8, 29127 LL[bVar"b'7", 29128 bVar"b'6", 29129 bVar"b'5", 29130 bVar"b'4", 29131 bVar"b'3", 29132 bVar"b'2", 29133 bVar"b'1", 29134 bVar"b'0"]), 29135 LW(0,2)])), 29136 ITE(EQ(Mop(Cast F1, 29137 LL[bVar"b'11"]), 29138 LW(1,1)), 29139 Call 29140 ("Load", 29141 CTy"instruction", 29142 Call 29143 ("LoadWord", 29144 CTy"Load", 29145 TP[LT,LT,LF, 29146 Mop(Cast F4, 29147 Var("Rt", 29148 FTy 3)), 29149 LW(13,4), 29150 Var("m", 29151 CTy"offset1")])), 29152 Call 29153 ("Store", 29154 CTy"instruction", 29155 Call 29156 ("StoreWord", 29157 CTy"Store", 29158 TP[LT,LT,LF, 29159 Mop(Cast F4, 29160 Var("Rt", 29161 FTy 3)), 29162 LW(13,4), 29163 Var("m", 29164 CTy"offset1")])))), 29165 Apply 29166 (Call 29167 ("Skip", 29168 ATy(qTy, 29169 CTy"instruction"), 29170 LU),qVar"s")),qVar"s"])))), 29171 (Bop(And,bVar"b'14", 29172 Bop(And,Mop(Not,bVar"b'12"), 29173 Mop(Not,bVar"b'11"))), 29174 Let(TP[Var("v",F4),qVar"s"], 29175 Apply 29176 (Call 29177 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)), 29178 LU),qVar"state"), 29179 Let(TP[bVar"v",qVar"s"], 29180 Apply 29181 (Call 29182 ("Do",ATy(qTy,PTy(bTy,qTy)), 29183 TP[Var("v",F4),LT]),qVar"s"), 29184 ITE(bVar"v", 29185 Let(Var("registers",F16), 29186 Mop(Cast F16, 29187 Mop(Cast F8, 29188 LL[bVar"b'7",bVar"b'6", 29189 bVar"b'5",bVar"b'4", 29190 bVar"b'3",bVar"b'2", 29191 bVar"b'1",bVar"b'0"])), 29192 TP[Call 29193 ("Store",CTy"instruction", 29194 Call 29195 ("StoreMultiple", 29196 CTy"Store", 29197 TP[LT,LF,LT, 29198 Mop(Cast F4, 29199 Mop(Cast(FTy 3), 29200 LL[bVar"b'10", 29201 bVar"b'9", 29202 bVar"b'8"])), 29203 Var("registers",F16)])), 29204 ITE(Bop(Lt, 29205 Call 29206 ("BitCount",nTy, 29207 Var("registers", 29208 F16)),LN 1), 29209 Apply 29210 (Call 29211 ("DECODE_UNPREDICTABLE", 29212 ATy(qTy,qTy), 29213 TP[Var("mc", 29214 CTy"MachineCode"), 29215 LS 29216 "StoreMultiple"]), 29217 qVar"s"),qVar"s")]), 29218 TP[Apply 29219 (Call 29220 ("Skip", 29221 ATy(qTy,CTy"instruction"), 29222 LU),qVar"s"),qVar"s"])))), 29223 (Bop(And,bVar"b'14", 29224 Bop(And,Mop(Not,bVar"b'12"),bVar"b'11")), 29225 Let(Var("Rn",FTy 3), 29226 Mop(Cast(FTy 3), 29227 LL[bVar"b'10",bVar"b'9",bVar"b'8"]), 29228 Let(TP[Var("v",F4),qVar"s"], 29229 Apply 29230 (Call 29231 ("ThumbCondition", 29232 ATy(qTy,PTy(F4,qTy)),LU), 29233 qVar"state"), 29234 Let(TP[bVar"v",qVar"s"], 29235 Apply 29236 (Call 29237 ("Do",ATy(qTy,PTy(bTy,qTy)), 29238 TP[Var("v",F4),LT]),qVar"s"), 29239 ITE(bVar"v", 29240 Let(Var("registers",F16), 29241 Mop(Cast F16, 29242 Mop(Cast F8, 29243 LL[bVar"b'7", 29244 bVar"b'6", 29245 bVar"b'5", 29246 bVar"b'4", 29247 bVar"b'3", 29248 bVar"b'2", 29249 bVar"b'1", 29250 bVar"b'0"])), 29251 TP[Call 29252 ("Load", 29253 CTy"instruction", 29254 Call 29255 ("LoadMultiple", 29256 CTy"Load", 29257 TP[LT,LF, 29258 Mop(Not, 29259 Bop(Bit, 29260 Var("registers", 29261 F16), 29262 Mop(Cast 29263 nTy, 29264 Var("Rn", 29265 FTy 3)))), 29266 Mop(Cast F4, 29267 Var("Rn", 29268 FTy 3)), 29269 Var("registers", 29270 F16)])), 29271 ITE(Bop(Lt, 29272 Call 29273 ("BitCount", 29274 nTy, 29275 Var("registers", 29276 F16)),LN 1), 29277 Apply 29278 (Call 29279 ("DECODE_UNPREDICTABLE", 29280 ATy(qTy,qTy), 29281 TP[Var("mc", 29282 CTy"MachineCode"), 29283 LS 29284 "LoadMultiple"]), 29285 qVar"s"),qVar"s")]), 29286 TP[Apply 29287 (Call 29288 ("Skip", 29289 ATy(qTy, 29290 CTy"instruction"), 29291 LU),qVar"s"),qVar"s"]))))), 29292 (Bop(And,bVar"b'14", 29293 Bop(And,bVar"b'12", 29294 Bop(And,bVar"b'11", 29295 Bop(And,bVar"b'10", 29296 Bop(And,bVar"b'9", 29297 Mop(Not,bVar"b'8")))))), 29298 Let(TP[Var("v",F4),qVar"s"], 29299 Apply 29300 (Call 29301 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)), 29302 LU),qVar"state"), 29303 Let(TP[bVar"v",qVar"s"], 29304 Apply 29305 (Call 29306 ("Do",ATy(qTy,PTy(bTy,qTy)), 29307 TP[Var("v",F4),LT]),qVar"s"), 29308 TP[ITE(bVar"v", 29309 Call 29310 ("Undefined",CTy"instruction", 29311 Mop(Cast F32, 29312 Mop(Cast F8, 29313 LL[bVar"b'7", 29314 bVar"b'6", 29315 bVar"b'5", 29316 bVar"b'4", 29317 bVar"b'3", 29318 bVar"b'2", 29319 bVar"b'1",bVar"b'0"]))), 29320 Apply 29321 (Call 29322 ("Skip", 29323 ATy(qTy,CTy"instruction"), 29324 LU),qVar"s")),qVar"s"]))), 29325 (Bop(And,bVar"b'14", 29326 Bop(And,bVar"b'12", 29327 Bop(And,bVar"b'11", 29328 Bop(And,bVar"b'10", 29329 Bop(And,bVar"b'9",bVar"b'8"))))), 29330 Let(TP[Var("v",F4),qVar"s"], 29331 Apply 29332 (Call 29333 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)), 29334 LU),qVar"state"), 29335 Let(TP[bVar"v",qVar"s"], 29336 Apply 29337 (Call 29338 ("Do",ATy(qTy,PTy(bTy,qTy)), 29339 TP[Var("v",F4),LT]),qVar"s"), 29340 TP[ITE(bVar"v", 29341 Call 29342 ("System",CTy"instruction", 29343 Call 29344 ("SupervisorCall", 29345 CTy"System", 29346 Mop(Cast F32, 29347 Mop(Cast F8, 29348 LL[bVar"b'7", 29349 bVar"b'6", 29350 bVar"b'5", 29351 bVar"b'4", 29352 bVar"b'3", 29353 bVar"b'2", 29354 bVar"b'1", 29355 bVar"b'0"])))), 29356 Apply 29357 (Call 29358 ("Skip", 29359 ATy(qTy,CTy"instruction"), 29360 LU),qVar"s")),qVar"s"]))), 29361 (Bop(And,bVar"b'14",bVar"b'12"), 29362 Let(TP[bVar"v",qVar"s"], 29363 Apply 29364 (Call 29365 ("Do",ATy(qTy,PTy(bTy,qTy)), 29366 TP[Mop(Cast F4, 29367 LL[bVar"b'11",bVar"b'10", 29368 bVar"b'9",bVar"b'8"]),LT]), 29369 qVar"state"), 29370 ITE(bVar"v", 29371 TP[Call 29372 ("Branch",CTy"instruction", 29373 Call 29374 ("BranchTarget",CTy"Branch", 29375 Mop(SE F32, 29376 CC[Mop(Cast F8, 29377 LL[bVar"b'7", 29378 bVar"b'6", 29379 bVar"b'5", 29380 bVar"b'4", 29381 bVar"b'3", 29382 bVar"b'2", 29383 bVar"b'1", 29384 bVar"b'0"]), 29385 LW(0,1)]))), 29386 ITE(Apply 29387 (Call 29388 ("InITBlock",ATy(qTy,bTy),LU), 29389 qVar"s"), 29390 Apply 29391 (Call 29392 ("DECODE_UNPREDICTABLE", 29393 ATy(qTy,qTy), 29394 TP[Var("mc", 29395 CTy"MachineCode"), 29396 LS"BranchTarget"]), 29397 qVar"s"),qVar"s")], 29398 TP[Apply 29399 (Call 29400 ("Skip", 29401 ATy(qTy,CTy"instruction"),LU), 29402 qVar"s"),qVar"s"])))], 29403 Apply 29404 (Call 29405 ("UndefinedThumb", 29406 ATy(qTy,PTy(CTy"instruction",qTy)),LU), 29407 qVar"state"))), 29408 (Bop(And,Mop(Not,bVar"b'14"), 29409 Bop(And,bVar"b'12", 29410 Bop(And,bVar"b'11",Mop(Not,bVar"b'10")))), 29411 Let(TP[Var("v",F4),qVar"s"], 29412 Apply 29413 (Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 29414 qVar"state"), 29415 Let(TP[bVar"v",qVar"s"], 29416 Apply 29417 (Call 29418 ("Do",ATy(qTy,PTy(bTy,qTy)), 29419 TP[Var("v",F4),LT]),qVar"s"), 29420 TP[ITE(bVar"v", 29421 Call 29422 ("Data",CTy"instruction", 29423 Call 29424 ("Register",CTy"Data", 29425 TP[ITE(EQ(Mop(Cast F1, 29426 LL[bVar"b'9"]), 29427 LW(1,1)),LW(2,4), 29428 LW(4,4)), 29429 Mop(Not, 29430 Apply 29431 (Call 29432 ("InITBlock", 29433 ATy(qTy,bTy),LU), 29434 qVar"s")), 29435 Mop(Cast F4, 29436 Mop(Cast(FTy 3), 29437 LL[bVar"b'2", 29438 bVar"b'1",bVar"b'0"])), 29439 Mop(Cast F4, 29440 Mop(Cast(FTy 3), 29441 LL[bVar"b'5", 29442 bVar"b'4",bVar"b'3"])), 29443 Mop(Cast F4, 29444 Mop(Cast(FTy 3), 29445 LL[bVar"b'8", 29446 bVar"b'7",bVar"b'6"])), 29447 LC("SRType_LSL",CTy"SRType"), 29448 LN 0])), 29449 Apply 29450 (Call 29451 ("Skip",ATy(qTy,CTy"instruction"), 29452 LU),qVar"s")),qVar"s"]))), 29453 (Bop(And,Mop(Not,bVar"b'14"), 29454 Bop(And,bVar"b'12",Bop(And,bVar"b'11",bVar"b'10"))), 29455 Let(TP[Var("v",F4),qVar"s"], 29456 Apply 29457 (Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 29458 qVar"state"), 29459 Let(TP[bVar"v",qVar"s"], 29460 Apply 29461 (Call 29462 ("Do",ATy(qTy,PTy(bTy,qTy)), 29463 TP[Var("v",F4),LT]),qVar"s"), 29464 TP[ITE(bVar"v", 29465 Call 29466 ("Data",CTy"instruction", 29467 Call 29468 ("ArithLogicImmediate",CTy"Data", 29469 TP[ITE(EQ(Mop(Cast F1, 29470 LL[bVar"b'9"]), 29471 LW(1,1)),LW(2,4), 29472 LW(4,4)), 29473 Mop(Not, 29474 Apply 29475 (Call 29476 ("InITBlock", 29477 ATy(qTy,bTy),LU), 29478 qVar"s")), 29479 Mop(Cast F4, 29480 Mop(Cast(FTy 3), 29481 LL[bVar"b'2", 29482 bVar"b'1",bVar"b'0"])), 29483 Mop(Cast F4, 29484 Mop(Cast(FTy 3), 29485 LL[bVar"b'5", 29486 bVar"b'4",bVar"b'3"])), 29487 Mop(Cast(FTy 12), 29488 Mop(Cast(FTy 3), 29489 LL[bVar"b'8", 29490 bVar"b'7",bVar"b'6"]))])), 29491 Apply 29492 (Call 29493 ("Skip",ATy(qTy,CTy"instruction"), 29494 LU),qVar"s")),qVar"s"]))), 29495 (Mop(Not,bVar"b'14"), 29496 Let(TP[Var("v",F4),qVar"s"], 29497 Apply 29498 (Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 29499 qVar"state"), 29500 Let(TP[bVar"v",qVar"s"], 29501 Apply 29502 (Call 29503 ("Do",ATy(qTy,PTy(bTy,qTy)), 29504 TP[Var("v",F4),LT]),qVar"s"), 29505 TP[ITE(bVar"v", 29506 Let(TP[Var("shift_t",CTy"SRType"), 29507 nVar"shift_n"], 29508 Call 29509 ("DecodeImmShift", 29510 PTy(CTy"SRType",nTy), 29511 TP[Mop(Cast(FTy 2), 29512 LL[bVar"b'12",bVar"b'11"]), 29513 Mop(Cast(FTy 5), 29514 LL[bVar"b'10",bVar"b'9", 29515 bVar"b'8",bVar"b'7", 29516 bVar"b'6"])]), 29517 Call 29518 ("Data",CTy"instruction", 29519 Call 29520 ("ShiftImmediate",CTy"Data", 29521 TP[LF, 29522 Mop(Not, 29523 Apply 29524 (Call 29525 ("InITBlock", 29526 ATy(qTy,bTy),LU), 29527 qVar"s")), 29528 Mop(Cast F4, 29529 Mop(Cast(FTy 3), 29530 LL[bVar"b'2", 29531 bVar"b'1", 29532 bVar"b'0"])), 29533 Mop(Cast F4, 29534 Mop(Cast(FTy 3), 29535 LL[bVar"b'5", 29536 bVar"b'4", 29537 bVar"b'3"])), 29538 Var("shift_t",CTy"SRType"), 29539 nVar"shift_n"]))), 29540 Apply 29541 (Call 29542 ("Skip",ATy(qTy,CTy"instruction"), 29543 LU),qVar"s")),qVar"s"]))), 29544 (Bop(And,bVar"b'14", 29545 Bop(And,Mop(Not,bVar"b'12"), 29546 Bop(And,Mop(Not,bVar"b'11"), 29547 Mop(Not,bVar"b'10")))), 29548 Let(Var("Ry",FTy 3), 29549 Mop(Cast(FTy 3),LL[bVar"b'2",bVar"b'1",bVar"b'0"]), 29550 Let(Var("Rx",FTy 3), 29551 Mop(Cast(FTy 3), 29552 LL[bVar"b'5",bVar"b'4",bVar"b'3"]), 29553 Let(Var("opc",F4), 29554 Mop(Cast F4, 29555 LL[bVar"b'9",bVar"b'8",bVar"b'7", 29556 bVar"b'6"]), 29557 Let(TP[Var("v",F4),qVar"s"], 29558 Apply 29559 (Call 29560 ("ThumbCondition", 29561 ATy(qTy,PTy(F4,qTy)),LU), 29562 qVar"state"), 29563 Let(TP[bVar"v",qVar"s"], 29564 Apply 29565 (Call 29566 ("Do",ATy(qTy,PTy(bTy,qTy)), 29567 TP[Var("v",F4),LT]),qVar"s"), 29568 ITE(bVar"v", 29569 CS(Var("opc",F4), 29570 [(LW(0,4), 29571 Let(Var("d",F4), 29572 Mop(Cast F4, 29573 Var("Ry",FTy 3)), 29574 TP[Call 29575 ("Data", 29576 CTy"instruction", 29577 Call 29578 ("Register", 29579 CTy"Data", 29580 TP[Var("opc", 29581 F4), 29582 Mop(Not, 29583 Apply 29584 (Call 29585 ("InITBlock", 29586 ATy(qTy, 29587 bTy), 29588 LU), 29589 qVar"s")), 29590 Var("d", 29591 F4), 29592 Var("d", 29593 F4), 29594 Mop(Cast 29595 F4, 29596 Var("Rx", 29597 FTy 3)), 29598 LC("SRType_LSL", 29599 CTy"SRType"), 29600 LN 0])), 29601 qVar"s"])), 29602 (LW(1,4), 29603 Let(Var("d",F4), 29604 Mop(Cast F4, 29605 Var("Ry",FTy 3)), 29606 TP[Call 29607 ("Data", 29608 CTy"instruction", 29609 Call 29610 ("Register", 29611 CTy"Data", 29612 TP[Var("opc", 29613 F4), 29614 Mop(Not, 29615 Apply 29616 (Call 29617 ("InITBlock", 29618 ATy(qTy, 29619 bTy), 29620 LU), 29621 qVar"s")), 29622 Var("d", 29623 F4), 29624 Var("d", 29625 F4), 29626 Mop(Cast 29627 F4, 29628 Var("Rx", 29629 FTy 3)), 29630 LC("SRType_LSL", 29631 CTy"SRType"), 29632 LN 0])), 29633 qVar"s"])), 29634 (LW(5,4), 29635 Let(Var("d",F4), 29636 Mop(Cast F4, 29637 Var("Ry",FTy 3)), 29638 TP[Call 29639 ("Data", 29640 CTy"instruction", 29641 Call 29642 ("Register", 29643 CTy"Data", 29644 TP[Var("opc", 29645 F4), 29646 Mop(Not, 29647 Apply 29648 (Call 29649 ("InITBlock", 29650 ATy(qTy, 29651 bTy), 29652 LU), 29653 qVar"s")), 29654 Var("d", 29655 F4), 29656 Var("d", 29657 F4), 29658 Mop(Cast 29659 F4, 29660 Var("Rx", 29661 FTy 3)), 29662 LC("SRType_LSL", 29663 CTy"SRType"), 29664 LN 0])), 29665 qVar"s"])), 29666 (LW(6,4), 29667 Let(Var("d",F4), 29668 Mop(Cast F4, 29669 Var("Ry",FTy 3)), 29670 TP[Call 29671 ("Data", 29672 CTy"instruction", 29673 Call 29674 ("Register", 29675 CTy"Data", 29676 TP[Var("opc", 29677 F4), 29678 Mop(Not, 29679 Apply 29680 (Call 29681 ("InITBlock", 29682 ATy(qTy, 29683 bTy), 29684 LU), 29685 qVar"s")), 29686 Var("d", 29687 F4), 29688 Var("d", 29689 F4), 29690 Mop(Cast 29691 F4, 29692 Var("Rx", 29693 FTy 3)), 29694 LC("SRType_LSL", 29695 CTy"SRType"), 29696 LN 0])), 29697 qVar"s"])), 29698 (LW(12,4), 29699 Let(Var("d",F4), 29700 Mop(Cast F4, 29701 Var("Ry",FTy 3)), 29702 TP[Call 29703 ("Data", 29704 CTy"instruction", 29705 Call 29706 ("Register", 29707 CTy"Data", 29708 TP[Var("opc", 29709 F4), 29710 Mop(Not, 29711 Apply 29712 (Call 29713 ("InITBlock", 29714 ATy(qTy, 29715 bTy), 29716 LU), 29717 qVar"s")), 29718 Var("d", 29719 F4), 29720 Var("d", 29721 F4), 29722 Mop(Cast 29723 F4, 29724 Var("Rx", 29725 FTy 3)), 29726 LC("SRType_LSL", 29727 CTy"SRType"), 29728 LN 0])), 29729 qVar"s"])), 29730 (LW(14,4), 29731 Let(Var("d",F4), 29732 Mop(Cast F4, 29733 Var("Ry",FTy 3)), 29734 TP[Call 29735 ("Data", 29736 CTy"instruction", 29737 Call 29738 ("Register", 29739 CTy"Data", 29740 TP[Var("opc", 29741 F4), 29742 Mop(Not, 29743 Apply 29744 (Call 29745 ("InITBlock", 29746 ATy(qTy, 29747 bTy), 29748 LU), 29749 qVar"s")), 29750 Var("d", 29751 F4), 29752 Var("d", 29753 F4), 29754 Mop(Cast 29755 F4, 29756 Var("Rx", 29757 FTy 3)), 29758 LC("SRType_LSL", 29759 CTy"SRType"), 29760 LN 0])), 29761 qVar"s"])), 29762 (LW(2,4), 29763 Let(Var("d",F4), 29764 Mop(Cast F4, 29765 Var("Ry",FTy 3)), 29766 TP[Call 29767 ("Data", 29768 CTy"instruction", 29769 Call 29770 ("ShiftRegister", 29771 CTy"Data", 29772 TP[LF, 29773 Mop(Not, 29774 Apply 29775 (Call 29776 ("InITBlock", 29777 ATy(qTy, 29778 bTy), 29779 LU), 29780 qVar"s")), 29781 Var("d", 29782 F4), 29783 Var("d", 29784 F4), 29785 Call 29786 ("DecodeRegShift", 29787 CTy"SRType", 29788 Mop(Cast 29789 (FTy 2), 29790 Bop(Sub, 29791 Var("opc", 29792 F4), 29793 LW(2, 29794 4)))), 29795 Mop(Cast 29796 F4, 29797 Var("Rx", 29798 FTy 3))])), 29799 qVar"s"])), 29800 (LW(3,4), 29801 Let(Var("d",F4), 29802 Mop(Cast F4, 29803 Var("Ry",FTy 3)), 29804 TP[Call 29805 ("Data", 29806 CTy"instruction", 29807 Call 29808 ("ShiftRegister", 29809 CTy"Data", 29810 TP[LF, 29811 Mop(Not, 29812 Apply 29813 (Call 29814 ("InITBlock", 29815 ATy(qTy, 29816 bTy), 29817 LU), 29818 qVar"s")), 29819 Var("d", 29820 F4), 29821 Var("d", 29822 F4), 29823 Call 29824 ("DecodeRegShift", 29825 CTy"SRType", 29826 Mop(Cast 29827 (FTy 2), 29828 Bop(Sub, 29829 Var("opc", 29830 F4), 29831 LW(2, 29832 4)))), 29833 Mop(Cast 29834 F4, 29835 Var("Rx", 29836 FTy 3))])), 29837 qVar"s"])), 29838 (LW(4,4), 29839 Let(Var("d",F4), 29840 Mop(Cast F4, 29841 Var("Ry",FTy 3)), 29842 TP[Call 29843 ("Data", 29844 CTy"instruction", 29845 Call 29846 ("ShiftRegister", 29847 CTy"Data", 29848 TP[LF, 29849 Mop(Not, 29850 Apply 29851 (Call 29852 ("InITBlock", 29853 ATy(qTy, 29854 bTy), 29855 LU), 29856 qVar"s")), 29857 Var("d", 29858 F4), 29859 Var("d", 29860 F4), 29861 Call 29862 ("DecodeRegShift", 29863 CTy"SRType", 29864 Mop(Cast 29865 (FTy 2), 29866 Bop(Sub, 29867 Var("opc", 29868 F4), 29869 LW(2, 29870 4)))), 29871 Mop(Cast 29872 F4, 29873 Var("Rx", 29874 FTy 3))])), 29875 qVar"s"])), 29876 (LW(7,4), 29877 Let(Var("d",F4), 29878 Mop(Cast F4, 29879 Var("Ry",FTy 3)), 29880 TP[Call 29881 ("Data", 29882 CTy"instruction", 29883 Call 29884 ("ShiftRegister", 29885 CTy"Data", 29886 TP[LF, 29887 Mop(Not, 29888 Apply 29889 (Call 29890 ("InITBlock", 29891 ATy(qTy, 29892 bTy), 29893 LU), 29894 qVar"s")), 29895 Var("d", 29896 F4), 29897 Var("d", 29898 F4), 29899 LC("SRType_ROR", 29900 CTy"SRType"), 29901 Mop(Cast 29902 F4, 29903 Var("Rx", 29904 FTy 3))])), 29905 qVar"s"])), 29906 (LW(8,4), 29907 TP[Call 29908 ("Data", 29909 CTy"instruction", 29910 Call 29911 ("TestCompareRegister", 29912 CTy"Data", 29913 TP[EX(Var("opc", 29914 F4), 29915 LN 1,LN 0, 29916 FTy 2), 29917 Mop(Cast F4, 29918 Var("Ry", 29919 FTy 3)), 29920 Mop(Cast F4, 29921 Var("Rx", 29922 FTy 3)), 29923 LC("SRType_LSL", 29924 CTy"SRType"), 29925 LN 0])), 29926 qVar"s"]), 29927 (LW(10,4), 29928 TP[Call 29929 ("Data", 29930 CTy"instruction", 29931 Call 29932 ("TestCompareRegister", 29933 CTy"Data", 29934 TP[EX(Var("opc", 29935 F4), 29936 LN 1,LN 0, 29937 FTy 2), 29938 Mop(Cast F4, 29939 Var("Ry", 29940 FTy 3)), 29941 Mop(Cast F4, 29942 Var("Rx", 29943 FTy 3)), 29944 LC("SRType_LSL", 29945 CTy"SRType"), 29946 LN 0])), 29947 qVar"s"]), 29948 (LW(11,4), 29949 TP[Call 29950 ("Data", 29951 CTy"instruction", 29952 Call 29953 ("TestCompareRegister", 29954 CTy"Data", 29955 TP[EX(Var("opc", 29956 F4), 29957 LN 1,LN 0, 29958 FTy 2), 29959 Mop(Cast F4, 29960 Var("Ry", 29961 FTy 3)), 29962 Mop(Cast F4, 29963 Var("Rx", 29964 FTy 3)), 29965 LC("SRType_LSL", 29966 CTy"SRType"), 29967 LN 0])), 29968 qVar"s"]), 29969 (LW(9,4), 29970 TP[Call 29971 ("Data", 29972 CTy"instruction", 29973 Call 29974 ("ArithLogicImmediate", 29975 CTy"Data", 29976 TP[LW(3,4), 29977 Mop(Not, 29978 Apply 29979 (Call 29980 ("InITBlock", 29981 ATy(qTy, 29982 bTy), 29983 LU), 29984 qVar"s")), 29985 Mop(Cast F4, 29986 Var("Ry", 29987 FTy 3)), 29988 Mop(Cast F4, 29989 Var("Rx", 29990 FTy 3)), 29991 LW(0,12)])), 29992 qVar"s"]), 29993 (LW(13,4), 29994 Let(Var("d",F4), 29995 Mop(Cast F4, 29996 Var("Ry",FTy 3)), 29997 Let(Var("n",F4), 29998 Mop(Cast F4, 29999 Var("Rx", 30000 FTy 3)), 30001 Let(TP[bVar"v", 30002 qVar"s"], 30003 Let(qVar"s0", 30004 ITE(Bop(And, 30005 Bop(Lt, 30006 Apply 30007 (Call 30008 ("ArchVersion", 30009 ATy(qTy, 30010 nTy), 30011 LU), 30012 qVar"s"), 30013 LN 30014 6), 30015 EQ(Var("d", 30016 F4), 30017 Var("n", 30018 F4))), 30019 Apply 30020 (Call 30021 ("DECODE_UNPREDICTABLE", 30022 ATy(qTy, 30023 qTy), 30024 TP[Var("mc", 30025 CTy"MachineCode"), 30026 LS 30027 "Multiply"]), 30028 qVar"s"), 30029 qVar"s"), 30030 TP[Apply 30031 (Call 30032 ("InITBlock", 30033 ATy(qTy, 30034 bTy), 30035 LU), 30036 qVar"s0"), 30037 qVar"s0"]), 30038 TP[Call 30039 ("Multiply", 30040 CTy"instruction", 30041 Call 30042 ("Multiply32", 30043 CTy"Multiply", 30044 TP[Mop(Not, 30045 bVar"v"), 30046 Var("d", 30047 F4), 30048 Var("n", 30049 F4), 30050 Var("d", 30051 F4)])), 30052 qVar"s"])))), 30053 (LW(15,4), 30054 TP[Call 30055 ("Data", 30056 CTy"instruction", 30057 Call 30058 ("ShiftImmediate", 30059 CTy"Data", 30060 TP[LT, 30061 Mop(Not, 30062 Apply 30063 (Call 30064 ("InITBlock", 30065 ATy(qTy, 30066 bTy), 30067 LU), 30068 qVar"s")), 30069 Mop(Cast F4, 30070 Var("Ry", 30071 FTy 3)), 30072 Mop(Cast F4, 30073 Var("Rx", 30074 FTy 3)), 30075 LC("SRType_LSL", 30076 CTy"SRType"), 30077 LN 0])), 30078 qVar"s"])]), 30079 TP[Apply 30080 (Call 30081 ("Skip", 30082 ATy(qTy, 30083 CTy"instruction"), 30084 LU),qVar"s"),qVar"s"]))))))), 30085 (Bop(And,bVar"b'14", 30086 Bop(And,Mop(Not,bVar"b'12"), 30087 Bop(And,Mop(Not,bVar"b'11"), 30088 Bop(And,bVar"b'10", 30089 Bop(And,Mop(Not,bVar"b'9"), 30090 Mop(Not,bVar"b'8")))))), 30091 Let(Var("Rm",F4), 30092 Mop(Cast F4, 30093 LL[bVar"b'6",bVar"b'5",bVar"b'4",bVar"b'3"]), 30094 Let(Var("DN",F1),Mop(Cast F1,LL[bVar"b'7"]), 30095 Let(TP[Var("v",F4),qVar"s"], 30096 Apply 30097 (Call 30098 ("ThumbCondition", 30099 ATy(qTy,PTy(F4,qTy)),LU),qVar"state"), 30100 Let(TP[bVar"v",qVar"s"], 30101 Apply 30102 (Call 30103 ("Do",ATy(qTy,PTy(bTy,qTy)), 30104 TP[Var("v",F4), 30105 Bop(Or,Mop(Msb,Var("Rm",F4)), 30106 Bop(Or, 30107 EQ(Var("DN",F1), 30108 LW(1,1)), 30109 Apply 30110 (Call 30111 ("HaveThumb2", 30112 ATy(qTy,bTy),LU), 30113 qVar"s")))]), 30114 qVar"s"), 30115 ITE(bVar"v", 30116 Let(Var("d",F4), 30117 CC[Var("DN",F1), 30118 Mop(Cast(FTy 3), 30119 LL[bVar"b'2",bVar"b'1", 30120 bVar"b'0"])], 30121 TP[Call 30122 ("Data",CTy"instruction", 30123 Call 30124 ("Register",CTy"Data", 30125 TP[LW(4,4),LF, 30126 Var("d",F4), 30127 Var("d",F4), 30128 Var("Rm",F4), 30129 LC("SRType_LSL", 30130 CTy"SRType"), 30131 LN 0])), 30132 ITE(Bop(Or, 30133 Bop(And, 30134 EQ(Var("d",F4), 30135 LW(15,4)), 30136 EQ(Var("Rm",F4), 30137 LW(15,4))), 30138 Bop(And, 30139 EQ(Var("d",F4), 30140 LW(15,4)), 30141 Bop(And, 30142 Apply 30143 (Call 30144 ("InITBlock", 30145 ATy(qTy, 30146 bTy), 30147 LU), 30148 qVar"s"), 30149 Mop(Not, 30150 Apply 30151 (Call 30152 ("LastInITBlock", 30153 ATy(qTy, 30154 bTy), 30155 LU), 30156 qVar"s"))))), 30157 Apply 30158 (Call 30159 ("DECODE_UNPREDICTABLE", 30160 ATy(qTy,qTy), 30161 TP[Var("mc", 30162 CTy"MachineCode"), 30163 LS"ADD"]), 30164 qVar"s"),qVar"s")]), 30165 TP[Apply 30166 (Call 30167 ("Skip", 30168 ATy(qTy,CTy"instruction"), 30169 LU),qVar"s"),qVar"s"])))))), 30170 (Bop(And,bVar"b'14", 30171 Bop(And,Mop(Not,bVar"b'12"), 30172 Bop(And,Mop(Not,bVar"b'11"), 30173 Bop(And,bVar"b'10", 30174 Bop(And,Mop(Not,bVar"b'9"), 30175 Bop(And,bVar"b'8", 30176 Bop(And,Mop(Not,bVar"b'7"), 30177 Mop(Not,bVar"b'6")))))))), 30178 Apply 30179 (Call 30180 ("raise'exception", 30181 ATy(qTy,PTy(CTy"instruction",qTy)), 30182 Call 30183 ("UNPREDICTABLE",CTy"exception", 30184 LS"Thumb: 010001 0100 _")),qVar"state")), 30185 (Bop(And,bVar"b'14", 30186 Bop(And,Mop(Not,bVar"b'12"), 30187 Bop(And,Mop(Not,bVar"b'11"), 30188 Bop(And,bVar"b'10", 30189 Bop(And,Mop(Not,bVar"b'9"),bVar"b'8"))))), 30190 Let(Var("Rm",F4), 30191 Mop(Cast F4, 30192 LL[bVar"b'6",bVar"b'5",bVar"b'4",bVar"b'3"]), 30193 Let(TP[Var("v",F4),qVar"s"], 30194 Apply 30195 (Call 30196 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 30197 qVar"state"), 30198 Let(TP[bVar"v",qVar"s"], 30199 Apply 30200 (Call 30201 ("Do",ATy(qTy,PTy(bTy,qTy)), 30202 TP[Var("v",F4),LT]),qVar"s"), 30203 ITE(bVar"v", 30204 Let(Var("n",F4), 30205 CC[Mop(Cast F1,LL[bVar"b'7"]), 30206 Mop(Cast(FTy 3), 30207 LL[bVar"b'2",bVar"b'1", 30208 bVar"b'0"])], 30209 TP[Call 30210 ("Data",CTy"instruction", 30211 Call 30212 ("TestCompareRegister", 30213 CTy"Data", 30214 TP[LW(2,2),Var("n",F4), 30215 Var("Rm",F4), 30216 LC("SRType_LSL", 30217 CTy"SRType"),LN 0])), 30218 ITE(Bop(Or, 30219 Bop(And, 30220 Bop(Ult, 30221 Var("n",F4), 30222 LW(8,4)), 30223 Bop(Ult, 30224 Var("Rm",F4), 30225 LW(8,4))), 30226 Bop(Or, 30227 EQ(Var("n",F4), 30228 LW(15,4)), 30229 EQ(Var("Rm",F4), 30230 LW(15,4)))), 30231 Apply 30232 (Call 30233 ("DECODE_UNPREDICTABLE", 30234 ATy(qTy,qTy), 30235 TP[Var("mc", 30236 CTy"MachineCode"), 30237 LS"CMP"]),qVar"s"), 30238 qVar"s")]), 30239 TP[Apply 30240 (Call 30241 ("Skip", 30242 ATy(qTy,CTy"instruction"),LU), 30243 qVar"s"),qVar"s"]))))), 30244 (Bop(And,bVar"b'14", 30245 Bop(And,Mop(Not,bVar"b'12"), 30246 Bop(And,Mop(Not,bVar"b'11"), 30247 Bop(And,bVar"b'10", 30248 Bop(And,bVar"b'9",Mop(Not,bVar"b'8")))))), 30249 Let(Var("Rm",F4), 30250 Mop(Cast F4, 30251 LL[bVar"b'6",bVar"b'5",bVar"b'4",bVar"b'3"]), 30252 Let(Var("D",F1),Mop(Cast F1,LL[bVar"b'7"]), 30253 Let(TP[Var("v",F4),qVar"s"], 30254 Apply 30255 (Call 30256 ("ThumbCondition", 30257 ATy(qTy,PTy(F4,qTy)),LU),qVar"state"), 30258 Let(TP[bVar"v",qVar"s"], 30259 Apply 30260 (Call 30261 ("Do",ATy(qTy,PTy(bTy,qTy)), 30262 TP[Var("v",F4), 30263 Bop(Or,Mop(Msb,Var("Rm",F4)), 30264 Bop(Or, 30265 EQ(Var("D",F1), 30266 LW(1,1)), 30267 Bop(Ge, 30268 Apply 30269 (Call 30270 ("ArchVersion", 30271 ATy(qTy,nTy), 30272 LU),qVar"s"), 30273 LN 6)))]),qVar"s"), 30274 ITE(bVar"v", 30275 Let(Var("d",F4), 30276 CC[Var("D",F1), 30277 Mop(Cast(FTy 3), 30278 LL[bVar"b'2",bVar"b'1", 30279 bVar"b'0"])], 30280 TP[Call 30281 ("Data",CTy"instruction", 30282 Call 30283 ("ShiftImmediate", 30284 CTy"Data", 30285 TP[LF,LF,Var("d",F4), 30286 Var("Rm",F4), 30287 LC("SRType_LSL", 30288 CTy"SRType"), 30289 LN 0])), 30290 ITE(Bop(And, 30291 EQ(Var("d",F4), 30292 LW(15,4)), 30293 Bop(And, 30294 Apply 30295 (Call 30296 ("InITBlock", 30297 ATy(qTy, 30298 bTy), 30299 LU), 30300 qVar"s"), 30301 Mop(Not, 30302 Apply 30303 (Call 30304 ("LastInITBlock", 30305 ATy(qTy, 30306 bTy), 30307 LU), 30308 qVar"s")))), 30309 Apply 30310 (Call 30311 ("DECODE_UNPREDICTABLE", 30312 ATy(qTy,qTy), 30313 TP[Var("mc", 30314 CTy"MachineCode"), 30315 LS"MOV"]), 30316 qVar"s"),qVar"s")]), 30317 TP[Apply 30318 (Call 30319 ("Skip", 30320 ATy(qTy,CTy"instruction"), 30321 LU),qVar"s"),qVar"s"])))))), 30322 (Bop(And,bVar"b'14", 30323 Bop(And,Mop(Not,bVar"b'12"), 30324 Bop(And,Mop(Not,bVar"b'11"), 30325 Bop(And,bVar"b'10", 30326 Bop(And,bVar"b'9", 30327 Bop(And,bVar"b'8", 30328 Mop(Not,bVar"b'7"))))))), 30329 Let(TP[Var("v",F4),qVar"s"], 30330 Apply 30331 (Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 30332 qVar"state"), 30333 Let(TP[bVar"v",qVar"s"], 30334 Apply 30335 (Call 30336 ("Do",ATy(qTy,PTy(bTy,qTy)), 30337 TP[Var("v",F4),LT]),qVar"s"), 30338 ITE(bVar"v", 30339 TP[Call 30340 ("Branch",CTy"instruction", 30341 Call 30342 ("BranchExchange",CTy"Branch", 30343 Mop(Cast F4, 30344 LL[bVar"b'6",bVar"b'5", 30345 bVar"b'4",bVar"b'3"]))), 30346 ITE(Bop(Or, 30347 Bop(And, 30348 Apply 30349 (Call 30350 ("InITBlock", 30351 ATy(qTy,bTy),LU), 30352 qVar"s"), 30353 Mop(Not, 30354 Apply 30355 (Call 30356 ("LastInITBlock", 30357 ATy(qTy,bTy),LU), 30358 qVar"s"))), 30359 Mop(Not, 30360 EQ(Mop(Cast(FTy 3), 30361 LL[bVar"b'2", 30362 bVar"b'1", 30363 bVar"b'0"]), 30364 LW(0,3)))), 30365 Apply 30366 (Call 30367 ("DECODE_UNPREDICTABLE", 30368 ATy(qTy,qTy), 30369 TP[Var("mc",CTy"MachineCode"), 30370 LS"BranchExchange"]), 30371 qVar"s"),qVar"s")], 30372 TP[Apply 30373 (Call 30374 ("Skip",ATy(qTy,CTy"instruction"), 30375 LU),qVar"s"),qVar"s"])))), 30376 (Bop(And,bVar"b'14", 30377 Bop(And,Mop(Not,bVar"b'12"), 30378 Bop(And,Mop(Not,bVar"b'11"), 30379 Bop(And,bVar"b'10", 30380 Bop(And,bVar"b'9", 30381 Bop(And,bVar"b'8",bVar"b'7")))))), 30382 Let(Var("Rm",F4), 30383 Mop(Cast F4, 30384 LL[bVar"b'6",bVar"b'5",bVar"b'4",bVar"b'3"]), 30385 Let(TP[Var("v",F4),qVar"s"], 30386 Apply 30387 (Call 30388 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 30389 qVar"state"), 30390 Let(TP[bVar"v",qVar"s"], 30391 Apply 30392 (Call 30393 ("Do",ATy(qTy,PTy(bTy,qTy)), 30394 TP[Var("v",F4), 30395 Bop(Ge, 30396 Apply 30397 (Call 30398 ("ArchVersion", 30399 ATy(qTy,nTy),LU), 30400 qVar"s"),LN 5)]),qVar"s"), 30401 ITE(bVar"v", 30402 TP[Call 30403 ("Branch",CTy"instruction", 30404 Call 30405 ("BranchLinkExchangeRegister", 30406 CTy"Branch",Var("Rm",F4))), 30407 ITE(Bop(Or, 30408 EQ(Var("Rm",F4),LW(15,4)), 30409 Bop(Or, 30410 Bop(And, 30411 Apply 30412 (Call 30413 ("InITBlock", 30414 ATy(qTy,bTy), 30415 LU),qVar"s"), 30416 Mop(Not, 30417 Apply 30418 (Call 30419 ("LastInITBlock", 30420 ATy(qTy, 30421 bTy), 30422 LU), 30423 qVar"s"))), 30424 Mop(Not, 30425 EQ(Mop(Cast(FTy 3), 30426 LL[bVar"b'2", 30427 bVar"b'1", 30428 bVar"b'0"]), 30429 LW(0,3))))), 30430 Apply 30431 (Call 30432 ("DECODE_UNPREDICTABLE", 30433 ATy(qTy,qTy), 30434 TP[Var("mc", 30435 CTy"MachineCode"), 30436 LS 30437 "BranchLinkExchangeRegister"]), 30438 qVar"s"),qVar"s")], 30439 TP[Apply 30440 (Call 30441 ("Skip", 30442 ATy(qTy,CTy"instruction"),LU), 30443 qVar"s"),qVar"s"]))))), 30444 (Bop(And,bVar"b'14", 30445 Bop(And,Mop(Not,bVar"b'12"),bVar"b'11")), 30446 Let(TP[Var("v",F4),qVar"s"], 30447 Apply 30448 (Call("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 30449 qVar"state"), 30450 Let(TP[bVar"v",qVar"s"], 30451 Apply 30452 (Call 30453 ("Do",ATy(qTy,PTy(bTy,qTy)), 30454 TP[Var("v",F4),LT]),qVar"s"), 30455 TP[ITE(bVar"v", 30456 Call 30457 ("Load",CTy"instruction", 30458 Call 30459 ("LoadLiteral",CTy"Load", 30460 TP[LT, 30461 Mop(Cast F4, 30462 Mop(Cast(FTy 3), 30463 LL[bVar"b'10", 30464 bVar"b'9",bVar"b'8"])), 30465 Mop(Cast F32, 30466 CC[Mop(Cast F8, 30467 LL[bVar"b'7", 30468 bVar"b'6", 30469 bVar"b'5", 30470 bVar"b'4", 30471 bVar"b'3", 30472 bVar"b'2", 30473 bVar"b'1", 30474 bVar"b'0"]), 30475 LW(0,2)])])), 30476 Apply 30477 (Call 30478 ("Skip",ATy(qTy,CTy"instruction"), 30479 LU),qVar"s")),qVar"s"]))), 30480 (Bop(And,bVar"b'14",bVar"b'12"), 30481 Let(Var("Rt",FTy 3), 30482 Mop(Cast(FTy 3),LL[bVar"b'2",bVar"b'1",bVar"b'0"]), 30483 Let(Var("Rn",FTy 3), 30484 Mop(Cast(FTy 3), 30485 LL[bVar"b'5",bVar"b'4",bVar"b'3"]), 30486 Let(TP[Var("v",F4),qVar"s"], 30487 Apply 30488 (Call 30489 ("ThumbCondition", 30490 ATy(qTy,PTy(F4,qTy)),LU),qVar"state"), 30491 Let(TP[bVar"v",qVar"s"], 30492 Apply 30493 (Call 30494 ("Do",ATy(qTy,PTy(bTy,qTy)), 30495 TP[Var("v",F4),LT]),qVar"s"), 30496 TP[ITE(bVar"v", 30497 Let(Var("m",CTy"offset1"), 30498 Call 30499 ("register_form1", 30500 CTy"offset1", 30501 TP[Mop(Cast F4, 30502 Mop(Cast(FTy 3), 30503 LL[bVar"b'8", 30504 bVar"b'7", 30505 bVar"b'6"])), 30506 LC("SRType_LSL", 30507 CTy"SRType"),LN 0]), 30508 CS(Mop(Cast(FTy 3), 30509 LL[bVar"b'11", 30510 bVar"b'10", 30511 bVar"b'9"]), 30512 [(LW(0,3), 30513 Call 30514 ("Store", 30515 CTy"instruction", 30516 Call 30517 ("StoreWord", 30518 CTy"Store", 30519 TP[LT,LT,LF, 30520 Mop(Cast F4, 30521 Var("Rt", 30522 FTy 3)), 30523 Mop(Cast F4, 30524 Var("Rn", 30525 FTy 3)), 30526 Var("m", 30527 CTy"offset1")]))), 30528 (LW(1,3), 30529 Call 30530 ("Store", 30531 CTy"instruction", 30532 Call 30533 ("StoreHalf", 30534 CTy"Store", 30535 TP[LT,LT,LF, 30536 Mop(Cast F4, 30537 Var("Rt", 30538 FTy 3)), 30539 Mop(Cast F4, 30540 Var("Rn", 30541 FTy 3)), 30542 Var("m", 30543 CTy"offset1")]))), 30544 (LW(2,3), 30545 Call 30546 ("Store", 30547 CTy"instruction", 30548 Call 30549 ("StoreByte", 30550 CTy"Store", 30551 TP[LT,LT,LF, 30552 Mop(Cast F4, 30553 Var("Rt", 30554 FTy 3)), 30555 Mop(Cast F4, 30556 Var("Rn", 30557 FTy 3)), 30558 Var("m", 30559 CTy"offset1")]))), 30560 (LW(3,3), 30561 Call 30562 ("Load", 30563 CTy"instruction", 30564 Call 30565 ("LoadByte", 30566 CTy"Load", 30567 TP[LF,LT,LT,LF, 30568 Mop(Cast F4, 30569 Var("Rt", 30570 FTy 3)), 30571 Mop(Cast F4, 30572 Var("Rn", 30573 FTy 3)), 30574 Var("m", 30575 CTy"offset1")]))), 30576 (LW(4,3), 30577 Call 30578 ("Load", 30579 CTy"instruction", 30580 Call 30581 ("LoadWord", 30582 CTy"Load", 30583 TP[LT,LT,LF, 30584 Mop(Cast F4, 30585 Var("Rt", 30586 FTy 3)), 30587 Mop(Cast F4, 30588 Var("Rn", 30589 FTy 3)), 30590 Var("m", 30591 CTy"offset1")]))), 30592 (LW(5,3), 30593 Call 30594 ("Load", 30595 CTy"instruction", 30596 Call 30597 ("LoadHalf", 30598 CTy"Load", 30599 TP[LT,LT,LT,LF, 30600 Mop(Cast F4, 30601 Var("Rt", 30602 FTy 3)), 30603 Mop(Cast F4, 30604 Var("Rn", 30605 FTy 3)), 30606 Var("m", 30607 CTy"offset1")]))), 30608 (LW(6,3), 30609 Call 30610 ("Load", 30611 CTy"instruction", 30612 Call 30613 ("LoadByte", 30614 CTy"Load", 30615 TP[LT,LT,LT,LF, 30616 Mop(Cast F4, 30617 Var("Rt", 30618 FTy 3)), 30619 Mop(Cast F4, 30620 Var("Rn", 30621 FTy 3)), 30622 Var("m", 30623 CTy"offset1")]))), 30624 (LW(7,3), 30625 Call 30626 ("Load", 30627 CTy"instruction", 30628 Call 30629 ("LoadHalf", 30630 CTy"Load", 30631 TP[LF,LT,LT,LF, 30632 Mop(Cast F4, 30633 Var("Rt", 30634 FTy 3)), 30635 Mop(Cast F4, 30636 Var("Rn", 30637 FTy 3)), 30638 Var("m", 30639 CTy"offset1")])))])), 30640 Apply 30641 (Call 30642 ("Skip", 30643 ATy(qTy,CTy"instruction"), 30644 LU),qVar"s")),qVar"s"])))))], 30645 Apply 30646 (Call 30647 ("UndefinedThumb", 30648 ATy(qTy,PTy(CTy"instruction",qTy)),LU),qVar"state")))))) 30649; 30650val DecodeThumbEE_def = Def 30651 ("DecodeThumbEE",Var("h",F16), 30652 Close 30653 (qVar"state", 30654 Let(Var("mc",CTy"MachineCode"), 30655 Call("Thumb",CTy"MachineCode",Var("h",F16)), 30656 Let(TP[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",bVar"b'11", 30657 bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 30658 bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 30659 bVar"b'0"],BL(16,Var("h",F16)), 30660 ITE(Bop(And,bVar"b'14",Mop(Not,bVar"b'13")), 30661 ITB([(Bop(And,Mop(Not,bVar"b'15"),bVar"b'12"), 30662 Let(Var("Rt",FTy 3), 30663 Mop(Cast(FTy 3), 30664 LL[bVar"b'2",bVar"b'1",bVar"b'0"]), 30665 Let(Var("Rn",FTy 3), 30666 Mop(Cast(FTy 3), 30667 LL[bVar"b'5",bVar"b'4",bVar"b'3"]), 30668 Let(TP[Var("v",F4),qVar"s"], 30669 Apply 30670 (Call 30671 ("ThumbCondition", 30672 ATy(qTy,PTy(F4,qTy)),LU), 30673 qVar"state"), 30674 Let(TP[bVar"v",qVar"s"], 30675 Apply 30676 (Call 30677 ("Do",ATy(qTy,PTy(bTy,qTy)), 30678 TP[Var("v",F4),LT]),qVar"s"), 30679 ITE(bVar"v", 30680 Let(Var("m",F4), 30681 Mop(Cast F4, 30682 Mop(Cast(FTy 3), 30683 LL[bVar"b'8", 30684 bVar"b'7", 30685 bVar"b'6"])), 30686 Let(Var("m1",CTy"offset1"), 30687 Call 30688 ("register_form1", 30689 CTy"offset1", 30690 TP[Var("m",F4), 30691 LC("SRType_LSL", 30692 CTy"SRType"), 30693 LN 1]), 30694 Let(Var("m2", 30695 CTy"offset1"), 30696 Call 30697 ("register_form1", 30698 CTy"offset1", 30699 TP[Var("m",F4), 30700 LC("SRType_LSL", 30701 CTy"SRType"), 30702 LN 2]), 30703 CS(Mop(Cast(FTy 3), 30704 LL[bVar"b'11", 30705 bVar"b'10", 30706 bVar"b'9"]), 30707 [(LW(0,3), 30708 TP[Call 30709 ("Store", 30710 CTy"instruction", 30711 Call 30712 ("StoreWord", 30713 CTy"Store", 30714 TP[LT, 30715 LT, 30716 LF, 30717 Mop(Cast 30718 F4, 30719 Var("Rt", 30720 FTy 3)), 30721 Mop(Cast 30722 F4, 30723 Var("Rn", 30724 FTy 3)), 30725 Var("m2", 30726 CTy"offset1")])), 30727 qVar"s"]), 30728 (LW(1,3), 30729 TP[Call 30730 ("Store", 30731 CTy"instruction", 30732 Call 30733 ("StoreHalf", 30734 CTy"Store", 30735 TP[LT, 30736 LT, 30737 LF, 30738 Mop(Cast 30739 F4, 30740 Var("Rt", 30741 FTy 3)), 30742 Mop(Cast 30743 F4, 30744 Var("Rn", 30745 FTy 3)), 30746 Var("m1", 30747 CTy"offset1")])), 30748 qVar"s"]), 30749 (LW(4,3), 30750 TP[Call 30751 ("Load", 30752 CTy"instruction", 30753 Call 30754 ("LoadWord", 30755 CTy"Load", 30756 TP[LT, 30757 LT, 30758 LF, 30759 Mop(Cast 30760 F4, 30761 Var("Rt", 30762 FTy 3)), 30763 Mop(Cast 30764 F4, 30765 Var("Rn", 30766 FTy 3)), 30767 Var("m2", 30768 CTy"offset1")])), 30769 qVar"s"]), 30770 (LW(5,3), 30771 TP[Call 30772 ("Load", 30773 CTy"instruction", 30774 Call 30775 ("LoadHalf", 30776 CTy"Load", 30777 TP[LT, 30778 LT, 30779 LT, 30780 LF, 30781 Mop(Cast 30782 F4, 30783 Var("Rt", 30784 FTy 3)), 30785 Mop(Cast 30786 F4, 30787 Var("Rn", 30788 FTy 3)), 30789 Var("m1", 30790 CTy"offset1")])), 30791 qVar"s"]), 30792 (LW(7,3), 30793 TP[Call 30794 ("Load", 30795 CTy"instruction", 30796 Call 30797 ("LoadHalf", 30798 CTy"Load", 30799 TP[LF, 30800 LT, 30801 LT, 30802 LF, 30803 Mop(Cast 30804 F4, 30805 Var("Rt", 30806 FTy 3)), 30807 Mop(Cast 30808 F4, 30809 Var("Rn", 30810 FTy 3)), 30811 Var("m1", 30812 CTy"offset1")])), 30813 qVar"s"]), 30814 (AVar(FTy 3), 30815 Apply 30816 (Call 30817 ("DecodeThumb", 30818 ATy(qTy, 30819 PTy(CTy"instruction", 30820 qTy)), 30821 Var("h", 30822 F16)), 30823 qVar"s"))])))), 30824 TP[Apply 30825 (Call 30826 ("Skip", 30827 ATy(qTy, 30828 CTy"instruction"), 30829 LU),qVar"s"),qVar"s"])))))), 30830 (Bop(And,bVar"b'15", 30831 Bop(And,Mop(Not,bVar"b'12"), 30832 Bop(And,Mop(Not,bVar"b'11"), 30833 Bop(And,Mop(Not,bVar"b'10"), 30834 Bop(And,Mop(Not,bVar"b'9"), 30835 Mop(Not,bVar"b'8")))))), 30836 Let(TP[Var("v",F4),qVar"s"], 30837 Apply 30838 (Call 30839 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 30840 qVar"state"), 30841 Let(TP[bVar"v",qVar"s"], 30842 Apply 30843 (Call 30844 ("Do",ATy(qTy,PTy(bTy,qTy)), 30845 TP[Var("v",F4),LT]),qVar"s"), 30846 ITE(bVar"v", 30847 TP[Call 30848 ("Branch",CTy"instruction", 30849 Call 30850 ("HandlerBranchParameter", 30851 CTy"Branch", 30852 TP[Mop(Cast F32, 30853 Mop(Cast(FTy 3), 30854 LL[bVar"b'7", 30855 bVar"b'6", 30856 bVar"b'5"])), 30857 Mop(Cast F32, 30858 CC[Mop(Cast(FTy 5), 30859 LL[bVar"b'4", 30860 bVar"b'3", 30861 bVar"b'2", 30862 bVar"b'1", 30863 bVar"b'0"]), 30864 LW(0,5)])])), 30865 ITE(Bop(And, 30866 Apply 30867 (Call 30868 ("InITBlock", 30869 ATy(qTy,bTy),LU), 30870 qVar"s"), 30871 Mop(Not, 30872 Apply 30873 (Call 30874 ("LastInITBlock", 30875 ATy(qTy,bTy),LU), 30876 qVar"s"))), 30877 Apply 30878 (Call 30879 ("DECODE_UNPREDICTABLE", 30880 ATy(qTy,qTy), 30881 TP[Var("mc", 30882 CTy"MachineCode"), 30883 LS 30884 "HandlerBranchParameter"]), 30885 qVar"s"),qVar"s")], 30886 TP[Apply 30887 (Call 30888 ("Skip", 30889 ATy(qTy,CTy"instruction"),LU), 30890 qVar"s"),qVar"s"])))), 30891 (Bop(And,bVar"b'15", 30892 Bop(And,Mop(Not,bVar"b'12"), 30893 Bop(And,Mop(Not,bVar"b'11"), 30894 Bop(And,Mop(Not,bVar"b'10"), 30895 Bop(And,Mop(Not,bVar"b'9"), 30896 bVar"b'8"))))), 30897 TP[Call("Undefined",CTy"instruction",LW(0,32)), 30898 qVar"state"]), 30899 (Bop(And,bVar"b'15", 30900 Bop(And,Mop(Not,bVar"b'12"), 30901 Bop(And,Mop(Not,bVar"b'11"), 30902 Bop(And,Mop(Not,bVar"b'10"),bVar"b'9")))), 30903 Let(TP[Var("v",F4),qVar"s"], 30904 Apply 30905 (Call 30906 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 30907 qVar"state"), 30908 Let(TP[bVar"v",qVar"s"], 30909 Apply 30910 (Call 30911 ("Do",ATy(qTy,PTy(bTy,qTy)), 30912 TP[Var("v",F4),LT]),qVar"s"), 30913 ITE(bVar"v", 30914 TP[Call 30915 ("Branch",CTy"instruction", 30916 Call 30917 ("HandlerBranchLink", 30918 CTy"Branch", 30919 TP[EQ(Mop(Cast F1, 30920 LL[bVar"b'8"]), 30921 LW(1,1)), 30922 Mop(Cast F32, 30923 CC[Mop(Cast F8, 30924 LL[bVar"b'7", 30925 bVar"b'6", 30926 bVar"b'5", 30927 bVar"b'4", 30928 bVar"b'3", 30929 bVar"b'2", 30930 bVar"b'1", 30931 bVar"b'0"]), 30932 LW(0,5)])])), 30933 ITE(Bop(And, 30934 Apply 30935 (Call 30936 ("InITBlock", 30937 ATy(qTy,bTy),LU), 30938 qVar"s"), 30939 Mop(Not, 30940 Apply 30941 (Call 30942 ("LastInITBlock", 30943 ATy(qTy,bTy),LU), 30944 qVar"s"))), 30945 Apply 30946 (Call 30947 ("DECODE_UNPREDICTABLE", 30948 ATy(qTy,qTy), 30949 TP[Var("mc", 30950 CTy"MachineCode"), 30951 LS"HandlerBranchLink"]), 30952 qVar"s"),qVar"s")], 30953 TP[Apply 30954 (Call 30955 ("Skip", 30956 ATy(qTy,CTy"instruction"),LU), 30957 qVar"s"),qVar"s"])))), 30958 (Bop(And,bVar"b'15", 30959 Bop(And,Mop(Not,bVar"b'12"), 30960 Bop(And,Mop(Not,bVar"b'11"),bVar"b'10"))), 30961 Let(TP[Var("v",F4),qVar"s"], 30962 Apply 30963 (Call 30964 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 30965 qVar"state"), 30966 Let(TP[bVar"v",qVar"s"], 30967 Apply 30968 (Call 30969 ("Do",ATy(qTy,PTy(bTy,qTy)), 30970 TP[Var("v",F4),LT]),qVar"s"), 30971 ITE(bVar"v", 30972 TP[Call 30973 ("Branch",CTy"instruction", 30974 Call 30975 ("HandlerBranchLinkParameter", 30976 CTy"Branch", 30977 TP[Mop(Cast F32, 30978 Mop(Cast(FTy 5), 30979 LL[bVar"b'9", 30980 bVar"b'8", 30981 bVar"b'7", 30982 bVar"b'6", 30983 bVar"b'5"])), 30984 Mop(Cast F32, 30985 CC[Mop(Cast(FTy 5), 30986 LL[bVar"b'4", 30987 bVar"b'3", 30988 bVar"b'2", 30989 bVar"b'1", 30990 bVar"b'0"]), 30991 LW(0,5)])])), 30992 ITE(Bop(And, 30993 Apply 30994 (Call 30995 ("InITBlock", 30996 ATy(qTy,bTy),LU), 30997 qVar"s"), 30998 Mop(Not, 30999 Apply 31000 (Call 31001 ("LastInITBlock", 31002 ATy(qTy,bTy),LU), 31003 qVar"s"))), 31004 Apply 31005 (Call 31006 ("DECODE_UNPREDICTABLE", 31007 ATy(qTy,qTy), 31008 TP[Var("mc", 31009 CTy"MachineCode"), 31010 LS 31011 "HandlerBranchLinkParameter"]), 31012 qVar"s"),qVar"s")], 31013 TP[Apply 31014 (Call 31015 ("Skip", 31016 ATy(qTy,CTy"instruction"),LU), 31017 qVar"s"),qVar"s"])))), 31018 (Bop(And,bVar"b'15", 31019 Bop(And,Mop(Not,bVar"b'12"), 31020 Bop(And,bVar"b'11", 31021 Bop(And,Mop(Not,bVar"b'10"), 31022 Mop(Not,bVar"b'9"))))), 31023 Let(TP[Var("v",F4),qVar"s"], 31024 Apply 31025 (Call 31026 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 31027 qVar"state"), 31028 Let(TP[bVar"v",qVar"s"], 31029 Apply 31030 (Call 31031 ("Do",ATy(qTy,PTy(bTy,qTy)), 31032 TP[Var("v",F4),LT]),qVar"s"), 31033 TP[ITE(bVar"v", 31034 Call 31035 ("Load",CTy"instruction", 31036 Call 31037 ("LoadWord",CTy"Load", 31038 TP[LF,LT,LF, 31039 Mop(Cast F4, 31040 Mop(Cast(FTy 3), 31041 LL[bVar"b'2", 31042 bVar"b'1", 31043 bVar"b'0"])), 31044 Mop(Cast F4, 31045 Mop(Cast(FTy 3), 31046 LL[bVar"b'5", 31047 bVar"b'4", 31048 bVar"b'3"])), 31049 Call 31050 ("immediate_form1", 31051 CTy"offset1", 31052 Mop(Cast F32, 31053 CC[Mop(Cast(FTy 3), 31054 LL[bVar"b'8", 31055 bVar"b'7", 31056 bVar"b'6"]), 31057 LW(0,2)]))])), 31058 Apply 31059 (Call 31060 ("Skip", 31061 ATy(qTy,CTy"instruction"),LU), 31062 qVar"s")),qVar"s"]))), 31063 (Bop(And,bVar"b'15", 31064 Bop(And,Mop(Not,bVar"b'12"), 31065 Bop(And,bVar"b'11", 31066 Bop(And,Mop(Not,bVar"b'10"), 31067 Bop(And,bVar"b'9", 31068 Mop(Not,bVar"b'8")))))), 31069 Let(Var("Rm",F4), 31070 Mop(Cast F4, 31071 LL[bVar"b'6",bVar"b'5",bVar"b'4",bVar"b'3"]), 31072 Let(TP[Var("v",F4),qVar"s"], 31073 Apply 31074 (Call 31075 ("ThumbCondition", 31076 ATy(qTy,PTy(F4,qTy)),LU),qVar"state"), 31077 Let(TP[bVar"v",qVar"s"], 31078 Apply 31079 (Call 31080 ("Do",ATy(qTy,PTy(bTy,qTy)), 31081 TP[Var("v",F4),LT]),qVar"s"), 31082 ITE(bVar"v", 31083 Let(Var("n",F4), 31084 CC[Mop(Cast F1,LL[bVar"b'7"]), 31085 Mop(Cast(FTy 3), 31086 LL[bVar"b'2",bVar"b'1", 31087 bVar"b'0"])], 31088 TP[Call 31089 ("Branch", 31090 CTy"instruction", 31091 Call 31092 ("CheckArray", 31093 CTy"Branch", 31094 TP[Var("Rm",F4), 31095 Var("n",F4)])), 31096 ITE(Bop(Or, 31097 EQ(Var("n",F4), 31098 LW(15,4)), 31099 Bop(In, 31100 Var("Rm",F4), 31101 SL[LW(13,4), 31102 LW(15,4)])), 31103 Apply 31104 (Call 31105 ("DECODE_UNPREDICTABLE", 31106 ATy(qTy,qTy), 31107 TP[Var("mc", 31108 CTy"MachineCode"), 31109 LS"CheckArray"]), 31110 qVar"s"),qVar"s")]), 31111 TP[Apply 31112 (Call 31113 ("Skip", 31114 ATy(qTy,CTy"instruction"), 31115 LU),qVar"s"),qVar"s"]))))), 31116 (Bop(And,bVar"b'15", 31117 Bop(And,Mop(Not,bVar"b'12"), 31118 Bop(And,bVar"b'11", 31119 Bop(And,Mop(Not,bVar"b'10"), 31120 Bop(And,bVar"b'9",bVar"b'8"))))), 31121 Let(TP[Var("v",F4),qVar"s"], 31122 Apply 31123 (Call 31124 ("ThumbCondition",ATy(qTy,PTy(F4,qTy)),LU), 31125 qVar"state"), 31126 Let(TP[bVar"v",qVar"s"], 31127 Apply 31128 (Call 31129 ("Do",ATy(qTy,PTy(bTy,qTy)), 31130 TP[Var("v",F4),LT]),qVar"s"), 31131 TP[ITE(bVar"v", 31132 Call 31133 ("Load",CTy"instruction", 31134 Call 31135 ("LoadWord",CTy"Load", 31136 TP[LT,LT,LF, 31137 Mop(Cast F4, 31138 Mop(Cast(FTy 3), 31139 LL[bVar"b'2", 31140 bVar"b'1", 31141 bVar"b'0"])), 31142 LW(10,4), 31143 Call 31144 ("immediate_form1", 31145 CTy"offset1", 31146 Mop(Cast F32, 31147 CC[Mop(Cast(FTy 5), 31148 LL[bVar"b'7", 31149 bVar"b'6", 31150 bVar"b'5", 31151 bVar"b'4", 31152 bVar"b'3"]), 31153 LW(0,2)]))])), 31154 Apply 31155 (Call 31156 ("Skip", 31157 ATy(qTy,CTy"instruction"),LU), 31158 qVar"s")),qVar"s"]))), 31159 (Bop(And,bVar"b'15", 31160 Bop(And,Mop(Not,bVar"b'12"), 31161 Bop(And,bVar"b'11",bVar"b'10"))), 31162 Let(Var("Rt",FTy 3), 31163 Mop(Cast(FTy 3), 31164 LL[bVar"b'2",bVar"b'1",bVar"b'0"]), 31165 Let(TP[Var("v",F4),qVar"s"], 31166 Apply 31167 (Call 31168 ("ThumbCondition", 31169 ATy(qTy,PTy(F4,qTy)),LU),qVar"state"), 31170 Let(TP[bVar"v",qVar"s"], 31171 Apply 31172 (Call 31173 ("Do",ATy(qTy,PTy(bTy,qTy)), 31174 TP[Var("v",F4),LT]),qVar"s"), 31175 TP[ITE(bVar"v", 31176 Let(Var("m",CTy"offset1"), 31177 Call 31178 ("immediate_form1", 31179 CTy"offset1", 31180 Mop(Cast F32, 31181 CC[Mop(Cast(FTy 6), 31182 LL[bVar"b'8", 31183 bVar"b'7", 31184 bVar"b'6", 31185 bVar"b'5", 31186 bVar"b'4", 31187 bVar"b'3"]), 31188 LW(0,2)])), 31189 ITE(EQ(Mop(Cast F1, 31190 LL[bVar"b'9"]), 31191 LW(1,1)), 31192 Call 31193 ("Store", 31194 CTy"instruction", 31195 Call 31196 ("StoreWord", 31197 CTy"Store", 31198 TP[LT,LT,LF, 31199 Mop(Cast F4, 31200 Var("Rt", 31201 FTy 3)), 31202 LW(9,4), 31203 Var("m", 31204 CTy"offset1")])), 31205 Call 31206 ("Load", 31207 CTy"instruction", 31208 Call 31209 ("LoadWord", 31210 CTy"Load", 31211 TP[LT,LT,LF, 31212 Mop(Cast F4, 31213 Var("Rt", 31214 FTy 3)), 31215 LW(9,4), 31216 Var("m", 31217 CTy"offset1")])))), 31218 Apply 31219 (Call 31220 ("Skip", 31221 ATy(qTy,CTy"instruction"), 31222 LU),qVar"s")),qVar"s"]))))], 31223 Apply 31224 (Call 31225 ("DecodeThumb", 31226 ATy(qTy,PTy(CTy"instruction",qTy)), 31227 Mop(Cast F16, 31228 LL[bVar"b'15",bVar"b'14",bVar"b'13", 31229 bVar"b'12",bVar"b'11",bVar"b'10", 31230 bVar"b'9",bVar"b'8",bVar"b'7", 31231 bVar"b'6",bVar"b'5",bVar"b'4", 31232 bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])), 31233 qVar"state")), 31234 Apply 31235 (Call 31236 ("DecodeThumb",ATy(qTy,PTy(CTy"instruction",qTy)), 31237 Mop(Cast F16, 31238 LL[bVar"b'15",bVar"b'14",bVar"b'13", 31239 bVar"b'12",bVar"b'11",bVar"b'10",bVar"b'9", 31240 bVar"b'8",bVar"b'7",bVar"b'6",bVar"b'5", 31241 bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 31242 bVar"b'0"])),qVar"state")))))) 31243; 31244val DecodeThumb2_def = Def 31245 ("DecodeThumb2",Var("h",PTy(F16,F16)), 31246 Close 31247 (qVar"state", 31248 Let(Var("mc",CTy"MachineCode"), 31249 Call("Thumb2",CTy"MachineCode",Var("h",PTy(F16,F16))), 31250 Let(TP[TP[bVar"b'31",bVar"b'30",bVar"b'29",bVar"b'28", 31251 bVar"b'27",bVar"b'26",bVar"b'25",bVar"b'24", 31252 bVar"b'23",bVar"b'22",bVar"b'21",bVar"b'20", 31253 bVar"b'19",bVar"b'18",bVar"b'17",bVar"b'16"], 31254 bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12",bVar"b'11", 31255 bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 31256 bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 31257 bVar"b'0"], 31258 TP[BL(16,Mop(Fst,Var("h",PTy(F16,F16)))), 31259 BL(16,Mop(Snd,Var("h",PTy(F16,F16))))], 31260 ITB([(bVar"b'27", 31261 ITB([(bVar"b'28", 31262 ITB([(bVar"b'25", 31263 ITE(Bop(And,bVar"b'31", 31264 Bop(And,bVar"b'30", 31265 Bop(And,bVar"b'29", 31266 Mop(Not,bVar"b'26")))), 31267 ITB([(Bop(And,Mop(Not,bVar"b'24"), 31268 Bop(And,Mop(Not,bVar"b'23"), 31269 Bop(And,bVar"b'15", 31270 Bop(And,bVar"b'14", 31271 Bop(And, 31272 bVar"b'13", 31273 Bop(And, 31274 bVar"b'12", 31275 Bop(And, 31276 Mop(Not, 31277 bVar"b'7"), 31278 Bop(And, 31279 Mop(Not, 31280 bVar"b'6"), 31281 Bop(And, 31282 Mop(Not, 31283 bVar"b'5"), 31284 Mop(Not, 31285 bVar"b'4")))))))))), 31286 Let(Var("Rn",F4), 31287 Mop(Cast F4, 31288 LL[bVar"b'19", 31289 bVar"b'18", 31290 bVar"b'17",bVar"b'16"]), 31291 Let(Var("Rm",F4), 31292 Mop(Cast F4, 31293 LL[bVar"b'3", 31294 bVar"b'2", 31295 bVar"b'1", 31296 bVar"b'0"]), 31297 Let(Var("Rd",F4), 31298 Mop(Cast F4, 31299 LL[bVar"b'11", 31300 bVar"b'10", 31301 bVar"b'9", 31302 bVar"b'8"]), 31303 Let(TP[Var("v",F4), 31304 qVar"s"], 31305 Apply 31306 (Call 31307 ("ThumbCondition", 31308 ATy(qTy, 31309 PTy(F4, 31310 qTy)), 31311 LU), 31312 qVar"state"), 31313 Let(TP[bVar"v", 31314 qVar"s"], 31315 Apply 31316 (Call 31317 ("Do", 31318 ATy(qTy, 31319 PTy(bTy, 31320 qTy)), 31321 TP[Var("v", 31322 F4), 31323 Apply 31324 (Call 31325 ("HaveThumb2", 31326 ATy(qTy, 31327 bTy), 31328 LU), 31329 qVar"s")]), 31330 qVar"s"), 31331 ITE(bVar"v", 31332 TP[Call 31333 ("Data", 31334 CTy"instruction", 31335 Call 31336 ("ShiftRegister", 31337 CTy"Data", 31338 TP[LF, 31339 EQ(Mop(Cast 31340 F1, 31341 LL[bVar"b'20"]), 31342 LW(1, 31343 1)), 31344 Var("Rd", 31345 F4), 31346 Var("Rn", 31347 F4), 31348 Call 31349 ("DecodeRegShift", 31350 CTy"SRType", 31351 Mop(Cast 31352 (FTy 2), 31353 LL[bVar"b'22", 31354 bVar"b'21"])), 31355 Var("Rm", 31356 F4)])), 31357 ITE(Bop(Or, 31358 Bop(In, 31359 Var("Rd", 31360 F4), 31361 SL[LW(13, 31362 4), 31363 LW(15, 31364 4)]), 31365 Bop(Or, 31366 Bop(In, 31367 Var("Rn", 31368 F4), 31369 SL[LW(13, 31370 4), 31371 LW(15, 31372 4)]), 31373 Bop(In, 31374 Var("Rm", 31375 F4), 31376 SL[LW(13, 31377 4), 31378 LW(15, 31379 4)]))), 31380 Apply 31381 (Call 31382 ("DECODE_UNPREDICTABLE", 31383 ATy(qTy, 31384 qTy), 31385 TP[Var("mc", 31386 CTy"MachineCode"), 31387 LS 31388 "Shift (register)"]), 31389 qVar"s"), 31390 qVar"s")], 31391 TP[Apply 31392 (Call 31393 ("Skip", 31394 ATy(qTy, 31395 CTy"instruction"), 31396 LU), 31397 qVar"s"), 31398 qVar"s"]))))))), 31399 (Bop(And,Mop(Not,bVar"b'24"), 31400 Bop(And,Mop(Not,bVar"b'23"), 31401 Bop(And,bVar"b'15", 31402 Bop(And,bVar"b'14", 31403 Bop(And, 31404 bVar"b'13", 31405 Bop(And, 31406 bVar"b'12", 31407 bVar"b'7")))))), 31408 Let(Var("Rn",F4), 31409 Mop(Cast F4, 31410 LL[bVar"b'19", 31411 bVar"b'18", 31412 bVar"b'17",bVar"b'16"]), 31413 Let(Var("Rm",F4), 31414 Mop(Cast F4, 31415 LL[bVar"b'3", 31416 bVar"b'2", 31417 bVar"b'1", 31418 bVar"b'0"]), 31419 Let(Var("Rd",F4), 31420 Mop(Cast F4, 31421 LL[bVar"b'11", 31422 bVar"b'10", 31423 bVar"b'9", 31424 bVar"b'8"]), 31425 Let(TP[Var("v",F4), 31426 qVar"s"], 31427 Apply 31428 (Call 31429 ("ThumbCondition", 31430 ATy(qTy, 31431 PTy(F4, 31432 qTy)), 31433 LU), 31434 qVar"state"), 31435 Let(TP[bVar"v", 31436 qVar"s"], 31437 Apply 31438 (Call 31439 ("Do", 31440 ATy(qTy, 31441 PTy(bTy, 31442 qTy)), 31443 TP[Var("v", 31444 F4), 31445 Apply 31446 (Call 31447 ("HaveThumb2", 31448 ATy(qTy, 31449 bTy), 31450 LU), 31451 qVar"s")]), 31452 qVar"s"), 31453 ITE(bVar"v", 31454 TP[Let(TP[bVar"args0", 31455 nVar"args4"], 31456 TP[EQ(Mop(Cast 31457 F1, 31458 LL[bVar"b'20"]), 31459 LW(1, 31460 1)), 31461 Mop(Cast 31462 nTy, 31463 CC[Mop(Cast 31464 (FTy 2), 31465 LL[bVar"b'5", 31466 bVar"b'4"]), 31467 LW(0, 31468 3)])], 31469 CS(Mop(Cast 31470 (FTy 2), 31471 LL[bVar"b'22", 31472 bVar"b'21"]), 31473 [(LW(0, 31474 2), 31475 Call 31476 ("Media", 31477 CTy"instruction", 31478 Call 31479 ("ExtendHalfword", 31480 CTy"Media", 31481 TP[bVar"args0", 31482 Var("Rd", 31483 F4), 31484 Var("Rn", 31485 F4), 31486 Var("Rm", 31487 F4), 31488 nVar"args4"]))), 31489 (LW(1, 31490 2), 31491 Call 31492 ("Media", 31493 CTy"instruction", 31494 Call 31495 ("ExtendByte16", 31496 CTy"Media", 31497 TP[bVar"args0", 31498 Var("Rd", 31499 F4), 31500 Var("Rn", 31501 F4), 31502 Var("Rm", 31503 F4), 31504 nVar"args4"]))), 31505 (LW(2, 31506 2), 31507 Call 31508 ("Media", 31509 CTy"instruction", 31510 Call 31511 ("ExtendByte", 31512 CTy"Media", 31513 TP[bVar"args0", 31514 Var("Rd", 31515 F4), 31516 Var("Rn", 31517 F4), 31518 Var("Rm", 31519 F4), 31520 nVar"args4"]))), 31521 (LW(3, 31522 2), 31523 Call 31524 ("Undefined", 31525 CTy"instruction", 31526 LW(0, 31527 32)))])), 31528 ITE(Bop(Or, 31529 Bop(In, 31530 Var("Rd", 31531 F4), 31532 SL[LW(13, 31533 4), 31534 LW(15, 31535 4)]), 31536 Bop(Or, 31537 EQ(Var("Rn", 31538 F4), 31539 LW(13, 31540 4)), 31541 Bop(Or, 31542 Bop(In, 31543 Var("Rm", 31544 F4), 31545 SL[LW(13, 31546 4), 31547 LW(15, 31548 4)]), 31549 Mop(Not, 31550 EQ(Mop(Cast 31551 F1, 31552 LL[bVar"b'6"]), 31553 LW(0, 31554 1)))))), 31555 Apply 31556 (Call 31557 ("DECODE_UNPREDICTABLE", 31558 ATy(qTy, 31559 qTy), 31560 TP[Var("mc", 31561 CTy"MachineCode"), 31562 LS 31563 "Extend (register)"]), 31564 qVar"s"), 31565 qVar"s")], 31566 TP[Apply 31567 (Call 31568 ("Skip", 31569 ATy(qTy, 31570 CTy"instruction"), 31571 LU), 31572 qVar"s"), 31573 qVar"s"]))))))), 31574 (Bop(And,Mop(Not,bVar"b'24"), 31575 Bop(And,bVar"b'23", 31576 Bop(And,bVar"b'15", 31577 Bop(And,bVar"b'14", 31578 Bop(And, 31579 bVar"b'13", 31580 Bop(And, 31581 bVar"b'12", 31582 Mop(Not, 31583 bVar"b'7"))))))), 31584 Let(Var("Rn",F4), 31585 Mop(Cast F4, 31586 LL[bVar"b'19", 31587 bVar"b'18", 31588 bVar"b'17",bVar"b'16"]), 31589 Let(Var("Rm",F4), 31590 Mop(Cast F4, 31591 LL[bVar"b'3", 31592 bVar"b'2", 31593 bVar"b'1", 31594 bVar"b'0"]), 31595 Let(Var("Rd",F4), 31596 Mop(Cast F4, 31597 LL[bVar"b'11", 31598 bVar"b'10", 31599 bVar"b'9", 31600 bVar"b'8"]), 31601 Let(TP[Var("v",F4), 31602 qVar"s"], 31603 Apply 31604 (Call 31605 ("ThumbCondition", 31606 ATy(qTy, 31607 PTy(F4, 31608 qTy)), 31609 LU), 31610 qVar"state"), 31611 Let(TP[bVar"v", 31612 qVar"s"], 31613 Apply 31614 (Call 31615 ("Do", 31616 ATy(qTy, 31617 PTy(bTy, 31618 qTy)), 31619 TP[Var("v", 31620 F4), 31621 Apply 31622 (Call 31623 ("HaveThumb2", 31624 ATy(qTy, 31625 bTy), 31626 LU), 31627 qVar"s")]), 31628 qVar"s"), 31629 ITE(bVar"v", 31630 TP[Call 31631 ("DecodeParallelAdditionSubtraction", 31632 CTy"instruction", 31633 TP[Bop(Add, 31634 Mop(Cast 31635 (FTy 2), 31636 LL[bVar"b'5", 31637 bVar"b'4"]), 31638 LW(1, 31639 2)), 31640 CS(Mop(Cast 31641 (FTy 3), 31642 LL[bVar"b'22", 31643 bVar"b'21", 31644 bVar"b'20"]), 31645 [(LW(1, 31646 3), 31647 LW(0, 31648 3)), 31649 (LW(2, 31650 3), 31651 LW(1, 31652 3)), 31653 (LW(6, 31654 3), 31655 LW(2, 31656 3)), 31657 (LW(5, 31658 3), 31659 LW(3, 31660 3)), 31661 (LW(0, 31662 3), 31663 LW(4, 31664 3)), 31665 (LW(4, 31666 3), 31667 LW(7, 31668 3)), 31669 (AVar 31670 (FTy 3), 31671 LW(5, 31672 3))]), 31673 Mop(Cast 31674 F1, 31675 LL[bVar"b'6"]), 31676 Var("Rd", 31677 F4), 31678 Var("Rn", 31679 F4), 31680 Var("Rm", 31681 F4)]), 31682 ITE(Bop(Or, 31683 Bop(In, 31684 Var("Rd", 31685 F4), 31686 SL[LW(13, 31687 4), 31688 LW(15, 31689 4)]), 31690 Bop(Or, 31691 Bop(In, 31692 Var("Rn", 31693 F4), 31694 SL[LW(13, 31695 4), 31696 LW(15, 31697 4)]), 31698 Bop(In, 31699 Var("Rm", 31700 F4), 31701 SL[LW(13, 31702 4), 31703 LW(15, 31704 4)]))), 31705 Apply 31706 (Call 31707 ("DECODE_UNPREDICTABLE", 31708 ATy(qTy, 31709 qTy), 31710 TP[Var("mc", 31711 CTy"MachineCode"), 31712 LS 31713 "Parallel addition and subtraction"]), 31714 qVar"s"), 31715 qVar"s")], 31716 TP[Apply 31717 (Call 31718 ("Skip", 31719 ATy(qTy, 31720 CTy"instruction"), 31721 LU), 31722 qVar"s"), 31723 qVar"s"]))))))), 31724 (Bop(And,Mop(Not,bVar"b'24"), 31725 Bop(And,bVar"b'23", 31726 Bop(And, 31727 Mop(Not,bVar"b'22"), 31728 Bop(And, 31729 Mop(Not, 31730 bVar"b'21"), 31731 Bop(And, 31732 Mop(Not, 31733 bVar"b'20"), 31734 Bop(And, 31735 bVar"b'15", 31736 Bop(And, 31737 bVar"b'14", 31738 Bop(And, 31739 bVar"b'13", 31740 Bop(And, 31741 bVar"b'12", 31742 Bop(And, 31743 bVar"b'7", 31744 Mop(Not, 31745 bVar"b'6"))))))))))), 31746 Let(Var("Rn",F4), 31747 Mop(Cast F4, 31748 LL[bVar"b'19", 31749 bVar"b'18", 31750 bVar"b'17",bVar"b'16"]), 31751 Let(Var("Rm",F4), 31752 Mop(Cast F4, 31753 LL[bVar"b'3", 31754 bVar"b'2", 31755 bVar"b'1", 31756 bVar"b'0"]), 31757 Let(Var("Rd",F4), 31758 Mop(Cast F4, 31759 LL[bVar"b'11", 31760 bVar"b'10", 31761 bVar"b'9", 31762 bVar"b'8"]), 31763 Let(TP[Var("v",F4), 31764 qVar"s"], 31765 Apply 31766 (Call 31767 ("ThumbCondition", 31768 ATy(qTy, 31769 PTy(F4, 31770 qTy)), 31771 LU), 31772 qVar"state"), 31773 Let(TP[bVar"v", 31774 qVar"s"], 31775 Apply 31776 (Call 31777 ("Do", 31778 ATy(qTy, 31779 PTy(bTy, 31780 qTy)), 31781 TP[Var("v", 31782 F4), 31783 Apply 31784 (Call 31785 ("HaveThumb2", 31786 ATy(qTy, 31787 bTy), 31788 LU), 31789 qVar"s")]), 31790 qVar"s"), 31791 ITE(bVar"v", 31792 TP[Call 31793 ("Media", 31794 CTy"instruction", 31795 Call 31796 ("SaturatingAddSubtract", 31797 CTy"Media", 31798 TP[Mop(Rev, 31799 Mop(Cast 31800 (FTy 2), 31801 LL[bVar"b'5", 31802 bVar"b'4"])), 31803 Var("Rd", 31804 F4), 31805 Var("Rm", 31806 F4), 31807 Var("Rn", 31808 F4)])), 31809 ITE(Bop(Or, 31810 Bop(In, 31811 Var("Rd", 31812 F4), 31813 SL[LW(13, 31814 4), 31815 LW(15, 31816 4)]), 31817 Bop(Or, 31818 Bop(In, 31819 Var("Rn", 31820 F4), 31821 SL[LW(13, 31822 4), 31823 LW(15, 31824 4)]), 31825 Bop(In, 31826 Var("Rm", 31827 F4), 31828 SL[LW(13, 31829 4), 31830 LW(15, 31831 4)]))), 31832 Apply 31833 (Call 31834 ("DECODE_UNPREDICTABLE", 31835 ATy(qTy, 31836 qTy), 31837 TP[Var("mc", 31838 CTy"MachineCode"), 31839 LS 31840 "SaturatingAddSubtract"]), 31841 qVar"s"), 31842 qVar"s")], 31843 TP[Apply 31844 (Call 31845 ("Skip", 31846 ATy(qTy, 31847 CTy"instruction"), 31848 LU), 31849 qVar"s"), 31850 qVar"s"]))))))), 31851 (Bop(And,Mop(Not,bVar"b'24"), 31852 Bop(And,bVar"b'23", 31853 Bop(And, 31854 Mop(Not,bVar"b'22"), 31855 Bop(And, 31856 Mop(Not, 31857 bVar"b'21"), 31858 Bop(And, 31859 bVar"b'20", 31860 Bop(And, 31861 bVar"b'15", 31862 Bop(And, 31863 bVar"b'14", 31864 Bop(And, 31865 bVar"b'13", 31866 Bop(And, 31867 bVar"b'12", 31868 Bop(And, 31869 bVar"b'7", 31870 Mop(Not, 31871 bVar"b'6"))))))))))), 31872 Let(Var("Rm",F4), 31873 Mop(Cast F4, 31874 LL[bVar"b'3",bVar"b'2", 31875 bVar"b'1",bVar"b'0"]), 31876 Let(Var("Rd",F4), 31877 Mop(Cast F4, 31878 LL[bVar"b'11", 31879 bVar"b'10", 31880 bVar"b'9", 31881 bVar"b'8"]), 31882 Let(TP[Var("v",F4), 31883 qVar"s"], 31884 Apply 31885 (Call 31886 ("ThumbCondition", 31887 ATy(qTy, 31888 PTy(F4,qTy)), 31889 LU), 31890 qVar"state"), 31891 Let(TP[bVar"v", 31892 qVar"s"], 31893 Apply 31894 (Call 31895 ("Do", 31896 ATy(qTy, 31897 PTy(bTy, 31898 qTy)), 31899 TP[Var("v", 31900 F4), 31901 Apply 31902 (Call 31903 ("HaveThumb2", 31904 ATy(qTy, 31905 bTy), 31906 LU), 31907 qVar"s")]), 31908 qVar"s"), 31909 ITE(bVar"v", 31910 TP[CS(Mop(Cast 31911 (FTy 2), 31912 LL[bVar"b'5", 31913 bVar"b'4"]), 31914 [(LW(0, 31915 2), 31916 Call 31917 ("Media", 31918 CTy"instruction", 31919 Call 31920 ("ByteReverse", 31921 CTy"Media", 31922 TP[Var("Rd", 31923 F4), 31924 Var("Rm", 31925 F4)]))), 31926 (LW(1, 31927 2), 31928 Call 31929 ("Media", 31930 CTy"instruction", 31931 Call 31932 ("ByteReversePackedHalfword", 31933 CTy"Media", 31934 TP[Var("Rd", 31935 F4), 31936 Var("Rm", 31937 F4)]))), 31938 (LW(2, 31939 2), 31940 Call 31941 ("Media", 31942 CTy"instruction", 31943 Call 31944 ("ReverseBits", 31945 CTy"Media", 31946 TP[Var("Rd", 31947 F4), 31948 Var("Rm", 31949 F4)]))), 31950 (LW(3, 31951 2), 31952 Call 31953 ("Media", 31954 CTy"instruction", 31955 Call 31956 ("ByteReverseSignedHalfword", 31957 CTy"Media", 31958 TP[Var("Rd", 31959 F4), 31960 Var("Rm", 31961 F4)])))]), 31962 ITE(Bop(Or, 31963 Mop(Not, 31964 EQ(Mop(Cast 31965 F4, 31966 LL[bVar"b'19", 31967 bVar"b'18", 31968 bVar"b'17", 31969 bVar"b'16"]), 31970 Var("Rm", 31971 F4))), 31972 Bop(Or, 31973 Bop(In, 31974 Var("Rd", 31975 F4), 31976 SL[LW(13, 31977 4), 31978 LW(15, 31979 4)]), 31980 Bop(In, 31981 Var("Rm", 31982 F4), 31983 SL[LW(13, 31984 4), 31985 LW(15, 31986 4)]))), 31987 Apply 31988 (Call 31989 ("DECODE_UNPREDICTABLE", 31990 ATy(qTy, 31991 qTy), 31992 TP[Var("mc", 31993 CTy"MachineCode"), 31994 LS 31995 "Reverses"]), 31996 qVar"s"), 31997 qVar"s")], 31998 TP[Apply 31999 (Call 32000 ("Skip", 32001 ATy(qTy, 32002 CTy"instruction"), 32003 LU), 32004 qVar"s"), 32005 qVar"s"])))))), 32006 (Bop(And,Mop(Not,bVar"b'24"), 32007 Bop(And,bVar"b'23", 32008 Bop(And, 32009 Mop(Not,bVar"b'22"), 32010 Bop(And,bVar"b'21", 32011 Bop(And, 32012 Mop(Not, 32013 bVar"b'20"), 32014 Bop(And, 32015 bVar"b'15", 32016 Bop(And, 32017 bVar"b'14", 32018 Bop(And, 32019 bVar"b'13", 32020 Bop(And, 32021 bVar"b'12", 32022 Bop(And, 32023 bVar"b'7", 32024 Bop(And, 32025 Mop(Not, 32026 bVar"b'6"), 32027 Bop(And, 32028 Mop(Not, 32029 bVar"b'5"), 32030 Mop(Not, 32031 bVar"b'4"))))))))))))), 32032 Let(Var("Rn",F4), 32033 Mop(Cast F4, 32034 LL[bVar"b'19", 32035 bVar"b'18", 32036 bVar"b'17",bVar"b'16"]), 32037 Let(Var("Rm",F4), 32038 Mop(Cast F4, 32039 LL[bVar"b'3", 32040 bVar"b'2", 32041 bVar"b'1", 32042 bVar"b'0"]), 32043 Let(Var("Rd",F4), 32044 Mop(Cast F4, 32045 LL[bVar"b'11", 32046 bVar"b'10", 32047 bVar"b'9", 32048 bVar"b'8"]), 32049 Let(TP[Var("v",F4), 32050 qVar"s"], 32051 Apply 32052 (Call 32053 ("ThumbCondition", 32054 ATy(qTy, 32055 PTy(F4, 32056 qTy)), 32057 LU), 32058 qVar"state"), 32059 Let(TP[bVar"v", 32060 qVar"s"], 32061 Apply 32062 (Call 32063 ("Do", 32064 ATy(qTy, 32065 PTy(bTy, 32066 qTy)), 32067 TP[Var("v", 32068 F4), 32069 Apply 32070 (Call 32071 ("HaveThumb2", 32072 ATy(qTy, 32073 bTy), 32074 LU), 32075 qVar"s")]), 32076 qVar"s"), 32077 ITE(bVar"v", 32078 TP[Call 32079 ("Media", 32080 CTy"instruction", 32081 Call 32082 ("SelectBytes", 32083 CTy"Media", 32084 TP[Var("Rd", 32085 F4), 32086 Var("Rn", 32087 F4), 32088 Var("Rm", 32089 F4)])), 32090 ITE(Bop(Or, 32091 Bop(In, 32092 Var("Rd", 32093 F4), 32094 SL[LW(13, 32095 4), 32096 LW(15, 32097 4)]), 32098 Bop(Or, 32099 Bop(In, 32100 Var("Rn", 32101 F4), 32102 SL[LW(13, 32103 4), 32104 LW(15, 32105 4)]), 32106 Bop(In, 32107 Var("Rm", 32108 F4), 32109 SL[LW(13, 32110 4), 32111 LW(15, 32112 4)]))), 32113 Apply 32114 (Call 32115 ("DECODE_UNPREDICTABLE", 32116 ATy(qTy, 32117 qTy), 32118 TP[Var("mc", 32119 CTy"MachineCode"), 32120 LS 32121 "SelectBytes"]), 32122 qVar"s"), 32123 qVar"s")], 32124 TP[Apply 32125 (Call 32126 ("Skip", 32127 ATy(qTy, 32128 CTy"instruction"), 32129 LU), 32130 qVar"s"), 32131 qVar"s"]))))))), 32132 (Bop(And,Mop(Not,bVar"b'24"), 32133 Bop(And,bVar"b'23", 32134 Bop(And, 32135 Mop(Not,bVar"b'22"), 32136 Bop(And,bVar"b'21", 32137 Bop(And, 32138 bVar"b'20", 32139 Bop(And, 32140 bVar"b'15", 32141 Bop(And, 32142 bVar"b'14", 32143 Bop(And, 32144 bVar"b'13", 32145 Bop(And, 32146 bVar"b'12", 32147 Bop(And, 32148 bVar"b'7", 32149 Bop(And, 32150 Mop(Not, 32151 bVar"b'6"), 32152 Bop(And, 32153 Mop(Not, 32154 bVar"b'5"), 32155 Mop(Not, 32156 bVar"b'4"))))))))))))), 32157 Let(Var("Rm",F4), 32158 Mop(Cast F4, 32159 LL[bVar"b'3",bVar"b'2", 32160 bVar"b'1",bVar"b'0"]), 32161 Let(Var("Rd",F4), 32162 Mop(Cast F4, 32163 LL[bVar"b'11", 32164 bVar"b'10", 32165 bVar"b'9", 32166 bVar"b'8"]), 32167 Let(TP[Var("v",F4), 32168 qVar"s"], 32169 Apply 32170 (Call 32171 ("ThumbCondition", 32172 ATy(qTy, 32173 PTy(F4,qTy)), 32174 LU), 32175 qVar"state"), 32176 Let(TP[bVar"v", 32177 qVar"s"], 32178 Apply 32179 (Call 32180 ("Do", 32181 ATy(qTy, 32182 PTy(bTy, 32183 qTy)), 32184 TP[Var("v", 32185 F4), 32186 Apply 32187 (Call 32188 ("HaveThumb2", 32189 ATy(qTy, 32190 bTy), 32191 LU), 32192 qVar"s")]), 32193 qVar"s"), 32194 ITE(bVar"v", 32195 TP[Call 32196 ("Data", 32197 CTy"instruction", 32198 Call 32199 ("CountLeadingZeroes", 32200 CTy"Data", 32201 TP[Var("Rd", 32202 F4), 32203 Var("Rm", 32204 F4)])), 32205 ITE(Bop(Or, 32206 Mop(Not, 32207 EQ(Mop(Cast 32208 F4, 32209 LL[bVar"b'19", 32210 bVar"b'18", 32211 bVar"b'17", 32212 bVar"b'16"]), 32213 Var("Rm", 32214 F4))), 32215 Bop(Or, 32216 Bop(In, 32217 Var("Rd", 32218 F4), 32219 SL[LW(13, 32220 4), 32221 LW(15, 32222 4)]), 32223 Bop(In, 32224 Var("Rm", 32225 F4), 32226 SL[LW(13, 32227 4), 32228 LW(15, 32229 4)]))), 32230 Apply 32231 (Call 32232 ("DECODE_UNPREDICTABLE", 32233 ATy(qTy, 32234 qTy), 32235 TP[Var("mc", 32236 CTy"MachineCode"), 32237 LS 32238 "CountLeadingZeroes"]), 32239 qVar"s"), 32240 qVar"s")], 32241 TP[Apply 32242 (Call 32243 ("Skip", 32244 ATy(qTy, 32245 CTy"instruction"), 32246 LU), 32247 qVar"s"), 32248 qVar"s"])))))), 32249 (Bop(And,bVar"b'24", 32250 Bop(And,Mop(Not,bVar"b'23"), 32251 Bop(And, 32252 Mop(Not,bVar"b'7"), 32253 Mop(Not,bVar"b'6")))), 32254 Let(Var("Rn",F4), 32255 Mop(Cast F4, 32256 LL[bVar"b'19", 32257 bVar"b'18", 32258 bVar"b'17",bVar"b'16"]), 32259 Let(Var("Rm",F4), 32260 Mop(Cast F4, 32261 LL[bVar"b'3", 32262 bVar"b'2", 32263 bVar"b'1", 32264 bVar"b'0"]), 32265 Let(Var("Rd",F4), 32266 Mop(Cast F4, 32267 LL[bVar"b'11", 32268 bVar"b'10", 32269 bVar"b'9", 32270 bVar"b'8"]), 32271 Let(Var("Ra",F4), 32272 Mop(Cast F4, 32273 LL[bVar"b'15", 32274 bVar"b'14", 32275 bVar"b'13", 32276 bVar"b'12"]), 32277 Let(TP[Var("v", 32278 F4), 32279 qVar"s"], 32280 Apply 32281 (Call 32282 ("ThumbCondition", 32283 ATy(qTy, 32284 PTy(F4, 32285 qTy)), 32286 LU), 32287 qVar"state"), 32288 Let(TP[bVar"v", 32289 qVar"s"], 32290 Apply 32291 (Call 32292 ("Do", 32293 ATy(qTy, 32294 PTy(bTy, 32295 qTy)), 32296 TP[Var("v", 32297 F4), 32298 Apply 32299 (Call 32300 ("HaveThumb2", 32301 ATy(qTy, 32302 bTy), 32303 LU), 32304 qVar"s")]), 32305 qVar"s"), 32306 ITE(bVar"v", 32307 Let(qVar"s", 32308 ITE(Bop(Or, 32309 Bop(In, 32310 Var("Rd", 32311 F4), 32312 SL[LW(13, 32313 4), 32314 LW(15, 32315 4)]), 32316 Bop(Or, 32317 Bop(In, 32318 Var("Rn", 32319 F4), 32320 SL[LW(13, 32321 4), 32322 LW(15, 32323 4)]), 32324 Bop(Or, 32325 Bop(In, 32326 Var("Rm", 32327 F4), 32328 SL[LW(13, 32329 4), 32330 LW(15, 32331 4)]), 32332 EQ(Var("Ra", 32333 F4), 32334 LW(13, 32335 4))))), 32336 Apply 32337 (Call 32338 ("DECODE_UNPREDICTABLE", 32339 ATy(qTy, 32340 qTy), 32341 TP[Var("mc", 32342 CTy"MachineCode"), 32343 LS 32344 "Multiplies and absolute difference"]), 32345 qVar"s"), 32346 qVar"s"), 32347 CS(TP[Mop(Cast 32348 (FTy 3), 32349 LL[bVar"b'22", 32350 bVar"b'21", 32351 bVar"b'20"]), 32352 Var("Ra", 32353 F4), 32354 EQ(Mop(Cast 32355 F1, 32356 LL[bVar"b'5"]), 32357 LW(1, 32358 1)), 32359 EQ(Mop(Cast 32360 F1, 32361 LL[bVar"b'4"]), 32362 LW(1, 32363 1))], 32364 [(TP[LW(0, 32365 3), 32366 LW(15, 32367 4), 32368 LF, 32369 LF], 32370 TP[Call 32371 ("Multiply", 32372 CTy"instruction", 32373 Call 32374 ("Multiply32", 32375 CTy"Multiply", 32376 TP[LF, 32377 Var("Rd", 32378 F4), 32379 Var("Rn", 32380 F4), 32381 Var("Rm", 32382 F4)])), 32383 qVar"s"]), 32384 (TP[LW(0, 32385 3), 32386 AVar 32387 F4, 32388 LF, 32389 LF], 32390 TP[Call 32391 ("Multiply", 32392 CTy"instruction", 32393 Call 32394 ("MultiplyAccumulate", 32395 CTy"Multiply", 32396 TP[LF, 32397 Var("Rd", 32398 F4), 32399 Var("Rn", 32400 F4), 32401 Var("Rm", 32402 F4), 32403 Var("Ra", 32404 F4)])), 32405 qVar"s"]), 32406 (TP[LW(0, 32407 3), 32408 LW(15, 32409 4), 32410 LF, 32411 LT], 32412 TP[LX(CTy"instruction"), 32413 Apply 32414 (Call 32415 ("DECODE_UNPREDICTABLE", 32416 ATy(qTy, 32417 qTy), 32418 TP[Var("mc", 32419 CTy"MachineCode"), 32420 LS 32421 "MultiplySubtract"]), 32422 qVar"s")]), 32423 (TP[LW(0, 32424 3), 32425 AVar 32426 F4, 32427 LF, 32428 LT], 32429 TP[Call 32430 ("Multiply", 32431 CTy"instruction", 32432 Call 32433 ("MultiplySubtract", 32434 CTy"Multiply", 32435 TP[Var("Rd", 32436 F4), 32437 Var("Rn", 32438 F4), 32439 Var("Rm", 32440 F4), 32441 Var("Ra", 32442 F4)])), 32443 qVar"s"]), 32444 (TP[LW(1, 32445 3), 32446 LW(15, 32447 4), 32448 bVar"n_high", 32449 bVar"m_high"], 32450 TP[Call 32451 ("Multiply", 32452 CTy"instruction", 32453 Call 32454 ("Signed16Multiply32Result", 32455 CTy"Multiply", 32456 TP[bVar"m_high", 32457 bVar"n_high", 32458 Var("Rd", 32459 F4), 32460 Var("Rn", 32461 F4), 32462 Var("Rm", 32463 F4)])), 32464 qVar"s"]), 32465 (TP[LW(1, 32466 3), 32467 AVar 32468 F4, 32469 bVar"n_high", 32470 bVar"m_high"], 32471 TP[Call 32472 ("Multiply", 32473 CTy"instruction", 32474 Call 32475 ("Signed16Multiply32Accumulate", 32476 CTy"Multiply", 32477 TP[bVar"m_high", 32478 bVar"n_high", 32479 Var("Rd", 32480 F4), 32481 Var("Rn", 32482 F4), 32483 Var("Rm", 32484 F4), 32485 Var("Ra", 32486 F4)])), 32487 qVar"s"]), 32488 (TP[LW(2, 32489 3), 32490 AVar 32491 F4, 32492 LF, 32493 bVar"m_swap"], 32494 TP[Call 32495 ("Multiply", 32496 CTy"instruction", 32497 Call 32498 ("SignedMultiplyDual", 32499 CTy"Multiply", 32500 TP[LF, 32501 bVar"m_swap", 32502 Var("Rd", 32503 F4), 32504 Var("Rn", 32505 F4), 32506 Var("Rm", 32507 F4), 32508 Var("Ra", 32509 F4)])), 32510 qVar"s"]), 32511 (TP[LW(3, 32512 3), 32513 LW(15, 32514 4), 32515 LF, 32516 bVar"m_high"], 32517 TP[Call 32518 ("Multiply", 32519 CTy"instruction", 32520 Call 32521 ("Signed16x32Multiply32Result", 32522 CTy"Multiply", 32523 TP[bVar"m_high", 32524 Var("Rd", 32525 F4), 32526 Var("Rn", 32527 F4), 32528 Var("Rm", 32529 F4)])), 32530 qVar"s"]), 32531 (TP[LW(3, 32532 3), 32533 AVar 32534 F4, 32535 LF, 32536 bVar"m_high"], 32537 TP[Call 32538 ("Multiply", 32539 CTy"instruction", 32540 Call 32541 ("Signed16x32Multiply32Accumulate", 32542 CTy"Multiply", 32543 TP[bVar"m_high", 32544 Var("Rd", 32545 F4), 32546 Var("Rn", 32547 F4), 32548 Var("Rm", 32549 F4), 32550 Var("Ra", 32551 F4)])), 32552 qVar"s"]), 32553 (TP[LW(4, 32554 3), 32555 AVar 32556 F4, 32557 LF, 32558 bVar"m_swap"], 32559 TP[Call 32560 ("Multiply", 32561 CTy"instruction", 32562 Call 32563 ("SignedMultiplyDual", 32564 CTy"Multiply", 32565 TP[LT, 32566 bVar"m_swap", 32567 Var("Rd", 32568 F4), 32569 Var("Rn", 32570 F4), 32571 Var("Rm", 32572 F4), 32573 Var("Ra", 32574 F4)])), 32575 qVar"s"]), 32576 (TP[LW(5, 32577 3), 32578 AVar 32579 F4, 32580 LF, 32581 bVar"round"], 32582 TP[Call 32583 ("Multiply", 32584 CTy"instruction", 32585 Call 32586 ("SignedMostSignificantMultiply", 32587 CTy"Multiply", 32588 TP[bVar"round", 32589 Var("Rd", 32590 F4), 32591 Var("Rn", 32592 F4), 32593 Var("Rm", 32594 F4), 32595 Var("Ra", 32596 F4)])), 32597 qVar"s"]), 32598 (TP[LW(6, 32599 3), 32600 LW(15, 32601 4), 32602 LF, 32603 AVar 32604 bTy], 32605 TP[LX(CTy"instruction"), 32606 Apply 32607 (Call 32608 ("DECODE_UNPREDICTABLE", 32609 ATy(qTy, 32610 qTy), 32611 TP[Var("mc", 32612 CTy"MachineCode"), 32613 LS 32614 "SignedMostSignificantMultiplySubtract"]), 32615 qVar"s")]), 32616 (TP[LW(6, 32617 3), 32618 AVar 32619 F4, 32620 LF, 32621 bVar"round"], 32622 TP[Call 32623 ("Multiply", 32624 CTy"instruction", 32625 Call 32626 ("SignedMostSignificantMultiplySubtract", 32627 CTy"Multiply", 32628 TP[bVar"round", 32629 Var("Rd", 32630 F4), 32631 Var("Rn", 32632 F4), 32633 Var("Rm", 32634 F4), 32635 Var("Ra", 32636 F4)])), 32637 qVar"s"]), 32638 (TP[LW(7, 32639 3), 32640 AVar 32641 F4, 32642 LF, 32643 LF], 32644 TP[Call 32645 ("SIMD", 32646 CTy"instruction", 32647 Call 32648 ("UnsignedSumAbsoluteDifferences", 32649 CTy"SIMD", 32650 TP[Var("Rd", 32651 F4), 32652 Var("Rn", 32653 F4), 32654 Var("Rm", 32655 F4), 32656 Var("Ra", 32657 F4)])), 32658 qVar"s"]), 32659 (AVar 32660 (PTy(FTy 3, 32661 PTy(F4, 32662 PTy(bTy, 32663 bTy)))), 32664 TP[Call 32665 ("Undefined", 32666 CTy"instruction", 32667 LW(0, 32668 32)), 32669 qVar"s"])])), 32670 TP[Apply 32671 (Call 32672 ("Skip", 32673 ATy(qTy, 32674 CTy"instruction"), 32675 LU), 32676 qVar"s"), 32677 qVar"s"])))))))), 32678 (Bop(And,bVar"b'24", 32679 Bop(And,bVar"b'23", 32680 Bop(And, 32681 Mop(Not,bVar"b'22"), 32682 Bop(And,bVar"b'20", 32683 Bop(And, 32684 bVar"b'7", 32685 Bop(And, 32686 bVar"b'6", 32687 Bop(And, 32688 bVar"b'5", 32689 bVar"b'4"))))))), 32690 Let(Var("Rn",F4), 32691 Mop(Cast F4, 32692 LL[bVar"b'19", 32693 bVar"b'18", 32694 bVar"b'17",bVar"b'16"]), 32695 Let(Var("Rm",F4), 32696 Mop(Cast F4, 32697 LL[bVar"b'3", 32698 bVar"b'2", 32699 bVar"b'1", 32700 bVar"b'0"]), 32701 Let(Var("Rd",F4), 32702 Mop(Cast F4, 32703 LL[bVar"b'11", 32704 bVar"b'10", 32705 bVar"b'9", 32706 bVar"b'8"]), 32707 Let(TP[Var("v",F4), 32708 qVar"s"], 32709 Apply 32710 (Call 32711 ("ThumbCondition", 32712 ATy(qTy, 32713 PTy(F4, 32714 qTy)), 32715 LU), 32716 qVar"state"), 32717 Let(TP[bVar"v", 32718 qVar"s"], 32719 Apply 32720 (Call 32721 ("Do", 32722 ATy(qTy, 32723 PTy(bTy, 32724 qTy)), 32725 TP[Var("v", 32726 F4), 32727 Bop(Or, 32728 Apply 32729 (Call 32730 ("HaveVirtExt", 32731 ATy(qTy, 32732 bTy), 32733 LU), 32734 qVar"s"), 32735 EQ(Dest 32736 ("Architecture", 32737 CTy"Architecture", 32738 qVar"s"), 32739 LC("ARMv7_R", 32740 CTy"Architecture")))]), 32741 qVar"s"), 32742 ITE(bVar"v", 32743 TP[Call 32744 ("Divide", 32745 CTy"instruction", 32746 TP[EQ(Mop(Cast 32747 F1, 32748 LL[bVar"b'21"]), 32749 LW(1, 32750 1)), 32751 Var("Rd", 32752 F4), 32753 Var("Rn", 32754 F4), 32755 Var("Rm", 32756 F4)]), 32757 ITE(Bop(Or, 32758 Bop(In, 32759 Var("Rd", 32760 F4), 32761 SL[LW(13, 32762 4), 32763 LW(15, 32764 4)]), 32765 Bop(Or, 32766 Bop(In, 32767 Var("Rn", 32768 F4), 32769 SL[LW(13, 32770 4), 32771 LW(15, 32772 4)]), 32773 Bop(Or, 32774 Bop(In, 32775 Var("Rm", 32776 F4), 32777 SL[LW(13, 32778 4), 32779 LW(15, 32780 4)]), 32781 Mop(Not, 32782 EQ(Mop(Cast 32783 F4, 32784 LL[bVar"b'15", 32785 bVar"b'14", 32786 bVar"b'13", 32787 bVar"b'12"]), 32788 LW(15, 32789 4)))))), 32790 Apply 32791 (Call 32792 ("DECODE_UNPREDICTABLE", 32793 ATy(qTy, 32794 qTy), 32795 TP[Var("mc", 32796 CTy"MachineCode"), 32797 LS 32798 "Divide"]), 32799 qVar"s"), 32800 qVar"s")], 32801 TP[Apply 32802 (Call 32803 ("Skip", 32804 ATy(qTy, 32805 CTy"instruction"), 32806 LU), 32807 qVar"s"), 32808 qVar"s"]))))))), 32809 (Bop(And,bVar"b'24",bVar"b'23"), 32810 Let(Var("Rn",F4), 32811 Mop(Cast F4, 32812 LL[bVar"b'19", 32813 bVar"b'18", 32814 bVar"b'17",bVar"b'16"]), 32815 Let(Var("Rm",F4), 32816 Mop(Cast F4, 32817 LL[bVar"b'3", 32818 bVar"b'2", 32819 bVar"b'1", 32820 bVar"b'0"]), 32821 Let(Var("RdHi",F4), 32822 Mop(Cast F4, 32823 LL[bVar"b'11", 32824 bVar"b'10", 32825 bVar"b'9", 32826 bVar"b'8"]), 32827 Let(Var("RdLo",F4), 32828 Mop(Cast F4, 32829 LL[bVar"b'15", 32830 bVar"b'14", 32831 bVar"b'13", 32832 bVar"b'12"]), 32833 Let(TP[Var("v", 32834 F4), 32835 qVar"s"], 32836 Apply 32837 (Call 32838 ("ThumbCondition", 32839 ATy(qTy, 32840 PTy(F4, 32841 qTy)), 32842 LU), 32843 qVar"state"), 32844 Let(TP[bVar"v", 32845 qVar"s"], 32846 Apply 32847 (Call 32848 ("Do", 32849 ATy(qTy, 32850 PTy(bTy, 32851 qTy)), 32852 TP[Var("v", 32853 F4), 32854 Apply 32855 (Call 32856 ("HaveThumb2", 32857 ATy(qTy, 32858 bTy), 32859 LU), 32860 qVar"s")]), 32861 qVar"s"), 32862 ITE(bVar"v", 32863 TP[Let(TP[TP[bVar"b'6", 32864 bVar"b'5", 32865 bVar"b'4"], 32866 bVar"b'3", 32867 bVar"b'2", 32868 bVar"b'1", 32869 bVar"b'0"], 32870 TP[BL(3, 32871 Mop(Cast 32872 (FTy 3), 32873 LL[bVar"b'22", 32874 bVar"b'21", 32875 bVar"b'20"])), 32876 BL(4, 32877 Mop(Cast 32878 F4, 32879 LL[bVar"b'7", 32880 bVar"b'6", 32881 bVar"b'5", 32882 bVar"b'4"]))], 32883 ITB([(Bop(And, 32884 Mop(Not, 32885 bVar"b'4"), 32886 Bop(And, 32887 Mop(Not, 32888 bVar"b'3"), 32889 Bop(And, 32890 Mop(Not, 32891 bVar"b'2"), 32892 Bop(And, 32893 Mop(Not, 32894 bVar"b'1"), 32895 Mop(Not, 32896 bVar"b'0"))))), 32897 Call 32898 ("Multiply", 32899 CTy"instruction", 32900 Call 32901 ("MultiplyLong", 32902 CTy"Multiply", 32903 TP[EQ(Mop(Cast 32904 F1, 32905 LL[bVar"b'6"]), 32906 LW(1, 32907 1)), 32908 EQ(Mop(Cast 32909 F1, 32910 LL[bVar"b'5"]), 32911 LW(0, 32912 1)), 32913 LF, 32914 Var("RdHi", 32915 F4), 32916 Var("RdLo", 32917 F4), 32918 Var("Rn", 32919 F4), 32920 Var("Rm", 32921 F4)]))), 32922 (Bop(And, 32923 bVar"b'6", 32924 Bop(And, 32925 Mop(Not, 32926 bVar"b'5"), 32927 Bop(And, 32928 Mop(Not, 32929 bVar"b'4"), 32930 Bop(And, 32931 bVar"b'3", 32932 Mop(Not, 32933 bVar"b'2"))))), 32934 Call 32935 ("Multiply", 32936 CTy"instruction", 32937 Call 32938 ("Signed16Multiply64Accumulate", 32939 CTy"Multiply", 32940 TP[EQ(Mop(Cast 32941 F1, 32942 LL[bVar"b'0"]), 32943 LW(1, 32944 1)), 32945 EQ(Mop(Cast 32946 F1, 32947 LL[bVar"b'1"]), 32948 LW(1, 32949 1)), 32950 Var("RdHi", 32951 F4), 32952 Var("RdLo", 32953 F4), 32954 Var("Rn", 32955 F4), 32956 Var("Rm", 32957 F4)]))), 32958 (Bop(And, 32959 bVar"b'6", 32960 Bop(And, 32961 Mop(Not, 32962 bVar"b'5"), 32963 Bop(And, 32964 bVar"b'3", 32965 Bop(And, 32966 bVar"b'2", 32967 Mop(Not, 32968 bVar"b'1"))))), 32969 Call 32970 ("Multiply", 32971 CTy"instruction", 32972 Call 32973 ("SignedMultiplyLongDual", 32974 CTy"Multiply", 32975 TP[EQ(Mop(Cast 32976 F1, 32977 LL[bVar"b'4"]), 32978 LW(1, 32979 1)), 32980 EQ(Mop(Cast 32981 F1, 32982 LL[bVar"b'0"]), 32983 LW(1, 32984 1)), 32985 Var("RdHi", 32986 F4), 32987 Var("RdLo", 32988 F4), 32989 Var("Rn", 32990 F4), 32991 Var("Rm", 32992 F4)]))), 32993 (Bop(And, 32994 bVar"b'6", 32995 Bop(And, 32996 bVar"b'5", 32997 Bop(And, 32998 Mop(Not, 32999 bVar"b'4"), 33000 Bop(And, 33001 Mop(Not, 33002 bVar"b'3"), 33003 Bop(And, 33004 bVar"b'2", 33005 Bop(And, 33006 bVar"b'1", 33007 Mop(Not, 33008 bVar"b'0"))))))), 33009 Call 33010 ("Multiply", 33011 CTy"instruction", 33012 Call 33013 ("MultiplyAccumulateAccumulate", 33014 CTy"Multiply", 33015 TP[Var("RdHi", 33016 F4), 33017 Var("RdLo", 33018 F4), 33019 Var("Rn", 33020 F4), 33021 Var("Rm", 33022 F4)])))], 33023 Call 33024 ("Undefined", 33025 CTy"instruction", 33026 LW(0, 33027 32)))), 33028 ITE(Bop(Or, 33029 Bop(In, 33030 Var("RdLo", 33031 F4), 33032 SL[LW(13, 33033 4), 33034 LW(15, 33035 4)]), 33036 Bop(Or, 33037 Bop(In, 33038 Var("RdHi", 33039 F4), 33040 SL[LW(13, 33041 4), 33042 LW(15, 33043 4)]), 33044 Bop(Or, 33045 Bop(In, 33046 Var("Rn", 33047 F4), 33048 SL[LW(13, 33049 4), 33050 LW(15, 33051 4)]), 33052 Bop(Or, 33053 Bop(In, 33054 Var("Rm", 33055 F4), 33056 SL[LW(13, 33057 4), 33058 LW(15, 33059 4)]), 33060 EQ(Var("RdHi", 33061 F4), 33062 Var("RdLo", 33063 F4)))))), 33064 Apply 33065 (Call 33066 ("DECODE_UNPREDICTABLE", 33067 ATy(qTy, 33068 qTy), 33069 TP[Var("mc", 33070 CTy"MachineCode"), 33071 LS 33072 "Long multiply, long multiply accumulate"]), 33073 qVar"s"), 33074 qVar"s")], 33075 TP[Apply 33076 (Call 33077 ("Skip", 33078 ATy(qTy, 33079 CTy"instruction"), 33080 LU), 33081 qVar"s"), 33082 qVar"s"]))))))))], 33083 Apply 33084 (Call 33085 ("UndefinedThumb", 33086 ATy(qTy, 33087 PTy(CTy"instruction",qTy)), 33088 LU),qVar"state")), 33089 Apply 33090 (Call 33091 ("UndefinedThumb", 33092 ATy(qTy, 33093 PTy(CTy"instruction",qTy)), 33094 LU),qVar"state"))), 33095 (bVar"b'22", 33096 ITB([(bVar"b'20", 33097 ITE(Bop(And,bVar"b'31", 33098 Bop(And,bVar"b'30", 33099 Bop(And,bVar"b'29", 33100 Bop(And, 33101 Mop(Not, 33102 bVar"b'26"), 33103 Bop(And, 33104 Mop(Not, 33105 bVar"b'24"), 33106 Mop(Not, 33107 bVar"b'21")))))), 33108 ITB([(Bop(And,bVar"b'19", 33109 Bop(And,bVar"b'18", 33110 Bop(And, 33111 bVar"b'17", 33112 bVar"b'16"))), 33113 Let(Var("Rt",F4), 33114 Mop(Cast F4, 33115 LL[bVar"b'15", 33116 bVar"b'14", 33117 bVar"b'13", 33118 bVar"b'12"]), 33119 Let(TP[Var("v",F4), 33120 qVar"s"], 33121 Apply 33122 (Call 33123 ("ThumbCondition", 33124 ATy(qTy, 33125 PTy(F4, 33126 qTy)), 33127 LU), 33128 qVar"state"), 33129 Let(TP[bVar"v", 33130 qVar"s"], 33131 Apply 33132 (Call 33133 ("Do", 33134 ATy(qTy, 33135 PTy(bTy, 33136 qTy)), 33137 TP[Var("v", 33138 F4), 33139 Apply 33140 (Call 33141 ("HaveThumb2", 33142 ATy(qTy, 33143 bTy), 33144 LU), 33145 qVar"s")]), 33146 qVar"s"), 33147 ITE(bVar"v", 33148 TP[Call 33149 ("Load", 33150 CTy"instruction", 33151 Call 33152 ("LoadLiteral", 33153 CTy"Load", 33154 TP[EQ(Mop(Cast 33155 F1, 33156 LL[bVar"b'23"]), 33157 LW(1, 33158 1)), 33159 Var("Rt", 33160 F4), 33161 Mop(Cast 33162 F32, 33163 Mop(Cast 33164 (FTy 12), 33165 LL[bVar"b'11", 33166 bVar"b'10", 33167 bVar"b'9", 33168 bVar"b'8", 33169 bVar"b'7", 33170 bVar"b'6", 33171 bVar"b'5", 33172 bVar"b'4", 33173 bVar"b'3", 33174 bVar"b'2", 33175 bVar"b'1", 33176 bVar"b'0"]))])), 33177 ITE(Bop(And, 33178 EQ(Var("Rt", 33179 F4), 33180 LW(15, 33181 4)), 33182 Bop(And, 33183 Apply 33184 (Call 33185 ("InITBlock", 33186 ATy(qTy, 33187 bTy), 33188 LU), 33189 qVar"s"), 33190 Mop(Not, 33191 Apply 33192 (Call 33193 ("LastInITBlock", 33194 ATy(qTy, 33195 bTy), 33196 LU), 33197 qVar"s")))), 33198 Apply 33199 (Call 33200 ("DECODE_UNPREDICTABLE", 33201 ATy(qTy, 33202 qTy), 33203 TP[Var("mc", 33204 CTy"MachineCode"), 33205 LS 33206 "LoadLiteral"]), 33207 qVar"s"), 33208 qVar"s")], 33209 TP[Apply 33210 (Call 33211 ("Skip", 33212 ATy(qTy, 33213 CTy"instruction"), 33214 LU), 33215 qVar"s"), 33216 qVar"s"]))))), 33217 (bVar"b'23", 33218 Let(Var("Rt",F4), 33219 Mop(Cast F4, 33220 LL[bVar"b'15", 33221 bVar"b'14", 33222 bVar"b'13", 33223 bVar"b'12"]), 33224 Let(TP[Var("v",F4), 33225 qVar"s"], 33226 Apply 33227 (Call 33228 ("ThumbCondition", 33229 ATy(qTy, 33230 PTy(F4, 33231 qTy)), 33232 LU), 33233 qVar"state"), 33234 Let(TP[bVar"v", 33235 qVar"s"], 33236 Apply 33237 (Call 33238 ("Do", 33239 ATy(qTy, 33240 PTy(bTy, 33241 qTy)), 33242 TP[Var("v", 33243 F4), 33244 Apply 33245 (Call 33246 ("HaveThumb2", 33247 ATy(qTy, 33248 bTy), 33249 LU), 33250 qVar"s")]), 33251 qVar"s"), 33252 ITE(bVar"v", 33253 TP[Call 33254 ("Load", 33255 CTy"instruction", 33256 Call 33257 ("LoadWord", 33258 CTy"Load", 33259 TP[LT, 33260 LT, 33261 LF, 33262 Var("Rt", 33263 F4), 33264 Mop(Cast 33265 F4, 33266 LL[bVar"b'19", 33267 bVar"b'18", 33268 bVar"b'17", 33269 bVar"b'16"]), 33270 Call 33271 ("immediate_form1", 33272 CTy"offset1", 33273 Mop(Cast 33274 F32, 33275 Mop(Cast 33276 (FTy 12), 33277 LL[bVar"b'11", 33278 bVar"b'10", 33279 bVar"b'9", 33280 bVar"b'8", 33281 bVar"b'7", 33282 bVar"b'6", 33283 bVar"b'5", 33284 bVar"b'4", 33285 bVar"b'3", 33286 bVar"b'2", 33287 bVar"b'1", 33288 bVar"b'0"])))])), 33289 ITE(Bop(And, 33290 EQ(Var("Rt", 33291 F4), 33292 LW(15, 33293 4)), 33294 Bop(And, 33295 Apply 33296 (Call 33297 ("InITBlock", 33298 ATy(qTy, 33299 bTy), 33300 LU), 33301 qVar"s"), 33302 Mop(Not, 33303 Apply 33304 (Call 33305 ("LastInITBlock", 33306 ATy(qTy, 33307 bTy), 33308 LU), 33309 qVar"s")))), 33310 Apply 33311 (Call 33312 ("DECODE_UNPREDICTABLE", 33313 ATy(qTy, 33314 qTy), 33315 TP[Var("mc", 33316 CTy"MachineCode"), 33317 LS 33318 "LoadWord"]), 33319 qVar"s"), 33320 qVar"s")], 33321 TP[Apply 33322 (Call 33323 ("Skip", 33324 ATy(qTy, 33325 CTy"instruction"), 33326 LU), 33327 qVar"s"), 33328 qVar"s"]))))), 33329 (Bop(And, 33330 Mop(Not,bVar"b'23"), 33331 Bop(And,bVar"b'11", 33332 Bop(And, 33333 bVar"b'10", 33334 Bop(And, 33335 bVar"b'9", 33336 Mop(Not, 33337 bVar"b'8"))))), 33338 Let(Var("Rt",F4), 33339 Mop(Cast F4, 33340 LL[bVar"b'15", 33341 bVar"b'14", 33342 bVar"b'13", 33343 bVar"b'12"]), 33344 Let(TP[Var("v",F4), 33345 qVar"s"], 33346 Apply 33347 (Call 33348 ("ThumbCondition", 33349 ATy(qTy, 33350 PTy(F4, 33351 qTy)), 33352 LU), 33353 qVar"state"), 33354 Let(TP[bVar"v", 33355 qVar"s"], 33356 Apply 33357 (Call 33358 ("Do", 33359 ATy(qTy, 33360 PTy(bTy, 33361 qTy)), 33362 TP[Var("v", 33363 F4), 33364 Apply 33365 (Call 33366 ("HaveThumb2", 33367 ATy(qTy, 33368 bTy), 33369 LU), 33370 qVar"s")]), 33371 qVar"s"), 33372 ITE(bVar"v", 33373 TP[Call 33374 ("Load", 33375 CTy"instruction", 33376 Call 33377 ("LoadUnprivileged", 33378 CTy"Load", 33379 TP[LT, 33380 LF, 33381 Var("Rt", 33382 F4), 33383 Mop(Cast 33384 F4, 33385 LL[bVar"b'19", 33386 bVar"b'18", 33387 bVar"b'17", 33388 bVar"b'16"]), 33389 Call 33390 ("immediate_form1", 33391 CTy"offset1", 33392 Mop(Cast 33393 F32, 33394 Mop(Cast 33395 F8, 33396 LL[bVar"b'7", 33397 bVar"b'6", 33398 bVar"b'5", 33399 bVar"b'4", 33400 bVar"b'3", 33401 bVar"b'2", 33402 bVar"b'1", 33403 bVar"b'0"])))])), 33404 ITE(Bop(In, 33405 Var("Rt", 33406 F4), 33407 SL[LW(13, 33408 4), 33409 LW(15, 33410 4)]), 33411 Apply 33412 (Call 33413 ("DECODE_UNPREDICTABLE", 33414 ATy(qTy, 33415 qTy), 33416 TP[Var("mc", 33417 CTy"MachineCode"), 33418 LS 33419 "LoadUnprivileged"]), 33420 qVar"s"), 33421 qVar"s")], 33422 TP[Apply 33423 (Call 33424 ("Skip", 33425 ATy(qTy, 33426 CTy"instruction"), 33427 LU), 33428 qVar"s"), 33429 qVar"s"]))))), 33430 (Bop(And, 33431 Mop(Not,bVar"b'23"), 33432 bVar"b'11"), 33433 Let(Var("Rn",F4), 33434 Mop(Cast F4, 33435 LL[bVar"b'19", 33436 bVar"b'18", 33437 bVar"b'17", 33438 bVar"b'16"]), 33439 Let(Var("W",F1), 33440 Mop(Cast F1, 33441 LL[bVar"b'8"]), 33442 Let(Var("P",F1), 33443 Mop(Cast F1, 33444 LL[bVar"b'10"]), 33445 Let(Var("Rt", 33446 F4), 33447 Mop(Cast 33448 F4, 33449 LL[bVar"b'15", 33450 bVar"b'14", 33451 bVar"b'13", 33452 bVar"b'12"]), 33453 Let(TP[Var("v", 33454 F4), 33455 qVar"s"], 33456 Apply 33457 (Call 33458 ("ThumbCondition", 33459 ATy(qTy, 33460 PTy(F4, 33461 qTy)), 33462 LU), 33463 qVar"state"), 33464 Let(TP[bVar"v", 33465 qVar"s"], 33466 Apply 33467 (Call 33468 ("Do", 33469 ATy(qTy, 33470 PTy(bTy, 33471 qTy)), 33472 TP[Var("v", 33473 F4), 33474 Bop(And, 33475 Bop(Or, 33476 EQ(Var("P", 33477 F1), 33478 LW(1, 33479 1)), 33480 EQ(Var("W", 33481 F1), 33482 LW(1, 33483 1))), 33484 Apply 33485 (Call 33486 ("HaveThumb2", 33487 ATy(qTy, 33488 bTy), 33489 LU), 33490 qVar"s"))]), 33491 qVar"s"), 33492 ITE(bVar"v", 33493 Let(bVar"wback", 33494 EQ(Var("W", 33495 F1), 33496 LW(1, 33497 1)), 33498 TP[Call 33499 ("Load", 33500 CTy"instruction", 33501 Call 33502 ("LoadWord", 33503 CTy"Load", 33504 TP[EQ(Mop(Cast 33505 F1, 33506 LL[bVar"b'9"]), 33507 LW(1, 33508 1)), 33509 EQ(Var("P", 33510 F1), 33511 LW(1, 33512 1)), 33513 bVar"wback", 33514 Var("Rt", 33515 F4), 33516 Var("Rn", 33517 F4), 33518 Call 33519 ("immediate_form1", 33520 CTy"offset1", 33521 Mop(Cast 33522 F32, 33523 Mop(Cast 33524 F8, 33525 LL[bVar"b'7", 33526 bVar"b'6", 33527 bVar"b'5", 33528 bVar"b'4", 33529 bVar"b'3", 33530 bVar"b'2", 33531 bVar"b'1", 33532 bVar"b'0"])))])), 33533 ITE(Bop(Or, 33534 Bop(And, 33535 bVar"wback", 33536 EQ(Var("Rn", 33537 F4), 33538 Var("Rt", 33539 F4))), 33540 Bop(And, 33541 EQ(Var("Rt", 33542 F4), 33543 LW(15, 33544 4)), 33545 Bop(And, 33546 Apply 33547 (Call 33548 ("InITBlock", 33549 ATy(qTy, 33550 bTy), 33551 LU), 33552 qVar"s"), 33553 Mop(Not, 33554 Apply 33555 (Call 33556 ("LastInITBlock", 33557 ATy(qTy, 33558 bTy), 33559 LU), 33560 qVar"s"))))), 33561 Apply 33562 (Call 33563 ("DECODE_UNPREDICTABLE", 33564 ATy(qTy, 33565 qTy), 33566 TP[Var("mc", 33567 CTy"MachineCode"), 33568 LS 33569 "LoadWord"]), 33570 qVar"s"), 33571 qVar"s")]), 33572 TP[Apply 33573 (Call 33574 ("Skip", 33575 ATy(qTy, 33576 CTy"instruction"), 33577 LU), 33578 qVar"s"), 33579 qVar"s"])))))))), 33580 (Bop(And, 33581 Mop(Not,bVar"b'23"), 33582 Bop(And, 33583 Mop(Not,bVar"b'11"), 33584 Bop(And, 33585 Mop(Not, 33586 bVar"b'10"), 33587 Bop(And, 33588 Mop(Not, 33589 bVar"b'9"), 33590 Bop(And, 33591 Mop(Not, 33592 bVar"b'8"), 33593 Bop(And, 33594 Mop(Not, 33595 bVar"b'7"), 33596 Mop(Not, 33597 bVar"b'6"))))))), 33598 Let(Var("Rm",F4), 33599 Mop(Cast F4, 33600 LL[bVar"b'3", 33601 bVar"b'2", 33602 bVar"b'1", 33603 bVar"b'0"]), 33604 Let(Var("Rt",F4), 33605 Mop(Cast F4, 33606 LL[bVar"b'15", 33607 bVar"b'14", 33608 bVar"b'13", 33609 bVar"b'12"]), 33610 Let(TP[Var("v",F4), 33611 qVar"s"], 33612 Apply 33613 (Call 33614 ("ThumbCondition", 33615 ATy(qTy, 33616 PTy(F4, 33617 qTy)), 33618 LU), 33619 qVar"state"), 33620 Let(TP[bVar"v", 33621 qVar"s"], 33622 Apply 33623 (Call 33624 ("Do", 33625 ATy(qTy, 33626 PTy(bTy, 33627 qTy)), 33628 TP[Var("v", 33629 F4), 33630 Apply 33631 (Call 33632 ("HaveThumb2", 33633 ATy(qTy, 33634 bTy), 33635 LU), 33636 qVar"s")]), 33637 qVar"s"), 33638 ITE(bVar"v", 33639 TP[Call 33640 ("Load", 33641 CTy"instruction", 33642 Call 33643 ("LoadWord", 33644 CTy"Load", 33645 TP[LT, 33646 LT, 33647 LF, 33648 Var("Rt", 33649 F4), 33650 Mop(Cast 33651 F4, 33652 LL[bVar"b'19", 33653 bVar"b'18", 33654 bVar"b'17", 33655 bVar"b'16"]), 33656 Call 33657 ("register_form1", 33658 CTy"offset1", 33659 TP[Var("Rm", 33660 F4), 33661 LC("SRType_LSL", 33662 CTy"SRType"), 33663 Mop(Cast 33664 nTy, 33665 Mop(Cast 33666 (FTy 2), 33667 LL[bVar"b'5", 33668 bVar"b'4"]))])])), 33669 ITE(Bop(Or, 33670 Bop(And, 33671 EQ(Var("Rt", 33672 F4), 33673 LW(15, 33674 4)), 33675 Bop(And, 33676 Apply 33677 (Call 33678 ("InITBlock", 33679 ATy(qTy, 33680 bTy), 33681 LU), 33682 qVar"s"), 33683 Mop(Not, 33684 Apply 33685 (Call 33686 ("LastInITBlock", 33687 ATy(qTy, 33688 bTy), 33689 LU), 33690 qVar"s")))), 33691 Bop(In, 33692 Var("Rm", 33693 F4), 33694 SL[LW(13, 33695 4), 33696 LW(15, 33697 4)])), 33698 Apply 33699 (Call 33700 ("DECODE_UNPREDICTABLE", 33701 ATy(qTy, 33702 qTy), 33703 TP[Var("mc", 33704 CTy"MachineCode"), 33705 LS 33706 "LoadWord"]), 33707 qVar"s"), 33708 qVar"s")], 33709 TP[Apply 33710 (Call 33711 ("Skip", 33712 ATy(qTy, 33713 CTy"instruction"), 33714 LU), 33715 qVar"s"), 33716 qVar"s"]))))))], 33717 Apply 33718 (Call 33719 ("UndefinedThumb", 33720 ATy(qTy, 33721 PTy(CTy"instruction", 33722 qTy)),LU), 33723 qVar"state")), 33724 Apply 33725 (Call 33726 ("UndefinedThumb", 33727 ATy(qTy, 33728 PTy(CTy"instruction", 33729 qTy)),LU), 33730 qVar"state"))), 33731 (Bop(And,bVar"b'31", 33732 Bop(And,bVar"b'30", 33733 Bop(And,bVar"b'29", 33734 Bop(And, 33735 Mop(Not,bVar"b'26"), 33736 Bop(And, 33737 Mop(Not, 33738 bVar"b'24"), 33739 Mop(Not, 33740 bVar"b'21")))))), 33741 ITB([(Bop(And,Mop(Not,bVar"b'23"), 33742 Bop(And, 33743 Mop(Not,bVar"b'11"), 33744 Bop(And, 33745 Mop(Not,bVar"b'10"), 33746 Bop(And, 33747 Mop(Not, 33748 bVar"b'9"), 33749 Bop(And, 33750 Mop(Not, 33751 bVar"b'8"), 33752 Bop(And, 33753 Mop(Not, 33754 bVar"b'7"), 33755 Mop(Not, 33756 bVar"b'6"))))))), 33757 Let(Var("Rn",F4), 33758 Mop(Cast F4, 33759 LL[bVar"b'19", 33760 bVar"b'18", 33761 bVar"b'17", 33762 bVar"b'16"]), 33763 Let(Var("Rm",F4), 33764 Mop(Cast F4, 33765 LL[bVar"b'3", 33766 bVar"b'2", 33767 bVar"b'1", 33768 bVar"b'0"]), 33769 Let(Var("Rt",F4), 33770 Mop(Cast F4, 33771 LL[bVar"b'15", 33772 bVar"b'14", 33773 bVar"b'13", 33774 bVar"b'12"]), 33775 Let(TP[Var("v",F4), 33776 qVar"s"], 33777 Apply 33778 (Call 33779 ("ThumbCondition", 33780 ATy(qTy, 33781 PTy(F4, 33782 qTy)), 33783 LU), 33784 qVar"state"), 33785 Let(TP[bVar"v", 33786 qVar"s"], 33787 Apply 33788 (Call 33789 ("Do", 33790 ATy(qTy, 33791 PTy(bTy, 33792 qTy)), 33793 TP[Var("v", 33794 F4), 33795 Bop(And, 33796 Mop(Not, 33797 EQ(Var("Rn", 33798 F4), 33799 LW(15, 33800 4))), 33801 Apply 33802 (Call 33803 ("HaveThumb2", 33804 ATy(qTy, 33805 bTy), 33806 LU), 33807 qVar"s"))]), 33808 qVar"s"), 33809 ITE(bVar"v", 33810 TP[Call 33811 ("Store", 33812 CTy"instruction", 33813 Call 33814 ("StoreWord", 33815 CTy"Store", 33816 TP[LT, 33817 LT, 33818 LF, 33819 Var("Rt", 33820 F4), 33821 Var("Rn", 33822 F4), 33823 Call 33824 ("register_form1", 33825 CTy"offset1", 33826 TP[Var("Rm", 33827 F4), 33828 LC("SRType_LSL", 33829 CTy"SRType"), 33830 Mop(Cast 33831 nTy, 33832 Mop(Cast 33833 (FTy 2), 33834 LL[bVar"b'5", 33835 bVar"b'4"]))])])), 33836 ITE(Bop(Or, 33837 EQ(Var("Rt", 33838 F4), 33839 LW(15, 33840 4)), 33841 Bop(In, 33842 Var("Rm", 33843 F4), 33844 SL[LW(13, 33845 4), 33846 LW(15, 33847 4)])), 33848 Apply 33849 (Call 33850 ("DECODE_UNPREDICTABLE", 33851 ATy(qTy, 33852 qTy), 33853 TP[Var("mc", 33854 CTy"MachineCode"), 33855 LS 33856 "Store (register)"]), 33857 qVar"s"), 33858 qVar"s")], 33859 TP[Apply 33860 (Call 33861 ("Skip", 33862 ATy(qTy, 33863 CTy"instruction"), 33864 LU), 33865 qVar"s"), 33866 qVar"s"]))))))), 33867 (Bop(And,Mop(Not,bVar"b'23"), 33868 Bop(And,bVar"b'11", 33869 Bop(And,bVar"b'10", 33870 Bop(And,bVar"b'9", 33871 Mop(Not, 33872 bVar"b'8"))))), 33873 Let(Var("Rn",F4), 33874 Mop(Cast F4, 33875 LL[bVar"b'19", 33876 bVar"b'18", 33877 bVar"b'17", 33878 bVar"b'16"]), 33879 Let(Var("Rt",F4), 33880 Mop(Cast F4, 33881 LL[bVar"b'15", 33882 bVar"b'14", 33883 bVar"b'13", 33884 bVar"b'12"]), 33885 Let(TP[Var("v",F4), 33886 qVar"s"], 33887 Apply 33888 (Call 33889 ("ThumbCondition", 33890 ATy(qTy, 33891 PTy(F4, 33892 qTy)), 33893 LU), 33894 qVar"state"), 33895 Let(TP[bVar"v", 33896 qVar"s"], 33897 Apply 33898 (Call 33899 ("Do", 33900 ATy(qTy, 33901 PTy(bTy, 33902 qTy)), 33903 TP[Var("v", 33904 F4), 33905 Bop(And, 33906 Mop(Not, 33907 EQ(Var("Rn", 33908 F4), 33909 LW(15, 33910 4))), 33911 Apply 33912 (Call 33913 ("HaveThumb2", 33914 ATy(qTy, 33915 bTy), 33916 LU), 33917 qVar"s"))]), 33918 qVar"s"), 33919 ITE(bVar"v", 33920 TP[Call 33921 ("Store", 33922 CTy"instruction", 33923 Call 33924 ("StoreUnprivileged", 33925 CTy"Store", 33926 TP[LT, 33927 LF, 33928 Var("Rt", 33929 F4), 33930 Var("Rn", 33931 F4), 33932 Call 33933 ("immediate_form1", 33934 CTy"offset1", 33935 Mop(Cast 33936 F32, 33937 Mop(Cast 33938 F8, 33939 LL[bVar"b'7", 33940 bVar"b'6", 33941 bVar"b'5", 33942 bVar"b'4", 33943 bVar"b'3", 33944 bVar"b'2", 33945 bVar"b'1", 33946 bVar"b'0"])))])), 33947 ITE(Bop(In, 33948 Var("Rt", 33949 F4), 33950 SL[LW(13, 33951 4), 33952 LW(15, 33953 4)]), 33954 Apply 33955 (Call 33956 ("DECODE_UNPREDICTABLE", 33957 ATy(qTy, 33958 qTy), 33959 TP[Var("mc", 33960 CTy"MachineCode"), 33961 LS 33962 "StoreUnprivileged"]), 33963 qVar"s"), 33964 qVar"s")], 33965 TP[Apply 33966 (Call 33967 ("Skip", 33968 ATy(qTy, 33969 CTy"instruction"), 33970 LU), 33971 qVar"s"), 33972 qVar"s"])))))), 33973 (Bop(And,Mop(Not,bVar"b'23"), 33974 bVar"b'11"), 33975 Let(Var("Rn",F4), 33976 Mop(Cast F4, 33977 LL[bVar"b'19", 33978 bVar"b'18", 33979 bVar"b'17", 33980 bVar"b'16"]), 33981 Let(Var("W",F1), 33982 Mop(Cast F1, 33983 LL[bVar"b'8"]), 33984 Let(Var("P",F1), 33985 Mop(Cast F1, 33986 LL[bVar"b'10"]), 33987 Let(Var("Rt",F4), 33988 Mop(Cast F4, 33989 LL[bVar"b'15", 33990 bVar"b'14", 33991 bVar"b'13", 33992 bVar"b'12"]), 33993 Let(TP[Var("v", 33994 F4), 33995 qVar"s"], 33996 Apply 33997 (Call 33998 ("ThumbCondition", 33999 ATy(qTy, 34000 PTy(F4, 34001 qTy)), 34002 LU), 34003 qVar"state"), 34004 Let(TP[bVar"v", 34005 qVar"s"], 34006 Apply 34007 (Call 34008 ("Do", 34009 ATy(qTy, 34010 PTy(bTy, 34011 qTy)), 34012 TP[Var("v", 34013 F4), 34014 Bop(And, 34015 Mop(Not, 34016 EQ(Var("Rn", 34017 F4), 34018 LW(15, 34019 4))), 34020 Bop(And, 34021 Bop(Or, 34022 EQ(Var("P", 34023 F1), 34024 LW(1, 34025 1)), 34026 EQ(Var("W", 34027 F1), 34028 LW(1, 34029 1))), 34030 Apply 34031 (Call 34032 ("HaveThumb2", 34033 ATy(qTy, 34034 bTy), 34035 LU), 34036 qVar"s")))]), 34037 qVar"s"), 34038 ITE(bVar"v", 34039 Let(bVar"wback", 34040 EQ(Var("W", 34041 F1), 34042 LW(1, 34043 1)), 34044 TP[Call 34045 ("Store", 34046 CTy"instruction", 34047 Call 34048 ("StoreWord", 34049 CTy"Store", 34050 TP[EQ(Mop(Cast 34051 F1, 34052 LL[bVar"b'9"]), 34053 LW(1, 34054 1)), 34055 EQ(Var("P", 34056 F1), 34057 LW(1, 34058 1)), 34059 bVar"wback", 34060 Var("Rt", 34061 F4), 34062 Var("Rn", 34063 F4), 34064 Call 34065 ("immediate_form1", 34066 CTy"offset1", 34067 Mop(Cast 34068 F32, 34069 Mop(Cast 34070 F8, 34071 LL[bVar"b'7", 34072 bVar"b'6", 34073 bVar"b'5", 34074 bVar"b'4", 34075 bVar"b'3", 34076 bVar"b'2", 34077 bVar"b'1", 34078 bVar"b'0"])))])), 34079 ITE(Bop(Or, 34080 EQ(Var("Rt", 34081 F4), 34082 LW(15, 34083 4)), 34084 Bop(And, 34085 bVar"wback", 34086 EQ(Var("Rn", 34087 F4), 34088 Var("Rt", 34089 F4)))), 34090 Apply 34091 (Call 34092 ("DECODE_UNPREDICTABLE", 34093 ATy(qTy, 34094 qTy), 34095 TP[Var("mc", 34096 CTy"MachineCode"), 34097 LS 34098 "Store (immediate)"]), 34099 qVar"s"), 34100 qVar"s")]), 34101 TP[Apply 34102 (Call 34103 ("Skip", 34104 ATy(qTy, 34105 CTy"instruction"), 34106 LU), 34107 qVar"s"), 34108 qVar"s"])))))))), 34109 (bVar"b'23", 34110 Let(Var("Rn",F4), 34111 Mop(Cast F4, 34112 LL[bVar"b'19", 34113 bVar"b'18", 34114 bVar"b'17", 34115 bVar"b'16"]), 34116 Let(Var("Rt",F4), 34117 Mop(Cast F4, 34118 LL[bVar"b'15", 34119 bVar"b'14", 34120 bVar"b'13", 34121 bVar"b'12"]), 34122 Let(TP[Var("v",F4), 34123 qVar"s"], 34124 Apply 34125 (Call 34126 ("ThumbCondition", 34127 ATy(qTy, 34128 PTy(F4, 34129 qTy)), 34130 LU), 34131 qVar"state"), 34132 Let(TP[bVar"v", 34133 qVar"s"], 34134 Apply 34135 (Call 34136 ("Do", 34137 ATy(qTy, 34138 PTy(bTy, 34139 qTy)), 34140 TP[Var("v", 34141 F4), 34142 Bop(And, 34143 Mop(Not, 34144 EQ(Var("Rn", 34145 F4), 34146 LW(15, 34147 4))), 34148 Apply 34149 (Call 34150 ("HaveThumb2", 34151 ATy(qTy, 34152 bTy), 34153 LU), 34154 qVar"s"))]), 34155 qVar"s"), 34156 ITE(bVar"v", 34157 TP[Call 34158 ("Store", 34159 CTy"instruction", 34160 Call 34161 ("StoreWord", 34162 CTy"Store", 34163 TP[LT, 34164 LT, 34165 LF, 34166 Var("Rt", 34167 F4), 34168 Var("Rn", 34169 F4), 34170 Call 34171 ("immediate_form1", 34172 CTy"offset1", 34173 Mop(Cast 34174 F32, 34175 Mop(Cast 34176 (FTy 12), 34177 LL[bVar"b'11", 34178 bVar"b'10", 34179 bVar"b'9", 34180 bVar"b'8", 34181 bVar"b'7", 34182 bVar"b'6", 34183 bVar"b'5", 34184 bVar"b'4", 34185 bVar"b'3", 34186 bVar"b'2", 34187 bVar"b'1", 34188 bVar"b'0"])))])), 34189 ITE(EQ(Var("Rt", 34190 F4), 34191 LW(15, 34192 4)), 34193 Apply 34194 (Call 34195 ("DECODE_UNPREDICTABLE", 34196 ATy(qTy, 34197 qTy), 34198 TP[Var("mc", 34199 CTy"MachineCode"), 34200 LS 34201 "Store (immediate)"]), 34202 qVar"s"), 34203 qVar"s")], 34204 TP[Apply 34205 (Call 34206 ("Skip", 34207 ATy(qTy, 34208 CTy"instruction"), 34209 LU), 34210 qVar"s"), 34211 qVar"s"]))))))], 34212 Apply 34213 (Call 34214 ("UndefinedThumb", 34215 ATy(qTy, 34216 PTy(CTy"instruction", 34217 qTy)),LU), 34218 qVar"state")))], 34219 Apply 34220 (Call 34221 ("UndefinedThumb", 34222 ATy(qTy, 34223 PTy(CTy"instruction",qTy)), 34224 LU),qVar"state"))), 34225 (bVar"b'20", 34226 ITE(Bop(And,bVar"b'31", 34227 Bop(And,bVar"b'30", 34228 Bop(And,bVar"b'29", 34229 Mop(Not,bVar"b'26")))), 34230 ITB([(Bop(And,Mop(Not,bVar"b'24"), 34231 Bop(And,bVar"b'21", 34232 Bop(And,bVar"b'19", 34233 Bop(And,bVar"b'18", 34234 Bop(And, 34235 bVar"b'17", 34236 Bop(And, 34237 bVar"b'16", 34238 Bop(And, 34239 bVar"b'15", 34240 Bop(And, 34241 bVar"b'14", 34242 Bop(And, 34243 bVar"b'13", 34244 bVar"b'12"))))))))), 34245 TP[LX(CTy"instruction"), 34246 Apply 34247 (Call 34248 ("DECODE_UNPREDICTABLE", 34249 ATy(qTy,qTy), 34250 TP[Var("mc", 34251 CTy"MachineCode"), 34252 LS 34253 "PreloadDataLiteral"]), 34254 qVar"state")]), 34255 (Bop(And,Mop(Not,bVar"b'24"), 34256 Bop(And,bVar"b'19", 34257 Bop(And,bVar"b'18", 34258 Bop(And,bVar"b'17", 34259 Bop(And, 34260 bVar"b'16", 34261 Bop(And, 34262 bVar"b'15", 34263 Bop(And, 34264 bVar"b'14", 34265 Bop(And, 34266 bVar"b'13", 34267 bVar"b'12")))))))), 34268 Let(TP[Var("v",F4),qVar"s"], 34269 Apply 34270 (Call 34271 ("ThumbCondition", 34272 ATy(qTy,PTy(F4,qTy)), 34273 LU),qVar"state"), 34274 Let(TP[bVar"v",qVar"s"], 34275 Apply 34276 (Call 34277 ("Do", 34278 ATy(qTy, 34279 PTy(bTy,qTy)), 34280 TP[Var("v",F4), 34281 Apply 34282 (Call 34283 ("HaveThumb2", 34284 ATy(qTy, 34285 bTy), 34286 LU), 34287 qVar"s")]), 34288 qVar"s"), 34289 ITE(bVar"v", 34290 TP[Call 34291 ("Hint", 34292 CTy"instruction", 34293 Call 34294 ("PreloadDataLiteral", 34295 CTy"Hint", 34296 TP[EQ(Mop(Cast 34297 F1, 34298 LL[bVar"b'23"]), 34299 LW(1, 34300 1)), 34301 Mop(Cast 34302 F32, 34303 Mop(Cast 34304 (FTy 12), 34305 LL[bVar"b'11", 34306 bVar"b'10", 34307 bVar"b'9", 34308 bVar"b'8", 34309 bVar"b'7", 34310 bVar"b'6", 34311 bVar"b'5", 34312 bVar"b'4", 34313 bVar"b'3", 34314 bVar"b'2", 34315 bVar"b'1", 34316 bVar"b'0"]))])), 34317 ITE(Mop(Not, 34318 EQ(Mop(Cast 34319 F1, 34320 LL[bVar"b'21"]), 34321 LW(0,1))), 34322 Apply 34323 (Call 34324 ("DECODE_UNPREDICTABLE", 34325 ATy(qTy, 34326 qTy), 34327 TP[Var("mc", 34328 CTy"MachineCode"), 34329 LS 34330 "PLD"]), 34331 qVar"s"), 34332 qVar"s")], 34333 TP[Apply 34334 (Call 34335 ("Skip", 34336 ATy(qTy, 34337 CTy"instruction"), 34338 LU),qVar"s"), 34339 qVar"s"])))), 34340 (Bop(And,bVar"b'24", 34341 Bop(And,Mop(Not,bVar"b'21"), 34342 Bop(And,bVar"b'19", 34343 Bop(And,bVar"b'18", 34344 Bop(And, 34345 bVar"b'17", 34346 Bop(And, 34347 bVar"b'16", 34348 Bop(And, 34349 bVar"b'15", 34350 Bop(And, 34351 bVar"b'14", 34352 Bop(And, 34353 bVar"b'13", 34354 bVar"b'12"))))))))), 34355 Let(TP[Var("v",F4),qVar"s"], 34356 Apply 34357 (Call 34358 ("ThumbCondition", 34359 ATy(qTy,PTy(F4,qTy)), 34360 LU),qVar"state"), 34361 Let(TP[bVar"v",qVar"s"], 34362 Apply 34363 (Call 34364 ("Do", 34365 ATy(qTy, 34366 PTy(bTy,qTy)), 34367 TP[Var("v",F4), 34368 Bop(Ge, 34369 Apply 34370 (Call 34371 ("ArchVersion", 34372 ATy(qTy, 34373 nTy), 34374 LU), 34375 qVar"s"), 34376 LN 7)]), 34377 qVar"s"), 34378 TP[ITE(bVar"v", 34379 Call 34380 ("Hint", 34381 CTy"instruction", 34382 Call 34383 ("PreloadInstruction", 34384 CTy"Hint", 34385 TP[EQ(Mop(Cast 34386 F1, 34387 LL[bVar"b'23"]), 34388 LW(1, 34389 1)), 34390 LW(15,4), 34391 Call 34392 ("immediate_form1", 34393 CTy"offset1", 34394 Mop(Cast 34395 F32, 34396 Mop(Cast 34397 (FTy 12), 34398 LL[bVar"b'11", 34399 bVar"b'10", 34400 bVar"b'9", 34401 bVar"b'8", 34402 bVar"b'7", 34403 bVar"b'6", 34404 bVar"b'5", 34405 bVar"b'4", 34406 bVar"b'3", 34407 bVar"b'2", 34408 bVar"b'1", 34409 bVar"b'0"])))])), 34410 Apply 34411 (Call 34412 ("Skip", 34413 ATy(qTy, 34414 CTy"instruction"), 34415 LU),qVar"s")), 34416 qVar"s"]))), 34417 (Bop(And,bVar"b'24", 34418 Bop(And,bVar"b'23", 34419 Bop(And, 34420 Mop(Not,bVar"b'21"), 34421 Bop(And,bVar"b'15", 34422 Bop(And, 34423 bVar"b'14", 34424 Bop(And, 34425 bVar"b'13", 34426 bVar"b'12")))))), 34427 Let(TP[Var("v",F4),qVar"s"], 34428 Apply 34429 (Call 34430 ("ThumbCondition", 34431 ATy(qTy,PTy(F4,qTy)), 34432 LU),qVar"state"), 34433 Let(TP[bVar"v",qVar"s"], 34434 Apply 34435 (Call 34436 ("Do", 34437 ATy(qTy, 34438 PTy(bTy,qTy)), 34439 TP[Var("v",F4), 34440 Bop(Ge, 34441 Apply 34442 (Call 34443 ("ArchVersion", 34444 ATy(qTy, 34445 nTy), 34446 LU), 34447 qVar"s"), 34448 LN 7)]), 34449 qVar"s"), 34450 TP[ITE(bVar"v", 34451 Call 34452 ("Hint", 34453 CTy"instruction", 34454 Call 34455 ("PreloadInstruction", 34456 CTy"Hint", 34457 TP[LT, 34458 Mop(Cast 34459 F4, 34460 LL[bVar"b'19", 34461 bVar"b'18", 34462 bVar"b'17", 34463 bVar"b'16"]), 34464 Call 34465 ("immediate_form1", 34466 CTy"offset1", 34467 Mop(Cast 34468 F32, 34469 Mop(Cast 34470 (FTy 12), 34471 LL[bVar"b'11", 34472 bVar"b'10", 34473 bVar"b'9", 34474 bVar"b'8", 34475 bVar"b'7", 34476 bVar"b'6", 34477 bVar"b'5", 34478 bVar"b'4", 34479 bVar"b'3", 34480 bVar"b'2", 34481 bVar"b'1", 34482 bVar"b'0"])))])), 34483 Apply 34484 (Call 34485 ("Skip", 34486 ATy(qTy, 34487 CTy"instruction"), 34488 LU),qVar"s")), 34489 qVar"s"]))), 34490 (Bop(And,Mop(Not,bVar"b'24"), 34491 Bop(And,bVar"b'23", 34492 Bop(And,bVar"b'15", 34493 Bop(And,bVar"b'14", 34494 Bop(And, 34495 bVar"b'13", 34496 bVar"b'12"))))), 34497 Let(Var("W",F1), 34498 Mop(Cast F1,LL[bVar"b'21"]), 34499 Let(TP[Var("v",F4),qVar"s"], 34500 Apply 34501 (Call 34502 ("ThumbCondition", 34503 ATy(qTy, 34504 PTy(F4,qTy)), 34505 LU),qVar"state"), 34506 Let(TP[bVar"v",qVar"s"], 34507 Apply 34508 (Call 34509 ("Do", 34510 ATy(qTy, 34511 PTy(bTy, 34512 qTy)), 34513 TP[Var("v",F4), 34514 ITE(EQ(Var("W", 34515 F1), 34516 LW(1, 34517 1)), 34518 Apply 34519 (Call 34520 ("HaveMPExt", 34521 ATy(qTy, 34522 bTy), 34523 LU), 34524 qVar"s"), 34525 Apply 34526 (Call 34527 ("HaveThumb2", 34528 ATy(qTy, 34529 bTy), 34530 LU), 34531 qVar"s"))]), 34532 qVar"s"), 34533 TP[ITE(bVar"v", 34534 Call 34535 ("Hint", 34536 CTy"instruction", 34537 Call 34538 ("PreloadData", 34539 CTy"Hint", 34540 TP[LT, 34541 EQ(Var("W", 34542 F1), 34543 LW(1, 34544 1)), 34545 Mop(Cast 34546 F4, 34547 LL[bVar"b'19", 34548 bVar"b'18", 34549 bVar"b'17", 34550 bVar"b'16"]), 34551 Call 34552 ("immediate_form1", 34553 CTy"offset1", 34554 Mop(Cast 34555 F32, 34556 Mop(Cast 34557 (FTy 12), 34558 LL[bVar"b'11", 34559 bVar"b'10", 34560 bVar"b'9", 34561 bVar"b'8", 34562 bVar"b'7", 34563 bVar"b'6", 34564 bVar"b'5", 34565 bVar"b'4", 34566 bVar"b'3", 34567 bVar"b'2", 34568 bVar"b'1", 34569 bVar"b'0"])))])), 34570 Apply 34571 (Call 34572 ("Skip", 34573 ATy(qTy, 34574 CTy"instruction"), 34575 LU), 34576 qVar"s")), 34577 qVar"s"])))), 34578 (Bop(And,bVar"b'24", 34579 Bop(And,bVar"b'21", 34580 Bop(And,bVar"b'19", 34581 Bop(And,bVar"b'18", 34582 Bop(And, 34583 bVar"b'17", 34584 Bop(And, 34585 bVar"b'16", 34586 Bop(And, 34587 bVar"b'15", 34588 Bop(And, 34589 bVar"b'14", 34590 Bop(And, 34591 bVar"b'13", 34592 bVar"b'12"))))))))), 34593 TP[Const 34594 ("NoOperation", 34595 CTy"instruction"), 34596 qVar"state"]), 34597 (Bop(And,bVar"b'19", 34598 Bop(And,bVar"b'18", 34599 Bop(And,bVar"b'17", 34600 bVar"b'16"))), 34601 Let(Var("Rt",F4), 34602 Mop(Cast F4, 34603 LL[bVar"b'15", 34604 bVar"b'14", 34605 bVar"b'13",bVar"b'12"]), 34606 Let(TP[Var("v",F4),qVar"s"], 34607 Apply 34608 (Call 34609 ("ThumbCondition", 34610 ATy(qTy, 34611 PTy(F4,qTy)), 34612 LU),qVar"state"), 34613 Let(TP[bVar"v",qVar"s"], 34614 Apply 34615 (Call 34616 ("Do", 34617 ATy(qTy, 34618 PTy(bTy, 34619 qTy)), 34620 TP[Var("v",F4), 34621 Apply 34622 (Call 34623 ("HaveThumb2", 34624 ATy(qTy, 34625 bTy), 34626 LU), 34627 qVar"s")]), 34628 qVar"s"), 34629 ITE(bVar"v", 34630 TP[Let(Var("imm32", 34631 F32), 34632 Mop(Cast 34633 F32, 34634 Mop(Cast 34635 (FTy 12), 34636 LL[bVar"b'11", 34637 bVar"b'10", 34638 bVar"b'9", 34639 bVar"b'8", 34640 bVar"b'7", 34641 bVar"b'6", 34642 bVar"b'5", 34643 bVar"b'4", 34644 bVar"b'3", 34645 bVar"b'2", 34646 bVar"b'1", 34647 bVar"b'0"])), 34648 Let(bVar"add", 34649 EQ(Mop(Cast 34650 F1, 34651 LL[bVar"b'23"]), 34652 LW(1, 34653 1)), 34654 Let(bVar"unsigned", 34655 EQ(Mop(Cast 34656 F1, 34657 LL[bVar"b'24"]), 34658 LW(0, 34659 1)), 34660 ITE(EQ(Mop(Cast 34661 F1, 34662 LL[bVar"b'21"]), 34663 LW(1, 34664 1)), 34665 Call 34666 ("Load", 34667 CTy"instruction", 34668 Call 34669 ("LoadHalfLiteral", 34670 CTy"Load", 34671 TP[bVar"unsigned", 34672 bVar"add", 34673 Var("Rt", 34674 F4), 34675 Var("imm32", 34676 F32)])), 34677 Call 34678 ("Load", 34679 CTy"instruction", 34680 Call 34681 ("LoadByteLiteral", 34682 CTy"Load", 34683 TP[bVar"unsigned", 34684 bVar"add", 34685 Var("Rt", 34686 F4), 34687 Var("imm32", 34688 F32)])))))), 34689 ITE(EQ(Var("Rt", 34690 F4), 34691 LW(13, 34692 4)), 34693 Apply 34694 (Call 34695 ("DECODE_UNPREDICTABLE", 34696 ATy(qTy, 34697 qTy), 34698 TP[Var("mc", 34699 CTy"MachineCode"), 34700 LS 34701 "LoadByteLiteral/LoadHalfLiteral"]), 34702 qVar"s"), 34703 qVar"s")], 34704 TP[Apply 34705 (Call 34706 ("Skip", 34707 ATy(qTy, 34708 CTy"instruction"), 34709 LU), 34710 qVar"s"), 34711 qVar"s"]))))), 34712 (bVar"b'23", 34713 Let(Var("Rn",F4), 34714 Mop(Cast F4, 34715 LL[bVar"b'19", 34716 bVar"b'18", 34717 bVar"b'17",bVar"b'16"]), 34718 Let(Var("Rt",F4), 34719 Mop(Cast F4, 34720 LL[bVar"b'15", 34721 bVar"b'14", 34722 bVar"b'13", 34723 bVar"b'12"]), 34724 Let(TP[Var("v",F4), 34725 qVar"s"], 34726 Apply 34727 (Call 34728 ("ThumbCondition", 34729 ATy(qTy, 34730 PTy(F4,qTy)), 34731 LU), 34732 qVar"state"), 34733 Let(TP[bVar"v", 34734 qVar"s"], 34735 Apply 34736 (Call 34737 ("Do", 34738 ATy(qTy, 34739 PTy(bTy, 34740 qTy)), 34741 TP[Var("v", 34742 F4), 34743 Apply 34744 (Call 34745 ("HaveThumb2", 34746 ATy(qTy, 34747 bTy), 34748 LU), 34749 qVar"s")]), 34750 qVar"s"), 34751 ITE(bVar"v", 34752 TP[Let(Var("m", 34753 CTy"offset1"), 34754 Call 34755 ("immediate_form1", 34756 CTy"offset1", 34757 Mop(Cast 34758 F32, 34759 Mop(Cast 34760 (FTy 12), 34761 LL[bVar"b'11", 34762 bVar"b'10", 34763 bVar"b'9", 34764 bVar"b'8", 34765 bVar"b'7", 34766 bVar"b'6", 34767 bVar"b'5", 34768 bVar"b'4", 34769 bVar"b'3", 34770 bVar"b'2", 34771 bVar"b'1", 34772 bVar"b'0"]))), 34773 Let(bVar"unsigned", 34774 EQ(Mop(Cast 34775 F1, 34776 LL[bVar"b'24"]), 34777 LW(0, 34778 1)), 34779 ITE(EQ(Mop(Cast 34780 F1, 34781 LL[bVar"b'21"]), 34782 LW(1, 34783 1)), 34784 Call 34785 ("Load", 34786 CTy"instruction", 34787 Call 34788 ("LoadHalf", 34789 CTy"Load", 34790 TP[bVar"unsigned", 34791 LT, 34792 LT, 34793 LF, 34794 Var("Rt", 34795 F4), 34796 Var("Rn", 34797 F4), 34798 Var("m", 34799 CTy"offset1")])), 34800 Call 34801 ("Load", 34802 CTy"instruction", 34803 Call 34804 ("LoadByte", 34805 CTy"Load", 34806 TP[bVar"unsigned", 34807 LT, 34808 LT, 34809 LF, 34810 Var("Rt", 34811 F4), 34812 Var("Rn", 34813 F4), 34814 Var("m", 34815 CTy"offset1")]))))), 34816 ITE(EQ(Var("Rt", 34817 F4), 34818 LW(13, 34819 4)), 34820 Apply 34821 (Call 34822 ("DECODE_UNPREDICTABLE", 34823 ATy(qTy, 34824 qTy), 34825 TP[Var("mc", 34826 CTy"MachineCode"), 34827 LS 34828 "LoadByte/LoadHalf (immediate)"]), 34829 qVar"s"), 34830 qVar"s")], 34831 TP[Apply 34832 (Call 34833 ("Skip", 34834 ATy(qTy, 34835 CTy"instruction"), 34836 LU), 34837 qVar"s"), 34838 qVar"s"])))))), 34839 (Bop(And,Mop(Not,bVar"b'24"), 34840 Bop(And,Mop(Not,bVar"b'23"), 34841 Bop(And,bVar"b'15", 34842 Bop(And,bVar"b'14", 34843 Bop(And, 34844 bVar"b'13", 34845 Bop(And, 34846 bVar"b'12", 34847 Bop(And, 34848 bVar"b'11", 34849 Bop(And, 34850 bVar"b'10", 34851 Bop(And, 34852 Mop(Not, 34853 bVar"b'9"), 34854 Mop(Not, 34855 bVar"b'8")))))))))), 34856 Let(Var("W",F1), 34857 Mop(Cast F1,LL[bVar"b'21"]), 34858 Let(TP[Var("v",F4),qVar"s"], 34859 Apply 34860 (Call 34861 ("ThumbCondition", 34862 ATy(qTy, 34863 PTy(F4,qTy)), 34864 LU),qVar"state"), 34865 Let(TP[bVar"v",qVar"s"], 34866 Apply 34867 (Call 34868 ("Do", 34869 ATy(qTy, 34870 PTy(bTy, 34871 qTy)), 34872 TP[Var("v",F4), 34873 ITE(EQ(Var("W", 34874 F1), 34875 LW(1, 34876 1)), 34877 Apply 34878 (Call 34879 ("HaveMPExt", 34880 ATy(qTy, 34881 bTy), 34882 LU), 34883 qVar"s"), 34884 Apply 34885 (Call 34886 ("HaveThumb2", 34887 ATy(qTy, 34888 bTy), 34889 LU), 34890 qVar"s"))]), 34891 qVar"s"), 34892 TP[ITE(bVar"v", 34893 Call 34894 ("Hint", 34895 CTy"instruction", 34896 Call 34897 ("PreloadData", 34898 CTy"Hint", 34899 TP[LF, 34900 EQ(Var("W", 34901 F1), 34902 LW(1, 34903 1)), 34904 Mop(Cast 34905 F4, 34906 LL[bVar"b'19", 34907 bVar"b'18", 34908 bVar"b'17", 34909 bVar"b'16"]), 34910 Call 34911 ("immediate_form1", 34912 CTy"offset1", 34913 Mop(Cast 34914 F32, 34915 Mop(Cast 34916 F8, 34917 LL[bVar"b'7", 34918 bVar"b'6", 34919 bVar"b'5", 34920 bVar"b'4", 34921 bVar"b'3", 34922 bVar"b'2", 34923 bVar"b'1", 34924 bVar"b'0"])))])), 34925 Apply 34926 (Call 34927 ("Skip", 34928 ATy(qTy, 34929 CTy"instruction"), 34930 LU), 34931 qVar"s")), 34932 qVar"s"])))), 34933 (Bop(And,bVar"b'24", 34934 Bop(And,Mop(Not,bVar"b'23"), 34935 Bop(And, 34936 Mop(Not,bVar"b'21"), 34937 Bop(And,bVar"b'15", 34938 Bop(And, 34939 bVar"b'14", 34940 Bop(And, 34941 bVar"b'13", 34942 Bop(And, 34943 bVar"b'12", 34944 Bop(And, 34945 bVar"b'11", 34946 Bop(And, 34947 bVar"b'10", 34948 Bop(And, 34949 Mop(Not, 34950 bVar"b'9"), 34951 Mop(Not, 34952 bVar"b'8"))))))))))), 34953 Let(TP[Var("v",F4),qVar"s"], 34954 Apply 34955 (Call 34956 ("ThumbCondition", 34957 ATy(qTy,PTy(F4,qTy)), 34958 LU),qVar"state"), 34959 Let(TP[bVar"v",qVar"s"], 34960 Apply 34961 (Call 34962 ("Do", 34963 ATy(qTy, 34964 PTy(bTy,qTy)), 34965 TP[Var("v",F4), 34966 Bop(Ge, 34967 Apply 34968 (Call 34969 ("ArchVersion", 34970 ATy(qTy, 34971 nTy), 34972 LU), 34973 qVar"s"), 34974 LN 7)]), 34975 qVar"s"), 34976 TP[ITE(bVar"v", 34977 Call 34978 ("Hint", 34979 CTy"instruction", 34980 Call 34981 ("PreloadInstruction", 34982 CTy"Hint", 34983 TP[LF, 34984 Mop(Cast 34985 F4, 34986 LL[bVar"b'19", 34987 bVar"b'18", 34988 bVar"b'17", 34989 bVar"b'16"]), 34990 Call 34991 ("immediate_form1", 34992 CTy"offset1", 34993 Mop(Cast 34994 F32, 34995 Mop(Cast 34996 F8, 34997 LL[bVar"b'7", 34998 bVar"b'6", 34999 bVar"b'5", 35000 bVar"b'4", 35001 bVar"b'3", 35002 bVar"b'2", 35003 bVar"b'1", 35004 bVar"b'0"])))])), 35005 Apply 35006 (Call 35007 ("Skip", 35008 ATy(qTy, 35009 CTy"instruction"), 35010 LU),qVar"s")), 35011 qVar"s"]))), 35012 (Bop(And,Mop(Not,bVar"b'23"), 35013 Bop(And,bVar"b'11", 35014 Bop(And, 35015 Mop(Not,bVar"b'10"), 35016 Mop(Not,bVar"b'8")))), 35017 TP[Call 35018 ("Undefined", 35019 CTy"instruction",LW(0,32)), 35020 qVar"state"]), 35021 (Bop(And,Mop(Not,bVar"b'23"), 35022 Bop(And,bVar"b'11", 35023 Bop(And,bVar"b'10", 35024 Bop(And,bVar"b'9", 35025 Mop(Not, 35026 bVar"b'8"))))), 35027 Let(Var("Rn",F4), 35028 Mop(Cast F4, 35029 LL[bVar"b'19", 35030 bVar"b'18", 35031 bVar"b'17",bVar"b'16"]), 35032 Let(Var("Rt",F4), 35033 Mop(Cast F4, 35034 LL[bVar"b'15", 35035 bVar"b'14", 35036 bVar"b'13", 35037 bVar"b'12"]), 35038 Let(TP[Var("v",F4), 35039 qVar"s"], 35040 Apply 35041 (Call 35042 ("ThumbCondition", 35043 ATy(qTy, 35044 PTy(F4,qTy)), 35045 LU), 35046 qVar"state"), 35047 Let(TP[bVar"v", 35048 qVar"s"], 35049 Apply 35050 (Call 35051 ("Do", 35052 ATy(qTy, 35053 PTy(bTy, 35054 qTy)), 35055 TP[Var("v", 35056 F4), 35057 Apply 35058 (Call 35059 ("HaveThumb2", 35060 ATy(qTy, 35061 bTy), 35062 LU), 35063 qVar"s")]), 35064 qVar"s"), 35065 ITE(bVar"v", 35066 TP[Let(bVar"unsigned", 35067 EQ(Mop(Cast 35068 F1, 35069 LL[bVar"b'24"]), 35070 LW(0, 35071 1)), 35072 Let(Var("imm32", 35073 F32), 35074 Mop(Cast 35075 F32, 35076 Mop(Cast 35077 F8, 35078 LL[bVar"b'7", 35079 bVar"b'6", 35080 bVar"b'5", 35081 bVar"b'4", 35082 bVar"b'3", 35083 bVar"b'2", 35084 bVar"b'1", 35085 bVar"b'0"])), 35086 Let(Var("m", 35087 CTy"offset2"), 35088 Call 35089 ("immediate_form2", 35090 CTy"offset2", 35091 Var("imm32", 35092 F32)), 35093 ITB([(EQ(Mop(Cast 35094 F1, 35095 LL[bVar"b'21"]), 35096 LW(1, 35097 1)), 35098 Call 35099 ("Load", 35100 CTy"instruction", 35101 Call 35102 ("LoadHalfUnprivileged", 35103 CTy"Load", 35104 TP[bVar"unsigned", 35105 LT, 35106 LF, 35107 Var("Rt", 35108 F4), 35109 Var("Rn", 35110 F4), 35111 Var("m", 35112 CTy"offset2")]))), 35113 (bVar"unsigned", 35114 Call 35115 ("Load", 35116 CTy"instruction", 35117 Call 35118 ("LoadByteUnprivileged", 35119 CTy"Load", 35120 TP[LT, 35121 LF, 35122 Var("Rt", 35123 F4), 35124 Var("Rn", 35125 F4), 35126 Call 35127 ("immediate_form1", 35128 CTy"offset1", 35129 Var("imm32", 35130 F32))])))], 35131 Call 35132 ("Load", 35133 CTy"instruction", 35134 Call 35135 ("LoadSignedByteUnprivileged", 35136 CTy"Load", 35137 TP[LT, 35138 LF, 35139 Var("Rt", 35140 F4), 35141 Var("Rn", 35142 F4), 35143 Var("m", 35144 CTy"offset2")])))))), 35145 ITE(Bop(In, 35146 Var("Rt", 35147 F4), 35148 SL[LW(13, 35149 4), 35150 LW(15, 35151 4)]), 35152 Apply 35153 (Call 35154 ("DECODE_UNPREDICTABLE", 35155 ATy(qTy, 35156 qTy), 35157 TP[Var("mc", 35158 CTy"MachineCode"), 35159 LS 35160 "LoadUnprivileged"]), 35161 qVar"s"), 35162 qVar"s")], 35163 TP[Apply 35164 (Call 35165 ("Skip", 35166 ATy(qTy, 35167 CTy"instruction"), 35168 LU), 35169 qVar"s"), 35170 qVar"s"])))))), 35171 (Bop(And,bVar"b'24", 35172 Bop(And,Mop(Not,bVar"b'23"), 35173 Bop(And,bVar"b'21", 35174 Bop(And,bVar"b'15", 35175 Bop(And, 35176 bVar"b'14", 35177 Bop(And, 35178 bVar"b'13", 35179 Bop(And, 35180 bVar"b'12", 35181 Bop(And, 35182 bVar"b'11", 35183 Bop(And, 35184 bVar"b'10", 35185 Bop(And, 35186 Mop(Not, 35187 bVar"b'9"), 35188 Mop(Not, 35189 bVar"b'8"))))))))))), 35190 TP[Const 35191 ("NoOperation", 35192 CTy"instruction"), 35193 qVar"state"]), 35194 (Bop(And,Mop(Not,bVar"b'23"), 35195 bVar"b'11"), 35196 Let(Var("Rn",F4), 35197 Mop(Cast F4, 35198 LL[bVar"b'19", 35199 bVar"b'18", 35200 bVar"b'17",bVar"b'16"]), 35201 Let(Var("Rt",F4), 35202 Mop(Cast F4, 35203 LL[bVar"b'15", 35204 bVar"b'14", 35205 bVar"b'13", 35206 bVar"b'12"]), 35207 Let(TP[Var("v",F4), 35208 qVar"s"], 35209 Apply 35210 (Call 35211 ("ThumbCondition", 35212 ATy(qTy, 35213 PTy(F4,qTy)), 35214 LU), 35215 qVar"state"), 35216 Let(TP[bVar"v", 35217 qVar"s"], 35218 Apply 35219 (Call 35220 ("Do", 35221 ATy(qTy, 35222 PTy(bTy, 35223 qTy)), 35224 TP[Var("v", 35225 F4), 35226 Apply 35227 (Call 35228 ("HaveThumb2", 35229 ATy(qTy, 35230 bTy), 35231 LU), 35232 qVar"s")]), 35233 qVar"s"), 35234 ITE(bVar"v", 35235 Let(bVar"wback", 35236 EQ(Mop(Cast 35237 F1, 35238 LL[bVar"b'8"]), 35239 LW(1, 35240 1)), 35241 TP[Let(bVar"add", 35242 EQ(Mop(Cast 35243 F1, 35244 LL[bVar"b'9"]), 35245 LW(1, 35246 1)), 35247 Let(bVar"index", 35248 EQ(Mop(Cast 35249 F1, 35250 LL[bVar"b'10"]), 35251 LW(1, 35252 1)), 35253 Let(bVar"unsigned", 35254 EQ(Mop(Cast 35255 F1, 35256 LL[bVar"b'24"]), 35257 LW(0, 35258 1)), 35259 Let(Var("m", 35260 CTy"offset1"), 35261 Call 35262 ("immediate_form1", 35263 CTy"offset1", 35264 Mop(Cast 35265 F32, 35266 Mop(Cast 35267 F8, 35268 LL[bVar"b'7", 35269 bVar"b'6", 35270 bVar"b'5", 35271 bVar"b'4", 35272 bVar"b'3", 35273 bVar"b'2", 35274 bVar"b'1", 35275 bVar"b'0"]))), 35276 ITE(EQ(Mop(Cast 35277 F1, 35278 LL[bVar"b'21"]), 35279 LW(1, 35280 1)), 35281 Call 35282 ("Load", 35283 CTy"instruction", 35284 Call 35285 ("LoadHalf", 35286 CTy"Load", 35287 TP[bVar"unsigned", 35288 bVar"add", 35289 bVar"index", 35290 bVar"wback", 35291 Var("Rt", 35292 F4), 35293 Var("Rn", 35294 F4), 35295 Var("m", 35296 CTy"offset1")])), 35297 Call 35298 ("Load", 35299 CTy"instruction", 35300 Call 35301 ("LoadByte", 35302 CTy"Load", 35303 TP[bVar"unsigned", 35304 bVar"add", 35305 bVar"index", 35306 bVar"wback", 35307 Var("Rt", 35308 F4), 35309 Var("Rn", 35310 F4), 35311 Var("m", 35312 CTy"offset1")]))))))), 35313 ITE(Bop(Or, 35314 EQ(Var("Rt", 35315 F4), 35316 LW(13, 35317 4)), 35318 Bop(Or, 35319 Bop(And, 35320 EQ(Var("Rt", 35321 F4), 35322 LW(15, 35323 4)), 35324 bVar"wback"), 35325 Bop(And, 35326 bVar"wback", 35327 EQ(Var("Rn", 35328 F4), 35329 Var("Rt", 35330 F4))))), 35331 Apply 35332 (Call 35333 ("DECODE_UNPREDICTABLE", 35334 ATy(qTy, 35335 qTy), 35336 TP[Var("mc", 35337 CTy"MachineCode"), 35338 LS 35339 "Load (immediate)"]), 35340 qVar"s"), 35341 qVar"s")]), 35342 TP[Apply 35343 (Call 35344 ("Skip", 35345 ATy(qTy, 35346 CTy"instruction"), 35347 LU), 35348 qVar"s"), 35349 qVar"s"])))))), 35350 (Bop(And,Mop(Not,bVar"b'24"), 35351 Bop(And,Mop(Not,bVar"b'23"), 35352 Bop(And,bVar"b'15", 35353 Bop(And,bVar"b'14", 35354 Bop(And, 35355 bVar"b'13", 35356 Bop(And, 35357 bVar"b'12", 35358 Bop(And, 35359 Mop(Not, 35360 bVar"b'11"), 35361 Bop(And, 35362 Mop(Not, 35363 bVar"b'10"), 35364 Bop(And, 35365 Mop(Not, 35366 bVar"b'9"), 35367 Bop(And, 35368 Mop(Not, 35369 bVar"b'8"), 35370 Bop(And, 35371 Mop(Not, 35372 bVar"b'7"), 35373 Mop(Not, 35374 bVar"b'6")))))))))))), 35375 Let(Var("W",F1), 35376 Mop(Cast F1,LL[bVar"b'21"]), 35377 Let(Var("Rm",F4), 35378 Mop(Cast F4, 35379 LL[bVar"b'3", 35380 bVar"b'2", 35381 bVar"b'1", 35382 bVar"b'0"]), 35383 Let(TP[Var("v",F4), 35384 qVar"s"], 35385 Apply 35386 (Call 35387 ("ThumbCondition", 35388 ATy(qTy, 35389 PTy(F4,qTy)), 35390 LU), 35391 qVar"state"), 35392 Let(TP[bVar"v", 35393 qVar"s"], 35394 Apply 35395 (Call 35396 ("Do", 35397 ATy(qTy, 35398 PTy(bTy, 35399 qTy)), 35400 TP[Var("v", 35401 F4), 35402 ITE(EQ(Var("W", 35403 F1), 35404 LW(1, 35405 1)), 35406 Apply 35407 (Call 35408 ("HaveMPExt", 35409 ATy(qTy, 35410 bTy), 35411 LU), 35412 qVar"s"), 35413 Apply 35414 (Call 35415 ("HaveThumb2", 35416 ATy(qTy, 35417 bTy), 35418 LU), 35419 qVar"s"))]), 35420 qVar"s"), 35421 ITE(bVar"v", 35422 TP[Call 35423 ("Hint", 35424 CTy"instruction", 35425 Call 35426 ("PreloadData", 35427 CTy"Hint", 35428 TP[LT, 35429 EQ(Var("W", 35430 F1), 35431 LW(1, 35432 1)), 35433 Mop(Cast 35434 F4, 35435 LL[bVar"b'19", 35436 bVar"b'18", 35437 bVar"b'17", 35438 bVar"b'16"]), 35439 Call 35440 ("register_form1", 35441 CTy"offset1", 35442 TP[Var("Rm", 35443 F4), 35444 LC("SRType_LSL", 35445 CTy"SRType"), 35446 Mop(Cast 35447 nTy, 35448 Mop(Cast 35449 (FTy 2), 35450 LL[bVar"b'5", 35451 bVar"b'4"]))])])), 35452 ITE(Bop(In, 35453 Var("Rm", 35454 F4), 35455 SL[LW(13, 35456 4), 35457 LW(15, 35458 4)]), 35459 Apply 35460 (Call 35461 ("DECODE_UNPREDICTABLE", 35462 ATy(qTy, 35463 qTy), 35464 TP[Var("mc", 35465 CTy"MachineCode"), 35466 LS 35467 "PreloadData"]), 35468 qVar"s"), 35469 qVar"s")], 35470 TP[Apply 35471 (Call 35472 ("Skip", 35473 ATy(qTy, 35474 CTy"instruction"), 35475 LU), 35476 qVar"s"), 35477 qVar"s"])))))), 35478 (Bop(And,bVar"b'24", 35479 Bop(And,Mop(Not,bVar"b'23"), 35480 Bop(And, 35481 Mop(Not,bVar"b'21"), 35482 Bop(And,bVar"b'15", 35483 Bop(And, 35484 bVar"b'14", 35485 Bop(And, 35486 bVar"b'13", 35487 Bop(And, 35488 bVar"b'12", 35489 Bop(And, 35490 Mop(Not, 35491 bVar"b'11"), 35492 Bop(And, 35493 Mop(Not, 35494 bVar"b'10"), 35495 Bop(And, 35496 Mop(Not, 35497 bVar"b'9"), 35498 Bop(And, 35499 Mop(Not, 35500 bVar"b'8"), 35501 Bop(And, 35502 Mop(Not, 35503 bVar"b'7"), 35504 Mop(Not, 35505 bVar"b'6"))))))))))))), 35506 Let(Var("Rm",F4), 35507 Mop(Cast F4, 35508 LL[bVar"b'3",bVar"b'2", 35509 bVar"b'1",bVar"b'0"]), 35510 Let(TP[Var("v",F4),qVar"s"], 35511 Apply 35512 (Call 35513 ("ThumbCondition", 35514 ATy(qTy, 35515 PTy(F4,qTy)), 35516 LU),qVar"state"), 35517 Let(TP[bVar"v",qVar"s"], 35518 Apply 35519 (Call 35520 ("Do", 35521 ATy(qTy, 35522 PTy(bTy, 35523 qTy)), 35524 TP[Var("v",F4), 35525 Bop(Ge, 35526 Apply 35527 (Call 35528 ("ArchVersion", 35529 ATy(qTy, 35530 nTy), 35531 LU), 35532 qVar"s"), 35533 LN 7)]), 35534 qVar"s"), 35535 ITE(bVar"v", 35536 TP[Call 35537 ("Hint", 35538 CTy"instruction", 35539 Call 35540 ("PreloadInstruction", 35541 CTy"Hint", 35542 TP[LT, 35543 Mop(Cast 35544 F4, 35545 LL[bVar"b'19", 35546 bVar"b'18", 35547 bVar"b'17", 35548 bVar"b'16"]), 35549 Call 35550 ("register_form1", 35551 CTy"offset1", 35552 TP[Var("Rm", 35553 F4), 35554 LC("SRType_LSL", 35555 CTy"SRType"), 35556 Mop(Cast 35557 nTy, 35558 Mop(Cast 35559 (FTy 2), 35560 LL[bVar"b'5", 35561 bVar"b'4"]))])])), 35562 ITE(Bop(In, 35563 Var("Rm", 35564 F4), 35565 SL[LW(13, 35566 4), 35567 LW(15, 35568 4)]), 35569 Apply 35570 (Call 35571 ("DECODE_UNPREDICTABLE", 35572 ATy(qTy, 35573 qTy), 35574 TP[Var("mc", 35575 CTy"MachineCode"), 35576 LS 35577 "PreloadInstruction"]), 35578 qVar"s"), 35579 qVar"s")], 35580 TP[Apply 35581 (Call 35582 ("Skip", 35583 ATy(qTy, 35584 CTy"instruction"), 35585 LU), 35586 qVar"s"), 35587 qVar"s"]))))), 35588 (Bop(And,bVar"b'24", 35589 Bop(And,Mop(Not,bVar"b'23"), 35590 Bop(And,bVar"b'21", 35591 Bop(And,bVar"b'15", 35592 Bop(And, 35593 bVar"b'14", 35594 Bop(And, 35595 bVar"b'13", 35596 Bop(And, 35597 bVar"b'12", 35598 Bop(And, 35599 Mop(Not, 35600 bVar"b'11"), 35601 Bop(And, 35602 Mop(Not, 35603 bVar"b'10"), 35604 Bop(And, 35605 Mop(Not, 35606 bVar"b'9"), 35607 Bop(And, 35608 Mop(Not, 35609 bVar"b'8"), 35610 Bop(And, 35611 Mop(Not, 35612 bVar"b'7"), 35613 Mop(Not, 35614 bVar"b'6"))))))))))))), 35615 TP[Const 35616 ("NoOperation", 35617 CTy"instruction"), 35618 qVar"state"]), 35619 (Bop(And,Mop(Not,bVar"b'23"), 35620 Bop(And,Mop(Not,bVar"b'11"), 35621 Bop(And, 35622 Mop(Not,bVar"b'10"), 35623 Bop(And, 35624 Mop(Not, 35625 bVar"b'9"), 35626 Bop(And, 35627 Mop(Not, 35628 bVar"b'8"), 35629 Bop(And, 35630 Mop(Not, 35631 bVar"b'7"), 35632 Mop(Not, 35633 bVar"b'6"))))))), 35634 Let(Var("Rn",F4), 35635 Mop(Cast F4, 35636 LL[bVar"b'19", 35637 bVar"b'18", 35638 bVar"b'17",bVar"b'16"]), 35639 Let(Var("Rm",F4), 35640 Mop(Cast F4, 35641 LL[bVar"b'3", 35642 bVar"b'2", 35643 bVar"b'1", 35644 bVar"b'0"]), 35645 Let(Var("Rt",F4), 35646 Mop(Cast F4, 35647 LL[bVar"b'15", 35648 bVar"b'14", 35649 bVar"b'13", 35650 bVar"b'12"]), 35651 Let(TP[Var("v",F4), 35652 qVar"s"], 35653 Apply 35654 (Call 35655 ("ThumbCondition", 35656 ATy(qTy, 35657 PTy(F4, 35658 qTy)), 35659 LU), 35660 qVar"state"), 35661 Let(TP[bVar"v", 35662 qVar"s"], 35663 Apply 35664 (Call 35665 ("Do", 35666 ATy(qTy, 35667 PTy(bTy, 35668 qTy)), 35669 TP[Var("v", 35670 F4), 35671 Apply 35672 (Call 35673 ("HaveThumb2", 35674 ATy(qTy, 35675 bTy), 35676 LU), 35677 qVar"s")]), 35678 qVar"s"), 35679 ITE(bVar"v", 35680 TP[Let(bVar"unsigned", 35681 EQ(Mop(Cast 35682 F1, 35683 LL[bVar"b'24"]), 35684 LW(0, 35685 1)), 35686 Let(Var("m", 35687 CTy"offset1"), 35688 Call 35689 ("register_form1", 35690 CTy"offset1", 35691 TP[Var("Rm", 35692 F4), 35693 LC("SRType_LSL", 35694 CTy"SRType"), 35695 Mop(Cast 35696 nTy, 35697 Mop(Cast 35698 (FTy 2), 35699 LL[bVar"b'5", 35700 bVar"b'4"]))]), 35701 ITE(EQ(Mop(Cast 35702 F1, 35703 LL[bVar"b'21"]), 35704 LW(1, 35705 1)), 35706 Call 35707 ("Load", 35708 CTy"instruction", 35709 Call 35710 ("LoadHalf", 35711 CTy"Load", 35712 TP[bVar"unsigned", 35713 LT, 35714 LT, 35715 LF, 35716 Var("Rt", 35717 F4), 35718 Var("Rn", 35719 F4), 35720 Var("m", 35721 CTy"offset1")])), 35722 Call 35723 ("Load", 35724 CTy"instruction", 35725 Call 35726 ("LoadByte", 35727 CTy"Load", 35728 TP[bVar"unsigned", 35729 LT, 35730 LT, 35731 LF, 35732 Var("Rt", 35733 F4), 35734 Var("Rn", 35735 F4), 35736 Var("m", 35737 CTy"offset1")]))))), 35738 ITE(Bop(Or, 35739 EQ(Var("Rt", 35740 F4), 35741 LW(13, 35742 4)), 35743 Bop(In, 35744 Var("Rm", 35745 F4), 35746 SL[LW(13, 35747 4), 35748 LW(15, 35749 4)])), 35750 Apply 35751 (Call 35752 ("DECODE_UNPREDICTABLE", 35753 ATy(qTy, 35754 qTy), 35755 TP[Var("mc", 35756 CTy"MachineCode"), 35757 LS 35758 "Load (register)"]), 35759 qVar"s"), 35760 qVar"s")], 35761 TP[Apply 35762 (Call 35763 ("Skip", 35764 ATy(qTy, 35765 CTy"instruction"), 35766 LU), 35767 qVar"s"), 35768 qVar"s"])))))))], 35769 Apply 35770 (Call 35771 ("UndefinedThumb", 35772 ATy(qTy, 35773 PTy(CTy"instruction",qTy)), 35774 LU),qVar"state")), 35775 Apply 35776 (Call 35777 ("UndefinedThumb", 35778 ATy(qTy, 35779 PTy(CTy"instruction",qTy)), 35780 LU),qVar"state"))), 35781 (Bop(And,bVar"b'31", 35782 Bop(And,bVar"b'30", 35783 Bop(And,bVar"b'29", 35784 Bop(And,Mop(Not,bVar"b'26"), 35785 Mop(Not,bVar"b'24"))))), 35786 ITB([(Bop(And,Mop(Not,bVar"b'23"), 35787 Bop(And,Mop(Not,bVar"b'11"), 35788 Bop(And,Mop(Not,bVar"b'10"), 35789 Bop(And, 35790 Mop(Not,bVar"b'9"), 35791 Bop(And, 35792 Mop(Not, 35793 bVar"b'8"), 35794 Bop(And, 35795 Mop(Not, 35796 bVar"b'7"), 35797 Mop(Not, 35798 bVar"b'6"))))))), 35799 Let(Var("Rn",F4), 35800 Mop(Cast F4, 35801 LL[bVar"b'19",bVar"b'18", 35802 bVar"b'17",bVar"b'16"]), 35803 Let(Var("Rm",F4), 35804 Mop(Cast F4, 35805 LL[bVar"b'3",bVar"b'2", 35806 bVar"b'1",bVar"b'0"]), 35807 Let(Var("Rt",F4), 35808 Mop(Cast F4, 35809 LL[bVar"b'15", 35810 bVar"b'14", 35811 bVar"b'13", 35812 bVar"b'12"]), 35813 Let(TP[Var("v",F4), 35814 qVar"s"], 35815 Apply 35816 (Call 35817 ("ThumbCondition", 35818 ATy(qTy, 35819 PTy(F4,qTy)), 35820 LU), 35821 qVar"state"), 35822 Let(TP[bVar"v", 35823 qVar"s"], 35824 Apply 35825 (Call 35826 ("Do", 35827 ATy(qTy, 35828 PTy(bTy, 35829 qTy)), 35830 TP[Var("v", 35831 F4), 35832 Bop(And, 35833 Mop(Not, 35834 EQ(Var("Rn", 35835 F4), 35836 LW(15, 35837 4))), 35838 Apply 35839 (Call 35840 ("HaveThumb2", 35841 ATy(qTy, 35842 bTy), 35843 LU), 35844 qVar"s"))]), 35845 qVar"s"), 35846 ITE(bVar"v", 35847 TP[Let(Var("m", 35848 CTy"offset1"), 35849 Call 35850 ("register_form1", 35851 CTy"offset1", 35852 TP[Var("Rm", 35853 F4), 35854 LC("SRType_LSL", 35855 CTy"SRType"), 35856 Mop(Cast 35857 nTy, 35858 Mop(Cast 35859 (FTy 2), 35860 LL[bVar"b'5", 35861 bVar"b'4"]))]), 35862 ITE(EQ(Mop(Cast 35863 F1, 35864 LL[bVar"b'21"]), 35865 LW(1, 35866 1)), 35867 Call 35868 ("Store", 35869 CTy"instruction", 35870 Call 35871 ("StoreHalf", 35872 CTy"Store", 35873 TP[LT, 35874 LT, 35875 LF, 35876 Var("Rt", 35877 F4), 35878 Var("Rn", 35879 F4), 35880 Var("m", 35881 CTy"offset1")])), 35882 Call 35883 ("Store", 35884 CTy"instruction", 35885 Call 35886 ("StoreByte", 35887 CTy"Store", 35888 TP[LT, 35889 LT, 35890 LF, 35891 Var("Rt", 35892 F4), 35893 Var("Rn", 35894 F4), 35895 Var("m", 35896 CTy"offset1")])))), 35897 ITE(Bop(Or, 35898 Bop(In, 35899 Var("Rt", 35900 F4), 35901 SL[LW(13, 35902 4), 35903 LW(15, 35904 4)]), 35905 Bop(In, 35906 Var("Rm", 35907 F4), 35908 SL[LW(13, 35909 4), 35910 LW(15, 35911 4)])), 35912 Apply 35913 (Call 35914 ("DECODE_UNPREDICTABLE", 35915 ATy(qTy, 35916 qTy), 35917 TP[Var("mc", 35918 CTy"MachineCode"), 35919 LS 35920 "StoreByte/Half (register)"]), 35921 qVar"s"), 35922 qVar"s")], 35923 TP[Apply 35924 (Call 35925 ("Skip", 35926 ATy(qTy, 35927 CTy"instruction"), 35928 LU), 35929 qVar"s"), 35930 qVar"s"]))))))), 35931 (Bop(And,Mop(Not,bVar"b'23"), 35932 Bop(And,bVar"b'11", 35933 Bop(And,bVar"b'10", 35934 Bop(And,bVar"b'9", 35935 Mop(Not,bVar"b'8"))))), 35936 Let(Var("Rn",F4), 35937 Mop(Cast F4, 35938 LL[bVar"b'19",bVar"b'18", 35939 bVar"b'17",bVar"b'16"]), 35940 Let(Var("Rt",F4), 35941 Mop(Cast F4, 35942 LL[bVar"b'15", 35943 bVar"b'14", 35944 bVar"b'13",bVar"b'12"]), 35945 Let(TP[Var("v",F4),qVar"s"], 35946 Apply 35947 (Call 35948 ("ThumbCondition", 35949 ATy(qTy, 35950 PTy(F4,qTy)), 35951 LU),qVar"state"), 35952 Let(TP[bVar"v",qVar"s"], 35953 Apply 35954 (Call 35955 ("Do", 35956 ATy(qTy, 35957 PTy(bTy, 35958 qTy)), 35959 TP[Var("v",F4), 35960 Bop(And, 35961 Mop(Not, 35962 EQ(Var("Rn", 35963 F4), 35964 LW(15, 35965 4))), 35966 Apply 35967 (Call 35968 ("HaveThumb2", 35969 ATy(qTy, 35970 bTy), 35971 LU), 35972 qVar"s"))]), 35973 qVar"s"), 35974 ITE(bVar"v", 35975 TP[Let(Var("imm32", 35976 F32), 35977 Mop(Cast 35978 F32, 35979 Mop(Cast 35980 F8, 35981 LL[bVar"b'7", 35982 bVar"b'6", 35983 bVar"b'5", 35984 bVar"b'4", 35985 bVar"b'3", 35986 bVar"b'2", 35987 bVar"b'1", 35988 bVar"b'0"])), 35989 ITE(EQ(Mop(Cast 35990 F1, 35991 LL[bVar"b'21"]), 35992 LW(1, 35993 1)), 35994 Call 35995 ("Store", 35996 CTy"instruction", 35997 Call 35998 ("StoreHalfUnprivileged", 35999 CTy"Store", 36000 TP[LT, 36001 LF, 36002 Var("Rt", 36003 F4), 36004 Var("Rn", 36005 F4), 36006 Call 36007 ("immediate_form2", 36008 CTy"offset2", 36009 Var("imm32", 36010 F32))])), 36011 Call 36012 ("Store", 36013 CTy"instruction", 36014 Call 36015 ("StoreByteUnprivileged", 36016 CTy"Store", 36017 TP[LT, 36018 LF, 36019 Var("Rt", 36020 F4), 36021 Var("Rn", 36022 F4), 36023 Call 36024 ("immediate_form1", 36025 CTy"offset1", 36026 Var("imm32", 36027 F32))])))), 36028 ITE(Bop(In, 36029 Var("Rt", 36030 F4), 36031 SL[LW(13, 36032 4), 36033 LW(15, 36034 4)]), 36035 Apply 36036 (Call 36037 ("DECODE_UNPREDICTABLE", 36038 ATy(qTy, 36039 qTy), 36040 TP[Var("mc", 36041 CTy"MachineCode"), 36042 LS 36043 "StoreByte/HalfUnprivileged"]), 36044 qVar"s"), 36045 qVar"s")], 36046 TP[Apply 36047 (Call 36048 ("Skip", 36049 ATy(qTy, 36050 CTy"instruction"), 36051 LU), 36052 qVar"s"), 36053 qVar"s"])))))), 36054 (Bop(And,Mop(Not,bVar"b'23"), 36055 bVar"b'11"), 36056 Let(Var("Rn",F4), 36057 Mop(Cast F4, 36058 LL[bVar"b'19",bVar"b'18", 36059 bVar"b'17",bVar"b'16"]), 36060 Let(Var("W",F1), 36061 Mop(Cast F1,LL[bVar"b'8"]), 36062 Let(Var("P",F1), 36063 Mop(Cast F1, 36064 LL[bVar"b'10"]), 36065 Let(Var("Rt",F4), 36066 Mop(Cast F4, 36067 LL[bVar"b'15", 36068 bVar"b'14", 36069 bVar"b'13", 36070 bVar"b'12"]), 36071 Let(TP[Var("v",F4), 36072 qVar"s"], 36073 Apply 36074 (Call 36075 ("ThumbCondition", 36076 ATy(qTy, 36077 PTy(F4, 36078 qTy)), 36079 LU), 36080 qVar"state"), 36081 Let(TP[bVar"v", 36082 qVar"s"], 36083 Apply 36084 (Call 36085 ("Do", 36086 ATy(qTy, 36087 PTy(bTy, 36088 qTy)), 36089 TP[Var("v", 36090 F4), 36091 Bop(And, 36092 Mop(Not, 36093 EQ(Var("Rn", 36094 F4), 36095 LW(15, 36096 4))), 36097 Bop(And, 36098 Bop(Or, 36099 EQ(Var("P", 36100 F1), 36101 LW(1, 36102 1)), 36103 EQ(Var("W", 36104 F1), 36105 LW(1, 36106 1))), 36107 Apply 36108 (Call 36109 ("HaveThumb2", 36110 ATy(qTy, 36111 bTy), 36112 LU), 36113 qVar"s")))]), 36114 qVar"s"), 36115 ITE(bVar"v", 36116 Let(bVar"wback", 36117 EQ(Var("W", 36118 F1), 36119 LW(1, 36120 1)), 36121 TP[Let(bVar"add", 36122 EQ(Mop(Cast 36123 F1, 36124 LL[bVar"b'9"]), 36125 LW(1, 36126 1)), 36127 Let(bVar"index", 36128 EQ(Var("P", 36129 F1), 36130 LW(1, 36131 1)), 36132 Let(Var("m", 36133 CTy"offset1"), 36134 Call 36135 ("immediate_form1", 36136 CTy"offset1", 36137 Mop(Cast 36138 F32, 36139 Mop(Cast 36140 F8, 36141 LL[bVar"b'7", 36142 bVar"b'6", 36143 bVar"b'5", 36144 bVar"b'4", 36145 bVar"b'3", 36146 bVar"b'2", 36147 bVar"b'1", 36148 bVar"b'0"]))), 36149 ITE(EQ(Mop(Cast 36150 F1, 36151 LL[bVar"b'21"]), 36152 LW(1, 36153 1)), 36154 Call 36155 ("Store", 36156 CTy"instruction", 36157 Call 36158 ("StoreHalf", 36159 CTy"Store", 36160 TP[bVar"add", 36161 bVar"index", 36162 bVar"wback", 36163 Var("Rt", 36164 F4), 36165 Var("Rn", 36166 F4), 36167 Var("m", 36168 CTy"offset1")])), 36169 Call 36170 ("Store", 36171 CTy"instruction", 36172 Call 36173 ("StoreByte", 36174 CTy"Store", 36175 TP[bVar"add", 36176 bVar"index", 36177 bVar"wback", 36178 Var("Rt", 36179 F4), 36180 Var("Rn", 36181 F4), 36182 Var("m", 36183 CTy"offset1")])))))), 36184 ITE(Bop(Or, 36185 Bop(In, 36186 Var("Rt", 36187 F4), 36188 SL[LW(13, 36189 4), 36190 LW(15, 36191 4)]), 36192 Bop(And, 36193 bVar"wback", 36194 EQ(Var("Rn", 36195 F4), 36196 Var("Rt", 36197 F4)))), 36198 Apply 36199 (Call 36200 ("DECODE_UNPREDICTABLE", 36201 ATy(qTy, 36202 qTy), 36203 TP[Var("mc", 36204 CTy"MachineCode"), 36205 LS 36206 "StoreByte/Half (immediate)"]), 36207 qVar"s"), 36208 qVar"s")]), 36209 TP[Apply 36210 (Call 36211 ("Skip", 36212 ATy(qTy, 36213 CTy"instruction"), 36214 LU), 36215 qVar"s"), 36216 qVar"s"])))))))), 36217 (bVar"b'23", 36218 Let(Var("Rn",F4), 36219 Mop(Cast F4, 36220 LL[bVar"b'19",bVar"b'18", 36221 bVar"b'17",bVar"b'16"]), 36222 Let(Var("Rt",F4), 36223 Mop(Cast F4, 36224 LL[bVar"b'15", 36225 bVar"b'14", 36226 bVar"b'13",bVar"b'12"]), 36227 Let(TP[Var("v",F4),qVar"s"], 36228 Apply 36229 (Call 36230 ("ThumbCondition", 36231 ATy(qTy, 36232 PTy(F4,qTy)), 36233 LU),qVar"state"), 36234 Let(TP[bVar"v",qVar"s"], 36235 Apply 36236 (Call 36237 ("Do", 36238 ATy(qTy, 36239 PTy(bTy, 36240 qTy)), 36241 TP[Var("v",F4), 36242 Bop(And, 36243 Mop(Not, 36244 EQ(Var("Rn", 36245 F4), 36246 LW(15, 36247 4))), 36248 Apply 36249 (Call 36250 ("HaveThumb2", 36251 ATy(qTy, 36252 bTy), 36253 LU), 36254 qVar"s"))]), 36255 qVar"s"), 36256 ITE(bVar"v", 36257 TP[Let(Var("m", 36258 CTy"offset1"), 36259 Call 36260 ("immediate_form1", 36261 CTy"offset1", 36262 Mop(Cast 36263 F32, 36264 Mop(Cast 36265 (FTy 12), 36266 LL[bVar"b'11", 36267 bVar"b'10", 36268 bVar"b'9", 36269 bVar"b'8", 36270 bVar"b'7", 36271 bVar"b'6", 36272 bVar"b'5", 36273 bVar"b'4", 36274 bVar"b'3", 36275 bVar"b'2", 36276 bVar"b'1", 36277 bVar"b'0"]))), 36278 ITE(EQ(Mop(Cast 36279 F1, 36280 LL[bVar"b'21"]), 36281 LW(1, 36282 1)), 36283 Call 36284 ("Store", 36285 CTy"instruction", 36286 Call 36287 ("StoreHalf", 36288 CTy"Store", 36289 TP[LT, 36290 LT, 36291 LF, 36292 Var("Rt", 36293 F4), 36294 Var("Rn", 36295 F4), 36296 Var("m", 36297 CTy"offset1")])), 36298 Call 36299 ("Store", 36300 CTy"instruction", 36301 Call 36302 ("StoreByte", 36303 CTy"Store", 36304 TP[LT, 36305 LT, 36306 LF, 36307 Var("Rt", 36308 F4), 36309 Var("Rn", 36310 F4), 36311 Var("m", 36312 CTy"offset1")])))), 36313 ITE(Bop(In, 36314 Var("Rt", 36315 F4), 36316 SL[LW(13, 36317 4), 36318 LW(15, 36319 4)]), 36320 Apply 36321 (Call 36322 ("DECODE_UNPREDICTABLE", 36323 ATy(qTy, 36324 qTy), 36325 TP[Var("mc", 36326 CTy"MachineCode"), 36327 LS 36328 "StoreByte/Half (immediate)"]), 36329 qVar"s"), 36330 qVar"s")], 36331 TP[Apply 36332 (Call 36333 ("Skip", 36334 ATy(qTy, 36335 CTy"instruction"), 36336 LU), 36337 qVar"s"), 36338 qVar"s"]))))))], 36339 Apply 36340 (Call 36341 ("UndefinedThumb", 36342 ATy(qTy, 36343 PTy(CTy"instruction",qTy)), 36344 LU),qVar"state")))], 36345 Apply 36346 (Call 36347 ("UndefinedThumb", 36348 ATy(qTy,PTy(CTy"instruction",qTy)),LU), 36349 qVar"state"))), 36350 (Bop(And,bVar"b'31", 36351 Bop(And,bVar"b'30", 36352 Bop(And,bVar"b'29",Mop(Not,bVar"b'26")))), 36353 ITB([(Bop(And,Mop(Not,bVar"b'25"), 36354 Bop(And,Mop(Not,bVar"b'24"), 36355 Bop(And,bVar"b'23", 36356 Bop(And,Mop(Not,bVar"b'22"), 36357 Mop(Not,bVar"b'20"))))), 36358 Let(Var("Rn",F4), 36359 Mop(Cast F4, 36360 LL[bVar"b'19",bVar"b'18", 36361 bVar"b'17",bVar"b'16"]), 36362 Let(TP[Var("v",F4),qVar"s"], 36363 Apply 36364 (Call 36365 ("ThumbCondition", 36366 ATy(qTy,PTy(F4,qTy)),LU), 36367 qVar"state"), 36368 Let(TP[bVar"v",qVar"s"], 36369 Apply 36370 (Call 36371 ("Do", 36372 ATy(qTy,PTy(bTy,qTy)), 36373 TP[Var("v",F4), 36374 Apply 36375 (Call 36376 ("HaveThumb2", 36377 ATy(qTy,bTy),LU), 36378 qVar"s")]),qVar"s"), 36379 ITE(bVar"v", 36380 Let(Var("registers",F16), 36381 CC[LW(0,1), 36382 Mop(Cast F1, 36383 LL[bVar"b'14"]), 36384 LW(0,1), 36385 Mop(Cast(FTy 13), 36386 LL[bVar"b'12", 36387 bVar"b'11", 36388 bVar"b'10", 36389 bVar"b'9", 36390 bVar"b'8", 36391 bVar"b'7", 36392 bVar"b'6", 36393 bVar"b'5", 36394 bVar"b'4", 36395 bVar"b'3", 36396 bVar"b'2", 36397 bVar"b'1", 36398 bVar"b'0"])], 36399 Let(bVar"wback", 36400 EQ(Mop(Cast F1, 36401 LL[bVar"b'21"]), 36402 LW(1,1)), 36403 TP[Call 36404 ("Store", 36405 CTy"instruction", 36406 Call 36407 ("StoreMultiple", 36408 CTy"Store", 36409 TP[LT,LF, 36410 bVar"wback", 36411 Var("Rn", 36412 F4), 36413 Var("registers", 36414 F16)])), 36415 ITE(Bop(Or, 36416 EQ(Var("Rn", 36417 F4), 36418 LW(15, 36419 4)), 36420 Bop(Or, 36421 Bop(Lt, 36422 Call 36423 ("BitCount", 36424 nTy, 36425 Var("registers", 36426 F16)), 36427 LN 36428 2), 36429 Bop(Or, 36430 Bop(And, 36431 bVar"wback", 36432 Bop(Bit, 36433 Var("registers", 36434 F16), 36435 Mop(Cast 36436 nTy, 36437 Var("Rn", 36438 F4)))), 36439 Mop(Not, 36440 Bop(And, 36441 EQ(Mop(Cast 36442 F1, 36443 LL[bVar"b'15"]), 36444 LW(0, 36445 1)), 36446 EQ(Mop(Cast 36447 F1, 36448 LL[bVar"b'13"]), 36449 LW(0, 36450 1))))))), 36451 Apply 36452 (Call 36453 ("DECODE_UNPREDICTABLE", 36454 ATy(qTy, 36455 qTy), 36456 TP[Var("mc", 36457 CTy"MachineCode"), 36458 LS 36459 "StoreMultiple"]), 36460 qVar"s"), 36461 qVar"s")])), 36462 TP[Apply 36463 (Call 36464 ("Skip", 36465 ATy(qTy, 36466 CTy"instruction"), 36467 LU),qVar"s"), 36468 qVar"s"]))))), 36469 (Bop(And,Mop(Not,bVar"b'25"), 36470 Bop(And,bVar"b'24", 36471 Bop(And,Mop(Not,bVar"b'23"), 36472 Bop(And,Mop(Not,bVar"b'22"), 36473 Mop(Not,bVar"b'20"))))), 36474 Let(Var("Rn",F4), 36475 Mop(Cast F4, 36476 LL[bVar"b'19",bVar"b'18", 36477 bVar"b'17",bVar"b'16"]), 36478 Let(TP[Var("v",F4),qVar"s"], 36479 Apply 36480 (Call 36481 ("ThumbCondition", 36482 ATy(qTy,PTy(F4,qTy)),LU), 36483 qVar"state"), 36484 Let(TP[bVar"v",qVar"s"], 36485 Apply 36486 (Call 36487 ("Do", 36488 ATy(qTy,PTy(bTy,qTy)), 36489 TP[Var("v",F4), 36490 Apply 36491 (Call 36492 ("HaveThumb2", 36493 ATy(qTy,bTy),LU), 36494 qVar"s")]),qVar"s"), 36495 ITE(bVar"v", 36496 Let(Var("registers",F16), 36497 CC[LW(0,1), 36498 Mop(Cast F1, 36499 LL[bVar"b'14"]), 36500 LW(0,1), 36501 Mop(Cast(FTy 13), 36502 LL[bVar"b'12", 36503 bVar"b'11", 36504 bVar"b'10", 36505 bVar"b'9", 36506 bVar"b'8", 36507 bVar"b'7", 36508 bVar"b'6", 36509 bVar"b'5", 36510 bVar"b'4", 36511 bVar"b'3", 36512 bVar"b'2", 36513 bVar"b'1", 36514 bVar"b'0"])], 36515 Let(bVar"wback", 36516 EQ(Mop(Cast F1, 36517 LL[bVar"b'21"]), 36518 LW(1,1)), 36519 TP[Call 36520 ("Store", 36521 CTy"instruction", 36522 Call 36523 ("StoreMultiple", 36524 CTy"Store", 36525 TP[LF,LT, 36526 bVar"wback", 36527 Var("Rn", 36528 F4), 36529 Var("registers", 36530 F16)])), 36531 ITE(Bop(Or, 36532 EQ(Var("Rn", 36533 F4), 36534 LW(15, 36535 4)), 36536 Bop(Or, 36537 Bop(Lt, 36538 Call 36539 ("BitCount", 36540 nTy, 36541 Var("registers", 36542 F16)), 36543 LN 36544 2), 36545 Bop(Or, 36546 Bop(And, 36547 bVar"wback", 36548 Bop(Bit, 36549 Var("registers", 36550 F16), 36551 Mop(Cast 36552 nTy, 36553 Var("Rn", 36554 F4)))), 36555 Mop(Not, 36556 Bop(And, 36557 EQ(Mop(Cast 36558 F1, 36559 LL[bVar"b'15"]), 36560 LW(0, 36561 1)), 36562 EQ(Mop(Cast 36563 F1, 36564 LL[bVar"b'13"]), 36565 LW(0, 36566 1))))))), 36567 Apply 36568 (Call 36569 ("DECODE_UNPREDICTABLE", 36570 ATy(qTy, 36571 qTy), 36572 TP[Var("mc", 36573 CTy"MachineCode"), 36574 LS 36575 "StoreMultiple"]), 36576 qVar"s"), 36577 qVar"s")])), 36578 TP[Apply 36579 (Call 36580 ("Skip", 36581 ATy(qTy, 36582 CTy"instruction"), 36583 LU),qVar"s"), 36584 qVar"s"]))))), 36585 (Bop(And,Mop(Not,bVar"b'25"), 36586 Bop(And,Mop(Not,bVar"b'24"), 36587 Bop(And,bVar"b'23", 36588 Bop(And,Mop(Not,bVar"b'22"), 36589 bVar"b'20")))), 36590 Let(Var("Rn",F4), 36591 Mop(Cast F4, 36592 LL[bVar"b'19",bVar"b'18", 36593 bVar"b'17",bVar"b'16"]), 36594 Let(Var("M",F1), 36595 Mop(Cast F1,LL[bVar"b'14"]), 36596 Let(Var("P",F1), 36597 Mop(Cast F1,LL[bVar"b'15"]), 36598 Let(TP[Var("v",F4),qVar"s"], 36599 Apply 36600 (Call 36601 ("ThumbCondition", 36602 ATy(qTy,PTy(F4,qTy)), 36603 LU),qVar"state"), 36604 Let(TP[bVar"v",qVar"s"], 36605 Apply 36606 (Call 36607 ("Do", 36608 ATy(qTy, 36609 PTy(bTy,qTy)), 36610 TP[Var("v",F4), 36611 Apply 36612 (Call 36613 ("HaveThumb2", 36614 ATy(qTy, 36615 bTy), 36616 LU), 36617 qVar"s")]), 36618 qVar"s"), 36619 ITE(bVar"v", 36620 Let(Var("registers", 36621 F16), 36622 CC[Var("P",F1), 36623 Var("M",F1), 36624 LW(0,1), 36625 Mop(Cast 36626 (FTy 13), 36627 LL[bVar"b'12", 36628 bVar"b'11", 36629 bVar"b'10", 36630 bVar"b'9", 36631 bVar"b'8", 36632 bVar"b'7", 36633 bVar"b'6", 36634 bVar"b'5", 36635 bVar"b'4", 36636 bVar"b'3", 36637 bVar"b'2", 36638 bVar"b'1", 36639 bVar"b'0"])], 36640 Let(bVar"wback", 36641 EQ(Mop(Cast 36642 F1, 36643 LL[bVar"b'21"]), 36644 LW(1,1)), 36645 TP[Call 36646 ("Load", 36647 CTy"instruction", 36648 Call 36649 ("LoadMultiple", 36650 CTy"Load", 36651 TP[LT, 36652 LF, 36653 bVar"wback", 36654 Var("Rn", 36655 F4), 36656 Var("registers", 36657 F16)])), 36658 ITE(Bop(Or, 36659 EQ(Var("Rn", 36660 F4), 36661 LW(15, 36662 4)), 36663 Bop(Or, 36664 Bop(Lt, 36665 Call 36666 ("BitCount", 36667 nTy, 36668 Var("registers", 36669 F16)), 36670 LN 36671 2), 36672 Bop(Or, 36673 Bop(And, 36674 EQ(Var("P", 36675 F1), 36676 LW(1, 36677 1)), 36678 EQ(Var("M", 36679 F1), 36680 LW(1, 36681 1))), 36682 Bop(Or, 36683 Bop(And, 36684 Bop(Bit, 36685 Var("registers", 36686 F16), 36687 LN 36688 15), 36689 Bop(And, 36690 Apply 36691 (Call 36692 ("InITBlock", 36693 ATy(qTy, 36694 bTy), 36695 LU), 36696 qVar"s"), 36697 Mop(Not, 36698 Apply 36699 (Call 36700 ("LastInITBlock", 36701 ATy(qTy, 36702 bTy), 36703 LU), 36704 qVar"s")))), 36705 Bop(Or, 36706 Bop(And, 36707 bVar"wback", 36708 Bop(Bit, 36709 Var("registers", 36710 F16), 36711 Mop(Cast 36712 nTy, 36713 Var("Rn", 36714 F4)))), 36715 Mop(Not, 36716 EQ(Mop(Cast 36717 F1, 36718 LL[bVar"b'13"]), 36719 LW(0, 36720 1)))))))), 36721 Apply 36722 (Call 36723 ("DECODE_UNPREDICTABLE", 36724 ATy(qTy, 36725 qTy), 36726 TP[Var("mc", 36727 CTy"MachineCode"), 36728 LS 36729 "LoadMultiple"]), 36730 qVar"s"), 36731 qVar"s")])), 36732 TP[Apply 36733 (Call 36734 ("Skip", 36735 ATy(qTy, 36736 CTy"instruction"), 36737 LU), 36738 qVar"s"), 36739 qVar"s"]))))))), 36740 (Bop(And,Mop(Not,bVar"b'25"), 36741 Bop(And,bVar"b'24", 36742 Bop(And,Mop(Not,bVar"b'23"), 36743 Bop(And,Mop(Not,bVar"b'22"), 36744 bVar"b'20")))), 36745 Let(Var("Rn",F4), 36746 Mop(Cast F4, 36747 LL[bVar"b'19",bVar"b'18", 36748 bVar"b'17",bVar"b'16"]), 36749 Let(Var("M",F1), 36750 Mop(Cast F1,LL[bVar"b'14"]), 36751 Let(Var("P",F1), 36752 Mop(Cast F1,LL[bVar"b'15"]), 36753 Let(TP[Var("v",F4),qVar"s"], 36754 Apply 36755 (Call 36756 ("ThumbCondition", 36757 ATy(qTy,PTy(F4,qTy)), 36758 LU),qVar"state"), 36759 Let(TP[bVar"v",qVar"s"], 36760 Apply 36761 (Call 36762 ("Do", 36763 ATy(qTy, 36764 PTy(bTy,qTy)), 36765 TP[Var("v",F4), 36766 Apply 36767 (Call 36768 ("HaveThumb2", 36769 ATy(qTy, 36770 bTy), 36771 LU), 36772 qVar"s")]), 36773 qVar"s"), 36774 ITE(bVar"v", 36775 Let(Var("registers", 36776 F16), 36777 CC[Var("P",F1), 36778 Var("M",F1), 36779 LW(0,1), 36780 Mop(Cast 36781 (FTy 13), 36782 LL[bVar"b'12", 36783 bVar"b'11", 36784 bVar"b'10", 36785 bVar"b'9", 36786 bVar"b'8", 36787 bVar"b'7", 36788 bVar"b'6", 36789 bVar"b'5", 36790 bVar"b'4", 36791 bVar"b'3", 36792 bVar"b'2", 36793 bVar"b'1", 36794 bVar"b'0"])], 36795 Let(bVar"wback", 36796 EQ(Mop(Cast 36797 F1, 36798 LL[bVar"b'21"]), 36799 LW(1,1)), 36800 TP[Call 36801 ("Load", 36802 CTy"instruction", 36803 Call 36804 ("LoadMultiple", 36805 CTy"Load", 36806 TP[LF, 36807 LT, 36808 bVar"wback", 36809 Var("Rn", 36810 F4), 36811 Var("registers", 36812 F16)])), 36813 ITE(Bop(Or, 36814 EQ(Var("Rn", 36815 F4), 36816 LW(15, 36817 4)), 36818 Bop(Or, 36819 Bop(Lt, 36820 Call 36821 ("BitCount", 36822 nTy, 36823 Var("registers", 36824 F16)), 36825 LN 36826 2), 36827 Bop(Or, 36828 Bop(And, 36829 EQ(Var("P", 36830 F1), 36831 LW(1, 36832 1)), 36833 EQ(Var("M", 36834 F1), 36835 LW(1, 36836 1))), 36837 Bop(Or, 36838 Bop(And, 36839 Bop(Bit, 36840 Var("registers", 36841 F16), 36842 LN 36843 15), 36844 Bop(And, 36845 Apply 36846 (Call 36847 ("InITBlock", 36848 ATy(qTy, 36849 bTy), 36850 LU), 36851 qVar"s"), 36852 Mop(Not, 36853 Apply 36854 (Call 36855 ("LastInITBlock", 36856 ATy(qTy, 36857 bTy), 36858 LU), 36859 qVar"s")))), 36860 Bop(Or, 36861 Bop(And, 36862 bVar"wback", 36863 Bop(Bit, 36864 Var("registers", 36865 F16), 36866 Mop(Cast 36867 nTy, 36868 Var("Rn", 36869 F4)))), 36870 Mop(Not, 36871 EQ(Mop(Cast 36872 F1, 36873 LL[bVar"b'13"]), 36874 LW(0, 36875 1)))))))), 36876 Apply 36877 (Call 36878 ("DECODE_UNPREDICTABLE", 36879 ATy(qTy, 36880 qTy), 36881 TP[Var("mc", 36882 CTy"MachineCode"), 36883 LS 36884 "LoadMultiple"]), 36885 qVar"s"), 36886 qVar"s")])), 36887 TP[Apply 36888 (Call 36889 ("Skip", 36890 ATy(qTy, 36891 CTy"instruction"), 36892 LU), 36893 qVar"s"), 36894 qVar"s"]))))))), 36895 (Bop(And,Mop(Not,bVar"b'25"), 36896 Bop(And,Mop(Not,bVar"b'22"), 36897 Mop(Not,bVar"b'20"))), 36898 Let(Var("op",FTy 2), 36899 Mop(Cast(FTy 2), 36900 LL[bVar"b'24",bVar"b'23"]), 36901 Let(TP[Var("v",F4),qVar"s"], 36902 Apply 36903 (Call 36904 ("ThumbCondition", 36905 ATy(qTy,PTy(F4,qTy)),LU), 36906 qVar"state"), 36907 Let(TP[bVar"v",qVar"s"], 36908 Apply 36909 (Call 36910 ("Do", 36911 ATy(qTy,PTy(bTy,qTy)), 36912 TP[Var("v",F4), 36913 Bop(And, 36914 Bop(In, 36915 Var("op", 36916 FTy 2), 36917 SL[LW(0,2), 36918 LW(3,2)]), 36919 Apply 36920 (Call 36921 ("HaveThumb2", 36922 ATy(qTy,bTy), 36923 LU),qVar"s"))]), 36924 qVar"s"), 36925 ITE(bVar"v", 36926 TP[Call 36927 ("System", 36928 CTy"instruction", 36929 Call 36930 ("StoreReturnState", 36931 CTy"System", 36932 TP[EQ(Var("op", 36933 FTy 2), 36934 LW(3,2)), 36935 LF, 36936 EQ(Mop(Cast F1, 36937 LL[bVar"b'21"]), 36938 LW(1,1)), 36939 Mop(Cast 36940 (FTy 5), 36941 LL[bVar"b'4", 36942 bVar"b'3", 36943 bVar"b'2", 36944 bVar"b'1", 36945 bVar"b'0"])])), 36946 ITE(Bop(Or, 36947 EQ(Apply 36948 (Call 36949 ("CurrentInstrSet", 36950 ATy(qTy, 36951 CTy"InstrSet"), 36952 LU), 36953 qVar"s"), 36954 LC("InstrSet_ThumbEE", 36955 CTy"InstrSet")), 36956 Mop(Not, 36957 Bop(And, 36958 EQ(Mop(Cast 36959 F4, 36960 LL[bVar"b'19", 36961 bVar"b'18", 36962 bVar"b'17", 36963 bVar"b'16"]), 36964 LW(13, 36965 4)), 36966 EQ(Mop(Cast 36967 (FTy 11), 36968 LL[bVar"b'15", 36969 bVar"b'14", 36970 bVar"b'13", 36971 bVar"b'12", 36972 bVar"b'11", 36973 bVar"b'10", 36974 bVar"b'9", 36975 bVar"b'8", 36976 bVar"b'7", 36977 bVar"b'6", 36978 bVar"b'5"]), 36979 LW(1536, 36980 11))))), 36981 Apply 36982 (Call 36983 ("DECODE_UNPREDICTABLE", 36984 ATy(qTy,qTy), 36985 TP[Var("mc", 36986 CTy"MachineCode"), 36987 LS 36988 "StoreReturnState"]), 36989 qVar"s"),qVar"s")], 36990 TP[Apply 36991 (Call 36992 ("Skip", 36993 ATy(qTy, 36994 CTy"instruction"), 36995 LU),qVar"s"), 36996 qVar"s"]))))), 36997 (Bop(And,Mop(Not,bVar"b'25"), 36998 Bop(And,Mop(Not,bVar"b'22"),bVar"b'20")), 36999 Let(Var("Rn",F4), 37000 Mop(Cast F4, 37001 LL[bVar"b'19",bVar"b'18", 37002 bVar"b'17",bVar"b'16"]), 37003 Let(Var("op",FTy 2), 37004 Mop(Cast(FTy 2), 37005 LL[bVar"b'24",bVar"b'23"]), 37006 Let(TP[Var("v",F4),qVar"s"], 37007 Apply 37008 (Call 37009 ("ThumbCondition", 37010 ATy(qTy,PTy(F4,qTy)),LU), 37011 qVar"state"), 37012 Let(TP[bVar"v",qVar"s"], 37013 Apply 37014 (Call 37015 ("Do", 37016 ATy(qTy,PTy(bTy,qTy)), 37017 TP[Var("v",F4), 37018 Bop(And, 37019 Bop(In, 37020 Var("op", 37021 FTy 2), 37022 SL[LW(0,2), 37023 LW(3,2)]), 37024 Apply 37025 (Call 37026 ("HaveThumb2", 37027 ATy(qTy, 37028 bTy), 37029 LU), 37030 qVar"s"))]), 37031 qVar"s"), 37032 ITE(bVar"v", 37033 TP[Call 37034 ("System", 37035 CTy"instruction", 37036 Call 37037 ("ReturnFromException", 37038 CTy"System", 37039 TP[EQ(Var("op", 37040 FTy 2), 37041 LW(3,2)), 37042 LF, 37043 EQ(Mop(Cast 37044 F1, 37045 LL[bVar"b'21"]), 37046 LW(1,1)), 37047 Var("Rn", 37048 F4)])), 37049 ITE(Bop(Or, 37050 EQ(Apply 37051 (Call 37052 ("CurrentInstrSet", 37053 ATy(qTy, 37054 CTy"InstrSet"), 37055 LU), 37056 qVar"s"), 37057 LC("InstrSet_ThumbEE", 37058 CTy"InstrSet")), 37059 Bop(Or, 37060 EQ(Var("Rn", 37061 F4), 37062 LW(15, 37063 4)), 37064 Bop(Or, 37065 Bop(And, 37066 Apply 37067 (Call 37068 ("InITBlock", 37069 ATy(qTy, 37070 bTy), 37071 LU), 37072 qVar"s"), 37073 Mop(Not, 37074 Apply 37075 (Call 37076 ("LastInITBlock", 37077 ATy(qTy, 37078 bTy), 37079 LU), 37080 qVar"s"))), 37081 Mop(Not, 37082 EQ(Mop(Cast 37083 F16, 37084 LL[bVar"b'15", 37085 bVar"b'14", 37086 bVar"b'13", 37087 bVar"b'12", 37088 bVar"b'11", 37089 bVar"b'10", 37090 bVar"b'9", 37091 bVar"b'8", 37092 bVar"b'7", 37093 bVar"b'6", 37094 bVar"b'5", 37095 bVar"b'4", 37096 bVar"b'3", 37097 bVar"b'2", 37098 bVar"b'1", 37099 bVar"b'0"]), 37100 LW(49152, 37101 16)))))), 37102 Apply 37103 (Call 37104 ("DECODE_UNPREDICTABLE", 37105 ATy(qTy, 37106 qTy), 37107 TP[Var("mc", 37108 CTy"MachineCode"), 37109 LS 37110 "ReturnFromException"]), 37111 qVar"s"), 37112 qVar"s")], 37113 TP[Apply 37114 (Call 37115 ("Skip", 37116 ATy(qTy, 37117 CTy"instruction"), 37118 LU),qVar"s"), 37119 qVar"s"])))))), 37120 (Bop(And,Mop(Not,bVar"b'25"), 37121 Bop(And,Mop(Not,bVar"b'24"), 37122 Bop(And,Mop(Not,bVar"b'23"), 37123 Bop(And,bVar"b'22", 37124 Bop(And, 37125 Mop(Not,bVar"b'21"), 37126 Mop(Not,bVar"b'20")))))), 37127 Let(Var("Rn",F4), 37128 Mop(Cast F4, 37129 LL[bVar"b'19",bVar"b'18", 37130 bVar"b'17",bVar"b'16"]), 37131 Let(Var("Rd",F4), 37132 Mop(Cast F4, 37133 LL[bVar"b'11",bVar"b'10", 37134 bVar"b'9",bVar"b'8"]), 37135 Let(Var("Rt",F4), 37136 Mop(Cast F4, 37137 LL[bVar"b'15",bVar"b'14", 37138 bVar"b'13",bVar"b'12"]), 37139 Let(TP[Var("v",F4),qVar"s"], 37140 Apply 37141 (Call 37142 ("ThumbCondition", 37143 ATy(qTy,PTy(F4,qTy)), 37144 LU),qVar"state"), 37145 Let(TP[bVar"v",qVar"s"], 37146 Apply 37147 (Call 37148 ("Do", 37149 ATy(qTy, 37150 PTy(bTy,qTy)), 37151 TP[Var("v",F4), 37152 Apply 37153 (Call 37154 ("HaveThumb2", 37155 ATy(qTy, 37156 bTy), 37157 LU), 37158 qVar"s")]), 37159 qVar"s"), 37160 ITE(bVar"v", 37161 TP[Call 37162 ("Store", 37163 CTy"instruction", 37164 Call 37165 ("StoreExclusive", 37166 CTy"Store", 37167 TP[Var("Rd", 37168 F4), 37169 Var("Rt", 37170 F4), 37171 Var("Rn", 37172 F4), 37173 Mop(Cast 37174 F32, 37175 CC[Mop(Cast 37176 F8, 37177 LL[bVar"b'7", 37178 bVar"b'6", 37179 bVar"b'5", 37180 bVar"b'4", 37181 bVar"b'3", 37182 bVar"b'2", 37183 bVar"b'1", 37184 bVar"b'0"]), 37185 LW(0, 37186 2)])])), 37187 ITE(Bop(Or, 37188 Bop(In, 37189 Var("Rd", 37190 F4), 37191 SL[LW(13, 37192 4), 37193 LW(15, 37194 4)]), 37195 Bop(Or, 37196 Bop(In, 37197 Var("Rt", 37198 F4), 37199 SL[LW(13, 37200 4), 37201 LW(15, 37202 4)]), 37203 Bop(Or, 37204 EQ(Var("Rn", 37205 F4), 37206 LW(15, 37207 4)), 37208 Bop(Or, 37209 EQ(Var("Rd", 37210 F4), 37211 Var("Rn", 37212 F4)), 37213 EQ(Var("Rd", 37214 F4), 37215 Var("Rt", 37216 F4)))))), 37217 Apply 37218 (Call 37219 ("DECODE_UNPREDICTABLE", 37220 ATy(qTy, 37221 qTy), 37222 TP[Var("mc", 37223 CTy"MachineCode"), 37224 LS 37225 "StoreExclusive"]), 37226 qVar"s"), 37227 qVar"s")], 37228 TP[Apply 37229 (Call 37230 ("Skip", 37231 ATy(qTy, 37232 CTy"instruction"), 37233 LU), 37234 qVar"s"), 37235 qVar"s"]))))))), 37236 (Bop(And,Mop(Not,bVar"b'25"), 37237 Bop(And,Mop(Not,bVar"b'24"), 37238 Bop(And,Mop(Not,bVar"b'23"), 37239 Bop(And,bVar"b'22", 37240 Bop(And, 37241 Mop(Not,bVar"b'21"), 37242 bVar"b'20"))))), 37243 Let(Var("Rn",F4), 37244 Mop(Cast F4, 37245 LL[bVar"b'19",bVar"b'18", 37246 bVar"b'17",bVar"b'16"]), 37247 Let(Var("Rt",F4), 37248 Mop(Cast F4, 37249 LL[bVar"b'15",bVar"b'14", 37250 bVar"b'13",bVar"b'12"]), 37251 Let(TP[Var("v",F4),qVar"s"], 37252 Apply 37253 (Call 37254 ("ThumbCondition", 37255 ATy(qTy,PTy(F4,qTy)),LU), 37256 qVar"state"), 37257 Let(TP[bVar"v",qVar"s"], 37258 Apply 37259 (Call 37260 ("Do", 37261 ATy(qTy,PTy(bTy,qTy)), 37262 TP[Var("v",F4), 37263 Apply 37264 (Call 37265 ("HaveThumb2", 37266 ATy(qTy,bTy), 37267 LU),qVar"s")]), 37268 qVar"s"), 37269 ITE(bVar"v", 37270 TP[Call 37271 ("Load", 37272 CTy"instruction", 37273 Call 37274 ("LoadExclusive", 37275 CTy"Load", 37276 TP[Var("Rt", 37277 F4), 37278 Var("Rn", 37279 F4), 37280 Mop(Cast 37281 F32, 37282 CC[Mop(Cast 37283 F8, 37284 LL[bVar"b'7", 37285 bVar"b'6", 37286 bVar"b'5", 37287 bVar"b'4", 37288 bVar"b'3", 37289 bVar"b'2", 37290 bVar"b'1", 37291 bVar"b'0"]), 37292 LW(0, 37293 2)])])), 37294 ITE(Bop(Or, 37295 Bop(In, 37296 Var("Rt", 37297 F4), 37298 SL[LW(13, 37299 4), 37300 LW(15, 37301 4)]), 37302 EQ(Var("Rn", 37303 F4), 37304 LW(15,4))), 37305 Apply 37306 (Call 37307 ("DECODE_UNPREDICTABLE", 37308 ATy(qTy, 37309 qTy), 37310 TP[Var("mc", 37311 CTy"MachineCode"), 37312 LS 37313 "StoreExclusive"]), 37314 qVar"s"), 37315 qVar"s")], 37316 TP[Apply 37317 (Call 37318 ("Skip", 37319 ATy(qTy, 37320 CTy"instruction"), 37321 LU),qVar"s"), 37322 qVar"s"])))))), 37323 (Bop(And,Mop(Not,bVar"b'25"), 37324 Bop(And,Mop(Not,bVar"b'24"), 37325 Bop(And,bVar"b'23", 37326 Bop(And,bVar"b'22", 37327 Bop(And, 37328 Mop(Not,bVar"b'21"), 37329 Bop(And, 37330 Mop(Not,bVar"b'20"), 37331 Bop(And, 37332 Mop(Not, 37333 bVar"b'7"), 37334 Bop(And, 37335 bVar"b'6", 37336 Mop(Not, 37337 bVar"b'5"))))))))), 37338 Let(Var("Rn",F4), 37339 Mop(Cast F4, 37340 LL[bVar"b'19",bVar"b'18", 37341 bVar"b'17",bVar"b'16"]), 37342 Let(Var("Rd",F4), 37343 Mop(Cast F4, 37344 LL[bVar"b'3",bVar"b'2", 37345 bVar"b'1",bVar"b'0"]), 37346 Let(Var("Rt",F4), 37347 Mop(Cast F4, 37348 LL[bVar"b'15",bVar"b'14", 37349 bVar"b'13",bVar"b'12"]), 37350 Let(TP[Var("v",F4),qVar"s"], 37351 Apply 37352 (Call 37353 ("ThumbCondition", 37354 ATy(qTy,PTy(F4,qTy)), 37355 LU),qVar"state"), 37356 Let(TP[bVar"v",qVar"s"], 37357 Apply 37358 (Call 37359 ("Do", 37360 ATy(qTy, 37361 PTy(bTy,qTy)), 37362 TP[Var("v",F4), 37363 Bop(Ge, 37364 Apply 37365 (Call 37366 ("ArchVersion", 37367 ATy(qTy, 37368 nTy), 37369 LU), 37370 qVar"s"), 37371 LN 7)]), 37372 qVar"s"), 37373 ITE(bVar"v", 37374 TP[ITE(EQ(Mop(Cast 37375 F1, 37376 LL[bVar"b'4"]), 37377 LW(1,1)), 37378 Call 37379 ("Store", 37380 CTy"instruction", 37381 Call 37382 ("StoreExclusiveHalf", 37383 CTy"Store", 37384 TP[Var("Rd", 37385 F4), 37386 Var("Rt", 37387 F4), 37388 Var("Rn", 37389 F4)])), 37390 Call 37391 ("Store", 37392 CTy"instruction", 37393 Call 37394 ("StoreExclusiveByte", 37395 CTy"Store", 37396 TP[Var("Rd", 37397 F4), 37398 Var("Rt", 37399 F4), 37400 Var("Rn", 37401 F4)]))), 37402 ITE(Bop(Or, 37403 Bop(In, 37404 Var("Rd", 37405 F4), 37406 SL[LW(13, 37407 4), 37408 LW(15, 37409 4)]), 37410 Bop(Or, 37411 Bop(In, 37412 Var("Rt", 37413 F4), 37414 SL[LW(13, 37415 4), 37416 LW(15, 37417 4)]), 37418 Bop(Or, 37419 EQ(Var("Rn", 37420 F4), 37421 LW(15, 37422 4)), 37423 Bop(Or, 37424 EQ(Var("Rd", 37425 F4), 37426 Var("Rn", 37427 F4)), 37428 Bop(Or, 37429 EQ(Var("Rd", 37430 F4), 37431 Var("Rt", 37432 F4)), 37433 Mop(Not, 37434 EQ(Mop(Cast 37435 F4, 37436 LL[bVar"b'11", 37437 bVar"b'10", 37438 bVar"b'9", 37439 bVar"b'8"]), 37440 LW(15, 37441 4)))))))), 37442 Apply 37443 (Call 37444 ("DECODE_UNPREDICTABLE", 37445 ATy(qTy, 37446 qTy), 37447 TP[Var("mc", 37448 CTy"MachineCode"), 37449 LS 37450 "StoreExclusive: Byte or Halfword"]), 37451 qVar"s"), 37452 qVar"s")], 37453 TP[Apply 37454 (Call 37455 ("Skip", 37456 ATy(qTy, 37457 CTy"instruction"), 37458 LU), 37459 qVar"s"), 37460 qVar"s"]))))))), 37461 (Bop(And,Mop(Not,bVar"b'25"), 37462 Bop(And,Mop(Not,bVar"b'24"), 37463 Bop(And,bVar"b'23", 37464 Bop(And,bVar"b'22", 37465 Bop(And, 37466 Mop(Not,bVar"b'21"), 37467 Bop(And, 37468 Mop(Not,bVar"b'20"), 37469 Bop(And, 37470 Mop(Not, 37471 bVar"b'7"), 37472 Bop(And, 37473 bVar"b'6", 37474 Bop(And, 37475 bVar"b'5", 37476 bVar"b'4"))))))))), 37477 Let(Var("Rn",F4), 37478 Mop(Cast F4, 37479 LL[bVar"b'19",bVar"b'18", 37480 bVar"b'17",bVar"b'16"]), 37481 Let(Var("Rd",F4), 37482 Mop(Cast F4, 37483 LL[bVar"b'3",bVar"b'2", 37484 bVar"b'1",bVar"b'0"]), 37485 Let(Var("Rt2",F4), 37486 Mop(Cast F4, 37487 LL[bVar"b'11",bVar"b'10", 37488 bVar"b'9",bVar"b'8"]), 37489 Let(Var("Rt",F4), 37490 Mop(Cast F4, 37491 LL[bVar"b'15", 37492 bVar"b'14", 37493 bVar"b'13", 37494 bVar"b'12"]), 37495 Let(TP[Var("v",F4),qVar"s"], 37496 Apply 37497 (Call 37498 ("ThumbCondition", 37499 ATy(qTy, 37500 PTy(F4,qTy)), 37501 LU),qVar"state"), 37502 Let(TP[bVar"v",qVar"s"], 37503 Apply 37504 (Call 37505 ("Do", 37506 ATy(qTy, 37507 PTy(bTy, 37508 qTy)), 37509 TP[Var("v", 37510 F4), 37511 Bop(Ge, 37512 Apply 37513 (Call 37514 ("ArchVersion", 37515 ATy(qTy, 37516 nTy), 37517 LU), 37518 qVar"s"), 37519 LN 7)]), 37520 qVar"s"), 37521 ITE(bVar"v", 37522 TP[Call 37523 ("Store", 37524 CTy"instruction", 37525 Call 37526 ("StoreExclusiveDoubleword", 37527 CTy"Store", 37528 TP[Var("Rd", 37529 F4), 37530 Var("Rt", 37531 F4), 37532 Var("Rt2", 37533 F4), 37534 Var("Rn", 37535 F4)])), 37536 ITE(Bop(Or, 37537 Bop(In, 37538 Var("Rd", 37539 F4), 37540 SL[LW(13, 37541 4), 37542 LW(15, 37543 4)]), 37544 Bop(Or, 37545 Bop(In, 37546 Var("Rt", 37547 F4), 37548 SL[LW(13, 37549 4), 37550 LW(15, 37551 4)]), 37552 Bop(Or, 37553 Bop(In, 37554 Var("Rt2", 37555 F4), 37556 SL[LW(13, 37557 4), 37558 LW(15, 37559 4)]), 37560 Bop(Or, 37561 EQ(Var("Rn", 37562 F4), 37563 LW(15, 37564 4)), 37565 Bop(Or, 37566 EQ(Var("Rd", 37567 F4), 37568 Var("Rn", 37569 F4)), 37570 EQ(Var("Rd", 37571 F4), 37572 Var("Rt", 37573 F4))))))), 37574 Apply 37575 (Call 37576 ("DECODE_UNPREDICTABLE", 37577 ATy(qTy, 37578 qTy), 37579 TP[Var("mc", 37580 CTy"MachineCode"), 37581 LS 37582 "StoreExclusivDoubleword"]), 37583 qVar"s"), 37584 qVar"s")], 37585 TP[Apply 37586 (Call 37587 ("Skip", 37588 ATy(qTy, 37589 CTy"instruction"), 37590 LU), 37591 qVar"s"), 37592 qVar"s"])))))))), 37593 (Bop(And,Mop(Not,bVar"b'25"), 37594 Bop(And,Mop(Not,bVar"b'24"), 37595 Bop(And,bVar"b'23", 37596 Bop(And,bVar"b'22", 37597 Bop(And, 37598 Mop(Not,bVar"b'21"), 37599 Bop(And,bVar"b'20", 37600 Bop(And, 37601 Mop(Not, 37602 bVar"b'7"), 37603 Bop(And, 37604 Mop(Not, 37605 bVar"b'6"), 37606 Mop(Not, 37607 bVar"b'5"))))))))), 37608 Let(Var("Rn",F4), 37609 Mop(Cast F4, 37610 LL[bVar"b'19",bVar"b'18", 37611 bVar"b'17",bVar"b'16"]), 37612 Let(Var("Rm",F4), 37613 Mop(Cast F4, 37614 LL[bVar"b'3",bVar"b'2", 37615 bVar"b'1",bVar"b'0"]), 37616 Let(TP[Var("v",F4),qVar"s"], 37617 Apply 37618 (Call 37619 ("ThumbCondition", 37620 ATy(qTy,PTy(F4,qTy)),LU), 37621 qVar"state"), 37622 Let(TP[bVar"v",qVar"s"], 37623 Apply 37624 (Call 37625 ("Do", 37626 ATy(qTy,PTy(bTy,qTy)), 37627 TP[Var("v",F4), 37628 Apply 37629 (Call 37630 ("HaveThumb2", 37631 ATy(qTy,bTy), 37632 LU),qVar"s")]), 37633 qVar"s"), 37634 ITE(bVar"v", 37635 TP[Call 37636 ("Branch", 37637 CTy"instruction", 37638 Call 37639 ("TableBranchByte", 37640 CTy"Branch", 37641 TP[EQ(Mop(Cast 37642 F1, 37643 LL[bVar"b'4"]), 37644 LW(1,1)), 37645 Var("Rm", 37646 F4), 37647 Var("Rn", 37648 F4)])), 37649 ITE(Bop(Or, 37650 EQ(Var("Rn", 37651 F4), 37652 LW(13,4)), 37653 Bop(Or, 37654 Bop(In, 37655 Var("Rm", 37656 F4), 37657 SL[LW(13, 37658 4), 37659 LW(15, 37660 4)]), 37661 Bop(Or, 37662 Bop(And, 37663 Apply 37664 (Call 37665 ("InITBlock", 37666 ATy(qTy, 37667 bTy), 37668 LU), 37669 qVar"s"), 37670 Mop(Not, 37671 Apply 37672 (Call 37673 ("LastInITBlock", 37674 ATy(qTy, 37675 bTy), 37676 LU), 37677 qVar"s"))), 37678 Mop(Not, 37679 Bop(And, 37680 EQ(Mop(Cast 37681 F4, 37682 LL[bVar"b'15", 37683 bVar"b'14", 37684 bVar"b'13", 37685 bVar"b'12"]), 37686 LW(15, 37687 4)), 37688 EQ(Mop(Cast 37689 F4, 37690 LL[bVar"b'11", 37691 bVar"b'10", 37692 bVar"b'9", 37693 bVar"b'8"]), 37694 LW(0, 37695 4))))))), 37696 Apply 37697 (Call 37698 ("DECODE_UNPREDICTABLE", 37699 ATy(qTy, 37700 qTy), 37701 TP[Var("mc", 37702 CTy"MachineCode"), 37703 LS 37704 "TableBranchByte"]), 37705 qVar"s"), 37706 qVar"s")], 37707 TP[Apply 37708 (Call 37709 ("Skip", 37710 ATy(qTy, 37711 CTy"instruction"), 37712 LU),qVar"s"), 37713 qVar"s"])))))), 37714 (Bop(And,Mop(Not,bVar"b'25"), 37715 Bop(And,Mop(Not,bVar"b'24"), 37716 Bop(And,bVar"b'23", 37717 Bop(And,bVar"b'22", 37718 Bop(And, 37719 Mop(Not,bVar"b'21"), 37720 Bop(And,bVar"b'20", 37721 Bop(And, 37722 Mop(Not, 37723 bVar"b'7"), 37724 Bop(And, 37725 bVar"b'6", 37726 Mop(Not, 37727 bVar"b'5"))))))))), 37728 Let(Var("Rn",F4), 37729 Mop(Cast F4, 37730 LL[bVar"b'19",bVar"b'18", 37731 bVar"b'17",bVar"b'16"]), 37732 Let(Var("Rt",F4), 37733 Mop(Cast F4, 37734 LL[bVar"b'15",bVar"b'14", 37735 bVar"b'13",bVar"b'12"]), 37736 Let(TP[Var("v",F4),qVar"s"], 37737 Apply 37738 (Call 37739 ("ThumbCondition", 37740 ATy(qTy,PTy(F4,qTy)),LU), 37741 qVar"state"), 37742 Let(TP[bVar"v",qVar"s"], 37743 Apply 37744 (Call 37745 ("Do", 37746 ATy(qTy,PTy(bTy,qTy)), 37747 TP[Var("v",F4), 37748 Bop(Ge, 37749 Apply 37750 (Call 37751 ("ArchVersion", 37752 ATy(qTy, 37753 nTy), 37754 LU), 37755 qVar"s"), 37756 LN 7)]), 37757 qVar"s"), 37758 ITE(bVar"v", 37759 TP[ITE(EQ(Mop(Cast F1, 37760 LL[bVar"b'4"]), 37761 LW(1,1)), 37762 Call 37763 ("Load", 37764 CTy"instruction", 37765 Call 37766 ("LoadExclusiveHalf", 37767 CTy"Load", 37768 TP[Var("Rt", 37769 F4), 37770 Var("Rn", 37771 F4)])), 37772 Call 37773 ("Load", 37774 CTy"instruction", 37775 Call 37776 ("LoadExclusiveByte", 37777 CTy"Load", 37778 TP[Var("Rt", 37779 F4), 37780 Var("Rn", 37781 F4)]))), 37782 ITE(Bop(Or, 37783 Bop(In, 37784 Var("Rt", 37785 F4), 37786 SL[LW(13, 37787 4), 37788 LW(15, 37789 4)]), 37790 Bop(Or, 37791 EQ(Var("Rn", 37792 F4), 37793 LW(15, 37794 4)), 37795 Mop(Not, 37796 EQ(Mop(Cast 37797 F4, 37798 LL[bVar"b'11", 37799 bVar"b'10", 37800 bVar"b'9", 37801 bVar"b'8"]), 37802 LW(15, 37803 4))))), 37804 Apply 37805 (Call 37806 ("DECODE_UNPREDICTABLE", 37807 ATy(qTy, 37808 qTy), 37809 TP[Var("mc", 37810 CTy"MachineCode"), 37811 LS 37812 "LoadExclusive: Byte or Halfword"]), 37813 qVar"s"), 37814 qVar"s")], 37815 TP[Apply 37816 (Call 37817 ("Skip", 37818 ATy(qTy, 37819 CTy"instruction"), 37820 LU),qVar"s"), 37821 qVar"s"])))))), 37822 (Bop(And,Mop(Not,bVar"b'25"), 37823 Bop(And,Mop(Not,bVar"b'24"), 37824 Bop(And,bVar"b'23", 37825 Bop(And,bVar"b'22", 37826 Bop(And, 37827 Mop(Not,bVar"b'21"), 37828 Bop(And,bVar"b'20", 37829 Bop(And, 37830 Mop(Not, 37831 bVar"b'7"), 37832 Bop(And, 37833 bVar"b'6", 37834 Bop(And, 37835 bVar"b'5", 37836 bVar"b'4"))))))))), 37837 Let(Var("Rn",F4), 37838 Mop(Cast F4, 37839 LL[bVar"b'19",bVar"b'18", 37840 bVar"b'17",bVar"b'16"]), 37841 Let(Var("Rt2",F4), 37842 Mop(Cast F4, 37843 LL[bVar"b'11",bVar"b'10", 37844 bVar"b'9",bVar"b'8"]), 37845 Let(Var("Rt",F4), 37846 Mop(Cast F4, 37847 LL[bVar"b'15",bVar"b'14", 37848 bVar"b'13",bVar"b'12"]), 37849 Let(TP[Var("v",F4),qVar"s"], 37850 Apply 37851 (Call 37852 ("ThumbCondition", 37853 ATy(qTy,PTy(F4,qTy)), 37854 LU),qVar"state"), 37855 Let(TP[bVar"v",qVar"s"], 37856 Apply 37857 (Call 37858 ("Do", 37859 ATy(qTy, 37860 PTy(bTy,qTy)), 37861 TP[Var("v",F4), 37862 Bop(Ge, 37863 Apply 37864 (Call 37865 ("ArchVersion", 37866 ATy(qTy, 37867 nTy), 37868 LU), 37869 qVar"s"), 37870 LN 7)]), 37871 qVar"s"), 37872 ITE(bVar"v", 37873 TP[Call 37874 ("Load", 37875 CTy"instruction", 37876 Call 37877 ("LoadExclusiveDoubleword", 37878 CTy"Load", 37879 TP[Var("Rt", 37880 F4), 37881 Var("Rt2", 37882 F4), 37883 Var("Rn", 37884 F4)])), 37885 ITE(Bop(Or, 37886 Bop(In, 37887 Var("Rt", 37888 F4), 37889 SL[LW(13, 37890 4), 37891 LW(15, 37892 4)]), 37893 Bop(Or, 37894 Bop(In, 37895 Var("Rt2", 37896 F4), 37897 SL[LW(13, 37898 4), 37899 LW(15, 37900 4)]), 37901 Bop(Or, 37902 EQ(Var("Rt", 37903 F4), 37904 Var("Rt2", 37905 F4)), 37906 Bop(Or, 37907 EQ(Var("Rn", 37908 F4), 37909 LW(15, 37910 4)), 37911 Mop(Not, 37912 EQ(Mop(Cast 37913 F4, 37914 LL[bVar"b'3", 37915 bVar"b'2", 37916 bVar"b'1", 37917 bVar"b'0"]), 37918 LW(15, 37919 4))))))), 37920 Apply 37921 (Call 37922 ("DECODE_UNPREDICTABLE", 37923 ATy(qTy, 37924 qTy), 37925 TP[Var("mc", 37926 CTy"MachineCode"), 37927 LS 37928 "LoadExclusiveDoubleword"]), 37929 qVar"s"), 37930 qVar"s")], 37931 TP[Apply 37932 (Call 37933 ("Skip", 37934 ATy(qTy, 37935 CTy"instruction"), 37936 LU), 37937 qVar"s"), 37938 qVar"s"]))))))), 37939 (Bop(And,Mop(Not,bVar"b'25"), 37940 Bop(And,bVar"b'22",Mop(Not,bVar"b'20"))), 37941 Let(Var("Rn",F4), 37942 Mop(Cast F4, 37943 LL[bVar"b'19",bVar"b'18", 37944 bVar"b'17",bVar"b'16"]), 37945 Let(Var("W",F1), 37946 Mop(Cast F1,LL[bVar"b'21"]), 37947 Let(Var("P",F1), 37948 Mop(Cast F1,LL[bVar"b'24"]), 37949 Let(Var("Rt2",F4), 37950 Mop(Cast F4, 37951 LL[bVar"b'11", 37952 bVar"b'10", 37953 bVar"b'9",bVar"b'8"]), 37954 Let(Var("Rt",F4), 37955 Mop(Cast F4, 37956 LL[bVar"b'15", 37957 bVar"b'14", 37958 bVar"b'13", 37959 bVar"b'12"]), 37960 Let(TP[Var("v",F4), 37961 qVar"s"], 37962 Apply 37963 (Call 37964 ("ThumbCondition", 37965 ATy(qTy, 37966 PTy(F4, 37967 qTy)), 37968 LU), 37969 qVar"state"), 37970 Let(TP[bVar"v", 37971 qVar"s"], 37972 Apply 37973 (Call 37974 ("Do", 37975 ATy(qTy, 37976 PTy(bTy, 37977 qTy)), 37978 TP[Var("v", 37979 F4), 37980 Bop(And, 37981 Bop(Or, 37982 EQ(Var("P", 37983 F1), 37984 LW(1, 37985 1)), 37986 EQ(Var("W", 37987 F1), 37988 LW(1, 37989 1))), 37990 Apply 37991 (Call 37992 ("HaveThumb2", 37993 ATy(qTy, 37994 bTy), 37995 LU), 37996 qVar"s"))]), 37997 qVar"s"), 37998 ITE(bVar"v", 37999 Let(bVar"wback", 38000 EQ(Var("W", 38001 F1), 38002 LW(1, 38003 1)), 38004 TP[Call 38005 ("Store", 38006 CTy"instruction", 38007 Call 38008 ("StoreDual", 38009 CTy"Store", 38010 TP[EQ(Mop(Cast 38011 F1, 38012 LL[bVar"b'23"]), 38013 LW(1, 38014 1)), 38015 EQ(Var("P", 38016 F1), 38017 LW(1, 38018 1)), 38019 bVar"wback", 38020 Var("Rt", 38021 F4), 38022 Var("Rt2", 38023 F4), 38024 Var("Rn", 38025 F4), 38026 Call 38027 ("immediate_form2", 38028 CTy"offset2", 38029 Mop(Cast 38030 F32, 38031 CC[Mop(Cast 38032 F8, 38033 LL[bVar"b'7", 38034 bVar"b'6", 38035 bVar"b'5", 38036 bVar"b'4", 38037 bVar"b'3", 38038 bVar"b'2", 38039 bVar"b'1", 38040 bVar"b'0"]), 38041 LW(0, 38042 2)]))])), 38043 ITE(Bop(Or, 38044 Bop(And, 38045 bVar"wback", 38046 Bop(Or, 38047 EQ(Var("Rn", 38048 F4), 38049 Var("Rt", 38050 F4)), 38051 EQ(Var("Rn", 38052 F4), 38053 Var("Rt2", 38054 F4)))), 38055 Bop(Or, 38056 EQ(Var("Rn", 38057 F4), 38058 LW(15, 38059 4)), 38060 Bop(Or, 38061 Bop(In, 38062 Var("Rt", 38063 F4), 38064 SL[LW(13, 38065 4), 38066 LW(15, 38067 4)]), 38068 Bop(In, 38069 Var("Rt2", 38070 F4), 38071 SL[LW(13, 38072 4), 38073 LW(15, 38074 4)])))), 38075 Apply 38076 (Call 38077 ("DECODE_UNPREDICTABLE", 38078 ATy(qTy, 38079 qTy), 38080 TP[Var("mc", 38081 CTy"MachineCode"), 38082 LS 38083 "StoreDual"]), 38084 qVar"s"), 38085 qVar"s")]), 38086 TP[Apply 38087 (Call 38088 ("Skip", 38089 ATy(qTy, 38090 CTy"instruction"), 38091 LU), 38092 qVar"s"), 38093 qVar"s"]))))))))), 38094 (Bop(And,Mop(Not,bVar"b'25"), 38095 Bop(And,bVar"b'22", 38096 Bop(And,bVar"b'20", 38097 Bop(And,bVar"b'19", 38098 Bop(And,bVar"b'18", 38099 Bop(And,bVar"b'17", 38100 bVar"b'16")))))), 38101 Let(Var("W",F1), 38102 Mop(Cast F1,LL[bVar"b'21"]), 38103 Let(Var("Rt2",F4), 38104 Mop(Cast F4, 38105 LL[bVar"b'11",bVar"b'10", 38106 bVar"b'9",bVar"b'8"]), 38107 Let(Var("Rt",F4), 38108 Mop(Cast F4, 38109 LL[bVar"b'15",bVar"b'14", 38110 bVar"b'13",bVar"b'12"]), 38111 Let(TP[Var("v",F4),qVar"s"], 38112 Apply 38113 (Call 38114 ("ThumbCondition", 38115 ATy(qTy,PTy(F4,qTy)), 38116 LU),qVar"state"), 38117 Let(TP[bVar"v",qVar"s"], 38118 Apply 38119 (Call 38120 ("Do", 38121 ATy(qTy, 38122 PTy(bTy,qTy)), 38123 TP[Var("v",F4), 38124 Bop(And, 38125 Bop(Or, 38126 EQ(Mop(Cast 38127 F1, 38128 LL[bVar"b'24"]), 38129 LW(1, 38130 1)), 38131 EQ(Var("W", 38132 F1), 38133 LW(1, 38134 1))), 38135 Apply 38136 (Call 38137 ("HaveThumb2", 38138 ATy(qTy, 38139 bTy), 38140 LU), 38141 qVar"s"))]), 38142 qVar"s"), 38143 ITE(bVar"v", 38144 TP[Call 38145 ("Load", 38146 CTy"instruction", 38147 Call 38148 ("LoadDualLiteral", 38149 CTy"Load", 38150 TP[EQ(Mop(Cast 38151 F1, 38152 LL[bVar"b'23"]), 38153 LW(1, 38154 1)), 38155 Var("Rt", 38156 F4), 38157 Var("Rt2", 38158 F4), 38159 Mop(Cast 38160 F32, 38161 CC[Mop(Cast 38162 F8, 38163 LL[bVar"b'7", 38164 bVar"b'6", 38165 bVar"b'5", 38166 bVar"b'4", 38167 bVar"b'3", 38168 bVar"b'2", 38169 bVar"b'1", 38170 bVar"b'0"]), 38171 LW(0, 38172 2)])])), 38173 ITE(Bop(Or, 38174 Bop(In, 38175 Var("Rt", 38176 F4), 38177 SL[LW(13, 38178 4), 38179 LW(15, 38180 4)]), 38181 Bop(Or, 38182 Bop(In, 38183 Var("Rt2", 38184 F4), 38185 SL[LW(13, 38186 4), 38187 LW(15, 38188 4)]), 38189 Bop(Or, 38190 EQ(Var("Rt", 38191 F4), 38192 Var("Rt2", 38193 F4)), 38194 EQ(Var("W", 38195 F1), 38196 LW(1, 38197 1))))), 38198 Apply 38199 (Call 38200 ("DECODE_UNPREDICTABLE", 38201 ATy(qTy, 38202 qTy), 38203 TP[Var("mc", 38204 CTy"MachineCode"), 38205 LS 38206 "LoadDual: literal"]), 38207 qVar"s"), 38208 qVar"s")], 38209 TP[Apply 38210 (Call 38211 ("Skip", 38212 ATy(qTy, 38213 CTy"instruction"), 38214 LU), 38215 qVar"s"), 38216 qVar"s"]))))))), 38217 (Bop(And,Mop(Not,bVar"b'25"), 38218 Bop(And,bVar"b'22",bVar"b'20")), 38219 Let(Var("Rn",F4), 38220 Mop(Cast F4, 38221 LL[bVar"b'19",bVar"b'18", 38222 bVar"b'17",bVar"b'16"]), 38223 Let(Var("W",F1), 38224 Mop(Cast F1,LL[bVar"b'21"]), 38225 Let(Var("P",F1), 38226 Mop(Cast F1,LL[bVar"b'24"]), 38227 Let(Var("Rt2",F4), 38228 Mop(Cast F4, 38229 LL[bVar"b'11", 38230 bVar"b'10", 38231 bVar"b'9",bVar"b'8"]), 38232 Let(Var("Rt",F4), 38233 Mop(Cast F4, 38234 LL[bVar"b'15", 38235 bVar"b'14", 38236 bVar"b'13", 38237 bVar"b'12"]), 38238 Let(TP[Var("v",F4), 38239 qVar"s"], 38240 Apply 38241 (Call 38242 ("ThumbCondition", 38243 ATy(qTy, 38244 PTy(F4, 38245 qTy)), 38246 LU), 38247 qVar"state"), 38248 Let(TP[bVar"v", 38249 qVar"s"], 38250 Apply 38251 (Call 38252 ("Do", 38253 ATy(qTy, 38254 PTy(bTy, 38255 qTy)), 38256 TP[Var("v", 38257 F4), 38258 Bop(And, 38259 Bop(Or, 38260 EQ(Var("P", 38261 F1), 38262 LW(1, 38263 1)), 38264 EQ(Var("W", 38265 F1), 38266 LW(1, 38267 1))), 38268 Apply 38269 (Call 38270 ("HaveThumb2", 38271 ATy(qTy, 38272 bTy), 38273 LU), 38274 qVar"s"))]), 38275 qVar"s"), 38276 ITE(bVar"v", 38277 Let(bVar"wback", 38278 EQ(Var("W", 38279 F1), 38280 LW(1, 38281 1)), 38282 TP[Call 38283 ("Load", 38284 CTy"instruction", 38285 Call 38286 ("LoadDual", 38287 CTy"Load", 38288 TP[EQ(Mop(Cast 38289 F1, 38290 LL[bVar"b'23"]), 38291 LW(1, 38292 1)), 38293 EQ(Var("P", 38294 F1), 38295 LW(1, 38296 1)), 38297 bVar"wback", 38298 Var("Rt", 38299 F4), 38300 Var("Rt2", 38301 F4), 38302 Var("Rn", 38303 F4), 38304 Call 38305 ("immediate_form2", 38306 CTy"offset2", 38307 Mop(Cast 38308 F32, 38309 CC[Mop(Cast 38310 F8, 38311 LL[bVar"b'7", 38312 bVar"b'6", 38313 bVar"b'5", 38314 bVar"b'4", 38315 bVar"b'3", 38316 bVar"b'2", 38317 bVar"b'1", 38318 bVar"b'0"]), 38319 LW(0, 38320 2)]))])), 38321 ITE(Bop(Or, 38322 Bop(And, 38323 bVar"wback", 38324 Bop(Or, 38325 EQ(Var("Rn", 38326 F4), 38327 Var("Rt", 38328 F4)), 38329 EQ(Var("Rn", 38330 F4), 38331 Var("Rt2", 38332 F4)))), 38333 Bop(Or, 38334 Bop(In, 38335 Var("Rt", 38336 F4), 38337 SL[LW(13, 38338 4), 38339 LW(15, 38340 4)]), 38341 Bop(Or, 38342 Bop(In, 38343 Var("Rt2", 38344 F4), 38345 SL[LW(13, 38346 4), 38347 LW(15, 38348 4)]), 38349 EQ(Var("Rt", 38350 F4), 38351 Var("Rt2", 38352 F4))))), 38353 Apply 38354 (Call 38355 ("DECODE_UNPREDICTABLE", 38356 ATy(qTy, 38357 qTy), 38358 TP[Var("mc", 38359 CTy"MachineCode"), 38360 LS 38361 "LoadDual"]), 38362 qVar"s"), 38363 qVar"s")]), 38364 TP[Apply 38365 (Call 38366 ("Skip", 38367 ATy(qTy, 38368 CTy"instruction"), 38369 LU), 38370 qVar"s"), 38371 qVar"s"]))))))))), 38372 (bVar"b'25", 38373 Let(Var("Rn",F4), 38374 Mop(Cast F4, 38375 LL[bVar"b'19",bVar"b'18", 38376 bVar"b'17",bVar"b'16"]), 38377 Let(Var("S",F1), 38378 Mop(Cast F1,LL[bVar"b'20"]), 38379 Let(Var("Rm",F4), 38380 Mop(Cast F4, 38381 LL[bVar"b'3",bVar"b'2", 38382 bVar"b'1",bVar"b'0"]), 38383 Let(Var("typ",FTy 2), 38384 Mop(Cast(FTy 2), 38385 LL[bVar"b'5",bVar"b'4"]), 38386 Let(Var("imm2",FTy 2), 38387 Mop(Cast(FTy 2), 38388 LL[bVar"b'7", 38389 bVar"b'6"]), 38390 Let(Var("Rd",F4), 38391 Mop(Cast F4, 38392 LL[bVar"b'11", 38393 bVar"b'10", 38394 bVar"b'9", 38395 bVar"b'8"]), 38396 Let(Var("imm3", 38397 FTy 3), 38398 Mop(Cast 38399 (FTy 3), 38400 LL[bVar"b'14", 38401 bVar"b'13", 38402 bVar"b'12"]), 38403 Let(bVar"GOOD_MATCH", 38404 EQ(Mop(Cast 38405 F1, 38406 LL[bVar"b'15"]), 38407 LW(0,1)), 38408 Let(TP[Var("v", 38409 F4), 38410 qVar"s"], 38411 Apply 38412 (Call 38413 ("ThumbCondition", 38414 ATy(qTy, 38415 PTy(F4, 38416 qTy)), 38417 LU), 38418 qVar"state"), 38419 Let(TP[bVar"v", 38420 qVar"s"], 38421 Apply 38422 (Call 38423 ("Do", 38424 ATy(qTy, 38425 PTy(bTy, 38426 qTy)), 38427 TP[Var("v", 38428 F4), 38429 Apply 38430 (Call 38431 ("HaveThumb2", 38432 ATy(qTy, 38433 bTy), 38434 LU), 38435 qVar"s")]), 38436 qVar"s"), 38437 ITE(bVar"v", 38438 Let(TP[Var("shift_t", 38439 CTy"SRType"), 38440 nVar"shift_n"], 38441 Call 38442 ("DecodeImmShift", 38443 PTy(CTy"SRType", 38444 nTy), 38445 TP[Var("typ", 38446 FTy 2), 38447 CC[Var("imm3", 38448 FTy 3), 38449 Var("imm2", 38450 FTy 2)]]), 38451 Let(bVar"setflags", 38452 EQ(Var("S", 38453 F1), 38454 LW(1, 38455 1)), 38456 CS(TP[Mop(Cast 38457 F4, 38458 LL[bVar"b'24", 38459 bVar"b'23", 38460 bVar"b'22", 38461 bVar"b'21"]), 38462 Var("Rn", 38463 F4), 38464 Var("Rd", 38465 F4), 38466 Var("S", 38467 F1)], 38468 [(TP[LW(0, 38469 4), 38470 AVar 38471 F4, 38472 LW(15, 38473 4), 38474 LW(1, 38475 1)], 38476 TP[Call 38477 ("Data", 38478 CTy"instruction", 38479 Call 38480 ("TestCompareRegister", 38481 CTy"Data", 38482 TP[LW(0, 38483 2), 38484 Var("Rn", 38485 F4), 38486 Var("Rm", 38487 F4), 38488 Var("shift_t", 38489 CTy"SRType"), 38490 nVar"shift_n"])), 38491 ITE(Bop(Or, 38492 Bop(In, 38493 Var("Rn", 38494 F4), 38495 SL[LW(13, 38496 4), 38497 LW(15, 38498 4)]), 38499 Bop(Or, 38500 Bop(In, 38501 Var("Rm", 38502 F4), 38503 SL[LW(13, 38504 4), 38505 LW(15, 38506 4)]), 38507 Mop(Not, 38508 bVar"GOOD_MATCH"))), 38509 Apply 38510 (Call 38511 ("DECODE_UNPREDICTABLE", 38512 ATy(qTy, 38513 qTy), 38514 TP[Var("mc", 38515 CTy"MachineCode"), 38516 LS 38517 "TST (register)"]), 38518 qVar"s"), 38519 qVar"s")]), 38520 (TP[LW(0, 38521 4), 38522 AVar 38523 (PTy(F4, 38524 PTy(F4, 38525 F1)))], 38526 TP[Call 38527 ("Data", 38528 CTy"instruction", 38529 Call 38530 ("Register", 38531 CTy"Data", 38532 TP[LW(0, 38533 4), 38534 bVar"setflags", 38535 Var("Rd", 38536 F4), 38537 Var("Rn", 38538 F4), 38539 Var("Rm", 38540 F4), 38541 Var("shift_t", 38542 CTy"SRType"), 38543 nVar"shift_n"])), 38544 ITE(Bop(Or, 38545 EQ(Var("Rd", 38546 F4), 38547 LW(13, 38548 4)), 38549 Bop(Or, 38550 Bop(And, 38551 EQ(Var("Rd", 38552 F4), 38553 LW(15, 38554 4)), 38555 Mop(Not, 38556 bVar"setflags")), 38557 Bop(Or, 38558 Bop(In, 38559 Var("Rn", 38560 F4), 38561 SL[LW(13, 38562 4), 38563 LW(15, 38564 4)]), 38565 Bop(Or, 38566 Bop(In, 38567 Var("Rm", 38568 F4), 38569 SL[LW(13, 38570 4), 38571 LW(15, 38572 4)]), 38573 Mop(Not, 38574 bVar"GOOD_MATCH"))))), 38575 Apply 38576 (Call 38577 ("DECODE_UNPREDICTABLE", 38578 ATy(qTy, 38579 qTy), 38580 TP[Var("mc", 38581 CTy"MachineCode"), 38582 LS 38583 "AND (register)"]), 38584 qVar"s"), 38585 qVar"s")]), 38586 (TP[LW(1, 38587 4), 38588 AVar 38589 (PTy(F4, 38590 PTy(F4, 38591 F1)))], 38592 TP[Call 38593 ("Data", 38594 CTy"instruction", 38595 Call 38596 ("Register", 38597 CTy"Data", 38598 TP[LW(14, 38599 4), 38600 bVar"setflags", 38601 Var("Rd", 38602 F4), 38603 Var("Rn", 38604 F4), 38605 Var("Rm", 38606 F4), 38607 Var("shift_t", 38608 CTy"SRType"), 38609 nVar"shift_n"])), 38610 ITE(Bop(Or, 38611 Bop(In, 38612 Var("Rd", 38613 F4), 38614 SL[LW(13, 38615 4), 38616 LW(15, 38617 4)]), 38618 Bop(Or, 38619 Bop(In, 38620 Var("Rn", 38621 F4), 38622 SL[LW(13, 38623 4), 38624 LW(15, 38625 4)]), 38626 Bop(Or, 38627 Bop(In, 38628 Var("Rm", 38629 F4), 38630 SL[LW(13, 38631 4), 38632 LW(15, 38633 4)]), 38634 Mop(Not, 38635 bVar"GOOD_MATCH")))), 38636 Apply 38637 (Call 38638 ("DECODE_UNPREDICTABLE", 38639 ATy(qTy, 38640 qTy), 38641 TP[Var("mc", 38642 CTy"MachineCode"), 38643 LS 38644 "BIC (register)"]), 38645 qVar"s"), 38646 qVar"s")]), 38647 (TP[LW(2, 38648 4), 38649 LW(15, 38650 4), 38651 AVar 38652 (PTy(F4, 38653 F1))], 38654 TP[Call 38655 ("Data", 38656 CTy"instruction", 38657 Call 38658 ("ShiftImmediate", 38659 CTy"Data", 38660 TP[LF, 38661 bVar"setflags", 38662 Var("Rd", 38663 F4), 38664 Var("Rm", 38665 F4), 38666 Var("shift_t", 38667 CTy"SRType"), 38668 nVar"shift_n"])), 38669 ITB([(Bop(And, 38670 EQ(Var("typ", 38671 FTy 2), 38672 LW(0, 38673 2)), 38674 Bop(And, 38675 EQ(Var("imm3", 38676 FTy 3), 38677 LW(0, 38678 3)), 38679 EQ(Var("imm2", 38680 FTy 2), 38681 LW(0, 38682 2)))), 38683 ITE(Bop(Or, 38684 Bop(And, 38685 bVar"setflags", 38686 Bop(Or, 38687 Bop(In, 38688 Var("Rd", 38689 F4), 38690 SL[LW(13, 38691 4), 38692 LW(15, 38693 4)]), 38694 Bop(In, 38695 Var("Rm", 38696 F4), 38697 SL[LW(13, 38698 4), 38699 LW(15, 38700 4)]))), 38701 Bop(Or, 38702 Bop(And, 38703 Mop(Not, 38704 bVar"setflags"), 38705 Bop(Or, 38706 EQ(Var("Rd", 38707 F4), 38708 LW(15, 38709 4)), 38710 Bop(Or, 38711 EQ(Var("Rm", 38712 F4), 38713 LW(15, 38714 4)), 38715 Bop(And, 38716 EQ(Var("Rd", 38717 F4), 38718 LW(13, 38719 4)), 38720 EQ(Var("Rm", 38721 F4), 38722 LW(13, 38723 4)))))), 38724 Mop(Not, 38725 bVar"GOOD_MATCH"))), 38726 Apply 38727 (Call 38728 ("DECODE_UNPREDICTABLE", 38729 ATy(qTy, 38730 qTy), 38731 TP[Var("mc", 38732 CTy"MachineCode"), 38733 LS 38734 "MOV (register)"]), 38735 qVar"s"), 38736 qVar"s")), 38737 (Bop(Or, 38738 Bop(In, 38739 Var("Rd", 38740 F4), 38741 SL[LW(13, 38742 4), 38743 LW(15, 38744 4)]), 38745 Bop(Or, 38746 Bop(In, 38747 Var("Rm", 38748 F4), 38749 SL[LW(13, 38750 4), 38751 LW(15, 38752 4)]), 38753 Mop(Not, 38754 bVar"GOOD_MATCH"))), 38755 Apply 38756 (Call 38757 ("DECODE_UNPREDICTABLE", 38758 ATy(qTy, 38759 qTy), 38760 TP[Var("mc", 38761 CTy"MachineCode"), 38762 LS 38763 "SHIFT (register)"]), 38764 qVar"s"))], 38765 qVar"s")]), 38766 (TP[LW(2, 38767 4), 38768 AVar 38769 (PTy(F4, 38770 PTy(F4, 38771 F1)))], 38772 TP[Call 38773 ("Data", 38774 CTy"instruction", 38775 Call 38776 ("Register", 38777 CTy"Data", 38778 TP[LW(12, 38779 4), 38780 bVar"setflags", 38781 Var("Rd", 38782 F4), 38783 Var("Rn", 38784 F4), 38785 Var("Rm", 38786 F4), 38787 Var("shift_t", 38788 CTy"SRType"), 38789 nVar"shift_n"])), 38790 ITE(Bop(Or, 38791 Bop(In, 38792 Var("Rd", 38793 F4), 38794 SL[LW(13, 38795 4), 38796 LW(15, 38797 4)]), 38798 Bop(Or, 38799 EQ(Var("Rn", 38800 F4), 38801 LW(13, 38802 4)), 38803 Bop(Or, 38804 Bop(In, 38805 Var("Rm", 38806 F4), 38807 SL[LW(13, 38808 4), 38809 LW(15, 38810 4)]), 38811 Mop(Not, 38812 bVar"GOOD_MATCH")))), 38813 Apply 38814 (Call 38815 ("DECODE_UNPREDICTABLE", 38816 ATy(qTy, 38817 qTy), 38818 TP[Var("mc", 38819 CTy"MachineCode"), 38820 LS 38821 "ORR (register)"]), 38822 qVar"s"), 38823 qVar"s")]), 38824 (TP[LW(3, 38825 4), 38826 LW(15, 38827 4), 38828 AVar 38829 (PTy(F4, 38830 F1))], 38831 TP[Call 38832 ("Data", 38833 CTy"instruction", 38834 Call 38835 ("ShiftImmediate", 38836 CTy"Data", 38837 TP[LT, 38838 bVar"setflags", 38839 Var("Rd", 38840 F4), 38841 Var("Rm", 38842 F4), 38843 Var("shift_t", 38844 CTy"SRType"), 38845 nVar"shift_n"])), 38846 ITE(Bop(Or, 38847 Bop(In, 38848 Var("Rd", 38849 F4), 38850 SL[LW(13, 38851 4), 38852 LW(15, 38853 4)]), 38854 Bop(Or, 38855 Bop(In, 38856 Var("Rm", 38857 F4), 38858 SL[LW(13, 38859 4), 38860 LW(15, 38861 4)]), 38862 Mop(Not, 38863 bVar"GOOD_MATCH"))), 38864 Apply 38865 (Call 38866 ("DECODE_UNPREDICTABLE", 38867 ATy(qTy, 38868 qTy), 38869 TP[Var("mc", 38870 CTy"MachineCode"), 38871 LS 38872 "MVN (register)"]), 38873 qVar"s"), 38874 qVar"s")]), 38875 (TP[LW(3, 38876 4), 38877 AVar 38878 (PTy(F4, 38879 PTy(F4, 38880 F1)))], 38881 TP[Call 38882 ("Data", 38883 CTy"instruction", 38884 Call 38885 ("Register", 38886 CTy"Data", 38887 TP[LW(15, 38888 4), 38889 bVar"setflags", 38890 Var("Rd", 38891 F4), 38892 Var("Rn", 38893 F4), 38894 Var("Rm", 38895 F4), 38896 Var("shift_t", 38897 CTy"SRType"), 38898 nVar"shift_n"])), 38899 ITE(Bop(Or, 38900 Bop(In, 38901 Var("Rd", 38902 F4), 38903 SL[LW(13, 38904 4), 38905 LW(15, 38906 4)]), 38907 Bop(Or, 38908 EQ(Var("Rn", 38909 F4), 38910 LW(13, 38911 4)), 38912 Bop(Or, 38913 Bop(In, 38914 Var("Rm", 38915 F4), 38916 SL[LW(13, 38917 4), 38918 LW(15, 38919 4)]), 38920 Mop(Not, 38921 bVar"GOOD_MATCH")))), 38922 Apply 38923 (Call 38924 ("DECODE_UNPREDICTABLE", 38925 ATy(qTy, 38926 qTy), 38927 TP[Var("mc", 38928 CTy"MachineCode"), 38929 LS 38930 "ORN (register)"]), 38931 qVar"s"), 38932 qVar"s")]), 38933 (TP[LW(4, 38934 4), 38935 AVar 38936 F4, 38937 LW(15, 38938 4), 38939 LW(1, 38940 1)], 38941 TP[Call 38942 ("Data", 38943 CTy"instruction", 38944 Call 38945 ("TestCompareRegister", 38946 CTy"Data", 38947 TP[LW(1, 38948 2), 38949 Var("Rn", 38950 F4), 38951 Var("Rm", 38952 F4), 38953 Var("shift_t", 38954 CTy"SRType"), 38955 nVar"shift_n"])), 38956 ITE(Bop(Or, 38957 Bop(In, 38958 Var("Rn", 38959 F4), 38960 SL[LW(13, 38961 4), 38962 LW(15, 38963 4)]), 38964 Bop(Or, 38965 Bop(In, 38966 Var("Rm", 38967 F4), 38968 SL[LW(13, 38969 4), 38970 LW(15, 38971 4)]), 38972 Mop(Not, 38973 bVar"GOOD_MATCH"))), 38974 Apply 38975 (Call 38976 ("DECODE_UNPREDICTABLE", 38977 ATy(qTy, 38978 qTy), 38979 TP[Var("mc", 38980 CTy"MachineCode"), 38981 LS 38982 "TEQ (register)"]), 38983 qVar"s"), 38984 qVar"s")]), 38985 (TP[LW(4, 38986 4), 38987 AVar 38988 (PTy(F4, 38989 PTy(F4, 38990 F1)))], 38991 TP[Call 38992 ("Data", 38993 CTy"instruction", 38994 Call 38995 ("Register", 38996 CTy"Data", 38997 TP[LW(1, 38998 4), 38999 bVar"setflags", 39000 Var("Rd", 39001 F4), 39002 Var("Rn", 39003 F4), 39004 Var("Rm", 39005 F4), 39006 Var("shift_t", 39007 CTy"SRType"), 39008 nVar"shift_n"])), 39009 ITE(Bop(Or, 39010 EQ(Var("Rd", 39011 F4), 39012 LW(13, 39013 4)), 39014 Bop(Or, 39015 Bop(And, 39016 EQ(Var("Rd", 39017 F4), 39018 LW(15, 39019 4)), 39020 Mop(Not, 39021 bVar"setflags")), 39022 Bop(Or, 39023 Bop(In, 39024 Var("Rn", 39025 F4), 39026 SL[LW(13, 39027 4), 39028 LW(15, 39029 4)]), 39030 Bop(Or, 39031 Bop(In, 39032 Var("Rm", 39033 F4), 39034 SL[LW(13, 39035 4), 39036 LW(15, 39037 4)]), 39038 Mop(Not, 39039 bVar"GOOD_MATCH"))))), 39040 Apply 39041 (Call 39042 ("DECODE_UNPREDICTABLE", 39043 ATy(qTy, 39044 qTy), 39045 TP[Var("mc", 39046 CTy"MachineCode"), 39047 LS 39048 "EOR (register)"]), 39049 qVar"s"), 39050 qVar"s")]), 39051 (TP[LW(6, 39052 4), 39053 AVar 39054 F4, 39055 AVar 39056 F4, 39057 LW(0, 39058 1)], 39059 ITE(Bop(Bit, 39060 Var("typ", 39061 FTy 2), 39062 LN 39063 0), 39064 TP[Call 39065 ("Undefined", 39066 CTy"instruction", 39067 LW(0, 39068 32)), 39069 qVar"s"], 39070 TP[Call 39071 ("Media", 39072 CTy"instruction", 39073 Call 39074 ("PackHalfword", 39075 CTy"Media", 39076 TP[Var("shift_t", 39077 CTy"SRType"), 39078 nVar"shift_n", 39079 Bop(Bit, 39080 Var("typ", 39081 FTy 2), 39082 LN 39083 1), 39084 Var("Rd", 39085 F4), 39086 Var("Rn", 39087 F4), 39088 Var("Rm", 39089 F4)])), 39090 ITE(Bop(Or, 39091 Bop(In, 39092 Var("Rd", 39093 F4), 39094 SL[LW(13, 39095 4), 39096 LW(15, 39097 4)]), 39098 Bop(Or, 39099 Bop(In, 39100 Var("Rn", 39101 F4), 39102 SL[LW(13, 39103 4), 39104 LW(15, 39105 4)]), 39106 Bop(Or, 39107 Bop(In, 39108 Var("Rm", 39109 F4), 39110 SL[LW(13, 39111 4), 39112 LW(15, 39113 4)]), 39114 Mop(Not, 39115 bVar"GOOD_MATCH")))), 39116 Apply 39117 (Call 39118 ("DECODE_UNPREDICTABLE", 39119 ATy(qTy, 39120 qTy), 39121 TP[Var("mc", 39122 CTy"MachineCode"), 39123 LS 39124 "PackHalfword"]), 39125 qVar"s"), 39126 qVar"s")])), 39127 (TP[LW(8, 39128 4), 39129 AVar 39130 F4, 39131 LW(15, 39132 4), 39133 LW(1, 39134 1)], 39135 TP[Call 39136 ("Data", 39137 CTy"instruction", 39138 Call 39139 ("TestCompareRegister", 39140 CTy"Data", 39141 TP[LW(3, 39142 2), 39143 Var("Rn", 39144 F4), 39145 Var("Rm", 39146 F4), 39147 Var("shift_t", 39148 CTy"SRType"), 39149 nVar"shift_n"])), 39150 ITE(Bop(Or, 39151 EQ(Var("Rn", 39152 F4), 39153 LW(15, 39154 4)), 39155 Bop(Or, 39156 Bop(In, 39157 Var("Rm", 39158 F4), 39159 SL[LW(13, 39160 4), 39161 LW(15, 39162 4)]), 39163 Mop(Not, 39164 bVar"GOOD_MATCH"))), 39165 Apply 39166 (Call 39167 ("DECODE_UNPREDICTABLE", 39168 ATy(qTy, 39169 qTy), 39170 TP[Var("mc", 39171 CTy"MachineCode"), 39172 LS 39173 "CMN (register)"]), 39174 qVar"s"), 39175 qVar"s")]), 39176 (TP[LW(8, 39177 4), 39178 AVar 39179 (PTy(F4, 39180 PTy(F4, 39181 F1)))], 39182 TP[Let(TP[Var("shift_t", 39183 CTy"SRType"), 39184 nVar"shift_n"], 39185 Call 39186 ("DecodeImmShift", 39187 PTy(CTy"SRType", 39188 nTy), 39189 TP[Var("typ", 39190 FTy 2), 39191 CC[Var("imm3", 39192 FTy 3), 39193 Var("imm2", 39194 FTy 2)]]), 39195 Call 39196 ("Data", 39197 CTy"instruction", 39198 Call 39199 ("Register", 39200 CTy"Data", 39201 TP[LW(4, 39202 4), 39203 bVar"setflags", 39204 Var("Rd", 39205 F4), 39206 Var("Rn", 39207 F4), 39208 Var("Rm", 39209 F4), 39210 Var("shift_t", 39211 CTy"SRType"), 39212 nVar"shift_n"]))), 39213 ITE(Bop(Or, 39214 EQ(Var("Rd", 39215 F4), 39216 LW(13, 39217 4)), 39218 Bop(Or, 39219 Bop(And, 39220 EQ(Var("Rd", 39221 F4), 39222 LW(15, 39223 4)), 39224 Mop(Not, 39225 bVar"setflags")), 39226 Bop(Or, 39227 EQ(Var("Rn", 39228 F4), 39229 LW(15, 39230 4)), 39231 Bop(Or, 39232 Bop(In, 39233 Var("Rm", 39234 F4), 39235 SL[LW(13, 39236 4), 39237 LW(15, 39238 4)]), 39239 Mop(Not, 39240 bVar"GOOD_MATCH"))))), 39241 Apply 39242 (Call 39243 ("DECODE_UNPREDICTABLE", 39244 ATy(qTy, 39245 qTy), 39246 TP[Var("mc", 39247 CTy"MachineCode"), 39248 LS 39249 "ADD (register)"]), 39250 qVar"s"), 39251 qVar"s")]), 39252 (TP[LW(10, 39253 4), 39254 AVar 39255 (PTy(F4, 39256 PTy(F4, 39257 F1)))], 39258 TP[Call 39259 ("Data", 39260 CTy"instruction", 39261 Call 39262 ("Register", 39263 CTy"Data", 39264 TP[LW(5, 39265 4), 39266 bVar"setflags", 39267 Var("Rd", 39268 F4), 39269 Var("Rn", 39270 F4), 39271 Var("Rm", 39272 F4), 39273 Var("shift_t", 39274 CTy"SRType"), 39275 nVar"shift_n"])), 39276 ITE(Bop(Or, 39277 Bop(In, 39278 Var("Rd", 39279 F4), 39280 SL[LW(13, 39281 4), 39282 LW(15, 39283 4)]), 39284 Bop(Or, 39285 Bop(In, 39286 Var("Rn", 39287 F4), 39288 SL[LW(13, 39289 4), 39290 LW(15, 39291 4)]), 39292 Bop(Or, 39293 Bop(In, 39294 Var("Rm", 39295 F4), 39296 SL[LW(13, 39297 4), 39298 LW(15, 39299 4)]), 39300 Mop(Not, 39301 bVar"GOOD_MATCH")))), 39302 Apply 39303 (Call 39304 ("DECODE_UNPREDICTABLE", 39305 ATy(qTy, 39306 qTy), 39307 TP[Var("mc", 39308 CTy"MachineCode"), 39309 LS 39310 "ADC (register)"]), 39311 qVar"s"), 39312 qVar"s")]), 39313 (TP[LW(11, 39314 4), 39315 AVar 39316 (PTy(F4, 39317 PTy(F4, 39318 F1)))], 39319 TP[Call 39320 ("Data", 39321 CTy"instruction", 39322 Call 39323 ("Register", 39324 CTy"Data", 39325 TP[LW(6, 39326 4), 39327 bVar"setflags", 39328 Var("Rd", 39329 F4), 39330 Var("Rn", 39331 F4), 39332 Var("Rm", 39333 F4), 39334 Var("shift_t", 39335 CTy"SRType"), 39336 nVar"shift_n"])), 39337 ITE(Bop(Or, 39338 Bop(In, 39339 Var("Rd", 39340 F4), 39341 SL[LW(13, 39342 4), 39343 LW(15, 39344 4)]), 39345 Bop(Or, 39346 Bop(In, 39347 Var("Rn", 39348 F4), 39349 SL[LW(13, 39350 4), 39351 LW(15, 39352 4)]), 39353 Bop(Or, 39354 Bop(In, 39355 Var("Rm", 39356 F4), 39357 SL[LW(13, 39358 4), 39359 LW(15, 39360 4)]), 39361 Mop(Not, 39362 bVar"GOOD_MATCH")))), 39363 Apply 39364 (Call 39365 ("DECODE_UNPREDICTABLE", 39366 ATy(qTy, 39367 qTy), 39368 TP[Var("mc", 39369 CTy"MachineCode"), 39370 LS 39371 "SBC (register)"]), 39372 qVar"s"), 39373 qVar"s")]), 39374 (TP[LW(13, 39375 4), 39376 AVar 39377 F4, 39378 LW(15, 39379 4), 39380 LW(1, 39381 1)], 39382 TP[Call 39383 ("Data", 39384 CTy"instruction", 39385 Call 39386 ("TestCompareRegister", 39387 CTy"Data", 39388 TP[LW(2, 39389 2), 39390 Var("Rn", 39391 F4), 39392 Var("Rm", 39393 F4), 39394 Var("shift_t", 39395 CTy"SRType"), 39396 nVar"shift_n"])), 39397 ITE(Bop(Or, 39398 EQ(Var("Rn", 39399 F4), 39400 LW(15, 39401 4)), 39402 Bop(Or, 39403 Bop(In, 39404 Var("Rm", 39405 F4), 39406 SL[LW(13, 39407 4), 39408 LW(15, 39409 4)]), 39410 Mop(Not, 39411 bVar"GOOD_MATCH"))), 39412 Apply 39413 (Call 39414 ("DECODE_UNPREDICTABLE", 39415 ATy(qTy, 39416 qTy), 39417 TP[Var("mc", 39418 CTy"MachineCode"), 39419 LS 39420 "CMP (register)"]), 39421 qVar"s"), 39422 qVar"s")]), 39423 (TP[LW(13, 39424 4), 39425 AVar 39426 (PTy(F4, 39427 PTy(F4, 39428 F1)))], 39429 TP[Call 39430 ("Data", 39431 CTy"instruction", 39432 Call 39433 ("Register", 39434 CTy"Data", 39435 TP[LW(2, 39436 4), 39437 bVar"setflags", 39438 Var("Rd", 39439 F4), 39440 Var("Rn", 39441 F4), 39442 Var("Rm", 39443 F4), 39444 Var("shift_t", 39445 CTy"SRType"), 39446 nVar"shift_n"])), 39447 ITE(Bop(Or, 39448 EQ(Var("Rd", 39449 F4), 39450 LW(13, 39451 4)), 39452 Bop(Or, 39453 Bop(And, 39454 EQ(Var("Rd", 39455 F4), 39456 LW(15, 39457 4)), 39458 Mop(Not, 39459 bVar"setflags")), 39460 Bop(Or, 39461 EQ(Var("Rn", 39462 F4), 39463 LW(15, 39464 4)), 39465 Bop(Or, 39466 Bop(In, 39467 Var("Rm", 39468 F4), 39469 SL[LW(13, 39470 4), 39471 LW(15, 39472 4)]), 39473 Mop(Not, 39474 bVar"GOOD_MATCH"))))), 39475 Apply 39476 (Call 39477 ("DECODE_UNPREDICTABLE", 39478 ATy(qTy, 39479 qTy), 39480 TP[Var("mc", 39481 CTy"MachineCode"), 39482 LS 39483 "SUB (register)"]), 39484 qVar"s"), 39485 qVar"s")]), 39486 (TP[LW(14, 39487 4), 39488 AVar 39489 (PTy(F4, 39490 PTy(F4, 39491 F1)))], 39492 TP[Call 39493 ("Data", 39494 CTy"instruction", 39495 Call 39496 ("Register", 39497 CTy"Data", 39498 TP[LW(3, 39499 4), 39500 bVar"setflags", 39501 Var("Rd", 39502 F4), 39503 Var("Rn", 39504 F4), 39505 Var("Rm", 39506 F4), 39507 Var("shift_t", 39508 CTy"SRType"), 39509 nVar"shift_n"])), 39510 ITE(Bop(Or, 39511 Bop(In, 39512 Var("Rd", 39513 F4), 39514 SL[LW(13, 39515 4), 39516 LW(15, 39517 4)]), 39518 Bop(Or, 39519 Bop(In, 39520 Var("Rn", 39521 F4), 39522 SL[LW(13, 39523 4), 39524 LW(15, 39525 4)]), 39526 Bop(Or, 39527 Bop(In, 39528 Var("Rm", 39529 F4), 39530 SL[LW(13, 39531 4), 39532 LW(15, 39533 4)]), 39534 Mop(Not, 39535 bVar"GOOD_MATCH")))), 39536 Apply 39537 (Call 39538 ("DECODE_UNPREDICTABLE", 39539 ATy(qTy, 39540 qTy), 39541 TP[Var("mc", 39542 CTy"MachineCode"), 39543 LS 39544 "RSB (register)"]), 39545 qVar"s"), 39546 qVar"s")]), 39547 (AVar 39548 (PTy(F4, 39549 PTy(F4, 39550 PTy(F4, 39551 F1)))), 39552 TP[Call 39553 ("Undefined", 39554 CTy"instruction", 39555 LW(0, 39556 32)), 39557 qVar"s"])]))), 39558 TP[Apply 39559 (Call 39560 ("Skip", 39561 ATy(qTy, 39562 CTy"instruction"), 39563 LU), 39564 qVar"s"), 39565 qVar"s"]))))))))))))], 39566 Apply 39567 (Call 39568 ("UndefinedThumb", 39569 ATy(qTy,PTy(CTy"instruction",qTy)),LU), 39570 qVar"state")))], 39571 Apply 39572 (Call 39573 ("UndefinedThumb", 39574 ATy(qTy,PTy(CTy"instruction",qTy)),LU), 39575 qVar"state"))), 39576 (bVar"b'15", 39577 ITE(Bop(And,bVar"b'31", 39578 Bop(And,bVar"b'30", 39579 Bop(And,bVar"b'29",bVar"b'28"))), 39580 ITB([(Bop(And,Mop(Not,bVar"b'26"), 39581 Bop(And,bVar"b'25", 39582 Bop(And,bVar"b'24", 39583 Bop(And,bVar"b'23", 39584 Bop(And,Mop(Not,bVar"b'22"), 39585 Bop(And, 39586 Mop(Not,bVar"b'21"), 39587 Bop(And, 39588 Mop(Not, 39589 bVar"b'14"), 39590 Bop(And, 39591 Mop(Not, 39592 bVar"b'12"), 39593 bVar"b'5")))))))), 39594 Let(Var("Rn",F4), 39595 Mop(Cast F4, 39596 LL[bVar"b'19",bVar"b'18",bVar"b'17", 39597 bVar"b'16"]), 39598 Let(TP[Var("v",F4),qVar"s"], 39599 Apply 39600 (Call 39601 ("ThumbCondition", 39602 ATy(qTy,PTy(F4,qTy)),LU), 39603 qVar"state"), 39604 Let(TP[bVar"v",qVar"s"], 39605 Apply 39606 (Call 39607 ("Do", 39608 ATy(qTy,PTy(bTy,qTy)), 39609 TP[Var("v",F4), 39610 Apply 39611 (Call 39612 ("HaveVirtExt", 39613 ATy(qTy,bTy),LU), 39614 qVar"s")]),qVar"s"), 39615 ITE(bVar"v", 39616 TP[Call 39617 ("System", 39618 CTy"instruction", 39619 Call 39620 ("MoveToBankedOrSpecialRegister", 39621 CTy"System", 39622 TP[EQ(Mop(Cast F1, 39623 LL[bVar"b'20"]), 39624 LW(1,1)), 39625 CC[Mop(Cast F1, 39626 LL[bVar"b'4"]), 39627 Mop(Cast F4, 39628 LL[bVar"b'11", 39629 bVar"b'10", 39630 bVar"b'9", 39631 bVar"b'8"])], 39632 Var("Rn",F4)])), 39633 ITE(Bop(Or, 39634 Bop(In, 39635 Var("Rn",F4), 39636 SL[LW(13,4), 39637 LW(15,4)]), 39638 Mop(Not, 39639 Bop(And, 39640 EQ(Mop(Cast 39641 F1, 39642 LL[bVar"b'13"]), 39643 LW(0,1)), 39644 Bop(And, 39645 EQ(Mop(Cast 39646 (FTy 2), 39647 LL[bVar"b'7", 39648 bVar"b'6"]), 39649 LW(0, 39650 2)), 39651 EQ(Mop(Cast 39652 F4, 39653 LL[bVar"b'3", 39654 bVar"b'2", 39655 bVar"b'1", 39656 bVar"b'0"]), 39657 LW(0, 39658 4)))))), 39659 Apply 39660 (Call 39661 ("DECODE_UNPREDICTABLE", 39662 ATy(qTy,qTy), 39663 TP[Var("mc", 39664 CTy"MachineCode"), 39665 LS 39666 "MoveToBankedOrSpecialRegister"]), 39667 qVar"s"),qVar"s")], 39668 TP[Apply 39669 (Call 39670 ("Skip", 39671 ATy(qTy, 39672 CTy"instruction"), 39673 LU),qVar"s"), 39674 qVar"s"]))))), 39675 (Bop(And,Mop(Not,bVar"b'26"), 39676 Bop(And,bVar"b'25", 39677 Bop(And,bVar"b'24", 39678 Bop(And,bVar"b'23", 39679 Bop(And,Mop(Not,bVar"b'22"), 39680 Bop(And, 39681 Mop(Not,bVar"b'21"), 39682 Bop(And, 39683 Mop(Not, 39684 bVar"b'14"), 39685 Bop(And, 39686 Mop(Not, 39687 bVar"b'12"), 39688 Mop(Not, 39689 bVar"b'5"))))))))), 39690 Let(Var("Rn",F4), 39691 Mop(Cast F4, 39692 LL[bVar"b'19",bVar"b'18",bVar"b'17", 39693 bVar"b'16"]), 39694 Let(Var("mask",F4), 39695 Mop(Cast F4, 39696 LL[bVar"b'11",bVar"b'10", 39697 bVar"b'9",bVar"b'8"]), 39698 Let(TP[Var("v",F4),qVar"s"], 39699 Apply 39700 (Call 39701 ("ThumbCondition", 39702 ATy(qTy,PTy(F4,qTy)),LU), 39703 qVar"state"), 39704 Let(TP[bVar"v",qVar"s"], 39705 Apply 39706 (Call 39707 ("Do", 39708 ATy(qTy,PTy(bTy,qTy)), 39709 TP[Var("v",F4), 39710 Apply 39711 (Call 39712 ("HaveThumb2", 39713 ATy(qTy,bTy), 39714 LU),qVar"s")]), 39715 qVar"s"), 39716 ITE(bVar"v", 39717 TP[Call 39718 ("System", 39719 CTy"instruction", 39720 Call 39721 ("MoveToSpecialFromRegister", 39722 CTy"System", 39723 TP[EQ(Mop(Cast 39724 F1, 39725 LL[bVar"b'20"]), 39726 LW(1,1)), 39727 Var("Rn",F4), 39728 Var("mask", 39729 F4)])), 39730 ITE(Bop(Or, 39731 EQ(Var("mask", 39732 F4), 39733 LW(0,4)), 39734 Bop(Or, 39735 Bop(In, 39736 Var("Rn", 39737 F4), 39738 SL[LW(13, 39739 4), 39740 LW(15, 39741 4)]), 39742 Mop(Not, 39743 Bop(And, 39744 EQ(Mop(Cast 39745 F1, 39746 LL[bVar"b'13"]), 39747 LW(0, 39748 1)), 39749 Bop(And, 39750 EQ(Mop(Cast 39751 (FTy 2), 39752 LL[bVar"b'7", 39753 bVar"b'6"]), 39754 LW(0, 39755 2)), 39756 EQ(Mop(Cast 39757 (FTy 5), 39758 LL[bVar"b'4", 39759 bVar"b'3", 39760 bVar"b'2", 39761 bVar"b'1", 39762 bVar"b'0"]), 39763 LW(0, 39764 5))))))), 39765 Apply 39766 (Call 39767 ("DECODE_UNPREDICTABLE", 39768 ATy(qTy,qTy), 39769 TP[Var("mc", 39770 CTy"MachineCode"), 39771 LS 39772 "MoveToSpecialFromRegister"]), 39773 qVar"s"), 39774 qVar"s")], 39775 TP[Apply 39776 (Call 39777 ("Skip", 39778 ATy(qTy, 39779 CTy"instruction"), 39780 LU),qVar"s"), 39781 qVar"s"])))))), 39782 (Bop(And,Mop(Not,bVar"b'26"), 39783 Bop(And,bVar"b'25", 39784 Bop(And,bVar"b'24", 39785 Bop(And,bVar"b'23", 39786 Bop(And,Mop(Not,bVar"b'22"), 39787 Bop(And,bVar"b'21", 39788 Bop(And, 39789 Mop(Not, 39790 bVar"b'20"), 39791 Bop(And, 39792 Mop(Not, 39793 bVar"b'14"), 39794 Bop(And, 39795 Mop(Not, 39796 bVar"b'12"), 39797 Bop(And, 39798 Mop(Not, 39799 bVar"b'10"), 39800 Bop(And, 39801 Mop(Not, 39802 bVar"b'9"), 39803 Mop(Not, 39804 bVar"b'8")))))))))))), 39805 Let(TP[Var("v",F4),qVar"s"], 39806 Apply 39807 (Call 39808 ("ThumbCondition", 39809 ATy(qTy,PTy(F4,qTy)),LU), 39810 ITE(Mop(Not, 39811 Bop(And, 39812 EQ(Mop(Cast F4, 39813 LL[bVar"b'19", 39814 bVar"b'18", 39815 bVar"b'17", 39816 bVar"b'16"]), 39817 LW(15,4)), 39818 Bop(And, 39819 EQ(Mop(Cast F1, 39820 LL[bVar"b'13"]), 39821 LW(0,1)), 39822 EQ(Mop(Cast F1, 39823 LL[bVar"b'11"]), 39824 LW(0,1))))), 39825 Apply 39826 (Call 39827 ("DECODE_UNPREDICTABLE", 39828 ATy(qTy,qTy), 39829 TP[Var("mc", 39830 CTy"MachineCode"), 39831 LS"Hint"]),qVar"state"), 39832 qVar"state")), 39833 Apply 39834 (Call 39835 ("DecodeHint", 39836 ATy(qTy,PTy(CTy"instruction",qTy)), 39837 TP[Var("v",F4), 39838 Mop(Cast F8, 39839 LL[bVar"b'7",bVar"b'6", 39840 bVar"b'5",bVar"b'4", 39841 bVar"b'3",bVar"b'2", 39842 bVar"b'1",bVar"b'0"])]), 39843 qVar"s"))), 39844 (Bop(And,Mop(Not,bVar"b'26"), 39845 Bop(And,bVar"b'25", 39846 Bop(And,bVar"b'24", 39847 Bop(And,bVar"b'23", 39848 Bop(And,Mop(Not,bVar"b'22"), 39849 Bop(And,bVar"b'21", 39850 Bop(And, 39851 Mop(Not, 39852 bVar"b'20"), 39853 Bop(And, 39854 Mop(Not, 39855 bVar"b'14"), 39856 Mop(Not, 39857 bVar"b'12"))))))))), 39858 Let(Var("mode",FTy 5), 39859 Mop(Cast(FTy 5), 39860 LL[bVar"b'4",bVar"b'3",bVar"b'2", 39861 bVar"b'1",bVar"b'0"]), 39862 Let(Var("F",F1), 39863 Mop(Cast F1,LL[bVar"b'5"]), 39864 Let(Var("I",F1), 39865 Mop(Cast F1,LL[bVar"b'6"]), 39866 Let(Var("A",F1), 39867 Mop(Cast F1,LL[bVar"b'7"]), 39868 Let(Var("M",F1), 39869 Mop(Cast F1, 39870 LL[bVar"b'8"]), 39871 Let(Var("imod",FTy 2), 39872 Mop(Cast(FTy 2), 39873 LL[bVar"b'10", 39874 bVar"b'9"]), 39875 Let(TP[Var("v",F4), 39876 qVar"s"], 39877 Apply 39878 (Call 39879 ("ThumbCondition", 39880 ATy(qTy, 39881 PTy(F4, 39882 qTy)), 39883 LU), 39884 qVar"state"), 39885 Let(TP[bVar"v", 39886 qVar"s"], 39887 Apply 39888 (Call 39889 ("Do", 39890 ATy(qTy, 39891 PTy(bTy, 39892 qTy)), 39893 TP[Var("v", 39894 F4), 39895 Apply 39896 (Call 39897 ("HaveThumb2", 39898 ATy(qTy, 39899 bTy), 39900 LU), 39901 qVar"s")]), 39902 qVar"s"), 39903 ITE(bVar"v", 39904 TP[Call 39905 ("System", 39906 CTy"instruction", 39907 Call 39908 ("ChangeProcessorState", 39909 CTy"System", 39910 TP[EQ(Var("imod", 39911 FTy 2), 39912 LW(2, 39913 2)), 39914 EQ(Var("imod", 39915 FTy 2), 39916 LW(3, 39917 2)), 39918 EQ(Var("A", 39919 F1), 39920 LW(1, 39921 1)), 39922 EQ(Var("I", 39923 F1), 39924 LW(1, 39925 1)), 39926 EQ(Var("F", 39927 F1), 39928 LW(1, 39929 1)), 39930 ITE(EQ(Var("M", 39931 F1), 39932 LW(1, 39933 1)), 39934 Mop(Some, 39935 Var("mode", 39936 FTy 5)), 39937 LO(FTy 5))])), 39938 ITE(Bop(Or, 39939 Bop(And, 39940 Mop(Not, 39941 EQ(Var("mode", 39942 FTy 5), 39943 LW(0, 39944 5))), 39945 EQ(Var("M", 39946 F1), 39947 LW(0, 39948 1))), 39949 Bop(Or, 39950 EQ(Bop(Bit, 39951 Var("imod", 39952 FTy 2), 39953 LN 39954 1), 39955 EQ(CC[Var("A", 39956 F1), 39957 Var("I", 39958 F1), 39959 Var("F", 39960 F1)], 39961 LW(0, 39962 3))), 39963 Bop(Or, 39964 EQ(Var("imod", 39965 FTy 2), 39966 LW(1, 39967 2)), 39968 Bop(Or, 39969 Apply 39970 (Call 39971 ("InITBlock", 39972 ATy(qTy, 39973 bTy), 39974 LU), 39975 qVar"s"), 39976 Mop(Not, 39977 Bop(And, 39978 EQ(Mop(Cast 39979 F4, 39980 LL[bVar"b'19", 39981 bVar"b'18", 39982 bVar"b'17", 39983 bVar"b'16"]), 39984 LW(15, 39985 4)), 39986 Bop(And, 39987 EQ(Mop(Cast 39988 F1, 39989 LL[bVar"b'13"]), 39990 LW(0, 39991 1)), 39992 EQ(Mop(Cast 39993 F1, 39994 LL[bVar"b'11"]), 39995 LW(0, 39996 1))))))))), 39997 Apply 39998 (Call 39999 ("DECODE_UNPREDICTABLE", 40000 ATy(qTy, 40001 qTy), 40002 TP[Var("mc", 40003 CTy"MachineCode"), 40004 LS 40005 "ChangeProcessorState"]), 40006 qVar"s"), 40007 qVar"s")], 40008 TP[Apply 40009 (Call 40010 ("Skip", 40011 ATy(qTy, 40012 CTy"instruction"), 40013 LU), 40014 qVar"s"), 40015 qVar"s"])))))))))), 40016 (Bop(And,Mop(Not,bVar"b'26"), 40017 Bop(And,bVar"b'25", 40018 Bop(And,bVar"b'24", 40019 Bop(And,bVar"b'23", 40020 Bop(And,Mop(Not,bVar"b'22"), 40021 Bop(And,bVar"b'21", 40022 Bop(And,bVar"b'20", 40023 Bop(And, 40024 Mop(Not, 40025 bVar"b'14"), 40026 Bop(And, 40027 Mop(Not, 40028 bVar"b'12"), 40029 Bop(And, 40030 Mop(Not, 40031 bVar"b'7"), 40032 Bop(And, 40033 Mop(Not, 40034 bVar"b'6"), 40035 Mop(Not, 40036 bVar"b'5")))))))))))), 40037 Let(Var("J",F1),Mop(Cast F1,LL[bVar"b'4"]), 40038 Let(TP[Var("v",F4),qVar"s"], 40039 Apply 40040 (Call 40041 ("ThumbCondition", 40042 ATy(qTy,PTy(F4,qTy)),LU), 40043 qVar"state"), 40044 Let(TP[bVar"v",qVar"s"], 40045 Let(TP[bVar"v",qVar"s"], 40046 Apply 40047 (Call 40048 ("Do", 40049 ATy(qTy,PTy(bTy,qTy)), 40050 TP[Var("v",F4), 40051 Apply 40052 (Call 40053 ("HaveThumbEE", 40054 ATy(qTy,bTy), 40055 LU),qVar"s")]), 40056 qVar"s"), 40057 TP[Bop(And,bVar"v", 40058 Mop(Not, 40059 Bop(And, 40060 EQ(Apply 40061 (Call 40062 ("CurrentInstrSet", 40063 ATy(qTy, 40064 CTy"InstrSet"), 40065 LU), 40066 qVar"s"), 40067 LC("InstrSet_Thumb", 40068 CTy"InstrSet")), 40069 EQ(Var("J",F1), 40070 LW(0,1))))), 40071 qVar"s"]), 40072 ITE(bVar"v", 40073 TP[Call 40074 ("System", 40075 CTy"instruction", 40076 Call 40077 ("EnterxLeavex", 40078 CTy"System", 40079 EQ(Var("J",F1), 40080 LW(1,1)))), 40081 ITE(Bop(Or, 40082 Apply 40083 (Call 40084 ("InITBlock", 40085 ATy(qTy,bTy), 40086 LU),qVar"s"), 40087 Mop(Not, 40088 Bop(And, 40089 EQ(Mop(Cast 40090 F4, 40091 LL[bVar"b'19", 40092 bVar"b'18", 40093 bVar"b'17", 40094 bVar"b'16"]), 40095 LW(15, 40096 4)), 40097 Bop(And, 40098 EQ(Mop(Cast 40099 F1, 40100 LL[bVar"b'13"]), 40101 LW(0, 40102 1)), 40103 Bop(And, 40104 EQ(Mop(Cast 40105 F4, 40106 LL[bVar"b'11", 40107 bVar"b'10", 40108 bVar"b'9", 40109 bVar"b'8"]), 40110 LW(15, 40111 4)), 40112 EQ(Mop(Cast 40113 F4, 40114 LL[bVar"b'3", 40115 bVar"b'2", 40116 bVar"b'1", 40117 bVar"b'0"]), 40118 LW(15, 40119 4))))))), 40120 Apply 40121 (Call 40122 ("DECODE_UNPREDICTABLE", 40123 ATy(qTy,qTy), 40124 TP[Var("mc", 40125 CTy"MachineCode"), 40126 LS 40127 "EnterxLeavex"]), 40128 qVar"s"),qVar"s")], 40129 TP[Apply 40130 (Call 40131 ("Skip", 40132 ATy(qTy, 40133 CTy"instruction"), 40134 LU),qVar"s"), 40135 qVar"s"]))))), 40136 (Bop(And,Mop(Not,bVar"b'26"), 40137 Bop(And,bVar"b'25", 40138 Bop(And,bVar"b'24", 40139 Bop(And,bVar"b'23", 40140 Bop(And,Mop(Not,bVar"b'22"), 40141 Bop(And,bVar"b'21", 40142 Bop(And,bVar"b'20", 40143 Bop(And, 40144 Mop(Not, 40145 bVar"b'14"), 40146 Mop(Not, 40147 bVar"b'12"))))))))), 40148 Let(Var("option",F4), 40149 Mop(Cast F4, 40150 LL[bVar"b'3",bVar"b'2",bVar"b'1", 40151 bVar"b'0"]), 40152 Let(bVar"GOOD_MATCH", 40153 Bop(And, 40154 EQ(Mop(Cast F4, 40155 LL[bVar"b'19",bVar"b'18", 40156 bVar"b'17",bVar"b'16"]), 40157 LW(15,4)), 40158 Bop(And, 40159 EQ(Mop(Cast F1, 40160 LL[bVar"b'13"]), 40161 LW(0,1)), 40162 EQ(Mop(Cast F4, 40163 LL[bVar"b'11", 40164 bVar"b'10", 40165 bVar"b'9", 40166 bVar"b'8"]), 40167 LW(15,4)))), 40168 Let(TP[Var("v",F4),qVar"s"], 40169 Apply 40170 (Call 40171 ("ThumbCondition", 40172 ATy(qTy,PTy(F4,qTy)),LU), 40173 qVar"state"), 40174 Let(TP[bVar"v",qVar"s"], 40175 Apply 40176 (Call 40177 ("Do", 40178 ATy(qTy,PTy(bTy,qTy)), 40179 TP[Var("v",F4), 40180 Apply 40181 (Call 40182 ("HaveThumb2", 40183 ATy(qTy,bTy), 40184 LU),qVar"s")]), 40185 qVar"s"), 40186 ITE(bVar"v", 40187 CS(Mop(Cast F4, 40188 LL[bVar"b'7", 40189 bVar"b'6", 40190 bVar"b'5", 40191 bVar"b'4"]), 40192 [(LW(2,4), 40193 TP[Const 40194 ("ClearExclusive", 40195 CTy"instruction"), 40196 ITE(Mop(Not, 40197 bVar"GOOD_MATCH"), 40198 Apply 40199 (Call 40200 ("DECODE_UNPREDICTABLE", 40201 ATy(qTy, 40202 qTy), 40203 TP[Var("mc", 40204 CTy"MachineCode"), 40205 LS 40206 "CLREX"]), 40207 qVar"s"), 40208 qVar"s")]), 40209 (LW(4,4), 40210 TP[Call 40211 ("Hint", 40212 CTy"instruction", 40213 Call 40214 ("DataSynchronizationBarrier", 40215 CTy"Hint", 40216 Var("option", 40217 F4))), 40218 ITE(Mop(Not, 40219 bVar"GOOD_MATCH"), 40220 Apply 40221 (Call 40222 ("DECODE_UNPREDICTABLE", 40223 ATy(qTy, 40224 qTy), 40225 TP[Var("mc", 40226 CTy"MachineCode"), 40227 LS 40228 "DSB"]), 40229 qVar"s"), 40230 qVar"s")]), 40231 (LW(5,4), 40232 TP[Call 40233 ("Hint", 40234 CTy"instruction", 40235 Call 40236 ("DataMemoryBarrier", 40237 CTy"Hint", 40238 Var("option", 40239 F4))), 40240 ITE(Mop(Not, 40241 bVar"GOOD_MATCH"), 40242 Apply 40243 (Call 40244 ("DECODE_UNPREDICTABLE", 40245 ATy(qTy, 40246 qTy), 40247 TP[Var("mc", 40248 CTy"MachineCode"), 40249 LS 40250 "DMB"]), 40251 qVar"s"), 40252 qVar"s")]), 40253 (LW(6,4), 40254 TP[Call 40255 ("Hint", 40256 CTy"instruction", 40257 Call 40258 ("InstructionSynchronizationBarrier", 40259 CTy"Hint", 40260 Var("option", 40261 F4))), 40262 ITE(Mop(Not, 40263 bVar"GOOD_MATCH"), 40264 Apply 40265 (Call 40266 ("DECODE_UNPREDICTABLE", 40267 ATy(qTy, 40268 qTy), 40269 TP[Var("mc", 40270 CTy"MachineCode"), 40271 LS 40272 "ISB"]), 40273 qVar"s"), 40274 qVar"s")]), 40275 (AVar F4, 40276 ITE(Bop(Ge, 40277 Apply 40278 (Call 40279 ("ArchVersion", 40280 ATy(qTy, 40281 nTy), 40282 LU), 40283 qVar"s"), 40284 LN 7), 40285 TP[Call 40286 ("Undefined", 40287 CTy"instruction", 40288 LW(0,32)), 40289 qVar"s"], 40290 TP[LX(CTy"instruction"), 40291 Apply 40292 (Call 40293 ("DECODE_UNPREDICTABLE", 40294 ATy(qTy, 40295 qTy), 40296 TP[Var("mc", 40297 CTy"MachineCode"), 40298 LS 40299 "Miscellaneous control"]), 40300 qVar"s")]))]), 40301 TP[Apply 40302 (Call 40303 ("Skip", 40304 ATy(qTy, 40305 CTy"instruction"), 40306 LU),qVar"s"), 40307 qVar"s"])))))), 40308 (Bop(And,Mop(Not,bVar"b'26"), 40309 Bop(And,bVar"b'25", 40310 Bop(And,bVar"b'24", 40311 Bop(And,bVar"b'23", 40312 Bop(And,bVar"b'22", 40313 Bop(And, 40314 Mop(Not,bVar"b'21"), 40315 Bop(And,bVar"b'20", 40316 Bop(And, 40317 Mop(Not, 40318 bVar"b'14"), 40319 Mop(Not, 40320 bVar"b'12"))))))))), 40321 Let(Var("imm8",F8), 40322 Mop(Cast F8, 40323 LL[bVar"b'7",bVar"b'6",bVar"b'5", 40324 bVar"b'4",bVar"b'3",bVar"b'2", 40325 bVar"b'1",bVar"b'0"]), 40326 Let(bVar"GOOD_MATCH", 40327 Bop(And, 40328 EQ(Mop(Cast F4, 40329 LL[bVar"b'19",bVar"b'18", 40330 bVar"b'17",bVar"b'16"]), 40331 LW(15,4)), 40332 Bop(And, 40333 EQ(Mop(Cast F1, 40334 LL[bVar"b'13"]), 40335 LW(0,1)), 40336 EQ(Mop(Cast F4, 40337 LL[bVar"b'11", 40338 bVar"b'10", 40339 bVar"b'9", 40340 bVar"b'8"]), 40341 LW(15,4)))), 40342 Let(TP[Var("v",F4),qVar"s"], 40343 Apply 40344 (Call 40345 ("ThumbCondition", 40346 ATy(qTy,PTy(F4,qTy)),LU), 40347 qVar"state"), 40348 Let(TP[bVar"v",qVar"s"], 40349 Apply 40350 (Call 40351 ("Do", 40352 ATy(qTy,PTy(bTy,qTy)), 40353 TP[Var("v",F4), 40354 Apply 40355 (Call 40356 ("HaveThumb2", 40357 ATy(qTy,bTy), 40358 LU),qVar"s")]), 40359 qVar"s"), 40360 ITE(bVar"v", 40361 ITE(Bop(And, 40362 Apply 40363 (Call 40364 ("HaveVirtExt", 40365 ATy(qTy, 40366 bTy), 40367 LU), 40368 qVar"s"), 40369 Bop(And, 40370 EQ(Var("imm8", 40371 F8), 40372 LW(0,8)), 40373 bVar"GOOD_MATCH")), 40374 TP[Call 40375 ("System", 40376 CTy"instruction", 40377 Const 40378 ("ExceptionReturn", 40379 CTy"System")), 40380 qVar"s"], 40381 Let(TP[bVar"v", 40382 qVar"s"], 40383 Apply 40384 (Call 40385 ("CurrentModeIsHyp", 40386 ATy(qTy, 40387 PTy(bTy, 40388 qTy)), 40389 LU), 40390 ITE(Bop(Or, 40391 EQ(Apply 40392 (Call 40393 ("CurrentInstrSet", 40394 ATy(qTy, 40395 CTy"InstrSet"), 40396 LU), 40397 qVar"s"), 40398 LC("InstrSet_ThumbEE", 40399 CTy"InstrSet")), 40400 Bop(Or, 40401 Bop(And, 40402 Apply 40403 (Call 40404 ("InITBlock", 40405 ATy(qTy, 40406 bTy), 40407 LU), 40408 qVar"s"), 40409 Mop(Not, 40410 Apply 40411 (Call 40412 ("LastInITBlock", 40413 ATy(qTy, 40414 bTy), 40415 LU), 40416 qVar"s"))), 40417 Mop(Not, 40418 bVar"GOOD_MATCH"))), 40419 Apply 40420 (Call 40421 ("DECODE_UNPREDICTABLE", 40422 ATy(qTy, 40423 qTy), 40424 TP[Var("mc", 40425 CTy"MachineCode"), 40426 LS 40427 "SUBS<c> PC, LR, #0"]), 40428 qVar"s"), 40429 qVar"s")), 40430 TP[ITE(bVar"v", 40431 Call 40432 ("Undefined", 40433 CTy"instruction", 40434 LW(0, 40435 32)), 40436 Call 40437 ("Data", 40438 CTy"instruction", 40439 Call 40440 ("ArithLogicImmediate", 40441 CTy"Data", 40442 TP[LW(2, 40443 4), 40444 LT, 40445 LW(15, 40446 4), 40447 LW(14, 40448 4), 40449 Mop(Cast 40450 (FTy 12), 40451 Var("imm8", 40452 F8))]))), 40453 qVar"s"])), 40454 TP[Apply 40455 (Call 40456 ("Skip", 40457 ATy(qTy, 40458 CTy"instruction"), 40459 LU),qVar"s"), 40460 qVar"s"])))))), 40461 (Bop(And,Mop(Not,bVar"b'26"), 40462 Bop(And,bVar"b'25", 40463 Bop(And,bVar"b'24", 40464 Bop(And,bVar"b'23", 40465 Bop(And,bVar"b'22", 40466 Bop(And,bVar"b'21", 40467 Bop(And, 40468 Mop(Not, 40469 bVar"b'14"), 40470 Bop(And, 40471 Mop(Not, 40472 bVar"b'12"), 40473 bVar"b'5")))))))), 40474 Let(Var("Rd",F4), 40475 Mop(Cast F4, 40476 LL[bVar"b'11",bVar"b'10",bVar"b'9", 40477 bVar"b'8"]), 40478 Let(TP[Var("v",F4),qVar"s"], 40479 Apply 40480 (Call 40481 ("ThumbCondition", 40482 ATy(qTy,PTy(F4,qTy)),LU), 40483 qVar"state"), 40484 Let(TP[bVar"v",qVar"s"], 40485 Apply 40486 (Call 40487 ("Do", 40488 ATy(qTy,PTy(bTy,qTy)), 40489 TP[Var("v",F4), 40490 Apply 40491 (Call 40492 ("HaveVirtExt", 40493 ATy(qTy,bTy),LU), 40494 qVar"s")]),qVar"s"), 40495 ITE(bVar"v", 40496 TP[Call 40497 ("System", 40498 CTy"instruction", 40499 Call 40500 ("MoveToRegisterFromBankedOrSpecial", 40501 CTy"System", 40502 TP[EQ(Mop(Cast F1, 40503 LL[bVar"b'20"]), 40504 LW(1,1)), 40505 CC[Mop(Cast F1, 40506 LL[bVar"b'4"]), 40507 Mop(Cast F4, 40508 LL[bVar"b'19", 40509 bVar"b'18", 40510 bVar"b'17", 40511 bVar"b'16"])], 40512 Var("Rd",F4)])), 40513 ITE(Bop(Or, 40514 Bop(In, 40515 Var("Rd",F4), 40516 SL[LW(13,4), 40517 LW(15,4)]), 40518 Mop(Not, 40519 Bop(And, 40520 EQ(Mop(Cast 40521 F1, 40522 LL[bVar"b'13"]), 40523 LW(0,1)), 40524 Bop(And, 40525 EQ(Mop(Cast 40526 (FTy 2), 40527 LL[bVar"b'7", 40528 bVar"b'6"]), 40529 LW(0, 40530 2)), 40531 EQ(Mop(Cast 40532 F4, 40533 LL[bVar"b'3", 40534 bVar"b'2", 40535 bVar"b'1", 40536 bVar"b'0"]), 40537 LW(0, 40538 4)))))), 40539 Apply 40540 (Call 40541 ("DECODE_UNPREDICTABLE", 40542 ATy(qTy,qTy), 40543 TP[Var("mc", 40544 CTy"MachineCode"), 40545 LS 40546 "MoveToRegisterFromBankedOrSpecial"]), 40547 qVar"s"),qVar"s")], 40548 TP[Apply 40549 (Call 40550 ("Skip", 40551 ATy(qTy, 40552 CTy"instruction"), 40553 LU),qVar"s"), 40554 qVar"s"]))))), 40555 (Bop(And,Mop(Not,bVar"b'26"), 40556 Bop(And,bVar"b'25", 40557 Bop(And,bVar"b'24", 40558 Bop(And,bVar"b'23", 40559 Bop(And,bVar"b'22", 40560 Bop(And,bVar"b'21", 40561 Bop(And, 40562 Mop(Not, 40563 bVar"b'14"), 40564 Bop(And, 40565 Mop(Not, 40566 bVar"b'12"), 40567 Mop(Not, 40568 bVar"b'5"))))))))), 40569 Let(Var("Rd",F4), 40570 Mop(Cast F4, 40571 LL[bVar"b'11",bVar"b'10",bVar"b'9", 40572 bVar"b'8"]), 40573 Let(TP[Var("v",F4),qVar"s"], 40574 Apply 40575 (Call 40576 ("ThumbCondition", 40577 ATy(qTy,PTy(F4,qTy)),LU), 40578 qVar"state"), 40579 Let(TP[bVar"v",qVar"s"], 40580 Apply 40581 (Call 40582 ("Do", 40583 ATy(qTy,PTy(bTy,qTy)), 40584 TP[Var("v",F4), 40585 Apply 40586 (Call 40587 ("HaveThumb2", 40588 ATy(qTy,bTy),LU), 40589 qVar"s")]),qVar"s"), 40590 ITE(bVar"v", 40591 TP[Call 40592 ("System", 40593 CTy"instruction", 40594 Call 40595 ("MoveToRegisterFromSpecial", 40596 CTy"System", 40597 TP[EQ(Mop(Cast F1, 40598 LL[bVar"b'20"]), 40599 LW(1,1)), 40600 Var("Rd",F4)])), 40601 ITE(Bop(Or, 40602 Bop(In, 40603 Var("Rd",F4), 40604 SL[LW(13,4), 40605 LW(15,4)]), 40606 Mop(Not, 40607 Bop(And, 40608 EQ(Mop(Cast 40609 F4, 40610 LL[bVar"b'19", 40611 bVar"b'18", 40612 bVar"b'17", 40613 bVar"b'16"]), 40614 LW(15, 40615 4)), 40616 Bop(And, 40617 EQ(Mop(Cast 40618 F1, 40619 LL[bVar"b'13"]), 40620 LW(0, 40621 1)), 40622 Bop(And, 40623 EQ(Mop(Cast 40624 (FTy 2), 40625 LL[bVar"b'7", 40626 bVar"b'6"]), 40627 LW(0, 40628 2)), 40629 EQ(Mop(Cast 40630 (FTy 5), 40631 LL[bVar"b'4", 40632 bVar"b'3", 40633 bVar"b'2", 40634 bVar"b'1", 40635 bVar"b'0"]), 40636 LW(0, 40637 5))))))), 40638 Apply 40639 (Call 40640 ("DECODE_UNPREDICTABLE", 40641 ATy(qTy,qTy), 40642 TP[Var("mc", 40643 CTy"MachineCode"), 40644 LS 40645 "MoveToRegisterFromSpecial"]), 40646 qVar"s"),qVar"s")], 40647 TP[Apply 40648 (Call 40649 ("Skip", 40650 ATy(qTy, 40651 CTy"instruction"), 40652 LU),qVar"s"), 40653 qVar"s"]))))), 40654 (Bop(And,bVar"b'26", 40655 Bop(And,bVar"b'25", 40656 Bop(And,bVar"b'24", 40657 Bop(And,bVar"b'23", 40658 Bop(And,bVar"b'22", 40659 Bop(And,bVar"b'21", 40660 Bop(And, 40661 Mop(Not, 40662 bVar"b'20"), 40663 Bop(And, 40664 Mop(Not, 40665 bVar"b'14"), 40666 Bop(And, 40667 Mop(Not, 40668 bVar"b'13"), 40669 Mop(Not, 40670 bVar"b'12")))))))))), 40671 Let(TP[Var("v",F4),qVar"s"], 40672 Apply 40673 (Call 40674 ("ThumbCondition", 40675 ATy(qTy,PTy(F4,qTy)),LU), 40676 qVar"state"), 40677 Let(TP[bVar"v",qVar"s"], 40678 Apply 40679 (Call 40680 ("Do",ATy(qTy,PTy(bTy,qTy)), 40681 TP[Var("v",F4), 40682 Apply 40683 (Call 40684 ("HaveVirtExt", 40685 ATy(qTy,bTy),LU), 40686 qVar"s")]),qVar"s"), 40687 ITE(bVar"v", 40688 TP[Call 40689 ("System",CTy"instruction", 40690 Call 40691 ("HypervisorCall", 40692 CTy"System", 40693 CC[Mop(Cast F4, 40694 LL[bVar"b'19", 40695 bVar"b'18", 40696 bVar"b'17", 40697 bVar"b'16"]), 40698 Mop(Cast(FTy 12), 40699 LL[bVar"b'11", 40700 bVar"b'10", 40701 bVar"b'9", 40702 bVar"b'8", 40703 bVar"b'7", 40704 bVar"b'6", 40705 bVar"b'5", 40706 bVar"b'4", 40707 bVar"b'3", 40708 bVar"b'2", 40709 bVar"b'1", 40710 bVar"b'0"])])), 40711 ITE(Apply 40712 (Call 40713 ("InITBlock", 40714 ATy(qTy,bTy),LU), 40715 qVar"s"), 40716 Apply 40717 (Call 40718 ("DECODE_UNPREDICTABLE", 40719 ATy(qTy,qTy), 40720 TP[Var("mc", 40721 CTy"MachineCode"), 40722 LS 40723 "HypervisorCall"]), 40724 qVar"s"),qVar"s")], 40725 TP[Apply 40726 (Call 40727 ("Skip", 40728 ATy(qTy, 40729 CTy"instruction"), 40730 LU),qVar"s"),qVar"s"])))), 40731 (Bop(And,bVar"b'26", 40732 Bop(And,bVar"b'25", 40733 Bop(And,bVar"b'24", 40734 Bop(And,bVar"b'23", 40735 Bop(And,bVar"b'22", 40736 Bop(And,bVar"b'21", 40737 Bop(And,bVar"b'20", 40738 Bop(And, 40739 Mop(Not, 40740 bVar"b'14"), 40741 Bop(And, 40742 Mop(Not, 40743 bVar"b'13"), 40744 Mop(Not, 40745 bVar"b'12")))))))))), 40746 Let(TP[Var("v",F4),qVar"s"], 40747 Apply 40748 (Call 40749 ("ThumbCondition", 40750 ATy(qTy,PTy(F4,qTy)),LU), 40751 qVar"state"), 40752 Let(TP[bVar"v",qVar"s"], 40753 Apply 40754 (Call 40755 ("Do",ATy(qTy,PTy(bTy,qTy)), 40756 TP[Var("v",F4), 40757 Bop(And, 40758 Apply 40759 (Call 40760 ("HaveSecurityExt", 40761 ATy(qTy,bTy),LU), 40762 qVar"s"), 40763 Mop(Not, 40764 EQ(Dest 40765 ("Architecture", 40766 CTy"Architecture", 40767 qVar"s"), 40768 LC("ARMv6K", 40769 CTy"Architecture"))))]), 40770 qVar"s"), 40771 ITE(bVar"v", 40772 TP[Call 40773 ("System",CTy"instruction", 40774 Call 40775 ("SecureMonitorCall", 40776 CTy"System", 40777 Mop(Cast F4, 40778 LL[bVar"b'19", 40779 bVar"b'18", 40780 bVar"b'17", 40781 bVar"b'16"]))), 40782 ITE(Bop(Or, 40783 Bop(And, 40784 Apply 40785 (Call 40786 ("InITBlock", 40787 ATy(qTy,bTy), 40788 LU),qVar"s"), 40789 Mop(Not, 40790 Apply 40791 (Call 40792 ("LastInITBlock", 40793 ATy(qTy, 40794 bTy), 40795 LU), 40796 qVar"s"))), 40797 Mop(Not, 40798 EQ(Mop(Cast 40799 (FTy 12), 40800 LL[bVar"b'11", 40801 bVar"b'10", 40802 bVar"b'9", 40803 bVar"b'8", 40804 bVar"b'7", 40805 bVar"b'6", 40806 bVar"b'5", 40807 bVar"b'4", 40808 bVar"b'3", 40809 bVar"b'2", 40810 bVar"b'1", 40811 bVar"b'0"]), 40812 LW(0,12)))), 40813 Apply 40814 (Call 40815 ("DECODE_UNPREDICTABLE", 40816 ATy(qTy,qTy), 40817 TP[Var("mc", 40818 CTy"MachineCode"), 40819 LS 40820 "SecureMonitorCall"]), 40821 qVar"s"),qVar"s")], 40822 TP[Apply 40823 (Call 40824 ("Skip", 40825 ATy(qTy, 40826 CTy"instruction"), 40827 LU),qVar"s"),qVar"s"])))), 40828 (Bop(And,bVar"b'26", 40829 Bop(And,bVar"b'25", 40830 Bop(And,bVar"b'24", 40831 Bop(And,bVar"b'23", 40832 Bop(And,bVar"b'22", 40833 Bop(And,bVar"b'21", 40834 Bop(And,bVar"b'20", 40835 Bop(And, 40836 Mop(Not, 40837 bVar"b'14"), 40838 Bop(And, 40839 bVar"b'13", 40840 Mop(Not, 40841 bVar"b'12")))))))))), 40842 Let(TP[Var("v",F4),qVar"s"], 40843 Apply 40844 (Call 40845 ("ThumbCondition", 40846 ATy(qTy,PTy(F4,qTy)),LU), 40847 qVar"state"), 40848 Let(TP[bVar"v",qVar"s"], 40849 Apply 40850 (Call 40851 ("Do",ATy(qTy,PTy(bTy,qTy)), 40852 TP[Var("v",F4), 40853 Apply 40854 (Call 40855 ("HaveThumb2", 40856 ATy(qTy,bTy),LU), 40857 qVar"s")]),qVar"s"), 40858 TP[ITE(bVar"v", 40859 Call 40860 ("Undefined", 40861 CTy"instruction", 40862 Mop(Cast F32, 40863 CC[Mop(Cast F4, 40864 LL[bVar"b'19", 40865 bVar"b'18", 40866 bVar"b'17", 40867 bVar"b'16"]), 40868 Mop(Cast(FTy 12), 40869 LL[bVar"b'11", 40870 bVar"b'10", 40871 bVar"b'9", 40872 bVar"b'8", 40873 bVar"b'7", 40874 bVar"b'6", 40875 bVar"b'5", 40876 bVar"b'4", 40877 bVar"b'3", 40878 bVar"b'2", 40879 bVar"b'1", 40880 bVar"b'0"])])), 40881 Apply 40882 (Call 40883 ("Skip", 40884 ATy(qTy, 40885 CTy"instruction"), 40886 LU),qVar"s")),qVar"s"]))), 40887 (Bop(And,Mop(Not,bVar"b'14"), 40888 Mop(Not,bVar"b'12")), 40889 Let(TP[bVar"v",qVar"s"], 40890 Apply 40891 (Call 40892 ("Do",ATy(qTy,PTy(bTy,qTy)), 40893 TP[Mop(Cast F4, 40894 LL[bVar"b'25",bVar"b'24", 40895 bVar"b'23",bVar"b'22"]), 40896 Apply 40897 (Call 40898 ("HaveThumb2", 40899 ATy(qTy,bTy),LU), 40900 qVar"state")]),qVar"state"), 40901 ITE(bVar"v", 40902 TP[Call 40903 ("Branch",CTy"instruction", 40904 Call 40905 ("BranchTarget",CTy"Branch", 40906 Mop(SE F32, 40907 CC[Mop(Cast F1, 40908 LL[bVar"b'26"]), 40909 Mop(Cast F1, 40910 LL[bVar"b'11"]), 40911 Mop(Cast F1, 40912 LL[bVar"b'13"]), 40913 Mop(Cast(FTy 6), 40914 LL[bVar"b'21", 40915 bVar"b'20", 40916 bVar"b'19", 40917 bVar"b'18", 40918 bVar"b'17", 40919 bVar"b'16"]), 40920 Mop(Cast(FTy 11), 40921 LL[bVar"b'10", 40922 bVar"b'9", 40923 bVar"b'8", 40924 bVar"b'7", 40925 bVar"b'6", 40926 bVar"b'5", 40927 bVar"b'4", 40928 bVar"b'3", 40929 bVar"b'2", 40930 bVar"b'1", 40931 bVar"b'0"]), 40932 LW(0,1)]))), 40933 ITE(Apply 40934 (Call 40935 ("InITBlock", 40936 ATy(qTy,bTy),LU), 40937 qVar"s"), 40938 Apply 40939 (Call 40940 ("DECODE_UNPREDICTABLE", 40941 ATy(qTy,qTy), 40942 TP[Var("mc", 40943 CTy"MachineCode"), 40944 LS"BranchTarget"]), 40945 qVar"s"),qVar"s")], 40946 TP[Apply 40947 (Call 40948 ("Skip", 40949 ATy(qTy,CTy"instruction"), 40950 LU),qVar"s"),qVar"s"]))), 40951 (bVar"b'12", 40952 Let(Var("S",F1),Mop(Cast F1,LL[bVar"b'26"]), 40953 Let(Var("J2",F1), 40954 Mop(Cast F1,LL[bVar"b'11"]), 40955 Let(Var("J1",F1), 40956 Mop(Cast F1,LL[bVar"b'13"]), 40957 Let(Var("L",F1), 40958 Mop(Cast F1,LL[bVar"b'14"]), 40959 Let(TP[Var("v",F4),qVar"s"], 40960 Apply 40961 (Call 40962 ("ThumbCondition", 40963 ATy(qTy, 40964 PTy(F4,qTy)), 40965 LU),qVar"state"), 40966 Let(TP[bVar"v",qVar"s"], 40967 Apply 40968 (Call 40969 ("Do", 40970 ATy(qTy, 40971 PTy(bTy, 40972 qTy)), 40973 TP[Var("v",F4), 40974 Bop(Or, 40975 Bop(And, 40976 EQ(Var("L", 40977 F1), 40978 LW(1, 40979 1)), 40980 Bop(And, 40981 EQ(Var("J1", 40982 F1), 40983 LW(1, 40984 1)), 40985 EQ(Var("J1", 40986 F1), 40987 Var("J2", 40988 F1)))), 40989 Apply 40990 (Call 40991 ("HaveThumb2", 40992 ATy(qTy, 40993 bTy), 40994 LU), 40995 qVar"s"))]), 40996 qVar"s"), 40997 ITE(bVar"v", 40998 TP[Let(Var("imm32", 40999 F32), 41000 Mop(SE F32, 41001 CC[Var("S", 41002 F1), 41003 Mop(BNot, 41004 Bop(BXor, 41005 Var("J1", 41006 F1), 41007 Var("S", 41008 F1))), 41009 Mop(BNot, 41010 Bop(BXor, 41011 Var("J2", 41012 F1), 41013 Var("S", 41014 F1))), 41015 Mop(Cast 41016 (FTy 10), 41017 LL[bVar"b'25", 41018 bVar"b'24", 41019 bVar"b'23", 41020 bVar"b'22", 41021 bVar"b'21", 41022 bVar"b'20", 41023 bVar"b'19", 41024 bVar"b'18", 41025 bVar"b'17", 41026 bVar"b'16"]), 41027 Mop(Cast 41028 (FTy 11), 41029 LL[bVar"b'10", 41030 bVar"b'9", 41031 bVar"b'8", 41032 bVar"b'7", 41033 bVar"b'6", 41034 bVar"b'5", 41035 bVar"b'4", 41036 bVar"b'3", 41037 bVar"b'2", 41038 bVar"b'1", 41039 bVar"b'0"]), 41040 LW(0, 41041 1)]), 41042 ITE(EQ(Var("L", 41043 F1), 41044 LW(1, 41045 1)), 41046 Call 41047 ("Branch", 41048 CTy"instruction", 41049 Call 41050 ("BranchLinkExchangeImmediate", 41051 CTy"Branch", 41052 TP[LC("InstrSet_Thumb", 41053 CTy"InstrSet"), 41054 Var("imm32", 41055 F32)])), 41056 Call 41057 ("Branch", 41058 CTy"instruction", 41059 Call 41060 ("BranchTarget", 41061 CTy"Branch", 41062 Var("imm32", 41063 F32))))), 41064 ITE(Bop(And, 41065 Apply 41066 (Call 41067 ("InITBlock", 41068 ATy(qTy, 41069 bTy), 41070 LU), 41071 qVar"s"), 41072 Mop(Not, 41073 Apply 41074 (Call 41075 ("LastInITBlock", 41076 ATy(qTy, 41077 bTy), 41078 LU), 41079 qVar"s"))), 41080 Apply 41081 (Call 41082 ("DECODE_UNPREDICTABLE", 41083 ATy(qTy, 41084 qTy), 41085 TP[Var("mc", 41086 CTy"MachineCode"), 41087 LS 41088 "BranchTarget or BranchLinkExchangeImmediate"]), 41089 qVar"s"), 41090 qVar"s")], 41091 TP[Apply 41092 (Call 41093 ("Skip", 41094 ATy(qTy, 41095 CTy"instruction"), 41096 LU), 41097 qVar"s"), 41098 qVar"s"])))))))), 41099 (Bop(And,bVar"b'14",Mop(Not,bVar"b'12")), 41100 Let(Var("S",F1),Mop(Cast F1,LL[bVar"b'26"]), 41101 Let(Var("J2",F1), 41102 Mop(Cast F1,LL[bVar"b'11"]), 41103 Let(Var("J1",F1), 41104 Mop(Cast F1,LL[bVar"b'13"]), 41105 Let(TP[Var("v",F4),qVar"s"], 41106 Apply 41107 (Call 41108 ("ThumbCondition", 41109 ATy(qTy,PTy(F4,qTy)), 41110 LU),qVar"state"), 41111 Let(TP[bVar"v",qVar"s"], 41112 Apply 41113 (Call 41114 ("Do", 41115 ATy(qTy, 41116 PTy(bTy,qTy)), 41117 TP[Var("v",F4), 41118 Bop(And, 41119 Mop(Not, 41120 Bop(Or, 41121 EQ(Apply 41122 (Call 41123 ("CurrentInstrSet", 41124 ATy(qTy, 41125 CTy"InstrSet"), 41126 LU), 41127 qVar"s"), 41128 LC("InstrSet_ThumbEE", 41129 CTy"InstrSet")), 41130 EQ(Mop(Cast 41131 F1, 41132 LL[bVar"b'0"]), 41133 LW(1, 41134 1)))), 41135 ITE(Bop(And, 41136 EQ(Var("J1", 41137 F1), 41138 LW(1, 41139 1)), 41140 EQ(Var("J1", 41141 F1), 41142 Var("J2", 41143 F1))), 41144 Bop(Ge, 41145 Apply 41146 (Call 41147 ("ArchVersion", 41148 ATy(qTy, 41149 nTy), 41150 LU), 41151 qVar"s"), 41152 LN 41153 5), 41154 Apply 41155 (Call 41156 ("HaveThumb2", 41157 ATy(qTy, 41158 bTy), 41159 LU), 41160 qVar"s")))]), 41161 qVar"s"), 41162 ITE(bVar"v", 41163 TP[Call 41164 ("Branch", 41165 CTy"instruction", 41166 Call 41167 ("BranchLinkExchangeImmediate", 41168 CTy"Branch", 41169 TP[LC("InstrSet_ARM", 41170 CTy"InstrSet"), 41171 Mop(SE F32, 41172 CC[Var("S", 41173 F1), 41174 Mop(BNot, 41175 Bop(BXor, 41176 Var("J1", 41177 F1), 41178 Var("S", 41179 F1))), 41180 Mop(BNot, 41181 Bop(BXor, 41182 Var("J2", 41183 F1), 41184 Var("S", 41185 F1))), 41186 Mop(Cast 41187 (FTy 10), 41188 LL[bVar"b'25", 41189 bVar"b'24", 41190 bVar"b'23", 41191 bVar"b'22", 41192 bVar"b'21", 41193 bVar"b'20", 41194 bVar"b'19", 41195 bVar"b'18", 41196 bVar"b'17", 41197 bVar"b'16"]), 41198 Mop(Cast 41199 (FTy 10), 41200 LL[bVar"b'10", 41201 bVar"b'9", 41202 bVar"b'8", 41203 bVar"b'7", 41204 bVar"b'6", 41205 bVar"b'5", 41206 bVar"b'4", 41207 bVar"b'3", 41208 bVar"b'2", 41209 bVar"b'1"]), 41210 LW(0, 41211 2)])])), 41212 ITE(Bop(And, 41213 Apply 41214 (Call 41215 ("InITBlock", 41216 ATy(qTy, 41217 bTy), 41218 LU), 41219 qVar"s"), 41220 Mop(Not, 41221 Apply 41222 (Call 41223 ("LastInITBlock", 41224 ATy(qTy, 41225 bTy), 41226 LU), 41227 qVar"s"))), 41228 Apply 41229 (Call 41230 ("DECODE_UNPREDICTABLE", 41231 ATy(qTy, 41232 qTy), 41233 TP[Var("mc", 41234 CTy"MachineCode"), 41235 LS 41236 "BranchLinkExchangeImmediate"]), 41237 qVar"s"), 41238 qVar"s")], 41239 TP[Apply 41240 (Call 41241 ("Skip", 41242 ATy(qTy, 41243 CTy"instruction"), 41244 LU),qVar"s"), 41245 qVar"s"])))))))], 41246 Apply 41247 (Call 41248 ("UndefinedThumb", 41249 ATy(qTy,PTy(CTy"instruction",qTy)),LU), 41250 qVar"state")), 41251 Apply 41252 (Call 41253 ("UndefinedThumb", 41254 ATy(qTy,PTy(CTy"instruction",qTy)),LU), 41255 qVar"state"))), 41256 (Bop(And,bVar"b'31", 41257 Bop(And,bVar"b'30",Bop(And,bVar"b'29",bVar"b'28"))), 41258 ITB([(Mop(Not,bVar"b'25"), 41259 Let(Var("Rn",F4), 41260 Mop(Cast F4, 41261 LL[bVar"b'19",bVar"b'18",bVar"b'17", 41262 bVar"b'16"]), 41263 Let(Var("S",F1),Mop(Cast F1,LL[bVar"b'20"]), 41264 Let(Var("Rd",F4), 41265 Mop(Cast F4, 41266 LL[bVar"b'11",bVar"b'10", 41267 bVar"b'9",bVar"b'8"]), 41268 Let(TP[Var("v",F4),qVar"s"], 41269 Apply 41270 (Call 41271 ("ThumbCondition", 41272 ATy(qTy,PTy(F4,qTy)),LU), 41273 qVar"state"), 41274 Let(TP[bVar"v",qVar"s"], 41275 Apply 41276 (Call 41277 ("Do", 41278 ATy(qTy,PTy(bTy,qTy)), 41279 TP[Var("v",F4), 41280 Apply 41281 (Call 41282 ("HaveThumb2", 41283 ATy(qTy,bTy), 41284 LU),qVar"s")]), 41285 qVar"s"), 41286 ITE(bVar"v", 41287 Let(Var("imm12",FTy 12), 41288 CC[Mop(Cast F1, 41289 LL[bVar"b'26"]), 41290 Mop(Cast(FTy 3), 41291 LL[bVar"b'14", 41292 bVar"b'13", 41293 bVar"b'12"]), 41294 Mop(Cast F8, 41295 LL[bVar"b'7", 41296 bVar"b'6", 41297 bVar"b'5", 41298 bVar"b'4", 41299 bVar"b'3", 41300 bVar"b'2", 41301 bVar"b'1", 41302 bVar"b'0"])], 41303 Let(bVar"setflags", 41304 EQ(Var("S",F1), 41305 LW(1,1)), 41306 CS(TP[Mop(Cast 41307 F4, 41308 LL[bVar"b'24", 41309 bVar"b'23", 41310 bVar"b'22", 41311 bVar"b'21"]), 41312 Var("Rn", 41313 F4), 41314 Var("Rd", 41315 F4), 41316 Var("S",F1)], 41317 [(TP[LW(0,4), 41318 AVar F4, 41319 LW(15,4), 41320 LW(1,1)], 41321 TP[Call 41322 ("Data", 41323 CTy"instruction", 41324 Call 41325 ("TestCompareImmediate", 41326 CTy"Data", 41327 TP[LW(0, 41328 2), 41329 Var("Rn", 41330 F4), 41331 Var("imm12", 41332 FTy 12)])), 41333 ITE(Bop(In, 41334 Var("Rn", 41335 F4), 41336 SL[LW(13, 41337 4), 41338 LW(15, 41339 4)]), 41340 Apply 41341 (Call 41342 ("DECODE_UNPREDICTABLE", 41343 ATy(qTy, 41344 qTy), 41345 TP[Var("mc", 41346 CTy"MachineCode"), 41347 LS 41348 "TST (immediate)"]), 41349 qVar"s"), 41350 qVar"s")]), 41351 (TP[LW(0,4), 41352 AVar 41353 (PTy(F4, 41354 PTy(F4, 41355 F1)))], 41356 TP[Call 41357 ("Data", 41358 CTy"instruction", 41359 Call 41360 ("ArithLogicImmediate", 41361 CTy"Data", 41362 TP[LW(0, 41363 4), 41364 bVar"setflags", 41365 Var("Rd", 41366 F4), 41367 Var("Rn", 41368 F4), 41369 Var("imm12", 41370 FTy 12)])), 41371 ITE(Bop(Or, 41372 EQ(Var("Rd", 41373 F4), 41374 LW(13, 41375 4)), 41376 Bop(Or, 41377 Bop(And, 41378 EQ(Var("Rd", 41379 F4), 41380 LW(15, 41381 4)), 41382 Mop(Not, 41383 bVar"setflags")), 41384 Bop(In, 41385 Var("Rn", 41386 F4), 41387 SL[LW(13, 41388 4), 41389 LW(15, 41390 4)]))), 41391 Apply 41392 (Call 41393 ("DECODE_UNPREDICTABLE", 41394 ATy(qTy, 41395 qTy), 41396 TP[Var("mc", 41397 CTy"MachineCode"), 41398 LS 41399 "AND (immediate)"]), 41400 qVar"s"), 41401 qVar"s")]), 41402 (TP[LW(1,4), 41403 AVar 41404 (PTy(F4, 41405 PTy(F4, 41406 F1)))], 41407 TP[Call 41408 ("Data", 41409 CTy"instruction", 41410 Call 41411 ("ArithLogicImmediate", 41412 CTy"Data", 41413 TP[LW(14, 41414 4), 41415 bVar"setflags", 41416 Var("Rd", 41417 F4), 41418 Var("Rn", 41419 F4), 41420 Var("imm12", 41421 FTy 12)])), 41422 ITE(Bop(Or, 41423 Bop(In, 41424 Var("Rd", 41425 F4), 41426 SL[LW(13, 41427 4), 41428 LW(15, 41429 4)]), 41430 Bop(In, 41431 Var("Rn", 41432 F4), 41433 SL[LW(13, 41434 4), 41435 LW(15, 41436 4)])), 41437 Apply 41438 (Call 41439 ("DECODE_UNPREDICTABLE", 41440 ATy(qTy, 41441 qTy), 41442 TP[Var("mc", 41443 CTy"MachineCode"), 41444 LS 41445 "BIC (immediate)"]), 41446 qVar"s"), 41447 qVar"s")]), 41448 (TP[LW(2,4), 41449 LW(15,4), 41450 AVar 41451 (PTy(F4, 41452 F1))], 41453 TP[Call 41454 ("Data", 41455 CTy"instruction", 41456 Call 41457 ("Move", 41458 CTy"Data", 41459 TP[bVar"setflags", 41460 LF, 41461 Var("Rd", 41462 F4), 41463 Var("imm12", 41464 FTy 12)])), 41465 ITE(Bop(In, 41466 Var("Rd", 41467 F4), 41468 SL[LW(13, 41469 4), 41470 LW(15, 41471 4)]), 41472 Apply 41473 (Call 41474 ("DECODE_UNPREDICTABLE", 41475 ATy(qTy, 41476 qTy), 41477 TP[Var("mc", 41478 CTy"MachineCode"), 41479 LS 41480 "MOV (immediate)"]), 41481 qVar"s"), 41482 qVar"s")]), 41483 (TP[LW(2,4), 41484 AVar 41485 (PTy(F4, 41486 PTy(F4, 41487 F1)))], 41488 TP[Call 41489 ("Data", 41490 CTy"instruction", 41491 Call 41492 ("ArithLogicImmediate", 41493 CTy"Data", 41494 TP[LW(12, 41495 4), 41496 bVar"setflags", 41497 Var("Rd", 41498 F4), 41499 Var("Rn", 41500 F4), 41501 Var("imm12", 41502 FTy 12)])), 41503 ITE(Bop(Or, 41504 Bop(In, 41505 Var("Rd", 41506 F4), 41507 SL[LW(13, 41508 4), 41509 LW(15, 41510 4)]), 41511 EQ(Var("Rn", 41512 F4), 41513 LW(13, 41514 4))), 41515 Apply 41516 (Call 41517 ("DECODE_UNPREDICTABLE", 41518 ATy(qTy, 41519 qTy), 41520 TP[Var("mc", 41521 CTy"MachineCode"), 41522 LS 41523 "ORR (immediate)"]), 41524 qVar"s"), 41525 qVar"s")]), 41526 (TP[LW(3,4), 41527 LW(15,4), 41528 AVar 41529 (PTy(F4, 41530 F1))], 41531 TP[Call 41532 ("Data", 41533 CTy"instruction", 41534 Call 41535 ("Move", 41536 CTy"Data", 41537 TP[bVar"setflags", 41538 LT, 41539 Var("Rd", 41540 F4), 41541 Var("imm12", 41542 FTy 12)])), 41543 ITE(Bop(In, 41544 Var("Rd", 41545 F4), 41546 SL[LW(13, 41547 4), 41548 LW(15, 41549 4)]), 41550 Apply 41551 (Call 41552 ("DECODE_UNPREDICTABLE", 41553 ATy(qTy, 41554 qTy), 41555 TP[Var("mc", 41556 CTy"MachineCode"), 41557 LS 41558 "MVN (immediate)"]), 41559 qVar"s"), 41560 qVar"s")]), 41561 (TP[LW(3,4), 41562 AVar 41563 (PTy(F4, 41564 PTy(F4, 41565 F1)))], 41566 TP[Call 41567 ("Data", 41568 CTy"instruction", 41569 Call 41570 ("ArithLogicImmediate", 41571 CTy"Data", 41572 TP[LW(15, 41573 4), 41574 bVar"setflags", 41575 Var("Rd", 41576 F4), 41577 Var("Rn", 41578 F4), 41579 Var("imm12", 41580 FTy 12)])), 41581 ITE(Bop(Or, 41582 Bop(In, 41583 Var("Rd", 41584 F4), 41585 SL[LW(13, 41586 4), 41587 LW(15, 41588 4)]), 41589 EQ(Var("Rn", 41590 F4), 41591 LW(13, 41592 4))), 41593 Apply 41594 (Call 41595 ("DECODE_UNPREDICTABLE", 41596 ATy(qTy, 41597 qTy), 41598 TP[Var("mc", 41599 CTy"MachineCode"), 41600 LS 41601 "ORN (immediate)"]), 41602 qVar"s"), 41603 qVar"s")]), 41604 (TP[LW(4,4), 41605 AVar F4, 41606 LW(15,4), 41607 LW(1,1)], 41608 TP[Call 41609 ("Data", 41610 CTy"instruction", 41611 Call 41612 ("TestCompareImmediate", 41613 CTy"Data", 41614 TP[LW(1, 41615 2), 41616 Var("Rn", 41617 F4), 41618 Var("imm12", 41619 FTy 12)])), 41620 ITE(Bop(In, 41621 Var("Rn", 41622 F4), 41623 SL[LW(13, 41624 4), 41625 LW(15, 41626 4)]), 41627 Apply 41628 (Call 41629 ("DECODE_UNPREDICTABLE", 41630 ATy(qTy, 41631 qTy), 41632 TP[Var("mc", 41633 CTy"MachineCode"), 41634 LS 41635 "TEQ (immediate)"]), 41636 qVar"s"), 41637 qVar"s")]), 41638 (TP[LW(4,4), 41639 AVar 41640 (PTy(F4, 41641 PTy(F4, 41642 F1)))], 41643 TP[Call 41644 ("Data", 41645 CTy"instruction", 41646 Call 41647 ("ArithLogicImmediate", 41648 CTy"Data", 41649 TP[LW(1, 41650 4), 41651 bVar"setflags", 41652 Var("Rd", 41653 F4), 41654 Var("Rn", 41655 F4), 41656 Var("imm12", 41657 FTy 12)])), 41658 ITE(Bop(Or, 41659 EQ(Var("Rd", 41660 F4), 41661 LW(13, 41662 4)), 41663 Bop(Or, 41664 Bop(And, 41665 EQ(Var("Rd", 41666 F4), 41667 LW(15, 41668 4)), 41669 Mop(Not, 41670 bVar"setflags")), 41671 Bop(In, 41672 Var("Rn", 41673 F4), 41674 SL[LW(13, 41675 4), 41676 LW(15, 41677 4)]))), 41678 Apply 41679 (Call 41680 ("DECODE_UNPREDICTABLE", 41681 ATy(qTy, 41682 qTy), 41683 TP[Var("mc", 41684 CTy"MachineCode"), 41685 LS 41686 "EOR (immediate)"]), 41687 qVar"s"), 41688 qVar"s")]), 41689 (TP[LW(8,4), 41690 AVar F4, 41691 LW(15,4), 41692 LW(1,1)], 41693 TP[Call 41694 ("Data", 41695 CTy"instruction", 41696 Call 41697 ("TestCompareImmediate", 41698 CTy"Data", 41699 TP[LW(3, 41700 2), 41701 Var("Rn", 41702 F4), 41703 Var("imm12", 41704 FTy 12)])), 41705 ITE(EQ(Var("Rn", 41706 F4), 41707 LW(15, 41708 4)), 41709 Apply 41710 (Call 41711 ("DECODE_UNPREDICTABLE", 41712 ATy(qTy, 41713 qTy), 41714 TP[Var("mc", 41715 CTy"MachineCode"), 41716 LS 41717 "CMN (immediate)"]), 41718 qVar"s"), 41719 qVar"s")]), 41720 (TP[LW(8,4), 41721 AVar 41722 (PTy(F4, 41723 PTy(F4, 41724 F1)))], 41725 TP[Call 41726 ("Data", 41727 CTy"instruction", 41728 Call 41729 ("ArithLogicImmediate", 41730 CTy"Data", 41731 TP[LW(4, 41732 4), 41733 bVar"setflags", 41734 Var("Rd", 41735 F4), 41736 Var("Rn", 41737 F4), 41738 Var("imm12", 41739 FTy 12)])), 41740 ITE(Bop(Or, 41741 EQ(Var("Rd", 41742 F4), 41743 LW(13, 41744 4)), 41745 Bop(Or, 41746 Bop(And, 41747 EQ(Var("Rd", 41748 F4), 41749 LW(15, 41750 4)), 41751 Mop(Not, 41752 bVar"setflags")), 41753 EQ(Var("Rn", 41754 F4), 41755 LW(15, 41756 4)))), 41757 Apply 41758 (Call 41759 ("DECODE_UNPREDICTABLE", 41760 ATy(qTy, 41761 qTy), 41762 TP[Var("mc", 41763 CTy"MachineCode"), 41764 LS 41765 "ADD (immediate)"]), 41766 qVar"s"), 41767 qVar"s")]), 41768 (TP[LW(10,4), 41769 AVar 41770 (PTy(F4, 41771 PTy(F4, 41772 F1)))], 41773 TP[Call 41774 ("Data", 41775 CTy"instruction", 41776 Call 41777 ("ArithLogicImmediate", 41778 CTy"Data", 41779 TP[LW(5, 41780 4), 41781 bVar"setflags", 41782 Var("Rd", 41783 F4), 41784 Var("Rn", 41785 F4), 41786 Var("imm12", 41787 FTy 12)])), 41788 ITE(Bop(Or, 41789 Bop(In, 41790 Var("Rd", 41791 F4), 41792 SL[LW(13, 41793 4), 41794 LW(15, 41795 4)]), 41796 Bop(In, 41797 Var("Rn", 41798 F4), 41799 SL[LW(13, 41800 4), 41801 LW(15, 41802 4)])), 41803 Apply 41804 (Call 41805 ("DECODE_UNPREDICTABLE", 41806 ATy(qTy, 41807 qTy), 41808 TP[Var("mc", 41809 CTy"MachineCode"), 41810 LS 41811 "ADC (immediate)"]), 41812 qVar"s"), 41813 qVar"s")]), 41814 (TP[LW(11,4), 41815 AVar 41816 (PTy(F4, 41817 PTy(F4, 41818 F1)))], 41819 TP[Call 41820 ("Data", 41821 CTy"instruction", 41822 Call 41823 ("ArithLogicImmediate", 41824 CTy"Data", 41825 TP[LW(6, 41826 4), 41827 bVar"setflags", 41828 Var("Rd", 41829 F4), 41830 Var("Rn", 41831 F4), 41832 Var("imm12", 41833 FTy 12)])), 41834 ITE(Bop(Or, 41835 Bop(In, 41836 Var("Rd", 41837 F4), 41838 SL[LW(13, 41839 4), 41840 LW(15, 41841 4)]), 41842 Bop(In, 41843 Var("Rn", 41844 F4), 41845 SL[LW(13, 41846 4), 41847 LW(15, 41848 4)])), 41849 Apply 41850 (Call 41851 ("DECODE_UNPREDICTABLE", 41852 ATy(qTy, 41853 qTy), 41854 TP[Var("mc", 41855 CTy"MachineCode"), 41856 LS 41857 "SBC (immediate)"]), 41858 qVar"s"), 41859 qVar"s")]), 41860 (TP[LW(13,4), 41861 AVar F4, 41862 LW(15,4), 41863 LW(1,1)], 41864 TP[Call 41865 ("Data", 41866 CTy"instruction", 41867 Call 41868 ("TestCompareImmediate", 41869 CTy"Data", 41870 TP[LW(2, 41871 2), 41872 Var("Rn", 41873 F4), 41874 Var("imm12", 41875 FTy 12)])), 41876 ITE(EQ(Var("Rn", 41877 F4), 41878 LW(15, 41879 4)), 41880 Apply 41881 (Call 41882 ("DECODE_UNPREDICTABLE", 41883 ATy(qTy, 41884 qTy), 41885 TP[Var("mc", 41886 CTy"MachineCode"), 41887 LS 41888 "CMP (immediate)"]), 41889 qVar"s"), 41890 qVar"s")]), 41891 (TP[LW(13,4), 41892 AVar 41893 (PTy(F4, 41894 PTy(F4, 41895 F1)))], 41896 TP[Call 41897 ("Data", 41898 CTy"instruction", 41899 Call 41900 ("ArithLogicImmediate", 41901 CTy"Data", 41902 TP[LW(2, 41903 4), 41904 bVar"setflags", 41905 Var("Rd", 41906 F4), 41907 Var("Rn", 41908 F4), 41909 Var("imm12", 41910 FTy 12)])), 41911 ITE(Bop(Or, 41912 EQ(Var("Rd", 41913 F4), 41914 LW(13, 41915 4)), 41916 Bop(Or, 41917 Bop(And, 41918 EQ(Var("Rd", 41919 F4), 41920 LW(15, 41921 4)), 41922 Mop(Not, 41923 bVar"setflags")), 41924 EQ(Var("Rn", 41925 F4), 41926 LW(15, 41927 4)))), 41928 Apply 41929 (Call 41930 ("DECODE_UNPREDICTABLE", 41931 ATy(qTy, 41932 qTy), 41933 TP[Var("mc", 41934 CTy"MachineCode"), 41935 LS 41936 "SUB (immediate)"]), 41937 qVar"s"), 41938 qVar"s")]), 41939 (TP[LW(14,4), 41940 AVar 41941 (PTy(F4, 41942 PTy(F4, 41943 F1)))], 41944 TP[Call 41945 ("Data", 41946 CTy"instruction", 41947 Call 41948 ("ArithLogicImmediate", 41949 CTy"Data", 41950 TP[LW(3, 41951 4), 41952 bVar"setflags", 41953 Var("Rd", 41954 F4), 41955 Var("Rn", 41956 F4), 41957 Var("imm12", 41958 FTy 12)])), 41959 ITE(Bop(Or, 41960 Bop(In, 41961 Var("Rd", 41962 F4), 41963 SL[LW(13, 41964 4), 41965 LW(15, 41966 4)]), 41967 Bop(In, 41968 Var("Rn", 41969 F4), 41970 SL[LW(13, 41971 4), 41972 LW(15, 41973 4)])), 41974 Apply 41975 (Call 41976 ("DECODE_UNPREDICTABLE", 41977 ATy(qTy, 41978 qTy), 41979 TP[Var("mc", 41980 CTy"MachineCode"), 41981 LS 41982 "RSB (immediate)"]), 41983 qVar"s"), 41984 qVar"s")]), 41985 (AVar 41986 (PTy(F4, 41987 PTy(F4, 41988 PTy(F4, 41989 F1)))), 41990 TP[Call 41991 ("Undefined", 41992 CTy"instruction", 41993 LW(0, 41994 32)), 41995 qVar"s"])]))), 41996 TP[Apply 41997 (Call 41998 ("Skip", 41999 ATy(qTy, 42000 CTy"instruction"), 42001 LU),qVar"s"), 42002 qVar"s"]))))))), 42003 (Bop(And,bVar"b'25", 42004 Bop(And,Mop(Not,bVar"b'24"), 42005 Bop(And,Mop(Not,bVar"b'23"), 42006 Bop(And,Mop(Not,bVar"b'22"), 42007 Bop(And,Mop(Not,bVar"b'21"), 42008 Mop(Not,bVar"b'20")))))), 42009 Let(Var("Rd",F4), 42010 Mop(Cast F4, 42011 LL[bVar"b'11",bVar"b'10",bVar"b'9", 42012 bVar"b'8"]), 42013 Let(TP[Var("v",F4),qVar"s"], 42014 Apply 42015 (Call 42016 ("ThumbCondition", 42017 ATy(qTy,PTy(F4,qTy)),LU), 42018 qVar"state"), 42019 Let(TP[bVar"v",qVar"s"], 42020 Apply 42021 (Call 42022 ("Do",ATy(qTy,PTy(bTy,qTy)), 42023 TP[Var("v",F4), 42024 Apply 42025 (Call 42026 ("HaveThumb2", 42027 ATy(qTy,bTy),LU), 42028 qVar"s")]),qVar"s"), 42029 ITE(bVar"v", 42030 TP[Call 42031 ("Data",CTy"instruction", 42032 Call 42033 ("AddSub",CTy"Data", 42034 TP[LF,Var("Rd",F4), 42035 Mop(Cast F4, 42036 LL[bVar"b'19", 42037 bVar"b'18", 42038 bVar"b'17", 42039 bVar"b'16"]), 42040 CC[Mop(Cast F1, 42041 LL[bVar"b'26"]), 42042 Mop(Cast(FTy 3), 42043 LL[bVar"b'14", 42044 bVar"b'13", 42045 bVar"b'12"]), 42046 Mop(Cast F8, 42047 LL[bVar"b'7", 42048 bVar"b'6", 42049 bVar"b'5", 42050 bVar"b'4", 42051 bVar"b'3", 42052 bVar"b'2", 42053 bVar"b'1", 42054 bVar"b'0"])]])), 42055 ITE(Bop(In,Var("Rd",F4), 42056 SL[LW(13,4),LW(15,4)]), 42057 Apply 42058 (Call 42059 ("DECODE_UNPREDICTABLE", 42060 ATy(qTy,qTy), 42061 TP[Var("mc", 42062 CTy"MachineCode"), 42063 LS 42064 "ADDW (immediate)"]), 42065 qVar"s"),qVar"s")], 42066 TP[Apply 42067 (Call 42068 ("Skip", 42069 ATy(qTy, 42070 CTy"instruction"), 42071 LU),qVar"s"),qVar"s"]))))), 42072 (Bop(And,bVar"b'25", 42073 Bop(And,Mop(Not,bVar"b'24"), 42074 Bop(And,bVar"b'23", 42075 Bop(And,Mop(Not,bVar"b'22"), 42076 Bop(And,bVar"b'21", 42077 Mop(Not,bVar"b'20")))))), 42078 Let(Var("Rd",F4), 42079 Mop(Cast F4, 42080 LL[bVar"b'11",bVar"b'10",bVar"b'9", 42081 bVar"b'8"]), 42082 Let(TP[Var("v",F4),qVar"s"], 42083 Apply 42084 (Call 42085 ("ThumbCondition", 42086 ATy(qTy,PTy(F4,qTy)),LU), 42087 qVar"state"), 42088 Let(TP[bVar"v",qVar"s"], 42089 Apply 42090 (Call 42091 ("Do",ATy(qTy,PTy(bTy,qTy)), 42092 TP[Var("v",F4), 42093 Apply 42094 (Call 42095 ("HaveThumb2", 42096 ATy(qTy,bTy),LU), 42097 qVar"s")]),qVar"s"), 42098 ITE(bVar"v", 42099 TP[Call 42100 ("Data",CTy"instruction", 42101 Call 42102 ("AddSub",CTy"Data", 42103 TP[LT,Var("Rd",F4), 42104 Mop(Cast F4, 42105 LL[bVar"b'19", 42106 bVar"b'18", 42107 bVar"b'17", 42108 bVar"b'16"]), 42109 CC[Mop(Cast F1, 42110 LL[bVar"b'26"]), 42111 Mop(Cast(FTy 3), 42112 LL[bVar"b'14", 42113 bVar"b'13", 42114 bVar"b'12"]), 42115 Mop(Cast F8, 42116 LL[bVar"b'7", 42117 bVar"b'6", 42118 bVar"b'5", 42119 bVar"b'4", 42120 bVar"b'3", 42121 bVar"b'2", 42122 bVar"b'1", 42123 bVar"b'0"])]])), 42124 ITE(Bop(In,Var("Rd",F4), 42125 SL[LW(13,4),LW(15,4)]), 42126 Apply 42127 (Call 42128 ("DECODE_UNPREDICTABLE", 42129 ATy(qTy,qTy), 42130 TP[Var("mc", 42131 CTy"MachineCode"), 42132 LS 42133 "SUBW (immediate)"]), 42134 qVar"s"),qVar"s")], 42135 TP[Apply 42136 (Call 42137 ("Skip", 42138 ATy(qTy, 42139 CTy"instruction"), 42140 LU),qVar"s"),qVar"s"]))))), 42141 (Bop(And,bVar"b'25", 42142 Bop(And,Mop(Not,bVar"b'24"), 42143 Bop(And,bVar"b'22", 42144 Bop(And,Mop(Not,bVar"b'21"), 42145 Mop(Not,bVar"b'20"))))), 42146 Let(Var("Rd",F4), 42147 Mop(Cast F4, 42148 LL[bVar"b'11",bVar"b'10",bVar"b'9", 42149 bVar"b'8"]), 42150 Let(TP[Var("v",F4),qVar"s"], 42151 Apply 42152 (Call 42153 ("ThumbCondition", 42154 ATy(qTy,PTy(F4,qTy)),LU), 42155 qVar"state"), 42156 Let(TP[bVar"v",qVar"s"], 42157 Apply 42158 (Call 42159 ("Do",ATy(qTy,PTy(bTy,qTy)), 42160 TP[Var("v",F4), 42161 Apply 42162 (Call 42163 ("HaveThumb2", 42164 ATy(qTy,bTy),LU), 42165 qVar"s")]),qVar"s"), 42166 ITE(bVar"v", 42167 TP[Call 42168 ("Data",CTy"instruction", 42169 Call 42170 ("MoveHalfword", 42171 CTy"Data", 42172 TP[EQ(Mop(Cast F1, 42173 LL[bVar"b'23"]), 42174 LW(1,1)), 42175 Var("Rd",F4), 42176 CC[Mop(Cast F4, 42177 LL[bVar"b'19", 42178 bVar"b'18", 42179 bVar"b'17", 42180 bVar"b'16"]), 42181 Mop(Cast F1, 42182 LL[bVar"b'26"]), 42183 Mop(Cast(FTy 3), 42184 LL[bVar"b'14", 42185 bVar"b'13", 42186 bVar"b'12"]), 42187 Mop(Cast F8, 42188 LL[bVar"b'7", 42189 bVar"b'6", 42190 bVar"b'5", 42191 bVar"b'4", 42192 bVar"b'3", 42193 bVar"b'2", 42194 bVar"b'1", 42195 bVar"b'0"])]])), 42196 ITE(Bop(In,Var("Rd",F4), 42197 SL[LW(13,4),LW(15,4)]), 42198 Apply 42199 (Call 42200 ("DECODE_UNPREDICTABLE", 42201 ATy(qTy,qTy), 42202 TP[Var("mc", 42203 CTy"MachineCode"), 42204 LS 42205 "MOVT or MOVW (immediate)"]), 42206 qVar"s"),qVar"s")], 42207 TP[Apply 42208 (Call 42209 ("Skip", 42210 ATy(qTy, 42211 CTy"instruction"), 42212 LU),qVar"s"),qVar"s"]))))), 42213 (Bop(And,bVar"b'25", 42214 Bop(And,bVar"b'24", 42215 Bop(And,Mop(Not,bVar"b'22"), 42216 Bop(And,bVar"b'21", 42217 Bop(And,Mop(Not,bVar"b'20"), 42218 Bop(And,Mop(Not,bVar"b'14"), 42219 Bop(And, 42220 Mop(Not,bVar"b'13"), 42221 Bop(And, 42222 Mop(Not, 42223 bVar"b'12"), 42224 Bop(And, 42225 Mop(Not, 42226 bVar"b'7"), 42227 Mop(Not, 42228 bVar"b'6")))))))))), 42229 Let(Var("Rn",F4), 42230 Mop(Cast F4, 42231 LL[bVar"b'19",bVar"b'18",bVar"b'17", 42232 bVar"b'16"]), 42233 Let(Var("sat_imm",F4), 42234 Mop(Cast F4, 42235 LL[bVar"b'3",bVar"b'2",bVar"b'1", 42236 bVar"b'0"]), 42237 Let(Var("Rd",F4), 42238 Mop(Cast F4, 42239 LL[bVar"b'11",bVar"b'10", 42240 bVar"b'9",bVar"b'8"]), 42241 Let(TP[Var("v",F4),qVar"s"], 42242 Apply 42243 (Call 42244 ("ThumbCondition", 42245 ATy(qTy,PTy(F4,qTy)),LU), 42246 qVar"state"), 42247 Let(TP[bVar"v",qVar"s"], 42248 Apply 42249 (Call 42250 ("Do", 42251 ATy(qTy,PTy(bTy,qTy)), 42252 TP[Var("v",F4), 42253 Apply 42254 (Call 42255 ("HaveThumb2", 42256 ATy(qTy,bTy), 42257 LU),qVar"s")]), 42258 qVar"s"), 42259 ITE(bVar"v", 42260 TP[Let(bVar"unsigned", 42261 EQ(Mop(Cast F1, 42262 LL[bVar"b'23"]), 42263 LW(1,1)), 42264 Call 42265 ("Media", 42266 CTy"instruction", 42267 Call 42268 ("Saturate16", 42269 CTy"Media", 42270 TP[ITE(bVar"unsigned", 42271 Mop(Cast 42272 nTy, 42273 Var("sat_imm", 42274 F4)), 42275 Bop(Add, 42276 Mop(Cast 42277 nTy, 42278 Var("sat_imm", 42279 F4)), 42280 LN 42281 1)), 42282 bVar"unsigned", 42283 Var("Rd", 42284 F4), 42285 Var("Rn", 42286 F4)]))), 42287 ITE(Bop(Or, 42288 Bop(In, 42289 Var("Rd", 42290 F4), 42291 SL[LW(13, 42292 4), 42293 LW(15, 42294 4)]), 42295 Bop(Or, 42296 Bop(In, 42297 Var("Rn", 42298 F4), 42299 SL[LW(13, 42300 4), 42301 LW(15, 42302 4)]), 42303 Mop(Not, 42304 Bop(And, 42305 EQ(Mop(Cast 42306 F1, 42307 LL[bVar"b'26"]), 42308 LW(0, 42309 1)), 42310 EQ(Mop(Cast 42311 (FTy 2), 42312 LL[bVar"b'5", 42313 bVar"b'4"]), 42314 LW(0, 42315 2)))))), 42316 Apply 42317 (Call 42318 ("DECODE_UNPREDICTABLE", 42319 ATy(qTy,qTy), 42320 TP[Var("mc", 42321 CTy"MachineCode"), 42322 LS 42323 "Saturate16"]), 42324 qVar"s"), 42325 qVar"s")], 42326 TP[Apply 42327 (Call 42328 ("Skip", 42329 ATy(qTy, 42330 CTy"instruction"), 42331 LU),qVar"s"), 42332 qVar"s"]))))))), 42333 (Bop(And,bVar"b'25", 42334 Bop(And,bVar"b'24", 42335 Bop(And,Mop(Not,bVar"b'22"), 42336 Mop(Not,bVar"b'20")))), 42337 Let(Var("Rn",F4), 42338 Mop(Cast F4, 42339 LL[bVar"b'19",bVar"b'18",bVar"b'17", 42340 bVar"b'16"]), 42341 Let(Var("sat_imm",FTy 5), 42342 Mop(Cast(FTy 5), 42343 LL[bVar"b'4",bVar"b'3",bVar"b'2", 42344 bVar"b'1",bVar"b'0"]), 42345 Let(Var("Rd",F4), 42346 Mop(Cast F4, 42347 LL[bVar"b'11",bVar"b'10", 42348 bVar"b'9",bVar"b'8"]), 42349 Let(TP[Var("v",F4),qVar"s"], 42350 Apply 42351 (Call 42352 ("ThumbCondition", 42353 ATy(qTy,PTy(F4,qTy)),LU), 42354 qVar"state"), 42355 Let(TP[bVar"v",qVar"s"], 42356 Apply 42357 (Call 42358 ("Do", 42359 ATy(qTy,PTy(bTy,qTy)), 42360 TP[Var("v",F4), 42361 Apply 42362 (Call 42363 ("HaveThumb2", 42364 ATy(qTy,bTy), 42365 LU),qVar"s")]), 42366 qVar"s"), 42367 ITE(bVar"v", 42368 TP[Let(bVar"unsigned", 42369 EQ(Mop(Cast F1, 42370 LL[bVar"b'23"]), 42371 LW(1,1)), 42372 Let(TP[Var("shift_t", 42373 CTy"SRType"), 42374 nVar"shift_n"], 42375 Call 42376 ("DecodeImmShift", 42377 PTy(CTy"SRType", 42378 nTy), 42379 TP[CC[Mop(Cast 42380 F1, 42381 LL[bVar"b'21"]), 42382 LW(0, 42383 1)], 42384 CC[Mop(Cast 42385 (FTy 3), 42386 LL[bVar"b'14", 42387 bVar"b'13", 42388 bVar"b'12"]), 42389 Mop(Cast 42390 (FTy 2), 42391 LL[bVar"b'7", 42392 bVar"b'6"])]]), 42393 Call 42394 ("Media", 42395 CTy"instruction", 42396 Call 42397 ("Saturate", 42398 CTy"Media", 42399 TP[Var("shift_t", 42400 CTy"SRType"), 42401 nVar"shift_n", 42402 ITE(bVar"unsigned", 42403 Mop(Cast 42404 nTy, 42405 Var("sat_imm", 42406 FTy 5)), 42407 Bop(Add, 42408 Mop(Cast 42409 nTy, 42410 Var("sat_imm", 42411 FTy 5)), 42412 LN 42413 1)), 42414 bVar"unsigned", 42415 Var("Rd", 42416 F4), 42417 Var("Rn", 42418 F4)])))), 42419 ITE(Bop(Or, 42420 Bop(In, 42421 Var("Rd", 42422 F4), 42423 SL[LW(13, 42424 4), 42425 LW(15, 42426 4)]), 42427 Bop(Or, 42428 Bop(In, 42429 Var("Rn", 42430 F4), 42431 SL[LW(13, 42432 4), 42433 LW(15, 42434 4)]), 42435 Mop(Not, 42436 Bop(And, 42437 EQ(Mop(Cast 42438 F1, 42439 LL[bVar"b'26"]), 42440 LW(0, 42441 1)), 42442 EQ(Mop(Cast 42443 F1, 42444 LL[bVar"b'5"]), 42445 LW(0, 42446 1)))))), 42447 Apply 42448 (Call 42449 ("DECODE_UNPREDICTABLE", 42450 ATy(qTy,qTy), 42451 TP[Var("mc", 42452 CTy"MachineCode"), 42453 LS 42454 "Saturate"]), 42455 qVar"s"), 42456 qVar"s")], 42457 TP[Apply 42458 (Call 42459 ("Skip", 42460 ATy(qTy, 42461 CTy"instruction"), 42462 LU),qVar"s"), 42463 qVar"s"]))))))), 42464 (Bop(And,bVar"b'25", 42465 Bop(And,bVar"b'24", 42466 Bop(And,bVar"b'22", 42467 Bop(And,Mop(Not,bVar"b'21"), 42468 Mop(Not,bVar"b'20"))))), 42469 Let(Var("Rn",F4), 42470 Mop(Cast F4, 42471 LL[bVar"b'19",bVar"b'18",bVar"b'17", 42472 bVar"b'16"]), 42473 Let(Var("Rd",F4), 42474 Mop(Cast F4, 42475 LL[bVar"b'11",bVar"b'10",bVar"b'9", 42476 bVar"b'8"]), 42477 Let(TP[Var("v",F4),qVar"s"], 42478 Apply 42479 (Call 42480 ("ThumbCondition", 42481 ATy(qTy,PTy(F4,qTy)),LU), 42482 qVar"state"), 42483 Let(TP[bVar"v",qVar"s"], 42484 Apply 42485 (Call 42486 ("Do", 42487 ATy(qTy,PTy(bTy,qTy)), 42488 TP[Var("v",F4), 42489 Apply 42490 (Call 42491 ("HaveThumb2", 42492 ATy(qTy,bTy),LU), 42493 qVar"s")]),qVar"s"), 42494 ITE(bVar"v", 42495 Let(nVar"widthminus1", 42496 Mop(Cast nTy, 42497 Mop(Cast(FTy 5), 42498 LL[bVar"b'4", 42499 bVar"b'3", 42500 bVar"b'2", 42501 bVar"b'1", 42502 bVar"b'0"])), 42503 Let(nVar"lsbit", 42504 Mop(Cast nTy, 42505 CC[Mop(Cast 42506 (FTy 3), 42507 LL[bVar"b'14", 42508 bVar"b'13", 42509 bVar"b'12"]), 42510 Mop(Cast 42511 (FTy 2), 42512 LL[bVar"b'7", 42513 bVar"b'6"])]), 42514 TP[Call 42515 ("Media", 42516 CTy"instruction", 42517 Call 42518 ("BitFieldExtract", 42519 CTy"Media", 42520 TP[EQ(Mop(Cast 42521 F1, 42522 LL[bVar"b'23"]), 42523 LW(1, 42524 1)), 42525 Var("Rd", 42526 F4), 42527 Var("Rn", 42528 F4), 42529 nVar"lsbit", 42530 nVar"widthminus1"])), 42531 ITE(Bop(Or, 42532 Bop(In, 42533 Var("Rd", 42534 F4), 42535 SL[LW(13, 42536 4), 42537 LW(15, 42538 4)]), 42539 Bop(Or, 42540 Bop(In, 42541 Var("Rn", 42542 F4), 42543 SL[LW(13, 42544 4), 42545 LW(15, 42546 4)]), 42547 Bop(Or, 42548 Bop(Lt, 42549 LN 42550 31, 42551 Bop(Add, 42552 nVar"lsbit", 42553 nVar"widthminus1")), 42554 Mop(Not, 42555 Bop(And, 42556 EQ(Mop(Cast 42557 F1, 42558 LL[bVar"b'26"]), 42559 LW(0, 42560 1)), 42561 EQ(Mop(Cast 42562 F1, 42563 LL[bVar"b'5"]), 42564 LW(0, 42565 1))))))), 42566 Apply 42567 (Call 42568 ("DECODE_UNPREDICTABLE", 42569 ATy(qTy, 42570 qTy), 42571 TP[Var("mc", 42572 CTy"MachineCode"), 42573 LS 42574 "BitFieldExtract"]), 42575 qVar"s"), 42576 qVar"s")])), 42577 TP[Apply 42578 (Call 42579 ("Skip", 42580 ATy(qTy, 42581 CTy"instruction"), 42582 LU),qVar"s"), 42583 qVar"s"])))))), 42584 (Bop(And,bVar"b'25", 42585 Bop(And,bVar"b'24", 42586 Bop(And,Mop(Not,bVar"b'23"), 42587 Bop(And,bVar"b'22", 42588 Bop(And,bVar"b'21", 42589 Mop(Not,bVar"b'20")))))), 42590 Let(Var("Rn",F4), 42591 Mop(Cast F4, 42592 LL[bVar"b'19",bVar"b'18",bVar"b'17", 42593 bVar"b'16"]), 42594 Let(Var("Rd",F4), 42595 Mop(Cast F4, 42596 LL[bVar"b'11",bVar"b'10",bVar"b'9", 42597 bVar"b'8"]), 42598 Let(TP[Var("v",F4),qVar"s"], 42599 Apply 42600 (Call 42601 ("ThumbCondition", 42602 ATy(qTy,PTy(F4,qTy)),LU), 42603 qVar"state"), 42604 Let(TP[bVar"v",qVar"s"], 42605 Apply 42606 (Call 42607 ("Do", 42608 ATy(qTy,PTy(bTy,qTy)), 42609 TP[Var("v",F4), 42610 Apply 42611 (Call 42612 ("HaveThumb2", 42613 ATy(qTy,bTy),LU), 42614 qVar"s")]),qVar"s"), 42615 ITE(bVar"v", 42616 Let(nVar"msbit", 42617 Mop(Cast nTy, 42618 Mop(Cast(FTy 5), 42619 LL[bVar"b'4", 42620 bVar"b'3", 42621 bVar"b'2", 42622 bVar"b'1", 42623 bVar"b'0"])), 42624 Let(nVar"lsbit", 42625 Mop(Cast nTy, 42626 CC[Mop(Cast 42627 (FTy 3), 42628 LL[bVar"b'14", 42629 bVar"b'13", 42630 bVar"b'12"]), 42631 Mop(Cast 42632 (FTy 2), 42633 LL[bVar"b'7", 42634 bVar"b'6"])]), 42635 TP[Call 42636 ("Media", 42637 CTy"instruction", 42638 Call 42639 ("BitFieldClearOrInsert", 42640 CTy"Media", 42641 TP[Var("Rd", 42642 F4), 42643 Var("Rn", 42644 F4), 42645 nVar"lsbit", 42646 nVar"msbit"])), 42647 ITE(Bop(Or, 42648 Bop(In, 42649 Var("Rd", 42650 F4), 42651 SL[LW(13, 42652 4), 42653 LW(15, 42654 4)]), 42655 Bop(Or, 42656 EQ(Var("Rn", 42657 F4), 42658 LW(13, 42659 4)), 42660 Bop(Or, 42661 Bop(Lt, 42662 nVar"msbit", 42663 nVar"lsbit"), 42664 Mop(Not, 42665 Bop(And, 42666 EQ(Mop(Cast 42667 F1, 42668 LL[bVar"b'26"]), 42669 LW(0, 42670 1)), 42671 EQ(Mop(Cast 42672 F1, 42673 LL[bVar"b'5"]), 42674 LW(0, 42675 1))))))), 42676 Apply 42677 (Call 42678 ("DECODE_UNPREDICTABLE", 42679 ATy(qTy, 42680 qTy), 42681 TP[Var("mc", 42682 CTy"MachineCode"), 42683 LS 42684 "BitFieldClearOrInsert"]), 42685 qVar"s"), 42686 qVar"s")])), 42687 TP[Apply 42688 (Call 42689 ("Skip", 42690 ATy(qTy, 42691 CTy"instruction"), 42692 LU),qVar"s"), 42693 qVar"s"]))))))], 42694 Apply 42695 (Call 42696 ("UndefinedThumb", 42697 ATy(qTy,PTy(CTy"instruction",qTy)),LU), 42698 qVar"state")))], 42699 Apply 42700 (Call 42701 ("UndefinedThumb", 42702 ATy(qTy,PTy(CTy"instruction",qTy)),LU),qVar"state")))))) 42703; 42704val Decode_def = Def 42705 ("Decode",Var("mc",CTy"MachineCode"), 42706 Close 42707 (qVar"state", 42708 CS(Var("mc",CTy"MachineCode"), 42709 [(Call("ARM",CTy"MachineCode",Var("w",F32)), 42710 Apply 42711 (Call 42712 ("DecodeARM",ATy(qTy,PTy(CTy"instruction",qTy)), 42713 Var("w",F32)),qVar"state")), 42714 (Call("Thumb",CTy"MachineCode",Var("h",F16)), 42715 Apply 42716 (Call 42717 ("DecodeThumb",ATy(qTy,PTy(CTy"instruction",qTy)), 42718 Var("h",F16)),qVar"state")), 42719 (Call("ThumbEE",CTy"MachineCode",Var("h",F16)), 42720 Apply 42721 (Call 42722 ("DecodeThumbEE",ATy(qTy,PTy(CTy"instruction",qTy)), 42723 Var("h",F16)),qVar"state")), 42724 (Call("Thumb2",CTy"MachineCode",Var("hs",PTy(F16,F16))), 42725 Apply 42726 (Call 42727 ("DecodeThumb2",ATy(qTy,PTy(CTy"instruction",qTy)), 42728 Var("hs",PTy(F16,F16))),qVar"state")), 42729 (Call("BadCode",CTy"MachineCode",sVar"s"), 42730 Apply 42731 (Call 42732 ("raise'exception",ATy(qTy,PTy(CTy"instruction",qTy)), 42733 Call("UNPREDICTABLE",CTy"exception",sVar"s")),qVar"state"))]))) 42734; 42735val Next_def = Def 42736 ("Next",qVar"state", 42737 Let(TP[Var("v",CTy"MachineCode"),qVar"s"], 42738 Apply 42739 (Const("Fetch",ATy(qTy,PTy(CTy"MachineCode",qTy))),qVar"state"), 42740 Apply 42741 (Call("ITAdvance",ATy(qTy,qTy),LU), 42742 Let(TP[Var("v",CTy"instruction"),qVar"s"], 42743 Apply 42744 (Call 42745 ("Decode",ATy(qTy,PTy(CTy"instruction",qTy)), 42746 Var("v",CTy"MachineCode")),qVar"s"), 42747 Apply 42748 (Call("Run",ATy(qTy,qTy),Var("v",CTy"instruction")), 42749 qVar"s"))))) 42750; 42751val EncodeARMImmediate_aux_def = Def 42752 ("EncodeARMImmediate_aux",TP[Var("n",F4),Var("x",F32)], 42753 ITB([(EQ(EX(Var("x",F32),LN 31,LN 8,FTy 24),LW(0,24)), 42754 Mop(Some, 42755 CC[Bop(Sub,LW(15,4),Var("n",F4)), 42756 EX(Var("x",F32),LN 7,LN 0,F8)])), 42757 (EQ(Var("n",F4),LW(0,4)),LO(FTy 12))], 42758 Call 42759 ("EncodeARMImmediate_aux",OTy(FTy 12), 42760 TP[Bop(Sub,Var("n",F4),LW(1,4)),Bop(Rol,Var("x",F32),LN 2)]))) 42761; 42762val EncodeARMImmediate_def = Def 42763 ("EncodeARMImmediate",Var("x",F32), 42764 Call("EncodeARMImmediate_aux",OTy(FTy 12),TP[LW(15,4),Var("x",F32)])) 42765; 42766val EncodeImmShift_def = Def 42767 ("EncodeImmShift",TP[Var("shift_t",CTy"SRType"),nVar"shift_n"], 42768 CS(Var("shift_t",CTy"SRType"), 42769 [(LC("SRType_LSL",CTy"SRType"), 42770 TP[LW(0,2),Mop(Cast(FTy 5),nVar"shift_n")]), 42771 (LC("SRType_LSR",CTy"SRType"), 42772 TP[LW(1,2), 42773 ITE(EQ(nVar"shift_n",LN 32),LW(0,5), 42774 Mop(Cast(FTy 5),nVar"shift_n"))]), 42775 (LC("SRType_ASR",CTy"SRType"), 42776 TP[LW(2,2), 42777 ITE(EQ(nVar"shift_n",LN 32),LW(0,5), 42778 Mop(Cast(FTy 5),nVar"shift_n"))]), 42779 (LC("SRType_ROR",CTy"SRType"), 42780 TP[LW(3,2),Mop(Cast(FTy 5),nVar"shift_n")]), 42781 (LC("SRType_RRX",CTy"SRType"),TP[LW(3,2),LW(0,5)])])) 42782; 42783val EncodeRegShift_def = Def 42784 ("EncodeRegShift",Var("shift_t",CTy"SRType"), 42785 CS(Var("shift_t",CTy"SRType"), 42786 [(LC("SRType_LSL",CTy"SRType"),LW(0,2)), 42787 (LC("SRType_LSR",CTy"SRType"),LW(1,2)), 42788 (LC("SRType_ASR",CTy"SRType"),LW(2,2)), 42789 (LC("SRType_ROR",CTy"SRType"),LW(3,2)), 42790 (LC("SRType_RRX",CTy"SRType"),LX(FTy 2))])) 42791; 42792val EncodeAddSubOpc_def = Def 42793 ("EncodeAddSubOpc",Var("opc",FTy 2), 42794 CS(Var("opc",FTy 2), 42795 [(LW(0,2),LW(1,3)),(LW(1,2),LW(2,3)),(LW(2,2),LW(6,3)), 42796 (LW(3,2),LW(5,3))])) 42797; 42798val EncodeVFPImmediate_def = Def 42799 ("EncodeVFPImmediate",TP[Var("imm64",F64),bVar"single_register"], 42800 ITB([(bVar"single_register", 42801 ITE(Bop(And,EQ(EX(Var("imm64",F64),LN 18,LN 0,FTy 19),LW(0,19)), 42802 Bop(And, 42803 Bop(In,EX(Var("imm64",F64),LN 29,LN 25,FTy 5), 42804 SL[LW(0,5),LW(31,5)]), 42805 Bop(And, 42806 Mop(Not, 42807 EQ(Bop(Bit,Var("imm64",F64),LN 25), 42808 Bop(Bit,Var("imm64",F64),LN 30))), 42809 EQ(EX(Var("imm64",F64),LN 63,LN 32,F32),LW(0,32))))), 42810 Mop(Some, 42811 CC[EX(Var("imm64",F64),LN 31,LN 31,F1), 42812 EX(Var("imm64",F64),LN 25,LN 25,F1), 42813 EX(Var("imm64",F64),LN 24,LN 19,FTy 6)]),LO F8)), 42814 (Bop(And,EQ(EX(Var("imm64",F64),LN 47,LN 0,FTy 48),LW(0,48)), 42815 Bop(And, 42816 Bop(In,EX(Var("imm64",F64),LN 61,LN 54,F8), 42817 SL[LW(0,8),LW(255,8)]), 42818 Mop(Not, 42819 EQ(Bop(Bit,Var("imm64",F64),LN 61), 42820 Bop(Bit,Var("imm64",F64),LN 62))))), 42821 Mop(Some, 42822 CC[EX(Var("imm64",F64),LN 63,LN 63,F1), 42823 EX(Var("imm64",F64),LN 54,LN 54,F1), 42824 EX(Var("imm64",F64),LN 53,LN 48,FTy 6)]))],LO F8)) 42825; 42826val EncodeVFPReg_def = Def 42827 ("EncodeVFPReg",TP[Var("d",FTy 5),bVar"single_register"], 42828 ITE(bVar"single_register", 42829 TP[EX(Var("d",FTy 5),LN 0,LN 0,F1),EX(Var("d",FTy 5),LN 4,LN 1,F4)], 42830 TP[EX(Var("d",FTy 5),LN 4,LN 4,F1),EX(Var("d",FTy 5),LN 3,LN 0,F4)])) 42831; 42832val e_branch_def = Def 42833 ("e_branch",TP[Var("c",F4),Var("ast",CTy"Branch")], 42834 CS(Var("ast",CTy"Branch"), 42835 [(Call("BranchTarget",CTy"Branch",Var("imm32",F32)), 42836 ITE(Bop(And,Bop(Le,Mop(Neg,LW(33554432,32)),Var("imm32",F32)), 42837 Bop(And,Bop(Le,Var("imm32",F32),LW(33554428,32)), 42838 Call("Aligned",bTy,TP[Var("imm32",F32),LN 4]))), 42839 Call 42840 ("ARM",CTy"MachineCode", 42841 CC[Var("c",F4),LW(10,4), 42842 EX(Var("imm32",F32),LN 25,LN 2,FTy 24)]), 42843 Call("BadCode",CTy"MachineCode",LS"B: bad offset"))), 42844 (Call("BranchExchange",CTy"Branch",Var("Rm",F4)), 42845 Call 42846 ("ARM",CTy"MachineCode", 42847 CC[Var("c",F4),LW(1245169,24),Var("Rm",F4)])), 42848 (Call 42849 ("BranchLinkExchangeImmediate",CTy"Branch", 42850 TP[Var("targetInstrSet",CTy"InstrSet"),Var("imm32",F32)]), 42851 ITE(EQ(Var("c",F4),LW(14,4)), 42852 ITB([(EQ(Var("targetInstrSet",CTy"InstrSet"), 42853 LC("InstrSet_ARM",CTy"InstrSet")), 42854 ITE(Bop(And, 42855 Bop(Le,Mop(Neg,LW(33554432,32)),Var("imm32",F32)), 42856 Bop(And, 42857 Bop(Le,Var("imm32",F32),LW(33554428,32)), 42858 Call 42859 ("Aligned",bTy,TP[Var("imm32",F32),LN 4]))), 42860 Call 42861 ("ARM",CTy"MachineCode", 42862 CC[Var("c",F4),LW(11,4), 42863 EX(Var("imm32",F32),LN 25,LN 2,FTy 24)]), 42864 Call("BadCode",CTy"MachineCode",LS"BL: bad offset"))), 42865 (Bop(And, 42866 Bop(Le,Mop(Neg,LW(33554432,32)),Var("imm32",F32)), 42867 Bop(And,Bop(Le,Var("imm32",F32),LW(33554430,32)), 42868 Call("Aligned",bTy,TP[Var("imm32",F32),LN 2]))), 42869 Call 42870 ("ARM",CTy"MachineCode", 42871 CC[LW(125,7),EX(Var("imm32",F32),LN 1,LN 1,F1), 42872 EX(Var("imm32",F32),LN 25,LN 2,FTy 24)]))], 42873 Call 42874 ("BadCode",CTy"MachineCode", 42875 LS"BLX (immediate): bad offset")), 42876 Call("BadCode",CTy"MachineCode",LS"BLX (immediate)"))), 42877 (Call("BranchLinkExchangeRegister",CTy"Branch",Var("Rm",F4)), 42878 Call 42879 ("ARM",CTy"MachineCode", 42880 CC[Var("c",F4),LW(1245171,24),Var("Rm",F4)])), 42881 (Call 42882 ("CompareBranch",CTy"Branch", 42883 TP[bVar"nonzero",Var("n",F4),Var("imm32",F32)]), 42884 Call("BadCode",CTy"MachineCode",LS"CBZ")), 42885 (Call 42886 ("TableBranchByte",CTy"Branch", 42887 TP[bVar"is_tbh",Var("Rm",F4),Var("Rn",F4)]), 42888 Call("BadCode",CTy"MachineCode",LS"CBZ")), 42889 (Call("CheckArray",CTy"Branch",TP[Var("Rm",F4),Var("n",F4)]), 42890 Call("BadCode",CTy"MachineCode",LS"CHKA")), 42891 (Call 42892 ("HandlerBranchLink",CTy"Branch", 42893 TP[bVar"generate_link",Var("handler_offset",F32)]), 42894 Call("BadCode",CTy"MachineCode",LS"HB{L}")), 42895 (Call 42896 ("HandlerBranchLinkParameter",CTy"Branch", 42897 TP[Var("imm32",F32),Var("handler_offset",F32)]), 42898 Call("BadCode",CTy"MachineCode",LS"HBLP")), 42899 (Call 42900 ("HandlerBranchParameter",CTy"Branch", 42901 TP[Var("imm32",F32),Var("handler_offset",F32)]), 42902 Call("BadCode",CTy"MachineCode",LS"CBZ"))])) 42903; 42904val e_vfp_def = Def 42905 ("e_vfp",TP[Var("c",F4),Var("ast",CTy"VFP")], 42906 CS(Var("ast",CTy"VFP"), 42907 [(Call("vmrs",CTy"VFP",Var("t",F4)), 42908 Call 42909 ("ARM",CTy"MachineCode", 42910 CC[Var("c",F4),LW(3825,12),Var("t",F4),LW(2576,12)])), 42911 (Call("vmsr",CTy"VFP",Var("t",F4)), 42912 Call 42913 ("ARM",CTy"MachineCode", 42914 CC[Var("c",F4),LW(3809,12),Var("t",F4),LW(2576,12)])), 42915 (Call 42916 ("vcmp",CTy"VFP", 42917 TP[bVar"dp_operation",Var("d",FTy 5),Mop(Some,Var("m",FTy 5))]), 42918 Let(TP[Var("D",F1),Var("Vd",F4)], 42919 Call 42920 ("EncodeVFPReg",PTy(F1,F4), 42921 TP[Var("d",FTy 5),Mop(Not,bVar"dp_operation")]), 42922 Let(TP[Var("M",F1),Var("Vm",F4)], 42923 Call 42924 ("EncodeVFPReg",PTy(F1,F4), 42925 TP[Var("m",FTy 5),Mop(Not,bVar"dp_operation")]), 42926 Call 42927 ("ARM",CTy"MachineCode", 42928 CC[Var("c",F4),LW(29,5),Var("D",F1),LW(52,6), 42929 Var("Vd",F4),LW(5,3), 42930 Mop(Cast F1,bVar"dp_operation"),LW(3,2),Var("M",F1), 42931 LW(0,1),Var("Vm",F4)])))), 42932 (Call 42933 ("vcmp",CTy"VFP",TP[bVar"dp_operation",Var("d",FTy 5),LO(FTy 5)]), 42934 Let(TP[Var("D",F1),Var("Vd",F4)], 42935 Call 42936 ("EncodeVFPReg",PTy(F1,F4), 42937 TP[Var("d",FTy 5),Mop(Not,bVar"dp_operation")]), 42938 Call 42939 ("ARM",CTy"MachineCode", 42940 CC[Var("c",F4),LW(29,5),Var("D",F1),LW(53,6),Var("Vd",F4), 42941 LW(5,3),Mop(Cast F1,bVar"dp_operation"),LW(192,8)]))), 42942 (Call 42943 ("vcvt_float",CTy"VFP", 42944 TP[bVar"double_to_single",Var("d",FTy 5),Var("m",FTy 5)]), 42945 Let(TP[Var("D",F1),Var("Vd",F4)], 42946 Call 42947 ("EncodeVFPReg",PTy(F1,F4), 42948 TP[Var("d",FTy 5),bVar"double_to_single"]), 42949 Let(TP[Var("M",F1),Var("Vm",F4)], 42950 Call 42951 ("EncodeVFPReg",PTy(F1,F4), 42952 TP[Var("m",FTy 5),Mop(Not,bVar"double_to_single")]), 42953 Call 42954 ("ARM",CTy"MachineCode", 42955 CC[Var("c",F4),LW(29,5),Var("D",F1),LW(55,6), 42956 Var("Vd",F4),LW(5,3), 42957 Mop(Cast F1,bVar"double_to_single"),LW(3,2), 42958 Var("M",F1),LW(0,1),Var("Vm",F4)])))), 42959 (Call 42960 ("vcvt_from_integer",CTy"VFP", 42961 TP[bVar"dp_operation",bVar"unsigned",Var("d",FTy 5), 42962 Var("m",FTy 5)]), 42963 Let(TP[Var("D",F1),Var("Vd",F4)], 42964 Call 42965 ("EncodeVFPReg",PTy(F1,F4), 42966 TP[Var("d",FTy 5),Mop(Not,bVar"dp_operation")]), 42967 Let(TP[Var("M",F1),Var("Vm",F4)], 42968 Call("EncodeVFPReg",PTy(F1,F4),TP[Var("m",FTy 5),LT]), 42969 Call 42970 ("ARM",CTy"MachineCode", 42971 CC[Var("c",F4),LW(29,5),Var("D",F1),LW(56,6), 42972 Var("Vd",F4),LW(5,3), 42973 Mop(Cast F1,bVar"dp_operation"), 42974 Mop(Cast F1,Mop(Not,bVar"unsigned")),LW(1,1), 42975 Var("M",F1),LW(0,1),Var("Vm",F4)])))), 42976 (Call 42977 ("vcvt_to_integer",CTy"VFP", 42978 TP[bVar"dp_operation",bVar"unsigned",bVar"round_zero", 42979 Var("d",FTy 5),Var("m",FTy 5)]), 42980 Let(TP[Var("D",F1),Var("Vd",F4)], 42981 Call("EncodeVFPReg",PTy(F1,F4),TP[Var("d",FTy 5),LT]), 42982 Let(TP[Var("M",F1),Var("Vm",F4)], 42983 Call 42984 ("EncodeVFPReg",PTy(F1,F4), 42985 TP[Var("m",FTy 5),Mop(Not,bVar"dp_operation")]), 42986 Call 42987 ("ARM",CTy"MachineCode", 42988 CC[Var("c",F4),LW(29,5),Var("D",F1),LW(30,5), 42989 Mop(Cast F1,Mop(Not,bVar"unsigned")),Var("Vd",F4), 42990 LW(5,3),Mop(Cast F1,bVar"dp_operation"), 42991 Mop(Cast F1,bVar"round_zero"),LW(1,1),Var("M",F1), 42992 LW(0,1),Var("Vm",F4)])))), 42993 (Call 42994 ("vmov_imm",CTy"VFP", 42995 TP[bVar"single_register",Var("d",FTy 5),Var("imm64",F64)]), 42996 CS(Call 42997 ("EncodeVFPImmediate",OTy F8, 42998 TP[Var("imm64",F64),bVar"single_register"]), 42999 [(Mop(Some,Var("v#0",F8)), 43000 Let(TP[Var("D",F1),Var("Vd",F4)], 43001 Call 43002 ("EncodeVFPReg",PTy(F1,F4), 43003 TP[Var("d",FTy 5),bVar"single_register"]), 43004 Call 43005 ("ARM",CTy"MachineCode", 43006 CC[Var("c",F4),LW(29,5),Var("D",F1),LW(3,2), 43007 EX(Var("v#0",F8),LN 7,LN 4,F4),Var("Vd",F4), 43008 LW(5,3), 43009 Mop(Cast F1,Mop(Not,bVar"single_register")), 43010 LW(0,4),EX(Var("v#0",F8),LN 3,LN 0,F4)]))), 43011 (LO F8,Call("BadCode",CTy"MachineCode",LS"VMOV (immediate)"))])), 43012 (Call 43013 ("vmov",CTy"VFP", 43014 TP[bVar"single_register",Var("d",FTy 5),Var("m",FTy 5)]), 43015 Let(TP[Var("D",F1),Var("Vd",F4)], 43016 Call 43017 ("EncodeVFPReg",PTy(F1,F4), 43018 TP[Var("d",FTy 5),bVar"single_register"]), 43019 Let(TP[Var("M",F1),Var("Vm",F4)], 43020 Call 43021 ("EncodeVFPReg",PTy(F1,F4), 43022 TP[Var("m",FTy 5),bVar"single_register"]), 43023 Call 43024 ("ARM",CTy"MachineCode", 43025 CC[Var("c",F4),LW(29,5),Var("D",F1),LW(48,6), 43026 Var("Vd",F4),LW(5,3), 43027 Mop(Cast F1,Mop(Not,bVar"single_register")),LW(1,2), 43028 Var("M",F1),LW(0,1),Var("Vm",F4)])))), 43029 (Call 43030 ("vmov_single",CTy"VFP", 43031 TP[bVar"to_arm_register",Var("t",F4),Var("n",FTy 5)]), 43032 Let(TP[Var("N",F1),Var("Vn",F4)], 43033 Call("EncodeVFPReg",PTy(F1,F4),TP[Var("n",FTy 5),LT]), 43034 Call 43035 ("ARM",CTy"MachineCode", 43036 CC[Var("c",F4),LW(112,7), 43037 Mop(Cast F1,bVar"to_arm_register"),Var("Vn",F4), 43038 Var("t",F4),LW(10,4),Var("N",F1),LW(16,7)]))), 43039 (Call 43040 ("vmov_two_singles",CTy"VFP", 43041 TP[bVar"to_arm_registers",Var("t",F4),Var("t2",F4), 43042 Var("m",FTy 5)]), 43043 Let(TP[Var("M",F1),Var("Vm",F4)], 43044 Call("EncodeVFPReg",PTy(F1,F4),TP[Var("m",FTy 5),LT]), 43045 Call 43046 ("ARM",CTy"MachineCode", 43047 CC[Var("c",F4),LW(98,7), 43048 Mop(Cast F1,bVar"to_arm_registers"),Var("t2",F4), 43049 Var("t",F4),LW(40,6),Var("M",F1),LW(1,1),Var("Vm",F4)]))), 43050 (Call 43051 ("vmov_double",CTy"VFP", 43052 TP[bVar"to_arm_registers",Var("t",F4),Var("t2",F4), 43053 Var("m",FTy 5)]), 43054 Let(TP[Var("M",F1),Var("Vm",F4)], 43055 Call("EncodeVFPReg",PTy(F1,F4),TP[Var("m",FTy 5),LF]), 43056 Call 43057 ("ARM",CTy"MachineCode", 43058 CC[Var("c",F4),LW(98,7), 43059 Mop(Cast F1,bVar"to_arm_registers"),Var("t2",F4), 43060 Var("t",F4),LW(44,6),Var("M",F1),LW(1,1),Var("Vm",F4)]))), 43061 (Call 43062 ("vabs",CTy"VFP", 43063 TP[bVar"dp_operation",Var("d",FTy 5),Var("m",FTy 5)]), 43064 Let(TP[Var("D",F1),Var("Vd",F4)], 43065 Call 43066 ("EncodeVFPReg",PTy(F1,F4), 43067 TP[Var("d",FTy 5),Mop(Not,bVar"dp_operation")]), 43068 Let(TP[Var("M",F1),Var("Vm",F4)], 43069 Call 43070 ("EncodeVFPReg",PTy(F1,F4), 43071 TP[Var("m",FTy 5),Mop(Not,bVar"dp_operation")]), 43072 Call 43073 ("ARM",CTy"MachineCode", 43074 CC[Var("c",F4),LW(29,5),Var("D",F1),LW(48,6), 43075 Var("Vd",F4),LW(5,3), 43076 Mop(Cast F1,bVar"dp_operation"),LW(3,2),Var("M",F1), 43077 LW(0,1),Var("Vm",F4)])))), 43078 (Call 43079 ("vneg",CTy"VFP", 43080 TP[bVar"dp_operation",Var("d",FTy 5),Var("m",FTy 5)]), 43081 Let(TP[Var("D",F1),Var("Vd",F4)], 43082 Call 43083 ("EncodeVFPReg",PTy(F1,F4), 43084 TP[Var("d",FTy 5),Mop(Not,bVar"dp_operation")]), 43085 Let(TP[Var("M",F1),Var("Vm",F4)], 43086 Call 43087 ("EncodeVFPReg",PTy(F1,F4), 43088 TP[Var("m",FTy 5),Mop(Not,bVar"dp_operation")]), 43089 Call 43090 ("ARM",CTy"MachineCode", 43091 CC[Var("c",F4),LW(29,5),Var("D",F1),LW(49,6), 43092 Var("Vd",F4),LW(5,3), 43093 Mop(Cast F1,bVar"dp_operation"),LW(1,2),Var("M",F1), 43094 LW(0,1),Var("Vm",F4)])))), 43095 (Call 43096 ("vsqrt",CTy"VFP", 43097 TP[bVar"dp_operation",Var("d",FTy 5),Var("m",FTy 5)]), 43098 Let(TP[Var("D",F1),Var("Vd",F4)], 43099 Call 43100 ("EncodeVFPReg",PTy(F1,F4), 43101 TP[Var("d",FTy 5),Mop(Not,bVar"dp_operation")]), 43102 Let(TP[Var("M",F1),Var("Vm",F4)], 43103 Call 43104 ("EncodeVFPReg",PTy(F1,F4), 43105 TP[Var("m",FTy 5),Mop(Not,bVar"dp_operation")]), 43106 Call 43107 ("ARM",CTy"MachineCode", 43108 CC[Var("c",F4),LW(29,5),Var("D",F1),LW(49,6), 43109 Var("Vd",F4),LW(5,3), 43110 Mop(Cast F1,bVar"dp_operation"),LW(3,2),Var("M",F1), 43111 LW(0,1),Var("Vm",F4)])))), 43112 (Call 43113 ("vadd",CTy"VFP", 43114 TP[bVar"dp_operation",Var("d",FTy 5),Var("n",FTy 5), 43115 Var("m",FTy 5)]), 43116 Let(bVar"single_register",Mop(Not,bVar"dp_operation"), 43117 Let(TP[Var("D",F1),Var("Vd",F4)], 43118 Call 43119 ("EncodeVFPReg",PTy(F1,F4), 43120 TP[Var("d",FTy 5),bVar"single_register"]), 43121 Let(TP[Var("N",F1),Var("Vn",F4)], 43122 Call 43123 ("EncodeVFPReg",PTy(F1,F4), 43124 TP[Var("n",FTy 5),bVar"single_register"]), 43125 Let(TP[Var("M",F1),Var("Vm",F4)], 43126 Call 43127 ("EncodeVFPReg",PTy(F1,F4), 43128 TP[Var("m",FTy 5),bVar"single_register"]), 43129 Call 43130 ("ARM",CTy"MachineCode", 43131 CC[Var("c",F4),LW(28,5),Var("D",F1),LW(3,2), 43132 Var("Vn",F4),Var("Vd",F4),LW(5,3), 43133 Mop(Cast F1,bVar"dp_operation"),Var("N",F1), 43134 LW(0,1),Var("M",F1),LW(0,1),Var("Vm",F4)])))))), 43135 (Call 43136 ("vsub",CTy"VFP", 43137 TP[bVar"dp_operation",Var("d",FTy 5),Var("n",FTy 5), 43138 Var("m",FTy 5)]), 43139 Let(bVar"single_register",Mop(Not,bVar"dp_operation"), 43140 Let(TP[Var("D",F1),Var("Vd",F4)], 43141 Call 43142 ("EncodeVFPReg",PTy(F1,F4), 43143 TP[Var("d",FTy 5),bVar"single_register"]), 43144 Let(TP[Var("N",F1),Var("Vn",F4)], 43145 Call 43146 ("EncodeVFPReg",PTy(F1,F4), 43147 TP[Var("n",FTy 5),bVar"single_register"]), 43148 Let(TP[Var("M",F1),Var("Vm",F4)], 43149 Call 43150 ("EncodeVFPReg",PTy(F1,F4), 43151 TP[Var("m",FTy 5),bVar"single_register"]), 43152 Call 43153 ("ARM",CTy"MachineCode", 43154 CC[Var("c",F4),LW(28,5),Var("D",F1),LW(3,2), 43155 Var("Vn",F4),Var("Vd",F4),LW(5,3), 43156 Mop(Cast F1,bVar"dp_operation"),Var("N",F1), 43157 LW(1,1),Var("M",F1),LW(0,1),Var("Vm",F4)])))))), 43158 (Call 43159 ("vmul",CTy"VFP", 43160 TP[bVar"dp_operation",Var("d",FTy 5),Var("n",FTy 5), 43161 Var("m",FTy 5)]), 43162 Let(bVar"single_register",Mop(Not,bVar"dp_operation"), 43163 Let(TP[Var("D",F1),Var("Vd",F4)], 43164 Call 43165 ("EncodeVFPReg",PTy(F1,F4), 43166 TP[Var("d",FTy 5),bVar"single_register"]), 43167 Let(TP[Var("N",F1),Var("Vn",F4)], 43168 Call 43169 ("EncodeVFPReg",PTy(F1,F4), 43170 TP[Var("n",FTy 5),bVar"single_register"]), 43171 Let(TP[Var("M",F1),Var("Vm",F4)], 43172 Call 43173 ("EncodeVFPReg",PTy(F1,F4), 43174 TP[Var("m",FTy 5),bVar"single_register"]), 43175 Call 43176 ("ARM",CTy"MachineCode", 43177 CC[Var("c",F4),LW(28,5),Var("D",F1),LW(2,2), 43178 Var("Vn",F4),Var("Vd",F4),LW(5,3), 43179 Mop(Cast F1,bVar"dp_operation"),Var("N",F1), 43180 LW(0,1),Var("M",F1),LW(0,1),Var("Vm",F4)])))))), 43181 (Call 43182 ("vdiv",CTy"VFP", 43183 TP[bVar"dp_operation",Var("d",FTy 5),Var("n",FTy 5), 43184 Var("m",FTy 5)]), 43185 Let(bVar"single_register",Mop(Not,bVar"dp_operation"), 43186 Let(TP[Var("D",F1),Var("Vd",F4)], 43187 Call 43188 ("EncodeVFPReg",PTy(F1,F4), 43189 TP[Var("d",FTy 5),bVar"single_register"]), 43190 Let(TP[Var("N",F1),Var("Vn",F4)], 43191 Call 43192 ("EncodeVFPReg",PTy(F1,F4), 43193 TP[Var("n",FTy 5),bVar"single_register"]), 43194 Let(TP[Var("M",F1),Var("Vm",F4)], 43195 Call 43196 ("EncodeVFPReg",PTy(F1,F4), 43197 TP[Var("m",FTy 5),bVar"single_register"]), 43198 Call 43199 ("ARM",CTy"MachineCode", 43200 CC[Var("c",F4),LW(29,5),Var("D",F1),LW(0,2), 43201 Var("Vn",F4),Var("Vd",F4),LW(5,3), 43202 Mop(Cast F1,bVar"dp_operation"),Var("N",F1), 43203 LW(0,1),Var("M",F1),LW(0,1),Var("Vm",F4)])))))), 43204 (Call 43205 ("vneg_mul",CTy"VFP", 43206 TP[bVar"dp_operation",Var("typ",CTy"VFPNegMul"),Var("d",FTy 5), 43207 Var("n",FTy 5),Var("m",FTy 5)]), 43208 Let(bVar"single_register",Mop(Not,bVar"dp_operation"), 43209 Let(TP[Var("D",F1),Var("Vd",F4)], 43210 Call 43211 ("EncodeVFPReg",PTy(F1,F4), 43212 TP[Var("d",FTy 5),bVar"single_register"]), 43213 Let(TP[Var("N",F1),Var("Vn",F4)], 43214 Call 43215 ("EncodeVFPReg",PTy(F1,F4), 43216 TP[Var("n",FTy 5),bVar"single_register"]), 43217 Let(TP[Var("M",F1),Var("Vm",F4)], 43218 Call 43219 ("EncodeVFPReg",PTy(F1,F4), 43220 TP[Var("m",FTy 5),bVar"single_register"]), 43221 Let(TP[Var("op1",FTy 2),Var("op2",F1)], 43222 CS(Var("typ",CTy"VFPNegMul"), 43223 [(LC("VFPNegMul_VNMUL",CTy"VFPNegMul"), 43224 TP[LW(2,2),LW(1,1)]), 43225 (LC("VFPNegMul_VNMLA",CTy"VFPNegMul"), 43226 TP[LW(1,2),LW(1,1)]), 43227 (LC("VFPNegMul_VNMLS",CTy"VFPNegMul"), 43228 TP[LW(1,2),LW(0,1)])]), 43229 Call 43230 ("ARM",CTy"MachineCode", 43231 CC[Var("c",F4),LW(28,5),Var("D",F1), 43232 Var("op1",FTy 2),Var("Vn",F4), 43233 Var("Vd",F4),LW(5,3), 43234 Mop(Cast F1,bVar"dp_operation"), 43235 Var("N",F1),Var("op2",F1),Var("M",F1), 43236 LW(0,1),Var("Vm",F4)]))))))), 43237 (Call 43238 ("vmla_vmls",CTy"VFP", 43239 TP[bVar"dp_operation",bVar"add",Var("d",FTy 5),Var("n",FTy 5), 43240 Var("m",FTy 5)]), 43241 Let(bVar"single_register",Mop(Not,bVar"dp_operation"), 43242 Let(TP[Var("D",F1),Var("Vd",F4)], 43243 Call 43244 ("EncodeVFPReg",PTy(F1,F4), 43245 TP[Var("d",FTy 5),bVar"single_register"]), 43246 Let(TP[Var("N",F1),Var("Vn",F4)], 43247 Call 43248 ("EncodeVFPReg",PTy(F1,F4), 43249 TP[Var("n",FTy 5),bVar"single_register"]), 43250 Let(TP[Var("M",F1),Var("Vm",F4)], 43251 Call 43252 ("EncodeVFPReg",PTy(F1,F4), 43253 TP[Var("m",FTy 5),bVar"single_register"]), 43254 Call 43255 ("ARM",CTy"MachineCode", 43256 CC[Var("c",F4),LW(28,5),Var("D",F1),LW(0,2), 43257 Var("Vn",F4),Var("Vd",F4),LW(5,3), 43258 Mop(Cast F1,bVar"dp_operation"),Var("N",F1), 43259 Mop(Cast F1,Mop(Not,bVar"add")),Var("M",F1), 43260 LW(0,1),Var("Vm",F4)])))))), 43261 (Call 43262 ("vfma_vfms",CTy"VFP", 43263 TP[bVar"dp_operation",bVar"add",Var("d",FTy 5),Var("n",FTy 5), 43264 Var("m",FTy 5)]), 43265 Let(bVar"single_register",Mop(Not,bVar"dp_operation"), 43266 Let(TP[Var("D",F1),Var("Vd",F4)], 43267 Call 43268 ("EncodeVFPReg",PTy(F1,F4), 43269 TP[Var("d",FTy 5),bVar"single_register"]), 43270 Let(TP[Var("N",F1),Var("Vn",F4)], 43271 Call 43272 ("EncodeVFPReg",PTy(F1,F4), 43273 TP[Var("n",FTy 5),bVar"single_register"]), 43274 Let(TP[Var("M",F1),Var("Vm",F4)], 43275 Call 43276 ("EncodeVFPReg",PTy(F1,F4), 43277 TP[Var("m",FTy 5),bVar"single_register"]), 43278 Call 43279 ("ARM",CTy"MachineCode", 43280 CC[Var("c",F4),LW(29,5),Var("D",F1),LW(2,2), 43281 Var("Vn",F4),Var("Vd",F4),LW(5,3), 43282 Mop(Cast F1,bVar"dp_operation"),Var("N",F1), 43283 Mop(Cast F1,Mop(Not,bVar"add")),Var("M",F1), 43284 LW(0,1),Var("Vm",F4)])))))), 43285 (Call 43286 ("vfnma_vfnms",CTy"VFP", 43287 TP[bVar"dp_operation",bVar"add",Var("d",FTy 5),Var("n",FTy 5), 43288 Var("m",FTy 5)]), 43289 Let(bVar"single_register",Mop(Not,bVar"dp_operation"), 43290 Let(TP[Var("D",F1),Var("Vd",F4)], 43291 Call 43292 ("EncodeVFPReg",PTy(F1,F4), 43293 TP[Var("d",FTy 5),bVar"single_register"]), 43294 Let(TP[Var("N",F1),Var("Vn",F4)], 43295 Call 43296 ("EncodeVFPReg",PTy(F1,F4), 43297 TP[Var("n",FTy 5),bVar"single_register"]), 43298 Let(TP[Var("M",F1),Var("Vm",F4)], 43299 Call 43300 ("EncodeVFPReg",PTy(F1,F4), 43301 TP[Var("m",FTy 5),bVar"single_register"]), 43302 Call 43303 ("ARM",CTy"MachineCode", 43304 CC[Var("c",F4),LW(29,5),Var("D",F1),LW(1,2), 43305 Var("Vn",F4),Var("Vd",F4),LW(5,3), 43306 Mop(Cast F1,bVar"dp_operation"),Var("N",F1), 43307 Mop(Cast F1,Mop(Not,bVar"add")),Var("M",F1), 43308 LW(0,1),Var("Vm",F4)])))))), 43309 (Call 43310 ("vldr",CTy"VFP", 43311 TP[bVar"single_register",bVar"add",Var("d",FTy 5),Var("n",F4), 43312 Var("imm32",F32)]), 43313 ITE(Bop(Or,Mop(Not,Call("Aligned",bTy,TP[Var("imm32",F32),LN 4])), 43314 Mop(Not, 43315 EQ(EX(Var("imm32",F32),LN 31,LN 10,FTy 22),LW(0,22)))), 43316 Call("BadCode",CTy"MachineCode",LS"VLDR: bad immediate"), 43317 Let(TP[Var("D",F1),Var("Vd",F4)], 43318 Call 43319 ("EncodeVFPReg",PTy(F1,F4), 43320 TP[Var("d",FTy 5),bVar"single_register"]), 43321 Call 43322 ("ARM",CTy"MachineCode", 43323 CC[Var("c",F4),LW(13,4),Mop(Cast F1,bVar"add"), 43324 Var("D",F1),LW(1,2),Var("n",F4),Var("Vd",F4), 43325 LW(5,3),Mop(Cast F1,Mop(Not,bVar"single_register")), 43326 EX(Var("imm32",F32),LN 9,LN 2,F8)])))), 43327 (Call 43328 ("vstr",CTy"VFP", 43329 TP[bVar"single_register",bVar"add",Var("d",FTy 5),Var("n",F4), 43330 Var("imm32",F32)]), 43331 ITE(Bop(Or,Mop(Not,Call("Aligned",bTy,TP[Var("imm32",F32),LN 4])), 43332 Mop(Not, 43333 EQ(EX(Var("imm32",F32),LN 31,LN 10,FTy 22),LW(0,22)))), 43334 Call("BadCode",CTy"MachineCode",LS"VSTR: bad immediate"), 43335 Let(TP[Var("D",F1),Var("Vd",F4)], 43336 Call 43337 ("EncodeVFPReg",PTy(F1,F4), 43338 TP[Var("d",FTy 5),bVar"single_register"]), 43339 Call 43340 ("ARM",CTy"MachineCode", 43341 CC[Var("c",F4),LW(13,4),Mop(Cast F1,bVar"add"), 43342 Var("D",F1),LW(0,2),Var("n",F4),Var("Vd",F4), 43343 LW(5,3),Mop(Cast F1,Mop(Not,bVar"single_register")), 43344 EX(Var("imm32",F32),LN 9,LN 2,F8)])))), 43345 (Call 43346 ("vldm",CTy"VFP", 43347 TP[bVar"single_regs",bVar"add",bVar"wback",Var("d",FTy 5), 43348 Var("n",F4),Var("imm8",F8)]), 43349 Let(TP[Var("D",F1),Var("Vd",F4)], 43350 Call 43351 ("EncodeVFPReg",PTy(F1,F4), 43352 TP[Var("d",FTy 5),bVar"single_regs"]), 43353 Call 43354 ("ARM",CTy"MachineCode", 43355 CC[Var("c",F4),LW(6,3),ITE(bVar"add",LW(1,2),LW(2,2)), 43356 Var("D",F1),Mop(Cast F1,bVar"wback"),LW(1,1), 43357 Var("n",F4),Var("Vd",F4),LW(5,3), 43358 Mop(Cast F1,Mop(Not,bVar"single_regs")),Var("imm8",F8)]))), 43359 (Call 43360 ("vstm",CTy"VFP", 43361 TP[bVar"single_regs",bVar"add",bVar"wback",Var("d",FTy 5), 43362 Var("n",F4),Var("imm8",F8)]), 43363 Let(TP[Var("D",F1),Var("Vd",F4)], 43364 Call 43365 ("EncodeVFPReg",PTy(F1,F4), 43366 TP[Var("d",FTy 5),bVar"single_regs"]), 43367 Call 43368 ("ARM",CTy"MachineCode", 43369 CC[Var("c",F4),LW(6,3),ITE(bVar"add",LW(1,2),LW(2,2)), 43370 Var("D",F1),Mop(Cast F1,bVar"wback"),LW(0,1), 43371 Var("n",F4),Var("Vd",F4),LW(5,3), 43372 Mop(Cast F1,Mop(Not,bVar"single_regs")),Var("imm8",F8)])))])) 43373; 43374val e_data_def = Def 43375 ("e_data",TP[Var("c",F4),Var("ast",CTy"Data")], 43376 CS(Var("ast",CTy"Data"), 43377 [(Call("CountLeadingZeroes",CTy"Data",TP[Var("Rd",F4),Var("Rm",F4)]), 43378 Call 43379 ("ARM",CTy"MachineCode", 43380 CC[Var("c",F4),LW(367,12),Var("Rd",F4),LW(241,8),Var("Rm",F4)])), 43381 (Call 43382 ("MoveHalfword",CTy"Data", 43383 TP[bVar"high",Var("Rd",F4),Var("imm16",F16)]), 43384 Call 43385 ("ARM",CTy"MachineCode", 43386 CC[Var("c",F4),LW(6,5),Mop(Cast F1,bVar"high"),LW(0,2), 43387 EX(Var("imm16",F16),LN 15,LN 12,F4),Var("Rd",F4), 43388 EX(Var("imm16",F16),LN 11,LN 0,FTy 12)])), 43389 (Call 43390 ("Move",CTy"Data", 43391 TP[bVar"setflags",bVar"negate",Var("d",F4),Var("imm12",FTy 12)]), 43392 Call 43393 ("ARM",CTy"MachineCode", 43394 CC[Var("c",F4),LW(7,5),Mop(Cast F1,bVar"negate"),LW(1,1), 43395 Mop(Cast F1,bVar"setflags"),LW(0,4),Var("d",F4), 43396 Var("imm12",FTy 12)])), 43397 (Call 43398 ("AddSub",CTy"Data", 43399 TP[bVar"sub",Var("Rd",F4),Var("Rn",F4),Var("imm12",FTy 12)]), 43400 Call("BadCode",CTy"MachineCode",LS"ADDW/SUBW")), 43401 (Call 43402 ("TestCompareImmediate",CTy"Data", 43403 TP[Var("op",FTy 2),Var("Rn",F4),Var("imm12",FTy 12)]), 43404 Call 43405 ("ARM",CTy"MachineCode", 43406 CC[Var("c",F4),LW(6,5),Var("op",FTy 2),LW(1,1),Var("Rn",F4), 43407 LW(0,4),Var("imm12",FTy 12)])), 43408 (Call 43409 ("ArithLogicImmediate",CTy"Data", 43410 TP[Var("opc",F4),bVar"setflags",Var("d",F4),Var("n",F4), 43411 Var("imm12",FTy 12)]), 43412 Call 43413 ("ARM",CTy"MachineCode", 43414 CC[Var("c",F4),LW(1,3),Var("opc",F4), 43415 Mop(Cast F1,bVar"setflags"),Var("n",F4),Var("d",F4), 43416 Var("imm12",FTy 12)])), 43417 (Call 43418 ("Register",CTy"Data", 43419 TP[Var("opc",F4),bVar"setflags",Var("d",F4),Var("n",F4), 43420 Var("m",F4),Var("shift_t",CTy"SRType"),nVar"shift_n"]), 43421 Let(TP[Var("typ",FTy 2),Var("imm5",FTy 5)], 43422 Call 43423 ("EncodeImmShift",PTy(FTy 2,FTy 5), 43424 TP[Var("shift_t",CTy"SRType"),nVar"shift_n"]), 43425 Call 43426 ("ARM",CTy"MachineCode", 43427 CC[Var("c",F4),LW(0,3),Var("opc",F4), 43428 Mop(Cast F1,bVar"setflags"),Var("n",F4),Var("d",F4), 43429 Var("imm5",FTy 5),Var("typ",FTy 2),LW(0,1),Var("m",F4)]))), 43430 (Call 43431 ("TestCompareRegister",CTy"Data", 43432 TP[Var("opc",FTy 2),Var("n",F4),Var("m",F4), 43433 Var("shift_t",CTy"SRType"),nVar"shift_n"]), 43434 Let(TP[Var("typ",FTy 2),Var("imm5",FTy 5)], 43435 Call 43436 ("EncodeImmShift",PTy(FTy 2,FTy 5), 43437 TP[Var("shift_t",CTy"SRType"),nVar"shift_n"]), 43438 Call 43439 ("ARM",CTy"MachineCode", 43440 CC[Var("c",F4),LW(2,5),Var("opc",FTy 2),LW(1,1), 43441 Var("n",F4),LW(0,4),Var("imm5",FTy 5),Var("typ",FTy 2), 43442 LW(0,1),Var("m",F4)]))), 43443 (Call 43444 ("ShiftImmediate",CTy"Data", 43445 TP[bVar"negate",bVar"setflags",Var("d",F4),Var("m",F4), 43446 Var("shift_t",CTy"SRType"),nVar"shift_n"]), 43447 Let(TP[Var("typ",FTy 2),Var("imm5",FTy 5)], 43448 Call 43449 ("EncodeImmShift",PTy(FTy 2,FTy 5), 43450 TP[Var("shift_t",CTy"SRType"),nVar"shift_n"]), 43451 Call 43452 ("ARM",CTy"MachineCode", 43453 CC[Var("c",F4),LW(3,5),Mop(Cast F1,bVar"negate"),LW(1,1), 43454 Mop(Cast F1,bVar"setflags"),LW(0,4),Var("d",F4), 43455 Var("imm5",FTy 5),Var("typ",FTy 2),LW(0,1),Var("m",F4)]))), 43456 (Call 43457 ("RegisterShiftedRegister",CTy"Data", 43458 TP[AVar F4,AVar bTy,AVar F4,AVar F4,AVar F4, 43459 LC("SRType_RRX",CTy"SRType"),AVar F4]), 43460 Call("BadCode",CTy"MachineCode",LS"RegisterShiftedRegister: rrx")), 43461 (Call 43462 ("RegisterShiftedRegister",CTy"Data", 43463 TP[Var("opc",F4),bVar"setflags",Var("d",F4),Var("n",F4), 43464 Var("m",F4),Var("shift_t",CTy"SRType"),Var("s",F4)]), 43465 Call 43466 ("ARM",CTy"MachineCode", 43467 CC[Var("c",F4),LW(0,3),Var("opc",F4), 43468 Mop(Cast F1,bVar"setflags"),Var("n",F4),Var("d",F4), 43469 Var("s",F4),LW(0,1), 43470 Call("EncodeRegShift",FTy 2,Var("shift_t",CTy"SRType")), 43471 LW(1,1),Var("m",F4)])), 43472 (Call 43473 ("ShiftRegister",CTy"Data", 43474 TP[AVar bTy,AVar bTy,AVar F4,AVar F4, 43475 LC("SRType_RRX",CTy"SRType"),AVar F4]), 43476 Call("BadCode",CTy"MachineCode",LS"ShiftRegister: rrx")), 43477 (Call 43478 ("ShiftRegister",CTy"Data", 43479 TP[bVar"negate",bVar"setflags",Var("d",F4),Var("n",F4), 43480 Var("shift_t",CTy"SRType"),Var("m",F4)]), 43481 Call 43482 ("ARM",CTy"MachineCode", 43483 CC[Var("c",F4),LW(3,5),Mop(Cast F1,bVar"negate"),LW(1,1), 43484 Mop(Cast F1,bVar"setflags"),LW(0,4),Var("d",F4),Var("m",F4), 43485 LW(0,1), 43486 Call("EncodeRegShift",FTy 2,Var("shift_t",CTy"SRType")), 43487 LW(1,1),Var("n",F4)]))])) 43488; 43489val e_media_def = Def 43490 ("e_media",TP[Var("c",F4),Var("ast",CTy"Media")], 43491 CS(Var("ast",CTy"Media"), 43492 [(Call 43493 ("SaturatingAddSubtract",CTy"Media", 43494 TP[Var("opc",FTy 2),Var("Rd",F4),Var("Rm",F4),Var("Rn",F4)]), 43495 Call 43496 ("ARM",CTy"MachineCode", 43497 CC[Var("c",F4),LW(2,5),Var("opc",FTy 2),LW(0,1),Var("Rn",F4), 43498 Var("Rd",F4),LW(5,8),Var("Rm",F4)])), 43499 (Call 43500 ("PackHalfword",CTy"Media", 43501 TP[Var("shift_t",CTy"SRType"),nVar"shift_n",bVar"tbform", 43502 Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]), 43503 Let(TP[Var("typ",FTy 2),Var("imm5",FTy 5)], 43504 Call 43505 ("EncodeImmShift",PTy(FTy 2,FTy 5), 43506 TP[Var("shift_t",CTy"SRType"),nVar"shift_n"]), 43507 Call 43508 ("ARM",CTy"MachineCode", 43509 CC[Var("c",F4),LW(104,8),Var("Rn",F4),Var("Rd",F4), 43510 Var("imm5",FTy 5),EX(Var("typ",FTy 2),LN 1,LN 1,F1), 43511 LW(1,2),Var("Rm",F4)]))), 43512 (Call 43513 ("Saturate",CTy"Media", 43514 TP[Var("shift_t",CTy"SRType"),nVar"shift_n",nVar"saturate_to", 43515 bVar"unsigned",Var("Rd",F4),Var("Rn",F4)]), 43516 Let(TP[Var("typ",FTy 2),Var("imm5",FTy 5)], 43517 Call 43518 ("EncodeImmShift",PTy(FTy 2,FTy 5), 43519 TP[Var("shift_t",CTy"SRType"),nVar"shift_n"]), 43520 Call 43521 ("ARM",CTy"MachineCode", 43522 CC[Var("c",F4),LW(13,5),Mop(Cast F1,bVar"unsigned"), 43523 LW(1,1), 43524 ITE(bVar"unsigned",Mop(Cast(FTy 5),nVar"saturate_to"), 43525 Mop(Cast(FTy 5),Bop(Sub,nVar"saturate_to",LN 1))), 43526 Var("Rd",F4),Var("imm5",FTy 5), 43527 EX(Var("typ",FTy 2),LN 1,LN 1,F1),LW(1,2),Var("Rn",F4)]))), 43528 (Call 43529 ("Saturate16",CTy"Media", 43530 TP[nVar"saturate_to",bVar"unsigned",Var("Rd",F4),Var("Rn",F4)]), 43531 Call 43532 ("ARM",CTy"MachineCode", 43533 CC[Var("c",F4),LW(13,5),Mop(Cast F1,bVar"unsigned"),LW(2,2), 43534 ITE(bVar"unsigned",Mop(Cast F4,nVar"saturate_to"), 43535 Mop(Cast F4,Bop(Sub,nVar"saturate_to",LN 1))), 43536 Var("Rd",F4),LW(243,8),Var("Rn",F4)])), 43537 (Call 43538 ("ExtendByte",CTy"Media", 43539 TP[bVar"unsigned",Var("d",F4),Var("Rn",F4),Var("m",F4), 43540 nVar"rotation"]), 43541 Call 43542 ("ARM",CTy"MachineCode", 43543 CC[Var("c",F4),LW(13,5),Mop(Cast F1,bVar"unsigned"),LW(2,2), 43544 Var("Rn",F4),Var("d",F4), 43545 EX(Mop(Cast(FTy 5),nVar"rotation"),LN 4,LN 3,FTy 2),LW(7,6), 43546 Var("m",F4)])), 43547 (Call 43548 ("ExtendHalfword",CTy"Media", 43549 TP[bVar"unsigned",Var("d",F4),Var("Rn",F4),Var("m",F4), 43550 nVar"rotation"]), 43551 Call 43552 ("ARM",CTy"MachineCode", 43553 CC[Var("c",F4),LW(13,5),Mop(Cast F1,bVar"unsigned"),LW(3,2), 43554 Var("Rn",F4),Var("d",F4), 43555 EX(Mop(Cast(FTy 5),nVar"rotation"),LN 4,LN 3,FTy 2),LW(7,6), 43556 Var("m",F4)])), 43557 (Call 43558 ("ExtendByte16",CTy"Media", 43559 TP[bVar"unsigned",Var("Rd",F4),Var("Rn",F4),Var("Rm",F4), 43560 nVar"rotation"]), 43561 Call 43562 ("ARM",CTy"MachineCode", 43563 CC[Var("c",F4),LW(13,5),Mop(Cast F1,bVar"unsigned"),LW(0,2), 43564 Var("Rn",F4),Var("Rd",F4), 43565 EX(Mop(Cast(FTy 5),nVar"rotation"),LN 4,LN 3,FTy 2),LW(7,6), 43566 Var("Rm",F4)])), 43567 (Call 43568 ("SelectBytes",CTy"Media", 43569 TP[Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]), 43570 Call 43571 ("ARM",CTy"MachineCode", 43572 CC[Var("c",F4),LW(104,8),Var("Rn",F4),Var("Rd",F4),LW(251,8), 43573 Var("Rm",F4)])), 43574 (Call("ByteReverse",CTy"Media",TP[Var("d",F4),Var("m",F4)]), 43575 Call 43576 ("ARM",CTy"MachineCode", 43577 CC[Var("c",F4),LW(1727,12),Var("d",F4),LW(243,8),Var("m",F4)])), 43578 (Call 43579 ("ByteReversePackedHalfword",CTy"Media", 43580 TP[Var("d",F4),Var("m",F4)]), 43581 Call 43582 ("ARM",CTy"MachineCode", 43583 CC[Var("c",F4),LW(1727,12),Var("d",F4),LW(251,8),Var("m",F4)])), 43584 (Call 43585 ("ByteReverseSignedHalfword",CTy"Media", 43586 TP[Var("d",F4),Var("m",F4)]), 43587 Call 43588 ("ARM",CTy"MachineCode", 43589 CC[Var("c",F4),LW(1791,12),Var("d",F4),LW(251,8),Var("m",F4)])), 43590 (Call("ReverseBits",CTy"Media",TP[Var("Rd",F4),Var("Rm",F4)]), 43591 Call 43592 ("ARM",CTy"MachineCode", 43593 CC[Var("c",F4),LW(1791,12),Var("Rd",F4),LW(243,8),Var("Rm",F4)])), 43594 (Call 43595 ("BitFieldExtract",CTy"Media", 43596 TP[bVar"unsigned",Var("Rd",F4),Var("Rn",F4),nVar"lsbit", 43597 nVar"widthminus1"]), 43598 Call 43599 ("ARM",CTy"MachineCode", 43600 CC[Var("c",F4),LW(15,5),Mop(Cast F1,bVar"unsigned"),LW(1,1), 43601 Mop(Cast(FTy 5),nVar"widthminus1"),Var("Rd",F4), 43602 Mop(Cast(FTy 5),nVar"lsbit"),LW(5,3),Var("Rn",F4)])), 43603 (Call 43604 ("BitFieldClearOrInsert",CTy"Media", 43605 TP[Var("Rd",F4),Var("Rn",F4),nVar"lsbit",nVar"msbit"]), 43606 Call 43607 ("ARM",CTy"MachineCode", 43608 CC[Var("c",F4),LW(62,7),Mop(Cast(FTy 5),nVar"msbit"), 43609 Var("Rd",F4),Mop(Cast(FTy 5),nVar"lsbit"),LW(1,3), 43610 Var("Rn",F4)]))])) 43611; 43612val e_hint_def = Def 43613 ("e_hint",TP[Var("c",F4),Var("ast",CTy"Hint")], 43614 CS(Var("ast",CTy"Hint"), 43615 [(Call("Breakpoint",CTy"Hint",Var("imm32",F32)), 43616 Call 43617 ("ARM",CTy"MachineCode", 43618 CC[Var("c",F4),LW(18,8),EX(Var("imm32",F32),LN 15,LN 4,FTy 12), 43619 LW(7,4),EX(Var("imm32",F32),LN 3,LN 0,F4)])), 43620 (Call("Debug",CTy"Hint",Var("option",F4)), 43621 Call 43622 ("ARM",CTy"MachineCode", 43623 CC[Var("c",F4),LW(3280655,24),Var("option",F4)])), 43624 (Call("DataMemoryBarrier",CTy"Hint",Var("option",F4)), 43625 ITE(EQ(Var("c",F4),LW(14,4)), 43626 Call 43627 ("ARM",CTy"MachineCode", 43628 CC[LW(257425157,28),Var("option",F4)]), 43629 Call("BadCode",CTy"MachineCode",LS"DataMemoryBarrier"))), 43630 (Call("DataSynchronizationBarrier",CTy"Hint",Var("option",F4)), 43631 ITE(EQ(Var("c",F4),LW(14,4)), 43632 Call 43633 ("ARM",CTy"MachineCode", 43634 CC[LW(257425156,28),Var("option",F4)]), 43635 Call 43636 ("BadCode",CTy"MachineCode",LS"DataSynchronizationBarrier"))), 43637 (Call 43638 ("InstructionSynchronizationBarrier",CTy"Hint",Var("option",F4)), 43639 ITE(EQ(Var("c",F4),LW(14,4)), 43640 Call 43641 ("ARM",CTy"MachineCode", 43642 CC[LW(257425158,28),Var("option",F4)]), 43643 Call 43644 ("BadCode",CTy"MachineCode", 43645 LS"InstructionSynchronizationBarrier"))), 43646 (Const("SendEvent",CTy"Hint"), 43647 Call("ARM",CTy"MachineCode",CC[Var("c",F4),LW(52490244,28)])), 43648 (Const("WaitForEvent",CTy"Hint"), 43649 Call("ARM",CTy"MachineCode",CC[Var("c",F4),LW(52490242,28)])), 43650 (Const("WaitForInterrupt",CTy"Hint"), 43651 Call("ARM",CTy"MachineCode",CC[Var("c",F4),LW(52490243,28)])), 43652 (Const("Yield",CTy"Hint"), 43653 Call("ARM",CTy"MachineCode",CC[Var("c",F4),LW(52490241,28)])), 43654 (Call 43655 ("PreloadData",CTy"Hint", 43656 TP[bVar"add",bVar"is_pldw",Var("Rn",F4), 43657 Call("immediate_form1",CTy"offset1",Var("imm32",F32))]), 43658 Call 43659 ("ARM",CTy"MachineCode", 43660 CC[LW(245,8),Mop(Cast F1,bVar"add"), 43661 Mop(Cast F1,Mop(Not,bVar"is_pldw")),LW(1,2),Var("Rn",F4), 43662 LW(15,4),EX(Var("imm32",F32),LN 11,LN 0,FTy 12)])), 43663 (Call 43664 ("PreloadData",CTy"Hint", 43665 TP[bVar"add",bVar"is_pldw",Var("Rn",F4), 43666 Call 43667 ("register_form1",CTy"offset1", 43668 TP[Var("Rm",F4),Var("shift_t",CTy"SRType"),nVar"shift_n"])]), 43669 ITE(EQ(Var("c",F4),LW(14,4)), 43670 Let(TP[Var("typ",FTy 2),Var("imm5",FTy 5)], 43671 Call 43672 ("EncodeImmShift",PTy(FTy 2,FTy 5), 43673 TP[Var("shift_t",CTy"SRType"),nVar"shift_n"]), 43674 Call 43675 ("ARM",CTy"MachineCode", 43676 CC[LW(247,8),Mop(Cast F1,bVar"add"), 43677 Mop(Cast F1,Mop(Not,bVar"is_pldw")),LW(1,2), 43678 Var("Rn",F4),LW(15,4),Var("imm5",FTy 5), 43679 Var("typ",FTy 2),LW(0,1),Var("Rm",F4)])), 43680 Call("BadCode",CTy"MachineCode",LS"PreloadData"))), 43681 (Call 43682 ("PreloadDataLiteral",CTy"Hint",TP[bVar"add",Var("imm32",F32)]), 43683 ITE(EQ(Var("c",F4),LW(14,4)), 43684 Call 43685 ("ARM",CTy"MachineCode", 43686 CC[LW(245,8),Mop(Cast F1,bVar"add"),LW(1535,11), 43687 EX(Var("imm32",F32),LN 11,LN 0,FTy 12)]), 43688 Call("BadCode",CTy"MachineCode",LS"PreloadDataLiteral"))), 43689 (Call 43690 ("PreloadInstruction",CTy"Hint", 43691 TP[bVar"add",Var("Rn",F4), 43692 Call("immediate_form1",CTy"offset1",Var("imm32",F32))]), 43693 ITE(EQ(Var("c",F4),LW(14,4)), 43694 Call 43695 ("ARM",CTy"MachineCode", 43696 CC[LW(244,8),Mop(Cast F1,bVar"add"),LW(5,3),Var("Rn",F4), 43697 LW(15,4),EX(Var("imm32",F32),LN 11,LN 0,FTy 12)]), 43698 Call("BadCode",CTy"MachineCode",LS"PreloadInstruction"))), 43699 (Call 43700 ("PreloadInstruction",CTy"Hint", 43701 TP[bVar"add",Var("Rn",F4), 43702 Call 43703 ("register_form1",CTy"offset1", 43704 TP[Var("Rm",F4),Var("shift_t",CTy"SRType"),nVar"shift_n"])]), 43705 Let(TP[Var("typ",FTy 2),Var("imm5",FTy 5)], 43706 Call 43707 ("EncodeImmShift",PTy(FTy 2,FTy 5), 43708 TP[Var("shift_t",CTy"SRType"),nVar"shift_n"]), 43709 Call 43710 ("ARM",CTy"MachineCode", 43711 CC[LW(246,8),Mop(Cast F1,bVar"add"),LW(5,3),Var("Rn",F4), 43712 LW(15,4),Var("imm5",FTy 5),Var("typ",FTy 2),LW(0,1), 43713 Var("Rm",F4)])))])) 43714; 43715val e_system_def = Def 43716 ("e_system",TP[Var("c",F4),Var("ast",CTy"System")], 43717 CS(Var("ast",CTy"System"), 43718 [(Call("EnterxLeavex",CTy"System",bVar"is_enterx"), 43719 Call("BadCode",CTy"MachineCode",LS"EnterxLeavex")), 43720 (Call 43721 ("ChangeProcessorState",CTy"System", 43722 TP[LT,LT,AVar(PTy(bTy,PTy(bTy,PTy(bTy,OTy(FTy 5)))))]), 43723 Call("BadCode",CTy"MachineCode",LS"ChangeProcessorState")), 43724 (Call 43725 ("ChangeProcessorState",CTy"System", 43726 TP[bVar"enable",bVar"disable",bVar"affectA",bVar"affectI", 43727 bVar"affectF",Var("changemode",OTy(FTy 5))]), 43728 ITE(EQ(Var("c",F4),LW(14,4)), 43729 Let(TP[Var("M",F1),Var("mode",FTy 5)], 43730 CS(Var("changemode",OTy(FTy 5)), 43731 [(Mop(Some,Var("mode",FTy 5)), 43732 TP[LW(1,1),Var("mode",FTy 5)]), 43733 (LO(FTy 5),TP[LW(0,1),LW(0,5)])]), 43734 Call 43735 ("ARM",CTy"MachineCode", 43736 CC[LW(3856,12), 43737 CC[Mop(Cast F1,Bop(Or,bVar"enable",bVar"disable")), 43738 Mop(Cast F1,bVar"disable")],Var("M",F1),LW(0,8), 43739 Mop(Cast F1,bVar"affectA"), 43740 Mop(Cast F1,bVar"affectI"), 43741 Mop(Cast F1,bVar"affectF"),LW(0,1),Var("mode",FTy 5)])), 43742 Call("BadCode",CTy"MachineCode",LS"ChangeProcessorState"))), 43743 (Const("ExceptionReturn",CTy"System"), 43744 Call("ARM",CTy"MachineCode",CC[Var("c",F4),LW(23068782,28)])), 43745 (Call("HypervisorCall",CTy"System",Var("imm16",F16)), 43746 Call 43747 ("ARM",CTy"MachineCode", 43748 CC[Var("c",F4),LW(20,8),EX(Var("imm16",F16),LN 15,LN 4,FTy 12), 43749 LW(7,4),EX(Var("imm16",F16),LN 3,LN 0,F4)])), 43750 (Call 43751 ("MoveToRegisterFromSpecial",CTy"System", 43752 TP[bVar"read_spsr",Var("Rd",F4)]), 43753 Call 43754 ("ARM",CTy"MachineCode", 43755 CC[Var("c",F4),LW(2,5),Mop(Cast F1,bVar"read_spsr"),LW(15,6), 43756 Var("Rd",F4),LW(0,12)])), 43757 (Call 43758 ("MoveToRegisterFromBankedOrSpecial",CTy"System", 43759 TP[bVar"read_spsr",Var("SYSm",FTy 5),Var("Rd",F4)]), 43760 Call 43761 ("ARM",CTy"MachineCode", 43762 CC[Var("c",F4),LW(2,5),Mop(Cast F1,bVar"read_spsr"),LW(0,2), 43763 EX(Var("SYSm",FTy 5),LN 3,LN 0,F4),Var("Rd",F4),LW(1,3), 43764 EX(Var("SYSm",FTy 5),LN 4,LN 4,F1),LW(0,8)])), 43765 (Call 43766 ("MoveToSpecialFromImmediate",CTy"System", 43767 TP[bVar"write_spsr",Var("imm32",F32),Var("mask",F4)]), 43768 CS(Call("EncodeARMImmediate",OTy(FTy 12),Var("imm32",F32)), 43769 [(Mop(Some,Var("imm12",FTy 12)), 43770 Call 43771 ("ARM",CTy"MachineCode", 43772 CC[Var("c",F4),LW(6,5),Mop(Cast F1,bVar"write_spsr"), 43773 LW(2,2),Var("mask",F4),LW(15,4),Var("imm12",FTy 12)])), 43774 (LO(FTy 12), 43775 Call 43776 ("BadCode",CTy"MachineCode",LS"MoveToSpecialFromImmediate"))])), 43777 (Call 43778 ("MoveToSpecialFromRegister",CTy"System", 43779 TP[bVar"write_spsr",Var("Rn",F4),Var("mask",F4)]), 43780 Call 43781 ("ARM",CTy"MachineCode", 43782 CC[Var("c",F4),LW(2,5),Mop(Cast F1,bVar"write_spsr"),LW(2,2), 43783 Var("mask",F4),LW(3840,12),Var("Rn",F4)])), 43784 (Call 43785 ("MoveToBankedOrSpecialRegister",CTy"System", 43786 TP[bVar"write_spsr",Var("SYSm",FTy 5),Var("Rn",F4)]), 43787 Call 43788 ("ARM",CTy"MachineCode", 43789 CC[Var("c",F4),LW(2,5),Mop(Cast F1,bVar"write_spsr"),LW(2,2), 43790 EX(Var("SYSm",FTy 5),LN 3,LN 0,F4),LW(121,7), 43791 EX(Var("SYSm",FTy 5),LN 4,LN 4,F1),LW(0,4),Var("Rn",F4)])), 43792 (Call 43793 ("ReturnFromException",CTy"System", 43794 TP[bVar"increment",bVar"wordhigher",bVar"wback",Var("Rn",F4)]), 43795 ITE(EQ(Var("c",F4),LW(14,4)), 43796 Let(Var("U",F1),Mop(Cast F1,bVar"increment"), 43797 Call 43798 ("ARM",CTy"MachineCode", 43799 CC[LW(124,7), 43800 ITE(bVar"wordhigher",Var("U",F1), 43801 Mop(BNot,Var("U",F1))),Var("U",F1),LW(0,1), 43802 Mop(Cast F1,bVar"wback"),LW(1,1),Var("Rn",F4), 43803 LW(2560,16)])), 43804 Call("BadCode",CTy"MachineCode",LS"ReturnFromException"))), 43805 (Call("SecureMonitorCall",CTy"System",Var("imm4",F4)), 43806 Call 43807 ("ARM",CTy"MachineCode", 43808 CC[Var("c",F4),LW(1441799,24),Var("imm4",F4)])), 43809 (Call 43810 ("StoreReturnState",CTy"System", 43811 TP[bVar"increment",bVar"wordhigher",bVar"wback", 43812 Var("mode",FTy 5)]), 43813 ITE(EQ(Var("c",F4),LW(14,4)), 43814 Let(Var("U",F1),Mop(Cast F1,bVar"increment"), 43815 Call 43816 ("ARM",CTy"MachineCode", 43817 CC[LW(124,7), 43818 ITE(bVar"wordhigher",Var("U",F1), 43819 Mop(BNot,Var("U",F1))),Var("U",F1),LW(1,1), 43820 Mop(Cast F1,bVar"wback"),LW(26664,16), 43821 Var("mode",FTy 5)])), 43822 Call("BadCode",CTy"MachineCode",LS"StoreReturnState"))), 43823 (Call("SupervisorCall",CTy"System",Var("imm32",F32)), 43824 Call 43825 ("ARM",CTy"MachineCode", 43826 CC[Var("c",F4),LW(15,4),EX(Var("imm32",F32),LN 23,LN 0,FTy 24)])), 43827 (Call("Setend",CTy"System",bVar"E"), 43828 ITE(EQ(Var("c",F4),LW(14,4)), 43829 Call 43830 ("ARM",CTy"MachineCode", 43831 CC[LW(3948608,22),Mop(Cast F1,bVar"E"),LW(0,9)]), 43832 Call("BadCode",CTy"MachineCode",LS"Setend")))])) 43833; 43834val e_multiply_def = Def 43835 ("e_multiply",TP[Var("c",F4),Var("ast",CTy"Multiply")], 43836 CS(Var("ast",CTy"Multiply"), 43837 [(Call 43838 ("MultiplyAccumulate",CTy"Multiply", 43839 TP[bVar"setflags",Var("Rd",F4),Var("Rn",F4),Var("Rm",F4), 43840 Var("Ra",F4)]), 43841 Call 43842 ("ARM",CTy"MachineCode", 43843 CC[Var("c",F4),LW(1,7),Mop(Cast F1,bVar"setflags"), 43844 Var("Rd",F4),Var("Ra",F4),Var("Rm",F4),LW(9,4),Var("Rn",F4)])), 43845 (Call 43846 ("Multiply32",CTy"Multiply", 43847 TP[bVar"setflags",Var("d",F4),Var("n",F4),Var("Rm",F4)]), 43848 Call 43849 ("ARM",CTy"MachineCode", 43850 CC[Var("c",F4),LW(0,7),Mop(Cast F1,bVar"setflags"),Var("d",F4), 43851 LW(0,4),Var("Rm",F4),LW(9,4),Var("n",F4)])), 43852 (Call 43853 ("MultiplyLong",CTy"Multiply", 43854 TP[bVar"accumulate",bVar"signed",bVar"setflags",Var("Rdhi",F4), 43855 Var("Rdlo",F4),Var("Rn",F4),Var("Rm",F4)]), 43856 Call 43857 ("ARM",CTy"MachineCode", 43858 CC[Var("c",F4),LW(1,5),Mop(Cast F1,bVar"signed"), 43859 Mop(Cast F1,bVar"accumulate"),Mop(Cast F1,bVar"setflags"), 43860 Var("Rdhi",F4),Var("Rdlo",F4),Var("Rm",F4),LW(9,4), 43861 Var("Rn",F4)])), 43862 (Call 43863 ("MultiplyAccumulateAccumulate",CTy"Multiply", 43864 TP[Var("Rdhi",F4),Var("Rdlo",F4),Var("Rn",F4),Var("Rm",F4)]), 43865 Call 43866 ("ARM",CTy"MachineCode", 43867 CC[Var("c",F4),LW(4,8),Var("Rdhi",F4),Var("Rdlo",F4), 43868 Var("Rm",F4),LW(9,4),Var("Rn",F4)])), 43869 (Call 43870 ("MultiplySubtract",CTy"Multiply", 43871 TP[Var("Rd",F4),Var("Rn",F4),Var("Rm",F4),Var("Ra",F4)]), 43872 Call 43873 ("ARM",CTy"MachineCode", 43874 CC[Var("c",F4),LW(6,8),Var("Rd",F4),Var("Ra",F4),Var("Rm",F4), 43875 LW(9,4),Var("Rn",F4)])), 43876 (Call 43877 ("Signed16Multiply32Accumulate",CTy"Multiply", 43878 TP[bVar"m_high",bVar"n_high",Var("Rd",F4),Var("Rn",F4), 43879 Var("Rm",F4),Var("Ra",F4)]), 43880 Call 43881 ("ARM",CTy"MachineCode", 43882 CC[Var("c",F4),LW(16,8),Var("Rd",F4),Var("Ra",F4),Var("Rm",F4), 43883 LW(1,1),Mop(Cast F1,bVar"m_high"),Mop(Cast F1,bVar"n_high"), 43884 LW(0,1),Var("Rn",F4)])), 43885 (Call 43886 ("Signed16Multiply32Result",CTy"Multiply", 43887 TP[bVar"m_high",bVar"n_high",Var("Rd",F4),Var("Rn",F4), 43888 Var("Rm",F4)]), 43889 Call 43890 ("ARM",CTy"MachineCode", 43891 CC[Var("c",F4),LW(22,8),Var("Rd",F4),LW(0,4),Var("Rm",F4), 43892 LW(1,1),Mop(Cast F1,bVar"m_high"),Mop(Cast F1,bVar"n_high"), 43893 LW(0,1),Var("Rn",F4)])), 43894 (Call 43895 ("Signed16x32Multiply32Accumulate",CTy"Multiply", 43896 TP[bVar"m_high",Var("Rd",F4),Var("Rn",F4),Var("Rm",F4), 43897 Var("Ra",F4)]), 43898 Call 43899 ("ARM",CTy"MachineCode", 43900 CC[Var("c",F4),LW(18,8),Var("Rd",F4),Var("Ra",F4),Var("Rm",F4), 43901 LW(1,1),Mop(Cast F1,bVar"m_high"),LW(0,2),Var("Rn",F4)])), 43902 (Call 43903 ("Signed16x32Multiply32Result",CTy"Multiply", 43904 TP[bVar"m_high",Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]), 43905 Call 43906 ("ARM",CTy"MachineCode", 43907 CC[Var("c",F4),LW(18,8),Var("Rd",F4),LW(0,4),Var("Rm",F4), 43908 LW(1,1),Mop(Cast F1,bVar"m_high"),LW(2,2),Var("Rn",F4)])), 43909 (Call 43910 ("Signed16Multiply64Accumulate",CTy"Multiply", 43911 TP[bVar"m_high",bVar"n_high",Var("Rdhi",F4),Var("Rdlo",F4), 43912 Var("Rn",F4),Var("Rm",F4)]), 43913 Call 43914 ("ARM",CTy"MachineCode", 43915 CC[Var("c",F4),LW(20,8),Var("Rdhi",F4),Var("Rdlo",F4), 43916 Var("Rm",F4),LW(1,1),Mop(Cast F1,bVar"m_high"), 43917 Mop(Cast F1,bVar"n_high"),LW(0,1),Var("Rn",F4)])), 43918 (Call 43919 ("SignedMultiplyDual",CTy"Multiply", 43920 TP[bVar"sub",bVar"m_swap",Var("Rd",F4),Var("Rn",F4), 43921 Var("Rm",F4),Var("Ra",F4)]), 43922 Call 43923 ("ARM",CTy"MachineCode", 43924 CC[Var("c",F4),LW(112,8),Var("Rd",F4),Var("Ra",F4), 43925 Var("Rm",F4),LW(0,1),Mop(Cast F1,bVar"sub"), 43926 Mop(Cast F1,bVar"m_swap"),LW(1,1),Var("Rn",F4)])), 43927 (Call 43928 ("SignedMultiplyLongDual",CTy"Multiply", 43929 TP[bVar"sub",bVar"m_swap",Var("Rdhi",F4),Var("Rdlo",F4), 43930 Var("Rn",F4),Var("Rm",F4)]), 43931 Call 43932 ("ARM",CTy"MachineCode", 43933 CC[Var("c",F4),LW(116,8),Var("Rdhi",F4),Var("Rdlo",F4), 43934 Var("Rm",F4),LW(0,1),Mop(Cast F1,bVar"sub"), 43935 Mop(Cast F1,bVar"m_swap"),LW(1,1),Var("Rn",F4)])), 43936 (Call 43937 ("SignedMostSignificantMultiply",CTy"Multiply", 43938 TP[bVar"round",Var("Rd",F4),Var("Rn",F4),Var("Rm",F4), 43939 Var("Ra",F4)]), 43940 Call 43941 ("ARM",CTy"MachineCode", 43942 CC[Var("c",F4),LW(117,8),Var("Rd",F4),Var("Ra",F4), 43943 Var("Rm",F4),LW(0,2),Mop(Cast F1,bVar"round"),LW(1,1), 43944 Var("Rn",F4)])), 43945 (Call 43946 ("SignedMostSignificantMultiplySubtract",CTy"Multiply", 43947 TP[bVar"round",Var("Rd",F4),Var("Rn",F4),Var("Rm",F4), 43948 Var("Ra",F4)]), 43949 Call 43950 ("ARM",CTy"MachineCode", 43951 CC[Var("c",F4),LW(117,8),Var("Rd",F4),Var("Ra",F4), 43952 Var("Rm",F4),LW(3,2),Mop(Cast F1,bVar"round"),LW(1,1), 43953 Var("Rn",F4)]))])) 43954; 43955val e_simd_def = Def 43956 ("e_simd",TP[Var("c",F4),Var("ast",CTy"SIMD")], 43957 CS(Var("ast",CTy"SIMD"), 43958 [(Call 43959 ("SignedAddSub16",CTy"SIMD", 43960 TP[Var("opc",FTy 2),Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]), 43961 Call 43962 ("ARM",CTy"MachineCode", 43963 CC[Var("c",F4),LW(97,8),Var("Rn",F4),Var("Rd",F4),LW(30,5), 43964 Var("opc",FTy 2),LW(1,1),Var("Rm",F4)])), 43965 (Call 43966 ("UnsignedAddSub16",CTy"SIMD", 43967 TP[Var("opc",FTy 2),Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]), 43968 Call 43969 ("ARM",CTy"MachineCode", 43970 CC[Var("c",F4),LW(101,8),Var("Rn",F4),Var("Rd",F4),LW(30,5), 43971 Var("opc",FTy 2),LW(1,1),Var("Rm",F4)])), 43972 (Call 43973 ("SignedSaturatingAddSub16",CTy"SIMD", 43974 TP[Var("opc",FTy 2),Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]), 43975 Call 43976 ("ARM",CTy"MachineCode", 43977 CC[Var("c",F4),LW(98,8),Var("Rn",F4),Var("Rd",F4),LW(30,5), 43978 Var("opc",FTy 2),LW(1,1),Var("Rm",F4)])), 43979 (Call 43980 ("UnsignedSaturatingAddSub16",CTy"SIMD", 43981 TP[Var("opc",FTy 2),Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]), 43982 Call 43983 ("ARM",CTy"MachineCode", 43984 CC[Var("c",F4),LW(102,8),Var("Rn",F4),Var("Rd",F4),LW(30,5), 43985 Var("opc",FTy 2),LW(1,1),Var("Rm",F4)])), 43986 (Call 43987 ("SignedHalvingAddSub16",CTy"SIMD", 43988 TP[Var("opc",FTy 2),Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]), 43989 Call 43990 ("ARM",CTy"MachineCode", 43991 CC[Var("c",F4),LW(99,8),Var("Rn",F4),Var("Rd",F4),LW(30,5), 43992 Var("opc",FTy 2),LW(1,1),Var("Rm",F4)])), 43993 (Call 43994 ("UnsignedHalvingAddSub16",CTy"SIMD", 43995 TP[Var("opc",FTy 2),Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]), 43996 Call 43997 ("ARM",CTy"MachineCode", 43998 CC[Var("c",F4),LW(103,8),Var("Rn",F4),Var("Rd",F4),LW(30,5), 43999 Var("opc",FTy 2),LW(1,1),Var("Rm",F4)])), 44000 (Call 44001 ("SignedAddSub8",CTy"SIMD", 44002 TP[bVar"sub",Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]), 44003 Call 44004 ("ARM",CTy"MachineCode", 44005 CC[Var("c",F4),LW(97,8),Var("Rn",F4),Var("Rd",F4),LW(15,4), 44006 ITE(bVar"sub",LW(7,3),LW(4,3)),LW(1,1),Var("Rm",F4)])), 44007 (Call 44008 ("UnsignedAddSub8",CTy"SIMD", 44009 TP[bVar"sub",Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]), 44010 Call 44011 ("ARM",CTy"MachineCode", 44012 CC[Var("c",F4),LW(101,8),Var("Rn",F4),Var("Rd",F4),LW(15,4), 44013 ITE(bVar"sub",LW(7,3),LW(4,3)),LW(1,1),Var("Rm",F4)])), 44014 (Call 44015 ("SignedSaturatingAddSub8",CTy"SIMD", 44016 TP[bVar"sub",Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]), 44017 Call 44018 ("ARM",CTy"MachineCode", 44019 CC[Var("c",F4),LW(98,8),Var("Rn",F4),Var("Rd",F4),LW(15,4), 44020 ITE(bVar"sub",LW(7,3),LW(4,3)),LW(1,1),Var("Rm",F4)])), 44021 (Call 44022 ("UnsignedSaturatingAddSub8",CTy"SIMD", 44023 TP[bVar"sub",Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]), 44024 Call 44025 ("ARM",CTy"MachineCode", 44026 CC[Var("c",F4),LW(102,8),Var("Rn",F4),Var("Rd",F4),LW(15,4), 44027 ITE(bVar"sub",LW(7,3),LW(4,3)),LW(1,1),Var("Rm",F4)])), 44028 (Call 44029 ("SignedHalvingAddSub8",CTy"SIMD", 44030 TP[bVar"sub",Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]), 44031 Call 44032 ("ARM",CTy"MachineCode", 44033 CC[Var("c",F4),LW(99,8),Var("Rn",F4),Var("Rd",F4),LW(15,4), 44034 ITE(bVar"sub",LW(7,3),LW(4,3)),LW(1,1),Var("Rm",F4)])), 44035 (Call 44036 ("UnsignedHalvingAddSub8",CTy"SIMD", 44037 TP[bVar"sub",Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]), 44038 Call 44039 ("ARM",CTy"MachineCode", 44040 CC[Var("c",F4),LW(103,8),Var("Rn",F4),Var("Rd",F4),LW(15,4), 44041 ITE(bVar"sub",LW(7,3),LW(4,3)),LW(1,1),Var("Rm",F4)])), 44042 (Call 44043 ("UnsignedSumAbsoluteDifferences",CTy"SIMD", 44044 TP[Var("Rd",F4),Var("Rn",F4),Var("Rm",F4),Var("Ra",F4)]), 44045 Call 44046 ("ARM",CTy"MachineCode", 44047 CC[Var("c",F4),LW(120,8),Var("Rd",F4),Var("Ra",F4), 44048 Var("Rm",F4),LW(1,4),Var("Rn",F4)]))])) 44049; 44050val e_load_def = Def 44051 ("e_load",TP[Var("c",F4),Var("ast",CTy"Load")], 44052 CS(Var("ast",CTy"Load"), 44053 [(Call 44054 ("LoadWord",CTy"Load", 44055 TP[AVar bTy,LF,LF,AVar(PTy(F4,PTy(F4,CTy"offset1")))]), 44056 Call("BadCode",CTy"MachineCode",LS"LoadWord")), 44057 (Call 44058 ("LoadWord",CTy"Load", 44059 TP[bVar"add",bVar"index",bVar"wback",Var("t",F4),Var("n",F4), 44060 Call("immediate_form1",CTy"offset1",Var("imm32",F32))]), 44061 ITE(Bop(Ule,Var("imm32",F32),LW(4095,32)), 44062 Call 44063 ("ARM",CTy"MachineCode", 44064 CC[Var("c",F4),LW(2,3),Mop(Cast F1,bVar"index"), 44065 Mop(Cast F1,bVar"add"),LW(0,1), 44066 Mop(Cast F1,Bop(And,bVar"index",bVar"wback")),LW(1,1), 44067 Var("n",F4),Var("t",F4), 44068 EX(Var("imm32",F32),LN 11,LN 0,FTy 12)]), 44069 Call("BadCode",CTy"MachineCode",LS"LoadWord"))), 44070 (Call 44071 ("LoadWord",CTy"Load", 44072 TP[bVar"add",bVar"index",bVar"wback",Var("t",F4),Var("n",F4), 44073 Call 44074 ("register_form1",CTy"offset1", 44075 TP[Var("m",F4),Var("shift_t",CTy"SRType"),nVar"shift_n"])]), 44076 Let(TP[Var("typ",FTy 2),Var("imm5",FTy 5)], 44077 Call 44078 ("EncodeImmShift",PTy(FTy 2,FTy 5), 44079 TP[Var("shift_t",CTy"SRType"),nVar"shift_n"]), 44080 Call 44081 ("ARM",CTy"MachineCode", 44082 CC[Var("c",F4),LW(3,3),Mop(Cast F1,bVar"index"), 44083 Mop(Cast F1,bVar"add"),LW(0,1), 44084 Mop(Cast F1,Bop(And,bVar"index",bVar"wback")),LW(1,1), 44085 Var("n",F4),Var("t",F4),Var("imm5",FTy 5), 44086 Var("typ",FTy 2),LW(0,1),Var("m",F4)]))), 44087 (Call 44088 ("LoadLiteral",CTy"Load", 44089 TP[bVar"add",Var("t",F4),Var("imm32",F32)]), 44090 ITE(Bop(Ule,Var("imm32",F32),LW(4095,32)), 44091 Call 44092 ("ARM",CTy"MachineCode", 44093 CC[Var("c",F4),LW(5,4),Mop(Cast F1,bVar"add"),LW(31,7), 44094 Var("t",F4),EX(Var("imm32",F32),LN 11,LN 0,FTy 12)]), 44095 Call("BadCode",CTy"MachineCode",LS"LoadLiteral"))), 44096 (Call 44097 ("LoadUnprivileged",CTy"Load", 44098 TP[bVar"add",bVar"postindex",Var("Rt",F4),Var("Rn",F4), 44099 Call("immediate_form1",CTy"offset1",Var("imm32",F32))]), 44100 ITE(Bop(And,bVar"postindex",Bop(Ule,Var("imm32",F32),LW(4095,32))), 44101 Call 44102 ("ARM",CTy"MachineCode", 44103 CC[Var("c",F4),LW(4,4),Mop(Cast F1,bVar"add"),LW(3,3), 44104 Var("Rn",F4),Var("Rt",F4), 44105 EX(Var("imm32",F32),LN 11,LN 0,FTy 12)]), 44106 Call("BadCode",CTy"MachineCode",LS"LoadUnprivileged"))), 44107 (Call 44108 ("LoadUnprivileged",CTy"Load", 44109 TP[bVar"add",bVar"postindex",Var("Rt",F4),Var("Rn",F4), 44110 Call 44111 ("register_form1",CTy"offset1", 44112 TP[Var("Rm",F4),Var("shift_t",CTy"SRType"),nVar"shift_n"])]), 44113 ITE(bVar"postindex", 44114 Let(TP[Var("typ",FTy 2),Var("imm5",FTy 5)], 44115 Call 44116 ("EncodeImmShift",PTy(FTy 2,FTy 5), 44117 TP[Var("shift_t",CTy"SRType"),nVar"shift_n"]), 44118 Call 44119 ("ARM",CTy"MachineCode", 44120 CC[Var("c",F4),LW(6,4),Mop(Cast F1,bVar"add"),LW(3,3), 44121 Var("Rn",F4),Var("Rt",F4),Var("imm5",FTy 5), 44122 Var("typ",FTy 2),LW(0,1),Var("Rm",F4)])), 44123 Call("BadCode",CTy"MachineCode",LS"LoadUnprivileged"))), 44124 (Call 44125 ("LoadByte",CTy"Load", 44126 TP[AVar bTy,AVar bTy,LF,LF,AVar(PTy(F4,PTy(F4,CTy"offset1")))]), 44127 Call("BadCode",CTy"MachineCode",LS"LoadByte")), 44128 (Call 44129 ("LoadByte",CTy"Load", 44130 TP[bVar"unsigned",bVar"add",bVar"index",bVar"wback", 44131 Var("t",F4),Var("n",F4), 44132 Call("immediate_form1",CTy"offset1",Var("imm32",F32))]), 44133 Let(Var("P",F1),Mop(Cast F1,bVar"index"), 44134 Let(Var("U",F1),Mop(Cast F1,bVar"add"), 44135 Let(Var("W",F1), 44136 Mop(Cast F1,Bop(And,bVar"index",bVar"wback")), 44137 ITB([(Bop(And,bVar"unsigned", 44138 Bop(Ule,Var("imm32",F32),LW(4095,32))), 44139 Call 44140 ("ARM",CTy"MachineCode", 44141 CC[Var("c",F4),LW(2,3),Var("P",F1), 44142 Var("U",F1),LW(1,1),Var("W",F1),LW(1,1), 44143 Var("n",F4),Var("t",F4), 44144 EX(Var("imm32",F32),LN 11,LN 0,FTy 12)])), 44145 (Bop(Ule,Var("imm32",F32),LW(255,32)), 44146 Call 44147 ("ARM",CTy"MachineCode", 44148 CC[Var("c",F4),LW(0,3),Var("P",F1), 44149 Var("U",F1),LW(1,1),Var("W",F1),LW(1,1), 44150 Var("n",F4),Var("t",F4), 44151 EX(Var("imm32",F32),LN 7,LN 4,F4), 44152 LW(13,4),EX(Var("imm32",F32),LN 3,LN 0,F4)]))], 44153 Call("BadCode",CTy"MachineCode",LS"LoadByte")))))), 44154 (Call 44155 ("LoadByte",CTy"Load", 44156 TP[bVar"unsigned",bVar"add",bVar"index",bVar"wback", 44157 Var("t",F4),Var("n",F4), 44158 Call 44159 ("register_form1",CTy"offset1", 44160 TP[Var("m",F4),Var("shift_t",CTy"SRType"),nVar"shift_n"])]), 44161 Let(TP[Var("typ",FTy 2),Var("imm5",FTy 5)], 44162 Call 44163 ("EncodeImmShift",PTy(FTy 2,FTy 5), 44164 TP[Var("shift_t",CTy"SRType"),nVar"shift_n"]), 44165 Let(Var("P",F1),Mop(Cast F1,bVar"index"), 44166 Let(Var("U",F1),Mop(Cast F1,bVar"add"), 44167 Let(Var("W",F1), 44168 Mop(Cast F1,Bop(And,bVar"index",bVar"wback")), 44169 ITB([(bVar"unsigned", 44170 Call 44171 ("ARM",CTy"MachineCode", 44172 CC[Var("c",F4),LW(3,3),Var("P",F1), 44173 Var("U",F1),LW(1,1),Var("W",F1), 44174 LW(1,1),Var("n",F4),Var("t",F4), 44175 Var("imm5",FTy 5),Var("typ",FTy 2), 44176 LW(0,1),Var("m",F4)])), 44177 (Bop(And, 44178 EQ(Var("shift_t",CTy"SRType"), 44179 LC("SRType_LSL",CTy"SRType")), 44180 EQ(nVar"shift_n",LN 0)), 44181 Call 44182 ("ARM",CTy"MachineCode", 44183 CC[Var("c",F4),LW(0,3),Var("P",F1), 44184 Var("U",F1),LW(0,1),Var("W",F1), 44185 LW(1,1),Var("n",F4),Var("t",F4), 44186 LW(13,8),Var("m",F4)]))], 44187 Call("BadCode",CTy"MachineCode",LS"LoadByte"))))))), 44188 (Call 44189 ("LoadByteLiteral",CTy"Load", 44190 TP[bVar"unsigned",bVar"add",Var("Rt",F4),Var("imm32",F32)]), 44191 Let(Var("U",F1),Mop(Cast F1,bVar"add"), 44192 ITB([(Bop(And,bVar"unsigned", 44193 Bop(Ule,Var("imm32",F32),LW(4095,32))), 44194 Call 44195 ("ARM",CTy"MachineCode", 44196 CC[Var("c",F4),LW(5,4),Var("U",F1),LW(95,7), 44197 Var("Rt",F4), 44198 EX(Var("imm32",F32),LN 11,LN 0,FTy 12)])), 44199 (Bop(Ule,Var("imm32",F32),LW(255,32)), 44200 Call 44201 ("ARM",CTy"MachineCode", 44202 CC[Var("c",F4),LW(1,4),Var("U",F1),LW(95,7), 44203 Var("Rt",F4),EX(Var("imm32",F32),LN 7,LN 4,F4), 44204 LW(13,4),EX(Var("imm32",F32),LN 3,LN 0,F4)]))], 44205 Call("BadCode",CTy"MachineCode",LS"LoadByteLiteral")))), 44206 (Call 44207 ("LoadByteUnprivileged",CTy"Load", 44208 TP[bVar"add",bVar"postindex",Var("Rt",F4),Var("Rn",F4), 44209 Call("immediate_form1",CTy"offset1",Var("imm32",F32))]), 44210 ITE(Bop(And,bVar"postindex",Bop(Ule,Var("imm32",F32),LW(4095,32))), 44211 Call 44212 ("ARM",CTy"MachineCode", 44213 CC[Var("c",F4),LW(4,4),Mop(Cast F1,bVar"add"),LW(7,3), 44214 Var("Rn",F4),Var("Rt",F4), 44215 EX(Var("imm32",F32),LN 11,LN 0,FTy 12)]), 44216 Call("BadCode",CTy"MachineCode",LS"LoadByteUnprivileged"))), 44217 (Call 44218 ("LoadByteUnprivileged",CTy"Load", 44219 TP[bVar"add",bVar"postindex",Var("Rt",F4),Var("Rn",F4), 44220 Call 44221 ("register_form1",CTy"offset1", 44222 TP[Var("Rm",F4),Var("shift_t",CTy"SRType"),nVar"shift_n"])]), 44223 ITE(bVar"postindex", 44224 Let(TP[Var("typ",FTy 2),Var("imm5",FTy 5)], 44225 Call 44226 ("EncodeImmShift",PTy(FTy 2,FTy 5), 44227 TP[Var("shift_t",CTy"SRType"),nVar"shift_n"]), 44228 Call 44229 ("ARM",CTy"MachineCode", 44230 CC[Var("c",F4),LW(6,4),Mop(Cast F1,bVar"add"),LW(7,3), 44231 Var("Rn",F4),Var("Rt",F4),Var("imm5",FTy 5), 44232 Var("typ",FTy 2),LW(0,1),Var("Rm",F4)])), 44233 Call("BadCode",CTy"MachineCode",LS"LoadByteUnprivileged"))), 44234 (Call 44235 ("LoadSignedByteUnprivileged",CTy"Load", 44236 TP[bVar"add",bVar"postindex",Var("Rt",F4),Var("Rn",F4), 44237 Call("immediate_form2",CTy"offset2",Var("imm32",F32))]), 44238 ITE(Bop(And,bVar"postindex",Bop(Ule,Var("imm32",F32),LW(255,32))), 44239 Call 44240 ("ARM",CTy"MachineCode", 44241 CC[Var("c",F4),LW(0,4),Mop(Cast F1,bVar"add"),LW(7,3), 44242 Var("Rn",F4),Var("Rt",F4), 44243 EX(Var("imm32",F32),LN 7,LN 4,F4),LW(13,4), 44244 EX(Var("imm32",F32),LN 3,LN 0,F4)]), 44245 Call 44246 ("BadCode",CTy"MachineCode",LS"LoadSignedByteUnprivileged"))), 44247 (Call 44248 ("LoadSignedByteUnprivileged",CTy"Load", 44249 TP[bVar"add",bVar"postindex",Var("Rt",F4),Var("Rn",F4), 44250 Call("register_form2",CTy"offset2",Var("Rm",F4))]), 44251 ITE(bVar"postindex", 44252 Call 44253 ("ARM",CTy"MachineCode", 44254 CC[Var("c",F4),LW(0,4),Mop(Cast F1,bVar"add"),LW(3,3), 44255 Var("Rn",F4),Var("Rt",F4),LW(13,8),Var("Rm",F4)]), 44256 Call 44257 ("BadCode",CTy"MachineCode",LS"LoadSignedByteUnprivileged"))), 44258 (Call 44259 ("LoadHalf",CTy"Load", 44260 TP[AVar bTy,AVar bTy,LF,LF,AVar(PTy(F4,PTy(F4,CTy"offset1")))]), 44261 Call("BadCode",CTy"MachineCode",LS"LoadHalf")), 44262 (Call 44263 ("LoadHalf",CTy"Load", 44264 TP[bVar"unsigned",bVar"add",bVar"index",bVar"wback", 44265 Var("t",F4),Var("n",F4), 44266 Call("immediate_form1",CTy"offset1",Var("imm32",F32))]), 44267 ITE(Bop(Ule,Var("imm32",F32),LW(255,32)), 44268 Call 44269 ("ARM",CTy"MachineCode", 44270 CC[Var("c",F4),LW(0,3),Mop(Cast F1,bVar"index"), 44271 Mop(Cast F1,bVar"add"),LW(1,1), 44272 Mop(Cast F1,Bop(And,bVar"index",bVar"wback")),LW(1,1), 44273 Var("n",F4),Var("t",F4), 44274 EX(Var("imm32",F32),LN 7,LN 4,F4),LW(1,1), 44275 Mop(Cast F1,Mop(Not,bVar"unsigned")),LW(3,2), 44276 EX(Var("imm32",F32),LN 3,LN 0,F4)]), 44277 Call("BadCode",CTy"MachineCode",LS"LoadHalf"))), 44278 (Call 44279 ("LoadHalf",CTy"Load", 44280 TP[bVar"unsigned",bVar"add",bVar"index",bVar"wback", 44281 Var("t",F4),Var("n",F4), 44282 Call 44283 ("register_form1",CTy"offset1", 44284 TP[Var("m",F4),Var("shift_t",CTy"SRType"),nVar"shift_n"])]), 44285 ITE(Bop(And, 44286 EQ(Var("shift_t",CTy"SRType"),LC("SRType_LSL",CTy"SRType")), 44287 EQ(nVar"shift_n",LN 0)), 44288 Call 44289 ("ARM",CTy"MachineCode", 44290 CC[Var("c",F4),LW(0,3),Mop(Cast F1,bVar"index"), 44291 Mop(Cast F1,bVar"add"),LW(0,1), 44292 Mop(Cast F1,Bop(And,bVar"index",bVar"wback")),LW(1,1), 44293 Var("n",F4),Var("t",F4),LW(1,5), 44294 Mop(Cast F1,Mop(Not,bVar"unsigned")),LW(3,2),Var("m",F4)]), 44295 Call("BadCode",CTy"MachineCode",LS"LoadHalf"))), 44296 (Call 44297 ("LoadHalfLiteral",CTy"Load", 44298 TP[bVar"unsigned",bVar"add",Var("Rt",F4),Var("imm32",F32)]), 44299 ITE(Bop(Ule,Var("imm32",F32),LW(255,32)), 44300 Call 44301 ("ARM",CTy"MachineCode", 44302 CC[Var("c",F4),LW(1,4),Mop(Cast F1,bVar"add"),LW(95,7), 44303 Var("Rt",F4),EX(Var("imm32",F32),LN 7,LN 4,F4),LW(1,1), 44304 Mop(Cast F1,Mop(Not,bVar"unsigned")),LW(3,2), 44305 EX(Var("imm32",F32),LN 3,LN 0,F4)]), 44306 Call("BadCode",CTy"MachineCode",LS"LoadHalfLiteral"))), 44307 (Call 44308 ("LoadHalfUnprivileged",CTy"Load", 44309 TP[bVar"unsigned",bVar"add",bVar"postindex",Var("Rt",F4), 44310 Var("Rn",F4), 44311 Call("immediate_form2",CTy"offset2",Var("imm32",F32))]), 44312 ITE(Bop(And,bVar"postindex",Bop(Ule,Var("imm32",F32),LW(255,32))), 44313 Call 44314 ("ARM",CTy"MachineCode", 44315 CC[Var("c",F4),LW(0,4),Mop(Cast F1,bVar"add"),LW(7,3), 44316 Var("Rn",F4),Var("Rt",F4), 44317 EX(Var("imm32",F32),LN 7,LN 4,F4),LW(1,1), 44318 Mop(Cast F1,Mop(Not,bVar"unsigned")),LW(3,2), 44319 EX(Var("imm32",F32),LN 3,LN 0,F4)]), 44320 Call("BadCode",CTy"MachineCode",LS"LoadHalfUnprivileged"))), 44321 (Call 44322 ("LoadHalfUnprivileged",CTy"Load", 44323 TP[bVar"unsigned",bVar"add",bVar"postindex",Var("Rt",F4), 44324 Var("Rn",F4), 44325 Call("register_form2",CTy"offset2",Var("Rm",F4))]), 44326 ITE(bVar"postindex", 44327 Call 44328 ("ARM",CTy"MachineCode", 44329 CC[Var("c",F4),LW(0,4),Mop(Cast F1,bVar"add"),LW(3,3), 44330 Var("Rn",F4),Var("Rt",F4),LW(1,5), 44331 Mop(Cast F1,Mop(Not,bVar"unsigned")),LW(3,2), 44332 Var("Rm",F4)]), 44333 Call("BadCode",CTy"MachineCode",LS"LoadHalfUnprivileged"))), 44334 (Call 44335 ("LoadMultiple",CTy"Load", 44336 TP[bVar"increment",bVar"index",bVar"wback",Var("n",F4), 44337 Var("registers",F16)]), 44338 Call 44339 ("ARM",CTy"MachineCode", 44340 CC[Var("c",F4),LW(4,3),Mop(Cast F1,bVar"index"), 44341 Mop(Cast F1,bVar"increment"),LW(0,1), 44342 Mop(Cast F1,bVar"wback"),LW(1,1),Var("n",F4), 44343 Var("registers",F16)])), 44344 (Call 44345 ("LoadMultipleExceptionReturn",CTy"Load", 44346 TP[bVar"increment",bVar"wordhigher",bVar"wback",Var("Rn",F4), 44347 Var("registers",FTy 15)]), 44348 Call 44349 ("ARM",CTy"MachineCode", 44350 CC[Var("c",F4),LW(4,3), 44351 Mop(Cast F1, 44352 ITE(bVar"wordhigher",bVar"increment", 44353 Mop(Not,bVar"increment"))), 44354 Mop(Cast F1,bVar"increment"),LW(1,1), 44355 Mop(Cast F1,bVar"wback"),LW(1,1),Var("Rn",F4),LW(1,1), 44356 Var("registers",FTy 15)])), 44357 (Call 44358 ("LoadMultipleUserRegisters",CTy"Load", 44359 TP[bVar"increment",bVar"wordhigher",Var("Rn",F4), 44360 Var("registers",FTy 15)]), 44361 Call 44362 ("ARM",CTy"MachineCode", 44363 CC[Var("c",F4),LW(4,3), 44364 Mop(Cast F1, 44365 ITE(bVar"wordhigher",bVar"increment", 44366 Mop(Not,bVar"increment"))), 44367 Mop(Cast F1,bVar"increment"),LW(5,3),Var("Rn",F4),LW(0,1), 44368 Var("registers",FTy 15)])), 44369 (Call 44370 ("LoadDual",CTy"Load", 44371 TP[bVar"add",bVar"index",bVar"wback",Var("Rt",F4), 44372 Var("Rt2",F4),Var("Rn",F4), 44373 Call("immediate_form2",CTy"offset2",Var("imm32",F32))]), 44374 ITE(Bop(And,EQ(Bop(Add,Var("Rt",F4),LW(1,4)),Var("Rt2",F4)), 44375 Bop(Ule,Var("imm32",F32),LW(255,32))), 44376 Call 44377 ("ARM",CTy"MachineCode", 44378 CC[Var("c",F4),LW(0,3),Mop(Cast F1,bVar"index"), 44379 Mop(Cast F1,bVar"add"),LW(1,1), 44380 Mop(Cast F1,Bop(And,bVar"index",bVar"wback")),LW(0,1), 44381 Var("Rn",F4),Var("Rt",F4), 44382 EX(Var("imm32",F32),LN 7,LN 4,F4),LW(13,4), 44383 EX(Var("imm32",F32),LN 3,LN 0,F4)]), 44384 Call("BadCode",CTy"MachineCode",LS"LoadDual"))), 44385 (Call 44386 ("LoadDual",CTy"Load", 44387 TP[bVar"add",bVar"index",bVar"wback",Var("Rt",F4), 44388 Var("Rt2",F4),Var("Rn",F4), 44389 Call("register_form2",CTy"offset2",Var("Rm",F4))]), 44390 ITE(EQ(Bop(Add,Var("Rt",F4),LW(1,4)),Var("Rt2",F4)), 44391 Call 44392 ("ARM",CTy"MachineCode", 44393 CC[Var("c",F4),LW(0,3),Mop(Cast F1,bVar"index"), 44394 Mop(Cast F1,bVar"add"),LW(0,1), 44395 Mop(Cast F1,Bop(And,bVar"index",bVar"wback")),LW(0,1), 44396 Var("Rn",F4),Var("Rt",F4),LW(13,8),Var("Rm",F4)]), 44397 Call("BadCode",CTy"MachineCode",LS"LoadDual"))), 44398 (Call 44399 ("LoadDualLiteral",CTy"Load", 44400 TP[bVar"add",Var("Rt",F4),Var("Rt2",F4),Var("imm32",F32)]), 44401 ITE(Bop(And,EQ(Bop(Add,Var("Rt",F4),LW(1,4)),Var("Rt2",F4)), 44402 Bop(Ule,Var("imm32",F32),LW(255,32))), 44403 Call 44404 ("ARM",CTy"MachineCode", 44405 CC[Var("c",F4),LW(1,4),Mop(Cast F1,bVar"add"),LW(79,7), 44406 Var("Rt",F4),EX(Var("imm32",F32),LN 7,LN 4,F4),LW(13,4), 44407 EX(Var("imm32",F32),LN 3,LN 0,F4)]), 44408 Call("BadCode",CTy"MachineCode",LS"LoadDualLiteral"))), 44409 (Call 44410 ("LoadExclusive",CTy"Load", 44411 TP[Var("Rt",F4),Var("Rn",F4),Var("imm32",F32)]), 44412 ITE(EQ(Var("imm32",F32),LW(0,32)), 44413 Call 44414 ("ARM",CTy"MachineCode", 44415 CC[Var("c",F4),LW(25,8),Var("Rn",F4),Var("Rt",F4), 44416 LW(3999,12)]), 44417 Call("BadCode",CTy"MachineCode",LS"LoadExclusive"))), 44418 (Call("LoadExclusiveByte",CTy"Load",TP[Var("Rt",F4),Var("Rn",F4)]), 44419 Call 44420 ("ARM",CTy"MachineCode", 44421 CC[Var("c",F4),LW(29,8),Var("Rn",F4),Var("Rt",F4),LW(3999,12)])), 44422 (Call("LoadExclusiveHalf",CTy"Load",TP[Var("Rt",F4),Var("Rn",F4)]), 44423 Call 44424 ("ARM",CTy"MachineCode", 44425 CC[Var("c",F4),LW(31,8),Var("Rn",F4),Var("Rt",F4),LW(3999,12)])), 44426 (Call 44427 ("LoadExclusiveDoubleword",CTy"Load", 44428 TP[Var("Rt",F4),Var("Rt2",F4),Var("Rn",F4)]), 44429 ITE(EQ(Bop(Add,Var("Rt",F4),LW(1,4)),Var("Rt2",F4)), 44430 Call 44431 ("ARM",CTy"MachineCode", 44432 CC[Var("c",F4),LW(27,8),Var("Rn",F4),Var("Rt",F4), 44433 LW(3999,12)]), 44434 Call("BadCode",CTy"MachineCode",LS"LoadExclusiveDoubleword")))])) 44435; 44436val e_store_def = Def 44437 ("e_store",TP[Var("c",F4),Var("ast",CTy"Store")], 44438 CS(Var("ast",CTy"Store"), 44439 [(Call 44440 ("StoreWord",CTy"Store", 44441 TP[AVar bTy,LF,LF,AVar(PTy(F4,PTy(F4,CTy"offset1")))]), 44442 Call("BadCode",CTy"MachineCode",LS"StoreWord")), 44443 (Call 44444 ("StoreWord",CTy"Store", 44445 TP[bVar"add",bVar"index",bVar"wback",Var("t",F4),Var("n",F4), 44446 Call("immediate_form1",CTy"offset1",Var("imm32",F32))]), 44447 ITE(Bop(Ule,Var("imm32",F32),LW(4095,32)), 44448 Call 44449 ("ARM",CTy"MachineCode", 44450 CC[Var("c",F4),LW(2,3),Mop(Cast F1,bVar"index"), 44451 Mop(Cast F1,bVar"add"),LW(0,1), 44452 Mop(Cast F1,Bop(And,bVar"index",bVar"wback")),LW(0,1), 44453 Var("n",F4),Var("t",F4), 44454 EX(Var("imm32",F32),LN 11,LN 0,FTy 12)]), 44455 Call("BadCode",CTy"MachineCode",LS"StoreWord"))), 44456 (Call 44457 ("StoreWord",CTy"Store", 44458 TP[bVar"add",bVar"index",bVar"wback",Var("t",F4),Var("n",F4), 44459 Call 44460 ("register_form1",CTy"offset1", 44461 TP[Var("m",F4),Var("shift_t",CTy"SRType"),nVar"shift_n"])]), 44462 Let(TP[Var("typ",FTy 2),Var("imm5",FTy 5)], 44463 Call 44464 ("EncodeImmShift",PTy(FTy 2,FTy 5), 44465 TP[Var("shift_t",CTy"SRType"),nVar"shift_n"]), 44466 Call 44467 ("ARM",CTy"MachineCode", 44468 CC[Var("c",F4),LW(3,3),Mop(Cast F1,bVar"index"), 44469 Mop(Cast F1,bVar"add"),LW(0,1), 44470 Mop(Cast F1,Bop(And,bVar"index",bVar"wback")),LW(0,1), 44471 Var("n",F4),Var("t",F4),Var("imm5",FTy 5), 44472 Var("typ",FTy 2),LW(0,1),Var("m",F4)]))), 44473 (Call 44474 ("StoreUnprivileged",CTy"Store", 44475 TP[bVar"add",bVar"postindex",Var("Rt",F4),Var("Rn",F4), 44476 Call("immediate_form1",CTy"offset1",Var("imm32",F32))]), 44477 ITE(Bop(And,bVar"postindex",Bop(Ule,Var("imm32",F32),LW(4095,32))), 44478 Call 44479 ("ARM",CTy"MachineCode", 44480 CC[Var("c",F4),LW(4,4),Mop(Cast F1,bVar"add"),LW(2,3), 44481 Var("Rn",F4),Var("Rt",F4), 44482 EX(Var("imm32",F32),LN 11,LN 0,FTy 12)]), 44483 Call("BadCode",CTy"MachineCode",LS"StoreUnprivileged"))), 44484 (Call 44485 ("StoreUnprivileged",CTy"Store", 44486 TP[bVar"add",bVar"postindex",Var("Rt",F4),Var("Rn",F4), 44487 Call 44488 ("register_form1",CTy"offset1", 44489 TP[Var("Rm",F4),Var("shift_t",CTy"SRType"),nVar"shift_n"])]), 44490 ITE(bVar"postindex", 44491 Let(TP[Var("typ",FTy 2),Var("imm5",FTy 5)], 44492 Call 44493 ("EncodeImmShift",PTy(FTy 2,FTy 5), 44494 TP[Var("shift_t",CTy"SRType"),nVar"shift_n"]), 44495 Call 44496 ("ARM",CTy"MachineCode", 44497 CC[Var("c",F4),LW(6,4),Mop(Cast F1,bVar"add"),LW(2,3), 44498 Var("Rn",F4),Var("Rt",F4),Var("imm5",FTy 5), 44499 Var("typ",FTy 2),LW(0,1),Var("Rm",F4)])), 44500 Call("BadCode",CTy"MachineCode",LS"StoreUnprivileged"))), 44501 (Call 44502 ("StoreByte",CTy"Store", 44503 TP[AVar bTy,LF,LF,AVar(PTy(F4,PTy(F4,CTy"offset1")))]), 44504 Call("BadCode",CTy"MachineCode",LS"StoreByte")), 44505 (Call 44506 ("StoreByte",CTy"Store", 44507 TP[bVar"add",bVar"index",bVar"wback",Var("t",F4),Var("n",F4), 44508 Call("immediate_form1",CTy"offset1",Var("imm32",F32))]), 44509 ITE(Bop(Ule,Var("imm32",F32),LW(4095,32)), 44510 Call 44511 ("ARM",CTy"MachineCode", 44512 CC[Var("c",F4),LW(2,3),Mop(Cast F1,bVar"index"), 44513 Mop(Cast F1,bVar"add"),LW(1,1), 44514 Mop(Cast F1,Bop(And,bVar"index",bVar"wback")),LW(0,1), 44515 Var("n",F4),Var("t",F4), 44516 EX(Var("imm32",F32),LN 11,LN 0,FTy 12)]), 44517 Call("BadCode",CTy"MachineCode",LS"StoreByte"))), 44518 (Call 44519 ("StoreByte",CTy"Store", 44520 TP[bVar"add",bVar"index",bVar"wback",Var("t",F4),Var("n",F4), 44521 Call 44522 ("register_form1",CTy"offset1", 44523 TP[Var("m",F4),Var("shift_t",CTy"SRType"),nVar"shift_n"])]), 44524 Let(TP[Var("typ",FTy 2),Var("imm5",FTy 5)], 44525 Call 44526 ("EncodeImmShift",PTy(FTy 2,FTy 5), 44527 TP[Var("shift_t",CTy"SRType"),nVar"shift_n"]), 44528 Call 44529 ("ARM",CTy"MachineCode", 44530 CC[Var("c",F4),LW(3,3),Mop(Cast F1,bVar"index"), 44531 Mop(Cast F1,bVar"add"),LW(1,1), 44532 Mop(Cast F1,Bop(And,bVar"index",bVar"wback")),LW(0,1), 44533 Var("n",F4),Var("t",F4),Var("imm5",FTy 5), 44534 Var("typ",FTy 2),LW(0,1),Var("m",F4)]))), 44535 (Call 44536 ("StoreByteUnprivileged",CTy"Store", 44537 TP[bVar"add",bVar"postindex",Var("Rt",F4),Var("Rn",F4), 44538 Call("immediate_form1",CTy"offset1",Var("imm32",F32))]), 44539 ITE(Bop(And,bVar"postindex",Bop(Ule,Var("imm32",F32),LW(4095,32))), 44540 Call 44541 ("ARM",CTy"MachineCode", 44542 CC[Var("c",F4),LW(4,4),Mop(Cast F1,bVar"add"),LW(6,3), 44543 Var("Rn",F4),Var("Rt",F4), 44544 EX(Var("imm32",F32),LN 11,LN 0,FTy 12)]), 44545 Call("BadCode",CTy"MachineCode",LS"StoreByteUnprivileged"))), 44546 (Call 44547 ("StoreByteUnprivileged",CTy"Store", 44548 TP[bVar"add",bVar"postindex",Var("Rt",F4),Var("Rn",F4), 44549 Call 44550 ("register_form1",CTy"offset1", 44551 TP[Var("Rm",F4),Var("shift_t",CTy"SRType"),nVar"shift_n"])]), 44552 ITE(bVar"postindex", 44553 Let(TP[Var("typ",FTy 2),Var("imm5",FTy 5)], 44554 Call 44555 ("EncodeImmShift",PTy(FTy 2,FTy 5), 44556 TP[Var("shift_t",CTy"SRType"),nVar"shift_n"]), 44557 Call 44558 ("ARM",CTy"MachineCode", 44559 CC[Var("c",F4),LW(6,4),Mop(Cast F1,bVar"add"),LW(6,3), 44560 Var("Rn",F4),Var("Rt",F4),Var("imm5",FTy 5), 44561 Var("typ",FTy 2),LW(0,1),Var("Rm",F4)])), 44562 Call("BadCode",CTy"MachineCode",LS"StoreByteUnprivileged"))), 44563 (Call 44564 ("StoreHalf",CTy"Store", 44565 TP[AVar bTy,LF,LF,AVar(PTy(F4,PTy(F4,CTy"offset1")))]), 44566 Call("BadCode",CTy"MachineCode",LS"StoreHalf")), 44567 (Call 44568 ("StoreHalf",CTy"Store", 44569 TP[bVar"add",bVar"index",bVar"wback",Var("t",F4),Var("n",F4), 44570 Call("immediate_form1",CTy"offset1",Var("imm32",F32))]), 44571 ITE(Bop(Ule,Var("imm32",F32),LW(255,32)), 44572 Call 44573 ("ARM",CTy"MachineCode", 44574 CC[Var("c",F4),LW(0,3),Mop(Cast F1,bVar"index"), 44575 Mop(Cast F1,bVar"add"),LW(1,1), 44576 Mop(Cast F1,Bop(And,bVar"index",bVar"wback")),LW(0,1), 44577 Var("n",F4),Var("t",F4), 44578 EX(Var("imm32",F32),LN 7,LN 4,F4),LW(11,4), 44579 EX(Var("imm32",F32),LN 3,LN 0,F4)]), 44580 Call("BadCode",CTy"MachineCode",LS"StoreHalf"))), 44581 (Call 44582 ("StoreHalf",CTy"Store", 44583 TP[bVar"add",bVar"index",bVar"wback",Var("t",F4),Var("n",F4), 44584 Call 44585 ("register_form1",CTy"offset1", 44586 TP[Var("m",F4),Var("shift_t",CTy"SRType"),nVar"shift_n"])]), 44587 ITE(Bop(And, 44588 EQ(Var("shift_t",CTy"SRType"),LC("SRType_LSL",CTy"SRType")), 44589 EQ(nVar"shift_n",LN 0)), 44590 Call 44591 ("ARM",CTy"MachineCode", 44592 CC[Var("c",F4),LW(0,3),Mop(Cast F1,bVar"index"), 44593 Mop(Cast F1,bVar"add"),LW(0,1), 44594 Mop(Cast F1,Bop(And,bVar"index",bVar"wback")),LW(0,1), 44595 Var("n",F4),Var("t",F4),LW(11,8),Var("m",F4)]), 44596 Call("BadCode",CTy"MachineCode",LS"StoreHalf"))), 44597 (Call 44598 ("StoreHalfUnprivileged",CTy"Store", 44599 TP[bVar"add",bVar"postindex",Var("Rt",F4),Var("Rn",F4), 44600 Call("immediate_form2",CTy"offset2",Var("imm32",F32))]), 44601 ITE(Bop(And,bVar"postindex",Bop(Ule,Var("imm32",F32),LW(255,32))), 44602 Call 44603 ("ARM",CTy"MachineCode", 44604 CC[Var("c",F4),LW(0,4),Mop(Cast F1,bVar"add"),LW(6,3), 44605 Var("Rn",F4),Var("Rt",F4), 44606 EX(Var("imm32",F32),LN 7,LN 4,F4),LW(11,4), 44607 EX(Var("imm32",F32),LN 3,LN 0,F4)]), 44608 Call("BadCode",CTy"MachineCode",LS"StoreHalfUnprivileged"))), 44609 (Call 44610 ("StoreHalfUnprivileged",CTy"Store", 44611 TP[bVar"add",bVar"postindex",Var("Rt",F4),Var("Rn",F4), 44612 Call("register_form2",CTy"offset2",Var("Rm",F4))]), 44613 ITE(bVar"postindex", 44614 Call 44615 ("ARM",CTy"MachineCode", 44616 CC[Var("c",F4),LW(0,4),Mop(Cast F1,bVar"add"),LW(2,3), 44617 Var("Rn",F4),Var("Rt",F4),LW(11,8),Var("Rm",F4)]), 44618 Call("BadCode",CTy"MachineCode",LS"StoreHalfUnprivileged"))), 44619 (Call 44620 ("StoreMultiple",CTy"Store", 44621 TP[bVar"increment",bVar"index",bVar"wback",Var("n",F4), 44622 Var("registers",F16)]), 44623 Call 44624 ("ARM",CTy"MachineCode", 44625 CC[Var("c",F4),LW(4,3),Mop(Cast F1,bVar"index"), 44626 Mop(Cast F1,bVar"increment"),LW(0,1), 44627 Mop(Cast F1,bVar"wback"),LW(0,1),Var("n",F4), 44628 Var("registers",F16)])), 44629 (Call 44630 ("StoreMultipleUserRegisters",CTy"Store", 44631 TP[bVar"increment",bVar"wordhigher",Var("Rn",F4), 44632 Var("registers",F16)]), 44633 Call 44634 ("ARM",CTy"MachineCode", 44635 CC[Var("c",F4),LW(4,3), 44636 Mop(Cast F1, 44637 ITE(bVar"wordhigher",bVar"increment", 44638 Mop(Not,bVar"increment"))), 44639 Mop(Cast F1,bVar"increment"),LW(4,3),Var("Rn",F4), 44640 Var("registers",F16)])), 44641 (Call 44642 ("StoreDual",CTy"Store", 44643 TP[bVar"add",bVar"index",bVar"wback",Var("Rt",F4), 44644 Var("Rt2",F4),Var("Rn",F4), 44645 Call("immediate_form2",CTy"offset2",Var("imm32",F32))]), 44646 ITE(Bop(And,EQ(Bop(Add,Var("Rt",F4),LW(1,4)),Var("Rt2",F4)), 44647 Bop(Ule,Var("imm32",F32),LW(255,32))), 44648 Call 44649 ("ARM",CTy"MachineCode", 44650 CC[Var("c",F4),LW(0,3),Mop(Cast F1,bVar"index"), 44651 Mop(Cast F1,bVar"add"),LW(1,1), 44652 Mop(Cast F1,Bop(And,bVar"index",bVar"wback")),LW(0,1), 44653 Var("Rn",F4),Var("Rt",F4), 44654 EX(Var("imm32",F32),LN 7,LN 4,F4),LW(15,4), 44655 EX(Var("imm32",F32),LN 3,LN 0,F4)]), 44656 Call("BadCode",CTy"MachineCode",LS"StoreDual"))), 44657 (Call 44658 ("StoreDual",CTy"Store", 44659 TP[bVar"add",bVar"index",bVar"wback",Var("Rt",F4), 44660 Var("Rt2",F4),Var("Rn",F4), 44661 Call("register_form2",CTy"offset2",Var("Rm",F4))]), 44662 ITE(EQ(Bop(Add,Var("Rt",F4),LW(1,4)),Var("Rt2",F4)), 44663 Call 44664 ("ARM",CTy"MachineCode", 44665 CC[Var("c",F4),LW(0,3),Mop(Cast F1,bVar"index"), 44666 Mop(Cast F1,bVar"add"),LW(0,1), 44667 Mop(Cast F1,Bop(And,bVar"index",bVar"wback")),LW(0,1), 44668 Var("Rn",F4),Var("Rt",F4),LW(15,8),Var("Rm",F4)]), 44669 Call("BadCode",CTy"MachineCode",LS"StoreDual"))), 44670 (Call 44671 ("StoreExclusive",CTy"Store", 44672 TP[Var("Rd",F4),Var("Rt",F4),Var("Rn",F4),Var("imm32",F32)]), 44673 ITE(EQ(Var("imm32",F32),LW(0,32)), 44674 Call 44675 ("ARM",CTy"MachineCode", 44676 CC[Var("c",F4),LW(24,8),Var("Rn",F4),Var("Rd",F4), 44677 LW(249,8),Var("Rt",F4)]), 44678 Call("BadCode",CTy"MachineCode",LS"StoreExclusive"))), 44679 (Call 44680 ("StoreExclusiveByte",CTy"Store", 44681 TP[Var("Rd",F4),Var("Rt",F4),Var("Rn",F4)]), 44682 Call 44683 ("ARM",CTy"MachineCode", 44684 CC[Var("c",F4),LW(28,8),Var("Rn",F4),Var("Rd",F4),LW(249,8), 44685 Var("Rt",F4)])), 44686 (Call 44687 ("StoreExclusiveHalf",CTy"Store", 44688 TP[Var("Rd",F4),Var("Rt",F4),Var("Rn",F4)]), 44689 Call 44690 ("ARM",CTy"MachineCode", 44691 CC[Var("c",F4),LW(30,8),Var("Rn",F4),Var("Rd",F4),LW(249,8), 44692 Var("Rt",F4)])), 44693 (Call 44694 ("StoreExclusiveDoubleword",CTy"Store", 44695 TP[Var("Rd",F4),Var("Rt",F4),Var("Rt2",F4),Var("Rn",F4)]), 44696 ITE(EQ(Bop(Add,Var("Rt",F4),LW(1,4)),Var("Rt2",F4)), 44697 Call 44698 ("ARM",CTy"MachineCode", 44699 CC[Var("c",F4),LW(26,8),Var("Rn",F4),Var("Rd",F4), 44700 LW(249,8),Var("Rt",F4)]), 44701 Call("BadCode",CTy"MachineCode",LS"StoreExclusiveDoubleword")))])) 44702; 44703val encode_def = Def 44704 ("encode",TP[Var("c",F4),Var("ast",CTy"instruction")], 44705 CS(Var("ast",CTy"instruction"), 44706 [(Call("Branch",CTy"instruction",Var("b",CTy"Branch")), 44707 Call 44708 ("e_branch",CTy"MachineCode", 44709 TP[Var("c",F4),Var("b",CTy"Branch")])), 44710 (Call("Data",CTy"instruction",Var("d",CTy"Data")), 44711 Call("e_data",CTy"MachineCode",TP[Var("c",F4),Var("d",CTy"Data")])), 44712 (Call("Load",CTy"instruction",Var("l",CTy"Load")), 44713 Call("e_load",CTy"MachineCode",TP[Var("c",F4),Var("l",CTy"Load")])), 44714 (Call("Store",CTy"instruction",Var("s",CTy"Store")), 44715 Call 44716 ("e_store",CTy"MachineCode",TP[Var("c",F4),Var("s",CTy"Store")])), 44717 (Call("Multiply",CTy"instruction",Var("m",CTy"Multiply")), 44718 Call 44719 ("e_multiply",CTy"MachineCode", 44720 TP[Var("c",F4),Var("m",CTy"Multiply")])), 44721 (Call("Media",CTy"instruction",Var("m",CTy"Media")), 44722 Call 44723 ("e_media",CTy"MachineCode",TP[Var("c",F4),Var("m",CTy"Media")])), 44724 (Call("SIMD",CTy"instruction",Var("m",CTy"SIMD")), 44725 Call("e_simd",CTy"MachineCode",TP[Var("c",F4),Var("m",CTy"SIMD")])), 44726 (Call("System",CTy"instruction",Var("s",CTy"System")), 44727 Call 44728 ("e_system",CTy"MachineCode", 44729 TP[Var("c",F4),Var("s",CTy"System")])), 44730 (Call("Hint",CTy"instruction",Var("h",CTy"Hint")), 44731 Call("e_hint",CTy"MachineCode",TP[Var("c",F4),Var("h",CTy"Hint")])), 44732 (Call("VFP",CTy"instruction",Var("v",CTy"VFP")), 44733 Call("e_vfp",CTy"MachineCode",TP[Var("c",F4),Var("v",CTy"VFP")])), 44734 (Call 44735 ("IfThen",CTy"instruction", 44736 TP[Var("firstcond",F4),Var("mask",F4)]), 44737 Call("BadCode",CTy"MachineCode",LS"IfThen")), 44738 (Call 44739 ("Divide",CTy"instruction", 44740 TP[bVar"unsigned",Var("Rd",F4),Var("Rn",F4),Var("Rm",F4)]), 44741 Call("BadCode",CTy"MachineCode",LS"Divide")), 44742 (Const("ClearExclusive",CTy"instruction"), 44743 ITE(EQ(Var("c",F4),LW(14,4)), 44744 Call("ARM",CTy"MachineCode",LW(4118802463,32)), 44745 Call("BadCode",CTy"MachineCode",LS"ClearExclusive"))), 44746 (Call 44747 ("Swap",CTy"instruction", 44748 TP[bVar"byte",Var("Rt",F4),Var("Rt2",F4),Var("Rn",F4)]), 44749 Call 44750 ("ARM",CTy"MachineCode", 44751 CC[Var("c",F4),LW(2,5),Mop(Cast F1,bVar"byte"),LW(0,2), 44752 Var("Rn",F4),Var("Rt",F4),LW(9,8),Var("Rt2",F4)])), 44753 (Call("Undefined",CTy"instruction",Var("imm32",F32)), 44754 Call 44755 ("ARM",CTy"MachineCode", 44756 CC[LW(3711,12),EX(Var("imm32",F32),LN 15,LN 4,FTy 12),LW(15,4), 44757 EX(Var("imm32",F32),LN 3,LN 0,F4)])), 44758 (Const("NoOperation",CTy"instruction"), 44759 Call("ARM",CTy"MachineCode",CC[Var("c",F4),LW(52490240,28)]))])) 44760; 44761val SetPassCondition_def = Def 44762 ("SetPassCondition",Var("c",F4), 44763 Close 44764 (qVar"state", 44765 CS(Var("c",F4), 44766 [(LW(0,4), 44767 Rupd 44768 ("CPSR", 44769 TP[qVar"state", 44770 Rupd("Z",TP[Dest("CPSR",CTy"PSR",qVar"state"),LT])])), 44771 (LW(1,4), 44772 Rupd 44773 ("CPSR", 44774 TP[qVar"state", 44775 Rupd("Z",TP[Dest("CPSR",CTy"PSR",qVar"state"),LF])])), 44776 (LW(2,4), 44777 Rupd 44778 ("CPSR", 44779 TP[qVar"state", 44780 Rupd("C",TP[Dest("CPSR",CTy"PSR",qVar"state"),LT])])), 44781 (LW(3,4), 44782 Rupd 44783 ("CPSR", 44784 TP[qVar"state", 44785 Rupd("C",TP[Dest("CPSR",CTy"PSR",qVar"state"),LF])])), 44786 (LW(4,4), 44787 Rupd 44788 ("CPSR", 44789 TP[qVar"state", 44790 Rupd("N",TP[Dest("CPSR",CTy"PSR",qVar"state"),LT])])), 44791 (LW(5,4), 44792 Rupd 44793 ("CPSR", 44794 TP[qVar"state", 44795 Rupd("N",TP[Dest("CPSR",CTy"PSR",qVar"state"),LF])])), 44796 (LW(6,4), 44797 Rupd 44798 ("CPSR", 44799 TP[qVar"state", 44800 Rupd("V",TP[Dest("CPSR",CTy"PSR",qVar"state"),LT])])), 44801 (LW(7,4), 44802 Rupd 44803 ("CPSR", 44804 TP[qVar"state", 44805 Rupd("V",TP[Dest("CPSR",CTy"PSR",qVar"state"),LF])])), 44806 (LW(8,4), 44807 Let(qVar"s", 44808 Rupd 44809 ("CPSR", 44810 TP[qVar"state", 44811 Rupd("C",TP[Dest("CPSR",CTy"PSR",qVar"state"),LT])]), 44812 Rupd 44813 ("CPSR", 44814 TP[qVar"s", 44815 Rupd("Z",TP[Dest("CPSR",CTy"PSR",qVar"s"),LF])]))), 44816 (LW(9,4), 44817 Rupd 44818 ("CPSR", 44819 TP[qVar"state", 44820 Rupd("C",TP[Dest("CPSR",CTy"PSR",qVar"state"),LF])])), 44821 (LW(10,4), 44822 Let(qVar"s", 44823 Rupd 44824 ("CPSR", 44825 TP[qVar"state", 44826 Rupd("N",TP[Dest("CPSR",CTy"PSR",qVar"state"),LF])]), 44827 Rupd 44828 ("CPSR", 44829 TP[qVar"s", 44830 Rupd("V",TP[Dest("CPSR",CTy"PSR",qVar"s"),LF])]))), 44831 (LW(11,4), 44832 Let(qVar"s", 44833 Rupd 44834 ("CPSR", 44835 TP[qVar"state", 44836 Rupd("N",TP[Dest("CPSR",CTy"PSR",qVar"state"),LF])]), 44837 Rupd 44838 ("CPSR", 44839 TP[qVar"s", 44840 Rupd("V",TP[Dest("CPSR",CTy"PSR",qVar"s"),LT])]))), 44841 (LW(12,4), 44842 Let(qVar"s", 44843 Rupd 44844 ("CPSR", 44845 TP[qVar"state", 44846 Rupd("N",TP[Dest("CPSR",CTy"PSR",qVar"state"),LF])]), 44847 Let(qVar"s", 44848 Rupd 44849 ("CPSR", 44850 TP[qVar"s", 44851 Rupd("V",TP[Dest("CPSR",CTy"PSR",qVar"s"),LF])]), 44852 Rupd 44853 ("CPSR", 44854 TP[qVar"s", 44855 Rupd("Z",TP[Dest("CPSR",CTy"PSR",qVar"s"),LF])])))), 44856 (LW(13,4), 44857 Let(qVar"s", 44858 Rupd 44859 ("CPSR", 44860 TP[qVar"state", 44861 Rupd("N",TP[Dest("CPSR",CTy"PSR",qVar"state"),LF])]), 44862 Rupd 44863 ("CPSR", 44864 TP[qVar"s", 44865 Rupd("V",TP[Dest("CPSR",CTy"PSR",qVar"s"),LT])]))), 44866 (AVar F4,qVar"state")]))) 44867 44868val () = Import.finish 0