"juzhe.zh...@rivai.ai" <juzhe.zh...@rivai.ai> writes:
> I think it's reasonable refactor reduction instruction pattern work around 
> this issue.
>
> Going to send a patch to apply this solution.
>
> So drop this patch.  Sorry for bothering Richard S.

It wasn't a bother.

On the patch: as things stand, we try to make the use_info's mode be
at least as big as all the uses in the instruction.  So if we did
want to handle unordered modes for hard registers, I think we would need
to fall back on the register's natural mode instead.  I did something
similar in LRA recently for PR112278 (6e2e0ce6795).

So if in future you would like to change RTL-SSA, a fix along those
lines would be fine with me.

Thanks,
Richard

>
>
>
> juzhe.zh...@rivai.ai
>  
> From: Robin Dapp
> Date: 2023-12-11 17:01
> To: Juzhe-Zhong; gcc-patches
> CC: rdapp.gcc; richard.sandiford
> Subject: Re: [PATCH] RTL-SSA: Fix ICE on record_use of RTL_SSA for RISC-V 
> VSETVL PASS
>> In record_use:
>> 
>>       if (HARD_REGISTER_NUM_P (regno)
>>   && partial_subreg_p (use->mode (), mode))
>> 
>> Assertion failed on partial_subreg_p which is:
>> 
>> inline bool
>> partial_subreg_p (machine_mode outermode, machine_mode innermode)
>> {
>>   /* Modes involved in a subreg must be ordered.  In particular, we must
>>      always know at compile time whether the subreg is paradoxical.  */
>>   poly_int64 outer_prec = GET_MODE_PRECISION (outermode);
>>   poly_int64 inner_prec = GET_MODE_PRECISION (innermode);
>>   gcc_checking_assert (ordered_p (outer_prec, inner_prec));                  
>>    -----> cause ICE.
>>   return maybe_lt (outer_prec, inner_prec);
>> }
>> 
>> RISC-V VSETVL PASS is an advanced lazy vsetvl insertion PASS after RA 
>> (register allocation).
>> 
>> The rootcause is that we have a pattern (reduction instruction) that 
>> includes both VLA (length-agnostic) and VLS (fixed-length) modes.
>  
> Maybe as additional context: The second input (which has a VLA mode here)
> is not used entirely but just its first element.  This serves as initial
> value for the reduction.
>  
> I'm not sure we'd want to model it as subreg here (endianness etc?).
> Could we have a VLS-mode equivalent for the VLA mode that only holds
> one element?
>  
> Regards
> Robin
>  
>  

Reply via email to