|
| 1 | +/// |
| 2 | +/// Perform several driver tests for SYCL offloading using -fsycl-link-targets |
| 3 | +/// and -fsycl-add-targets |
| 4 | +/// |
| 5 | + |
| 6 | +/// Check whether an invalid SYCL target is specified: |
| 7 | +// RUN: %clang -### -fsycl -fsycl-add-targets=dummy-target:dummy-file %s 2>&1 \ |
| 8 | +// RUN: | FileCheck -check-prefix=CHK-INVALID-TARGET-ADD %s |
| 9 | +// RUN: %clang_cl -### -fsycl -fsycl-add-targets=dummy-target:dummy-file %s 2>&1 \ |
| 10 | +// RUN: | FileCheck -check-prefix=CHK-INVALID-TARGET-ADD %s |
| 11 | +// CHK-INVALID-TARGET-ADD: error: SYCL target is invalid: 'dummy-target' |
| 12 | + |
| 13 | +/// Check error for no -fsycl option |
| 14 | +// RUN: %clang -### -fsycl-link-targets=spir64-unknown-unknown %s 2>&1 \ |
| 15 | +// RUN: | FileCheck -check-prefix=CHK-NO-FSYCL-LINK-TGTS %s |
| 16 | +// CHK-NO-FSYCL-LINK-TGTS: error: '-fsycl-link-targets' must be used in conjunction with '-fsycl' to enable offloading |
| 17 | + |
| 18 | +// RUN: %clang -### -fsycl-add-targets=spir64-unknown-unknown %s 2>&1 \ |
| 19 | +// RUN: | FileCheck -check-prefix=CHK-NO-FSYCL-ADD %s |
| 20 | +// CHK-NO-FSYCL-ADD: error: '-fsycl-add-targets' must be used in conjunction with '-fsycl' to enable offloading |
| 21 | + |
| 22 | +/// Check error for -fsycl-add-targets -fsycl-link-targets conflict |
| 23 | +// RUN: %clang -### -fsycl-link-targets=spir64-unknown-unknown -fsycl-add-targets=spir64:dummy.spv -fsycl %s 2>&1 \ |
| 24 | +// RUN: | FileCheck -check-prefix=CHK-SYCL-ADD-LINK %s |
| 25 | +// RUN: %clang_cl -### -fsycl-link-targets=spir64-unknown-unknown -fsycl-add-targets=spir64:dummy.spv -fsycl %s 2>&1 \ |
| 26 | +// RUN: | FileCheck -check-prefix=CHK-SYCL-ADD-LINK %s |
| 27 | +// CHK-SYCL-ADD-LINK: error: The option -fsycl-link-targets= conflicts with -fsycl-add-targets= |
| 28 | + |
| 29 | +/// Check error for -fsycl-targets -fsycl-link-targets conflict |
| 30 | +// RUN: %clang -### -fsycl-link-targets=spir64-unknown-unknown -fsycl-targets=spir64-unknown-unknown -fsycl %s 2>&1 \ |
| 31 | +// RUN: | FileCheck -check-prefix=CHK-SYCL-LINK-CONFLICT %s |
| 32 | +// RUN: %clang_cl -### -fsycl-link-targets=spir64-unknown-unknown -fsycl-targets=spir64-unknown-unknown -fsycl %s 2>&1 \ |
| 33 | +// RUN: | FileCheck -check-prefix=CHK-SYCL-LINK-CONFLICT %s |
| 34 | +// CHK-SYCL-LINK-CONFLICT: error: The option -fsycl-targets= conflicts with -fsycl-link-targets= |
| 35 | + |
| 36 | +/// Check error for -fsycl-[add|link]-targets with bad triple |
| 37 | +// RUN: %clang -### -fsycl-add-targets=spir64_bad-unknown-unknown:dummy.spv -fsycl %s 2>&1 \ |
| 38 | +// RUN: | FileCheck -check-prefix=CHK-SYCL-FPGA-BAD-ADDLINK-TRIPLE %s |
| 39 | +// RUN: %clang_cl -### -fsycl-add-targets=spir64_bad-unknown-unknown:dummy.spv -fsycl %s 2>&1 \ |
| 40 | +// RUN: | FileCheck -check-prefix=CHK-SYCL-FPGA-BAD-ADDLINK-TRIPLE %s |
| 41 | +// RUN: %clang -### -fsycl-link-targets=spir64_bad-unknown-unknown -fsycl %s 2>&1 \ |
| 42 | +// RUN: | FileCheck -check-prefix=CHK-SYCL-FPGA-BAD-ADDLINK-TRIPLE %s |
| 43 | +// RUN: %clang_cl -### -fsycl-link-targets=spir64_bad-unknown-unknown -fsycl %s 2>&1 \ |
| 44 | +// RUN: | FileCheck -check-prefix=CHK-SYCL-FPGA-BAD-ADDLINK-TRIPLE %s |
| 45 | +// CHK-SYCL-FPGA-BAD-ADDLINK-TRIPLE: error: SYCL target is invalid: 'spir64_bad-unknown-unknown' |
| 46 | + |
| 47 | +/// Check no error for -fsycl-[add|link]-targets with good triple |
| 48 | +// RUN: %clang -### -fsycl-add-targets=spir64-unknown-unknown:dummy.spv -fsycl %s 2>&1 \ |
| 49 | +// RUN: | FileCheck -check-prefix=CHK-SYCL-ADDLINK-TRIPLE %s |
| 50 | +// RUN: %clang_cl -### -fsycl-add-targets=spir64-unknown-unknown:dummy.spv -fsycl %s 2>&1 \ |
| 51 | +// RUN: | FileCheck -check-prefix=CHK-SYCL-ADDLINK-TRIPLE %s |
| 52 | +// RUN: %clang -### -fsycl-add-targets=spir64_gen-unknown-unknown:dummy.spv -fsycl %s 2>&1 \ |
| 53 | +// RUN: | FileCheck -check-prefix=CHK-SYCL-ADDLINK-TRIPLE %s |
| 54 | +// RUN: %clang -### -fsycl-add-targets=spir64_fpga-unknown-unknown:dummy.spv -fsycl %s 2>&1 \ |
| 55 | +// RUN: | FileCheck -check-prefix=CHK-SYCL-ADDLINK-TRIPLE %s |
| 56 | +// RUN: %clang -### -fsycl-add-targets=spir64_x86_64-unknown-unknown:dummy.spv -fsycl %s 2>&1 \ |
| 57 | +// RUN: | FileCheck -check-prefix=CHK-SYCL-ADDLINK-TRIPLE %s |
| 58 | +// RUN: %clang -### -fsycl-link-targets=spir64-unknown-unknown -fsycl %s 2>&1 \ |
| 59 | +// RUN: | FileCheck -check-prefix=CHK-SYCL-ADDLINK-TRIPLE %s |
| 60 | +// RUN: %clang_cl -### -fsycl-link-targets=spir64-unknown-unknown -fsycl %s 2>&1 \ |
| 61 | +// RUN: | FileCheck -check-prefix=CHK-SYCL-ADDLINK-TRIPLE %s |
| 62 | +// RUN: %clang -### -fsycl-link-targets=spir64_gen-unknown-unknown -fsycl %s 2>&1 \ |
| 63 | +// RUN: | FileCheck -check-prefix=CHK-SYCL-ADDLINK-TRIPLE %s |
| 64 | +// RUN: %clang -### -fsycl-link-targets=spir64_fpga-unknown-unknown -fsycl %s 2>&1 \ |
| 65 | +// RUN: | FileCheck -check-prefix=CHK-SYCL-ADDLINK-TRIPLE %s |
| 66 | +// RUN: %clang -### -fsycl-link-targets=spir64_x86_64-unknown-unknown -fsycl %s 2>&1 \ |
| 67 | +// RUN: | FileCheck -check-prefix=CHK-SYCL-ADDLINK-TRIPLE %s |
| 68 | +// CHK-SYCL-ADDLINK-TRIPLE-NOT: error: SYCL target is invalid |
| 69 | + |
| 70 | +/// Check -fsycl-link-targets=<triple> behaviors unbundle |
| 71 | +// RUN: touch %t.o |
| 72 | +// RUN: %clang -### -ccc-print-phases -target x86_64-unknown-linux-gnu -fsycl -o %t.out -fsycl-link-targets=spir64-unknown-unknown %t.o 2>&1 \ |
| 73 | +// RUN: | FileCheck -check-prefix=CHK-LINK-TARGETS-UB %s |
| 74 | +// RUN: %clang_cl -### -ccc-print-phases --target=x86_64-pc-windows-msvc -fsycl -o %t.out -fsycl-link-targets=spir64-unknown-unknown %t.o 2>&1 \ |
| 75 | +// RUN: | FileCheck -check-prefix=CHK-LINK-TARGETS-UB %s |
| 76 | +// CHK-LINK-TARGETS-UB: 0: input, "[[INPUT:.+\.o]]", object |
| 77 | +// CHK-LINK-TARGETS-UB: 1: clang-offload-unbundler, {0}, object |
| 78 | +// CHK-LINK-TARGETS-UB: 2: linker, {1}, image, (device-sycl) |
| 79 | +// CHK-LINK-TARGETS-UB: 3: llvm-spirv, {2}, image, (device-sycl) |
| 80 | +// CHK-LINK-TARGETS-UB: 4: offload, "device-sycl (spir64-unknown-unknown)" {3}, image |
| 81 | + |
| 82 | +/// Check -fsycl-link-targets=<triple> behaviors unbundle multiple objects |
| 83 | +// RUN: touch %t-a.o |
| 84 | +// RUN: touch %t-b.o |
| 85 | +// RUN: touch %t-c.o |
| 86 | +// RUN: %clang -### -ccc-print-phases -target x86_64-unknown-linux-gnu -fsycl -o %t.out -fsycl-link-targets=spir64-unknown-unknown %t-a.o %t-b.o %t-c.o 2>&1 \ |
| 87 | +// RUN: | FileCheck -check-prefix=CHK-LINK-TARGETS-UB2 %s |
| 88 | +// RUN: %clang_cl -### -ccc-print-phases --target=x86_64-pc-windws-msvc -fsycl -o %t.out -fsycl-link-targets=spir64-unknown-unknown %t-a.o %t-b.o %t-c.o 2>&1 \ |
| 89 | +// RUN: | FileCheck -check-prefix=CHK-LINK-TARGETS-UB2 %s |
| 90 | +// CHK-LINK-TARGETS-UB2: 0: input, "[[INPUT:.+\a.o]]", object |
| 91 | +// CHK-LINK-TARGETS-UB2: 1: clang-offload-unbundler, {0}, object |
| 92 | +// CHK-LINK-TARGETS-UB2: 2: input, "[[INPUT:.+\b.o]]", object |
| 93 | +// CHK-LINK-TARGETS-UB2: 3: clang-offload-unbundler, {2}, object |
| 94 | +// CHK-LINK-TARGETS-UB2: 4: input, "[[INPUT:.+\c.o]]", object |
| 95 | +// CHK-LINK-TARGETS-UB2: 5: clang-offload-unbundler, {4}, object |
| 96 | +// CHK-LINK-TARGETS-UB2: 6: linker, {1, 3, 5}, image, (device-sycl) |
| 97 | +// CHK-LINK-TARGETS-UB2: 7: llvm-spirv, {6}, image, (device-sycl) |
| 98 | +// CHK-LINK-TARGETS-UB2: 8: offload, "device-sycl (spir64-unknown-unknown)" {7}, image |
| 99 | + |
| 100 | +/// Check -fsycl-link-targets=<triple> behaviors from source |
| 101 | +// RUN: %clang -### -ccc-print-phases -target x86_64-unknown-linux-gnu -fsycl -o %t.out -fsycl-link-targets=spir64-unknown-unknown %s 2>&1 \ |
| 102 | +// RUN: | FileCheck -check-prefix=CHK-LINK-TARGETS %s -DSUBARCH= |
| 103 | +// RUN: %clang_cl -### -ccc-print-phases --target=x86_64-pc-windows-msvc -fsycl -o %t.out -fsycl-link-targets=spir64-unknown-unknown %s 2>&1 \ |
| 104 | +// RUN: | FileCheck -check-prefix=CHK-LINK-TARGETS %s -DSUBARCH= |
| 105 | +// RUN: %clang -### -ccc-print-phases -target x86_64-unknown-linux-gnu -fsycl -o %t.out -fsycl-link-targets=spir64_gen-unknown-unknown %s 2>&1 \ |
| 106 | +// RUN: | FileCheck -check-prefix=CHK-LINK-TARGETS %s -DSUBARCH=_gen |
| 107 | +// RUN: %clang -### -ccc-print-phases -target x86_64-unknown-linux-gnu -fsycl -o %t.out -fsycl-link-targets=spir64_fpga-unknown-unknown %s 2>&1 \ |
| 108 | +// RUN: | FileCheck -check-prefix=CHK-LINK-TARGETS %s -DSUBARCH=_fpga |
| 109 | +// RUN: %clang -### -ccc-print-phases -target x86_64-unknown-linux-gnu -fsycl -o %t.out -fsycl-link-targets=spir64_x86_64-unknown-unknown %s 2>&1 \ |
| 110 | +// RUN: | FileCheck -check-prefix=CHK-LINK-TARGETS %s -DSUBARCH=_x86_64 |
| 111 | +// CHK-LINK-TARGETS: 0: input, "[[INPUT:.+\.cpp]]", c++, (device-sycl) |
| 112 | +// CHK-LINK-TARGETS: 1: preprocessor, {0}, c++-cpp-output, (device-sycl) |
| 113 | +// CHK-LINK-TARGETS: 2: compiler, {1}, ir, (device-sycl) |
| 114 | +// CHK-LINK-TARGETS: 3: linker, {2}, image, (device-sycl) |
| 115 | +// CHK-LINK-TARGETS: 4: llvm-spirv, {3}, image, (device-sycl) |
| 116 | +// CHK-LINK-TARGETS: 5: offload, "device-sycl (spir64[[SUBARCH]]-unknown-unknown)" {4}, image |
| 117 | + |
| 118 | +/// Check -fsycl-add-targets=<triple> behaviors unbundle |
| 119 | +// RUN: touch %t.o |
| 120 | +// RUN: %clang -### -ccc-print-phases -target x86_64-unknown-linux-gnu -fsycl -o %t.out -fsycl-add-targets=spir64-unknown-unknown:dummy.spv %t.o 2>&1 \ |
| 121 | +// RUN: | FileCheck -check-prefix=CHK-ADD-TARGETS-UB %s |
| 122 | +// CHK-ADD-TARGETS-UB: 0: input, "[[INPUT:.+\.o]]", object, (host-sycl) |
| 123 | +// CHK-ADD-TARGETS-UB: 1: clang-offload-unbundler, {0}, object, (host-sycl) |
| 124 | +// CHK-ADD-TARGETS-UB: 2: linker, {1}, image, (host-sycl) |
| 125 | +// CHK-ADD-TARGETS-UB: 3: input, "dummy.spv", sycl-fatbin, (device-sycl) |
| 126 | +// CHK-ADD-TARGETS-UB: 4: clang-offload-wrapper, {3}, object, (device-sycl) |
| 127 | +// CHK-ADD-TARGETS-UB: 5: offload, "host-sycl (x86_64-unknown-linux-gnu)" {2}, "device-sycl (spir64-unknown-unknown)" {4}, image |
| 128 | + |
| 129 | +/// Check offload with multiple triples, multiple binaries passed through -fsycl-add-targets |
| 130 | +// RUN: %clang -### -ccc-print-phases -target x86_64-unknown-linux-gnu -fsycl -o %t.out -fsycl-add-targets=spir64-unknown-unknown:dummy.spv,spir64_fpga-unknown-unknown:dummy.aocx,spir64_gen-unknown-unknown:dummy_Gen9core.bin %s 2>&1 \ |
| 131 | +// RUN: | FileCheck -check-prefix=CHK-ADD-TARGETS-MUL %s |
| 132 | +// CHK-ADD-TARGETS-MUL: 0: input, "[[INPUT:.+\.cpp]]", c++, (host-sycl) |
| 133 | +// CHK-ADD-TARGETS-MUL: 1: append-footer, {0}, c++, (host-sycl) |
| 134 | +// CHK-ADD-TARGETS-MUL: 2: preprocessor, {1}, c++-cpp-output, (host-sycl) |
| 135 | +// CHK-ADD-TARGETS-MUL: 3: input, "[[INPUT]]", c++, (device-sycl) |
| 136 | +// CHK-ADD-TARGETS-MUL: 4: preprocessor, {3}, c++-cpp-output, (device-sycl) |
| 137 | +// CHK-ADD-TARGETS-MUL: 5: compiler, {4}, ir, (device-sycl) |
| 138 | +// CHK-ADD-TARGETS-MUL: 6: offload, "host-sycl (x86_64-unknown-linux-gnu)" {2}, "device-sycl (spir64-unknown-unknown)" {5}, c++-cpp-output |
| 139 | +// CHK-ADD-TARGETS-MUL: 7: compiler, {6}, ir, (host-sycl) |
| 140 | +// CHK-ADD-TARGETS-MUL: 8: backend, {7}, assembler, (host-sycl) |
| 141 | +// CHK-ADD-TARGETS-MUL: 9: assembler, {8}, object, (host-sycl) |
| 142 | +// CHK-ADD-TARGETS-MUL: 10: linker, {9}, image, (host-sycl) |
| 143 | +// CHK-ADD-TARGETS-MUL: 11: input, "dummy.spv", sycl-fatbin, (device-sycl) |
| 144 | +// CHK-ADD-TARGETS-MUL: 12: clang-offload-wrapper, {11}, object, (device-sycl) |
| 145 | +// CHK-ADD-TARGETS-MUL: 13: input, "dummy.aocx", sycl-fatbin, (device-sycl) |
| 146 | +// CHK-ADD-TARGETS-MUL: 14: clang-offload-wrapper, {13}, object, (device-sycl) |
| 147 | +// CHK-ADD-TARGETS-MUL: 15: input, "dummy_Gen9core.bin", sycl-fatbin, (device-sycl) |
| 148 | +// CHK-ADD-TARGETS-MUL: 16: clang-offload-wrapper, {15}, object, (device-sycl) |
| 149 | +// CHK-ADD-TARGETS-MUL: 17: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (spir64-unknown-unknown)" {12}, "device-sycl (spir64_fpga-unknown-unknown)" {14}, "device-sycl (spir64_gen-unknown-unknown)" {16}, image |
| 150 | + |
| 151 | +/// Check offload with single triple, multiple binaries passed through -fsycl-add-targets |
| 152 | +// RUN: %clang -### -ccc-print-phases -target x86_64-unknown-linux-gnu -fsycl -o %t.out -fsycl-add-targets=spir64-unknown-unknown:dummy0.spv,spir64-unknown-unknown:dummy1.spv,spir64-unknown-unknown:dummy2.spv %s 2>&1 \ |
| 153 | +// RUN: | FileCheck -check-prefix=CHK-ADD-TARGETS-MUL-BINS %s |
| 154 | +// CHK-ADD-TARGETS-MUL-BINS: 0: input, "[[INPUT:.+\.cpp]]", c++, (host-sycl) |
| 155 | +// CHK-ADD-TARGETS-MUL-BINS: 1: append-footer, {0}, c++, (host-sycl) |
| 156 | +// CHK-ADD-TARGETS-MUL-BINS: 2: preprocessor, {1}, c++-cpp-output, (host-sycl) |
| 157 | +// CHK-ADD-TARGETS-MUL-BINS: 3: input, "[[INPUT]]", c++, (device-sycl) |
| 158 | +// CHK-ADD-TARGETS-MUL-BINS: 4: preprocessor, {3}, c++-cpp-output, (device-sycl) |
| 159 | +// CHK-ADD-TARGETS-MUL-BINS: 5: compiler, {4}, ir, (device-sycl) |
| 160 | +// CHK-ADD-TARGETS-MUL-BINS: 6: offload, "host-sycl (x86_64-unknown-linux-gnu)" {2}, "device-sycl (spir64-unknown-unknown)" {5}, c++-cpp-output |
| 161 | +// CHK-ADD-TARGETS-MUL-BINS: 7: compiler, {6}, ir, (host-sycl) |
| 162 | +// CHK-ADD-TARGETS-MUL-BINS: 8: backend, {7}, assembler, (host-sycl) |
| 163 | +// CHK-ADD-TARGETS-MUL-BINS: 9: assembler, {8}, object, (host-sycl) |
| 164 | +// CHK-ADD-TARGETS-MUL-BINS: 10: linker, {9}, image, (host-sycl) |
| 165 | +// CHK-ADD-TARGETS-MUL-BINS: 11: input, "dummy0.spv", sycl-fatbin, (device-sycl) |
| 166 | +// CHK-ADD-TARGETS-MUL-BINS: 12: clang-offload-wrapper, {11}, object, (device-sycl) |
| 167 | +// CHK-ADD-TARGETS-MUL-BINS: 13: input, "dummy1.spv", sycl-fatbin, (device-sycl) |
| 168 | +// CHK-ADD-TARGETS-MUL-BINS: 14: clang-offload-wrapper, {13}, object, (device-sycl) |
| 169 | +// CHK-ADD-TARGETS-MUL-BINS: 15: input, "dummy2.spv", sycl-fatbin, (device-sycl) |
| 170 | +// CHK-ADD-TARGETS-MUL-BINS: 16: clang-offload-wrapper, {15}, object, (device-sycl) |
| 171 | +// CHK-ADD-TARGETS-MUL-BINS: 17: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (spir64-unknown-unknown)" {12}, "device-sycl (spir64-unknown-unknown)" {14}, "device-sycl (spir64-unknown-unknown)" {16}, image |
| 172 | + |
| 173 | +/// Check regular offload with an additional AOT binary passed through -fsycl-add-targets (same triple) |
| 174 | +// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fsycl-targets=spir64-unknown-unknown -fsycl-add-targets=spir64-unknown-unknown:dummy.spv -ccc-print-phases %s 2>&1 \ |
| 175 | +// RUN: | FileCheck -check-prefix=CHK-ADD-TARGETS-REG %s |
| 176 | +// CHK-ADD-TARGETS-REG: 0: input, "[[INPUT:.+\.cpp]]", c++, (host-sycl) |
| 177 | +// CHK-ADD-TARGETS-REG: 1: append-footer, {0}, c++, (host-sycl) |
| 178 | +// CHK-ADD-TARGETS-REG: 2: preprocessor, {1}, c++-cpp-output, (host-sycl) |
| 179 | +// CHK-ADD-TARGETS-REG: 3: input, "[[INPUT]]", c++, (device-sycl) |
| 180 | +// CHK-ADD-TARGETS-REG: 4: preprocessor, {3}, c++-cpp-output, (device-sycl) |
| 181 | +// CHK-ADD-TARGETS-REG: 5: compiler, {4}, ir, (device-sycl) |
| 182 | +// CHK-ADD-TARGETS-REG: 6: offload, "host-sycl (x86_64-unknown-linux-gnu)" {2}, "device-sycl (spir64-unknown-unknown)" {5}, c++-cpp-output |
| 183 | +// CHK-ADD-TARGETS-REG: 7: compiler, {6}, ir, (host-sycl) |
| 184 | +// CHK-ADD-TARGETS-REG: 8: backend, {7}, assembler, (host-sycl) |
| 185 | +// CHK-ADD-TARGETS-REG: 9: assembler, {8}, object, (host-sycl) |
| 186 | +// CHK-ADD-TARGETS-REG: 10: linker, {9}, image, (host-sycl) |
| 187 | +// CHK-ADD-TARGETS-REG: 11: linker, {5}, ir, (device-sycl) |
| 188 | +// CHK-ADD-TARGETS-REG: 12: sycl-post-link, {11}, tempfiletable, (device-sycl) |
| 189 | +// CHK-ADD-TARGETS-REG: 13: file-table-tform, {12}, tempfilelist, (device-sycl) |
| 190 | +// CHK-ADD-TARGETS-REG: 14: llvm-spirv, {13}, tempfilelist, (device-sycl) |
| 191 | +// CHK-ADD-TARGETS-REG: 15: file-table-tform, {12, 14}, tempfiletable, (device-sycl) |
| 192 | +// CHK-ADD-TARGETS-REG: 16: clang-offload-wrapper, {15}, object, (device-sycl) |
| 193 | +// CHK-ADD-TARGETS-REG: 17: input, "dummy.spv", sycl-fatbin, (device-sycl) |
| 194 | +// CHK-ADD-TARGETS-REG: 18: clang-offload-wrapper, {17}, object, (device-sycl) |
| 195 | +// CHK-ADD-TARGETS-REG: 19: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (spir64-unknown-unknown)" {16}, "device-sycl (spir64-unknown-unknown)" {18}, image |
| 196 | + |
| 197 | +/// Check regular offload with multiple additional AOT binaries passed through -fsycl-add-targets |
| 198 | +// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fsycl-targets=spir64-unknown-unknown -fsycl-add-targets=spir64_fpga-unknown-unknown:dummy.aocx,spir64_gen-unknown-unknown:dummy_Gen9core.bin,spir64_x86_64-unknown-unknown:dummy.ir -ccc-print-phases %s 2>&1 \ |
| 199 | +// RUN: | FileCheck -check-prefix=CHK-ADD-TARGETS-REG-MUL %s |
| 200 | +// CHK-ADD-TARGETS-REG-MUL: 0: input, "[[INPUT:.+\.cpp]]", c++, (host-sycl) |
| 201 | +// CHK-ADD-TARGETS-REG-MUL: 1: append-footer, {0}, c++, (host-sycl) |
| 202 | +// CHK-ADD-TARGETS-REG-MUL: 2: preprocessor, {1}, c++-cpp-output, (host-sycl) |
| 203 | +// CHK-ADD-TARGETS-REG-MUL: 3: input, "[[INPUT]]", c++, (device-sycl) |
| 204 | +// CHK-ADD-TARGETS-REG-MUL: 4: preprocessor, {3}, c++-cpp-output, (device-sycl) |
| 205 | +// CHK-ADD-TARGETS-REG-MUL: 5: compiler, {4}, ir, (device-sycl) |
| 206 | +// CHK-ADD-TARGETS-REG-MUL: 6: offload, "host-sycl (x86_64-unknown-linux-gnu)" {2}, "device-sycl (spir64-unknown-unknown)" {5}, c++-cpp-output |
| 207 | +// CHK-ADD-TARGETS-REG-MUL: 7: compiler, {6}, ir, (host-sycl) |
| 208 | +// CHK-ADD-TARGETS-REG-MUL: 8: backend, {7}, assembler, (host-sycl) |
| 209 | +// CHK-ADD-TARGETS-REG-MUL: 9: assembler, {8}, object, (host-sycl) |
| 210 | +// CHK-ADD-TARGETS-REG-MUL: 10: linker, {9}, image, (host-sycl) |
| 211 | +// CHK-ADD-TARGETS-REG-MUL: 11: linker, {5}, ir, (device-sycl) |
| 212 | +// CHK-ADD-TARGETS-REG-MUL: 12: sycl-post-link, {11}, tempfiletable, (device-sycl) |
| 213 | +// CHK-ADD-TARGETS-REG-MUL: 13: file-table-tform, {12}, tempfilelist, (device-sycl) |
| 214 | +// CHK-ADD-TARGETS-REG-MUL: 14: llvm-spirv, {13}, tempfilelist, (device-sycl) |
| 215 | +// CHK-ADD-TARGETS-REG-MUL: 15: file-table-tform, {12, 14}, tempfiletable, (device-sycl) |
| 216 | +// CHK-ADD-TARGETS-REG-MUL: 16: clang-offload-wrapper, {15}, object, (device-sycl) |
| 217 | +// CHK-ADD-TARGETS-REG-MUL: 17: input, "dummy.aocx", sycl-fatbin, (device-sycl) |
| 218 | +// CHK-ADD-TARGETS-REG-MUL: 18: clang-offload-wrapper, {17}, object, (device-sycl) |
| 219 | +// CHK-ADD-TARGETS-REG-MUL: 19: input, "dummy_Gen9core.bin", sycl-fatbin, (device-sycl) |
| 220 | +// CHK-ADD-TARGETS-REG-MUL: 20: clang-offload-wrapper, {19}, object, (device-sycl) |
| 221 | +// CHK-ADD-TARGETS-REG-MUL: 21: input, "dummy.ir", sycl-fatbin, (device-sycl) |
| 222 | +// CHK-ADD-TARGETS-REG-MUL: 22: clang-offload-wrapper, {21}, object, (device-sycl) |
| 223 | +// CHK-ADD-TARGETS-REG-MUL: 23: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (spir64-unknown-unknown)" {16}, "device-sycl (spir64_fpga-unknown-unknown)" {18}, "device-sycl (spir64_gen-unknown-unknown)" {20}, "device-sycl (spir64_x86_64-unknown-unknown)" {22}, image |
0 commit comments