| ! RUN: %flang_fc1 -fdebug-dump-symbols %s | FileCheck %s |
| |
| ! Test CUDA Fortran intrinsic can pass semantic |
| |
| attributes(global) subroutine devsub() |
| implicit none |
| integer :: ret |
| |
| ! 3.6.4. Synchronization Functions |
| call syncthreads() |
| call syncwarp(1) |
| call threadfence() |
| call threadfence_block() |
| call threadfence_system() |
| ret = syncthreads_and(1) |
| ret = syncthreads_count(1) |
| ret = syncthreads_or(1) |
| end |
| |
| ! CHECK-LABEL: Subprogram scope: devsub |
| ! CHECK: syncthreads (Subroutine): Use from syncthreads in cudadevice |
| ! CHECK: syncthreads_and (Function): Use from syncthreads_and in cudadevice |
| ! CHECK: syncthreads_count (Function): Use from syncthreads_count in cudadevice |
| ! CHECK: syncthreads_or (Function): Use from syncthreads_or in cudadevice |
| ! CHECK: syncwarp (Subroutine): Use from syncwarp in cudadevice |
| ! CHECK: threadfence (Subroutine): Use from threadfence in cudadevice |
| ! CHECK: threadfence_block (Subroutine): Use from threadfence_block in cudadevice |
| ! CHECK: threadfence_system (Subroutine): Use from threadfence_system in cudadevice |
| |
| subroutine host() |
| call syncthreads() |
| end subroutine |
| |
| ! CHECK-LABEL: Subprogram scope: host |
| ! CHECK: syncthreads, EXTERNAL: HostAssoc{{$}} |