brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.5 KiB · 32579e8 Raw
126 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  while (cond()) {9  }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: while.cond:16// CHECK:   [[T1:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T0]]) ]17// CHECK:                    call spir_func noundef i1 @_Z4condv() [[A3:#[0-9]+]] [ "convergencectrl"(token [[T1]]) ]18 19void test2() {20  while (cond()) {21    foo();22  }23}24// CHECK-LABEL: define hidden spir_func void @_Z5test2v()25// CHECK-SAME: [[A0]] {26// CHECK: entry:27// CHECK:   [[T0:%[0-9]+]] = call token @llvm.experimental.convergence.entry()28// CHECK: while.cond:29// CHECK:   [[T1:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T0]]) ]30// CHECK:                    call spir_func noundef i1 @_Z4condv() [[A3]] [ "convergencectrl"(token [[T1]]) ]31// CHECK: while.body:32// CHECK:   call spir_func void @_Z3foov() [[A3]] [ "convergencectrl"(token [[T1]]) ]33 34void test3() {35  while (cond()) {36    if (cond())37      break;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: while.cond:46// CHECK:   [[T1:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T0]]) ]47// CHECK:                    call spir_func noundef i1 @_Z4condv() [[A3]] [ "convergencectrl"(token [[T1]]) ]48// CHECK: if.then:49// CHECK:   br label %while.end50// CHECK: if.end:51// CHECK:   call spir_func void @_Z3foov() [[A3]] [ "convergencectrl"(token [[T1]]) ]52// CHECK:   br label %while.cond53 54void test4() {55  while (cond()) {56    if (cond()) {57      foo();58      break;59    }60  }61}62// CHECK-LABEL: define hidden spir_func void @_Z5test4v()63// CHECK-SAME: [[A0]] {64// CHECK: entry:65// CHECK:   [[T0:%[0-9]+]] = call token @llvm.experimental.convergence.entry()66// CHECK: while.cond:67// CHECK:   [[T1:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T0]]) ]68// CHECK:                    call spir_func noundef i1 @_Z4condv() [[A3]] [ "convergencectrl"(token [[T1]]) ]69// CHECK: if.then:70// CHECK:   call spir_func void @_Z3foov() [[A3]] [ "convergencectrl"(token [[T1]]) ]71// CHECK:   br label %while.end72// CHECK: if.end:73// CHECK:   br label %while.cond74 75void test5() {76  while (cond()) {77    while (cond()) {78      if (cond()) {79        foo();80        break;81      }82    }83  }84}85// CHECK-LABEL: define hidden spir_func void @_Z5test5v()86// CHECK-SAME: [[A0]] {87// CHECK: entry:88// CHECK:   [[T0:%[0-9]+]] = call token @llvm.experimental.convergence.entry()89// CHECK: while.cond:90// CHECK:   [[T1:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T0]]) ]91// CHECK:                    call spir_func noundef i1 @_Z4condv() [[A3]] [ "convergencectrl"(token [[T1]]) ]92// CHECK: while.cond2:93// CHECK:   [[T2:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T1]]) ]94// CHECK:                    call spir_func noundef i1 @_Z4condv() [[A3]] [ "convergencectrl"(token [[T2]]) ]95// CHECK: if.then:96// CHECK:   call spir_func void @_Z3foov() [[A3]] [ "convergencectrl"(token [[T2]]) ]97// CHECK:   br label %while.end98 99void test6() {100  while (cond()) {101    while (cond()) {102    }103 104    if (cond()) {105      foo();106      break;107    }108  }109}110// CHECK-LABEL: define hidden spir_func void @_Z5test6v()111// CHECK-SAME: [[A0]] {112// CHECK: entry:113// CHECK:   [[T0:%[0-9]+]] = call token @llvm.experimental.convergence.entry()114// CHECK: while.cond:115// CHECK:   [[T1:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T0]]) ]116// CHECK:                    call spir_func noundef i1 @_Z4condv() [[A3]] [ "convergencectrl"(token [[T1]]) ]117// CHECK: while.cond2:118// CHECK:   [[T2:%[0-9]+]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[T1]]) ]119// CHECK:                    call spir_func noundef i1 @_Z4condv() [[A3]] [ "convergencectrl"(token [[T2]]) ]120// CHECK: if.then:121// CHECK:   call spir_func void @_Z3foov() [[A3]] [ "convergencectrl"(token [[T1]]) ]122// CHECK:   br label %while.end123 124// CHECK-DAG: attributes [[A0]] = { {{.*}}convergent{{.*}} }125// CHECK-DAG: attributes [[A3]] = { {{.*}}convergent{{.*}} }126