summaryrefslogtreecommitdiff
path: root/0009-MULL64-Disable-mull64-transformation-by-default.patch
diff options
context:
space:
mode:
Diffstat (limited to '0009-MULL64-Disable-mull64-transformation-by-default.patch')
-rw-r--r--0009-MULL64-Disable-mull64-transformation-by-default.patch66
1 files changed, 66 insertions, 0 deletions
diff --git a/0009-MULL64-Disable-mull64-transformation-by-default.patch b/0009-MULL64-Disable-mull64-transformation-by-default.patch
new file mode 100644
index 0000000..347ba0a
--- /dev/null
+++ b/0009-MULL64-Disable-mull64-transformation-by-default.patch
@@ -0,0 +1,66 @@
+From 7c1f4425c680ea144d29bc55a1283d46444a2691 Mon Sep 17 00:00:00 2001
+From: eastb233 <xiezhiheng@huawei.com>
+Date: Wed, 7 Dec 2022 09:43:15 +0800
+Subject: [PATCH 09/22] [MULL64] Disable mull64 transformation by default
+
+This commit disables mull64 transformation by default since
+it shows some runtime failure in workloads.
+
+This is a workaround fix for https://gitee.com/src-openeuler/gcc/issues/I64UQH
+---
+ gcc/match.pd | 2 +-
+ gcc/opts.cc | 1 -
+ gcc/testsuite/g++.dg/tree-ssa/mull64.C | 2 +-
+ gcc/testsuite/gcc.dg/pr107190.c | 2 +-
+ 4 files changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/gcc/match.pd b/gcc/match.pd
+index b7e3588e8..6f24d5079 100644
+--- a/gcc/match.pd
++++ b/gcc/match.pd
+@@ -4290,7 +4290,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
+ (simplify
+ (cond @0 (op:s @1 integer_pow2p@2) @1)
+ /* powerof2cst */
+- (if (INTEGRAL_TYPE_P (type))
++ (if (flag_merge_mull && INTEGRAL_TYPE_P (type))
+ (with {
+ tree shift = build_int_cst (integer_type_node, tree_log2 (@2));
+ }
+diff --git a/gcc/opts.cc b/gcc/opts.cc
+index eae71ed20..a97630d1c 100644
+--- a/gcc/opts.cc
++++ b/gcc/opts.cc
+@@ -647,7 +647,6 @@ static const struct default_options default_options_table[] =
+ VECT_COST_MODEL_VERY_CHEAP },
+ { OPT_LEVELS_2_PLUS, OPT_finline_functions, NULL, 1 },
+ { OPT_LEVELS_2_PLUS, OPT_ftree_loop_distribute_patterns, NULL, 1 },
+- { OPT_LEVELS_2_PLUS, OPT_fmerge_mull, NULL, 1 },
+
+ /* -O2 and above optimizations, but not -Os or -Og. */
+ { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_falign_functions, NULL, 1 },
+diff --git a/gcc/testsuite/g++.dg/tree-ssa/mull64.C b/gcc/testsuite/g++.dg/tree-ssa/mull64.C
+index f61cf5e6f..cad891e62 100644
+--- a/gcc/testsuite/g++.dg/tree-ssa/mull64.C
++++ b/gcc/testsuite/g++.dg/tree-ssa/mull64.C
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2 -Wno-psabi -fdump-tree-forwprop1-details -fdump-tree-forwprop4-details" } */
++/* { dg-options "-O2 -fmerge-mull -Wno-psabi -fdump-tree-forwprop1-details -fdump-tree-forwprop4-details" } */
+
+ # define BN_BITS4 32
+ # define BN_MASK2 (0xffffffffffffffffL)
+diff --git a/gcc/testsuite/gcc.dg/pr107190.c b/gcc/testsuite/gcc.dg/pr107190.c
+index 235b2761a..d1e72e5df 100644
+--- a/gcc/testsuite/gcc.dg/pr107190.c
++++ b/gcc/testsuite/gcc.dg/pr107190.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2 -fexpensive-optimizations -fdump-tree-phiopt2-details" } */
++/* { dg-options "-O2 -fmerge-mull -fexpensive-optimizations -fdump-tree-phiopt2-details" } */
+
+ # define BN_BITS4 32
+ # define BN_MASK2 (0xffffffffffffffffL)
+--
+2.33.0
+