This is the mail archive of the
mailing list for the GCC project.
Re: [RFC] By default if-convert only basic blocks that will be vectorized (take 3)
- From: Sergey Ostanevich <sergos dot gnu at gmail dot com>
- To: Jakub Jelinek <jakub at redhat dot com>
- Cc: Richard Biener <rguenther at suse dot de>, "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 22 Oct 2013 18:08:19 +0400
- Subject: Re: [RFC] By default if-convert only basic blocks that will be vectorized (take 3)
- Authentication-results: sourceware.org; auth=none
- References: <20131015123225 dot GO30970 at tucnak dot zalov dot cz> <20131017165556 dot GI30970 at tucnak dot zalov dot cz> <CAGYS_TLmaUXpnEh9oZ8uyX-NT-niFFnQDA=T=zpYXSR9W8CgEg at mail dot gmail dot com> <20131022105614 dot GK30970 at tucnak dot zalov dot cz> <CAGYS_TLTdBm6d-iL=-Nex4SrPTni6Q6Z+MDuS7fjnCKiUM4=7A at mail dot gmail dot com> <CAGYS_TLjBfd6bLLh5Tc8Bysa9OXYdxfKKf_PgrqnPLpqJrrv2w at mail dot gmail dot com> <20131022132658 dot GM30970 at tucnak dot zalov dot cz>
-march=core-avx2 -static -Ofast -flto -funroll-loops
with all 3 patches applied to git version I mentioned
the same is in progress for 'take 3'
On Tue, Oct 22, 2013 at 5:26 PM, Jakub Jelinek <email@example.com> wrote:
> On Tue, Oct 22, 2013 at 05:16:29PM +0400, Sergey Ostanevich wrote:
>> ouch.. html got me!
>> applying to the same as before
>> commit 0e3dfadd374c3045a926afa6d06af276cee2108d
>> Author: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
>> Date: Fri Oct 18 08:36:28 2013 +0000
>> trying '06 build.
>> for take 2 on HSW there were mixed results for passed tests:
>> 400.perlbench +0.25%
>> 401.bzip2 -0.40%
>> 429.mcf -1.67%
>> 456.hmmer +0%
>> 458.sjeng -1.65%
>> 471.omnetpp -1.72%
>> 483.xalancbmk -0.25%
>> 410.bwaves +0%
>> 433.milc -0.28%
>> 444.namd -1.13%
>> 450.soplex -1.01%
>> 459.GemsFDTD -0.25%
>> 470.lbm +1.44%
>> 482.sphinx3 +0.61%
> If this is with AVX or AVX2, there can be multiple things.
> One is whether if-conversion in it's current form is really so harmful
> for generated code quality (we have various testcases where what we get with
> it is very bad, but perhaps there are still testcases where it improves
> non-vectorized loops), another one is when the masked loads/stores/gather is
> actually beneficial and whether we don't want some better tuning for it.
> The patchset as whole does both things, so determining what is what is hard.
> If only the first two patches are applied and not the third, then it should
> give a picture on whether it is a win to have if-conversion done in it's
> current form only for vectorized bbs.
> And, if all 3 patches are applied, but the condition in tree_if_conversion:
> if ((flag_tree_loop_vectorize || loop->force_vect)
> && (flag_tree_loop_if_convert == -1 || any_mask_load_store)
> && !version_loop_for_if_conversion (loop, &version_outer_loop,
> goto cleanup;
> is changed into just
> if (any_mask_load_store
> && !version_loop_for_if_conversion (loop, &version_outer_loop, true))
> goto cleanup;
> then if-conversion would happen as before, just in cases where previously
> we wouldn't if-convert because of conditional loads/stores, but now we
> could, those changes would be limited to vectorized loops only.