brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · 9aabbfd Raw
96 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();5void foo();6 7void test1() {8  do {9  } while (cond());10}11// CHECK-LABEL: define hidden spir_func void @_Z5test1v()12// CHECK-SAME: [[A0:#[0-9]+]] {13// CHECK: entry:14// CHECK:   [[T0:%[0-9]+]] = call token @llvm.experimental.convergence.entry()15// CHECK: do.body:16// CHECK:   [[T1:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T0]]) ]17// CHECK: do.cond:18// CHECK:                    call spir_func noundef i1 @_Z4condv() [[A3:#[0-9]+]] [ "convergencectrl"(token [[T1]]) ]19 20void test2() {21  do {22    foo();23  } while (cond());24}25// CHECK-LABEL: define hidden spir_func void @_Z5test2v()26// CHECK-SAME: [[A0]] {27// CHECK: entry:28// CHECK:   [[T0:%[0-9]+]] = call token @llvm.experimental.convergence.entry()29// CHECK: do.body:30// CHECK:   [[T1:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T0]]) ]31// CHECK:                    call spir_func void @_Z3foov() [[A3]] [ "convergencectrl"(token [[T1]]) ]32// CHECK: do.cond:33// CHECK:                    call spir_func noundef i1 @_Z4condv() [[A3]] [ "convergencectrl"(token [[T1]]) ]34 35void test3() {36  do {37    if (cond())38      foo();39  } while (cond());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: do.body:46// CHECK:   [[T1:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T0]]) ]47// CHECK: if.then:48// CHECK:                    call spir_func void @_Z3foov() [[A3]] [ "convergencectrl"(token [[T1]]) ]49// CHECK: do.cond:50// CHECK:                    call spir_func noundef i1 @_Z4condv() [[A3]] [ "convergencectrl"(token [[T1]]) ]51 52void test4() {53  do {54    if (cond()) {55      foo();56      break;57    }58  } while (cond());59}60// CHECK-LABEL: define hidden spir_func void @_Z5test4v()61// CHECK-SAME: [[A0]] {62// CHECK: entry:63// CHECK:   [[T0:%[0-9]+]] = call token @llvm.experimental.convergence.entry()64// CHECK: do.body:65// CHECK:   [[T1:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T0]]) ]66// CHECK: if.then:67// CHECK:                    call spir_func void @_Z3foov() [[A3]] [ "convergencectrl"(token [[T1]]) ]68// CHECK: do.cond:69// CHECK:                    call spir_func noundef i1 @_Z4condv() [[A3]] [ "convergencectrl"(token [[T1]]) ]70 71void test5() {72  do {73    while (cond()) {74      if (cond()) {75        foo();76        break;77      }78    }79  } while (cond());80}81// CHECK-LABEL: define hidden spir_func void @_Z5test5v()82// CHECK-SAME: [[A0]] {83// CHECK: entry:84// CHECK:   [[T0:%[0-9]+]] = call token @llvm.experimental.convergence.entry()85// CHECK: do.body:86// CHECK:   [[T1:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T0]]) ]87// CHECK: while.cond:88// CHECK:   [[T2:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T1]]) ]89// CHECK: if.then:90// CHECK:                    call spir_func void @_Z3foov() [[A3]] [ "convergencectrl"(token [[T2]]) ]91// CHECK: do.cond:92// CHECK:                    call spir_func noundef i1 @_Z4condv() [[A3]] [ "convergencectrl"(token [[T1]]) ]93 94// CHECK-DAG: attributes [[A0]] = { {{.*}}convergent{{.*}} }95// CHECK-DAG: attributes [[A3]] = { {{.*}}convergent{{.*}} }96