From 4d38c43918bba314474244cd67477870a9b94878 Mon Sep 17 00:00:00 2001 From: liuf9 Date: Tue, 3 Dec 2024 09:43:52 +0800 Subject: [PATCH] Update code style and model and bugfix for unknown insn code. --- CMakeLists.txt | 2 +- aiframe/CMakeLists.txt | 7 +- .../autotune/coarse_option_tuning_plugin.cpp | 55 +- .../autotune/rtl_unroll_autotune_plugin.cpp | 58 +- .../optimize/ipa_inline_unroll_plugin.cpp | 7400 +++++++++-------- .../optimize/rtl_unroll_opt_plugin.cpp | 34 +- aiframe/include/feature_utils.h | 399 +- aiframe/include/insn-opinit.h | 2820 +------ aiframe/include/insn_utils_aarch64.h | 6 + aiframe/include/onnxrunner.h | 2 +- aiframe/include/option_yaml_utils.h | 7 +- aiframe/include/plugin_utils.h | 29 +- aiframe/onnxrunner.cpp | 36 +- aiframe_legacy/ONNXRunner.cpp | 30 +- aiframe_legacy/include/ONNXRunner.h | 132 +- models/inline_model.onnx | Bin 3070566 -> 696020 bytes models/unroll_model.onnx | Bin 580421 -> 1189524 bytes python/setup.py | 63 +- .../block_correction/run_block_correction.sh | 4 +- python/test/option_tuner/run_option_tuner.sh | 2 +- python/test/option_tuner/run_test.sh | 0 21 files changed, 4180 insertions(+), 6906 deletions(-) mode change 100644 => 100755 python/test/option_tuner/run_test.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 4c8b0b3a..ef0441a0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,4 +39,4 @@ set(ONNXRUNTIME_LIB "${onnxruntime_ROOTDIR}/lib64") message(STATUS "ONNXRuntime: ${ONNXRUNTIME_LIB}") add_subdirectory(aiframe) -add_subdirectory(aiframe_legacy) \ No newline at end of file +add_subdirectory(aiframe_legacy) diff --git a/aiframe/CMakeLists.txt b/aiframe/CMakeLists.txt index 21cba241..676ce311 100644 --- a/aiframe/CMakeLists.txt +++ b/aiframe/CMakeLists.txt @@ -4,9 +4,8 @@ function(create_onnxrunner lib_name src_file) set_target_properties(${lib_name} PROPERTIES PREFIX "") target_include_directories(${lib_name} PRIVATE ${FRAMEWORK_INCLUDE}) - target_link_libraries(${lib_name} - PRIVATE - ${ONNXRUNTIME_LIB}) + target_link_directories(${lib_name} PRIVATE ${ONNXRUNTIME_LIB}) + target_link_libraries(${lib_name} PRIVATE onnxruntime) # Install the targets and include files to expected locations. if(NOT DEFINED CMAKE_INSTALL_LIBDIR) @@ -43,4 +42,4 @@ endif() if (BUILD_GCC_PLUGINS) add_subdirectory(gcc_plugins) -endif() \ No newline at end of file +endif() diff --git a/aiframe/gcc_plugins/autotune/coarse_option_tuning_plugin.cpp b/aiframe/gcc_plugins/autotune/coarse_option_tuning_plugin.cpp index 4b4347ca..253819f2 100644 --- a/aiframe/gcc_plugins/autotune/coarse_option_tuning_plugin.cpp +++ b/aiframe/gcc_plugins/autotune/coarse_option_tuning_plugin.cpp @@ -18,16 +18,15 @@ OptionManager opt_mgr; /* ===------------------------- Generate -------------------------=== */ const pass_data pass_data_coarse_option_generate = { - .type = GIMPLE_PASS, // GIMPLE_PASS, RTL_PASS, SIMPLE_IPA_PASS, IPA_PASS - .name = "coarse_option_generate", - .optinfo_flags = OPTGROUP_NONE, - .tv_id = TV_NONE, - .properties_required = PROP_gimple_any, - .properties_provided = 0, - .properties_destroyed = 0, - .todo_flags_start = 0, - .todo_flags_finish = 0 -}; + .type = GIMPLE_PASS, // GIMPLE_PASS, RTL_PASS, SIMPLE_IPA_PASS, IPA_PASS + .name = "coarse_option_generate", + .optinfo_flags = OPTGROUP_NONE, + .tv_id = TV_NONE, + .properties_required = PROP_gimple_any, + .properties_provided = 0, + .properties_destroyed = 0, + .todo_flags_start = 0, + .todo_flags_finish = 0}; struct coarse_option_generate_pass : gimple_opt_pass { public: @@ -60,24 +59,22 @@ struct coarse_option_generate_pass : gimple_opt_pass { struct register_pass_info coarse_option_generate_passinfo { .pass = new coarse_option_generate_pass(), - .reference_pass_name = "*warn_unused_result", - .ref_pass_instance_number = 0, + .reference_pass_name = "*warn_unused_result", .ref_pass_instance_number = 0, .pos_op = PASS_POS_INSERT_BEFORE }; /* ===------------------------- Generate -------------------------=== */ /* ===------------------------- Auto-Tuning -------------------------=== */ const pass_data pass_data_coarse_option_tuning = { - .type = GIMPLE_PASS, // GIMPLE_PASS, RTL_PASS, SIMPLE_IPA_PASS, IPA_PASS - .name = "coarse_option_tuning", - .optinfo_flags = OPTGROUP_NONE, - .tv_id = TV_NONE, - .properties_required = PROP_gimple_any, - .properties_provided = 0, - .properties_destroyed = 0, - .todo_flags_start = 0, - .todo_flags_finish = 0 -}; + .type = GIMPLE_PASS, // GIMPLE_PASS, RTL_PASS, SIMPLE_IPA_PASS, IPA_PASS + .name = "coarse_option_tuning", + .optinfo_flags = OPTGROUP_NONE, + .tv_id = TV_NONE, + .properties_required = PROP_gimple_any, + .properties_provided = 0, + .properties_destroyed = 0, + .todo_flags_start = 0, + .todo_flags_finish = 0}; struct coarse_option_tuning_pass : gimple_opt_pass { public: @@ -117,8 +114,7 @@ struct coarse_option_tuning_pass : gimple_opt_pass { struct register_pass_info coarse_option_tuning_passinfo { .pass = new coarse_option_tuning_pass(), - .reference_pass_name = "*warn_unused_result", - .ref_pass_instance_number = 0, + .reference_pass_name = "*warn_unused_result", .ref_pass_instance_number = 0, .pos_op = PASS_POS_INSERT_BEFORE }; /* ===------------------------- Auto-Tuning -------------------------=== */ @@ -146,7 +142,11 @@ int plugin_init(struct plugin_name_args *plugin_info, } else if (key == "autotune") { config_path = std::string(value); mode = TuneMode::Tuning; - load_config_yaml(config_path); + if (load_config_yaml(config_path)) { + printf("failed to load autotune config file: %s\n", + config_path.c_str()); + return 1; + } } else if (key == "yaml") { std::string yaml_file = std::string(value); std::filesystem::path file_path_tmp(yaml_file); @@ -154,7 +154,10 @@ int plugin_init(struct plugin_name_args *plugin_info, printf("cannot find yaml file: %s\n", yaml_file.c_str()); return 1; } - load_coarse_option_yaml(yaml_file, opt_mgr); + if (load_coarse_option_yaml(yaml_file, opt_mgr)) { + printf("cannot load coarse grained yaml file: %s\n", yaml_file.c_str()); + return 1; + } } } diff --git a/aiframe/gcc_plugins/autotune/rtl_unroll_autotune_plugin.cpp b/aiframe/gcc_plugins/autotune/rtl_unroll_autotune_plugin.cpp index 71f050d9..3c6310f7 100644 --- a/aiframe/gcc_plugins/autotune/rtl_unroll_autotune_plugin.cpp +++ b/aiframe/gcc_plugins/autotune/rtl_unroll_autotune_plugin.cpp @@ -20,20 +20,19 @@ std::string config_path{}; /* ===------------------------- Generate -------------------------=== */ const pass_data manual_unroll_generate_pass_data = { - .type = RTL_PASS, // GIMPLE_PASS, RTL_PASS, SIMPLE_IPA_PASS, IPA_PASS - .name = "manual_unroll_generate_pass", - .optinfo_flags = OPTGROUP_NONE, - .tv_id = TV_NONE, - .properties_required = PROP_gimple_any, - .properties_provided = 0, - .properties_destroyed = 0, - .todo_flags_start = 0, - .todo_flags_finish = 0 -}; - -struct manual_unroll_genreate_pass : rtl_opt_pass { + .type = RTL_PASS, // GIMPLE_PASS, RTL_PASS, SIMPLE_IPA_PASS, IPA_PASS + .name = "manual_unroll_generate_pass", + .optinfo_flags = OPTGROUP_NONE, + .tv_id = TV_NONE, + .properties_required = PROP_gimple_any, + .properties_provided = 0, + .properties_destroyed = 0, + .todo_flags_start = 0, + .todo_flags_finish = 0}; + +struct manual_unroll_generate_pass : rtl_opt_pass { public: - manual_unroll_genreate_pass() + manual_unroll_generate_pass() : rtl_opt_pass(manual_unroll_generate_pass_data, g) {} virtual unsigned int execute(function* fun) override { @@ -73,31 +72,30 @@ struct manual_unroll_genreate_pass : rtl_opt_pass { return 0; } - virtual manual_unroll_genreate_pass* clone() override { return this; } + virtual manual_unroll_generate_pass* clone() override { return this; } }; struct register_pass_info manual_unroll_generate_passinfo { - .pass = new manual_unroll_genreate_pass(), + .pass = new manual_unroll_generate_pass(), .reference_pass_name = "loop2_unroll", // 0-each time call cfg-pass, plugin will be called - .ref_pass_instance_number = 0, + .ref_pass_instance_number = 0, // PASS_POS_INSERT_AFTER, PASS_POS_INSERT_BEFORE, PASS_POS_REPLACE - .pos_op = PASS_POS_INSERT_AFTER + .pos_op = PASS_POS_INSERT_AFTER }; /* ===------------------------- Generate -------------------------=== */ /* ===------------------------- Auto-Tuning -------------------------=== */ const pass_data manual_unroll_pass_data = { - .type = RTL_PASS, // GIMPLE_PASS, RTL_PASS, SIMPLE_IPA_PASS, IPA_PASS - .name = "manual_unroll_pass", - .optinfo_flags = OPTGROUP_NONE, - .tv_id = TV_NONE, - .properties_required = PROP_gimple_any, - .properties_provided = 0, - .properties_destroyed = 0, - .todo_flags_start = 0, - .todo_flags_finish = 0 -}; + .type = RTL_PASS, // GIMPLE_PASS, RTL_PASS, SIMPLE_IPA_PASS, IPA_PASS + .name = "manual_unroll_pass", + .optinfo_flags = OPTGROUP_NONE, + .tv_id = TV_NONE, + .properties_required = PROP_gimple_any, + .properties_provided = 0, + .properties_destroyed = 0, + .todo_flags_start = 0, + .todo_flags_finish = 0}; struct manual_unroll_pass : rtl_opt_pass { public: @@ -120,10 +118,8 @@ struct manual_unroll_pass : rtl_opt_pass { }; struct register_pass_info manual_unroll_passinfo { - .pass = new manual_unroll_pass(), - .reference_pass_name = "loop2_unroll", - .ref_pass_instance_number = 0, - .pos_op = PASS_POS_INSERT_BEFORE + .pass = new manual_unroll_pass(), .reference_pass_name = "loop2_unroll", + .ref_pass_instance_number = 0, .pos_op = PASS_POS_INSERT_BEFORE }; /* ===------------------------- Auto-Tuning -------------------------=== */ diff --git a/aiframe/gcc_plugins/optimize/ipa_inline_unroll_plugin.cpp b/aiframe/gcc_plugins/optimize/ipa_inline_unroll_plugin.cpp index 147dcd99..49752c64 100644 --- a/aiframe/gcc_plugins/optimize/ipa_inline_unroll_plugin.cpp +++ b/aiframe/gcc_plugins/optimize/ipa_inline_unroll_plugin.cpp @@ -71,10 +71,22 @@ using namespace ai4c; int plugin_is_GPL_compatible; +/* ===---- AI4Compiler Models and Inference Engine Interface ----=== */ char *g_inline_model_path; char *g_unroll_model_path; char *g_infer_path; +/* Add new variable. */ +int64_t simultaneous_prefetches[1] = {param_simultaneous_prefetches}; +int64_t l1_cache_size[1] = {param_l1_cache_size}; +int64_t l1_cache_line_size[1] = {param_l1_cache_line_size}; +int64_t l2_cache_size[1] = {param_l2_cache_size}; +int64_t prefetch_latency[1] = {param_prefetch_latency}; +int64_t ipa_prefetch_distance_factor[1] = {param_ipa_prefetch_distance_factor}; +static char hash[65]; +const char *var_str[1]; +const char *native_tune = getenv("GCC_AI4C_TUNE_INFO"); + /* Interfaces of AI4C Inference Engine */ void *g_infer_handle; @@ -110,6 +122,7 @@ get_float_output_t get_float_output; typedef void (*free_engine_t)(); free_engine_t free_engine; +/* ===---- AI4Compiler Models and Inference Engine Interface ----=== */ typedef fibonacci_heap edge_heap_t; typedef fibonacci_node edge_heap_node_t; @@ -119,24 +132,64 @@ static int overall_size; static profile_count max_count; static profile_count spec_rem; -/* Declaration of user-defined functions and variables */ -void get_basic_block_info(struct cgraph_node *node, int &bb_count, int &cond_bb_count); +/* AI4Compiler: Declaration of newly-defined functions and variables. */ +void execute_sha256(const char *input, char *output, size_t output_size) { + char command[256]; + snprintf(command, sizeof(command), "echo -n \"%s\" | sha256sum", input); + + FILE *pipe = popen(command, "r"); + if (pipe == NULL) { + perror("Failed to run command."); + return; + } + + fgets(output, output_size, pipe); + pclose(pipe); +} + +const char *get_optimize_decision() { + static char input[64]; + if (native_tune && (strchr(native_tune, '+') != NULL)) { + const char prefix = '='; + const char *start = strchr(native_tune, prefix); + if (start) { + start += 1; + const char *end = strchr(start, '+'); + if (!end) { + end = native_tune + strlen(native_tune); + } + size_t len = end - start; + if (len >= sizeof(input)) len = sizeof(input) - 1; + strncpy(input, start, len); + input[len] = '\0'; + } else + input[0] = '\0'; + } + return input; +} + +void get_basic_block_info(struct cgraph_node *node, int &bb_count, + int &cond_bb_count); int get_function_parameters_info(struct cgraph_node *node); -void get_caller_callee_info(struct cgraph_node *node, int &caller_count, int &callee_count); -void get_edge_info(struct cgraph_edge *edge, int &edge_count, double &edge_freq); +void get_caller_callee_info(struct cgraph_node *node, int &caller_count, + int &callee_count); +void get_edge_info(struct cgraph_edge *edge, int &edge_count, + double &edge_freq); struct StatementInfo { - int total_stmt_count; - std::unordered_map stmt_counts; + int total_stmt_count; + std::unordered_map stmt_counts; }; static StatementInfo count_stmt_types_fn(struct cgraph_node *node); -void extract_node_features(struct cgraph_node *node, std::vector &features); -void get_features(struct cgraph_node *node, struct cgraph_edge *edge, std::vector &features); +void extract_node_features(struct cgraph_node *node, + std::vector &features); +void get_features(struct cgraph_node *node, struct cgraph_edge *edge, + std::vector &features); std::unordered_map edge_ignore_limits_map; std::unordered_map> node_caller_callee_count; std::map, int64_t> function_map; -/* ===------------------------- Ipa-Inline-Pass -------------------------=== */ +/* ===------------------------- IPA-Inline-Pass -------------------------=== */ /* Return false when inlining edge E would lead to violating limits on function unit growth or stack usage growth. @@ -150,153 +203,152 @@ std::map, int64_t> function_map; on stack overflow when functions with huge stack frames gets inlined. */ -static bool caller_growth_limits(struct cgraph_edge *e) -{ - struct cgraph_node *to = e->caller; - struct cgraph_node *what = e->callee->ultimate_alias_target(); - int newsize; - int limit = 0; - HOST_WIDE_INT stack_size_limit = 0, inlined_stack; - ipa_size_summary *outer_info = ipa_size_summaries->get(to); - - /* Look for function e->caller is inlined to. While doing - so work out the largest function body on the way. As - described above, we want to base our function growth - limits based on that. Not on the self size of the - outer function, not on the self size of inline code - we immediately inline to. This is the most relaxed - interpretation of the rule "do not grow large functions - too much in order to prevent compiler from exploding". */ - while (true) { - ipa_size_summary *size_info = ipa_size_summaries->get(to); - if (limit < size_info->self_size) - limit = size_info->self_size; - if (stack_size_limit < size_info->estimated_self_stack_size) - stack_size_limit = size_info->estimated_self_stack_size; - if (to->inlined_to) - to = to->callers->caller; - else - break; - } - - ipa_fn_summary *what_info = ipa_fn_summaries->get(what); - ipa_size_summary *what_size_info = ipa_size_summaries->get(what); +static bool caller_growth_limits(struct cgraph_edge *e) { + struct cgraph_node *to = e->caller; + struct cgraph_node *what = e->callee->ultimate_alias_target(); + int newsize; + int limit = 0; + HOST_WIDE_INT stack_size_limit = 0, inlined_stack; + ipa_size_summary *outer_info = ipa_size_summaries->get(to); + + /* Look for function e->caller is inlined to. While doing + so work out the largest function body on the way. As + described above, we want to base our function growth + limits based on that. Not on the self size of the + outer function, not on the self size of inline code + we immediately inline to. This is the most relaxed + interpretation of the rule "do not grow large functions + too much in order to prevent compiler from exploding". */ + while (true) { + ipa_size_summary *size_info = ipa_size_summaries->get(to); + if (limit < size_info->self_size) limit = size_info->self_size; + if (stack_size_limit < size_info->estimated_self_stack_size) + stack_size_limit = size_info->estimated_self_stack_size; + if (to->inlined_to) + to = to->callers->caller; + else + break; + } - if (limit < what_size_info->self_size) - limit = what_size_info->self_size; + ipa_fn_summary *what_info = ipa_fn_summaries->get(what); + ipa_size_summary *what_size_info = ipa_size_summaries->get(what); - limit += limit * opt_for_fn(to->decl, param_large_function_growth) / 100; + if (limit < what_size_info->self_size) limit = what_size_info->self_size; - /* Check the size after inlining against the function limits. But allow - the function to shrink if it went over the limits by forced inlining. */ - newsize = estimate_size_after_inlining(to, e); - if (newsize >= ipa_size_summaries->get(what)->size && newsize > opt_for_fn(to->decl, param_large_function_insns) && - (newsize > limit && - (edge_ignore_limits_map.find(e) == edge_ignore_limits_map.end() || !edge_ignore_limits_map[e]))) { - e->inline_failed = CIF_LARGE_FUNCTION_GROWTH_LIMIT; - return false; - } - - if (!what_info->estimated_stack_size) - return true; + limit += limit * opt_for_fn(to->decl, param_large_function_growth) / 100; - /* FIXME: Stack size limit often prevents inlining in Fortran programs - due to large i/o datastructures used by the Fortran front-end. - We ought to ignore this limit when we know that the edge is executed - on every invocation of the caller (i.e. its call statement dominates - exit block). We do not track this information, yet. */ - stack_size_limit += ((gcov_type)stack_size_limit * opt_for_fn(to->decl, param_stack_frame_growth) / 100); - - inlined_stack = - (ipa_get_stack_frame_offset(to) + outer_info->estimated_self_stack_size + what_info->estimated_stack_size); - /* Check new stack consumption with stack consumption at the place - stack is used. */ - if (inlined_stack > stack_size_limit - /* If function already has large stack usage from sibling - inline call, we can inline, too. - This bit overoptimistically assume that we are good at stack - packing. */ - && inlined_stack > ipa_fn_summaries->get(to)->estimated_stack_size && - (inlined_stack > opt_for_fn(to->decl, param_large_stack_frame) && - (edge_ignore_limits_map.find(e) == edge_ignore_limits_map.end() || !edge_ignore_limits_map[e]))) { - e->inline_failed = CIF_LARGE_STACK_FRAME_GROWTH_LIMIT; - return false; - } - return true; + /* Check the size after inlining against the function limits. But allow + the function to shrink if it went over the limits by forced inlining. */ + newsize = estimate_size_after_inlining(to, e); + if (newsize >= ipa_size_summaries->get(what)->size && + newsize > opt_for_fn(to->decl, param_large_function_insns) && + (newsize > limit && + (edge_ignore_limits_map.find(e) == edge_ignore_limits_map.end() || + !edge_ignore_limits_map[e]))) { + e->inline_failed = CIF_LARGE_FUNCTION_GROWTH_LIMIT; + return false; + } + + if (!what_info->estimated_stack_size) return true; + + /* FIXME: Stack size limit often prevents inlining in Fortran programs + due to large i/o datastructures used by the Fortran front-end. + We ought to ignore this limit when we know that the edge is executed + on every invocation of the caller (i.e. its call statement dominates + exit block). We do not track this information, yet. */ + stack_size_limit += ((gcov_type)stack_size_limit * + opt_for_fn(to->decl, param_stack_frame_growth) / 100); + + inlined_stack = + (ipa_get_stack_frame_offset(to) + outer_info->estimated_self_stack_size + + what_info->estimated_stack_size); + /* Check new stack consumption with stack consumption at the place + stack is used. */ + if (inlined_stack > stack_size_limit + /* If function already has large stack usage from sibling + inline call, we can inline, too. + This bit overoptimistically assume that we are good at stack + packing. */ + && inlined_stack > ipa_fn_summaries->get(to)->estimated_stack_size && + (inlined_stack > opt_for_fn(to->decl, param_large_stack_frame) && + (edge_ignore_limits_map.find(e) == edge_ignore_limits_map.end() || + !edge_ignore_limits_map[e]))) { + e->inline_failed = CIF_LARGE_STACK_FRAME_GROWTH_LIMIT; + return false; + } + return true; } /* Dump info about why inlining has failed. */ -static void report_inline_failed_reason(struct cgraph_edge *e) -{ - if (dump_enabled_p()) { - dump_printf_loc(MSG_MISSED_OPTIMIZATION, - e->call_stmt, - " not inlinable: %C -> %C, %s\n", - e->caller, - e->callee, - cgraph_inline_failed_string(e->inline_failed)); - if ((e->inline_failed == CIF_TARGET_OPTION_MISMATCH || e->inline_failed == CIF_OPTIMIZATION_MISMATCH) && - e->caller->lto_file_data && e->callee->ultimate_alias_target()->lto_file_data) { - dump_printf_loc(MSG_MISSED_OPTIMIZATION, - e->call_stmt, - " LTO objects: %s, %s\n", - e->caller->lto_file_data->file_name, - e->callee->ultimate_alias_target()->lto_file_data->file_name); - } - if (e->inline_failed == CIF_TARGET_OPTION_MISMATCH) - if (dump_file) - cl_target_option_print_diff(dump_file, - 2, - target_opts_for_fn(e->caller->decl), - target_opts_for_fn(e->callee->ultimate_alias_target()->decl)); - if (e->inline_failed == CIF_OPTIMIZATION_MISMATCH) - if (dump_file) - cl_optimization_print_diff( - dump_file, 2, opts_for_fn(e->caller->decl), opts_for_fn(e->callee->ultimate_alias_target()->decl)); +static void report_inline_failed_reason(struct cgraph_edge *e) { + if (dump_enabled_p()) { + dump_printf_loc(MSG_MISSED_OPTIMIZATION, e->call_stmt, + " not inlinable: %C -> %C, %s\n", e->caller, e->callee, + cgraph_inline_failed_string(e->inline_failed)); + if ((e->inline_failed == CIF_TARGET_OPTION_MISMATCH || + e->inline_failed == CIF_OPTIMIZATION_MISMATCH) && + e->caller->lto_file_data && + e->callee->ultimate_alias_target()->lto_file_data) { + dump_printf_loc( + MSG_MISSED_OPTIMIZATION, e->call_stmt, " LTO objects: %s, %s\n", + e->caller->lto_file_data->file_name, + e->callee->ultimate_alias_target()->lto_file_data->file_name); } + if (e->inline_failed == CIF_TARGET_OPTION_MISMATCH) + if (dump_file) + cl_target_option_print_diff( + dump_file, 2, target_opts_for_fn(e->caller->decl), + target_opts_for_fn(e->callee->ultimate_alias_target()->decl)); + if (e->inline_failed == CIF_OPTIMIZATION_MISMATCH) + if (dump_file) + cl_optimization_print_diff( + dump_file, 2, opts_for_fn(e->caller->decl), + opts_for_fn(e->callee->ultimate_alias_target()->decl)); + } } /* Decide whether sanitizer-related attributes allow inlining. */ -static bool sanitize_attrs_match_for_inline_p(const_tree caller, const_tree callee) -{ - if (!caller || !callee) - return true; +static bool sanitize_attrs_match_for_inline_p(const_tree caller, + const_tree callee) { + if (!caller || !callee) return true; - /* Follow clang and allow inlining for always_inline functions. */ - if (lookup_attribute("always_inline", DECL_ATTRIBUTES(callee))) - return true; + /* Follow clang and allow inlining for always_inline functions. */ + if (lookup_attribute("always_inline", DECL_ATTRIBUTES(callee))) return true; - const sanitize_code codes[] = {SANITIZE_ADDRESS, - SANITIZE_THREAD, - SANITIZE_UNDEFINED, - SANITIZE_UNDEFINED_NONDEFAULT, - SANITIZE_POINTER_COMPARE, - SANITIZE_POINTER_SUBTRACT}; + const sanitize_code codes[] = { + SANITIZE_ADDRESS, SANITIZE_THREAD, + SANITIZE_UNDEFINED, SANITIZE_UNDEFINED_NONDEFAULT, + SANITIZE_POINTER_COMPARE, SANITIZE_POINTER_SUBTRACT}; - for (unsigned i = 0; i < sizeof(codes) / sizeof(codes[0]); i++) - if (sanitize_flags_p(codes[i], caller) != sanitize_flags_p(codes[i], callee)) - return false; + for (unsigned i = 0; i < sizeof(codes) / sizeof(codes[0]); i++) + if (sanitize_flags_p(codes[i], caller) != + sanitize_flags_p(codes[i], callee)) + return false; - if (sanitize_coverage_p(caller) != sanitize_coverage_p(callee)) - return false; + if (sanitize_coverage_p(caller) != sanitize_coverage_p(callee)) return false; - return true; + return true; } /* Used for flags where it is safe to inline when caller's value is grater than callee's. */ -#define check_maybe_up(flag) \ - (opts_for_fn(caller->decl)->x_##flag != opts_for_fn(callee->decl)->x_##flag && \ - (!always_inline || opts_for_fn(caller->decl)->x_##flag < opts_for_fn(callee->decl)->x_##flag)) +#define check_maybe_up(flag) \ + (opts_for_fn(caller->decl)->x_##flag != \ + opts_for_fn(callee->decl)->x_##flag && \ + (!always_inline || opts_for_fn(caller->decl)->x_##flag < \ + opts_for_fn(callee->decl)->x_##flag)) /* Used for flags where it is safe to inline when caller's value is smaller than callee's. */ -#define check_maybe_down(flag) \ - (opts_for_fn(caller->decl)->x_##flag != opts_for_fn(callee->decl)->x_##flag && \ - (!always_inline || opts_for_fn(caller->decl)->x_##flag > opts_for_fn(callee->decl)->x_##flag)) +#define check_maybe_down(flag) \ + (opts_for_fn(caller->decl)->x_##flag != \ + opts_for_fn(callee->decl)->x_##flag && \ + (!always_inline || opts_for_fn(caller->decl)->x_##flag > \ + opts_for_fn(callee->decl)->x_##flag)) /* Used for flags where exact match is needed for correctness. */ -#define check_match(flag) (opts_for_fn(caller->decl)->x_##flag != opts_for_fn(callee->decl)->x_##flag) +#define check_match(flag) \ + (opts_for_fn(caller->decl)->x_##flag != opts_for_fn(callee->decl)->x_##flag) /* Decide if we can inline the edge and possibly update inline_failed reason. @@ -305,104 +357,104 @@ static bool sanitize_attrs_match_for_inline_p(const_tree caller, const_tree call if REPORT is true, output reason to the dump file. */ -static bool can_inline_edge_p(struct cgraph_edge *e, bool report, bool early = false) -{ - gcc_checking_assert(e->inline_failed); - - if (cgraph_inline_failed_type(e->inline_failed) == CIF_FINAL_ERROR) { - if (report) - report_inline_failed_reason(e); - return false; - } - - bool inlinable = true; - enum availability avail; - cgraph_node *caller = (e->caller->inlined_to ? e->caller->inlined_to : e->caller); - cgraph_node *callee = e->callee->ultimate_alias_target(&avail, caller); +static bool can_inline_edge_p(struct cgraph_edge *e, bool report, + bool early = false) { + gcc_checking_assert(e->inline_failed); - if (!callee->definition) { - e->inline_failed = CIF_BODY_NOT_AVAILABLE; - inlinable = false; - } - if (!early && (!opt_for_fn(callee->decl, optimize) || !opt_for_fn(caller->decl, optimize))) { - e->inline_failed = CIF_FUNCTION_NOT_OPTIMIZED; - inlinable = false; - } else if (callee->calls_comdat_local) { - e->inline_failed = CIF_USES_COMDAT_LOCAL; - inlinable = false; - } else if (avail <= AVAIL_INTERPOSABLE) { - e->inline_failed = CIF_OVERWRITABLE; - inlinable = false; - } - /* All edges with call_stmt_cannot_inline_p should have inline_failed - initialized to one of FINAL_ERROR reasons. */ - else if (e->call_stmt_cannot_inline_p) - gcc_unreachable(); - /* Don't inline if the functions have different EH personalities. */ - else if (DECL_FUNCTION_PERSONALITY(caller->decl) && DECL_FUNCTION_PERSONALITY(callee->decl) && - (DECL_FUNCTION_PERSONALITY(caller->decl) != DECL_FUNCTION_PERSONALITY(callee->decl))) { - e->inline_failed = CIF_EH_PERSONALITY; - inlinable = false; - } - /* TM pure functions should not be inlined into non-TM_pure - functions. */ - else if (is_tm_pure(callee->decl) && !is_tm_pure(caller->decl)) { - e->inline_failed = CIF_UNSPECIFIED; - inlinable = false; - } - /* Check compatibility of target optimization options. */ - else if (!targetm.target_option.can_inline_p(caller->decl, callee->decl)) { - e->inline_failed = CIF_TARGET_OPTION_MISMATCH; - inlinable = false; - } else if (ipa_fn_summaries->get(callee) == NULL || !ipa_fn_summaries->get(callee)->inlinable) { - e->inline_failed = CIF_FUNCTION_NOT_INLINABLE; - inlinable = false; - } - /* Don't inline a function with mismatched sanitization attributes. */ - else if (!sanitize_attrs_match_for_inline_p(caller->decl, callee->decl)) { - e->inline_failed = CIF_SANITIZE_ATTRIBUTE_MISMATCH; - inlinable = false; - } - - if (!inlinable && report) - report_inline_failed_reason(e); - return inlinable; + if (cgraph_inline_failed_type(e->inline_failed) == CIF_FINAL_ERROR) { + if (report) report_inline_failed_reason(e); + return false; + } + + bool inlinable = true; + enum availability avail; + cgraph_node *caller = + (e->caller->inlined_to ? e->caller->inlined_to : e->caller); + cgraph_node *callee = e->callee->ultimate_alias_target(&avail, caller); + + if (!callee->definition) { + e->inline_failed = CIF_BODY_NOT_AVAILABLE; + inlinable = false; + } + if (!early && (!opt_for_fn(callee->decl, optimize) || + !opt_for_fn(caller->decl, optimize))) { + e->inline_failed = CIF_FUNCTION_NOT_OPTIMIZED; + inlinable = false; + } else if (callee->calls_comdat_local) { + e->inline_failed = CIF_USES_COMDAT_LOCAL; + inlinable = false; + } else if (avail <= AVAIL_INTERPOSABLE) { + e->inline_failed = CIF_OVERWRITABLE; + inlinable = false; + } + /* All edges with call_stmt_cannot_inline_p should have inline_failed + initialized to one of FINAL_ERROR reasons. */ + else if (e->call_stmt_cannot_inline_p) + gcc_unreachable(); + /* Don't inline if the functions have different EH personalities. */ + else if (DECL_FUNCTION_PERSONALITY(caller->decl) && + DECL_FUNCTION_PERSONALITY(callee->decl) && + (DECL_FUNCTION_PERSONALITY(caller->decl) != + DECL_FUNCTION_PERSONALITY(callee->decl))) { + e->inline_failed = CIF_EH_PERSONALITY; + inlinable = false; + } + /* TM pure functions should not be inlined into non-TM_pure + functions. */ + else if (is_tm_pure(callee->decl) && !is_tm_pure(caller->decl)) { + e->inline_failed = CIF_UNSPECIFIED; + inlinable = false; + } + /* Check compatibility of target optimization options. */ + else if (!targetm.target_option.can_inline_p(caller->decl, callee->decl)) { + e->inline_failed = CIF_TARGET_OPTION_MISMATCH; + inlinable = false; + } else if (ipa_fn_summaries->get(callee) == NULL || + !ipa_fn_summaries->get(callee)->inlinable) { + e->inline_failed = CIF_FUNCTION_NOT_INLINABLE; + inlinable = false; + } + /* Don't inline a function with mismatched sanitization attributes. */ + else if (!sanitize_attrs_match_for_inline_p(caller->decl, callee->decl)) { + e->inline_failed = CIF_SANITIZE_ATTRIBUTE_MISMATCH; + inlinable = false; + } + + if (!inlinable && report) report_inline_failed_reason(e); + return inlinable; } /* Return inlining_insns_single limit for function N. If HINT or HINT2 is true scale up the bound. */ -static int inline_insns_single(cgraph_node *n, bool hint, bool hint2) -{ - if (hint && hint2) { - int64_t spd = opt_for_fn(n->decl, param_inline_heuristics_hint_percent); - spd = spd * spd; - if (spd > 1000000) - spd = 1000000; - return opt_for_fn(n->decl, param_max_inline_insns_single) * spd / 100; - } - if (hint || hint2) - return opt_for_fn(n->decl, param_max_inline_insns_single) * - opt_for_fn(n->decl, param_inline_heuristics_hint_percent) / 100; - return opt_for_fn(n->decl, param_max_inline_insns_single); +static int inline_insns_single(cgraph_node *n, bool hint, bool hint2) { + if (hint && hint2) { + int64_t spd = opt_for_fn(n->decl, param_inline_heuristics_hint_percent); + spd = spd * spd; + if (spd > 1000000) spd = 1000000; + return opt_for_fn(n->decl, param_max_inline_insns_single) * spd / 100; + } + if (hint || hint2) + return opt_for_fn(n->decl, param_max_inline_insns_single) * + opt_for_fn(n->decl, param_inline_heuristics_hint_percent) / 100; + return opt_for_fn(n->decl, param_max_inline_insns_single); } /* Return inlining_insns_auto limit for function N. If HINT or HINT2 is true scale up the bound. */ -static int inline_insns_auto(cgraph_node *n, bool hint, bool hint2) -{ - int max_inline_insns_auto = opt_for_fn(n->decl, param_max_inline_insns_auto); - if (hint && hint2) { - int64_t spd = opt_for_fn(n->decl, param_inline_heuristics_hint_percent); - spd = spd * spd; - if (spd > 1000000) - spd = 1000000; - return max_inline_insns_auto * spd / 100; - } - if (hint || hint2) - return max_inline_insns_auto * opt_for_fn(n->decl, param_inline_heuristics_hint_percent) / 100; - return max_inline_insns_auto; +static int inline_insns_auto(cgraph_node *n, bool hint, bool hint2) { + int max_inline_insns_auto = opt_for_fn(n->decl, param_max_inline_insns_auto); + if (hint && hint2) { + int64_t spd = opt_for_fn(n->decl, param_inline_heuristics_hint_percent); + spd = spd * spd; + if (spd > 1000000) spd = 1000000; + return max_inline_insns_auto * spd / 100; + } + if (hint || hint2) + return max_inline_insns_auto * + opt_for_fn(n->decl, param_inline_heuristics_hint_percent) / 100; + return max_inline_insns_auto; } /* Decide if we can inline the edge and possibly update @@ -414,351 +466,384 @@ static int inline_insns_auto(cgraph_node *n, bool hint, bool hint2) if DISREGARD_LIMITS is true, ignore size limits. */ -static bool can_inline_edge_by_limits_p( - struct cgraph_edge *e, bool report, bool disregard_limits = false, bool early = false) -{ - gcc_checking_assert(e->inline_failed); +static bool can_inline_edge_by_limits_p(struct cgraph_edge *e, bool report, + bool disregard_limits = false, + bool early = false) { + gcc_checking_assert(e->inline_failed); - if (cgraph_inline_failed_type(e->inline_failed) == CIF_FINAL_ERROR) { - if (report) - report_inline_failed_reason(e); - return false; + if (cgraph_inline_failed_type(e->inline_failed) == CIF_FINAL_ERROR) { + if (report) report_inline_failed_reason(e); + return false; + } + + bool inlinable = true; + enum availability avail; + cgraph_node *caller = + (e->caller->inlined_to ? e->caller->inlined_to : e->caller); + cgraph_node *callee = e->callee->ultimate_alias_target(&avail, caller); + tree caller_tree = DECL_FUNCTION_SPECIFIC_OPTIMIZATION(caller->decl); + tree callee_tree = + callee ? DECL_FUNCTION_SPECIFIC_OPTIMIZATION(callee->decl) : NULL; + /* Check if caller growth allows the inlining. */ + if (!DECL_DISREGARD_INLINE_LIMITS(callee->decl) && !disregard_limits && + !lookup_attribute("flatten", DECL_ATTRIBUTES(caller->decl)) && + !caller_growth_limits(e)) + inlinable = false; + else if (callee->externally_visible && + !DECL_DISREGARD_INLINE_LIMITS(callee->decl) && + flag_live_patching == LIVE_PATCHING_INLINE_ONLY_STATIC) { + e->inline_failed = CIF_EXTERN_LIVE_ONLY_STATIC; + inlinable = false; + } + /* Don't inline a function with a higher optimization level than the + caller. FIXME: this is really just tip of iceberg of handling + optimization attribute. */ + else if (caller_tree != callee_tree) { + bool always_inline = + (DECL_DISREGARD_INLINE_LIMITS(callee->decl) && + lookup_attribute("always_inline", DECL_ATTRIBUTES(callee->decl))); + ipa_fn_summary *caller_info = ipa_fn_summaries->get(caller); + ipa_fn_summary *callee_info = ipa_fn_summaries->get(callee); + + /* Until GCC 4.9 we did not check the semantics-altering flags + below and inlined across optimization boundaries. + Enabling checks below breaks several packages by refusing + to inline library always_inline functions. See PR65873. + Disable the check for early inlining for now until better solution + is found. */ + if (always_inline && early) + ; + /* There are some options that change IL semantics which means + we cannot inline in these cases for correctness reason. + Not even for always_inline declared functions. */ + else if (check_match(flag_wrapv) || check_match(flag_trapv) || + check_match(flag_pcc_struct_return) || + check_maybe_down(optimize_debug) + /* When caller or callee does FP math, be sure FP codegen flags + compatible. */ + || ((caller_info->fp_expressions && callee_info->fp_expressions) && + (check_maybe_up(flag_rounding_math) || + check_maybe_up(flag_trapping_math) || + check_maybe_down(flag_unsafe_math_optimizations) || + check_maybe_down(flag_finite_math_only) || + check_maybe_up(flag_signaling_nans) || + check_maybe_down(flag_cx_limited_range) || + check_maybe_up(flag_signed_zeros) || + check_maybe_down(flag_associative_math) || + check_maybe_down(flag_reciprocal_math) || + check_maybe_down(flag_fp_int_builtin_inexact) + /* Strictly speaking only when the callee contains function + calls that may end up setting errno. */ + || check_maybe_up(flag_errno_math))) + /* We do not want to make code compiled with exceptions to be + brought into a non-EH function unless we know that the callee + does not throw. + This is tracked by DECL_FUNCTION_PERSONALITY. */ + || (check_maybe_up(flag_non_call_exceptions) && + DECL_FUNCTION_PERSONALITY(callee->decl)) || + (check_maybe_up(flag_exceptions) && + DECL_FUNCTION_PERSONALITY(callee->decl)) + /* When devirtualization is disabled for callee, it is not safe + to inline it as we possibly mangled the type info. + Allow early inlining of always inlines. */ + || (!early && check_maybe_down(flag_devirtualize))) { + e->inline_failed = CIF_OPTIMIZATION_MISMATCH; + inlinable = false; } - - bool inlinable = true; - enum availability avail; - cgraph_node *caller = (e->caller->inlined_to ? e->caller->inlined_to : e->caller); - cgraph_node *callee = e->callee->ultimate_alias_target(&avail, caller); - tree caller_tree = DECL_FUNCTION_SPECIFIC_OPTIMIZATION(caller->decl); - tree callee_tree = callee ? DECL_FUNCTION_SPECIFIC_OPTIMIZATION(callee->decl) : NULL; - /* Check if caller growth allows the inlining. */ - if (!DECL_DISREGARD_INLINE_LIMITS(callee->decl) && !disregard_limits && - !lookup_attribute("flatten", DECL_ATTRIBUTES(caller->decl)) && !caller_growth_limits(e)) - inlinable = false; - else if (callee->externally_visible && !DECL_DISREGARD_INLINE_LIMITS(callee->decl) && - flag_live_patching == LIVE_PATCHING_INLINE_ONLY_STATIC) { - e->inline_failed = CIF_EXTERN_LIVE_ONLY_STATIC; + /* gcc.dg/pr43564.c. Apply user-forced inline even at -O0. */ + else if (always_inline) + ; + /* When user added an attribute to the callee honor it. */ + else if (lookup_attribute("optimize", DECL_ATTRIBUTES(callee->decl)) && + opts_for_fn(caller->decl) != opts_for_fn(callee->decl)) { + e->inline_failed = CIF_OPTIMIZATION_MISMATCH; + inlinable = false; + } + /* If explicit optimize attribute are not used, the mismatch is caused + by different command line options used to build different units. + Do not care about COMDAT functions - those are intended to be + optimized with the optimization flags of module they are used in. + Also do not care about mixing up size/speed optimization when + DECL_DISREGARD_INLINE_LIMITS is set. */ + else if ((callee->merged_comdat && + !lookup_attribute("optimize", DECL_ATTRIBUTES(caller->decl))) || + DECL_DISREGARD_INLINE_LIMITS(callee->decl)) + ; + /* If mismatch is caused by merging two LTO units with different + optimization flags we want to be bit nicer. However never inline + if one of functions is not optimized at all. */ + else if (!opt_for_fn(callee->decl, optimize) || + !opt_for_fn(caller->decl, optimize)) { + e->inline_failed = CIF_OPTIMIZATION_MISMATCH; + inlinable = false; + } + /* If callee is optimized for size and caller is not, allow inlining if + code shrinks or we are in param_max_inline_insns_single limit and + callee is inline (and thus likely an unified comdat). + This will allow caller to run faster. */ + else if (opt_for_fn(callee->decl, optimize_size) > + opt_for_fn(caller->decl, optimize_size)) { + int growth = estimate_edge_growth(e); + if (growth > opt_for_fn(caller->decl, param_max_inline_insns_size) && + (!DECL_DECLARED_INLINE_P(callee->decl) && + (growth >= MAX(inline_insns_single(caller, false, false), + inline_insns_auto(caller, false, false)) && + (edge_ignore_limits_map.find(e) == edge_ignore_limits_map.end() || + !edge_ignore_limits_map[e])))) { + e->inline_failed = CIF_OPTIMIZATION_MISMATCH; inlinable = false; + } } - /* Don't inline a function with a higher optimization level than the - caller. FIXME: this is really just tip of iceberg of handling - optimization attribute. */ - else if (caller_tree != callee_tree) { - bool always_inline = (DECL_DISREGARD_INLINE_LIMITS(callee->decl) && - lookup_attribute("always_inline", DECL_ATTRIBUTES(callee->decl))); - ipa_fn_summary *caller_info = ipa_fn_summaries->get(caller); - ipa_fn_summary *callee_info = ipa_fn_summaries->get(callee); - - /* Until GCC 4.9 we did not check the semantics-altering flags - below and inlined across optimization boundaries. - Enabling checks below breaks several packages by refusing - to inline library always_inline functions. See PR65873. - Disable the check for early inlining for now until better solution - is found. */ - if (always_inline && early) - ; - /* There are some options that change IL semantics which means - we cannot inline in these cases for correctness reason. - Not even for always_inline declared functions. */ - else if (check_match(flag_wrapv) || check_match(flag_trapv) || check_match(flag_pcc_struct_return) || - check_maybe_down(optimize_debug) - /* When caller or callee does FP math, be sure FP codegen flags - compatible. */ - || ((caller_info->fp_expressions && callee_info->fp_expressions) && - (check_maybe_up(flag_rounding_math) || check_maybe_up(flag_trapping_math) || - check_maybe_down(flag_unsafe_math_optimizations) || - check_maybe_down(flag_finite_math_only) || check_maybe_up(flag_signaling_nans) || - check_maybe_down(flag_cx_limited_range) || check_maybe_up(flag_signed_zeros) || - check_maybe_down(flag_associative_math) || check_maybe_down(flag_reciprocal_math) || - check_maybe_down(flag_fp_int_builtin_inexact) - /* Strictly speaking only when the callee contains function - calls that may end up setting errno. */ - || check_maybe_up(flag_errno_math))) - /* We do not want to make code compiled with exceptions to be - brought into a non-EH function unless we know that the callee - does not throw. - This is tracked by DECL_FUNCTION_PERSONALITY. */ - || (check_maybe_up(flag_non_call_exceptions) && DECL_FUNCTION_PERSONALITY(callee->decl)) || - (check_maybe_up(flag_exceptions) && DECL_FUNCTION_PERSONALITY(callee->decl)) - /* When devirtualization is disabled for callee, it is not safe - to inline it as we possibly mangled the type info. - Allow early inlining of always inlines. */ - || (!early && check_maybe_down(flag_devirtualize))) { - e->inline_failed = CIF_OPTIMIZATION_MISMATCH; - inlinable = false; - } - /* gcc.dg/pr43564.c. Apply user-forced inline even at -O0. */ - else if (always_inline) - ; - /* When user added an attribute to the callee honor it. */ - else if (lookup_attribute("optimize", DECL_ATTRIBUTES(callee->decl)) && - opts_for_fn(caller->decl) != opts_for_fn(callee->decl)) { - e->inline_failed = CIF_OPTIMIZATION_MISMATCH; - inlinable = false; - } - /* If explicit optimize attribute are not used, the mismatch is caused - by different command line options used to build different units. - Do not care about COMDAT functions - those are intended to be - optimized with the optimization flags of module they are used in. - Also do not care about mixing up size/speed optimization when - DECL_DISREGARD_INLINE_LIMITS is set. */ - else if ((callee->merged_comdat && !lookup_attribute("optimize", DECL_ATTRIBUTES(caller->decl))) || - DECL_DISREGARD_INLINE_LIMITS(callee->decl)) - ; - /* If mismatch is caused by merging two LTO units with different - optimization flags we want to be bit nicer. However never inline - if one of functions is not optimized at all. */ - else if (!opt_for_fn(callee->decl, optimize) || !opt_for_fn(caller->decl, optimize)) { - e->inline_failed = CIF_OPTIMIZATION_MISMATCH; - inlinable = false; - } - /* If callee is optimized for size and caller is not, allow inlining if - code shrinks or we are in param_max_inline_insns_single limit and - callee is inline (and thus likely an unified comdat). - This will allow caller to run faster. */ - else if (opt_for_fn(callee->decl, optimize_size) > opt_for_fn(caller->decl, optimize_size)) { - int growth = estimate_edge_growth(e); - if (growth > opt_for_fn(caller->decl, param_max_inline_insns_size) && - (!DECL_DECLARED_INLINE_P(callee->decl) && - (growth >= - MAX(inline_insns_single(caller, false, false), inline_insns_auto(caller, false, false)) && - (edge_ignore_limits_map.find(e) == edge_ignore_limits_map.end() || - !edge_ignore_limits_map[e])))) { - e->inline_failed = CIF_OPTIMIZATION_MISMATCH; - inlinable = false; - } - } - /* If callee is more aggressively optimized for performance than caller, - we generally want to inline only cheap (runtime wise) functions. */ - else if (opt_for_fn(callee->decl, optimize_size) < opt_for_fn(caller->decl, optimize_size) || - (opt_for_fn(callee->decl, optimize) > opt_for_fn(caller->decl, optimize))) { - if (estimate_edge_time(e) >= 20 + ipa_call_summaries->get(e)->call_stmt_time) { - e->inline_failed = CIF_OPTIMIZATION_MISMATCH; - inlinable = false; - } - } + /* If callee is more aggressively optimized for performance than caller, + we generally want to inline only cheap (runtime wise) functions. */ + else if (opt_for_fn(callee->decl, optimize_size) < + opt_for_fn(caller->decl, optimize_size) || + (opt_for_fn(callee->decl, optimize) > + opt_for_fn(caller->decl, optimize))) { + if (estimate_edge_time(e) >= + 20 + ipa_call_summaries->get(e)->call_stmt_time) { + e->inline_failed = CIF_OPTIMIZATION_MISMATCH; + inlinable = false; + } } + } - if (!inlinable && report) - report_inline_failed_reason(e); - return inlinable; + if (!inlinable && report) report_inline_failed_reason(e); + return inlinable; } /* Return true if the edge E is inlinable during early inlining. */ -static bool can_early_inline_edge_p(struct cgraph_edge *e) -{ - cgraph_node *caller = (e->caller->inlined_to ? e->caller->inlined_to : e->caller); - struct cgraph_node *callee = e->callee->ultimate_alias_target(); - /* Early inliner might get called at WPA stage when IPA pass adds new - function. In this case we cannot really do any of early inlining - because function bodies are missing. */ - if (cgraph_inline_failed_type(e->inline_failed) == CIF_FINAL_ERROR) - return false; - if (!gimple_has_body_p(callee->decl)) { - e->inline_failed = CIF_BODY_NOT_AVAILABLE; - return false; - } - /* In early inliner some of callees may not be in SSA form yet - (i.e. the callgraph is cyclic and we did not process - the callee by early inliner, yet). We don't have CIF code for this - case; later we will re-do the decision in the real inliner. */ - if (!gimple_in_ssa_p(DECL_STRUCT_FUNCTION(e->caller->decl)) || - !gimple_in_ssa_p(DECL_STRUCT_FUNCTION(callee->decl))) { - if (dump_enabled_p()) - dump_printf_loc(MSG_MISSED_OPTIMIZATION, e->call_stmt, " edge not inlinable: not in SSA form\n"); - return false; - } else if (profile_arc_flag && - ((lookup_attribute("no_profile_instrument_function", DECL_ATTRIBUTES(caller->decl)) == NULL_TREE) != - (lookup_attribute("no_profile_instrument_function", DECL_ATTRIBUTES(callee->decl)) == NULL_TREE))) - return false; - - if (!can_inline_edge_p(e, true, true) || !can_inline_edge_by_limits_p(e, true, false, true)) - return false; - return true; +static bool can_early_inline_edge_p(struct cgraph_edge *e) { + cgraph_node *caller = + (e->caller->inlined_to ? e->caller->inlined_to : e->caller); + struct cgraph_node *callee = e->callee->ultimate_alias_target(); + /* Early inliner might get called at WPA stage when IPA pass adds new + function. In this case we cannot really do any of early inlining + because function bodies are missing. */ + if (cgraph_inline_failed_type(e->inline_failed) == CIF_FINAL_ERROR) + return false; + if (!gimple_has_body_p(callee->decl)) { + e->inline_failed = CIF_BODY_NOT_AVAILABLE; + return false; + } + /* In early inliner some of callees may not be in SSA form yet + (i.e. the callgraph is cyclic and we did not process + the callee by early inliner, yet). We don't have CIF code for this + case; later we will re-do the decision in the real inliner. */ + if (!gimple_in_ssa_p(DECL_STRUCT_FUNCTION(e->caller->decl)) || + !gimple_in_ssa_p(DECL_STRUCT_FUNCTION(callee->decl))) { + if (dump_enabled_p()) + dump_printf_loc(MSG_MISSED_OPTIMIZATION, e->call_stmt, + " edge not inlinable: not in SSA form\n"); + return false; + } else if (profile_arc_flag && + ((lookup_attribute("no_profile_instrument_function", + DECL_ATTRIBUTES(caller->decl)) == NULL_TREE) != + (lookup_attribute("no_profile_instrument_function", + DECL_ATTRIBUTES(callee->decl)) == NULL_TREE))) + return false; + + if (!can_inline_edge_p(e, true, true) || + !can_inline_edge_by_limits_p(e, true, false, true)) + return false; + return true; } /* Return number of calls in N. Ignore cheap builtins. */ -static int num_calls(struct cgraph_node *n) -{ - struct cgraph_edge *e; - int num = 0; +static int num_calls(struct cgraph_node *n) { + struct cgraph_edge *e; + int num = 0; - for (e = n->callees; e; e = e->next_callee) - if (!is_inexpensive_builtin(e->callee->decl)) - num++; - return num; + for (e = n->callees; e; e = e->next_callee) + if (!is_inexpensive_builtin(e->callee->decl)) num++; + return num; } /* Compute time of the edge->caller + edge->callee execution when inlining does not happen. */ -inline sreal compute_uninlined_call_time(struct cgraph_edge *edge, sreal uninlined_call_time, sreal freq) -{ - cgraph_node *caller = (edge->caller->inlined_to ? edge->caller->inlined_to : edge->caller); +inline sreal compute_uninlined_call_time(struct cgraph_edge *edge, + sreal uninlined_call_time, + sreal freq) { + cgraph_node *caller = + (edge->caller->inlined_to ? edge->caller->inlined_to : edge->caller); - if (freq > 0) - uninlined_call_time *= freq; - else - uninlined_call_time = uninlined_call_time >> 11; + if (freq > 0) + uninlined_call_time *= freq; + else + uninlined_call_time = uninlined_call_time >> 11; - sreal caller_time = ipa_fn_summaries->get(caller)->time; - return uninlined_call_time + caller_time; + sreal caller_time = ipa_fn_summaries->get(caller)->time; + return uninlined_call_time + caller_time; } /* Same as compute_uinlined_call_time but compute time when inlining does happen. */ -inline sreal compute_inlined_call_time(struct cgraph_edge *edge, sreal time, sreal freq) -{ - cgraph_node *caller = (edge->caller->inlined_to ? edge->caller->inlined_to : edge->caller); - sreal caller_time = ipa_fn_summaries->get(caller)->time; - - if (freq > 0) - time *= freq; - else - time = time >> 11; - - /* This calculation should match one in ipa-inline-analysis.cc - (estimate_edge_size_and_time). */ - time -= (sreal)ipa_call_summaries->get(edge)->call_stmt_time * freq; - time += caller_time; - if (time <= 0) - time = ((sreal)1) >> 8; - gcc_checking_assert(time >= 0); - return time; +inline sreal compute_inlined_call_time(struct cgraph_edge *edge, sreal time, + sreal freq) { + cgraph_node *caller = + (edge->caller->inlined_to ? edge->caller->inlined_to : edge->caller); + sreal caller_time = ipa_fn_summaries->get(caller)->time; + + if (freq > 0) + time *= freq; + else + time = time >> 11; + + /* This calculation should match one in ipa-inline-analysis.cc + (estimate_edge_size_and_time). */ + time -= (sreal)ipa_call_summaries->get(edge)->call_stmt_time * freq; + time += caller_time; + if (time <= 0) time = ((sreal)1) >> 8; + gcc_checking_assert(time >= 0); + return time; } /* Determine time saved by inlining EDGE of frequency FREQ where callee's runtime w/o inlining is UNINLINED_TYPE and with inlined is INLINED_TYPE. */ -inline sreal inlining_speedup(struct cgraph_edge *edge, sreal freq, sreal uninlined_time, sreal inlined_time) -{ - sreal speedup = uninlined_time - inlined_time; - /* Handling of call_time should match one in ipa-inline-fnsummary.c - (estimate_edge_size_and_time). */ - sreal call_time = ipa_call_summaries->get(edge)->call_stmt_time; - - if (freq > 0) { - speedup = (speedup + call_time); - if (freq != 1) - speedup = speedup * freq; - } else if (freq == 0) - speedup = speedup >> 11; - gcc_checking_assert(speedup >= 0); - return speedup; +inline sreal inlining_speedup(struct cgraph_edge *edge, sreal freq, + sreal uninlined_time, sreal inlined_time) { + sreal speedup = uninlined_time - inlined_time; + /* Handling of call_time should match one in ipa-inline-fnsummary.c + (estimate_edge_size_and_time). */ + sreal call_time = ipa_call_summaries->get(edge)->call_stmt_time; + + if (freq > 0) { + speedup = (speedup + call_time); + if (freq != 1) speedup = speedup * freq; + } else if (freq == 0) + speedup = speedup >> 11; + gcc_checking_assert(speedup >= 0); + return speedup; } /* Return true if the speedup for inlining E is bigger than param_inline_min_speedup. */ -static bool big_speedup_p(struct cgraph_edge *e) -{ - sreal unspec_time; - sreal spec_time = estimate_edge_time(e, &unspec_time); - sreal freq = e->sreal_frequency(); - sreal time = compute_uninlined_call_time(e, unspec_time, freq); - sreal inlined_time = compute_inlined_call_time(e, spec_time, freq); - cgraph_node *caller = (e->caller->inlined_to ? e->caller->inlined_to : e->caller); - int limit = opt_for_fn(caller->decl, param_inline_min_speedup); - - if ((time - inlined_time) * 100 > time * limit) - return true; - return false; +static bool big_speedup_p(struct cgraph_edge *e) { + sreal unspec_time; + sreal spec_time = estimate_edge_time(e, &unspec_time); + sreal freq = e->sreal_frequency(); + sreal time = compute_uninlined_call_time(e, unspec_time, freq); + sreal inlined_time = compute_inlined_call_time(e, spec_time, freq); + cgraph_node *caller = + (e->caller->inlined_to ? e->caller->inlined_to : e->caller); + int limit = opt_for_fn(caller->decl, param_inline_min_speedup); + + if ((time - inlined_time) * 100 > time * limit) return true; + return false; } /* Return true if we are interested in inlining small function. When REPORT is true, report reason to dump file. */ -static bool want_inline_small_function_p(struct cgraph_edge *e, bool report) -{ - bool want_inline = true; - struct cgraph_node *callee = e->callee->ultimate_alias_target(); - cgraph_node *to = (e->caller->inlined_to ? e->caller->inlined_to : e->caller); - - /* Allow this function to be called before can_inline_edge_p, - since it's usually cheaper. */ - if (cgraph_inline_failed_type(e->inline_failed) == CIF_FINAL_ERROR) - want_inline = false; - else if (DECL_DISREGARD_INLINE_LIMITS(callee->decl)) - ; - else if (!DECL_DECLARED_INLINE_P(callee->decl) && !opt_for_fn(e->caller->decl, flag_inline_small_functions)) { - e->inline_failed = CIF_FUNCTION_NOT_INLINE_CANDIDATE; +static bool want_inline_small_function_p(struct cgraph_edge *e, bool report) { + bool want_inline = true; + struct cgraph_node *callee = e->callee->ultimate_alias_target(); + cgraph_node *to = (e->caller->inlined_to ? e->caller->inlined_to : e->caller); + + /* Allow this function to be called before can_inline_edge_p, + since it's usually cheaper. */ + if (cgraph_inline_failed_type(e->inline_failed) == CIF_FINAL_ERROR) + want_inline = false; + else if (DECL_DISREGARD_INLINE_LIMITS(callee->decl)) + ; + else if (!DECL_DECLARED_INLINE_P(callee->decl) && + !opt_for_fn(e->caller->decl, flag_inline_small_functions)) { + e->inline_failed = CIF_FUNCTION_NOT_INLINE_CANDIDATE; + want_inline = false; + } + /* Do fast and conservative check if the function can be good + inline candidate. */ + else if ((!DECL_DECLARED_INLINE_P(callee->decl) && + (!e->count.ipa().initialized_p() || !e->maybe_hot_p())) && + (ipa_fn_summaries->get(callee)->min_size - + ipa_call_summaries->get(e)->call_stmt_size > + inline_insns_auto(e->caller, true, true) && + (edge_ignore_limits_map.find(e) == edge_ignore_limits_map.end() || + !edge_ignore_limits_map[e]))) { + e->inline_failed = CIF_MAX_INLINE_INSNS_AUTO_LIMIT; + want_inline = false; + } else if ((DECL_DECLARED_INLINE_P(callee->decl) || + e->count.ipa().nonzero_p()) && + (ipa_fn_summaries->get(callee)->min_size - + ipa_call_summaries->get(e)->call_stmt_size > + inline_insns_single(e->caller, true, true))) { + e->inline_failed = (DECL_DECLARED_INLINE_P(callee->decl) + ? CIF_MAX_INLINE_INSNS_SINGLE_LIMIT + : CIF_MAX_INLINE_INSNS_AUTO_LIMIT); + want_inline = false; + } else { + int growth = estimate_edge_growth(e); + ipa_hints hints = estimate_edge_hints(e); + /* We have two independent groups of hints. If one matches in each + of groups the limits are inreased. If both groups matches, limit + is increased even more. */ + bool apply_hints = + (hints & (INLINE_HINT_indirect_call | INLINE_HINT_known_hot | + INLINE_HINT_loop_iterations | INLINE_HINT_loop_stride)); + bool apply_hints2 = (hints & INLINE_HINT_builtin_constant_p); + + if (growth <= opt_for_fn(to->decl, param_max_inline_insns_size)) + ; + /* Apply param_max_inline_insns_single limit. Do not do so when + hints suggests that inlining given function is very profitable. + Avoid computation of big_speedup_p when not necessary to change + outcome of decision. */ + else if (DECL_DECLARED_INLINE_P(callee->decl) && + (growth >= + inline_insns_single(e->caller, apply_hints, apply_hints2)) && + (apply_hints || apply_hints2 || + growth >= inline_insns_single(e->caller, true, apply_hints2) || + !big_speedup_p(e))) { + e->inline_failed = CIF_MAX_INLINE_INSNS_SINGLE_LIMIT; + want_inline = false; + } else if (!DECL_DECLARED_INLINE_P(callee->decl) && + !opt_for_fn(e->caller->decl, flag_inline_functions) && + growth >= opt_for_fn(to->decl, param_max_inline_insns_small)) { + /* growth_positive_p is expensive, always test it last. */ + if ((growth >= inline_insns_single(e->caller, false, false)) || + growth_positive_p(callee, e, growth)) { + e->inline_failed = CIF_NOT_DECLARED_INLINED; want_inline = false; + } } - /* Do fast and conservative check if the function can be good - inline candidate. */ - else if ((!DECL_DECLARED_INLINE_P(callee->decl) && (!e->count.ipa().initialized_p() || !e->maybe_hot_p())) && - (ipa_fn_summaries->get(callee)->min_size - ipa_call_summaries->get(e)->call_stmt_size > - inline_insns_auto(e->caller, true, true) && - (edge_ignore_limits_map.find(e) == edge_ignore_limits_map.end() || !edge_ignore_limits_map[e]))) { + /* Apply param_max_inline_insns_auto limit for functions not declared + inline. Bypass the limit when speedup seems big. */ + else if (!DECL_DECLARED_INLINE_P(callee->decl) && + (growth >= + inline_insns_auto(e->caller, apply_hints, apply_hints2) && + (edge_ignore_limits_map.find(e) == edge_ignore_limits_map.end() || + !edge_ignore_limits_map[e])) && + (apply_hints || apply_hints2 || + (growth >= inline_insns_auto(e->caller, true, apply_hints2) && + (edge_ignore_limits_map.find(e) == + edge_ignore_limits_map.end() || + !edge_ignore_limits_map[e])) || + !big_speedup_p(e))) { + /* growth_positive_p is expensive, always test it last. */ + if ((growth >= inline_insns_single(e->caller, false, false)) || + growth_positive_p(callee, e, growth)) { e->inline_failed = CIF_MAX_INLINE_INSNS_AUTO_LIMIT; want_inline = false; - } else if ((DECL_DECLARED_INLINE_P(callee->decl) || e->count.ipa().nonzero_p()) && - (ipa_fn_summaries->get(callee)->min_size - ipa_call_summaries->get(e)->call_stmt_size > - inline_insns_single(e->caller, true, true))) { - e->inline_failed = (DECL_DECLARED_INLINE_P(callee->decl) ? CIF_MAX_INLINE_INSNS_SINGLE_LIMIT - : CIF_MAX_INLINE_INSNS_AUTO_LIMIT); - want_inline = false; - } else { - int growth = estimate_edge_growth(e); - ipa_hints hints = estimate_edge_hints(e); - /* We have two independent groups of hints. If one matches in each - of groups the limits are inreased. If both groups matches, limit - is increased even more. */ - bool apply_hints = (hints & (INLINE_HINT_indirect_call | INLINE_HINT_known_hot | INLINE_HINT_loop_iterations | - INLINE_HINT_loop_stride)); - bool apply_hints2 = (hints & INLINE_HINT_builtin_constant_p); - - if (growth <= opt_for_fn(to->decl, param_max_inline_insns_size)) - ; - /* Apply param_max_inline_insns_single limit. Do not do so when - hints suggests that inlining given function is very profitable. - Avoid computation of big_speedup_p when not necessary to change - outcome of decision. */ - else if (DECL_DECLARED_INLINE_P(callee->decl) && - (growth >= inline_insns_single(e->caller, apply_hints, apply_hints2)) && - (apply_hints || apply_hints2 || growth >= inline_insns_single(e->caller, true, apply_hints2) || - !big_speedup_p(e))) { - e->inline_failed = CIF_MAX_INLINE_INSNS_SINGLE_LIMIT; - want_inline = false; - } else if (!DECL_DECLARED_INLINE_P(callee->decl) && !opt_for_fn(e->caller->decl, flag_inline_functions) && - growth >= opt_for_fn(to->decl, param_max_inline_insns_small)) { - /* growth_positive_p is expensive, always test it last. */ - if ((growth >= inline_insns_single(e->caller, false, false)) || growth_positive_p(callee, e, growth)) { - e->inline_failed = CIF_NOT_DECLARED_INLINED; - want_inline = false; - } - } - /* Apply param_max_inline_insns_auto limit for functions not declared - inline. Bypass the limit when speedup seems big. */ - else if (!DECL_DECLARED_INLINE_P(callee->decl) && - (growth >= inline_insns_auto(e->caller, apply_hints, apply_hints2) && - (edge_ignore_limits_map.find(e) == edge_ignore_limits_map.end() || !edge_ignore_limits_map[e])) && - (apply_hints || apply_hints2 || - (growth >= inline_insns_auto(e->caller, true, apply_hints2) && - (edge_ignore_limits_map.find(e) == edge_ignore_limits_map.end() || - !edge_ignore_limits_map[e])) || - !big_speedup_p(e))) { - /* growth_positive_p is expensive, always test it last. */ - if ((growth >= inline_insns_single(e->caller, false, false)) || growth_positive_p(callee, e, growth)) { - e->inline_failed = CIF_MAX_INLINE_INSNS_AUTO_LIMIT; - want_inline = false; - } - } - /* If call is cold, do not inline when function body would grow. */ - else if (!e->maybe_hot_p() && - ((growth >= inline_insns_single(e->caller, false, false)) || growth_positive_p(callee, e, growth)) && - !e->count.ipa().to_gcov_type() > param_hot_bb_count_fraction) { - e->inline_failed = CIF_UNLIKELY_CALL; - want_inline = false; - } + } + } + /* If call is cold, do not inline when function body would grow. */ + else if (!e->maybe_hot_p() && + ((growth >= inline_insns_single(e->caller, false, false)) || + growth_positive_p(callee, e, growth)) && + !e->count.ipa().to_gcov_type() > param_hot_bb_count_fraction) { + e->inline_failed = CIF_UNLIKELY_CALL; + want_inline = false; } - if (!want_inline && report) - report_inline_failed_reason(e); - return want_inline; + } + if (!want_inline && report) report_inline_failed_reason(e); + return want_inline; } /* EDGE is self recursive edge. @@ -772,151 +857,148 @@ static bool want_inline_small_function_p(struct cgraph_edge *e, bool report) In both cases we want to be extra selective since inlining the call will just introduce new recursive calls to appear. */ -static bool want_inline_self_recursive_call_p( - struct cgraph_edge *edge, struct cgraph_node *outer_node, bool peeling, int depth) -{ - char const *reason = NULL; - bool want_inline = true; - sreal caller_freq = 1; - int max_depth = opt_for_fn(outer_node->decl, param_max_inline_recursive_depth_auto); - - if (DECL_DECLARED_INLINE_P(edge->caller->decl)) - max_depth = opt_for_fn(outer_node->decl, param_max_inline_recursive_depth); - - if (!edge->maybe_hot_p()) { - reason = "recursive call is cold"; - want_inline = false; - } else if (depth > max_depth) { - reason = "--param max-inline-recursive-depth exceeded."; - want_inline = false; - } else if (outer_node->inlined_to && (caller_freq = outer_node->callers->sreal_frequency()) == 0) { - reason = "caller frequency is 0"; - want_inline = false; - } - - if (!want_inline) - ; - /* Inlining of self recursive function into copy of itself within other - function is transformation similar to loop peeling. - - Peeling is profitable if we can inline enough copies to make probability - of actual call to the self recursive function very small. Be sure that - the probability of recursion is small. - - We ensure that the frequency of recursing is at most 1 - (1/max_depth). - This way the expected number of recursion is at most max_depth. */ - else if (peeling) { - sreal max_prob = (sreal)1 - ((sreal)1 / (sreal)max_depth); - int i; - for (i = 1; i < depth; i++) - max_prob = max_prob * max_prob; - if (edge->sreal_frequency() >= max_prob * caller_freq) { - reason = "frequency of recursive call is too large"; - want_inline = false; - } +static bool want_inline_self_recursive_call_p(struct cgraph_edge *edge, + struct cgraph_node *outer_node, + bool peeling, int depth) { + char const *reason = NULL; + bool want_inline = true; + sreal caller_freq = 1; + int max_depth = + opt_for_fn(outer_node->decl, param_max_inline_recursive_depth_auto); + + if (DECL_DECLARED_INLINE_P(edge->caller->decl)) + max_depth = opt_for_fn(outer_node->decl, param_max_inline_recursive_depth); + + if (!edge->maybe_hot_p()) { + reason = "recursive call is cold"; + want_inline = false; + } else if (depth > max_depth) { + reason = "--param max-inline-recursive-depth exceeded."; + want_inline = false; + } else if (outer_node->inlined_to && + (caller_freq = outer_node->callers->sreal_frequency()) == 0) { + reason = "caller frequency is 0"; + want_inline = false; + } + + if (!want_inline) + ; + /* Inlining of self recursive function into copy of itself within other + function is transformation similar to loop peeling. + + Peeling is profitable if we can inline enough copies to make probability + of actual call to the self recursive function very small. Be sure that + the probability of recursion is small. + + We ensure that the frequency of recursing is at most 1 - (1/max_depth). + This way the expected number of recursion is at most max_depth. */ + else if (peeling) { + sreal max_prob = (sreal)1 - ((sreal)1 / (sreal)max_depth); + int i; + for (i = 1; i < depth; i++) max_prob = max_prob * max_prob; + if (edge->sreal_frequency() >= max_prob * caller_freq) { + reason = "frequency of recursive call is too large"; + want_inline = false; } - /* Recursive inlining, i.e. equivalent of unrolling, is profitable if - recursion depth is large. We reduce function call overhead and increase - chances that things fit in hardware return predictor. - - Recursive inlining might however increase cost of stack frame setup - actually slowing down functions whose recursion tree is wide rather than - deep. - - Deciding reliably on when to do recursive inlining without profile feedback - is tricky. For now we disable recursive inlining when probability of self - recursion is low. - - Recursive inlining of self recursive call within loop also results in - large loop depths that generally optimize badly. We may want to throttle - down inlining in those cases. In particular this seems to happen in one - of libstdc++ rb tree methods. */ - else { - if (edge->sreal_frequency() * 100 <= - caller_freq * opt_for_fn(outer_node->decl, param_min_inline_recursive_probability)) { - reason = "frequency of recursive call is too small"; - want_inline = false; - } + } + /* Recursive inlining, i.e. equivalent of unrolling, is profitable if + recursion depth is large. We reduce function call overhead and increase + chances that things fit in hardware return predictor. + + Recursive inlining might however increase cost of stack frame setup + actually slowing down functions whose recursion tree is wide rather than + deep. + + Deciding reliably on when to do recursive inlining without profile feedback + is tricky. For now we disable recursive inlining when probability of self + recursion is low. + + Recursive inlining of self recursive call within loop also results in + large loop depths that generally optimize badly. We may want to throttle + down inlining in those cases. In particular this seems to happen in one + of libstdc++ rb tree methods. */ + else { + if (edge->sreal_frequency() * 100 <= + caller_freq * opt_for_fn(outer_node->decl, + param_min_inline_recursive_probability)) { + reason = "frequency of recursive call is too small"; + want_inline = false; } - if (!want_inline && dump_enabled_p()) - dump_printf_loc(MSG_MISSED_OPTIMIZATION, edge->call_stmt, " not inlining recursively: %s\n", reason); - return want_inline; + } + if (!want_inline && dump_enabled_p()) + dump_printf_loc(MSG_MISSED_OPTIMIZATION, edge->call_stmt, + " not inlining recursively: %s\n", reason); + return want_inline; } /* Return true when NODE has uninlinable caller; set HAS_HOT_CALL if it has hot call. Worker for cgraph_for_node_and_aliases. */ -static bool check_callers(struct cgraph_node *node, void *has_hot_call) -{ - struct cgraph_edge *e; - for (e = node->callers; e; e = e->next_caller) { - if (!opt_for_fn(e->caller->decl, flag_inline_functions_called_once) || !opt_for_fn(e->caller->decl, optimize)) - return true; - if (!can_inline_edge_p(e, true)) - return true; - if (e->recursive_p()) - return true; - if (!can_inline_edge_by_limits_p(e, true)) - return true; - /* Inlining large functions to large loop depth is often harmful because - of register pressure it implies. */ - if ((int)ipa_call_summaries->get(e)->loop_depth > param_inline_functions_called_once_loop_depth) - return true; - /* Do not produce gigantic functions. */ - if (estimate_size_after_inlining(e->caller->inlined_to ? e->caller->inlined_to : e->caller, e) > - param_inline_functions_called_once_insns) - return true; - if (!(*(bool *)has_hot_call) && e->maybe_hot_p()) - *(bool *)has_hot_call = true; - } - return false; +static bool check_callers(struct cgraph_node *node, void *has_hot_call) { + struct cgraph_edge *e; + for (e = node->callers; e; e = e->next_caller) { + if (!opt_for_fn(e->caller->decl, flag_inline_functions_called_once) || + !opt_for_fn(e->caller->decl, optimize)) + return true; + if (!can_inline_edge_p(e, true)) return true; + if (e->recursive_p()) return true; + if (!can_inline_edge_by_limits_p(e, true)) return true; + /* Inlining large functions to large loop depth is often harmful because + of register pressure it implies. */ + if ((int)ipa_call_summaries->get(e)->loop_depth > + param_inline_functions_called_once_loop_depth) + return true; + /* Do not produce gigantic functions. */ + if (estimate_size_after_inlining( + e->caller->inlined_to ? e->caller->inlined_to : e->caller, e) > + param_inline_functions_called_once_insns) + return true; + if (!(*(bool *)has_hot_call) && e->maybe_hot_p()) + *(bool *)has_hot_call = true; + } + return false; } /* If NODE has a caller, return true. */ -static bool has_caller_p(struct cgraph_node *node, void *data ATTRIBUTE_UNUSED) -{ - if (node->callers) - return true; - return false; +static bool has_caller_p(struct cgraph_node *node, + void *data ATTRIBUTE_UNUSED) { + if (node->callers) return true; + return false; } /* Decide if inlining NODE would reduce unit size by eliminating the offline copy of function. When COLD is true the cold calls are considered, too. */ -static bool want_inline_function_to_all_callers_p(struct cgraph_node *node, bool cold) -{ - bool has_hot_call = false; - - /* Aliases gets inlined along with the function they alias. */ - if (node->alias) - return false; - /* Already inlined? */ - if (node->inlined_to) - return false; - /* Does it have callers? */ - if (!node->call_for_symbol_and_aliases(has_caller_p, NULL, true)) - return false; - /* Inlining into all callers would increase size? */ - if (growth_positive_p(node, NULL, INT_MIN) > 0) - return false; - /* All inlines must be possible. */ - if (node->call_for_symbol_and_aliases(check_callers, &has_hot_call, true)) - return false; - if (!cold && !has_hot_call) - return false; - return true; +static bool want_inline_function_to_all_callers_p(struct cgraph_node *node, + bool cold) { + bool has_hot_call = false; + + /* Aliases gets inlined along with the function they alias. */ + if (node->alias) return false; + /* Already inlined? */ + if (node->inlined_to) return false; + /* Does it have callers? */ + if (!node->call_for_symbol_and_aliases(has_caller_p, NULL, true)) + return false; + /* Inlining into all callers would increase size? */ + if (growth_positive_p(node, NULL, INT_MIN) > 0) return false; + /* All inlines must be possible. */ + if (node->call_for_symbol_and_aliases(check_callers, &has_hot_call, true)) + return false; + if (!cold && !has_hot_call) return false; + return true; } /* Return true if WHERE of SIZE is a possible candidate for wrapper heuristics in estimate_edge_badness. */ -static bool wrapper_heuristics_may_apply(struct cgraph_node *where, int size) -{ - return size < (DECL_DECLARED_INLINE_P(where->decl) ? inline_insns_single(where, false, false) - : inline_insns_auto(where, false, false)); +static bool wrapper_heuristics_may_apply(struct cgraph_node *where, int size) { + return size < (DECL_DECLARED_INLINE_P(where->decl) + ? inline_insns_single(where, false, false) + : inline_insns_auto(where, false, false)); } /* A cost model driving the inlining heuristics in a way so the edges with @@ -925,227 +1007,230 @@ static bool wrapper_heuristics_may_apply(struct cgraph_node *where, int size) metrics may accurately depend on values such as number of inlinable callers of the function or function body size. */ -static sreal edge_badness(struct cgraph_edge *edge, bool dump) -{ - sreal badness; - int growth; - sreal edge_time, unspec_edge_time; - struct cgraph_node *callee = edge->callee->ultimate_alias_target(); - class ipa_fn_summary *callee_info = ipa_fn_summaries->get(callee); - ipa_hints hints; - cgraph_node *caller = (edge->caller->inlined_to ? edge->caller->inlined_to : edge->caller); +static sreal edge_badness(struct cgraph_edge *edge, bool dump) { + sreal badness; + int growth; + sreal edge_time, unspec_edge_time; + struct cgraph_node *callee = edge->callee->ultimate_alias_target(); + class ipa_fn_summary *callee_info = ipa_fn_summaries->get(callee); + ipa_hints hints; + cgraph_node *caller = + (edge->caller->inlined_to ? edge->caller->inlined_to : edge->caller); + + growth = estimate_edge_growth(edge); + edge_time = estimate_edge_time(edge, &unspec_edge_time); + hints = estimate_edge_hints(edge); + gcc_checking_assert(edge_time >= 0); + /* Check that inlined time is better, but tolerate some roundoff issues. + FIXME: When callee profile drops to 0 we account calls more. This + should be fixed by never doing that. */ + gcc_checking_assert((edge_time * 100 - callee_info->time * 101).to_int() <= + 0 || + callee->count.ipa().initialized_p()); + gcc_checking_assert(growth <= ipa_size_summaries->get(callee)->size); + + if (dump) { + fprintf(dump_file, " Badness calculation for %s -> %s\n", + edge->caller->dump_name(), edge->callee->dump_name()); + fprintf(dump_file, " size growth %i, time %f unspec %f ", growth, + edge_time.to_double(), unspec_edge_time.to_double()); + ipa_dump_hints(dump_file, hints); + if (big_speedup_p(edge)) fprintf(dump_file, " big_speedup"); + fprintf(dump_file, "\n"); + } + + /* Always prefer inlining saving code size. */ + if (growth <= 0) { + badness = (sreal)(-SREAL_MIN_SIG + growth) << (SREAL_MAX_EXP / 256); + if (dump) + fprintf(dump_file, " %f: Growth %d <= 0\n", badness.to_double(), + growth); + } + /* Inlining into EXTERNAL functions is not going to change anything unless + they are themselves inlined. */ + else if (DECL_EXTERNAL(caller->decl)) { + if (dump) fprintf(dump_file, " max: function is external\n"); + return sreal::max(); + } + /* When profile is available. Compute badness as: + + time_saved * caller_count + goodness = ------------------------------------------------- + growth_of_caller * overall_growth * combined_size + + badness = - goodness + + Again use negative value to make calls with profile appear hotter + then calls without. + */ + else if (opt_for_fn(caller->decl, flag_guess_branch_prob) || + caller->count.ipa().nonzero_p()) { + sreal numerator, denominator; + int overall_growth; + sreal freq = edge->sreal_frequency(); - growth = estimate_edge_growth(edge); - edge_time = estimate_edge_time(edge, &unspec_edge_time); - hints = estimate_edge_hints(edge); - gcc_checking_assert(edge_time >= 0); - /* Check that inlined time is better, but tolerate some roundoff issues. - FIXME: When callee profile drops to 0 we account calls more. This - should be fixed by never doing that. */ - gcc_checking_assert( - (edge_time * 100 - callee_info->time * 101).to_int() <= 0 || callee->count.ipa().initialized_p()); - gcc_checking_assert(growth <= ipa_size_summaries->get(callee)->size); + numerator = inlining_speedup(edge, freq, unspec_edge_time, edge_time); + if (numerator <= 0) numerator = ((sreal)1 >> 8); + if (caller->count.ipa().nonzero_p()) + numerator *= caller->count.ipa().to_gcov_type(); + else if (caller->count.ipa().initialized_p()) + numerator = numerator >> 11; + denominator = growth; - if (dump) { - fprintf( - dump_file, " Badness calculation for %s -> %s\n", edge->caller->dump_name(), edge->callee->dump_name()); - fprintf(dump_file, - " size growth %i, time %f unspec %f ", - growth, - edge_time.to_double(), - unspec_edge_time.to_double()); - ipa_dump_hints(dump_file, hints); - if (big_speedup_p(edge)) - fprintf(dump_file, " big_speedup"); - fprintf(dump_file, "\n"); - } + overall_growth = callee_info->growth; - /* Always prefer inlining saving code size. */ - if (growth <= 0) { - badness = (sreal)(-SREAL_MIN_SIG + growth) << (SREAL_MAX_EXP / 256); - if (dump) - fprintf(dump_file, " %f: Growth %d <= 0\n", badness.to_double(), growth); - } - /* Inlining into EXTERNAL functions is not going to change anything unless - they are themselves inlined. */ - else if (DECL_EXTERNAL(caller->decl)) { + /* Look for inliner wrappers of the form: + + inline_caller () + { + do_fast_job... + if (need_more_work) + noninline_callee (); + } + Without penalizing this case, we usually inline noninline_callee + into the inline_caller because overall_growth is small preventing + further inlining of inline_caller. + + Penalize only callgraph edges to functions with small overall + growth ... + */ + if (growth > overall_growth + /* ... and having only one caller which is not inlined ... */ + && callee_info->single_caller && + !edge->caller->inlined_to + /* ... and edges executed only conditionally ... */ + && freq < 1 + /* ... consider case where callee is not inline but caller is ... */ + && + ((!DECL_DECLARED_INLINE_P(edge->callee->decl) && + DECL_DECLARED_INLINE_P(caller->decl)) + /* ... or when early optimizers decided to split and edge + frequency still indicates splitting is a win ... */ + || (callee->split_part && !caller->split_part && + freq * 100 < opt_for_fn(caller->decl, + param_partial_inlining_entry_probability) + /* ... and do not overwrite user specified hints. */ + && (!DECL_DECLARED_INLINE_P(edge->callee->decl) || + DECL_DECLARED_INLINE_P(caller->decl))))) { + ipa_fn_summary *caller_info = ipa_fn_summaries->get(caller); + int caller_growth = caller_info->growth; + + /* Only apply the penalty when caller looks like inline candidate, + and it is not called once. */ + if (!caller_info->single_caller && overall_growth < caller_growth && + caller_info->inlinable && + wrapper_heuristics_may_apply(caller, + ipa_size_summaries->get(caller)->size)) { if (dump) - fprintf(dump_file, " max: function is external\n"); - return sreal::max(); + fprintf(dump_file, + " Wrapper penalty. Increasing growth %i to %i\n", + overall_growth, caller_growth); + overall_growth = caller_growth; + } } - /* When profile is available. Compute badness as: - - time_saved * caller_count - goodness = ------------------------------------------------- - growth_of_caller * overall_growth * combined_size - - badness = - goodness - - Again use negative value to make calls with profile appear hotter - then calls without. - */ - else if (opt_for_fn(caller->decl, flag_guess_branch_prob) || caller->count.ipa().nonzero_p()) { - sreal numerator, denominator; - int overall_growth; - sreal freq = edge->sreal_frequency(); - - numerator = inlining_speedup(edge, freq, unspec_edge_time, edge_time); - if (numerator <= 0) - numerator = ((sreal)1 >> 8); - if (caller->count.ipa().nonzero_p()) - numerator *= caller->count.ipa().to_gcov_type(); - else if (caller->count.ipa().initialized_p()) - numerator = numerator >> 11; - denominator = growth; - - overall_growth = callee_info->growth; - - /* Look for inliner wrappers of the form: - - inline_caller () - { - do_fast_job... - if (need_more_work) - noninline_callee (); - } - Without penalizing this case, we usually inline noninline_callee - into the inline_caller because overall_growth is small preventing - further inlining of inline_caller. - - Penalize only callgraph edges to functions with small overall - growth ... - */ - if (growth > overall_growth - /* ... and having only one caller which is not inlined ... */ - && callee_info->single_caller && - !edge->caller->inlined_to - /* ... and edges executed only conditionally ... */ - && freq < 1 - /* ... consider case where callee is not inline but caller is ... */ - && ((!DECL_DECLARED_INLINE_P(edge->callee->decl) && DECL_DECLARED_INLINE_P(caller->decl)) - /* ... or when early optimizers decided to split and edge - frequency still indicates splitting is a win ... */ - || (callee->split_part && !caller->split_part && - freq * 100 < opt_for_fn(caller->decl, param_partial_inlining_entry_probability) - /* ... and do not overwrite user specified hints. */ - && (!DECL_DECLARED_INLINE_P(edge->callee->decl) || DECL_DECLARED_INLINE_P(caller->decl))))) { - ipa_fn_summary *caller_info = ipa_fn_summaries->get(caller); - int caller_growth = caller_info->growth; - - /* Only apply the penalty when caller looks like inline candidate, - and it is not called once. */ - if (!caller_info->single_caller && overall_growth < caller_growth && caller_info->inlinable && - wrapper_heuristics_may_apply(caller, ipa_size_summaries->get(caller)->size)) { - if (dump) - fprintf( - dump_file, " Wrapper penalty. Increasing growth %i to %i\n", overall_growth, caller_growth); - overall_growth = caller_growth; - } - } - if (overall_growth > 0) { - /* Strongly prefer functions with few callers that can be inlined - fully. The square root here leads to smaller binaries at average. - Watch however for extreme cases and return to linear function - when growth is large. */ - if (overall_growth < 256) - overall_growth *= overall_growth; - else - overall_growth += 256 * 256 - 256; - denominator *= overall_growth; - } - denominator *= ipa_size_summaries->get(caller)->size + growth; - - badness = -numerator / denominator; - - if (dump) { - fprintf(dump_file, - " %f: guessed profile. frequency %f, count %" PRId64 " caller count %" PRId64 " time saved %f" - " overall growth %i (current) %i (original)" - " %i (compensated)\n", - badness.to_double(), - freq.to_double(), - edge->count.ipa().initialized_p() ? edge->count.ipa().to_gcov_type() : -1, - caller->count.ipa().initialized_p() ? caller->count.ipa().to_gcov_type() : -1, - inlining_speedup(edge, freq, unspec_edge_time, edge_time).to_double(), - estimate_growth(callee), - callee_info->growth, - overall_growth); - } + if (overall_growth > 0) { + /* Strongly prefer functions with few callers that can be inlined + fully. The square root here leads to smaller binaries at average. + Watch however for extreme cases and return to linear function + when growth is large. */ + if (overall_growth < 256) + overall_growth *= overall_growth; + else + overall_growth += 256 * 256 - 256; + denominator *= overall_growth; } - /* When function local profile is not available or it does not give - useful information (i.e. frequency is zero), base the cost on - loop nest and overall size growth, so we optimize for overall number - of functions fully inlined in program. */ - else { - int nest = MIN(ipa_call_summaries->get(edge)->loop_depth, 8); - badness = growth; + denominator *= ipa_size_summaries->get(caller)->size + growth; - /* Decrease badness if call is nested. */ - if (badness > 0) - badness = badness >> nest; - else - badness = badness << nest; - if (dump) - fprintf(dump_file, " %f: no profile. nest %i\n", badness.to_double(), nest); + badness = -numerator / denominator; + + if (dump) { + fprintf( + dump_file, + " %f: guessed profile. frequency %f, count %" PRId64 + " caller count %" PRId64 + " time saved %f" + " overall growth %i (current) %i (original)" + " %i (compensated)\n", + badness.to_double(), freq.to_double(), + edge->count.ipa().initialized_p() ? edge->count.ipa().to_gcov_type() + : -1, + caller->count.ipa().initialized_p() + ? caller->count.ipa().to_gcov_type() + : -1, + inlining_speedup(edge, freq, unspec_edge_time, edge_time).to_double(), + estimate_growth(callee), callee_info->growth, overall_growth); } - gcc_checking_assert(badness != 0); - - if (edge->recursive_p()) - badness = badness.shift(badness > 0 ? 4 : -4); - if ((hints & (INLINE_HINT_indirect_call | INLINE_HINT_loop_iterations | INLINE_HINT_loop_stride)) || - callee_info->growth <= 0) - badness = badness.shift(badness > 0 ? -2 : 2); - if (hints & INLINE_HINT_builtin_constant_p) - badness = badness.shift(badness > 0 ? -4 : 4); - if (hints & (INLINE_HINT_same_scc)) - badness = badness.shift(badness > 0 ? 3 : -3); - else if (hints & (INLINE_HINT_in_scc)) - badness = badness.shift(badness > 0 ? 2 : -2); - else if (hints & (INLINE_HINT_cross_module)) - badness = badness.shift(badness > 0 ? 1 : -1); - if (DECL_DISREGARD_INLINE_LIMITS(callee->decl)) - badness = badness.shift(badness > 0 ? -4 : 4); - else if ((hints & INLINE_HINT_declared_inline)) - badness = badness.shift(badness > 0 ? -3 : 3); + } + /* When function local profile is not available or it does not give + useful information (i.e. frequency is zero), base the cost on + loop nest and overall size growth, so we optimize for overall number + of functions fully inlined in program. */ + else { + int nest = MIN(ipa_call_summaries->get(edge)->loop_depth, 8); + badness = growth; + + /* Decrease badness if call is nested. */ + if (badness > 0) + badness = badness >> nest; + else + badness = badness << nest; if (dump) - fprintf(dump_file, " Adjusted by hints %f\n", badness.to_double()); - return badness; + fprintf(dump_file, " %f: no profile. nest %i\n", badness.to_double(), + nest); + } + gcc_checking_assert(badness != 0); + + if (edge->recursive_p()) badness = badness.shift(badness > 0 ? 4 : -4); + if ((hints & (INLINE_HINT_indirect_call | INLINE_HINT_loop_iterations | + INLINE_HINT_loop_stride)) || + callee_info->growth <= 0) + badness = badness.shift(badness > 0 ? -2 : 2); + if (hints & INLINE_HINT_builtin_constant_p) + badness = badness.shift(badness > 0 ? -4 : 4); + if (hints & (INLINE_HINT_same_scc)) + badness = badness.shift(badness > 0 ? 3 : -3); + else if (hints & (INLINE_HINT_in_scc)) + badness = badness.shift(badness > 0 ? 2 : -2); + else if (hints & (INLINE_HINT_cross_module)) + badness = badness.shift(badness > 0 ? 1 : -1); + if (DECL_DISREGARD_INLINE_LIMITS(callee->decl)) + badness = badness.shift(badness > 0 ? -4 : 4); + else if ((hints & INLINE_HINT_declared_inline)) + badness = badness.shift(badness > 0 ? -3 : 3); + if (dump) + fprintf(dump_file, " Adjusted by hints %f\n", badness.to_double()); + return badness; } /* Recompute badness of EDGE and update its key in HEAP if needed. */ -static inline void update_edge_key(edge_heap_t *heap, struct cgraph_edge *edge) -{ - sreal badness = edge_badness(edge, false); - if (edge->aux) { - edge_heap_node_t *n = (edge_heap_node_t *)edge->aux; - gcc_checking_assert(n->get_data() == edge); - - /* fibonacci_heap::replace_key does busy updating of the - heap that is unnecessarily expensive. - We do lazy increases: after extracting minimum if the key - turns out to be out of date, it is re-inserted into heap - with correct value. */ - if (badness < n->get_key()) { - if (dump_file && (dump_flags & TDF_DETAILS)) { - fprintf(dump_file, - " decreasing badness %s -> %s, %f to %f\n", - edge->caller->dump_name(), - edge->callee->dump_name(), - n->get_key().to_double(), - badness.to_double()); - } - heap->decrease_key(n, badness); - } - } else { - if (dump_file && (dump_flags & TDF_DETAILS)) { - fprintf(dump_file, - " enqueuing call %s -> %s, badness %f\n", - edge->caller->dump_name(), - edge->callee->dump_name(), - badness.to_double()); - } - edge->aux = heap->insert(badness, edge); +static inline void update_edge_key(edge_heap_t *heap, + struct cgraph_edge *edge) { + sreal badness = edge_badness(edge, false); + if (edge->aux) { + edge_heap_node_t *n = (edge_heap_node_t *)edge->aux; + gcc_checking_assert(n->get_data() == edge); + + /* fibonacci_heap::replace_key does busy updating of the + heap that is unnecessarily expensive. + We do lazy increases: after extracting minimum if the key + turns out to be out of date, it is re-inserted into heap + with correct value. */ + if (badness < n->get_key()) { + if (dump_file && (dump_flags & TDF_DETAILS)) { + fprintf(dump_file, " decreasing badness %s -> %s, %f to %f\n", + edge->caller->dump_name(), edge->callee->dump_name(), + n->get_key().to_double(), badness.to_double()); + } + heap->decrease_key(n, badness); + } + } else { + if (dump_file && (dump_flags & TDF_DETAILS)) { + fprintf(dump_file, " enqueuing call %s -> %s, badness %f\n", + edge->caller->dump_name(), edge->callee->dump_name(), + badness.to_double()); } + edge->aux = heap->insert(badness, edge); + } } /* NODE was inlined. @@ -1153,46 +1238,41 @@ static inline void update_edge_key(edge_heap_t *heap, struct cgraph_edge *edge) size estimates change. Similarly callees needs reset because better context may be known. */ -static void reset_edge_caches(struct cgraph_node *node) -{ - struct cgraph_edge *edge; - struct cgraph_edge *e = node->callees; - struct cgraph_node *where = node; - struct ipa_ref *ref; - - if (where->inlined_to) - where = where->inlined_to; - - reset_node_cache(where); - - if (edge_growth_cache != NULL) - for (edge = where->callers; edge; edge = edge->next_caller) - if (edge->inline_failed) - edge_growth_cache->remove(edge); - - FOR_EACH_ALIAS(where, ref) - reset_edge_caches(dyn_cast(ref->referring)); - - if (!e) - return; - - while (true) - if (!e->inline_failed && e->callee->callees) - e = e->callee->callees; - else { - if (edge_growth_cache != NULL && e->inline_failed) - edge_growth_cache->remove(e); - if (e->next_callee) - e = e->next_callee; - else { - do { - if (e->caller == node) - return; - e = e->caller->callers; - } while (!e->next_callee); - e = e->next_callee; - } - } +static void reset_edge_caches(struct cgraph_node *node) { + struct cgraph_edge *edge; + struct cgraph_edge *e = node->callees; + struct cgraph_node *where = node; + struct ipa_ref *ref; + + if (where->inlined_to) where = where->inlined_to; + + reset_node_cache(where); + + if (edge_growth_cache != NULL) + for (edge = where->callers; edge; edge = edge->next_caller) + if (edge->inline_failed) edge_growth_cache->remove(edge); + + FOR_EACH_ALIAS(where, ref) + reset_edge_caches(dyn_cast(ref->referring)); + + if (!e) return; + + while (true) + if (!e->inline_failed && e->callee->callees) + e = e->callee->callees; + else { + if (edge_growth_cache != NULL && e->inline_failed) + edge_growth_cache->remove(e); + if (e->next_callee) + e = e->next_callee; + else { + do { + if (e->caller == node) return; + e = e->caller->callers; + } while (!e->next_callee); + e = e->next_callee; + } + } } /* Recompute HEAP nodes for each of caller of NODE. @@ -1200,37 +1280,37 @@ static void reset_edge_caches(struct cgraph_node *node) When CHECK_INLINABLITY_FOR is set, re-check for specified edge that it is inlinable. Otherwise check all edges. */ -static void update_caller_keys( - edge_heap_t *heap, struct cgraph_node *node, bitmap updated_nodes, struct cgraph_edge *check_inlinablity_for) -{ - struct cgraph_edge *edge; - struct ipa_ref *ref; - - if ((!node->alias && !ipa_fn_summaries->get(node)->inlinable) || node->inlined_to) - return; - if (!bitmap_set_bit(updated_nodes, node->get_uid())) - return; - - FOR_EACH_ALIAS(node, ref) - { - struct cgraph_node *alias = dyn_cast(ref->referring); - update_caller_keys(heap, alias, updated_nodes, check_inlinablity_for); - } +static void update_caller_keys(edge_heap_t *heap, struct cgraph_node *node, + bitmap updated_nodes, + struct cgraph_edge *check_inlinablity_for) { + struct cgraph_edge *edge; + struct ipa_ref *ref; - for (edge = node->callers; edge; edge = edge->next_caller) - if (edge->inline_failed) { - if (!check_inlinablity_for || check_inlinablity_for == edge) { - if (can_inline_edge_p(edge, false) && want_inline_small_function_p(edge, false) && - can_inline_edge_by_limits_p(edge, false)) - update_edge_key(heap, edge); - else if (edge->aux) { - report_inline_failed_reason(edge); - heap->delete_node((edge_heap_node_t *)edge->aux); - edge->aux = NULL; - } - } else if (edge->aux) - update_edge_key(heap, edge); + if ((!node->alias && !ipa_fn_summaries->get(node)->inlinable) || + node->inlined_to) + return; + if (!bitmap_set_bit(updated_nodes, node->get_uid())) return; + + FOR_EACH_ALIAS(node, ref) { + struct cgraph_node *alias = dyn_cast(ref->referring); + update_caller_keys(heap, alias, updated_nodes, check_inlinablity_for); + } + + for (edge = node->callers; edge; edge = edge->next_caller) + if (edge->inline_failed) { + if (!check_inlinablity_for || check_inlinablity_for == edge) { + if (can_inline_edge_p(edge, false) && + want_inline_small_function_p(edge, false) && + can_inline_edge_by_limits_p(edge, false)) + update_edge_key(heap, edge); + else if (edge->aux) { + report_inline_failed_reason(edge); + heap->delete_node((edge_heap_node_t *)edge->aux); + edge->aux = NULL; } + } else if (edge->aux) + update_edge_key(heap, edge); + } } /* Recompute HEAP nodes for each uninlined call in NODE @@ -1242,80 +1322,84 @@ static void update_caller_keys( (we introduced new call site) and thus all we need is to insert newly created edges into heap. */ -static void update_callee_keys( - edge_heap_t *heap, struct cgraph_node *node, struct cgraph_node *update_since, bitmap updated_nodes) -{ - struct cgraph_edge *e = node->callees; - bool check_inlinability = update_since == node; - - if (!e) - return; - while (true) - if (!e->inline_failed && e->callee->callees) { - if (e->callee == update_since) - check_inlinability = true; - e = e->callee->callees; - } else { - enum availability avail; - struct cgraph_node *callee; - if (!check_inlinability) { - if (e->aux && - !bitmap_bit_p(updated_nodes, e->callee->ultimate_alias_target(&avail, e->caller)->get_uid())) - update_edge_key(heap, e); - } - /* We do not reset callee growth cache here. Since we added a new call, - growth should have just increased and consequently badness metric - don't need updating. */ - else if (e->inline_failed && (callee = e->callee->ultimate_alias_target(&avail, e->caller)) && - avail >= AVAIL_AVAILABLE && ipa_fn_summaries->get(callee) != NULL && - ipa_fn_summaries->get(callee)->inlinable && !bitmap_bit_p(updated_nodes, callee->get_uid())) { - if (can_inline_edge_p(e, false) && want_inline_small_function_p(e, false) && - can_inline_edge_by_limits_p(e, false)) { - gcc_checking_assert(check_inlinability || can_inline_edge_p(e, false)); - gcc_checking_assert(check_inlinability || e->aux); - update_edge_key(heap, e); - } else if (e->aux) { - report_inline_failed_reason(e); - heap->delete_node((edge_heap_node_t *)e->aux); - e->aux = NULL; - } - } - /* In case we redirected to unreachable node we only need to remove the - fibheap entry. */ - else if (e->aux) { - heap->delete_node((edge_heap_node_t *)e->aux); - e->aux = NULL; - } - if (e->next_callee) - e = e->next_callee; - else { - do { - if (e->caller == node) - return; - if (e->caller == update_since) - check_inlinability = false; - e = e->caller->callers; - } while (!e->next_callee); - e = e->next_callee; - } +static void update_callee_keys(edge_heap_t *heap, struct cgraph_node *node, + struct cgraph_node *update_since, + bitmap updated_nodes) { + struct cgraph_edge *e = node->callees; + bool check_inlinability = update_since == node; + + if (!e) return; + while (true) + if (!e->inline_failed && e->callee->callees) { + if (e->callee == update_since) check_inlinability = true; + e = e->callee->callees; + } else { + enum availability avail; + struct cgraph_node *callee; + if (!check_inlinability) { + if (e->aux && + !bitmap_bit_p( + updated_nodes, + e->callee->ultimate_alias_target(&avail, e->caller)->get_uid())) + update_edge_key(heap, e); + } + /* We do not reset callee growth cache here. Since we added a new call, + growth should have just increased and consequently badness metric + don't need updating. */ + else if (e->inline_failed && + (callee = e->callee->ultimate_alias_target(&avail, e->caller)) && + avail >= AVAIL_AVAILABLE && + ipa_fn_summaries->get(callee) != NULL && + ipa_fn_summaries->get(callee)->inlinable && + !bitmap_bit_p(updated_nodes, callee->get_uid())) { + if (can_inline_edge_p(e, false) && + want_inline_small_function_p(e, false) && + can_inline_edge_by_limits_p(e, false)) { + gcc_checking_assert(check_inlinability || + can_inline_edge_p(e, false)); + gcc_checking_assert(check_inlinability || e->aux); + update_edge_key(heap, e); + } else if (e->aux) { + report_inline_failed_reason(e); + heap->delete_node((edge_heap_node_t *)e->aux); + e->aux = NULL; } + } + /* In case we redirected to unreachable node we only need to remove the + fibheap entry. */ + else if (e->aux) { + heap->delete_node((edge_heap_node_t *)e->aux); + e->aux = NULL; + } + if (e->next_callee) + e = e->next_callee; + else { + do { + if (e->caller == node) return; + if (e->caller == update_since) check_inlinability = false; + e = e->caller->callers; + } while (!e->next_callee); + e = e->next_callee; + } + } } /* Enqueue all recursive calls from NODE into priority queue depending on how likely we want to recursively inline the call. */ -static void lookup_recursive_calls(struct cgraph_node *node, struct cgraph_node *where, edge_heap_t *heap) -{ - struct cgraph_edge *e; - enum availability avail; - - for (e = where->callees; e; e = e->next_callee) - if (e->callee == node || - (e->callee->ultimate_alias_target(&avail, e->caller) == node && avail > AVAIL_INTERPOSABLE)) - heap->insert(-e->sreal_frequency(), e); - for (e = where->callees; e; e = e->next_callee) - if (!e->inline_failed) - lookup_recursive_calls(node, e->callee, heap); +static void lookup_recursive_calls(struct cgraph_node *node, + struct cgraph_node *where, + edge_heap_t *heap) { + struct cgraph_edge *e; + enum availability avail; + + for (e = where->callees; e; e = e->next_callee) + if (e->callee == node || + (e->callee->ultimate_alias_target(&avail, e->caller) == node && + avail > AVAIL_INTERPOSABLE)) + heap->insert(-e->sreal_frequency(), e); + for (e = where->callees; e; e = e->next_callee) + if (!e->inline_failed) lookup_recursive_calls(node, e->callee, heap); } /* Decide on recursive inlining: in the case function has recursive calls, @@ -1323,257 +1407,245 @@ static void lookup_recursive_calls(struct cgraph_node *node, struct cgraph_node are discovered in the process, add them to *NEW_EDGES, unless NEW_EDGES is NULL. */ -static bool recursive_inlining(struct cgraph_edge *edge, vec *new_edges) -{ - cgraph_node *to = (edge->caller->inlined_to ? edge->caller->inlined_to : edge->caller); - int limit = opt_for_fn(to->decl, param_max_inline_insns_recursive_auto); - edge_heap_t heap(sreal::min()); - struct cgraph_node *node; - struct cgraph_edge *e; - struct cgraph_node *master_clone = NULL, *next; - int depth = 0; - int n = 0; - - node = edge->caller; - if (node->inlined_to) - node = node->inlined_to; - - if (DECL_DECLARED_INLINE_P(node->decl)) - limit = opt_for_fn(to->decl, param_max_inline_insns_recursive); - - /* Make sure that function is small enough to be considered for inlining. */ - if (estimate_size_after_inlining(node, edge) >= limit) - return false; - lookup_recursive_calls(node, node, &heap); - if (heap.empty()) - return false; - - if (dump_file) - fprintf(dump_file, " Performing recursive inlining on %s\n", node->dump_name()); - - /* Do the inlining and update list of recursive call during process. */ - while (!heap.empty()) { - struct cgraph_edge *curr = heap.extract_min(); - struct cgraph_node *cnode, *dest = curr->callee; - - if (!can_inline_edge_p(curr, true) || !can_inline_edge_by_limits_p(curr, true)) - continue; - - /* MASTER_CLONE is produced in the case we already started modified - the function. Be sure to redirect edge to the original body before - estimating growths otherwise we will be seeing growths after inlining - the already modified body. */ - if (master_clone) { - curr->redirect_callee(master_clone); - if (edge_growth_cache != NULL) - edge_growth_cache->remove(curr); - } - - if (estimate_size_after_inlining(node, curr) > limit) { - curr->redirect_callee(dest); - if (edge_growth_cache != NULL) - edge_growth_cache->remove(curr); - break; - } - - depth = 1; - for (cnode = curr->caller; cnode->inlined_to; cnode = cnode->callers->caller) - if (node->decl == curr->callee->ultimate_alias_target()->decl) - depth++; - - if (!want_inline_self_recursive_call_p(curr, node, false, depth)) { - curr->redirect_callee(dest); - if (edge_growth_cache != NULL) - edge_growth_cache->remove(curr); - continue; - } - - if (dump_file) { - fprintf(dump_file, " Inlining call of depth %i", depth); - if (node->count.nonzero_p() && curr->count.initialized_p()) { - fprintf(dump_file, - " called approx. %.2f times per call", - (double)curr->count.to_gcov_type() / node->count.to_gcov_type()); - } - fprintf(dump_file, "\n"); - } - if (!master_clone) { - /* We need original clone to copy around. */ - master_clone = node->create_clone(node->decl, node->count, false, vNULL, true, NULL, NULL); - for (e = master_clone->callees; e; e = e->next_callee) - if (!e->inline_failed) - clone_inlined_nodes(e, true, false, NULL); - curr->redirect_callee(master_clone); - if (edge_growth_cache != NULL) - edge_growth_cache->remove(curr); - } +static bool recursive_inlining(struct cgraph_edge *edge, + vec *new_edges) { + cgraph_node *to = + (edge->caller->inlined_to ? edge->caller->inlined_to : edge->caller); + int limit = opt_for_fn(to->decl, param_max_inline_insns_recursive_auto); + edge_heap_t heap(sreal::min()); + struct cgraph_node *node; + struct cgraph_edge *e; + struct cgraph_node *master_clone = NULL, *next; + int depth = 0; + int n = 0; + + node = edge->caller; + if (node->inlined_to) node = node->inlined_to; + + if (DECL_DECLARED_INLINE_P(node->decl)) + limit = opt_for_fn(to->decl, param_max_inline_insns_recursive); + + /* Make sure that function is small enough to be considered for inlining. */ + if (estimate_size_after_inlining(node, edge) >= limit) return false; + lookup_recursive_calls(node, node, &heap); + if (heap.empty()) return false; + + if (dump_file) + fprintf(dump_file, " Performing recursive inlining on %s\n", + node->dump_name()); + + /* Do the inlining and update list of recursive call during process. */ + while (!heap.empty()) { + struct cgraph_edge *curr = heap.extract_min(); + struct cgraph_node *cnode, *dest = curr->callee; + + if (!can_inline_edge_p(curr, true) || + !can_inline_edge_by_limits_p(curr, true)) + continue; + + /* MASTER_CLONE is produced in the case we already started modified + the function. Be sure to redirect edge to the original body before + estimating growths otherwise we will be seeing growths after inlining + the already modified body. */ + if (master_clone) { + curr->redirect_callee(master_clone); + if (edge_growth_cache != NULL) edge_growth_cache->remove(curr); + } - inline_call(curr, false, new_edges, &overall_size, true); - reset_node_cache(node); - lookup_recursive_calls(node, curr->callee, &heap); - n++; + if (estimate_size_after_inlining(node, curr) > limit) { + curr->redirect_callee(dest); + if (edge_growth_cache != NULL) edge_growth_cache->remove(curr); + break; } - if (!heap.empty() && dump_file) - fprintf(dump_file, " Recursive inlining growth limit met.\n"); + depth = 1; + for (cnode = curr->caller; cnode->inlined_to; + cnode = cnode->callers->caller) + if (node->decl == curr->callee->ultimate_alias_target()->decl) depth++; - if (!master_clone) - return false; + if (!want_inline_self_recursive_call_p(curr, node, false, depth)) { + curr->redirect_callee(dest); + if (edge_growth_cache != NULL) edge_growth_cache->remove(curr); + continue; + } - if (dump_enabled_p()) - dump_printf_loc(MSG_NOTE, - edge->call_stmt, - "\n Inlined %i times, " - "body grown from size %i to %i, time %f to %f\n", - n, - ipa_size_summaries->get(master_clone)->size, - ipa_size_summaries->get(node)->size, - ipa_fn_summaries->get(master_clone)->time.to_double(), - ipa_fn_summaries->get(node)->time.to_double()); - - /* Remove master clone we used for inlining. We rely that clones inlined - into master clone gets queued just before master clone so we don't - need recursion. */ - for (node = symtab->first_function(); node != master_clone; node = next) { - next = symtab->next_function(node); - if (node->inlined_to == master_clone) - node->remove(); + if (dump_file) { + fprintf(dump_file, " Inlining call of depth %i", depth); + if (node->count.nonzero_p() && curr->count.initialized_p()) { + fprintf( + dump_file, " called approx. %.2f times per call", + (double)curr->count.to_gcov_type() / node->count.to_gcov_type()); + } + fprintf(dump_file, "\n"); + } + if (!master_clone) { + /* We need original clone to copy around. */ + master_clone = node->create_clone(node->decl, node->count, false, vNULL, + true, NULL, NULL); + for (e = master_clone->callees; e; e = e->next_callee) + if (!e->inline_failed) clone_inlined_nodes(e, true, false, NULL); + curr->redirect_callee(master_clone); + if (edge_growth_cache != NULL) edge_growth_cache->remove(curr); } - master_clone->remove(); - return true; + + inline_call(curr, false, new_edges, &overall_size, true); + reset_node_cache(node); + lookup_recursive_calls(node, curr->callee, &heap); + n++; + } + + if (!heap.empty() && dump_file) + fprintf(dump_file, " Recursive inlining growth limit met.\n"); + + if (!master_clone) return false; + + if (dump_enabled_p()) + dump_printf_loc(MSG_NOTE, edge->call_stmt, + "\n Inlined %i times, " + "body grown from size %i to %i, time %f to %f\n", + n, ipa_size_summaries->get(master_clone)->size, + ipa_size_summaries->get(node)->size, + ipa_fn_summaries->get(master_clone)->time.to_double(), + ipa_fn_summaries->get(node)->time.to_double()); + + /* Remove master clone we used for inlining. We rely that clones inlined + into master clone gets queued just before master clone so we don't + need recursion. */ + for (node = symtab->first_function(); node != master_clone; node = next) { + next = symtab->next_function(node); + if (node->inlined_to == master_clone) node->remove(); + } + master_clone->remove(); + return true; } /* Given whole compilation unit estimate of INSNS, compute how large we can allow the unit to grow. */ -static int64_t compute_max_insns(cgraph_node *node, int insns) -{ - int max_insns = insns; - if (max_insns < opt_for_fn(node->decl, param_large_unit_insns)) - max_insns = opt_for_fn(node->decl, param_large_unit_insns); +static int64_t compute_max_insns(cgraph_node *node, int insns) { + int max_insns = insns; + if (max_insns < opt_for_fn(node->decl, param_large_unit_insns)) + max_insns = opt_for_fn(node->decl, param_large_unit_insns); - return ((int64_t)max_insns * (100 + opt_for_fn(node->decl, param_inline_unit_growth)) / 100); + return ((int64_t)max_insns * + (100 + opt_for_fn(node->decl, param_inline_unit_growth)) / 100); } /* Compute badness of all edges in NEW_EDGES and add them to the HEAP. */ -static void add_new_edges_to_heap(edge_heap_t *heap, vec &new_edges) -{ - while (new_edges.length() > 0) { - struct cgraph_edge *edge = new_edges.pop(); - - gcc_assert(!edge->aux); - gcc_assert(edge->callee); - if (edge->inline_failed && can_inline_edge_p(edge, true) && want_inline_small_function_p(edge, true) && - can_inline_edge_by_limits_p(edge, true)) - edge->aux = heap->insert(edge_badness(edge, false), edge); - } +static void add_new_edges_to_heap(edge_heap_t *heap, + vec &new_edges) { + while (new_edges.length() > 0) { + struct cgraph_edge *edge = new_edges.pop(); + + gcc_assert(!edge->aux); + gcc_assert(edge->callee); + if (edge->inline_failed && can_inline_edge_p(edge, true) && + want_inline_small_function_p(edge, true) && + can_inline_edge_by_limits_p(edge, true)) + edge->aux = heap->insert(edge_badness(edge, false), edge); + } } /* Remove EDGE from the fibheap. */ -static void heap_edge_removal_hook(struct cgraph_edge *e, void *data) -{ - if (e->aux) { - ((edge_heap_t *)data)->delete_node((edge_heap_node_t *)e->aux); - e->aux = NULL; - } +static void heap_edge_removal_hook(struct cgraph_edge *e, void *data) { + if (e->aux) { + ((edge_heap_t *)data)->delete_node((edge_heap_node_t *)e->aux); + e->aux = NULL; + } } /* Return true if speculation of edge E seems useful. If ANTICIPATE_INLINING is true, be conservative and hope that E may get inlined. */ -bool speculation_useful_p(struct cgraph_edge *e, bool anticipate_inlining) -{ - /* If we have already decided to inline the edge, it seems useful. */ - if (!e->inline_failed) - return true; +bool speculation_useful_p(struct cgraph_edge *e, bool anticipate_inlining) { + /* If we have already decided to inline the edge, it seems useful. */ + if (!e->inline_failed) return true; - enum availability avail; - struct cgraph_node *target = e->callee->ultimate_alias_target(&avail, e->caller); - - gcc_assert(e->speculative && !e->indirect_unknown_callee); - - if (!e->maybe_hot_p()) - return false; - - /* See if IP optimizations found something potentially useful about the - function. For now we look only for CONST/PURE flags. Almost everything - else we propagate is useless. */ - if (avail >= AVAIL_AVAILABLE) { - int ecf_flags = flags_from_decl_or_type(target->decl); - if (ecf_flags & ECF_CONST) { - if (!(e->speculative_call_indirect_edge()->indirect_info->ecf_flags & ECF_CONST)) - return true; - } else if (ecf_flags & ECF_PURE) { - if (!(e->speculative_call_indirect_edge()->indirect_info->ecf_flags & ECF_PURE)) - return true; - } + enum availability avail; + struct cgraph_node *target = + e->callee->ultimate_alias_target(&avail, e->caller); + + gcc_assert(e->speculative && !e->indirect_unknown_callee); + + if (!e->maybe_hot_p()) return false; + + /* See if IP optimizations found something potentially useful about the + function. For now we look only for CONST/PURE flags. Almost everything + else we propagate is useless. */ + if (avail >= AVAIL_AVAILABLE) { + int ecf_flags = flags_from_decl_or_type(target->decl); + if (ecf_flags & ECF_CONST) { + if (!(e->speculative_call_indirect_edge()->indirect_info->ecf_flags & + ECF_CONST)) + return true; + } else if (ecf_flags & ECF_PURE) { + if (!(e->speculative_call_indirect_edge()->indirect_info->ecf_flags & + ECF_PURE)) + return true; } - /* If we did not managed to inline the function nor redirect - to an ipa-cp clone (that are seen by having local flag set), - it is probably pointless to inline it unless hardware is missing - indirect call predictor. */ - if (!anticipate_inlining && !target->local) - return false; - /* For overwritable targets there is not much to do. */ - if (!can_inline_edge_p(e, false) || !can_inline_edge_by_limits_p(e, false, true)) - return false; - /* OK, speculation seems interesting. */ - return true; + } + /* If we did not managed to inline the function nor redirect + to an ipa-cp clone (that are seen by having local flag set), + it is probably pointless to inline it unless hardware is missing + indirect call predictor. */ + if (!anticipate_inlining && !target->local) return false; + /* For overwritable targets there is not much to do. */ + if (!can_inline_edge_p(e, false) || + !can_inline_edge_by_limits_p(e, false, true)) + return false; + /* OK, speculation seems interesting. */ + return true; } /* We know that EDGE is not going to be inlined. See if we can remove speculation. */ -static void resolve_noninline_speculation(edge_heap_t *edge_heap, struct cgraph_edge *edge) -{ - if (edge->speculative && !speculation_useful_p(edge, false)) { - struct cgraph_node *node = edge->caller; - struct cgraph_node *where = node->inlined_to ? node->inlined_to : node; - auto_bitmap updated_nodes; +static void resolve_noninline_speculation(edge_heap_t *edge_heap, + struct cgraph_edge *edge) { + if (edge->speculative && !speculation_useful_p(edge, false)) { + struct cgraph_node *node = edge->caller; + struct cgraph_node *where = node->inlined_to ? node->inlined_to : node; + auto_bitmap updated_nodes; - if (edge->count.ipa().initialized_p()) - spec_rem += edge->count.ipa(); - cgraph_edge::resolve_speculation(edge); - reset_edge_caches(where); - ipa_update_overall_fn_summary(where); - update_caller_keys(edge_heap, where, updated_nodes, NULL); - update_callee_keys(edge_heap, where, NULL, updated_nodes); - } + if (edge->count.ipa().initialized_p()) spec_rem += edge->count.ipa(); + cgraph_edge::resolve_speculation(edge); + reset_edge_caches(where); + ipa_update_overall_fn_summary(where); + update_caller_keys(edge_heap, where, updated_nodes, NULL); + update_callee_keys(edge_heap, where, NULL, updated_nodes); + } } /* Return true if NODE should be accounted for overall size estimate. Skip all nodes optimized for size so we can measure the growth of hot part of program no matter of the padding. */ -bool inline_account_function_p(struct cgraph_node *node) -{ - return (!DECL_EXTERNAL(node->decl) && !opt_for_fn(node->decl, optimize_size) && - node->frequency != NODE_FREQUENCY_UNLIKELY_EXECUTED); +bool inline_account_function_p(struct cgraph_node *node) { + return (!DECL_EXTERNAL(node->decl) && + !opt_for_fn(node->decl, optimize_size) && + node->frequency != NODE_FREQUENCY_UNLIKELY_EXECUTED); } /* Count number of callers of NODE and store it into DATA (that points to int. Worker for cgraph_for_node_and_aliases. */ -static bool sum_callers(struct cgraph_node *node, void *data) -{ - struct cgraph_edge *e; - int *num_calls = (int *)data; +static bool sum_callers(struct cgraph_node *node, void *data) { + struct cgraph_edge *e; + int *num_calls = (int *)data; - for (e = node->callers; e; e = e->next_caller) - (*num_calls)++; - return false; + for (e = node->callers; e; e = e->next_caller) (*num_calls)++; + return false; } /* We only propagate across edges with non-interposable callee. */ -inline bool ignore_edge_p(struct cgraph_edge *e) -{ - enum availability avail; - e->callee->function_or_virtual_thunk_symbol(&avail, e->caller); - return (avail <= AVAIL_INTERPOSABLE); +inline bool ignore_edge_p(struct cgraph_edge *e) { + enum availability avail; + e->callee->function_or_virtual_thunk_symbol(&avail, e->caller); + return (avail <= AVAIL_INTERPOSABLE); } /* We use greedy algorithm for inlining of small functions: @@ -1582,1079 +1654,1089 @@ inline bool ignore_edge_p(struct cgraph_edge *e) The inlining of small functions is bounded by unit growth parameters. */ -static void inline_small_functions(void) -{ - struct cgraph_node *node; - struct cgraph_edge *edge; - edge_heap_t edge_heap(sreal::min()); - auto_bitmap updated_nodes; - int min_size; - auto_vec new_indirect_edges; - int initial_size = 0; - struct cgraph_node **order = XCNEWVEC(cgraph_node *, symtab->cgraph_count); - struct cgraph_edge_hook_list *edge_removal_hook_holder; - new_indirect_edges.create(8); - - edge_removal_hook_holder = symtab->add_edge_removal_hook(&heap_edge_removal_hook, &edge_heap); - - /* Compute overall unit size and other global parameters used by badness - metrics. */ - free_engine(); - max_count = profile_count::uninitialized(); - ipa_reduced_postorder(order, true, ignore_edge_p); - free(order); - - FOR_EACH_DEFINED_FUNCTION(node) - if (!node->inlined_to) { - if (!node->alias && node->analyzed && (node->has_gimple_body_p() || node->thunk) && - opt_for_fn(node->decl, optimize)) { - class ipa_fn_summary *info = ipa_fn_summaries->get(node); - struct ipa_dfs_info *dfs = (struct ipa_dfs_info *)node->aux; - - /* Do not account external functions, they will be optimized out - if not inlined. Also only count the non-cold portion of program. */ - if (inline_account_function_p(node)) - initial_size += ipa_size_summaries->get(node)->size; - info->growth = estimate_growth(node); - - int num_calls = 0; - node->call_for_symbol_and_aliases(sum_callers, &num_calls, true); - if (num_calls == 1) - info->single_caller = true; - if (dfs && dfs->next_cycle) { - struct cgraph_node *n2; - int id = dfs->scc_no + 1; - for (n2 = node; n2; n2 = ((struct ipa_dfs_info *)n2->aux)->next_cycle) - if (opt_for_fn(n2->decl, optimize)) { - ipa_fn_summary *info2 = ipa_fn_summaries->get(n2->inlined_to ? n2->inlined_to : n2); - if (info2->scc_no) - break; - info2->scc_no = id; - } - } - } - - for (edge = node->callers; edge; edge = edge->next_caller) - max_count = max_count.max(edge->count.ipa()); +static void inline_small_functions(void) { + struct cgraph_node *node; + struct cgraph_edge *edge; + edge_heap_t edge_heap(sreal::min()); + auto_bitmap updated_nodes; + int min_size; + auto_vec new_indirect_edges; + int initial_size = 0; + struct cgraph_node **order = XCNEWVEC(cgraph_node *, symtab->cgraph_count); + struct cgraph_edge_hook_list *edge_removal_hook_holder; + new_indirect_edges.create(8); + + edge_removal_hook_holder = + symtab->add_edge_removal_hook(&heap_edge_removal_hook, &edge_heap); + + /* Compute overall unit size and other global parameters used by badness + metrics. */ + free_engine(); + max_count = profile_count::uninitialized(); + ipa_reduced_postorder(order, true, ignore_edge_p); + free(order); + + FOR_EACH_DEFINED_FUNCTION(node) + if (!node->inlined_to) { + if (!node->alias && node->analyzed && + (node->has_gimple_body_p() || node->thunk) && + opt_for_fn(node->decl, optimize)) { + class ipa_fn_summary *info = ipa_fn_summaries->get(node); + struct ipa_dfs_info *dfs = (struct ipa_dfs_info *)node->aux; + + /* Do not account external functions, they will be optimized out + if not inlined. Also only count the non-cold portion of program. */ + if (inline_account_function_p(node)) + initial_size += ipa_size_summaries->get(node)->size; + info->growth = estimate_growth(node); + + int num_calls = 0; + node->call_for_symbol_and_aliases(sum_callers, &num_calls, true); + if (num_calls == 1) info->single_caller = true; + if (dfs && dfs->next_cycle) { + struct cgraph_node *n2; + int id = dfs->scc_no + 1; + for (n2 = node; n2; n2 = ((struct ipa_dfs_info *)n2->aux)->next_cycle) + if (opt_for_fn(n2->decl, optimize)) { + ipa_fn_summary *info2 = + ipa_fn_summaries->get(n2->inlined_to ? n2->inlined_to : n2); + if (info2->scc_no) break; + info2->scc_no = id; + } + } } - ipa_free_postorder_info(); - initialize_growth_caches(); + + for (edge = node->callers; edge; edge = edge->next_caller) + max_count = max_count.max(edge->count.ipa()); + } + ipa_free_postorder_info(); + initialize_growth_caches(); + + if (dump_file) + fprintf( + dump_file, + "\nDeciding on inlining of small functions. Starting with size %i.\n", + initial_size); + + overall_size = initial_size; + min_size = overall_size; + + /* Populate the heap with all edges we might inline. */ + + std::vector filter_features; + + FOR_EACH_DEFINED_FUNCTION(node) { + bool update = false; + struct cgraph_edge *next = NULL; + bool has_speculative = false; + + if (!opt_for_fn(node->decl, optimize) + /* With -Og we do not want to perform IPA inlining of small + functions since there are no scalar cleanups after it + that would realize the anticipated win. All abstraction + is removed during early inlining. */ + || opt_for_fn(node->decl, optimize_debug)) + continue; if (dump_file) - fprintf(dump_file, "\nDeciding on inlining of small functions. Starting with size %i.\n", initial_size); - - overall_size = initial_size; - min_size = overall_size; - - /* Populate the heap with all edges we might inline. */ - - std::vector filter_features; - - FOR_EACH_DEFINED_FUNCTION(node) - { - bool update = false; - struct cgraph_edge *next = NULL; - bool has_speculative = false; - - if (!opt_for_fn(node->decl, optimize) - /* With -Og we do not want to perform IPA inlining of small - functions since there are no scalar cleanups after it - that would realize the anticipated win. All abstraction - is removed during early inlining. */ - || opt_for_fn(node->decl, optimize_debug)) - continue; - - if (dump_file) - fprintf(dump_file, "Enqueueing calls in %s.\n", node->dump_name()); - - for (edge = node->callees; edge; edge = edge->next_callee) { - - if (edge_ignore_limits_map.find(edge) == edge_ignore_limits_map.end()) { - edge_ignore_limits_map[edge] = false; - } - /* Invoke the plug-in framework to perform model inference and modify heuristic rules based on the - * prediction result. */ - get_features(node, edge, filter_features); - initialize(g_inline_model_path); - add_double_input(filter_features.data(), filter_features.size()); - - int err = inference(); - if (err == 0) { - int64_t *result = get_int64_output(0); - if (result && result[0] == 1) { - edge_ignore_limits_map[edge] = true; - } - } - - if (edge->inline_failed && !edge->aux && can_inline_edge_p(edge, true) && - want_inline_small_function_p(edge, true) && can_inline_edge_by_limits_p(edge, true) && - edge->inline_failed) { - gcc_assert(!edge->aux); - update_edge_key(&edge_heap, edge); - } - if (edge->speculative) - has_speculative = true; + fprintf(dump_file, "Enqueueing calls in %s.\n", node->dump_name()); + + for (edge = node->callees; edge; edge = edge->next_callee) { + if (edge_ignore_limits_map.find(edge) == edge_ignore_limits_map.end()) { + edge_ignore_limits_map[edge] = false; + } + /* AI4Compiler Inference Process */ + /* Invoke the plug-in framework to perform model inference and modify + * heuristic rules based on the prediction result. */ + get_features(node, edge, filter_features); + initialize(g_inline_model_path); + add_int64_input(simultaneous_prefetches, 1); + add_int64_input(l1_cache_size, 1); + add_int64_input(l1_cache_line_size, 1); + add_int64_input(l2_cache_size, 1); + add_int64_input(prefetch_latency, 1); + add_int64_input(ipa_prefetch_distance_factor, 1); + add_string_input(var_str, 1); + add_double_input(filter_features.data(), filter_features.size()); + + int err = inference(); + if (err == 0) { + int64_t *result = get_int64_output(0); + if (result && result[0] == 1) { + edge_ignore_limits_map[edge] = true; } - if (has_speculative) - for (edge = node->callees; edge; edge = next) { - next = edge->next_callee; - if (edge->speculative && !speculation_useful_p(edge, edge->aux != NULL)) { - cgraph_edge::resolve_speculation(edge); - update = true; - } - } - if (update) { - struct cgraph_node *where = node->inlined_to ? node->inlined_to : node; - ipa_update_overall_fn_summary(where); - reset_edge_caches(where); - update_caller_keys(&edge_heap, where, updated_nodes, NULL); - update_callee_keys(&edge_heap, where, NULL, updated_nodes); - bitmap_clear(updated_nodes); + } + + if (edge->inline_failed && !edge->aux && can_inline_edge_p(edge, true) && + want_inline_small_function_p(edge, true) && + can_inline_edge_by_limits_p(edge, true) && edge->inline_failed) { + gcc_assert(!edge->aux); + update_edge_key(&edge_heap, edge); + } + if (edge->speculative) has_speculative = true; + } + if (has_speculative) + for (edge = node->callees; edge; edge = next) { + next = edge->next_callee; + if (edge->speculative && + !speculation_useful_p(edge, edge->aux != NULL)) { + cgraph_edge::resolve_speculation(edge); + update = true; } + } + if (update) { + struct cgraph_node *where = node->inlined_to ? node->inlined_to : node; + ipa_update_overall_fn_summary(where); + reset_edge_caches(where); + update_caller_keys(&edge_heap, where, updated_nodes, NULL); + update_callee_keys(&edge_heap, where, NULL, updated_nodes); + bitmap_clear(updated_nodes); } + } - gcc_assert(in_lto_p || !(max_count > 0) || (profile_info && flag_branch_probabilities)); - - std::vector heap_features; - - while (!edge_heap.empty()) { - int old_size = overall_size; - struct cgraph_node *where, *callee; - sreal badness = edge_heap.min_key(); - sreal current_badness; - int growth; - - edge = edge_heap.extract_min(); - gcc_assert(edge->aux); - edge->aux = NULL; - if (!edge->inline_failed || !edge->callee->analyzed) - continue; - - if (edge_ignore_limits_map.find(edge) == edge_ignore_limits_map.end()) { - /* Invoke the plug-in framework to perform model inference and modify heuristic rules based on the - * prediction result. */ - get_features(edge->caller, edge, heap_features); - initialize(g_inline_model_path); - add_double_input(heap_features.data(), heap_features.size()); - - int err = inference(); - if (err == 0) { - int64_t *result = get_int64_output(0); - - if (result && result[0] == 1) { - edge_ignore_limits_map[edge] = true; - } - } - } + gcc_assert(in_lto_p || !(max_count > 0) || + (profile_info && flag_branch_probabilities)); - /* Be sure that caches are maintained consistent. - This check is affected by scaling roundoff errors when compiling for - IPA this we skip it in that case. */ - if (flag_checking && !edge->callee->count.ipa_p() && (!max_count.initialized_p() || !max_count.nonzero_p())) { - sreal cached_badness = edge_badness(edge, false); - - int old_size_est = estimate_edge_size(edge); - sreal old_time_est = estimate_edge_time(edge); - int old_hints_est = estimate_edge_hints(edge); - - if (edge_growth_cache != NULL) - edge_growth_cache->remove(edge); - reset_node_cache(edge->caller->inlined_to ? edge->caller->inlined_to : edge->caller); - gcc_assert(old_size_est == estimate_edge_size(edge)); - gcc_assert(old_time_est == estimate_edge_time(edge)); - /* FIXME: - - gcc_assert (old_hints_est == estimate_edge_hints (edge)); - - fails with profile feedback because some hints depends on - maybe_hot_edge_p predicate and because callee gets inlined to other - calls, the edge may become cold. - This ought to be fixed by computing relative probabilities - for given invocation but that will be better done once whole - code is converted to sreals. Disable for now and revert to "wrong" - value so enable/disable checking paths agree. */ - edge_growth_cache->get(edge)->hints = old_hints_est + 1; - - /* When updating the edge costs, we only decrease badness in the keys. - Increases of badness are handled lazily; when we see key with out - of date value on it, we re-insert it now. */ - current_badness = edge_badness(edge, false); - gcc_assert(cached_badness == current_badness); - gcc_assert(current_badness >= badness); - } else - current_badness = edge_badness(edge, false); - if (current_badness != badness) { - if (edge_heap.min() && current_badness > edge_heap.min_key()) { - edge->aux = edge_heap.insert(current_badness, edge); - continue; - } else - badness = current_badness; - } + std::vector heap_features; - if (!can_inline_edge_p(edge, true) || !can_inline_edge_by_limits_p(edge, true)) { - resolve_noninline_speculation(&edge_heap, edge); - continue; - } + while (!edge_heap.empty()) { + int old_size = overall_size; + struct cgraph_node *where, *callee; + sreal badness = edge_heap.min_key(); + sreal current_badness; + int growth; - callee = edge->callee->ultimate_alias_target(); - growth = estimate_edge_growth(edge); - if (dump_file) { - fprintf(dump_file, - "\nConsidering %s with %i size\n", - callee->dump_name(), - ipa_size_summaries->get(callee)->size); - fprintf(dump_file, - " to be inlined into %s in %s:%i\n" - " Estimated badness is %f, frequency %.2f.\n", - edge->caller->dump_name(), - edge->call_stmt && - (LOCATION_LOCUS(gimple_location((const gimple *)edge->call_stmt)) > BUILTINS_LOCATION) - ? gimple_filename((const gimple *)edge->call_stmt) - : "unknown", - edge->call_stmt ? gimple_lineno((const gimple *)edge->call_stmt) : -1, - badness.to_double(), - edge->sreal_frequency().to_double()); - if (edge->count.ipa().initialized_p()) { - fprintf(dump_file, " Called "); - edge->count.ipa().dump(dump_file); - fprintf(dump_file, " times\n"); - } - if (dump_flags & TDF_DETAILS) - edge_badness(edge, true); + edge = edge_heap.extract_min(); + gcc_assert(edge->aux); + edge->aux = NULL; + if (!edge->inline_failed || !edge->callee->analyzed) continue; + + if (edge_ignore_limits_map.find(edge) == edge_ignore_limits_map.end()) { + /* AI4Compiler Inference Process */ + /* Invoke the plug-in framework to perform model inference and modify + * heuristic rules based on the prediction result. */ + get_features(edge->caller, edge, heap_features); + initialize(g_inline_model_path); + add_int64_input(simultaneous_prefetches, 1); + add_int64_input(l1_cache_size, 1); + add_int64_input(l1_cache_line_size, 1); + add_int64_input(l2_cache_size, 1); + add_int64_input(prefetch_latency, 1); + add_int64_input(ipa_prefetch_distance_factor, 1); + add_string_input(var_str, 1); + add_double_input(heap_features.data(), heap_features.size()); + + int err = inference(); + if (err == 0) { + int64_t *result = get_int64_output(0); + + if (result && result[0] == 1) { + edge_ignore_limits_map[edge] = true; } + } + } - where = edge->caller; + /* Be sure that caches are maintained consistent. + This check is affected by scaling roundoff errors when compiling for + IPA this we skip it in that case. */ + if (flag_checking && !edge->callee->count.ipa_p() && + (!max_count.initialized_p() || !max_count.nonzero_p())) { + sreal cached_badness = edge_badness(edge, false); + + int old_size_est = estimate_edge_size(edge); + sreal old_time_est = estimate_edge_time(edge); + int old_hints_est = estimate_edge_hints(edge); + + if (edge_growth_cache != NULL) edge_growth_cache->remove(edge); + reset_node_cache(edge->caller->inlined_to ? edge->caller->inlined_to + : edge->caller); + gcc_assert(old_size_est == estimate_edge_size(edge)); + gcc_assert(old_time_est == estimate_edge_time(edge)); + /* FIXME: + + gcc_assert (old_hints_est == estimate_edge_hints (edge)); + + fails with profile feedback because some hints depends on + maybe_hot_edge_p predicate and because callee gets inlined to other + calls, the edge may become cold. + This ought to be fixed by computing relative probabilities + for given invocation but that will be better done once whole + code is converted to sreals. Disable for now and revert to "wrong" + value so enable/disable checking paths agree. */ + edge_growth_cache->get(edge)->hints = old_hints_est + 1; + + /* When updating the edge costs, we only decrease badness in the keys. + Increases of badness are handled lazily; when we see key with out + of date value on it, we re-insert it now. */ + current_badness = edge_badness(edge, false); + gcc_assert(cached_badness == current_badness); + gcc_assert(current_badness >= badness); + } else + current_badness = edge_badness(edge, false); + if (current_badness != badness) { + if (edge_heap.min() && current_badness > edge_heap.min_key()) { + edge->aux = edge_heap.insert(current_badness, edge); + continue; + } else + badness = current_badness; + } - if (overall_size + growth > compute_max_insns(where, min_size) && - (edge_ignore_limits_map.find(edge) == edge_ignore_limits_map.end() || !edge_ignore_limits_map[edge]) && - !DECL_DISREGARD_INLINE_LIMITS(callee->decl)) { - edge->inline_failed = CIF_INLINE_UNIT_GROWTH_LIMIT; - report_inline_failed_reason(edge); - resolve_noninline_speculation(&edge_heap, edge); - continue; - } + if (!can_inline_edge_p(edge, true) || + !can_inline_edge_by_limits_p(edge, true)) { + resolve_noninline_speculation(&edge_heap, edge); + continue; + } - if (!want_inline_small_function_p(edge, true)) { - resolve_noninline_speculation(&edge_heap, edge); - continue; - } + callee = edge->callee->ultimate_alias_target(); + growth = estimate_edge_growth(edge); + if (dump_file) { + fprintf(dump_file, "\nConsidering %s with %i size\n", callee->dump_name(), + ipa_size_summaries->get(callee)->size); + fprintf( + dump_file, + " to be inlined into %s in %s:%i\n" + " Estimated badness is %f, frequency %.2f.\n", + edge->caller->dump_name(), + edge->call_stmt && + (LOCATION_LOCUS(gimple_location( + (const gimple *)edge->call_stmt)) > BUILTINS_LOCATION) + ? gimple_filename((const gimple *)edge->call_stmt) + : "unknown", + edge->call_stmt ? gimple_lineno((const gimple *)edge->call_stmt) : -1, + badness.to_double(), edge->sreal_frequency().to_double()); + if (edge->count.ipa().initialized_p()) { + fprintf(dump_file, " Called "); + edge->count.ipa().dump(dump_file); + fprintf(dump_file, " times\n"); + } + if (dump_flags & TDF_DETAILS) edge_badness(edge, true); + } - profile_count old_count = callee->count; - - /* Heuristics for inlining small functions work poorly for - recursive calls where we do effects similar to loop unrolling. - When inlining such edge seems profitable, leave decision on - specific inliner. */ - if (edge->recursive_p()) { - if (where->inlined_to) - where = where->inlined_to; - if (!recursive_inlining( - edge, opt_for_fn(edge->caller->decl, flag_indirect_inlining) ? &new_indirect_edges : NULL)) { - edge->inline_failed = CIF_RECURSIVE_INLINING; - resolve_noninline_speculation(&edge_heap, edge); - continue; - } - reset_edge_caches(where); - /* Recursive inliner inlines all recursive calls of the function - at once. Consequently we need to update all callee keys. */ - if (opt_for_fn(edge->caller->decl, flag_indirect_inlining)) - add_new_edges_to_heap(&edge_heap, new_indirect_edges); - update_callee_keys(&edge_heap, where, where, updated_nodes); - bitmap_clear(updated_nodes); - } else { - struct cgraph_node *outer_node = NULL; - int depth = 0; - - /* Consider the case where self recursive function A is inlined - into B. This is desired optimization in some cases, since it - leads to effect similar of loop peeling and we might completely - optimize out the recursive call. However we must be extra - selective. */ - - where = edge->caller; - while (where->inlined_to) { - if (where->decl == callee->decl) - outer_node = where, depth++; - where = where->callers->caller; - } - if (outer_node && !want_inline_self_recursive_call_p(edge, outer_node, true, depth)) { - edge->inline_failed = - (DECL_DISREGARD_INLINE_LIMITS(edge->callee->decl) ? CIF_RECURSIVE_INLINING : CIF_UNSPECIFIED); - resolve_noninline_speculation(&edge_heap, edge); - continue; - } else if (depth && dump_file) - fprintf(dump_file, " Peeling recursion with depth %i\n", depth); - - gcc_checking_assert(!callee->inlined_to); - - int old_size = ipa_size_summaries->get(where)->size; - sreal old_time = ipa_fn_summaries->get(where)->time; - - inline_call(edge, true, &new_indirect_edges, &overall_size, true); - reset_edge_caches(edge->callee); - add_new_edges_to_heap(&edge_heap, new_indirect_edges); - - /* If caller's size and time increased we do not need to update - all edges because badness is not going to decrease. */ - if (old_size <= ipa_size_summaries->get(where)->size && - old_time <= ipa_fn_summaries->get(where)->time - /* Wrapper penalty may be non-monotonous in this respect. - Fortunately it only affects small functions. */ - && !wrapper_heuristics_may_apply(where, old_size)) - update_callee_keys(&edge_heap, edge->callee, edge->callee, updated_nodes); - else - update_callee_keys(&edge_heap, where, edge->callee, updated_nodes); - } - where = edge->caller; - if (where->inlined_to) - where = where->inlined_to; - - /* Our profitability metric can depend on local properties - such as number of inlinable calls and size of the function body. - After inlining these properties might change for the function we - inlined into (since it's body size changed) and for the functions - called by function we inlined (since number of it inlinable callers - might change). */ - update_caller_keys(&edge_heap, where, updated_nodes, NULL); - /* Offline copy count has possibly changed, recompute if profile is - available. */ - struct cgraph_node *n = cgraph_node::get(edge->callee->decl)->ultimate_alias_target(); - if (n != edge->callee && n->analyzed && !(n->count == old_count) && n->count.ipa_p()) - update_callee_keys(&edge_heap, n, NULL, updated_nodes); - bitmap_clear(updated_nodes); - - if (dump_enabled_p()) { - ipa_fn_summary *s = ipa_fn_summaries->get(where); - - /* dump_printf can't handle %+i. */ - char buf_net_change[100]; - snprintf(buf_net_change, sizeof buf_net_change, "%+i", overall_size - old_size); - - dump_printf_loc(MSG_OPTIMIZED_LOCATIONS, - edge->call_stmt, - " Inlined %C into %C which now has time %f and " - "size %i, net change of %s%s.\n", - edge->callee, - edge->caller, - s->time.to_double(), - ipa_size_summaries->get(edge->caller)->size, - buf_net_change, - cross_module_call_p(edge) ? " (cross module)" : ""); - } - if (min_size > overall_size) { - min_size = overall_size; + where = edge->caller; - if (dump_file) - fprintf(dump_file, "New minimal size reached: %i\n", min_size); - } + if (overall_size + growth > compute_max_insns(where, min_size) && + (edge_ignore_limits_map.find(edge) == edge_ignore_limits_map.end() || + !edge_ignore_limits_map[edge]) && + !DECL_DISREGARD_INLINE_LIMITS(callee->decl)) { + edge->inline_failed = CIF_INLINE_UNIT_GROWTH_LIMIT; + report_inline_failed_reason(edge); + resolve_noninline_speculation(&edge_heap, edge); + continue; + } + + if (!want_inline_small_function_p(edge, true)) { + resolve_noninline_speculation(&edge_heap, edge); + continue; } - free_growth_caches(); + profile_count old_count = callee->count; + + /* Heuristics for inlining small functions work poorly for + recursive calls where we do effects similar to loop unrolling. + When inlining such edge seems profitable, leave decision on + specific inliner. */ + if (edge->recursive_p()) { + if (where->inlined_to) where = where->inlined_to; + if (!recursive_inlining( + edge, opt_for_fn(edge->caller->decl, flag_indirect_inlining) + ? &new_indirect_edges + : NULL)) { + edge->inline_failed = CIF_RECURSIVE_INLINING; + resolve_noninline_speculation(&edge_heap, edge); + continue; + } + reset_edge_caches(where); + /* Recursive inliner inlines all recursive calls of the function + at once. Consequently we need to update all callee keys. */ + if (opt_for_fn(edge->caller->decl, flag_indirect_inlining)) + add_new_edges_to_heap(&edge_heap, new_indirect_edges); + update_callee_keys(&edge_heap, where, where, updated_nodes); + bitmap_clear(updated_nodes); + } else { + struct cgraph_node *outer_node = NULL; + int depth = 0; + + /* Consider the case where self recursive function A is inlined + into B. This is desired optimization in some cases, since it + leads to effect similar of loop peeling and we might completely + optimize out the recursive call. However we must be extra + selective. */ + + where = edge->caller; + while (where->inlined_to) { + if (where->decl == callee->decl) outer_node = where, depth++; + where = where->callers->caller; + } + if (outer_node && + !want_inline_self_recursive_call_p(edge, outer_node, true, depth)) { + edge->inline_failed = (DECL_DISREGARD_INLINE_LIMITS(edge->callee->decl) + ? CIF_RECURSIVE_INLINING + : CIF_UNSPECIFIED); + resolve_noninline_speculation(&edge_heap, edge); + continue; + } else if (depth && dump_file) + fprintf(dump_file, " Peeling recursion with depth %i\n", depth); + + gcc_checking_assert(!callee->inlined_to); + + int old_size = ipa_size_summaries->get(where)->size; + sreal old_time = ipa_fn_summaries->get(where)->time; + + inline_call(edge, true, &new_indirect_edges, &overall_size, true); + reset_edge_caches(edge->callee); + add_new_edges_to_heap(&edge_heap, new_indirect_edges); + + /* If caller's size and time increased we do not need to update + all edges because badness is not going to decrease. */ + if (old_size <= ipa_size_summaries->get(where)->size && + old_time <= ipa_fn_summaries->get(where)->time + /* Wrapper penalty may be non-monotonous in this respect. + Fortunately it only affects small functions. */ + && !wrapper_heuristics_may_apply(where, old_size)) + update_callee_keys(&edge_heap, edge->callee, edge->callee, + updated_nodes); + else + update_callee_keys(&edge_heap, where, edge->callee, updated_nodes); + } + where = edge->caller; + if (where->inlined_to) where = where->inlined_to; + + /* Our profitability metric can depend on local properties + such as number of inlinable calls and size of the function body. + After inlining these properties might change for the function we + inlined into (since it's body size changed) and for the functions + called by function we inlined (since number of it inlinable callers + might change). */ + update_caller_keys(&edge_heap, where, updated_nodes, NULL); + /* Offline copy count has possibly changed, recompute if profile is + available. */ + struct cgraph_node *n = + cgraph_node::get(edge->callee->decl)->ultimate_alias_target(); + if (n != edge->callee && n->analyzed && !(n->count == old_count) && + n->count.ipa_p()) + update_callee_keys(&edge_heap, n, NULL, updated_nodes); + bitmap_clear(updated_nodes); + + if (dump_enabled_p()) { + ipa_fn_summary *s = ipa_fn_summaries->get(where); + + /* dump_printf can't handle %+i. */ + char buf_net_change[100]; + snprintf(buf_net_change, sizeof buf_net_change, "%+i", + overall_size - old_size); + + dump_printf_loc(MSG_OPTIMIZED_LOCATIONS, edge->call_stmt, + " Inlined %C into %C which now has time %f and " + "size %i, net change of %s%s.\n", + edge->callee, edge->caller, s->time.to_double(), + ipa_size_summaries->get(edge->caller)->size, + buf_net_change, + cross_module_call_p(edge) ? " (cross module)" : ""); + } + if (min_size > overall_size) { + min_size = overall_size; - free_engine(); + if (dump_file) + fprintf(dump_file, "New minimal size reached: %i\n", min_size); + } + } - if (dump_enabled_p()) - dump_printf(MSG_NOTE, - "Unit growth for small function inlining: %i->%i (%i%%)\n", - initial_size, - overall_size, - initial_size ? overall_size * 100 / (initial_size)-100 : 0); - symtab->remove_edge_removal_hook(edge_removal_hook_holder); + free_growth_caches(); + + free_engine(); + + if (dump_enabled_p()) + dump_printf(MSG_NOTE, + "Unit growth for small function inlining: %i->%i (%i%%)\n", + initial_size, overall_size, + initial_size ? overall_size * 100 / (initial_size)-100 : 0); + symtab->remove_edge_removal_hook(edge_removal_hook_holder); } /* Flatten NODE. Performed both during early inlining and at IPA inlining time. */ -static void flatten_function(struct cgraph_node *node, bool early, bool update) -{ - struct cgraph_edge *e; - - /* We shouldn't be called recursively when we are being processed. */ - gcc_assert(node->aux == NULL); +static void flatten_function(struct cgraph_node *node, bool early, + bool update) { + struct cgraph_edge *e; - node->aux = (void *)node; + /* We shouldn't be called recursively when we are being processed. */ + gcc_assert(node->aux == NULL); - for (e = node->callees; e; e = e->next_callee) { - struct cgraph_node *orig_callee; - struct cgraph_node *callee = e->callee->ultimate_alias_target(); - - /* We've hit cycle? It is time to give up. */ - if (callee->aux) { - if (dump_enabled_p()) - dump_printf_loc(MSG_MISSED_OPTIMIZATION, - e->call_stmt, - "Not inlining %C into %C to avoid cycle.\n", - callee, - e->caller); - if (cgraph_inline_failed_type(e->inline_failed) != CIF_FINAL_ERROR) - e->inline_failed = CIF_RECURSIVE_INLINING; - continue; - } + node->aux = (void *)node; - /* When the edge is already inlined, we just need to recurse into - it in order to fully flatten the leaves. */ - if (!e->inline_failed) { - flatten_function(callee, early, false); - continue; - } + for (e = node->callees; e; e = e->next_callee) { + struct cgraph_node *orig_callee; + struct cgraph_node *callee = e->callee->ultimate_alias_target(); - /* Flatten attribute needs to be processed during late inlining. For - extra code quality we however do flattening during early optimization, - too. */ - if (!early ? !can_inline_edge_p(e, true) && !can_inline_edge_by_limits_p(e, true) : !can_early_inline_edge_p(e)) - continue; + /* We've hit cycle? It is time to give up. */ + if (callee->aux) { + if (dump_enabled_p()) + dump_printf_loc(MSG_MISSED_OPTIMIZATION, e->call_stmt, + "Not inlining %C into %C to avoid cycle.\n", callee, + e->caller); + if (cgraph_inline_failed_type(e->inline_failed) != CIF_FINAL_ERROR) + e->inline_failed = CIF_RECURSIVE_INLINING; + continue; + } - if (e->recursive_p()) { - if (dump_enabled_p()) - dump_printf_loc(MSG_MISSED_OPTIMIZATION, e->call_stmt, "Not inlining: recursive call.\n"); - continue; - } + /* When the edge is already inlined, we just need to recurse into + it in order to fully flatten the leaves. */ + if (!e->inline_failed) { + flatten_function(callee, early, false); + continue; + } - if (gimple_in_ssa_p(DECL_STRUCT_FUNCTION(node->decl)) != gimple_in_ssa_p(DECL_STRUCT_FUNCTION(callee->decl))) { - if (dump_enabled_p()) - dump_printf_loc(MSG_MISSED_OPTIMIZATION, e->call_stmt, "Not inlining: SSA form does not match.\n"); - continue; - } + /* Flatten attribute needs to be processed during late inlining. For + extra code quality we however do flattening during early optimization, + too. */ + if (!early ? !can_inline_edge_p(e, true) && + !can_inline_edge_by_limits_p(e, true) + : !can_early_inline_edge_p(e)) + continue; + + if (e->recursive_p()) { + if (dump_enabled_p()) + dump_printf_loc(MSG_MISSED_OPTIMIZATION, e->call_stmt, + "Not inlining: recursive call.\n"); + continue; + } - /* Inline the edge and flatten the inline clone. Avoid - recursing through the original node if the node was cloned. */ - if (dump_enabled_p()) - dump_printf_loc(MSG_OPTIMIZED_LOCATIONS, e->call_stmt, " Inlining %C into %C.\n", callee, e->caller); - orig_callee = callee; - inline_call(e, true, NULL, NULL, false); - if (e->callee != orig_callee) - orig_callee->aux = (void *)node; - flatten_function(e->callee, early, false); - if (e->callee != orig_callee) - orig_callee->aux = NULL; + if (gimple_in_ssa_p(DECL_STRUCT_FUNCTION(node->decl)) != + gimple_in_ssa_p(DECL_STRUCT_FUNCTION(callee->decl))) { + if (dump_enabled_p()) + dump_printf_loc(MSG_MISSED_OPTIMIZATION, e->call_stmt, + "Not inlining: SSA form does not match.\n"); + continue; } - node->aux = NULL; - cgraph_node *where = node->inlined_to ? node->inlined_to : node; - if (update && opt_for_fn(where->decl, optimize)) - ipa_update_overall_fn_summary(where); + /* Inline the edge and flatten the inline clone. Avoid + recursing through the original node if the node was cloned. */ + if (dump_enabled_p()) + dump_printf_loc(MSG_OPTIMIZED_LOCATIONS, e->call_stmt, + " Inlining %C into %C.\n", callee, e->caller); + orig_callee = callee; + inline_call(e, true, NULL, NULL, false); + if (e->callee != orig_callee) orig_callee->aux = (void *)node; + flatten_function(e->callee, early, false); + if (e->callee != orig_callee) orig_callee->aux = NULL; + } + + node->aux = NULL; + cgraph_node *where = node->inlined_to ? node->inlined_to : node; + if (update && opt_for_fn(where->decl, optimize)) + ipa_update_overall_fn_summary(where); } /* Inline NODE to all callers. Worker for cgraph_for_node_and_aliases. DATA points to number of calls originally found so we avoid infinite recursion. */ -static bool inline_to_all_callers_1(struct cgraph_node *node, void *data, hash_set *callers) -{ - int *num_calls = (int *)data; - bool callee_removed = false; +static bool inline_to_all_callers_1(struct cgraph_node *node, void *data, + hash_set *callers) { + int *num_calls = (int *)data; + bool callee_removed = false; - while (node->callers && !node->inlined_to) { - struct cgraph_node *caller = node->callers->caller; + while (node->callers && !node->inlined_to) { + struct cgraph_node *caller = node->callers->caller; - if (!can_inline_edge_p(node->callers, true) || !can_inline_edge_by_limits_p(node->callers, true) || - node->callers->recursive_p()) { - if (dump_file) - fprintf(dump_file, "Uninlinable call found; giving up.\n"); - *num_calls = 0; - return false; - } + if (!can_inline_edge_p(node->callers, true) || + !can_inline_edge_by_limits_p(node->callers, true) || + node->callers->recursive_p()) { + if (dump_file) fprintf(dump_file, "Uninlinable call found; giving up.\n"); + *num_calls = 0; + return false; + } - if (dump_file) { - cgraph_node *ultimate = node->ultimate_alias_target(); - fprintf( - dump_file, "\nInlining %s size %i.\n", ultimate->dump_name(), ipa_size_summaries->get(ultimate)->size); - fprintf(dump_file, - " Called once from %s %i insns.\n", - node->callers->caller->dump_name(), - ipa_size_summaries->get(node->callers->caller)->size); - } + if (dump_file) { + cgraph_node *ultimate = node->ultimate_alias_target(); + fprintf(dump_file, "\nInlining %s size %i.\n", ultimate->dump_name(), + ipa_size_summaries->get(ultimate)->size); + fprintf(dump_file, " Called once from %s %i insns.\n", + node->callers->caller->dump_name(), + ipa_size_summaries->get(node->callers->caller)->size); + } - /* Remember which callers we inlined to, delaying updating the - overall summary. */ - callers->add(node->callers->caller); - inline_call(node->callers, true, NULL, NULL, false, &callee_removed); - if (dump_file) - fprintf(dump_file, - " Inlined into %s which now has %i size\n", - caller->dump_name(), - ipa_size_summaries->get(caller)->size); - if (!(*num_calls)--) { - if (dump_file) - fprintf(dump_file, "New calls found; giving up.\n"); - return callee_removed; - } - if (callee_removed) - return true; + /* Remember which callers we inlined to, delaying updating the + overall summary. */ + callers->add(node->callers->caller); + inline_call(node->callers, true, NULL, NULL, false, &callee_removed); + if (dump_file) + fprintf(dump_file, " Inlined into %s which now has %i size\n", + caller->dump_name(), ipa_size_summaries->get(caller)->size); + if (!(*num_calls)--) { + if (dump_file) fprintf(dump_file, "New calls found; giving up.\n"); + return callee_removed; } - return false; + if (callee_removed) return true; + } + return false; } /* Wrapper around inline_to_all_callers_1 doing delayed overall summary update. */ -static bool inline_to_all_callers(struct cgraph_node *node, void *data) -{ - hash_set callers; - bool res = inline_to_all_callers_1(node, data, &callers); - /* Perform the delayed update of the overall summary of all callers - processed. This avoids quadratic behavior in the cases where - we have a lot of calls to the same function. */ - for (hash_set::iterator i = callers.begin(); i != callers.end(); ++i) - ipa_update_overall_fn_summary((*i)->inlined_to ? (*i)->inlined_to : *i); - return res; +static bool inline_to_all_callers(struct cgraph_node *node, void *data) { + hash_set callers; + bool res = inline_to_all_callers_1(node, data, &callers); + /* Perform the delayed update of the overall summary of all callers + processed. This avoids quadratic behavior in the cases where + we have a lot of calls to the same function. */ + for (hash_set::iterator i = callers.begin(); + i != callers.end(); ++i) + ipa_update_overall_fn_summary((*i)->inlined_to ? (*i)->inlined_to : *i); + return res; } /* Output overall time estimate. */ -static void dump_overall_stats(void) -{ - sreal sum_weighted = 0, sum = 0; - struct cgraph_node *node; - - FOR_EACH_DEFINED_FUNCTION(node) - if (!node->inlined_to && !node->alias) { - ipa_fn_summary *s = ipa_fn_summaries->get(node); - if (s != NULL) { - sum += s->time; - if (node->count.ipa().initialized_p()) - sum_weighted += s->time * node->count.ipa().to_gcov_type(); - } +static void dump_overall_stats(void) { + sreal sum_weighted = 0, sum = 0; + struct cgraph_node *node; + + FOR_EACH_DEFINED_FUNCTION(node) + if (!node->inlined_to && !node->alias) { + ipa_fn_summary *s = ipa_fn_summaries->get(node); + if (s != NULL) { + sum += s->time; + if (node->count.ipa().initialized_p()) + sum_weighted += s->time * node->count.ipa().to_gcov_type(); } - fprintf(dump_file, - "Overall time estimate: " - "%f weighted by profile: " - "%f\n", - sum.to_double(), - sum_weighted.to_double()); + } + fprintf(dump_file, + "Overall time estimate: " + "%f weighted by profile: " + "%f\n", + sum.to_double(), sum_weighted.to_double()); } /* Output some useful stats about inlining. */ -static void dump_inline_stats(void) -{ - int64_t inlined_cnt = 0, inlined_indir_cnt = 0; - int64_t inlined_virt_cnt = 0, inlined_virt_indir_cnt = 0; - int64_t noninlined_cnt = 0, noninlined_indir_cnt = 0; - int64_t noninlined_virt_cnt = 0, noninlined_virt_indir_cnt = 0; - int64_t inlined_speculative = 0, inlined_speculative_ply = 0; - int64_t indirect_poly_cnt = 0, indirect_cnt = 0; - int64_t reason[CIF_N_REASONS][2]; - sreal reason_freq[CIF_N_REASONS]; - int i; - struct cgraph_node *node; - - memset(reason, 0, sizeof(reason)); - for (i = 0; i < CIF_N_REASONS; i++) - reason_freq[i] = 0; - FOR_EACH_DEFINED_FUNCTION(node) - { - struct cgraph_edge *e; - for (e = node->callees; e; e = e->next_callee) { - if (e->inline_failed) { - if (e->count.ipa().initialized_p()) - reason[(int)e->inline_failed][0] += e->count.ipa().to_gcov_type(); - reason_freq[(int)e->inline_failed] += e->sreal_frequency(); - reason[(int)e->inline_failed][1]++; - if (DECL_VIRTUAL_P(e->callee->decl) && e->count.ipa().initialized_p()) { - if (e->indirect_inlining_edge) - noninlined_virt_indir_cnt += e->count.ipa().to_gcov_type(); - else - noninlined_virt_cnt += e->count.ipa().to_gcov_type(); - } else if (e->count.ipa().initialized_p()) { - if (e->indirect_inlining_edge) - noninlined_indir_cnt += e->count.ipa().to_gcov_type(); - else - noninlined_cnt += e->count.ipa().to_gcov_type(); - } - } else if (e->count.ipa().initialized_p()) { - if (e->speculative) { - if (DECL_VIRTUAL_P(e->callee->decl)) - inlined_speculative_ply += e->count.ipa().to_gcov_type(); - else - inlined_speculative += e->count.ipa().to_gcov_type(); - } else if (DECL_VIRTUAL_P(e->callee->decl)) { - if (e->indirect_inlining_edge) - inlined_virt_indir_cnt += e->count.ipa().to_gcov_type(); - else - inlined_virt_cnt += e->count.ipa().to_gcov_type(); - } else { - if (e->indirect_inlining_edge) - inlined_indir_cnt += e->count.ipa().to_gcov_type(); - else - inlined_cnt += e->count.ipa().to_gcov_type(); - } - } +static void dump_inline_stats(void) { + int64_t inlined_cnt = 0, inlined_indir_cnt = 0; + int64_t inlined_virt_cnt = 0, inlined_virt_indir_cnt = 0; + int64_t noninlined_cnt = 0, noninlined_indir_cnt = 0; + int64_t noninlined_virt_cnt = 0, noninlined_virt_indir_cnt = 0; + int64_t inlined_speculative = 0, inlined_speculative_ply = 0; + int64_t indirect_poly_cnt = 0, indirect_cnt = 0; + int64_t reason[CIF_N_REASONS][2]; + sreal reason_freq[CIF_N_REASONS]; + int i; + struct cgraph_node *node; + + memset(reason, 0, sizeof(reason)); + for (i = 0; i < CIF_N_REASONS; i++) reason_freq[i] = 0; + FOR_EACH_DEFINED_FUNCTION(node) { + struct cgraph_edge *e; + for (e = node->callees; e; e = e->next_callee) { + if (e->inline_failed) { + if (e->count.ipa().initialized_p()) + reason[(int)e->inline_failed][0] += e->count.ipa().to_gcov_type(); + reason_freq[(int)e->inline_failed] += e->sreal_frequency(); + reason[(int)e->inline_failed][1]++; + if (DECL_VIRTUAL_P(e->callee->decl) && e->count.ipa().initialized_p()) { + if (e->indirect_inlining_edge) + noninlined_virt_indir_cnt += e->count.ipa().to_gcov_type(); + else + noninlined_virt_cnt += e->count.ipa().to_gcov_type(); + } else if (e->count.ipa().initialized_p()) { + if (e->indirect_inlining_edge) + noninlined_indir_cnt += e->count.ipa().to_gcov_type(); + else + noninlined_cnt += e->count.ipa().to_gcov_type(); } - for (e = node->indirect_calls; e; e = e->next_callee) - if (e->indirect_info->polymorphic & e->count.ipa().initialized_p()) - indirect_poly_cnt += e->count.ipa().to_gcov_type(); - else if (e->count.ipa().initialized_p()) - indirect_cnt += e->count.ipa().to_gcov_type(); + } else if (e->count.ipa().initialized_p()) { + if (e->speculative) { + if (DECL_VIRTUAL_P(e->callee->decl)) + inlined_speculative_ply += e->count.ipa().to_gcov_type(); + else + inlined_speculative += e->count.ipa().to_gcov_type(); + } else if (DECL_VIRTUAL_P(e->callee->decl)) { + if (e->indirect_inlining_edge) + inlined_virt_indir_cnt += e->count.ipa().to_gcov_type(); + else + inlined_virt_cnt += e->count.ipa().to_gcov_type(); + } else { + if (e->indirect_inlining_edge) + inlined_indir_cnt += e->count.ipa().to_gcov_type(); + else + inlined_cnt += e->count.ipa().to_gcov_type(); + } + } } - if (max_count.initialized_p()) { - fprintf(dump_file, - "Inlined %" PRId64 " + speculative " - "%" PRId64 " + speculative polymorphic " - "%" PRId64 " + previously indirect " - "%" PRId64 " + virtual " - "%" PRId64 " + virtual and previously indirect " - "%" PRId64 "\n" + for (e = node->indirect_calls; e; e = e->next_callee) + if (e->indirect_info->polymorphic & e->count.ipa().initialized_p()) + indirect_poly_cnt += e->count.ipa().to_gcov_type(); + else if (e->count.ipa().initialized_p()) + indirect_cnt += e->count.ipa().to_gcov_type(); + } + if (max_count.initialized_p()) { + fprintf(dump_file, + "Inlined %" PRId64 + " + speculative " + "%" PRId64 + " + speculative polymorphic " + "%" PRId64 + " + previously indirect " + "%" PRId64 + " + virtual " + "%" PRId64 + " + virtual and previously indirect " + "%" PRId64 + "\n" "Not inlined " - "%" PRId64 " + previously indirect " - "%" PRId64 " + virtual " - "%" PRId64 " + virtual and previously indirect " - "%" PRId64 " + still indirect " - "%" PRId64 " + still indirect polymorphic " + "%" PRId64 + " + previously indirect " + "%" PRId64 + " + virtual " + "%" PRId64 + " + virtual and previously indirect " + "%" PRId64 + " + still indirect " + "%" PRId64 + " + still indirect polymorphic " "%" PRId64 "\n", - inlined_cnt, - inlined_speculative, - inlined_speculative_ply, - inlined_indir_cnt, - inlined_virt_cnt, - inlined_virt_indir_cnt, - noninlined_cnt, - noninlined_indir_cnt, - noninlined_virt_cnt, - noninlined_virt_indir_cnt, - indirect_cnt, - indirect_poly_cnt); - fprintf(dump_file, "Removed speculations "); - spec_rem.dump(dump_file); - fprintf(dump_file, "\n"); - } - dump_overall_stats(); - fprintf(dump_file, "\nWhy inlining failed?\n"); - for (i = 0; i < CIF_N_REASONS; i++) - if (reason[i][1]) - fprintf(dump_file, - "%-50s: %8i calls, %8f freq, %" PRId64 " count\n", - cgraph_inline_failed_string((cgraph_inline_failed_t)i), - (int)reason[i][1], - reason_freq[i].to_double(), - reason[i][0]); + inlined_cnt, inlined_speculative, inlined_speculative_ply, + inlined_indir_cnt, inlined_virt_cnt, inlined_virt_indir_cnt, + noninlined_cnt, noninlined_indir_cnt, noninlined_virt_cnt, + noninlined_virt_indir_cnt, indirect_cnt, indirect_poly_cnt); + fprintf(dump_file, "Removed speculations "); + spec_rem.dump(dump_file); + fprintf(dump_file, "\n"); + } + dump_overall_stats(); + fprintf(dump_file, "\nWhy inlining failed?\n"); + for (i = 0; i < CIF_N_REASONS; i++) + if (reason[i][1]) + fprintf(dump_file, "%-50s: %8i calls, %8f freq, %" PRId64 " count\n", + cgraph_inline_failed_string((cgraph_inline_failed_t)i), + (int)reason[i][1], reason_freq[i].to_double(), reason[i][0]); } /* Called when node is removed. */ -static void flatten_remove_node_hook(struct cgraph_node *node, void *data) -{ - if (lookup_attribute("flatten", DECL_ATTRIBUTES(node->decl)) == NULL) - return; +static void flatten_remove_node_hook(struct cgraph_node *node, void *data) { + if (lookup_attribute("flatten", DECL_ATTRIBUTES(node->decl)) == NULL) return; - hash_set *removed = (hash_set *)data; - removed->add(node); + hash_set *removed = + (hash_set *)data; + removed->add(node); } -/* Obtains the caller and callee information of the current node. */ -void get_caller_callee_info(struct cgraph_node *node, int &caller_count, int &callee_count) -{ - caller_count = 0; - callee_count = 0; - if (node_caller_callee_count.find(node) == node_caller_callee_count.end()) { - if (node->callers) { - for (cgraph_edge *e = node->callers; e; e = e->next_caller) { - caller_count++; - } - } - if (node->callees) { - for (cgraph_edge *e = node->callees; e; e = e->next_callee) { - callee_count++; - } - } - node_caller_callee_count[node] = {caller_count, callee_count}; - } else { - auto it = node_caller_callee_count[node]; - caller_count = it.first; - callee_count = it.second; +/* ===---- AI4Compiler IPA-Inline Feature Extraction Functions ----=== */ +/* Obtains the caller and callee information of the current node. */ + +void get_caller_callee_info(struct cgraph_node *node, int &caller_count, + int &callee_count) { + caller_count = 0; + callee_count = 0; + if (node_caller_callee_count.find(node) == node_caller_callee_count.end()) { + if (node->callers) { + for (cgraph_edge *e = node->callers; e; e = e->next_caller) { + caller_count++; + } } - return; -} -/* Obtains the basic block information of the current node. */ -void get_basic_block_info(struct cgraph_node *node, int &bb_count, int &cond_bb_count) -{ - tree function_decl = node->decl; - struct function *my_function = DECL_STRUCT_FUNCTION(function_decl); - gimple_stmt_iterator gsi; - basic_block bb; - bb_count = 0; - cond_bb_count = 0; - - if (!gimple_has_body_p(node->decl)) { - return; + if (node->callees) { + for (cgraph_edge *e = node->callees; e; e = e->next_callee) { + callee_count++; + } } + node_caller_callee_count[node] = {caller_count, callee_count}; + } else { + auto it = node_caller_callee_count[node]; + caller_count = it.first; + callee_count = it.second; + } + return; +} - FOR_EACH_BB_FN(bb, my_function) - { - bb_count++; - bool is_conditionally_executed = false; - for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) { - enum gimple_code code = gimple_code(gsi_stmt(gsi)); - if (code == GIMPLE_COND) { - is_conditionally_executed = true; - break; - } - } +/* Obtains the basic block information of the current node. */ - if (is_conditionally_executed) { - cond_bb_count++; - } - } +void get_basic_block_info(struct cgraph_node *node, int &bb_count, + int &cond_bb_count) { + tree function_decl = node->decl; + struct function *my_function = DECL_STRUCT_FUNCTION(function_decl); + gimple_stmt_iterator gsi; + basic_block bb; + bb_count = 0; + cond_bb_count = 0; + + if (!gimple_has_body_p(node->decl)) { return; + } + + FOR_EACH_BB_FN(bb, my_function) { + bb_count++; + bool is_conditionally_executed = false; + for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) { + enum gimple_code code = gimple_code(gsi_stmt(gsi)); + if (code == GIMPLE_COND) { + is_conditionally_executed = true; + break; + } + } + + if (is_conditionally_executed) { + cond_bb_count++; + } + } + return; } -/* Obtains the number of input parameters of the current node. */ -int get_function_parameters_info(struct cgraph_node *node) -{ - tree function_decl = node->decl; - tree args = DECL_ARGUMENTS(function_decl); - int num_params = 0; +/* Obtains the number of input parameters of the current node. */ - for (tree param = args; param; param = TREE_CHAIN(param)) { - num_params++; - } +int get_function_parameters_info(struct cgraph_node *node) { + tree function_decl = node->decl; + tree args = DECL_ARGUMENTS(function_decl); + + int num_params = 0; + + for (tree param = args; param; param = TREE_CHAIN(param)) { + num_params++; + } - return num_params; + return num_params; } -/* Obtains the number of gimple instructions on the current node. */ -static StatementInfo count_stmt_types_fn(struct cgraph_node *node) -{ - tree function_decl = node->decl; - struct function *my_function = DECL_STRUCT_FUNCTION(function_decl); - gimple_stmt_iterator gsi; - basic_block bb; - - StatementInfo info; - info.total_stmt_count = 0; - - for (int i = 0; i < LAST_AND_UNUSED_GIMPLE_CODE; ++i) { - info.stmt_counts[static_cast(i)] = 0; - } - if (!gimple_has_body_p(node->decl)) { - return info; - } +/* Obtains the number of gimple instructions on the current node. */ - // gcc_assert(my_function && my_function->cfg); - FOR_EACH_BB_FN(bb, my_function) - { - for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) { - enum gimple_code code = gimple_code(gsi_stmt(gsi)); - info.stmt_counts[code]++; - info.total_stmt_count++; - } - } +static StatementInfo count_stmt_types_fn(struct cgraph_node *node) { + tree function_decl = node->decl; + struct function *my_function = DECL_STRUCT_FUNCTION(function_decl); + gimple_stmt_iterator gsi; + basic_block bb; - return info; -} -/* Obtains the invoking times and invoking frequency of the current edge. */ -void get_edge_info(struct cgraph_edge *edge, int &edge_count, double &edge_freq) -{ - if (edge->count.initialized_p()) { - edge_count = edge->count.ipa().to_gcov_type(); - } else { - edge_count = 0; - } + StatementInfo info; + info.total_stmt_count = 0; - edge_freq = edge->sreal_frequency().to_double(); + for (int i = 0; i < LAST_AND_UNUSED_GIMPLE_CODE; ++i) { + info.stmt_counts[static_cast(i)] = 0; + } - return; -} -/* Obtains the current node information, which is used to extract the caller and callee features. */ -void extract_node_features(struct cgraph_node *node, std::vector &features) -{ - int Caller_Count; - int Callee_Count; - get_caller_callee_info(node, Caller_Count, Callee_Count); - features.push_back(static_cast(Caller_Count)); - features.push_back(static_cast(Callee_Count)); - - int Basic_Block_Count; - int Conditionally_Executed_Blocks; - get_basic_block_info(node, Basic_Block_Count, Conditionally_Executed_Blocks); - features.push_back(static_cast(Basic_Block_Count)); - features.push_back(static_cast(Conditionally_Executed_Blocks)); - - int Total_Parameters_Count = get_function_parameters_info(node); - features.push_back(static_cast(Total_Parameters_Count)); - - StatementInfo Stmy_Info = count_stmt_types_fn(node); - features.push_back(static_cast(Stmy_Info.total_stmt_count)); - - const enum gimple_code gimple_codes[] = {GIMPLE_COND, - GIMPLE_DEBUG, - GIMPLE_LABEL, - GIMPLE_SWITCH, - GIMPLE_ASSIGN, - GIMPLE_ASM, - GIMPLE_CALL, - GIMPLE_RETURN, - GIMPLE_RESX, - GIMPLE_EH_DISPATCH, - GIMPLE_PREDICT}; - - for (const auto &code : gimple_codes) { - features.push_back(static_cast(Stmy_Info.stmt_counts[code])); + if (!gimple_has_body_p(node->decl)) { + return info; + } + + // gcc_assert(my_function && my_function->cfg); + FOR_EACH_BB_FN(bb, my_function) { + for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) { + enum gimple_code code = gimple_code(gsi_stmt(gsi)); + info.stmt_counts[code]++; + info.total_stmt_count++; } -} -/* Obtains the features of nodes and edge for onnx model input. */ -void get_features(struct cgraph_node *node, struct cgraph_edge *edge, std::vector &features) -{ - features.clear(); - - extract_node_features(node, features); - extract_node_features(edge->callee, features); - - int Edge_Count; - double Edge_Freq; - get_edge_info(edge, Edge_Count, Edge_Freq); - features.push_back(static_cast(Edge_Count)); - features.push_back(Edge_Freq); -} + } -/* Decide on the inlining. We do so in the topological order to avoid - expenses on updating data structures. */ + return info; +} -static unsigned int ipa_inline(void) -{ - struct cgraph_node *node; - int nnodes; - struct cgraph_node **order; - int i, j; - int cold; - bool remove_functions = false; +/* Obtains the invoking times and invoking frequency of the current edge. */ - order = XCNEWVEC(struct cgraph_node *, symtab->cgraph_count); +void get_edge_info(struct cgraph_edge *edge, int &edge_count, + double &edge_freq) { + if (edge->count.initialized_p()) { + edge_count = edge->count.ipa().to_gcov_type(); + } else { + edge_count = 0; + } - if (dump_file) - ipa_dump_fn_summaries(dump_file); - - nnodes = ipa_reverse_postorder(order); - spec_rem = profile_count::zero(); - - FOR_EACH_FUNCTION(node) - { - node->aux = 0; - - /* Recompute the default reasons for inlining because they may have - changed during merging. */ - if (in_lto_p) { - for (cgraph_edge *e = node->callees; e; e = e->next_callee) { - gcc_assert(e->inline_failed); - initialize_inline_failed(e); - } - for (cgraph_edge *e = node->indirect_calls; e; e = e->next_callee) - initialize_inline_failed(e); - } - } + edge_freq = edge->sreal_frequency().to_double(); - if (dump_file) - fprintf(dump_file, "\nFlattening functions:\n"); - - /* First shrink order array, so that it only contains nodes with - flatten attribute. */ - for (i = nnodes - 1, j = i; i >= 0; i--) { - node = order[i]; - if (node->definition - /* Do not try to flatten aliases. These may happen for example when - creating local aliases. */ - && !node->alias && lookup_attribute("flatten", DECL_ATTRIBUTES(node->decl)) != NULL) - order[j--] = order[i]; - } + return; +} - /* After the above loop, order[j + 1] ... order[nnodes - 1] contain - nodes with flatten attribute. If there is more than one such - node, we need to register a node removal hook, as flatten_function - could remove other nodes with flatten attribute. See PR82801. */ - struct cgraph_node_hook_list *node_removal_hook_holder = NULL; - hash_set *flatten_removed_nodes = NULL; - if (j < nnodes - 2) { - flatten_removed_nodes = new hash_set; - node_removal_hook_holder = symtab->add_cgraph_removal_hook(&flatten_remove_node_hook, flatten_removed_nodes); - } +/* Obtains the current node information, which is used to extract the caller and + * callee features. */ + +void extract_node_features(struct cgraph_node *node, + std::vector &features) { + int Caller_Count; + int Callee_Count; + get_caller_callee_info(node, Caller_Count, Callee_Count); + features.push_back(static_cast(Caller_Count)); + features.push_back(static_cast(Callee_Count)); + + int Basic_Block_Count; + int Conditionally_Executed_Blocks; + get_basic_block_info(node, Basic_Block_Count, Conditionally_Executed_Blocks); + features.push_back(static_cast(Basic_Block_Count)); + features.push_back(static_cast(Conditionally_Executed_Blocks)); + + int Total_Parameters_Count = get_function_parameters_info(node); + features.push_back(static_cast(Total_Parameters_Count)); + + StatementInfo Stmy_Info = count_stmt_types_fn(node); + features.push_back(static_cast(Stmy_Info.total_stmt_count)); + + const enum gimple_code gimple_codes[] = { + GIMPLE_COND, GIMPLE_DEBUG, GIMPLE_LABEL, GIMPLE_SWITCH, + GIMPLE_ASSIGN, GIMPLE_ASM, GIMPLE_CALL, GIMPLE_RETURN, + GIMPLE_RESX, GIMPLE_EH_DISPATCH, GIMPLE_PREDICT}; + + for (const auto &code : gimple_codes) { + features.push_back(static_cast(Stmy_Info.stmt_counts[code])); + } +} - /* In the first pass handle functions to be flattened. Do this with - a priority so none of our later choices will make this impossible. */ - for (i = nnodes - 1; i > j; i--) { - node = order[i]; - if (flatten_removed_nodes && flatten_removed_nodes->contains(node)) - continue; - - /* Handle nodes to be flattened. - Ideally when processing callees we stop inlining at the - entry of cycles, possibly cloning that entry point and - try to flatten itself turning it into a self-recursive - function. */ - if (dump_file) - fprintf(dump_file, "Flattening %s\n", node->dump_name()); - flatten_function(node, false, true); - } +/* Obtains the features of nodes and edge for onnx model input. */ - if (j < nnodes - 2) { - symtab->remove_cgraph_removal_hook(node_removal_hook_holder); - delete flatten_removed_nodes; - } - free(order); +void get_features(struct cgraph_node *node, struct cgraph_edge *edge, + std::vector &features) { + features.clear(); - if (dump_file) - dump_overall_stats(); + extract_node_features(node, features); + extract_node_features(edge->callee, features); - inline_small_functions(); + int Edge_Count; + double Edge_Freq; + get_edge_info(edge, Edge_Count, Edge_Freq); + features.push_back(static_cast(Edge_Count)); + features.push_back(Edge_Freq); +} +/* ===---- AI4Compiler IPA-Inline Feature Extraction Functions ----=== */ - gcc_assert(symtab->state == IPA_SSA); - symtab->state = IPA_SSA_AFTER_INLINING; - /* Do first after-inlining removal. We want to remove all "stale" extern - inline functions and virtual functions so we really know what is called - once. */ - symtab->remove_unreachable_nodes(dump_file); +/* Decide on the inlining. We do so in the topological order to avoid + expenses on updating data structures. */ - /* Inline functions with a property that after inlining into all callers the - code size will shrink because the out-of-line copy is eliminated. - We do this regardless on the callee size as long as function growth limits - are met. */ - if (dump_file) - fprintf(dump_file, +static unsigned int ipa_inline(void) { + struct cgraph_node *node; + int nnodes; + struct cgraph_node **order; + int i, j; + int cold; + bool remove_functions = false; + + order = XCNEWVEC(struct cgraph_node *, symtab->cgraph_count); + + if (dump_file) ipa_dump_fn_summaries(dump_file); + + nnodes = ipa_reverse_postorder(order); + spec_rem = profile_count::zero(); + + FOR_EACH_FUNCTION(node) { + node->aux = 0; + + /* Recompute the default reasons for inlining because they may have + changed during merging. */ + if (in_lto_p) { + for (cgraph_edge *e = node->callees; e; e = e->next_callee) { + gcc_assert(e->inline_failed); + initialize_inline_failed(e); + } + for (cgraph_edge *e = node->indirect_calls; e; e = e->next_callee) + initialize_inline_failed(e); + } + } + + if (dump_file) fprintf(dump_file, "\nFlattening functions:\n"); + + /* First shrink order array, so that it only contains nodes with + flatten attribute. */ + for (i = nnodes - 1, j = i; i >= 0; i--) { + node = order[i]; + if (node->definition + /* Do not try to flatten aliases. These may happen for example when + creating local aliases. */ + && !node->alias && + lookup_attribute("flatten", DECL_ATTRIBUTES(node->decl)) != NULL) + order[j--] = order[i]; + } + + /* After the above loop, order[j + 1] ... order[nnodes - 1] contain + nodes with flatten attribute. If there is more than one such + node, we need to register a node removal hook, as flatten_function + could remove other nodes with flatten attribute. See PR82801. */ + struct cgraph_node_hook_list *node_removal_hook_holder = NULL; + hash_set *flatten_removed_nodes = NULL; + if (j < nnodes - 2) { + flatten_removed_nodes = new hash_set; + node_removal_hook_holder = symtab->add_cgraph_removal_hook( + &flatten_remove_node_hook, flatten_removed_nodes); + } + + /* In the first pass handle functions to be flattened. Do this with + a priority so none of our later choices will make this impossible. */ + for (i = nnodes - 1; i > j; i--) { + node = order[i]; + if (flatten_removed_nodes && flatten_removed_nodes->contains(node)) + continue; + + /* Handle nodes to be flattened. + Ideally when processing callees we stop inlining at the + entry of cycles, possibly cloning that entry point and + try to flatten itself turning it into a self-recursive + function. */ + if (dump_file) fprintf(dump_file, "Flattening %s\n", node->dump_name()); + flatten_function(node, false, true); + } + + if (j < nnodes - 2) { + symtab->remove_cgraph_removal_hook(node_removal_hook_holder); + delete flatten_removed_nodes; + } + free(order); + + if (dump_file) dump_overall_stats(); + + inline_small_functions(); + + gcc_assert(symtab->state == IPA_SSA); + symtab->state = IPA_SSA_AFTER_INLINING; + /* Do first after-inlining removal. We want to remove all "stale" extern + inline functions and virtual functions so we really know what is called + once. */ + symtab->remove_unreachable_nodes(dump_file); + + /* Inline functions with a property that after inlining into all callers the + code size will shrink because the out-of-line copy is eliminated. + We do this regardless on the callee size as long as function growth limits + are met. */ + if (dump_file) + fprintf(dump_file, "\nDeciding on functions to be inlined into all callers and " "removing useless speculations:\n"); - /* Inlining one function called once has good chance of preventing - inlining other function into the same callee. Ideally we should - work in priority order, but probably inlining hot functions first - is good cut without the extra pain of maintaining the queue. - - ??? this is not really fitting the bill perfectly: inlining function - into callee often leads to better optimization of callee due to - increased context for optimization. - For example if main() function calls a function that outputs help - and then function that does the main optimization, we should inline - the second with priority even if both calls are cold by themselves. - - We probably want to implement new predicate replacing our use of - maybe_hot_edge interpreted as maybe_hot_edge || callee is known - to be hot. */ - for (cold = 0; cold <= 1; cold++) { - FOR_EACH_DEFINED_FUNCTION(node) - { - struct cgraph_edge *edge, *next; - bool update = false; - - if (!opt_for_fn(node->decl, optimize) || !opt_for_fn(node->decl, flag_inline_functions_called_once)) - continue; - - for (edge = node->callees; edge; edge = next) { - next = edge->next_callee; - if (edge->speculative && !speculation_useful_p(edge, false)) { - if (edge->count.ipa().initialized_p()) - spec_rem += edge->count.ipa(); - cgraph_edge::resolve_speculation(edge); - update = true; - remove_functions = true; - } - } - if (update) { - struct cgraph_node *where = node->inlined_to ? node->inlined_to : node; - reset_edge_caches(where); - ipa_update_overall_fn_summary(where); - } - if (want_inline_function_to_all_callers_p(node, cold)) { - int num_calls = 0; - node->call_for_symbol_and_aliases(sum_callers, &num_calls, true); - while (node->call_for_symbol_and_aliases(inline_to_all_callers, &num_calls, true)) - ; - remove_functions = true; - } + /* Inlining one function called once has good chance of preventing + inlining other function into the same callee. Ideally we should + work in priority order, but probably inlining hot functions first + is good cut without the extra pain of maintaining the queue. + + ??? this is not really fitting the bill perfectly: inlining function + into callee often leads to better optimization of callee due to + increased context for optimization. + For example if main() function calls a function that outputs help + and then function that does the main optimization, we should inline + the second with priority even if both calls are cold by themselves. + + We probably want to implement new predicate replacing our use of + maybe_hot_edge interpreted as maybe_hot_edge || callee is known + to be hot. */ + for (cold = 0; cold <= 1; cold++) { + FOR_EACH_DEFINED_FUNCTION(node) { + struct cgraph_edge *edge, *next; + bool update = false; + + if (!opt_for_fn(node->decl, optimize) || + !opt_for_fn(node->decl, flag_inline_functions_called_once)) + continue; + + for (edge = node->callees; edge; edge = next) { + next = edge->next_callee; + if (edge->speculative && !speculation_useful_p(edge, false)) { + if (edge->count.ipa().initialized_p()) spec_rem += edge->count.ipa(); + cgraph_edge::resolve_speculation(edge); + update = true; + remove_functions = true; } + } + if (update) { + struct cgraph_node *where = node->inlined_to ? node->inlined_to : node; + reset_edge_caches(where); + ipa_update_overall_fn_summary(where); + } + if (want_inline_function_to_all_callers_p(node, cold)) { + int num_calls = 0; + node->call_for_symbol_and_aliases(sum_callers, &num_calls, true); + while (node->call_for_symbol_and_aliases(inline_to_all_callers, + &num_calls, true)) + ; + remove_functions = true; + } } + } - if (dump_enabled_p()) - dump_printf(MSG_NOTE, "\nInlined %i calls, eliminated %i functions\n\n", ncalls_inlined, nfunctions_inlined); - if (dump_file) - dump_inline_stats(); - - if (dump_file) - ipa_dump_fn_summaries(dump_file); - return remove_functions ? TODO_remove_functions : 0; + if (dump_enabled_p()) + dump_printf(MSG_NOTE, "\nInlined %i calls, eliminated %i functions\n\n", + ncalls_inlined, nfunctions_inlined); + if (dump_file) dump_inline_stats(); + + if (dump_file) ipa_dump_fn_summaries(dump_file); + return remove_functions ? TODO_remove_functions : 0; } -/* ===------------------------- Ipa-Inline-Pass -------------------------=== */ +/* ===------------------------- IPA-Inline-Pass -------------------------=== */ /* ===------------------------- Loop-Unroll-Pass -------------------------=== */ struct iv_to_split { - rtx_insn *insn; /* The insn in that the induction variable occurs. */ - rtx orig_var; /* The variable (register) for the IV before split. */ - rtx base_var; /* The variable on that the values in the further - iterations are based. */ - rtx step; /* Step of the induction variable. */ - struct iv_to_split *next; /* Next entry in walking order. */ + rtx_insn *insn; /* The insn in that the induction variable occurs. */ + rtx orig_var; /* The variable (register) for the IV before split. */ + rtx base_var; /* The variable on that the values in the further + iterations are based. */ + rtx step; /* Step of the induction variable. */ + struct iv_to_split *next; /* Next entry in walking order. */ }; /* Information about accumulators to expand. */ struct var_to_expand { - rtx_insn *insn; /* The insn in that the variable expansion occurs. */ - rtx reg; /* The accumulator which is expanded. */ - vec var_expansions; /* The copies of the accumulator which is expanded. */ - struct var_to_expand *next; /* Next entry in walking order. */ - enum rtx_code op; /* The type of the accumulation - addition, subtraction - or multiplication. */ - int expansion_count; /* Count the number of expansions generated so far. */ - int reuse_expansion; /* The expansion we intend to reuse to expand - the accumulator. If REUSE_EXPANSION is 0 reuse - the original accumulator. Else use - var_expansions[REUSE_EXPANSION - 1]. */ + rtx_insn *insn; /* The insn in that the variable expansion occurs. */ + rtx reg; /* The accumulator which is expanded. */ + vec + var_expansions; /* The copies of the accumulator which is expanded. */ + struct var_to_expand *next; /* Next entry in walking order. */ + enum rtx_code op; /* The type of the accumulation - addition, subtraction + or multiplication. */ + int expansion_count; /* Count the number of expansions generated so far. */ + int reuse_expansion; /* The expansion we intend to reuse to expand + the accumulator. If REUSE_EXPANSION is 0 reuse + the original accumulator. Else use + var_expansions[REUSE_EXPANSION - 1]. */ }; /* Hashtable helper for iv_to_split. */ struct iv_split_hasher : free_ptr_hash { - static inline hashval_t hash(const iv_to_split *); - static inline bool equal(const iv_to_split *, const iv_to_split *); + static inline hashval_t hash(const iv_to_split *); + static inline bool equal(const iv_to_split *, const iv_to_split *); }; /* A hash function for information about insns to split. */ -inline hashval_t iv_split_hasher::hash(const iv_to_split *ivts) -{ - return (hashval_t)INSN_UID(ivts->insn); +inline hashval_t iv_split_hasher::hash(const iv_to_split *ivts) { + return (hashval_t)INSN_UID(ivts->insn); } /* An equality functions for information about insns to split. */ -inline bool iv_split_hasher::equal(const iv_to_split *i1, const iv_to_split *i2) -{ - return i1->insn == i2->insn; +inline bool iv_split_hasher::equal(const iv_to_split *i1, + const iv_to_split *i2) { + return i1->insn == i2->insn; } /* Hashtable helper for iv_to_split. */ struct var_expand_hasher : free_ptr_hash { - static inline hashval_t hash(const var_to_expand *); - static inline bool equal(const var_to_expand *, const var_to_expand *); + static inline hashval_t hash(const var_to_expand *); + static inline bool equal(const var_to_expand *, const var_to_expand *); }; /* Return a hash for VES. */ -inline hashval_t var_expand_hasher::hash(const var_to_expand *ves) -{ - return (hashval_t)INSN_UID(ves->insn); +inline hashval_t var_expand_hasher::hash(const var_to_expand *ves) { + return (hashval_t)INSN_UID(ves->insn); } /* Return true if I1 and I2 refer to the same instruction. */ -inline bool var_expand_hasher::equal(const var_to_expand *i1, const var_to_expand *i2) -{ - return i1->insn == i2->insn; +inline bool var_expand_hasher::equal(const var_to_expand *i1, + const var_to_expand *i2) { + return i1->insn == i2->insn; } /* Information about optimization applied in the unrolled loop. */ struct opt_info { - hash_table *insns_to_split; /* A hashtable of insns to - split. */ - struct iv_to_split *iv_to_split_head; /* The first iv to split. */ - struct iv_to_split **iv_to_split_tail; /* Pointer to the tail of the list. */ - hash_table *insns_with_var_to_expand; /* A hashtable of - insns with accumulators to expand. */ - struct var_to_expand *var_to_expand_head; /* The first var to expand. */ - struct var_to_expand **var_to_expand_tail; /* Pointer to the tail of the list. */ - unsigned first_new_block; /* The first basic block that was - duplicated. */ - basic_block loop_exit; /* The loop exit basic block. */ - basic_block loop_preheader; /* The loop preheader basic block. */ + hash_table *insns_to_split; /* A hashtable of insns to + split. */ + struct iv_to_split *iv_to_split_head; /* The first iv to split. */ + struct iv_to_split **iv_to_split_tail; /* Pointer to the tail of the list. */ + hash_table *insns_with_var_to_expand; /* A hashtable of + insns with accumulators to expand. */ + struct var_to_expand *var_to_expand_head; /* The first var to expand. */ + struct var_to_expand * + *var_to_expand_tail; /* Pointer to the tail of the list. */ + unsigned first_new_block; /* The first basic block that was + duplicated. */ + basic_block loop_exit; /* The loop exit basic block. */ + basic_block loop_preheader; /* The loop preheader basic block. */ }; static void decide_unroll_stupid(class loop *, int); @@ -2668,202 +2750,205 @@ static struct opt_info *analyze_insns_in_loop(class loop *); static void opt_info_start_duplication(struct opt_info *); static void apply_opt_in_copies(struct opt_info *, unsigned, bool, bool); static void free_opt_info(struct opt_info *); -static struct var_to_expand *analyze_insn_to_expand_var(class loop *, rtx_insn *); +static struct var_to_expand *analyze_insn_to_expand_var(class loop *, + rtx_insn *); static bool referenced_in_one_insn_in_loop_p(class loop *, rtx, int *); static struct iv_to_split *analyze_iv_to_split_insn(rtx_insn *); static void expand_var_during_unrolling(struct var_to_expand *, rtx_insn *); -static void insert_var_expansion_initialization(struct var_to_expand *, basic_block); -static void combine_var_copies_in_loop_exit(struct var_to_expand *, basic_block); +static void insert_var_expansion_initialization(struct var_to_expand *, + basic_block); +static void combine_var_copies_in_loop_exit(struct var_to_expand *, + basic_block); static rtx get_expansion(struct var_to_expand *); /* Emit a message summarizing the unroll that will be performed for LOOP, along with the loop's location LOCUS, if appropriate given the dump or -fopt-info settings. */ -static void report_unroll(class loop *loop, dump_location_t locus) -{ - dump_flags_t report_flags = MSG_OPTIMIZED_LOCATIONS | TDF_DETAILS; +static void report_unroll(class loop *loop, dump_location_t locus) { + dump_flags_t report_flags = MSG_OPTIMIZED_LOCATIONS | TDF_DETAILS; - if (loop->lpt_decision.decision == LPT_NONE) - return; + if (loop->lpt_decision.decision == LPT_NONE) return; - if (!dump_enabled_p()) - return; + if (!dump_enabled_p()) return; - dump_metadata_t metadata(report_flags, locus.get_impl_location()); - dump_printf_loc(metadata, locus.get_user_location(), "loop unrolled %d times", loop->lpt_decision.times); - if (profile_info && loop->header->count.initialized_p()) - dump_printf(metadata, " (header execution count %d)", (int)loop->header->count.to_gcov_type()); + dump_metadata_t metadata(report_flags, locus.get_impl_location()); + dump_printf_loc(metadata, locus.get_user_location(), "loop unrolled %d times", + loop->lpt_decision.times); + if (profile_info && loop->header->count.initialized_p()) + dump_printf(metadata, " (header execution count %d)", + (int)loop->header->count.to_gcov_type()); - dump_printf(metadata, "\n"); + dump_printf(metadata, "\n"); } // Estimate unroll factor -int64_t get_unroll_factor(class loop *loop_) -{ - auto util = ai4c::LoopUtil(loop_); - std::vector features = util.analyze_insns(); - int vec_size = features.size(); - - initialize(g_unroll_model_path); - - add_float_input(features.data(), vec_size); - - int err = inference(); - if (err) - return err; - int64_t *result = get_int64_output(0); - - int64_t label = result[0]; - return label; +int64_t get_unroll_factor(class loop *loop_) { + auto util = ai4c::LoopUtil(loop_); + std::vector features = util.analyze_insns(); + std::vector double_features(features.size()); + std::transform(features.begin(), features.end(), double_features.begin(), + [](float val) { return static_cast(val); }); + int vec_size = double_features.size(); + + initialize(g_unroll_model_path); + add_int64_input(simultaneous_prefetches, 1); + add_int64_input(l1_cache_size, 1); + add_int64_input(l1_cache_line_size, 1); + add_int64_input(l2_cache_size, 1); + add_int64_input(prefetch_latency, 1); + add_int64_input(ipa_prefetch_distance_factor, 1); + add_string_input(var_str, 1); + add_double_input(double_features.data(), vec_size); + int err = inference(); + if (err) return err; + int64_t *result = get_int64_output(0); + + int64_t label = result[0]; + return label; } -static bool loop_exit_at_end_p(class loop *loop) -{ - class niter_desc *desc = get_simple_loop_desc(loop); - rtx_insn *insn; +static bool loop_exit_at_end_p(class loop *loop) { + class niter_desc *desc = get_simple_loop_desc(loop); + rtx_insn *insn; - /* We should never have conditional in latch block. */ - gcc_assert(desc->in_edge->dest != loop->header); + /* We should never have conditional in latch block. */ + gcc_assert(desc->in_edge->dest != loop->header); - if (desc->in_edge->dest != loop->latch) - return false; + if (desc->in_edge->dest != loop->latch) return false; - /* Check that the latch is empty. */ - FOR_BB_INSNS(loop->latch, insn) - { - if (INSN_P(insn) && active_insn_p(insn)) - return false; - } + /* Check that the latch is empty. */ + FOR_BB_INSNS(loop->latch, insn) { + if (INSN_P(insn) && active_insn_p(insn)) return false; + } - return true; + return true; } /* Decide whether unroll loops and how much. */ -static void decide_unrolling_(int flags) -{ - /* Scan the loops, inner ones first. */ - int64_t label; - - for (auto loop : loops_list(cfun, LI_FROM_INNERMOST)) { - loop->lpt_decision.decision = LPT_NONE; - dump_user_location_t locus = get_loop_location(loop); - std::string functionName = current_function_name(); - if (dump_enabled_p()) - dump_printf_loc( - MSG_NOTE, locus, "considering unrolling loop %d at BB %d\n", loop->num, loop->header->index); - - if (loop->unroll == 1) { - if (dump_file) - fprintf(dump_file, ";; Not unrolling loop, user didn't want it unrolled\n"); - continue; - } +static void decide_unrolling_(int flags) { + /* Scan the loops, inner ones first. */ + int64_t label; + + for (auto loop : loops_list(cfun, LI_FROM_INNERMOST)) { + loop->lpt_decision.decision = LPT_NONE; + dump_user_location_t locus = get_loop_location(loop); + std::string functionName = current_function_name(); + if (dump_enabled_p()) + dump_printf_loc(MSG_NOTE, locus, + "considering unrolling loop %d at BB %d\n", loop->num, + loop->header->index); - /* Do not peel cold areas. */ - if (optimize_loop_for_size_p(loop)) { - if (dump_file) - fprintf(dump_file, ";; Not considering loop, cold area\n"); - continue; - } + if (loop->unroll == 1) { + if (dump_file) + fprintf(dump_file, + ";; Not unrolling loop, user didn't want it unrolled\n"); + continue; + } - /* Can the loop be manipulated? */ - if (!can_duplicate_loop_p(loop)) { - if (dump_file) - fprintf(dump_file, ";; Not considering loop, cannot duplicate\n"); - continue; - } + /* Do not peel cold areas. */ + if (optimize_loop_for_size_p(loop)) { + if (dump_file) fprintf(dump_file, ";; Not considering loop, cold area\n"); + continue; + } - /* Skip non-innermost loops. */ - if (loop->inner) { - if (dump_file) - fprintf(dump_file, ";; Not considering loop, is not innermost\n"); - continue; - } + /* Can the loop be manipulated? */ + if (!can_duplicate_loop_p(loop)) { + if (dump_file) + fprintf(dump_file, ";; Not considering loop, cannot duplicate\n"); + continue; + } - loop->ninsns = num_loop_insns(loop); - loop->av_ninsns = average_num_loop_insns(loop); + /* Skip non-innermost loops. */ + if (loop->inner) { + if (dump_file) + fprintf(dump_file, ";; Not considering loop, is not innermost\n"); + continue; + } - /* Try transformations one by one in decreasing order of priority. */ - decide_unroll_constant_iterations(loop, flags); - if (loop->lpt_decision.decision == LPT_NONE) - decide_unroll_runtime_iterations(loop, flags); - if (loop->lpt_decision.decision == LPT_NONE) - decide_unroll_stupid(loop, flags); + loop->ninsns = num_loop_insns(loop); + loop->av_ninsns = average_num_loop_insns(loop); - if (loop->lpt_decision.decision == LPT_NONE) { - continue; - } + /* Try transformations one by one in decreasing order of priority. */ + decide_unroll_constant_iterations(loop, flags); + if (loop->lpt_decision.decision == LPT_NONE) + decide_unroll_runtime_iterations(loop, flags); + if (loop->lpt_decision.decision == LPT_NONE) + decide_unroll_stupid(loop, flags); - // get unroll factor - int64_t index = loop->header->index; - std::pair key = std::make_pair(functionName, index); - if (function_map.find(key) != function_map.end()) { - label = function_map[key]; - } else { - label = get_unroll_factor(loop); - function_map[key] = label; - } + if (loop->lpt_decision.decision == LPT_NONE) { + continue; + } - loop->unroll = label; + // get unroll factor + int64_t index = loop->header->index; + std::pair key = std::make_pair(functionName, index); + if (function_map.find(key) != function_map.end()) { + label = function_map[key]; + } else { + label = get_unroll_factor(loop); + function_map[key] = label; + } - if (loop->unroll == 1 || loop->unroll == 0) { - if (dump_file) - fprintf(dump_file, ";; Not unrolling loop, user didn't want it unrolled\n"); - continue; - } + loop->unroll = label; - if (loop->lpt_decision.decision == LPT_UNROLL_CONSTANT) { - loop->lpt_decision.times = loop->unroll - 1; - } else { - unsigned i, nunroll; - if (loop->unroll > 0 && loop->unroll < USHRT_MAX) { - nunroll = loop->unroll; - - for (i = 1; 2 * i <= nunroll; i *= 2) - continue; - loop->lpt_decision.times = i - 1; - } - } + if (loop->unroll == 1 || loop->unroll == 0) { + if (dump_file) + fprintf(dump_file, + ";; Not unrolling loop, user didn't want it unrolled\n"); + continue; + } + + if (loop->lpt_decision.decision == LPT_UNROLL_CONSTANT) { + loop->lpt_decision.times = loop->unroll - 1; + } else { + unsigned i, nunroll; + if (loop->unroll > 0 && loop->unroll < USHRT_MAX) { + nunroll = loop->unroll; - report_unroll(loop, locus); + for (i = 1; 2 * i <= nunroll; i *= 2) continue; + loop->lpt_decision.times = i - 1; + } } + + report_unroll(loop, locus); + } } /* Unroll LOOPS. */ -void unroll_loops_(int flags) -{ - bool changed = false; - /* Now decide rest of unrolling. */ - decide_unrolling_(flags); - /* Scan the loops, inner ones first. */ - for (auto loop : loops_list(cfun, LI_FROM_INNERMOST)) { - /* And perform the appropriate transformations. */ - switch (loop->lpt_decision.decision) { - case LPT_UNROLL_CONSTANT: - unroll_loop_constant_iterations(loop); - changed = true; - break; - case LPT_UNROLL_RUNTIME: - unroll_loop_runtime_iterations(loop); - changed = true; - break; - case LPT_UNROLL_STUPID: - unroll_loop_stupid(loop); - changed = true; - break; - case LPT_NONE: - break; - default: - gcc_unreachable(); - } +void unroll_loops_(int flags) { + bool changed = false; + /* Now decide rest of unrolling. */ + decide_unrolling_(flags); + /* Scan the loops, inner ones first. */ + for (auto loop : loops_list(cfun, LI_FROM_INNERMOST)) { + /* And perform the appropriate transformations. */ + switch (loop->lpt_decision.decision) { + case LPT_UNROLL_CONSTANT: + unroll_loop_constant_iterations(loop); + changed = true; + break; + case LPT_UNROLL_RUNTIME: + unroll_loop_runtime_iterations(loop); + changed = true; + break; + case LPT_UNROLL_STUPID: + unroll_loop_stupid(loop); + changed = true; + break; + case LPT_NONE: + break; + default: + gcc_unreachable(); } + } - if (changed) { - calculate_dominance_info(CDI_DOMINATORS); - fix_loop_structure(NULL); - } + if (changed) { + calculate_dominance_info(CDI_DOMINATORS); + fix_loop_structure(NULL); + } - iv_analysis_done(); + iv_analysis_done(); } /* Check whether exit of the LOOP is at the end of loop body. */ @@ -2871,108 +2956,103 @@ void unroll_loops_(int flags) /* Decide whether to unroll LOOP iterating constant number of times and how much. */ -static void decide_unroll_constant_iterations(class loop *loop, int flags) -{ - unsigned nunroll, nunroll_by_av, best_copies, best_unroll = 0, n_copies, i; - class niter_desc *desc; - widest_int iterations; - - /* If we were not asked to unroll this loop, just return back silently. */ - if (!(flags & UAP_UNROLL) && !loop->unroll) - return; - - if (dump_enabled_p()) - dump_printf(MSG_NOTE, - "considering unrolling loop with constant " - "number of iterations\n"); - - /* nunroll = total number of copies of the original loop body in - unrolled loop (i.e. if it is 2, we have to duplicate loop body once). */ - nunroll = param_max_unrolled_insns / loop->ninsns; - nunroll_by_av = param_max_average_unrolled_insns / loop->av_ninsns; - if (nunroll > nunroll_by_av) - nunroll = nunroll_by_av; - if (nunroll > (unsigned)param_max_unroll_times) - nunroll = param_max_unroll_times; - - if (targetm.loop_unroll_adjust) - nunroll = targetm.loop_unroll_adjust(nunroll, loop); - - /* Skip big loops. */ - if (nunroll <= 1) { - if (dump_file) - fprintf(dump_file, ";; Not considering loop, is too big\n"); - return; - } - - /* Check for simple loops. */ - desc = get_simple_loop_desc(loop); - - /* Check number of iterations. */ - if (!desc->simple_p || !desc->const_iter || desc->assumptions) { - if (dump_file) - fprintf(dump_file, ";; Unable to prove that the loop iterates constant times\n"); - return; - } +static void decide_unroll_constant_iterations(class loop *loop, int flags) { + unsigned nunroll, nunroll_by_av, best_copies, best_unroll = 0, n_copies, i; + class niter_desc *desc; + widest_int iterations; + + /* If we were not asked to unroll this loop, just return back silently. */ + if (!(flags & UAP_UNROLL) && !loop->unroll) return; + + if (dump_enabled_p()) + dump_printf(MSG_NOTE, + "considering unrolling loop with constant " + "number of iterations\n"); + + /* nunroll = total number of copies of the original loop body in + unrolled loop (i.e. if it is 2, we have to duplicate loop body once). */ + nunroll = param_max_unrolled_insns / loop->ninsns; + nunroll_by_av = param_max_average_unrolled_insns / loop->av_ninsns; + if (nunroll > nunroll_by_av) nunroll = nunroll_by_av; + if (nunroll > (unsigned)param_max_unroll_times) + nunroll = param_max_unroll_times; + + if (targetm.loop_unroll_adjust) + nunroll = targetm.loop_unroll_adjust(nunroll, loop); + + /* Skip big loops. */ + if (nunroll <= 1) { + if (dump_file) fprintf(dump_file, ";; Not considering loop, is too big\n"); + return; + } - /* Check for an explicit unrolling factor. */ - if (loop->unroll > 0 && loop->unroll < USHRT_MAX) { - /* However we cannot unroll completely at the RTL level a loop with - constant number of iterations; it should have been peeled instead. */ - if (desc->niter == 0 || (unsigned)loop->unroll > desc->niter - 1) { - if (dump_file) - fprintf(dump_file, ";; Loop should have been peeled\n"); - } else { - loop->lpt_decision.decision = LPT_UNROLL_CONSTANT; - loop->lpt_decision.times = loop->unroll - 1; - } - return; - } + /* Check for simple loops. */ + desc = get_simple_loop_desc(loop); - /* Check whether the loop rolls enough to consider. - Consult also loop bounds and profile; in the case the loop has more - than one exit it may well loop less than determined maximal number - of iterations. */ - if (desc->niter < 2 * nunroll || - ((get_estimated_loop_iterations(loop, &iterations) || get_likely_max_loop_iterations(loop, &iterations)) && - wi::ltu_p(iterations, 2 * nunroll))) { - if (dump_file) - fprintf(dump_file, ";; Not unrolling loop, doesn't roll\n"); - return; + /* Check number of iterations. */ + if (!desc->simple_p || !desc->const_iter || desc->assumptions) { + if (dump_file) + fprintf(dump_file, + ";; Unable to prove that the loop iterates constant times\n"); + return; + } + + /* Check for an explicit unrolling factor. */ + if (loop->unroll > 0 && loop->unroll < USHRT_MAX) { + /* However we cannot unroll completely at the RTL level a loop with + constant number of iterations; it should have been peeled instead. */ + if (desc->niter == 0 || (unsigned)loop->unroll > desc->niter - 1) { + if (dump_file) fprintf(dump_file, ";; Loop should have been peeled\n"); + } else { + loop->lpt_decision.decision = LPT_UNROLL_CONSTANT; + loop->lpt_decision.times = loop->unroll - 1; } + return; + } + + /* Check whether the loop rolls enough to consider. + Consult also loop bounds and profile; in the case the loop has more + than one exit it may well loop less than determined maximal number + of iterations. */ + if (desc->niter < 2 * nunroll || + ((get_estimated_loop_iterations(loop, &iterations) || + get_likely_max_loop_iterations(loop, &iterations)) && + wi::ltu_p(iterations, 2 * nunroll))) { + if (dump_file) fprintf(dump_file, ";; Not unrolling loop, doesn't roll\n"); + return; + } - /* Success; now compute number of iterations to unroll. We alter - nunroll so that as few as possible copies of loop body are - necessary, while still not decreasing the number of unrollings - too much (at most by 1). */ - best_copies = 2 * nunroll + 10; + /* Success; now compute number of iterations to unroll. We alter + nunroll so that as few as possible copies of loop body are + necessary, while still not decreasing the number of unrollings + too much (at most by 1). */ + best_copies = 2 * nunroll + 10; - i = 2 * nunroll + 2; - if (i > desc->niter - 2) - i = desc->niter - 2; + i = 2 * nunroll + 2; + if (i > desc->niter - 2) i = desc->niter - 2; - for (; i >= nunroll - 1; i--) { - unsigned exit_mod = desc->niter % (i + 1); + for (; i >= nunroll - 1; i--) { + unsigned exit_mod = desc->niter % (i + 1); - if (!loop_exit_at_end_p(loop)) - n_copies = exit_mod + i + 1; - else if (exit_mod != (unsigned)i || desc->noloop_assumptions != NULL_RTX) - n_copies = exit_mod + i + 2; - else - n_copies = i + 1; + if (!loop_exit_at_end_p(loop)) + n_copies = exit_mod + i + 1; + else if (exit_mod != (unsigned)i || desc->noloop_assumptions != NULL_RTX) + n_copies = exit_mod + i + 2; + else + n_copies = i + 1; - if (n_copies < best_copies) { - best_copies = n_copies; - best_unroll = i; - } + if (n_copies < best_copies) { + best_copies = n_copies; + best_unroll = i; } + } - loop->lpt_decision.decision = LPT_UNROLL_CONSTANT; - loop->lpt_decision.times = best_unroll; + loop->lpt_decision.decision = LPT_UNROLL_CONSTANT; + loop->lpt_decision.times = best_unroll; } -/* Unroll LOOP with constant number of iterations LOOP->LPT_DECISION.TIMES times. - The transformation does this: +/* Unroll LOOP with constant number of iterations LOOP->LPT_DECISION.TIMES + times. The transformation does this: for (i = 0; i < 102; i++) body; @@ -2990,337 +3070,322 @@ static void decide_unroll_constant_iterations(class loop *loop, int flags) body; i++; } */ -static void unroll_loop_constant_iterations(class loop *loop) -{ - unsigned HOST_WIDE_INT niter; - unsigned exit_mod; - unsigned i; - edge e; - unsigned max_unroll = loop->lpt_decision.times; - class niter_desc *desc = get_simple_loop_desc(loop); - bool exit_at_end = loop_exit_at_end_p(loop); - struct opt_info *opt_info = NULL; - bool ok; - - niter = desc->niter; - - /* Should not get here (such loop should be peeled instead). */ - gcc_assert(niter > max_unroll + 1); - - exit_mod = niter % (max_unroll + 1); - - auto_sbitmap wont_exit(max_unroll + 2); - bitmap_ones(wont_exit); - - auto_vec remove_edges; - if (flag_split_ivs_in_unroller || flag_variable_expansion_in_unroller) - opt_info = analyze_insns_in_loop(loop); - - if (!exit_at_end) { - /* The exit is not at the end of the loop; leave exit test - in the first copy, so that the loops that start with test - of exit condition have continuous body after unrolling. */ - - if (dump_file) - fprintf(dump_file, ";; Condition at beginning of loop.\n"); - - /* Peel exit_mod iterations. */ - bitmap_clear_bit(wont_exit, 0); - if (desc->noloop_assumptions) - bitmap_clear_bit(wont_exit, 1); - - if (exit_mod) { - opt_info_start_duplication(opt_info); - ok = duplicate_loop_body_to_header_edge(loop, - loop_preheader_edge(loop), - exit_mod, - wont_exit, - desc->out_edge, - &remove_edges, - DLTHE_FLAG_UPDATE_FREQ | (opt_info && exit_mod > 1 ? DLTHE_RECORD_COPY_NUMBER : 0)); - gcc_assert(ok); - - if (opt_info && exit_mod > 1) - apply_opt_in_copies(opt_info, exit_mod, false, false); - - desc->noloop_assumptions = NULL_RTX; - desc->niter -= exit_mod; - loop->nb_iterations_upper_bound -= exit_mod; - if (loop->any_estimate && wi::leu_p(exit_mod, loop->nb_iterations_estimate)) - loop->nb_iterations_estimate -= exit_mod; - else - loop->any_estimate = false; - if (loop->any_likely_upper_bound && wi::leu_p(exit_mod, loop->nb_iterations_likely_upper_bound)) - loop->nb_iterations_likely_upper_bound -= exit_mod; - else - loop->any_likely_upper_bound = false; - } - - bitmap_set_bit(wont_exit, 1); - } else { - /* Leave exit test in last copy, for the same reason as above if - the loop tests the condition at the end of loop body. */ - - if (dump_file) - fprintf(dump_file, ";; Condition at end of loop.\n"); - - /* We know that niter >= max_unroll + 2; so we do not need to care of - case when we would exit before reaching the loop. So just peel - exit_mod + 1 iterations. */ - if (exit_mod != max_unroll || desc->noloop_assumptions) { - bitmap_clear_bit(wont_exit, 0); - if (desc->noloop_assumptions) - bitmap_clear_bit(wont_exit, 1); - - opt_info_start_duplication(opt_info); - ok = duplicate_loop_body_to_header_edge(loop, - loop_preheader_edge(loop), - exit_mod + 1, - wont_exit, - desc->out_edge, - &remove_edges, - DLTHE_FLAG_UPDATE_FREQ | (opt_info && exit_mod > 0 ? DLTHE_RECORD_COPY_NUMBER : 0)); - gcc_assert(ok); - - if (opt_info && exit_mod > 0) - apply_opt_in_copies(opt_info, exit_mod + 1, false, false); - - desc->niter -= exit_mod + 1; - loop->nb_iterations_upper_bound -= exit_mod + 1; - if (loop->any_estimate && wi::leu_p(exit_mod + 1, loop->nb_iterations_estimate)) - loop->nb_iterations_estimate -= exit_mod + 1; - else - loop->any_estimate = false; - if (loop->any_likely_upper_bound && wi::leu_p(exit_mod + 1, loop->nb_iterations_likely_upper_bound)) - loop->nb_iterations_likely_upper_bound -= exit_mod + 1; - else - loop->any_likely_upper_bound = false; - desc->noloop_assumptions = NULL_RTX; - - bitmap_set_bit(wont_exit, 0); - bitmap_set_bit(wont_exit, 1); - } - - bitmap_clear_bit(wont_exit, max_unroll); +static void unroll_loop_constant_iterations(class loop *loop) { + unsigned HOST_WIDE_INT niter; + unsigned exit_mod; + unsigned i; + edge e; + unsigned max_unroll = loop->lpt_decision.times; + class niter_desc *desc = get_simple_loop_desc(loop); + bool exit_at_end = loop_exit_at_end_p(loop); + struct opt_info *opt_info = NULL; + bool ok; + + niter = desc->niter; + + /* Should not get here (such loop should be peeled instead). */ + gcc_assert(niter > max_unroll + 1); + + exit_mod = niter % (max_unroll + 1); + + auto_sbitmap wont_exit(max_unroll + 2); + bitmap_ones(wont_exit); + + auto_vec remove_edges; + if (flag_split_ivs_in_unroller || flag_variable_expansion_in_unroller) + opt_info = analyze_insns_in_loop(loop); + + if (!exit_at_end) { + /* The exit is not at the end of the loop; leave exit test + in the first copy, so that the loops that start with test + of exit condition have continuous body after unrolling. */ + + if (dump_file) fprintf(dump_file, ";; Condition at beginning of loop.\n"); + + /* Peel exit_mod iterations. */ + bitmap_clear_bit(wont_exit, 0); + if (desc->noloop_assumptions) bitmap_clear_bit(wont_exit, 1); + + if (exit_mod) { + opt_info_start_duplication(opt_info); + ok = duplicate_loop_body_to_header_edge( + loop, loop_preheader_edge(loop), exit_mod, wont_exit, desc->out_edge, + &remove_edges, + DLTHE_FLAG_UPDATE_FREQ | + (opt_info && exit_mod > 1 ? DLTHE_RECORD_COPY_NUMBER : 0)); + gcc_assert(ok); + + if (opt_info && exit_mod > 1) + apply_opt_in_copies(opt_info, exit_mod, false, false); + + desc->noloop_assumptions = NULL_RTX; + desc->niter -= exit_mod; + loop->nb_iterations_upper_bound -= exit_mod; + if (loop->any_estimate && + wi::leu_p(exit_mod, loop->nb_iterations_estimate)) + loop->nb_iterations_estimate -= exit_mod; + else + loop->any_estimate = false; + if (loop->any_likely_upper_bound && + wi::leu_p(exit_mod, loop->nb_iterations_likely_upper_bound)) + loop->nb_iterations_likely_upper_bound -= exit_mod; + else + loop->any_likely_upper_bound = false; } - /* Now unroll the loop. */ - - opt_info_start_duplication(opt_info); - ok = duplicate_loop_body_to_header_edge(loop, - loop_latch_edge(loop), - max_unroll, - wont_exit, - desc->out_edge, - &remove_edges, - DLTHE_FLAG_UPDATE_FREQ | (opt_info ? DLTHE_RECORD_COPY_NUMBER : 0)); - gcc_assert(ok); - - if (opt_info) { - apply_opt_in_copies(opt_info, max_unroll, true, true); - free_opt_info(opt_info); + bitmap_set_bit(wont_exit, 1); + } else { + /* Leave exit test in last copy, for the same reason as above if + the loop tests the condition at the end of loop body. */ + + if (dump_file) fprintf(dump_file, ";; Condition at end of loop.\n"); + + /* We know that niter >= max_unroll + 2; so we do not need to care of + case when we would exit before reaching the loop. So just peel + exit_mod + 1 iterations. */ + if (exit_mod != max_unroll || desc->noloop_assumptions) { + bitmap_clear_bit(wont_exit, 0); + if (desc->noloop_assumptions) bitmap_clear_bit(wont_exit, 1); + + opt_info_start_duplication(opt_info); + ok = duplicate_loop_body_to_header_edge( + loop, loop_preheader_edge(loop), exit_mod + 1, wont_exit, + desc->out_edge, &remove_edges, + DLTHE_FLAG_UPDATE_FREQ | + (opt_info && exit_mod > 0 ? DLTHE_RECORD_COPY_NUMBER : 0)); + gcc_assert(ok); + + if (opt_info && exit_mod > 0) + apply_opt_in_copies(opt_info, exit_mod + 1, false, false); + + desc->niter -= exit_mod + 1; + loop->nb_iterations_upper_bound -= exit_mod + 1; + if (loop->any_estimate && + wi::leu_p(exit_mod + 1, loop->nb_iterations_estimate)) + loop->nb_iterations_estimate -= exit_mod + 1; + else + loop->any_estimate = false; + if (loop->any_likely_upper_bound && + wi::leu_p(exit_mod + 1, loop->nb_iterations_likely_upper_bound)) + loop->nb_iterations_likely_upper_bound -= exit_mod + 1; + else + loop->any_likely_upper_bound = false; + desc->noloop_assumptions = NULL_RTX; + + bitmap_set_bit(wont_exit, 0); + bitmap_set_bit(wont_exit, 1); } - if (exit_at_end) { - basic_block exit_block = get_bb_copy(desc->in_edge->src); - /* Find a new in and out edge; they are in the last copy we have made. */ + bitmap_clear_bit(wont_exit, max_unroll); + } - if (EDGE_SUCC(exit_block, 0)->dest == desc->out_edge->dest) { - desc->out_edge = EDGE_SUCC(exit_block, 0); - desc->in_edge = EDGE_SUCC(exit_block, 1); - } else { - desc->out_edge = EDGE_SUCC(exit_block, 1); - desc->in_edge = EDGE_SUCC(exit_block, 0); - } - } + /* Now unroll the loop. */ - desc->niter /= max_unroll + 1; - loop->nb_iterations_upper_bound = wi::udiv_trunc(loop->nb_iterations_upper_bound, max_unroll + 1); - if (loop->any_estimate) - loop->nb_iterations_estimate = wi::udiv_trunc(loop->nb_iterations_estimate, max_unroll + 1); - if (loop->any_likely_upper_bound) - loop->nb_iterations_likely_upper_bound = wi::udiv_trunc(loop->nb_iterations_likely_upper_bound, max_unroll + 1); - desc->niter_expr = gen_int_mode(desc->niter, desc->mode); + opt_info_start_duplication(opt_info); + ok = duplicate_loop_body_to_header_edge( + loop, loop_latch_edge(loop), max_unroll, wont_exit, desc->out_edge, + &remove_edges, + DLTHE_FLAG_UPDATE_FREQ | (opt_info ? DLTHE_RECORD_COPY_NUMBER : 0)); + gcc_assert(ok); - /* Remove the edges. */ - FOR_EACH_VEC_ELT(remove_edges, i, e) - remove_path(e); + if (opt_info) { + apply_opt_in_copies(opt_info, max_unroll, true, true); + free_opt_info(opt_info); + } - if (dump_file) - fprintf(dump_file, + if (exit_at_end) { + basic_block exit_block = get_bb_copy(desc->in_edge->src); + /* Find a new in and out edge; they are in the last copy we have made. */ + + if (EDGE_SUCC(exit_block, 0)->dest == desc->out_edge->dest) { + desc->out_edge = EDGE_SUCC(exit_block, 0); + desc->in_edge = EDGE_SUCC(exit_block, 1); + } else { + desc->out_edge = EDGE_SUCC(exit_block, 1); + desc->in_edge = EDGE_SUCC(exit_block, 0); + } + } + + desc->niter /= max_unroll + 1; + loop->nb_iterations_upper_bound = + wi::udiv_trunc(loop->nb_iterations_upper_bound, max_unroll + 1); + if (loop->any_estimate) + loop->nb_iterations_estimate = + wi::udiv_trunc(loop->nb_iterations_estimate, max_unroll + 1); + if (loop->any_likely_upper_bound) + loop->nb_iterations_likely_upper_bound = + wi::udiv_trunc(loop->nb_iterations_likely_upper_bound, max_unroll + 1); + desc->niter_expr = gen_int_mode(desc->niter, desc->mode); + + /* Remove the edges. */ + FOR_EACH_VEC_ELT(remove_edges, i, e) + remove_path(e); + + if (dump_file) + fprintf(dump_file, ";; Unrolled loop %d times, constant # of iterations %i insns\n", - max_unroll, - num_loop_insns(loop)); + max_unroll, num_loop_insns(loop)); } /* Decide whether to unroll LOOP iterating runtime computable number of times and how much. */ -static void decide_unroll_runtime_iterations(class loop *loop, int flags) -{ - unsigned nunroll, nunroll_by_av, i; - class niter_desc *desc; - widest_int iterations; - - /* If we were not asked to unroll this loop, just return back silently. */ - if (!(flags & UAP_UNROLL) && !loop->unroll) - return; - - if (dump_enabled_p()) - dump_printf(MSG_NOTE, - "considering unrolling loop with runtime-" - "computable number of iterations\n"); - - /* nunroll = total number of copies of the original loop body in - unrolled loop (i.e. if it is 2, we have to duplicate loop body once. */ - nunroll = param_max_unrolled_insns / loop->ninsns; - nunroll_by_av = param_max_average_unrolled_insns / loop->av_ninsns; - if (nunroll > nunroll_by_av) - nunroll = nunroll_by_av; - if (nunroll > (unsigned)param_max_unroll_times) - nunroll = param_max_unroll_times; - - if (targetm.loop_unroll_adjust) - nunroll = targetm.loop_unroll_adjust(nunroll, loop); - - if (loop->unroll > 0 && loop->unroll < USHRT_MAX) - nunroll = loop->unroll; - - /* Skip big loops. */ - if (nunroll <= 1) { - if (dump_file) - fprintf(dump_file, ";; Not considering loop, is too big\n"); - return; - } +static void decide_unroll_runtime_iterations(class loop *loop, int flags) { + unsigned nunroll, nunroll_by_av, i; + class niter_desc *desc; + widest_int iterations; + + /* If we were not asked to unroll this loop, just return back silently. */ + if (!(flags & UAP_UNROLL) && !loop->unroll) return; + + if (dump_enabled_p()) + dump_printf(MSG_NOTE, + "considering unrolling loop with runtime-" + "computable number of iterations\n"); + + /* nunroll = total number of copies of the original loop body in + unrolled loop (i.e. if it is 2, we have to duplicate loop body once. */ + nunroll = param_max_unrolled_insns / loop->ninsns; + nunroll_by_av = param_max_average_unrolled_insns / loop->av_ninsns; + if (nunroll > nunroll_by_av) nunroll = nunroll_by_av; + if (nunroll > (unsigned)param_max_unroll_times) + nunroll = param_max_unroll_times; + + if (targetm.loop_unroll_adjust) + nunroll = targetm.loop_unroll_adjust(nunroll, loop); + + if (loop->unroll > 0 && loop->unroll < USHRT_MAX) nunroll = loop->unroll; + + /* Skip big loops. */ + if (nunroll <= 1) { + if (dump_file) fprintf(dump_file, ";; Not considering loop, is too big\n"); + return; + } - /* Check for simple loops. */ - desc = get_simple_loop_desc(loop); + /* Check for simple loops. */ + desc = get_simple_loop_desc(loop); - /* Check simpleness. */ - if (!desc->simple_p || desc->assumptions) { - if (dump_file) - fprintf(dump_file, - ";; Unable to prove that the number of iterations " - "can be counted in runtime\n"); - return; - } + /* Check simpleness. */ + if (!desc->simple_p || desc->assumptions) { + if (dump_file) + fprintf(dump_file, + ";; Unable to prove that the number of iterations " + "can be counted in runtime\n"); + return; + } - if (desc->const_iter) { - if (dump_file) - fprintf(dump_file, ";; Loop iterates constant times\n"); - return; - } + if (desc->const_iter) { + if (dump_file) fprintf(dump_file, ";; Loop iterates constant times\n"); + return; + } - /* Check whether the loop rolls. */ - if ((get_estimated_loop_iterations(loop, &iterations) || get_likely_max_loop_iterations(loop, &iterations)) && - wi::ltu_p(iterations, 2 * nunroll)) { - if (dump_file) - fprintf(dump_file, ";; Not unrolling loop, doesn't roll\n"); - return; - } + /* Check whether the loop rolls. */ + if ((get_estimated_loop_iterations(loop, &iterations) || + get_likely_max_loop_iterations(loop, &iterations)) && + wi::ltu_p(iterations, 2 * nunroll)) { + if (dump_file) fprintf(dump_file, ";; Not unrolling loop, doesn't roll\n"); + return; + } - /* Success; now force nunroll to be power of 2, as code-gen - requires it, we are unable to cope with overflows in - computation of number of iterations. */ - for (i = 1; 2 * i <= nunroll; i *= 2) - continue; + /* Success; now force nunroll to be power of 2, as code-gen + requires it, we are unable to cope with overflows in + computation of number of iterations. */ + for (i = 1; 2 * i <= nunroll; i *= 2) continue; - loop->lpt_decision.decision = LPT_UNROLL_RUNTIME; - loop->lpt_decision.times = i - 1; + loop->lpt_decision.decision = LPT_UNROLL_RUNTIME; + loop->lpt_decision.times = i - 1; } /* Splits edge E and inserts the sequence of instructions INSNS on it, and returns the newly created block. If INSNS is NULL_RTX, nothing is changed and NULL is returned instead. */ -basic_block split_edge_and_insert(edge e, rtx_insn *insns) -{ - basic_block bb; - - if (!insns) - return NULL; - bb = split_edge(e); - emit_insn_after(insns, BB_END(bb)); - - /* ??? We used to assume that INSNS can contain control flow insns, and - that we had to try to find sub basic blocks in BB to maintain a valid - CFG. For this purpose we used to set the BB_SUPERBLOCK flag on BB - and call break_superblocks when going out of cfglayout mode. But it - turns out that this never happens; and that if it does ever happen, - the verify_flow_info at the end of the RTL loop passes would fail. - - There are two reasons why we expected we could have control flow insns - in INSNS. The first is when a comparison has to be done in parts, and - the second is when the number of iterations is computed for loops with - the number of iterations known at runtime. In both cases, test cases - to get control flow in INSNS appear to be impossible to construct: - - * If do_compare_rtx_and_jump needs several branches to do comparison - in a mode that needs comparison by parts, we cannot analyze the - number of iterations of the loop, and we never get to unrolling it. - - * The code in expand_divmod that was suspected to cause creation of - branching code seems to be only accessed for signed division. The - divisions used by # of iterations analysis are always unsigned. - Problems might arise on architectures that emits branching code - for some operations that may appear in the unroller (especially - for division), but we have no such architectures. - - Considering all this, it was decided that we should for now assume - that INSNS can in theory contain control flow insns, but in practice - it never does. So we don't handle the theoretical case, and should - a real failure ever show up, we have a pretty good clue for how to - fix it. */ - - return bb; +basic_block split_edge_and_insert(edge e, rtx_insn *insns) { + basic_block bb; + + if (!insns) return NULL; + bb = split_edge(e); + emit_insn_after(insns, BB_END(bb)); + + /* ??? We used to assume that INSNS can contain control flow insns, and + that we had to try to find sub basic blocks in BB to maintain a valid + CFG. For this purpose we used to set the BB_SUPERBLOCK flag on BB + and call break_superblocks when going out of cfglayout mode. But it + turns out that this never happens; and that if it does ever happen, + the verify_flow_info at the end of the RTL loop passes would fail. + + There are two reasons why we expected we could have control flow insns + in INSNS. The first is when a comparison has to be done in parts, and + the second is when the number of iterations is computed for loops with + the number of iterations known at runtime. In both cases, test cases + to get control flow in INSNS appear to be impossible to construct: + + * If do_compare_rtx_and_jump needs several branches to do comparison + in a mode that needs comparison by parts, we cannot analyze the + number of iterations of the loop, and we never get to unrolling it. + + * The code in expand_divmod that was suspected to cause creation of + branching code seems to be only accessed for signed division. The + divisions used by # of iterations analysis are always unsigned. + Problems might arise on architectures that emits branching code + for some operations that may appear in the unroller (especially + for division), but we have no such architectures. + + Considering all this, it was decided that we should for now assume + that INSNS can in theory contain control flow insns, but in practice + it never does. So we don't handle the theoretical case, and should + a real failure ever show up, we have a pretty good clue for how to + fix it. */ + + return bb; } /* Prepare a sequence comparing OP0 with OP1 using COMP and jumping to LABEL if true, with probability PROB. If CINSN is not NULL, it is the insn to copy in order to create a jump. */ -static rtx_insn *compare_and_jump_seq( - rtx op0, rtx op1, enum rtx_code comp, rtx_code_label *label, profile_probability prob, rtx_insn *cinsn) -{ - rtx_insn *seq; - rtx_jump_insn *jump; - rtx cond; - machine_mode mode; - - mode = GET_MODE(op0); - if (mode == VOIDmode) - mode = GET_MODE(op1); - - start_sequence(); - if (GET_MODE_CLASS(mode) == MODE_CC) { - /* A hack -- there seems to be no easy generic way how to make a - conditional jump from a ccmode comparison. */ - gcc_assert(cinsn); - cond = XEXP(SET_SRC(pc_set(cinsn)), 0); - gcc_assert(GET_CODE(cond) == comp); - gcc_assert(rtx_equal_p(op0, XEXP(cond, 0))); - gcc_assert(rtx_equal_p(op1, XEXP(cond, 1))); - emit_jump_insn(copy_insn(PATTERN(cinsn))); - jump = as_a(get_last_insn()); - JUMP_LABEL(jump) = JUMP_LABEL(cinsn); - LABEL_NUSES(JUMP_LABEL(jump))++; - redirect_jump(jump, label, 0); - } else { - gcc_assert(!cinsn); - - op0 = force_operand(op0, NULL_RTX); - op1 = force_operand(op1, NULL_RTX); - do_compare_rtx_and_jump(op0, op1, comp, 0, mode, NULL_RTX, NULL, label, profile_probability::uninitialized()); - jump = as_a(get_last_insn()); - jump->set_jump_target(label); - LABEL_NUSES(label)++; - } - if (prob.initialized_p()) - add_reg_br_prob_note(jump, prob); - - seq = get_insns(); - end_sequence(); - - return seq; +static rtx_insn *compare_and_jump_seq(rtx op0, rtx op1, enum rtx_code comp, + rtx_code_label *label, + profile_probability prob, + rtx_insn *cinsn) { + rtx_insn *seq; + rtx_jump_insn *jump; + rtx cond; + machine_mode mode; + + mode = GET_MODE(op0); + if (mode == VOIDmode) mode = GET_MODE(op1); + + start_sequence(); + if (GET_MODE_CLASS(mode) == MODE_CC) { + /* A hack -- there seems to be no easy generic way how to make a + conditional jump from a ccmode comparison. */ + gcc_assert(cinsn); + cond = XEXP(SET_SRC(pc_set(cinsn)), 0); + gcc_assert(GET_CODE(cond) == comp); + gcc_assert(rtx_equal_p(op0, XEXP(cond, 0))); + gcc_assert(rtx_equal_p(op1, XEXP(cond, 1))); + emit_jump_insn(copy_insn(PATTERN(cinsn))); + jump = as_a(get_last_insn()); + JUMP_LABEL(jump) = JUMP_LABEL(cinsn); + LABEL_NUSES(JUMP_LABEL(jump))++; + redirect_jump(jump, label, 0); + } else { + gcc_assert(!cinsn); + + op0 = force_operand(op0, NULL_RTX); + op1 = force_operand(op1, NULL_RTX); + do_compare_rtx_and_jump(op0, op1, comp, 0, mode, NULL_RTX, NULL, label, + profile_probability::uninitialized()); + jump = as_a(get_last_insn()); + jump->set_jump_target(label); + LABEL_NUSES(label)++; + } + if (prob.initialized_p()) add_reg_br_prob_note(jump, prob); + + seq = get_insns(); + end_sequence(); + + return seq; } /* Unroll LOOP for which we are able to count number of iterations in @@ -3355,306 +3420,303 @@ static rtx_insn *compare_and_jump_seq( body; i++; } */ -static void unroll_loop_runtime_iterations(class loop *loop) -{ - rtx old_niter, niter, tmp; - rtx_insn *init_code, *branch_code; - unsigned i; - profile_probability p; - basic_block preheader, *body, swtch, ezc_swtch = NULL; - int may_exit_copy; - profile_count iter_count, new_count; - unsigned n_peel; - edge e; - bool extra_zero_check, last_may_exit; - unsigned max_unroll = loop->lpt_decision.times; - class niter_desc *desc = get_simple_loop_desc(loop); - bool exit_at_end = loop_exit_at_end_p(loop); - struct opt_info *opt_info = NULL; - bool ok; - - if (flag_split_ivs_in_unroller || flag_variable_expansion_in_unroller) - opt_info = analyze_insns_in_loop(loop); - - /* Remember blocks whose dominators will have to be updated. */ - auto_vec dom_bbs; - - body = get_loop_body(loop); - for (i = 0; i < loop->num_nodes; i++) { - for (basic_block bb : get_dominated_by(CDI_DOMINATORS, body[i])) - if (!flow_bb_inside_loop_p(loop, bb)) - dom_bbs.safe_push(bb); - } - free(body); - - if (!exit_at_end) { - /* Leave exit in first copy (for explanation why see comment in - unroll_loop_constant_iterations). */ - may_exit_copy = 0; - n_peel = max_unroll - 1; - extra_zero_check = true; - last_may_exit = false; - } else { - /* Leave exit in last copy (for explanation why see comment in - unroll_loop_constant_iterations). */ - may_exit_copy = max_unroll; - n_peel = max_unroll; - extra_zero_check = false; - last_may_exit = true; - } - - /* Get expression for number of iterations. */ - start_sequence(); - old_niter = niter = gen_reg_rtx(desc->mode); - tmp = force_operand(copy_rtx(desc->niter_expr), niter); - if (tmp != niter) - emit_move_insn(niter, tmp); - - /* For loops that exit at end and whose number of iterations is reliable, - add one to niter to account for first pass through loop body before - reaching exit test. */ - if (exit_at_end && !desc->noloop_assumptions) { - niter = expand_simple_binop(desc->mode, PLUS, niter, const1_rtx, NULL_RTX, 0, OPTAB_LIB_WIDEN); - old_niter = niter; - } - - /* Count modulo by ANDing it with max_unroll; we use the fact that - the number of unrollings is a power of two, and thus this is correct - even if there is overflow in the computation. */ - niter = - expand_simple_binop(desc->mode, AND, niter, gen_int_mode(max_unroll, desc->mode), NULL_RTX, 0, OPTAB_LIB_WIDEN); - - init_code = get_insns(); - end_sequence(); - unshare_all_rtl_in_chain(init_code); - - /* Precondition the loop. */ - split_edge_and_insert(loop_preheader_edge(loop), init_code); - - auto_vec remove_edges; - - auto_sbitmap wont_exit(max_unroll + 2); - - if (extra_zero_check || desc->noloop_assumptions) { - /* Peel the first copy of loop body. Leave the exit test if the number - of iterations is not reliable. Also record the place of the extra zero - check. */ - bitmap_clear(wont_exit); - if (!desc->noloop_assumptions) - bitmap_set_bit(wont_exit, 1); - ezc_swtch = loop_preheader_edge(loop)->src; - ok = duplicate_loop_body_to_header_edge( - loop, loop_preheader_edge(loop), 1, wont_exit, desc->out_edge, &remove_edges, DLTHE_FLAG_UPDATE_FREQ); - gcc_assert(ok); - } - - /* Record the place where switch will be built for preconditioning. */ - swtch = split_edge(loop_preheader_edge(loop)); - - /* Compute count increments for each switch block and initialize - innermost switch block. Switch blocks and peeled loop copies are built - from innermost outward. */ - iter_count = new_count = swtch->count.apply_scale(1, max_unroll + 1); - swtch->count = new_count; - - for (i = 0; i < n_peel; i++) { - /* Peel the copy. */ - bitmap_clear(wont_exit); - if (i != n_peel - 1 || !last_may_exit) - bitmap_set_bit(wont_exit, 1); - ok = duplicate_loop_body_to_header_edge( - loop, loop_preheader_edge(loop), 1, wont_exit, desc->out_edge, &remove_edges, DLTHE_FLAG_UPDATE_FREQ); - gcc_assert(ok); - - /* Create item for switch. */ - unsigned j = n_peel - i - (extra_zero_check ? 0 : 1); - p = profile_probability::always().apply_scale(1, i + 2); - - preheader = split_edge(loop_preheader_edge(loop)); - /* Add in count of edge from switch block. */ - preheader->count += iter_count; - branch_code = - compare_and_jump_seq(copy_rtx(niter), gen_int_mode(j, desc->mode), EQ, block_label(preheader), p, NULL); - - /* We rely on the fact that the compare and jump cannot be optimized out, - and hence the cfg we create is correct. */ - gcc_assert(branch_code != NULL_RTX); - - swtch = split_edge_and_insert(single_pred_edge(swtch), branch_code); - set_immediate_dominator(CDI_DOMINATORS, preheader, swtch); - single_succ_edge(swtch)->probability = p.invert(); - new_count += iter_count; - swtch->count = new_count; - e = make_edge(swtch, preheader, single_succ_edge(swtch)->flags & EDGE_IRREDUCIBLE_LOOP); - e->probability = p; - } - - if (extra_zero_check) { - /* Add branch for zero iterations. */ - p = profile_probability::always().apply_scale(1, max_unroll + 1); - swtch = ezc_swtch; - preheader = split_edge(loop_preheader_edge(loop)); - /* Recompute count adjustments since initial peel copy may - have exited and reduced those values that were computed above. */ - iter_count = swtch->count.apply_scale(1, max_unroll + 1); - /* Add in count of edge from switch block. */ - preheader->count += iter_count; - branch_code = compare_and_jump_seq(copy_rtx(niter), const0_rtx, EQ, block_label(preheader), p, NULL); - gcc_assert(branch_code != NULL_RTX); - - swtch = split_edge_and_insert(single_succ_edge(swtch), branch_code); - set_immediate_dominator(CDI_DOMINATORS, preheader, swtch); - single_succ_edge(swtch)->probability = p.invert(); - e = make_edge(swtch, preheader, single_succ_edge(swtch)->flags & EDGE_IRREDUCIBLE_LOOP); - e->probability = p; - } - - /* Recount dominators for outer blocks. */ - iterate_fix_dominators(CDI_DOMINATORS, dom_bbs, false); - - /* And unroll loop. */ - - bitmap_ones(wont_exit); - bitmap_clear_bit(wont_exit, may_exit_copy); - opt_info_start_duplication(opt_info); - - ok = duplicate_loop_body_to_header_edge(loop, - loop_latch_edge(loop), - max_unroll, - wont_exit, - desc->out_edge, - &remove_edges, - DLTHE_FLAG_UPDATE_FREQ | (opt_info ? DLTHE_RECORD_COPY_NUMBER : 0)); +static void unroll_loop_runtime_iterations(class loop *loop) { + rtx old_niter, niter, tmp; + rtx_insn *init_code, *branch_code; + unsigned i; + profile_probability p; + basic_block preheader, *body, swtch, ezc_swtch = NULL; + int may_exit_copy; + profile_count iter_count, new_count; + unsigned n_peel; + edge e; + bool extra_zero_check, last_may_exit; + unsigned max_unroll = loop->lpt_decision.times; + class niter_desc *desc = get_simple_loop_desc(loop); + bool exit_at_end = loop_exit_at_end_p(loop); + struct opt_info *opt_info = NULL; + bool ok; + + if (flag_split_ivs_in_unroller || flag_variable_expansion_in_unroller) + opt_info = analyze_insns_in_loop(loop); + + /* Remember blocks whose dominators will have to be updated. */ + auto_vec dom_bbs; + + body = get_loop_body(loop); + for (i = 0; i < loop->num_nodes; i++) { + for (basic_block bb : get_dominated_by(CDI_DOMINATORS, body[i])) + if (!flow_bb_inside_loop_p(loop, bb)) dom_bbs.safe_push(bb); + } + free(body); + + if (!exit_at_end) { + /* Leave exit in first copy (for explanation why see comment in + unroll_loop_constant_iterations). */ + may_exit_copy = 0; + n_peel = max_unroll - 1; + extra_zero_check = true; + last_may_exit = false; + } else { + /* Leave exit in last copy (for explanation why see comment in + unroll_loop_constant_iterations). */ + may_exit_copy = max_unroll; + n_peel = max_unroll; + extra_zero_check = false; + last_may_exit = true; + } + + /* Get expression for number of iterations. */ + start_sequence(); + old_niter = niter = gen_reg_rtx(desc->mode); + tmp = force_operand(copy_rtx(desc->niter_expr), niter); + if (tmp != niter) emit_move_insn(niter, tmp); + + /* For loops that exit at end and whose number of iterations is reliable, + add one to niter to account for first pass through loop body before + reaching exit test. */ + if (exit_at_end && !desc->noloop_assumptions) { + niter = expand_simple_binop(desc->mode, PLUS, niter, const1_rtx, NULL_RTX, + 0, OPTAB_LIB_WIDEN); + old_niter = niter; + } + + /* Count modulo by ANDing it with max_unroll; we use the fact that + the number of unrollings is a power of two, and thus this is correct + even if there is overflow in the computation. */ + niter = expand_simple_binop(desc->mode, AND, niter, + gen_int_mode(max_unroll, desc->mode), NULL_RTX, 0, + OPTAB_LIB_WIDEN); + + init_code = get_insns(); + end_sequence(); + unshare_all_rtl_in_chain(init_code); + + /* Precondition the loop. */ + split_edge_and_insert(loop_preheader_edge(loop), init_code); + + auto_vec remove_edges; + + auto_sbitmap wont_exit(max_unroll + 2); + + if (extra_zero_check || desc->noloop_assumptions) { + /* Peel the first copy of loop body. Leave the exit test if the number + of iterations is not reliable. Also record the place of the extra zero + check. */ + bitmap_clear(wont_exit); + if (!desc->noloop_assumptions) bitmap_set_bit(wont_exit, 1); + ezc_swtch = loop_preheader_edge(loop)->src; + ok = duplicate_loop_body_to_header_edge( + loop, loop_preheader_edge(loop), 1, wont_exit, desc->out_edge, + &remove_edges, DLTHE_FLAG_UPDATE_FREQ); gcc_assert(ok); + } - if (opt_info) { - apply_opt_in_copies(opt_info, max_unroll, true, true); - free_opt_info(opt_info); - } + /* Record the place where switch will be built for preconditioning. */ + swtch = split_edge(loop_preheader_edge(loop)); - if (exit_at_end) { - basic_block exit_block = get_bb_copy(desc->in_edge->src); - /* Find a new in and out edge; they are in the last copy we have - made. */ + /* Compute count increments for each switch block and initialize + innermost switch block. Switch blocks and peeled loop copies are built + from innermost outward. */ + iter_count = new_count = swtch->count.apply_scale(1, max_unroll + 1); + swtch->count = new_count; - if (EDGE_SUCC(exit_block, 0)->dest == desc->out_edge->dest) { - desc->out_edge = EDGE_SUCC(exit_block, 0); - desc->in_edge = EDGE_SUCC(exit_block, 1); - } else { - desc->out_edge = EDGE_SUCC(exit_block, 1); - desc->in_edge = EDGE_SUCC(exit_block, 0); - } - } + for (i = 0; i < n_peel; i++) { + /* Peel the copy. */ + bitmap_clear(wont_exit); + if (i != n_peel - 1 || !last_may_exit) bitmap_set_bit(wont_exit, 1); + ok = duplicate_loop_body_to_header_edge( + loop, loop_preheader_edge(loop), 1, wont_exit, desc->out_edge, + &remove_edges, DLTHE_FLAG_UPDATE_FREQ); + gcc_assert(ok); - /* Remove the edges. */ - FOR_EACH_VEC_ELT(remove_edges, i, e) - remove_path(e); - - /* We must be careful when updating the number of iterations due to - preconditioning and the fact that the value must be valid at entry - of the loop. After passing through the above code, we see that - the correct new number of iterations is this: */ - gcc_assert(!desc->const_iter); - desc->niter_expr = simplify_gen_binary(UDIV, desc->mode, old_niter, gen_int_mode(max_unroll + 1, desc->mode)); - loop->nb_iterations_upper_bound = wi::udiv_trunc(loop->nb_iterations_upper_bound, max_unroll + 1); - if (loop->any_estimate) - loop->nb_iterations_estimate = wi::udiv_trunc(loop->nb_iterations_estimate, max_unroll + 1); - if (loop->any_likely_upper_bound) - loop->nb_iterations_likely_upper_bound = wi::udiv_trunc(loop->nb_iterations_likely_upper_bound, max_unroll + 1); - if (exit_at_end) { - desc->niter_expr = simplify_gen_binary(MINUS, desc->mode, desc->niter_expr, const1_rtx); - desc->noloop_assumptions = NULL_RTX; - --loop->nb_iterations_upper_bound; - if (loop->any_estimate && loop->nb_iterations_estimate != 0) - --loop->nb_iterations_estimate; - else - loop->any_estimate = false; - if (loop->any_likely_upper_bound && loop->nb_iterations_likely_upper_bound != 0) - --loop->nb_iterations_likely_upper_bound; - else - loop->any_likely_upper_bound = false; + /* Create item for switch. */ + unsigned j = n_peel - i - (extra_zero_check ? 0 : 1); + p = profile_probability::always().apply_scale(1, i + 2); + + preheader = split_edge(loop_preheader_edge(loop)); + /* Add in count of edge from switch block. */ + preheader->count += iter_count; + branch_code = + compare_and_jump_seq(copy_rtx(niter), gen_int_mode(j, desc->mode), EQ, + block_label(preheader), p, NULL); + + /* We rely on the fact that the compare and jump cannot be optimized out, + and hence the cfg we create is correct. */ + gcc_assert(branch_code != NULL_RTX); + + swtch = split_edge_and_insert(single_pred_edge(swtch), branch_code); + set_immediate_dominator(CDI_DOMINATORS, preheader, swtch); + single_succ_edge(swtch)->probability = p.invert(); + new_count += iter_count; + swtch->count = new_count; + e = make_edge(swtch, preheader, + single_succ_edge(swtch)->flags & EDGE_IRREDUCIBLE_LOOP); + e->probability = p; + } + + if (extra_zero_check) { + /* Add branch for zero iterations. */ + p = profile_probability::always().apply_scale(1, max_unroll + 1); + swtch = ezc_swtch; + preheader = split_edge(loop_preheader_edge(loop)); + /* Recompute count adjustments since initial peel copy may + have exited and reduced those values that were computed above. */ + iter_count = swtch->count.apply_scale(1, max_unroll + 1); + /* Add in count of edge from switch block. */ + preheader->count += iter_count; + branch_code = compare_and_jump_seq(copy_rtx(niter), const0_rtx, EQ, + block_label(preheader), p, NULL); + gcc_assert(branch_code != NULL_RTX); + + swtch = split_edge_and_insert(single_succ_edge(swtch), branch_code); + set_immediate_dominator(CDI_DOMINATORS, preheader, swtch); + single_succ_edge(swtch)->probability = p.invert(); + e = make_edge(swtch, preheader, + single_succ_edge(swtch)->flags & EDGE_IRREDUCIBLE_LOOP); + e->probability = p; + } + + /* Recount dominators for outer blocks. */ + iterate_fix_dominators(CDI_DOMINATORS, dom_bbs, false); + + /* And unroll loop. */ + + bitmap_ones(wont_exit); + bitmap_clear_bit(wont_exit, may_exit_copy); + opt_info_start_duplication(opt_info); + + ok = duplicate_loop_body_to_header_edge( + loop, loop_latch_edge(loop), max_unroll, wont_exit, desc->out_edge, + &remove_edges, + DLTHE_FLAG_UPDATE_FREQ | (opt_info ? DLTHE_RECORD_COPY_NUMBER : 0)); + gcc_assert(ok); + + if (opt_info) { + apply_opt_in_copies(opt_info, max_unroll, true, true); + free_opt_info(opt_info); + } + + if (exit_at_end) { + basic_block exit_block = get_bb_copy(desc->in_edge->src); + /* Find a new in and out edge; they are in the last copy we have + made. */ + + if (EDGE_SUCC(exit_block, 0)->dest == desc->out_edge->dest) { + desc->out_edge = EDGE_SUCC(exit_block, 0); + desc->in_edge = EDGE_SUCC(exit_block, 1); + } else { + desc->out_edge = EDGE_SUCC(exit_block, 1); + desc->in_edge = EDGE_SUCC(exit_block, 0); } + } + + /* Remove the edges. */ + FOR_EACH_VEC_ELT(remove_edges, i, e) + remove_path(e); + + /* We must be careful when updating the number of iterations due to + preconditioning and the fact that the value must be valid at entry + of the loop. After passing through the above code, we see that + the correct new number of iterations is this: */ + gcc_assert(!desc->const_iter); + desc->niter_expr = simplify_gen_binary( + UDIV, desc->mode, old_niter, gen_int_mode(max_unroll + 1, desc->mode)); + loop->nb_iterations_upper_bound = + wi::udiv_trunc(loop->nb_iterations_upper_bound, max_unroll + 1); + if (loop->any_estimate) + loop->nb_iterations_estimate = + wi::udiv_trunc(loop->nb_iterations_estimate, max_unroll + 1); + if (loop->any_likely_upper_bound) + loop->nb_iterations_likely_upper_bound = + wi::udiv_trunc(loop->nb_iterations_likely_upper_bound, max_unroll + 1); + if (exit_at_end) { + desc->niter_expr = + simplify_gen_binary(MINUS, desc->mode, desc->niter_expr, const1_rtx); + desc->noloop_assumptions = NULL_RTX; + --loop->nb_iterations_upper_bound; + if (loop->any_estimate && loop->nb_iterations_estimate != 0) + --loop->nb_iterations_estimate; + else + loop->any_estimate = false; + if (loop->any_likely_upper_bound && + loop->nb_iterations_likely_upper_bound != 0) + --loop->nb_iterations_likely_upper_bound; + else + loop->any_likely_upper_bound = false; + } - if (dump_file) - fprintf(dump_file, + if (dump_file) + fprintf(dump_file, ";; Unrolled loop %d times, counting # of iterations " "in runtime, %i insns\n", - max_unroll, - num_loop_insns(loop)); + max_unroll, num_loop_insns(loop)); } /* Decide whether to unroll LOOP stupidly and how much. */ -static void decide_unroll_stupid(class loop *loop, int flags) -{ - unsigned nunroll, nunroll_by_av, i; - class niter_desc *desc; - widest_int iterations; - - /* If we were not asked to unroll this loop, just return back silently. */ - if (!(flags & UAP_UNROLL_ALL) && !loop->unroll) - return; +static void decide_unroll_stupid(class loop *loop, int flags) { + unsigned nunroll, nunroll_by_av, i; + class niter_desc *desc; + widest_int iterations; - if (dump_enabled_p()) - dump_printf(MSG_NOTE, "considering unrolling loop stupidly\n"); + /* If we were not asked to unroll this loop, just return back silently. */ + if (!(flags & UAP_UNROLL_ALL) && !loop->unroll) return; - /* nunroll = total number of copies of the original loop body in - unrolled loop (i.e. if it is 2, we have to duplicate loop body once. */ - nunroll = param_max_unrolled_insns / loop->ninsns; - nunroll_by_av = param_max_average_unrolled_insns / loop->av_ninsns; - if (nunroll > nunroll_by_av) - nunroll = nunroll_by_av; - if (nunroll > (unsigned)param_max_unroll_times) - nunroll = param_max_unroll_times; + if (dump_enabled_p()) + dump_printf(MSG_NOTE, "considering unrolling loop stupidly\n"); - if (targetm.loop_unroll_adjust) - nunroll = targetm.loop_unroll_adjust(nunroll, loop); + /* nunroll = total number of copies of the original loop body in + unrolled loop (i.e. if it is 2, we have to duplicate loop body once. */ + nunroll = param_max_unrolled_insns / loop->ninsns; + nunroll_by_av = param_max_average_unrolled_insns / loop->av_ninsns; + if (nunroll > nunroll_by_av) nunroll = nunroll_by_av; + if (nunroll > (unsigned)param_max_unroll_times) + nunroll = param_max_unroll_times; - if (loop->unroll > 0 && loop->unroll < USHRT_MAX) - nunroll = loop->unroll; + if (targetm.loop_unroll_adjust) + nunroll = targetm.loop_unroll_adjust(nunroll, loop); - /* Skip big loops. */ - if (nunroll <= 1) { - if (dump_file) - fprintf(dump_file, ";; Not considering loop, is too big\n"); - return; - } + if (loop->unroll > 0 && loop->unroll < USHRT_MAX) nunroll = loop->unroll; - /* Check for simple loops. */ - desc = get_simple_loop_desc(loop); + /* Skip big loops. */ + if (nunroll <= 1) { + if (dump_file) fprintf(dump_file, ";; Not considering loop, is too big\n"); + return; + } - /* Check simpleness. */ - if (desc->simple_p && !desc->assumptions) { - if (dump_file) - fprintf(dump_file, ";; Loop is simple\n"); - return; - } + /* Check for simple loops. */ + desc = get_simple_loop_desc(loop); - /* Do not unroll loops with branches inside -- it increases number - of mispredicts. - TODO: this heuristic needs tunning; call inside the loop body - is also relatively good reason to not unroll. */ - if (num_loop_branches(loop) > 1) { - if (dump_file) - fprintf(dump_file, ";; Not unrolling, contains branches\n"); - return; - } + /* Check simpleness. */ + if (desc->simple_p && !desc->assumptions) { + if (dump_file) fprintf(dump_file, ";; Loop is simple\n"); + return; + } + + /* Do not unroll loops with branches inside -- it increases number + of mispredicts. + TODO: this heuristic needs tunning; call inside the loop body + is also relatively good reason to not unroll. */ + if (num_loop_branches(loop) > 1) { + if (dump_file) fprintf(dump_file, ";; Not unrolling, contains branches\n"); + return; + } - /* Check whether the loop rolls. */ - if ((get_estimated_loop_iterations(loop, &iterations) || get_likely_max_loop_iterations(loop, &iterations)) && - wi::ltu_p(iterations, 2 * nunroll)) { - if (dump_file) - fprintf(dump_file, ";; Not unrolling loop, doesn't roll\n"); - return; - } + /* Check whether the loop rolls. */ + if ((get_estimated_loop_iterations(loop, &iterations) || + get_likely_max_loop_iterations(loop, &iterations)) && + wi::ltu_p(iterations, 2 * nunroll)) { + if (dump_file) fprintf(dump_file, ";; Not unrolling loop, doesn't roll\n"); + return; + } - /* Success. Now force nunroll to be power of 2, as it seems that this - improves results (partially because of better alignments, partially - because of some dark magic). */ - for (i = 1; 2 * i <= nunroll; i *= 2) - continue; + /* Success. Now force nunroll to be power of 2, as it seems that this + improves results (partially because of better alignments, partially + because of some dark magic). */ + for (i = 1; 2 * i <= nunroll; i *= 2) continue; - loop->lpt_decision.decision = LPT_UNROLL_STUPID; - loop->lpt_decision.times = i - 1; + loop->lpt_decision.decision = LPT_UNROLL_STUPID; + loop->lpt_decision.times = i - 1; } /* Unroll a LOOP LOOP->LPT_DECISION.TIMES times. The transformation does this: @@ -3675,97 +3737,93 @@ static void decide_unroll_stupid(class loop *loop, int flags) body; } */ -static void unroll_loop_stupid(class loop *loop) -{ - unsigned nunroll = loop->lpt_decision.times; - class niter_desc *desc = get_simple_loop_desc(loop); - struct opt_info *opt_info = NULL; - bool ok; - - if (flag_split_ivs_in_unroller || flag_variable_expansion_in_unroller) - opt_info = analyze_insns_in_loop(loop); - - auto_sbitmap wont_exit(nunroll + 1); - bitmap_clear(wont_exit); - opt_info_start_duplication(opt_info); - - ok = duplicate_loop_body_to_header_edge(loop, - loop_latch_edge(loop), - nunroll, - wont_exit, - NULL, - NULL, - DLTHE_FLAG_UPDATE_FREQ | (opt_info ? DLTHE_RECORD_COPY_NUMBER : 0)); - gcc_assert(ok); - - if (opt_info) { - apply_opt_in_copies(opt_info, nunroll, true, true); - free_opt_info(opt_info); - } - - if (desc->simple_p) { - /* We indeed may get here provided that there are nontrivial assumptions - for a loop to be really simple. We could update the counts, but the - problem is that we are unable to decide which exit will be taken - (not really true in case the number of iterations is constant, - but no one will do anything with this information, so we do not - worry about it). */ - desc->simple_p = false; - } - - if (dump_file) - fprintf(dump_file, ";; Unrolled loop %d times, %i insns\n", nunroll, num_loop_insns(loop)); +static void unroll_loop_stupid(class loop *loop) { + unsigned nunroll = loop->lpt_decision.times; + class niter_desc *desc = get_simple_loop_desc(loop); + struct opt_info *opt_info = NULL; + bool ok; + + if (flag_split_ivs_in_unroller || flag_variable_expansion_in_unroller) + opt_info = analyze_insns_in_loop(loop); + + auto_sbitmap wont_exit(nunroll + 1); + bitmap_clear(wont_exit); + opt_info_start_duplication(opt_info); + + ok = duplicate_loop_body_to_header_edge( + loop, loop_latch_edge(loop), nunroll, wont_exit, NULL, NULL, + DLTHE_FLAG_UPDATE_FREQ | (opt_info ? DLTHE_RECORD_COPY_NUMBER : 0)); + gcc_assert(ok); + + if (opt_info) { + apply_opt_in_copies(opt_info, nunroll, true, true); + free_opt_info(opt_info); + } + + if (desc->simple_p) { + /* We indeed may get here provided that there are nontrivial assumptions + for a loop to be really simple. We could update the counts, but the + problem is that we are unable to decide which exit will be taken + (not really true in case the number of iterations is constant, + but no one will do anything with this information, so we do not + worry about it). */ + desc->simple_p = false; + } + + if (dump_file) + fprintf(dump_file, ";; Unrolled loop %d times, %i insns\n", nunroll, + num_loop_insns(loop)); } /* Returns true if REG is referenced in one nondebug insn in LOOP. Set *DEBUG_USES to the number of debug insns that reference the variable. */ -static bool referenced_in_one_insn_in_loop_p(class loop *loop, rtx reg, int *debug_uses) -{ - basic_block *body, bb; - unsigned i; - int count_ref = 0; - rtx_insn *insn; - - body = get_loop_body(loop); - for (i = 0; i < loop->num_nodes; i++) { - bb = body[i]; - - FOR_BB_INSNS(bb, insn) - if (!rtx_referenced_p(reg, insn)) - continue; - else if (DEBUG_INSN_P(insn)) - ++*debug_uses; - else if (++count_ref > 1) - break; - } - free(body); - return (count_ref == 1); +static bool referenced_in_one_insn_in_loop_p(class loop *loop, rtx reg, + int *debug_uses) { + basic_block *body, bb; + unsigned i; + int count_ref = 0; + rtx_insn *insn; + + body = get_loop_body(loop); + for (i = 0; i < loop->num_nodes; i++) { + bb = body[i]; + + FOR_BB_INSNS(bb, insn) + if (!rtx_referenced_p(reg, insn)) + continue; + else if (DEBUG_INSN_P(insn)) + ++*debug_uses; + else if (++count_ref > 1) + break; + } + free(body); + return (count_ref == 1); } /* Reset the DEBUG_USES debug insns in LOOP that reference REG. */ -static void reset_debug_uses_in_loop(class loop *loop, rtx reg, int debug_uses) -{ - basic_block *body, bb; - unsigned i; - rtx_insn *insn; - - body = get_loop_body(loop); - for (i = 0; debug_uses && i < loop->num_nodes; i++) { - bb = body[i]; - - FOR_BB_INSNS(bb, insn) - if (!DEBUG_INSN_P(insn) || !rtx_referenced_p(reg, insn)) - continue; - else { - validate_change(insn, &INSN_VAR_LOCATION_LOC(insn), gen_rtx_UNKNOWN_VAR_LOC(), 0); - if (!--debug_uses) - break; - } +static void reset_debug_uses_in_loop(class loop *loop, rtx reg, + int debug_uses) { + basic_block *body, bb; + unsigned i; + rtx_insn *insn; + + body = get_loop_body(loop); + for (i = 0; debug_uses && i < loop->num_nodes; i++) { + bb = body[i]; + + FOR_BB_INSNS(bb, insn) + if (!DEBUG_INSN_P(insn) || !rtx_referenced_p(reg, insn)) + continue; + else { + validate_change(insn, &INSN_VAR_LOCATION_LOC(insn), + gen_rtx_UNKNOWN_VAR_LOC(), 0); + if (!--debug_uses) break; } - free(body); + } + free(body); } /* Determine whether INSN contains an accumulator @@ -3791,105 +3849,98 @@ static void reset_debug_uses_in_loop(class loop *loop, rtx reg, int debug_uses) information and return a pointer to it. */ -static struct var_to_expand *analyze_insn_to_expand_var(class loop *loop, rtx_insn *insn) -{ - rtx set, dest, src; - struct var_to_expand *ves; - unsigned accum_pos; - enum rtx_code code; - int debug_uses = 0; - - set = single_set(insn); - if (!set) - return NULL; - - dest = SET_DEST(set); - src = SET_SRC(set); - code = GET_CODE(src); - - if (code != PLUS && code != MINUS && code != MULT && code != FMA) - return NULL; - - if (FLOAT_MODE_P(GET_MODE(dest))) { - if (!flag_associative_math) - return NULL; - /* In the case of FMA, we're also changing the rounding. */ - if (code == FMA && !flag_unsafe_math_optimizations) - return NULL; - } - - /* Hmm, this is a bit paradoxical. We know that INSN is a valid insn - in MD. But if there is no optab to generate the insn, we cannot - perform the variable expansion. This can happen if an MD provides - an insn but not a named pattern to generate it, for example to avoid - producing code that needs additional mode switches like for x87/mmx. - - So we check have_insn_for which looks for an optab for the operation - in SRC. If it doesn't exist, we can't perform the expansion even - though INSN is valid. */ - if (!have_insn_for(code, GET_MODE(src))) - return NULL; - - if (!REG_P(dest) && !(GET_CODE(dest) == SUBREG && REG_P(SUBREG_REG(dest)))) - return NULL; - - /* Find the accumulator use within the operation. */ - if (code == FMA) { - /* We only support accumulation via FMA in the ADD position. */ - if (!rtx_equal_p(dest, XEXP(src, 2))) - return NULL; - accum_pos = 2; - } else if (rtx_equal_p(dest, XEXP(src, 0))) - accum_pos = 0; - else if (rtx_equal_p(dest, XEXP(src, 1))) { - /* The method of expansion that we are using; which includes the - initialization of the expansions with zero and the summation of - the expansions at the end of the computation will yield wrong - results for (x = something - x) thus avoid using it in that case. */ - if (code == MINUS) - return NULL; - accum_pos = 1; - } else - return NULL; - - /* It must not otherwise be used. */ - if (code == FMA) { - if (rtx_referenced_p(dest, XEXP(src, 0)) || rtx_referenced_p(dest, XEXP(src, 1))) - return NULL; - } else if (rtx_referenced_p(dest, XEXP(src, 1 - accum_pos))) - return NULL; - - /* It must be used in exactly one insn. */ - if (!referenced_in_one_insn_in_loop_p(loop, dest, &debug_uses)) - return NULL; - - if (dump_file) { - fprintf(dump_file, "\n;; Expanding Accumulator "); - print_rtl(dump_file, dest); - fprintf(dump_file, "\n"); - } - - if (debug_uses) - /* Instead of resetting the debug insns, we could replace each - debug use in the loop with the sum or product of all expanded - accumulators. Since we'll only know of all expansions at the - end, we'd have to keep track of which vars_to_expand a debug - insn in the loop references, take note of each copy of the - debug insn during unrolling, and when it's all done, compute - the sum or product of each variable and adjust the original - debug insn and each copy thereof. What a pain! */ - reset_debug_uses_in_loop(loop, dest, debug_uses); - - /* Record the accumulator to expand. */ - ves = XNEW(struct var_to_expand); - ves->insn = insn; - ves->reg = copy_rtx(dest); - ves->var_expansions.create(1); - ves->next = NULL; - ves->op = GET_CODE(src); - ves->expansion_count = 0; - ves->reuse_expansion = 0; - return ves; +static struct var_to_expand *analyze_insn_to_expand_var(class loop *loop, + rtx_insn *insn) { + rtx set, dest, src; + struct var_to_expand *ves; + unsigned accum_pos; + enum rtx_code code; + int debug_uses = 0; + + set = single_set(insn); + if (!set) return NULL; + + dest = SET_DEST(set); + src = SET_SRC(set); + code = GET_CODE(src); + + if (code != PLUS && code != MINUS && code != MULT && code != FMA) return NULL; + + if (FLOAT_MODE_P(GET_MODE(dest))) { + if (!flag_associative_math) return NULL; + /* In the case of FMA, we're also changing the rounding. */ + if (code == FMA && !flag_unsafe_math_optimizations) return NULL; + } + + /* Hmm, this is a bit paradoxical. We know that INSN is a valid insn + in MD. But if there is no optab to generate the insn, we cannot + perform the variable expansion. This can happen if an MD provides + an insn but not a named pattern to generate it, for example to avoid + producing code that needs additional mode switches like for x87/mmx. + + So we check have_insn_for which looks for an optab for the operation + in SRC. If it doesn't exist, we can't perform the expansion even + though INSN is valid. */ + if (!have_insn_for(code, GET_MODE(src))) return NULL; + + if (!REG_P(dest) && !(GET_CODE(dest) == SUBREG && REG_P(SUBREG_REG(dest)))) + return NULL; + + /* Find the accumulator use within the operation. */ + if (code == FMA) { + /* We only support accumulation via FMA in the ADD position. */ + if (!rtx_equal_p(dest, XEXP(src, 2))) return NULL; + accum_pos = 2; + } else if (rtx_equal_p(dest, XEXP(src, 0))) + accum_pos = 0; + else if (rtx_equal_p(dest, XEXP(src, 1))) { + /* The method of expansion that we are using; which includes the + initialization of the expansions with zero and the summation of + the expansions at the end of the computation will yield wrong + results for (x = something - x) thus avoid using it in that case. */ + if (code == MINUS) return NULL; + accum_pos = 1; + } else + return NULL; + + /* It must not otherwise be used. */ + if (code == FMA) { + if (rtx_referenced_p(dest, XEXP(src, 0)) || + rtx_referenced_p(dest, XEXP(src, 1))) + return NULL; + } else if (rtx_referenced_p(dest, XEXP(src, 1 - accum_pos))) + return NULL; + + /* It must be used in exactly one insn. */ + if (!referenced_in_one_insn_in_loop_p(loop, dest, &debug_uses)) return NULL; + + if (dump_file) { + fprintf(dump_file, "\n;; Expanding Accumulator "); + print_rtl(dump_file, dest); + fprintf(dump_file, "\n"); + } + + if (debug_uses) + /* Instead of resetting the debug insns, we could replace each + debug use in the loop with the sum or product of all expanded + accumulators. Since we'll only know of all expansions at the + end, we'd have to keep track of which vars_to_expand a debug + insn in the loop references, take note of each copy of the + debug insn during unrolling, and when it's all done, compute + the sum or product of each variable and adjust the original + debug insn and each copy thereof. What a pain! */ + reset_debug_uses_in_loop(loop, dest, debug_uses); + + /* Record the accumulator to expand. */ + ves = XNEW(struct var_to_expand); + ves->insn = insn; + ves->reg = copy_rtx(dest); + ves->var_expansions.create(1); + ves->next = NULL; + ves->op = GET_CODE(src); + ves->expansion_count = 0; + ves->reuse_expansion = 0; + return ves; } /* Determine whether there is an induction variable in INSN that @@ -3917,52 +3968,47 @@ static struct var_to_expand *analyze_insn_to_expand_var(class loop *loop, rtx_in an IV_TO_SPLIT structure, fill it with the relevant information and return a pointer to it. */ -static struct iv_to_split *analyze_iv_to_split_insn(rtx_insn *insn) -{ - rtx set, dest; - class rtx_iv iv; - struct iv_to_split *ivts; - scalar_int_mode mode; - bool ok; - - /* For now we just split the basic induction variables. Later this may be - extended for example by selecting also addresses of memory references. */ - set = single_set(insn); - if (!set) - return NULL; - - dest = SET_DEST(set); - if (!REG_P(dest) || !is_a(GET_MODE(dest), &mode)) - return NULL; - - if (!biv_p(insn, mode, dest)) - return NULL; - - ok = iv_analyze_result(insn, dest, &iv); - - /* This used to be an assert under the assumption that if biv_p returns - true that iv_analyze_result must also return true. However, that - assumption is not strictly correct as evidenced by pr25569. - - Returning NULL when iv_analyze_result returns false is safe and - avoids the problems in pr25569 until the iv_analyze_* routines - can be fixed, which is apparently hard and time consuming - according to their author. */ - if (!ok) - return NULL; - - if (iv.step == const0_rtx || iv.mode != iv.extend_mode) - return NULL; - - /* Record the insn to split. */ - ivts = XNEW(struct iv_to_split); - ivts->insn = insn; - ivts->orig_var = dest; - ivts->base_var = NULL_RTX; - ivts->step = iv.step; - ivts->next = NULL; - - return ivts; +static struct iv_to_split *analyze_iv_to_split_insn(rtx_insn *insn) { + rtx set, dest; + class rtx_iv iv; + struct iv_to_split *ivts; + scalar_int_mode mode; + bool ok; + + /* For now we just split the basic induction variables. Later this may be + extended for example by selecting also addresses of memory references. */ + set = single_set(insn); + if (!set) return NULL; + + dest = SET_DEST(set); + if (!REG_P(dest) || !is_a(GET_MODE(dest), &mode)) + return NULL; + + if (!biv_p(insn, mode, dest)) return NULL; + + ok = iv_analyze_result(insn, dest, &iv); + + /* This used to be an assert under the assumption that if biv_p returns + true that iv_analyze_result must also return true. However, that + assumption is not strictly correct as evidenced by pr25569. + + Returning NULL when iv_analyze_result returns false is safe and + avoids the problems in pr25569 until the iv_analyze_* routines + can be fixed, which is apparently hard and time consuming + according to their author. */ + if (!ok) return NULL; + + if (iv.step == const0_rtx || iv.mode != iv.extend_mode) return NULL; + + /* Record the insn to split. */ + ivts = XNEW(struct iv_to_split); + ivts->insn = insn; + ivts->orig_var = dest; + ivts->base_var = NULL_RTX; + ivts->step = iv.step; + ivts->next = NULL; + + return ivts; } /* Determines which of insns in LOOP can be optimized. @@ -3970,93 +4016,88 @@ static struct iv_to_split *analyze_iv_to_split_insn(rtx_insn *insn) with all insns to be optimized. The FIRST_NEW_BLOCK field is undefined for the return value. */ -static struct opt_info *analyze_insns_in_loop(class loop *loop) -{ - basic_block *body, bb; - unsigned i; - struct opt_info *opt_info = XCNEW(struct opt_info); - rtx_insn *insn; - struct iv_to_split *ivts = NULL; - struct var_to_expand *ves = NULL; - iv_to_split **slot1; - var_to_expand **slot2; - auto_vec edges = get_loop_exit_edges(loop); - edge exit; - bool can_apply = false; - - iv_analysis_loop_init(loop); - - body = get_loop_body(loop); - - if (flag_split_ivs_in_unroller) { - opt_info->insns_to_split = new hash_table(5 * loop->num_nodes); - opt_info->iv_to_split_head = NULL; - opt_info->iv_to_split_tail = &opt_info->iv_to_split_head; +static struct opt_info *analyze_insns_in_loop(class loop *loop) { + basic_block *body, bb; + unsigned i; + struct opt_info *opt_info = XCNEW(struct opt_info); + rtx_insn *insn; + struct iv_to_split *ivts = NULL; + struct var_to_expand *ves = NULL; + iv_to_split **slot1; + var_to_expand **slot2; + auto_vec edges = get_loop_exit_edges(loop); + edge exit; + bool can_apply = false; + + iv_analysis_loop_init(loop); + + body = get_loop_body(loop); + + if (flag_split_ivs_in_unroller) { + opt_info->insns_to_split = + new hash_table(5 * loop->num_nodes); + opt_info->iv_to_split_head = NULL; + opt_info->iv_to_split_tail = &opt_info->iv_to_split_head; + } + + /* Record the loop exit bb and loop preheader before the unrolling. */ + opt_info->loop_preheader = loop_preheader_edge(loop)->src; + + if (edges.length() == 1) { + exit = edges[0]; + if (!(exit->flags & EDGE_COMPLEX)) { + opt_info->loop_exit = split_edge(exit); + can_apply = true; } - - /* Record the loop exit bb and loop preheader before the unrolling. */ - opt_info->loop_preheader = loop_preheader_edge(loop)->src; - - if (edges.length() == 1) { - exit = edges[0]; - if (!(exit->flags & EDGE_COMPLEX)) { - opt_info->loop_exit = split_edge(exit); - can_apply = true; - } - } - - if (flag_variable_expansion_in_unroller && can_apply) { - opt_info->insns_with_var_to_expand = new hash_table(5 * loop->num_nodes); - opt_info->var_to_expand_head = NULL; - opt_info->var_to_expand_tail = &opt_info->var_to_expand_head; - } - - for (i = 0; i < loop->num_nodes; i++) { - bb = body[i]; - if (!dominated_by_p(CDI_DOMINATORS, loop->latch, bb)) - continue; - - FOR_BB_INSNS(bb, insn) - { - if (!INSN_P(insn)) - continue; - - if (opt_info->insns_to_split) - ivts = analyze_iv_to_split_insn(insn); - - if (ivts) { - slot1 = opt_info->insns_to_split->find_slot(ivts, INSERT); - gcc_assert(*slot1 == NULL); - *slot1 = ivts; - *opt_info->iv_to_split_tail = ivts; - opt_info->iv_to_split_tail = &ivts->next; - continue; - } - - if (opt_info->insns_with_var_to_expand) - ves = analyze_insn_to_expand_var(loop, insn); - - if (ves) { - slot2 = opt_info->insns_with_var_to_expand->find_slot(ves, INSERT); - gcc_assert(*slot2 == NULL); - *slot2 = ves; - *opt_info->var_to_expand_tail = ves; - opt_info->var_to_expand_tail = &ves->next; - } - } + } + + if (flag_variable_expansion_in_unroller && can_apply) { + opt_info->insns_with_var_to_expand = + new hash_table(5 * loop->num_nodes); + opt_info->var_to_expand_head = NULL; + opt_info->var_to_expand_tail = &opt_info->var_to_expand_head; + } + + for (i = 0; i < loop->num_nodes; i++) { + bb = body[i]; + if (!dominated_by_p(CDI_DOMINATORS, loop->latch, bb)) continue; + + FOR_BB_INSNS(bb, insn) { + if (!INSN_P(insn)) continue; + + if (opt_info->insns_to_split) ivts = analyze_iv_to_split_insn(insn); + + if (ivts) { + slot1 = opt_info->insns_to_split->find_slot(ivts, INSERT); + gcc_assert(*slot1 == NULL); + *slot1 = ivts; + *opt_info->iv_to_split_tail = ivts; + opt_info->iv_to_split_tail = &ivts->next; + continue; + } + + if (opt_info->insns_with_var_to_expand) + ves = analyze_insn_to_expand_var(loop, insn); + + if (ves) { + slot2 = opt_info->insns_with_var_to_expand->find_slot(ves, INSERT); + gcc_assert(*slot2 == NULL); + *slot2 = ves; + *opt_info->var_to_expand_tail = ves; + opt_info->var_to_expand_tail = &ves->next; + } } + } - free(body); - return opt_info; + free(body); + return opt_info; } /* Called just before loop duplication. Records start of duplicated area to OPT_INFO. */ -static void opt_info_start_duplication(struct opt_info *opt_info) -{ - if (opt_info) - opt_info->first_new_block = last_basic_block_for_fn(cfun); +static void opt_info_start_duplication(struct opt_info *opt_info) { + if (opt_info) opt_info->first_new_block = last_basic_block_for_fn(cfun); } /* Determine the number of iterations between initialization of the base @@ -4064,150 +4105,144 @@ static void opt_info_start_duplication(struct opt_info *opt_info) of newly created copies. UNROLLING is true if we are unrolling (not peeling) the loop. */ -static unsigned determine_split_iv_delta(unsigned n_copy, unsigned n_copies, bool unrolling) -{ - if (unrolling) { - /* If we are unrolling, initialization is done in the original loop - body (number 0). */ - return n_copy; - } else { - /* If we are peeling, the copy in that the initialization occurs has - number 1. The original loop (number 0) is the last. */ - if (n_copy) - return n_copy - 1; - else - return n_copies; - } +static unsigned determine_split_iv_delta(unsigned n_copy, unsigned n_copies, + bool unrolling) { + if (unrolling) { + /* If we are unrolling, initialization is done in the original loop + body (number 0). */ + return n_copy; + } else { + /* If we are peeling, the copy in that the initialization occurs has + number 1. The original loop (number 0) is the last. */ + if (n_copy) + return n_copy - 1; + else + return n_copies; + } } /* Allocate basic variable for the induction variable chain. */ -static void allocate_basic_variable(struct iv_to_split *ivts) -{ - rtx expr = SET_SRC(single_set(ivts->insn)); +static void allocate_basic_variable(struct iv_to_split *ivts) { + rtx expr = SET_SRC(single_set(ivts->insn)); - ivts->base_var = gen_reg_rtx(GET_MODE(expr)); + ivts->base_var = gen_reg_rtx(GET_MODE(expr)); } /* Insert initialization of basic variable of IVTS before INSN, taking the initial value from INSN. */ -static void insert_base_initialization(struct iv_to_split *ivts, rtx_insn *insn) -{ - rtx expr = copy_rtx(SET_SRC(single_set(insn))); - rtx_insn *seq; +static void insert_base_initialization(struct iv_to_split *ivts, + rtx_insn *insn) { + rtx expr = copy_rtx(SET_SRC(single_set(insn))); + rtx_insn *seq; - start_sequence(); - expr = force_operand(expr, ivts->base_var); - if (expr != ivts->base_var) - emit_move_insn(ivts->base_var, expr); - seq = get_insns(); - end_sequence(); + start_sequence(); + expr = force_operand(expr, ivts->base_var); + if (expr != ivts->base_var) emit_move_insn(ivts->base_var, expr); + seq = get_insns(); + end_sequence(); - emit_insn_before(seq, insn); + emit_insn_before(seq, insn); } /* Replace the use of induction variable described in IVTS in INSN by base variable + DELTA * step. */ -static void split_iv(struct iv_to_split *ivts, rtx_insn *insn, unsigned delta) -{ - rtx expr, *loc, incr, var; - rtx_insn *seq; - machine_mode mode = GET_MODE(ivts->base_var); - rtx src, dest, set; - - /* Construct base + DELTA * step. */ - if (!delta) - expr = ivts->base_var; - else { - incr = simplify_gen_binary(MULT, mode, copy_rtx(ivts->step), gen_int_mode(delta, mode)); - expr = simplify_gen_binary(PLUS, GET_MODE(ivts->base_var), ivts->base_var, incr); - } - - /* Figure out where to do the replacement. */ - loc = &SET_SRC(single_set(insn)); - - /* If we can make the replacement right away, we're done. */ - if (validate_change(insn, loc, expr, 0)) - return; - - /* Otherwise, force EXPR into a register and try again. */ - start_sequence(); - var = gen_reg_rtx(mode); - expr = force_operand(expr, var); - if (expr != var) - emit_move_insn(var, expr); - seq = get_insns(); - end_sequence(); - emit_insn_before(seq, insn); - - if (validate_change(insn, loc, var, 0)) - return; - - /* The last chance. Try recreating the assignment in insn - completely from scratch. */ - set = single_set(insn); - gcc_assert(set); - - start_sequence(); - *loc = var; - src = copy_rtx(SET_SRC(set)); - dest = copy_rtx(SET_DEST(set)); - src = force_operand(src, dest); - if (src != dest) - emit_move_insn(dest, src); - seq = get_insns(); - end_sequence(); - - emit_insn_before(seq, insn); - delete_insn(insn); +static void split_iv(struct iv_to_split *ivts, rtx_insn *insn, unsigned delta) { + rtx expr, *loc, incr, var; + rtx_insn *seq; + machine_mode mode = GET_MODE(ivts->base_var); + rtx src, dest, set; + + /* Construct base + DELTA * step. */ + if (!delta) + expr = ivts->base_var; + else { + incr = simplify_gen_binary(MULT, mode, copy_rtx(ivts->step), + gen_int_mode(delta, mode)); + expr = simplify_gen_binary(PLUS, GET_MODE(ivts->base_var), ivts->base_var, + incr); + } + + /* Figure out where to do the replacement. */ + loc = &SET_SRC(single_set(insn)); + + /* If we can make the replacement right away, we're done. */ + if (validate_change(insn, loc, expr, 0)) return; + + /* Otherwise, force EXPR into a register and try again. */ + start_sequence(); + var = gen_reg_rtx(mode); + expr = force_operand(expr, var); + if (expr != var) emit_move_insn(var, expr); + seq = get_insns(); + end_sequence(); + emit_insn_before(seq, insn); + + if (validate_change(insn, loc, var, 0)) return; + + /* The last chance. Try recreating the assignment in insn + completely from scratch. */ + set = single_set(insn); + gcc_assert(set); + + start_sequence(); + *loc = var; + src = copy_rtx(SET_SRC(set)); + dest = copy_rtx(SET_DEST(set)); + src = force_operand(src, dest); + if (src != dest) emit_move_insn(dest, src); + seq = get_insns(); + end_sequence(); + + emit_insn_before(seq, insn); + delete_insn(insn); } /* Return one expansion of the accumulator recorded in struct VE. */ -static rtx get_expansion(struct var_to_expand *ve) -{ - rtx reg; +static rtx get_expansion(struct var_to_expand *ve) { + rtx reg; - if (ve->reuse_expansion == 0) - reg = ve->reg; - else - reg = ve->var_expansions[ve->reuse_expansion - 1]; + if (ve->reuse_expansion == 0) + reg = ve->reg; + else + reg = ve->var_expansions[ve->reuse_expansion - 1]; - if (ve->var_expansions.length() == (unsigned)ve->reuse_expansion) - ve->reuse_expansion = 0; - else - ve->reuse_expansion++; + if (ve->var_expansions.length() == (unsigned)ve->reuse_expansion) + ve->reuse_expansion = 0; + else + ve->reuse_expansion++; - return reg; + return reg; } /* Given INSN replace the uses of the accumulator recorded in VE with a new register. */ -static void expand_var_during_unrolling(struct var_to_expand *ve, rtx_insn *insn) -{ - rtx new_reg, set; - bool really_new_expansion = false; - - set = single_set(insn); - gcc_assert(set); - - /* Generate a new register only if the expansion limit has not been - reached. Else reuse an already existing expansion. */ - if (param_max_variable_expansions > ve->expansion_count) { - really_new_expansion = true; - new_reg = gen_reg_rtx(GET_MODE(ve->reg)); - } else - new_reg = get_expansion(ve); - - validate_replace_rtx_group(SET_DEST(set), new_reg, insn); - if (apply_change_group()) - if (really_new_expansion) { - ve->var_expansions.safe_push(new_reg); - ve->expansion_count++; - } +static void expand_var_during_unrolling(struct var_to_expand *ve, + rtx_insn *insn) { + rtx new_reg, set; + bool really_new_expansion = false; + + set = single_set(insn); + gcc_assert(set); + + /* Generate a new register only if the expansion limit has not been + reached. Else reuse an already existing expansion. */ + if (param_max_variable_expansions > ve->expansion_count) { + really_new_expansion = true; + new_reg = gen_reg_rtx(GET_MODE(ve->reg)); + } else + new_reg = get_expansion(ve); + + validate_replace_rtx_group(SET_DEST(set), new_reg, insn); + if (apply_change_group()) + if (really_new_expansion) { + ve->var_expansions.safe_push(new_reg); + ve->expansion_count++; + } } /* Initialize the variable expansions in loop preheader. PLACE is the @@ -4237,98 +4272,93 @@ static void expand_var_during_unrolling(struct var_to_expand *ve, rtx_insn *insn should be initialized with -zero as well (otherwise we will get +zero as the final result). */ -static void insert_var_expansion_initialization(struct var_to_expand *ve, basic_block place) -{ - rtx_insn *seq; - rtx var, zero_init; - unsigned i; - machine_mode mode = GET_MODE(ve->reg); - bool honor_signed_zero_p = HONOR_SIGNED_ZEROS(mode); - - if (ve->var_expansions.length() == 0) - return; - - start_sequence(); - switch (ve->op) { - case FMA: - /* Note that we only accumulate FMA via the ADD operand. */ - case PLUS: - case MINUS: - FOR_EACH_VEC_ELT(ve->var_expansions, i, var) - { - if (honor_signed_zero_p) - zero_init = simplify_gen_unary(rtx_code::NEG, mode, CONST0_RTX(mode), mode); - else - zero_init = CONST0_RTX(mode); - emit_move_insn(var, zero_init); - } - break; - - case MULT: - FOR_EACH_VEC_ELT(ve->var_expansions, i, var) - { - zero_init = CONST1_RTX(GET_MODE(var)); - emit_move_insn(var, zero_init); - } - break; - - default: - gcc_unreachable(); - } - - seq = get_insns(); - end_sequence(); - - emit_insn_after(seq, BB_END(place)); +static void insert_var_expansion_initialization(struct var_to_expand *ve, + basic_block place) { + rtx_insn *seq; + rtx var, zero_init; + unsigned i; + machine_mode mode = GET_MODE(ve->reg); + bool honor_signed_zero_p = HONOR_SIGNED_ZEROS(mode); + + if (ve->var_expansions.length() == 0) return; + + start_sequence(); + switch (ve->op) { + case FMA: + /* Note that we only accumulate FMA via the ADD operand. */ + case PLUS: + case MINUS: + FOR_EACH_VEC_ELT(ve->var_expansions, i, var) { + if (honor_signed_zero_p) + zero_init = + simplify_gen_unary(rtx_code::NEG, mode, CONST0_RTX(mode), mode); + else + zero_init = CONST0_RTX(mode); + emit_move_insn(var, zero_init); + } + break; + + case MULT: + FOR_EACH_VEC_ELT(ve->var_expansions, i, var) { + zero_init = CONST1_RTX(GET_MODE(var)); + emit_move_insn(var, zero_init); + } + break; + + default: + gcc_unreachable(); + } + + seq = get_insns(); + end_sequence(); + + emit_insn_after(seq, BB_END(place)); } /* Combine the variable expansions at the loop exit. PLACE is the loop exit basic block where the summation of the expansions should take place. */ -static void combine_var_copies_in_loop_exit(struct var_to_expand *ve, basic_block place) -{ - rtx sum = ve->reg; - rtx expr, var; - rtx_insn *seq, *insn; - unsigned i; - - if (ve->var_expansions.length() == 0) - return; - - /* ve->reg might be SUBREG or some other non-shareable RTL, and we use - it both here and as the destination of the assignment. */ - sum = copy_rtx(sum); - start_sequence(); - switch (ve->op) { - case FMA: - /* Note that we only accumulate FMA via the ADD operand. */ - case PLUS: - case MINUS: - FOR_EACH_VEC_ELT(ve->var_expansions, i, var) - sum = simplify_gen_binary(PLUS, GET_MODE(ve->reg), var, sum); - break; - - case MULT: - FOR_EACH_VEC_ELT(ve->var_expansions, i, var) - sum = simplify_gen_binary(MULT, GET_MODE(ve->reg), var, sum); - break; - - default: - gcc_unreachable(); - } - - expr = force_operand(sum, ve->reg); - if (expr != ve->reg) - emit_move_insn(ve->reg, expr); - seq = get_insns(); - end_sequence(); - - insn = BB_HEAD(place); - while (!NOTE_INSN_BASIC_BLOCK_P(insn)) - insn = NEXT_INSN(insn); - - emit_insn_after(seq, insn); +static void combine_var_copies_in_loop_exit(struct var_to_expand *ve, + basic_block place) { + rtx sum = ve->reg; + rtx expr, var; + rtx_insn *seq, *insn; + unsigned i; + + if (ve->var_expansions.length() == 0) return; + + /* ve->reg might be SUBREG or some other non-shareable RTL, and we use + it both here and as the destination of the assignment. */ + sum = copy_rtx(sum); + start_sequence(); + switch (ve->op) { + case FMA: + /* Note that we only accumulate FMA via the ADD operand. */ + case PLUS: + case MINUS: + FOR_EACH_VEC_ELT(ve->var_expansions, i, var) + sum = simplify_gen_binary(PLUS, GET_MODE(ve->reg), var, sum); + break; + + case MULT: + FOR_EACH_VEC_ELT(ve->var_expansions, i, var) + sum = simplify_gen_binary(MULT, GET_MODE(ve->reg), var, sum); + break; + + default: + gcc_unreachable(); + } + + expr = force_operand(sum, ve->reg); + if (expr != ve->reg) emit_move_insn(ve->reg, expr); + seq = get_insns(); + end_sequence(); + + insn = BB_HEAD(place); + while (!NOTE_INSN_BASIC_BLOCK_P(insn)) insn = NEXT_INSN(insn); + + emit_insn_after(seq, insn); } /* Strip away REG_EQUAL notes for IVs we're splitting. @@ -4342,17 +4372,16 @@ static void combine_var_copies_in_loop_exit(struct var_to_expand *ve, basic_bloc because RTL loop-iv requires us to defer rescanning insns and any notes attached to them. So resort to old techniques... */ -static void maybe_strip_eq_note_for_split_iv(struct opt_info *opt_info, rtx_insn *insn) -{ - struct iv_to_split *ivts; - rtx note = find_reg_equal_equiv_note(insn); - if (!note) - return; - for (ivts = opt_info->iv_to_split_head; ivts; ivts = ivts->next) - if (reg_mentioned_p(ivts->orig_var, note)) { - remove_note(insn, note); - return; - } +static void maybe_strip_eq_note_for_split_iv(struct opt_info *opt_info, + rtx_insn *insn) { + struct iv_to_split *ivts; + rtx note = find_reg_equal_equiv_note(insn); + if (!note) return; + for (ivts = opt_info->iv_to_split_head; ivts; ivts = ivts->next) + if (reg_mentioned_p(ivts->orig_var, note)) { + remove_note(insn, note); + return; + } } /* Apply loop optimizations in loop copies using the @@ -4364,136 +4393,137 @@ static void maybe_strip_eq_note_for_split_iv(struct opt_info *opt_info, rtx_insn the loop (as it should happen in complete unrolling, but not in ordinary peeling of the loop). */ -static void apply_opt_in_copies( - struct opt_info *opt_info, unsigned n_copies, bool unrolling, bool rewrite_original_loop) -{ - unsigned i, delta; - basic_block bb, orig_bb; - rtx_insn *insn, *orig_insn, *next; - struct iv_to_split ivts_templ, *ivts; - struct var_to_expand ve_templ, *ves; - - /* Sanity check -- we need to put initialization in the original loop - body. */ - gcc_assert(!unrolling || rewrite_original_loop); - - /* Allocate the basic variables (i0). */ - if (opt_info->insns_to_split) - for (ivts = opt_info->iv_to_split_head; ivts; ivts = ivts->next) - allocate_basic_variable(ivts); - - for (i = opt_info->first_new_block; i < (unsigned)last_basic_block_for_fn(cfun); i++) { - bb = BASIC_BLOCK_FOR_FN(cfun, i); - orig_bb = get_bb_original(bb); - - /* bb->aux holds position in copy sequence initialized by - duplicate_loop_body_to_header_edge. */ - delta = determine_split_iv_delta((size_t)bb->aux, n_copies, unrolling); - bb->aux = 0; - orig_insn = BB_HEAD(orig_bb); - FOR_BB_INSNS_SAFE(bb, insn, next) - { - if (!INSN_P(insn) || (DEBUG_BIND_INSN_P(insn) && INSN_VAR_LOCATION_DECL(insn) && - TREE_CODE(INSN_VAR_LOCATION_DECL(insn)) == LABEL_DECL)) - continue; - - while (!INSN_P(orig_insn) || (DEBUG_BIND_INSN_P(orig_insn) && INSN_VAR_LOCATION_DECL(orig_insn) && - (TREE_CODE(INSN_VAR_LOCATION_DECL(orig_insn)) == LABEL_DECL))) - orig_insn = NEXT_INSN(orig_insn); - - ivts_templ.insn = orig_insn; - ve_templ.insn = orig_insn; - - /* Apply splitting iv optimization. */ - if (opt_info->insns_to_split) { - maybe_strip_eq_note_for_split_iv(opt_info, insn); - - ivts = opt_info->insns_to_split->find(&ivts_templ); - - if (ivts) { - gcc_assert(GET_CODE(PATTERN(insn)) == GET_CODE(PATTERN(orig_insn))); - - if (!delta) - insert_base_initialization(ivts, insn); - split_iv(ivts, insn, delta); - } - } - /* Apply variable expansion optimization. */ - if (unrolling && opt_info->insns_with_var_to_expand) { - ves = (struct var_to_expand *)opt_info->insns_with_var_to_expand->find(&ve_templ); - if (ves) { - gcc_assert(GET_CODE(PATTERN(insn)) == GET_CODE(PATTERN(orig_insn))); - expand_var_during_unrolling(ves, insn); - } - } - orig_insn = NEXT_INSN(orig_insn); - } - } +static void apply_opt_in_copies(struct opt_info *opt_info, unsigned n_copies, + bool unrolling, bool rewrite_original_loop) { + unsigned i, delta; + basic_block bb, orig_bb; + rtx_insn *insn, *orig_insn, *next; + struct iv_to_split ivts_templ, *ivts; + struct var_to_expand ve_templ, *ves; - if (!rewrite_original_loop) - return; + /* Sanity check -- we need to put initialization in the original loop + body. */ + gcc_assert(!unrolling || rewrite_original_loop); - /* Initialize the variable expansions in the loop preheader - and take care of combining them at the loop exit. */ - if (opt_info->insns_with_var_to_expand) { - for (ves = opt_info->var_to_expand_head; ves; ves = ves->next) - insert_var_expansion_initialization(ves, opt_info->loop_preheader); - for (ves = opt_info->var_to_expand_head; ves; ves = ves->next) - combine_var_copies_in_loop_exit(ves, opt_info->loop_exit); - } + /* Allocate the basic variables (i0). */ + if (opt_info->insns_to_split) + for (ivts = opt_info->iv_to_split_head; ivts; ivts = ivts->next) + allocate_basic_variable(ivts); + + for (i = opt_info->first_new_block; + i < (unsigned)last_basic_block_for_fn(cfun); i++) { + bb = BASIC_BLOCK_FOR_FN(cfun, i); + orig_bb = get_bb_original(bb); + + /* bb->aux holds position in copy sequence initialized by + duplicate_loop_body_to_header_edge. */ + delta = determine_split_iv_delta((size_t)bb->aux, n_copies, unrolling); + bb->aux = 0; + orig_insn = BB_HEAD(orig_bb); + FOR_BB_INSNS_SAFE(bb, insn, next) { + if (!INSN_P(insn) || + (DEBUG_BIND_INSN_P(insn) && INSN_VAR_LOCATION_DECL(insn) && + TREE_CODE(INSN_VAR_LOCATION_DECL(insn)) == LABEL_DECL)) + continue; + + while (!INSN_P(orig_insn) || + (DEBUG_BIND_INSN_P(orig_insn) && + INSN_VAR_LOCATION_DECL(orig_insn) && + (TREE_CODE(INSN_VAR_LOCATION_DECL(orig_insn)) == LABEL_DECL))) + orig_insn = NEXT_INSN(orig_insn); + + ivts_templ.insn = orig_insn; + ve_templ.insn = orig_insn; + + /* Apply splitting iv optimization. */ + if (opt_info->insns_to_split) { + maybe_strip_eq_note_for_split_iv(opt_info, insn); - /* Rewrite also the original loop body. Find them as originals of the blocks - in the last copied iteration, i.e. those that have - get_bb_copy (get_bb_original (bb)) == bb. */ - for (i = opt_info->first_new_block; i < (unsigned)last_basic_block_for_fn(cfun); i++) { - bb = BASIC_BLOCK_FOR_FN(cfun, i); - orig_bb = get_bb_original(bb); - if (get_bb_copy(orig_bb) != bb) - continue; - - delta = determine_split_iv_delta(0, n_copies, unrolling); - for (orig_insn = BB_HEAD(orig_bb); orig_insn != NEXT_INSN(BB_END(bb)); orig_insn = next) { - next = NEXT_INSN(orig_insn); - - if (!INSN_P(orig_insn)) - continue; - - ivts_templ.insn = orig_insn; - if (opt_info->insns_to_split) { - maybe_strip_eq_note_for_split_iv(opt_info, orig_insn); - - ivts = (struct iv_to_split *)opt_info->insns_to_split->find(&ivts_templ); - if (ivts) { - if (!delta) - insert_base_initialization(ivts, orig_insn); - split_iv(ivts, orig_insn, delta); - continue; - } - } + ivts = opt_info->insns_to_split->find(&ivts_templ); + + if (ivts) { + gcc_assert(GET_CODE(PATTERN(insn)) == GET_CODE(PATTERN(orig_insn))); + + if (!delta) insert_base_initialization(ivts, insn); + split_iv(ivts, insn, delta); + } + } + /* Apply variable expansion optimization. */ + if (unrolling && opt_info->insns_with_var_to_expand) { + ves = (struct var_to_expand *)opt_info->insns_with_var_to_expand->find( + &ve_templ); + if (ves) { + gcc_assert(GET_CODE(PATTERN(insn)) == GET_CODE(PATTERN(orig_insn))); + expand_var_during_unrolling(ves, insn); + } + } + orig_insn = NEXT_INSN(orig_insn); + } + } + + if (!rewrite_original_loop) return; + + /* Initialize the variable expansions in the loop preheader + and take care of combining them at the loop exit. */ + if (opt_info->insns_with_var_to_expand) { + for (ves = opt_info->var_to_expand_head; ves; ves = ves->next) + insert_var_expansion_initialization(ves, opt_info->loop_preheader); + for (ves = opt_info->var_to_expand_head; ves; ves = ves->next) + combine_var_copies_in_loop_exit(ves, opt_info->loop_exit); + } + + /* Rewrite also the original loop body. Find them as originals of the blocks + in the last copied iteration, i.e. those that have + get_bb_copy (get_bb_original (bb)) == bb. */ + for (i = opt_info->first_new_block; + i < (unsigned)last_basic_block_for_fn(cfun); i++) { + bb = BASIC_BLOCK_FOR_FN(cfun, i); + orig_bb = get_bb_original(bb); + if (get_bb_copy(orig_bb) != bb) continue; + + delta = determine_split_iv_delta(0, n_copies, unrolling); + for (orig_insn = BB_HEAD(orig_bb); orig_insn != NEXT_INSN(BB_END(bb)); + orig_insn = next) { + next = NEXT_INSN(orig_insn); + + if (!INSN_P(orig_insn)) continue; + + ivts_templ.insn = orig_insn; + if (opt_info->insns_to_split) { + maybe_strip_eq_note_for_split_iv(opt_info, orig_insn); + + ivts = + (struct iv_to_split *)opt_info->insns_to_split->find(&ivts_templ); + if (ivts) { + if (!delta) insert_base_initialization(ivts, orig_insn); + split_iv(ivts, orig_insn, delta); + continue; } + } } + } } /* Release OPT_INFO. */ -static void free_opt_info(struct opt_info *opt_info) -{ - delete opt_info->insns_to_split; - opt_info->insns_to_split = NULL; - if (opt_info->insns_with_var_to_expand) { - struct var_to_expand *ves; - - for (ves = opt_info->var_to_expand_head; ves; ves = ves->next) - ves->var_expansions.release(); - delete opt_info->insns_with_var_to_expand; - opt_info->insns_with_var_to_expand = NULL; - } - free(opt_info); +static void free_opt_info(struct opt_info *opt_info) { + delete opt_info->insns_to_split; + opt_info->insns_to_split = NULL; + if (opt_info->insns_with_var_to_expand) { + struct var_to_expand *ves; + + for (ves = opt_info->var_to_expand_head; ves; ves = ves->next) + ves->var_expansions.release(); + delete opt_info->insns_with_var_to_expand; + opt_info->insns_with_var_to_expand = NULL; + } + free(opt_info); } /* ===------------------------- Loop-Unroll-Pass -------------------------=== */ -/* ===------------------------- Ipa-Inline -------------------------=== */ -const pass_data ipa_inline_opt_pass_data = {.type = IPA_PASS, // GIMPLE_PASS, SIMPLE_IPA_PASS, RTL_PASS +/* ===------------------------- IPA-Inline -------------------------=== */ +const pass_data ipa_inline_opt_pass_data = { + .type = IPA_PASS, // GIMPLE_PASS, SIMPLE_IPA_PASS, RTL_PASS .name = "ipa_inline_opt_pass", .optinfo_flags = OPTGROUP_INLINE, .tv_id = TV_IPA_INLINING, @@ -4504,148 +4534,144 @@ const pass_data ipa_inline_opt_pass_data = {.type = IPA_PASS, // GIMPLE_PASS, S .todo_flags_finish = (TODO_dump_symtab)}; struct ipa_inline_opt_pass : ipa_opt_pass_d { -public: - ipa_inline_opt_pass() - : ipa_opt_pass_d(ipa_inline_opt_pass_data, g, NULL, /* generate_summary */ - NULL, /* write_summary */ - NULL, /* read_summary */ - NULL, /* write_optimization_summary */ - NULL, /* read_optimization_summary */ - NULL, /* stmt_fixup */ - 0, /* function_transform_todo_flags_start */ - inline_transform, /* function_transform */ - NULL) /* variable_transform */ - {} - - virtual unsigned int execute(function *) override - { - return ipa_inline(); - } - - virtual ipa_inline_opt_pass *clone() override - { - return this; - } + public: + ipa_inline_opt_pass() + : ipa_opt_pass_d(ipa_inline_opt_pass_data, g, NULL, /* generate_summary */ + NULL, /* write_summary */ + NULL, /* read_summary */ + NULL, /* write_optimization_summary */ + NULL, /* read_optimization_summary */ + NULL, /* stmt_fixup */ + 0, /* function_transform_todo_flags_start */ + inline_transform, /* function_transform */ + NULL) /* variable_transform */ + {} + + virtual unsigned int execute(function *) override { return ipa_inline(); } + + virtual ipa_inline_opt_pass *clone() override { return this; } }; struct register_pass_info ipa_inline_opt_passinfo { - // create `ipa_inline_opt_pass` replace `pass_ipa_inline` - .pass = new ipa_inline_opt_pass(), .reference_pass_name = "inline", .ref_pass_instance_number = 0, - .pos_op = PASS_POS_REPLACE // PASS_POS_INSERT_AFTER, PASS_POS_REPLACE + // create `ipa_inline_opt_pass` replace `pass_ipa_inline` + .pass = new ipa_inline_opt_pass(), .reference_pass_name = "inline", + .ref_pass_instance_number = 0, + .pos_op = PASS_POS_REPLACE // PASS_POS_INSERT_AFTER, PASS_POS_REPLACE }; -/* ===------------------------- Ipa-Inline -------------------------=== */ +/* ===------------------------- IPA-Inline -------------------------=== */ /* ===------------------------- Loop-Unroll -------------------------=== */ const pass_data rtl_unroll_opt_pass_data = {.type = RTL_PASS, - .name = "rtl_unroll_opt_pass", - .optinfo_flags = OPTGROUP_LOOP, - .tv_id = TV_LOOP_UNROLL, - .properties_required = 0, - .properties_provided = 0, - .properties_destroyed = 0, - .todo_flags_start = 0, - .todo_flags_finish = 0}; + .name = "rtl_unroll_opt_pass", + .optinfo_flags = OPTGROUP_LOOP, + .tv_id = TV_LOOP_UNROLL, + .properties_required = 0, + .properties_provided = 0, + .properties_destroyed = 0, + .todo_flags_start = 0, + .todo_flags_finish = 0}; struct rtl_unroll_opt_pass : rtl_opt_pass { -public: - rtl_unroll_opt_pass() : rtl_opt_pass(rtl_unroll_opt_pass_data, g) - {} + public: + rtl_unroll_opt_pass() : rtl_opt_pass(rtl_unroll_opt_pass_data, g) {} - virtual bool gate(function *) - { - return (flag_unroll_loops || flag_unroll_all_loops || cfun->has_unroll); - } + virtual bool gate(function *) { + return (flag_unroll_loops || flag_unroll_all_loops || cfun->has_unroll); + } - virtual unsigned int execute(function *fun) override; + virtual unsigned int execute(function *fun) override; - virtual rtl_unroll_opt_pass *clone() override - { - return this; - } + virtual rtl_unroll_opt_pass *clone() override { return this; } }; -unsigned int rtl_unroll_opt_pass::execute(function *fun) -{ - if (number_of_loops(fun) > 1) { - int flags = 0; - if (dump_file) - df_dump(dump_file); +unsigned int rtl_unroll_opt_pass::execute(function *fun) { + if (number_of_loops(fun) > 1) { + int flags = 0; + if (dump_file) df_dump(dump_file); - if (flag_unroll_loops) - flags |= UAP_UNROLL; - if (flag_unroll_all_loops) - flags |= UAP_UNROLL_ALL; + if (flag_unroll_loops) flags |= UAP_UNROLL; + if (flag_unroll_all_loops) flags |= UAP_UNROLL_ALL; - unroll_loops_(flags); - } - return 0; + unroll_loops_(flags); + } + return 0; } struct register_pass_info rtl_unroll_opt_passinfo { - .pass = new rtl_unroll_opt_pass(), .reference_pass_name = "loop2_unroll", .ref_pass_instance_number = 0, - .pos_op = PASS_POS_REPLACE + .pass = new rtl_unroll_opt_pass(), .reference_pass_name = "loop2_unroll", + .ref_pass_instance_number = 0, .pos_op = PASS_POS_REPLACE }; /* ===------------------------- Loop-Unroll -------------------------=== */ -int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version) -{ - bool inline_switch = false; - bool unroll_switch = false; - - if (!plugin_default_version_check(version, &gcc_version)) { - printf("incompatible gcc/plugin versions\n"); - return 1; - } - - for (int i = 0; i < plugin_info->argc; i++) { - std::string key(plugin_info->argv[i].key); - std::string value(plugin_info->argv[i].value); - if (std::strcmp(plugin_info->argv[i].key, "inline_model") == 0) { - g_inline_model_path = plugin_info->argv[i].value; - inline_switch = true; - } else if (std::strcmp(plugin_info->argv[i].key, "unroll_model") == 0) { - g_unroll_model_path = plugin_info->argv[i].value; - unroll_switch = true; - } else if (std::strcmp(plugin_info->argv[i].key, "engine") == 0) { - g_infer_path = plugin_info->argv[i].value; - } - } - - if (access(g_inline_model_path, F_OK) && inline_switch) { - fprintf(stderr, "Model '%s' not found\n", g_inline_model_path); - return -1; - } - - if (access(g_unroll_model_path, F_OK) && unroll_switch) { - fprintf(stderr, "Model '%s' not found\n", g_unroll_model_path); - return -1; - } - - g_infer_handle = dlopen(g_infer_path, RTLD_LAZY); - if (!g_infer_handle) { - fprintf(stderr, "%s\n", dlerror()); - return -1; +int plugin_init(struct plugin_name_args *plugin_info, + struct plugin_gcc_version *version) { + bool inline_switch = false; + bool unroll_switch = false; + + const char *native_tune_clear = get_optimize_decision(); + execute_sha256(native_tune_clear, hash, sizeof(hash)); + var_str[0] = hash; + + if (!plugin_default_version_check(version, &gcc_version)) { + printf("incompatible gcc/plugin versions\n"); + return 1; + } + + for (int i = 0; i < plugin_info->argc; i++) { + std::string key(plugin_info->argv[i].key); + std::string value(plugin_info->argv[i].value); + if (std::strcmp(plugin_info->argv[i].key, "inline_model") == 0) { + g_inline_model_path = plugin_info->argv[i].value; + inline_switch = true; + } else if (std::strcmp(plugin_info->argv[i].key, "unroll_model") == 0) { + g_unroll_model_path = plugin_info->argv[i].value; + unroll_switch = true; + } else if (std::strcmp(plugin_info->argv[i].key, "engine") == 0) { + g_infer_path = plugin_info->argv[i].value; } - - initialize = (init_engine_t)dlsym(g_infer_handle, "initialize"); - add_double_input = (add_double_input_t)dlsym(g_infer_handle, "add_double_input"); - add_int64_input = (add_int64_input_t)dlsym(g_infer_handle, "add_int64_input"); - add_float_input = (add_float_input_t)dlsym(g_infer_handle, "add_float_input"); - inference = (inference_t)dlsym(g_infer_handle, "inference"); - get_int64_output = (get_int64_output_t)dlsym(g_infer_handle, "get_int64_output"); - free_engine = (free_engine_t)dlsym(g_infer_handle, "free_engine"); - - dlclose(g_infer_handle); - - const char *const plugin_name = plugin_info->base_name; - - if (inline_switch) { - register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &ipa_inline_opt_passinfo); - } - - if (unroll_switch) { - register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &rtl_unroll_opt_passinfo); - } - - return 0; + } + + if (access(g_inline_model_path, F_OK) && inline_switch) { + fprintf(stderr, "Model '%s' not found\n", g_inline_model_path); + return -1; + } + + if (access(g_unroll_model_path, F_OK) && unroll_switch) { + fprintf(stderr, "Model '%s' not found\n", g_unroll_model_path); + return -1; + } + + g_infer_handle = dlopen(g_infer_path, RTLD_LAZY); + if (!g_infer_handle) { + fprintf(stderr, "%s\n", dlerror()); + return -1; + } + + initialize = (init_engine_t)dlsym(g_infer_handle, "initialize"); + add_double_input = + (add_double_input_t)dlsym(g_infer_handle, "add_double_input"); + add_int64_input = (add_int64_input_t)dlsym(g_infer_handle, "add_int64_input"); + add_float_input = (add_float_input_t)dlsym(g_infer_handle, "add_float_input"); + add_string_input = + (add_string_input_t)dlsym(g_infer_handle, "add_string_input"); + inference = (inference_t)dlsym(g_infer_handle, "inference"); + get_int64_output = + (get_int64_output_t)dlsym(g_infer_handle, "get_int64_output"); + free_engine = (free_engine_t)dlsym(g_infer_handle, "free_engine"); + + dlclose(g_infer_handle); + + const char *const plugin_name = plugin_info->base_name; + + if (inline_switch) { + register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, + &ipa_inline_opt_passinfo); + } + + if (unroll_switch) { + register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, + &rtl_unroll_opt_passinfo); + } + + return 0; } diff --git a/aiframe/gcc_plugins/optimize/rtl_unroll_opt_plugin.cpp b/aiframe/gcc_plugins/optimize/rtl_unroll_opt_plugin.cpp index d702593e..73a67eae 100644 --- a/aiframe/gcc_plugins/optimize/rtl_unroll_opt_plugin.cpp +++ b/aiframe/gcc_plugins/optimize/rtl_unroll_opt_plugin.cpp @@ -46,17 +46,15 @@ get_float_output_t get_float_output; typedef void (*free_engine_t)(); free_engine_t free_engine; -const pass_data rtl_unroll_opt_pass_data = { - .type = RTL_PASS, - .name = "rtl_unroll_opt_pass", - .optinfo_flags = OPTGROUP_NONE, - .tv_id = TV_NONE, - .properties_required = 0, - .properties_provided = 0, - .properties_destroyed = 0, - .todo_flags_start = 0, - .todo_flags_finish = 0 -}; +const pass_data rtl_unroll_opt_pass_data = {.type = RTL_PASS, + .name = "rtl_unroll_opt_pass", + .optinfo_flags = OPTGROUP_NONE, + .tv_id = TV_NONE, + .properties_required = 0, + .properties_provided = 0, + .properties_destroyed = 0, + .todo_flags_start = 0, + .todo_flags_finish = 0}; struct rtl_unroll_opt_pass : rtl_opt_pass { public: @@ -87,10 +85,8 @@ struct rtl_unroll_opt_pass : rtl_opt_pass { }; struct register_pass_info rtl_unroll_opt_passinfo { - .pass = new rtl_unroll_opt_pass(), - .reference_pass_name = "loop2_unroll", - .ref_pass_instance_number = 0, - .pos_op = PASS_POS_INSERT_BEFORE + .pass = new rtl_unroll_opt_pass(), .reference_pass_name = "loop2_unroll", + .ref_pass_instance_number = 0, .pos_op = PASS_POS_INSERT_BEFORE }; int plugin_init(struct plugin_name_args* plugin_info, @@ -110,7 +106,7 @@ int plugin_init(struct plugin_name_args* plugin_info, } } - if (access(g_model_path, F_OK)) { + if (!g_model_path || access(g_model_path, F_OK)) { fprintf(stderr, "Model '%s' not found\n", g_model_path); return -1; } @@ -128,6 +124,12 @@ int plugin_init(struct plugin_name_args* plugin_info, (get_int64_output_t)dlsym(g_infer_handle, "get_int64_output"); free_engine = (free_engine_t)dlsym(g_infer_handle, "free_engine"); + if (!initialize || !add_int64_input || !inference || !get_int64_output || + !free_engine) { + fprintf(stderr, "Invalid inference engine '%s'\n", g_infer_path); + return -1; + } + dlclose(g_infer_handle); const char* const plugin_name = plugin_info->base_name; diff --git a/aiframe/include/feature_utils.h b/aiframe/include/feature_utils.h index 21077355..d5e6a18b 100644 --- a/aiframe/include/feature_utils.h +++ b/aiframe/include/feature_utils.h @@ -14,7 +14,7 @@ #include #include #include - + #include "basic-block.h" #ifdef __aarch64__ #include "insn_utils_aarch64.h" @@ -24,241 +24,216 @@ namespace ai4c { -void count_rtx_types(rtx x, std::unordered_map &type_counts) -{ - if (!x) - return; - - std::stack s; - s.push(x); - - while (!s.empty()) { - rtx current = s.top(); - s.pop(); - - if (!current) - continue; - - enum rtx_code code = GET_CODE(current); - type_counts[code]++; - - const char *fmt = GET_RTX_FORMAT(code); - for (int i = 0; fmt[i] != '\0'; i++) { - if (fmt[i] == 'e') { - s.push(XEXP(current, i)); - } else if (fmt[i] == 'E') { - int vec_length = XVECLEN(current, i); - for (int j = 0; j < vec_length; j++) { - s.push(XVECEXP(current, i, j)); - } - } +void count_rtx_types( + rtx x, std::unordered_map &type_counts) { + if (!x) return; + + std::stack s; + s.push(x); + + while (!s.empty()) { + rtx current = s.top(); + s.pop(); + + if (!current) continue; + + enum rtx_code code = GET_CODE(current); + type_counts[code]++; + + const char *fmt = GET_RTX_FORMAT(code); + for (int i = 0; fmt[i] != '\0'; i++) { + if (fmt[i] == 'e') { + s.push(XEXP(current, i)); + } else if (fmt[i] == 'E') { + int vec_length = XVECLEN(current, i); + for (int j = 0; j < vec_length; j++) { + s.push(XVECEXP(current, i, j)); } + } } + } } -std::vector get_all_rtx_codes() -{ - std::vector all_codes; - for (int code = 0; code < LAST_AND_UNUSED_RTX_CODE; ++code) { - all_codes.push_back(static_cast(code)); +std::vector get_all_rtx_codes() { + std::vector all_codes; + for (int code = 0; code < LAST_AND_UNUSED_RTX_CODE; ++code) { + all_codes.push_back(static_cast(code)); + } + return all_codes; +} + +static std::unordered_map count_loop_insn_types( + class loop *loop) { + basic_block *bbs, bb; + unsigned i; + rtx_insn *insn; + + // Create an unordered_map to store the counts of each rtx_code + std::unordered_map insn_type_counts; + + std::vector all_codes = get_all_rtx_codes(); + for (const auto &code : all_codes) { + insn_type_counts[code] = 0; + } + + bbs = get_loop_body(loop); + for (i = 0; i < loop->num_nodes; i++) { + bb = bbs[i]; + FOR_BB_INSNS(bb, insn) { + if (NONDEBUG_INSN_P(insn)) { + count_rtx_types(PATTERN(insn), insn_type_counts); + } } - return all_codes; + } + + free(bbs); + + return insn_type_counts; } -static std::unordered_map count_loop_insn_types(class loop *loop) -{ +class RTXInsnUtil { + public: + RTXInsnUtil(rtx_insn *insn) : insn_(insn) {} + virtual ~RTXInsnUtil() = default; + + private: + rtx_insn *insn_; +}; + +class LoopUtil { + public: + LoopUtil(class loop *loop_) : loop_(loop_) {} + + virtual ~LoopUtil() = default; + + void analyze_insns(AutoTuning &auto_tuning) { basic_block *bbs, bb; - unsigned i; + bbs = get_loop_body(loop_); rtx_insn *insn; + for (unsigned i = 0; i < loop_->num_nodes; i++) { + bb = bbs[i]; + bb_num++; + FOR_BB_INSNS(bb, insn) { + if (!INSN_P(insn)) continue; - // Create an unordered_map to store the counts of each rtx_code - std::unordered_map insn_type_counts; + if (!NONDEBUG_INSN_P(insn)) continue; - std::vector all_codes = get_all_rtx_codes(); - for (const auto &code : all_codes) { - insn_type_counts[code] = 0; - } + if (!is_valid_insn_attr_type(insn)) continue; + insn_attr_type ia_type = get_insn_attr_type(insn); - bbs = get_loop_body(loop); - for (i = 0; i < loop->num_nodes; i++) { - bb = bbs[i]; - FOR_BB_INSNS(bb, insn) - { - if (NONDEBUG_INSN_P(insn)) { - count_rtx_types(PATTERN(insn), insn_type_counts); - } + if (is_load_op(ia_type)) { + ld_insn_num++; } - } - free(bbs); + if (is_store_op(ia_type)) st_insn_num++; - return insn_type_counts; -} + if (is_fp_compute_op(ia_type)) fp_compute_num++; -class RTXInsnUtil { -public: - RTXInsnUtil(rtx_insn *insn) : insn_(insn) - {} - virtual ~RTXInsnUtil() = default; + if (is_fadd_op(insn, ia_type)) fadd_num++; -private: - rtx_insn *insn_; -}; + if (is_fcmp_op(ia_type)) fcmp_num++; -class LoopUtil { -public: - LoopUtil(class loop * loop_) : loop_(loop_) {} - - virtual ~LoopUtil() = default; - - void analyze_insns(AutoTuning &auto_tuning) { - basic_block* bbs, bb; - bbs = get_loop_body (loop_); - rtx_insn * insn; - for (unsigned i = 0; i < loop_->num_nodes; i++) { - bb = bbs[i]; - bb_num++; - FOR_BB_INSNS (bb, insn) { - if (!INSN_P (insn)) - continue; - - if (!NONDEBUG_INSN_P (insn)) - continue; - - if (!is_valid_insn_attr_type (insn)) - continue; - insn_attr_type ia_type = get_insn_attr_type (insn); - - if (is_load_op (ia_type)) { - ld_insn_num++; - } - - if (is_store_op (ia_type)) - st_insn_num++; - - if (is_fp_compute_op (ia_type)) - fp_compute_num++; - - if (is_fadd_op(insn, ia_type)) - fadd_num++; - - if (is_fcmp_op(ia_type)) - fcmp_num++; - - if (is_fdiv_op(ia_type)) - fdiv_num++; - - if (is_fmul_op(ia_type)) - fmul_num++; - - if (is_fp2si_op(ia_type)) - fp2si_num++; - - if (is_fsub_op(insn)) - fsub_num++; - - if (is_ret_op(insn)) - ret_num++; - - if (is_unreachable_op(ia_type)) - unreachable_num++; - - if (is_branch_op(ia_type)) - br_num++; - - if (is_memory_op(ia_type)) - mem_num++; - } + if (is_fdiv_op(ia_type)) fdiv_num++; + + if (is_fmul_op(ia_type)) fmul_num++; + + if (is_fp2si_op(ia_type)) fp2si_num++; + + if (is_fsub_op(insn)) fsub_num++; + + if (is_ret_op(insn)) ret_num++; + + if (is_unreachable_op(ia_type)) unreachable_num++; + + if (is_branch_op(ia_type)) br_num++; + + if (is_memory_op(ia_type)) mem_num++; } - free (bbs); - - auto_tuning.extra_features.fs.push_back( - ExtraFeature("block_num", bb_num)); - auto_tuning.extra_features.fs.push_back( - ExtraFeature("float_compute_insn", fp_compute_num)); - auto_tuning.extra_features.fs.push_back( - ExtraFeature("load_insn", ld_insn_num)); - auto_tuning.extra_features.fs.push_back( - ExtraFeature("store_insn", st_insn_num)); - auto_tuning.extra_features.fs.push_back( - ExtraFeature("fadd_insn", fadd_num)); - auto_tuning.extra_features.fs.push_back( - ExtraFeature("fcmp_num", fcmp_num)); - auto_tuning.extra_features.fs.push_back( - ExtraFeature("fdiv_num", fdiv_num)); - auto_tuning.extra_features.fs.push_back( - ExtraFeature("fmul_num", fmul_num)); - auto_tuning.extra_features.fs.push_back( - ExtraFeature("fp2si_num", fp2si_num)); - auto_tuning.extra_features.fs.push_back( - ExtraFeature("fsub_insn", fsub_num)); - auto_tuning.extra_features.fs.push_back( - ExtraFeature("ret_insn", ret_num)); - auto_tuning.extra_features.fs.push_back( - ExtraFeature("unreachable_insn", unreachable_num)); - auto_tuning.extra_features.fs.push_back( - ExtraFeature("br_insn", br_num)); - auto_tuning.extra_features.fs.push_back( - ExtraFeature("mem_insn", mem_num)); } - - std::vector analyze_insns() { - std::vector vec; - if (loop_->simple_loop_desc) { - niter = loop_->simple_loop_desc->niter; - } else { - niter = 0; - } - if (loop_->superloops) { - depth = loop_->superloops->length(); - } else { - depth = 1; - } - - vec.push_back(static_cast(loop_->lpt_decision.times)); - vec.push_back(static_cast(loop_->ninsns)); - vec.push_back(static_cast(loop_->lpt_decision.decision)); - vec.push_back(niter); - vec.push_back(depth); - std::unordered_set parm_set = {"vec_select", "mult", "neg","minus", "plus", "mem", "subreg", "reg", "const_int", "unspec", "clobber", "sign_extend"}; - - for (const auto& entry : res) { - enum rtx_code code = entry.first; - unsigned int count = entry.second; - if (parm_set.find(GET_RTX_NAME(code)) != parm_set.end()) { - vec.push_back(static_cast(count)); - } - } - return vec; + free(bbs); + + auto_tuning.extra_features.fs.push_back(ExtraFeature("block_num", bb_num)); + auto_tuning.extra_features.fs.push_back( + ExtraFeature("float_compute_insn", fp_compute_num)); + auto_tuning.extra_features.fs.push_back( + ExtraFeature("load_insn", ld_insn_num)); + auto_tuning.extra_features.fs.push_back( + ExtraFeature("store_insn", st_insn_num)); + auto_tuning.extra_features.fs.push_back( + ExtraFeature("fadd_insn", fadd_num)); + auto_tuning.extra_features.fs.push_back(ExtraFeature("fcmp_num", fcmp_num)); + auto_tuning.extra_features.fs.push_back(ExtraFeature("fdiv_num", fdiv_num)); + auto_tuning.extra_features.fs.push_back(ExtraFeature("fmul_num", fmul_num)); + auto_tuning.extra_features.fs.push_back( + ExtraFeature("fp2si_num", fp2si_num)); + auto_tuning.extra_features.fs.push_back( + ExtraFeature("fsub_insn", fsub_num)); + auto_tuning.extra_features.fs.push_back(ExtraFeature("ret_insn", ret_num)); + auto_tuning.extra_features.fs.push_back( + ExtraFeature("unreachable_insn", unreachable_num)); + auto_tuning.extra_features.fs.push_back(ExtraFeature("br_insn", br_num)); + auto_tuning.extra_features.fs.push_back(ExtraFeature("mem_insn", mem_num)); + } + + std::vector analyze_insns() { + std::vector vec; + if (loop_->simple_loop_desc) { + niter = loop_->simple_loop_desc->niter; + } else { + niter = 0; + } + if (loop_->superloops) { + depth = loop_->superloops->length(); + } else { + depth = 1; } - void dump(const std::string &output_file) - { - basic_block *bbs = get_loop_body(loop_); - dump_file = fopen(output_file.c_str(), "w"); - dump_basic_block(TDF_BLOCKS, *bbs, 0); - free(bbs); + vec.push_back(static_cast(loop_->lpt_decision.times)); + vec.push_back(static_cast(loop_->ninsns)); + vec.push_back(static_cast(loop_->lpt_decision.decision)); + vec.push_back(niter); + vec.push_back(depth); + std::unordered_set parm_set = { + "vec_select", "mult", "neg", "minus", "plus", "mem", + "subreg", "reg", "const_int", "unspec", "clobber", "sign_extend"}; + + for (const auto &entry : res) { + enum rtx_code code = entry.first; + unsigned int count = entry.second; + if (parm_set.find(GET_RTX_NAME(code)) != parm_set.end()) { + vec.push_back(static_cast(count)); + } } + return vec; + } -private: - class loop *loop_; - int64_t bb_num{0}; - int64_t fp_compute_num{0}; - int64_t ld_insn_num{0}; - int64_t st_insn_num{0}; - int64_t fadd_num{0}; - int64_t fcmp_num{0}; - int64_t fdiv_num{0}; - int64_t fmul_num{0}; - int64_t fp2si_num{0}; - int64_t fsub_num{0}; - int64_t ret_num{0}; - int64_t unreachable_num{0}; - int64_t br_num{0}; - int64_t mem_num{0}; - float niter{0}; - float depth{1}; - std::unordered_map res = count_loop_insn_types(loop_); + void dump(const std::string &output_file) { + basic_block *bbs = get_loop_body(loop_); + dump_file = fopen(output_file.c_str(), "w"); + dump_basic_block(TDF_BLOCKS, *bbs, 0); + free(bbs); + } + + private: + class loop *loop_; + int64_t bb_num{0}; + int64_t fp_compute_num{0}; + int64_t ld_insn_num{0}; + int64_t st_insn_num{0}; + int64_t fadd_num{0}; + int64_t fcmp_num{0}; + int64_t fdiv_num{0}; + int64_t fmul_num{0}; + int64_t fp2si_num{0}; + int64_t fsub_num{0}; + int64_t ret_num{0}; + int64_t unreachable_num{0}; + int64_t br_num{0}; + int64_t mem_num{0}; + float niter{0}; + float depth{1}; + std::unordered_map res = + count_loop_insn_types(loop_); }; class FunctionUtil; diff --git a/aiframe/include/insn-opinit.h b/aiframe/include/insn-opinit.h index 33ff6fbe..b277f82f 100644 --- a/aiframe/include/insn-opinit.h +++ b/aiframe/include/insn-opinit.h @@ -393,2822 +393,14 @@ enum optab_tag { LAST_NORM_OPTAB = len_store_optab }; -#define NUM_OPTABS 381 -#define NUM_CONVLIB_OPTABS 15 -#define NUM_NORMLIB_OPTABS 80 -#define NUM_OPTAB_PATTERNS 2467 +#define NUM_OPTABS 381 +#define NUM_CONVLIB_OPTABS 15 +#define NUM_NORMLIB_OPTABS 80 +#define NUM_OPTAB_PATTERNS 2467 typedef enum optab_tag optab; typedef enum optab_tag convert_optab; typedef enum optab_tag direct_optab; -struct optab_libcall_d -{ - char libcall_suffix; - const char *libcall_basename; - void (*libcall_gen) (optab, const char *name, - char suffix, machine_mode); -}; - -struct convert_optab_libcall_d -{ - const char *libcall_basename; - void (*libcall_gen) (convert_optab, const char *name, - machine_mode, machine_mode); -}; - -/* Given an enum insn_code, access the function to construct - the body of that kind of insn. */ -#define GEN_FCN(CODE) (insn_data[CODE].genfun) - -#ifdef NUM_RTX_CODE -/* Contains the optab used for each rtx code, and vice-versa. */ -extern const optab code_to_optab_[NUM_RTX_CODE]; -extern const enum rtx_code optab_to_code_[NUM_OPTABS]; - -static inline optab -code_to_optab (enum rtx_code code) -{ - return code_to_optab_[code]; -} - -static inline enum rtx_code -optab_to_code (optab op) -{ - return optab_to_code_[op]; -} - -extern insn_code maybe_code_for_ccmp (machine_mode, machine_mode); -inline insn_code -code_for_ccmp (machine_mode arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_ccmp (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_ccmp (machine_mode, machine_mode, rtx, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_ccmp (machine_mode arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4, rtx x5) -{ - rtx res = maybe_gen_ccmp (arg0, arg1, x0, x1, x2, x3, x4, x5); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_ccmp_rev (machine_mode, machine_mode); -inline insn_code -code_for_ccmp_rev (machine_mode arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_ccmp_rev (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_ccmp_rev (machine_mode, machine_mode, rtx, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_ccmp_rev (machine_mode arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4, rtx x5) -{ - rtx res = maybe_gen_ccmp_rev (arg0, arg1, x0, x1, x2, x3, x4, x5); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_tb (rtx_code, machine_mode, machine_mode); -inline insn_code -code_for_aarch64_tb (rtx_code arg0, machine_mode arg1, machine_mode arg2) -{ - insn_code code = maybe_code_for_aarch64_tb (arg0, arg1, arg2); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_tb (rtx_code, machine_mode, machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_tb (rtx_code arg0, machine_mode arg1, machine_mode arg2, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_tb (arg0, arg1, arg2, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_rbit (machine_mode); -inline insn_code -code_for_aarch64_rbit (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_rbit (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_rbit (machine_mode, rtx, rtx); -inline rtx -gen_aarch64_rbit (machine_mode arg0, rtx x0, rtx x1) -{ - rtx res = maybe_gen_aarch64_rbit (arg0, x0, x1); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_rev16 (machine_mode); -inline insn_code -code_for_aarch64_rev16 (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_rev16 (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_rev16 (machine_mode, rtx, rtx); -inline rtx -gen_aarch64_rev16 (machine_mode arg0, rtx x0, rtx x1) -{ - rtx res = maybe_gen_aarch64_rev16 (arg0, x0, x1); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_reload_movcp (machine_mode, machine_mode); -inline insn_code -code_for_aarch64_reload_movcp (machine_mode arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_reload_movcp (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_reload_movcp (machine_mode, machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_reload_movcp (machine_mode arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_reload_movcp (arg0, arg1, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_reload_mov (machine_mode); -inline insn_code -code_for_aarch64_reload_mov (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_reload_mov (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_reload_mov (machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_reload_mov (machine_mode arg0, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_reload_mov (arg0, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_movdi_low (machine_mode); -inline insn_code -code_for_aarch64_movdi_low (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_movdi_low (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_movdi_low (machine_mode, rtx, rtx); -inline rtx -gen_aarch64_movdi_low (machine_mode arg0, rtx x0, rtx x1) -{ - rtx res = maybe_gen_aarch64_movdi_low (arg0, x0, x1); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_movdi_high (machine_mode); -inline insn_code -code_for_aarch64_movdi_high (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_movdi_high (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_movdi_high (machine_mode, rtx, rtx); -inline rtx -gen_aarch64_movdi_high (machine_mode arg0, rtx x0, rtx x1) -{ - rtx res = maybe_gen_aarch64_movdi_high (arg0, x0, x1); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_movhigh_di (machine_mode); -inline insn_code -code_for_aarch64_movhigh_di (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_movhigh_di (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_movhigh_di (machine_mode, rtx, rtx); -inline rtx -gen_aarch64_movhigh_di (machine_mode arg0, rtx x0, rtx x1) -{ - rtx res = maybe_gen_aarch64_movhigh_di (arg0, x0, x1); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_movlow_di (machine_mode); -inline insn_code -code_for_aarch64_movlow_di (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_movlow_di (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_movlow_di (machine_mode, rtx, rtx); -inline rtx -gen_aarch64_movlow_di (machine_mode arg0, rtx x0, rtx x1) -{ - rtx res = maybe_gen_aarch64_movlow_di (arg0, x0, x1); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_ldr_got_tiny (machine_mode); -inline insn_code -code_for_ldr_got_tiny (machine_mode arg0) -{ - insn_code code = maybe_code_for_ldr_got_tiny (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_ldr_got_tiny (machine_mode, rtx, rtx); -inline rtx -gen_ldr_got_tiny (machine_mode arg0, rtx x0, rtx x1) -{ - rtx res = maybe_gen_ldr_got_tiny (arg0, x0, x1); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_probe_sve_stack_clash (machine_mode); -inline insn_code -code_for_probe_sve_stack_clash (machine_mode arg0) -{ - insn_code code = maybe_code_for_probe_sve_stack_clash (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_probe_sve_stack_clash (machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_probe_sve_stack_clash (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_probe_sve_stack_clash (arg0, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_set (int, machine_mode); -inline insn_code -code_for_aarch64_set (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_set (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_set (int, machine_mode, rtx); -inline rtx -gen_aarch64_set (int arg0, machine_mode arg1, rtx x0) -{ - rtx res = maybe_gen_aarch64_set (arg0, arg1, x0); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_get (int, machine_mode); -inline insn_code -code_for_aarch64_get (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_get (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_get (int, machine_mode, rtx); -inline rtx -gen_aarch64_get (int arg0, machine_mode arg1, rtx x0) -{ - rtx res = maybe_gen_aarch64_get (arg0, arg1, x0); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_despeculate_copy (machine_mode); -inline insn_code -code_for_despeculate_copy (machine_mode arg0) -{ - insn_code code = maybe_code_for_despeculate_copy (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_despeculate_copy (machine_mode, rtx, rtx, rtx); -inline rtx -gen_despeculate_copy (machine_mode arg0, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_despeculate_copy (arg0, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_split_simd_mov (machine_mode); -inline insn_code -code_for_aarch64_split_simd_mov (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_split_simd_mov (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_split_simd_mov (machine_mode, rtx, rtx); -inline rtx -gen_aarch64_split_simd_mov (machine_mode arg0, rtx x0, rtx x1) -{ - rtx res = maybe_gen_aarch64_split_simd_mov (arg0, x0, x1); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_rsqrte (machine_mode); -inline insn_code -code_for_aarch64_rsqrte (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_rsqrte (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_rsqrte (machine_mode, rtx, rtx); -inline rtx -gen_aarch64_rsqrte (machine_mode arg0, rtx x0, rtx x1) -{ - rtx res = maybe_gen_aarch64_rsqrte (arg0, x0, x1); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_rsqrts (machine_mode); -inline insn_code -code_for_aarch64_rsqrts (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_rsqrts (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_rsqrts (machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_rsqrts (machine_mode arg0, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_rsqrts (arg0, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_simd_vec_copy_lane (machine_mode); -inline insn_code -code_for_aarch64_simd_vec_copy_lane (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_simd_vec_copy_lane (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_simd_vec_copy_lane (machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_simd_vec_copy_lane (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_simd_vec_copy_lane (arg0, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_vec_concat (machine_mode); -inline insn_code -code_for_aarch64_vec_concat (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_vec_concat (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_vec_concat (machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_vec_concat (machine_mode arg0, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_vec_concat (arg0, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_frecpe (machine_mode); -inline insn_code -code_for_aarch64_frecpe (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_frecpe (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_frecpe (machine_mode, rtx, rtx); -inline rtx -gen_aarch64_frecpe (machine_mode arg0, rtx x0, rtx x1) -{ - rtx res = maybe_gen_aarch64_frecpe (arg0, x0, x1); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_frecps (machine_mode); -inline insn_code -code_for_aarch64_frecps (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_frecps (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_frecps (machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_frecps (machine_mode arg0, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_frecps (arg0, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_atomic_compare_and_swap (machine_mode); -inline insn_code -code_for_atomic_compare_and_swap (machine_mode arg0) -{ - insn_code code = maybe_code_for_atomic_compare_and_swap (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_atomic_compare_and_swap (machine_mode, rtx, rtx, rtx, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_atomic_compare_and_swap (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4, rtx x5, rtx x6, rtx x7) -{ - rtx res = maybe_gen_atomic_compare_and_swap (arg0, x0, x1, x2, x3, x4, x5, x6, x7); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_compare_and_swap (machine_mode); -inline insn_code -code_for_aarch64_compare_and_swap (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_compare_and_swap (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_compare_and_swap (machine_mode, rtx, rtx, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_compare_and_swap (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4, rtx x5, rtx x6) -{ - rtx res = maybe_gen_aarch64_compare_and_swap (arg0, x0, x1, x2, x3, x4, x5, x6); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_compare_and_swap_lse (machine_mode); -inline insn_code -code_for_aarch64_compare_and_swap_lse (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_compare_and_swap_lse (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_compare_and_swap_lse (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_compare_and_swap_lse (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_compare_and_swap_lse (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_load_exclusive (machine_mode); -inline insn_code -code_for_aarch64_load_exclusive (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_load_exclusive (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_load_exclusive (machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_load_exclusive (machine_mode arg0, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_load_exclusive (arg0, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_store_exclusive (machine_mode); -inline insn_code -code_for_aarch64_store_exclusive (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_store_exclusive (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_store_exclusive (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_store_exclusive (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_store_exclusive (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_pred_mov (machine_mode); -inline insn_code -code_for_aarch64_pred_mov (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_pred_mov (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_pred_mov (machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_pred_mov (machine_mode arg0, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_pred_mov (arg0, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_reinterpret (machine_mode); -inline insn_code -code_for_aarch64_sve_reinterpret (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve_reinterpret (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_reinterpret (machine_mode, rtx, rtx); -inline rtx -gen_aarch64_sve_reinterpret (machine_mode arg0, rtx x0, rtx x1) -{ - rtx res = maybe_gen_aarch64_sve_reinterpret (arg0, x0, x1); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_load (int, rtx_code, machine_mode, machine_mode); -inline insn_code -code_for_aarch64_load (int arg0, rtx_code arg1, machine_mode arg2, machine_mode arg3) -{ - insn_code code = maybe_code_for_aarch64_load (arg0, arg1, arg2, arg3); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_load (int, rtx_code, machine_mode, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_load (int arg0, rtx_code arg1, machine_mode arg2, machine_mode arg3, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_load (arg0, arg1, arg2, arg3, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_ldf1 (int, machine_mode); -inline insn_code -code_for_aarch64_ldf1 (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_ldf1 (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_ldf1 (int, machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_ldf1 (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_ldf1 (arg0, arg1, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_ldf1 (int, rtx_code, machine_mode, machine_mode); -inline insn_code -code_for_aarch64_ldf1 (int arg0, rtx_code arg1, machine_mode arg2, machine_mode arg3) -{ - insn_code code = maybe_code_for_aarch64_ldf1 (arg0, arg1, arg2, arg3); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_ldf1 (int, rtx_code, machine_mode, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_ldf1 (int arg0, rtx_code arg1, machine_mode arg2, machine_mode arg3, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_ldf1 (arg0, arg1, arg2, arg3, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_ldnt1 (machine_mode); -inline insn_code -code_for_aarch64_ldnt1 (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_ldnt1 (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_ldnt1 (machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_ldnt1 (machine_mode arg0, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_ldnt1 (arg0, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_gather_load (rtx_code, machine_mode, machine_mode); -inline insn_code -code_for_aarch64_gather_load (rtx_code arg0, machine_mode arg1, machine_mode arg2) -{ - insn_code code = maybe_code_for_aarch64_gather_load (arg0, arg1, arg2); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_gather_load (rtx_code, machine_mode, machine_mode, rtx, rtx, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_gather_load (rtx_code arg0, machine_mode arg1, machine_mode arg2, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4, rtx x5, rtx x6) -{ - rtx res = maybe_gen_aarch64_gather_load (arg0, arg1, arg2, x0, x1, x2, x3, x4, x5, x6); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_ldff1_gather (machine_mode); -inline insn_code -code_for_aarch64_ldff1_gather (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_ldff1_gather (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_ldff1_gather (machine_mode, rtx, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_ldff1_gather (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4, rtx x5) -{ - rtx res = maybe_gen_aarch64_ldff1_gather (arg0, x0, x1, x2, x3, x4, x5); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_ldff1_gather (rtx_code, machine_mode, machine_mode); -inline insn_code -code_for_aarch64_ldff1_gather (rtx_code arg0, machine_mode arg1, machine_mode arg2) -{ - insn_code code = maybe_code_for_aarch64_ldff1_gather (arg0, arg1, arg2); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_ldff1_gather (rtx_code, machine_mode, machine_mode, rtx, rtx, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_ldff1_gather (rtx_code arg0, machine_mode arg1, machine_mode arg2, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4, rtx x5, rtx x6) -{ - rtx res = maybe_gen_aarch64_ldff1_gather (arg0, arg1, arg2, x0, x1, x2, x3, x4, x5, x6); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_prefetch (machine_mode); -inline insn_code -code_for_aarch64_sve_prefetch (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve_prefetch (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_prefetch (machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_prefetch (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_sve_prefetch (arg0, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_gather_prefetch (machine_mode, machine_mode); -inline insn_code -code_for_aarch64_sve_gather_prefetch (machine_mode arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_sve_gather_prefetch (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_gather_prefetch (machine_mode, machine_mode, rtx, rtx, rtx, rtx, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_gather_prefetch (machine_mode arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4, rtx x5, rtx x6, rtx x7, rtx x8) -{ - rtx res = maybe_gen_aarch64_sve_gather_prefetch (arg0, arg1, x0, x1, x2, x3, x4, x5, x6, x7, x8); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_store_trunc (machine_mode, machine_mode); -inline insn_code -code_for_aarch64_store_trunc (machine_mode arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_store_trunc (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_store_trunc (machine_mode, machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_store_trunc (machine_mode arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_store_trunc (arg0, arg1, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_stnt1 (machine_mode); -inline insn_code -code_for_aarch64_stnt1 (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_stnt1 (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_stnt1 (machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_stnt1 (machine_mode arg0, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_stnt1 (arg0, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_scatter_store_trunc (machine_mode, machine_mode); -inline insn_code -code_for_aarch64_scatter_store_trunc (machine_mode arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_scatter_store_trunc (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_scatter_store_trunc (machine_mode, machine_mode, rtx, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_scatter_store_trunc (machine_mode arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4, rtx x5) -{ - rtx res = maybe_gen_aarch64_scatter_store_trunc (arg0, arg1, x0, x1, x2, x3, x4, x5); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_vec_duplicate_vq_le (machine_mode); -inline insn_code -code_for_aarch64_vec_duplicate_vq_le (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_vec_duplicate_vq_le (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_vec_duplicate_vq_le (machine_mode, rtx, rtx); -inline rtx -gen_aarch64_vec_duplicate_vq_le (machine_mode arg0, rtx x0, rtx x1) -{ - rtx res = maybe_gen_aarch64_vec_duplicate_vq_le (arg0, x0, x1); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_vec_duplicate_vq_be (machine_mode); -inline insn_code -code_for_aarch64_vec_duplicate_vq_be (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_vec_duplicate_vq_be (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_vec_duplicate_vq_be (machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_vec_duplicate_vq_be (machine_mode arg0, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_vec_duplicate_vq_be (arg0, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_ld1rq (machine_mode); -inline insn_code -code_for_aarch64_sve_ld1rq (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve_ld1rq (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_ld1rq (machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_ld1rq (machine_mode arg0, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_sve_ld1rq (arg0, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_ld1ro (machine_mode); -inline insn_code -code_for_aarch64_sve_ld1ro (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve_ld1ro (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_ld1ro (machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_ld1ro (machine_mode arg0, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_sve_ld1ro (arg0, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_extract (int, machine_mode); -inline insn_code -code_for_extract (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_extract (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_extract (int, machine_mode, rtx, rtx, rtx); -inline rtx -gen_extract (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_extract (arg0, arg1, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_pred (rtx_code, machine_mode); -inline insn_code -code_for_aarch64_pred (rtx_code arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_pred (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_pred (rtx_code, machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_pred (rtx_code arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_pred (arg0, arg1, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern rtx maybe_gen_aarch64_pred (rtx_code, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_pred (rtx_code arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_pred (arg0, arg1, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_cond (rtx_code, machine_mode); -inline insn_code -code_for_cond (rtx_code arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_cond (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_cond (rtx_code, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_cond (rtx_code arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_cond (arg0, arg1, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern rtx maybe_gen_cond (rtx_code, machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_cond (rtx_code arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_cond (arg0, arg1, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_pred (int, machine_mode); -inline insn_code -code_for_aarch64_pred (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_pred (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_pred (int, machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_pred (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_pred (arg0, arg1, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern rtx maybe_gen_aarch64_pred (int, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_pred (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_pred (arg0, arg1, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern rtx maybe_gen_aarch64_pred (int, machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_pred (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_pred (arg0, arg1, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern rtx maybe_gen_aarch64_pred (int, machine_mode, rtx, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_pred (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4, rtx x5) -{ - rtx res = maybe_gen_aarch64_pred (arg0, arg1, x0, x1, x2, x3, x4, x5); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_revbhw (machine_mode, machine_mode); -inline insn_code -code_for_aarch64_sve_revbhw (machine_mode arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_sve_revbhw (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_revbhw (machine_mode, machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_revbhw (machine_mode arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_sve_revbhw (arg0, arg1, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_cond (int, machine_mode); -inline insn_code -code_for_cond (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_cond (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_cond (int, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_cond (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_cond (arg0, arg1, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern rtx maybe_gen_cond (int, machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_cond (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_cond (arg0, arg1, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern rtx maybe_gen_cond (int, machine_mode, rtx, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_cond (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4, rtx x5) -{ - rtx res = maybe_gen_cond (arg0, arg1, x0, x1, x2, x3, x4, x5); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_pred_sxt (machine_mode, machine_mode); -inline insn_code -code_for_aarch64_pred_sxt (machine_mode arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_pred_sxt (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_pred_sxt (machine_mode, machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_pred_sxt (machine_mode arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_pred_sxt (arg0, arg1, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_cond_sxt (machine_mode, machine_mode); -inline insn_code -code_for_aarch64_cond_sxt (machine_mode arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_cond_sxt (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_cond_sxt (machine_mode, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_cond_sxt (machine_mode arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_cond_sxt (arg0, arg1, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_pred_cnot (machine_mode); -inline insn_code -code_for_aarch64_pred_cnot (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_pred_cnot (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_pred_cnot (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_pred_cnot (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_pred_cnot (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_cond_cnot (machine_mode); -inline insn_code -code_for_cond_cnot (machine_mode arg0) -{ - insn_code code = maybe_code_for_cond_cnot (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_cond_cnot (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_cond_cnot (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_cond_cnot (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve (int, machine_mode); -inline insn_code -code_for_aarch64_sve (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_sve (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve (int, machine_mode, rtx, rtx); -inline rtx -gen_aarch64_sve (int arg0, machine_mode arg1, rtx x0, rtx x1) -{ - rtx res = maybe_gen_aarch64_sve (arg0, arg1, x0, x1); - gcc_assert (res); - return res; -} - -extern rtx maybe_gen_aarch64_sve (int, machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_sve (arg0, arg1, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern rtx maybe_gen_aarch64_sve (int, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve (arg0, arg1, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_adr (machine_mode); -inline insn_code -code_for_aarch64_adr (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_adr (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_adr (machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_adr (machine_mode arg0, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_adr (arg0, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_adr_shift (machine_mode); -inline insn_code -code_for_aarch64_adr_shift (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_adr_shift (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_adr_shift (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_adr_shift (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_adr_shift (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_pred_abd (rtx_code, machine_mode); -inline insn_code -code_for_aarch64_pred_abd (rtx_code arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_pred_abd (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_pred_abd (rtx_code, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_pred_abd (rtx_code arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_pred_abd (arg0, arg1, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_cond_abd (rtx_code, machine_mode); -inline insn_code -code_for_aarch64_cond_abd (rtx_code arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_cond_abd (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_cond_abd (rtx_code, machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_cond_abd (rtx_code arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_cond_abd (arg0, arg1, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve (rtx_code, machine_mode); -inline insn_code -code_for_aarch64_sve (rtx_code arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_sve (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve (rtx_code, machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve (rtx_code arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_sve (arg0, arg1, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_bic (machine_mode); -inline insn_code -code_for_aarch64_bic (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_bic (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_bic (machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_bic (machine_mode arg0, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_bic (arg0, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_cond_bic (machine_mode); -inline insn_code -code_for_cond_bic (machine_mode arg0) -{ - insn_code code = maybe_code_for_cond_bic (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_cond_bic (machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_cond_bic (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_cond_bic (arg0, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_cadd3 (int, machine_mode); -inline insn_code -code_for_cadd3 (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_cadd3 (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_cadd3 (int, machine_mode, rtx, rtx, rtx); -inline rtx -gen_cadd3 (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_cadd3 (arg0, arg1, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_pred_abd (machine_mode); -inline insn_code -code_for_aarch64_pred_abd (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_pred_abd (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_pred_abd (machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_pred_abd (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_pred_abd (arg0, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_cond_abd (machine_mode); -inline insn_code -code_for_aarch64_cond_abd (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_cond_abd (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_cond_abd (machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_cond_abd (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_cond_abd (arg0, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_mul_lane (machine_mode); -inline insn_code -code_for_aarch64_mul_lane (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_mul_lane (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_mul_lane (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_mul_lane (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_mul_lane (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_pred_z (rtx_code, machine_mode); -inline insn_code -code_for_aarch64_pred_z (rtx_code arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_pred_z (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_pred_z (rtx_code, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_pred_z (rtx_code arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_pred_z (arg0, arg1, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_pred_fma (machine_mode); -inline insn_code -code_for_aarch64_pred_fma (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_pred_fma (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_pred_fma (machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_pred_fma (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_pred_fma (arg0, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_pred_fnma (machine_mode); -inline insn_code -code_for_aarch64_pred_fnma (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_pred_fnma (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_pred_fnma (machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_pred_fnma (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_pred_fnma (arg0, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_dot_prod_lane (int, machine_mode); -inline insn_code -code_for_aarch64_dot_prod_lane (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_dot_prod_lane (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_dot_prod_lane (int, machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_dot_prod_lane (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_dot_prod_lane (arg0, arg1, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_dot_prod (int, machine_mode); -inline insn_code -code_for_dot_prod (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_dot_prod (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern insn_code maybe_code_for_aarch64_sve_add (int, machine_mode); -inline insn_code -code_for_aarch64_sve_add (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_sve_add (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_add (int, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_add (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve_add (arg0, arg1, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_lane (int, machine_mode); -inline insn_code -code_for_aarch64_lane (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_lane (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_lane (int, machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_lane (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_lane (arg0, arg1, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_tmad (machine_mode); -inline insn_code -code_for_aarch64_sve_tmad (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve_tmad (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_tmad (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_tmad (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve_tmad (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_vnx4sf (int); -inline insn_code -code_for_aarch64_sve_vnx4sf (int arg0) -{ - insn_code code = maybe_code_for_aarch64_sve_vnx4sf (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_vnx4sf (int, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_vnx4sf (int arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve_vnx4sf (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_lanevnx4sf (int); -inline insn_code -code_for_aarch64_sve_lanevnx4sf (int arg0) -{ - insn_code code = maybe_code_for_aarch64_sve_lanevnx4sf (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_lanevnx4sf (int, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_lanevnx4sf (int arg0, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_sve_lanevnx4sf (arg0, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_vcond_mask (machine_mode, machine_mode); -inline insn_code -code_for_vcond_mask (machine_mode arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_vcond_mask (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_vcond_mask (machine_mode, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_vcond_mask (machine_mode arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_vcond_mask (arg0, arg1, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sel_dup (machine_mode); -inline insn_code -code_for_aarch64_sel_dup (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sel_dup (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sel_dup (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sel_dup (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sel_dup (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_pred_cmp (rtx_code, machine_mode); -inline insn_code -code_for_aarch64_pred_cmp (rtx_code arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_pred_cmp (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_pred_cmp (rtx_code, machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_pred_cmp (rtx_code arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_pred_cmp (arg0, arg1, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_pred_cmp_wide (int, machine_mode); -inline insn_code -code_for_aarch64_pred_cmp_wide (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_pred_cmp_wide (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_pred_cmp_wide (int, machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_pred_cmp_wide (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_pred_cmp_wide (arg0, arg1, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_while (int, machine_mode, machine_mode); -inline insn_code -code_for_while (int arg0, machine_mode arg1, machine_mode arg2) -{ - insn_code code = maybe_code_for_while (arg0, arg1, arg2); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_while (int, machine_mode, machine_mode, rtx, rtx, rtx); -inline rtx -gen_while (int arg0, machine_mode arg1, machine_mode arg2, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_while (arg0, arg1, arg2, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_while_ptest (int, machine_mode, machine_mode); -inline insn_code -code_for_while_ptest (int arg0, machine_mode arg1, machine_mode arg2) -{ - insn_code code = maybe_code_for_while_ptest (arg0, arg1, arg2); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_while_ptest (int, machine_mode, machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_while_ptest (int arg0, machine_mode arg1, machine_mode arg2, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_while_ptest (arg0, arg1, arg2, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_pred_fcm (int, machine_mode); -inline insn_code -code_for_aarch64_pred_fcm (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_pred_fcm (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_pred_fcm (int, machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_pred_fcm (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_pred_fcm (arg0, arg1, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_pred_fcmuo (machine_mode); -inline insn_code -code_for_aarch64_pred_fcmuo (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_pred_fcmuo (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_pred_fcmuo (machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_pred_fcmuo (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_pred_fcmuo (arg0, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_pred_fac (int, machine_mode); -inline insn_code -code_for_aarch64_pred_fac (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_pred_fac (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_pred_fac (int, machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_pred_fac (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_pred_fac (arg0, arg1, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_fold_extract (int, machine_mode); -inline insn_code -code_for_fold_extract (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_fold_extract (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_fold_extract (int, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_fold_extract (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_fold_extract (arg0, arg1, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_fold_extract_vector (int, machine_mode); -inline insn_code -code_for_aarch64_fold_extract_vector (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_fold_extract_vector (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_fold_extract_vector (int, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_fold_extract_vector (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_fold_extract_vector (arg0, arg1, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_pred_reduc (int, machine_mode); -inline insn_code -code_for_aarch64_pred_reduc (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_pred_reduc (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_pred_reduc (int, machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_pred_reduc (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_pred_reduc (arg0, arg1, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_tbl (machine_mode); -inline insn_code -code_for_aarch64_sve_tbl (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve_tbl (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_tbl (machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_tbl (machine_mode arg0, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_sve_tbl (arg0, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_compact (machine_mode); -inline insn_code -code_for_aarch64_sve_compact (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve_compact (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_compact (machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_compact (machine_mode arg0, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_sve_compact (arg0, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_dup_lane (machine_mode); -inline insn_code -code_for_aarch64_sve_dup_lane (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve_dup_lane (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_dup_lane (machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_dup_lane (machine_mode arg0, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_sve_dup_lane (arg0, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_dupq_lane (machine_mode); -inline insn_code -code_for_aarch64_sve_dupq_lane (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve_dupq_lane (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_dupq_lane (machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_dupq_lane (machine_mode arg0, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_sve_dupq_lane (arg0, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_rev (machine_mode); -inline insn_code -code_for_aarch64_sve_rev (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve_rev (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_rev (machine_mode, rtx, rtx); -inline rtx -gen_aarch64_sve_rev (machine_mode arg0, rtx x0, rtx x1) -{ - rtx res = maybe_gen_aarch64_sve_rev (arg0, x0, x1); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_splice (machine_mode); -inline insn_code -code_for_aarch64_sve_splice (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve_splice (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_splice (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_splice (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve_splice (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_ext (machine_mode); -inline insn_code -code_for_aarch64_sve_ext (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve_ext (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_ext (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_ext (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve_ext (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_trn1_conv (machine_mode); -inline insn_code -code_for_aarch64_sve_trn1_conv (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve_trn1_conv (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_trn1_conv (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_trn1_conv (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve_trn1_conv (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_unpk (int, int, machine_mode); -inline insn_code -code_for_aarch64_sve_unpk (int arg0, int arg1, machine_mode arg2) -{ - insn_code code = maybe_code_for_aarch64_sve_unpk (arg0, arg1, arg2); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_unpk (int, int, machine_mode, rtx, rtx); -inline rtx -gen_aarch64_sve_unpk (int arg0, int arg1, machine_mode arg2, rtx x0, rtx x1) -{ - rtx res = maybe_gen_aarch64_sve_unpk (arg0, arg1, arg2, x0, x1); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_nontrunc (int, machine_mode, machine_mode); -inline insn_code -code_for_aarch64_sve_nontrunc (int arg0, machine_mode arg1, machine_mode arg2) -{ - insn_code code = maybe_code_for_aarch64_sve_nontrunc (arg0, arg1, arg2); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_nontrunc (int, machine_mode, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_nontrunc (int arg0, machine_mode arg1, machine_mode arg2, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve_nontrunc (arg0, arg1, arg2, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_trunc (int, machine_mode, machine_mode); -inline insn_code -code_for_aarch64_sve_trunc (int arg0, machine_mode arg1, machine_mode arg2) -{ - insn_code code = maybe_code_for_aarch64_sve_trunc (arg0, arg1, arg2); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_trunc (int, machine_mode, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_trunc (int arg0, machine_mode arg1, machine_mode arg2, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve_trunc (arg0, arg1, arg2, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_cond_nontrunc (int, machine_mode, machine_mode); -inline insn_code -code_for_cond_nontrunc (int arg0, machine_mode arg1, machine_mode arg2) -{ - insn_code code = maybe_code_for_cond_nontrunc (arg0, arg1, arg2); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_cond_nontrunc (int, machine_mode, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_cond_nontrunc (int arg0, machine_mode arg1, machine_mode arg2, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_cond_nontrunc (arg0, arg1, arg2, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_cond_trunc (int, machine_mode, machine_mode); -inline insn_code -code_for_cond_trunc (int arg0, machine_mode arg1, machine_mode arg2) -{ - insn_code code = maybe_code_for_cond_trunc (arg0, arg1, arg2); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_cond_trunc (int, machine_mode, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_cond_trunc (int arg0, machine_mode arg1, machine_mode arg2, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_cond_trunc (arg0, arg1, arg2, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_nonextend (int, machine_mode, machine_mode); -inline insn_code -code_for_aarch64_sve_nonextend (int arg0, machine_mode arg1, machine_mode arg2) -{ - insn_code code = maybe_code_for_aarch64_sve_nonextend (arg0, arg1, arg2); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_nonextend (int, machine_mode, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_nonextend (int arg0, machine_mode arg1, machine_mode arg2, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve_nonextend (arg0, arg1, arg2, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_extend (int, machine_mode, machine_mode); -inline insn_code -code_for_aarch64_sve_extend (int arg0, machine_mode arg1, machine_mode arg2) -{ - insn_code code = maybe_code_for_aarch64_sve_extend (arg0, arg1, arg2); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_extend (int, machine_mode, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_extend (int arg0, machine_mode arg1, machine_mode arg2, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve_extend (arg0, arg1, arg2, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_cond_nonextend (int, machine_mode, machine_mode); -inline insn_code -code_for_cond_nonextend (int arg0, machine_mode arg1, machine_mode arg2) -{ - insn_code code = maybe_code_for_cond_nonextend (arg0, arg1, arg2); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_cond_nonextend (int, machine_mode, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_cond_nonextend (int arg0, machine_mode arg1, machine_mode arg2, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_cond_nonextend (arg0, arg1, arg2, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_cond_extend (int, machine_mode, machine_mode); -inline insn_code -code_for_cond_extend (int arg0, machine_mode arg1, machine_mode arg2) -{ - insn_code code = maybe_code_for_cond_extend (arg0, arg1, arg2); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_cond_extend (int, machine_mode, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_cond_extend (int arg0, machine_mode arg1, machine_mode arg2, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_cond_extend (arg0, arg1, arg2, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_cvtnt (machine_mode); -inline insn_code -code_for_aarch64_sve_cvtnt (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve_cvtnt (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_cvtnt (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_cvtnt (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve_cvtnt (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_punpk (int, machine_mode); -inline insn_code -code_for_aarch64_sve_punpk (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_sve_punpk (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_punpk (int, machine_mode, rtx, rtx); -inline rtx -gen_aarch64_sve_punpk (int arg0, machine_mode arg1, rtx x0, rtx x1) -{ - rtx res = maybe_gen_aarch64_sve_punpk (arg0, arg1, x0, x1); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_brk (int); -inline insn_code -code_for_aarch64_brk (int arg0) -{ - insn_code code = maybe_code_for_aarch64_brk (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_brk (int, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_brk (int arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_brk (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_pat (rtx_code, machine_mode); -inline insn_code -code_for_aarch64_sve_pat (rtx_code arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_sve_pat (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_pat (rtx_code, machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_pat (rtx_code arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_sve_pat (arg0, arg1, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_pred_cntp (machine_mode); -inline insn_code -code_for_aarch64_pred_cntp (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_pred_cntp (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_pred_cntp (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_pred_cntp (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_pred_cntp (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_cntp (rtx_code, machine_mode, machine_mode); -inline insn_code -code_for_aarch64_sve_cntp (rtx_code arg0, machine_mode arg1, machine_mode arg2) -{ - insn_code code = maybe_code_for_aarch64_sve_cntp (arg0, arg1, arg2); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_cntp (rtx_code, machine_mode, machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_cntp (rtx_code arg0, machine_mode arg1, machine_mode arg2, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_sve_cntp (arg0, arg1, arg2, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_cntp (rtx_code, machine_mode); -inline insn_code -code_for_aarch64_sve_cntp (rtx_code arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_sve_cntp (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_cntp (rtx_code, machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_cntp (rtx_code arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_sve_cntp (arg0, arg1, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_gather_ldnt (machine_mode); -inline insn_code -code_for_aarch64_gather_ldnt (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_gather_ldnt (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_gather_ldnt (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_gather_ldnt (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_gather_ldnt (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_gather_ldnt (rtx_code, machine_mode, machine_mode); -inline insn_code -code_for_aarch64_gather_ldnt (rtx_code arg0, machine_mode arg1, machine_mode arg2) -{ - insn_code code = maybe_code_for_aarch64_gather_ldnt (arg0, arg1, arg2); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_gather_ldnt (rtx_code, machine_mode, machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_gather_ldnt (rtx_code arg0, machine_mode arg1, machine_mode arg2, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_gather_ldnt (arg0, arg1, arg2, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_scatter_stnt (machine_mode); -inline insn_code -code_for_aarch64_scatter_stnt (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_scatter_stnt (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_scatter_stnt (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_scatter_stnt (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_scatter_stnt (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_scatter_stnt (machine_mode, machine_mode); -inline insn_code -code_for_aarch64_scatter_stnt (machine_mode arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_scatter_stnt (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_scatter_stnt (machine_mode, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_scatter_stnt (machine_mode arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_scatter_stnt (arg0, arg1, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_suqadd_const (machine_mode); -inline insn_code -code_for_aarch64_sve_suqadd_const (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve_suqadd_const (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_suqadd_const (machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_suqadd_const (machine_mode arg0, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_sve_suqadd_const (arg0, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_lane (int, machine_mode); -inline insn_code -code_for_aarch64_sve_lane (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_sve_lane (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_lane (int, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_lane (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve_lane (arg0, arg1, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern rtx maybe_gen_aarch64_sve_lane (int, machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_lane (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_sve_lane (arg0, arg1, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_add_mul_lane (machine_mode); -inline insn_code -code_for_aarch64_sve_add_mul_lane (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve_add_mul_lane (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_add_mul_lane (machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_add_mul_lane (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_sve_add_mul_lane (arg0, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_sub_mul_lane (machine_mode); -inline insn_code -code_for_aarch64_sve_sub_mul_lane (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve_sub_mul_lane (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_sub_mul_lane (machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_sub_mul_lane (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_sve_sub_mul_lane (arg0, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve2_xar (machine_mode); -inline insn_code -code_for_aarch64_sve2_xar (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve2_xar (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve2_xar (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve2_xar (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve2_xar (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve2_bcax (machine_mode); -inline insn_code -code_for_aarch64_sve2_bcax (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve2_bcax (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve2_bcax (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve2_bcax (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve2_bcax (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve2_eor3 (machine_mode); -inline insn_code -code_for_aarch64_sve2_eor3 (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve2_eor3 (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve2_eor3 (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve2_eor3 (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve2_eor3 (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve2_bsl (machine_mode); -inline insn_code -code_for_aarch64_sve2_bsl (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve2_bsl (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve2_bsl (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve2_bsl (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve2_bsl (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve2_nbsl (machine_mode); -inline insn_code -code_for_aarch64_sve2_nbsl (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve2_nbsl (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve2_nbsl (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve2_nbsl (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve2_nbsl (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve2_bsl1n (machine_mode); -inline insn_code -code_for_aarch64_sve2_bsl1n (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve2_bsl1n (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve2_bsl1n (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve2_bsl1n (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve2_bsl1n (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve2_bsl2n (machine_mode); -inline insn_code -code_for_aarch64_sve2_bsl2n (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve2_bsl2n (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve2_bsl2n (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve2_bsl2n (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve2_bsl2n (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_add (rtx_code, machine_mode); -inline insn_code -code_for_aarch64_sve_add (rtx_code arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_sve_add (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_add (rtx_code, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_add (rtx_code arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve_add (arg0, arg1, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve2_aba (rtx_code, machine_mode); -inline insn_code -code_for_aarch64_sve2_aba (rtx_code arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_sve2_aba (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve2_aba (rtx_code, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve2_aba (rtx_code arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve2_aba (arg0, arg1, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_add_lane (int, machine_mode); -inline insn_code -code_for_aarch64_sve_add_lane (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_sve_add_lane (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_add_lane (int, machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_add_lane (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_sve_add_lane (arg0, arg1, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_qadd (int, machine_mode); -inline insn_code -code_for_aarch64_sve_qadd (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_sve_qadd (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_qadd (int, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_qadd (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve_qadd (arg0, arg1, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_qadd_lane (int, machine_mode); -inline insn_code -code_for_aarch64_sve_qadd_lane (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_sve_qadd_lane (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_qadd_lane (int, machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_qadd_lane (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_sve_qadd_lane (arg0, arg1, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_sub (int, machine_mode); -inline insn_code -code_for_aarch64_sve_sub (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_sve_sub (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_sub (int, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_sub (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve_sub (arg0, arg1, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_sub_lane (int, machine_mode); -inline insn_code -code_for_aarch64_sve_sub_lane (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_sve_sub_lane (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_sub_lane (int, machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_sub_lane (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_sve_sub_lane (arg0, arg1, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_qsub (int, machine_mode); -inline insn_code -code_for_aarch64_sve_qsub (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_sve_qsub (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_qsub (int, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_qsub (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve_qsub (arg0, arg1, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve_qsub_lane (int, machine_mode); -inline insn_code -code_for_aarch64_sve_qsub_lane (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_sve_qsub_lane (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve_qsub_lane (int, machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve_qsub_lane (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_sve_qsub_lane (arg0, arg1, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve2_cvtxnt (machine_mode); -inline insn_code -code_for_aarch64_sve2_cvtxnt (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve2_cvtxnt (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern insn_code maybe_code_for_aarch64_sve2_pmul (machine_mode); -inline insn_code -code_for_aarch64_sve2_pmul (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve2_pmul (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern insn_code maybe_code_for_aarch64_sve2_tbl2 (machine_mode); -inline insn_code -code_for_aarch64_sve2_tbl2 (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve2_tbl2 (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve2_tbl2 (machine_mode, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve2_tbl2 (machine_mode arg0, rtx x0, rtx x1, rtx x2) -{ - rtx res = maybe_gen_aarch64_sve2_tbl2 (arg0, x0, x1, x2); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve2_tbx (machine_mode); -inline insn_code -code_for_aarch64_sve2_tbx (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve2_tbx (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve2_tbx (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve2_tbx (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve2_tbx (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve2_histcnt (machine_mode); -inline insn_code -code_for_aarch64_sve2_histcnt (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve2_histcnt (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sve2_histcnt (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sve2_histcnt (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sve2_histcnt (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sve2_histseg (machine_mode); -inline insn_code -code_for_aarch64_sve2_histseg (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sve2_histseg (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern insn_code maybe_code_for_aarch64_sme (int, machine_mode); -inline insn_code -code_for_aarch64_sme (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_sme (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sme (int, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sme (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sme (arg0, arg1, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sme_plus (int, machine_mode); -inline insn_code -code_for_aarch64_sme_plus (int arg0, machine_mode arg1) -{ - insn_code code = maybe_code_for_aarch64_sme_plus (arg0, arg1); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sme_plus (int, machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sme_plus (int arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_sme_plus (arg0, arg1, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sme_ldrn (machine_mode); -inline insn_code -code_for_aarch64_sme_ldrn (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sme_ldrn (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sme_ldrn (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sme_ldrn (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sme_ldrn (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sme_strn (machine_mode); -inline insn_code -code_for_aarch64_sme_strn (machine_mode arg0) -{ - insn_code code = maybe_code_for_aarch64_sme_strn (arg0); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sme_strn (machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sme_strn (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sme_strn (arg0, x0, x1, x2, x3); - gcc_assert (res); - return res; -} - -extern insn_code maybe_code_for_aarch64_sme (int, machine_mode, machine_mode); -inline insn_code -code_for_aarch64_sme (int arg0, machine_mode arg1, machine_mode arg2) -{ - insn_code code = maybe_code_for_aarch64_sme (arg0, arg1, arg2); - gcc_assert (code != CODE_FOR_nothing); - return code; -} - -extern rtx maybe_gen_aarch64_sme (int, machine_mode, machine_mode, rtx, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sme (int arg0, machine_mode arg1, machine_mode arg2, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) -{ - rtx res = maybe_gen_aarch64_sme (arg0, arg1, arg2, x0, x1, x2, x3, x4); - gcc_assert (res); - return res; -} - -extern rtx maybe_gen_aarch64_sme (int, machine_mode, machine_mode, rtx, rtx, rtx, rtx); -inline rtx -gen_aarch64_sme (int arg0, machine_mode arg1, machine_mode arg2, rtx x0, rtx x1, rtx x2, rtx x3) -{ - rtx res = maybe_gen_aarch64_sme (arg0, arg1, arg2, x0, x1, x2, x3); - gcc_assert (res); - return res; -} -#endif - -extern const struct convert_optab_libcall_d convlib_def[NUM_CONVLIB_OPTABS]; -extern const struct optab_libcall_d normlib_def[NUM_NORMLIB_OPTABS]; - -/* Returns the active icode for the given (encoded) optab. */ -extern enum insn_code raw_optab_handler (unsigned); -extern bool swap_optab_enable (optab, machine_mode, bool); - -/* Target-dependent globals. */ -struct target_optabs { - /* Patterns that are used by optabs that are enabled for this target. */ - bool pat_enable[NUM_OPTAB_PATTERNS]; - - /* Index VOIDmode caches if the target supports vec_gather_load for any - vector mode. Every other index X caches specifically for mode X. - 1 means yes, -1 means no. */ - signed char supports_vec_gather_load[NUM_MACHINE_MODES]; - signed char supports_vec_scatter_store[NUM_MACHINE_MODES]; -}; -extern void init_all_optabs (struct target_optabs *); -extern bool partial_vectors_supported_p (void); +extern enum insn_code raw_optab_handler(unsigned); -extern struct target_optabs default_target_optabs; -extern struct target_optabs *this_fn_optabs; -#if SWITCHABLE_TARGET -extern struct target_optabs *this_target_optabs; -#else -#define this_target_optabs (&default_target_optabs) -#endif -#endif +#endif \ No newline at end of file diff --git a/aiframe/include/insn_utils_aarch64.h b/aiframe/include/insn_utils_aarch64.h index f7d638d9..6412b16f 100644 --- a/aiframe/include/insn_utils_aarch64.h +++ b/aiframe/include/insn_utils_aarch64.h @@ -2,6 +2,9 @@ #define AI4C_GCC_INSN_UTILS_AARCH64_H #include "basic-block.h" #include "insn-attr.h" +#include "insn-codes.h" +#include "insn-config.h" +#include "recog.h" namespace ai4c { @@ -610,6 +613,9 @@ static std::vector iat_table = { static const int IAT_IDX_OFFSET = 0; static bool is_valid_insn_attr_type(rtx_insn* insn) { + unsigned recog = recog_memoized(insn); + if (recog >= NUM_INSN_CODES) return false; + attr_type atype = get_attr_type(insn); if (atype - IAT_IDX_OFFSET < iat_table.size() && iat_table[atype - IAT_IDX_OFFSET].name == atype) { diff --git a/aiframe/include/onnxrunner.h b/aiframe/include/onnxrunner.h index 9dfad134..0e97d743 100644 --- a/aiframe/include/onnxrunner.h +++ b/aiframe/include/onnxrunner.h @@ -20,7 +20,7 @@ class ONNXRunner { int inference(); - void loadModel(const char* model_path); + void load_model(const char* model_path); int add_int64_input(int64_t* data, int num); int add_int32_input(int32_t* data, int num); diff --git a/aiframe/include/option_yaml_utils.h b/aiframe/include/option_yaml_utils.h index f1c6425c..8c9ac79d 100644 --- a/aiframe/include/option_yaml_utils.h +++ b/aiframe/include/option_yaml_utils.h @@ -32,7 +32,7 @@ struct UnifDynConfigStrategy : IntOptDynConfigStrategy { int min_val = int_opt_vals.min_val; int max_val = int_opt_vals.max_val; int intvl = (max_val - min_val) / n_elements; - intvl = intvl > 0 ? intvl : 1; + intvl = intvl >= 0 ? intvl : 1; int remain_size = n_elements - 1; dyn_config.push_back(default_val); @@ -356,7 +356,7 @@ void read_option_category(const YAML::Node& node, const std::string& category, } } -void load_coarse_option_yaml(const std::string& filename, +int load_coarse_option_yaml(const std::string& filename, OptionManager& opt_mgr) { // Load the YAML file const std::set core_categories = {"GIMPLE", "RTL", "PARAM"}; @@ -366,6 +366,7 @@ void load_coarse_option_yaml(const std::string& filename, doc = YAML::LoadFile(filename); } catch (YAML::ParserException& e) { std::cerr << "Error parsing coarse option YAML: " << e.what() << std::endl; + return 1; } if (doc.IsMap()) { @@ -377,7 +378,9 @@ void load_coarse_option_yaml(const std::string& filename, read_option_category(node, category, opt_mgr); } } + return 0; } + return 1; } } // namespace ai4c diff --git a/aiframe/include/plugin_utils.h b/aiframe/include/plugin_utils.h index ae0deabb..eb44fec5 100644 --- a/aiframe/include/plugin_utils.h +++ b/aiframe/include/plugin_utils.h @@ -145,19 +145,19 @@ static void dump_autotuning(AutoTuning& auto_tuning, std::ofstream& out, static void dump_opp_yaml(std::string& yaml_file, AutoTuning& auto_tuning, OptionManager& opt_mgr) { - std::ofstream out(yaml_file, std::ios::app | std::ios::out); + std::ofstream out(yaml_file, std::ios::app); if (!out.is_open()) { throw std::runtime_error("Can not open file: " + yaml_file); } out << "--- !AutoTuning\n"; dump_autotuning(auto_tuning, out, opt_mgr); out << "...\n"; - out.close(); + // out.close(); } /* Load YAML FILE */ std::stringstream get_map_value(std::string& input, size_t start, size_t end) { - if (start == std::string::npos || end == std::string::npos || start > end) { + if (start == std::string::npos || end == std::string::npos || start >= end) { return {}; } return std::stringstream(input.substr(start + 1, end - start - 1)); @@ -183,7 +183,14 @@ void parse_args(std::string& src, AutoTuning& auto_tuning) { value.end()); if (value.back() == '\'') value.pop_back(); if (!value.empty() && value[0] == '\'') value.erase(value.begin()); - auto_tuning.args[key] = std::stoi(value); + + try { + auto_tuning.args[key] = std::stoi(value); + } catch (const std::invalid_argument& e) { + auto_tuning.args[key] = -1; + } catch (const std::out_of_range& e) { + auto_tuning.args[key] = -2; + } } } } @@ -204,7 +211,14 @@ static int parse_tuning_info(std::string& input, AutoTuning& auto_tuning) { std::getline(ss, value, ','); value.erase(std::remove_if(value.begin(), value.end(), ::isspace), value.end()); - auto_tuning.code_region_hash = std::stoull(value); + + try { + auto_tuning.code_region_hash = std::stoull(value); + } catch (const std::invalid_argument& e) { + auto_tuning.code_region_hash = -1; + } catch (const std::out_of_range& e) { + auto_tuning.code_region_hash = -2; + } } else { std::getline(ss, value, ','); } @@ -214,11 +228,11 @@ static int parse_tuning_info(std::string& input, AutoTuning& auto_tuning) { static std::unordered_map AutoTuneOptions; -static void load_config_yaml(std::string& config_file) { +static int load_config_yaml(std::string& config_file) { std::ifstream configs(config_file, std::ios::in); if (!configs.is_open()) { std::cerr << "Error: " << config_file << std::endl; - return; + return 1; } std::string line; @@ -232,6 +246,7 @@ static void load_config_yaml(std::string& config_file) { } } configs.close(); + return 0; } } // namespace ai4c diff --git a/aiframe/onnxrunner.cpp b/aiframe/onnxrunner.cpp index d515fb1e..e193075f 100644 --- a/aiframe/onnxrunner.cpp +++ b/aiframe/onnxrunner.cpp @@ -2,15 +2,16 @@ namespace ai4c { -ONNXRunner::ONNXRunner(const char* model_path) { loadModel(model_path); } +ONNXRunner::ONNXRunner(const char* model_path) { load_model(model_path); } ONNXRunner::~ONNXRunner() { if (session) { delete session; + session = nullptr; } } -void ONNXRunner::loadModel(const char* model_path) { +void ONNXRunner::load_model(const char* model_path) { session_options.SetGraphOptimizationLevel( GraphOptimizationLevel::ORT_ENABLE_BASIC); session = new Ort::Session(env, model_path, session_options); @@ -80,13 +81,33 @@ int ONNXRunner::add_double_input(double* data, int num) { ADD_INPUT_FEATURE(double) } int ONNXRunner::add_string_input(char** data, int num) { - int index = input_values_.size() - 1; + int index = input_values_.size(); + std::string input_name = + session->GetInputNameAllocated(index, allocator).get(); + input_names_.push_back(input_name); auto type_info = session->GetInputTypeInfo(index); auto shape_info = type_info.GetTensorTypeAndShapeInfo(); auto shape = shape_info.GetShape(); auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault); + int elements = + std::accumulate(shape.begin(), shape.end(), 1, std::multiplies()); + if (elements < 0) { + elements = -elements; + if (num % elements != 0) { + fprintf(stderr, + "input '%s' has invalid data size:" + " %d [%d]\n", + input_name.c_str(), num, elements); + return -1; + } + shape[0] = num / elements; + } else if (elements != num) { + fprintf(stderr, "input '%s' data size mismatch\n", input_name.c_str()); + return -1; + } + input_values_.push_back( Ort::Value::CreateTensor(allocator, shape.data(), shape.size(), ONNX_TENSOR_ELEMENT_DATA_TYPE_STRING)); @@ -95,12 +116,21 @@ int ONNXRunner::add_string_input(char** data, int num) { } int32_t* ONNXRunner::get_int32_output(int index) { + if (index >= output_values_.size()) { + return nullptr; + } return output_values_[index].GetTensorMutableData(); } int64_t* ONNXRunner::get_int64_output(int index) { + if (index >= output_values_.size()) { + return nullptr; + } return output_values_[index].GetTensorMutableData(); } float* ONNXRunner::get_float_output(int index) { + if (index >= output_values_.size()) { + return nullptr; + } return output_values_[index].GetTensorMutableData(); } diff --git a/aiframe_legacy/ONNXRunner.cpp b/aiframe_legacy/ONNXRunner.cpp index c88d15ce..b8c27e55 100644 --- a/aiframe_legacy/ONNXRunner.cpp +++ b/aiframe_legacy/ONNXRunner.cpp @@ -1,4 +1,5 @@ #include "include/ONNXRunner.h" + #include #include #include @@ -79,10 +80,9 @@ Ort::Value ONNXRunner::getInputValueInt64(Ort::Session *session, return inputTmp; } -std::vector -ONNXRunner::runONNXModel(std::vector inputString, - std::vector inputInt64, - std::vector inputFloat, int batchSize) { +std::vector ONNXRunner::runONNXModel( + std::vector inputString, std::vector inputInt64, + std::vector inputFloat, int batchSize) { Ort::AllocatorWithDefaultOptions allocator; // Get input count @@ -234,21 +234,20 @@ int64_t ONNXRunner::runONNXModelOptimizer(std::vector inputString, return label; } -int64_t ONNXRunner::runONNXModelLTO (std::vector inputString, - std::vector inputInt64, - std::vector inputFloat, - int batchSize) { - +int64_t ONNXRunner::runONNXModelLTO(std::vector inputString, + std::vector inputInt64, + std::vector inputFloat, + int batchSize) { Ort::AllocatorWithDefaultOptions allocator; int size = inputString.size(); - + // Get input count int inputCount = session->GetInputCount(); std::vector> inputInt64Tensors(FEATURE_SIZE_INT64_OPT); std::vector inputStringTensor; - // Get input name + // Get input name std::vector inputNameList; for (int i = 0; i < inputCount; i++) { auto inputName = session->GetInputNameAllocated(i, allocator); @@ -302,9 +301,9 @@ int64_t ONNXRunner::runONNXModelLTO (std::vector inputString, } auto outputTensors = session->Run( - Ort::RunOptions{nullptr}, inputNameStrFinal.data(), inputFinal.data(), - inputCount, outputNameStrFinal.data(), outputCount); - + Ort::RunOptions{nullptr}, inputNameStrFinal.data(), inputFinal.data(), + inputCount, outputNameStrFinal.data(), outputCount); + int64_t label = 0; for (int i = 0; i < batchSize; i++) { int64_t *outputLabel = outputTensors[0].GetTensorMutableData(); @@ -314,5 +313,4 @@ int64_t ONNXRunner::runONNXModelLTO (std::vector inputString, return label; } - -} // namespace compilerONNXRunner +} // namespace compilerONNXRunner diff --git a/aiframe_legacy/include/ONNXRunner.h b/aiframe_legacy/include/ONNXRunner.h index 3402343a..6d4fb1fe 100644 --- a/aiframe_legacy/include/ONNXRunner.h +++ b/aiframe_legacy/include/ONNXRunner.h @@ -1,28 +1,69 @@ #ifndef COMPILER_PROFILE_ONNXRUNNER_H #define COMPILER_PROFILE_ONNXRUNNER_H -#include "onnxruntime_c_api.h" -#include "onnxruntime_cxx_api.h" +#include + #include #include #include #include #include -#include +#include #include #include #include -#include + +#include "onnxruntime_c_api.h" +#include "onnxruntime_cxx_api.h" extern "C" { namespace compilerONNXRunner { const int FEATURE_SIZE_INT64_OPT = 6; const int FEATURE_SIZE_STRING_OPT = 11; -const char *ai_info = "7f454c460201010000000000000000000100b7000100000000000000000000000000000000000000a0020000000000000000000040000000000040000c000b00fd7bbea9fd030091000038d5e00f00f9e00f40f900fc58d3001c0012e01700b9e01740b91f20017140000054000000941f2003d5fd7bc2a8c0035fd6004743433a2028474e55292031302e332e3100001000000000000000017a520004781e011b0c1f002000000018000000000000003c00000000410e209d049e034ddedd0e0000000000000000000000000000000000000000000000000000000000000000010000000400f1ff000000000000000000000000000000000000000003000100000000000000000000000000000000000000000003000300000000000000000000000000000000000000000003000400000000000000000000000000000000000b00000000000100000000000000000000000000000000000000000003000600000000000000000000000000000000000e0000000000070014000000000000000000000000000000000000000300070000000000000000000000000000000000000000000300050000000000000000000000000000000000110000001200010000000000000000003c000000000000001d00000010000000000000000000000000000000000000000061695f696e666f2e63002478002464006765745f61695f696e666f0061626f72740000000000002c000000000000001b0100000b00000000000000000000001c0000000000000005010000020000000000000000000000002e73796d746162002e737472746162002e7368737472746162002e72656c612e74657874002e64617461002e627373002e636f6d6d656e74002e6e6f74652e474e552d737461636b002e72656c612e65685f6672616d6500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000010000000600000000000000000000000000000040000000000000003c000000000000000000000000000000040000000000000000000000000000001b0000000400000040000000000000000000000000000000100200000000000018000000000000000900000001000000080000000000000018000000000000002600000001000000030000000000000000000000000000007c0000000000000000000000000000000000000000000000010000000000000000000000000000002c00000008000000030000000000000000000000000000007c0000000000000000000000000000000000000000000000010000000000000000000000000000003100000001000000300000000000000000000000000000007c0000000000000013000000000000000000000000000000010000000000000001000000000000003a00000001000000000000000000000000000000000000008f0000000000000000000000000000000000000000000000010000000000000000000000000000004f0000000100000002000000000000000000000000000000900000000000000038000000000000000000000000000000080000000000000000000000000000004a000000040000004000000000000000000000000000000028020000000000001800000000000000090000000700000008000000000000001800000000000000010000000200000000000000000000000000000000000000c80000000000000020010000000000000a0000000a00000008000000000000001800000000000000090000000300000000000000000000000000000000000000e801000000000000230000000000000000000000000000000100000000000000000000000000000011000000030000000000000000000000000000000000000040020000000000005900000000000000000000000000000001000000000000000000000000000000"; +const char *ai_info = + "7f454c460201010000000000000000000100b7000100000000000000000000000000000000" + "000000a0020000000000000000000040000000000040000c000b00fd7bbea9fd0300910000" + "38d5e00f00f9e00f40f900fc58d3001c0012e01700b9e01740b91f20017140000054000000" + "941f2003d5fd7bc2a8c0035fd6004743433a2028474e55292031302e332e31000010000000" + "00000000017a520004781e011b0c1f002000000018000000000000003c00000000410e209d" + "049e034ddedd0e000000000000000000000000000000000000000000000000000000000000" + "0000010000000400f1ff000000000000000000000000000000000000000003000100000000" + "00000000000000000000000000000000000300030000000000000000000000000000000000" + "0000000003000400000000000000000000000000000000000b000000000001000000000000" + "00000000000000000000000000000003000600000000000000000000000000000000000e00" + "00000000070014000000000000000000000000000000000000000300070000000000000000" + "00000000000000000000000000030005000000000000000000000000000000000011000000" + "1200010000000000000000003c000000000000001d00000010000000000000000000000000" + "000000000000000061695f696e666f2e63002478002464006765745f61695f696e666f0061" + "626f72740000000000002c000000000000001b0100000b00000000000000000000001c0000" + "000000000005010000020000000000000000000000002e73796d746162002e737472746162" + "002e7368737472746162002e72656c612e74657874002e64617461002e627373002e636f6d" + "6d656e74002e6e6f74652e474e552d737461636b002e72656c612e65685f6672616d650000" + "00000000000000000000000000000000000000000000000000000000000000000000000000" + "00000000000000000000000000000000000000000000000000000000000000000020000000" + "010000000600000000000000000000000000000040000000000000003c0000000000000000" + "00000000000000040000000000000000000000000000001b00000004000000400000000000" + "00000000000000000000100200000000000018000000000000000900000001000000080000" + "00000000001800000000000000260000000100000003000000000000000000000000000000" + "7c000000000000000000000000000000000000000000000001000000000000000000000000" + "0000002c00000008000000030000000000000000000000000000007c000000000000000000" + "00000000000000000000000000000100000000000000000000000000000031000000010000" + "00300000000000000000000000000000007c00000000000000130000000000000000000000" + "00000000010000000000000001000000000000003a00000001000000000000000000000000" + "000000000000008f0000000000000000000000000000000000000000000000010000000000" + "000000000000000000004f0000000100000002000000000000000000000000000000900000" + "00000000003800000000000000000000000000000008000000000000000000000000000000" + "4a000000040000004000000000000000000000000000000028020000000000001800000000" + "00000009000000070000000800000000000000180000000000000001000000020000000000" + "0000000000000000000000000000c80000000000000020010000000000000a0000000a0000" + "00080000000000000018000000000000000900000003000000000000000000000000000000" + "00000000e80100000000000023000000000000000000000000000000010000000000000000" + "00000000000000110000000300000000000000000000000000000000000000400200000000" + "00005900000000000000000000000000000001000000000000000000000000000000"; class ONNXRunner { -public: + public: explicit ONNXRunner() {} explicit ONNXRunner(const char *modelPath) { // Prepare model and env @@ -41,21 +82,18 @@ public: std::vector inputInt64, std::vector inputFloat, int batchSize); -private: - static Ort::Value - getInputValueFloat(Ort::Session *session, - std::vector &input, int inputIdx, - int batchSize); + private: + static Ort::Value getInputValueFloat(Ort::Session *session, + std::vector &input, int inputIdx, + int batchSize); - static Ort::Value - getInputValueString(Ort::AllocatorWithDefaultOptions allocator, - Ort::Session *session, std::vector &input, - int inputIdx, int batchSize); + static Ort::Value getInputValueString( + Ort::AllocatorWithDefaultOptions allocator, Ort::Session *session, + std::vector &input, int inputIdx, int batchSize); - static Ort::Value - getInputValueInt64(Ort::Session *session, - std::vector &input, - int inputIdx, int batchSize); + static Ort::Value getInputValueInt64(Ort::Session *session, + std::vector &input, + int inputIdx, int batchSize); Ort::SessionOptions sessionOptions; Ort::Env env{ORT_LOGGING_LEVEL_WARNING, "test"}; @@ -122,7 +160,7 @@ static void truncatePrefix(const std::string &str, std::string &strPrefix) { static std::string encodeStringFeature(const std::string &str) { unsigned char hash[EVP_MD_size(EVP_sha256())]; - EVP_MD_CTX* context = EVP_MD_CTX_new(); + EVP_MD_CTX *context = EVP_MD_CTX_new(); EVP_DigestInit_ex(context, EVP_sha256(), NULL); EVP_DigestUpdate(context, str.c_str(), str.size()); EVP_DigestFinal_ex(context, hash, NULL); @@ -136,32 +174,34 @@ static std::string encodeStringFeature(const std::string &str) { } bool startsWith(const std::string &str, const std::string &prefix) { - if (str.size() < prefix.size()) { - return false; - } - return str.compare(0, prefix.size(), prefix) == 0; + if (str.size() < prefix.size()) { + return false; + } + return str.compare(0, prefix.size(), prefix) == 0; } bool endsWith(const std::string &str, const std::string &suffix) { - if (str.size() < suffix.size()) { - return false; - } - return str.compare(str.size() - suffix.size(), suffix.size(), suffix) == 0; + if (str.size() < suffix.size()) { + return false; + } + return str.compare(str.size() - suffix.size(), suffix.size(), suffix) == 0; } -std::vector split(const std::string& str, const std::string& delimiters) { - std::regex regex("[" + delimiters + "]"); - std::sregex_token_iterator it(str.begin(), str.end(), regex, -1); - std::sregex_token_iterator end; - std::vector tokens; - while (it != end) { - tokens.push_back(*it++); - } - return tokens; +std::vector split(const std::string &str, + const std::string &delimiters) { + std::regex regex("[" + delimiters + "]"); + std::sregex_token_iterator it(str.begin(), str.end(), regex, -1); + std::sregex_token_iterator end; + std::vector tokens; + while (it != end) { + tokens.push_back(*it++); + } + return tokens; } // Preprocess data for LTO model. -static void preprocessLTOData(std::vector &inputString, std::string input) { +static void preprocessLTOData(std::vector &inputString, + std::string input) { std::vector words; std::istringstream iss(input); std::string word; @@ -174,14 +214,15 @@ static void preprocessLTOData(std::vector &inputString, std::string int length = words.size(); int minimumLinkFileLength = 3; for (int i = 0; i < length; i++) { - if (endsWith(words[i], ".a") || endsWith(words[i], ".so") || endsWith(words[i], ".o")) { + if (endsWith(words[i], ".a") || endsWith(words[i], ".so") || + endsWith(words[i], ".o")) { std::string filename = words[i].substr(words[i].find_last_of("/") + 1); std::string commands = filename.substr(0, filename.find_last_of(".")); std::vector command_parts = split(commands, "-_./|"); for (const auto &ele : command_parts) { if (ele.size() > minimumLinkFileLength) { inputString.push_back(ele); - } + } } } } @@ -253,7 +294,6 @@ static void preprocessData(std::vector &inputString, static bool findOptimizerModelPath(const std::string &modelRelPath, std::string &optModelPath, const char *envName = "LD_LIBRARY_PATH") { - const char *paths = std::getenv(envName); std::istringstream envPaths{paths ? paths : ""}; std::vector modelPathList; @@ -315,8 +355,7 @@ extern int64_t runONNXModelOptimizer(int argcSW, const char **argvSW, // Interface for LTO model. // Add one more param to unify interface. -extern int64_t runONNXModelLTO(char* link_files) -{ +extern int64_t runONNXModelLTO(char *link_files) { // Create AI models. std::string optModelPath; // Should make sure the path for LTO model. @@ -337,14 +376,13 @@ extern int64_t runONNXModelLTO(char* link_files) preprocessLTOData(inputString, link_files); int64_t output; if (instance != nullptr) { - output = - instance->runONNXModelLTO(inputString, inputInt64, inputFloat, 1); + output = instance->runONNXModelLTO(inputString, inputInt64, inputFloat, 1); } // Delete model runner. deleteONNXRunner(instance); return output; } -} // namespace compilerONNXRunner -} // extern "C" +} // namespace compilerONNXRunner +} // extern "C" #endif diff --git a/models/inline_model.onnx b/models/inline_model.onnx index 93d01cfbcff32bb29c0db3673bd0278fa70cb739..61009bf06740b841556a499ed1b5c3d56ef8c542 100644 GIT binary patch literal 696020 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%0A_|sFe7q^w@px0>rn=c&3LYu6al9y4Qm7Uy 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
  • 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�^*>YVe6vZ~-*eQ+M8R$0Qa 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%0DgTS+ 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%0ABR%sPO{ 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 Y^;r4aHOa3sD`wrqMwRREP%-oW2OykqD*ylh literal 580421 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 z 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⋙rb!z4yKa=CLdK6O~U2hRr@+gJ|BZFGM+B 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%0ALOardr&vPW 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

  • =oulcsoSW;I5-4&m{g0Qg|dUOo9+-@c0~~b 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 z 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�|>dpW{hZaxPFnLM4SlATF=Z%&-Y=tI~Lg+HqPc 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 zGO!FR1IxfNuna5%%fK?Q3@ii7z%sB5ECb8HGO!FR1IxfNuna5%%fK?Q3@ii7z%sB5 zECb8HGO!FR1IxfNuna5%%fK?Q3@ii7z%sB5ECb8HGO!FR1IxfNuna5%%fK?Q3@ii7 zz%sB5ECb8HGO!FR1IxfNuna5%%fK?Q3@ii7z%sB5ECb8HGO!FR1IxfNuna5%%fK?Q z3@ii7z%sB5ECb8HGO!FR1IxfNuna5%%fK?Q3@ii7z%sB5ECb8HGO!FR1IxfNuna5% z%fK?Q3@ii7z%sB5ECb8HGO!FR1IxfNuna5%%fK?Q3@ii7z%sB5ECb8HGO!FR1IxfN zuna5%%fK?Q3@ii7z%sB5ECb8HGO!FR1IxfNuna5%%fK?Q3@ii7z%sB5ECb8HGO!FR z1IxfNuna5%%fK?Q3@ii7z%sB5ECb8HGO!FR1IxfNuna5%%fK?Q3@ii7z%sB5ECb8H zGO!FR1IxfNuna5%%fK?Q3@ii7z%sB5ECb8HGO!FR1IxfNuna5%%fK?Q3@ii7z%sB5 zECb8HGO!FR1IxfNuna5%%fK?Q3@ii7z%sB5ECb8HGO!FR1IxfNuna5%%fK?Q3@ii7 zz%sB5ECb8HGO!FR1IxfNuna5%%fK?Q3@ii7z%sB5ECb8HGO!FR1IxfNuna5%%fK?Q z3@ii7z%sB5ECb8HGO!FR1IxfNuna5%%fK?Q3@ii7z%sB5ECb8HGO!FR1IxfNuna5% z%fK?Q3@ii7z%sB5ECb8HGO!FR1IxfNuna5%%fK?Q3@ii7z%sB5ECb8HGO!FR1IxfN zuna5%%fK?Q3@ii7z%sB5ECb8HGO!FR1IxfNuna5%%fK?Q3@ii7z%sB5ECb8HGO!FR z1MkPcSKq#$t+liaECb8HGO!FR1IxfNuna5%%fK?Q3@ii7z%sB5ECb8HGO!FR1IxfN zuna5%%fK?Q3@ii7z%sB5ECb8HGO!FR1IxfNuna5%%fK?Q3@ii7z%sB5ECb8HGO!FR z1IxfNuna5%%fK?Q3@ii7z%sB5ECb8HGO!FR1IxfNuna5%%fK?Q3@ii7z%sB5ECb8H zGO!FR1IxfNuna5%%fK?Q3@ii7z%sB5ECb8HGO!FR1IxfNuna5%%fK?Q3@ii7z%sB5 zECb8HGO!FR1IxfNuna5%%fK?Q3@ii7z%sB5ECb8HGO!FR1IxfNuna5%%fK?Q3@ii7 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