| ! { dg-do compile } |
| ! { dg-additional-options "-cpp -foffload=disable -fdump-tree-gimple" } |
| ! { dg-additional-options "-mavx512bw" { target { i?86-*-* x86_64-*-* } } } |
| |
| #undef i386 |
| |
| program main |
| !$omp declare target to (test3) |
| contains |
| subroutine f01 () |
| end subroutine |
| subroutine f02 () |
| !$omp declare variant (f01) match (device={isa(avx512f,avx512bw)}) |
| end subroutine |
| subroutine f03 () |
| end subroutine |
| subroutine f04 () |
| !$omp declare variant (f03) match (device={kind("any"),arch(x86_64),isa(avx512f,avx512bw)}) |
| end subroutine |
| subroutine f05 () |
| end subroutine |
| subroutine f06 () |
| !$omp declare variant (f05) match (device={kind(gpu)}) |
| end subroutine |
| subroutine f07 () |
| end subroutine |
| subroutine f08 () |
| !$omp declare variant (f07) match (device={kind(cpu)}) |
| end subroutine |
| subroutine f09 () |
| end subroutine |
| subroutine f10 () |
| !$omp declare variant (f09) match (device={isa(sm_35)}) |
| end subroutine |
| subroutine f11 () |
| end subroutine |
| subroutine f12 () |
| !$omp declare variant (f11) match (device={arch("nvptx")}) |
| end subroutine |
| subroutine f13 () |
| end subroutine |
| subroutine f14 () |
| !$omp declare variant (f13) match (device={arch(i386),isa("sse4")}) |
| end subroutine |
| subroutine f15 () |
| end subroutine |
| subroutine f16 () |
| !$omp declare variant (f15) match (device={isa(sse4,ssse3),arch(i386)}) |
| end subroutine |
| subroutine f17 () |
| end subroutine |
| subroutine f18 () |
| !$omp declare variant (f17) match (device={kind(any,fpga)}) |
| end subroutine |
| |
| subroutine test1 () |
| !$omp declare target |
| integer :: i |
| |
| call f02 () ! { dg-final { scan-tree-dump-times "f01 \\\(\\\);" 1 "gimple" { target i?86-*-* x86_64-*-* } } } |
| ! { dg-final { scan-tree-dump-times "f02 \\\(\\\);" 1 "gimple" { target { ! { i?86-*-* x86_64-*-* } } } } } |
| call f14 () ! { dg-final { scan-tree-dump-times "f13 \\\(\\\);" 1 "gimple" { target ia32 } } } |
| ! { dg-final { scan-tree-dump-times "f14 \\\(\\\);" 1 "gimple" { target { ! ia32 } } } } |
| call f18 () ! { dg-final { scan-tree-dump-times "f18 \\\(\\\);" 1 "gimple" } } */ |
| end subroutine |
| |
| #if defined(__i386__) || defined(__x86_64__) |
| __attribute__((target ("avx512f,avx512bw"))) |
| #endif |
| subroutine test2 () |
| !$omp target |
| call f04 () ! { dg-final { scan-tree-dump-times "f03 \\\(\\\);" 1 "gimple" { target { { i?86-*-* x86_64-*-* } && lp64 } } } } |
| ! { dg-final { scan-tree-dump-times "f04 \\\(\\\);" 1 "gimple" { target { { ! lp64 } || { ! { i?86-*-* x86_64-*-* } } } } } } |
| !$omp end target |
| !$omp target |
| call f16 () ! { dg-final { scan-tree-dump-times "f15 \\\(\\\);" 1 "gimple" { target ia32 } } } |
| ! { dg-final { scan-tree-dump-times "f16 \\\(\\\);" 1 "gimple" { target { ! ia32 } } } } |
| !$omp end target |
| end subroutine |
| |
| subroutine test3 () |
| call f06 () ! { dg-final { scan-tree-dump-times "f06 \\\(\\\);" 1 "gimple" { target { ! { nvptx*-*-* amdgcn*-*-* } } } } } |
| call f08 () ! { dg-final { scan-tree-dump-times "f07 \\\(\\\);" 1 "gimple" { target { ! { nvptx*-*-* amdgcn*-*-* } } } } } |
| end subroutine |
| |
| subroutine test4 () |
| !$omp target |
| call f10 () ! { dg-final { scan-tree-dump-times "f10 \\\(\\\);" 1 "gimple" { target { ! { nvptx*-*-* amdgcn*-*-* } } } } } |
| !$omp end target |
| |
| !$omp target |
| call f12 () ! { dg-final { scan-tree-dump-times "f12 \\\(\\\);" 1 "gimple" { target { ! { nvptx*-*-* } } } } } |
| ! { dg-final { scan-tree-dump-times "f11 \\\(\\\);" 1 "gimple" { target { nvptx*-*-* } } } } |
| !$omp end target |
| end subroutine |
| end program |
| |