Hello Richard:
On 19/06/24 1:54 pm, Richard Sandiford wrote:
> Ajit Agarwal <[email protected]> writes:
>>> What happens if you leave the assert alone? When does it fire? Is it
>>> still for uses in debug insns? If so, it's the fusion pass's responsibility
>>> to update those, as mentioned above. And it must update them before,
>>> or at the same time as, it deletes the definition.
>>>
>>
>> For debug insn I call reset_debug_use and now I dont see issues
>> with debug insn and issues I see with non debug insn where
>> def is there in old_defs and use has to be removed for the insn
>> that we modify load with OO UNSPEC to generate lxvp.
>
> Can you walk me through it step-by-step? If you leave the assert
> alone, when does it fire? What set of insn_changes are being made
> when the assert fires? (Calling debug on the changes will show this.)
> And what use does the assert fire on? (Again, calling debug on the use
> will show this.)
>
(insn 660 735 739 50 (set (reg:OO 405 [ MEM[(_Float128 *)src_196] ])
(unspec:OO [
(mem:OO (reg/v/f:DI 197 [ base ]) [9 MEM[(_Float128
*)src_196]+0 S16 A128])
] UNSPEC_LXVP)) 2188 {*movoo1}
(nil))
This is definition.
(insn 661 659 662 50 (set (reg:TF 179 [ result$imag ])
(plus:TF (reg:TF 179 [ result$imag ])
(subreg:TF (reg:OO 405 [ MEM[(_Float128 *)src_196] ]) 0))) {addtf3}
This is use.
change has the above definition and the assert fires at the
above use.
> Thanks,
> Richard
>
Thanks & Regards
Ajit
>
>