#include int fallback_usleep (useconds_t d) { /* This function serves as a replacement for usleep in this test case. It does not even attempt to be functionally equivalent - we just want some sort of delay. */ int i; int N = d * 2000; for (i = 0; i < N; i++) asm volatile ("" : : : "memory"); return 0; } #pragma omp declare variant (fallback_usleep) match(construct={target},device={arch(nvptx)}) #pragma omp declare variant (fallback_usleep) match(construct={target},device={arch(gcn)}) #pragma omp declare variant (usleep) match(user={condition(1)}) int tgt_usleep (useconds_t d) { return 0; } #pragma omp declare target to (fallback_usleep, tgt_usleep)