; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
; RUN: llc -verify-machineinstrs -O3 -mtriple=spirv1.6-unknown-vulkan1.3-compute %s -o - | FileCheck %s
; RUN: %if spirv-tools %{ llc -O3 -mtriple=spirv1.6-unknown-vulkan1.3-compute %s -o - -filetype=obj | spirv-val %}

; struct S1 {
;   int4 i;
;   float4 f;
; };
; struct S2 {
;   float4 f;
;   int4 i;
; };
;
; StructuredBuffer<S1> In : register(t1);
; RWStructuredBuffer<S2> Out : register(u0);
;
; [numthreads(1,1,1)]
; void main(uint GI : SV_GroupIndex) {
;   Out[GI].f = In[GI].f;
;   Out[GI].i = In[GI].i;
; }

%struct.S1 = type { <4 x i32>, <4 x float> }
%struct.S2 = type { <4 x float>, <4 x i32> }

@.str = private unnamed_addr constant [3 x i8] c"In\00", align 1
@.str.2 = private unnamed_addr constant [4 x i8] c"Out\00", align 1

define void @main() local_unnamed_addr #0 {
; CHECK-NOT: OpCapability VariablePointersStorageBuffer
; CHECK-LABEL: main
; CHECK:       %42 = OpFunction %2 None %3 ; -- Begin function main
; CHECK-NEXT:    %1 = OpLabel
; CHECK-NEXT:    %43 = OpVariable %27 Function %37
; CHECK-NEXT:    %44 = OpVariable %26 Function %38
; CHECK-NEXT:    %45 = OpCopyObject %19 %39
; CHECK-NEXT:    %46 = OpCopyObject %16 %40
; CHECK-NEXT:    %47 = OpLoad %4 %41
; CHECK-NEXT:    %48 = OpAccessChain %13 %45 %28 %47
; CHECK-NEXT:    %49 = OpInBoundsAccessChain %9 %48 %30
; CHECK-NEXT:    %50 = OpLoad %8 %49
; CHECK-NEXT:    %51 = OpAccessChain %11 %46 %28 %47
; CHECK-NEXT:    %52 = OpInBoundsAccessChain %9 %51 %28
; CHECK-NEXT:    OpStore %52 %50
; CHECK-NEXT:    %53 = OpAccessChain %6 %48 %28
; CHECK-NEXT:    %54 = OpLoad %5 %53
; CHECK-NEXT:    %55 = OpInBoundsAccessChain %6 %51 %30
; CHECK-NEXT:    OpStore %55 %54
; CHECK-NEXT:    OpReturn
; CHECK-NEXT:    OpFunctionEnd
entry:
  %0 = tail call target("spirv.VulkanBuffer", [0 x %struct.S1], 12, 0) @llvm.spv.resource.handlefrombinding.tspirv.VulkanBuffer_a0s_struct.S1s_12_0t(i32 0, i32 1, i32 1, i32 0, ptr nonnull @.str)
  %1 = tail call target("spirv.VulkanBuffer", [0 x %struct.S2], 12, 1) @llvm.spv.resource.handlefrombinding.tspirv.VulkanBuffer_a0s_struct.S2s_12_1t(i32 0, i32 0, i32 1, i32 0, ptr nonnull @.str.2)
  %2 = tail call i32 @llvm.spv.flattened.thread.id.in.group()
  %3 = tail call noundef align 1 dereferenceable(32) ptr addrspace(11) @llvm.spv.resource.getpointer.p11.tspirv.VulkanBuffer_a0s_struct.S1s_12_0t(target("spirv.VulkanBuffer", [0 x %struct.S1], 12, 0) %0, i32 %2)
  %f.i = getelementptr inbounds nuw i8, ptr addrspace(11) %3, i64 16
  %4 = load <4 x float>, ptr addrspace(11) %f.i, align 1
  %5 = tail call noundef align 1 dereferenceable(32) ptr addrspace(11) @llvm.spv.resource.getpointer.p11.tspirv.VulkanBuffer_a0s_struct.S2s_12_1t(target("spirv.VulkanBuffer", [0 x %struct.S2], 12, 1) %1, i32 %2)
  store <4 x float> %4, ptr addrspace(11) %5, align 1
  %6 = load <4 x i32>, ptr addrspace(11) %3, align 1
  %i6.i = getelementptr inbounds nuw i8, ptr addrspace(11) %5, i64 16
  store <4 x i32> %6, ptr addrspace(11) %i6.i, align 1
  ret void
}

declare i32 @llvm.spv.flattened.thread.id.in.group()

declare target("spirv.VulkanBuffer", [0 x %struct.S1], 12, 0) @llvm.spv.resource.handlefrombinding.tspirv.VulkanBuffer_a0s_struct.S1s_12_0t(i32, i32, i32, i32, ptr)

declare target("spirv.VulkanBuffer", [0 x %struct.S2], 12, 1) @llvm.spv.resource.handlefrombinding.tspirv.VulkanBuffer_a0s_struct.S2s_12_1t(i32, i32, i32, i32, ptr)

declare ptr addrspace(11) @llvm.spv.resource.getpointer.p11.tspirv.VulkanBuffer_a0s_struct.S2s_12_1t(target("spirv.VulkanBuffer", [0 x %struct.S2], 12, 1), i32)

declare ptr addrspace(11) @llvm.spv.resource.getpointer.p11.tspirv.VulkanBuffer_a0s_struct.S1s_12_0t(target("spirv.VulkanBuffer", [0 x %struct.S1], 12, 0), i32)

attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
