Skip to content

Commit 5250c84

Browse files
gkluczekigcbot
authored andcommitted
Refactoring cache control
Refactoring cache control input.
1 parent 36cdc89 commit 5250c84

File tree

3 files changed

+17
-12
lines changed

3 files changed

+17
-12
lines changed

IGC/Compiler/CISACodeGen/CISABuilder.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9393,7 +9393,7 @@ namespace IGC
93939393
AtomicOp atomic_op, ResourceDescriptor* resource,
93949394
CVariable* pU, CVariable* pV, CVariable* pR,
93959395
CVariable* pSrc0, CVariable* pSrc1, CVariable* pDst,
9396-
unsigned elemSize, LSC_ADDR_SIZE addr_size)
9396+
unsigned elemSize, LSC_ADDR_SIZE addr_size, LSC_CACHE_OPTS cacheOpts)
93979397
{
93989398
// DG2: SIMD8, PVC: SIMD16, Xe2: SIMD32
93999399
VISA_Exec_Size execSize = visaExecSize(m_encoderState.m_simdSize);
@@ -9414,7 +9414,6 @@ namespace IGC
94149414

94159415
VISA_EMask_Ctrl mask = ConvertMaskToVisaType(m_encoderState.m_mask, m_encoderState.m_noMask);
94169416
VISA_VectorOpnd* globalOffsetOpnd = GetVISALSCSurfaceOpnd(resource->m_surfaceType, resource->m_resource);
9417-
LSC_CACHE_OPTS cache{ LSC_CACHING_DEFAULT, LSC_CACHING_DEFAULT };
94189417
LSC_DATA_SHAPE dataShape{};
94199418
dataShape.size = LSC_GetElementSize(elemSize);
94209419
dataShape.order = LSC_DATA_ORDER_NONTRANSPOSE;
@@ -9425,7 +9424,7 @@ namespace IGC
94259424
predOpnd,
94269425
execSize,
94279426
mask,
9428-
cache,
9427+
cacheOpts,
94299428
getLSCAddrType(resource),
94309429
addr_size,
94319430
dataShape,

IGC/Compiler/CISACodeGen/CISABuilder.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ namespace IGC
333333
AtomicOp subOp, ResourceDescriptor* resource,
334334
CVariable* pU, CVariable* pV, CVariable* pR,
335335
CVariable* pSrc0, CVariable* pSrc1, CVariable* pSrcDst,
336-
unsigned elemSize, LSC_ADDR_SIZE addr_size);
336+
unsigned elemSize, LSC_ADDR_SIZE addr_size, LSC_CACHE_OPTS cacheOpts);
337337

338338

339339
void LSC_Typed2dBlock(

IGC/Compiler/CISACodeGen/EmitVISAPass.cpp

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14685,11 +14685,12 @@ void EmitPass::emitScalarAtomics(llvm::Instruction *pInst,
1468514685
}
1468614686
if (shouldGenerateLSC(pInst))
1468714687
{
14688+
auto cacheOpts = LSC_DEFAULT_CACHING;
1468814689
if (pU || pV || pR)
1468914690
{
1469014691
m_encoder->LSC_TypedAtomic(uniformAtomicOp, &resource, pU, pV, pR,
1469114692
pFinalAtomicSrcVal, nullptr /*src1*/,
14692-
pReturnVal, bitWidth, LSC_ADDR_SIZE_32b);
14693+
pReturnVal, bitWidth, LSC_ADDR_SIZE_32b, cacheOpts);
1469314694
}
1469414695
else
1469514696
{
@@ -14704,7 +14705,7 @@ void EmitPass::emitScalarAtomics(llvm::Instruction *pInst,
1470414705
addrSize,
1470514706
immOffset,
1470614707
immScale,
14707-
LSC_DEFAULT_CACHING);
14708+
cacheOpts);
1470814709
}
1470914710
}
1471014711
else
@@ -14823,6 +14824,7 @@ void EmitPass::emitScalarAtomicLoad(
1482314824
pDstAddr ? pDstAddr->getName() : CName::NONE) : nullptr;
1482414825
if (shouldGenerateLSC(pInst))
1482514826
{
14827+
auto cacheOpts = LSC_DEFAULT_CACHING;
1482614828
if (pU || pV || pR)
1482714829
{
1482814830
m_encoder->LSC_TypedAtomic(
@@ -14835,7 +14837,8 @@ void EmitPass::emitScalarAtomicLoad(
1483514837
nullptr /*src1*/,
1483614838
atomicDst,
1483714839
bitWidth,
14838-
LSC_ADDR_SIZE_32b);
14840+
LSC_ADDR_SIZE_32b,
14841+
cacheOpts);
1483914842
}
1484014843
else
1484114844
{
@@ -14850,7 +14853,7 @@ void EmitPass::emitScalarAtomicLoad(
1485014853
addrSize,
1485114854
immOffset,
1485214855
immScale,
14853-
LSC_DEFAULT_CACHING);
14856+
cacheOpts);
1485414857
}
1485514858
}
1485614859
else
@@ -15213,10 +15216,11 @@ void EmitPass::emitAtomicRaw(llvm::GenIntrinsicInst *pInst, Value *dstAddr,
1521315216
else
1521415217
{
1521515218
if (shouldGenerateLSC()) {
15219+
auto cacheOpts = LSC_DEFAULT_CACHING;
1521615220
m_encoder->LSC_AtomicRaw(atomic_op, pDst,
1521715221
pDstAddr, pSrc0, pSrc1, bitwidth,
1521815222
&resource, addrSize, immOffsetVal,
15219-
immScaleVal, LSC_DEFAULT_CACHING);
15223+
immScaleVal, cacheOpts);
1522015224
}
1522115225
else
1522215226
{
@@ -15263,10 +15267,11 @@ void EmitPass::emitAtomicRaw(llvm::GenIntrinsicInst *pInst, Value *dstAddr,
1526315267
CVariable* flag = nullptr;
1526415268
bool needLoop = ResourceLoopHeader(resource, flag, label);
1526515269
if (shouldGenerateLSC(pInst)) {
15270+
auto cacheOpts = LSC_DEFAULT_CACHING;
1526615271
m_encoder->LSC_AtomicRaw(atomic_op, pDst,
1526715272
pDstAddr, pSrc0, pSrc1, bitwidth,
1526815273
&resource, addrSize, immOffsetVal,
15269-
immScaleVal, LSC_DEFAULT_CACHING);
15274+
immScaleVal, cacheOpts);
1527015275
}
1527115276
else
1527215277
{
@@ -19566,10 +19571,11 @@ void EmitPass::emitLSCAtomicTyped(llvm::GenIntrinsicInst* inst)
1956619571
uint regsPerAddrChannel = 32 * numLanes(instWidth) / 8 / getGRFSize();
1956719572
uint regsPerDataChannel = eltSizeInBits * numLanes(instWidth) / 8 / getGRFSize();
1956819573
LSC_ADDR_SIZE addrSize = LSC_ADDR_SIZE_32b;
19574+
auto cacheOpts = LSC_DEFAULT_CACHING;
1956919575
if (!needsSplit)
1957019576
{
1957119577
m_encoder->SetPredicate(flag);
19572-
m_encoder->LSC_TypedAtomic(atomic_op, &resource, pU, pV, pR, pSrc0, pSrc1, returnsImmValue ? m_destination : nullptr, eltSizeInBits, addrSize);
19578+
m_encoder->LSC_TypedAtomic(atomic_op, &resource, pU, pV, pR, pSrc0, pSrc1, returnsImmValue ? m_destination : nullptr, eltSizeInBits, addrSize, cacheOpts);
1957319579
m_encoder->Push();
1957419580
}
1957519581
else
@@ -19590,7 +19596,7 @@ void EmitPass::emitLSCAtomicTyped(llvm::GenIntrinsicInst* inst)
1959019596
setSIMDSizeMask(m_encoder, m_currShader, i);
1959119597
m_encoder->SetSrcSubVar(0, i * regsPerAddrChannel);
1959219598
m_encoder->SetSrcSubVar(1, i * regsPerDataChannel);
19593-
m_encoder->LSC_TypedAtomic(atomic_op, &resource, pU, pV, pR, pSrc0, pSrc1, tempdst[i], eltSizeInBits, addrSize);
19599+
m_encoder->LSC_TypedAtomic(atomic_op, &resource, pU, pV, pR, pSrc0, pSrc1, tempdst[i], eltSizeInBits, addrSize, cacheOpts);
1959419600
m_encoder->Push();
1959519601
}
1959619602
}

0 commit comments

Comments
 (0)