https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85466
--- Comment #19 from Marc Glisse <glisse at gcc dot gnu.org> --- For the "ifno" case, llvm turns (item>.5f)?1.:0. into (cheating on the syntax, we can't do bit_and on float in C) ((item>.5f)?mask:0.) & 1. where mask is all one bits, and this uses the SSE comparison instruction that generates said mask or 0. llvm is missing the extra trick that the following multiplication can be merged into this, to do directly & .7f.