Я бы хотел пропатчить описание машины gcc sparc, чтобы регистр назначения операции fsqrts FPU sqareroot сохранялся в памяти после каждого fsqrts.
следующим образом:
fsqrts %f2,%f4
st %f4, -4[%fp] <= add this after every fsqrts where -4[%fp] is
a slot allocated on the stack for each fsqrts insn
Часть sparc.md, которая определяет шаблон fsqrts:
(define_insn "sqrtsf2"
[(set (match_operand:SF 0 "register_operand" "=f")
(sqrt:SF (match_operand:SF 1 "register_operand" "f")))]
"TARGET_FPU"
"fsqrts\t%1, %0"
[(set_attr "type" "fpsqrts")])
Я подумал, что могу добавить туда "st %f4, -4[%fp]
".Но теперь мой вопрос:
- Где / когда / как я могу выделить слот для стекового фрейма, чтобы сохранить регистр fpu назначения (смещение в% fp).
IЯ не очень знаком с представлением RTL и этапами компиляции.Поэтому любая помощь будет оценена.
Возможно, в другой архитектуре уже есть подобная конструкция, которую я мог бы изучить и использовать для своих целей.Если кто-то может указать мне на такую часть описания машины ...