http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55645
--- Comment #2 from Marc Glisse <glisse at gcc dot gnu.org> 2012-12-11 10:03:27 UTC --- (In reply to comment #0) > // possible syntax > void compute() { > for (int i=0;i!=1024;++i) { > if likely(a[i]<b[i]) // very often > c[i]=a[i]+b[i]; > else // rare > c[i]=a[i]-b[i]; > } > } You may want to make the rare computation more expensive than that, I am not sure there is a real speed improvement here (mask+compare+branch might take about as long as minus+blend). Interesting idea. First step would be to create a REDUC_TRUTH_AND_EXPR or something like that to be able to represent _mm256_movemask_ps(mask) == 255 at tree level.