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");