Skip to content

Commit 4c0487b

Browse files
committed
AMDGPU: Remove SCCReg.
These should be handled as a physical register rather than a virtual register class with one member. llvm-svn: 244061
1 parent 1c81432 commit 4c0487b

File tree

5 files changed

+22
-36
lines changed

5 files changed

+22
-36
lines changed

llvm/lib/Target/AMDGPU/SIInstrFormats.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,13 +249,13 @@ class SOP2 <dag outs, dag ins, string asm, list<dag> pattern> :
249249
class SOPC <bits<7> op, dag outs, dag ins, string asm, list<dag> pattern> :
250250
InstSI<outs, ins, asm, pattern>, SOPCe <op> {
251251

252-
let DisableEncoding = "$dst";
253252
let mayLoad = 0;
254253
let mayStore = 0;
255254
let hasSideEffects = 0;
256255
let SALU = 1;
257256
let SOPC = 1;
258257
let isCodeGenOnly = 0;
258+
let Defs = [SCC];
259259

260260
let UseNamedOperandTable = 1;
261261
}

llvm/lib/Target/AMDGPU/SIInstrInfo.td

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,7 @@ def GDS01MatchClass : GDSBaseMatchClass <"parseDSOff01OptionalOps">;
393393
class GLCBaseMatchClass <string parser> : AsmOperandClass {
394394
let Name = "GLC"#parser;
395395
let PredicateMethod = "isImm";
396-
let ParserMethod = parser;
396+
let ParserMethod = parser;
397397
let RenderMethod = "addImmOperands";
398398
}
399399

@@ -717,19 +717,6 @@ class SOP2_Real_vi<sop2 op, string opName, dag outs, dag ins, string asm> :
717717
let AssemblerPredicates = [isVI];
718718
}
719719

720-
multiclass SOP2_SELECT_32 <sop2 op, string opName, list<dag> pattern> {
721-
def "" : SOP2_Pseudo <opName, (outs SReg_32:$dst),
722-
(ins SSrc_32:$src0, SSrc_32:$src1, SCCReg:$scc), pattern>;
723-
724-
def _si : SOP2_Real_si <op, opName, (outs SReg_32:$dst),
725-
(ins SSrc_32:$src0, SSrc_32:$src1, SCCReg:$scc),
726-
opName#" $dst, $src0, $src1 [$scc]">;
727-
728-
def _vi : SOP2_Real_vi <op, opName, (outs SReg_32:$dst),
729-
(ins SSrc_32:$src0, SSrc_32:$src1, SCCReg:$scc),
730-
opName#" $dst, $src0, $src1 [$scc]">;
731-
}
732-
733720
multiclass SOP2_m <sop2 op, string opName, dag outs, dag ins, string asm,
734721
list<dag> pattern> {
735722

@@ -758,8 +745,10 @@ multiclass SOP2_64_32 <sop2 op, string opName, list<dag> pattern> : SOP2_m <
758745

759746
class SOPC_Helper <bits<7> op, RegisterOperand rc, ValueType vt,
760747
string opName, PatLeaf cond> : SOPC <
761-
op, (outs SCCReg:$dst), (ins rc:$src0, rc:$src1),
762-
opName#" $src0, $src1", []>;
748+
op, (outs), (ins rc:$src0, rc:$src1),
749+
opName#" $src0, $src1", []> {
750+
let Defs = [SCC];
751+
}
763752

764753
class SOPC_32<bits<7> op, string opName, PatLeaf cond = COND_NULL>
765754
: SOPC_Helper<op, SSrc_32, i32, opName, cond>;
@@ -812,15 +801,20 @@ multiclass SOPK_32 <sopk op, string opName, list<dag> pattern> {
812801
}
813802

814803
multiclass SOPK_SCC <sopk op, string opName, list<dag> pattern> {
815-
def "" : SOPK_Pseudo <opName, (outs SCCReg:$dst),
816-
(ins SReg_32:$src0, u16imm:$src1), pattern>;
804+
def "" : SOPK_Pseudo <opName, (outs),
805+
(ins SReg_32:$src0, u16imm:$src1), pattern> {
806+
let Defs = [SCC];
807+
}
817808

818-
let DisableEncoding = "$dst" in {
819-
def _si : SOPK_Real_si <op, opName, (outs SCCReg:$dst),
820-
(ins SReg_32:$sdst, u16imm:$simm16), opName#" $sdst, $simm16">;
821809

822-
def _vi : SOPK_Real_vi <op, opName, (outs SCCReg:$dst),
823-
(ins SReg_32:$sdst, u16imm:$simm16), opName#" $sdst, $simm16">;
810+
def _si : SOPK_Real_si <op, opName, (outs),
811+
(ins SReg_32:$sdst, u16imm:$simm16), opName#" $sdst, $simm16"> {
812+
let Defs = [SCC];
813+
}
814+
815+
def _vi : SOPK_Real_vi <op, opName, (outs),
816+
(ins SReg_32:$sdst, u16imm:$simm16), opName#" $sdst, $simm16"> {
817+
let Defs = [SCC];
824818
}
825819
}
826820

llvm/lib/Target/AMDGPU/SIInstructions.td

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -438,16 +438,16 @@ def S_BRANCH : SOPP <
438438
let isBarrier = 1;
439439
}
440440

441-
let DisableEncoding = "$scc" in {
441+
let Uses = [SCC] in {
442442
def S_CBRANCH_SCC0 : SOPP <
443-
0x00000004, (ins sopp_brtarget:$simm16, SCCReg:$scc),
443+
0x00000004, (ins sopp_brtarget:$simm16),
444444
"s_cbranch_scc0 $simm16"
445445
>;
446446
def S_CBRANCH_SCC1 : SOPP <
447-
0x00000005, (ins sopp_brtarget:$simm16, SCCReg:$scc),
447+
0x00000005, (ins sopp_brtarget:$simm16),
448448
"s_cbranch_scc1 $simm16"
449449
>;
450-
} // End DisableEncoding = "$scc"
450+
} // End Uses = [SCC]
451451

452452
def S_CBRANCH_VCCZ : SOPP <
453453
0x00000006, (ins sopp_brtarget:$simm16, VCCReg:$vcc),

llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -372,8 +372,6 @@ const TargetRegisterClass *SIRegisterInfo::getEquivalentVGPRClass(
372372
const TargetRegisterClass *SRC) const {
373373
if (hasVGPRs(SRC)) {
374374
return SRC;
375-
} else if (SRC == &AMDGPU::SCCRegRegClass) {
376-
return &AMDGPU::VCCRegRegClass;
377375
} else if (getCommonSubClass(SRC, &AMDGPU::SGPR_32RegClass)) {
378376
return &AMDGPU::VGPR_32RegClass;
379377
} else if (getCommonSubClass(SRC, &AMDGPU::SGPR_64RegClass)) {

llvm/lib/Target/AMDGPU/SIRegisterInfo.td

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -182,12 +182,6 @@ class RegImmMatcher<string name> : AsmOperandClass {
182182
let RenderMethod = "addRegOrImmOperands";
183183
}
184184

185-
// Special register classes for predicates and the M0 register
186-
def SCCReg : RegisterClass<"AMDGPU", [i32, i1], 32, (add SCC)> {
187-
let CopyCost = -1; // Theoretically it is possible to read from SCC,
188-
// but it should never be necessary.
189-
}
190-
191185
def VCCReg : RegisterClass<"AMDGPU", [i64, i1], 64, (add VCC)>;
192186
def EXECReg : RegisterClass<"AMDGPU", [i64, i1], 64, (add EXEC)>;
193187

0 commit comments

Comments
 (0)