<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/65205>65205</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
LLVM 17 breaks inlining callees with other target attributes
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
kalcutter
</td>
</tr>
</table>
<pre>
Consider the following code:
```c++
#include <immintrin.h>
__attribute__((target("avx512bw")))
static __attribute__((always_inline)) __m512i MM512_MASK_ADD_EPI8(__m512i src,
__mmask64 k,
__m512i a,
__m512i b) {
__asm__("vpaddb\t{%3, %2, %0 %{%1%}" : "+v"(src) : "Yk"(k), "v"(a), "v"(b));
return src;
}
__attribute__((target("avx512bw")))
__m512i F(__m512i src, __mmask64 k, __m512i a, __m512i b) {
return MM512_MASK_ADD_EPI8(src, k, a, b);
}
__attribute__((target("avx512bw,avx512dq")))
__m512i G(__m512i src, __mmask64 k, __m512i a, __m512i b) {
return MM512_MASK_ADD_EPI8(src, k, a, b);
}
__attribute__((target("avx512bw,avx512vl")))
__m512i H(__m512i src, __mmask64 k, __m512i a, __m512i b) {
return MM512_MASK_ADD_EPI8(src, k, a, b);
}
```
Functions `F`, `G`, and `H` are all inlined (as expected) when compiling with previous versions of clang (up to and including version 16). Testing with LLVM 17 RC yields a different result: only `F` is inlined and horrible code is generated for `G` and `H`. I believe this regression is caused by https://github.com/llvm/llvm-project/commit/d6f994acb3d545b80161e24ab742c9c69d4bbf33.
Please revert that change or apply the appropriate fix to `X86TargetTransformInfo.cpp` for the LLVM 17 release.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUVUuP2zYQ_jX0ZVBDoh62Djps7DgJmgWCNijak8HHyGJNkSpJ2et_X5CSt5tuUqBFDy1AiNRwXt_H4ZB5r04GsSXVG1LtV2wKvXXtmWkxhYBuxa28tTtrvJLoIPQIndXaXpU5gbASSfFAsj3JHkidzUMQ-iaOWUoLZYSeJAIpdmoYlAlOmXVPireLRvoejywEp_gU8HgkdEvoNjB3wpDWlF2eqpzyK6GU0GYZydAHFpSAr9gzfWU3f1RGK4OzCRyPQ5VTBY-PVU6Pjw8_fn982O-Pbz99iBb3Xe8EobvZfzQZmD_XJZy_ECZN9lrEYxyyWfADQMzND0tW9DIyKTmpdiHq0KogdAeEVnSZs_iZt_K02hNKgRQPkLC_uaRpm1Js7vJfzrP0nGBGP3TRY68kfGGveJGhwzA5k3DfxTHwv3E-d1oOr_j9E7NfcPoXbC65fv0EF8_JX_LDX0L9p5h281L-9m147_7_8C762_De_6fg3TvN_HuYjAjKGg-kzg5RHOu9zt4tS2Zk_H1P6gyYQ2Baw9wUJMQb4gGfRhQBZcz22qMBYYdR6djirir0MDq8KDt5uKDzKZLtQGhmTtHBNEKwKcrc6aLZogh5TWizhs_ow7O3jx9_eoR8Az_s4KZQSw8MpOo6dGgCOPSTDvFeW6Nvd0ig_HPOMVJvnVNcY2rBcfOEBh0LKKGz7o7-JfQ1fACOWuEFIfTKg8OTQ5-yVB4EmzxK4DfoQxh97Or0QOjhpEI_8bWwA6EHrS_36bvR2V9RBEIPwg6DigtZd01TMsELWZUV32Z5nSMtGd-UVDSibmTJeVcU65dV-kkj8wgOL-gChJ4FED0zJwTrgI2jvqVHh42js6NTLCB06ikyTurs5239OZX0Z8eM76wbPpjOrsU4RvSRiWh7J9xhirVeybaQTdGwFbZ53RR1ucmzetW3OW9yjmWx2eayK5Fuik22xS2vi03WFR1dqZZmtMiajGZNkZf1WpRbWXUZ5V0lGN8KUmY4MKXXkaO1daeV8n7Ctq5oVq0046h9emopNXiFtBlvXbVfuTbxyqeTJ2WmlQ_-Dy9BBY3tHQh3yM5LQaR3mGmN6OfysqGPD3WiBZ47gF9NTrd_-2xTgp7QQwLwewAAAP__rXRjJw">