1100894Srwatson(* arm - generated by L3 - Wed Jan 31 15:06:54 2018 *) 2100894Srwatson 3100894Srwatsonsignature arm = 4100894Srwatsonsig 5100894Srwatson 6100894Srwatsonstructure Map : Map 7100894Srwatson 8100894Srwatson(* ------------------------------------------------------------------------- 9100894Srwatson Types 10100894Srwatson ------------------------------------------------------------------------- *) 11100894Srwatson 12100894Srwatsondatatype Architecture 13100894Srwatson = ARMv4 | ARMv4T | ARMv5T | ARMv5TE | ARMv6 | ARMv6K | ARMv6T2 | ARMv7_A 14100894Srwatson | ARMv7_R 15100894Srwatson 16100894Srwatsondatatype Extensions 17100894Srwatson = Extension_ThumbEE | Extension_Security | Extension_Multiprocessing 18100894Srwatson | Extension_Virtualization | Extension_AdvanvedSIMD 19100894Srwatson 20100894Srwatsontype PSR = 21100894Srwatson { A: bool, C: bool, E: bool, F: bool, GE: BitsN.nbit, I: bool, 22100894Srwatson IT: BitsN.nbit, J: bool, M: BitsN.nbit, N: bool, Q: bool, T: bool, 23100894Srwatson V: bool, Z: bool, psr'rst: BitsN.nbit } 24100894Srwatson 25100894Srwatsontype CP14 = { TEEHBR: BitsN.nbit } 26100894Srwatson 27100894Srwatsontype SCTLR = 28100894Srwatson { A: bool, B: bool, BR: bool, C: bool, DZ: bool, EE: bool, FI: bool, 29100894Srwatson I: bool, IE: bool, M: bool, NMFI: bool, RR: bool, SW: bool, TE: bool, 30100894Srwatson U: bool, V: bool, VE: bool, Z: bool, sctlr'rst: BitsN.nbit } 31100894Srwatson 32100894Srwatsontype HSCTLR = 33100894Srwatson { A: bool, C: bool, CP15BEN: bool, EE: bool, FI: bool, I: bool, M: bool, 34100894Srwatson TE: bool, WXN: bool, hsctlr'rst: BitsN.nbit } 35100894Srwatson 36100894Srwatsontype HSR = { EC: BitsN.nbit, IL: bool, ISS: BitsN.nbit } 37100894Srwatson 38100894Srwatsontype SCR = 39100894Srwatson { AW: bool, EA: bool, FIQ: bool, FW: bool, HCE: bool, IRQ: bool, 40100894Srwatson NS: bool, SCD: bool, SIF: bool, nET: bool, scr'rst: BitsN.nbit } 41100894Srwatson 42100894Srwatsontype NSACR = 43100894Srwatson { NSASEDIS: bool, NSD32DIS: bool, NSTRCDIS: bool, RFR: bool, 44100894Srwatson cp: BitsN.nbit, nsacr'rst: BitsN.nbit } 45100894Srwatson 46100894Srwatsontype HCR = 47100894Srwatson { AMO: bool, BSU: BitsN.nbit, DC: bool, FB: bool, FMO: bool, IMO: bool, 48100894Srwatson PTW: bool, SWIO: bool, TAC: bool, TGE: bool, TID: BitsN.nbit, 49101173Srwatson TIDCP: bool, TPC: bool, TPU: bool, TSC: bool, TSW: bool, TTLB: bool, 50100894Srwatson TVM: bool, TWE: bool, TWI: bool, VA: bool, VF: bool, VI: bool, 51100979Srwatson VM: bool, hcr'rst: BitsN.nbit } 52100979Srwatson 53100979Srwatsontype CP15 = 54100979Srwatson { HCR: HCR, HSCTLR: HSCTLR, HSR: HSR, MVBAR: BitsN.nbit, NSACR: NSACR, 55100979Srwatson SCR: SCR, SCTLR: SCTLR, VBAR: BitsN.nbit } 56100979Srwatson 57101712Srwatsondatatype InstrSet 58100979Srwatson = InstrSet_ARM | InstrSet_Thumb | InstrSet_Jazelle | InstrSet_ThumbEE 59100979Srwatson 60100894Srwatsondatatype Encoding = Encoding_Thumb | Encoding_Thumb2 | Encoding_ARM 61100894Srwatson 62100979Srwatsondatatype RName 63100979Srwatson = RName_0usr | RName_1usr | RName_2usr | RName_3usr | RName_4usr 64100979Srwatson | RName_5usr | RName_6usr | RName_7usr | RName_8usr | RName_8fiq 65100979Srwatson | RName_9usr | RName_9fiq | RName_10usr | RName_10fiq | RName_11usr 66100979Srwatson | RName_11fiq | RName_12usr | RName_12fiq | RName_SPusr | RName_SPfiq 67100979Srwatson | RName_SPirq | RName_SPsvc | RName_SPabt | RName_SPund | RName_SPmon 68100979Srwatson | RName_SPhyp | RName_LRusr | RName_LRfiq | RName_LRirq | RName_LRsvc 69100979Srwatson | RName_LRabt | RName_LRund | RName_LRmon | RName_PC 70100979Srwatson 71100894Srwatsondatatype SRType 72100979Srwatson = SRType_LSL | SRType_LSR | SRType_ASR | SRType_ROR | SRType_RRX 73100979Srwatson 74100979Srwatsondatatype offset1 75100979Srwatson = immediate_form1 of BitsN.nbit 76100979Srwatson | register_form1 of BitsN.nbit * (SRType * Nat.nat) 77100979Srwatson 78100979Srwatsondatatype offset2 79100979Srwatson = immediate_form2 of BitsN.nbit | register_form2 of BitsN.nbit 80100979Srwatson 81100979Srwatsondatatype VFPExtension = NoVFP | VFPv2 | VFPv3 | VFPv4 82100979Srwatson 83100979Srwatsontype FPSCR = 84100979Srwatson { AHP: bool, C: bool, DN: bool, DZC: bool, DZE: bool, FZ: bool, 85100979Srwatson IDC: bool, IDE: bool, IOC: bool, IOE: bool, IXC: bool, IXE: bool, 86100979Srwatson N: bool, OFC: bool, OFE: bool, QC: bool, RMode: BitsN.nbit, UFC: bool, 87100979Srwatson UFE: bool, V: bool, Z: bool, fpscr'rst: BitsN.nbit } 88100979Srwatson 89100979Srwatsontype FP = { FPSCR: FPSCR, REG: BitsN.nbit Map.map } 90100979Srwatson 91101712Srwatsondatatype VFPNegMul = VFPNegMul_VNMLA | VFPNegMul_VNMLS | VFPNegMul_VNMUL 92101712Srwatson 93101712Srwatsondatatype VFP 94101712Srwatson = vabs of bool * (BitsN.nbit * BitsN.nbit) 95101712Srwatson | vadd of bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 96101712Srwatson | vcmp of bool * (BitsN.nbit * (BitsN.nbit option)) 97101712Srwatson | vcvt_float of bool * (BitsN.nbit * BitsN.nbit) 98100979Srwatson | vcvt_from_integer of bool * (bool * (BitsN.nbit * BitsN.nbit)) 99100979Srwatson | vcvt_to_integer of bool * (bool * (bool * (BitsN.nbit * BitsN.nbit))) 100100979Srwatson | vdiv of bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 101100979Srwatson | vfma_vfms of bool * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) 102100979Srwatson | vfnma_vfnms of 103100979Srwatson bool * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) 104100979Srwatson | vldm of 105100979Srwatson bool * (bool * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)))) 106100979Srwatson | vldr of bool * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) 107100979Srwatson | vmla_vmls of bool * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) 108100979Srwatson | vmov of bool * (BitsN.nbit * BitsN.nbit) 109100979Srwatson | vmov_double of bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 110100979Srwatson | vmov_imm of bool * (BitsN.nbit * BitsN.nbit) 111100979Srwatson | vmov_single of bool * (BitsN.nbit * BitsN.nbit) 112100979Srwatson | vmov_two_singles of bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 113100979Srwatson | vmrs of BitsN.nbit 114100979Srwatson | vmsr of BitsN.nbit 115100979Srwatson | vmul of bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 116100979Srwatson | vneg of bool * (BitsN.nbit * BitsN.nbit) 117100979Srwatson | vneg_mul of 118100979Srwatson bool * (VFPNegMul * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) 119100979Srwatson | vsqrt of bool * (BitsN.nbit * BitsN.nbit) 120100979Srwatson | vstm of 121100979Srwatson bool * (bool * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)))) 122100979Srwatson | vstr of bool * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) 123100979Srwatson | vsub of bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 124100979Srwatson 125100979Srwatsondatatype Hint 126100979Srwatson = Breakpoint of BitsN.nbit 127100979Srwatson | DataMemoryBarrier of BitsN.nbit 128100979Srwatson | DataSynchronizationBarrier of BitsN.nbit 129100979Srwatson | Debug of BitsN.nbit 130100979Srwatson | InstructionSynchronizationBarrier of BitsN.nbit 131100979Srwatson | PreloadData of bool * (bool * (BitsN.nbit * offset1)) 132100979Srwatson | PreloadDataLiteral of bool * BitsN.nbit 133100979Srwatson | PreloadInstruction of bool * (BitsN.nbit * offset1) 134100979Srwatson | SendEvent 135100979Srwatson | WaitForEvent 136100979Srwatson | WaitForInterrupt 137100979Srwatson | Yield 138100979Srwatson 139100979Srwatsondatatype System 140100979Srwatson = ChangeProcessorState of 141100979Srwatson bool * (bool * (bool * (bool * (bool * (BitsN.nbit option))))) 142100979Srwatson | EnterxLeavex of bool 143100979Srwatson | ExceptionReturn 144100979Srwatson | HypervisorCall of BitsN.nbit 145100979Srwatson | MoveToBankedOrSpecialRegister of bool * (BitsN.nbit * BitsN.nbit) 146100979Srwatson | MoveToRegisterFromBankedOrSpecial of bool * (BitsN.nbit * BitsN.nbit) 147100979Srwatson | MoveToRegisterFromSpecial of bool * BitsN.nbit 148100979Srwatson | MoveToSpecialFromImmediate of bool * (BitsN.nbit * BitsN.nbit) 149100979Srwatson | MoveToSpecialFromRegister of bool * (BitsN.nbit * BitsN.nbit) 150100979Srwatson | ReturnFromException of bool * (bool * (bool * BitsN.nbit)) 151100979Srwatson | SecureMonitorCall of BitsN.nbit 152100979Srwatson | Setend of bool 153100979Srwatson | StoreReturnState of bool * (bool * (bool * BitsN.nbit)) 154100979Srwatson | SupervisorCall of BitsN.nbit 155100979Srwatson 156100979Srwatsondatatype Store 157100979Srwatson = StoreByte of 158100979Srwatson bool * (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1)))) 159100979Srwatson | StoreByteUnprivileged of 160100979Srwatson bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1))) 161100979Srwatson | StoreDual of 162100979Srwatson bool * 163100979Srwatson (bool * 164100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * offset2))))) 165100979Srwatson | StoreExclusive of 166100979Srwatson BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 167100979Srwatson | StoreExclusiveByte of BitsN.nbit * (BitsN.nbit * BitsN.nbit) 168100979Srwatson | StoreExclusiveDoubleword of 169100979Srwatson BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 170100979Srwatson | StoreExclusiveHalf of BitsN.nbit * (BitsN.nbit * BitsN.nbit) 171100979Srwatson | StoreHalf of 172100979Srwatson bool * (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1)))) 173100979Srwatson | StoreHalfUnprivileged of 174100979Srwatson bool * (bool * (BitsN.nbit * (BitsN.nbit * offset2))) 175100979Srwatson | StoreMultiple of bool * (bool * (bool * (BitsN.nbit * BitsN.nbit))) 176100979Srwatson | StoreMultipleUserRegisters of 177100979Srwatson bool * (bool * (BitsN.nbit * BitsN.nbit)) 178100979Srwatson | StoreUnprivileged of 179100979Srwatson bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1))) 180100979Srwatson | StoreWord of 181100979Srwatson bool * (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1)))) 182100979Srwatson 183100979Srwatsondatatype Load 184100979Srwatson = LoadByte of 185100979Srwatson bool * 186100979Srwatson (bool * (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1))))) 187100979Srwatson | LoadByteLiteral of bool * (bool * (BitsN.nbit * BitsN.nbit)) 188100979Srwatson | LoadByteUnprivileged of 189100979Srwatson bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1))) 190100979Srwatson | LoadDual of 191100979Srwatson bool * 192100979Srwatson (bool * 193100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * offset2))))) 194100979Srwatson | LoadDualLiteral of bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 195100979Srwatson | LoadExclusive of BitsN.nbit * (BitsN.nbit * BitsN.nbit) 196100979Srwatson | LoadExclusiveByte of BitsN.nbit * BitsN.nbit 197100979Srwatson | LoadExclusiveDoubleword of BitsN.nbit * (BitsN.nbit * BitsN.nbit) 198100979Srwatson | LoadExclusiveHalf of BitsN.nbit * BitsN.nbit 199100979Srwatson | LoadHalf of 200100979Srwatson bool * 201100979Srwatson (bool * (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1))))) 202100979Srwatson | LoadHalfLiteral of bool * (bool * (BitsN.nbit * BitsN.nbit)) 203100979Srwatson | LoadHalfUnprivileged of 204100979Srwatson bool * (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset2)))) 205100979Srwatson | LoadLiteral of bool * (BitsN.nbit * BitsN.nbit) 206100979Srwatson | LoadMultiple of bool * (bool * (bool * (BitsN.nbit * BitsN.nbit))) 207100979Srwatson | LoadMultipleExceptionReturn of 208100979Srwatson bool * (bool * (bool * (BitsN.nbit * BitsN.nbit))) 209100979Srwatson | LoadMultipleUserRegisters of bool * (bool * (BitsN.nbit * BitsN.nbit)) 210100979Srwatson | LoadSignedByteUnprivileged of 211100979Srwatson bool * (bool * (BitsN.nbit * (BitsN.nbit * offset2))) 212100979Srwatson | LoadUnprivileged of 213100979Srwatson bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1))) 214100979Srwatson | LoadWord of 215100979Srwatson bool * (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1)))) 216100979Srwatson 217100979Srwatsondatatype Media 218100979Srwatson = BitFieldClearOrInsert of 219100979Srwatson BitsN.nbit * (BitsN.nbit * (Nat.nat * Nat.nat)) 220100979Srwatson | BitFieldExtract of 221100979Srwatson bool * (BitsN.nbit * (BitsN.nbit * (Nat.nat * Nat.nat))) 222100979Srwatson | ByteReverse of BitsN.nbit * BitsN.nbit 223100979Srwatson | ByteReversePackedHalfword of BitsN.nbit * BitsN.nbit 224100979Srwatson | ByteReverseSignedHalfword of BitsN.nbit * BitsN.nbit 225100979Srwatson | ExtendByte of 226100979Srwatson bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * Nat.nat))) 227100979Srwatson | ExtendByte16 of 228100979Srwatson bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * Nat.nat))) 229100979Srwatson | ExtendHalfword of 230100979Srwatson bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * Nat.nat))) 231100979Srwatson | PackHalfword of 232100979Srwatson SRType * 233100979Srwatson (Nat.nat * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)))) 234100979Srwatson | ReverseBits of BitsN.nbit * BitsN.nbit 235100979Srwatson | Saturate of 236100979Srwatson SRType * (Nat.nat * (Nat.nat * (bool * (BitsN.nbit * BitsN.nbit)))) 237100979Srwatson | Saturate16 of Nat.nat * (bool * (BitsN.nbit * BitsN.nbit)) 238100979Srwatson | SaturatingAddSubtract of 239100979Srwatson BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 240100979Srwatson | SelectBytes of BitsN.nbit * (BitsN.nbit * BitsN.nbit) 241100979Srwatson 242100979Srwatsondatatype SIMD 243100979Srwatson = SignedAddSub16 of 244100979Srwatson BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 245100979Srwatson | SignedAddSub8 of bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 246100979Srwatson | SignedHalvingAddSub16 of 247100979Srwatson BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 248100979Srwatson | SignedHalvingAddSub8 of 249100979Srwatson bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 250100979Srwatson | SignedSaturatingAddSub16 of 251100979Srwatson BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 252100979Srwatson | SignedSaturatingAddSub8 of 253100979Srwatson bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 254100979Srwatson | UnsignedAddSub16 of 255100979Srwatson BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 256100979Srwatson | UnsignedAddSub8 of bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 257100979Srwatson | UnsignedHalvingAddSub16 of 258100979Srwatson BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 259100979Srwatson | UnsignedHalvingAddSub8 of 260100979Srwatson bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 261100979Srwatson | UnsignedSaturatingAddSub16 of 262100979Srwatson BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 263100979Srwatson | UnsignedSaturatingAddSub8 of 264100979Srwatson bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 265100979Srwatson | UnsignedSumAbsoluteDifferences of 266100979Srwatson BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 267100979Srwatson 268100979Srwatsondatatype Multiply 269100979Srwatson = Multiply32 of bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 270100979Srwatson | MultiplyAccumulate of 271100979Srwatson bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) 272100979Srwatson | MultiplyAccumulateAccumulate of 273100979Srwatson BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 274100979Srwatson | MultiplyLong of 275100979Srwatson bool * 276100979Srwatson (bool * 277100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))))) 278100979Srwatson | MultiplySubtract of 279100979Srwatson BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 280100979Srwatson | Signed16Multiply32Accumulate of 281100979Srwatson bool * 282100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)))) 283100979Srwatson | Signed16Multiply32Result of 284100979Srwatson bool * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) 285100979Srwatson | Signed16Multiply64Accumulate of 286100979Srwatson bool * 287100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)))) 288100979Srwatson | Signed16x32Multiply32Accumulate of 289100979Srwatson bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) 290100979Srwatson | Signed16x32Multiply32Result of 291100979Srwatson bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 292100979Srwatson | SignedMostSignificantMultiply of 293100979Srwatson bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) 294100979Srwatson | SignedMostSignificantMultiplySubtract of 295100979Srwatson bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) 296100979Srwatson | SignedMultiplyDual of 297100979Srwatson bool * 298100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)))) 299100979Srwatson | SignedMultiplyLongDual of 300100979Srwatson bool * 301100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)))) 302100979Srwatson 303100979Srwatsondatatype Data 304100979Srwatson = AddSub of bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 305100979Srwatson | ArithLogicImmediate of 306100979Srwatson BitsN.nbit * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) 307100979Srwatson | CountLeadingZeroes of BitsN.nbit * BitsN.nbit 308100979Srwatson | Move of bool * (bool * (BitsN.nbit * BitsN.nbit)) 309100979Srwatson | MoveHalfword of bool * (BitsN.nbit * BitsN.nbit) 310100979Srwatson | Register of 311100979Srwatson BitsN.nbit * 312100979Srwatson (bool * 313100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * (SRType * Nat.nat))))) 314100979Srwatson | RegisterShiftedRegister of 315100979Srwatson BitsN.nbit * 316100979Srwatson (bool * 317100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * (SRType * BitsN.nbit))))) 318100979Srwatson | ShiftImmediate of 319100979Srwatson bool * (bool * (BitsN.nbit * (BitsN.nbit * (SRType * Nat.nat)))) 320100979Srwatson | ShiftRegister of 321100894Srwatson bool * (bool * (BitsN.nbit * (BitsN.nbit * (SRType * BitsN.nbit)))) 322100979Srwatson | TestCompareImmediate of BitsN.nbit * (BitsN.nbit * BitsN.nbit) 323100979Srwatson | TestCompareRegister of 324100979Srwatson BitsN.nbit * (BitsN.nbit * (BitsN.nbit * (SRType * Nat.nat))) 325100979Srwatson 326100979Srwatsondatatype Branch 327100979Srwatson = BranchExchange of BitsN.nbit 328100979Srwatson | BranchLinkExchangeImmediate of InstrSet * BitsN.nbit 329100979Srwatson | BranchLinkExchangeRegister of BitsN.nbit 330100979Srwatson | BranchTarget of BitsN.nbit 331100979Srwatson | CheckArray of BitsN.nbit * BitsN.nbit 332100979Srwatson | CompareBranch of bool * (BitsN.nbit * BitsN.nbit) 333100979Srwatson | HandlerBranchLink of bool * BitsN.nbit 334100979Srwatson | HandlerBranchLinkParameter of BitsN.nbit * BitsN.nbit 335100979Srwatson | HandlerBranchParameter of BitsN.nbit * BitsN.nbit 336100979Srwatson | TableBranchByte of bool * (BitsN.nbit * BitsN.nbit) 337100979Srwatson 338100979Srwatsondatatype instruction 339100979Srwatson = Branch of Branch 340100979Srwatson | ClearExclusive 341100979Srwatson | Data of Data 342100979Srwatson | Divide of bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 343100979Srwatson | Hint of Hint 344100979Srwatson | IfThen of BitsN.nbit * BitsN.nbit 345100979Srwatson | Load of Load 346100979Srwatson | Media of Media 347100979Srwatson | Multiply of Multiply 348100979Srwatson | NoOperation 349100979Srwatson | SIMD of SIMD 350100979Srwatson | Store of Store 351100979Srwatson | Swap of bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) 352100979Srwatson | System of System 353100979Srwatson | Undefined of BitsN.nbit 354100979Srwatson | VFP of VFP 355100979Srwatson 356100979Srwatsondatatype MachineCode 357100979Srwatson = ARM of BitsN.nbit 358100979Srwatson | BadCode of string 359100979Srwatson | Thumb of BitsN.nbit 360100979Srwatson | Thumb2 of BitsN.nbit * BitsN.nbit 361100979Srwatson | ThumbEE of BitsN.nbit 362100979Srwatson 363100979Srwatsondatatype enc = Enc_ARM | Enc_Thumb | Enc_Narrow | Enc_Wide 364100979Srwatson 365100979Srwatsondatatype maybe_instruction 366100979Srwatson = FAIL of string 367100979Srwatson | OK of (BitsN.nbit * string) * instruction 368100979Srwatson | PENDING of string * ((BitsN.nbit * string) * instruction) 369100979Srwatson | WORD of BitsN.nbit 370100979Srwatson 371100979Srwatsondatatype nat_or_reg = NAT of Nat.nat | REGISTER of BitsN.nbit 372100979Srwatson 373100979Srwatson(* ------------------------------------------------------------------------- 374100979Srwatson Exceptions 375100979Srwatson ------------------------------------------------------------------------- *) 376100979Srwatson 377100979Srwatsonexception ASSERT of string 378100979Srwatson 379100979Srwatsonexception AlignmentFault of BitsN.nbit 380100979Srwatson 381100979Srwatsonexception IMPLEMENTATION_DEFINED of string 382100979Srwatson 383100979Srwatsonexception UNPREDICTABLE of string 384100979Srwatson 385100979Srwatsonexception VFP_EXCEPTION of string 386100979Srwatson 387100979Srwatson(* ------------------------------------------------------------------------- 388100979Srwatson Functions 389100979Srwatson ------------------------------------------------------------------------- *) 390100979Srwatson 391100979Srwatsonstructure Cast: 392100979Srwatsonsig 393100979Srwatson 394100979Srwatsonval natToArchitecture: Nat.nat -> Architecture 395100979Srwatsonval ArchitectureToNat: Architecture -> Nat.nat 396100979Srwatsonval stringToArchitecture: string -> Architecture 397100979Srwatsonval ArchitectureToString: Architecture -> string 398100979Srwatsonval natToExtensions: Nat.nat -> Extensions 399100979Srwatsonval ExtensionsToNat: Extensions -> Nat.nat 400100979Srwatsonval stringToExtensions: string -> Extensions 401100979Srwatsonval ExtensionsToString: Extensions -> string 402100979Srwatsonval natToInstrSet: Nat.nat -> InstrSet 403100979Srwatsonval InstrSetToNat: InstrSet -> Nat.nat 404100979Srwatsonval stringToInstrSet: string -> InstrSet 405100979Srwatsonval InstrSetToString: InstrSet -> string 406100979Srwatsonval natToEncoding: Nat.nat -> Encoding 407100979Srwatsonval EncodingToNat: Encoding -> Nat.nat 408100979Srwatsonval stringToEncoding: string -> Encoding 409100979Srwatsonval EncodingToString: Encoding -> string 410100979Srwatsonval natToRName: Nat.nat -> RName 411100979Srwatsonval RNameToNat: RName -> Nat.nat 412100979Srwatsonval stringToRName: string -> RName 413100979Srwatsonval RNameToString: RName -> string 414100979Srwatsonval natToSRType: Nat.nat -> SRType 415100979Srwatsonval SRTypeToNat: SRType -> Nat.nat 416100979Srwatsonval stringToSRType: string -> SRType 417100979Srwatsonval SRTypeToString: SRType -> string 418100979Srwatsonval natToVFPExtension: Nat.nat -> VFPExtension 419100979Srwatsonval VFPExtensionToNat: VFPExtension -> Nat.nat 420100979Srwatsonval stringToVFPExtension: string -> VFPExtension 421100979Srwatsonval VFPExtensionToString: VFPExtension -> string 422100979Srwatsonval natToVFPNegMul: Nat.nat -> VFPNegMul 423100979Srwatsonval VFPNegMulToNat: VFPNegMul -> Nat.nat 424100979Srwatsonval stringToVFPNegMul: string -> VFPNegMul 425100979Srwatsonval VFPNegMulToString: VFPNegMul -> string 426100979Srwatsonval natToenc: Nat.nat -> enc 427100979Srwatsonval encToNat: enc -> Nat.nat 428100979Srwatsonval stringToenc: string -> enc 429100979Srwatsonval encToString: enc -> string 430100979Srwatson 431100979Srwatsonend 432100979Srwatson 433100979Srwatsonval Architecture: Architecture ref 434100979Srwatsonval CP14: CP14 ref 435100979Srwatsonval CP15: CP15 ref 436100979Srwatsonval CPSR: PSR ref 437100979Srwatsonval CurrentCondition: BitsN.nbit ref 438100979Srwatsonval ELR_hyp: BitsN.nbit ref 439100979Srwatsonval Encoding: Encoding ref 440100979Srwatsonval Extensions: (Extensions list) ref 441100979Srwatsonval FP: FP ref 442100979Srwatsonval MEM: (BitsN.nbit Map.map) ref 443100979Srwatsonval REG: (BitsN.nbit Map.map) ref 444100979Srwatsonval SPSR_abt: PSR ref 445100979Srwatsonval SPSR_fiq: PSR ref 446100979Srwatsonval SPSR_hyp: PSR ref 447100979Srwatsonval SPSR_irq: PSR ref 448100979Srwatsonval SPSR_mon: PSR ref 449100979Srwatsonval SPSR_svc: PSR ref 450100979Srwatsonval SPSR_und: PSR ref 451100979Srwatsonval VFPExtension: VFPExtension ref 452100979Srwatsonval undefined: bool ref 453100979Srwatsonval PSR_A_rupd: PSR * bool -> PSR 454100979Srwatsonval PSR_C_rupd: PSR * bool -> PSR 455100979Srwatsonval PSR_E_rupd: PSR * bool -> PSR 456100979Srwatsonval PSR_F_rupd: PSR * bool -> PSR 457100979Srwatsonval PSR_GE_rupd: PSR * BitsN.nbit -> PSR 458100979Srwatsonval PSR_I_rupd: PSR * bool -> PSR 459100979Srwatsonval PSR_IT_rupd: PSR * BitsN.nbit -> PSR 460100979Srwatsonval PSR_J_rupd: PSR * bool -> PSR 461100979Srwatsonval PSR_M_rupd: PSR * BitsN.nbit -> PSR 462100979Srwatsonval PSR_N_rupd: PSR * bool -> PSR 463100979Srwatsonval PSR_Q_rupd: PSR * bool -> PSR 464100979Srwatsonval PSR_T_rupd: PSR * bool -> PSR 465100979Srwatsonval PSR_V_rupd: PSR * bool -> PSR 466100979Srwatsonval PSR_Z_rupd: PSR * bool -> PSR 467100979Srwatsonval PSR_psr'rst_rupd: PSR * BitsN.nbit -> PSR 468100979Srwatsonval CP14_TEEHBR_rupd: CP14 * BitsN.nbit -> CP14 469100979Srwatsonval SCTLR_A_rupd: SCTLR * bool -> SCTLR 470100979Srwatsonval SCTLR_B_rupd: SCTLR * bool -> SCTLR 471100979Srwatsonval SCTLR_BR_rupd: SCTLR * bool -> SCTLR 472100979Srwatsonval SCTLR_C_rupd: SCTLR * bool -> SCTLR 473100979Srwatsonval SCTLR_DZ_rupd: SCTLR * bool -> SCTLR 474100979Srwatsonval SCTLR_EE_rupd: SCTLR * bool -> SCTLR 475100979Srwatsonval SCTLR_FI_rupd: SCTLR * bool -> SCTLR 476100979Srwatsonval SCTLR_I_rupd: SCTLR * bool -> SCTLR 477100979Srwatsonval SCTLR_IE_rupd: SCTLR * bool -> SCTLR 478100979Srwatsonval SCTLR_M_rupd: SCTLR * bool -> SCTLR 479100979Srwatsonval SCTLR_NMFI_rupd: SCTLR * bool -> SCTLR 480100979Srwatsonval SCTLR_RR_rupd: SCTLR * bool -> SCTLR 481100979Srwatsonval SCTLR_SW_rupd: SCTLR * bool -> SCTLR 482100979Srwatsonval SCTLR_TE_rupd: SCTLR * bool -> SCTLR 483100979Srwatsonval SCTLR_U_rupd: SCTLR * bool -> SCTLR 484100979Srwatsonval SCTLR_V_rupd: SCTLR * bool -> SCTLR 485100979Srwatsonval SCTLR_VE_rupd: SCTLR * bool -> SCTLR 486100979Srwatsonval SCTLR_Z_rupd: SCTLR * bool -> SCTLR 487100979Srwatsonval SCTLR_sctlr'rst_rupd: SCTLR * BitsN.nbit -> SCTLR 488100979Srwatsonval HSCTLR_A_rupd: HSCTLR * bool -> HSCTLR 489100979Srwatsonval HSCTLR_C_rupd: HSCTLR * bool -> HSCTLR 490100979Srwatsonval HSCTLR_CP15BEN_rupd: HSCTLR * bool -> HSCTLR 491100979Srwatsonval HSCTLR_EE_rupd: HSCTLR * bool -> HSCTLR 492100979Srwatsonval HSCTLR_FI_rupd: HSCTLR * bool -> HSCTLR 493100979Srwatsonval HSCTLR_I_rupd: HSCTLR * bool -> HSCTLR 494100979Srwatsonval HSCTLR_M_rupd: HSCTLR * bool -> HSCTLR 495100979Srwatsonval HSCTLR_TE_rupd: HSCTLR * bool -> HSCTLR 496100979Srwatsonval HSCTLR_WXN_rupd: HSCTLR * bool -> HSCTLR 497100979Srwatsonval HSCTLR_hsctlr'rst_rupd: HSCTLR * BitsN.nbit -> HSCTLR 498100979Srwatsonval HSR_EC_rupd: HSR * BitsN.nbit -> HSR 499100979Srwatsonval HSR_IL_rupd: HSR * bool -> HSR 500100979Srwatsonval HSR_ISS_rupd: HSR * BitsN.nbit -> HSR 501100979Srwatsonval SCR_AW_rupd: SCR * bool -> SCR 502100979Srwatsonval SCR_EA_rupd: SCR * bool -> SCR 503100979Srwatsonval SCR_FIQ_rupd: SCR * bool -> SCR 504100979Srwatsonval SCR_FW_rupd: SCR * bool -> SCR 505100979Srwatsonval SCR_HCE_rupd: SCR * bool -> SCR 506100979Srwatsonval SCR_IRQ_rupd: SCR * bool -> SCR 507100979Srwatsonval SCR_NS_rupd: SCR * bool -> SCR 508100979Srwatsonval SCR_SCD_rupd: SCR * bool -> SCR 509100979Srwatsonval SCR_SIF_rupd: SCR * bool -> SCR 510100979Srwatsonval SCR_nET_rupd: SCR * bool -> SCR 511100979Srwatsonval SCR_scr'rst_rupd: SCR * BitsN.nbit -> SCR 512100979Srwatsonval NSACR_NSASEDIS_rupd: NSACR * bool -> NSACR 513100979Srwatsonval NSACR_NSD32DIS_rupd: NSACR * bool -> NSACR 514100979Srwatsonval NSACR_NSTRCDIS_rupd: NSACR * bool -> NSACR 515100979Srwatsonval NSACR_RFR_rupd: NSACR * bool -> NSACR 516100979Srwatsonval NSACR_cp_rupd: NSACR * BitsN.nbit -> NSACR 517100979Srwatsonval NSACR_nsacr'rst_rupd: NSACR * BitsN.nbit -> NSACR 518100979Srwatsonval HCR_AMO_rupd: HCR * bool -> HCR 519100979Srwatsonval HCR_BSU_rupd: HCR * BitsN.nbit -> HCR 520100979Srwatsonval HCR_DC_rupd: HCR * bool -> HCR 521100979Srwatsonval HCR_FB_rupd: HCR * bool -> HCR 522100979Srwatsonval HCR_FMO_rupd: HCR * bool -> HCR 523100979Srwatsonval HCR_IMO_rupd: HCR * bool -> HCR 524100979Srwatsonval HCR_PTW_rupd: HCR * bool -> HCR 525100979Srwatsonval HCR_SWIO_rupd: HCR * bool -> HCR 526100979Srwatsonval HCR_TAC_rupd: HCR * bool -> HCR 527100979Srwatsonval HCR_TGE_rupd: HCR * bool -> HCR 528100979Srwatsonval HCR_TID_rupd: HCR * BitsN.nbit -> HCR 529100979Srwatsonval HCR_TIDCP_rupd: HCR * bool -> HCR 530100979Srwatsonval HCR_TPC_rupd: HCR * bool -> HCR 531100979Srwatsonval HCR_TPU_rupd: HCR * bool -> HCR 532100979Srwatsonval HCR_TSC_rupd: HCR * bool -> HCR 533100979Srwatsonval HCR_TSW_rupd: HCR * bool -> HCR 534100979Srwatsonval HCR_TTLB_rupd: HCR * bool -> HCR 535100979Srwatsonval HCR_TVM_rupd: HCR * bool -> HCR 536100979Srwatsonval HCR_TWE_rupd: HCR * bool -> HCR 537100979Srwatsonval HCR_TWI_rupd: HCR * bool -> HCR 538100979Srwatsonval HCR_VA_rupd: HCR * bool -> HCR 539100979Srwatsonval HCR_VF_rupd: HCR * bool -> HCR 540100979Srwatsonval HCR_VI_rupd: HCR * bool -> HCR 541100979Srwatsonval HCR_VM_rupd: HCR * bool -> HCR 542100979Srwatsonval HCR_hcr'rst_rupd: HCR * BitsN.nbit -> HCR 543100979Srwatsonval CP15_HCR_rupd: CP15 * HCR -> CP15 544100979Srwatsonval CP15_HSCTLR_rupd: CP15 * HSCTLR -> CP15 545100979Srwatsonval CP15_HSR_rupd: CP15 * HSR -> CP15 546100979Srwatsonval CP15_MVBAR_rupd: CP15 * BitsN.nbit -> CP15 547100979Srwatsonval CP15_NSACR_rupd: CP15 * NSACR -> CP15 548100979Srwatsonval CP15_SCR_rupd: CP15 * SCR -> CP15 549100979Srwatsonval CP15_SCTLR_rupd: CP15 * SCTLR -> CP15 550100979Srwatsonval CP15_VBAR_rupd: CP15 * BitsN.nbit -> CP15 551100979Srwatsonval FPSCR_AHP_rupd: FPSCR * bool -> FPSCR 552100979Srwatsonval FPSCR_C_rupd: FPSCR * bool -> FPSCR 553100979Srwatsonval FPSCR_DN_rupd: FPSCR * bool -> FPSCR 554100979Srwatsonval FPSCR_DZC_rupd: FPSCR * bool -> FPSCR 555100979Srwatsonval FPSCR_DZE_rupd: FPSCR * bool -> FPSCR 556100979Srwatsonval FPSCR_FZ_rupd: FPSCR * bool -> FPSCR 557100979Srwatsonval FPSCR_IDC_rupd: FPSCR * bool -> FPSCR 558100979Srwatsonval FPSCR_IDE_rupd: FPSCR * bool -> FPSCR 559100979Srwatsonval FPSCR_IOC_rupd: FPSCR * bool -> FPSCR 560100979Srwatsonval FPSCR_IOE_rupd: FPSCR * bool -> FPSCR 561100979Srwatsonval FPSCR_IXC_rupd: FPSCR * bool -> FPSCR 562100979Srwatsonval FPSCR_IXE_rupd: FPSCR * bool -> FPSCR 563100979Srwatsonval FPSCR_N_rupd: FPSCR * bool -> FPSCR 564100979Srwatsonval FPSCR_OFC_rupd: FPSCR * bool -> FPSCR 565100979Srwatsonval FPSCR_OFE_rupd: FPSCR * bool -> FPSCR 566100979Srwatsonval FPSCR_QC_rupd: FPSCR * bool -> FPSCR 567100979Srwatsonval FPSCR_RMode_rupd: FPSCR * BitsN.nbit -> FPSCR 568100979Srwatsonval FPSCR_UFC_rupd: FPSCR * bool -> FPSCR 569100979Srwatsonval FPSCR_UFE_rupd: FPSCR * bool -> FPSCR 570100979Srwatsonval FPSCR_V_rupd: FPSCR * bool -> FPSCR 571100979Srwatsonval FPSCR_Z_rupd: FPSCR * bool -> FPSCR 572100979Srwatsonval FPSCR_fpscr'rst_rupd: FPSCR * BitsN.nbit -> FPSCR 573100979Srwatsonval FP_FPSCR_rupd: FP * FPSCR -> FP 574100979Srwatsonval FP_REG_rupd: FP * (BitsN.nbit Map.map) -> FP 575100979Srwatsonval boolify'5: BitsN.nbit -> bool * (bool * (bool * (bool * bool))) 576100979Srwatsonval boolify'16: 577100979Srwatson BitsN.nbit -> 578100979Srwatson bool * 579100979Srwatson (bool * 580100979Srwatson (bool * 581100979Srwatson (bool * 582100979Srwatson (bool * 583100979Srwatson (bool * 584100979Srwatson (bool * 585100979Srwatson (bool * 586100979Srwatson (bool * 587100979Srwatson (bool * (bool * (bool * (bool * (bool * (bool * bool)))))))))))))) 588100979Srwatsonval boolify'4: BitsN.nbit -> bool * (bool * (bool * bool)) 589100979Srwatsonval boolify'28: 590100979Srwatson BitsN.nbit -> 591100979Srwatson bool * 592100979Srwatson (bool * 593100979Srwatson (bool * 594100979Srwatson (bool * 595100979Srwatson (bool * 596100979Srwatson (bool * 597100979Srwatson (bool * 598100979Srwatson (bool * 599100979Srwatson (bool * 600100979Srwatson (bool * 601100979Srwatson (bool * 602100979Srwatson (bool * 603100979Srwatson (bool * 604100979Srwatson (bool * 605100979Srwatson (bool * 606100979Srwatson (bool * 607100979Srwatson (bool * 608100979Srwatson (bool * 609100979Srwatson (bool * 610100979Srwatson (bool * 611100979Srwatson (bool * 612100979Srwatson (bool * 613100979Srwatson (bool * (bool * (bool * (bool * (bool * bool)))))))))))))))))))))))))) 614100979Srwatsonval boolify'3: BitsN.nbit -> bool * (bool * bool) 615100979Srwatsonval boolify'8: 616100979Srwatson BitsN.nbit -> 617100979Srwatson bool * (bool * (bool * (bool * (bool * (bool * (bool * bool)))))) 618100979Srwatsonval ArchVersion: unit -> Nat.nat 619100979Srwatsonval HaveDSPSupport: unit -> bool 620100979Srwatsonval HaveThumb2: unit -> bool 621100979Srwatsonval HaveThumbEE: unit -> bool 622100979Srwatsonval HaveMPExt: unit -> bool 623100979Srwatsonval HaveSecurityExt: unit -> bool 624100979Srwatsonval HaveVirtExt: unit -> bool 625100979Srwatsonval rec'PSR: BitsN.nbit -> PSR 626100979Srwatsonval reg'PSR: PSR -> BitsN.nbit 627100979Srwatsonval write'rec'PSR: (BitsN.nbit * PSR) -> BitsN.nbit 628100979Srwatsonval write'reg'PSR: (PSR * BitsN.nbit) -> PSR 629100979Srwatsonval rec'SCTLR: BitsN.nbit -> SCTLR 630100979Srwatsonval reg'SCTLR: SCTLR -> BitsN.nbit 631100979Srwatsonval write'rec'SCTLR: (BitsN.nbit * SCTLR) -> BitsN.nbit 632100979Srwatsonval write'reg'SCTLR: (SCTLR * BitsN.nbit) -> SCTLR 633100979Srwatsonval rec'HSCTLR: BitsN.nbit -> HSCTLR 634100979Srwatsonval reg'HSCTLR: HSCTLR -> BitsN.nbit 635100979Srwatsonval write'rec'HSCTLR: (BitsN.nbit * HSCTLR) -> BitsN.nbit 636100979Srwatsonval write'reg'HSCTLR: (HSCTLR * BitsN.nbit) -> HSCTLR 637100979Srwatsonval rec'HSR: BitsN.nbit -> HSR 638100979Srwatsonval reg'HSR: HSR -> BitsN.nbit 639100979Srwatsonval write'rec'HSR: (BitsN.nbit * HSR) -> BitsN.nbit 640100979Srwatsonval write'reg'HSR: (HSR * BitsN.nbit) -> HSR 641100979Srwatsonval rec'SCR: BitsN.nbit -> SCR 642100979Srwatsonval reg'SCR: SCR -> BitsN.nbit 643100979Srwatsonval write'rec'SCR: (BitsN.nbit * SCR) -> BitsN.nbit 644100979Srwatsonval write'reg'SCR: (SCR * BitsN.nbit) -> SCR 645100979Srwatsonval rec'NSACR: BitsN.nbit -> NSACR 646100979Srwatsonval reg'NSACR: NSACR -> BitsN.nbit 647100979Srwatsonval write'rec'NSACR: (BitsN.nbit * NSACR) -> BitsN.nbit 648100979Srwatsonval write'reg'NSACR: (NSACR * BitsN.nbit) -> NSACR 649100979Srwatsonval rec'HCR: BitsN.nbit -> HCR 650100979Srwatsonval reg'HCR: HCR -> BitsN.nbit 651100979Srwatsonval write'rec'HCR: (BitsN.nbit * HCR) -> BitsN.nbit 652100979Srwatsonval write'reg'HCR: (HCR * BitsN.nbit) -> HCR 653100979Srwatsonval ProcessorID: unit -> IntInf.int 654100979Srwatsonval IsExternalAbort: unit -> bool 655100979Srwatsonval IsSecure: unit -> bool 656100979Srwatsonval UnalignedSupport: unit -> bool 657100979Srwatsonval BadMode: BitsN.nbit -> bool 658100979Srwatsonval CurrentModeIsNotUser: unit -> bool 659100979Srwatsonval CurrentModeIsUserOrSystem: unit -> bool 660100979Srwatsonval CurrentModeIsHyp: unit -> bool 661100979Srwatsonval IntegerZeroDivideTrappingEnabled: unit -> bool 662100979Srwatsonval ISETSTATE: unit -> BitsN.nbit 663100979Srwatsonval write'ISETSTATE: BitsN.nbit -> unit 664100979Srwatsonval CurrentInstrSet: unit -> InstrSet 665100979Srwatsonval SelectInstrSet: InstrSet -> unit 666100979Srwatsonval ITSTATE: unit -> BitsN.nbit 667100979Srwatsonval write'ITSTATE: BitsN.nbit -> unit 668100979Srwatsonval ITAdvance: unit -> unit 669100979Srwatsonval InITBlock: unit -> bool 670100979Srwatsonval LastInITBlock: unit -> bool 671100979Srwatsonval ThumbCondition: unit -> BitsN.nbit 672100979Srwatsonval BigEndian: unit -> bool 673100979Srwatsonval SetExclusiveMonitors: (BitsN.nbit * Nat.nat) -> unit 674100979Srwatsonval ExclusiveMonitorsPass: (BitsN.nbit * Nat.nat) -> bool 675100979Srwatsonval ClearExclusiveLocal: IntInf.int -> unit 676100979Srwatsonval CurrentCond: unit -> BitsN.nbit 677100979Srwatsonval ConditionPassed: unit -> bool 678100979Srwatsonval SPSR: unit -> PSR 679100979Srwatsonval write'SPSR: PSR -> unit 680100979Srwatsonval CPSRWriteByInstr: (BitsN.nbit * (BitsN.nbit * bool)) -> unit 681100979Srwatsonval SPSRWriteByInstr: (BitsN.nbit * BitsN.nbit) -> unit 682100979Srwatsonval RBankSelect: 683100979Srwatson (BitsN.nbit * 684100979Srwatson (RName * 685100979Srwatson (RName * (RName * (RName * (RName * (RName * (RName * RName)))))))) -> 686100979Srwatson RName 687100979Srwatsonval RfiqBankSelect: (BitsN.nbit * (RName * RName)) -> RName 688100979Srwatsonval LookUpRName: (BitsN.nbit * BitsN.nbit) -> RName 689100979Srwatsonval Rmode: (BitsN.nbit * BitsN.nbit) -> BitsN.nbit 690100979Srwatsonval write'Rmode: (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) -> unit 691100979Srwatsonval R: BitsN.nbit -> BitsN.nbit 692100979Srwatsonval write'R: (BitsN.nbit * BitsN.nbit) -> unit 693100979Srwatsonval SP: unit -> BitsN.nbit 694100979Srwatsonval write'SP: BitsN.nbit -> unit 695100979Srwatsonval LR: unit -> BitsN.nbit 696100979Srwatsonval write'LR: BitsN.nbit -> unit 697100979Srwatsonval PC: unit -> BitsN.nbit 698100979Srwatsonval BranchTo: BitsN.nbit -> unit 699100979Srwatsonval PCStoreValue: unit -> BitsN.nbit 700100979Srwatsonval BranchWritePC: BitsN.nbit -> unit 701100979Srwatsonval BXWritePC: BitsN.nbit -> unit 702100979Srwatsonval LoadWritePC: BitsN.nbit -> unit 703100979Srwatsonval ALUWritePC: BitsN.nbit -> unit 704100979Srwatsonval ThisInstrLength: unit -> Nat.nat 705100979Srwatsonval IncPC: unit -> unit 706100979Srwatsonval mem1: BitsN.nbit -> (bool list) 707100979Srwatsonval mem: (BitsN.nbit * Nat.nat) -> (bool list) 708100979Srwatsonval write'mem: ((bool list) * (BitsN.nbit * Nat.nat)) -> unit 709100979Srwatsonval BigEndianReverse: ((bool list) * Nat.nat) -> (bool list) 710100979Srwatsonval Align: Nat.nat -> (BitsN.nbit * Nat.nat) -> BitsN.nbit 711100979Srwatsonval Aligned: Nat.nat -> (BitsN.nbit * Nat.nat) -> bool 712100979Srwatsonval MemA_with_priv: Nat.nat -> 713100979Srwatson (BitsN.nbit * (Nat.nat * bool)) -> BitsN.nbit 714100979Srwatsonval write'MemA_with_priv: Nat.nat -> 715100979Srwatson (BitsN.nbit * (BitsN.nbit * (Nat.nat * bool))) -> unit 716100979Srwatsonval MemA_unpriv: Nat.nat -> (BitsN.nbit * Nat.nat) -> BitsN.nbit 717100979Srwatsonval write'MemA_unpriv: Nat.nat -> 718100979Srwatson (BitsN.nbit * (BitsN.nbit * Nat.nat)) -> unit 719100979Srwatsonval MemA: Nat.nat -> (BitsN.nbit * Nat.nat) -> BitsN.nbit 720100979Srwatsonval write'MemA: Nat.nat -> (BitsN.nbit * (BitsN.nbit * Nat.nat)) -> unit 721100979Srwatsonval MemU_with_priv: Nat.nat -> 722100979Srwatson (BitsN.nbit * (Nat.nat * bool)) -> BitsN.nbit 723100979Srwatsonval write'MemU_with_priv: Nat.nat -> 724100979Srwatson (BitsN.nbit * (BitsN.nbit * (Nat.nat * bool))) -> unit 725100979Srwatsonval MemU_unpriv: Nat.nat -> (BitsN.nbit * Nat.nat) -> BitsN.nbit 726100979Srwatsonval write'MemU_unpriv: Nat.nat -> 727100979Srwatson (BitsN.nbit * (BitsN.nbit * Nat.nat)) -> unit 728100979Srwatsonval MemU: Nat.nat -> (BitsN.nbit * Nat.nat) -> BitsN.nbit 729100979Srwatsonval write'MemU: Nat.nat -> (BitsN.nbit * (BitsN.nbit * Nat.nat)) -> unit 730100979Srwatsonval NullCheckIfThumbEE: BitsN.nbit -> bool 731100979Srwatsonval HighestSetBit: Nat.nat -> BitsN.nbit -> IntInf.int 732100979Srwatsonval CountLeadingZeroBits: Nat.nat -> BitsN.nbit -> Nat.nat 733100979Srwatsonval LowestSetBit: Nat.nat -> BitsN.nbit -> Nat.nat 734100979Srwatsonval BitCount: Nat.nat -> BitsN.nbit -> Nat.nat 735100979Srwatsonval SignExtendFrom: Nat.nat -> (BitsN.nbit * Nat.nat) -> BitsN.nbit 736100979Srwatsonval Extend: Nat.nat * Nat.nat -> (bool * BitsN.nbit) -> BitsN.nbit 737100979Srwatsonval UInt: Nat.nat -> BitsN.nbit -> IntInf.int 738100979Srwatsonval SignedSatQ: Nat.nat -> (IntInf.int * Nat.nat) -> (BitsN.nbit * bool) 739100979Srwatsonval UnsignedSatQ: Nat.nat -> (IntInf.int * Nat.nat) -> (BitsN.nbit * bool) 740100979Srwatsonval SatQ: Nat.nat -> 741100979Srwatson (IntInf.int * (Nat.nat * bool)) -> (BitsN.nbit * bool) 742100979Srwatsonval SignedSat: Nat.nat -> (IntInf.int * Nat.nat) -> BitsN.nbit 743100979Srwatsonval UnsignedSat: Nat.nat -> (IntInf.int * Nat.nat) -> BitsN.nbit 744100979Srwatsonval LSL_C: Nat.nat -> (BitsN.nbit * Nat.nat) -> (BitsN.nbit * bool) 745100979Srwatsonval LSL: Nat.nat -> (BitsN.nbit * Nat.nat) -> BitsN.nbit 746100979Srwatsonval LSR_C: Nat.nat -> (BitsN.nbit * Nat.nat) -> (BitsN.nbit * bool) 747100979Srwatsonval LSR: Nat.nat -> (BitsN.nbit * Nat.nat) -> BitsN.nbit 748100979Srwatsonval ASR_C: Nat.nat -> (BitsN.nbit * Nat.nat) -> (BitsN.nbit * bool) 749100979Srwatsonval ASR: Nat.nat -> (BitsN.nbit * Nat.nat) -> BitsN.nbit 750100979Srwatsonval ROR_C: Nat.nat -> (BitsN.nbit * Nat.nat) -> (BitsN.nbit * bool) 751100979Srwatsonval ROR: Nat.nat -> (BitsN.nbit * Nat.nat) -> BitsN.nbit 752100979Srwatsonval RRX_C: Nat.nat -> (BitsN.nbit * bool) -> (BitsN.nbit * bool) 753100979Srwatsonval RRX: Nat.nat -> (BitsN.nbit * bool) -> BitsN.nbit 754100979Srwatsonval DecodeImmShift: (BitsN.nbit * BitsN.nbit) -> (SRType * Nat.nat) 755100979Srwatsonval DecodeRegShift: BitsN.nbit -> SRType 756100979Srwatsonval Shift_C: Nat.nat -> 757100979Srwatson (BitsN.nbit * (SRType * (Nat.nat * bool))) -> (BitsN.nbit * bool) 758100979Srwatsonval Shift: Nat.nat -> 759100979Srwatson (BitsN.nbit * (SRType * (Nat.nat * bool))) -> BitsN.nbit 760100979Srwatsonval ARMExpandImm_C: (BitsN.nbit * bool) -> (BitsN.nbit * bool) 761100979Srwatsonval ARMExpandImm: BitsN.nbit -> BitsN.nbit 762100979Srwatsonval ThumbExpandImm_C: (BitsN.nbit * bool) -> (BitsN.nbit * bool) 763100979Srwatsonval ExpandImm_C: (BitsN.nbit * bool) -> (BitsN.nbit * bool) 764100979Srwatsonval AddWithCarry: Nat.nat -> 765100979Srwatson (BitsN.nbit * (BitsN.nbit * bool)) -> (BitsN.nbit * (bool * bool)) 766100979Srwatsonval DataProcessingALU: 767100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * bool))) -> 768100979Srwatson (BitsN.nbit * (bool * bool)) 769100979Srwatsonval ArithmeticOpcode: BitsN.nbit -> bool 770100979Srwatsonval ExcVectorBase: unit -> BitsN.nbit 771100979Srwatsonval EnterMonitorMode: (PSR * (BitsN.nbit * BitsN.nbit)) -> unit 772100979Srwatsonval EnterHypMode: (PSR * (BitsN.nbit * BitsN.nbit)) -> unit 773100979Srwatsonval TakeReset: unit -> unit 774100979Srwatsonval TakeUndefInstrException: unit -> unit 775100979Srwatsonval TakeSVCException: unit -> unit 776100979Srwatsonval TakeSMCException: unit -> unit 777100979Srwatsonval TakeHVCException: unit -> unit 778100979Srwatsonval TakeDataAbortException: unit -> unit 779100979Srwatsonval TakePrefetchAbortException: unit -> unit 780100979Srwatsonval TakePhysicalIRQException: unit -> unit 781100979Srwatsonval TakeVirtualIRQException: unit -> unit 782100979Srwatsonval TakePhysicalFIQException: unit -> unit 783100979Srwatsonval TakeVirtualFIQException: unit -> unit 784100979Srwatsonval TakeHypTrapException: unit -> unit 785100979Srwatsonval WriteHSR: (BitsN.nbit * BitsN.nbit) -> unit 786100979Srwatsonval CallSupervisor: BitsN.nbit -> unit 787100979Srwatsonval CallHypervisor: BitsN.nbit -> unit 788100979Srwatsonval BankedRegisterAccessValid: (BitsN.nbit * BitsN.nbit) -> unit 789100979Srwatsonval SPSRAccessValid: (BitsN.nbit * BitsN.nbit) -> unit 790100979Srwatsonval dfn'BranchTarget: BitsN.nbit -> unit 791100979Srwatsonval dfn'BranchExchange: BitsN.nbit -> unit 792100979Srwatsonval dfn'BranchLinkExchangeImmediate: (InstrSet * BitsN.nbit) -> unit 793100979Srwatsonval dfn'BranchLinkExchangeRegister: BitsN.nbit -> unit 794100979Srwatsonval dfn'CompareBranch: (bool * (BitsN.nbit * BitsN.nbit)) -> unit 795100979Srwatsonval dfn'TableBranchByte: (bool * (BitsN.nbit * BitsN.nbit)) -> unit 796100979Srwatsonval dfn'CheckArray: (BitsN.nbit * BitsN.nbit) -> unit 797100979Srwatsonval dfn'HandlerBranchLink: (bool * BitsN.nbit) -> unit 798100979Srwatsonval dfn'HandlerBranchLinkParameter: (BitsN.nbit * BitsN.nbit) -> unit 799100979Srwatsonval dfn'HandlerBranchParameter: (BitsN.nbit * BitsN.nbit) -> unit 800100979Srwatsonval dfn'EnterxLeavex: bool -> unit 801100979Srwatsonval dfn'IfThen: (BitsN.nbit * BitsN.nbit) -> unit 802100979Srwatsonval dfn'CountLeadingZeroes: (BitsN.nbit * BitsN.nbit) -> unit 803100979Srwatsonval dfn'MoveHalfword: (bool * (BitsN.nbit * BitsN.nbit)) -> unit 804100979Srwatsonval DataProcessing: 805100979Srwatson (BitsN.nbit * (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * bool))))) -> 806100979Srwatson unit 807100979Srwatsonval DataProcessingPC: 808100979Srwatson (BitsN.nbit * (bool * (BitsN.nbit * BitsN.nbit))) -> unit 809100979Srwatsonval dfn'Move: (bool * (bool * (BitsN.nbit * BitsN.nbit))) -> unit 810100979Srwatsonval dfn'TestCompareImmediate: 811100979Srwatson (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) -> unit 812100979Srwatsonval dfn'ArithLogicImmediate: 813100979Srwatson (BitsN.nbit * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)))) -> unit 814100979Srwatsonval doRegister: 815100979Srwatson (BitsN.nbit * 816100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * (SRType * Nat.nat)))))) -> 817100979Srwatson unit 818100979Srwatsonval dfn'Register: 819100979Srwatson (BitsN.nbit * 820100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * (SRType * Nat.nat)))))) -> 821100979Srwatson unit 822100979Srwatsonval dfn'TestCompareRegister: 823100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * (SRType * Nat.nat)))) -> unit 824100979Srwatsonval dfn'ShiftImmediate: 825100979Srwatson (bool * (bool * (BitsN.nbit * (BitsN.nbit * (SRType * Nat.nat))))) -> 826100979Srwatson unit 827100979Srwatsonval doRegisterShiftedRegister: 828100979Srwatson (BitsN.nbit * 829100979Srwatson (bool * 830100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * (SRType * BitsN.nbit)))))) -> 831100979Srwatson unit 832100979Srwatsonval dfn'RegisterShiftedRegister: 833100979Srwatson (BitsN.nbit * 834100979Srwatson (bool * 835100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * (SRType * BitsN.nbit)))))) -> 836100979Srwatson unit 837100979Srwatsonval dfn'ShiftRegister: 838100979Srwatson (bool * (bool * (BitsN.nbit * (BitsN.nbit * (SRType * BitsN.nbit))))) -> 839100979Srwatson unit 840100979Srwatsonval dfn'AddSub: (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 841100979Srwatsonval dfn'SaturatingAddSubtract: 842100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 843100979Srwatsonval dfn'Multiply32: 844100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 845100979Srwatsonval dfn'MultiplyAccumulate: 846100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)))) -> unit 847100979Srwatsonval dfn'MultiplyLong: 848100979Srwatson (bool * 849100979Srwatson (bool * 850100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)))))) -> 851100979Srwatson unit 852100979Srwatsonval dfn'MultiplyAccumulateAccumulate: 853100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 854100979Srwatsonval dfn'MultiplySubtract: 855100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 856100979Srwatsonval dfn'Signed16Multiply32Accumulate: 857100979Srwatson (bool * (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))))) -> 858100979Srwatson unit 859100979Srwatsonval dfn'Signed16Multiply32Result: 860100979Srwatson (bool * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)))) -> unit 861100979Srwatsonval dfn'Signed16x32Multiply32Accumulate: 862100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)))) -> unit 863100979Srwatsonval dfn'Signed16x32Multiply32Result: 864100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 865100979Srwatsonval dfn'Signed16Multiply64Accumulate: 866100979Srwatson (bool * (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))))) -> 867100979Srwatson unit 868100979Srwatsonval dfn'SignedMultiplyDual: 869100979Srwatson (bool * (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))))) -> 870100979Srwatson unit 871100979Srwatsonval dfn'SignedMultiplyLongDual: 872100979Srwatson (bool * (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))))) -> 873100979Srwatson unit 874100979Srwatsonval dfn'SignedMostSignificantMultiply: 875100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)))) -> unit 876100979Srwatsonval dfn'SignedMostSignificantMultiplySubtract: 877100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)))) -> unit 878100979Srwatsonval SignedParallelAddSub16: 879100979Srwatson (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) -> (IntInf.int * IntInf.int) 880100979Srwatsonval dfn'SignedAddSub16: 881100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 882100979Srwatsonval dfn'SignedSaturatingAddSub16: 883100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 884100979Srwatsonval dfn'SignedHalvingAddSub16: 885100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 886100979Srwatsonval SignedParallelAddSub8: 887100979Srwatson (bool * (BitsN.nbit * BitsN.nbit)) -> 888100979Srwatson (IntInf.int * (IntInf.int * (IntInf.int * IntInf.int))) 889100979Srwatsonval dfn'SignedAddSub8: 890100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 891100979Srwatsonval dfn'SignedSaturatingAddSub8: 892100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 893100979Srwatsonval dfn'SignedHalvingAddSub8: 894100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 895100979Srwatsonval UnsignedParallelAddSub16: 896100979Srwatson (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) -> (IntInf.int * IntInf.int) 897100979Srwatsonval dfn'UnsignedAddSub16: 898100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 899100979Srwatsonval dfn'UnsignedSaturatingAddSub16: 900100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 901100979Srwatsonval dfn'UnsignedHalvingAddSub16: 902100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 903100979Srwatsonval UnsignedParallelAddSub8: 904100979Srwatson (bool * (BitsN.nbit * BitsN.nbit)) -> 905100979Srwatson (IntInf.int * (IntInf.int * (IntInf.int * IntInf.int))) 906100979Srwatsonval dfn'UnsignedAddSub8: 907100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 908100979Srwatsonval dfn'UnsignedSaturatingAddSub8: 909100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 910100979Srwatsonval dfn'UnsignedHalvingAddSub8: 911100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 912100979Srwatsonval dfn'UnsignedSumAbsoluteDifferences: 913100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 914100979Srwatsonval GenerateIntegerZeroDivide: unit -> unit 915100979Srwatsonval dfn'Divide: (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 916100979Srwatsonval dfn'PackHalfword: 917100979Srwatson (SRType * (Nat.nat * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))))) -> 918100979Srwatson unit 919100979Srwatsonval dfn'Saturate: 920100979Srwatson (SRType * (Nat.nat * (Nat.nat * (bool * (BitsN.nbit * BitsN.nbit))))) -> 921100979Srwatson unit 922100979Srwatsonval dfn'Saturate16: (Nat.nat * (bool * (BitsN.nbit * BitsN.nbit))) -> unit 923100979Srwatsonval dfn'ExtendByte: 924100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * Nat.nat)))) -> unit 925100979Srwatsonval dfn'ExtendByte16: 926100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * Nat.nat)))) -> unit 927100979Srwatsonval dfn'ExtendHalfword: 928100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * Nat.nat)))) -> unit 929100979Srwatsonval dfn'SelectBytes: (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) -> unit 930100979Srwatsonval dfn'ByteReverse: (BitsN.nbit * BitsN.nbit) -> unit 931100979Srwatsonval dfn'ByteReversePackedHalfword: (BitsN.nbit * BitsN.nbit) -> unit 932100979Srwatsonval dfn'ByteReverseSignedHalfword: (BitsN.nbit * BitsN.nbit) -> unit 933100979Srwatsonval dfn'ReverseBits: (BitsN.nbit * BitsN.nbit) -> unit 934100979Srwatsonval dfn'BitFieldExtract: 935100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * (Nat.nat * Nat.nat)))) -> unit 936100979Srwatsonval dfn'BitFieldClearOrInsert: 937100979Srwatson (BitsN.nbit * (BitsN.nbit * (Nat.nat * Nat.nat))) -> unit 938100979Srwatsonval dfn'LoadWord: 939100979Srwatson (bool * (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1))))) -> unit 940100979Srwatsonval dfn'LoadLiteral: (bool * (BitsN.nbit * BitsN.nbit)) -> unit 941100979Srwatsonval dfn'LoadUnprivileged: 942100979Srwatson (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1)))) -> unit 943100979Srwatsonval dfn'LoadByte: 944100979Srwatson (bool * (bool * (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1)))))) -> 945100979Srwatson unit 946100979Srwatsonval dfn'LoadByteLiteral: 947100979Srwatson (bool * (bool * (BitsN.nbit * BitsN.nbit))) -> unit 948100979Srwatsonval dfn'LoadByteUnprivileged: 949100979Srwatson (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1)))) -> unit 950100979Srwatsonval dfn'LoadSignedByteUnprivileged: 951100979Srwatson (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset2)))) -> unit 952100979Srwatsonval dfn'LoadHalf: 953100979Srwatson (bool * (bool * (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1)))))) -> 954100979Srwatson unit 955100979Srwatsonval dfn'LoadHalfLiteral: 956100979Srwatson (bool * (bool * (BitsN.nbit * BitsN.nbit))) -> unit 957100979Srwatsonval dfn'LoadHalfUnprivileged: 958100979Srwatson (bool * (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset2))))) -> unit 959100979Srwatsonval dfn'LoadMultiple: 960100979Srwatson (bool * (bool * (bool * (BitsN.nbit * BitsN.nbit)))) -> unit 961100979Srwatsonval dfn'LoadMultipleExceptionReturn: 962100979Srwatson (bool * (bool * (bool * (BitsN.nbit * BitsN.nbit)))) -> unit 963100979Srwatsonval dfn'LoadMultipleUserRegisters: 964100979Srwatson (bool * (bool * (BitsN.nbit * BitsN.nbit))) -> unit 965100979Srwatsonval dfn'LoadDual: 966100979Srwatson (bool * 967100979Srwatson (bool * (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * offset2)))))) -> 968100979Srwatson unit 969100979Srwatsonval dfn'LoadDualLiteral: 970100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 971100979Srwatsonval dfn'LoadExclusive: (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) -> unit 972100979Srwatsonval dfn'LoadExclusiveByte: (BitsN.nbit * BitsN.nbit) -> unit 973100979Srwatsonval dfn'LoadExclusiveHalf: (BitsN.nbit * BitsN.nbit) -> unit 974100979Srwatsonval dfn'LoadExclusiveDoubleword: 975100979Srwatson (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) -> unit 976100979Srwatsonval dfn'StoreWord: 977100979Srwatson (bool * (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1))))) -> unit 978100979Srwatsonval dfn'StoreUnprivileged: 979100979Srwatson (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1)))) -> unit 980100979Srwatsonval dfn'StoreByte: 981100979Srwatson (bool * (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1))))) -> unit 982100979Srwatsonval dfn'StoreByteUnprivileged: 983100979Srwatson (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1)))) -> unit 984100979Srwatsonval dfn'StoreHalf: 985100979Srwatson (bool * (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1))))) -> unit 986100979Srwatsonval dfn'StoreHalfUnprivileged: 987100979Srwatson (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset2)))) -> unit 988100979Srwatsonval dfn'StoreMultiple: 989101308Sjeff (bool * (bool * (bool * (BitsN.nbit * BitsN.nbit)))) -> unit 990100979Srwatsonval dfn'StoreMultipleUserRegisters: 991101308Sjeff (bool * (bool * (BitsN.nbit * BitsN.nbit))) -> unit 992100979Srwatsonval dfn'StoreDual: 993100979Srwatson (bool * 994100979Srwatson (bool * (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * offset2)))))) -> 995100979Srwatson unit 996100979Srwatsonval dfn'StoreExclusive: 997100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 998100979Srwatsonval dfn'StoreExclusiveByte: 999100979Srwatson (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) -> unit 1000100979Srwatsonval dfn'StoreExclusiveHalf: 1001100979Srwatson (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) -> unit 1002100979Srwatsonval dfn'StoreExclusiveDoubleword: 1003100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 1004100979Srwatsonval dfn'ClearExclusive: unit -> unit 1005100979Srwatsonval dfn'Swap: (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 1006100979Srwatsonval dfn'ChangeProcessorState: 1007100979Srwatson (bool * (bool * (bool * (bool * (bool * (BitsN.nbit option)))))) -> unit 1008100979Srwatsonval dfn'ExceptionReturn: unit -> unit 1009100979Srwatsonval dfn'HypervisorCall: BitsN.nbit -> unit 1010100979Srwatsonval dfn'MoveToRegisterFromSpecial: (bool * BitsN.nbit) -> unit 1011100979Srwatsonval dfn'MoveToRegisterFromBankedOrSpecial: 1012100979Srwatson (bool * (BitsN.nbit * BitsN.nbit)) -> unit 1013100979Srwatsonval dfn'MoveToSpecialFromImmediate: 1014100979Srwatson (bool * (BitsN.nbit * BitsN.nbit)) -> unit 1015100979Srwatsonval dfn'MoveToSpecialFromRegister: 1016100979Srwatson (bool * (BitsN.nbit * BitsN.nbit)) -> unit 1017100979Srwatsonval dfn'MoveToBankedOrSpecialRegister: 1018100979Srwatson (bool * (BitsN.nbit * BitsN.nbit)) -> unit 1019100979Srwatsonval dfn'ReturnFromException: (bool * (bool * (bool * BitsN.nbit))) -> unit 1020100979Srwatsonval dfn'SecureMonitorCall: BitsN.nbit -> unit 1021100979Srwatsonval dfn'SupervisorCall: BitsN.nbit -> unit 1022100979Srwatsonval dfn'StoreReturnState: (bool * (bool * (bool * BitsN.nbit))) -> unit 1023100979Srwatsonval dfn'Setend: bool -> unit 1024100979Srwatsonval dfn'Undefined: BitsN.nbit -> unit 1025100979Srwatsonval dfn'NoOperation: unit -> unit 1026100979Srwatsonval dfn'Breakpoint: BitsN.nbit -> unit 1027100979Srwatsonval dfn'Debug: BitsN.nbit -> unit 1028100979Srwatsonval dfn'DataMemoryBarrier: BitsN.nbit -> unit 1029100979Srwatsonval dfn'DataSynchronizationBarrier: BitsN.nbit -> unit 1030100979Srwatsonval dfn'InstructionSynchronizationBarrier: BitsN.nbit -> unit 1031100979Srwatsonval dfn'PreloadData: (bool * (bool * (BitsN.nbit * offset1))) -> unit 1032100979Srwatsonval dfn'PreloadDataLiteral: (bool * BitsN.nbit) -> unit 1033100979Srwatsonval dfn'PreloadInstruction: (bool * (BitsN.nbit * offset1)) -> unit 1034100979Srwatsonval dfn'SendEvent: unit -> unit 1035100979Srwatsonval dfn'WaitForEvent: unit -> unit 1036100979Srwatsonval dfn'WaitForInterrupt: unit -> unit 1037100979Srwatsonval dfn'Yield: unit -> unit 1038100979Srwatsonval rec'FPSCR: BitsN.nbit -> FPSCR 1039100979Srwatsonval reg'FPSCR: FPSCR -> BitsN.nbit 1040100979Srwatsonval write'rec'FPSCR: (BitsN.nbit * FPSCR) -> BitsN.nbit 1041100979Srwatsonval write'reg'FPSCR: (FPSCR * BitsN.nbit) -> FPSCR 1042100979Srwatsonval RoundingMode: unit -> IEEEReal.rounding_mode 1043101308Sjeffval FPAdd32: (BitsN.nbit * BitsN.nbit) -> BitsN.nbit 1044100979Srwatsonval FPSub32: (BitsN.nbit * BitsN.nbit) -> BitsN.nbit 1045100979Srwatsonval FPMul32: (BitsN.nbit * BitsN.nbit) -> BitsN.nbit 1046100979Srwatsonval FPAdd64: (BitsN.nbit * BitsN.nbit) -> BitsN.nbit 1047100979Srwatsonval FPSub64: (BitsN.nbit * BitsN.nbit) -> BitsN.nbit 1048100979Srwatsonval FPMul64: (BitsN.nbit * BitsN.nbit) -> BitsN.nbit 1049100979Srwatsonval FPToFixed32: (BitsN.nbit * (bool * bool)) -> BitsN.nbit 1050100979Srwatsonval FPToFixed64: (BitsN.nbit * (bool * bool)) -> BitsN.nbit 1051100979Srwatsonval FixedToFP32: (BitsN.nbit * (bool * bool)) -> BitsN.nbit 1052100979Srwatsonval FixedToFP64: (BitsN.nbit * (bool * bool)) -> BitsN.nbit 1053100979Srwatsonval D: BitsN.nbit -> BitsN.nbit 1054100979Srwatsonval write'D: (BitsN.nbit * BitsN.nbit) -> unit 1055100979Srwatsonval S: BitsN.nbit -> BitsN.nbit 1056100979Srwatsonval write'S: (BitsN.nbit * BitsN.nbit) -> unit 1057100979Srwatsonval VFPExpandImm: (BitsN.nbit * bool) -> BitsN.nbit 1058100979Srwatsonval FPCompare32: (BitsN.nbit * BitsN.nbit) -> BitsN.nbit 1059100979Srwatsonval FPCompare64: (BitsN.nbit * BitsN.nbit) -> BitsN.nbit 1060100979Srwatsonval FPZero32: BitsN.nbit -> BitsN.nbit 1061100979Srwatsonval FPZero64: BitsN.nbit -> BitsN.nbit 1062100979Srwatsonval dfn'vmov_imm: (bool * (BitsN.nbit * BitsN.nbit)) -> unit 1063100979Srwatsonval dfn'vmov: (bool * (BitsN.nbit * BitsN.nbit)) -> unit 1064100979Srwatsonval dfn'vmov_single: (bool * (BitsN.nbit * BitsN.nbit)) -> unit 1065100979Srwatsonval dfn'vmov_two_singles: 1066100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 1067100979Srwatsonval dfn'vmov_double: 1068100979Srwatson (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 1069100979Srwatsonval dfn'vabs: (bool * (BitsN.nbit * BitsN.nbit)) -> unit 1070100979Srwatsonval dfn'vneg: (bool * (BitsN.nbit * BitsN.nbit)) -> unit 1071100979Srwatsonval dfn'vsqrt: (bool * (BitsN.nbit * BitsN.nbit)) -> unit 1072100979Srwatsonval dfn'vcvt_float: (bool * (BitsN.nbit * BitsN.nbit)) -> unit 1073100979Srwatsonval dfn'vcvt_to_integer: 1074100979Srwatson (bool * (bool * (bool * (BitsN.nbit * BitsN.nbit)))) -> unit 1075100979Srwatsonval dfn'vcvt_from_integer: 1076100979Srwatson (bool * (bool * (BitsN.nbit * BitsN.nbit))) -> unit 1077100979Srwatsonval dfn'vcmp: (bool * (BitsN.nbit * (BitsN.nbit option))) -> unit 1078100979Srwatsonval dfn'vmsr: BitsN.nbit -> unit 1079100979Srwatsonval dfn'vmrs: BitsN.nbit -> unit 1080100979Srwatsonval dfn'vadd: (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 1081100979Srwatsonval dfn'vsub: (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 1082100979Srwatsonval dfn'vmul: (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 1083100979Srwatsonval dfn'vdiv: (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> unit 1084100979Srwatsonval dfn'vmla_vmls: 1085100979Srwatson (bool * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)))) -> unit 1086100979Srwatsonval dfn'vfma_vfms: 1087100979Srwatson (bool * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)))) -> unit 1088100979Srwatsonval dfn'vfnma_vfnms: 1089100979Srwatson (bool * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)))) -> unit 1090100979Srwatsonval dfn'vneg_mul: 1091100979Srwatson (bool * (VFPNegMul * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)))) -> unit 1092100979Srwatsonval dfn'vldr: 1093100979Srwatson (bool * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)))) -> unit 1094100979Srwatsonval dfn'vstr: 1095100979Srwatson (bool * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit)))) -> unit 1096101308Sjeffval dfn'vldm: 1097100979Srwatson (bool * (bool * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))))) -> 1098100979Srwatson unit 1099100979Srwatsonval dfn'vstm: 1100100979Srwatson (bool * (bool * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))))) -> 1101100979Srwatson unit 1102100979Srwatsonval Run: instruction -> unit 1103100979Srwatsonval Fetch: unit -> MachineCode 1104100979Srwatsonval Do: (BitsN.nbit * bool) -> bool 1105100979Srwatsonval Skip: unit -> instruction 1106100979Srwatsonval UndefinedARM: BitsN.nbit -> instruction 1107100979Srwatsonval UndefinedThumb: unit -> instruction 1108100979Srwatsonval DECODE_UNPREDICTABLE: (MachineCode * string) -> unit 1109100979Srwatsonval DecodeHint: (BitsN.nbit * BitsN.nbit) -> instruction 1110100979Srwatsonval DecodeParallelAdditionSubtraction: 1111100979Srwatson (BitsN.nbit * 1112100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))))) -> 1113100979Srwatson instruction 1114100979Srwatsonval DecodeVFP: BitsN.nbit -> (bool * (string * instruction)) 1115100979Srwatsonval DecodeARM: BitsN.nbit -> instruction 1116100979Srwatsonval DecodeThumb: BitsN.nbit -> instruction 1117100979Srwatsonval DecodeThumbEE: BitsN.nbit -> instruction 1118100979Srwatsonval DecodeThumb2: (BitsN.nbit * BitsN.nbit) -> instruction 1119100979Srwatsonval Decode: MachineCode -> instruction 1120100979Srwatsonval Next: unit -> unit 1121100979Srwatsonval EncodeThumbImmediate: BitsN.nbit -> (BitsN.nbit option) 1122100979Srwatsonval EncodeARMImmediate_aux: 1123100979Srwatson (BitsN.nbit * BitsN.nbit) -> (BitsN.nbit option) 1124100979Srwatsonval EncodeARMImmediate: BitsN.nbit -> (BitsN.nbit option) 1125100979Srwatsonval EncodeImmShift: (SRType * Nat.nat) -> (BitsN.nbit * BitsN.nbit) 1126100979Srwatsonval EncodeRegShift: SRType -> BitsN.nbit 1127100979Srwatsonval EncodeAddSubOpc: BitsN.nbit -> BitsN.nbit 1128100979Srwatsonval EncodeVFPImmediate: (BitsN.nbit * bool) -> (BitsN.nbit option) 1129100979Srwatsonval EncodeVFPReg: (BitsN.nbit * bool) -> (BitsN.nbit * BitsN.nbit) 1130100979Srwatsonval e_branch: (BitsN.nbit * (Branch * enc)) -> MachineCode 1131100979Srwatsonval e_vfp: (BitsN.nbit * (VFP * enc)) -> MachineCode 1132100979Srwatsonval e_data: (BitsN.nbit * (Data * enc)) -> MachineCode 1133100979Srwatsonval e_media: (BitsN.nbit * (Media * enc)) -> MachineCode 1134100979Srwatsonval e_hint: (BitsN.nbit * (Hint * enc)) -> MachineCode 1135100979Srwatsonval e_system: (BitsN.nbit * (System * enc)) -> MachineCode 1136101308Sjeffval e_multiply: (BitsN.nbit * (Multiply * enc)) -> MachineCode 1137100979Srwatsonval e_simd: (BitsN.nbit * (SIMD * enc)) -> MachineCode 1138100979Srwatsonval e_load: (BitsN.nbit * (Load * enc)) -> MachineCode 1139100979Srwatsonval e_store: (BitsN.nbit * (Store * enc)) -> MachineCode 1140100979Srwatsonval instructionEncode: (BitsN.nbit * (instruction * enc)) -> MachineCode 1141100979Srwatsonval SetPassCondition: BitsN.nbit -> unit 1142100979Srwatsonval Encode: (BitsN.nbit * (instruction * enc)) -> MachineCode 1143100979Srwatsonval al: BitsN.nbit * string 1144100979Srwatsonval stripSpaces: string -> string 1145100979Srwatsonval p_number: string -> (Nat.nat option) 1146100979Srwatsonval p_signed_number: (bool * string) -> ((bool * Nat.nat) option) 1147100979Srwatsonval p_encode_immediate: Nat.nat -> string -> ((bool * BitsN.nbit) option) 1148100979Srwatsonval p_encode_signed_immediate: Nat.nat -> 1149100979Srwatson (bool * string) -> ((bool * (bool * BitsN.nbit)) option) 1150100979Srwatsonval p_encode_signed_immediate_offset: Nat.nat -> 1151100979Srwatson (bool * string) -> ((bool * (bool * BitsN.nbit)) option) 1152100979Srwatsonval p_encode_signed_offset: Nat.nat -> 1153100979Srwatson (bool * string) -> ((bool * BitsN.nbit) option) 1154100979Srwatsonval p_unbounded_immediate: string -> (Nat.nat option) 1155100979Srwatsonval p_immediate: Nat.nat -> string -> ((bool * BitsN.nbit) option) 1156100979Srwatsonval p_immediate_number: Nat.nat -> string -> ((bool * BitsN.nbit) option) 1157100979Srwatsonval p_signed_immediate: Nat.nat -> 1158100979Srwatson string -> ((bool * (bool * BitsN.nbit)) option) 1159100979Srwatsonval p_signed_offset: Nat.nat -> 1160100979Srwatson string -> ((bool * (bool * BitsN.nbit)) option) 1161100979Srwatsonval p_offset: Nat.nat -> string -> ((bool * BitsN.nbit) option) 1162100979Srwatsonval p_arm_immediate: string -> ((string * BitsN.nbit) option) 1163100979Srwatsonval p_arm_fp_immediate: (bool * string) -> ((string * BitsN.nbit) option) 1164100979Srwatsonval p_range_imm: (Nat.nat * (Nat.nat * string)) -> (string * Nat.nat) 1165100979Srwatsonval p_label: string -> (string option) 1166100979Srwatsonval p_cond: string -> (BitsN.nbit option) 1167100979Srwatsonval p_suffix: string -> ((BitsN.nbit * string) option) 1168100979Srwatsonval p_suffix2: string -> ((BitsN.nbit * (string * string)) option) 1169101308Sjeffval p_register: string -> (BitsN.nbit option) 1170100979Srwatsonval p_register1: (string list) -> (BitsN.nbit option) 1171100979Srwatsonval p_register2: (string list) -> ((BitsN.nbit * BitsN.nbit) option) 1172100979Srwatsonval p_register3: 1173100979Srwatson (string list) -> ((BitsN.nbit * (BitsN.nbit * BitsN.nbit)) option) 1174100979Srwatsonval p_register4: 1175100979Srwatson (string list) -> 1176100979Srwatson ((BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) option) 1177100979Srwatsonval p_reg_offset: (bool * string) -> ((bool * BitsN.nbit) option) 1178100979Srwatsonval p_register_offset: string -> ((bool * BitsN.nbit) option) 1179100979Srwatsonval p_fp_register: (bool * string) -> (BitsN.nbit option) 1180100979Srwatsonval p_any_fp_register: (string * string) -> ((bool * BitsN.nbit) option) 1181100979Srwatsonval p_fp_register3: 1182100979Srwatson (bool * (string list)) -> 1183100979Srwatson ((BitsN.nbit * (BitsN.nbit * BitsN.nbit)) option) 1184100979Srwatsonval closingRegList: string -> ((bool * string) option) 1185100979Srwatsonval p_reg_list: (BitsN.nbit * string) -> (BitsN.nbit option) 1186100979Srwatsonval p_registers_loop: 1187100979Srwatson (BitsN.nbit * (string list)) -> ((bool * BitsN.nbit) option) 1188100979Srwatsonval p_registers: (string list) -> ((bool * BitsN.nbit) option) 1189100979Srwatsonval p_fp_reg_list: (bool * (BitsN.nbit * string)) -> (BitsN.nbit option) 1190100979Srwatsonval p_fp_registers_loop: 1191100979Srwatson (bool * (BitsN.nbit * (string list))) -> (BitsN.nbit option) 1192100979Srwatsonval fp_reg_list: 1193100979Srwatson (bool * BitsN.nbit) -> ((bool * (BitsN.nbit * BitsN.nbit)) option) 1194100979Srwatsonval p_fp_registers: 1195100979Srwatson (string list) -> ((bool * (BitsN.nbit * BitsN.nbit)) option) 1196100979Srwatsonval p_shift_amount: 1197100979Srwatson (SRType * (char * string)) -> (string * (SRType * nat_or_reg)) 1198100979Srwatsonval p_shift_imm_or_reg: string -> (string * (SRType * nat_or_reg)) 1199100979Srwatsonval p_rotation: string -> (string * Nat.nat) 1200100979Srwatsonval p_arith_logic_full: 1201100979Srwatson (string * (BitsN.nbit * (bool * (string list)))) -> maybe_instruction 1202100979Srwatsonval p_arith_logic: 1203100979Srwatson (string * (BitsN.nbit * (bool * (string list)))) -> maybe_instruction 1204100979Srwatsonval p_test_compare: 1205100979Srwatson (string * (BitsN.nbit * (string list))) -> maybe_instruction 1206100979Srwatsonval p_mov_mvn: 1207100979Srwatson (string * (bool * (bool * (string list)))) -> maybe_instruction 1208100979Srwatsonval p_shift_full: 1209100979Srwatson (string * (SRType * (bool * (string list)))) -> maybe_instruction 1210100979Srwatsonval p_shift: 1211100979Srwatson (string * (SRType * (bool * (string list)))) -> maybe_instruction 1212100979Srwatsonval p_rrx: (string * (bool * (string list))) -> maybe_instruction 1213100979Srwatsonval p_adr: (string * (string list)) -> maybe_instruction 1214100979Srwatsonval p_bx: (string * (string list)) -> maybe_instruction 1215100979Srwatsonval p_bl: (string * (string list)) -> maybe_instruction 1216100979Srwatsonval p_b: (string * (string list)) -> maybe_instruction 1217100979Srwatsonval p_blx: (string * (string list)) -> maybe_instruction 1218100979Srwatsonval p_clz: (string * (string list)) -> maybe_instruction 1219100979Srwatsonval p_movt_movw: (string * (bool * (string list))) -> maybe_instruction 1220100979Srwatsonval p_addw_subw: (string * (bool * (string list))) -> maybe_instruction 1221100979Srwatsonval p_mul: (string * (bool * (string list))) -> maybe_instruction 1222100979Srwatsonval p_mla: (string * (bool * (string list))) -> maybe_instruction 1223100979Srwatsonval p_umull_etc: 1224100979Srwatson (string * (bool * (bool * (bool * (string list))))) -> maybe_instruction 1225100979Srwatsonval p_umaal: (string * (string list)) -> maybe_instruction 1226100979Srwatsonval p_mls: (string * (string list)) -> maybe_instruction 1227100979Srwatsonval p_smla: 1228100979Srwatson (string * (bool * (bool * (string list)))) -> maybe_instruction 1229100979Srwatsonval p_smul: 1230100979Srwatson (string * (bool * (bool * (string list)))) -> maybe_instruction 1231100979Srwatsonval p_smlaw: (string * (bool * (string list))) -> maybe_instruction 1232100979Srwatsonval p_smulw: (string * (bool * (string list))) -> maybe_instruction 1233100979Srwatsonval p_smlal: 1234100979Srwatson (string * (bool * (bool * (string list)))) -> maybe_instruction 1235100979Srwatsonval p_smuad_smusd: 1236100979Srwatson (string * (bool * (bool * (string list)))) -> maybe_instruction 1237100979Srwatsonval p_smlad_smlsd: 1238100979Srwatson (string * (bool * (bool * (string list)))) -> maybe_instruction 1239100979Srwatsonval p_smlald_smlsld: 1240100979Srwatson (string * (bool * (bool * (string list)))) -> maybe_instruction 1241100979Srwatsonval p_smmul: (string * (bool * (string list))) -> maybe_instruction 1242100979Srwatsonval p_smmla: (string * (bool * (string list))) -> maybe_instruction 1243100979Srwatsonval p_smmls: (string * (bool * (string list))) -> maybe_instruction 1244100979Srwatsonval p_qadd_etc: 1245100979Srwatson (string * (BitsN.nbit * (string list))) -> maybe_instruction 1246100979Srwatsonval p_sadd16_etc: 1247100979Srwatson (string * (BitsN.nbit * (string list))) -> maybe_instruction 1248100979Srwatsonval p_qadd16_etc: 1249100979Srwatson (string * (BitsN.nbit * (string list))) -> maybe_instruction 1250100979Srwatsonval p_shadd16_etc: 1251100979Srwatson (string * (BitsN.nbit * (string list))) -> maybe_instruction 1252100979Srwatsonval p_sadd8_etc: (string * (bool * (string list))) -> maybe_instruction 1253100979Srwatsonval p_qadd8_etc: (string * (bool * (string list))) -> maybe_instruction 1254100979Srwatsonval p_shadd8_etc: (string * (bool * (string list))) -> maybe_instruction 1255100979Srwatsonval p_uadd16_etc: 1256100979Srwatson (string * (BitsN.nbit * (string list))) -> maybe_instruction 1257100979Srwatsonval p_uqadd16_etc: 1258100979Srwatson (string * (BitsN.nbit * (string list))) -> maybe_instruction 1259100979Srwatsonval p_uhadd16_etc: 1260100979Srwatson (string * (BitsN.nbit * (string list))) -> maybe_instruction 1261100979Srwatsonval p_uadd8_etc: (string * (bool * (string list))) -> maybe_instruction 1262100979Srwatsonval p_uqadd8_etc: (string * (bool * (string list))) -> maybe_instruction 1263100979Srwatsonval p_uhadd8_etc: (string * (bool * (string list))) -> maybe_instruction 1264100979Srwatsonval p_usad8: (string * (string list)) -> maybe_instruction 1265100979Srwatsonval p_usada8: (string * (string list)) -> maybe_instruction 1266100979Srwatsonval p_pkhbt_pkhtb: (string * (bool * (string list))) -> maybe_instruction 1267100979Srwatsonval p_sat: (string * (bool * (string list))) -> maybe_instruction 1268100979Srwatsonval p_sat16: (string * (bool * (string list))) -> maybe_instruction 1269100979Srwatsonval pick_sxtb: 1270100979Srwatson (Nat.nat * (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * Nat.nat))))) -> 1271100979Srwatson instruction 1272100979Srwatsonval p_sxtb_etc: 1273100979Srwatson (string * (Nat.nat * (bool * (string list)))) -> maybe_instruction 1274100979Srwatsonval p_sxtab_etc: 1275100979Srwatson (string * (Nat.nat * (bool * (string list)))) -> maybe_instruction 1276100979Srwatsonval p_sel: (string * (string list)) -> maybe_instruction 1277100979Srwatsonval p_rev: (string * (string list)) -> maybe_instruction 1278100979Srwatsonval p_rev16: (string * (string list)) -> maybe_instruction 1279100979Srwatsonval p_revsh: (string * (string list)) -> maybe_instruction 1280100979Srwatsonval p_rbit: (string * (string list)) -> maybe_instruction 1281100979Srwatsonval p_sbfx_ubfx: (string * (bool * (string list))) -> maybe_instruction 1282100979Srwatsonval p_bfc: (string * (string list)) -> maybe_instruction 1283100979Srwatsonval p_bfi: (string * (string list)) -> maybe_instruction 1284100979Srwatsonval closingAddress: string -> ((bool * string) option) 1285100979Srwatsonval p_address_mode1: 1286100979Srwatson (string list) -> 1287100979Srwatson (string * ((bool * (bool * (bool * (BitsN.nbit * offset1)))) option)) 1288100979Srwatsonval p_address_mode2: 1289100979Srwatson (string list) -> 1290100979Srwatson (string * ((bool * (bool * (bool * (BitsN.nbit * offset2)))) option)) 1291100979Srwatsonval p_address_mode3: 1292100979Srwatson (string list) -> (string * ((BitsN.nbit * (BitsN.nbit option)) option)) 1293100979Srwatsonval pick_ldr_str: 1294100979Srwatson (Nat.nat * 1295100979Srwatson (bool * (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1)))))) -> 1296100979Srwatson instruction 1297100979Srwatsonval p_ldr_str: (string * (Nat.nat * (string list))) -> maybe_instruction 1298100979Srwatsonval pick_ldrb_ldrh: 1299100979Srwatson (bool * 1300100979Srwatson (bool * 1301100979Srwatson (bool * (bool * (bool * (BitsN.nbit * (BitsN.nbit * offset1))))))) -> 1302100979Srwatson instruction 1303100979Srwatsonval p_ldrb_ldrh: 1304100979Srwatson (string * (bool * (bool * (string list)))) -> maybe_instruction 1305100979Srwatsonval pick_ldrd_strd: 1306100979Srwatson (bool * 1307100979Srwatson (bool * 1308100979Srwatson (bool * (bool * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * offset2))))))) -> 1309100979Srwatson instruction 1310100979Srwatsonval p_ldrd_strd: (string * (bool * (string list))) -> maybe_instruction 1311100979Srwatsonval p_ldrt_strt1: 1312100979Srwatson (string * (Nat.nat * (string list))) -> maybe_instruction 1313100979Srwatsonval p_ldrt_strt2: 1314100979Srwatson (string * (Nat.nat * (string list))) -> maybe_instruction 1315100979Srwatsonval p_pld: (string * (bool * (string list))) -> maybe_instruction 1316100979Srwatsonval p_pli: (string * (string list)) -> maybe_instruction 1317100979Srwatsonval p_ldrex: (string * (string list)) -> maybe_instruction 1318100979Srwatsonval p_ldrexb_ldrexh: 1319100979Srwatson (string * (bool * (string list))) -> maybe_instruction 1320100979Srwatsonval p_ldrexd: (string * (string list)) -> maybe_instruction 1321100979Srwatsonval p_strex: (string * (string list)) -> maybe_instruction 1322100979Srwatsonval p_strexb_strexh: 1323100979Srwatson (string * (bool * (string list))) -> maybe_instruction 1324100979Srwatsonval p_strexd: (string * (string list)) -> maybe_instruction 1325100979Srwatsonval p_swp: (string * (bool * (string list))) -> maybe_instruction 1326100979Srwatsonval p_pop_push: (string * (bool * (string list))) -> maybe_instruction 1327100979Srwatsonval p_vpop_vpush: (string * (bool * (string list))) -> maybe_instruction 1328100979Srwatsonval p_ldm_stm: 1329100979Srwatson (string * (bool * (bool * (bool * (string list))))) -> maybe_instruction 1330100979Srwatsonval p_vldm_vstm: 1331100979Srwatson (string * (bool * (bool * (string list)))) -> maybe_instruction 1332100979Srwatsonval p_setend: (string list) -> maybe_instruction 1333100979Srwatsonval p_aif: 1334100979Srwatson (bool * (bool * (bool * string))) -> ((bool * (bool * bool)) option) 1335100979Srwatsonval p_cps: (bool * (bool * (string list))) -> maybe_instruction 1336100979Srwatsonval p_mode: string -> (BitsN.nbit option) 1337100979Srwatsonval banked_register: (BitsN.nbit * string) -> (BitsN.nbit option) 1338100979Srwatsonval p_banked_register: string -> (BitsN.nbit option) 1339100979Srwatsonval p_mrs: (string * (string list)) -> maybe_instruction 1340100979Srwatsonval p_cxsf: (BitsN.nbit * string) -> (BitsN.nbit option) 1341100979Srwatsonval p_spec_reg: string -> ((bool * BitsN.nbit) option) 1342100979Srwatsonval p_msr: (string * (string list)) -> maybe_instruction 1343100979Srwatsonval p_rfe: (string * (bool * (bool * (string list)))) -> maybe_instruction 1344100979Srwatsonval p_srs: (string * (bool * (bool * (string list)))) -> maybe_instruction 1345100979Srwatsonval p_call: (string * (Nat.nat * (string list))) -> maybe_instruction 1346100979Srwatsonval p_barrier_option: (string list) -> (BitsN.nbit option) 1347100979Srwatsonval p_dmb_dsb: (string * (bool * (string list))) -> maybe_instruction 1348100979Srwatsonval p_isb: (string * (string list)) -> maybe_instruction 1349100979Srwatsonval p_vcmpe: (string * (string list)) -> maybe_instruction 1350100979Srwatsonval p_vmrs_register: string -> (BitsN.nbit option) 1351100979Srwatsonval p_vmrs: (string * (string list)) -> maybe_instruction 1352100979Srwatsonval p_vmsr: (string * (string list)) -> maybe_instruction 1353100979Srwatsonval p_vcvt: (string * (bool * (string list))) -> maybe_instruction 1354100979Srwatsonval p_fp2: (string * (Nat.nat * (string list))) -> maybe_instruction 1355100979Srwatsonval p_fp3: (string * (Nat.nat * (string list))) -> maybe_instruction 1356100979Srwatsonval p_vldr_vstr: (string * (bool * (string list))) -> maybe_instruction 1357100979Srwatsonval p_noarg: (string * instruction) -> maybe_instruction 1358100979Srwatsonval p_tokens: string -> (string list) 1359100979Srwatsonval instructionFromString: string -> maybe_instruction 1360100979Srwatsonval s_cond: BitsN.nbit -> string 1361100979Srwatsonval s_reg: BitsN.nbit -> string 1362100979Srwatsonval s_reg2: (BitsN.nbit * BitsN.nbit) -> string 1363100979Srwatsonval s_reg3: (BitsN.nbit * (BitsN.nbit * BitsN.nbit)) -> string 1364100979Srwatsonval s_reg4: 1365100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))) -> string 1366100979Srwatsonval s_vfp_reg: (bool * BitsN.nbit) -> string 1367100979Srwatsonval s_any_reg: ((bool option) * Nat.nat) -> string 1368100979Srwatsonval contiguous: 1369100979Srwatson (((Nat.nat * Nat.nat) list) * (Nat.nat * (bool list))) -> 1370100979Srwatson ((Nat.nat * Nat.nat) list) 1371100979Srwatsonval s_registers_from_contiguous: 1372100979Srwatson ((bool option) * (string * ((Nat.nat * Nat.nat) list))) -> string 1373100979Srwatsonval s_registers: Nat.nat -> ((bool option) * BitsN.nbit) -> string 1374100979Srwatsonval s_arm_registers: Nat.nat -> BitsN.nbit -> string 1375100979Srwatsonval s_fp_registers: Nat.nat -> (bool * BitsN.nbit) -> string 1376100979Srwatsonval s_hex: Nat.nat -> BitsN.nbit -> string 1377100979Srwatsonval s_offset: BitsN.nbit -> string 1378100979Srwatsonval s_add_sub_offset: (bool * BitsN.nbit) -> string 1379100979Srwatsonval s_branch: (BitsN.nbit * Branch) -> (string * string) 1380100979Srwatsonval s_vfp_suffix: (BitsN.nbit * bool) -> string 1381100979Srwatsonval s_vfp: (BitsN.nbit * VFP) -> (string * string) 1382100979Srwatsonval s_test_compare: BitsN.nbit -> string 1383100979Srwatsonval s_arith_logic: BitsN.nbit -> string 1384100979Srwatsonval s_shift: SRType -> string 1385100979Srwatsonval s_shift_n: (SRType * Nat.nat) -> string 1386100979Srwatsonval s_shift_r: (bool * (BitsN.nbit * (SRType * Nat.nat))) -> string 1387100979Srwatsonval s_expand_imm: BitsN.nbit -> string 1388100979Srwatsonval s_data: (BitsN.nbit * Data) -> (string * string) 1389100979Srwatsonval s_multiply: (BitsN.nbit * Multiply) -> (string * string) 1390100979Srwatsonval s_imm_form: 1391100979Srwatson (bool * (bool * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))))) -> 1392100979Srwatson string 1393100979Srwatsonval s_reg_form: 1394100979Srwatson (bool * 1395100979Srwatson (bool * 1396100979Srwatson (bool * 1397100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * (SRType * Nat.nat))))))) -> 1398100979Srwatson string 1399100979Srwatsonval s_stack: (bool * bool) -> string 1400100979Srwatsonval s_load: (BitsN.nbit * Load) -> (string * string) 1401100979Srwatsonval s_store: (BitsN.nbit * Store) -> (string * string) 1402100979Srwatsonval s_barrier_option: BitsN.nbit -> string 1403100979Srwatsonval s_hint: (BitsN.nbit * Hint) -> (string * string) 1404100979Srwatsonval s_add_sub16: 1405100979Srwatson (string * 1406100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))))) -> 1407100979Srwatson (string * string) 1408100979Srwatsonval s_add_sub8: 1409100979Srwatson (string * 1410100979Srwatson (BitsN.nbit * (bool * (BitsN.nbit * (BitsN.nbit * BitsN.nbit))))) -> 1411100979Srwatson (string * string) 1412100979Srwatsonval s_simd: (BitsN.nbit * SIMD) -> (string * string) 1413100979Srwatsonval s_xt_rotation: 1414100979Srwatson (BitsN.nbit * (BitsN.nbit * (BitsN.nbit * Nat.nat))) -> string 1415100979Srwatsonval s_media: (BitsN.nbit * Media) -> (string * string) 1416100979Srwatsonval s_psr: (bool * BitsN.nbit) -> string 1417100979Srwatsonval s_special: (bool * BitsN.nbit) -> string 1418100979Srwatsonval s_system: (BitsN.nbit * System) -> (string * string) 1419100979Srwatsonval s_it_mask: (bool * BitsN.nbit) -> string 1420100979Srwatsonval instructionToString: (BitsN.nbit * instruction) -> (string * string) 1421100979Srwatson 1422100979Srwatsonend