brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 0df3598 Raw
41 lines · plain
1// RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -x hlsl -triple \2// RUN:   spirv-pc-vulkan-library %s -emit-llvm -disable-llvm-passes -o - | FileCheck %s3 4// CHECK: define hidden spir_func void @{{.*main.*}}() [[A0:#[0-9]+]] {5void main() {6// CHECK: entry:7// CHECK:   %[[CT_ENTRY:[0-9]+]] = call token @llvm.experimental.convergence.entry()8// CHECK:   br label %[[LABEL_WHILE_COND:.+]]9  int cond = 0;10 11// CHECK: [[LABEL_WHILE_COND]]:12// CHECK:   %[[CT_LOOP:[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token %[[CT_ENTRY]]) ]13// CHECK:   br label %[[LABEL_WHILE_BODY:.+]]14  while (true) {15 16// CHECK: [[LABEL_WHILE_BODY]]:17// CHECK:   br i1 {{%.+}}, label %[[LABEL_IF_THEN:.+]], label %[[LABEL_IF_END:.+]]18 19// CHECK: [[LABEL_IF_THEN]]:20// CHECK:   call spir_func i32 @__hlsl_wave_get_lane_index() [ "convergencectrl"(token %[[CT_LOOP]]) ]21// CHECK:   br label %[[LABEL_WHILE_END:.+]]22    if (cond == 2) {23      uint index = WaveGetLaneIndex();24      break;25    }26 27// CHECK: [[LABEL_IF_END]]:28// CHECK:   br label %[[LABEL_WHILE_COND]]29    cond++;30  }31 32// CHECK: [[LABEL_WHILE_END]]:33// CHECK:   ret void34}35 36// CHECK-DAG: declare spir_func i32 @__hlsl_wave_get_lane_index() [[A1:#[0-9]+]]37 38// CHECK-DAG: attributes [[A0]] = {{{.*}}convergent{{.*}}}39// CHECK-DAG: attributes [[A1]] = {{{.*}}convergent{{.*}}}40 41