Ocaml_simd_avx.Int16x16val box : t -> int16x16 @@ portableval unbox : int16x16 @ local -> t @@ portableval zero : unit -> t @@ portableEquivalent to const1 0.
val one : unit -> t @@ portableEquivalent to const1 1.
val set1 : int16 -> t @@ portable_mm256_set1_epi16
val set :
int16 ->
int16 ->
int16 ->
int16 ->
int16 ->
int16 ->
int16 ->
int16 ->
int16 ->
int16 ->
int16 ->
int16 ->
int16 ->
int16 ->
int16 ->
int16 ->
t @@ portable_mm256_set_epi16
val set_lanes : int16x8 -> int16x8 -> t @@ portable_mm256_set_m128 Operates on two int16x8 lanes.
val const1 : int16 -> t @@ portableArgument 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 ->
int16 ->
int16 ->
int16 ->
int16 ->
int16 ->
int16 ->
int16 ->
int16 ->
t @@ portableArguments 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 Raw : sig ... endmodule String : sig ... endmodule Bytes : sig ... endmodule Bigstring : sig ... endmodule Test : sig ... endval extract : idx:int64 -> t -> int16 @@ portableidx must be in 0,15.
val extract0 : t -> int16 @@ portableProjection. More efficient than extract ~idx:#0L.
idx must be a literal in 0,1. Operates on two int16x8 lanes. Exposed as an external so user code can compile without cross-library inlining.
val extract_lane : idx:int64 -> t -> int16x8 @@ portableidx must be a literal in 0,1. Operates on two int16x8 lanes. Exposed as an external so user code can compile without cross-library inlining.
val extract_lane0 : t -> int16x8 @@ portableProjection. Has no runtime cost. Operates on two int16x8 lanes.
val splat :
t ->
#(int16
* int16
* int16
* int16
* int16
* int16
* int16
* int16
* int16
* int16
* int16
* int16
* int16
* int16
* int16
* int16) @@ portableSlow, intended for debugging / printing / etc.
_mm256_unpackhi_epi16 Operates on two int16x8 lanes.
interleave_upper_lanes ~even ~odd
= ( even.(4)
, odd.(4)
, even.(5)
, odd.(5)
, even.(6)
, odd.(6)
, even.(7)
, odd.(7)
, even.(12)
, odd.(12)
, even.(13)
, odd.(13)
, even.(14)
, odd.(14)
, even.(15)
, odd.(15) )_mm256_unpacklo_epi16 Operates on two int16x8 lanes.
interleave_lower_lanes ~even ~odd
= ( even.(0)
, odd.(0)
, even.(1)
, odd.(1)
, even.(2)
, odd.(2)
, even.(3)
, odd.(3)
, even.(8)
, odd.(8)
, even.(9)
, odd.(9)
, even.(10)
, odd.(10)
, even.(11)
, odd.(11) )val blend_lanes : Ocaml_simd.Blend8.t -> t -> t -> t @@ portable_mm256_blend_epi16 Specify blend with ppx_simd: %blend N, N, N, N, N, N, N, N, where each N is in 0,1. Operates on two int16x8 lanes. Exposed as an external so user code can compile without cross-library inlining.
blend_lanes [%blend 1, 0, 1, 0, 1, 0, 1, 0] x y
= ( y.(0)
, x.(1)
, y.(2)
, x.(3)
, y.(4)
, x.(5)
, y.(6)
, x.(7)
, y.(8)
, x.(9)
, y.(10)
, x.(11)
, y.(12)
, x.(13)
, y.(14)
, x.(15) )val shuffle_upper_lanes : Ocaml_simd.Shuffle4.t -> t -> t @@ portable_mm256_shufflehi_epi16 Specify shuffle with ppx_simd: %shuffle N, N, N, N, where each N is in 0,3. Operates on two int16x8 lanes. Exposed as an external so user code can compile without cross-library inlining.
shuffle_upper_lanes [%shuffle 1, 0, 3, 2] x
= ( x.(0)
, x.(1)
, x.(2)
, x.(3)
, x.(5)
, x.(4)
, x.(7)
, x.(6)
, x.(8)
, x.(9)
, x.(10)
, x.(11)
, x.(13)
, x.(12)
, x.(15)
, x.(14) )val shuffle_lower_lanes : Ocaml_simd.Shuffle4.t -> t -> t @@ portable_mm256_shufflelo_epi16 Specify shuffle with ppx_simd: %shuffle N, N, N, N, where each N is in 0,3. Operates on two int16x8 lanes. Exposed as an external so user code can compile without cross-library inlining.
shuffle_lower_lanes [%shuffle 1, 0, 3, 2] x
= ( x.(1)
, x.(0)
, x.(3)
, x.(2)
, x.(4)
, x.(5)
, x.(6)
, x.(7)
, x.(9)
, x.(8)
, x.(11)
, x.(10)
, x.(12)
, x.(13)
, x.(14)
, x.(15) )_mm256_bslli_epi128 First argument must be an unsigned integer literal in 0,15. Operates on two int16x8 lanes. Exposed as an external so user code can compile without cross-library inlining.
_mm256_bsrli_epi128 First argument must be an unsigned integer literal in 0,15. Operates on two int16x8 lanes. Exposed as an external so user code can compile without cross-library inlining.
_mm256_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.
_mm256_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.
_mm256_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.
_mm256_hadds_epi16 Operates on two int16x8 lanes.
_mm256_hsubs_epi16 Operates on two int16x8 lanes.
val unsafe_of_int16x8 : int16x8 -> t @@ portableIdentity; leaves upper 128 bits unspecified.
val of_float16x16_bits : float16x16 -> t @@ portableIdentity in the bit representation. Different numeric interpretation.
val of_float32x8_bits : float32x8 -> t @@ portableIdentity in the bit representation. Different numeric interpretation.
val of_float64x4_bits : float64x4 -> t @@ portableIdentity in the bit representation. Different numeric interpretation.
val of_int8x32_bits : int8x32 -> t @@ portableIdentity in the bit representation. Different numeric interpretation.
val of_int32x8_bits : int32x8 -> t @@ portableIdentity in the bit representation. Different numeric interpretation.
val of_int64x4_bits : int64x4 -> t @@ portableIdentity in the bit representation. Different numeric interpretation.
val of_int8x16 : int8x16 -> t @@ portable_mm256_cvtepi8_epi16
val of_int8x16_unsigned : int8x16 -> t @@ portable_mm256_cvtepu8_epi16
val of_int32x8_saturating_lanes : int32x8 -> int32x8 -> t @@ portable_mm256_packs_epi32 Operates on two int16x8 lanes.
val of_int32x8_saturating_unsigned_lanes : int32x8 -> int32x8 -> t @@ portable_mm256_packus_epi32 Clamps signed input to 0..0xffff. Operates on two int16x8 lanes.
val to_string : t -> string @@ portableCompiles to splat, sprintf.
val of_string : string -> t @@ portableCompiles to sscanf, set. Expects a string in the output format of to_string.