// RUN: mlir-opt -decorate-spirv-composite-type-layout -split-input-file -verify-diagnostics %s -o - | FileCheck %s spv.module "Logical" "GLSL450" { // CHECK: spv.globalVariable @var0 bind(0, 1) : !spv.ptr [4], f32 [12]>, Uniform> spv.globalVariable @var0 bind(0,1) : !spv.ptr, f32>, Uniform> // CHECK: spv.globalVariable @var1 bind(0, 2) : !spv.ptr [0], f32 [256]>, StorageBuffer> spv.globalVariable @var1 bind(0,2) : !spv.ptr, f32>, StorageBuffer> // CHECK: spv.globalVariable @var2 bind(1, 0) : !spv.ptr [0], f32 [256]> [0], i32 [260]>, StorageBuffer> spv.globalVariable @var2 bind(1,0) : !spv.ptr, f32>, i32>, StorageBuffer> // CHECK: spv.globalVariable @var3 : !spv.ptr [8]> [72]> [0], f32 [1152]>, StorageBuffer> spv.globalVariable @var3 : !spv.ptr>>, f32>, StorageBuffer> // CHECK: spv.globalVariable @var4 bind(1, 2) : !spv.ptr [0], f32 [16], i1 [20]> [0], i1 [24]>, StorageBuffer> spv.globalVariable @var4 bind(1,2) : !spv.ptr, f32, i1>, i1>, StorageBuffer> // CHECK: spv.globalVariable @var5 bind(1, 3) : !spv.ptr [0]>, StorageBuffer> spv.globalVariable @var5 bind(1,3) : !spv.ptr>, StorageBuffer> func @kernel() -> () { %c0 = spv.constant 0 : i32 // CHECK: {{%.*}} = spv._address_of @var0 : !spv.ptr [4], f32 [12]>, Uniform> %0 = spv._address_of @var0 : !spv.ptr, f32>, Uniform> // CHECK: {{%.*}} = spv.AccessChain {{%.*}}[{{%.*}}] : !spv.ptr [4], f32 [12]>, Uniform> %1 = spv.AccessChain %0[%c0] : !spv.ptr, f32>, Uniform> spv.Return } } // ----- spv.module "Logical" "GLSL450" { // CHECK: spv.globalVariable @var0 : !spv.ptr [0], i1 [16]> [0], i1 [24]> [0], i1 [32]> [0], i1 [40]>, Uniform> spv.globalVariable @var0 : !spv.ptr, i1>, i1>, i1>, i1>, Uniform> // CHECK: spv.globalVariable @var1 : !spv.ptr [8], f32 [24]> [0], f32 [32]>, Uniform> spv.globalVariable @var1 : !spv.ptr, f32>, f32>, Uniform> // CHECK: spv.globalVariable @var2 : !spv.ptr [128]> [8]> [8], f32 [2064]> [0], f32 [2072]>, Uniform> spv.globalVariable @var2 : !spv.ptr>>, f32>, f32>, Uniform> // CHECK: spv.globalVariable @var3 : !spv.ptr [0], i1 [512]> [0], i1 [520]>, Uniform> spv.globalVariable @var3 : !spv.ptr, i1>, i1>, Uniform> // CHECK: spv.globalVariable @var4 : !spv.ptr [8], i1 [24]>, Uniform> spv.globalVariable @var4 : !spv.ptr, i1>, Uniform> // CHECK: spv.globalVariable @var5 : !spv.ptr [8], i1 [24]>, Uniform> spv.globalVariable @var5 : !spv.ptr, i1>, Uniform> // CHECK: spv.globalVariable @var6 : !spv.ptr [8], i1 [24]>, Uniform> spv.globalVariable @var6 : !spv.ptr, i1>, Uniform> // CHECK: spv.globalVariable @var7 : !spv.ptr [0], i1 [16]> [8], i1 [32]>, Uniform> spv.globalVariable @var7 : !spv.ptr, i1>, i1>, Uniform> } // ----- spv.module "Logical" "GLSL450" { // CHECK: spv.globalVariable @var0 : !spv.ptr [0], f32 [8]>, StorageBuffer> spv.globalVariable @var0 : !spv.ptr, f32>, StorageBuffer> // CHECK: spv.globalVariable @var1 : !spv.ptr [0], f32 [12]>, StorageBuffer> spv.globalVariable @var1 : !spv.ptr, f32>, StorageBuffer> // CHECK: spv.globalVariable @var2 : !spv.ptr [0], f32 [16]>, StorageBuffer> spv.globalVariable @var2 : !spv.ptr, f32>, StorageBuffer> } // ----- spv.module "Logical" "GLSL450" { // CHECK: spv.globalVariable @emptyStructAsMember : !spv.ptr [0]>, StorageBuffer> spv.globalVariable @emptyStructAsMember : !spv.ptr>, StorageBuffer> // CHECK: spv.globalVariable @arrayType : !spv.ptr>, StorageBuffer> spv.globalVariable @arrayType : !spv.ptr>, StorageBuffer> // CHECK: spv.globalVariable @InputStorage : !spv.ptr>, Input> spv.globalVariable @InputStorage : !spv.ptr>, Input> // CHECK: spv.globalVariable @customLayout : !spv.ptr, Uniform> spv.globalVariable @customLayout : !spv.ptr, Uniform> // CHECK: spv.globalVariable @emptyStruct : !spv.ptr, Uniform> spv.globalVariable @emptyStruct : !spv.ptr, Uniform> } // ----- spv.module "Logical" "GLSL450" { // CHECK: spv.globalVariable @var0 : !spv.ptr, PushConstant> spv.globalVariable @var0 : !spv.ptr, PushConstant> // CHECK: spv.globalVariable @var1 : !spv.ptr, PhysicalStorageBuffer> spv.globalVariable @var1 : !spv.ptr, PhysicalStorageBuffer> }