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

    <tr>
        <th>Summary</th>
        <td>
            [AArch64][SVE] Compilation crashes with 256-bit fixed vector length in Neoverse-V1
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          kasuga-fj
      </td>
    </tr>
</table>

<pre>
    Version: 9745c13ca82538d30a04db7da40d3c4cd9f7f13c

The input file is [img_luma.c](https://github.com/llvm/llvm-test-suite/blob/e1ed8de38e98a774ce5c44ba0f46fa77f79c9774/MultiSource/Applications/JM/lencod/img_luma.c) in llvm-test-suite. The command is as follows.
```
<path to clang dir>/clang llvm-test-suite/MultiSource/Applications/JM/lencod/img_luma.c -c -O3 -mcpu=neoverse-v1 -msve-vector-bits=256
```

The following is a dumped backtrace.

```
fatal error: error in backend: Cannot select: 0xaaaaefb00d90: v16i16 = avgceilu 0xaaaaefb00e70, 0xaaaaefafef00
 0xaaaaefb00e70: v16i16 = extract_subvector 0xaaaaefae8530, Constant:i64<0>
    0xaaaaefae8530: nxv8i16,ch = masked_load<(load unknown-size from %ir.198, align 2, !tbaa !16)> 0xaaaaef8b41c0, 0xaaaaefae7000, undef:i64, 0xaaaaefb00cb0, undef:nxv8i16
 0xaaaaefae7000: i64,ch = CopyFromReg 0xaaaaef8b41c0, Register:i64 %28
 0xaaaaefafe2c0: i64 = Register %28
      0xaaaaefae69e0: i64 = undef
      0xaaaaefb00cb0: nxv8i1 = AArch64ISD::SETCC_MERGE_ZERO 0xaaaaefb00af0, 0xaaaaefae8760, 0xaaaaefb009a0, setne:ch
 0xaaaaefb00af0: nxv8i1 = AArch64ISD::PTRUE TargetConstant:i32<31>
 0xaaaaefae9020: i32 = TargetConstant<31>
        0xaaaaefae8760: nxv8i16 = AArch64ISD::SRA_PRED 0xaaaaefb00af0, 0xaaaaefafe800, 0xaaaaefae8ca0
 0xaaaaefb00af0: nxv8i1 = AArch64ISD::PTRUE TargetConstant:i32<31>
 0xaaaaefae9020: i32 = TargetConstant<31>
          0xaaaaefafe800: nxv8i16 = AArch64ISD::SHL_PRED 0xaaaaefb00af0, 0xaaaaefb00a10, 0xaaaaefae8ca0
            0xaaaaefb00af0: nxv8i1 = AArch64ISD::PTRUE TargetConstant:i32<31>
              0xaaaaefae9020: i32 = TargetConstant<31>
            0xaaaaefb00a10: nxv8i16 = AArch64ISD::UUNPKLO 0xaaaaefafecd0
              0xaaaaefafecd0: nxv16i8 = insert_subvector undef:nxv16i8, 0xaaaaefae6dd0, Constant:i64<0>
 0xaaaaefafed40: nxv16i8 = undef
                0xaaaaefae6dd0: v16i8,ch = CopyFromReg 0xaaaaef8b41c0, Register:v16i8 %29
 0xaaaaefad46c0: v16i8 = Register %29
                0xaaaaefad47a0: i64 = Constant<0>
            0xaaaaefae8ca0: nxv8i16 = splat_vector Constant:i32<15>
              0xaaaaefb00e00: i32 = Constant<15>
 0xaaaaefae8ca0: nxv8i16 = splat_vector Constant:i32<15>
 0xaaaaefb00e00: i32 = Constant<15>
        0xaaaaefb009a0: nxv8i16 = splat_vector Constant:i32<0>
          0xaaaaefb00690: i32 = Constant<0>
      0xaaaaefafe8e0: nxv8i16 = undef
    0xaaaaefad47a0: i64 = Constant<0>
  0xaaaaefafef00: v16i16 = extract_subvector 0xaaaaefae88b0, Constant:i64<0>
    0xaaaaefae88b0: nxv8i16,ch = masked_load<(load unknown-size from %ir.197, align 2, !tbaa !16)> 0xaaaaef8b41c0, 0xaaaaefae8c30, undef:i64, 0xaaaaefb00cb0, undef:nxv8i16
 0xaaaaefae8c30: i64,ch = CopyFromReg 0xaaaaef8b41c0, Register:i64 %27
 0xaaaaefae6270: i64 = Register %27
      0xaaaaefae69e0: i64 = undef
      0xaaaaefb00cb0: nxv8i1 = AArch64ISD::SETCC_MERGE_ZERO 0xaaaaefb00af0, 0xaaaaefae8760, 0xaaaaefb009a0, setne:ch
 0xaaaaefb00af0: nxv8i1 = AArch64ISD::PTRUE TargetConstant:i32<31>
 0xaaaaefae9020: i32 = TargetConstant<31>
        0xaaaaefae8760: nxv8i16 = AArch64ISD::SRA_PRED 0xaaaaefb00af0, 0xaaaaefafe800, 0xaaaaefae8ca0
 0xaaaaefb00af0: nxv8i1 = AArch64ISD::PTRUE TargetConstant:i32<31>
 0xaaaaefae9020: i32 = TargetConstant<31>
          0xaaaaefafe800: nxv8i16 = AArch64ISD::SHL_PRED 0xaaaaefb00af0, 0xaaaaefb00a10, 0xaaaaefae8ca0
            0xaaaaefb00af0: nxv8i1 = AArch64ISD::PTRUE TargetConstant:i32<31>
              0xaaaaefae9020: i32 = TargetConstant<31>
            0xaaaaefb00a10: nxv8i16 = AArch64ISD::UUNPKLO 0xaaaaefafecd0
              0xaaaaefafecd0: nxv16i8 = insert_subvector undef:nxv16i8, 0xaaaaefae6dd0, Constant:i64<0>
 0xaaaaefafed40: nxv16i8 = undef
                0xaaaaefae6dd0: v16i8,ch = CopyFromReg 0xaaaaef8b41c0, Register:v16i8 %29
 0xaaaaefad46c0: v16i8 = Register %29
                0xaaaaefad47a0: i64 = Constant<0>
            0xaaaaefae8ca0: nxv8i16 = splat_vector Constant:i32<15>
              0xaaaaefb00e00: i32 = Constant<15>
 0xaaaaefae8ca0: nxv8i16 = splat_vector Constant:i32<15>
 0xaaaaefb00e00: i32 = Constant<15>
        0xaaaaefb009a0: nxv8i16 = splat_vector Constant:i32<0>
          0xaaaaefb00690: i32 = Constant<0>
      0xaaaaefafe8e0: nxv8i16 = undef
    0xaaaaefad47a0: i64 = Constant<0>
In function: getSubImagesLuma
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: <path to build dir>/bin/clang llvm-test-suite/MultiSource/Applications/JM/lencod/img_luma.c -c -O3 -mcpu=neoverse-v1 -msve-vector-bits=256 -fno-crash-diagnostics
1. <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module 'llvm-test-suite/MultiSource/Applications/JM/lencod/img_luma.c'.
4. Running pass 'AArch64 Instruction Selection' on function '@getSubImagesLuma'
 #0 0x0000ffff939578b4 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (<path to build dir>/bin/../lib/libLLVM-17git.so+0x7278b4)
 #1 0x0000ffff93955dc0 llvm::sys::CleanupOnSignal(unsigned long) (<path to build dir>/bin/../lib/libLLVM-17git.so+0x725dc0)
 #2 0x0000ffff938781e0 llvm::CrashRecoveryContext::HandleExit(int) (<path to build dir>/bin/../lib/libLLVM-17git.so+0x6481e0)
 #3 0x0000ffff9394f6a4 llvm::sys::Process::Exit(int, bool) (<path to build dir>/bin/../lib/libLLVM-17git.so+0x71f6a4)
 #4 0x0000aaaae8171368 (<path to build dir>/bin/clang+0x11368)
 #5 0x0000ffff9388a3f8 llvm::report_fatal_error(llvm::Twine const&, bool) (<path to build dir>/bin/../lib/libLLVM-17git.so+0x65a3f8)
 #6 0x0000ffff94320954 llvm::SelectionDAGISel::CannotYetSelect(llvm::SDNode*) (<path to build dir>/bin/../lib/libLLVM-17git.so+0x10f0954)
 #7 0x0000ffff94323510 llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) (<path to build dir>/bin/../lib/libLLVM-17git.so+0x10f3510)
 #8 0x0000ffff9431e0a4 llvm::SelectionDAGISel::DoInstructionSelection() (<path to build dir>/bin/../lib/libLLVM-17git.so+0x10ee0a4)
 #9 0x0000ffff94326e88 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (<path to build dir>/bin/../lib/libLLVM-17git.so+0x10f6e88)
#10 0x0000ffff94328e7c llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (<path to build dir>/bin/../lib/libLLVM-17git.so+0x10f8e7c)
#11 0x0000ffff9432b0d0 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (.part.0) SelectionDAGISel.cpp:0:0
#12 0x0000ffff93dcbce0 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#13 0x0000ffff93ad751c llvm::FPPassManager::runOnFunction(llvm::Function&) (<path to build dir>/bin/../lib/libLLVM-17git.so+0x8a751c)
#14 0x0000ffff93ad76a0 llvm::FPPassManager::runOnModule(llvm::Module&) (<path to build dir>/bin/../lib/libLLVM-17git.so+0x8a76a0)
#15 0x0000ffff93ad9040 llvm::legacy::PassManagerImpl::run(llvm::Module&) (<path to build dir>/bin/../lib/libLLVM-17git.so+0x8a9040)
#16 0x0000ffff9876b5ac clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) (<path to build dir>/bin/../lib/libclang-cpp.so.17git+0x1a2b5ac)
#17 0x0000ffff98b2ddac clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (<path to build dir>/bin/../lib/libclang-cpp.so.17git+0x1deddac)
#18 0x0000ffff976712a0 clang::ParseAST(clang::Sema&, bool, bool) (<path to build dir>/bin/../lib/libclang-cpp.so.17git+0x9312a0)
#19 0x0000ffff993f9bd0 clang::FrontendAction::Execute() (<path to build dir>/bin/../lib/libclang-cpp.so.17git+0x26b9bd0)
#20 0x0000ffff99390ad0 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (<path to build dir>/bin/../lib/libclang-cpp.so.17git+0x2650ad0)
#21 0x0000ffff99473d38 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (<path to build dir>/bin/../lib/libclang-cpp.so.17git+0x2733d38)
#22 0x0000aaaae81726dc cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (<path to build dir>/bin/clang+0x126dc)
#23 0x0000aaaae816e3dc ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#24 0x0000ffff9905db20 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#25 0x0000ffff938780b4 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (<path to build dir>/bin/../lib/libLLVM-17git.so+0x6480b4)
#26 0x0000ffff9905deac clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#27 0x0000ffff9902ba5c clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (<path to build dir>/bin/../lib/libclang-cpp.so.17git+0x22eba5c)
#28 0x0000ffff9902c284 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (<path to build dir>/bin/../lib/libclang-cpp.so.17git+0x22ec284)
#29 0x0000ffff9903da4c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (<path to build dir>/bin/../lib/libclang-cpp.so.17git+0x22fda4c)
#30 0x0000aaaae8170658 clang_main(int, char**, llvm::ToolContext const&) (<path to build dir>/bin/clang+0x10658)
#31 0x0000aaaae816ac60 main (<path to build dir>/bin/clang+0xac60)
#32 0x0000ffff92e773fc __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#33 0x0000ffff92e774cc call_init ./csu/../csu/libc-start.c:128:20
#34 0x0000ffff92e774cc __libc_start_main ./csu/../csu/libc-start.c:379:5
#35 0x0000aaaae816acf0 _start (<path to build dir>/bin/clang+0xacf0)
clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
```

I tried `git bisect` and c7dbe326dff81273eabe339fe69cd7bef947619c seems to be the cause. 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW11v2zqT_jXKDWFDIvV5kQvXjnvSTU-DOC2we2NQ5MjmW5nyilSa7K9fkJJtUbabJvW7OMAWOKexJXLmmYfDmdHQokqJlQS49qIPXjS7oo1eV_X1d6qaFR0V_7rKK_5y_Q1qJSrpkQnKkjBiAWE0xRFJOfGpH_I84TT0OWEh41mRFAFhnj_z_En77-MakJDbRqNClICEQl70QWxWy7LZ0DHzopmH07XWW-WRiYfnHp6vhF43-ZhVGw_Py_Jp92ekQemRaoQGD8_zsso9PIcAeMqBpJClNElCBhELw5z6RRgXNEmKJGNZkoQenn9uSi0WVVMzM3-y3ZaCUS0qqTw8__TZaAHJKu7heQ8gzpCQaKB_jIxdrNpsqOTGKKpQUZVl9UONO-tjv_uv_UqmW6rXSFeIlVSuEBe1R248PG-_Htv3LrRoxNDoC0GjDds2HplJqJ6gVjB6CtBoo55g9ARMV_UoF1p5ZIaj-DTc_dq1Vgm5slYi3my2wFFO2XddUwbj_viBkIJqWiKo66o23mM_GC7NZJDcXJtSKSuNFJTAtLngP1NKKRS57_PMN1eeglgEMfLIDNGnFQNRNv1RkPgenu6v0AIKv9M_HOYKg2djgF6qJm85OciANCJW6rSSSlNpkIk49MjUN2vWCkdoOIFMkHx-SkUQe3jK1lbLhqrvwJdlRblHph5OzSfUyO-y-iFHSvwPoKKuNsjDkajHQZYatbQUK4mw-ejhQOeUmr9GbOaRm73aNA8D5loPie_bK43kUHSwewNy32e5M2CH2GWsE0QmqBXQWTOtti_zuto8wOoEigdYCaWhbtUak3A6lFsAZju5VuRukjMcuezGGThzWuwnhnbm7RfCjp5MaraOw9vFzEQYMlncPE6ny883Dx9vlv918_ClP5sWAz7TJPYHBGbUXlGgJXhkwtbH3mbE_BzE_ePD1xv0SOsV6L6XEeyRKQkObnaAkvm4ZYFgK3I42ZmGhhxaQw4eepqZh8ny_uFm9jNGCkj9IUeMnthx_xgO0BD8ayz8dfcaC-ZKcJ4FdKz6soSgUyreyw4amvUKP1-__n3_H3df-qwyfsJ0NBzRyg1ikVq5Qiqo-_G3F5LMIJfemPNXQ3JPHw-P9B1FjVMUWjVdokjfEfg6dTjC2RAUD2N2kH0c_LJXsPEwoU4Y7C2s_9N17ZxzsK5qW1K97Lg_crcgesXdTFL1HXfr4enPvhSKNys-Bpy9Vf8pXnvy4uwcjuHEfgiCIxAD13zzkg-qnzcUOmn-xkInzS9T6CS_WeikjFym0LGCfrvQSY7kxjg5X-gkfwqdP4XOn0LnT6Hzp9D5U-j8KXR-cclvJSoayXTXjlyBXjT57YauQN01G9oOur-7mSxukGryjdCIorxZoRq2Va2RrtAvdhq3dfUvYNrDc6FUA8rDc2Q7fZKVDQek14BYTdX60Akz-2Nbw7auGCgFHKmudze1M6lSFRNUA0d1I5Fitdjqrnu20JR9t601g8xe8sctnfd1tarpBtF61WxAaoMd9ZqJeSNKfmgm5kL-A1qKaFTIamT5GXFBV7JSWjDVWhaMDX6oClPhbWmtoEZUI5AcVYVtErfjcMfAtOKAViChtlDbm6S7-dBIKeQKbalSyMPJvHMPdG8ufKaSrqD2cIIqiTYVb0owoy7EjIeTbgHD8RGSLpmgW6l03bSgFrbNaYxoEe2c2Yz3Qv_In_dlooeJj_xn3_f9oiiKjGRRkuahXeI2V6kX1aXWWkhtHeqx9cr0MKimP5aV0jXQjYdN7Y6E1B7OkIfT13xqPDYkiLz99-7u2-dRkKyEHqvKwx_85wQbRN4-uHuYBAPIEWf-KcjTEqhstl_kQqwkLT2cNtKeTHBUVnJ1MYBGvwMQOwDTJA2gD3BqHPgBmPH3l2klNTzr9s5fVPISbp6F9nB6OQ7j0CBwIBKXw7CI6Zllt2Gn_dIHNkV5VZWX4jAw-h2AYQfQBvI0SAISp7-iysYoKzQwUxyZkbsuKSVF2jO6jeZLe7ywbI8X-l7--ENIQMwkkM7LL8hAHBkwDtq4jzYk2M-i_hLtN_1s8vF2AWXnW_bg4z9Bt7cdAxazvysOHp5cCHPgFwaTAzoZgCZR4L8Kur1qAvK02mxMGDuN2jx0dxuYrWm9Wwv3zuW2TeAXBr5jX-raF4BPX1-UWdWL1r1gnV4MKBgcDtBssBAxpOnr3lNx-AhyIvnNRujZ5OMlMRYGwh6jieP-AGMKCftFZ5mU5QeqBPtQVuy7chxmn6sPW_VSFhiAjgXBwILc56-7e93IL_IzZWshYQfWseDo3s6E8ZbWemw8Eg1Fj9nWVHm-_X-Pz81EnOXMyUQDRaa46UE8ie2noE7IO43LTT-UJ1HQX_n5vZm6K7PejOh3VzqlBo-z0OEQcEz9XwD82daG7uJ2ly4INqa-AzYagM38sA-2hBVlL11-P8C-3WwPDvpvhmwQOZCdZJcmcR5R1v6ioSs9NkJ_aM_3vzR625jM1rs9OzwN3MiVkNBl6N6Qv4ByqBdAa7b-srU1uJPMe0O7MPjKqLY59MqgOypXp4b0YoSuhVw9QOFe3nE-GQjsSJh0Lt-fcit13SjxBA9QTKW-17VHpofbT0W3ueeihMWL0rCxizZFSvP2TiPFfzew3A5mmvp--6MWGpa7Kr83iUNBm1IvOZSg4ZWJ5MbqfIcbWQ5GbLsdq2ps3amNyhQbX3GcySlC0hxz7jpTx-G0kqrZ7PZrW3s_1lSq0j6ifZVi4GWTxeOuXH_nXjhnBAeD0THCqTSSOAkw9ftG3JtH3Mni0YW4APN816tOf6NKPQM2IwaKg9UpNjJSZDl3sM5rQ9vea7uHCWCNeUh-X4VxBhyOc6O8jw77LrrMpy66abXZihLqW9saYuDg22209Lw5l_UFHEcGoGOBU2ZkYUI4SZ3o2GI9GPJUtW0GF_eRoe98FDiHPCEGmIMcDx7jcMwZYixYbqhwk8ykrumLCYNk6hb3bYw6KvifKsF_3YDeY6GB4GAkLsYYCGdoR-k0eLT7p_9EsqFl-c02p9qceQLwIMgbGV3ocMpSXosnqE_WSNgpOTI_4jn2rdU9ubtOz7K2xNm77Y6ykdYMYbQsc8q-LwtpkB68odXdecY0mLY_OhxuzpMLtI_9lU1ttHSi_iGjddG-lyyWS_b8HATtl9xU8CYzCIPJsugMNheWuqa2AdjeHoijZWk8vap7982QySHwWQ9pObdTPJyUdJNz2wbbU4XTXUvoU5WfXo9o2NXxnU7Z-a7OQyMXtIDyxaHz50t3scaP32ueGSvioVeBmxv_33nF4BHm7PInLnE4p9F54mygpUfJbsemE5UHE-0vf89Ukz8ZOhn0pPa2XSa0YzD2Op6UDghhOA3fSsinKlfn2fhU5XdC6XOF81EY3jvAlhobp12j8lcJ7Lzk30ujYcmh0a2dfMJpeNavZr3PTs4_kezP0f9_SOMFSwtcGF76xO1PLnalhR9HXVG0Ky52wG0EmXT7__Wk_LZywqh1cAWDcoKy2EcG0dsEm2mOXKeXgyFJSMHQcmlIWypNa700qd7ajgynTDU7etWL4rBVHp7LrS47poeTxmuPTJLQIxNyUEqGSkPGkJ0ipNBDPe1HI3xkhY-ZRyaBsXqCD6GUhKeEOpacMuKkcJJkHplEB9nREfuFj1qpb-W_OPC_8_3DWwftWWjRPQnsX9koqCiBox9CrxE8C-NYHFDiG92NAjR6MqoVABK9Ij37ycsSt0jXAjjyYn8lNMqFAqa92LenvyzhORAc86JIA5wQoDkQkhUQZ4wnORRZmMRBxozGjbJWd4fMtFEwRlf8mvCMZPQKroPEj6IQhzG5Wl_jhMQxpGGEcU6TIPWDJMxyP2IhpFEcpVfiGvs49ANzK0xCMi6CMCecRHkGQZrn4IU-bKgox2bDjat6dWWPvK-TNCL4qqQ5lMq-IWQ07F7c6E43PYw9PPUwtme95ls0u6qv7flq3qyUF_qlUFodZGuhS_vC0U5CNPOiD4tvN140Q73w156ug2pXCEfxKBcaFeIZOOp-w1CCXOk1EhL9vTuS_hZcNXV5_f5Dfmv0_wYAAP__TAe-bA">