Module Ast.Addressing_mode
module Offset : sig ... endtype _ t = private | Reg : [ `GP of [< `X | `SP ] ] Reg.t -> [> `Base_reg ] t| Offset_twelve_unsigned_scaled : [ `GP of [< `X | `SP ] ] Reg.t * [ `Twelve_unsigned_scaled ] Addressing_offset.t -> [> `Offset_twelve_unsigned_scaled ] t| Offset_nine_signed_unscaled : [ `GP of [< `X | `SP ] ] Reg.t * [ `Nine_signed_unscaled ] Addressing_offset.t -> [> `Offset_nine_signed_unscaled ] t| Offset_sym : [ `GP of [< `X | `SP ] ] Reg.t * [ `Twelve ] Symbol.t -> [> `Offset_sym ] t(*PC-relative literal load addressing. Architecturally,
LDR Xt, <label>encodes a 19-bit signed offset from PC to the label (±1MB range). No base register is involved.Note: The emitter currently uses ADRP+LDR sequences instead of true literal loads, which allows arbitrary distances. This addressing mode is available for future use if needed.
*)| Literal : [ `Nineteen ] Symbol.t -> [> `Literal ] t| Pre : [ `GP of [< `X | `SP ] ] Reg.t * [ `Nine_signed_unscaled ] Offset.t -> [> `Pre ] t| Post : [ `GP of [< `X | `SP ] ] Reg.t * [ `Nine_signed_unscaled ] Offset.t -> [> `Post ] t| Offset_pair : [ `GP of [< `X | `SP ] ] Reg.t * [ `Seven_signed ] Offset.t -> [> `Offset_pair ] t| Pre_pair : [ `GP of [< `X | `SP ] ] Reg.t * [ `Seven_signed ] Offset.t -> [> `Pre_pair ] t| Post_pair : [ `GP of [< `X | `SP ] ] Reg.t * [ `Seven_signed ] Offset.t -> [> `Post_pair ] t