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

    <tr>
        <th>Summary</th>
        <td>
            [SPIR-V] Storage class related validation error
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    
The following LLVM IR:
```llvm
target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
target triple = "spirv64"

@Ptr = addrspace(1) global ptr addrspace(1) null
@Init = private addrspace(2) constant i32 123

define spir_kernel void @Foo() {
entry:
  %0 = load ptr addrspace(1), ptr addrspace(1) @Ptr, align 8
  call void @llvm.memcpy.p1.p2.i64(
    ptr addrspace(1) align 4 %0, ptr addrspace(2) align 1 @Init, i64 4,
    i1 false)
  ret void
}

declare void @llvm.memcpy.p1.p2.i64(
 ptr addrspace(1) noalias nocapture writeonly,
  ptr addrspace(2) noalias nocapture readonly,
  i64, i1 immarg) #1

attributes #1 = { nocallback nofree nounwind willreturn
  memory(argmem: readwrite) }
```
Produces binary that does not validate:
```
llc -O0 <above-llvm-ir>.ll -filetype=obj -o - | spirv-val -
error: line 27: OpEntryPoint interfaces must be OpVariables with Storage Class of Input(1) or Output(3). Found Storage Class 0 for Entry Point id 16.
  %Init = OpVariable %_ptr_UniformConstant_uint UniformConstant %uint_123


```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVcuO4joTfhqzKQUlZXJhwaIbBqml-dWtmf_0tuUkRfCMY0e2E8TbH9mBpi8sjoSIXfW5_NXVwjnZaaINyx9ZvluI0R-N3Sip6SiVWtSmPW9YumPpw_-PBAejlDlJ3cHPn6__g6dfjD_MWlak80-pqZ9FXtiOPLTCCyXOZvTA-A4YIiWyWDH-UKySKSsYf8iKZMIg4ZhMHC-LVXXBrCMGq2TK1kGJecDnxXWZZ0GaZ5hMWRrtxA_iJx7eykHRlYMbpJ2KG-jyv0pfvI0Y0bbWDaIhhlXGcA2dMrVQMHj7XadHpd4tPGk5uzpYOQlPn-AY4I3RzgvtQXKEDPlHCi0dpCYI_N7-ktWkYDKyBbZK98YwrIIBVj7OaNLent-TAMAwT-Pdyoj2LleG2_s-zL4HtVCy01BdbTZC3TiE9C576pvhvByy5YDLkEt8B8N947PJVeR3jwHeQBlcYhhwsljBiuH2Zl5mcBDKUXDlIrTkI79LGMvd53g2Slj6rw7cT68RSgoH2jRi8KMlOFnpyWh1_sDtrk_fj1oS7ZeTkcE2uCb7XtgupgN59tEP4b2V9ejJRdVcx-VjNKxULZq_oM3BEoE2oz5J3cJJKmXJj1ZfL-qpN_bMsBK266ln_CHSid7MdbX70s7z9sWadmzIQS21sGfwR-GhNRT88jAJJVvh6fswmLdKNZA8h7rcitpMlIQcJNIy_mOpFCQHqcifB2J8Z-o_kBhIgJXb2ANTMgkFyaXarTU2kA7zCbAMy-fhR-iBFyNDP2lP9iAC0350HmqC5-FVWClqRQ5O0h_htzdWdARbJZwDc4AnPYz-mmpj4Xn0s4AzXC9hb0bdfjmVwsFYiBfD5eYWsmL5oQ3fp8CNQBC_Dd6-_aPlwdh-exkDb2Ow8EUYwEH-9mU-3I3wot3wds3XYkGbrEzTVYUcy8Vxg22WleviUOdlVZatyOuWrwVPm4bKslrlC7nBFHmWYZphhmmxRI5cpBnlfF1QisRWKfVCqmVsHGO7hXRupE2JVV4tlKhJufh6IGo6QVSGqZrvFnYTE12PnQuNJ513NyteehWfnd8vT7-SV5bv3mPcxBhbUsJTe60uaTTE_C9GqzZH7wcX6g33DPed9MexXjamZ7iPD9D8SQZr_lDjGe4jL8dwH3n_GwAA__-_FhUd">