brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 2f08854 Raw
45 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 4int process() {5// CHECK: entry:6// CHECK:   %[[#entry_token:]] = call token @llvm.experimental.convergence.entry()7  int val = 0;8 9// CHECK: for.cond:10// CHECK-NEXT:   %[[#]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token %[[#entry_token]]) ]11// CHECK: br i1 {{.*}}, label %for.body, label %for.end12  for (int i = 0; i < 10; ++i) {13 14// CHECK: for.body:15// CHECK:   br label %for.inc16    val = i;17 18// CHECK: for.inc:19// CHECK:   br label %for.cond20  }21 22// CHECK: for.end:23// CHECK:   br label %for.cond124 25  // Infinite loop26  for ( ; ; ) {27// CHECK: for.cond1:28// CHECK-NEXT:   %[[#]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token %[[#entry_token]]) ]29// CHECK:   br label %for.cond130    val = 0;31  }32 33// CHECK-NEXT: }34// This loop in unreachable. Not generated.35  // Null body36  for (int j = 0; j < 10; ++j)37  ;38  return val;39}40 41[numthreads(1, 1, 1)]42void main() {43  process();44}45