Skip to content

Commit a728fc7

Browse files
weiyu-chensys_zuul
authored and
sys_zuul
committed
Small refactor to render taget write code generation.
Change-Id: Ib502feeeb2d47f2823524c2916e7d4705b531692
1 parent 7be7e02 commit a728fc7

File tree

3 files changed

+26
-39
lines changed

3 files changed

+26
-39
lines changed

visa/BuildIR.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2567,6 +2567,8 @@ class IR_Builder {
25672567
unsigned int numParms,
25682568
G4_SrcRegRegion ** msgOpnds);
25692569

2570+
2571+
25702572
int translateVISASVMBlockReadInst(
25712573
VISA_Oword_Num numOword,
25722574
bool unaligned,

visa/TranslationInterface.cpp

Lines changed: 17 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -10726,29 +10726,29 @@ void IR_Builder::Copy_SrcRegRegion_To_Payload( G4_Declare* payload, unsigned int
1072610726
G4_SrcRegRegion* srcRgn = createSrcRegRegion( *src );
1072710727
srcRgn->setType( payload->getElemType() );
1072810728
createMov(exec_size, payloadDstRgn, srcRgn, emask, true );
10729-
if (G4_Type_Table[payload->getElemType()].byteSize == 2)
10729+
if (getTypeSize(payload->getElemType()) == 2)
1073010730
{
1073110731
// for half float each source occupies 1 GRF regardless of execution size
1073210732
regOff++;
1073310733
}
1073410734
else
1073510735
{
10736-
regOff += (exec_size/8);
10736+
regOff += exec_size / getNativeExecSize();
1073710737
}
1073810738
}
1073910739

1074010740
unsigned int IR_Builder::getByteOffsetSrcRegion( G4_SrcRegRegion* srcRegion )
1074110741
{
10742-
unsigned int offset = ( srcRegion->getRegOff() * G4_GRF_REG_NBYTES ) + ( srcRegion->getSubRegOff() * G4_Type_Table[srcRegion->getType()].byteSize );
10742+
unsigned int offset = (srcRegion->getRegOff() * G4_GRF_REG_NBYTES) + (srcRegion->getSubRegOff() * G4_Type_Table[srcRegion->getType()].byteSize);
1074310743

10744-
if( srcRegion->getBase() &&
10745-
srcRegion->getBase()->isRegVar() )
10744+
if (srcRegion->getBase() &&
10745+
srcRegion->getBase()->isRegVar())
1074610746
{
1074710747
G4_Declare* dcl = srcRegion->getBase()->asRegVar()->getDeclare();
1074810748

10749-
if( dcl != NULL )
10749+
if (dcl != NULL)
1075010750
{
10751-
while( dcl->getAliasDeclare() != NULL )
10751+
while (dcl->getAliasDeclare() != NULL)
1075210752
{
1075310753
offset += dcl->getAliasOffset();
1075410754
dcl = dcl->getAliasDeclare();
@@ -10759,39 +10759,21 @@ unsigned int IR_Builder::getByteOffsetSrcRegion( G4_SrcRegRegion* srcRegion )
1075910759
return offset;
1076010760
}
1076110761

10762-
bool IR_Builder::checkIfRegionsAreConsecutive( G4_SrcRegRegion* first, G4_SrcRegRegion* second, unsigned int exec_size )
10762+
bool IR_Builder::checkIfRegionsAreConsecutive(G4_SrcRegRegion* first, G4_SrcRegRegion* second, unsigned int exec_size)
1076310763
{
10764-
bool isConsecutive = false;
10765-
10766-
if( first == NULL || second == NULL )
10764+
if (first == NULL || second == NULL)
1076710765
{
10768-
isConsecutive = true;
10769-
}
10770-
else
10771-
{
10772-
G4_Declare* firstDcl = getDeclare(first);
10773-
G4_Declare* secondDcl = getDeclare(second);
10774-
10775-
unsigned int firstOff = getByteOffsetSrcRegion( first );
10776-
unsigned int secondOff = getByteOffsetSrcRegion( second );
10777-
10778-
if( firstDcl == secondDcl )
10779-
{
10780-
if( ( firstOff + ( exec_size * G4_Type_Table[first->getType()].byteSize ) ) == secondOff )
10781-
{
10782-
isConsecutive = true;
10783-
}
10784-
}
10766+
return true;
1078510767
}
1078610768

10787-
return isConsecutive;
10769+
return checkIfRegionsAreConsecutive(first, second, exec_size, first->getType());
1078810770
}
1078910771

10790-
bool IR_Builder::checkIfRegionsAreConsecutive( G4_SrcRegRegion* first, G4_SrcRegRegion* second, unsigned int exec_size, G4_Type type )
10772+
bool IR_Builder::checkIfRegionsAreConsecutive(G4_SrcRegRegion* first, G4_SrcRegRegion* second, unsigned int exec_size, G4_Type type)
1079110773
{
1079210774
bool isConsecutive = false;
1079310775

10794-
if( first == NULL || second == NULL )
10776+
if (first == NULL || second == NULL)
1079510777
{
1079610778
isConsecutive = true;
1079710779
}
@@ -10800,12 +10782,12 @@ bool IR_Builder::checkIfRegionsAreConsecutive( G4_SrcRegRegion* first, G4_SrcReg
1080010782
G4_Declare* firstDcl = getDeclare(first);
1080110783
G4_Declare* secondDcl = getDeclare(second);
1080210784

10803-
unsigned int firstOff = getByteOffsetSrcRegion( first );
10804-
unsigned int secondOff = getByteOffsetSrcRegion( second );
10785+
unsigned int firstOff = getByteOffsetSrcRegion(first);
10786+
unsigned int secondOff = getByteOffsetSrcRegion(second);
1080510787

10806-
if( firstDcl == secondDcl )
10788+
if (firstDcl == secondDcl)
1080710789
{
10808-
if( ( firstOff + ( exec_size * G4_Type_Table[type].byteSize ) ) == secondOff )
10790+
if ((firstOff + (exec_size * G4_Type_Table[type].byteSize)) == secondOff)
1080910791
{
1081010792
isConsecutive = true;
1081110793
}

visa/VISAKernelImpl.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5518,17 +5518,20 @@ int VISAKernelImpl::AppendVISA3dRTWriteCPS(VISA_PredOpnd *pred, VISA_EMask_Ctrl
55185518
G4_SrcRegRegion *cPSCounterOpnd = (cPSCounter) ? cPSCounter->g4opnd->asSrcRegRegion(): NULL;
55195519
G4_SrcRegRegion *sampleIndexOpnd = (cntrls.isSampleIndex) ? sampleIndex->g4opnd->asSrcRegRegion() : NULL;
55205520
G4_Operand *renderTargetIndexOpnd = (cntrls.RTIndexPresent) ? renderTargetIndex->g4opnd : NULL;
5521-
G4_SrcRegRegion *r1HeaderOpnd = NULL;
5521+
G4_SrcRegRegion *r1HeaderOpnd = nullptr;
55225522

55235523
if (r1Header)
55245524
{
55255525
CreateGenRawSrcOperand(r1Header);
55265526
r1HeaderOpnd = r1Header->g4opnd->asSrcRegRegion();
55275527
}
55285528

5529-
G4_Predicate * g4Pred = (pred != NULL)? pred->g4opnd->asPredicate() : NULL;
5530-
status = m_builder->translateVISARTWrite3DInst(g4Pred, executionSize, emask,
5531-
surface->g4opnd, r1HeaderOpnd, renderTargetIndexOpnd, cntrls, sampleIndexOpnd, cPSCounterOpnd, numMsgSpecificOpnds, g4params);
5529+
G4_Predicate * g4Pred = pred ? pred->g4opnd->asPredicate() : nullptr;
5530+
5531+
{
5532+
status = m_builder->translateVISARTWrite3DInst(g4Pred, executionSize, emask,
5533+
surface->g4opnd, r1HeaderOpnd, renderTargetIndexOpnd, cntrls, sampleIndexOpnd, cPSCounterOpnd, numMsgSpecificOpnds, g4params);
5534+
}
55325535
}
55335536
if(IS_VISA_BOTH_PATH)
55345537
{

0 commit comments

Comments
 (0)