structstd.zig.Zir.Inst.Asm[src]

Trailing:

  1. Output for every outputs_len
  2. Input for every inputs_len
  3. clobber: NullTerminatedString // index into string_bytes (null terminated) for every clobbers_len.

Fields

src_node: i32
asm_source: NullTerminatedString
output_type_bits: u32

1 bit for each outputs_len: whether it uses -> T or not. 0b0 - operand is a pointer to where to store the output. 0b1 - operand is a type; asm expression has the output as the result. 0b0X is the first output, 0bX0 is the second, etc.

Source Code

Source code
pub const Asm = struct {
    src_node: i32,
    // null-terminated string index
    asm_source: NullTerminatedString,
    /// 1 bit for each outputs_len: whether it uses `-> T` or not.
    ///   0b0 - operand is a pointer to where to store the output.
    ///   0b1 - operand is a type; asm expression has the output as the result.
    /// 0b0X is the first output, 0bX0 is the second, etc.
    output_type_bits: u32,

    pub const Output = struct {
        /// index into string_bytes (null terminated)
        name: NullTerminatedString,
        /// index into string_bytes (null terminated)
        constraint: NullTerminatedString,
        /// How to interpret this is determined by `output_type_bits`.
        operand: Ref,
    };

    pub const Input = struct {
        /// index into string_bytes (null terminated)
        name: NullTerminatedString,
        /// index into string_bytes (null terminated)
        constraint: NullTerminatedString,
        operand: Ref,
    };
}