Skip to content

Commit 0d92bac

Browse files
weiyu-chensys_zuul
authored andcommitted
Remove more explicit calls to createInternaInst() and use wrappers instead.
Change-Id: I312e6c16d63b43521652c83598e599b19428f862
1 parent 6d61c8d commit 0d92bac

13 files changed

+86
-81
lines changed

visa/BinaryEncodingIGA.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -653,8 +653,7 @@ void BinaryEncodingIGA::DoAll()
653653
size_t num_nop = 4 - (num_inst % 4);
654654
for (size_t i = 0; i < num_nop; ++i)
655655
first_bb->getInstList().push_back(
656-
kernel.fg.builder->createInternalInst(
657-
nullptr, G4_nop, nullptr, false, 1, nullptr, nullptr, nullptr, InstOpt_NoCompact));
656+
kernel.fg.builder->createNop(InstOpt_NoCompact));
658657
}
659658
// set all instruction to be NoCompact
660659
for (auto inst : *first_bb)

visa/BuildIR.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1822,6 +1822,9 @@ class IR_Builder {
18221822
unsigned int option, int lineno = 0, int CISAoff = -1,
18231823
const char* srcFilename = NULL);
18241824

1825+
G4_INST* createNop(uint32_t option);
1826+
G4_INST* createSync(G4_opcode syncOp, G4_Operand* src);
1827+
18251828
G4_INST* createMov(uint8_t execSize, G4_DstRegRegion* dst,
18261829
G4_Operand* src0, uint32_t option, bool appendToInstList,
18271830
int lineno = 0, int CISAoff = -1, const char* srcFilename = nullptr);

visa/BuildIRImpl.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,18 @@ G4_INST* IR_Builder::createInternalInst(G4_Predicate* prd,
351351
return ii;
352352
}
353353

354+
G4_INST* IR_Builder::createNop(uint32_t instOpt)
355+
{
356+
return createInternalInst(nullptr, G4_nop, nullptr, false, 1, nullptr, nullptr, nullptr, instOpt);
357+
}
358+
359+
// sync inst are always internal, so no option to append it to instList. Also currently don't take any InstOpt
360+
G4_INST* IR_Builder::createSync(G4_opcode syncOp, G4_Operand* src)
361+
{
362+
assert(G4_INST::isSyncOpcode(syncOp) && "expect a sync op");
363+
return createInternalInst(nullptr, syncOp, nullptr, false, 1, nullptr, src, nullptr, InstOpt_NoOpt);
364+
}
365+
354366
G4_INST* IR_Builder::createMov(uint8_t execSize, G4_DstRegRegion* dst,
355367
G4_Operand* src0, uint32_t option, bool appendToInstList,
356368
int lineno, int CISAoff, const char* srcFilename)

visa/FlowGraph.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6865,19 +6865,19 @@ bool FlowGraph::convertJmpiToGoto()
68656865
{
68666866
// P = P & 1
68676867
auto pSrc1 = builder->createImm(1, Type_UW);
6868-
auto pInst = builder->createInternalInst(
6869-
nullptr, G4_and, nullptr, false, 1, pDst, pSrc0, pSrc1,
6870-
InstOpt_M0 | InstOpt_WriteEnable);
6868+
auto pInst = builder->createBinOp(
6869+
G4_and, 1, pDst, pSrc0, pSrc1,
6870+
InstOpt_M0 | InstOpt_WriteEnable, false);
68716871
bb->insert(I, pInst);
68726872
}
68736873
else if (G4_Predicate::isAnyH(pCtrl))
68746874
{
68756875
// P = P & mask
68766876
uint32_t mask = getFlagMask(pCtrl);
68776877
auto pSrc1 = builder->createImm(truncMask(mask, DstTy), DstTy);
6878-
auto pInst = builder->createInternalInst(
6879-
nullptr, G4_and, nullptr, false, 1, pDst, pSrc0, pSrc1,
6880-
InstOpt_M0 | InstOpt_WriteEnable);
6878+
auto pInst = builder->createBinOp(
6879+
G4_and, 1, pDst, pSrc0, pSrc1,
6880+
InstOpt_M0 | InstOpt_WriteEnable, false);
68816881
bb->insert(I, pInst);
68826882
}
68836883
else
@@ -6886,9 +6886,9 @@ bool FlowGraph::convertJmpiToGoto()
68866886
// P = P | mask
68876887
uint32_t mask = getFlagMask(pCtrl);
68886888
auto pSrc1 = builder->createImm(truncMask(mask, DstTy), DstTy);
6889-
auto pInst = builder->createInternalInst(
6890-
nullptr, G4_or, nullptr, false, 1, pDst, pSrc0, pSrc1,
6891-
InstOpt_M0 | InstOpt_WriteEnable);
6889+
auto pInst = builder->createBinOp(
6890+
G4_or, 1, pDst, pSrc0, pSrc1,
6891+
InstOpt_M0 | InstOpt_WriteEnable, false);
68926892
bb->insert(I, pInst);
68936893
}
68946894

visa/Gen4_IR.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -719,9 +719,10 @@ class G4_INST
719719
virtual void computeRightBound(G4_Operand* opnd);
720720

721721
bool isWait() const { return op == G4_wait; }
722+
static bool isSyncOpcode(G4_opcode opcode) { return opcode == G4_sync_nop || opcode == G4_sync_allrd || opcode == G4_sync_allwr; }
722723
bool isSWSBSync() const
723724
{
724-
return op == G4_sync_nop || op == G4_sync_allrd || op == G4_sync_allwr;
725+
return G4_INST::isSyncOpcode(op);
725726
}
726727

727728
bool isPseudoLogic() const

visa/GraphColor.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7445,8 +7445,8 @@ void GraphColor::addCalleeStackSetupCode()
74457445
G4_Operand* sp_src = builder.createSrcRegRegion(Mod_src_undef, Direct, stackPtr->getRegVar(), 0, 0, rDesc, Type_UD);
74467446
G4_Imm * src1 = builder.createImm(frameSize, Type_UD);
74477447
auto createBEFP = builder.createMov(1, fp_dst, sp_src, InstOpt_WriteEnable, false);
7448-
auto addInst = builder.createInternalInst(NULL, G4_add, NULL, false, 1,
7449-
dst, src0, src1, InstOpt_WriteEnable);
7448+
auto addInst = builder.createBinOp(G4_add, 1,
7449+
dst, src0, src1, InstOpt_WriteEnable, false);
74507450
G4_BB* entryBB = builder.kernel.fg.getEntryBB();
74517451
auto insertIt = std::find_if(entryBB->begin(), entryBB->end(),
74527452
[](G4_INST* inst) { return inst->opcode() == G4_pseudo_store_be_fp; });

visa/HWConformity.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2640,9 +2640,8 @@ void HWConformity::fixMULHInst( INST_LIST_ITER &i, G4_BB *bb )
26402640
0,
26412641
1,
26422642
tmp_type);
2643-
G4_INST* newMul = builder.createInternalInst(nullptr, G4_mul, NULL, false, exec_size,
2644-
acc_dst_opnd, builder.duplicateOperand(src0), builder.duplicateOperand(src1), inst_opt,
2645-
inst->getLineNo(), inst->getCISAOff(), inst->getSrcFilename());
2643+
G4_INST* newMul = builder.createBinOp(G4_mul, exec_size,
2644+
acc_dst_opnd, builder.duplicateOperand(src0), builder.duplicateOperand(src1), inst_opt, false);
26462645

26472646
bb->insert(iter, newMul);
26482647
inst->copyDefsTo(newMul, false);

visa/LocalScheduler/SWSB_G4IR.cpp

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3061,7 +3061,7 @@ void SWSB::tokenAllocationGlobal()
30613061
G4_INST* SWSB::insertSyncInstruction(G4_BB* bb, INST_LIST_ITER nextIter, int CISAOff, int lineNo)
30623062
{
30633063
G4_SrcRegRegion* src0 = fg.builder->createNullSrc(Type_UD);
3064-
G4_INST* syncInst = fg.builder->createInternalInst(NULL, G4_sync_nop, NULL, false, 1, NULL, src0, NULL, 0, lineNo, CISAOff, NULL);
3064+
G4_INST* syncInst = fg.builder->createSync(G4_sync_nop, src0);
30653065
bb->insert(nextIter, syncInst);
30663066
syncInstCount++;
30673067

@@ -3073,7 +3073,7 @@ G4_INST* SWSB::insertSyncInstructionAfter(G4_BB* bb, INST_LIST_ITER iter, int CI
30733073
INST_LIST_ITER nextIter = iter;
30743074
nextIter++;
30753075
G4_SrcRegRegion* src0 = fg.builder->createNullSrc(Type_UD);
3076-
G4_INST* syncInst = fg.builder->createInternalInst(NULL, G4_sync_nop, NULL, false, 1, NULL, src0, NULL, 0, lineNo, CISAOff, NULL);
3076+
G4_INST* syncInst = fg.builder->createSync(G4_sync_nop, src0);
30773077
bb->insert(nextIter, syncInst);
30783078
syncInstCount++;
30793079

@@ -3082,7 +3082,7 @@ G4_INST* SWSB::insertSyncInstructionAfter(G4_BB* bb, INST_LIST_ITER iter, int CI
30823082

30833083
G4_INST* SWSB::insertTestInstruction(G4_BB* bb, INST_LIST_ITER nextIter, int CISAOff, int lineNo, bool countSync)
30843084
{
3085-
G4_INST* nopInst = fg.builder->createInternalInst(NULL, G4_nop, NULL, false, 1, NULL, NULL, NULL, 0, lineNo, CISAOff, NULL);
3085+
G4_INST* nopInst = fg.builder->createNop(InstOpt_NoOpt);
30863086
bb->insert(nextIter, nopInst);
30873087
if (countSync)
30883088
{
@@ -3098,13 +3098,13 @@ G4_INST* SWSB::insertSyncAllRDInstruction(G4_BB* bb, unsigned int SBIDs, INST_LI
30983098
if (SBIDs)
30993099
{
31003100
G4_Imm* src0 = fg.builder->createImm(SBIDs, Type_UD);
3101-
syncInst = fg.builder->createInternalInst(NULL, G4_sync_allrd, NULL, false, 1, NULL, src0, NULL, 0, lineNo, CISAOff, NULL);
3101+
syncInst = fg.builder->createSync(G4_sync_allrd, src0);
31023102
ARSyncInstCount++;
31033103
}
31043104
else
31053105
{
31063106
G4_SrcRegRegion* src0 = fg.builder->createNullSrc(Type_UD);
3107-
syncInst = fg.builder->createInternalInst(NULL, G4_sync_allrd, NULL, false, 1, NULL, src0, NULL, 0, lineNo, CISAOff, NULL);
3107+
syncInst = fg.builder->createSync(G4_sync_allrd, src0);
31083108
ARSyncAllCount++;
31093109
}
31103110
bb->insert(nextIter, syncInst);
@@ -3118,13 +3118,13 @@ G4_INST* SWSB::insertSyncAllWRInstruction(G4_BB* bb, unsigned int SBIDs, INST_LI
31183118
if (SBIDs)
31193119
{
31203120
G4_Imm* src0 = fg.builder->createImm(SBIDs, Type_UD);
3121-
syncInst = fg.builder->createInternalInst(NULL, G4_sync_allwr, NULL, false, 1, NULL, src0, NULL, 0, lineNo, CISAOff, NULL);
3121+
syncInst = fg.builder->createSync(G4_sync_allwr, src0);
31223122
AWSyncInstCount++;
31233123
}
31243124
else
31253125
{
31263126
G4_SrcRegRegion* src0 = fg.builder->createNullSrc(Type_UD);
3127-
syncInst = fg.builder->createInternalInst(NULL, G4_sync_allwr, NULL, false, 1, NULL, src0, NULL, 0, lineNo, CISAOff, NULL);
3127+
syncInst = fg.builder->createSync(G4_sync_allwr, src0);
31283128
AWSyncAllCount++;
31293129
}
31303130
bb->insert(nextIter, syncInst);
@@ -5994,7 +5994,7 @@ static G4_INST* setForceDebugSWSB(IR_Builder* builder, G4_BB* bb, G4_INST* inst)
59945994
inst->setToken(0);
59955995

59965996
G4_SrcRegRegion* src0 = builder->createNullSrc(Type_UD);
5997-
syncInst = builder->createInternalInst(NULL, G4_sync_nop, NULL, false, 1, NULL, src0, NULL, 0, inst->getLineNo(), inst->getCISAOff(), NULL);
5997+
syncInst = builder->createSync(G4_sync_nop, src0);
59985998
G4_Operand* opnd = inst->getOperand(Opnd_dst);
59995999
SWSBTokenType tokenType = SWSBTokenType::TOKEN_NONE;
60006000
if (!opnd || !opnd->getBase() || opnd->isNullReg())
@@ -6073,7 +6073,7 @@ static void setInstructionStallSWSB(IR_Builder* builder,
60736073

60746074
G4_INST* syncInst = nullptr;
60756075
G4_SrcRegRegion* src0 = builder->createNullSrc(Type_UD);
6076-
syncInst = builder->createInternalInst(NULL, G4_sync_nop, NULL, false, 1, NULL, src0, NULL, 0, inst->getLineNo(), inst->getCISAOff(), NULL);
6076+
syncInst = builder->createSync(G4_sync_nop, src0);
60776077

60786078
unsigned short token = inst->getToken();
60796079
SWSBTokenType tokenType = SWSBTokenType::TOKEN_NONE;
@@ -6097,19 +6097,18 @@ static void setInstructionBarrierSWSB(IR_Builder* builder,
60976097
G4_BB* bb,
60986098
INST_LIST_ITER& inst_it)
60996099
{
6100-
G4_INST* inst = *inst_it;
61016100

61026101
G4_INST* syncAllRdInst = nullptr;
61036102
G4_SrcRegRegion* src0 = builder->createNullSrc(Type_UD);
6104-
syncAllRdInst = builder->createInternalInst(NULL, G4_sync_allrd, NULL, false, 1, NULL, src0, NULL, 0, inst->getLineNo(), inst->getCISAOff(), NULL);
6103+
syncAllRdInst = builder->createSync(G4_sync_allrd, src0);
61056104
syncAllRdInst->setDistance(1);
61066105
INST_LIST_ITER next_it = inst_it;
61076106
next_it++;
61086107
inst_it = bb->insert(next_it, syncAllRdInst);
61096108

61106109
G4_INST* syncAllWrInst = nullptr;
61116110
src0 = builder->createNullSrc(Type_UD);
6112-
syncAllWrInst = builder->createInternalInst(NULL, G4_sync_allwr, NULL, false, 1, NULL, src0, NULL, 0, inst->getLineNo(), inst->getCISAOff(), NULL);
6111+
syncAllWrInst = builder->createSync(G4_sync_allwr, src0);
61136112

61146113
next_it = inst_it;
61156114
next_it++;

visa/Optimizer.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6782,7 +6782,7 @@ bool Optimizer::foldPseudoAndOr(G4_BB* bb, INST_LIST_ITER& ii)
67826782
if (!nextInst->isSend() && nextInst->getDst() && !nextInst->hasNULLDst() && nextInst->getDst()->crossGRF())
67836783
{
67846784
// insert a nop
6785-
G4_INST *nopInst = builder.createInternalInst(NULL, G4_nop, NULL, false, 1, NULL, NULL, NULL, inst->getOption());
6785+
G4_INST *nopInst = builder.createNop(inst->getOption());
67866786
bb->insert(nextIter, nopInst);
67876787
}
67886788
}
@@ -7959,8 +7959,8 @@ void genBucket(G4_INST *send, Bucket *bucket, RW rwType) {
79597959
auto src1 = builder.createImm(0xF0FFFFFF, Type_UD);
79607960
auto dst = builder.createDst(rtail->getRegVar(), 0, 0, 1, Type_UD);
79617961

7962-
return builder.createInternalInst(nullptr, G4_and, nullptr, false, 1,
7963-
dst, src0, src1, InstOpt_WriteEnable);
7962+
return builder.createBinOp(G4_and, 1,
7963+
dst, src0, src1, InstOpt_WriteEnable, false);
79647964
};
79657965

79667966
// (W) or (1|M0) sr0.0<1>:ud 127.0<0;1,0>:ud imm:ud
@@ -7973,8 +7973,8 @@ void genBucket(G4_INST *send, Bucket *bucket, RW rwType) {
79737973
auto dst = builder.createDst(
79747974
builder.phyregpool.getSr0Reg(), 0, 0, 1, Type_UD);
79757975

7976-
return builder.createInternalInst(nullptr, G4_or, nullptr, false, 1,
7977-
dst, src0, src1, InstOpt_WriteEnable);
7976+
return builder.createBinOp(G4_or, 1,
7977+
dst, src0, src1, InstOpt_WriteEnable, false);
79787978
};
79797979

79807980
// (W) jmpi (1|M0) label
@@ -8285,21 +8285,21 @@ void genBucket(G4_INST *send, Bucket *bucket, RW rwType) {
82858285
// jmpi r1.0
82868286

82878287
// add r1.0 -ip r1.0
8288-
G4_INST* add0 = builder.createInternalInst(
8289-
nullptr, G4_add, nullptr, false, 1,
8288+
G4_INST* add0 = builder.createBinOp(
8289+
G4_add, 1,
82908290
builder.Create_Dst_Opnd_From_Dcl(r_1_0, 1),
82918291
builder.createSrcRegRegion(
82928292
Mod_Minus, Direct, builder.phyregpool.getIpReg(), 0, 0,
82938293
builder.getRegionScalar(), Type_UD),
82948294
builder.Create_Src_Opnd_From_Dcl(r_1_0, builder.getRegionScalar()),
8295-
InstOpt_WriteEnable | InstOpt_NoCompact);
8295+
InstOpt_WriteEnable | InstOpt_NoCompact, false);
82968296

82978297
// add r1.0 r1.0 -48
8298-
G4_INST* add1 = builder.createInternalInst(
8299-
nullptr, G4_add, nullptr, false, 1,
8298+
G4_INST* add1 = builder.createBinOp(
8299+
G4_add, 1,
83008300
builder.Create_Dst_Opnd_From_Dcl(r_1_0, 1),
83018301
builder.Create_Src_Opnd_From_Dcl(r_1_0, builder.getRegionScalar()),
8302-
builder.createImm(-48, Type_D), InstOpt_WriteEnable | InstOpt_NoCompact);
8302+
builder.createImm(-48, Type_D), InstOpt_WriteEnable | InstOpt_NoCompact, false);
83038303

83048304
// jmpi r1.0
83058305
G4_SrcRegRegion* jmpi_target = builder.Create_Src_Opnd_From_Dcl(

visa/SendFusion.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1262,8 +1262,8 @@ void SendFusion::createFlagPerBB(G4_BB* bb, INST_LIST_ITER InsertBeforePos)
12621262
Mod_src_undef, Direct, DMaskUD, 0, 0, scalar, Type_UD);
12631263
G4_DstRegRegion* tmpDst = Builder->createDst(
12641264
tmpDecl->getRegVar(), 0, 0, 1, Type_UD);
1265-
Inst0 = Builder->createInternalInst(
1266-
NULL, G4_and, NULL, false, 1, tmpDst, ce0Src, dmaskSrc, InstOpt_WriteEnable);
1265+
Inst0 = Builder->createBinOp(
1266+
G4_and, 1, tmpDst, ce0Src, dmaskSrc, InstOpt_WriteEnable, false);
12671267
bb->insert(InsertBeforePos, Inst0);
12681268
}
12691269

0 commit comments

Comments
 (0)