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)andv.store_at(mut dst, offset)panic when the slice is too short.simd.load_t(src)andv.store(mut dst)return an error instead, andsimd.load_t_part(src)andv.store_part(mut dst)handle the final lanes of a loop:load_t_partzero-fills the missing lanes and both reject slices longer than a vector. - Lanes:
v[i],v[i] = x(they panic wheniis out of range) andv.to_array(). - Arithmetic:
+ - * /and the methodsadd sub mul div,minimum,maximum;negandabsfor signed and float vectors;sqrtandmul_addfor float vectors. - Bitwise operations on integer vectors:
and or xor not,shl(count)andshr(count). - Comparisons:
eq ne lt le gt gereturn a mask. - Reductions:
sum,min,max,min_element,max_elementanda.dot(b). - Conversions between lane types of the same width keep the lane count, for example
F32x4.to_i32x4,I32x4.to_f32x4,I32x4.to_u32x4andI8x16.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,xorandnot. - Selecting:
simd.select_t(mask, a, b)takes the lanes ofawhere the mask is set and the lanes ofbelsewhere.
== 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,sumanddotwrap on overflow. Integer/truncates toward zero and panics when a lane of the divisor is zero;min / -1wraps tomin. shland an unsignedshrgive zero lanes for a count of the lane width or more. A signedshris arithmetic and fills the lanes with their sign bit for such counts.- Float operations follow IEEE 754.
minimumandmaximumreturn the other lane when one lane is NaN, and the lane of the receiver when the lanes compare equal (such as-0.0and0.0). min_elementandmax_elementreturn the index of the first lane holding the smallest or largest value, andminandmaxreturn that lane. For float vectors, NaN lanes are ignored, and index 0 is returned when every lane is NaN.sumanddotadd in lane order, so the vector and scalar paths round identically.mul_addanddotdo 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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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 #
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) [] #
fn (v F32x16) [] (i int) f32
[] returns lane i. It panics if i is out of range.
fn (F32x16) []= #
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 #
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 #
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) + #
fn (a F32x16) + (b F32x16) F32x16
- adds corresponding lanes.
fn (F32x16) - #
fn (a F32x16) - (b F32x16) F32x16
- subtracts corresponding lanes.
fn (F32x16) * #
fn (a F32x16) * (b F32x16) F32x16
- multiplies corresponding lanes.
fn (F32x16) / #
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 #
fn (a F32x16) neg() F32x16
neg negates each lane.
fn (F32x16) abs #
fn (a F32x16) abs() F32x16
abs returns the absolute value of each lane by clearing its sign bit.
fn (F32x16) minimum #
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 #
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 #
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 #
fn (a F32x16) eq(b F32x16) Mask32x16
eq returns a mask of the lanes where a is equal to b.
fn (F32x16) ne #
fn (a F32x16) ne(b F32x16) Mask32x16
ne returns a mask of the lanes where a is not equal to b.
fn (F32x16) lt #
fn (a F32x16) lt(b F32x16) Mask32x16
lt returns a mask of the lanes where a is less than b.
fn (F32x16) le #
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 #
fn (v F32x16) sum() f32
sum adds the lanes in lane order.
fn (F32x16) min_element #
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 #
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 #
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 #
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 #
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 #
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) [] #
fn (v F32x2) [] (i int) f32
[] returns lane i. It panics if i is out of range.
fn (F32x2) []= #
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 #
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 #
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) + #
fn (a F32x2) + (b F32x2) F32x2
- adds corresponding lanes.
fn (F32x2) - #
fn (a F32x2) - (b F32x2) F32x2
- subtracts corresponding lanes.
fn (F32x2) * #
fn (a F32x2) * (b F32x2) F32x2
- multiplies corresponding lanes.
fn (F32x2) / #
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 #
fn (a F32x2) neg() F32x2
neg negates each lane.
fn (F32x2) abs #
fn (a F32x2) abs() F32x2
abs returns the absolute value of each lane by clearing its sign bit.
fn (F32x2) minimum #
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 #
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 #
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 #
fn (a F32x2) eq(b F32x2) Mask32x2
eq returns a mask of the lanes where a is equal to b.
fn (F32x2) ne #
fn (a F32x2) ne(b F32x2) Mask32x2
ne returns a mask of the lanes where a is not equal to b.
fn (F32x2) lt #
fn (a F32x2) lt(b F32x2) Mask32x2
lt returns a mask of the lanes where a is less than b.
fn (F32x2) le #
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 #
fn (v F32x2) sum() f32
sum adds the lanes in lane order.
fn (F32x2) min_element #
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 #
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 #
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 #
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 #
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 #
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) [] #
fn (v F32x4) [] (i int) f32
[] returns lane i. It panics if i is out of range.
fn (F32x4) []= #
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 #
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 #
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) + #
fn (a F32x4) + (b F32x4) F32x4
- adds corresponding lanes.
fn (F32x4) - #
fn (a F32x4) - (b F32x4) F32x4
- subtracts corresponding lanes.
fn (F32x4) * #
fn (a F32x4) * (b F32x4) F32x4
- multiplies corresponding lanes.
fn (F32x4) / #
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 #
fn (a F32x4) neg() F32x4
neg negates each lane.
fn (F32x4) abs #
fn (a F32x4) abs() F32x4
abs returns the absolute value of each lane by clearing its sign bit.
fn (F32x4) minimum #
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 #
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 #
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 #
fn (a F32x4) eq(b F32x4) Mask32x4
eq returns a mask of the lanes where a is equal to b.
fn (F32x4) ne #
fn (a F32x4) ne(b F32x4) Mask32x4
ne returns a mask of the lanes where a is not equal to b.
fn (F32x4) lt #
fn (a F32x4) lt(b F32x4) Mask32x4
lt returns a mask of the lanes where a is less than b.
fn (F32x4) le #
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 #
fn (v F32x4) sum() f32
sum adds the lanes in lane order.
fn (F32x4) min_element #
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 #
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 #
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 #
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 #
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 #
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) [] #
fn (v F32x8) [] (i int) f32
[] returns lane i. It panics if i is out of range.
fn (F32x8) []= #
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 #
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 #
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) + #
fn (a F32x8) + (b F32x8) F32x8
- adds corresponding lanes.
fn (F32x8) - #
fn (a F32x8) - (b F32x8) F32x8
- subtracts corresponding lanes.
fn (F32x8) * #
fn (a F32x8) * (b F32x8) F32x8
- multiplies corresponding lanes.
fn (F32x8) / #
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 #
fn (a F32x8) neg() F32x8
neg negates each lane.
fn (F32x8) abs #
fn (a F32x8) abs() F32x8
abs returns the absolute value of each lane by clearing its sign bit.
fn (F32x8) minimum #
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 #
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 #
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 #
fn (a F32x8) eq(b F32x8) Mask32x8
eq returns a mask of the lanes where a is equal to b.
fn (F32x8) ne #
fn (a F32x8) ne(b F32x8) Mask32x8
ne returns a mask of the lanes where a is not equal to b.
fn (F32x8) lt #
fn (a F32x8) lt(b F32x8) Mask32x8
lt returns a mask of the lanes where a is less than b.
fn (F32x8) le #
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 #
fn (v F32x8) sum() f32
sum adds the lanes in lane order.
fn (F32x8) min_element #
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 #
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 #
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 #
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 #
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 #
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) [] #
fn (v F64x2) [] (i int) f64
[] returns lane i. It panics if i is out of range.
fn (F64x2) []= #
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 #
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 #
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) + #
fn (a F64x2) + (b F64x2) F64x2
- adds corresponding lanes.
fn (F64x2) - #
fn (a F64x2) - (b F64x2) F64x2
- subtracts corresponding lanes.
fn (F64x2) * #
fn (a F64x2) * (b F64x2) F64x2
- multiplies corresponding lanes.
fn (F64x2) / #
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 #
fn (a F64x2) neg() F64x2
neg negates each lane.
fn (F64x2) abs #
fn (a F64x2) abs() F64x2
abs returns the absolute value of each lane by clearing its sign bit.
fn (F64x2) minimum #
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 #
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 #
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 #
fn (a F64x2) eq(b F64x2) Mask64x2
eq returns a mask of the lanes where a is equal to b.
fn (F64x2) ne #
fn (a F64x2) ne(b F64x2) Mask64x2
ne returns a mask of the lanes where a is not equal to b.
fn (F64x2) lt #
fn (a F64x2) lt(b F64x2) Mask64x2
lt returns a mask of the lanes where a is less than b.
fn (F64x2) le #
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 #
fn (v F64x2) sum() f64
sum adds the lanes in lane order.
fn (F64x2) min_element #
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 #
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 #
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 #
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 #
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 #
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) [] #
fn (v F64x4) [] (i int) f64
[] returns lane i. It panics if i is out of range.
fn (F64x4) []= #
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 #
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 #
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) + #
fn (a F64x4) + (b F64x4) F64x4
- adds corresponding lanes.
fn (F64x4) - #
fn (a F64x4) - (b F64x4) F64x4
- subtracts corresponding lanes.
fn (F64x4) * #
fn (a F64x4) * (b F64x4) F64x4
- multiplies corresponding lanes.
fn (F64x4) / #
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 #
fn (a F64x4) neg() F64x4
neg negates each lane.
fn (F64x4) abs #
fn (a F64x4) abs() F64x4
abs returns the absolute value of each lane by clearing its sign bit.
fn (F64x4) minimum #
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 #
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 #
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 #
fn (a F64x4) eq(b F64x4) Mask64x4
eq returns a mask of the lanes where a is equal to b.
fn (F64x4) ne #
fn (a F64x4) ne(b F64x4) Mask64x4
ne returns a mask of the lanes where a is not equal to b.
fn (F64x4) lt #
fn (a F64x4) lt(b F64x4) Mask64x4
lt returns a mask of the lanes where a is less than b.
fn (F64x4) le #
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 #
fn (v F64x4) sum() f64
sum adds the lanes in lane order.
fn (F64x4) min_element #
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 #
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 #
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 #
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 #
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 #
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) [] #
fn (v F64x8) [] (i int) f64
[] returns lane i. It panics if i is out of range.
fn (F64x8) []= #
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 #
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 #
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) + #
fn (a F64x8) + (b F64x8) F64x8
- adds corresponding lanes.
fn (F64x8) - #
fn (a F64x8) - (b F64x8) F64x8
- subtracts corresponding lanes.
fn (F64x8) * #
fn (a F64x8) * (b F64x8) F64x8
- multiplies corresponding lanes.
fn (F64x8) / #
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 #
fn (a F64x8) neg() F64x8
neg negates each lane.
fn (F64x8) abs #
fn (a F64x8) abs() F64x8
abs returns the absolute value of each lane by clearing its sign bit.
fn (F64x8) minimum #
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 #
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 #
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 #
fn (a F64x8) eq(b F64x8) Mask64x8
eq returns a mask of the lanes where a is equal to b.
fn (F64x8) ne #
fn (a F64x8) ne(b F64x8) Mask64x8
ne returns a mask of the lanes where a is not equal to b.
fn (F64x8) lt #
fn (a F64x8) lt(b F64x8) Mask64x8
lt returns a mask of the lanes where a is less than b.
fn (F64x8) le #
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 #
fn (v F64x8) sum() f64
sum adds the lanes in lane order.
fn (F64x8) min_element #
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 #
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 #
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 #
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 #
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 #
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) [] #
fn (v I16x16) [] (i int) i16
[] returns lane i. It panics if i is out of range.
fn (I16x16) []= #
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 #
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 #
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) + #
fn (a I16x16) + (b I16x16) I16x16
- adds corresponding lanes, wrapping on overflow.
fn (I16x16) - #
fn (a I16x16) - (b I16x16) I16x16
- subtracts corresponding lanes, wrapping on overflow.
fn (I16x16) * #
fn (a I16x16) * (b I16x16) I16x16
- multiplies corresponding lanes, wrapping on overflow.
fn (I16x16) / #
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 #
fn (a I16x16) neg() I16x16
neg negates each lane, wrapping min_i16 to itself.
fn (I16x16) abs #
fn (a I16x16) abs() I16x16
abs returns the absolute value of each lane. min_i16 wraps to itself.
fn (I16x16) minimum #
fn (a I16x16) minimum(b I16x16) I16x16
minimum returns the smaller of each pair of lanes.
fn (I16x16) maximum #
fn (a I16x16) maximum(b I16x16) I16x16
maximum returns the larger of each pair of lanes.
fn (I16x16) eq #
fn (a I16x16) eq(b I16x16) Mask16x16
eq returns a mask of the lanes where a is equal to b.
fn (I16x16) ne #
fn (a I16x16) ne(b I16x16) Mask16x16
ne returns a mask of the lanes where a is not equal to b.
fn (I16x16) lt #
fn (a I16x16) lt(b I16x16) Mask16x16
lt returns a mask of the lanes where a is less than b.
fn (I16x16) le #
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 #
fn (a I16x16) and(b I16x16) I16x16
and returns the bitwise AND of corresponding lanes.
fn (I16x16) or #
fn (a I16x16) or(b I16x16) I16x16
or returns the bitwise OR of corresponding lanes.
fn (I16x16) xor #
fn (a I16x16) xor(b I16x16) I16x16
xor returns the bitwise XOR of corresponding lanes.
fn (I16x16) not #
fn (a I16x16) not() I16x16
not returns the bitwise complement of each lane.
fn (I16x16) shl #
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 #
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 #
fn (v I16x16) sum() i16
sum adds the lanes, wrapping on overflow.
fn (I16x16) min_element #
fn (v I16x16) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (I16x16) min #
fn (v I16x16) min() i16
min returns the smallest lane value, the lane at index min_element().
fn (I16x16) max_element #
fn (v I16x16) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (I16x16) max #
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 #
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) [] #
fn (v I16x32) [] (i int) i16
[] returns lane i. It panics if i is out of range.
fn (I16x32) []= #
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 #
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 #
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) + #
fn (a I16x32) + (b I16x32) I16x32
- adds corresponding lanes, wrapping on overflow.
fn (I16x32) - #
fn (a I16x32) - (b I16x32) I16x32
- subtracts corresponding lanes, wrapping on overflow.
fn (I16x32) * #
fn (a I16x32) * (b I16x32) I16x32
- multiplies corresponding lanes, wrapping on overflow.
fn (I16x32) / #
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 #
fn (a I16x32) neg() I16x32
neg negates each lane, wrapping min_i16 to itself.
fn (I16x32) abs #
fn (a I16x32) abs() I16x32
abs returns the absolute value of each lane. min_i16 wraps to itself.
fn (I16x32) minimum #
fn (a I16x32) minimum(b I16x32) I16x32
minimum returns the smaller of each pair of lanes.
fn (I16x32) maximum #
fn (a I16x32) maximum(b I16x32) I16x32
maximum returns the larger of each pair of lanes.
fn (I16x32) eq #
fn (a I16x32) eq(b I16x32) Mask16x32
eq returns a mask of the lanes where a is equal to b.
fn (I16x32) ne #
fn (a I16x32) ne(b I16x32) Mask16x32
ne returns a mask of the lanes where a is not equal to b.
fn (I16x32) lt #
fn (a I16x32) lt(b I16x32) Mask16x32
lt returns a mask of the lanes where a is less than b.
fn (I16x32) le #
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 #
fn (a I16x32) and(b I16x32) I16x32
and returns the bitwise AND of corresponding lanes.
fn (I16x32) or #
fn (a I16x32) or(b I16x32) I16x32
or returns the bitwise OR of corresponding lanes.
fn (I16x32) xor #
fn (a I16x32) xor(b I16x32) I16x32
xor returns the bitwise XOR of corresponding lanes.
fn (I16x32) not #
fn (a I16x32) not() I16x32
not returns the bitwise complement of each lane.
fn (I16x32) shl #
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 #
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 #
fn (v I16x32) sum() i16
sum adds the lanes, wrapping on overflow.
fn (I16x32) min_element #
fn (v I16x32) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (I16x32) min #
fn (v I16x32) min() i16
min returns the smallest lane value, the lane at index min_element().
fn (I16x32) max_element #
fn (v I16x32) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (I16x32) max #
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 #
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) [] #
fn (v I16x4) [] (i int) i16
[] returns lane i. It panics if i is out of range.
fn (I16x4) []= #
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 #
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 #
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) + #
fn (a I16x4) + (b I16x4) I16x4
- adds corresponding lanes, wrapping on overflow.
fn (I16x4) - #
fn (a I16x4) - (b I16x4) I16x4
- subtracts corresponding lanes, wrapping on overflow.
fn (I16x4) * #
fn (a I16x4) * (b I16x4) I16x4
- multiplies corresponding lanes, wrapping on overflow.
fn (I16x4) / #
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 #
fn (a I16x4) neg() I16x4
neg negates each lane, wrapping min_i16 to itself.
fn (I16x4) abs #
fn (a I16x4) abs() I16x4
abs returns the absolute value of each lane. min_i16 wraps to itself.
fn (I16x4) minimum #
fn (a I16x4) minimum(b I16x4) I16x4
minimum returns the smaller of each pair of lanes.
fn (I16x4) maximum #
fn (a I16x4) maximum(b I16x4) I16x4
maximum returns the larger of each pair of lanes.
fn (I16x4) eq #
fn (a I16x4) eq(b I16x4) Mask16x4
eq returns a mask of the lanes where a is equal to b.
fn (I16x4) ne #
fn (a I16x4) ne(b I16x4) Mask16x4
ne returns a mask of the lanes where a is not equal to b.
fn (I16x4) lt #
fn (a I16x4) lt(b I16x4) Mask16x4
lt returns a mask of the lanes where a is less than b.
fn (I16x4) le #
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 #
fn (a I16x4) and(b I16x4) I16x4
and returns the bitwise AND of corresponding lanes.
fn (I16x4) or #
fn (a I16x4) or(b I16x4) I16x4
or returns the bitwise OR of corresponding lanes.
fn (I16x4) xor #
fn (a I16x4) xor(b I16x4) I16x4
xor returns the bitwise XOR of corresponding lanes.
fn (I16x4) not #
fn (a I16x4) not() I16x4
not returns the bitwise complement of each lane.
fn (I16x4) shl #
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 #
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 #
fn (v I16x4) sum() i16
sum adds the lanes, wrapping on overflow.
fn (I16x4) min_element #
fn (v I16x4) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (I16x4) min #
fn (v I16x4) min() i16
min returns the smallest lane value, the lane at index min_element().
fn (I16x4) max_element #
fn (v I16x4) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (I16x4) max #
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 #
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) [] #
fn (v I16x8) [] (i int) i16
[] returns lane i. It panics if i is out of range.
fn (I16x8) []= #
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 #
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 #
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) + #
fn (a I16x8) + (b I16x8) I16x8
- adds corresponding lanes, wrapping on overflow.
fn (I16x8) - #
fn (a I16x8) - (b I16x8) I16x8
- subtracts corresponding lanes, wrapping on overflow.
fn (I16x8) * #
fn (a I16x8) * (b I16x8) I16x8
- multiplies corresponding lanes, wrapping on overflow.
fn (I16x8) / #
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 #
fn (a I16x8) neg() I16x8
neg negates each lane, wrapping min_i16 to itself.
fn (I16x8) abs #
fn (a I16x8) abs() I16x8
abs returns the absolute value of each lane. min_i16 wraps to itself.
fn (I16x8) minimum #
fn (a I16x8) minimum(b I16x8) I16x8
minimum returns the smaller of each pair of lanes.
fn (I16x8) maximum #
fn (a I16x8) maximum(b I16x8) I16x8
maximum returns the larger of each pair of lanes.
fn (I16x8) eq #
fn (a I16x8) eq(b I16x8) Mask16x8
eq returns a mask of the lanes where a is equal to b.
fn (I16x8) ne #
fn (a I16x8) ne(b I16x8) Mask16x8
ne returns a mask of the lanes where a is not equal to b.
fn (I16x8) lt #
fn (a I16x8) lt(b I16x8) Mask16x8
lt returns a mask of the lanes where a is less than b.
fn (I16x8) le #
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 #
fn (a I16x8) and(b I16x8) I16x8
and returns the bitwise AND of corresponding lanes.
fn (I16x8) or #
fn (a I16x8) or(b I16x8) I16x8
or returns the bitwise OR of corresponding lanes.
fn (I16x8) xor #
fn (a I16x8) xor(b I16x8) I16x8
xor returns the bitwise XOR of corresponding lanes.
fn (I16x8) not #
fn (a I16x8) not() I16x8
not returns the bitwise complement of each lane.
fn (I16x8) shl #
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 #
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 #
fn (v I16x8) sum() i16
sum adds the lanes, wrapping on overflow.
fn (I16x8) min_element #
fn (v I16x8) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (I16x8) min #
fn (v I16x8) min() i16
min returns the smallest lane value, the lane at index min_element().
fn (I16x8) max_element #
fn (v I16x8) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (I16x8) max #
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 #
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) [] #
fn (v I32x16) [] (i int) i32
[] returns lane i. It panics if i is out of range.
fn (I32x16) []= #
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 #
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 #
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) + #
fn (a I32x16) + (b I32x16) I32x16
- adds corresponding lanes, wrapping on overflow.
fn (I32x16) - #
fn (a I32x16) - (b I32x16) I32x16
- subtracts corresponding lanes, wrapping on overflow.
fn (I32x16) * #
fn (a I32x16) * (b I32x16) I32x16
- multiplies corresponding lanes, wrapping on overflow.
fn (I32x16) / #
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 #
fn (a I32x16) neg() I32x16
neg negates each lane, wrapping min_i32 to itself.
fn (I32x16) abs #
fn (a I32x16) abs() I32x16
abs returns the absolute value of each lane. min_i32 wraps to itself.
fn (I32x16) minimum #
fn (a I32x16) minimum(b I32x16) I32x16
minimum returns the smaller of each pair of lanes.
fn (I32x16) maximum #
fn (a I32x16) maximum(b I32x16) I32x16
maximum returns the larger of each pair of lanes.
fn (I32x16) eq #
fn (a I32x16) eq(b I32x16) Mask32x16
eq returns a mask of the lanes where a is equal to b.
fn (I32x16) ne #
fn (a I32x16) ne(b I32x16) Mask32x16
ne returns a mask of the lanes where a is not equal to b.
fn (I32x16) lt #
fn (a I32x16) lt(b I32x16) Mask32x16
lt returns a mask of the lanes where a is less than b.
fn (I32x16) le #
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 #
fn (a I32x16) and(b I32x16) I32x16
and returns the bitwise AND of corresponding lanes.
fn (I32x16) or #
fn (a I32x16) or(b I32x16) I32x16
or returns the bitwise OR of corresponding lanes.
fn (I32x16) xor #
fn (a I32x16) xor(b I32x16) I32x16
xor returns the bitwise XOR of corresponding lanes.
fn (I32x16) not #
fn (a I32x16) not() I32x16
not returns the bitwise complement of each lane.
fn (I32x16) shl #
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 #
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 #
fn (v I32x16) sum() i32
sum adds the lanes, wrapping on overflow.
fn (I32x16) min_element #
fn (v I32x16) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (I32x16) min #
fn (v I32x16) min() i32
min returns the smallest lane value, the lane at index min_element().
fn (I32x16) max_element #
fn (v I32x16) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (I32x16) max #
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 #
fn (v I32x16) to_f32x16() F32x16
to_f32x16 converts each lane to f32. It rounds to the nearest f32 value.
fn (I32x16) to_u32x16 #
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) [] #
fn (v I32x2) [] (i int) i32
[] returns lane i. It panics if i is out of range.
fn (I32x2) []= #
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 #
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 #
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) + #
fn (a I32x2) + (b I32x2) I32x2
- adds corresponding lanes, wrapping on overflow.
fn (I32x2) - #
fn (a I32x2) - (b I32x2) I32x2
- subtracts corresponding lanes, wrapping on overflow.
fn (I32x2) * #
fn (a I32x2) * (b I32x2) I32x2
- multiplies corresponding lanes, wrapping on overflow.
fn (I32x2) / #
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 #
fn (a I32x2) neg() I32x2
neg negates each lane, wrapping min_i32 to itself.
fn (I32x2) abs #
fn (a I32x2) abs() I32x2
abs returns the absolute value of each lane. min_i32 wraps to itself.
fn (I32x2) minimum #
fn (a I32x2) minimum(b I32x2) I32x2
minimum returns the smaller of each pair of lanes.
fn (I32x2) maximum #
fn (a I32x2) maximum(b I32x2) I32x2
maximum returns the larger of each pair of lanes.
fn (I32x2) eq #
fn (a I32x2) eq(b I32x2) Mask32x2
eq returns a mask of the lanes where a is equal to b.
fn (I32x2) ne #
fn (a I32x2) ne(b I32x2) Mask32x2
ne returns a mask of the lanes where a is not equal to b.
fn (I32x2) lt #
fn (a I32x2) lt(b I32x2) Mask32x2
lt returns a mask of the lanes where a is less than b.
fn (I32x2) le #
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 #
fn (a I32x2) and(b I32x2) I32x2
and returns the bitwise AND of corresponding lanes.
fn (I32x2) or #
fn (a I32x2) or(b I32x2) I32x2
or returns the bitwise OR of corresponding lanes.
fn (I32x2) xor #
fn (a I32x2) xor(b I32x2) I32x2
xor returns the bitwise XOR of corresponding lanes.
fn (I32x2) not #
fn (a I32x2) not() I32x2
not returns the bitwise complement of each lane.
fn (I32x2) shl #
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 #
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 #
fn (v I32x2) sum() i32
sum adds the lanes, wrapping on overflow.
fn (I32x2) min_element #
fn (v I32x2) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (I32x2) min #
fn (v I32x2) min() i32
min returns the smallest lane value, the lane at index min_element().
fn (I32x2) max_element #
fn (v I32x2) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (I32x2) max #
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 #
fn (v I32x2) to_f32x2() F32x2
to_f32x2 converts each lane to f32. It rounds to the nearest f32 value.
fn (I32x2) to_u32x2 #
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) [] #
fn (v I32x4) [] (i int) i32
[] returns lane i. It panics if i is out of range.
fn (I32x4) []= #
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 #
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 #
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) + #
fn (a I32x4) + (b I32x4) I32x4
- adds corresponding lanes, wrapping on overflow.
fn (I32x4) - #
fn (a I32x4) - (b I32x4) I32x4
- subtracts corresponding lanes, wrapping on overflow.
fn (I32x4) * #
fn (a I32x4) * (b I32x4) I32x4
- multiplies corresponding lanes, wrapping on overflow.
fn (I32x4) / #
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 #
fn (a I32x4) neg() I32x4
neg negates each lane, wrapping min_i32 to itself.
fn (I32x4) abs #
fn (a I32x4) abs() I32x4
abs returns the absolute value of each lane. min_i32 wraps to itself.
fn (I32x4) minimum #
fn (a I32x4) minimum(b I32x4) I32x4
minimum returns the smaller of each pair of lanes.
fn (I32x4) maximum #
fn (a I32x4) maximum(b I32x4) I32x4
maximum returns the larger of each pair of lanes.
fn (I32x4) eq #
fn (a I32x4) eq(b I32x4) Mask32x4
eq returns a mask of the lanes where a is equal to b.
fn (I32x4) ne #
fn (a I32x4) ne(b I32x4) Mask32x4
ne returns a mask of the lanes where a is not equal to b.
fn (I32x4) lt #
fn (a I32x4) lt(b I32x4) Mask32x4
lt returns a mask of the lanes where a is less than b.
fn (I32x4) le #
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 #
fn (a I32x4) and(b I32x4) I32x4
and returns the bitwise AND of corresponding lanes.
fn (I32x4) or #
fn (a I32x4) or(b I32x4) I32x4
or returns the bitwise OR of corresponding lanes.
fn (I32x4) xor #
fn (a I32x4) xor(b I32x4) I32x4
xor returns the bitwise XOR of corresponding lanes.
fn (I32x4) not #
fn (a I32x4) not() I32x4
not returns the bitwise complement of each lane.
fn (I32x4) shl #
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 #
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 #
fn (v I32x4) sum() i32
sum adds the lanes, wrapping on overflow.
fn (I32x4) min_element #
fn (v I32x4) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (I32x4) min #
fn (v I32x4) min() i32
min returns the smallest lane value, the lane at index min_element().
fn (I32x4) max_element #
fn (v I32x4) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (I32x4) max #
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 #
fn (v I32x4) to_f32x4() F32x4
to_f32x4 converts each lane to f32. It rounds to the nearest f32 value.
fn (I32x4) to_u32x4 #
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) [] #
fn (v I32x8) [] (i int) i32
[] returns lane i. It panics if i is out of range.
fn (I32x8) []= #
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 #
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 #
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) + #
fn (a I32x8) + (b I32x8) I32x8
- adds corresponding lanes, wrapping on overflow.
fn (I32x8) - #
fn (a I32x8) - (b I32x8) I32x8
- subtracts corresponding lanes, wrapping on overflow.
fn (I32x8) * #
fn (a I32x8) * (b I32x8) I32x8
- multiplies corresponding lanes, wrapping on overflow.
fn (I32x8) / #
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 #
fn (a I32x8) neg() I32x8
neg negates each lane, wrapping min_i32 to itself.
fn (I32x8) abs #
fn (a I32x8) abs() I32x8
abs returns the absolute value of each lane. min_i32 wraps to itself.
fn (I32x8) minimum #
fn (a I32x8) minimum(b I32x8) I32x8
minimum returns the smaller of each pair of lanes.
fn (I32x8) maximum #
fn (a I32x8) maximum(b I32x8) I32x8
maximum returns the larger of each pair of lanes.
fn (I32x8) eq #
fn (a I32x8) eq(b I32x8) Mask32x8
eq returns a mask of the lanes where a is equal to b.
fn (I32x8) ne #
fn (a I32x8) ne(b I32x8) Mask32x8
ne returns a mask of the lanes where a is not equal to b.
fn (I32x8) lt #
fn (a I32x8) lt(b I32x8) Mask32x8
lt returns a mask of the lanes where a is less than b.
fn (I32x8) le #
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 #
fn (a I32x8) and(b I32x8) I32x8
and returns the bitwise AND of corresponding lanes.
fn (I32x8) or #
fn (a I32x8) or(b I32x8) I32x8
or returns the bitwise OR of corresponding lanes.
fn (I32x8) xor #
fn (a I32x8) xor(b I32x8) I32x8
xor returns the bitwise XOR of corresponding lanes.
fn (I32x8) not #
fn (a I32x8) not() I32x8
not returns the bitwise complement of each lane.
fn (I32x8) shl #
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 #
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 #
fn (v I32x8) sum() i32
sum adds the lanes, wrapping on overflow.
fn (I32x8) min_element #
fn (v I32x8) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (I32x8) min #
fn (v I32x8) min() i32
min returns the smallest lane value, the lane at index min_element().
fn (I32x8) max_element #
fn (v I32x8) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (I32x8) max #
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 #
fn (v I32x8) to_f32x8() F32x8
to_f32x8 converts each lane to f32. It rounds to the nearest f32 value.
fn (I32x8) to_u32x8 #
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) [] #
fn (v I64x2) [] (i int) i64
[] returns lane i. It panics if i is out of range.
fn (I64x2) []= #
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 #
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 #
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) + #
fn (a I64x2) + (b I64x2) I64x2
- adds corresponding lanes, wrapping on overflow.
fn (I64x2) - #
fn (a I64x2) - (b I64x2) I64x2
- subtracts corresponding lanes, wrapping on overflow.
fn (I64x2) * #
fn (a I64x2) * (b I64x2) I64x2
- multiplies corresponding lanes, wrapping on overflow.
fn (I64x2) / #
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 #
fn (a I64x2) neg() I64x2
neg negates each lane, wrapping min_i64 to itself.
fn (I64x2) abs #
fn (a I64x2) abs() I64x2
abs returns the absolute value of each lane. min_i64 wraps to itself.
fn (I64x2) minimum #
fn (a I64x2) minimum(b I64x2) I64x2
minimum returns the smaller of each pair of lanes.
fn (I64x2) maximum #
fn (a I64x2) maximum(b I64x2) I64x2
maximum returns the larger of each pair of lanes.
fn (I64x2) eq #
fn (a I64x2) eq(b I64x2) Mask64x2
eq returns a mask of the lanes where a is equal to b.
fn (I64x2) ne #
fn (a I64x2) ne(b I64x2) Mask64x2
ne returns a mask of the lanes where a is not equal to b.
fn (I64x2) lt #
fn (a I64x2) lt(b I64x2) Mask64x2
lt returns a mask of the lanes where a is less than b.
fn (I64x2) le #
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 #
fn (a I64x2) and(b I64x2) I64x2
and returns the bitwise AND of corresponding lanes.
fn (I64x2) or #
fn (a I64x2) or(b I64x2) I64x2
or returns the bitwise OR of corresponding lanes.
fn (I64x2) xor #
fn (a I64x2) xor(b I64x2) I64x2
xor returns the bitwise XOR of corresponding lanes.
fn (I64x2) not #
fn (a I64x2) not() I64x2
not returns the bitwise complement of each lane.
fn (I64x2) shl #
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 #
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 #
fn (v I64x2) sum() i64
sum adds the lanes, wrapping on overflow.
fn (I64x2) min_element #
fn (v I64x2) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (I64x2) min #
fn (v I64x2) min() i64
min returns the smallest lane value, the lane at index min_element().
fn (I64x2) max_element #
fn (v I64x2) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (I64x2) max #
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 #
fn (v I64x2) to_f64x2() F64x2
to_f64x2 converts each lane to f64. It rounds to the nearest f64 value.
fn (I64x2) to_u64x2 #
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) [] #
fn (v I64x4) [] (i int) i64
[] returns lane i. It panics if i is out of range.
fn (I64x4) []= #
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 #
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 #
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) + #
fn (a I64x4) + (b I64x4) I64x4
- adds corresponding lanes, wrapping on overflow.
fn (I64x4) - #
fn (a I64x4) - (b I64x4) I64x4
- subtracts corresponding lanes, wrapping on overflow.
fn (I64x4) * #
fn (a I64x4) * (b I64x4) I64x4
- multiplies corresponding lanes, wrapping on overflow.
fn (I64x4) / #
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 #
fn (a I64x4) neg() I64x4
neg negates each lane, wrapping min_i64 to itself.
fn (I64x4) abs #
fn (a I64x4) abs() I64x4
abs returns the absolute value of each lane. min_i64 wraps to itself.
fn (I64x4) minimum #
fn (a I64x4) minimum(b I64x4) I64x4
minimum returns the smaller of each pair of lanes.
fn (I64x4) maximum #
fn (a I64x4) maximum(b I64x4) I64x4
maximum returns the larger of each pair of lanes.
fn (I64x4) eq #
fn (a I64x4) eq(b I64x4) Mask64x4
eq returns a mask of the lanes where a is equal to b.
fn (I64x4) ne #
fn (a I64x4) ne(b I64x4) Mask64x4
ne returns a mask of the lanes where a is not equal to b.
fn (I64x4) lt #
fn (a I64x4) lt(b I64x4) Mask64x4
lt returns a mask of the lanes where a is less than b.
fn (I64x4) le #
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 #
fn (a I64x4) and(b I64x4) I64x4
and returns the bitwise AND of corresponding lanes.
fn (I64x4) or #
fn (a I64x4) or(b I64x4) I64x4
or returns the bitwise OR of corresponding lanes.
fn (I64x4) xor #
fn (a I64x4) xor(b I64x4) I64x4
xor returns the bitwise XOR of corresponding lanes.
fn (I64x4) not #
fn (a I64x4) not() I64x4
not returns the bitwise complement of each lane.
fn (I64x4) shl #
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 #
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 #
fn (v I64x4) sum() i64
sum adds the lanes, wrapping on overflow.
fn (I64x4) min_element #
fn (v I64x4) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (I64x4) min #
fn (v I64x4) min() i64
min returns the smallest lane value, the lane at index min_element().
fn (I64x4) max_element #
fn (v I64x4) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (I64x4) max #
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 #
fn (v I64x4) to_f64x4() F64x4
to_f64x4 converts each lane to f64. It rounds to the nearest f64 value.
fn (I64x4) to_u64x4 #
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) [] #
fn (v I64x8) [] (i int) i64
[] returns lane i. It panics if i is out of range.
fn (I64x8) []= #
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 #
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 #
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) + #
fn (a I64x8) + (b I64x8) I64x8
- adds corresponding lanes, wrapping on overflow.
fn (I64x8) - #
fn (a I64x8) - (b I64x8) I64x8
- subtracts corresponding lanes, wrapping on overflow.
fn (I64x8) * #
fn (a I64x8) * (b I64x8) I64x8
- multiplies corresponding lanes, wrapping on overflow.
fn (I64x8) / #
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 #
fn (a I64x8) neg() I64x8
neg negates each lane, wrapping min_i64 to itself.
fn (I64x8) abs #
fn (a I64x8) abs() I64x8
abs returns the absolute value of each lane. min_i64 wraps to itself.
fn (I64x8) minimum #
fn (a I64x8) minimum(b I64x8) I64x8
minimum returns the smaller of each pair of lanes.
fn (I64x8) maximum #
fn (a I64x8) maximum(b I64x8) I64x8
maximum returns the larger of each pair of lanes.
fn (I64x8) eq #
fn (a I64x8) eq(b I64x8) Mask64x8
eq returns a mask of the lanes where a is equal to b.
fn (I64x8) ne #
fn (a I64x8) ne(b I64x8) Mask64x8
ne returns a mask of the lanes where a is not equal to b.
fn (I64x8) lt #
fn (a I64x8) lt(b I64x8) Mask64x8
lt returns a mask of the lanes where a is less than b.
fn (I64x8) le #
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 #
fn (a I64x8) and(b I64x8) I64x8
and returns the bitwise AND of corresponding lanes.
fn (I64x8) or #
fn (a I64x8) or(b I64x8) I64x8
or returns the bitwise OR of corresponding lanes.
fn (I64x8) xor #
fn (a I64x8) xor(b I64x8) I64x8
xor returns the bitwise XOR of corresponding lanes.
fn (I64x8) not #
fn (a I64x8) not() I64x8
not returns the bitwise complement of each lane.
fn (I64x8) shl #
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 #
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 #
fn (v I64x8) sum() i64
sum adds the lanes, wrapping on overflow.
fn (I64x8) min_element #
fn (v I64x8) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (I64x8) min #
fn (v I64x8) min() i64
min returns the smallest lane value, the lane at index min_element().
fn (I64x8) max_element #
fn (v I64x8) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (I64x8) max #
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 #
fn (v I64x8) to_f64x8() F64x8
to_f64x8 converts each lane to f64. It rounds to the nearest f64 value.
fn (I64x8) to_u64x8 #
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) [] #
fn (v I8x16) [] (i int) i8
[] returns lane i. It panics if i is out of range.
fn (I8x16) []= #
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 #
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 #
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) + #
fn (a I8x16) + (b I8x16) I8x16
- adds corresponding lanes, wrapping on overflow.
fn (I8x16) - #
fn (a I8x16) - (b I8x16) I8x16
- subtracts corresponding lanes, wrapping on overflow.
fn (I8x16) * #
fn (a I8x16) * (b I8x16) I8x16
- multiplies corresponding lanes, wrapping on overflow.
fn (I8x16) / #
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 #
fn (a I8x16) neg() I8x16
neg negates each lane, wrapping min_i8 to itself.
fn (I8x16) abs #
fn (a I8x16) abs() I8x16
abs returns the absolute value of each lane. min_i8 wraps to itself.
fn (I8x16) minimum #
fn (a I8x16) minimum(b I8x16) I8x16
minimum returns the smaller of each pair of lanes.
fn (I8x16) maximum #
fn (a I8x16) maximum(b I8x16) I8x16
maximum returns the larger of each pair of lanes.
fn (I8x16) eq #
fn (a I8x16) eq(b I8x16) Mask8x16
eq returns a mask of the lanes where a is equal to b.
fn (I8x16) ne #
fn (a I8x16) ne(b I8x16) Mask8x16
ne returns a mask of the lanes where a is not equal to b.
fn (I8x16) lt #
fn (a I8x16) lt(b I8x16) Mask8x16
lt returns a mask of the lanes where a is less than b.
fn (I8x16) le #
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 #
fn (a I8x16) and(b I8x16) I8x16
and returns the bitwise AND of corresponding lanes.
fn (I8x16) or #
fn (a I8x16) or(b I8x16) I8x16
or returns the bitwise OR of corresponding lanes.
fn (I8x16) xor #
fn (a I8x16) xor(b I8x16) I8x16
xor returns the bitwise XOR of corresponding lanes.
fn (I8x16) not #
fn (a I8x16) not() I8x16
not returns the bitwise complement of each lane.
fn (I8x16) shl #
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 #
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 #
fn (v I8x16) sum() i8
sum adds the lanes, wrapping on overflow.
fn (I8x16) min_element #
fn (v I8x16) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (I8x16) min #
fn (v I8x16) min() i8
min returns the smallest lane value, the lane at index min_element().
fn (I8x16) max_element #
fn (v I8x16) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (I8x16) max #
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 #
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) [] #
fn (v I8x32) [] (i int) i8
[] returns lane i. It panics if i is out of range.
fn (I8x32) []= #
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 #
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 #
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) + #
fn (a I8x32) + (b I8x32) I8x32
- adds corresponding lanes, wrapping on overflow.
fn (I8x32) - #
fn (a I8x32) - (b I8x32) I8x32
- subtracts corresponding lanes, wrapping on overflow.
fn (I8x32) * #
fn (a I8x32) * (b I8x32) I8x32
- multiplies corresponding lanes, wrapping on overflow.
fn (I8x32) / #
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 #
fn (a I8x32) neg() I8x32
neg negates each lane, wrapping min_i8 to itself.
fn (I8x32) abs #
fn (a I8x32) abs() I8x32
abs returns the absolute value of each lane. min_i8 wraps to itself.
fn (I8x32) minimum #
fn (a I8x32) minimum(b I8x32) I8x32
minimum returns the smaller of each pair of lanes.
fn (I8x32) maximum #
fn (a I8x32) maximum(b I8x32) I8x32
maximum returns the larger of each pair of lanes.
fn (I8x32) eq #
fn (a I8x32) eq(b I8x32) Mask8x32
eq returns a mask of the lanes where a is equal to b.
fn (I8x32) ne #
fn (a I8x32) ne(b I8x32) Mask8x32
ne returns a mask of the lanes where a is not equal to b.
fn (I8x32) lt #
fn (a I8x32) lt(b I8x32) Mask8x32
lt returns a mask of the lanes where a is less than b.
fn (I8x32) le #
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 #
fn (a I8x32) and(b I8x32) I8x32
and returns the bitwise AND of corresponding lanes.
fn (I8x32) or #
fn (a I8x32) or(b I8x32) I8x32
or returns the bitwise OR of corresponding lanes.
fn (I8x32) xor #
fn (a I8x32) xor(b I8x32) I8x32
xor returns the bitwise XOR of corresponding lanes.
fn (I8x32) not #
fn (a I8x32) not() I8x32
not returns the bitwise complement of each lane.
fn (I8x32) shl #
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 #
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 #
fn (v I8x32) sum() i8
sum adds the lanes, wrapping on overflow.
fn (I8x32) min_element #
fn (v I8x32) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (I8x32) min #
fn (v I8x32) min() i8
min returns the smallest lane value, the lane at index min_element().
fn (I8x32) max_element #
fn (v I8x32) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (I8x32) max #
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 #
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) [] #
fn (v I8x64) [] (i int) i8
[] returns lane i. It panics if i is out of range.
fn (I8x64) []= #
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 #
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 #
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) + #
fn (a I8x64) + (b I8x64) I8x64
- adds corresponding lanes, wrapping on overflow.
fn (I8x64) - #
fn (a I8x64) - (b I8x64) I8x64
- subtracts corresponding lanes, wrapping on overflow.
fn (I8x64) * #
fn (a I8x64) * (b I8x64) I8x64
- multiplies corresponding lanes, wrapping on overflow.
fn (I8x64) / #
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 #
fn (a I8x64) neg() I8x64
neg negates each lane, wrapping min_i8 to itself.
fn (I8x64) abs #
fn (a I8x64) abs() I8x64
abs returns the absolute value of each lane. min_i8 wraps to itself.
fn (I8x64) minimum #
fn (a I8x64) minimum(b I8x64) I8x64
minimum returns the smaller of each pair of lanes.
fn (I8x64) maximum #
fn (a I8x64) maximum(b I8x64) I8x64
maximum returns the larger of each pair of lanes.
fn (I8x64) eq #
fn (a I8x64) eq(b I8x64) Mask8x64
eq returns a mask of the lanes where a is equal to b.
fn (I8x64) ne #
fn (a I8x64) ne(b I8x64) Mask8x64
ne returns a mask of the lanes where a is not equal to b.
fn (I8x64) lt #
fn (a I8x64) lt(b I8x64) Mask8x64
lt returns a mask of the lanes where a is less than b.
fn (I8x64) le #
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 #
fn (a I8x64) and(b I8x64) I8x64
and returns the bitwise AND of corresponding lanes.
fn (I8x64) or #
fn (a I8x64) or(b I8x64) I8x64
or returns the bitwise OR of corresponding lanes.
fn (I8x64) xor #
fn (a I8x64) xor(b I8x64) I8x64
xor returns the bitwise XOR of corresponding lanes.
fn (I8x64) not #
fn (a I8x64) not() I8x64
not returns the bitwise complement of each lane.
fn (I8x64) shl #
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 #
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 #
fn (v I8x64) sum() i8
sum adds the lanes, wrapping on overflow.
fn (I8x64) min_element #
fn (v I8x64) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (I8x64) min #
fn (v I8x64) min() i8
min returns the smallest lane value, the lane at index min_element().
fn (I8x64) max_element #
fn (v I8x64) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (I8x64) max #
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 #
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) [] #
fn (v I8x8) [] (i int) i8
[] returns lane i. It panics if i is out of range.
fn (I8x8) []= #
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 #
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 #
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) + #
fn (a I8x8) + (b I8x8) I8x8
- adds corresponding lanes, wrapping on overflow.
fn (I8x8) - #
fn (a I8x8) - (b I8x8) I8x8
- subtracts corresponding lanes, wrapping on overflow.
fn (I8x8) * #
fn (a I8x8) * (b I8x8) I8x8
- multiplies corresponding lanes, wrapping on overflow.
fn (I8x8) / #
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 #
fn (a I8x8) neg() I8x8
neg negates each lane, wrapping min_i8 to itself.
fn (I8x8) abs #
fn (a I8x8) abs() I8x8
abs returns the absolute value of each lane. min_i8 wraps to itself.
fn (I8x8) minimum #
fn (a I8x8) minimum(b I8x8) I8x8
minimum returns the smaller of each pair of lanes.
fn (I8x8) maximum #
fn (a I8x8) maximum(b I8x8) I8x8
maximum returns the larger of each pair of lanes.
fn (I8x8) eq #
fn (a I8x8) eq(b I8x8) Mask8x8
eq returns a mask of the lanes where a is equal to b.
fn (I8x8) ne #
fn (a I8x8) ne(b I8x8) Mask8x8
ne returns a mask of the lanes where a is not equal to b.
fn (I8x8) lt #
fn (a I8x8) lt(b I8x8) Mask8x8
lt returns a mask of the lanes where a is less than b.
fn (I8x8) le #
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 #
fn (a I8x8) and(b I8x8) I8x8
and returns the bitwise AND of corresponding lanes.
fn (I8x8) or #
fn (a I8x8) or(b I8x8) I8x8
or returns the bitwise OR of corresponding lanes.
fn (I8x8) xor #
fn (a I8x8) xor(b I8x8) I8x8
xor returns the bitwise XOR of corresponding lanes.
fn (I8x8) not #
fn (a I8x8) not() I8x8
not returns the bitwise complement of each lane.
fn (I8x8) shl #
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 #
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 #
fn (v I8x8) sum() i8
sum adds the lanes, wrapping on overflow.
fn (I8x8) min_element #
fn (v I8x8) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (I8x8) min #
fn (v I8x8) min() i8
min returns the smallest lane value, the lane at index min_element().
fn (I8x8) max_element #
fn (v I8x8) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (I8x8) max #
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 #
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 #
fn (m Mask16x16) to_array() [16]bool
to_array returns the lanes in order, true for each set lane.
fn (Mask16x16) [] #
fn (m Mask16x16) [] (i int) bool
[] reports whether lane i is set. It panics if i is out of range.
fn (Mask16x16) []= #
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 #
fn (m Mask16x16) all() bool
all reports whether every lane is set.
fn (Mask16x16) any #
fn (m Mask16x16) any() bool
any reports whether at least one lane is set.
fn (Mask16x16) count #
fn (m Mask16x16) count() int
count returns the number of set lanes.
fn (Mask16x16) and #
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 #
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 #
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 #
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 #
fn (m Mask16x32) to_array() [32]bool
to_array returns the lanes in order, true for each set lane.
fn (Mask16x32) [] #
fn (m Mask16x32) [] (i int) bool
[] reports whether lane i is set. It panics if i is out of range.
fn (Mask16x32) []= #
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 #
fn (m Mask16x32) all() bool
all reports whether every lane is set.
fn (Mask16x32) any #
fn (m Mask16x32) any() bool
any reports whether at least one lane is set.
fn (Mask16x32) count #
fn (m Mask16x32) count() int
count returns the number of set lanes.
fn (Mask16x32) and #
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 #
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 #
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 #
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 #
fn (m Mask16x4) to_array() [4]bool
to_array returns the lanes in order, true for each set lane.
fn (Mask16x4) [] #
fn (m Mask16x4) [] (i int) bool
[] reports whether lane i is set. It panics if i is out of range.
fn (Mask16x4) []= #
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 #
fn (m Mask16x4) all() bool
all reports whether every lane is set.
fn (Mask16x4) any #
fn (m Mask16x4) any() bool
any reports whether at least one lane is set.
fn (Mask16x4) count #
fn (m Mask16x4) count() int
count returns the number of set lanes.
fn (Mask16x4) and #
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 #
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 #
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 #
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 #
fn (m Mask16x8) to_array() [8]bool
to_array returns the lanes in order, true for each set lane.
fn (Mask16x8) [] #
fn (m Mask16x8) [] (i int) bool
[] reports whether lane i is set. It panics if i is out of range.
fn (Mask16x8) []= #
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 #
fn (m Mask16x8) all() bool
all reports whether every lane is set.
fn (Mask16x8) any #
fn (m Mask16x8) any() bool
any reports whether at least one lane is set.
fn (Mask16x8) count #
fn (m Mask16x8) count() int
count returns the number of set lanes.
fn (Mask16x8) and #
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 #
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 #
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 #
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 #
fn (m Mask32x16) to_array() [16]bool
to_array returns the lanes in order, true for each set lane.
fn (Mask32x16) [] #
fn (m Mask32x16) [] (i int) bool
[] reports whether lane i is set. It panics if i is out of range.
fn (Mask32x16) []= #
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 #
fn (m Mask32x16) all() bool
all reports whether every lane is set.
fn (Mask32x16) any #
fn (m Mask32x16) any() bool
any reports whether at least one lane is set.
fn (Mask32x16) count #
fn (m Mask32x16) count() int
count returns the number of set lanes.
fn (Mask32x16) and #
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 #
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 #
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 #
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 #
fn (m Mask32x2) to_array() [2]bool
to_array returns the lanes in order, true for each set lane.
fn (Mask32x2) [] #
fn (m Mask32x2) [] (i int) bool
[] reports whether lane i is set. It panics if i is out of range.
fn (Mask32x2) []= #
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 #
fn (m Mask32x2) all() bool
all reports whether every lane is set.
fn (Mask32x2) any #
fn (m Mask32x2) any() bool
any reports whether at least one lane is set.
fn (Mask32x2) count #
fn (m Mask32x2) count() int
count returns the number of set lanes.
fn (Mask32x2) and #
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 #
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 #
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 #
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 #
fn (m Mask32x4) to_array() [4]bool
to_array returns the lanes in order, true for each set lane.
fn (Mask32x4) [] #
fn (m Mask32x4) [] (i int) bool
[] reports whether lane i is set. It panics if i is out of range.
fn (Mask32x4) []= #
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 #
fn (m Mask32x4) all() bool
all reports whether every lane is set.
fn (Mask32x4) any #
fn (m Mask32x4) any() bool
any reports whether at least one lane is set.
fn (Mask32x4) count #
fn (m Mask32x4) count() int
count returns the number of set lanes.
fn (Mask32x4) and #
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 #
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 #
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 #
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 #
fn (m Mask32x8) to_array() [8]bool
to_array returns the lanes in order, true for each set lane.
fn (Mask32x8) [] #
fn (m Mask32x8) [] (i int) bool
[] reports whether lane i is set. It panics if i is out of range.
fn (Mask32x8) []= #
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 #
fn (m Mask32x8) all() bool
all reports whether every lane is set.
fn (Mask32x8) any #
fn (m Mask32x8) any() bool
any reports whether at least one lane is set.
fn (Mask32x8) count #
fn (m Mask32x8) count() int
count returns the number of set lanes.
fn (Mask32x8) and #
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 #
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 #
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 #
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 #
fn (m Mask64x2) to_array() [2]bool
to_array returns the lanes in order, true for each set lane.
fn (Mask64x2) [] #
fn (m Mask64x2) [] (i int) bool
[] reports whether lane i is set. It panics if i is out of range.
fn (Mask64x2) []= #
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 #
fn (m Mask64x2) all() bool
all reports whether every lane is set.
fn (Mask64x2) any #
fn (m Mask64x2) any() bool
any reports whether at least one lane is set.
fn (Mask64x2) count #
fn (m Mask64x2) count() int
count returns the number of set lanes.
fn (Mask64x2) and #
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 #
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 #
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 #
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 #
fn (m Mask64x4) to_array() [4]bool
to_array returns the lanes in order, true for each set lane.
fn (Mask64x4) [] #
fn (m Mask64x4) [] (i int) bool
[] reports whether lane i is set. It panics if i is out of range.
fn (Mask64x4) []= #
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 #
fn (m Mask64x4) all() bool
all reports whether every lane is set.
fn (Mask64x4) any #
fn (m Mask64x4) any() bool
any reports whether at least one lane is set.
fn (Mask64x4) count #
fn (m Mask64x4) count() int
count returns the number of set lanes.
fn (Mask64x4) and #
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 #
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 #
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 #
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 #
fn (m Mask64x8) to_array() [8]bool
to_array returns the lanes in order, true for each set lane.
fn (Mask64x8) [] #
fn (m Mask64x8) [] (i int) bool
[] reports whether lane i is set. It panics if i is out of range.
fn (Mask64x8) []= #
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 #
fn (m Mask64x8) all() bool
all reports whether every lane is set.
fn (Mask64x8) any #
fn (m Mask64x8) any() bool
any reports whether at least one lane is set.
fn (Mask64x8) count #
fn (m Mask64x8) count() int
count returns the number of set lanes.
fn (Mask64x8) and #
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 #
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 #
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 #
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 #
fn (m Mask8x16) to_array() [16]bool
to_array returns the lanes in order, true for each set lane.
fn (Mask8x16) [] #
fn (m Mask8x16) [] (i int) bool
[] reports whether lane i is set. It panics if i is out of range.
fn (Mask8x16) []= #
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 #
fn (m Mask8x16) all() bool
all reports whether every lane is set.
fn (Mask8x16) any #
fn (m Mask8x16) any() bool
any reports whether at least one lane is set.
fn (Mask8x16) count #
fn (m Mask8x16) count() int
count returns the number of set lanes.
fn (Mask8x16) and #
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 #
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 #
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 #
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 #
fn (m Mask8x32) to_array() [32]bool
to_array returns the lanes in order, true for each set lane.
fn (Mask8x32) [] #
fn (m Mask8x32) [] (i int) bool
[] reports whether lane i is set. It panics if i is out of range.
fn (Mask8x32) []= #
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 #
fn (m Mask8x32) all() bool
all reports whether every lane is set.
fn (Mask8x32) any #
fn (m Mask8x32) any() bool
any reports whether at least one lane is set.
fn (Mask8x32) count #
fn (m Mask8x32) count() int
count returns the number of set lanes.
fn (Mask8x32) and #
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 #
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 #
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 #
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 #
fn (m Mask8x64) to_array() [64]bool
to_array returns the lanes in order, true for each set lane.
fn (Mask8x64) [] #
fn (m Mask8x64) [] (i int) bool
[] reports whether lane i is set. It panics if i is out of range.
fn (Mask8x64) []= #
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 #
fn (m Mask8x64) all() bool
all reports whether every lane is set.
fn (Mask8x64) any #
fn (m Mask8x64) any() bool
any reports whether at least one lane is set.
fn (Mask8x64) count #
fn (m Mask8x64) count() int
count returns the number of set lanes.
fn (Mask8x64) and #
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 #
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 #
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 #
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 #
fn (m Mask8x8) to_array() [8]bool
to_array returns the lanes in order, true for each set lane.
fn (Mask8x8) [] #
fn (m Mask8x8) [] (i int) bool
[] reports whether lane i is set. It panics if i is out of range.
fn (Mask8x8) []= #
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 #
fn (m Mask8x8) all() bool
all reports whether every lane is set.
fn (Mask8x8) any #
fn (m Mask8x8) any() bool
any reports whether at least one lane is set.
fn (Mask8x8) count #
fn (m Mask8x8) count() int
count returns the number of set lanes.
fn (Mask8x8) and #
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 #
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 #
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 #
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) [] #
fn (v U16x16) [] (i int) u16
[] returns lane i. It panics if i is out of range.
fn (U16x16) []= #
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 #
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 #
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) + #
fn (a U16x16) + (b U16x16) U16x16
- adds corresponding lanes, wrapping on overflow.
fn (U16x16) - #
fn (a U16x16) - (b U16x16) U16x16
- subtracts corresponding lanes, wrapping on overflow.
fn (U16x16) * #
fn (a U16x16) * (b U16x16) U16x16
- multiplies corresponding lanes, wrapping on overflow.
fn (U16x16) / #
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 #
fn (a U16x16) minimum(b U16x16) U16x16
minimum returns the smaller of each pair of lanes.
fn (U16x16) maximum #
fn (a U16x16) maximum(b U16x16) U16x16
maximum returns the larger of each pair of lanes.
fn (U16x16) eq #
fn (a U16x16) eq(b U16x16) Mask16x16
eq returns a mask of the lanes where a is equal to b.
fn (U16x16) ne #
fn (a U16x16) ne(b U16x16) Mask16x16
ne returns a mask of the lanes where a is not equal to b.
fn (U16x16) lt #
fn (a U16x16) lt(b U16x16) Mask16x16
lt returns a mask of the lanes where a is less than b.
fn (U16x16) le #
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 #
fn (a U16x16) and(b U16x16) U16x16
and returns the bitwise AND of corresponding lanes.
fn (U16x16) or #
fn (a U16x16) or(b U16x16) U16x16
or returns the bitwise OR of corresponding lanes.
fn (U16x16) xor #
fn (a U16x16) xor(b U16x16) U16x16
xor returns the bitwise XOR of corresponding lanes.
fn (U16x16) not #
fn (a U16x16) not() U16x16
not returns the bitwise complement of each lane.
fn (U16x16) shl #
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 #
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 #
fn (v U16x16) sum() u16
sum adds the lanes, wrapping on overflow.
fn (U16x16) min_element #
fn (v U16x16) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (U16x16) min #
fn (v U16x16) min() u16
min returns the smallest lane value, the lane at index min_element().
fn (U16x16) max_element #
fn (v U16x16) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (U16x16) max #
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 #
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) [] #
fn (v U16x32) [] (i int) u16
[] returns lane i. It panics if i is out of range.
fn (U16x32) []= #
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 #
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 #
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) + #
fn (a U16x32) + (b U16x32) U16x32
- adds corresponding lanes, wrapping on overflow.
fn (U16x32) - #
fn (a U16x32) - (b U16x32) U16x32
- subtracts corresponding lanes, wrapping on overflow.
fn (U16x32) * #
fn (a U16x32) * (b U16x32) U16x32
- multiplies corresponding lanes, wrapping on overflow.
fn (U16x32) / #
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 #
fn (a U16x32) minimum(b U16x32) U16x32
minimum returns the smaller of each pair of lanes.
fn (U16x32) maximum #
fn (a U16x32) maximum(b U16x32) U16x32
maximum returns the larger of each pair of lanes.
fn (U16x32) eq #
fn (a U16x32) eq(b U16x32) Mask16x32
eq returns a mask of the lanes where a is equal to b.
fn (U16x32) ne #
fn (a U16x32) ne(b U16x32) Mask16x32
ne returns a mask of the lanes where a is not equal to b.
fn (U16x32) lt #
fn (a U16x32) lt(b U16x32) Mask16x32
lt returns a mask of the lanes where a is less than b.
fn (U16x32) le #
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 #
fn (a U16x32) and(b U16x32) U16x32
and returns the bitwise AND of corresponding lanes.
fn (U16x32) or #
fn (a U16x32) or(b U16x32) U16x32
or returns the bitwise OR of corresponding lanes.
fn (U16x32) xor #
fn (a U16x32) xor(b U16x32) U16x32
xor returns the bitwise XOR of corresponding lanes.
fn (U16x32) not #
fn (a U16x32) not() U16x32
not returns the bitwise complement of each lane.
fn (U16x32) shl #
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 #
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 #
fn (v U16x32) sum() u16
sum adds the lanes, wrapping on overflow.
fn (U16x32) min_element #
fn (v U16x32) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (U16x32) min #
fn (v U16x32) min() u16
min returns the smallest lane value, the lane at index min_element().
fn (U16x32) max_element #
fn (v U16x32) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (U16x32) max #
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 #
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) [] #
fn (v U16x4) [] (i int) u16
[] returns lane i. It panics if i is out of range.
fn (U16x4) []= #
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 #
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 #
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) + #
fn (a U16x4) + (b U16x4) U16x4
- adds corresponding lanes, wrapping on overflow.
fn (U16x4) - #
fn (a U16x4) - (b U16x4) U16x4
- subtracts corresponding lanes, wrapping on overflow.
fn (U16x4) * #
fn (a U16x4) * (b U16x4) U16x4
- multiplies corresponding lanes, wrapping on overflow.
fn (U16x4) / #
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 #
fn (a U16x4) minimum(b U16x4) U16x4
minimum returns the smaller of each pair of lanes.
fn (U16x4) maximum #
fn (a U16x4) maximum(b U16x4) U16x4
maximum returns the larger of each pair of lanes.
fn (U16x4) eq #
fn (a U16x4) eq(b U16x4) Mask16x4
eq returns a mask of the lanes where a is equal to b.
fn (U16x4) ne #
fn (a U16x4) ne(b U16x4) Mask16x4
ne returns a mask of the lanes where a is not equal to b.
fn (U16x4) lt #
fn (a U16x4) lt(b U16x4) Mask16x4
lt returns a mask of the lanes where a is less than b.
fn (U16x4) le #
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 #
fn (a U16x4) and(b U16x4) U16x4
and returns the bitwise AND of corresponding lanes.
fn (U16x4) or #
fn (a U16x4) or(b U16x4) U16x4
or returns the bitwise OR of corresponding lanes.
fn (U16x4) xor #
fn (a U16x4) xor(b U16x4) U16x4
xor returns the bitwise XOR of corresponding lanes.
fn (U16x4) not #
fn (a U16x4) not() U16x4
not returns the bitwise complement of each lane.
fn (U16x4) shl #
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 #
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 #
fn (v U16x4) sum() u16
sum adds the lanes, wrapping on overflow.
fn (U16x4) min_element #
fn (v U16x4) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (U16x4) min #
fn (v U16x4) min() u16
min returns the smallest lane value, the lane at index min_element().
fn (U16x4) max_element #
fn (v U16x4) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (U16x4) max #
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 #
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) [] #
fn (v U16x8) [] (i int) u16
[] returns lane i. It panics if i is out of range.
fn (U16x8) []= #
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 #
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 #
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) + #
fn (a U16x8) + (b U16x8) U16x8
- adds corresponding lanes, wrapping on overflow.
fn (U16x8) - #
fn (a U16x8) - (b U16x8) U16x8
- subtracts corresponding lanes, wrapping on overflow.
fn (U16x8) * #
fn (a U16x8) * (b U16x8) U16x8
- multiplies corresponding lanes, wrapping on overflow.
fn (U16x8) / #
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 #
fn (a U16x8) minimum(b U16x8) U16x8
minimum returns the smaller of each pair of lanes.
fn (U16x8) maximum #
fn (a U16x8) maximum(b U16x8) U16x8
maximum returns the larger of each pair of lanes.
fn (U16x8) eq #
fn (a U16x8) eq(b U16x8) Mask16x8
eq returns a mask of the lanes where a is equal to b.
fn (U16x8) ne #
fn (a U16x8) ne(b U16x8) Mask16x8
ne returns a mask of the lanes where a is not equal to b.
fn (U16x8) lt #
fn (a U16x8) lt(b U16x8) Mask16x8
lt returns a mask of the lanes where a is less than b.
fn (U16x8) le #
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 #
fn (a U16x8) and(b U16x8) U16x8
and returns the bitwise AND of corresponding lanes.
fn (U16x8) or #
fn (a U16x8) or(b U16x8) U16x8
or returns the bitwise OR of corresponding lanes.
fn (U16x8) xor #
fn (a U16x8) xor(b U16x8) U16x8
xor returns the bitwise XOR of corresponding lanes.
fn (U16x8) not #
fn (a U16x8) not() U16x8
not returns the bitwise complement of each lane.
fn (U16x8) shl #
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 #
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 #
fn (v U16x8) sum() u16
sum adds the lanes, wrapping on overflow.
fn (U16x8) min_element #
fn (v U16x8) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (U16x8) min #
fn (v U16x8) min() u16
min returns the smallest lane value, the lane at index min_element().
fn (U16x8) max_element #
fn (v U16x8) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (U16x8) max #
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 #
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) [] #
fn (v U32x16) [] (i int) u32
[] returns lane i. It panics if i is out of range.
fn (U32x16) []= #
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 #
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 #
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) + #
fn (a U32x16) + (b U32x16) U32x16
- adds corresponding lanes, wrapping on overflow.
fn (U32x16) - #
fn (a U32x16) - (b U32x16) U32x16
- subtracts corresponding lanes, wrapping on overflow.
fn (U32x16) * #
fn (a U32x16) * (b U32x16) U32x16
- multiplies corresponding lanes, wrapping on overflow.
fn (U32x16) / #
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 #
fn (a U32x16) minimum(b U32x16) U32x16
minimum returns the smaller of each pair of lanes.
fn (U32x16) maximum #
fn (a U32x16) maximum(b U32x16) U32x16
maximum returns the larger of each pair of lanes.
fn (U32x16) eq #
fn (a U32x16) eq(b U32x16) Mask32x16
eq returns a mask of the lanes where a is equal to b.
fn (U32x16) ne #
fn (a U32x16) ne(b U32x16) Mask32x16
ne returns a mask of the lanes where a is not equal to b.
fn (U32x16) lt #
fn (a U32x16) lt(b U32x16) Mask32x16
lt returns a mask of the lanes where a is less than b.
fn (U32x16) le #
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 #
fn (a U32x16) and(b U32x16) U32x16
and returns the bitwise AND of corresponding lanes.
fn (U32x16) or #
fn (a U32x16) or(b U32x16) U32x16
or returns the bitwise OR of corresponding lanes.
fn (U32x16) xor #
fn (a U32x16) xor(b U32x16) U32x16
xor returns the bitwise XOR of corresponding lanes.
fn (U32x16) not #
fn (a U32x16) not() U32x16
not returns the bitwise complement of each lane.
fn (U32x16) shl #
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 #
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 #
fn (v U32x16) sum() u32
sum adds the lanes, wrapping on overflow.
fn (U32x16) min_element #
fn (v U32x16) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (U32x16) min #
fn (v U32x16) min() u32
min returns the smallest lane value, the lane at index min_element().
fn (U32x16) max_element #
fn (v U32x16) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (U32x16) max #
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 #
fn (v U32x16) to_f32x16() F32x16
to_f32x16 converts each lane to f32. It rounds to the nearest f32 value.
fn (U32x16) to_i32x16 #
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) [] #
fn (v U32x2) [] (i int) u32
[] returns lane i. It panics if i is out of range.
fn (U32x2) []= #
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 #
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 #
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) + #
fn (a U32x2) + (b U32x2) U32x2
- adds corresponding lanes, wrapping on overflow.
fn (U32x2) - #
fn (a U32x2) - (b U32x2) U32x2
- subtracts corresponding lanes, wrapping on overflow.
fn (U32x2) * #
fn (a U32x2) * (b U32x2) U32x2
- multiplies corresponding lanes, wrapping on overflow.
fn (U32x2) / #
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 #
fn (a U32x2) minimum(b U32x2) U32x2
minimum returns the smaller of each pair of lanes.
fn (U32x2) maximum #
fn (a U32x2) maximum(b U32x2) U32x2
maximum returns the larger of each pair of lanes.
fn (U32x2) eq #
fn (a U32x2) eq(b U32x2) Mask32x2
eq returns a mask of the lanes where a is equal to b.
fn (U32x2) ne #
fn (a U32x2) ne(b U32x2) Mask32x2
ne returns a mask of the lanes where a is not equal to b.
fn (U32x2) lt #
fn (a U32x2) lt(b U32x2) Mask32x2
lt returns a mask of the lanes where a is less than b.
fn (U32x2) le #
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 #
fn (a U32x2) and(b U32x2) U32x2
and returns the bitwise AND of corresponding lanes.
fn (U32x2) or #
fn (a U32x2) or(b U32x2) U32x2
or returns the bitwise OR of corresponding lanes.
fn (U32x2) xor #
fn (a U32x2) xor(b U32x2) U32x2
xor returns the bitwise XOR of corresponding lanes.
fn (U32x2) not #
fn (a U32x2) not() U32x2
not returns the bitwise complement of each lane.
fn (U32x2) shl #
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 #
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 #
fn (v U32x2) sum() u32
sum adds the lanes, wrapping on overflow.
fn (U32x2) min_element #
fn (v U32x2) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (U32x2) min #
fn (v U32x2) min() u32
min returns the smallest lane value, the lane at index min_element().
fn (U32x2) max_element #
fn (v U32x2) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (U32x2) max #
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 #
fn (v U32x2) to_f32x2() F32x2
to_f32x2 converts each lane to f32. It rounds to the nearest f32 value.
fn (U32x2) to_i32x2 #
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) [] #
fn (v U32x4) [] (i int) u32
[] returns lane i. It panics if i is out of range.
fn (U32x4) []= #
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 #
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 #
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) + #
fn (a U32x4) + (b U32x4) U32x4
- adds corresponding lanes, wrapping on overflow.
fn (U32x4) - #
fn (a U32x4) - (b U32x4) U32x4
- subtracts corresponding lanes, wrapping on overflow.
fn (U32x4) * #
fn (a U32x4) * (b U32x4) U32x4
- multiplies corresponding lanes, wrapping on overflow.
fn (U32x4) / #
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 #
fn (a U32x4) minimum(b U32x4) U32x4
minimum returns the smaller of each pair of lanes.
fn (U32x4) maximum #
fn (a U32x4) maximum(b U32x4) U32x4
maximum returns the larger of each pair of lanes.
fn (U32x4) eq #
fn (a U32x4) eq(b U32x4) Mask32x4
eq returns a mask of the lanes where a is equal to b.
fn (U32x4) ne #
fn (a U32x4) ne(b U32x4) Mask32x4
ne returns a mask of the lanes where a is not equal to b.
fn (U32x4) lt #
fn (a U32x4) lt(b U32x4) Mask32x4
lt returns a mask of the lanes where a is less than b.
fn (U32x4) le #
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 #
fn (a U32x4) and(b U32x4) U32x4
and returns the bitwise AND of corresponding lanes.
fn (U32x4) or #
fn (a U32x4) or(b U32x4) U32x4
or returns the bitwise OR of corresponding lanes.
fn (U32x4) xor #
fn (a U32x4) xor(b U32x4) U32x4
xor returns the bitwise XOR of corresponding lanes.
fn (U32x4) not #
fn (a U32x4) not() U32x4
not returns the bitwise complement of each lane.
fn (U32x4) shl #
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 #
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 #
fn (v U32x4) sum() u32
sum adds the lanes, wrapping on overflow.
fn (U32x4) min_element #
fn (v U32x4) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (U32x4) min #
fn (v U32x4) min() u32
min returns the smallest lane value, the lane at index min_element().
fn (U32x4) max_element #
fn (v U32x4) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (U32x4) max #
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 #
fn (v U32x4) to_f32x4() F32x4
to_f32x4 converts each lane to f32. It rounds to the nearest f32 value.
fn (U32x4) to_i32x4 #
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) [] #
fn (v U32x8) [] (i int) u32
[] returns lane i. It panics if i is out of range.
fn (U32x8) []= #
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 #
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 #
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) + #
fn (a U32x8) + (b U32x8) U32x8
- adds corresponding lanes, wrapping on overflow.
fn (U32x8) - #
fn (a U32x8) - (b U32x8) U32x8
- subtracts corresponding lanes, wrapping on overflow.
fn (U32x8) * #
fn (a U32x8) * (b U32x8) U32x8
- multiplies corresponding lanes, wrapping on overflow.
fn (U32x8) / #
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 #
fn (a U32x8) minimum(b U32x8) U32x8
minimum returns the smaller of each pair of lanes.
fn (U32x8) maximum #
fn (a U32x8) maximum(b U32x8) U32x8
maximum returns the larger of each pair of lanes.
fn (U32x8) eq #
fn (a U32x8) eq(b U32x8) Mask32x8
eq returns a mask of the lanes where a is equal to b.
fn (U32x8) ne #
fn (a U32x8) ne(b U32x8) Mask32x8
ne returns a mask of the lanes where a is not equal to b.
fn (U32x8) lt #
fn (a U32x8) lt(b U32x8) Mask32x8
lt returns a mask of the lanes where a is less than b.
fn (U32x8) le #
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 #
fn (a U32x8) and(b U32x8) U32x8
and returns the bitwise AND of corresponding lanes.
fn (U32x8) or #
fn (a U32x8) or(b U32x8) U32x8
or returns the bitwise OR of corresponding lanes.
fn (U32x8) xor #
fn (a U32x8) xor(b U32x8) U32x8
xor returns the bitwise XOR of corresponding lanes.
fn (U32x8) not #
fn (a U32x8) not() U32x8
not returns the bitwise complement of each lane.
fn (U32x8) shl #
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 #
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 #
fn (v U32x8) sum() u32
sum adds the lanes, wrapping on overflow.
fn (U32x8) min_element #
fn (v U32x8) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (U32x8) min #
fn (v U32x8) min() u32
min returns the smallest lane value, the lane at index min_element().
fn (U32x8) max_element #
fn (v U32x8) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (U32x8) max #
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 #
fn (v U32x8) to_f32x8() F32x8
to_f32x8 converts each lane to f32. It rounds to the nearest f32 value.
fn (U32x8) to_i32x8 #
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) [] #
fn (v U64x2) [] (i int) u64
[] returns lane i. It panics if i is out of range.
fn (U64x2) []= #
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 #
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 #
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) + #
fn (a U64x2) + (b U64x2) U64x2
- adds corresponding lanes, wrapping on overflow.
fn (U64x2) - #
fn (a U64x2) - (b U64x2) U64x2
- subtracts corresponding lanes, wrapping on overflow.
fn (U64x2) * #
fn (a U64x2) * (b U64x2) U64x2
- multiplies corresponding lanes, wrapping on overflow.
fn (U64x2) / #
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 #
fn (a U64x2) minimum(b U64x2) U64x2
minimum returns the smaller of each pair of lanes.
fn (U64x2) maximum #
fn (a U64x2) maximum(b U64x2) U64x2
maximum returns the larger of each pair of lanes.
fn (U64x2) eq #
fn (a U64x2) eq(b U64x2) Mask64x2
eq returns a mask of the lanes where a is equal to b.
fn (U64x2) ne #
fn (a U64x2) ne(b U64x2) Mask64x2
ne returns a mask of the lanes where a is not equal to b.
fn (U64x2) lt #
fn (a U64x2) lt(b U64x2) Mask64x2
lt returns a mask of the lanes where a is less than b.
fn (U64x2) le #
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 #
fn (a U64x2) and(b U64x2) U64x2
and returns the bitwise AND of corresponding lanes.
fn (U64x2) or #
fn (a U64x2) or(b U64x2) U64x2
or returns the bitwise OR of corresponding lanes.
fn (U64x2) xor #
fn (a U64x2) xor(b U64x2) U64x2
xor returns the bitwise XOR of corresponding lanes.
fn (U64x2) not #
fn (a U64x2) not() U64x2
not returns the bitwise complement of each lane.
fn (U64x2) shl #
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 #
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 #
fn (v U64x2) sum() u64
sum adds the lanes, wrapping on overflow.
fn (U64x2) min_element #
fn (v U64x2) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (U64x2) min #
fn (v U64x2) min() u64
min returns the smallest lane value, the lane at index min_element().
fn (U64x2) max_element #
fn (v U64x2) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (U64x2) max #
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 #
fn (v U64x2) to_f64x2() F64x2
to_f64x2 converts each lane to f64. It rounds to the nearest f64 value.
fn (U64x2) to_i64x2 #
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) [] #
fn (v U64x4) [] (i int) u64
[] returns lane i. It panics if i is out of range.
fn (U64x4) []= #
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 #
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 #
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) + #
fn (a U64x4) + (b U64x4) U64x4
- adds corresponding lanes, wrapping on overflow.
fn (U64x4) - #
fn (a U64x4) - (b U64x4) U64x4
- subtracts corresponding lanes, wrapping on overflow.
fn (U64x4) * #
fn (a U64x4) * (b U64x4) U64x4
- multiplies corresponding lanes, wrapping on overflow.
fn (U64x4) / #
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 #
fn (a U64x4) minimum(b U64x4) U64x4
minimum returns the smaller of each pair of lanes.
fn (U64x4) maximum #
fn (a U64x4) maximum(b U64x4) U64x4
maximum returns the larger of each pair of lanes.
fn (U64x4) eq #
fn (a U64x4) eq(b U64x4) Mask64x4
eq returns a mask of the lanes where a is equal to b.
fn (U64x4) ne #
fn (a U64x4) ne(b U64x4) Mask64x4
ne returns a mask of the lanes where a is not equal to b.
fn (U64x4) lt #
fn (a U64x4) lt(b U64x4) Mask64x4
lt returns a mask of the lanes where a is less than b.
fn (U64x4) le #
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 #
fn (a U64x4) and(b U64x4) U64x4
and returns the bitwise AND of corresponding lanes.
fn (U64x4) or #
fn (a U64x4) or(b U64x4) U64x4
or returns the bitwise OR of corresponding lanes.
fn (U64x4) xor #
fn (a U64x4) xor(b U64x4) U64x4
xor returns the bitwise XOR of corresponding lanes.
fn (U64x4) not #
fn (a U64x4) not() U64x4
not returns the bitwise complement of each lane.
fn (U64x4) shl #
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 #
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 #
fn (v U64x4) sum() u64
sum adds the lanes, wrapping on overflow.
fn (U64x4) min_element #
fn (v U64x4) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (U64x4) min #
fn (v U64x4) min() u64
min returns the smallest lane value, the lane at index min_element().
fn (U64x4) max_element #
fn (v U64x4) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (U64x4) max #
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 #
fn (v U64x4) to_f64x4() F64x4
to_f64x4 converts each lane to f64. It rounds to the nearest f64 value.
fn (U64x4) to_i64x4 #
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) [] #
fn (v U64x8) [] (i int) u64
[] returns lane i. It panics if i is out of range.
fn (U64x8) []= #
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 #
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 #
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) + #
fn (a U64x8) + (b U64x8) U64x8
- adds corresponding lanes, wrapping on overflow.
fn (U64x8) - #
fn (a U64x8) - (b U64x8) U64x8
- subtracts corresponding lanes, wrapping on overflow.
fn (U64x8) * #
fn (a U64x8) * (b U64x8) U64x8
- multiplies corresponding lanes, wrapping on overflow.
fn (U64x8) / #
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 #
fn (a U64x8) minimum(b U64x8) U64x8
minimum returns the smaller of each pair of lanes.
fn (U64x8) maximum #
fn (a U64x8) maximum(b U64x8) U64x8
maximum returns the larger of each pair of lanes.
fn (U64x8) eq #
fn (a U64x8) eq(b U64x8) Mask64x8
eq returns a mask of the lanes where a is equal to b.
fn (U64x8) ne #
fn (a U64x8) ne(b U64x8) Mask64x8
ne returns a mask of the lanes where a is not equal to b.
fn (U64x8) lt #
fn (a U64x8) lt(b U64x8) Mask64x8
lt returns a mask of the lanes where a is less than b.
fn (U64x8) le #
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 #
fn (a U64x8) and(b U64x8) U64x8
and returns the bitwise AND of corresponding lanes.
fn (U64x8) or #
fn (a U64x8) or(b U64x8) U64x8
or returns the bitwise OR of corresponding lanes.
fn (U64x8) xor #
fn (a U64x8) xor(b U64x8) U64x8
xor returns the bitwise XOR of corresponding lanes.
fn (U64x8) not #
fn (a U64x8) not() U64x8
not returns the bitwise complement of each lane.
fn (U64x8) shl #
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 #
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 #
fn (v U64x8) sum() u64
sum adds the lanes, wrapping on overflow.
fn (U64x8) min_element #
fn (v U64x8) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (U64x8) min #
fn (v U64x8) min() u64
min returns the smallest lane value, the lane at index min_element().
fn (U64x8) max_element #
fn (v U64x8) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (U64x8) max #
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 #
fn (v U64x8) to_f64x8() F64x8
to_f64x8 converts each lane to f64. It rounds to the nearest f64 value.
fn (U64x8) to_i64x8 #
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) [] #
fn (v U8x16) [] (i int) u8
[] returns lane i. It panics if i is out of range.
fn (U8x16) []= #
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 #
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 #
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) + #
fn (a U8x16) + (b U8x16) U8x16
- adds corresponding lanes, wrapping on overflow.
fn (U8x16) - #
fn (a U8x16) - (b U8x16) U8x16
- subtracts corresponding lanes, wrapping on overflow.
fn (U8x16) * #
fn (a U8x16) * (b U8x16) U8x16
- multiplies corresponding lanes, wrapping on overflow.
fn (U8x16) / #
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 #
fn (a U8x16) minimum(b U8x16) U8x16
minimum returns the smaller of each pair of lanes.
fn (U8x16) maximum #
fn (a U8x16) maximum(b U8x16) U8x16
maximum returns the larger of each pair of lanes.
fn (U8x16) eq #
fn (a U8x16) eq(b U8x16) Mask8x16
eq returns a mask of the lanes where a is equal to b.
fn (U8x16) ne #
fn (a U8x16) ne(b U8x16) Mask8x16
ne returns a mask of the lanes where a is not equal to b.
fn (U8x16) lt #
fn (a U8x16) lt(b U8x16) Mask8x16
lt returns a mask of the lanes where a is less than b.
fn (U8x16) le #
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 #
fn (a U8x16) and(b U8x16) U8x16
and returns the bitwise AND of corresponding lanes.
fn (U8x16) or #
fn (a U8x16) or(b U8x16) U8x16
or returns the bitwise OR of corresponding lanes.
fn (U8x16) xor #
fn (a U8x16) xor(b U8x16) U8x16
xor returns the bitwise XOR of corresponding lanes.
fn (U8x16) not #
fn (a U8x16) not() U8x16
not returns the bitwise complement of each lane.
fn (U8x16) shl #
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 #
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 #
fn (v U8x16) sum() u8
sum adds the lanes, wrapping on overflow.
fn (U8x16) min_element #
fn (v U8x16) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (U8x16) min #
fn (v U8x16) min() u8
min returns the smallest lane value, the lane at index min_element().
fn (U8x16) max_element #
fn (v U8x16) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (U8x16) max #
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 #
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) [] #
fn (v U8x32) [] (i int) u8
[] returns lane i. It panics if i is out of range.
fn (U8x32) []= #
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 #
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 #
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) + #
fn (a U8x32) + (b U8x32) U8x32
- adds corresponding lanes, wrapping on overflow.
fn (U8x32) - #
fn (a U8x32) - (b U8x32) U8x32
- subtracts corresponding lanes, wrapping on overflow.
fn (U8x32) * #
fn (a U8x32) * (b U8x32) U8x32
- multiplies corresponding lanes, wrapping on overflow.
fn (U8x32) / #
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 #
fn (a U8x32) minimum(b U8x32) U8x32
minimum returns the smaller of each pair of lanes.
fn (U8x32) maximum #
fn (a U8x32) maximum(b U8x32) U8x32
maximum returns the larger of each pair of lanes.
fn (U8x32) eq #
fn (a U8x32) eq(b U8x32) Mask8x32
eq returns a mask of the lanes where a is equal to b.
fn (U8x32) ne #
fn (a U8x32) ne(b U8x32) Mask8x32
ne returns a mask of the lanes where a is not equal to b.
fn (U8x32) lt #
fn (a U8x32) lt(b U8x32) Mask8x32
lt returns a mask of the lanes where a is less than b.
fn (U8x32) le #
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 #
fn (a U8x32) and(b U8x32) U8x32
and returns the bitwise AND of corresponding lanes.
fn (U8x32) or #
fn (a U8x32) or(b U8x32) U8x32
or returns the bitwise OR of corresponding lanes.
fn (U8x32) xor #
fn (a U8x32) xor(b U8x32) U8x32
xor returns the bitwise XOR of corresponding lanes.
fn (U8x32) not #
fn (a U8x32) not() U8x32
not returns the bitwise complement of each lane.
fn (U8x32) shl #
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 #
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 #
fn (v U8x32) sum() u8
sum adds the lanes, wrapping on overflow.
fn (U8x32) min_element #
fn (v U8x32) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (U8x32) min #
fn (v U8x32) min() u8
min returns the smallest lane value, the lane at index min_element().
fn (U8x32) max_element #
fn (v U8x32) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (U8x32) max #
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 #
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) [] #
fn (v U8x64) [] (i int) u8
[] returns lane i. It panics if i is out of range.
fn (U8x64) []= #
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 #
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 #
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) + #
fn (a U8x64) + (b U8x64) U8x64
- adds corresponding lanes, wrapping on overflow.
fn (U8x64) - #
fn (a U8x64) - (b U8x64) U8x64
- subtracts corresponding lanes, wrapping on overflow.
fn (U8x64) * #
fn (a U8x64) * (b U8x64) U8x64
- multiplies corresponding lanes, wrapping on overflow.
fn (U8x64) / #
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 #
fn (a U8x64) minimum(b U8x64) U8x64
minimum returns the smaller of each pair of lanes.
fn (U8x64) maximum #
fn (a U8x64) maximum(b U8x64) U8x64
maximum returns the larger of each pair of lanes.
fn (U8x64) eq #
fn (a U8x64) eq(b U8x64) Mask8x64
eq returns a mask of the lanes where a is equal to b.
fn (U8x64) ne #
fn (a U8x64) ne(b U8x64) Mask8x64
ne returns a mask of the lanes where a is not equal to b.
fn (U8x64) lt #
fn (a U8x64) lt(b U8x64) Mask8x64
lt returns a mask of the lanes where a is less than b.
fn (U8x64) le #
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 #
fn (a U8x64) and(b U8x64) U8x64
and returns the bitwise AND of corresponding lanes.
fn (U8x64) or #
fn (a U8x64) or(b U8x64) U8x64
or returns the bitwise OR of corresponding lanes.
fn (U8x64) xor #
fn (a U8x64) xor(b U8x64) U8x64
xor returns the bitwise XOR of corresponding lanes.
fn (U8x64) not #
fn (a U8x64) not() U8x64
not returns the bitwise complement of each lane.
fn (U8x64) shl #
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 #
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 #
fn (v U8x64) sum() u8
sum adds the lanes, wrapping on overflow.
fn (U8x64) min_element #
fn (v U8x64) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (U8x64) min #
fn (v U8x64) min() u8
min returns the smallest lane value, the lane at index min_element().
fn (U8x64) max_element #
fn (v U8x64) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (U8x64) max #
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 #
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) [] #
fn (v U8x8) [] (i int) u8
[] returns lane i. It panics if i is out of range.
fn (U8x8) []= #
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 #
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 #
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) + #
fn (a U8x8) + (b U8x8) U8x8
- adds corresponding lanes, wrapping on overflow.
fn (U8x8) - #
fn (a U8x8) - (b U8x8) U8x8
- subtracts corresponding lanes, wrapping on overflow.
fn (U8x8) * #
fn (a U8x8) * (b U8x8) U8x8
- multiplies corresponding lanes, wrapping on overflow.
fn (U8x8) / #
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 #
fn (a U8x8) minimum(b U8x8) U8x8
minimum returns the smaller of each pair of lanes.
fn (U8x8) maximum #
fn (a U8x8) maximum(b U8x8) U8x8
maximum returns the larger of each pair of lanes.
fn (U8x8) eq #
fn (a U8x8) eq(b U8x8) Mask8x8
eq returns a mask of the lanes where a is equal to b.
fn (U8x8) ne #
fn (a U8x8) ne(b U8x8) Mask8x8
ne returns a mask of the lanes where a is not equal to b.
fn (U8x8) lt #
fn (a U8x8) lt(b U8x8) Mask8x8
lt returns a mask of the lanes where a is less than b.
fn (U8x8) le #
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 #
fn (a U8x8) and(b U8x8) U8x8
and returns the bitwise AND of corresponding lanes.
fn (U8x8) or #
fn (a U8x8) or(b U8x8) U8x8
or returns the bitwise OR of corresponding lanes.
fn (U8x8) xor #
fn (a U8x8) xor(b U8x8) U8x8
xor returns the bitwise XOR of corresponding lanes.
fn (U8x8) not #
fn (a U8x8) not() U8x8
not returns the bitwise complement of each lane.
fn (U8x8) shl #
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 #
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 #
fn (v U8x8) sum() u8
sum adds the lanes, wrapping on overflow.
fn (U8x8) min_element #
fn (v U8x8) min_element() int
min_element returns the index of the first lane holding the smallest value.
fn (U8x8) min #
fn (v U8x8) min() u8
min returns the smallest lane value, the lane at index min_element().
fn (U8x8) max_element #
fn (v U8x8) max_element() int
max_element returns the index of the first lane holding the largest value.
fn (U8x8) max #
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 #
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.
- README
- fn broadcast_f32x4
- fn f32x2
- fn f32x4
- fn f32x8
- fn f64x2
- fn f64x4
- fn f64x8
- fn from_array_f32x16
- fn from_array_f32x2
- fn from_array_f32x4
- fn from_array_f32x8
- fn from_array_f64x2
- fn from_array_f64x4
- fn from_array_f64x8
- fn from_array_i16x16
- fn from_array_i16x32
- fn from_array_i16x4
- fn from_array_i16x8
- fn from_array_i32x16
- fn from_array_i32x2
- fn from_array_i32x4
- fn from_array_i32x8
- fn from_array_i64x2
- fn from_array_i64x4
- fn from_array_i64x8
- fn from_array_i8x16
- fn from_array_i8x32
- fn from_array_i8x64
- fn from_array_i8x8
- fn from_array_mask16x16
- fn from_array_mask16x32
- fn from_array_mask16x4
- fn from_array_mask16x8
- fn from_array_mask32x16
- fn from_array_mask32x2
- fn from_array_mask32x4
- fn from_array_mask32x8
- fn from_array_mask64x2
- fn from_array_mask64x4
- fn from_array_mask64x8
- fn from_array_mask8x16
- fn from_array_mask8x32
- fn from_array_mask8x64
- fn from_array_mask8x8
- fn from_array_u16x16
- fn from_array_u16x32
- fn from_array_u16x4
- fn from_array_u16x8
- fn from_array_u32x16
- fn from_array_u32x2
- fn from_array_u32x4
- fn from_array_u32x8
- fn from_array_u64x2
- fn from_array_u64x4
- fn from_array_u64x8
- fn from_array_u8x16
- fn from_array_u8x32
- fn from_array_u8x64
- fn from_array_u8x8
- fn i16x4
- fn i16x8
- fn i32x2
- fn i32x4
- fn i32x8
- fn i64x2
- fn i64x4
- fn i64x8
- fn i8x8
- fn load_f32x16
- fn load_f32x16_at
- fn load_f32x16_part
- fn load_f32x2
- fn load_f32x2_at
- fn load_f32x2_part
- fn load_f32x4
- fn load_f32x4_at
- fn load_f32x4_part
- fn load_f32x8
- fn load_f32x8_at
- fn load_f32x8_part
- fn load_f64x2
- fn load_f64x2_at
- fn load_f64x2_part
- fn load_f64x4
- fn load_f64x4_at
- fn load_f64x4_part
- fn load_f64x8
- fn load_f64x8_at
- fn load_f64x8_part
- fn load_i16x16
- fn load_i16x16_at
- fn load_i16x16_part
- fn load_i16x32
- fn load_i16x32_at
- fn load_i16x32_part
- fn load_i16x4
- fn load_i16x4_at
- fn load_i16x4_part
- fn load_i16x8
- fn load_i16x8_at
- fn load_i16x8_part
- fn load_i32x16
- fn load_i32x16_at
- fn load_i32x16_part
- fn load_i32x2
- fn load_i32x2_at
- fn load_i32x2_part
- fn load_i32x4
- fn load_i32x4_at
- fn load_i32x4_part
- fn load_i32x8
- fn load_i32x8_at
- fn load_i32x8_part
- fn load_i64x2
- fn load_i64x2_at
- fn load_i64x2_part
- fn load_i64x4
- fn load_i64x4_at
- fn load_i64x4_part
- fn load_i64x8
- fn load_i64x8_at
- fn load_i64x8_part
- fn load_i8x16
- fn load_i8x16_at
- fn load_i8x16_part
- fn load_i8x32
- fn load_i8x32_at
- fn load_i8x32_part
- fn load_i8x64
- fn load_i8x64_at
- fn load_i8x64_part
- fn load_i8x8
- fn load_i8x8_at
- fn load_i8x8_part
- fn load_u16x16
- fn load_u16x16_at
- fn load_u16x16_part
- fn load_u16x32
- fn load_u16x32_at
- fn load_u16x32_part
- fn load_u16x4
- fn load_u16x4_at
- fn load_u16x4_part
- fn load_u16x8
- fn load_u16x8_at
- fn load_u16x8_part
- fn load_u32x16
- fn load_u32x16_at
- fn load_u32x16_part
- fn load_u32x2
- fn load_u32x2_at
- fn load_u32x2_part
- fn load_u32x4
- fn load_u32x4_at
- fn load_u32x4_part
- fn load_u32x8
- fn load_u32x8_at
- fn load_u32x8_part
- fn load_u64x2
- fn load_u64x2_at
- fn load_u64x2_part
- fn load_u64x4
- fn load_u64x4_at
- fn load_u64x4_part
- fn load_u64x8
- fn load_u64x8_at
- fn load_u64x8_part
- fn load_u8x16
- fn load_u8x16_at
- fn load_u8x16_part
- fn load_u8x32
- fn load_u8x32_at
- fn load_u8x32_part
- fn load_u8x64
- fn load_u8x64_at
- fn load_u8x64_part
- fn load_u8x8
- fn load_u8x8_at
- fn load_u8x8_part
- fn select_f32x16
- fn select_f32x2
- fn select_f32x4
- fn select_f32x8
- fn select_f64x2
- fn select_f64x4
- fn select_f64x8
- fn select_i16x16
- fn select_i16x32
- fn select_i16x4
- fn select_i16x8
- fn select_i32x16
- fn select_i32x2
- fn select_i32x4
- fn select_i32x8
- fn select_i64x2
- fn select_i64x4
- fn select_i64x8
- fn select_i8x16
- fn select_i8x32
- fn select_i8x64
- fn select_i8x8
- fn select_u16x16
- fn select_u16x32
- fn select_u16x4
- fn select_u16x8
- fn select_u32x16
- fn select_u32x2
- fn select_u32x4
- fn select_u32x8
- fn select_u64x2
- fn select_u64x4
- fn select_u64x8
- fn select_u8x16
- fn select_u8x32
- fn select_u8x64
- fn select_u8x8
- fn splat_f32x16
- fn splat_f32x2
- fn splat_f32x4
- fn splat_f32x8
- fn splat_f64x2
- fn splat_f64x4
- fn splat_f64x8
- fn splat_i16x16
- fn splat_i16x32
- fn splat_i16x4
- fn splat_i16x8
- fn splat_i32x16
- fn splat_i32x2
- fn splat_i32x4
- fn splat_i32x8
- fn splat_i64x2
- fn splat_i64x4
- fn splat_i64x8
- fn splat_i8x16
- fn splat_i8x32
- fn splat_i8x64
- fn splat_i8x8
- fn splat_mask16x16
- fn splat_mask16x32
- fn splat_mask16x4
- fn splat_mask16x8
- fn splat_mask32x16
- fn splat_mask32x2
- fn splat_mask32x4
- fn splat_mask32x8
- fn splat_mask64x2
- fn splat_mask64x4
- fn splat_mask64x8
- fn splat_mask8x16
- fn splat_mask8x32
- fn splat_mask8x64
- fn splat_mask8x8
- fn splat_u16x16
- fn splat_u16x32
- fn splat_u16x4
- fn splat_u16x8
- fn splat_u32x16
- fn splat_u32x2
- fn splat_u32x4
- fn splat_u32x8
- fn splat_u64x2
- fn splat_u64x4
- fn splat_u64x8
- fn splat_u8x16
- fn splat_u8x32
- fn splat_u8x64
- fn splat_u8x8
- fn u16x4
- fn u16x8
- fn u32x2
- fn u32x4
- fn u32x8
- fn u64x2
- fn u64x4
- fn u64x8
- fn u8x8
- struct F32x16
- struct F32x2
- struct F32x4
- struct F32x8
- struct F64x2
- struct F64x4
- struct F64x8
- struct I16x16
- struct I16x32
- struct I16x4
- struct I16x8
- struct I32x16
- fn to_array
- fn []
- fn []=
- fn store
- fn store_part
- fn store_at
- fn +
- fn -
- fn *
- fn /
- fn add
- fn sub
- fn mul
- fn div
- fn neg
- fn abs
- fn minimum
- fn maximum
- fn eq
- fn ne
- fn lt
- fn le
- fn gt
- fn ge
- fn and
- fn or
- fn xor
- fn not
- fn shl
- fn shr
- fn sum
- fn min_element
- fn min
- fn max_element
- fn max
- fn dot
- fn to_f32x16
- fn to_u32x16
- struct I32x2
- fn to_array
- fn []
- fn []=
- fn store
- fn store_part
- fn store_at
- fn +
- fn -
- fn *
- fn /
- fn add
- fn sub
- fn mul
- fn div
- fn neg
- fn abs
- fn minimum
- fn maximum
- fn eq
- fn ne
- fn lt
- fn le
- fn gt
- fn ge
- fn and
- fn or
- fn xor
- fn not
- fn shl
- fn shr
- fn sum
- fn min_element
- fn min
- fn max_element
- fn max
- fn dot
- fn to_f32x2
- fn to_u32x2
- struct I32x4
- fn to_array
- fn []
- fn []=
- fn store
- fn store_part
- fn store_at
- fn +
- fn -
- fn *
- fn /
- fn add
- fn sub
- fn mul
- fn div
- fn neg
- fn abs
- fn minimum
- fn maximum
- fn eq
- fn ne
- fn lt
- fn le
- fn gt
- fn ge
- fn and
- fn or
- fn xor
- fn not
- fn shl
- fn shr
- fn sum
- fn min_element
- fn min
- fn max_element
- fn max
- fn dot
- fn to_f32x4
- fn to_u32x4
- struct I32x8
- fn to_array
- fn []
- fn []=
- fn store
- fn store_part
- fn store_at
- fn +
- fn -
- fn *
- fn /
- fn add
- fn sub
- fn mul
- fn div
- fn neg
- fn abs
- fn minimum
- fn maximum
- fn eq
- fn ne
- fn lt
- fn le
- fn gt
- fn ge
- fn and
- fn or
- fn xor
- fn not
- fn shl
- fn shr
- fn sum
- fn min_element
- fn min
- fn max_element
- fn max
- fn dot
- fn to_f32x8
- fn to_u32x8
- struct I64x2
- fn to_array
- fn []
- fn []=
- fn store
- fn store_part
- fn store_at
- fn +
- fn -
- fn *
- fn /
- fn add
- fn sub
- fn mul
- fn div
- fn neg
- fn abs
- fn minimum
- fn maximum
- fn eq
- fn ne
- fn lt
- fn le
- fn gt
- fn ge
- fn and
- fn or
- fn xor
- fn not
- fn shl
- fn shr
- fn sum
- fn min_element
- fn min
- fn max_element
- fn max
- fn dot
- fn to_f64x2
- fn to_u64x2
- struct I64x4
- fn to_array
- fn []
- fn []=
- fn store
- fn store_part
- fn store_at
- fn +
- fn -
- fn *
- fn /
- fn add
- fn sub
- fn mul
- fn div
- fn neg
- fn abs
- fn minimum
- fn maximum
- fn eq
- fn ne
- fn lt
- fn le
- fn gt
- fn ge
- fn and
- fn or
- fn xor
- fn not
- fn shl
- fn shr
- fn sum
- fn min_element
- fn min
- fn max_element
- fn max
- fn dot
- fn to_f64x4
- fn to_u64x4
- struct I64x8
- fn to_array
- fn []
- fn []=
- fn store
- fn store_part
- fn store_at
- fn +
- fn -
- fn *
- fn /
- fn add
- fn sub
- fn mul
- fn div
- fn neg
- fn abs
- fn minimum
- fn maximum
- fn eq
- fn ne
- fn lt
- fn le
- fn gt
- fn ge
- fn and
- fn or
- fn xor
- fn not
- fn shl
- fn shr
- fn sum
- fn min_element
- fn min
- fn max_element
- fn max
- fn dot
- fn to_f64x8
- fn to_u64x8
- struct I8x16
- struct I8x32
- struct I8x64
- struct I8x8
- struct Mask16x16
- struct Mask16x32
- struct Mask16x4
- struct Mask16x8
- struct Mask32x16
- struct Mask32x2
- struct Mask32x4
- struct Mask32x8
- struct Mask64x2
- struct Mask64x4
- struct Mask64x8
- struct Mask8x16
- struct Mask8x32
- struct Mask8x64
- struct Mask8x8
- struct U16x16
- struct U16x32
- struct U16x4
- struct U16x8
- struct U32x16
- struct U32x2
- struct U32x4
- struct U32x8
- struct U64x2
- struct U64x4
- struct U64x8
- struct U8x16
- struct U8x32
- struct U8x64
- struct U8x8