public inbox for gcc-regression@sourceware.org
help / color / mirror / Atom feed
* [TCWG CI] 456.hmmer slowed down by 4% after gcc: Refactor vect_supportable_dr_alignment
@ 2021-10-25 19:56 ci_notify
0 siblings, 0 replies; only message in thread
From: ci_notify @ 2021-10-25 19:56 UTC (permalink / raw)
To: Richard Biener; +Cc: gcc-regression
After gcc commit 93bd0213885739a1073f8c98911f8a00c0eb5597
Author: Richard Biener <rguenther@suse.de>
Refactor vect_supportable_dr_alignment
the following benchmarks slowed down by more than 2%:
- 456.hmmer slowed down by 4% from 7908 to 8206 perf samples
Below reproducer instructions can be used to re-build both "first_bad" and "last_good" cross-toolchains used in this bisection. Naturally, the scripts will fail when triggerring benchmarking jobs if you don't have access to Linaro TCWG CI.
For your convenience, we have uploaded tarballs with pre-processed source and assembly files at:
- First_bad save-temps: https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tk1-gnu-master-arm-spec2k6-O3_LTO/36/artifact/artifacts/build-93bd0213885739a1073f8c98911f8a00c0eb5597/save-temps/
- Last_good save-temps: https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tk1-gnu-master-arm-spec2k6-O3_LTO/36/artifact/artifacts/build-5a8832b1659e311437d25b7ec8b078be27ae54b8/save-temps/
- Baseline save-temps: https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tk1-gnu-master-arm-spec2k6-O3_LTO/36/artifact/artifacts/build-baseline/save-temps/
Configuration:
- Benchmark: SPEC CPU2006
- Toolchain: GCC + Glibc + GNU Linker
- Version: all components were built from their tip of trunk
- Target: arm-linux-gnueabihf
- Compiler flags: -O3 -flto -marm
- Hardware: NVidia TK1 4x Cortex-A15
This benchmarking CI is work-in-progress, and we welcome feedback and suggestions at linaro-toolchain@lists.linaro.org . In our improvement plans is to add support for SPEC CPU2017 benchmarks and provide "perf report/annotate" data behind these reports.
THIS IS THE END OF INTERESTING STUFF. BELOW ARE LINKS TO BUILDS, REPRODUCTION INSTRUCTIONS, AND THE RAW COMMIT.
This commit has regressed these CI configurations:
- tcwg_bmk_gnu_tk1/gnu-master-arm-spec2k6-O3_LTO
First_bad build: https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tk1-gnu-master-arm-spec2k6-O3_LTO/36/artifact/artifacts/build-93bd0213885739a1073f8c98911f8a00c0eb5597/
Last_good build: https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tk1-gnu-master-arm-spec2k6-O3_LTO/36/artifact/artifacts/build-5a8832b1659e311437d25b7ec8b078be27ae54b8/
Baseline build: https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tk1-gnu-master-arm-spec2k6-O3_LTO/36/artifact/artifacts/build-baseline/
Even more details: https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tk1-gnu-master-arm-spec2k6-O3_LTO/36/artifact/artifacts/
Reproduce builds:
<cut>
mkdir investigate-gcc-93bd0213885739a1073f8c98911f8a00c0eb5597
cd investigate-gcc-93bd0213885739a1073f8c98911f8a00c0eb5597
# Fetch scripts
git clone https://git.linaro.org/toolchain/jenkins-scripts
# Fetch manifests and test.sh script
mkdir -p artifacts/manifests
curl -o artifacts/manifests/build-baseline.sh https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tk1-gnu-master-arm-spec2k6-O3_LTO/36/artifact/artifacts/manifests/build-baseline.sh --fail
curl -o artifacts/manifests/build-parameters.sh https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tk1-gnu-master-arm-spec2k6-O3_LTO/36/artifact/artifacts/manifests/build-parameters.sh --fail
curl -o artifacts/test.sh https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tk1-gnu-master-arm-spec2k6-O3_LTO/36/artifact/artifacts/test.sh --fail
chmod +x artifacts/test.sh
# Reproduce the baseline build (build all pre-requisites)
./jenkins-scripts/tcwg_bmk-build.sh @@ artifacts/manifests/build-baseline.sh
# Save baseline build state (which is then restored in artifacts/test.sh)
mkdir -p ./bisect
rsync -a --del --delete-excluded --exclude /bisect/ --exclude /artifacts/ --exclude /gcc/ ./ ./bisect/baseline/
cd gcc
# Reproduce first_bad build
git checkout --detach 93bd0213885739a1073f8c98911f8a00c0eb5597
../artifacts/test.sh
# Reproduce last_good build
git checkout --detach 5a8832b1659e311437d25b7ec8b078be27ae54b8
../artifacts/test.sh
cd ..
</cut>
Full commit (up to 1000 lines):
<cut>
commit 93bd0213885739a1073f8c98911f8a00c0eb5597
Author: Richard Biener <rguenther@suse.de>
Date: Mon Oct 18 15:55:22 2021 +0200
Refactor vect_supportable_dr_alignment
This refactors vect_supportable_dr_alignment to get the misalignment
as input parameter which allows us to elide modifying/restoring
of DR_MISALIGNMENT during alignment peeling analysis which eventually
makes it more straight-forward to split out the negative step
handling.
2021-10-19 Richard Biener <rguenther@suse.de>
* tree-vectorizer.h (vect_supportable_dr_alignment): Add
misalignment parameter.
* tree-vect-data-refs.c (vect_get_peeling_costs_all_drs):
Do not change DR_MISALIGNMENT in place, instead pass the
adjusted misalignment to vect_supportable_dr_alignment.
(vect_peeling_supportable): Likewise.
(vect_peeling_hash_get_lowest_cost): Adjust.
(vect_enhance_data_refs_alignment): Likewise.
(vect_vfa_access_size): Likewise.
(vect_supportable_dr_alignment): Add misalignment
parameter and simplify.
* tree-vect-stmts.c (get_negative_load_store_type): Adjust.
(get_group_load_store_type): Likewise.
(get_load_store_type): Likewise.
---
gcc/tree-vect-data-refs.c | 113 ++++++++++++++++++++++++++++------------------
gcc/tree-vect-stmts.c | 26 ++++++-----
gcc/tree-vectorizer.h | 2 +-
3 files changed, 85 insertions(+), 56 deletions(-)
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
index 0db6aec7312..556ae9725f1 100644
--- a/gcc/tree-vect-data-refs.c
+++ b/gcc/tree-vect-data-refs.c
@@ -1529,37 +1529,49 @@ vect_get_peeling_costs_all_drs (loop_vec_info loop_vinfo,
unsigned int *outside_cost,
stmt_vector_for_cost *body_cost_vec,
stmt_vector_for_cost *prologue_cost_vec,
- unsigned int npeel,
- bool unknown_misalignment)
+ unsigned int npeel)
{
vec<data_reference_p> datarefs = LOOP_VINFO_DATAREFS (loop_vinfo);
+ bool dr0_alignment_known_p
+ = (dr0_info
+ && known_alignment_for_access_p (dr0_info,
+ STMT_VINFO_VECTYPE (dr0_info->stmt)));
+
for (data_reference *dr : datarefs)
{
dr_vec_info *dr_info = loop_vinfo->lookup_dr (dr);
if (!vect_relevant_for_alignment_p (dr_info))
continue;
- int save_misalignment;
- save_misalignment = dr_info->misalignment;
+ tree vectype = STMT_VINFO_VECTYPE (dr_info->stmt);
+ dr_alignment_support alignment_support_scheme;
+ int misalignment;
+ unsigned HOST_WIDE_INT alignment;
+
if (npeel == 0)
- ;
- else if (unknown_misalignment && dr_info == dr0_info)
- SET_DR_MISALIGNMENT (dr_info,
- vect_dr_misalign_for_aligned_access (dr0_info));
+ misalignment = dr_misalignment (dr_info, vectype);
+ else if (dr_info == dr0_info
+ || vect_dr_aligned_if_peeled_dr_is (dr_info, dr0_info))
+ misalignment = 0;
+ else if (!dr0_alignment_known_p
+ || !known_alignment_for_access_p (dr_info, vectype)
+ || !DR_TARGET_ALIGNMENT (dr_info).is_constant (&alignment))
+ misalignment = DR_MISALIGNMENT_UNKNOWN;
else
- vect_update_misalignment_for_peel (dr_info, dr0_info, npeel);
- /* ??? We should be able to avoid both the adjustment before and the
- call to vect_supportable_dr_alignment below. */
- tree vectype = STMT_VINFO_VECTYPE (dr_info->stmt);
- int misalignment = dr_misalignment (dr_info, vectype);
- dr_alignment_support alignment_support_scheme
- = vect_supportable_dr_alignment (loop_vinfo, dr_info, vectype);
+ {
+ misalignment = dr_misalignment (dr_info, vectype);
+ misalignment += npeel * TREE_INT_CST_LOW (DR_STEP (dr_info->dr));
+ misalignment &= alignment - 1;
+ }
+ alignment_support_scheme
+ = vect_supportable_dr_alignment (loop_vinfo, dr_info, vectype,
+ misalignment);
+
vect_get_data_access_cost (loop_vinfo, dr_info,
alignment_support_scheme, misalignment,
inside_cost, outside_cost,
body_cost_vec, prologue_cost_vec);
- SET_DR_MISALIGNMENT (dr_info, save_misalignment);
}
}
@@ -1583,7 +1595,7 @@ vect_peeling_hash_get_lowest_cost (_vect_peel_info **slot,
vect_get_peeling_costs_all_drs (loop_vinfo, elem->dr_info, &inside_cost,
&outside_cost, &body_cost_vec,
- &prologue_cost_vec, elem->npeel, false);
+ &prologue_cost_vec, elem->npeel);
body_cost_vec.release ();
@@ -1655,25 +1667,37 @@ vect_peeling_supportable (loop_vec_info loop_vinfo, dr_vec_info *dr0_info,
vec<data_reference_p> datarefs = LOOP_VINFO_DATAREFS (loop_vinfo);
enum dr_alignment_support supportable_dr_alignment;
+ bool dr0_alignment_known_p
+ = known_alignment_for_access_p (dr0_info,
+ STMT_VINFO_VECTYPE (dr0_info->stmt));
+
/* Ensure that all data refs can be vectorized after the peel. */
for (data_reference *dr : datarefs)
{
- int save_misalignment;
-
if (dr == dr0_info->dr)
continue;
dr_vec_info *dr_info = loop_vinfo->lookup_dr (dr);
- if (!vect_relevant_for_alignment_p (dr_info))
+ if (!vect_relevant_for_alignment_p (dr_info)
+ || vect_dr_aligned_if_peeled_dr_is (dr_info, dr0_info))
continue;
- save_misalignment = dr_info->misalignment;
- vect_update_misalignment_for_peel (dr_info, dr0_info, npeel);
tree vectype = STMT_VINFO_VECTYPE (dr_info->stmt);
+ int misalignment;
+ unsigned HOST_WIDE_INT alignment;
+ if (!dr0_alignment_known_p
+ || !known_alignment_for_access_p (dr_info, vectype)
+ || !DR_TARGET_ALIGNMENT (dr_info).is_constant (&alignment))
+ misalignment = DR_MISALIGNMENT_UNKNOWN;
+ else
+ {
+ misalignment = dr_misalignment (dr_info, vectype);
+ misalignment += npeel * TREE_INT_CST_LOW (DR_STEP (dr_info->dr));
+ misalignment &= alignment - 1;
+ }
supportable_dr_alignment
- = vect_supportable_dr_alignment (loop_vinfo, dr_info, vectype);
- SET_DR_MISALIGNMENT (dr_info, save_misalignment);
-
+ = vect_supportable_dr_alignment (loop_vinfo, dr_info, vectype,
+ misalignment);
if (supportable_dr_alignment == dr_unaligned_unsupported)
return false;
}
@@ -2017,7 +2041,8 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
/* Check for data refs with unsupportable alignment that
can be peeled. */
enum dr_alignment_support supportable_dr_alignment
- = vect_supportable_dr_alignment (loop_vinfo, dr_info, vectype);
+ = vect_supportable_dr_alignment (loop_vinfo, dr_info, vectype,
+ DR_MISALIGNMENT_UNKNOWN);
if (supportable_dr_alignment == dr_unaligned_unsupported)
{
one_dr_unsupportable = true;
@@ -2074,7 +2099,7 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
vect_get_peeling_costs_all_drs (loop_vinfo, dr0_info,
&load_inside_cost,
&load_outside_cost,
- &dummy, &dummy, estimated_npeels, true);
+ &dummy, &dummy, estimated_npeels);
dummy.release ();
if (first_store)
@@ -2084,7 +2109,7 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
&store_inside_cost,
&store_outside_cost,
&dummy, &dummy,
- estimated_npeels, true);
+ estimated_npeels);
dummy.release ();
}
else
@@ -2172,8 +2197,7 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
stmt_vector_for_cost dummy;
dummy.create (2);
vect_get_peeling_costs_all_drs (loop_vinfo, NULL, &nopeel_inside_cost,
- &nopeel_outside_cost, &dummy, &dummy,
- 0, false);
+ &nopeel_outside_cost, &dummy, &dummy, 0);
dummy.release ();
/* Add epilogue costs. As we do not peel for alignment here, no prologue
@@ -2362,7 +2386,8 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
dr_vec_info *dr_info = loop_vinfo->lookup_dr (dr);
stmt_vec_info stmt_info = dr_info->stmt;
tree vectype = STMT_VINFO_VECTYPE (stmt_info);
- if (aligned_access_p (dr_info, vectype)
+ int misalignment;
+ if ((misalignment = dr_misalignment (dr_info, vectype)) == 0
|| !vect_relevant_for_alignment_p (dr_info))
continue;
@@ -2373,12 +2398,13 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
}
enum dr_alignment_support supportable_dr_alignment
- = vect_supportable_dr_alignment (loop_vinfo, dr_info, vectype);
+ = vect_supportable_dr_alignment (loop_vinfo, dr_info, vectype,
+ misalignment);
if (supportable_dr_alignment == dr_unaligned_unsupported)
{
- if (known_alignment_for_access_p (dr_info, vectype)
- || LOOP_VINFO_MAY_MISALIGN_STMTS (loop_vinfo).length ()
- >= (unsigned) param_vect_max_version_for_alignment_checks)
+ if (misalignment != DR_MISALIGNMENT_UNKNOWN
+ || (LOOP_VINFO_MAY_MISALIGN_STMTS (loop_vinfo).length ()
+ >= (unsigned) param_vect_max_version_for_alignment_checks))
{
do_versioning = false;
break;
@@ -3321,8 +3347,10 @@ vect_vfa_access_size (vec_info *vinfo, dr_vec_info *dr_info)
access_size *= DR_GROUP_SIZE (stmt_vinfo) - DR_GROUP_GAP (stmt_vinfo);
}
tree vectype = STMT_VINFO_VECTYPE (stmt_vinfo);
+ int misalignment;
if (STMT_VINFO_VEC_STMTS (stmt_vinfo).exists ()
- && (vect_supportable_dr_alignment (vinfo, dr_info, vectype)
+ && ((misalignment = dr_misalignment (dr_info, vectype)), true)
+ && (vect_supportable_dr_alignment (vinfo, dr_info, vectype, misalignment)
== dr_explicit_realign_optimized))
{
/* We might access a full vector's worth. */
@@ -6638,7 +6666,6 @@ vect_can_force_dr_alignment_p (const_tree decl, poly_uint64 alignment)
return (known_le (alignment, (unsigned HOST_WIDE_INT) MAX_STACK_ALIGNMENT));
}
-
/* Return whether the data reference DR_INFO is supported with respect to its
alignment.
If CHECK_ALIGNED_ACCESSES is TRUE, check if the access is supported even
@@ -6647,7 +6674,7 @@ vect_can_force_dr_alignment_p (const_tree decl, poly_uint64 alignment)
enum dr_alignment_support
vect_supportable_dr_alignment (vec_info *vinfo, dr_vec_info *dr_info,
- tree vectype)
+ tree vectype, int misalignment)
{
data_reference *dr = dr_info->dr;
stmt_vec_info stmt_info = dr_info->stmt;
@@ -6656,7 +6683,7 @@ vect_supportable_dr_alignment (vec_info *vinfo, dr_vec_info *dr_info,
class loop *vect_loop = NULL;
bool nested_in_vect_loop = false;
- if (aligned_access_p (dr_info, vectype))
+ if (misalignment == 0)
return dr_aligned;
/* For now assume all conditional loads/stores support unaligned
@@ -6762,11 +6789,11 @@ vect_supportable_dr_alignment (vec_info *vinfo, dr_vec_info *dr_info,
}
bool is_packed = false;
- tree type = (TREE_TYPE (DR_REF (dr)));
- if (!known_alignment_for_access_p (dr_info, vectype))
+ tree type = TREE_TYPE (DR_REF (dr));
+ if (misalignment == DR_MISALIGNMENT_UNKNOWN)
is_packed = not_size_aligned (DR_REF (dr));
- if (targetm.vectorize.support_vector_misalignment
- (mode, type, dr_misalignment (dr_info, vectype), is_packed))
+ if (targetm.vectorize.support_vector_misalignment (mode, type, misalignment,
+ is_packed))
return dr_unaligned_supported;
/* Unsupported. */
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index afc3ef17834..9cbc1af4cc9 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -1986,8 +1986,9 @@ get_negative_load_store_type (vec_info *vinfo,
return VMAT_ELEMENTWISE;
}
- alignment_support_scheme = vect_supportable_dr_alignment (vinfo, dr_info,
- vectype);
+ int misalignment = dr_misalignment (dr_info, vectype);
+ alignment_support_scheme
+ = vect_supportable_dr_alignment (vinfo, dr_info, vectype, misalignment);
if (alignment_support_scheme != dr_aligned
&& alignment_support_scheme != dr_unaligned_supported)
{
@@ -2184,15 +2185,15 @@ get_group_load_store_type (vec_info *vinfo, stmt_vec_info stmt_info,
can do half-vector operations avoid the epilogue peeling
by simply loading half of the vector only. Usually
the construction with an upper zero half will be elided. */
- dr_alignment_support alignment_support_scheme;
+ dr_alignment_support alss;
+ int misalign = dr_misalignment (first_dr_info, vectype);
tree half_vtype;
if (overrun_p
&& !masked_p
- && (((alignment_support_scheme
- = vect_supportable_dr_alignment (vinfo, first_dr_info,
- vectype)))
+ && (((alss = vect_supportable_dr_alignment (vinfo, first_dr_info,
+ vectype, misalign)))
== dr_aligned
- || alignment_support_scheme == dr_unaligned_supported)
+ || alss == dr_unaligned_supported)
&& known_eq (nunits, (group_size - gap) * 2)
&& known_eq (nunits, group_size)
&& (vector_vector_composition_type (vectype, 2, &half_vtype)
@@ -2304,9 +2305,10 @@ get_group_load_store_type (vec_info *vinfo, stmt_vec_info stmt_info,
}
else
{
- *alignment_support_scheme
- = vect_supportable_dr_alignment (vinfo, first_dr_info, vectype);
*misalignment = dr_misalignment (first_dr_info, vectype);
+ *alignment_support_scheme
+ = vect_supportable_dr_alignment (vinfo, first_dr_info, vectype,
+ *misalignment);
}
if (vls_type != VLS_LOAD && first_stmt_info == stmt_info)
@@ -2452,12 +2454,12 @@ get_load_store_type (vec_info *vinfo, stmt_vec_info stmt_info,
(vinfo, stmt_info, vectype, vls_type, ncopies, poffset);
else
*memory_access_type = VMAT_CONTIGUOUS;
+ *misalignment = dr_misalignment (STMT_VINFO_DR_INFO (stmt_info),
+ vectype);
*alignment_support_scheme
= vect_supportable_dr_alignment (vinfo,
STMT_VINFO_DR_INFO (stmt_info),
- vectype);
- *misalignment = dr_misalignment (STMT_VINFO_DR_INFO (stmt_info),
- vectype);
+ vectype, *misalignment);
}
}
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h
index 746e39207d0..866d813a12c 100644
--- a/gcc/tree-vectorizer.h
+++ b/gcc/tree-vectorizer.h
@@ -1980,7 +1980,7 @@ extern opt_tree vect_get_mask_type_for_stmt (stmt_vec_info, unsigned int = 0);
/* In tree-vect-data-refs.c. */
extern bool vect_can_force_dr_alignment_p (const_tree, poly_uint64);
extern enum dr_alignment_support vect_supportable_dr_alignment
- (vec_info *, dr_vec_info *, tree);
+ (vec_info *, dr_vec_info *, tree, int);
extern tree vect_get_smallest_scalar_type (stmt_vec_info, tree);
extern opt_result vect_analyze_data_ref_dependences (loop_vec_info, unsigned int *);
extern bool vect_slp_analyze_instance_dependence (vec_info *, slp_instance);
</cut>
>From ci_notify@linaro.org Tue Oct 26 17:44:01 2021
Return-Path: <ci_notify@linaro.org>
X-Original-To: gcc-regression@gcc.gnu.org
Delivered-To: gcc-regression@gcc.gnu.org
Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com
[IPv6:2a00:1450:4864:20::42a])
by sourceware.org (Postfix) with ESMTPS id F38353858D39
for <gcc-regression@gcc.gnu.org>; Tue, 26 Oct 2021 17:43:58 +0000 (GMT)
DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org F38353858D39
Received: by mail-wr1-x42a.google.com with SMTP id u18so17326006wrg.5
for <gcc-regression@gcc.gnu.org>; Tue, 26 Oct 2021 10:43:58 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20210112;
h=x-gm-message-state:from:date:to:cc:message-id:subject:mime-version;
bh=8eiJHJVsdGRJqBNBsSqVzq3IQqsnza7fs+waThLaLkQ=;
b=ocmEzjq2azYz4MZSLqiC+rvm4Jav60EOfHhgAFontLAODGlPoh8lFTDDxL0XDv7dau
xENE6mrV/v9fPKyF0gKSiX8TZitfTJb6INvu50LqDPKrIPmwHHi8gS8upc/4Cg8IV+6W
kBK/nG/gukDLrFeJ9Xe31Ii+EIBt+rW9zdpLpdmujmQzSpFhHxpa/Nj1F+89w+Avp9e0
FsP4+Ki3PzWT3ebR1ivfPKeGoLiLhE+nfMm6SWGiQfzQLKOFFnCPQYB4TovuMqVGjFkf
lKcncGq0lmaLjOCIkAnZnmFh6fh34hlGhHmRVBH8tJctEyM1v5ZAr0yfdr/3Sg2rjFFC
2qtg==
X-Gm-Message-State: AOAM532ePSXKJisuVBCwJI/l1NCrXq/vjSSw/QOLntMr8qpnUZLH6qgU
b1Q3/t4radit+dMPVNiklAFm1Q==
X-Google-Smtp-Source: ABdhPJyPRFbOZz7MVpzEl/z7ss4sSEo1gz8nYofOezh9oS9nVnlCqTLw1QFOn+EWoBaMnKqC2lzYwg==
X-Received: by 2002:a5d:458a:: with SMTP id p10mr29294245wrq.240.1635270237893;
Tue, 26 Oct 2021 10:43:57 -0700 (PDT)
Received: from jenkins.jenkins (ci.linaro.org. [88.99.136.175])
by smtp.gmail.com with ESMTPSA id n5sm1178464wme.6.2021.10.26.10.43.57
(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
Tue, 26 Oct 2021 10:43:57 -0700 (PDT)
From: ci_notify@linaro.org
X-Google-Original-From: linaro-infrastructure-errors@lists.linaro.org
Date: Tue, 26 Oct 2021 17:43:56 +0000 (UTC)
To: Aldy Hernandez <aldyh@redhat.com>
Cc: gcc-regression@gcc.gnu.org
Message-ID: <1606430883.2575.1635270237254@jenkins.jenkins>
Subject: [TCWG CI] 459.GemsFDTD grew in size by 4% after gcc: Revert the
avoid threading circular paths commit.
MIME-Version: 1.0
X-Jenkins-Job: TCWG Bisect tcwg_bmk_apm/gnu-master-aarch64-spec2k6-Os_LTO
X-Jenkins-Result: SUCCESS
X-Spam-Status: No, score=-13.6 required=5.0 tests=BAYES_00, DKIM_SIGNED,
DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_LOTSOFHASH,
RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS,
TXREP autolearn=ham autolearn_force=no version=3.4.4
X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on
server2.sourceware.org
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Content-Filtered-By: Mailman/MimeDel 2.1.29
X-BeenThere: gcc-regression@gcc.gnu.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Gcc-regression mailing list <gcc-regression.gcc.gnu.org>
List-Unsubscribe: <https://gcc.gnu.org/mailman/options/gcc-regression>,
<mailto:gcc-regression-request@gcc.gnu.org?subject=unsubscribe>
List-Archive: <https://gcc.gnu.org/pipermail/gcc-regression/>
List-Post: <mailto:gcc-regression@gcc.gnu.org>
List-Help: <mailto:gcc-regression-request@gcc.gnu.org?subject=help>
List-Subscribe: <https://gcc.gnu.org/mailman/listinfo/gcc-regression>,
<mailto:gcc-regression-request@gcc.gnu.org?subject=subscribe>
X-List-Received-Date: Tue, 26 Oct 2021 17:44:01 -0000
After gcc commit d6a3c0cfb852dbeee4255e3588e9a1f52e376042
Author: Aldy Hernandez <aldyh@redhat.com>
Revert the avoid threading circular paths commit.
the following benchmarks grew in size by more than 1%:
- 459.GemsFDTD grew in size by 4% from 247376 to 257012 bytes
Below reproducer instructions can be used to re-build both "first_bad" and "last_good" cross-toolchains used in this bisection. Naturally, the scripts will fail when triggerring benchmarking jobs if you don't have access to Linaro TCWG CI.
For your convenience, we have uploaded tarballs with pre-processed source and assembly files at:
- First_bad save-temps: https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_apm-gnu-master-aarch64-spec2k6-Os_LTO/5/artifact/artifacts/build-d6a3c0cfb852dbeee4255e3588e9a1f52e376042/save-temps/
- Last_good save-temps: https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_apm-gnu-master-aarch64-spec2k6-Os_LTO/5/artifact/artifacts/build-d97fa0d44c22f6bd96140e4ee613b65fbd8f559a/save-temps/
- Baseline save-temps: https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_apm-gnu-master-aarch64-spec2k6-Os_LTO/5/artifact/artifacts/build-baseline/save-temps/
Configuration:
- Benchmark: SPEC CPU2006
- Toolchain: GCC + Glibc + GNU Linker
- Version: all components were built from their tip of trunk
- Target: aarch64-linux-gnu
- Compiler flags: -Os -flto
- Hardware: APM Mustang 8x X-Gene1
This benchmarking CI is work-in-progress, and we welcome feedback and suggestions at linaro-toolchain@lists.linaro.org . In our improvement plans is to add support for SPEC CPU2017 benchmarks and provide "perf report/annotate" data behind these reports.
THIS IS THE END OF INTERESTING STUFF. BELOW ARE LINKS TO BUILDS, REPRODUCTION INSTRUCTIONS, AND THE RAW COMMIT.
This commit has regressed these CI configurations:
- tcwg_bmk_gnu_apm/gnu-master-aarch64-spec2k6-Os_LTO
First_bad build: https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_apm-gnu-master-aarch64-spec2k6-Os_LTO/5/artifact/artifacts/build-d6a3c0cfb852dbeee4255e3588e9a1f52e376042/
Last_good build: https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_apm-gnu-master-aarch64-spec2k6-Os_LTO/5/artifact/artifacts/build-d97fa0d44c22f6bd96140e4ee613b65fbd8f559a/
Baseline build: https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_apm-gnu-master-aarch64-spec2k6-Os_LTO/5/artifact/artifacts/build-baseline/
Even more details: https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_apm-gnu-master-aarch64-spec2k6-Os_LTO/5/artifact/artifacts/
Reproduce builds:
<cut>
mkdir investigate-gcc-d6a3c0cfb852dbeee4255e3588e9a1f52e376042
cd investigate-gcc-d6a3c0cfb852dbeee4255e3588e9a1f52e376042
# Fetch scripts
git clone https://git.linaro.org/toolchain/jenkins-scripts
# Fetch manifests and test.sh script
mkdir -p artifacts/manifests
curl -o artifacts/manifests/build-baseline.sh https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_apm-gnu-master-aarch64-spec2k6-Os_LTO/5/artifact/artifacts/manifests/build-baseline.sh --fail
curl -o artifacts/manifests/build-parameters.sh https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_apm-gnu-master-aarch64-spec2k6-Os_LTO/5/artifact/artifacts/manifests/build-parameters.sh --fail
curl -o artifacts/test.sh https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_apm-gnu-master-aarch64-spec2k6-Os_LTO/5/artifact/artifacts/test.sh --fail
chmod +x artifacts/test.sh
# Reproduce the baseline build (build all pre-requisites)
./jenkins-scripts/tcwg_bmk-build.sh @@ artifacts/manifests/build-baseline.sh
# Save baseline build state (which is then restored in artifacts/test.sh)
mkdir -p ./bisect
rsync -a --del --delete-excluded --exclude /bisect/ --exclude /artifacts/ --exclude /gcc/ ./ ./bisect/baseline/
cd gcc
# Reproduce first_bad build
git checkout --detach d6a3c0cfb852dbeee4255e3588e9a1f52e376042
../artifacts/test.sh
# Reproduce last_good build
git checkout --detach d97fa0d44c22f6bd96140e4ee613b65fbd8f559a
../artifacts/test.sh
cd ..
</cut>
Full commit (up to 1000 lines):
<cut>
commit d6a3c0cfb852dbeee4255e3588e9a1f52e376042
Author: Aldy Hernandez <aldyh@redhat.com>
Date: Thu Oct 21 13:18:49 2021 +0200
Revert the avoid threading circular paths commit.
I've tested this patch on the wrong tree, and picked up the test changes
in a pending patch, without which this patch is no longer obvious.
Plus, it causes a regression in an invalid test I've recommended we remove.
I'm reverting this patch until the dependencies are reviewed.
Sorry for the noise.
gcc/ChangeLog:
* tree-ssa-threadbackward.c
(back_threader::maybe_register_path): Remove circular paths check.
---
gcc/tree-ssa-threadbackward.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/gcc/tree-ssa-threadbackward.c b/gcc/tree-ssa-threadbackward.c
index 38913b06717..d94e3b962db 100644
--- a/gcc/tree-ssa-threadbackward.c
+++ b/gcc/tree-ssa-threadbackward.c
@@ -140,10 +140,6 @@ back_threader::maybe_register_path ()
if (taken_edge && taken_edge != UNREACHABLE_EDGE)
{
- // Avoid circular paths.
- if (m_visited_bbs.contains (taken_edge->dest))
- return UNREACHABLE_EDGE;
-
bool irreducible = false;
bool profitable
= m_profit.profitable_path_p (m_path, m_name, taken_edge, &irreducible);
</cut>
>From hjl@sc.intel.com Tue Oct 26 18:01:35 2021
Return-Path: <hjl@sc.intel.com>
X-Original-To: gcc-regression@gcc.gnu.org
Delivered-To: gcc-regression@gcc.gnu.org
Received: from mga12.intel.com (mga12.intel.com [192.55.52.136])
by sourceware.org (Postfix) with ESMTPS id 9DF563858D39
for <gcc-regression@gcc.gnu.org>; Tue, 26 Oct 2021 18:01:33 +0000 (GMT)
DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9DF563858D39
X-IronPort-AV: E=McAfee;i="6200,9189,10149"; a="210060092"
X-IronPort-AV: E=Sophos;i="5.87,184,1631602800"; d="scan'208";a="210060092"
Received: from fmsmga007.fm.intel.com ([10.253.24.52])
by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
26 Oct 2021 11:01:31 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.87,184,1631602800"; d="scan'208";a="494322721"
Received: from scymds02.sc.intel.com ([10.82.73.244])
by fmsmga007.fm.intel.com with ESMTP; 26 Oct 2021 11:01:31 -0700
Received: from gnu-34.sc.intel.com (gnu-34.sc.intel.com [172.25.70.212])
by scymds02.sc.intel.com with ESMTP id 19QI1Vi3007788;
Tue, 26 Oct 2021 11:01:31 -0700
Received: by gnu-34.sc.intel.com (Postfix, from userid 1000)
id 7D5646385C; Tue, 26 Oct 2021 11:01:31 -0700 (PDT)
Date: Tue, 26 Oct 2021 11:01:31 -0700
To: skpgkp2@gmail.com, hjl.tools@gmail.com, gcc-regression@gcc.gnu.org
Subject: Regressions on master at commit r12-4713 vs commit r12-4696 on
Linux/x86_64
User-Agent: Heirloom mailx 12.5 7/5/10
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-Id: <20211026180131.7D5646385C@gnu-34.sc.intel.com>
From: "H.J. Lu" <hjl@sc.intel.com>
X-Spam-Status: No, score=-3469.4 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS,
KAM_LAZY_DOMAIN_SECURITY, KAM_NUMSUBJECT, SPF_HELO_PASS, SPF_NONE,
TXREP autolearn=no autolearn_force=no version=3.4.4
X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on
server2.sourceware.org
X-BeenThere: gcc-regression@gcc.gnu.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Gcc-regression mailing list <gcc-regression.gcc.gnu.org>
List-Unsubscribe: <https://gcc.gnu.org/mailman/options/gcc-regression>,
<mailto:gcc-regression-request@gcc.gnu.org?subject=unsubscribe>
List-Archive: <https://gcc.gnu.org/pipermail/gcc-regression/>
List-Post: <mailto:gcc-regression@gcc.gnu.org>
List-Help: <mailto:gcc-regression-request@gcc.gnu.org?subject=help>
List-Subscribe: <https://gcc.gnu.org/mailman/listinfo/gcc-regression>,
<mailto:gcc-regression-request@gcc.gnu.org?subject=subscribe>
X-List-Received-Date: Tue, 26 Oct 2021 18:01:35 -0000
New failures:
New passes:
FAIL: gcc.dg/guality/pr36728-4.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 14 y == 2
FAIL: gcc.dg/guality/pr36728-4.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 y == 2
FAIL: gcc.dg/guality/pr36728-4.c -O3 -g -DPREVENT_OPTIMIZATION line 16 y == 2
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-10-25 19:56 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-25 19:56 [TCWG CI] 456.hmmer slowed down by 4% after gcc: Refactor vect_supportable_dr_alignment ci_notify
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).