123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225typetemporal_locality=|None|Low|Moderate|Hightypeoperation=|Read|Write(* The compiler needs to know statically the operation and the temporal locality hints,
because they correspond to different instructions on amd64 target and different GCC
builtins in the C stubs. We have one "external" declaration for each pair of
operation, locality, and pointer type. Naming convention:
caml_prefetch_<operation>_<temporal_locality>_<pointer_type>
Prefetching hints are meant for highly-optimized code, the bytecode stubs do nothing,
so they all call the same C stub [caml_prefetch_ignore].
*)(* Prefetching primitives should not be annotated with [@@no_effects].
Otherwise, the compiler can eliminate them, because they have no result.
*)(* Native_pointer *)externalprefetch_write_high_native_pointer:(Native_pointer.t[@unboxed])->unit="caml_prefetch_ignore""caml_prefetch_write_high_native_pointer_unboxed"[@@noalloc][@@builtin]externalprefetch_write_moderate_native_pointer:(Native_pointer.t[@unboxed])->unit="caml_prefetch_ignore""caml_prefetch_write_moderate_native_pointer_unboxed"[@@noalloc][@@builtin]externalprefetch_write_low_native_pointer:(Native_pointer.t[@unboxed])->unit="caml_prefetch_ignore""caml_prefetch_write_low_native_pointer_unboxed"[@@noalloc][@@builtin]externalprefetch_write_none_native_pointer:(Native_pointer.t[@unboxed])->unit="caml_prefetch_ignore""caml_prefetch_write_none_native_pointer_unboxed"[@@noalloc][@@builtin]externalprefetch_read_none_native_pointer:(Native_pointer.t[@unboxed])->unit="caml_prefetch_ignore""caml_prefetch_read_none_native_pointer_unboxed"[@@noalloc][@@builtin]externalprefetch_read_low_native_pointer:(Native_pointer.t[@unboxed])->unit="caml_prefetch_ignore""caml_prefetch_read_low_native_pointer_unboxed"[@@noalloc][@@builtin]externalprefetch_read_moderate_native_pointer:(Native_pointer.t[@unboxed])->unit="caml_prefetch_ignore""caml_prefetch_read_moderate_native_pointer_unboxed"[@@noalloc][@@builtin]externalprefetch_read_high_native_pointer:(Native_pointer.t[@unboxed])->unit="caml_prefetch_ignore""caml_prefetch_read_high_native_pointer_unboxed"[@@noalloc][@@builtin](* Ext_pointer *)externalprefetch_write_high_ext_pointer:Ext_pointer.t->unit="caml_prefetch_ignore""caml_prefetch_write_high_ext_pointer"[@@noalloc][@@builtin]externalprefetch_write_moderate_ext_pointer:Ext_pointer.t->unit="caml_prefetch_ignore""caml_prefetch_write_moderate_ext_pointer"[@@noalloc][@@builtin]externalprefetch_write_low_ext_pointer:Ext_pointer.t->unit="caml_prefetch_ignore""caml_prefetch_write_low_ext_pointer"[@@noalloc][@@builtin]externalprefetch_write_none_ext_pointer:Ext_pointer.t->unit="caml_prefetch_ignore""caml_prefetch_write_none_ext_pointer"[@@noalloc][@@builtin]externalprefetch_read_none_ext_pointer:Ext_pointer.t->unit="caml_prefetch_ignore""caml_prefetch_read_none_ext_pointer"[@@noalloc][@@builtin]externalprefetch_read_low_ext_pointer:Ext_pointer.t->unit="caml_prefetch_ignore""caml_prefetch_read_low_ext_pointer"[@@noalloc][@@builtin]externalprefetch_read_moderate_ext_pointer:Ext_pointer.t->unit="caml_prefetch_ignore""caml_prefetch_read_moderate_ext_pointer"[@@noalloc][@@builtin]externalprefetch_read_high_ext_pointer:Ext_pointer.t->unit="caml_prefetch_ignore""caml_prefetch_read_high_ext_pointer"[@@noalloc][@@builtin](* Bigstring *)typebigstring=(char,Stdlib.Bigarray.int8_unsigned_elt,Stdlib.Bigarray.c_layout)Stdlib.Bigarray.Array1.texternalprefetch_write_high_bigstring:bigstring->(int[@untagged])->unit="caml_prefetch_ignore2""caml_prefetch_write_high_bigstring_untagged"[@@noalloc][@@builtin]externalprefetch_write_moderate_bigstring:bigstring->(int[@untagged])->unit="caml_prefetch_ignore2""caml_prefetch_write_moderate_bigstring_untagged"[@@noalloc][@@builtin]externalprefetch_write_low_bigstring:bigstring->(int[@untagged])->unit="caml_prefetch_ignore2""caml_prefetch_write_low_bigstring_untagged"[@@noalloc][@@builtin]externalprefetch_write_none_bigstring:bigstring->(int[@untagged])->unit="caml_prefetch_ignore2""caml_prefetch_write_none_bigstring_untagged"[@@noalloc][@@builtin]externalprefetch_read_none_bigstring:bigstring->(int[@untagged])->unit="caml_prefetch_ignore2""caml_prefetch_read_none_bigstring_untagged"[@@noalloc][@@builtin]externalprefetch_read_low_bigstring:bigstring->(int[@untagged])->unit="caml_prefetch_ignore2""caml_prefetch_read_low_bigstring_untagged"[@@noalloc][@@builtin]externalprefetch_read_moderate_bigstring:bigstring->(int[@untagged])->unit="caml_prefetch_ignore2""caml_prefetch_read_moderate_bigstring_untagged"[@@noalloc][@@builtin]externalprefetch_read_high_bigstring:bigstring->(int[@untagged])->unit="caml_prefetch_ignore2""caml_prefetch_read_high_bigstring_untagged"[@@noalloc][@@builtin]letnative_pointerp~operation~temporal_locality=matchoperation,temporal_localitywith|Write,High->prefetch_write_high_native_pointerp|Write,Moderate->prefetch_write_moderate_native_pointerp|Write,Low->prefetch_write_low_native_pointerp|Write,None->prefetch_write_none_native_pointerp|Read,None->prefetch_read_none_native_pointerp|Read,Low->prefetch_read_low_native_pointerp|Read,Moderate->prefetch_read_moderate_native_pointerp|Read,High->prefetch_read_high_native_pointerp;;letext_pointerp~operation~temporal_locality=matchoperation,temporal_localitywith|Write,High->prefetch_write_high_ext_pointerp|Write,Moderate->prefetch_write_moderate_ext_pointerp|Write,Low->prefetch_write_low_ext_pointerp|Write,None->prefetch_write_none_ext_pointerp|Read,None->prefetch_read_none_ext_pointerp|Read,Low->prefetch_read_low_ext_pointerp|Read,Moderate->prefetch_read_moderate_ext_pointerp|Read,High->prefetch_read_high_ext_pointerp;;letbigstringbigstring~pos~operation~temporal_locality=matchoperation,temporal_localitywith|Write,High->prefetch_write_high_bigstringbigstringpos|Write,Moderate->prefetch_write_moderate_bigstringbigstringpos|Write,Low->prefetch_write_low_bigstringbigstringpos|Write,None->prefetch_write_none_bigstringbigstringpos|Read,None->prefetch_read_none_bigstringbigstringpos|Read,Low->prefetch_read_low_bigstringbigstringpos|Read,Moderate->prefetch_read_moderate_bigstringbigstringpos|Read,High->prefetch_read_high_bigstringbigstringpos;;externalpause:unit->unit="caml_pause_hint"[@@noalloc][@@builtin]