Module inst
Expand description
This module defines aarch64-specific machine instruction types.
Modules§
- args
- AArch64 ISA definitions: instruction arguments.
- emit
- AArch64 ISA: binary code emission.
- imms
- AArch64 ISA definitions: immediate constants.
Structs§
- ASIMDFP
ModImm - Advanced SIMD modified immediate as used by the vector variant of FMOV.
- ASIMD
MovMod Imm - Advanced SIMD modified immediate as used by MOVI/MVNI.
- FPULeft
Shift Imm - Floating-point unit immediate left shift.
- FPURight
Shift Imm - Floating-point unit immediate right shift.
- Imm12
- A shifted immediate value in ‘imm12’ format: supports 12 bits, shifted left by 0 or 12 places.
- ImmLogic
- An immediate for logical instructions.
- ImmShift
- An immediate for shift instructions.
- Move
Wide Const - A 16-bit immediate for a MOVZ instruction, with a {0,16,32,48}-bit shift.
- NZCV
- An immediate that represents the NZCV flags.
- Return
Call Info - Additional information for
return_call[_ind]
instructions, left out of line to lower the size of theInst
enum. - SImm9
- a 9-bit signed offset.
- SImm7
Scaled - A signed, scaled 7-bit offset.
- Shift
OpAnd Amt - A shift operator with an amount, guaranteed to be within range.
- Shift
OpShift Imm - A shift operator amount.
- UImm5
- An unsigned 5-bit immediate.
- UImm12
Scaled - An unsigned, scaled 12-bit offset.
Enums§
- ALUOp
- Internal type ALUOp: defined at src/isa/aarch64/inst.isle line 1016.
- ALUOp3
- Internal type ALUOp3: defined at src/isa/aarch64/inst.isle line 1054.
- AMode
- Internal type AMode: defined at src/isa/aarch64/inst.isle line 1140.
- APIKey
- Internal type APIKey: defined at src/isa/aarch64/inst.isle line 1771.
- AtomicRMW
Loop Op - Internal type AtomicRMWLoopOp: defined at src/isa/aarch64/inst.isle line 1755.
- AtomicRMW
Op - Internal type AtomicRMWOp: defined at src/isa/aarch64/inst.isle line 1740.
- BitOp
- Internal type BitOp: defined at src/isa/aarch64/inst.isle line 1123.
- Branch
Target - A branch target. Either unresolved (basic-block index) or resolved (offset from end of current instruction).
- Branch
Target Type - Internal type BranchTargetType: defined at src/isa/aarch64/inst.isle line 1784.
- Cond
- Condition for conditional branches.
- Cond
BrKind - 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.
- Extend
Op - An extend operator for a register.
- FPUOp1
- Internal type FPUOp1: defined at src/isa/aarch64/inst.isle line 1402.
- FPUOp2
- Internal type FPUOp2: defined at src/isa/aarch64/inst.isle line 1412.
- FPUOp3
- Internal type FPUOp3: defined at src/isa/aarch64/inst.isle line 1423.
- FPUOpRI
- A floating-point unit (FPU) operation with two args, a register and an immediate.
- FPUOpRI
Mod - 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).
- FpuRound
Mode - Internal type FpuRoundMode: defined at src/isa/aarch64/inst.isle line 1463.
- FpuTo
IntOp - Internal type FpuToIntOp: defined at src/isa/aarch64/inst.isle line 1436.
- Inst
- Internal type MInst: defined at src/isa/aarch64/inst.isle line 1.
- IntTo
FpuOp - Internal type IntToFpuOp: defined at src/isa/aarch64/inst.isle line 1449.
- Label
Use - Different forms of label references for different instruction formats.
- MemLabel
- A reference to some memory address.
- Move
Wide Op - Internal type MoveWideOp: defined at src/isa/aarch64/inst.isle line 1066.
- Operand
Size - 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).
- PairA
Mode - Internal type PairAMode: defined at src/isa/aarch64/inst.isle line 1242.
- Scalar
Size - Type used to communicate the size of a scalar SIMD & FP operand.
- ShiftOp
- A shift operator for a register or immediate.
- Test
BitAnd Branch Kind - Internal type TestBitAndBranchKind: defined at src/isa/aarch64/inst.isle line 1266.
- VecALU
ModOp - Internal type VecALUModOp: defined at src/isa/aarch64/inst.isle line 1572.
- VecALU
Op - Internal type VecALUOp: defined at src/isa/aarch64/inst.isle line 1485.
- VecExtend
Op - Internal type VecExtendOp: defined at src/isa/aarch64/inst.isle line 1476.
- VecLanes
Op - Internal type VecLanesOp: defined at src/isa/aarch64/inst.isle line 1713.
- VecMisc2
- Internal type VecMisc2: defined at src/isa/aarch64/inst.isle line 1583.
- VecPair
Op - Internal type VecPairOp: defined at src/isa/aarch64/inst.isle line 1694.
- VecRR
Long Op - Internal type VecRRLongOp: defined at src/isa/aarch64/inst.isle line 1644.
- VecRR
Narrow Op - Internal type VecRRNarrowOp: defined at src/isa/aarch64/inst.isle line 1659.
- VecRR
Pair Long Op - Internal type VecRRPairLongOp: defined at src/isa/aarch64/inst.isle line 1702.
- VecRRR
Long ModOp - Internal type VecRRRLongModOp: defined at src/isa/aarch64/inst.isle line 1685.
- VecRRR
Long Op - Internal type VecRRRLongOp: defined at src/isa/aarch64/inst.isle line 1673.
- VecShift
ImmMod Op - Internal type VecShiftImmModOp: defined at src/isa/aarch64/inst.isle line 1733.
- VecShift
ImmOp - Internal type VecShiftImmOp: defined at src/isa/aarch64/inst.isle line 1722.
- Vector
Size - Type used to communicate the size of a vector operand.