package core:simd

⌘K
Ctrl+K
or
/

    Types

    b16x16 ¶

    b16x16 :: #simd[16]b16

    b16x32 ¶

    b16x32 :: #simd[32]b16

    b16x8 ¶

    b16x8 :: #simd[8]b16

    b32x16 ¶

    b32x16 :: #simd[16]b32

    b32x4 ¶

    b32x4 :: #simd[4]b32

    b32x8 ¶

    b32x8 :: #simd[8]b32

    b64x2 ¶

    b64x2 :: #simd[2]b64

    b64x4 ¶

    b64x4 :: #simd[4]b64

    b64x8 ¶

    b64x8 :: #simd[8]b64

    b8x16 ¶

    b8x16 :: #simd[16]b8

    b8x32 ¶

    b8x32 :: #simd[32]b8

    b8x64 ¶

    b8x64 :: #simd[64]b8

    boolx16 ¶

    boolx16 :: #simd[16]bool

    boolx32 ¶

    boolx32 :: #simd[32]bool

    boolx64 ¶

    boolx64 :: #simd[64]bool

    f32x16 ¶

    f32x16 :: #simd[16]f32

    f32x4 ¶

    f32x4 :: #simd[4]f32

    f32x8 ¶

    f32x8 :: #simd[8]f32

    f64x2 ¶

    f64x2 :: #simd[2]f64

    f64x4 ¶

    f64x4 :: #simd[4]f64

    f64x8 ¶

    f64x8 :: #simd[8]f64

    i16x16 ¶

    i16x16 :: #simd[16]i16

    i16x32 ¶

    i16x32 :: #simd[32]i16

    i16x8 ¶

    i16x8 :: #simd[8]i16

    i32x16 ¶

    i32x16 :: #simd[16]i32

    i32x4 ¶

    i32x4 :: #simd[4]i32

    i32x8 ¶

    i32x8 :: #simd[8]i32

    i64x2 ¶

    i64x2 :: #simd[2]i64

    i64x4 ¶

    i64x4 :: #simd[4]i64

    i64x8 ¶

    i64x8 :: #simd[8]i64

    i8x16 ¶

    i8x16 :: #simd[16]i8

    i8x32 ¶

    i8x32 :: #simd[32]i8

    i8x64 ¶

    i8x64 :: #simd[64]i8

    u16x16 ¶

    u16x16 :: #simd[16]u16

    u16x32 ¶

    u16x32 :: #simd[32]u16

    u16x8 ¶

    u16x8 :: #simd[8]u16

    u32x16 ¶

    u32x16 :: #simd[16]u32

    u32x4 ¶

    u32x4 :: #simd[4]u32

    u32x8 ¶

    u32x8 :: #simd[8]u32

    u64x2 ¶

    u64x2 :: #simd[2]u64

    u64x4 ¶

    u64x4 :: #simd[4]u64

    u64x8 ¶

    u64x8 :: #simd[8]u64

    u8x16 ¶

    u8x16 :: #simd[16]u8
     

    128-bit vector aliases

    u8x32 ¶

    u8x32 :: #simd[32]u8
     

    256-bit vector aliases

    u8x64 ¶

    u8x64 :: #simd[64]u8
     

    512-bit vector aliases

    Constants

    IS_EMULATED ¶

    IS_EMULATED :: true when (ODIN_ARCH == .amd64 || ODIN_ARCH == .i386) && !intrinsics.has_target_feature("sse2") else true when (ODIN_ARCH == .arm64 || ODIN_ARCH == .arm32) && !intrinsics.has_target_feature("neon") else true when (ODIN_ARCH == .wasm64p32 || ODIN_ARCH == .wasm32) && !intrinsics.has_target_feature("simd128") else true when (ODIN_ARCH == .riscv64) && !intrinsics.has_target_feature("v") else false
     

    IS_EMULATED is true iff the compile-time target lacks hardware support for at least 128-bit SIMD.

    Variables

    This section is empty.

    Procedures

    abs ¶

    abs :: intrinsics.simd_abs

    add ¶

    add :: intrinsics.simd_add

    bit_and ¶

    bit_and :: intrinsics.simd_bit_and

    bit_and_not ¶

    bit_and_not :: intrinsics.simd_bit_and_not

    bit_not ¶

    bit_not :: proc "contextless" (v: $/#simd[0]$T) -> $/#simd[0]$T {…}

    bit_or ¶

    bit_or :: intrinsics.simd_bit_or

    bit_xor ¶

    bit_xor :: intrinsics.simd_bit_xor

    ceil ¶

    ceil :: intrinsics.simd_ceil

    clamp ¶

    clamp :: intrinsics.simd_clamp

    copysign ¶

    copysign :: proc "contextless" (v, sign: $/#simd[0]$T) -> $/#simd[0]$T {…}

    count_leading_zeros ¶

    count_leading_zeros :: intrinsics.count_leading_zeros

    count_ones ¶

    count_ones :: intrinsics.count_ones

    count_trailing_zeros ¶

    count_trailing_zeros :: intrinsics.count_trailing_zeros

    count_zeros ¶

    count_zeros :: intrinsics.count_zeros

    div ¶

    div :: intrinsics.simd_div
     

    floats only

    extract ¶

    extract :: intrinsics.simd_extract
     

    extract :: proc(a: #simd[N]T, idx: uint) -> T

    floor ¶

    floor :: intrinsics.simd_floor

    fma ¶

    fma :: intrinsics.fused_mul_add

    from_array ¶

    from_array :: proc "contextless" (v: $T/[0]$T) -> #simd[0]$T {…}

    from_slice ¶

    from_slice :: proc($T: typeid/#simd[0]T, slice: []T) -> $/#simd[0]T {…}

    fused_mul_add ¶

    fused_mul_add :: intrinsics.fused_mul_add

    gather ¶

    gather :: intrinsics.simd_gather
     

    Gather and Scatter intrinsics

    lanes_eq ¶

    lanes_eq :: intrinsics.simd_lanes_eq
     

    Return an unsigned integer of the same size as the input type NOT A BOOLEAN element-wise: false => 0x00...00 true => 0xff...ff

    lanes_ge ¶

    lanes_ge :: intrinsics.simd_lanes_ge

    lanes_gt ¶

    lanes_gt :: intrinsics.simd_lanes_gt

    lanes_le ¶

    lanes_le :: intrinsics.simd_lanes_le

    lanes_lt ¶

    lanes_lt :: intrinsics.simd_lanes_lt

    lanes_ne ¶

    lanes_ne :: intrinsics.simd_lanes_ne

    lanes_reverse ¶

    lanes_reverse :: intrinsics.simd_lanes_reverse

    lanes_rotate_left ¶

    lanes_rotate_left :: intrinsics.simd_lanes_rotate_left

    lanes_rotate_right ¶

    lanes_rotate_right :: intrinsics.simd_lanes_rotate_right

    masked_compress_store ¶

    masked_compress_store :: intrinsics.simd_masked_compress_store

    masked_expand_load ¶

    masked_expand_load :: intrinsics.simd_masked_expand_load

    masked_load ¶

    masked_load :: intrinsics.simd_masked_load

    masked_store ¶

    masked_store :: intrinsics.simd_masked_store

    max ¶

    max :: intrinsics.simd_max

    min ¶

    min :: intrinsics.simd_min

    mul ¶

    mul :: intrinsics.simd_mul

    nearest ¶

    nearest :: intrinsics.simd_nearest

    neg ¶

    neg :: intrinsics.simd_neg

    recip ¶

    recip :: proc "contextless" (v: $/#simd[0]$T) -> $/#simd[0]$T {…}

    reduce_add_ordered ¶

    reduce_add_ordered :: intrinsics.simd_reduce_add_ordered

    reduce_all ¶

    reduce_all :: intrinsics.simd_reduce_all

    reduce_and ¶

    reduce_and :: intrinsics.simd_reduce_and

    reduce_any ¶

    reduce_any :: intrinsics.simd_reduce_any

    reduce_max ¶

    reduce_max :: intrinsics.simd_reduce_max

    reduce_min ¶

    reduce_min :: intrinsics.simd_reduce_min

    reduce_mul_ordered ¶

    reduce_mul_ordered :: intrinsics.simd_reduce_mul_ordered

    reduce_or ¶

    reduce_or :: intrinsics.simd_reduce_or

    reduce_xor ¶

    reduce_xor :: intrinsics.simd_reduce_xor

    replace ¶

    replace :: intrinsics.simd_replace
     

    replace :: proc(a: #simd[N]T, idx: uint, elem: T) -> #simd[N]T

    reverse_bits ¶

    reverse_bits :: intrinsics.reverse_bits

    saturating_add ¶

    saturating_add :: intrinsics.simd_saturating_add
     

    Saturation Arithmetic

    saturating_sub ¶

    saturating_sub :: intrinsics.simd_saturating_sub

    scatter ¶

    scatter :: intrinsics.simd_scatter

    select ¶

    select :: intrinsics.simd_select
     

    select :: proc(cond: #simd[N]boolean_or_integer, true, false: #simd[N]T) -> #simd[N]T

    shl ¶

    shl :: intrinsics.simd_shl
     

    Keeps Odin's Behaviour (x << y) if y <= mask else 0

    shl_masked ¶

    shl_masked :: intrinsics.simd_shl_masked
     

    Similar to C's Behaviour x << (y & mask)

    shr ¶

    shr :: intrinsics.simd_shr

    shr_masked ¶

    shr_masked :: intrinsics.simd_shr_masked

    shuffle ¶

    shuffle :: intrinsics.simd_shuffle
     

    shuffle :: proc(a, b: #simd[N]T, indices: #simd[max 2*N]u32) -> #simd[len(indices)]T

    signum ¶

    signum :: proc "contextless" (v: $/#simd[0]$T) -> $/#simd[0]$T {…}

    sqrt ¶

    sqrt :: intrinsics.sqrt

    sub ¶

    sub :: intrinsics.simd_sub

    swizzle ¶

    swizzle :: builtin.swizzle
     

    swizzle :: proc(a: #simd[N]T, indices: ..int) -> #simd[len(indices)]T

    to_array ¶

    to_array :: proc "contextless" (v: #simd[0]$T) -> [0]$T {…}

    to_array_ptr ¶

    to_array_ptr :: proc "contextless" (v: ^#simd[0]$T) -> ^[0]$T {…}

    to_bits ¶

    to_bits :: intrinsics.simd_to_bits

    trunc ¶

    trunc :: intrinsics.simd_trunc

    Procedure Groups

    This section is empty.

    Source Files

    Generation Information

    Generated with odin version dev-2024-11 (vendor "odin") Windows_amd64 @ 2024-11-16 21:10:10.075837000 +0000 UTC