Hi, ruoyao:

Thank you so much for making this submission. But we are testing the impact of these two alignment parameters

(also including -falign-jumps and -falign-lables ) on performance. So before the result comes out, this patch will

not be merged into the main branch for the time being.

Thanks!

在 2023/4/18 下午8:17, Xi Ruoyao 写道:
According to Xuerui's LLVM changeset [1], doing so can make a
significant performace gain.

Bootstrapped and regtested on loongarch64-linux-gnu.  Ok for GCC 14?

[1]:https://reviews.llvm.org/D148622

gcc/ChangeLog:

        * config/loongarch/loongarch.cc
        (loongarch_option_override_internal): If -falign-functions is
        used but the alignment is not explicitly specified, set it to
        4 * loongarch_issue_rate ().  Likewise for -falign-loops.
---
  gcc/config/loongarch/loongarch.cc | 11 +++++++++++
  1 file changed, 11 insertions(+)

diff --git a/gcc/config/loongarch/loongarch.cc 
b/gcc/config/loongarch/loongarch.cc
index 06fc1cd0604..6552484de7c 100644
--- a/gcc/config/loongarch/loongarch.cc
+++ b/gcc/config/loongarch/loongarch.cc
@@ -6236,6 +6236,17 @@ loongarch_option_override_internal (struct gcc_options 
*opts)
        && !opts->x_optimize_size)
      opts->x_flag_prefetch_loop_arrays = 1;
+ /* Align functions and loops to (issue rate) * (insn size) to improve
+     the throughput of the fetching units.  */
+  char *align = XNEWVEC (char, 16);
+  sprintf (align, "%d", loongarch_issue_rate () * 4);
+
+  if (opts->x_flag_align_functions && !opts->x_str_align_functions)
+    opts->x_str_align_functions = align;
+
+  if (opts->x_flag_align_loops && !opts->x_str_align_loops)
+    opts->x_str_align_loops = align;
+
    if (TARGET_DIRECT_EXTERN_ACCESS && flag_shlib)
      error ("%qs cannot be used for compiling a shared library",
           "-mdirect-extern-access");

Reply via email to