azhzx/qbe/types does not have a README file

    BlkId

    type BlkId = Int

    Addr

    pub(all) struct Addr {
    offset : Con
    base : Ref
    index : Ref
    scale : Int
    } derive(
    Debug
    )

    Addr::new

    fn Addr::new() -> Addr

    AliasInfo

    pub(all) struct AliasInfo {
    kind : AliasType
    base : Ref
    label : Int
    offset : Int64
    slot : Int
    } derive(
    Debug
    )

    AliasInfo::default

    fn AliasInfo::default() -> AliasInfo

    AliasType

    pub(all) enum AliasType {
    ABot
    ALoc
    ACon
    AEsc
    ASym
    AUnk
    } derive(Eq,
    Debug
    )

    AliasType::astack

    #as_free_fn(astack, deprecated="use `AliasType::astack` instead")
    fn AliasType::astack(self : AliasType) -> Bool

    BSet

    pub(all) struct BSet {
    nt : Int
    bits : Array[UInt64]
    } derive(
    Debug
    )

    BSet::clr

    fn BSet::clr(self : BSet, elt : Int) -> Unit

    BSet::copy_from

    fn BSet::copy_from(self : BSet, other : BSet) -> Unit

    BSet::count

    fn BSet::count(self : BSet) -> Int

    BSet::diff

    fn BSet::diff(self : BSet, other : BSet) -> Unit

    BSet::each

    fn BSet::each(self : BSet, f : (Int) -> Unit) -> Unit

    BSet::each_from

    fn BSet::each_from(self : BSet, start : Int, f : (Int) -> Unit) -> Unit

    BSet::equal

    fn BSet::equal(self : BSet, other : BSet) -> Bool

    BSet::has

    fn BSet::has(self : BSet, elt : Int) -> Bool

    BSet::inter

    fn BSet::inter(self : BSet, other : BSet) -> Unit

    BSet::iter

    fn BSet::iter(self : BSet, start : Int) -> Int

    BSet::new

    fn BSet::new(nt : Int) -> BSet

    BSet::set

    fn BSet::set(self : BSet, elt : Int) -> Unit

    BSet::union

    fn BSet::union(self : BSet, other : BSet) -> Bool

    BSet::zero

    fn BSet::zero(self : BSet) -> Unit

    Blk

    pub(all) struct Blk {
    id : Int
    name : String
    phi : Array[Phi]
    ins : Array[Ins]
    jmp : Jump
    pred : Array[Int]
    npred : Int
    idom : Int
    dom_link : Int
    dom_next : Int
    fron : Array[Int]
    rpo_id : Int
    loop_depth : Int
    nlive_w : Int
    nlive_d : Int
    in_set : BSet?
    out_set : BSet?
    gen_set : BSet?
    link : Int
    visit : Int
    } derive(
    Debug
    )

    Blk::new

    fn Blk::new(id : Int, name : String) -> Blk

    Class

    pub(all) enum Class {
    Kx
    Kw
    Kl
    Ks
    Kd
    } derive(Eq,
    Debug
    )

    Class - corresponds to enum Class in all.h

    Class::base

    #as_free_fn(kbase, deprecated="use `Class::base` instead")
    fn Class::base(self : Class) -> Int

    kbase - base class: 0 for int (w/l), 1 for float (s/d) (corresponds to C KBASE())

    Class::code

    #as_free_fn(kcode, deprecated="use `Class::code` instead")
    fn Class::code(self : Class) -> Int

    kcode - class to code: Kx->-1, Kw->0, Kl->1, Ks->2, Kd->3.

    Class::from_code

    #as_free_fn(class_from_code, deprecated="use `Class::from_code` instead")
    fn Class::from_code(c : Int) -> Class

    class_from_code - inverse of kcode: 0->Kw, 1->Kl, 2->Ks, 3->Kd, else Kx.

    Class::wide

    #as_free_fn(kwide, deprecated="use `Class::wide` instead")
    fn Class::wide(self : Class) -> Int

    kwide - 1 if wide (l/d), 0 otherwise (corresponds to C KWIDE())

    Con

    pub(all) struct Con {
    kind : ConType
    label : Int
    bits : ConBits
    flt : Int
    is_local : Bool
    } derive(Eq,
    Debug
    )

    Con::add

    #as_free_fn(addcon, deprecated="use `Con::add` instead")
    fn Con::add(self : Con, other : Con) -> Con

    Con::addr

    fn Con::addr(label : Int) -> Con

    Con::double

    fn Con::double(d : Double) -> Con

    Con::int

    fn Con::int(i : Int64) -> Con

    Con::is_zero

    fn Con::is_zero(self : Con, wide : Bool) -> Bool

    Con::new

    fn Con::new() -> Con

    Con::raw_bits

    #as_free_fn(con_raw_bits, deprecated="use `Con::raw_bits` instead")
    fn Con::raw_bits(self : Con) -> Int64

    Con::single

    fn Con::single(s : Float) -> Con

    ConBits

    pub(all) struct ConBits {
    i : Int64
    d : Double
    s : Float
    } derive(Eq,
    Debug
    )

    ConType

    pub(all) enum ConType {
    CUndef
    CBits
    CAddr
    } derive(Eq,
    Debug
    )

    Dat

    pub(all) struct Dat {
    kind : DatKind
    num : Int64
    fltd : Double
    flts : Float
    str : String
    ref_name : String
    ref_offset : Int64
    is_ref : Bool
    is_str : Bool
    is_export : Bool
    } derive(
    Debug
    )

    Dat::align

    fn Dat::align(a : Int64) -> Dat

    Dat::byte

    fn Dat::byte(b : Int64) -> Dat

    Dat::end

    fn Dat::end() -> Dat

    Dat::name

    fn Dat::name(name : String, is_export : Bool) -> Dat

    Dat::ref_to

    fn Dat::ref_to(name : String, offset : Int64) -> Dat

    Dat::start

    fn Dat::start() -> Dat

    Dat::string

    fn Dat::string(s : String) -> Dat

    Dat::zero

    fn Dat::zero(n : Int64) -> Dat

    DatKind

    pub(all) enum DatKind {
    DStart
    DEnd
    DName
    DAlign
    DB
    DH
    DW
    DL
    DZ
    } derive(Eq,
    Debug
    )

    Field

    pub(all) struct Field {
    kind : FieldType
    len : Int
    } derive(Eq,
    Debug
    )

    Field::end

    fn Field::end() -> Field

    Field::new

    fn Field::new(kind : FieldType, len : Int) -> Field

    FieldType

    pub(all) enum FieldType {
    FEnd
    Fb
    Fh
    Fw
    Fl
    Fs
    Fd
    FPad
    FTyp
    } derive(Eq,
    Debug
    )

    pub(all) struct Fn {
    name : String
    start_id : Int
    blks : Array[Blk]
    blk_names : Map[String, Int]
    tmps : Array[Tmp]
    cons : Array[Con]
    mems : Array[Addr]
    rpo : Array[Int]
    def_order : Array[Int]
    ret_ty : Int
    retr : Ref
    reg : UInt64
    slot : Int
    is_export : Bool
    is_vararg : Bool
    has_dynalloc : Bool
    } derive(
    Debug
    )

    Fn::add_blk

    fn Fn::add_blk(self : Fn, name : String) -> Int

    Fn::add_con

    fn Fn::add_con(self : Fn, con : Con) -> Int

    Fn::add_tmp

    fn Fn::add_tmp(self : Fn, name : String, cls : Class) -> Int

    Fn::blk

    fn Fn::blk(self : Fn, id : Int) -> Blk

    Fn::con

    fn Fn::con(self : Fn, id : Int) -> Con

    Fn::find_blk

    fn Fn::find_blk(self : Fn, name : String) -> Int

    Fn::get_con

    fn Fn::get_con(self : Fn, val : Int64) -> Int

    Fn::get_con_by

    fn Fn::get_con_by(self : Fn, con : Con) -> Int

    Fn::init_regs

    fn Fn::init_regs(self : Fn) -> Unit

    Fn::init_regs_wasm

    fn Fn::init_regs_wasm(self : Fn) -> Unit

    Fn::nblk

    fn Fn::nblk(self : Fn) -> Int

    Fn::ncon

    fn Fn::ncon(self : Fn) -> Int

    Fn::new

    fn Fn::new(name : String) -> Fn

    Fn::new_tmp

    fn Fn::new_tmp(self : Fn, prfx : String, cls : Class) -> Int

    Fn::ntmp

    fn Fn::ntmp(self : Fn) -> Int

    Fn::tmp

    fn Fn::tmp(self : Fn, id : Int) -> Tmp

    FpBits

    pub struct FpBits {
    b0 : Int64
    b1 : Int64
    size : Int
    }

    Ins

    pub(all) struct Ins {
    op : Op
    cls : Class
    to : Ref
    arg1 : Ref
    arg2 : Ref
    } derive(Eq,
    Debug
    )

    Ins::new

    fn Ins::new(op : Op, cls : Class, to : Ref, arg1 : Ref, arg2 : Ref) -> Ins

    Ins::new_void

    fn Ins::new_void(op : Op, cls : Class, arg1 : Ref, arg2 : Ref) -> Ins

    Jump

    pub(all) struct Jump {
    kind : JumpKind
    arg : Ref
    s1 : Int
    s2 : Int
    } derive(
    Debug
    )

    Jump::full

    fn Jump::full(kind : JumpKind, arg : Ref, s1 : Int, s2 : Int) -> Jump

    Jump::new

    fn Jump::new(kind : JumpKind) -> Jump

    JumpKind

    pub(all) enum JumpKind {
    Jxxx
    Jret0
    Jretw
    Jretl
    Jrets
    Jretd
    Jretc
    Jjmp
    Jjnz
    Jjfieq
    Jjfine
    Jjfisge
    Jjfisgt
    Jjfisle
    Jjfislt
    Jjfiuge
    Jjfiugt
    Jjfiule
    Jjfiult
    Jjffeq
    Jjffge
    Jjffgt
    Jjffle
    Jjfflt
    Jjffne
    Jjffo
    Jjffuo
    } derive(Eq,
    Debug
    )

    JumpKind::from_index

    #as_free_fn(jump_from_index, deprecated="use `JumpKind::from_index` instead")
    fn JumpKind::from_index(i : Int) -> JumpKind

    JumpKind::index

    #as_free_fn(jump_index, deprecated="use `JumpKind::index` instead")
    fn JumpKind::index(self : JumpKind) -> Int

    JumpKind::is_ret

    #as_free_fn(is_ret, deprecated="use `JumpKind::is_ret` instead")
    fn JumpKind::is_ret(self : JumpKind) -> Bool

    pub(all) enum Op {
    Oxxx
    Add
    Sub
    Div
    Rem
    Udiv
    Urem
    Mul
    And
    Or
    Xor
    Sar
    Shr
    Shl
    Ceqw
    Cnew
    Csgew
    Csgtw
    Cslew
    Csltw
    Cugew
    Cugtw
    Culew
    Cultw
    Ceql
    Cnel
    Csgel
    Csgtl
    Cslel
    Csltl
    Cugel
    Cugtl
    Culel
    Cultl
    Ceqs
    Cges
    Cgts
    Cles
    Clts
    Cnes
    Cos
    Cuos
    Ceqd
    Cged
    Cgtd
    Cled
    Cltd
    Cned
    Cod
    Cuod
    Storeb
    Storeh
    Storew
    Storel
    Stores
    Stored
    Loadsb
    Loadub
    Loadsh
    Loaduh
    Loadsw
    Loaduw
    Load
    Extsb
    Extub
    Extsh
    Extuh
    Extsw
    Extuw
    Exts
    Truncd
    Stosi
    Dtosi
    Swtof
    Sltof
    Cast
    Alloc4
    Alloc8
    Alloc16
    Vaarg
    Vastart
    Copy
    Nop
    Addr
    Swap
    Sign
    Salloc
    Xidiv
    Xdiv
    Xcmp
    Xtest
    Acmp
    Acmn
    Afcmp
    Par
    Parc
    Pare
    Arg
    Argc
    Arge
    Call
    Vacall
    Flagieq
    Flagine
    Flagisge
    Flagisgt
    Flagisle
    Flagislt
    Flagiuge
    Flagiugt
    Flagiule
    Flagiult
    Flagfeq
    Flagfge
    Flagfgt
    Flagfle
    Flagflt
    Flagfne
    Flagfo
    Flagfuo
    } derive(Eq,
    Debug
    )

    Op::ext_width_idx

    #as_free_fn(ext_width_idx, deprecated="use `Op::ext_width_idx` instead")
    fn Op::ext_width_idx(self : Op) -> Int

    Op::from_index

    #as_free_fn(op_from_index, deprecated="use `Op::from_index` instead")
    fn Op::from_index(i : Int) -> Op

    Op::from_string

    #as_free_fn(op_from_string, deprecated="use `Op::from_string` instead")
    fn Op::from_string(s : String) -> Op

    Op::index

    #as_free_fn(op_index, deprecated="use `Op::index` instead")
    fn Op::index(self : Op) -> Int

    Op::is_arg

    #as_free_fn(is_arg, deprecated="use `Op::is_arg` instead")
    fn Op::is_arg(self : Op) -> Bool

    Op::is_ext

    #as_free_fn(is_ext, deprecated="use `Op::is_ext` instead")
    fn Op::is_ext(self : Op) -> Bool

    Op::is_load

    #as_free_fn(is_load, deprecated="use `Op::is_load` instead")
    fn Op::is_load(self : Op) -> Bool

    Op::is_par

    #as_free_fn(is_par, deprecated="use `Op::is_par` instead")
    fn Op::is_par(self : Op) -> Bool

    Op::is_store

    #as_free_fn(is_store, deprecated="use `Op::is_store` instead")
    fn Op::is_store(self : Op) -> Bool

    Op::load_width_idx

    #as_free_fn(load_width_idx, deprecated="use `Op::load_width_idx` instead")
    fn Op::load_width_idx(self : Op) -> Int

    Op::name

    fn Op::name(self : Op) -> String

    OpInfo

    pub(all) struct OpInfo {
    name : String
    a0 : Array[Int]
    a1 : Array[Int]
    canfold : Bool
    nmem : Int
    zf : Int
    lf : Int
    } derive(
    Debug
    )

    Phi

    pub(all) struct Phi {
    cls : Class
    to : Ref
    args : Array[PhiArg]
    } derive(Eq,
    Debug
    )

    Phi::new

    fn Phi::new(to : Ref, cls : Class) -> Phi

    PhiArg

    pub(all) struct PhiArg {
    value : Ref
    blk_id : Int
    } derive(Eq,
    Debug
    )

    Ref

    pub(all) enum Ref {
    RNone
    RTmp(Int)
    RCon(Int)
    RType(Int)
    RSlot(Int)
    RCall(Int)
    RMem(Int)
    } derive(Eq,
    Debug
    )

    ADT replacing C bit-field (uint type:3; uint val:29)

    Ref::argregs

    #as_free_fn(argregs, deprecated="use `Ref::argregs` instead")
    fn Ref::argregs(self : Ref) -> (UInt64, Int, Int)

    Ref::call

    fn Ref::call(i : Int) -> Ref

    CALL(x) - call result reference

    Ref::call_val

    fn Ref::call_val(self : Ref) -> Int

    call_val - extract call info index, -1 if not a call ref

    Ref::con

    fn Ref::con(i : Int) -> Ref

    CON(x) - constant reference

    Ref::con_val

    fn Ref::con_val(self : Ref) -> Int

    con_val - extract constant index, -1 if not a constant

    Ref::eq

    #as_free_fn(req, deprecated="use `Ref::eq` instead")
    fn Ref::eq(self : Ref, other : Ref) -> Bool

    req - reference equality (corresponds to C req())

    Ref::is_con

    fn Ref::is_con(self : Ref) -> Bool

    is_con - check for constant reference

    Ref::is_mem

    fn Ref::is_mem(self : Ref) -> Bool

    is_mem - check for memory reference

    Ref::is_none

    fn Ref::is_none(self : Ref) -> Bool

    is_none - check for empty reference

    Ref::is_slot

    fn Ref::is_slot(self : Ref) -> Bool

    is_slot - check for slot reference

    Ref::is_tmp

    fn Ref::is_tmp(self : Ref) -> Bool

    is_tmp - check for temporary reference

    Ref::mem

    fn Ref::mem(i : Int) -> Ref

    MEM(x) - memory address reference

    Ref::mem_val

    fn Ref::mem_val(self : Ref) -> Int

    mem_val - extract memory index, -1 if not a memory ref

    Ref::none

    #as_free_fn(ref_none, deprecated="use `Ref::none` instead")
    fn Ref::none() -> Ref

    R - empty reference (corresponds to C macro R)

    Ref::retregs

    #as_free_fn(retregs, deprecated="use `Ref::retregs` instead")
    fn Ref::retregs(self : Ref) -> (UInt64, Int, Int)

    Ref::rv64_argregs

    fn Ref::rv64_argregs(self : Ref) -> (UInt64, Int, Int)

    Ref::rv64_retregs

    fn Ref::rv64_retregs(self : Ref) -> (UInt64, Int, Int)

    Ref::slot

    fn Ref::slot(i : Int) -> Ref

    SLOT(x) - stack slot reference (value masked to 29 bits, as C SLOT())

    Ref::slot_val

    fn Ref::slot_val(self : Ref) -> Int

    slot_val - extract slot index, -1 if not a slot ref

    Ref::tmp

    fn Ref::tmp(i : Int) -> Ref

    TMP(x) - temporary reference

    Ref::tmp_val

    fn Ref::tmp_val(self : Ref) -> Int

    tmp_val - extract temporary index, -1 if not a temp

    Ref::typ

    fn Ref::typ(i : Int) -> Ref

    TYPE(x) - type reference

    Ref::typ_val

    fn Ref::typ_val(self : Ref) -> Int

    typ_val - extract type index, -1 if not a type ref

    RegHint

    pub(all) struct RegHint {
    r : Int
    w : Int
    m : UInt64
    } derive(
    Debug
    )

    RegHint::default

    fn RegHint::default() -> RegHint

    TargetCfg

    pub struct TargetCfg {
    gpr_base : Int
    fpr_base : Int
    ngpr : Int
    nfpr : Int
    fpr_class_base : Int
    post_call_gpr : Int
    post_call_fpr : Int
    rglob_mask : UInt64
    rsave : Array[Int]
    retregs : (Ref) -> (UInt64, Int, Int)
    argregs : (Ref) -> (UInt64, Int, Int)
    }

    Tmp

    pub(all) struct Tmp {
    name : String
    uses : Array[Use]
    ndef : Int
    nuse : Int
    cost : Int
    slot : Int
    cls : Class
    hint : RegHint
    is_phi : Int
    alias_info : AliasInfo
    width : TmpWidth
    visit : Int
    } derive(
    Debug
    )

    Tmp::new

    fn Tmp::new(name : String, cls : Class) -> Tmp

    TmpWidth

    pub(all) enum TmpWidth {
    WFull
    Wsb
    Wub
    Wsh
    Wuh
    Wsw
    Wuw
    } derive(Eq,
    Debug
    )

    TmpWidth::code

    #as_free_fn(width_code, deprecated="use `TmpWidth::code` instead")
    fn TmpWidth::code(self : TmpWidth) -> Int

    TmpWidth::from_code

    #as_free_fn(width_from_code, deprecated="use `TmpWidth::from_code` instead")
    fn TmpWidth::from_code(c : Int) -> TmpWidth

    Typ

    pub(all) struct Typ {
    name : String
    dark : Int
    align : Int
    size : Int64
    nunion : Int
    fields : Array[Field]
    } derive(Eq,
    Debug
    )

    Typ::new

    fn Typ::new(name : String) -> Typ

    Use

    pub(all) struct Use {
    kind : UseKind
    blk_id : Int
    ins_idx : Int
    arg_num : Int
    } derive(Eq,
    Debug
    )

    UseKind

    pub(all) enum UseKind {
    UXXX
    UPhi
    UIns
    UJmp
    } derive(Eq,
    Debug
    )

    WasmType

    pub enum WasmType {
    Wi32
    Wi64
    Wf32
    Wf64
    WVoid
    } derive(Eq,
    Debug
    )

    let A0 : Int

    let A1 : Int

    let A2 : Int

    let A3 : Int

    let A4 : Int

    let A5 : Int

    let A6 : Int

    let A7 : Int

    FA0

    let FA0 : Int

    FA1

    let FA1 : Int

    FA2

    let FA2 : Int

    FA3

    let FA3 : Int

    FA4

    let FA4 : Int

    FA5

    let FA5 : Int

    FA6

    let FA6 : Int

    FA7

    let FA7 : Int

    let FP : Int

    FS0

    let FS0 : Int

    FS1

    let FS1 : Int

    FS10

    let FS10 : Int

    FS11

    let FS11 : Int

    FS2

    let FS2 : Int

    FS3

    let FS3 : Int

    FS4

    let FS4 : Int

    FS5

    let FS5 : Int

    FS6

    let FS6 : Int

    FS7

    let FS7 : Int

    FS8

    let FS8 : Int

    FS9

    let FS9 : Int

    FT0

    let FT0 : Int

    FT1

    let FT1 : Int

    FT10

    let FT10 : Int

    FT11

    let FT11 : Int

    FT2

    let FT2 : Int

    FT3

    let FT3 : Int

    FT4

    let FT4 : Int

    FT5

    let FT5 : Int

    FT6

    let FT6 : Int

    FT7

    let FT7 : Int

    FT8

    let FT8 : Int

    FT9

    let FT9 : Int

    let GP : Int

    NCLR

    let NCLR : Int

    NFPR

    let NFPR : Int

    NFPS

    let NFPS : Int

    NGPR

    let NGPR : Int

    NGPS

    let NGPS : Int

    NRGLOB

    let NRGLOB : Int

    R10

    let R10 : Int

    R11

    let R11 : Int

    R12

    let R12 : Int

    R13

    let R13 : Int

    R14

    let R14 : Int

    R15

    let R15 : Int

    let R8 : Int

    let R9 : Int

    let RA : Int

    RAX

    let RAX : Int

    RBP

    let RBP : Int

    RBX

    let RBX : Int

    RCX

    let RCX : Int

    RDI

    let RDI : Int

    RDX

    let RDX : Int

    RSI

    let RSI : Int

    RSP

    let RSP : Int

    RXX

    let RXX : Int

    Rv64KmIsWide

    let Rv64KmIsWide : Int

    Rv64NCLR

    let Rv64NCLR : Int

    Rv64NFPR

    let Rv64NFPR : Int

    Rv64NFPS

    let Rv64NFPS : Int

    Rv64NGPR

    let Rv64NGPR : Int

    Rv64NGPS

    let Rv64NGPS : Int

    Rv64NRGLOB

    let Rv64NRGLOB : Int

    Rv64Tmp0

    let Rv64Tmp0 : Int

    let S1 : Int

    S10

    let S10 : Int

    S11

    let S11 : Int

    let S2 : Int

    let S3 : Int

    let S4 : Int

    let S5 : Int

    let S6 : Int

    let S7 : Int

    let S8 : Int

    let S9 : Int

    let SP : Int

    let T0 : Int

    let T1 : Int

    let T2 : Int

    let T3 : Int

    let T4 : Int

    let T5 : Int

    let T6 : Int

    let TP : Int

    Tmp0

    let Tmp0 : Int

    WASM_MEMORY_PAGES

    let WASM_MEMORY_PAGES : Int

    WASM_STACK_ALIGN

    let WASM_STACK_ALIGN : Int

    WASM_STACK_BASE

    let WASM_STACK_BASE : Int

    WasmKmIsWide

    let WasmKmIsWide : Int

    WasmNCLR

    let WasmNCLR : Int

    WasmNFPR

    let WasmNFPR : Int

    WasmNFPS

    let WasmNFPS : Int

    WasmNGPR

    let WasmNGPR : Int

    WasmNGPS

    let WasmNGPS : Int

    WasmNRGLOB

    let WasmNRGLOB : Int

    WasmTmp0

    let WasmTmp0 : Int

    XMM0

    let XMM0 : Int

    XMM1

    let XMM1 : Int

    XMM10

    let XMM10 : Int

    XMM11

    let XMM11 : Int

    XMM12

    let XMM12 : Int

    XMM13

    let XMM13 : Int

    XMM14

    let XMM14 : Int

    XMM15

    let XMM15 : Int

    XMM2

    let XMM2 : Int

    XMM3

    let XMM3 : Int

    XMM4

    let XMM4 : Int

    XMM5

    let XMM5 : Int

    XMM6

    let XMM6 : Int

    XMM7

    let XMM7 : Int

    XMM8

    let XMM8 : Int

    XMM9

    let XMM9 : Int

    class_to_wasm_type

    fn class_to_wasm_type(cls : Class) -> WasmType

    cmpneg

    fn cmpneg(c : Int) -> Int

    dumpts

    fn dumpts(bs : BSet, tmps : Array[Tmp]) -> String

    fp_stash_at

    fn fp_stash_at(i : Int) -> FpBits

    fp_stash_len

    fn fp_stash_len() -> Int

    fp_stash_reset

    fn fp_stash_reset() -> Unit

    gasstash

    fn gasstash(bits0 : Int64, bits1 : Int64, size : Int) -> Int

    init_amd64_target

    fn init_amd64_target() -> Unit

    init_rv64_target

    fn init_rv64_target() -> Unit

    op_info

    fn op_info(o : Op) -> OpInfo

    phicls

    fn phicls(t : Int, tmps : Array[Tmp]) -> Int

    rclob

    let rclob : Array[Int]

    rglob_mask

    fn rglob_mask() -> UInt64

    rsave

    let rsave : Array[Int]

    rv64_rclob

    let rv64_rclob : Array[Int]

    rv64_reg_name

    fn rv64_reg_name(reg : Int) -> String

    rv64_rglob_mask

    fn rv64_rglob_mask() -> UInt64

    rv64_rsave

    let rv64_rsave : Array[Int]

    target_argregs

    fn target_argregs(r : Ref) -> (UInt64, Int, Int)

    target_cfg

    let target_cfg : TargetCfg

    target_retregs

    fn target_retregs(r : Ref) -> (UInt64, Int, Int)

    wasm_load_op

    fn wasm_load_op(cls : Class) -> String

    wasm_rclob

    let wasm_rclob : Array[Int]

    wasm_rglob_mask

    fn wasm_rglob_mask() -> UInt64

    wasm_rsave

    let wasm_rsave : Array[Int]

    wasm_store_op

    fn wasm_store_op(cls : Class) -> String

    wasm_type_name

    fn wasm_type_name(cls : Class) -> String