<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/62628>62628</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
GlobalISel: Unable to use intrinsics in matcher patterns
</td>
</tr>
<tr>
<th>Labels</th>
<td>
globalisel
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
arsenm
</td>
</tr>
</table>
<pre>
There appears to be no way to make use of intrinsics in matcher patterns. If I try an ugly way of referring to G_INTRINSIC, it just crashes:
```
def expand_promoted_fmed3 : GICombineRule<
(defs root:$fptrunc_dst, expand_promoted_fmed3_matchdata:$matchinfo),
(match (G_FPTRUNC $fptrunc_dst, $fmed3_dst):$fptrunc,
(G_INTRINSIC int_amdgcn_fmed3, $fmed3_dst, $src0, $src1, $src2),
[{ return Helper.matchExpandPromotedF16FMed3(*${fptrunc}, ${src0}.getReg(), ${src1}.getReg(), ${src2}.getReg()); }]),
(apply [{ Helper.applyExpandPromotedF16FMed3(*${fptrunc}, ${src0}.getReg(), ${src1}.getReg(), ${src2}.getReg()); }])
>;
```
I would expect to not require the G_INTRINSIC part, which hits an error:
```
/Users/matt/src/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUCombine.td:134:5: error: Expected a subclass of GIMatchKind or a sub-dag whose operator is either of a GIMatchKindWithArgs or Instruction
def expand_promoted_fmed3 : GICombineRule<
^
note: Pattern was `(int_amdgcn_fmed3 ?:$fmed3_dst, ?:$src0, ?:$src1, ?:$src2)'
Included from /Users/matt/src/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUGISel.td:14:
/Users/matt/src/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUCombine.td:134:5: error: Failed to parse rule
def expand_promoted_fmed3 : GICombineRule<
^
Included from /Users/matt/src/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUGISel.td:14:
/Users/matt/src/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUCombine.td:156:5: error: Failed to parse one or more rules
def AMDGPUPostLegalizerCombinerHelper: GICombinerHelper<
```
The diagnostic is also quite poor since it's not pointing at the specific problematic token, and only at the top level rule
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcVk1v4zYQ_TX0ZbCGTPnz4IM_ItdodxFkE_RoUOJI4i5FasnRpu6vL0jZsZ0UWaAtiqKAIXOG4nD45r0RhfeqMohLNlmzyXYgOqqtWwrn0TSD3Mrj8rFGhyDaFoXzQBZyBGPhWRyD0YivCJ1HsCUoQ04ZrwoPykAjqKjRQSuI0Bk_hH0JeyB3BGGgq_QxxrAlOCzROWWqEHB32H96fNh_-rzfML4BRfCl8wSFE75Gz9IVS7YsOT-nyekXTYkl4G-tMPLQOttYQnkoG5QpsHQFu_3GNrky-NBpZOmmXwPA-Fxi6cFZSyE-H5ctuc4UB-kp5PCnIQ_xfFKQ6NdEU5nSMr5g_Dp4nAmD3SG7f3x4-rSBt3sETwwb7cVNHrfhrgAKiB9EI6vC9Em9jRRt74rkMhxdhvw2WYBAg9kaHFLnDPyEukU3jAe4iyDcnzDIRtPsY9xwznhIlc3W52xn29MGbLaOO8-2wwrpAav49uJmdvTuLH87u2DpGsIek-0bpEXb6uP5DKfko-8_mnzP4fSOpet3WN0_9_BsOy0DGbGgoBRjCRx-65RDoBqvlQOtcLH4z7UqaqgV-SA6dM66i4RebcOzJ4_OM541gojxzLuC8Uzr782H1tkvWNDJDH8qZzx7FK7C4F193O7un14GJ6ENSbJ0NUrHLF1NggTPCcBdPAVKEOC7vNDC-9AJdvuPgWs_KyPBun7ygxQVPNc29JgWnSDrQHlARaG72BLE9bJfFdUrV_mwfG88ua4gZc3f6Q9BFXe9YSxhePW-72nwLDwEAPn8tRKBpdlJxDdiPHtfJHnlGL129PKcnQhgCt1JlFA628A_Wa3d_jPqU63GF3r8m3zIhNIoA6vb8O0BF0rw12v2UrD_D2iT6Q9BswYD7RvregD9BcE-4r319AtWQqvf0Z3Cu75P3oD54tv8sC091ghSicpYT6oIwhTaW_jWKUJorXXglSkQFDE-87FntVYZCl97QbFv-RYLVaoCWmdzjY0Igch-RRP0IEIrMPp4fptsCxq_o45HHMhlKhfpQgxwOZrO0-l4lExHg3o5nabjmRwn04kQcoJlOknyBJPRpByls3kxH6glT3iaTJLFaJyMeTKciaKclGJccpmX80KycYKNUHoYijW0rhoo7ztcTvmUzwda5Kh9vDZxXmmbC608asZ5uEa5ZSx43lWejROtPPlLGFKkcbmLawKJAvRPRuQ6HC7epd6_SA06p5c1URtvQzxjPKsU1V0-LGxzRa5bysXkAy9j_n8EAAD__5ALFNo">