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

    <tr>
        <th>Summary</th>
        <td>
            [DirectX] Legalize memset
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    DML shaders a breaking because memset isn't a supported intrinsic in the backend. We need to legalize memory intrinsics like memset  to create valid DXIL.

example LLVMIR we need to legalize
```llvm
call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %accum.i.flat) #3
call void @llvm.memset.p0.i32(ptr nonnull align 4 dereferenceable(128) %accum.i.flat, i8 0, i32 128, i1 false), !tbaa !17
...
_Z6CSMainDv3_jS_.exit: ; preds = %for.cond.cleanup193.i
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %accum.i.flat) #3
  ret void
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyck81q5DgQgJ-mfCkiZMnutg8-dGIaAp3LBnbDXoIsld1KZNlIcm-Sp1_sZCaBDHMYEBQqqr76VzHawRM1UF6DEL0Kb5N3IASUbaaWdJ5C86HMusm8Nu3dCeNZGQoRFXaB1LP1A3ak1RIJRxojJbTRg9gnVBiXeZ5CIoPWp2B9tBqtx3Qm7JR-Jm8Y_kPoiQymCR0Nytm3DTSF10-niM4-_-SvpjqQSoQX5azB9uH2xIAfgB_oRY2zIzyd_r67_Qv_-w5f7Xb8_Tl3GYEftHIOL5M1CMWmY872lOxILCYVEps5iMruCsxFBeIG5xTQT94vziGIUmm9jMyy3qkEokYQUv4S-14AmzmzUoCovnKUs4PHAg0F6imQ16Q6RyCqLWj9PdAN2gr5JqX4kZrNsVcuEoh6_YLIU6fUKvM98ANja6Me_93d3N8p69uLfHy6f2T0YhPIA4K8xjmQiQiyXSP2U2B68oZpR8ovc15LZoEfEH_TtHWuf9YyxEBpo34dU2YaaWpZq4yafF8UdVFIzrNzo-s6N3pfCSnzjusdlz0XZV_lXZ6XO06ZbQQXJS_yioui5JzVRne8qFRdyl1pKgkFp1FZx7YKpjBkNsaFmlzuRCEzpzpycbuPss1Cs1pddcsQ15ptTPHTL9nktktqbSCdHqBs8fRloSOlbAmuOac0R5AHEEcQx8Gm89IxPY0gjts6vourOUxPpBOI45ZQBHH8yOnSiP8DAAD__4swK0c">