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

    <tr>
        <th>Summary</th>
        <td>
            powerpc64le: ICE during instruction selection
        </td>
    </tr>

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

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

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

<pre>
    This issue was originally reported against [Fedora](https://bugzilla.redhat.com/show_bug.cgi?id=2308835).

I was able to reduce it to:
- LLVM IR: https://godbolt.org/z/dqa91xzv1
- C: https://godbolt.org/z/jbxnvx7o6

The C source code is:
```
#define simde_math_roundeven(v) __builtin_roundeven(v)
#define SIMDE_VECTOR(size) __attribute__((__vector_size__(size)))

typedef double simde_float64;
typedef struct {
  simde_float64 f64 SIMDE_VECTOR(64);
} simde__m512d_private;

simde__m512d_private __trans_tmp_4, test_simde_x_mm512_round_pd_r_;

void simde__m512d_from_private();

void test_simde_x_mm512_round_pd() {
 for (int i;;) {
    simde__m512d_private a_ = __trans_tmp_4;
    i = 0;
    for (; i < sizeof(test_simde_x_mm512_round_pd_r_.f64[0]); i++)
 test_simde_x_mm512_round_pd_r_.f64[i] = simde_math_roundeven(a_.f64[i]);
    simde__m512d_from_private();
 }
}
```

The issue can be reproduced with the command: `clang -O2 round-reduced.c`

The error message is:
```
LLVM ERROR: Cannot select: 0x9b8fd80: v2f64 = froundeven 0x9b8ef10
  0x9b8ef10: v2f64,ch = PPCISD::XXSWAPD 0x9b92d00:1, 0x9b92d00
    0x9b92d00: v2f64,ch = PPCISD::LXVD2X<(dereferenceable load (s128) from @__trans_tmp_4 + 48, basealign 64)> 0x9b07a90, 0x9b92910
      0x9b92910: i64 = add nuw 0x9b8f1b0, Constant:i64<48>
        0x9b8f1b0: i64,ch = PPCISD::TOC_ENTRY<(load (s64) from got)> TargetGlobalAddress:i64<ptr @__trans_tmp_4> 0, Register:i64 $x2
          0x9b8f0d0: i64 = TargetGlobalAddress<ptr @__trans_tmp_4> 0
          0x9b8f450: i64 = Register $x2
        0x9b8eff0: i64 = Constant<48>
In function: _Z27test_simde_x_mm512_round_pdv
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-trunk/bin/llc -o /app/output.s -x86-asm-syntax=intel -mtriple=powerpc64le-linux <source>
1.      Running pass 'Function Pass Manager' on module '<source>'.
2.      Running pass 'PowerPC DAG->DAG Pattern Instruction Selection' on function '@_Z27test_simde_x_mm512_round_pdv'
 #0 0x00000000038a5c18 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-trunk/bin/llc+0x38a5c18)
 #1 0x00000000038a37fc SignalHandler(int) Signals.cpp:0:0
 #2 0x000078581ec42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x000078581ec969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #4 0x000078581ec42476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #5 0x000078581ec287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #6 0x000000000074cf34 llvm::UniqueStringSaver::save(llvm::Twine const&) (.cold) StringSaver.cpp:0:0
 #7 0x000000000365c78c llvm::SelectionDAGISel::CannotYetSelect(llvm::SDNode*) (/opt/compiler-explorer/clang-trunk/bin/llc+0x365c78c)
 #8 0x0000000003663755 llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) (/opt/compiler-explorer/clang-trunk/bin/llc+0x3663755)
 #9 0x0000000001826182 (anonymous namespace)::PPCDAGToDAGISel::Select(llvm::SDNode*) PPCISelDAGToDAG.cpp:0:0
#10 0x0000000003659cd4 llvm::SelectionDAGISel::DoInstructionSelection() (/opt/compiler-explorer/clang-trunk/bin/llc+0x3659cd4)
#11 0x0000000003668ea1 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/opt/compiler-explorer/clang-trunk/bin/llc+0x3668ea1)
#12 0x000000000366b9dc llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/opt/compiler-explorer/clang-trunk/bin/llc+0x366b9dc)
#13 0x000000000366d63f llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/opt/compiler-explorer/clang-trunk/bin/llc+0x366d63f)
#14 0x000000000182c987 (anonymous namespace)::PPCDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) PPCISelDAGToDAG.cpp:0:0
#15 0x0000000003659861 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) (/opt/compiler-explorer/clang-trunk/bin/llc+0x3659861)
#16 0x000000000295896b llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#17 0x0000000002ea8f32 llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-trunk/bin/llc+0x2ea8f32)
#18 0x0000000002ea91c1 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/compiler-explorer/clang-trunk/bin/llc+0x2ea91c1)
#19 0x0000000002eaab66 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/compiler-explorer/clang-trunk/bin/llc+0x2eaab66)
#20 0x0000000000870854 compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#21 0x0000000000761086 main (/opt/compiler-explorer/clang-trunk/bin/llc+0x761086)
#22 0x000078581ec29d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#23 0x000078581ec29e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#24 0x00000000008685fe _start (/opt/compiler-explorer/clang-trunk/bin/llc+0x8685fe)
Program terminated with signal: SIGSEGV
Compiler returned: 139
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEmUtz2zgSgH8NfEFJRYLvgw6yHl5X2ROV5c1m9sICCZDChAQ4ACjL-fVbACmZlBU7TrI1UxonBvvxdaO7ATFYKVZySmcguAbB8gq3eifkTLcVE_VVJsjz7HHHFGRKtRQ-YQWFZCXjuKqeoaSNkJoSiEvMuNIQBNdrSoTEIFgCFO-0bhTw5gCtAVpnbfmNVRWeSkp2WE9zUQO0VjvxlGZtOc1LBrw1I8BbIs-JYy8AKJkCZwmceffz1vrHWUWhFlBS0uYUMg21MD6syATe3X2-h7cPwJvDsftSkExUeipkCdD6G0Br8jdO3MO3vXvUXfyI1l_Zge8PkQiHaI87ChdQiVbmFOaCUMjUCQqETv_pfkUeoQXjFCpWE5rWWO9SKVpO6J5ygOI9QAlM06xllWb81aNzK9vb--Uq_bxaPH56AChW7BvtDGCtJctaTdMUoBigOE33NNdCpkbGLvbC_WcQkH5uKKEFJKI1-e5Ii0pgHfrAux4LKS3bXEMQ9etwLA-L0D-nDH3j8GgIRMteJa0DF5G0kWyPNX0RsD8vicA01RJzleq6SX2AFlBTpdNO9JDWRrhLYdqQVKZnJveCkbHrQor65N-kLbmk8oaTTmmQjUJICFDMuIbM2PKux88hvBg8xCkE3vIsQG-gxexzZ7TWOwPetX28gGaLRQFQ_HZepkXog-DasZ2bWHWAru2nL4x3EtsbYCBYWqzvFDceCg6T-yoNb2wEBNHyVDmXm-zUlt3kyjGHGTUTSwozNwh8YnoH9c60a11jTkzvg9DJK8xLOPmEoKWedGOGTPMLpqmUQsKaKoXLtzrezqTVw8MnO5YWmHOhoaIVzbVZcA5JFhckdswve2S6xSSwOKWtk6CF6xxT9bJwVAFoke-s3mazuN0uDYs3__Jl-5_5ZmnlE0QcI--aJnlZOCV_KPOWzbsvn5foC_AWAMWESlpQSXlO7VyuBCam_JTbNYHZQwh8Z1TDEKBr6McGI8OK4oqVHPYDYWUxnAgnzgtm4g4w4WDRm0PWZwsTAnn71CfTzaz6QnClMTdZZmZuLfwYeKuhLThQ6KxdDvrx0yJd_fH48GcX9ylOi92FWQrdh_CIZUn1TSUyXM0JkVSpE0Gj5auE2LAN7wMtmdJUdtIQIP-AxrRHXoeMor_o8Q1fF236wcjmEeYSRl9_xUjhJdvDPN9yWLQ810xwI5z-F0VvDJJ9p7S5W823K6jarGYaYpi1ZX_bMEf_2RHN9K7N-utEVe2Pf0waKf4yLYbWdgYogNYQcwIZz6uW0K75JVY7mOH8q5Y4p_19Y6tx_hWStm5OLe1MgZNspCglriGWZVtTrpUdGmgtGuMlF3XDKion9NBUQlJp1sw4mWjZ8q_mCsS4hcvhRBg93DRGu9VNq6cKTg5xOMGqnqhnrvEBeEvGNa3gpNaSNRUF3rIRT1Q2eehXdFIx3h7MjO_uHaeMuwb1oeWc8RI2WCkIULTu9wBuzMI95rg0gBEUHNaCtBU1UiNjKOrTgS4Z3BiSzQIu5zcT4K2W8xu4wVpTyeEt724Ext3Wjjmz-Z2vYy1Yb77zbjmg6DjykedA5-Ac__NiHORuDO2O2x5Vz6r7y0Yyru0ePppNNf16EpL4KRVKS4prgELTdIxrex6bifXxnQTo2jn0LC9HJUCeewbrRUUOt6zkuPoX5qQyRuPed7espnljCs6x_58Mod5QFAexS3MfBcjpaSuWAbQ-xGEa-l05TEredg_yqRLT0OJZlRGcN7aZhEmRw0bvJMUk_cqq6mMOrP7IgX8O7UchLJWN86PwfhSObAdj2yiOCg_izAyHD1m2iiPL4XDPnMjPC88fFNi_Ofu7pVstGS-3eG_ntKk7vB_X2OOTuZfnZhzaGrPFNc1FRexmv-hf3vBoVDlhkEdxPqA4ddRyfnO7pVW32t0q_qS6ezzi2S7_EIQCNP_lOu9gRjmLx7ShFwXBu7Td6kIQuhB1bYbDZdwFbLn9gkpgvsPymNPxk9_RwB33KLBkGJgbo9CNkXGCueDPtWgV5LimqrETJuknz2axnN88igvBfn9H7D2DVkfF10VhpolzVhRJTvx307wUg1E8mMTxbygEAzD8Nuq6Z4UQU-y-X7aC0BvK55ysaqaX85vfAmd9j-DQGVyWkPd7qludV9U1Viy_rkT-VY228XSonvX6r6AbshG6d4ZOQq94F122_BO_x_mOcXqkHKG_evY72A3aiN0_66E8iaOf6qGfjOeHWis4b604fKtw72iJ8-d_MM0WcJTm0bmFkiBOwgx-F8LcAAf4F7lfA08bLPXUXCPgBXuXMzs6yRDFceGhAdd6Y1SPd9EPE_10CnuSUQrjM9TEzd0fQL23V-fxlvdLvwPTUIwwkzNMnIXhALMa1OYA-LZuXvro_wZrWIawaHRmOXHkxIEPe8OnxJlz3R6E9lB_Ibu7-3y_EFzTw3GwVlV-scyQO762ha4Th7DGjP9SRJ2dUUBnV3GUkOSDV3GrMrLpndukvgPT1KilSmOp00EkP-yF-mMv_ngrwjgoKOzs_1KSOksnV8cvyJrKmnGsj-_Zuou_-ba8vb3Zrm4-d-KL3huUVLeSU_sSzvWSs7doV2TmkcRL8BWduRGKYjeJUXC1m8WOgxNE_dBN3JxiHCGEExqTzPejJIyDKzZDDvJdx3GRG0ROMCWFGUtZiILci50kA75Da8yqqSm8qZDllX1XMHNdJwq8qwpntFL2H0cQ4vSpe5sIEALB8krO7GuGrC0V8J2KKa1ezGimKzobfF03od0uVpC05voP2eA7sjqeMFetrGY__3ajh97P0P8CAAD__7plsQs">