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

    <tr>
        <th>Summary</th>
        <td>
            [RISCV] Assertion failed: (MinNumElts > 0 && "#Elements of a VectorType must be greater than 0")
        </td>
    </tr>

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

    <tr>
      <th>Assignees</th>
      <td>
            lukel97,
            4vtomat
      </td>
    </tr>

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

<pre>
    I'm running into a crash when building SPEC CPU 2017 with rva22u64_v -O3 that I've bisected back to 239127d731e633f89b912b0775b638c0e8b4a9eb

```llvm
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"

define void @Perl_sortsv_flags() #0 {
entry:
  ret void

while.cond.i.i: ; preds = %vector.ph165, %while.cond.i.i
  br label %while.cond.i.i

vector.ph165:                                     ; No predecessors!
  %wide.vec = load <vscale x 4 x ptr>, ptr null, align 8
 %strided.vec = call { <vscale x 2 x ptr>, <vscale x 2 x ptr> } @llvm.vector.deinterleave2.nxv4p0(<vscale x 4 x ptr> %wide.vec)
  br label %while.cond.i.i
}

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(none)
declare { <vscale x 2 x ptr>, <vscale x 2 x ptr> } @llvm.vector.deinterleave2.nxv4p0(<vscale x 4 x ptr>) #1

attributes #0 = { "target-features"="+64bit,+a,+c,+d,+f,+m,+relax,+v,+za64rs,+zba,+zbb,+zbs,+zfhmin,+zic64b,+zicbom,+zicbop,+zicboz,+ziccamoa,+ziccif,+zicclsm,+ziccrse,+zicntr,+zicsr,+zihintpause,+zihpm,+zkt,+zmmul,+zve32f,+zve32x,+zve64d,+zve64f,+zve64x,+zvl128b,+zvl32b,+zvl64b,-b,-e,-experimental-smctr,-experimental-smmpm,-experimental-smnpm,-experimental-ssctr,-experimental-ssnpm,-experimental-sspm,-experimental-supm,-experimental-zacas,-experimental-zalasr,-experimental-zicfilp,-experimental-zicfiss,-experimental-zvbc32e,-experimental-zvkgs,-h,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smcdeleg,-smcsrind,-smepmp,-smstateen,-ssaia,-ssccfg,-ssccptr,-sscofpmf,-sscounterenw,-sscsrind,-ssqosid,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xsfcease,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecdiscarddlone,-xsifivecflushdlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-xwchc,-za128rs,-zaamo,-zabha,-zalrsc,-zama16b,-zawrs,-zbc,-zbkb,-zbkc,-zbkx,-zca,-zcb,-zcd,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfbfmin,-zfh,-zfinx,-zhinx,-zhinxmin,-zicond,-zifencei,-zihintntl,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-ztso,-zvbb,-zvbc,-zvfbfmin,-zvfbfwma,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl1024b,-zvl16384b,-zvl2048b,-zvl256b,-zvl32768b,-zvl4096b,-zvl512b,-zvl65536b,-zvl8192b" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(none) }
```

The reduced case above hits an assertion in `llvm::RISCVTargetLowering::lowerDeinterleaveIntrinsicToLoad`:

```
Assertion failed: (MinNumElts > 0 && "#Elements of a VectorType must be greater than 0"), function get, file Type.cpp, line 711.
```

I haven't looked into it fully just yet, but I wonder if it's something related to pointer types.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEl1-P4ygSwD-N-wUlsrFjxw95SHdPSy3t7Y1u5uZ1hKEcs8HgBuyk8-lP_LGTzOZOK51012q5flUURYExKYgx_CABdsnmOcFYjEcQdZVgnOCXBONisqon1umb1ycy2k7pXXR6ahT73L0nuOqRHqXk8oC4tAoRRDUxHTp1IFEzcsFc07evX17Qy9d_IpxmFTpx2yE9EYzHsvg5odXfc2Q7YpGLNwFquAFqgaGG0COyCuG8znDFqjyDMs_bbd3UGW7Sqto0Zb6lKWybgtTQJOlrku7js0zDvxBTH0yW6ANYxIglgnyq0aIkf0UJxrDqk3wPqyHJ92XhHyu-QIa3Sb7P8HYlcxxs35wN47uwVvNBwBxSc0OnsliN8ijVSa4El-N5dZDj0i08GbRcApoUZygp0q-gxU-jtDXTz1aQg0ncQDVKcJ6ipHoOnUBa_ZnkMQRCGqyPcBv41HEBa6okW_M1T_I9SvJnNGhgJua4mYBapddDl5WbBL840y-9YvxGI0EaEP_OIzzvwuV79Ff-XE6_K58WUDBGaZPgbB7XDccZrCegPmehCENJ_jIZSgSgMyrQGQ1WJ_kXl_9gNZKjEI6J4AeJtjFSgjfGas6ALbEoEcKt6F08fBfvcQtKqlf3qty-Wsc5M-DSghZAJsBreZ6KIXVv7mGqt9NKcP2XF7l6vdvf-TN6GyW1XEm0t1Ybt-ZSuXn570aqVgMgqcynpEiqUZ64ZOjEhdBgRy1RD73SnwneSiVhyYQBFUTD_2dt4l7PbmdKrNW8GS2Y-Bm43euSwzh8eqsWiB01GPdt5a_-AHsui4Zbf5A9kyBoECyINog-CA2CnANOQVxIWbjN6LkhMzQzzE1t13MZmdOyaBZuVH_Dww1fFqakV-Sq8fbKwly7U21gUaTVC5sFOy7tQMarXzfM_Y9xHS59P4qIE-S4veHzwmXBbri94cVHZHjbLEqOrxzmv_IP8I_zAJr3IC0RK9NTn_uv1t6n-qtVPrKahxHMY99HxvGB8UIoMQ-sgpg_D3bhtOVieGw3D8JMDc3xnxfjMh0P3rtzD9NRNbrvBOQp6AdiBxLQTkREnMzVPJm7BjsBZV7pCQ_WnjIQcIhsNJfRAYZ-CGQssQDSK2buZyhtDzMNYcWNoaod-nbmu2zNTXDzoQyPeBfdHcHUBrY0ymUGN_mbsSzOwuNEGMwwBmiIjiYuJxLdJBlUCD0NTe_pTCcixkgNX8D2RPIhqiBOkXpCZ4I-kuG9z-hsWgrEf1uOJzrM1EpNBR_O7Ue7mE49ofTj42M2fDidKXanf6jYzlvuJs4NJZox4Y_iq70Vo-muVtsBYf40mrm5YXNl2qsbRUnWq-lqaHvoOTtfDfPkg_JrI_QD4fpqcL8oV21iYeXPk9vYkrjR1BByOdHOe15Ihrf-OF1dCAm5XUjTkQBCm-jWk6xsAp6ifxOammMT5az7FC80xKChNeygC4Ug2iB6f_w6mKXP-MK4DEHaEKRt2nCary5tF8Ts0d3C7MTdXAO1ICnwwO4sllYEZR77GJ4yChYlRBmGO-ogTBQQ3Uxotias3BReuztagrxJ3PGpJ5G7WS7NcRmn4yHK2S7pDHHU6SgXn_imHM39zSznfmbpZ-Z-Me_pGNZ7ElmKi2bmMt8uCk6L7cKbcsYcV-ViL9J6adhkeMZys8kX-zarXQNGS710Xz9kS_3wX9VK1_DLReO2ZvneAdLARgoMUWIAkUZNgDpuDSISEWNA-8qNSzTfUfJ9ku__8f7t5cd3X9b8pk6guTyEBuG015ta6l1azaXh9Lv6TRHmEphvBA8T2y9jtoQLYP5KgLd_4_L3sf8irLsWfEEpSnCZ4BL5Kir_IsD9XBmkWkTQD1_Rff8cAPWjsagBdNBALGh3f5Mo9Z1qVx-2c2l6AOt1LgC5nms6uO8BCXftqbJs_R9W8R11ZHK_HpVFQqkjsHDJ5Ba1oxCf6A-XxWcYoRktekcnJRloxFvkqr_KIKN6sJ27hLoaz90qrUKD8uuI7OcAZv3Edjmr85o8wS6r8AZXxbasn7odZVW-IWVdkBxneV6zTdps26pOcQF13jRPfIdTXKR1irMszdJ6jRltiy2uMlpuN1mzSYoUesLF2lfESh-euDEj7LK0rKv0yRf8Jt6_3U4EyeImWP2IF2-9c31XzXgwrrLmxpprNMut8Pd3v2-SzSv6373mp1GLXWft4G4eCX5L8NuB225s1tRVvm9-UwexGrT6A9xv_5ufv0nwW1yCaYf_FQAA__8uOjW1">