Ocaml_simd_avx.Int32x8val box : t -> int32x8 @@ portableval unbox : int32x8 @ local -> t @@ portableval zero : unit -> t @@ portableEquivalent to const1 #0l.
val one : unit -> t @@ portableEquivalent to const1 #1l.
val set1 : int32 -> t @@ portable_mm256_set1_epi32
val set :
int32 ->
int32 ->
int32 ->
int32 ->
int32 ->
int32 ->
int32 ->
int32 ->
t @@ portable_mm256_set_epi32
val set_lanes : int32x4 -> int32x4 -> t @@ portable_mm256_set_m128 Operates on two int32x4 lanes.
val const1 : int32 -> t @@ portableArgument must be a literal or an unboxing function applied to a literal. Compiles to a static vector literal. Exposed as an external so user code can compile without cross-library inlining.
val const :
int32 ->
int32 ->
int32 ->
int32 ->
int32 ->
int32 ->
int32 ->
int32 ->
t @@ portableArguments must be literals or unboxing functions applied to 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 Int32_u_array : sig ... endmodule Test : sig ... endval movemask : mask -> int64 @@ portable_mm256_movemask_ps
_mm256_blendv_ps Only reads the sign bit of each mask lane. Selects the element from pass if the sign bit is 1, otherwise fail.
val extract : idx:int64 -> t -> int32 @@ portableidx must be in 0,7.
val extract0 : t -> int32 @@ portableProjection. More efficient than extract ~idx:#0L.
idx must be a literal in 0,1. Operates on two int32x4 lanes. Exposed as an external so user code can compile without cross-library inlining.
val extract_lane : idx:int64 -> t -> int32x4 @@ portableidx must be a literal in 0,1. Operates on two int32x4 lanes. Exposed as an external so user code can compile without cross-library inlining.
val extract_lane0 : t -> int32x4 @@ portableProjection. Has no runtime cost. Operates on two int32x4 lanes.
val splat :
t ->
#(int32 * int32 * int32 * int32 * int32 * int32 * int32 * int32) @@ portableSlow, intended for debugging / printing / etc.
_mm256_unpackhi_ps Operates on two int32x4 lanes.
interleave_upper_lanes ~even ~odd
= (even.(2), odd.(2), even.(3), odd.(3), even.(6), odd.(6), even.(7), odd.(7))_mm256_unpacklo_ps Operates on two int32x4 lanes.
interleave_lower_lanes ~even ~odd
= (even.(0), odd.(0), even.(1), odd.(1), even.(4), odd.(4), even.(5), odd.(5))_mm256_moveldup_ps
duplicate_even x = (x.(0), x.(0), x.(2), x.(2), x.(4), x.(4), x.(6), x.(6))_mm256_movehdup_ps
duplicate_odd x = (x.(1), x.(1), x.(3), x.(3), x.(5), x.(5), x.(7), x.(7))val blend : Ocaml_simd.Blend8.t -> t -> t -> t @@ portable_mm256_blend_ps 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.
blend [%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))val shuffle_lanes : Ocaml_simd.Shuffle4.t -> t -> t -> t @@ portable_mm256_shuffle_ps Specify shuffle with ppx_simd: %shuffle N, N, N, N, where each N is in 0,3. Operates on two int32x4 lanes. Exposed as an external so user code can compile without cross-library inlining.
shuffle_lanes [%shuffle 1, 0, 3, 2] x y
= (x.(1), x.(0), y.(3), y.(2), x.(5), x.(4), y.(7), y.(6))val permute_lanes : Ocaml_simd.Permute4.t -> t -> t @@ portable_mm256_permute_ps Specify permute with ppx_simd: %permute N, N, N, N, where each N is in 0,3. Operates on two int32x4 lanes. Exposed as an external so user code can compile without cross-library inlining.
permute_lanes [%permute 3, 2, 1, 0] x
= (x.(3), x.(2), x.(1), x.(0), x.(7), x.(6), x.(5), x.(4))_mm256_bslli_epi128 First argument must be an unsigned integer literal in 0,15. Operates on two int32x4 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 int32x4 lanes. Exposed as an external so user code can compile without cross-library inlining.
_mm256_slli_epi32 First argument must be an unsigned integer literal in 0,31. Exposed as an external so user code can compile without cross-library inlining.
_mm256_srli_epi32 First argument must be an unsigned integer literal in 0,31. Exposed as an external so user code can compile without cross-library inlining.
_mm256_srai_epi32 First argument must be an unsigned integer literal in 0,31. Exposed as an external so user code can compile without cross-library inlining.
val unsafe_of_int32x4 : int32x4 -> 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_int16x16_bits : int16x16 -> 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_float32x8 : float32x8 -> t @@ portable_mm256_cvtps_epi32
val of_float32x8_trunc : float32x8 -> t @@ portable_mm256_cvttps_epi32
val of_int8x16 : int8x16 -> t @@ portable_mm256_cvtepi8_epi32
val of_int8x16_unsigned : int8x16 -> t @@ portable_mm256_cvtepu8_epi32
val of_int16x8 : int16x8 -> t @@ portable_mm256_cvtepi16_epi32
val of_int16x8_unsigned : int16x8 -> t @@ portable_mm256_cvtepu16_epi32
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.