| ; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv1.6-unknown-vulkan1.3 %s -o - | FileCheck %s | |
| ; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv1.6-unknown-vulkan1.3 %s -o - -filetype=obj | spirv-val --target-env vulkan1.3 %} | |
| %struct.S = type { [4 x <2 x float>] } | |
| @G = internal global %struct.S zeroinitializer | |
| @IDX = internal global i32 1 | |
| @OUT = internal global <2 x float> zeroinitializer | |
| define void @main() #0 { | |
| entry: | |
| %idx = load i32, ptr @IDX | |
| ; CHECK-DAG: %[[#IDX:]] = OpLoad %[[#]] %[[#]] | |
| ; CHECK-DAG: %[[#G:]] = OpVariable %[[#]] Function | |
| ; CHECK: %[[#AC:]] = OpAccessChain %[[#]] %[[#G]] %[[#]] %[[#IDX]] | |
| ; CHECK: %[[#VAL:]] = OpLoad %[[#]] %[[#AC]] | |
| ; CHECK: OpStore %[[#]] %[[#VAL]] | |
| %gep = getelementptr [8 x i8], ptr @G, i32 %idx | |
| %val = load <2 x float>, ptr %gep | |
| store <2 x float> %val, ptr @OUT | |
| ret void | |
| } | |
| attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" } |