@@ -304,6 +304,56 @@ func.func @sample_implicit_proj_dref(%arg0 : !spirv.sampled_image<!spirv.image<f
304
304
305
305
// -----
306
306
307
+ //===----------------------------------------------------------------------===//
308
+ // spirv.ImageFetch
309
+ //===----------------------------------------------------------------------===//
310
+
311
+ func.func @image_fetch (%arg0: !spirv.image <f32 , Dim2D , NoDepth , NonArrayed , SingleSampled , NeedSampler , Rgba8 >, %arg1: vector <2 xsi32 >) -> () {
312
+ // CHECK: {{%.*}} = spirv.ImageFetch {{%.*}}, {{%.*}} : !spirv.image<f32, Dim2D, NoDepth, NonArrayed, SingleSampled, NeedSampler, Rgba8>, vector<2xsi32> -> vector<4xf32>
313
+ %0 = spirv.ImageFetch %arg0 , %arg1 : !spirv.image <f32 , Dim2D , NoDepth , NonArrayed , SingleSampled , NeedSampler , Rgba8 >, vector <2 xsi32 > -> vector <4 xf32 >
314
+ spirv.Return
315
+ }
316
+
317
+ // -----
318
+
319
+ func.func @image_fetch_dim_cube (%arg0: !spirv.image <f32 , Cube , NoDepth , NonArrayed , SingleSampled , NeedSampler , Rgba8 >, %arg1: vector <2 xsi32 >) -> () {
320
+ // expected-error @+1 {{op failed to verify that the Dim operand of the underlying image must not be Cube}}
321
+ %0 = spirv.ImageFetch %arg0 , %arg1 : !spirv.image <f32 , Cube , NoDepth , NonArrayed , SingleSampled , NeedSampler , Rgba8 >, vector <2 xsi32 > -> vector <4 xf32 >
322
+ spirv.Return
323
+ }
324
+
325
+ // -----
326
+
327
+ func.func @image_fetch_no_sampler (%arg0: !spirv.image <f32 , Dim2D , NoDepth , NonArrayed , SingleSampled , NoSampler , Rgba8 >, %arg1: vector <2 xsi32 >) -> () {
328
+ // expected-error @+1 {{op failed to verify that the sampled operand of the underlying image must be NeedSampler}}
329
+ %0 = spirv.ImageFetch %arg0 , %arg1 : !spirv.image <f32 , Dim2D , NoDepth , NonArrayed , SingleSampled , NoSampler , Rgba8 >, vector <2 xsi32 > -> vector <4 xf16 >
330
+ spirv.Return
331
+ }
332
+
333
+ // -----
334
+
335
+ func.func @image_fetch_type_mismatch (%arg0: !spirv.image <f32 , Dim2D , NoDepth , NonArrayed , SingleSampled , NeedSampler , Rgba8 >, %arg1: vector <2 xsi32 >) -> () {
336
+ // expected-error @+1 {{op failed to verify that the result component type must match the image sampled type}}
337
+ %0 = spirv.ImageFetch %arg0 , %arg1 : !spirv.image <f32 , Dim2D , NoDepth , NonArrayed , SingleSampled , NeedSampler , Rgba8 >, vector <2 xsi32 > -> vector <4 xf16 >
338
+ spirv.Return
339
+ }
340
+
341
+ // -----
342
+
343
+ func.func @image_fetch_2d_result (%arg0: !spirv.image <f32 , Dim2D , NoDepth , NonArrayed , SingleSampled , NeedSampler , Rgba8 >, %arg1: vector <2 xsi32 >) -> () {
344
+ // expected-error @+1 {{op result #0 must be vector of 16/32/64-bit float values of length 4 or vector of 8/16/32/64-bit integer values of length 4, but got 'vector<2xf32>'}}
345
+ %0 = spirv.ImageFetch %arg0 , %arg1 : !spirv.image <f32 , Dim2D , NoDepth , NonArrayed , SingleSampled , NeedSampler , Rgba8 >, vector <2 xsi32 > -> vector <2 xf32 >
346
+ spirv.Return
347
+ }
348
+
349
+ // -----
350
+
351
+ func.func @image_fetch_float_coords (%arg0: !spirv.image <f32 , Dim2D , NoDepth , NonArrayed , SingleSampled , NeedSampler , Rgba8 >, %arg1: vector <2 xf32 >) -> () {
352
+ // expected-error @+1 {{op operand #1 must be 8/16/32/64-bit integer or vector of 8/16/32/64-bit integer values of length 2/3/4/8/16, but got 'vector<2xf32>'}}
353
+ %0 = spirv.ImageFetch %arg0 , %arg1 : !spirv.image <f32 , Dim2D , NoDepth , NonArrayed , SingleSampled , NeedSampler , Rgba8 >, vector <2 xf32 > -> vector <2 xf32 >
354
+ spirv.Return
355
+ }
356
+
307
357
//===----------------------------------------------------------------------===//
308
358
// spirv.ImageOperands: Bias
309
359
//===----------------------------------------------------------------------===//
0 commit comments