<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/153797>153797</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[AArch64][SVE] Assertion fail "Request for a fixed element count on a scalable object"
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
stevesuzuki-arm
</td>
</tr>
</table>
<pre>
https://godbolt.org/z/oK9e7K5sv
Assertion fail "Request for a fixed element count on a scalable object"
```
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32"
target triple = "aarch64--linux-gnueabihf"
define i32 @gradient_fast_par_for_gradient_fast_s0_x_v18_v22(ptr %gradient_fast, i64 %0, ptr %1) {
entry:
br label %"2_for_gradient_fast.s0.x.v20.v23"
"2_for_gradient_fast.s0.x.v20.v23": ; preds = %"2_for_gradient_fast.s0.x.v20.v23", %entry
%indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %"2_for_gradient_fast.s0.x.v20.v23" ]
%2 = shl i64 %indvars.iv, 1
%3 = add i64 %2, %0
%4 = trunc i64 %indvars.iv to i32
%5 = insertelement <vscale x 4 x i32> zeroinitializer, i32 %4, i64 0
%6 = getelementptr i32, ptr %gradient_fast, i64 %3
store <vscale x 4 x i32> %5, ptr %6, align 4
%.reass3 = or i32 %4, 1
%7 = insertelement <vscale x 4 x i32> zeroinitializer, i32 %.reass3, i64 0
%8 = shufflevector <vscale x 4 x i32> %7, <vscale x 4 x i32> zeroinitializer, <vscale x 4 x i32> zeroinitializer
%9 = getelementptr i32, ptr %1, i64 %3
store <vscale x 4 x i32> %8, ptr %9, align 4
%indvars.iv.next = add i64 %indvars.iv, 1
%.not = icmp eq i64 %indvars.iv, 16
br i1 %.not, label %"2_end_for_gradient_fast.s0.x.v20.v23", label %"2_for_gradient_fast.s0.x.v20.v23"
"2_end_for_gradient_fast.s0.x.v20.v23": ; preds = %"2_for_gradient_fast.s0.x.v20.v23"
ret i32 0
}
```
`opt -mtriple=aarch64-none-elf -mattr=+sve2 -O2`
```
opt: /root/llvm-project/llvm/include/llvm/Support/TypeSize.h:204: constexpr llvm::details::FixedOrScalableQuantity<LeafTy, ValueTy>::ScalarTy llvm::details::FixedOrScalableQuantity<LeafTy, ValueTy>::getFixedValue() const [with LeafTy = llvm::TypeSize; ValueTy = long unsigned int; llvm::details::FixedOrScalableQuantity<LeafTy, ValueTy>::ScalarTy = long unsigned int]: Assertion `(!isScalable() || isZero()) && "Request for a fixed element count on a scalable object"' 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/compiler-explorer/clang-assertions-trunk/bin/opt -o /app/output.s -S -mattr=+sve2 -O2 <source>
1. Running pass "function<eager-inv>(float2int,lower-constant-intrinsics,loop(loop-rotate<header-duplication;no-prepare-for-lto>,loop-deletion),loop-distribute,inject-tli-mappings,loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,infer-alignment,loop-load-elim,instcombine<max-iterations=1;no-verify-fixpoint>,simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,slp-vectorizer,vector-combine,instcombine<max-iterations=1;no-verify-fixpoint>,loop-unroll<O2>,transform-warning,sroa<preserve-cfg>,infer-alignment,instcombine<max-iterations=1;no-verify-fixpoint>,loop-mssa(licm<allowspeculation>),alignment-from-assumptions,loop-sink,instsimplify,div-rem-pairs,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;speculate-unpredictables>)" on module "<source>"
2. Running pass "loop-load-elim" on function "gradient_fast_par_for_gradient_fast_s0_x_v18_v22"
#0 0x00000000056cc228 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x56cc228)
#1 0x00000000056c90d4 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#2 0x00007eb5ed442520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#3 0x00007eb5ed4969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#4 0x00007eb5ed442476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#5 0x00007eb5ed4287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#6 0x00007eb5ed42871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#7 0x00007eb5ed439e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#8 0x0000000004c2e205 (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4c2e205)
#9 0x0000000004c2e323 isNoWrap(llvm::PredicatedScalarEvolution&, llvm::SCEVAddRecExpr const*, llvm::Value*, llvm::Type*, llvm::Loop const*, bool, std::optional<long>) LoopAccessAnalysis.cpp:0:0
#10 0x0000000004c38463 (anonymous namespace)::AccessAnalysis::createCheckForAccess(llvm::RuntimePointerChecking&, llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*>>>, llvm::Type*, llvm::DenseMap<llvm::Value*, llvm::SCEV const*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::SCEV const*>> const&, llvm::DenseMap<llvm::Value*, unsigned int, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, unsigned int>>&, llvm::Loop*, unsigned int&, unsigned int, bool) LoopAccessAnalysis.cpp:0:0
#11 0x0000000004c3b1fa (anonymous namespace)::AccessAnalysis::canCheckPtrAtRT(llvm::RuntimePointerChecking&, llvm::Loop*, llvm::DenseMap<llvm::Value*, llvm::SCEV const*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::SCEV const*>> const&, llvm::Value*&, bool) (.part.0) LoopAccessAnalysis.cpp:0:0
#12 0x0000000004c40bc0 llvm::LoopAccessInfo::analyzeLoop(llvm::AAResults*, llvm::LoopInfo const*, llvm::TargetLibraryInfo const*, llvm::DominatorTree*) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4c40bc0)
#13 0x0000000004c41562 llvm::LoopAccessInfo::LoopAccessInfo(llvm::Loop*, llvm::ScalarEvolution*, llvm::TargetTransformInfo const*, llvm::TargetLibraryInfo const*, llvm::AAResults*, llvm::DominatorTree*, llvm::LoopInfo*, llvm::AssumptionCache*, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4c41562)
#14 0x0000000004c425c5 llvm::LoopAccessInfoManager::getInfo(llvm::Loop&, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4c425c5)
#15 0x00000000044992df llvm::LoopLoadEliminationPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x44992df)
#16 0x0000000002df211e llvm::detail::PassModel<llvm::Function, llvm::LoopLoadEliminationPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x2df211e)
#17 0x00000000054bb0d1 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x54bb0d1)
#18 0x0000000000ec9bee llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xec9bee)
#19 0x00000000054bb594 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x54bb594)
#20 0x000000000096b66e llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x96b66e)
#21 0x00000000054b9201 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x54b9201)
#22 0x000000000097590a 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, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x97590a)
#23 0x00000000009699d7 optMain (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x9699d7)
#24 0x00007eb5ed429d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#25 0x00007eb5ed429e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#26 0x0000000000960a75 _start (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x960a75)
Program terminated with signal: SIGSEGV
Compiler returned: 139
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWltv2zj2_zTMCyFDoi62HvKgOPH8i2n_zTZBF9gXg5KObG4oUkNSTtxPvyAlRbZit0mbwQ5mizQxqcNz-Z0bKZNqzTYC4BLFVyi-vqCt2Up1qQ3sQLff2gfmUVVf5LLcX26NaTQKM0RWiKw2sswlNzOpNoisviGykr-nMP891jvkZ5nWoAyTAleUcYwI-QJ_tKANrqTCFFfsCUoMHGoQBheyFQZLgSnWBeU054Bl_m8oDCIE-RlK_P7HzwxVGzC4pIZyupetwSi8tgLAq1GYgdeQuY_CLCTulx0Gx0P7KYncL48tUJgtukcsSFCYuV929EwSEEsQkIUnwm6td2dHKzt0-vU6GcUaDoM-lKpim0Sex5lon7yNaIHmbFv1JvlZCRUTgFlIMIr8jaIlA2HWFdVm3VC1rqRaH89qf_203gWL9Y4QRBaNURiR-IgGkSVmSWTnffu5pwkQSTGaXyE_A2HU3rrRzzDOFeY0B-uhGBFCXgqdaX_2NNsRf7Yj4bPur6QNM4zCK9woKHWPy2vFkKUl7pT1M_uZiXJHlZ6xnWPVbFlnaXyF_UNyjOJrN46vjpfNBDyZnvJ1WjhWFidEYuKk6i0f8B0ZW57BQBc6OlqWA91giz9QRI7CqFYUL3lhI21IDLSxo2XCptOQLihc7myeAH7CEX5y5OEN_gZKMsEMo5x9A-UiwcYWiaMhKp5VSBzbDQw8bZhYNmPEnIuq0LHQRio4p4hV-4BTYj9TzjYCR70rZwqo1h1SUh2p-Yzj_D0s7wW9sH_RO7OtKg47KIxU37Fm7jz4atmvpOygSH_oieDN6C8OVqcT9E-kxDRgzwT2TMiOlBV1g-GPM-TJUFhYMKyy88dlBkT5uhrw89XpdSJ-oUJZMxUYF2o2sND8etKrUOLLxmCv7joDCq-HpiCkAA94hb2aGqNQeI3Ild4Bwd5n0i8-5iUb45QlKyUtoivOd7XXKNm1STdEZMVEwdsSxom7tmmkshT3-wbu2DeYbVGYEd-2N1xIoQ08NQo78jBDYVaCoYzrbrCyjfqzuuvb8j9aKgwzexQuPwKt7vfWR18pb-F-j8Kbbo0jVvf79-S5AeOWuXlEFrafOeVtmX9kZou7tc6Ho9zBZuvjnmVHIcUGt8JtfkrMhLEEfwYEp4XF1xb8cZNkXWxtCpgexPQ2ovkSzZeY6X-Bkt2cmyYJIsmv7avI3G3OoJwhP7v9eJPd3WDd5jUzmOK83WAFNnJsQ5ps_ZjZtvmskPUYZpNoZFq3oBFZYSqsyS4osdkCLhTVW5zT4sEoWoCVfWdo8YDLtm66bYk_Q356q-RG0RpTtWmtMbqPfpsHZFXIumEclAdPDZfK1t1VwanYeHQAVXu2wz4gssqZ6BZiT1oWtGnsuDVNa2Yae3cns9DWVy1bVYD1qp8FVqsvrRBMbHBDtbboV60orDAULoFuQHlM7Cw5WVRcUkOss8mSy0dQngtXKozHhFFMaFZo90w2iCzsH09JQw2gcLkFWoLyyrbhrKCdgCshvUZBQxV4lVQeN9JJchy8Ejg4Ohsf_RTTRrG8NYDIkgnrGc9w5tW0aZjYDMK9rv25JFkKabUDxYHunJgCSk8Kvu_kP5NOHnWKMFGB8lyvsR4b-HNJSw84qx2JNoWscyastJo-ecyAchZqFF4HgxjFqr1XsadGuty03DWrG86qfVFtULjMpWi1Z9l5ZqtAbyUvewaVVI9UlZ5-ZKbYWthLFF71I0XFBjwjPdvExmkjPS7lQ9t0CjwAWL2lDfqrrWTaeIWsaymcRN0RdfPWOu25jqw9W4icQK-iLTdMbKwIJh6my3UDRcupAS_nsnhwU7193fpcUVFsO0EjcStso2KFsamse1z4gQvt_qMbeAPMvwS6c2ArlOQchcvPpJs1igpdSVV7j1TZfLBqKElRuGwUaFA78JybTkfFr-pTa01tyrCiRuGSci4fB4hcptx0SfAs0quUrG1haOumE9Izsp7p9RnQR2RZsp2noPYaypQlta2goJz3IfzqOBTSe1MoWk-_jMajUHyOukk4vTYUrYhfisbvhmJqT0xS4FqWrT0H2-3VQQl1WyZyqopOy4TjMpRWS_D2wzHpttehj_0nf_gXJ0VByOKg0et93-RvFRPGNaJ725ZseD0TKfq4ltoooLXru0vXw10XXvxiR0Lkyn_q1bIAdkoHE6VTv4zwHdsIyv-PipJb5ouutWDNNkxUcm0Qyex4J1npPqb9Cj0rGttYffe_E0B6AXPIYyijiMTE763hLEdk9bRI1kk0vrroHhQzLWeJ09ktGTUOjxmmSVoVuLEZQcv1A-P8bdzd-pF7NFU3mid4o515b1U7micj4_iYMVnMqxDT3O563sTWLRzZJi_YBvmbGQb5yHB-zDBMIU3extAtGRkuDiMsKggQP36vcO7ZjcLSqbCQhJjp_5f_VLQ5yrRbV1KogbLbQN_sJG-7bY3Lu5HybnnzNSvLL1Dc2NOL21v1GTAS9YeFyaw9E7yY_Chlc8Qll5K7_DJlRyFd76C2D9oNfVfxsF2XFQVonQnK95pN082ms38MQLiIktCiTYUU-1q2Ggtag25c4Uk7ccdMu7lCATWw3ELxsJKqozjC70srDKvhVrpNnCN03XkCXv_8gzC3lClr0EnIgvYQiBfLP7IHsFjeK8psGznFxTXts5I_iEr-QPrPSu1-fuz3axAaPtHmrBrHIXcm0AYu3zXIVeapUt1J85jLd51yTh9n8DBM3mjk0eH0v2XZ8XG881_yMktPqpycsqKL3FfmaDDJ0Tyo6E_lKBUu726NysyX-59JzwMr_8cCdVyfHDoQkcWsocrM_Fe7kxy7M_Lzwp9A3PHokLBz1HL7Bh_7A_kzbZZ9Ad1yo082Dbv-DNj37muhjyxXVO2_Q3ctayaokepeAfR7t3frxc7yrhdbXMIJLkGckB_gMpk7hOZkpL5o3SdhuR_OkO8A4HkPvYT2lP9eMnw-Ky5psYWjLcF7-saiP_ommviGxEV81jefqKAbUM9vR8_4ZppH76S4VW1UPD5SPEpTUlYTxT9KWt5w5rzBpLiluq-XqhVHaq-GN2rT2jAk-7PhyxOL-p7xfqZ2xoymJoemkrIiQQBnqqS18ZMsgZ9W9UUknoLopxAYXkL_taHtwRuhnR-deqM898vgcP9n4fyegn9jrHo0RqyOzm8-FGkO7xGGfxrGf2PfdOCPrkmnYRyn0YGOn9zLsXs56GMhz0raGKlOW9steJOt_ZI_IwrjNHo2lRyda_00yZPkbVE42LZ8JUA_gcC5IPrrwNrhNqIaTAIoJf5r6uApLP8uEPUojBiR48ibx6lPD1RUrQubW9YAd9-BHFh1ZxQTmy9QnQq7F8Z2W9BPtNg6Pj_aoH6oG_6SSkr-2X3buGL8BJNfenzGnEwpurezh95xmPB2w8TLmjzSP7_xOvhy0x4J8fGrOqr1Vct4af3o3iyeqPSyMWtjN59u1FnxOxPl96i-gmIVAzXQDe-ffu7v-2Wpi7ExAsNJ7UvTco5lYz5RJt6vMliuo8zJe3CSlukbX9u7JSPD6fvvFCIfr9d2zVobqsy6Hs15tQiIDkQkE5x8Oo9xx_z9YLJMO5HDtQEDym2kocTudkj3ZQEKM3z34be7m9--Ij9b9iKxAtMqATbscRCmhzdvLsrLsEzDlF7AZTCPY5IEURRdbC-LMJiXIcnLsqDzMs5jIPkcqjKhcVRWFVywS-KT2F8EcUDCOQlni9wvEphHSVLCPPUXKPKhpozPbCbMpNpcuFsTl0EcztP5hbv5pN3FXEIEPGL3FBGC4usLdekuXOTtRqPI50wbPbIxzHB3ozfL3G0jFF-j-Oru6w2Kr_E73sy9aBWf3gp-w9WQ3s7dJflPAAAA__8yvuQU">