[Hexagon] Fix vector spill expansion to use proper alignment
authorKrzysztof Parzyszek <kparzysz@quicinc.com>
Mon, 11 Nov 2019 15:05:21 +0000 (09:05 -0600)
committerKrzysztof Parzyszek <kparzysz@quicinc.com>
Tue, 12 Nov 2019 15:43:21 +0000 (09:43 -0600)
commit592dd459242946593920911936aea47461e0faaa
tree2350a8a5a134143868c15618709a7db377b1ca1a
parente3eb10c5419d89171bc97ca21aba7c381827c45e
[Hexagon] Fix vector spill expansion to use proper alignment

1. Add pseudos PS_vloadrv_ai and PS_vstorerv_ai: those are now used
   for single vector registers in loadRegFromStackSlot (and store...).
2. Remove pseudos PS_vloadrwu_ai and PS_vstorerwu_ai. The alignment is
   now checked when expanding spill pseudos (both in frame lowering
   and in expand-post-ra-pseudos), and a proper instruction is generated.
3. Update MachineMemOperands when dealigning vector spill slots.
4. Return vector predicate registers in getCallerSavedRegs.
llvm/lib/Target/Hexagon/HexagonFrameLowering.cpp
llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
llvm/lib/Target/Hexagon/HexagonPseudo.td
llvm/lib/Target/Hexagon/HexagonRegisterInfo.cpp
llvm/test/CodeGen/Hexagon/spill-vector-alignment.mir [new file with mode: 0644]
llvm/test/CodeGen/Hexagon/v6-unaligned-spill.ll