Skip to content

simd #

SIMD vectors

The simd module provides fixed-size vectors of numbers and lane masks. Operations work on corresponding lanes. With gcc and clang they compile to the target's SIMD instructions (SSE/AVX, NEON, ...); other C compilers and the non-C backends use scalar loops with the same results.

import simd

fn main() {
    a := simd.f32x4(1, 2, 3, 4)
    b := simd.splat_f32x4(2)
    println((a * b).to_array()) // [2.0, 4.0, 6.0, 8.0]
    println(a.dot(b)) // 20.0
}

Types

A vector type is named after its lane type and lane count: F32x8 holds eight f32 lanes.

Lane type 64 bits 128 bits 256 bits 512 bits
f32 F32x2 F32x4 F32x8 F32x16
f64 F64x2 F64x4 F64x8
i8, u8 I8x8, U8x8 I8x16, U8x16 I8x32, U8x32 I8x64, U8x64
i16, u16 I16x4, U16x4 I16x8, U16x8 I16x16, U16x16 I16x32, U16x32
i32, u32 I32x2, U32x2 I32x4, U32x4 I32x8, U32x8 I32x16, U32x16
i64, u64 I64x2, U64x2 I64x4, U64x4 I64x8, U64x8

Comparisons return a mask named after the lane width and count: Mask32x4 belongs to F32x4, I32x4 and U32x4, and Mask8x16 to I8x16 and U8x16. V has no f16 type, so there are no f16 vectors.

Operations

In the list below, T stands for a vector type such as F32x8 and t for its lower-case name.

  • Creating: simd.t(lanes...) for up to eight lanes, simd.splat_t(x), simd.from_array_t(arr).
  • Loading and storing: simd.load_t_at(src, offset) and v.store_at(mut dst, offset) panic when the slice is too short. simd.load_t(src) and v.store(mut dst) return an error instead, and simd.load_t_part(src) and v.store_part(mut dst) handle the final lanes of a loop: load_t_part zero-fills the missing lanes and both reject slices longer than a vector.
  • Lanes: v[i], v[i] = x (they panic when i is out of range) and v.to_array().
  • Arithmetic: + - * / and the methods add sub mul div, minimum, maximum; neg and abs for signed and float vectors; sqrt and mul_add for float vectors.
  • Bitwise operations on integer vectors: and or xor not, shl(count) and shr(count).
  • Comparisons: eq ne lt le gt ge return a mask.
  • Reductions: sum, min, max, min_element, max_element and a.dot(b).
  • Conversions between lane types of the same width keep the lane count, for example F32x4.to_i32x4, I32x4.to_f32x4, I32x4.to_u32x4 and I8x16.to_u8x16.
  • Masks: simd.splat_mask32x4(b), simd.from_array_mask32x4(arr), m[i], m[i] = b, m.to_array(), all, any, count, and, or, xor and not.
  • Selecting: simd.select_t(mask, a, b) takes the lanes of a where the mask is set and the lanes of b elsewhere.

== compares whole vectors bit for bit, as V does for every struct. Use eq for a lane mask.

Masks and select make branch-free loops possible:

import simd

// clamp_negatives replaces the negative values of data by zero.
fn clamp_negatives(mut data []f32) {
    zero := simd.splat_f32x8(0)
    mut i := 0
    for ; i + 8 <= data.len; i += 8 {
        v := simd.load_f32x8_at(data, i)
        simd.select_f32x8(v.lt(zero), zero, v).store_at(mut data, i)
    }
    tail := simd.load_f32x8_part(data[i..]) or { panic(err) }
    simd.select_f32x8(tail.lt(zero), zero, tail).store_part(mut data[i..]) or { panic(err) }
}

fn main() {
    mut data := []f32{len: 11, init: f32(index) - 5}
    clamp_negatives(mut data)
    println(data) // [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0]
    a := simd.i32x4(3, -7, 8, 0)
    big := a.gt(simd.splat_i32x4(2))
    println('${big.count()} ${big.any()} ${big.all()}') // 2 true false
}

Semantics

  • Integer + - *, neg, abs, sum and dot wrap on overflow. Integer / truncates toward zero and panics when a lane of the divisor is zero; min / -1 wraps to min.
  • shl and an unsigned shr give zero lanes for a count of the lane width or more. A signed shr is arithmetic and fills the lanes with their sign bit for such counts.
  • Float operations follow IEEE 754. minimum and maximum return the other lane when one lane is NaN, and the lane of the receiver when the lanes compare equal (such as -0.0 and 0.0).
  • min_element and max_element return the index of the first lane holding the smallest or largest value, and min and max return that lane. For float vectors, NaN lanes are ignored, and index 0 is returned when every lane is NaN.
  • sum and dot add in lane order, so the vector and scalar paths round identically. mul_add and dot do not promise fused rounding: the C compiler may contract them when its flags allow it, as GCC does by default.
  • Float to integer conversions truncate toward zero, map NaN to 0 and saturate out-of-range values. Integer to float conversions round to nearest. Conversions between signed and unsigned lanes keep the bits.

Lowering

The vectors are structs holding a fixed array, so they can be stored in arrays and structs and need no particular alignment. On the C backend, element-wise operations call the helpers in simd.h: with gcc and clang these load the lanes into vectors declared with __attribute__((vector_size(N))), and the C compiler splits vectors wider than the target's registers. Pass for example -cflags -mavx2 to use 256-bit instructions on x86-64. TCC, MSVC and builds with -cflags -DV_SIMD_FORCE_SCALAR use scalar C loops; reductions, integer division and conversions are scalar V code on every path. The non-C backends use scalar V code throughout.

vectors_generated.v, vectors_generated.c.v, simd.h and vectors_generated_test.v are written by gen.vsh. After editing it, regenerate them with v run vlib/simd/gen.vsh.

On V's ARM64 backend (-b arm64), the five F32x4 arithmetic operators are lowered to single NEON instructions instead of the scalar loop. The generator gives those operators a named helper call on non-C backends (see vhelper in gen.vsh), with @[noinline] so the call stays visible; the backend matches the callee by name in vlib/v/gen/arm64/gen.v and emits fadd/fsub/fmul/ fdiv/fsqrt on four f32 lanes. Every other type keeps the scalar loop.

fn broadcast_f32x4 #

fn broadcast_f32x4(value f32) F32x4

broadcast_f32x4 copies value into all four lanes. It is the same as splat_f32x4.

fn f32x2 #

fn f32x2(a f32, b f32) F32x2

f32x2 creates a F32x2 from its lanes in lane order.

fn f32x4 #

fn f32x4(a f32, b f32, c f32, d f32) F32x4

f32x4 creates a F32x4 from its lanes in lane order.

fn f32x8 #

fn f32x8(a f32, b f32, c f32, d f32, e f32, f f32, g f32, h f32) F32x8

f32x8 creates a F32x8 from its lanes in lane order.

fn f64x2 #

fn f64x2(a f64, b f64) F64x2

f64x2 creates a F64x2 from its lanes in lane order.

fn f64x4 #

fn f64x4(a f64, b f64, c f64, d f64) F64x4

f64x4 creates a F64x4 from its lanes in lane order.

fn f64x8 #

fn f64x8(a f64, b f64, c f64, d f64, e f64, f f64, g f64, h f64) F64x8

f64x8 creates a F64x8 from its lanes in lane order.

fn from_array_f32x16 #

fn from_array_f32x16(values [16]f32) F32x16

from_array_f32x16 returns a F32x16 holding values in lane order.

fn from_array_f32x2 #

fn from_array_f32x2(values [2]f32) F32x2

from_array_f32x2 returns a F32x2 holding values in lane order.

fn from_array_f32x4 #

fn from_array_f32x4(values [4]f32) F32x4

from_array_f32x4 returns a F32x4 holding values in lane order.

fn from_array_f32x8 #

fn from_array_f32x8(values [8]f32) F32x8

from_array_f32x8 returns a F32x8 holding values in lane order.

fn from_array_f64x2 #

fn from_array_f64x2(values [2]f64) F64x2

from_array_f64x2 returns a F64x2 holding values in lane order.

fn from_array_f64x4 #

fn from_array_f64x4(values [4]f64) F64x4

from_array_f64x4 returns a F64x4 holding values in lane order.

fn from_array_f64x8 #

fn from_array_f64x8(values [8]f64) F64x8

from_array_f64x8 returns a F64x8 holding values in lane order.

fn from_array_i16x16 #

fn from_array_i16x16(values [16]i16) I16x16

from_array_i16x16 returns a I16x16 holding values in lane order.

fn from_array_i16x32 #

fn from_array_i16x32(values [32]i16) I16x32

from_array_i16x32 returns a I16x32 holding values in lane order.

fn from_array_i16x4 #

fn from_array_i16x4(values [4]i16) I16x4

from_array_i16x4 returns a I16x4 holding values in lane order.

fn from_array_i16x8 #

fn from_array_i16x8(values [8]i16) I16x8

from_array_i16x8 returns a I16x8 holding values in lane order.

fn from_array_i32x16 #

fn from_array_i32x16(values [16]i32) I32x16

from_array_i32x16 returns a I32x16 holding values in lane order.

fn from_array_i32x2 #

fn from_array_i32x2(values [2]i32) I32x2

from_array_i32x2 returns a I32x2 holding values in lane order.

fn from_array_i32x4 #

fn from_array_i32x4(values [4]i32) I32x4

from_array_i32x4 returns a I32x4 holding values in lane order.

fn from_array_i32x8 #

fn from_array_i32x8(values [8]i32) I32x8

from_array_i32x8 returns a I32x8 holding values in lane order.

fn from_array_i64x2 #

fn from_array_i64x2(values [2]i64) I64x2

from_array_i64x2 returns a I64x2 holding values in lane order.

fn from_array_i64x4 #

fn from_array_i64x4(values [4]i64) I64x4

from_array_i64x4 returns a I64x4 holding values in lane order.

fn from_array_i64x8 #

fn from_array_i64x8(values [8]i64) I64x8

from_array_i64x8 returns a I64x8 holding values in lane order.

fn from_array_i8x16 #

fn from_array_i8x16(values [16]i8) I8x16

from_array_i8x16 returns a I8x16 holding values in lane order.

fn from_array_i8x32 #

fn from_array_i8x32(values [32]i8) I8x32

from_array_i8x32 returns a I8x32 holding values in lane order.

fn from_array_i8x64 #

fn from_array_i8x64(values [64]i8) I8x64

from_array_i8x64 returns a I8x64 holding values in lane order.

fn from_array_i8x8 #

fn from_array_i8x8(values [8]i8) I8x8

from_array_i8x8 returns a I8x8 holding values in lane order.

fn from_array_mask16x16 #

@[direct_array_access]
fn from_array_mask16x16(values [16]bool) Mask16x16

from_array_mask16x16 returns a Mask16x16 with lane i set when values[i] is true.

fn from_array_mask16x32 #

@[direct_array_access]
fn from_array_mask16x32(values [32]bool) Mask16x32

from_array_mask16x32 returns a Mask16x32 with lane i set when values[i] is true.

fn from_array_mask16x4 #

@[direct_array_access]
fn from_array_mask16x4(values [4]bool) Mask16x4

from_array_mask16x4 returns a Mask16x4 with lane i set when values[i] is true.

fn from_array_mask16x8 #

@[direct_array_access]
fn from_array_mask16x8(values [8]bool) Mask16x8

from_array_mask16x8 returns a Mask16x8 with lane i set when values[i] is true.

fn from_array_mask32x16 #

@[direct_array_access]
fn from_array_mask32x16(values [16]bool) Mask32x16

from_array_mask32x16 returns a Mask32x16 with lane i set when values[i] is true.

fn from_array_mask32x2 #

@[direct_array_access]
fn from_array_mask32x2(values [2]bool) Mask32x2

from_array_mask32x2 returns a Mask32x2 with lane i set when values[i] is true.

fn from_array_mask32x4 #

@[direct_array_access]
fn from_array_mask32x4(values [4]bool) Mask32x4

from_array_mask32x4 returns a Mask32x4 with lane i set when values[i] is true.

fn from_array_mask32x8 #

@[direct_array_access]
fn from_array_mask32x8(values [8]bool) Mask32x8

from_array_mask32x8 returns a Mask32x8 with lane i set when values[i] is true.

fn from_array_mask64x2 #

@[direct_array_access]
fn from_array_mask64x2(values [2]bool) Mask64x2

from_array_mask64x2 returns a Mask64x2 with lane i set when values[i] is true.

fn from_array_mask64x4 #

@[direct_array_access]
fn from_array_mask64x4(values [4]bool) Mask64x4

from_array_mask64x4 returns a Mask64x4 with lane i set when values[i] is true.

fn from_array_mask64x8 #

@[direct_array_access]
fn from_array_mask64x8(values [8]bool) Mask64x8

from_array_mask64x8 returns a Mask64x8 with lane i set when values[i] is true.

fn from_array_mask8x16 #

@[direct_array_access]
fn from_array_mask8x16(values [16]bool) Mask8x16

from_array_mask8x16 returns a Mask8x16 with lane i set when values[i] is true.

fn from_array_mask8x32 #

@[direct_array_access]
fn from_array_mask8x32(values [32]bool) Mask8x32

from_array_mask8x32 returns a Mask8x32 with lane i set when values[i] is true.

fn from_array_mask8x64 #

@[direct_array_access]
fn from_array_mask8x64(values [64]bool) Mask8x64

from_array_mask8x64 returns a Mask8x64 with lane i set when values[i] is true.

fn from_array_mask8x8 #

@[direct_array_access]
fn from_array_mask8x8(values [8]bool) Mask8x8

from_array_mask8x8 returns a Mask8x8 with lane i set when values[i] is true.

fn from_array_u16x16 #

fn from_array_u16x16(values [16]u16) U16x16

from_array_u16x16 returns a U16x16 holding values in lane order.

fn from_array_u16x32 #

fn from_array_u16x32(values [32]u16) U16x32

from_array_u16x32 returns a U16x32 holding values in lane order.

fn from_array_u16x4 #

fn from_array_u16x4(values [4]u16) U16x4

from_array_u16x4 returns a U16x4 holding values in lane order.

fn from_array_u16x8 #

fn from_array_u16x8(values [8]u16) U16x8

from_array_u16x8 returns a U16x8 holding values in lane order.

fn from_array_u32x16 #

fn from_array_u32x16(values [16]u32) U32x16

from_array_u32x16 returns a U32x16 holding values in lane order.

fn from_array_u32x2 #

fn from_array_u32x2(values [2]u32) U32x2

from_array_u32x2 returns a U32x2 holding values in lane order.

fn from_array_u32x4 #

fn from_array_u32x4(values [4]u32) U32x4

from_array_u32x4 returns a U32x4 holding values in lane order.

fn from_array_u32x8 #

fn from_array_u32x8(values [8]u32) U32x8

from_array_u32x8 returns a U32x8 holding values in lane order.

fn from_array_u64x2 #

fn from_array_u64x2(values [2]u64) U64x2

from_array_u64x2 returns a U64x2 holding values in lane order.

fn from_array_u64x4 #

fn from_array_u64x4(values [4]u64) U64x4

from_array_u64x4 returns a U64x4 holding values in lane order.

fn from_array_u64x8 #

fn from_array_u64x8(values [8]u64) U64x8

from_array_u64x8 returns a U64x8 holding values in lane order.

fn from_array_u8x16 #

fn from_array_u8x16(values [16]u8) U8x16

from_array_u8x16 returns a U8x16 holding values in lane order.

fn from_array_u8x32 #

fn from_array_u8x32(values [32]u8) U8x32

from_array_u8x32 returns a U8x32 holding values in lane order.

fn from_array_u8x64 #

fn from_array_u8x64(values [64]u8) U8x64

from_array_u8x64 returns a U8x64 holding values in lane order.

fn from_array_u8x8 #

fn from_array_u8x8(values [8]u8) U8x8

from_array_u8x8 returns a U8x8 holding values in lane order.

fn i16x4 #

fn i16x4(a i16, b i16, c i16, d i16) I16x4

i16x4 creates a I16x4 from its lanes in lane order.

fn i16x8 #

fn i16x8(a i16, b i16, c i16, d i16, e i16, f i16, g i16, h i16) I16x8

i16x8 creates a I16x8 from its lanes in lane order.

fn i32x2 #

fn i32x2(a i32, b i32) I32x2

i32x2 creates a I32x2 from its lanes in lane order.

fn i32x4 #

fn i32x4(a i32, b i32, c i32, d i32) I32x4

i32x4 creates a I32x4 from its lanes in lane order.

fn i32x8 #

fn i32x8(a i32, b i32, c i32, d i32, e i32, f i32, g i32, h i32) I32x8

i32x8 creates a I32x8 from its lanes in lane order.

fn i64x2 #

fn i64x2(a i64, b i64) I64x2

i64x2 creates a I64x2 from its lanes in lane order.

fn i64x4 #

fn i64x4(a i64, b i64, c i64, d i64) I64x4

i64x4 creates a I64x4 from its lanes in lane order.

fn i64x8 #

fn i64x8(a i64, b i64, c i64, d i64, e i64, f i64, g i64, h i64) I64x8

i64x8 creates a I64x8 from its lanes in lane order.

fn i8x8 #

fn i8x8(a i8, b i8, c i8, d i8, e i8, f i8, g i8, h i8) I8x8

i8x8 creates a I8x8 from its lanes in lane order.

fn load_f32x16 #

fn load_f32x16(src []f32) !F32x16

load_f32x16 loads 16 values from the start of src. It returns an error if src has fewer than 16 values.

fn load_f32x16_at #

@[direct_array_access]
fn load_f32x16_at(src []f32, offset int) F32x16

load_f32x16_at loads 16 values starting at src[offset]. It panics if offset is negative or fewer than 16 values follow it.

fn load_f32x16_part #

@[direct_array_access]
fn load_f32x16_part(src []f32) !F32x16

load_f32x16_part loads up to 16 values from src and zero-fills the remaining lanes. It returns an error if src has more than 16 values.

fn load_f32x2 #

fn load_f32x2(src []f32) !F32x2

load_f32x2 loads 2 values from the start of src. It returns an error if src has fewer than 2 values.

fn load_f32x2_at #

@[direct_array_access]
fn load_f32x2_at(src []f32, offset int) F32x2

load_f32x2_at loads 2 values starting at src[offset]. It panics if offset is negative or fewer than 2 values follow it.

fn load_f32x2_part #

@[direct_array_access]
fn load_f32x2_part(src []f32) !F32x2

load_f32x2_part loads up to 2 values from src and zero-fills the remaining lanes. It returns an error if src has more than 2 values.

fn load_f32x4 #

fn load_f32x4(src []f32) !F32x4

load_f32x4 loads 4 values from the start of src. It returns an error if src has fewer than 4 values.

fn load_f32x4_at #

@[direct_array_access]
fn load_f32x4_at(src []f32, offset int) F32x4

load_f32x4_at loads 4 values starting at src[offset]. It panics if offset is negative or fewer than 4 values follow it.

fn load_f32x4_part #

@[direct_array_access]
fn load_f32x4_part(src []f32) !F32x4

load_f32x4_part loads up to 4 values from src and zero-fills the remaining lanes. It returns an error if src has more than 4 values.

fn load_f32x8 #

fn load_f32x8(src []f32) !F32x8

load_f32x8 loads 8 values from the start of src. It returns an error if src has fewer than 8 values.

fn load_f32x8_at #

@[direct_array_access]
fn load_f32x8_at(src []f32, offset int) F32x8

load_f32x8_at loads 8 values starting at src[offset]. It panics if offset is negative or fewer than 8 values follow it.

fn load_f32x8_part #

@[direct_array_access]
fn load_f32x8_part(src []f32) !F32x8

load_f32x8_part loads up to 8 values from src and zero-fills the remaining lanes. It returns an error if src has more than 8 values.

fn load_f64x2 #

fn load_f64x2(src []f64) !F64x2

load_f64x2 loads 2 values from the start of src. It returns an error if src has fewer than 2 values.

fn load_f64x2_at #

@[direct_array_access]
fn load_f64x2_at(src []f64, offset int) F64x2

load_f64x2_at loads 2 values starting at src[offset]. It panics if offset is negative or fewer than 2 values follow it.

fn load_f64x2_part #

@[direct_array_access]
fn load_f64x2_part(src []f64) !F64x2

load_f64x2_part loads up to 2 values from src and zero-fills the remaining lanes. It returns an error if src has more than 2 values.

fn load_f64x4 #

fn load_f64x4(src []f64) !F64x4

load_f64x4 loads 4 values from the start of src. It returns an error if src has fewer than 4 values.

fn load_f64x4_at #

@[direct_array_access]
fn load_f64x4_at(src []f64, offset int) F64x4

load_f64x4_at loads 4 values starting at src[offset]. It panics if offset is negative or fewer than 4 values follow it.

fn load_f64x4_part #

@[direct_array_access]
fn load_f64x4_part(src []f64) !F64x4

load_f64x4_part loads up to 4 values from src and zero-fills the remaining lanes. It returns an error if src has more than 4 values.

fn load_f64x8 #

fn load_f64x8(src []f64) !F64x8

load_f64x8 loads 8 values from the start of src. It returns an error if src has fewer than 8 values.

fn load_f64x8_at #

@[direct_array_access]
fn load_f64x8_at(src []f64, offset int) F64x8

load_f64x8_at loads 8 values starting at src[offset]. It panics if offset is negative or fewer than 8 values follow it.

fn load_f64x8_part #

@[direct_array_access]
fn load_f64x8_part(src []f64) !F64x8

load_f64x8_part loads up to 8 values from src and zero-fills the remaining lanes. It returns an error if src has more than 8 values.

fn load_i16x16 #

fn load_i16x16(src []i16) !I16x16

load_i16x16 loads 16 values from the start of src. It returns an error if src has fewer than 16 values.

fn load_i16x16_at #

@[direct_array_access]
fn load_i16x16_at(src []i16, offset int) I16x16

load_i16x16_at loads 16 values starting at src[offset]. It panics if offset is negative or fewer than 16 values follow it.

fn load_i16x16_part #

@[direct_array_access]
fn load_i16x16_part(src []i16) !I16x16

load_i16x16_part loads up to 16 values from src and zero-fills the remaining lanes. It returns an error if src has more than 16 values.

fn load_i16x32 #

fn load_i16x32(src []i16) !I16x32

load_i16x32 loads 32 values from the start of src. It returns an error if src has fewer than 32 values.

fn load_i16x32_at #

@[direct_array_access]
fn load_i16x32_at(src []i16, offset int) I16x32

load_i16x32_at loads 32 values starting at src[offset]. It panics if offset is negative or fewer than 32 values follow it.

fn load_i16x32_part #

@[direct_array_access]
fn load_i16x32_part(src []i16) !I16x32

load_i16x32_part loads up to 32 values from src and zero-fills the remaining lanes. It returns an error if src has more than 32 values.

fn load_i16x4 #

fn load_i16x4(src []i16) !I16x4

load_i16x4 loads 4 values from the start of src. It returns an error if src has fewer than 4 values.

fn load_i16x4_at #

@[direct_array_access]
fn load_i16x4_at(src []i16, offset int) I16x4

load_i16x4_at loads 4 values starting at src[offset]. It panics if offset is negative or fewer than 4 values follow it.

fn load_i16x4_part #

@[direct_array_access]
fn load_i16x4_part(src []i16) !I16x4

load_i16x4_part loads up to 4 values from src and zero-fills the remaining lanes. It returns an error if src has more than 4 values.

fn load_i16x8 #

fn load_i16x8(src []i16) !I16x8

load_i16x8 loads 8 values from the start of src. It returns an error if src has fewer than 8 values.

fn load_i16x8_at #

@[direct_array_access]
fn load_i16x8_at(src []i16, offset int) I16x8

load_i16x8_at loads 8 values starting at src[offset]. It panics if offset is negative or fewer than 8 values follow it.

fn load_i16x8_part #

@[direct_array_access]
fn load_i16x8_part(src []i16) !I16x8

load_i16x8_part loads up to 8 values from src and zero-fills the remaining lanes. It returns an error if src has more than 8 values.

fn load_i32x16 #

fn load_i32x16(src []i32) !I32x16

load_i32x16 loads 16 values from the start of src. It returns an error if src has fewer than 16 values.

fn load_i32x16_at #

@[direct_array_access]
fn load_i32x16_at(src []i32, offset int) I32x16

load_i32x16_at loads 16 values starting at src[offset]. It panics if offset is negative or fewer than 16 values follow it.

fn load_i32x16_part #

@[direct_array_access]
fn load_i32x16_part(src []i32) !I32x16

load_i32x16_part loads up to 16 values from src and zero-fills the remaining lanes. It returns an error if src has more than 16 values.

fn load_i32x2 #

fn load_i32x2(src []i32) !I32x2

load_i32x2 loads 2 values from the start of src. It returns an error if src has fewer than 2 values.

fn load_i32x2_at #

@[direct_array_access]
fn load_i32x2_at(src []i32, offset int) I32x2

load_i32x2_at loads 2 values starting at src[offset]. It panics if offset is negative or fewer than 2 values follow it.

fn load_i32x2_part #

@[direct_array_access]
fn load_i32x2_part(src []i32) !I32x2

load_i32x2_part loads up to 2 values from src and zero-fills the remaining lanes. It returns an error if src has more than 2 values.

fn load_i32x4 #

fn load_i32x4(src []i32) !I32x4

load_i32x4 loads 4 values from the start of src. It returns an error if src has fewer than 4 values.

fn load_i32x4_at #

@[direct_array_access]
fn load_i32x4_at(src []i32, offset int) I32x4

load_i32x4_at loads 4 values starting at src[offset]. It panics if offset is negative or fewer than 4 values follow it.

fn load_i32x4_part #

@[direct_array_access]
fn load_i32x4_part(src []i32) !I32x4

load_i32x4_part loads up to 4 values from src and zero-fills the remaining lanes. It returns an error if src has more than 4 values.

fn load_i32x8 #

fn load_i32x8(src []i32) !I32x8

load_i32x8 loads 8 values from the start of src. It returns an error if src has fewer than 8 values.

fn load_i32x8_at #

@[direct_array_access]
fn load_i32x8_at(src []i32, offset int) I32x8

load_i32x8_at loads 8 values starting at src[offset]. It panics if offset is negative or fewer than 8 values follow it.

fn load_i32x8_part #

@[direct_array_access]
fn load_i32x8_part(src []i32) !I32x8

load_i32x8_part loads up to 8 values from src and zero-fills the remaining lanes. It returns an error if src has more than 8 values.

fn load_i64x2 #

fn load_i64x2(src []i64) !I64x2

load_i64x2 loads 2 values from the start of src. It returns an error if src has fewer than 2 values.

fn load_i64x2_at #

@[direct_array_access]
fn load_i64x2_at(src []i64, offset int) I64x2

load_i64x2_at loads 2 values starting at src[offset]. It panics if offset is negative or fewer than 2 values follow it.

fn load_i64x2_part #

@[direct_array_access]
fn load_i64x2_part(src []i64) !I64x2

load_i64x2_part loads up to 2 values from src and zero-fills the remaining lanes. It returns an error if src has more than 2 values.

fn load_i64x4 #

fn load_i64x4(src []i64) !I64x4

load_i64x4 loads 4 values from the start of src. It returns an error if src has fewer than 4 values.

fn load_i64x4_at #

@[direct_array_access]
fn load_i64x4_at(src []i64, offset int) I64x4

load_i64x4_at loads 4 values starting at src[offset]. It panics if offset is negative or fewer than 4 values follow it.

fn load_i64x4_part #

@[direct_array_access]
fn load_i64x4_part(src []i64) !I64x4

load_i64x4_part loads up to 4 values from src and zero-fills the remaining lanes. It returns an error if src has more than 4 values.

fn load_i64x8 #

fn load_i64x8(src []i64) !I64x8

load_i64x8 loads 8 values from the start of src. It returns an error if src has fewer than 8 values.

fn load_i64x8_at #

@[direct_array_access]
fn load_i64x8_at(src []i64, offset int) I64x8

load_i64x8_at loads 8 values starting at src[offset]. It panics if offset is negative or fewer than 8 values follow it.

fn load_i64x8_part #

@[direct_array_access]
fn load_i64x8_part(src []i64) !I64x8

load_i64x8_part loads up to 8 values from src and zero-fills the remaining lanes. It returns an error if src has more than 8 values.

fn load_i8x16 #

fn load_i8x16(src []i8) !I8x16

load_i8x16 loads 16 values from the start of src. It returns an error if src has fewer than 16 values.

fn load_i8x16_at #

@[direct_array_access]
fn load_i8x16_at(src []i8, offset int) I8x16

load_i8x16_at loads 16 values starting at src[offset]. It panics if offset is negative or fewer than 16 values follow it.

fn load_i8x16_part #

@[direct_array_access]
fn load_i8x16_part(src []i8) !I8x16

load_i8x16_part loads up to 16 values from src and zero-fills the remaining lanes. It returns an error if src has more than 16 values.

fn load_i8x32 #

fn load_i8x32(src []i8) !I8x32

load_i8x32 loads 32 values from the start of src. It returns an error if src has fewer than 32 values.

fn load_i8x32_at #

@[direct_array_access]
fn load_i8x32_at(src []i8, offset int) I8x32

load_i8x32_at loads 32 values starting at src[offset]. It panics if offset is negative or fewer than 32 values follow it.

fn load_i8x32_part #

@[direct_array_access]
fn load_i8x32_part(src []i8) !I8x32

load_i8x32_part loads up to 32 values from src and zero-fills the remaining lanes. It returns an error if src has more than 32 values.

fn load_i8x64 #

fn load_i8x64(src []i8) !I8x64

load_i8x64 loads 64 values from the start of src. It returns an error if src has fewer than 64 values.

fn load_i8x64_at #

@[direct_array_access]
fn load_i8x64_at(src []i8, offset int) I8x64

load_i8x64_at loads 64 values starting at src[offset]. It panics if offset is negative or fewer than 64 values follow it.

fn load_i8x64_part #

@[direct_array_access]
fn load_i8x64_part(src []i8) !I8x64

load_i8x64_part loads up to 64 values from src and zero-fills the remaining lanes. It returns an error if src has more than 64 values.

fn load_i8x8 #

fn load_i8x8(src []i8) !I8x8

load_i8x8 loads 8 values from the start of src. It returns an error if src has fewer than 8 values.

fn load_i8x8_at #

@[direct_array_access]
fn load_i8x8_at(src []i8, offset int) I8x8

load_i8x8_at loads 8 values starting at src[offset]. It panics if offset is negative or fewer than 8 values follow it.

fn load_i8x8_part #

@[direct_array_access]
fn load_i8x8_part(src []i8) !I8x8

load_i8x8_part loads up to 8 values from src and zero-fills the remaining lanes. It returns an error if src has more than 8 values.

fn load_u16x16 #

fn load_u16x16(src []u16) !U16x16

load_u16x16 loads 16 values from the start of src. It returns an error if src has fewer than 16 values.

fn load_u16x16_at #

@[direct_array_access]
fn load_u16x16_at(src []u16, offset int) U16x16

load_u16x16_at loads 16 values starting at src[offset]. It panics if offset is negative or fewer than 16 values follow it.

fn load_u16x16_part #

@[direct_array_access]
fn load_u16x16_part(src []u16) !U16x16

load_u16x16_part loads up to 16 values from src and zero-fills the remaining lanes. It returns an error if src has more than 16 values.

fn load_u16x32 #

fn load_u16x32(src []u16) !U16x32

load_u16x32 loads 32 values from the start of src. It returns an error if src has fewer than 32 values.

fn load_u16x32_at #

@[direct_array_access]
fn load_u16x32_at(src []u16, offset int) U16x32

load_u16x32_at loads 32 values starting at src[offset]. It panics if offset is negative or fewer than 32 values follow it.

fn load_u16x32_part #

@[direct_array_access]
fn load_u16x32_part(src []u16) !U16x32

load_u16x32_part loads up to 32 values from src and zero-fills the remaining lanes. It returns an error if src has more than 32 values.

fn load_u16x4 #

fn load_u16x4(src []u16) !U16x4

load_u16x4 loads 4 values from the start of src. It returns an error if src has fewer than 4 values.

fn load_u16x4_at #

@[direct_array_access]
fn load_u16x4_at(src []u16, offset int) U16x4

load_u16x4_at loads 4 values starting at src[offset]. It panics if offset is negative or fewer than 4 values follow it.

fn load_u16x4_part #

@[direct_array_access]
fn load_u16x4_part(src []u16) !U16x4

load_u16x4_part loads up to 4 values from src and zero-fills the remaining lanes. It returns an error if src has more than 4 values.

fn load_u16x8 #

fn load_u16x8(src []u16) !U16x8

load_u16x8 loads 8 values from the start of src. It returns an error if src has fewer than 8 values.

fn load_u16x8_at #

@[direct_array_access]
fn load_u16x8_at(src []u16, offset int) U16x8

load_u16x8_at loads 8 values starting at src[offset]. It panics if offset is negative or fewer than 8 values follow it.

fn load_u16x8_part #

@[direct_array_access]
fn load_u16x8_part(src []u16) !U16x8

load_u16x8_part loads up to 8 values from src and zero-fills the remaining lanes. It returns an error if src has more than 8 values.

fn load_u32x16 #

fn load_u32x16(src []u32) !U32x16

load_u32x16 loads 16 values from the start of src. It returns an error if src has fewer than 16 values.

fn load_u32x16_at #

@[direct_array_access]
fn load_u32x16_at(src []u32, offset int) U32x16

load_u32x16_at loads 16 values starting at src[offset]. It panics if offset is negative or fewer than 16 values follow it.

fn load_u32x16_part #

@[direct_array_access]
fn load_u32x16_part(src []u32) !U32x16

load_u32x16_part loads up to 16 values from src and zero-fills the remaining lanes. It returns an error if src has more than 16 values.

fn load_u32x2 #

fn load_u32x2(src []u32) !U32x2

load_u32x2 loads 2 values from the start of src. It returns an error if src has fewer than 2 values.

fn load_u32x2_at #

@[direct_array_access]
fn load_u32x2_at(src []u32, offset int) U32x2

load_u32x2_at loads 2 values starting at src[offset]. It panics if offset is negative or fewer than 2 values follow it.

fn load_u32x2_part #

@[direct_array_access]
fn load_u32x2_part(src []u32) !U32x2

load_u32x2_part loads up to 2 values from src and zero-fills the remaining lanes. It returns an error if src has more than 2 values.

fn load_u32x4 #

fn load_u32x4(src []u32) !U32x4

load_u32x4 loads 4 values from the start of src. It returns an error if src has fewer than 4 values.

fn load_u32x4_at #

@[direct_array_access]
fn load_u32x4_at(src []u32, offset int) U32x4

load_u32x4_at loads 4 values starting at src[offset]. It panics if offset is negative or fewer than 4 values follow it.

fn load_u32x4_part #

@[direct_array_access]
fn load_u32x4_part(src []u32) !U32x4

load_u32x4_part loads up to 4 values from src and zero-fills the remaining lanes. It returns an error if src has more than 4 values.

fn load_u32x8 #

fn load_u32x8(src []u32) !U32x8

load_u32x8 loads 8 values from the start of src. It returns an error if src has fewer than 8 values.

fn load_u32x8_at #

@[direct_array_access]
fn load_u32x8_at(src []u32, offset int) U32x8

load_u32x8_at loads 8 values starting at src[offset]. It panics if offset is negative or fewer than 8 values follow it.

fn load_u32x8_part #

@[direct_array_access]
fn load_u32x8_part(src []u32) !U32x8

load_u32x8_part loads up to 8 values from src and zero-fills the remaining lanes. It returns an error if src has more than 8 values.

fn load_u64x2 #

fn load_u64x2(src []u64) !U64x2

load_u64x2 loads 2 values from the start of src. It returns an error if src has fewer than 2 values.

fn load_u64x2_at #

@[direct_array_access]
fn load_u64x2_at(src []u64, offset int) U64x2

load_u64x2_at loads 2 values starting at src[offset]. It panics if offset is negative or fewer than 2 values follow it.

fn load_u64x2_part #

@[direct_array_access]
fn load_u64x2_part(src []u64) !U64x2

load_u64x2_part loads up to 2 values from src and zero-fills the remaining lanes. It returns an error if src has more than 2 values.

fn load_u64x4 #

fn load_u64x4(src []u64) !U64x4

load_u64x4 loads 4 values from the start of src. It returns an error if src has fewer than 4 values.

fn load_u64x4_at #

@[direct_array_access]
fn load_u64x4_at(src []u64, offset int) U64x4

load_u64x4_at loads 4 values starting at src[offset]. It panics if offset is negative or fewer than 4 values follow it.

fn load_u64x4_part #

@[direct_array_access]
fn load_u64x4_part(src []u64) !U64x4

load_u64x4_part loads up to 4 values from src and zero-fills the remaining lanes. It returns an error if src has more than 4 values.

fn load_u64x8 #

fn load_u64x8(src []u64) !U64x8

load_u64x8 loads 8 values from the start of src. It returns an error if src has fewer than 8 values.

fn load_u64x8_at #

@[direct_array_access]
fn load_u64x8_at(src []u64, offset int) U64x8

load_u64x8_at loads 8 values starting at src[offset]. It panics if offset is negative or fewer than 8 values follow it.

fn load_u64x8_part #

@[direct_array_access]
fn load_u64x8_part(src []u64) !U64x8

load_u64x8_part loads up to 8 values from src and zero-fills the remaining lanes. It returns an error if src has more than 8 values.

fn load_u8x16 #

fn load_u8x16(src []u8) !U8x16

load_u8x16 loads 16 values from the start of src. It returns an error if src has fewer than 16 values.

fn load_u8x16_at #

@[direct_array_access]
fn load_u8x16_at(src []u8, offset int) U8x16

load_u8x16_at loads 16 values starting at src[offset]. It panics if offset is negative or fewer than 16 values follow it.

fn load_u8x16_part #

@[direct_array_access]
fn load_u8x16_part(src []u8) !U8x16

load_u8x16_part loads up to 16 values from src and zero-fills the remaining lanes. It returns an error if src has more than 16 values.

fn load_u8x32 #

fn load_u8x32(src []u8) !U8x32

load_u8x32 loads 32 values from the start of src. It returns an error if src has fewer than 32 values.

fn load_u8x32_at #

@[direct_array_access]
fn load_u8x32_at(src []u8, offset int) U8x32

load_u8x32_at loads 32 values starting at src[offset]. It panics if offset is negative or fewer than 32 values follow it.

fn load_u8x32_part #

@[direct_array_access]
fn load_u8x32_part(src []u8) !U8x32

load_u8x32_part loads up to 32 values from src and zero-fills the remaining lanes. It returns an error if src has more than 32 values.

fn load_u8x64 #

fn load_u8x64(src []u8) !U8x64

load_u8x64 loads 64 values from the start of src. It returns an error if src has fewer than 64 values.

fn load_u8x64_at #

@[direct_array_access]
fn load_u8x64_at(src []u8, offset int) U8x64

load_u8x64_at loads 64 values starting at src[offset]. It panics if offset is negative or fewer than 64 values follow it.

fn load_u8x64_part #

@[direct_array_access]
fn load_u8x64_part(src []u8) !U8x64

load_u8x64_part loads up to 64 values from src and zero-fills the remaining lanes. It returns an error if src has more than 64 values.

fn load_u8x8 #

fn load_u8x8(src []u8) !U8x8

load_u8x8 loads 8 values from the start of src. It returns an error if src has fewer than 8 values.

fn load_u8x8_at #

@[direct_array_access]
fn load_u8x8_at(src []u8, offset int) U8x8

load_u8x8_at loads 8 values starting at src[offset]. It panics if offset is negative or fewer than 8 values follow it.

fn load_u8x8_part #

@[direct_array_access]
fn load_u8x8_part(src []u8) !U8x8

load_u8x8_part loads up to 8 values from src and zero-fills the remaining lanes. It returns an error if src has more than 8 values.

fn select_f32x16 #

@[direct_array_access]
fn select_f32x16(mask Mask32x16, a F32x16, b F32x16) F32x16

select_f32x16 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_f32x2 #

@[direct_array_access]
fn select_f32x2(mask Mask32x2, a F32x2, b F32x2) F32x2

select_f32x2 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_f32x4 #

@[direct_array_access]
fn select_f32x4(mask Mask32x4, a F32x4, b F32x4) F32x4

select_f32x4 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_f32x8 #

@[direct_array_access]
fn select_f32x8(mask Mask32x8, a F32x8, b F32x8) F32x8

select_f32x8 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_f64x2 #

@[direct_array_access]
fn select_f64x2(mask Mask64x2, a F64x2, b F64x2) F64x2

select_f64x2 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_f64x4 #

@[direct_array_access]
fn select_f64x4(mask Mask64x4, a F64x4, b F64x4) F64x4

select_f64x4 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_f64x8 #

@[direct_array_access]
fn select_f64x8(mask Mask64x8, a F64x8, b F64x8) F64x8

select_f64x8 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_i16x16 #

@[direct_array_access]
fn select_i16x16(mask Mask16x16, a I16x16, b I16x16) I16x16

select_i16x16 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_i16x32 #

@[direct_array_access]
fn select_i16x32(mask Mask16x32, a I16x32, b I16x32) I16x32

select_i16x32 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_i16x4 #

@[direct_array_access]
fn select_i16x4(mask Mask16x4, a I16x4, b I16x4) I16x4

select_i16x4 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_i16x8 #

@[direct_array_access]
fn select_i16x8(mask Mask16x8, a I16x8, b I16x8) I16x8

select_i16x8 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_i32x16 #

@[direct_array_access]
fn select_i32x16(mask Mask32x16, a I32x16, b I32x16) I32x16

select_i32x16 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_i32x2 #

@[direct_array_access]
fn select_i32x2(mask Mask32x2, a I32x2, b I32x2) I32x2

select_i32x2 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_i32x4 #

@[direct_array_access]
fn select_i32x4(mask Mask32x4, a I32x4, b I32x4) I32x4

select_i32x4 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_i32x8 #

@[direct_array_access]
fn select_i32x8(mask Mask32x8, a I32x8, b I32x8) I32x8

select_i32x8 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_i64x2 #

@[direct_array_access]
fn select_i64x2(mask Mask64x2, a I64x2, b I64x2) I64x2

select_i64x2 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_i64x4 #

@[direct_array_access]
fn select_i64x4(mask Mask64x4, a I64x4, b I64x4) I64x4

select_i64x4 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_i64x8 #

@[direct_array_access]
fn select_i64x8(mask Mask64x8, a I64x8, b I64x8) I64x8

select_i64x8 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_i8x16 #

@[direct_array_access]
fn select_i8x16(mask Mask8x16, a I8x16, b I8x16) I8x16

select_i8x16 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_i8x32 #

@[direct_array_access]
fn select_i8x32(mask Mask8x32, a I8x32, b I8x32) I8x32

select_i8x32 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_i8x64 #

@[direct_array_access]
fn select_i8x64(mask Mask8x64, a I8x64, b I8x64) I8x64

select_i8x64 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_i8x8 #

@[direct_array_access]
fn select_i8x8(mask Mask8x8, a I8x8, b I8x8) I8x8

select_i8x8 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_u16x16 #

@[direct_array_access]
fn select_u16x16(mask Mask16x16, a U16x16, b U16x16) U16x16

select_u16x16 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_u16x32 #

@[direct_array_access]
fn select_u16x32(mask Mask16x32, a U16x32, b U16x32) U16x32

select_u16x32 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_u16x4 #

@[direct_array_access]
fn select_u16x4(mask Mask16x4, a U16x4, b U16x4) U16x4

select_u16x4 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_u16x8 #

@[direct_array_access]
fn select_u16x8(mask Mask16x8, a U16x8, b U16x8) U16x8

select_u16x8 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_u32x16 #

@[direct_array_access]
fn select_u32x16(mask Mask32x16, a U32x16, b U32x16) U32x16

select_u32x16 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_u32x2 #

@[direct_array_access]
fn select_u32x2(mask Mask32x2, a U32x2, b U32x2) U32x2

select_u32x2 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_u32x4 #

@[direct_array_access]
fn select_u32x4(mask Mask32x4, a U32x4, b U32x4) U32x4

select_u32x4 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_u32x8 #

@[direct_array_access]
fn select_u32x8(mask Mask32x8, a U32x8, b U32x8) U32x8

select_u32x8 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_u64x2 #

@[direct_array_access]
fn select_u64x2(mask Mask64x2, a U64x2, b U64x2) U64x2

select_u64x2 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_u64x4 #

@[direct_array_access]
fn select_u64x4(mask Mask64x4, a U64x4, b U64x4) U64x4

select_u64x4 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_u64x8 #

@[direct_array_access]
fn select_u64x8(mask Mask64x8, a U64x8, b U64x8) U64x8

select_u64x8 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_u8x16 #

@[direct_array_access]
fn select_u8x16(mask Mask8x16, a U8x16, b U8x16) U8x16

select_u8x16 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_u8x32 #

@[direct_array_access]
fn select_u8x32(mask Mask8x32, a U8x32, b U8x32) U8x32

select_u8x32 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_u8x64 #

@[direct_array_access]
fn select_u8x64(mask Mask8x64, a U8x64, b U8x64) U8x64

select_u8x64 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn select_u8x8 #

@[direct_array_access]
fn select_u8x8(mask Mask8x8, a U8x8, b U8x8) U8x8

select_u8x8 returns the lanes of a where mask is set and the lanes of b where it is clear.

fn splat_f32x16 #

fn splat_f32x16(value f32) F32x16

splat_f32x16 returns a F32x16 with every lane set to value.

fn splat_f32x2 #

fn splat_f32x2(value f32) F32x2

splat_f32x2 returns a F32x2 with every lane set to value.

fn splat_f32x4 #

fn splat_f32x4(value f32) F32x4

splat_f32x4 returns a F32x4 with every lane set to value.

fn splat_f32x8 #

fn splat_f32x8(value f32) F32x8

splat_f32x8 returns a F32x8 with every lane set to value.

fn splat_f64x2 #

fn splat_f64x2(value f64) F64x2

splat_f64x2 returns a F64x2 with every lane set to value.

fn splat_f64x4 #

fn splat_f64x4(value f64) F64x4

splat_f64x4 returns a F64x4 with every lane set to value.

fn splat_f64x8 #

fn splat_f64x8(value f64) F64x8

splat_f64x8 returns a F64x8 with every lane set to value.

fn splat_i16x16 #

fn splat_i16x16(value i16) I16x16

splat_i16x16 returns a I16x16 with every lane set to value.

fn splat_i16x32 #

fn splat_i16x32(value i16) I16x32

splat_i16x32 returns a I16x32 with every lane set to value.

fn splat_i16x4 #

fn splat_i16x4(value i16) I16x4

splat_i16x4 returns a I16x4 with every lane set to value.

fn splat_i16x8 #

fn splat_i16x8(value i16) I16x8

splat_i16x8 returns a I16x8 with every lane set to value.

fn splat_i32x16 #

fn splat_i32x16(value i32) I32x16

splat_i32x16 returns a I32x16 with every lane set to value.

fn splat_i32x2 #

fn splat_i32x2(value i32) I32x2

splat_i32x2 returns a I32x2 with every lane set to value.

fn splat_i32x4 #

fn splat_i32x4(value i32) I32x4

splat_i32x4 returns a I32x4 with every lane set to value.

fn splat_i32x8 #

fn splat_i32x8(value i32) I32x8

splat_i32x8 returns a I32x8 with every lane set to value.

fn splat_i64x2 #

fn splat_i64x2(value i64) I64x2

splat_i64x2 returns a I64x2 with every lane set to value.

fn splat_i64x4 #

fn splat_i64x4(value i64) I64x4

splat_i64x4 returns a I64x4 with every lane set to value.

fn splat_i64x8 #

fn splat_i64x8(value i64) I64x8

splat_i64x8 returns a I64x8 with every lane set to value.

fn splat_i8x16 #

fn splat_i8x16(value i8) I8x16

splat_i8x16 returns a I8x16 with every lane set to value.

fn splat_i8x32 #

fn splat_i8x32(value i8) I8x32

splat_i8x32 returns a I8x32 with every lane set to value.

fn splat_i8x64 #

fn splat_i8x64(value i8) I8x64

splat_i8x64 returns a I8x64 with every lane set to value.

fn splat_i8x8 #

fn splat_i8x8(value i8) I8x8

splat_i8x8 returns a I8x8 with every lane set to value.

fn splat_mask16x16 #

fn splat_mask16x16(value bool) Mask16x16

splat_mask16x16 returns a Mask16x16 with every lane set to value.

fn splat_mask16x32 #

fn splat_mask16x32(value bool) Mask16x32

splat_mask16x32 returns a Mask16x32 with every lane set to value.

fn splat_mask16x4 #

fn splat_mask16x4(value bool) Mask16x4

splat_mask16x4 returns a Mask16x4 with every lane set to value.

fn splat_mask16x8 #

fn splat_mask16x8(value bool) Mask16x8

splat_mask16x8 returns a Mask16x8 with every lane set to value.

fn splat_mask32x16 #

fn splat_mask32x16(value bool) Mask32x16

splat_mask32x16 returns a Mask32x16 with every lane set to value.

fn splat_mask32x2 #

fn splat_mask32x2(value bool) Mask32x2

splat_mask32x2 returns a Mask32x2 with every lane set to value.

fn splat_mask32x4 #

fn splat_mask32x4(value bool) Mask32x4

splat_mask32x4 returns a Mask32x4 with every lane set to value.

fn splat_mask32x8 #

fn splat_mask32x8(value bool) Mask32x8

splat_mask32x8 returns a Mask32x8 with every lane set to value.

fn splat_mask64x2 #

fn splat_mask64x2(value bool) Mask64x2

splat_mask64x2 returns a Mask64x2 with every lane set to value.

fn splat_mask64x4 #

fn splat_mask64x4(value bool) Mask64x4

splat_mask64x4 returns a Mask64x4 with every lane set to value.

fn splat_mask64x8 #

fn splat_mask64x8(value bool) Mask64x8

splat_mask64x8 returns a Mask64x8 with every lane set to value.

fn splat_mask8x16 #

fn splat_mask8x16(value bool) Mask8x16

splat_mask8x16 returns a Mask8x16 with every lane set to value.

fn splat_mask8x32 #

fn splat_mask8x32(value bool) Mask8x32

splat_mask8x32 returns a Mask8x32 with every lane set to value.

fn splat_mask8x64 #

fn splat_mask8x64(value bool) Mask8x64

splat_mask8x64 returns a Mask8x64 with every lane set to value.

fn splat_mask8x8 #

fn splat_mask8x8(value bool) Mask8x8

splat_mask8x8 returns a Mask8x8 with every lane set to value.

fn splat_u16x16 #

fn splat_u16x16(value u16) U16x16

splat_u16x16 returns a U16x16 with every lane set to value.

fn splat_u16x32 #

fn splat_u16x32(value u16) U16x32

splat_u16x32 returns a U16x32 with every lane set to value.

fn splat_u16x4 #

fn splat_u16x4(value u16) U16x4

splat_u16x4 returns a U16x4 with every lane set to value.

fn splat_u16x8 #

fn splat_u16x8(value u16) U16x8

splat_u16x8 returns a U16x8 with every lane set to value.

fn splat_u32x16 #

fn splat_u32x16(value u32) U32x16

splat_u32x16 returns a U32x16 with every lane set to value.

fn splat_u32x2 #

fn splat_u32x2(value u32) U32x2

splat_u32x2 returns a U32x2 with every lane set to value.

fn splat_u32x4 #

fn splat_u32x4(value u32) U32x4

splat_u32x4 returns a U32x4 with every lane set to value.

fn splat_u32x8 #

fn splat_u32x8(value u32) U32x8

splat_u32x8 returns a U32x8 with every lane set to value.

fn splat_u64x2 #

fn splat_u64x2(value u64) U64x2

splat_u64x2 returns a U64x2 with every lane set to value.

fn splat_u64x4 #

fn splat_u64x4(value u64) U64x4

splat_u64x4 returns a U64x4 with every lane set to value.

fn splat_u64x8 #

fn splat_u64x8(value u64) U64x8

splat_u64x8 returns a U64x8 with every lane set to value.

fn splat_u8x16 #

fn splat_u8x16(value u8) U8x16

splat_u8x16 returns a U8x16 with every lane set to value.

fn splat_u8x32 #

fn splat_u8x32(value u8) U8x32

splat_u8x32 returns a U8x32 with every lane set to value.

fn splat_u8x64 #

fn splat_u8x64(value u8) U8x64

splat_u8x64 returns a U8x64 with every lane set to value.

fn splat_u8x8 #

fn splat_u8x8(value u8) U8x8

splat_u8x8 returns a U8x8 with every lane set to value.

fn u16x4 #

fn u16x4(a u16, b u16, c u16, d u16) U16x4

u16x4 creates a U16x4 from its lanes in lane order.

fn u16x8 #

fn u16x8(a u16, b u16, c u16, d u16, e u16, f u16, g u16, h u16) U16x8

u16x8 creates a U16x8 from its lanes in lane order.

fn u32x2 #

fn u32x2(a u32, b u32) U32x2

u32x2 creates a U32x2 from its lanes in lane order.

fn u32x4 #

fn u32x4(a u32, b u32, c u32, d u32) U32x4

u32x4 creates a U32x4 from its lanes in lane order.

fn u32x8 #

fn u32x8(a u32, b u32, c u32, d u32, e u32, f u32, g u32, h u32) U32x8

u32x8 creates a U32x8 from its lanes in lane order.

fn u64x2 #

fn u64x2(a u64, b u64) U64x2

u64x2 creates a U64x2 from its lanes in lane order.

fn u64x4 #

fn u64x4(a u64, b u64, c u64, d u64) U64x4

u64x4 creates a U64x4 from its lanes in lane order.

fn u64x8 #

fn u64x8(a u64, b u64, c u64, d u64, e u64, f u64, g u64, h u64) U64x8

u64x8 creates a U64x8 from its lanes in lane order.

fn u8x8 #

fn u8x8(a u8, b u8, c u8, d u8, e u8, f u8, g u8, h u8) U8x8

u8x8 creates a U8x8 from its lanes in lane order.

struct F32x16 #

struct F32x16 {
mut:
	values [16]f32
}

F32x16 holds 16 f32 lanes (512 bits).

fn (F32x16) to_array #

fn (v F32x16) to_array() [16]f32

to_array returns the lanes in order.

fn (F32x16) [] #

@[direct_array_access]
fn (v F32x16) [] (i int) f32

[] returns lane i. It panics if i is out of range.

fn (F32x16) []= #

@[direct_array_access]
fn (mut v F32x16) []= (i int, value f32)

[]= sets lane i to value. It panics if i is out of range.

fn (F32x16) store #

fn (v F32x16) store(mut dst []f32) !

store writes all 16 lanes to the start of dst. It returns an error if dst has fewer than 16 elements.

fn (F32x16) store_part #

@[direct_array_access]
fn (v F32x16) store_part(mut dst []f32) !

store_part writes one lane for each element of dst, up to 16 elements. It returns an error if dst has more than 16 elements.

fn (F32x16) store_at #

@[direct_array_access]
fn (v F32x16) store_at(mut dst []f32, offset int)

store_at writes all 16 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 16 elements follow it.

fn (F32x16) + #

@[direct_array_access]
fn (a F32x16) + (b F32x16) F32x16
  • adds corresponding lanes.

fn (F32x16) - #

@[direct_array_access]
fn (a F32x16) - (b F32x16) F32x16
  • subtracts corresponding lanes.

fn (F32x16) * #

@[direct_array_access]
fn (a F32x16) * (b F32x16) F32x16
  • multiplies corresponding lanes.

fn (F32x16) / #

@[direct_array_access]
fn (a F32x16) / (b F32x16) F32x16

/ divides corresponding lanes.

fn (F32x16) add #

fn (a F32x16) add(b F32x16) F32x16

add returns a + b.

fn (F32x16) sub #

fn (a F32x16) sub(b F32x16) F32x16

sub returns a - b.

fn (F32x16) mul #

fn (a F32x16) mul(b F32x16) F32x16

mul returns a * b.

fn (F32x16) div #

fn (a F32x16) div(b F32x16) F32x16

div returns a / b.

fn (F32x16) neg #

@[direct_array_access]
fn (a F32x16) neg() F32x16

neg negates each lane.

fn (F32x16) abs #

@[direct_array_access]
fn (a F32x16) abs() F32x16

abs returns the absolute value of each lane by clearing its sign bit.

fn (F32x16) minimum #

@[direct_array_access]
fn (a F32x16) minimum(b F32x16) F32x16

minimum returns the smaller of each pair of lanes. When one lane is NaN, the other lane is returned. Equal lanes, such as -0.0 and 0.0, return the lane of a.

fn (F32x16) maximum #

@[direct_array_access]
fn (a F32x16) maximum(b F32x16) F32x16

maximum returns the larger of each pair of lanes. When one lane is NaN, the other lane is returned. Equal lanes, such as -0.0 and 0.0, return the lane of a.

fn (F32x16) sqrt #

@[direct_array_access]
fn (a F32x16) sqrt() F32x16

sqrt returns the square root of each lane.

fn (F32x16) mul_add #

fn (v F32x16) mul_add(multiplier F32x16, addend F32x16) F32x16

mul_add returns v * multiplier + addend for each lane. It does not promise fused rounding.

fn (F32x16) eq #

@[direct_array_access]
fn (a F32x16) eq(b F32x16) Mask32x16

eq returns a mask of the lanes where a is equal to b.

fn (F32x16) ne #

@[direct_array_access]
fn (a F32x16) ne(b F32x16) Mask32x16

ne returns a mask of the lanes where a is not equal to b.

fn (F32x16) lt #

@[direct_array_access]
fn (a F32x16) lt(b F32x16) Mask32x16

lt returns a mask of the lanes where a is less than b.

fn (F32x16) le #

@[direct_array_access]
fn (a F32x16) le(b F32x16) Mask32x16

le returns a mask of the lanes where a is less than or equal to b.

fn (F32x16) gt #

fn (a F32x16) gt(b F32x16) Mask32x16

gt returns a mask of the lanes where a is greater than b.

fn (F32x16) ge #

fn (a F32x16) ge(b F32x16) Mask32x16

ge returns a mask of the lanes where a is greater than or equal to b.

fn (F32x16) sum #

@[direct_array_access]
fn (v F32x16) sum() f32

sum adds the lanes in lane order.

fn (F32x16) min_element #

@[direct_array_access]
fn (v F32x16) min_element() int

min_element returns the index of the first lane holding the smallest value. NaN lanes are ignored. If every lane is NaN, it returns 0.

fn (F32x16) min #

@[direct_array_access]
fn (v F32x16) min() f32

min returns the smallest lane value, the lane at index min_element(). NaN lanes are ignored unless every lane is NaN.

fn (F32x16) max_element #

@[direct_array_access]
fn (v F32x16) max_element() int

max_element returns the index of the first lane holding the largest value. NaN lanes are ignored. If every lane is NaN, it returns 0.

fn (F32x16) max #

@[direct_array_access]
fn (v F32x16) max() f32

max returns the largest lane value, the lane at index max_element(). NaN lanes are ignored unless every lane is NaN.

fn (F32x16) dot #

fn (a F32x16) dot(b F32x16) f32

dot multiplies corresponding lanes and adds the products in lane order.

fn (F32x16) to_i32x16 #

@[direct_array_access]
fn (v F32x16) to_i32x16() I32x16

to_i32x16 converts each lane to i32. It truncates toward zero, maps NaN to 0 and saturates values outside the range of i32.

fn (F32x16) to_u32x16 #

@[direct_array_access]
fn (v F32x16) to_u32x16() U32x16

to_u32x16 converts each lane to u32. It truncates toward zero, maps NaN to 0 and saturates values outside the range of u32.

struct F32x2 #

struct F32x2 {
mut:
	values [2]f32
}

F32x2 holds 2 f32 lanes (64 bits).

fn (F32x2) to_array #

fn (v F32x2) to_array() [2]f32

to_array returns the lanes in order.

fn (F32x2) [] #

@[direct_array_access]
fn (v F32x2) [] (i int) f32

[] returns lane i. It panics if i is out of range.

fn (F32x2) []= #

@[direct_array_access]
fn (mut v F32x2) []= (i int, value f32)

[]= sets lane i to value. It panics if i is out of range.

fn (F32x2) store #

fn (v F32x2) store(mut dst []f32) !

store writes all 2 lanes to the start of dst. It returns an error if dst has fewer than 2 elements.

fn (F32x2) store_part #

@[direct_array_access]
fn (v F32x2) store_part(mut dst []f32) !

store_part writes one lane for each element of dst, up to 2 elements. It returns an error if dst has more than 2 elements.

fn (F32x2) store_at #

@[direct_array_access]
fn (v F32x2) store_at(mut dst []f32, offset int)

store_at writes all 2 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 2 elements follow it.

fn (F32x2) + #

@[direct_array_access]
fn (a F32x2) + (b F32x2) F32x2
  • adds corresponding lanes.

fn (F32x2) - #

@[direct_array_access]
fn (a F32x2) - (b F32x2) F32x2
  • subtracts corresponding lanes.

fn (F32x2) * #

@[direct_array_access]
fn (a F32x2) * (b F32x2) F32x2
  • multiplies corresponding lanes.

fn (F32x2) / #

@[direct_array_access]
fn (a F32x2) / (b F32x2) F32x2

/ divides corresponding lanes.

fn (F32x2) add #

fn (a F32x2) add(b F32x2) F32x2

add returns a + b.

fn (F32x2) sub #

fn (a F32x2) sub(b F32x2) F32x2

sub returns a - b.

fn (F32x2) mul #

fn (a F32x2) mul(b F32x2) F32x2

mul returns a * b.

fn (F32x2) div #

fn (a F32x2) div(b F32x2) F32x2

div returns a / b.

fn (F32x2) neg #

@[direct_array_access]
fn (a F32x2) neg() F32x2

neg negates each lane.

fn (F32x2) abs #

@[direct_array_access]
fn (a F32x2) abs() F32x2

abs returns the absolute value of each lane by clearing its sign bit.

fn (F32x2) minimum #

@[direct_array_access]
fn (a F32x2) minimum(b F32x2) F32x2

minimum returns the smaller of each pair of lanes. When one lane is NaN, the other lane is returned. Equal lanes, such as -0.0 and 0.0, return the lane of a.

fn (F32x2) maximum #

@[direct_array_access]
fn (a F32x2) maximum(b F32x2) F32x2

maximum returns the larger of each pair of lanes. When one lane is NaN, the other lane is returned. Equal lanes, such as -0.0 and 0.0, return the lane of a.

fn (F32x2) sqrt #

@[direct_array_access]
fn (a F32x2) sqrt() F32x2

sqrt returns the square root of each lane.

fn (F32x2) mul_add #

fn (v F32x2) mul_add(multiplier F32x2, addend F32x2) F32x2

mul_add returns v * multiplier + addend for each lane. It does not promise fused rounding.

fn (F32x2) eq #

@[direct_array_access]
fn (a F32x2) eq(b F32x2) Mask32x2

eq returns a mask of the lanes where a is equal to b.

fn (F32x2) ne #

@[direct_array_access]
fn (a F32x2) ne(b F32x2) Mask32x2

ne returns a mask of the lanes where a is not equal to b.

fn (F32x2) lt #

@[direct_array_access]
fn (a F32x2) lt(b F32x2) Mask32x2

lt returns a mask of the lanes where a is less than b.

fn (F32x2) le #

@[direct_array_access]
fn (a F32x2) le(b F32x2) Mask32x2

le returns a mask of the lanes where a is less than or equal to b.

fn (F32x2) gt #

fn (a F32x2) gt(b F32x2) Mask32x2

gt returns a mask of the lanes where a is greater than b.

fn (F32x2) ge #

fn (a F32x2) ge(b F32x2) Mask32x2

ge returns a mask of the lanes where a is greater than or equal to b.

fn (F32x2) sum #

@[direct_array_access]
fn (v F32x2) sum() f32

sum adds the lanes in lane order.

fn (F32x2) min_element #

@[direct_array_access]
fn (v F32x2) min_element() int

min_element returns the index of the first lane holding the smallest value. NaN lanes are ignored. If every lane is NaN, it returns 0.

fn (F32x2) min #

@[direct_array_access]
fn (v F32x2) min() f32

min returns the smallest lane value, the lane at index min_element(). NaN lanes are ignored unless every lane is NaN.

fn (F32x2) max_element #

@[direct_array_access]
fn (v F32x2) max_element() int

max_element returns the index of the first lane holding the largest value. NaN lanes are ignored. If every lane is NaN, it returns 0.

fn (F32x2) max #

@[direct_array_access]
fn (v F32x2) max() f32

max returns the largest lane value, the lane at index max_element(). NaN lanes are ignored unless every lane is NaN.

fn (F32x2) dot #

fn (a F32x2) dot(b F32x2) f32

dot multiplies corresponding lanes and adds the products in lane order.

fn (F32x2) to_i32x2 #

@[direct_array_access]
fn (v F32x2) to_i32x2() I32x2

to_i32x2 converts each lane to i32. It truncates toward zero, maps NaN to 0 and saturates values outside the range of i32.

fn (F32x2) to_u32x2 #

@[direct_array_access]
fn (v F32x2) to_u32x2() U32x2

to_u32x2 converts each lane to u32. It truncates toward zero, maps NaN to 0 and saturates values outside the range of u32.

struct F32x4 #

struct F32x4 {
mut:
	values [4]f32
}

F32x4 holds 4 f32 lanes (128 bits).

fn (F32x4) to_array #

fn (v F32x4) to_array() [4]f32

to_array returns the lanes in order.

fn (F32x4) [] #

@[direct_array_access]
fn (v F32x4) [] (i int) f32

[] returns lane i. It panics if i is out of range.

fn (F32x4) []= #

@[direct_array_access]
fn (mut v F32x4) []= (i int, value f32)

[]= sets lane i to value. It panics if i is out of range.

fn (F32x4) store #

fn (v F32x4) store(mut dst []f32) !

store writes all 4 lanes to the start of dst. It returns an error if dst has fewer than 4 elements.

fn (F32x4) store_part #

@[direct_array_access]
fn (v F32x4) store_part(mut dst []f32) !

store_part writes one lane for each element of dst, up to 4 elements. It returns an error if dst has more than 4 elements.

fn (F32x4) store_at #

@[direct_array_access]
fn (v F32x4) store_at(mut dst []f32, offset int)

store_at writes all 4 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 4 elements follow it.

fn (F32x4) + #

@[direct_array_access; noinline]
fn (a F32x4) + (b F32x4) F32x4
  • adds corresponding lanes.

fn (F32x4) - #

@[direct_array_access; noinline]
fn (a F32x4) - (b F32x4) F32x4
  • subtracts corresponding lanes.

fn (F32x4) * #

@[direct_array_access; noinline]
fn (a F32x4) * (b F32x4) F32x4
  • multiplies corresponding lanes.

fn (F32x4) / #

@[direct_array_access; noinline]
fn (a F32x4) / (b F32x4) F32x4

/ divides corresponding lanes.

fn (F32x4) add #

fn (a F32x4) add(b F32x4) F32x4

add returns a + b.

fn (F32x4) sub #

fn (a F32x4) sub(b F32x4) F32x4

sub returns a - b.

fn (F32x4) mul #

fn (a F32x4) mul(b F32x4) F32x4

mul returns a * b.

fn (F32x4) div #

fn (a F32x4) div(b F32x4) F32x4

div returns a / b.

fn (F32x4) neg #

@[direct_array_access]
fn (a F32x4) neg() F32x4

neg negates each lane.

fn (F32x4) abs #

@[direct_array_access]
fn (a F32x4) abs() F32x4

abs returns the absolute value of each lane by clearing its sign bit.

fn (F32x4) minimum #

@[direct_array_access]
fn (a F32x4) minimum(b F32x4) F32x4

minimum returns the smaller of each pair of lanes. When one lane is NaN, the other lane is returned. Equal lanes, such as -0.0 and 0.0, return the lane of a.

fn (F32x4) maximum #

@[direct_array_access]
fn (a F32x4) maximum(b F32x4) F32x4

maximum returns the larger of each pair of lanes. When one lane is NaN, the other lane is returned. Equal lanes, such as -0.0 and 0.0, return the lane of a.

fn (F32x4) sqrt #

@[direct_array_access; noinline]
fn (a F32x4) sqrt() F32x4

sqrt returns the square root of each lane.

fn (F32x4) mul_add #

fn (v F32x4) mul_add(multiplier F32x4, addend F32x4) F32x4

mul_add returns v * multiplier + addend for each lane. It does not promise fused rounding.

fn (F32x4) eq #

@[direct_array_access]
fn (a F32x4) eq(b F32x4) Mask32x4

eq returns a mask of the lanes where a is equal to b.

fn (F32x4) ne #

@[direct_array_access]
fn (a F32x4) ne(b F32x4) Mask32x4

ne returns a mask of the lanes where a is not equal to b.

fn (F32x4) lt #

@[direct_array_access]
fn (a F32x4) lt(b F32x4) Mask32x4

lt returns a mask of the lanes where a is less than b.

fn (F32x4) le #

@[direct_array_access]
fn (a F32x4) le(b F32x4) Mask32x4

le returns a mask of the lanes where a is less than or equal to b.

fn (F32x4) gt #

fn (a F32x4) gt(b F32x4) Mask32x4

gt returns a mask of the lanes where a is greater than b.

fn (F32x4) ge #

fn (a F32x4) ge(b F32x4) Mask32x4

ge returns a mask of the lanes where a is greater than or equal to b.

fn (F32x4) sum #

@[direct_array_access]
fn (v F32x4) sum() f32

sum adds the lanes in lane order.

fn (F32x4) min_element #

@[direct_array_access]
fn (v F32x4) min_element() int

min_element returns the index of the first lane holding the smallest value. NaN lanes are ignored. If every lane is NaN, it returns 0.

fn (F32x4) min #

@[direct_array_access]
fn (v F32x4) min() f32

min returns the smallest lane value, the lane at index min_element(). NaN lanes are ignored unless every lane is NaN.

fn (F32x4) max_element #

@[direct_array_access]
fn (v F32x4) max_element() int

max_element returns the index of the first lane holding the largest value. NaN lanes are ignored. If every lane is NaN, it returns 0.

fn (F32x4) max #

@[direct_array_access]
fn (v F32x4) max() f32

max returns the largest lane value, the lane at index max_element(). NaN lanes are ignored unless every lane is NaN.

fn (F32x4) dot #

fn (a F32x4) dot(b F32x4) f32

dot multiplies corresponding lanes and adds the products in lane order.

fn (F32x4) to_i32x4 #

@[direct_array_access]
fn (v F32x4) to_i32x4() I32x4

to_i32x4 converts each lane to i32. It truncates toward zero, maps NaN to 0 and saturates values outside the range of i32.

fn (F32x4) to_u32x4 #

@[direct_array_access]
fn (v F32x4) to_u32x4() U32x4

to_u32x4 converts each lane to u32. It truncates toward zero, maps NaN to 0 and saturates values outside the range of u32.

struct F32x8 #

struct F32x8 {
mut:
	values [8]f32
}

F32x8 holds 8 f32 lanes (256 bits).

fn (F32x8) to_array #

fn (v F32x8) to_array() [8]f32

to_array returns the lanes in order.

fn (F32x8) [] #

@[direct_array_access]
fn (v F32x8) [] (i int) f32

[] returns lane i. It panics if i is out of range.

fn (F32x8) []= #

@[direct_array_access]
fn (mut v F32x8) []= (i int, value f32)

[]= sets lane i to value. It panics if i is out of range.

fn (F32x8) store #

fn (v F32x8) store(mut dst []f32) !

store writes all 8 lanes to the start of dst. It returns an error if dst has fewer than 8 elements.

fn (F32x8) store_part #

@[direct_array_access]
fn (v F32x8) store_part(mut dst []f32) !

store_part writes one lane for each element of dst, up to 8 elements. It returns an error if dst has more than 8 elements.

fn (F32x8) store_at #

@[direct_array_access]
fn (v F32x8) store_at(mut dst []f32, offset int)

store_at writes all 8 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 8 elements follow it.

fn (F32x8) + #

@[direct_array_access]
fn (a F32x8) + (b F32x8) F32x8
  • adds corresponding lanes.

fn (F32x8) - #

@[direct_array_access]
fn (a F32x8) - (b F32x8) F32x8
  • subtracts corresponding lanes.

fn (F32x8) * #

@[direct_array_access]
fn (a F32x8) * (b F32x8) F32x8
  • multiplies corresponding lanes.

fn (F32x8) / #

@[direct_array_access]
fn (a F32x8) / (b F32x8) F32x8

/ divides corresponding lanes.

fn (F32x8) add #

fn (a F32x8) add(b F32x8) F32x8

add returns a + b.

fn (F32x8) sub #

fn (a F32x8) sub(b F32x8) F32x8

sub returns a - b.

fn (F32x8) mul #

fn (a F32x8) mul(b F32x8) F32x8

mul returns a * b.

fn (F32x8) div #

fn (a F32x8) div(b F32x8) F32x8

div returns a / b.

fn (F32x8) neg #

@[direct_array_access]
fn (a F32x8) neg() F32x8

neg negates each lane.

fn (F32x8) abs #

@[direct_array_access]
fn (a F32x8) abs() F32x8

abs returns the absolute value of each lane by clearing its sign bit.

fn (F32x8) minimum #

@[direct_array_access]
fn (a F32x8) minimum(b F32x8) F32x8

minimum returns the smaller of each pair of lanes. When one lane is NaN, the other lane is returned. Equal lanes, such as -0.0 and 0.0, return the lane of a.

fn (F32x8) maximum #

@[direct_array_access]
fn (a F32x8) maximum(b F32x8) F32x8

maximum returns the larger of each pair of lanes. When one lane is NaN, the other lane is returned. Equal lanes, such as -0.0 and 0.0, return the lane of a.

fn (F32x8) sqrt #

@[direct_array_access]
fn (a F32x8) sqrt() F32x8

sqrt returns the square root of each lane.

fn (F32x8) mul_add #

fn (v F32x8) mul_add(multiplier F32x8, addend F32x8) F32x8

mul_add returns v * multiplier + addend for each lane. It does not promise fused rounding.

fn (F32x8) eq #

@[direct_array_access]
fn (a F32x8) eq(b F32x8) Mask32x8

eq returns a mask of the lanes where a is equal to b.

fn (F32x8) ne #

@[direct_array_access]
fn (a F32x8) ne(b F32x8) Mask32x8

ne returns a mask of the lanes where a is not equal to b.

fn (F32x8) lt #

@[direct_array_access]
fn (a F32x8) lt(b F32x8) Mask32x8

lt returns a mask of the lanes where a is less than b.

fn (F32x8) le #

@[direct_array_access]
fn (a F32x8) le(b F32x8) Mask32x8

le returns a mask of the lanes where a is less than or equal to b.

fn (F32x8) gt #

fn (a F32x8) gt(b F32x8) Mask32x8

gt returns a mask of the lanes where a is greater than b.

fn (F32x8) ge #

fn (a F32x8) ge(b F32x8) Mask32x8

ge returns a mask of the lanes where a is greater than or equal to b.

fn (F32x8) sum #

@[direct_array_access]
fn (v F32x8) sum() f32

sum adds the lanes in lane order.

fn (F32x8) min_element #

@[direct_array_access]
fn (v F32x8) min_element() int

min_element returns the index of the first lane holding the smallest value. NaN lanes are ignored. If every lane is NaN, it returns 0.

fn (F32x8) min #

@[direct_array_access]
fn (v F32x8) min() f32

min returns the smallest lane value, the lane at index min_element(). NaN lanes are ignored unless every lane is NaN.

fn (F32x8) max_element #

@[direct_array_access]
fn (v F32x8) max_element() int

max_element returns the index of the first lane holding the largest value. NaN lanes are ignored. If every lane is NaN, it returns 0.

fn (F32x8) max #

@[direct_array_access]
fn (v F32x8) max() f32

max returns the largest lane value, the lane at index max_element(). NaN lanes are ignored unless every lane is NaN.

fn (F32x8) dot #

fn (a F32x8) dot(b F32x8) f32

dot multiplies corresponding lanes and adds the products in lane order.

fn (F32x8) to_i32x8 #

@[direct_array_access]
fn (v F32x8) to_i32x8() I32x8

to_i32x8 converts each lane to i32. It truncates toward zero, maps NaN to 0 and saturates values outside the range of i32.

fn (F32x8) to_u32x8 #

@[direct_array_access]
fn (v F32x8) to_u32x8() U32x8

to_u32x8 converts each lane to u32. It truncates toward zero, maps NaN to 0 and saturates values outside the range of u32.

struct F64x2 #

struct F64x2 {
mut:
	values [2]f64
}

F64x2 holds 2 f64 lanes (128 bits).

fn (F64x2) to_array #

fn (v F64x2) to_array() [2]f64

to_array returns the lanes in order.

fn (F64x2) [] #

@[direct_array_access]
fn (v F64x2) [] (i int) f64

[] returns lane i. It panics if i is out of range.

fn (F64x2) []= #

@[direct_array_access]
fn (mut v F64x2) []= (i int, value f64)

[]= sets lane i to value. It panics if i is out of range.

fn (F64x2) store #

fn (v F64x2) store(mut dst []f64) !

store writes all 2 lanes to the start of dst. It returns an error if dst has fewer than 2 elements.

fn (F64x2) store_part #

@[direct_array_access]
fn (v F64x2) store_part(mut dst []f64) !

store_part writes one lane for each element of dst, up to 2 elements. It returns an error if dst has more than 2 elements.

fn (F64x2) store_at #

@[direct_array_access]
fn (v F64x2) store_at(mut dst []f64, offset int)

store_at writes all 2 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 2 elements follow it.

fn (F64x2) + #

@[direct_array_access]
fn (a F64x2) + (b F64x2) F64x2
  • adds corresponding lanes.

fn (F64x2) - #

@[direct_array_access]
fn (a F64x2) - (b F64x2) F64x2
  • subtracts corresponding lanes.

fn (F64x2) * #

@[direct_array_access]
fn (a F64x2) * (b F64x2) F64x2
  • multiplies corresponding lanes.

fn (F64x2) / #

@[direct_array_access]
fn (a F64x2) / (b F64x2) F64x2

/ divides corresponding lanes.

fn (F64x2) add #

fn (a F64x2) add(b F64x2) F64x2

add returns a + b.

fn (F64x2) sub #

fn (a F64x2) sub(b F64x2) F64x2

sub returns a - b.

fn (F64x2) mul #

fn (a F64x2) mul(b F64x2) F64x2

mul returns a * b.

fn (F64x2) div #

fn (a F64x2) div(b F64x2) F64x2

div returns a / b.

fn (F64x2) neg #

@[direct_array_access]
fn (a F64x2) neg() F64x2

neg negates each lane.

fn (F64x2) abs #

@[direct_array_access]
fn (a F64x2) abs() F64x2

abs returns the absolute value of each lane by clearing its sign bit.

fn (F64x2) minimum #

@[direct_array_access]
fn (a F64x2) minimum(b F64x2) F64x2

minimum returns the smaller of each pair of lanes. When one lane is NaN, the other lane is returned. Equal lanes, such as -0.0 and 0.0, return the lane of a.

fn (F64x2) maximum #

@[direct_array_access]
fn (a F64x2) maximum(b F64x2) F64x2

maximum returns the larger of each pair of lanes. When one lane is NaN, the other lane is returned. Equal lanes, such as -0.0 and 0.0, return the lane of a.

fn (F64x2) sqrt #

@[direct_array_access]
fn (a F64x2) sqrt() F64x2

sqrt returns the square root of each lane.

fn (F64x2) mul_add #

fn (v F64x2) mul_add(multiplier F64x2, addend F64x2) F64x2

mul_add returns v * multiplier + addend for each lane. It does not promise fused rounding.

fn (F64x2) eq #

@[direct_array_access]
fn (a F64x2) eq(b F64x2) Mask64x2

eq returns a mask of the lanes where a is equal to b.

fn (F64x2) ne #

@[direct_array_access]
fn (a F64x2) ne(b F64x2) Mask64x2

ne returns a mask of the lanes where a is not equal to b.

fn (F64x2) lt #

@[direct_array_access]
fn (a F64x2) lt(b F64x2) Mask64x2

lt returns a mask of the lanes where a is less than b.

fn (F64x2) le #

@[direct_array_access]
fn (a F64x2) le(b F64x2) Mask64x2

le returns a mask of the lanes where a is less than or equal to b.

fn (F64x2) gt #

fn (a F64x2) gt(b F64x2) Mask64x2

gt returns a mask of the lanes where a is greater than b.

fn (F64x2) ge #

fn (a F64x2) ge(b F64x2) Mask64x2

ge returns a mask of the lanes where a is greater than or equal to b.

fn (F64x2) sum #

@[direct_array_access]
fn (v F64x2) sum() f64

sum adds the lanes in lane order.

fn (F64x2) min_element #

@[direct_array_access]
fn (v F64x2) min_element() int

min_element returns the index of the first lane holding the smallest value. NaN lanes are ignored. If every lane is NaN, it returns 0.

fn (F64x2) min #

@[direct_array_access]
fn (v F64x2) min() f64

min returns the smallest lane value, the lane at index min_element(). NaN lanes are ignored unless every lane is NaN.

fn (F64x2) max_element #

@[direct_array_access]
fn (v F64x2) max_element() int

max_element returns the index of the first lane holding the largest value. NaN lanes are ignored. If every lane is NaN, it returns 0.

fn (F64x2) max #

@[direct_array_access]
fn (v F64x2) max() f64

max returns the largest lane value, the lane at index max_element(). NaN lanes are ignored unless every lane is NaN.

fn (F64x2) dot #

fn (a F64x2) dot(b F64x2) f64

dot multiplies corresponding lanes and adds the products in lane order.

fn (F64x2) to_i64x2 #

@[direct_array_access]
fn (v F64x2) to_i64x2() I64x2

to_i64x2 converts each lane to i64. It truncates toward zero, maps NaN to 0 and saturates values outside the range of i64.

fn (F64x2) to_u64x2 #

@[direct_array_access]
fn (v F64x2) to_u64x2() U64x2

to_u64x2 converts each lane to u64. It truncates toward zero, maps NaN to 0 and saturates values outside the range of u64.

struct F64x4 #

struct F64x4 {
mut:
	values [4]f64
}

F64x4 holds 4 f64 lanes (256 bits).

fn (F64x4) to_array #

fn (v F64x4) to_array() [4]f64

to_array returns the lanes in order.

fn (F64x4) [] #

@[direct_array_access]
fn (v F64x4) [] (i int) f64

[] returns lane i. It panics if i is out of range.

fn (F64x4) []= #

@[direct_array_access]
fn (mut v F64x4) []= (i int, value f64)

[]= sets lane i to value. It panics if i is out of range.

fn (F64x4) store #

fn (v F64x4) store(mut dst []f64) !

store writes all 4 lanes to the start of dst. It returns an error if dst has fewer than 4 elements.

fn (F64x4) store_part #

@[direct_array_access]
fn (v F64x4) store_part(mut dst []f64) !

store_part writes one lane for each element of dst, up to 4 elements. It returns an error if dst has more than 4 elements.

fn (F64x4) store_at #

@[direct_array_access]
fn (v F64x4) store_at(mut dst []f64, offset int)

store_at writes all 4 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 4 elements follow it.

fn (F64x4) + #

@[direct_array_access]
fn (a F64x4) + (b F64x4) F64x4
  • adds corresponding lanes.

fn (F64x4) - #

@[direct_array_access]
fn (a F64x4) - (b F64x4) F64x4
  • subtracts corresponding lanes.

fn (F64x4) * #

@[direct_array_access]
fn (a F64x4) * (b F64x4) F64x4
  • multiplies corresponding lanes.

fn (F64x4) / #

@[direct_array_access]
fn (a F64x4) / (b F64x4) F64x4

/ divides corresponding lanes.

fn (F64x4) add #

fn (a F64x4) add(b F64x4) F64x4

add returns a + b.

fn (F64x4) sub #

fn (a F64x4) sub(b F64x4) F64x4

sub returns a - b.

fn (F64x4) mul #

fn (a F64x4) mul(b F64x4) F64x4

mul returns a * b.

fn (F64x4) div #

fn (a F64x4) div(b F64x4) F64x4

div returns a / b.

fn (F64x4) neg #

@[direct_array_access]
fn (a F64x4) neg() F64x4

neg negates each lane.

fn (F64x4) abs #

@[direct_array_access]
fn (a F64x4) abs() F64x4

abs returns the absolute value of each lane by clearing its sign bit.

fn (F64x4) minimum #

@[direct_array_access]
fn (a F64x4) minimum(b F64x4) F64x4

minimum returns the smaller of each pair of lanes. When one lane is NaN, the other lane is returned. Equal lanes, such as -0.0 and 0.0, return the lane of a.

fn (F64x4) maximum #

@[direct_array_access]
fn (a F64x4) maximum(b F64x4) F64x4

maximum returns the larger of each pair of lanes. When one lane is NaN, the other lane is returned. Equal lanes, such as -0.0 and 0.0, return the lane of a.

fn (F64x4) sqrt #

@[direct_array_access]
fn (a F64x4) sqrt() F64x4

sqrt returns the square root of each lane.

fn (F64x4) mul_add #

fn (v F64x4) mul_add(multiplier F64x4, addend F64x4) F64x4

mul_add returns v * multiplier + addend for each lane. It does not promise fused rounding.

fn (F64x4) eq #

@[direct_array_access]
fn (a F64x4) eq(b F64x4) Mask64x4

eq returns a mask of the lanes where a is equal to b.

fn (F64x4) ne #

@[direct_array_access]
fn (a F64x4) ne(b F64x4) Mask64x4

ne returns a mask of the lanes where a is not equal to b.

fn (F64x4) lt #

@[direct_array_access]
fn (a F64x4) lt(b F64x4) Mask64x4

lt returns a mask of the lanes where a is less than b.

fn (F64x4) le #

@[direct_array_access]
fn (a F64x4) le(b F64x4) Mask64x4

le returns a mask of the lanes where a is less than or equal to b.

fn (F64x4) gt #

fn (a F64x4) gt(b F64x4) Mask64x4

gt returns a mask of the lanes where a is greater than b.

fn (F64x4) ge #

fn (a F64x4) ge(b F64x4) Mask64x4

ge returns a mask of the lanes where a is greater than or equal to b.

fn (F64x4) sum #

@[direct_array_access]
fn (v F64x4) sum() f64

sum adds the lanes in lane order.

fn (F64x4) min_element #

@[direct_array_access]
fn (v F64x4) min_element() int

min_element returns the index of the first lane holding the smallest value. NaN lanes are ignored. If every lane is NaN, it returns 0.

fn (F64x4) min #

@[direct_array_access]
fn (v F64x4) min() f64

min returns the smallest lane value, the lane at index min_element(). NaN lanes are ignored unless every lane is NaN.

fn (F64x4) max_element #

@[direct_array_access]
fn (v F64x4) max_element() int

max_element returns the index of the first lane holding the largest value. NaN lanes are ignored. If every lane is NaN, it returns 0.

fn (F64x4) max #

@[direct_array_access]
fn (v F64x4) max() f64

max returns the largest lane value, the lane at index max_element(). NaN lanes are ignored unless every lane is NaN.

fn (F64x4) dot #

fn (a F64x4) dot(b F64x4) f64

dot multiplies corresponding lanes and adds the products in lane order.

fn (F64x4) to_i64x4 #

@[direct_array_access]
fn (v F64x4) to_i64x4() I64x4

to_i64x4 converts each lane to i64. It truncates toward zero, maps NaN to 0 and saturates values outside the range of i64.

fn (F64x4) to_u64x4 #

@[direct_array_access]
fn (v F64x4) to_u64x4() U64x4

to_u64x4 converts each lane to u64. It truncates toward zero, maps NaN to 0 and saturates values outside the range of u64.

struct F64x8 #

struct F64x8 {
mut:
	values [8]f64
}

F64x8 holds 8 f64 lanes (512 bits).

fn (F64x8) to_array #

fn (v F64x8) to_array() [8]f64

to_array returns the lanes in order.

fn (F64x8) [] #

@[direct_array_access]
fn (v F64x8) [] (i int) f64

[] returns lane i. It panics if i is out of range.

fn (F64x8) []= #

@[direct_array_access]
fn (mut v F64x8) []= (i int, value f64)

[]= sets lane i to value. It panics if i is out of range.

fn (F64x8) store #

fn (v F64x8) store(mut dst []f64) !

store writes all 8 lanes to the start of dst. It returns an error if dst has fewer than 8 elements.

fn (F64x8) store_part #

@[direct_array_access]
fn (v F64x8) store_part(mut dst []f64) !

store_part writes one lane for each element of dst, up to 8 elements. It returns an error if dst has more than 8 elements.

fn (F64x8) store_at #

@[direct_array_access]
fn (v F64x8) store_at(mut dst []f64, offset int)

store_at writes all 8 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 8 elements follow it.

fn (F64x8) + #

@[direct_array_access]
fn (a F64x8) + (b F64x8) F64x8
  • adds corresponding lanes.

fn (F64x8) - #

@[direct_array_access]
fn (a F64x8) - (b F64x8) F64x8
  • subtracts corresponding lanes.

fn (F64x8) * #

@[direct_array_access]
fn (a F64x8) * (b F64x8) F64x8
  • multiplies corresponding lanes.

fn (F64x8) / #

@[direct_array_access]
fn (a F64x8) / (b F64x8) F64x8

/ divides corresponding lanes.

fn (F64x8) add #

fn (a F64x8) add(b F64x8) F64x8

add returns a + b.

fn (F64x8) sub #

fn (a F64x8) sub(b F64x8) F64x8

sub returns a - b.

fn (F64x8) mul #

fn (a F64x8) mul(b F64x8) F64x8

mul returns a * b.

fn (F64x8) div #

fn (a F64x8) div(b F64x8) F64x8

div returns a / b.

fn (F64x8) neg #

@[direct_array_access]
fn (a F64x8) neg() F64x8

neg negates each lane.

fn (F64x8) abs #

@[direct_array_access]
fn (a F64x8) abs() F64x8

abs returns the absolute value of each lane by clearing its sign bit.

fn (F64x8) minimum #

@[direct_array_access]
fn (a F64x8) minimum(b F64x8) F64x8

minimum returns the smaller of each pair of lanes. When one lane is NaN, the other lane is returned. Equal lanes, such as -0.0 and 0.0, return the lane of a.

fn (F64x8) maximum #

@[direct_array_access]
fn (a F64x8) maximum(b F64x8) F64x8

maximum returns the larger of each pair of lanes. When one lane is NaN, the other lane is returned. Equal lanes, such as -0.0 and 0.0, return the lane of a.

fn (F64x8) sqrt #

@[direct_array_access]
fn (a F64x8) sqrt() F64x8

sqrt returns the square root of each lane.

fn (F64x8) mul_add #

fn (v F64x8) mul_add(multiplier F64x8, addend F64x8) F64x8

mul_add returns v * multiplier + addend for each lane. It does not promise fused rounding.

fn (F64x8) eq #

@[direct_array_access]
fn (a F64x8) eq(b F64x8) Mask64x8

eq returns a mask of the lanes where a is equal to b.

fn (F64x8) ne #

@[direct_array_access]
fn (a F64x8) ne(b F64x8) Mask64x8

ne returns a mask of the lanes where a is not equal to b.

fn (F64x8) lt #

@[direct_array_access]
fn (a F64x8) lt(b F64x8) Mask64x8

lt returns a mask of the lanes where a is less than b.

fn (F64x8) le #

@[direct_array_access]
fn (a F64x8) le(b F64x8) Mask64x8

le returns a mask of the lanes where a is less than or equal to b.

fn (F64x8) gt #

fn (a F64x8) gt(b F64x8) Mask64x8

gt returns a mask of the lanes where a is greater than b.

fn (F64x8) ge #

fn (a F64x8) ge(b F64x8) Mask64x8

ge returns a mask of the lanes where a is greater than or equal to b.

fn (F64x8) sum #

@[direct_array_access]
fn (v F64x8) sum() f64

sum adds the lanes in lane order.

fn (F64x8) min_element #

@[direct_array_access]
fn (v F64x8) min_element() int

min_element returns the index of the first lane holding the smallest value. NaN lanes are ignored. If every lane is NaN, it returns 0.

fn (F64x8) min #

@[direct_array_access]
fn (v F64x8) min() f64

min returns the smallest lane value, the lane at index min_element(). NaN lanes are ignored unless every lane is NaN.

fn (F64x8) max_element #

@[direct_array_access]
fn (v F64x8) max_element() int

max_element returns the index of the first lane holding the largest value. NaN lanes are ignored. If every lane is NaN, it returns 0.

fn (F64x8) max #

@[direct_array_access]
fn (v F64x8) max() f64

max returns the largest lane value, the lane at index max_element(). NaN lanes are ignored unless every lane is NaN.

fn (F64x8) dot #

fn (a F64x8) dot(b F64x8) f64

dot multiplies corresponding lanes and adds the products in lane order.

fn (F64x8) to_i64x8 #

@[direct_array_access]
fn (v F64x8) to_i64x8() I64x8

to_i64x8 converts each lane to i64. It truncates toward zero, maps NaN to 0 and saturates values outside the range of i64.

fn (F64x8) to_u64x8 #

@[direct_array_access]
fn (v F64x8) to_u64x8() U64x8

to_u64x8 converts each lane to u64. It truncates toward zero, maps NaN to 0 and saturates values outside the range of u64.

struct I16x16 #

struct I16x16 {
mut:
	values [16]i16
}

I16x16 holds 16 i16 lanes (256 bits).

fn (I16x16) to_array #

fn (v I16x16) to_array() [16]i16

to_array returns the lanes in order.

fn (I16x16) [] #

@[direct_array_access]
fn (v I16x16) [] (i int) i16

[] returns lane i. It panics if i is out of range.

fn (I16x16) []= #

@[direct_array_access]
fn (mut v I16x16) []= (i int, value i16)

[]= sets lane i to value. It panics if i is out of range.

fn (I16x16) store #

fn (v I16x16) store(mut dst []i16) !

store writes all 16 lanes to the start of dst. It returns an error if dst has fewer than 16 elements.

fn (I16x16) store_part #

@[direct_array_access]
fn (v I16x16) store_part(mut dst []i16) !

store_part writes one lane for each element of dst, up to 16 elements. It returns an error if dst has more than 16 elements.

fn (I16x16) store_at #

@[direct_array_access]
fn (v I16x16) store_at(mut dst []i16, offset int)

store_at writes all 16 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 16 elements follow it.

fn (I16x16) + #

@[direct_array_access]
fn (a I16x16) + (b I16x16) I16x16
  • adds corresponding lanes, wrapping on overflow.

fn (I16x16) - #

@[direct_array_access]
fn (a I16x16) - (b I16x16) I16x16
  • subtracts corresponding lanes, wrapping on overflow.

fn (I16x16) * #

@[direct_array_access]
fn (a I16x16) * (b I16x16) I16x16
  • multiplies corresponding lanes, wrapping on overflow.

fn (I16x16) / #

@[direct_array_access]
fn (a I16x16) / (b I16x16) I16x16

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero. min_i16 / -1 wraps to min_i16.

fn (I16x16) add #

fn (a I16x16) add(b I16x16) I16x16

add returns a + b.

fn (I16x16) sub #

fn (a I16x16) sub(b I16x16) I16x16

sub returns a - b.

fn (I16x16) mul #

fn (a I16x16) mul(b I16x16) I16x16

mul returns a * b.

fn (I16x16) div #

fn (a I16x16) div(b I16x16) I16x16

div returns a / b.

fn (I16x16) neg #

@[direct_array_access]
fn (a I16x16) neg() I16x16

neg negates each lane, wrapping min_i16 to itself.

fn (I16x16) abs #

@[direct_array_access]
fn (a I16x16) abs() I16x16

abs returns the absolute value of each lane. min_i16 wraps to itself.

fn (I16x16) minimum #

@[direct_array_access]
fn (a I16x16) minimum(b I16x16) I16x16

minimum returns the smaller of each pair of lanes.

fn (I16x16) maximum #

@[direct_array_access]
fn (a I16x16) maximum(b I16x16) I16x16

maximum returns the larger of each pair of lanes.

fn (I16x16) eq #

@[direct_array_access]
fn (a I16x16) eq(b I16x16) Mask16x16

eq returns a mask of the lanes where a is equal to b.

fn (I16x16) ne #

@[direct_array_access]
fn (a I16x16) ne(b I16x16) Mask16x16

ne returns a mask of the lanes where a is not equal to b.

fn (I16x16) lt #

@[direct_array_access]
fn (a I16x16) lt(b I16x16) Mask16x16

lt returns a mask of the lanes where a is less than b.

fn (I16x16) le #

@[direct_array_access]
fn (a I16x16) le(b I16x16) Mask16x16

le returns a mask of the lanes where a is less than or equal to b.

fn (I16x16) gt #

fn (a I16x16) gt(b I16x16) Mask16x16

gt returns a mask of the lanes where a is greater than b.

fn (I16x16) ge #

fn (a I16x16) ge(b I16x16) Mask16x16

ge returns a mask of the lanes where a is greater than or equal to b.

fn (I16x16) and #

@[direct_array_access]
fn (a I16x16) and(b I16x16) I16x16

and returns the bitwise AND of corresponding lanes.

fn (I16x16) or #

@[direct_array_access]
fn (a I16x16) or(b I16x16) I16x16

or returns the bitwise OR of corresponding lanes.

fn (I16x16) xor #

@[direct_array_access]
fn (a I16x16) xor(b I16x16) I16x16

xor returns the bitwise XOR of corresponding lanes.

fn (I16x16) not #

@[direct_array_access]
fn (a I16x16) not() I16x16

not returns the bitwise complement of each lane.

fn (I16x16) shl #

@[direct_array_access]
fn (a I16x16) shl(count u32) I16x16

shl shifts each lane left by count bits. A count of 16 or more shifts every bit out and returns zero lanes.

fn (I16x16) shr #

@[direct_array_access]
fn (a I16x16) shr(count u32) I16x16

shr shifts each lane right by count bits. The shift is arithmetic: it copies the sign bit, and a count of 16 or more fills each lane with its sign bit.

fn (I16x16) sum #

@[direct_array_access]
fn (v I16x16) sum() i16

sum adds the lanes, wrapping on overflow.

fn (I16x16) min_element #

@[direct_array_access]
fn (v I16x16) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (I16x16) min #

@[direct_array_access]
fn (v I16x16) min() i16

min returns the smallest lane value, the lane at index min_element().

fn (I16x16) max_element #

@[direct_array_access]
fn (v I16x16) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (I16x16) max #

@[direct_array_access]
fn (v I16x16) max() i16

max returns the largest lane value, the lane at index max_element().

fn (I16x16) dot #

fn (a I16x16) dot(b I16x16) i16

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (I16x16) to_u16x16 #

@[direct_array_access]
fn (v I16x16) to_u16x16() U16x16

to_u16x16 converts each lane to u16. It keeps the bits of each lane, so values wrap modulo 2^16.

struct I16x32 #

struct I16x32 {
mut:
	values [32]i16
}

I16x32 holds 32 i16 lanes (512 bits).

fn (I16x32) to_array #

fn (v I16x32) to_array() [32]i16

to_array returns the lanes in order.

fn (I16x32) [] #

@[direct_array_access]
fn (v I16x32) [] (i int) i16

[] returns lane i. It panics if i is out of range.

fn (I16x32) []= #

@[direct_array_access]
fn (mut v I16x32) []= (i int, value i16)

[]= sets lane i to value. It panics if i is out of range.

fn (I16x32) store #

fn (v I16x32) store(mut dst []i16) !

store writes all 32 lanes to the start of dst. It returns an error if dst has fewer than 32 elements.

fn (I16x32) store_part #

@[direct_array_access]
fn (v I16x32) store_part(mut dst []i16) !

store_part writes one lane for each element of dst, up to 32 elements. It returns an error if dst has more than 32 elements.

fn (I16x32) store_at #

@[direct_array_access]
fn (v I16x32) store_at(mut dst []i16, offset int)

store_at writes all 32 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 32 elements follow it.

fn (I16x32) + #

@[direct_array_access]
fn (a I16x32) + (b I16x32) I16x32
  • adds corresponding lanes, wrapping on overflow.

fn (I16x32) - #

@[direct_array_access]
fn (a I16x32) - (b I16x32) I16x32
  • subtracts corresponding lanes, wrapping on overflow.

fn (I16x32) * #

@[direct_array_access]
fn (a I16x32) * (b I16x32) I16x32
  • multiplies corresponding lanes, wrapping on overflow.

fn (I16x32) / #

@[direct_array_access]
fn (a I16x32) / (b I16x32) I16x32

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero. min_i16 / -1 wraps to min_i16.

fn (I16x32) add #

fn (a I16x32) add(b I16x32) I16x32

add returns a + b.

fn (I16x32) sub #

fn (a I16x32) sub(b I16x32) I16x32

sub returns a - b.

fn (I16x32) mul #

fn (a I16x32) mul(b I16x32) I16x32

mul returns a * b.

fn (I16x32) div #

fn (a I16x32) div(b I16x32) I16x32

div returns a / b.

fn (I16x32) neg #

@[direct_array_access]
fn (a I16x32) neg() I16x32

neg negates each lane, wrapping min_i16 to itself.

fn (I16x32) abs #

@[direct_array_access]
fn (a I16x32) abs() I16x32

abs returns the absolute value of each lane. min_i16 wraps to itself.

fn (I16x32) minimum #

@[direct_array_access]
fn (a I16x32) minimum(b I16x32) I16x32

minimum returns the smaller of each pair of lanes.

fn (I16x32) maximum #

@[direct_array_access]
fn (a I16x32) maximum(b I16x32) I16x32

maximum returns the larger of each pair of lanes.

fn (I16x32) eq #

@[direct_array_access]
fn (a I16x32) eq(b I16x32) Mask16x32

eq returns a mask of the lanes where a is equal to b.

fn (I16x32) ne #

@[direct_array_access]
fn (a I16x32) ne(b I16x32) Mask16x32

ne returns a mask of the lanes where a is not equal to b.

fn (I16x32) lt #

@[direct_array_access]
fn (a I16x32) lt(b I16x32) Mask16x32

lt returns a mask of the lanes where a is less than b.

fn (I16x32) le #

@[direct_array_access]
fn (a I16x32) le(b I16x32) Mask16x32

le returns a mask of the lanes where a is less than or equal to b.

fn (I16x32) gt #

fn (a I16x32) gt(b I16x32) Mask16x32

gt returns a mask of the lanes where a is greater than b.

fn (I16x32) ge #

fn (a I16x32) ge(b I16x32) Mask16x32

ge returns a mask of the lanes where a is greater than or equal to b.

fn (I16x32) and #

@[direct_array_access]
fn (a I16x32) and(b I16x32) I16x32

and returns the bitwise AND of corresponding lanes.

fn (I16x32) or #

@[direct_array_access]
fn (a I16x32) or(b I16x32) I16x32

or returns the bitwise OR of corresponding lanes.

fn (I16x32) xor #

@[direct_array_access]
fn (a I16x32) xor(b I16x32) I16x32

xor returns the bitwise XOR of corresponding lanes.

fn (I16x32) not #

@[direct_array_access]
fn (a I16x32) not() I16x32

not returns the bitwise complement of each lane.

fn (I16x32) shl #

@[direct_array_access]
fn (a I16x32) shl(count u32) I16x32

shl shifts each lane left by count bits. A count of 16 or more shifts every bit out and returns zero lanes.

fn (I16x32) shr #

@[direct_array_access]
fn (a I16x32) shr(count u32) I16x32

shr shifts each lane right by count bits. The shift is arithmetic: it copies the sign bit, and a count of 16 or more fills each lane with its sign bit.

fn (I16x32) sum #

@[direct_array_access]
fn (v I16x32) sum() i16

sum adds the lanes, wrapping on overflow.

fn (I16x32) min_element #

@[direct_array_access]
fn (v I16x32) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (I16x32) min #

@[direct_array_access]
fn (v I16x32) min() i16

min returns the smallest lane value, the lane at index min_element().

fn (I16x32) max_element #

@[direct_array_access]
fn (v I16x32) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (I16x32) max #

@[direct_array_access]
fn (v I16x32) max() i16

max returns the largest lane value, the lane at index max_element().

fn (I16x32) dot #

fn (a I16x32) dot(b I16x32) i16

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (I16x32) to_u16x32 #

@[direct_array_access]
fn (v I16x32) to_u16x32() U16x32

to_u16x32 converts each lane to u16. It keeps the bits of each lane, so values wrap modulo 2^16.

struct I16x4 #

struct I16x4 {
mut:
	values [4]i16
}

I16x4 holds 4 i16 lanes (64 bits).

fn (I16x4) to_array #

fn (v I16x4) to_array() [4]i16

to_array returns the lanes in order.

fn (I16x4) [] #

@[direct_array_access]
fn (v I16x4) [] (i int) i16

[] returns lane i. It panics if i is out of range.

fn (I16x4) []= #

@[direct_array_access]
fn (mut v I16x4) []= (i int, value i16)

[]= sets lane i to value. It panics if i is out of range.

fn (I16x4) store #

fn (v I16x4) store(mut dst []i16) !

store writes all 4 lanes to the start of dst. It returns an error if dst has fewer than 4 elements.

fn (I16x4) store_part #

@[direct_array_access]
fn (v I16x4) store_part(mut dst []i16) !

store_part writes one lane for each element of dst, up to 4 elements. It returns an error if dst has more than 4 elements.

fn (I16x4) store_at #

@[direct_array_access]
fn (v I16x4) store_at(mut dst []i16, offset int)

store_at writes all 4 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 4 elements follow it.

fn (I16x4) + #

@[direct_array_access]
fn (a I16x4) + (b I16x4) I16x4
  • adds corresponding lanes, wrapping on overflow.

fn (I16x4) - #

@[direct_array_access]
fn (a I16x4) - (b I16x4) I16x4
  • subtracts corresponding lanes, wrapping on overflow.

fn (I16x4) * #

@[direct_array_access]
fn (a I16x4) * (b I16x4) I16x4
  • multiplies corresponding lanes, wrapping on overflow.

fn (I16x4) / #

@[direct_array_access]
fn (a I16x4) / (b I16x4) I16x4

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero. min_i16 / -1 wraps to min_i16.

fn (I16x4) add #

fn (a I16x4) add(b I16x4) I16x4

add returns a + b.

fn (I16x4) sub #

fn (a I16x4) sub(b I16x4) I16x4

sub returns a - b.

fn (I16x4) mul #

fn (a I16x4) mul(b I16x4) I16x4

mul returns a * b.

fn (I16x4) div #

fn (a I16x4) div(b I16x4) I16x4

div returns a / b.

fn (I16x4) neg #

@[direct_array_access]
fn (a I16x4) neg() I16x4

neg negates each lane, wrapping min_i16 to itself.

fn (I16x4) abs #

@[direct_array_access]
fn (a I16x4) abs() I16x4

abs returns the absolute value of each lane. min_i16 wraps to itself.

fn (I16x4) minimum #

@[direct_array_access]
fn (a I16x4) minimum(b I16x4) I16x4

minimum returns the smaller of each pair of lanes.

fn (I16x4) maximum #

@[direct_array_access]
fn (a I16x4) maximum(b I16x4) I16x4

maximum returns the larger of each pair of lanes.

fn (I16x4) eq #

@[direct_array_access]
fn (a I16x4) eq(b I16x4) Mask16x4

eq returns a mask of the lanes where a is equal to b.

fn (I16x4) ne #

@[direct_array_access]
fn (a I16x4) ne(b I16x4) Mask16x4

ne returns a mask of the lanes where a is not equal to b.

fn (I16x4) lt #

@[direct_array_access]
fn (a I16x4) lt(b I16x4) Mask16x4

lt returns a mask of the lanes where a is less than b.

fn (I16x4) le #

@[direct_array_access]
fn (a I16x4) le(b I16x4) Mask16x4

le returns a mask of the lanes where a is less than or equal to b.

fn (I16x4) gt #

fn (a I16x4) gt(b I16x4) Mask16x4

gt returns a mask of the lanes where a is greater than b.

fn (I16x4) ge #

fn (a I16x4) ge(b I16x4) Mask16x4

ge returns a mask of the lanes where a is greater than or equal to b.

fn (I16x4) and #

@[direct_array_access]
fn (a I16x4) and(b I16x4) I16x4

and returns the bitwise AND of corresponding lanes.

fn (I16x4) or #

@[direct_array_access]
fn (a I16x4) or(b I16x4) I16x4

or returns the bitwise OR of corresponding lanes.

fn (I16x4) xor #

@[direct_array_access]
fn (a I16x4) xor(b I16x4) I16x4

xor returns the bitwise XOR of corresponding lanes.

fn (I16x4) not #

@[direct_array_access]
fn (a I16x4) not() I16x4

not returns the bitwise complement of each lane.

fn (I16x4) shl #

@[direct_array_access]
fn (a I16x4) shl(count u32) I16x4

shl shifts each lane left by count bits. A count of 16 or more shifts every bit out and returns zero lanes.

fn (I16x4) shr #

@[direct_array_access]
fn (a I16x4) shr(count u32) I16x4

shr shifts each lane right by count bits. The shift is arithmetic: it copies the sign bit, and a count of 16 or more fills each lane with its sign bit.

fn (I16x4) sum #

@[direct_array_access]
fn (v I16x4) sum() i16

sum adds the lanes, wrapping on overflow.

fn (I16x4) min_element #

@[direct_array_access]
fn (v I16x4) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (I16x4) min #

@[direct_array_access]
fn (v I16x4) min() i16

min returns the smallest lane value, the lane at index min_element().

fn (I16x4) max_element #

@[direct_array_access]
fn (v I16x4) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (I16x4) max #

@[direct_array_access]
fn (v I16x4) max() i16

max returns the largest lane value, the lane at index max_element().

fn (I16x4) dot #

fn (a I16x4) dot(b I16x4) i16

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (I16x4) to_u16x4 #

@[direct_array_access]
fn (v I16x4) to_u16x4() U16x4

to_u16x4 converts each lane to u16. It keeps the bits of each lane, so values wrap modulo 2^16.

struct I16x8 #

struct I16x8 {
mut:
	values [8]i16
}

I16x8 holds 8 i16 lanes (128 bits).

fn (I16x8) to_array #

fn (v I16x8) to_array() [8]i16

to_array returns the lanes in order.

fn (I16x8) [] #

@[direct_array_access]
fn (v I16x8) [] (i int) i16

[] returns lane i. It panics if i is out of range.

fn (I16x8) []= #

@[direct_array_access]
fn (mut v I16x8) []= (i int, value i16)

[]= sets lane i to value. It panics if i is out of range.

fn (I16x8) store #

fn (v I16x8) store(mut dst []i16) !

store writes all 8 lanes to the start of dst. It returns an error if dst has fewer than 8 elements.

fn (I16x8) store_part #

@[direct_array_access]
fn (v I16x8) store_part(mut dst []i16) !

store_part writes one lane for each element of dst, up to 8 elements. It returns an error if dst has more than 8 elements.

fn (I16x8) store_at #

@[direct_array_access]
fn (v I16x8) store_at(mut dst []i16, offset int)

store_at writes all 8 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 8 elements follow it.

fn (I16x8) + #

@[direct_array_access]
fn (a I16x8) + (b I16x8) I16x8
  • adds corresponding lanes, wrapping on overflow.

fn (I16x8) - #

@[direct_array_access]
fn (a I16x8) - (b I16x8) I16x8
  • subtracts corresponding lanes, wrapping on overflow.

fn (I16x8) * #

@[direct_array_access]
fn (a I16x8) * (b I16x8) I16x8
  • multiplies corresponding lanes, wrapping on overflow.

fn (I16x8) / #

@[direct_array_access]
fn (a I16x8) / (b I16x8) I16x8

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero. min_i16 / -1 wraps to min_i16.

fn (I16x8) add #

fn (a I16x8) add(b I16x8) I16x8

add returns a + b.

fn (I16x8) sub #

fn (a I16x8) sub(b I16x8) I16x8

sub returns a - b.

fn (I16x8) mul #

fn (a I16x8) mul(b I16x8) I16x8

mul returns a * b.

fn (I16x8) div #

fn (a I16x8) div(b I16x8) I16x8

div returns a / b.

fn (I16x8) neg #

@[direct_array_access]
fn (a I16x8) neg() I16x8

neg negates each lane, wrapping min_i16 to itself.

fn (I16x8) abs #

@[direct_array_access]
fn (a I16x8) abs() I16x8

abs returns the absolute value of each lane. min_i16 wraps to itself.

fn (I16x8) minimum #

@[direct_array_access]
fn (a I16x8) minimum(b I16x8) I16x8

minimum returns the smaller of each pair of lanes.

fn (I16x8) maximum #

@[direct_array_access]
fn (a I16x8) maximum(b I16x8) I16x8

maximum returns the larger of each pair of lanes.

fn (I16x8) eq #

@[direct_array_access]
fn (a I16x8) eq(b I16x8) Mask16x8

eq returns a mask of the lanes where a is equal to b.

fn (I16x8) ne #

@[direct_array_access]
fn (a I16x8) ne(b I16x8) Mask16x8

ne returns a mask of the lanes where a is not equal to b.

fn (I16x8) lt #

@[direct_array_access]
fn (a I16x8) lt(b I16x8) Mask16x8

lt returns a mask of the lanes where a is less than b.

fn (I16x8) le #

@[direct_array_access]
fn (a I16x8) le(b I16x8) Mask16x8

le returns a mask of the lanes where a is less than or equal to b.

fn (I16x8) gt #

fn (a I16x8) gt(b I16x8) Mask16x8

gt returns a mask of the lanes where a is greater than b.

fn (I16x8) ge #

fn (a I16x8) ge(b I16x8) Mask16x8

ge returns a mask of the lanes where a is greater than or equal to b.

fn (I16x8) and #

@[direct_array_access]
fn (a I16x8) and(b I16x8) I16x8

and returns the bitwise AND of corresponding lanes.

fn (I16x8) or #

@[direct_array_access]
fn (a I16x8) or(b I16x8) I16x8

or returns the bitwise OR of corresponding lanes.

fn (I16x8) xor #

@[direct_array_access]
fn (a I16x8) xor(b I16x8) I16x8

xor returns the bitwise XOR of corresponding lanes.

fn (I16x8) not #

@[direct_array_access]
fn (a I16x8) not() I16x8

not returns the bitwise complement of each lane.

fn (I16x8) shl #

@[direct_array_access]
fn (a I16x8) shl(count u32) I16x8

shl shifts each lane left by count bits. A count of 16 or more shifts every bit out and returns zero lanes.

fn (I16x8) shr #

@[direct_array_access]
fn (a I16x8) shr(count u32) I16x8

shr shifts each lane right by count bits. The shift is arithmetic: it copies the sign bit, and a count of 16 or more fills each lane with its sign bit.

fn (I16x8) sum #

@[direct_array_access]
fn (v I16x8) sum() i16

sum adds the lanes, wrapping on overflow.

fn (I16x8) min_element #

@[direct_array_access]
fn (v I16x8) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (I16x8) min #

@[direct_array_access]
fn (v I16x8) min() i16

min returns the smallest lane value, the lane at index min_element().

fn (I16x8) max_element #

@[direct_array_access]
fn (v I16x8) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (I16x8) max #

@[direct_array_access]
fn (v I16x8) max() i16

max returns the largest lane value, the lane at index max_element().

fn (I16x8) dot #

fn (a I16x8) dot(b I16x8) i16

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (I16x8) to_u16x8 #

@[direct_array_access]
fn (v I16x8) to_u16x8() U16x8

to_u16x8 converts each lane to u16. It keeps the bits of each lane, so values wrap modulo 2^16.

struct I32x16 #

struct I32x16 {
mut:
	values [16]i32
}

I32x16 holds 16 i32 lanes (512 bits).

fn (I32x16) to_array #

fn (v I32x16) to_array() [16]i32

to_array returns the lanes in order.

fn (I32x16) [] #

@[direct_array_access]
fn (v I32x16) [] (i int) i32

[] returns lane i. It panics if i is out of range.

fn (I32x16) []= #

@[direct_array_access]
fn (mut v I32x16) []= (i int, value i32)

[]= sets lane i to value. It panics if i is out of range.

fn (I32x16) store #

fn (v I32x16) store(mut dst []i32) !

store writes all 16 lanes to the start of dst. It returns an error if dst has fewer than 16 elements.

fn (I32x16) store_part #

@[direct_array_access]
fn (v I32x16) store_part(mut dst []i32) !

store_part writes one lane for each element of dst, up to 16 elements. It returns an error if dst has more than 16 elements.

fn (I32x16) store_at #

@[direct_array_access]
fn (v I32x16) store_at(mut dst []i32, offset int)

store_at writes all 16 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 16 elements follow it.

fn (I32x16) + #

@[direct_array_access]
fn (a I32x16) + (b I32x16) I32x16
  • adds corresponding lanes, wrapping on overflow.

fn (I32x16) - #

@[direct_array_access]
fn (a I32x16) - (b I32x16) I32x16
  • subtracts corresponding lanes, wrapping on overflow.

fn (I32x16) * #

@[direct_array_access]
fn (a I32x16) * (b I32x16) I32x16
  • multiplies corresponding lanes, wrapping on overflow.

fn (I32x16) / #

@[direct_array_access]
fn (a I32x16) / (b I32x16) I32x16

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero. min_i32 / -1 wraps to min_i32.

fn (I32x16) add #

fn (a I32x16) add(b I32x16) I32x16

add returns a + b.

fn (I32x16) sub #

fn (a I32x16) sub(b I32x16) I32x16

sub returns a - b.

fn (I32x16) mul #

fn (a I32x16) mul(b I32x16) I32x16

mul returns a * b.

fn (I32x16) div #

fn (a I32x16) div(b I32x16) I32x16

div returns a / b.

fn (I32x16) neg #

@[direct_array_access]
fn (a I32x16) neg() I32x16

neg negates each lane, wrapping min_i32 to itself.

fn (I32x16) abs #

@[direct_array_access]
fn (a I32x16) abs() I32x16

abs returns the absolute value of each lane. min_i32 wraps to itself.

fn (I32x16) minimum #

@[direct_array_access]
fn (a I32x16) minimum(b I32x16) I32x16

minimum returns the smaller of each pair of lanes.

fn (I32x16) maximum #

@[direct_array_access]
fn (a I32x16) maximum(b I32x16) I32x16

maximum returns the larger of each pair of lanes.

fn (I32x16) eq #

@[direct_array_access]
fn (a I32x16) eq(b I32x16) Mask32x16

eq returns a mask of the lanes where a is equal to b.

fn (I32x16) ne #

@[direct_array_access]
fn (a I32x16) ne(b I32x16) Mask32x16

ne returns a mask of the lanes where a is not equal to b.

fn (I32x16) lt #

@[direct_array_access]
fn (a I32x16) lt(b I32x16) Mask32x16

lt returns a mask of the lanes where a is less than b.

fn (I32x16) le #

@[direct_array_access]
fn (a I32x16) le(b I32x16) Mask32x16

le returns a mask of the lanes where a is less than or equal to b.

fn (I32x16) gt #

fn (a I32x16) gt(b I32x16) Mask32x16

gt returns a mask of the lanes where a is greater than b.

fn (I32x16) ge #

fn (a I32x16) ge(b I32x16) Mask32x16

ge returns a mask of the lanes where a is greater than or equal to b.

fn (I32x16) and #

@[direct_array_access]
fn (a I32x16) and(b I32x16) I32x16

and returns the bitwise AND of corresponding lanes.

fn (I32x16) or #

@[direct_array_access]
fn (a I32x16) or(b I32x16) I32x16

or returns the bitwise OR of corresponding lanes.

fn (I32x16) xor #

@[direct_array_access]
fn (a I32x16) xor(b I32x16) I32x16

xor returns the bitwise XOR of corresponding lanes.

fn (I32x16) not #

@[direct_array_access]
fn (a I32x16) not() I32x16

not returns the bitwise complement of each lane.

fn (I32x16) shl #

@[direct_array_access]
fn (a I32x16) shl(count u32) I32x16

shl shifts each lane left by count bits. A count of 32 or more shifts every bit out and returns zero lanes.

fn (I32x16) shr #

@[direct_array_access]
fn (a I32x16) shr(count u32) I32x16

shr shifts each lane right by count bits. The shift is arithmetic: it copies the sign bit, and a count of 32 or more fills each lane with its sign bit.

fn (I32x16) sum #

@[direct_array_access]
fn (v I32x16) sum() i32

sum adds the lanes, wrapping on overflow.

fn (I32x16) min_element #

@[direct_array_access]
fn (v I32x16) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (I32x16) min #

@[direct_array_access]
fn (v I32x16) min() i32

min returns the smallest lane value, the lane at index min_element().

fn (I32x16) max_element #

@[direct_array_access]
fn (v I32x16) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (I32x16) max #

@[direct_array_access]
fn (v I32x16) max() i32

max returns the largest lane value, the lane at index max_element().

fn (I32x16) dot #

fn (a I32x16) dot(b I32x16) i32

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (I32x16) to_f32x16 #

@[direct_array_access]
fn (v I32x16) to_f32x16() F32x16

to_f32x16 converts each lane to f32. It rounds to the nearest f32 value.

fn (I32x16) to_u32x16 #

@[direct_array_access]
fn (v I32x16) to_u32x16() U32x16

to_u32x16 converts each lane to u32. It keeps the bits of each lane, so values wrap modulo 2^32.

struct I32x2 #

struct I32x2 {
mut:
	values [2]i32
}

I32x2 holds 2 i32 lanes (64 bits).

fn (I32x2) to_array #

fn (v I32x2) to_array() [2]i32

to_array returns the lanes in order.

fn (I32x2) [] #

@[direct_array_access]
fn (v I32x2) [] (i int) i32

[] returns lane i. It panics if i is out of range.

fn (I32x2) []= #

@[direct_array_access]
fn (mut v I32x2) []= (i int, value i32)

[]= sets lane i to value. It panics if i is out of range.

fn (I32x2) store #

fn (v I32x2) store(mut dst []i32) !

store writes all 2 lanes to the start of dst. It returns an error if dst has fewer than 2 elements.

fn (I32x2) store_part #

@[direct_array_access]
fn (v I32x2) store_part(mut dst []i32) !

store_part writes one lane for each element of dst, up to 2 elements. It returns an error if dst has more than 2 elements.

fn (I32x2) store_at #

@[direct_array_access]
fn (v I32x2) store_at(mut dst []i32, offset int)

store_at writes all 2 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 2 elements follow it.

fn (I32x2) + #

@[direct_array_access]
fn (a I32x2) + (b I32x2) I32x2
  • adds corresponding lanes, wrapping on overflow.

fn (I32x2) - #

@[direct_array_access]
fn (a I32x2) - (b I32x2) I32x2
  • subtracts corresponding lanes, wrapping on overflow.

fn (I32x2) * #

@[direct_array_access]
fn (a I32x2) * (b I32x2) I32x2
  • multiplies corresponding lanes, wrapping on overflow.

fn (I32x2) / #

@[direct_array_access]
fn (a I32x2) / (b I32x2) I32x2

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero. min_i32 / -1 wraps to min_i32.

fn (I32x2) add #

fn (a I32x2) add(b I32x2) I32x2

add returns a + b.

fn (I32x2) sub #

fn (a I32x2) sub(b I32x2) I32x2

sub returns a - b.

fn (I32x2) mul #

fn (a I32x2) mul(b I32x2) I32x2

mul returns a * b.

fn (I32x2) div #

fn (a I32x2) div(b I32x2) I32x2

div returns a / b.

fn (I32x2) neg #

@[direct_array_access]
fn (a I32x2) neg() I32x2

neg negates each lane, wrapping min_i32 to itself.

fn (I32x2) abs #

@[direct_array_access]
fn (a I32x2) abs() I32x2

abs returns the absolute value of each lane. min_i32 wraps to itself.

fn (I32x2) minimum #

@[direct_array_access]
fn (a I32x2) minimum(b I32x2) I32x2

minimum returns the smaller of each pair of lanes.

fn (I32x2) maximum #

@[direct_array_access]
fn (a I32x2) maximum(b I32x2) I32x2

maximum returns the larger of each pair of lanes.

fn (I32x2) eq #

@[direct_array_access]
fn (a I32x2) eq(b I32x2) Mask32x2

eq returns a mask of the lanes where a is equal to b.

fn (I32x2) ne #

@[direct_array_access]
fn (a I32x2) ne(b I32x2) Mask32x2

ne returns a mask of the lanes where a is not equal to b.

fn (I32x2) lt #

@[direct_array_access]
fn (a I32x2) lt(b I32x2) Mask32x2

lt returns a mask of the lanes where a is less than b.

fn (I32x2) le #

@[direct_array_access]
fn (a I32x2) le(b I32x2) Mask32x2

le returns a mask of the lanes where a is less than or equal to b.

fn (I32x2) gt #

fn (a I32x2) gt(b I32x2) Mask32x2

gt returns a mask of the lanes where a is greater than b.

fn (I32x2) ge #

fn (a I32x2) ge(b I32x2) Mask32x2

ge returns a mask of the lanes where a is greater than or equal to b.

fn (I32x2) and #

@[direct_array_access]
fn (a I32x2) and(b I32x2) I32x2

and returns the bitwise AND of corresponding lanes.

fn (I32x2) or #

@[direct_array_access]
fn (a I32x2) or(b I32x2) I32x2

or returns the bitwise OR of corresponding lanes.

fn (I32x2) xor #

@[direct_array_access]
fn (a I32x2) xor(b I32x2) I32x2

xor returns the bitwise XOR of corresponding lanes.

fn (I32x2) not #

@[direct_array_access]
fn (a I32x2) not() I32x2

not returns the bitwise complement of each lane.

fn (I32x2) shl #

@[direct_array_access]
fn (a I32x2) shl(count u32) I32x2

shl shifts each lane left by count bits. A count of 32 or more shifts every bit out and returns zero lanes.

fn (I32x2) shr #

@[direct_array_access]
fn (a I32x2) shr(count u32) I32x2

shr shifts each lane right by count bits. The shift is arithmetic: it copies the sign bit, and a count of 32 or more fills each lane with its sign bit.

fn (I32x2) sum #

@[direct_array_access]
fn (v I32x2) sum() i32

sum adds the lanes, wrapping on overflow.

fn (I32x2) min_element #

@[direct_array_access]
fn (v I32x2) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (I32x2) min #

@[direct_array_access]
fn (v I32x2) min() i32

min returns the smallest lane value, the lane at index min_element().

fn (I32x2) max_element #

@[direct_array_access]
fn (v I32x2) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (I32x2) max #

@[direct_array_access]
fn (v I32x2) max() i32

max returns the largest lane value, the lane at index max_element().

fn (I32x2) dot #

fn (a I32x2) dot(b I32x2) i32

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (I32x2) to_f32x2 #

@[direct_array_access]
fn (v I32x2) to_f32x2() F32x2

to_f32x2 converts each lane to f32. It rounds to the nearest f32 value.

fn (I32x2) to_u32x2 #

@[direct_array_access]
fn (v I32x2) to_u32x2() U32x2

to_u32x2 converts each lane to u32. It keeps the bits of each lane, so values wrap modulo 2^32.

struct I32x4 #

struct I32x4 {
mut:
	values [4]i32
}

I32x4 holds 4 i32 lanes (128 bits).

fn (I32x4) to_array #

fn (v I32x4) to_array() [4]i32

to_array returns the lanes in order.

fn (I32x4) [] #

@[direct_array_access]
fn (v I32x4) [] (i int) i32

[] returns lane i. It panics if i is out of range.

fn (I32x4) []= #

@[direct_array_access]
fn (mut v I32x4) []= (i int, value i32)

[]= sets lane i to value. It panics if i is out of range.

fn (I32x4) store #

fn (v I32x4) store(mut dst []i32) !

store writes all 4 lanes to the start of dst. It returns an error if dst has fewer than 4 elements.

fn (I32x4) store_part #

@[direct_array_access]
fn (v I32x4) store_part(mut dst []i32) !

store_part writes one lane for each element of dst, up to 4 elements. It returns an error if dst has more than 4 elements.

fn (I32x4) store_at #

@[direct_array_access]
fn (v I32x4) store_at(mut dst []i32, offset int)

store_at writes all 4 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 4 elements follow it.

fn (I32x4) + #

@[direct_array_access]
fn (a I32x4) + (b I32x4) I32x4
  • adds corresponding lanes, wrapping on overflow.

fn (I32x4) - #

@[direct_array_access]
fn (a I32x4) - (b I32x4) I32x4
  • subtracts corresponding lanes, wrapping on overflow.

fn (I32x4) * #

@[direct_array_access]
fn (a I32x4) * (b I32x4) I32x4
  • multiplies corresponding lanes, wrapping on overflow.

fn (I32x4) / #

@[direct_array_access]
fn (a I32x4) / (b I32x4) I32x4

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero. min_i32 / -1 wraps to min_i32.

fn (I32x4) add #

fn (a I32x4) add(b I32x4) I32x4

add returns a + b.

fn (I32x4) sub #

fn (a I32x4) sub(b I32x4) I32x4

sub returns a - b.

fn (I32x4) mul #

fn (a I32x4) mul(b I32x4) I32x4

mul returns a * b.

fn (I32x4) div #

fn (a I32x4) div(b I32x4) I32x4

div returns a / b.

fn (I32x4) neg #

@[direct_array_access]
fn (a I32x4) neg() I32x4

neg negates each lane, wrapping min_i32 to itself.

fn (I32x4) abs #

@[direct_array_access]
fn (a I32x4) abs() I32x4

abs returns the absolute value of each lane. min_i32 wraps to itself.

fn (I32x4) minimum #

@[direct_array_access]
fn (a I32x4) minimum(b I32x4) I32x4

minimum returns the smaller of each pair of lanes.

fn (I32x4) maximum #

@[direct_array_access]
fn (a I32x4) maximum(b I32x4) I32x4

maximum returns the larger of each pair of lanes.

fn (I32x4) eq #

@[direct_array_access]
fn (a I32x4) eq(b I32x4) Mask32x4

eq returns a mask of the lanes where a is equal to b.

fn (I32x4) ne #

@[direct_array_access]
fn (a I32x4) ne(b I32x4) Mask32x4

ne returns a mask of the lanes where a is not equal to b.

fn (I32x4) lt #

@[direct_array_access]
fn (a I32x4) lt(b I32x4) Mask32x4

lt returns a mask of the lanes where a is less than b.

fn (I32x4) le #

@[direct_array_access]
fn (a I32x4) le(b I32x4) Mask32x4

le returns a mask of the lanes where a is less than or equal to b.

fn (I32x4) gt #

fn (a I32x4) gt(b I32x4) Mask32x4

gt returns a mask of the lanes where a is greater than b.

fn (I32x4) ge #

fn (a I32x4) ge(b I32x4) Mask32x4

ge returns a mask of the lanes where a is greater than or equal to b.

fn (I32x4) and #

@[direct_array_access]
fn (a I32x4) and(b I32x4) I32x4

and returns the bitwise AND of corresponding lanes.

fn (I32x4) or #

@[direct_array_access]
fn (a I32x4) or(b I32x4) I32x4

or returns the bitwise OR of corresponding lanes.

fn (I32x4) xor #

@[direct_array_access]
fn (a I32x4) xor(b I32x4) I32x4

xor returns the bitwise XOR of corresponding lanes.

fn (I32x4) not #

@[direct_array_access]
fn (a I32x4) not() I32x4

not returns the bitwise complement of each lane.

fn (I32x4) shl #

@[direct_array_access]
fn (a I32x4) shl(count u32) I32x4

shl shifts each lane left by count bits. A count of 32 or more shifts every bit out and returns zero lanes.

fn (I32x4) shr #

@[direct_array_access]
fn (a I32x4) shr(count u32) I32x4

shr shifts each lane right by count bits. The shift is arithmetic: it copies the sign bit, and a count of 32 or more fills each lane with its sign bit.

fn (I32x4) sum #

@[direct_array_access]
fn (v I32x4) sum() i32

sum adds the lanes, wrapping on overflow.

fn (I32x4) min_element #

@[direct_array_access]
fn (v I32x4) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (I32x4) min #

@[direct_array_access]
fn (v I32x4) min() i32

min returns the smallest lane value, the lane at index min_element().

fn (I32x4) max_element #

@[direct_array_access]
fn (v I32x4) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (I32x4) max #

@[direct_array_access]
fn (v I32x4) max() i32

max returns the largest lane value, the lane at index max_element().

fn (I32x4) dot #

fn (a I32x4) dot(b I32x4) i32

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (I32x4) to_f32x4 #

@[direct_array_access]
fn (v I32x4) to_f32x4() F32x4

to_f32x4 converts each lane to f32. It rounds to the nearest f32 value.

fn (I32x4) to_u32x4 #

@[direct_array_access]
fn (v I32x4) to_u32x4() U32x4

to_u32x4 converts each lane to u32. It keeps the bits of each lane, so values wrap modulo 2^32.

struct I32x8 #

struct I32x8 {
mut:
	values [8]i32
}

I32x8 holds 8 i32 lanes (256 bits).

fn (I32x8) to_array #

fn (v I32x8) to_array() [8]i32

to_array returns the lanes in order.

fn (I32x8) [] #

@[direct_array_access]
fn (v I32x8) [] (i int) i32

[] returns lane i. It panics if i is out of range.

fn (I32x8) []= #

@[direct_array_access]
fn (mut v I32x8) []= (i int, value i32)

[]= sets lane i to value. It panics if i is out of range.

fn (I32x8) store #

fn (v I32x8) store(mut dst []i32) !

store writes all 8 lanes to the start of dst. It returns an error if dst has fewer than 8 elements.

fn (I32x8) store_part #

@[direct_array_access]
fn (v I32x8) store_part(mut dst []i32) !

store_part writes one lane for each element of dst, up to 8 elements. It returns an error if dst has more than 8 elements.

fn (I32x8) store_at #

@[direct_array_access]
fn (v I32x8) store_at(mut dst []i32, offset int)

store_at writes all 8 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 8 elements follow it.

fn (I32x8) + #

@[direct_array_access]
fn (a I32x8) + (b I32x8) I32x8
  • adds corresponding lanes, wrapping on overflow.

fn (I32x8) - #

@[direct_array_access]
fn (a I32x8) - (b I32x8) I32x8
  • subtracts corresponding lanes, wrapping on overflow.

fn (I32x8) * #

@[direct_array_access]
fn (a I32x8) * (b I32x8) I32x8
  • multiplies corresponding lanes, wrapping on overflow.

fn (I32x8) / #

@[direct_array_access]
fn (a I32x8) / (b I32x8) I32x8

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero. min_i32 / -1 wraps to min_i32.

fn (I32x8) add #

fn (a I32x8) add(b I32x8) I32x8

add returns a + b.

fn (I32x8) sub #

fn (a I32x8) sub(b I32x8) I32x8

sub returns a - b.

fn (I32x8) mul #

fn (a I32x8) mul(b I32x8) I32x8

mul returns a * b.

fn (I32x8) div #

fn (a I32x8) div(b I32x8) I32x8

div returns a / b.

fn (I32x8) neg #

@[direct_array_access]
fn (a I32x8) neg() I32x8

neg negates each lane, wrapping min_i32 to itself.

fn (I32x8) abs #

@[direct_array_access]
fn (a I32x8) abs() I32x8

abs returns the absolute value of each lane. min_i32 wraps to itself.

fn (I32x8) minimum #

@[direct_array_access]
fn (a I32x8) minimum(b I32x8) I32x8

minimum returns the smaller of each pair of lanes.

fn (I32x8) maximum #

@[direct_array_access]
fn (a I32x8) maximum(b I32x8) I32x8

maximum returns the larger of each pair of lanes.

fn (I32x8) eq #

@[direct_array_access]
fn (a I32x8) eq(b I32x8) Mask32x8

eq returns a mask of the lanes where a is equal to b.

fn (I32x8) ne #

@[direct_array_access]
fn (a I32x8) ne(b I32x8) Mask32x8

ne returns a mask of the lanes where a is not equal to b.

fn (I32x8) lt #

@[direct_array_access]
fn (a I32x8) lt(b I32x8) Mask32x8

lt returns a mask of the lanes where a is less than b.

fn (I32x8) le #

@[direct_array_access]
fn (a I32x8) le(b I32x8) Mask32x8

le returns a mask of the lanes where a is less than or equal to b.

fn (I32x8) gt #

fn (a I32x8) gt(b I32x8) Mask32x8

gt returns a mask of the lanes where a is greater than b.

fn (I32x8) ge #

fn (a I32x8) ge(b I32x8) Mask32x8

ge returns a mask of the lanes where a is greater than or equal to b.

fn (I32x8) and #

@[direct_array_access]
fn (a I32x8) and(b I32x8) I32x8

and returns the bitwise AND of corresponding lanes.

fn (I32x8) or #

@[direct_array_access]
fn (a I32x8) or(b I32x8) I32x8

or returns the bitwise OR of corresponding lanes.

fn (I32x8) xor #

@[direct_array_access]
fn (a I32x8) xor(b I32x8) I32x8

xor returns the bitwise XOR of corresponding lanes.

fn (I32x8) not #

@[direct_array_access]
fn (a I32x8) not() I32x8

not returns the bitwise complement of each lane.

fn (I32x8) shl #

@[direct_array_access]
fn (a I32x8) shl(count u32) I32x8

shl shifts each lane left by count bits. A count of 32 or more shifts every bit out and returns zero lanes.

fn (I32x8) shr #

@[direct_array_access]
fn (a I32x8) shr(count u32) I32x8

shr shifts each lane right by count bits. The shift is arithmetic: it copies the sign bit, and a count of 32 or more fills each lane with its sign bit.

fn (I32x8) sum #

@[direct_array_access]
fn (v I32x8) sum() i32

sum adds the lanes, wrapping on overflow.

fn (I32x8) min_element #

@[direct_array_access]
fn (v I32x8) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (I32x8) min #

@[direct_array_access]
fn (v I32x8) min() i32

min returns the smallest lane value, the lane at index min_element().

fn (I32x8) max_element #

@[direct_array_access]
fn (v I32x8) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (I32x8) max #

@[direct_array_access]
fn (v I32x8) max() i32

max returns the largest lane value, the lane at index max_element().

fn (I32x8) dot #

fn (a I32x8) dot(b I32x8) i32

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (I32x8) to_f32x8 #

@[direct_array_access]
fn (v I32x8) to_f32x8() F32x8

to_f32x8 converts each lane to f32. It rounds to the nearest f32 value.

fn (I32x8) to_u32x8 #

@[direct_array_access]
fn (v I32x8) to_u32x8() U32x8

to_u32x8 converts each lane to u32. It keeps the bits of each lane, so values wrap modulo 2^32.

struct I64x2 #

struct I64x2 {
mut:
	values [2]i64
}

I64x2 holds 2 i64 lanes (128 bits).

fn (I64x2) to_array #

fn (v I64x2) to_array() [2]i64

to_array returns the lanes in order.

fn (I64x2) [] #

@[direct_array_access]
fn (v I64x2) [] (i int) i64

[] returns lane i. It panics if i is out of range.

fn (I64x2) []= #

@[direct_array_access]
fn (mut v I64x2) []= (i int, value i64)

[]= sets lane i to value. It panics if i is out of range.

fn (I64x2) store #

fn (v I64x2) store(mut dst []i64) !

store writes all 2 lanes to the start of dst. It returns an error if dst has fewer than 2 elements.

fn (I64x2) store_part #

@[direct_array_access]
fn (v I64x2) store_part(mut dst []i64) !

store_part writes one lane for each element of dst, up to 2 elements. It returns an error if dst has more than 2 elements.

fn (I64x2) store_at #

@[direct_array_access]
fn (v I64x2) store_at(mut dst []i64, offset int)

store_at writes all 2 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 2 elements follow it.

fn (I64x2) + #

@[direct_array_access]
fn (a I64x2) + (b I64x2) I64x2
  • adds corresponding lanes, wrapping on overflow.

fn (I64x2) - #

@[direct_array_access]
fn (a I64x2) - (b I64x2) I64x2
  • subtracts corresponding lanes, wrapping on overflow.

fn (I64x2) * #

@[direct_array_access]
fn (a I64x2) * (b I64x2) I64x2
  • multiplies corresponding lanes, wrapping on overflow.

fn (I64x2) / #

@[direct_array_access]
fn (a I64x2) / (b I64x2) I64x2

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero. min_i64 / -1 wraps to min_i64.

fn (I64x2) add #

fn (a I64x2) add(b I64x2) I64x2

add returns a + b.

fn (I64x2) sub #

fn (a I64x2) sub(b I64x2) I64x2

sub returns a - b.

fn (I64x2) mul #

fn (a I64x2) mul(b I64x2) I64x2

mul returns a * b.

fn (I64x2) div #

fn (a I64x2) div(b I64x2) I64x2

div returns a / b.

fn (I64x2) neg #

@[direct_array_access]
fn (a I64x2) neg() I64x2

neg negates each lane, wrapping min_i64 to itself.

fn (I64x2) abs #

@[direct_array_access]
fn (a I64x2) abs() I64x2

abs returns the absolute value of each lane. min_i64 wraps to itself.

fn (I64x2) minimum #

@[direct_array_access]
fn (a I64x2) minimum(b I64x2) I64x2

minimum returns the smaller of each pair of lanes.

fn (I64x2) maximum #

@[direct_array_access]
fn (a I64x2) maximum(b I64x2) I64x2

maximum returns the larger of each pair of lanes.

fn (I64x2) eq #

@[direct_array_access]
fn (a I64x2) eq(b I64x2) Mask64x2

eq returns a mask of the lanes where a is equal to b.

fn (I64x2) ne #

@[direct_array_access]
fn (a I64x2) ne(b I64x2) Mask64x2

ne returns a mask of the lanes where a is not equal to b.

fn (I64x2) lt #

@[direct_array_access]
fn (a I64x2) lt(b I64x2) Mask64x2

lt returns a mask of the lanes where a is less than b.

fn (I64x2) le #

@[direct_array_access]
fn (a I64x2) le(b I64x2) Mask64x2

le returns a mask of the lanes where a is less than or equal to b.

fn (I64x2) gt #

fn (a I64x2) gt(b I64x2) Mask64x2

gt returns a mask of the lanes where a is greater than b.

fn (I64x2) ge #

fn (a I64x2) ge(b I64x2) Mask64x2

ge returns a mask of the lanes where a is greater than or equal to b.

fn (I64x2) and #

@[direct_array_access]
fn (a I64x2) and(b I64x2) I64x2

and returns the bitwise AND of corresponding lanes.

fn (I64x2) or #

@[direct_array_access]
fn (a I64x2) or(b I64x2) I64x2

or returns the bitwise OR of corresponding lanes.

fn (I64x2) xor #

@[direct_array_access]
fn (a I64x2) xor(b I64x2) I64x2

xor returns the bitwise XOR of corresponding lanes.

fn (I64x2) not #

@[direct_array_access]
fn (a I64x2) not() I64x2

not returns the bitwise complement of each lane.

fn (I64x2) shl #

@[direct_array_access]
fn (a I64x2) shl(count u32) I64x2

shl shifts each lane left by count bits. A count of 64 or more shifts every bit out and returns zero lanes.

fn (I64x2) shr #

@[direct_array_access]
fn (a I64x2) shr(count u32) I64x2

shr shifts each lane right by count bits. The shift is arithmetic: it copies the sign bit, and a count of 64 or more fills each lane with its sign bit.

fn (I64x2) sum #

@[direct_array_access]
fn (v I64x2) sum() i64

sum adds the lanes, wrapping on overflow.

fn (I64x2) min_element #

@[direct_array_access]
fn (v I64x2) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (I64x2) min #

@[direct_array_access]
fn (v I64x2) min() i64

min returns the smallest lane value, the lane at index min_element().

fn (I64x2) max_element #

@[direct_array_access]
fn (v I64x2) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (I64x2) max #

@[direct_array_access]
fn (v I64x2) max() i64

max returns the largest lane value, the lane at index max_element().

fn (I64x2) dot #

fn (a I64x2) dot(b I64x2) i64

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (I64x2) to_f64x2 #

@[direct_array_access]
fn (v I64x2) to_f64x2() F64x2

to_f64x2 converts each lane to f64. It rounds to the nearest f64 value.

fn (I64x2) to_u64x2 #

@[direct_array_access]
fn (v I64x2) to_u64x2() U64x2

to_u64x2 converts each lane to u64. It keeps the bits of each lane, so values wrap modulo 2^64.

struct I64x4 #

struct I64x4 {
mut:
	values [4]i64
}

I64x4 holds 4 i64 lanes (256 bits).

fn (I64x4) to_array #

fn (v I64x4) to_array() [4]i64

to_array returns the lanes in order.

fn (I64x4) [] #

@[direct_array_access]
fn (v I64x4) [] (i int) i64

[] returns lane i. It panics if i is out of range.

fn (I64x4) []= #

@[direct_array_access]
fn (mut v I64x4) []= (i int, value i64)

[]= sets lane i to value. It panics if i is out of range.

fn (I64x4) store #

fn (v I64x4) store(mut dst []i64) !

store writes all 4 lanes to the start of dst. It returns an error if dst has fewer than 4 elements.

fn (I64x4) store_part #

@[direct_array_access]
fn (v I64x4) store_part(mut dst []i64) !

store_part writes one lane for each element of dst, up to 4 elements. It returns an error if dst has more than 4 elements.

fn (I64x4) store_at #

@[direct_array_access]
fn (v I64x4) store_at(mut dst []i64, offset int)

store_at writes all 4 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 4 elements follow it.

fn (I64x4) + #

@[direct_array_access]
fn (a I64x4) + (b I64x4) I64x4
  • adds corresponding lanes, wrapping on overflow.

fn (I64x4) - #

@[direct_array_access]
fn (a I64x4) - (b I64x4) I64x4
  • subtracts corresponding lanes, wrapping on overflow.

fn (I64x4) * #

@[direct_array_access]
fn (a I64x4) * (b I64x4) I64x4
  • multiplies corresponding lanes, wrapping on overflow.

fn (I64x4) / #

@[direct_array_access]
fn (a I64x4) / (b I64x4) I64x4

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero. min_i64 / -1 wraps to min_i64.

fn (I64x4) add #

fn (a I64x4) add(b I64x4) I64x4

add returns a + b.

fn (I64x4) sub #

fn (a I64x4) sub(b I64x4) I64x4

sub returns a - b.

fn (I64x4) mul #

fn (a I64x4) mul(b I64x4) I64x4

mul returns a * b.

fn (I64x4) div #

fn (a I64x4) div(b I64x4) I64x4

div returns a / b.

fn (I64x4) neg #

@[direct_array_access]
fn (a I64x4) neg() I64x4

neg negates each lane, wrapping min_i64 to itself.

fn (I64x4) abs #

@[direct_array_access]
fn (a I64x4) abs() I64x4

abs returns the absolute value of each lane. min_i64 wraps to itself.

fn (I64x4) minimum #

@[direct_array_access]
fn (a I64x4) minimum(b I64x4) I64x4

minimum returns the smaller of each pair of lanes.

fn (I64x4) maximum #

@[direct_array_access]
fn (a I64x4) maximum(b I64x4) I64x4

maximum returns the larger of each pair of lanes.

fn (I64x4) eq #

@[direct_array_access]
fn (a I64x4) eq(b I64x4) Mask64x4

eq returns a mask of the lanes where a is equal to b.

fn (I64x4) ne #

@[direct_array_access]
fn (a I64x4) ne(b I64x4) Mask64x4

ne returns a mask of the lanes where a is not equal to b.

fn (I64x4) lt #

@[direct_array_access]
fn (a I64x4) lt(b I64x4) Mask64x4

lt returns a mask of the lanes where a is less than b.

fn (I64x4) le #

@[direct_array_access]
fn (a I64x4) le(b I64x4) Mask64x4

le returns a mask of the lanes where a is less than or equal to b.

fn (I64x4) gt #

fn (a I64x4) gt(b I64x4) Mask64x4

gt returns a mask of the lanes where a is greater than b.

fn (I64x4) ge #

fn (a I64x4) ge(b I64x4) Mask64x4

ge returns a mask of the lanes where a is greater than or equal to b.

fn (I64x4) and #

@[direct_array_access]
fn (a I64x4) and(b I64x4) I64x4

and returns the bitwise AND of corresponding lanes.

fn (I64x4) or #

@[direct_array_access]
fn (a I64x4) or(b I64x4) I64x4

or returns the bitwise OR of corresponding lanes.

fn (I64x4) xor #

@[direct_array_access]
fn (a I64x4) xor(b I64x4) I64x4

xor returns the bitwise XOR of corresponding lanes.

fn (I64x4) not #

@[direct_array_access]
fn (a I64x4) not() I64x4

not returns the bitwise complement of each lane.

fn (I64x4) shl #

@[direct_array_access]
fn (a I64x4) shl(count u32) I64x4

shl shifts each lane left by count bits. A count of 64 or more shifts every bit out and returns zero lanes.

fn (I64x4) shr #

@[direct_array_access]
fn (a I64x4) shr(count u32) I64x4

shr shifts each lane right by count bits. The shift is arithmetic: it copies the sign bit, and a count of 64 or more fills each lane with its sign bit.

fn (I64x4) sum #

@[direct_array_access]
fn (v I64x4) sum() i64

sum adds the lanes, wrapping on overflow.

fn (I64x4) min_element #

@[direct_array_access]
fn (v I64x4) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (I64x4) min #

@[direct_array_access]
fn (v I64x4) min() i64

min returns the smallest lane value, the lane at index min_element().

fn (I64x4) max_element #

@[direct_array_access]
fn (v I64x4) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (I64x4) max #

@[direct_array_access]
fn (v I64x4) max() i64

max returns the largest lane value, the lane at index max_element().

fn (I64x4) dot #

fn (a I64x4) dot(b I64x4) i64

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (I64x4) to_f64x4 #

@[direct_array_access]
fn (v I64x4) to_f64x4() F64x4

to_f64x4 converts each lane to f64. It rounds to the nearest f64 value.

fn (I64x4) to_u64x4 #

@[direct_array_access]
fn (v I64x4) to_u64x4() U64x4

to_u64x4 converts each lane to u64. It keeps the bits of each lane, so values wrap modulo 2^64.

struct I64x8 #

struct I64x8 {
mut:
	values [8]i64
}

I64x8 holds 8 i64 lanes (512 bits).

fn (I64x8) to_array #

fn (v I64x8) to_array() [8]i64

to_array returns the lanes in order.

fn (I64x8) [] #

@[direct_array_access]
fn (v I64x8) [] (i int) i64

[] returns lane i. It panics if i is out of range.

fn (I64x8) []= #

@[direct_array_access]
fn (mut v I64x8) []= (i int, value i64)

[]= sets lane i to value. It panics if i is out of range.

fn (I64x8) store #

fn (v I64x8) store(mut dst []i64) !

store writes all 8 lanes to the start of dst. It returns an error if dst has fewer than 8 elements.

fn (I64x8) store_part #

@[direct_array_access]
fn (v I64x8) store_part(mut dst []i64) !

store_part writes one lane for each element of dst, up to 8 elements. It returns an error if dst has more than 8 elements.

fn (I64x8) store_at #

@[direct_array_access]
fn (v I64x8) store_at(mut dst []i64, offset int)

store_at writes all 8 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 8 elements follow it.

fn (I64x8) + #

@[direct_array_access]
fn (a I64x8) + (b I64x8) I64x8
  • adds corresponding lanes, wrapping on overflow.

fn (I64x8) - #

@[direct_array_access]
fn (a I64x8) - (b I64x8) I64x8
  • subtracts corresponding lanes, wrapping on overflow.

fn (I64x8) * #

@[direct_array_access]
fn (a I64x8) * (b I64x8) I64x8
  • multiplies corresponding lanes, wrapping on overflow.

fn (I64x8) / #

@[direct_array_access]
fn (a I64x8) / (b I64x8) I64x8

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero. min_i64 / -1 wraps to min_i64.

fn (I64x8) add #

fn (a I64x8) add(b I64x8) I64x8

add returns a + b.

fn (I64x8) sub #

fn (a I64x8) sub(b I64x8) I64x8

sub returns a - b.

fn (I64x8) mul #

fn (a I64x8) mul(b I64x8) I64x8

mul returns a * b.

fn (I64x8) div #

fn (a I64x8) div(b I64x8) I64x8

div returns a / b.

fn (I64x8) neg #

@[direct_array_access]
fn (a I64x8) neg() I64x8

neg negates each lane, wrapping min_i64 to itself.

fn (I64x8) abs #

@[direct_array_access]
fn (a I64x8) abs() I64x8

abs returns the absolute value of each lane. min_i64 wraps to itself.

fn (I64x8) minimum #

@[direct_array_access]
fn (a I64x8) minimum(b I64x8) I64x8

minimum returns the smaller of each pair of lanes.

fn (I64x8) maximum #

@[direct_array_access]
fn (a I64x8) maximum(b I64x8) I64x8

maximum returns the larger of each pair of lanes.

fn (I64x8) eq #

@[direct_array_access]
fn (a I64x8) eq(b I64x8) Mask64x8

eq returns a mask of the lanes where a is equal to b.

fn (I64x8) ne #

@[direct_array_access]
fn (a I64x8) ne(b I64x8) Mask64x8

ne returns a mask of the lanes where a is not equal to b.

fn (I64x8) lt #

@[direct_array_access]
fn (a I64x8) lt(b I64x8) Mask64x8

lt returns a mask of the lanes where a is less than b.

fn (I64x8) le #

@[direct_array_access]
fn (a I64x8) le(b I64x8) Mask64x8

le returns a mask of the lanes where a is less than or equal to b.

fn (I64x8) gt #

fn (a I64x8) gt(b I64x8) Mask64x8

gt returns a mask of the lanes where a is greater than b.

fn (I64x8) ge #

fn (a I64x8) ge(b I64x8) Mask64x8

ge returns a mask of the lanes where a is greater than or equal to b.

fn (I64x8) and #

@[direct_array_access]
fn (a I64x8) and(b I64x8) I64x8

and returns the bitwise AND of corresponding lanes.

fn (I64x8) or #

@[direct_array_access]
fn (a I64x8) or(b I64x8) I64x8

or returns the bitwise OR of corresponding lanes.

fn (I64x8) xor #

@[direct_array_access]
fn (a I64x8) xor(b I64x8) I64x8

xor returns the bitwise XOR of corresponding lanes.

fn (I64x8) not #

@[direct_array_access]
fn (a I64x8) not() I64x8

not returns the bitwise complement of each lane.

fn (I64x8) shl #

@[direct_array_access]
fn (a I64x8) shl(count u32) I64x8

shl shifts each lane left by count bits. A count of 64 or more shifts every bit out and returns zero lanes.

fn (I64x8) shr #

@[direct_array_access]
fn (a I64x8) shr(count u32) I64x8

shr shifts each lane right by count bits. The shift is arithmetic: it copies the sign bit, and a count of 64 or more fills each lane with its sign bit.

fn (I64x8) sum #

@[direct_array_access]
fn (v I64x8) sum() i64

sum adds the lanes, wrapping on overflow.

fn (I64x8) min_element #

@[direct_array_access]
fn (v I64x8) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (I64x8) min #

@[direct_array_access]
fn (v I64x8) min() i64

min returns the smallest lane value, the lane at index min_element().

fn (I64x8) max_element #

@[direct_array_access]
fn (v I64x8) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (I64x8) max #

@[direct_array_access]
fn (v I64x8) max() i64

max returns the largest lane value, the lane at index max_element().

fn (I64x8) dot #

fn (a I64x8) dot(b I64x8) i64

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (I64x8) to_f64x8 #

@[direct_array_access]
fn (v I64x8) to_f64x8() F64x8

to_f64x8 converts each lane to f64. It rounds to the nearest f64 value.

fn (I64x8) to_u64x8 #

@[direct_array_access]
fn (v I64x8) to_u64x8() U64x8

to_u64x8 converts each lane to u64. It keeps the bits of each lane, so values wrap modulo 2^64.

struct I8x16 #

struct I8x16 {
mut:
	values [16]i8
}

I8x16 holds 16 i8 lanes (128 bits).

fn (I8x16) to_array #

fn (v I8x16) to_array() [16]i8

to_array returns the lanes in order.

fn (I8x16) [] #

@[direct_array_access]
fn (v I8x16) [] (i int) i8

[] returns lane i. It panics if i is out of range.

fn (I8x16) []= #

@[direct_array_access]
fn (mut v I8x16) []= (i int, value i8)

[]= sets lane i to value. It panics if i is out of range.

fn (I8x16) store #

fn (v I8x16) store(mut dst []i8) !

store writes all 16 lanes to the start of dst. It returns an error if dst has fewer than 16 elements.

fn (I8x16) store_part #

@[direct_array_access]
fn (v I8x16) store_part(mut dst []i8) !

store_part writes one lane for each element of dst, up to 16 elements. It returns an error if dst has more than 16 elements.

fn (I8x16) store_at #

@[direct_array_access]
fn (v I8x16) store_at(mut dst []i8, offset int)

store_at writes all 16 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 16 elements follow it.

fn (I8x16) + #

@[direct_array_access]
fn (a I8x16) + (b I8x16) I8x16
  • adds corresponding lanes, wrapping on overflow.

fn (I8x16) - #

@[direct_array_access]
fn (a I8x16) - (b I8x16) I8x16
  • subtracts corresponding lanes, wrapping on overflow.

fn (I8x16) * #

@[direct_array_access]
fn (a I8x16) * (b I8x16) I8x16
  • multiplies corresponding lanes, wrapping on overflow.

fn (I8x16) / #

@[direct_array_access]
fn (a I8x16) / (b I8x16) I8x16

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero. min_i8 / -1 wraps to min_i8.

fn (I8x16) add #

fn (a I8x16) add(b I8x16) I8x16

add returns a + b.

fn (I8x16) sub #

fn (a I8x16) sub(b I8x16) I8x16

sub returns a - b.

fn (I8x16) mul #

fn (a I8x16) mul(b I8x16) I8x16

mul returns a * b.

fn (I8x16) div #

fn (a I8x16) div(b I8x16) I8x16

div returns a / b.

fn (I8x16) neg #

@[direct_array_access]
fn (a I8x16) neg() I8x16

neg negates each lane, wrapping min_i8 to itself.

fn (I8x16) abs #

@[direct_array_access]
fn (a I8x16) abs() I8x16

abs returns the absolute value of each lane. min_i8 wraps to itself.

fn (I8x16) minimum #

@[direct_array_access]
fn (a I8x16) minimum(b I8x16) I8x16

minimum returns the smaller of each pair of lanes.

fn (I8x16) maximum #

@[direct_array_access]
fn (a I8x16) maximum(b I8x16) I8x16

maximum returns the larger of each pair of lanes.

fn (I8x16) eq #

@[direct_array_access]
fn (a I8x16) eq(b I8x16) Mask8x16

eq returns a mask of the lanes where a is equal to b.

fn (I8x16) ne #

@[direct_array_access]
fn (a I8x16) ne(b I8x16) Mask8x16

ne returns a mask of the lanes where a is not equal to b.

fn (I8x16) lt #

@[direct_array_access]
fn (a I8x16) lt(b I8x16) Mask8x16

lt returns a mask of the lanes where a is less than b.

fn (I8x16) le #

@[direct_array_access]
fn (a I8x16) le(b I8x16) Mask8x16

le returns a mask of the lanes where a is less than or equal to b.

fn (I8x16) gt #

fn (a I8x16) gt(b I8x16) Mask8x16

gt returns a mask of the lanes where a is greater than b.

fn (I8x16) ge #

fn (a I8x16) ge(b I8x16) Mask8x16

ge returns a mask of the lanes where a is greater than or equal to b.

fn (I8x16) and #

@[direct_array_access]
fn (a I8x16) and(b I8x16) I8x16

and returns the bitwise AND of corresponding lanes.

fn (I8x16) or #

@[direct_array_access]
fn (a I8x16) or(b I8x16) I8x16

or returns the bitwise OR of corresponding lanes.

fn (I8x16) xor #

@[direct_array_access]
fn (a I8x16) xor(b I8x16) I8x16

xor returns the bitwise XOR of corresponding lanes.

fn (I8x16) not #

@[direct_array_access]
fn (a I8x16) not() I8x16

not returns the bitwise complement of each lane.

fn (I8x16) shl #

@[direct_array_access]
fn (a I8x16) shl(count u32) I8x16

shl shifts each lane left by count bits. A count of 8 or more shifts every bit out and returns zero lanes.

fn (I8x16) shr #

@[direct_array_access]
fn (a I8x16) shr(count u32) I8x16

shr shifts each lane right by count bits. The shift is arithmetic: it copies the sign bit, and a count of 8 or more fills each lane with its sign bit.

fn (I8x16) sum #

@[direct_array_access]
fn (v I8x16) sum() i8

sum adds the lanes, wrapping on overflow.

fn (I8x16) min_element #

@[direct_array_access]
fn (v I8x16) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (I8x16) min #

@[direct_array_access]
fn (v I8x16) min() i8

min returns the smallest lane value, the lane at index min_element().

fn (I8x16) max_element #

@[direct_array_access]
fn (v I8x16) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (I8x16) max #

@[direct_array_access]
fn (v I8x16) max() i8

max returns the largest lane value, the lane at index max_element().

fn (I8x16) dot #

fn (a I8x16) dot(b I8x16) i8

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (I8x16) to_u8x16 #

@[direct_array_access]
fn (v I8x16) to_u8x16() U8x16

to_u8x16 converts each lane to u8. It keeps the bits of each lane, so values wrap modulo 2^8.

struct I8x32 #

struct I8x32 {
mut:
	values [32]i8
}

I8x32 holds 32 i8 lanes (256 bits).

fn (I8x32) to_array #

fn (v I8x32) to_array() [32]i8

to_array returns the lanes in order.

fn (I8x32) [] #

@[direct_array_access]
fn (v I8x32) [] (i int) i8

[] returns lane i. It panics if i is out of range.

fn (I8x32) []= #

@[direct_array_access]
fn (mut v I8x32) []= (i int, value i8)

[]= sets lane i to value. It panics if i is out of range.

fn (I8x32) store #

fn (v I8x32) store(mut dst []i8) !

store writes all 32 lanes to the start of dst. It returns an error if dst has fewer than 32 elements.

fn (I8x32) store_part #

@[direct_array_access]
fn (v I8x32) store_part(mut dst []i8) !

store_part writes one lane for each element of dst, up to 32 elements. It returns an error if dst has more than 32 elements.

fn (I8x32) store_at #

@[direct_array_access]
fn (v I8x32) store_at(mut dst []i8, offset int)

store_at writes all 32 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 32 elements follow it.

fn (I8x32) + #

@[direct_array_access]
fn (a I8x32) + (b I8x32) I8x32
  • adds corresponding lanes, wrapping on overflow.

fn (I8x32) - #

@[direct_array_access]
fn (a I8x32) - (b I8x32) I8x32
  • subtracts corresponding lanes, wrapping on overflow.

fn (I8x32) * #

@[direct_array_access]
fn (a I8x32) * (b I8x32) I8x32
  • multiplies corresponding lanes, wrapping on overflow.

fn (I8x32) / #

@[direct_array_access]
fn (a I8x32) / (b I8x32) I8x32

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero. min_i8 / -1 wraps to min_i8.

fn (I8x32) add #

fn (a I8x32) add(b I8x32) I8x32

add returns a + b.

fn (I8x32) sub #

fn (a I8x32) sub(b I8x32) I8x32

sub returns a - b.

fn (I8x32) mul #

fn (a I8x32) mul(b I8x32) I8x32

mul returns a * b.

fn (I8x32) div #

fn (a I8x32) div(b I8x32) I8x32

div returns a / b.

fn (I8x32) neg #

@[direct_array_access]
fn (a I8x32) neg() I8x32

neg negates each lane, wrapping min_i8 to itself.

fn (I8x32) abs #

@[direct_array_access]
fn (a I8x32) abs() I8x32

abs returns the absolute value of each lane. min_i8 wraps to itself.

fn (I8x32) minimum #

@[direct_array_access]
fn (a I8x32) minimum(b I8x32) I8x32

minimum returns the smaller of each pair of lanes.

fn (I8x32) maximum #

@[direct_array_access]
fn (a I8x32) maximum(b I8x32) I8x32

maximum returns the larger of each pair of lanes.

fn (I8x32) eq #

@[direct_array_access]
fn (a I8x32) eq(b I8x32) Mask8x32

eq returns a mask of the lanes where a is equal to b.

fn (I8x32) ne #

@[direct_array_access]
fn (a I8x32) ne(b I8x32) Mask8x32

ne returns a mask of the lanes where a is not equal to b.

fn (I8x32) lt #

@[direct_array_access]
fn (a I8x32) lt(b I8x32) Mask8x32

lt returns a mask of the lanes where a is less than b.

fn (I8x32) le #

@[direct_array_access]
fn (a I8x32) le(b I8x32) Mask8x32

le returns a mask of the lanes where a is less than or equal to b.

fn (I8x32) gt #

fn (a I8x32) gt(b I8x32) Mask8x32

gt returns a mask of the lanes where a is greater than b.

fn (I8x32) ge #

fn (a I8x32) ge(b I8x32) Mask8x32

ge returns a mask of the lanes where a is greater than or equal to b.

fn (I8x32) and #

@[direct_array_access]
fn (a I8x32) and(b I8x32) I8x32

and returns the bitwise AND of corresponding lanes.

fn (I8x32) or #

@[direct_array_access]
fn (a I8x32) or(b I8x32) I8x32

or returns the bitwise OR of corresponding lanes.

fn (I8x32) xor #

@[direct_array_access]
fn (a I8x32) xor(b I8x32) I8x32

xor returns the bitwise XOR of corresponding lanes.

fn (I8x32) not #

@[direct_array_access]
fn (a I8x32) not() I8x32

not returns the bitwise complement of each lane.

fn (I8x32) shl #

@[direct_array_access]
fn (a I8x32) shl(count u32) I8x32

shl shifts each lane left by count bits. A count of 8 or more shifts every bit out and returns zero lanes.

fn (I8x32) shr #

@[direct_array_access]
fn (a I8x32) shr(count u32) I8x32

shr shifts each lane right by count bits. The shift is arithmetic: it copies the sign bit, and a count of 8 or more fills each lane with its sign bit.

fn (I8x32) sum #

@[direct_array_access]
fn (v I8x32) sum() i8

sum adds the lanes, wrapping on overflow.

fn (I8x32) min_element #

@[direct_array_access]
fn (v I8x32) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (I8x32) min #

@[direct_array_access]
fn (v I8x32) min() i8

min returns the smallest lane value, the lane at index min_element().

fn (I8x32) max_element #

@[direct_array_access]
fn (v I8x32) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (I8x32) max #

@[direct_array_access]
fn (v I8x32) max() i8

max returns the largest lane value, the lane at index max_element().

fn (I8x32) dot #

fn (a I8x32) dot(b I8x32) i8

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (I8x32) to_u8x32 #

@[direct_array_access]
fn (v I8x32) to_u8x32() U8x32

to_u8x32 converts each lane to u8. It keeps the bits of each lane, so values wrap modulo 2^8.

struct I8x64 #

struct I8x64 {
mut:
	values [64]i8
}

I8x64 holds 64 i8 lanes (512 bits).

fn (I8x64) to_array #

fn (v I8x64) to_array() [64]i8

to_array returns the lanes in order.

fn (I8x64) [] #

@[direct_array_access]
fn (v I8x64) [] (i int) i8

[] returns lane i. It panics if i is out of range.

fn (I8x64) []= #

@[direct_array_access]
fn (mut v I8x64) []= (i int, value i8)

[]= sets lane i to value. It panics if i is out of range.

fn (I8x64) store #

fn (v I8x64) store(mut dst []i8) !

store writes all 64 lanes to the start of dst. It returns an error if dst has fewer than 64 elements.

fn (I8x64) store_part #

@[direct_array_access]
fn (v I8x64) store_part(mut dst []i8) !

store_part writes one lane for each element of dst, up to 64 elements. It returns an error if dst has more than 64 elements.

fn (I8x64) store_at #

@[direct_array_access]
fn (v I8x64) store_at(mut dst []i8, offset int)

store_at writes all 64 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 64 elements follow it.

fn (I8x64) + #

@[direct_array_access]
fn (a I8x64) + (b I8x64) I8x64
  • adds corresponding lanes, wrapping on overflow.

fn (I8x64) - #

@[direct_array_access]
fn (a I8x64) - (b I8x64) I8x64
  • subtracts corresponding lanes, wrapping on overflow.

fn (I8x64) * #

@[direct_array_access]
fn (a I8x64) * (b I8x64) I8x64
  • multiplies corresponding lanes, wrapping on overflow.

fn (I8x64) / #

@[direct_array_access]
fn (a I8x64) / (b I8x64) I8x64

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero. min_i8 / -1 wraps to min_i8.

fn (I8x64) add #

fn (a I8x64) add(b I8x64) I8x64

add returns a + b.

fn (I8x64) sub #

fn (a I8x64) sub(b I8x64) I8x64

sub returns a - b.

fn (I8x64) mul #

fn (a I8x64) mul(b I8x64) I8x64

mul returns a * b.

fn (I8x64) div #

fn (a I8x64) div(b I8x64) I8x64

div returns a / b.

fn (I8x64) neg #

@[direct_array_access]
fn (a I8x64) neg() I8x64

neg negates each lane, wrapping min_i8 to itself.

fn (I8x64) abs #

@[direct_array_access]
fn (a I8x64) abs() I8x64

abs returns the absolute value of each lane. min_i8 wraps to itself.

fn (I8x64) minimum #

@[direct_array_access]
fn (a I8x64) minimum(b I8x64) I8x64

minimum returns the smaller of each pair of lanes.

fn (I8x64) maximum #

@[direct_array_access]
fn (a I8x64) maximum(b I8x64) I8x64

maximum returns the larger of each pair of lanes.

fn (I8x64) eq #

@[direct_array_access]
fn (a I8x64) eq(b I8x64) Mask8x64

eq returns a mask of the lanes where a is equal to b.

fn (I8x64) ne #

@[direct_array_access]
fn (a I8x64) ne(b I8x64) Mask8x64

ne returns a mask of the lanes where a is not equal to b.

fn (I8x64) lt #

@[direct_array_access]
fn (a I8x64) lt(b I8x64) Mask8x64

lt returns a mask of the lanes where a is less than b.

fn (I8x64) le #

@[direct_array_access]
fn (a I8x64) le(b I8x64) Mask8x64

le returns a mask of the lanes where a is less than or equal to b.

fn (I8x64) gt #

fn (a I8x64) gt(b I8x64) Mask8x64

gt returns a mask of the lanes where a is greater than b.

fn (I8x64) ge #

fn (a I8x64) ge(b I8x64) Mask8x64

ge returns a mask of the lanes where a is greater than or equal to b.

fn (I8x64) and #

@[direct_array_access]
fn (a I8x64) and(b I8x64) I8x64

and returns the bitwise AND of corresponding lanes.

fn (I8x64) or #

@[direct_array_access]
fn (a I8x64) or(b I8x64) I8x64

or returns the bitwise OR of corresponding lanes.

fn (I8x64) xor #

@[direct_array_access]
fn (a I8x64) xor(b I8x64) I8x64

xor returns the bitwise XOR of corresponding lanes.

fn (I8x64) not #

@[direct_array_access]
fn (a I8x64) not() I8x64

not returns the bitwise complement of each lane.

fn (I8x64) shl #

@[direct_array_access]
fn (a I8x64) shl(count u32) I8x64

shl shifts each lane left by count bits. A count of 8 or more shifts every bit out and returns zero lanes.

fn (I8x64) shr #

@[direct_array_access]
fn (a I8x64) shr(count u32) I8x64

shr shifts each lane right by count bits. The shift is arithmetic: it copies the sign bit, and a count of 8 or more fills each lane with its sign bit.

fn (I8x64) sum #

@[direct_array_access]
fn (v I8x64) sum() i8

sum adds the lanes, wrapping on overflow.

fn (I8x64) min_element #

@[direct_array_access]
fn (v I8x64) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (I8x64) min #

@[direct_array_access]
fn (v I8x64) min() i8

min returns the smallest lane value, the lane at index min_element().

fn (I8x64) max_element #

@[direct_array_access]
fn (v I8x64) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (I8x64) max #

@[direct_array_access]
fn (v I8x64) max() i8

max returns the largest lane value, the lane at index max_element().

fn (I8x64) dot #

fn (a I8x64) dot(b I8x64) i8

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (I8x64) to_u8x64 #

@[direct_array_access]
fn (v I8x64) to_u8x64() U8x64

to_u8x64 converts each lane to u8. It keeps the bits of each lane, so values wrap modulo 2^8.

struct I8x8 #

struct I8x8 {
mut:
	values [8]i8
}

I8x8 holds 8 i8 lanes (64 bits).

fn (I8x8) to_array #

fn (v I8x8) to_array() [8]i8

to_array returns the lanes in order.

fn (I8x8) [] #

@[direct_array_access]
fn (v I8x8) [] (i int) i8

[] returns lane i. It panics if i is out of range.

fn (I8x8) []= #

@[direct_array_access]
fn (mut v I8x8) []= (i int, value i8)

[]= sets lane i to value. It panics if i is out of range.

fn (I8x8) store #

fn (v I8x8) store(mut dst []i8) !

store writes all 8 lanes to the start of dst. It returns an error if dst has fewer than 8 elements.

fn (I8x8) store_part #

@[direct_array_access]
fn (v I8x8) store_part(mut dst []i8) !

store_part writes one lane for each element of dst, up to 8 elements. It returns an error if dst has more than 8 elements.

fn (I8x8) store_at #

@[direct_array_access]
fn (v I8x8) store_at(mut dst []i8, offset int)

store_at writes all 8 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 8 elements follow it.

fn (I8x8) + #

@[direct_array_access]
fn (a I8x8) + (b I8x8) I8x8
  • adds corresponding lanes, wrapping on overflow.

fn (I8x8) - #

@[direct_array_access]
fn (a I8x8) - (b I8x8) I8x8
  • subtracts corresponding lanes, wrapping on overflow.

fn (I8x8) * #

@[direct_array_access]
fn (a I8x8) * (b I8x8) I8x8
  • multiplies corresponding lanes, wrapping on overflow.

fn (I8x8) / #

@[direct_array_access]
fn (a I8x8) / (b I8x8) I8x8

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero. min_i8 / -1 wraps to min_i8.

fn (I8x8) add #

fn (a I8x8) add(b I8x8) I8x8

add returns a + b.

fn (I8x8) sub #

fn (a I8x8) sub(b I8x8) I8x8

sub returns a - b.

fn (I8x8) mul #

fn (a I8x8) mul(b I8x8) I8x8

mul returns a * b.

fn (I8x8) div #

fn (a I8x8) div(b I8x8) I8x8

div returns a / b.

fn (I8x8) neg #

@[direct_array_access]
fn (a I8x8) neg() I8x8

neg negates each lane, wrapping min_i8 to itself.

fn (I8x8) abs #

@[direct_array_access]
fn (a I8x8) abs() I8x8

abs returns the absolute value of each lane. min_i8 wraps to itself.

fn (I8x8) minimum #

@[direct_array_access]
fn (a I8x8) minimum(b I8x8) I8x8

minimum returns the smaller of each pair of lanes.

fn (I8x8) maximum #

@[direct_array_access]
fn (a I8x8) maximum(b I8x8) I8x8

maximum returns the larger of each pair of lanes.

fn (I8x8) eq #

@[direct_array_access]
fn (a I8x8) eq(b I8x8) Mask8x8

eq returns a mask of the lanes where a is equal to b.

fn (I8x8) ne #

@[direct_array_access]
fn (a I8x8) ne(b I8x8) Mask8x8

ne returns a mask of the lanes where a is not equal to b.

fn (I8x8) lt #

@[direct_array_access]
fn (a I8x8) lt(b I8x8) Mask8x8

lt returns a mask of the lanes where a is less than b.

fn (I8x8) le #

@[direct_array_access]
fn (a I8x8) le(b I8x8) Mask8x8

le returns a mask of the lanes where a is less than or equal to b.

fn (I8x8) gt #

fn (a I8x8) gt(b I8x8) Mask8x8

gt returns a mask of the lanes where a is greater than b.

fn (I8x8) ge #

fn (a I8x8) ge(b I8x8) Mask8x8

ge returns a mask of the lanes where a is greater than or equal to b.

fn (I8x8) and #

@[direct_array_access]
fn (a I8x8) and(b I8x8) I8x8

and returns the bitwise AND of corresponding lanes.

fn (I8x8) or #

@[direct_array_access]
fn (a I8x8) or(b I8x8) I8x8

or returns the bitwise OR of corresponding lanes.

fn (I8x8) xor #

@[direct_array_access]
fn (a I8x8) xor(b I8x8) I8x8

xor returns the bitwise XOR of corresponding lanes.

fn (I8x8) not #

@[direct_array_access]
fn (a I8x8) not() I8x8

not returns the bitwise complement of each lane.

fn (I8x8) shl #

@[direct_array_access]
fn (a I8x8) shl(count u32) I8x8

shl shifts each lane left by count bits. A count of 8 or more shifts every bit out and returns zero lanes.

fn (I8x8) shr #

@[direct_array_access]
fn (a I8x8) shr(count u32) I8x8

shr shifts each lane right by count bits. The shift is arithmetic: it copies the sign bit, and a count of 8 or more fills each lane with its sign bit.

fn (I8x8) sum #

@[direct_array_access]
fn (v I8x8) sum() i8

sum adds the lanes, wrapping on overflow.

fn (I8x8) min_element #

@[direct_array_access]
fn (v I8x8) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (I8x8) min #

@[direct_array_access]
fn (v I8x8) min() i8

min returns the smallest lane value, the lane at index min_element().

fn (I8x8) max_element #

@[direct_array_access]
fn (v I8x8) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (I8x8) max #

@[direct_array_access]
fn (v I8x8) max() i8

max returns the largest lane value, the lane at index max_element().

fn (I8x8) dot #

fn (a I8x8) dot(b I8x8) i8

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (I8x8) to_u8x8 #

@[direct_array_access]
fn (v I8x8) to_u8x8() U8x8

to_u8x8 converts each lane to u8. It keeps the bits of each lane, so values wrap modulo 2^8.

struct Mask16x16 #

struct Mask16x16 {
mut:
	values [16]i16 // -1 for a set lane, 0 for a clear lane
}

Mask16x16 is a lane mask for I16x16 and U16x16. Comparisons return it and the select functions consume it.

fn (Mask16x16) to_array #

@[direct_array_access]
fn (m Mask16x16) to_array() [16]bool

to_array returns the lanes in order, true for each set lane.

fn (Mask16x16) [] #

@[direct_array_access]
fn (m Mask16x16) [] (i int) bool

[] reports whether lane i is set. It panics if i is out of range.

fn (Mask16x16) []= #

@[direct_array_access]
fn (mut m Mask16x16) []= (i int, value bool)

[]= sets lane i when value is true and clears it otherwise. It panics if i is out of range.

fn (Mask16x16) all #

@[direct_array_access]
fn (m Mask16x16) all() bool

all reports whether every lane is set.

fn (Mask16x16) any #

@[direct_array_access]
fn (m Mask16x16) any() bool

any reports whether at least one lane is set.

fn (Mask16x16) count #

@[direct_array_access]
fn (m Mask16x16) count() int

count returns the number of set lanes.

fn (Mask16x16) and #

@[direct_array_access]
fn (m Mask16x16) and(o Mask16x16) Mask16x16

and returns a mask that sets the lanes that are set in both m and o.

fn (Mask16x16) or #

@[direct_array_access]
fn (m Mask16x16) or(o Mask16x16) Mask16x16

or returns a mask that sets the lanes that are set in m, o or both.

fn (Mask16x16) xor #

@[direct_array_access]
fn (m Mask16x16) xor(o Mask16x16) Mask16x16

xor returns a mask that sets the lanes that are set in exactly one of m and o.

fn (Mask16x16) not #

@[direct_array_access]
fn (m Mask16x16) not() Mask16x16

not returns a mask with every lane flipped.

struct Mask16x32 #

struct Mask16x32 {
mut:
	values [32]i16 // -1 for a set lane, 0 for a clear lane
}

Mask16x32 is a lane mask for I16x32 and U16x32. Comparisons return it and the select functions consume it.

fn (Mask16x32) to_array #

@[direct_array_access]
fn (m Mask16x32) to_array() [32]bool

to_array returns the lanes in order, true for each set lane.

fn (Mask16x32) [] #

@[direct_array_access]
fn (m Mask16x32) [] (i int) bool

[] reports whether lane i is set. It panics if i is out of range.

fn (Mask16x32) []= #

@[direct_array_access]
fn (mut m Mask16x32) []= (i int, value bool)

[]= sets lane i when value is true and clears it otherwise. It panics if i is out of range.

fn (Mask16x32) all #

@[direct_array_access]
fn (m Mask16x32) all() bool

all reports whether every lane is set.

fn (Mask16x32) any #

@[direct_array_access]
fn (m Mask16x32) any() bool

any reports whether at least one lane is set.

fn (Mask16x32) count #

@[direct_array_access]
fn (m Mask16x32) count() int

count returns the number of set lanes.

fn (Mask16x32) and #

@[direct_array_access]
fn (m Mask16x32) and(o Mask16x32) Mask16x32

and returns a mask that sets the lanes that are set in both m and o.

fn (Mask16x32) or #

@[direct_array_access]
fn (m Mask16x32) or(o Mask16x32) Mask16x32

or returns a mask that sets the lanes that are set in m, o or both.

fn (Mask16x32) xor #

@[direct_array_access]
fn (m Mask16x32) xor(o Mask16x32) Mask16x32

xor returns a mask that sets the lanes that are set in exactly one of m and o.

fn (Mask16x32) not #

@[direct_array_access]
fn (m Mask16x32) not() Mask16x32

not returns a mask with every lane flipped.

struct Mask16x4 #

struct Mask16x4 {
mut:
	values [4]i16 // -1 for a set lane, 0 for a clear lane
}

Mask16x4 is a lane mask for I16x4 and U16x4. Comparisons return it and the select functions consume it.

fn (Mask16x4) to_array #

@[direct_array_access]
fn (m Mask16x4) to_array() [4]bool

to_array returns the lanes in order, true for each set lane.

fn (Mask16x4) [] #

@[direct_array_access]
fn (m Mask16x4) [] (i int) bool

[] reports whether lane i is set. It panics if i is out of range.

fn (Mask16x4) []= #

@[direct_array_access]
fn (mut m Mask16x4) []= (i int, value bool)

[]= sets lane i when value is true and clears it otherwise. It panics if i is out of range.

fn (Mask16x4) all #

@[direct_array_access]
fn (m Mask16x4) all() bool

all reports whether every lane is set.

fn (Mask16x4) any #

@[direct_array_access]
fn (m Mask16x4) any() bool

any reports whether at least one lane is set.

fn (Mask16x4) count #

@[direct_array_access]
fn (m Mask16x4) count() int

count returns the number of set lanes.

fn (Mask16x4) and #

@[direct_array_access]
fn (m Mask16x4) and(o Mask16x4) Mask16x4

and returns a mask that sets the lanes that are set in both m and o.

fn (Mask16x4) or #

@[direct_array_access]
fn (m Mask16x4) or(o Mask16x4) Mask16x4

or returns a mask that sets the lanes that are set in m, o or both.

fn (Mask16x4) xor #

@[direct_array_access]
fn (m Mask16x4) xor(o Mask16x4) Mask16x4

xor returns a mask that sets the lanes that are set in exactly one of m and o.

fn (Mask16x4) not #

@[direct_array_access]
fn (m Mask16x4) not() Mask16x4

not returns a mask with every lane flipped.

struct Mask16x8 #

struct Mask16x8 {
mut:
	values [8]i16 // -1 for a set lane, 0 for a clear lane
}

Mask16x8 is a lane mask for I16x8 and U16x8. Comparisons return it and the select functions consume it.

fn (Mask16x8) to_array #

@[direct_array_access]
fn (m Mask16x8) to_array() [8]bool

to_array returns the lanes in order, true for each set lane.

fn (Mask16x8) [] #

@[direct_array_access]
fn (m Mask16x8) [] (i int) bool

[] reports whether lane i is set. It panics if i is out of range.

fn (Mask16x8) []= #

@[direct_array_access]
fn (mut m Mask16x8) []= (i int, value bool)

[]= sets lane i when value is true and clears it otherwise. It panics if i is out of range.

fn (Mask16x8) all #

@[direct_array_access]
fn (m Mask16x8) all() bool

all reports whether every lane is set.

fn (Mask16x8) any #

@[direct_array_access]
fn (m Mask16x8) any() bool

any reports whether at least one lane is set.

fn (Mask16x8) count #

@[direct_array_access]
fn (m Mask16x8) count() int

count returns the number of set lanes.

fn (Mask16x8) and #

@[direct_array_access]
fn (m Mask16x8) and(o Mask16x8) Mask16x8

and returns a mask that sets the lanes that are set in both m and o.

fn (Mask16x8) or #

@[direct_array_access]
fn (m Mask16x8) or(o Mask16x8) Mask16x8

or returns a mask that sets the lanes that are set in m, o or both.

fn (Mask16x8) xor #

@[direct_array_access]
fn (m Mask16x8) xor(o Mask16x8) Mask16x8

xor returns a mask that sets the lanes that are set in exactly one of m and o.

fn (Mask16x8) not #

@[direct_array_access]
fn (m Mask16x8) not() Mask16x8

not returns a mask with every lane flipped.

struct Mask32x16 #

struct Mask32x16 {
mut:
	values [16]i32 // -1 for a set lane, 0 for a clear lane
}

Mask32x16 is a lane mask for F32x16, I32x16 and U32x16. Comparisons return it and the select functions consume it.

fn (Mask32x16) to_array #

@[direct_array_access]
fn (m Mask32x16) to_array() [16]bool

to_array returns the lanes in order, true for each set lane.

fn (Mask32x16) [] #

@[direct_array_access]
fn (m Mask32x16) [] (i int) bool

[] reports whether lane i is set. It panics if i is out of range.

fn (Mask32x16) []= #

@[direct_array_access]
fn (mut m Mask32x16) []= (i int, value bool)

[]= sets lane i when value is true and clears it otherwise. It panics if i is out of range.

fn (Mask32x16) all #

@[direct_array_access]
fn (m Mask32x16) all() bool

all reports whether every lane is set.

fn (Mask32x16) any #

@[direct_array_access]
fn (m Mask32x16) any() bool

any reports whether at least one lane is set.

fn (Mask32x16) count #

@[direct_array_access]
fn (m Mask32x16) count() int

count returns the number of set lanes.

fn (Mask32x16) and #

@[direct_array_access]
fn (m Mask32x16) and(o Mask32x16) Mask32x16

and returns a mask that sets the lanes that are set in both m and o.

fn (Mask32x16) or #

@[direct_array_access]
fn (m Mask32x16) or(o Mask32x16) Mask32x16

or returns a mask that sets the lanes that are set in m, o or both.

fn (Mask32x16) xor #

@[direct_array_access]
fn (m Mask32x16) xor(o Mask32x16) Mask32x16

xor returns a mask that sets the lanes that are set in exactly one of m and o.

fn (Mask32x16) not #

@[direct_array_access]
fn (m Mask32x16) not() Mask32x16

not returns a mask with every lane flipped.

struct Mask32x2 #

struct Mask32x2 {
mut:
	values [2]i32 // -1 for a set lane, 0 for a clear lane
}

Mask32x2 is a lane mask for F32x2, I32x2 and U32x2. Comparisons return it and the select functions consume it.

fn (Mask32x2) to_array #

@[direct_array_access]
fn (m Mask32x2) to_array() [2]bool

to_array returns the lanes in order, true for each set lane.

fn (Mask32x2) [] #

@[direct_array_access]
fn (m Mask32x2) [] (i int) bool

[] reports whether lane i is set. It panics if i is out of range.

fn (Mask32x2) []= #

@[direct_array_access]
fn (mut m Mask32x2) []= (i int, value bool)

[]= sets lane i when value is true and clears it otherwise. It panics if i is out of range.

fn (Mask32x2) all #

@[direct_array_access]
fn (m Mask32x2) all() bool

all reports whether every lane is set.

fn (Mask32x2) any #

@[direct_array_access]
fn (m Mask32x2) any() bool

any reports whether at least one lane is set.

fn (Mask32x2) count #

@[direct_array_access]
fn (m Mask32x2) count() int

count returns the number of set lanes.

fn (Mask32x2) and #

@[direct_array_access]
fn (m Mask32x2) and(o Mask32x2) Mask32x2

and returns a mask that sets the lanes that are set in both m and o.

fn (Mask32x2) or #

@[direct_array_access]
fn (m Mask32x2) or(o Mask32x2) Mask32x2

or returns a mask that sets the lanes that are set in m, o or both.

fn (Mask32x2) xor #

@[direct_array_access]
fn (m Mask32x2) xor(o Mask32x2) Mask32x2

xor returns a mask that sets the lanes that are set in exactly one of m and o.

fn (Mask32x2) not #

@[direct_array_access]
fn (m Mask32x2) not() Mask32x2

not returns a mask with every lane flipped.

struct Mask32x4 #

struct Mask32x4 {
mut:
	values [4]i32 // -1 for a set lane, 0 for a clear lane
}

Mask32x4 is a lane mask for F32x4, I32x4 and U32x4. Comparisons return it and the select functions consume it.

fn (Mask32x4) to_array #

@[direct_array_access]
fn (m Mask32x4) to_array() [4]bool

to_array returns the lanes in order, true for each set lane.

fn (Mask32x4) [] #

@[direct_array_access]
fn (m Mask32x4) [] (i int) bool

[] reports whether lane i is set. It panics if i is out of range.

fn (Mask32x4) []= #

@[direct_array_access]
fn (mut m Mask32x4) []= (i int, value bool)

[]= sets lane i when value is true and clears it otherwise. It panics if i is out of range.

fn (Mask32x4) all #

@[direct_array_access]
fn (m Mask32x4) all() bool

all reports whether every lane is set.

fn (Mask32x4) any #

@[direct_array_access]
fn (m Mask32x4) any() bool

any reports whether at least one lane is set.

fn (Mask32x4) count #

@[direct_array_access]
fn (m Mask32x4) count() int

count returns the number of set lanes.

fn (Mask32x4) and #

@[direct_array_access]
fn (m Mask32x4) and(o Mask32x4) Mask32x4

and returns a mask that sets the lanes that are set in both m and o.

fn (Mask32x4) or #

@[direct_array_access]
fn (m Mask32x4) or(o Mask32x4) Mask32x4

or returns a mask that sets the lanes that are set in m, o or both.

fn (Mask32x4) xor #

@[direct_array_access]
fn (m Mask32x4) xor(o Mask32x4) Mask32x4

xor returns a mask that sets the lanes that are set in exactly one of m and o.

fn (Mask32x4) not #

@[direct_array_access]
fn (m Mask32x4) not() Mask32x4

not returns a mask with every lane flipped.

struct Mask32x8 #

struct Mask32x8 {
mut:
	values [8]i32 // -1 for a set lane, 0 for a clear lane
}

Mask32x8 is a lane mask for F32x8, I32x8 and U32x8. Comparisons return it and the select functions consume it.

fn (Mask32x8) to_array #

@[direct_array_access]
fn (m Mask32x8) to_array() [8]bool

to_array returns the lanes in order, true for each set lane.

fn (Mask32x8) [] #

@[direct_array_access]
fn (m Mask32x8) [] (i int) bool

[] reports whether lane i is set. It panics if i is out of range.

fn (Mask32x8) []= #

@[direct_array_access]
fn (mut m Mask32x8) []= (i int, value bool)

[]= sets lane i when value is true and clears it otherwise. It panics if i is out of range.

fn (Mask32x8) all #

@[direct_array_access]
fn (m Mask32x8) all() bool

all reports whether every lane is set.

fn (Mask32x8) any #

@[direct_array_access]
fn (m Mask32x8) any() bool

any reports whether at least one lane is set.

fn (Mask32x8) count #

@[direct_array_access]
fn (m Mask32x8) count() int

count returns the number of set lanes.

fn (Mask32x8) and #

@[direct_array_access]
fn (m Mask32x8) and(o Mask32x8) Mask32x8

and returns a mask that sets the lanes that are set in both m and o.

fn (Mask32x8) or #

@[direct_array_access]
fn (m Mask32x8) or(o Mask32x8) Mask32x8

or returns a mask that sets the lanes that are set in m, o or both.

fn (Mask32x8) xor #

@[direct_array_access]
fn (m Mask32x8) xor(o Mask32x8) Mask32x8

xor returns a mask that sets the lanes that are set in exactly one of m and o.

fn (Mask32x8) not #

@[direct_array_access]
fn (m Mask32x8) not() Mask32x8

not returns a mask with every lane flipped.

struct Mask64x2 #

struct Mask64x2 {
mut:
	values [2]i64 // -1 for a set lane, 0 for a clear lane
}

Mask64x2 is a lane mask for F64x2, I64x2 and U64x2. Comparisons return it and the select functions consume it.

fn (Mask64x2) to_array #

@[direct_array_access]
fn (m Mask64x2) to_array() [2]bool

to_array returns the lanes in order, true for each set lane.

fn (Mask64x2) [] #

@[direct_array_access]
fn (m Mask64x2) [] (i int) bool

[] reports whether lane i is set. It panics if i is out of range.

fn (Mask64x2) []= #

@[direct_array_access]
fn (mut m Mask64x2) []= (i int, value bool)

[]= sets lane i when value is true and clears it otherwise. It panics if i is out of range.

fn (Mask64x2) all #

@[direct_array_access]
fn (m Mask64x2) all() bool

all reports whether every lane is set.

fn (Mask64x2) any #

@[direct_array_access]
fn (m Mask64x2) any() bool

any reports whether at least one lane is set.

fn (Mask64x2) count #

@[direct_array_access]
fn (m Mask64x2) count() int

count returns the number of set lanes.

fn (Mask64x2) and #

@[direct_array_access]
fn (m Mask64x2) and(o Mask64x2) Mask64x2

and returns a mask that sets the lanes that are set in both m and o.

fn (Mask64x2) or #

@[direct_array_access]
fn (m Mask64x2) or(o Mask64x2) Mask64x2

or returns a mask that sets the lanes that are set in m, o or both.

fn (Mask64x2) xor #

@[direct_array_access]
fn (m Mask64x2) xor(o Mask64x2) Mask64x2

xor returns a mask that sets the lanes that are set in exactly one of m and o.

fn (Mask64x2) not #

@[direct_array_access]
fn (m Mask64x2) not() Mask64x2

not returns a mask with every lane flipped.

struct Mask64x4 #

struct Mask64x4 {
mut:
	values [4]i64 // -1 for a set lane, 0 for a clear lane
}

Mask64x4 is a lane mask for F64x4, I64x4 and U64x4. Comparisons return it and the select functions consume it.

fn (Mask64x4) to_array #

@[direct_array_access]
fn (m Mask64x4) to_array() [4]bool

to_array returns the lanes in order, true for each set lane.

fn (Mask64x4) [] #

@[direct_array_access]
fn (m Mask64x4) [] (i int) bool

[] reports whether lane i is set. It panics if i is out of range.

fn (Mask64x4) []= #

@[direct_array_access]
fn (mut m Mask64x4) []= (i int, value bool)

[]= sets lane i when value is true and clears it otherwise. It panics if i is out of range.

fn (Mask64x4) all #

@[direct_array_access]
fn (m Mask64x4) all() bool

all reports whether every lane is set.

fn (Mask64x4) any #

@[direct_array_access]
fn (m Mask64x4) any() bool

any reports whether at least one lane is set.

fn (Mask64x4) count #

@[direct_array_access]
fn (m Mask64x4) count() int

count returns the number of set lanes.

fn (Mask64x4) and #

@[direct_array_access]
fn (m Mask64x4) and(o Mask64x4) Mask64x4

and returns a mask that sets the lanes that are set in both m and o.

fn (Mask64x4) or #

@[direct_array_access]
fn (m Mask64x4) or(o Mask64x4) Mask64x4

or returns a mask that sets the lanes that are set in m, o or both.

fn (Mask64x4) xor #

@[direct_array_access]
fn (m Mask64x4) xor(o Mask64x4) Mask64x4

xor returns a mask that sets the lanes that are set in exactly one of m and o.

fn (Mask64x4) not #

@[direct_array_access]
fn (m Mask64x4) not() Mask64x4

not returns a mask with every lane flipped.

struct Mask64x8 #

struct Mask64x8 {
mut:
	values [8]i64 // -1 for a set lane, 0 for a clear lane
}

Mask64x8 is a lane mask for F64x8, I64x8 and U64x8. Comparisons return it and the select functions consume it.

fn (Mask64x8) to_array #

@[direct_array_access]
fn (m Mask64x8) to_array() [8]bool

to_array returns the lanes in order, true for each set lane.

fn (Mask64x8) [] #

@[direct_array_access]
fn (m Mask64x8) [] (i int) bool

[] reports whether lane i is set. It panics if i is out of range.

fn (Mask64x8) []= #

@[direct_array_access]
fn (mut m Mask64x8) []= (i int, value bool)

[]= sets lane i when value is true and clears it otherwise. It panics if i is out of range.

fn (Mask64x8) all #

@[direct_array_access]
fn (m Mask64x8) all() bool

all reports whether every lane is set.

fn (Mask64x8) any #

@[direct_array_access]
fn (m Mask64x8) any() bool

any reports whether at least one lane is set.

fn (Mask64x8) count #

@[direct_array_access]
fn (m Mask64x8) count() int

count returns the number of set lanes.

fn (Mask64x8) and #

@[direct_array_access]
fn (m Mask64x8) and(o Mask64x8) Mask64x8

and returns a mask that sets the lanes that are set in both m and o.

fn (Mask64x8) or #

@[direct_array_access]
fn (m Mask64x8) or(o Mask64x8) Mask64x8

or returns a mask that sets the lanes that are set in m, o or both.

fn (Mask64x8) xor #

@[direct_array_access]
fn (m Mask64x8) xor(o Mask64x8) Mask64x8

xor returns a mask that sets the lanes that are set in exactly one of m and o.

fn (Mask64x8) not #

@[direct_array_access]
fn (m Mask64x8) not() Mask64x8

not returns a mask with every lane flipped.

struct Mask8x16 #

struct Mask8x16 {
mut:
	values [16]i8 // -1 for a set lane, 0 for a clear lane
}

Mask8x16 is a lane mask for I8x16 and U8x16. Comparisons return it and the select functions consume it.

fn (Mask8x16) to_array #

@[direct_array_access]
fn (m Mask8x16) to_array() [16]bool

to_array returns the lanes in order, true for each set lane.

fn (Mask8x16) [] #

@[direct_array_access]
fn (m Mask8x16) [] (i int) bool

[] reports whether lane i is set. It panics if i is out of range.

fn (Mask8x16) []= #

@[direct_array_access]
fn (mut m Mask8x16) []= (i int, value bool)

[]= sets lane i when value is true and clears it otherwise. It panics if i is out of range.

fn (Mask8x16) all #

@[direct_array_access]
fn (m Mask8x16) all() bool

all reports whether every lane is set.

fn (Mask8x16) any #

@[direct_array_access]
fn (m Mask8x16) any() bool

any reports whether at least one lane is set.

fn (Mask8x16) count #

@[direct_array_access]
fn (m Mask8x16) count() int

count returns the number of set lanes.

fn (Mask8x16) and #

@[direct_array_access]
fn (m Mask8x16) and(o Mask8x16) Mask8x16

and returns a mask that sets the lanes that are set in both m and o.

fn (Mask8x16) or #

@[direct_array_access]
fn (m Mask8x16) or(o Mask8x16) Mask8x16

or returns a mask that sets the lanes that are set in m, o or both.

fn (Mask8x16) xor #

@[direct_array_access]
fn (m Mask8x16) xor(o Mask8x16) Mask8x16

xor returns a mask that sets the lanes that are set in exactly one of m and o.

fn (Mask8x16) not #

@[direct_array_access]
fn (m Mask8x16) not() Mask8x16

not returns a mask with every lane flipped.

struct Mask8x32 #

struct Mask8x32 {
mut:
	values [32]i8 // -1 for a set lane, 0 for a clear lane
}

Mask8x32 is a lane mask for I8x32 and U8x32. Comparisons return it and the select functions consume it.

fn (Mask8x32) to_array #

@[direct_array_access]
fn (m Mask8x32) to_array() [32]bool

to_array returns the lanes in order, true for each set lane.

fn (Mask8x32) [] #

@[direct_array_access]
fn (m Mask8x32) [] (i int) bool

[] reports whether lane i is set. It panics if i is out of range.

fn (Mask8x32) []= #

@[direct_array_access]
fn (mut m Mask8x32) []= (i int, value bool)

[]= sets lane i when value is true and clears it otherwise. It panics if i is out of range.

fn (Mask8x32) all #

@[direct_array_access]
fn (m Mask8x32) all() bool

all reports whether every lane is set.

fn (Mask8x32) any #

@[direct_array_access]
fn (m Mask8x32) any() bool

any reports whether at least one lane is set.

fn (Mask8x32) count #

@[direct_array_access]
fn (m Mask8x32) count() int

count returns the number of set lanes.

fn (Mask8x32) and #

@[direct_array_access]
fn (m Mask8x32) and(o Mask8x32) Mask8x32

and returns a mask that sets the lanes that are set in both m and o.

fn (Mask8x32) or #

@[direct_array_access]
fn (m Mask8x32) or(o Mask8x32) Mask8x32

or returns a mask that sets the lanes that are set in m, o or both.

fn (Mask8x32) xor #

@[direct_array_access]
fn (m Mask8x32) xor(o Mask8x32) Mask8x32

xor returns a mask that sets the lanes that are set in exactly one of m and o.

fn (Mask8x32) not #

@[direct_array_access]
fn (m Mask8x32) not() Mask8x32

not returns a mask with every lane flipped.

struct Mask8x64 #

struct Mask8x64 {
mut:
	values [64]i8 // -1 for a set lane, 0 for a clear lane
}

Mask8x64 is a lane mask for I8x64 and U8x64. Comparisons return it and the select functions consume it.

fn (Mask8x64) to_array #

@[direct_array_access]
fn (m Mask8x64) to_array() [64]bool

to_array returns the lanes in order, true for each set lane.

fn (Mask8x64) [] #

@[direct_array_access]
fn (m Mask8x64) [] (i int) bool

[] reports whether lane i is set. It panics if i is out of range.

fn (Mask8x64) []= #

@[direct_array_access]
fn (mut m Mask8x64) []= (i int, value bool)

[]= sets lane i when value is true and clears it otherwise. It panics if i is out of range.

fn (Mask8x64) all #

@[direct_array_access]
fn (m Mask8x64) all() bool

all reports whether every lane is set.

fn (Mask8x64) any #

@[direct_array_access]
fn (m Mask8x64) any() bool

any reports whether at least one lane is set.

fn (Mask8x64) count #

@[direct_array_access]
fn (m Mask8x64) count() int

count returns the number of set lanes.

fn (Mask8x64) and #

@[direct_array_access]
fn (m Mask8x64) and(o Mask8x64) Mask8x64

and returns a mask that sets the lanes that are set in both m and o.

fn (Mask8x64) or #

@[direct_array_access]
fn (m Mask8x64) or(o Mask8x64) Mask8x64

or returns a mask that sets the lanes that are set in m, o or both.

fn (Mask8x64) xor #

@[direct_array_access]
fn (m Mask8x64) xor(o Mask8x64) Mask8x64

xor returns a mask that sets the lanes that are set in exactly one of m and o.

fn (Mask8x64) not #

@[direct_array_access]
fn (m Mask8x64) not() Mask8x64

not returns a mask with every lane flipped.

struct Mask8x8 #

struct Mask8x8 {
mut:
	values [8]i8 // -1 for a set lane, 0 for a clear lane
}

Mask8x8 is a lane mask for I8x8 and U8x8. Comparisons return it and the select functions consume it.

fn (Mask8x8) to_array #

@[direct_array_access]
fn (m Mask8x8) to_array() [8]bool

to_array returns the lanes in order, true for each set lane.

fn (Mask8x8) [] #

@[direct_array_access]
fn (m Mask8x8) [] (i int) bool

[] reports whether lane i is set. It panics if i is out of range.

fn (Mask8x8) []= #

@[direct_array_access]
fn (mut m Mask8x8) []= (i int, value bool)

[]= sets lane i when value is true and clears it otherwise. It panics if i is out of range.

fn (Mask8x8) all #

@[direct_array_access]
fn (m Mask8x8) all() bool

all reports whether every lane is set.

fn (Mask8x8) any #

@[direct_array_access]
fn (m Mask8x8) any() bool

any reports whether at least one lane is set.

fn (Mask8x8) count #

@[direct_array_access]
fn (m Mask8x8) count() int

count returns the number of set lanes.

fn (Mask8x8) and #

@[direct_array_access]
fn (m Mask8x8) and(o Mask8x8) Mask8x8

and returns a mask that sets the lanes that are set in both m and o.

fn (Mask8x8) or #

@[direct_array_access]
fn (m Mask8x8) or(o Mask8x8) Mask8x8

or returns a mask that sets the lanes that are set in m, o or both.

fn (Mask8x8) xor #

@[direct_array_access]
fn (m Mask8x8) xor(o Mask8x8) Mask8x8

xor returns a mask that sets the lanes that are set in exactly one of m and o.

fn (Mask8x8) not #

@[direct_array_access]
fn (m Mask8x8) not() Mask8x8

not returns a mask with every lane flipped.

struct U16x16 #

struct U16x16 {
mut:
	values [16]u16
}

U16x16 holds 16 u16 lanes (256 bits).

fn (U16x16) to_array #

fn (v U16x16) to_array() [16]u16

to_array returns the lanes in order.

fn (U16x16) [] #

@[direct_array_access]
fn (v U16x16) [] (i int) u16

[] returns lane i. It panics if i is out of range.

fn (U16x16) []= #

@[direct_array_access]
fn (mut v U16x16) []= (i int, value u16)

[]= sets lane i to value. It panics if i is out of range.

fn (U16x16) store #

fn (v U16x16) store(mut dst []u16) !

store writes all 16 lanes to the start of dst. It returns an error if dst has fewer than 16 elements.

fn (U16x16) store_part #

@[direct_array_access]
fn (v U16x16) store_part(mut dst []u16) !

store_part writes one lane for each element of dst, up to 16 elements. It returns an error if dst has more than 16 elements.

fn (U16x16) store_at #

@[direct_array_access]
fn (v U16x16) store_at(mut dst []u16, offset int)

store_at writes all 16 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 16 elements follow it.

fn (U16x16) + #

@[direct_array_access]
fn (a U16x16) + (b U16x16) U16x16
  • adds corresponding lanes, wrapping on overflow.

fn (U16x16) - #

@[direct_array_access]
fn (a U16x16) - (b U16x16) U16x16
  • subtracts corresponding lanes, wrapping on overflow.

fn (U16x16) * #

@[direct_array_access]
fn (a U16x16) * (b U16x16) U16x16
  • multiplies corresponding lanes, wrapping on overflow.

fn (U16x16) / #

@[direct_array_access]
fn (a U16x16) / (b U16x16) U16x16

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero.

fn (U16x16) add #

fn (a U16x16) add(b U16x16) U16x16

add returns a + b.

fn (U16x16) sub #

fn (a U16x16) sub(b U16x16) U16x16

sub returns a - b.

fn (U16x16) mul #

fn (a U16x16) mul(b U16x16) U16x16

mul returns a * b.

fn (U16x16) div #

fn (a U16x16) div(b U16x16) U16x16

div returns a / b.

fn (U16x16) minimum #

@[direct_array_access]
fn (a U16x16) minimum(b U16x16) U16x16

minimum returns the smaller of each pair of lanes.

fn (U16x16) maximum #

@[direct_array_access]
fn (a U16x16) maximum(b U16x16) U16x16

maximum returns the larger of each pair of lanes.

fn (U16x16) eq #

@[direct_array_access]
fn (a U16x16) eq(b U16x16) Mask16x16

eq returns a mask of the lanes where a is equal to b.

fn (U16x16) ne #

@[direct_array_access]
fn (a U16x16) ne(b U16x16) Mask16x16

ne returns a mask of the lanes where a is not equal to b.

fn (U16x16) lt #

@[direct_array_access]
fn (a U16x16) lt(b U16x16) Mask16x16

lt returns a mask of the lanes where a is less than b.

fn (U16x16) le #

@[direct_array_access]
fn (a U16x16) le(b U16x16) Mask16x16

le returns a mask of the lanes where a is less than or equal to b.

fn (U16x16) gt #

fn (a U16x16) gt(b U16x16) Mask16x16

gt returns a mask of the lanes where a is greater than b.

fn (U16x16) ge #

fn (a U16x16) ge(b U16x16) Mask16x16

ge returns a mask of the lanes where a is greater than or equal to b.

fn (U16x16) and #

@[direct_array_access]
fn (a U16x16) and(b U16x16) U16x16

and returns the bitwise AND of corresponding lanes.

fn (U16x16) or #

@[direct_array_access]
fn (a U16x16) or(b U16x16) U16x16

or returns the bitwise OR of corresponding lanes.

fn (U16x16) xor #

@[direct_array_access]
fn (a U16x16) xor(b U16x16) U16x16

xor returns the bitwise XOR of corresponding lanes.

fn (U16x16) not #

@[direct_array_access]
fn (a U16x16) not() U16x16

not returns the bitwise complement of each lane.

fn (U16x16) shl #

@[direct_array_access]
fn (a U16x16) shl(count u32) U16x16

shl shifts each lane left by count bits. A count of 16 or more shifts every bit out and returns zero lanes.

fn (U16x16) shr #

@[direct_array_access]
fn (a U16x16) shr(count u32) U16x16

shr shifts each lane right by count bits. A count of 16 or more shifts every bit out and returns zero lanes.

fn (U16x16) sum #

@[direct_array_access]
fn (v U16x16) sum() u16

sum adds the lanes, wrapping on overflow.

fn (U16x16) min_element #

@[direct_array_access]
fn (v U16x16) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (U16x16) min #

@[direct_array_access]
fn (v U16x16) min() u16

min returns the smallest lane value, the lane at index min_element().

fn (U16x16) max_element #

@[direct_array_access]
fn (v U16x16) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (U16x16) max #

@[direct_array_access]
fn (v U16x16) max() u16

max returns the largest lane value, the lane at index max_element().

fn (U16x16) dot #

fn (a U16x16) dot(b U16x16) u16

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (U16x16) to_i16x16 #

@[direct_array_access]
fn (v U16x16) to_i16x16() I16x16

to_i16x16 converts each lane to i16. It keeps the bits of each lane, so values wrap modulo 2^16.

struct U16x32 #

struct U16x32 {
mut:
	values [32]u16
}

U16x32 holds 32 u16 lanes (512 bits).

fn (U16x32) to_array #

fn (v U16x32) to_array() [32]u16

to_array returns the lanes in order.

fn (U16x32) [] #

@[direct_array_access]
fn (v U16x32) [] (i int) u16

[] returns lane i. It panics if i is out of range.

fn (U16x32) []= #

@[direct_array_access]
fn (mut v U16x32) []= (i int, value u16)

[]= sets lane i to value. It panics if i is out of range.

fn (U16x32) store #

fn (v U16x32) store(mut dst []u16) !

store writes all 32 lanes to the start of dst. It returns an error if dst has fewer than 32 elements.

fn (U16x32) store_part #

@[direct_array_access]
fn (v U16x32) store_part(mut dst []u16) !

store_part writes one lane for each element of dst, up to 32 elements. It returns an error if dst has more than 32 elements.

fn (U16x32) store_at #

@[direct_array_access]
fn (v U16x32) store_at(mut dst []u16, offset int)

store_at writes all 32 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 32 elements follow it.

fn (U16x32) + #

@[direct_array_access]
fn (a U16x32) + (b U16x32) U16x32
  • adds corresponding lanes, wrapping on overflow.

fn (U16x32) - #

@[direct_array_access]
fn (a U16x32) - (b U16x32) U16x32
  • subtracts corresponding lanes, wrapping on overflow.

fn (U16x32) * #

@[direct_array_access]
fn (a U16x32) * (b U16x32) U16x32
  • multiplies corresponding lanes, wrapping on overflow.

fn (U16x32) / #

@[direct_array_access]
fn (a U16x32) / (b U16x32) U16x32

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero.

fn (U16x32) add #

fn (a U16x32) add(b U16x32) U16x32

add returns a + b.

fn (U16x32) sub #

fn (a U16x32) sub(b U16x32) U16x32

sub returns a - b.

fn (U16x32) mul #

fn (a U16x32) mul(b U16x32) U16x32

mul returns a * b.

fn (U16x32) div #

fn (a U16x32) div(b U16x32) U16x32

div returns a / b.

fn (U16x32) minimum #

@[direct_array_access]
fn (a U16x32) minimum(b U16x32) U16x32

minimum returns the smaller of each pair of lanes.

fn (U16x32) maximum #

@[direct_array_access]
fn (a U16x32) maximum(b U16x32) U16x32

maximum returns the larger of each pair of lanes.

fn (U16x32) eq #

@[direct_array_access]
fn (a U16x32) eq(b U16x32) Mask16x32

eq returns a mask of the lanes where a is equal to b.

fn (U16x32) ne #

@[direct_array_access]
fn (a U16x32) ne(b U16x32) Mask16x32

ne returns a mask of the lanes where a is not equal to b.

fn (U16x32) lt #

@[direct_array_access]
fn (a U16x32) lt(b U16x32) Mask16x32

lt returns a mask of the lanes where a is less than b.

fn (U16x32) le #

@[direct_array_access]
fn (a U16x32) le(b U16x32) Mask16x32

le returns a mask of the lanes where a is less than or equal to b.

fn (U16x32) gt #

fn (a U16x32) gt(b U16x32) Mask16x32

gt returns a mask of the lanes where a is greater than b.

fn (U16x32) ge #

fn (a U16x32) ge(b U16x32) Mask16x32

ge returns a mask of the lanes where a is greater than or equal to b.

fn (U16x32) and #

@[direct_array_access]
fn (a U16x32) and(b U16x32) U16x32

and returns the bitwise AND of corresponding lanes.

fn (U16x32) or #

@[direct_array_access]
fn (a U16x32) or(b U16x32) U16x32

or returns the bitwise OR of corresponding lanes.

fn (U16x32) xor #

@[direct_array_access]
fn (a U16x32) xor(b U16x32) U16x32

xor returns the bitwise XOR of corresponding lanes.

fn (U16x32) not #

@[direct_array_access]
fn (a U16x32) not() U16x32

not returns the bitwise complement of each lane.

fn (U16x32) shl #

@[direct_array_access]
fn (a U16x32) shl(count u32) U16x32

shl shifts each lane left by count bits. A count of 16 or more shifts every bit out and returns zero lanes.

fn (U16x32) shr #

@[direct_array_access]
fn (a U16x32) shr(count u32) U16x32

shr shifts each lane right by count bits. A count of 16 or more shifts every bit out and returns zero lanes.

fn (U16x32) sum #

@[direct_array_access]
fn (v U16x32) sum() u16

sum adds the lanes, wrapping on overflow.

fn (U16x32) min_element #

@[direct_array_access]
fn (v U16x32) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (U16x32) min #

@[direct_array_access]
fn (v U16x32) min() u16

min returns the smallest lane value, the lane at index min_element().

fn (U16x32) max_element #

@[direct_array_access]
fn (v U16x32) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (U16x32) max #

@[direct_array_access]
fn (v U16x32) max() u16

max returns the largest lane value, the lane at index max_element().

fn (U16x32) dot #

fn (a U16x32) dot(b U16x32) u16

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (U16x32) to_i16x32 #

@[direct_array_access]
fn (v U16x32) to_i16x32() I16x32

to_i16x32 converts each lane to i16. It keeps the bits of each lane, so values wrap modulo 2^16.

struct U16x4 #

struct U16x4 {
mut:
	values [4]u16
}

U16x4 holds 4 u16 lanes (64 bits).

fn (U16x4) to_array #

fn (v U16x4) to_array() [4]u16

to_array returns the lanes in order.

fn (U16x4) [] #

@[direct_array_access]
fn (v U16x4) [] (i int) u16

[] returns lane i. It panics if i is out of range.

fn (U16x4) []= #

@[direct_array_access]
fn (mut v U16x4) []= (i int, value u16)

[]= sets lane i to value. It panics if i is out of range.

fn (U16x4) store #

fn (v U16x4) store(mut dst []u16) !

store writes all 4 lanes to the start of dst. It returns an error if dst has fewer than 4 elements.

fn (U16x4) store_part #

@[direct_array_access]
fn (v U16x4) store_part(mut dst []u16) !

store_part writes one lane for each element of dst, up to 4 elements. It returns an error if dst has more than 4 elements.

fn (U16x4) store_at #

@[direct_array_access]
fn (v U16x4) store_at(mut dst []u16, offset int)

store_at writes all 4 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 4 elements follow it.

fn (U16x4) + #

@[direct_array_access]
fn (a U16x4) + (b U16x4) U16x4
  • adds corresponding lanes, wrapping on overflow.

fn (U16x4) - #

@[direct_array_access]
fn (a U16x4) - (b U16x4) U16x4
  • subtracts corresponding lanes, wrapping on overflow.

fn (U16x4) * #

@[direct_array_access]
fn (a U16x4) * (b U16x4) U16x4
  • multiplies corresponding lanes, wrapping on overflow.

fn (U16x4) / #

@[direct_array_access]
fn (a U16x4) / (b U16x4) U16x4

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero.

fn (U16x4) add #

fn (a U16x4) add(b U16x4) U16x4

add returns a + b.

fn (U16x4) sub #

fn (a U16x4) sub(b U16x4) U16x4

sub returns a - b.

fn (U16x4) mul #

fn (a U16x4) mul(b U16x4) U16x4

mul returns a * b.

fn (U16x4) div #

fn (a U16x4) div(b U16x4) U16x4

div returns a / b.

fn (U16x4) minimum #

@[direct_array_access]
fn (a U16x4) minimum(b U16x4) U16x4

minimum returns the smaller of each pair of lanes.

fn (U16x4) maximum #

@[direct_array_access]
fn (a U16x4) maximum(b U16x4) U16x4

maximum returns the larger of each pair of lanes.

fn (U16x4) eq #

@[direct_array_access]
fn (a U16x4) eq(b U16x4) Mask16x4

eq returns a mask of the lanes where a is equal to b.

fn (U16x4) ne #

@[direct_array_access]
fn (a U16x4) ne(b U16x4) Mask16x4

ne returns a mask of the lanes where a is not equal to b.

fn (U16x4) lt #

@[direct_array_access]
fn (a U16x4) lt(b U16x4) Mask16x4

lt returns a mask of the lanes where a is less than b.

fn (U16x4) le #

@[direct_array_access]
fn (a U16x4) le(b U16x4) Mask16x4

le returns a mask of the lanes where a is less than or equal to b.

fn (U16x4) gt #

fn (a U16x4) gt(b U16x4) Mask16x4

gt returns a mask of the lanes where a is greater than b.

fn (U16x4) ge #

fn (a U16x4) ge(b U16x4) Mask16x4

ge returns a mask of the lanes where a is greater than or equal to b.

fn (U16x4) and #

@[direct_array_access]
fn (a U16x4) and(b U16x4) U16x4

and returns the bitwise AND of corresponding lanes.

fn (U16x4) or #

@[direct_array_access]
fn (a U16x4) or(b U16x4) U16x4

or returns the bitwise OR of corresponding lanes.

fn (U16x4) xor #

@[direct_array_access]
fn (a U16x4) xor(b U16x4) U16x4

xor returns the bitwise XOR of corresponding lanes.

fn (U16x4) not #

@[direct_array_access]
fn (a U16x4) not() U16x4

not returns the bitwise complement of each lane.

fn (U16x4) shl #

@[direct_array_access]
fn (a U16x4) shl(count u32) U16x4

shl shifts each lane left by count bits. A count of 16 or more shifts every bit out and returns zero lanes.

fn (U16x4) shr #

@[direct_array_access]
fn (a U16x4) shr(count u32) U16x4

shr shifts each lane right by count bits. A count of 16 or more shifts every bit out and returns zero lanes.

fn (U16x4) sum #

@[direct_array_access]
fn (v U16x4) sum() u16

sum adds the lanes, wrapping on overflow.

fn (U16x4) min_element #

@[direct_array_access]
fn (v U16x4) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (U16x4) min #

@[direct_array_access]
fn (v U16x4) min() u16

min returns the smallest lane value, the lane at index min_element().

fn (U16x4) max_element #

@[direct_array_access]
fn (v U16x4) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (U16x4) max #

@[direct_array_access]
fn (v U16x4) max() u16

max returns the largest lane value, the lane at index max_element().

fn (U16x4) dot #

fn (a U16x4) dot(b U16x4) u16

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (U16x4) to_i16x4 #

@[direct_array_access]
fn (v U16x4) to_i16x4() I16x4

to_i16x4 converts each lane to i16. It keeps the bits of each lane, so values wrap modulo 2^16.

struct U16x8 #

struct U16x8 {
mut:
	values [8]u16
}

U16x8 holds 8 u16 lanes (128 bits).

fn (U16x8) to_array #

fn (v U16x8) to_array() [8]u16

to_array returns the lanes in order.

fn (U16x8) [] #

@[direct_array_access]
fn (v U16x8) [] (i int) u16

[] returns lane i. It panics if i is out of range.

fn (U16x8) []= #

@[direct_array_access]
fn (mut v U16x8) []= (i int, value u16)

[]= sets lane i to value. It panics if i is out of range.

fn (U16x8) store #

fn (v U16x8) store(mut dst []u16) !

store writes all 8 lanes to the start of dst. It returns an error if dst has fewer than 8 elements.

fn (U16x8) store_part #

@[direct_array_access]
fn (v U16x8) store_part(mut dst []u16) !

store_part writes one lane for each element of dst, up to 8 elements. It returns an error if dst has more than 8 elements.

fn (U16x8) store_at #

@[direct_array_access]
fn (v U16x8) store_at(mut dst []u16, offset int)

store_at writes all 8 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 8 elements follow it.

fn (U16x8) + #

@[direct_array_access]
fn (a U16x8) + (b U16x8) U16x8
  • adds corresponding lanes, wrapping on overflow.

fn (U16x8) - #

@[direct_array_access]
fn (a U16x8) - (b U16x8) U16x8
  • subtracts corresponding lanes, wrapping on overflow.

fn (U16x8) * #

@[direct_array_access]
fn (a U16x8) * (b U16x8) U16x8
  • multiplies corresponding lanes, wrapping on overflow.

fn (U16x8) / #

@[direct_array_access]
fn (a U16x8) / (b U16x8) U16x8

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero.

fn (U16x8) add #

fn (a U16x8) add(b U16x8) U16x8

add returns a + b.

fn (U16x8) sub #

fn (a U16x8) sub(b U16x8) U16x8

sub returns a - b.

fn (U16x8) mul #

fn (a U16x8) mul(b U16x8) U16x8

mul returns a * b.

fn (U16x8) div #

fn (a U16x8) div(b U16x8) U16x8

div returns a / b.

fn (U16x8) minimum #

@[direct_array_access]
fn (a U16x8) minimum(b U16x8) U16x8

minimum returns the smaller of each pair of lanes.

fn (U16x8) maximum #

@[direct_array_access]
fn (a U16x8) maximum(b U16x8) U16x8

maximum returns the larger of each pair of lanes.

fn (U16x8) eq #

@[direct_array_access]
fn (a U16x8) eq(b U16x8) Mask16x8

eq returns a mask of the lanes where a is equal to b.

fn (U16x8) ne #

@[direct_array_access]
fn (a U16x8) ne(b U16x8) Mask16x8

ne returns a mask of the lanes where a is not equal to b.

fn (U16x8) lt #

@[direct_array_access]
fn (a U16x8) lt(b U16x8) Mask16x8

lt returns a mask of the lanes where a is less than b.

fn (U16x8) le #

@[direct_array_access]
fn (a U16x8) le(b U16x8) Mask16x8

le returns a mask of the lanes where a is less than or equal to b.

fn (U16x8) gt #

fn (a U16x8) gt(b U16x8) Mask16x8

gt returns a mask of the lanes where a is greater than b.

fn (U16x8) ge #

fn (a U16x8) ge(b U16x8) Mask16x8

ge returns a mask of the lanes where a is greater than or equal to b.

fn (U16x8) and #

@[direct_array_access]
fn (a U16x8) and(b U16x8) U16x8

and returns the bitwise AND of corresponding lanes.

fn (U16x8) or #

@[direct_array_access]
fn (a U16x8) or(b U16x8) U16x8

or returns the bitwise OR of corresponding lanes.

fn (U16x8) xor #

@[direct_array_access]
fn (a U16x8) xor(b U16x8) U16x8

xor returns the bitwise XOR of corresponding lanes.

fn (U16x8) not #

@[direct_array_access]
fn (a U16x8) not() U16x8

not returns the bitwise complement of each lane.

fn (U16x8) shl #

@[direct_array_access]
fn (a U16x8) shl(count u32) U16x8

shl shifts each lane left by count bits. A count of 16 or more shifts every bit out and returns zero lanes.

fn (U16x8) shr #

@[direct_array_access]
fn (a U16x8) shr(count u32) U16x8

shr shifts each lane right by count bits. A count of 16 or more shifts every bit out and returns zero lanes.

fn (U16x8) sum #

@[direct_array_access]
fn (v U16x8) sum() u16

sum adds the lanes, wrapping on overflow.

fn (U16x8) min_element #

@[direct_array_access]
fn (v U16x8) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (U16x8) min #

@[direct_array_access]
fn (v U16x8) min() u16

min returns the smallest lane value, the lane at index min_element().

fn (U16x8) max_element #

@[direct_array_access]
fn (v U16x8) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (U16x8) max #

@[direct_array_access]
fn (v U16x8) max() u16

max returns the largest lane value, the lane at index max_element().

fn (U16x8) dot #

fn (a U16x8) dot(b U16x8) u16

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (U16x8) to_i16x8 #

@[direct_array_access]
fn (v U16x8) to_i16x8() I16x8

to_i16x8 converts each lane to i16. It keeps the bits of each lane, so values wrap modulo 2^16.

struct U32x16 #

struct U32x16 {
mut:
	values [16]u32
}

U32x16 holds 16 u32 lanes (512 bits).

fn (U32x16) to_array #

fn (v U32x16) to_array() [16]u32

to_array returns the lanes in order.

fn (U32x16) [] #

@[direct_array_access]
fn (v U32x16) [] (i int) u32

[] returns lane i. It panics if i is out of range.

fn (U32x16) []= #

@[direct_array_access]
fn (mut v U32x16) []= (i int, value u32)

[]= sets lane i to value. It panics if i is out of range.

fn (U32x16) store #

fn (v U32x16) store(mut dst []u32) !

store writes all 16 lanes to the start of dst. It returns an error if dst has fewer than 16 elements.

fn (U32x16) store_part #

@[direct_array_access]
fn (v U32x16) store_part(mut dst []u32) !

store_part writes one lane for each element of dst, up to 16 elements. It returns an error if dst has more than 16 elements.

fn (U32x16) store_at #

@[direct_array_access]
fn (v U32x16) store_at(mut dst []u32, offset int)

store_at writes all 16 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 16 elements follow it.

fn (U32x16) + #

@[direct_array_access]
fn (a U32x16) + (b U32x16) U32x16
  • adds corresponding lanes, wrapping on overflow.

fn (U32x16) - #

@[direct_array_access]
fn (a U32x16) - (b U32x16) U32x16
  • subtracts corresponding lanes, wrapping on overflow.

fn (U32x16) * #

@[direct_array_access]
fn (a U32x16) * (b U32x16) U32x16
  • multiplies corresponding lanes, wrapping on overflow.

fn (U32x16) / #

@[direct_array_access]
fn (a U32x16) / (b U32x16) U32x16

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero.

fn (U32x16) add #

fn (a U32x16) add(b U32x16) U32x16

add returns a + b.

fn (U32x16) sub #

fn (a U32x16) sub(b U32x16) U32x16

sub returns a - b.

fn (U32x16) mul #

fn (a U32x16) mul(b U32x16) U32x16

mul returns a * b.

fn (U32x16) div #

fn (a U32x16) div(b U32x16) U32x16

div returns a / b.

fn (U32x16) minimum #

@[direct_array_access]
fn (a U32x16) minimum(b U32x16) U32x16

minimum returns the smaller of each pair of lanes.

fn (U32x16) maximum #

@[direct_array_access]
fn (a U32x16) maximum(b U32x16) U32x16

maximum returns the larger of each pair of lanes.

fn (U32x16) eq #

@[direct_array_access]
fn (a U32x16) eq(b U32x16) Mask32x16

eq returns a mask of the lanes where a is equal to b.

fn (U32x16) ne #

@[direct_array_access]
fn (a U32x16) ne(b U32x16) Mask32x16

ne returns a mask of the lanes where a is not equal to b.

fn (U32x16) lt #

@[direct_array_access]
fn (a U32x16) lt(b U32x16) Mask32x16

lt returns a mask of the lanes where a is less than b.

fn (U32x16) le #

@[direct_array_access]
fn (a U32x16) le(b U32x16) Mask32x16

le returns a mask of the lanes where a is less than or equal to b.

fn (U32x16) gt #

fn (a U32x16) gt(b U32x16) Mask32x16

gt returns a mask of the lanes where a is greater than b.

fn (U32x16) ge #

fn (a U32x16) ge(b U32x16) Mask32x16

ge returns a mask of the lanes where a is greater than or equal to b.

fn (U32x16) and #

@[direct_array_access]
fn (a U32x16) and(b U32x16) U32x16

and returns the bitwise AND of corresponding lanes.

fn (U32x16) or #

@[direct_array_access]
fn (a U32x16) or(b U32x16) U32x16

or returns the bitwise OR of corresponding lanes.

fn (U32x16) xor #

@[direct_array_access]
fn (a U32x16) xor(b U32x16) U32x16

xor returns the bitwise XOR of corresponding lanes.

fn (U32x16) not #

@[direct_array_access]
fn (a U32x16) not() U32x16

not returns the bitwise complement of each lane.

fn (U32x16) shl #

@[direct_array_access]
fn (a U32x16) shl(count u32) U32x16

shl shifts each lane left by count bits. A count of 32 or more shifts every bit out and returns zero lanes.

fn (U32x16) shr #

@[direct_array_access]
fn (a U32x16) shr(count u32) U32x16

shr shifts each lane right by count bits. A count of 32 or more shifts every bit out and returns zero lanes.

fn (U32x16) sum #

@[direct_array_access]
fn (v U32x16) sum() u32

sum adds the lanes, wrapping on overflow.

fn (U32x16) min_element #

@[direct_array_access]
fn (v U32x16) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (U32x16) min #

@[direct_array_access]
fn (v U32x16) min() u32

min returns the smallest lane value, the lane at index min_element().

fn (U32x16) max_element #

@[direct_array_access]
fn (v U32x16) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (U32x16) max #

@[direct_array_access]
fn (v U32x16) max() u32

max returns the largest lane value, the lane at index max_element().

fn (U32x16) dot #

fn (a U32x16) dot(b U32x16) u32

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (U32x16) to_f32x16 #

@[direct_array_access]
fn (v U32x16) to_f32x16() F32x16

to_f32x16 converts each lane to f32. It rounds to the nearest f32 value.

fn (U32x16) to_i32x16 #

@[direct_array_access]
fn (v U32x16) to_i32x16() I32x16

to_i32x16 converts each lane to i32. It keeps the bits of each lane, so values wrap modulo 2^32.

struct U32x2 #

struct U32x2 {
mut:
	values [2]u32
}

U32x2 holds 2 u32 lanes (64 bits).

fn (U32x2) to_array #

fn (v U32x2) to_array() [2]u32

to_array returns the lanes in order.

fn (U32x2) [] #

@[direct_array_access]
fn (v U32x2) [] (i int) u32

[] returns lane i. It panics if i is out of range.

fn (U32x2) []= #

@[direct_array_access]
fn (mut v U32x2) []= (i int, value u32)

[]= sets lane i to value. It panics if i is out of range.

fn (U32x2) store #

fn (v U32x2) store(mut dst []u32) !

store writes all 2 lanes to the start of dst. It returns an error if dst has fewer than 2 elements.

fn (U32x2) store_part #

@[direct_array_access]
fn (v U32x2) store_part(mut dst []u32) !

store_part writes one lane for each element of dst, up to 2 elements. It returns an error if dst has more than 2 elements.

fn (U32x2) store_at #

@[direct_array_access]
fn (v U32x2) store_at(mut dst []u32, offset int)

store_at writes all 2 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 2 elements follow it.

fn (U32x2) + #

@[direct_array_access]
fn (a U32x2) + (b U32x2) U32x2
  • adds corresponding lanes, wrapping on overflow.

fn (U32x2) - #

@[direct_array_access]
fn (a U32x2) - (b U32x2) U32x2
  • subtracts corresponding lanes, wrapping on overflow.

fn (U32x2) * #

@[direct_array_access]
fn (a U32x2) * (b U32x2) U32x2
  • multiplies corresponding lanes, wrapping on overflow.

fn (U32x2) / #

@[direct_array_access]
fn (a U32x2) / (b U32x2) U32x2

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero.

fn (U32x2) add #

fn (a U32x2) add(b U32x2) U32x2

add returns a + b.

fn (U32x2) sub #

fn (a U32x2) sub(b U32x2) U32x2

sub returns a - b.

fn (U32x2) mul #

fn (a U32x2) mul(b U32x2) U32x2

mul returns a * b.

fn (U32x2) div #

fn (a U32x2) div(b U32x2) U32x2

div returns a / b.

fn (U32x2) minimum #

@[direct_array_access]
fn (a U32x2) minimum(b U32x2) U32x2

minimum returns the smaller of each pair of lanes.

fn (U32x2) maximum #

@[direct_array_access]
fn (a U32x2) maximum(b U32x2) U32x2

maximum returns the larger of each pair of lanes.

fn (U32x2) eq #

@[direct_array_access]
fn (a U32x2) eq(b U32x2) Mask32x2

eq returns a mask of the lanes where a is equal to b.

fn (U32x2) ne #

@[direct_array_access]
fn (a U32x2) ne(b U32x2) Mask32x2

ne returns a mask of the lanes where a is not equal to b.

fn (U32x2) lt #

@[direct_array_access]
fn (a U32x2) lt(b U32x2) Mask32x2

lt returns a mask of the lanes where a is less than b.

fn (U32x2) le #

@[direct_array_access]
fn (a U32x2) le(b U32x2) Mask32x2

le returns a mask of the lanes where a is less than or equal to b.

fn (U32x2) gt #

fn (a U32x2) gt(b U32x2) Mask32x2

gt returns a mask of the lanes where a is greater than b.

fn (U32x2) ge #

fn (a U32x2) ge(b U32x2) Mask32x2

ge returns a mask of the lanes where a is greater than or equal to b.

fn (U32x2) and #

@[direct_array_access]
fn (a U32x2) and(b U32x2) U32x2

and returns the bitwise AND of corresponding lanes.

fn (U32x2) or #

@[direct_array_access]
fn (a U32x2) or(b U32x2) U32x2

or returns the bitwise OR of corresponding lanes.

fn (U32x2) xor #

@[direct_array_access]
fn (a U32x2) xor(b U32x2) U32x2

xor returns the bitwise XOR of corresponding lanes.

fn (U32x2) not #

@[direct_array_access]
fn (a U32x2) not() U32x2

not returns the bitwise complement of each lane.

fn (U32x2) shl #

@[direct_array_access]
fn (a U32x2) shl(count u32) U32x2

shl shifts each lane left by count bits. A count of 32 or more shifts every bit out and returns zero lanes.

fn (U32x2) shr #

@[direct_array_access]
fn (a U32x2) shr(count u32) U32x2

shr shifts each lane right by count bits. A count of 32 or more shifts every bit out and returns zero lanes.

fn (U32x2) sum #

@[direct_array_access]
fn (v U32x2) sum() u32

sum adds the lanes, wrapping on overflow.

fn (U32x2) min_element #

@[direct_array_access]
fn (v U32x2) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (U32x2) min #

@[direct_array_access]
fn (v U32x2) min() u32

min returns the smallest lane value, the lane at index min_element().

fn (U32x2) max_element #

@[direct_array_access]
fn (v U32x2) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (U32x2) max #

@[direct_array_access]
fn (v U32x2) max() u32

max returns the largest lane value, the lane at index max_element().

fn (U32x2) dot #

fn (a U32x2) dot(b U32x2) u32

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (U32x2) to_f32x2 #

@[direct_array_access]
fn (v U32x2) to_f32x2() F32x2

to_f32x2 converts each lane to f32. It rounds to the nearest f32 value.

fn (U32x2) to_i32x2 #

@[direct_array_access]
fn (v U32x2) to_i32x2() I32x2

to_i32x2 converts each lane to i32. It keeps the bits of each lane, so values wrap modulo 2^32.

struct U32x4 #

struct U32x4 {
mut:
	values [4]u32
}

U32x4 holds 4 u32 lanes (128 bits).

fn (U32x4) to_array #

fn (v U32x4) to_array() [4]u32

to_array returns the lanes in order.

fn (U32x4) [] #

@[direct_array_access]
fn (v U32x4) [] (i int) u32

[] returns lane i. It panics if i is out of range.

fn (U32x4) []= #

@[direct_array_access]
fn (mut v U32x4) []= (i int, value u32)

[]= sets lane i to value. It panics if i is out of range.

fn (U32x4) store #

fn (v U32x4) store(mut dst []u32) !

store writes all 4 lanes to the start of dst. It returns an error if dst has fewer than 4 elements.

fn (U32x4) store_part #

@[direct_array_access]
fn (v U32x4) store_part(mut dst []u32) !

store_part writes one lane for each element of dst, up to 4 elements. It returns an error if dst has more than 4 elements.

fn (U32x4) store_at #

@[direct_array_access]
fn (v U32x4) store_at(mut dst []u32, offset int)

store_at writes all 4 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 4 elements follow it.

fn (U32x4) + #

@[direct_array_access]
fn (a U32x4) + (b U32x4) U32x4
  • adds corresponding lanes, wrapping on overflow.

fn (U32x4) - #

@[direct_array_access]
fn (a U32x4) - (b U32x4) U32x4
  • subtracts corresponding lanes, wrapping on overflow.

fn (U32x4) * #

@[direct_array_access]
fn (a U32x4) * (b U32x4) U32x4
  • multiplies corresponding lanes, wrapping on overflow.

fn (U32x4) / #

@[direct_array_access]
fn (a U32x4) / (b U32x4) U32x4

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero.

fn (U32x4) add #

fn (a U32x4) add(b U32x4) U32x4

add returns a + b.

fn (U32x4) sub #

fn (a U32x4) sub(b U32x4) U32x4

sub returns a - b.

fn (U32x4) mul #

fn (a U32x4) mul(b U32x4) U32x4

mul returns a * b.

fn (U32x4) div #

fn (a U32x4) div(b U32x4) U32x4

div returns a / b.

fn (U32x4) minimum #

@[direct_array_access]
fn (a U32x4) minimum(b U32x4) U32x4

minimum returns the smaller of each pair of lanes.

fn (U32x4) maximum #

@[direct_array_access]
fn (a U32x4) maximum(b U32x4) U32x4

maximum returns the larger of each pair of lanes.

fn (U32x4) eq #

@[direct_array_access]
fn (a U32x4) eq(b U32x4) Mask32x4

eq returns a mask of the lanes where a is equal to b.

fn (U32x4) ne #

@[direct_array_access]
fn (a U32x4) ne(b U32x4) Mask32x4

ne returns a mask of the lanes where a is not equal to b.

fn (U32x4) lt #

@[direct_array_access]
fn (a U32x4) lt(b U32x4) Mask32x4

lt returns a mask of the lanes where a is less than b.

fn (U32x4) le #

@[direct_array_access]
fn (a U32x4) le(b U32x4) Mask32x4

le returns a mask of the lanes where a is less than or equal to b.

fn (U32x4) gt #

fn (a U32x4) gt(b U32x4) Mask32x4

gt returns a mask of the lanes where a is greater than b.

fn (U32x4) ge #

fn (a U32x4) ge(b U32x4) Mask32x4

ge returns a mask of the lanes where a is greater than or equal to b.

fn (U32x4) and #

@[direct_array_access]
fn (a U32x4) and(b U32x4) U32x4

and returns the bitwise AND of corresponding lanes.

fn (U32x4) or #

@[direct_array_access]
fn (a U32x4) or(b U32x4) U32x4

or returns the bitwise OR of corresponding lanes.

fn (U32x4) xor #

@[direct_array_access]
fn (a U32x4) xor(b U32x4) U32x4

xor returns the bitwise XOR of corresponding lanes.

fn (U32x4) not #

@[direct_array_access]
fn (a U32x4) not() U32x4

not returns the bitwise complement of each lane.

fn (U32x4) shl #

@[direct_array_access]
fn (a U32x4) shl(count u32) U32x4

shl shifts each lane left by count bits. A count of 32 or more shifts every bit out and returns zero lanes.

fn (U32x4) shr #

@[direct_array_access]
fn (a U32x4) shr(count u32) U32x4

shr shifts each lane right by count bits. A count of 32 or more shifts every bit out and returns zero lanes.

fn (U32x4) sum #

@[direct_array_access]
fn (v U32x4) sum() u32

sum adds the lanes, wrapping on overflow.

fn (U32x4) min_element #

@[direct_array_access]
fn (v U32x4) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (U32x4) min #

@[direct_array_access]
fn (v U32x4) min() u32

min returns the smallest lane value, the lane at index min_element().

fn (U32x4) max_element #

@[direct_array_access]
fn (v U32x4) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (U32x4) max #

@[direct_array_access]
fn (v U32x4) max() u32

max returns the largest lane value, the lane at index max_element().

fn (U32x4) dot #

fn (a U32x4) dot(b U32x4) u32

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (U32x4) to_f32x4 #

@[direct_array_access]
fn (v U32x4) to_f32x4() F32x4

to_f32x4 converts each lane to f32. It rounds to the nearest f32 value.

fn (U32x4) to_i32x4 #

@[direct_array_access]
fn (v U32x4) to_i32x4() I32x4

to_i32x4 converts each lane to i32. It keeps the bits of each lane, so values wrap modulo 2^32.

struct U32x8 #

struct U32x8 {
mut:
	values [8]u32
}

U32x8 holds 8 u32 lanes (256 bits).

fn (U32x8) to_array #

fn (v U32x8) to_array() [8]u32

to_array returns the lanes in order.

fn (U32x8) [] #

@[direct_array_access]
fn (v U32x8) [] (i int) u32

[] returns lane i. It panics if i is out of range.

fn (U32x8) []= #

@[direct_array_access]
fn (mut v U32x8) []= (i int, value u32)

[]= sets lane i to value. It panics if i is out of range.

fn (U32x8) store #

fn (v U32x8) store(mut dst []u32) !

store writes all 8 lanes to the start of dst. It returns an error if dst has fewer than 8 elements.

fn (U32x8) store_part #

@[direct_array_access]
fn (v U32x8) store_part(mut dst []u32) !

store_part writes one lane for each element of dst, up to 8 elements. It returns an error if dst has more than 8 elements.

fn (U32x8) store_at #

@[direct_array_access]
fn (v U32x8) store_at(mut dst []u32, offset int)

store_at writes all 8 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 8 elements follow it.

fn (U32x8) + #

@[direct_array_access]
fn (a U32x8) + (b U32x8) U32x8
  • adds corresponding lanes, wrapping on overflow.

fn (U32x8) - #

@[direct_array_access]
fn (a U32x8) - (b U32x8) U32x8
  • subtracts corresponding lanes, wrapping on overflow.

fn (U32x8) * #

@[direct_array_access]
fn (a U32x8) * (b U32x8) U32x8
  • multiplies corresponding lanes, wrapping on overflow.

fn (U32x8) / #

@[direct_array_access]
fn (a U32x8) / (b U32x8) U32x8

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero.

fn (U32x8) add #

fn (a U32x8) add(b U32x8) U32x8

add returns a + b.

fn (U32x8) sub #

fn (a U32x8) sub(b U32x8) U32x8

sub returns a - b.

fn (U32x8) mul #

fn (a U32x8) mul(b U32x8) U32x8

mul returns a * b.

fn (U32x8) div #

fn (a U32x8) div(b U32x8) U32x8

div returns a / b.

fn (U32x8) minimum #

@[direct_array_access]
fn (a U32x8) minimum(b U32x8) U32x8

minimum returns the smaller of each pair of lanes.

fn (U32x8) maximum #

@[direct_array_access]
fn (a U32x8) maximum(b U32x8) U32x8

maximum returns the larger of each pair of lanes.

fn (U32x8) eq #

@[direct_array_access]
fn (a U32x8) eq(b U32x8) Mask32x8

eq returns a mask of the lanes where a is equal to b.

fn (U32x8) ne #

@[direct_array_access]
fn (a U32x8) ne(b U32x8) Mask32x8

ne returns a mask of the lanes where a is not equal to b.

fn (U32x8) lt #

@[direct_array_access]
fn (a U32x8) lt(b U32x8) Mask32x8

lt returns a mask of the lanes where a is less than b.

fn (U32x8) le #

@[direct_array_access]
fn (a U32x8) le(b U32x8) Mask32x8

le returns a mask of the lanes where a is less than or equal to b.

fn (U32x8) gt #

fn (a U32x8) gt(b U32x8) Mask32x8

gt returns a mask of the lanes where a is greater than b.

fn (U32x8) ge #

fn (a U32x8) ge(b U32x8) Mask32x8

ge returns a mask of the lanes where a is greater than or equal to b.

fn (U32x8) and #

@[direct_array_access]
fn (a U32x8) and(b U32x8) U32x8

and returns the bitwise AND of corresponding lanes.

fn (U32x8) or #

@[direct_array_access]
fn (a U32x8) or(b U32x8) U32x8

or returns the bitwise OR of corresponding lanes.

fn (U32x8) xor #

@[direct_array_access]
fn (a U32x8) xor(b U32x8) U32x8

xor returns the bitwise XOR of corresponding lanes.

fn (U32x8) not #

@[direct_array_access]
fn (a U32x8) not() U32x8

not returns the bitwise complement of each lane.

fn (U32x8) shl #

@[direct_array_access]
fn (a U32x8) shl(count u32) U32x8

shl shifts each lane left by count bits. A count of 32 or more shifts every bit out and returns zero lanes.

fn (U32x8) shr #

@[direct_array_access]
fn (a U32x8) shr(count u32) U32x8

shr shifts each lane right by count bits. A count of 32 or more shifts every bit out and returns zero lanes.

fn (U32x8) sum #

@[direct_array_access]
fn (v U32x8) sum() u32

sum adds the lanes, wrapping on overflow.

fn (U32x8) min_element #

@[direct_array_access]
fn (v U32x8) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (U32x8) min #

@[direct_array_access]
fn (v U32x8) min() u32

min returns the smallest lane value, the lane at index min_element().

fn (U32x8) max_element #

@[direct_array_access]
fn (v U32x8) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (U32x8) max #

@[direct_array_access]
fn (v U32x8) max() u32

max returns the largest lane value, the lane at index max_element().

fn (U32x8) dot #

fn (a U32x8) dot(b U32x8) u32

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (U32x8) to_f32x8 #

@[direct_array_access]
fn (v U32x8) to_f32x8() F32x8

to_f32x8 converts each lane to f32. It rounds to the nearest f32 value.

fn (U32x8) to_i32x8 #

@[direct_array_access]
fn (v U32x8) to_i32x8() I32x8

to_i32x8 converts each lane to i32. It keeps the bits of each lane, so values wrap modulo 2^32.

struct U64x2 #

struct U64x2 {
mut:
	values [2]u64
}

U64x2 holds 2 u64 lanes (128 bits).

fn (U64x2) to_array #

fn (v U64x2) to_array() [2]u64

to_array returns the lanes in order.

fn (U64x2) [] #

@[direct_array_access]
fn (v U64x2) [] (i int) u64

[] returns lane i. It panics if i is out of range.

fn (U64x2) []= #

@[direct_array_access]
fn (mut v U64x2) []= (i int, value u64)

[]= sets lane i to value. It panics if i is out of range.

fn (U64x2) store #

fn (v U64x2) store(mut dst []u64) !

store writes all 2 lanes to the start of dst. It returns an error if dst has fewer than 2 elements.

fn (U64x2) store_part #

@[direct_array_access]
fn (v U64x2) store_part(mut dst []u64) !

store_part writes one lane for each element of dst, up to 2 elements. It returns an error if dst has more than 2 elements.

fn (U64x2) store_at #

@[direct_array_access]
fn (v U64x2) store_at(mut dst []u64, offset int)

store_at writes all 2 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 2 elements follow it.

fn (U64x2) + #

@[direct_array_access]
fn (a U64x2) + (b U64x2) U64x2
  • adds corresponding lanes, wrapping on overflow.

fn (U64x2) - #

@[direct_array_access]
fn (a U64x2) - (b U64x2) U64x2
  • subtracts corresponding lanes, wrapping on overflow.

fn (U64x2) * #

@[direct_array_access]
fn (a U64x2) * (b U64x2) U64x2
  • multiplies corresponding lanes, wrapping on overflow.

fn (U64x2) / #

@[direct_array_access]
fn (a U64x2) / (b U64x2) U64x2

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero.

fn (U64x2) add #

fn (a U64x2) add(b U64x2) U64x2

add returns a + b.

fn (U64x2) sub #

fn (a U64x2) sub(b U64x2) U64x2

sub returns a - b.

fn (U64x2) mul #

fn (a U64x2) mul(b U64x2) U64x2

mul returns a * b.

fn (U64x2) div #

fn (a U64x2) div(b U64x2) U64x2

div returns a / b.

fn (U64x2) minimum #

@[direct_array_access]
fn (a U64x2) minimum(b U64x2) U64x2

minimum returns the smaller of each pair of lanes.

fn (U64x2) maximum #

@[direct_array_access]
fn (a U64x2) maximum(b U64x2) U64x2

maximum returns the larger of each pair of lanes.

fn (U64x2) eq #

@[direct_array_access]
fn (a U64x2) eq(b U64x2) Mask64x2

eq returns a mask of the lanes where a is equal to b.

fn (U64x2) ne #

@[direct_array_access]
fn (a U64x2) ne(b U64x2) Mask64x2

ne returns a mask of the lanes where a is not equal to b.

fn (U64x2) lt #

@[direct_array_access]
fn (a U64x2) lt(b U64x2) Mask64x2

lt returns a mask of the lanes where a is less than b.

fn (U64x2) le #

@[direct_array_access]
fn (a U64x2) le(b U64x2) Mask64x2

le returns a mask of the lanes where a is less than or equal to b.

fn (U64x2) gt #

fn (a U64x2) gt(b U64x2) Mask64x2

gt returns a mask of the lanes where a is greater than b.

fn (U64x2) ge #

fn (a U64x2) ge(b U64x2) Mask64x2

ge returns a mask of the lanes where a is greater than or equal to b.

fn (U64x2) and #

@[direct_array_access]
fn (a U64x2) and(b U64x2) U64x2

and returns the bitwise AND of corresponding lanes.

fn (U64x2) or #

@[direct_array_access]
fn (a U64x2) or(b U64x2) U64x2

or returns the bitwise OR of corresponding lanes.

fn (U64x2) xor #

@[direct_array_access]
fn (a U64x2) xor(b U64x2) U64x2

xor returns the bitwise XOR of corresponding lanes.

fn (U64x2) not #

@[direct_array_access]
fn (a U64x2) not() U64x2

not returns the bitwise complement of each lane.

fn (U64x2) shl #

@[direct_array_access]
fn (a U64x2) shl(count u32) U64x2

shl shifts each lane left by count bits. A count of 64 or more shifts every bit out and returns zero lanes.

fn (U64x2) shr #

@[direct_array_access]
fn (a U64x2) shr(count u32) U64x2

shr shifts each lane right by count bits. A count of 64 or more shifts every bit out and returns zero lanes.

fn (U64x2) sum #

@[direct_array_access]
fn (v U64x2) sum() u64

sum adds the lanes, wrapping on overflow.

fn (U64x2) min_element #

@[direct_array_access]
fn (v U64x2) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (U64x2) min #

@[direct_array_access]
fn (v U64x2) min() u64

min returns the smallest lane value, the lane at index min_element().

fn (U64x2) max_element #

@[direct_array_access]
fn (v U64x2) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (U64x2) max #

@[direct_array_access]
fn (v U64x2) max() u64

max returns the largest lane value, the lane at index max_element().

fn (U64x2) dot #

fn (a U64x2) dot(b U64x2) u64

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (U64x2) to_f64x2 #

@[direct_array_access]
fn (v U64x2) to_f64x2() F64x2

to_f64x2 converts each lane to f64. It rounds to the nearest f64 value.

fn (U64x2) to_i64x2 #

@[direct_array_access]
fn (v U64x2) to_i64x2() I64x2

to_i64x2 converts each lane to i64. It keeps the bits of each lane, so values wrap modulo 2^64.

struct U64x4 #

struct U64x4 {
mut:
	values [4]u64
}

U64x4 holds 4 u64 lanes (256 bits).

fn (U64x4) to_array #

fn (v U64x4) to_array() [4]u64

to_array returns the lanes in order.

fn (U64x4) [] #

@[direct_array_access]
fn (v U64x4) [] (i int) u64

[] returns lane i. It panics if i is out of range.

fn (U64x4) []= #

@[direct_array_access]
fn (mut v U64x4) []= (i int, value u64)

[]= sets lane i to value. It panics if i is out of range.

fn (U64x4) store #

fn (v U64x4) store(mut dst []u64) !

store writes all 4 lanes to the start of dst. It returns an error if dst has fewer than 4 elements.

fn (U64x4) store_part #

@[direct_array_access]
fn (v U64x4) store_part(mut dst []u64) !

store_part writes one lane for each element of dst, up to 4 elements. It returns an error if dst has more than 4 elements.

fn (U64x4) store_at #

@[direct_array_access]
fn (v U64x4) store_at(mut dst []u64, offset int)

store_at writes all 4 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 4 elements follow it.

fn (U64x4) + #

@[direct_array_access]
fn (a U64x4) + (b U64x4) U64x4
  • adds corresponding lanes, wrapping on overflow.

fn (U64x4) - #

@[direct_array_access]
fn (a U64x4) - (b U64x4) U64x4
  • subtracts corresponding lanes, wrapping on overflow.

fn (U64x4) * #

@[direct_array_access]
fn (a U64x4) * (b U64x4) U64x4
  • multiplies corresponding lanes, wrapping on overflow.

fn (U64x4) / #

@[direct_array_access]
fn (a U64x4) / (b U64x4) U64x4

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero.

fn (U64x4) add #

fn (a U64x4) add(b U64x4) U64x4

add returns a + b.

fn (U64x4) sub #

fn (a U64x4) sub(b U64x4) U64x4

sub returns a - b.

fn (U64x4) mul #

fn (a U64x4) mul(b U64x4) U64x4

mul returns a * b.

fn (U64x4) div #

fn (a U64x4) div(b U64x4) U64x4

div returns a / b.

fn (U64x4) minimum #

@[direct_array_access]
fn (a U64x4) minimum(b U64x4) U64x4

minimum returns the smaller of each pair of lanes.

fn (U64x4) maximum #

@[direct_array_access]
fn (a U64x4) maximum(b U64x4) U64x4

maximum returns the larger of each pair of lanes.

fn (U64x4) eq #

@[direct_array_access]
fn (a U64x4) eq(b U64x4) Mask64x4

eq returns a mask of the lanes where a is equal to b.

fn (U64x4) ne #

@[direct_array_access]
fn (a U64x4) ne(b U64x4) Mask64x4

ne returns a mask of the lanes where a is not equal to b.

fn (U64x4) lt #

@[direct_array_access]
fn (a U64x4) lt(b U64x4) Mask64x4

lt returns a mask of the lanes where a is less than b.

fn (U64x4) le #

@[direct_array_access]
fn (a U64x4) le(b U64x4) Mask64x4

le returns a mask of the lanes where a is less than or equal to b.

fn (U64x4) gt #

fn (a U64x4) gt(b U64x4) Mask64x4

gt returns a mask of the lanes where a is greater than b.

fn (U64x4) ge #

fn (a U64x4) ge(b U64x4) Mask64x4

ge returns a mask of the lanes where a is greater than or equal to b.

fn (U64x4) and #

@[direct_array_access]
fn (a U64x4) and(b U64x4) U64x4

and returns the bitwise AND of corresponding lanes.

fn (U64x4) or #

@[direct_array_access]
fn (a U64x4) or(b U64x4) U64x4

or returns the bitwise OR of corresponding lanes.

fn (U64x4) xor #

@[direct_array_access]
fn (a U64x4) xor(b U64x4) U64x4

xor returns the bitwise XOR of corresponding lanes.

fn (U64x4) not #

@[direct_array_access]
fn (a U64x4) not() U64x4

not returns the bitwise complement of each lane.

fn (U64x4) shl #

@[direct_array_access]
fn (a U64x4) shl(count u32) U64x4

shl shifts each lane left by count bits. A count of 64 or more shifts every bit out and returns zero lanes.

fn (U64x4) shr #

@[direct_array_access]
fn (a U64x4) shr(count u32) U64x4

shr shifts each lane right by count bits. A count of 64 or more shifts every bit out and returns zero lanes.

fn (U64x4) sum #

@[direct_array_access]
fn (v U64x4) sum() u64

sum adds the lanes, wrapping on overflow.

fn (U64x4) min_element #

@[direct_array_access]
fn (v U64x4) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (U64x4) min #

@[direct_array_access]
fn (v U64x4) min() u64

min returns the smallest lane value, the lane at index min_element().

fn (U64x4) max_element #

@[direct_array_access]
fn (v U64x4) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (U64x4) max #

@[direct_array_access]
fn (v U64x4) max() u64

max returns the largest lane value, the lane at index max_element().

fn (U64x4) dot #

fn (a U64x4) dot(b U64x4) u64

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (U64x4) to_f64x4 #

@[direct_array_access]
fn (v U64x4) to_f64x4() F64x4

to_f64x4 converts each lane to f64. It rounds to the nearest f64 value.

fn (U64x4) to_i64x4 #

@[direct_array_access]
fn (v U64x4) to_i64x4() I64x4

to_i64x4 converts each lane to i64. It keeps the bits of each lane, so values wrap modulo 2^64.

struct U64x8 #

struct U64x8 {
mut:
	values [8]u64
}

U64x8 holds 8 u64 lanes (512 bits).

fn (U64x8) to_array #

fn (v U64x8) to_array() [8]u64

to_array returns the lanes in order.

fn (U64x8) [] #

@[direct_array_access]
fn (v U64x8) [] (i int) u64

[] returns lane i. It panics if i is out of range.

fn (U64x8) []= #

@[direct_array_access]
fn (mut v U64x8) []= (i int, value u64)

[]= sets lane i to value. It panics if i is out of range.

fn (U64x8) store #

fn (v U64x8) store(mut dst []u64) !

store writes all 8 lanes to the start of dst. It returns an error if dst has fewer than 8 elements.

fn (U64x8) store_part #

@[direct_array_access]
fn (v U64x8) store_part(mut dst []u64) !

store_part writes one lane for each element of dst, up to 8 elements. It returns an error if dst has more than 8 elements.

fn (U64x8) store_at #

@[direct_array_access]
fn (v U64x8) store_at(mut dst []u64, offset int)

store_at writes all 8 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 8 elements follow it.

fn (U64x8) + #

@[direct_array_access]
fn (a U64x8) + (b U64x8) U64x8
  • adds corresponding lanes, wrapping on overflow.

fn (U64x8) - #

@[direct_array_access]
fn (a U64x8) - (b U64x8) U64x8
  • subtracts corresponding lanes, wrapping on overflow.

fn (U64x8) * #

@[direct_array_access]
fn (a U64x8) * (b U64x8) U64x8
  • multiplies corresponding lanes, wrapping on overflow.

fn (U64x8) / #

@[direct_array_access]
fn (a U64x8) / (b U64x8) U64x8

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero.

fn (U64x8) add #

fn (a U64x8) add(b U64x8) U64x8

add returns a + b.

fn (U64x8) sub #

fn (a U64x8) sub(b U64x8) U64x8

sub returns a - b.

fn (U64x8) mul #

fn (a U64x8) mul(b U64x8) U64x8

mul returns a * b.

fn (U64x8) div #

fn (a U64x8) div(b U64x8) U64x8

div returns a / b.

fn (U64x8) minimum #

@[direct_array_access]
fn (a U64x8) minimum(b U64x8) U64x8

minimum returns the smaller of each pair of lanes.

fn (U64x8) maximum #

@[direct_array_access]
fn (a U64x8) maximum(b U64x8) U64x8

maximum returns the larger of each pair of lanes.

fn (U64x8) eq #

@[direct_array_access]
fn (a U64x8) eq(b U64x8) Mask64x8

eq returns a mask of the lanes where a is equal to b.

fn (U64x8) ne #

@[direct_array_access]
fn (a U64x8) ne(b U64x8) Mask64x8

ne returns a mask of the lanes where a is not equal to b.

fn (U64x8) lt #

@[direct_array_access]
fn (a U64x8) lt(b U64x8) Mask64x8

lt returns a mask of the lanes where a is less than b.

fn (U64x8) le #

@[direct_array_access]
fn (a U64x8) le(b U64x8) Mask64x8

le returns a mask of the lanes where a is less than or equal to b.

fn (U64x8) gt #

fn (a U64x8) gt(b U64x8) Mask64x8

gt returns a mask of the lanes where a is greater than b.

fn (U64x8) ge #

fn (a U64x8) ge(b U64x8) Mask64x8

ge returns a mask of the lanes where a is greater than or equal to b.

fn (U64x8) and #

@[direct_array_access]
fn (a U64x8) and(b U64x8) U64x8

and returns the bitwise AND of corresponding lanes.

fn (U64x8) or #

@[direct_array_access]
fn (a U64x8) or(b U64x8) U64x8

or returns the bitwise OR of corresponding lanes.

fn (U64x8) xor #

@[direct_array_access]
fn (a U64x8) xor(b U64x8) U64x8

xor returns the bitwise XOR of corresponding lanes.

fn (U64x8) not #

@[direct_array_access]
fn (a U64x8) not() U64x8

not returns the bitwise complement of each lane.

fn (U64x8) shl #

@[direct_array_access]
fn (a U64x8) shl(count u32) U64x8

shl shifts each lane left by count bits. A count of 64 or more shifts every bit out and returns zero lanes.

fn (U64x8) shr #

@[direct_array_access]
fn (a U64x8) shr(count u32) U64x8

shr shifts each lane right by count bits. A count of 64 or more shifts every bit out and returns zero lanes.

fn (U64x8) sum #

@[direct_array_access]
fn (v U64x8) sum() u64

sum adds the lanes, wrapping on overflow.

fn (U64x8) min_element #

@[direct_array_access]
fn (v U64x8) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (U64x8) min #

@[direct_array_access]
fn (v U64x8) min() u64

min returns the smallest lane value, the lane at index min_element().

fn (U64x8) max_element #

@[direct_array_access]
fn (v U64x8) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (U64x8) max #

@[direct_array_access]
fn (v U64x8) max() u64

max returns the largest lane value, the lane at index max_element().

fn (U64x8) dot #

fn (a U64x8) dot(b U64x8) u64

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (U64x8) to_f64x8 #

@[direct_array_access]
fn (v U64x8) to_f64x8() F64x8

to_f64x8 converts each lane to f64. It rounds to the nearest f64 value.

fn (U64x8) to_i64x8 #

@[direct_array_access]
fn (v U64x8) to_i64x8() I64x8

to_i64x8 converts each lane to i64. It keeps the bits of each lane, so values wrap modulo 2^64.

struct U8x16 #

struct U8x16 {
mut:
	values [16]u8
}

U8x16 holds 16 u8 lanes (128 bits).

fn (U8x16) to_array #

fn (v U8x16) to_array() [16]u8

to_array returns the lanes in order.

fn (U8x16) [] #

@[direct_array_access]
fn (v U8x16) [] (i int) u8

[] returns lane i. It panics if i is out of range.

fn (U8x16) []= #

@[direct_array_access]
fn (mut v U8x16) []= (i int, value u8)

[]= sets lane i to value. It panics if i is out of range.

fn (U8x16) store #

fn (v U8x16) store(mut dst []u8) !

store writes all 16 lanes to the start of dst. It returns an error if dst has fewer than 16 elements.

fn (U8x16) store_part #

@[direct_array_access]
fn (v U8x16) store_part(mut dst []u8) !

store_part writes one lane for each element of dst, up to 16 elements. It returns an error if dst has more than 16 elements.

fn (U8x16) store_at #

@[direct_array_access]
fn (v U8x16) store_at(mut dst []u8, offset int)

store_at writes all 16 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 16 elements follow it.

fn (U8x16) + #

@[direct_array_access]
fn (a U8x16) + (b U8x16) U8x16
  • adds corresponding lanes, wrapping on overflow.

fn (U8x16) - #

@[direct_array_access]
fn (a U8x16) - (b U8x16) U8x16
  • subtracts corresponding lanes, wrapping on overflow.

fn (U8x16) * #

@[direct_array_access]
fn (a U8x16) * (b U8x16) U8x16
  • multiplies corresponding lanes, wrapping on overflow.

fn (U8x16) / #

@[direct_array_access]
fn (a U8x16) / (b U8x16) U8x16

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero.

fn (U8x16) add #

fn (a U8x16) add(b U8x16) U8x16

add returns a + b.

fn (U8x16) sub #

fn (a U8x16) sub(b U8x16) U8x16

sub returns a - b.

fn (U8x16) mul #

fn (a U8x16) mul(b U8x16) U8x16

mul returns a * b.

fn (U8x16) div #

fn (a U8x16) div(b U8x16) U8x16

div returns a / b.

fn (U8x16) minimum #

@[direct_array_access]
fn (a U8x16) minimum(b U8x16) U8x16

minimum returns the smaller of each pair of lanes.

fn (U8x16) maximum #

@[direct_array_access]
fn (a U8x16) maximum(b U8x16) U8x16

maximum returns the larger of each pair of lanes.

fn (U8x16) eq #

@[direct_array_access]
fn (a U8x16) eq(b U8x16) Mask8x16

eq returns a mask of the lanes where a is equal to b.

fn (U8x16) ne #

@[direct_array_access]
fn (a U8x16) ne(b U8x16) Mask8x16

ne returns a mask of the lanes where a is not equal to b.

fn (U8x16) lt #

@[direct_array_access]
fn (a U8x16) lt(b U8x16) Mask8x16

lt returns a mask of the lanes where a is less than b.

fn (U8x16) le #

@[direct_array_access]
fn (a U8x16) le(b U8x16) Mask8x16

le returns a mask of the lanes where a is less than or equal to b.

fn (U8x16) gt #

fn (a U8x16) gt(b U8x16) Mask8x16

gt returns a mask of the lanes where a is greater than b.

fn (U8x16) ge #

fn (a U8x16) ge(b U8x16) Mask8x16

ge returns a mask of the lanes where a is greater than or equal to b.

fn (U8x16) and #

@[direct_array_access]
fn (a U8x16) and(b U8x16) U8x16

and returns the bitwise AND of corresponding lanes.

fn (U8x16) or #

@[direct_array_access]
fn (a U8x16) or(b U8x16) U8x16

or returns the bitwise OR of corresponding lanes.

fn (U8x16) xor #

@[direct_array_access]
fn (a U8x16) xor(b U8x16) U8x16

xor returns the bitwise XOR of corresponding lanes.

fn (U8x16) not #

@[direct_array_access]
fn (a U8x16) not() U8x16

not returns the bitwise complement of each lane.

fn (U8x16) shl #

@[direct_array_access]
fn (a U8x16) shl(count u32) U8x16

shl shifts each lane left by count bits. A count of 8 or more shifts every bit out and returns zero lanes.

fn (U8x16) shr #

@[direct_array_access]
fn (a U8x16) shr(count u32) U8x16

shr shifts each lane right by count bits. A count of 8 or more shifts every bit out and returns zero lanes.

fn (U8x16) sum #

@[direct_array_access]
fn (v U8x16) sum() u8

sum adds the lanes, wrapping on overflow.

fn (U8x16) min_element #

@[direct_array_access]
fn (v U8x16) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (U8x16) min #

@[direct_array_access]
fn (v U8x16) min() u8

min returns the smallest lane value, the lane at index min_element().

fn (U8x16) max_element #

@[direct_array_access]
fn (v U8x16) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (U8x16) max #

@[direct_array_access]
fn (v U8x16) max() u8

max returns the largest lane value, the lane at index max_element().

fn (U8x16) dot #

fn (a U8x16) dot(b U8x16) u8

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (U8x16) to_i8x16 #

@[direct_array_access]
fn (v U8x16) to_i8x16() I8x16

to_i8x16 converts each lane to i8. It keeps the bits of each lane, so values wrap modulo 2^8.

struct U8x32 #

struct U8x32 {
mut:
	values [32]u8
}

U8x32 holds 32 u8 lanes (256 bits).

fn (U8x32) to_array #

fn (v U8x32) to_array() [32]u8

to_array returns the lanes in order.

fn (U8x32) [] #

@[direct_array_access]
fn (v U8x32) [] (i int) u8

[] returns lane i. It panics if i is out of range.

fn (U8x32) []= #

@[direct_array_access]
fn (mut v U8x32) []= (i int, value u8)

[]= sets lane i to value. It panics if i is out of range.

fn (U8x32) store #

fn (v U8x32) store(mut dst []u8) !

store writes all 32 lanes to the start of dst. It returns an error if dst has fewer than 32 elements.

fn (U8x32) store_part #

@[direct_array_access]
fn (v U8x32) store_part(mut dst []u8) !

store_part writes one lane for each element of dst, up to 32 elements. It returns an error if dst has more than 32 elements.

fn (U8x32) store_at #

@[direct_array_access]
fn (v U8x32) store_at(mut dst []u8, offset int)

store_at writes all 32 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 32 elements follow it.

fn (U8x32) + #

@[direct_array_access]
fn (a U8x32) + (b U8x32) U8x32
  • adds corresponding lanes, wrapping on overflow.

fn (U8x32) - #

@[direct_array_access]
fn (a U8x32) - (b U8x32) U8x32
  • subtracts corresponding lanes, wrapping on overflow.

fn (U8x32) * #

@[direct_array_access]
fn (a U8x32) * (b U8x32) U8x32
  • multiplies corresponding lanes, wrapping on overflow.

fn (U8x32) / #

@[direct_array_access]
fn (a U8x32) / (b U8x32) U8x32

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero.

fn (U8x32) add #

fn (a U8x32) add(b U8x32) U8x32

add returns a + b.

fn (U8x32) sub #

fn (a U8x32) sub(b U8x32) U8x32

sub returns a - b.

fn (U8x32) mul #

fn (a U8x32) mul(b U8x32) U8x32

mul returns a * b.

fn (U8x32) div #

fn (a U8x32) div(b U8x32) U8x32

div returns a / b.

fn (U8x32) minimum #

@[direct_array_access]
fn (a U8x32) minimum(b U8x32) U8x32

minimum returns the smaller of each pair of lanes.

fn (U8x32) maximum #

@[direct_array_access]
fn (a U8x32) maximum(b U8x32) U8x32

maximum returns the larger of each pair of lanes.

fn (U8x32) eq #

@[direct_array_access]
fn (a U8x32) eq(b U8x32) Mask8x32

eq returns a mask of the lanes where a is equal to b.

fn (U8x32) ne #

@[direct_array_access]
fn (a U8x32) ne(b U8x32) Mask8x32

ne returns a mask of the lanes where a is not equal to b.

fn (U8x32) lt #

@[direct_array_access]
fn (a U8x32) lt(b U8x32) Mask8x32

lt returns a mask of the lanes where a is less than b.

fn (U8x32) le #

@[direct_array_access]
fn (a U8x32) le(b U8x32) Mask8x32

le returns a mask of the lanes where a is less than or equal to b.

fn (U8x32) gt #

fn (a U8x32) gt(b U8x32) Mask8x32

gt returns a mask of the lanes where a is greater than b.

fn (U8x32) ge #

fn (a U8x32) ge(b U8x32) Mask8x32

ge returns a mask of the lanes where a is greater than or equal to b.

fn (U8x32) and #

@[direct_array_access]
fn (a U8x32) and(b U8x32) U8x32

and returns the bitwise AND of corresponding lanes.

fn (U8x32) or #

@[direct_array_access]
fn (a U8x32) or(b U8x32) U8x32

or returns the bitwise OR of corresponding lanes.

fn (U8x32) xor #

@[direct_array_access]
fn (a U8x32) xor(b U8x32) U8x32

xor returns the bitwise XOR of corresponding lanes.

fn (U8x32) not #

@[direct_array_access]
fn (a U8x32) not() U8x32

not returns the bitwise complement of each lane.

fn (U8x32) shl #

@[direct_array_access]
fn (a U8x32) shl(count u32) U8x32

shl shifts each lane left by count bits. A count of 8 or more shifts every bit out and returns zero lanes.

fn (U8x32) shr #

@[direct_array_access]
fn (a U8x32) shr(count u32) U8x32

shr shifts each lane right by count bits. A count of 8 or more shifts every bit out and returns zero lanes.

fn (U8x32) sum #

@[direct_array_access]
fn (v U8x32) sum() u8

sum adds the lanes, wrapping on overflow.

fn (U8x32) min_element #

@[direct_array_access]
fn (v U8x32) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (U8x32) min #

@[direct_array_access]
fn (v U8x32) min() u8

min returns the smallest lane value, the lane at index min_element().

fn (U8x32) max_element #

@[direct_array_access]
fn (v U8x32) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (U8x32) max #

@[direct_array_access]
fn (v U8x32) max() u8

max returns the largest lane value, the lane at index max_element().

fn (U8x32) dot #

fn (a U8x32) dot(b U8x32) u8

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (U8x32) to_i8x32 #

@[direct_array_access]
fn (v U8x32) to_i8x32() I8x32

to_i8x32 converts each lane to i8. It keeps the bits of each lane, so values wrap modulo 2^8.

struct U8x64 #

struct U8x64 {
mut:
	values [64]u8
}

U8x64 holds 64 u8 lanes (512 bits).

fn (U8x64) to_array #

fn (v U8x64) to_array() [64]u8

to_array returns the lanes in order.

fn (U8x64) [] #

@[direct_array_access]
fn (v U8x64) [] (i int) u8

[] returns lane i. It panics if i is out of range.

fn (U8x64) []= #

@[direct_array_access]
fn (mut v U8x64) []= (i int, value u8)

[]= sets lane i to value. It panics if i is out of range.

fn (U8x64) store #

fn (v U8x64) store(mut dst []u8) !

store writes all 64 lanes to the start of dst. It returns an error if dst has fewer than 64 elements.

fn (U8x64) store_part #

@[direct_array_access]
fn (v U8x64) store_part(mut dst []u8) !

store_part writes one lane for each element of dst, up to 64 elements. It returns an error if dst has more than 64 elements.

fn (U8x64) store_at #

@[direct_array_access]
fn (v U8x64) store_at(mut dst []u8, offset int)

store_at writes all 64 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 64 elements follow it.

fn (U8x64) + #

@[direct_array_access]
fn (a U8x64) + (b U8x64) U8x64
  • adds corresponding lanes, wrapping on overflow.

fn (U8x64) - #

@[direct_array_access]
fn (a U8x64) - (b U8x64) U8x64
  • subtracts corresponding lanes, wrapping on overflow.

fn (U8x64) * #

@[direct_array_access]
fn (a U8x64) * (b U8x64) U8x64
  • multiplies corresponding lanes, wrapping on overflow.

fn (U8x64) / #

@[direct_array_access]
fn (a U8x64) / (b U8x64) U8x64

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero.

fn (U8x64) add #

fn (a U8x64) add(b U8x64) U8x64

add returns a + b.

fn (U8x64) sub #

fn (a U8x64) sub(b U8x64) U8x64

sub returns a - b.

fn (U8x64) mul #

fn (a U8x64) mul(b U8x64) U8x64

mul returns a * b.

fn (U8x64) div #

fn (a U8x64) div(b U8x64) U8x64

div returns a / b.

fn (U8x64) minimum #

@[direct_array_access]
fn (a U8x64) minimum(b U8x64) U8x64

minimum returns the smaller of each pair of lanes.

fn (U8x64) maximum #

@[direct_array_access]
fn (a U8x64) maximum(b U8x64) U8x64

maximum returns the larger of each pair of lanes.

fn (U8x64) eq #

@[direct_array_access]
fn (a U8x64) eq(b U8x64) Mask8x64

eq returns a mask of the lanes where a is equal to b.

fn (U8x64) ne #

@[direct_array_access]
fn (a U8x64) ne(b U8x64) Mask8x64

ne returns a mask of the lanes where a is not equal to b.

fn (U8x64) lt #

@[direct_array_access]
fn (a U8x64) lt(b U8x64) Mask8x64

lt returns a mask of the lanes where a is less than b.

fn (U8x64) le #

@[direct_array_access]
fn (a U8x64) le(b U8x64) Mask8x64

le returns a mask of the lanes where a is less than or equal to b.

fn (U8x64) gt #

fn (a U8x64) gt(b U8x64) Mask8x64

gt returns a mask of the lanes where a is greater than b.

fn (U8x64) ge #

fn (a U8x64) ge(b U8x64) Mask8x64

ge returns a mask of the lanes where a is greater than or equal to b.

fn (U8x64) and #

@[direct_array_access]
fn (a U8x64) and(b U8x64) U8x64

and returns the bitwise AND of corresponding lanes.

fn (U8x64) or #

@[direct_array_access]
fn (a U8x64) or(b U8x64) U8x64

or returns the bitwise OR of corresponding lanes.

fn (U8x64) xor #

@[direct_array_access]
fn (a U8x64) xor(b U8x64) U8x64

xor returns the bitwise XOR of corresponding lanes.

fn (U8x64) not #

@[direct_array_access]
fn (a U8x64) not() U8x64

not returns the bitwise complement of each lane.

fn (U8x64) shl #

@[direct_array_access]
fn (a U8x64) shl(count u32) U8x64

shl shifts each lane left by count bits. A count of 8 or more shifts every bit out and returns zero lanes.

fn (U8x64) shr #

@[direct_array_access]
fn (a U8x64) shr(count u32) U8x64

shr shifts each lane right by count bits. A count of 8 or more shifts every bit out and returns zero lanes.

fn (U8x64) sum #

@[direct_array_access]
fn (v U8x64) sum() u8

sum adds the lanes, wrapping on overflow.

fn (U8x64) min_element #

@[direct_array_access]
fn (v U8x64) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (U8x64) min #

@[direct_array_access]
fn (v U8x64) min() u8

min returns the smallest lane value, the lane at index min_element().

fn (U8x64) max_element #

@[direct_array_access]
fn (v U8x64) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (U8x64) max #

@[direct_array_access]
fn (v U8x64) max() u8

max returns the largest lane value, the lane at index max_element().

fn (U8x64) dot #

fn (a U8x64) dot(b U8x64) u8

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (U8x64) to_i8x64 #

@[direct_array_access]
fn (v U8x64) to_i8x64() I8x64

to_i8x64 converts each lane to i8. It keeps the bits of each lane, so values wrap modulo 2^8.

struct U8x8 #

struct U8x8 {
mut:
	values [8]u8
}

U8x8 holds 8 u8 lanes (64 bits).

fn (U8x8) to_array #

fn (v U8x8) to_array() [8]u8

to_array returns the lanes in order.

fn (U8x8) [] #

@[direct_array_access]
fn (v U8x8) [] (i int) u8

[] returns lane i. It panics if i is out of range.

fn (U8x8) []= #

@[direct_array_access]
fn (mut v U8x8) []= (i int, value u8)

[]= sets lane i to value. It panics if i is out of range.

fn (U8x8) store #

fn (v U8x8) store(mut dst []u8) !

store writes all 8 lanes to the start of dst. It returns an error if dst has fewer than 8 elements.

fn (U8x8) store_part #

@[direct_array_access]
fn (v U8x8) store_part(mut dst []u8) !

store_part writes one lane for each element of dst, up to 8 elements. It returns an error if dst has more than 8 elements.

fn (U8x8) store_at #

@[direct_array_access]
fn (v U8x8) store_at(mut dst []u8, offset int)

store_at writes all 8 lanes to dst, starting at dst[offset]. It panics if offset is negative or fewer than 8 elements follow it.

fn (U8x8) + #

@[direct_array_access]
fn (a U8x8) + (b U8x8) U8x8
  • adds corresponding lanes, wrapping on overflow.

fn (U8x8) - #

@[direct_array_access]
fn (a U8x8) - (b U8x8) U8x8
  • subtracts corresponding lanes, wrapping on overflow.

fn (U8x8) * #

@[direct_array_access]
fn (a U8x8) * (b U8x8) U8x8
  • multiplies corresponding lanes, wrapping on overflow.

fn (U8x8) / #

@[direct_array_access]
fn (a U8x8) / (b U8x8) U8x8

/ divides corresponding lanes, truncating toward zero. It panics if a lane of b is zero.

fn (U8x8) add #

fn (a U8x8) add(b U8x8) U8x8

add returns a + b.

fn (U8x8) sub #

fn (a U8x8) sub(b U8x8) U8x8

sub returns a - b.

fn (U8x8) mul #

fn (a U8x8) mul(b U8x8) U8x8

mul returns a * b.

fn (U8x8) div #

fn (a U8x8) div(b U8x8) U8x8

div returns a / b.

fn (U8x8) minimum #

@[direct_array_access]
fn (a U8x8) minimum(b U8x8) U8x8

minimum returns the smaller of each pair of lanes.

fn (U8x8) maximum #

@[direct_array_access]
fn (a U8x8) maximum(b U8x8) U8x8

maximum returns the larger of each pair of lanes.

fn (U8x8) eq #

@[direct_array_access]
fn (a U8x8) eq(b U8x8) Mask8x8

eq returns a mask of the lanes where a is equal to b.

fn (U8x8) ne #

@[direct_array_access]
fn (a U8x8) ne(b U8x8) Mask8x8

ne returns a mask of the lanes where a is not equal to b.

fn (U8x8) lt #

@[direct_array_access]
fn (a U8x8) lt(b U8x8) Mask8x8

lt returns a mask of the lanes where a is less than b.

fn (U8x8) le #

@[direct_array_access]
fn (a U8x8) le(b U8x8) Mask8x8

le returns a mask of the lanes where a is less than or equal to b.

fn (U8x8) gt #

fn (a U8x8) gt(b U8x8) Mask8x8

gt returns a mask of the lanes where a is greater than b.

fn (U8x8) ge #

fn (a U8x8) ge(b U8x8) Mask8x8

ge returns a mask of the lanes where a is greater than or equal to b.

fn (U8x8) and #

@[direct_array_access]
fn (a U8x8) and(b U8x8) U8x8

and returns the bitwise AND of corresponding lanes.

fn (U8x8) or #

@[direct_array_access]
fn (a U8x8) or(b U8x8) U8x8

or returns the bitwise OR of corresponding lanes.

fn (U8x8) xor #

@[direct_array_access]
fn (a U8x8) xor(b U8x8) U8x8

xor returns the bitwise XOR of corresponding lanes.

fn (U8x8) not #

@[direct_array_access]
fn (a U8x8) not() U8x8

not returns the bitwise complement of each lane.

fn (U8x8) shl #

@[direct_array_access]
fn (a U8x8) shl(count u32) U8x8

shl shifts each lane left by count bits. A count of 8 or more shifts every bit out and returns zero lanes.

fn (U8x8) shr #

@[direct_array_access]
fn (a U8x8) shr(count u32) U8x8

shr shifts each lane right by count bits. A count of 8 or more shifts every bit out and returns zero lanes.

fn (U8x8) sum #

@[direct_array_access]
fn (v U8x8) sum() u8

sum adds the lanes, wrapping on overflow.

fn (U8x8) min_element #

@[direct_array_access]
fn (v U8x8) min_element() int

min_element returns the index of the first lane holding the smallest value.

fn (U8x8) min #

@[direct_array_access]
fn (v U8x8) min() u8

min returns the smallest lane value, the lane at index min_element().

fn (U8x8) max_element #

@[direct_array_access]
fn (v U8x8) max_element() int

max_element returns the index of the first lane holding the largest value.

fn (U8x8) max #

@[direct_array_access]
fn (v U8x8) max() u8

max returns the largest lane value, the lane at index max_element().

fn (U8x8) dot #

fn (a U8x8) dot(b U8x8) u8

dot multiplies corresponding lanes and adds the products, wrapping on overflow.

fn (U8x8) to_i8x8 #

@[direct_array_access]
fn (v U8x8) to_i8x8() I8x8

to_i8x8 converts each lane to i8. It keeps the bits of each lane, so values wrap modulo 2^8.