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

    <tr>
        <th>Summary</th>
        <td>
            [SLPVectorizer] Miscompile with rv64gcv -O3
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    Partially Reduced LLVM IR (reducing it further causes Alive2 to not recognize the invalid transform):
``` llvm ir
; ModuleID = 'red.ll'
source_filename = "red.c"
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"

@var_17 = global i16 31470
@var_9 = global i16 -13679
@arr_0 = global [20 x i16] zeroinitializer
@.str = constant [6 x i8] c"%llu\0A\00"

; Function Attrs: nofree norecurse nosync nounwind memory(write, argmem: none, inaccessiblemem: none) uwtable vscale_range(2,1024)
define void @init() #0 {
entry:
  store <16 x i16> <i16 -22409, i16 -22409, i16 -22409, i16 -22409, i16 -22409, i16 -22409, i16 -22409, i16 -22409, i16 -22409, i16 -22409, i16 -22409, i16 -22409, i16 -22409, i16 -22409, i16 -22409, i16 -22409>, ptr @arr_0, align 32
  ret void
}

; Function Attrs: nofree nounwind uwtable vscale_range(2,1024)
define noundef signext i64 @main() #1 {
entry:
 tail call void @init()
  %0 = load i16, ptr @var_9, align 2
 %var_17.promoted.i = load i16, ptr @var_17, align 2
  %conv15.i = sext i16 %0 to i32
  %conv13.i = zext i16 0 to i32
  %not.i = xor i32 %conv13.i, -1
  %cond19.i = tail call i32 @llvm.smax.i32(i32 %not.i, i32 %conv15.i)
  %conv21.i = and i32 %cond19.i, 65535
  %conv23.i = zext i16 %var_17.promoted.i to i32
  %cond30.i = tail call i32 @llvm.umin.i32(i32 %conv21.i, i32 %conv23.i)
  %1 = load i16, ptr getelementptr inbounds ([20 x i16], ptr @arr_0, i64 0, i64 2), align 4
 %conv13.1.i = zext i16 %1 to i32
  %not.1.i = xor i32 %conv13.1.i, -1
 %cond19.1.i = tail call i32 @llvm.smax.i32(i32 %not.1.i, i32 0)
 %conv21.1.i = and i32 %cond19.1.i, 65535
  %cond30.1.i = tail call i32 @llvm.umin.i32(i32 %conv21.1.i, i32 %cond30.i)
  %conv13.2.i = zext i16 0 to i32
  %not.2.i = xor i32 %conv13.2.i, -1
  %cond19.2.i = tail call i32 @llvm.smax.i32(i32 %not.2.i, i32 %conv15.i)
  %conv21.2.i = and i32 %cond19.2.i, 65535
  %cond30.2.i = tail call i32 @llvm.umin.i32(i32 %conv21.2.i, i32 %cond30.1.i)
  %conv13.3.i = zext i16 0 to i32
 %not.3.i = xor i32 %conv13.3.i, -1
  %cond19.3.i = tail call i32 @llvm.smax.i32(i32 %not.3.i, i32 %conv15.i)
  %conv21.3.i = and i32 %cond19.3.i, 65535
  %cond30.3.i = tail call i32 @llvm.umin.i32(i32 %conv21.3.i, i32 %cond30.2.i)
  %conv13.4.i = zext i16 0 to i32
 %not.4.i = xor i32 %conv13.4.i, -1
  %cond19.4.i = tail call i32 @llvm.smax.i32(i32 %not.4.i, i32 %conv15.i)
  %conv21.4.i = and i32 %cond19.4.i, 65535
  %cond30.4.i = tail call i32 @llvm.umin.i32(i32 %conv21.4.i, i32 %cond30.3.i)
  %conv13.5.i = zext i16 0 to i32
 %not.5.i = xor i32 %conv13.5.i, -1
  %cond19.5.i = tail call i32 @llvm.smax.i32(i32 %not.5.i, i32 %conv15.i)
  %conv21.5.i = and i32 %cond19.5.i, 65535
  %cond30.5.i = tail call i32 @llvm.umin.i32(i32 %conv21.5.i, i32 %cond30.4.i)
  %conv13.6.i = zext i16 0 to i32
 %not.6.i = xor i32 %conv13.6.i, -1
  %cond19.6.i = tail call i32 @llvm.smax.i32(i32 %not.6.i, i32 %conv15.i)
  %conv21.6.i = and i32 %cond19.6.i, 65535
  %cond30.6.i = tail call i32 @llvm.umin.i32(i32 %conv21.6.i, i32 %cond30.5.i)
  %conv13.7.i = zext i16 0 to i32
 %not.7.i = xor i32 %conv13.7.i, -1
  %cond19.7.i = tail call i32 @llvm.smax.i32(i32 %not.7.i, i32 %conv15.i)
  %conv21.7.i = and i32 %cond19.7.i, 65535
  %cond30.7.i = tail call i32 @llvm.umin.i32(i32 %conv21.7.i, i32 %cond30.6.i)
  %cond19.8.i = tail call i32 @llvm.smax.i32(i32 -1, i32 %conv15.i)
  %conv21.8.i = and i32 %cond19.8.i, 65535
  %cond30.8.i = tail call i32 @llvm.umin.i32(i32 %conv21.8.i, i32 %cond30.7.i)
  %cond19.9.i = tail call i32 @llvm.smax.i32(i32 -1, i32 %conv15.i)
  %conv21.9.i = and i32 %cond19.9.i, 65535
  %cond30.9.i = tail call i32 @llvm.umin.i32(i32 %conv21.9.i, i32 %cond30.8.i)
  %conv.i = zext nneg i32 %cond30.9.i to i64
  %call = tail call signext i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i64 noundef %conv.i)
  ret i64 %conv.i
}

; Function Attrs: nofree nounwind
declare noundef signext i32 @printf(ptr nocapture noundef readonly, ...) #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umin.i32(i32, i32) #3

; uselistorder directives
uselistorder ptr @llvm.smax.i32, { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }
uselistorder ptr @llvm.umin.i32, { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }

attributes #0 = { nofree norecurse nosync nounwind memory(write, argmem: none, inaccessiblemem: none) uwtable vscale_range(2,1024) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic-rv64" "target-features"="+64bit,+a,+c,+d,+f,+m,+relax,+v,+zicsr,+zifencei,+zve32f,+zve32x,+zve64d,+zve64f,+zve64x,+zvl128b,+zvl32b,+zvl64b,-e,-experimental-smmpm,-experimental-smnpm,-experimental-ssnpm,-experimental-sspm,-experimental-ssqosid,-experimental-supm,-experimental-zaamo,-experimental-zabha,-experimental-zalasr,-experimental-zalrsc,-experimental-zfbfmin,-experimental-zicfilp,-experimental-zicfiss,-experimental-ztso,-experimental-zvfbfmin,-experimental-zvfbfwma,-h,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smepmp,-smstateen,-ssaia,-ssccptr,-sscofpmf,-sscounterenw,-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,-za128rs,-za64rs,-zacas,-zama16b,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-zca,-zcb,-zcd,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zihintntl,-zihintpause,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-zmmul,-zvbb,-zvbc,-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 = { nofree nounwind uwtable vscale_range(2,1024) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic-rv64" "target-features"="+64bit,+a,+c,+d,+f,+m,+relax,+v,+zicsr,+zifencei,+zve32f,+zve32x,+zve64d,+zve64f,+zve64x,+zvl128b,+zvl32b,+zvl64b,-e,-experimental-smmpm,-experimental-smnpm,-experimental-ssnpm,-experimental-sspm,-experimental-ssqosid,-experimental-supm,-experimental-zaamo,-experimental-zabha,-experimental-zalasr,-experimental-zalrsc,-experimental-zfbfmin,-experimental-zicfilp,-experimental-zicfiss,-experimental-ztso,-experimental-zvfbfmin,-experimental-zvfbfwma,-h,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smepmp,-smstateen,-ssaia,-ssccptr,-sscofpmf,-sscounterenw,-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,-za128rs,-za64rs,-zacas,-zama16b,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-zca,-zcb,-zcd,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zihintntl,-zihintpause,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-zmmul,-zvbb,-zvbc,-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 #2 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic-rv64" "target-features"="+64bit,+a,+c,+d,+f,+m,+relax,+v,+zicsr,+zifencei,+zve32f,+zve32x,+zve64d,+zve64f,+zve64x,+zvl128b,+zvl32b,+zvl64b,-e,-experimental-smmpm,-experimental-smnpm,-experimental-ssnpm,-experimental-sspm,-experimental-ssqosid,-experimental-supm,-experimental-zaamo,-experimental-zabha,-experimental-zalasr,-experimental-zalrsc,-experimental-zfbfmin,-experimental-zicfilp,-experimental-zicfiss,-experimental-ztso,-experimental-zvfbfmin,-experimental-zvfbfwma,-h,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smepmp,-smstateen,-ssaia,-ssccptr,-sscofpmf,-sscounterenw,-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,-za128rs,-za64rs,-zacas,-zama16b,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-zca,-zcb,-zcd,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zihintntl,-zihintpause,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-zmmul,-zvbb,-zvbc,-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 #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
```
https://alive2.llvm.org/ce/z/rKSQQ-

Before optimization: 0
After optimization: 22408

Tested using 03972261a93853d3e84857b4bed816648d3549f0

Found via fuzzer

SlpVectorizer so @alexey-bataev 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW12P6yjS_jX0DUpkg-04F33RH9PS6J3ROzNnNbdHGOOEbQxuwO50fv0Kg52kY2dyelba1SpSyzwUVbjqKUwKp0OM4RvJ2D1IH0H6fEdau1X6viFWc_q60LxT5q5Q5cf9b0RbToT4gH-wsqWshL_88uev8Oc_IEC5diIuN5BbWLXabpmGlLSGGfggeMcQtApKZaFmVG0k3zNotwxy2RHBS2g1kaZSugZoDfADiJ5B9ACyyP9BIboach3E-BH-qspWsJ-fIcDPEKCVZuVSCIBWXsWoVlP2veKCSVKzoIWcFgUIeSVL9IZZWBJLBPlQrR3U2KIG-IEtGoAfsqS_LPgIYpQD_BCjfCEx8rJvTvZpWqt5Iw535oZ2WbJo5atU73IhuGx3i41sR7NwTaKO6O_xqjfcCFUQAXmcQRwnq-hEZ_1ZZRHjbLUedYjW36NjHZA-ogjunC5In-GeacUldynle6ZHu6WxujejShpLpHWGmbPLnVnPH0qFaEH6FD24S_Q5CPwIX1pJLVcSPlirDcAPUKpKMwal0oy22jhkPiSFUrXyncsS1qxW-gOg_F1zywB6gkRvalZ7Y9lLuCSUMmN4IdjJ0Bq275YUgsHOUCLYd03khgGUI4Ce4gglbmH13pWs4pLBTvESgiRyFACXvjUECEcQrB69HpNWf4xrEUJjlXb5fIqzQCL-yXV76hFKonXv4P9WD__kBI1bEWFF9XkRfCMhRgM1mtmez5D-1fMPrIaQ_B_MnrMrWQX7vWtnIc8S52FNuDwkM55NpiVcQEqEmFgGQ1AApf7xEYqUfb4PTPTP34GJgQiAUv_0LhutamVZueSXpohX53O4SaiSXZwGW9PHF2feIasgx2e6OOjuB90JRals0Nop7caOrZ0fi_h02jJeB4MDXb1ZErn9eGlqslu6e6A8zNbfol9BR7OnTrT-5DGKw9RElkfa_S3dBFma4vSzzVmUk3xPMVTi6GIobc3laSiDk5-iQfhzNPFkgjfMMrdDSet6XBZuvRr3QXm6C089XW4tjwC5u42LJDkstJC5eIKTeDr58Wz6408L4JCM-Asr4Ii16MDVgdP51MezyXcJvOzLbArPktgvhvMlGeMluvIxQrNMovlHCX2BSnT944RmWUUXWb3s1iyrZ56FDE3y-lfbU4gWz9J6YYfCX6AVX08rnqUVX6T1sluztJ55FlI0SWtyHa3JLK3JPK3JF2hNrqc1maU1uUjrZbdmaT3zLKRoktb0OlrTWVrTeVrTL9CaXk9rOktrepHWy27N0nrmWUjRJK3ZdbRms7Rm87RmX6A1u57WbJbW7CKtl92apfXMs5CiSVpX19G6mqV1NU_r6gu0rq6ndTVL6-oirZfdmqX1zLOQojPfnAf5j4S-iK8NOZ8NOb8Y8mV3ZkPOp0JezYT8Q9X-9SGvZ0Oer_Wdm5fdmQ15PRVyPuXb8YMjJdt8slmHs0SWHNs5P069Go-gvXXeWO3uv1wu-1NoEjWaS1v5kfHcKpWUrRCwZJpVTDNJmTv-ApTHwWxp_ETuEDBYjY4fBePO3v3pdxz78iF8OGFTQfTEEduz_ykcShrbHmlrRkolxccxBwhf9XrIsVkQ-npw6_T9kGkYbQXx7wneuRCa2VbLw3uj8CboNIz5NRyWSXAR_3e4eLqu_8LF1jDBjVW6ZBqWXDNqeceMVzgZDGfMTyw8QbB6hP35MneX_nVEf4ZN3SVxF-wuvW7_xEdwXFmzNzjE8Pdu4K_EWs2L1jITXtDh537W__z7RAgQkmphNWkaLjeLmtgtQAjgZ4CQ1S0DyG0JyFhCXxeNVpZRq_SiaKuK6YXhezaq50HXvz1e0KYdhzZMMs3pQndZcqpVMeIePjOqAvSYJQW3AD0B9Eh8Q31T-qbyTe0bzQTZedj5Zs-p0QOs3MbEQ69jGFVHeDfiLCmPcHWERx0Ro7wYOxgdcJY4vGD9ZdcwzWsmLRELU9dNPSGVU1IzLZ0UvinDy3N5O6G8J6RWE9JiSyakgvTUnYm1oefiqqhqLs_lnFZcNNNyY87l1kw42M3N7gbe6975rbuYLVWttO4j6N33N8Q2xEPbERFgZw7izpwM2I7Rnk5TE-6lNWvqxiNjiWWs98SYYdxQ6j8nHVRVU1cDPvHFnBgbqzm1Hlsa2tGRIzdMmyU70cOOlGwArQcF0UHUf_nkoSSN8lN3TVH3aEc7ItqACj4CWxPJm9Bl4j2gmtABsTogw-veo52pKCOGBdzRZkCV1FTwZle9VaPovSaUvr29DYI31y9VedJ_U2GcV9wFzg0luiyF39dGeSVasz1I7ZaRsiBHuDjC5oCpX_Who2RZq-4gqGpW83J3EAzB-87nQVY3hOuDwG3Th15XeuZ3nVuikri7qab3ZU9ilOsAs2RAlARQkzgrPHwPgz64vY9rX1DfvIbu69Df-dbbUG9DvZJfRHvKfFP5plZNAEPbO70vufRzVX6Sahua8PTtq0FhewyGUU7D9rfntFD1iJoR7QOipFZkwLwakDCDEdV-ge05lf7Z2nPHpUdbLq204tBpSDvob5swxxDkq7_K0JShZaH1Ib76e7ya0LCgZsKw56euW3_TLqSkCznpAlPdgaoupKl73YR2kEs6gHCX7lWOOn4r7tFgb4Z2sDOjnRnsgp9dcLQT7lO9GHCG87GDoiQfcZoNEKNVNsqTaD0OpDEaoDvbjPI8XrsBdKhwTmub-Ly2ufrbsVstcqtFbrXIrRa51SK3WuRWi9xqkb9bi6DZWuRWaNwKjVuhcSs0boXGrdC4FRq3QgP8vUIDHxUa_66v146-Qhp-QuC7W2sbA_ADQC8AvZD-hwnL_jsrpTcAvbj1_7IH6EX_37fff18cfw31yCqlGVSN5TXfE8uVBPgBhokfKsv02SBCSZQfT_IPZiwrYWu43MAIr1cIZTFZ4zzFJWZ5kqerIilYmcdZluQlTpN1FR1P8KJaWcKOE1i1-8N_7ffXb6L5s6-1-J5paFT_T6WC7djHoiCWsA7elfe4XOM1uWP38SpOVqsMx_hue5-WOFlXecUoK5IijShOUrxOEkJKVsR5dsfvUYSSKI0wQkkax8ssx-sY5esME1JlSQSSiNWEi5HNO25My-7XcYTSO0EKJszwExN975QWRbsxIIkEN9YczCy3ov8xyrdffjuEA9Jn-Cs3VNUN73Nvt9CVhhvawcX_47tWi_vT5G643bbFkrr95cXNHhpXkv6TuY_Ul95DA9BL7-S_AgAA__8-bogG">