On Thu, Apr 06, 2017 at 10:40:07AM +0200, Jakub Jelinek wrote: > On Thu, Apr 06, 2017 at 09:33:58AM +0200, Uros Bizjak wrote: > > Newly introduced alternatives (x/x) and (v/v) are valid also for > > 32-bit targets, so we have to adjust insn constraint of > > *vec_extractv4si_0_zext and enable alternatives accordingly. After the > > That is true. But if we provide just the x/x and v/v alternatives in > *vec_extractv4si_0_zext, then it will be forced to always do the zero > extraction on the SSE registers in 32-bit mode. Is that what we want?
Also, I think we can do the zero extension even without SSE4.1, if we have a spare SSE register (or before reload), we can use pxor into that scratch reg and punpck* it, if we don't, we can construct a V4SI constaint in memory with { -1, 0, 0, 0 } or so and and with that. Jakub