https://gcc.gnu.org/g:6525b408b25945970d84ed1f534616fd63b03a50

commit r15-9022-g6525b408b25945970d84ed1f534616fd63b03a50
Author: Lulu Cheng <chengl...@loongson.cn>
Date:   Thu Mar 27 11:27:40 2025 +0800

    LoongArch: Set default alignment for functions jumps loops and labels.
    
    Based on r15-7624, a set of align combinations with better performance
    was tested through spec2006.
    
    LA464: -falign-loops=8 -falign-functions=32 -falign-jumps=32 
-falign-labels=8
    LA664: -falign-loops=16 -falign-functions=16 -falign-jumps=32 
-falign-labels=8
    
    gcc/ChangeLog:
    
            * config/loongarch/loongarch-def.cc
            (la464_align): Add settings for labels.
            (la664_align): Likewise.
            * config/loongarch/loongarch-opts.cc
            (loongarch_target_option_override): Likewise.
            * config/loongarch/loongarch-tune.h
            (struct loongarch_align): Implement the function `label_`.

Diff:
---
 gcc/config/loongarch/loongarch-def.cc  | 4 ++--
 gcc/config/loongarch/loongarch-opts.cc | 3 +++
 gcc/config/loongarch/loongarch-tune.h  | 9 ++++++++-
 3 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/gcc/config/loongarch/loongarch-def.cc 
b/gcc/config/loongarch/loongarch-def.cc
index 5f235a04ef2f..04b277eb7425 100644
--- a/gcc/config/loongarch/loongarch-def.cc
+++ b/gcc/config/loongarch/loongarch-def.cc
@@ -107,12 +107,12 @@ array_tune<loongarch_cache> loongarch_cpu_cache =
 
 static inline loongarch_align la464_align ()
 {
-  return loongarch_align ().function_ ("32").loop_ ("16").jump_ ("16");
+  return loongarch_align ().function_ ("32").loop_ ("8").jump_ ("32").label_ 
("8");
 }
 
 static inline loongarch_align la664_align ()
 {
-  return loongarch_align ().function_ ("8").loop_ ("8").jump_ ("32");
+  return loongarch_align ().function_ ("16").loop_ ("16").jump_ ("32").label_ 
("8");
 }
 
 array_tune<loongarch_align> loongarch_cpu_align =
diff --git a/gcc/config/loongarch/loongarch-opts.cc 
b/gcc/config/loongarch/loongarch-opts.cc
index c2a63f75fc24..6e72084b9beb 100644
--- a/gcc/config/loongarch/loongarch-opts.cc
+++ b/gcc/config/loongarch/loongarch-opts.cc
@@ -965,6 +965,9 @@ loongarch_target_option_override (struct loongarch_target 
*target,
 
       if (opts->x_flag_align_jumps && !opts->x_str_align_jumps)
        opts->x_str_align_jumps = loongarch_cpu_align[target->cpu_tune].jump;
+
+      if (opts->x_flag_align_labels && !opts->x_str_align_labels)
+       opts->x_str_align_labels = loongarch_cpu_align[target->cpu_tune].label;
     }
 
   /* Set up parameters to be used in prefetching algorithm.  */
diff --git a/gcc/config/loongarch/loongarch-tune.h 
b/gcc/config/loongarch/loongarch-tune.h
index f7819fe76783..0ae74e77f996 100644
--- a/gcc/config/loongarch/loongarch-tune.h
+++ b/gcc/config/loongarch/loongarch-tune.h
@@ -177,8 +177,9 @@ struct loongarch_align {
   const char *function;        /* default value for -falign-functions */
   const char *loop;    /* default value for -falign-loops */
   const char *jump;    /* default value for -falign-jumps */
+  const char *label;   /* default value for -falign-labels */
 
-  loongarch_align () : function (nullptr), loop (nullptr), jump (nullptr) {}
+  loongarch_align () : function (nullptr), loop (nullptr), jump (nullptr), 
label (nullptr) {}
 
   loongarch_align function_ (const char *_function)
   {
@@ -197,6 +198,12 @@ struct loongarch_align {
     jump = _jump;
     return *this;
   }
+
+  loongarch_align label_ (const char *_label)
+  {
+    label = _label;
+    return *this;
+  }
 };
 
 #endif /* LOONGARCH_TUNE_H */

Reply via email to