On 11/17/20 5:01 PM, Segher Boessenkool wrote: > On Tue, Nov 17, 2020 at 12:41:58PM -0600, Peter Bergner wrote: >>> +;; Return 1 if this operand is valid for an MMA disassemble insn. >>> +(define_predicate "mma_disassemble_output_operand" >>> + (match_code "reg,subreg,mem") >>> +{ >>> + if (REG_P (op) && !vsx_register_operand (op, mode)) >>> + return false; >>> + return true; >>> +}) >> >> Do we really want to accept subregs here? If so, why are they not also >> required >> to be vsx_register_operand()? > > That *does* allow subregs!
We never call vsx_register_operand() with a subreg, because the REG_P() guards it. That means we drop down into the "return true;" for all subregs and mems, regardless of whether the subreg is of a vsx register or not. So my question is, if we don't allow a reg of a non-vsx register, why should we allow subregs of non-vsx registers? Peter