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

    <tr>
        <th>Summary</th>
        <td>
            [RISC-V] Assertion `NVT.bitsGE(VT)' failed.
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          patrick-rivos
      </td>
    </tr>
</table>

<pre>
    Likely caused by a commit today since godbolt doesn't crash at time of filing bug:
https://godbolt.org/z/965eTfvz7

Using llvm: https://github.com/llvm/llvm-project/commit/3e7135750cfe41e8b093e19ce5b85ad937e064fd

Testcase:
```llvm ir
; ModuleID = 'reduced.bc'
target datalayout = "e-m:e-p:32:32-i64:64-n32-S128"
target triple = "riscv32-unknown-linux-gnu"

; Function Attrs: noinline optnone
define void @d() #0 {
entry:
  br label %e

e: ; preds = %e, %entry
  call void @llvm.memcpy.p0.p0.i32(ptr null, ptr null, i32 4, i1 false)
  br label %e
}

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i32(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i32, i1 immarg) #1

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

Command/Backtrace:
```
> /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc reduced.ll
llc: /scratch/tc-testing/tc-compiler-fuzz-trunk/llvm/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:7943: llvm::SDValue getMemcpyLoadsAndStores(llvm::SelectionDAG&, const llvm::SDLoc&, llvm::SDValue, llvm::SDValue, llvm::SDValue, uint64_t, llvm::Align, bool, bool, llvm::MachinePointerInfo, llvm::MachinePointerInfo, const llvm::AAMDNodes&, llvm::AAResults*): Assertion `NVT.bitsGE(VT)' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc reduced.ll
1.      Running pass 'Function Pass Manager' on module 'reduced.ll'.
2.      Running pass 'RISC-V DAG->DAG Pattern Instruction Selection' on function '@d'
 #0 0x00005dbce6188050 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1de1050)
 #1 0x00005dbce618546f llvm::sys::RunSignalHandlers() (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1dde46f)
 #2 0x00005dbce61855c5 SignalHandler(int) Signals.cpp:0:0
 #3 0x000074a1a0042520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x000074a1a00969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x000074a1a00969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x000074a1a00969fc pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x000074a1a0042476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x000074a1a00287f3 abort ./stdlib/abort.c:81:7
 #9 0x000074a1a002871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x000074a1a0039e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x00005dbce5eeaec5 getMemcpyLoadsAndStores(llvm::SelectionDAG&, llvm::SDLoc const&, llvm::SDValue, llvm::SDValue, llvm::SDValue, unsigned long, llvm::Align, bool, bool, llvm::MachinePointerInfo, llvm::MachinePointerInfo, llvm::AAMDNodes const&, llvm::AAResults*) SelectionDAG.cpp:0:0
#12 0x00005dbce5eeb1a3 llvm::SelectionDAG::getMemcpy(llvm::SDValue, llvm::SDLoc const&, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::Align, bool, bool, llvm::CallInst const*, std::optional<bool>, llvm::MachinePointerInfo, llvm::MachinePointerInfo, llvm::AAMDNodes const&, llvm::AAResults*) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1b441a3)
#13 0x00005dbce5e84f44 llvm::SelectionDAGBuilder::visitIntrinsicCall(llvm::CallInst const&, unsigned int) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1addf44)
#14 0x00005dbce5e885bc llvm::SelectionDAGBuilder::visit(llvm::Instruction const&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1ae15bc)
#15 0x00005dbce5f1b284 llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true, llvm::BasicBlock>, false, true>, llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true, llvm::BasicBlock>, false, true>, bool&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1b74284)
#16 0x00005dbce5f1c682 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1b75682)
#17 0x00005dbce5f1de57 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1b76e57)
#18 0x00005dbce5f0e389 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1b67389)
#19 0x00005dbce508ec27 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#20 0x00005dbce56b815c llvm::FPPassManager::runOnFunction(llvm::Function&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x131115c)
#21 0x00005dbce56b8589 llvm::FPPassManager::runOnModule(llvm::Module&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1311589)
#22 0x00005dbce56b7496 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1310496)
#23 0x00005dbce4992cf6 compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#24 0x00005dbce48d6bb6 main (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x52fbb6)
#25 0x000074a1a0029d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#26 0x000074a1a0029e40 call_init ./csu/../csu/libc-start.c:128:20
#27 0x000074a1a0029e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#28 0x00005dbce49895c5 _start (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x5e25c5)
zsh: IOT instruction (core dumped) /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc
```
Godbolt: https://godbolt.org/z/b37KbvWM9

Found via fuzzer.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUWt1z3KqS_2vkF2qmJPT94Iexncm6Nrk3dZzNPk4hQDOsESiAxh9__RYf0kjjydkkdY7v3pQjmgaa_jUNdGuEtGZ7Qel1lN9E-d0VGsxBquseGcXw40qxo9RXjSQv15_YI-UvAKNBUwKaF4AAll3HDDCSoBegmcAU7CVpJDeASKpFBEsDsEL6AJABhnUUyBa0jDOxB82wj9JNFN9F8eZgTK9tDW4juA0y1lLtI7h9jeC2LnL6tT2-lr67f_6XtmI4P3ZRugFnIpg5DM0ayy6CW9fFF6teyf-h2ERw65WP4DalZZLmZR7jlmYJrZq4TmlSY5o3VY5InZY0LrKWzOf-SrXBSNMJQVTE_s_OApgK3PQGfJZk4PT-DkTpHYhgqSgZMCXrBkcw4DFI7akBBBnE0YscTOgL6cpio6s-SjcpdI8VK7Io3RTZSqRw9ZDAKoJwIcYo1nM6ilBM42MKV4N4FPJJrDgTw_NqL4Zp2EnV7SCwYVKAjTHKGhMIyQRnggLZGyEF9X0JbS3vKBkBURaTyCpRgwimMYjKG9-JCqNeJvsA0CjAUUM5iGBO5zNbIwI7fa8o0UHvnEbw1pVOTJCBEefTtNbS6452uH9Z97H9YymMYNUbBcTAuRUwp1kKQeaIBLSIaxrB-s-UK-9-xj5WpQbhRyBkqygFQg7iiQkCnhjnippBCdDRTqqXCFZI7Tvq3FVRRJ4UMyclCMUcKfpz8CTiDGk3fW8GRYGTJQV_mVC_6WKnHHs4Uc4SrOuQ3Wdu-ZI5YmSMYs1gqA4raxemvHnjE9bLvOutWorsVNr6Vnpnn_AmhY3dZrcRvFGUo2dPPuv2iHtPvzKsVSCPNIXPI81T2ETwdoXsw1HYPoh9UPd47qliHRUG8ZXuur67wBWXuPoy9yLzu9SMvOUPFzq_Ioz0BS5HDuEZm-GW8f4yXzsxrX0c7MPNpQ9YDsJQRcWTr--R6ZEnzRHxQB71iX3UiwZzpNiB0R1intthQjndB1orJkIH2ne9p7RBhlLhKnocpzFu9yPVGxVI2fZdO9ILbfVMuF6I1Pa6MZ42OJST2jOl9VBkz9yRR0ToSAyeaJAKLCaOKHQTqJde9LFvOkcd7eMZHxEfAtWwiTAdEqwPVcqfAtUhPFK0C5RmnVPrWbeY2uvA08dWKMxZ_9x-byfWU4cw_v79-8j4butEkkX9uwztrGUWM9MYKUK4PXpn_JYP-nDimgNFpEEzupnR-kTjTs4qUpBOHk-MtqMdI88nxgjZV84badcjpk4M_SJm3Y_EG_35aJ1aIDub7L0uT_jger6iBFZKe7LIRgp5LV9Rc0Ce4EqHAR1KisaTT6G_B_7qMb82vmPzGKqPY_3Zl34M9mOw7-R96xVTX7S-6GQfiLF0gF4JE15W64W0Tdsx4clDKCbG2PcwJ8ZWhousCVQju4nqJ-o1UBh1Eo00a0eK63EQVt77XhkWfie-MmtyT7VUYMo8fWDCCMNPld5GdKHaB3kj9kf_FKEgoaSh9HAf_XyPOhQ0dNOh2Zut6wY_qdF-eY9hxY5hyezR3waqyMhEnXjegseZwS391KFAH8Zyag5ecHzch3LkCzwSQdvjo5j6BLez1Dhej-U4Tk_j9Dgu4D0GwEeexDCs75EnsJrIIq0mPoyzqQHmxUimsCwmfhbXU0OewJEsJiFFnqdTjyqpbRcIpghmeZMns5v8L4heTtNMMfA8iriVXYes42xvEH40CuELQfMYYn0AEdxqrJDBhwhuDV4Zqg2zK2MrWHY941St2uH1dWXUIB4juG0Gxslqj48T7SJ9F-halvWFLecYjJE3534-zrELPX99yllGYQvWRHB7Kwn9aO-z7QPl1MWJd5uPZ9U17m0sX9ZZaqcOyUuUbh7uviE-ULCn5rOL-T5JRPRGkAcjXUBVzfou5Bc2kMNSaLMQ90ni0PZmkl9jDkyYItuZZYcNZ3u7l0AjJZ-Xpy6fET4wQb9IZmOAe9HKn2k_R7LZfL77hyTWBGdoNps_qB640RHc2Cg63YCN1lS5CD0q4n98-7pumNEfP0Sw-vbVdoElaBHjlKy9B3z59GHz8AHoobF5LLI5KVC0l8omtb-eUjKtB6voFiBBABOYD4QCc6AhCW7GHRCmfzB265Gh66ctEa-B-_dFyb1CHUBqP9iwUP-mp_725kiCIn8MQtg8u0fanh7llAN9sYzPSKA9VdawUoDOpbrzJNdmXmVAC38g8Y_7h9vVN3C3-biK0g93m4_gCzKGKgHuhTZq8NNNTh_makc9bBbtctCQTPtkJX6O4zjOSYNpkVRVnMczz9Ev2hNfFBPGrcJXdzDNd5lCTzupjaKoC67HhPF5UvU3LkQEb-LnhNAkzuNTguqO7SWmPCvaS5j-GMQD2wvE_wMJwqkNkqp3U5vQrGgXasNztXOcg4WCEayCZT1bh0Mydv8nQWkQVGYoQXGcwRzGAZQ_gJ-rYldk8xcctgGvtVwXTj03ZKFctpRZF3WLwW7Xm4O94XaPjPMd63pOXWbm3G0dwa3obfy0nXdb26sky-zZXpzk5z8j355-AvE_lVxWUbpJZtYoLkmeD_tTcVV9Jq48N25WFmCv3Xo4SZ6M4Hbtai-aUBvMb3upmXUEhZimTjYso3Qzs0G1FA2rsk0BauwZ60QZ4pfPsbx2iUV8klC_kZA0YCf4jktEdkR2iPl1YS6u3Vp2p_cYeXFJUlqVwrLbnRQvBaY1rYtfcyU3ZHIlK3OxPXNKEcX5797mZ_e4vxP_ottcuPe9BHDp4t33uNIvXOY_gHR2pYMLodPsVLBmh2dmbxKUgh8Y13GmJVkuwmWz_cXG_yVb3yLO7QU4KrCxzdoQ3yp7iwrxKL11Q9MP_9qVeo_bpcmyBKWLXZcul7_K2iz7wfLfWPlU-YYj08zcC6OY0AxbUy_c4dz2xWLrvGMcgAhps2wBOTuDXOUN_mnIC5Tz8OoE9J2A0SS3ef8MWL4A1iYNrH60lvcPlM-5N0gzfMMlflwAZJxps2OGKmSk2j3tbDoQpbfnPQg1iAWBQhK687tr2XVmLesNRvk9HX5JuHXv7ecNp5Ez7fw2nca4vudb999Ja39svZvXNGUGq-V2KM68BhcV_Emv2XB-Arm8lKcs5733RVPmRQUXCMszhITm5f-JUA3inyIc8iOYBcI3be8IsaB5uYBYLSHGNK3qP4H4ie4Rfvn_D7Qo06peAK0XQOOKYli-vZVHXW2KPUN5Ed5bXOseKbO2iQ64IO9iGAUXCXNeNFWSzy-V7Rc7dEz2f1mjv93SaZIk-eI2gck5onzhUj9C5H-tXzpQYL0nmnzpNxCeoSmzupih4bMNMcN13_Wn4-BfjSnOlhkTXMRuWV1D3BYgzDUtAz4g5ULMzfJ2-vTp2-dbKQx9Hk9nzvFl314ETFlFiqYpgMsZ3wF4DtumWeI-eykAa1LHYLezCeZOG6TMDiPOd1NWi_XwNu8Omf2lQetDlG5y98KgOM1anM9Ks9h9T7FjgpnziTxppa-cdJ9IQysUzkxbXhK6gHIJxUXhaVlbtU-yq6V7VHWOc-ClvsvCUZjjfFq4V22tCu7_-RWwWdhsPVQq6t7hUuI309-n16UfTT76j6UufAL15iuqJi3_szn-9-d6_vvMVg6CgCNDwOpE1fqKXKekTmt0Ra-T0l7OcZ5lV4drXFQ5aosUYkwxqZu8aGucY1Q3ZZHnsLxi1zCGWVzFdZwneZatIYoT0sC6zZMa5RWKsph2iPG1-7ZFqv2Ve2N-ncQwL6or9wWOdl-iQSjoE3CtEYRRfnelrp1RmmGvoyy2AbA-iTHMcPcJm3-XHOV3v_BTwNWg-PXvv-sPyh-v4f8GAAD__1bEWus">