96 lines · plain
1// RUN: mlir-opt -convert-spirv-to-llvm -verify-diagnostics %s | FileCheck %s --check-prefixes=CHECK-UNKNOWN,CHECK-ALL2// RUN: mlir-opt -convert-spirv-to-llvm='client-api=OpenCL' -verify-diagnostics %s | FileCheck %s --check-prefixes=CHECK-OPENCL,CHECK-ALL3 4// CHECK-OPENCL: llvm.func @pointerUniformConstant(!llvm.ptr<2>)5// CHECK-UNKNOWN: llvm.func @pointerUniformConstant(!llvm.ptr)6spirv.func @pointerUniformConstant(!spirv.ptr<i1, UniformConstant>) "None"7 8// CHECK-OPENCL: llvm.mlir.global external constant @varUniformConstant() {addr_space = 2 : i32} : i19// CHECK-UNKNOWN: llvm.mlir.global external constant @varUniformConstant() {addr_space = 0 : i32} : i110spirv.GlobalVariable @varUniformConstant : !spirv.ptr<i1, UniformConstant>11 12// CHECK-OPENCL: llvm.func @pointerInput(!llvm.ptr<1>)13// CHECK-UNKNOWN: llvm.func @pointerInput(!llvm.ptr)14spirv.func @pointerInput(!spirv.ptr<i1, Input>) "None"15 16// CHECK-OPENCL: llvm.mlir.global external constant @varInput() {addr_space = 1 : i32} : i117// CHECK-UNKNOWN: llvm.mlir.global external constant @varInput() {addr_space = 0 : i32} : i118spirv.GlobalVariable @varInput : !spirv.ptr<i1, Input>19 20// CHECK-ALL: llvm.func @pointerUniform(!llvm.ptr)21spirv.func @pointerUniform(!spirv.ptr<i1, Uniform>) "None"22 23// CHECK-ALL: llvm.func @pointerOutput(!llvm.ptr)24spirv.func @pointerOutput(!spirv.ptr<i1, Output>) "None"25 26// CHECK-ALL: llvm.mlir.global external @varOutput() {addr_space = 0 : i32} : i127spirv.GlobalVariable @varOutput : !spirv.ptr<i1, Output>28 29// CHECK-OPENCL: llvm.func @pointerWorkgroup(!llvm.ptr<3>)30// CHECK-UNKNOWN: llvm.func @pointerWorkgroup(!llvm.ptr)31spirv.func @pointerWorkgroup(!spirv.ptr<i1, Workgroup>) "None"32 33// CHECK-OPENCL: llvm.func @pointerCrossWorkgroup(!llvm.ptr<1>)34// CHECK-UNKNOWN: llvm.func @pointerCrossWorkgroup(!llvm.ptr)35spirv.func @pointerCrossWorkgroup(!spirv.ptr<i1, CrossWorkgroup>) "None"36 37// CHECK-ALL: llvm.func @pointerPrivate(!llvm.ptr)38spirv.func @pointerPrivate(!spirv.ptr<i1, Private>) "None"39 40// CHECK-ALL: llvm.mlir.global private @varPrivate() {addr_space = 0 : i32} : i141spirv.GlobalVariable @varPrivate : !spirv.ptr<i1, Private>42 43// CHECK-ALL: llvm.func @pointerFunction(!llvm.ptr)44spirv.func @pointerFunction(!spirv.ptr<i1, Function>) "None"45 46// CHECK-OPENCL: llvm.func @pointerGeneric(!llvm.ptr<4>)47// CHECK-UNKNOWN: llvm.func @pointerGeneric(!llvm.ptr)48spirv.func @pointerGeneric(!spirv.ptr<i1, Generic>) "None"49 50// CHECK-ALL: llvm.func @pointerPushConstant(!llvm.ptr)51spirv.func @pointerPushConstant(!spirv.ptr<i1, PushConstant>) "None"52 53// CHECK-ALL: llvm.func @pointerAtomicCounter(!llvm.ptr)54spirv.func @pointerAtomicCounter(!spirv.ptr<i1, AtomicCounter>) "None"55 56// CHECK-ALL: llvm.func @pointerImage(!llvm.ptr)57spirv.func @pointerImage(!spirv.ptr<i1, Image>) "None"58 59// CHECK-ALL: llvm.func @pointerStorageBuffer(!llvm.ptr)60spirv.func @pointerStorageBuffer(!spirv.ptr<i1, StorageBuffer>) "None"61 62// CHECK-ALL: llvm.mlir.global external @varStorageBuffer() {addr_space = 0 : i32} : i163spirv.GlobalVariable @varStorageBuffer : !spirv.ptr<i1, StorageBuffer>64 65// CHECK-ALL: llvm.func @pointerCallableDataKHR(!llvm.ptr)66spirv.func @pointerCallableDataKHR(!spirv.ptr<i1, CallableDataKHR>) "None"67 68// CHECK-ALL: llvm.func @pointerIncomingCallableDataKHR(!llvm.ptr)69spirv.func @pointerIncomingCallableDataKHR(!spirv.ptr<i1, IncomingCallableDataKHR>) "None"70 71// CHECK-ALL: llvm.func @pointerRayPayloadKHR(!llvm.ptr)72spirv.func @pointerRayPayloadKHR(!spirv.ptr<i1, RayPayloadKHR>) "None"73 74// CHECK-ALL: llvm.func @pointerHitAttributeKHR(!llvm.ptr)75spirv.func @pointerHitAttributeKHR(!spirv.ptr<i1, HitAttributeKHR>) "None"76 77// CHECK-ALL: llvm.func @pointerIncomingRayPayloadKHR(!llvm.ptr)78spirv.func @pointerIncomingRayPayloadKHR(!spirv.ptr<i1, IncomingRayPayloadKHR>) "None"79 80// CHECK-ALL: llvm.func @pointerShaderRecordBufferKHR(!llvm.ptr)81spirv.func @pointerShaderRecordBufferKHR(!spirv.ptr<i1, ShaderRecordBufferKHR>) "None"82 83// CHECK-ALL: llvm.func @pointerPhysicalStorageBuffer(!llvm.ptr)84spirv.func @pointerPhysicalStorageBuffer(!spirv.ptr<i1, PhysicalStorageBuffer> { spirv.decoration = #spirv.decoration<Aliased> }) "None"85 86// CHECK-ALL: llvm.func @pointerCodeSectionINTEL(!llvm.ptr)87spirv.func @pointerCodeSectionINTEL(!spirv.ptr<i1, CodeSectionINTEL>) "None"88 89// CHECK-OPENCL: llvm.func @pointerDeviceOnlyINTEL(!llvm.ptr<5>)90// CHECK-UNKNOWN: llvm.func @pointerDeviceOnlyINTEL(!llvm.ptr)91spirv.func @pointerDeviceOnlyINTEL(!spirv.ptr<i1, DeviceOnlyINTEL>) "None"92 93// CHECK-OPENCL: llvm.func @pointerHostOnlyINTEL(!llvm.ptr<6>)94// CHECK-UNKNOWN: llvm.func @pointerHostOnlyINTEL(!llvm.ptr)95spirv.func @pointerHostOnlyINTEL(!spirv.ptr<i1, HostOnlyINTEL>) "None"96