Skip to content

[SPIR-V] Inconsistent representation of SPIR-V builtins types as either simple types or pointers to types #91997

Open
@michalpaszkowski

Description

@michalpaszkowski

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))

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions