On Tue, Nov 13, 2018 at 01:35:42PM +1030, Alan Modra wrote: > This catches a few places where move insn patterns don't slightly > disparage CTR, LR and VRSAVE regs. Also fixes the doc for the rs6000 > h constraint, and removes an r->cl alternative covered by r->h. > > Segher okayed a patch adding "*" like this patch a long time ago. > Somehow I never committed it. This one does a few more things as > well, but I think it's sufficiently obvious to commit as such. > Bootstrapped etc. powerpc64le-linux and committed rev 266044.
Thanks. I'd like to move to "cl" instead of "h" though :-) vrsave is not an allocatable register (it's a fixed register). We do not have to handle it in the general mov patterns at all, just needs a separate pattern just for this. > (define_insn "*movcc_internal1" > [(set (match_operand:CC 0 "nonimmediate_operand" > - "=y,x,?y,y,r,r,r,r,r,*c*l,r,m") > + "=y,x,?y,y,r,r,r,r, r,*c*l,r,m") > (match_operand:CC 1 "general_operand" > - " y,r, r,O,x,y,r,I,h, r,m,r"))] > + " y,r, r,O,x,y,r,I,*h, r,m,r"))] Here you see that vrsave as dest already is not supported (and doesn't have to be, it is never generated). Ideally "h" does not exist anymore, and "c" and "l" are mentioned nowhere in the normal mov patterns. Segher