diff options
author | Gheorghe-Teodor Bercea <gheorghe-teod.bercea@ibm.com> | 2017-08-07 15:39:11 +0000 |
---|---|---|
committer | Gheorghe-Teodor Bercea <gheorghe-teod.bercea@ibm.com> | 2017-08-07 15:39:11 +0000 |
commit | 47e0cf378c793b00207998a0537c2fd75bd1ec74 (patch) | |
tree | 3f667d95b0f1bf3a9a5009c9c8a568374d48cfb2 /clang/lib/Driver/Compilation.cpp | |
parent | 02d9945e6f11959887e2eefbbb5a635ff5087dbe (diff) | |
download | llvm-47e0cf378c793b00207998a0537c2fd75bd1ec74.zip llvm-47e0cf378c793b00207998a0537c2fd75bd1ec74.tar.gz llvm-47e0cf378c793b00207998a0537c2fd75bd1ec74.tar.bz2 |
[OpenMP] Add flag for specifying the target device architecture for OpenMP device offloading
Summary:
OpenMP has the ability to offload target regions to devices which may have different architectures.
A new -fopenmp-target-arch flag is introduced to specify the device architecture.
In this patch I use the new flag to specify the compute capability of the underlying NVIDIA architecture for the OpenMP offloading CUDA tool chain.
Only a host-offloading test is provided since full device offloading capability will only be available when [[ https://reviews.llvm.org/D29654 | D29654 ]] lands.
Reviewers: hfinkel, Hahnfeld, carlo.bertolli, caomhin, ABataev
Reviewed By: hfinkel
Subscribers: guansong, cfe-commits
Tags: #openmp
Differential Revision: https://reviews.llvm.org/D34784
llvm-svn: 310263
Diffstat (limited to 'clang/lib/Driver/Compilation.cpp')
-rw-r--r-- | clang/lib/Driver/Compilation.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/Driver/Compilation.cpp b/clang/lib/Driver/Compilation.cpp index cf86644..6626662 100644 --- a/clang/lib/Driver/Compilation.cpp +++ b/clang/lib/Driver/Compilation.cpp @@ -59,7 +59,12 @@ Compilation::getArgsForToolChain(const ToolChain *TC, StringRef BoundArch, DerivedArgList *&Entry = TCArgs[{TC, BoundArch, DeviceOffloadKind}]; if (!Entry) { - Entry = TC->TranslateArgs(*TranslatedArgs, BoundArch, DeviceOffloadKind); + // Translate OpenMP toolchain arguments provided via the -Xopenmp-target flags. + Entry = TC->TranslateOpenMPTargetArgs(*TranslatedArgs, DeviceOffloadKind); + if (!Entry) + Entry = TranslatedArgs; + + Entry = TC->TranslateArgs(*Entry, BoundArch, DeviceOffloadKind); if (!Entry) Entry = TranslatedArgs; } |