brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · b2f3012 Raw
111 lines · c
1// RUN: %libomp-compile-and-run2#include "omp_testsuite.h"3 4#define N 1005 6int x1, x2, x3, x4, x5;7#pragma omp threadprivate(x1, x2, x3, x4, x5)8 9int test_omp_parallel_copyin() {10  int a[N];11  x1 = 1;12 13#pragma omp parallel copyin(x1)14#pragma omp for15  for (int i = 0; i < N; i++)16    a[i] = i + x1;17 18  int sum = 0;19 20  for (int i = 0; i < N; i++)21    sum += a[i];22 23  return (sum == ((99 + 2 * x1) * 100) / 2);24}25 26int test_omp_parallel_for_copyin() {27  int a[N];28  x2 = 2;29 30#pragma omp parallel for copyin(x2)31  for (int i = 0; i < N; i++)32    a[i] = i + x2;33 34  int sum = 0;35 36  for (int i = 0; i < N; i++)37    sum += a[i];38 39  return (sum == ((99 + 2 * x2) * 100) / 2);40}41 42int test_omp_parallel_for_simd_copyin() {43  int a[N];44  x3 = 3;45 46#pragma omp parallel for simd copyin(x3)47  for (int i = 0; i < N; i++)48    a[i] = i + x3;49 50  int sum = 0;51 52  for (int i = 0; i < N; i++)53    sum += a[i];54 55  return (sum == ((99 + 2 * x3) * 100) / 2);56}57 58int test_omp_parallel_sections_copyin() {59  int a = 0;60  int b = 0;61  x4 = 4;62 63#pragma omp parallel sections copyin(x4)64  {65#pragma omp section66    { a = x4; }67 68#pragma omp section69    { b = x4; }70  }71 72  return (a + b == x4 * 2);73}74 75int test_omp_parallel_master_copyin() {76  int a[N];77  x5 = 5;78 79#pragma omp parallel master copyin(x5)80  for (int i = 0; i < N; i++)81    a[i] = i + x5;82 83  int sum = 0;84 85  for (int i = 0; i < N; i++)86    sum += a[i];87 88  return (sum == ((99 + 2 * x5) * 100) / 2);89}90 91int main() {92  int num_failed = 0;93 94  if (!test_omp_parallel_copyin())95    num_failed++;96 97  if (!test_omp_parallel_for_copyin())98    num_failed++;99 100  if (!test_omp_parallel_for_simd_copyin())101    num_failed++;102 103  if (!test_omp_parallel_sections_copyin())104    num_failed++;105 106  if (!test_omp_parallel_master_copyin())107    num_failed++;108 109  return num_failed;110}111