1; RUN: llc -O0 -mtriple=spirv-unknown-unknown %s -o - | FileCheck %s 2 3; CHECK-DAG: [[uint:%[0-9]+]] = OpTypeInt 32 0 4 5%A = type { 6 i32, 7 i32 8} 9; CHECK-DAG: [[A:%[0-9]+]] = OpTypeStruct [[uint]] [[uint]] 10 11%B = type { 12 %A, 13 i32, 14 %A 15} 16; CHECK-DAG: [[B:%[0-9]+]] = OpTypeStruct [[A]] [[uint]] [[A]] 17 18; CHECK-DAG: [[uint_0:%[0-9]+]] = OpConstant [[uint]] 0 19; CHECK-DAG: [[uint_1:%[0-9]+]] = OpConstant [[uint]] 1 20; CHECK-DAG: [[uint_2:%[0-9]+]] = OpConstant [[uint]] 2 21 22; CHECK-DAG: [[ptr_uint:%[0-9]+]] = OpTypePointer Function [[uint]] 23; CHECK-DAG: [[ptr_A:%[0-9]+]] = OpTypePointer Function [[A]] 24; CHECK-DAG: [[ptr_B:%[0-9]+]] = OpTypePointer Function [[B]] 25 26define void @main() #1 { 27entry: 28 %0 = alloca %B, align 4 29; CHECK: [[tmp:%[0-9]+]] = OpVariable [[ptr_B]] Function 30 31 %1 = getelementptr %B, ptr %0, i32 0, i32 0 32; CHECK: {{%[0-9]+}} = OpAccessChain [[ptr_A]] [[tmp]] [[uint_0]] 33 %2 = getelementptr inbounds %B, ptr %0, i32 0, i32 0 34; CHECK: {{%[0-9]+}} = OpInBoundsAccessChain [[ptr_A]] [[tmp]] [[uint_0]] 35 36 %3 = getelementptr %B, ptr %0, i32 0, i32 1 37; CHECK: {{%[0-9]+}} = OpAccessChain [[ptr_uint]] [[tmp]] [[uint_1]] 38 %4 = getelementptr inbounds %B, ptr %0, i32 0, i32 1 39; CHECK: {{%[0-9]+}} = OpInBoundsAccessChain [[ptr_uint]] [[tmp]] [[uint_1]] 40 41 %5 = getelementptr %B, ptr %0, i32 0, i32 2 42; CHECK: {{%[0-9]+}} = OpAccessChain [[ptr_A]] [[tmp]] [[uint_2]] 43 %6 = getelementptr inbounds %B, ptr %0, i32 0, i32 2 44; CHECK: {{%[0-9]+}} = OpInBoundsAccessChain [[ptr_A]] [[tmp]] [[uint_2]] 45 46 %7 = getelementptr %B, ptr %0, i32 0, i32 2, i32 1 47; CHECK: {{%[0-9]+}} = OpAccessChain [[ptr_uint]] [[tmp]] [[uint_2]] [[uint_1]] 48 %8 = getelementptr inbounds %B, ptr %0, i32 0, i32 2, i32 1 49; CHECK: {{%[0-9]+}} = OpInBoundsAccessChain [[ptr_uint]] [[tmp]] [[uint_2]] [[uint_1]] 50 51 %9 = getelementptr %B, ptr %0, i32 0, i32 2 52 %10 = getelementptr %A, ptr %9, i32 0, i32 1 53; CHECK: [[x:%[0-9]+]] = OpAccessChain [[ptr_A]] [[tmp]] [[uint_2]] 54; CHECK: {{%[0-9]+}} = OpAccessChain [[ptr_uint]] [[x]] [[uint_1]] 55 56 ret void 57} 58 59attributes #1 = { "hlsl.numthreads"="4,8,16" "hlsl.shader"="compute" } 60