<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/147395>147395</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[DirectX] `llvm.lifetime.start/.end` intrinsics are not properly encoded in DXIL bitcode
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Icohedron
</td>
</tr>
</table>
<pre>
DXIL bitcode containing `llvm.lifetime.start/end` intrinsics emitted by Clang currently fail to validate under the DXIL validator (dxv). The encoding should be fixed to allow the validator and dxil-dis to read them properly.
Sample shader that Clang emits lifetime intrinsics for
```hlsl
uint2 Foo(uint2 a[2], uint i) {
return a[i];
}
cbuffer Constants {
uint2 arr[2];
}
RWStructuredBuffer<uint> output;
[numthreads(1, 1, 1)]
void CSMain(uint3 Tid : SV_DispatchThreadID) {
output[0] = Foo(arr, Tid.x).x;
}
```
https://godbolt.org/z/haz47M8fz
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx0U9GOqzYQ_ZrhZbTIMQHCAw9JaKSVel-6q_a-VQYPwZVjR_aQm92vr8yye6NWV4oCGuacOWfso2I0Z0fUQnmAssvUzJMP7fPgJ9LBu6z3-q3tvj__jr3hwWvCwTtWxhl3RqiEtbdLbs1IbC6UR1aBQZ7IaagEGsfBuGiGiHQxzKSxf8OjVe6MwxwCObZvOCpjkT3elDVaMeHsNAXkiXAZvNZ9QJA7fb-BbHJ8nQjJDV4nHXHys9XYE47mTjqRKWv9j4XjJ1w5jfpu7JM2MfUEUjq1XPAa_JWCfctB7EHsX9TlagnjpD6EKF5FJxcRP-0--ht9SNhKfPwmGy2I_WwcSzx5D3L38a6gPEgoO5BHTBU0IBuE-gBijxiI5-CWJpOailSGugOxH_p5HCng0bvIynH8Aq3EIXxSP6D--OuFwzzwHEgfFgIojgkAxW_oZ77OvLaXBzdfeEo7iSB3myTw869JrGJ_80bj8eWbMm71U-Cr0QjFHl_-_Lsz8ap4mF4Xkufu0dg6qjwIKDuEoluXklTLY2LJ7-lc74_iv7YJYj8xXyMUe5AnkKez1723nPtwBnl6B3ma1Pu2_rYb3zPdFropGpVRu6nLTSM3VV1mU7vVuldVX252JY27vlGbqhmqsq7qUolC7DLTSiFLUYtainJbbPOiJ10NRaWramxqXcNW0EUZmy-X3odzZmKcqd1s66IpM6t6snFJkpSOfuDyFWQ6kyy0CfTUz-cIW2FN5PiThg3bJYKdCTTw92VHv8pW_v9wqUDoPH9d449kkEbj8DG72Rxs-59NGp7mPh_8BeQpDVwfT9fg_6EhDVxsRJCn1eetlf8GAAD__9aqV6U">