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

    <tr>
        <th>Summary</th>
        <td>
            [SPIR-V] Inconsistent representation of SPIR-V builtins types as either simple types or pointers to types
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:SPIR-V
      </td>
    </tr>

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

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

<pre>
    SPIRVEmitIntrinsics pass inconsistently assigns types to values representing SPIR-V or OpenCL builtin using either `spv_assign_type` or `spv_assign_ptr_type`. This leads to issues in compilation e.g. when casting the types between address spaces or during runtime e.g. when passing to builtin functions.

Example of a kernel with the issue:
```
define spir_kernel void @foo() {
  %event = alloca ptr, align 8
  %call = call spir_func ptr @_Z29async_work_group_strided_copyPU3AS3hPU3AS1Khmm9ocl_event(ptr null, ptr null, i64 1, i64 1, ptr null)
  store ptr %call, ptr %event, align 8
 %event.ascast = addrspacecast ptr %event to ptr addrspace(4)
  call spir_func void @_Z17wait_group_eventsiPU3AS49ocl_event(i32 2, ptr addrspace(4) %event.ascast)
  ret void
}

declare spir_func ptr @_Z29async_work_group_strided_copyPU3AS3hPU3AS1Khmm9ocl_event(ptr, ptr, i64, i64, ptr)

declare spir_func void @_Z17wait_group_eventsiPU3AS49ocl_event(i32, ptr addrspace(4))
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0VM-vozYQ_mucy-hF4EACBw5vNxvpqZW66rZ72AsyZhLcGBt5TNL0r69sYB_vVe2h0kpRbObX980MfIJIXQxixfIPjPNeyU7oQdBfV3unq2Kcs_y4EaPvrKveezeNbR_Vl88vv3791Cv_YrxThpQkGAQRKCOtIUUejdcPmKAI_GNAAm_hJvSIBA4Hh4TGK3OBUOzpK1gHvwxoPv4Mzai0VwZGCm5UvkMHbJ_QcKuninUoyPZJSHrrGLxbnFv4rVMEGkUbsRVRwFYGpO0HpYVX1gBuL1u4d2hACop8fIcz4Qb9HdGAaFuHRECDkEgBtB1dCHWj8arHVZEwhVjEfm_jPBoZoGjLkiNLnqf_T3-KftAI9gwCrugMargr30X4SJXt5lC2T-ZffGzxrAwCDcrVc-LNqhZYlpytZbxgvAR2-DBFAzCe4w2NB7Y7gtDaSgGDd4x_BKHVxUCxipRC6xgYLxEj8A8JAaD-xktBDyPru3XX-uLsONTknWqxraUdHp9_3z1_2XXxSH_q-r60UtcRn_EiVDGj1gF7fVf7DNI3l1dvubAjbx1ORCaeS9zS4D87WjxbQWG70wTa1sVFRss6PywtPH-PYLzIVgTejWQZev0tPdyF8vM0YilScQLZm-7VjgNfSL8Hec91hevQR7D5bTgc1-9Ri1ILhz9iVTPVeS-rIxrL_2bxf6bzb7N5BVu-hE1b7dpyV4oNVukhzfc8SYt801V7gcU5Ox_2RYH5vsmwKBIuxTmVaSuEwI2qeMKzJE936SEps3xbZBKbRJZJcRBtVpQsS7AXSm-1vvVb6y6b-DVWZVqWh40WDWqapbMR8oqmZbvnScNm6XRVSH1qxguxLNGKPL0W88rrKL1zSn6El5VovkrjJE_2vOjjLCeLmApalJFUFJLJbB0MVhmPLmpeNG5Gp6vO-4GCpPAT46eL8t3YbKXtGT8FbvPxNDj7B0rP-GmSS8ZPsfG_AwAA__9RsgsJ">