blob: 9ede0fb29cd0c1241fecc8c6835444e28669d4fb [file] [log] [blame]
// RUN: clspv %s -o %t.spv -no-inline-single -no-dra
// RUN: spirv-dis %t.spv -o %t.spvasm
// RUN: FileCheck %s < %t.spvasm
// RUN: spirv-val --target-env vulkan1.0 %t.spv
static float foo(__global float* data) {
return data[1];
}
static float bar(__constant float* data) {
return data[2];
}
kernel void baz(__global float* in1, __constant float* in2, __global float* out) {
out[0] = foo(in1 + 1);
out[1] = bar(in2 + 2);
}
// #651: Since __constant and __global are both mapped to StorageBuffer storage
// class, ensure the pointer parameter only receives a single array stride decoration.
//
// CHECK: OpDecorate [[rta_float:%[a-zA-Z0-9_]+]] ArrayStride 4
// CHECK: OpDecorate [[ptr_ssbo_float:%[a-zA-Z0-9_]+]] ArrayStride 4
// CHECK-NOT: OpDecorate [[ptr_ssbo_float]] ArrayStride 4
// CHECK-DAG: [[float:%[a-zA-Z0-9_]+]] = OpTypeFloat 32
// CHECK-DAG: [[ptr_ssbo_float]] = OpTypePointer StorageBuffer [[float]]
// CHECK-DAG: [[rta_float]] = OpTypeRuntimeArray [[float]]