blob: 668fdb15ab63ba36e0d7d5fbb890c916a608414b [file] [log] [blame]
// RUN: clspv %s -o %t.spv -cluster-pod-kernel-args
// RUN: spirv-dis %t.spv -o %t.spvasm
// RUN: FileCheck %s < %t.spvasm
// RUN: clspv-reflection %t.spv -o %t.map
// RUN: FileCheck --check-prefix=MAP %s < %t.map
// RUN: spirv-val --target-env vulkan1.0 %t.spv
//
// RUN: clspv %s -o %t2.spv -cluster-pod-kernel-args=0
// RUN: spirv-dis %t2.spv -o %t2.spvasm
// RUN: FileCheck %s < %t2.spvasm
// RUN: clspv-reflection %t2.spv -o %t2.map
// RUN: FileCheck --check-prefix=MAP %s < %t2.map
// RUN: spirv-val --target-env vulkan1.0 %t2.spv
kernel void foo(global int* out, local int* l1, int a, int b, local int* l2) {
*out = *l1 + a + b + *l2;
}
kernel void bar(global int* out, local int* l1, int a, int b, local int* l2) {
*out = *l1 - a - b - *l2;
}
// MAP: kernel,foo,arg,l1,argOrdinal,1,argKind,local,arrayElemSize,4,arrayNumElemSpecId,3
// MAP: kernel,foo,arg,l2,argOrdinal,4,argKind,local,arrayElemSize,4,arrayNumElemSpecId,4
// CHECK: OpDecorate [[spec_id_3:%[a-zA-Z0-9_]+]] SpecId 3
// CHECK: OpDecorate [[spec_id_4:%[a-zA-Z0-9_]+]] SpecId 4
// CHECK-DAG: [[uint:%[a-zA-Z0-9_]+]] = OpTypeInt 32 0
// CHECK-DAG: [[uint_0:%[a-zA-Z0-9_]+]] = OpConstant [[uint]] 0
// CHECK-DAG: [[spec_id_3]] = OpSpecConstant [[uint]] 1
// CHECK-DAG: [[array_3:%[a-zA-Z0-9_]+]] = OpTypeArray [[uint]] [[spec_id_3]]
// CHECK-DAG: [[ptr_id_3:%[a-zA-Z0-9_]+]] = OpTypePointer Workgroup [[array_3]]
// CHECK-DAG: [[spec_id_4]] = OpSpecConstant [[uint]] 1
// CHECK-DAG: [[array_4:%[a-zA-Z0-9_]+]] = OpTypeArray [[uint]] [[spec_id_4]]
// CHECK-DAG: [[ptr_id_4:%[a-zA-Z0-9_]+]] = OpTypePointer Workgroup [[array_4]]
// CHECK-DAG: [[ptr:%[a-zA-Z0-9_]+]] = OpTypePointer Workgroup [[uint]]
// CHECK-DAG: [[var_3:%[a-zA-Z0-9_]+]] = OpVariable [[ptr_id_3]] Workgroup
// CHECK-DAG: [[var_4:%[a-zA-Z0-9_]+]] = OpVariable [[ptr_id_4]] Workgroup
// CHECK: [[gep_3:%[a-zA-Z0-9_]+]] = OpAccessChain [[ptr]] [[var_3]] [[uint_0]]
// CHECK: [[gep_4:%[a-zA-Z0-9_]+]] = OpAccessChain [[ptr]] [[var_4]] [[uint_0]]
// CHECK: OpLoad [[uint]] [[gep_3]]
// CHECK: OpLoad [[uint]] [[gep_4]]