On Sat, 12 Mar 2022, Xi Ruoyao via Gcc-patches wrote: > I'm now thinking: is there always at least one *GPR* which need to be > cleared? If it's true, let's say GPR $12, and fcc0 & fcc2 needs to be > cleared, we can use something like: > > cfc1 $12, $25 > andi $25, 5 > ctc1 $12, $25 > move $12, $0
There's always $1 ($at) available and we're in a function's epilogue, so there should be plenty of dead temporaries available as well. For legacy ISAs you'd need to use the FCSR instead ($31) and two temporaries would be required as the condition code bits are located in the upper half. FWIW, Maciej