[PATCH] D50725: [SystemZ] Replace subreg_r with subreg_h

Krzysztof Parzyszek via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 15 06:45:17 PDT 2018


kparzysz added a comment.

This situation is the same as the case of RAX vs EAX on X86.  EAX is the lower half of RAX, but modifying EAX does not preserve the upper bits of RAX.  On the other hand, modifying AX (lower half of EAX) does preserve the upper half of EAX.  Originally, the former behavior was modeled for both cases, i.e. overwriting a lone subregister would be considered as overwriting the entire register.  I added phony registers to X86 (e.g. HAX covering the upper half of EAX) to model the latter behavior for EAX, EBX, etc.

In case of VF128, if a register from that class has only one subregister, then both, the register and the subregister will share the same register unit(s), which means that from the point of view of register aliasing, they are assumed to clobber each other without preserving any parts.


Repository:
  rL LLVM

https://reviews.llvm.org/D50725





More information about the llvm-commits mailing list