<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/112367>112367</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[x86_64/GlobalISel] unable to legalize instruction
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
DigOrDog
</td>
</tr>
</table>
<pre>
# Description
The following code crashes X86 backend with "LLVM ERROR: unable to legalize instruction"
# Minimal Reproduction
https://godbolt.org/z/v5x9jPhqd
## code
```
define <4 x i32> @vector_select(<4 x i32> %vec1, <4 x i32> %vec2) {
entry:
%result = shufflevector <4 x i32> %vec1, <4 x i32> %vec2, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
ret <4 x i32> %result
}
```
## Stack Trace
```
LLVM ERROR: unable to legalize instruction: %2:_(<4 x s32>) = G_SHUFFLE_VECTOR %0:_(<4 x s32>), %1:_, shufflemask(0, 4, 1, 5) (in function: vector_select)
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=x86_64 --global-isel <source>
1. Running pass 'Function Pass Manager' on module '<source>'.
2. Running pass 'Legalizer' on function '@vector_select'
#0 0x00000000038be388 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-trunk/bin/llc+0x38be388)
#1 0x00000000038bbf6c SignalHandler(int) Signals.cpp:0:0
#2 0x00007696d5042520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#3 0x00007696d50969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#4 0x00007696d5042476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#5 0x00007696d50287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#6 0x000000000074e7f4 llvm::UniqueStringSaver::save(llvm::Twine const&) (.cold) StringSaver.cpp:0:0
#7 0x00000000042b4962 llvm::reportGISelFailure(llvm::MachineFunction&, llvm::TargetPassConfig const&, llvm::MachineOptimizationRemarkEmitter&, char const*, llvm::StringRef, llvm::MachineInstr const&) (/opt/compiler-explorer/clang-trunk/bin/llc+0x42b4962)
#8 0x0000000004244b3c llvm::Legalizer::runOnMachineFunction(llvm::MachineFunction&) (.part.0) Legalizer.cpp:0:0
#9 0x000000000297065b llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#10 0x0000000002ebe462 llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-trunk/bin/llc+0x2ebe462)
#11 0x0000000002ebe6f1 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/compiler-explorer/clang-trunk/bin/llc+0x2ebe6f1)
#12 0x0000000002ec0096 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/compiler-explorer/clang-trunk/bin/llc+0x2ec0096)
#13 0x0000000000871de4 compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#14 0x0000000000762976 main (/opt/compiler-explorer/clang-trunk/bin/llc+0x762976)
#15 0x00007696d5029d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#16 0x00007696d5029e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#17 0x0000000000869b8e _start (/opt/compiler-explorer/clang-trunk/bin/llc+0x869b8e)
Program terminated with signal: SIGSEGV
Compiler returned: 139
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0V11z46gS_TX4hbJLAn0--MFjW9lUJZWUnZ26by4kIZkNAi2gxJlffwskO5bjuzPJ3E0ljizo04fT3UATrVktKJ2D8BsIVxPSmb1U8xWrH9RK1pNclm9zgDBcUV0o1homBfBWwFs87SmsJOfylYkaFrKksFBE76mG_0kimJPimYoSvjKzhwChu7vv93C92TxsAF7ATpCcU2gk5LQmnP2gkAltVFc4Bwj1PoZPhOE9E6whHG5oq2Q5THOje2NaDfACoAygrJZlLrmZSVUDlP0AKHsJD-lfj_u_ywtIi2pZDy8ib_h1X0taMUEhwMsAHiDDCOA1BIH3Qgsj1U5TTgsDUHIxAYUvtPABWl5augEEUApB_K13QYVRb5a3-wbtHEV1xw0EeAX1vqsqTnt_V9H-yc2HAbxkGEHPjtiH4PjgHx9CN22goqj5iNyTG9SKV1dlG4m7NaR4hk-KFNc17j8_lRd4YZkggBe7d_G1o-i0xSt4s9v-8WeW3a1339fLp4eNNfD-h4ETCoV-P7w8it4Q_QxQ4tRySjmVQucBJUzAqhMnPhcZkfarerxbL7ZrqLu8YQYSmHc1VLSVyti1XaQsM_sunxWyASjj_OX4b9oq-ZcDzZjWHdUAZZCIEjJR8K6k0OyHknPFZqzQs959L33ZNe0pwbwZ8NJHJWtFGkhU3TVUGN0rmsnWeilk0zJO1ZQeWi4VVfYdJ6KeGtWJZ4CynAlHroBTae1I21rrzrSdmWk4PSTRlOhmqt-EIQeAV0wYyuG0MYq1nAK8OiTRLgrgdFpzmRM-ZZpym2tadqqgNiyOrW_Zbjoh7N7SEq0hQHE2yA4f7Yt7IkhtOcZQCtjIsuPUzhqBoXhQBF0DvBty7AhyjKuD-VDs8VAeAGEPegfv-IOTnOIkgS50eAHwQr_p_uFRMWFcMPoyQMn7JEVed1IbRUkDUOTqUJghx74SEoC-eYeByykPLVn_gmxeRQXcsloQ_gcRJbegyeC7f61nRWszx3N_JyA0AMVRGpWhF6AQeQNbznKAsj64U85Ed5jWousHipmWs8jRcyYjcniMmUZpVcDW7BUl5e6Zcf45B85-5CC4JB3EEay1W-dnyQdxNMIOx9goiSsMSW6r_FPIznCEHJ3HzIsDGlfBWYL9KdjfHd0axUS9JS9UDXlHXsY59vRqT7FCCm1cjrnkmhWSly7Y7_bXAx6fswhQHqQROmPRb2g3t1vKM8J4p8bO70mxZ4Ieq3ZI8jNyRNXU2FpeSlGx-ozn-bQB5qE1rGE_iIXa0Iao53XDjLHJ6wyKPVFHhMUYoV_nhlZXgW_t-XKp0ZcLcFBpFMxkLGMQ5Lg44_G-C_WqduJBfNDuJ7r2gW2JMjNbX_CEeT2w6TkjlMZeFOYflTl6sCE643aV1D-yuYL3kZfdqUb7KqI5DUYJlz1a0-PG_2lGXw7qwOQUVEvVv6QaVf4vUL1359Q4nsOr_wvNqPJHNNGYZuF5aXRG096yirfhsHonfNu0_ET63yLruIzI4tGul8R-SQM4AJ-Es4XuSvyiyu1FcimFoYdjHXNeXE-zYLy7RiiNI9gQJn5rRT3OaEGXB0Rapp88MZ3JCDO6xKSBB3c7a7bThiizO1vJL3uhwdhLPA5FlOYJhT3-b4nUI73fk4cLqaGqYYIYOjSM_flsb6fb25vt-uZ7P305eLMdSqcELe0MH6dX-4tJOcdlilMyoXM_Rqnd6YJksp-XOfKqBPuUBFXl534elSQN0wpFZUQJDidsjjwU-J4f-gEOg2jmFUEURWWOKz_FhOYg8GhDGJ_Z9LO95sTd0Oe-j3AUTzjJKdeupUZI0FfoRm1XG64mau4u93lXaxB4nGmj32EMM9z14n3IAMpu3D3ZnrEgXP2kP5p0is-_3lwM7F_m6L8BAAD__8Y-vR4">