Skip to content

Commit 9a32c46

Browse files
sys-igcigcbot
authored andcommitted
[Autobackout][FunctionalRegression]Revert of change: 921b614: Do not promote StatelessToBindful if StatelessToBindless promotion has been done before
Do not promote StatelessToBindful if StatelessToBindless promotion has been done before. Co-authored-by: Patryk Kwasniewski <[email protected]>
1 parent 3b4b3f5 commit 9a32c46

File tree

3 files changed

+9
-53
lines changed

3 files changed

+9
-53
lines changed

IGC/Compiler/Optimizer/OpenCLPasses/StatelessToStateful/StatelessToStateful.cpp

Lines changed: 7 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -138,49 +138,33 @@ static cl::opt<TargetAddressing> targetAddressingMode(
138138

139139
char StatelessToStateful::ID = 0;
140140

141-
StatelessToStateful::StatelessToStateful() : ModulePass(ID), m_targetAddressing(targetAddressingMode) {}
141+
StatelessToStateful::StatelessToStateful() : FunctionPass(ID), m_targetAddressing(targetAddressingMode) {}
142142

143143
StatelessToStateful::StatelessToStateful(TargetAddressing addressing)
144-
: ModulePass(ID),
144+
: FunctionPass(ID),
145145
m_targetAddressing(addressing)
146146
{
147147
initializeStatelessToStatefulPass(*PassRegistry::getPassRegistry());
148148
}
149149

150-
bool StatelessToStateful::runOnModule(llvm::Module& M)
151-
{
152-
m_Module = &M;
153-
154-
if (m_targetAddressing == TargetAddressing::BINDFUL && getModuleUsesBindless() == true)
155-
{
156-
return false;
157-
}
158-
159-
for (auto& it : M.functions())
160-
{
161-
handleFunction(it);
162-
}
163-
164-
return m_changed;
165-
}
166-
167-
void StatelessToStateful::handleFunction(llvm::Function& F)
150+
bool StatelessToStateful::runOnFunction(llvm::Function& F)
168151
{
169152
MetaDataUtils* pMdUtils = getAnalysis<MetaDataUtilsWrapper>().getMetaDataUtils();
170153
ModuleMetaData* modMD = getAnalysis<MetaDataUtilsWrapper>().getModuleMetaData();
171154

172155
if (modMD->compOpt.OptDisable)
173156
{
174157
IGC_ASSERT_MESSAGE(0, "StatelessToStateful should be disabled for -O0!");
175-
return;
158+
return false;
176159
}
177160

178161
// skip non-entry functions
179162
if (!isEntryFunc(pMdUtils, &F))
180163
{
181-
return;
164+
return false;
182165
}
183166

167+
m_Module = F.getParent();
184168
m_F = &F;
185169

186170
if (IGC_IS_FLAG_ENABLED(EnableCodeAssumption))
@@ -216,6 +200,7 @@ void StatelessToStateful::handleFunction(llvm::Function& F)
216200
delete m_pImplicitArgs;
217201
delete m_pKernelArgs;
218202
m_promotionMap.clear();
203+
return m_changed;
219204
}
220205

221206
Argument* StatelessToStateful::getBufferOffsetArg(Function* F, uint32_t ArgNumber)
@@ -594,8 +579,6 @@ void StatelessToStateful::promoteIntrinsic(InstructionInfo& II)
594579
newBlockRead->setDebugLoc(I->getDebugLoc());
595580
I->replaceAllUsesWith(newBlockRead);
596581
I->eraseFromParent();
597-
598-
setModuleUsesBindless();
599582
}
600583
else if (intrinID == GenISAIntrinsic::GenISA_simdBlockWrite)
601584
{
@@ -606,8 +589,6 @@ void StatelessToStateful::promoteIntrinsic(InstructionInfo& II)
606589
newBlockWrite->setDebugLoc(I->getDebugLoc());
607590
I->replaceAllUsesWith(newBlockWrite);
608591
I->eraseFromParent();
609-
610-
setModuleUsesBindless();
611592
}
612593
return;
613594
}
@@ -714,7 +695,6 @@ void StatelessToStateful::promoteLoad(InstructionInfo& II)
714695

715696
I->replaceAllUsesWith(bindlessLoad);
716697
I->eraseFromParent();
717-
setModuleUsesBindless();
718698
}
719699
else if (m_targetAddressing == TargetAddressing::BINDFUL || WA_ForcedUsedOfBindfulMode(*m_F))
720700
{
@@ -768,7 +748,6 @@ void StatelessToStateful::promoteStore(InstructionInfo& II)
768748
bindlessStore->setDebugLoc(DL);
769749

770750
I->eraseFromParent();
771-
setModuleUsesBindless();
772751
}
773752
else if (m_targetAddressing == TargetAddressing::BINDFUL || WA_ForcedUsedOfBindfulMode(*m_F))
774753
{
@@ -832,7 +811,6 @@ void StatelessToStateful::promote()
832811
*UndefValue::get(Type::getInt32Ty(m_Module->getContext())),
833812
IGC::BINDLESS);
834813
setPointerSizeTo32bit(statefullAddrspace, m_Module);
835-
setModuleUsesBindless();
836814
}
837815
else
838816
{
@@ -1120,15 +1098,3 @@ void StatelessToStateful::finalizeArgInitialValue(Function* F)
11201098
AddInst->eraseFromParent();
11211099
}
11221100
}
1123-
1124-
void StatelessToStateful::setModuleUsesBindless()
1125-
{
1126-
auto MD = getAnalysis<MetaDataUtilsWrapper>().getModuleMetaData();
1127-
MD->ModuleUsesBindless = true;
1128-
IGC::serialize(*MD, m_Module);
1129-
}
1130-
1131-
bool StatelessToStateful::getModuleUsesBindless()
1132-
{
1133-
return getAnalysis<MetaDataUtilsWrapper>().getModuleMetaData()->ModuleUsesBindless;
1134-
}

IGC/Compiler/Optimizer/OpenCLPasses/StatelessToStateful/StatelessToStateful.hpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ namespace IGC
3232
BINDLESS
3333
};
3434

35-
class StatelessToStateful : public llvm::ModulePass, public llvm::InstVisitor<StatelessToStateful>
35+
class StatelessToStateful : public llvm::FunctionPass, public llvm::InstVisitor<StatelessToStateful>
3636
{
3737
public:
3838
typedef llvm::DenseMap<const KernelArg*, int> ArgInfoMap;
@@ -57,7 +57,7 @@ namespace IGC
5757
return "StatelessToStateful";
5858
}
5959

60-
virtual bool runOnModule(llvm::Module &M) override;
60+
virtual bool runOnFunction(llvm::Function& F) override;
6161

6262
void visitLoadInst(llvm::LoadInst& I);
6363
void visitStoreInst(llvm::StoreInst& I);
@@ -86,11 +86,6 @@ namespace IGC
8686
std::optional<unsigned> statefulAddrSpace;
8787
};
8888

89-
void handleFunction(llvm::Function& F);
90-
91-
void setModuleUsesBindless();
92-
bool getModuleUsesBindless();
93-
9489
void findPromotableInstructions();
9590
void addToPromotionMap(llvm::Instruction& I, llvm::Value* Ptr);
9691

IGC/common/MDFrameWork.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -785,11 +785,6 @@ namespace IGC
785785
uint8_t SIMD32_SpillThreshold = 0;
786786

787787
CacheControlOverride m_CacheControlOption;
788-
789-
// Set to true by StatelessToStateful(Bindless) if any instruction in
790-
// a module was promoted to stateless. Used to avoid bindless and bindful
791-
// mode in one module.
792-
bool ModuleUsesBindless = false;
793788
};
794789

795790
void serialize(const IGC::ModuleMetaData &moduleMD, llvm::Module* module);

0 commit comments

Comments
 (0)