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%
Thanks. 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, any_mask_load_store)) 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. Jakub