(* Opcodes for the simple primitives. *) local open Fnlib Prim Opcodes in val opcode_for_primitive = fn Pupdate => UPDATE | Praise => RAISE | Pnot => BOOLNOT | Ptag_of => TAGOF | Paddint => ADDINT | Psubint => SUBINT | Pmulint => MULINT | Pdivint => DIVINT | Pmodint => MODINT | Pandint => ANDINT | Porint => ORINT | Pxorint => XORINT | Pshiftleftint => SHIFTLEFTINT | Pshiftrightintsigned => SHIFTRIGHTINTSIGNED | Pshiftrightintunsigned => SHIFTRIGHTINTUNSIGNED | Pintoffloat => INTOFFLOAT | Pstringlength => STRINGLENGTH | Pgetstringchar => GETSTRINGCHAR | Psetstringchar => SETSTRINGCHAR | Pmakevector => MAKEVECTOR | Pvectlength => VECTLENGTH | Pgetvectitem => GETVECTITEM | Psetvectitem => SETVECTITEM | Psmlnegint => SMLNEGINT | Psmlsuccint => SMLSUCCINT | Psmlpredint => SMLPREDINT | Psmladdint => SMLADDINT | Psmlsubint => SMLSUBINT | Psmlmulint => SMLMULINT | Psmldivint => SMLDIVINT | Psmlmodint => SMLMODINT | Pmakerefvector => MAKEREFVECTOR | Psmlquotint => SMLQUOTINT | Psmlremint => SMLREMINT | Pswap => SWAP | _ => fatalError "opcode_for_primitive"; val opcode_for_float_primitive = fn Pfloatofint => FLOATOFINT | Psmlnegfloat => SMLNEGFLOAT | Psmladdfloat => SMLADDFLOAT | Psmlsubfloat => SMLSUBFLOAT | Psmlmulfloat => SMLMULFLOAT | Psmldivfloat => SMLDIVFLOAT; end;
(* Opcodes for the simple primitives. *)
local open Fnlib Prim Opcodes in
val opcode_for_primitive = fn
Pupdate => UPDATE
| Praise => RAISE
| Pnot => BOOLNOT
| Ptag_of => TAGOF
| Paddint => ADDINT
| Psubint => SUBINT
| Pmulint => MULINT
| Pdivint => DIVINT
| Pmodint => MODINT
| Pandint => ANDINT
| Porint => ORINT
| Pxorint => XORINT
| Pshiftleftint => SHIFTLEFTINT
| Pshiftrightintsigned => SHIFTRIGHTINTSIGNED
| Pshiftrightintunsigned => SHIFTRIGHTINTUNSIGNED
| Pintoffloat => INTOFFLOAT
| Pstringlength => STRINGLENGTH
| Pgetstringchar => GETSTRINGCHAR
| Psetstringchar => SETSTRINGCHAR
| Pmakevector => MAKEVECTOR
| Pvectlength => VECTLENGTH
| Pgetvectitem => GETVECTITEM
| Psetvectitem => SETVECTITEM
| Psmlnegint => SMLNEGINT
| Psmlsuccint => SMLSUCCINT
| Psmlpredint => SMLPREDINT
| Psmladdint => SMLADDINT
| Psmlsubint => SMLSUBINT
| Psmlmulint => SMLMULINT
| Psmldivint => SMLDIVINT
| Psmlmodint => SMLMODINT
| Pmakerefvector => MAKEREFVECTOR
| Psmlquotint => SMLQUOTINT
| Psmlremint => SMLREMINT
| Pswap => SWAP
| _ => fatalError "opcode_for_primitive"
;
val opcode_for_float_primitive = fn
Pfloatofint => FLOATOFINT
| Psmlnegfloat => SMLNEGFLOAT
| Psmladdfloat => SMLADDFLOAT
| Psmlsubfloat => SMLSUBFLOAT
| Psmlmulfloat => SMLMULFLOAT
| Psmldivfloat => SMLDIVFLOAT
;
end;