| ; RUN: llc -O0 -verify-machineinstrs -mtriple=spirv-vulkan1.3-unknown %s -o - | FileCheck %s |
| ; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-vulkan1.3-unknown %s -o - -filetype=obj | spirv-val --target-env vulkan1.3 %} |
| |
| ; CHECK-DAG: %[[#int:]] = OpTypeInt 32 0 |
| ; CHECK-DAG: %[[#ptr_Input_int:]] = OpTypePointer Input %[[#int]] |
| ; CHECK-DAG: %[[#LocalInvocationIndex:]] = OpVariable %[[#ptr_Input_int]] Input |
| |
| ; CHECK-DAG: OpEntryPoint GLCompute {{.*}} %[[#LocalInvocationIndex]] |
| ; CHECK-DAG: OpName %[[#LocalInvocationIndex]] "__spirv_BuiltInLocalInvocationIndex" |
| ; CHECK-DAG: OpDecorate %[[#LocalInvocationIndex]] BuiltIn LocalInvocationIndex |
| |
| target triple = "spirv-unknown-vulkan-library" |
| |
| define internal void @local_index_user(i32) { |
| entry: |
| ret void |
| } |
| |
| ; Function Attrs: convergent noinline norecurse |
| define void @main() #1 { |
| entry: |
| |
| ; CHECK: %[[#load:]] = OpLoad %[[#int]] %[[#LocalInvocationIndex]] |
| %1 = call i32 @llvm.spv.flattened.thread.id.in.group() |
| |
| call spir_func void @local_index_user(i32 %1) |
| ret void |
| } |
| |
| ; Function Attrs: nounwind willreturn memory(none) |
| declare i32 @llvm.spv.flattened.thread.id.in.group() #3 |
| |
| attributes #1 = { convergent noinline norecurse "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" "no-trapping-math"="true" "stack-protector-buffer-size"="8" } |
| attributes #3 = { nounwind willreturn memory(none) } |