[Mlir-commits] [mlir] [MLIR][MemRef] Extend narrow-type emulation for dynamic offsets (PR #196945)
Michał Górny
llvmlistbot at llvm.org
Tue May 12 01:13:02 PDT 2026
mgorny wrote:
I'm seeing a regression on 32-bit x86:
```
FAIL: MLIR :: Dialect/MemRef/emulate-narrow-type.mlir (1221 of 3839)
******************** TEST 'MLIR :: Dialect/MemRef/emulate-narrow-type.mlir' FAILED ********************
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 1
/var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/mlir-opt --test-emulate-narrow-int="memref-load-bitwidth=8 assume-aligned=true" --cse --verify-diagnostics --split-input-file /var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir/test/Dialect/MemRef/emulate-narrow-type.mlir | /usr/lib/llvm/23/bin/FileCheck /var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir/test/Dialect/MemRef/emulate-narrow-type.mlir
# executed command: /var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/mlir-opt '--test-emulate-narrow-int=memref-load-bitwidth=8 assume-aligned=true' --cse --verify-diagnostics --split-input-file /var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir/test/Dialect/MemRef/emulate-narrow-type.mlir
# .---command stderr------------
# | mlir-opt: /usr/lib/llvm/23/include/llvm/ADT/SmallVector.h:300: T& llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::operator[](size_type) [with T = long long int; <template-parameter-1-2> = void; reference = long long int&; size_type = unsigned int]: Assertion `idx < size()' failed.
# | PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and instructions to reproduce the bug.
# | Stack dump:
# | 0. Program arguments: /var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/mlir-opt "--test-emulate-narrow-int=memref-load-bitwidth=8 assume-aligned=true" --cse --verify-diagnostics --split-input-file /var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir/test/Dialect/MemRef/emulate-narrow-type.mlir
# | #0 0xffffffffe1de8a50 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm/23/lib/libLLVM.so.23.0git8789401c+0x11fda50)
# | #1 0xffffffffe1de8fcf (/usr/lib/llvm/23/lib/libLLVM.so.23.0git8789401c+0x11fdfcf)
# | #2 0xffffffffe1de543d llvm::sys::RunSignalHandlers() (/usr/lib/llvm/23/lib/libLLVM.so.23.0git8789401c+0x11fa43d)
# | #3 0xffffffffe1de5666 (/usr/lib/llvm/23/lib/libLLVM.so.23.0git8789401c+0x11fa666)
# | #4 0xfffffffff7f675a0 (linux-gate.so.1+0x5a0)
# | #5 0xfffffffff7f67579 (linux-gate.so.1+0x579)
# | #6 0xffffffffe078a597 (/usr/lib/libc.so.6+0x96597)
# | #7 0xffffffffe072d2e1 raise (/usr/lib/libc.so.6+0x392e1)
# | #8 0xffffffffe0713de7 abort (/usr/lib/libc.so.6+0x1fde7)
# | #9 0xffffffffe0713d34 __assert_perror_fail (/usr/lib/libc.so.6+0x1fd34)
# | #10 0xffffffffe072538b __assert_fail (/usr/lib/libc.so.6+0x3138b)
# | #11 0xffffffffef9d1a1f mlir::memref::isStaticShapeAndContiguousRowMajor(mlir::MemRefType) (.cold) MemRefUtils.cpp:0:0
# | #12 0xfffffffff2ded4e3 (anonymous namespace)::ConvertMemRefReinterpretCast::matchAndRewrite(mlir::memref::ReinterpretCastOp, mlir::memref::ReinterpretCastOpAdaptor, mlir::ConversionPatternRewriter&) const EmulateNarrowType.cpp:0:0
# | #13 0xfffffffff033cf24 llvm::LogicalResult mlir::ConversionPattern::dispatchTo1To1<mlir::OpConversionPattern<mlir::memref::ReinterpretCastOp>, mlir::memref::ReinterpretCastOp>(mlir::OpConversionPattern<mlir::memref::ReinterpretCastOp> const&, mlir::memref::ReinterpretCastOp, mlir::memref::ReinterpretCastOp::GenericAdaptor<llvm::ArrayRef<mlir::ValueRange>>, mlir::ConversionPatternRewriter&) (/var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/../lib/libMLIR.so.23.0git8789401c+0x2904f24)
# | #14 0xfffffffff033d0c2 mlir::OpConversionPattern<mlir::memref::ReinterpretCastOp>::matchAndRewrite(mlir::Operation*, llvm::ArrayRef<mlir::ValueRange>, mlir::ConversionPatternRewriter&) const (/var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/../lib/libMLIR.so.23.0git8789401c+0x29050c2)
# | #15 0xfffffffff531da1e mlir::ConversionPattern::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const (/var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/../lib/libMLIR.so.23.0git8789401c+0x78e5a1e)
# | #16 0xfffffffff4eba879 mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<llvm::LogicalResult (mlir::Pattern const&)>)::'lambda'()::operator()() const PatternApplicator.cpp:0:0
# | #17 0xfffffffff4ebbb8a mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<llvm::LogicalResult (mlir::Pattern const&)>) (/var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/../lib/libMLIR.so.23.0git8789401c+0x7483b8a)
# | #18 0xfffffffff532127f (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*) DialectConversion.cpp:0:0
# | #19 0xfffffffff53228db mlir::OperationConverter::convert(mlir::Operation*, bool) (/var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/../lib/libMLIR.so.23.0git8789401c+0x78ea8db)
# | #20 0xfffffffff5328a1b mlir::OperationConverter::applyConversion(llvm::ArrayRef<mlir::Operation*>) (/var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/../lib/libMLIR.so.23.0git8789401c+0x78f0a1b)
# | #21 0xfffffffff532b829 applyConversion(llvm::ArrayRef<mlir::Operation*>, mlir::ConversionTarget const&, mlir::FrozenRewritePatternSet const&, mlir::ConversionConfig, (anonymous namespace)::OpConversionMode) DialectConversion.cpp:0:0
# | #22 0xfffffffff532ba54 mlir::applyPartialConversion(mlir::Operation*, mlir::ConversionTarget const&, mlir::FrozenRewritePatternSet const&, mlir::ConversionConfig) (/var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/../lib/libMLIR.so.23.0git8789401c+0x78f3a54)
# | #23 0x56b54c03 (anonymous namespace)::TestEmulateNarrowTypePass::runOnOperation() TestEmulateNarrowType.cpp:0:0
# | #24 0xfffffffff4e7c1b1 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/../lib/libMLIR.so.23.0git8789401c+0x74441b1)
# | #25 0xfffffffff4e7c54d mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/../lib/libMLIR.so.23.0git8789401c+0x744454d)
# | #26 0xfffffffff4e7e684 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::'lambda'(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&)::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const Pass.cpp:0:0
# | #27 0xfffffffff4e79afb mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (/var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/../lib/libMLIR.so.23.0git8789401c+0x7441afb)
# | #28 0xfffffffff4e7bff5 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/../lib/libMLIR.so.23.0git8789401c+0x7443ff5)
# | #29 0xfffffffff4e7c54d mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/../lib/libMLIR.so.23.0git8789401c+0x744454d)
# | #30 0xfffffffff4e7cd59 mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) (/var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/../lib/libMLIR.so.23.0git8789401c+0x7444d59)
# | #31 0xfffffffff4e7e3e8 mlir::PassManager::run(mlir::Operation*) (/var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/../lib/libMLIR.so.23.0git8789401c+0x74463e8)
# | #32 0xfffffffff52c1550 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
# | #33 0xfffffffff52c206e llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::'lambda'(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef, llvm::raw_ostream&)>(int, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef const&, llvm::raw_ostream&) MlirOptMain.cpp:0:0
# | #34 0xfffffffff4f064f1 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef)::'lambda'(llvm::StringRef)::operator()(llvm::StringRef) const ToolUtilities.cpp:0:0
# | #35 0xfffffffff4f06a78 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) (/var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/../lib/libMLIR.so.23.0git8789401c+0x74cea78)
# | #36 0xfffffffff52b973c mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/../lib/libMLIR.so.23.0git8789401c+0x788173c)
# | #37 0xfffffffff52c265d mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/../lib/libMLIR.so.23.0git8789401c+0x788a65d)
# | #38 0xfffffffff52c2ac9 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/../lib/libMLIR.so.23.0git8789401c+0x788aac9)
# | #39 0x56b030af main (/var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/mlir-opt+0x4ea0af)
# | #40 0xffffffffe0716121 (/usr/lib/libc.so.6+0x22121)
# | #41 0xffffffffe07161e8 __libc_start_main (/usr/lib/libc.so.6+0x221e8)
# | #42 0x56b03167 _start (/var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir_build-abi_x86_32.x86/bin/mlir-opt+0x4ea167)
# `-----------------------------
# error: command failed with exit status: -6
# executed command: /usr/lib/llvm/23/bin/FileCheck /var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir/test/Dialect/MemRef/emulate-narrow-type.mlir
# .---command stderr------------
# | /var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir/test/Dialect/MemRef/emulate-narrow-type.mlir:358:17: error: CHECK-LABEL: expected string not found in input
# | // CHECK-LABEL: func @reinterpret_cast_memref_load_0D()
# | ^
# | <stdin>:164:61: note: scanning from here
# | func.func @reinterpret_cast_memref_rank3_dynamic_offset_i4(%arg0: memref<32xi8>, %arg1: index) -> memref<64xi8, strided<[1], offset: ?>> {
# | ^
# | <stdin>:167:4: note: possible intended match here
# | return %reinterpret_cast : memref<64xi8, strided<[1], offset: ?>>
# | ^
# |
# | Input file: <stdin>
# | Check file: /var/tmp/portage/llvm-core/mlir-23.0.0.9999/work/mlir/test/Dialect/MemRef/emulate-narrow-type.mlir
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 159: }
# | 160:
# | 161: // -----
# | 162: #map = affine_map<()[s0] -> (s0 floordiv 2)>
# | 163: module {
# | 164: func.func @reinterpret_cast_memref_rank3_dynamic_offset_i4(%arg0: memref<32xi8>, %arg1: index) -> memref<64xi8, strided<[1], offset: ?>> {
# | label:358'0 X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
# | 165: %0 = affine.apply #map()[%arg1]
# | label:358'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 166: %reinterpret_cast = memref.reinterpret_cast %arg0 to offset: [%0], sizes: [64], strides: [1] : memref<32xi8> to memref<64xi8, strided<[1], offset: ?>>
# | label:358'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 167: return %reinterpret_cast : memref<64xi8, strided<[1], offset: ?>>
# | label:358'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | label:358'1 ? possible intended match
# | 168: }
# | label:358'0 ~~~
# | 169: }
# | label:358'0 ~~
# | 170:
# | label:358'0 ~
# | 171: // -----
# | label:358'0 ~~~~~~~~~
# | 172: // -----
# | label:358'0 ~~~~~~~~~
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
********************
```
https://github.com/llvm/llvm-project/pull/196945
More information about the Mlir-commits
mailing list