<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/99233>99233</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Implement the `IsHelperLane` HLSL Function
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            metabug,
            backend:DirectX,
            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 `IsHelperLane` clang builtin,
- [ ] Link `IsHelperLane` clang builtin with `hlsl_intrinsics.h`
- [ ] Add sema checks for `IsHelperLane` to `CheckHLSLBuiltinFunctionCall` in `SemaChecking.cpp`
- [ ] Add codegen for `IsHelperLane` to `EmitHLSLBuiltinExpr` in `CGBuiltin.cpp`
- [ ] Add codegen tests to `clang/test/CodeGenHLSL/builtins/IsHelperLane.hlsl`
- [ ] Add sema tests to `clang/test/SemaHLSL/BuiltIns/IsHelperLane-errors.hlsl`
- [ ] Create the `int_dx_IsHelperLane` intrinsic in `IntrinsicsDirectX.td`
- [ ] Create the `DXILOpMapping` of `int_dx_IsHelperLane` to  `221` in `DXIL.td`
- [ ] Create the  `IsHelperLane.ll` and `IsHelperLane_errors.ll` tests in `llvm/test/CodeGen/DirectX/`
- [ ] Create the `int_spv_IsHelperLane` intrinsic in `IntrinsicsSPIRV.td`
- [ ] In SPIRVInstructionSelector.cpp create the `IsHelperLane` lowering and map  it to `int_spv_IsHelperLane` in `SPIRVInstructionSelector::selectIntrinsic`.
- [ ] Create SPIR-V backend test case in `llvm/test/CodeGen/SPIRV/hlsl-intrinsics/IsHelperLane.ll`

## DirectX

| DXIL Opcode | DXIL OpName | Shader Model | Shader Stages |
| ----------- | ----------- | ------------ | ------------- |
| 221 | IsHelperLane | 6.6 | () |

## SPIR-V

# [OpIsHelperInvocationEXT](https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#OpIsHelperInvocationEXT):

## Description:
 
Reserved.

[Capability](https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#Capability): 
**DemoteToHelperInvocationEXT**  
 
[Reserved](https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#Unified).

<table>
<colgroup>
<col style="width: 25%" />
<col style="width: 25%" />
<col style="width: 25%" />
<col style="width: 25%" />
</colgroup>
<thead>
<tr>
<th>Word Count</th>
<th>Opcode</th>
<th>Results</th>
<th>Operands</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p>3</p></td>
<td class="tableblock halign-left valign-top"><p>5381</p></td>
<td
class="tableblock halign-left valign-top"><p><em>&lt;id&gt;</em><br />
<em>Result Type</em></p></td>
<td class="tableblock halign-left valign-top"><p><a
href="#ResultId"><em>Result &lt;id&gt;</em></a></p></td>
</tr>
</tbody>
</table>



## Test Case(s)

 
 ### Example 1
```hlsl
//dxc IsHelperLane_test.hlsl -T lib_6_8 -enable-16bit-types -O0

export bool fn() {
    return IsHelperLane();
}
```
## HLSL:

## Syntax


```syntax
bool IsHelperLane();
```


## Type Description

| Name  | [**Template Type**](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src//direct3dhlsl/../direct3dhlsl/dx-graphics-hlsl-data-types.md)| [**Component Type**](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src//direct3dhlsl/../direct3dhlsl/dx-graphics-hlsl-data-types.md) | Size |
|-------|--------------------------------------------------------------------|----------------------------------------------------------------------|------|
| *ret* | [**scalar**](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src//direct3dhlsl/../direct3dhlsl/dx-graphics-hlsl-scalar.md) | **bool** | 1 |

## Minimum Shader Model

This function is supported in the following shader models.
|Shader Model | Supported|
|-------------|----------|
|[Shader Model 6.6](https://microsoft.github.io/DirectX-Specs/d3d/HLSL_ShaderModel6_6) and higher shader models | yes |

## Shader Stages



## See also


- [**Intrinsic Functions (DirectX HLSL)**](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src//direct3dhlsl/../direct3dhlsl/dx-graphics-hlsl-intrinsic-functions.md)
- **See [IsHelperLane](https://microsoft.github.io/DirectX-Specs/d3d/HLSL_ShaderModel6_6#is-helper-lane)**
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUWN1u47oRfhr6hpAgUSslvvCFf-JzDGS7xTo93buAksYWG4oUSDqJz9MXQ8o_ip0Ebc8C20BAzOFw5uM3I3JG3FqxVQATks9IvhjxnWu0mWy4-VMrOSp1vZ9ElOQzSvIFXbWdhBaUo6RIVvZ3kB2Ye66AFAmtJFdbWu6EdEIRNifJ9LTyXqinTxfRF-Ea1GqklY9COSOUFZWNG1IkA3PTuqYWWk6rBqonSzfaXLPuNErnqPP7_fp-Ftwsd6pyQqs5lxK1hEKtNbTcawq1jauuu-ay0jVsQX3s7q4V7szb3WtnTl7mv_Xiz1w4sM72Fj1JhC1RRthyrmv4DRT6IGzZc2cJW57jiZHDd2n7wDry0Jv2UFcXpiMwRht71cPcAHdAXQNoWij3WL8-vuXpGNmelNUx0gthoHI_Yld_bHjxY3X_rfvKu06oLZrUmw_8OU1xlrH0FAi08LGbtxGOQ7ZwVb-deewJCQqB2-BFyuf2InCELft9Erb8nEDbPf8HDK7_vvr-x5WNrRT1Uytlndn5_F-DhMppg6lIq4Hft_6kfgEj1NbvvuUdpcL16fM-RP9WveOTZFOSTa0fHcGTIomvkYFGoj9oyasnULUnmFbcwicke9-ELTFPo9Np8vZFkX0S48MywjJ6iE6Q3cwpJgv91uG7Sc_Gf-NtGK8bXoOhX3UN8lywdnwLFiW9oej0Rz8ZXwqiM0OMpX7-fCdeUMSF_0_YLWHjw4rj1gKVRxEy_a07GFmpZ11xDNPdjweSLwi7bZzrLAaLLQlbGtgK68w-fmqMVtrG2mx7oiNk2nbg-d0psRFQp4cgxI1rJWHZe67YGF0MQgC2MqJDhTBFSTL9DhbMM9Rxr5rP5rzjpZDC7X8G3DPrHiH1-PBZQKsdPOirm0EFSnvMJJ8dYP8MiP8IcsLGB1KyueOlBJLdhVGl5dboXXcuoNbtUWVBGHsRtWtwcywn-DCKyH4xZcKWF_twDfD6NDJnEyS7-6c2NZ3rnXJhuReezYe3-frcd7A76ex7C8FwVV_O4sgMRkOAWEtdhVtjFWRt4MEHr5S6eqINl2KrIgkbR5_Db6c7whguzebIRBY8dUGCPuu_xG6e3aYfmibJ9L82TrI5tPifFdKRbCZqwoot_gqOwmQ2L80gB7w4hIY-7DsYKv8MFkg25ySZNgY2YTlhWQCwqo-K57A-2xFhS_4x3MskGqQNCs7e7mR4aD7gxTjnFgi7tXhkJYeTkwYNVLp75VjF0xRniyQ8vpRL-jOpfq0G98oj3qy-2qPRA5WifCweb2kECpFEaVEKF7l9B5ZG3_qLFF47bRwttZZ0o4530QyhUEoNuJ1RAydBBxnDC25xDu60QV-Xvrkp1nvl-OuJisMqe5B7EO-6Oncy4HLfweAWOhYD_tYPd2w-C6f9A7SdxErF56UXXTvst8I1uzKuNJYrX0VltNUbt9D-hH8RKmNYz0tdYhCCtAb75HQXWVP1wfG1SVb7iLFlHF_K6tdoa3jXiMpGvvapueMhQnGLV8UA-1y3nVbY0_1_gA_1lfgTTtVQXx6dfv1Pf3-RmTNDp7KNsKkBh_XBIAa24pKbX4_7gOuM9wAR36i-zEFhelFlfhVKtLt2UBcHhYdGWLrpG3AqLLW7Do8KqLGYx-5jo6XUL9hr2LC6xdU2Dgy-rbRJMl4fLLzNhyvhPKqQfDYwVcTFNeLbA9dxHwKhT91btO6LszqrCVvi4fQYjHqbxWOBtGHH1IhtA2a4IU_d_tQdnA60897hyim_BqBcWn2UR6dEOrZS9PCRw2In0AMO5ycb_3qJduzOokNuHI4qvz2PF_dN8tngJP8ZIcuEjRrvIpL-tuj5GtWTrB5nYz6CSXrD0rRIkxs2aiY3eVbVGSvKNN8ApDc3aTbOeM6LMv_CUlaOxIQl7EtykxYsSW9yFrPbDG6LDa-rlHMAIF8SaLmQMbay2AKMhLU7mIzHLMtGkpcgrf9Cx1gLjpe7rS9G5oSxvikm2fT4TaGfCcG-UDu0FocJ7Ug2Pejmi5GZIIio3G0t-ZJIYZ09wXLCSZicPgO-87kAzR0zcLQzcvJBmvXtu_faGf0vqLCN9wRgpAIHzxP27wAAAP__kUkezQ">