33 lines · plain
1// RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -x hlsl -triple \2// RUN: spirv-pc-vulkan-compute %s -emit-llvm -disable-llvm-passes -o - | \3// RUN: FileCheck %s --check-prefixes=CHECK,CHECK-SPIRV4// RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -x hlsl -triple \5// RUN: dxil-pc-shadermodel6.3-compute %s -emit-llvm -disable-llvm-passes -o - | \6// RUN: FileCheck %s --check-prefixes=CHECK,CHECK-DXIL7 8[numthreads(1, 1, 1)]9void main() {10 uint a, b;11// CHECK-SPIRV: %[[#entry_tok:]] = call token @llvm.experimental.convergence.entry()12 13// CHECK-SPIRV: %[[#loop_tok:]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token %[[#entry_tok]]) ]14 while (a) {15 16// CHECK-DXIL: %[[#]] = call i32 @llvm.dx.wave.get.lane.count()17// CHECK-SPIRV: %[[#]] = call spir_func i32 @llvm.spv.wave.get.lane.count()18// CHECK-SPIRV-SAME: [ "convergencectrl"(token %[[#loop_tok]]) ]19 a = WaveGetLaneCount();20 }21 22// CHECK-DXIL: %[[#]] = call i32 @llvm.dx.wave.get.lane.count()23// CHECK-SPIRV: %[[#]] = call spir_func i32 @llvm.spv.wave.get.lane.count()24// CHECK-SPIRV-SAME: [ "convergencectrl"(token %[[#entry_tok]]) ]25 b = WaveGetLaneCount();26}27 28// CHECK-DXIL: i32 @llvm.dx.wave.get.lane.count() #[[#attr:]]29// CHECK-SPIRV: i32 @llvm.spv.wave.get.lane.count() #[[#attr:]]30 31// CHECK: attributes #[[#attr]] = {{{.*}} convergent {{.*}}}32 33