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

    <tr>
        <th>Summary</th>
        <td>
            Assertion `llvm::isUIntN(BitWidth, val) && "Value is not an N-bit unsigned value"` when using `@llvm.usub.with.overflow` on Hexagon
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:Hexagon,
            regression,
            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 void @os.linux.tls.initStatic() {
  %1 = call { i32, i1 } @llvm.usub.with.overflow.i32(i32 0, i32 1)
  br label %2

2:                                                ; preds = %0
  %3 = extractvalue { i32, i1 } %1, 0
  ret void
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i32, i1 } @llvm.usub.with.overflow.i32(i32, i32) #0

attributes #0 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
```

```
❯ llc reduced.ll -march hexagon -O0
llc: /home/alexrp/Source/llvm-project/llvm/include/llvm/ADT/APInt.h:127: llvm::APInt::APInt(unsigned int, uint64_t, bool, bool): Assertion `llvm::isUIntN(BitWidth, val) && "Value is not an N-bit unsigned value"' failed.
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 -march hexagon -O0
1.      Running pass 'Function Pass Manager' on module 'reduced.ll'.
2.      Running pass 'Hexagon DAG->DAG Pattern Instruction Selection' on function '@os.linux.tls.initStatic'
 #0 0x0000771d51b80ed2 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/alexrp/Source/llvm-project/llvm/lib/Support/Unix/Signals.inc:802:3
 #1 0x0000771d51b7e87f llvm::sys::RunSignalHandlers() /home/alexrp/Source/llvm-project/llvm/lib/Support/Signals.cpp:105:20
 #2 0x0000771d51b7ec0d SignalHandler(int) /home/alexrp/Source/llvm-project/llvm/lib/Support/Unix/Signals.inc:415:1
 #3 0x0000771d50445330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
 #4 0x0000771d5049eb2c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x0000771d5049eb2c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x0000771d5049eb2c pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x0000771d5044527e raise ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x0000771d504288ff abort ./stdlib/abort.c:81:7
 #9 0x0000771d5042881b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x0000771d5043b517 (/lib/x86_64-linux-gnu/libc.so.6+0x3b517)
#11 0x0000771d51a220b9 llvm::maxIntN(long) /home/alexrp/Source/llvm-project/llvm/include/llvm/Support/MathExtras.h:252:35
#12 0x0000771d51a220b9 llvm::isIntN(unsigned int, long) /home/alexrp/Source/llvm-project/llvm/include/llvm/Support/MathExtras.h:262:53
#13 0x0000771d51a220b9 llvm::APInt::APInt(unsigned int, unsigned long, bool, bool) /home/alexrp/Source/llvm-project/llvm/include/llvm/ADT/APInt.h:120:11
#14 0x0000771d5277f3f6 llvm::SelectionDAG::getConstant(llvm::APInt const&, llvm::SDLoc const&, llvm::EVT, bool, bool) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1674:39
#15 0x0000771d5277f3f6 llvm::SelectionDAG::getConstant(unsigned long, llvm::SDLoc const&, llvm::EVT, bool, bool) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1668:21
#16 0x0000771d555f5de6 llvm::HexagonTargetLowering::LowerUAddSubO(llvm::SDValue, llvm::SelectionDAG&) const /home/alexrp/Source/llvm-project/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp:3275:32
#17 0x0000771d525da658 (anonymous namespace)::SelectionDAGLegalize::LegalizeOp(llvm::SDNode*) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1316:43
#18 0x0000771d525dbb18 llvm::SelectionDAG::Legalize() /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:5842:28
#19 0x0000771d527bbb69 llvm::TimeRegion::~TimeRegion() /home/alexrp/Source/llvm-project/llvm/include/llvm/Support/Timer.h:160:9
#20 0x0000771d527bbb69 llvm::NamedRegionTimer::~NamedRegionTimer() /home/alexrp/Source/llvm-project/llvm/include/llvm/Support/Timer.h:168:8
#21 0x0000771d527bbb69 llvm::SelectionDAGISel::CodeGenAndEmitDAG() /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1079:3
#22 0x0000771d527c0235 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1904:33
#23 0x0000771d527c18f9 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:616:22
#24 0x0000771d555cd384 llvm::HexagonDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/alexrp/Source/llvm-project/llvm/lib/Target/Hexagon/HexagonISelDAGToDAG.h:47:17
#25 0x0000771d527b2227 llvm::OptLevelChanger::~OptLevelChanger() /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:269:11
#26 0x0000771d527b2227 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:376:1
#27 0x0000771d527b2227 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:347:6
#28 0x0000771d520fa4bf llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) /home/alexrp/Source/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:94:33
#29 0x0000771d51d45424 llvm::FPPassManager::runOnFunction(llvm::Function&) /home/alexrp/Source/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1416:7
#30 0x0000771d51d45641 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 0x0000771d51d45641 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 0x0000771d51d45641 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 0x0000771d51d45641 llvm::FPPassManager::runOnModule(llvm::Module&) /home/alexrp/Source/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1451:22
#34 0x0000771d51d45e8d runOnModule /home/alexrp/Source/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1528:7
#35 0x0000771d51d45e8d llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/alexrp/Source/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:539:55
#36 0x000058a5a81e89df compileModule(char**, llvm::LLVMContext&) /home/alexrp/Source/llvm-project/llvm/tools/llc/llc.cpp:753:34
#37 0x000058a5a81dd057 main /home/alexrp/Source/llvm-project/llvm/tools/llc/llc.cpp:411:35
#38 0x0000771d5042a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#39 0x0000771d5042a28b call_init ./csu/../csu/libc-start.c:128:20
#40 0x0000771d5042a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#41 0x000058a5a81ddde5 _start (/opt/llvm-20/bin/llc+0x12de5)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWl9z26r2_TTkhbEHof8PeVDiuKczaZtpevp79CAJ2_yKQAPISe7D_ex3QCiWbMfnNG1y59xOaksINmst2JsNMtGabQSllyC-AvHignRmK9Ul4fRRtRelrJ8uQYL6P853DUCFIWpDDayJIZw8yc5AEC4gwJjOGhAWdNaCsAjx_mNGQFigmQiS_pYlEQgL_zFjk6rMVfIfMxaAsMjs_9l6Um09MbGbPNtNn8WBLX_-nO0ChO2z0ddsh1Fkuxl_YbznahRrOR14bukj2Ugx68QPIR_EjDPRPUbzIJ-jWdNp3jcFqKjpmgkK10SbqoI7yWoIIiT13LWYG67nTDBzb4hhFcAZwDkE6RVABYQAx4HrsCKc21JohcLXkAUQpAtryI7HvNNdOX9gZjuXO6rWXD7MXcWMhRgi1yDEMAA4d2ZLBTkpKbf2PUorDPzJfyC8gq2itfaaxGgAHboS-mgUqcyO8I6eAo_jwN72rRQ1ThwLJ130oGwHy05UhkkBC2OUtiiFtGqUpPoBhVwrSqGQ-klUUMhOPDBRQ93SquPEkJJT-MA4V9R0SsCGNlI9AZwJKWgvRk0rTtRJeH9DW6-sGzIcoh41MUaxsjNUu8JenPTqN-KGXqHBJ71a49sbDPIFKJaQ8woqWncVreecw1lDVLWFfvbC2Rdbm_PKCgvwcisbCvCy93yAl_eyU5UtsVLMWiX_n1bG3wK8ZKLiXU33BcXim_28-yjMfGsdC6fWsnsaFiAs3KPxJc464aJPDZm9vYYdEyaJVu66lJLvv3Nrq9CaKjcjhmjkrDH950dhPgOcXTHzf6w2W9tuR3g_OAnAiXXb724yMg2FNJAI-HlWMgOfIbi5al0Xp3BNGKf1HKDi7vamuL-BuisbZiCBZbeBirZSGWgk3BrT2okJ8BLg5YaZbVfOK9nsVTkQj2ndUQ3wEhJhWTsNodlSWCmit9BOEes51PZ9b-yEqbvGBlSACjTvne9OyY0iDSRq0zVUGN3r_NeDHXgDXzshmNjAlmg7UdNnR7uzBZ-IIBuqrA5SwEbWnQ19ON1bBzi1-PAL5v7wnS6KDzMQ3iyKD_COGEOVgB-FNqrrO7unnLor39N6QAFwei5MpjZoOPdCjwghlKZBHQdlhmiNR9NNP-n-4k4xYZyW36yyAGf7Soo8rKQ2ipLGTZTrfibmr3AIzkpbqWvt5AB4-adgj7aAbQRxDKyjZcgtUp5BMGWQ0ixdn2LwtRO9mT-IqDlVelgrfhnkgK5qW7cWxm718_DwIbwK1XACxIbCN9UrCiyiwAMKx4BQFMWhjbFWC2_tMUtWSdQvyLON6PoH1VzLeQLwFXp0TfxaCHAYTQ3mtMQVXK1as1WU1KsfjPMVa1pOrZsRNznnAC9FazjAy3G1uUNrE4o08cbjv2NcWLcg_KzZNHNj480mp8yO25y1leVjW-mhoDilUBGmqTOi3VgAvJy7uydd09YGr1ZqN1aupjPrYv1APJtaxVm2XkNS2pjp7Ji6Hy1X1KOyed7g1_lR86CEK8FXXJJ6VcuGsH4YmHAcbXGjNxXpbQVBasHYIbYuhqbWwjIO0p-bM65JP2eswanTEoxRmY-ctiGPfjHiUmxe5xpHa-veSz4Rs72xyZV2i6xN4sIijD02fB4b0x7a4br7LlATl4GHHmp4HurfSRaG-x79UcbwNkkNclPMk5jED5ym63CdjEg8r3CL4kNfsqHmWgptiGN0QBdW9pFfh0ZWFreyeuHZzfdvv4d57wvXsqYfqLDVx9Cnt8NikaQ23IWDX8S_psXRaP4DBEjcZnGYDJPAHMfruKZjAXxW9M3tKG_lA1VMbPpH7u7Poq7vu_LLZF7cL773aen1S1JaQfJenFez7jEBvPQY91cf7ykfsHraIU7jfrfd056sITiuSRJnNsASIcVTIzsNBWmobl3qlR8zuKUbwtm_qJfC331pD3T4LK1fFm8yuEOno7EN3RFENESr7IBkWQbZ2cn9zOrXMrWfgBxnkQ2wOPOQ86k_lmWZjAPsN9bQr3Rj0293_-9RwWsxn1kMrHXVh9AE7ZdnjM6j_EwaWveonAWP9aj4jRG7IyiPODiPeDxO1nv6Uj-OhahvGmbcEL7NvDjs_jmzT3O_8bAc8JRDhWy2-lcc-tKC8yuiWXXFZfVDT5z0eRu5D9XvyDBHbjkaKIYHFINs_dfDpDrxRXwi1ZYJOrCZUDx69q4cExeUsI-8OJouOFUdZtHxgrMoPnyT_02W51eXAZ7ztMhm7kHq-R1kFCXGOB3x-9KaW7qj_HpLxOY5NByWvq-f4SQf5Yc4Oc_g0IgN6tXTP2IqhmniN-aWZ_q_yzMadraW5zQNQGsSleMDmwOod0TrEcmT7I5oZfOWKDNHv4fkCUSeWD6JlpNkIaijOMLjULK8sy2Hg8GfpfQ6Eh-_-jSnehp1PkT7yIVCHykOjgLrKE6iYLzv5UybVU0NYT4EClnTVUk0XbWK7gR9NCC8PmzwXAmE10b1Wbh7TxHe2EtXFN48b2Y-Wyt9uHltOv7C_vMATh8q3cbfJyUHJ4kvCOAMsKblJ7geiSNbO4Z6UnU_sp49voZrwvVemaMCq89Jid5AnD5ZC5zDeo89OMN8QRhmqCJGqvfVZVzWXwxKydbjwVfu7y0EGzj3omWpO0zyooXnRXspGnxyrwqmwdsXvWUkiINRUjQ90rXYaVbDEbw3QhHjbBSP4lMg9qrw0fo3svXRuaaX851ljEObuMTDDBgSlzgjMckCmuX1GlayaRmnz8NcbYlyW_Jiej5xe_v907UUxjn7KyEbKbl2t1X_6XGmcehWZY8zneKsaxSn0B0Q_74uoyAYnbEenW6ToCJwteKsrFbaEGVWFeF89XxKXenu-ATdH8-fauQcsj9a8z0eHogTnJXuZwErJpg57KS_tJZnznJ_KI6z4c0OwGGETlmccDgF_6TlPkHy4kTB4XjUNIa9SX_oLttB8hlGAC9LJgbNr9BjgGsa-7P24Z32RX0Z1nmYkwt6GaRhHudBkqOL7WVSZhEKk4TGtA4QDqp8XdJyHZFsHcQ1CS7YJUY4RjiIURhHMZqXYYbWcbJOUFaVaxSBCNGGMD53r_ul2ly4F7SXAU5xnly4X0po99MYjEtS_aCi3m-s3Lvia4CxohtFtWajIvc2dybFbEe4Df8YxIsLdelol91GgwjZKKz3HRtmOL18nzfcCYIPWypgp5nY2J5e_sGDrSsF9JQvOsUvX__S28u6u8T_CQAA__8AgiEU">