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

    <tr>
        <th>Summary</th>
        <td>
            Convert tensor to SPIRV pass invoke 'dyn_cast' on a non-existent value.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    MLIR built at commit https://github.com/llvm/llvm-project/commit/a1bd85cfc3b27fc736af35046811596a3b
Reproduced with:  
`mlir-opt --convert-tensor-to-spirv temp.mlir `

temp.mlir:
```mlir 
module {
  func.func @func1() {
 %cst = arith.constant dense<1668977777> : vector<4xi32>
    %38 = llvm.intr.matrix.transpose %cst {columns = 2 : i32, rows = 2 : i32} : vector<4xi32> into vector<4xi32>
    %39 = llvm.mlir.constant(0 : index) : i64
    %40 = llvm.extractelement %38[%39 : i64] : vector<4xi32>
 %41 = arith.extsi %40 : i32 to i64
    return 
  }
}


``` 

trace:
```console  
Assertion failed: (detail::isPresent(Val) && "dyn_cast on a non-existent value"), function dyn_cast, file Casting.h, line 648.
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 --convert-tensor-to-spirv temp.mlir
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  mlir-opt 0x00000001035dde70 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 72
1  mlir-opt                 0x00000001035de38c PrintStackTraceSignalHandler(void*) + 28
2  mlir-opt 0x00000001035dc43c llvm::sys::RunSignalHandlers() + 148
3  mlir-opt 0x00000001035dfff8 SignalHandler(int) + 252
4 libsystem_platform.dylib 0x000000019970d4c4 _sigtramp + 56
5 libsystem_pthread.dylib  0x00000001996f5ee0 pthread_kill + 288
6 libsystem_c.dylib        0x0000000199630340 abort + 168
7 libsystem_c.dylib        0x000000019962f754 err + 0
8  mlir-opt 0x000000010635fc10 decltype(auto) llvm::dyn_cast<mlir::IntegerType, mlir::Type>(mlir::Type const&) + 96
9  mlir-opt 0x000000010635fa74 mlir::IntegerType mlir::Type::dyn_cast<mlir::IntegerType>() const + 24
10 mlir-opt 0x00000001078048a0 mlir::Type::isInteger(unsigned int) const + 28
11 mlir-opt                 0x000000010604d0c4 isBoolScalarOrVector(mlir::Type) + 32
12 mlir-opt                 0x0000000106063a38 (anonymous namespace)::TypeCastingOpPattern<mlir::arith::ExtSIOp, mlir::spirv::SConvertOp>::matchAndRewrite(mlir::arith::ExtSIOp, mlir::arith::ExtSIOpAdaptor, mlir::ConversionPatternRewriter&) const + 272
13 mlir-opt                 0x00000001039ed508 mlir::OpConversionPattern<mlir::arith::ExtSIOp>::matchAndRewrite(mlir::Operation*, llvm::ArrayRef<mlir::Value>, mlir::ConversionPatternRewriter&) const + 192
14 mlir-opt                 0x0000000107481548 mlir::ConversionPattern::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const + 368
15 mlir-opt 0x0000000108178e94 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&)>) + 1356
16 mlir-opt                 0x00000001074a24a4 (anonymous namespace)::OperationLegalizer::legalizeWithPattern(mlir::Operation*, mlir::ConversionPatternRewriter&) + 328
17 mlir-opt 0x00000001074a1bf8 (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) + 996
18 mlir-opt 0x00000001074a11e8 (anonymous namespace)::OperationConverter::convert(mlir::ConversionPatternRewriter&, mlir::Operation*) + 64
19 mlir-opt                 0x00000001074856a4 (anonymous namespace)::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>, llvm::function_ref<void (mlir::Diagnostic&)>) + 568
20 mlir-opt 0x00000001074853d4 mlir::applyPartialConversion(llvm::ArrayRef<mlir::Operation*>, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>*) + 124
21 mlir-opt                 0x00000001074858c8 mlir::applyPartialConversion(mlir::Operation*, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>*) + 72
22 mlir-opt 0x00000001066e8ef0 (anonymous namespace)::ConvertTensorToSPIRVPass::runOnOperation() + 364
23 mlir-opt 0x0000000107344ddc mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 512
24 mlir-opt 0x00000001073454ac mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 364
25 mlir-opt                 0x00000001073476f0 mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) + 108
26 mlir-opt                 0x00000001073474c8 mlir::PassManager::run(mlir::Operation*) + 864
27 mlir-opt 0x000000010732b2b4 performActions(llvm::raw_ostream&, bool, bool, std::__1::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) + 560
28 mlir-opt                 0x000000010732ae04 processBuffer(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, bool, bool, bool, bool, bool, bool, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, llvm::ThreadPool*) + 524
29 mlir-opt 0x000000010732abb0 mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool)::$_0::operator()(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const + 204
30 mlir-opt                 0x000000010732aac4 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool)::$_0>(long, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) + 80
31 mlir-opt                 0x0000000107537590 llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::operator()(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const + 96
32 mlir-opt                 0x0000000107537074 mlir::splitAndProcessBuffer(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) + 128
33 mlir-opt 0x0000000107328504 mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool) + 320
34 mlir-opt                 0x000000010732870c mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, mlir::PassPipelineCLParser const&, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool, bool) + 296
35 mlir-opt                 0x00000001073292d0 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 2912
36 mlir-opt                 0x0000000102df3f44 main + 148
37 dyld                     0x000000012132d088 start + 516 
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWttP67i6_2vCi0WV2Lk-8FAKaJBAVIDW0TkvlZt8aX2Wa2fbDovOX79lJ2mTXiCsPaO9ZjQI9ZLY3-X3Xf01VGu2EgBXXnTtRTcXtDZrqa5mknNZSWVq7V8sZbG9eny4f0bLmnGDqEG53GyYQWtjKu2RqYfvPHy3YmZdLye53Hj4jvO37u2yUvL_ITcevmv2efiOBssijfIyJ0uclHlCYlqSyA_jNAiiLKZk6fk3nj99hkrJos6hQD-YWXtkilBzx4v9DWfqUlYGXV7mUryBMpcGhJbq0shLXTH1hgxsqoldh7zYbze6190NK35HsPlvlrtrG1nUHJCXXDffESprkU_sC_JC374HHk49nPXWeDjKtUEeuUFUMbOe5FJoQ4VBBQgNHpkFcZxmif3zyC2ySr1BbqTyyCx8ZwR75Lbjhyw5kjpqFswJE0ZNNtQo9j4xigpdSQ07nsl1Lnm9EdptwI62JYhnSMkfh1eTm9PMERNGfiZTtpfJIrbT0sOp33AQBbw7aOyXOBxsD_39dng3iuYGOGxAmEZh648tk2ZzdEbWPehh0MMc3o1mO0ZOXWTkUAwFplYCdRe85Kb1hN2H_mvnHmjgRormcOxCFgvJofPVqdagDJMClZRxKKxAHk4LMJRxu5tMmZ4r0ODg-0a5gw3HHo6Rh3GxFYucaoOkQBQJKS7hnWljwXqjvAYPYw9n1sjWIx2jbou7yDigGdWGidVkba9wJgDFYTpp5Js_3E5fbpGulzaqKVrWK6TAxr_F7MtRzrSuQXv4DlFRICZyXheAzBpQrqheoyXNvzvgWvYvhubfUVFvqh2S_sTzs7mSK0U3iKpVbT3DCoG-EvSH5F0OkbVBertZSo4E3YC2lgChawVoK2u0pm_g3PKyWcR-B4WYsPcUmk9ff0NSIQ3G6QPijSkpNo0lXJJ5ePj2uHj538frp4f7_7t9Xtgt1muMRJVkwiFqU2C21xXtlfLf_eYv8ElUFJD4TpbGR_RWNx_mignj1Hp1_ofT_SJFfyykNgroxjnQzAZz407XKMENy6DH8vBvKAKQNEcH_F7YSlD-GxUFB-Xh9E2ywsPTjglOGyb4rF55SPJTej3XYkBbd7kVX6MgbMmSs2TLskzRoXA97XHUqh8izpZ6qw1sFhWnppRqMym2nC17FLMs8YswD9FCs5VRdFM5IlHc0Ij6NMxaAS1aEgMacRkB-KhdsfjOOG9BatWJe3TyjsKhJbIsJj4JfUSXNigdHnFLIBlJAJdJFCJQym1vi2F6GsyYRGUe-KiAnJttZT2M1kZaIPdm26UYMusKKZneCwMrUK9u0wztb7gr5NbD6fAacnXDuWpjpawFODsvGk1CdJLlEb9RcjqpLHsnSmOetkwE_kkhktQPU-qfZMd0S9vDaS1ce1V0Mdhj0FovCEZFYuyHhZ-HiOlrKflLTjlVT-pbUwwPIe2QJF2045E8YkJtq4FTKqTYbmStmxRZuSST7Tm0xeSpmlNjQIkBtK4ANx9v383L_VM19ASXpJuPL7MmhT9V1gju0oaafD0VxTP8UMzAQLnPKB_fnxa0chD1lzVMNZOiFb_lpVov7FlplzDJuISZQRH5aY_XU3XE7TOwxiDxVIGittC7vDvrReVUKbp9hnLA5ZvrEqyf_xwOQdbhEI7CIQnTIArTj3h9Xcf9nc_EJV1uDKKT4ZsGSQpZeExxWlWc5dR1mH-seH0TdU3aQjkzLaW0NSE9ItBPja3xzhKxNfg_JrLf_CBXLKf8GXTNzTi6bZkmXYEM4pGuQnFIw8-yzg7tB1hR15Q113n79X-YWXeeNc5Kn3l_k0E7R0pO14GQBsvy05T5mfB_oMRZVz6D9KzEAYyXuE3QncRtyz0Q-GOxZuicao3A3YEsyMZmlij-grucln93Ww9655O5cyD0l6PwhtGVkNqw_ChUoi5L4TNNRphGpOhnKVpVfDunyjDK96j_lAqnzPdK1QrMkdXulPwdOqO2Jn4B00sAfURuQGh4AXNegOPlj7S6F6X8cIs7ZNjSeNtznqDr0_C4NspCmubpGEi_FpB_Pei6zgbj0212DCmU_mdx1obXqzuBv8qX-f3ztznV7XlO1eJJ9KTZHeZIF_WYnHZ9EoZFkfeQ7M9KnqpXaVtPrbv2ruN2UKi0PjLZeWNOBeVbzfQjFdR17zNkK7N9P2zjXfQGHYDhORWikH5dhTmrgDNxWBPs0p1kH6bVn9Jp2L5ofS-0UW7oYpvno_6mv6Dh3NxoZZ9TBcJYv-w8fXps-WhcxJIwiUv_gHunzw40qjXokVF7BEqbS_wuHY9sXEiYhINcckqyD2Rq2KY7QM60GAQv8TJEFahSqs00Py5bxyOfzsjduzZFs3SxCNpD2JoqKBaVUR6Z7Um9yFrl8LhSHrkdZKm9Eo8P988zKQy8m6OU9HP95NCzuy51qENXMtu5BU5H2ghT8ENUKZmD1td1Wbpz-UfYHWNVC_avGo6weoSNVNuO5qmNBZS05mZRAAcD5ze3ufnYbp-9_znID7oXDrl5hhXTRm2PKtarm2rNnTQ7j452RTk759F0ueyH9CNn6qkyj5SJX9g4_x2wv-oSbbg0JD0cLvzmo3S5x02L3G8F6a8B5aGJB9MXv3Uk4o-Odpr3G-ahPX7GgL8oSrshUU45X9L8-6IczpX-Cak_N6RuLapSrH4dBI8jybUXbcEkIw9IEUmizP9bhspfMAN2wxwyboJvrecPfhvRFWdmKor5QQP0a6j-t_CtD1ecbmODbqxIzh1_cRr54T8d0p-ZztsBb5cfR_6wQXCa-PlfzjJDlLtz-uxhTpUGdeak90fCPYQd7xLb2CkAznBx_sjQzjDyNW2mFQfH0hejmFg9Qzlev07ObspDxg0FcFGSMgzRhjJx8NhCgootL442DwnggODCT1OkDW1_6I-CGB08XnRRXJEiIxm9gKsgTvyMRDEmF-srmvsJxumy9IM0K3G0JDnFy4L4RQ4-0PKCXWEfY8smwGHiB5M8L4siJjikQICWpRf6sKGMT9yTWVKtLtzTPFdRFmbxBadL4No9LIixgB_I3fQw9qKbC3XlHptZ1ivthT5n2ug9FcMMh6t2XIiaJ3aQkchNDFFFtUZMvMnvgDyc7B9eSs498jS5qBW_-vlHk5w-_w4AAP__fapcAw">