<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/61155>61155</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MLIR]crashed on ` -convert-memref-to-spirv` with assertion `dstBits % srcBits == 0'
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
sweead
</td>
</tr>
</table>
<pre>
This bug has been fixed.
Test on https://github.com/llvm/llvm-project/tree/release/15.x
```
//mlir-opt test.mlir -convert-memref-to-spirv
module {
func.func @main(%arg0: memref<4xi64>, %arg1: memref<92xi64>) {
%c0 = arith.constant 0 : index
%c96 = arith.constant 96 : index
%c1 = arith.constant 1 : index
%c0_i64 = arith.constant 0 : i64
%0 = bufferization.to_tensor %arg1 : memref<92xi64>
%1 = bufferization.to_tensor %arg0 : memref<4xi64>
%2 = memref.alloc() {alignment = 128 : i64} : memref<96xi64>
scf.for %arg2 = %c0 to %c96 step %c1 {
memref.store %c0_i64, %2[%arg2] : memref<96xi64>
}
return
}
}
```
crash trace:
```
mlir-opt: /data/llvm/mlir/lib/Conversion/MemRefToSPIRV/MemRefToSPIRV.cpp:463: virtual mlir::LogicalResult (anonymous namespace)::IntStoreOpPattern::matchAndRewrite(memref::StoreOp, mlir::OpConversionPattern<mlir::memref::StoreOp>::OpAdaptor, mlir::ConversionPatternRewriter &) const: Assertion `dstBits % srcBits == 0' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: mlir-opt test.mlir -convert-memref-to-spirv
#0 0x000000000047f3aa llvm::sys::PrintStackTrace(llvm::test_ostream&, int) /data/llvm/llvm/lib/Support/Unix/Signals.inc:569:11
#1 0x000000000047f55b PrintStackTraceSignalHandler(void*) /data/llvm/llvm/lib/Support/Unix/Signals.inc:636:1
#2 0x000000000047dbd6 llvm::sys::RunSignalHandlers() /data/llvm/llvm/lib/Support/Signals.cpp:103:5
#3 0x000000000047fc85 SignalHandler(int) /data/llvm/llvm/lib/Support/Unix/Signals.inc:407:1
#4 0x00007f2aa1dce980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
#5 0x00007f2aa0cbee87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
#6 0x00007f2aa0cc07f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
#7 0x00007f2aa0cb03fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
#8 0x00007f2aa0cb0472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
#9 0x00000000026c049b (anonymous namespace)::IntStoreOpPattern::matchAndRewrite(mlir::memref::StoreOp, mlir::memref::StoreOpAdaptor, mlir::ConversionPatternRewriter&) const /data/llvm/mlir/lib/Conversion/MemRefToSPIRV/MemRefToSPIRV.cpp:465:7
#10 0x00000000026c6ecf mlir::OpConversionPattern<mlir::memref::StoreOp>::matchAndRewrite(mlir::Operation*, llvm::ArrayRef<mlir::Value>, mlir::ConversionPatternRewriter&) const /data/llvm/mlir/include/mlir/Transforms/DialectConversion.h:423:12
#11 0x0000000002a81778 mlir::ConversionPattern::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const /data/llvm/mlir/lib/Transforms/Utils/DialectConversion.cpp:1704:10
#12 0x000000000379264f mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>) /data/llvm/mlir/lib/Rewrite/PatternApplicator.cpp:201:25
#13 0x0000000002a8b540 (anonymous namespace)::OperationLegalizer::legalizeWithPattern(mlir::Operation*, mlir::ConversionPatternRewriter&) /data/llvm/mlir/lib/Transforms/Utils/DialectConversion.cpp:1986:21
#14 0x0000000002a8ac5b (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) /data/llvm/mlir/lib/Transforms/Utils/DialectConversion.cpp:1894:17
#15 0x0000000002a8a17f (anonymous namespace)::OperationConverter::convert(mlir::ConversionPatternRewriter&, mlir::Operation*) /data/llvm/mlir/lib/Transforms/Utils/DialectConversion.cpp:2407:26
#16 0x0000000002a8366b (anonymous namespace)::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>, llvm::function_ref<void (mlir::Diagnostic&)>) /data/llvm/mlir/lib/Transforms/Utils/DialectConversion.cpp:2456:16
#17 0x0000000002a83337 mlir::applyPartialConversion(llvm::ArrayRef<mlir::Operation*>, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>*) /data/llvm/mlir/lib/Transforms/Utils/DialectConversion.cpp:3270:22
#18 0x0000000002a838b2 mlir::applyPartialConversion(mlir::Operation*, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>*) /data/llvm/mlir/lib/Transforms/Utils/DialectConversion.cpp:3276:10
#19 0x00000000026c88d5 (anonymous namespace)::ConvertMemRefToSPIRVPass::runOnOperation() /data/llvm/mlir/lib/Conversion/MemRefToSPIRV/MemRefToSPIRVPass.cpp:55:14
#20 0x00000000029e4e5a mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /data/llvm/mlir/lib/Pass/Pass.cpp:471:21
#21 0x00000000029e5454 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /data/llvm/mlir/lib/Pass/Pass.cpp:534:16
#22 0x00000000029e6d1c mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) /data/llvm/mlir/lib/Pass/Pass.cpp:837:10
#23 0x00000000029e6c3c mlir::PassManager::run(mlir::Operation*) /data/llvm/mlir/lib/Pass/Pass.cpp:817:60
#24 0x00000000029de27c performActions(llvm::test_ostream&, bool, bool, llvm::SourceMgr&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>) /data/llvm/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:84:17
#25 0x00000000029ddfa3 processBuffer(llvm::test_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, bool, bool, bool, bool, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, llvm::ThreadPool*) /data/llvm/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:124:12
#26 0x00000000029dddaf mlir::MlirOptMain(llvm::test_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool)::$_0::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::test_ostream&) const /data/llvm/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:164:12
#27 0x00000000029ddccd mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::test_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::test_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool)::$_0>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::test_ostream&) /data/llvm/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#28 0x0000000002b0ad09 llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::test_ostream&)>::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::test_ostream&) const /data/llvm/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
#29 0x0000000002b0a2e5 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::test_ostream&)>, llvm::test_ostream&, bool, bool) /data/llvm/mlir/lib/Support/ToolUtilities.cpp:28:12
#30 0x00000000029dd039 mlir::MlirOptMain(llvm::test_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool) /data/llvm/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:169:10
#31 0x00000000029dd17a mlir::MlirOptMain(llvm::test_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::PassPipelineCLParser const&, mlir::DialectRegistry&, bool, bool, bool, bool, bool) /data/llvm/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:187:10
#32 0x00000000029ddae6 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) /data/llvm/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:269:14
#33 0x0000000000411f4e main /data/llvm/mlir/tools/mlir-opt/mlir-opt.cpp:247:7
#34 0x00007f2aa0ca1c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#35 0x0000000000411dda _start (/data/llvm/mlir/build/bin/mlir-opt+0x411dda)
Aborted (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWttu47gZfhrmhoghUUdf5MITx2iKBGMk2S3QG4OiKJsdmVRJKuPs0xekzrIdOxkDm7Y7GMSSSP2H7z-SIlaKrTmlNyD4BoL5FS71Rsgb9ZNSnF4lIn27edkwBZNyDTdYwYRSDjO2o-kEOHPgzKq_L1RpKDjcaF0o4M0AWgC0WDO9KZMJEVuAFnn-2vxcF1L8ixIN0EJLSgFaSJpTrMyVG0x2fcogdOr_1a0lvM2ZvBaFhpoqPTF38JoI_kqlvt7SraTZtRbXqmDytU9rK9IypxBE36p7CLOSk4n5A4HvbDHjAMUABViuHeDNYEULeLf-joU-8O4AuoXVuDsYn6J2wrRPH5rZxIHAm0Msmd5MiOBKY66heTiDjKd0N5w9DQ9Nt08PzncPTXePzXZWLPTfkSf0B_Mr0ZMyy6hkf2DNBJ9osdKUKyEbKOARLPqE3DMIOfAw6H06yNKp5kxwngtiTWZRxzlb8y3l2s5xUdyqFM1HMoZ7tBXJJlkrSsWmMp4WjV2UpkWDed_IsBFIaSFph3PtLsgEV0UWBCckAdG8oyupLiVv7tuh7uJQiBCJ1QZqiQk1kXhoShM_RhKAFinWuItQM2juWALQ4tZGlWKCA7R4pNsnmr2I5-X90-_j-wkpCuDN_NAzVF-Z1CXOoSXmzYA3exBrRnD-RFWZawhQjLngb1tRKsjxlqrCyIum1eR7rp8NlN-LJdaaSl493mJNNjOePtGfkmkKUNzgaEbrNwzoHdvvRadCS-u2Gz9EwLtr3p2luNBCDknuEazFMb4TGle0MWVQmClFpXF1CEInVfob08o4BFSSVNfe3PiZA1AEM8zyNq0uH-5mz3dQlcmWaYht_pW0EFIbd_xwmmVKlVQBtICYp5BxkpcphXpDYeUtCSY_rMfU7J81Jj9gWm6L1oWcSeXpSynWEm8hluvSxJqy7vzRhAwB8hzo7Jz2nx9lHsbQym9hVm-qulhKZtwBkx8v1qlR3E0y_FZCaUnx1qJ_CxnXNh-M_br5sX79XBYGTIAWv3G2Mw_YmuNcTRgnwJsFoXFE1-2EdcfCBkECR5JVNP6GeZpTCVD8KlgK0OyXpQm90EjTCYNGwqRJGh5C7qnkA5lUkyvPlKYRowpt1zGhHXRieGNMSBzAMQiXMIfvREMA_JpzlCGM3ZTQaezA1UpSm4BX0iaYlvouDlehf50zXu6u17ysBgq9kRSnEyUmDkDfnJ2LprFjUlDLJuizcUhCaRxBiZkyOX6RlCxPTfzlLCHXt7___ec_k_YWTVAE0EJZPQBaTCbm7k2ltDBxWFZqqjf1aqXhpbm1pCfWAU1_4XSShENJiBNlLsSJsJqeJ4lOKzTsW5ZJPGISjdR1vAzD1QrbLLYy-WmV4PN1r95rLyqW0yHLeMzSj9AZtiPGaqG1mmdeGVht2ndLFBLHnyaXKzjvVo5BnTgw4WP1pF9OLl-nA-DNoqar9lxnhFpISXahOvoeit8LKm03aBPlbS-LzaTEb0-2Seqm_47zktaN-KUQrMth9-BFYq4yIbcmUucM55TojsVkY-BDJhe6qMNvUCAQjt0oit8T8ePQdCOf95OBar9plh9WsU74kePbvN9pOag8XjRFoZ_tCzYripwRbDz9wlr2HcSs28yLq6qTToTI4YB0TaDuxyxItescJWJK9i8TeafpPU33QKkcWLDFcLEHdm025Ji8joLOat7IN5PAd05lxNYuD3SNc_YHreXO69t_ML1pXPk8e56K0kt67jQ2LRNyOwz8EQaYBCerwikMvqDi8dSGbC-xB2PF3Sg7W_GKgW4Ur3v6gd7vazdci_URuqjeqGoRUdjpHY709sLwfIMf1rsdVoNFyMFKNVD2w1lnzvCaC6UZ-UBq-CBigV1V9BCLxoh5XtQzHy6K_G2JpWY47_cbn0DikPe8YLmmes9pFlL8QRufqj3smepe3uwDO6dc0WeqjwuwP_0RF_c8E---Ypdypp-5u7zveihyjEF6zUQ8tkScoHMs8bFs9P-MeDhqbMaLhjhOg1PZok4Sg_Z6iVW9-JYl_857Wh1eeX-yizdsamUC08i7fqsKGnbyU-rTAPfMm1KNWd6A_iLMkkepZmXSiD7qVZTa86PjHjbjOH9TTD1ijtfUrnZMc2Z-S26_N6RHd2kGeFR8Fz1l_cgd1nXkjrQN_MD_sLZLVtCc8XFBN1NbJd4tZp9Sf9jsKnXPlZZ2U80sEfe64f6EinM1UMu-xJJybeKqidQzwmYf4cDzh2UBoRHCYeqSkWCNqi2eZsmvzkxIe3h9XOjYi4bxjLyx0MQ7JfQ74n5CItdIFPYkGjag05SiiMCCSpO0ZmS_qziwtdm4UfPbTX4WpST0cb3vp48P90-3gmu603vJ-HPrlmFMnNmaCGEzcvvlAS0ecya_F_oRsyYtx6PWFQUjyNIMe7CQglClvtlPSacQUzqtxkrO_l3SVaEl8G67Vx7pVsi3hlZvfkozXOZ6ldKcanr8nbpC7dvmuK0uh3rfznWte6JrprR826vTL3a3c2mlOaeenmMwF_nDXRAUji2W4v7-QI_E17Hcn2OZU_5S_dadBkD-yqkuhU1MpkCYhgKg-M8Aas9eZ-4-neVU4diporFTEZIe_bL4GWt-DQjb_VKC8zzB5McqG-6x_hU9vxQ9dwY0wdd_Fj4HgubYV7FuS7p-MJu_ALR4fnlY1CDj_G6nJVbVbnQwipjh-jFxcOpM_xci478s-X3OmmE8suZ0bE1Eg16EqCJnesbT5agx-to54GtY7vSUvZxyosZ1n7JNtftNs5xpRptlARrZ1nPGtc3xpn81TL-Q8i_TgkyHy0nPHZvJjfBXN9MQ8mab4PZhiaWicrCd95Wwj0dLeQ-Nscc0PIp9vbFCNrjaQhmteJ-1ZHz9RLPztb6IVqjyqG6Xbnx4xnUzn8ItZvwoO73PqLls9_SjwUf94TkZh2CXxBFcrXKWkJXSWOpVw_GcAx1Elc1JlurSDlo69nCH5_vd6Q7DPhjrmKYYVozrQx4HFW1kSYxFe-p-c3YVjfa4xywRUlP77YQISe2JNZq2w-2xx6v0xkun3hRf0Rs3jKI48Fw_vtrc-GmQuXEShoSQbJqiNEOIJlEcxxRhx0-u2A1ykOd4juf67tSJJwFOEs_zfDee-kFAM-A7dItZPjE6TIRcX9nDdjeh6wbBVY4Tmit7uhohTn9COwgQAsH8St7YY3pJuVbAd3KmtOqoaKZzeyz78eH-CQRze1CPprA6THj8eF3owJ9MbyD-wNnDq1LmN58_VGhV_U8AAAD__5-FRao">