<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/134659>134659</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Hexagon] `Cannot select: t89: v4i1 = HexagonISD::PFALSE`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:Hexagon,
crash-on-valid
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
alexrp
</td>
</tr>
</table>
<pre>
```llvm
target datalayout = "e-m:e-p:32:32:32-a:0-n16:32-i64:64:64-i32:32:32-i16:16:16-i1:8:8-f32:32:32-f64:64:64-v32:32:32-v64:64:64-v512:512:512-v1024:1024:1024-v2048:2048:2048"
target triple = "hexagon-unknown-linux4.19.0-musl"
define fastcc i16 @"math.test.vector integer addition.S.doTheTest"(ptr %0, { <4 x i32>, <4 x i1> } %1, <4 x i1> %2) {
Entry:
%3 = alloca [16 x i8], i32 0, align 16
%4 = alloca [16 x i8], i32 0, align 16
store <4 x i32> <i32 1, i32 2, i32 3, i32 4>, ptr %4, align 16
store <4 x i32> <i32 5, i32 6, i32 7, i32 8>, ptr %3, align 16
%5 = load <4 x i32>, ptr %4, align 16
%6 = load <4 x i32>, ptr %3, align 16
%7 = call { <4 x i32>, <4 x i1> } @llvm.sadd.with.overflow.v4i32(<4 x i32> %5, <4 x i32> %6)
%8 = call i1 @llvm.vector.reduce.or.v4i1(<4 x i1> %2)
br i1 %8, label %OverflowFail, label %OverflowOk
OverflowFail: ; preds = %Entry
store volatile i32 0, ptr null, align 4
unreachable
OverflowOk: ; preds = %Entry
%9 = extractvalue { <4 x i32>, <4 x i1> } %7, 0
store <4 x i32> %9, ptr %0, align 16
ret i16 0
}
; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { <4 x i32>, <4 x i1> } @llvm.sadd.with.overflow.v4i32(<4 x i32>, <4 x i32>) #0
; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i1 @llvm.vector.reduce.or.v4i1(<4 x i1>) #0
attributes #0 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
```
```console
❯ llc --version | head -n2
LLVM (http://llvm.org/):
LLVM version 20.1.2
❯ llc reduced.ll
LLVM ERROR: Cannot select: t89: v4i1 = HexagonISD::PFALSE
In function: math.test.vector integer addition.S.doTheTest
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: llc reduced.ll
1. Running pass 'Function Pass Manager' on module 'reduced.ll'.
2. Running pass 'Hexagon DAG->DAG Pattern Instruction Selection' on function '@"math.test.vector integer addition.S.doTheTest"'
#0 0x000075e1ae580e02 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/alexrp/Source/llvm-project/llvm/lib/Support/Unix/Signals.inc:803:3
#1 0x000075e1ae57e7af llvm::sys::RunSignalHandlers() /home/alexrp/Source/llvm-project/llvm/lib/Support/Signals.cpp:105:20
#2 0x000075e1ae57eb3d SignalHandler(int) /home/alexrp/Source/llvm-project/llvm/lib/Support/Unix/Signals.inc:415:1
#3 0x000075e1ace45330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
#4 0x000075e1ace9eb2c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x000075e1ace9eb2c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x000075e1ace9eb2c pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x000075e1ace4527e raise ./signal/../sysdeps/posix/raise.c:27:6
#8 0x000075e1ace288ff abort ./stdlib/abort.c:81:7
#9 0x000075e1ae293cf9 (/opt/llvm-20/bin/../lib/libLLVM.so.20.1+0xc93cf9)
#10 0x000075e1af1aef9c llvm::SDNode::getOperand(unsigned int) const /home/alexrp/Source/llvm-project/llvm/include/llvm/CodeGen/SelectionDAGNodes.h:993:5
#11 0x000075e1af1aef9c llvm::SDNode::getConstantOperandVal(unsigned int) const /home/alexrp/Source/llvm-project/llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1724:61
#12 0x000075e1af1aef9c llvm::SelectionDAGISel::CannotYetSelect(llvm::SDNode*) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:4424:44
#13 0x000075e1af1b77d3 llvm::SelectionDAG::getEntryNode() const /home/alexrp/Source/llvm-project/llvm/include/llvm/CodeGen/SelectionDAG.h:581:41
#14 0x000075e1af1b77d3 llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:4014:42
#15 0x000075e1af1ab031 llvm::SmallVectorTemplateCommon<llvm::SDNode*, void>::isSmall() const /home/alexrp/Source/llvm-project/llvm/include/llvm/ADT/SmallVector.h:143:39
#16 0x000075e1af1ab031 llvm::SmallVectorImpl<llvm::SDNode*>::~SmallVectorImpl() /home/alexrp/Source/llvm-project/llvm/include/llvm/ADT/SmallVector.h:603:23
#17 0x000075e1af1ab031 llvm::SmallVector<llvm::SDNode*, 4u>::~SmallVector() /home/alexrp/Source/llvm-project/llvm/include/llvm/ADT/SmallVector.h:1203:3
#18 0x000075e1af1ab031 llvm::SelectionDAGISel::DoInstructionSelection() /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1354:5
#19 0x000075e1af1bbfc7 llvm::TimeRegion::~TimeRegion() /home/alexrp/Source/llvm-project/llvm/include/llvm/Support/Timer.h:160:9
#20 0x000075e1af1bbfc7 llvm::NamedRegionTimer::~NamedRegionTimer() /home/alexrp/Source/llvm-project/llvm/include/llvm/Support/Timer.h:168:8
#21 0x000075e1af1bbfc7 llvm::SelectionDAGISel::CodeGenAndEmitDAG() /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1123:3
#22 0x000075e1af1c0555 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1904:33
#23 0x000075e1af1c1c19 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:616:22
#24 0x000075e1b1fcab34 llvm::HexagonDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/alexrp/Source/llvm-project/llvm/lib/Target/Hexagon/HexagonISelDAGToDAG.h:47:17
#25 0x000075e1af1b2547 llvm::OptLevelChanger::~OptLevelChanger() /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:269:11
#26 0x000075e1af1b2547 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:376:1
#27 0x000075e1af1b2547 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:347:6
#28 0x000075e1aeafa58f llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:94:33
#29 0x000075e1ae7453a4 llvm::FPPassManager::runOnFunction(llvm::Function&) /home/alexrp/Source/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1416:7
#30 0x000075e1ae7455c1 llvm::ilist_detail::node_base_prevnext<llvm::ilist_node_base<true, void>, true>::getNext() const /home/alexrp/Source/llvm-project/llvm/include/llvm/ADT/ilist_node_base.h:42:38
#31 0x000075e1ae7455c1 llvm::ilist_node_impl<llvm::ilist_detail::node_options<llvm::Function, true, false, void, false, void>>::getNext() /home/alexrp/Source/llvm-project/llvm/include/llvm/ADT/ilist_node.h:117:66
#32 0x000075e1ae7455c1 llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Function, true, false, void, false, void>, false, false>::operator++() /home/alexrp/Source/llvm-project/llvm/include/llvm/ADT/ilist_iterator.h:187:25
#33 0x000075e1ae7455c1 llvm::FPPassManager::runOnModule(llvm::Module&) /home/alexrp/Source/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1451:22
#34 0x000075e1ae745e0d runOnModule /home/alexrp/Source/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1528:7
#35 0x000075e1ae745e0d llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/alexrp/Source/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:539:55
#36 0x00005bb459a949df compileModule(char**, llvm::LLVMContext&) /home/alexrp/Source/llvm-project/llvm/tools/llc/llc.cpp:753:34
#37 0x00005bb459a89057 main /home/alexrp/Source/llvm-project/llvm/tools/llc/llc.cpp:411:35
#38 0x000075e1ace2a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#39 0x000075e1ace2a28b call_init ./csu/../csu/libc-start.c:128:20
#40 0x000075e1ace2a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#41 0x00005bb459a89de5 _start (/opt/llvm-20/bin/llc+0x12de5)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWl1v46qb_zT0BsWyMX676IWbNHNG6pxWbXekvYqwTRK2GCyMM-3NfvYVGCd2mnbanmmP9n80J40xPPx-zxsPENK2bCMoPQfRBYgWZ6TTW6nOCaePqjkrZPV0DmK__8f5rgZ-ronaUA0rogknT7LTEIQLCBCisxqEOZ01IMxDdPiYERDm_kwEcf_IYgzC3H3M2KQrs53cx4wFIMxT8_9sPem2nojYTd7tpu-iwLTvP2e7wEfm3ejPbId8bKYZ_0HowFUr1nA68NzSR7KRYtaJByF_iRlnonvEXpB5_qzuWt4PBX5e0TUTFK5Jq8sSsiCGAPsAoZroradpq70dLbVUkAlNN1RBUlVMMym8O6-S91t6T1ttpKG00QoCFPkAzSFILiAI5xg-Qqu8S9voGgIQXkKQGKBR8PwFihBAmREB_PxSaPUEQgMVmlehZUg4lyWBILoIYjMwBdHCCGIhgnZ-wtlGwCAehuEPDGu1VHTKwjyZzsEwCg1fwuELdmSdNvB7xEaDkHj4kgxf0qnY8BTJyJLkklTPdf8iHICi-PfjTs6X2HEl4fyt9sY2QL2WVJX3i-mtJ3dUrbn85e2wGYfSI72gKBpL2rfGAGUDjPQAgwX7OXq39RStupJ6UpkZgtEEY1-zkgplh6MoNTNyUlBunq4dwiVh_OSL64c-kiYdwxy-5T8QXsBG0ap1cRv17n5wk53kRDNODy5qDCI6zg8GwbZ_JxQl5ZYUnE7xXD-8Fc2reACKMttKH7Uipd4R3tG3x7l1ZP_lAEBRNnK358GoqLbZyYgAyaKnaOAuO1GafARzrVVrqAppfKEg5QMUcq0ohUK2T6KEQnbiFxMVbBtadpxooyz4i3GuqO6UgDWtpXoCKBVS0N4vKlpyot5M9J0O_sy3beJDof_l_N4ZOVOcRGvFik7T1jb2zpNc_EGk0Nl8WOedfobHUopW9o5_iUC2APkScl7C2WxHVWu0B5I53FJSwZkwK9_V1c8fEKB0q7UpBQBaArS07KXa2KdsWHRs10EM8r3AQ8_m6XVVeZwPsi9vb69vjbXmRAipYUs5LbVp0KkRDY1SraL-6pfq73cLM2OY3yzzq7tL4OffBVw745sB71uR_fzm6jK_u4RtV9RMQwKLbgMVbaTSUEtoiLd75humt13hlbJ2anB_Zo2S_2NwoyVr2462AC0hERVkouRdRaHeUlgq0m6hsbJJDNQDfn6njc2rrm56Lfpen19ulNwoUkOiNl1Nhbb-_EyBget92wnBxAY2pDWOlexD4cY0_CCCbKgCKIFSwFpWnSl_UDIShRIDBr0gzikeLvJvMxBeLvJv8IZoTZWA30WrVddPdmctZ4zQzzTYxIj4aK2UGM-yoeI_-r7vJxENCI1Sn_oIWv1bV2ifWucTigltlXpvVAxQeuikyK-VbLWipAaoLxyE7uNzuZU1BWjZl8oALe9kp8zwY-MOJmeF6dQ1xksAWv6XYI-mgW0E4a3HRGnqXD80RaxjEEwZJDQh61MMbjvRi_mLiIpT1ZqE8kdADujKprG1cmSrYwcPHcMrwgpOgACUfq6-cGAQBQ5QOAZUUhyFJl8aXThpj2m8inFfsM82outflF4rvRigC__RDnFFC0AhngrMaIFKuFo1eqsoqVYPjPMVqxtOTbwR67geQEvRaA7QctzNs2jNhiOJnfDoLcKFCRnCXxWbpNY2Tmx8Sux4zKuybP7cy0qOFYoSChVhLbVCWmsLgJaefXpqK9qYLNbI1trK9rRiUWJ2Y05qOpWK0nS9hqQwydPK0VVvLdvUozL7wCGus4nboSws15mzsmwGB5ohH6BlwcSArhfJWWFWEGNws9pYm5dWQm90E3STvLEOCF1n5Sjq7hZ_y4r23zdUXzdUEVEBlHbCbqWrIUWYdVN_wPFd-j80zGVFv1HDZJ8uF_k3g6L1tiDMs8wkjcjBD94Ff25AEjHQ-GnM-e8xCRK7J48DxwX9hstIyPc7yvvWvij4b6r715N87tij_J_kpNMsjh4NHpc2MbasMHaswimrIkmq8AVWezvZvUKPPf0Ck1hrRDbs8GAM_HbYB2P0rWaSuaxrs86ftsYc7p2u3BLV8zt-8w_XknfbzQ-s3ZBTQHTkjYUfBmMF1ITzn7ZIuad1w4keOIfzFzjvJKtMwW_fsNZK-NMGzhf3ZtQBXB9p2BYaQ86L30zte93wFwgNRP73uPtHq5E3colt0YRCxyV5M5eXDYO7k2w-m0mA9vWfYZL-hsnJiFvIUYE9qq__UUX43tAJwgiP1qTsKHUU6zIZEblnNb2lm34vZlQ-avhjGj9Ukka603fsm_WzR4n811H-TWpa9aisBIf1WfMnI7bH4Q5x8DriF9bH3pa5qC5rpq0Zv9Y3AjRycnS0xpd-FEVvXFZyzi9Iy8oLLsuHdrK07LezbiGJv5Rh5hvvDweKRwt-GZRB9luKqhPX4gcpt0zQgc2E4rN3X8oxtnc0yK2NaFwcFMG6JEWIRxTdccAi_3Yv_02W9_Y-B6ClA3T4ZiAN8Gyk4cQWpI7f0dpfoAiPI-260Vd0R_l8S8RmnxqOW782zlBs93KufEPx6wyOhVzRDSmf_l-4YpjE7hDA8Ez-c3niYRdteE6KA0rWJErHh0NHUG9I245InmT3jFbqNURpz_8zJE8gcsSySbac7u8THIVknEqWN2bkcED5XkofI_H9FqBl7ymjyYdsj20qdJni6NgxwVFUjos2xlmrVxXV_U0WCHMhK7oqSEtXjaI7QR_1pC7tB-w7gXCuVUfHuwc0h7ZpqFg3VP9tpHzKRuIITp8q7c27K0qOTi1fUIAVwI73Ei8oRzbGhu2k68Gyjj2awzXh7UEzzxqMfk6q6BOU0xdrgQ1YF7FH56UvKIZpqsjx3uTT9TJu678MmpKNw4Mu7L_PUNjAuVdaapSG3NZheqb7XGkvZYMf9spimrxd02dmgigYFUXT42ODnfoVHMH7JBQRSkf5KDoF4qAVPlr_RrL6bb5T5xerMQpN4RINHjAULlFR4CgjGc6qNSxl3TBO92Yut0TZvbvdvh_QXl39_DGXQttg_yBkLSVv7WPZfzqcSWT3Me5Yb39Y7nCmmR8lsCZM_MEpcWAcLBxUc3ySToKSwNWKs6JctZoovSoJ5ysLwgNoWbbd89N6dxVwapANyAQfdmvTw3czI0oL-_OQFRNMH0_SfzWSZ1ayPcwPUDrcIgEUYv-UxAmHU_BPSu4LJKccHBzbo6IR7EW-el1gdX7hPwaoopG7Fhjuws-q87DKwoyc0fMgwdgPY5zhs-15hmMc4QwjlK5JQuN1QNMsNfQCipKqPGPnyEeRj_0kwCGOsBeHdE2TqqwynJB16APs05ow7g035Wf2Vvg8CHEcZWf2pzGt_ZkeQgUpH6ioDhsre_E5BwjZ--KZFLMd4SbXIxAtztS55Vh0mxZg36Tc9jCLZprbn_8NoqIFBLH_0av12D_rFD__-BW447s7R_8XAAD__yD3StY">