This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [RFC] Combine vectorized loops with its scalar remainder.
- From: Richard Henderson <rth at redhat dot com>
- To: Yuri Rumyantsev <ysrumyan at gmail dot com>, gcc-patches <gcc-patches at gcc dot gnu dot org>, Jeff Law <law at redhat dot com>, Richard Biener <richard dot guenther at gmail dot com>, Igor Zamyatin <izamyatin at gmail dot com>, ÐÐÑÑ ÐÐÐÐÐÐÑ <enkovich dot gnu at gmail dot com>
- Date: Tue, 3 Nov 2015 11:08:10 +0100
- Subject: Re: [RFC] Combine vectorized loops with its scalar remainder.
- Authentication-results: sourceware.org; auth=none
- References: <CAEoMCqSmMRW1C2LniYShbfdA+JfSS6kzfrPYCcdd-rdVXa4mzg at mail dot gmail dot com>
On 10/28/2015 11:45 AM, Yuri Rumyantsev wrote:
Hi All,
Here is a preliminary patch to combine vectorized loop with its scalar
remainder, draft of which was proposed by Kirill Yukhin month ago:
https://gcc.gnu.org/ml/gcc-patches/2015-09/msg01435.html
It was tested wwith '-mavx2' option to run on Haswell processor.
The main goal of it is to improve performance of vectorized loops for AVX512.
Ought this really be enabled for avx2? While it's nice for testing to be able
to use normal vcond patterns to be able to test with current hardware, I have
trouble imagining that it's an improvement without the real masked operations.
I tried to have a look myself at what kind of output we'd be getting, but the
very first test I tried produced an ICE:
void foo(float *a, float *b, int n)
{
int i;
for (i = 0; i < n; ++i)
a[i] += b[i];
}
$ ./cc1 -O3 -mavx2 z.c
foo
Analyzing compilation unit
Performing interprocedural optimizations
<*free_lang_data> <visibility> <build_ssa_passes> <opt_local_passes>
<free-inline-summary> <whole-program> <profile_estimate> <icf> <devirt> <cp>
<targetclone> <inline> <pure-const> <static-var> <single-use>
<comdats>Assembling functions:
<dispachercalls> foo
z.c: In function âfooâ:
z.c:1:6: error: bogus comparison result type
void foo(float *a, float *b, int n)
^
vector(8) signed int
vect_vec_mask_.24_116 = vect_vec_iv_.22_112 < vect_cst_.23_115;
z.c:1:6: internal compiler error: verify_gimple failed
0xb20d17 verify_gimple_in_cfg(function*, bool)
../../git-master/gcc/tree-cfg.c:5082
0xa16d77 execute_function_todo
../../git-master/gcc/passes.c:1940
0xa1769b execute_todo
../../git-master/gcc/passes.c:1995
Please submit a full bug report,
r~