@@ -115,3 +115,45 @@ func.func @image_query_size_error_result2(%arg0 : !spirv.image<f32, Buffer, NoDe
115115}
116116
117117// -----
118+
119+ //===----------------------------------------------------------------------===//
120+ // spirv.ImageWrite
121+ //===----------------------------------------------------------------------===//
122+
123+ func.func @image_write (%arg0 : !spirv.image <f32 , Dim2D , NoDepth , NonArrayed , SingleSampled , NoSampler , Rgba16 >, %arg1 : vector <2 xsi32 >, %arg2 : vector <4 xf32 >) -> () {
124+ // CHECK: spirv.ImageWrite %arg0 : !spirv.image<f32, Dim2D, NoDepth, NonArrayed, SingleSampled, NoSampler, Rgba16>, %arg1 : vector<2xsi32>, %arg2 : vector<4xf32>
125+ spirv.ImageWrite %arg0 : !spirv.image <f32 , Dim2D , NoDepth , NonArrayed , SingleSampled , NoSampler , Rgba16 >, %arg1 : vector <2 xsi32 >, %arg2 : vector <4 xf32 >
126+ spirv.Return
127+ }
128+
129+ // -----
130+
131+ func.func @image_write_scalar_texel (%arg0 : !spirv.image <f32 , Dim2D , NoDepth , NonArrayed , SingleSampled , NoSampler , Rgba16 >, %arg1 : vector <2 xsi32 >, %arg2 : f32 ) -> () {
132+ // CHECK: spirv.ImageWrite %arg0 : !spirv.image<f32, Dim2D, NoDepth, NonArrayed, SingleSampled, NoSampler, Rgba16>, %arg1 : vector<2xsi32>, %arg2 : f32
133+ spirv.ImageWrite %arg0 : !spirv.image <f32 , Dim2D , NoDepth , NonArrayed , SingleSampled , NoSampler , Rgba16 >, %arg1 : vector <2 xsi32 >, %arg2 : f32
134+ spirv.Return
135+ }
136+
137+ // -----
138+
139+ func.func @image_write_need_sampler (%arg0 : !spirv.image <f32 , Dim2D , NoDepth , NonArrayed , SingleSampled , NeedSampler , Rgba16 >, %arg1 : vector <2 xsi32 >, %arg2 : vector <4 xf32 >) -> () {
140+ // expected-error @+1 {{the sampled operand of the underlying image must be 0 or 2}}
141+ spirv.ImageWrite %arg0 : !spirv.image <f32 , Dim2D , NoDepth , NonArrayed , SingleSampled , NeedSampler , Rgba16 >, %arg1 : vector <2 xsi32 >, %arg2 : vector <4 xf32 >
142+ spirv.Return
143+ }
144+
145+ // -----
146+
147+ func.func @image_write_subpass_data (%arg0 : !spirv.image <f32 , SubpassData , NoDepth , NonArrayed , SingleSampled , NoSampler , Rgba16 >, %arg1 : vector <2 xsi32 >, %arg2 : vector <4 xf32 >) -> () {
148+ // expected-error @+1 {{the Dim operand of the underlying image must not be SubpassData}}
149+ spirv.ImageWrite %arg0 : !spirv.image <f32 , SubpassData , NoDepth , NonArrayed , SingleSampled , NoSampler , Rgba16 >, %arg1 : vector <2 xsi32 >, %arg2 : vector <4 xf32 >
150+ spirv.Return
151+ }
152+
153+ // -----
154+
155+ func.func @image_write_texel_type_mismatch (%arg0 : !spirv.image <f32 , Dim2D , NoDepth , NonArrayed , SingleSampled , NoSampler , Rgba16 >, %arg1 : vector <2 xsi32 >, %arg2 : vector <4 xi32 >) -> () {
156+ // expected-error @+1 {{the texel component type must match the image sampled type}}
157+ spirv.ImageWrite %arg0 : !spirv.image <f32 , Dim2D , NoDepth , NonArrayed , SingleSampled , NoSampler , Rgba16 >, %arg1 : vector <2 xsi32 >, %arg2 : vector <4 xi32 >
158+ spirv.Return
159+ }
0 commit comments