Artem Belevich | bee2f41 | 2016-08-22 18:50:34 +0000 | [diff] [blame] | 1 | // Tests the bindings generated for a CUDA offloading target for different |
| 2 | // combinations of: |
| 3 | // - Number of gpu architectures; |
| 4 | // - Host/device-only compilation; |
| 5 | // - User-requested final phase - binary or assembly. |
| 6 | // It parallels cuda-phases.cu test, but verifies whether output file is temporary or not. |
| 7 | |
| 8 | // It's hard to check whether file name is temporary in a portable |
| 9 | // way. Instead we check whether we've generated a permanent name on |
| 10 | // device side, which appends '-device-cuda-<triple>' suffix. |
| 11 | |
| 12 | // REQUIRES: clang-driver |
| 13 | // REQUIRES: powerpc-registered-target |
| 14 | // REQUIRES: nvptx-registered-target |
| 15 | |
| 16 | // |
| 17 | // Test single gpu architecture with complete compilation. |
| 18 | // No intermediary device files should have "-device-cuda..." in the name. |
| 19 | // |
| 20 | // RUN: %clang -target powerpc64le-ibm-linux-gnu -ccc-print-bindings --cuda-gpu-arch=sm_30 %s 2>&1 \ |
| 21 | // RUN: | FileCheck -check-prefix=BIN %s |
| 22 | // BIN: # "nvptx64-nvidia-cuda" - "clang",{{.*}} output: |
| 23 | // BIN-NOT: cuda-bindings-device-cuda-nvptx64 |
| 24 | // BIN: # "nvptx64-nvidia-cuda" - "NVPTX::Assembler",{{.*}} output: |
| 25 | // BIN-NOT: cuda-bindings-device-cuda-nvptx64 |
| 26 | // BIN: # "nvptx64-nvidia-cuda" - "NVPTX::Linker",{{.*}} output: |
| 27 | // BIN-NOT: cuda-bindings-device-cuda-nvptx64 |
| 28 | // BIN: # "powerpc64le-ibm-linux-gnu" - "clang",{{.*}} output: |
| 29 | // BIN-NOT: cuda-bindings-device-cuda-nvptx64 |
| 30 | // BIN: # "powerpc64le-ibm-linux-gnu" - "GNU::Linker", inputs:{{.*}}, output: "a.out" |
| 31 | |
| 32 | // |
| 33 | // Test single gpu architecture up to the assemble phase. |
| 34 | // |
| 35 | // RUN: %clang -target powerpc64le-ibm-linux-gnu -ccc-print-bindings --cuda-gpu-arch=sm_30 %s -S 2>&1 \ |
| 36 | // RUN: | FileCheck -check-prefix=ASM %s |
Samuel Antao | 3b7e38b | 2016-10-27 18:14:55 +0000 | [diff] [blame] | 37 | // ASM-DAG: # "nvptx64-nvidia-cuda" - "clang",{{.*}} output: "cuda-bindings-cuda-nvptx64-nvidia-cuda-sm_30.s" |
Samuel Antao | 64e965e | 2016-09-30 15:34:19 +0000 | [diff] [blame] | 38 | // ASM-DAG: # "powerpc64le-ibm-linux-gnu" - "clang",{{.*}} output: "cuda-bindings.s" |
Artem Belevich | bee2f41 | 2016-08-22 18:50:34 +0000 | [diff] [blame] | 39 | |
| 40 | // |
| 41 | // Test two gpu architectures with complete compilation. |
| 42 | // |
| 43 | // RUN: %clang -target powerpc64le-ibm-linux-gnu -ccc-print-bindings --cuda-gpu-arch=sm_30 --cuda-gpu-arch=sm_35 %s 2>&1 \ |
| 44 | // RUN: | FileCheck -check-prefix=BIN2 %s |
| 45 | // BIN2: # "nvptx64-nvidia-cuda" - "clang",{{.*}} output: |
| 46 | // BIN2-NOT: cuda-bindings-device-cuda-nvptx64 |
| 47 | // BIN2: # "nvptx64-nvidia-cuda" - "NVPTX::Assembler",{{.*}} output: |
| 48 | // BIN2-NOT: cuda-bindings-device-cuda-nvptx64 |
| 49 | // BIN2: # "nvptx64-nvidia-cuda" - "clang",{{.*}} output: |
| 50 | // BIN2-NOT: cuda-bindings-device-cuda-nvptx64 |
| 51 | // BIN2: # "nvptx64-nvidia-cuda" - "NVPTX::Assembler",{{.*}} output: |
| 52 | // BIN2-NOT: cuda-bindings-device-cuda-nvptx64 |
| 53 | // BIN2: # "nvptx64-nvidia-cuda" - "NVPTX::Linker",{{.*}} output: |
| 54 | // BIN2-NOT: cuda-bindings-device-cuda-nvptx64 |
| 55 | // BIN2: # "powerpc64le-ibm-linux-gnu" - "clang",{{.*}} output: |
| 56 | // BIN2-NOT: cuda-bindings-device-cuda-nvptx64 |
| 57 | // BIN2: # "powerpc64le-ibm-linux-gnu" - "GNU::Linker", inputs:{{.*}}, output: "a.out" |
| 58 | |
| 59 | // |
| 60 | // Test two gpu architectures up to the assemble phase. |
| 61 | // |
| 62 | // RUN: %clang -target powerpc64le-ibm-linux-gnu -ccc-print-bindings \ |
| 63 | // RUN: --cuda-gpu-arch=sm_30 --cuda-gpu-arch=sm_35 %s -S 2>&1 \ |
| 64 | // RUN: | FileCheck -check-prefix=ASM2 %s |
Samuel Antao | 3b7e38b | 2016-10-27 18:14:55 +0000 | [diff] [blame] | 65 | // ASM2-DAG: # "nvptx64-nvidia-cuda" - "clang",{{.*}} output: "cuda-bindings-cuda-nvptx64-nvidia-cuda-sm_30.s" |
| 66 | // ASM2-DAG: # "nvptx64-nvidia-cuda" - "clang",{{.*}} output: "cuda-bindings-cuda-nvptx64-nvidia-cuda-sm_35.s" |
Samuel Antao | 64e965e | 2016-09-30 15:34:19 +0000 | [diff] [blame] | 67 | // ASM2-DAG: # "powerpc64le-ibm-linux-gnu" - "clang",{{.*}} output: "cuda-bindings.s" |
Artem Belevich | bee2f41 | 2016-08-22 18:50:34 +0000 | [diff] [blame] | 68 | |
| 69 | // |
| 70 | // Test one or more gpu architecture with complete compilation in host-only |
| 71 | // compilation mode. |
| 72 | // |
| 73 | // RUN: %clang -target powerpc64le-ibm-linux-gnu -ccc-print-bindings \ |
| 74 | // RUN: --cuda-gpu-arch=sm_30 %s --cuda-host-only 2>&1 \ |
| 75 | // RUN: | FileCheck -check-prefix=HBIN %s |
| 76 | // RUN: %clang -target powerpc64le-ibm-linux-gnu -ccc-print-bindings \ |
| 77 | // RUN: --cuda-gpu-arch=sm_30 --cuda-gpu-arch=sm_35 %s --cuda-host-only 2>&1 \ |
| 78 | // RUN: | FileCheck -check-prefix=HBIN %s |
| 79 | // HBIN: # "powerpc64le-ibm-linux-gnu" - "clang",{{.*}} output: |
| 80 | // HBIN-NOT: cuda-bindings-device-cuda-nvptx64 |
| 81 | // HBIN: # "powerpc64le-ibm-linux-gnu" - "GNU::Linker", inputs:{{.*}}, output: "a.out" |
| 82 | |
| 83 | // |
| 84 | // Test one or more gpu architecture up to the assemble phase in host-only |
| 85 | // compilation mode. |
| 86 | // |
| 87 | // RUN: %clang -target powerpc64le-ibm-linux-gnu -ccc-print-bindings \ |
| 88 | // RUN: --cuda-gpu-arch=sm_30 %s --cuda-host-only -S 2>&1 \ |
| 89 | // RUN: | FileCheck -check-prefix=HASM %s |
| 90 | // RUN: %clang -target powerpc64le-ibm-linux-gnu -ccc-print-bindings \ |
| 91 | // RUN: --cuda-gpu-arch=sm_30 --cuda-gpu-arch=sm_35 %s --cuda-host-only -S 2>&1 \ |
| 92 | // RUN: | FileCheck -check-prefix=HASM %s |
| 93 | // HASM: # "powerpc64le-ibm-linux-gnu" - "clang",{{.*}} output: "cuda-bindings.s" |
| 94 | |
| 95 | // |
| 96 | // Test single gpu architecture with complete compilation in device-only |
| 97 | // compilation mode. |
| 98 | // |
| 99 | // RUN: %clang -target powerpc64le-ibm-linux-gnu -ccc-print-bindings \ |
| 100 | // RUN: --cuda-gpu-arch=sm_30 %s --cuda-device-only 2>&1 \ |
| 101 | // RUN: | FileCheck -check-prefix=DBIN %s |
| 102 | // DBIN: # "nvptx64-nvidia-cuda" - "clang",{{.*}} output: |
| 103 | // DBIN-NOT: cuda-bindings-device-cuda-nvptx64 |
Samuel Antao | 3b7e38b | 2016-10-27 18:14:55 +0000 | [diff] [blame] | 104 | // DBIN: # "nvptx64-nvidia-cuda" - "NVPTX::Assembler",{{.*}} output: "cuda-bindings-cuda-nvptx64-nvidia-cuda-sm_30.o" |
Artem Belevich | bee2f41 | 2016-08-22 18:50:34 +0000 | [diff] [blame] | 105 | |
| 106 | // |
| 107 | // Test single gpu architecture up to the assemble phase in device-only |
| 108 | // compilation mode. |
| 109 | // |
| 110 | // RUN: %clang -target powerpc64le-ibm-linux-gnu -ccc-print-bindings \ |
| 111 | // RUN: --cuda-gpu-arch=sm_30 %s --cuda-device-only -S 2>&1 \ |
| 112 | // RUN: | FileCheck -check-prefix=DASM %s |
Samuel Antao | 3b7e38b | 2016-10-27 18:14:55 +0000 | [diff] [blame] | 113 | // DASM: # "nvptx64-nvidia-cuda" - "clang",{{.*}} output: "cuda-bindings-cuda-nvptx64-nvidia-cuda-sm_30.s" |
Artem Belevich | bee2f41 | 2016-08-22 18:50:34 +0000 | [diff] [blame] | 114 | |
| 115 | // |
| 116 | // Test two gpu architectures with complete compilation in device-only |
| 117 | // compilation mode. |
| 118 | // |
| 119 | // RUN: %clang -target powerpc64le-ibm-linux-gnu -ccc-print-bindings \ |
| 120 | // RUN: --cuda-gpu-arch=sm_30 --cuda-gpu-arch=sm_35 %s --cuda-device-only 2>&1 \ |
| 121 | // RUN: | FileCheck -check-prefix=DBIN2 %s |
| 122 | // DBIN2: # "nvptx64-nvidia-cuda" - "clang",{{.*}} output: |
| 123 | // DBIN2-NOT: cuda-bindings-device-cuda-nvptx64 |
Samuel Antao | 3b7e38b | 2016-10-27 18:14:55 +0000 | [diff] [blame] | 124 | // DBIN2: # "nvptx64-nvidia-cuda" - "NVPTX::Assembler",{{.*}} output: "cuda-bindings-cuda-nvptx64-nvidia-cuda-sm_30.o" |
Artem Belevich | bee2f41 | 2016-08-22 18:50:34 +0000 | [diff] [blame] | 125 | // DBIN2: # "nvptx64-nvidia-cuda" - "clang",{{.*}} output: |
| 126 | // DBIN2-NOT: cuda-bindings-device-cuda-nvptx64 |
Samuel Antao | 3b7e38b | 2016-10-27 18:14:55 +0000 | [diff] [blame] | 127 | // DBIN2: # "nvptx64-nvidia-cuda" - "NVPTX::Assembler",{{.*}} output: "cuda-bindings-cuda-nvptx64-nvidia-cuda-sm_35.o" |
Artem Belevich | bee2f41 | 2016-08-22 18:50:34 +0000 | [diff] [blame] | 128 | |
| 129 | // |
| 130 | // Test two gpu architectures up to the assemble phase in device-only |
| 131 | // compilation mode. |
| 132 | // |
| 133 | // RUN: %clang -target powerpc64le-ibm-linux-gnu -ccc-print-bindings \ |
| 134 | // RUN: --cuda-gpu-arch=sm_30 --cuda-gpu-arch=sm_35 %s --cuda-device-only -S 2>&1 \ |
| 135 | // RUN: | FileCheck -check-prefix=DASM2 %s |
Samuel Antao | 3b7e38b | 2016-10-27 18:14:55 +0000 | [diff] [blame] | 136 | // DASM2: # "nvptx64-nvidia-cuda" - "clang",{{.*}} output: "cuda-bindings-cuda-nvptx64-nvidia-cuda-sm_30.s" |
| 137 | // DASM2: # "nvptx64-nvidia-cuda" - "clang",{{.*}} output: "cuda-bindings-cuda-nvptx64-nvidia-cuda-sm_35.s" |