brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.3 KiB · 8660bec Raw
233 lines · plain
1! Test that flang OpenMP and OpenMP offload related2! commands forward or expand to the appropriate commands3! for flang -fc1 as expected. Assumes a gfx90a, aarch64,4! and sm_70 architecture, but doesn't require one to be5! installed or compiled for, just testing the appropriate6! generation of jobs are created with the correct7! corresponding arguments.8 9! Test regular -fopenmp with no offload10! RUN: %flang -### -fopenmp %s 2>&1 | FileCheck --check-prefixes=CHECK-OPENMP %s11! CHECK-OPENMP: "{{[^"]*}}flang" "-fc1" {{.*}} "-fopenmp" {{.*}}.f90"12! CHECK-OPENMP-NOT: "{{[^"]*}}flang" "-fc1" {{.*}} "-fopenmp" {{.*}} "-fopenmp-is-target-device" {{.*}}.f90"13 14! Test regular -fopenmp with offload, and invocation filtering options15! RUN: %flang -S -### %s -o %t 2>&1 \16! RUN: -fopenmp --offload-arch=gfx90a --offload-arch=sm_70 \17! RUN: --target=aarch64-unknown-linux-gnu -nogpulib\18! RUN:   | FileCheck %s --check-prefix=OFFLOAD-HOST-AND-DEVICE19 20! RUN: %flang -S -### %s -o %t 2>&1 \21! RUN: -fopenmp --offload-arch=gfx90a --offload-arch=sm_70 --offload-host-device \22! RUN: --target=aarch64-unknown-linux-gnu -nogpulib\23! RUN:   | FileCheck %s --check-prefix=OFFLOAD-HOST-AND-DEVICE24 25! OFFLOAD-HOST-AND-DEVICE: "{{[^"]*}}flang" "-fc1" "-triple" "aarch64-unknown-linux-gnu"26! OFFLOAD-HOST-AND-DEVICE-NEXT: "{{[^"]*}}flang" "-fc1" "-triple" "amdgcn-amd-amdhsa"27! OFFLOAD-HOST-AND-DEVICE-NEXT: "{{[^"]*}}flang" "-fc1" "-triple" "nvptx64-nvidia-cuda"28! OFFLOAD-HOST-AND-DEVICE: "{{[^"]*}}flang" "-fc1" "-triple" "aarch64-unknown-linux-gnu"29 30! RUN: %flang -S -### %s -o %t 2>&1 \31! RUN: -fopenmp --offload-arch=gfx90a --offload-arch=sm_70 --offload-host-only \32! RUN: --target=aarch64-unknown-linux-gnu -nogpulib\33! RUN:   | FileCheck %s --check-prefix=OFFLOAD-HOST34 35! OFFLOAD-HOST: "{{[^"]*}}flang" "-fc1" "-triple" "aarch64-unknown-linux-gnu"36! OFFLOAD-HOST-NOT: "-triple" "amdgcn-amd-amdhsa"37! OFFLOAD-HOST-NOT: "-triple" "nvptx64-nvidia-cuda"38! OFFLOAD-HOST-NOT: "{{[^"]*}}flang" "-fc1" "-triple" "aarch64-unknown-linux-gnu"39 40! RUN: %flang -S -### %s 2>&1 \41! RUN: -fopenmp --offload-arch=gfx90a --offload-arch=sm_70 --offload-device-only \42! RUN: --target=aarch64-unknown-linux-gnu -nogpulib\43! RUN:   | FileCheck %s --check-prefix=OFFLOAD-DEVICE44 45! OFFLOAD-DEVICE: "{{[^"]*}}flang" "-fc1" "-triple" "aarch64-unknown-linux-gnu"46! OFFLOAD-DEVICE-NEXT: "{{[^"]*}}flang" "-fc1" "-triple" "amdgcn-amd-amdhsa"47! OFFLOAD-DEVICE-NEXT: "{{[^"]*}}flang" "-fc1" "-triple" "nvptx64-nvidia-cuda"48! OFFLOAD-DEVICE-NOT: "{{[^"]*}}flang" "-fc1" "-triple" "aarch64-unknown-linux-gnu"49 50! Test regular -fopenmp with offload for basic fopenmp-is-target-device flag addition and correct fopenmp51! RUN: %flang -### -fopenmp --offload-arch=gfx90a -fopenmp-targets=amdgcn-amd-amdhsa -nogpulib %s 2>&1 | FileCheck --check-prefixes=CHECK-OPENMP-IS-TARGET-DEVICE %s52! CHECK-OPENMP-IS-TARGET-DEVICE: "{{[^"]*}}flang" "-fc1" {{.*}} "-fopenmp" {{.*}} "-fopenmp-is-target-device" {{.*}}.f90"53 54! Testing appropriate flags are gnerated and appropriately assigned by the driver when offloading55! RUN: %flang -S -### %s -o %t 2>&1 \56! RUN: -fopenmp --offload-arch=gfx90a \57! RUN: --target=aarch64-unknown-linux-gnu -nogpulib\58! RUN:   | FileCheck %s --check-prefix=OPENMP-OFFLOAD-ARGS59! OPENMP-OFFLOAD-ARGS: "{{[^"]*}}flang" "-fc1" "-triple" "aarch64-unknown-linux-gnu" {{.*}} "-fopenmp" {{.*}}.f90"60! OPENMP-OFFLOAD-ARGS-NEXT: "{{[^"]*}}flang" "-fc1" "-triple" "amdgcn-amd-amdhsa"61! OPENMP-OFFLOAD-ARGS-SAME:  "-fopenmp"62! OPENMP-OFFLOAD-ARGS-SAME:  "-fopenmp-host-ir-file-path" "{{.*}}.bc" "-fopenmp-is-target-device"63! OPENMP-OFFLOAD-ARGS-SAME:  {{.*}}.f90"64! OPENMP-OFFLOAD-ARGS: "{{[^"]*}}llvm-offload-binary{{.*}}" {{.*}} "--image=file={{.*}}.bc,triple=amdgcn-amd-amdhsa,arch=gfx90a,kind=openmp"65! OPENMP-OFFLOAD-ARGS-NEXT: "{{[^"]*}}flang" "-fc1" "-triple" "aarch64-unknown-linux-gnu"66! OPENMP-OFFLOAD-ARGS-SAME:  "-fopenmp"67! OPENMP-OFFLOAD-ARGS-SAME:  "-fembed-offload-object={{.*}}.out" {{.*}}.bc"68 69! Test -fopenmp with offload for RTL Flag Options70! RUN: %flang -### %s -o %t 2>&1 \71! RUN: -fopenmp --offload-arch=gfx90a \72! RUN: -fopenmp-targets=amdgcn-amd-amdhsa \73! RUN: -fopenmp-assume-threads-oversubscription -nogpulib \74! RUN: | FileCheck %s --check-prefixes=CHECK-THREADS-OVS75! RUN: %flang -### %s -o %t 2>&1 \76! RUN: -fopenmp --offload-arch=sm_70 \77! RUN: -fopenmp-targets=nvptx64-nvidia-cuda \78! RUN: -fopenmp-assume-threads-oversubscription  \79! RUN: | FileCheck %s --check-prefixes=CHECK-THREADS-OVS80! CHECK-THREADS-OVS: "{{[^"]*}}flang" "-fc1" {{.*}} "-fopenmp" {{.*}} "-fopenmp-is-target-device" "-fopenmp-assume-threads-oversubscription" {{.*}}.f90"81 82! RUN: %flang -### %s -o %t 2>&1 \83! RUN: -fopenmp --offload-arch=gfx90a \84! RUN: -fopenmp-targets=amdgcn-amd-amdhsa \85! RUN: -fopenmp-assume-teams-oversubscription  -nogpulib\86! RUN: | FileCheck %s --check-prefixes=CHECK-TEAMS-OVS87! RUN: %flang -### %s -o %t 2>&1 \88! RUN: -fopenmp --offload-arch=sm_70 \89! RUN: -fopenmp-targets=nvptx64-nvidia-cuda \90! RUN: -fopenmp-assume-teams-oversubscription  \91! RUN: | FileCheck %s --check-prefixes=CHECK-TEAMS-OVS92! CHECK-TEAMS-OVS: "{{[^"]*}}flang" "-fc1" {{.*}} "-fopenmp" {{.*}} "-fopenmp-is-target-device" "-fopenmp-assume-teams-oversubscription" {{.*}}.f90"93 94! RUN: %flang -### %s -o %t 2>&1 \95! RUN: -fopenmp --offload-arch=gfx90a \96! RUN: -fopenmp-targets=amdgcn-amd-amdhsa \97! RUN: -fopenmp-assume-no-nested-parallelism  -nogpulib\98! RUN: | FileCheck %s --check-prefixes=CHECK-NEST-PAR99! RUN: %flang -### %s -o %t 2>&1 \100! RUN: -fopenmp --offload-arch=sm_70 \101! RUN: -fopenmp-targets=nvptx64-nvidia-cuda \102! RUN: -fopenmp-assume-no-nested-parallelism  \103! RUN: | FileCheck %s --check-prefixes=CHECK-NEST-PAR104! CHECK-NEST-PAR: "{{[^"]*}}flang" "-fc1" {{.*}} "-fopenmp" {{.*}} "-fopenmp-is-target-device" "-fopenmp-assume-no-nested-parallelism" {{.*}}.f90"105 106! RUN: %flang -### %s -o %t 2>&1 \107! RUN: -fopenmp --offload-arch=gfx90a \108! RUN: -fopenmp-targets=amdgcn-amd-amdhsa \109! RUN: -fopenmp-assume-no-thread-state -nogpulib\110! RUN: | FileCheck %s --check-prefixes=CHECK-THREAD-STATE111! RUN: %flang -### %s -o %t 2>&1 \112! RUN: -fopenmp --offload-arch=sm_70 \113! RUN: -fopenmp-targets=nvptx64-nvidia-cuda \114! RUN: -fopenmp-assume-no-thread-state \115! RUN: | FileCheck %s --check-prefixes=CHECK-THREAD-STATE116! CHECK-THREAD-STATE: "{{[^"]*}}flang" "-fc1" {{.*}} "-fopenmp" {{.*}} "-fopenmp-is-target-device" "-fopenmp-assume-no-thread-state" {{.*}}.f90"117 118! RUN: %flang -### %s -o %t 2>&1 \119! RUN: -fopenmp --offload-arch=gfx90a \120! RUN: -fopenmp-targets=amdgcn-amd-amdhsa \121! RUN: -fopenmp-target-debug -nogpulib\122! RUN: | FileCheck %s --check-prefixes=CHECK-TARGET-DEBUG123! RUN: %flang -### %s -o %t 2>&1 \124! RUN: -fopenmp --offload-arch=sm_70 \125! RUN: -fopenmp-targets=nvptx64-nvidia-cuda \126! RUN: -fopenmp-target-debug \127! RUN: | FileCheck %s --check-prefixes=CHECK-TARGET-DEBUG128! CHECK-TARGET-DEBUG: "{{[^"]*}}flang" "-fc1" {{.*}} "-fopenmp" {{.*}} "-fopenmp-is-target-device" "-fopenmp-target-debug" {{.*}}.f90"129 130! RUN: %flang -### %s -o %t 2>&1 \131! RUN: -fopenmp --offload-arch=gfx90a \132! RUN: -fopenmp-targets=amdgcn-amd-amdhsa \133! RUN: -fopenmp-target-debug=111 -nogpulib\134! RUN: | FileCheck %s --check-prefixes=CHECK-TARGET-DEBUG-EQ135! RUN: %flang -### %s -o %t 2>&1 \136! RUN: -fopenmp --offload-arch=sm_70 \137! RUN: -fopenmp-targets=nvptx64-nvidia-cuda \138! RUN: -fopenmp-target-debug=111 \139! RUN: | FileCheck %s --check-prefixes=CHECK-TARGET-DEBUG-EQ140! CHECK-TARGET-DEBUG-EQ: "{{[^"]*}}flang" "-fc1" {{.*}} "-fopenmp" {{.*}} "-fopenmp-is-target-device" "-fopenmp-target-debug=111" {{.*}}.f90"141 142! RUN: %flang -S -### %s -o %t 2>&1 \143! RUN: -fopenmp --offload-arch=gfx90a \144! RUN: -fopenmp-targets=amdgcn-amd-amdhsa \145! RUN: -fopenmp-target-debug -fopenmp-assume-threads-oversubscription \146! RUN: -fopenmp-assume-teams-oversubscription -fopenmp-assume-no-nested-parallelism \147! RUN: -fopenmp-assume-no-thread-state -nogpulib\148! RUN: | FileCheck %s --check-prefixes=CHECK-RTL-ALL149! RUN: %flang -S -### %s -o %t 2>&1 \150! RUN: -fopenmp --offload-arch=sm_70 \151! RUN: -fopenmp-targets=nvptx64-nvidia-cuda \152! RUN: -fopenmp-target-debug -fopenmp-assume-threads-oversubscription \153! RUN: -fopenmp-assume-teams-oversubscription -fopenmp-assume-no-nested-parallelism \154! RUN: -fopenmp-assume-no-thread-state \155! RUN: | FileCheck %s --check-prefixes=CHECK-RTL-ALL156! CHECK-RTL-ALL: "{{[^"]*}}flang" "-fc1" {{.*}} "-fopenmp" {{.*}} "-fopenmp-is-target-device" "-fopenmp-target-debug" "-fopenmp-assume-teams-oversubscription"157! CHECK-RTL-ALL: "-fopenmp-assume-threads-oversubscription" "-fopenmp-assume-no-thread-state" "-fopenmp-assume-no-nested-parallelism"158! CHECK-RTL-ALL: {{.*}}.f90"159 160! RUN: %flang -### %s -o %t 2>&1 \161! RUN: -fopenmp --offload-arch=gfx90a \162! RUN: -fopenmp-targets=amdgcn-amd-amdhsa \163! RUN: -fopenmp-version=45 -nogpulib\164! RUN: | FileCheck %s --check-prefixes=CHECK-OPENMP-VERSION165! RUN: %flang -### %s -o %t 2>&1 \166! RUN: -fopenmp --offload-arch=sm_70 \167! RUN: -fopenmp-targets=nvptx64-nvidia-cuda \168! RUN: -fopenmp-version=45 \169! RUN: | FileCheck %s --check-prefixes=CHECK-OPENMP-VERSION170! CHECK-OPENMP-VERSION: "{{[^"]*}}flang" "-fc1" {{.*}} "-fopenmp" "-fopenmp-version=45" {{.*}}.f90"171 172! Test diagnostic error when host IR file is non-existent173! RUN: not %flang_fc1 %s -o %t 2>&1 -fopenmp -fopenmp-is-target-device \174! RUN: -fopenmp-host-ir-file-path non-existant-file.bc \175! RUN: | FileCheck %s --check-prefix=HOST-IR-MISSING176! 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 found177 178! RUN:   %flang -### -v --target=x86_64-unknown-linux-gnu -fopenmp  \179! RUN:      --offload-arch=gfx900 \180! RUN:      --rocm-path=%S/Inputs/rocm %s 2>&1 \181! RUN:   | FileCheck --check-prefix=ROCM-PATH %s182! ROCM-PATH: Found HIP installation: {{.*Inputs.*rocm}}, version 3.6.20214-a2917cd183 184! RUN: %flang -### -target x86_64-pc-linux-gnu -fopenmp --offload-arch=gfx900 \185! RUN:      --rocm-device-lib-path=%S/Inputs/rocm/amdgcn/bitcode %s  2>&1 | \186! RUN: FileCheck %s --check-prefix=ROCM-DEVICE-LIB187! ROCM-DEVICE-LIB: "-fc1" {{.*}}ocml.bc"{{.*}}oclc_daz_opt_off.bc"{{.*}}oclc_unsafe_math_off.bc"{{.*}}oclc_finite_only_off.bc"{{.*}}oclc_correctly_rounded_sqrt_on.bc"{{.*}}oclc_wavefrontsize64_on.bc"{{.*}}oclc_isa_version_900.bc"188 189! Test -fopenmp-force-usm option without offload190! RUN: %flang -S -### %s -o %t 2>&1 \191! RUN: -fopenmp -fopenmp-force-usm \192! RUN: --target=aarch64-unknown-linux-gnu \193! RUN:   | FileCheck %s --check-prefix=FORCE-USM-NO-OFFLOAD194 195! FORCE-USM-NO-OFFLOAD: "{{[^"]*}}flang" "-fc1" "-triple" "aarch64-unknown-linux-gnu"196! FORCE-USM-NO-OFFLOAD-SAME: "-fopenmp" "-fopenmp-force-usm"197 198! Test -fopenmp-force-usm option with offload199! RUN: %flang -S -### %s -o %t 2>&1 \200! RUN: -fopenmp -fopenmp-force-usm --offload-arch=gfx90a \201! RUN: --target=aarch64-unknown-linux-gnu -nogpulib\202! RUN:   | FileCheck %s --check-prefix=FORCE-USM-OFFLOAD203 204! FORCE-USM-OFFLOAD: "{{[^"]*}}flang" "-fc1" "-triple" "aarch64-unknown-linux-gnu"205! FORCE-USM-OFFLOAD-SAME: "-fopenmp" "-fopenmp-force-usm"206! FORCE-USM-OFFLOAD-NEXT: "{{[^"]*}}flang" "-fc1" "-triple" "amdgcn-amd-amdhsa"207! FORCE-USM-OFFLOAD-SAME: "-fopenmp" "-fopenmp-force-usm"208 209! RUN:   %flang -### -v --target=x86_64-unknown-linux-gnu -fopenmp  \210! RUN:      --offload-arch=gfx900 \211! RUN:      --rocm-path=%S/Inputs/rocm %s 2>&1 \212! RUN:   | FileCheck --check-prefix=MLINK-BUILTIN-BITCODE  %s213! MLINK-BUILTIN-BITCODE:      "{{[^"]*}}flang" "-fc1" "-triple" "amdgcn-amd-amdhsa"214! MLINK-BUILTIN-BITCODE-SAME: "-mlink-builtin-bitcode" {{.*Inputs.*rocm.*amdgcn.*bitcode.*}}oclc_isa_version_900.bc215 216! Test that the -fopenmp-targets option is added to host compilation invocations217! when --offload-arch or -fopenmp-targets are set.218! RUN: %flang -S -### %s -o %t 2>&1 \219! RUN: -fopenmp --offload-arch=gfx90a \220! RUN: --target=x86_64-unknown-linux-gnu -nogpulib \221! RUN: | FileCheck %s --check-prefix=OFFLOAD-TARGETS222! RUN: %flang -S -### %s -o %t 2>&1 \223! RUN: -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa --offload-arch=gfx90a \224! RUN: --target=x86_64-unknown-linux-gnu -nogpulib \225! RUN: | FileCheck %s --check-prefix=OFFLOAD-TARGETS226 227! OFFLOAD-TARGETS: "{{[^"]*}}flang" "-fc1" "-triple" "x86_64-unknown-linux-gnu"228! OFFLOAD-TARGETS-SAME: "--offload-targets=amdgcn-amd-amdhsa"229! OFFLOAD-TARGETS-NEXT: "{{[^"]*}}flang" "-fc1" "-triple" "amdgcn-amd-amdhsa"230! OFFLOAD-TARGETS-NOT: --offload-targets231! OFFLOAD-TARGETS: "{{[^"]*}}flang" "-fc1" "-triple" "x86_64-unknown-linux-gnu"232! OFFLOAD-TARGETS-SAME: "--offload-targets=amdgcn-amd-amdhsa"233