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

    <tr>
        <th>Summary</th>
        <td>
            [SLP][AMD] Assertion `IsVectorized && "Expected to be vectorized"' failed on Zen1
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            regression,
            llvm:SLPVectorizer
      </td>
    </tr>

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

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

<pre>
    This was a regression from around Thurs/Fri of last week (5/8-5/9). It appears to only affect Zen1:

```
[scrubbed@scrubbed repro]$ cat test.ll
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@mbc_dbl = common global [16 x i8] zeroinitializer, align 8
@foo_int = common global [16 x i8] zeroinitializer, align 8
@foo_ptr = common local_unnamed_addr global [640 x i8] zeroinitializer, align 8

define void @foo() {
  %165 = load i64, ptr getelementptr inbounds nuw (i8, ptr @foo_ptr, i64 64), align 8
  %166 = getelementptr i64, ptr @foo_int, i64 %165
  %168 = load i64, ptr getelementptr inbounds nuw (i8, ptr @foo_ptr, i64 80), align 8
  %169 = getelementptr i64, ptr @foo_int, i64 %168
  %171 = load i64, ptr getelementptr inbounds nuw (i8, ptr @foo_ptr, i64 192), align 8
  %172 = getelementptr double, ptr @mbc_dbl, i64 %171
  %174 = load i64, ptr getelementptr inbounds nuw (i8, ptr @foo_ptr, i64 128), align 8
  %175 = getelementptr double, ptr @mbc_dbl, i64 %174
  %177 = load i64, ptr getelementptr inbounds nuw (i8, ptr @foo_ptr, i64 144), align 8
  %178 = getelementptr double, ptr @mbc_dbl, i64 %177
  %180 = load i64, ptr getelementptr inbounds nuw (i8, ptr @foo_ptr, i64 208), align 8
  %181 = getelementptr double, ptr @mbc_dbl, i64 %180
  ret void
}

[scrubbed@scrubbed repro]$ opt -mcpu=znver1 -passes=slp-vectorizer -S test.ll
opt: /scrubbed/src/llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:13633: auto llvm::slpvectorizer::BoUpSLP::getEntryCost(const TreeEntry *, ArrayRef<Value *>, SmallPtrSetImpl<Value *> &)::(anonymous class)::operator()(InstructionCost) const: Assertion `IsVectorized && "Expected to be vectorized"' 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 -mcpu=znver1 -passes=slp-vectorizer -S test.ll
1.      Running pass "function(slp-vectorizer)" on module "test.ll"
2.      Running pass "slp-vectorizer" on function "foo"
 #0 0x00000000019e4738 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /scrubbed/llvm/bin/opt+0x19e4738)
 #1 0x00000000019e21ae llvm::sys::RunSignalHandlers() /scrubbed/llvm/bin/opt+0x19e21ae)
 #2 0x00000000019e4fa6 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #3 0x0000148ce39d3d10 __restore_rt (/lib64/libpthread.so.0+0x12d10)
 #4 0x0000148ce29ef52f raise (/lib64/libc.so.6+0x4e52f)
 #5 0x0000148ce29c2e65 abort (/lib64/libc.so.6+0x21e65)
 #6 0x0000148ce29c2d39 _nl_load_domain.cold.0 (/lib64/libc.so.6+0x21d39)
 #7 0x0000148ce29e7e86 (/lib64/libc.so.6+0x46e86)
 #8 0x0000000003692f50 std::pair<llvm::DenseMapIterator<llvm::slpvectorizer::BoUpSLP::TreeEntry const*, std::tuple<llvm::SmallVector<int, 12u>, llvm::VectorType*, unsigned int, bool>, llvm::DenseMapInfo<llvm::slpvectorizer::BoUpSLP::TreeEntry const*, void>, llvm::detail::DenseMapPair<llvm::slpvectorizer::BoUpSLP::TreeEntry const*, std::tuple<llvm::SmallVector<int, 12u>, llvm::VectorType*, unsigned int, bool>>, false>, bool> llvm::DenseMapBase<llvm::SmallDenseMap<llvm::slpvectorizer::BoUpSLP::TreeEntry const*, std::tuple<llvm::SmallVector<int, 12u>, llvm::VectorType*, unsigned int, bool>, 4u, llvm::DenseMapInfo<llvm::slpvectorizer::BoUpSLP::TreeEntry const*, void>, llvm::detail::DenseMapPair<llvm::slpvectorizer::BoUpSLP::TreeEntry const*, std::tuple<llvm::SmallVector<int, 12u>, llvm::VectorType*, unsigned int, bool>>>, llvm::slpvectorizer::BoUpSLP::TreeEntry const*, std::tuple<llvm::SmallVector<int, 12u>, llvm::VectorType*, unsigned int, bool>, llvm::DenseMapInfo<llvm::slpvectorizer::BoUpSLP::TreeEntry const*, void>, llvm::detail::DenseMapPair<llvm::slpvectorizer::BoUpSLP::TreeEntry const*, std::tuple<llvm::SmallVector<int, 12u>, llvm::VectorType*, unsigned int, bool>>>::try_emplace<llvm::SmallVector<int, 12u>&, llvm::VectorType*&, unsigned int&, bool&>(llvm::slpvectorizer::BoUpSLP::TreeEntry const* const&, llvm::SmallVector<int, 12u>&, llvm::VectorType*&, unsigned int&, bool&) SLPVectorizer.cpp:0:0
 #9 0x00000000035f017c llvm::slpvectorizer::BoUpSLP::getEntryCost(llvm::slpvectorizer::BoUpSLP::TreeEntry const*, llvm::ArrayRef<llvm::Value*>, llvm::SmallPtrSetImpl<llvm::Value*>&)::$_2::operator()(llvm::function_ref<llvm::InstructionCost (unsigned int)>, llvm::function_ref<llvm::InstructionCost (llvm::InstructionCost)>) const SLPVectorizer.cpp:0:0
#10 0x00000000035eb2e7 llvm::slpvectorizer::BoUpSLP::getEntryCost(llvm::slpvectorizer::BoUpSLP::TreeEntry const*, llvm::ArrayRef<llvm::Value*>, llvm::SmallPtrSetImpl<llvm::Value*>&) /scrubbed/llvm/bin/opt+0x35eb2e7)
#11 0x00000000035f68d7 llvm::slpvectorizer::BoUpSLP::getTreeCost(llvm::ArrayRef<llvm::Value*>, llvm::InstructionCost) /scrubbed/llvm/bin/opt+0x35f68d7)
#12 0x000000000362f317 llvm::SLPVectorizerPass::tryToVectorizeList(llvm::ArrayRef<llvm::Value*>, llvm::slpvectorizer::BoUpSLP&, bool) /scrubbed/llvm/bin/opt+0x362f317)
#13 0x000000000362a04f llvm::SLPVectorizerPass::vectorizeGEPIndices(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) /scrubbed/llvm/bin/opt+0x362a04f)
#14 0x000000000362545c llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) /scrubbed/llvm/bin/opt+0x362545c)
#15 0x0000000003624948 llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /scrubbed/llvm/bin/opt+0x3624948)
#16 0x0000000003011b1d llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) PassBuilderPipelines.cpp:0:0
#17 0x0000000001c0bdba llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /scrubbed/llvm/bin/opt+0x1c0bdba)
#18 0x0000000001cf321d llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) NVPTXTargetMachine.cpp:0:0
#19 0x0000000001c107b7 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /scrubbed/llvm/bin/opt+0x1c107b7)
#20 0x0000000001cf30ed llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) NVPTXTargetMachine.cpp:0:0
#21 0x0000000001c0aafa llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /scrubbed/llvm/bin/opt+0x1c0aafa)
#22 0x0000000002fb29e3 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::ArrayRef<std::function<void (llvm::PassBuilder&)>>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool) /scrubbed/llvm/bin/opt+0x2fb29e3)
#23 0x00000000019ab11f optMain /scrubbed/llvm/bin/opt+0x19ab11f)
#24 0x0000148ce29db7e5 __libc_start_main (/lib64/libc.so.6+0x3a7e5)
#25 0x00000000019a4fae _start /scrubbed/llvm/bin/opt+0x19a4fae)
Aborted (core dumped)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWl1v2zrS_jXMDWFDor4vcuHE8fsW2-wJmmyx2BuDkkYOtxQpkFTb9NcvSMnWh53GSXOw5yxOkSayyXnmmQ8Nh6Ko1mwnAC5RdIWi9QVtzaNUl3XBBOX86SKX5dPlwyPT-BvVmGIFOwVaMylwpWSNqZKtKPHDY6s0IpuNYlhWmFNt8DeALxiRNEJkky7s7wyRbIk_GEybBqjS2EgsBX_CtKqgMPhfIHwUrJDnfmKv__FWKLrShWrzHEoUevtLrKBREkVrREJcUIMNaLPkHHkrQ9UODC6poZw-ydZgFKwxIgQWNQpWsGhI4qFgFRD3y370px_tVRy6Xwt2uPBJioKVT9JFlXr9lXBfxXvxOFzc22mEDDyMYg2HPYfvabyNw0Urvgj5TSw4E-33xU60nYj9Cb06L7Zlzp1IIetaCrzjMqcco-jKj_F3zFIUrfEPUJIJZhjl7AcoRK4x5WwncNrhVFJumTDvgtMYNcbhsqB82wpBayi3tCzVCDoOvTOxvVUJFROAv0pW4k4Vsv7LMEqukLfCGJHIjyOnm0taYhsPco0tnx0Y4FCDMPYTE7lNR41F-82mHkv38wYT7DcsDrHFyKZcek2x0zRDHlQOXt1DdfwGgPSdqabec1SzN1EdABL_nan6GXmGa0JOcC1lm3MYwfV5P6ab-ANG-N50XaKdpBu9lW44YCTvTTd8LmmT9K10kwNG6r0zXeI9593UfyPd1HMYCoyrF7aAJOu-ar68SMjG4EVdNC0K1j_EV1A-XjRUa9AoWGveLL5CYaSyVQov7kfriWwMClYYkc1BBdloVSCy4fxrvWiU_DcUpv9o_7Ackc2DokJXUtV2bfy8x0Zkc__x7vBRLYumsUtIEAeB1UJbI7HDCVYoWGneDLS6r67kP5r7j3fdhx2YG2HU07XUBpG0kEIb_KAA3LcYkZV14Eop-vQJKhRcf6a8Bfd9cGOH7mvK-Z1R92A-1A2fzcCIxDaKThciKRVSPNWy1bjgVOvDkGxAUSMV6m-p9IPQRrWFYVJ01DLsuFkTV1qDsiMYxd4HffBF2WmL7TJ5872BwkBpu4Qc8MEHpV0nSYIryjiUS-St7j7erO5vsG7zmhlMcd7ubNilMlb20ZhGO-4bRDY7Zh7bfFnIehSsaQiZ1i3YiGEqSsxEwdsSsHkEXCiqH3FOiy9G0QKs7ntDiy-4bOum61y8JfKyOyV3itruaNfa7Lbq3558voX81ArBxA5bCeudqhXOtYikU1nnfIKlwLUsW9t1ELLHcg0GOQU3x3AAex1On12VrThGJPCw993b__MzCJMgHWfsk-4u7hQTxnnowfoLkXSYpOi3rdRGAa1dzK-xW6ay2U3WhyhnApGNvQ3Jlfe9V2lN7Qj5M0LEp3CK0KdW3LOdoPz_qSg52J41PV-nRR10krkTKhrjCbotj93Sq9mOiUpuTX83utplL7NeQvdFwHP_OwVBr8AP0wKCrAxK38PbrQJtpIKtMtixt7XGVmv7tzGPCmi51HLpdaxJ6XsD53AMSTKoIlJhRZmGY6zCosQOJYSIVANKNEUpCMQRprk8xWiEQnyIowElnqOUQYa3gm_tArQtZU2ZWBaSl0vvBdgyyAbYZGZiAmn8c-NiSONBPh2HNYgzUkUe1qbsEqihTKHgekitNQgNt7T5YPryNx58qXQPVbqrjF1yHJSZtuEwAXSluquWKLjuk8snbV_Jh4ndnIenBnrQVriNXol7oVxKfiR1MEZU8h0McVk-11GCoYxP9d3NvfoncFwnWFGuob_uR07484rqE3T2o382y8k1Dtu_EucXEmcu-ydg_Ve4fyncnTr1tIW64bYVOltp_FO98bHq-KCdxA4h_RV_7S9mNH5HyrYnOrE9GndG2WSNjirPT4q375h-NZ0G-dEma2S-3UwNu62ZDyf7rmeExvuvcEue2W8Nwvu-fatmVGZbMtsWTQORHZF8Ddazg3vgfgf40_jabt6bxhdyAsn_eHzP2YL0nuh6Vesnf3YfxGn5Sj9Zi4_c9DozT-zzz7LFsR1sIdO-m1SBP7ZlkjJ3VOtDSX2Qh4GP7Jcs-Ym_xiXqPPs6Cwb7gpl91Aurl-078Pm_m7sPomQF6ImBV1Sz4orL4stRsr5gzblWWJ6DFeHMiiiMipetUK1wd8CY-ebwAGO-tBSUU3XzVfK2G5_Z9eDOVA6P1lwPcnrOR5Yrqp5OzlitPoFuudFHIx-lbE6KrGXNhC259qY5BtS6rRt3F9Di8Xh8DTUVJZRX7ITO3xrDavaDWvFPUFP15aZmxoDqHxKcFyobjCFU0SxUYRamZ4XqvDCtBOVPmulbKugOpm3ZQehV1a2jOBgQTwzwfD_3y2caRMv_VpbAT9OY5teR4W-ya9_U_U4Os8SuWsZLUHesAc4EzJ8RWR8lk4dQhZeXOR3pdH75mb4_ounnPIzrLB1yJZ36oQrIu-TK7-a_P6Lf__757uGfXeW8pcUjE3Ai4bKpo30vycfL9K175vwg9-jWgauSNm6fcIp7J_Aq5r3I6_LFET3kC_Hm-eLB6_Jlz_v6TOPfYN1z4X4Hl50TauLPagul1Tm15ZRn_usGn1dTrIVDjkw6UlLlJINgpF61LsD76jxhfG8UEzvbeJ5IkCNDJoF4uZfpWqn5LCn5b61pWrNh_ATILw0_Y87J7tr5hLc7Jo7r3DD_8AjmcI4VXHcvgIzdOFoE97vg4-opG7M17mGL66ScFX9jovzZrM-gWMVA7ed1jf1r_56VVn3iDGkVTM-NaO77FZaNuaVMnHcQ5UQGwNmhTpknEOHtlrO82GpDldnWHfTzZyABTSAaEKMZxbCigDusMxlaiQ5vlUtl3MFuWkgF7qjUimbjd7wuysugzIKMXsCln4RJGCaBF148XqYlTQu7UwyCPE-jnHhZFcVpmoYAeQTFBbskHom8yE884vlhuAzTqMrTJIw8Qv3KBxR6UFPGl5bqUqrdhTvfvfRDLwjCC05z4Nq9_kbI8HabO2O-RoT0GTRpGu1gtL5Ql3Zwkbc7jUKPM230oMQww91bdXa_Fa1RdLW6XaNo_Y5H31gK98rcRav45dtPuXtHfL0k_wkAAP__Sxo5IQ">