Hi : Our processor has an errata that the direct fpu load cannot work right, so I have to substitute instruction sequence "load_into_gpr ; move_gpr_into_fpr" for direct fpload insn. Currently I thought of two potential methods as following:
method 1: step1 : keep a scratch register when expanding fpload; step2 : split insn fpload into "load_into_gpr ; move_gpr_into_fpr" sequence by using the reserved scratch register; method 2: generate "load_into_gpr ; move_gpr_into_fpr" when expanding directly. I have only tried the first method, which end up with the errro "insn does not satisfy its constraints". after tracing cc1, found that the problematic insn was generated by reloading, which trying to spill float register into memory, which itself using direct fpload. here is the question : Is it possible to replace all direct fpload with "load_into_gpr ; move_gpr_into_fpr" sequence. I doubt it since the reload pass might generate direct fpload insn for spilling fpu register. BTW, I prefer to do the replacement in gcc, rather than assembler, since it might produce lots of pipeline stalls. So, any advice? Thank you all. -- Best Regards.