1(* arm8Script.sml - generated by L3 - Wed Oct 11 10:50:19 2017 *) 2open HolKernel boolLib bossLib Import 3 4val () = Import.start "arm8" 5 6val () = ieee_underflow_before := true 7 8val _ = Record 9 ("ProcState", 10 [("C",bTy),("EL",FTy 2),("N",bTy),("SPS",bTy),("V",bTy),("Z",bTy)]) 11; 12val _ = Record 13 ("TCR_EL1",[("TBI0",bTy),("TBI1",bTy),("tcr_el1'rst",FTy 62)]) 14; 15val _ = Record ("TCR_EL2_EL3",[("TBI",bTy),("tcr_el2_el3'rst",FTy 31)]) 16; 17val _ = Record 18 ("SCTLRType", 19 [("A",bTy),("E0E",bTy),("EE",bTy),("SA",bTy),("SA0",bTy), 20 ("sctlrtype'rst",FTy 27)]) 21; 22val _ = Construct 23 [("BranchType", 24 [("BranchType_CALL",[]),("BranchType_ERET",[]), 25 ("BranchType_DBGEXIT",[]),("BranchType_RET",[]), 26 ("BranchType_JMP",[]),("BranchType_EXCEPTION",[]), 27 ("BranchType_UNKNOWN",[])])] 28; 29val _ = Construct 30 [("AccType", 31 [("AccType_NORMAL",[]),("AccType_VEC",[]),("AccType_STREAM",[]), 32 ("AccType_VECSTREAM",[]),("AccType_ATOMIC",[]), 33 ("AccType_ORDERED",[]),("AccType_UNPRIV",[]),("AccType_IFETCH",[]), 34 ("AccType_PTW",[]),("AccType_DC",[]),("AccType_IC",[]), 35 ("AccType_AT",[])])] 36; 37val _ = Construct 38 [("ShiftType", 39 [("ShiftType_LSL",[]),("ShiftType_LSR",[]),("ShiftType_ASR",[]), 40 ("ShiftType_ROR",[])])] 41; 42val _ = Construct 43 [("ExtendType", 44 [("ExtendType_UXTB",[]),("ExtendType_UXTH",[]),("ExtendType_UXTW",[]), 45 ("ExtendType_UXTX",[]),("ExtendType_SXTB",[]),("ExtendType_SXTH",[]), 46 ("ExtendType_SXTW",[]),("ExtendType_SXTX",[])])] 47; 48val _ = Construct 49 [("LogicalOp", 50 [("LogicalOp_AND",[]),("LogicalOp_ORR",[]),("LogicalOp_EOR",[])])] 51; 52val _ = Construct 53 [("MemOp",[("MemOp_LOAD",[]),("MemOp_STORE",[]),("MemOp_PREFETCH",[])])] 54; 55val _ = Construct 56 [("MemBarrierOp", 57 [("MemBarrierOp_DSB",[]),("MemBarrierOp_DMB",[]), 58 ("MemBarrierOp_ISB",[])])] 59; 60val _ = Construct 61 [("MoveWideOp", 62 [("MoveWideOp_N",[]),("MoveWideOp_Z",[]),("MoveWideOp_K",[])])] 63; 64val _ = Construct 65 [("RevOp", 66 [("RevOp_RBIT",[]),("RevOp_REV16",[]),("RevOp_REV32",[]), 67 ("RevOp_REV64",[])])] 68; 69val _ = Construct 70 [("SystemHintOp", 71 [("SystemHintOp_NOP",[]),("SystemHintOp_YIELD",[]), 72 ("SystemHintOp_WFE",[]),("SystemHintOp_WFI",[]), 73 ("SystemHintOp_SEV",[]),("SystemHintOp_SEVL",[])])] 74; 75val _ = Construct 76 [("PSTATEField", 77 [("PSTATEField_DAIFSet",[]),("PSTATEField_DAIFClr",[]), 78 ("PSTATEField_SP",[])])] 79; 80val _ = Construct 81 [("System", 82 [("ExceptionReturn",[]),("HypervisorCall",[F16]), 83 ("MoveImmediateProcState",[PTy(CTy"PSTATEField",F4)]), 84 ("MoveSystemRegister", 85 [PTy(bTy,PTy(FTy 3,PTy(FTy 3,PTy(FTy 3,PTy(F4,PTy(F4,FTy 5))))))]), 86 ("SecureMonitorCall",[F16]),("SupervisorCall",[F16]), 87 ("SystemInstruction", 88 [PTy(FTy 3,PTy(FTy 3,PTy(F4,PTy(F4,PTy(bTy,FTy 5)))))])])] 89; 90val _ = Construct 91 [("Debug", 92 [("Breakpoint",[F16]),("DebugRestore",[]),("DebugSwitch",[FTy 2]), 93 ("Halt",[F16])])] 94; 95val _ = Construct 96 [("LoadStore", 97 [("LoadLiteral@32",[PTy(F32,PTy(CTy"MemOp",PTy(bTy,PTy(F64,FTy 5))))]), 98 ("LoadLiteral@64",[PTy(F64,PTy(CTy"MemOp",PTy(bTy,PTy(F64,FTy 5))))]), 99 ("LoadStoreAcquire@16", 100 [PTy(F16, 101 PTy(CTy"MemOp", 102 PTy(CTy"AccType", 103 PTy(bTy,PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))))))]), 104 ("LoadStoreAcquire@32", 105 [PTy(F32, 106 PTy(CTy"MemOp", 107 PTy(CTy"AccType", 108 PTy(bTy,PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))))))]), 109 ("LoadStoreAcquire@64", 110 [PTy(F64, 111 PTy(CTy"MemOp", 112 PTy(CTy"AccType", 113 PTy(bTy,PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))))))]), 114 ("LoadStoreAcquire@8", 115 [PTy(F8, 116 PTy(CTy"MemOp", 117 PTy(CTy"AccType", 118 PTy(bTy,PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))))))]), 119 ("LoadStoreAcquirePair@128", 120 [PTy(FTy 128, 121 PTy(CTy"MemOp", 122 PTy(CTy"AccType", 123 PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))))))]), 124 ("LoadStoreAcquirePair@64", 125 [PTy(F64, 126 PTy(CTy"MemOp", 127 PTy(CTy"AccType", 128 PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))))))]), 129 ("LoadStoreImmediate@16", 130 [PTy(F16, 131 PTy(bTy, 132 PTy(CTy"MemOp", 133 PTy(CTy"AccType", 134 PTy(bTy, 135 PTy(bTy, 136 PTy(bTy, 137 PTy(bTy, 138 PTy(bTy, 139 PTy(bTy, 140 PTy(F64,PTy(FTy 5,FTy 5))))))))))))]), 141 ("LoadStoreImmediate@32", 142 [PTy(F32, 143 PTy(bTy, 144 PTy(CTy"MemOp", 145 PTy(CTy"AccType", 146 PTy(bTy, 147 PTy(bTy, 148 PTy(bTy, 149 PTy(bTy, 150 PTy(bTy, 151 PTy(bTy, 152 PTy(F64,PTy(FTy 5,FTy 5))))))))))))]), 153 ("LoadStoreImmediate@64", 154 [PTy(F64, 155 PTy(bTy, 156 PTy(CTy"MemOp", 157 PTy(CTy"AccType", 158 PTy(bTy, 159 PTy(bTy, 160 PTy(bTy, 161 PTy(bTy, 162 PTy(bTy, 163 PTy(bTy, 164 PTy(F64,PTy(FTy 5,FTy 5))))))))))))]), 165 ("LoadStoreImmediate@8", 166 [PTy(F8, 167 PTy(bTy, 168 PTy(CTy"MemOp", 169 PTy(CTy"AccType", 170 PTy(bTy, 171 PTy(bTy, 172 PTy(bTy, 173 PTy(bTy, 174 PTy(bTy, 175 PTy(bTy, 176 PTy(F64,PTy(FTy 5,FTy 5))))))))))))]), 177 ("LoadStorePair@32", 178 [PTy(F32, 179 PTy(CTy"MemOp", 180 PTy(CTy"AccType", 181 PTy(bTy, 182 PTy(bTy, 183 PTy(bTy, 184 PTy(bTy, 185 PTy(bTy, 186 PTy(F64,PTy(FTy 5,PTy(FTy 5,FTy 5)))))))))))]), 187 ("LoadStorePair@64", 188 [PTy(F64, 189 PTy(CTy"MemOp", 190 PTy(CTy"AccType", 191 PTy(bTy, 192 PTy(bTy, 193 PTy(bTy, 194 PTy(bTy, 195 PTy(bTy, 196 PTy(F64,PTy(FTy 5,PTy(FTy 5,FTy 5)))))))))))]), 197 ("LoadStoreRegister@16", 198 [PTy(F16, 199 PTy(bTy, 200 PTy(CTy"MemOp", 201 PTy(bTy, 202 PTy(FTy 5, 203 PTy(CTy"ExtendType",PTy(nTy,PTy(FTy 5,FTy 5))))))))]), 204 ("LoadStoreRegister@32", 205 [PTy(F32, 206 PTy(bTy, 207 PTy(CTy"MemOp", 208 PTy(bTy, 209 PTy(FTy 5, 210 PTy(CTy"ExtendType",PTy(nTy,PTy(FTy 5,FTy 5))))))))]), 211 ("LoadStoreRegister@64", 212 [PTy(F64, 213 PTy(bTy, 214 PTy(CTy"MemOp", 215 PTy(bTy, 216 PTy(FTy 5, 217 PTy(CTy"ExtendType",PTy(nTy,PTy(FTy 5,FTy 5))))))))]), 218 ("LoadStoreRegister@8", 219 [PTy(F8, 220 PTy(bTy, 221 PTy(CTy"MemOp", 222 PTy(bTy, 223 PTy(FTy 5, 224 PTy(CTy"ExtendType",PTy(nTy,PTy(FTy 5,FTy 5))))))))])])] 225; 226val _ = Construct 227 [("Branch", 228 [("BranchConditional",[PTy(F64,F4)]), 229 ("BranchImmediate",[PTy(F64,CTy"BranchType")]), 230 ("BranchRegister",[PTy(FTy 5,CTy"BranchType")]), 231 ("CompareAndBranch@32",[PTy(F32,PTy(bTy,PTy(F64,FTy 5)))]), 232 ("CompareAndBranch@64",[PTy(F64,PTy(bTy,PTy(F64,FTy 5)))]), 233 ("TestBitAndBranch@32",[PTy(F32,PTy(FTy 6,PTy(bTy,PTy(F64,FTy 5))))]), 234 ("TestBitAndBranch@64",[PTy(F64,PTy(FTy 6,PTy(bTy,PTy(F64,FTy 5))))])])] 235; 236val _ = Construct 237 [("CRCExt", 238 [("CRC@16",[PTy(F16,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))]), 239 ("CRC@32",[PTy(F32,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))]), 240 ("CRC@64",[PTy(F64,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))]), 241 ("CRC@8",[PTy(F8,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))])])] 242; 243val _ = Construct 244 [("Data", 245 [("AddSubCarry@32", 246 [PTy(F32,PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))))]), 247 ("AddSubCarry@64", 248 [PTy(F64,PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))))]), 249 ("AddSubExtendRegister@32", 250 [PTy(F32, 251 PTy(bTy, 252 PTy(bTy, 253 PTy(FTy 5, 254 PTy(CTy"ExtendType",PTy(FTy 3,PTy(FTy 5,FTy 5)))))))]), 255 ("AddSubExtendRegister@64", 256 [PTy(F64, 257 PTy(bTy, 258 PTy(bTy, 259 PTy(FTy 5, 260 PTy(CTy"ExtendType",PTy(FTy 3,PTy(FTy 5,FTy 5)))))))]), 261 ("AddSubImmediate@32", 262 [PTy(F32,PTy(bTy,PTy(bTy,PTy(F32,PTy(FTy 5,FTy 5)))))]), 263 ("AddSubImmediate@64", 264 [PTy(F64,PTy(bTy,PTy(bTy,PTy(F64,PTy(FTy 5,FTy 5)))))]), 265 ("AddSubShiftedRegister@32", 266 [PTy(F32, 267 PTy(bTy, 268 PTy(bTy, 269 PTy(CTy"ShiftType", 270 PTy(FTy 5,PTy(FTy 6,PTy(FTy 5,FTy 5)))))))]), 271 ("AddSubShiftedRegister@64", 272 [PTy(F64, 273 PTy(bTy, 274 PTy(bTy, 275 PTy(CTy"ShiftType", 276 PTy(FTy 5,PTy(FTy 6,PTy(FTy 5,FTy 5)))))))]), 277 ("BitfieldMove@32", 278 [PTy(F32, 279 PTy(bTy, 280 PTy(bTy, 281 PTy(F32,PTy(F32,PTy(nTy,PTy(nTy,PTy(FTy 5,FTy 5))))))))]), 282 ("BitfieldMove@64", 283 [PTy(F64, 284 PTy(bTy, 285 PTy(bTy, 286 PTy(F64,PTy(F64,PTy(nTy,PTy(nTy,PTy(FTy 5,FTy 5))))))))]), 287 ("ConditionalCompareImmediate@32", 288 [PTy(F32, 289 PTy(bTy, 290 PTy(F32,PTy(F4,PTy(PTy(bTy,PTy(bTy,PTy(bTy,bTy))),FTy 5)))))]), 291 ("ConditionalCompareImmediate@64", 292 [PTy(F64, 293 PTy(bTy, 294 PTy(F64,PTy(F4,PTy(PTy(bTy,PTy(bTy,PTy(bTy,bTy))),FTy 5)))))]), 295 ("ConditionalCompareRegister@32", 296 [PTy(F32, 297 PTy(bTy, 298 PTy(F4,PTy(PTy(bTy,PTy(bTy,PTy(bTy,bTy))),PTy(FTy 5,FTy 5)))))]), 299 ("ConditionalCompareRegister@64", 300 [PTy(F64, 301 PTy(bTy, 302 PTy(F4,PTy(PTy(bTy,PTy(bTy,PTy(bTy,bTy))),PTy(FTy 5,FTy 5)))))]), 303 ("ConditionalSelect@32", 304 [PTy(F32,PTy(bTy,PTy(bTy,PTy(F4,PTy(FTy 5,PTy(FTy 5,FTy 5))))))]), 305 ("ConditionalSelect@64", 306 [PTy(F64,PTy(bTy,PTy(bTy,PTy(F4,PTy(FTy 5,PTy(FTy 5,FTy 5))))))]), 307 ("CountLeading@32",[PTy(F32,PTy(bTy,PTy(FTy 5,FTy 5)))]), 308 ("CountLeading@64",[PTy(F64,PTy(bTy,PTy(FTy 5,FTy 5)))]), 309 ("Division@32",[PTy(F32,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))]), 310 ("Division@64",[PTy(F64,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))]), 311 ("ExtractRegister@32", 312 [PTy(F32,PTy(FTy 6,PTy(FTy 5,PTy(FTy 5,FTy 5))))]), 313 ("ExtractRegister@64", 314 [PTy(F64,PTy(FTy 6,PTy(FTy 5,PTy(FTy 5,FTy 5))))]), 315 ("LogicalImmediate@32", 316 [PTy(F32,PTy(CTy"LogicalOp",PTy(bTy,PTy(F32,PTy(FTy 5,FTy 5)))))]), 317 ("LogicalImmediate@64", 318 [PTy(F64,PTy(CTy"LogicalOp",PTy(bTy,PTy(F64,PTy(FTy 5,FTy 5)))))]), 319 ("LogicalShiftedRegister@32", 320 [PTy(F32, 321 PTy(CTy"LogicalOp", 322 PTy(bTy, 323 PTy(bTy, 324 PTy(CTy"ShiftType", 325 PTy(nTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))))))]), 326 ("LogicalShiftedRegister@64", 327 [PTy(F64, 328 PTy(CTy"LogicalOp", 329 PTy(bTy, 330 PTy(bTy, 331 PTy(CTy"ShiftType", 332 PTy(nTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))))))]), 333 ("MoveWide@32", 334 [PTy(F32,PTy(CTy"MoveWideOp",PTy(FTy 2,PTy(F16,FTy 5))))]), 335 ("MoveWide@64", 336 [PTy(F64,PTy(CTy"MoveWideOp",PTy(FTy 2,PTy(F16,FTy 5))))]), 337 ("MultiplyAddSub@32", 338 [PTy(F32,PTy(bTy,PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5)))))]), 339 ("MultiplyAddSub@64", 340 [PTy(F64,PTy(bTy,PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5)))))]), 341 ("MultiplyAddSubLong", 342 [PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5)))))]), 343 ("MultiplyHigh",[PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))]), 344 ("Reverse@32",[PTy(F32,PTy(CTy"RevOp",PTy(FTy 5,FTy 5)))]), 345 ("Reverse@64",[PTy(F64,PTy(CTy"RevOp",PTy(FTy 5,FTy 5)))]), 346 ("Shift@32", 347 [PTy(F32,PTy(CTy"ShiftType",PTy(FTy 5,PTy(FTy 5,FTy 5))))]), 348 ("Shift@64", 349 [PTy(F64,PTy(CTy"ShiftType",PTy(FTy 5,PTy(FTy 5,FTy 5))))])])] 350; 351val _ = Construct 352 [("instruction", 353 [("Address",[PTy(bTy,PTy(F64,FTy 5))]),("Branch",[CTy"Branch"]), 354 ("CRCExt",[CTy"CRCExt"]),("ClearExclusive",[F4]), 355 ("Data",[CTy"Data"]),("Debug",[CTy"Debug"]), 356 ("Hint",[CTy"SystemHintOp"]),("LoadStore",[CTy"LoadStore"]), 357 ("MemoryBarrier",[PTy(CTy"MemBarrierOp",F4)]),("Reserved",[]), 358 ("System",[CTy"System"]),("Unallocated",[])])] 359; 360val _ = Construct [("MachineCode",[("ARM8",[F32]),("BadCode",[sTy])])] 361; 362val _ = Construct 363 [("exception", 364 [("ALIGNMENT_FAULT",[]),("ASSERT",[sTy]),("NoException",[]), 365 ("UNDEFINED_FAULT",[sTy])])] 366; 367val _ = Record 368 ("arm8_state", 369 [("MEM",ATy(F64,F8)),("PC",F64),("PSTATE",CTy"ProcState"), 370 ("REG",ATy(FTy 5,F64)),("SCTLR_EL1",CTy"SCTLRType"), 371 ("SCTLR_EL2",CTy"SCTLRType"),("SCTLR_EL3",CTy"SCTLRType"), 372 ("SP_EL0",F64),("SP_EL1",F64),("SP_EL2",F64),("SP_EL3",F64), 373 ("TCR_EL1",CTy"TCR_EL1"),("TCR_EL2",CTy"TCR_EL2_EL3"), 374 ("TCR_EL3",CTy"TCR_EL2_EL3"),("branch_hint",OTy(CTy"BranchType")), 375 ("exception",CTy"exception")]) 376; 377val qTy = CTy "arm8_state"; 378fun qVar v = Term.mk_var (v, ParseDatatype.pretypeToType qTy); 379val raise'exception_def = Def 380 ("raise'exception",Var("e",CTy"exception"), 381 Close 382 (qVar"state", 383 TP[LX(VTy"a"), 384 ITE(EQ(Dest("exception",CTy"exception",qVar"state"), 385 Const("NoException",CTy"exception")), 386 Rupd("exception",TP[qVar"state",Var("e",CTy"exception")]), 387 qVar"state")])) 388; 389val rec'TCR_EL1_def = Def 390 ("rec'TCR_EL1",Var("x",F64), 391 Rec(CTy"TCR_EL1", 392 [Bop(Bit,Var("x",F64),LN 37),Bop(Bit,Var("x",F64),LN 38), 393 CC[EX(Var("x",F64),LN 36,LN 0,FTy 37), 394 EX(Var("x",F64),LN 63,LN 39,FTy 25)]])) 395; 396val reg'TCR_EL1_def = Def 397 ("reg'TCR_EL1",Var("x",CTy"TCR_EL1"), 398 CS(Var("x",CTy"TCR_EL1"), 399 [(Rec(CTy"TCR_EL1",[bVar"TBI0",bVar"TBI1",Var("tcr_el1'rst",FTy 62)]), 400 CC[EX(Var("tcr_el1'rst",FTy 62),LN 24,LN 0,FTy 25), 401 Mop(Cast F1,bVar"TBI1"),Mop(Cast F1,bVar"TBI0"), 402 EX(Var("tcr_el1'rst",FTy 62),LN 61,LN 25,FTy 37)])])) 403; 404val write'rec'TCR_EL1_def = Def 405 ("write'rec'TCR_EL1",TP[AVar F64,Var("x",CTy"TCR_EL1")], 406 Call("reg'TCR_EL1",F64,Var("x",CTy"TCR_EL1"))) 407; 408val write'reg'TCR_EL1_def = Def 409 ("write'reg'TCR_EL1",TP[AVar(CTy"TCR_EL1"),Var("x",F64)], 410 Call("rec'TCR_EL1",CTy"TCR_EL1",Var("x",F64))) 411; 412val rec'TCR_EL2_EL3_def = Def 413 ("rec'TCR_EL2_EL3",Var("x",F32), 414 Rec(CTy"TCR_EL2_EL3", 415 [Bop(Bit,Var("x",F32),LN 20), 416 CC[EX(Var("x",F32),LN 19,LN 0,FTy 20), 417 EX(Var("x",F32),LN 31,LN 21,FTy 11)]])) 418; 419val reg'TCR_EL2_EL3_def = Def 420 ("reg'TCR_EL2_EL3",Var("x",CTy"TCR_EL2_EL3"), 421 CS(Var("x",CTy"TCR_EL2_EL3"), 422 [(Rec(CTy"TCR_EL2_EL3",[bVar"TBI",Var("tcr_el2_el3'rst",FTy 31)]), 423 CC[EX(Var("tcr_el2_el3'rst",FTy 31),LN 10,LN 0,FTy 11), 424 Mop(Cast F1,bVar"TBI"), 425 EX(Var("tcr_el2_el3'rst",FTy 31),LN 30,LN 11,FTy 20)])])) 426; 427val write'rec'TCR_EL2_EL3_def = Def 428 ("write'rec'TCR_EL2_EL3",TP[AVar F32,Var("x",CTy"TCR_EL2_EL3")], 429 Call("reg'TCR_EL2_EL3",F32,Var("x",CTy"TCR_EL2_EL3"))) 430; 431val write'reg'TCR_EL2_EL3_def = Def 432 ("write'reg'TCR_EL2_EL3",TP[AVar(CTy"TCR_EL2_EL3"),Var("x",F32)], 433 Call("rec'TCR_EL2_EL3",CTy"TCR_EL2_EL3",Var("x",F32))) 434; 435val rec'SCTLRType_def = Def 436 ("rec'SCTLRType",Var("x",F32), 437 Rec(CTy"SCTLRType", 438 [Bop(Bit,Var("x",F32),LN 1),Bop(Bit,Var("x",F32),LN 24), 439 Bop(Bit,Var("x",F32),LN 25),Bop(Bit,Var("x",F32),LN 3), 440 Bop(Bit,Var("x",F32),LN 4), 441 CC[EX(Var("x",F32),LN 0,LN 0,F1),EX(Var("x",F32),LN 2,LN 2,F1), 442 EX(Var("x",F32),LN 23,LN 5,FTy 19), 443 EX(Var("x",F32),LN 31,LN 26,FTy 6)]])) 444; 445val reg'SCTLRType_def = Def 446 ("reg'SCTLRType",Var("x",CTy"SCTLRType"), 447 CS(Var("x",CTy"SCTLRType"), 448 [(Rec(CTy"SCTLRType", 449 [bVar"A",bVar"E0E",bVar"EE",bVar"SA",bVar"SA0", 450 Var("sctlrtype'rst",FTy 27)]), 451 CC[EX(Var("sctlrtype'rst",FTy 27),LN 5,LN 0,FTy 6), 452 Mop(Cast F1,bVar"EE"),Mop(Cast F1,bVar"E0E"), 453 EX(Var("sctlrtype'rst",FTy 27),LN 24,LN 6,FTy 19), 454 Mop(Cast F1,bVar"SA0"),Mop(Cast F1,bVar"SA"), 455 EX(Var("sctlrtype'rst",FTy 27),LN 25,LN 25,F1), 456 Mop(Cast F1,bVar"A"), 457 EX(Var("sctlrtype'rst",FTy 27),LN 26,LN 26,F1)])])) 458; 459val write'rec'SCTLRType_def = Def 460 ("write'rec'SCTLRType",TP[AVar F32,Var("x",CTy"SCTLRType")], 461 Call("reg'SCTLRType",F32,Var("x",CTy"SCTLRType"))) 462; 463val write'reg'SCTLRType_def = Def 464 ("write'reg'SCTLRType",TP[AVar(CTy"SCTLRType"),Var("x",F32)], 465 Call("rec'SCTLRType",CTy"SCTLRType",Var("x",F32))) 466; 467val X_def = Def 468 ("X",Var("n",FTy 5), 469 Close 470 (qVar"state", 471 ITE(EQ(Var("n",FTy 5),LW(31,5)),LY(0,"N"), 472 Mop(Cast(BTy"N"), 473 Apply(Dest("REG",ATy(FTy 5,F64),qVar"state"),Var("n",FTy 5)))))) 474; 475val write'X_def = Def 476 ("write'X",TP[Var("value",BTy"N"),Var("n",FTy 5)], 477 Close 478 (qVar"state", 479 ITE(Mop(Not,EQ(Var("n",FTy 5),LW(31,5))), 480 Rupd 481 ("REG", 482 TP[qVar"state", 483 Fupd 484 (Dest("REG",ATy(FTy 5,F64),qVar"state"),Var("n",FTy 5), 485 Mop(Cast F64,Var("value",BTy"N")))]),qVar"state"))) 486; 487val SP_def = Def 488 ("SP",qVar"state", 489 Mop(Cast(BTy"N"), 490 ITE(Mop(Not, 491 Dest("SPS",bTy,Dest("PSTATE",CTy"ProcState",qVar"state"))), 492 Dest("SP_EL0",F64,qVar"state"), 493 CS(Dest("EL",FTy 2,Dest("PSTATE",CTy"ProcState",qVar"state")), 494 [(LW(0,2),Dest("SP_EL0",F64,qVar"state")), 495 (LW(1,2),Dest("SP_EL1",F64,qVar"state")), 496 (LW(2,2),Dest("SP_EL2",F64,qVar"state")), 497 (LW(3,2),Dest("SP_EL3",F64,qVar"state"))])))) 498; 499val write'SP_def = Def 500 ("write'SP",Var("value",BTy"N"), 501 Close 502 (qVar"state", 503 Let(Var("v",F64),Mop(Cast F64,Var("value",BTy"N")), 504 ITE(Mop(Not, 505 Dest 506 ("SPS",bTy,Dest("PSTATE",CTy"ProcState",qVar"state"))), 507 Rupd("SP_EL0",TP[qVar"state",Var("v",F64)]), 508 CS(Dest 509 ("EL",FTy 2,Dest("PSTATE",CTy"ProcState",qVar"state")), 510 [(LW(0,2),Rupd("SP_EL0",TP[qVar"state",Var("v",F64)])), 511 (LW(1,2),Rupd("SP_EL1",TP[qVar"state",Var("v",F64)])), 512 (LW(2,2),Rupd("SP_EL2",TP[qVar"state",Var("v",F64)])), 513 (LW(3,2),Rupd("SP_EL3",TP[qVar"state",Var("v",F64)]))]))))) 514; 515val TranslationRegime_def = Def 516 ("TranslationRegime",qVar"state", 517 ITE(Mop(Not, 518 EQ(Dest("EL",FTy 2,Dest("PSTATE",CTy"ProcState",qVar"state")), 519 LW(0,2))), 520 Dest("EL",FTy 2,Dest("PSTATE",CTy"ProcState",qVar"state")),LW(1,2))) 521; 522val SCTLR_def = Def 523 ("SCTLR",qVar"state", 524 CS(Apply(Const("TranslationRegime",ATy(qTy,FTy 2)),qVar"state"), 525 [(LW(1,2),Dest("SCTLR_EL1",CTy"SCTLRType",qVar"state")), 526 (LW(2,2),Dest("SCTLR_EL2",CTy"SCTLRType",qVar"state")), 527 (LW(3,2),Dest("SCTLR_EL3",CTy"SCTLRType",qVar"state")), 528 (LW(0,2),LX(CTy"SCTLRType"))])) 529; 530val Hint_Branch_def = Def 531 ("Hint_Branch",Var("branch_type",CTy"BranchType"), 532 Close 533 (qVar"state", 534 Rupd 535 ("branch_hint", 536 TP[qVar"state",Mop(Some,Var("branch_type",CTy"BranchType"))]))) 537; 538val BranchTo_def = Def 539 ("BranchTo",TP[Var("target0",F64),Var("branch_type",CTy"BranchType")], 540 Close 541 (qVar"state", 542 Let(qVar"s1", 543 Apply 544 (Call 545 ("Hint_Branch",ATy(qTy,qTy), 546 Var("branch_type",CTy"BranchType")),qVar"state"), 547 Let(Var("s",PTy(F64,qTy)), 548 CS(Dest("EL",FTy 2,Dest("PSTATE",CTy"ProcState",qVar"s1")), 549 [(LW(0,2), 550 Let(Var("s0",F64), 551 ITE(Bop(And,Bop(Bit,Var("target0",F64),LN 55), 552 Dest 553 ("TBI1",bTy, 554 Dest("TCR_EL1",CTy"TCR_EL1",qVar"s1"))), 555 BFI(LN 63,LN 56,LW(255,8),Var("target0",F64)), 556 Var("target0",F64)), 557 TP[ITE(Bop(And, 558 Mop(Not,Bop(Bit,Var("s0",F64),LN 55)), 559 Dest 560 ("TBI0",bTy, 561 Dest("TCR_EL1",CTy"TCR_EL1",qVar"s1"))), 562 BFI(LN 63,LN 56,LW(0,8),Var("s0",F64)), 563 Var("s0",F64)),qVar"s1"])), 564 (LW(1,2), 565 Let(Var("s0",F64), 566 ITE(Bop(And,Bop(Bit,Var("target0",F64),LN 55), 567 Dest 568 ("TBI1",bTy, 569 Dest("TCR_EL1",CTy"TCR_EL1",qVar"s1"))), 570 BFI(LN 63,LN 56,LW(255,8),Var("target0",F64)), 571 Var("target0",F64)), 572 TP[ITE(Bop(And, 573 Mop(Not,Bop(Bit,Var("s0",F64),LN 55)), 574 Dest 575 ("TBI0",bTy, 576 Dest("TCR_EL1",CTy"TCR_EL1",qVar"s1"))), 577 BFI(LN 63,LN 56,LW(0,8),Var("s0",F64)), 578 Var("s0",F64)),qVar"s1"])), 579 (LW(2,2), 580 TP[ITE(Dest 581 ("TBI",bTy, 582 Dest("TCR_EL2",CTy"TCR_EL2_EL3",qVar"s1")), 583 BFI(LN 63,LN 56,LW(0,8),Var("target0",F64)), 584 Var("target0",F64)),qVar"s1"]), 585 (LW(3,2), 586 TP[ITE(Dest 587 ("TBI",bTy, 588 Dest("TCR_EL3",CTy"TCR_EL2_EL3",qVar"s1")), 589 BFI(LN 63,LN 56,LW(0,8),Var("target0",F64)), 590 Var("target0",F64)),qVar"s1"])]), 591 Rupd 592 ("PC", 593 TP[Mop(Snd,Var("s",PTy(F64,qTy))), 594 Mop(Fst,Var("s",PTy(F64,qTy)))]))))) 595; 596val Align_def = Def 597 ("Align",TP[Var("w",BTy"N"),nVar"n"], 598 Mop(Cast(BTy"N"), 599 Bop(Mul,nVar"n",Bop(Div,Mop(Cast nTy,Var("w",BTy"N")),nVar"n")))) 600; 601val Aligned_def = Def 602 ("Aligned",TP[Var("w",BTy"N"),nVar"n"], 603 EQ(Var("w",BTy"N"),Call("Align",BTy"N",TP[Var("w",BTy"N"),nVar"n"]))) 604; 605val CheckSPAlignment_def = Def 606 ("CheckSPAlignment",qVar"state", 607 ITE(Bop(And, 608 ITE(EQ(Dest 609 ("EL",FTy 2,Dest("PSTATE",CTy"ProcState",qVar"state")), 610 LW(0,2)), 611 Dest 612 ("SA0",bTy,Dest("SCTLR_EL1",CTy"SCTLRType",qVar"state")), 613 Dest 614 ("SA",bTy, 615 Apply 616 (Const("SCTLR",ATy(qTy,CTy"SCTLRType")),qVar"state"))), 617 Mop(Not, 618 Call 619 ("Aligned",bTy, 620 TP[Apply(Const("SP",ATy(qTy,F64)),qVar"state"),LN 16]))), 621 Mop(Snd, 622 Apply 623 (Call 624 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 625 Const("ALIGNMENT_FAULT",CTy"exception")),qVar"state")), 626 qVar"state")) 627; 628val CheckAlignment_def = Def 629 ("CheckAlignment", 630 TP[Var("address",F64),nVar"size",Var("acctype",CTy"AccType"), 631 bVar"iswrite"], 632 Close 633 (qVar"state", 634 ITE(Bop(And, 635 Mop(Not, 636 Call("Aligned",bTy,TP[Var("address",F64),nVar"size"])), 637 Bop(Or, 638 EQ(Var("acctype",CTy"AccType"), 639 LC("AccType_ATOMIC",CTy"AccType")), 640 Bop(Or, 641 EQ(Var("acctype",CTy"AccType"), 642 LC("AccType_ORDERED",CTy"AccType")), 643 Dest 644 ("A",bTy, 645 Apply 646 (Const("SCTLR",ATy(qTy,CTy"SCTLRType")), 647 qVar"state"))))), 648 Mop(Snd, 649 Apply 650 (Call 651 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 652 Const("ALIGNMENT_FAULT",CTy"exception")),qVar"state")), 653 qVar"state"))) 654; 655val BigEndian_def = Def 656 ("BigEndian",qVar"state", 657 ITE(EQ(Dest("EL",FTy 2,Dest("PSTATE",CTy"ProcState",qVar"state")), 658 LW(0,2)), 659 Dest("E0E",bTy,Dest("SCTLR_EL1",CTy"SCTLRType",qVar"state")), 660 Dest 661 ("EE",bTy, 662 Apply(Const("SCTLR",ATy(qTy,CTy"SCTLRType")),qVar"state")))) 663; 664val ByteList_def = Def 665 ("ByteList",vVar"l", 666 CS(vVar"l", 667 [(LNL bTy,LNL vTy), 668 (LLC([bVar"b0",bVar"b1",bVar"b2",bVar"b3",bVar"b4",bVar"b5", 669 bVar"b6",bVar"v7"],vVar"rest"), 670 LLC([LL[bVar"b0",bVar"b1",bVar"b2",bVar"b3",bVar"b4",bVar"b5", 671 bVar"b6",bVar"v7"]],Call("ByteList",LTy vTy,vVar"rest"))), 672 (vVar"rest",LL[vVar"rest"])])) 673; 674val BigEndianReverse_def = Def 675 ("BigEndianReverse",vVar"l", 676 Mop(Flat,Mop(Rev,Call("ByteList",LTy vTy,vVar"l")))) 677; 678val Mem_def = Def 679 ("Mem",TP[Var("address",F64),nVar"size",Var("acctype",CTy"AccType")], 680 Close 681 (qVar"state", 682 Let(TP[Var("r",BTy"N"),Var("s1",PTy(vTy,qTy))], 683 Let(Var("s",PTy(vTy,qTy)), 684 Mop(Snd, 685 Apply 686 (For(TP[LN 0,Bop(Sub,nVar"size",LN 1), 687 Close 688 (nVar"i", 689 Close 690 (Var("state",PTy(vTy,qTy)), 691 TP[LU, 692 CC[Mop(Cast vTy, 693 Apply 694 (Dest 695 ("MEM",ATy(F64,F8), 696 Mop(Snd, 697 Var("state", 698 PTy(vTy,qTy)))), 699 Bop(Add,Var("address",F64), 700 Mop(Cast F64,nVar"i")))), 701 Mop(Fst,Var("state",PTy(vTy,qTy)))], 702 Mop(Snd,Var("state",PTy(vTy,qTy)))]))]), 703 TP[LNL bTy, 704 Apply 705 (Call 706 ("CheckAlignment",ATy(qTy,qTy), 707 TP[Var("address",F64),nVar"size", 708 Var("acctype",CTy"AccType"),LF]), 709 qVar"state")])), 710 TP[Mop(Cast(BTy"N"), 711 ITE(Apply 712 (Const("BigEndian",ATy(qTy,bTy)), 713 Mop(Snd,Var("s",PTy(vTy,qTy)))), 714 Call 715 ("BigEndianReverse",vTy, 716 Mop(Fst,Var("s",PTy(vTy,qTy)))), 717 Mop(Fst,Var("s",PTy(vTy,qTy))))), 718 Var("s",PTy(vTy,qTy))]), 719 TP[Var("r",BTy"N"),Mop(Snd,Var("s1",PTy(vTy,qTy)))]))) 720; 721val write'Mem_def = Def 722 ("write'Mem", 723 TP[Var("value",BTy"N"),Var("address",F64),nVar"size", 724 Var("acctype",CTy"AccType")], 725 Close 726 (qVar"state", 727 Let(TP[bVar"v",qVar"s"], 728 Let(qVar"s", 729 Apply 730 (Call 731 ("CheckAlignment",ATy(qTy,qTy), 732 TP[Var("address",F64),nVar"size", 733 Var("acctype",CTy"AccType"),LT]),qVar"state"), 734 TP[Apply(Const("BigEndian",ATy(qTy,bTy)),qVar"s"),qVar"s"]), 735 Mop(Snd, 736 Apply 737 (For(TP[LN 0,Bop(Sub,nVar"size",LN 1), 738 Close 739 (nVar"i", 740 Close 741 (qVar"state", 742 TP[LU, 743 Rupd 744 ("MEM", 745 TP[qVar"state", 746 Fupd 747 (Dest 748 ("MEM",ATy(F64,F8),qVar"state"), 749 Bop(Add,Var("address",F64), 750 Mop(Cast F64,nVar"i")), 751 Mop(Cast F8, 752 EX(ITE(bVar"v", 753 Call 754 ("BigEndianReverse", 755 vTy, 756 Mop(Cast vTy, 757 Var("value", 758 BTy"N"))), 759 Mop(Cast vTy, 760 Var("value", 761 BTy"N"))), 762 Bop(Add, 763 Bop(Mul,LN 8,nVar"i"), 764 LN 7), 765 Bop(Mul,LN 8,nVar"i"),vTy)))])]))]), 766 qVar"s"))))) 767; 768val ConditionTest_def = Def 769 ("ConditionTest",TP[Var("cond",F4),bVar"N",bVar"Z",bVar"C",bVar"V"], 770 Let(bVar"result", 771 CS(EX(Var("cond",F4),LN 3,LN 1,FTy 3), 772 [(LW(0,3),bVar"Z"),(LW(1,3),bVar"C"),(LW(2,3),bVar"N"), 773 (LW(3,3),bVar"V"),(LW(4,3),Bop(And,bVar"C",Mop(Not,bVar"Z"))), 774 (LW(5,3),EQ(bVar"N",bVar"V")), 775 (LW(6,3),Bop(And,EQ(bVar"N",bVar"V"),Mop(Not,bVar"Z"))), 776 (LW(7,3),LT)]), 777 ITE(Bop(And,Bop(Bit,Var("cond",F4),LN 0), 778 Mop(Not,EQ(Var("cond",F4),LW(15,4)))), 779 Mop(Not,bVar"result"),bVar"result"))) 780; 781val ConditionHolds_def = Def 782 ("ConditionHolds",Var("cond",F4), 783 Close 784 (qVar"state", 785 Call 786 ("ConditionTest",bTy, 787 TP[Var("cond",F4), 788 Dest("N",bTy,Dest("PSTATE",CTy"ProcState",qVar"state")), 789 Dest("Z",bTy,Dest("PSTATE",CTy"ProcState",qVar"state")), 790 Dest("C",bTy,Dest("PSTATE",CTy"ProcState",qVar"state")), 791 Dest("V",bTy,Dest("PSTATE",CTy"ProcState",qVar"state"))]))) 792; 793val Ones_def = Def ("Ones",nVar"n",Mop(PadLeft,TP[LT,nVar"n",LNL bTy])) 794; 795val Zeros_def = Def ("Zeros",nVar"n",Mop(PadLeft,TP[LF,nVar"n",LNL bTy])) 796; 797val Replicate_def = Def 798 ("Replicate",vVar"l", 799 Mop(Cast(BTy"N"), 800 Bop(Rep,vVar"l",Bop(Div,Mop(Size,LY(0,"N")),Mop(Length,vVar"l"))))) 801; 802val HighestSetBit_def = Def 803 ("HighestSetBit",Var("w",BTy"N"), 804 ITE(EQ(Var("w",BTy"N"),LY(0,"N")),Mop(Neg,LI 1), 805 Mop(Cast iTy,Mop(Log,Var("w",BTy"N"))))) 806; 807val CountLeadingZeroBits_def = Def 808 ("CountLeadingZeroBits",Var("w",BTy"N"), 809 Mop(Cast nTy, 810 Bop(Sub,Bop(Sub,Mop(Cast iTy,Mop(Size,LY(0,"N"))),LI 1), 811 Call("HighestSetBit",iTy,Var("w",BTy"N"))))) 812; 813val CountLeadingSignBits_def = Def 814 ("CountLeadingSignBits",Var("w",BTy"N"), 815 Bop(Sub, 816 Call 817 ("CountLeadingZeroBits",nTy, 818 Bop(BXor,Bop(Lsr,Var("w",BTy"N"),LN 1), 819 Bop(BAnd,Var("w",BTy"N"),Mop(BNot,Bop(Ror,LY(1,"N"),LN 1))))), 820 LN 1)) 821; 822val Poly32Mod2_loop_def = Def 823 ("Poly32Mod2_loop",TP[nVar"i",vVar"data",vVar"poly"], 824 ITE(Bop(Lt,nVar"i",LN 32),vVar"data", 825 Call 826 ("Poly32Mod2_loop",vTy, 827 TP[Bop(Sub,nVar"i",LN 1), 828 ITE(Bop(Bit,vVar"data",nVar"i"), 829 CC[EX(vVar"data",Bop(Sub,Mop(Length,vVar"data"),LN 1), 830 nVar"i",vTy), 831 Bop(BXor, 832 EX(vVar"data",Bop(Sub,nVar"i",LN 1),LN 0,vTy), 833 Mop(PadRight,TP[LF,nVar"i",vVar"poly"]))], 834 vVar"data"),vVar"poly"]))) 835; 836val Poly32Mod2_def = Def 837 ("Poly32Mod2",TP[vVar"data",Var("poly",F32)], 838 Mop(Cast F32, 839 EX(Call 840 ("Poly32Mod2_loop",vTy, 841 TP[Bop(Sub,Mop(Length,vVar"data"),LN 1),vVar"data", 842 Mop(Cast vTy,Var("poly",F32))]),LN 31,LN 0,vTy))) 843; 844val AddWithCarry_def = Def 845 ("AddWithCarry",TP[Var("x",BTy"N"),Var("y",BTy"N"),bVar"carry_in"], 846 Let(nVar"unsigned_sum", 847 Bop(Add, 848 Bop(Add,Mop(Cast nTy,Var("x",BTy"N")), 849 Mop(Cast nTy,Var("y",BTy"N"))),Mop(Cast nTy,bVar"carry_in")), 850 Let(Var("result",BTy"N"),Mop(Cast(BTy"N"),nVar"unsigned_sum"), 851 TP[Var("result",BTy"N"),Mop(Msb,Var("result",BTy"N")), 852 EQ(Var("result",BTy"N"),LY(0,"N")), 853 Mop(Not, 854 EQ(Mop(Cast nTy,Var("result",BTy"N")),nVar"unsigned_sum")), 855 Mop(Not, 856 EQ(Mop(Cast iTy,Var("result",BTy"N")), 857 Bop(Add, 858 Bop(Add,Mop(Cast iTy,Var("x",BTy"N")), 859 Mop(Cast iTy,Var("y",BTy"N"))), 860 Mop(Cast iTy,bVar"carry_in"))))]))) 861; 862val SetTheFlags_def = Def 863 ("SetTheFlags",TP[bVar"setflags",bVar"n",bVar"z",bVar"c",bVar"v"], 864 Close 865 (qVar"state", 866 ITE(bVar"setflags", 867 Let(qVar"s", 868 Rupd 869 ("PSTATE", 870 TP[qVar"state", 871 Rupd 872 ("N", 873 TP[Dest("PSTATE",CTy"ProcState",qVar"state"), 874 bVar"n"])]), 875 Let(qVar"s", 876 Rupd 877 ("PSTATE", 878 TP[qVar"s", 879 Rupd 880 ("Z", 881 TP[Dest("PSTATE",CTy"ProcState",qVar"s"), 882 bVar"z"])]), 883 Let(qVar"s", 884 Rupd 885 ("PSTATE", 886 TP[qVar"s", 887 Rupd 888 ("C", 889 TP[Dest("PSTATE",CTy"ProcState",qVar"s"), 890 bVar"c"])]), 891 Rupd 892 ("PSTATE", 893 TP[qVar"s", 894 Rupd 895 ("V", 896 TP[Dest("PSTATE",CTy"ProcState",qVar"s"), 897 bVar"v"])])))),qVar"state"))) 898; 899val DecodeShift_def = Def 900 ("DecodeShift",Var("sh",FTy 2),Mop(Cast(CTy"ShiftType"),Var("sh",FTy 2))) 901; 902val ShiftValue_def = Def 903 ("ShiftValue", 904 TP[Var("value",BTy"N"),Var("ty",CTy"ShiftType"),nVar"amount"], 905 CS(Var("ty",CTy"ShiftType"), 906 [(LC("ShiftType_LSL",CTy"ShiftType"), 907 Bop(Lsl,Var("value",BTy"N"),nVar"amount")), 908 (LC("ShiftType_LSR",CTy"ShiftType"), 909 Bop(Lsr,Var("value",BTy"N"),nVar"amount")), 910 (LC("ShiftType_ASR",CTy"ShiftType"), 911 Bop(Asr,Var("value",BTy"N"),nVar"amount")), 912 (LC("ShiftType_ROR",CTy"ShiftType"), 913 Bop(Ror,Var("value",BTy"N"),nVar"amount"))])) 914; 915val ShiftReg_def = Def 916 ("ShiftReg",TP[Var("reg",FTy 5),Var("ty",CTy"ShiftType"),nVar"amount"], 917 Close 918 (qVar"state", 919 Call 920 ("ShiftValue",BTy"N", 921 TP[Apply(Call("X",ATy(qTy,BTy"N"),Var("reg",FTy 5)),qVar"state"), 922 Var("ty",CTy"ShiftType"),nVar"amount"]))) 923; 924val ExtendWord_def = Def 925 ("ExtendWord",TP[Var("w",BTy"M"),bVar"signed"], 926 ITE(bVar"signed",Mop(SE(BTy"N"),Var("w",BTy"M")), 927 Mop(Cast(BTy"N"),Var("w",BTy"M")))) 928; 929val Extend_def = Def 930 ("Extend",TP[vVar"l",bVar"unsigned"], 931 ITE(Bop(Or,bVar"unsigned",Mop(Not,Mop(Head,vVar"l"))), 932 Mop(Cast(BTy"N"),vVar"l"), 933 Mop(Cast(BTy"N"),Mop(PadLeft,TP[LT,Mop(Size,LY(0,"N")),vVar"l"])))) 934; 935val DecodeRegExtend_def = Def 936 ("DecodeRegExtend",Var("ext",FTy 3), 937 Mop(Cast(CTy"ExtendType"),Var("ext",FTy 3))) 938; 939val ExtendValue_def = Def 940 ("ExtendValue", 941 TP[Var("value",BTy"N"),Var("ty",CTy"ExtendType"),nVar"sh"], 942 Let(TP[bVar"unsigned",nVar"len"], 943 CS(Var("ty",CTy"ExtendType"), 944 [(LC("ExtendType_SXTB",CTy"ExtendType"),TP[LF,LN 8]), 945 (LC("ExtendType_SXTH",CTy"ExtendType"),TP[LF,LN 16]), 946 (LC("ExtendType_SXTW",CTy"ExtendType"),TP[LF,LN 32]), 947 (LC("ExtendType_SXTX",CTy"ExtendType"),TP[LF,LN 64]), 948 (LC("ExtendType_UXTB",CTy"ExtendType"),TP[LT,LN 8]), 949 (LC("ExtendType_UXTH",CTy"ExtendType"),TP[LT,LN 16]), 950 (LC("ExtendType_UXTW",CTy"ExtendType"),TP[LT,LN 32]), 951 (LC("ExtendType_UXTX",CTy"ExtendType"),TP[LT,LN 64])]), 952 Call 953 ("Extend",BTy"N", 954 TP[Bop(Lsl, 955 EX(Mop(Cast vTy,Var("value",BTy"N")), 956 Bop(Sub, 957 Mop(Min, 958 TP[nVar"len", 959 Bop(Sub,Mop(Size,LY(0,"N")),nVar"sh")]), 960 LN 1),LN 0,vTy),nVar"sh"),bVar"unsigned"]))) 961; 962val ExtendReg_def = Def 963 ("ExtendReg",TP[Var("reg",FTy 5),Var("ty",CTy"ExtendType"),nVar"sh"], 964 Close 965 (qVar"state", 966 Call 967 ("ExtendValue",BTy"N", 968 TP[Apply(Call("X",ATy(qTy,BTy"N"),Var("reg",FTy 5)),qVar"state"), 969 Var("ty",CTy"ExtendType"),nVar"sh"]))) 970; 971val DecodeBitMasks_def = Def 972 ("DecodeBitMasks", 973 TP[Var("immN",F1),Var("imms",FTy 6),Var("immr",FTy 6),bVar"immediate"], 974 Let(iVar"len", 975 Call 976 ("HighestSetBit",iTy, 977 CC[Var("immN",F1),Mop(BNot,Var("imms",FTy 6))]), 978 ITE(Bop(Lt,iVar"len",LI 1),LO(PTy(BTy"M",BTy"M")), 979 Let(nVar"len",Mop(Cast nTy,iVar"len"), 980 Let(Var("levels",FTy 6), 981 Mop(Cast(FTy 6),Call("Ones",vTy,nVar"len")), 982 Let(Var("S",FTy 6), 983 Bop(BAnd,Var("imms",FTy 6),Var("levels",FTy 6)), 984 Let(Var("R",FTy 6), 985 Bop(BAnd,Var("immr",FTy 6),Var("levels",FTy 6)), 986 ITE(Bop(And,bVar"immediate", 987 EQ(Var("S",FTy 6),Var("levels",FTy 6))), 988 LO(PTy(BTy"M",BTy"M")), 989 Let(nVar"esize",Bop(Exp,LN 2,nVar"len"), 990 Mop(Some, 991 TP[Call 992 ("Replicate",BTy"M", 993 Bop(Ror, 994 Mop(PadLeft, 995 TP[LF,nVar"esize", 996 Call 997 ("Ones",vTy, 998 Bop(Add, 999 Mop(Cast 1000 nTy, 1001 Var("S", 1002 FTy 6)), 1003 LN 1))]), 1004 Mop(Cast nTy, 1005 Var("R",FTy 6)))), 1006 Call 1007 ("Replicate",BTy"M", 1008 Mop(PadLeft, 1009 TP[LF,nVar"esize", 1010 Call 1011 ("Ones",vTy, 1012 Bop(Add, 1013 Mop(Cast nTy, 1014 EX(Mop(Cast 1015 vTy, 1016 Bop(Sub, 1017 Var("S", 1018 FTy 6), 1019 Var("R", 1020 FTy 6))), 1021 Bop(Sub, 1022 nVar"len", 1023 LN 1), 1024 LN 0,vTy)), 1025 LN 1))]))])))))))))) 1026; 1027val dfn'Address_def = Def 1028 ("dfn'Address",TP[bVar"page",Var("imm",F64),Var("d",FTy 5)], 1029 Close 1030 (qVar"state", 1031 Let(Var("v",F64),Dest("PC",F64,qVar"state"), 1032 Apply 1033 (Call 1034 ("write'X",ATy(qTy,qTy), 1035 TP[Bop(Add, 1036 ITE(bVar"page", 1037 BFI(LN 11,LN 0,LW(0,12),Var("v",F64)), 1038 Var("v",F64)),Var("imm",F64)),Var("d",FTy 5)]), 1039 qVar"state")))) 1040; 1041val dfn'AddSubCarry_def = Def 1042 ("dfn'AddSubCarry", 1043 TP[Var("sf",BTy"N"),bVar"sub_op",bVar"setflags",Var("m",FTy 5), 1044 Var("n",FTy 5),Var("d",FTy 5)], 1045 Close 1046 (qVar"state", 1047 Let(Var("v0",BTy"N"), 1048 Apply(Call("X",ATy(qTy,BTy"N"),Var("m",FTy 5)),qVar"state"), 1049 Let(TP[Var("result",BTy"N"), 1050 Var("nzcv",PTy(bTy,PTy(bTy,PTy(bTy,bTy))))], 1051 Call 1052 ("AddWithCarry", 1053 PTy(BTy"N",PTy(bTy,PTy(bTy,PTy(bTy,bTy)))), 1054 TP[Apply 1055 (Call("X",ATy(qTy,BTy"N"),Var("n",FTy 5)), 1056 qVar"state"), 1057 ITE(bVar"sub_op",Mop(BNot,Var("v0",BTy"N")), 1058 Var("v0",BTy"N")), 1059 Dest 1060 ("C",bTy,Dest("PSTATE",CTy"ProcState",qVar"state"))]), 1061 Apply 1062 (Call 1063 ("write'X",ATy(qTy,qTy), 1064 TP[Var("result",BTy"N"),Var("d",FTy 5)]), 1065 Apply 1066 (Call 1067 ("SetTheFlags",ATy(qTy,qTy), 1068 TP[bVar"setflags", 1069 Var("nzcv",PTy(bTy,PTy(bTy,PTy(bTy,bTy))))]), 1070 qVar"state")))))) 1071; 1072val dfn'AddSubExtendRegister_def = Def 1073 ("dfn'AddSubExtendRegister", 1074 TP[Var("sf",BTy"N"),bVar"sub_op",bVar"setflags",Var("m",FTy 5), 1075 Var("extend_type",CTy"ExtendType"),Var("imm3",FTy 3),Var("n",FTy 5), 1076 Var("d",FTy 5)], 1077 Close 1078 (qVar"state", 1079 Let(Var("v0",BTy"N"), 1080 Apply 1081 (Call 1082 ("ExtendReg",ATy(qTy,BTy"N"), 1083 TP[Var("m",FTy 5),Var("extend_type",CTy"ExtendType"), 1084 Mop(Cast nTy,Var("imm3",FTy 3))]),qVar"state"), 1085 Let(TP[Var("operand2",BTy"N"),bVar"carry_in"], 1086 ITE(bVar"sub_op",TP[Mop(BNot,Var("v0",BTy"N")),LT], 1087 TP[Var("v0",BTy"N"),LF]), 1088 Let(TP[Var("result",BTy"N"), 1089 Var("nzcv",PTy(bTy,PTy(bTy,PTy(bTy,bTy))))], 1090 Call 1091 ("AddWithCarry", 1092 PTy(BTy"N",PTy(bTy,PTy(bTy,PTy(bTy,bTy)))), 1093 TP[ITE(EQ(Var("n",FTy 5),LW(31,5)), 1094 Apply(Const("SP",ATy(qTy,BTy"N")),qVar"state"), 1095 Apply 1096 (Call("X",ATy(qTy,BTy"N"),Var("n",FTy 5)), 1097 qVar"state")),Var("operand2",BTy"N"), 1098 bVar"carry_in"]), 1099 Let(qVar"s", 1100 Apply 1101 (Call 1102 ("SetTheFlags",ATy(qTy,qTy), 1103 TP[bVar"setflags", 1104 Var("nzcv",PTy(bTy,PTy(bTy,PTy(bTy,bTy))))]), 1105 qVar"state"), 1106 ITE(Bop(And,EQ(Var("d",FTy 5),LW(31,5)), 1107 Mop(Not,bVar"setflags")), 1108 Apply 1109 (Call 1110 ("write'SP",ATy(qTy,qTy), 1111 Var("result",BTy"N")),qVar"s"), 1112 Apply 1113 (Call 1114 ("write'X",ATy(qTy,qTy), 1115 TP[Var("result",BTy"N"),Var("d",FTy 5)]), 1116 qVar"s")))))))) 1117; 1118val dfn'AddSubImmediate_def = Def 1119 ("dfn'AddSubImmediate", 1120 TP[Var("sf",BTy"N"),bVar"sub_op",bVar"setflags",Var("imm",BTy"N"), 1121 Var("n",FTy 5),Var("d",FTy 5)], 1122 Close 1123 (qVar"state", 1124 Let(TP[Var("operand2",BTy"N"),bVar"carry_in"], 1125 ITE(bVar"sub_op",TP[Mop(BNot,Var("imm",BTy"N")),LT], 1126 TP[Var("imm",BTy"N"),LF]), 1127 Let(TP[Var("result",BTy"N"), 1128 Var("nzcv",PTy(bTy,PTy(bTy,PTy(bTy,bTy))))], 1129 Call 1130 ("AddWithCarry", 1131 PTy(BTy"N",PTy(bTy,PTy(bTy,PTy(bTy,bTy)))), 1132 TP[ITE(EQ(Var("n",FTy 5),LW(31,5)), 1133 Apply(Const("SP",ATy(qTy,BTy"N")),qVar"state"), 1134 Apply 1135 (Call("X",ATy(qTy,BTy"N"),Var("n",FTy 5)), 1136 qVar"state")),Var("operand2",BTy"N"), 1137 bVar"carry_in"]), 1138 Let(qVar"s", 1139 Apply 1140 (Call 1141 ("SetTheFlags",ATy(qTy,qTy), 1142 TP[bVar"setflags", 1143 Var("nzcv",PTy(bTy,PTy(bTy,PTy(bTy,bTy))))]), 1144 qVar"state"), 1145 ITE(Bop(And,EQ(Var("d",FTy 5),LW(31,5)), 1146 Mop(Not,bVar"setflags")), 1147 Apply 1148 (Call 1149 ("write'SP",ATy(qTy,qTy),Var("result",BTy"N")), 1150 qVar"s"), 1151 Apply 1152 (Call 1153 ("write'X",ATy(qTy,qTy), 1154 TP[Var("result",BTy"N"),Var("d",FTy 5)]), 1155 qVar"s"))))))) 1156; 1157val dfn'AddSubShiftedRegister_def = Def 1158 ("dfn'AddSubShiftedRegister", 1159 TP[Var("sf",BTy"N"),bVar"sub_op",bVar"setflags", 1160 Var("shift_type",CTy"ShiftType"),Var("m",FTy 5),Var("imm",FTy 6), 1161 Var("n",FTy 5),Var("d",FTy 5)], 1162 Close 1163 (qVar"state", 1164 Let(Var("v0",BTy"N"), 1165 Apply 1166 (Call 1167 ("ShiftReg",ATy(qTy,BTy"N"), 1168 TP[Var("m",FTy 5),Var("shift_type",CTy"ShiftType"), 1169 Mop(Cast nTy,Var("imm",FTy 6))]),qVar"state"), 1170 Let(TP[Var("operand2",BTy"N"),bVar"carry_in"], 1171 ITE(bVar"sub_op",TP[Mop(BNot,Var("v0",BTy"N")),LT], 1172 TP[Var("v0",BTy"N"),LF]), 1173 Let(TP[Var("result",BTy"N"), 1174 Var("nzcv",PTy(bTy,PTy(bTy,PTy(bTy,bTy))))], 1175 Call 1176 ("AddWithCarry", 1177 PTy(BTy"N",PTy(bTy,PTy(bTy,PTy(bTy,bTy)))), 1178 TP[Apply 1179 (Call("X",ATy(qTy,BTy"N"),Var("n",FTy 5)), 1180 qVar"state"),Var("operand2",BTy"N"), 1181 bVar"carry_in"]), 1182 Apply 1183 (Call 1184 ("write'X",ATy(qTy,qTy), 1185 TP[Var("result",BTy"N"),Var("d",FTy 5)]), 1186 Apply 1187 (Call 1188 ("SetTheFlags",ATy(qTy,qTy), 1189 TP[bVar"setflags", 1190 Var("nzcv",PTy(bTy,PTy(bTy,PTy(bTy,bTy))))]), 1191 qVar"state"))))))) 1192; 1193val dfn'LogicalImmediate_def = Def 1194 ("dfn'LogicalImmediate", 1195 TP[Var("sf",BTy"N"),Var("opc",CTy"LogicalOp"),bVar"setflags", 1196 Var("imm",BTy"N"),Var("n",FTy 5),Var("d",FTy 5)], 1197 Close 1198 (qVar"state", 1199 Let(Var("v",BTy"N"), 1200 Apply(Call("X",ATy(qTy,BTy"N"),Var("n",FTy 5)),qVar"state"), 1201 Let(Var("result",BTy"N"), 1202 CS(Var("opc",CTy"LogicalOp"), 1203 [(LC("LogicalOp_AND",CTy"LogicalOp"), 1204 Bop(BAnd,Var("v",BTy"N"),Var("imm",BTy"N"))), 1205 (LC("LogicalOp_ORR",CTy"LogicalOp"), 1206 Bop(BOr,Var("v",BTy"N"),Var("imm",BTy"N"))), 1207 (LC("LogicalOp_EOR",CTy"LogicalOp"), 1208 Bop(BXor,Var("v",BTy"N"),Var("imm",BTy"N")))]), 1209 Let(qVar"s", 1210 Apply 1211 (Call 1212 ("SetTheFlags",ATy(qTy,qTy), 1213 TP[bVar"setflags",Mop(Msb,Var("result",BTy"N")), 1214 EQ(Var("result",BTy"N"),LY(0,"N")),LF,LF]), 1215 qVar"state"), 1216 ITE(Bop(And,EQ(Var("d",FTy 5),LW(31,5)), 1217 Mop(Not,bVar"setflags")), 1218 Apply 1219 (Call 1220 ("write'SP",ATy(qTy,qTy),Var("result",BTy"N")), 1221 qVar"s"), 1222 Apply 1223 (Call 1224 ("write'X",ATy(qTy,qTy), 1225 TP[Var("result",BTy"N"),Var("d",FTy 5)]), 1226 qVar"s"))))))) 1227; 1228val dfn'LogicalShiftedRegister_def = Def 1229 ("dfn'LogicalShiftedRegister", 1230 TP[Var("sf",BTy"N"),Var("opc",CTy"LogicalOp"),bVar"invert", 1231 bVar"setflags",Var("shift_type",CTy"ShiftType"),nVar"shift_amount", 1232 Var("m",FTy 5),Var("n",FTy 5),Var("d",FTy 5)], 1233 Close 1234 (qVar"state", 1235 Let(Var("v",BTy"N"), 1236 Apply(Call("X",ATy(qTy,BTy"N"),Var("n",FTy 5)),qVar"state"), 1237 Let(Var("v0",BTy"N"), 1238 Apply 1239 (Call 1240 ("ShiftReg",ATy(qTy,BTy"N"), 1241 TP[Var("m",FTy 5),Var("shift_type",CTy"ShiftType"), 1242 nVar"shift_amount"]),qVar"state"), 1243 Let(Var("operand2",BTy"N"), 1244 ITE(bVar"invert",Mop(BNot,Var("v0",BTy"N")), 1245 Var("v0",BTy"N")), 1246 Let(Var("result",BTy"N"), 1247 CS(Var("opc",CTy"LogicalOp"), 1248 [(LC("LogicalOp_AND",CTy"LogicalOp"), 1249 Bop(BAnd,Var("v",BTy"N"),Var("operand2",BTy"N"))), 1250 (LC("LogicalOp_ORR",CTy"LogicalOp"), 1251 Bop(BOr,Var("v",BTy"N"),Var("operand2",BTy"N"))), 1252 (LC("LogicalOp_EOR",CTy"LogicalOp"), 1253 Bop(BXor,Var("v",BTy"N"),Var("operand2",BTy"N")))]), 1254 Apply 1255 (Call 1256 ("write'X",ATy(qTy,qTy), 1257 TP[Var("result",BTy"N"),Var("d",FTy 5)]), 1258 Apply 1259 (Call 1260 ("SetTheFlags",ATy(qTy,qTy), 1261 TP[bVar"setflags", 1262 Mop(Msb,Var("result",BTy"N")), 1263 EQ(Var("result",BTy"N"),LY(0,"N")),LF,LF]), 1264 qVar"state")))))))) 1265; 1266val dfn'Shift_def = Def 1267 ("dfn'Shift", 1268 TP[Var("sf",BTy"N"),Var("shift_type",CTy"ShiftType"),Var("m",FTy 5), 1269 Var("n",FTy 5),Var("d",FTy 5)], 1270 Close 1271 (qVar"state", 1272 Apply 1273 (Call 1274 ("write'X",ATy(qTy,qTy), 1275 TP[Apply 1276 (Call 1277 ("ShiftReg",ATy(qTy,BTy"N"), 1278 TP[Var("n",FTy 5),Var("shift_type",CTy"ShiftType"), 1279 Bop(Mod, 1280 Mop(Cast nTy, 1281 Apply 1282 (Call 1283 ("X",ATy(qTy,BTy"N"),Var("m",FTy 5)), 1284 qVar"state")),Mop(Size,LY(0,"N")))]), 1285 qVar"state"),Var("d",FTy 5)]),qVar"state"))) 1286; 1287val dfn'MoveWide_def = Def 1288 ("dfn'MoveWide", 1289 TP[Var("sf",BTy"N"),Var("opcode",CTy"MoveWideOp"),Var("hw",FTy 2), 1290 Var("imm",F16),Var("d",FTy 5)], 1291 Close 1292 (qVar"state", 1293 Let(nVar"pos",Mop(Cast nTy,CC[Var("hw",FTy 2),LW(0,4)]), 1294 Let(Var("s0",BTy"N"), 1295 BFI(Bop(Add,nVar"pos",LN 15),nVar"pos",Var("imm",F16), 1296 ITE(EQ(Var("opcode",CTy"MoveWideOp"), 1297 LC("MoveWideOp_K",CTy"MoveWideOp")), 1298 Apply 1299 (Call("X",ATy(qTy,BTy"N"),Var("d",FTy 5)), 1300 qVar"state"),LY(0,"N"))), 1301 Apply 1302 (Call 1303 ("write'X",ATy(qTy,qTy), 1304 TP[ITE(EQ(Var("opcode",CTy"MoveWideOp"), 1305 LC("MoveWideOp_N",CTy"MoveWideOp")), 1306 Mop(BNot,Var("s0",BTy"N")),Var("s0",BTy"N")), 1307 Var("d",FTy 5)]),qVar"state"))))) 1308; 1309val dfn'BitfieldMove_def = Def 1310 ("dfn'BitfieldMove", 1311 TP[Var("sf",BTy"N"),bVar"inzero",bVar"extend",Var("wmask",BTy"N"), 1312 Var("tmask",BTy"N"),nVar"R",nVar"S",Var("n",FTy 5),Var("d",FTy 5)], 1313 Close 1314 (qVar"state", 1315 Let(Var("v",BTy"N"), 1316 ITE(bVar"inzero",LY(0,"N"), 1317 Apply(Call("X",ATy(qTy,BTy"N"),Var("d",FTy 5)),qVar"state")), 1318 Let(Var("v0",BTy"N"), 1319 Apply(Call("X",ATy(qTy,BTy"N"),Var("n",FTy 5)),qVar"state"), 1320 Apply 1321 (Call 1322 ("write'X",ATy(qTy,qTy), 1323 TP[Bop(BOr, 1324 Bop(BAnd, 1325 ITE(bVar"extend", 1326 Call 1327 ("Replicate",BTy"N", 1328 Mop(Cast vTy, 1329 Bop(Bit,Var("v0",BTy"N"),nVar"S"))), 1330 Var("v",BTy"N")), 1331 Mop(BNot,Var("tmask",BTy"N"))), 1332 Bop(BAnd, 1333 Bop(BOr, 1334 Bop(BAnd,Var("v",BTy"N"), 1335 Mop(BNot,Var("wmask",BTy"N"))), 1336 Bop(BAnd, 1337 Bop(Ror,Var("v0",BTy"N"),nVar"R"), 1338 Var("wmask",BTy"N"))), 1339 Var("tmask",BTy"N"))),Var("d",FTy 5)]), 1340 qVar"state"))))) 1341; 1342val dfn'ConditionalCompareImmediate_def = Def 1343 ("dfn'ConditionalCompareImmediate", 1344 TP[Var("sf",BTy"N"),bVar"sub_op",Var("imm",BTy"N"),Var("cond",F4), 1345 Var("nzcv",PTy(bTy,PTy(bTy,PTy(bTy,bTy)))),Var("n",FTy 5)], 1346 Close 1347 (qVar"state", 1348 ITE(Apply 1349 (Call("ConditionHolds",ATy(qTy,bTy),Var("cond",F4)), 1350 qVar"state"), 1351 Let(TP[Var("operand2",BTy"N"),bVar"carry_in"], 1352 ITE(bVar"sub_op",TP[Mop(BNot,Var("imm",BTy"N")),LT], 1353 TP[Var("imm",BTy"N"),LF]), 1354 Let(TP[AVar(BTy"N"), 1355 Var("flags",PTy(bTy,PTy(bTy,PTy(bTy,bTy))))], 1356 Call 1357 ("AddWithCarry", 1358 PTy(BTy"N",PTy(bTy,PTy(bTy,PTy(bTy,bTy)))), 1359 TP[Apply 1360 (Call("X",ATy(qTy,BTy"N"),Var("n",FTy 5)), 1361 qVar"state"),Var("operand2",BTy"N"), 1362 bVar"carry_in"]), 1363 Apply 1364 (Call 1365 ("SetTheFlags",ATy(qTy,qTy), 1366 TP[LT,Var("flags",PTy(bTy,PTy(bTy,PTy(bTy,bTy))))]), 1367 qVar"state"))), 1368 Apply 1369 (Call 1370 ("SetTheFlags",ATy(qTy,qTy), 1371 TP[LT,Var("nzcv",PTy(bTy,PTy(bTy,PTy(bTy,bTy))))]), 1372 qVar"state")))) 1373; 1374val dfn'ConditionalCompareRegister_def = Def 1375 ("dfn'ConditionalCompareRegister", 1376 TP[Var("sf",BTy"N"),bVar"sub_op",Var("cond",F4), 1377 Var("nzcv",PTy(bTy,PTy(bTy,PTy(bTy,bTy)))),Var("m",FTy 5), 1378 Var("n",FTy 5)], 1379 Close 1380 (qVar"state", 1381 Let(Var("v0",BTy"N"), 1382 Apply(Call("X",ATy(qTy,BTy"N"),Var("m",FTy 5)),qVar"state"), 1383 ITE(Apply 1384 (Call("ConditionHolds",ATy(qTy,bTy),Var("cond",F4)), 1385 qVar"state"), 1386 Let(TP[Var("operand2",BTy"N"),bVar"carry_in"], 1387 ITE(bVar"sub_op",TP[Mop(BNot,Var("v0",BTy"N")),LT], 1388 TP[Var("v0",BTy"N"),LF]), 1389 Let(TP[AVar(BTy"N"), 1390 Var("flags",PTy(bTy,PTy(bTy,PTy(bTy,bTy))))], 1391 Call 1392 ("AddWithCarry", 1393 PTy(BTy"N",PTy(bTy,PTy(bTy,PTy(bTy,bTy)))), 1394 TP[Apply 1395 (Call("X",ATy(qTy,BTy"N"),Var("n",FTy 5)), 1396 qVar"state"),Var("operand2",BTy"N"), 1397 bVar"carry_in"]), 1398 Apply 1399 (Call 1400 ("SetTheFlags",ATy(qTy,qTy), 1401 TP[LT, 1402 Var("flags",PTy(bTy,PTy(bTy,PTy(bTy,bTy))))]), 1403 qVar"state"))), 1404 Apply 1405 (Call 1406 ("SetTheFlags",ATy(qTy,qTy), 1407 TP[LT,Var("nzcv",PTy(bTy,PTy(bTy,PTy(bTy,bTy))))]), 1408 qVar"state"))))) 1409; 1410val dfn'ConditionalSelect_def = Def 1411 ("dfn'ConditionalSelect", 1412 TP[Var("sf",BTy"N"),bVar"else_inv",bVar"else_inc",Var("cond",F4), 1413 Var("m",FTy 5),Var("n",FTy 5),Var("d",FTy 5)], 1414 Close 1415 (qVar"state", 1416 Let(Var("s",PTy(BTy"N",qTy)), 1417 ITE(Apply 1418 (Call("ConditionHolds",ATy(qTy,bTy),Var("cond",F4)), 1419 qVar"state"), 1420 TP[Apply 1421 (Call("X",ATy(qTy,BTy"N"),Var("n",FTy 5)),qVar"state"), 1422 qVar"state"], 1423 Let(Var("s3",BTy"N"), 1424 Apply 1425 (Call("X",ATy(qTy,BTy"N"),Var("m",FTy 5)),qVar"state"), 1426 Let(Var("s0",BTy"N"), 1427 ITE(bVar"else_inv",Mop(BNot,Var("s3",BTy"N")), 1428 Var("s3",BTy"N")), 1429 TP[ITE(bVar"else_inc", 1430 Bop(Add,Var("s0",BTy"N"),LY(1,"N")), 1431 Var("s0",BTy"N")),qVar"state"]))), 1432 Apply 1433 (Call 1434 ("write'X",ATy(qTy,qTy), 1435 TP[Mop(Fst,Var("s",PTy(BTy"N",qTy))),Var("d",FTy 5)]), 1436 Mop(Snd,Var("s",PTy(BTy"N",qTy))))))) 1437; 1438val dfn'CountLeading_def = Def 1439 ("dfn'CountLeading", 1440 TP[Var("sf",BTy"N"),bVar"count_clz",Var("n",FTy 5),Var("d",FTy 5)], 1441 Close 1442 (qVar"state", 1443 Let(Var("v",BTy"N"), 1444 Apply(Call("X",ATy(qTy,BTy"N"),Var("n",FTy 5)),qVar"state"), 1445 Apply 1446 (Call 1447 ("write'X",ATy(qTy,qTy), 1448 TP[Mop(Cast(BTy"N"), 1449 ITE(bVar"count_clz", 1450 Call 1451 ("CountLeadingZeroBits",nTy,Var("v",BTy"N")), 1452 Call 1453 ("CountLeadingSignBits",nTy,Var("v",BTy"N")))), 1454 Var("d",FTy 5)]),qVar"state")))) 1455; 1456val dfn'ExtractRegister_def = Def 1457 ("dfn'ExtractRegister", 1458 TP[Var("sf",BTy"N"),Var("imms",FTy 6),Var("m",FTy 5),Var("n",FTy 5), 1459 Var("d",FTy 5)], 1460 Close 1461 (qVar"state", 1462 Apply 1463 (Call 1464 ("write'X",ATy(qTy,qTy), 1465 TP[Mop(Cast(BTy"N"), 1466 Bop(Lsr, 1467 CC[Mop(Cast vTy, 1468 Apply 1469 (Call("X",ATy(qTy,BTy"N"),Var("n",FTy 5)), 1470 qVar"state")), 1471 Mop(Cast vTy, 1472 Apply 1473 (Call("X",ATy(qTy,BTy"N"),Var("m",FTy 5)), 1474 qVar"state"))], 1475 Mop(Cast nTy,Var("imms",FTy 6)))),Var("d",FTy 5)]), 1476 qVar"state"))) 1477; 1478val dfn'Division_def = Def 1479 ("dfn'Division", 1480 TP[Var("sf",BTy"N"),bVar"unsigned",Var("m",FTy 5),Var("n",FTy 5), 1481 Var("d",FTy 5)], 1482 Close 1483 (qVar"state", 1484 Let(Var("v",BTy"N"), 1485 Apply(Call("X",ATy(qTy,BTy"N"),Var("n",FTy 5)),qVar"state"), 1486 Let(Var("v0",BTy"N"), 1487 Apply(Call("X",ATy(qTy,BTy"N"),Var("m",FTy 5)),qVar"state"), 1488 Apply 1489 (Call 1490 ("write'X",ATy(qTy,qTy), 1491 TP[ITB([(EQ(Var("v0",BTy"N"),LY(0,"N")),LY(0,"N")), 1492 (bVar"unsigned", 1493 Bop(Div,Var("v",BTy"N"),Var("v0",BTy"N")))], 1494 Bop(Quot,Var("v",BTy"N"),Var("v0",BTy"N"))), 1495 Var("d",FTy 5)]),qVar"state"))))) 1496; 1497val dfn'MultiplyAddSub_def = Def 1498 ("dfn'MultiplyAddSub", 1499 TP[Var("sf",BTy"N"),bVar"sub_op",Var("m",FTy 5),Var("a",FTy 5), 1500 Var("n",FTy 5),Var("d",FTy 5)], 1501 Close 1502 (qVar"state", 1503 Let(Var("v",BTy"N"), 1504 Apply(Call("X",ATy(qTy,BTy"N"),Var("n",FTy 5)),qVar"state"), 1505 Let(Var("v0",BTy"N"), 1506 Apply(Call("X",ATy(qTy,BTy"N"),Var("m",FTy 5)),qVar"state"), 1507 Let(Var("v1",BTy"N"), 1508 Apply 1509 (Call("X",ATy(qTy,BTy"N"),Var("a",FTy 5)),qVar"state"), 1510 Apply 1511 (Call 1512 ("write'X",ATy(qTy,qTy), 1513 TP[ITE(bVar"sub_op", 1514 Bop(Sub,Var("v1",BTy"N"), 1515 Bop(Mul,Var("v",BTy"N"), 1516 Var("v0",BTy"N"))), 1517 Bop(Add,Var("v1",BTy"N"), 1518 Bop(Mul,Var("v",BTy"N"), 1519 Var("v0",BTy"N")))),Var("d",FTy 5)]), 1520 qVar"state")))))) 1521; 1522val dfn'MultiplyAddSubLong_def = Def 1523 ("dfn'MultiplyAddSubLong", 1524 TP[bVar"sub_op",bVar"signed",Var("m",FTy 5),Var("a",FTy 5), 1525 Var("n",FTy 5),Var("d",FTy 5)], 1526 Close 1527 (qVar"state", 1528 Let(Var("v1",F64), 1529 Apply(Call("X",ATy(qTy,F64),Var("a",FTy 5)),qVar"state"), 1530 Let(Var("product",F64), 1531 Bop(Mul, 1532 Call 1533 ("ExtendWord",F64, 1534 TP[Apply 1535 (Call("X",ATy(qTy,F32),Var("n",FTy 5)), 1536 qVar"state"),bVar"signed"]), 1537 Call 1538 ("ExtendWord",F64, 1539 TP[Apply 1540 (Call("X",ATy(qTy,F32),Var("m",FTy 5)), 1541 qVar"state"),bVar"signed"])), 1542 Apply 1543 (Call 1544 ("write'X",ATy(qTy,qTy), 1545 TP[ITE(bVar"sub_op", 1546 Bop(Sub,Var("v1",F64),Var("product",F64)), 1547 Bop(Add,Var("v1",F64),Var("product",F64))), 1548 Var("d",FTy 5)]),qVar"state"))))) 1549; 1550val dfn'MultiplyHigh_def = Def 1551 ("dfn'MultiplyHigh", 1552 TP[bVar"signed",Var("m",FTy 5),Var("n",FTy 5),Var("d",FTy 5)], 1553 Close 1554 (qVar"state", 1555 Apply 1556 (Call 1557 ("write'X",ATy(qTy,qTy), 1558 TP[EX(Bop(Mul, 1559 Call 1560 ("ExtendWord",FTy 128, 1561 TP[Apply 1562 (Call("X",ATy(qTy,F64),Var("n",FTy 5)), 1563 qVar"state"),bVar"signed"]), 1564 Call 1565 ("ExtendWord",FTy 128, 1566 TP[Apply 1567 (Call("X",ATy(qTy,F64),Var("m",FTy 5)), 1568 qVar"state"),bVar"signed"])),LN 127,LN 64, 1569 F64),Var("d",FTy 5)]),qVar"state"))) 1570; 1571val dfn'Reverse_def = Def 1572 ("dfn'Reverse", 1573 TP[Var("sf",BTy"N"),Var("op",CTy"RevOp"),Var("n",FTy 5),Var("d",FTy 5)], 1574 Close 1575 (qVar"state", 1576 ITE(EQ(Mop(Size,LY(0,"N")),LN 32), 1577 Let(Var("v",F32), 1578 Apply(Call("X",ATy(qTy,F32),Var("n",FTy 5)),qVar"state"), 1579 Apply 1580 (Call 1581 ("write'X",ATy(qTy,qTy), 1582 TP[CS(Var("op",CTy"RevOp"), 1583 [(LC("RevOp_RBIT",CTy"RevOp"), 1584 Mop(Rev,Var("v",F32))), 1585 (LC("RevOp_REV16",CTy"RevOp"), 1586 CC[EX(Var("v",F32),LN 23,LN 16,F8), 1587 EX(Var("v",F32),LN 31,LN 24,F8), 1588 EX(Var("v",F32),LN 7,LN 0,F8), 1589 EX(Var("v",F32),LN 15,LN 8,F8)]), 1590 (LC("RevOp_REV32",CTy"RevOp"), 1591 CC[EX(Var("v",F32),LN 7,LN 0,F8), 1592 EX(Var("v",F32),LN 15,LN 8,F8), 1593 EX(Var("v",F32),LN 23,LN 16,F8), 1594 EX(Var("v",F32),LN 31,LN 24,F8)]), 1595 (LC("RevOp_REV64",CTy"RevOp"),LX F32)]), 1596 Var("d",FTy 5)]),qVar"state")), 1597 Let(Var("v",F64), 1598 Apply(Call("X",ATy(qTy,F64),Var("n",FTy 5)),qVar"state"), 1599 Apply 1600 (Call 1601 ("write'X",ATy(qTy,qTy), 1602 TP[CS(Var("op",CTy"RevOp"), 1603 [(LC("RevOp_RBIT",CTy"RevOp"), 1604 Mop(Rev,Var("v",F64))), 1605 (LC("RevOp_REV16",CTy"RevOp"), 1606 CC[EX(Var("v",F64),LN 55,LN 48,F8), 1607 EX(Var("v",F64),LN 63,LN 56,F8), 1608 EX(Var("v",F64),LN 39,LN 32,F8), 1609 EX(Var("v",F64),LN 47,LN 40,F8), 1610 EX(Var("v",F64),LN 23,LN 16,F8), 1611 EX(Var("v",F64),LN 31,LN 24,F8), 1612 EX(Var("v",F64),LN 7,LN 0,F8), 1613 EX(Var("v",F64),LN 15,LN 8,F8)]), 1614 (LC("RevOp_REV32",CTy"RevOp"), 1615 CC[EX(Var("v",F64),LN 39,LN 32,F8), 1616 EX(Var("v",F64),LN 47,LN 40,F8), 1617 EX(Var("v",F64),LN 55,LN 48,F8), 1618 EX(Var("v",F64),LN 63,LN 56,F8), 1619 EX(Var("v",F64),LN 7,LN 0,F8), 1620 EX(Var("v",F64),LN 15,LN 8,F8), 1621 EX(Var("v",F64),LN 23,LN 16,F8), 1622 EX(Var("v",F64),LN 31,LN 24,F8)]), 1623 (LC("RevOp_REV64",CTy"RevOp"), 1624 CC[EX(Var("v",F64),LN 7,LN 0,F8), 1625 EX(Var("v",F64),LN 15,LN 8,F8), 1626 EX(Var("v",F64),LN 23,LN 16,F8), 1627 EX(Var("v",F64),LN 31,LN 24,F8), 1628 EX(Var("v",F64),LN 39,LN 32,F8), 1629 EX(Var("v",F64),LN 47,LN 40,F8), 1630 EX(Var("v",F64),LN 55,LN 48,F8), 1631 EX(Var("v",F64),LN 63,LN 56,F8)])]), 1632 Var("d",FTy 5)]),qVar"state"))))) 1633; 1634val dfn'CRC_def = Def 1635 ("dfn'CRC", 1636 TP[Var("sz",BTy"N"),bVar"crc32c",Var("m",FTy 5),Var("n",FTy 5), 1637 Var("d",FTy 5)], 1638 Close 1639 (qVar"state", 1640 Apply 1641 (Call 1642 ("write'X",ATy(qTy,qTy), 1643 TP[Mop(Rev, 1644 Call 1645 ("Poly32Mod2",F32, 1646 TP[Bop(BXor, 1647 CC[Mop(Rev, 1648 Mop(Cast vTy, 1649 Apply 1650 (Call 1651 ("X",ATy(qTy,F32), 1652 Var("n",FTy 5)),qVar"state"))), 1653 Call("Zeros",vTy,Mop(Size,LY(0,"N")))], 1654 CC[Mop(Rev, 1655 Mop(Cast vTy, 1656 Apply 1657 (Call 1658 ("X",ATy(qTy,BTy"N"), 1659 Var("m",FTy 5)),qVar"state"))), 1660 Call("Zeros",vTy,LN 32)]), 1661 ITE(bVar"crc32c",LW(517762881,32),LW(79764919,32))])), 1662 Var("d",FTy 5)]),qVar"state"))) 1663; 1664val dfn'BranchConditional_def = Def 1665 ("dfn'BranchConditional",TP[Var("offset",F64),Var("cond",F4)], 1666 Close 1667 (qVar"state", 1668 ITE(Apply 1669 (Call("ConditionHolds",ATy(qTy,bTy),Var("cond",F4)), 1670 qVar"state"), 1671 Apply 1672 (Call 1673 ("BranchTo",ATy(qTy,qTy), 1674 TP[Bop(Add,Dest("PC",F64,qVar"state"),Var("offset",F64)), 1675 LC("BranchType_JMP",CTy"BranchType")]),qVar"state"), 1676 qVar"state"))) 1677; 1678val dfn'BranchImmediate_def = Def 1679 ("dfn'BranchImmediate", 1680 TP[Var("offset",F64),Var("branch_type",CTy"BranchType")], 1681 Close 1682 (qVar"state", 1683 Let(qVar"s", 1684 ITE(EQ(Var("branch_type",CTy"BranchType"), 1685 LC("BranchType_CALL",CTy"BranchType")), 1686 Apply 1687 (Call 1688 ("write'X",ATy(qTy,qTy), 1689 TP[Bop(Add,Dest("PC",F64,qVar"state"),LW(4,64)), 1690 LW(30,5)]),qVar"state"),qVar"state"), 1691 Apply 1692 (Call 1693 ("BranchTo",ATy(qTy,qTy), 1694 TP[Bop(Add,Dest("PC",F64,qVar"s"),Var("offset",F64)), 1695 Var("branch_type",CTy"BranchType")]),qVar"s")))) 1696; 1697val dfn'BranchRegister_def = Def 1698 ("dfn'BranchRegister", 1699 TP[Var("n",FTy 5),Var("branch_type",CTy"BranchType")], 1700 Close 1701 (qVar"state", 1702 Apply 1703 (Call 1704 ("BranchTo",ATy(qTy,qTy), 1705 TP[Apply(Call("X",ATy(qTy,F64),Var("n",FTy 5)),qVar"state"), 1706 Var("branch_type",CTy"BranchType")]), 1707 ITE(EQ(Var("branch_type",CTy"BranchType"), 1708 LC("BranchType_CALL",CTy"BranchType")), 1709 Apply 1710 (Call 1711 ("write'X",ATy(qTy,qTy), 1712 TP[Bop(Add,Dest("PC",F64,qVar"state"),LW(4,64)), 1713 LW(30,5)]),qVar"state"),qVar"state")))) 1714; 1715val dfn'CompareAndBranch_def = Def 1716 ("dfn'CompareAndBranch", 1717 TP[Var("sf",BTy"N"),bVar"iszero",Var("offset",F64),Var("t",FTy 5)], 1718 Close 1719 (qVar"state", 1720 ITE(EQ(Apply(Call("X",ATy(qTy,BTy"N"),Var("t",FTy 5)),qVar"state"), 1721 LY(0,"N")), 1722 Apply 1723 (Call 1724 ("BranchTo",ATy(qTy,qTy), 1725 TP[Bop(Add,Dest("PC",F64,qVar"state"),Var("offset",F64)), 1726 LC("BranchType_JMP",CTy"BranchType")]),qVar"state"), 1727 qVar"state"))) 1728; 1729val dfn'TestBitAndBranch_def = Def 1730 ("dfn'TestBitAndBranch", 1731 TP[Var("sf",BTy"N"),Var("bit_pos",FTy 6),bVar"bit_val", 1732 Var("offset",F64),Var("t",FTy 5)], 1733 Close 1734 (qVar"state", 1735 ITE(EQ(Bop(Bit, 1736 Apply 1737 (Call("X",ATy(qTy,BTy"N"),Var("t",FTy 5)),qVar"state"), 1738 Mop(Cast nTy,Var("bit_pos",FTy 6))),bVar"bit_val"), 1739 Apply 1740 (Call 1741 ("BranchTo",ATy(qTy,qTy), 1742 TP[Bop(Add,Dest("PC",F64,qVar"state"),Var("offset",F64)), 1743 LC("BranchType_JMP",CTy"BranchType")]),qVar"state"), 1744 qVar"state"))) 1745; 1746val LoadStoreSingle_def = Def 1747 ("LoadStoreSingle", 1748 TP[Var("size",BTy"N"),bVar"regsize_word",Var("memop",CTy"MemOp"), 1749 Var("acctype",CTy"AccType"),bVar"signed",bVar"wb_unknown", 1750 bVar"rt_unknown",bVar"wback",bVar"postindex",Var("offset",F64), 1751 Var("n",FTy 5),Var("t",FTy 5)], 1752 Close 1753 (qVar"state", 1754 Let(qVar"s", 1755 ITE(Bop(And,EQ(Var("n",FTy 5),LW(31,5)), 1756 Mop(Not, 1757 EQ(Var("memop",CTy"MemOp"), 1758 LC("MemOp_PREFETCH",CTy"MemOp")))), 1759 Apply(Const("CheckSPAlignment",ATy(qTy,qTy)),qVar"state"), 1760 qVar"state"), 1761 Let(Var("v",F64), 1762 ITE(EQ(Var("n",FTy 5),LW(31,5)), 1763 Apply(Const("SP",ATy(qTy,F64)),qVar"s"), 1764 Apply(Call("X",ATy(qTy,F64),Var("n",FTy 5)),qVar"s")), 1765 Let(Var("address",F64), 1766 ITE(bVar"postindex",Var("v",F64), 1767 Bop(Add,Var("v",F64),Var("offset",F64))), 1768 Let(qVar"s", 1769 CS(Var("memop",CTy"MemOp"), 1770 [(LC("MemOp_STORE",CTy"MemOp"), 1771 Apply 1772 (Call 1773 ("write'Mem",ATy(qTy,qTy), 1774 TP[ITE(bVar"rt_unknown",LX(BTy"N"), 1775 Apply 1776 (Call 1777 ("X",ATy(qTy,BTy"N"), 1778 Var("t",FTy 5)),qVar"s")), 1779 Var("address",F64), 1780 Bop(Div,Mop(Size,LY(0,"N")),LN 8), 1781 Var("acctype",CTy"AccType")]),qVar"s")), 1782 (LC("MemOp_LOAD",CTy"MemOp"), 1783 Let(TP[Var("v",BTy"N"),qVar"s"], 1784 Apply 1785 (Call 1786 ("Mem",ATy(qTy,PTy(BTy"N",qTy)), 1787 TP[Var("address",F64), 1788 Bop(Div,Mop(Size,LY(0,"N")),LN 8), 1789 Var("acctype",CTy"AccType")]), 1790 qVar"s"), 1791 ITE(bVar"regsize_word", 1792 Apply 1793 (Call 1794 ("write'X",ATy(qTy,qTy), 1795 TP[Call 1796 ("ExtendWord",F32, 1797 TP[Var("v",BTy"N"), 1798 bVar"signed"]), 1799 Var("t",FTy 5)]),qVar"s"), 1800 Apply 1801 (Call 1802 ("write'X",ATy(qTy,qTy), 1803 TP[Call 1804 ("ExtendWord",F64, 1805 TP[Var("v",BTy"N"), 1806 bVar"signed"]), 1807 Var("t",FTy 5)]),qVar"s")))), 1808 (LC("MemOp_PREFETCH",CTy"MemOp"),qVar"s")]), 1809 ITE(bVar"wback", 1810 Let(Var("address",F64), 1811 ITB([(bVar"wb_unknown",LX F64), 1812 (bVar"postindex", 1813 Bop(Add,Var("address",F64), 1814 Var("offset",F64)))], 1815 Var("address",F64)), 1816 ITE(EQ(Var("n",FTy 5),LW(31,5)), 1817 Apply 1818 (Call 1819 ("write'SP",ATy(qTy,qTy), 1820 Var("address",F64)),qVar"s"), 1821 Apply 1822 (Call 1823 ("write'X",ATy(qTy,qTy), 1824 TP[Var("address",F64), 1825 Var("n",FTy 5)]),qVar"s"))), 1826 qVar"s"))))))) 1827; 1828val dfn'LoadStoreImmediate_def = Def 1829 ("dfn'LoadStoreImmediate", 1830 TP[Var("size",BTy"N"),bVar"regsize_word",Var("memop",CTy"MemOp"), 1831 Var("acctype",CTy"AccType"),bVar"signed",bVar"wb_unknown", 1832 bVar"rt_unknown",bVar"wback",bVar"postindex",bVar"unsigned_offset", 1833 Var("offset",F64),Var("n",FTy 5),Var("t",FTy 5)], 1834 Close 1835 (qVar"state", 1836 Apply 1837 (Call 1838 ("LoadStoreSingle",ATy(qTy,qTy), 1839 TP[Var("size",BTy"N"),bVar"regsize_word", 1840 Var("memop",CTy"MemOp"),Var("acctype",CTy"AccType"), 1841 bVar"signed",bVar"wb_unknown",bVar"rt_unknown",bVar"wback", 1842 bVar"postindex",Var("offset",F64),Var("n",FTy 5), 1843 Var("t",FTy 5)]),qVar"state"))) 1844; 1845val dfn'LoadStoreRegister_def = Def 1846 ("dfn'LoadStoreRegister", 1847 TP[Var("size",BTy"N"),bVar"regsize_word",Var("memop",CTy"MemOp"), 1848 bVar"signed",Var("m",FTy 5),Var("extend_type",CTy"ExtendType"), 1849 nVar"shift",Var("n",FTy 5),Var("t",FTy 5)], 1850 Close 1851 (qVar"state", 1852 Apply 1853 (Call 1854 ("LoadStoreSingle",ATy(qTy,qTy), 1855 TP[Var("size",BTy"N"),bVar"regsize_word", 1856 Var("memop",CTy"MemOp"),LC("AccType_NORMAL",CTy"AccType"), 1857 bVar"signed",LF,LF,LF,LF, 1858 Apply 1859 (Call 1860 ("ExtendReg",ATy(qTy,F64), 1861 TP[Var("m",FTy 5),Var("extend_type",CTy"ExtendType"), 1862 nVar"shift"]),qVar"state"),Var("n",FTy 5), 1863 Var("t",FTy 5)]),qVar"state"))) 1864; 1865val dfn'LoadStorePair_def = Def 1866 ("dfn'LoadStorePair", 1867 TP[Var("size",BTy"N"),Var("memop",CTy"MemOp"), 1868 Var("acctype",CTy"AccType"),bVar"signed",bVar"wb_unknown", 1869 bVar"rt_unknown",bVar"wback",bVar"postindex",Var("offset",F64), 1870 Var("n",FTy 5),Var("t",FTy 5),Var("t2",FTy 5)], 1871 Close 1872 (qVar"state", 1873 Let(nVar"dbytes",Bop(Div,Mop(Size,LY(0,"N")),LN 8), 1874 Let(qVar"s", 1875 ITE(EQ(Var("n",FTy 5),LW(31,5)), 1876 Apply 1877 (Const("CheckSPAlignment",ATy(qTy,qTy)),qVar"state"), 1878 qVar"state"), 1879 Let(Var("v",F64), 1880 ITE(EQ(Var("n",FTy 5),LW(31,5)), 1881 Apply(Const("SP",ATy(qTy,F64)),qVar"s"), 1882 Apply(Call("X",ATy(qTy,F64),Var("n",FTy 5)),qVar"s")), 1883 Let(Var("address",F64), 1884 ITE(bVar"postindex",Var("v",F64), 1885 Bop(Add,Var("v",F64),Var("offset",F64))), 1886 Let(qVar"s", 1887 CS(Var("memop",CTy"MemOp"), 1888 [(LC("MemOp_STORE",CTy"MemOp"), 1889 Apply 1890 (Call 1891 ("write'Mem",ATy(qTy,qTy), 1892 TP[ITE(Bop(And,bVar"rt_unknown", 1893 EQ(Var("t2",FTy 5), 1894 Var("n",FTy 5))), 1895 LX(BTy"N"), 1896 Apply 1897 (Call 1898 ("X",ATy(qTy,BTy"N"), 1899 Var("t2",FTy 5)),qVar"s")), 1900 Bop(Add,Var("address",F64), 1901 Mop(Cast F64,nVar"dbytes")), 1902 nVar"dbytes", 1903 Var("acctype",CTy"AccType")]), 1904 Apply 1905 (Call 1906 ("write'Mem",ATy(qTy,qTy), 1907 TP[ITE(Bop(And,bVar"rt_unknown", 1908 EQ(Var("t",FTy 5), 1909 Var("n",FTy 5))), 1910 LX(BTy"N"), 1911 Apply 1912 (Call 1913 ("X",ATy(qTy,BTy"N"), 1914 Var("t",FTy 5)), 1915 qVar"s")), 1916 Var("address",F64), 1917 nVar"dbytes", 1918 Var("acctype",CTy"AccType")]), 1919 qVar"s"))), 1920 (LC("MemOp_LOAD",CTy"MemOp"), 1921 Let(TP[Var("v",PTy(BTy"N",BTy"N")),qVar"s"], 1922 ITE(bVar"rt_unknown", 1923 TP[LX(PTy(BTy"N",BTy"N")),qVar"s"], 1924 Let(TP[Var("v",BTy"N"),qVar"s"], 1925 Apply 1926 (Call 1927 ("Mem", 1928 ATy(qTy,PTy(BTy"N",qTy)), 1929 TP[Var("address",F64), 1930 nVar"dbytes", 1931 Var("acctype", 1932 CTy"AccType")]), 1933 qVar"s"), 1934 Let(TP[Var("v0",BTy"N"),qVar"s"], 1935 Apply 1936 (Call 1937 ("Mem", 1938 ATy(qTy, 1939 PTy(BTy"N",qTy)), 1940 TP[Bop(Add, 1941 Var("address", 1942 F64), 1943 Mop(Cast F64, 1944 nVar"dbytes")), 1945 nVar"dbytes", 1946 Var("acctype", 1947 CTy"AccType")]), 1948 qVar"s"), 1949 TP[TP[Var("v",BTy"N"), 1950 Var("v0",BTy"N")], 1951 qVar"s"]))), 1952 Let(TP[Var("data1",BTy"N"), 1953 Var("data2",BTy"N")], 1954 Var("v",PTy(BTy"N",BTy"N")), 1955 ITE(bVar"signed", 1956 Apply 1957 (Call 1958 ("write'X",ATy(qTy,qTy), 1959 TP[Call 1960 ("ExtendWord",F64, 1961 TP[Var("data2", 1962 BTy"N"), 1963 bVar"signed"]), 1964 Var("t2",FTy 5)]), 1965 Apply 1966 (Call 1967 ("write'X", 1968 ATy(qTy,qTy), 1969 TP[Call 1970 ("ExtendWord", 1971 F64, 1972 TP[Var("data1", 1973 BTy"N"), 1974 bVar"signed"]), 1975 Var("t",FTy 5)]), 1976 qVar"s")), 1977 Apply 1978 (Call 1979 ("write'X",ATy(qTy,qTy), 1980 TP[Var("data2",BTy"N"), 1981 Var("t2",FTy 5)]), 1982 Apply 1983 (Call 1984 ("write'X", 1985 ATy(qTy,qTy), 1986 TP[Var("data1",BTy"N"), 1987 Var("t",FTy 5)]), 1988 qVar"s")))))), 1989 (AVar(CTy"MemOp"),qVar"s")]), 1990 ITE(bVar"wback", 1991 Let(Var("address",F64), 1992 ITB([(bVar"wb_unknown",LX F64), 1993 (bVar"postindex", 1994 Bop(Add,Var("address",F64), 1995 Var("offset",F64)))], 1996 Var("address",F64)), 1997 ITE(EQ(Var("n",FTy 5),LW(31,5)), 1998 Apply 1999 (Call 2000 ("write'SP",ATy(qTy,qTy), 2001 Var("address",F64)),qVar"s"), 2002 Apply 2003 (Call 2004 ("write'X",ATy(qTy,qTy), 2005 TP[Var("address",F64), 2006 Var("n",FTy 5)]),qVar"s"))), 2007 qVar"s")))))))) 2008; 2009val ExclusiveMonitorPass_def = Def 2010 ("ExclusiveMonitorPass",TP[Var("address",F64),nVar"n"],LX bTy) 2011; 2012val SetExclusiveMonitors_def = Def 2013 ("SetExclusiveMonitors",TP[Var("address",F64),nVar"n"],LU) 2014; 2015val ExclusiveMonitorStatus_def = Def0 ("ExclusiveMonitorStatus",LX F1) 2016; 2017val dfn'LoadStoreAcquire_def = Def 2018 ("dfn'LoadStoreAcquire", 2019 TP[Var("size",BTy"N"),Var("memop",CTy"MemOp"), 2020 Var("acctype",CTy"AccType"),bVar"excl",bVar"rn_unknown", 2021 bVar"rt_unknown",Var("s",FTy 5),Var("n",FTy 5),Var("t",FTy 5)], 2022 Close 2023 (qVar"state", 2024 Let(nVar"dbytes",Bop(Div,Mop(Size,LY(0,"N")),LN 8), 2025 Let(qVar"s0", 2026 ITE(EQ(Var("n",FTy 5),LW(31,5)), 2027 Apply 2028 (Const("CheckSPAlignment",ATy(qTy,qTy)),qVar"state"), 2029 qVar"state"), 2030 Let(Var("v",F64), 2031 ITB([(EQ(Var("n",FTy 5),LW(31,5)), 2032 Apply(Const("SP",ATy(qTy,F64)),qVar"s0")), 2033 (bVar"rn_unknown",LX F64)], 2034 Apply 2035 (Call("X",ATy(qTy,F64),Var("n",FTy 5)),qVar"s0")), 2036 CS(Var("memop",CTy"MemOp"), 2037 [(LC("MemOp_STORE",CTy"MemOp"), 2038 Let(Var("v0",BTy"N"), 2039 ITE(bVar"rt_unknown",LX(BTy"N"), 2040 Apply 2041 (Call("X",ATy(qTy,BTy"N"),Var("t",FTy 5)), 2042 qVar"s0")), 2043 ITE(bVar"excl", 2044 ITE(Call 2045 ("ExclusiveMonitorPass",bTy, 2046 TP[Var("v",F64),nVar"dbytes"]), 2047 Apply 2048 (Call 2049 ("write'X",ATy(qTy,qTy), 2050 TP[Mop(Cast F32, 2051 Const 2052 ("ExclusiveMonitorStatus", 2053 F1)),Var("s",FTy 5)]), 2054 Apply 2055 (Call 2056 ("write'Mem",ATy(qTy,qTy), 2057 TP[Var("v0",BTy"N"), 2058 Var("v",F64),nVar"dbytes", 2059 Var("acctype",CTy"AccType")]), 2060 qVar"s0")), 2061 Apply 2062 (Call 2063 ("write'X",ATy(qTy,qTy), 2064 TP[LW(1,32),Var("s",FTy 5)]), 2065 qVar"s0")), 2066 Apply 2067 (Call 2068 ("write'Mem",ATy(qTy,qTy), 2069 TP[Var("v0",BTy"N"),Var("v",F64), 2070 nVar"dbytes", 2071 Var("acctype",CTy"AccType")]), 2072 qVar"s0")))), 2073 (LC("MemOp_LOAD",CTy"MemOp"), 2074 Let(TP[Var("v",BTy"N"),qVar"s"], 2075 Apply 2076 (Call 2077 ("Mem",ATy(qTy,PTy(BTy"N",qTy)), 2078 TP[Var("v",F64),nVar"dbytes", 2079 Var("acctype",CTy"AccType")]),qVar"s0"), 2080 ITE(EQ(Mop(Size,LY(0,"N")),LN 64), 2081 Apply 2082 (Call 2083 ("write'X",ATy(qTy,qTy), 2084 TP[Var("v",BTy"N"),Var("t",FTy 5)]), 2085 qVar"s"), 2086 Apply 2087 (Call 2088 ("write'X",ATy(qTy,qTy), 2089 TP[Mop(Cast F32,Var("v",BTy"N")), 2090 Var("t",FTy 5)]),qVar"s")))), 2091 (AVar(CTy"MemOp"),qVar"s0")])))))) 2092; 2093val dfn'LoadStoreAcquirePair_def = Def 2094 ("dfn'LoadStoreAcquirePair", 2095 TP[Var("size",BTy"N"),Var("memop",CTy"MemOp"), 2096 Var("acctype",CTy"AccType"),bVar"rn_unknown",bVar"rt_unknown", 2097 Var("s",FTy 5),Var("n",FTy 5),Var("t",FTy 5),Var("t2",FTy 5)], 2098 Close 2099 (qVar"state", 2100 Let(nVar"dbytes",Bop(Div,Mop(Size,LY(0,"N")),LN 8), 2101 Let(qVar"s0", 2102 ITE(EQ(Var("n",FTy 5),LW(31,5)), 2103 Apply 2104 (Const("CheckSPAlignment",ATy(qTy,qTy)),qVar"state"), 2105 qVar"state"), 2106 Let(Var("v",F64), 2107 ITB([(EQ(Var("n",FTy 5),LW(31,5)), 2108 Apply(Const("SP",ATy(qTy,F64)),qVar"s0")), 2109 (bVar"rn_unknown",LX F64)], 2110 Apply 2111 (Call("X",ATy(qTy,F64),Var("n",FTy 5)),qVar"s0")), 2112 CS(Var("memop",CTy"MemOp"), 2113 [(LC("MemOp_STORE",CTy"MemOp"), 2114 ITE(Call 2115 ("ExclusiveMonitorPass",bTy, 2116 TP[Var("v",F64),nVar"dbytes"]), 2117 Apply 2118 (Call 2119 ("write'X",ATy(qTy,qTy), 2120 TP[Mop(Cast F32, 2121 Const("ExclusiveMonitorStatus",F1)), 2122 Var("s",FTy 5)]), 2123 Apply 2124 (Call 2125 ("write'Mem",ATy(qTy,qTy), 2126 TP[ITB([(bVar"rt_unknown",LX(BTy"N")), 2127 (EQ(Mop(Size,LY(0,"N")),LN 64), 2128 ITE(Apply 2129 (Const 2130 ("BigEndian", 2131 ATy(qTy,bTy)), 2132 qVar"s0"), 2133 Mop(Cast(BTy"N"), 2134 CC[Apply 2135 (Call 2136 ("X", 2137 ATy(qTy,F32), 2138 Var("t", 2139 FTy 5)), 2140 qVar"s0"), 2141 Apply 2142 (Call 2143 ("X", 2144 ATy(qTy,F32), 2145 Var("t2", 2146 FTy 5)), 2147 qVar"s0")]), 2148 Mop(Cast(BTy"N"), 2149 CC[Apply 2150 (Call 2151 ("X", 2152 ATy(qTy,F32), 2153 Var("t2", 2154 FTy 5)), 2155 qVar"s0"), 2156 Apply 2157 (Call 2158 ("X", 2159 ATy(qTy,F32), 2160 Var("t", 2161 FTy 5)), 2162 qVar"s0")]))), 2163 (Apply 2164 (Const 2165 ("BigEndian", 2166 ATy(qTy,bTy)),qVar"s0"), 2167 Mop(Cast(BTy"N"), 2168 CC[Apply 2169 (Call 2170 ("X", 2171 ATy(qTy,F64), 2172 Var("t",FTy 5)), 2173 qVar"s0"), 2174 Apply 2175 (Call 2176 ("X", 2177 ATy(qTy,F64), 2178 Var("t2",FTy 5)), 2179 qVar"s0")]))], 2180 Mop(Cast(BTy"N"), 2181 CC[Apply 2182 (Call 2183 ("X",ATy(qTy,F64), 2184 Var("t2",FTy 5)), 2185 qVar"s0"), 2186 Apply 2187 (Call 2188 ("X",ATy(qTy,F64), 2189 Var("t",FTy 5)), 2190 qVar"s0")])), 2191 Var("v",F64),nVar"dbytes", 2192 Var("acctype",CTy"AccType")]), 2193 qVar"s0")), 2194 Apply 2195 (Call 2196 ("write'X",ATy(qTy,qTy), 2197 TP[LW(1,32),Var("s",FTy 5)]),qVar"s0"))), 2198 (LC("MemOp_LOAD",CTy"MemOp"), 2199 ITB([(bVar"rt_unknown", 2200 ITE(EQ(Mop(Size,LY(0,"N")),LN 64), 2201 Apply 2202 (Call 2203 ("write'X",ATy(qTy,qTy), 2204 TP[LX F32,Var("t",FTy 5)]),qVar"s0"), 2205 Apply 2206 (Call 2207 ("write'X",ATy(qTy,qTy), 2208 TP[LX F64,Var("t",FTy 5)]),qVar"s0"))), 2209 (EQ(Mop(Size,LY(0,"N")),LN 64), 2210 Let(TP[Var("v",BTy"N"),qVar"s"], 2211 Apply 2212 (Call 2213 ("Mem",ATy(qTy,PTy(BTy"N",qTy)), 2214 TP[Var("v",F64),nVar"dbytes", 2215 Var("acctype",CTy"AccType")]), 2216 qVar"s0"), 2217 ITE(Apply 2218 (Const("BigEndian",ATy(qTy,bTy)), 2219 qVar"s"), 2220 Apply 2221 (Call 2222 ("write'X",ATy(qTy,qTy), 2223 TP[EX(Var("v",BTy"N"),LN 31, 2224 LN 0,F32),Var("t2",FTy 5)]), 2225 Apply 2226 (Call 2227 ("write'X",ATy(qTy,qTy), 2228 TP[EX(Var("v",BTy"N"),LN 63, 2229 LN 32,F32), 2230 Var("t",FTy 5)]),qVar"s")), 2231 Apply 2232 (Call 2233 ("write'X",ATy(qTy,qTy), 2234 TP[EX(Var("v",BTy"N"),LN 63, 2235 LN 32,F32), 2236 Var("t2",FTy 5)]), 2237 Apply 2238 (Call 2239 ("write'X",ATy(qTy,qTy), 2240 TP[EX(Var("v",BTy"N"),LN 31, 2241 LN 0,F32), 2242 Var("t",FTy 5)]),qVar"s")))))], 2243 Let(TP[Var("v0",F64),qVar"s"], 2244 Apply 2245 (Call 2246 ("Mem",ATy(qTy,PTy(F64,qTy)), 2247 TP[Var("v",F64),LN 8, 2248 Var("acctype",CTy"AccType")]), 2249 ITE(Mop(Not, 2250 Call 2251 ("Aligned",bTy, 2252 TP[Var("v",F64),nVar"dbytes"])), 2253 Mop(Snd, 2254 Apply 2255 (Call 2256 ("raise'exception", 2257 ATy(qTy,PTy(uTy,qTy)), 2258 Const 2259 ("ALIGNMENT_FAULT", 2260 CTy"exception")), 2261 qVar"s0")),qVar"s0")), 2262 Let(TP[Var("v",F64),qVar"s"], 2263 Apply 2264 (Call 2265 ("Mem",ATy(qTy,PTy(F64,qTy)), 2266 TP[Bop(Add,Var("v",F64),LW(8,64)), 2267 LN 8, 2268 Var("acctype",CTy"AccType")]), 2269 Apply 2270 (Call 2271 ("write'X",ATy(qTy,qTy), 2272 TP[Var("v0",F64), 2273 Var("t",FTy 5)]),qVar"s")), 2274 Apply 2275 (Call 2276 ("write'X",ATy(qTy,qTy), 2277 TP[Var("v",F64),Var("t2",FTy 5)]), 2278 qVar"s"))))), 2279 (AVar(CTy"MemOp"),qVar"s0")])))))) 2280; 2281val dfn'LoadLiteral_def = Def 2282 ("dfn'LoadLiteral", 2283 TP[Var("size",BTy"N"),Var("memop",CTy"MemOp"),bVar"signed", 2284 Var("offset",F64),Var("t",FTy 5)], 2285 Close 2286 (qVar"state", 2287 CS(Var("memop",CTy"MemOp"), 2288 [(LC("MemOp_LOAD",CTy"MemOp"), 2289 Let(TP[Var("v",BTy"N"),qVar"s"], 2290 Apply 2291 (Call 2292 ("Mem",ATy(qTy,PTy(BTy"N",qTy)), 2293 TP[Bop(Add,Dest("PC",F64,qVar"state"), 2294 Var("offset",F64)), 2295 Bop(Div,Mop(Size,LY(0,"N")),LN 8), 2296 LC("AccType_NORMAL",CTy"AccType")]),qVar"state"), 2297 Apply 2298 (Call 2299 ("write'X",ATy(qTy,qTy), 2300 TP[Call 2301 ("ExtendWord",F64, 2302 TP[Var("v",BTy"N"),bVar"signed"]), 2303 Var("t",FTy 5)]),qVar"s"))), 2304 (AVar(CTy"MemOp"),qVar"state")]))) 2305; 2306val dfn'MemoryBarrier_def = Def 2307 ("dfn'MemoryBarrier",TP[Var("op",CTy"MemBarrierOp"),Var("crm",F4)], 2308 Close 2309 (qVar"state", 2310 Mop(Snd, 2311 Apply 2312 (Call 2313 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2314 Call("UNDEFINED_FAULT",CTy"exception",LS"MemoryBarrier")), 2315 qVar"state")))) 2316; 2317val dfn'ClearExclusive_def = Def 2318 ("dfn'ClearExclusive",Var("imm",F4), 2319 Close 2320 (qVar"state", 2321 Mop(Snd, 2322 Apply 2323 (Call 2324 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2325 Call("UNDEFINED_FAULT",CTy"exception",LS"ClearExclusive")), 2326 qVar"state")))) 2327; 2328val dfn'Hint_def = Def 2329 ("dfn'Hint",Var("op",CTy"SystemHintOp"), 2330 Close 2331 (qVar"state", 2332 ITE(EQ(Var("op",CTy"SystemHintOp"), 2333 LC("SystemHintOp_NOP",CTy"SystemHintOp")),qVar"state", 2334 Mop(Snd, 2335 Apply 2336 (Call 2337 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2338 Call("UNDEFINED_FAULT",CTy"exception",LS"Hint")), 2339 qVar"state"))))) 2340; 2341val dfn'Breakpoint_def = Def 2342 ("dfn'Breakpoint",Var("imm",F16), 2343 Close 2344 (qVar"state", 2345 Mop(Snd, 2346 Apply 2347 (Call 2348 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2349 Call("UNDEFINED_FAULT",CTy"exception",LS"Breakpoint")), 2350 qVar"state")))) 2351; 2352val dfn'DebugSwitch_def = Def 2353 ("dfn'DebugSwitch",Var("target_level",FTy 2), 2354 Close 2355 (qVar"state", 2356 Mop(Snd, 2357 Apply 2358 (Call 2359 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2360 Call("UNDEFINED_FAULT",CTy"exception",LS"DebugSwitch")), 2361 qVar"state")))) 2362; 2363val dfn'DebugRestore_def = Def 2364 ("dfn'DebugRestore",qVar"state", 2365 Mop(Snd, 2366 Apply 2367 (Call 2368 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2369 Call("UNDEFINED_FAULT",CTy"exception",LS"DebugRestore")), 2370 qVar"state"))) 2371; 2372val dfn'Halt_def = Def 2373 ("dfn'Halt",Var("imm16",F16), 2374 Close 2375 (qVar"state", 2376 Mop(Snd, 2377 Apply 2378 (Call 2379 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2380 Call("UNDEFINED_FAULT",CTy"exception",LS"Halt")), 2381 qVar"state")))) 2382; 2383val dfn'SystemInstruction_def = Def 2384 ("dfn'SystemInstruction", 2385 TP[Var("sys_op1",FTy 3),Var("sys_op2",FTy 3),Var("sys_crn",F4), 2386 Var("sys_crm",F4),bVar"has_result",Var("t",FTy 5)], 2387 Close 2388 (qVar"state", 2389 Mop(Snd, 2390 Apply 2391 (Call 2392 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2393 Call("UNDEFINED_FAULT",CTy"exception",LS"System")), 2394 qVar"state")))) 2395; 2396val dfn'MoveSystemRegister_def = Def 2397 ("dfn'MoveSystemRegister", 2398 TP[bVar"read",Var("sys_op0",FTy 3),Var("sys_op1",FTy 3), 2399 Var("sys_op2",FTy 3),Var("sys_crn",F4),Var("sys_crm",F4), 2400 Var("t",FTy 5)], 2401 Close 2402 (qVar"state", 2403 Mop(Snd, 2404 Apply 2405 (Call 2406 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2407 Call 2408 ("UNDEFINED_FAULT",CTy"exception",LS"MoveSystemRegister")), 2409 qVar"state")))) 2410; 2411val dfn'MoveImmediateProcState_def = Def 2412 ("dfn'MoveImmediateProcState", 2413 TP[Var("field",CTy"PSTATEField"),Var("operand",F4)], 2414 Close 2415 (qVar"state", 2416 Mop(Snd, 2417 Apply 2418 (Call 2419 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2420 Call 2421 ("UNDEFINED_FAULT",CTy"exception", 2422 LS"MoveImmediateProcState")),qVar"state")))) 2423; 2424val dfn'SupervisorCall_def = Def 2425 ("dfn'SupervisorCall",Var("imm16",F16), 2426 Close 2427 (qVar"state", 2428 Mop(Snd, 2429 Apply 2430 (Call 2431 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2432 Call("UNDEFINED_FAULT",CTy"exception",LS"SupervisorCall")), 2433 qVar"state")))) 2434; 2435val dfn'HypervisorCall_def = Def 2436 ("dfn'HypervisorCall",Var("imm16",F16), 2437 Close 2438 (qVar"state", 2439 Mop(Snd, 2440 Apply 2441 (Call 2442 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2443 Call("UNDEFINED_FAULT",CTy"exception",LS"HypervisorCall")), 2444 qVar"state")))) 2445; 2446val dfn'SecureMonitorCall_def = Def 2447 ("dfn'SecureMonitorCall",Var("imm16",F16), 2448 Close 2449 (qVar"state", 2450 Mop(Snd, 2451 Apply 2452 (Call 2453 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2454 Call 2455 ("UNDEFINED_FAULT",CTy"exception",LS"SecureMonitorCall")), 2456 qVar"state")))) 2457; 2458val dfn'ExceptionReturn_def = Def 2459 ("dfn'ExceptionReturn",qVar"state", 2460 Mop(Snd, 2461 Apply 2462 (Call 2463 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2464 Call("UNDEFINED_FAULT",CTy"exception",LS"ExceptionReturn")), 2465 qVar"state"))) 2466; 2467val dfn'Unallocated_def = Def 2468 ("dfn'Unallocated",qVar"state", 2469 Mop(Snd, 2470 Apply 2471 (Call 2472 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2473 Call("UNDEFINED_FAULT",CTy"exception",LS"Unallocated")), 2474 qVar"state"))) 2475; 2476val dfn'Reserved_def = Def 2477 ("dfn'Reserved",qVar"state", 2478 Mop(Snd, 2479 Apply 2480 (Call 2481 ("raise'exception",ATy(qTy,PTy(uTy,qTy)), 2482 Call("UNDEFINED_FAULT",CTy"exception",LS"Reserved")), 2483 qVar"state"))) 2484; 2485val Run_def = Def 2486 ("Run",Var("v0",CTy"instruction"), 2487 Close 2488 (qVar"state", 2489 CS(Var("v0",CTy"instruction"), 2490 [(Const("Reserved",CTy"instruction"), 2491 Apply(Const("dfn'Reserved",ATy(qTy,qTy)),qVar"state")), 2492 (Const("Unallocated",CTy"instruction"), 2493 Apply(Const("dfn'Unallocated",ATy(qTy,qTy)),qVar"state")), 2494 (Call 2495 ("Address",CTy"instruction", 2496 Var("v81",PTy(bTy,PTy(F64,FTy 5)))), 2497 Apply 2498 (Call 2499 ("dfn'Address",ATy(qTy,qTy), 2500 Var("v81",PTy(bTy,PTy(F64,FTy 5)))),qVar"state")), 2501 (Call("ClearExclusive",CTy"instruction",Var("v82",F4)), 2502 Apply 2503 (Call("dfn'ClearExclusive",ATy(qTy,qTy),Var("v82",F4)), 2504 qVar"state")), 2505 (Call("Hint",CTy"instruction",Var("v83",CTy"SystemHintOp")), 2506 Apply 2507 (Call("dfn'Hint",ATy(qTy,qTy),Var("v83",CTy"SystemHintOp")), 2508 qVar"state")), 2509 (Call 2510 ("MemoryBarrier",CTy"instruction", 2511 Var("v84",PTy(CTy"MemBarrierOp",F4))), 2512 Apply 2513 (Call 2514 ("dfn'MemoryBarrier",ATy(qTy,qTy), 2515 Var("v84",PTy(CTy"MemBarrierOp",F4))),qVar"state")), 2516 (Call("Branch",CTy"instruction",Var("v1",CTy"Branch")), 2517 CS(Var("v1",CTy"Branch"), 2518 [(Call 2519 ("BranchConditional",CTy"Branch",Var("v2",PTy(F64,F4))), 2520 Apply 2521 (Call 2522 ("dfn'BranchConditional",ATy(qTy,qTy), 2523 Var("v2",PTy(F64,F4))),qVar"state")), 2524 (Call 2525 ("BranchImmediate",CTy"Branch", 2526 Var("v3",PTy(F64,CTy"BranchType"))), 2527 Apply 2528 (Call 2529 ("dfn'BranchImmediate",ATy(qTy,qTy), 2530 Var("v3",PTy(F64,CTy"BranchType"))),qVar"state")), 2531 (Call 2532 ("BranchRegister",CTy"Branch", 2533 Var("v4",PTy(FTy 5,CTy"BranchType"))), 2534 Apply 2535 (Call 2536 ("dfn'BranchRegister",ATy(qTy,qTy), 2537 Var("v4",PTy(FTy 5,CTy"BranchType"))),qVar"state")), 2538 (Call 2539 ("CompareAndBranch@32",CTy"Branch", 2540 Var("v5",PTy(F32,PTy(bTy,PTy(F64,FTy 5))))), 2541 Apply 2542 (Call 2543 ("dfn'CompareAndBranch",ATy(qTy,qTy), 2544 Var("v5",PTy(F32,PTy(bTy,PTy(F64,FTy 5))))), 2545 qVar"state")), 2546 (Call 2547 ("CompareAndBranch@64",CTy"Branch", 2548 Var("v6",PTy(F64,PTy(bTy,PTy(F64,FTy 5))))), 2549 Apply 2550 (Call 2551 ("dfn'CompareAndBranch",ATy(qTy,qTy), 2552 Var("v6",PTy(F64,PTy(bTy,PTy(F64,FTy 5))))), 2553 qVar"state")), 2554 (Call 2555 ("TestBitAndBranch@32",CTy"Branch", 2556 Var("v7",PTy(F32,PTy(FTy 6,PTy(bTy,PTy(F64,FTy 5)))))), 2557 Apply 2558 (Call 2559 ("dfn'TestBitAndBranch",ATy(qTy,qTy), 2560 Var("v7",PTy(F32,PTy(FTy 6,PTy(bTy,PTy(F64,FTy 5)))))), 2561 qVar"state")), 2562 (Call 2563 ("TestBitAndBranch@64",CTy"Branch", 2564 Var("v8",PTy(F64,PTy(FTy 6,PTy(bTy,PTy(F64,FTy 5)))))), 2565 Apply 2566 (Call 2567 ("dfn'TestBitAndBranch",ATy(qTy,qTy), 2568 Var("v8",PTy(F64,PTy(FTy 6,PTy(bTy,PTy(F64,FTy 5)))))), 2569 qVar"state"))])), 2570 (Call("CRCExt",CTy"instruction",Var("v9",CTy"CRCExt")), 2571 CS(Var("v9",CTy"CRCExt"), 2572 [(Call 2573 ("CRC@16",CTy"CRCExt", 2574 Var("v10",PTy(F16,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 2575 Apply 2576 (Call 2577 ("dfn'CRC",ATy(qTy,qTy), 2578 Var("v10", 2579 PTy(F16,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 2580 qVar"state")), 2581 (Call 2582 ("CRC@32",CTy"CRCExt", 2583 Var("v11",PTy(F32,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 2584 Apply 2585 (Call 2586 ("dfn'CRC",ATy(qTy,qTy), 2587 Var("v11", 2588 PTy(F32,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 2589 qVar"state")), 2590 (Call 2591 ("CRC@64",CTy"CRCExt", 2592 Var("v12",PTy(F64,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 2593 Apply 2594 (Call 2595 ("dfn'CRC",ATy(qTy,qTy), 2596 Var("v12", 2597 PTy(F64,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 2598 qVar"state")), 2599 (Call 2600 ("CRC@8",CTy"CRCExt", 2601 Var("v13",PTy(F8,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 2602 Apply 2603 (Call 2604 ("dfn'CRC",ATy(qTy,qTy), 2605 Var("v13", 2606 PTy(F8,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 2607 qVar"state"))])), 2608 (Call("Data",CTy"instruction",Var("v14",CTy"Data")), 2609 CS(Var("v14",CTy"Data"), 2610 [(Call 2611 ("AddSubCarry@32",CTy"Data", 2612 Var("v15", 2613 PTy(F32, 2614 PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))))), 2615 Apply 2616 (Call 2617 ("dfn'AddSubCarry",ATy(qTy,qTy), 2618 Var("v15", 2619 PTy(F32, 2620 PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))))), 2621 qVar"state")), 2622 (Call 2623 ("AddSubCarry@64",CTy"Data", 2624 Var("v16", 2625 PTy(F64, 2626 PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))))), 2627 Apply 2628 (Call 2629 ("dfn'AddSubCarry",ATy(qTy,qTy), 2630 Var("v16", 2631 PTy(F64, 2632 PTy(bTy,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))))), 2633 qVar"state")), 2634 (Call 2635 ("AddSubExtendRegister@32",CTy"Data", 2636 Var("v17", 2637 PTy(F32, 2638 PTy(bTy, 2639 PTy(bTy, 2640 PTy(FTy 5, 2641 PTy(CTy"ExtendType", 2642 PTy(FTy 3,PTy(FTy 5,FTy 5))))))))), 2643 Apply 2644 (Call 2645 ("dfn'AddSubExtendRegister",ATy(qTy,qTy), 2646 Var("v17", 2647 PTy(F32, 2648 PTy(bTy, 2649 PTy(bTy, 2650 PTy(FTy 5, 2651 PTy(CTy"ExtendType", 2652 PTy(FTy 3,PTy(FTy 5,FTy 5))))))))), 2653 qVar"state")), 2654 (Call 2655 ("AddSubExtendRegister@64",CTy"Data", 2656 Var("v18", 2657 PTy(F64, 2658 PTy(bTy, 2659 PTy(bTy, 2660 PTy(FTy 5, 2661 PTy(CTy"ExtendType", 2662 PTy(FTy 3,PTy(FTy 5,FTy 5))))))))), 2663 Apply 2664 (Call 2665 ("dfn'AddSubExtendRegister",ATy(qTy,qTy), 2666 Var("v18", 2667 PTy(F64, 2668 PTy(bTy, 2669 PTy(bTy, 2670 PTy(FTy 5, 2671 PTy(CTy"ExtendType", 2672 PTy(FTy 3,PTy(FTy 5,FTy 5))))))))), 2673 qVar"state")), 2674 (Call 2675 ("AddSubImmediate@32",CTy"Data", 2676 Var("v19", 2677 PTy(F32,PTy(bTy,PTy(bTy,PTy(F32,PTy(FTy 5,FTy 5))))))), 2678 Apply 2679 (Call 2680 ("dfn'AddSubImmediate",ATy(qTy,qTy), 2681 Var("v19", 2682 PTy(F32, 2683 PTy(bTy,PTy(bTy,PTy(F32,PTy(FTy 5,FTy 5))))))), 2684 qVar"state")), 2685 (Call 2686 ("AddSubImmediate@64",CTy"Data", 2687 Var("v20", 2688 PTy(F64,PTy(bTy,PTy(bTy,PTy(F64,PTy(FTy 5,FTy 5))))))), 2689 Apply 2690 (Call 2691 ("dfn'AddSubImmediate",ATy(qTy,qTy), 2692 Var("v20", 2693 PTy(F64, 2694 PTy(bTy,PTy(bTy,PTy(F64,PTy(FTy 5,FTy 5))))))), 2695 qVar"state")), 2696 (Call 2697 ("AddSubShiftedRegister@32",CTy"Data", 2698 Var("v21", 2699 PTy(F32, 2700 PTy(bTy, 2701 PTy(bTy, 2702 PTy(CTy"ShiftType", 2703 PTy(FTy 5, 2704 PTy(FTy 6,PTy(FTy 5,FTy 5))))))))), 2705 Apply 2706 (Call 2707 ("dfn'AddSubShiftedRegister",ATy(qTy,qTy), 2708 Var("v21", 2709 PTy(F32, 2710 PTy(bTy, 2711 PTy(bTy, 2712 PTy(CTy"ShiftType", 2713 PTy(FTy 5, 2714 PTy(FTy 6,PTy(FTy 5,FTy 5))))))))), 2715 qVar"state")), 2716 (Call 2717 ("AddSubShiftedRegister@64",CTy"Data", 2718 Var("v22", 2719 PTy(F64, 2720 PTy(bTy, 2721 PTy(bTy, 2722 PTy(CTy"ShiftType", 2723 PTy(FTy 5, 2724 PTy(FTy 6,PTy(FTy 5,FTy 5))))))))), 2725 Apply 2726 (Call 2727 ("dfn'AddSubShiftedRegister",ATy(qTy,qTy), 2728 Var("v22", 2729 PTy(F64, 2730 PTy(bTy, 2731 PTy(bTy, 2732 PTy(CTy"ShiftType", 2733 PTy(FTy 5, 2734 PTy(FTy 6,PTy(FTy 5,FTy 5))))))))), 2735 qVar"state")), 2736 (Call 2737 ("BitfieldMove@32",CTy"Data", 2738 Var("v23", 2739 PTy(F32, 2740 PTy(bTy, 2741 PTy(bTy, 2742 PTy(F32, 2743 PTy(F32, 2744 PTy(nTy, 2745 PTy(nTy,PTy(FTy 5,FTy 5)))))))))), 2746 Apply 2747 (Call 2748 ("dfn'BitfieldMove",ATy(qTy,qTy), 2749 Var("v23", 2750 PTy(F32, 2751 PTy(bTy, 2752 PTy(bTy, 2753 PTy(F32, 2754 PTy(F32, 2755 PTy(nTy, 2756 PTy(nTy,PTy(FTy 5,FTy 5)))))))))), 2757 qVar"state")), 2758 (Call 2759 ("BitfieldMove@64",CTy"Data", 2760 Var("v24", 2761 PTy(F64, 2762 PTy(bTy, 2763 PTy(bTy, 2764 PTy(F64, 2765 PTy(F64, 2766 PTy(nTy, 2767 PTy(nTy,PTy(FTy 5,FTy 5)))))))))), 2768 Apply 2769 (Call 2770 ("dfn'BitfieldMove",ATy(qTy,qTy), 2771 Var("v24", 2772 PTy(F64, 2773 PTy(bTy, 2774 PTy(bTy, 2775 PTy(F64, 2776 PTy(F64, 2777 PTy(nTy, 2778 PTy(nTy,PTy(FTy 5,FTy 5)))))))))), 2779 qVar"state")), 2780 (Call 2781 ("ConditionalCompareImmediate@32",CTy"Data", 2782 Var("v25", 2783 PTy(F32, 2784 PTy(bTy, 2785 PTy(F32, 2786 PTy(F4, 2787 PTy(PTy(bTy,PTy(bTy,PTy(bTy,bTy))), 2788 FTy 5))))))), 2789 Apply 2790 (Call 2791 ("dfn'ConditionalCompareImmediate",ATy(qTy,qTy), 2792 Var("v25", 2793 PTy(F32, 2794 PTy(bTy, 2795 PTy(F32, 2796 PTy(F4, 2797 PTy(PTy(bTy, 2798 PTy(bTy,PTy(bTy,bTy))), 2799 FTy 5))))))),qVar"state")), 2800 (Call 2801 ("ConditionalCompareImmediate@64",CTy"Data", 2802 Var("v26", 2803 PTy(F64, 2804 PTy(bTy, 2805 PTy(F64, 2806 PTy(F4, 2807 PTy(PTy(bTy,PTy(bTy,PTy(bTy,bTy))), 2808 FTy 5))))))), 2809 Apply 2810 (Call 2811 ("dfn'ConditionalCompareImmediate",ATy(qTy,qTy), 2812 Var("v26", 2813 PTy(F64, 2814 PTy(bTy, 2815 PTy(F64, 2816 PTy(F4, 2817 PTy(PTy(bTy, 2818 PTy(bTy,PTy(bTy,bTy))), 2819 FTy 5))))))),qVar"state")), 2820 (Call 2821 ("ConditionalCompareRegister@32",CTy"Data", 2822 Var("v27", 2823 PTy(F32, 2824 PTy(bTy, 2825 PTy(F4, 2826 PTy(PTy(bTy,PTy(bTy,PTy(bTy,bTy))), 2827 PTy(FTy 5,FTy 5))))))), 2828 Apply 2829 (Call 2830 ("dfn'ConditionalCompareRegister",ATy(qTy,qTy), 2831 Var("v27", 2832 PTy(F32, 2833 PTy(bTy, 2834 PTy(F4, 2835 PTy(PTy(bTy,PTy(bTy,PTy(bTy,bTy))), 2836 PTy(FTy 5,FTy 5))))))), 2837 qVar"state")), 2838 (Call 2839 ("ConditionalCompareRegister@64",CTy"Data", 2840 Var("v28", 2841 PTy(F64, 2842 PTy(bTy, 2843 PTy(F4, 2844 PTy(PTy(bTy,PTy(bTy,PTy(bTy,bTy))), 2845 PTy(FTy 5,FTy 5))))))), 2846 Apply 2847 (Call 2848 ("dfn'ConditionalCompareRegister",ATy(qTy,qTy), 2849 Var("v28", 2850 PTy(F64, 2851 PTy(bTy, 2852 PTy(F4, 2853 PTy(PTy(bTy,PTy(bTy,PTy(bTy,bTy))), 2854 PTy(FTy 5,FTy 5))))))), 2855 qVar"state")), 2856 (Call 2857 ("ConditionalSelect@32",CTy"Data", 2858 Var("v29", 2859 PTy(F32, 2860 PTy(bTy, 2861 PTy(bTy,PTy(F4,PTy(FTy 5,PTy(FTy 5,FTy 5)))))))), 2862 Apply 2863 (Call 2864 ("dfn'ConditionalSelect",ATy(qTy,qTy), 2865 Var("v29", 2866 PTy(F32, 2867 PTy(bTy, 2868 PTy(bTy, 2869 PTy(F4,PTy(FTy 5,PTy(FTy 5,FTy 5)))))))), 2870 qVar"state")), 2871 (Call 2872 ("ConditionalSelect@64",CTy"Data", 2873 Var("v30", 2874 PTy(F64, 2875 PTy(bTy, 2876 PTy(bTy,PTy(F4,PTy(FTy 5,PTy(FTy 5,FTy 5)))))))), 2877 Apply 2878 (Call 2879 ("dfn'ConditionalSelect",ATy(qTy,qTy), 2880 Var("v30", 2881 PTy(F64, 2882 PTy(bTy, 2883 PTy(bTy, 2884 PTy(F4,PTy(FTy 5,PTy(FTy 5,FTy 5)))))))), 2885 qVar"state")), 2886 (Call 2887 ("CountLeading@32",CTy"Data", 2888 Var("v31",PTy(F32,PTy(bTy,PTy(FTy 5,FTy 5))))), 2889 Apply 2890 (Call 2891 ("dfn'CountLeading",ATy(qTy,qTy), 2892 Var("v31",PTy(F32,PTy(bTy,PTy(FTy 5,FTy 5))))), 2893 qVar"state")), 2894 (Call 2895 ("CountLeading@64",CTy"Data", 2896 Var("v32",PTy(F64,PTy(bTy,PTy(FTy 5,FTy 5))))), 2897 Apply 2898 (Call 2899 ("dfn'CountLeading",ATy(qTy,qTy), 2900 Var("v32",PTy(F64,PTy(bTy,PTy(FTy 5,FTy 5))))), 2901 qVar"state")), 2902 (Call 2903 ("Division@32",CTy"Data", 2904 Var("v33",PTy(F32,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 2905 Apply 2906 (Call 2907 ("dfn'Division",ATy(qTy,qTy), 2908 Var("v33", 2909 PTy(F32,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 2910 qVar"state")), 2911 (Call 2912 ("Division@64",CTy"Data", 2913 Var("v34",PTy(F64,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 2914 Apply 2915 (Call 2916 ("dfn'Division",ATy(qTy,qTy), 2917 Var("v34", 2918 PTy(F64,PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 2919 qVar"state")), 2920 (Call 2921 ("ExtractRegister@32",CTy"Data", 2922 Var("v35", 2923 PTy(F32,PTy(FTy 6,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 2924 Apply 2925 (Call 2926 ("dfn'ExtractRegister",ATy(qTy,qTy), 2927 Var("v35", 2928 PTy(F32,PTy(FTy 6,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 2929 qVar"state")), 2930 (Call 2931 ("ExtractRegister@64",CTy"Data", 2932 Var("v36", 2933 PTy(F64,PTy(FTy 6,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 2934 Apply 2935 (Call 2936 ("dfn'ExtractRegister",ATy(qTy,qTy), 2937 Var("v36", 2938 PTy(F64,PTy(FTy 6,PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 2939 qVar"state")), 2940 (Call 2941 ("LogicalImmediate@32",CTy"Data", 2942 Var("v37", 2943 PTy(F32, 2944 PTy(CTy"LogicalOp", 2945 PTy(bTy,PTy(F32,PTy(FTy 5,FTy 5))))))), 2946 Apply 2947 (Call 2948 ("dfn'LogicalImmediate",ATy(qTy,qTy), 2949 Var("v37", 2950 PTy(F32, 2951 PTy(CTy"LogicalOp", 2952 PTy(bTy,PTy(F32,PTy(FTy 5,FTy 5))))))), 2953 qVar"state")), 2954 (Call 2955 ("LogicalImmediate@64",CTy"Data", 2956 Var("v38", 2957 PTy(F64, 2958 PTy(CTy"LogicalOp", 2959 PTy(bTy,PTy(F64,PTy(FTy 5,FTy 5))))))), 2960 Apply 2961 (Call 2962 ("dfn'LogicalImmediate",ATy(qTy,qTy), 2963 Var("v38", 2964 PTy(F64, 2965 PTy(CTy"LogicalOp", 2966 PTy(bTy,PTy(F64,PTy(FTy 5,FTy 5))))))), 2967 qVar"state")), 2968 (Call 2969 ("LogicalShiftedRegister@32",CTy"Data", 2970 Var("v39", 2971 PTy(F32, 2972 PTy(CTy"LogicalOp", 2973 PTy(bTy, 2974 PTy(bTy, 2975 PTy(CTy"ShiftType", 2976 PTy(nTy, 2977 PTy(FTy 5,PTy(FTy 5,FTy 5)))))))))), 2978 Apply 2979 (Call 2980 ("dfn'LogicalShiftedRegister",ATy(qTy,qTy), 2981 Var("v39", 2982 PTy(F32, 2983 PTy(CTy"LogicalOp", 2984 PTy(bTy, 2985 PTy(bTy, 2986 PTy(CTy"ShiftType", 2987 PTy(nTy, 2988 PTy(FTy 5, 2989 PTy(FTy 5,FTy 5)))))))))), 2990 qVar"state")), 2991 (Call 2992 ("LogicalShiftedRegister@64",CTy"Data", 2993 Var("v40", 2994 PTy(F64, 2995 PTy(CTy"LogicalOp", 2996 PTy(bTy, 2997 PTy(bTy, 2998 PTy(CTy"ShiftType", 2999 PTy(nTy, 3000 PTy(FTy 5,PTy(FTy 5,FTy 5)))))))))), 3001 Apply 3002 (Call 3003 ("dfn'LogicalShiftedRegister",ATy(qTy,qTy), 3004 Var("v40", 3005 PTy(F64, 3006 PTy(CTy"LogicalOp", 3007 PTy(bTy, 3008 PTy(bTy, 3009 PTy(CTy"ShiftType", 3010 PTy(nTy, 3011 PTy(FTy 5, 3012 PTy(FTy 5,FTy 5)))))))))), 3013 qVar"state")), 3014 (Call 3015 ("MoveWide@32",CTy"Data", 3016 Var("v41", 3017 PTy(F32, 3018 PTy(CTy"MoveWideOp",PTy(FTy 2,PTy(F16,FTy 5)))))), 3019 Apply 3020 (Call 3021 ("dfn'MoveWide",ATy(qTy,qTy), 3022 Var("v41", 3023 PTy(F32, 3024 PTy(CTy"MoveWideOp", 3025 PTy(FTy 2,PTy(F16,FTy 5)))))), 3026 qVar"state")), 3027 (Call 3028 ("MoveWide@64",CTy"Data", 3029 Var("v42", 3030 PTy(F64, 3031 PTy(CTy"MoveWideOp",PTy(FTy 2,PTy(F16,FTy 5)))))), 3032 Apply 3033 (Call 3034 ("dfn'MoveWide",ATy(qTy,qTy), 3035 Var("v42", 3036 PTy(F64, 3037 PTy(CTy"MoveWideOp", 3038 PTy(FTy 2,PTy(F16,FTy 5)))))), 3039 qVar"state")), 3040 (Call 3041 ("MultiplyAddSub@32",CTy"Data", 3042 Var("v43", 3043 PTy(F32, 3044 PTy(bTy,PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))))), 3045 Apply 3046 (Call 3047 ("dfn'MultiplyAddSub",ATy(qTy,qTy), 3048 Var("v43", 3049 PTy(F32, 3050 PTy(bTy, 3051 PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))))), 3052 qVar"state")), 3053 (Call 3054 ("MultiplyAddSub@64",CTy"Data", 3055 Var("v44", 3056 PTy(F64, 3057 PTy(bTy,PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))))), 3058 Apply 3059 (Call 3060 ("dfn'MultiplyAddSub",ATy(qTy,qTy), 3061 Var("v44", 3062 PTy(F64, 3063 PTy(bTy, 3064 PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))))), 3065 qVar"state")), 3066 (Call 3067 ("MultiplyAddSubLong",CTy"Data", 3068 Var("v45", 3069 PTy(bTy, 3070 PTy(bTy,PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))))), 3071 Apply 3072 (Call 3073 ("dfn'MultiplyAddSubLong",ATy(qTy,qTy), 3074 Var("v45", 3075 PTy(bTy, 3076 PTy(bTy, 3077 PTy(FTy 5,PTy(FTy 5,PTy(FTy 5,FTy 5))))))), 3078 qVar"state")), 3079 (Call 3080 ("MultiplyHigh",CTy"Data", 3081 Var("v46",PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))), 3082 Apply 3083 (Call 3084 ("dfn'MultiplyHigh",ATy(qTy,qTy), 3085 Var("v46",PTy(bTy,PTy(FTy 5,PTy(FTy 5,FTy 5))))), 3086 qVar"state")), 3087 (Call 3088 ("Reverse@32",CTy"Data", 3089 Var("v47",PTy(F32,PTy(CTy"RevOp",PTy(FTy 5,FTy 5))))), 3090 Apply 3091 (Call 3092 ("dfn'Reverse",ATy(qTy,qTy), 3093 Var("v47",PTy(F32,PTy(CTy"RevOp",PTy(FTy 5,FTy 5))))), 3094 qVar"state")), 3095 (Call 3096 ("Reverse@64",CTy"Data", 3097 Var("v48",PTy(F64,PTy(CTy"RevOp",PTy(FTy 5,FTy 5))))), 3098 Apply 3099 (Call 3100 ("dfn'Reverse",ATy(qTy,qTy), 3101 Var("v48",PTy(F64,PTy(CTy"RevOp",PTy(FTy 5,FTy 5))))), 3102 qVar"state")), 3103 (Call 3104 ("Shift@32",CTy"Data", 3105 Var("v49", 3106 PTy(F32, 3107 PTy(CTy"ShiftType",PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 3108 Apply 3109 (Call 3110 ("dfn'Shift",ATy(qTy,qTy), 3111 Var("v49", 3112 PTy(F32, 3113 PTy(CTy"ShiftType", 3114 PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 3115 qVar"state")), 3116 (Call 3117 ("Shift@64",CTy"Data", 3118 Var("v50", 3119 PTy(F64, 3120 PTy(CTy"ShiftType",PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 3121 Apply 3122 (Call 3123 ("dfn'Shift",ATy(qTy,qTy), 3124 Var("v50", 3125 PTy(F64, 3126 PTy(CTy"ShiftType", 3127 PTy(FTy 5,PTy(FTy 5,FTy 5)))))), 3128 qVar"state"))])), 3129 (Call("Debug",CTy"instruction",Var("v51",CTy"Debug")), 3130 CS(Var("v51",CTy"Debug"), 3131 [(Const("DebugRestore",CTy"Debug"), 3132 Apply(Const("dfn'DebugRestore",ATy(qTy,qTy)),qVar"state")), 3133 (Call("Breakpoint",CTy"Debug",Var("v52",F16)), 3134 Apply 3135 (Call("dfn'Breakpoint",ATy(qTy,qTy),Var("v52",F16)), 3136 qVar"state")), 3137 (Call("DebugSwitch",CTy"Debug",Var("v53",FTy 2)), 3138 Apply 3139 (Call("dfn'DebugSwitch",ATy(qTy,qTy),Var("v53",FTy 2)), 3140 qVar"state")), 3141 (Call("Halt",CTy"Debug",Var("v54",F16)), 3142 Apply 3143 (Call("dfn'Halt",ATy(qTy,qTy),Var("v54",F16)), 3144 qVar"state"))])), 3145 (Call("LoadStore",CTy"instruction",Var("v55",CTy"LoadStore")), 3146 CS(Var("v55",CTy"LoadStore"), 3147 [(Call 3148 ("LoadLiteral@32",CTy"LoadStore", 3149 Var("v56", 3150 PTy(F32,PTy(CTy"MemOp",PTy(bTy,PTy(F64,FTy 5)))))), 3151 Apply 3152 (Call 3153 ("dfn'LoadLiteral",ATy(qTy,qTy), 3154 Var("v56", 3155 PTy(F32,PTy(CTy"MemOp",PTy(bTy,PTy(F64,FTy 5)))))), 3156 qVar"state")), 3157 (Call 3158 ("LoadLiteral@64",CTy"LoadStore", 3159 Var("v57", 3160 PTy(F64,PTy(CTy"MemOp",PTy(bTy,PTy(F64,FTy 5)))))), 3161 Apply 3162 (Call 3163 ("dfn'LoadLiteral",ATy(qTy,qTy), 3164 Var("v57", 3165 PTy(F64,PTy(CTy"MemOp",PTy(bTy,PTy(F64,FTy 5)))))), 3166 qVar"state")), 3167 (Call 3168 ("LoadStoreAcquire@16",CTy"LoadStore", 3169 Var("v58", 3170 PTy(F16, 3171 PTy(CTy"MemOp", 3172 PTy(CTy"AccType", 3173 PTy(bTy, 3174 PTy(bTy, 3175 PTy(bTy, 3176 PTy(FTy 5,PTy(FTy 5,FTy 5)))))))))), 3177 Apply 3178 (Call 3179 ("dfn'LoadStoreAcquire",ATy(qTy,qTy), 3180 Var("v58", 3181 PTy(F16, 3182 PTy(CTy"MemOp", 3183 PTy(CTy"AccType", 3184 PTy(bTy, 3185 PTy(bTy, 3186 PTy(bTy, 3187 PTy(FTy 5, 3188 PTy(FTy 5,FTy 5)))))))))), 3189 qVar"state")), 3190 (Call 3191 ("LoadStoreAcquire@32",CTy"LoadStore", 3192 Var("v59", 3193 PTy(F32, 3194 PTy(CTy"MemOp", 3195 PTy(CTy"AccType", 3196 PTy(bTy, 3197 PTy(bTy, 3198 PTy(bTy, 3199 PTy(FTy 5,PTy(FTy 5,FTy 5)))))))))), 3200 Apply 3201 (Call 3202 ("dfn'LoadStoreAcquire",ATy(qTy,qTy), 3203 Var("v59", 3204 PTy(F32, 3205 PTy(CTy"MemOp", 3206 PTy(CTy"AccType", 3207 PTy(bTy, 3208 PTy(bTy, 3209 PTy(bTy, 3210 PTy(FTy 5, 3211 PTy(FTy 5,FTy 5)))))))))), 3212 qVar"state")), 3213 (Call 3214 ("LoadStoreAcquire@64",CTy"LoadStore", 3215 Var("v60", 3216 PTy(F64, 3217 PTy(CTy"MemOp", 3218 PTy(CTy"AccType", 3219 PTy(bTy, 3220 PTy(bTy, 3221 PTy(bTy, 3222 PTy(FTy 5,PTy(FTy 5,FTy 5)))))))))), 3223 Apply 3224 (Call 3225 ("dfn'LoadStoreAcquire",ATy(qTy,qTy), 3226 Var("v60", 3227 PTy(F64, 3228 PTy(CTy"MemOp", 3229 PTy(CTy"AccType", 3230 PTy(bTy, 3231 PTy(bTy, 3232 PTy(bTy, 3233 PTy(FTy 5, 3234 PTy(FTy 5,FTy 5)))))))))), 3235 qVar"state")), 3236 (Call 3237 ("LoadStoreAcquire@8",CTy"LoadStore", 3238 Var("v61", 3239 PTy(F8, 3240 PTy(CTy"MemOp", 3241 PTy(CTy"AccType", 3242 PTy(bTy, 3243 PTy(bTy, 3244 PTy(bTy, 3245 PTy(FTy 5,PTy(FTy 5,FTy 5)))))))))), 3246 Apply 3247 (Call 3248 ("dfn'LoadStoreAcquire",ATy(qTy,qTy), 3249 Var("v61", 3250 PTy(F8, 3251 PTy(CTy"MemOp", 3252 PTy(CTy"AccType", 3253 PTy(bTy, 3254 PTy(bTy, 3255 PTy(bTy, 3256 PTy(FTy 5, 3257 PTy(FTy 5,FTy 5)))))))))), 3258 qVar"state")), 3259 (Call 3260 ("LoadStoreAcquirePair@128",CTy"LoadStore", 3261 Var("v62", 3262 PTy(FTy 128, 3263 PTy(CTy"MemOp", 3264 PTy(CTy"AccType", 3265 PTy(bTy, 3266 PTy(bTy, 3267 PTy(FTy 5, 3268 PTy(FTy 5,PTy(FTy 5,FTy 5)))))))))), 3269 Apply 3270 (Call 3271 ("dfn'LoadStoreAcquirePair",ATy(qTy,qTy), 3272 Var("v62", 3273 PTy(FTy 128, 3274 PTy(CTy"MemOp", 3275 PTy(CTy"AccType", 3276 PTy(bTy, 3277 PTy(bTy, 3278 PTy(FTy 5, 3279 PTy(FTy 5, 3280 PTy(FTy 5,FTy 5)))))))))), 3281 qVar"state")), 3282 (Call 3283 ("LoadStoreAcquirePair@64",CTy"LoadStore", 3284 Var("v63", 3285 PTy(F64, 3286 PTy(CTy"MemOp", 3287 PTy(CTy"AccType", 3288 PTy(bTy, 3289 PTy(bTy, 3290 PTy(FTy 5, 3291 PTy(FTy 5,PTy(FTy 5,FTy 5)))))))))), 3292 Apply 3293 (Call 3294 ("dfn'LoadStoreAcquirePair",ATy(qTy,qTy), 3295 Var("v63", 3296 PTy(F64, 3297 PTy(CTy"MemOp", 3298 PTy(CTy"AccType", 3299 PTy(bTy, 3300 PTy(bTy, 3301 PTy(FTy 5, 3302 PTy(FTy 5, 3303 PTy(FTy 5,FTy 5)))))))))), 3304 qVar"state")), 3305 (Call 3306 ("LoadStoreImmediate@16",CTy"LoadStore", 3307 Var("v64", 3308 PTy(F16, 3309 PTy(bTy, 3310 PTy(CTy"MemOp", 3311 PTy(CTy"AccType", 3312 PTy(bTy, 3313 PTy(bTy, 3314 PTy(bTy, 3315 PTy(bTy, 3316 PTy(bTy, 3317 PTy(bTy, 3318 PTy(F64, 3319 PTy(FTy 5, 3320 FTy 5)))))))))))))), 3321 Apply 3322 (Call 3323 ("dfn'LoadStoreImmediate",ATy(qTy,qTy), 3324 Var("v64", 3325 PTy(F16, 3326 PTy(bTy, 3327 PTy(CTy"MemOp", 3328 PTy(CTy"AccType", 3329 PTy(bTy, 3330 PTy(bTy, 3331 PTy(bTy, 3332 PTy(bTy, 3333 PTy(bTy, 3334 PTy(bTy, 3335 PTy(F64, 3336 PTy(FTy 5, 3337 FTy 5)))))))))))))), 3338 qVar"state")), 3339 (Call 3340 ("LoadStoreImmediate@32",CTy"LoadStore", 3341 Var("v65", 3342 PTy(F32, 3343 PTy(bTy, 3344 PTy(CTy"MemOp", 3345 PTy(CTy"AccType", 3346 PTy(bTy, 3347 PTy(bTy, 3348 PTy(bTy, 3349 PTy(bTy, 3350 PTy(bTy, 3351 PTy(bTy, 3352 PTy(F64, 3353 PTy(FTy 5, 3354 FTy 5)))))))))))))), 3355 Apply 3356 (Call 3357 ("dfn'LoadStoreImmediate",ATy(qTy,qTy), 3358 Var("v65", 3359 PTy(F32, 3360 PTy(bTy, 3361 PTy(CTy"MemOp", 3362 PTy(CTy"AccType", 3363 PTy(bTy, 3364 PTy(bTy, 3365 PTy(bTy, 3366 PTy(bTy, 3367 PTy(bTy, 3368 PTy(bTy, 3369 PTy(F64, 3370 PTy(FTy 5, 3371 FTy 5)))))))))))))), 3372 qVar"state")), 3373 (Call 3374 ("LoadStoreImmediate@64",CTy"LoadStore", 3375 Var("v66", 3376 PTy(F64, 3377 PTy(bTy, 3378 PTy(CTy"MemOp", 3379 PTy(CTy"AccType", 3380 PTy(bTy, 3381 PTy(bTy, 3382 PTy(bTy, 3383 PTy(bTy, 3384 PTy(bTy, 3385 PTy(bTy, 3386 PTy(F64, 3387 PTy(FTy 5, 3388 FTy 5)))))))))))))), 3389 Apply 3390 (Call 3391 ("dfn'LoadStoreImmediate",ATy(qTy,qTy), 3392 Var("v66", 3393 PTy(F64, 3394 PTy(bTy, 3395 PTy(CTy"MemOp", 3396 PTy(CTy"AccType", 3397 PTy(bTy, 3398 PTy(bTy, 3399 PTy(bTy, 3400 PTy(bTy, 3401 PTy(bTy, 3402 PTy(bTy, 3403 PTy(F64, 3404 PTy(FTy 5, 3405 FTy 5)))))))))))))), 3406 qVar"state")), 3407 (Call 3408 ("LoadStoreImmediate@8",CTy"LoadStore", 3409 Var("v67", 3410 PTy(F8, 3411 PTy(bTy, 3412 PTy(CTy"MemOp", 3413 PTy(CTy"AccType", 3414 PTy(bTy, 3415 PTy(bTy, 3416 PTy(bTy, 3417 PTy(bTy, 3418 PTy(bTy, 3419 PTy(bTy, 3420 PTy(F64, 3421 PTy(FTy 5, 3422 FTy 5)))))))))))))), 3423 Apply 3424 (Call 3425 ("dfn'LoadStoreImmediate",ATy(qTy,qTy), 3426 Var("v67", 3427 PTy(F8, 3428 PTy(bTy, 3429 PTy(CTy"MemOp", 3430 PTy(CTy"AccType", 3431 PTy(bTy, 3432 PTy(bTy, 3433 PTy(bTy, 3434 PTy(bTy, 3435 PTy(bTy, 3436 PTy(bTy, 3437 PTy(F64, 3438 PTy(FTy 5, 3439 FTy 5)))))))))))))), 3440 qVar"state")), 3441 (Call 3442 ("LoadStorePair@32",CTy"LoadStore", 3443 Var("v68", 3444 PTy(F32, 3445 PTy(CTy"MemOp", 3446 PTy(CTy"AccType", 3447 PTy(bTy, 3448 PTy(bTy, 3449 PTy(bTy, 3450 PTy(bTy, 3451 PTy(bTy, 3452 PTy(F64, 3453 PTy(FTy 5, 3454 PTy(FTy 5, 3455 FTy 5))))))))))))), 3456 Apply 3457 (Call 3458 ("dfn'LoadStorePair",ATy(qTy,qTy), 3459 Var("v68", 3460 PTy(F32, 3461 PTy(CTy"MemOp", 3462 PTy(CTy"AccType", 3463 PTy(bTy, 3464 PTy(bTy, 3465 PTy(bTy, 3466 PTy(bTy, 3467 PTy(bTy, 3468 PTy(F64, 3469 PTy(FTy 5, 3470 PTy(FTy 5, 3471 FTy 5))))))))))))), 3472 qVar"state")), 3473 (Call 3474 ("LoadStorePair@64",CTy"LoadStore", 3475 Var("v69", 3476 PTy(F64, 3477 PTy(CTy"MemOp", 3478 PTy(CTy"AccType", 3479 PTy(bTy, 3480 PTy(bTy, 3481 PTy(bTy, 3482 PTy(bTy, 3483 PTy(bTy, 3484 PTy(F64, 3485 PTy(FTy 5, 3486 PTy(FTy 5, 3487 FTy 5))))))))))))), 3488 Apply 3489 (Call 3490 ("dfn'LoadStorePair",ATy(qTy,qTy), 3491 Var("v69", 3492 PTy(F64, 3493 PTy(CTy"MemOp", 3494 PTy(CTy"AccType", 3495 PTy(bTy, 3496 PTy(bTy, 3497 PTy(bTy, 3498 PTy(bTy, 3499 PTy(bTy, 3500 PTy(F64, 3501 PTy(FTy 5, 3502 PTy(FTy 5, 3503 FTy 5))))))))))))), 3504 qVar"state")), 3505 (Call 3506 ("LoadStoreRegister@16",CTy"LoadStore", 3507 Var("v70", 3508 PTy(F16, 3509 PTy(bTy, 3510 PTy(CTy"MemOp", 3511 PTy(bTy, 3512 PTy(FTy 5, 3513 PTy(CTy"ExtendType", 3514 PTy(nTy,PTy(FTy 5,FTy 5)))))))))), 3515 Apply 3516 (Call 3517 ("dfn'LoadStoreRegister",ATy(qTy,qTy), 3518 Var("v70", 3519 PTy(F16, 3520 PTy(bTy, 3521 PTy(CTy"MemOp", 3522 PTy(bTy, 3523 PTy(FTy 5, 3524 PTy(CTy"ExtendType", 3525 PTy(nTy,PTy(FTy 5,FTy 5)))))))))), 3526 qVar"state")), 3527 (Call 3528 ("LoadStoreRegister@32",CTy"LoadStore", 3529 Var("v71", 3530 PTy(F32, 3531 PTy(bTy, 3532 PTy(CTy"MemOp", 3533 PTy(bTy, 3534 PTy(FTy 5, 3535 PTy(CTy"ExtendType", 3536 PTy(nTy,PTy(FTy 5,FTy 5)))))))))), 3537 Apply 3538 (Call 3539 ("dfn'LoadStoreRegister",ATy(qTy,qTy), 3540 Var("v71", 3541 PTy(F32, 3542 PTy(bTy, 3543 PTy(CTy"MemOp", 3544 PTy(bTy, 3545 PTy(FTy 5, 3546 PTy(CTy"ExtendType", 3547 PTy(nTy,PTy(FTy 5,FTy 5)))))))))), 3548 qVar"state")), 3549 (Call 3550 ("LoadStoreRegister@64",CTy"LoadStore", 3551 Var("v72", 3552 PTy(F64, 3553 PTy(bTy, 3554 PTy(CTy"MemOp", 3555 PTy(bTy, 3556 PTy(FTy 5, 3557 PTy(CTy"ExtendType", 3558 PTy(nTy,PTy(FTy 5,FTy 5)))))))))), 3559 Apply 3560 (Call 3561 ("dfn'LoadStoreRegister",ATy(qTy,qTy), 3562 Var("v72", 3563 PTy(F64, 3564 PTy(bTy, 3565 PTy(CTy"MemOp", 3566 PTy(bTy, 3567 PTy(FTy 5, 3568 PTy(CTy"ExtendType", 3569 PTy(nTy,PTy(FTy 5,FTy 5)))))))))), 3570 qVar"state")), 3571 (Call 3572 ("LoadStoreRegister@8",CTy"LoadStore", 3573 Var("v73", 3574 PTy(F8, 3575 PTy(bTy, 3576 PTy(CTy"MemOp", 3577 PTy(bTy, 3578 PTy(FTy 5, 3579 PTy(CTy"ExtendType", 3580 PTy(nTy,PTy(FTy 5,FTy 5)))))))))), 3581 Apply 3582 (Call 3583 ("dfn'LoadStoreRegister",ATy(qTy,qTy), 3584 Var("v73", 3585 PTy(F8, 3586 PTy(bTy, 3587 PTy(CTy"MemOp", 3588 PTy(bTy, 3589 PTy(FTy 5, 3590 PTy(CTy"ExtendType", 3591 PTy(nTy,PTy(FTy 5,FTy 5)))))))))), 3592 qVar"state"))])), 3593 (Call("System",CTy"instruction",Var("v74",CTy"System")), 3594 CS(Var("v74",CTy"System"), 3595 [(Const("ExceptionReturn",CTy"System"), 3596 Apply 3597 (Const("dfn'ExceptionReturn",ATy(qTy,qTy)),qVar"state")), 3598 (Call("HypervisorCall",CTy"System",Var("v75",F16)), 3599 Apply 3600 (Call("dfn'HypervisorCall",ATy(qTy,qTy),Var("v75",F16)), 3601 qVar"state")), 3602 (Call 3603 ("MoveImmediateProcState",CTy"System", 3604 Var("v76",PTy(CTy"PSTATEField",F4))), 3605 Apply 3606 (Call 3607 ("dfn'MoveImmediateProcState",ATy(qTy,qTy), 3608 Var("v76",PTy(CTy"PSTATEField",F4))),qVar"state")), 3609 (Call 3610 ("MoveSystemRegister",CTy"System", 3611 Var("v77", 3612 PTy(bTy, 3613 PTy(FTy 3, 3614 PTy(FTy 3,PTy(FTy 3,PTy(F4,PTy(F4,FTy 5)))))))), 3615 Apply 3616 (Call 3617 ("dfn'MoveSystemRegister",ATy(qTy,qTy), 3618 Var("v77", 3619 PTy(bTy, 3620 PTy(FTy 3, 3621 PTy(FTy 3, 3622 PTy(FTy 3,PTy(F4,PTy(F4,FTy 5)))))))), 3623 qVar"state")), 3624 (Call("SecureMonitorCall",CTy"System",Var("v78",F16)), 3625 Apply 3626 (Call 3627 ("dfn'SecureMonitorCall",ATy(qTy,qTy),Var("v78",F16)), 3628 qVar"state")), 3629 (Call("SupervisorCall",CTy"System",Var("v79",F16)), 3630 Apply 3631 (Call("dfn'SupervisorCall",ATy(qTy,qTy),Var("v79",F16)), 3632 qVar"state")), 3633 (Call 3634 ("SystemInstruction",CTy"System", 3635 Var("v80", 3636 PTy(FTy 3,PTy(FTy 3,PTy(F4,PTy(F4,PTy(bTy,FTy 5))))))), 3637 Apply 3638 (Call 3639 ("dfn'SystemInstruction",ATy(qTy,qTy), 3640 Var("v80", 3641 PTy(FTy 3, 3642 PTy(FTy 3,PTy(F4,PTy(F4,PTy(bTy,FTy 5))))))), 3643 qVar"state"))]))]))) 3644; 3645val DecodeLogicalOp_def = Def 3646 ("DecodeLogicalOp",Var("opc",FTy 2), 3647 CS(Var("opc",FTy 2), 3648 [(LW(0,2),TP[LC("LogicalOp_AND",CTy"LogicalOp"),LF]), 3649 (LW(1,2),TP[LC("LogicalOp_ORR",CTy"LogicalOp"),LF]), 3650 (LW(2,2),TP[LC("LogicalOp_EOR",CTy"LogicalOp"),LF]), 3651 (LW(3,2),TP[LC("LogicalOp_AND",CTy"LogicalOp"),LT])])) 3652; 3653val NoOperation_def = Def0 3654 ("NoOperation", 3655 Call("Hint",CTy"instruction",LC("SystemHintOp_NOP",CTy"SystemHintOp"))) 3656; 3657val LoadStoreRegister_def = Def 3658 ("LoadStoreRegister", 3659 TP[Var("size",FTy 2),bVar"regsize_word",Var("memop",CTy"MemOp"), 3660 bVar"signed",Var("m",FTy 5),Var("extend_type",CTy"ExtendType"), 3661 nVar"shift",Var("n",FTy 5),Var("t",FTy 5)], 3662 CS(Var("size",FTy 2), 3663 [(LW(0,2), 3664 Call 3665 ("LoadStore",CTy"instruction", 3666 Call 3667 ("LoadStoreRegister@8",CTy"LoadStore", 3668 TP[LW(0,8),bVar"regsize_word",Var("memop",CTy"MemOp"), 3669 bVar"signed",Var("m",FTy 5), 3670 Var("extend_type",CTy"ExtendType"),nVar"shift", 3671 Var("n",FTy 5),Var("t",FTy 5)]))), 3672 (LW(1,2), 3673 Call 3674 ("LoadStore",CTy"instruction", 3675 Call 3676 ("LoadStoreRegister@16",CTy"LoadStore", 3677 TP[LW(1,16),bVar"regsize_word",Var("memop",CTy"MemOp"), 3678 bVar"signed",Var("m",FTy 5), 3679 Var("extend_type",CTy"ExtendType"),nVar"shift", 3680 Var("n",FTy 5),Var("t",FTy 5)]))), 3681 (LW(2,2), 3682 Call 3683 ("LoadStore",CTy"instruction", 3684 Call 3685 ("LoadStoreRegister@32",CTy"LoadStore", 3686 TP[LW(2,32),bVar"regsize_word",Var("memop",CTy"MemOp"), 3687 bVar"signed",Var("m",FTy 5), 3688 Var("extend_type",CTy"ExtendType"),nVar"shift", 3689 Var("n",FTy 5),Var("t",FTy 5)]))), 3690 (LW(3,2), 3691 Call 3692 ("LoadStore",CTy"instruction", 3693 Call 3694 ("LoadStoreRegister@64",CTy"LoadStore", 3695 TP[LW(3,64),bVar"regsize_word",Var("memop",CTy"MemOp"), 3696 bVar"signed",Var("m",FTy 5), 3697 Var("extend_type",CTy"ExtendType"),nVar"shift", 3698 Var("n",FTy 5),Var("t",FTy 5)])))])) 3699; 3700val LoadStoreImmediateN_def = Def 3701 ("LoadStoreImmediateN", 3702 TP[Var("size",FTy 2),bVar"regsize_word",Var("memop",CTy"MemOp"), 3703 Var("acctype",CTy"AccType"),bVar"signed",bVar"wb_unknown", 3704 bVar"rt_unknown",bVar"wback",bVar"postindex",bVar"unsigned_offset", 3705 Var("offset",F64),Var("n",FTy 5),Var("t",FTy 5)], 3706 CS(Var("size",FTy 2), 3707 [(LW(0,2), 3708 Call 3709 ("LoadStore",CTy"instruction", 3710 Call 3711 ("LoadStoreImmediate@8",CTy"LoadStore", 3712 TP[LW(0,8),bVar"regsize_word",Var("memop",CTy"MemOp"), 3713 Var("acctype",CTy"AccType"),bVar"signed", 3714 bVar"wb_unknown",bVar"rt_unknown",bVar"wback", 3715 bVar"postindex",bVar"unsigned_offset",Var("offset",F64), 3716 Var("n",FTy 5),Var("t",FTy 5)]))), 3717 (LW(1,2), 3718 Call 3719 ("LoadStore",CTy"instruction", 3720 Call 3721 ("LoadStoreImmediate@16",CTy"LoadStore", 3722 TP[LW(1,16),bVar"regsize_word",Var("memop",CTy"MemOp"), 3723 Var("acctype",CTy"AccType"),bVar"signed", 3724 bVar"wb_unknown",bVar"rt_unknown",bVar"wback", 3725 bVar"postindex",bVar"unsigned_offset",Var("offset",F64), 3726 Var("n",FTy 5),Var("t",FTy 5)]))), 3727 (LW(2,2), 3728 Call 3729 ("LoadStore",CTy"instruction", 3730 Call 3731 ("LoadStoreImmediate@32",CTy"LoadStore", 3732 TP[LW(2,32),bVar"regsize_word",Var("memop",CTy"MemOp"), 3733 Var("acctype",CTy"AccType"),bVar"signed", 3734 bVar"wb_unknown",bVar"rt_unknown",bVar"wback", 3735 bVar"postindex",bVar"unsigned_offset",Var("offset",F64), 3736 Var("n",FTy 5),Var("t",FTy 5)]))), 3737 (LW(3,2), 3738 Call 3739 ("LoadStore",CTy"instruction", 3740 Call 3741 ("LoadStoreImmediate@64",CTy"LoadStore", 3742 TP[LW(3,64),bVar"regsize_word",Var("memop",CTy"MemOp"), 3743 Var("acctype",CTy"AccType"),bVar"signed", 3744 bVar"wb_unknown",bVar"rt_unknown",bVar"wback", 3745 bVar"postindex",bVar"unsigned_offset",Var("offset",F64), 3746 Var("n",FTy 5),Var("t",FTy 5)])))])) 3747; 3748val LoadStoreImmediate_def = Def 3749 ("LoadStoreImmediate", 3750 TP[Var("size",FTy 2),Var("opc",FTy 2),Var("acctype",CTy"AccType"), 3751 bVar"wback",bVar"postindex",bVar"unsigned_offset",Var("offset",F64), 3752 Var("Rn",FTy 5),Var("Rt",FTy 5)], 3753 Let(TP[Var("memop",CTy"MemOp"),bVar"regsize_word",bVar"signed"], 3754 ITB([(Mop(Not,Bop(Bit,Var("opc",FTy 2),LN 1)), 3755 TP[ITE(Bop(Bit,Var("opc",FTy 2),LN 0), 3756 LC("MemOp_LOAD",CTy"MemOp"), 3757 LC("MemOp_STORE",CTy"MemOp")), 3758 Mop(Not,EQ(Var("size",FTy 2),LW(3,2))),LF]), 3759 (EQ(Var("size",FTy 2),LW(3,2)), 3760 TP[LC("MemOp_PREFETCH",CTy"MemOp"),LX bTy,LX bTy])], 3761 TP[LC("MemOp_LOAD",CTy"MemOp"),Bop(Bit,Var("opc",FTy 2),LN 0), 3762 LT]), 3763 ITB([(Bop(And, 3764 EQ(Var("memop",CTy"MemOp"),LC("MemOp_LOAD",CTy"MemOp")), 3765 Bop(And,bVar"wback", 3766 Bop(And,EQ(Var("Rn",FTy 5),Var("Rt",FTy 5)), 3767 Mop(Not,EQ(Var("Rn",FTy 5),LW(31,5)))))), 3768 CS(Apply(LX(ATy(sTy,FTy 2)),LS"LoadImmediate unpredictable"), 3769 [(LW(0,2), 3770 Call 3771 ("LoadStoreImmediateN",CTy"instruction", 3772 TP[Var("size",FTy 2),bVar"regsize_word", 3773 Var("memop",CTy"MemOp"), 3774 Var("acctype",CTy"AccType"),bVar"signed",LF,LF,LF, 3775 bVar"postindex",bVar"unsigned_offset", 3776 Var("offset",F64),Var("Rn",FTy 5),Var("Rt",FTy 5)])), 3777 (LW(1,2), 3778 Call 3779 ("LoadStoreImmediateN",CTy"instruction", 3780 TP[Var("size",FTy 2),bVar"regsize_word", 3781 Var("memop",CTy"MemOp"), 3782 Var("acctype",CTy"AccType"),bVar"signed",LT,LF, 3783 bVar"wback",bVar"postindex",bVar"unsigned_offset", 3784 Var("offset",F64),Var("Rn",FTy 5),Var("Rt",FTy 5)])), 3785 (LW(2,2),Const("Unallocated",CTy"instruction")), 3786 (LW(3,2),Const("NoOperation",CTy"instruction"))])), 3787 (Bop(And, 3788 EQ(Var("memop",CTy"MemOp"),LC("MemOp_STORE",CTy"MemOp")), 3789 Bop(And,bVar"wback", 3790 Bop(And,EQ(Var("Rn",FTy 5),Var("Rt",FTy 5)), 3791 Mop(Not,EQ(Var("Rn",FTy 5),LW(31,5)))))), 3792 CS(Apply(LX(ATy(sTy,FTy 2)),LS"StoreImmediate unpredictable"), 3793 [(LW(0,2), 3794 Call 3795 ("LoadStoreImmediateN",CTy"instruction", 3796 TP[Var("size",FTy 2),bVar"regsize_word", 3797 Var("memop",CTy"MemOp"), 3798 Var("acctype",CTy"AccType"),bVar"signed",LF,LF, 3799 bVar"wback",bVar"postindex",bVar"unsigned_offset", 3800 Var("offset",F64),Var("Rn",FTy 5),Var("Rt",FTy 5)])), 3801 (LW(1,2), 3802 Call 3803 ("LoadStoreImmediateN",CTy"instruction", 3804 TP[Var("size",FTy 2),bVar"regsize_word", 3805 Var("memop",CTy"MemOp"), 3806 Var("acctype",CTy"AccType"),bVar"signed",LF,LT, 3807 bVar"wback",bVar"postindex",bVar"unsigned_offset", 3808 Var("offset",F64),Var("Rn",FTy 5),Var("Rt",FTy 5)])), 3809 (LW(2,2),Const("Unallocated",CTy"instruction")), 3810 (LW(3,2),Const("NoOperation",CTy"instruction"))]))], 3811 Call 3812 ("LoadStoreImmediateN",CTy"instruction", 3813 TP[Var("size",FTy 2),bVar"regsize_word", 3814 Var("memop",CTy"MemOp"),Var("acctype",CTy"AccType"), 3815 bVar"signed",LF,LF,bVar"wback",bVar"postindex", 3816 bVar"unsigned_offset",Var("offset",F64),Var("Rn",FTy 5), 3817 Var("Rt",FTy 5)])))) 3818; 3819val LoadStorePairN_def = Def 3820 ("LoadStorePairN", 3821 TP[Var("sf",F1),Var("memop",CTy"MemOp"),Var("acctype",CTy"AccType"), 3822 bVar"signed",bVar"wb_unknown",bVar"rt_unknown",bVar"wback", 3823 bVar"postindex",Var("offset",F64),Var("n",FTy 5),Var("t",FTy 5), 3824 Var("t2",FTy 5)], 3825 ITE(EQ(Var("sf",F1),LW(1,1)), 3826 Call 3827 ("LoadStore",CTy"instruction", 3828 Call 3829 ("LoadStorePair@64",CTy"LoadStore", 3830 TP[LW(1,64),Var("memop",CTy"MemOp"), 3831 Var("acctype",CTy"AccType"),bVar"signed",bVar"wb_unknown", 3832 bVar"rt_unknown",bVar"wback",bVar"postindex", 3833 Var("offset",F64),Var("n",FTy 5),Var("t",FTy 5), 3834 Var("t2",FTy 5)])), 3835 Call 3836 ("LoadStore",CTy"instruction", 3837 Call 3838 ("LoadStorePair@32",CTy"LoadStore", 3839 TP[LW(0,32),Var("memop",CTy"MemOp"), 3840 Var("acctype",CTy"AccType"),bVar"signed",bVar"wb_unknown", 3841 bVar"rt_unknown",bVar"wback",bVar"postindex", 3842 Var("offset",F64),Var("n",FTy 5),Var("t",FTy 5), 3843 Var("t2",FTy 5)])))) 3844; 3845val LoadStorePair_def = Def 3846 ("LoadStorePair", 3847 TP[Var("sf",F1),Var("memop",CTy"MemOp"),Var("acctype",CTy"AccType"), 3848 bVar"signed",bVar"wback",bVar"postindex",Var("offset",F64), 3849 Var("Rn",FTy 5),Var("Rt",FTy 5),Var("Rt2",FTy 5)], 3850 ITB([(Bop(And,EQ(Var("memop",CTy"MemOp"),LC("MemOp_LOAD",CTy"MemOp")), 3851 Bop(And,bVar"wback", 3852 Bop(And, 3853 Bop(Or,EQ(Var("Rn",FTy 5),Var("Rt",FTy 5)), 3854 EQ(Var("Rn",FTy 5),Var("Rt2",FTy 5))), 3855 Mop(Not,EQ(Var("Rn",FTy 5),LW(31,5)))))), 3856 CS(Apply(LX(ATy(sTy,FTy 2)),LS"LoadPair unpredictable"), 3857 [(LW(0,2), 3858 Call 3859 ("LoadStorePairN",CTy"instruction", 3860 TP[Var("sf",F1),Var("memop",CTy"MemOp"), 3861 Var("acctype",CTy"AccType"),bVar"signed",LF,LF,LF, 3862 bVar"postindex",Var("offset",F64),Var("Rn",FTy 5), 3863 Var("Rt",FTy 5),Var("Rt2",FTy 5)])), 3864 (LW(1,2), 3865 Call 3866 ("LoadStorePairN",CTy"instruction", 3867 TP[Var("sf",F1),Var("memop",CTy"MemOp"), 3868 Var("acctype",CTy"AccType"),bVar"signed",LT,LF, 3869 bVar"wback",bVar"postindex",Var("offset",F64), 3870 Var("Rn",FTy 5),Var("Rt",FTy 5),Var("Rt2",FTy 5)])), 3871 (LW(2,2),Const("Unallocated",CTy"instruction")), 3872 (LW(3,2),Const("NoOperation",CTy"instruction"))])), 3873 (Bop(And,EQ(Var("memop",CTy"MemOp"),LC("MemOp_STORE",CTy"MemOp")), 3874 Bop(And,bVar"wback", 3875 Bop(And, 3876 Bop(Or,EQ(Var("Rn",FTy 5),Var("Rt",FTy 5)), 3877 EQ(Var("Rn",FTy 5),Var("Rt2",FTy 5))), 3878 Mop(Not,EQ(Var("Rn",FTy 5),LW(31,5)))))), 3879 CS(Apply(LX(ATy(sTy,FTy 2)),LS"StorePair unpredictable"), 3880 [(LW(0,2), 3881 Call 3882 ("LoadStorePairN",CTy"instruction", 3883 TP[Var("sf",F1),Var("memop",CTy"MemOp"), 3884 Var("acctype",CTy"AccType"),bVar"signed",LF,LF, 3885 bVar"wback",bVar"postindex",Var("offset",F64), 3886 Var("Rn",FTy 5),Var("Rt",FTy 5),Var("Rt2",FTy 5)])), 3887 (LW(1,2), 3888 Call 3889 ("LoadStorePairN",CTy"instruction", 3890 TP[Var("sf",F1),Var("memop",CTy"MemOp"), 3891 Var("acctype",CTy"AccType"),bVar"signed",LF,LT, 3892 bVar"wback",bVar"postindex",Var("offset",F64), 3893 Var("Rn",FTy 5),Var("Rt",FTy 5),Var("Rt2",FTy 5)])), 3894 (LW(2,2),Const("Unallocated",CTy"instruction")), 3895 (LW(3,2),Const("NoOperation",CTy"instruction"))])), 3896 (Bop(And,EQ(Var("memop",CTy"MemOp"),LC("MemOp_LOAD",CTy"MemOp")), 3897 EQ(Var("Rt",FTy 5),Var("Rt2",FTy 5))), 3898 CS(Apply(LX(ATy(sTy,FTy 2)),LS"LoadPair Rt = Rt2 unpredictable"), 3899 [(LW(0,2), 3900 Call 3901 ("LoadStorePairN",CTy"instruction", 3902 TP[Var("sf",F1),Var("memop",CTy"MemOp"), 3903 Var("acctype",CTy"AccType"),bVar"signed",LF,LT, 3904 bVar"wback",bVar"postindex",Var("offset",F64), 3905 Var("Rn",FTy 5),Var("Rt",FTy 5),Var("Rt2",FTy 5)])), 3906 (LW(1,2),Const("Unallocated",CTy"instruction")), 3907 (AVar(FTy 2),Const("NoOperation",CTy"instruction"))]))], 3908 Call 3909 ("LoadStorePairN",CTy"instruction", 3910 TP[Var("sf",F1),Var("memop",CTy"MemOp"), 3911 Var("acctype",CTy"AccType"),bVar"signed",LF,LF,bVar"wback", 3912 bVar"postindex",Var("offset",F64),Var("Rn",FTy 5), 3913 Var("Rt",FTy 5),Var("Rt2",FTy 5)]))) 3914; 3915val LoadStoreAcquireN_def = Def 3916 ("LoadStoreAcquireN", 3917 TP[Var("size",FTy 2),Var("memop",CTy"MemOp"), 3918 Var("acctype",CTy"AccType"),bVar"excl",bVar"pair",bVar"rn_unknown", 3919 bVar"rt_unknown",Var("s",FTy 5),Var("n",FTy 5),Var("t",FTy 5), 3920 Var("t2",FTy 5)], 3921 ITE(bVar"pair", 3922 ITE(EQ(Var("size",FTy 2),LW(2,2)), 3923 Call 3924 ("LoadStore",CTy"instruction", 3925 Call 3926 ("LoadStoreAcquirePair@64",CTy"LoadStore", 3927 TP[LW(2,64),Var("memop",CTy"MemOp"), 3928 Var("acctype",CTy"AccType"),bVar"rn_unknown", 3929 bVar"rt_unknown",Var("s",FTy 5),Var("n",FTy 5), 3930 Var("t",FTy 5),Var("t2",FTy 5)])), 3931 Call 3932 ("LoadStore",CTy"instruction", 3933 Call 3934 ("LoadStoreAcquirePair@128",CTy"LoadStore", 3935 TP[LW(3,128),Var("memop",CTy"MemOp"), 3936 Var("acctype",CTy"AccType"),bVar"rn_unknown", 3937 bVar"rt_unknown",Var("s",FTy 5),Var("n",FTy 5), 3938 Var("t",FTy 5),Var("t2",FTy 5)]))), 3939 CS(Var("size",FTy 2), 3940 [(LW(0,2), 3941 Call 3942 ("LoadStore",CTy"instruction", 3943 Call 3944 ("LoadStoreAcquire@8",CTy"LoadStore", 3945 TP[LW(0,8),Var("memop",CTy"MemOp"), 3946 Var("acctype",CTy"AccType"),bVar"excl", 3947 bVar"rn_unknown",bVar"rt_unknown",Var("s",FTy 5), 3948 Var("n",FTy 5),Var("t",FTy 5)]))), 3949 (LW(1,2), 3950 Call 3951 ("LoadStore",CTy"instruction", 3952 Call 3953 ("LoadStoreAcquire@16",CTy"LoadStore", 3954 TP[LW(1,16),Var("memop",CTy"MemOp"), 3955 Var("acctype",CTy"AccType"),bVar"excl", 3956 bVar"rn_unknown",bVar"rt_unknown",Var("s",FTy 5), 3957 Var("n",FTy 5),Var("t",FTy 5)]))), 3958 (LW(2,2), 3959 Call 3960 ("LoadStore",CTy"instruction", 3961 Call 3962 ("LoadStoreAcquire@32",CTy"LoadStore", 3963 TP[LW(2,32),Var("memop",CTy"MemOp"), 3964 Var("acctype",CTy"AccType"),bVar"excl", 3965 bVar"rn_unknown",bVar"rt_unknown",Var("s",FTy 5), 3966 Var("n",FTy 5),Var("t",FTy 5)]))), 3967 (LW(3,2), 3968 Call 3969 ("LoadStore",CTy"instruction", 3970 Call 3971 ("LoadStoreAcquire@64",CTy"LoadStore", 3972 TP[LW(3,64),Var("memop",CTy"MemOp"), 3973 Var("acctype",CTy"AccType"),bVar"excl", 3974 bVar"rn_unknown",bVar"rt_unknown",Var("s",FTy 5), 3975 Var("n",FTy 5),Var("t",FTy 5)])))]))) 3976; 3977val LoadStoreAcquire_def = Def 3978 ("LoadStoreAcquire", 3979 TP[Var("size",FTy 2),Var("memop",CTy"MemOp"), 3980 Var("acctype",CTy"AccType"),bVar"excl",bVar"pair",Var("Rs",FTy 5), 3981 Var("Rn",FTy 5),Var("Rt",FTy 5),Var("Rt2",FTy 5)], 3982 Let(TP[bVar"rt_unknown",bVar"rn_unknown", 3983 Var("ast",OTy(CTy"instruction"))], 3984 ITE(Bop(And, 3985 EQ(Var("memop",CTy"MemOp"),LC("MemOp_LOAD",CTy"MemOp")), 3986 Bop(And,bVar"pair",EQ(Var("Rt",FTy 5),Var("Rt2",FTy 5)))), 3987 CS(Apply(LX(ATy(sTy,FTy 2)),LS"LoadAcquire unpredictable"), 3988 [(LW(0,2),TP[LT,LF,LO(CTy"instruction")]), 3989 (LW(1,2), 3990 TP[LF,LF,Mop(Some,Const("Unallocated",CTy"instruction"))]), 3991 (AVar(FTy 2), 3992 TP[LF,LF,Mop(Some,Const("NoOperation",CTy"instruction"))])]), 3993 TP[LF,LF,LO(CTy"instruction")]), 3994 Let(TP[bVar"rt_unknown",bVar"rn_unknown", 3995 Var("ast",OTy(CTy"instruction"))], 3996 ITE(Bop(Or, 3997 Bop(And, 3998 EQ(Var("memop",CTy"MemOp"), 3999 LC("MemOp_STORE",CTy"MemOp")), 4000 Bop(And,bVar"excl", 4001 EQ(Var("Rs",FTy 5),Var("Rt",FTy 5)))), 4002 Bop(And,bVar"pair",EQ(Var("Rs",FTy 5),Var("Rt2",FTy 5)))), 4003 CS(Apply 4004 (LX(ATy(sTy,FTy 2)), 4005 LS"StoreAcquire Rs = Rt unpredictable"), 4006 [(LW(0,2), 4007 TP[LT,bVar"rn_unknown", 4008 Var("ast",OTy(CTy"instruction"))]), 4009 (LW(1,2), 4010 TP[bVar"rt_unknown",bVar"rn_unknown", 4011 Var("ast",OTy(CTy"instruction"))]), 4012 (LW(2,2), 4013 TP[bVar"rt_unknown",bVar"rn_unknown", 4014 Mop(Some,Const("Unallocated",CTy"instruction"))]), 4015 (LW(3,2), 4016 TP[bVar"rt_unknown",bVar"rn_unknown", 4017 Mop(Some,Const("NoOperation",CTy"instruction"))])]), 4018 TP[bVar"rt_unknown",bVar"rn_unknown", 4019 Var("ast",OTy(CTy"instruction"))]), 4020 Let(TP[bVar"rt_unknown",bVar"rn_unknown", 4021 Var("ast",OTy(CTy"instruction"))], 4022 ITE(Bop(And, 4023 EQ(Var("memop",CTy"MemOp"), 4024 LC("MemOp_STORE",CTy"MemOp")), 4025 Bop(And,bVar"excl", 4026 Bop(And,EQ(Var("Rs",FTy 5),Var("Rn",FTy 5)), 4027 Mop(Not,EQ(Var("Rn",FTy 5),LW(31,5)))))), 4028 CS(Apply 4029 (LX(ATy(sTy,FTy 2)), 4030 LS"StoreAcquire Rs = Rn unpredictable"), 4031 [(LW(0,2), 4032 TP[bVar"rt_unknown",LT, 4033 Var("ast",OTy(CTy"instruction"))]), 4034 (LW(1,2), 4035 TP[bVar"rt_unknown",bVar"rn_unknown", 4036 Var("ast",OTy(CTy"instruction"))]), 4037 (LW(2,2), 4038 TP[bVar"rt_unknown",bVar"rn_unknown", 4039 Mop(Some,Const("Unallocated",CTy"instruction"))]), 4040 (LW(3,2), 4041 TP[bVar"rt_unknown",bVar"rn_unknown", 4042 Mop(Some,Const("NoOperation",CTy"instruction"))])]), 4043 TP[bVar"rt_unknown",bVar"rn_unknown", 4044 Var("ast",OTy(CTy"instruction"))]), 4045 CS(Var("ast",OTy(CTy"instruction")), 4046 [(Mop(Some,Var("i",CTy"instruction")), 4047 Var("i",CTy"instruction")), 4048 (LO(CTy"instruction"), 4049 Call 4050 ("LoadStoreAcquireN",CTy"instruction", 4051 TP[Var("size",FTy 2),Var("memop",CTy"MemOp"), 4052 Var("acctype",CTy"AccType"),bVar"excl", 4053 bVar"pair",bVar"rn_unknown",bVar"rt_unknown", 4054 Var("Rs",FTy 5),Var("Rn",FTy 5),Var("Rt",FTy 5), 4055 Var("Rt2",FTy 5)]))]))))) 4056; 4057val Decode_def = Def 4058 ("Decode",Var("w",F32), 4059 Let(TP[bVar"b'31",bVar"b'30",bVar"b'29",bVar"b'28",bVar"b'27", 4060 bVar"b'26",bVar"b'25",bVar"b'24",bVar"b'23",bVar"b'22", 4061 bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 4062 bVar"b'16",bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", 4063 bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 4064 bVar"b'5",bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"], 4065 BL(32,Var("w",F32)), 4066 ITB([(Bop(And,bVar"b'28", 4067 Bop(And,Mop(Not,bVar"b'27"), 4068 Bop(And,Mop(Not,bVar"b'26"), 4069 Bop(And,Mop(Not,bVar"b'25"),Mop(Not,bVar"b'24"))))), 4070 Let(Var("immhi",FTy 19), 4071 Mop(Cast(FTy 19), 4072 LL[bVar"b'23",bVar"b'22",bVar"b'21",bVar"b'20", 4073 bVar"b'19",bVar"b'18",bVar"b'17",bVar"b'16", 4074 bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", 4075 bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8", 4076 bVar"b'7",bVar"b'6",bVar"b'5"]), 4077 Let(Var("immlo",FTy 2), 4078 Mop(Cast(FTy 2),LL[bVar"b'30",bVar"b'29"]), 4079 Let(bVar"page", 4080 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'31"])), 4081 Call 4082 ("Address",CTy"instruction", 4083 TP[bVar"page", 4084 ITE(bVar"page", 4085 Mop(SE F64, 4086 CC[Var("immhi",FTy 19), 4087 Var("immlo",FTy 2),LW(0,12)]), 4088 Mop(SE F64, 4089 CC[Var("immhi",FTy 19), 4090 Var("immlo",FTy 2)])), 4091 Mop(Cast(FTy 5), 4092 LL[bVar"b'4",bVar"b'3",bVar"b'2", 4093 bVar"b'1",bVar"b'0"])]))))), 4094 (Bop(And,Mop(Not,bVar"b'28"), 4095 Bop(And,bVar"b'27", 4096 Bop(And,Mop(Not,bVar"b'26"), 4097 Bop(And,bVar"b'25", 4098 Bop(And,bVar"b'24", 4099 Bop(And,bVar"b'23", 4100 Bop(And,bVar"b'22", 4101 Mop(Not,bVar"b'21")))))))), 4102 Const("Reserved",CTy"instruction")), 4103 (Bop(And,Mop(Not,bVar"b'31"), 4104 Bop(And,Mop(Not,bVar"b'28"), 4105 Bop(And,bVar"b'27", 4106 Bop(And,Mop(Not,bVar"b'26"), 4107 Bop(And,bVar"b'25", 4108 Bop(And,bVar"b'24",Mop(Not,bVar"b'21"))))))), 4109 Let(Var("imm6",FTy 6), 4110 Mop(Cast(FTy 6), 4111 LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", 4112 bVar"b'11",bVar"b'10"]), 4113 ITE(Bop(Bit,Var("imm6",FTy 6),LN 5), 4114 Const("Reserved",CTy"instruction"), 4115 Call 4116 ("Data",CTy"instruction", 4117 Call 4118 ("AddSubShiftedRegister@32",CTy"Data", 4119 TP[LW(0,32), 4120 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'30"])), 4121 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'29"])), 4122 Call 4123 ("DecodeShift",CTy"ShiftType", 4124 Mop(Cast(FTy 2),LL[bVar"b'23",bVar"b'22"])), 4125 Mop(Cast(FTy 5), 4126 LL[bVar"b'20",bVar"b'19",bVar"b'18", 4127 bVar"b'17",bVar"b'16"]), 4128 Var("imm6",FTy 6), 4129 Mop(Cast(FTy 5), 4130 LL[bVar"b'9",bVar"b'8",bVar"b'7", 4131 bVar"b'6",bVar"b'5"]), 4132 Mop(Cast(FTy 5), 4133 LL[bVar"b'4",bVar"b'3",bVar"b'2", 4134 bVar"b'1",bVar"b'0"])]))))), 4135 (Bop(And,bVar"b'31", 4136 Bop(And,Mop(Not,bVar"b'28"), 4137 Bop(And,bVar"b'27", 4138 Bop(And,Mop(Not,bVar"b'26"), 4139 Bop(And,bVar"b'25", 4140 Bop(And,bVar"b'24",Mop(Not,bVar"b'21"))))))), 4141 Call 4142 ("Data",CTy"instruction", 4143 Call 4144 ("AddSubShiftedRegister@64",CTy"Data", 4145 TP[LW(1,64),Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'30"])), 4146 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'29"])), 4147 Call 4148 ("DecodeShift",CTy"ShiftType", 4149 Mop(Cast(FTy 2),LL[bVar"b'23",bVar"b'22"])), 4150 Mop(Cast(FTy 5), 4151 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 4152 bVar"b'16"]), 4153 Mop(Cast(FTy 6), 4154 LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", 4155 bVar"b'11",bVar"b'10"]), 4156 Mop(Cast(FTy 5), 4157 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 4158 bVar"b'5"]), 4159 Mop(Cast(FTy 5), 4160 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 4161 bVar"b'0"])]))), 4162 (Bop(And,Mop(Not,bVar"b'31"), 4163 Bop(And,Mop(Not,bVar"b'28"), 4164 Bop(And,bVar"b'27", 4165 Bop(And,Mop(Not,bVar"b'26"), 4166 Bop(And,bVar"b'25", 4167 Bop(And,bVar"b'24", 4168 Bop(And,Mop(Not,bVar"b'23"), 4169 Bop(And,Mop(Not,bVar"b'22"), 4170 bVar"b'21")))))))), 4171 Let(Var("imm3",FTy 3), 4172 Mop(Cast(FTy 3),LL[bVar"b'12",bVar"b'11",bVar"b'10"]), 4173 ITE(Bop(Ugt,Var("imm3",FTy 3),LW(4,3)), 4174 Const("Reserved",CTy"instruction"), 4175 Call 4176 ("Data",CTy"instruction", 4177 Call 4178 ("AddSubExtendRegister@32",CTy"Data", 4179 TP[LW(0,32), 4180 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'30"])), 4181 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'29"])), 4182 Mop(Cast(FTy 5), 4183 LL[bVar"b'20",bVar"b'19",bVar"b'18", 4184 bVar"b'17",bVar"b'16"]), 4185 Call 4186 ("DecodeRegExtend",CTy"ExtendType", 4187 Mop(Cast(FTy 3), 4188 LL[bVar"b'15",bVar"b'14",bVar"b'13"])), 4189 Var("imm3",FTy 3), 4190 Mop(Cast(FTy 5), 4191 LL[bVar"b'9",bVar"b'8",bVar"b'7", 4192 bVar"b'6",bVar"b'5"]), 4193 Mop(Cast(FTy 5), 4194 LL[bVar"b'4",bVar"b'3",bVar"b'2", 4195 bVar"b'1",bVar"b'0"])]))))), 4196 (Bop(And,bVar"b'31", 4197 Bop(And,Mop(Not,bVar"b'28"), 4198 Bop(And,bVar"b'27", 4199 Bop(And,Mop(Not,bVar"b'26"), 4200 Bop(And,bVar"b'25", 4201 Bop(And,bVar"b'24", 4202 Bop(And,Mop(Not,bVar"b'23"), 4203 Bop(And,Mop(Not,bVar"b'22"), 4204 bVar"b'21")))))))), 4205 Let(Var("imm3",FTy 3), 4206 Mop(Cast(FTy 3),LL[bVar"b'12",bVar"b'11",bVar"b'10"]), 4207 ITE(Bop(Ugt,Var("imm3",FTy 3),LW(4,3)), 4208 Const("Reserved",CTy"instruction"), 4209 Call 4210 ("Data",CTy"instruction", 4211 Call 4212 ("AddSubExtendRegister@64",CTy"Data", 4213 TP[LW(1,64), 4214 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'30"])), 4215 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'29"])), 4216 Mop(Cast(FTy 5), 4217 LL[bVar"b'20",bVar"b'19",bVar"b'18", 4218 bVar"b'17",bVar"b'16"]), 4219 Call 4220 ("DecodeRegExtend",CTy"ExtendType", 4221 Mop(Cast(FTy 3), 4222 LL[bVar"b'15",bVar"b'14",bVar"b'13"])), 4223 Var("imm3",FTy 3), 4224 Mop(Cast(FTy 5), 4225 LL[bVar"b'9",bVar"b'8",bVar"b'7", 4226 bVar"b'6",bVar"b'5"]), 4227 Mop(Cast(FTy 5), 4228 LL[bVar"b'4",bVar"b'3",bVar"b'2", 4229 bVar"b'1",bVar"b'0"])]))))), 4230 (Bop(And,bVar"b'28", 4231 Bop(And,Mop(Not,bVar"b'27"), 4232 Bop(And,Mop(Not,bVar"b'26"), 4233 Bop(And,Mop(Not,bVar"b'25"), 4234 Bop(And,bVar"b'24",bVar"b'23"))))), 4235 Const("Reserved",CTy"instruction")), 4236 (Bop(And,Mop(Not,bVar"b'31"), 4237 Bop(And,bVar"b'28", 4238 Bop(And,Mop(Not,bVar"b'27"), 4239 Bop(And,Mop(Not,bVar"b'26"), 4240 Bop(And,Mop(Not,bVar"b'25"),bVar"b'24"))))), 4241 Let(Var("imm12",FTy 12), 4242 Mop(Cast(FTy 12), 4243 LL[bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18", 4244 bVar"b'17",bVar"b'16",bVar"b'15",bVar"b'14", 4245 bVar"b'13",bVar"b'12",bVar"b'11",bVar"b'10"]), 4246 Call 4247 ("Data",CTy"instruction", 4248 Call 4249 ("AddSubImmediate@32",CTy"Data", 4250 TP[LW(0,32), 4251 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'30"])), 4252 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'29"])), 4253 ITE(EQ(Mop(Cast(FTy 2),LL[bVar"b'23",bVar"b'22"]), 4254 LW(0,2)), 4255 Mop(Cast F32,Var("imm12",FTy 12)), 4256 Bop(Lsl,Mop(Cast F32,Var("imm12",FTy 12)), 4257 LN 12)), 4258 Mop(Cast(FTy 5), 4259 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 4260 bVar"b'5"]), 4261 Mop(Cast(FTy 5), 4262 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 4263 bVar"b'0"])])))), 4264 (Bop(And,bVar"b'31", 4265 Bop(And,bVar"b'28", 4266 Bop(And,Mop(Not,bVar"b'27"), 4267 Bop(And,Mop(Not,bVar"b'26"), 4268 Bop(And,Mop(Not,bVar"b'25"),bVar"b'24"))))), 4269 Let(Var("imm12",FTy 12), 4270 Mop(Cast(FTy 12), 4271 LL[bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18", 4272 bVar"b'17",bVar"b'16",bVar"b'15",bVar"b'14", 4273 bVar"b'13",bVar"b'12",bVar"b'11",bVar"b'10"]), 4274 Call 4275 ("Data",CTy"instruction", 4276 Call 4277 ("AddSubImmediate@64",CTy"Data", 4278 TP[LW(1,64), 4279 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'30"])), 4280 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'29"])), 4281 ITE(EQ(Mop(Cast(FTy 2),LL[bVar"b'23",bVar"b'22"]), 4282 LW(0,2)), 4283 Mop(Cast F64,Var("imm12",FTy 12)), 4284 Bop(Lsl,Mop(Cast F64,Var("imm12",FTy 12)), 4285 LN 12)), 4286 Mop(Cast(FTy 5), 4287 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 4288 bVar"b'5"]), 4289 Mop(Cast(FTy 5), 4290 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 4291 bVar"b'0"])])))), 4292 (Bop(And,Mop(Not,bVar"b'31"), 4293 Bop(And,bVar"b'28", 4294 Bop(And,bVar"b'27", 4295 Bop(And,Mop(Not,bVar"b'26"), 4296 Bop(And,bVar"b'25", 4297 Bop(And,Mop(Not,bVar"b'24"), 4298 Bop(And,Mop(Not,bVar"b'23"), 4299 Bop(And,Mop(Not,bVar"b'22"), 4300 Bop(And,Mop(Not,bVar"b'21"), 4301 Bop(And, 4302 Mop(Not,bVar"b'15"), 4303 Bop(And, 4304 Mop(Not, 4305 bVar"b'14"), 4306 Bop(And, 4307 Mop(Not, 4308 bVar"b'13"), 4309 Bop(And, 4310 Mop(Not, 4311 bVar"b'12"), 4312 Bop(And, 4313 Mop(Not, 4314 bVar"b'11"), 4315 Mop(Not, 4316 bVar"b'10"))))))))))))))), 4317 Call 4318 ("Data",CTy"instruction", 4319 Call 4320 ("AddSubCarry@32",CTy"Data", 4321 TP[LW(0,32),Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'30"])), 4322 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'29"])), 4323 Mop(Cast(FTy 5), 4324 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 4325 bVar"b'16"]), 4326 Mop(Cast(FTy 5), 4327 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 4328 bVar"b'5"]), 4329 Mop(Cast(FTy 5), 4330 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 4331 bVar"b'0"])]))), 4332 (Bop(And,bVar"b'31", 4333 Bop(And,bVar"b'28", 4334 Bop(And,bVar"b'27", 4335 Bop(And,Mop(Not,bVar"b'26"), 4336 Bop(And,bVar"b'25", 4337 Bop(And,Mop(Not,bVar"b'24"), 4338 Bop(And,Mop(Not,bVar"b'23"), 4339 Bop(And,Mop(Not,bVar"b'22"), 4340 Bop(And,Mop(Not,bVar"b'21"), 4341 Bop(And, 4342 Mop(Not,bVar"b'15"), 4343 Bop(And, 4344 Mop(Not, 4345 bVar"b'14"), 4346 Bop(And, 4347 Mop(Not, 4348 bVar"b'13"), 4349 Bop(And, 4350 Mop(Not, 4351 bVar"b'12"), 4352 Bop(And, 4353 Mop(Not, 4354 bVar"b'11"), 4355 Mop(Not, 4356 bVar"b'10"))))))))))))))), 4357 Call 4358 ("Data",CTy"instruction", 4359 Call 4360 ("AddSubCarry@64",CTy"Data", 4361 TP[LW(1,64),Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'30"])), 4362 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'29"])), 4363 Mop(Cast(FTy 5), 4364 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 4365 bVar"b'16"]), 4366 Mop(Cast(FTy 5), 4367 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 4368 bVar"b'5"]), 4369 Mop(Cast(FTy 5), 4370 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 4371 bVar"b'0"])]))), 4372 (Bop(And,Mop(Not,bVar"b'31"), 4373 Bop(And,Mop(Not,bVar"b'28"), 4374 Bop(And,bVar"b'27", 4375 Bop(And,Mop(Not,bVar"b'26"), 4376 Bop(And,bVar"b'25",Mop(Not,bVar"b'24")))))), 4377 Let(Var("imm6",FTy 6), 4378 Mop(Cast(FTy 6), 4379 LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", 4380 bVar"b'11",bVar"b'10"]), 4381 ITE(Bop(Bit,Var("imm6",FTy 6),LN 5), 4382 Const("Reserved",CTy"instruction"), 4383 Let(TP[Var("opc",CTy"LogicalOp"),bVar"setflags"], 4384 Call 4385 ("DecodeLogicalOp",PTy(CTy"LogicalOp",bTy), 4386 Mop(Cast(FTy 2),LL[bVar"b'30",bVar"b'29"])), 4387 Call 4388 ("Data",CTy"instruction", 4389 Call 4390 ("LogicalShiftedRegister@32",CTy"Data", 4391 TP[LW(0,32),Var("opc",CTy"LogicalOp"), 4392 EQ(Mop(Cast F1,LL[bVar"b'21"]),LW(1,1)), 4393 bVar"setflags", 4394 Call 4395 ("DecodeShift",CTy"ShiftType", 4396 Mop(Cast(FTy 2), 4397 LL[bVar"b'23",bVar"b'22"])), 4398 Mop(Cast nTy,Var("imm6",FTy 6)), 4399 Mop(Cast(FTy 5), 4400 LL[bVar"b'20",bVar"b'19",bVar"b'18", 4401 bVar"b'17",bVar"b'16"]), 4402 Mop(Cast(FTy 5), 4403 LL[bVar"b'9",bVar"b'8",bVar"b'7", 4404 bVar"b'6",bVar"b'5"]), 4405 Mop(Cast(FTy 5), 4406 LL[bVar"b'4",bVar"b'3",bVar"b'2", 4407 bVar"b'1",bVar"b'0"])])))))), 4408 (Bop(And,bVar"b'31", 4409 Bop(And,Mop(Not,bVar"b'28"), 4410 Bop(And,bVar"b'27", 4411 Bop(And,Mop(Not,bVar"b'26"), 4412 Bop(And,bVar"b'25",Mop(Not,bVar"b'24")))))), 4413 Let(TP[Var("opc",CTy"LogicalOp"),bVar"setflags"], 4414 Call 4415 ("DecodeLogicalOp",PTy(CTy"LogicalOp",bTy), 4416 Mop(Cast(FTy 2),LL[bVar"b'30",bVar"b'29"])), 4417 Call 4418 ("Data",CTy"instruction", 4419 Call 4420 ("LogicalShiftedRegister@64",CTy"Data", 4421 TP[LW(1,64),Var("opc",CTy"LogicalOp"), 4422 EQ(Mop(Cast F1,LL[bVar"b'21"]),LW(1,1)), 4423 bVar"setflags", 4424 Call 4425 ("DecodeShift",CTy"ShiftType", 4426 Mop(Cast(FTy 2),LL[bVar"b'23",bVar"b'22"])), 4427 Mop(Cast nTy, 4428 Mop(Cast(FTy 6), 4429 LL[bVar"b'15",bVar"b'14",bVar"b'13", 4430 bVar"b'12",bVar"b'11",bVar"b'10"])), 4431 Mop(Cast(FTy 5), 4432 LL[bVar"b'20",bVar"b'19",bVar"b'18", 4433 bVar"b'17",bVar"b'16"]), 4434 Mop(Cast(FTy 5), 4435 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 4436 bVar"b'5"]), 4437 Mop(Cast(FTy 5), 4438 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 4439 bVar"b'0"])])))), 4440 (Bop(And,Mop(Not,bVar"b'31"), 4441 Bop(And,bVar"b'28", 4442 Bop(And,Mop(Not,bVar"b'27"), 4443 Bop(And,Mop(Not,bVar"b'26"), 4444 Bop(And,bVar"b'25", 4445 Bop(And,Mop(Not,bVar"b'24"), 4446 Bop(And,Mop(Not,bVar"b'23"), 4447 bVar"b'22"))))))), 4448 Const("Reserved",CTy"instruction")), 4449 (Bop(And,Mop(Not,bVar"b'31"), 4450 Bop(And,bVar"b'28", 4451 Bop(And,Mop(Not,bVar"b'27"), 4452 Bop(And,Mop(Not,bVar"b'26"), 4453 Bop(And,bVar"b'25", 4454 Bop(And,Mop(Not,bVar"b'24"), 4455 Mop(Not,bVar"b'23"))))))), 4456 CS(Call 4457 ("DecodeBitMasks",OTy(PTy(F32,F32)), 4458 TP[Mop(Cast F1,LL[bVar"b'22"]), 4459 Mop(Cast(FTy 6), 4460 LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", 4461 bVar"b'11",bVar"b'10"]), 4462 Mop(Cast(FTy 6), 4463 LL[bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18", 4464 bVar"b'17",bVar"b'16"]),LT]), 4465 [(Mop(Some,TP[Var("imm",F32),AVar F32]), 4466 Let(TP[Var("opc",CTy"LogicalOp"),bVar"setflags"], 4467 Call 4468 ("DecodeLogicalOp",PTy(CTy"LogicalOp",bTy), 4469 Mop(Cast(FTy 2),LL[bVar"b'30",bVar"b'29"])), 4470 Call 4471 ("Data",CTy"instruction", 4472 Call 4473 ("LogicalImmediate@32",CTy"Data", 4474 TP[LW(0,32),Var("opc",CTy"LogicalOp"), 4475 bVar"setflags",Var("imm",F32), 4476 Mop(Cast(FTy 5), 4477 LL[bVar"b'9",bVar"b'8",bVar"b'7", 4478 bVar"b'6",bVar"b'5"]), 4479 Mop(Cast(FTy 5), 4480 LL[bVar"b'4",bVar"b'3",bVar"b'2", 4481 bVar"b'1",bVar"b'0"])])))), 4482 (LO(PTy(F32,F32)),Const("Reserved",CTy"instruction"))])), 4483 (Bop(And,bVar"b'31", 4484 Bop(And,bVar"b'28", 4485 Bop(And,Mop(Not,bVar"b'27"), 4486 Bop(And,Mop(Not,bVar"b'26"), 4487 Bop(And,bVar"b'25", 4488 Bop(And,Mop(Not,bVar"b'24"), 4489 Mop(Not,bVar"b'23"))))))), 4490 CS(Call 4491 ("DecodeBitMasks",OTy(PTy(F64,F64)), 4492 TP[Mop(Cast F1,LL[bVar"b'22"]), 4493 Mop(Cast(FTy 6), 4494 LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", 4495 bVar"b'11",bVar"b'10"]), 4496 Mop(Cast(FTy 6), 4497 LL[bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18", 4498 bVar"b'17",bVar"b'16"]),LT]), 4499 [(Mop(Some,TP[Var("imm",F64),AVar F64]), 4500 Let(TP[Var("opc",CTy"LogicalOp"),bVar"setflags"], 4501 Call 4502 ("DecodeLogicalOp",PTy(CTy"LogicalOp",bTy), 4503 Mop(Cast(FTy 2),LL[bVar"b'30",bVar"b'29"])), 4504 Call 4505 ("Data",CTy"instruction", 4506 Call 4507 ("LogicalImmediate@64",CTy"Data", 4508 TP[LW(1,64),Var("opc",CTy"LogicalOp"), 4509 bVar"setflags",Var("imm",F64), 4510 Mop(Cast(FTy 5), 4511 LL[bVar"b'9",bVar"b'8",bVar"b'7", 4512 bVar"b'6",bVar"b'5"]), 4513 Mop(Cast(FTy 5), 4514 LL[bVar"b'4",bVar"b'3",bVar"b'2", 4515 bVar"b'1",bVar"b'0"])])))), 4516 (LO(PTy(F64,F64)),Const("Reserved",CTy"instruction"))])), 4517 (Bop(And,Mop(Not,bVar"b'31"), 4518 Bop(And,Mop(Not,bVar"b'30"), 4519 Bop(And,Mop(Not,bVar"b'29"), 4520 Bop(And,bVar"b'28", 4521 Bop(And,bVar"b'27", 4522 Bop(And,Mop(Not,bVar"b'26"), 4523 Bop(And,bVar"b'25", 4524 Bop(And,Mop(Not,bVar"b'24"), 4525 Bop(And,bVar"b'23", 4526 Bop(And,bVar"b'22", 4527 Bop(And, 4528 Mop(Not, 4529 bVar"b'21"), 4530 Bop(And, 4531 Mop(Not, 4532 bVar"b'15"), 4533 Bop(And, 4534 Mop(Not, 4535 bVar"b'14"), 4536 Bop(And, 4537 bVar"b'13", 4538 Mop(Not, 4539 bVar"b'12"))))))))))))))), 4540 Call 4541 ("Data",CTy"instruction", 4542 Call 4543 ("Shift@32",CTy"Data", 4544 TP[LW(0,32), 4545 Call 4546 ("DecodeShift",CTy"ShiftType", 4547 Mop(Cast(FTy 2),LL[bVar"b'11",bVar"b'10"])), 4548 Mop(Cast(FTy 5), 4549 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 4550 bVar"b'16"]), 4551 Mop(Cast(FTy 5), 4552 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 4553 bVar"b'5"]), 4554 Mop(Cast(FTy 5), 4555 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 4556 bVar"b'0"])]))), 4557 (Bop(And,bVar"b'31", 4558 Bop(And,Mop(Not,bVar"b'30"), 4559 Bop(And,Mop(Not,bVar"b'29"), 4560 Bop(And,bVar"b'28", 4561 Bop(And,bVar"b'27", 4562 Bop(And,Mop(Not,bVar"b'26"), 4563 Bop(And,bVar"b'25", 4564 Bop(And,Mop(Not,bVar"b'24"), 4565 Bop(And,bVar"b'23", 4566 Bop(And,bVar"b'22", 4567 Bop(And, 4568 Mop(Not, 4569 bVar"b'21"), 4570 Bop(And, 4571 Mop(Not, 4572 bVar"b'15"), 4573 Bop(And, 4574 Mop(Not, 4575 bVar"b'14"), 4576 Bop(And, 4577 bVar"b'13", 4578 Mop(Not, 4579 bVar"b'12"))))))))))))))), 4580 Call 4581 ("Data",CTy"instruction", 4582 Call 4583 ("Shift@64",CTy"Data", 4584 TP[LW(1,64), 4585 Call 4586 ("DecodeShift",CTy"ShiftType", 4587 Mop(Cast(FTy 2),LL[bVar"b'11",bVar"b'10"])), 4588 Mop(Cast(FTy 5), 4589 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 4590 bVar"b'16"]), 4591 Mop(Cast(FTy 5), 4592 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 4593 bVar"b'5"]), 4594 Mop(Cast(FTy 5), 4595 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 4596 bVar"b'0"])]))), 4597 (Bop(And,Mop(Not,bVar"b'31"), 4598 Bop(And,bVar"b'28", 4599 Bop(And,Mop(Not,bVar"b'27"), 4600 Bop(And,Mop(Not,bVar"b'26"), 4601 Bop(And,bVar"b'25", 4602 Bop(And,Mop(Not,bVar"b'24"), 4603 Bop(And,bVar"b'23",bVar"b'22"))))))), 4604 Const("Unallocated",CTy"instruction")), 4605 (Bop(And,Mop(Not,bVar"b'30"), 4606 Bop(And,bVar"b'29", 4607 Bop(And,bVar"b'28", 4608 Bop(And,Mop(Not,bVar"b'27"), 4609 Bop(And,Mop(Not,bVar"b'26"), 4610 Bop(And,bVar"b'25", 4611 Bop(And,Mop(Not,bVar"b'24"), 4612 bVar"b'23"))))))), 4613 Const("Unallocated",CTy"instruction")), 4614 (Bop(And,bVar"b'28", 4615 Bop(And,Mop(Not,bVar"b'27"), 4616 Bop(And,Mop(Not,bVar"b'26"), 4617 Bop(And,bVar"b'25", 4618 Bop(And,Mop(Not,bVar"b'24"),bVar"b'23"))))), 4619 Let(Var("Rd",FTy 5), 4620 Mop(Cast(FTy 5), 4621 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"]), 4622 Let(Var("imm16",F16), 4623 Mop(Cast F16, 4624 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 4625 bVar"b'16",bVar"b'15",bVar"b'14",bVar"b'13", 4626 bVar"b'12",bVar"b'11",bVar"b'10",bVar"b'9", 4627 bVar"b'8",bVar"b'7",bVar"b'6",bVar"b'5"]), 4628 Let(Var("hw",FTy 2), 4629 Mop(Cast(FTy 2),LL[bVar"b'22",bVar"b'21"]), 4630 Let(Var("opcode",CTy"MoveWideOp"), 4631 CS(Mop(Cast(FTy 2),LL[bVar"b'30",bVar"b'29"]), 4632 [(LW(0,2), 4633 LC("MoveWideOp_N",CTy"MoveWideOp")), 4634 (LW(2,2), 4635 LC("MoveWideOp_Z",CTy"MoveWideOp")), 4636 (LW(3,2), 4637 LC("MoveWideOp_K",CTy"MoveWideOp")), 4638 (LW(1,2),LX(CTy"MoveWideOp"))]), 4639 ITE(EQ(Mop(Cast F1,LL[bVar"b'31"]),LW(1,1)), 4640 Call 4641 ("Data",CTy"instruction", 4642 Call 4643 ("MoveWide@64",CTy"Data", 4644 TP[LW(1,64), 4645 Var("opcode",CTy"MoveWideOp"), 4646 Var("hw",FTy 2), 4647 Var("imm16",F16),Var("Rd",FTy 5)])), 4648 Call 4649 ("Data",CTy"instruction", 4650 Call 4651 ("MoveWide@32",CTy"Data", 4652 TP[LW(0,32), 4653 Var("opcode",CTy"MoveWideOp"), 4654 Var("hw",FTy 2), 4655 Var("imm16",F16),Var("Rd",FTy 5)])))))))), 4656 (Bop(And,bVar"b'30", 4657 Bop(And,bVar"b'29", 4658 Bop(And,bVar"b'28", 4659 Bop(And,Mop(Not,bVar"b'27"), 4660 Bop(And,Mop(Not,bVar"b'26"), 4661 Bop(And,bVar"b'25", 4662 Bop(And,bVar"b'24", 4663 Mop(Not,bVar"b'23")))))))), 4664 Const("Unallocated",CTy"instruction")), 4665 (Bop(And,Mop(Not,bVar"b'31"), 4666 Bop(And,bVar"b'28", 4667 Bop(And,Mop(Not,bVar"b'27"), 4668 Bop(And,Mop(Not,bVar"b'26"), 4669 Bop(And,bVar"b'25", 4670 Bop(And,bVar"b'24",Mop(Not,bVar"b'23"))))))), 4671 Let(Var("imms",FTy 6), 4672 Mop(Cast(FTy 6), 4673 LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", 4674 bVar"b'11",bVar"b'10"]), 4675 Let(Var("immr",FTy 6), 4676 Mop(Cast(FTy 6), 4677 LL[bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18", 4678 bVar"b'17",bVar"b'16"]), 4679 Let(Var("N",F1),Mop(Cast F1,LL[bVar"b'22"]), 4680 ITE(Bop(Or,EQ(Var("N",F1),LW(1,1)), 4681 Bop(Or,Bop(Bit,Var("immr",FTy 6),LN 5), 4682 Bop(Bit,Var("imms",FTy 6),LN 5))), 4683 Const("Reserved",CTy"instruction"), 4684 Let(TP[bVar"inzero",bVar"extend"], 4685 CS(Mop(Cast(FTy 2), 4686 LL[bVar"b'30",bVar"b'29"]), 4687 [(LW(0,2),TP[LT,LT]), 4688 (LW(1,2),TP[LF,LF]), 4689 (LW(2,2),TP[LT,LF]), 4690 (AVar(FTy 2),LX(PTy(bTy,bTy)))]), 4691 CS(Call 4692 ("DecodeBitMasks",OTy(PTy(F32,F32)), 4693 TP[Var("N",F1),Var("imms",FTy 6), 4694 Var("immr",FTy 6),LF]), 4695 [(Mop(Some, 4696 TP[Var("wmask",F32), 4697 Var("tmask",F32)]), 4698 Call 4699 ("Data",CTy"instruction", 4700 Call 4701 ("BitfieldMove@32",CTy"Data", 4702 TP[LW(0,32),bVar"inzero", 4703 bVar"extend", 4704 Var("wmask",F32), 4705 Var("tmask",F32), 4706 Mop(Cast nTy, 4707 Var("immr",FTy 6)), 4708 Mop(Cast nTy, 4709 Var("imms",FTy 6)), 4710 Mop(Cast(FTy 5), 4711 LL[bVar"b'9",bVar"b'8", 4712 bVar"b'7",bVar"b'6", 4713 bVar"b'5"]), 4714 Mop(Cast(FTy 5), 4715 LL[bVar"b'4",bVar"b'3", 4716 bVar"b'2",bVar"b'1", 4717 bVar"b'0"])]))), 4718 (LO(PTy(F32,F32)), 4719 Const("Reserved",CTy"instruction"))]))))))), 4720 (Bop(And,bVar"b'31", 4721 Bop(And,bVar"b'28", 4722 Bop(And,Mop(Not,bVar"b'27"), 4723 Bop(And,Mop(Not,bVar"b'26"), 4724 Bop(And,bVar"b'25", 4725 Bop(And,bVar"b'24",Mop(Not,bVar"b'23"))))))), 4726 Let(Var("imms",FTy 6), 4727 Mop(Cast(FTy 6), 4728 LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", 4729 bVar"b'11",bVar"b'10"]), 4730 Let(Var("immr",FTy 6), 4731 Mop(Cast(FTy 6), 4732 LL[bVar"b'21",bVar"b'20",bVar"b'19",bVar"b'18", 4733 bVar"b'17",bVar"b'16"]), 4734 Let(Var("N",F1),Mop(Cast F1,LL[bVar"b'22"]), 4735 ITE(EQ(Var("N",F1),LW(0,1)), 4736 Const("Reserved",CTy"instruction"), 4737 Let(TP[bVar"inzero",bVar"extend"], 4738 CS(Mop(Cast(FTy 2), 4739 LL[bVar"b'30",bVar"b'29"]), 4740 [(LW(0,2),TP[LT,LT]), 4741 (LW(1,2),TP[LF,LF]), 4742 (LW(2,2),TP[LT,LF]), 4743 (AVar(FTy 2),LX(PTy(bTy,bTy)))]), 4744 CS(Call 4745 ("DecodeBitMasks",OTy(PTy(F64,F64)), 4746 TP[Var("N",F1),Var("imms",FTy 6), 4747 Var("immr",FTy 6),LF]), 4748 [(Mop(Some, 4749 TP[Var("wmask",F64), 4750 Var("tmask",F64)]), 4751 Call 4752 ("Data",CTy"instruction", 4753 Call 4754 ("BitfieldMove@64",CTy"Data", 4755 TP[LW(1,64),bVar"inzero", 4756 bVar"extend", 4757 Var("wmask",F64), 4758 Var("tmask",F64), 4759 Mop(Cast nTy, 4760 Var("immr",FTy 6)), 4761 Mop(Cast nTy, 4762 Var("imms",FTy 6)), 4763 Mop(Cast(FTy 5), 4764 LL[bVar"b'9",bVar"b'8", 4765 bVar"b'7",bVar"b'6", 4766 bVar"b'5"]), 4767 Mop(Cast(FTy 5), 4768 LL[bVar"b'4",bVar"b'3", 4769 bVar"b'2",bVar"b'1", 4770 bVar"b'0"])]))), 4771 (LO(PTy(F64,F64)), 4772 Const("Reserved",CTy"instruction"))]))))))), 4773 (Bop(And,Mop(Not,bVar"b'31"), 4774 Bop(And,bVar"b'29", 4775 Bop(And,bVar"b'28", 4776 Bop(And,bVar"b'27", 4777 Bop(And,Mop(Not,bVar"b'26"), 4778 Bop(And,bVar"b'25", 4779 Bop(And,Mop(Not,bVar"b'24"), 4780 Bop(And,Mop(Not,bVar"b'23"), 4781 Bop(And,bVar"b'22", 4782 Bop(And, 4783 Mop(Not,bVar"b'21"), 4784 Bop(And,bVar"b'11", 4785 Bop(And, 4786 Mop(Not, 4787 bVar"b'10"), 4788 Mop(Not, 4789 bVar"b'4"))))))))))))), 4790 Call 4791 ("Data",CTy"instruction", 4792 Call 4793 ("ConditionalCompareImmediate@32",CTy"Data", 4794 TP[LW(0,32),Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'30"])), 4795 Mop(Cast F32, 4796 Mop(Cast(FTy 5), 4797 LL[bVar"b'20",bVar"b'19",bVar"b'18", 4798 bVar"b'17",bVar"b'16"])), 4799 Mop(Cast F4, 4800 LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12"]), 4801 TP[Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'3"])), 4802 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'2"])), 4803 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'1"])), 4804 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'0"]))], 4805 Mop(Cast(FTy 5), 4806 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 4807 bVar"b'5"])]))), 4808 (Bop(And,bVar"b'31", 4809 Bop(And,bVar"b'29", 4810 Bop(And,bVar"b'28", 4811 Bop(And,bVar"b'27", 4812 Bop(And,Mop(Not,bVar"b'26"), 4813 Bop(And,bVar"b'25", 4814 Bop(And,Mop(Not,bVar"b'24"), 4815 Bop(And,Mop(Not,bVar"b'23"), 4816 Bop(And,bVar"b'22", 4817 Bop(And, 4818 Mop(Not,bVar"b'21"), 4819 Bop(And,bVar"b'11", 4820 Bop(And, 4821 Mop(Not, 4822 bVar"b'10"), 4823 Mop(Not, 4824 bVar"b'4"))))))))))))), 4825 Call 4826 ("Data",CTy"instruction", 4827 Call 4828 ("ConditionalCompareImmediate@64",CTy"Data", 4829 TP[LW(1,64),Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'30"])), 4830 Mop(Cast F64, 4831 Mop(Cast(FTy 5), 4832 LL[bVar"b'20",bVar"b'19",bVar"b'18", 4833 bVar"b'17",bVar"b'16"])), 4834 Mop(Cast F4, 4835 LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12"]), 4836 TP[Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'3"])), 4837 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'2"])), 4838 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'1"])), 4839 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'0"]))], 4840 Mop(Cast(FTy 5), 4841 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 4842 bVar"b'5"])]))), 4843 (Bop(And,Mop(Not,bVar"b'31"), 4844 Bop(And,bVar"b'29", 4845 Bop(And,bVar"b'28", 4846 Bop(And,bVar"b'27", 4847 Bop(And,Mop(Not,bVar"b'26"), 4848 Bop(And,bVar"b'25", 4849 Bop(And,Mop(Not,bVar"b'24"), 4850 Bop(And,Mop(Not,bVar"b'23"), 4851 Bop(And,bVar"b'22", 4852 Bop(And, 4853 Mop(Not,bVar"b'21"), 4854 Bop(And, 4855 Mop(Not, 4856 bVar"b'11"), 4857 Bop(And, 4858 Mop(Not, 4859 bVar"b'10"), 4860 Mop(Not, 4861 bVar"b'4"))))))))))))), 4862 Call 4863 ("Data",CTy"instruction", 4864 Call 4865 ("ConditionalCompareRegister@32",CTy"Data", 4866 TP[LW(0,32),Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'30"])), 4867 Mop(Cast F4, 4868 LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12"]), 4869 TP[Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'3"])), 4870 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'2"])), 4871 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'1"])), 4872 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'0"]))], 4873 Mop(Cast(FTy 5), 4874 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 4875 bVar"b'16"]), 4876 Mop(Cast(FTy 5), 4877 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 4878 bVar"b'5"])]))), 4879 (Bop(And,bVar"b'31", 4880 Bop(And,bVar"b'29", 4881 Bop(And,bVar"b'28", 4882 Bop(And,bVar"b'27", 4883 Bop(And,Mop(Not,bVar"b'26"), 4884 Bop(And,bVar"b'25", 4885 Bop(And,Mop(Not,bVar"b'24"), 4886 Bop(And,Mop(Not,bVar"b'23"), 4887 Bop(And,bVar"b'22", 4888 Bop(And, 4889 Mop(Not,bVar"b'21"), 4890 Bop(And, 4891 Mop(Not, 4892 bVar"b'11"), 4893 Bop(And, 4894 Mop(Not, 4895 bVar"b'10"), 4896 Mop(Not, 4897 bVar"b'4"))))))))))))), 4898 Call 4899 ("Data",CTy"instruction", 4900 Call 4901 ("ConditionalCompareRegister@64",CTy"Data", 4902 TP[LW(1,64),Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'30"])), 4903 Mop(Cast F4, 4904 LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12"]), 4905 TP[Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'3"])), 4906 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'2"])), 4907 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'1"])), 4908 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'0"]))], 4909 Mop(Cast(FTy 5), 4910 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 4911 bVar"b'16"]), 4912 Mop(Cast(FTy 5), 4913 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 4914 bVar"b'5"])]))), 4915 (Bop(And,Mop(Not,bVar"b'31"), 4916 Bop(And,Mop(Not,bVar"b'29"), 4917 Bop(And,bVar"b'28", 4918 Bop(And,bVar"b'27", 4919 Bop(And,Mop(Not,bVar"b'26"), 4920 Bop(And,bVar"b'25", 4921 Bop(And,Mop(Not,bVar"b'24"), 4922 Bop(And,bVar"b'23", 4923 Bop(And,Mop(Not,bVar"b'22"), 4924 Bop(And, 4925 Mop(Not,bVar"b'21"), 4926 Mop(Not,bVar"b'11"))))))))))), 4927 Call 4928 ("Data",CTy"instruction", 4929 Call 4930 ("ConditionalSelect@32",CTy"Data", 4931 TP[LW(0,32),Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'30"])), 4932 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'10"])), 4933 Mop(Cast F4, 4934 LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12"]), 4935 Mop(Cast(FTy 5), 4936 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 4937 bVar"b'16"]), 4938 Mop(Cast(FTy 5), 4939 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 4940 bVar"b'5"]), 4941 Mop(Cast(FTy 5), 4942 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 4943 bVar"b'0"])]))), 4944 (Bop(And,bVar"b'31", 4945 Bop(And,Mop(Not,bVar"b'29"), 4946 Bop(And,bVar"b'28", 4947 Bop(And,bVar"b'27", 4948 Bop(And,Mop(Not,bVar"b'26"), 4949 Bop(And,bVar"b'25", 4950 Bop(And,Mop(Not,bVar"b'24"), 4951 Bop(And,bVar"b'23", 4952 Bop(And,Mop(Not,bVar"b'22"), 4953 Bop(And, 4954 Mop(Not,bVar"b'21"), 4955 Mop(Not,bVar"b'11"))))))))))), 4956 Call 4957 ("Data",CTy"instruction", 4958 Call 4959 ("ConditionalSelect@64",CTy"Data", 4960 TP[LW(1,64),Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'30"])), 4961 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'10"])), 4962 Mop(Cast F4, 4963 LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12"]), 4964 Mop(Cast(FTy 5), 4965 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 4966 bVar"b'16"]), 4967 Mop(Cast(FTy 5), 4968 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 4969 bVar"b'5"]), 4970 Mop(Cast(FTy 5), 4971 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 4972 bVar"b'0"])]))), 4973 (Bop(And,Mop(Not,bVar"b'31"), 4974 Bop(And,bVar"b'30", 4975 Bop(And,Mop(Not,bVar"b'29"), 4976 Bop(And,bVar"b'28", 4977 Bop(And,bVar"b'27", 4978 Bop(And,Mop(Not,bVar"b'26"), 4979 Bop(And,bVar"b'25", 4980 Bop(And,Mop(Not,bVar"b'24"), 4981 Bop(And,bVar"b'23", 4982 Bop(And,bVar"b'22", 4983 Bop(And, 4984 Mop(Not, 4985 bVar"b'21"), 4986 Bop(And, 4987 Mop(Not, 4988 bVar"b'20"), 4989 Bop(And, 4990 Mop(Not, 4991 bVar"b'19"), 4992 Bop(And, 4993 Mop(Not, 4994 bVar"b'18"), 4995 Bop(And, 4996 Mop(Not, 4997 bVar"b'17"), 4998 Bop(And, 4999 Mop(Not, 5000 bVar"b'16"), 5001 Bop(And, 5002 Mop(Not, 5003 bVar"b'15"), 5004 Bop(And, 5005 Mop(Not, 5006 bVar"b'14"), 5007 Bop(And, 5008 Mop(Not, 5009 bVar"b'13"), 5010 Bop(And, 5011 bVar"b'12", 5012 Mop(Not, 5013 bVar"b'11"))))))))))))))))))))), 5014 Call 5015 ("Data",CTy"instruction", 5016 Call 5017 ("CountLeading@32",CTy"Data", 5018 TP[LW(0,32),Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'10"])), 5019 Mop(Cast(FTy 5), 5020 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 5021 bVar"b'5"]), 5022 Mop(Cast(FTy 5), 5023 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 5024 bVar"b'0"])]))), 5025 (Bop(And,bVar"b'31", 5026 Bop(And,bVar"b'30", 5027 Bop(And,Mop(Not,bVar"b'29"), 5028 Bop(And,bVar"b'28", 5029 Bop(And,bVar"b'27", 5030 Bop(And,Mop(Not,bVar"b'26"), 5031 Bop(And,bVar"b'25", 5032 Bop(And,Mop(Not,bVar"b'24"), 5033 Bop(And,bVar"b'23", 5034 Bop(And,bVar"b'22", 5035 Bop(And, 5036 Mop(Not, 5037 bVar"b'21"), 5038 Bop(And, 5039 Mop(Not, 5040 bVar"b'20"), 5041 Bop(And, 5042 Mop(Not, 5043 bVar"b'19"), 5044 Bop(And, 5045 Mop(Not, 5046 bVar"b'18"), 5047 Bop(And, 5048 Mop(Not, 5049 bVar"b'17"), 5050 Bop(And, 5051 Mop(Not, 5052 bVar"b'16"), 5053 Bop(And, 5054 Mop(Not, 5055 bVar"b'15"), 5056 Bop(And, 5057 Mop(Not, 5058 bVar"b'14"), 5059 Bop(And, 5060 Mop(Not, 5061 bVar"b'13"), 5062 Bop(And, 5063 bVar"b'12", 5064 Mop(Not, 5065 bVar"b'11"))))))))))))))))))))), 5066 Call 5067 ("Data",CTy"instruction", 5068 Call 5069 ("CountLeading@64",CTy"Data", 5070 TP[LW(1,64),Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'10"])), 5071 Mop(Cast(FTy 5), 5072 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 5073 bVar"b'5"]), 5074 Mop(Cast(FTy 5), 5075 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 5076 bVar"b'0"])]))), 5077 (Bop(And,Mop(Not,bVar"b'31"), 5078 Bop(And,Mop(Not,bVar"b'30"), 5079 Bop(And,Mop(Not,bVar"b'29"), 5080 Bop(And,bVar"b'28", 5081 Bop(And,Mop(Not,bVar"b'27"), 5082 Bop(And,Mop(Not,bVar"b'26"), 5083 Bop(And,bVar"b'25", 5084 Bop(And,bVar"b'24", 5085 Bop(And,bVar"b'23", 5086 Mop(Not,bVar"b'21")))))))))), 5087 Let(Var("imms",FTy 6), 5088 Mop(Cast(FTy 6), 5089 LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12", 5090 bVar"b'11",bVar"b'10"]), 5091 ITB([(Mop(Not,EQ(Mop(Cast F1,LL[bVar"b'22"]),LW(0,1))), 5092 Const("Unallocated",CTy"instruction")), 5093 (Bop(Bit,Var("imms",FTy 6),LN 5), 5094 Const("Reserved",CTy"instruction"))], 5095 Call 5096 ("Data",CTy"instruction", 5097 Call 5098 ("ExtractRegister@32",CTy"Data", 5099 TP[LW(0,32),Var("imms",FTy 6), 5100 Mop(Cast(FTy 5), 5101 LL[bVar"b'20",bVar"b'19",bVar"b'18", 5102 bVar"b'17",bVar"b'16"]), 5103 Mop(Cast(FTy 5), 5104 LL[bVar"b'9",bVar"b'8",bVar"b'7", 5105 bVar"b'6",bVar"b'5"]), 5106 Mop(Cast(FTy 5), 5107 LL[bVar"b'4",bVar"b'3",bVar"b'2", 5108 bVar"b'1",bVar"b'0"])]))))), 5109 (Bop(And,bVar"b'31", 5110 Bop(And,Mop(Not,bVar"b'30"), 5111 Bop(And,Mop(Not,bVar"b'29"), 5112 Bop(And,bVar"b'28", 5113 Bop(And,Mop(Not,bVar"b'27"), 5114 Bop(And,Mop(Not,bVar"b'26"), 5115 Bop(And,bVar"b'25", 5116 Bop(And,bVar"b'24", 5117 Bop(And,bVar"b'23", 5118 Mop(Not,bVar"b'21")))))))))), 5119 ITE(Mop(Not,EQ(Mop(Cast F1,LL[bVar"b'22"]),LW(1,1))), 5120 Const("Unallocated",CTy"instruction"), 5121 Call 5122 ("Data",CTy"instruction", 5123 Call 5124 ("ExtractRegister@64",CTy"Data", 5125 TP[LW(1,64), 5126 Mop(Cast(FTy 6), 5127 LL[bVar"b'15",bVar"b'14",bVar"b'13", 5128 bVar"b'12",bVar"b'11",bVar"b'10"]), 5129 Mop(Cast(FTy 5), 5130 LL[bVar"b'20",bVar"b'19",bVar"b'18", 5131 bVar"b'17",bVar"b'16"]), 5132 Mop(Cast(FTy 5), 5133 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 5134 bVar"b'5"]), 5135 Mop(Cast(FTy 5), 5136 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 5137 bVar"b'0"])])))), 5138 (Bop(And,Mop(Not,bVar"b'31"), 5139 Bop(And,Mop(Not,bVar"b'30"), 5140 Bop(And,Mop(Not,bVar"b'29"), 5141 Bop(And,bVar"b'28", 5142 Bop(And,bVar"b'27", 5143 Bop(And,Mop(Not,bVar"b'26"), 5144 Bop(And,bVar"b'25", 5145 Bop(And,Mop(Not,bVar"b'24"), 5146 Bop(And,bVar"b'23", 5147 Bop(And,bVar"b'22", 5148 Bop(And, 5149 Mop(Not, 5150 bVar"b'21"), 5151 Bop(And, 5152 Mop(Not, 5153 bVar"b'15"), 5154 Bop(And, 5155 Mop(Not, 5156 bVar"b'14"), 5157 Bop(And, 5158 Mop(Not, 5159 bVar"b'13"), 5160 Bop(And, 5161 Mop(Not, 5162 bVar"b'12"), 5163 bVar"b'11"))))))))))))))), 5164 Call 5165 ("Data",CTy"instruction", 5166 Call 5167 ("Division@32",CTy"Data", 5168 TP[LW(0,32),EQ(Mop(Cast F1,LL[bVar"b'10"]),LW(0,1)), 5169 Mop(Cast(FTy 5), 5170 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 5171 bVar"b'16"]), 5172 Mop(Cast(FTy 5), 5173 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 5174 bVar"b'5"]), 5175 Mop(Cast(FTy 5), 5176 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 5177 bVar"b'0"])]))), 5178 (Bop(And,bVar"b'31", 5179 Bop(And,Mop(Not,bVar"b'30"), 5180 Bop(And,Mop(Not,bVar"b'29"), 5181 Bop(And,bVar"b'28", 5182 Bop(And,bVar"b'27", 5183 Bop(And,Mop(Not,bVar"b'26"), 5184 Bop(And,bVar"b'25", 5185 Bop(And,Mop(Not,bVar"b'24"), 5186 Bop(And,bVar"b'23", 5187 Bop(And,bVar"b'22", 5188 Bop(And, 5189 Mop(Not, 5190 bVar"b'21"), 5191 Bop(And, 5192 Mop(Not, 5193 bVar"b'15"), 5194 Bop(And, 5195 Mop(Not, 5196 bVar"b'14"), 5197 Bop(And, 5198 Mop(Not, 5199 bVar"b'13"), 5200 Bop(And, 5201 Mop(Not, 5202 bVar"b'12"), 5203 bVar"b'11"))))))))))))))), 5204 Call 5205 ("Data",CTy"instruction", 5206 Call 5207 ("Division@64",CTy"Data", 5208 TP[LW(1,64),EQ(Mop(Cast F1,LL[bVar"b'10"]),LW(0,1)), 5209 Mop(Cast(FTy 5), 5210 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 5211 bVar"b'16"]), 5212 Mop(Cast(FTy 5), 5213 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 5214 bVar"b'5"]), 5215 Mop(Cast(FTy 5), 5216 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 5217 bVar"b'0"])]))), 5218 (Bop(And,Mop(Not,bVar"b'31"), 5219 Bop(And,Mop(Not,bVar"b'30"), 5220 Bop(And,Mop(Not,bVar"b'29"), 5221 Bop(And,bVar"b'28", 5222 Bop(And,bVar"b'27", 5223 Bop(And,Mop(Not,bVar"b'26"), 5224 Bop(And,bVar"b'25", 5225 Bop(And,bVar"b'24", 5226 Bop(And,Mop(Not,bVar"b'23"), 5227 Bop(And, 5228 Mop(Not,bVar"b'22"), 5229 Mop(Not,bVar"b'21"))))))))))), 5230 Call 5231 ("Data",CTy"instruction", 5232 Call 5233 ("MultiplyAddSub@32",CTy"Data", 5234 TP[LW(0,32),EQ(Mop(Cast F1,LL[bVar"b'15"]),LW(1,1)), 5235 Mop(Cast(FTy 5), 5236 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 5237 bVar"b'16"]), 5238 Mop(Cast(FTy 5), 5239 LL[bVar"b'14",bVar"b'13",bVar"b'12",bVar"b'11", 5240 bVar"b'10"]), 5241 Mop(Cast(FTy 5), 5242 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 5243 bVar"b'5"]), 5244 Mop(Cast(FTy 5), 5245 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 5246 bVar"b'0"])]))), 5247 (Bop(And,bVar"b'31", 5248 Bop(And,Mop(Not,bVar"b'30"), 5249 Bop(And,Mop(Not,bVar"b'29"), 5250 Bop(And,bVar"b'28", 5251 Bop(And,bVar"b'27", 5252 Bop(And,Mop(Not,bVar"b'26"), 5253 Bop(And,bVar"b'25", 5254 Bop(And,bVar"b'24", 5255 Bop(And,Mop(Not,bVar"b'23"), 5256 Bop(And, 5257 Mop(Not,bVar"b'22"), 5258 Mop(Not,bVar"b'21"))))))))))), 5259 Call 5260 ("Data",CTy"instruction", 5261 Call 5262 ("MultiplyAddSub@64",CTy"Data", 5263 TP[LW(1,64),EQ(Mop(Cast F1,LL[bVar"b'15"]),LW(1,1)), 5264 Mop(Cast(FTy 5), 5265 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 5266 bVar"b'16"]), 5267 Mop(Cast(FTy 5), 5268 LL[bVar"b'14",bVar"b'13",bVar"b'12",bVar"b'11", 5269 bVar"b'10"]), 5270 Mop(Cast(FTy 5), 5271 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 5272 bVar"b'5"]), 5273 Mop(Cast(FTy 5), 5274 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 5275 bVar"b'0"])]))), 5276 (Bop(And,bVar"b'31", 5277 Bop(And,Mop(Not,bVar"b'30"), 5278 Bop(And,Mop(Not,bVar"b'29"), 5279 Bop(And,bVar"b'28", 5280 Bop(And,bVar"b'27", 5281 Bop(And,Mop(Not,bVar"b'26"), 5282 Bop(And,bVar"b'25", 5283 Bop(And,bVar"b'24", 5284 Bop(And,Mop(Not,bVar"b'22"), 5285 bVar"b'21"))))))))), 5286 Call 5287 ("Data",CTy"instruction", 5288 Call 5289 ("MultiplyAddSubLong",CTy"Data", 5290 TP[Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'15"])), 5291 EQ(Mop(Cast F1,LL[bVar"b'23"]),LW(0,1)), 5292 Mop(Cast(FTy 5), 5293 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 5294 bVar"b'16"]), 5295 Mop(Cast(FTy 5), 5296 LL[bVar"b'14",bVar"b'13",bVar"b'12",bVar"b'11", 5297 bVar"b'10"]), 5298 Mop(Cast(FTy 5), 5299 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 5300 bVar"b'5"]), 5301 Mop(Cast(FTy 5), 5302 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 5303 bVar"b'0"])]))), 5304 (Bop(And,bVar"b'31", 5305 Bop(And,Mop(Not,bVar"b'30"), 5306 Bop(And,Mop(Not,bVar"b'29"), 5307 Bop(And,bVar"b'28", 5308 Bop(And,bVar"b'27", 5309 Bop(And,Mop(Not,bVar"b'26"), 5310 Bop(And,bVar"b'25", 5311 Bop(And,bVar"b'24", 5312 Bop(And,bVar"b'22", 5313 Bop(And, 5314 Mop(Not,bVar"b'21"), 5315 Mop(Not,bVar"b'15"))))))))))), 5316 Call 5317 ("Data",CTy"instruction", 5318 Call 5319 ("MultiplyHigh",CTy"Data", 5320 TP[EQ(Mop(Cast F1,LL[bVar"b'23"]),LW(0,1)), 5321 Mop(Cast(FTy 5), 5322 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 5323 bVar"b'16"]), 5324 Mop(Cast(FTy 5), 5325 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 5326 bVar"b'5"]), 5327 Mop(Cast(FTy 5), 5328 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 5329 bVar"b'0"])]))), 5330 (Bop(And,Mop(Not,bVar"b'31"), 5331 Bop(And,bVar"b'30", 5332 Bop(And,Mop(Not,bVar"b'29"), 5333 Bop(And,bVar"b'28", 5334 Bop(And,bVar"b'27", 5335 Bop(And,Mop(Not,bVar"b'26"), 5336 Bop(And,bVar"b'25", 5337 Bop(And,Mop(Not,bVar"b'24"), 5338 Bop(And,bVar"b'23", 5339 Bop(And,bVar"b'22", 5340 Bop(And, 5341 Mop(Not, 5342 bVar"b'21"), 5343 Bop(And, 5344 Mop(Not, 5345 bVar"b'20"), 5346 Bop(And, 5347 Mop(Not, 5348 bVar"b'19"), 5349 Bop(And, 5350 Mop(Not, 5351 bVar"b'18"), 5352 Bop(And, 5353 Mop(Not, 5354 bVar"b'17"), 5355 Bop(And, 5356 Mop(Not, 5357 bVar"b'16"), 5358 Bop(And, 5359 Mop(Not, 5360 bVar"b'15"), 5361 Bop(And, 5362 Mop(Not, 5363 bVar"b'14"), 5364 Bop(And, 5365 Mop(Not, 5366 bVar"b'13"), 5367 Bop(And, 5368 Mop(Not, 5369 bVar"b'12"), 5370 Bop(And, 5371 bVar"b'11", 5372 bVar"b'10"))))))))))))))))))))), 5373 Const("Unallocated",CTy"instruction")), 5374 (Bop(And,Mop(Not,bVar"b'31"), 5375 Bop(And,bVar"b'30", 5376 Bop(And,Mop(Not,bVar"b'29"), 5377 Bop(And,bVar"b'28", 5378 Bop(And,bVar"b'27", 5379 Bop(And,Mop(Not,bVar"b'26"), 5380 Bop(And,bVar"b'25", 5381 Bop(And,Mop(Not,bVar"b'24"), 5382 Bop(And,bVar"b'23", 5383 Bop(And,bVar"b'22", 5384 Bop(And, 5385 Mop(Not, 5386 bVar"b'21"), 5387 Bop(And, 5388 Mop(Not, 5389 bVar"b'20"), 5390 Bop(And, 5391 Mop(Not, 5392 bVar"b'19"), 5393 Bop(And, 5394 Mop(Not, 5395 bVar"b'18"), 5396 Bop(And, 5397 Mop(Not, 5398 bVar"b'17"), 5399 Bop(And, 5400 Mop(Not, 5401 bVar"b'16"), 5402 Bop(And, 5403 Mop(Not, 5404 bVar"b'15"), 5405 Bop(And, 5406 Mop(Not, 5407 bVar"b'14"), 5408 Bop(And, 5409 Mop(Not, 5410 bVar"b'13"), 5411 Mop(Not, 5412 bVar"b'12")))))))))))))))))))), 5413 Call 5414 ("Data",CTy"instruction", 5415 Call 5416 ("Reverse@32",CTy"Data", 5417 TP[LW(0,32), 5418 Mop(Cast(CTy"RevOp"), 5419 Mop(Cast(FTy 2),LL[bVar"b'11",bVar"b'10"])), 5420 Mop(Cast(FTy 5), 5421 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 5422 bVar"b'5"]), 5423 Mop(Cast(FTy 5), 5424 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 5425 bVar"b'0"])]))), 5426 (Bop(And,bVar"b'31", 5427 Bop(And,bVar"b'30", 5428 Bop(And,Mop(Not,bVar"b'29"), 5429 Bop(And,bVar"b'28", 5430 Bop(And,bVar"b'27", 5431 Bop(And,Mop(Not,bVar"b'26"), 5432 Bop(And,bVar"b'25", 5433 Bop(And,Mop(Not,bVar"b'24"), 5434 Bop(And,bVar"b'23", 5435 Bop(And,bVar"b'22", 5436 Bop(And, 5437 Mop(Not, 5438 bVar"b'21"), 5439 Bop(And, 5440 Mop(Not, 5441 bVar"b'20"), 5442 Bop(And, 5443 Mop(Not, 5444 bVar"b'19"), 5445 Bop(And, 5446 Mop(Not, 5447 bVar"b'18"), 5448 Bop(And, 5449 Mop(Not, 5450 bVar"b'17"), 5451 Bop(And, 5452 Mop(Not, 5453 bVar"b'16"), 5454 Bop(And, 5455 Mop(Not, 5456 bVar"b'15"), 5457 Bop(And, 5458 Mop(Not, 5459 bVar"b'14"), 5460 Bop(And, 5461 Mop(Not, 5462 bVar"b'13"), 5463 Mop(Not, 5464 bVar"b'12")))))))))))))))))))), 5465 Call 5466 ("Data",CTy"instruction", 5467 Call 5468 ("Reverse@64",CTy"Data", 5469 TP[LW(1,64), 5470 Mop(Cast(CTy"RevOp"), 5471 Mop(Cast(FTy 2),LL[bVar"b'11",bVar"b'10"])), 5472 Mop(Cast(FTy 5), 5473 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 5474 bVar"b'5"]), 5475 Mop(Cast(FTy 5), 5476 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 5477 bVar"b'0"])]))), 5478 (Bop(And,Mop(Not,bVar"b'31"), 5479 Bop(And,Mop(Not,bVar"b'30"), 5480 Bop(And,Mop(Not,bVar"b'29"), 5481 Bop(And,bVar"b'28", 5482 Bop(And,bVar"b'27", 5483 Bop(And,Mop(Not,bVar"b'26"), 5484 Bop(And,bVar"b'25", 5485 Bop(And,Mop(Not,bVar"b'24"), 5486 Bop(And,bVar"b'23", 5487 Bop(And,bVar"b'22", 5488 Bop(And, 5489 Mop(Not, 5490 bVar"b'21"), 5491 Bop(And, 5492 Mop(Not, 5493 bVar"b'15"), 5494 Bop(And, 5495 bVar"b'14", 5496 Bop(And, 5497 Mop(Not, 5498 bVar"b'13"), 5499 Bop(And, 5500 Mop(Not, 5501 bVar"b'11"), 5502 Mop(Not, 5503 bVar"b'10")))))))))))))))), 5504 Call 5505 ("CRCExt",CTy"instruction", 5506 Call 5507 ("CRC@8",CTy"CRCExt", 5508 TP[LW(0,8),Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'12"])), 5509 Mop(Cast(FTy 5), 5510 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 5511 bVar"b'16"]), 5512 Mop(Cast(FTy 5), 5513 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 5514 bVar"b'5"]), 5515 Mop(Cast(FTy 5), 5516 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 5517 bVar"b'0"])]))), 5518 (Bop(And,Mop(Not,bVar"b'31"), 5519 Bop(And,Mop(Not,bVar"b'30"), 5520 Bop(And,Mop(Not,bVar"b'29"), 5521 Bop(And,bVar"b'28", 5522 Bop(And,bVar"b'27", 5523 Bop(And,Mop(Not,bVar"b'26"), 5524 Bop(And,bVar"b'25", 5525 Bop(And,Mop(Not,bVar"b'24"), 5526 Bop(And,bVar"b'23", 5527 Bop(And,bVar"b'22", 5528 Bop(And, 5529 Mop(Not, 5530 bVar"b'21"), 5531 Bop(And, 5532 Mop(Not, 5533 bVar"b'15"), 5534 Bop(And, 5535 bVar"b'14", 5536 Bop(And, 5537 Mop(Not, 5538 bVar"b'13"), 5539 Bop(And, 5540 Mop(Not, 5541 bVar"b'11"), 5542 bVar"b'10"))))))))))))))), 5543 Call 5544 ("CRCExt",CTy"instruction", 5545 Call 5546 ("CRC@16",CTy"CRCExt", 5547 TP[LW(1,16),Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'12"])), 5548 Mop(Cast(FTy 5), 5549 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 5550 bVar"b'16"]), 5551 Mop(Cast(FTy 5), 5552 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 5553 bVar"b'5"]), 5554 Mop(Cast(FTy 5), 5555 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 5556 bVar"b'0"])]))), 5557 (Bop(And,Mop(Not,bVar"b'31"), 5558 Bop(And,Mop(Not,bVar"b'30"), 5559 Bop(And,Mop(Not,bVar"b'29"), 5560 Bop(And,bVar"b'28", 5561 Bop(And,bVar"b'27", 5562 Bop(And,Mop(Not,bVar"b'26"), 5563 Bop(And,bVar"b'25", 5564 Bop(And,Mop(Not,bVar"b'24"), 5565 Bop(And,bVar"b'23", 5566 Bop(And,bVar"b'22", 5567 Bop(And, 5568 Mop(Not, 5569 bVar"b'21"), 5570 Bop(And, 5571 Mop(Not, 5572 bVar"b'15"), 5573 Bop(And, 5574 bVar"b'14", 5575 Bop(And, 5576 Mop(Not, 5577 bVar"b'13"), 5578 Bop(And, 5579 bVar"b'11", 5580 Mop(Not, 5581 bVar"b'10")))))))))))))))), 5582 Call 5583 ("CRCExt",CTy"instruction", 5584 Call 5585 ("CRC@32",CTy"CRCExt", 5586 TP[LW(2,32),Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'12"])), 5587 Mop(Cast(FTy 5), 5588 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 5589 bVar"b'16"]), 5590 Mop(Cast(FTy 5), 5591 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 5592 bVar"b'5"]), 5593 Mop(Cast(FTy 5), 5594 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 5595 bVar"b'0"])]))), 5596 (Bop(And,bVar"b'31", 5597 Bop(And,Mop(Not,bVar"b'30"), 5598 Bop(And,Mop(Not,bVar"b'29"), 5599 Bop(And,bVar"b'28", 5600 Bop(And,bVar"b'27", 5601 Bop(And,Mop(Not,bVar"b'26"), 5602 Bop(And,bVar"b'25", 5603 Bop(And,Mop(Not,bVar"b'24"), 5604 Bop(And,bVar"b'23", 5605 Bop(And,bVar"b'22", 5606 Bop(And, 5607 Mop(Not, 5608 bVar"b'21"), 5609 Bop(And, 5610 Mop(Not, 5611 bVar"b'15"), 5612 Bop(And, 5613 bVar"b'14", 5614 Bop(And, 5615 Mop(Not, 5616 bVar"b'13"), 5617 Bop(And, 5618 bVar"b'11", 5619 bVar"b'10"))))))))))))))), 5620 Call 5621 ("CRCExt",CTy"instruction", 5622 Call 5623 ("CRC@64",CTy"CRCExt", 5624 TP[LW(3,64),Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'12"])), 5625 Mop(Cast(FTy 5), 5626 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 5627 bVar"b'16"]), 5628 Mop(Cast(FTy 5), 5629 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 5630 bVar"b'5"]), 5631 Mop(Cast(FTy 5), 5632 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 5633 bVar"b'0"])]))), 5634 (Bop(And,Mop(Not,bVar"b'31"), 5635 Bop(And,bVar"b'30", 5636 Bop(And,Mop(Not,bVar"b'29"), 5637 Bop(And,bVar"b'28", 5638 Bop(And,Mop(Not,bVar"b'27"), 5639 Bop(And,bVar"b'26", 5640 Bop(And,Mop(Not,bVar"b'25"), 5641 Bop(And,Mop(Not,bVar"b'24"), 5642 Mop(Not,bVar"b'4"))))))))), 5643 Call 5644 ("Branch",CTy"instruction", 5645 Call 5646 ("BranchConditional",CTy"Branch", 5647 TP[Mop(SE F64, 5648 CC[Mop(Cast(FTy 19), 5649 LL[bVar"b'23",bVar"b'22",bVar"b'21", 5650 bVar"b'20",bVar"b'19",bVar"b'18", 5651 bVar"b'17",bVar"b'16",bVar"b'15", 5652 bVar"b'14",bVar"b'13",bVar"b'12", 5653 bVar"b'11",bVar"b'10",bVar"b'9", 5654 bVar"b'8",bVar"b'7",bVar"b'6", 5655 bVar"b'5"]),LW(0,2)]), 5656 Mop(Cast F4, 5657 LL[bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"])]))), 5658 (Bop(And,Mop(Not,bVar"b'30"), 5659 Bop(And,Mop(Not,bVar"b'29"), 5660 Bop(And,bVar"b'28", 5661 Bop(And,Mop(Not,bVar"b'27"),bVar"b'26")))), 5662 Call 5663 ("Branch",CTy"instruction", 5664 Call 5665 ("BranchImmediate",CTy"Branch", 5666 TP[Mop(SE F64, 5667 CC[Mop(Cast(FTy 26), 5668 LL[bVar"b'25",bVar"b'24",bVar"b'23", 5669 bVar"b'22",bVar"b'21",bVar"b'20", 5670 bVar"b'19",bVar"b'18",bVar"b'17", 5671 bVar"b'16",bVar"b'15",bVar"b'14", 5672 bVar"b'13",bVar"b'12",bVar"b'11", 5673 bVar"b'10",bVar"b'9",bVar"b'8", 5674 bVar"b'7",bVar"b'6",bVar"b'5", 5675 bVar"b'4",bVar"b'3",bVar"b'2", 5676 bVar"b'1",bVar"b'0"]),LW(0,2)]), 5677 ITE(EQ(Mop(Cast F1,LL[bVar"b'31"]),LW(1,1)), 5678 LC("BranchType_CALL",CTy"BranchType"), 5679 LC("BranchType_JMP",CTy"BranchType"))]))), 5680 (Bop(And,bVar"b'31", 5681 Bop(And,bVar"b'30", 5682 Bop(And,Mop(Not,bVar"b'29"), 5683 Bop(And,bVar"b'28", 5684 Bop(And,Mop(Not,bVar"b'27"), 5685 Bop(And,bVar"b'26", 5686 Bop(And,bVar"b'25", 5687 Bop(And,Mop(Not,bVar"b'24"), 5688 Bop(And,Mop(Not,bVar"b'23"), 5689 Bop(And, 5690 Mop(Not,bVar"b'22"), 5691 Bop(And, 5692 Mop(Not, 5693 bVar"b'21"), 5694 Bop(And, 5695 bVar"b'20", 5696 Bop(And, 5697 bVar"b'19", 5698 Bop(And, 5699 bVar"b'18", 5700 Bop(And, 5701 bVar"b'17", 5702 Bop(And, 5703 bVar"b'16", 5704 Bop(And, 5705 Mop(Not, 5706 bVar"b'15"), 5707 Bop(And, 5708 Mop(Not, 5709 bVar"b'14"), 5710 Bop(And, 5711 Mop(Not, 5712 bVar"b'13"), 5713 Bop(And, 5714 Mop(Not, 5715 bVar"b'12"), 5716 Bop(And, 5717 Mop(Not, 5718 bVar"b'11"), 5719 Bop(And, 5720 Mop(Not, 5721 bVar"b'10"), 5722 Bop(And, 5723 Mop(Not, 5724 bVar"b'4"), 5725 Bop(And, 5726 Mop(Not, 5727 bVar"b'3"), 5728 Bop(And, 5729 Mop(Not, 5730 bVar"b'2"), 5731 Bop(And, 5732 Mop(Not, 5733 bVar"b'1"), 5734 Mop(Not, 5735 bVar"b'0"))))))))))))))))))))))))))), 5736 Call 5737 ("Branch",CTy"instruction", 5738 Call 5739 ("BranchRegister",CTy"Branch", 5740 TP[Mop(Cast(FTy 5), 5741 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 5742 bVar"b'5"]), 5743 LC("BranchType_JMP",CTy"BranchType")]))), 5744 (Bop(And,bVar"b'31", 5745 Bop(And,bVar"b'30", 5746 Bop(And,Mop(Not,bVar"b'29"), 5747 Bop(And,bVar"b'28", 5748 Bop(And,Mop(Not,bVar"b'27"), 5749 Bop(And,bVar"b'26", 5750 Bop(And,bVar"b'25", 5751 Bop(And,Mop(Not,bVar"b'24"), 5752 Bop(And,Mop(Not,bVar"b'23"), 5753 Bop(And, 5754 Mop(Not,bVar"b'22"), 5755 Bop(And,bVar"b'21", 5756 Bop(And, 5757 bVar"b'20", 5758 Bop(And, 5759 bVar"b'19", 5760 Bop(And, 5761 bVar"b'18", 5762 Bop(And, 5763 bVar"b'17", 5764 Bop(And, 5765 bVar"b'16", 5766 Bop(And, 5767 Mop(Not, 5768 bVar"b'15"), 5769 Bop(And, 5770 Mop(Not, 5771 bVar"b'14"), 5772 Bop(And, 5773 Mop(Not, 5774 bVar"b'13"), 5775 Bop(And, 5776 Mop(Not, 5777 bVar"b'12"), 5778 Bop(And, 5779 Mop(Not, 5780 bVar"b'11"), 5781 Bop(And, 5782 Mop(Not, 5783 bVar"b'10"), 5784 Bop(And, 5785 Mop(Not, 5786 bVar"b'4"), 5787 Bop(And, 5788 Mop(Not, 5789 bVar"b'3"), 5790 Bop(And, 5791 Mop(Not, 5792 bVar"b'2"), 5793 Bop(And, 5794 Mop(Not, 5795 bVar"b'1"), 5796 Mop(Not, 5797 bVar"b'0"))))))))))))))))))))))))))), 5798 Call 5799 ("Branch",CTy"instruction", 5800 Call 5801 ("BranchRegister",CTy"Branch", 5802 TP[Mop(Cast(FTy 5), 5803 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 5804 bVar"b'5"]), 5805 LC("BranchType_CALL",CTy"BranchType")]))), 5806 (Bop(And,bVar"b'31", 5807 Bop(And,bVar"b'30", 5808 Bop(And,Mop(Not,bVar"b'29"), 5809 Bop(And,bVar"b'28", 5810 Bop(And,Mop(Not,bVar"b'27"), 5811 Bop(And,bVar"b'26", 5812 Bop(And,bVar"b'25", 5813 Bop(And,Mop(Not,bVar"b'24"), 5814 Bop(And,Mop(Not,bVar"b'23"), 5815 Bop(And,bVar"b'22", 5816 Bop(And, 5817 Mop(Not, 5818 bVar"b'21"), 5819 Bop(And, 5820 bVar"b'20", 5821 Bop(And, 5822 bVar"b'19", 5823 Bop(And, 5824 bVar"b'18", 5825 Bop(And, 5826 bVar"b'17", 5827 Bop(And, 5828 bVar"b'16", 5829 Bop(And, 5830 Mop(Not, 5831 bVar"b'15"), 5832 Bop(And, 5833 Mop(Not, 5834 bVar"b'14"), 5835 Bop(And, 5836 Mop(Not, 5837 bVar"b'13"), 5838 Bop(And, 5839 Mop(Not, 5840 bVar"b'12"), 5841 Bop(And, 5842 Mop(Not, 5843 bVar"b'11"), 5844 Bop(And, 5845 Mop(Not, 5846 bVar"b'10"), 5847 Bop(And, 5848 Mop(Not, 5849 bVar"b'4"), 5850 Bop(And, 5851 Mop(Not, 5852 bVar"b'3"), 5853 Bop(And, 5854 Mop(Not, 5855 bVar"b'2"), 5856 Bop(And, 5857 Mop(Not, 5858 bVar"b'1"), 5859 Mop(Not, 5860 bVar"b'0"))))))))))))))))))))))))))), 5861 Call 5862 ("Branch",CTy"instruction", 5863 Call 5864 ("BranchRegister",CTy"Branch", 5865 TP[Mop(Cast(FTy 5), 5866 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 5867 bVar"b'5"]), 5868 LC("BranchType_RET",CTy"BranchType")]))), 5869 (Bop(And,bVar"b'31", 5870 Bop(And,bVar"b'30", 5871 Bop(And,Mop(Not,bVar"b'29"), 5872 Bop(And,bVar"b'28", 5873 Bop(And,Mop(Not,bVar"b'27"), 5874 Bop(And,bVar"b'26", 5875 Bop(And,bVar"b'25", 5876 Bop(And,Mop(Not,bVar"b'24"), 5877 Bop(And,Mop(Not,bVar"b'23"), 5878 Bop(And,bVar"b'20", 5879 Bop(And,bVar"b'19", 5880 Bop(And, 5881 bVar"b'18", 5882 Bop(And, 5883 bVar"b'17", 5884 Bop(And, 5885 bVar"b'16", 5886 Bop(And, 5887 Mop(Not, 5888 bVar"b'15"), 5889 Bop(And, 5890 Mop(Not, 5891 bVar"b'14"), 5892 Bop(And, 5893 Mop(Not, 5894 bVar"b'13"), 5895 Bop(And, 5896 Mop(Not, 5897 bVar"b'12"), 5898 Bop(And, 5899 Mop(Not, 5900 bVar"b'11"), 5901 Bop(And, 5902 Mop(Not, 5903 bVar"b'10"), 5904 Bop(And, 5905 Mop(Not, 5906 bVar"b'4"), 5907 Bop(And, 5908 Mop(Not, 5909 bVar"b'3"), 5910 Bop(And, 5911 Mop(Not, 5912 bVar"b'2"), 5913 Bop(And, 5914 Mop(Not, 5915 bVar"b'1"), 5916 Mop(Not, 5917 bVar"b'0"))))))))))))))))))))))))), 5918 Const("Unallocated",CTy"instruction")), 5919 (Bop(And,Mop(Not,bVar"b'30"), 5920 Bop(And,bVar"b'29", 5921 Bop(And,bVar"b'28", 5922 Bop(And,Mop(Not,bVar"b'27"), 5923 Bop(And,bVar"b'26",Mop(Not,bVar"b'25")))))), 5924 Let(Var("Rt",FTy 5), 5925 Mop(Cast(FTy 5), 5926 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"]), 5927 Let(bVar"iszero",EQ(Mop(Cast F1,LL[bVar"b'24"]),LW(0,1)), 5928 Let(Var("offset",F64), 5929 Mop(SE F64, 5930 CC[Mop(Cast(FTy 19), 5931 LL[bVar"b'23",bVar"b'22",bVar"b'21", 5932 bVar"b'20",bVar"b'19",bVar"b'18", 5933 bVar"b'17",bVar"b'16",bVar"b'15", 5934 bVar"b'14",bVar"b'13",bVar"b'12", 5935 bVar"b'11",bVar"b'10",bVar"b'9", 5936 bVar"b'8",bVar"b'7",bVar"b'6", 5937 bVar"b'5"]),LW(0,2)]), 5938 ITE(EQ(Mop(Cast F1,LL[bVar"b'31"]),LW(1,1)), 5939 Call 5940 ("Branch",CTy"instruction", 5941 Call 5942 ("CompareAndBranch@64",CTy"Branch", 5943 TP[LW(1,64),bVar"iszero", 5944 Var("offset",F64),Var("Rt",FTy 5)])), 5945 Call 5946 ("Branch",CTy"instruction", 5947 Call 5948 ("CompareAndBranch@32",CTy"Branch", 5949 TP[LW(0,32),bVar"iszero", 5950 Var("offset",F64),Var("Rt",FTy 5)]))))))), 5951 (Bop(And,Mop(Not,bVar"b'30"), 5952 Bop(And,bVar"b'29", 5953 Bop(And,bVar"b'28", 5954 Bop(And,Mop(Not,bVar"b'27"), 5955 Bop(And,bVar"b'26",bVar"b'25"))))), 5956 Let(Var("Rt",FTy 5), 5957 Mop(Cast(FTy 5), 5958 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"]), 5959 Let(Var("sf",F1),Mop(Cast F1,LL[bVar"b'31"]), 5960 Let(Var("bit_pos",FTy 6), 5961 CC[Var("sf",F1), 5962 Mop(Cast(FTy 5), 5963 LL[bVar"b'23",bVar"b'22",bVar"b'21", 5964 bVar"b'20",bVar"b'19"])], 5965 Let(bVar"bit_val", 5966 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'24"])), 5967 Let(Var("offset",F64), 5968 Mop(SE F64, 5969 CC[Mop(Cast(FTy 14), 5970 LL[bVar"b'18",bVar"b'17", 5971 bVar"b'16",bVar"b'15", 5972 bVar"b'14",bVar"b'13", 5973 bVar"b'12",bVar"b'11", 5974 bVar"b'10",bVar"b'9", 5975 bVar"b'8",bVar"b'7", 5976 bVar"b'6",bVar"b'5"]), 5977 LW(0,2)]), 5978 ITE(EQ(Var("sf",F1),LW(1,1)), 5979 Call 5980 ("Branch",CTy"instruction", 5981 Call 5982 ("TestBitAndBranch@64", 5983 CTy"Branch", 5984 TP[LW(1,64), 5985 Var("bit_pos",FTy 6), 5986 bVar"bit_val", 5987 Var("offset",F64), 5988 Var("Rt",FTy 5)])), 5989 Call 5990 ("Branch",CTy"instruction", 5991 Call 5992 ("TestBitAndBranch@32", 5993 CTy"Branch", 5994 TP[LW(0,32), 5995 Var("bit_pos",FTy 6), 5996 bVar"bit_val", 5997 Var("offset",F64), 5998 Var("Rt",FTy 5)]))))))))), 5999 (Bop(And,bVar"b'31", 6000 Bop(And,Mop(Not,bVar"b'30"), 6001 Bop(And,bVar"b'29", 6002 Bop(And,bVar"b'28", 6003 Bop(And,bVar"b'27", 6004 Bop(And,Mop(Not,bVar"b'26"), 6005 Bop(And,Mop(Not,bVar"b'25"), 6006 Bop(And,Mop(Not,bVar"b'24"), 6007 Bop(And,bVar"b'23", 6008 Bop(And,bVar"b'22", 6009 Mop(Not,bVar"b'21"))))))))))), 6010 Const("Unallocated",CTy"instruction")), 6011 (Bop(And,bVar"b'31", 6012 Bop(And,Mop(Not,bVar"b'30"), 6013 Bop(And,bVar"b'29", 6014 Bop(And,bVar"b'28", 6015 Bop(And,bVar"b'27", 6016 Bop(And,Mop(Not,bVar"b'26"), 6017 Bop(And,Mop(Not,bVar"b'25"), 6018 Bop(And,bVar"b'24", 6019 Bop(And,bVar"b'23",bVar"b'22"))))))))), 6020 Const("Unallocated",CTy"instruction")), 6021 (Bop(And,bVar"b'31", 6022 Bop(And,bVar"b'30", 6023 Bop(And,bVar"b'29", 6024 Bop(And,bVar"b'28", 6025 Bop(And,bVar"b'27", 6026 Bop(And,Mop(Not,bVar"b'26"), 6027 Bop(And,Mop(Not,bVar"b'25"), 6028 Bop(And,Mop(Not,bVar"b'24"), 6029 Bop(And,bVar"b'23", 6030 Bop(And,bVar"b'22", 6031 Mop(Not,bVar"b'21"))))))))))), 6032 Const("Unallocated",CTy"instruction")), 6033 (Bop(And,bVar"b'31", 6034 Bop(And,bVar"b'30", 6035 Bop(And,bVar"b'29", 6036 Bop(And,bVar"b'28", 6037 Bop(And,bVar"b'27", 6038 Bop(And,Mop(Not,bVar"b'26"), 6039 Bop(And,Mop(Not,bVar"b'25"), 6040 Bop(And,Mop(Not,bVar"b'24"), 6041 Bop(And,bVar"b'23", 6042 Bop(And, 6043 Mop(Not,bVar"b'21"), 6044 Bop(And,bVar"b'11", 6045 Mop(Not, 6046 bVar"b'10")))))))))))), 6047 Const("Unallocated",CTy"instruction")), 6048 (Bop(And,bVar"b'29", 6049 Bop(And,bVar"b'28", 6050 Bop(And,bVar"b'27", 6051 Bop(And,Mop(Not,bVar"b'26"), 6052 Bop(And,Mop(Not,bVar"b'25"), 6053 Bop(And,Mop(Not,bVar"b'24"), 6054 Bop(And,Mop(Not,bVar"b'21"), 6055 bVar"b'10"))))))), 6056 Call 6057 ("LoadStoreImmediate",CTy"instruction", 6058 TP[Mop(Cast(FTy 2),LL[bVar"b'31",bVar"b'30"]), 6059 Mop(Cast(FTy 2),LL[bVar"b'23",bVar"b'22"]), 6060 LC("AccType_NORMAL",CTy"AccType"),LT, 6061 EQ(Mop(Cast F1,LL[bVar"b'11"]),LW(0,1)),LF, 6062 Mop(SE F64, 6063 Mop(Cast(FTy 9), 6064 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 6065 bVar"b'16",bVar"b'15",bVar"b'14",bVar"b'13", 6066 bVar"b'12"])), 6067 Mop(Cast(FTy 5), 6068 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 6069 bVar"b'5"]), 6070 Mop(Cast(FTy 5), 6071 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 6072 bVar"b'0"])])), 6073 (Bop(And,bVar"b'29", 6074 Bop(And,bVar"b'28", 6075 Bop(And,bVar"b'27", 6076 Bop(And,Mop(Not,bVar"b'26"), 6077 Bop(And,Mop(Not,bVar"b'25"), 6078 Bop(And,Mop(Not,bVar"b'24"), 6079 Bop(And,Mop(Not,bVar"b'21"), 6080 Mop(Not,bVar"b'10")))))))), 6081 Call 6082 ("LoadStoreImmediate",CTy"instruction", 6083 TP[Mop(Cast(FTy 2),LL[bVar"b'31",bVar"b'30"]), 6084 Mop(Cast(FTy 2),LL[bVar"b'23",bVar"b'22"]), 6085 ITE(EQ(Mop(Cast F1,LL[bVar"b'11"]),LW(1,1)), 6086 LC("AccType_UNPRIV",CTy"AccType"), 6087 LC("AccType_NORMAL",CTy"AccType")),LF,LF,LF, 6088 Mop(SE F64, 6089 Mop(Cast(FTy 9), 6090 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 6091 bVar"b'16",bVar"b'15",bVar"b'14",bVar"b'13", 6092 bVar"b'12"])), 6093 Mop(Cast(FTy 5), 6094 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 6095 bVar"b'5"]), 6096 Mop(Cast(FTy 5), 6097 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 6098 bVar"b'0"])])), 6099 (Bop(And,bVar"b'29", 6100 Bop(And,bVar"b'28", 6101 Bop(And,bVar"b'27", 6102 Bop(And,Mop(Not,bVar"b'26"), 6103 Bop(And,Mop(Not,bVar"b'25"),bVar"b'24"))))), 6104 Let(Var("size",FTy 2), 6105 Mop(Cast(FTy 2),LL[bVar"b'31",bVar"b'30"]), 6106 Call 6107 ("LoadStoreImmediate",CTy"instruction", 6108 TP[Var("size",FTy 2), 6109 Mop(Cast(FTy 2),LL[bVar"b'23",bVar"b'22"]), 6110 LC("AccType_NORMAL",CTy"AccType"),LF,LF,LT, 6111 Bop(Lsl, 6112 Mop(Cast F64, 6113 Mop(Cast(FTy 12), 6114 LL[bVar"b'21",bVar"b'20",bVar"b'19", 6115 bVar"b'18",bVar"b'17",bVar"b'16", 6116 bVar"b'15",bVar"b'14",bVar"b'13", 6117 bVar"b'12",bVar"b'11",bVar"b'10"])), 6118 Mop(Cast nTy,Var("size",FTy 2))), 6119 Mop(Cast(FTy 5), 6120 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 6121 bVar"b'5"]), 6122 Mop(Cast(FTy 5), 6123 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 6124 bVar"b'0"])]))), 6125 (Bop(And,bVar"b'31", 6126 Bop(And,bVar"b'29", 6127 Bop(And,bVar"b'28", 6128 Bop(And,bVar"b'27", 6129 Bop(And,Mop(Not,bVar"b'26"), 6130 Bop(And,Mop(Not,bVar"b'25"), 6131 Bop(And,Mop(Not,bVar"b'24"), 6132 Bop(And,bVar"b'23", 6133 Bop(And,bVar"b'22", 6134 Bop(And,bVar"b'21", 6135 Bop(And,bVar"b'11", 6136 Mop(Not, 6137 bVar"b'10")))))))))))), 6138 Const("Unallocated",CTy"instruction")), 6139 (Bop(And,bVar"b'29", 6140 Bop(And,bVar"b'28", 6141 Bop(And,bVar"b'27", 6142 Bop(And,Mop(Not,bVar"b'26"), 6143 Bop(And,Mop(Not,bVar"b'25"), 6144 Bop(And,Mop(Not,bVar"b'24"), 6145 Bop(And,bVar"b'21", 6146 Bop(And,Mop(Not,bVar"b'15"), 6147 Bop(And,Mop(Not,bVar"b'14"), 6148 Bop(And,bVar"b'11", 6149 Mop(Not,bVar"b'10"))))))))))), 6150 Const("Reserved",CTy"instruction")), 6151 (Bop(And,bVar"b'29", 6152 Bop(And,bVar"b'28", 6153 Bop(And,bVar"b'27", 6154 Bop(And,Mop(Not,bVar"b'26"), 6155 Bop(And,Mop(Not,bVar"b'25"), 6156 Bop(And,Mop(Not,bVar"b'24"), 6157 Bop(And,bVar"b'21", 6158 Bop(And,bVar"b'15", 6159 Bop(And,Mop(Not,bVar"b'14"), 6160 Bop(And,bVar"b'11", 6161 Mop(Not,bVar"b'10"))))))))))), 6162 Const("Reserved",CTy"instruction")), 6163 (Bop(And,bVar"b'29", 6164 Bop(And,bVar"b'28", 6165 Bop(And,bVar"b'27", 6166 Bop(And,Mop(Not,bVar"b'26"), 6167 Bop(And,Mop(Not,bVar"b'25"), 6168 Bop(And,Mop(Not,bVar"b'24"), 6169 Bop(And,bVar"b'21", 6170 Bop(And,bVar"b'11", 6171 Mop(Not,bVar"b'10"))))))))), 6172 Let(Var("opc",FTy 2), 6173 Mop(Cast(FTy 2),LL[bVar"b'23",bVar"b'22"]), 6174 Let(Var("size",FTy 2), 6175 Mop(Cast(FTy 2),LL[bVar"b'31",bVar"b'30"]), 6176 Let(TP[Var("memop",CTy"MemOp"),bVar"regsize_word", 6177 bVar"signed"], 6178 ITB([(Mop(Not,Bop(Bit,Var("opc",FTy 2),LN 1)), 6179 TP[ITE(Bop(Bit,Var("opc",FTy 2),LN 0), 6180 LC("MemOp_LOAD",CTy"MemOp"), 6181 LC("MemOp_STORE",CTy"MemOp")), 6182 Mop(Not,EQ(Var("size",FTy 2),LW(3,2))), 6183 LF]), 6184 (EQ(Var("size",FTy 2),LW(3,2)), 6185 TP[LC("MemOp_PREFETCH",CTy"MemOp"),LX bTy, 6186 LX bTy])], 6187 TP[LC("MemOp_LOAD",CTy"MemOp"), 6188 Bop(Bit,Var("opc",FTy 2),LN 0),LT]), 6189 Call 6190 ("LoadStoreRegister",CTy"instruction", 6191 TP[Var("size",FTy 2),bVar"regsize_word", 6192 Var("memop",CTy"MemOp"),bVar"signed", 6193 Mop(Cast(FTy 5), 6194 LL[bVar"b'20",bVar"b'19",bVar"b'18", 6195 bVar"b'17",bVar"b'16"]), 6196 Call 6197 ("DecodeRegExtend",CTy"ExtendType", 6198 Mop(Cast(FTy 3), 6199 LL[bVar"b'15",bVar"b'14",bVar"b'13"])), 6200 ITE(EQ(Mop(Cast F1,LL[bVar"b'12"]),LW(1,1)), 6201 Mop(Cast nTy,Var("size",FTy 2)),LN 0), 6202 Mop(Cast(FTy 5), 6203 LL[bVar"b'9",bVar"b'8",bVar"b'7", 6204 bVar"b'6",bVar"b'5"]), 6205 Mop(Cast(FTy 5), 6206 LL[bVar"b'4",bVar"b'3",bVar"b'2", 6207 bVar"b'1",bVar"b'0"])]))))), 6208 (Bop(And,Mop(Not,bVar"b'29"), 6209 Bop(And,bVar"b'28", 6210 Bop(And,bVar"b'27", 6211 Bop(And,Mop(Not,bVar"b'26"), 6212 Bop(And,Mop(Not,bVar"b'25"), 6213 Mop(Not,bVar"b'24")))))), 6214 Let(Var("Rt",FTy 5), 6215 Mop(Cast(FTy 5), 6216 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1",bVar"b'0"]), 6217 Let(Var("offset",F64), 6218 Mop(SE F64, 6219 CC[Mop(Cast(FTy 19), 6220 LL[bVar"b'23",bVar"b'22",bVar"b'21", 6221 bVar"b'20",bVar"b'19",bVar"b'18", 6222 bVar"b'17",bVar"b'16",bVar"b'15", 6223 bVar"b'14",bVar"b'13",bVar"b'12", 6224 bVar"b'11",bVar"b'10",bVar"b'9", 6225 bVar"b'8",bVar"b'7",bVar"b'6",bVar"b'5"]), 6226 LW(0,2)]), 6227 CS(Mop(Cast(FTy 2),LL[bVar"b'31",bVar"b'30"]), 6228 [(LW(0,2), 6229 Call 6230 ("LoadStore",CTy"instruction", 6231 Call 6232 ("LoadLiteral@32",CTy"LoadStore", 6233 TP[LW(0,32),LC("MemOp_LOAD",CTy"MemOp"), 6234 LF,Var("offset",F64),Var("Rt",FTy 5)]))), 6235 (LW(1,2), 6236 Call 6237 ("LoadStore",CTy"instruction", 6238 Call 6239 ("LoadLiteral@64",CTy"LoadStore", 6240 TP[LW(1,64),LC("MemOp_LOAD",CTy"MemOp"), 6241 LF,Var("offset",F64),Var("Rt",FTy 5)]))), 6242 (LW(2,2), 6243 Call 6244 ("LoadStore",CTy"instruction", 6245 Call 6246 ("LoadLiteral@32",CTy"LoadStore", 6247 TP[LW(2,32),LC("MemOp_LOAD",CTy"MemOp"), 6248 LT,Var("offset",F64),Var("Rt",FTy 5)]))), 6249 (LW(3,2), 6250 Call 6251 ("LoadStore",CTy"instruction", 6252 Call 6253 ("LoadLiteral@32",CTy"LoadStore", 6254 TP[LW(3,32), 6255 LC("MemOp_PREFETCH",CTy"MemOp"),LF, 6256 Var("offset",F64),Var("Rt",FTy 5)])))])))), 6257 (Bop(And,bVar"b'30", 6258 Bop(And,bVar"b'29", 6259 Bop(And,Mop(Not,bVar"b'28"), 6260 Bop(And,bVar"b'27", 6261 Bop(And,Mop(Not,bVar"b'26"), 6262 Bop(And,Mop(Not,bVar"b'25"), 6263 Mop(Not,bVar"b'22"))))))), 6264 Const("Unallocated",CTy"instruction")), 6265 (Bop(And,bVar"b'31", 6266 Bop(And,bVar"b'30", 6267 Bop(And,bVar"b'29", 6268 Bop(And,Mop(Not,bVar"b'28"), 6269 Bop(And,bVar"b'27", 6270 Bop(And,Mop(Not,bVar"b'26"), 6271 Mop(Not,bVar"b'25"))))))), 6272 Const("Unallocated",CTy"instruction")), 6273 (Bop(And,bVar"b'29", 6274 Bop(And,Mop(Not,bVar"b'28"), 6275 Bop(And,bVar"b'27", 6276 Bop(And,Mop(Not,bVar"b'26"), 6277 Bop(And,Mop(Not,bVar"b'25"), 6278 Bop(And,Mop(Not,bVar"b'24"), 6279 Mop(Not,bVar"b'23"))))))), 6280 Const("Unallocated",CTy"instruction")), 6281 (Bop(And,bVar"b'29", 6282 Bop(And,Mop(Not,bVar"b'28"), 6283 Bop(And,bVar"b'27", 6284 Bop(And,Mop(Not,bVar"b'26"),Mop(Not,bVar"b'25"))))), 6285 Let(Var("sf",F1),Mop(Cast F1,LL[bVar"b'31"]), 6286 Let(bVar"wback",EQ(Mop(Cast F1,LL[bVar"b'23"]),LW(1,1)), 6287 Let(bVar"signed", 6288 EQ(Mop(Cast F1,LL[bVar"b'30"]),LW(1,1)), 6289 Let(bVar"postindex", 6290 EQ(Mop(Cast F1,LL[bVar"b'24"]),LW(0,1)), 6291 Let(bVar"nontemporal", 6292 Bop(And, 6293 Mop(Not, 6294 Bop(Or,bVar"wback",bVar"signed")), 6295 bVar"postindex"), 6296 Call 6297 ("LoadStorePair",CTy"instruction", 6298 TP[Var("sf",F1), 6299 ITE(EQ(Mop(Cast F1,LL[bVar"b'22"]), 6300 LW(1,1)), 6301 LC("MemOp_LOAD",CTy"MemOp"), 6302 LC("MemOp_STORE",CTy"MemOp")), 6303 ITE(bVar"nontemporal", 6304 LC("AccType_STREAM", 6305 CTy"AccType"), 6306 LC("AccType_NORMAL", 6307 CTy"AccType")),bVar"signed", 6308 bVar"wback", 6309 Bop(And,Mop(Not,bVar"nontemporal"), 6310 bVar"postindex"), 6311 Bop(Lsl, 6312 Mop(SE F64, 6313 Mop(Cast(FTy 7), 6314 LL[bVar"b'21", 6315 bVar"b'20", 6316 bVar"b'19", 6317 bVar"b'18", 6318 bVar"b'17", 6319 bVar"b'16", 6320 bVar"b'15"])), 6321 Bop(Add,LN 2, 6322 Mop(Cast nTy,Var("sf",F1)))), 6323 Mop(Cast(FTy 5), 6324 LL[bVar"b'9",bVar"b'8", 6325 bVar"b'7",bVar"b'6", 6326 bVar"b'5"]), 6327 Mop(Cast(FTy 5), 6328 LL[bVar"b'4",bVar"b'3", 6329 bVar"b'2",bVar"b'1", 6330 bVar"b'0"]), 6331 Mop(Cast(FTy 5), 6332 LL[bVar"b'14",bVar"b'13", 6333 bVar"b'12",bVar"b'11", 6334 bVar"b'10"])]))))))), 6335 (Bop(And,Mop(Not,bVar"b'29"), 6336 Bop(And,Mop(Not,bVar"b'28"), 6337 Bop(And,bVar"b'27", 6338 Bop(And,Mop(Not,bVar"b'26"), 6339 Bop(And,Mop(Not,bVar"b'25"), 6340 Bop(And,Mop(Not,bVar"b'24"), 6341 Bop(And,bVar"b'23", 6342 Bop(And,Mop(Not,bVar"b'21"), 6343 Mop(Not,bVar"b'15"))))))))), 6344 Const("Unallocated",CTy"instruction")), 6345 (Bop(And,Mop(Not,bVar"b'29"), 6346 Bop(And,Mop(Not,bVar"b'28"), 6347 Bop(And,bVar"b'27", 6348 Bop(And,Mop(Not,bVar"b'26"), 6349 Bop(And,Mop(Not,bVar"b'25"), 6350 Bop(And,Mop(Not,bVar"b'24"), 6351 Bop(And,bVar"b'23",bVar"b'21"))))))), 6352 Const("Unallocated",CTy"instruction")), 6353 (Bop(And,Mop(Not,bVar"b'31"), 6354 Bop(And,Mop(Not,bVar"b'29"), 6355 Bop(And,Mop(Not,bVar"b'28"), 6356 Bop(And,bVar"b'27", 6357 Bop(And,Mop(Not,bVar"b'26"), 6358 Bop(And,Mop(Not,bVar"b'25"), 6359 Bop(And,Mop(Not,bVar"b'24"), 6360 bVar"b'21"))))))), 6361 Const("Unallocated",CTy"instruction")), 6362 (Bop(And,Mop(Not,bVar"b'29"), 6363 Bop(And,Mop(Not,bVar"b'28"), 6364 Bop(And,bVar"b'27", 6365 Bop(And,Mop(Not,bVar"b'26"), 6366 Bop(And,Mop(Not,bVar"b'25"), 6367 Mop(Not,bVar"b'24")))))), 6368 Call 6369 ("LoadStoreAcquire",CTy"instruction", 6370 TP[Mop(Cast(FTy 2),LL[bVar"b'31",bVar"b'30"]), 6371 ITE(EQ(Mop(Cast F1,LL[bVar"b'22"]),LW(1,1)), 6372 LC("MemOp_LOAD",CTy"MemOp"), 6373 LC("MemOp_STORE",CTy"MemOp")), 6374 ITE(EQ(Mop(Cast F1,LL[bVar"b'15"]),LW(1,1)), 6375 LC("AccType_ORDERED",CTy"AccType"), 6376 LC("AccType_ATOMIC",CTy"AccType")), 6377 EQ(Mop(Cast F1,LL[bVar"b'23"]),LW(0,1)), 6378 EQ(Mop(Cast F1,LL[bVar"b'21"]),LW(1,1)), 6379 Mop(Cast(FTy 5), 6380 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 6381 bVar"b'16"]), 6382 Mop(Cast(FTy 5), 6383 LL[bVar"b'9",bVar"b'8",bVar"b'7",bVar"b'6", 6384 bVar"b'5"]), 6385 Mop(Cast(FTy 5), 6386 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 6387 bVar"b'0"]), 6388 Mop(Cast(FTy 5), 6389 LL[bVar"b'14",bVar"b'13",bVar"b'12",bVar"b'11", 6390 bVar"b'10"])])), 6391 (Bop(And,bVar"b'31", 6392 Bop(And,bVar"b'30", 6393 Bop(And,Mop(Not,bVar"b'29"), 6394 Bop(And,bVar"b'28", 6395 Bop(And,Mop(Not,bVar"b'27"), 6396 Bop(And,bVar"b'26", 6397 Bop(And,Mop(Not,bVar"b'25"), 6398 Bop(And,bVar"b'24", 6399 Bop(And,Mop(Not,bVar"b'23"), 6400 Bop(And, 6401 Mop(Not,bVar"b'22"), 6402 bVar"b'20")))))))))), 6403 Call 6404 ("System",CTy"instruction", 6405 Call 6406 ("MoveSystemRegister",CTy"System", 6407 TP[Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'21"])), 6408 Bop(Add,LW(2,3), 6409 Mop(Cast(FTy 3),Mop(Cast F1,LL[bVar"b'19"]))), 6410 Mop(Cast(FTy 3),LL[bVar"b'18",bVar"b'17",bVar"b'16"]), 6411 Mop(Cast(FTy 3),LL[bVar"b'7",bVar"b'6",bVar"b'5"]), 6412 Mop(Cast F4, 6413 LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12"]), 6414 Mop(Cast F4, 6415 LL[bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8"]), 6416 Mop(Cast(FTy 5), 6417 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 6418 bVar"b'0"])]))), 6419 (Bop(And,bVar"b'31", 6420 Bop(And,bVar"b'30", 6421 Bop(And,Mop(Not,bVar"b'29"), 6422 Bop(And,bVar"b'28", 6423 Bop(And,Mop(Not,bVar"b'27"), 6424 Bop(And,bVar"b'26", 6425 Bop(And,Mop(Not,bVar"b'25"), 6426 Bop(And,bVar"b'24", 6427 Bop(And,Mop(Not,bVar"b'23"), 6428 Bop(And, 6429 Mop(Not,bVar"b'22"), 6430 Bop(And, 6431 Mop(Not, 6432 bVar"b'21"), 6433 Bop(And, 6434 Mop(Not, 6435 bVar"b'20"), 6436 Bop(And, 6437 Mop(Not, 6438 bVar"b'19"), 6439 Bop(And, 6440 Mop(Not, 6441 bVar"b'18"), 6442 Bop(And, 6443 Mop(Not, 6444 bVar"b'17"), 6445 Bop(And, 6446 Mop(Not, 6447 bVar"b'16"), 6448 Bop(And, 6449 Mop(Not, 6450 bVar"b'15"), 6451 Bop(And, 6452 bVar"b'14", 6453 Bop(And, 6454 Mop(Not, 6455 bVar"b'13"), 6456 Bop(And, 6457 Mop(Not, 6458 bVar"b'12"), 6459 Bop(And, 6460 bVar"b'7", 6461 Bop(And, 6462 Mop(Not, 6463 bVar"b'6"), 6464 Bop(And, 6465 bVar"b'5", 6466 Bop(And, 6467 bVar"b'4", 6468 Bop(And, 6469 bVar"b'3", 6470 Bop(And, 6471 bVar"b'2", 6472 Bop(And, 6473 bVar"b'1", 6474 bVar"b'0"))))))))))))))))))))))))))), 6475 Call 6476 ("System",CTy"instruction", 6477 Call 6478 ("MoveImmediateProcState",CTy"System", 6479 TP[LC("PSTATEField_SP",CTy"PSTATEField"), 6480 Mop(Cast F4, 6481 LL[bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8"])]))), 6482 (Bop(And,bVar"b'31", 6483 Bop(And,bVar"b'30", 6484 Bop(And,Mop(Not,bVar"b'29"), 6485 Bop(And,bVar"b'28", 6486 Bop(And,Mop(Not,bVar"b'27"), 6487 Bop(And,bVar"b'26", 6488 Bop(And,Mop(Not,bVar"b'25"), 6489 Bop(And,bVar"b'24", 6490 Bop(And,Mop(Not,bVar"b'23"), 6491 Bop(And, 6492 Mop(Not,bVar"b'22"), 6493 Bop(And, 6494 Mop(Not, 6495 bVar"b'21"), 6496 Bop(And, 6497 Mop(Not, 6498 bVar"b'20"), 6499 Bop(And, 6500 Mop(Not, 6501 bVar"b'19"), 6502 Bop(And, 6503 Mop(Not, 6504 bVar"b'18"), 6505 Bop(And, 6506 bVar"b'17", 6507 Bop(And, 6508 bVar"b'16", 6509 Bop(And, 6510 Mop(Not, 6511 bVar"b'15"), 6512 Bop(And, 6513 bVar"b'14", 6514 Bop(And, 6515 Mop(Not, 6516 bVar"b'13"), 6517 Bop(And, 6518 Mop(Not, 6519 bVar"b'12"), 6520 Bop(And, 6521 bVar"b'7", 6522 Bop(And, 6523 bVar"b'6", 6524 Bop(And, 6525 Mop(Not, 6526 bVar"b'5"), 6527 Bop(And, 6528 bVar"b'4", 6529 Bop(And, 6530 bVar"b'3", 6531 Bop(And, 6532 bVar"b'2", 6533 Bop(And, 6534 bVar"b'1", 6535 bVar"b'0"))))))))))))))))))))))))))), 6536 Call 6537 ("System",CTy"instruction", 6538 Call 6539 ("MoveImmediateProcState",CTy"System", 6540 TP[LC("PSTATEField_DAIFSet",CTy"PSTATEField"), 6541 Mop(Cast F4, 6542 LL[bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8"])]))), 6543 (Bop(And,bVar"b'31", 6544 Bop(And,bVar"b'30", 6545 Bop(And,Mop(Not,bVar"b'29"), 6546 Bop(And,bVar"b'28", 6547 Bop(And,Mop(Not,bVar"b'27"), 6548 Bop(And,bVar"b'26", 6549 Bop(And,Mop(Not,bVar"b'25"), 6550 Bop(And,bVar"b'24", 6551 Bop(And,Mop(Not,bVar"b'23"), 6552 Bop(And, 6553 Mop(Not,bVar"b'22"), 6554 Bop(And, 6555 Mop(Not, 6556 bVar"b'21"), 6557 Bop(And, 6558 Mop(Not, 6559 bVar"b'20"), 6560 Bop(And, 6561 Mop(Not, 6562 bVar"b'19"), 6563 Bop(And, 6564 Mop(Not, 6565 bVar"b'18"), 6566 Bop(And, 6567 bVar"b'17", 6568 Bop(And, 6569 bVar"b'16", 6570 Bop(And, 6571 Mop(Not, 6572 bVar"b'15"), 6573 Bop(And, 6574 bVar"b'14", 6575 Bop(And, 6576 Mop(Not, 6577 bVar"b'13"), 6578 Bop(And, 6579 Mop(Not, 6580 bVar"b'12"), 6581 Bop(And, 6582 bVar"b'7", 6583 Bop(And, 6584 bVar"b'6", 6585 Bop(And, 6586 bVar"b'5", 6587 Bop(And, 6588 bVar"b'4", 6589 Bop(And, 6590 bVar"b'3", 6591 Bop(And, 6592 bVar"b'2", 6593 Bop(And, 6594 bVar"b'1", 6595 bVar"b'0"))))))))))))))))))))))))))), 6596 Call 6597 ("System",CTy"instruction", 6598 Call 6599 ("MoveImmediateProcState",CTy"System", 6600 TP[LC("PSTATEField_DAIFClr",CTy"PSTATEField"), 6601 Mop(Cast F4, 6602 LL[bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8"])]))), 6603 (Bop(And,bVar"b'31", 6604 Bop(And,bVar"b'30", 6605 Bop(And,Mop(Not,bVar"b'29"), 6606 Bop(And,bVar"b'28", 6607 Bop(And,Mop(Not,bVar"b'27"), 6608 Bop(And,bVar"b'26", 6609 Bop(And,Mop(Not,bVar"b'25"), 6610 Bop(And,bVar"b'24", 6611 Bop(And,Mop(Not,bVar"b'23"), 6612 Bop(And, 6613 Mop(Not,bVar"b'22"), 6614 Bop(And, 6615 Mop(Not, 6616 bVar"b'21"), 6617 Bop(And, 6618 Mop(Not, 6619 bVar"b'20"), 6620 Bop(And, 6621 Mop(Not, 6622 bVar"b'19"), 6623 Bop(And, 6624 Mop(Not, 6625 bVar"b'18"), 6626 Bop(And, 6627 bVar"b'17", 6628 Bop(And, 6629 bVar"b'16", 6630 Bop(And, 6631 Mop(Not, 6632 bVar"b'15"), 6633 Bop(And, 6634 Mop(Not, 6635 bVar"b'14"), 6636 Bop(And, 6637 bVar"b'13", 6638 Bop(And, 6639 bVar"b'12", 6640 Bop(And, 6641 bVar"b'7", 6642 Bop(And, 6643 bVar"b'6", 6644 Bop(And, 6645 bVar"b'5", 6646 Bop(And, 6647 bVar"b'4", 6648 Bop(And, 6649 bVar"b'3", 6650 Bop(And, 6651 bVar"b'2", 6652 Bop(And, 6653 bVar"b'1", 6654 bVar"b'0"))))))))))))))))))))))))))), 6655 Const("Unallocated",CTy"instruction")), 6656 (Bop(And,bVar"b'31", 6657 Bop(And,bVar"b'30", 6658 Bop(And,Mop(Not,bVar"b'29"), 6659 Bop(And,bVar"b'28", 6660 Bop(And,Mop(Not,bVar"b'27"), 6661 Bop(And,bVar"b'26", 6662 Bop(And,Mop(Not,bVar"b'25"), 6663 Bop(And,bVar"b'24", 6664 Bop(And,Mop(Not,bVar"b'23"), 6665 Bop(And, 6666 Mop(Not,bVar"b'22"), 6667 Bop(And, 6668 Mop(Not, 6669 bVar"b'21"), 6670 Bop(And, 6671 Mop(Not, 6672 bVar"b'20"), 6673 Bop(And, 6674 Mop(Not, 6675 bVar"b'19"), 6676 Bop(And, 6677 Mop(Not, 6678 bVar"b'18"), 6679 Bop(And, 6680 bVar"b'17", 6681 Bop(And, 6682 bVar"b'16", 6683 Bop(And, 6684 Mop(Not, 6685 bVar"b'15"), 6686 Bop(And, 6687 Mop(Not, 6688 bVar"b'14"), 6689 Bop(And, 6690 bVar"b'13", 6691 Bop(And, 6692 bVar"b'12", 6693 Bop(And, 6694 bVar"b'7", 6695 Bop(And, 6696 bVar"b'4", 6697 Bop(And, 6698 bVar"b'3", 6699 Bop(And, 6700 bVar"b'2", 6701 Bop(And, 6702 bVar"b'1", 6703 bVar"b'0"))))))))))))))))))))))))), 6704 Call 6705 ("MemoryBarrier",CTy"instruction", 6706 TP[Mop(Cast(CTy"MemBarrierOp"), 6707 Mop(Cast(FTy 2),LL[bVar"b'6",bVar"b'5"])), 6708 Mop(Cast F4, 6709 LL[bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8"])])), 6710 (Bop(And,bVar"b'31", 6711 Bop(And,bVar"b'30", 6712 Bop(And,Mop(Not,bVar"b'29"), 6713 Bop(And,bVar"b'28", 6714 Bop(And,Mop(Not,bVar"b'27"), 6715 Bop(And,bVar"b'26", 6716 Bop(And,Mop(Not,bVar"b'25"), 6717 Bop(And,Mop(Not,bVar"b'24"), 6718 Bop(And,Mop(Not,bVar"b'23"), 6719 Bop(And, 6720 Mop(Not,bVar"b'22"), 6721 Bop(And,bVar"b'21", 6722 Bop(And, 6723 Mop(Not, 6724 bVar"b'4"), 6725 Bop(And, 6726 Mop(Not, 6727 bVar"b'3"), 6728 Bop(And, 6729 Mop(Not, 6730 bVar"b'2"), 6731 Bop(And, 6732 Mop(Not, 6733 bVar"b'1"), 6734 Mop(Not, 6735 bVar"b'0")))))))))))))))), 6736 Call 6737 ("Debug",CTy"instruction", 6738 Call 6739 ("Breakpoint",CTy"Debug", 6740 Mop(Cast F16, 6741 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 6742 bVar"b'16",bVar"b'15",bVar"b'14",bVar"b'13", 6743 bVar"b'12",bVar"b'11",bVar"b'10",bVar"b'9", 6744 bVar"b'8",bVar"b'7",bVar"b'6",bVar"b'5"])))), 6745 (Bop(And,bVar"b'31", 6746 Bop(And,bVar"b'30", 6747 Bop(And,Mop(Not,bVar"b'29"), 6748 Bop(And,bVar"b'28", 6749 Bop(And,Mop(Not,bVar"b'27"), 6750 Bop(And,bVar"b'26", 6751 Bop(And,Mop(Not,bVar"b'25"), 6752 Bop(And,bVar"b'24", 6753 Bop(And,Mop(Not,bVar"b'23"), 6754 Bop(And, 6755 Mop(Not,bVar"b'22"), 6756 Bop(And, 6757 Mop(Not, 6758 bVar"b'21"), 6759 Bop(And, 6760 Mop(Not, 6761 bVar"b'20"), 6762 Bop(And, 6763 Mop(Not, 6764 bVar"b'19"), 6765 Bop(And, 6766 Mop(Not, 6767 bVar"b'18"), 6768 Bop(And, 6769 bVar"b'17", 6770 Bop(And, 6771 bVar"b'16", 6772 Bop(And, 6773 Mop(Not, 6774 bVar"b'15"), 6775 Bop(And, 6776 Mop(Not, 6777 bVar"b'14"), 6778 Bop(And, 6779 bVar"b'13", 6780 Bop(And, 6781 Mop(Not, 6782 bVar"b'12"), 6783 Bop(And, 6784 bVar"b'4", 6785 Bop(And, 6786 bVar"b'3", 6787 Bop(And, 6788 bVar"b'2", 6789 Bop(And, 6790 bVar"b'1", 6791 bVar"b'0")))))))))))))))))))))))), 6792 Let(Var("op2",FTy 3), 6793 Mop(Cast(FTy 3),LL[bVar"b'7",bVar"b'6",bVar"b'5"]), 6794 Call 6795 ("Hint",CTy"instruction", 6796 ITE(Bop(And, 6797 EQ(Mop(Cast F4, 6798 LL[bVar"b'11",bVar"b'10",bVar"b'9", 6799 bVar"b'8"]),LW(0,4)), 6800 Bop(Ult,Var("op2",FTy 3),LW(6,3))), 6801 Mop(Cast(CTy"SystemHintOp"),Var("op2",FTy 3)), 6802 LC("SystemHintOp_NOP",CTy"SystemHintOp"))))), 6803 (Bop(And,bVar"b'31", 6804 Bop(And,bVar"b'30", 6805 Bop(And,Mop(Not,bVar"b'29"), 6806 Bop(And,bVar"b'28", 6807 Bop(And,Mop(Not,bVar"b'27"), 6808 Bop(And,bVar"b'26", 6809 Bop(And,Mop(Not,bVar"b'25"), 6810 Bop(And,bVar"b'24", 6811 Bop(And,Mop(Not,bVar"b'23"), 6812 Bop(And, 6813 Mop(Not,bVar"b'22"), 6814 Bop(And, 6815 Mop(Not, 6816 bVar"b'21"), 6817 Bop(And, 6818 Mop(Not, 6819 bVar"b'20"), 6820 Bop(And, 6821 Mop(Not, 6822 bVar"b'19"), 6823 Bop(And, 6824 Mop(Not, 6825 bVar"b'18"), 6826 Bop(And, 6827 bVar"b'17", 6828 Bop(And, 6829 bVar"b'16", 6830 Bop(And, 6831 Mop(Not, 6832 bVar"b'15"), 6833 Bop(And, 6834 Mop(Not, 6835 bVar"b'14"), 6836 Bop(And, 6837 bVar"b'13", 6838 Bop(And, 6839 bVar"b'12", 6840 Bop(And, 6841 Mop(Not, 6842 bVar"b'7"), 6843 Bop(And, 6844 bVar"b'6", 6845 Bop(And, 6846 Mop(Not, 6847 bVar"b'5"), 6848 Bop(And, 6849 bVar"b'4", 6850 Bop(And, 6851 bVar"b'3", 6852 Bop(And, 6853 bVar"b'2", 6854 Bop(And, 6855 bVar"b'1", 6856 bVar"b'0"))))))))))))))))))))))))))), 6857 Call 6858 ("ClearExclusive",CTy"instruction", 6859 Mop(Cast F4,LL[bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8"]))), 6860 (Bop(And,bVar"b'31", 6861 Bop(And,bVar"b'30", 6862 Bop(And,Mop(Not,bVar"b'29"), 6863 Bop(And,bVar"b'28", 6864 Bop(And,Mop(Not,bVar"b'27"), 6865 Bop(And,bVar"b'26", 6866 Bop(And,bVar"b'25", 6867 Bop(And,Mop(Not,bVar"b'24"), 6868 Bop(And,bVar"b'23", 6869 Bop(And, 6870 Mop(Not,bVar"b'22"), 6871 Bop(And,bVar"b'21", 6872 Bop(And, 6873 bVar"b'20", 6874 Bop(And, 6875 bVar"b'19", 6876 Bop(And, 6877 bVar"b'18", 6878 Bop(And, 6879 bVar"b'17", 6880 Bop(And, 6881 bVar"b'16", 6882 Bop(And, 6883 Mop(Not, 6884 bVar"b'15"), 6885 Bop(And, 6886 Mop(Not, 6887 bVar"b'14"), 6888 Bop(And, 6889 Mop(Not, 6890 bVar"b'13"), 6891 Bop(And, 6892 Mop(Not, 6893 bVar"b'12"), 6894 Bop(And, 6895 Mop(Not, 6896 bVar"b'11"), 6897 Bop(And, 6898 Mop(Not, 6899 bVar"b'10"), 6900 Bop(And, 6901 bVar"b'9", 6902 Bop(And, 6903 bVar"b'8", 6904 Bop(And, 6905 bVar"b'7", 6906 Bop(And, 6907 bVar"b'6", 6908 Bop(And, 6909 bVar"b'5", 6910 Bop(And, 6911 Mop(Not, 6912 bVar"b'4"), 6913 Bop(And, 6914 Mop(Not, 6915 bVar"b'3"), 6916 Bop(And, 6917 Mop(Not, 6918 bVar"b'2"), 6919 Bop(And, 6920 Mop(Not, 6921 bVar"b'1"), 6922 Mop(Not, 6923 bVar"b'0")))))))))))))))))))))))))))))))), 6924 Call 6925 ("Debug",CTy"instruction",Const("DebugRestore",CTy"Debug"))), 6926 (Bop(And,bVar"b'31", 6927 Bop(And,bVar"b'30", 6928 Bop(And,Mop(Not,bVar"b'29"), 6929 Bop(And,bVar"b'28", 6930 Bop(And,Mop(Not,bVar"b'27"), 6931 Bop(And,bVar"b'26", 6932 Bop(And,Mop(Not,bVar"b'25"), 6933 Bop(And,Mop(Not,bVar"b'24"), 6934 Bop(And,bVar"b'23", 6935 Bop(And, 6936 Mop(Not,bVar"b'22"), 6937 Bop(And,bVar"b'21", 6938 Bop(And, 6939 Mop(Not, 6940 bVar"b'4"), 6941 Bop(And, 6942 Mop(Not, 6943 bVar"b'3"), 6944 Mop(Not, 6945 bVar"b'2")))))))))))))), 6946 Call 6947 ("Debug",CTy"instruction", 6948 Call 6949 ("DebugSwitch",CTy"Debug", 6950 Mop(Cast(FTy 2),LL[bVar"b'1",bVar"b'0"])))), 6951 (Bop(And,bVar"b'31", 6952 Bop(And,bVar"b'30", 6953 Bop(And,Mop(Not,bVar"b'29"), 6954 Bop(And,bVar"b'28", 6955 Bop(And,Mop(Not,bVar"b'27"), 6956 Bop(And,bVar"b'26", 6957 Bop(And,Mop(Not,bVar"b'25"), 6958 Bop(And,Mop(Not,bVar"b'24"), 6959 Bop(And,Mop(Not,bVar"b'23"), 6960 Bop(And,bVar"b'22", 6961 Bop(And, 6962 Mop(Not, 6963 bVar"b'21"), 6964 Bop(And, 6965 Mop(Not, 6966 bVar"b'4"), 6967 Bop(And, 6968 Mop(Not, 6969 bVar"b'3"), 6970 Bop(And, 6971 Mop(Not, 6972 bVar"b'2"), 6973 Bop(And, 6974 Mop(Not, 6975 bVar"b'1"), 6976 Mop(Not, 6977 bVar"b'0")))))))))))))))), 6978 Call 6979 ("Debug",CTy"instruction", 6980 Call 6981 ("Halt",CTy"Debug", 6982 Mop(Cast F16, 6983 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 6984 bVar"b'16",bVar"b'15",bVar"b'14",bVar"b'13", 6985 bVar"b'12",bVar"b'11",bVar"b'10",bVar"b'9", 6986 bVar"b'8",bVar"b'7",bVar"b'6",bVar"b'5"])))), 6987 (Bop(And,bVar"b'31", 6988 Bop(And,bVar"b'30", 6989 Bop(And,Mop(Not,bVar"b'29"), 6990 Bop(And,bVar"b'28", 6991 Bop(And,Mop(Not,bVar"b'27"), 6992 Bop(And,bVar"b'26", 6993 Bop(And,bVar"b'25", 6994 Bop(And,Mop(Not,bVar"b'24"), 6995 Bop(And,bVar"b'23", 6996 Bop(And, 6997 Mop(Not,bVar"b'22"), 6998 Bop(And, 6999 Mop(Not, 7000 bVar"b'21"), 7001 Bop(And, 7002 bVar"b'20", 7003 Bop(And, 7004 bVar"b'19", 7005 Bop(And, 7006 bVar"b'18", 7007 Bop(And, 7008 bVar"b'17", 7009 Bop(And, 7010 bVar"b'16", 7011 Bop(And, 7012 Mop(Not, 7013 bVar"b'15"), 7014 Bop(And, 7015 Mop(Not, 7016 bVar"b'14"), 7017 Bop(And, 7018 Mop(Not, 7019 bVar"b'13"), 7020 Bop(And, 7021 Mop(Not, 7022 bVar"b'12"), 7023 Bop(And, 7024 Mop(Not, 7025 bVar"b'11"), 7026 Bop(And, 7027 Mop(Not, 7028 bVar"b'10"), 7029 Bop(And, 7030 bVar"b'9", 7031 Bop(And, 7032 bVar"b'8", 7033 Bop(And, 7034 bVar"b'7", 7035 Bop(And, 7036 bVar"b'6", 7037 Bop(And, 7038 bVar"b'5", 7039 Bop(And, 7040 Mop(Not, 7041 bVar"b'4"), 7042 Bop(And, 7043 Mop(Not, 7044 bVar"b'3"), 7045 Bop(And, 7046 Mop(Not, 7047 bVar"b'2"), 7048 Bop(And, 7049 Mop(Not, 7050 bVar"b'1"), 7051 Mop(Not, 7052 bVar"b'0")))))))))))))))))))))))))))))))), 7053 Call 7054 ("System",CTy"instruction", 7055 Const("ExceptionReturn",CTy"System"))), 7056 (Bop(And,bVar"b'31", 7057 Bop(And,bVar"b'30", 7058 Bop(And,Mop(Not,bVar"b'29"), 7059 Bop(And,bVar"b'28", 7060 Bop(And,Mop(Not,bVar"b'27"), 7061 Bop(And,bVar"b'26", 7062 Bop(And,Mop(Not,bVar"b'25"), 7063 Bop(And,Mop(Not,bVar"b'24"), 7064 Bop(And,Mop(Not,bVar"b'23"), 7065 Bop(And, 7066 Mop(Not,bVar"b'22"), 7067 Bop(And, 7068 Mop(Not, 7069 bVar"b'21"), 7070 Bop(And, 7071 Mop(Not, 7072 bVar"b'4"), 7073 Bop(And, 7074 Mop(Not, 7075 bVar"b'3"), 7076 Bop(And, 7077 Mop(Not, 7078 bVar"b'2"), 7079 Bop(And, 7080 Mop(Not, 7081 bVar"b'1"), 7082 bVar"b'0"))))))))))))))), 7083 Call 7084 ("System",CTy"instruction", 7085 Call 7086 ("SupervisorCall",CTy"System", 7087 Mop(Cast F16, 7088 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 7089 bVar"b'16",bVar"b'15",bVar"b'14",bVar"b'13", 7090 bVar"b'12",bVar"b'11",bVar"b'10",bVar"b'9", 7091 bVar"b'8",bVar"b'7",bVar"b'6",bVar"b'5"])))), 7092 (Bop(And,bVar"b'31", 7093 Bop(And,bVar"b'30", 7094 Bop(And,Mop(Not,bVar"b'29"), 7095 Bop(And,bVar"b'28", 7096 Bop(And,Mop(Not,bVar"b'27"), 7097 Bop(And,bVar"b'26", 7098 Bop(And,Mop(Not,bVar"b'25"), 7099 Bop(And,Mop(Not,bVar"b'24"), 7100 Bop(And,Mop(Not,bVar"b'23"), 7101 Bop(And, 7102 Mop(Not,bVar"b'22"), 7103 Bop(And, 7104 Mop(Not, 7105 bVar"b'21"), 7106 Bop(And, 7107 Mop(Not, 7108 bVar"b'4"), 7109 Bop(And, 7110 Mop(Not, 7111 bVar"b'3"), 7112 Bop(And, 7113 Mop(Not, 7114 bVar"b'2"), 7115 Bop(And, 7116 bVar"b'1", 7117 Mop(Not, 7118 bVar"b'0")))))))))))))))), 7119 Call 7120 ("System",CTy"instruction", 7121 Call 7122 ("HypervisorCall",CTy"System", 7123 Mop(Cast F16, 7124 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 7125 bVar"b'16",bVar"b'15",bVar"b'14",bVar"b'13", 7126 bVar"b'12",bVar"b'11",bVar"b'10",bVar"b'9", 7127 bVar"b'8",bVar"b'7",bVar"b'6",bVar"b'5"])))), 7128 (Bop(And,bVar"b'31", 7129 Bop(And,bVar"b'30", 7130 Bop(And,Mop(Not,bVar"b'29"), 7131 Bop(And,bVar"b'28", 7132 Bop(And,Mop(Not,bVar"b'27"), 7133 Bop(And,bVar"b'26", 7134 Bop(And,Mop(Not,bVar"b'25"), 7135 Bop(And,Mop(Not,bVar"b'24"), 7136 Bop(And,Mop(Not,bVar"b'23"), 7137 Bop(And, 7138 Mop(Not,bVar"b'22"), 7139 Bop(And, 7140 Mop(Not, 7141 bVar"b'21"), 7142 Bop(And, 7143 Mop(Not, 7144 bVar"b'4"), 7145 Bop(And, 7146 Mop(Not, 7147 bVar"b'3"), 7148 Bop(And, 7149 Mop(Not, 7150 bVar"b'2"), 7151 Bop(And, 7152 bVar"b'1", 7153 bVar"b'0"))))))))))))))), 7154 Call 7155 ("System",CTy"instruction", 7156 Call 7157 ("SecureMonitorCall",CTy"System", 7158 Mop(Cast F16, 7159 LL[bVar"b'20",bVar"b'19",bVar"b'18",bVar"b'17", 7160 bVar"b'16",bVar"b'15",bVar"b'14",bVar"b'13", 7161 bVar"b'12",bVar"b'11",bVar"b'10",bVar"b'9", 7162 bVar"b'8",bVar"b'7",bVar"b'6",bVar"b'5"])))), 7163 (Bop(And,bVar"b'31", 7164 Bop(And,bVar"b'30", 7165 Bop(And,Mop(Not,bVar"b'29"), 7166 Bop(And,bVar"b'28", 7167 Bop(And,Mop(Not,bVar"b'27"), 7168 Bop(And,bVar"b'26", 7169 Bop(And,Mop(Not,bVar"b'25"), 7170 Bop(And,bVar"b'24", 7171 Bop(And,Mop(Not,bVar"b'23"), 7172 Bop(And, 7173 Mop(Not,bVar"b'22"), 7174 Bop(And, 7175 Mop(Not, 7176 bVar"b'20"), 7177 bVar"b'19"))))))))))), 7178 Call 7179 ("System",CTy"instruction", 7180 Call 7181 ("SystemInstruction",CTy"System", 7182 TP[Mop(Cast(FTy 3),LL[bVar"b'18",bVar"b'17",bVar"b'16"]), 7183 Mop(Cast(FTy 3),LL[bVar"b'7",bVar"b'6",bVar"b'5"]), 7184 Mop(Cast F4, 7185 LL[bVar"b'15",bVar"b'14",bVar"b'13",bVar"b'12"]), 7186 Mop(Cast F4, 7187 LL[bVar"b'11",bVar"b'10",bVar"b'9",bVar"b'8"]), 7188 Mop(Cast bTy,Mop(Cast F1,LL[bVar"b'21"])), 7189 Mop(Cast(FTy 5), 7190 LL[bVar"b'4",bVar"b'3",bVar"b'2",bVar"b'1", 7191 bVar"b'0"])])))], 7192 Const("Unallocated",CTy"instruction")))) 7193; 7194val Fetch_def = Def 7195 ("Fetch",qVar"state", 7196 Apply 7197 (Call 7198 ("Mem",ATy(qTy,PTy(F32,qTy)), 7199 TP[Dest("PC",F64,qVar"state"),LN 4, 7200 LC("AccType_IFETCH",CTy"AccType")]),qVar"state")) 7201; 7202val Next_def = Def 7203 ("Next",qVar"state", 7204 Let(TP[Var("v",F32),qVar"s"], 7205 Apply 7206 (Const("Fetch",ATy(qTy,PTy(F32,qTy))), 7207 Rupd("branch_hint",TP[qVar"state",LO(CTy"BranchType")])), 7208 Let(qVar"s", 7209 Apply 7210 (Call 7211 ("Run",ATy(qTy,qTy), 7212 Call("Decode",CTy"instruction",Var("v",F32))),qVar"s"), 7213 ITE(Mop(Not, 7214 Mop(IsSome, 7215 Dest("branch_hint",OTy(CTy"BranchType"),qVar"s"))), 7216 Rupd 7217 ("PC", 7218 TP[qVar"s",Bop(Add,Dest("PC",F64,qVar"s"),LW(4,64))]), 7219 qVar"s")))) 7220; 7221val CountTrailing_def = tDef 7222 ("CountTrailing",TP[bVar"b",Var("w",BTy"N")], 7223 ITE(Bop(Or,EQ(Bop(Bit,Var("w",BTy"N"),LN 0),bVar"b"), 7224 ITE(bVar"b",EQ(Var("w",BTy"N"),LY(0,"N")), 7225 EQ(Var("w",BTy"N"),Mop(Neg,LY(1,"N"))))),LN 0, 7226 Bop(Add,LN 1, 7227 Call 7228 ("CountTrailing",nTy, 7229 TP[bVar"b",Bop(Lsr,Var("w",BTy"N"),LN 1)]))), 7230 Close(TP[bVar"b",Var("w",BTy"N")],Mop(Cast nTy,Var("w",BTy"N"))), 7231 SRW_TAC [] [wordsTheory.LSR_LESS] 7232THEN Cases_on `w = 0w` 7233THEN FULL_SIMP_TAC (srw_ss()) [wordsTheory.word_0, wordsTheory.LSR_LESS] 7234) 7235; 7236val EncodeBitMaskAux_def = Def 7237 ("EncodeBitMaskAux",Var("imm",BTy"N"), 7238 Let(nVar"pref0",Call("CountTrailing",nTy,TP[LT,Var("imm",BTy"N")]), 7239 ITE(EQ(nVar"pref0",LN 0), 7240 Let(nVar"pref1", 7241 Call("CountTrailing",nTy,TP[LF,Var("imm",BTy"N")]), 7242 Let(nVar"run0", 7243 Call 7244 ("CountTrailing",nTy, 7245 TP[LT,Bop(Ror,Var("imm",BTy"N"),nVar"pref1")]), 7246 Let(nVar"run1", 7247 Call 7248 ("CountTrailing",nTy, 7249 TP[LF, 7250 Bop(Ror,Var("imm",BTy"N"), 7251 Bop(Add,nVar"pref1",nVar"run0"))]), 7252 TP[Bop(Add,nVar"run0",nVar"run1"),nVar"run1", 7253 Bop(Sub,nVar"run1",nVar"pref1")]))), 7254 Let(nVar"run1", 7255 Call 7256 ("CountTrailing",nTy, 7257 TP[LF,Bop(Ror,Var("imm",BTy"N"),nVar"pref0")]), 7258 Let(nVar"run0", 7259 Call 7260 ("CountTrailing",nTy, 7261 TP[LT, 7262 Bop(Ror,Var("imm",BTy"N"), 7263 Bop(Add,nVar"pref0",nVar"run1"))]), 7264 TP[Bop(Add,nVar"run0",nVar"run1"),nVar"run1", 7265 Bop(Sub,Bop(Add,nVar"run0",nVar"run1"),nVar"pref0")]))))) 7266; 7267val EncodeBitMask_def = Def 7268 ("EncodeBitMask",Var("imm",BTy"N"), 7269 Let(TP[nVar"e",nVar"S",nVar"R"], 7270 Call("EncodeBitMaskAux",PTy(nTy,PTy(nTy,nTy)),Var("imm",BTy"N")), 7271 Let(TP[Var("immN",F1),Var("imms",FTy 6),Var("immr",FTy 6)], 7272 ITE(EQ(nVar"e",LN 64), 7273 TP[LW(1,1),Mop(Cast(FTy 6),Bop(Sub,nVar"S",LN 1)), 7274 Mop(Cast(FTy 6),nVar"R")], 7275 TP[LW(0,1), 7276 Bop(BOr, 7277 Mop(BNot, 7278 Mop(Cast(FTy 6), 7279 Bop(Sub,Bop(Mul,nVar"e",LN 2),LN 1))), 7280 Mop(Cast(FTy 6),Bop(Sub,nVar"S",LN 1))), 7281 Mop(Cast(FTy 6),nVar"R")]), 7282 CS(Call 7283 ("DecodeBitMasks",OTy(PTy(BTy"N",BTy"N")), 7284 TP[Var("immN",F1),Var("imms",FTy 6),Var("immr",FTy 6),LT]), 7285 [(Mop(Some,TP[Var("imm2",BTy"N"),AVar(BTy"N")]), 7286 ITE(EQ(Var("imm",BTy"N"),Var("imm2",BTy"N")), 7287 Mop(Some, 7288 TP[Var("immN",F1),Var("imms",FTy 6), 7289 Var("immr",FTy 6)]), 7290 LO(PTy(F1,PTy(FTy 6,FTy 6))))), 7291 (LO(PTy(BTy"N",BTy"N")),LO(PTy(F1,PTy(FTy 6,FTy 6))))])))) 7292; 7293val e_sf_def = Def 7294 ("e_sf",Var("sf",BTy"N"),Mop(Cast F1,EQ(Mop(Size,LY(0,"N")),LN 64))) 7295; 7296val EncodeLogicalOp_def = Def 7297 ("EncodeLogicalOp",TP[Var("opc",CTy"LogicalOp"),bVar"setflags"], 7298 CS(TP[Var("opc",CTy"LogicalOp"),bVar"setflags"], 7299 [(TP[LC("LogicalOp_AND",CTy"LogicalOp"),LF],Mop(Some,LW(0,2))), 7300 (TP[LC("LogicalOp_ORR",CTy"LogicalOp"),LF],Mop(Some,LW(1,2))), 7301 (TP[LC("LogicalOp_EOR",CTy"LogicalOp"),LF],Mop(Some,LW(2,2))), 7302 (TP[LC("LogicalOp_AND",CTy"LogicalOp"),LT],Mop(Some,LW(3,2))), 7303 (AVar(PTy(CTy"LogicalOp",bTy)),LO(FTy 2))])) 7304; 7305val e_data_def = Def 7306 ("e_data",Var("i",CTy"Data"), 7307 CS(Var("i",CTy"Data"), 7308 [(Call 7309 ("AddSubShiftedRegister@32",CTy"Data", 7310 TP[AVar F32,bVar"opc",bVar"s",Var("sh",CTy"ShiftType"), 7311 Var("rm",FTy 5),Var("imm6",FTy 6),Var("rn",FTy 5), 7312 Var("rd",FTy 5)]), 7313 ITE(Bop(Bit,Var("imm6",FTy 6),LN 5), 7314 Call("BadCode",CTy"MachineCode",LS"AddSubShiftedRegister32"), 7315 Call 7316 ("ARM8",CTy"MachineCode", 7317 CC[LW(0,1),Mop(Cast F1,bVar"opc"),Mop(Cast F1,bVar"s"), 7318 LW(11,5),Mop(Cast(FTy 2),Var("sh",CTy"ShiftType")), 7319 LW(0,1),Var("rm",FTy 5),Var("imm6",FTy 6), 7320 Var("rn",FTy 5),Var("rd",FTy 5)]))), 7321 (Call 7322 ("AddSubShiftedRegister@64",CTy"Data", 7323 TP[AVar F64,bVar"opc",bVar"s",Var("sh",CTy"ShiftType"), 7324 Var("rm",FTy 5),Var("imm6",FTy 6),Var("rn",FTy 5), 7325 Var("rd",FTy 5)]), 7326 Call 7327 ("ARM8",CTy"MachineCode", 7328 CC[LW(1,1),Mop(Cast F1,bVar"opc"),Mop(Cast F1,bVar"s"), 7329 LW(11,5),Mop(Cast(FTy 2),Var("sh",CTy"ShiftType")),LW(0,1), 7330 Var("rm",FTy 5),Var("imm6",FTy 6),Var("rn",FTy 5), 7331 Var("rd",FTy 5)])), 7332 (Call 7333 ("AddSubExtendRegister@32",CTy"Data", 7334 TP[Var("sf",F32),bVar"opc",bVar"s",Var("rm",FTy 5), 7335 Var("sty",CTy"ExtendType"),Var("imm3",FTy 3), 7336 Var("rn",FTy 5),Var("rd",FTy 5)]), 7337 Call 7338 ("ARM8",CTy"MachineCode", 7339 CC[Call("e_sf",F1,Var("sf",F32)),Mop(Cast F1,bVar"opc"), 7340 Mop(Cast F1,bVar"s"),LW(89,8),Var("rm",FTy 5), 7341 Mop(Cast(FTy 3),Var("sty",CTy"ExtendType")), 7342 Var("imm3",FTy 3),Var("rn",FTy 5),Var("rd",FTy 5)])), 7343 (Call 7344 ("AddSubExtendRegister@64",CTy"Data", 7345 TP[Var("sf",F64),bVar"opc",bVar"s",Var("rm",FTy 5), 7346 Var("sty",CTy"ExtendType"),Var("imm3",FTy 3), 7347 Var("rn",FTy 5),Var("rd",FTy 5)]), 7348 Call 7349 ("ARM8",CTy"MachineCode", 7350 CC[Call("e_sf",F1,Var("sf",F64)),Mop(Cast F1,bVar"opc"), 7351 Mop(Cast F1,bVar"s"),LW(89,8),Var("rm",FTy 5), 7352 Mop(Cast(FTy 3),Var("sty",CTy"ExtendType")), 7353 Var("imm3",FTy 3),Var("rn",FTy 5),Var("rd",FTy 5)])), 7354 (Call 7355 ("AddSubImmediate@32",CTy"Data", 7356 TP[Var("sf",F32),bVar"opc",bVar"s",Var("imm",F32), 7357 Var("rn",FTy 5),Var("rd",FTy 5)]), 7358 ITB([(EQ(Bop(BAnd,Var("imm",F32),Mop(BNot,LW(4095,32))),LW(0,32)), 7359 Call 7360 ("ARM8",CTy"MachineCode", 7361 CC[Call("e_sf",F1,Var("sf",F32)),Mop(Cast F1,bVar"opc"), 7362 Mop(Cast F1,bVar"s"),LW(68,7), 7363 EX(Var("imm",F32),LN 11,LN 0,FTy 12),Var("rn",FTy 5), 7364 Var("rd",FTy 5)])), 7365 (EQ(Bop(BAnd,Var("imm",F32),Mop(BNot,LW(16773120,32))), 7366 LW(0,32)), 7367 Call 7368 ("ARM8",CTy"MachineCode", 7369 CC[Call("e_sf",F1,Var("sf",F32)),Mop(Cast F1,bVar"opc"), 7370 Mop(Cast F1,bVar"s"),LW(69,7), 7371 EX(Var("imm",F32),LN 23,LN 12,FTy 12),Var("rn",FTy 5), 7372 Var("rd",FTy 5)]))], 7373 Call("BadCode",CTy"MachineCode",LS"AddSubImmediate"))), 7374 (Call 7375 ("AddSubImmediate@64",CTy"Data", 7376 TP[Var("sf",F64),bVar"opc",bVar"s",Var("imm",F64), 7377 Var("rn",FTy 5),Var("rd",FTy 5)]), 7378 ITB([(EQ(Bop(BAnd,Var("imm",F64),Mop(BNot,LW(4095,64))),LW(0,64)), 7379 Call 7380 ("ARM8",CTy"MachineCode", 7381 CC[Call("e_sf",F1,Var("sf",F64)),Mop(Cast F1,bVar"opc"), 7382 Mop(Cast F1,bVar"s"),LW(68,7), 7383 EX(Var("imm",F64),LN 11,LN 0,FTy 12),Var("rn",FTy 5), 7384 Var("rd",FTy 5)])), 7385 (EQ(Bop(BAnd,Var("imm",F64),Mop(BNot,LW(16773120,64))), 7386 LW(0,64)), 7387 Call 7388 ("ARM8",CTy"MachineCode", 7389 CC[Call("e_sf",F1,Var("sf",F64)),Mop(Cast F1,bVar"opc"), 7390 Mop(Cast F1,bVar"s"),LW(69,7), 7391 EX(Var("imm",F64),LN 23,LN 12,FTy 12),Var("rn",FTy 5), 7392 Var("rd",FTy 5)]))], 7393 Call("BadCode",CTy"MachineCode",LS"AddSubImmediate"))), 7394 (Call 7395 ("AddSubCarry@32",CTy"Data", 7396 TP[AVar F32,bVar"opc",bVar"s",Var("rm",FTy 5),Var("rn",FTy 5), 7397 Var("rd",FTy 5)]), 7398 Call 7399 ("ARM8",CTy"MachineCode", 7400 CC[LW(0,1),Mop(Cast F1,bVar"opc"),Mop(Cast F1,bVar"s"), 7401 LW(208,8),Var("rm",FTy 5),LW(0,6),Var("rn",FTy 5), 7402 Var("rd",FTy 5)])), 7403 (Call 7404 ("AddSubCarry@64",CTy"Data", 7405 TP[AVar F64,bVar"opc",bVar"s",Var("rm",FTy 5),Var("rn",FTy 5), 7406 Var("rd",FTy 5)]), 7407 Call 7408 ("ARM8",CTy"MachineCode", 7409 CC[LW(1,1),Mop(Cast F1,bVar"opc"),Mop(Cast F1,bVar"s"), 7410 LW(208,8),Var("rm",FTy 5),LW(0,6),Var("rn",FTy 5), 7411 Var("rd",FTy 5)])), 7412 (Call 7413 ("LogicalShiftedRegister@32",CTy"Data", 7414 TP[Var("sf",F32),Var("opc",CTy"LogicalOp"),bVar"invert", 7415 bVar"s",Var("sh",CTy"ShiftType"),nVar"imm",Var("rm",FTy 5), 7416 Var("rn",FTy 5),Var("rd",FTy 5)]), 7417 CS(Call 7418 ("EncodeLogicalOp",OTy(FTy 2), 7419 TP[Var("opc",CTy"LogicalOp"),bVar"s"]), 7420 [(Mop(Some,Var("opc",FTy 2)), 7421 Let(Var("imm6",FTy 6),Mop(Cast(FTy 6),nVar"imm"), 7422 ITE(EQ(nVar"imm",Mop(Cast nTy,Var("imm6",FTy 6))), 7423 Call 7424 ("ARM8",CTy"MachineCode", 7425 CC[Call("e_sf",F1,Var("sf",F32)),Var("opc",FTy 2), 7426 LW(10,5), 7427 Mop(Cast(FTy 2),Var("sh",CTy"ShiftType")), 7428 Mop(Cast F1,bVar"invert"),Var("rm",FTy 5), 7429 Var("imm6",FTy 6),Var("rn",FTy 5), 7430 Var("rd",FTy 5)]), 7431 Call 7432 ("BadCode",CTy"MachineCode", 7433 LS"LogicalShiftedRegister")))), 7434 (LO(FTy 2), 7435 Call("BadCode",CTy"MachineCode",LS"LogicalShiftedRegister"))])), 7436 (Call 7437 ("LogicalShiftedRegister@64",CTy"Data", 7438 TP[Var("sf",F64),Var("opc",CTy"LogicalOp"),bVar"invert", 7439 bVar"s",Var("sh",CTy"ShiftType"),nVar"imm",Var("rm",FTy 5), 7440 Var("rn",FTy 5),Var("rd",FTy 5)]), 7441 CS(Call 7442 ("EncodeLogicalOp",OTy(FTy 2), 7443 TP[Var("opc",CTy"LogicalOp"),bVar"s"]), 7444 [(Mop(Some,Var("opc",FTy 2)), 7445 Let(Var("imm6",FTy 6),Mop(Cast(FTy 6),nVar"imm"), 7446 ITE(EQ(nVar"imm",Mop(Cast nTy,Var("imm6",FTy 6))), 7447 Call 7448 ("ARM8",CTy"MachineCode", 7449 CC[Call("e_sf",F1,Var("sf",F64)),Var("opc",FTy 2), 7450 LW(10,5), 7451 Mop(Cast(FTy 2),Var("sh",CTy"ShiftType")), 7452 Mop(Cast F1,bVar"invert"),Var("rm",FTy 5), 7453 Var("imm6",FTy 6),Var("rn",FTy 5), 7454 Var("rd",FTy 5)]), 7455 Call 7456 ("BadCode",CTy"MachineCode", 7457 LS"LogicalShiftedRegister")))), 7458 (LO(FTy 2), 7459 Call("BadCode",CTy"MachineCode",LS"LogicalShiftedRegister"))])), 7460 (Call 7461 ("LogicalImmediate@32",CTy"Data", 7462 TP[AVar F32,Var("opc",CTy"LogicalOp"),bVar"s",Var("imm",F32), 7463 Var("rn",FTy 5),Var("rd",FTy 5)]), 7464 CS(TP[Call 7465 ("EncodeBitMask",OTy(PTy(F1,PTy(FTy 6,FTy 6))), 7466 Var("imm",F32)), 7467 Call 7468 ("EncodeLogicalOp",OTy(FTy 2), 7469 TP[Var("opc",CTy"LogicalOp"),bVar"s"])], 7470 [(TP[Mop(Some,TP[AVar F1,Var("imms",FTy 6),Var("immr",FTy 6)]), 7471 Mop(Some,Var("opc",FTy 2))], 7472 Call 7473 ("ARM8",CTy"MachineCode", 7474 CC[LW(0,1),Var("opc",FTy 2),LW(72,7),Var("immr",FTy 6), 7475 Var("imms",FTy 6),Var("rn",FTy 5),Var("rd",FTy 5)])), 7476 (AVar(PTy(OTy(PTy(F1,PTy(FTy 6,FTy 6))),OTy(FTy 2))), 7477 Call("BadCode",CTy"MachineCode",LS"LogicalImmediate32"))])), 7478 (Call 7479 ("LogicalImmediate@64",CTy"Data", 7480 TP[AVar F64,Var("opc",CTy"LogicalOp"),bVar"s",Var("imm",F64), 7481 Var("rn",FTy 5),Var("rd",FTy 5)]), 7482 CS(TP[Call 7483 ("EncodeBitMask",OTy(PTy(F1,PTy(FTy 6,FTy 6))), 7484 Var("imm",F64)), 7485 Call 7486 ("EncodeLogicalOp",OTy(FTy 2), 7487 TP[Var("opc",CTy"LogicalOp"),bVar"s"])], 7488 [(TP[Mop(Some, 7489 TP[Var("N",F1),Var("imms",FTy 6),Var("immr",FTy 6)]), 7490 Mop(Some,Var("opc",FTy 2))], 7491 Call 7492 ("ARM8",CTy"MachineCode", 7493 CC[LW(1,1),Var("opc",FTy 2),LW(36,6),Var("N",F1), 7494 Var("immr",FTy 6),Var("imms",FTy 6),Var("rn",FTy 5), 7495 Var("rd",FTy 5)])), 7496 (AVar(PTy(OTy(PTy(F1,PTy(FTy 6,FTy 6))),OTy(FTy 2))), 7497 Call("BadCode",CTy"MachineCode",LS"LogicalImmediate64"))])), 7498 (Call 7499 ("Shift@32",CTy"Data", 7500 TP[AVar F32,Var("sh",CTy"ShiftType"),Var("rm",FTy 5), 7501 Var("rn",FTy 5),Var("rd",FTy 5)]), 7502 Call 7503 ("ARM8",CTy"MachineCode", 7504 CC[LW(214,11),Var("rm",FTy 5),LW(2,4), 7505 Mop(Cast(FTy 2),Var("sh",CTy"ShiftType")),Var("rn",FTy 5), 7506 Var("rd",FTy 5)])), 7507 (Call 7508 ("Shift@64",CTy"Data", 7509 TP[AVar F64,Var("sh",CTy"ShiftType"),Var("rm",FTy 5), 7510 Var("rn",FTy 5),Var("rd",FTy 5)]), 7511 Call 7512 ("ARM8",CTy"MachineCode", 7513 CC[LW(1238,11),Var("rm",FTy 5),LW(2,4), 7514 Mop(Cast(FTy 2),Var("sh",CTy"ShiftType")),Var("rn",FTy 5), 7515 Var("rd",FTy 5)])), 7516 (Call 7517 ("MoveWide@32",CTy"Data", 7518 TP[AVar F32,Var("opc",CTy"MoveWideOp"),Var("hw",FTy 2), 7519 Var("imm16",F16),Var("rd",FTy 5)]), 7520 Call 7521 ("ARM8",CTy"MachineCode", 7522 CC[LW(0,1), 7523 CS(Var("opc",CTy"MoveWideOp"), 7524 [(LC("MoveWideOp_N",CTy"MoveWideOp"),LW(0,2)), 7525 (LC("MoveWideOp_Z",CTy"MoveWideOp"),LW(2,2)), 7526 (LC("MoveWideOp_K",CTy"MoveWideOp"),LW(3,2))]),LW(37,6), 7527 Var("hw",FTy 2),Var("imm16",F16),Var("rd",FTy 5)])), 7528 (Call 7529 ("MoveWide@64",CTy"Data", 7530 TP[AVar F64,Var("opc",CTy"MoveWideOp"),Var("hw",FTy 2), 7531 Var("imm16",F16),Var("rd",FTy 5)]), 7532 Call 7533 ("ARM8",CTy"MachineCode", 7534 CC[LW(1,1), 7535 CS(Var("opc",CTy"MoveWideOp"), 7536 [(LC("MoveWideOp_N",CTy"MoveWideOp"),LW(0,2)), 7537 (LC("MoveWideOp_Z",CTy"MoveWideOp"),LW(2,2)), 7538 (LC("MoveWideOp_K",CTy"MoveWideOp"),LW(3,2))]),LW(37,6), 7539 Var("hw",FTy 2),Var("imm16",F16),Var("rd",FTy 5)])), 7540 (Call 7541 ("BitfieldMove@32",CTy"Data", 7542 TP[Var("sf",F32),bVar"inzero",bVar"extend",Var("wmask",F32), 7543 Var("tmask",F32),nVar"immr",nVar"imms",Var("rn",FTy 5), 7544 Var("rd",FTy 5)]), 7545 Let(Var("sz",F1),Call("e_sf",F1,Var("sf",F32)), 7546 CS(CS(TP[bVar"inzero",bVar"extend"], 7547 [(TP[LT,LT],Mop(Some,LW(0,2))), 7548 (TP[LF,LF],Mop(Some,LW(1,2))), 7549 (TP[LT,LF],Mop(Some,LW(2,2))), 7550 (AVar(PTy(bTy,bTy)),LO(FTy 2))]), 7551 [(Mop(Some,Var("opc",FTy 2)), 7552 Let(Var("r",FTy 6),Mop(Cast(FTy 6),nVar"immr"), 7553 Let(Var("s",FTy 6),Mop(Cast(FTy 6),nVar"imms"), 7554 ITE(Bop(And, 7555 EQ(nVar"immr", 7556 Mop(Cast nTy,Var("r",FTy 6))), 7557 Bop(And, 7558 EQ(nVar"imms", 7559 Mop(Cast nTy,Var("s",FTy 6))), 7560 EQ(Call 7561 ("DecodeBitMasks", 7562 OTy(PTy(F32,F32)), 7563 TP[Var("sz",F1),Var("s",FTy 6), 7564 Var("r",FTy 6),LF]), 7565 Mop(Some, 7566 TP[Var("wmask",F32), 7567 Var("tmask",F32)])))), 7568 Call 7569 ("ARM8",CTy"MachineCode", 7570 CC[Var("sz",F1),Var("opc",FTy 2),LW(38,6), 7571 Var("sz",F1),Var("r",FTy 6), 7572 Var("s",FTy 6),Var("rn",FTy 5), 7573 Var("rd",FTy 5)]), 7574 Call 7575 ("BadCode",CTy"MachineCode", 7576 LS"BitfieldMove"))))), 7577 (LO(FTy 2), 7578 Call("BadCode",CTy"MachineCode",LS"BitfieldMove"))]))), 7579 (Call 7580 ("BitfieldMove@64",CTy"Data", 7581 TP[Var("sf",F64),bVar"inzero",bVar"extend",Var("wmask",F64), 7582 Var("tmask",F64),nVar"immr",nVar"imms",Var("rn",FTy 5), 7583 Var("rd",FTy 5)]), 7584 Let(Var("sz",F1),Call("e_sf",F1,Var("sf",F64)), 7585 CS(CS(TP[bVar"inzero",bVar"extend"], 7586 [(TP[LT,LT],Mop(Some,LW(0,2))), 7587 (TP[LF,LF],Mop(Some,LW(1,2))), 7588 (TP[LT,LF],Mop(Some,LW(2,2))), 7589 (AVar(PTy(bTy,bTy)),LO(FTy 2))]), 7590 [(Mop(Some,Var("opc",FTy 2)), 7591 Let(Var("r",FTy 6),Mop(Cast(FTy 6),nVar"immr"), 7592 Let(Var("s",FTy 6),Mop(Cast(FTy 6),nVar"imms"), 7593 ITE(Bop(And, 7594 EQ(nVar"immr", 7595 Mop(Cast nTy,Var("r",FTy 6))), 7596 Bop(And, 7597 EQ(nVar"imms", 7598 Mop(Cast nTy,Var("s",FTy 6))), 7599 EQ(Call 7600 ("DecodeBitMasks", 7601 OTy(PTy(F64,F64)), 7602 TP[Var("sz",F1),Var("s",FTy 6), 7603 Var("r",FTy 6),LF]), 7604 Mop(Some, 7605 TP[Var("wmask",F64), 7606 Var("tmask",F64)])))), 7607 Call 7608 ("ARM8",CTy"MachineCode", 7609 CC[Var("sz",F1),Var("opc",FTy 2),LW(38,6), 7610 Var("sz",F1),Var("r",FTy 6), 7611 Var("s",FTy 6),Var("rn",FTy 5), 7612 Var("rd",FTy 5)]), 7613 Call 7614 ("BadCode",CTy"MachineCode", 7615 LS"BitfieldMove"))))), 7616 (LO(FTy 2), 7617 Call("BadCode",CTy"MachineCode",LS"BitfieldMove"))]))), 7618 (Call 7619 ("ConditionalCompareImmediate@32",CTy"Data", 7620 TP[Var("sf",F32),bVar"opc",Var("imm",F32),Var("cd",F4), 7621 TP[bVar"n",bVar"z",bVar"c",bVar"v"],Var("rn",FTy 5)]), 7622 Let(Var("imm5",FTy 5),Mop(Cast(FTy 5),Var("imm",F32)), 7623 ITE(EQ(Var("imm",F32),Mop(Cast F32,Var("imm5",FTy 5))), 7624 Call 7625 ("ARM8",CTy"MachineCode", 7626 CC[Call("e_sf",F1,Var("sf",F32)), 7627 Mop(Cast F1,bVar"opc"),LW(466,9),Var("imm5",FTy 5), 7628 Var("cd",F4),LW(2,2),Var("rn",FTy 5),LW(0,1), 7629 Mop(Cast F1,bVar"n"),Mop(Cast F1,bVar"z"), 7630 Mop(Cast F1,bVar"c"),Mop(Cast F1,bVar"v")]), 7631 Call 7632 ("BadCode",CTy"MachineCode", 7633 LS"ConditionalCompareImmediate")))), 7634 (Call 7635 ("ConditionalCompareImmediate@64",CTy"Data", 7636 TP[Var("sf",F64),bVar"opc",Var("imm",F64),Var("cd",F4), 7637 TP[bVar"n",bVar"z",bVar"c",bVar"v"],Var("rn",FTy 5)]), 7638 Let(Var("imm5",FTy 5),Mop(Cast(FTy 5),Var("imm",F64)), 7639 ITE(EQ(Var("imm",F64),Mop(Cast F64,Var("imm5",FTy 5))), 7640 Call 7641 ("ARM8",CTy"MachineCode", 7642 CC[Call("e_sf",F1,Var("sf",F64)), 7643 Mop(Cast F1,bVar"opc"),LW(466,9),Var("imm5",FTy 5), 7644 Var("cd",F4),LW(2,2),Var("rn",FTy 5),LW(0,1), 7645 Mop(Cast F1,bVar"n"),Mop(Cast F1,bVar"z"), 7646 Mop(Cast F1,bVar"c"),Mop(Cast F1,bVar"v")]), 7647 Call 7648 ("BadCode",CTy"MachineCode", 7649 LS"ConditionalCompareImmediate")))), 7650 (Call 7651 ("ConditionalCompareRegister@32",CTy"Data", 7652 TP[Var("sf",F32),bVar"opc",Var("cd",F4), 7653 TP[bVar"n",bVar"z",bVar"c",bVar"v"],Var("rm",FTy 5), 7654 Var("rn",FTy 5)]), 7655 Call 7656 ("ARM8",CTy"MachineCode", 7657 CC[Call("e_sf",F1,Var("sf",F32)),Mop(Cast F1,bVar"opc"), 7658 LW(466,9),Var("rm",FTy 5),Var("cd",F4),LW(0,2), 7659 Var("rn",FTy 5),LW(0,1),Mop(Cast F1,bVar"n"), 7660 Mop(Cast F1,bVar"z"),Mop(Cast F1,bVar"c"), 7661 Mop(Cast F1,bVar"v")])), 7662 (Call 7663 ("ConditionalCompareRegister@64",CTy"Data", 7664 TP[Var("sf",F64),bVar"opc",Var("cd",F4), 7665 TP[bVar"n",bVar"z",bVar"c",bVar"v"],Var("rm",FTy 5), 7666 Var("rn",FTy 5)]), 7667 Call 7668 ("ARM8",CTy"MachineCode", 7669 CC[Call("e_sf",F1,Var("sf",F64)),Mop(Cast F1,bVar"opc"), 7670 LW(466,9),Var("rm",FTy 5),Var("cd",F4),LW(0,2), 7671 Var("rn",FTy 5),LW(0,1),Mop(Cast F1,bVar"n"), 7672 Mop(Cast F1,bVar"z"),Mop(Cast F1,bVar"c"), 7673 Mop(Cast F1,bVar"v")])), 7674 (Call 7675 ("ConditionalSelect@32",CTy"Data", 7676 TP[AVar F32,bVar"op",bVar"o2",Var("cd",F4),Var("rm",FTy 5), 7677 Var("rn",FTy 5),Var("rd",FTy 5)]), 7678 Call 7679 ("ARM8",CTy"MachineCode", 7680 CC[LW(0,1),Mop(Cast F1,bVar"op"),LW(212,9),Var("rm",FTy 5), 7681 Var("cd",F4),LW(0,1),Mop(Cast F1,bVar"o2"),Var("rn",FTy 5), 7682 Var("rd",FTy 5)])), 7683 (Call 7684 ("ConditionalSelect@64",CTy"Data", 7685 TP[AVar F64,bVar"op",bVar"o2",Var("cd",F4),Var("rm",FTy 5), 7686 Var("rn",FTy 5),Var("rd",FTy 5)]), 7687 Call 7688 ("ARM8",CTy"MachineCode", 7689 CC[LW(1,1),Mop(Cast F1,bVar"op"),LW(212,9),Var("rm",FTy 5), 7690 Var("cd",F4),LW(0,1),Mop(Cast F1,bVar"o2"),Var("rn",FTy 5), 7691 Var("rd",FTy 5)])), 7692 (Call 7693 ("CountLeading@32",CTy"Data", 7694 TP[AVar F32,bVar"op",Var("rn",FTy 5),Var("rd",FTy 5)]), 7695 Call 7696 ("ARM8",CTy"MachineCode", 7697 CC[LW(743426,21),Mop(Cast F1,bVar"op"),Var("rn",FTy 5), 7698 Var("rd",FTy 5)])), 7699 (Call 7700 ("CountLeading@64",CTy"Data", 7701 TP[AVar F64,bVar"op",Var("rn",FTy 5),Var("rd",FTy 5)]), 7702 Call 7703 ("ARM8",CTy"MachineCode", 7704 CC[LW(1792002,21),Mop(Cast F1,bVar"op"),Var("rn",FTy 5), 7705 Var("rd",FTy 5)])), 7706 (Call 7707 ("ExtractRegister@32",CTy"Data", 7708 TP[AVar F32,Var("imms",FTy 6),Var("rm",FTy 5),Var("rn",FTy 5), 7709 Var("rd",FTy 5)]), 7710 ITE(Bop(Bit,Var("imms",FTy 6),LN 5), 7711 Call("BadCode",CTy"MachineCode",LS"ExtractRegister32"), 7712 Call 7713 ("ARM8",CTy"MachineCode", 7714 CC[LW(156,11),Var("rm",FTy 5),Var("imms",FTy 6), 7715 Var("rn",FTy 5),Var("rd",FTy 5)]))), 7716 (Call 7717 ("ExtractRegister@64",CTy"Data", 7718 TP[AVar F64,Var("imms",FTy 6),Var("rm",FTy 5),Var("rn",FTy 5), 7719 Var("rd",FTy 5)]), 7720 Call 7721 ("ARM8",CTy"MachineCode", 7722 CC[LW(1182,11),Var("rm",FTy 5),Var("imms",FTy 6), 7723 Var("rn",FTy 5),Var("rd",FTy 5)])), 7724 (Call 7725 ("Division@32",CTy"Data", 7726 TP[AVar F32,bVar"o1",Var("rm",FTy 5),Var("rn",FTy 5), 7727 Var("rd",FTy 5)]), 7728 Call 7729 ("ARM8",CTy"MachineCode", 7730 CC[LW(214,11),Var("rm",FTy 5),LW(1,5), 7731 Mop(Cast F1,Mop(Not,bVar"o1")),Var("rn",FTy 5), 7732 Var("rd",FTy 5)])), 7733 (Call 7734 ("Division@64",CTy"Data", 7735 TP[AVar F64,bVar"o1",Var("rm",FTy 5),Var("rn",FTy 5), 7736 Var("rd",FTy 5)]), 7737 Call 7738 ("ARM8",CTy"MachineCode", 7739 CC[LW(1238,11),Var("rm",FTy 5),LW(1,5), 7740 Mop(Cast F1,Mop(Not,bVar"o1")),Var("rn",FTy 5), 7741 Var("rd",FTy 5)])), 7742 (Call 7743 ("MultiplyAddSub@32",CTy"Data", 7744 TP[AVar F32,bVar"o0",Var("rm",FTy 5),Var("ra",FTy 5), 7745 Var("rn",FTy 5),Var("rd",FTy 5)]), 7746 Call 7747 ("ARM8",CTy"MachineCode", 7748 CC[LW(216,11),Var("rm",FTy 5),Mop(Cast F1,bVar"o0"), 7749 Var("ra",FTy 5),Var("rn",FTy 5),Var("rd",FTy 5)])), 7750 (Call 7751 ("MultiplyAddSub@64",CTy"Data", 7752 TP[AVar F64,bVar"o0",Var("rm",FTy 5),Var("ra",FTy 5), 7753 Var("rn",FTy 5),Var("rd",FTy 5)]), 7754 Call 7755 ("ARM8",CTy"MachineCode", 7756 CC[LW(1240,11),Var("rm",FTy 5),Mop(Cast F1,bVar"o0"), 7757 Var("ra",FTy 5),Var("rn",FTy 5),Var("rd",FTy 5)])), 7758 (Call 7759 ("MultiplyAddSubLong",CTy"Data", 7760 TP[bVar"o0",bVar"u",Var("rm",FTy 5),Var("ra",FTy 5), 7761 Var("rn",FTy 5),Var("rd",FTy 5)]), 7762 Call 7763 ("ARM8",CTy"MachineCode", 7764 CC[LW(155,8),Mop(Cast F1,Mop(Not,bVar"u")),LW(1,2), 7765 Var("rm",FTy 5),Mop(Cast F1,bVar"o0"),Var("ra",FTy 5), 7766 Var("rn",FTy 5),Var("rd",FTy 5)])), 7767 (Call 7768 ("MultiplyHigh",CTy"Data", 7769 TP[bVar"u",Var("rm",FTy 5),Var("rn",FTy 5),Var("rd",FTy 5)]), 7770 Call 7771 ("ARM8",CTy"MachineCode", 7772 CC[LW(155,8),Mop(Cast F1,Mop(Not,bVar"u")),LW(2,2), 7773 Var("rm",FTy 5),LW(31,6),Var("rn",FTy 5),Var("rd",FTy 5)])), 7774 (Call 7775 ("Reverse@32",CTy"Data", 7776 TP[AVar F32,Var("opc",CTy"RevOp"),Var("rn",FTy 5), 7777 Var("rd",FTy 5)]), 7778 ITE(EQ(Var("opc",CTy"RevOp"),LC("RevOp_REV64",CTy"RevOp")), 7779 Call("BadCode",CTy"MachineCode",LS"Reverse32"), 7780 Call 7781 ("ARM8",CTy"MachineCode", 7782 CC[LW(371712,20),Mop(Cast(FTy 2),Var("opc",CTy"RevOp")), 7783 Var("rn",FTy 5),Var("rd",FTy 5)]))), 7784 (Call 7785 ("Reverse@64",CTy"Data", 7786 TP[AVar F64,Var("opc",CTy"RevOp"),Var("rn",FTy 5), 7787 Var("rd",FTy 5)]), 7788 Call 7789 ("ARM8",CTy"MachineCode", 7790 CC[LW(896000,20),Mop(Cast(FTy 2),Var("opc",CTy"RevOp")), 7791 Var("rn",FTy 5),Var("rd",FTy 5)]))])) 7792; 7793val e_debug_def = Def 7794 ("e_debug",Var("i",CTy"Debug"), 7795 CS(Var("i",CTy"Debug"), 7796 [(Call("Breakpoint",CTy"Debug",Var("imm16",F16)), 7797 CC[LW(1697,11),Var("imm16",F16),LW(0,5)]), 7798 (Const("DebugRestore",CTy"Debug"),LW(3602842592,32)), 7799 (Call("DebugSwitch",CTy"Debug",Var("LL",FTy 2)), 7800 CC[LW(1701,11),LW(0,16),LW(0,3),Var("LL",FTy 2)]), 7801 (Call("Halt",CTy"Debug",Var("imm16",F16)), 7802 CC[LW(1698,11),Var("imm16",F16),LW(0,5)])])) 7803; 7804val e_crc_def = Def 7805 ("e_crc",Var("i",CTy"CRCExt"), 7806 CS(Var("i",CTy"CRCExt"), 7807 [(Call 7808 ("CRC@8",CTy"CRCExt", 7809 TP[AVar F8,bVar"c",Var("rm",FTy 5),Var("rn",FTy 5), 7810 Var("rd",FTy 5)]), 7811 CC[LW(214,11),Var("rm",FTy 5),LW(2,3),Mop(Cast F1,bVar"c"), 7812 LW(0,2),Var("rn",FTy 5),Var("rd",FTy 5)]), 7813 (Call 7814 ("CRC@16",CTy"CRCExt", 7815 TP[AVar F16,bVar"c",Var("rm",FTy 5),Var("rn",FTy 5), 7816 Var("rd",FTy 5)]), 7817 CC[LW(214,11),Var("rm",FTy 5),LW(2,3),Mop(Cast F1,bVar"c"), 7818 LW(1,2),Var("rn",FTy 5),Var("rd",FTy 5)]), 7819 (Call 7820 ("CRC@32",CTy"CRCExt", 7821 TP[AVar F32,bVar"c",Var("rm",FTy 5),Var("rn",FTy 5), 7822 Var("rd",FTy 5)]), 7823 CC[LW(214,11),Var("rm",FTy 5),LW(2,3),Mop(Cast F1,bVar"c"), 7824 LW(2,2),Var("rn",FTy 5),Var("rd",FTy 5)]), 7825 (Call 7826 ("CRC@64",CTy"CRCExt", 7827 TP[AVar F64,bVar"c",Var("rm",FTy 5),Var("rn",FTy 5), 7828 Var("rd",FTy 5)]), 7829 CC[LW(1238,11),Var("rm",FTy 5),LW(2,3),Mop(Cast F1,bVar"c"), 7830 LW(3,2),Var("rn",FTy 5),Var("rd",FTy 5)])])) 7831; 7832val e_branch_def = Def 7833 ("e_branch",Var("i",CTy"Branch"), 7834 CS(Var("i",CTy"Branch"), 7835 [(Call 7836 ("BranchConditional",CTy"Branch",TP[Var("imm",F64),Var("cd",F4)]), 7837 Let(Var("imm19",FTy 19),EX(Var("imm",F64),LN 20,LN 2,FTy 19), 7838 ITE(EQ(Var("imm",F64), 7839 Mop(SE F64,CC[Var("imm19",FTy 19),LW(0,2)])), 7840 Call 7841 ("ARM8",CTy"MachineCode", 7842 CC[LW(84,8),Var("imm19",FTy 19),LW(0,1),Var("cd",F4)]), 7843 Call("BadCode",CTy"MachineCode",LS"BranchConditional")))), 7844 (Call 7845 ("BranchImmediate",CTy"Branch", 7846 TP[Var("imm",F64),Var("btype",CTy"BranchType")]), 7847 Let(Var("imm26",FTy 26),EX(Var("imm",F64),LN 27,LN 2,FTy 26), 7848 ITE(Bop(And, 7849 EQ(Var("imm",F64), 7850 Mop(SE F64,CC[Var("imm26",FTy 26),LW(0,2)])), 7851 Bop(In,Var("btype",CTy"BranchType"), 7852 SL[LC("BranchType_CALL",CTy"BranchType"), 7853 LC("BranchType_JMP",CTy"BranchType")])), 7854 Call 7855 ("ARM8",CTy"MachineCode", 7856 CC[Mop(Cast F1, 7857 EQ(Var("btype",CTy"BranchType"), 7858 LC("BranchType_CALL",CTy"BranchType"))), 7859 LW(5,5),Var("imm26",FTy 26)]), 7860 Call("BadCode",CTy"MachineCode",LS"BranchImmediate")))), 7861 (Call 7862 ("BranchRegister",CTy"Branch", 7863 TP[Var("rn",FTy 5),Var("btype",CTy"BranchType")]), 7864 Let(Var("opc",FTy 2), 7865 CS(Var("btype",CTy"BranchType"), 7866 [(LC("BranchType_JMP",CTy"BranchType"),LW(0,2)), 7867 (LC("BranchType_CALL",CTy"BranchType"),LW(1,2)), 7868 (LC("BranchType_RET",CTy"BranchType"),LW(2,2)), 7869 (AVar(CTy"BranchType"),LW(3,2))]), 7870 ITE(EQ(Var("opc",FTy 2),LW(3,2)), 7871 Call("BadCode",CTy"MachineCode",LS"BranchRegister"), 7872 Call 7873 ("ARM8",CTy"MachineCode", 7874 CC[LW(428,9),Var("opc",FTy 2),LW(1984,11), 7875 Var("rn",FTy 5),LW(0,5)])))), 7876 (Call 7877 ("CompareAndBranch@32",CTy"Branch", 7878 TP[AVar F32,bVar"iszero",Var("offset",F64),Var("rt",FTy 5)]), 7879 Let(Var("imm19",FTy 19),EX(Var("offset",F64),LN 20,LN 2,FTy 19), 7880 ITE(EQ(Var("offset",F64), 7881 Mop(SE F64,CC[Var("imm19",FTy 19),LW(0,2)])), 7882 Call 7883 ("ARM8",CTy"MachineCode", 7884 CC[LW(26,7),Mop(Cast F1,Mop(Not,bVar"iszero")), 7885 Var("imm19",FTy 19),Var("rt",FTy 5)]), 7886 Call("BadCode",CTy"MachineCode",LS"CompareAndBranch32")))), 7887 (Call 7888 ("CompareAndBranch@64",CTy"Branch", 7889 TP[AVar F64,bVar"iszero",Var("offset",F64),Var("rt",FTy 5)]), 7890 Let(Var("imm19",FTy 19),EX(Var("offset",F64),LN 20,LN 2,FTy 19), 7891 ITE(EQ(Var("offset",F64), 7892 Mop(SE F64,CC[Var("imm19",FTy 19),LW(0,2)])), 7893 Call 7894 ("ARM8",CTy"MachineCode", 7895 CC[LW(90,7),Mop(Cast F1,Mop(Not,bVar"iszero")), 7896 Var("imm19",FTy 19),Var("rt",FTy 5)]), 7897 Call("BadCode",CTy"MachineCode",LS"CompareAndBranch64")))), 7898 (Call 7899 ("TestBitAndBranch@32",CTy"Branch", 7900 TP[AVar F32,Var("bit_pos",FTy 6),bVar"bit_val", 7901 Var("offset",F64),Var("rt",FTy 5)]), 7902 Let(Var("imm14",FTy 14),EX(Var("offset",F64),LN 15,LN 2,FTy 14), 7903 ITE(Bop(And, 7904 EQ(Var("offset",F64), 7905 Mop(SE F64,CC[Var("imm14",FTy 14),LW(0,2)])), 7906 Mop(Not,Bop(Bit,Var("bit_pos",FTy 6),LN 5))), 7907 Call 7908 ("ARM8",CTy"MachineCode", 7909 CC[LW(27,7),Mop(Cast F1,bVar"bit_val"), 7910 EX(Var("bit_pos",FTy 6),LN 4,LN 0,FTy 5), 7911 Var("imm14",FTy 14),Var("rt",FTy 5)]), 7912 Call("BadCode",CTy"MachineCode",LS"TestBitAndBranch32")))), 7913 (Call 7914 ("TestBitAndBranch@64",CTy"Branch", 7915 TP[AVar F64,Var("bit_pos",FTy 6),bVar"bit_val", 7916 Var("offset",F64),Var("rt",FTy 5)]), 7917 Let(Var("imm14",FTy 14),EX(Var("offset",F64),LN 15,LN 2,FTy 14), 7918 ITE(Bop(And, 7919 EQ(Var("offset",F64), 7920 Mop(SE F64,CC[Var("imm14",FTy 14),LW(0,2)])), 7921 Bop(Bit,Var("bit_pos",FTy 6),LN 5)), 7922 Call 7923 ("ARM8",CTy"MachineCode", 7924 CC[LW(91,7),Mop(Cast F1,bVar"bit_val"), 7925 EX(Var("bit_pos",FTy 6),LN 4,LN 0,FTy 5), 7926 Var("imm14",FTy 14),Var("rt",FTy 5)]), 7927 Call("BadCode",CTy"MachineCode",LS"TestBitAndBranch64"))))])) 7928; 7929val e_system_def = Def 7930 ("e_system",Var("i",CTy"System"), 7931 CS(Var("i",CTy"System"), 7932 [(Call 7933 ("MoveSystemRegister",CTy"System", 7934 TP[bVar"l",Var("op0",FTy 3),Var("op1",FTy 3),Var("op2",FTy 3), 7935 Var("crn",F4),Var("crm",F4),Var("rt",FTy 5)]), 7936 CC[LW(852,10),Mop(Cast F1,bVar"l"),LW(1,1), 7937 Mop(Cast F1,Bop(Sub,Var("op0",FTy 3),LW(2,3))), 7938 Var("op1",FTy 3),Var("crn",F4),Var("crm",F4),Var("op2",FTy 3), 7939 Var("rt",FTy 5)]), 7940 (Call 7941 ("MoveImmediateProcState",CTy"System", 7942 TP[LC("PSTATEField_SP",CTy"PSTATEField"),Var("crm",F4)]), 7943 CC[LW(872452,20),Var("crm",F4),LW(191,8)]), 7944 (Call 7945 ("MoveImmediateProcState",CTy"System", 7946 TP[LC("PSTATEField_DAIFSet",CTy"PSTATEField"),Var("crm",F4)]), 7947 CC[LW(872500,20),Var("crm",F4),LW(223,8)]), 7948 (Call 7949 ("MoveImmediateProcState",CTy"System", 7950 TP[LC("PSTATEField_DAIFClr",CTy"PSTATEField"),Var("crm",F4)]), 7951 CC[LW(872500,20),Var("crm",F4),LW(255,8)]), 7952 (Const("ExceptionReturn",CTy"System"),LW(3600745440,32)), 7953 (Call("SupervisorCall",CTy"System",Var("imm16",F16)), 7954 CC[LW(1696,11),Var("imm16",F16),LW(1,5)]), 7955 (Call("HypervisorCall",CTy"System",Var("imm16",F16)), 7956 CC[LW(1696,11),Var("imm16",F16),LW(2,5)]), 7957 (Call("SecureMonitorCall",CTy"System",Var("imm16",F16)), 7958 CC[LW(1696,11),Var("imm16",F16),LW(3,5)]), 7959 (Call 7960 ("SystemInstruction",CTy"System", 7961 TP[Var("op1",FTy 3),Var("op2",FTy 3),Var("crn",F4), 7962 Var("crm",F4),bVar"l",Var("rt",FTy 5)]), 7963 CC[LW(852,10),Mop(Cast F1,bVar"l"),LW(1,2),Var("op1",FTy 3), 7964 Var("crn",F4),Var("crm",F4),Var("op2",FTy 3),Var("rt",FTy 5)])])) 7965; 7966val e_LoadStoreImmediate_def = Def 7967 ("e_LoadStoreImmediate", 7968 TP[Var("size",FTy 2),bVar"regsize_word",Var("memop",CTy"MemOp"), 7969 Var("acctype",CTy"AccType"),bVar"signed",bVar"wback", 7970 bVar"postindex",bVar"unsigned_offset",Var("offset",F64), 7971 Var("rn",FTy 5),Var("rt",FTy 5)], 7972 Let(Var("sz",FTy 2), 7973 ITE(EQ(Var("memop",CTy"MemOp"),LC("MemOp_PREFETCH",CTy"MemOp")), 7974 LW(3,2),Var("size",FTy 2)), 7975 Let(Var("imm9",FTy 9),EX(Var("offset",F64),LN 8,LN 0,FTy 9), 7976 Let(Var("imm12",FTy 12), 7977 EX(Bop(Lsr,Var("offset",F64),Mop(Cast nTy,Var("sz",FTy 2))), 7978 LN 11,LN 0,FTy 12), 7979 Let(Var("opc",FTy 2), 7980 ITB([(EQ(Var("memop",CTy"MemOp"), 7981 LC("MemOp_STORE",CTy"MemOp")),LW(0,2)), 7982 (Bop(And, 7983 EQ(Var("memop",CTy"MemOp"), 7984 LC("MemOp_LOAD",CTy"MemOp")), 7985 Mop(Not,bVar"signed")),LW(1,2))], 7986 CC[LW(1,1),Mop(Cast F1,bVar"regsize_word")]), 7987 ITB([(bVar"wback", 7988 ITE(Bop(And, 7989 EQ(Var("offset",F64), 7990 Mop(SE F64,Var("imm9",FTy 9))), 7991 EQ(Var("acctype",CTy"AccType"), 7992 LC("AccType_NORMAL",CTy"AccType"))), 7993 Call 7994 ("ARM8",CTy"MachineCode", 7995 CC[Var("sz",FTy 2),LW(56,6), 7996 Var("opc",FTy 2),LW(0,1), 7997 Var("imm9",FTy 9), 7998 Mop(Cast F1,Mop(Not,bVar"postindex")), 7999 LW(1,1),Var("rn",FTy 5),Var("rt",FTy 5)]), 8000 Call 8001 ("BadCode",CTy"MachineCode", 8002 LS"LoadStoreImmediate"))), 8003 (bVar"postindex", 8004 Call 8005 ("BadCode",CTy"MachineCode", 8006 LS"LoadStoreImmediate")), 8007 (Bop(And,bVar"unsigned_offset", 8008 Bop(And, 8009 EQ(Var("offset",F64), 8010 Bop(Lsl, 8011 Mop(Cast F64,Var("imm12",FTy 12)), 8012 Mop(Cast nTy,Var("sz",FTy 2)))), 8013 EQ(Var("acctype",CTy"AccType"), 8014 LC("AccType_NORMAL",CTy"AccType")))), 8015 Call 8016 ("ARM8",CTy"MachineCode", 8017 CC[Var("sz",FTy 2),LW(57,6),Var("opc",FTy 2), 8018 Var("imm12",FTy 12),Var("rn",FTy 5), 8019 Var("rt",FTy 5)])), 8020 (EQ(Var("offset",F64), 8021 Mop(SE F64,Var("imm9",FTy 9))), 8022 Call 8023 ("ARM8",CTy"MachineCode", 8024 CC[Var("sz",FTy 2),LW(56,6),Var("opc",FTy 2), 8025 LW(0,1),Var("imm9",FTy 9), 8026 Mop(Cast F1, 8027 EQ(Var("acctype",CTy"AccType"), 8028 LC("AccType_UNPRIV",CTy"AccType"))), 8029 LW(0,1),Var("rn",FTy 5),Var("rt",FTy 5)]))], 8030 Call 8031 ("BadCode",CTy"MachineCode", 8032 LS"LoadStoreImmediate"))))))) 8033; 8034val e_LoadStoreRegister_def = Def 8035 ("e_LoadStoreRegister", 8036 TP[Var("size",FTy 2),bVar"regsize_word",Var("memop",CTy"MemOp"), 8037 bVar"signed",Var("rm",FTy 5),Var("extend_type",CTy"ExtendType"), 8038 nVar"shift",Var("rn",FTy 5),Var("rt",FTy 5)], 8039 Call 8040 ("ARM8",CTy"MachineCode", 8041 CC[ITE(EQ(Var("memop",CTy"MemOp"),LC("MemOp_PREFETCH",CTy"MemOp")), 8042 LW(3,2),Var("size",FTy 2)),LW(56,6), 8043 ITB([(EQ(Var("memop",CTy"MemOp"),LC("MemOp_STORE",CTy"MemOp")), 8044 LW(0,2)), 8045 (Bop(And, 8046 EQ(Var("memop",CTy"MemOp"),LC("MemOp_LOAD",CTy"MemOp")), 8047 Mop(Not,bVar"signed")),LW(1,2))], 8048 CC[LW(1,1),Mop(Cast F1,bVar"regsize_word")]),LW(1,1), 8049 Var("rm",FTy 5), 8050 Mop(Cast(FTy 3),Var("extend_type",CTy"ExtendType")), 8051 Mop(Cast F1,Mop(Not,EQ(nVar"shift",LN 0))),LW(2,2), 8052 Var("rn",FTy 5),Var("rt",FTy 5)])) 8053; 8054val e_load_store_def = Def 8055 ("e_load_store",Var("i",CTy"LoadStore"), 8056 CS(Var("i",CTy"LoadStore"), 8057 [(Call 8058 ("LoadStoreImmediate@8",CTy"LoadStore", 8059 TP[Var("size",F8),bVar"regsize_word",Var("memop",CTy"MemOp"), 8060 Var("acctype",CTy"AccType"),bVar"signed",bVar"wb_unknown", 8061 bVar"rt_unknown",bVar"wback",bVar"postindex", 8062 bVar"unsigned_offset",Var("offset",F64),Var("rn",FTy 5), 8063 Var("rt",FTy 5)]), 8064 Call 8065 ("e_LoadStoreImmediate",CTy"MachineCode", 8066 TP[Mop(Cast(FTy 2),Var("size",F8)),bVar"regsize_word", 8067 Var("memop",CTy"MemOp"),Var("acctype",CTy"AccType"), 8068 bVar"signed",bVar"wback",bVar"postindex", 8069 bVar"unsigned_offset",Var("offset",F64),Var("rn",FTy 5), 8070 Var("rt",FTy 5)])), 8071 (Call 8072 ("LoadStoreImmediate@16",CTy"LoadStore", 8073 TP[Var("size",F16),bVar"regsize_word",Var("memop",CTy"MemOp"), 8074 Var("acctype",CTy"AccType"),bVar"signed",bVar"wb_unknown", 8075 bVar"rt_unknown",bVar"wback",bVar"postindex", 8076 bVar"unsigned_offset",Var("offset",F64),Var("rn",FTy 5), 8077 Var("rt",FTy 5)]), 8078 Call 8079 ("e_LoadStoreImmediate",CTy"MachineCode", 8080 TP[Mop(Cast(FTy 2),Var("size",F16)),bVar"regsize_word", 8081 Var("memop",CTy"MemOp"),Var("acctype",CTy"AccType"), 8082 bVar"signed",bVar"wback",bVar"postindex", 8083 bVar"unsigned_offset",Var("offset",F64),Var("rn",FTy 5), 8084 Var("rt",FTy 5)])), 8085 (Call 8086 ("LoadStoreImmediate@32",CTy"LoadStore", 8087 TP[Var("size",F32),bVar"regsize_word",Var("memop",CTy"MemOp"), 8088 Var("acctype",CTy"AccType"),bVar"signed",bVar"wb_unknown", 8089 bVar"rt_unknown",bVar"wback",bVar"postindex", 8090 bVar"unsigned_offset",Var("offset",F64),Var("rn",FTy 5), 8091 Var("rt",FTy 5)]), 8092 Call 8093 ("e_LoadStoreImmediate",CTy"MachineCode", 8094 TP[Mop(Cast(FTy 2),Var("size",F32)),bVar"regsize_word", 8095 Var("memop",CTy"MemOp"),Var("acctype",CTy"AccType"), 8096 bVar"signed",bVar"wback",bVar"postindex", 8097 bVar"unsigned_offset",Var("offset",F64),Var("rn",FTy 5), 8098 Var("rt",FTy 5)])), 8099 (Call 8100 ("LoadStoreImmediate@64",CTy"LoadStore", 8101 TP[Var("size",F64),bVar"regsize_word",Var("memop",CTy"MemOp"), 8102 Var("acctype",CTy"AccType"),bVar"signed",bVar"wb_unknown", 8103 bVar"rt_unknown",bVar"wback",bVar"postindex", 8104 bVar"unsigned_offset",Var("offset",F64),Var("rn",FTy 5), 8105 Var("rt",FTy 5)]), 8106 Call 8107 ("e_LoadStoreImmediate",CTy"MachineCode", 8108 TP[Mop(Cast(FTy 2),Var("size",F64)),bVar"regsize_word", 8109 Var("memop",CTy"MemOp"),Var("acctype",CTy"AccType"), 8110 bVar"signed",bVar"wback",bVar"postindex", 8111 bVar"unsigned_offset",Var("offset",F64),Var("rn",FTy 5), 8112 Var("rt",FTy 5)])), 8113 (Call 8114 ("LoadStoreRegister@8",CTy"LoadStore", 8115 TP[Var("size",F8),bVar"regsize_word",Var("memop",CTy"MemOp"), 8116 bVar"signed",Var("rm",FTy 5), 8117 Var("extend_type",CTy"ExtendType"),nVar"shift", 8118 Var("rn",FTy 5),Var("rt",FTy 5)]), 8119 Call 8120 ("e_LoadStoreRegister",CTy"MachineCode", 8121 TP[Mop(Cast(FTy 2),Var("size",F8)),bVar"regsize_word", 8122 Var("memop",CTy"MemOp"),bVar"signed",Var("rm",FTy 5), 8123 Var("extend_type",CTy"ExtendType"),nVar"shift", 8124 Var("rn",FTy 5),Var("rt",FTy 5)])), 8125 (Call 8126 ("LoadStoreRegister@16",CTy"LoadStore", 8127 TP[Var("size",F16),bVar"regsize_word",Var("memop",CTy"MemOp"), 8128 bVar"signed",Var("rm",FTy 5), 8129 Var("extend_type",CTy"ExtendType"),nVar"shift", 8130 Var("rn",FTy 5),Var("rt",FTy 5)]), 8131 Call 8132 ("e_LoadStoreRegister",CTy"MachineCode", 8133 TP[Mop(Cast(FTy 2),Var("size",F16)),bVar"regsize_word", 8134 Var("memop",CTy"MemOp"),bVar"signed",Var("rm",FTy 5), 8135 Var("extend_type",CTy"ExtendType"),nVar"shift", 8136 Var("rn",FTy 5),Var("rt",FTy 5)])), 8137 (Call 8138 ("LoadStoreRegister@32",CTy"LoadStore", 8139 TP[Var("size",F32),bVar"regsize_word",Var("memop",CTy"MemOp"), 8140 bVar"signed",Var("rm",FTy 5), 8141 Var("extend_type",CTy"ExtendType"),nVar"shift", 8142 Var("rn",FTy 5),Var("rt",FTy 5)]), 8143 Call 8144 ("e_LoadStoreRegister",CTy"MachineCode", 8145 TP[Mop(Cast(FTy 2),Var("size",F32)),bVar"regsize_word", 8146 Var("memop",CTy"MemOp"),bVar"signed",Var("rm",FTy 5), 8147 Var("extend_type",CTy"ExtendType"),nVar"shift", 8148 Var("rn",FTy 5),Var("rt",FTy 5)])), 8149 (Call 8150 ("LoadStoreRegister@64",CTy"LoadStore", 8151 TP[Var("size",F64),bVar"regsize_word",Var("memop",CTy"MemOp"), 8152 bVar"signed",Var("rm",FTy 5), 8153 Var("extend_type",CTy"ExtendType"),nVar"shift", 8154 Var("rn",FTy 5),Var("rt",FTy 5)]), 8155 Call 8156 ("e_LoadStoreRegister",CTy"MachineCode", 8157 TP[Mop(Cast(FTy 2),Var("size",F64)),bVar"regsize_word", 8158 Var("memop",CTy"MemOp"),bVar"signed",Var("rm",FTy 5), 8159 Var("extend_type",CTy"ExtendType"),nVar"shift", 8160 Var("rn",FTy 5),Var("rt",FTy 5)])), 8161 (Call 8162 ("LoadLiteral@32",CTy"LoadStore", 8163 TP[AVar F32,Var("memop",CTy"MemOp"),bVar"signed", 8164 Var("offset",F64),Var("rt",FTy 5)]), 8165 Let(Var("imm19",FTy 19),EX(Var("offset",F64),LN 20,LN 2,FTy 19), 8166 Let(Var("opc",OTy(FTy 2)), 8167 CS(TP[Var("memop",CTy"MemOp"),bVar"signed"], 8168 [(TP[LC("MemOp_LOAD",CTy"MemOp"),LF],Mop(Some,LW(0,2))), 8169 (TP[LC("MemOp_LOAD",CTy"MemOp"),LT],Mop(Some,LW(2,2))), 8170 (TP[LC("MemOp_PREFETCH",CTy"MemOp"),LF], 8171 Mop(Some,LW(3,2))), 8172 (AVar(PTy(CTy"MemOp",bTy)),LO(FTy 2))]), 8173 ITE(Bop(And,Mop(IsSome,Var("opc",OTy(FTy 2))), 8174 EQ(Var("offset",F64), 8175 Mop(SE F64,CC[Var("imm19",FTy 19),LW(0,2)]))), 8176 Call 8177 ("ARM8",CTy"MachineCode", 8178 CC[Mop(ValOf,Var("opc",OTy(FTy 2))),LW(24,6), 8179 Var("imm19",FTy 19),Var("rt",FTy 5)]), 8180 Call("BadCode",CTy"MachineCode",LS"LoadLiteral32"))))), 8181 (Call 8182 ("LoadLiteral@64",CTy"LoadStore", 8183 TP[AVar F64,LC("MemOp_LOAD",CTy"MemOp"),LF,Var("offset",F64), 8184 Var("rt",FTy 5)]), 8185 Let(Var("imm19",FTy 19),EX(Var("offset",F64),LN 20,LN 2,FTy 19), 8186 ITE(EQ(Var("offset",F64), 8187 Mop(SE F64,CC[Var("imm19",FTy 19),LW(0,2)])), 8188 Call 8189 ("ARM8",CTy"MachineCode", 8190 CC[LW(88,8),Var("imm19",FTy 19),Var("rt",FTy 5)]), 8191 Call("BadCode",CTy"MachineCode",LS"LoadLiteral64")))), 8192 (Call 8193 ("LoadLiteral@64",CTy"LoadStore", 8194 AVar(PTy(F64,PTy(CTy"MemOp",PTy(bTy,PTy(F64,FTy 5)))))), 8195 Call("BadCode",CTy"MachineCode",LS"LoadLiteral64")), 8196 (Call 8197 ("LoadStorePair@32",CTy"LoadStore", 8198 TP[Var("size",F32),Var("memop",CTy"MemOp"), 8199 Var("acctype",CTy"AccType"),bVar"signed",bVar"wb_unknown", 8200 bVar"rt_unknown",bVar"wback",bVar"postindex", 8201 Var("offset",F64),Var("rn",FTy 5),Var("rt",FTy 5), 8202 Var("rt2",FTy 5)]), 8203 Let(Var("sf",F1),Mop(Cast F1,Var("size",F32)), 8204 Let(nVar"scale",Bop(Add,LN 2,Mop(Cast nTy,Var("sf",F1))), 8205 Let(Var("imm7",FTy 7), 8206 EX(Bop(Lsr,Var("offset",F64),nVar"scale"),LN 6,LN 0, 8207 FTy 7), 8208 ITE(Bop(And, 8209 EQ(EQ(Var("sf",F1),LW(1,1)), 8210 EQ(Mop(Size,Var("size",F32)),LN 64)), 8211 Bop(And, 8212 Bop(In,Var("memop",CTy"MemOp"), 8213 SL[LC("MemOp_LOAD",CTy"MemOp"), 8214 LC("MemOp_STORE",CTy"MemOp")]), 8215 Bop(And, 8216 Bop(In,Var("acctype",CTy"AccType"), 8217 SL[LC("AccType_STREAM", 8218 CTy"AccType"), 8219 LC("AccType_NORMAL", 8220 CTy"AccType")]), 8221 EQ(Var("offset",F64), 8222 Bop(Lsl, 8223 Mop(SE F64,Var("imm7",FTy 7)), 8224 nVar"scale"))))), 8225 Call 8226 ("ARM8",CTy"MachineCode", 8227 CC[Var("sf",F1),Mop(Cast F1,bVar"signed"), 8228 LW(20,5), 8229 Mop(Cast F1,Mop(Not,bVar"postindex")), 8230 Mop(Cast F1,bVar"wback"), 8231 Mop(Cast F1, 8232 EQ(Var("memop",CTy"MemOp"), 8233 LC("MemOp_LOAD",CTy"MemOp"))), 8234 Var("imm7",FTy 7),Var("rt2",FTy 5), 8235 Var("rn",FTy 5),Var("rt",FTy 5)]), 8236 Call("BadCode",CTy"MachineCode",LS"LoadStorePair")))))), 8237 (Call 8238 ("LoadStorePair@64",CTy"LoadStore", 8239 TP[Var("size",F64),Var("memop",CTy"MemOp"), 8240 Var("acctype",CTy"AccType"),bVar"signed",bVar"wb_unknown", 8241 bVar"rt_unknown",bVar"wback",bVar"postindex", 8242 Var("offset",F64),Var("rn",FTy 5),Var("rt",FTy 5), 8243 Var("rt2",FTy 5)]), 8244 Let(Var("sf",F1),Mop(Cast F1,Var("size",F64)), 8245 Let(nVar"scale",Bop(Add,LN 2,Mop(Cast nTy,Var("sf",F1))), 8246 Let(Var("imm7",FTy 7), 8247 EX(Bop(Lsr,Var("offset",F64),nVar"scale"),LN 6,LN 0, 8248 FTy 7), 8249 ITE(Bop(And, 8250 EQ(EQ(Var("sf",F1),LW(1,1)), 8251 EQ(Mop(Size,Var("size",F64)),LN 64)), 8252 Bop(And, 8253 Bop(In,Var("memop",CTy"MemOp"), 8254 SL[LC("MemOp_LOAD",CTy"MemOp"), 8255 LC("MemOp_STORE",CTy"MemOp")]), 8256 Bop(And, 8257 Bop(In,Var("acctype",CTy"AccType"), 8258 SL[LC("AccType_STREAM", 8259 CTy"AccType"), 8260 LC("AccType_NORMAL", 8261 CTy"AccType")]), 8262 EQ(Var("offset",F64), 8263 Bop(Lsl, 8264 Mop(SE F64,Var("imm7",FTy 7)), 8265 nVar"scale"))))), 8266 Call 8267 ("ARM8",CTy"MachineCode", 8268 CC[Var("sf",F1),Mop(Cast F1,bVar"signed"), 8269 LW(20,5), 8270 Mop(Cast F1,Mop(Not,bVar"postindex")), 8271 Mop(Cast F1,bVar"wback"), 8272 Mop(Cast F1, 8273 EQ(Var("memop",CTy"MemOp"), 8274 LC("MemOp_LOAD",CTy"MemOp"))), 8275 Var("imm7",FTy 7),Var("rt2",FTy 5), 8276 Var("rn",FTy 5),Var("rt",FTy 5)]), 8277 Call("BadCode",CTy"MachineCode",LS"LoadStorePair")))))), 8278 (Call 8279 ("LoadStoreAcquire@8",CTy"LoadStore", 8280 TP[Var("size",F8),Var("memop",CTy"MemOp"), 8281 Var("acctype",CTy"AccType"),bVar"excl",bVar"rn_unknown", 8282 bVar"rt_unknown",Var("rs",FTy 5),Var("rn",FTy 5), 8283 Var("rt",FTy 5)]), 8284 ITE(Bop(And, 8285 CS(Mop(Size,Var("size",F8)), 8286 [(LN 8,EQ(Var("size",F8),LW(0,8))), 8287 (LN 16,EQ(Var("size",F8),LW(1,8))), 8288 (LN 32,EQ(Var("size",F8),LW(2,8))), 8289 (AVar nTy,EQ(Var("size",F8),LW(3,8)))]), 8290 Bop(And, 8291 Bop(In,Var("memop",CTy"MemOp"), 8292 SL[LC("MemOp_LOAD",CTy"MemOp"), 8293 LC("MemOp_STORE",CTy"MemOp")]), 8294 Bop(In,Var("acctype",CTy"AccType"), 8295 SL[LC("AccType_ORDERED",CTy"AccType"), 8296 LC("AccType_ATOMIC",CTy"AccType")]))), 8297 Call 8298 ("ARM8",CTy"MachineCode", 8299 CC[Mop(Cast(FTy 2),Var("size",F8)),LW(8,6), 8300 Mop(Cast F1,Mop(Not,bVar"excl")), 8301 Mop(Cast F1, 8302 EQ(Var("memop",CTy"MemOp"), 8303 LC("MemOp_LOAD",CTy"MemOp"))),LW(0,1), 8304 Var("rs",FTy 5), 8305 Mop(Cast F1, 8306 EQ(Var("acctype",CTy"AccType"), 8307 LC("AccType_ORDERED",CTy"AccType"))),LW(31,5), 8308 Var("rn",FTy 5),Var("rt",FTy 5)]), 8309 Call("BadCode",CTy"MachineCode",LS"LoadStoreAcquire"))), 8310 (Call 8311 ("LoadStoreAcquire@16",CTy"LoadStore", 8312 TP[Var("size",F16),Var("memop",CTy"MemOp"), 8313 Var("acctype",CTy"AccType"),bVar"excl",bVar"rn_unknown", 8314 bVar"rt_unknown",Var("rs",FTy 5),Var("rn",FTy 5), 8315 Var("rt",FTy 5)]), 8316 ITE(Bop(And, 8317 CS(Mop(Size,Var("size",F16)), 8318 [(LN 8,EQ(Var("size",F16),LW(0,16))), 8319 (LN 16,EQ(Var("size",F16),LW(1,16))), 8320 (LN 32,EQ(Var("size",F16),LW(2,16))), 8321 (AVar nTy,EQ(Var("size",F16),LW(3,16)))]), 8322 Bop(And, 8323 Bop(In,Var("memop",CTy"MemOp"), 8324 SL[LC("MemOp_LOAD",CTy"MemOp"), 8325 LC("MemOp_STORE",CTy"MemOp")]), 8326 Bop(In,Var("acctype",CTy"AccType"), 8327 SL[LC("AccType_ORDERED",CTy"AccType"), 8328 LC("AccType_ATOMIC",CTy"AccType")]))), 8329 Call 8330 ("ARM8",CTy"MachineCode", 8331 CC[Mop(Cast(FTy 2),Var("size",F16)),LW(8,6), 8332 Mop(Cast F1,Mop(Not,bVar"excl")), 8333 Mop(Cast F1, 8334 EQ(Var("memop",CTy"MemOp"), 8335 LC("MemOp_LOAD",CTy"MemOp"))),LW(0,1), 8336 Var("rs",FTy 5), 8337 Mop(Cast F1, 8338 EQ(Var("acctype",CTy"AccType"), 8339 LC("AccType_ORDERED",CTy"AccType"))),LW(31,5), 8340 Var("rn",FTy 5),Var("rt",FTy 5)]), 8341 Call("BadCode",CTy"MachineCode",LS"LoadStoreAcquire"))), 8342 (Call 8343 ("LoadStoreAcquire@32",CTy"LoadStore", 8344 TP[Var("size",F32),Var("memop",CTy"MemOp"), 8345 Var("acctype",CTy"AccType"),bVar"excl",bVar"rn_unknown", 8346 bVar"rt_unknown",Var("rs",FTy 5),Var("rn",FTy 5), 8347 Var("rt",FTy 5)]), 8348 ITE(Bop(And, 8349 CS(Mop(Size,Var("size",F32)), 8350 [(LN 8,EQ(Var("size",F32),LW(0,32))), 8351 (LN 16,EQ(Var("size",F32),LW(1,32))), 8352 (LN 32,EQ(Var("size",F32),LW(2,32))), 8353 (AVar nTy,EQ(Var("size",F32),LW(3,32)))]), 8354 Bop(And, 8355 Bop(In,Var("memop",CTy"MemOp"), 8356 SL[LC("MemOp_LOAD",CTy"MemOp"), 8357 LC("MemOp_STORE",CTy"MemOp")]), 8358 Bop(In,Var("acctype",CTy"AccType"), 8359 SL[LC("AccType_ORDERED",CTy"AccType"), 8360 LC("AccType_ATOMIC",CTy"AccType")]))), 8361 Call 8362 ("ARM8",CTy"MachineCode", 8363 CC[Mop(Cast(FTy 2),Var("size",F32)),LW(8,6), 8364 Mop(Cast F1,Mop(Not,bVar"excl")), 8365 Mop(Cast F1, 8366 EQ(Var("memop",CTy"MemOp"), 8367 LC("MemOp_LOAD",CTy"MemOp"))),LW(0,1), 8368 Var("rs",FTy 5), 8369 Mop(Cast F1, 8370 EQ(Var("acctype",CTy"AccType"), 8371 LC("AccType_ORDERED",CTy"AccType"))),LW(31,5), 8372 Var("rn",FTy 5),Var("rt",FTy 5)]), 8373 Call("BadCode",CTy"MachineCode",LS"LoadStoreAcquire"))), 8374 (Call 8375 ("LoadStoreAcquire@64",CTy"LoadStore", 8376 TP[Var("size",F64),Var("memop",CTy"MemOp"), 8377 Var("acctype",CTy"AccType"),bVar"excl",bVar"rn_unknown", 8378 bVar"rt_unknown",Var("rs",FTy 5),Var("rn",FTy 5), 8379 Var("rt",FTy 5)]), 8380 ITE(Bop(And, 8381 CS(Mop(Size,Var("size",F64)), 8382 [(LN 8,EQ(Var("size",F64),LW(0,64))), 8383 (LN 16,EQ(Var("size",F64),LW(1,64))), 8384 (LN 32,EQ(Var("size",F64),LW(2,64))), 8385 (AVar nTy,EQ(Var("size",F64),LW(3,64)))]), 8386 Bop(And, 8387 Bop(In,Var("memop",CTy"MemOp"), 8388 SL[LC("MemOp_LOAD",CTy"MemOp"), 8389 LC("MemOp_STORE",CTy"MemOp")]), 8390 Bop(In,Var("acctype",CTy"AccType"), 8391 SL[LC("AccType_ORDERED",CTy"AccType"), 8392 LC("AccType_ATOMIC",CTy"AccType")]))), 8393 Call 8394 ("ARM8",CTy"MachineCode", 8395 CC[Mop(Cast(FTy 2),Var("size",F64)),LW(8,6), 8396 Mop(Cast F1,Mop(Not,bVar"excl")), 8397 Mop(Cast F1, 8398 EQ(Var("memop",CTy"MemOp"), 8399 LC("MemOp_LOAD",CTy"MemOp"))),LW(0,1), 8400 Var("rs",FTy 5), 8401 Mop(Cast F1, 8402 EQ(Var("acctype",CTy"AccType"), 8403 LC("AccType_ORDERED",CTy"AccType"))),LW(31,5), 8404 Var("rn",FTy 5),Var("rt",FTy 5)]), 8405 Call("BadCode",CTy"MachineCode",LS"LoadStoreAcquire"))), 8406 (Call 8407 ("LoadStoreAcquirePair@64",CTy"LoadStore", 8408 TP[Var("size",F64),Var("memop",CTy"MemOp"), 8409 Var("acctype",CTy"AccType"),bVar"rn_unknown", 8410 bVar"rt_unknown",Var("rs",FTy 5),Var("rn",FTy 5), 8411 Var("rt",FTy 5),Var("rt2",FTy 5)]), 8412 ITE(Bop(And, 8413 EQ(Var("size",F64), 8414 ITE(EQ(Mop(Size,Var("size",F64)),LN 64),LW(2,64), 8415 LW(3,64))), 8416 Bop(And, 8417 Bop(In,Var("memop",CTy"MemOp"), 8418 SL[LC("MemOp_LOAD",CTy"MemOp"), 8419 LC("MemOp_STORE",CTy"MemOp")]), 8420 Bop(In,Var("acctype",CTy"AccType"), 8421 SL[LC("AccType_ORDERED",CTy"AccType"), 8422 LC("AccType_ATOMIC",CTy"AccType")]))), 8423 Call 8424 ("ARM8",CTy"MachineCode", 8425 CC[Mop(Cast(FTy 2),Var("size",F64)),LW(16,7), 8426 Mop(Cast F1, 8427 EQ(Var("memop",CTy"MemOp"), 8428 LC("MemOp_LOAD",CTy"MemOp"))),LW(1,1), 8429 Var("rs",FTy 5), 8430 Mop(Cast F1, 8431 EQ(Var("acctype",CTy"AccType"), 8432 LC("AccType_ORDERED",CTy"AccType"))), 8433 Var("rt2",FTy 5),Var("rn",FTy 5),Var("rt",FTy 5)]), 8434 Call("BadCode",CTy"MachineCode",LS"LoadStoreAcquirePair"))), 8435 (Call 8436 ("LoadStoreAcquirePair@128",CTy"LoadStore", 8437 TP[Var("size",FTy 128),Var("memop",CTy"MemOp"), 8438 Var("acctype",CTy"AccType"),bVar"rn_unknown", 8439 bVar"rt_unknown",Var("rs",FTy 5),Var("rn",FTy 5), 8440 Var("rt",FTy 5),Var("rt2",FTy 5)]), 8441 ITE(Bop(And, 8442 EQ(Var("size",FTy 128), 8443 ITE(EQ(Mop(Size,Var("size",FTy 128)),LN 64),LW(2,128), 8444 LW(3,128))), 8445 Bop(And, 8446 Bop(In,Var("memop",CTy"MemOp"), 8447 SL[LC("MemOp_LOAD",CTy"MemOp"), 8448 LC("MemOp_STORE",CTy"MemOp")]), 8449 Bop(In,Var("acctype",CTy"AccType"), 8450 SL[LC("AccType_ORDERED",CTy"AccType"), 8451 LC("AccType_ATOMIC",CTy"AccType")]))), 8452 Call 8453 ("ARM8",CTy"MachineCode", 8454 CC[Mop(Cast(FTy 2),Var("size",FTy 128)),LW(16,7), 8455 Mop(Cast F1, 8456 EQ(Var("memop",CTy"MemOp"), 8457 LC("MemOp_LOAD",CTy"MemOp"))),LW(1,1), 8458 Var("rs",FTy 5), 8459 Mop(Cast F1, 8460 EQ(Var("acctype",CTy"AccType"), 8461 LC("AccType_ORDERED",CTy"AccType"))), 8462 Var("rt2",FTy 5),Var("rn",FTy 5),Var("rt",FTy 5)]), 8463 Call("BadCode",CTy"MachineCode",LS"LoadStoreAcquirePair")))])) 8464; 8465val Encode_def = Def 8466 ("Encode",Var("i",CTy"instruction"), 8467 CS(Var("i",CTy"instruction"), 8468 [(Call 8469 ("Address",CTy"instruction", 8470 TP[bVar"page",Var("imm",F64),Var("rd",FTy 5)]), 8471 ITE(bVar"page", 8472 Let(Var("immlo",FTy 2),EX(Var("imm",F64),LN 13,LN 12,FTy 2), 8473 Let(Var("immhi",FTy 19), 8474 EX(Var("imm",F64),LN 32,LN 14,FTy 19), 8475 ITE(EQ(Mop(SE F64, 8476 CC[Var("immhi",FTy 19),Var("immlo",FTy 2), 8477 LW(0,12)]),Var("imm",F64)), 8478 Call 8479 ("ARM8",CTy"MachineCode", 8480 CC[LW(1,1),Var("immlo",FTy 2),LW(16,5), 8481 Var("immhi",FTy 19),Var("rd",FTy 5)]), 8482 Call("BadCode",CTy"MachineCode",LS"Address")))), 8483 Let(Var("immlo",FTy 2),EX(Var("imm",F64),LN 1,LN 0,FTy 2), 8484 Let(Var("immhi",FTy 19), 8485 EX(Var("imm",F64),LN 20,LN 2,FTy 19), 8486 ITE(EQ(Mop(SE F64, 8487 CC[Var("immhi",FTy 19),Var("immlo",FTy 2)]), 8488 Var("imm",F64)), 8489 Call 8490 ("ARM8",CTy"MachineCode", 8491 CC[LW(0,1),Var("immlo",FTy 2),LW(16,5), 8492 Var("immhi",FTy 19),Var("rd",FTy 5)]), 8493 Call("BadCode",CTy"MachineCode",LS"Address")))))), 8494 (Call("Data",CTy"instruction",Var("x",CTy"Data")), 8495 Call("e_data",CTy"MachineCode",Var("x",CTy"Data"))), 8496 (Call("Branch",CTy"instruction",Var("x",CTy"Branch")), 8497 Call("e_branch",CTy"MachineCode",Var("x",CTy"Branch"))), 8498 (Call("LoadStore",CTy"instruction",Var("x",CTy"LoadStore")), 8499 Call("e_load_store",CTy"MachineCode",Var("x",CTy"LoadStore"))), 8500 (Call("CRCExt",CTy"instruction",Var("x",CTy"CRCExt")), 8501 Call 8502 ("ARM8",CTy"MachineCode",Call("e_crc",F32,Var("x",CTy"CRCExt")))), 8503 (Call("Debug",CTy"instruction",Var("x",CTy"Debug")), 8504 Call 8505 ("ARM8",CTy"MachineCode",Call("e_debug",F32,Var("x",CTy"Debug")))), 8506 (Call("System",CTy"instruction",Var("x",CTy"System")), 8507 Call 8508 ("ARM8",CTy"MachineCode", 8509 Call("e_system",F32,Var("x",CTy"System")))), 8510 (Call 8511 ("MemoryBarrier",CTy"instruction", 8512 TP[Var("opc",CTy"MemBarrierOp"),Var("crm",F4)]), 8513 Call 8514 ("ARM8",CTy"MachineCode", 8515 CC[LW(872499,20),Var("crm",F4),LW(1,1), 8516 Mop(Cast(FTy 2),Var("opc",CTy"MemBarrierOp")),LW(31,5)])), 8517 (Call("ClearExclusive",CTy"instruction",Var("crm",F4)), 8518 Call 8519 ("ARM8",CTy"MachineCode", 8520 CC[LW(872499,20),Var("crm",F4),LW(95,8)])), 8521 (Call("Hint",CTy"instruction",Var("opc",CTy"SystemHintOp")), 8522 Call 8523 ("ARM8",CTy"MachineCode", 8524 CC[LW(13959968,24), 8525 Mop(Cast(FTy 3),Var("opc",CTy"SystemHintOp")),LW(31,5)])), 8526 (Const("Unallocated",CTy"instruction"), 8527 Call("BadCode",CTy"MachineCode",LS"Unallocated")), 8528 (Const("Reserved",CTy"instruction"), 8529 Call("BadCode",CTy"MachineCode",LS"Reserved"))])) 8530 8531val () = Import.finish 0