<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/72862>72862</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[SPIR-V] Unable to legalize G_IS_FPLASS
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
linehill
</td>
</tr>
</table>
<pre>
For example:
```llvm
target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
target triple = "spirv64"
define spir_kernel void @foo(ptr addrspace(1) %0, float %1) {
entry:
%2 = call i1 @llvm.is.fpclass.f32(float %1, i32 518)
%3 = zext i1 %2 to i8
store i8 %3, ptr addrspace(1) %0
ret void
}
declare i1 @llvm.is.fpclass.f32(float, i32)
```
SPIR-V backend fails to lower the `llvm.is.fpclass.f32` intrinsic:
```
$ llc -filetype=obj -O0 fpclass-intrinsic.ll -o /dev/null
LLVM ERROR: unable to legalize instruction: %11:id(s1) = G_IS_FPCLASS %1:id(s32), 518 (in function: foo)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: ../install/bin/llc -filetype=obj -O0 fpclass-intrinsic.ll -o /dev/null
1. Running pass 'Function Pass Manager' on module 'fpclass-intrinsic.ll'.
2. Running pass 'Legalizer' on function '@foo'
#0 0x00007f06aea24dd0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libLLVM-18git.so+0xc9fdd0)
#1 0x00007f06aea221df llvm::sys::RunSignalHandlers() (/mnt/md0/linehill/ws-chipstar-4/install/lib/libLLVM-18git.so+0xc9d1df)
#2 0x00007f06aea22335 SignalHandler(int) Signals.cpp:0:0
#3 0x00007f06ad951520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x00007f06ad9a59fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x00007f06ad9a59fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x00007f06ad9a59fc pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x00007f06ad951476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#8 0x00007f06ad9377f3 abort ./stdlib/abort.c:81:7
#9 0x00007f06ae784a4a llvm::GlobPattern::create(llvm::StringRef, std::optional<unsigned long>) (.cold) GlobPattern.cpp:0:0
#10 0x00007f06af90bd94 llvm::reportGISelFailure(llvm::MachineFunction&, llvm::TargetPassConfig const&, llvm::MachineOptimizationRemarkEmitter&, char const*, llvm::StringRef, llvm::MachineInstr const&) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libLLVM-18git.so+0x1b86d94)
#11 0x00007f06af8951ca llvm::Legalizer::runOnMachineFunction(llvm::MachineFunction&) (.part.0) Legalizer.cpp:0:0
#12 0x00007f06aefadca7 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#13 0x00007f06aebf9a6e llvm::FPPassManager::runOnFunction(llvm::Function&) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libLLVM-18git.so+0xe74a6e)
#14 0x00007f06aebf9cb9 llvm::FPPassManager::runOnModule(llvm::Module&) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libLLVM-18git.so+0xe74cb9)
#15 0x00007f06aebfa605 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libLLVM-18git.so+0xe75605)
#16 0x000055a74ed027ce compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#17 0x000055a74ecf8cc6 main (../install/bin/llc+0xdcc6)
#18 0x00007f06ad938d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#19 0x00007f06ad938e40 call_init ./csu/../csu/libc-start.c:128:20
#20 0x00007f06ad938e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#21 0x000055a74ecf92f5 _start (../install/bin/llc+0xe2f5)
Aborted
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8WFtv46oW_jXkBcXCy_eHPGTaZk6ljqZq99mvEQacsIuxBbjTzq8_AjsXp9kzcy5zpDaxMf74-NaNFWqt3GkhVij7hLLbBR3cvjMrJbXYS6UWdcffV5vOYPFG214JlKwRuUVkjXIy_in12o5DjpqdcJhTRxV97waHUXKLEYBYyjxFyTpPl69xjpJ1nC9fwY8ksHxNYLpIy2lOFeZAuXyNK_8QMj8_yw-XWexHsxiWrzEJOOELYMbDGdkrceBge2le89Ok8ZOLRmqB_cPtizBaKPzaSY5RSpquQ1D2zmDKubE9ZQJBGSOoMIKMILjBjeqo83fjaPFpBBXamfejUNhPgECDUaWwjD26Vy2SNmp6pqi1UZMAgvIc8AbLBHAWlwiqM6QkIH0Xby4geWjXYVkepljXGYFlGeZ6lL_fwfiGES7seZKluJ3rwxT1eD8jPfE9cj26x3j7_Hj_tPwT15S9CM1xQ6WynrfqvgmD3V7gyZMu4XOCpXZGaivZR9-bbiHFSjG8bKQS7r0XKLnt6r_w8ivBE9byCBIphZcdRrDh4hXBRg9KjTAPD39-wXdPT1-fULLGg6a1EoGj2FElvwsstXVmYE522s_wZopRspYcQWlHWZNb_Hl7_7zdPN48rJ-fR1MepozywI03KkZQSo2bQR_xgsNN8j0-3K2f77Ad6lY6THE97LARfWecZ7R3rrdeDdgg2Oyk2w91xLoWwSZE4_i17E33l2AOwUZaOwiLYIOp5lhqpgYuguzMULsPdnGGMhFN5nKUvWA-tP1RcxIhUj2abmdoi6nZDa3QzpPAUeRX0NZRpRBsaqkDgf_aHrFf8WnQWuod7qm1GEGxmQTDj37gC9V0JwyCAncatx0ffMBDcW0VBMW0O7gG_DBZ-QB2sIx_dsgGxRQyCBKCyRshhBQNyamgkHJOcBA_WaNkbd_tePFopHZBzj_MGH-nSYZ-23bWGUFbBHmIIO3G6CwRbFp_s2k58XJO-RjB5ptdsr3sraNmmc6UV7IeP70nL-NyJ11kOwSfyBurGu6BqtMO4osdQMybazt4GvSz3Gmq_kE1V8LYwO73kOQxb2Yk4ZJkkmR4RifEUVBtHLYR673XkvB_BErOgXiVxRmQaQsjo7cy3-bpUkk9vC13ehgfsMh2UR7YpZDBXMF0jkmzqmF4u-3d3gjKty9Sqa30RdOHCg3O5ENF984LcT4t8rkt9YWsyE_42a_gayeMpuqHyEUZSuQJOb-GfP7aD-HK6gKuuBQ3LXK8s8EeAWm8RLAJucK-Wy56n476zso3BBtDpRUBGwp_BjhBl3PopCiaBNPaJ8IA5fhovjA0svMJ9yxSq5kLFWVKU3rm559VVz9S51UcB5gR1M0D9dlnkd2TaHyMWsfH0a73JqUKJTeDDqcojlWndyi5m-IjYp3i_vpskY_u6WNxlk6aitS8Ss9Ijqn_8_2zUBsq1WDm_L5QtpdaHHLjlExOz_8IByKfMW863cgdZp227sO0CeZr72QrvweHfRItNS93rfTcpxfYnpoDwnqOMBPqA_C9r59na_-OHBLXZc6r9HQOgSSeZbqmrLKYnXvAKfOPWg_6q_6g6E_UHs3dU-MinyPwEfO6uedpraGc0eKjXocVvOHOuF0l9UM2V_Cu85plSVE3Fc3FGa_No3_1UHT_bUb_Y1OLIqW5mFk6veTP6uoX-H8JB4e5kaeh38ed1dWMe3bBneYkO-PuT6HsfTpUnHZx3_bquJP_7w6ynGSzHRyqSpbRIhWcQMEEZl3bSyWOEvvsEfLGRerwK9x02om3Q3JQil330mK2DmtKxnLcUqmD2__NaTSQ5ozlM8qX5aXkFcHbra_8W6-H2_qebRvAPTCzw8cqNtXJay9Fe9-ohvKbn1atLlcVKQnN4VZq6S4XGi89-jKghyoXgweFkypAroHOtnJtF1fBk8JX-OyEHV8oXkGT4RH1p5oLaE5usvZlWvDrbVz4XPBVwqukoguxigtC0jItsmKxX2V1RapE5IRQwuMiizPCBUsr4KQpScoXcgXEZ3sgMWSQFBHLCStoXMQsgaaGEqVEtFSqKDSandktQl-0KqDMYaFoLZQNv4MAaPENh4cIAGW3C7MKHVU97Kzvg6V19oTipFPhB5Sxy0XZLf7nx-5x6gt9W7gYjFr9501c4PuvAAAA__-92ENU">