<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/130074>130074</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [MLIR] Assertion `llvm::all_of(basis, [](int64_t s) { return s > 0; }) && "basis must be nonnegative"' failed.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            mlir
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          RiRi114
      </td>
    </tr>
</table>

<pre>
    Test on commit: 0f9720a6

steps to reproduceļ¼š
`mlir-opt  temp.mlir   -transform-interpreter
`

test case:
```mlir
module {
  func.func @matrix_addition(%a: memref<2 x 2 x f32>, %b: memref<2 x 2 x f32>, %result: memref<2 x 2 x f32>, %stream: !gpu.async.token) -> memref<2 x 2 x f32> {
    %zero = arith.constant 0 : index
    %two = arith.constant 2 : index
    %name = gpu.launch async[%stream] blocks(%arg3, %arg4, %arg5) in (%arg9 = %zero, %arg10 = %zero, %arg11 = %zero) threads(%arg6, %arg7, %arg8) in (%arg12 = %zero, %arg13 = %zero, %arg14 = %zero) {
      scf.forall (%i, %j) in (%zero, %two) {
        %valA = memref.load %a[%i, %j] : memref<2 x 2 x f32>
        %valB = memref.load %b[%i, %j] : memref<2 x 2 x f32>
        %sum = arith.addf %valA, %valB : f32
        memref.store %sum, %result[%i, %j] : memref<2 x 2 x f32>
      } { mapping = [#gpu.thread<y>, #gpu.thread<x>] }
      gpu.terminator
    }

    return %result : memref<2 x 2 x f32>
  }

  module attributes {transform.with_named_sequence} {
    transform.named_sequence @__transform_main(%arg0: !transform.any_op {transform.readonly}) {
      %funcop = transform.structured.match ops{["gpu.launch"]} in %arg0 : (!transform.any_op) -> !transform.any_op
      transform.gpu.map_nested_forall_to_threads %funcop block_dims = [2, 2, 1] : (!transform.any_op) -> !transform.any_op
      transform.yield
    }
  }
}
```

crash trace:
```
mlir-opt: /home/llvm-project/mlir/lib/Dialect/Utils/IndexingUtils.cpp:93: int64_t mlir::computeProduct(ArrayRef<int64_t>): Assertion `llvm::all_of(basis, [](int64_t s) { return s > 0; }) && "basis must be nonnegative"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /home/fuzzing/llvm-project/build/bin/mlir-opt temp.mlir -transform-interpreter
 #0 0x000000000113ce77 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x113ce77)
 #1 0x000000000113aa0e llvm::sys::RunSignalHandlers() (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x113aa0e)
 #2 0x000000000113d855 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #3 0x0000717cefc68520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x0000717cefcbc9fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #5 0x0000717cefc68476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #6 0x0000717cefc4e7f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #7 0x0000717cefc4e71b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #8 0x0000717cefc5fe96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #9 0x00000000069f9750 mlir::linearize(llvm::ArrayRef<long>, llvm::ArrayRef<long>) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x69f9750)
#10 0x000000000194df72 mlir::transform::gpu::mapOneForallToThreadsImpl(mlir::RewriterBase&, std::optional<mlir::transform::TransformOpInterface>, mlir::scf::ForallOp, llvm::ArrayRef<long>, long, bool) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x194df72)
#11 0x000000000195c321 mlir::WalkResult llvm::function_ref<mlir::WalkResult (mlir::Operation*)>::callback_fn<std::enable_if<(!(llvm::is_one_of<mlir::scf::ForallOp, mlir::Operation*, mlir::Region*, mlir::Block*>::value)) && (std::is_same<mlir::WalkResult, mlir::WalkResult>::value), mlir::WalkResult>::type mlir::detail::walk<(mlir::WalkOrder)1, mlir::ForwardIterator, mlir::transform::gpu::mapNestedForallToThreadsImpl(mlir::RewriterBase&, std::optional<mlir::transform::TransformOpInterface>, mlir::Operation*, llvm::ArrayRef<long>, long, bool)::$_8, mlir::scf::ForallOp, mlir::WalkResult>(mlir::Operation*, mlir::transform::gpu::mapNestedForallToThreadsImpl(mlir::RewriterBase&, std::optional<mlir::transform::TransformOpInterface>, mlir::Operation*, llvm::ArrayRef<long>, long, bool)::$_8&&)::'lambda'(mlir::Operation*)>(long, mlir::Operation*) GPUTransformOps.cpp:0:0
#12 0x00000000012714f7 mlir::WalkResult mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x12714f7)
#13 0x000000000194f413 mlir::transform::gpu::mapNestedForallToThreadsImpl(mlir::RewriterBase&, std::optional<mlir::transform::TransformOpInterface>, mlir::Operation*, llvm::ArrayRef<long>, long, bool) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x194f413)
#14 0x000000000194fe11 mlir::transform::MapNestedForallToThreads::applyToOne(mlir::transform::TransformRewriter&, mlir::Operation*, mlir::transform::ApplyToEachResultList&, mlir::transform::TransformState&) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x194fe11)
#15 0x0000000001968962 mlir::DiagnosedSilenceableFailure mlir::transform::detail::applyTransformToEach<mlir::transform::MapNestedForallToThreads, llvm::iterator_range<llvm::filter_iterator_impl<mlir::Operation* const*, mlir::transform::TransformState::getPayloadOps(mlir::Value) const::'lambda'(mlir::Operation*), std::bidirectional_iterator_tag> >&>(mlir::transform::MapNestedForallToThreads, mlir::transform::TransformRewriter&, llvm::iterator_range<llvm::filter_iterator_impl<mlir::Operation* const*, mlir::transform::TransformState::getPayloadOps(mlir::Value) const::'lambda'(mlir::Operation*), std::bidirectional_iterator_tag> >&, llvm::SmallVectorImpl<mlir::transform::ApplyToEachResultList>&, mlir::transform::TransformState&) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x1968962)
#16 0x00000000019683da mlir::transform::TransformEachOpTrait<mlir::transform::MapNestedForallToThreads>::apply(mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x19683da)
#17 0x0000000001968051 mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Model<mlir::transform::MapNestedForallToThreads>::apply(mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x1968051)
#18 0x00000000069e7466 mlir::transform::TransformState::applyTransform(mlir::transform::TransformOpInterface) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x69e7466)
#19 0x0000000003a4fe30 applySequenceBlock(mlir::Block&, mlir::transform::FailurePropagationMode, mlir::transform::TransformState&, mlir::transform::TransformResults&) TransformOps.cpp:0:0
#20 0x0000000003a53ec6 mlir::transform::NamedSequenceOp::apply(mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x3a53ec6)
#21 0x00000000039fc621 mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Model<mlir::transform::NamedSequenceOp>::apply(mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x39fc621)
#22 0x00000000069e7466 mlir::transform::TransformState::applyTransform(mlir::transform::TransformOpInterface) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x69e7466)
#23 0x00000000069f3211 mlir::transform::applyTransforms(mlir::Operation*, mlir::transform::TransformOpInterface, mlir::RaggedArray<llvm::PointerUnion<mlir::Operation*, mlir::Attribute, mlir::Value> > const&, mlir::transform::TransformOptions const&, bool, llvm::function_ref<void (mlir::transform::TransformState&)>, llvm::function_ref<llvm::LogicalResult (mlir::transform::TransformState&)>) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x69f3211)
#24 0x0000000003a86324 mlir::transform::applyTransformNamedSequence(mlir::RaggedArray<llvm::PointerUnion<mlir::Operation*, mlir::Attribute, mlir::Value> >, mlir::transform::TransformOpInterface, mlir::ModuleOp, mlir::transform::TransformOptions const&) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x3a86324)
#25 0x0000000003a81188 (anonymous namespace)::InterpreterPass::runOnOperation() InterpreterPass.cpp:0:0
#26 0x00000000042452f7 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x42452f7)
#27 0x0000000004245b61 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x4245b61)
#28 0x000000000424825b mlir::PassManager::run(mlir::Operation*) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x424825b)
#29 0x00000000042408af performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#30 0x0000000004240503 llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, 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&)::$_3>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#31 0x00000000042ec4e8 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::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x42ec4e8)
#32 0x000000000423a151 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x423a151)
#33 0x000000000423a403 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x423a403)
#34 0x000000000423a612 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x423a612)
#35 0x000000000111a8d7 main (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x111a8d7)
#36 0x0000717cefc4fd90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#37 0x0000717cefc4fe40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#38 0x000000000111a435 _start (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x111a435)
Aborted (core dumped)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsW1lzo7i3_zTkRdUuEIvhIQ_Odm-qOv-kksz_PlIyHLCmQWIk0R33p78lCZvFduKkPT17dTIYjs7yO6uFQqSkJQM4d8ILJ7w6I61acXH-SB-p5wVnS56vz59BKsQZynhdU-X4C-QWyRy7JHLcheMupIJGIsWRgEbwvM3Aub5xLi6dRD91IreuqPjEG4WQgrqZ6Y8IoU9KECYLLupPlCkQjQAFwq6wjJUWnBEJjt9xsv80A8dd1DxvK0DO_MJxFwgVLctm-hdyArcmStCXlOQ5VZQzB8cODonWvYZaQOH4lxi9IP1T-Njxrx18iRwcLt8mESDbSr1NJ5UAUms6B3tl086IXLNspvgXYA5O0CfHvz7EYmsU0py-g-DI8a8QEVStZhlnUhGmkIs0d8pyeOmJ1be9tHgfLSM1GGKtXkValq2Q0VJHw9aC8AotK559kR2KovQ7E4kog_4y1FZRhrZkieHdGdDTee6B-974foLUSgDJe7lRTzzvL-OpXA8fEOAfuB9MBffwIySzYlZwQaqqk0C7lb-O5A5Yqm87TAzcX0m1MJKs12cVJ7lRwcLd8w2v0GvxNWV6sY_p8keYyrYeBBHJ82Kjf8euk7owq_ulnQ5ScQEdn3HWfEwnZ36l0UQ1aRrKSustzcrXgWujxPEv19vkG99_0fe1qPnVlqUhAFFTRhQXm5QwBN0HAaoVrNf9TU0Hq7vSRJQSdNkqkFr9bb2bfaNqlerky1MJv7XAMuhM7GT3pGMqXdrSdPs0rQll27B3u1rTLyZsnfJmLFtjwlm11tpOgtTBoa6feoV_NdBBKtFmqhWQz2qishXijdTrtAdwXzocjJ3wShtiksKohKxO8R61tjVw37ONSv0DLacmTcpAKshTm5Gp4mlXJAbam2qV5rSWm0jBOizML28TcydRak2hykfBsw0D-3vTsmxgZILIlV6eTVuabmddl7TK3ax4DQ6-qaqv9adG8F8hUw6-Ma0P31R06eCbK0oqe_sXRSvp4JtbXd8pK83nWdY0jr9IfFv5VRSkChkG_sLxFxmvm1bBg2nZysHxQgiyfjTR3VGbfEr08oWUIHQnRU7kap0sD-0CXjg4XhJJpck9M0c4ON4IlF2UbfJJ--QauY5_gTYhiCMHR8jB2HBBdSsVWgJinDEoiaJfQYcWnqOC0ArymeMuHj5fL56ukWyXNVWIoGVb6vGDC6UHkZVSjdQa4hsH35RUrdrlLON1h-curFTKFjSAiLAcUZZVbQ5IrQBZly1J9sW4Tct-UiT7gvK2bqwT3ZkNiwfBS0FqRETZ1sCUHHuyaL9_p6zcFb5saZXr_-tcvtkOS_2sdHBS0pXORe6Lu_nP8_wM5nPUe0iupb14EJQpo_qziT8c90SCfEt51-2xabKUKeua-MMGOPjCfekU0lFk1fUm6hLiwj51H1v2REtGqv8lLK9A2CHgNBppmb1GeKJRHochGsm20axhkbSkrOCpcrDphF85zc1l0q3YJJ1rfqwAvxMw9-YZFFkUh9jt7LB5_BJHaRR8qihrXz6VrLUPspnks8joHOAQu73GwZjhMkuKDDW2DqZf6GZQOZZ7EiVF1nMPp-oG8wiV0pj3XrWDedQzjsaMA5gXPiJLnbPvYovjeeH3bOc7bL3luxl6y55hPGYYFpBE72PoJ5AMDE-GERYlRTIP3UEhrigDIuj3cU4OqnHFWdmNNq8_P0F6dOpZ5XW-jutLEuTFHA-U35Ym-7FsWntRk-aewY3p0s_82fbo27qpHBz3qx_hm6AKxIX-kmcrj1S5fcYb3W9I5fiXB8U9bz7eN7e6Mhamsxqk-jUyK-yF1ea-eRvIS2Qu8SVacl6dpu5Y6Hpgx5UwCTMfewOt_49UXx7t4NnrqgccjUpqh9C91COA7xsQxH4DXphWft01f1JVuqmlBXP8yy3mwMiygpRq5nZAGsUklSlnoDv-UPZefA-pMHzyCOW-2xd6fNN3N8p-JVVrCvZwWIi3SlOZSlLDATzGvAf3d7m_QajWDQwoclCEVvb6G6m-WMjGHO5FrttH4o2Z33DxjYj8VmlkuBg_fCWj_mNm3z9FUk29-s58sqQODtL4iGQ95JbDkf7PBjQy_7b35hWplzlx8Pyt2oDjDduDZOh_Hn4ZGDQdeHRlG09UeO4FxXx_ZXs1mw7nyxuuP2293Im_TVKfoCdYbPqe4E-abRF4_j8tkk_SajVwPazBFFbwvMOw3h1As_vK2zTV-pnfMxghewioDeId2h-oVwsr8JpkKxuxn6lUO-wOyX9SRFlXnwhY8Lwe2HAMbBQn0XA4vKKkZFxC_kQrYBno4eKG0KoVcFj1YSWwYG-eWxBei8-DrhuFIe3qSCoIK_XcMCgYtFIg0i0F1Rk0FDh0GzK762_5b-IKm7mgHsi64iS_b-Qojv7bTSMd7_dV8GE6L2lOBWQ2p3uDFCnN9pZOvWhaSN-B5rsj_1_4d-EfwfJUk6r6L2SKi9up2UeVhC3Pn14VTN73VSGaVgU_J0copc25b54FoepDOb6Z003R-LHifHiBRlv-cTj7Ogo3OM-nOLvhK21tWFf39fHthfFA1-3ueA6vhuKPe-NDel1ylkGjDpSAo3vrXzgS3HDQh-PxDhPMgyh6X0kcd9qjsmc4A55m68no3Vs12jfzSVCA7yKj6FP3PqzbKoh3Ng9e90o3gzwI3pDSBIqO8_c68r1hkqDXvzdhd2xv6EP2ihf_Q2rIN0DcN3_v2tehsY0NPNo985Mii_BPr307Hvi35P1-AWBd3AcA_juWPOxPXhX4-LVvqmML5Mf2w_YbN9qnJWUJufnyPprWH7h5HfkL01IOTeljVovNiYjxbTt228F4E-BHRtm92baQo1V2J-GVjaCvnOboKI8PgnjnFcyEaf_gMy9pRqp9G0zHyjnNqxwdPn1wBeP-Ekf61pHBNap14z2lnxodPxjKd-ZgznRX-fjYOkkrM8D3bgknbvG8ONZiCONsXfNWIkZqkI0tOlbF2_4cwAORXYcQLbtnA3TNC_MJ5Z6xY_R1LcBBiEfbtcNmdd888_tG81nkpDFbsZ3gUUgYlY7vUAtGqrWk8o4wUoIYZnDLzPnU_GQHEjr7evTnU-uXkfdu6x9oAxWdbAla0q1RR-__HQ3HcJEWdcukEuboCRc7XMcEVrJ90On-QAQwdcsKPhgxToT4MhqUoXiCeIzD5UTRjel7o2v6QuIUGmodeg2TiYZuTArUgNA1YWFKvnzj_Mx2H0iuiIA8bZQYFccn3ooM7kpxuOHdfb59vORMwcvutHdXUXHfqDtC2SVnBS1HJWrwdDfdxweGtHGh66NDvesjzW5re8voby3s2H4HNRfri7YobHBv6XMoSFupNIcKFBxe03eCwy449Kp7L4bHOvP3N2i0d15Bph6hpFKJ9W54vBYClsTBQeqPX-v9OXzzRoR64wiFLIB4-Iq4qahasPxB8Ayk3Cj7x8TdXzEtXqUYbUkrQVn5CMXB2yepvsbB2-o7PpAXYJ94o23Nv3PengJNg1ePpj9FM3D9g2h2Y0W2InaAWLw3Ht5C4kQWBm7_dtcPphZGHj6JhT_FlMjr35z44_epnkfifI5qsvkjkx8792q49bKmxzGLPHnnsVSc5El_UnDnIGYBgYvSVK9JpSJCpQNLjhYBwUBEPMUn8ENkmZ8GocAPrbTFkgsFZpMg4wLMcW_IO002p_bP8nM_T_yEnMG5Nw88HCaBH5-tzgEvXS-J8rAIXfCCKArcPEtwkpA5Blj6Z_Qcuzh0fTfyPM_145mHiyTJghAHcRQnAE7gQk1oNdP6z7goz8wZ9XPPd915cFaRJVTy3P4JholT88cXZ-Lc2LtsS-kEbkWlkj0HRVVl_tJPj5ZOePXnOtV_1orq_OMn9ztgvp7j_w8AAP__JvqELw">