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

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

    <tr>
      <th>Labels</th>
      <td>
            metabug,
            backend:DirectX,
            HLSL,
            bot:HLSL
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          farzonl
      </td>
    </tr>
</table>

<pre>
    - [ ] Implement `WorldToObject` clang builtin,
- [ ] Link `WorldToObject` clang builtin with `hlsl_intrinsics.h`
- [ ] Add sema checks for `WorldToObject` to `CheckHLSLBuiltinFunctionCall` in `SemaChecking.cpp`
- [ ] Add codegen for `WorldToObject` to `EmitHLSLBuiltinExpr` in `CGBuiltin.cpp`
- [ ] Add codegen tests to `clang/test/CodeGenHLSL/builtins/WorldToObject.hlsl`
- [ ] Add sema tests to `clang/test/SemaHLSL/BuiltIns/WorldToObject-errors.hlsl`
- [ ] Create the `int_dx_WorldToObject` intrinsic in `IntrinsicsDirectX.td`
- [ ] Create the `DXILOpMapping` of `int_dx_WorldToObject` to  `152` in `DXIL.td`
- [ ] Create the  `WorldToObject.ll` and `WorldToObject_errors.ll` tests in `llvm/test/CodeGen/DirectX/`

## DirectX

| DXIL Opcode | DXIL OpName | Shader Model | Shader Stages |
| ----------- | ----------- | ------------ | ------------- |
| 152 | WorldToObject | 6.3 | ('library', 'intersection', 'anyhit', 'closesthit') |

## SPIR-V

There is no support for `WorldToObject` when targeting SPIR-V.

## Test Case(s)

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

export float3x4 fn() {
    return WorldToObject();
}
```
## HLSL:

## Syntax


```syntax
float<3@4> WorldToObject();
```


## 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) | [**float**](../WinProg/windows-data-types) | 1 |

## Minimum Shader Model

This function is supported in the following shader models.
|Shader Model | Supported|
|-------------|----------|
|[Shader Model 6.3](https://github.com/microsoft/DirectXShaderCompiler/wiki/Shader-Model-6.3) and higher shader models | yes |

## Shader Stages

* **Library Shader**
* [**Intersection Shader**](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src//direct3dhlsl/../direct3d12/intersection-shader.md)
* [**Anyhit Shader**](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src//direct3dhlsl/../direct3d12/any-hit-shader.md)
* [**Closesthit Shader**](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src//direct3dhlsl/../direct3d12/closest-hit-shader.md)


## See also


- [**Intrinsic Functions (DirectX HLSL)**](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src//direct3dhlsl/../direct3dhlsl/dx-graphics-hlsl-intrinsic-functions.md)
- **See [DXR Functional Spec](https://microsoft.github.io/DirectX-Specs/d3d/Raytracing.html)**
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUV1tv2zoS_jX0CyFBoixfHvzgS9wNkGyKJtj2LaAkWuKGIgWSbuz--sWQsi51mjzsAU5OkCLVcPjN8JsbSY3hpWRshdINSncTerSV0qsD1b-UFJNMFedVgFG6wSjd4du6Eaxm0mI0i74rLYon9ZD9l-UWzSKcCypLnB25sFwiskXRut96x-XLx7vwK7cVqFXCiGcurebS8NyEFZpFI7x1UWDDaorziuUvBh-UfhPeKhBvQelfd493G29nf5S55UpuqRCgxSVoPbKaOk0uyzBvmrds5qpgJZMf2LupuR2Yuzk1ujez_dKKP7JhmbGmRXQ0IbIHGSL7rSrYFybBBiL7lj2DyH7kUAg0_pG5d-CBiRbb-Xp7jR0wrZU2b5rYakYtw7ZigM2lfS5Oz1dUdeFtebntwr3jmuX2R2iL95F3P27vHpp72jRclgCpDu8ZtArDcpySPhgA8b6dqzCHPmeoLK6WnltSvIYn2NsR4md9FT5E9u1REdl7F-CXJIgk-LLiZfMtBlfxQwPZgQff_6a1_36saME0vlcFE0PBo6UlMyBpgYL-B3_wfS0IBkBxStz6iAMnmYWJ-4vIApG54Jmm-ozIHBGQzbm0TBvmarCXUnmuuO2_c6EMM_YiW14sdxQ9fr39FvzHi54qphnmBkuFzbFplLZ_LNLXCqqL6pJZLssWJhxBPzFj8ZYahsjCILL0i9j9cxqgdHOi0BFxDKuzyP-6ggCcPSL74pSP2XmGDHBFg4MnLHj2PHte4IBJmgkWxLOM28CeG2Zw8NDmAzv5wwhFbXKa4oN0rAIdG_AHY6yZPWo5tuSVULJxwdoNXeyP6Yo8WY9ZPUtLT61osMtc5M4TlGwTNI2mKLl5x-7Q4ojec8Pwjplc88YlQZflLp197qQbRNaIrJ9Y3QgoR9jlRSjdIbKorG0MuO-4LrmtjlmYKyi0e55rZdTB7lQOveuVy4RAqxQqg7h4acHMi1VNYHTexssVXVK4IJJ9GF7LilNQatpUPDcBiIKCWupjFtYFHH3o-1bVjZIwMv8ZzvvGwX-xvszbuu__93_9_EUwA6C-HyGy1swish7nj8mpoPrzce_9GvDeeewrbOCww_vO5VetSu9UoV7NIHoXiPiqSd5zyetjPRoPl5bJDT60VyFonW3fZAUMLZh9ByWEeoUeafzuGnab0PP9-8BB0fLxgvB79rwR_E4FpZsR1CxMPgxTfQlTP0M9BhQcF0w7ll44XGacPHDYAWCTpRveFS8rpscncxye-2nZN8XhLL2swCyAP3d-vrVKbdxahUtIbwcjb6z4N2RkDPuHQzjwLLQN7DfX124ufw6nqTwHFbfv-rvt7g2fw-f2HvOm36McYwxTYVQnD0bp016WL28XA5erNvX9HCfLz9fjukt-cGk0pjt80JYPnBulm92Pb93hqMCPDcvfOklX-WF7Jq76HhDALud8UiCy_0bPVtMc3nOVrUXH0KRYJcUyWdIJW8VzEsezaJmSSbViizhe5FmaFsvZnOTJISGHWTpfLBIaLabT6YSvSESm0TyekShO0yiczRZZnsRRRJbTZTSN0DRiNeUihBt_qHQ54cYc2Wq5JPFiImjGhHGvbUJqZml2LBEh8FomJKP5C5MFStbdq6Bd8eG9qCmLkvVFlO4megW2guxYGjSNBDfW9NYtt4Kt-pd7-3S6uhMDXkf_5KjF6p0Eal8zzmyjlb_27d1BgXx_1p8r8r8AAAD__ykz5hU">