http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50596
--- Comment #6 from rguenther at suse dot de <rguenther at suse dot de> 2011-10-04 11:26:51 UTC --- On Tue, 4 Oct 2011, jakub at gcc dot gnu.org wrote: > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50596 > > --- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-10-04 > 11:13:58 UTC --- > (In reply to comment #4) > > I agree with the need to at least support vectorizing loads and stores of > > 1-bit unsigned precision values. We need to be careful with arithmetic > > and conversions though (which is why we reject bools right now). > > We could represent the arithmetic and conversions (or at least subset thereof) > using *COND_EXPRs etc. In any case, the bool representation is desirable for > the scalar loop, so this isn't something we should be doing in ifcvt, it needs > to be done in the vectorizer itself. Sure. Note that in GIMPLE bool = (bool) int; isn't equivalent to bool = int != 0 but to a truncation to 1-bit precision. Thus for the truncation a BIT_AND is enough. I'm just worried about N-precision signed to mode-precision sign-extension (for the 1-bit case we can use a COND_EXPR, but for more bits it gets more difficult). Richard.
