<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/86192>86192</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[DXIL] Add `log`, `log2`, and `log10` intrinsic Lowering
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:DirectX
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
farzonl
</td>
</tr>
</table>
<pre>
Needs to cover the float and half case for all three: https://godbolt.org/z/64fzEq3nd
This is a perfect candidate for [instruction expansion](https://github.com/llvm/llvm-project/blob/main/llvm/lib/Target/DirectX/DXILIntrinsicExpansion.cpp):
- `log2`
- This is the simplest case just call unary dxilop 23
- `log`
- Call `log2` DXIL op (ie 23)
- Create a ln2 const value
- `M_LN2_F` `0.693147180559945309417232121458176568f`
- `M_LN2_H` `0.693147180559945309417232121458176568h`
- Floating point multiply the value of M_LN2 with the return value of `log2`
- [Reference implementation](https://github.com/microsoft/DirectXShaderCompiler/blob/main/lib/HLSL/HLOperationLower.cpp#L2238C1-L2253C2)
- `log10`
- Define M_LN10
- `M_LN10_F` `2.30258509299404568401799145468436421f`
- `M_LN10_H` `2.30258509299404568401799145468436421h`
- Call `log2` DXIL op (ie 23)
- Create a `log2_10Const` = `M_LN2` / `M_LN10` const value
- Floating point multiply the value of `log2_10Const` with the return value of `log2`
- [Reference implementation](https://github.com/microsoft/DirectXShaderCompiler/blob/main/lib/HLSL/HLOperationLower.cpp#L2255C1-L2271C2)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMlUFv2zgThn8NfRnYIEeiLB50cOwKKeCvH7DtobeAkiiLXZrUklTa5NcvRMGx080hAfawPlgyPXpfzsyjoQxBn6xSFeF3hB9WcoqD81Uv_bOzZtW47qki9EDo7otSXYDooHWPykMcFPTGyQjSdjBI00Mrg4LeeZDGQBy8UiTbwRDjGEi2I1gTrE-ua5yJG-dPBOtngnWR98-f_spst9gs398GHUAHkDAq36s2QittpzsZFwfC77QN0U9t1M6C-jVKG7SzhB8Ilr9Z6jhMzaZ1Z4K1MY-Xy3r07odqI8G6Ma4hWJ-ltjcxel77Jv1JzTEH7VUbv8933z8fP9votQ26_XSx3rTjSFDMtjeJrIEU1LgTkoIuKwBruKQ3FzHo82hUiEv5fkzpzhiAyUr_BN0vbdwImL3WeyW3n-OvPjBvENwIBEut5kdRXINh79VcRgnGIrTOhgiP0kwKLjGQwkhB__dw_IIP9Sy5fEhB6aYQGcu3rKScC5HzjIqcbTFDhiznJdsWvCj76_5upe5fpN6tNLzKFOoZOW1PMDptI5wnE_VonlIllyxcD8kMfuo4pHWv4uTt9e-3OkL43R-qV17ZVkHqyFnZKON7mDrr1rvg-htKvg6yU37vzqM2yv-TsITW_fHrMV3-PyqfrI7up_ILSNkRMSv3bH1E5NkeX3p4IYDRuZjXDA6q11al3Bm9tnJ9qT6jSydJQXGTUeQlpwKFyGnOizKnbCsEy3lelHlW5MhuWvibzP1HZIZ_g9TLIw-M7mdg0waywwtY6TfW1z0mzt5ge_0-gN6w-xBN_02cOF9w2rKE06qrsk5kQq5UxbaMUc4EitVQFaxrCsZELkre8y3v87wQAkVOS9WIRq50hRRzOr-olCEVG951KNpO4bbjQpWS5FSdpTabeZTOs36lQ5hUVRZM4MrIRpmQThzERrZ_KtuRbPcyYHE-iHyVZnQznQLJqdEhhqta1NGkI2vmh_AD7LruZjDi_rYruE9H1O1boy_TG1KJtD2tJm-qD58bKatAsE6J_R0AAP__k7Yhsg">