Files
TheRock/compiler/amd-llvm/flang/test/Lower/OpenACC/acc-routine-named-external.f90
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

73 lines
1.8 KiB
Fortran

! Test that !$acc routine(name) with parallelism clauses for external
! subroutines correctly produces acc.routine with the keyword, even
! when the callee is a ProcEntity (not SubprogramDetails).
! RUN: bbc -fopenacc -emit-hlfir %s -o - | FileCheck %s
! CHECK-DAG: acc.routine @{{.*}} func(@_QPext_vec) vector
! CHECK-DAG: acc.routine @{{.*}} func(@_QPext_worker) worker
! CHECK-DAG: acc.routine @{{.*}} func(@_QPext_gang) gang
! CHECK-DAG: acc.routine @{{.*}} func(@_QPext_seq) seq
subroutine caller_vec(a, n)
integer, intent(in) :: n
real, intent(inout) :: a(n)
integer :: k
!$acc routine(ext_vec) vector
!$acc parallel loop gang
do k = 1, 10
call ext_vec(a, n)
end do
end subroutine
subroutine caller_worker(a, n)
integer, intent(in) :: n
real, intent(inout) :: a(n)
integer :: k
!$acc routine(ext_worker) worker
!$acc parallel loop gang
do k = 1, 10
call ext_worker(a, n)
end do
end subroutine
subroutine caller_gang(a, n)
integer, intent(in) :: n
real, intent(inout) :: a(n)
!$acc routine(ext_gang) gang
!$acc parallel
call ext_gang(a, n)
!$acc end parallel
end subroutine
subroutine caller_seq(a, n)
integer, intent(in) :: n
real, intent(inout) :: a(n)
integer :: k
!$acc routine(ext_seq) seq
!$acc parallel loop gang vector
do k = 1, 10
call ext_seq(a, n)
end do
end subroutine
! Test with explicit interface block (SubprogramDetails path).
! CHECK-DAG: acc.routine @{{.*}} func(@_QPext_iface) vector
subroutine caller_iface(a, n)
integer, intent(in) :: n
real, intent(inout) :: a(n)
integer :: k
!$acc routine(ext_iface) vector
interface
subroutine ext_iface(a, n)
integer, intent(in) :: n
real, intent(inout) :: a(n)
end subroutine
end interface
!$acc parallel loop gang
do k = 1, 10
call ext_iface(a, n)
end do
end subroutine