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