184 lines
9.8 KiB
Fortran
184 lines
9.8 KiB
Fortran
! Test that flang-new OpenMP and OpenMP offload related
|
|
! commands forward or expand to the appropriate commands
|
|
! for flang-new -fc1 as expected. Assumes a gfx90a, aarch64,
|
|
! and sm_70 architecture, but doesn't require one to be
|
|
! installed or compiled for, just testing the appropriate
|
|
! generation of jobs are created with the correct
|
|
! corresponding arguments.
|
|
|
|
! Test regular -fopenmp with no offload
|
|
! RUN: %flang -### -fopenmp %s 2>&1 | FileCheck --check-prefixes=CHECK-OPENMP %s
|
|
! CHECK-OPENMP: "{{[^"]*}}flang-new" "-fc1" {{.*}} "-fopenmp" {{.*}}.f90"
|
|
! CHECK-OPENMP-NOT: "{{[^"]*}}flang-new" "-fc1" {{.*}} "-fopenmp" {{.*}} "-fopenmp-is-target-device" {{.*}}.f90"
|
|
|
|
! Test regular -fopenmp with offload, and invocation filtering options
|
|
! RUN: %flang -S -### %s -o %t 2>&1 \
|
|
! RUN: -fopenmp --offload-arch=gfx90a --offload-arch=sm_70 \
|
|
! RUN: --target=aarch64-unknown-linux-gnu \
|
|
! RUN: | FileCheck %s --check-prefix=OFFLOAD-HOST-AND-DEVICE
|
|
|
|
! RUN: %flang -S -### %s -o %t 2>&1 \
|
|
! RUN: -fopenmp --offload-arch=gfx90a --offload-arch=sm_70 --offload-host-device \
|
|
! RUN: --target=aarch64-unknown-linux-gnu \
|
|
! RUN: | FileCheck %s --check-prefix=OFFLOAD-HOST-AND-DEVICE
|
|
|
|
! OFFLOAD-HOST-AND-DEVICE: "{{[^"]*}}flang-new" "-fc1" "-triple" "aarch64-unknown-linux-gnu"
|
|
! OFFLOAD-HOST-AND-DEVICE-NEXT: "{{[^"]*}}flang-new" "-fc1" "-triple" "amdgcn-amd-amdhsa"
|
|
! OFFLOAD-HOST-AND-DEVICE-NEXT: "{{[^"]*}}flang-new" "-fc1" "-triple" "nvptx64-nvidia-cuda"
|
|
! OFFLOAD-HOST-AND-DEVICE: "{{[^"]*}}flang-new" "-fc1" "-triple" "aarch64-unknown-linux-gnu"
|
|
|
|
! RUN: %flang -S -### %s -o %t 2>&1 \
|
|
! RUN: -fopenmp --offload-arch=gfx90a --offload-arch=sm_70 --offload-host-only \
|
|
! RUN: --target=aarch64-unknown-linux-gnu \
|
|
! RUN: | FileCheck %s --check-prefix=OFFLOAD-HOST
|
|
|
|
! OFFLOAD-HOST: "{{[^"]*}}flang-new" "-fc1" "-triple" "aarch64-unknown-linux-gnu"
|
|
! OFFLOAD-HOST-NOT: "-triple" "amdgcn-amd-amdhsa"
|
|
! OFFLOAD-HOST-NOT: "-triple" "nvptx64-nvidia-cuda"
|
|
! OFFLOAD-HOST-NOT: "{{[^"]*}}flang-new" "-fc1" "-triple" "aarch64-unknown-linux-gnu"
|
|
|
|
! RUN: %flang -S -### %s 2>&1 \
|
|
! RUN: -fopenmp --offload-arch=gfx90a --offload-arch=sm_70 --offload-device-only \
|
|
! RUN: --target=aarch64-unknown-linux-gnu \
|
|
! RUN: | FileCheck %s --check-prefix=OFFLOAD-DEVICE
|
|
|
|
! OFFLOAD-DEVICE: "{{[^"]*}}flang-new" "-fc1" "-triple" "aarch64-unknown-linux-gnu"
|
|
! OFFLOAD-DEVICE-NEXT: "{{[^"]*}}flang-new" "-fc1" "-triple" "amdgcn-amd-amdhsa"
|
|
! OFFLOAD-DEVICE-NEXT: "{{[^"]*}}flang-new" "-fc1" "-triple" "nvptx64-nvidia-cuda"
|
|
! OFFLOAD-DEVICE-NOT: "{{[^"]*}}flang-new" "-fc1" "-triple" "aarch64-unknown-linux-gnu"
|
|
|
|
! Test regular -fopenmp with offload for basic fopenmp-is-target-device flag addition and correct fopenmp
|
|
! RUN: %flang -### -fopenmp --offload-arch=gfx90a -fopenmp-targets=amdgcn-amd-amdhsa %s 2>&1 | FileCheck --check-prefixes=CHECK-OPENMP-IS-TARGET-DEVICE %s
|
|
! CHECK-OPENMP-IS-TARGET-DEVICE: "{{[^"]*}}flang-new" "-fc1" {{.*}} "-fopenmp" {{.*}} "-fopenmp-is-target-device" {{.*}}.f90"
|
|
|
|
! Testing appropriate flags are gnerated and appropriately assigned by the driver when offloading
|
|
! RUN: %flang -S -### %s -o %t 2>&1 \
|
|
! RUN: -fopenmp --offload-arch=gfx90a \
|
|
! RUN: --target=aarch64-unknown-linux-gnu \
|
|
! RUN: | FileCheck %s --check-prefix=OPENMP-OFFLOAD-ARGS
|
|
! OPENMP-OFFLOAD-ARGS: "{{[^"]*}}flang-new" "-fc1" "-triple" "aarch64-unknown-linux-gnu" {{.*}} "-fopenmp" {{.*}}.f90"
|
|
! OPENMP-OFFLOAD-ARGS-NEXT: "{{[^"]*}}flang-new" "-fc1" "-triple" "amdgcn-amd-amdhsa" {{.*}} "-fopenmp" {{.*}} "-fopenmp-host-ir-file-path" "{{.*}}.bc" "-fopenmp-is-target-device" {{.*}}.f90"
|
|
! OPENMP-OFFLOAD-ARGS: "{{[^"]*}}clang-offload-packager{{.*}}" {{.*}} "--image=file={{.*}}.bc,triple=amdgcn-amd-amdhsa,arch=gfx90a,kind=openmp"
|
|
! OPENMP-OFFLOAD-ARGS-NEXT: "{{[^"]*}}flang-new" "-fc1" "-triple" "aarch64-unknown-linux-gnu" {{.*}} "-fopenmp" {{.*}} "-fembed-offload-object={{.*}}.out" {{.*}}.bc"
|
|
|
|
! Test -fopenmp with offload for RTL Flag Options
|
|
! RUN: %flang -### %s -o %t 2>&1 \
|
|
! RUN: -fopenmp --offload-arch=gfx90a \
|
|
! RUN: -fopenmp-targets=amdgcn-amd-amdhsa \
|
|
! RUN: -fopenmp-assume-threads-oversubscription \
|
|
! RUN: | FileCheck %s --check-prefixes=CHECK-THREADS-OVS
|
|
! RUN: %flang -### %s -o %t 2>&1 \
|
|
! RUN: -fopenmp --offload-arch=sm_70 \
|
|
! RUN: -fopenmp-targets=nvptx64-nvidia-cuda \
|
|
! RUN: -fopenmp-assume-threads-oversubscription \
|
|
! RUN: | FileCheck %s --check-prefixes=CHECK-THREADS-OVS
|
|
! CHECK-THREADS-OVS: "{{[^"]*}}flang-new" "-fc1" {{.*}} "-fopenmp" {{.*}} "-fopenmp-is-target-device" "-fopenmp-assume-threads-oversubscription" {{.*}}.f90"
|
|
|
|
! RUN: %flang -### %s -o %t 2>&1 \
|
|
! RUN: -fopenmp --offload-arch=gfx90a \
|
|
! RUN: -fopenmp-targets=amdgcn-amd-amdhsa \
|
|
! RUN: -fopenmp-assume-teams-oversubscription \
|
|
! RUN: | FileCheck %s --check-prefixes=CHECK-TEAMS-OVS
|
|
! RUN: %flang -### %s -o %t 2>&1 \
|
|
! RUN: -fopenmp --offload-arch=sm_70 \
|
|
! RUN: -fopenmp-targets=nvptx64-nvidia-cuda \
|
|
! RUN: -fopenmp-assume-teams-oversubscription \
|
|
! RUN: | FileCheck %s --check-prefixes=CHECK-TEAMS-OVS
|
|
! CHECK-TEAMS-OVS: "{{[^"]*}}flang-new" "-fc1" {{.*}} "-fopenmp" {{.*}} "-fopenmp-is-target-device" "-fopenmp-assume-teams-oversubscription" {{.*}}.f90"
|
|
|
|
! RUN: %flang -### %s -o %t 2>&1 \
|
|
! RUN: -fopenmp --offload-arch=gfx90a \
|
|
! RUN: -fopenmp-targets=amdgcn-amd-amdhsa \
|
|
! RUN: -fopenmp-assume-no-nested-parallelism \
|
|
! RUN: | FileCheck %s --check-prefixes=CHECK-NEST-PAR
|
|
! RUN: %flang -### %s -o %t 2>&1 \
|
|
! RUN: -fopenmp --offload-arch=sm_70 \
|
|
! RUN: -fopenmp-targets=nvptx64-nvidia-cuda \
|
|
! RUN: -fopenmp-assume-no-nested-parallelism \
|
|
! RUN: | FileCheck %s --check-prefixes=CHECK-NEST-PAR
|
|
! CHECK-NEST-PAR: "{{[^"]*}}flang-new" "-fc1" {{.*}} "-fopenmp" {{.*}} "-fopenmp-is-target-device" "-fopenmp-assume-no-nested-parallelism" {{.*}}.f90"
|
|
|
|
! RUN: %flang -### %s -o %t 2>&1 \
|
|
! RUN: -fopenmp --offload-arch=gfx90a \
|
|
! RUN: -fopenmp-targets=amdgcn-amd-amdhsa \
|
|
! RUN: -fopenmp-assume-no-thread-state \
|
|
! RUN: | FileCheck %s --check-prefixes=CHECK-THREAD-STATE
|
|
! RUN: %flang -### %s -o %t 2>&1 \
|
|
! RUN: -fopenmp --offload-arch=sm_70 \
|
|
! RUN: -fopenmp-targets=nvptx64-nvidia-cuda \
|
|
! RUN: -fopenmp-assume-no-thread-state \
|
|
! RUN: | FileCheck %s --check-prefixes=CHECK-THREAD-STATE
|
|
! CHECK-THREAD-STATE: "{{[^"]*}}flang-new" "-fc1" {{.*}} "-fopenmp" {{.*}} "-fopenmp-is-target-device" "-fopenmp-assume-no-thread-state" {{.*}}.f90"
|
|
|
|
! RUN: %flang -### %s -o %t 2>&1 \
|
|
! RUN: -fopenmp --offload-arch=gfx90a \
|
|
! RUN: -fopenmp-targets=amdgcn-amd-amdhsa \
|
|
! RUN: -fopenmp-target-debug \
|
|
! RUN: | FileCheck %s --check-prefixes=CHECK-TARGET-DEBUG
|
|
! RUN: %flang -### %s -o %t 2>&1 \
|
|
! RUN: -fopenmp --offload-arch=sm_70 \
|
|
! RUN: -fopenmp-targets=nvptx64-nvidia-cuda \
|
|
! RUN: -fopenmp-target-debug \
|
|
! RUN: | FileCheck %s --check-prefixes=CHECK-TARGET-DEBUG
|
|
! CHECK-TARGET-DEBUG: "{{[^"]*}}flang-new" "-fc1" {{.*}} "-fopenmp" {{.*}} "-fopenmp-is-target-device" "-fopenmp-target-debug" {{.*}}.f90"
|
|
|
|
! RUN: %flang -### %s -o %t 2>&1 \
|
|
! RUN: -fopenmp --offload-arch=gfx90a \
|
|
! RUN: -fopenmp-targets=amdgcn-amd-amdhsa \
|
|
! RUN: -fopenmp-target-debug \
|
|
! RUN: | FileCheck %s --check-prefixes=CHECK-TARGET-DEBUG
|
|
! RUN: %flang -### %s -o %t 2>&1 \
|
|
! RUN: -fopenmp --offload-arch=sm_70 \
|
|
! RUN: -fopenmp-targets=nvptx64-nvidia-cuda \
|
|
! RUN: -fopenmp-target-debug \
|
|
! RUN: | FileCheck %s --check-prefixes=CHECK-TARGET-DEBUG
|
|
! CHECK-TARGET-DEBUG-EQ: "{{[^"]*}}flang-new" "-fc1" {{.*}} "-fopenmp" {{.*}} "-fopenmp-is-target-device" "-fopenmp-target-debug=111" {{.*}}.f90"
|
|
|
|
! RUN: %flang -S -### %s -o %t 2>&1 \
|
|
! RUN: -fopenmp --offload-arch=gfx90a \
|
|
! RUN: -fopenmp-targets=amdgcn-amd-amdhsa \
|
|
! RUN: -fopenmp-target-debug -fopenmp-assume-threads-oversubscription \
|
|
! RUN: -fopenmp-assume-teams-oversubscription -fopenmp-assume-no-nested-parallelism \
|
|
! RUN: -fopenmp-assume-no-thread-state \
|
|
! RUN: | FileCheck %s --check-prefixes=CHECK-RTL-ALL
|
|
! RUN: %flang -S -### %s -o %t 2>&1 \
|
|
! RUN: -fopenmp --offload-arch=sm_70 \
|
|
! RUN: -fopenmp-targets=nvptx64-nvidia-cuda \
|
|
! RUN: -fopenmp-target-debug -fopenmp-assume-threads-oversubscription \
|
|
! RUN: -fopenmp-assume-teams-oversubscription -fopenmp-assume-no-nested-parallelism \
|
|
! RUN: -fopenmp-assume-no-thread-state \
|
|
! RUN: | FileCheck %s --check-prefixes=CHECK-RTL-ALL
|
|
! CHECK-RTL-ALL: "{{[^"]*}}flang-new" "-fc1" {{.*}} "-fopenmp" {{.*}} "-fopenmp-is-target-device" "-fopenmp-target-debug" "-fopenmp-assume-teams-oversubscription"
|
|
! CHECK-RTL-ALL: "-fopenmp-assume-threads-oversubscription" "-fopenmp-assume-no-thread-state" "-fopenmp-assume-no-nested-parallelism"
|
|
! CHECK-RTL-ALL: {{.*}}.f90"
|
|
|
|
! RUN: %flang -### %s -o %t 2>&1 \
|
|
! RUN: -fopenmp --offload-arch=gfx90a \
|
|
! RUN: -fopenmp-targets=amdgcn-amd-amdhsa \
|
|
! RUN: -fopenmp-version=45 \
|
|
! RUN: | FileCheck %s --check-prefixes=CHECK-OPENMP-VERSION
|
|
! RUN: %flang -### %s -o %t 2>&1 \
|
|
! RUN: -fopenmp --offload-arch=sm_70 \
|
|
! RUN: -fopenmp-targets=nvptx64-nvidia-cuda \
|
|
! RUN: -fopenmp-version=45 \
|
|
! RUN: | FileCheck %s --check-prefixes=CHECK-OPENMP-VERSION
|
|
! CHECK-OPENMP-VERSION: "{{[^"]*}}flang-new" "-fc1" {{.*}} "-fopenmp" "-fopenmp-version=45" {{.*}}.f90"
|
|
|
|
! Test diagnostic error when host IR file is non-existent
|
|
! RUN: not %flang_fc1 %s -o %t 2>&1 -fopenmp -fopenmp-is-target-device \
|
|
! RUN: -fopenmp-host-ir-file-path non-existant-file.bc \
|
|
! RUN: | FileCheck %s --check-prefix=HOST-IR-MISSING
|
|
! HOST-IR-MISSING: error: provided host compiler IR file 'non-existant-file.bc' is required to generate code for OpenMP target regions but cannot be found
|
|
|
|
! Check that `-gpulibc` includes the LLVM C libraries for the GPU.
|
|
! RUN: %flang -### --target=x86_64-unknown-linux-gnu -fopenmp \
|
|
! RUN: --offload-arch=gfx90a --offload-arch=sm_52 \
|
|
! RUN: -gpulibc %s 2>&1 \
|
|
! RUN: | FileCheck --check-prefix=LIBC-GPU %s
|
|
! LIBC-GPU: "-lcgpu"{{.*}}"-lmgpu"
|
|
|
|
! RUN: %flang -### --target=x86_64-unknown-linux-gnu -fopenmp \
|
|
! RUN: --offload-arch=gfx90a --offload-arch=sm_52 \
|
|
! RUN: -nogpulibc %s 2>&1 \
|
|
! RUN: | FileCheck --check-prefix=NO-LIBC-GPU %s
|
|
! NO-LIBC-GPU-NOT: "-lcgpu"{{.*}}"-lmgpu"
|