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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] Convert-gpu-to-rocdl Pass crashes due to unregistered dialect
        </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/97a1c98f
Reproduced with: 
`mlir-opt --convert-gpu-to-rocdl temp.mlir`

temp.mlir:
``` milr 
gpu.module @module { 
  gpu.func @func() {
    %arg0 = arith.constant 1 : i32 
    %result = gpu.all_reduce %arg0 uniform {
 ^bb(%lhs : i32, %rhs : i32):
      %xor = arith.xori %lhs, %rhs : i32
 "gpu.yield"(%xor) : (i32) -> ()
    } : (i32) -> (i32)
 gpu.return
  }
}
```
 
trace:
```console  
LLVM ERROR: Building op `cf.cond_br` but it isn't registered in this MLIRContext: the dialect may not be loaded or this operation isn't registered by the dialect. See also https://mlir.llvm.org/getting_started/Faq/#registered-loaded-dependent-whats-up-with-dialects-management
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-gpu-to-rocdl 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 0x0000000104c4f8c4 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1  mlir-opt                 0x0000000104c4e92c llvm::sys::RunSignalHandlers() + 112
2  mlir-opt 0x0000000104c4ff5c SignalHandler(int) + 344
3  libsystem_platform.dylib 0x00000001aad414c4 _sigtramp + 56
4  libsystem_pthread.dylib 0x00000001aad29ee0 pthread_kill + 288
5  libsystem_c.dylib 0x00000001aac64340 abort + 168
6  mlir-opt 0x0000000104c16318 llvm::report_fatal_error(llvm::Twine const&, bool) + 468
7  mlir-opt                 0x0000000104f5e5e4 mlir::cf::CondBranchOp mlir::OpBuilder::create<mlir::cf::CondBranchOp, mlir::Value, mlir::Block*, llvm::ArrayRef<mlir::Value>, mlir::Block*, llvm::ArrayRef<mlir::Value>>(mlir::Location, mlir::Value&&, mlir::Block*&&, llvm::ArrayRef<mlir::Value>&&, mlir::Block*&&, llvm::ArrayRef<mlir::Value>&&) + 544
8  mlir-opt                 0x0000000104f5b20c (anonymous namespace)::GpuAllReduceRewriter::createSubgroupReduce(mlir::Value, mlir::Value, mlir::Value, std::__1::function<mlir::Value (mlir::Value, mlir::Value)>&) + 348
9  mlir-opt                 0x0000000104f5a8f8 (anonymous namespace)::GpuAllReduceConversion::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const + 1792
10 mlir-opt 0x000000010656b53c 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&)>) + 1420
11 mlir-opt                 0x000000010631aa08 mlir::applyPatternsAndFoldGreedily(llvm::MutableArrayRef<mlir::Region>, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig) + 3976
12 mlir-opt                 0x0000000105e358e0 (anonymous namespace)::LowerGpuOpsToROCDLOpsPass::runOnOperation() + 1024
13 mlir-opt 0x00000001062cb518 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 428
14 mlir-opt 0x00000001062cba48 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 320
15 mlir-opt                 0x00000001062cfacc mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const + 176
16 mlir-opt                 0x00000001062cf948 mlir::LogicalResult mlir::failableParallelForEach<std::__1::__wrap_iter<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&>(mlir::MLIRContext*, std::__1::__wrap_iter<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*>, std::__1::__wrap_iter<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&) + 360
17 mlir-opt                 0x00000001062cc710 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) + 1396
18 mlir-opt                 0x00000001062cb648 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 732
19 mlir-opt 0x00000001062cba48 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 320
20 mlir-opt                 0x00000001062cd3c4 mlir::PassManager::run(mlir::Operation*) + 1148
21 mlir-opt 0x00000001062c6788 performActions(llvm::raw_ostream&, bool, bool, std::__1::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) + 504
22 mlir-opt                 0x00000001062c6358 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&) + 704
23 mlir-opt                 0x000000010633104c 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) + 656
24 mlir-opt 0x00000001062c4780 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) + 216
25 mlir-opt                 0x00000001062c4c74 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 1208
26 mlir-opt 0x0000000104af1cf0 main + 108
27 dyld 0x0000000109d29088 start + 516

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl9v2zgS_zTKC-FAomRZfsiD4yTdAgkcOMUCdy8GRY1kXilSS1JJvZ_-QFKy5X-t26aH4rBBUQnicP7Pj0PSRGtWCYCbYHwbjO-uSGvWUt3MJeeykcq0OrzKZbG5eXr8uER5y7hBxCAq65oZtDam0UE8C_BDgB8qZtZtfk1lHeAHzl_7x6hR8j9ATYAf_LwAP0wnJKLTrAzCuyCcLaFRsmgpFOiNmXUQz5AfCNKw5kyNZGPQaESleAVlRlXTjowcKUkLjgzUzbUlCtKwm-T-332PZ1tm_h-qGVedhKppr2tZtBxQkIT92-S2G0bIEpStoHbYPgOcBXhqSXoKhAI8JqoKURDfIaKYWV9TKbQhwqAIWWtYjNEeuQLdcuMmWAGE85UC64Etr1awUqp6ICgY3-e5Ez_ma93zDfDcMRx-mW5tRqgT-EWqgXpfpGLI8zkxvxOHsVVtw4AXAcZe8BepnPU2QjjzwtAoiO-R98vAyMndGbJORU9pRSgwrRL91GBy18Vr-9IHrtfMB1gRCsfBtZ6XHFBH9fj45xO6Xy4XS6vMbct4wUSFZIMsbWkDVaxymzwobw1iBjEtAjwxSEHFtAEFBWICmTXTyBbBXAoDX4zlZtaACkY4UINqskFCGpQD4pIUUCCp_CTZgCKGSXGKc74ZcrlGLwCIcC0PSsvm8bWtpWupKltqYAwT1UobogwUAX54IH850njHfOQVGRXQgChAmNHbmhg9apuRrbJRJ1SPaiJIBTUI4332_Hg_e7lHus1tkROUtxVSYOEAmUPNLih6pnULOsAPiAjrS8rbApzZVBG9Rjmhn10wr734F0PoZ1S0dbONbngdhNNnJStFakRU1VplrRLocng44O2QRrYG6U2dS44EqUHb9AShWwVoI1u0Jq-AnDWeiP0NyibDRrYKPc8-_WGDrME4Y0C8MiWF1Qy9EmXzyybf6uVfT7eLx4__vl-u7BSbaUaiRjLh3GnhcFevIdpZFH4J_V8UJjQpM5o4XSxtPNMb7V-eFRPGmfXJFQTOdkSKvK2kNgpIHeDUVjoTxtUvvkXj1IuMBiIP__ZVgCmmp1RYtuKFVYLwP4goOCjdYyS-RVHU4Qk-b1k5pmiPgQWJnaJxkngWMUKc5XqjDdSrhhNjAfK62HCWD1gSUiRRQhO00qwyitTNnrnJHhOzVkCKUzzwFCBEHcHqM-PcscFZ5vmMh3zoCQ40TeIkRCS3deNckXZT03OuiNI4ygYe9kW3KokhfAVKWfAdhPfTGxOA3FLThTeXkvduS3pxkwsDXI5hDAnq18x4Rkv_nEtR3Coi6HrRDIYXjYNT6KkVEANBPP86A6vmjuJPwlvY_3TLJf0c4Jn9urN1phTZLKHc4-9nx_c_z8DyyHbfHyV1kH1S2bRz9imJ_djFiv8CZl1591WTXRz-HIfUIiARUmxq2WoPio2DlakX9qFpZ5wvXa-yhDfFzH78X9q8UrJtPMWeU0_E-muftCn8l9Uq8i-2_XJRObIeXSho2rupR5auRKYX-4hkZfY9Ppq7RUk7re1YTQxdz0TR-W5P70XfKXTJuxt5JsaAEluHexNc5XtomUw7mI3Ck9iSjtN8HNNjlrOm4YwSI9V76zfM2z5yK-Vy18LUfsg6BgMwm3Z1fZbJq2TFTzMZlnzFKOHLrjG_hG-3wiW4a0yj6KIsSuOIkDAbuI80Dd90UvRMFA-SFx8UQMH4Zg_xn1pDcg4nYWAJlcuyAzR8UPJv6CPTyXgBs7ds7Kid1E1HPZeiZNW2WKaTvmPAF9k5hnicQfitanmUb6A-NO2i0Z_kcjG_e1w0-pnorrlQrViIQebtOosQdwgXxadzHtN8HA39XIAhjPfJ_EkuGitnVpBmm_-qFQex1_oo3c8XwkwQvtFMP7mWWu3W5DlqhdtqF8MeLMEdAEXJWRNI8v0mPLMGOBOH5WtJt5ql727TPiJo_VFoo1yrbhuXI8gYEnjJfqDT_ZkoEOajKGWfq7NtKm4rbnxZxWFaEkq_242DxJvpjaAf64YHOOu6LE8W4GQVJf7db_Vcl2bHh85_P4GL5vnJeuXEItDXZ3qxV6Z7ybWPgbvvJWHc4s4zUYRz4A9S3RO6DuL58SK9Wr0p0qx8XzD_tQ6YHaHdu8cVp4e94fAQwCf17-GE30OLXxuKvv77o6Bocmmm00nXGb2fcr7o4mlfddmluuTpD0D6_3BVmvRngNH0n1XpB1YlHF6aCUVMkwPpvT0n477vjv6Epd_F4OhcuNJJlqEGVClVPXP9r_7GQVHvy_55jC56TRQUq8ZYcNmxepGtovBUqSC-P9NkHiPoz_bn-wnUd_37NnTb4rBrGvFlTax1Xjw-v0j-iObHvmwF-6uFI18-QS3V5rYtS5_gxxMLKEnLzaoADu7w5czk7ohj6OnDmDuv-Z084Twn9POq3N9qP3GmFo15Ikx8I3t-DwvfM5d2FHf-2HzpztnV5ky9XPYcLHCh7zO4FNXv48GjHPHrw7aG4gs3vHEUJsP2WzecmZkonpWkoHWv_W9SGf8XlfxVitPYmPZn5PjsbjSZZMM26h9EeHdE8LcMUR-Jize4CZ0kZyPTNUJ0TXzLc7DovhjFRLWE8nK7ut4Dh33vkZ6-0yBlRMsQ1YSJ7tSmnzBBxYYXQ-JpgadhliF3q-lX694PB5e8V8VNXEzjKbmCmyidJHGSTSf4an1DwhRoHE5ikucTjGE6oWQCeDzGOMtzClfsBoc4DiOMw3CcRvg6ycdAw7yMcExTnBZBEkJNGN9et165-8ubNIym2RUnOXDtfi2BsYA35AYDjIPx3ZW6cXeFeVvpIAk500bvuBhmuPuZhfPv-A7NT11X2mTz16KgUdECMhK1YnBh3F3aXrWK3_z4Tawz5r8BAAD__9KuRzY">