@@ -66,3 +66,27 @@ spirv.module Logical GLSL450 attributes {spirv.target_env = #spirv.target_env<#s
66
66
// CHECK: spirv.EntryPoint "GLCompute" [[FN]], [[VAR0]], [[VAR1]]
67
67
// CHECK: spirv.ExecutionMode [[FN]] "LocalSize", 32, 1, 1
68
68
} // end spirv.module
69
+
70
+ // -----
71
+
72
+ module {
73
+ spirv.module Logical GLSL450 attributes {spirv.target_env = #spirv.target_env <#spirv.vce <v1.6 , [Shader , Sampled1D ], []>, #spirv.resource_limits <>>} {
74
+ // CHECK-DAG: spirv.GlobalVariable @[[IMAGE_GV:.*]] bind(0, 0) : !spirv.ptr<!spirv.sampled_image<!spirv.image<f32, Dim1D, DepthUnknown, NonArrayed, SingleSampled, NeedSampler, R32f>>, UniformConstant>
75
+ // CHECK: spirv.func @read_image
76
+ spirv.func @read_image (%arg0: !spirv.ptr <!spirv.sampled_image <!spirv.image <f32 , Dim1D , DepthUnknown , NonArrayed , SingleSampled , NeedSampler , R32f >>, UniformConstant > {spirv.interface_var_abi = #spirv.interface_var_abi <(0 , 0 )>}, %arg1: !spirv.ptr <!spirv.struct <(!spirv.array <1 x f32 , stride =4 > [0 ])>, StorageBuffer > {spirv.interface_var_abi = #spirv.interface_var_abi <(0 , 1 )>}) " None" attributes {spirv.entry_point_abi = #spirv.entry_point_abi <workgroup_size = [1 , 1 , 1 ]>} {
77
+ // CHECK: %[[IMAGE_ADDR:.*]] = spirv.mlir.addressof @[[IMAGE_GV]] : !spirv.ptr<!spirv.sampled_image<!spirv.image<f32, Dim1D, DepthUnknown, NonArrayed, SingleSampled, NeedSampler, R32f>>, UniformConstant>
78
+ %cst0_i32 = spirv.Constant 0 : i32
79
+ // CHECK: spirv.Load "UniformConstant" %[[IMAGE_ADDR]]
80
+ %0 = spirv.Load " UniformConstant" %arg0 : !spirv.sampled_image <!spirv.image <f32 , Dim1D , DepthUnknown , NonArrayed , SingleSampled , NeedSampler , R32f >>
81
+ %1 = spirv.Image %0 : !spirv.sampled_image <!spirv.image <f32 , Dim1D , DepthUnknown , NonArrayed , SingleSampled , NeedSampler , R32f >>
82
+ %2 = spirv.ImageFetch %1 , %cst0_i32 : !spirv.image <f32 , Dim1D , DepthUnknown , NonArrayed , SingleSampled , NeedSampler , R32f >, i32 -> vector <4 xf32 >
83
+ %3 = spirv.CompositeExtract %2 [0 : i32 ] : vector <4 xf32 >
84
+ %cst0_i32_0 = spirv.Constant 0 : i32
85
+ %cst0_i32_1 = spirv.Constant 0 : i32
86
+ %cst1_i32 = spirv.Constant 1 : i32
87
+ %4 = spirv.AccessChain %arg1 [%cst0_i32_0 , %cst0_i32 ] : !spirv.ptr <!spirv.struct <(!spirv.array <1 x f32 , stride =4 > [0 ])>, StorageBuffer >, i32 , i32 -> !spirv.ptr <f32 , StorageBuffer >
88
+ spirv.Store " StorageBuffer" %4 , %3 : f32
89
+ spirv.Return
90
+ }
91
+ }
92
+ }
0 commit comments