Module Ocaml_simd_sse.Float64x2

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

Equivalent to const1 #0.0.

val one : unit -> t @@ portable

Equivalent to const1 #1.0.

val set1 : float -> t @@ portable

_mm_set1_pd Compiles to shufpd.

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

_mm_set_pd Compiles to unpckl.

val const1 : float -> t @@ portable

Argument 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 : float -> float -> t @@ portable

Arguments 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 Float_array = Load_store.Float_array
module Float_iarray = Load_store.Float_iarray
module Floatarray = Load_store.Floatarray
module Float_u_array = Load_store.Float_u_array
val (>=) : t -> t -> mask @@ portable

_mm_cmpge_pd

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

_mm_cmple_pd

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

_mm_cmpeq_pd

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

_mm_cmpgt_pd

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

_mm_cmplt_pd

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

_mm_cmpneq_pd

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

_mm_cmpeq_pd

val is_nan : t -> mask @@ portable

_mm_cmpunord_pd

val is_not_nan : t -> mask @@ portable

_mm_cmpord_pd

val movemask : mask -> int64 @@ portable

_mm_movemask_pd

val bitmask : mask -> int64x2 @@ portable

Identity.

val select : mask -> fail:t -> pass:t -> t @@ portable

_mm_blendv_pd Only reads the sign bit of each mask lane. Selects the element from pass if the sign bit is 1, otherwise fail.

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

idx must be in 0,1. Compiles to shufpd,branch,blendpd.

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

idx must be in 0,1. Compiles to branch,shufpd.

val extract0 : t -> float @@ portable

Projection. Has no runtime cost.

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

Slow, intended for debugging / printing / etc.

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

_mm_unpackhi_pd

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

_mm_unpacklo_pd

val lower_to_upper : from:t -> onto:t -> t @@ portable

_mm_movehl_ps

val upper_to_lower : from:t -> onto:t -> t @@ portable

_mm_movelh_ps

val duplicate_lower : t -> t @@ portable

_mm_movedup_pd

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

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

val shuffle : Ocaml_simd.Shuffle2.t -> t -> t -> t @@ portable

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

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

_mm_min_pd Equivalent to pointwise (x < y ? x : y). If either lane is NaN, the second lane is returned.

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

_mm_max_pd Equivalent to pointwise (x > y ? x : y). If either lane is NaN, the second lane is returned.

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

_mm_add_pd

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

_mm_sub_pd

val mul : t -> t -> t @@ portable

_mm_mul_pd

val div : t -> t -> t @@ portable

_mm_div_pd

val neg : t -> t @@ portable

Compiles to xor with a static constant.

val abs : t -> t @@ portable

Compiles to and with a static constant.

val sqrt : t -> t @@ portable

_mm_sqrt_pd

val add_sub : t -> t -> t @@ portable

_mm_addsub_pd

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

_mm_hadd_pd

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

_mm_hsub_pd

val dot : t -> t -> float @@ portable

_mm_dp_pd

val (+) : t -> t -> t @@ portable
val (-) : t -> t -> t @@ portable
val (/) : t -> t -> t @@ portable
val (*) : t -> t -> t @@ portable
val iround_current : t -> int32x4 @@ portable

_mm_cvtpd_epi32

val round_nearest : t -> t @@ portable

_mm_round_pd

val round_current : t -> t @@ portable

_mm_round_pd

val round_down : t -> t @@ portable

_mm_round_pd

val round_up : t -> t @@ portable

_mm_round_pd

val round_toward_zero : t -> t @@ portable

_mm_round_pd

val unsafe_of_float : float -> t @@ portable

Identity; leaves upper 64 bits unspecified.

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_int8x16_bits : int8x16 -> t @@ portable

Identity in the bit representation. Different numeric interpretation.

val of_int16x8_bits : int16x8 -> 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_int32x4 : int32x4 -> t @@ portable

_mm_cvtepi32_pd

val of_float32x4 : float32x4 -> t @@ portable

_mm_cvtps_pd

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.