diff --git a/llvm/lib/Target/AMDGPU/BUFInstructions.td b/llvm/lib/Target/AMDGPU/BUFInstructions.td --- a/llvm/lib/Target/AMDGPU/BUFInstructions.td +++ b/llvm/lib/Target/AMDGPU/BUFInstructions.td @@ -360,6 +360,8 @@ let mayStore = ps.mayStore; let IsAtomicRet = ps.IsAtomicRet; let IsAtomicNoRet = ps.IsAtomicNoRet; + let VALU = ps.VALU; + let LGKM_CNT = ps.LGKM_CNT; bits<12> offset; bits<5> cpol; @@ -504,6 +506,7 @@ let AsmMatchConverter = !if(isLds, "cvtMubufLds", "cvtMubuf"); let Constraints = !if(HasTiedDest, "$vdata = $vdata_in", ""); + let LGKM_CNT = isLds; let mayLoad = 1; let mayStore = 0; let maybeAtomic = 1; @@ -511,6 +514,7 @@ let has_tfe = !not(isLds); let lds = isLds; let elements = getMUBUFElements.ret; + let VALU = isLds; } class MUBUF_Offset_Load_Pat : Pat < @@ -615,6 +619,7 @@ (outs), (ins SReg_128:$srsrc, SCSrc_b32:$soffset, offset:$offset, CPol:$cpol, SWZ:$swz), " $srsrc, $soffset$offset lds$cpol$swz"> { + let LGKM_CNT = 1; let mayLoad = 0; let mayStore = 1; let maybeAtomic = 1; @@ -623,6 +628,7 @@ let has_vaddr = 0; let has_tfe = 0; let lds = 1; + let VALU = 1; let Uses = [EXEC, M0]; let AsmMatchConverter = "cvtMubufLds"; diff --git a/llvm/lib/Target/AMDGPU/FLATInstructions.td b/llvm/lib/Target/AMDGPU/FLATInstructions.td --- a/llvm/lib/Target/AMDGPU/FLATInstructions.td +++ b/llvm/lib/Target/AMDGPU/FLATInstructions.td @@ -99,6 +99,7 @@ let IsAtomicNoRet = ps.IsAtomicNoRet; let VM_CNT = ps.VM_CNT; let LGKM_CNT = ps.LGKM_CNT; + let VALU = ps.VALU; // encoding fields bits<8> vaddr; @@ -258,6 +259,7 @@ let mayStore = 1; let has_saddr = 1; let enabled_saddr = EnableSaddr; + let VALU = 1; let PseudoInstr = opName#!if(EnableSaddr, "_SADDR", ""); let Uses = [M0, EXEC]; let SchedRW = [WriteVMEM, WriteLDS]; @@ -418,6 +420,7 @@ let has_vaddr = EnableVaddr; let has_sve = EnableSVE; let sve = EnableVaddr; + let VALU = 1; let PseudoInstr = opName#!if(EnableSVE, "_SVS", !if(EnableSaddr, "_SADDR", !if(EnableVaddr, "", "_ST"))); let Uses = [M0, EXEC]; let SchedRW = [WriteVMEM, WriteLDS];