| OpCapability Shader | |
| OpCapability RuntimeDescriptorArray | |
| OpExtension "SPV_EXT_descriptor_indexing" | |
| OpMemoryModel Logical GLSL450 | |
| OpEntryPoint GLCompute %main "main" | |
| OpExecutionMode %main LocalSize 1 1 1 | |
| OpName %main "main" | |
| OpName %main_0 "main_0" | |
| OpName %voidfn "voidfn" | |
| OpName %f "f" | |
| OpName %f_ty "f_ty" | |
| OpName %i_ty "i_ty" | |
| OpName %s_ty "s_ty" | |
| OpName %p_i_ty "p_i_ty" | |
| OpName %p_s_ty "p_s_ty" | |
| OpName %si_ty "si_ty" | |
| OpName %p_si_ty "p_si_ty" | |
| OpName %array_si_ty "array_si_ty" | |
| OpName %rtarray_si_ty "rtarray_si_ty" | |
| OpName %p_array_si_ty "p_array_si_ty" | |
| OpName %p_rtarray_si_ty "p_rtarray_si_ty" | |
| %float = OpTypeFloat 32 | |
| %uint = OpTypeInt 32 0 | |
| %int = OpTypeInt 32 1 | |
| %uint_0 = OpConstant %uint 0 | |
| %uint_1 = OpConstant %uint 1 | |
| %uint_3 = OpConstant %uint 3 | |
| %float_0 = OpConstant %float 0 | |
| %v2float = OpTypeVector %float 2 | |
| %v3float = OpTypeVector %float 3 | |
| %v4float = OpTypeVector %float 4 | |
| %13 = OpConstantNull %v2float | |
| %14 = OpConstantNull %v3float | |
| %15 = OpConstantNull %v4float | |
| %void = OpTypeVoid | |
| %voidfn = OpTypeFunction %void | |
| %i_ty = OpTypeImage %float 2D 0 0 0 1 Unknown | |
| %s_ty = OpTypeSampler | |
| %p_i_ty = OpTypePointer UniformConstant %i_ty | |
| %p_s_ty = OpTypePointer UniformConstant %s_ty | |
| %si_ty = OpTypeSampledImage %i_ty | |
| %p_si_ty = OpTypePointer UniformConstant %si_ty | |
| %array_si_ty = OpTypeArray %si_ty %uint_3 | |
| %p_array_si_ty = OpTypePointer UniformConstant %array_si_ty | |
| %rtarray_si_ty = OpTypeRuntimeArray %si_ty | |
| %p_rtarray_si_ty = OpTypePointer UniformConstant %rtarray_si_ty | |
| ; CHECK: %f_ty = OpTypeFunction %v4float %uint %i_ty %s_ty %float | |
| %f_ty = OpTypeFunction %v4float %uint %si_ty %float | |
| ; CHECK: %f = OpFunction %v4float None %f_ty | |
| ; CHECK: OpFunctionParameter %uint | |
| ; CHECK-NEXT: %[[i:\w+]] = OpFunctionParameter %i_ty | |
| ; CHECK-NEXT: %[[s:\w+]] = OpFunctionParameter %s_ty | |
| ; CHECK-NEXT: OpFunctionParameter %float | |
| ; CHECK-NEXT: OpLabel | |
| ; CHECK-NEXT: %[[si:\w+]] = OpSampledImage %si_ty %[[i]] %[[s]] | |
| ; CHECK-NEXT: %200 = OpImageSampleExplicitLod %v4float %[[si]] %13 Lod %float_0 | |
| ; CHECK-NEXT: OpReturnValue %200 | |
| %f = OpFunction %v4float None %f_ty | |
| %100 = OpFunctionParameter %uint | |
| %101 = OpFunctionParameter %si_ty ; replace this | |
| %110 = OpFunctionParameter %float | |
| %120 = OpLabel | |
| %200 = OpImageSampleExplicitLod %v4float %101 %13 Lod %float_0 | |
| OpReturnValue %200 | |
| OpFunctionEnd | |
| %main = OpFunction %void None %voidfn | |
| %main_0 = OpLabel | |
| OpReturn | |
| OpFunctionEnd |