mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
[AMDGPU] Set more flags on Real instructions
This does not affect codegen, which only tests these flags on Pseudo instructions, but might help llvm-mca which has to work with Real instructions. In particular setting LGKM_CNT on DS instructions helps with the problem identified in D104149. Differential Revision: https://reviews.llvm.org/D104293
This commit is contained in:
parent
965d5fb99e
commit
88474bed70
@ -110,6 +110,10 @@ class MTBUF_Real <MTBUF_Pseudo ps> :
|
||||
let isPseudo = 0;
|
||||
let isCodeGenOnly = 0;
|
||||
|
||||
let VM_CNT = 1;
|
||||
let EXP_CNT = 1;
|
||||
let MTBUF = 1;
|
||||
|
||||
// copy relevant pseudo op flags
|
||||
let UseNamedOperandTable = ps.UseNamedOperandTable;
|
||||
let SubtargetPredicate = ps.SubtargetPredicate;
|
||||
@ -341,6 +345,10 @@ class MUBUF_Real <MUBUF_Pseudo ps> :
|
||||
let isPseudo = 0;
|
||||
let isCodeGenOnly = 0;
|
||||
|
||||
let VM_CNT = 1;
|
||||
let EXP_CNT = 1;
|
||||
let MUBUF = 1;
|
||||
|
||||
// copy relevant pseudo op flags
|
||||
let SubtargetPredicate = ps.SubtargetPredicate;
|
||||
let AsmMatchConverter = ps.AsmMatchConverter;
|
||||
|
@ -58,6 +58,7 @@ class DS_Real <DS_Pseudo ds> :
|
||||
|
||||
let isPseudo = 0;
|
||||
let isCodeGenOnly = 0;
|
||||
let LGKM_CNT = 1;
|
||||
let DS = 1;
|
||||
let UseNamedOperandTable = 1;
|
||||
|
||||
|
@ -81,6 +81,8 @@ class FLAT_Real <bits<7> op, FLAT_Pseudo ps> :
|
||||
let isPseudo = 0;
|
||||
let isCodeGenOnly = 0;
|
||||
|
||||
let FLAT = 1;
|
||||
|
||||
// copy relevant pseudo op flags
|
||||
let SubtargetPredicate = ps.SubtargetPredicate;
|
||||
let AsmMatchConverter = ps.AsmMatchConverter;
|
||||
@ -88,6 +90,8 @@ class FLAT_Real <bits<7> op, FLAT_Pseudo ps> :
|
||||
let TSFlags = ps.TSFlags;
|
||||
let UseNamedOperandTable = ps.UseNamedOperandTable;
|
||||
let SchedRW = ps.SchedRW;
|
||||
let VM_CNT = ps.VM_CNT;
|
||||
let LGKM_CNT = ps.LGKM_CNT;
|
||||
|
||||
// encoding fields
|
||||
bits<8> vaddr;
|
||||
|
@ -57,11 +57,15 @@ class SM_Real <SM_Pseudo ps>
|
||||
Instruction Opcode = !cast<Instruction>(NAME);
|
||||
|
||||
// copy relevant pseudo op flags
|
||||
let LGKM_CNT = ps.LGKM_CNT;
|
||||
let SMRD = ps.SMRD;
|
||||
let mayStore = ps.mayStore;
|
||||
let mayLoad = ps.mayLoad;
|
||||
let hasSideEffects = ps.hasSideEffects;
|
||||
let UseNamedOperandTable = ps.UseNamedOperandTable;
|
||||
let SchedRW = ps.SchedRW;
|
||||
let SubtargetPredicate = ps.SubtargetPredicate;
|
||||
let AsmMatchConverter = ps.AsmMatchConverter;
|
||||
let UseNamedOperandTable = ps.UseNamedOperandTable;
|
||||
let SMRD = ps.SMRD;
|
||||
let SchedRW = ps.SchedRW;
|
||||
|
||||
let TSFlags = ps.TSFlags;
|
||||
|
||||
@ -700,12 +704,6 @@ class SMRD_Real_Load_IMM_ci <bits<5> op, SM_Load_Pseudo ps> :
|
||||
let DecoderNamespace = "GFX7";
|
||||
let InOperandList = (ins ps.BaseClass:$sbase, smrd_literal_offset:$offset, CPol:$cpol);
|
||||
|
||||
let LGKM_CNT = ps.LGKM_CNT;
|
||||
let mayLoad = ps.mayLoad;
|
||||
let mayStore = ps.mayStore;
|
||||
let hasSideEffects = ps.hasSideEffects;
|
||||
let SchedRW = ps.SchedRW;
|
||||
|
||||
let Inst{7-0} = 0xff;
|
||||
let Inst{8} = 0;
|
||||
let Inst{14-9} = sbase{6-1};
|
||||
|
Loading…
Reference in New Issue
Block a user