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

    <tr>
        <th>Summary</th>
        <td>
            [llc] Possible bug when legalizing llvm shuffle operation
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    I encountered into some weird error while compiling llvm ir with shuffle operation.
This happens regardless of the target architecture, and it seems like there's problem while lowering the shuffle operation.

Here is the command
```bash
llc error.ll -o error.s
```

LLVM IR I'm trying to compile
```llvmir
; error.ll
target triple = "aarch64-unknown-linux-gnu"

define i32 @error_reduced(ptr %0, <16 x i8> %1) {
  br label %3

3: ; preds = %11, %6, %2
  %4 = phi <8 x half> [ %10, %6 ], [ zeroinitializer, %11 ], [ zeroinitializer, %2 ]
  %5 = phi i1 [ false, %6 ], [ true, %11 ], [ false, %2 ]
  br i1 %5, label %6, label %11

6: ; preds = %3
  %7 = call <16 x i8> @llvm.aarch64.neon.tbl2.v16i8(<16 x i8> zeroinitializer, <16 x i8> zeroinitializer, <16 x i8> %1)
  %8 = call <16 x i8> @llvm.aarch64.neon.tbl2.v16i8(<16 x i8> zeroinitializer, <16 x i8> zeroinitializer, <16 x i8> zeroinitializer)
  %9 = shufflevector <16 x i8> %7, <16 x i8> %8, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
 %10 = bitcast <16 x i8> %9 to <8 x half>
  br label %3

11: ; preds = %3
  store <8 x half> %4, ptr %0, align 2
  br label %3
}

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(none)
declare <16 x i8> @llvm.aarch64.neon.tbl2.v16i8(<16 x i8>, <16 x i8>, <16 x i8>) #0

; uselistorder directives
uselistorder ptr @llvm.aarch64.neon.tbl2.v16i8, { 1, 0 }

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

Error log
```
llc: /home/jwkim98/llvm_test/llvm-project/llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1013: const llvm::SDValue& llvm::SDNode::getOperand(unsigned int) const: Assertion `Num < NumOperands && "Invalid child # of SDNode!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: ./llvm-build-debug/bin/llc error.ll
1.      Running pass 'Function Pass Manager' on module 'error.ll'.
2.      Running pass 'AArch64 Instruction Selection' on function '@error_reduced'
 #0 0x00005c6b7281a396 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/jwkim98/llvm_test/llvm-project/llvm/lib/Support/Unix/Signals.inc:804:22
 #1 0x00005c6b7281a7b7 PrintStackTraceSignalHandler(void*) /home/jwkim98/llvm_test/llvm-project/llvm/lib/Support/Unix/Signals.inc:880:1
 #2 0x00005c6b72817be5 llvm::sys::RunSignalHandlers() /home/jwkim98/llvm_test/llvm-project/llvm/lib/Support/Signals.cpp:105:20
 #3 0x00005c6b72819c05 SignalHandler(int, siginfo_t*, void*) /home/jwkim98/llvm_test/llvm-project/llvm/lib/Support/Unix/Signals.inc:418:13
 #4 0x000073ca21642520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #5 0x000073ca216969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #6 0x000073ca216969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #7 0x000073ca216969fc pthread_kill ./nptl/pthread_kill.c:89:10
 #8 0x000073ca21642476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #9 0x000073ca216287f3 abort ./stdlib/abort.c:81:7
#10 0x000073ca2162871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#11 0x000073ca21639e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#12 0x00005c6b6e3bf9ed llvm::SDNode::getOperand(unsigned int) const /home/jwkim98/llvm_test/llvm-project/llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1014:12
#13 0x00005c6b6e434ed4 tryToConvertShuffleOfTbl2ToTbl4(llvm::SDValue, llvm::ArrayRef<int>, llvm::SelectionDAG&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:13884:0
#14 0x00005c6b6e435750 llvm::AArch64TargetLowering::LowerVECTOR_SHUFFLE(llvm::SDValue, llvm::SelectionDAG&) const /home/jwkim98/llvm_test/llvm-project/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:13947:0
#15 0x00005c6b6e4027b6 llvm::AArch64TargetLowering::LowerOperation(llvm::SDValue, llvm::SelectionDAG&) const /home/jwkim98/llvm_test/llvm-project/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:7532:0
#16 0x00005c6b723eb55e (anonymous namespace)::SelectionDAGLegalize::LegalizeOp(llvm::SDNode*) /home/jwkim98/llvm_test/llvm-project/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1338:43
#17 0x00005c6b72410041 llvm::SelectionDAG::Legalize() /home/jwkim98/llvm_test/llvm-project/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:5911:25
#18 0x00005c6b7254c06c llvm::SelectionDAGISel::CodeGenAndEmitDAG() /home/jwkim98/llvm_test/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1078:3
#19 0x00005c6b7254aa23 llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true, llvm::BasicBlock>, false, true>, llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true, llvm::BasicBlock>, false, true>, bool&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:877:1
#20 0x00005c6b725508ed llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1906:33
#21 0x00005c6b7254910b llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:615:7
#22 0x00005c6b6e37a41a (anonymous namespace)::AArch64DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp:61:0
#23 0x00005c6b72547e62 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:374:40
#24 0x00005c6b711542dc llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:108:30
#25 0x00005c6b71a11162 llvm::FPPassManager::runOnFunction(llvm::Function&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1406:20
#26 0x00005c6b71a11438 llvm::FPPassManager::runOnModule(llvm::Module&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1452:13
#27 0x00005c6b71a11899 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1521:20
#28 0x00005c6b71a0c8e1 llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:539:13
#29 0x00005c6b71a1218f llvm::legacy::PassManager::run(llvm::Module&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1649:1
#30 0x00005c6b6dd1a18a compileModule(char**, llvm::LLVMContext&) /home/jwkim98/llvm_test/llvm-project/llvm/tools/llc/llc.cpp:755:34
#31 0x00005c6b6dd17810 main /home/jwkim98/llvm_test/llvm-project/llvm/tools/llc/llc.cpp:400:35
#32 0x000073ca21629d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#33 0x000073ca21629e40 call_init ./csu/../csu/libc-start.c:128:20
#34 0x000073ca21629e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#35 0x00005c6b6dd163e5 _start (./llvm-build-debug/bin/llc+0xf613e5)
Aborted
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzUWltz4yjT_jXkhooLkNDhIheOE8_m-zI7qUneuXUhCdu8g8AFKIf99W-BDpYU72TnuLtVUxOMoPt5uhu6QWLWip3i_ALQS0Cvzljj9tpc_F9jnVD_L-o8Oyt09XJxA7kqdaMcN7yCQjkNra45fOLCVJAbow182gvJYanrg5BC7aCUjzUUBj4Jt4d232y3kkN94IY5odUCoOXDXli4Z4cDVxYavmOmktxaqLfQ7Tl0zOy4g8yUe-F46RrDAVlBpiooHLSc1xZK8Zn7wf5RauHB6ELyusMi9RM3HoqXdhIBQMvfuOFQ2DCm1HXNVOUfJKj9VzC7B2gpZdnSXEgJz3XXtuORrbjb20_v4c1HeANIWkNnXoJ-3dmFjyd4Awnje6LLQThAy463M-IgOQTRFQSEMG-GJD5v1Geln9S5FKp5Pt-pBhDSaq74VigORUQgiFGQtzG8akpeAZIdnIGAUOQtCKIVTuAzFBmIrn0vBiSHIL0EaAlhYaBkBZf-QdSKjkC0hB7lwfDKdpAoxkEYoUn3l4T5gNA4DDnshVeVwWe4Z3IbdNHLMBP1MyGgV6FNL-Ef3GihhBNMij-46YZg_PYYEoZ0yumgXOAwZ8uk5acUOtPwk1rGM46yCxMkEkr9o8FGyeQXxq3JkpMmi3qQaegpmZRzb8QhLhadvxeKa7VwhSSLR5yIDJBsOv6UQb5uQOf_Hln2z0H2asAAMg8guyX9yEunzWtW6Umu2aQ3IqE7WvllE6LSN3AytIZG2rfI0JX1rWjoyvtWPAwfpNKha5A66CGD1KOeCETXnnBYMIFwIVzJrHtNKvdbzHSt_dlaxvgLkWmdNvzVoiU0sBlvIUyKnYLktJL0qlXllawbVfrdFi6dM9arVtoHV8HKz1DpreEcKm1fVAmVbtSTUBV8ElIa7hqjYM1rbV4AyZRWvA2AipeStSi_PTpfhcaJjhwCEqEjlcZyKbyFKm5gJQwvnXjkPgdMngQzvYVm5bfbNroQHAzGnDOiaBy3QXXrm_Ty-0zWi5_mqeuQs6XezR5JWYb4IOu9rjkg6_8-ffZ1ACBrz2jjuHVd-_xg9H952f8EZC1UKZuKHztWuuLvuAJkfc8lD4FwtXz3u664XexBtMQIh9xSamVdqBhAtATR8v7qE5N-c04mnX5i295x98EncuVzW6NCFRMKE084SPNil9ZyE6IPJOj3pvYehr83dTfVWznxOgAhN-qRSVHBci9k5a3vq5BOo1-vBJAUbpmQvPKFw93t9fL-GtqmqIWDDBbNDhp-0Mb5lbh37uBjHZA1IOudcPumWJS6PhpmZj9hbcMtIOu2umnN2JYkhtk99K53hpXc6753PhCqpj54FWiJFgDld0bvDKshM7um5sqFpbboNRWNkNV5xYtmB8i6ECo8KMdVB_ZSPjZK-YLlwKw3Tjqs3jvf8Z4ptvP7cAq1grWuGl-fkHSQQlKPj5yStFyGlQBvlHWmaYUOMdFJ3PbaAElflzBpuxdGCKJnhBCiZVKkJMMsysdRYl9s27gzQrlgqwdvOUCy4yDDnjbaOsNZHUJg1YfOt8W9FIUP8ebgAwCQ9X-UePYdYqeYtAuh_JrKUAyiZajWPA08p5EWKZxhbgX8xlQlvdmzRy0qQJY_G2iG_NLscJIZzrTg9JS5PzZqAtf6LfeHAe0RlodD2DaoNyXqIEYziHmJKJzbLjh4Ba3YCbXVGxfsuIK_xqQxzjzsqAMcd4DTqGQEJzGhBMFgr07cc5Zsknhc5PsH5cLqRQLIJXoOU7qCCJCITgXmSb4t4WZzcHvDWbX5LKTciPogud8awukn7A3q4CQg6_GwRYDrIzVNOuHJXxHuj4aKyS-KTYMReq-lp8SO53xRVpaPZWVzg8ZpAnc2-CCIaZuArBfh14ut-MHvtwdtg7sME5YHwSQF0bKnnk_lkizdRpAVfpsPclzV-it0tbh8eeW3Kr_E0avpuIAbJTdSs2pT6ZqJ1hFCBZa-u7a7krWyME49mLyThqfSopznyddFTZjSRo0XOF7aCY-Kbc6rb863v7Bk8NGJSUcimpCIo5hXsT93P-iVVo_cuPv2lPBh-1BI8qAfChlPcsFQa6xG3JfGsJePfOtPBsp19eFozghaSCDft3s8hBM_IOsuSx5bN_dc3nbXGP3mF2WZtwDqDBDPDEBTisZMWkGtil5U-yj8-nS9evjwcXP_23_W69vrty1zgvr3-P-bDJDH6cgAdGoARNIi-QoDfOgvhP4N3FPqT6wD9WSS-SJeUOorsowprV5q3VioWM3tIdQ_-WsSt3wXztadObpfHw4zU7RV8HcnydNLG5B1r_hq-W7wceSTRRx1RNMJ0RgjFOM_c8yEyw-oQr4CNs3D8ZrQDnY2gU3jEiXln8D2zm57O31LVV3XwgVVP4_DHMJQYYVk3Zs_n_FgjERv8mh7L5kV5aXU5edJUAl_YN4I59eeNpunTSH8mWU1H1Fxx0QnUOmKb_TBK5oOHR0q_ILt7_WGa7y2yDs-OM4coWv3-GFOGDvf9_9NqAut5Q_ITV8bOVmoWXAbOGR6WKMUZdMS4wuBs5TyyNNOgmc4lrYn_V9PEuco8cujWx8Ez9ZHjlHxJk3TqA_qPSv3QvGe0YTmq2e_nGeC6bGcJbN6MWUxZm9lmy6VXS3fPei_m_2XM20PcaB-zLMkmvk35Qn5gn99Yihf_jVejlJfT8Y92XFBmWJMY1KNk9YM7x2zdsT0JMWfwu0EjiF5hdzV86ETPgxjPHHe-s5P7e-2fh2Tm49dCVG-jAD0FOKwwZCeQzLnEEfZX-DwPtzRTcOt6_rZ-Cnpbzw8_nSOP8vzt7aO9_84UpTgsVOyKSlUZnxclMrRLjASdlMfjlvg38CCRvnYM_nMMwRn27dJ_J0EcBLnxxJjch-cVBVmOGP96_YhVMo9M-EEs5xWUre3n96vtHL8-fvKCKe1tO2levv_cF7zCTSKO6x4hjXNMILhFujHqo0R8mq7Y8hwh9vfQ-VVjuBmI0VRbqxjxm1KJuVmuI4qbfP6qqy7iTs1KVzM0HC7l3Qqo7lKHqPwVnkjlHBzLW3Tiz4PotvrL5KNVtv80rSVOCFxCv9JyVHqA6i3Dp05JYk4ha1Iv0W99RIl3KxtExxx2l6tLQttHJ98RXJWXURVHuXsjF_gNI4zhAlJz_YXuKiiLU1xuqW8pDTJ07TKUMoqlGG2LdiZuCCIUBTjBGOESLooGeVZEvHttmIVTUoQI14zIRfhhaM2u7PwMukCRzSn6Cy8mbXh-x5CFH-C4SkgBNCrM3PREdtZECN_crFHMU44GT4M8hzpFbzT1opC8vCu62nPFZTt-Xf42OfVJzZnjZEX3_4yrKPweEH-FwAA__8pAiqz">