Skip to content

Commit 0d4eb49

Browse files
Artem Gindinsonromanovvlad
authored andcommitted
[SYCL] Always pass -target option to clang-offload-wrapper
SYCL Runtime will need to know the target information for each image so that the images can be properly dispatched between correspondent devices Signed-off-by: Sergey Semenov <[email protected]> Signed-off-by: Artem Gindinson <[email protected]>
1 parent cba7371 commit 0d4eb49

File tree

3 files changed

+11
-8
lines changed

3 files changed

+11
-8
lines changed

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6737,23 +6737,24 @@ void OffloadWrapper::ConstructJob(Compilation &C, const JobAction &JA,
67376737
SmallString<128> HostTripleOpt("-host=");
67386738
HostTripleOpt += getToolChain().getAuxTriple()->str();
67396739
WrapperArgs.push_back(C.getArgs().MakeArgString(HostTripleOpt));
6740+
6741+
llvm::Triple TT = getToolChain().getTriple();
6742+
SmallString<128> TargetTripleOpt = TT.getArchName();
67406743
// When wrapping an FPGA device binary, we need to be sure to apply the
67416744
// appropriate triple that corresponds (fpga_aoc[xr]-intel-<os>-sycldevice)
67426745
// to the target triple setting.
6743-
if (getToolChain().getTriple().getSubArch() ==
6744-
llvm::Triple::SPIRSubArch_fpga &&
6746+
if (TT.getSubArch() == llvm::Triple::SPIRSubArch_fpga &&
67456747
TCArgs.hasArg(options::OPT_fsycl_link_EQ)) {
6746-
llvm::Triple TT;
67476748
auto *A = C.getInputArgs().getLastArg(options::OPT_fsycl_link_EQ);
67486749
TT.setArchName((A->getValue() == StringRef("early")) ? "fpga_aocr"
67496750
: "fpga_aocx");
67506751
TT.setVendorName("intel");
67516752
TT.setOS(llvm::Triple(llvm::sys::getProcessTriple()).getOS());
67526753
TT.setEnvironment(llvm::Triple::SYCLDevice);
6753-
SmallString<128> TargetTripleOpt("-target=");
6754-
TargetTripleOpt += TT.str();
6755-
WrapperArgs.push_back(C.getArgs().MakeArgString(TargetTripleOpt));
6754+
TargetTripleOpt = TT.str();
67566755
}
6756+
WrapperArgs.push_back(
6757+
C.getArgs().MakeArgString(Twine("-target=") + TargetTripleOpt));
67576758

67586759
// TODO forcing offload kind is a simplification which assumes wrapper used
67596760
// only with SYCL. Device binary format (-format=xxx) option should also come

clang/test/Driver/sycl-offload-intelfpga.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
// CHK-FPGA: llvm-no-spir-kernel{{.*}} "[[OUTPUT1]]" "-o" "[[OUTPUT3:.+\.o]]"
6464
// CHK-FPGA: llvm-link{{.*}} "[[OUTPUT3]]" "-o" "[[OUTPUT4:.+\.bc]]"
6565
// CHK-FPGA: llvm-spirv{{.*}} "-o" "[[OUTPUT5:.+\.spv]]" "[[OUTPUT4]]"
66-
// CHK-FPGA: clang-offload-wrapper{{.*}} "-o=[[OUTPUT6:.+\.bc]]" "-host=x86_64-unknown-linux-gnu" "-kind=sycl" "[[OUTPUT5]]"
66+
// CHK-FPGA: clang-offload-wrapper{{.*}} "-o=[[OUTPUT6:.+\.bc]]" "-host=x86_64-unknown-linux-gnu" "-target=spir64_fpga" "-kind=sycl" "[[OUTPUT5]]"
6767
// CHK-FPGA: llc{{.*}} "-filetype=obj" "-o" "[[FINALLINK3:.+\.o]]" "[[OUTPUT6]]"
6868
// CHK-FPGA: clang-offload-bundler{{.*}} "-type=aoo" "-targets=host-x86_64-unknown-linux-gnu" {{.*}} "-outputs=[[FINALLINK4:.+\.txt]]" "-unbundle"
6969
// CHK-FPGA: {{link|ld}}{{.*}} "@[[FINALLINK4]]" "[[FINALLINK2]]" "[[FINALLINK]]" "[[FINALLINK3]]"

clang/test/Driver/sycl-offload.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -504,7 +504,9 @@
504504
// CHK-TOOLS-FPGA: aoc{{.*}} "-o" "[[OUTPUT4:.+\.aocx]]" "[[OUTPUT3]]"
505505
// CHK-TOOLS-GEN: ocloc{{.*}} "-output" "[[OUTPUT4:.+\.out]]" {{.*}} "[[OUTPUT3]]"
506506
// CHK-TOOLS-CPU: ioc{{.*}} "-ir=[[OUTPUT4:.+\.out]]" {{.*}} "-binary=[[OUTPUT3]]"
507-
// CHK-TOOLS-AOT: clang-offload-wrapper{{.*}} "-o=[[OUTPUT5:.+\.bc]]" "-host=x86_64-unknown-linux-gnu" "-kind=sycl" "[[OUTPUT4]]"
507+
// CHK-TOOLS-FPGA: clang-offload-wrapper{{.*}} "-o=[[OUTPUT5:.+\.bc]]" "-host=x86_64-unknown-linux-gnu" "-target=spir64_fpga{{.*}}" "-kind=sycl" "[[OUTPUT4]]"
508+
// CHK-TOOLS-GEN: clang-offload-wrapper{{.*}} "-o=[[OUTPUT5:.+\.bc]]" "-host=x86_64-unknown-linux-gnu" "-target=spir64_gen{{.*}}" "-kind=sycl" "[[OUTPUT4]]"
509+
// CHK-TOOLS-CPU: clang-offload-wrapper{{.*}} "-o=[[OUTPUT5:.+\.bc]]" "-host=x86_64-unknown-linux-gnu" "-target=spir64_x86_64{{.*}}" "-kind=sycl" "[[OUTPUT4]]"
508510
// CHK-TOOLS-AOT: llc{{.*}} "-filetype=obj" "-o" "[[OUTPUT6:.+\.o]]" "[[OUTPUT5]]"
509511
// CHK-TOOLS-FPGA: clang{{.*}} "-triple" "spir64_fpga-unknown-{{.*}}-sycldevice" {{.*}} "-fsycl-int-header=[[INPUT1:.+\.h]]" "-faddrsig"
510512
// CHK-TOOLS-GEN: clang{{.*}} "-triple" "spir64_gen-unknown-linux-sycldevice" {{.*}} "-fsycl-int-header=[[INPUT1:.+\.h]]" "-faddrsig"

0 commit comments

Comments
 (0)