<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/99151>99151</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Implement the `radians` HLSL Function
</td>
</tr>
<tr>
<th>Labels</th>
<td>
metabug,
HLSL,
backend:SPIR-V,
bot:HLSL
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
farzonl
</td>
</tr>
</table>
<pre>
- [ ] Implement `radians` clang builtin,
- [ ] Link `radians` clang builtin with `hlsl_intrinsics.h`
- [ ] Add sema checks for `radians` to `CheckHLSLBuiltinFunctionCall` in `SemaChecking.cpp`
- [ ] Add codegen for `radians` to `EmitHLSLBuiltinExpr` in `CGBuiltin.cpp`
- [ ] Add codegen tests to `clang/test/CodeGenHLSL/builtins/radians.hlsl`
- [ ] Add sema tests to `clang/test/SemaHLSL/BuiltIns/radians-errors.hlsl`
- [ ] Create the `int_spv_radians` intrinsic in `IntrinsicsSPIRV.td`
- [ ] In SPIRVInstructionSelector.cpp create the `radians` lowering and map it to `int_spv_radians` in `SPIRVInstructionSelector::selectIntrinsic`.
- [ ] Create SPIR-V backend test case in `llvm/test/CodeGen/SPIRV/hlsl-intrinsics/radians.ll`
## DirectX
There were no DXIL opcodes found for `radians`.
## SPIR-V
# Radians:
## Description:
**Radians**
Converts *degrees* to radians, i.e., *degrees* \* π / 180.
The operand *degrees* must be a scalar or vector whose component type is
16-bit or 32-bit floating-point.
*Result Type* and the type of *degrees* must be the same type. Results
are computed per component.
<table>
<colgroup>
<col style="width: 20%" />
<col style="width: 20%" />
<col style="width: 20%" />
<col style="width: 20%" />
<col style="width: 20%" />
</colgroup>
<thead>
<tr>
<th>Number</th>
<th>Operand 1</th>
<th>Operand 2</th>
<th>Operand 3</th>
<th>Operand 4</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p>11</p></td>
<td
class="tableblock halign-left valign-top"><p><em><id></em><br />
<em>degrees</em></p></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
## Test Case(s)
### Example 1
```hlsl
//dxc radians_test.hlsl -T lib_6_8 -enable-16bit-types -O0
export float4 fn(float4 p1) {
return radians(p1);
}
```
## HLSL:
Converts the specified value from degrees to radians.
| *ret* radians(*x*) |
|--------------------|
## Parameters
| Item | Description |
|--------------------------------------------------------|----------------------------------------|
| <span id="x"></span><span id="X"></span>*x*<br/> | \[in\] The specified value.<br/> |
## Return Value
The *x* parameter converted from degrees to radians.
## Type Description
| Name | [**Template Type**](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src//direct3dhlsl/dx-graphics-hlsl-intrinsic-functions.md) | [**Component Type**](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src//direct3dhlsl/dx-graphics-hlsl-intrinsic-functions.md) | Size |
|-------|----------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------|--------------------------------|
| *x* | [**scalar**](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src//direct3dhlsl/dx-graphics-hlsl-intrinsic-functions.md), **vector**, or **matrix** | [**float**](/windows/desktop/WinProg/windows-data-types) | any |
| *ret* | same as input *x* | [**float**](/windows/desktop/WinProg/windows-data-types) | same dimension(s) as input *x* |
## Minimum Shader Model
This function is supported in the following shader models.
| Shader Model | Supported |
|------------------------------------------------------------------------------------|-----------|
| [Shader Model 1 (DirectX HLSL)](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src//direct3dhlsl/dx-graphics-hlsl-sm1.md) and higher shader models | yes |
## See also
<dl> <dt>
[**Intrinsic Functions (DirectX HLSL)**](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src//direct3dhlsl/dx-graphics-hlsl-intrinsic-functions.md)
</dt> </dl>
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUGNlu4zjya-iXggyZih37wQ-OHM8G6JlpdILefgtosWxxQ5ECSeWYr18UJdtSrr5md3sFwRZZxTpZBym8V3uDuGTTCzZdj0QTSuuWO-H-skaPtlY-LRNg0wtg0zVcVbXGCk0ANkudkEoYz2YpFFqYPWwbpYMyjOcsXZ0WfVDm7j18eFChJIRSe32rTHDKeFX4cclm6YDSSkrwWAkoSizuPOyse0Y4WJrICfyPD9cfLloOm8YUQVmTC60JSxnCusZKRExl9uOirl_jVliJezRvcrqsVOgxunys3YlB_ls3_TXqAX3wHcVoGsY3NMf4JrcSf0NDPBjfdBbzjG86UcZktDft9A5h0r6jGqW86lNN0DnrXieeOxQBIZRIVJUJt76-v-1Z5ujBzgxXR49ef7z69Hkc5HOSVwYi6Mr44JroqmvUWATryHRQDFj2WGn7gE6ZPQgjoRI1gAqduq8KFt3-BieWrVi28nF0FJnN0vFr2hOR5DNsRXGHRkY7QyE8djy0vq9e-JCMTrwZ35Bdk9NO77lTd_aml2eMZ7BWDovwpZ27KdEhPNCPsbD-cvUBbE3biIKhMfLlRh0PiLVyH6fgU4eXrYY80RdO1WSeDsTpPWDHAQBL25_cmnt0wQPjK4l7h0go5IeDGDwHNcYx_Q9x2DSPf_mGzVNgfAOTeTo-kb4pEWyNjvw7XFk1PsAWQYAvhBYOrIP76Eh4KK1HKGxVW0O5KjzVCMqzdDWZJVsVCDXj8WunrQjK7JPaKhN6jElb9I0OcPNUIzEkEWgHRmp294Y4hOFF1aKNoaVBrIVrRWoCSqjRneQ7eCjLg9hqZNllOyqs3jvb1P0J8OGJUNaM8wclQ8myFfCU8SnjnOz3f43M-OaF0qFEIU8j1wOw7PKPptqia5fGiR7sz27fTN4H8_fB2fvgsxdgGrnBaKgBldRX9ZFUFr1vDRW3wlbb4g5KodXeJBp3Ae7b72BrxjktzXIy1aTTsW6niGmPo2Tp6odJsyzHiv75TAeWXSjJ-GxPXy2jFpjlWzdwZZw-xMcA8R0xf3L2peUHtqaJXoClw5R3Qyk8Fx4Zn3vGFy0w5oMWg5AuHwV1QDAh6Cxt31gkic6G8Y18LA5Z75bSfyyhkNyAVtvb2e0cEjQkRDKZbVVIKEt4SP7sUj4-1tZ1WekMdobxefddTxhfADu_iAkKwGFonDkl2HlEIK-kK3a-7st30jHW-0OqP2btmLJqLNROoaRt0CDsnK2gc18vkY8HhjuP2dxhoAR4koTx1WMsESRv3iImrzwd8PDCwB0fhRMVBnT-OcurgBV8_0NLe2XtK6hvS_0tz3csPfICluW-FgaUbMP08RiGjG8I0g4GOF9ew-nMTyHZRmTUnSrt9EKZ-L-Gm5dOHz9b8rZzPrWb7zOtOvYl0DGG-uA6KNothvJr-6kLQaqs_dbjmef_oLraKXPRNiE3WNWaGrKuStM7XTM-L0OoY1sTo3KvQtlsx4Wlrux3VTjr7S6sbWy9HpTJODXX2m4pgttZif4u2DrxrugiO_ZhmYzhToGe7J2oS1X4ZNjOJbvuuOHHlaQo-KG9elQxP_Yxv7KOJPK1-gu_I6x-IsB-9PkbWH4DiV5MdyHxzKVtx_qLurJr0hlfte10JybPqW1uB5UITj12x4CBZrFa9RVrBZb2oSck45t_KvPR2f0JmkgRRFsO3wkZ4iXM0zcl715tolFsyoUHZeom9BzzH3z-25aJKkpVofGUPds-5qXO76b235VRVVPBdSkkOvjdStSHFK88HPYKKA--qalbQUmHXmoidlZr-0DHcd-urmj1y6ahT_tvNPX1UZ6fLuDfngB62216MVBsAozPu8N723nxxf8q2H016fI0nVlKtS_RDZ0ULfiE_mTPt_fINSII7e3x3Cp1bBmyXIZTc33Y-Me7FDhcw_nXLPOLJsPDySFqBt03qTuSy0wusoUY4XJyzieTWcqnfFQuZ-dzKflslwqeFbvzxUxsd9NJlk7Pt4tMzIqRWvKUn6XnkxlP07MJH-_EfDGVRTrnqSzO5hN2lmIllB5rfV-NrduPlPcNLheLyXQy0mKL2sf7Ws4rDGLb7KkN5DnjvLVmN-hup1i26q59jgAbWLY64E7XI7ckVsm22Xt2lmrlgz8xDypoXJ6ufl9ewxGlo3dHjdPLd1zY3Y1FhrWz_8IiML6JGpLvWiXvl_zfAQAA__8GG1fi">