Skip to content

Commit 58d85cf

Browse files
committed
Add subtarget check before printing used bytes mask pragma
1 parent 0a98962 commit 58d85cf

File tree

3 files changed

+10
-4
lines changed

3 files changed

+10
-4
lines changed

llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXInstPrinter.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include "llvm/Support/ErrorHandling.h"
2525
#include "llvm/Support/FormatVariadic.h"
2626
#include <cctype>
27+
#include "NVPTXSubtarget.h"
2728
using namespace llvm;
2829

2930
#define DEBUG_TYPE "asm-printer"
@@ -396,13 +397,14 @@ void NVPTXInstPrinter::printMemOperand(const MCInst *MI, int OpNum,
396397
}
397398

398399
void NVPTXInstPrinter::printUsedBytesMaskPragma(const MCInst *MI, int OpNum,
399-
raw_ostream &O) {
400+
raw_ostream &O,
401+
const MCSubtargetInfo &STI) {
400402
auto &Op = MI->getOperand(OpNum);
401403
assert(Op.isImm() && "Invalid operand");
402404
uint32_t Imm = (uint32_t)Op.getImm();
403-
if (Imm != UINT32_MAX) {
405+
if (static_cast<const NVPTXSubtarget &>(STI).hasUsedBytesMaskPragma() &&
406+
Imm != UINT32_MAX)
404407
O << ".pragma \"used_bytes_mask " << format_hex(Imm, 1) << "\";\n\t";
405-
}
406408
}
407409

408410
void NVPTXInstPrinter::printRegisterOrSinkSymbol(const MCInst *MI, int OpNum,

llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXInstPrinter.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ class NVPTXInstPrinter : public MCInstPrinter {
4646
StringRef Modifier = {});
4747
void printMemOperand(const MCInst *MI, int OpNum, raw_ostream &O,
4848
StringRef Modifier = {});
49-
void printUsedBytesMaskPragma(const MCInst *MI, int OpNum, raw_ostream &O);
49+
void printUsedBytesMaskPragma(const MCInst *MI, int OpNum, raw_ostream &O,
50+
const MCSubtargetInfo &STI);
5051
void printRegisterOrSinkSymbol(const MCInst *MI, int OpNum, raw_ostream &O);
5152
void printHexu32imm(const MCInst *MI, int OpNum, raw_ostream &O);
5253
void printProtoIdent(const MCInst *MI, int OpNum, raw_ostream &O);

llvm/lib/Target/NVPTX/NVPTXSubtarget.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,9 @@ class NVPTXSubtarget : public NVPTXGenSubtargetInfo {
8989
return SmVersion >= 100 && PTXVersion >= 88 &&
9090
AS == NVPTXAS::ADDRESS_SPACE_GLOBAL;
9191
}
92+
bool hasUsedBytesMaskPragma() const {
93+
return SmVersion >= 50 && PTXVersion >= 83;
94+
}
9295
bool hasAtomAddF64() const { return SmVersion >= 60; }
9396
bool hasAtomScope() const { return SmVersion >= 60; }
9497
bool hasAtomBitwise64() const { return SmVersion >= 32; }

0 commit comments

Comments
 (0)