mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
R600: Add IsExport bit to TableGen instruction definitions
Tested-by: Aaron Watry <awatry@gmail.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188516 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e560d526a1
commit
e7ac2ed1c2
@ -373,15 +373,6 @@ public:
|
|||||||
case AMDGPU::CF_ALU:
|
case AMDGPU::CF_ALU:
|
||||||
I = MI;
|
I = MI;
|
||||||
AluClauses.push_back(MakeALUClause(MBB, I));
|
AluClauses.push_back(MakeALUClause(MBB, I));
|
||||||
case AMDGPU::EG_ExportBuf:
|
|
||||||
case AMDGPU::EG_ExportSwz:
|
|
||||||
case AMDGPU::R600_ExportBuf:
|
|
||||||
case AMDGPU::R600_ExportSwz:
|
|
||||||
case AMDGPU::RAT_WRITE_CACHELESS_32_eg:
|
|
||||||
case AMDGPU::RAT_WRITE_CACHELESS_64_eg:
|
|
||||||
case AMDGPU::RAT_WRITE_CACHELESS_128_eg:
|
|
||||||
case AMDGPU::RAT_STORE_DWORD32:
|
|
||||||
case AMDGPU::RAT_STORE_DWORD64:
|
|
||||||
DEBUG(dbgs() << CfCount << ":"; MI->dump(););
|
DEBUG(dbgs() << CfCount << ":"; MI->dump(););
|
||||||
CfCount++;
|
CfCount++;
|
||||||
break;
|
break;
|
||||||
@ -491,6 +482,10 @@ public:
|
|||||||
EmitALUClause(I, AluClauses[i], CfCount);
|
EmitALUClause(I, AluClauses[i], CfCount);
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
if (TII->isExport(MI->getOpcode())) {
|
||||||
|
DEBUG(dbgs() << CfCount << ":"; MI->dump(););
|
||||||
|
CfCount++;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,8 @@ namespace R600_InstFlag {
|
|||||||
TEX_INST = (1 << 13),
|
TEX_INST = (1 << 13),
|
||||||
ALU_INST = (1 << 14),
|
ALU_INST = (1 << 14),
|
||||||
LDS_1A = (1 << 15),
|
LDS_1A = (1 << 15),
|
||||||
LDS_1A1D = (1 << 16)
|
LDS_1A1D = (1 << 16),
|
||||||
|
IS_EXPORT = (1 << 17)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@ class InstR600 <dag outs, dag ins, string asm, list<dag> pattern,
|
|||||||
bit VTXInst = 0;
|
bit VTXInst = 0;
|
||||||
bit TEXInst = 0;
|
bit TEXInst = 0;
|
||||||
bit ALUInst = 0;
|
bit ALUInst = 0;
|
||||||
|
bit IsExport = 0;
|
||||||
|
|
||||||
let Namespace = "AMDGPU";
|
let Namespace = "AMDGPU";
|
||||||
let OutOperandList = outs;
|
let OutOperandList = outs;
|
||||||
@ -53,6 +54,7 @@ class InstR600 <dag outs, dag ins, string asm, list<dag> pattern,
|
|||||||
let TSFlags{14} = ALUInst;
|
let TSFlags{14} = ALUInst;
|
||||||
let TSFlags{15} = LDS_1A;
|
let TSFlags{15} = LDS_1A;
|
||||||
let TSFlags{16} = LDS_1A1D;
|
let TSFlags{16} = LDS_1A1D;
|
||||||
|
let TSFlags{17} = IsExport;
|
||||||
}
|
}
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
@ -160,6 +160,10 @@ bool R600InstrInfo::isTransOnly(const MachineInstr *MI) const {
|
|||||||
return isTransOnly(MI->getOpcode());
|
return isTransOnly(MI->getOpcode());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool R600InstrInfo::isExport(unsigned Opcode) const {
|
||||||
|
return (get(Opcode).TSFlags & R600_InstFlag::IS_EXPORT);
|
||||||
|
}
|
||||||
|
|
||||||
bool R600InstrInfo::usesVertexCache(unsigned Opcode) const {
|
bool R600InstrInfo::usesVertexCache(unsigned Opcode) const {
|
||||||
return ST.hasVertexCache() && IS_VTX(get(Opcode));
|
return ST.hasVertexCache() && IS_VTX(get(Opcode));
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,7 @@ namespace llvm {
|
|||||||
|
|
||||||
bool isTransOnly(unsigned Opcode) const;
|
bool isTransOnly(unsigned Opcode) const;
|
||||||
bool isTransOnly(const MachineInstr *MI) const;
|
bool isTransOnly(const MachineInstr *MI) const;
|
||||||
|
bool isExport(unsigned Opcode) const;
|
||||||
|
|
||||||
bool usesVertexCache(unsigned Opcode) const;
|
bool usesVertexCache(unsigned Opcode) const;
|
||||||
bool usesVertexCache(const MachineInstr *MI) const;
|
bool usesVertexCache(const MachineInstr *MI) const;
|
||||||
|
@ -278,6 +278,7 @@ class EG_CF_RAT <bits <8> cfinst, bits <6> ratinst, bits<4> ratid, bits<4> mask,
|
|||||||
|
|
||||||
let Inst{31-0} = Word0;
|
let Inst{31-0} = Word0;
|
||||||
let Inst{63-32} = Word1;
|
let Inst{63-32} = Word1;
|
||||||
|
let IsExport = 1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -551,6 +552,7 @@ class ExportSwzInst : InstR600ISA<(
|
|||||||
let elem_size = 3;
|
let elem_size = 3;
|
||||||
let Inst{31-0} = Word0;
|
let Inst{31-0} = Word0;
|
||||||
let Inst{63-32} = Word1;
|
let Inst{63-32} = Word1;
|
||||||
|
let IsExport = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // End usesCustomInserter = 1
|
} // End usesCustomInserter = 1
|
||||||
@ -564,6 +566,7 @@ class ExportBufInst : InstR600ISA<(
|
|||||||
let elem_size = 0;
|
let elem_size = 0;
|
||||||
let Inst{31-0} = Word0;
|
let Inst{31-0} = Word0;
|
||||||
let Inst{63-32} = Word1;
|
let Inst{63-32} = Word1;
|
||||||
|
let IsExport = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
Loading…
Reference in New Issue
Block a user