Skip to content

Commit 2587078

Browse files
authored
Integrate LLVM at 191e64ffa9061e9c0d5387b38bd2d5a9ffebb0fb (#17510)
1 parent d47f86e commit 2587078

File tree

7 files changed

+30
-9
lines changed

7 files changed

+30
-9
lines changed

compiler/src/iree/compiler/Codegen/Common/IREEComprehensiveBufferizePass.cpp

+8
Original file line numberDiff line numberDiff line change
@@ -260,4 +260,12 @@ void addIREEComprehensiveBufferizePasses(
260260
addIREEPostBufferizationPasses(funcPassManager);
261261
}
262262

263+
void addConstantBufferizePasses(OpPassManager &funcPassManager) {
264+
OneShotBufferizationOptions options;
265+
options.copyBeforeWrite = true;
266+
options.enforceAliasingInvariants = false;
267+
options.opFilter.allowOperation(arith::ConstantOp::getOperationName());
268+
funcPassManager.addPass(bufferization::createOneShotBufferizePass(options));
269+
}
270+
263271
} // namespace mlir::iree_compiler

compiler/src/iree/compiler/Codegen/Common/Passes.h

+2
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ void addIREEComprehensiveBufferizePasses(
4545
std::nullopt,
4646
std::optional<BufferizationOptions::MemCpyFn> memCpyFn = std::nullopt);
4747

48+
void addConstantBufferizePasses(OpPassManager &funcPassManager);
49+
4850
std::unique_ptr<OperationPass<LLVM::LLVMFuncOp>> createAddFastMathFlagsPass();
4951

5052
/// Pass to bubble up ordinal operations to allow workgroup count computation

compiler/src/iree/compiler/Codegen/LLVMCPU/DispatchABI.cpp

+16-5
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,9 @@ ExecutableLibraryDI::getArrayOf(LLVM::DITypeAttr typeAttr, int64_t count) {
154154
builder.getContext(), builder.getI64IntegerAttr(count),
155155
/*lowerBound=*/nullptr, /*upperBound=*/nullptr,
156156
/*stride=*/nullptr),
157-
});
157+
},
158+
/*dataLocation=*/nullptr, /*rank=*/nullptr, /*allocated=*/nullptr,
159+
/*associated=*/nullptr);
158160
}
159161

160162
LLVM::DIDerivedTypeAttr
@@ -226,7 +228,9 @@ LLVM::DICompositeTypeAttr ExecutableLibraryDI::getProcessorV0T() {
226228
/*alignInBits=*/0,
227229
{
228230
getMemberOf("data", getArrayOf(getUint64T(), 8), &offsetInBits),
229-
});
231+
},
232+
/*dataLocation=*/nullptr, /*rank=*/nullptr, /*allocated=*/nullptr,
233+
/*associated=*/nullptr);
230234
}
231235

232236
LLVM::DIDerivedTypeAttr ExecutableLibraryDI::getEnvironmentV0T() {
@@ -252,7 +256,10 @@ LLVM::DIDerivedTypeAttr ExecutableLibraryDI::getEnvironmentV0T() {
252256
getPtrOf(getPtrOf(getConstOf(getVoidPtr()))),
253257
&offsetInBits),
254258
getMemberOf("processor", getProcessorV0T(), &offsetInBits),
255-
}));
259+
},
260+
/*dataLocation=*/nullptr,
261+
/*rank=*/nullptr, /*allocated=*/nullptr,
262+
/*associated=*/nullptr));
256263
}
257264

258265
LLVM::DIDerivedTypeAttr ExecutableLibraryDI::getDispatchStateV0T() {
@@ -286,7 +293,9 @@ LLVM::DIDerivedTypeAttr ExecutableLibraryDI::getDispatchStateV0T() {
286293
getMemberOf("binding_lengths",
287294
getPtrOf(getConstOf(getArrayOf(getSizeT(), 64))),
288295
&offsetInBits),
289-
}));
296+
},
297+
/*dataLocation=*/nullptr, /*rank=*/nullptr, /*allocated=*/nullptr,
298+
/*associated=*/nullptr));
290299
}
291300

292301
LLVM::DIDerivedTypeAttr ExecutableLibraryDI::getWorkgroupStateV0T() {
@@ -308,7 +317,9 @@ LLVM::DIDerivedTypeAttr ExecutableLibraryDI::getWorkgroupStateV0T() {
308317
getMemberOf("processor_id", getUint32T(), &offsetInBits),
309318
getMemberOf("local_memory", getVoidPtr(), &offsetInBits),
310319
getMemberOf("local_memory_size", getUint32T(), &offsetInBits),
311-
}));
320+
},
321+
/*dataLocation=*/nullptr, /*rank=*/nullptr, /*allocated=*/nullptr,
322+
/*associated=*/nullptr));
312323
}
313324

314325
//------------------------------------------------------------------------------

compiler/src/iree/compiler/Codegen/LLVMCPU/Passes.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -661,7 +661,7 @@ static void addLowerToLLVMPasses(OpPassManager &modulePassManager,
661661
.addPass(createCSEPass);
662662

663663
// Handled tensor-type constants.
664-
modulePassManager.addPass(arith::createConstantBufferizePass());
664+
addConstantBufferizePasses(modulePassManager);
665665

666666
FunctionLikeNest(modulePassManager)
667667
.addPass(createFoldTensorExtractOpPass)

compiler/src/iree/compiler/Codegen/LLVMGPU/Passes.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -836,7 +836,7 @@ static void addLowerToLLVMGPUPasses(OpPassManager &modulePassManager,
836836
.addPass(createCSEPass);
837837

838838
// Handled tensor constants.
839-
modulePassManager.addPass(arith::createConstantBufferizePass());
839+
addConstantBufferizePasses(modulePassManager);
840840

841841
FunctionLikeNest funcPassManager(modulePassManager);
842842
funcPassManager.addPass(createFoldTensorExtractOpPass)

compiler/src/iree/compiler/Dialect/VMVX/Transforms/Passes.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ buildVectorVMVXTransformPassPipeline(OpPassManager &variantPassManager) {
9090
.addPass(memref::createExpandOpsPass);
9191

9292
// Handle tensor-type constants.
93-
modulePassManager.addPass(arith::createConstantBufferizePass());
93+
addConstantBufferizePasses(modulePassManager);
9494
FunctionLikeNest(modulePassManager)
9595
.addPass(createFoldTensorExtractOpPass)
9696

third_party/llvm-project

0 commit comments

Comments
 (0)