1 // RUN: %libomptarget-compile-generic -fprofile-instr-generate \ 2 // RUN: -Xclang "-fprofile-instrument=clang" 3 // RUN: %libomptarget-run-generic 2>&1 | %fcheck-generic \ 4 // RUN: --check-prefix="CLANG-PGO" 5 // RUN: %libomptarget-compile-generic -fprofile-generate \ 6 // RUN: -Xclang "-fprofile-instrument=llvm" 7 // RUN: %libomptarget-run-generic 2>&1 | %fcheck-generic \ 8 // RUN: --check-prefix="LLVM-PGO" 9 10 // REQUIRES: gpu 11 // REQUIRES: pgo 12 13 #ifdef _OPENMP 14 #include <omp.h> 15 #endif 16 17 int test1(int a) { return a / 2; } 18 int test2(int a) { return a * 2; } 19 20 int main() { 21 int m = 2; 22 #pragma omp target 23 for (int i = 0; i < 10; i++) { 24 m = test1(m); 25 for (int j = 0; j < 2; j++) { 26 m = test2(m); 27 } 28 } 29 } 30 31 // CLANG-PGO: ======== Counters ========= 32 // CLANG-PGO-NEXT: [ 0 11 20 ] 33 // CLANG-PGO-NEXT: [ 10 ] 34 // CLANG-PGO-NEXT: [ 20 ] 35 // CLANG-PGO-NEXT: ========== Data =========== 36 // CLANG-PGO-NEXT: { {{[0-9]*}} {{[0-9]*}} 37 // CLANG-PGO-SAME: {{0x[0-9a-fA-F]*}} {{0x[0-9a-fA-F]*}} 38 // CLANG-PGO-SAME: {{0x[0-9a-fA-F]*}} {{0x[0-9a-fA-F]*}} 39 // CLANG-PGO-SAME: {{[0-9]*}} {{.*}} {{[0-9]*}} } 40 // CLANG-PGO-NEXT: { {{[0-9]*}} {{[0-9]*}} 41 // CLANG-PGO-SAME: {{0x[0-9a-fA-F]*}} {{0x[0-9a-fA-F]*}} 42 // CLANG-PGO-SAME: {{0x[0-9a-fA-F]*}} {{0x[0-9a-fA-F]*}} 43 // CLANG-PGO-SAME: {{[0-9]*}} {{.*}} {{[0-9]*}} } 44 // CLANG-PGO-NEXT: { {{[0-9]*}} {{[0-9]*}} 45 // CLANG-PGO-SAME: {{0x[0-9a-fA-F]*}} {{0x[0-9a-fA-F]*}} 46 // CLANG-PGO-SAME: {{0x[0-9a-fA-F]*}} {{0x[0-9a-fA-F]*}} 47 // CLANG-PGO-SAME: {{[0-9]*}} {{.*}} {{[0-9]*}} } 48 // CLANG-PGO-NEXT: ======== Functions ======== 49 // CLANG-PGO-NEXT: pgo1.c: 50 // CLANG-PGO-SAME: __omp_offloading_{{[_0-9a-zA-Z]*}}_main_{{[_0-9a-zA-Z]*}} 51 // CLANG-PGO-NEXT: test1 52 // CLANG-PGO-NEXT: test2 53 54 // LLVM-PGO: ======== Counters ========= 55 // LLVM-PGO-NEXT: [ 20 10 2 1 ] 56 // LLVM-PGO-NEXT: [ 10 ] 57 // LLVM-PGO-NEXT: [ 20 ] 58 // LLVM-PGO-NEXT: ========== Data =========== 59 // LLVM-PGO-NEXT: { {{[0-9]*}} {{[0-9]*}} 60 // LLVM-PGO-SAME: {{0x[0-9a-fA-F]*}} {{0x[0-9a-fA-F]*}} 61 // LLVM-PGO-SAME: {{0x[0-9a-fA-F]*}} {{0x[0-9a-fA-F]*}} 62 // LLVM-PGO-SAME: {{[0-9]*}} {{.*}} {{[0-9]*}} } 63 // LLVM-PGO-NEXT: { {{[0-9]*}} {{[0-9]*}} 64 // LLVM-PGO-SAME: {{0x[0-9a-fA-F]*}} {{0x[0-9a-fA-F]*}} 65 // LLVM-PGO-SAME: {{0x[0-9a-fA-F]*}} {{0x[0-9a-fA-F]*}} 66 // LLVM-PGO-SAME: {{[0-9]*}} {{.*}} {{[0-9]*}} } 67 // LLVM-PGO-NEXT: { {{[0-9]*}} {{[0-9]*}} 68 // LLVM-PGO-SAME: {{0x[0-9a-fA-F]*}} {{0x[0-9a-fA-F]*}} 69 // LLVM-PGO-SAME: {{0x[0-9a-fA-F]*}} {{0x[0-9a-fA-F]*}} 70 // LLVM-PGO-SAME: {{[0-9]*}} {{.*}} {{[0-9]*}} } 71 // LLVM-PGO-NEXT: ======== Functions ======== 72 // LLVM-PGO-NEXT: __omp_offloading_{{[_0-9a-zA-Z]*}}_main_{{[_0-9a-zA-Z]*}} 73 // LLVM-PGO-NEXT: test1 74 // LLVM-PGO-NEXT: test2 75