Module Ocaml_simd_sse.Int16x8

type t = int16x8
type mask = int16x8
val box : t -> int16x8 @@ portable
val unbox : int16x8 @ local -> t @@ portable
val zero : unit -> t @@ portable

Equivalent to const1 0.

val one : unit -> t @@ portable

Equivalent to const1 1.

val set1 : int16 -> t @@ portable

_mm_set1_epi16 Compiles to movd,pshufb.

val set : int16 -> int16 -> int16 -> int16 -> int16 -> int16 -> int16 -> int16 -> t @@ portable

_mm_set_epi16 Compiles to 4x movd,4x pinsr,3x punpcklw.

val const1 : int16 -> t @@ portable

Argument must be an unsigned 16-bit int literal. Compiles to a static vector literal. Exposed as an external so user code can compile without cross-library inlining.

val const : int16 -> int16 -> int16 -> int16 -> int16 -> int16 -> int16 -> int16 -> t @@ portable

Arguments must be unsigned 16-bit int literals. Compiles to a static vector literal. Exposed as an external so user code can compile without cross-library inlining.

module Bigstring = Load_store.Bigstring_Int16x8
module Test : Test.S with type t := t
val (>=) : t -> t -> mask @@ portable

Compiles to cmpgt,cmpeq,orpd.

val (<=) : t -> t -> mask @@ portable

Compiles to cmpgt,cmpeq,orpd.

val (=) : t -> t -> mask @@ portable

_mm_cmpeq_epi16

val (>) : t -> t -> mask @@ portable

_mm_cmpgt_epi16

val (<) : t -> t -> mask @@ portable

_mm_cmplt_epi16

val (<>) : t -> t -> mask @@ portable

Compiles to cmpeq,xorpd.

val equal : t -> t -> mask @@ portable

_mm_cmpeq_epi16

val insert : idx:int64 -> t -> int16 -> t @@ portable

idx must be in 0,7.

val extract : idx:int64 -> t -> int16 @@ portable

idx must be in 0,7.

val extract0 : t -> int16 @@ portable

Projection. More efficient than extract ~idx:#0L.

val splat : t -> #(int16 * int16 * int16 * int16 * int16 * int16 * int16 * int16) @@ portable

Slow, intended for debugging / printing / etc.

val interleave_upper : even:t -> odd:t -> t @@ portable

_mm_unpackhi_epi16

val interleave_lower : even:t -> odd:t -> t @@ portable

_mm_unpacklo_epi16

val blend : Ocaml_simd.Blend8.t -> t -> t -> t @@ portable

_mm_blend_epi16 Specify blend with ppx_simd: %blend N, N, N, N, N, N, N, N, where each N is in 0,1. Exposed as an external so user code can compile without cross-library inlining.

val shuffle_upper : Ocaml_simd.Shuffle4.t -> t -> t @@ portable

_mm_shufflehi_epi16 Specify shuffle with ppx_simd: %shuffle N, N, N, N, where each N is in 0,3. Exposed as an external so user code can compile without cross-library inlining.

val shuffle_lower : Ocaml_simd.Shuffle4.t -> t -> t @@ portable

_mm_shufflelo_epi16 Specify shuffle with ppx_simd: %shuffle N, N, N, N, where each N is in 0,3. Exposed as an external so user code can compile without cross-library inlining.

val min : t -> t -> t @@ portable

_mm_min_epi16

val max : t -> t -> t @@ portable

_mm_max_epi16

val min_unsigned : t -> t -> t @@ portable

_mm_min_epu16

val max_unsigned : t -> t -> t @@ portable

_mm_max_epu16

val add : t -> t -> t @@ portable

_mm_add_epi16

val add_saturating : t -> t -> t @@ portable

_mm_adds_epi16

val add_saturating_unsigned : t -> t -> t @@ portable

_mm_adds_epu16

val sub : t -> t -> t @@ portable

_mm_sub_epi16

val sub_saturating : t -> t -> t @@ portable

_mm_subs_epi16

val sub_saturating_unsigned : t -> t -> t @@ portable

_mm_subs_epu16

val neg : t -> t @@ portable

_mm_sign_epi16 with -1.

val abs : t -> t @@ portable

_mm_abs_epi16 Equivalent to (x < 0 ? -x : x).

val shift_left_logical : t -> int64 -> t @@ portable

_mm_sll_epi16

val shift_right_logical : t -> int64 -> t @@ portable

_mm_srl_epi16

val shift_right_arithmetic : t -> int64 -> t @@ portable

_mm_sra_epi16

val shifti_left_bytes : int64 -> t -> t @@ portable

_mm_bslli_si128 First argument must be an unsigned integer literal in 0,15. Exposed as an external so user code can compile without cross-library inlining.

val shifti_right_bytes : int64 -> t -> t @@ portable

_mm_bsrli_si128 First argument must be an unsigned integer literal in 0,15. Exposed as an external so user code can compile without cross-library inlining.

val shifti_left_logical : int64 -> t -> t @@ portable

_mm_slli_epi16 First argument must be an unsigned integer literal in 0,15. Exposed as an external so user code can compile without cross-library inlining.

val shifti_right_logical : int64 -> t -> t @@ portable

_mm_srli_epi16 First argument must be an unsigned integer literal in 0,15. Exposed as an external so user code can compile without cross-library inlining.

val shifti_right_arithmetic : int64 -> t -> t @@ portable

_mm_srai_epi16 First argument must be an unsigned integer literal in 0,15. Exposed as an external so user code can compile without cross-library inlining.

val horizontal_add : t -> t -> t @@ portable

_mm_hadd_epi16

val horizontal_add_saturating : t -> t -> t @@ portable

_mm_hadds_epi16

val horizontal_sub : t -> t -> t @@ portable

_mm_hsub_epi16

val horizontal_sub_saturating : t -> t -> t @@ portable

_mm_hsubs_epi16

val mul_sign : t -> t -> t @@ portable

_mm_sign_epi16

val average_unsigned : t -> t -> t @@ portable

_mm_avg_epu16

val minpos_unsigned : t -> t @@ portable

_mm_minpos_epu16

val mul_low_bits : t -> t -> t @@ portable

_mm_mullo_epi16

val mul_high_bits : t -> t -> t @@ portable

_mm_mulhi_epi16

val mul_high_bits_unsigned : t -> t -> t @@ portable

_mm_mulhi_epu16

val mul_horizontal_add : t -> t -> int32x4 @@ portable

_mm_madd_epi16

val mul_round : t -> t -> t @@ portable

_mm_mulhrs_epi16

val (+) : t -> t -> t @@ portable
val (-) : t -> t -> t @@ portable
val lnot : t -> t @@ portable

Compiles to xor with a static constant.

val (lor) : t -> t -> t @@ portable

_mm_or_si128

val (land) : t -> t -> t @@ portable

_mm_and_si128

val landnot : not:t -> t -> t @@ portable

_mm_andnot_si128

val (lxor) : t -> t -> t @@ portable

_mm_xor_si128

val of_float16x8_bits : float16x8 -> t @@ portable

Identity in the bit representation. Different numeric interpretation.

val of_float32x4_bits : float32x4 -> t @@ portable

Identity in the bit representation. Different numeric interpretation.

val of_float64x2_bits : float64x2 -> t @@ portable

Identity in the bit representation. Different numeric interpretation.

val of_int8x16_bits : int8x16 -> t @@ portable

Identity in the bit representation. Different numeric interpretation.

val of_int32x4_bits : int32x4 -> t @@ portable

Identity in the bit representation. Different numeric interpretation.

val of_int64x2_bits : int64x2 -> t @@ portable

Identity in the bit representation. Different numeric interpretation.

val of_int8x16 : int8x16 -> t @@ portable

_mm_cvtepi8_epi16

val of_int8x16_unsigned : int8x16 -> t @@ portable

_mm_cvtepu8_epi16

val of_int32x4_saturating : int32x4 -> int32x4 -> t @@ portable

_mm_packs_epi32

val of_int32x4_saturating_unsigned : int32x4 -> int32x4 -> t @@ portable

_mm_packus_epi32 Clamps signed input to 0..0xffff.

val to_string : t -> string @@ portable

Compiles to splat, sprintf.

val of_string : string -> t @@ portable

Compiles to sscanf, set. Expects a string in the output format of to_string.