Skip to content

Commit 2b93cd8

Browse files
bcheng0127igcbot
authored andcommitted
Changes in code.
1 parent babf726 commit 2b93cd8

File tree

5 files changed

+44
-0
lines changed

5 files changed

+44
-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
@@ -302,6 +302,7 @@ class Optimizer {
302302
void insertDummyMovForHWRSWA();
303303
void insertHashMovs();
304304
void insertDummyCompactInst();
305+
void swapSrc1Src2OfMadForCompaction();
305306
void removeLifetimeOps();
306307
void recomputeBound(std::unordered_set<G4_Declare *> &declares);
307308

@@ -373,6 +374,7 @@ class Optimizer {
373374
PI_HWDebug,
374375
PI_insertDummyMovForHWRSWA,
375376
PI_insertDummyCompactInst,
377+
PI_swapSrc1Src2OfMadForCompaction,
376378
PI_mergeScalarInst,
377379
PI_lowerMadSequence,
378380
PI_LVN,

visa/SWWA.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,35 @@ 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+
if (src1->isSrcRegRegion() &&
72+
src1->asSrcRegRegion()->getRegion()->isScalar() &&
73+
src2->isSrcRegRegion() &&
74+
src2->asSrcRegRegion()->getRegion()->isFlatRegion()) {
75+
inst->setSrc(src2, 1);
76+
inst->setSrc(src1, 2);
77+
}
78+
}
79+
}
80+
ii++;
81+
}
82+
}
83+
}
84+
5685
// add (1|M0) null<1>:uw null<0;1,0>:uw 0x0:uw
5786
void Optimizer::insertDummyAdd(G4_BB *bb, INST_LIST_ITER inst_it, int imm) {
5887
// Dst

visa/include/VISAOptionsDefs.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -794,6 +794,8 @@ DEF_VISA_OPTION(vISA_InsertDummyMovForDPASRSWA, ET_BOOL,
794794
"-insertDPASRSDummyMov", UNUSED, true)
795795
DEF_VISA_OPTION(vISA_InsertDummyCompactInst, ET_BOOL, "-insertDummyCompactInst",
796796
UNUSED, false)
797+
DEF_VISA_OPTION(vISA_SwapSrc1Src2OfMadForCompaction, ET_BOOL, "-disableSwapSrc1Src2OfMadForCompaction",
798+
UNUSED, true)
797799
DEF_VISA_OPTION(vISA_AsmFileNameOverridden, ET_BOOL, NULLSTR, UNUSED, false)
798800
DEF_VISA_OPTION(vISA_HashVal, ET_2xINT32, "-hashmovs",
799801
"USAGE: -hashmovs hi32 lo32\n", 0)

0 commit comments

Comments
 (0)