cranelift::prelude::isa::aarch64

Module inst

Expand description

This module defines aarch64-specific machine instruction types.

Modules§

  • AArch64 ISA definitions: instruction arguments.
  • AArch64 ISA: binary code emission.
  • AArch64 ISA definitions: immediate constants.

Structs§

  • Advanced SIMD modified immediate as used by the vector variant of FMOV.
  • Advanced SIMD modified immediate as used by MOVI/MVNI.
  • Floating-point unit immediate left shift.
  • Floating-point unit immediate right shift.
  • A shifted immediate value in ‘imm12’ format: supports 12 bits, shifted left by 0 or 12 places.
  • An immediate for logical instructions.
  • An immediate for shift instructions.
  • A 16-bit immediate for a MOVZ instruction, with a {0,16,32,48}-bit shift.
  • An immediate that represents the NZCV flags.
  • Additional information for return_call[_ind] instructions, left out of line to lower the size of the Inst enum.
  • a 9-bit signed offset.
  • A signed, scaled 7-bit offset.
  • A shift operator with an amount, guaranteed to be within range.
  • A shift operator amount.
  • An unsigned 5-bit immediate.
  • An unsigned, scaled 12-bit offset.

Enums§

  • Internal type ALUOp: defined at src/isa/aarch64/inst.isle line 1016.
  • Internal type ALUOp3: defined at src/isa/aarch64/inst.isle line 1054.
  • Internal type AMode: defined at src/isa/aarch64/inst.isle line 1140.
  • Internal type APIKey: defined at src/isa/aarch64/inst.isle line 1765.
  • Internal type AtomicRMWLoopOp: defined at src/isa/aarch64/inst.isle line 1749.
  • Internal type AtomicRMWOp: defined at src/isa/aarch64/inst.isle line 1734.
  • Internal type BitOp: defined at src/isa/aarch64/inst.isle line 1123.
  • A branch target. Either unresolved (basic-block index) or resolved (offset from end of current instruction).
  • Internal type BranchTargetType: defined at src/isa/aarch64/inst.isle line 1778.
  • Condition for conditional branches.
  • The kind of conditional branch: the common-case-optimized “reg-is-zero” / “reg-is-nonzero” variants, or the generic one that tests the machine condition codes.
  • An extend operator for a register.
  • Internal type FPUOp1: defined at src/isa/aarch64/inst.isle line 1396.
  • Internal type FPUOp2: defined at src/isa/aarch64/inst.isle line 1406.
  • Internal type FPUOp3: defined at src/isa/aarch64/inst.isle line 1417.
  • A floating-point unit (FPU) operation with two args, a register and an immediate.
  • A floating-point unit (FPU) operation with two args, a register and an immediate that modifies its dest (so takes that input value as a separate virtual register).
  • Internal type FpuRoundMode: defined at src/isa/aarch64/inst.isle line 1457.
  • Internal type FpuToIntOp: defined at src/isa/aarch64/inst.isle line 1430.
  • Internal type MInst: defined at src/isa/aarch64/inst.isle line 1.
  • Internal type IntToFpuOp: defined at src/isa/aarch64/inst.isle line 1443.
  • Different forms of label references for different instruction formats.
  • A reference to some memory address.
  • Internal type MoveWideOp: defined at src/isa/aarch64/inst.isle line 1066.
  • Type used to communicate the operand size of a machine instruction, as AArch64 has 32- and 64-bit variants of many instructions (and integer registers).
  • Internal type PairAMode: defined at src/isa/aarch64/inst.isle line 1242.
  • Type used to communicate the size of a scalar SIMD & FP operand.
  • A shift operator for a register or immediate.
  • Internal type TestBitAndBranchKind: defined at src/isa/aarch64/inst.isle line 1266.
  • Internal type VecALUModOp: defined at src/isa/aarch64/inst.isle line 1566.
  • Internal type VecALUOp: defined at src/isa/aarch64/inst.isle line 1479.
  • Internal type VecExtendOp: defined at src/isa/aarch64/inst.isle line 1470.
  • Internal type VecLanesOp: defined at src/isa/aarch64/inst.isle line 1707.
  • Internal type VecMisc2: defined at src/isa/aarch64/inst.isle line 1577.
  • Internal type VecPairOp: defined at src/isa/aarch64/inst.isle line 1688.
  • Internal type VecRRLongOp: defined at src/isa/aarch64/inst.isle line 1638.
  • Internal type VecRRNarrowOp: defined at src/isa/aarch64/inst.isle line 1653.
  • Internal type VecRRPairLongOp: defined at src/isa/aarch64/inst.isle line 1696.
  • Internal type VecRRRLongModOp: defined at src/isa/aarch64/inst.isle line 1679.
  • Internal type VecRRRLongOp: defined at src/isa/aarch64/inst.isle line 1667.
  • Internal type VecShiftImmModOp: defined at src/isa/aarch64/inst.isle line 1727.
  • Internal type VecShiftImmOp: defined at src/isa/aarch64/inst.isle line 1716.
  • Type used to communicate the size of a vector operand.