CVS: sml-dist primop-list,NONE,1.1.2.1
David MacQueen <[email protected]> Wed, 21 Jun 2006 16:02:45 -0700
| Newsgroups | gmane.comp.lang.sml.smlnj.commits |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/smlnj/sml-dist
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv9980
Added Files:
Tag: primop-branch-2
primop-list
Log Message:
adding primop-list file
--- NEW FILE: primop-list ---
Catalog of Primops
(from Semant/statenv/prim.sml)
Hypothesis: all primops that are contained in the environment are created
here.
callcc, P.CALLCC, ('a cont -> 'a) -> 'a
throw, P.THROW, 'a cont -> 'a -> 'b
capture, P.CAPTURE, ('a ccont -> 'a) -> 'a
isolate, P.ISOLATE, ('a -> unit) -> 'a cont
cthrow, P.THROW, ('a ccont -> 'a -> 'b
!, P.DEREF, 'a ref -> 'a
:=, P.ASSIGN, 'a ref * 'a -> unit
makeref, P.MAKEREF, 'a -> 'a ref
boxed, P.BOXED, 'a -> bool
unboxed, P.UNBOXED, 'a -> bool
cast, P.CAST, 'a -> -b
=, P.POLYEQL, ''a * ''a -> bool
<>, P.POLYNEQ, ''a * ''a -> bool
ptreql, P.PTREQL, 'a * 'a -> bool
ptrneq, P.PTRNEQ, 'a * 'a -> bool
getvar, P.GETVAR, unit -> 'a
setvar, P.SETVAR, 'a -> unit
setpseudo, P.SETPSEUDO, 'a * int -> unit
getpseudo, P.GETPSEUDO, int -> 'a
mkspecial, P.MKSPECIAL, int * 'a -> 'b
getspecial, P.GETSPECIAL, 'a -> int
setspecial, P.SETSPECIAL, 'a * int -> unit
gethdlr, P.GETHDLR, unit -> 'a cont
sethdlr, P.SETHDLR, 'a cont -> unit
gettag, P.GETTAG, 'a -> int
setmark, P.SETMARK, 'a -> unit
dispose, P.DISPOSE, 'a -> unit
compose, P.INLCOMPOSE, ('b -> 'c) * ('a -> 'b) -> 'a -> 'c
before, P.INLBEFORE, 'a * 'b -> 'a
ignore, P.INLIGNORE, 'a -> unit
identity, P.INLIDENTITY, 'a -> 'a
length, P.LENGTH, 'a -> int
objlength, P.OBJLENGTH, 'a -> int
unboxedupdate, P.UNBOXEDUPDATE, 'a array * int * 'a -> unit
inlnot, P.INLNOT, bool -> bool
floor, P.ROUND{floor=true,
fromkind=P.FLOAT 64,
tokind=P.INT 31}, real -> int
round, P.ROUND{floor=false,
fromkind=P.FLOAT 64,
tokind=P.INT 31}, real -> int
real, P.REAL{fromkind=P.INT 31,
tokind=P.FLOAT 64}, int -> real
real32, P.REAL{fromkind=P.INT 32,
tokind=P.FLOAT 64}, int32 -> real
ordof, P.NUMSUBSCRIPT{kind=P.INT 8,
checked=false,
immutable=true}, 'a * int -> 'b
store, P.NUMUPDATE{kind=P.INT 8,
checked=false}, 'a * int * 'b -> unit
inlbyteof, P.NUMSUBSCRIPT{kind=P.INT 8,
checked=true,
immutable=false}, 'a * int -> 'b
inlstore, P.NUMUPDATE{kind=P.INT 8,
checked=true}, 'a * int * 'b -> unit
inlordof, P.NUMSUBSCRIPT{kind=P.INT 8,
checked=true,
immutable=true}, 'a * int -> 'b
(*** polymorphic array and vector ***)
mkarray, P.INLMKARRAY, int * 'a -> 'a array
arrSub, P.SUBSCRIPT, 'a array * int -> 'a
arrChkSub, P.INLSUBSCRIPT, 'a array * int -> 'a
vecSub, P.SUBSCRIPTV, 'a vector * int -> 'a
vecChkSub, P.INLSUBSCRIPTV, 'a vector * int -> 'a
arrUpdate, P.UPDATE, 'a array * int * 'a -> unit
arrChkUpdate, P.INLUPDATE, 'a array * int * 'a -> unit
(* new array representations *)
newArray0, P.NEW_ARRAY0, unit -> 'a
getSeqData, P.GET_SEQ_DATA, 'a -> 'b
recordSub, P.SUBSCRIPT_REC, 'a * int -> 'b
raw64Sub, P.SUBSCRIPT_RAW64, 'a * int -> real
(* *** conversion primops ***
* There are certain duplicates for the same primop (but with
* different types). In such a case, the canonical name
* of the primop has been extended using a simple suffix
* scheme. *)
test_32_31_w, P.TEST(32,31), word32 -> int
test_32_31_i, P.TEST(32,31), int32 -> int
testu_31_31, P.TESTU(31,31), word -> int
testu_32_31, P.TESTU(32,31), word32 -> int
testu_32_32, P.TESTU(32,32), word32 -> int32
copy_32_32_ii, P.COPY(32,32), int32 -> int32
copy_32_32_wi, P.COPY(32,32), word32 -> int32
copy_32_32_iw, P.COPY(32,32), int32 -> word32
copy_32_32_ww, P.COPY(32,32), word32 -> word32
copy_31_31_ii, P.COPY(31,31), int -> int
copy_31_31_wi, P.COPY(31,31), word -> int
copy_31_31_iw, P.COPY(31,31), int -> word
copy_31_32_i, P.COPY(31,32), word -> int32
copy_31_32_w, P.COPY(31,32), word -> word32
copy_8_32_i, P.COPY(8,32), word8 -> int32
copy_8_32_w, P.COPY(8,32), word8 -> word32
copy_8_31, P.COPY(8,31), word8 -> int
extend_31_32_ii, P.EXTEND(31,32), int -> int32
extend_31_32_iw, P.EXTEND(31,32), int -> word32
extend_31_32_wi, P.EXTEND(31,32), word -> int32
extend_31_32_ww, P.EXTEND(31,32), word -> word32
extend_8_31, P.EXTEND(8,31), word8 -> int
extend_8_32_i, P.EXTEND(8,32), word8 -> int32
extend_8_32_w, P.EXTEND(8,32), word8 -> word32
trunc_32_31_i, P.TRUNC(32,31), int32 -> word
trunc_32_31_w, P.TRUNC(32,31), word32 -> word
trunc_31_8, P.TRUNC(31,8), int -> word8
trunc_32_8_i, P.TRUNC(32,8), int32 -> word8
trunc_32_8_w, P.TRUNC(32,8), word32 -> word8
(* conversion primops involving intinf *)
test_inf_31, P.TEST_INF 31, inf_i
test_inf_32, P.TEST_INF 32, inf_i32
test_inf_64, P.TEST_INF 64, inf_i64
copy_8_inf, P.COPY_INF 8, w8_inf
copy_8_inf_w, P.COPY_INF 8, w8_inf
copy_31_inf_w, P.COPY_INF 31, w_inf
copy_32_inf_w, P.COPY_INF 32, w32_inf
copy_64_inf_w, P.COPY_INF 64, w64_inf
copy_31_inf_i, P.COPY_INF 31, i_inf
copy_32_inf_i, P.COPY_INF 32, i32_inf
copy_64_inf_i, P.COPY_INF 64, i64_inf
extend_8_inf, P.EXTEND_INF 8, w8_inf
extend_8_inf_w, P.EXTEND_INF 8, w8_inf
extend_31_inf_w, P.EXTEND_INF 31, w_inf
extend_32_inf_w, P.EXTEND_INF 32, w32_inf
extend_64_inf_w, P.EXTEND_INF 64, w64_inf
extend_31_inf_i, P.EXTEND_INF 31, i_inf
extend_32_inf_i, P.EXTEND_INF 32, i32_inf
extend_64_inf_i, P.EXTEND_INF 64, i64_inf
trunc_inf_8, P.TRUNC_INF 8, inf_w8
trunc_inf_31, P.TRUNC_INF 31, inf_w
trunc_inf_32, P.TRUNC_INF 32, inf_w32
trunc_inf_64, P.TRUNC_INF 64, inf_w64
(* primops to go between abstract and concrete representation of
* 64-bit ints and words *)
w64p, P.CVT64, w64_pw32
p64w, P.CVT64, pw32_w64
i64p, P.CVT64, i64_pw32
p64i, P.CVT64, pw32_i64
(* *** integer 31 primops ***
* Many of the i31 primops are being abused for different types
* (mostly Word8.word and also for char). In these cases
* there are suffixed alternative versions of the primop
* (i.e., same primop, different type). *)
i31add, int31 P.+, ii_i
i31add_8, int31 P.+, w8w8_w8
i31sub, int31 P.-, ii_i
i31sub_8, int31 P.-, w8w8_w8
i31mul, int31 P.*, ii_i
i31mul_8, int31 P.*, w8w8_w8
i31div, int31 P.DIV, ii_i
i31div_8, int31 P.DIV, w8w8_w8
i31mod, int31 P.MOD, ii_i
i31mod_8, int31 P.MOD, w8w8_w8
i31quot, int31 P./, ii_i
i31rem, int31 P.REM, ii_i
i31orb, bits31 P.ORB, ii_i
i31orb_8, bits31 P.ORB, w8w8_w8
i31andb, bits31 P.ANDB, ii_i
i31andb_8, bits31 P.ANDB, w8w8_w8
i31xorb, bits31 P.XORB, ii_i
i31xorb_8, bits31 P.XORB, w8w8_w8
i31notb, bits31 P.NOTB, i_i
i31notb_8, bits31 P.NOTB, w8_w8
i31neg, int31 P.~, i_i
i31neg_8, int31 P.~, w8_w8
i31lshift, bits31 P.LSHIFT, ii_i
i31lshift_8, bits31 P.LSHIFT, w8w_w8
i31rshift, bits31 P.RSHIFT, ii_i
i31rshift_8, bits31 P.RSHIFT, w8w_w8
i31lt, int31cmp P.<, ii_b
i31lt_8, int31cmp P.<, w8w8_b
i31lt_c, int31cmp P.<, cc_b
i31le, int31cmp P.<=, ii_b
i31le_8, int31cmp P.<=, w8w8_b
i31le_c, int31cmp P.<=, cc_b
i31gt, int31cmp P.>, ii_b
i31gt_8, int31cmp P.>, w8w8_b
i31gt_c, int31cmp P.>, cc_b
i31ge, int31cmp P.>=, ii_b
i31ge_8, int31cmp P.>=, w8w8_b
i31ge_c, int31cmp P.>=, cc_b
i31ltu, word31cmp P.LTU, ii_b
i31geu, word31cmp P.GEU, ii_b
i31eq, int31cmp P.EQL, ii_b
i31ne, int31cmp P.NEQ, ii_b
i31min, P.INLMIN (P.INT 31), ii_i
i31min_8, P.INLMIN (P.INT 31), w8w8_w8
i31max, P.INLMAX (P.INT 31), ii_i
i31max_8, P.INLMAX (P.INT 31), w8w8_w8
i31abs, P.INLABS (P.INT 31), i_i
(*** integer 32 primops ***)
i32mul, int32 P.*, i32i32_i32
i32div, int32 P.DIV, i32i32_i32
i32mod, int32 P.MOD, i32i32_i32
i32quot, int32 P./, i32i32_i32
i32rem, int32 P.REM, i32i32_i32
i32add, int32 P.+, i32i32_i32
i32sub, int32 P.-, i32i32_i32
i32orb, bits32 P.ORB, i32i32_i32
i32andb, bits32 P.ANDB, i32i32_i32
i32xorb, bits32 P.XORB, i32i32_i32
i32lshift, bits32 P.LSHIFT, i32i32_i32
i32rshift, bits32 P.RSHIFT, i32i32_i32
i32neg, int32 P.~, i32_i32
i32lt, int32cmp P.<, i32i32_b
i32le, int32cmp P.<=, i32i32_b
i32gt, int32cmp P.>, i32i32_b
i32ge, int32cmp P.>=, i32i32_b
i32eq, int32cmp P.EQL, i32i32_b
i32ne, int32cmp P.NEQ, i32i32_b
i32min, P.INLMIN (P.INT 32), i32i32_i32
i32max, P.INLMAX (P.INT 32), i32i32_i32
i32abs, P.INLABS (P.INT 32), i32_i32
(*** float 64 primops ***)
f64add, purefloat64 (P.+), f64f64_f64
f64sub, purefloat64 (P.-), f64f64_f64
f64div, purefloat64 (P./), f64f64_f64
f64mul, purefloat64 (P.* ), f64f64_f64
f64neg, purefloat64 P.~, f64_f64
f64ge, float64cmp (P.>=), f64f64_b
f64gt, float64cmp (P.>), f64f64_b
f64le, float64cmp (P.<=), f64f64_b
f64lt, float64cmp (P.<), f64f64_b
f64eq, float64cmp P.EQL, f64f64_b
f64ne, float64cmp P.NEQ, f64f64_b
f64abs, purefloat64 P.ABS, f64_f64
f64sin, purefloat64 P.FSIN, f64_f64
f64cos, purefloat64 P.FCOS, f64_f64
f64tan, purefloat64 P.FTAN, f64_f64
f64sqrt, purefloat64 P.FSQRT, f64_f64
f64min, P.INLMIN (P.FLOAT 64), f64f64_f64
f64max, P.INLMAX (P.FLOAT 64), f64f64_f64
(*** float64 array ***)
f64Sub, sub (P.FLOAT 64), numSubTy
f64chkSub, chkSub (P.FLOAT 64), numSubTy
f64Update, update (P.FLOAT 64), numUpdTy
f64chkUpdate, chkUpdate (P.FLOAT 64), numUpdTy
(*** word8 primops ***)
w8orb, word31 P.ORB, w8w8_w8
w8xorb, word31 P.XORB, w8w8_w8
w8andb, word31 P.ANDB, w8w8_w8
w8gt, word8cmp P.>, w8w8_b
w8ge, word8cmp P.>=, w8w8_b
w8lt, word8cmp P.<, w8w8_b
w8le, word8cmp P.<=, w8w8_b
w8eq, word8cmp P.EQL, w8w8_b
w8ne, word8cmp P.NEQ, w8w8_b
(*** word8 array and vector ***)
w8Sub, sub (P.UINT 8), numSubTy
w8chkSub, chkSub (P.UINT 8), numSubTy
w8subv, subv (P.UINT 8), numSubTy
w8chkSubv, chkSubv (P.UINT 8), numSubTy
w8update, update (P.UINT 8), numUpdTy
w8chkUpdate, chkUpdate (P.UINT 8), numUpdTy
(* word31 primops *)
w31mul, word31 (P.* ), ww_w
w31div, word31 (P./), ww_w
w31mod, word31 (P.REM), ww_w
w31add, word31 (P.+), ww_w
w31sub, word31 (P.-), ww_w
w31orb, word31 P.ORB, ww_w
w31xorb, word31 P.XORB, ww_w
w31andb, word31 P.ANDB, ww_w
w31notb, word31 P.NOTB, w_w
w31neg, word31 P.~, w_w
w31rshift, word31 P.RSHIFT, ww_w
w31rshiftl, word31 P.RSHIFTL, ww_w
w31lshift, word31 P.LSHIFT, ww_w
w31gt, word31cmp (P.>), ww_b
w31ge, word31cmp (P.>=), ww_b
w31lt, word31cmp (P.<), ww_b
w31le, word31cmp (P.<=), ww_b
w31eq, word31cmp P.EQL, ww_b
w31ne, word31cmp P.NEQ, ww_b
w31ChkRshift, P.INLRSHIFT(P.UINT 31), ww_w
w31ChkRshiftl, P.INLRSHIFTL(P.UINT 31),ww_w
w31ChkLshift, P.INLLSHIFT(P.UINT 31), ww_w
w31min, P.INLMIN (P.UINT 31), ww_w
w31max, P.INLMAX (P.UINT 31), ww_w
(* (pseudo-)word8 primops *)
w31mul_8, word31 (P.* ), w8w8_w8
w31div_8, word31 (P./), w8w8_w8
w31mod_8, word31 (P.REM), w8w8_w8
w31add_8, word31 (P.+), w8w8_w8
w31sub_8, word31 (P.-), w8w8_w8
w31orb_8, word31 P.ORB, w8w8_w8
w31xorb_8, word31 P.XORB, w8w8_w8
w31andb_8, word31 P.ANDB, w8w8_w8
w31notb_8, word31 P.NOTB, w8_w8
w31neg_8, word31 P.~, w8_w8
w31rshift_8, word31 P.RSHIFT, w8w_w8
w31rshiftl_8, word31 P.RSHIFTL, w8w_w8
w31lshift_8, word31 P.LSHIFT, w8w_w8
w31gt_8, word31cmp (P.>), w8w8_b
w31ge_8, word31cmp (P.>=), w8w8_b
w31lt_8, word31cmp (P.<), w8w8_b
w31le_8, word31cmp (P.<=), w8w8_b
w31eq_8, word31cmp P.EQL, w8w8_b
w31ne_8, word31cmp P.NEQ, w8w8_b
w31ChkRshift_8, P.INLRSHIFT(P.UINT 31), w8w_w8
w31ChkRshiftl_8,P.INLRSHIFTL(P.UINT 31),w8w_w8
w31ChkLshift_8, P.INLLSHIFT(P.UINT 31), w8w_w8
w31min_8, P.INLMIN (P.UINT 31), w8w8_w8
w31max_8, P.INLMAX (P.UINT 31), w8w8_w8
(*** word32 primops ***)
w32mul, word32 (P.* ), w32w32_w32
w32div, word32 (P./), w32w32_w32
w32mod, word32 (P.REM), w32w32_w32
w32add, word32 (P.+), w32w32_w32
w32sub, word32 (P.-), w32w32_w32
w32orb, word32 P.ORB, w32w32_w32
w32xorb, word32 P.XORB, w32w32_w32
w32andb, word32 P.ANDB, w32w32_w32
w32notb, word32 P.NOTB, w32_w32
w32neg, word32 P.~, w32_w32
w32rshift, word32 P.RSHIFT, w32w_w32
w32rshiftl, word32 P.RSHIFTL, w32w_w32
w32lshift, word32 P.LSHIFT, w32w_w32
w32gt, word32cmp (P.>), w32w32_b
w32ge, word32cmp (P.>=), w32w32_b
w32lt, word32cmp (P.<), w32w32_b
w32le, word32cmp (P.<=), w32w32_b
w32eq, word32cmp P.EQL, w32w32_b
w32ne, word32cmp P.NEQ, w32w32_b
w32ChkRshift, P.INLRSHIFT(P.UINT 32), w32w_w32
w32ChkRshiftl, P.INLRSHIFTL(P.UINT 32),w32w_w32
w32ChkLshift, P.INLLSHIFT(P.UINT 32), w32w_w32
w32min, P.INLMIN (P.UINT 32), w32w32_w32
w32max, P.INLMAX (P.UINT 32), w32w32_w32
(* experimental C FFI primops *)
raww8l, P.RAW_LOAD (P.UINT 8), w32_w32
rawi8l, P.RAW_LOAD (P.INT 8), w32_i32
raww16l, P.RAW_LOAD (P.UINT 16), w32_w32
rawi16l, P.RAW_LOAD (P.INT 16), w32_i32
raww32l, P.RAW_LOAD (P.UINT 32), w32_w32
rawi32l, P.RAW_LOAD (P.INT 32), w32_i32
rawf32l, P.RAW_LOAD (P.FLOAT 32), w32_f64
rawf64l, P.RAW_LOAD (P.FLOAT 64), w32_f64
raww8s, P.RAW_STORE (P.UINT 8), w32w32_u
rawi8s, P.RAW_STORE (P.INT 8), w32i32_u
raww16s, P.RAW_STORE (P.UINT 16), w32w32_u
rawi16s, P.RAW_STORE (P.INT 16), w32i32_u
raww32s, P.RAW_STORE (P.UINT 32), w32w32_u
rawi32s, P.RAW_STORE (P.INT 32), w32i32_u
rawf32s, P.RAW_STORE (P.FLOAT 32), w32f64_u
rawf64s, P.RAW_STORE (P.FLOAT 64), w32f64_u
rawccall, P.RAW_CCALL NONE, rccType
(* Support for direct construction of C objects on ML heap.
* rawrecord builds a record holding C objects on the heap.
* rawselectxxx index on this record. They are of type:
* 'a * Word32.word -> Word32.word
* The 'a is to guarantee that the compiler will treat
* the record as a ML object, in case it passes thru a gc boundary.
* rawupdatexxx writes to the record.
*)
rawrecord, P.RAW_RECORD{fblock = false}, i_x
rawrecord64, P.RAW_RECORD{fblock = true}, i_x
rawselectw8, P.RAW_LOAD (P.UINT 8), xw32_w32
rawselecti8, P.RAW_LOAD (P.INT 8), xw32_i32
rawselectw16, P.RAW_LOAD (P.UINT 16), xw32_w32
rawselecti16, P.RAW_LOAD (P.INT 16), xw32_i32
rawselectw32, P.RAW_LOAD (P.UINT 32), xw32_w32
rawselecti32, P.RAW_LOAD (P.INT 32), xw32_i32
rawselectf32, P.RAW_LOAD (P.FLOAT 32), xw32_f64
rawselectf64, P.RAW_LOAD (P.FLOAT 64), xw32_f64
rawupdatew8, P.RAW_STORE (P.UINT 8), xw32w32_u
rawupdatei8, P.RAW_STORE (P.INT 8), xw32i32_u
rawupdatew16, P.RAW_STORE (P.UINT 16), xw32w32_u
rawupdatei16, P.RAW_STORE (P.INT 16), xw32i32_u
rawupdatew32, P.RAW_STORE (P.UINT 32), xw32w32_u
rawupdatei32, P.RAW_STORE (P.INT 32), xw32i32_u
rawupdatef32, P.RAW_STORE (P.FLOAT 32), xw32f64_u
rawupdatef64, P.RAW_STORE (P.FLOAT 64), xw32f64_u
All the advantages of Linux Managed Hosting--Without the Cost and Risk!
Fully trained technicians. The highest number of Red Hat certifications in
the hosting industry. Fanatical Support. Click to learn more
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642