luaur-code-gen 0.1.3

Native (A64/X64) code generation for Luau (Rust).
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
pub mod add_use;
pub mod advance_location;
pub mod after_inst_for_n_loop;
pub mod align_position;
pub mod alloc_spill;
pub mod allocate_pages_impl_code_allocator;
pub mod allocate_pages_impl_code_allocator_alt_b;
pub mod analyze_bytecode_types;
pub mod any_argument_match;
pub mod append;
pub mod append_block_set;
pub mod append_blocks;
pub mod append_label_regset;
pub mod append_register_set;
pub mod append_vm_constant;
pub mod apply_builtin_call;
pub mod apply_substitutions_ir_utils;
pub mod apply_substitutions_ir_utils_alt_b;
pub mod assemble_helpers_code_gen_a_64;
pub mod assemble_helpers_code_gen_x_64;
pub mod before_inst_for_n_prep;
pub mod bind_native_protos;
pub mod build_argument_type_checks;
pub mod build_bytecode_blocks;
pub mod build_entry_function_code_gen_a_64;
pub mod build_entry_function_code_gen_x_64;
pub mod builtin_check_double;
pub mod builtin_check_int_64;
pub mod builtin_load_double;
pub mod builtin_load_int_64;
pub mod byte_reg;
pub mod byteswap;
pub mod call_arith_helper;
pub mod call_barrier_object;
pub mod call_barrier_table_fast;
pub mod call_epilog_c;
pub mod call_fallback;
pub mod call_get_table;
pub mod call_length_helper;
pub mod call_prolog;
pub mod call_set_table;
pub mod call_step_gc;
pub mod can_invalidate_safe_env;
pub mod cast_reg;
pub mod check_object_barrier_conditions;
pub mod collect_direct_block_jump_path;
pub mod compare_ir_utils;
pub mod compare_ir_utils_alt_b;
pub mod compare_ir_utils_alt_c;
pub mod compile_code_gen_context;
pub mod compile_code_gen_context_alt_b;
pub mod compile_code_gen_context_alt_c;
pub mod compile_code_gen_context_alt_d;
pub mod compile_internal;
pub mod compute_block_live_in_reg_set;
pub mod compute_block_ordering;
pub mod compute_cfg_block_edges;
pub mod compute_cfg_dominance_tree_children;
pub mod compute_cfg_immediate_dominators;
pub mod compute_cfg_info;
pub mod compute_cfg_live_in_out_reg_sets;
pub mod compute_iterated_dominance_frontier_for_defs;
pub mod compute_native_exec_data_size;
pub mod condition_op;
pub mod const_prop_in_block;
pub mod const_prop_in_block_chain;
pub mod const_prop_in_block_chains;
pub mod const_prop_in_inst;
pub mod convert_number_to_index_or_jump;
pub mod countlz_bit_utils;
pub mod countlz_bit_utils_alt_b;
pub mod countrz_bit_utils;
pub mod countrz_bit_utils_alt_b;
pub mod create_block_unwind_info;
pub mod create_code_gen_context;
pub mod create_code_gen_context_alt_b;
pub mod create_code_gen_context_alt_c;
pub mod create_code_gen_context_alt_d;
pub mod create_linear_blocks;
pub mod create_native_function;
pub mod create_native_proto_exec_data_code_gen_context;
pub mod create_native_proto_exec_data_native_proto_exec_data;
pub mod create_shared_code_gen_context_code_gen_context;
pub mod create_shared_code_gen_context_code_gen_context_alt_b;
pub mod create_shared_code_gen_context_code_gen_context_alt_c;
pub mod define_cfa_expression;
pub mod define_cfa_expression_offset;
pub mod define_saved_register_location;
pub mod destroy_block_unwind_info;
pub mod destroy_native_proto_exec_data;
pub mod destroy_shared_code_gen_context;
pub mod disable_native_execution_for_function;
pub mod dom_children;
pub mod dump;
pub mod dump_dot;
pub mod dword_reg;
pub mod emit_abort;
pub mod emit_add_offset;
pub mod emit_builtin_emit_builtins_x_64;
pub mod emit_builtin_ir_lowering_a_64;
pub mod emit_builtin_math_frexp;
pub mod emit_builtin_math_modf;
pub mod emit_clear_native_flag_code_gen_a_64;
pub mod emit_clear_native_flag_emit_common_x_64;
pub mod emit_continue_call;
pub mod emit_exit_code_gen_a_64;
pub mod emit_exit_emit_common_x_64;
pub mod emit_fallback_emit_common_x_64;
pub mod emit_fallback_ir_lowering_a_64;
pub mod emit_inst_call;
pub mod emit_inst_for_g_loop;
pub mod emit_inst_return;
pub mod emit_inst_set_list;
pub mod emit_interrupt_code_gen_a_64;
pub mod emit_interrupt_emit_common_x_64;
pub mod emit_invoke_libm_1_p;
pub mod emit_return_code_gen_a_64;
pub mod emit_return_emit_common_x_64;
pub mod emit_update_base_emit_common_a_64;
pub mod emit_update_base_emit_common_x_64;
pub mod emit_update_pc_for_exit_code_gen_a_64;
pub mod emit_update_pc_for_exit_emit_common_x_64;
pub mod execute_dupclosure;
pub mod execute_forgprep;
pub mod execute_getglobal;
pub mod execute_gettableks;
pub mod execute_getvarargs_const;
pub mod execute_getvarargs_mult_ret;
pub mod execute_namecall;
pub mod execute_prepvarargs;
pub mod execute_setglobal;
pub mod execute_setlist;
pub mod execute_settableks;
pub mod find_common_dominator;
pub mod find_dynamic_unwind_sections;
pub mod find_reg_type;
pub mod flush_instruction_cache_code_allocator;
pub mod flush_instruction_cache_code_allocator_alt_b;
pub mod fold_constants;
pub mod forg_loop_node_iter;
pub mod forg_loop_non_table_fallback;
pub mod forg_loop_non_table_fallback_deprecated;
pub mod forg_loop_table_iter;
pub mod forg_prep_xnext_fallback;
pub mod format_g;
pub mod free_pages_impl_code_allocator;
pub mod free_pages_impl_code_allocator_alt_b;
pub mod free_spill;
pub mod gather_functions;
pub mod gather_functions_helper;
pub mod generate_vm_exit_blocks;
pub mod get_assembly;
pub mod get_assembly_from_ir;
pub mod get_assembly_from_ir_impl;
pub mod get_assembly_impl;
pub mod get_block_kind_name;
pub mod get_block_kind_priority;
pub mod get_bytecode_constant_tag;
pub mod get_bytecode_type_name;
pub mod get_cmd_name;
pub mod get_cmd_value_kind;
pub mod get_code_gen_context;
pub mod get_condition_fp;
pub mod get_condition_int_64;
pub mod get_condition_int_emit_common_x_64;
pub mod get_condition_int_ir_lowering_a_64;
pub mod get_const_value_kind;
pub mod get_counter_data;
pub mod get_cpu_features_a_64;
pub mod get_cpu_features_x_64;
pub mod get_current_x_64_abi;
pub mod get_double_bits;
pub mod get_float_bits;
pub mod get_fmov_imm_fp_32;
pub mod get_fmov_imm_fp_64;
pub mod get_full_stack_size;
pub mod get_import;
pub mod get_initialized_fallback;
pub mod get_instruction_count_code_gen_assembly;
pub mod get_instruction_count_code_gen_lower;
pub mod get_inverse_condition_condition_a_64;
pub mod get_inverse_condition_condition_x_64;
pub mod get_jump_target;
pub mod get_jump_target_extra_live_in;
pub mod get_live_in_out_value_count;
pub mod get_live_in_value_count;
pub mod get_live_out_value_count;
pub mod get_loop_step_k;
pub mod get_memory_size;
pub mod get_native_context_offset;
pub mod get_native_proto_exec_data_header_native_proto_exec_data;
pub mod get_native_proto_exec_data_header_native_proto_exec_data_alt_b;
pub mod get_negated_condition_condition_x_64;
pub mod get_negated_condition_ir_utils;
pub mod get_next_block;
pub mod get_next_inst_use;
pub mod get_non_vol_xmm_storage_size;
pub mod get_op_ir_data;
pub mod get_op_ir_data_alt_b;
pub mod get_op_length;
pub mod get_reg_tag;
pub mod get_reload_address;
pub mod get_reload_offset;
pub mod get_scale_encoding;
pub mod get_sorted_block_order;
pub mod get_table_node_at_cached_slot;
pub mod get_tag_name;
pub mod get_xmm_register_count;
pub mod handle_builtin_effects;
pub mod has_op;
pub mod has_result;
pub mod has_side_effects;
pub mod has_typed_parameters;
pub mod init_functions;
pub mod init_header_functions_code_gen_a_64;
pub mod init_header_functions_code_gen_x_64;
pub mod initialize_execution_callbacks;
pub mod is_block_terminator;
pub mod is_compatible_constant;
pub mod is_custom_userdata_bytecode_type;
pub mod is_direct_compare;
pub mod is_entry_block;
pub mod is_expected_or_unknown_bytecode_type;
pub mod is_fast_call;
pub mod is_gco;
pub mod is_inst_use_for_op;
pub mod is_jump_d;
pub mod is_native_execution_enabled;
pub mod is_non_terminating_jump;
pub mod is_printable_string_constant;
pub mod is_pseudo;
pub mod is_skip_c;
pub mod is_supported;
pub mod is_unsafe_to_sink;
pub mod is_unwind_supported;
pub mod is_userdata_bytecode_type;
pub mod jit_rng_random;
pub mod jit_rng_seed;
pub mod jump_if_falsy;
pub mod jump_if_tag_is;
pub mod jump_if_tag_is_not;
pub mod jump_if_truthy;
pub mod jump_on_number_cmp;
pub mod kill_ir_utils;
pub mod kill_ir_utils_alt_b;
pub mod kill_ir_utils_alt_c;
pub mod kill_unused_blocks;
pub mod load_bytecode_type_info;
pub mod load_double_or_constant;
pub mod log_function_header;
pub mod log_function_types;
pub mod log_perf_function;
pub mod log_perf_functions;
pub mod lower_function;
pub mod lower_impl;
pub mod lower_ir_code_gen_lower;
pub mod lower_ir_code_gen_lower_alt_b;
pub mod lrotate;
pub mod luau_codegen_compile;
pub mod luau_codegen_create;
pub mod luau_codegen_supported;
pub mod luau_constant;
pub mod luau_constant_address;
pub mod luau_constant_tag;
pub mod luau_constant_value;
pub mod luau_node_key_tag;
pub mod luau_node_key_value;
pub mod luau_reg;
pub mod luau_reg_address;
pub mod luau_reg_extra;
pub mod luau_reg_tag;
pub mod luau_reg_value;
pub mod luau_reg_value_int;
pub mod luau_reg_value_int_64;
pub mod luau_reg_value_vector;
pub mod make_pages_executable_code_allocator;
pub mod make_pages_executable_code_allocator_alt_b;
pub mod make_pages_not_executable_code_allocator;
pub mod make_pages_not_executable_code_allocator_alt_b;
pub mod make_pages_read_only_code_allocator;
pub mod make_pages_read_only_code_allocator_alt_b;
pub mod mark_dead_stores_in_block;
pub mod mark_dead_stores_in_block_chain;
pub mod mark_dead_stores_in_block_chains;
pub mod mark_dead_stores_in_inst;
pub mod new_userdata;
pub mod on_close_state;
pub mod on_destroy_function;
pub mod on_disable;
pub mod on_enter;
pub mod on_enter_disabled;
pub mod opcode_to_host_metamethod;
pub mod operator_add_operand_x_64;
pub mod operator_add_operand_x_64_alt_b;
pub mod operator_add_operand_x_64_alt_c;
pub mod operator_add_operand_x_64_alt_d;
pub mod operator_add_operand_x_64_alt_e;
pub mod operator_deref;
pub mod operator_sub;
pub mod optimize_memory_operands_x_64_optimize_final_x_64;
pub mod optimize_memory_operands_x_64_optimize_final_x_64_alt_b;
pub mod pad_to_detail_column;
pub mod predecessors;
pub mod prepare_reg_type_info_lookups;
pub mod produces_dirty_high_register_bits;
pub mod propagate_tags_from_predecessors;
pub mod qword_reg;
pub mod read;
pub mod read_var_int;
pub mod refine_reg_type;
pub mod refine_upvalue_type;
pub mod reg_index_to_dw_reg_x_64;
pub mod remove_block_use;
pub mod remove_inst_use;
pub mod remove_use;
pub mod replace_inst_operand_ir_utils;
pub mod replace_ir_utils;
pub mod replace_ir_utils_alt_b;
pub mod require_variadic_sequence;
pub mod rrotate;
pub mod safe_integer_constant;
pub mod same_underlying_register;
pub mod save_block_exit_state;
pub mod set_luau_reg;
pub mod set_native_execution_enabled;
pub mod set_perf_log;
pub mod set_userdata_remapper;
pub mod setup_block_entry_state_optimize_const_prop;
pub mod setup_block_entry_state_optimize_dead_store;
pub mod substitute;
pub mod substitute_with_truncated_uint;
pub mod successors;
pub mod summarize_bytecode;
pub mod tm_to_host_metamethod;
pub mod to_dot;
pub mod to_dot_cfg;
pub mod to_dot_dj_graph;
pub mod to_string_code_gen;
pub mod to_string_detailed_ir_dump;
pub mod to_string_detailed_ir_dump_alt_b;
pub mod to_string_ir_dump;
pub mod to_string_ir_dump_alt_c;
pub mod to_string_ir_dump_alt_d;
pub mod to_string_ir_dump_alt_e;
pub mod to_string_ir_dump_alt_f;
pub mod to_string_ir_dump_alt_g;
pub mod translate_binary_numeric_fallback_if_required;
pub mod translate_buffer_args_and_check_bounds;
pub mod translate_builtin;
pub mod translate_builtin_2_number_to_number_libm;
pub mod translate_builtin_assert;
pub mod translate_builtin_bit_32_bnot;
pub mod translate_builtin_bit_32_extract;
pub mod translate_builtin_bit_32_extract_k;
pub mod translate_builtin_bit_32_multiarg_op;
pub mod translate_builtin_bit_32_replace;
pub mod translate_builtin_bit_32_rotate;
pub mod translate_builtin_bit_32_shift;
pub mod translate_builtin_bit_32_unary;
pub mod translate_builtin_buffer_read;
pub mod translate_builtin_buffer_write;
pub mod translate_builtin_int_64_binary;
pub mod translate_builtin_int_64_bnot;
pub mod translate_builtin_int_64_clamp;
pub mod translate_builtin_int_64_compare;
pub mod translate_builtin_int_64_create;
pub mod translate_builtin_int_64_extract;
pub mod translate_builtin_int_64_min_max;
pub mod translate_builtin_int_64_multiarg_op;
pub mod translate_builtin_int_64_neg;
pub mod translate_builtin_int_64_rotate;
pub mod translate_builtin_int_64_shift;
pub mod translate_builtin_int_64_to_number;
pub mod translate_builtin_int_64_unary;
pub mod translate_builtin_math_clamp;
pub mod translate_builtin_math_deg_rad;
pub mod translate_builtin_math_is_nan;
pub mod translate_builtin_math_lerp;
pub mod translate_builtin_math_log;
pub mod translate_builtin_math_min_max;
pub mod translate_builtin_math_unary;
pub mod translate_builtin_number_to_2_number;
pub mod translate_builtin_number_to_number_libm;
pub mod translate_builtin_string_len;
pub mod translate_builtin_table_insert;
pub mod translate_builtin_type;
pub mod translate_builtin_typeof;
pub mod translate_builtin_vector;
pub mod translate_builtin_vector_clamp;
pub mod translate_builtin_vector_cross;
pub mod translate_builtin_vector_dot;
pub mod translate_builtin_vector_lerp;
pub mod translate_builtin_vector_magnitude;
pub mod translate_builtin_vector_map_1;
pub mod translate_builtin_vector_map_1_x_4;
pub mod translate_builtin_vector_min_max;
pub mod translate_builtin_vector_normalize;
pub mod translate_fast_call_n;
pub mod translate_inst_and_x;
pub mod translate_inst_binary;
pub mod translate_inst_binary_k;
pub mod translate_inst_binary_numeric;
pub mod translate_inst_binary_rk;
pub mod translate_inst_capture;
pub mod translate_inst_close_upvals;
pub mod translate_inst_cmp_proto;
pub mod translate_inst_concat;
pub mod translate_inst_dup_table;
pub mod translate_inst_for_g_loop_ipairs;
pub mod translate_inst_for_g_prep_inext;
pub mod translate_inst_for_g_prep_next;
pub mod translate_inst_for_n_loop;
pub mod translate_inst_for_n_prep;
pub mod translate_inst_get_global;
pub mod translate_inst_get_import;
pub mod translate_inst_get_table;
pub mod translate_inst_get_table_ks;
pub mod translate_inst_get_table_n;
pub mod translate_inst_get_upval;
pub mod translate_inst_jump;
pub mod translate_inst_jump_back;
pub mod translate_inst_jump_if;
pub mod translate_inst_jump_if_cond;
pub mod translate_inst_jump_if_eq;
pub mod translate_inst_jump_if_eq_shortcut;
pub mod translate_inst_jump_x;
pub mod translate_inst_jumpx_eq_b;
pub mod translate_inst_jumpx_eq_b_shortcut;
pub mod translate_inst_jumpx_eq_n;
pub mod translate_inst_jumpx_eq_n_shortcut;
pub mod translate_inst_jumpx_eq_nil;
pub mod translate_inst_jumpx_eq_nil_shortcut;
pub mod translate_inst_jumpx_eq_s;
pub mod translate_inst_jumpx_eq_s_shortcut;
pub mod translate_inst_length;
pub mod translate_inst_load_b;
pub mod translate_inst_load_constant;
pub mod translate_inst_load_k;
pub mod translate_inst_load_kx;
pub mod translate_inst_load_n;
pub mod translate_inst_load_nil;
pub mod translate_inst_minus;
pub mod translate_inst_move;
pub mod translate_inst_namecall;
pub mod translate_inst_new_closure;
pub mod translate_inst_new_table;
pub mod translate_inst_not;
pub mod translate_inst_or_x;
pub mod translate_inst_set_global;
pub mod translate_inst_set_table;
pub mod translate_inst_set_table_ks;
pub mod translate_inst_set_table_n;
pub mod translate_inst_set_upval;
pub mod try_create_linear_block;
pub mod try_find_local;
pub mod try_find_local_name;
pub mod try_find_upvalue_name;
pub mod try_get_luau_tag_for_bc_type;
pub mod try_get_next_block_in_chain;
pub mod try_get_operand_tag;
pub mod try_get_tag_for_typename;
pub mod try_replace_tag_with_full_store;
pub mod try_replace_value_with_full_store;
pub mod try_replace_vector_value_with_full_store;
pub mod update_last_use_for_op;
pub mod update_last_use_locations;
pub mod update_last_use_locations_in_block;
pub mod update_remaining_uses;
pub mod update_use_counts;
pub mod userdata_remapper_wrap;
pub mod visit_arguments;
pub mod visit_fde_entries;
pub mod visit_vm_reg_defs_uses_ir_visit_use_def;
pub mod visit_vm_reg_defs_uses_ir_visit_use_def_alt_b;
pub mod vm_const_op;
pub mod vm_exit_op;
pub mod vm_reg_op;
pub mod vm_upvalue_op;
pub mod word_reg;
pub mod writef_32;
pub mod writef_64;
pub mod writeu_16;
pub mod writeu_32;
pub mod writeu_64;
pub mod writeu_8;
pub mod writeuleb_128;