On Tue, May 24, 2016 at 9:02 PM, Jakub Jelinek <ja...@redhat.com> wrote: > On Tue, May 24, 2016 at 08:35:12PM +0200, Uros Bizjak wrote: >> On Tue, May 24, 2016 at 6:55 PM, Jakub Jelinek <ja...@redhat.com> wrote: >> > Hi! >> > >> > The Yr constraint contrary to what has been said when it has been submitted >> > actually is always NO_REX_SSE_REGS or NO_REGS, never ALL_SSE_REGS, so >> > the RA restriction to only the first 8 regs is done no matter what we tune >> > for. >> > >> > This is because we test X86_TUNE_AVOID_4BYTE_PREFIXES, which is an enum >> > value (59), rather than actually checking if the tune flag. >> > >> > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? >> > >> > 2016-05-24 Jakub Jelinek <ja...@redhat.com> >> > >> > * config/i386/i386.h (TARGET_AVOID_4BYTE_PREFIXES): Define. >> > * config/i386/constraints.md (Yr): Test TARGET_AVOID_4BYTE_PREFIXES >> > rather than X86_TUNE_AVOID_4BYTE_PREFIXES. >> >> Uh, another brown-paper bag bug... >> >> OK everywhere. > > I fear it might be too dangerous for -mavx512* for the branches; I went > through all the Yr uses on the trunk, but not on the branches. > Would you be ok with using > "TARGET_SSE ? (TARGET_AVOID_4BYTE_PREFIXES ? NO_REX_SSE_REGS : SSE_REGS) : > NO_REGS" > on the branches instead? > Or I guess we could use it on the trunk too, it should make no difference > there > (because on the trunk it is only used when !TARGET_AVX). > Or maybe even > "TARGET_SSE ? ((TARGET_AVOID_4BYTE_PREFIXES && !TARGET_AVX) ? NO_REX_SSE_REGS > : SSE_REGS) : NO_REGS" > (again, should make zero difference on the trunk, but might be better for > the branches).
Indeed, let's play safe and go with the later version on branches. Please also add a small comment, to avoid head-scratching in the future. Uros.