; RUN: llc -O0 -mtriple=spirv-unknown-vulkan-compute %s -o - | FileCheck %s ; The function in the test has external linkage because we want it to be ; output. Since this test uses Linkage we cannot validate for Vulkan. That ; should not be a problem as it is only testing general shader behavior. ; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-unknown-vulkan-compute %s -o - -filetype=obj | spirv-val %} ; CHECK-DAG: %[[#i32:]] = OpTypeInt 32 0 ; CHECK-DAG: %[[#struct:]] = OpTypeStruct %[[#]] %[[#]] %[[#i32]] ; CHECK-DAG: %[[#ptr_struct:]] = OpTypePointer Function %[[#struct]] ; CHECK-DAG: %[[#ptr_i32:]] = OpTypePointer Function %[[#i32]] ; CHECK-DAG: %[[#idx:]] = OpConstant %[[#]] 2 %struct.VSOutput = type { <4 x float>, <2 x float>, i32 } ; CHECK: %[[#func:]] = OpFunction %[[#i32]] None %[[#]] ; CHECK: %[[#input:]] = OpFunctionParameter %[[#ptr_struct]] define spir_func i32 @_Z13sampleTexture8VSOutput(ptr byval(%struct.VSOutput) align 1 %input) { entry: ; CHECK: %[[#gep:]] = OpInBoundsAccessChain %[[#ptr_i32]] %[[#input]] %[[#idx]] %ColorOffset = getelementptr inbounds nuw i8, ptr %input, i64 24 ; CHECK: %[[#val:]] = OpLoad %[[#i32]] %[[#gep]] %val = load i32, ptr %ColorOffset, align 1 ; CHECK: OpReturnValue %[[#val]] ret i32 %val } define void @main() #0 { entry: ret void } attributes #0 = { "hlsl.shader"="pixel" }