[llvm] 123ad72 - [NVPTX] Mark special registers as reserved
Andrew Savonichev via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 3 05:49:13 PDT 2021
Author: Andrew Savonichev
Date: 2021-11-03T15:48:04+03:00
New Revision: 123ad720f1836813e3a74170d62ece6372c4cac2
URL: https://github.com/llvm/llvm-project/commit/123ad720f1836813e3a74170d62ece6372c4cac2
DIFF: https://github.com/llvm/llvm-project/commit/123ad720f1836813e3a74170d62ece6372c4cac2.diff
LOG: [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
Added:
Modified:
llvm/lib/Target/NVPTX/NVPTXRegisterInfo.cpp
llvm/test/CodeGen/NVPTX/envreg.ll
Removed:
################################################################################
diff --git a/llvm/lib/Target/NVPTX/NVPTXRegisterInfo.cpp b/llvm/lib/Target/NVPTX/NVPTXRegisterInfo.cpp
index 98724f37fcec..ec7307265bca 100644
--- a/llvm/lib/Target/NVPTX/NVPTXRegisterInfo.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXRegisterInfo.cpp
@@ -107,6 +107,14 @@ NVPTXRegisterInfo::getCalleeSavedRegs(const MachineFunction *) const {
BitVector NVPTXRegisterInfo::getReservedRegs(const MachineFunction &MF) const {
BitVector Reserved(getNumRegs());
+ for (unsigned Reg = NVPTX::ENVREG0; Reg <= NVPTX::ENVREG31; ++Reg) {
+ markSuperRegs(Reserved, Reg);
+ }
+ markSuperRegs(Reserved, NVPTX::VRFrame32);
+ markSuperRegs(Reserved, NVPTX::VRFrameLocal32);
+ markSuperRegs(Reserved, NVPTX::VRFrame64);
+ markSuperRegs(Reserved, NVPTX::VRFrameLocal64);
+ markSuperRegs(Reserved, NVPTX::VRDepot);
return Reserved;
}
diff --git a/llvm/test/CodeGen/NVPTX/envreg.ll b/llvm/test/CodeGen/NVPTX/envreg.ll
index a341b49ecdf3..8ab5816e68ed 100644
--- a/llvm/test/CodeGen/NVPTX/envreg.ll
+++ b/llvm/test/CodeGen/NVPTX/envreg.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s
+; RUN: llc < %s -march=nvptx -mcpu=sm_20 -verify-machineinstrs | FileCheck %s
declare i32 @llvm.nvvm.read.ptx.sreg.envreg0()
More information about the llvm-commits
mailing list