On 3/31/25 23:48, Heinrich Schuchardt wrote:
> On 3/30/25 01:49, Vineet Gupta wrote:
>> changes since v2
>>   - dump log sanfu
>>
>> ---
>> vsetvl phase4 uses LCM guided info to insert VSETVL insns.
>> It has an additional loop to insert missing vsetvls on certain edges.
>> Currently it asserts/aborts on encountering EDGE_ABNORMAL.
>> When enabling go frontend with V enabled, libgo build hits the assert.
>>
>> It seems to be safe to just skip the abnormal edge.
>
> Hello Vineet,
>
> Is there a test case where only following an abnormal edge between code 
> blocks would require to call VSETVL?
>
> In the sketched code below following the exception would require VSETVL 
> to be called while the edge from the try block to the finally block 
> would not require this.
>
> try {
>       for (..) {
>               uint16_t vectorizable math
>               if (condition)
>                       throw exception
>               uint16_t vectorizable math
>       }
>       for (..) {
>               uint8_t vectorizable math
>       }
> } catch exception {
> } finally
>       for (..) {
>               uint8_t vectorizable math
>       }
> }

Yeah we are going to run testsuite with -fnon-call-exceptions to find such 
cases.

But I'd argue, there is no need to optimize vsetvl for such esoteric cases (vs.
code complexity trade-off).
After all we'd just endup with an extra VSETVL in the finally block.

Thx,
-Vineet

Reply via email to