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

    <tr>
        <th>Summary</th>
        <td>
            clang crashes on @llvm.vector.reduce.or.v4i56
        </td>
    </tr>

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

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

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

<pre>
    clang crashes on the following input:

```
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
target triple = "aarch64-grtev4-linux-gnu"

define i56 @foo(ptr %ptr) {
  %vec = load <4 x i8>, ptr %ptr, align 1
  %extvec = zext <4 x i8> %vec to <4 x i56>
  %ret = call i56 @llvm.vector.reduce.or.v4i56(<4 x i56> %extvec)
  ret i56 %ret
}

; Function Attrs: nocallback nofree nosync nounwind readnone willreturn
declare i56 @llvm.vector.reduce.or.v4i56(<4 x i56>) #0

attributes #0 = { nocallback nofree nosync nounwind readnone willreturn }
```

Compile this like so:

```
$ clang -O3 --target=aarch64-grtev4-linux-gnu -S reduced.ll
```

Then I get:

```
clang: /home/kazu/dev/llvm/llvm-project/llvm/include/llvm/CodeGen/ValueTypes.h:289: llvm::MVT llvm::EVT::getSimpleVT() const: Assertion `isSimple() && "Expected a SimpleValueType!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: ./relass/bin/clang -O3 --target=aarch64-grtev4-linux-gnu -S reduced.ll
1.      Code generation
2.      Running pass 'Function Pass Manager' on module 'reduced.ll'.
3.      Running pass 'AArch64 Instruction Selection' on function '@foo'
 #0 0x000000000638e5b3 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (./relass/bin/clang+0x638e5b3)
 #1 0x000000000638c38e llvm::sys::RunSignalHandlers() (./relass/bin/clang+0x638c38e)
 #2 0x00000000062f0123 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) CrashRecoveryContext.cpp:0:0
 #3 0x00000000062f02de CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #4 0x00007f48b249b200 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12200)
 #5 0x00007f48b1f078a1 raise ./signal/../sysdeps/unix/sysv/linux/raise.c:50:1
 #6 0x00007f48b1ef1546 abort ./stdlib/abort.c:81:7
 #7 0x00007f48b1ef142f get_sysdep_segment_value ./intl/loadmsgcat.c:509:8
 #8 0x00007f48b1ef142f _nl_load_domain ./intl/loadmsgcat.c:970:34
 #9 0x00007f48b1f00222 (/lib/x86_64-linux-gnu/libc.so.6+0x31222)
#10 0x0000000003fdb496 llvm::AArch64TargetLowering::useSVEForFixedLengthVectorVT(llvm::EVT, bool) const AArch64ISelLowering.cpp:0:0
#11 0x0000000003feae3d llvm::AArch64TargetLowering::isVectorLoadExtDesirable(llvm::SDValue) const AArch64ISelLowering.cpp:0:0
#12 0x0000000007297f2f (anonymous namespace)::DAGCombiner::CombineExtLoad(llvm::SDNode*) DAGCombiner.cpp:0:0
#13 0x000000000724caf8 (anonymous namespace)::DAGCombiner::visitZERO_EXTEND(llvm::SDNode*) DAGCombiner.cpp:0:0
#14 0x000000000722e6a1 (anonymous namespace)::DAGCombiner::combine(llvm::SDNode*) DAGCombiner.cpp:0:0
#15 0x000000000722a7f4 llvm::SelectionDAG::Combine(llvm::CombineLevel, llvm::AAResults*, llvm::CodeGenOpt::Level) (./relass/bin/clang+0x722a7f4)
#16 0x00000000073a0469 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (./relass/bin/clang+0x73a0469)
#17 0x000000000739f29d llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (./relass/bin/clang+0x739f29d)
#18 0x000000000739bae2 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (./relass/bin/clang+0x739bae2)
#19 0x0000000005646d8d llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (./relass/bin/clang+0x5646d8d)
#20 0x0000000005af4e08 llvm::FPPassManager::runOnFunction(llvm::Function&) (./relass/bin/clang+0x5af4e08)
#21 0x0000000005afd341 llvm::FPPassManager::runOnModule(llvm::Module&) (./relass/bin/clang+0x5afd341)
#22 0x0000000005af55d4 llvm::legacy::PassManagerImpl::run(llvm::Module&) (./relass/bin/clang+0x5af55d4)
#23 0x0000000006b62f5b clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) (./relass/bin/clang+0x6b62f5b)
#24 0x0000000006f0df04 clang::CodeGenAction::ExecuteAction() (./relass/bin/clang+0x6f0df04)
#25 0x0000000006e40cf0 clang::FrontendAction::Execute() (./relass/bin/clang+0x6e40cf0)
#26 0x0000000006db443f clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (./relass/bin/clang+0x6db443f)
#27 0x0000000006f08963 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (./relass/bin/clang+0x6f08963)
#28 0x0000000003fb8f79 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (./relass/bin/clang+0x3fb8f79)
#29 0x0000000003fb6850 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#30 0x0000000006c324a2 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::$_1>(long) Job.cpp:0:0
#31 0x00000000062f0037 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (./relass/bin/clang+0x62f0037)
#32 0x0000000006c31ee0 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (./relass/bin/clang+0x6c31ee0)
#33 0x0000000006bf53b8 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const (./relass/bin/clang+0x6bf53b8)
#34 0x0000000006bf5687 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) const (./relass/bin/clang+0x6bf5687)
#35 0x0000000006c10fd1 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (./relass/bin/clang+0x6c10fd1)
#36 0x0000000003fb5e98 main (./relass/bin/clang+0x3fb5e98)
#37 0x00007f48b1ef27fd __libc_start_main ./csu/../csu/libc-start.c:332:16
#38 0x0000000003fb352a _start (./relass/bin/clang+0x3fb352a)
clang-15: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 15.0.0 (https://github.com/llvm/llvm-project.git 87099a0438ade5cf0df1dda21183628ee3b49395)
Target: aarch64-grtev4-linux-gnu
Thread model: posix
InstalledDir: /home/kazu/dev/llvm/./relass/bin
clang-15: note: diagnostic msg: Error generating preprocessed source(s) - no preprocessable inputs.
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzlWltzozoS_jXOi8ouEBfDQx4cxzlntjI7U5PU1Na-UAKErR0MXgk8zvn12y2BjYidODNb-7KpxAZdur--qiUlrfOX26xk1ZpkkqkNV6SuSLPhpKjLsv4poENUu7aZeIuJcz9x-s_Q6X71a8PkmjckZw0r2UvdNmTi3ZMJpXy6hZl8KiL4wj-PToUbwoP-wLfQh4fQh2aKA-BzWnnUtD1hG6UWk0aKXcl7BozJbAMj17Lhe39aiqo9TNdVe5xlPnNeiIoTEYRk4jtFXU9otGskUAjga0JjMpnfmaEEG_c80xzKmuXwsPTJgaAMqwldkuHEJWGlWFfEHUzmh6af_xc8W_N74k19bA5CpHuaLrlRX8bKskdclvvtDOY1tZxJnrcZn8HT3sfJqLYBpRMCEKsnizQ1KU2-08z83jKpd0ce2iprBHjAommkAhuQqkYYKct-wGMhOYcv9VJl8NVW4B45kGZ5VYNyf4qyBOKtrHqdg2NJ_gsiaHtQzxnCY4BIpG0DHopdxv7zu18DSE6y245sPpf1difAx5qNUKQUPzhR9dsBMKE-MWE0_eKR6dT4KmC85J9k-kSMFvJZWb6B5XnDK_KJaGpvIdDc0WIT-rCptxy-frC_IA4ecr6HT1R_9zXdyfpfYIhTq6iyss35qWFZ5_wPXsHTd1a2_Pllx9VsA-RpFCMTPQzweIvP358Hb6vvz-YB8D6JLQQqNGAMxySrK4UykIVSXGovA_BCmWHdoAkFZ0A3pavDDiDynDDSEeqBTKiL0U3npGBgpXxmFPD1cbV4WhHVplvRwKy0XYOGd7VsMNg2TbNDhwaJ4Hctmk2bzrJ6e1EzQqmWK3ggDHyoU5DOjDpREvS4RrKM64wAjGSdcZAsB19ppWnGmUypOhMMJZFtRVQG6avpID816LZ5u90dbetAV_xV1mvJtgScqN3yqtGROAMskpdADx5Sgbb5bY9zkRvaGvyr4pKhVUwPxZ5vbVXhCrADpmCT-TE9fMWGz6xiay7RENC0rfMW0zKdD5jQeSepd47cYqGRkk_gGLI1lJ94yfVTR7boWcJ7n7nnXVbTecA5OP1P6EU8SL2BO6oXZR6-SlE1Wt3PxmbRaZBkP5MaEHC21e63BGs3xhmjS0qf0Dvn0PE7pVkA5I4AZTDmHCDQxROsG6z8E5yk5JBs-wB4lyeStHhSiyctHJd6SIhB1nvZ1q0iFdtytdOCx4b_Ep34G8_qPZcvy7pqYMn4BGFmeg0oPQboaHUsSVspQAx-XNYIJibnaMyyHTqzo_-OCL0xQgouZ023lNHz_AgLv2MxL_wopX6cUschSSK5ggWHJ5AFtIYfSpHC5yEKk9AqF7Bj12xwsZipeuZobbsUqFi6DoZs3MKZR8wlkgnFdYAqLQY8zPTbi8r5Ds3YVuJgGnQuRrZoZZw3y0CQAKVxT2xCiw0v3MAPCUsxmWnCTW7k0E2aQuTCxyAy5mMKPi1wFUkMqETxNaaWZI9pVRMFlSNyLHm2ap2xpkMW69LtSDg6RzipygQnJnm9ZaJ6g148R1E9_0QwHqnUoZReYawMzRRqM3lgJ3o0E0ahlRe8Ik_9OByEYZd5nnXOfKx_ckgPa9PVKv70ffVQywdx4Pkjr9bN5ruuWvRKZi91EBVpXZfH5Y10hD9BGuvJvnZXBOjaADnjXn4dQKEMnEfQ6-rQ3HMlJEtLO6c93evl8heAWclkTuN5AeZ9J5ncL_6AkglSFYSuyS7mDeAhyhGyv9dYaSwQ22DieTSejcbPWBF9GM1eKNH8c_XtS7L6x_Pq7_e_gce38VAeQvh_FE9m3n4DRjCCwSB2Bt5zXESBkGUQi2XX9sj3vERPHnrfN67aEuoOxDPs6erCL7vGvHeT31-3OpBWkIaWFB5z_DC-IAX6rYVgUeUrqPNQwOsWzo6-BWBuA4gLGufvAjCti7K8Y0pkd2Wd_VCWXo9Vkql4saS4Bp7mbsGLRvBSxum78KDI_FJ9ZtkGTNsjseC96rsWH7K38MVDfEHoh3k0VN-IEdaMA4hnsX0QVMdzCIpamT9ghc-daADq4Svi6EvX_zIcw82C447g5J7vXgHns66mbbt1TddCQU4WFDqCEgT5MGmUfM2yl65cPoE6FYUA7LcAIT8LkF0VplAXBinp97G4wkKA30HJzqv8S9vgIRSNBt33gq1hr9-ITK2qtc5uunofDPkTqjkunzhuiSBngSnVICqtoafM9tYosyC_M-gRns4NGYRugwvwN17Yzb1GFyOCnRIWnTMuCdR_XbVSiX-3PMGjKG9pb2l2P6VoeNJvbAaTcl4wyO5JDgmk4e9M9FbHA5l3dibGgJaFreUyLJy8cPwzSu8EM0Y_8KxteC_rdZsiQ9libS2RIfedrHCGrB8k7iaOSh3yvparIWpxtZa0EMpO3ytsgfXJksQtL6ugSDgr82WY1wVbx9hCNh-ZIopDzwo2g-EEcF9n7DWeVwKYiuUKCyFDC1Fkl8BpVMyhWs3cBHcQVqZZSMleMFq8ZbZhsg-qRXcea7dBw74W-ZXAOr4WsHgELIwCh_T6WbrPuuIf1m5bVpamKDfZ8gxKbbdciv2Fkm50kpFB7DCqBRnkh_4wBHa1qAvda5xVh6muLbvD0KSoEMfJcIZ3Z8SlC3bcwmZ77PdndX5qNFmNlVbjKZl1uWKQapIkOxxc17ykWDBhXtF7Ga0kazA2JA1sivHAy3SPyIFw6JW1HPTjkMVpJ7YYnjXiL_UTVw-K-nOLv9XpeRu442MKB7bRg-L3zGHE5HiawwpevlgqfNtc10SNgTB0ztFhT-a5nFt57f_Pzu-r0WjJUuOo9igCL40uqlHnPPZqneh1ayXI0UQccKlOeGPoossYVwpo8FsC-mMBw2j-UQEhUNRl6aD3UQC6CyXOq6R4tO6OCTRsd6x4rUI6F_igWkBqSy12WZC5TpG7lyDcD56t5fHMunhJnf9TtbwfCFpeSyHhaLELeBwRfYZ3xdKJgy1q41NHOi9ykiR4XAcJgckmOR4PZqrtz0nNIw6a6kH6oNDTl8BueCI-Lhi8gDJiyF4DFocfweqeqRsAC8KlxEyz6G7wiq7kAh0bXZtrJvJTNBvCDwI9PufEhRADrq3iZLrHKybFORGDsmnIiYABFZ4JuMHMmTk48WM3UjMYQKK5E8fM8b0ItjVBhlWvm-eMum7khTTi3Ev92IuDI-_n7lJoQS7ek3eXjHjujXc4-hiB7GolDqZLF3olyH8vtI7evl58ZYNXyq5q3HIsSH7cvZGt0heXKzTD8SIK74nO3apFCj19CnQG_Xj-af5PQc1Gt6M3-a2Xg1LYTSOakr_-Z4e3r6ZvWlne_vrlYRBEYXizuZ3nYeq4bhZHAZ8X6dxLsywIwjkNXZYGOb0pWcpLdTsJ7iaUpma_NzmeA-v7ziVei2rg07qa7lmJRS6dBPc34pY6lDqh41HHp340Y0UWhCwvYKeXA4IYZOQQeOVMS1rL9Y281ZDTdq1QAZDH1akTzIc3PVzDAfqsbTa1vEWDN-wH2wgwELvRQt5qCf8Dqe04Aw">