Skip to content

Commit 124bcf8

Browse files
committed
code updates
1 parent ec7a509 commit 124bcf8

File tree

5 files changed

+12
-35
lines changed

5 files changed

+12
-35
lines changed

llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -223,10 +223,6 @@ unsigned NVPTXAsmPrinter::encodeVirtualRegister(unsigned Reg) {
223223
Ret = (3 << 28);
224224
} else if (RC == &NVPTX::Int64RegsRegClass) {
225225
Ret = (4 << 28);
226-
} else if (RC == &NVPTX::Float32RegsRegClass) {
227-
Ret = (5 << 28);
228-
} else if (RC == &NVPTX::Float64RegsRegClass) {
229-
Ret = (6 << 28);
230226
} else if (RC == &NVPTX::Int128RegsRegClass) {
231227
Ret = (7 << 28);
232228
} else {

llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -596,8 +596,8 @@ NVPTXTargetLowering::NVPTXTargetLowering(const NVPTXTargetMachine &TM,
596596
addRegisterClass(MVT::v4i8, &NVPTX::Int32RegsRegClass);
597597
addRegisterClass(MVT::i32, &NVPTX::Int32RegsRegClass);
598598
addRegisterClass(MVT::i64, &NVPTX::Int64RegsRegClass);
599-
addRegisterClass(MVT::f32, &NVPTX::Float32RegsRegClass);
600-
addRegisterClass(MVT::f64, &NVPTX::Float64RegsRegClass);
599+
addRegisterClass(MVT::f32, &NVPTX::Int32RegsRegClass);
600+
addRegisterClass(MVT::f64, &NVPTX::Int64RegsRegClass);
601601
addRegisterClass(MVT::f16, &NVPTX::Int16RegsRegClass);
602602
addRegisterClass(MVT::v2f16, &NVPTX::Int32RegsRegClass);
603603
addRegisterClass(MVT::bf16, &NVPTX::Int16RegsRegClass);
@@ -4931,24 +4931,21 @@ NVPTXTargetLowering::getRegForInlineAsmConstraint(const TargetRegisterInfo *TRI,
49314931
case 'b':
49324932
return std::make_pair(0U, &NVPTX::Int1RegsRegClass);
49334933
case 'c':
4934-
return std::make_pair(0U, &NVPTX::Int16RegsRegClass);
49354934
case 'h':
49364935
return std::make_pair(0U, &NVPTX::Int16RegsRegClass);
49374936
case 'r':
4937+
case 'f':
49384938
return std::make_pair(0U, &NVPTX::Int32RegsRegClass);
49394939
case 'l':
49404940
case 'N':
4941+
case 'd':
49414942
return std::make_pair(0U, &NVPTX::Int64RegsRegClass);
49424943
case 'q': {
49434944
if (STI.getSmVersion() < 70)
49444945
report_fatal_error("Inline asm with 128 bit operands is only "
49454946
"supported for sm_70 and higher!");
49464947
return std::make_pair(0U, &NVPTX::Int128RegsRegClass);
49474948
}
4948-
case 'f':
4949-
return std::make_pair(0U, &NVPTX::Float32RegsRegClass);
4950-
case 'd':
4951-
return std::make_pair(0U, &NVPTX::Float64RegsRegClass);
49524949
}
49534950
}
49544951
return TargetLowering::getRegForInlineAsmConstraint(TRI, Constraint, VT);

llvm/lib/Target/NVPTX/NVPTXInstrInfo.cpp

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,19 +44,11 @@ void NVPTXInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
4444
} else if (DestRC == &NVPTX::Int16RegsRegClass) {
4545
Op = NVPTX::MOV16r;
4646
} else if (DestRC == &NVPTX::Int32RegsRegClass) {
47-
Op = (SrcRC == &NVPTX::Int32RegsRegClass ? NVPTX::IMOV32r
48-
: NVPTX::BITCONVERT_32_F2I);
47+
Op = NVPTX::IMOV32r;
4948
} else if (DestRC == &NVPTX::Int64RegsRegClass) {
50-
Op = (SrcRC == &NVPTX::Int64RegsRegClass ? NVPTX::IMOV64r
51-
: NVPTX::BITCONVERT_64_F2I);
49+
Op = NVPTX::IMOV64r;
5250
} else if (DestRC == &NVPTX::Int128RegsRegClass) {
5351
Op = NVPTX::IMOV128r;
54-
} else if (DestRC == &NVPTX::Float32RegsRegClass) {
55-
Op = (SrcRC == &NVPTX::Float32RegsRegClass ? NVPTX::FMOV32r
56-
: NVPTX::BITCONVERT_32_I2F);
57-
} else if (DestRC == &NVPTX::Float64RegsRegClass) {
58-
Op = (SrcRC == &NVPTX::Float64RegsRegClass ? NVPTX::FMOV64r
59-
: NVPTX::BITCONVERT_64_I2F);
6052
} else {
6153
llvm_unreachable("Bad register copy");
6254
}

llvm/lib/Target/NVPTX/NVPTXRegisterInfo.cpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,6 @@ using namespace llvm;
2525

2626
namespace llvm {
2727
StringRef getNVPTXRegClassName(TargetRegisterClass const *RC) {
28-
if (RC == &NVPTX::Float32RegsRegClass)
29-
return ".b32";
30-
if (RC == &NVPTX::Float64RegsRegClass)
31-
return ".b64";
3228
if (RC == &NVPTX::Int128RegsRegClass)
3329
return ".b128";
3430
if (RC == &NVPTX::Int64RegsRegClass)
@@ -63,10 +59,6 @@ StringRef getNVPTXRegClassName(TargetRegisterClass const *RC) {
6359
}
6460

6561
StringRef getNVPTXRegClassStr(TargetRegisterClass const *RC) {
66-
if (RC == &NVPTX::Float32RegsRegClass)
67-
return "%f";
68-
if (RC == &NVPTX::Float64RegsRegClass)
69-
return "%fd";
7062
if (RC == &NVPTX::Int128RegsRegClass)
7163
return "%rq";
7264
if (RC == &NVPTX::Int64RegsRegClass)

llvm/lib/Target/NVPTX/NVPTXRegisterInfo.td

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@ foreach i = 0...4 in {
4040
def RQ#i : NVPTXReg<"%rq"#i>; // 128-bit
4141
def H#i : NVPTXReg<"%h"#i>; // 16-bit float
4242
def HH#i : NVPTXReg<"%hh"#i>; // 2x16-bit float
43-
def F#i : NVPTXReg<"%f"#i>; // 32-bit float
44-
def FL#i : NVPTXReg<"%fd"#i>; // 64-bit float
4543

4644
// Arguments
4745
def ia#i : NVPTXReg<"%ia"#i>;
@@ -59,14 +57,13 @@ foreach i = 0...31 in {
5957
//===----------------------------------------------------------------------===//
6058
def Int1Regs : NVPTXRegClass<[i1], 8, (add (sequence "P%u", 0, 4))>;
6159
def Int16Regs : NVPTXRegClass<[i16, f16, bf16], 16, (add (sequence "RS%u", 0, 4))>;
62-
def Int32Regs : NVPTXRegClass<[i32, v2f16, v2bf16, v2i16, v4i8], 32,
60+
def Int32Regs : NVPTXRegClass<[i32, v2f16, v2bf16, v2i16, v4i8, f32], 32,
6361
(add (sequence "R%u", 0, 4),
6462
VRFrame32, VRFrameLocal32)>;
65-
def Int64Regs : NVPTXRegClass<[i64], 64, (add (sequence "RL%u", 0, 4), VRFrame64, VRFrameLocal64)>;
63+
def Int64Regs : NVPTXRegClass<[i64, f64], 64, (add (sequence "RL%u", 0, 4), VRFrame64, VRFrameLocal64)>;
6664
// 128-bit regs are not defined as general regs in NVPTX. They are used for inlineASM only.
6765
def Int128Regs : NVPTXRegClass<[i128], 128, (add (sequence "RQ%u", 0, 4))>;
68-
def Float32Regs : NVPTXRegClass<[f32], 32, (add (sequence "F%u", 0, 4))>;
69-
def Float64Regs : NVPTXRegClass<[f64], 64, (add (sequence "FL%u", 0, 4))>;
66+
7067
def Int32ArgRegs : NVPTXRegClass<[i32], 32, (add (sequence "ia%u", 0, 4))>;
7168
def Int64ArgRegs : NVPTXRegClass<[i64], 64, (add (sequence "la%u", 0, 4))>;
7269
def Float32ArgRegs : NVPTXRegClass<[f32], 32, (add (sequence "fa%u", 0, 4))>;
@@ -75,3 +72,6 @@ def Float64ArgRegs : NVPTXRegClass<[f64], 64, (add (sequence "da%u", 0, 4))>;
7572
// Read NVPTXRegisterInfo.cpp to see how VRFrame and VRDepot are used.
7673
def SpecialRegs : NVPTXRegClass<[i32], 32, (add VRFrame32, VRFrameLocal32, VRDepot,
7774
(sequence "ENVREG%u", 0, 31))>;
75+
76+
defvar Float32Regs = Int32Regs;
77+
defvar Float64Regs = Int64Regs;

0 commit comments

Comments
 (0)