Skip to content

Commit 00489ec

Browse files
author
iclsrc
committed
Merge from 'sycl' to 'sycl-web' (#2)
2 parents b5f1d79 + 83946b5 commit 00489ec

File tree

11 files changed

+496
-296
lines changed

11 files changed

+496
-296
lines changed

clang/lib/Driver/Driver.cpp

Lines changed: 218 additions & 194 deletions
Large diffs are not rendered by default.

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6720,23 +6720,24 @@ void OffloadWrapper::ConstructJob(Compilation &C, const JobAction &JA,
67206720
SmallString<128> HostTripleOpt("-host=");
67216721
HostTripleOpt += getToolChain().getAuxTriple()->str();
67226722
WrapperArgs.push_back(C.getArgs().MakeArgString(HostTripleOpt));
6723+
6724+
llvm::Triple TT = getToolChain().getTriple();
6725+
SmallString<128> TargetTripleOpt = TT.getArchName();
67236726
// When wrapping an FPGA device binary, we need to be sure to apply the
67246727
// appropriate triple that corresponds (fpga_aoc[xr]-intel-<os>-sycldevice)
67256728
// to the target triple setting.
6726-
if (getToolChain().getTriple().getSubArch() ==
6727-
llvm::Triple::SPIRSubArch_fpga &&
6729+
if (TT.getSubArch() == llvm::Triple::SPIRSubArch_fpga &&
67286730
TCArgs.hasArg(options::OPT_fsycl_link_EQ)) {
6729-
llvm::Triple TT;
67306731
auto *A = C.getInputArgs().getLastArg(options::OPT_fsycl_link_EQ);
67316732
TT.setArchName((A->getValue() == StringRef("early")) ? "fpga_aocr"
67326733
: "fpga_aocx");
67336734
TT.setVendorName("intel");
67346735
TT.setOS(llvm::Triple(llvm::sys::getProcessTriple()).getOS());
67356736
TT.setEnvironment(llvm::Triple::SYCLDevice);
6736-
SmallString<128> TargetTripleOpt("-target=");
6737-
TargetTripleOpt += TT.str();
6738-
WrapperArgs.push_back(C.getArgs().MakeArgString(TargetTripleOpt));
6737+
TargetTripleOpt = TT.str();
67396738
}
6739+
WrapperArgs.push_back(
6740+
C.getArgs().MakeArgString(Twine("-target=") + TargetTripleOpt));
67406741

67416742
// TODO forcing offload kind is a simplification which assumes wrapper used
67426743
// 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: 156 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@
1313
// RUN: %clang_cl -### -fsycl -fsycl-targets=aaa-bbb-ccc-ddd %s 2>&1 \
1414
// RUN: | FileCheck -check-prefix=CHK-INVALID-TARGET %s
1515
// CHK-INVALID-TARGET: error: SYCL target is invalid: 'aaa-bbb-ccc-ddd'
16+
// RUN: %clang -### -fsycl -fsycl-add-targets=dummy-target:dummy-file %s 2>&1 \
17+
// RUN: | FileCheck -check-prefix=CHK-INVALID-TARGET-ADD %s
18+
// RUN: %clang_cl -### -fsycl -fsycl-add-targets=dummy-target:dummy-file %s 2>&1 \
19+
// RUN: | FileCheck -check-prefix=CHK-INVALID-TARGET-ADD %s
20+
// CHK-INVALID-TARGET-ADD: error: SYCL target is invalid: 'dummy-target'
1621

1722
/// ###########################################################################
1823

@@ -40,6 +45,12 @@
4045
// RUN: %clang_cl -### -fsycl-targets=spir64-unknown-linux-sycldevice %s 2>&1 \
4146
// RUN: | FileCheck -check-prefix=CHK-NO-FSYCL %s
4247
// CHK-NO-FSYCL: error: The option -fsycl-targets must be used in conjunction with -fsycl to enable offloading.
48+
// RUN: %clang -### -fsycl-link-targets=spir64-unknown-linux-sycldevice %s 2>&1 \
49+
// RUN: | FileCheck -check-prefix=CHK-NO-FSYCL-LINK %s
50+
// CHK-NO-FSYCL-LINK: error: The option -fsycl-link-targets must be used in conjunction with -fsycl to enable offloading.
51+
// RUN: %clang -### -fsycl-add-targets=spir64-unknown-linux-sycldevice %s 2>&1 \
52+
// RUN: | FileCheck -check-prefix=CHK-NO-FSYCL-ADD %s
53+
// CHK-NO-FSYCL-ADD: error: The option -fsycl-add-targets must be used in conjunction with -fsycl to enable offloading.
4354

4455
/// ###########################################################################
4556

@@ -368,6 +379,108 @@
368379

369380
/// ###########################################################################
370381

382+
/// Check offload with multiple triples, multiple binaries passed through -fsycl-add-targets
383+
384+
// RUN: %clang -### -ccc-print-phases -target x86_64-unknown-linux-gnu -fsycl -o %t.out -fsycl-add-targets=spir64-unknown-linux-sycldevice:dummy.spv,spir64_fpga-unknown-linux-sycldevice:dummy.aocx,spir64_gen-unknown-linux-sycldevice:dummy_Gen9core.bin %s 2>&1 \
385+
// RUN: | FileCheck -check-prefix=CHK-ADD-TARGETS-MUL %s
386+
// CHK-ADD-TARGETS-MUL: 0: input, "[[INPUT:.+\.c]]", c, (host-sycl)
387+
// CHK-ADD-TARGETS-MUL: 1: preprocessor, {0}, cpp-output, (host-sycl)
388+
// CHK-ADD-TARGETS-MUL: 2: input, "[[INPUT]]", c, (device-sycl)
389+
// CHK-ADD-TARGETS-MUL: 3: preprocessor, {2}, cpp-output, (device-sycl)
390+
// CHK-ADD-TARGETS-MUL: 4: compiler, {3}, sycl-header, (device-sycl)
391+
// CHK-ADD-TARGETS-MUL: 5: offload, "host-sycl (x86_64-unknown-linux-gnu)" {1}, "device-sycl (spir64-unknown-linux-sycldevice)" {4}, cpp-output
392+
// CHK-ADD-TARGETS-MUL: 6: compiler, {5}, ir, (host-sycl)
393+
// CHK-ADD-TARGETS-MUL: 7: backend, {6}, assembler, (host-sycl)
394+
// CHK-ADD-TARGETS-MUL: 8: assembler, {7}, object, (host-sycl)
395+
// CHK-ADD-TARGETS-MUL: 9: linker, {8}, image, (host-sycl)
396+
// CHK-ADD-TARGETS-MUL: 10: input, "dummy.spv", sycl-fatbin, (device-sycl)
397+
// CHK-ADD-TARGETS-MUL: 11: clang-offload-wrapper, {10}, object, (device-sycl)
398+
// CHK-ADD-TARGETS-MUL: 12: input, "dummy.aocx", sycl-fatbin, (device-sycl)
399+
// CHK-ADD-TARGETS-MUL: 13: clang-offload-wrapper, {12}, object, (device-sycl)
400+
// CHK-ADD-TARGETS-MUL: 14: input, "dummy_Gen9core.bin", sycl-fatbin, (device-sycl)
401+
// CHK-ADD-TARGETS-MUL: 15: clang-offload-wrapper, {14}, object, (device-sycl)
402+
// CHK-ADD-TARGETS-MUL: 16: offload, "host-sycl (x86_64-unknown-linux-gnu)" {9}, "device-sycl (spir64-unknown-linux-sycldevice)" {11}, "device-sycl (spir64_fpga-unknown-linux-sycldevice)" {13}, "device-sycl (spir64_gen-unknown-linux-sycldevice)" {15}, image
403+
/// ###########################################################################
404+
405+
/// Check offload with single triple, multiple binaries passed through -fsycl-add-targets
406+
407+
// RUN: %clang -### -ccc-print-phases -target x86_64-unknown-linux-gnu -fsycl -o %t.out -fsycl-add-targets=spir64-unknown-linux-sycldevice:dummy0.spv,spir64-unknown-linux-sycldevice:dummy1.spv,spir64-unknown-linux-sycldevice:dummy2.spv %s 2>&1 \
408+
// RUN: | FileCheck -check-prefix=CHK-ADD-TARGETS-MUL-BINS %s
409+
// CHK-ADD-TARGETS-MUL-BINS: 0: input, "[[INPUT:.+\.c]]", c, (host-sycl)
410+
// CHK-ADD-TARGETS-MUL-BINS: 1: preprocessor, {0}, cpp-output, (host-sycl)
411+
// CHK-ADD-TARGETS-MUL-BINS: 2: input, "[[INPUT]]", c, (device-sycl)
412+
// CHK-ADD-TARGETS-MUL-BINS: 3: preprocessor, {2}, cpp-output, (device-sycl)
413+
// CHK-ADD-TARGETS-MUL-BINS: 4: compiler, {3}, sycl-header, (device-sycl)
414+
// CHK-ADD-TARGETS-MUL-BINS: 5: offload, "host-sycl (x86_64-unknown-linux-gnu)" {1}, "device-sycl (spir64-unknown-linux-sycldevice)" {4}, cpp-output
415+
// CHK-ADD-TARGETS-MUL-BINS: 6: compiler, {5}, ir, (host-sycl)
416+
// CHK-ADD-TARGETS-MUL-BINS: 7: backend, {6}, assembler, (host-sycl)
417+
// CHK-ADD-TARGETS-MUL-BINS: 8: assembler, {7}, object, (host-sycl)
418+
// CHK-ADD-TARGETS-MUL-BINS: 9: linker, {8}, image, (host-sycl)
419+
// CHK-ADD-TARGETS-MUL-BINS: 10: input, "dummy0.spv", sycl-fatbin, (device-sycl)
420+
// CHK-ADD-TARGETS-MUL-BINS: 11: clang-offload-wrapper, {10}, object, (device-sycl)
421+
// CHK-ADD-TARGETS-MUL-BINS: 12: input, "dummy1.spv", sycl-fatbin, (device-sycl)
422+
// CHK-ADD-TARGETS-MUL-BINS: 13: clang-offload-wrapper, {12}, object, (device-sycl)
423+
// CHK-ADD-TARGETS-MUL-BINS: 14: input, "dummy2.spv", sycl-fatbin, (device-sycl)
424+
// CHK-ADD-TARGETS-MUL-BINS: 15: clang-offload-wrapper, {14}, object, (device-sycl)
425+
// CHK-ADD-TARGETS-MUL-BINS: 16: offload, "host-sycl (x86_64-unknown-linux-gnu)" {9}, "device-sycl (spir64-unknown-linux-sycldevice)" {11}, "device-sycl (spir64-unknown-linux-sycldevice)" {13}, "device-sycl (spir64-unknown-linux-sycldevice)" {15}, image
426+
427+
/// ###########################################################################
428+
429+
/// Check regular offload with an additional AOT binary passed through -fsycl-add-targets (same triple)
430+
431+
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl -fsycl-targets=spir64-unknown-linux-sycldevice -fsycl-add-targets=spir64-unknown-linux-sycldevice:dummy.spv -ccc-print-phases %s 2>&1 \
432+
// RUN: | FileCheck -check-prefix=CHK-ADD-TARGETS-REG %s
433+
// CHK-ADD-TARGETS-REG: 0: input, "[[INPUT:.+\.c]]", c, (host-sycl)
434+
// CHK-ADD-TARGETS-REG: 1: preprocessor, {0}, cpp-output, (host-sycl)
435+
// CHK-ADD-TARGETS-REG: 2: input, "[[INPUT]]", c, (device-sycl)
436+
// CHK-ADD-TARGETS-REG: 3: preprocessor, {2}, cpp-output, (device-sycl)
437+
// CHK-ADD-TARGETS-REG: 4: compiler, {3}, sycl-header, (device-sycl)
438+
// CHK-ADD-TARGETS-REG: 5: offload, "host-sycl (x86_64-unknown-linux-gnu)" {1}, "device-sycl (spir64-unknown-linux-sycldevice)" {4}, cpp-output
439+
// CHK-ADD-TARGETS-REG: 6: compiler, {5}, ir, (host-sycl)
440+
// CHK-ADD-TARGETS-REG: 7: backend, {6}, assembler, (host-sycl)
441+
// CHK-ADD-TARGETS-REG: 8: assembler, {7}, object, (host-sycl)
442+
// CHK-ADD-TARGETS-REG: 9: linker, {8}, image, (host-sycl)
443+
// CHK-ADD-TARGETS-REG: 10: compiler, {3}, ir, (device-sycl)
444+
// CHK-ADD-TARGETS-REG: 11: backend, {10}, assembler, (device-sycl)
445+
// CHK-ADD-TARGETS-REG: 12: assembler, {11}, object, (device-sycl)
446+
// CHK-ADD-TARGETS-REG: 13: linker, {12}, spirv, (device-sycl)
447+
// CHK-ADD-TARGETS-REG: 14: clang-offload-wrapper, {13}, object, (device-sycl)
448+
// CHK-ADD-TARGETS-REG: 15: input, "dummy.spv", sycl-fatbin, (device-sycl)
449+
// CHK-ADD-TARGETS-REG: 16: clang-offload-wrapper, {15}, object, (device-sycl)
450+
// CHK-ADD-TARGETS-REG: 17: offload, "host-sycl (x86_64-unknown-linux-gnu)" {9}, "device-sycl (spir64-unknown-linux-sycldevice)" {14}, "device-sycl (spir64-unknown-linux-sycldevice)" {16}, image
451+
452+
/// ###########################################################################
453+
454+
/// Check regular offload with multiple additional AOT binaries passed through -fsycl-add-targets
455+
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl -fsycl-targets=spir64-unknown-linux-sycldevice -fsycl-add-targets=spir64_fpga-unknown-linux-sycldevice:dummy.aocx,spir64_gen-unknown-linux-sycldevice:dummy_Gen9core.bin,spir64_x86_64-unknown-linux-sycldevice:dummy.ir -ccc-print-phases %s 2>&1 \
456+
// RUN: | FileCheck -check-prefix=CHK-ADD-TARGETS-REG-MUL %s
457+
// CHK-ADD-TARGETS-REG-MUL: 0: input, "[[INPUT:.+\.c]]", c, (host-sycl)
458+
// CHK-ADD-TARGETS-REG-MUL: 1: preprocessor, {0}, cpp-output, (host-sycl)
459+
// CHK-ADD-TARGETS-REG-MUL: 2: input, "[[INPUT]]", c, (device-sycl)
460+
// CHK-ADD-TARGETS-REG-MUL: 3: preprocessor, {2}, cpp-output, (device-sycl)
461+
// CHK-ADD-TARGETS-REG-MUL: 4: compiler, {3}, sycl-header, (device-sycl)
462+
// CHK-ADD-TARGETS-REG-MUL: 5: offload, "host-sycl (x86_64-unknown-linux-gnu)" {1}, "device-sycl (spir64{{.*}}-unknown-linux-sycldevice)" {4}, cpp-output
463+
// CHK-ADD-TARGETS-REG-MUL: 6: compiler, {5}, ir, (host-sycl)
464+
// CHK-ADD-TARGETS-REG-MUL: 7: backend, {6}, assembler, (host-sycl)
465+
// CHK-ADD-TARGETS-REG-MUL: 8: assembler, {7}, object, (host-sycl)
466+
// CHK-ADD-TARGETS-REG-MUL: 9: linker, {8}, image, (host-sycl)
467+
// CHK-ADD-TARGETS-REG-MUL: 10: input, "[[INPUT]]", c, (device-sycl)
468+
// CHK-ADD-TARGETS-REG-MUL: 11: preprocessor, {10}, cpp-output, (device-sycl)
469+
// CHK-ADD-TARGETS-REG-MUL: 12: compiler, {11}, ir, (device-sycl)
470+
// CHK-ADD-TARGETS-REG-MUL: 13: backend, {12}, assembler, (device-sycl)
471+
// CHK-ADD-TARGETS-REG-MUL: 14: assembler, {13}, object, (device-sycl)
472+
// CHK-ADD-TARGETS-REG-MUL: 15: linker, {14}, spirv, (device-sycl)
473+
// CHK-ADD-TARGETS-REG-MUL: 16: clang-offload-wrapper, {15}, object, (device-sycl)
474+
// CHK-ADD-TARGETS-REG-MUL: 17: input, "dummy.aocx", sycl-fatbin, (device-sycl)
475+
// CHK-ADD-TARGETS-REG-MUL: 18: clang-offload-wrapper, {17}, object, (device-sycl)
476+
// CHK-ADD-TARGETS-REG-MUL: 19: input, "dummy_Gen9core.bin", sycl-fatbin, (device-sycl)
477+
// CHK-ADD-TARGETS-REG-MUL: 20: clang-offload-wrapper, {19}, object, (device-sycl)
478+
// CHK-ADD-TARGETS-REG-MUL: 21: input, "dummy.ir", sycl-fatbin, (device-sycl)
479+
// CHK-ADD-TARGETS-REG-MUL: 22: clang-offload-wrapper, {21}, object, (device-sycl)
480+
// CHK-ADD-TARGETS-REG-MUL: 23: offload, "host-sycl (x86_64-unknown-linux-gnu)" {9}, "device-sycl (spir64-unknown-linux-sycldevice)" {16}, "device-sycl (spir64_fpga-unknown-linux-sycldevice)" {18}, "device-sycl (spir64_gen-unknown-linux-sycldevice)" {20}, "device-sycl (spir64_x86_64-unknown-linux-sycldevice)" {22}, image
481+
482+
/// ###########################################################################
483+
371484
/// Check for default linking of -lsycl with -fsycl usage
372485
// RUN: %clang -fsycl -target x86_64-unknown-linux-gnu %s -o %t -### 2>&1 | FileCheck -check-prefix=CHECK-LD-SYCL %s
373486
// CHECK-LD-SYCL: "{{.*}}ld{{(.exe)?}}"
@@ -504,7 +617,9 @@
504617
// CHK-TOOLS-FPGA: aoc{{.*}} "-o" "[[OUTPUT4:.+\.aocx]]" "[[OUTPUT3]]"
505618
// CHK-TOOLS-GEN: ocloc{{.*}} "-output" "[[OUTPUT4:.+\.out]]" {{.*}} "[[OUTPUT3]]"
506619
// 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]]"
620+
// CHK-TOOLS-FPGA: clang-offload-wrapper{{.*}} "-o=[[OUTPUT5:.+\.bc]]" "-host=x86_64-unknown-linux-gnu" "-target=spir64_fpga{{.*}}" "-kind=sycl" "[[OUTPUT4]]"
621+
// CHK-TOOLS-GEN: clang-offload-wrapper{{.*}} "-o=[[OUTPUT5:.+\.bc]]" "-host=x86_64-unknown-linux-gnu" "-target=spir64_gen{{.*}}" "-kind=sycl" "[[OUTPUT4]]"
622+
// CHK-TOOLS-CPU: clang-offload-wrapper{{.*}} "-o=[[OUTPUT5:.+\.bc]]" "-host=x86_64-unknown-linux-gnu" "-target=spir64_x86_64{{.*}}" "-kind=sycl" "[[OUTPUT4]]"
508623
// CHK-TOOLS-AOT: llc{{.*}} "-filetype=obj" "-o" "[[OUTPUT6:.+\.o]]" "[[OUTPUT5]]"
509624
// CHK-TOOLS-FPGA: clang{{.*}} "-triple" "spir64_fpga-unknown-{{.*}}-sycldevice" {{.*}} "-fsycl-int-header=[[INPUT1:.+\.h]]" "-faddrsig"
510625
// CHK-TOOLS-GEN: clang{{.*}} "-triple" "spir64_gen-unknown-linux-sycldevice" {{.*}} "-fsycl-int-header=[[INPUT1:.+\.h]]" "-faddrsig"
@@ -570,6 +685,46 @@
570685
// CHK-PHASE-MULTI-TARG: 30: clang-offload-wrapper, {29}, object, (device-sycl)
571686
// CHK-PHASE-MULTI-TARG: 31: offload, "host-sycl (x86_64-unknown-linux-gnu)" {9}, "device-sycl (spir64-unknown-linux-sycldevice)" {16}, "device-sycl (spir64_fpga-unknown-linux-sycldevice)" {24}, "device-sycl (spir64_gen-unknown-linux-sycldevice)" {30}, image
572687

688+
/// ###########################################################################
689+
690+
/// offload with multiple AOT targets & additional AOT binaries passed through fsycl-add-targets
691+
692+
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl -fsycl-targets=spir64_fpga-unknown-linux-sycldevice,spir64_gen-unknown-linux-sycldevice -fsycl-add-targets=spir64_x86_64-unknown-linux-sycldevice:dummy.ir,spir64_fpga-unknown-linux-sycldevice:dummy.aocx,spir64_gen-unknown-linux-sycldevice:dummy_Gen9core.bin -### -ccc-print-phases %s 2>&1 \
693+
// RUN: | FileCheck -check-prefix=CHK-PHASE-MULTI-TARG-W-ADD %s
694+
// CHK-PHASE-MULTI-TARG-W-ADD: 0: input, "[[INPUT:.+\.c]]", c, (host-sycl)
695+
// CHK-PHASE-MULTI-TARG-W-ADD: 1: preprocessor, {0}, cpp-output, (host-sycl)
696+
// CHK-PHASE-MULTI-TARG-W-ADD: 2: input, "[[INPUT]]", c, (device-sycl)
697+
// CHK-PHASE-MULTI-TARG-W-ADD: 3: preprocessor, {2}, cpp-output, (device-sycl)
698+
// CHK-PHASE-MULTI-TARG-W-ADD: 4: compiler, {3}, sycl-header, (device-sycl)
699+
// CHK-PHASE-MULTI-TARG-W-ADD: 5: offload, "host-sycl (x86_64-unknown-linux-gnu)" {1}, "device-sycl (spir64_fpga-unknown-linux-sycldevice)" {4}, cpp-output
700+
// CHK-PHASE-MULTI-TARG-W-ADD: 6: compiler, {5}, ir, (host-sycl)
701+
// CHK-PHASE-MULTI-TARG-W-ADD: 7: backend, {6}, assembler, (host-sycl)
702+
// CHK-PHASE-MULTI-TARG-W-ADD: 8: assembler, {7}, object, (host-sycl)
703+
// CHK-PHASE-MULTI-TARG-W-ADD: 9: linker, {8}, image, (host-sycl)
704+
// CHK-PHASE-MULTI-TARG-W-ADD: 10: input, "[[INPUT]]", c, (device-sycl)
705+
// CHK-PHASE-MULTI-TARG-W-ADD: 11: preprocessor, {10}, cpp-output, (device-sycl)
706+
// CHK-PHASE-MULTI-TARG-W-ADD: 12: compiler, {11}, ir, (device-sycl)
707+
// CHK-PHASE-MULTI-TARG-W-ADD: 13: backend, {12}, assembler, (device-sycl)
708+
// CHK-PHASE-MULTI-TARG-W-ADD: 14: assembler, {13}, object, (device-sycl)
709+
// CHK-PHASE-MULTI-TARG-W-ADD: 15: linker, {14}, spirv, (device-sycl)
710+
// CHK-PHASE-MULTI-TARG-W-ADD: 16: backend-compiler, {15}, fpga-aocx, (device-sycl)
711+
// CHK-PHASE-MULTI-TARG-W-ADD: 17: clang-offload-wrapper, {16}, object, (device-sycl)
712+
// CHK-PHASE-MULTI-TARG-W-ADD: 18: input, "[[INPUT]]", c, (device-sycl)
713+
// CHK-PHASE-MULTI-TARG-W-ADD: 19: preprocessor, {18}, cpp-output, (device-sycl)
714+
// CHK-PHASE-MULTI-TARG-W-ADD: 20: compiler, {19}, ir, (device-sycl)
715+
// CHK-PHASE-MULTI-TARG-W-ADD: 21: backend, {20}, assembler, (device-sycl)
716+
// CHK-PHASE-MULTI-TARG-W-ADD: 22: assembler, {21}, object, (device-sycl)
717+
// CHK-PHASE-MULTI-TARG-W-ADD: 23: linker, {22}, spirv, (device-sycl)
718+
// CHK-PHASE-MULTI-TARG-W-ADD: 24: backend-compiler, {23}, image, (device-sycl)
719+
// CHK-PHASE-MULTI-TARG-W-ADD: 25: clang-offload-wrapper, {24}, object, (device-sycl)
720+
// CHK-PHASE-MULTI-TARG-W-ADD: 26: input, "dummy.ir", sycl-fatbin, (device-sycl)
721+
// CHK-PHASE-MULTI-TARG-W-ADD: 27: clang-offload-wrapper, {26}, object, (device-sycl)
722+
// CHK-PHASE-MULTI-TARG-W-ADD: 28: input, "dummy.aocx", sycl-fatbin, (device-sycl)
723+
// CHK-PHASE-MULTI-TARG-W-ADD: 29: clang-offload-wrapper, {28}, object, (device-sycl)
724+
// CHK-PHASE-MULTI-TARG-W-ADD: 30: input, "dummy_Gen9core.bin", sycl-fatbin, (device-sycl)
725+
// CHK-PHASE-MULTI-TARG-W-ADD: 31: clang-offload-wrapper, {30}, object, (device-sycl)
726+
// CHK-PHASE-MULTI-TARG-W-ADD: 32: offload, "host-sycl (x86_64-unknown-linux-gnu)" {9}, "device-sycl (spir64_fpga-unknown-linux-sycldevice)" {17}, "device-sycl (spir64_gen-unknown-linux-sycldevice)" {25}, "device-sycl (spir64_x86_64-unknown-linux-sycldevice)" {27}, "device-sycl (spir64_fpga-unknown-linux-sycldevice)" {29}, "device-sycl (spir64_gen-unknown-linux-sycldevice)" {31}, image
727+
573728
/// ###########################################################################
574729
/// Verify that -save-temps does not crash
575730
// RUN: %clang -fsycl -target x86_64-unknown-linux-gnu -save-temps %s -### 2>&1

sycl/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ if( NOT OpenCL_LIBRARIES )
104104
${OPENCL_ICD_LOADER_WDK}
105105
STEP_TARGETS configure,build,install
106106
DEPENDS ocl-headers
107+
BUILD_BYPRODUCTS ${OpenCL_LIBRARIES}
107108
)
108109
else()
109110
file(GLOB ICD_LOADER_SRC "${OpenCL_LIBRARIES}*")

sycl/include/CL/sycl/accessor.hpp

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -756,10 +756,12 @@ class accessor :
756756
detail::convertToArrayOfN<3, 1>(BufferRef.get_range()), AccessMode,
757757
detail::getSyclObjImpl(BufferRef).get(), AdjustedDim, sizeof(DataT),
758758
BufferRef.OffsetInBytes, BufferRef.IsSubBuffer) {
759-
detail::EventImplPtr Event =
760-
detail::Scheduler::getInstance().addHostAccessor(
761-
AccessorBaseHost::impl.get());
762-
Event->wait(Event);
759+
if (!IsPlaceH) {
760+
detail::EventImplPtr Event =
761+
detail::Scheduler::getInstance().addHostAccessor(
762+
AccessorBaseHost::impl.get());
763+
Event->wait(Event);
764+
}
763765
#endif
764766
}
765767

@@ -798,10 +800,12 @@ class accessor :
798800
detail::convertToArrayOfN<3, 1>(BufferRef.get_range()), AccessMode,
799801
detail::getSyclObjImpl(BufferRef).get(), Dimensions, sizeof(DataT),
800802
BufferRef.OffsetInBytes, BufferRef.IsSubBuffer) {
801-
detail::EventImplPtr Event =
802-
detail::Scheduler::getInstance().addHostAccessor(
803-
AccessorBaseHost::impl.get());
804-
Event->wait(Event);
803+
if (!IsPlaceH) {
804+
detail::EventImplPtr Event =
805+
detail::Scheduler::getInstance().addHostAccessor(
806+
AccessorBaseHost::impl.get());
807+
Event->wait(Event);
808+
}
805809
}
806810
#endif
807811

@@ -840,10 +844,12 @@ class accessor :
840844
AccessMode, detail::getSyclObjImpl(BufferRef).get(),
841845
Dimensions, sizeof(DataT), BufferRef.OffsetInBytes,
842846
BufferRef.IsSubBuffer) {
843-
detail::EventImplPtr Event =
844-
detail::Scheduler::getInstance().addHostAccessor(
845-
AccessorBaseHost::impl.get());
846-
Event->wait(Event);
847+
if (!IsPlaceH) {
848+
detail::EventImplPtr Event =
849+
detail::Scheduler::getInstance().addHostAccessor(
850+
AccessorBaseHost::impl.get());
851+
Event->wait(Event);
852+
}
847853
}
848854
#endif
849855

0 commit comments

Comments
 (0)