<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/62979>62979</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[DSE][AMDGPU][NVPTX] Eliminate valid store when address is divergent
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
bcl5980
</td>
</tr>
</table>
<pre>
https://godbolt.org/z/bccGETacM
Kernel code is:
```
const long int size = 64;
__global__ void cupy_scan_naive(int *out)
{
__shared__ int smem1[size];
const int lane_id = threadIdx.x % 64;
int x = 1;
for (int j = 1; j < 64; j *= 2)
{
// __syncthreads();
smem1[lane_id] = x;
if (lane_id - j >= 0)
x += smem1[lane_id - j];
}
out[lane_id] = x;
}
```
`smem[lane_id] = x` will be removed because of DSE.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8k9Fv-jYQx_8a5-VUZC5xCA95gAV-mqZOldpNe4sc-wBXJq5ih9L-9ZMdSqGahlAwPn_v-7lzTnpv9j1RzcSaiSaTYzi4oe6UFcuKZ53TH_UhhDfP8hXDLcPt3unO2TBzw57h9pPhtlPq1-ZFqkfGG8ZX0_MPGnqyoJwmMEk9BUt--aa_yvU-gHX9HkwfwJtPApY3UBYsX9-ma9u9dZ20bQsnZzSo8e2j9Ur2bS_NiRhWUc9w5cbAcHmRLi45AADa1h_kQLptJ6sjHedMrKMlE83VDiakeMTKnlqjE1A4DCT17_o8OwNDcQsYk8fj53Rwfre_cwNc2F6v4bT8bUoR17iKEbxiR-EdetpIzY9VfPRqovEMqyi6Gn7VdAFnokme5zukhLuLVF_1PSSgTTzK7yC-PrHkdQz_MIjKu94l8Ob23uJWvJL_gfpW3L8brOTR77-kJYd3Yy10BAMd3Yk0dKTk6AncDprnzeyWYXpmus71Ml_KjOp5WYk8L0tRZIe6KvKdKAuRVwvEeSX5HEvsCiX1YlFVXGSmRo45F7jkghfzYiYJscslFqpQOy0lKzgdpbEza0_HOBiZ8X6kusTlYplZ2ZH1acAQe3qHFGSIcd6GOmoeunHvWcGt8cF_Zwkm2DSZzfMm9lmsV4_Nr6e_pvWffz-9_BN7srHmaHoZCE7SGg0-uIHg_UA9SK0H8h6MB21ONOypD9k42J8zbcJh7GbKHRluo_3l5-FtcK-kAsNtgvYMt6mofwMAAP__cn4vRw">