blob: c609e9f4d7bade09e7ee071eab8922af39728ab8 [file] [log] [blame]
// Test the -hack-undef option, with an undef image value.
// We must keep the undef image value.
// See https://github.com/google/clspv/issues/95
// RUN: clspv %s -o %t.spv -hack-undef -no-inline-single -keep-unused-arguments
// RUN: spirv-dis -o %t2.spvasm %t.spv
// RUN: FileCheck %s < %t2.spvasm
// RUN: spirv-val --target-env vulkan1.0 %t.spv
// This function takes an image argument but does not use it.
// The optimizer is smart enough to have the call pass an undef
// image operand.
float2 bar(float2 coord, read_only image2d_t im) {
return coord + (float2)(2.5, 2.5);
}
void kernel foo(global float4* A, read_only image2d_t im, sampler_t sam, float2 coord)
{
*A = read_imagef(im, sam, bar(coord, im));
}
// CHECK-DAG: [[_float:%[a-zA-Z0-9_]+]] = OpTypeFloat 32
// CHECK-DAG: [[used:%[a-zA-Z0-9_]+]] = OpTypeImage [[_float]] 2D 0 0 0 1 Unknown
// CHECK-DAG: [[unused:%[a-zA-Z0-9_]+]] = OpTypeImage [[_float]] 2D 0 0 0 2 Unknown
// CHECK-DAG: [[_24:%[a-zA-Z0-9_]+]] = OpUndef [[unused]]
// CHECK: [[_36:%[a-zA-Z0-9_]+]] = OpFunction
// CHECK: [[_38:%[a-zA-Z0-9_]+]] = OpFunctionParameter [[unused]]
// CHECK: [[_48:%[a-zA-Z0-9_]+]] = OpFunctionCall {{.*}} [[_36]] {{.*}} [[_24]]