Hi Segher,

Thanks for the comments.

on 2022/6/24 03:06, Segher Boessenkool wrote:
> Hi!
> 
> On Wed, May 18, 2022 at 10:07:48PM +0800, Kewen.Lin wrote:
>> As PR103353 shows, we may want to continue to expand a MMA built-in
>> function like a normal function, even if we have already emitted
>> error messages about some missing required conditions.  As shown in
>> that PR, without one explicit mov optab on OOmode provided, it would
>> call emit_move_insn recursively.
> 
> First off: lxvp is a VSX insn, not an MMA insn.  So please don't call it
> that -- this confusion is what presumably caused the problem here, so it
> would be good to root it out :-)
> 

I guess the "it" in "don't call it call" is for "MMA built-in function"?
It comes from the current code:

;   mma      Needs special handling for MMA
;   quad     MMA instruction using a register quad as an input operand
;   pair     MMA instruction using a register pair as an input operand

  v256 __builtin_vsx_lxvp (unsigned long, const v256 *);
    LXVP nothing {mma}

  void __builtin_vsx_stxvp (v256, unsigned long, const v256 *);
    STXVP nothing {mma,pair}

...

>> +  /* Opaque modes are only expected to be available when MMA is supported,
> 
> Why do people expect that?  It is completely wrong.  The name "opaque"
> itself already says this is not just for MMA, but perhaps more
> importantly, it is a basic VSX insn, doesn't touch any MMA resources,
> and is useful in other contexts as well.
> 

... The above statements are also based on current code, for now, the
related things like built-in functions, mov optab, hard_regno_ok etc.
for these two modes are guarded by TARGET_MMA.

I think I get your points here, you want to separate these opaque
modes from MMA since the underlying lxvp/stxvp are not MMA specific,
so those related things (bifs, mov optabs etc.) are not necessarily
guarded under MMA.

> So this needs some bigger surgery.

Yes, Peter may have more comments on this.

BR,
Kewen

Reply via email to