1*5ffd83dbSDimitry Andric /*===---- time.h - OpenMP time header wrapper ------------------------ c ---=== 2*5ffd83dbSDimitry Andric * 3*5ffd83dbSDimitry Andric * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*5ffd83dbSDimitry Andric * See https://llvm.org/LICENSE.txt for license information. 5*5ffd83dbSDimitry Andric * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*5ffd83dbSDimitry Andric * 7*5ffd83dbSDimitry Andric *===-----------------------------------------------------------------------=== 8*5ffd83dbSDimitry Andric */ 9*5ffd83dbSDimitry Andric 10*5ffd83dbSDimitry Andric #ifndef __CLANG_OPENMP_TIME_H__ 11*5ffd83dbSDimitry Andric #define __CLANG_OPENMP_TIME_H__ 12*5ffd83dbSDimitry Andric 13*5ffd83dbSDimitry Andric #ifndef _OPENMP 14*5ffd83dbSDimitry Andric #error "This file is for OpenMP compilation only." 15*5ffd83dbSDimitry Andric #endif 16*5ffd83dbSDimitry Andric 17*5ffd83dbSDimitry Andric #if defined(__cplusplus) 18*5ffd83dbSDimitry Andric #define __DEVICE__ static constexpr __attribute__((always_inline, nothrow)) 19*5ffd83dbSDimitry Andric #else 20*5ffd83dbSDimitry Andric #define __DEVICE__ static __attribute__((always_inline, nothrow)) 21*5ffd83dbSDimitry Andric #endif 22*5ffd83dbSDimitry Andric 23*5ffd83dbSDimitry Andric #include_next <time.h> 24*5ffd83dbSDimitry Andric 25*5ffd83dbSDimitry Andric #pragma omp begin declare variant match( \ 26*5ffd83dbSDimitry Andric device = {arch(nvptx, nvptx64)}, implementation = {extension(match_any)}) 27*5ffd83dbSDimitry Andric clock()28*5ffd83dbSDimitry Andric__DEVICE__ clock_t clock() { return __nvvm_read_ptx_sreg_clock(); } 29*5ffd83dbSDimitry Andric 30*5ffd83dbSDimitry Andric #pragma omp end declare variant 31*5ffd83dbSDimitry Andric 32*5ffd83dbSDimitry Andric #endif 33