xref: /llvm-project/openmp/runtime/test/api/omp_get_wtime.c (revision 73682279653eaa257bb252c3920bd7f8a6830b09)
1614c7ef8SJonathan Peyton // RUN: %libomp-compile-and-run
2614c7ef8SJonathan Peyton #include <stdio.h>
3614c7ef8SJonathan Peyton #include <stdlib.h>
4614c7ef8SJonathan Peyton #include "omp_testsuite.h"
5614c7ef8SJonathan Peyton #include "omp_my_sleep.h"
6614c7ef8SJonathan Peyton 
7d39d3a32SPeyton, Jonathan L #define NTIMES 100
8d39d3a32SPeyton, Jonathan L 
9*73682279SJoachim Protze #define ASSERT_CMP(lhs, cmp, rhs)                                              \
10*73682279SJoachim Protze   if (!((lhs)cmp(rhs))) {                                                      \
11*73682279SJoachim Protze     printf("Expected: (" #lhs ") " #cmp " (" #rhs "), actual: %e vs. %e", lhs, \
12*73682279SJoachim Protze            rhs);                                                               \
13*73682279SJoachim Protze     return EXIT_FAILURE;                                                       \
14d39d3a32SPeyton, Jonathan L   }
15614c7ef8SJonathan Peyton 
main()16d39d3a32SPeyton, Jonathan L int main() {
17*73682279SJoachim Protze   int i;
18d39d3a32SPeyton, Jonathan L 
19d39d3a32SPeyton, Jonathan L   for (i = 0; i < NTIMES; i++) {
20*73682279SJoachim Protze     double start = omp_get_wtime(), end;
21*73682279SJoachim Protze     ASSERT_CMP(start, >=, 0.0);
22*73682279SJoachim Protze     for (end = omp_get_wtime(); end == start; end = omp_get_wtime()) {
23*73682279SJoachim Protze       ASSERT_CMP(end, >=, 0.0);
24*73682279SJoachim Protze     }
25*73682279SJoachim Protze     ASSERT_CMP(end, >=, 0.0);
26*73682279SJoachim Protze     ASSERT_CMP(end, >, start);
27614c7ef8SJonathan Peyton   }
28d39d3a32SPeyton, Jonathan L 
29d39d3a32SPeyton, Jonathan L   return EXIT_SUCCESS;
30614c7ef8SJonathan Peyton }
31