<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/144608>144608</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[DirectX] DXIL Data Scalarization is not scalarizing GEP for an array of vectors
</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>
The following shader compiles without error under clang, but fails validation
https://godbolt.org/z/Tnq16cMxh
```hlsl
uint foo(uint2 v[2], uint i) { return v[i]; }
RWStructuredBuffer<uint> output;
[numthreads(1, 1, 1)]
void CSMain(uint3 Tid : SV_DispatchThreadID) {
uint2 v[2] = {Tid.xy, Tid.yx};
output[Tid.z] = foo(v, Tid.z);
}
```
Validation error:
```
Invalid record
Validation failed.
```
The validation error is likely due to this GEP in the resulting DXIL
```llvm
%13 = getelementptr inbounds nuw [2 x <2 x i32>], ptr %12, i32 0, i32 %7, !dbg !106
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJxkU81u4zYQfprRZbAGRVqyddDBjuIiQBcoGmO7t4ISRxZbmnT548R5-oKSs92kACEONX_fzDcjQ9AnS9RCtYeqK2SKk_Pt0-AmUt7Zonfq1h4nwtEZ4160PWGYpCKPgztftKGALzpOLkUk753HZGelkfYE_AH7FHGU2gS8SqOVjNpZYLspxksAsQN-AH44OdU7E1fOn4Af3oAfjvafsh6-vk7AdvnUbDmTCQbYLmkbcXQO-DaLHK9Q7TlUXU45KzXwBmGzR08xeTsb6Gwg9gibDtju9z-eo09DTJ7UPo0jeRAP2RfEI7oULymC2Ofk1d6mc5w8SRWAb8uc5P3TQNUhsN3VaYUPz1-ltndQAo9aIYgdPn_7s9PhIuMwHecoT90dHbAd4scKEESXVUetVq-3nCVLt9cMWiwOd3DVbPP27rO04_ru8ZaxLfjncn-0cOnotx9sLLxlLj4aPdmZMfQ0OK8-umRGSa3-HzZPyvVTaNQBjf6bzA1VIowO46QD_vL4G2qLcSL0FJKJeba670-__hzVmOs5v3lVirnKE0UydCYbL9Gjtr1LVgW06QVzA_EVQTzkSwsO4vE-Etk2x-D5oQVH9i4ArzZZBl6q_pSvktU_IyhUK1QjGllQW24qVjbVljfF1Na1YlQ3Tb0ZeD8y2dd90wvORlJ8EIoVuuWMV6wuN7wUjDcrUqRqzreb9VYIEhzWjM5Sm1WuMg9_oUNI1Jbrdc22hZE9mTBvJueWXnDWAs9TUvg2O33p0ynAmhkdYvgvTNTRzCvdaU9D_J5HJHcWOxklPg_SSK_fFop0QOsihvvPTEJmZnQepUXpvbyhG_FKQ3Q-FMmb9tPy6jilfjW4M_DDzNdyfbl49xcNEfhhBh6AH-6VXVv-bwAAAP__1kxcHw">