llvm-project
e2267e9b - [Hexagon] Allocate M and CS registers as a pair (#236522)

Commit
7 days ago
[Hexagon] Allocate M and CS registers as a pair (#236522) M and CS registers are used by circular memory instructions. One of the M0/1 registers is used as an argument and the matching CS0/1 is used implicitly. Currently, the CS registers are not assigned when the corresponding intrinsics are lowered. Currently, CS registers are reserved. Instructions using them are marked to use both CS1 and CS0, which is incorrect. Additionally, CS is marked as a def for PS_load* pseudoinstructions, which is also incorrect. Problems with using undefined CS are not caught in existing code because CS registers are reserved. To pass inputs in both CS and M registers, define a new register class for the M:CS pair and allow it to be allocatable. To support multiple live cs/m pairs, implement their spilling on the stack. Signed-off-by: Alexey Karyakin <akaryaki@qti.qualcomm.com>
Author
Parents
Loading