mirror of
https://github.com/RPCS3/llvm.git
synced 2025-03-06 01:27:08 +00:00
R600/SI: remove GPR*AlignEncode
It's much easier to specify the encoding with tablegen directly. Signed-off-by: Christian König <christian.koenig@amd.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176344 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
777962fddf
commit
f4632b58c7
@ -33,15 +33,6 @@ public:
|
||||
SmallVectorImpl<MCFixup> &Fixups) const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual unsigned GPR4AlignEncode(const MCInst &MI, unsigned OpNo,
|
||||
SmallVectorImpl<MCFixup> &Fixups) const {
|
||||
return 0;
|
||||
}
|
||||
virtual unsigned GPR2AlignEncode(const MCInst &MI, unsigned OpNo,
|
||||
SmallVectorImpl<MCFixup> &Fixups) const {
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
} // End namespace llvm
|
||||
|
@ -42,9 +42,6 @@ class SIMCCodeEmitter : public AMDGPUMCCodeEmitter {
|
||||
const MCSubtargetInfo &STI;
|
||||
MCContext &Ctx;
|
||||
|
||||
/// \brief Encode a sequence of registers with the correct alignment.
|
||||
unsigned GPRAlign(const MCInst &MI, unsigned OpNo, unsigned shift) const;
|
||||
|
||||
/// \brief Can this operand also contain immediate values?
|
||||
bool isSrcOperand(const MCInstrDesc &Desc, unsigned OpNo) const;
|
||||
|
||||
@ -65,14 +62,6 @@ public:
|
||||
/// \returns the encoding for an MCOperand.
|
||||
virtual uint64_t getMachineOpValue(const MCInst &MI, const MCOperand &MO,
|
||||
SmallVectorImpl<MCFixup> &Fixups) const;
|
||||
|
||||
/// \brief Encoding for when 2 consecutive registers are used
|
||||
virtual unsigned GPR2AlignEncode(const MCInst &MI, unsigned OpNo,
|
||||
SmallVectorImpl<MCFixup> &Fixup) const;
|
||||
|
||||
/// \brief Encoding for when 4 consectuive registers are used
|
||||
virtual unsigned GPR4AlignEncode(const MCInst &MI, unsigned OpNo,
|
||||
SmallVectorImpl<MCFixup> &Fixup) const;
|
||||
};
|
||||
|
||||
} // End anonymous namespace
|
||||
@ -212,24 +201,3 @@ uint64_t SIMCCodeEmitter::getMachineOpValue(const MCInst &MI,
|
||||
return 0;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Custom Operand Encodings
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
unsigned SIMCCodeEmitter::GPRAlign(const MCInst &MI, unsigned OpNo,
|
||||
unsigned shift) const {
|
||||
unsigned regCode = MRI.getEncodingValue(MI.getOperand(OpNo).getReg());
|
||||
return (regCode & 0xff) >> shift;
|
||||
}
|
||||
|
||||
unsigned SIMCCodeEmitter::GPR2AlignEncode(const MCInst &MI,
|
||||
unsigned OpNo ,
|
||||
SmallVectorImpl<MCFixup> &Fixup) const {
|
||||
return GPRAlign(MI, OpNo, 1);
|
||||
}
|
||||
|
||||
unsigned SIMCCodeEmitter::GPR4AlignEncode(const MCInst &MI,
|
||||
unsigned OpNo,
|
||||
SmallVectorImpl<MCFixup> &Fixup) const {
|
||||
return GPRAlign(MI, OpNo, 2);
|
||||
}
|
||||
|
@ -129,12 +129,12 @@ class SMRD <bits<5> op, bits<1> imm, dag outs, dag ins, string asm,
|
||||
list<dag> pattern> : Enc32<outs, ins, asm, pattern> {
|
||||
|
||||
bits<7> SDST;
|
||||
bits<6> SBASE;
|
||||
bits<7> SBASE;
|
||||
bits<8> OFFSET;
|
||||
|
||||
let Inst{7-0} = OFFSET;
|
||||
let Inst{8} = imm;
|
||||
let Inst{14-9} = SBASE;
|
||||
let Inst{14-9} = SBASE{6-1};
|
||||
let Inst{21-15} = SDST;
|
||||
let Inst{26-22} = op;
|
||||
let Inst{31-27} = 0x18; //encoding
|
||||
@ -292,7 +292,7 @@ class MUBUF <bits<7> op, dag outs, dag ins, string asm, list<dag> pattern> :
|
||||
bits<1> ADDR64;
|
||||
bits<1> LDS;
|
||||
bits<8> VADDR;
|
||||
bits<5> SRSRC;
|
||||
bits<7> SRSRC;
|
||||
bits<1> SLC;
|
||||
bits<1> TFE;
|
||||
bits<8> SOFFSET;
|
||||
@ -307,7 +307,7 @@ class MUBUF <bits<7> op, dag outs, dag ins, string asm, list<dag> pattern> :
|
||||
let Inst{31-26} = 0x38; //encoding
|
||||
let Inst{39-32} = VADDR;
|
||||
let Inst{47-40} = VDATA;
|
||||
let Inst{52-48} = SRSRC;
|
||||
let Inst{52-48} = SRSRC{6-2};
|
||||
let Inst{54} = SLC;
|
||||
let Inst{55} = TFE;
|
||||
let Inst{63-56} = SOFFSET;
|
||||
@ -330,7 +330,7 @@ class MTBUF <bits<3> op, dag outs, dag ins, string asm, list<dag> pattern> :
|
||||
bits<4> DFMT;
|
||||
bits<3> NFMT;
|
||||
bits<8> VADDR;
|
||||
bits<5> SRSRC;
|
||||
bits<7> SRSRC;
|
||||
bits<1> SLC;
|
||||
bits<1> TFE;
|
||||
bits<8> SOFFSET;
|
||||
@ -346,7 +346,7 @@ class MTBUF <bits<3> op, dag outs, dag ins, string asm, list<dag> pattern> :
|
||||
let Inst{31-26} = 0x3a; //encoding
|
||||
let Inst{39-32} = VADDR;
|
||||
let Inst{47-40} = VDATA;
|
||||
let Inst{52-48} = SRSRC;
|
||||
let Inst{52-48} = SRSRC{6-2};
|
||||
let Inst{54} = SLC;
|
||||
let Inst{55} = TFE;
|
||||
let Inst{63-56} = SOFFSET;
|
||||
@ -370,8 +370,8 @@ class MIMG <bits<7> op, dag outs, dag ins, string asm, list<dag> pattern> :
|
||||
bits<1> LWE;
|
||||
bits<1> SLC;
|
||||
bits<8> VADDR;
|
||||
bits<5> SRSRC;
|
||||
bits<5> SSAMP;
|
||||
bits<7> SRSRC;
|
||||
bits<7> SSAMP;
|
||||
|
||||
let Inst{11-8} = DMASK;
|
||||
let Inst{12} = UNORM;
|
||||
@ -385,8 +385,8 @@ class MIMG <bits<7> op, dag outs, dag ins, string asm, list<dag> pattern> :
|
||||
let Inst{31-26} = 0x3c;
|
||||
let Inst{39-32} = VADDR;
|
||||
let Inst{47-40} = VDATA;
|
||||
let Inst{52-48} = SRSRC;
|
||||
let Inst{57-53} = SSAMP;
|
||||
let Inst{52-48} = SRSRC{6-2};
|
||||
let Inst{57-53} = SSAMP{6-2};
|
||||
|
||||
let VM_CNT = 1;
|
||||
let EXP_CNT = 1;
|
||||
|
@ -53,16 +53,6 @@ def SIOperand {
|
||||
int VCC = 0x6A;
|
||||
}
|
||||
|
||||
class GPR4Align <RegisterClass rc> : Operand <vAny> {
|
||||
let EncoderMethod = "GPR4AlignEncode";
|
||||
let MIOperandInfo = (ops rc:$reg);
|
||||
}
|
||||
|
||||
class GPR2Align <RegisterClass rc> : Operand <iPTR> {
|
||||
let EncoderMethod = "GPR2AlignEncode";
|
||||
let MIOperandInfo = (ops rc:$reg);
|
||||
}
|
||||
|
||||
include "SIInstrFormats.td"
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
@ -128,13 +118,13 @@ class SOPK_64 <bits<5> op, string opName, list<dag> pattern> : SOPK <
|
||||
multiclass SMRD_Helper <bits<5> op, string asm, RegisterClass dstClass> {
|
||||
def _IMM : SMRD <
|
||||
op, 1, (outs dstClass:$dst),
|
||||
(ins GPR2Align<SReg_64>:$sbase, i32imm:$offset),
|
||||
(ins SReg_64:$sbase, i32imm:$offset),
|
||||
asm#" $dst, $sbase, $offset", []
|
||||
>;
|
||||
|
||||
def _SGPR : SMRD <
|
||||
op, 0, (outs dstClass:$dst),
|
||||
(ins GPR2Align<SReg_64>:$sbase, SReg_32:$soff),
|
||||
(ins SReg_64:$sbase, SReg_32:$soff),
|
||||
asm#" $dst, $sbase, $soff", []
|
||||
>;
|
||||
}
|
||||
@ -276,7 +266,7 @@ class MTBUF_Store_Helper <bits<3> op, string asm, RegisterClass regClass> : MTBU
|
||||
(outs),
|
||||
(ins regClass:$vdata, i16imm:$offset, i1imm:$offen, i1imm:$idxen, i1imm:$glc,
|
||||
i1imm:$addr64, i8imm:$dfmt, i8imm:$nfmt, VReg_32:$vaddr,
|
||||
GPR4Align<SReg_128>:$srsrc, i1imm:$slc, i1imm:$tfe, SSrc_32:$soffset),
|
||||
SReg_128:$srsrc, i1imm:$slc, i1imm:$tfe, SSrc_32:$soffset),
|
||||
asm#" $vdata, $offset, $offen, $idxen, $glc, $addr64, $dfmt,"
|
||||
#" $nfmt, $vaddr, $srsrc, $slc, $tfe, $soffset",
|
||||
[]> {
|
||||
@ -288,7 +278,7 @@ class MUBUF_Load_Helper <bits<7> op, string asm, RegisterClass regClass> : MUBUF
|
||||
op,
|
||||
(outs regClass:$dst),
|
||||
(ins i16imm:$offset, i1imm:$offen, i1imm:$idxen, i1imm:$glc, i1imm:$addr64,
|
||||
i1imm:$lds, VReg_32:$vaddr, GPR4Align<SReg_128>:$srsrc, i1imm:$slc,
|
||||
i1imm:$lds, VReg_32:$vaddr, SReg_128:$srsrc, i1imm:$slc,
|
||||
i1imm:$tfe, SSrc_32:$soffset),
|
||||
asm#" $dst, $offset, $offen, $idxen, $glc, $addr64, "
|
||||
#"$lds, $vaddr, $srsrc, $slc, $tfe, $soffset",
|
||||
@ -301,7 +291,7 @@ class MTBUF_Load_Helper <bits<3> op, string asm, RegisterClass regClass> : MTBUF
|
||||
op,
|
||||
(outs regClass:$dst),
|
||||
(ins i16imm:$offset, i1imm:$offen, i1imm:$idxen, i1imm:$glc, i1imm:$addr64,
|
||||
i8imm:$dfmt, i8imm:$nfmt, VReg_32:$vaddr, GPR4Align<SReg_128>:$srsrc,
|
||||
i8imm:$dfmt, i8imm:$nfmt, VReg_32:$vaddr, SReg_128:$srsrc,
|
||||
i1imm:$slc, i1imm:$tfe, SSrc_32:$soffset),
|
||||
asm#" $dst, $offset, $offen, $idxen, $glc, $addr64, $dfmt,"
|
||||
#" $nfmt, $vaddr, $srsrc, $slc, $tfe, $soffset",
|
||||
@ -315,7 +305,7 @@ class MIMG_Load_Helper <bits<7> op, string asm> : MIMG <
|
||||
(outs VReg_128:$vdata),
|
||||
(ins i32imm:$dmask, i1imm:$unorm, i1imm:$glc, i1imm:$da, i1imm:$r128,
|
||||
i1imm:$tfe, i1imm:$lwe, i1imm:$slc, VReg_32:$vaddr,
|
||||
GPR4Align<SReg_256>:$srsrc, GPR4Align<SReg_128>:$ssamp),
|
||||
SReg_256:$srsrc, SReg_128:$ssamp),
|
||||
asm#" $vdata, $dmask, $unorm, $glc, $da, $r128,"
|
||||
#" $tfe, $lwe, $slc, $vaddr, $srsrc, $ssamp",
|
||||
[]> {
|
||||
|
Loading…
x
Reference in New Issue
Block a user