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

    <tr>
        <th>Summary</th>
        <td>
            Assertion `(CCVal != ISD::SETUGT || Imm != -1) && "Missing canonicalization"` failed
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:RISC-V,
            llvm:crash
      </td>
    </tr>

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

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

<pre>
    ```
llc: /root/llvm-project/llvm/lib/Target/RISCV/RISCVISelLowering.cpp:5577: virtual llvm::SDValue llvm::RISCVTargetLowering::LowerOperation(llvm::SDValue, llvm::SelectionDAG&) const: Assertion `(CCVal != ISD::SETUGT || Imm != -1) && "Missing canonicalization"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/llc -o /app/output.s -x86-asm-syntax=intel <source>
1.      Running pass 'Function Pass Manager' on module '<source>'.
2.      Running pass 'RISC-V DAG->DAG Pattern Instruction Selection' on function '@f'
 #0 0x0000000003397178 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3397178)
 #1 0x0000000003394a6c SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f858563a420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #3 0x00007f85850fd00b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #4 0x00007f85850dc859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #5 0x00007f85850dc729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
 #6 0x00007f85850edfd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #7 0x00000000018b4067 llvm::RISCVTargetLowering::LowerOperation(llvm::SDValue, llvm::SelectionDAG&) const (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x18b4067)
 #8 0x00000000030603f9 (anonymous namespace)::SelectionDAGLegalize::LegalizeOp(llvm::SDNode*) (.part.0) LegalizeDAG.cpp:0:0
 #9 0x000000000306433c llvm::SelectionDAG::Legalize() (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x306433c)
#10 0x000000000316b34d llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x316b34d)
#11 0x000000000316ec88 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x316ec88)
#12 0x0000000003170982 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (.part.0) SelectionDAGISel.cpp:0:0
#13 0x0000000002681449 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#14 0x0000000002bf7f99 llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2bf7f99)
#15 0x0000000002bf81d1 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2bf81d1)
#16 0x0000000002bf89f2 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2bf89f2)
#17 0x000000000075e1c2 compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
```

test case 1 (https://godbolt.org/z/sE4oMWo1o)

```llvm
target triple = "riscv32"

define i1 @f(i64 %LGV1) {
  %B1 = xor i64 %LGV1, %LGV1
  %B2 = srem i64 1, %B1
  %B5 = lshr i64 1, %B2
  %C4 = icmp ule i64 %LGV1, %B5
  ret i1 %C4
}
```

test case 2 (https://godbolt.org/z/frx45zshE)

```llvm
target triple = "riscv32"

define i64 @f(ptr %A, i64 %0) {
  store i64 poison, ptr %A, align 4
  %LGV1 = load i64, ptr %A, align 4
  %B1 = ashr i64 1, %LGV1
  %C = icmp sle i64 %0, %B1
  store i1 %C, ptr null, align 1
 ret i64 %LGV1
}
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8WF1T4zoS_TXKiyopWf5-yENICEsV7FCXWfaRkmXZ0SJLLkmeG-bXb0l2wArMHWaXOxSQWG6dPt2nLbVMjOGtZGwN0guQ7hZksAel1_TQEGMXlaqf1yBD0y_aAbQRgoJ4AwHea6UswHshvnXLXqv_MHq6dB-8Anj_leiWudE_ru-3D6fP63smbtSfTHPZrmjfg3iTpnnuYL9xbQcioEeJNyDe3O8eiBjYbMRjjMgnlPGGv_rSM00sVxLg4g0KwNs5NBOMOtPd5grgDOASUiWNdUQ2xjDt7kEXOS622wciIMARiHfw-n43IVx-_dfVVwjyLci38LrrThbLyKF50AwCjG-5MVy2kBKpJKdE8O8TSQxwDhvCBatXY4bvbi4395fQDFXHLSSwGlqoWa-0hVbBg7W9cd7xHuB9y-1hqFZUdbPUh4JwYwZmAN5DImvIJRVDzaA9MEg1MQdYEfpkNaFscn9vCX2C9dA5XcYhtAKovNOq1aSDRLdDx6Q1Uxmo3nmhquu5YHrJjr1Qmmk3Johsl-SUSbO0epBPAO8rLj1PCpfKQZC-d0CD7Qe7MnB5LLIlMd3SPEtLjiDecWmZgCDeGjVoykB8ORKLHLE_BildbntiDAQ43w_Sqwrv3MAtkaR1dHKoJOxUPQjmrAIwnE_B4_cAXcEtH-Buc7UE8eVucwXviLVMS3gtjdXD6O2lmiZXzYmGc5agxn14HxDgGEF0RKefOC7zKC9mlWmezfjlTnNpvSJfnURBTWvy56MyVjPS-ULbQi7tWHbF_6kLwBfoONECuHzlHZ3xTkhG4T1vJRH_ILIWDr-YaIzDZnrCkf97AcITUN4UaZFmMUkwgo-PmhmrNHvUdopiXEeORfaYJUvB5XBctnIYb_T2oBmpV0atkGccJQlGAd84cIOaGqEKasIN-wA-dciZR05ihKoAOQmRa1qkJSSV-hDzGTLGRVoGyOk5cv6i6YcxcxxiZiEmq5s6-zXMOG7qLMDM57UQFVWCsvx3LtOfVecT9SC2IqhzlKG48Rq45fu5U4OBknTM9P6ZLN_yvGGtW-PZFPF09aU_i_afqmYAb6aHdtUTbV0pl_A0Y7e5ev_5Kc8IJnFMf5SzgINP2uetEaPnl9y5JSJc26KsipP6B9RcJzCOblXNrpjcyPqy49Yr_ak8RxoBz-iMJ6NF8VOe4-hGiAtiOL0Qij6ZQNSX3WdsJcZ6_bwoHMkgChxGkaOywD-NQg_yi7wl9MAlOxEOonhzL3tbo-fQbwvV8Yvn_HBWRElSwh86clv2jOK73P6S1Dt47_NKAl5VkzflnNf-zk09NQ-_zOgz1J5IBWqnZ6yLqI4-wPrWtz2hwtPQJzN2hALG2TnjspnXp2Atoc9Ts_PK_brrX0v1t_AuGxzwDnY3lKcsohhOPl7SSQ9E-_V7E25ZNzcPt1slLTueVgAh6Dt1GB6txv-WGQspMQxGLr6zfl_VlRJ2pXQL8P47wHtzmajbf6tIvbIPsT2rEdlvxtBq3rseON65k4nmhn6LsTuIzGbXrOGSQR7BsXUteJZAgNObq4fxZJNfTHuRG72IPNpRaRjYbV--zmyxtzWadd74ZHYRGKXeSJiDDo3wzGibeCNOux66pv6t64v0ZK6Z9cG4WVOc-e5DIuCPiNDoY5J-N4fLv0UEF9eoQm-1i8FX2xQuOpPD98_-Zq-4cWvSFs6nEcFbCZNZHl3CxnQrUruZP58yCU7O9TnTevsqkHkVCL1RfOI86nPyLgchXr2fbL2QM6H_UstFvY7rMi7Jgq2jrIwSnGdltjisWZzRpCjzEkVNUaZ1nucNYSyhdV6VTYYXfI0RjlGB8ihHKC1WNSmrLK5wGsd5iesCJIh1hIuVU9ZVwsKfs9dZkqJ4IUjFhPEvVTB2B2wm66klXj74M_8WYDytF_4Y7gbT3UKv_em9GloDEiS4sebVg-VWsPVvfDORoenNxGLQYv2_v3nwSflvAAAA__99E12w">