Alien-LibJIT
view release on metacpan or search on metacpan
libjit/jit/jit-opcodes.ops view on Meta::CPAN
/*
* 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" }
op_def("load_relative_nfloat") { op_values(nfloat, ptr, int), "NINT_ARG" }
op_def("load_relative_struct") { op_values(any, ptr, int), "NINT_ARG_TWO" }
op_def("store_relative_byte") { op_values(ptr, int, int), "NINT_ARG" }
op_def("store_relative_short") { op_values(ptr, int, int), "NINT_ARG" }
op_def("store_relative_int") { op_values(ptr, int, int), "NINT_ARG"}
op_def("store_relative_long") { op_values(ptr, long, int), "NINT_ARG" }
op_def("store_relative_float32") { op_values(ptr, float32, int), "NINT_ARG" }
op_def("store_relative_float64") { op_values(ptr, float64, int), "NINT_ARG" }
op_def("store_relative_nfloat") { op_values(ptr, nfloat, int), "NINT_ARG" }
op_def("store_relative_struct") { op_values(ptr, any, int), "NINT_ARG_TWO" }
op_def("add_relative") { op_values(ptr, ptr, int), "NINT_ARG" }
/*
* Array element loads and stores.
*/
op_def("load_element_sbyte") { op_values(int, ptr, int) }
op_def("load_element_ubyte") { op_values(int, ptr, int) }
op_def("load_element_short") { op_values(int, ptr, int) }
op_def("load_element_ushort") { op_values(int, ptr, int) }
op_def("load_element_int") { op_values(int, ptr, int) }
op_def("load_element_long") { op_values(long, ptr, int) }
op_def("load_element_float32") { op_values(float32, ptr, int) }
op_def("load_element_float64") { op_values(float64, ptr, int) }
op_def("load_element_nfloat") { op_values(nfloat, ptr, int) }
op_def("store_element_byte") { op_values(ptr, int, int) }
op_def("store_element_short") { op_values(ptr, int, int) }
op_def("store_element_int") { op_values(ptr, int, int) }
op_def("store_element_long") { op_values(ptr, int, long) }
op_def("store_element_float32") { op_values(ptr, int, float32) }
op_def("store_element_float64") { op_values(ptr, int, float64) }
op_def("store_element_nfloat") { op_values(ptr, int, nfloat) }
/*
* Block operations.
*/
( run in 0.522 second using v1.01-cache-2.11-cpan-df04353d9ac )