Use 'amxpreserve' attribute to indicate that the specified function has no
caller-saved AMX registers. Compiler doesn't save and restore any
AMX register across function call. It is user's responsibility that
ensure there is no AMX register clobber in the function with 'amxpreserve'
attribute.
Like 'no_caller_saved_registers', 'amxpreserve' attribute is not a
calling convention. In fact, it only overrides the decision of which
AMX registers should be saved by the caller.
For example:
.. code-block:: c
__attribute__ ((amxpreserve ))
void f () {
...
}
void bar () {
...
f();
...
}
In this case compiler doesn't save and restore AMX registers across the
call of f().
This patch append the AMX register mask to the static register mask of
specific calling convention in DAG ISel. For fast ISel, it just return
false so that it fallback to DAG ISel.Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo