[NVPTX] Mark special registers as reserved
authorAndrew Savonichev <andrew.savonichev@gmail.com>
Wed, 3 Nov 2021 12:48:04 +0000 (15:48 +0300)
committerAndrew Savonichev <andrew.savonichev@gmail.com>
Wed, 3 Nov 2021 12:48:04 +0000 (15:48 +0300)
commit123ad720f1836813e3a74170d62ece6372c4cac2
tree437e030de79c1184cb8ff2ba86fecd6a54f619f2
parent1427742750ed1fcd2ead639c4ec5178fc34c9257
[NVPTX] Mark special registers as reserved

A reserved register:
 - is not allocatable
 - is considered always live
 - is ignored by liveness tracking

NVPTX special registers match the criteria, and marking them as
reserved helps to avoid machine verifier error:

    *** Bad machine code: Using an undefined physical register ***
    - function:    foo
    - basic block: %bb.0  (0x557bb178b708)
    - instruction: %0:int32regs = MOV_SPECIAL $envreg0
    - operand 1:   $envreg0

Differential Revision: https://reviews.llvm.org/D113008
llvm/lib/Target/NVPTX/NVPTXRegisterInfo.cpp
llvm/test/CodeGen/NVPTX/envreg.ll