[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