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

    <tr>
        <th>Summary</th>
        <td>
            Assertion `TLI.hasAndNot(X) && "Only mask is a variable? Unreachable."' failed.
        </td>
    </tr>

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

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

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

<pre>
    Reduced test case: https://godbolt.org/z/jqe59vW85
```
; llc -mattr=+zbb test.ll
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"

define i32 @main(i32 %0, i1 %cmp469.2.i.peel, ptr %1) {
entry:
  %conv471.2.i.peel = zext i1 %cmp469.2.i.peel to i32
  %2 = xor i32 %conv471.2.i.peel, 31817
 %and.2.i119.peel = and i32 %2, %0
  store i32 %and.2.i119.peel, ptr %1, align 4
  %3 = load i32, ptr %1, align 4
  %xor465.2.i = and i32 %3, 31808
  %and.2.i119 = xor i32 %xor465.2.i, 31808
  store i32 0, ptr %1, align 4
  ret i32 %and.2.i119
}
```

```
llc: /root/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:9233: llvm::SDValue {anonymous}::DAGCombiner::unfoldMaskedMerge(llvm::SDNode*): Assertion `TLI.hasAndNot(X) && "Only mask is a variable? Unreachable."' 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 -mtriple=riscv64 -mattr=+zbb <source>
1.      Running pass 'Function Pass Manager' on module '<source>'.
2.      Running pass 'RISC-V DAG->DAG Pattern Instruction Selection' on function '@main'
 #0 0x00000000039690e8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x39690e8)
 #1 0x000000000396683c SignalHandler(int) Signals.cpp:0:0
 #2 0x000074b10d242520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x000074b10d2969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #4 0x000074b10d242476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #5 0x000074b10d2287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #6 0x000074b10d22871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #7 0x000074b10d239e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #8 0x00000000035ada17 (anonymous namespace)::DAGCombiner::visitXOR(llvm::SDNode*) DAGCombiner.cpp:0:0
 #9 0x00000000035d699f (anonymous namespace)::DAGCombiner::visit(llvm::SDNode*) DAGCombiner.cpp:0:0
#10 0x00000000035d852e (anonymous namespace)::DAGCombiner::combine(llvm::SDNode*) DAGCombiner.cpp:0:0
#11 0x00000000035da1ac (anonymous namespace)::DAGCombiner::Run(llvm::CombineLevel) DAGCombiner.cpp:0:0
#12 0x00000000035dc78a llvm::SelectionDAG::Combine(llvm::CombineLevel, llvm::AAResults*, llvm::CodeGenOptLevel) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x35dc78a)
#13 0x0000000003732a46 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3732a46)
#14 0x00000000037363f5 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x37363f5)
#15 0x0000000003737e67 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (.part.0) SelectionDAGISel.cpp:0:0
#16 0x000000000297e051 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#17 0x0000000002f3f313 llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2f3f313)
#18 0x0000000002f3f551 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2f3f551)
#19 0x0000000002f3fdb5 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2f3fdb5)
#20 0x000000000082b87c compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#21 0x0000000000729d26 main (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x729d26)
#22 0x000074b10d229d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#23 0x000074b10d229e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#24 0x000000000082239e _start (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x82239e)
Program terminated with signal: SIGSEGV
Compiler returned: 139
```

```
Type-legalized selection DAG: %bb.0 'main:entry'
SelectionDAG has 23 nodes:
  t0: ch,glue = EntryToken
 t6: i64,ch = CopyFromReg t0, Register:i64 %2
    t46: ch = store<(store (s32) into %ir.1), trunc to i32> t0, Constant:i64<0>, t6, undef:i64
              t4: i64,ch = CopyFromReg t0, Register:i64 %1
 t41: i64 = and t4, Constant:i64<1>
            t40: i64 = or OpaqueConstant:i64<31808>, Constant:i64<9>
          t42: i64 = xor t41, t40
          t2: i64,ch = CopyFromReg t0, Register:i64 %0
        t43: i64 = and t42, t2
      t44: i64 = xor t43, Constant:i64<-1>
    t45: i64 = and t44, OpaqueConstant:i64<31808>
  t26: ch,glue = CopyToReg t46, Register:i64 $x10, t45
  t27: ch = RISCVISD::RET_GLUE t26, Register:i64 $x10, t26:1

X: t37: i64 = Constant<0>
Y: t39: i64 = OpaqueConstant<31808>
```

cc @topperc 

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8Wd1y4yoSfhpyQ9klgX4vcuHYcTZVyZlUnDM7e5VCiNicINABlLHn6bdAsi3Jnp_MyW5qJiMB_fXXTXeDeogxfC0ZuwTxFYgXF6SxG6UvS0u333ZfLwpV7i4fWdlQVkLLjIWUGAbwDG6srQ3AM4CWAC3XqiyUsFOl1wAtvwG0_OtvFudv_85iECxAMANJ0P1pX_EVFILCSUWs1QAvALr6VhRexVSIdpEles0sLIklguxUYyHACwgQYpMK4Bmb1ADPksj_mvDDQ4gygGchyiYSo3Zs5cYQGsBazWvB9pCaG_qWRJNGvkr1VU4El812spbNQaz9XbIXLhnkGEEQBRXhEqDMv6E4AGgOeegeaVVHST5FUz6tGRNuorbazYQA5RCkVy0ck1bvnBf9G_SiSr5FaXiQ9Qy_sa09Dw2tcmx6AMhLbJWGHa8xomODwyxMOyGAYiJLNx2G-VEnkeUeATkRb2Gnxlil2X52JDw0dg6J4GsJox5D7PGFIl7Bz9dvlY6S2OkYE8OdLUHWW37kM_bEEehE7mhR8BNCmtlTy7sYSRfnw_3coBDUJRJAS62UBWgpxFs1qbX6i9H9q_uHFwAt56pkN0wCtFwxwajlSi5mNwAtF7ObuaoKLpme0tplRI4wdsBeHs8Anq0Wn4lomAs7IpXcVaoxjqqf7AG0A418UaK8J-aVlfdMrxlAWR_rD1UygGYA5U7LzBimHR0IkuDp7na6IWYmyz-cRdkXH-woAShxSfZJih2siHmF3EAC34jmpBAM4CX8U2pG6Ma9Tl3KoRS-EC5YOW2d9XB3PVtdQ9MUFbeQwKJZQ81qpa1LgFEx4nbTFFOqqp4Xh77lxjTMALRsg0lS0ZQM2g2DVBOzgQWhr1YTyjr1K0voKyybqj4kazAFQf6g1VqTChK9biomrel2VNVOC1VVzQXTE7athdJMuzFB5HpC9l4zE6sb-QrQsnClZOmLonIQpK4dUGPrxk4NnGyzZEJMNTE7ackW4AWXlgk4qdpCBvCiq2EnRRXguVGNpgzg65Z76Lg_NlJyuYY1MQYClC4b6eMKPriBeyLJ2jFOoZKwUmXjiiVKB2Ao7fyDzgE-3q7mk89wMbuZAHy9mN3AB2It0xLeSmN102o7xHOn6mVPwynbl9hjqcIBDLbB_gfnSR6wrBfrZmfahwfNpfX79uQ2chDEmnx9VsZqRiofnXPIpW1jNfuHuwfQVbDtaLkUOfAOR7yTDFO44mtJxL-ILIXDzzoa7bDpEjrwfw9AqANKoyIMShShGAUd8bZWbLPkOYn6R5iboFOjpomn50UG5PAQM0_yFwpru9GMlM-vXIj3KfDyAwXRmHSUJnBtvJ3vJR-lyQA7HmKjLH3BkBSuNrwL2QsOkJMT5LB4N2ZYDDDTISbOWZ68D9OLDDCzQWzFpCRh6jAP1R5KUjFT-zzIv1P337jh9sunx--We3h61oxCMx_yKJM8f_k9Hr9JwuVZMCKRxYi9mwRt3_4BjXBEg4SEvpvGYyMHFLrZO_bm7lm_wAKNWNA0I_2bQf8y0dfwA63znvxs9shMI6zxXunPdBeWT7U9kP2o4tpacUgAZyYemJliRKLkO2berpgYUJzJ8rri1l-nso_k2dIY8IxGPBP8Ev-UZzs6E-KKGE6vhKKvZrA_h5ObKmmsP9E-0gpHcmBFPLIiZUn6Uyt0Iz_Je0I3XLI94YEVJ3N7M6Y10XYa-INxBH0-6JM-P5SnLIhD-F1F7rrTo3iW2w9JncE7zysd8HrBLy5we0oenOj-4vVuRh-x2x2pwW5nY9bxwJvfY33vr4zDHe6GPppx7L-qj4zzMeOy6GeZYGtCd90t8cj9tqqPofp_4V0Wg7xCg5MryFCRpRR2Og7upBuifbUdFdy7u8_3cyUt2-4rgBD0bByiwdEUpCgvUQLdRfujjGshB7aNbq0oL_N33lq9yAATjzFZFMDnZyf2bCzR9rln1C9rYdFQSzTaFXdlgy3-R_mrBT1o3X9VWqYrLollJfzK7Qa212X3ibm6vVld33xul887xVAz22jJSrcixPmvtyKedjWbuLQQ_BsrodlXWdheCyBAcVFM3X6l_nsMd42r_XdZvyzDDTEQYShVyUyvtWVdEEK6AWi-9s0IvIDXDuVJvTLZrbKJW8STCKA53fg1c1XvllpVj2ztMNAcPrI1N9YXG55EbX-qUwKhjZJWjxf2XR2A5wBlbYPHPWDksoNL676zY66nvnqgOXSbQ_cNNXzdqZu7Q5VI26oDeB74T9-5I4vmsJEle-nmDiyOPzb6LYvCvUOisJM_tL5sdJZVePi6H6oP-vJKw081-bthJ-JtM6w17GQyP4NtI9RH3irtyTq_RMHJYvRbXhjh2AifOsP3Dy3qr7RRdEoNn7VsMnSbjeJTDd7fP3PbPspRchrmztQn5Q2NkrOWRtswaF0XH5HSXiA_3q7mn29XXc_u8frp-ebuz2uv7od4nk7YT_0vDtXitG_n0aw2uP3C_7QL8_7CsRdG9p-tNZRCEAVW1TXTFLZjF-UlLnOckwt2GaZhFKcBQsnF5rJgScYixkhEY5qTKM5CVKRxRGNMSZmEF_wSBSgK4iAMMQ5QMk1ZEiVBkpcRzoISJyAKWEW4mLqjcar0-sI3-y7zIMXBhSAFE8b_bwdCBaGvTLpy2baqfONxDhDyTcCJkpM3InjphuPFhb70TcSiWRsQBYIba446LLeCXf7Pm6EXjRaXv9_t9D74bwAAAP__Y0B4Qw">