brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 8ce12fb Raw
118 lines · cpp
1// expected-no-diagnostics2// RUN: %clang_cc1 -DCK1 -verify -fopenmp -x c++ %s -emit-llvm -o - | FileCheck %s3// RUN: %clang_cc1 -verify -fopenmp -x c++ -triple x86_64-unknown-unknown -emit-llvm %s -o - | FileCheck %s4 5 6#define NNN 507int aaa[NNN];8 9void parallel_loop() {10  #pragma omp parallel11  {12    #pragma omp loop bind(parallel)13    for (int j = 0 ; j < NNN ; j++) {14      aaa[j] = j*NNN;15    }16  }17}18 19void parallel_loop_orphan() {20  #pragma omp loop bind(parallel)21  for (int j = 0 ; j < NNN ; j++) {22     aaa[j] = j*NNN;23  }24}25 26 27void teams_loop() {28  #pragma omp teams29  {30     #pragma omp loop bind(teams)31     for (int j = 0 ; j < NNN ; j++) {32       aaa[j] = j*NNN;33     }34   }35}36 37void thread_loop() {38  #pragma omp parallel39  {40     #pragma omp loop bind(thread)41     for (int j = 0 ; j < NNN ; j++) {42       aaa[j] = j*NNN;43     }44   }45}46 47void thread_loop_orphan() {48  #pragma omp loop bind(thread)49  for (int j = 0 ; j < NNN ; j++) {50    aaa[j] = j*NNN;51  }52}53 54int main() {55  parallel_loop();56  parallel_loop_orphan();57  teams_loop();58  thread_loop();59  thread_loop_orphan();60 61  return 0;62}63// CHECK-LABEL: define {{.+}}parallel_loop{{.+}}64// CHECK:    call {{.+}}__kmpc_fork_call({{.+}}parallel_loop{{.+}}.omp_outlined{{.*}})65//66//67// CHECK-LABEL: define {{.+}}parallel_loop{{.+}}.omp_outlined{{.+}}68// CHECK:         call {{.+}}__kmpc_for_static_init_469// CHECK:       omp.inner.for.body:70// CHECK:       omp.loop.exit:71// CHECK-NEXT:    call {{.+}}__kmpc_for_static_fini72// CHECK-NEXT:    call {{.+}}__kmpc_barrier73//74//75// CHECK-LABEL: define {{.+}}parallel_loop_orphan{{.+}}76// CHECK:         [[TMP0:%.*]] = call {{.+}}__kmpc_global_thread_num77// CHECK:         call {{.+}}__kmpc_for_static_init_478// CHECK:       omp.inner.for.body:79// CHECK:       omp.inner.for.end:80// CHECK:       omp.loop.exit:81// CHECK-NEXT:    call {{.+}}__kmpc_for_static_fini82// CHECK-NEXT:    call {{.+}}__kmpc_barrier83//84//85// CHECK-LABEL: define {{.+}}teams_loop{{.+}}86// CHECK:    call {{.+}}__kmpc_fork_teams({{.+}}teams_loop{{.+}}.omp_outlined{{.*}})87//88//89// CHECK-LABEL: define {{.+}}teams_loop{{.+}}.omp_outlined{{.+}}90// CHECK:         call {{.+}}__kmpc_for_static_init_491// CHECK:       omp.inner.for.body:92// CHECK:       omp.loop.exit:93// CHECK-NEXT:    call {{.+}}__kmpc_for_static_fini94//95//96// CHECK-LABEL: define {{.+}}thread_loop{{.+}}97// CHECK:    call {{.+}}__kmpc_fork_call({{.+}}thread_loop{{.+}}.omp_outlined{{.*}})98//99//100// CHECK-LABEL: define {{.+}}thread_loop{{.+}}.omp_outlined{{.+}}101// CHECK:       omp.inner.for.body:102// CHECK:       omp.inner.for.end:103//104//105// CHECK-LABEL: define {{.+}}thread_loop_orphan{{.+}}106// CHECK:       omp.inner.for.cond:107// CHECK:       omp.inner.for.body:108// CHECK:       omp.inner.for.end:109//110//111// CHECK-LABEL: define {{.+}}main{{.+}}112// CHECK:         call {{.+}}parallel_loop{{.+}}()113// CHECK-NEXT:    call {{.+}}parallel_loop_orphan{{.+}}()114// CHECK-NEXT:    call {{.+}}teams_loop{{.+}}()115// CHECK-NEXT:    call {{.+}}thread_loop{{.+}}()116// CHECK-NEXT:    call {{.+}}thread_loop_orphan{{.+}}()117//118