|
| 1 | +// UNSUPPORTED: system-windows |
| 2 | + |
| 3 | +/// -fintelfpga static lib (aoco) |
| 4 | +// RUN: echo "Dummy AOCO image" > %t.aoco |
| 5 | +// RUN: echo "void foo() {}" > %t.c |
| 6 | +// RUN: echo "void foo2() {}" > %t2.c |
| 7 | +// RUN: %clang -c -o %t.o %t.c |
| 8 | +// RUN: %clang -fsycl -c -o %t2.o %t2.c |
| 9 | +// RUN: %clang_cl -fsycl -c -o %t2_cl.o %t2.c |
| 10 | +// RUN: clang-offload-wrapper -o %t-aoco.bc -host=x86_64-unknown-linux-gnu -kind=sycl -target=fpga_aoco-intel-unknown-sycldevice %t.aoco |
| 11 | +// RUN: llc -filetype=obj -o %t-aoco.o %t-aoco.bc |
| 12 | +// RUN: clang-offload-wrapper -o %t-aoco_cl.bc -host=x86_64-unknown-linux-gnu -kind=sycl -target=fpga_aoco-intel-unknown-sycldevice %t.aoco |
| 13 | +// RUN: llc -filetype=obj -o %t-aoco_cl.o %t-aoco_cl.bc |
| 14 | +// RUN: llvm-ar crv %t_aoco.a %t.o %t2.o %t-aoco.o |
| 15 | +// RUN: llvm-ar crv %t_aoco_cl.a %t.o %t2_cl.o %t-aoco_cl.o |
| 16 | +// RUN: %clangxx -target x86_64-unknown-linux-gnu -fsycl -fno-sycl-device-lib=all -fintelfpga %t_aoco.a %s -ccc-print-phases 2>&1 \ |
| 17 | +// RUN: | FileCheck -check-prefix=CHK-FPGA-AOCO-PHASES %s |
| 18 | +// CHK-FPGA-AOCO-PHASES: 0: input, "[[INPUTA:.+\.a]]", object, (host-sycl) |
| 19 | +// CHK-FPGA-AOCO-PHASES: 1: input, "[[INPUTCPP:.+\.cpp]]", c++, (host-sycl) |
| 20 | +// CHK-FPGA-AOCO-PHASES: 2: preprocessor, {1}, c++-cpp-output, (host-sycl) |
| 21 | +// CHK-FPGA-AOCO-PHASES: 3: append-footer, {2}, c++, (host-sycl) |
| 22 | +// CHK-FPGA-AOCO-PHASES: 4: preprocessor, {3}, c++-cpp-output, (host-sycl) |
| 23 | +// CHK-FPGA-AOCO-PHASES: 5: input, "[[INPUTCPP]]", c++, (device-sycl) |
| 24 | +// CHK-FPGA-AOCO-PHASES: 6: preprocessor, {5}, c++-cpp-output, (device-sycl) |
| 25 | +// CHK-FPGA-AOCO-PHASES: 7: compiler, {6}, ir, (device-sycl) |
| 26 | +// CHK-FPGA-AOCO-PHASES: 8: offload, "host-sycl (x86_64-unknown-linux-gnu)" {4}, "device-sycl (spir64_fpga-unknown-unknown-sycldevice)" {7}, c++-cpp-output |
| 27 | +// CHK-FPGA-AOCO-PHASES: 9: compiler, {8}, ir, (host-sycl) |
| 28 | +// CHK-FPGA-AOCO-PHASES: 10: backend, {9}, assembler, (host-sycl) |
| 29 | +// CHK-FPGA-AOCO-PHASES: 11: assembler, {10}, object, (host-sycl) |
| 30 | +// CHK-FPGA-AOCO-PHASES: 12: linker, {0, 11}, image, (host-sycl) |
| 31 | +// CHK-FPGA-AOCO-PHASES: 13: linker, {0, 11}, host_dep_image, (host-sycl) |
| 32 | +// CHK-FPGA-AOCO-PHASES: 14: clang-offload-deps, {13}, ir, (host-sycl) |
| 33 | +// CHK-FPGA-AOCO-PHASES: 15: input, "[[INPUTA]]", archive |
| 34 | +// CHK-FPGA-AOCO-PHASES: 16: clang-offload-unbundler, {15}, archive |
| 35 | +// CHK-FPGA-AOCO-PHASES: 17: linker, {7, 14, 16}, ir, (device-sycl) |
| 36 | +// CHK-FPGA-AOCO-PHASES: 18: sycl-post-link, {17}, tempfiletable, (device-sycl) |
| 37 | +// CHK-FPGA-AOCO-PHASES: 19: file-table-tform, {18}, tempfilelist, (device-sycl) |
| 38 | +// CHK-FPGA-AOCO-PHASES: 20: llvm-spirv, {19}, tempfilelist, (device-sycl) |
| 39 | +// CHK-FPGA-AOCO-PHASES: 21: input, "[[INPUTA]]", archive |
| 40 | +// CHK-FPGA-AOCO-PHASES: 22: clang-offload-unbundler, {21}, fpga_dep_list |
| 41 | +// CHK-FPGA-AOCO-PHASES: 23: backend-compiler, {20, 22}, fpga_aocx, (device-sycl) |
| 42 | +// CHK-FPGA-AOCO-PHASES: 24: file-table-tform, {18, 23}, tempfiletable, (device-sycl) |
| 43 | +// CHK-FPGA-AOCO-PHASES: 25: clang-offload-wrapper, {24}, object, (device-sycl) |
| 44 | +// CHK-FPGA-AOCO-PHASES: 26: offload, "host-sycl (x86_64-unknown-linux-gnu)" {12}, "device-sycl (spir64_fpga-unknown-unknown-sycldevice)" {25}, image |
| 45 | + |
| 46 | +/// FPGA AOCO Windows phases check |
| 47 | +// RUN: %clang_cl -fsycl -fno-sycl-device-lib=all -fintelfpga %t_aoco_cl.a %s -ccc-print-phases 2>&1 \ |
| 48 | +// RUN: | FileCheck -check-prefixes=CHK-FPGA-AOCO-PHASES-WIN %s |
| 49 | +// CHK-FPGA-AOCO-PHASES-WIN: 0: input, "[[INPUTA:.+\.a]]", object, (host-sycl) |
| 50 | +// CHK-FPGA-AOCO-PHASES-WIN: 1: input, "[[INPUTSRC:.+\.cpp]]", c++, (host-sycl) |
| 51 | +// CHK-FPGA-AOCO-PHASES-WIN: 2: preprocessor, {1}, c++-cpp-output, (host-sycl) |
| 52 | +// CHK-FPGA-AOCO-PHASES-WIN: 3: append-footer, {2}, c++, (host-sycl) |
| 53 | +// CHK-FPGA-AOCO-PHASES-WIN: 4: preprocessor, {3}, c++-cpp-output, (host-sycl) |
| 54 | +// CHK-FPGA-AOCO-PHASES-WIN: 5: input, "[[INPUTSRC]]", c++, (device-sycl) |
| 55 | +// CHK-FPGA-AOCO-PHASES-WIN: 6: preprocessor, {5}, c++-cpp-output, (device-sycl) |
| 56 | +// CHK-FPGA-AOCO-PHASES-WIN: 7: compiler, {6}, ir, (device-sycl) |
| 57 | +// CHK-FPGA-AOCO-PHASES-WIN: 8: offload, "host-sycl (x86_64-pc-windows-msvc)" {4}, "device-sycl (spir64_fpga-unknown-unknown-sycldevice)" {7}, c++-cpp-output |
| 58 | +// CHK-FPGA-AOCO-PHASES-WIN: 9: compiler, {8}, ir, (host-sycl) |
| 59 | +// CHK-FPGA-AOCO-PHASES-WIN: 10: backend, {9}, assembler, (host-sycl) |
| 60 | +// CHK-FPGA-AOCO-PHASES-WIN: 11: assembler, {10}, object, (host-sycl) |
| 61 | +// CHK-FPGA-AOCO-PHASES-WIN: 12: linker, {0, 11}, image, (host-sycl) |
| 62 | +// CHK-FPGA-AOCO-PHASES-WIN: 13: linker, {0, 11}, host_dep_image, (host-sycl) |
| 63 | +// CHK-FPGA-AOCO-PHASES-WIN: 14: clang-offload-deps, {13}, ir, (host-sycl) |
| 64 | +// CHK-FPGA-AOCO-PHASES-WIN: 15: input, "[[INPUTA]]", archive |
| 65 | +// CHK-FPGA-AOCO-PHASES-WIN: 16: clang-offload-unbundler, {15}, archive |
| 66 | +// CHK-FPGA-AOCO-PHASES-WIN: 17: linker, {7, 14, 16}, ir, (device-sycl) |
| 67 | +// CHK-FPGA-AOCO-PHASES-WIN: 18: sycl-post-link, {17}, tempfiletable, (device-sycl) |
| 68 | +// CHK-FPGA-AOCO-PHASES-WIN: 19: file-table-tform, {18}, tempfilelist, (device-sycl) |
| 69 | +// CHK-FPGA-AOCO-PHASES-WIN: 20: llvm-spirv, {19}, tempfilelist, (device-sycl) |
| 70 | +// CHK-FPGA-AOCO-PHASES-WIN: 21: input, "[[INPUTA]]", archive |
| 71 | +// CHK-FPGA-AOCO-PHASES-WIN: 22: clang-offload-unbundler, {21}, fpga_dep_list |
| 72 | +// CHK-FPGA-AOCO-PHASES-WIN: 23: backend-compiler, {20, 22}, fpga_aocx, (device-sycl) |
| 73 | +// CHK-FPGA-AOCO-PHASES-WIN: 24: file-table-tform, {18, 23}, tempfiletable, (device-sycl) |
| 74 | +// CHK-FPGA-AOCO-PHASES-WIN: 25: clang-offload-wrapper, {24}, object, (device-sycl) |
| 75 | +// CHK-FPGA-AOCO-PHASES-WIN: 26: offload, "host-sycl (x86_64-pc-windows-msvc)" {12}, "device-sycl (spir64_fpga-unknown-unknown-sycldevice)" {25}, image |
| 76 | +sycl-build:1459> |
| 77 | + |
| 78 | +/// aoco test, checking tools |
| 79 | +// RUN: %clangxx -target x86_64-unknown-linux-gnu -fsycl -fno-sycl-device-lib=all -fintelfpga %t_aoco.a -### %s 2>&1 \ |
| 80 | +// RUN: | FileCheck -check-prefixes=CHK-FPGA-AOCO,CHK-FPGA-AOCO-LIN %s |
| 81 | +// RUN: %clang_cl -fsycl -fno-sycl-device-lib=all -fintelfpga %t_aoco_cl.a -### %s 2>&1 \ |
| 82 | +// RUN: | FileCheck -check-prefixes=CHK-FPGA-AOCO,CHK-FPGA-AOCO-WIN %s |
| 83 | +// CHK-FPGA-AOCO: clang-offload-bundler{{.*}} "-type=a" "-targets=sycl-spir64_fpga-unknown-unknown-sycldevice" "-inputs=[[INPUTLIB:.+\.a]]" "-outputs=[[OUTLIB:.+\.a]]" "-unbundle" |
| 84 | +// CHK-FPGA-AOCO: llvm-link{{.*}} "[[OUTLIB]]" "-o" "[[LINKEDBC:.+\.bc]]" |
| 85 | +// CHK-FPGA-AOCO: sycl-post-link{{.*}} "-split-esimd"{{.*}} "-O2" "-spec-const=default" "-o" "[[SPLTABLE:.+\.table]]" "[[LINKEDBC]]" |
| 86 | +// CHK-FPGA-AOCO: file-table-tform{{.*}} "-o" "[[TABLEOUT:.+\.txt]]" "[[SPLTABLE]]" |
| 87 | +// CHK-FPGA-AOCO: llvm-spirv{{.*}} "-o" "[[TARGSPV:.+\.txt]]" {{.*}} "[[TABLEOUT]]" |
| 88 | +// CHK-FPGA-AOCO: opencl-aot{{.*}} "-device=fpga_fast_emu" "-spv=[[TARGSPV]]" "-ir=[[AOCXOUT:.+\.aocx]]" |
| 89 | +// CHK-FPGA-AOCO: file-table-tform{{.*}} "-o" "[[TABLEOUT2:.+\.table]]" "[[SPLTABLE]]" "[[AOCXOUT]]" |
| 90 | +// CHK-FPGA-AOCO: clang-offload-wrapper{{.*}} "-o=[[FINALBC:.+\.bc]]" {{.*}} "-target=spir64_fpga" "-kind=sycl" "-batch" "[[TABLEOUT2]]" |
| 91 | +// CHK-FPGA-AOCO-LIN: llc{{.*}} "-filetype=obj" "-o" "[[FINALOBJL:.+\.o]]" "[[FINALBC]]" |
| 92 | +// CHK-FPGA-AOCO-WIN: llc{{.*}} "-filetype=obj" "-o" "[[FINALOBJW:.+\.obj]]" "[[FINALBC]]" |
| 93 | +// CHK-FPGA-AOCO-LIN: ld{{.*}} "[[INPUTLIB]]" {{.*}} "[[FINALOBJL]]" |
| 94 | +// CHK-FPGA-AOCO-WIN: link.exe{{.*}} "{{.*}}[[INPUTLIB]]" {{.*}} "[[FINALOBJW]]" |
0 commit comments