brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.3 KiB · b7b11e9 Raw
129 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 4bool cond();5bool cond2();6void foo();7 8void test1() {9  for (;;) {10    foo();11  }12}13// CHECK-LABEL: define hidden spir_func void @_Z5test1v()14// CHECK-SAME: [[A0:#[0-9]+]] {15// CHECK: entry:16// CHECK:   [[T0:%[0-9]+]] = call token @llvm.experimental.convergence.entry()17// CHECK: for.cond:18// CHECK:   [[T1:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T0]]) ]19// CHECK:                    call spir_func void @_Z3foov() [[A3:#[0-9]+]] [ "convergencectrl"(token [[T1]]) ]20 21void test2() {22  for (;cond();) {23    foo();24  }25}26// CHECK-LABEL: define hidden spir_func void @_Z5test2v()27// CHECK-SAME: [[A0]] {28// CHECK: entry:29// CHECK:   [[T0:%[0-9]+]] = call token @llvm.experimental.convergence.entry()30// CHECK: for.cond:31// CHECK:   [[T1:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T0]]) ]32// CHECK:                    call spir_func noundef i1 @_Z4condv() [[A3]] [ "convergencectrl"(token [[T1]]) ]33// CHECK: for.body:34// CHECK:                    call spir_func void @_Z3foov() [[A3]] [ "convergencectrl"(token [[T1]]) ]35 36void test3() {37  for (cond();;) {38    foo();39  }40}41// CHECK-LABEL: define hidden spir_func void @_Z5test3v()42// CHECK-SAME: [[A0]] {43// CHECK: entry:44// CHECK:   [[T0:%[0-9]+]] = call token @llvm.experimental.convergence.entry()45// CHECK:                    call spir_func noundef i1 @_Z4condv() [[A3]] [ "convergencectrl"(token [[T0]]) ]46// CHECK: for.cond:47// CHECK:   [[T1:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T0]]) ]48// CHECK:                    call spir_func void @_Z3foov() [[A3]] [ "convergencectrl"(token [[T1]]) ]49 50void test4() {51  for (cond();cond2();) {52    foo();53  }54}55// CHECK-LABEL: define hidden spir_func void @_Z5test4v()56// CHECK-SAME: [[A0]] {57// CHECK: entry:58// CHECK:   [[T0:%[0-9]+]] = call token @llvm.experimental.convergence.entry()59// CHECK:                    call spir_func noundef i1 @_Z4condv() [[A3]] [ "convergencectrl"(token [[T0]]) ]60// CHECK: for.cond:61// CHECK:   [[T1:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T0]]) ]62// CHECK:                    call spir_func noundef i1 @_Z5cond2v() [[A3]] [ "convergencectrl"(token [[T1]]) ]63// CHECK: for.body:64// CHECK:                    call spir_func void @_Z3foov() [[A3]] [ "convergencectrl"(token [[T1]]) ]65 66void test5() {67  for (cond();cond2();foo()) {68  }69}70// CHECK-LABEL: define hidden spir_func void @_Z5test5v()71// CHECK-SAME: [[A0]] {72// CHECK: entry:73// CHECK:   [[T0:%[0-9]+]] = call token @llvm.experimental.convergence.entry()74// CHECK:                    call spir_func noundef i1 @_Z4condv() [[A3]] [ "convergencectrl"(token [[T0]]) ]75// CHECK: for.cond:76// CHECK:   [[T1:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T0]]) ]77// CHECK:                    call spir_func noundef i1 @_Z5cond2v() [[A3]] [ "convergencectrl"(token [[T1]]) ]78// CHECK: for.inc:79// CHECK:                    call spir_func void @_Z3foov() [[A3]] [ "convergencectrl"(token [[T1]]) ]80 81void test6() {82  for (cond();cond2();foo()) {83    if (cond()) {84      foo();85      break;86    }87  }88}89// CHECK-LABEL: define hidden spir_func void @_Z5test6v()90// CHECK-SAME: [[A0]] {91// CHECK: entry:92// CHECK:   [[T0:%[0-9]+]] = call token @llvm.experimental.convergence.entry()93// CHECK:                    call spir_func noundef i1 @_Z4condv() [[A3]] [ "convergencectrl"(token [[T0]]) ]94// CHECK: for.cond:95// CHECK:   [[T1:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T0]]) ]96// CHECK:                    call spir_func noundef i1 @_Z5cond2v() [[A3]] [ "convergencectrl"(token [[T1]]) ]97// CHECK: for.body:98// CHECK:   [[C1:%[a-zA-Z0-9]+]] = call spir_func noundef i1 @_Z4condv() [[A3]] [ "convergencectrl"(token [[T1]]) ]99// CHECK:   br i1 [[C1]], label %if.then, label %if.end100// CHECK: if.then:101// CHECK:   call spir_func void @_Z3foov() [[A3]] [ "convergencectrl"(token [[T1]]) ]102// CHECK:   br label %for.end103// CHECK: if.end:104// CHECK:   br label %for.inc105// CHECK: for.inc:106// CHECK:                    call spir_func void @_Z3foov() [[A3]] [ "convergencectrl"(token [[T1]]) ]107 108void test7() {109  for (cond();;) {110    for (cond();;) {111      foo();112    }113  }114}115// CHECK-LABEL: define hidden spir_func void @_Z5test7v()116// CHECK-SAME: [[A0]] {117// CHECK: entry:118// CHECK:   [[T0:%[0-9]+]] = call token @llvm.experimental.convergence.entry()119// CHECK:                    call spir_func noundef i1 @_Z4condv() [[A3]] [ "convergencectrl"(token [[T0]]) ]120// CHECK: for.cond:121// CHECK:   [[T1:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T0]]) ]122// CHECK:                    call spir_func noundef i1 @_Z4condv() [[A3]] [ "convergencectrl"(token [[T1]]) ]123// CHECK: for.cond3:124// CHECK:   [[T2:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T1]]) ]125// CHECK:                    call spir_func void @_Z3foov() [[A3]] [ "convergencectrl"(token [[T2]]) ]126 127// CHECK-DAG: attributes [[A0]] = { {{.*}}convergent{{.*}} }128// CHECK-DAG: attributes [[A3]] = { {{.*}}convergent{{.*}} }129