1 /// 2 /// Perform several driver tests for OpenMP offloading 3 /// 4 5 // REQUIRES: clang-driver 6 // REQUIRES: x86-registered-target 7 // REQUIRES: powerpc-registered-target 8 // REQUIRES: nvptx-registered-target 9 10 /// ########################################################################### 11 12 /// Check whether an invalid OpenMP target is specified: 13 // RUN: %clang -### -fopenmp=libomp -fopenmp-targets=aaa-bbb-ccc-ddd %s 2>&1 \ 14 // RUN: | FileCheck -check-prefix=CHK-INVALID-TARGET %s 15 // CHK-INVALID-TARGET: error: OpenMP target is invalid: 'aaa-bbb-ccc-ddd' 16 17 /// ########################################################################### 18 19 /// Check warning for empty -fopenmp-targets 20 // RUN: %clang -### -fopenmp=libomp -fopenmp-targets= %s 2>&1 \ 21 // RUN: | FileCheck -check-prefix=CHK-EMPTY-OMPTARGETS %s 22 // CHK-EMPTY-OMPTARGETS: warning: joined argument expects additional value: '-fopenmp-targets=' 23 24 /// ########################################################################### 25 26 /// Check error for no -fopenmp option 27 // RUN: %clang -### -fopenmp-targets=powerpc64le-ibm-linux-gnu %s 2>&1 \ 28 // RUN: | FileCheck -check-prefix=CHK-NO-FOPENMP %s 29 // RUN: %clang -### -fopenmp=libgomp -fopenmp-targets=powerpc64le-ibm-linux-gnu %s 2>&1 \ 30 // RUN: | FileCheck -check-prefix=CHK-NO-FOPENMP %s 31 // CHK-NO-FOPENMP: error: The option -fopenmp-targets must be used in conjunction with a -fopenmp option compatible with offloading, please use -fopenmp=libomp or -fopenmp=libiomp5. 32 33 /// ########################################################################### 34 35 /// Check warning for duplicate offloading targets. 36 // RUN: %clang -### -ccc-print-phases -fopenmp=libomp -fopenmp-targets=powerpc64le-ibm-linux-gnu,powerpc64le-ibm-linux-gnu %s 2>&1 \ 37 // RUN: | FileCheck -check-prefix=CHK-DUPLICATES %s 38 // CHK-DUPLICATES: warning: The OpenMP offloading target 'powerpc64le-ibm-linux-gnu' is similar to target 'powerpc64le-ibm-linux-gnu' already specified - will be ignored. 39 40 /// ########################################################################### 41 42 /// Check -Xopenmp-target=powerpc64le-ibm-linux-gnu -mcpu=pwr7 is passed when compiling for the device. 43 // RUN: %clang -### -no-canonical-prefixes -fopenmp=libomp -fopenmp-targets=powerpc64le-ibm-linux-gnu -Xopenmp-target=powerpc64le-ibm-linux-gnu -mcpu=pwr7 %s 2>&1 \ 44 // RUN: | FileCheck -check-prefix=CHK-FOPENMP-EQ-TARGET %s 45 46 // CHK-FOPENMP-EQ-TARGET: clang{{.*}} "-target-cpu" "pwr7" {{.*}}"-fopenmp-is-device" 47 48 /// ########################################################################### 49 50 /// Check -Xopenmp-target -mcpu=pwr7 is passed when compiling for the device. 51 // RUN: %clang -### -no-canonical-prefixes -fopenmp=libomp -fopenmp-targets=powerpc64le-ibm-linux-gnu -Xopenmp-target -mcpu=pwr7 %s 2>&1 \ 52 // RUN: | FileCheck -check-prefix=CHK-FOPENMP-TARGET %s 53 54 // CHK-FOPENMP-TARGET: clang{{.*}} "-target-cpu" "pwr7" {{.*}}"-fopenmp-is-device" 55 56 /// ########################################################################## 57 58 /// Check -mcpu=pwr7 is passed to the same triple. 59 // RUN: %clang -### -no-canonical-prefixes -fopenmp=libomp -fopenmp-targets=powerpc64le-ibm-linux-gnu -target powerpc64le-ibm-linux-gnu -mcpu=pwr7 %s 2>&1 \ 60 // RUN: | FileCheck -check-prefix=CHK-FOPENMP-MCPU-TO-SAME-TRIPLE %s 61 62 // CHK-FOPENMP-MCPU-TO-SAME-TRIPLE: clang{{.*}} "-target-cpu" "pwr7" {{.*}}"-fopenmp-is-device" 63 64 /// ########################################################################## 65 66 /// Check -march=pwr7 is NOT passed to nvptx64-nvidia-cuda. 67 // RUN: %clang -### -no-canonical-prefixes -fopenmp=libomp -fopenmp-targets=nvptx64-nvidia-cuda -target powerpc64le-ibm-linux-gnu -march=pwr7 %s 2>&1 \ 68 // RUN: | FileCheck -check-prefix=CHK-FOPENMP-MARCH-TO-GPU %s 69 70 // CHK-FOPENMP-MARCH-TO-GPU-NOT: clang{{.*}} "-target-cpu" "pwr7" {{.*}}"-fopenmp-is-device" 71 72 /// ########################################################################### 73 74 /// Check -march=pwr7 is NOT passed to x86_64-unknown-linux-gnu. 75 // RUN: %clang -### -no-canonical-prefixes -fopenmp=libomp -fopenmp-targets=x86_64-unknown-linux-gnu -target powerpc64le-ibm-linux-gnu -march=pwr7 %s 2>&1 \ 76 // RUN: | FileCheck -check-prefix=CHK-FOPENMP-MARCH-TO-X86 %s 77 78 // CHK-FOPENMP-MARCH-TO-X86-NOT: clang{{.*}} "-target-cpu" "pwr7" {{.*}}"-fopenmp-is-device" 79 80 /// ########################################################################### 81 82 /// Check -Xopenmp-target triggers error when multiple triples are used. 83 // RUN: %clang -### -no-canonical-prefixes -fopenmp=libomp -fopenmp-targets=powerpc64le-ibm-linux-gnu,powerpc64le-unknown-linux-gnu -Xopenmp-target -mcpu=pwr8 %s 2>&1 \ 84 // RUN: | FileCheck -check-prefix=CHK-FOPENMP-TARGET-AMBIGUOUS-ERROR %s 85 86 // CHK-FOPENMP-TARGET-AMBIGUOUS-ERROR: clang{{.*}} error: cannot deduce implicit triple value for -Xopenmp-target, specify triple using -Xopenmp-target=<triple> 87 88 /// ########################################################################### 89 90 /// Check -Xopenmp-target triggers error when an option requiring arguments is passed to it. 91 // RUN: %clang -### -no-canonical-prefixes -fopenmp=libomp -fopenmp-targets=powerpc64le-ibm-linux-gnu -Xopenmp-target -Xopenmp-target -mcpu=pwr8 %s 2>&1 \ 92 // RUN: | FileCheck -check-prefix=CHK-FOPENMP-TARGET-NESTED-ERROR %s 93 94 // CHK-FOPENMP-TARGET-NESTED-ERROR: clang{{.*}} error: invalid -Xopenmp-target argument: '-Xopenmp-target -Xopenmp-target', options requiring arguments are unsupported 95 96 /// ########################################################################### 97 98 /// Check the phases graph when using a single target, different from the host. 99 /// We should have an offload action joining the host compile and device 100 /// preprocessor and another one joining the device linking outputs to the host 101 /// action. 102 // RUN: %clang -ccc-print-phases -fopenmp=libomp -target powerpc64le-ibm-linux-gnu -fopenmp-targets=x86_64-pc-linux-gnu %s 2>&1 \ 103 // RUN: | FileCheck -check-prefix=CHK-PHASES %s 104 // CHK-PHASES: 0: input, "[[INPUT:.+\.c]]", c, (host-openmp) 105 // CHK-PHASES: 1: preprocessor, {0}, cpp-output, (host-openmp) 106 // CHK-PHASES: 2: compiler, {1}, ir, (host-openmp) 107 // CHK-PHASES: 3: backend, {2}, assembler, (host-openmp) 108 // CHK-PHASES: 4: assembler, {3}, object, (host-openmp) 109 // CHK-PHASES: 5: input, "[[INPUT]]", c, (device-openmp) 110 // CHK-PHASES: 6: preprocessor, {5}, cpp-output, (device-openmp) 111 // CHK-PHASES: 7: compiler, {6}, ir, (device-openmp) 112 // CHK-PHASES: 8: offload, "host-openmp (powerpc64le-ibm-linux-gnu)" {2}, "device-openmp (x86_64-pc-linux-gnu)" {7}, ir 113 // CHK-PHASES: 9: backend, {8}, assembler, (device-openmp) 114 // CHK-PHASES: 10: assembler, {9}, object, (device-openmp) 115 // CHK-PHASES: 11: linker, {10}, image, (device-openmp) 116 // CHK-PHASES: 12: offload, "device-openmp (x86_64-pc-linux-gnu)" {11}, image 117 // CHK-PHASES: 13: clang-offload-wrapper, {12}, ir, (host-openmp) 118 // CHK-PHASES: 14: backend, {13}, assembler, (host-openmp) 119 // CHK-PHASES: 15: assembler, {14}, object, (host-openmp) 120 // CHK-PHASES: 16: linker, {4, 15}, image, (host-openmp) 121 122 /// ########################################################################### 123 124 /// Check the phases when using multiple targets. Here we also add a library to 125 /// make sure it is treated as input by the device. 126 // RUN: %clang -ccc-print-phases -lsomelib -fopenmp=libomp -target powerpc64-ibm-linux-gnu -fopenmp-targets=x86_64-pc-linux-gnu,powerpc64-ibm-linux-gnu %s 2>&1 \ 127 // RUN: | FileCheck -check-prefix=CHK-PHASES-LIB %s 128 // CHK-PHASES-LIB: 0: input, "somelib", object, (host-openmp) 129 // CHK-PHASES-LIB: 1: input, "[[INPUT:.+\.c]]", c, (host-openmp) 130 // CHK-PHASES-LIB: 2: preprocessor, {1}, cpp-output, (host-openmp) 131 // CHK-PHASES-LIB: 3: compiler, {2}, ir, (host-openmp) 132 // CHK-PHASES-LIB: 4: backend, {3}, assembler, (host-openmp) 133 // CHK-PHASES-LIB: 5: assembler, {4}, object, (host-openmp) 134 // CHK-PHASES-LIB: 6: input, "somelib", object, (device-openmp) 135 // CHK-PHASES-LIB: 7: input, "[[INPUT]]", c, (device-openmp) 136 // CHK-PHASES-LIB: 8: preprocessor, {7}, cpp-output, (device-openmp) 137 // CHK-PHASES-LIB: 9: compiler, {8}, ir, (device-openmp) 138 // CHK-PHASES-LIB: 10: offload, "host-openmp (powerpc64-ibm-linux-gnu)" {3}, "device-openmp (x86_64-pc-linux-gnu)" {9}, ir 139 // CHK-PHASES-LIB: 11: backend, {10}, assembler, (device-openmp) 140 // CHK-PHASES-LIB: 12: assembler, {11}, object, (device-openmp) 141 // CHK-PHASES-LIB: 13: linker, {6, 12}, image, (device-openmp) 142 // CHK-PHASES-LIB: 14: offload, "device-openmp (x86_64-pc-linux-gnu)" {13}, image 143 // CHK-PHASES-LIB: 15: input, "somelib", object, (device-openmp) 144 // CHK-PHASES-LIB: 16: input, "[[INPUT]]", c, (device-openmp) 145 // CHK-PHASES-LIB: 17: preprocessor, {16}, cpp-output, (device-openmp) 146 // CHK-PHASES-LIB: 18: compiler, {17}, ir, (device-openmp) 147 // CHK-PHASES-LIB: 19: offload, "host-openmp (powerpc64-ibm-linux-gnu)" {3}, "device-openmp (powerpc64-ibm-linux-gnu)" {18}, ir 148 // CHK-PHASES-LIB: 20: backend, {19}, assembler, (device-openmp) 149 // CHK-PHASES-LIB: 21: assembler, {20}, object, (device-openmp) 150 // CHK-PHASES-LIB: 22: linker, {15, 21}, image, (device-openmp) 151 // CHK-PHASES-LIB: 23: offload, "device-openmp (powerpc64-ibm-linux-gnu)" {22}, image 152 // CHK-PHASES-LIB: 24: clang-offload-wrapper, {14, 23}, ir, (host-openmp) 153 // CHK-PHASES-LIB: 25: backend, {24}, assembler, (host-openmp) 154 // CHK-PHASES-LIB: 26: assembler, {25}, object, (host-openmp) 155 // CHK-PHASES-LIB: 27: linker, {0, 5, 26}, image, (host-openmp) 156 157 /// ########################################################################### 158 159 /// Check the phases when using multiple targets and multiple source files 160 // RUN: echo " " > %t.c 161 // RUN: %clang -ccc-print-phases -lsomelib -fopenmp=libomp -target powerpc64-ibm-linux-gnu -fopenmp-targets=x86_64-pc-linux-gnu,powerpc64-ibm-linux-gnu %s %t.c 2>&1 \ 162 // RUN: | FileCheck -check-prefix=CHK-PHASES-FILES %s 163 // CHK-PHASES-FILES: 0: input, "somelib", object, (host-openmp) 164 // CHK-PHASES-FILES: 1: input, "[[INPUT1:.+\.c]]", c, (host-openmp) 165 // CHK-PHASES-FILES: 2: preprocessor, {1}, cpp-output, (host-openmp) 166 // CHK-PHASES-FILES: 3: compiler, {2}, ir, (host-openmp) 167 // CHK-PHASES-FILES: 4: backend, {3}, assembler, (host-openmp) 168 // CHK-PHASES-FILES: 5: assembler, {4}, object, (host-openmp) 169 // CHK-PHASES-FILES: 6: input, "[[INPUT2:.+\.c]]", c, (host-openmp) 170 // CHK-PHASES-FILES: 7: preprocessor, {6}, cpp-output, (host-openmp) 171 // CHK-PHASES-FILES: 8: compiler, {7}, ir, (host-openmp) 172 // CHK-PHASES-FILES: 9: backend, {8}, assembler, (host-openmp) 173 // CHK-PHASES-FILES: 10: assembler, {9}, object, (host-openmp) 174 // CHK-PHASES-FILES: 11: input, "somelib", object, (device-openmp) 175 // CHK-PHASES-FILES: 12: input, "[[INPUT1]]", c, (device-openmp) 176 // CHK-PHASES-FILES: 13: preprocessor, {12}, cpp-output, (device-openmp) 177 // CHK-PHASES-FILES: 14: compiler, {13}, ir, (device-openmp) 178 // CHK-PHASES-FILES: 15: offload, "host-openmp (powerpc64-ibm-linux-gnu)" {3}, "device-openmp (x86_64-pc-linux-gnu)" {14}, ir 179 // CHK-PHASES-FILES: 16: backend, {15}, assembler, (device-openmp) 180 // CHK-PHASES-FILES: 17: assembler, {16}, object, (device-openmp) 181 // CHK-PHASES-FILES: 18: input, "[[INPUT2]]", c, (device-openmp) 182 // CHK-PHASES-FILES: 19: preprocessor, {18}, cpp-output, (device-openmp) 183 // CHK-PHASES-FILES: 20: compiler, {19}, ir, (device-openmp) 184 // CHK-PHASES-FILES: 21: offload, "host-openmp (powerpc64-ibm-linux-gnu)" {8}, "device-openmp (x86_64-pc-linux-gnu)" {20}, ir 185 // CHK-PHASES-FILES: 22: backend, {21}, assembler, (device-openmp) 186 // CHK-PHASES-FILES: 23: assembler, {22}, object, (device-openmp) 187 // CHK-PHASES-FILES: 24: linker, {11, 17, 23}, image, (device-openmp) 188 // CHK-PHASES-FILES: 25: offload, "device-openmp (x86_64-pc-linux-gnu)" {24}, image 189 // CHK-PHASES-FILES: 26: input, "somelib", object, (device-openmp) 190 // CHK-PHASES-FILES: 27: input, "[[INPUT1]]", c, (device-openmp) 191 // CHK-PHASES-FILES: 28: preprocessor, {27}, cpp-output, (device-openmp) 192 // CHK-PHASES-FILES: 29: compiler, {28}, ir, (device-openmp) 193 // CHK-PHASES-FILES: 30: offload, "host-openmp (powerpc64-ibm-linux-gnu)" {3}, "device-openmp (powerpc64-ibm-linux-gnu)" {29}, ir 194 // CHK-PHASES-FILES: 31: backend, {30}, assembler, (device-openmp) 195 // CHK-PHASES-FILES: 32: assembler, {31}, object, (device-openmp) 196 // CHK-PHASES-FILES: 33: input, "[[INPUT2]]", c, (device-openmp) 197 // CHK-PHASES-FILES: 34: preprocessor, {33}, cpp-output, (device-openmp) 198 // CHK-PHASES-FILES: 35: compiler, {34}, ir, (device-openmp) 199 // CHK-PHASES-FILES: 36: offload, "host-openmp (powerpc64-ibm-linux-gnu)" {8}, "device-openmp (powerpc64-ibm-linux-gnu)" {35}, ir 200 // CHK-PHASES-FILES: 37: backend, {36}, assembler, (device-openmp) 201 // CHK-PHASES-FILES: 38: assembler, {37}, object, (device-openmp) 202 // CHK-PHASES-FILES: 39: linker, {26, 32, 38}, image, (device-openmp) 203 // CHK-PHASES-FILES: 40: offload, "device-openmp (powerpc64-ibm-linux-gnu)" {39}, image 204 // CHK-PHASES-FILES: 41: clang-offload-wrapper, {25, 40}, ir, (host-openmp) 205 // CHK-PHASES-FILES: 42: backend, {41}, assembler, (host-openmp) 206 // CHK-PHASES-FILES: 43: assembler, {42}, object, (host-openmp) 207 // CHK-PHASES-FILES: 44: linker, {0, 5, 10, 43}, image, (host-openmp) 208 209 /// ########################################################################### 210 211 /// Check the phases graph when using a single GPU target, and check the OpenMP 212 /// and CUDA phases are articulated correctly. 213 // RUN: %clang -ccc-print-phases -fopenmp=libomp -target powerpc64le-ibm-linux-gnu -fopenmp-targets=nvptx64-nvidia-cuda -x cuda %s 2>&1 \ 214 // RUN: | FileCheck -check-prefix=CHK-PHASES-WITH-CUDA %s 215 // CHK-PHASES-WITH-CUDA: 0: input, "[[INPUT:.+\.c]]", cuda, (host-cuda-openmp) 216 // CHK-PHASES-WITH-CUDA: 1: preprocessor, {0}, cuda-cpp-output, (host-cuda-openmp) 217 // CHK-PHASES-WITH-CUDA: 2: compiler, {1}, ir, (host-cuda-openmp) 218 // CHK-PHASES-WITH-CUDA: 3: input, "[[INPUT]]", cuda, (device-cuda, sm_20) 219 // CHK-PHASES-WITH-CUDA: 4: preprocessor, {3}, cuda-cpp-output, (device-cuda, sm_20) 220 // CHK-PHASES-WITH-CUDA: 5: compiler, {4}, ir, (device-cuda, sm_20) 221 // CHK-PHASES-WITH-CUDA: 6: backend, {5}, assembler, (device-cuda, sm_20) 222 // CHK-PHASES-WITH-CUDA: 7: assembler, {6}, object, (device-cuda, sm_20) 223 // CHK-PHASES-WITH-CUDA: 8: offload, "device-cuda (nvptx64-nvidia-cuda:sm_20)" {7}, object 224 // CHK-PHASES-WITH-CUDA: 9: offload, "device-cuda (nvptx64-nvidia-cuda:sm_20)" {6}, assembler 225 // CHK-PHASES-WITH-CUDA: 10: linker, {8, 9}, cuda-fatbin, (device-cuda) 226 // CHK-PHASES-WITH-CUDA: 11: offload, "host-cuda-openmp (powerpc64le-ibm-linux-gnu)" {2}, "device-cuda (nvptx64-nvidia-cuda)" {10}, ir 227 // CHK-PHASES-WITH-CUDA: 12: backend, {11}, assembler, (host-cuda-openmp) 228 // CHK-PHASES-WITH-CUDA: 13: assembler, {12}, object, (host-cuda-openmp) 229 // CHK-PHASES-WITH-CUDA: 14: input, "[[INPUT]]", cuda, (device-openmp) 230 // CHK-PHASES-WITH-CUDA: 15: preprocessor, {14}, cuda-cpp-output, (device-openmp) 231 // CHK-PHASES-WITH-CUDA: 16: compiler, {15}, ir, (device-openmp) 232 // CHK-PHASES-WITH-CUDA: 17: offload, "host-cuda-openmp (powerpc64le-ibm-linux-gnu)" {2}, "device-openmp (nvptx64-nvidia-cuda)" {16}, ir 233 // CHK-PHASES-WITH-CUDA: 18: backend, {17}, assembler, (device-openmp) 234 // CHK-PHASES-WITH-CUDA: 19: assembler, {18}, object, (device-openmp) 235 // CHK-PHASES-WITH-CUDA: 20: linker, {19}, image, (device-openmp) 236 // CHK-PHASES-WITH-CUDA: 21: offload, "device-openmp (nvptx64-nvidia-cuda)" {20}, image 237 // CHK-PHASES-WITH-CUDA: 22: clang-offload-wrapper, {21}, ir, (host-cuda-openmp) 238 // CHK-PHASES-WITH-CUDA: 23: backend, {22}, assembler, (host-cuda-openmp) 239 // CHK-PHASES-WITH-CUDA: 24: assembler, {23}, object, (host-cuda-openmp) 240 // CHK-PHASES-WITH-CUDA: 25: linker, {13, 24}, image, (host-cuda-openmp) 241 242 /// ########################################################################### 243 244 /// Check of the commands passed to each tool when using valid OpenMP targets. 245 /// Here we also check that offloading does not break the use of integrated 246 /// assembler. It does however preclude the merge of the host compile and 247 /// backend phases. There are also two offloading specific options: 248 /// -fopenmp-is-device: will tell the frontend that it will generate code for a 249 /// target. 250 /// -fopenmp-host-ir-file-path: specifies the host IR file that can be loaded by 251 /// the target code generation to gather information about which declaration 252 /// really need to be emitted. 253 /// 254 // RUN: %clang -### -fopenmp=libomp -o %t.out -target powerpc64le-linux -fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu %s -no-canonical-prefixes 2>&1 \ 255 // RUN: | FileCheck -check-prefix=CHK-COMMANDS %s 256 // RUN: %clang -### -fopenmp=libomp -o %t.out -target powerpc64le-linux -fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu %s -save-temps -no-canonical-prefixes 2>&1 \ 257 // RUN: | FileCheck -check-prefix=CHK-COMMANDS-ST %s 258 259 // 260 // Generate host BC file and host object. 261 // 262 // CHK-COMMANDS: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-llvm-bc" {{.*}}"-disable-llvm-passes" 263 // CHK-COMMANDS-SAME: "-fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu" 264 // CHK-COMMANDS-SAME: "-o" " 265 // CHK-COMMANDS-SAME: [[HOSTBC:[^\\/]+\.bc]]" "-x" "c" " 266 // CHK-COMMANDS-SAME: [[INPUT:[^\\/]+\.c]]" 267 // CHK-COMMANDS: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-obj" {{.*}}"-fopenmp" {{.*}}"-o" " 268 // CHK-COMMANDS-SAME: [[HOSTOBJ:[^\\/]+\.o]]" "-x" "ir" "{{.*}}[[HOSTBC]]" 269 // CHK-COMMANDS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-E" {{.*}}"-fopenmp" {{.*}}"-o" " 270 // CHK-COMMANDS-ST-SAME: [[HOSTPP:[^\\/]+\.i]]" "-x" "c" " 271 // CHK-COMMANDS-ST-SAME: [[INPUT:[^\\/]+\.c]]" 272 // CHK-COMMANDS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-llvm-bc" {{.*}}"-fopenmp" {{.*}}"-disable-llvm-passes" {{.*}}"-fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu" {{.*}}"-o" " 273 // CHK-COMMANDS-ST-SAME: [[HOSTBC:[^\\/]+\.bc]]" "-x" "cpp-output" "{{.*}}[[HOSTPP]]" 274 // CHK-COMMANDS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-S" {{.*}}"-fopenmp" {{.*}}"-o" " 275 // CHK-COMMANDS-ST-SAME: [[HOSTASM:[^\\/]+\.s]]" "-x" "ir" "{{.*}}[[HOSTBC]]" 276 // CHK-COMMANDS-ST: clang{{.*}}" "-cc1as" "-triple" "powerpc64le-unknown-linux" "-filetype" "obj" {{.*}}"-o" " 277 // CHK-COMMANDS-ST-SAME: [[HOSTOBJ:[^\\/]+\.o]]" "{{.*}}[[HOSTASM]]" 278 279 // 280 // Compile for the powerpc device. 281 // 282 // CHK-COMMANDS: clang{{.*}}" "-cc1" "-triple" "powerpc64le-ibm-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-obj" {{.*}}"-pic-level" "2" {{.*}}"-fopenmp" 283 // CHK-COMMANDS-SAME: "-fopenmp-is-device" "-fopenmp-host-ir-file-path" "{{.*}}[[HOSTBC]]" {{.*}}"-o" " 284 // CHK-COMMANDS-SAME: [[T1OBJ:[^\\/]+\.o]]" "-x" "c" "{{.*}}[[INPUT]]" 285 // CHK-COMMANDS: ld{{(\.exe)?}}" {{.*}}"-o" " 286 // CHK-COMMANDS-SAME: [[T1BIN:[^\\/]+\.out]]" {{.*}}"{{.*}}[[T1OBJ]]" 287 // CHK-COMMANDS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-ibm-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-E" {{.*}}"-fopenmp" {{.*}}"-o" " 288 // CHK-COMMANDS-ST-SAME: [[T1PP:[^\\/]+\.i]]" "-x" "c" "{{.*}}[[INPUT]]" 289 // CHK-COMMANDS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-ibm-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-llvm-bc" {{.*}}"-pic-level" "2" {{.*}}"-fopenmp" {{.*}}"-fopenmp-is-device" "-fopenmp-host-ir-file-path" "{{.*}}[[HOSTBC]]" {{.*}}"-o" " 290 // CHK-COMMANDS-ST-SAME: [[T1BC:[^\\/]+\.bc]]" "-x" "cpp-output" "{{.*}}[[T1PP]]" 291 // CHK-COMMANDS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-ibm-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-S" {{.*}}"-fopenmp" {{.*}}"-o" " 292 // CHK-COMMANDS-ST-SAME: [[T1ASM:[^\\/]+\.s]]" "-x" "ir" "{{.*}}[[T1BC]]" 293 // CHK-COMMANDS-ST: clang{{.*}}" "-cc1as" "-triple" "powerpc64le-ibm-linux-gnu" "-filetype" "obj" {{.*}}"-o" " 294 // CHK-COMMANDS-ST-SAME: [[T1OBJ:[^\\/]+\.o]]" "{{.*}}[[T1ASM]]" 295 // CHK-COMMANDS-ST: ld{{(\.exe)?}}" {{.*}}"-shared" {{.*}}"-o" " 296 // CHK-COMMANDS-ST-SAME: [[T1BIN:[^\\/]+\.out-openmp-powerpc64le-ibm-linux-gnu]]" {{.*}}"{{.*}}[[T1OBJ]]" 297 // 298 // Compile for the x86 device. 299 // 300 // CHK-COMMANDS: clang{{.*}}" "-cc1" "-triple" "x86_64-pc-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-obj" {{.*}}"-pic-level" "2" {{.*}}"-fopenmp" 301 // CHK-COMMANDS-SAME: "-fopenmp-is-device" "-fopenmp-host-ir-file-path" "{{.*}}[[HOSTBC]]" {{.*}}"-o" " 302 // CHK-COMMANDS-SAME: [[T2OBJ:[^\\/]+\.o]]" "-x" "c" "{{.*}}[[INPUT]]" 303 // CHK-COMMANDS: ld{{(\.exe)?}}" {{.*}}"-o" " 304 // CHK-COMMANDS-SAME: [[T2BIN:[^\\/]+\.out]]" {{.*}}"{{.*}}[[T2OBJ]]" 305 // CHK-COMMANDS-ST: clang{{.*}}" "-cc1" "-triple" "x86_64-pc-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-E" {{.*}}"-fopenmp" {{.*}}"-o" " 306 // CHK-COMMANDS-ST-SAME: [[T2PP:[^\\/]+\.i]]" "-x" "c" "{{.*}}[[INPUT]]" 307 // CHK-COMMANDS-ST: clang{{.*}}" "-cc1" "-triple" "x86_64-pc-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-llvm-bc" {{.*}}"-pic-level" "2" {{.*}}"-fopenmp" {{.*}}"-fopenmp-is-device" "-fopenmp-host-ir-file-path" "{{.*}}[[HOSTBC]]" {{.*}}"-o" " 308 // CHK-COMMANDS-ST-SAME: [[T2BC:[^\\/]+\.bc]]" "-x" "cpp-output" "{{.*}}[[T2PP]]" 309 // CHK-COMMANDS-ST: clang{{.*}}" "-cc1" "-triple" "x86_64-pc-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-S" {{.*}}"-fopenmp" {{.*}}"-o" " 310 // CHK-COMMANDS-ST-SAME: [[T2ASM:[^\\/]+\.s]]" "-x" "ir" "{{.*}}[[T2BC]]" 311 // CHK-COMMANDS-ST: clang{{.*}}" "-cc1as" "-triple" "x86_64-pc-linux-gnu" "-filetype" "obj" {{.*}}"-o" " 312 // CHK-COMMANDS-ST-SAME: [[T2OBJ:[^\\/]+\.o]]" "{{.*}}[[T2ASM]]" 313 // CHK-COMMANDS-ST: ld{{(\.exe)?}}" {{.*}}"-shared" {{.*}}"-o" " 314 // CHK-COMMANDS-ST-SAME: [[T2BIN:[^\\/]+\.out-openmp-x86_64-pc-linux-gnu]]" {{.*}}"{{.*}}[[T2OBJ]]" 315 316 // 317 // Create wrapper BC file and wrapper object. 318 // 319 // CHK-COMMANDS: clang-offload-wrapper{{(\.exe)?}}" "-target" "powerpc64le-unknown-linux" {{.*}}"-o" " 320 // CHK-COMMANDS-SAME: [[WRAPPERBC:[^\\/]+\.bc]]" "{{.*}}[[T1BIN]]" "{{.*}}[[T2BIN]]" 321 // CHK-COMMANDS: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-obj" {{.*}}"-fopenmp" {{.*}}"-o" " 322 // CHK-COMMANDS-SAME: [[WRAPPEROBJ:[^\\/]+\.o]]" "-x" "ir" "{{.*}}[[WRAPPERBC]]" 323 // CHK-COMMANDS-ST: clang-offload-wrapper{{(\.exe)?}}" "-target" "powerpc64le-unknown-linux" {{.*}}"-o" " 324 // CHK-COMMANDS-ST-SAME: [[WRAPPERBC:[^\\/]+\.bc]]" "{{.*}}[[T1BIN]]" "{{.*}}[[T2BIN]]" 325 // CHK-COMMANDS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-S" {{.*}}"-fopenmp" {{.*}}"-o" " 326 // CHK-COMMANDS-ST-SAME: [[WRAPPERASM:[^\\/]+\.s]]" "-x" "ir" "{{.*}}[[WRAPPERBC]]" 327 // CHK-COMMANDS-ST: clang{{.*}}" "-cc1as" "-triple" "powerpc64le-unknown-linux" "-filetype" "obj" {{.*}}"-o" " 328 // CHK-COMMANDS-ST-SAME: [[WRAPPEROBJ:[^\\/]+\.o]]" "{{.*}}[[WRAPPERASM]]" 329 330 // 331 // Link host binary. 332 // 333 // CHK-COMMANDS: ld{{(\.exe)?}}" {{.*}}"-o" " 334 // CHK-COMMANDS-SAME: [[HOSTBIN:[^\\/]+\.out]]" {{.*}}"{{.*}}[[HOSTOBJ]]" "{{.*}}[[WRAPPEROBJ]]" {{.*}}"-lomptarget" 335 // CHK-COMMANDS-ST: ld{{(\.exe)?}}" {{.*}}"-o" " 336 // CHK-COMMANDS-ST-SAME: [[HOSTBIN:[^\\/]+\.out]]" {{.*}}"{{.*}}[[HOSTOBJ]]" "{{.*}}[[WRAPPEROBJ]]" {{.*}}"-lomptarget" 337 338 /// ########################################################################### 339 340 /// Check separate compilation with offloading - bundling actions 341 // RUN: %clang -### -ccc-print-phases -fopenmp=libomp -c -o %t.o %S/Input/in.so -lsomelib -target powerpc64le-linux -fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu %s -no-canonical-prefixes 2>&1 \ 342 // RUN: | FileCheck -check-prefix=CHK-BUACTIONS %s 343 344 // CHK-BUACTIONS: 0: input, "[[INPUT:.+\.c]]", c, (host-openmp) 345 // CHK-BUACTIONS: 1: preprocessor, {0}, cpp-output, (host-openmp) 346 // CHK-BUACTIONS: 2: compiler, {1}, ir, (host-openmp) 347 // CHK-BUACTIONS: 3: input, "[[INPUT]]", c, (device-openmp) 348 // CHK-BUACTIONS: 4: preprocessor, {3}, cpp-output, (device-openmp) 349 // CHK-BUACTIONS: 5: compiler, {4}, ir, (device-openmp) 350 // CHK-BUACTIONS: 6: offload, "host-openmp (powerpc64le-unknown-linux)" {2}, "device-openmp (powerpc64le-ibm-linux-gnu)" {5}, ir 351 // CHK-BUACTIONS: 7: backend, {6}, assembler, (device-openmp) 352 // CHK-BUACTIONS: 8: assembler, {7}, object, (device-openmp) 353 // CHK-BUACTIONS: 9: offload, "device-openmp (powerpc64le-ibm-linux-gnu)" {8}, object 354 // CHK-BUACTIONS: 10: input, "[[INPUT]]", c, (device-openmp) 355 // CHK-BUACTIONS: 11: preprocessor, {10}, cpp-output, (device-openmp) 356 // CHK-BUACTIONS: 12: compiler, {11}, ir, (device-openmp) 357 // CHK-BUACTIONS: 13: offload, "host-openmp (powerpc64le-unknown-linux)" {2}, "device-openmp (x86_64-pc-linux-gnu)" {12}, ir 358 // CHK-BUACTIONS: 14: backend, {13}, assembler, (device-openmp) 359 // CHK-BUACTIONS: 15: assembler, {14}, object, (device-openmp) 360 // CHK-BUACTIONS: 16: offload, "device-openmp (x86_64-pc-linux-gnu)" {15}, object 361 // CHK-BUACTIONS: 17: backend, {2}, assembler, (host-openmp) 362 // CHK-BUACTIONS: 18: assembler, {17}, object, (host-openmp) 363 // CHK-BUACTIONS: 19: clang-offload-bundler, {9, 16, 18}, object, (host-openmp) 364 365 /// ########################################################################### 366 367 /// Check separate compilation with offloading - unbundling actions 368 // RUN: touch %t.i 369 // RUN: %clang -### -ccc-print-phases -fopenmp=libomp -o %t.out -lsomelib -target powerpc64le-linux -fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu %t.i -no-canonical-prefixes 2>&1 \ 370 // RUN: | FileCheck -check-prefix=CHK-UBACTIONS %s 371 372 // CHK-UBACTIONS: 0: input, "somelib", object, (host-openmp) 373 // CHK-UBACTIONS: 1: input, "[[INPUT:.+\.i]]", cpp-output, (host-openmp) 374 // CHK-UBACTIONS: 2: clang-offload-unbundler, {1}, cpp-output, (host-openmp) 375 // CHK-UBACTIONS: 3: compiler, {2}, ir, (host-openmp) 376 // CHK-UBACTIONS: 4: backend, {3}, assembler, (host-openmp) 377 // CHK-UBACTIONS: 5: assembler, {4}, object, (host-openmp) 378 // CHK-UBACTIONS: 6: input, "somelib", object, (device-openmp) 379 // CHK-UBACTIONS: 7: compiler, {2}, ir, (device-openmp) 380 // CHK-UBACTIONS: 8: offload, "host-openmp (powerpc64le-unknown-linux)" {3}, "device-openmp (powerpc64le-ibm-linux-gnu)" {7}, ir 381 // CHK-UBACTIONS: 9: backend, {8}, assembler, (device-openmp) 382 // CHK-UBACTIONS: 10: assembler, {9}, object, (device-openmp) 383 // CHK-UBACTIONS: 11: linker, {6, 10}, image, (device-openmp) 384 // CHK-UBACTIONS: 12: offload, "device-openmp (powerpc64le-ibm-linux-gnu)" {11}, image 385 // CHK-UBACTIONS: 13: input, "somelib", object, (device-openmp) 386 // CHK-UBACTIONS: 14: compiler, {2}, ir, (device-openmp) 387 // CHK-UBACTIONS: 15: offload, "host-openmp (powerpc64le-unknown-linux)" {3}, "device-openmp (x86_64-pc-linux-gnu)" {14}, ir 388 // CHK-UBACTIONS: 16: backend, {15}, assembler, (device-openmp) 389 // CHK-UBACTIONS: 17: assembler, {16}, object, (device-openmp) 390 // CHK-UBACTIONS: 18: linker, {13, 17}, image, (device-openmp) 391 // CHK-UBACTIONS: 19: offload, "device-openmp (x86_64-pc-linux-gnu)" {18}, image 392 // CHK-UBACTIONS: 20: clang-offload-wrapper, {12, 19}, ir, (host-openmp) 393 // CHK-UBACTIONS: 21: backend, {20}, assembler, (host-openmp) 394 // CHK-UBACTIONS: 22: assembler, {21}, object, (host-openmp) 395 // CHK-UBACTIONS: 23: linker, {0, 5, 22}, image, (host-openmp) 396 397 /// ########################################################################### 398 399 /// Check separate compilation with offloading - unbundling/bundling actions 400 // RUN: touch %t.i 401 // RUN: %clang -### -ccc-print-phases -fopenmp=libomp -c -o %t.o -lsomelib -target powerpc64le-linux -fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu %t.i -no-canonical-prefixes 2>&1 \ 402 // RUN: | FileCheck -check-prefix=CHK-UBUACTIONS %s 403 404 // CHK-UBUACTIONS: 0: input, "[[INPUT:.+\.i]]", cpp-output, (host-openmp) 405 // CHK-UBUACTIONS: 1: clang-offload-unbundler, {0}, cpp-output, (host-openmp) 406 // CHK-UBUACTIONS: 2: compiler, {1}, ir, (host-openmp) 407 // CHK-UBUACTIONS: 3: compiler, {1}, ir, (device-openmp) 408 // CHK-UBUACTIONS: 4: offload, "host-openmp (powerpc64le-unknown-linux)" {2}, "device-openmp (powerpc64le-ibm-linux-gnu)" {3}, ir 409 // CHK-UBUACTIONS: 5: backend, {4}, assembler, (device-openmp) 410 // CHK-UBUACTIONS: 6: assembler, {5}, object, (device-openmp) 411 // CHK-UBUACTIONS: 7: offload, "device-openmp (powerpc64le-ibm-linux-gnu)" {6}, object 412 // CHK-UBUACTIONS: 8: compiler, {1}, ir, (device-openmp) 413 // CHK-UBUACTIONS: 9: offload, "host-openmp (powerpc64le-unknown-linux)" {2}, "device-openmp (x86_64-pc-linux-gnu)" {8}, ir 414 // CHK-UBUACTIONS: 10: backend, {9}, assembler, (device-openmp) 415 // CHK-UBUACTIONS: 11: assembler, {10}, object, (device-openmp) 416 // CHK-UBUACTIONS: 12: offload, "device-openmp (x86_64-pc-linux-gnu)" {11}, object 417 // CHK-UBUACTIONS: 13: backend, {2}, assembler, (host-openmp) 418 // CHK-UBUACTIONS: 14: assembler, {13}, object, (host-openmp) 419 // CHK-UBUACTIONS: 15: clang-offload-bundler, {7, 12, 14}, object, (host-openmp) 420 421 /// ########################################################################### 422 423 /// Check separate compilation with offloading - bundling jobs construct 424 // RUN: %clang -### -fopenmp=libomp -c -o %t.o -lsomelib -target powerpc64le-linux -fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu %s -no-canonical-prefixes 2>&1 \ 425 // RUN: | FileCheck -check-prefix=CHK-BUJOBS %s 426 // RUN: %clang -### -fopenmp=libomp -c -o %t.o -lsomelib -target powerpc64le-linux -fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu %s -save-temps -no-canonical-prefixes 2>&1 \ 427 // RUN: | FileCheck -check-prefix=CHK-BUJOBS-ST %s 428 429 // Create host BC. 430 // CHK-BUJOBS: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-llvm-bc" {{.*}}"-fopenmp" {{.*}}"-disable-llvm-passes" {{.*}}"-fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu" {{.*}}"-o" " 431 // CHK-BUJOBS-SAME: [[HOSTBC:[^\\/]+\.bc]]" "-x" "c" " 432 // CHK-BUJOBS-SAME: [[INPUT:[^\\/]+\.c]]" 433 434 // CHK-BUJOBS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-E" {{.*}}"-fopenmp" {{.*}}"-o" " 435 // CHK-BUJOBS-ST-SAME: [[HOSTPP:[^\\/]+\.i]]" "-x" "c" " 436 // CHK-BUJOBS-ST-SAME: [[INPUT:[^\\/]+\.c]]" 437 // CHK-BUJOBS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-llvm-bc" {{.*}}"-fopenmp" {{.*}}"-disable-llvm-passes" {{.*}}"-fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu" {{.*}}"-o" " 438 // CHK-BUJOBS-ST-SAME: [[HOSTBC:[^\\/]+\.bc]]" "-x" "cpp-output" "{{.*}}[[HOSTPP]]" 439 440 // Create target 1 object. 441 // CHK-BUJOBS: clang{{.*}}" "-cc1" "-triple" "powerpc64le-ibm-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-obj" {{.*}}"-fopenmp" {{.*}}"-fopenmp-is-device" "-fopenmp-host-ir-file-path" "{{.*}}[[HOSTBC]]" {{.*}}"-o" " 442 // CHK-BUJOBS-SAME: [[T1OBJ:[^\\/]+\.o]]" "-x" "c" "{{.*}}[[INPUT]]" 443 // CHK-BUJOBS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-ibm-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-E" {{.*}}"-fopenmp" {{.*}}"-o" " 444 // CHK-BUJOBS-ST-SAME: [[T1PP:[^\\/]+\.i]]" "-x" "c" "{{.*}}[[INPUT]]" 445 // CHK-BUJOBS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-ibm-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-llvm-bc" {{.*}}"-fopenmp" {{.*}}"-fopenmp-is-device" "-fopenmp-host-ir-file-path" "{{.*}}[[HOSTBC]]" {{.*}}"-o" " 446 // CHK-BUJOBS-ST-SAME: [[T1BC:[^\\/]+\.bc]]" "-x" "cpp-output" "{{.*}}[[T1PP]]" 447 // CHK-BUJOBS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-ibm-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-S" {{.*}}"-fopenmp" {{.*}}"-o" " 448 // CHK-BUJOBS-ST-SAME: [[T1ASM:[^\\/]+\.s]]" "-x" "ir" "{{.*}}[[T1BC]]" 449 // CHK-BUJOBS-ST: clang{{.*}}" "-cc1as" "-triple" "powerpc64le-ibm-linux-gnu" "-filetype" "obj" {{.*}}"-o" " 450 // CHK-BUJOBS-ST-SAME: [[T1OBJ:[^\\/]+\.o]]" "{{.*}}[[T1ASM]]" 451 452 // Create target 2 object. 453 // CHK-BUJOBS: clang{{.*}}" "-cc1" "-triple" "x86_64-pc-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-obj" {{.*}}"-fopenmp" {{.*}}"-fopenmp-is-device" "-fopenmp-host-ir-file-path" "{{.*}}[[HOSTBC]]" {{.*}}"-o" " 454 // CHK-BUJOBS-SAME: [[T2OBJ:[^\\/]+\.o]]" "-x" "c" "{{.*}}[[INPUT]]" 455 // CHK-BUJOBS-ST: clang{{.*}}" "-cc1" "-triple" "x86_64-pc-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-E" {{.*}}"-fopenmp" {{.*}}"-o" " 456 // CHK-BUJOBS-ST-SAME: [[T2PP:[^\\/]+\.i]]" "-x" "c" "{{.*}}[[INPUT]]" 457 // CHK-BUJOBS-ST: clang{{.*}}" "-cc1" "-triple" "x86_64-pc-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-llvm-bc" {{.*}}"-fopenmp" {{.*}}"-fopenmp-is-device" "-fopenmp-host-ir-file-path" "{{.*}}[[HOSTBC]]" {{.*}}"-o" " 458 // CHK-BUJOBS-ST-SAME: [[T2BC:[^\\/]+\.bc]]" "-x" "cpp-output" "{{.*}}[[T2PP]]" 459 // CHK-BUJOBS-ST: clang{{.*}}" "-cc1" "-triple" "x86_64-pc-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-S" {{.*}}"-fopenmp" {{.*}}"-o" " 460 // CHK-BUJOBS-ST-SAME: [[T2ASM:[^\\/]+\.s]]" "-x" "ir" "{{.*}}[[T2BC]]" 461 // CHK-BUJOBS-ST: clang{{.*}}" "-cc1as" "-triple" "x86_64-pc-linux-gnu" "-filetype" "obj" {{.*}}"-o" " 462 // CHK-BUJOBS-ST-SAME: [[T2OBJ:[^\\/]+\.o]]" "{{.*}}[[T2ASM]]" 463 464 // Create host object and bundle. 465 // CHK-BUJOBS: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-obj" {{.*}}"-fopenmp" {{.*}}"-o" " 466 // CHK-BUJOBS-SAME: [[HOSTOBJ:[^\\/]+\.o]]" "-x" "ir" "{{.*}}[[HOSTBC]]" 467 // CHK-BUJOBS: clang-offload-bundler{{.*}}" "-type=o" "-targets=openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu,host-powerpc64le-unknown-linux" "-outputs= 468 // CHK-BUJOBS-SAME: [[RES:[^\\/]+\.o]]" "-inputs={{.*}}[[T1OBJ]],{{.*}}[[T2OBJ]],{{.*}}[[HOSTOBJ]]" 469 // CHK-BUJOBS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-S" {{.*}}"-fopenmp" {{.*}}"-o" " 470 // CHK-BUJOBS-ST-SAME: [[HOSTASM:[^\\/]+\.s]]" "-x" "ir" "{{.*}}[[HOSTBC]]" 471 // CHK-BUJOBS-ST: clang{{.*}}" "-cc1as" "-triple" "powerpc64le-unknown-linux" "-filetype" "obj" {{.*}}"-o" " 472 // CHK-BUJOBS-ST-SAME: [[HOSTOBJ:[^\\/]+\.o]]" "{{.*}}[[HOSTASM]]" 473 // CHK-BUJOBS-ST: clang-offload-bundler{{.*}}" "-type=o" "-targets=openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu,host-powerpc64le-unknown-linux" "-outputs= 474 // CHK-BUJOBS-ST-SAME: [[RES:[^\\/]+\.o]]" "-inputs={{.*}}[[T1OBJ]],{{.*}}[[T2OBJ]],{{.*}}[[HOSTOBJ]]" 475 476 /// ########################################################################### 477 478 /// Check separate compilation with offloading - unbundling jobs construct 479 // RUN: touch %t.i 480 // RUN: %clang -### -fopenmp=libomp -o %t.out -lsomelib -target powerpc64le-linux -fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu %t.i -no-canonical-prefixes 2>&1 \ 481 // RUN: | FileCheck -check-prefix=CHK-UBJOBS %s 482 // RUN: %clang -### -fopenmp=libomp -o %t.out -lsomelib -target powerpc64le-linux -fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu %t.i -save-temps -no-canonical-prefixes 2>&1 \ 483 // RUN: | FileCheck -check-prefix=CHK-UBJOBS-ST %s 484 // RUN: touch %t.o 485 // RUN: %clang -### -fopenmp=libomp -o %t.out -lsomelib -target powerpc64le-linux -fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu %t.o -no-canonical-prefixes 2>&1 \ 486 // RUN: | FileCheck -check-prefix=CHK-UBJOBS2 %s 487 // RUN: %clang -### -fopenmp=libomp -o %t.out -lsomelib -target powerpc64le-linux -fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu %t.o %S/Inputs/in.so -save-temps -no-canonical-prefixes 2>&1 \ 488 // RUN: | FileCheck -check-prefix=CHK-UBJOBS2-ST %s 489 490 // Unbundle and create host BC. 491 // CHK-UBJOBS: clang-offload-bundler{{.*}}" "-type=i" "-targets=host-powerpc64le-unknown-linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu" "-inputs= 492 // CHK-UBJOBS-SAME: [[INPUT:[^\\/]+\.i]]" "-outputs= 493 // CHK-UBJOBS-SAME: [[HOSTPP:[^\\/]+\.i]], 494 // CHK-UBJOBS-SAME: [[T1PP:[^\\/]+\.i]], 495 // CHK-UBJOBS-SAME: [[T2PP:[^\\/]+\.i]]" "-unbundle" 496 // CHK-UBJOBS: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-llvm-bc" {{.*}}"-fopenmp" {{.*}}"-disable-llvm-passes" {{.*}}"-fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu" {{.*}}"-o" " 497 // CHK-UBJOBS-SAME: [[HOSTBC:[^\\/]+\.bc]]" "-x" "cpp-output" "{{.*}}[[HOSTPP]]" 498 // CHK-UBJOBS: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-obj" {{.*}}"-fopenmp" {{.*}}"-o" " 499 // CHK-UBJOBS-SAME: [[HOSTOBJ:[^\\/]+\.o]]" "-x" "ir" "{{.*}}[[HOSTBC]]" 500 // CHK-UBJOBS-ST: clang-offload-bundler{{.*}}" "-type=i" "-targets=host-powerpc64le-unknown-linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu" "-inputs= 501 // CHK-UBJOBS-ST-SAME: [[INPUT:[^\\/]+\.i]]" "-outputs= 502 // CHK-UBJOBS-ST-SAME: [[HOSTPP:[^\\/,]+\.i]], 503 // CHK-UBJOBS-ST-SAME: [[T1PP:[^\\/,]+\.i]], 504 // CHK-UBJOBS-ST-SAME: [[T2PP:[^\\/,]+\.i]]" "-unbundle" 505 // CHK-UBJOBS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-llvm-bc" {{.*}}"-fopenmp" {{.*}}"-disable-llvm-passes" {{.*}}"-fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu" {{.*}}"-o" " 506 // CHK-UBJOBS-ST-SAME: [[HOSTBC:[^\\/]+\.bc]]" "-x" "cpp-output" "{{.*}}[[HOSTPP]]" 507 // CHK-UBJOBS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-S" {{.*}}"-fopenmp" {{.*}}"-o" " 508 // CHK-UBJOBS-ST-SAME: [[HOSTASM:[^\\/]+\.s]]" "-x" "ir" "{{.*}}[[HOSTBC]]" 509 // CHK-UBJOBS-ST: clang{{.*}}" "-cc1as" "-triple" "powerpc64le-unknown-linux" "-filetype" "obj" {{.*}}"-o" " 510 // CHK-UBJOBS-ST-SAME: [[HOSTOBJ:[^\\/]+\.o]]" "{{.*}}[[HOSTASM]]" 511 512 // Create target 1 object. 513 // CHK-UBJOBS: clang{{.*}}" "-cc1" "-triple" "powerpc64le-ibm-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-obj" {{.*}}"-fopenmp" {{.*}}"-fopenmp-is-device" "-fopenmp-host-ir-file-path" "{{.*}}[[HOSTBC]]" {{.*}}"-o" " 514 // CHK-UBJOBS-SAME: [[T1OBJ:[^\\/]+\.o]]" "-x" "cpp-output" "{{.*}}[[T1PP]]" 515 // CHK-UBJOBS: ld{{(\.exe)?}}" {{.*}}"-o" " 516 // CHK-UBJOBS-SAME: [[T1BIN:[^\\/]+\.out]]" {{.*}}"{{.*}}[[T1OBJ]]" 517 // CHK-UBJOBS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-ibm-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-llvm-bc" {{.*}}"-fopenmp" {{.*}}"-fopenmp-is-device" "-fopenmp-host-ir-file-path" "{{.*}}[[HOSTBC]]" {{.*}}"-o" " 518 // CHK-UBJOBS-ST-SAME: [[T1BC:[^\\/]+\.bc]]" "-x" "cpp-output" "{{.*}}[[T1PP]]" 519 // CHK-UBJOBS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-ibm-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-S" {{.*}}"-fopenmp" {{.*}}"-o" " 520 // CHK-UBJOBS-ST-SAME: [[T1ASM:[^\\/]+\.s]]" "-x" "ir" "{{.*}}[[T1BC]]" 521 // CHK-UBJOBS-ST: clang{{.*}}" "-cc1as" "-triple" "powerpc64le-ibm-linux-gnu" "-filetype" "obj" {{.*}}"-o" " 522 // CHK-UBJOBS-ST-SAME: [[T1OBJ:[^\\/]+\.o]]" "{{.*}}[[T1ASM]]" 523 // CHK-UBJOBS-ST: ld{{(\.exe)?}}" {{.*}}"-o" " 524 // CHK-UBJOBS-ST-SAME: [[T1BIN:[^\\/]+\.out-openmp-powerpc64le-ibm-linux-gnu]]" {{.*}}"{{.*}}[[T1OBJ]]" 525 526 // Create target 2 object. 527 // CHK-UBJOBS: clang{{.*}}" "-cc1" "-triple" "x86_64-pc-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-obj" {{.*}}"-fopenmp" {{.*}}"-fopenmp-is-device" "-fopenmp-host-ir-file-path" "{{.*}}[[HOSTBC]]" {{.*}}"-o" " 528 // CHK-UBJOBS-SAME: [[T2OBJ:[^\\/]+\.o]]" "-x" "cpp-output" "{{.*}}[[T2PP]]" 529 // CHK-UBJOBS: ld{{(\.exe)?}}" {{.*}}"-o" " 530 // CHK-UBJOBS-SAME: [[T2BIN:[^\\/]+\.out]]" {{.*}}"{{.*}}[[T2OBJ]]" 531 // CHK-UBJOBS-ST: clang{{.*}}" "-cc1" "-triple" "x86_64-pc-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-llvm-bc" {{.*}}"-fopenmp" {{.*}}"-fopenmp-is-device" "-fopenmp-host-ir-file-path" "{{.*}}[[HOSTBC]]" {{.*}}"-o" " 532 // CHK-UBJOBS-ST-SAME: [[T2BC:[^\\/]+\.bc]]" "-x" "cpp-output" "{{.*}}[[T2PP]]" 533 // CHK-UBJOBS-ST: clang{{.*}}" "-cc1" "-triple" "x86_64-pc-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-S" {{.*}}"-fopenmp" {{.*}}"-o" " 534 // CHK-UBJOBS-ST-SAME: [[T2ASM:[^\\/]+\.s]]" "-x" "ir" "{{.*}}[[T2BC]]" 535 // CHK-UBJOBS-ST: clang{{.*}}" "-cc1as" "-triple" "x86_64-pc-linux-gnu" "-filetype" "obj" {{.*}}"-o" " 536 // CHK-UBJOBS-ST-SAME: [[T2OBJ:[^\\/]+\.o]]" "{{.*}}[[T2ASM]]" 537 // CHK-UBJOBS-ST: ld{{(\.exe)?}}" {{.*}}"-o" " 538 // CHK-UBJOBS-ST-SAME: [[T2BIN:[^\\/]+\.out-openmp-x86_64-pc-linux-gnu]]" {{.*}}"{{.*}}[[T2OBJ]]" 539 540 // Create wrapper BC file and wrapper object. 541 // CHK-UBJOBS: clang-offload-wrapper{{(\.exe)?}}" "-target" "powerpc64le-unknown-linux" {{.*}}"-o" " 542 // CHK-UBJOBS-SAME: [[WRAPPERBC:[^\\/]+\.bc]]" "{{.*}}[[T1BIN]]" "{{.*}}[[T2BIN]]" 543 // CHK-UBJOBS: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-obj" {{.*}}"-fopenmp" {{.*}}"-o" " 544 // CHK-UBJOBS-SAME: [[WRAPPEROBJ:[^\\/]+\.o]]" "-x" "ir" "{{.*}}[[WRAPPERBC]]" 545 // CHK-UBJOBS-ST: clang-offload-wrapper{{(\.exe)?}}" "-target" "powerpc64le-unknown-linux" {{.*}}"-o" " 546 // CHK-UBJOBS-ST-SAME: [[WRAPPERBC:[^\\/]+\.bc]]" "{{.*}}[[T1BIN]]" "{{.*}}[[T2BIN]]" 547 // CHK-UBJOBS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-S" {{.*}}"-fopenmp" {{.*}}"-o" " 548 // CHK-UBJOBS-ST-SAME: [[WRAPPERASM:[^\\/]+\.s]]" "-x" "ir" "{{.*}}[[WRAPPERBC]]" 549 // CHK-UBJOBS-ST: clang{{.*}}" "-cc1as" "-triple" "powerpc64le-unknown-linux" "-filetype" "obj" {{.*}}"-o" " 550 // CHK-UBJOBS-ST-SAME: [[WRAPPEROBJ:[^\\/]+\.o]]" "{{.*}}[[WRAPPERASM]]" 551 552 // Create binary. 553 // CHK-UBJOBS: ld{{(\.exe)?}}" {{.*}}"-o" " 554 // CHK-UBJOBS-SAME: [[HOSTBIN:[^\\/]+\.out]]" {{.*}}"{{.*}}[[HOSTOBJ]]" "{{.*}}[[WRAPPEROBJ]]" 555 // CHK-UBJOBS-ST: ld{{(\.exe)?}}" {{.*}}"-o" " 556 // CHK-UBJOBS-ST-SAME: [[HOSTBIN:[^\\/]+\.out]]" {{.*}}"{{.*}}[[HOSTOBJ]]" "{{.*}}[[WRAPPEROBJ]]" 557 558 // Unbundle object file. 559 // CHK-UBJOBS2: clang-offload-bundler{{.*}}" "-type=o" "-targets=host-powerpc64le-unknown-linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu" "-inputs= 560 // CHK-UBJOBS2-SAME: [[INPUT:[^\\/]+\.o]]" "-outputs= 561 // CHK-UBJOBS2-SAME: [[HOSTOBJ:[^\\/]+\.o]], 562 // CHK-UBJOBS2-SAME: [[T1OBJ:[^\\/]+\.o]], 563 // CHK-UBJOBS2-SAME: [[T2OBJ:[^\\/]+\.o]]" "-unbundle" 564 // CHK-UBJOBS2: ld{{(\.exe)?}}" {{.*}}"-o" " 565 // CHK-UBJOBS2-SAME: [[T1BIN:[^\\/]+\.out]]" {{.*}}"{{.*}}[[T1OBJ]]" 566 // CHK-UBJOBS2: ld{{(\.exe)?}}" {{.*}}"-o" " 567 // CHK-UBJOBS2-SAME: [[T2BIN:[^\\/]+\.out]]" {{.*}}"{{.*}}[[T2OBJ]]" 568 // CHK-UBJOBS2: clang-offload-wrapper{{(\.exe)?}}" "-target" "powerpc64le-unknown-linux" {{.*}}"-o" " 569 // CHK-UBJOBS2-SAME: [[WRAPPERBC:[^\\/]+\.bc]]" "{{.*}}[[T1BIN]]" "{{.*}}[[T2BIN]]" 570 // CHK-UBJOBS2: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-obj" {{.*}}"-fopenmp" {{.*}}"-o" " 571 // CHK-UBJOBS2-SAME: [[WRAPPEROBJ:[^\\/]+\.o]]" "-x" "ir" "{{.*}}[[WRAPPERBC]]" 572 // CHK-UBJOBS2: ld{{(\.exe)?}}" {{.*}}"-o" " 573 // CHK-UBJOBS2-SAME: [[HOSTBIN:[^\\/]+\.out]]" {{.*}}"{{.*}}[[HOSTOBJ]]" "{{.*}}[[WRAPPEROBJ]]" 574 // CHK-UBJOBS2-ST-NOT: clang-offload-bundler{{.*}}in.so 575 // CHK-UBJOBS2-ST: clang-offload-bundler{{.*}}" "-type=o" "-targets=host-powerpc64le-unknown-linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu" "-inputs= 576 // CHK-UBJOBS2-ST-SAME: [[INPUT:[^\\/]+\.o]]" "-outputs= 577 // CHK-UBJOBS2-ST-SAME: [[HOSTOBJ:[^\\/,]+\.o]], 578 // CHK-UBJOBS2-ST-SAME: [[T1OBJ:[^\\/,]+\.o]], 579 // CHK-UBJOBS2-ST-SAME: [[T2OBJ:[^\\/,]+\.o]]" "-unbundle" 580 // CHK-UBJOBS2-ST-NOT: clang-offload-bundler{{.*}}in.so 581 // CHK-UBJOBS2-ST: ld{{(\.exe)?}}" {{.*}}"-o" " 582 // CHK-UBJOBS2-ST-SAME: [[T1BIN:[^\\/]+\.out-openmp-powerpc64le-ibm-linux-gnu]]" {{.*}}"{{.*}}[[T1OBJ]]" 583 // CHK-UBJOBS2-ST: ld{{(\.exe)?}}" {{.*}}"-o" " 584 // CHK-UBJOBS2-ST-SAME: [[T2BIN:[^\\/]+\.out-openmp-x86_64-pc-linux-gnu]]" {{.*}}"{{.*}}[[T2OBJ]]" 585 // CHK-UBJOBS2-ST: clang-offload-wrapper{{(\.exe)?}}" "-target" "powerpc64le-unknown-linux" {{.*}}"-o" " 586 // CHK-UBJOBS2-ST-SAME: [[WRAPPERBC:[^\\/]+\.bc]]" "{{.*}}[[T1BIN]]" "{{.*}}[[T2BIN]]" 587 // CHK-UBJOBS2-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-S" {{.*}}"-fopenmp" {{.*}}"-o" " 588 // CHK-UBJOBS2-ST-SAME: [[WRAPPERASM:[^\\/]+\.s]]" "-x" "ir" "{{.*}}[[WRAPPERBC]]" 589 // CHK-UBJOBS2-ST: clang{{.*}}" "-cc1as" "-triple" "powerpc64le-unknown-linux" "-filetype" "obj" {{.*}}"-o" " 590 // CHK-UBJOBS2-ST-SAME: [[WRAPPEROBJ:[^\\/]+\.o]]" "{{.*}}[[WRAPPERASM]]" 591 // CHK-UBJOBS2-ST: ld{{(\.exe)?}}" {{.*}}"-o" " 592 // CHK-UBJOBS2-ST-SAME: [[HOSTBIN:[^\\/]+\.out]]" {{.*}}"{{.*}}[[HOSTOBJ]]" "{{.*}}[[WRAPPEROBJ]]" 593 594 /// ########################################################################### 595 596 /// Check separate compilation with offloading - unbundling/bundling jobs 597 /// construct 598 // RUN: touch %t.i 599 // RUN: %clang -### -fopenmp=libomp -c %t.o -lsomelib -target powerpc64le-linux -fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu %t.i -no-canonical-prefixes 2>&1 \ 600 // RUN: | FileCheck -check-prefix=CHK-UBUJOBS %s 601 // RUN: %clang -### -fopenmp=libomp -c %t.o -lsomelib -target powerpc64le-linux -fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu %t.i -save-temps -no-canonical-prefixes 2>&1 \ 602 // RUN: | FileCheck -check-prefix=CHK-UBUJOBS-ST %s 603 604 // Unbundle and create host BC. 605 // CHK-UBUJOBS: clang-offload-bundler{{.*}}" "-type=i" "-targets=host-powerpc64le-unknown-linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu" "-inputs= 606 // CHK-UBUJOBS-SAME: [[INPUT:[^\\/]+\.i]]" "-outputs= 607 // CHK-UBUJOBS-SAME: [[HOSTPP:[^\\/]+\.i]], 608 // CHK-UBUJOBS-SAME: [[T1PP:[^\\/]+\.i]], 609 // CHK-UBUJOBS-SAME: [[T2PP:[^\\/]+\.i]]" "-unbundle" 610 // CHK-UBUJOBS: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-llvm-bc" {{.*}}"-fopenmp" {{.*}}"-disable-llvm-passes" {{.*}}"-fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu" {{.*}}"-o" " 611 // CHK-UBUJOBS-SAME: [[HOSTBC:[^\\/]+\.bc]]" "-x" "cpp-output" "{{.*}}[[HOSTPP]]" 612 613 // CHK-UBUJOBS-ST: clang-offload-bundler{{.*}}" "-type=i" "-targets=host-powerpc64le-unknown-linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu" "-inputs= 614 // CHK-UBUJOBS-ST-SAME: [[INPUT:[^\\/]+\.i]]" "-outputs= 615 // CHK-UBUJOBS-ST-SAME: [[HOSTPP:[^\\/,]+\.i]], 616 // CHK-UBUJOBS-ST-SAME: [[T1PP:[^\\/,]+\.i]], 617 // CHK-UBUJOBS-ST-SAME: [[T2PP:[^\\/,]+\.i]]" "-unbundle" 618 // CHK-UBUJOBS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-llvm-bc" {{.*}}"-fopenmp" {{.*}}"-disable-llvm-passes" {{.*}}"-fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu" {{.*}}"-o" " 619 // CHK-UBUJOBS-ST-SAME: [[HOSTBC:[^\\/]+\.bc]]" "-x" "cpp-output" "{{.*}}[[HOSTPP]]" 620 621 // Create target 1 object. 622 // CHK-UBUJOBS: clang{{.*}}" "-cc1" "-triple" "powerpc64le-ibm-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-obj" {{.*}}"-fopenmp" {{.*}}"-fopenmp-is-device" "-fopenmp-host-ir-file-path" "{{.*}}[[HOSTBC]]" {{.*}}"-o" " 623 // CHK-UBUJOBS-SAME: [[T1OBJ:[^\\/]+\.o]]" "-x" "cpp-output" "{{.*}}[[T1PP]]" 624 // CHK-UBUJOBS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-ibm-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-llvm-bc" {{.*}}"-fopenmp" {{.*}}"-fopenmp-is-device" "-fopenmp-host-ir-file-path" "{{.*}}[[HOSTBC]]" {{.*}}"-o" " 625 // CHK-UBUJOBS-ST-SAME: [[T1BC:[^\\/]+\.bc]]" "-x" "cpp-output" "{{.*}}[[T1PP]]" 626 // CHK-UBUJOBS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-ibm-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-S" {{.*}}"-fopenmp" {{.*}}"-o" " 627 // CHK-UBUJOBS-ST-SAME: [[T1ASM:[^\\/]+\.s]]" "-x" "ir" "{{.*}}[[T1BC]]" 628 // CHK-UBUJOBS-ST: clang{{.*}}" "-cc1as" "-triple" "powerpc64le-ibm-linux-gnu" "-filetype" "obj" {{.*}}"-o" " 629 // CHK-UBUJOBS-ST-SAME: [[T1OBJ:[^\\/]+\.o]]" "{{.*}}[[T1ASM]]" 630 631 // Create target 2 object. 632 // CHK-UBUJOBS: clang{{.*}}" "-cc1" "-triple" "x86_64-pc-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-obj" {{.*}}"-fopenmp" {{.*}}"-fopenmp-is-device" "-fopenmp-host-ir-file-path" "{{.*}}[[HOSTBC]]" {{.*}}"-o" " 633 // CHK-UBUJOBS-SAME: [[T2OBJ:[^\\/]+\.o]]" "-x" "cpp-output" "{{.*}}[[T2PP]]" 634 // CHK-UBUJOBS-ST: clang{{.*}}" "-cc1" "-triple" "x86_64-pc-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-llvm-bc" {{.*}}"-fopenmp" {{.*}}"-fopenmp-is-device" "-fopenmp-host-ir-file-path" "{{.*}}[[HOSTBC]]" {{.*}}"-o" " 635 // CHK-UBUJOBS-ST-SAME: [[T2BC:[^\\/]+\.bc]]" "-x" "cpp-output" "{{.*}}[[T2PP]]" 636 // CHK-UBUJOBS-ST: clang{{.*}}" "-cc1" "-triple" "x86_64-pc-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-S" {{.*}}"-fopenmp" {{.*}}"-o" " 637 // CHK-UBUJOBS-ST-SAME: [[T2ASM:[^\\/]+\.s]]" "-x" "ir" "{{.*}}[[T2BC]]" 638 // CHK-UBUJOBS-ST: clang{{.*}}" "-cc1as" "-triple" "x86_64-pc-linux-gnu" "-filetype" "obj" {{.*}}"-o" " 639 // CHK-UBUJOBS-ST-SAME: [[T2OBJ:[^\\/]+\.o]]" "{{.*}}[[T2ASM]]" 640 641 // Create binary. 642 // CHK-UBUJOBS: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-emit-obj" {{.*}}"-fopenmp" {{.*}}"-o" " 643 // CHK-UBUJOBS-SAME: [[HOSTOBJ:[^\\/]+\.o]]" "-x" "ir" "{{.*}}[[HOSTBC]]" 644 // CHK-UBUJOBS: clang-offload-bundler{{.*}}" "-type=o" "-targets=openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu,host-powerpc64le-unknown-linux" "-outputs= 645 // CHK-UBUJOBS-SAME: [[RES:[^\\/]+\.o]]" "-inputs={{.*}}[[T1OBJ]],{{.*}}[[T2OBJ]],{{.*}}[[HOSTOBJ]]" 646 // CHK-UBUJOBS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le-unknown-linux" {{.*}}"-S" {{.*}}"-fopenmp" {{.*}}"-o" " 647 // CHK-UBUJOBS-ST-SAME: [[HOSTASM:[^\\/]+\.s]]" "-x" "ir" "{{.*}}[[HOSTBC]]" 648 // CHK-UBUJOBS-ST: clang{{.*}}" "-cc1as" "-triple" "powerpc64le-unknown-linux" "-filetype" "obj" {{.*}}"-o" " 649 // CHK-UBUJOBS-ST-SAME: [[HOSTOBJ:[^\\/]+\.o]]" "{{.*}}[[HOSTASM]]" 650 // CHK-UBUJOBS-ST: clang-offload-bundler{{.*}}" "-type=o" "-targets=openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu,host-powerpc64le-unknown-linux" "-outputs= 651 // CHK-UBUJOBS-ST-SAME: [[RES:[^\\/]+\.o]]" "-inputs={{.*}}[[T1OBJ]],{{.*}}[[T2OBJ]],{{.*}}[[HOSTOBJ]]" 652 653 /// ########################################################################### 654 655 /// Check -fopenmp-is-device is passed when compiling for the device. 656 // RUN: %clang -### -no-canonical-prefixes -target powerpc64le-linux -fopenmp=libomp -fopenmp-targets=powerpc64le-ibm-linux-gnu %s 2>&1 \ 657 // RUN: | FileCheck -check-prefix=CHK-FOPENMP-IS-DEVICE %s 658 659 // CHK-FOPENMP-IS-DEVICE: clang{{.*}} "-aux-triple" "powerpc64le-unknown-linux" {{.*}}"-fopenmp-is-device" "-fopenmp-host-ir-file-path" {{.*}}.c" 660