Alien-LibJIT
view release on metacpan or search on metacpan
libjit/jit/jit-opcodes.ops view on Meta::CPAN
op_def("lmin_un") { op_values(long, long, long),
op_intrinsic(jit_ulong_min, L_LL) }
op_def("fmin") { op_values(float32, float32, float32),
op_intrinsic(jit_float32_min, f_ff) }
op_def("dmin") { op_values(float64, float64, float64),
op_intrinsic(jit_float64_min, d_dd) }
op_def("nfmin") { op_values(nfloat, nfloat, nfloat),
op_intrinsic(jit_nfloat_min, D_DD) }
op_def("imax") { op_values(int, int, int),
op_intrinsic(jit_int_max, i_ii) }
op_def("imax_un") { op_values(int, int, int),
op_intrinsic(jit_uint_max, I_II) }
op_def("lmax") { op_values(long, long, long),
op_intrinsic(jit_long_max, l_ll) }
op_def("lmax_un") { op_values(long, long, long),
op_intrinsic(jit_ulong_max, L_LL) }
op_def("fmax") { op_values(float32, float32, float32),
op_intrinsic(jit_float32_max, f_ff) }
op_def("dmax") { op_values(float64, float64, float64),
op_intrinsic(jit_float64_max, d_dd) }
op_def("nfmax") { op_values(nfloat, nfloat, nfloat),
op_intrinsic(jit_nfloat_max, D_DD) }
op_def("isign") { op_values(int, int),
op_intrinsic(jit_int_sign, i_i) }
op_def("lsign") { op_values(int, long),
op_intrinsic(jit_long_sign, i_l) }
op_def("fsign") { op_values(int, float32),
op_intrinsic(jit_float32_sign, i_f) }
op_def("dsign") { op_values(int, float64),
op_intrinsic(jit_float64_sign, i_d) }
op_def("nfsign") { op_values(int, nfloat),
op_intrinsic(jit_nfloat_sign, i_D) }
/*
* Pointer check opcodes.
*/
op_def("check_null") { op_values(empty, ptr) }
/*
* Function calls.
*/
op_def("call") { op_type(call) }
op_def("call_tail") { op_type(call) }
op_def("call_indirect") { op_values(empty, ptr), "INDIRECT_ARGS" }
op_def("call_indirect_tail") { op_values(empty, ptr), "INDIRECT_ARGS" }
op_def("call_vtable_ptr") { op_values(empty, ptr) }
op_def("call_vtable_ptr_tail") { op_values(empty, ptr) }
op_def("call_external") { op_type(call_external) }
op_def("call_external_tail") { op_type(call_external) }
op_def("return") { }
op_def("return_int") { op_values(empty, int) }
op_def("return_long") { op_values(empty, long) }
op_def("return_float32") { op_values(empty, float32) }
op_def("return_float64") { op_values(empty, float64) }
op_def("return_nfloat") { op_values(empty, nfloat) }
op_def("return_small_struct") { op_values(empty, ptr, ptr), "NINT_ARG" }
op_def("setup_for_nested") { op_values(empty, int) }
op_def("setup_for_sibling") { op_values(empty, int, int), "NINT_ARG" }
op_def("import") { op_values(ptr, any, int) }
/*
* Exception handling.
*/
op_def("throw") { op_values(empty, ptr) }
op_def("rethrow") { op_values(empty, ptr) }
op_def("load_pc") { op_values(ptr) }
op_def("load_exception_pc") { op_values(ptr) }
op_def("enter_finally") { }
op_def("leave_finally") { }
op_def("call_finally") { op_type(branch) }
op_def("enter_filter") { op_values(any) }
op_def("leave_filter") { op_values(empty, any) }
op_def("call_filter") { op_type(branch), op_values(empty, any) }
op_def("call_filter_return") { op_values(any) }
op_def("address_of_label") { op_type(address_of_label), op_values(ptr) }
/*
* Data manipulation.
*/
op_def("copy_load_sbyte") { op_values(int, int) }
op_def("copy_load_ubyte") { op_values(int, int) }
op_def("copy_load_short") { op_values(int, int) }
op_def("copy_load_ushort") { op_values(int, int) }
op_def("copy_int", =) { op_values(int, int) }
op_def("copy_long", =) { op_values(long, long) }
op_def("copy_float32", =) { op_values(float32, float32) }
op_def("copy_float64", =) { op_values(float64, float64) }
op_def("copy_nfloat", =) { op_values(nfloat, nfloat) }
op_def("copy_struct", =) { op_values(ptr, ptr), "NINT_ARG" }
op_def("copy_store_byte") { op_values(int, int) }
op_def("copy_store_short") { op_values(int, int) }
op_def("address_of", address_of) { op_values(ptr, any) }
/*
* Incoming registers, outgoing registers, and stack pushes.
*/
op_def("incoming_reg") { op_type(reg) }
op_def("incoming_frame_posn") { op_values(empty, any, int) }
op_def("outgoing_reg") { op_type(reg) }
op_def("outgoing_frame_posn") { op_values(empty, any, int) }
op_def("return_reg") { op_type(reg) }
op_def("push_int") { op_values(empty, int) }
op_def("push_long") { op_values(empty, long) }
op_def("push_float32") { op_values(empty, float32) }
op_def("push_float64") { op_values(empty, float64) }
op_def("push_nfloat") { op_values(empty, nfloat) }
op_def("push_struct") { op_values(empty, any, ptr), "NINT_ARG" }
op_def("pop_stack") { op_values(empty, int), "NINT_ARG" }
op_def("flush_small_struct") { op_values(empty, any), "NINT_ARG" }
op_def("set_param_int") { op_values(empty, int, ptr) }
op_def("set_param_long") { op_values(empty, long, ptr) }
op_def("set_param_float32") { op_values(empty, float32, ptr) }
op_def("set_param_float64") { op_values(empty, float64, ptr) }
op_def("set_param_nfloat") { op_values(empty, nfloat, ptr) }
op_def("set_param_struct") { op_values(ptr, ptr, ptr) }
op_def("push_return_area_ptr") { }
/*
* Pointer-relative loads and stores.
*/
op_def("load_relative_sbyte") { op_values(int, ptr, int), "NINT_ARG" }
op_def("load_relative_ubyte") { op_values(int, ptr, int), "NINT_ARG" }
op_def("load_relative_short") { op_values(int, ptr, int), "NINT_ARG" }
op_def("load_relative_ushort") { op_values(int, ptr, int), "NINT_ARG" }
op_def("load_relative_int") { op_values(int, ptr, int), "NINT_ARG" }
op_def("load_relative_long") { op_values(long, ptr, int), "NINT_ARG" }
op_def("load_relative_float32") { op_values(float32, ptr, int), "NINT_ARG" }
op_def("load_relative_float64") { op_values(float64, ptr, int), "NINT_ARG" }
( run in 0.602 second using v1.01-cache-2.11-cpan-119454b85a5 )