Pushed to r14-3977.

在 2023/9/13 上午11:11, Lulu Cheng 写道:
gcc/ChangeLog:

        * config/loongarch/loongarch-def.c: Modify the default value of
        branch_cost.

gcc/testsuite/ChangeLog:

        * gcc.target/loongarch/cmov_ii.c: New test.
---
  gcc/config/loongarch/loongarch-def.c         |  4 ++--
  gcc/testsuite/gcc.target/loongarch/cmov_ii.c | 16 ++++++++++++++++
  2 files changed, 18 insertions(+), 2 deletions(-)
  create mode 100644 gcc/testsuite/gcc.target/loongarch/cmov_ii.c

diff --git a/gcc/config/loongarch/loongarch-def.c 
b/gcc/config/loongarch/loongarch-def.c
index e744ee01d6d..430ef8b2d95 100644
--- a/gcc/config/loongarch/loongarch-def.c
+++ b/gcc/config/loongarch/loongarch-def.c
@@ -85,7 +85,7 @@ loongarch_cpu_align[N_TUNE_TYPES] = {
      .int_mult_di      = COSTS_N_INSNS (1),    \
      .int_div_si               = COSTS_N_INSNS (4),    \
      .int_div_di               = COSTS_N_INSNS (6),    \
-    .branch_cost       = 2,                    \
+    .branch_cost       = 6,                    \
      .memory_latency   = 4
/* The following properties cannot be looked up directly using "cpucfg".
@@ -118,7 +118,7 @@ loongarch_rtx_cost_optimize_size = {
      .int_mult_di      = 4,
      .int_div_si             = 4,
      .int_div_di             = 4,
-    .branch_cost      = 2,
+    .branch_cost      = 6,
      .memory_latency   = 4,
  };
diff --git a/gcc/testsuite/gcc.target/loongarch/cmov_ii.c b/gcc/testsuite/gcc.target/loongarch/cmov_ii.c
new file mode 100644
index 00000000000..466a4c1c9af
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/cmov_ii.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+/* { dg-final { scan-assembler "main:.*xor.*masknez.*maskeqz.*or.*" } }
+ */
+void printf (char *, ...);
+extern void foo_ii (int *, int *, int *, int *);
+
+int
+test (void)
+{
+  int a, b;
+  int c, d, out;
+  foo_ii (&a, &b, &c, &d);
+  out = a == b ? c : d;
+  printf ("%d\n", out);
+}

Reply via email to