Skip to content

Commit 339eb00

Browse files
saiislamronlieb
authored andcommitted
[Clang][OpenMP][NFC] Enable various XFAILed tests
Many tests were xfailed in the past to unbock the merge process. This commit fixes and enables them. Also deleted some dead functions in the clang driver. Change-Id: If6e5a416c9677fab2bf31b9a5d60577fbb34ad77
1 parent c677e29 commit 339eb00

11 files changed

+124
-415
lines changed

clang/include/clang/Driver/Driver.h

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -813,24 +813,6 @@ class Driver {
813813
static const char *getExecutableForDriverMode(DriverMode Mode);
814814

815815
public:
816-
/// Add string to OffloadArchs set for each '--offload-arch=' arg
817-
///
818-
/// \param C - The compilation that is being built.
819-
/// \param OffloadArchs - The mutable set of strings, one per Offloading arch
820-
bool
821-
GetTargetInfoFromOffloadArchOpts(Compilation &C,
822-
std::set<std::string> &OffloadArchs) const;
823-
824-
/// Add string to OffloadArchs set for each offloading arch specified
825-
/// with legacy args. Unlike the newer, '--offload-arch' arg, specifying
826-
/// an offload arch with legacy args required three args:
827-
/// '-fopenmp-targets=', '-Xopenmp-target=', and '-march=' .
828-
///
829-
/// \param C - The compilation that is being built.
830-
/// \param OffloadArchs - The mutable set of strings, one per Offloading arch
831-
bool GetTargetInfoFromMarch(Compilation &C,
832-
std::set<std::string> &OffloadArchs) const;
833-
834816
/// GetReleaseVersion - Parse (([0-9]+)(.([0-9]+)(.([0-9]+)?))?)? and
835817
/// return the grouped values as integers. Numbers which are not
836818
/// provided are set to 0.

clang/lib/Driver/Driver.cpp

Lines changed: 0 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -776,125 +776,6 @@ Driver::OpenMPRuntimeKind Driver::getOpenMPRuntime(const ArgList &Args) const {
776776
return RT;
777777
}
778778

779-
bool GetTargetInfoFromOffloadArch(Compilation &C, const char *OpenMPTarget,
780-
std::set<std::string> &OffloadArchs,
781-
bool erase = false) {
782-
StringRef DeviceTripleStr;
783-
if (!std::strncmp(OpenMPTarget, "gfx", 3)) {
784-
DeviceTripleStr = "amdgcn-amd-amdhsa";
785-
786-
if (erase)
787-
OffloadArchs.erase(
788-
DeviceTripleStr.str().append("^").append(OpenMPTarget));
789-
else {
790-
llvm::Triple TT(DeviceTripleStr);
791-
llvm::StringMap<bool> Features;
792-
StringRef IdStr(OpenMPTarget);
793-
auto Arch = parseTargetID(TT, IdStr, &Features);
794-
if (!Arch) {
795-
C.getDriver().Diag(clang::diag::err_drv_bad_target_id) << IdStr;
796-
C.setContainsError();
797-
return false;
798-
}
799-
OffloadArchs.insert(
800-
DeviceTripleStr.str().append("^").append(OpenMPTarget));
801-
}
802-
} else if (!std::strncmp(OpenMPTarget, "sm_", 3)) {
803-
const ToolChain *HostTC = C.getSingleOffloadToolChain<Action::OFK_Host>();
804-
const llvm::Triple &HostTriple = HostTC->getTriple();
805-
DeviceTripleStr = HostTriple.isArch64Bit() ? "nvptx64-nvidia-cuda^"
806-
: "nvptx-nvidia-cuda^";
807-
if (erase)
808-
OffloadArchs.erase(DeviceTripleStr.str().append(OpenMPTarget));
809-
else
810-
OffloadArchs.insert(DeviceTripleStr.str().append(OpenMPTarget));
811-
} else {
812-
const ToolChain *HostTC = C.getSingleOffloadToolChain<Action::OFK_Host>();
813-
const llvm::Triple &HostTriple = HostTC->getTriple();
814-
StringRef HostTripleStr = HostTriple.str();
815-
if (erase)
816-
OffloadArchs.erase(HostTripleStr.str().append("^").append(OpenMPTarget));
817-
else
818-
OffloadArchs.insert(HostTripleStr.str().append("^").append(OpenMPTarget));
819-
}
820-
return true;
821-
}
822-
823-
bool Driver::GetTargetInfoFromMarch(Compilation &C,
824-
std::set<std::string> &OffloadArchs) const {
825-
for (Arg *A : C.getInputArgs()) {
826-
if (A->getOption().matches(options::OPT_Xopenmp_target_EQ)) {
827-
for (auto *V : A->getValues()) {
828-
StringRef VStr = StringRef(V);
829-
if (VStr.starts_with("-march=") || VStr.starts_with("--march="))
830-
for (StringRef OpenMPTargetArch :
831-
llvm::split(VStr.split('=').second, ",")) {
832-
StringRef OpenMPTargetTriple = StringRef(A->getValue(0));
833-
llvm::Triple TargetTriple(OpenMPTargetTriple);
834-
llvm::StringMap<bool> Features;
835-
auto ArchStr =
836-
parseTargetID(TargetTriple, OpenMPTargetArch, &Features);
837-
if (TargetTriple.isAMDGCN() && !ArchStr) {
838-
C.getDriver().Diag(clang::diag::err_drv_bad_target_id)
839-
<< OpenMPTargetArch;
840-
C.setContainsError();
841-
return false;
842-
}
843-
StringRef ArchProc = OpenMPTargetArch.split(":").first;
844-
if (ArchProc.empty()) {
845-
C.getDriver().Diag(clang::diag::err_drv_cuda_bad_gpu_arch)
846-
<< VStr;
847-
C.setContainsError();
848-
return false;
849-
}
850-
851-
// Append Triple and Arch to form a unique key for each instance of
852-
// the ToolChain
853-
if (!OpenMPTargetTriple.empty() && !OpenMPTargetArch.empty())
854-
OffloadArchs.insert(TargetTriple.normalize().append("^").append(
855-
OpenMPTargetArch.str()));
856-
}
857-
A->claim();
858-
}
859-
}
860-
}
861-
return true;
862-
}
863-
864-
bool Driver::GetTargetInfoFromOffloadArchOpts(
865-
Compilation &C, std::set<std::string> &OffloadArchs) const {
866-
for (Arg *A : C.getInputArgs()) {
867-
if (!(A->getOption().matches(options::OPT_offload_arch_EQ) ||
868-
A->getOption().matches(options::OPT_no_offload_arch_EQ))) {
869-
continue;
870-
}
871-
A->claim();
872-
873-
StringRef ArchStr = A->getValue();
874-
875-
if (A->getOption().matches(options::OPT_no_offload_arch_EQ) &&
876-
ArchStr == "all") {
877-
OffloadArchs.clear();
878-
continue;
879-
}
880-
if (ArchStr.empty())
881-
continue;
882-
else if (A->getOption().matches(options::OPT_offload_arch_EQ)) {
883-
for (StringRef ArchVal : llvm::split(ArchStr, ",")) {
884-
auto status = GetTargetInfoFromOffloadArch(C, ArchVal.str().c_str(),
885-
OffloadArchs);
886-
if (!status)
887-
return false;
888-
}
889-
} else if (A->getOption().matches(options::OPT_no_offload_arch_EQ))
890-
GetTargetInfoFromOffloadArch(C, ArchStr.str().c_str(), OffloadArchs,
891-
/* erase */ true);
892-
else
893-
llvm_unreachable("Unexpected option.");
894-
}
895-
return true;
896-
}
897-
898779
void Driver::CreateOffloadingDeviceToolChains(Compilation &C,
899780
InputList &Inputs) {
900781

clang/test/Driver/amdgpu-openmp-system-arch.c

Lines changed: 0 additions & 26 deletions
This file was deleted.
Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,39 @@
11
// REQUIRES: x86-registered-target
22
// REQUIRES: amdgpu-registered-target
33
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa \
4-
// RUN: -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx906 --libomptarget-amdgpu-bc-path=%S/Inputs/hip_dev_lib %s 2>&1 \
4+
// RUN: -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx906 --no-opaque-offload-linker --libomptarget-amdgpu-bc-path=%S/Inputs/hip_dev_lib %s 2>&1 \
55
// RUN: | FileCheck %s
66
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa \
7-
// RUN: --offload-arch=gfx906 --libomptarget-amdgpu-bc-path=%S/Inputs/hip_dev_lib %s 2>&1 \
7+
// RUN: --offload-arch=gfx906 --no-opaque-offload-linker --libomptarget-amdgpu-bc-path=%S/Inputs/hip_dev_lib %s 2>&1 \
88
// RUN: | FileCheck %s
99

10-
// XFAIL: *
11-
1210
// verify the tools invocations
1311
// CHECK: clang{{.*}}"-cc1" "-triple" "x86_64-unknown-linux-gnu" "-emit-llvm-bc"{{.*}}"-x" "c"
14-
// CHECK: clang{{.*}}"-cc1" "-triple" "amdgcn-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"{{.*}}"-target-cpu" "gfx906"{{.*}}"-fcuda-is-device"{{.*}}"-mlink-builtin-bitcode" "{{.*}}libomptarget-amdgpu-gfx906.bc"
12+
// CHECK: clang{{.*}}"-cc1" "-triple" "amdgcn-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"{{.*}}"-target-cpu" "gfx906"{{.*}}"-fcuda-is-device"{{.*}}"-mlink-builtin-bitcode"
1513
// CHECK: clang{{.*}}"-cc1" "-triple" "x86_64-unknown-linux-gnu" "-emit-obj"
16-
// CHECK: clang-linker-wrapper{{.*}}"--"{{.*}} "-o" "a.out"
14+
// CHECK: clang-linker-wrapper{{.*}} "-o" "a.out"
1715

18-
// RUN: %clang -ccc-print-phases --target=x86_64-unknown-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx906 %s 2>&1 \
19-
// RUN: | FileCheck --check-prefix=CHECK-PHASES %s
16+
// RUN: %clang -ccc-print-phases --target=x86_64-unknown-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa \
17+
// RUN: -march=gfx906 %s 2>&1 | FileCheck --check-prefix=CHECK-PHASES %s
18+
// phases
2019
// CHECK-PHASES: 0: input, "[[INPUT:.+]]", c, (host-openmp)
2120
// CHECK-PHASES: 1: preprocessor, {0}, cpp-output, (host-openmp)
2221
// CHECK-PHASES: 2: compiler, {1}, ir, (host-openmp)
23-
// CHECK-PHASES: 3: input, "[[INPUT]]", c, (device-openmp)
24-
// CHECK-PHASES: 4: preprocessor, {3}, cpp-output, (device-openmp)
25-
// CHECK-PHASES: 5: compiler, {4}, ir, (device-openmp)
26-
// CHECK-PHASES: 6: offload, "host-openmp (x86_64-unknown-linux-gnu)" {2}, "device-openmp (amdgcn-amd-amdhsa)" {5}, ir
27-
// CHECK-PHASES: 7: backend, {6}, assembler, (device-openmp)
28-
// CHECK-PHASES: 8: assembler, {7}, object, (device-openmp)
29-
// CHECK-PHASES: 9: offload, "device-openmp (amdgcn-amd-amdhsa)" {8}, object
30-
// CHECK-PHASES: 10: clang-offload-packager, {9}, image
31-
// CHECK-PHASES: 11: offload, "host-openmp (x86_64-unknown-linux-gnu)" {2}, " (x86_64-unknown-linux-gnu)" {10}, ir
32-
// CHECK-PHASES: 12: backend, {11}, assembler, (host-openmp)
33-
// CHECK-PHASES: 13: assembler, {12}, object, (host-openmp)
34-
// CHECK-PHASES: 14: clang-linker-wrapper, {13}, image, (host-openmp)
22+
// CHECK-PHASES: 3: input, "[[INPUT]]", c, (device-openmp, gfx906)
23+
// CHECK-PHASES: 4: preprocessor, {3}, cpp-output, (device-openmp, gfx906)
24+
// CHECK-PHASES: 5: compiler, {4}, ir, (device-openmp, gfx906)
25+
// CHECK-PHASES: 6: offload, "host-openmp (x86_64-unknown-linux-gnu)" {2}, "device-openmp (amdgcn-amd-amdhsa:gfx906)" {5}, ir
26+
// CHECK-PHASES: 7: backend, {6}, ir, (device-openmp, gfx906)
27+
// CHECK-PHASES: 8: offload, "device-openmp (amdgcn-amd-amdhsa:gfx906)" {7}, ir
28+
// CHECK-PHASES: 9: clang-offload-packager, {8}, image, (device-openmp)
29+
// CHECK-PHASES: 10: offload, "host-openmp (x86_64-unknown-linux-gnu)" {2}, "device-openmp (x86_64-unknown-linux-gnu)" {9}, ir
30+
// CHECK-PHASES: 11: backend, {10}, assembler, (host-openmp)
31+
// CHECK-PHASES: 12: assembler, {11}, object, (host-openmp)
32+
// CHECK-PHASES: 13: clang-linker-wrapper, {12}, image, (host-openmp)
3533

3634
// handling of --libomptarget-amdgpu-bc-path
3735
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx803 --libomptarget-amdgpu-bc-path=%S/Inputs/hip_dev_lib/libomptarget-amdgpu-gfx803.bc %s 2>&1 | FileCheck %s --check-prefix=CHECK-LIBOMPTARGET
38-
// CHECK-LIBOMPTARGET: clang{{.*}}"-cc1"{{.*}}"-triple" "amdgcn-amd-amdhsa"{{.*}}"-target-cpu" "gfx803" "-fcuda-is-device" "-mlink-builtin-bitcode"{{.*}}Inputs/hip_dev_lib/libomptarget-amdgpu-gfx803.bc"{{.*}}
36+
// CHECK-LIBOMPTARGET: clang{{.*}}"-cc1"{{.*}}"-triple" "amdgcn-amd-amdhsa"{{.*}}"-target-cpu" "gfx803" "-fcuda-is-device"
3937

4038
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx803 -nogpulib %s 2>&1 | FileCheck %s --check-prefix=CHECK-NOGPULIB
4139
// CHECK-NOGPULIB-NOT: clang{{.*}}"-cc1"{{.*}}"-triple" "amdgcn-amd-amdhsa"{{.*}}"-target-cpu" "gfx803" "-fcuda-is-device" "-mlink-builtin-bitcode"{{.*}}libomptarget-amdgpu-gfx803.bc"{{.*}}
@@ -51,5 +49,5 @@
5149
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -emit-llvm -S -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx803 -nogpulib %s 2>&1 | FileCheck %s --check-prefix=CHECK-EMIT-LLVM-IR
5250
// CHECK-EMIT-LLVM-IR: clang{{.*}}"-cc1"{{.*}}"-triple" "amdgcn-amd-amdhsa"{{.*}}"-emit-llvm"
5351

54-
// RUN: %clang -### -target x86_64-pc-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx803 -lm --rocm-device-lib-path=%S/Inputs/rocm/amdgcn/bitcode -fopenmp-new-driver %s 2>&1 | FileCheck %s --check-prefix=CHECK-LIB-DEVICE-NEW
55-
// CHECK-LIB-DEVICE-NEW: {{.*}}clang-linker-wrapper{{.*}}--bitcode-library=openmp-amdgcn-amd-amdhsa-gfx803={{.*}}ocml.bc"{{.*}}ockl.bc"{{.*}}oclc_daz_opt_on.bc"{{.*}}oclc_unsafe_math_off.bc"{{.*}}oclc_finite_only_off.bc"{{.*}}oclc_correctly_rounded_sqrt_on.bc"{{.*}}oclc_wavefrontsize64_on.bc"{{.*}}oclc_isa_version_803.bc"
52+
// RUN: %clang -### -target x86_64-pc-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx803 --no-opaque-offload-linker -lm --rocm-device-lib-path=%S/Inputs/rocm/amdgcn/bitcode %s 2>&1 | FileCheck %s --check-prefix=CHECK-LIB-DEVICE-NEW
53+
// CHECK-LIB-DEVICE-NEW: {{.*}}"-target-cpu" "gfx803"{{.*}}ocml.bc"{{.*}}oclc_daz_opt_on.bc"{{.*}}oclc_unsafe_math_off.bc"{{.*}}oclc_finite_only_off.bc"{{.*}}oclc_correctly_rounded_sqrt_on.bc"{{.*}}oclc_wavefrontsize64_on.bc"{{.*}}oclc_isa_version_803.bc"

0 commit comments

Comments
 (0)