llvm-project

Форк
0
/
openmp-target.cu 
43 строки · 1.8 Кб
1
// RUN: %clang_cc1 -triple x86_64 -verify=expected,dev \
2
// RUN:            -verify-ignore-unexpected=note \
3
// RUN:            -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -o - %s
4
// RUN: %clang_cc1 -triple x86_64 -verify -verify-ignore-unexpected=note\
5
// RUN:            -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -o - -x c++ %s
6
// RUN: %clang_cc1 -triple x86_64 -verify=dev -verify-ignore-unexpected=note\
7
// RUN:            -fcuda-is-device -o - %s
8

9
#if __CUDA__
10
#include "Inputs/cuda.h"
11
__device__ void cu_devf();
12
#endif
13

14
void bazz() {}
15
#pragma omp declare target to(bazz) device_type(nohost)
16
void bazzz() {bazz();}
17
#pragma omp declare target to(bazzz) device_type(nohost)
18
void any() {bazz();} // expected-error {{function with 'device_type(nohost)' is not available on host}}
19
void host1() {bazz();} // expected-error {{function with 'device_type(nohost)' is not available on host}}
20
#pragma omp declare target to(host1) device_type(host)
21
void host2() {bazz();} // expected-error {{function with 'device_type(nohost)' is not available on host}}
22
#pragma omp declare target to(host2)
23
void device() {host1();}
24
#pragma omp declare target to(device) device_type(nohost)
25
void host3() {host1();}
26
#pragma omp declare target to(host3)
27

28
#pragma omp declare target
29
void any1() {any();}
30
void any2() {host1();}
31
void any3() {device();} // expected-error {{function with 'device_type(nohost)' is not available on host}}
32
void any4() {any2();}
33
#pragma omp end declare target
34

35
void any5() {any();}
36
void any6() {host1();}
37
void any7() {device();} // expected-error {{function with 'device_type(nohost)' is not available on host}}
38
void any8() {any2();}
39

40
#if __CUDA__
41
void cu_hostf() { cu_devf(); } // dev-error {{no matching function for call to 'cu_devf'}}
42
__device__ void cu_devf2() { cu_hostf(); } // dev-error{{no matching function for call to 'cu_hostf'}}
43
#endif
44

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.