Bigstring.Int64_utype bigstring :=
(char, Bigarray.int8_unsigned_elt, Bigarray.c_layout) Bigarray.Array1.tWARNING: by default, the backing array of a bigstring is allocated by `malloc`, so is only 16-byte aligned. The aligned operations below require 32-byte alignment.
Note the safe aligned operations can be used to determine the offset at which a bigstring becomes 32-aligned.
val unaligned_get :
bigstring @ local read ->
(byte:int64 ->
int16x16) @ local @@ portableLoad 32 bytes from a bigstring at an arbitrary byte offset.
val aligned_get :
bigstring @ local read ->
(byte:int64 ->
int16x16) @ local @@ portableLoad 32 bytes from a bigstring at a 32-aligned byte offset.
val unsafe_unaligned_get :
bigstring @ local read ->
(byte:int64 ->
int16x16) @ local @@ portableLoad 32 bytes from a bigstring at an arbitrary byte offset. Does not check bounds.
val unsafe_aligned_get :
bigstring @ local read ->
(byte:int64 ->
int16x16) @ local @@ portableLoad 32 bytes from a bigstring at a 32-aligned byte offset. Does not check bounds or alignment.
val unaligned_set :
bigstring @ local ->
(byte:int64 ->
(int16x16 ->
unit) @ local) @ local @@ portableWrite 32 bytes to a bigstring at an arbitrary byte offset.
val aligned_set :
bigstring @ local ->
(byte:int64 ->
(int16x16 ->
unit) @ local) @ local @@ portableWrite 32 bytes to a bigstring at a 32-aligned byte offset.
val unsafe_unaligned_set :
bigstring @ local ->
(byte:int64 ->
(int16x16 ->
unit) @ local) @ local @@ portableWrite 32 bytes to a bigstring at an arbitrary byte offset. Does not check bounds.
val unsafe_aligned_set :
bigstring @ local ->
(byte:int64 ->
(int16x16 ->
unit) @ local) @ local @@ portableWrite 32 bytes to a bigstring at a 32-aligned byte offset. Does not check bounds or alignment.