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