@@ -138,49 +138,33 @@ static cl::opt<TargetAddressing> targetAddressingMode(
138
138
139
139
char StatelessToStateful::ID = 0 ;
140
140
141
- StatelessToStateful::StatelessToStateful () : ModulePass (ID), m_targetAddressing(targetAddressingMode) {}
141
+ StatelessToStateful::StatelessToStateful () : FunctionPass (ID), m_targetAddressing(targetAddressingMode) {}
142
142
143
143
StatelessToStateful::StatelessToStateful (TargetAddressing addressing)
144
- : ModulePass (ID),
144
+ : FunctionPass (ID),
145
145
m_targetAddressing(addressing)
146
146
{
147
147
initializeStatelessToStatefulPass (*PassRegistry::getPassRegistry ());
148
148
}
149
149
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)
168
151
{
169
152
MetaDataUtils* pMdUtils = getAnalysis<MetaDataUtilsWrapper>().getMetaDataUtils ();
170
153
ModuleMetaData* modMD = getAnalysis<MetaDataUtilsWrapper>().getModuleMetaData ();
171
154
172
155
if (modMD->compOpt .OptDisable )
173
156
{
174
157
IGC_ASSERT_MESSAGE (0 , " StatelessToStateful should be disabled for -O0!" );
175
- return ;
158
+ return false ;
176
159
}
177
160
178
161
// skip non-entry functions
179
162
if (!isEntryFunc (pMdUtils, &F))
180
163
{
181
- return ;
164
+ return false ;
182
165
}
183
166
167
+ m_Module = F.getParent ();
184
168
m_F = &F;
185
169
186
170
if (IGC_IS_FLAG_ENABLED (EnableCodeAssumption))
@@ -216,6 +200,7 @@ void StatelessToStateful::handleFunction(llvm::Function& F)
216
200
delete m_pImplicitArgs;
217
201
delete m_pKernelArgs;
218
202
m_promotionMap.clear ();
203
+ return m_changed;
219
204
}
220
205
221
206
Argument* StatelessToStateful::getBufferOffsetArg (Function* F, uint32_t ArgNumber)
@@ -594,8 +579,6 @@ void StatelessToStateful::promoteIntrinsic(InstructionInfo& II)
594
579
newBlockRead->setDebugLoc (I->getDebugLoc ());
595
580
I->replaceAllUsesWith (newBlockRead);
596
581
I->eraseFromParent ();
597
-
598
- setModuleUsesBindless ();
599
582
}
600
583
else if (intrinID == GenISAIntrinsic::GenISA_simdBlockWrite)
601
584
{
@@ -606,8 +589,6 @@ void StatelessToStateful::promoteIntrinsic(InstructionInfo& II)
606
589
newBlockWrite->setDebugLoc (I->getDebugLoc ());
607
590
I->replaceAllUsesWith (newBlockWrite);
608
591
I->eraseFromParent ();
609
-
610
- setModuleUsesBindless ();
611
592
}
612
593
return ;
613
594
}
@@ -714,7 +695,6 @@ void StatelessToStateful::promoteLoad(InstructionInfo& II)
714
695
715
696
I->replaceAllUsesWith (bindlessLoad);
716
697
I->eraseFromParent ();
717
- setModuleUsesBindless ();
718
698
}
719
699
else if (m_targetAddressing == TargetAddressing::BINDFUL || WA_ForcedUsedOfBindfulMode (*m_F))
720
700
{
@@ -768,7 +748,6 @@ void StatelessToStateful::promoteStore(InstructionInfo& II)
768
748
bindlessStore->setDebugLoc (DL);
769
749
770
750
I->eraseFromParent ();
771
- setModuleUsesBindless ();
772
751
}
773
752
else if (m_targetAddressing == TargetAddressing::BINDFUL || WA_ForcedUsedOfBindfulMode (*m_F))
774
753
{
@@ -832,7 +811,6 @@ void StatelessToStateful::promote()
832
811
*UndefValue::get (Type::getInt32Ty (m_Module->getContext ())),
833
812
IGC::BINDLESS);
834
813
setPointerSizeTo32bit (statefullAddrspace, m_Module);
835
- setModuleUsesBindless ();
836
814
}
837
815
else
838
816
{
@@ -1120,15 +1098,3 @@ void StatelessToStateful::finalizeArgInitialValue(Function* F)
1120
1098
AddInst->eraseFromParent ();
1121
1099
}
1122
1100
}
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
- }
0 commit comments