Skip to content

Commit b15c849

Browse files
bcheng0127igcbot
authored andcommitted
Changes in code.
1 parent 34c8a74 commit b15c849

File tree

5 files changed

+47
-0
lines changed

5 files changed

+47
-0
lines changed

visa/HWCaps.inc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -936,4 +936,10 @@ bool useDynamicAddrForExDesc() const {
936936
return getOption(vISA_dynamicAddrForExDescInLscSend);
937937
}
938938

939+
940+
bool src1Src2SwapForCompaction()
941+
{
942+
return false;
943+
}
944+
939945
// end HW capabilities

visa/Optimizer.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -691,6 +691,9 @@ void Optimizer::initOptimizations() {
691691
TimerID::NUM_TIMERS);
692692
OPT_INITIALIZE_PASS(insertDummyCompactInst, vISA_InsertDummyCompactInst,
693693
TimerID::NUM_TIMERS);
694+
OPT_INITIALIZE_PASS(swapSrc1Src2OfMadForCompaction,
695+
vISA_SwapSrc1Src2OfMadForCompaction,
696+
TimerID::NUM_TIMERS);
694697
OPT_INITIALIZE_PASS(mergeScalarInst, vISA_MergeScalar, TimerID::OPTIMIZER);
695698
OPT_INITIALIZE_PASS(lowerMadSequence, vISA_EnableMACOpt, TimerID::OPTIMIZER);
696699
OPT_INITIALIZE_PASS(LVN, vISA_LVN, TimerID::OPTIMIZER);
@@ -1056,6 +1059,8 @@ int Optimizer::optimization() {
10561059
// Insert a dummy compact instruction if requested for SKL+
10571060
runPass(PI_insertDummyCompactInst);
10581061

1062+
runPass(PI_swapSrc1Src2OfMadForCompaction);
1063+
10591064
runPass(PI_mapOrphans);
10601065

10611066
runPass(PI_analyzeMove);

visa/Optimizer.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,7 @@ class Optimizer {
305305
void insertDummyMovForHWRSWA();
306306
void insertHashMovs();
307307
void insertDummyCompactInst();
308+
void swapSrc1Src2OfMadForCompaction();
308309
void removeLifetimeOps();
309310
void recomputeBound(std::unordered_set<G4_Declare *> &declares);
310311

@@ -376,6 +377,7 @@ class Optimizer {
376377
PI_HWDebug,
377378
PI_insertDummyMovForHWRSWA,
378379
PI_insertDummyCompactInst,
380+
PI_swapSrc1Src2OfMadForCompaction,
379381
PI_mergeScalarInst,
380382
PI_lowerMadSequence,
381383
PI_LVN,

visa/SWWA.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,38 @@ void Optimizer::insertDummyCompactInst() {
5353
bb->push_back(movInst);
5454
}
5555

56+
void Optimizer::swapSrc1Src2OfMadForCompaction() {
57+
if (!builder.src1Src2SwapForCompaction())
58+
return;
59+
60+
BB_LIST_ITER ib, bend(fg.end());
61+
for (ib = fg.begin(); ib != bend; ++ib) {
62+
G4_BB *bb = (*ib);
63+
INST_LIST_ITER ii = bb->begin();
64+
65+
while (ii != bb->end()) {
66+
G4_INST *inst = *ii;
67+
if (inst->opcode() == G4_mad) {
68+
G4_Operand *src1 = inst->getSrc(1);
69+
G4_Operand *src2 = inst->getSrc(2);
70+
if (src1 && src2 && src1->getType() == src2->getType() &&
71+
src1->isSrcRegRegion() &&
72+
src2->isSrcRegRegion() &&
73+
src1->getBase()->isRegVar() && src2->getBase()->isRegVar() &&
74+
src1->getTopDcl()->getRegFile() == G4_GRF &&
75+
src2->getTopDcl()->getRegFile() == G4_GRF) {
76+
if (src1->asSrcRegRegion()->getRegion()->isScalar() &&
77+
src2->asSrcRegRegion()->getRegion()->isFlatRegion()) {
78+
inst->setSrc(src2, 1);
79+
inst->setSrc(src1, 2);
80+
}
81+
}
82+
}
83+
ii++;
84+
}
85+
}
86+
}
87+
5688
// add (1|M0) null<1>:uw null<0;1,0>:uw 0x0:uw
5789
void Optimizer::insertDummyAdd(G4_BB *bb, INST_LIST_ITER inst_it, int imm) {
5890
// Dst

visa/include/VISAOptionsDefs.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -799,6 +799,8 @@ DEF_VISA_OPTION(vISA_InsertDummyMovForDPASRSWA, ET_BOOL,
799799
"-insertDPASRSDummyMov", UNUSED, true)
800800
DEF_VISA_OPTION(vISA_InsertDummyCompactInst, ET_BOOL, "-insertDummyCompactInst",
801801
UNUSED, false)
802+
DEF_VISA_OPTION(vISA_SwapSrc1Src2OfMadForCompaction, ET_BOOL, "-disableSwapSrc1Src2OfMadForCompaction",
803+
UNUSED, true)
802804
DEF_VISA_OPTION(vISA_AsmFileNameOverridden, ET_BOOL, NULLSTR, UNUSED, false)
803805
DEF_VISA_OPTION(vISA_HashVal, ET_2xINT32, "-hashmovs",
804806
"USAGE: -hashmovs hi32 lo32\n", 0)

0 commit comments

Comments
 (0)