@@ -15,7 +15,7 @@ SPDX-License-Identifier: MIT
15
15
#include " GenISAIntrinsics/GenIntrinsics.h"
16
16
#include " Compiler/CISACodeGen/ShaderCodeGen.hpp"
17
17
#include " Compiler/MetaDataUtilsWrapper.h"
18
- #include " Compiler/CISACodeGen/HFfoldingOpt .hpp"
18
+ #include " Compiler/CISACodeGen/HFpackingOpt .hpp"
19
19
#include " Probe/Assertion.h"
20
20
21
21
using namespace llvm ;
@@ -62,13 +62,13 @@ namespace {
62
62
bool isValid () { return (GEP && arraySize); }
63
63
};
64
64
65
- class HFfoldingOpt : public FunctionPass
65
+ class HFpackingOpt : public FunctionPass
66
66
{
67
67
public:
68
68
static char ID;
69
- HFfoldingOpt ();
69
+ HFpackingOpt ();
70
70
71
- StringRef getPassName () const override { return " HFfoldingOpt " ; }
71
+ StringRef getPassName () const override { return " HFpackingOpt " ; }
72
72
73
73
bool runOnFunction (Function& F) override ;
74
74
virtual void getAnalysisUsage (llvm::AnalysisUsage& AU) const override
@@ -117,22 +117,22 @@ namespace {
117
117
#undef PASS_DESCRIPTION
118
118
#undef PASS_CFG_ONLY
119
119
#undef PASS_ANALYSIS
120
- #define PASS_FLAG " igc-HFfolding "
121
- #define PASS_DESCRIPTION " HF folding Opt"
120
+ #define PASS_FLAG " igc-HFpacking "
121
+ #define PASS_DESCRIPTION " HF packing Opt"
122
122
#define PASS_CFG_ONLY false
123
123
#define PASS_ANALYSIS false
124
- IGC_INITIALIZE_PASS_BEGIN (HFfoldingOpt , PASS_FLAG, PASS_DESCRIPTION, PASS_CFG_ONLY, PASS_ANALYSIS)
125
- IGC_INITIALIZE_PASS_END(HFfoldingOpt , PASS_FLAG, PASS_DESCRIPTION, PASS_CFG_ONLY, PASS_ANALYSIS)
124
+ IGC_INITIALIZE_PASS_BEGIN (HFpackingOpt , PASS_FLAG, PASS_DESCRIPTION, PASS_CFG_ONLY, PASS_ANALYSIS)
125
+ IGC_INITIALIZE_PASS_END(HFpackingOpt , PASS_FLAG, PASS_DESCRIPTION, PASS_CFG_ONLY, PASS_ANALYSIS)
126
126
127
- char HFfoldingOpt ::ID = 0;
128
- FunctionPass* IGC::createHFfoldingOptPass ()
127
+ char HFpackingOpt ::ID = 0;
128
+ FunctionPass* IGC::createHFpackingOptPass ()
129
129
{
130
- return new HFfoldingOpt ();
130
+ return new HFpackingOpt ();
131
131
}
132
132
133
- HFfoldingOpt::HFfoldingOpt () : FunctionPass(ID)
133
+ HFpackingOpt::HFpackingOpt () : FunctionPass(ID)
134
134
{
135
- initializeHFfoldingOptPass (*PassRegistry::getPassRegistry ());
135
+ initializeHFpackingOptPass (*PassRegistry::getPassRegistry ());
136
136
bRemoveFromSlmMap = false ;
137
137
}
138
138
@@ -145,7 +145,7 @@ HFfoldingOpt::HFfoldingOpt() : FunctionPass(ID)
145
145
// %4 = call i32 @llvm.genx.GenISA.RuntimeValue.i32(i32 15)
146
146
// %t7 = inttoptr i32 % 4 to % __2D_DIM_Resource addrspace(2621447) *
147
147
// runtimeV = 15
148
- bool HFfoldingOpt ::findSRVinfo (GenIntrinsicInst* tex, uint& runtimeV, uint& ptrAddrSpace)
148
+ bool HFpackingOpt ::findSRVinfo (GenIntrinsicInst* tex, uint& runtimeV, uint& ptrAddrSpace)
149
149
{
150
150
if (!tex)
151
151
return false ;
@@ -165,7 +165,7 @@ bool HFfoldingOpt::findSRVinfo(GenIntrinsicInst* tex, uint& runtimeV, uint& ptrA
165
165
166
166
// lookup SRV mapping entry from GenISA_ldptr intrinsic
167
167
// return the 'index' of the found entry
168
- bool HFfoldingOpt ::getSRVMap (GenIntrinsicInst* texld, uint& index)
168
+ bool HFpackingOpt ::getSRVMap (GenIntrinsicInst* texld, uint& index)
169
169
{
170
170
uint runtimeV = 0 ;
171
171
uint ptrAddrSpace = 0 ;
@@ -190,7 +190,7 @@ bool HFfoldingOpt::getSRVMap(GenIntrinsicInst* texld, uint& index)
190
190
return false ;
191
191
}
192
192
193
- void HFfoldingOpt ::removeFromSlmMap (GetElementPtrInst* gep)
193
+ void HFpackingOpt ::removeFromSlmMap (GetElementPtrInst* gep)
194
194
{
195
195
uint32_t arraySize = 0 , elmBytes = 0 , offset = 0 ;
196
196
getGEPInfo (gep, arraySize, elmBytes, offset);
@@ -225,7 +225,7 @@ void HFfoldingOpt::removeFromSlmMap(GetElementPtrInst* gep)
225
225
}
226
226
227
227
// detect if the given resource supports half float
228
- bool HFfoldingOpt ::supportHF (ExtractElementInst* EE, const uint gepOffset)
228
+ bool HFpackingOpt ::supportHF (ExtractElementInst* EE, const uint gepOffset)
229
229
{
230
230
uint index = 0 ;
231
231
@@ -264,7 +264,7 @@ bool HFfoldingOpt::supportHF(ExtractElementInst* EE, const uint gepOffset)
264
264
}
265
265
266
266
// extract offset, arraySize, and elementSize in bytes from GEP
267
- bool HFfoldingOpt ::getGEPInfo (GetElementPtrInst* GEP, uint& arraySize, uint& elmBytes, uint& offset)
267
+ bool HFpackingOpt ::getGEPInfo (GetElementPtrInst* GEP, uint& arraySize, uint& elmBytes, uint& offset)
268
268
{
269
269
if (!GEP)
270
270
return false ;
@@ -310,7 +310,7 @@ bool HFfoldingOpt::getGEPInfo(GetElementPtrInst* GEP, uint& arraySize, uint& elm
310
310
return false ;
311
311
}
312
312
313
- void HFfoldingOpt ::getHFPackingCandidate (Function& F)
313
+ void HFpackingOpt ::getHFPackingCandidate (Function& F)
314
314
{
315
315
for (auto bb = F.begin (); bb != F.end (); ++bb)
316
316
{
@@ -350,7 +350,7 @@ void HFfoldingOpt::getHFPackingCandidate(Function& F)
350
350
***** Scenario 3 *****
351
351
store float 0.000000e+00, float addrspace(3)* %122, align 4
352
352
*/
353
- ExtractElementInst* HFfoldingOpt ::decodeStore (StoreInst* pStore, bool & bStoreConstZero, uint& storePattern)
353
+ ExtractElementInst* HFpackingOpt ::decodeStore (StoreInst* pStore, bool & bStoreConstZero, uint& storePattern)
354
354
{
355
355
bStoreConstZero = false ;
356
356
storePattern = 0 ;
@@ -393,7 +393,7 @@ ExtractElementInst* HFfoldingOpt::decodeStore(StoreInst* pStore, bool& bStoreCon
393
393
// %81 = or i32 % 79, 1
394
394
// %82 = getelementptr[1296 x float], [1296 x float] addrspace(3) *
395
395
// inttoptr(i32 5184 to[1296 x float] addrspace(3)*), i32 0, i32 % 81
396
- bool HFfoldingOpt ::canMergeGEPs (Instruction* inst1, Instruction* inst2)
396
+ bool HFpackingOpt ::canMergeGEPs (Instruction* inst1, Instruction* inst2)
397
397
{
398
398
if (!inst1 || !inst2)
399
399
return false ;
@@ -413,7 +413,7 @@ bool HFfoldingOpt::canMergeGEPs(Instruction* inst1, Instruction* inst2)
413
413
return (addr2 == addr1 + 1 );
414
414
}
415
415
416
- bool HFfoldingOpt ::canMerge (HFdata& prev, GetElementPtrInst* GEP,
416
+ bool HFpackingOpt ::canMerge (HFdata& prev, GetElementPtrInst* GEP,
417
417
const uint arraySize, const uint elmBytes, const uint offset,
418
418
const uint storePattern, const bool bStoreConstZero, bool & removeSLM)
419
419
{
@@ -484,7 +484,7 @@ bool HFfoldingOpt::canMerge(HFdata& prev, GetElementPtrInst* GEP,
484
484
return false ;
485
485
}
486
486
487
- void HFfoldingOpt ::replaceStores (Instruction* startInst, Value* newGEP,
487
+ void HFpackingOpt ::replaceStores (Instruction* startInst, Value* newGEP,
488
488
StoreInst *Store1, StoreInst* Store2,
489
489
const bool bStoreConstZero1, const bool bStoreConstZero2)
490
490
{
@@ -512,7 +512,7 @@ void HFfoldingOpt::replaceStores(Instruction* startInst, Value* newGEP,
512
512
}
513
513
}
514
514
515
- void HFfoldingOpt ::replaceLoads (Instruction *startInst, Value* newGEP,
515
+ void HFpackingOpt ::replaceLoads (Instruction *startInst, Value* newGEP,
516
516
LoadInst *load1, LoadInst *load2)
517
517
{
518
518
IRBuilder<> builder (startInst);
@@ -530,7 +530,7 @@ void HFfoldingOpt::replaceLoads(Instruction *startInst, Value* newGEP,
530
530
}
531
531
532
532
// Checked if these two offsets are tracked by merged HF folding offsets
533
- bool HFfoldingOpt ::isPacked (uint offset1, uint offset2)
533
+ bool HFpackingOpt ::isPacked (uint offset1, uint offset2)
534
534
{
535
535
std::map<uint32_t , uint32_t >::iterator it;
536
536
@@ -543,7 +543,7 @@ bool HFfoldingOpt::isPacked(uint offset1, uint offset2)
543
543
}
544
544
545
545
// Merge 2 f16 stores into 1 i32 store
546
- void HFfoldingOpt ::PackHfResources (Function& F)
546
+ void HFpackingOpt ::PackHfResources (Function& F)
547
547
{
548
548
std::vector<Instruction*> RemoveInst;
549
549
HFdata prevStore (HFdataType::HF_STORE);
@@ -727,7 +727,7 @@ void HFfoldingOpt::PackHfResources(Function& F)
727
727
}
728
728
}
729
729
730
- bool HFfoldingOpt ::allowedALUinst (Value* inst)
730
+ bool HFpackingOpt ::allowedALUinst (Value* inst)
731
731
{
732
732
// return true for ALU insts allowed in this opt.
733
733
// can be extended to a larger range of instructions.
@@ -784,7 +784,7 @@ bool HFfoldingOpt::allowedALUinst(Value* inst)
784
784
return false ;
785
785
}
786
786
787
- bool HFfoldingOpt ::findStoreSequence (std::vector<Instruction*>& path, std::vector< std::vector<Instruction*>>& allPath)
787
+ bool HFpackingOpt ::findStoreSequence (std::vector<Instruction*>& path, std::vector< std::vector<Instruction*>>& allPath)
788
788
{
789
789
// pathIndex=0,1,2 are the store instructions. No need to check them. Start checking pathIndex=3
790
790
// save the sequence that generates the stored value.
@@ -876,7 +876,7 @@ bool HFfoldingOpt::findStoreSequence(std::vector<Instruction*>& path, std::vecto
876
876
return true ;
877
877
}
878
878
879
- bool HFfoldingOpt ::adjGep (Value* gep0, Value* gep1, Value* gep2, uint32_t offset[3 ])
879
+ bool HFpackingOpt ::adjGep (Value* gep0, Value* gep1, Value* gep2, uint32_t offset[3 ])
880
880
{
881
881
// check if the GEPs are accessing continuous space.
882
882
uint32_t arraySize[3 ] = { 0 , 0 , 0 }, elmBytes[3 ] = { 0 , 0 , 0 };
@@ -912,7 +912,7 @@ bool HFfoldingOpt::adjGep(Value* gep0, Value* gep1, Value* gep2, uint32_t offset
912
912
return true ;
913
913
}
914
914
915
- void HFfoldingOpt ::removeRedundantChannels (Function& F)
915
+ void HFpackingOpt ::removeRedundantChannels (Function& F)
916
916
{
917
917
/*
918
918
%32 = fmul fast float %29, %29
@@ -1094,7 +1094,7 @@ void HFfoldingOpt::removeRedundantChannels(Function& F)
1094
1094
}
1095
1095
}
1096
1096
1097
- bool HFfoldingOpt ::initializeSlmOffsetMap (Function& F)
1097
+ bool HFpackingOpt ::initializeSlmOffsetMap (Function& F)
1098
1098
{
1099
1099
uint32_t arraySize = 0 , elmBytes = 0 , offset = 0 ;
1100
1100
slmOffsetMap.clear ();
@@ -1121,7 +1121,7 @@ bool HFfoldingOpt::initializeSlmOffsetMap(Function& F)
1121
1121
return true ;
1122
1122
}
1123
1123
1124
- void HFfoldingOpt ::updateSlmOffsetSize (Function& F)
1124
+ void HFpackingOpt ::updateSlmOffsetSize (Function& F)
1125
1125
{
1126
1126
uint32_t arraySize = 0 , elmBytes = 0 , offset = 0 ;
1127
1127
@@ -1151,7 +1151,7 @@ void HFfoldingOpt::updateSlmOffsetSize(Function& F)
1151
1151
csCtx->m_slmSize = iSTD::RoundPower2 (DWORD (csCtx->m_tgsmSize ));
1152
1152
}
1153
1153
1154
- bool HFfoldingOpt ::runOnFunction (Function& F)
1154
+ bool HFpackingOpt ::runOnFunction (Function& F)
1155
1155
{
1156
1156
pContext = getAnalysis<CodeGenContextWrapper>().getCodeGenContext ();
1157
1157
csCtx = static_cast <ComputeShaderContext*>(pContext);
0 commit comments