xref: /llvm-project/clang/test/CodeGenOpenCL/address-spaces-mangling.cl (revision a5de66c4c50b5dec085ffbcd2afefd47f3f18d7f)
1// RUN: %clang_cc1 %s -ffake-address-space-map -faddress-space-map-mangling=yes -triple %itanium_abi_triple -emit-llvm -o - | FileCheck -check-prefixes="ASMANG,ASMANG10" %s
2// RUN: %clang_cc1 %s -cl-std=CL2.0 -ffake-address-space-map -faddress-space-map-mangling=yes -triple %itanium_abi_triple -emit-llvm -o - | FileCheck -check-prefixes="ASMANG,ASMANG20" %s
3// RUN: %clang_cc1 %s -ffake-address-space-map -faddress-space-map-mangling=no -triple %itanium_abi_triple -emit-llvm -o - | FileCheck -check-prefixes="NOASMANG,NOASMANG10" %s
4// RUN: %clang_cc1 %s -cl-std=CL2.0 -ffake-address-space-map -faddress-space-map-mangling=no -triple %itanium_abi_triple -emit-llvm -o - | FileCheck -check-prefixes="NOASMANG,NOASMANG20" %s
5// RUN: %clang_cc1 %s -cl-std=CL3.0 -cl-std=CL3.0 -cl-ext=-all,+__opencl_c_generic_address_space -ffake-address-space-map -faddress-space-map-mangling=no -triple %itanium_abi_triple -emit-llvm -o - | FileCheck -check-prefixes="NOASMANG,NOASMANG20" %s
6// RUN: %clang_cc1 %s -cl-std=CL3.0 -cl-ext=-all,+__opencl_c_generic_address_space -ffake-address-space-map -faddress-space-map-mangling=yes -triple %itanium_abi_triple -emit-llvm -o - | FileCheck -check-prefixes="ASMANG,ASMANG20" %s
7
8// We check that the address spaces are mangled the same in both version of OpenCL
9// RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=CL2.0 -emit-llvm -o - | FileCheck -check-prefix=OCL-20 %s
10// RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=CL1.2 -emit-llvm -o - | FileCheck -check-prefix=OCL-12 %s
11// RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=CL3.0 -cl-ext=-all,+__opencl_c_generic_address_space -emit-llvm -o - | FileCheck -check-prefix=OCL-20 %s
12// RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=CL3.0 -cl-ext=-all -emit-llvm -o - | FileCheck -check-prefix=OCL-12 %s
13// RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=clc++2021 -cl-ext=-all,+__opencl_c_generic_address_space -emit-llvm -o - | FileCheck -check-prefix=OCL-20 %s
14// RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=clc++2021 -cl-ext=-all -emit-llvm -o - | FileCheck -check-prefix=OCL-12 %s
15
16// We can't name this f as private is equivalent to default
17// no specifier given address space so we get multiple definition
18// warnings, but we do want it for comparison purposes.
19__attribute__((overloadable))
20void ff(int *arg) { }
21// ASMANG10: @_Z2ffPi
22// ASMANG20: @_Z2ffPU3AS4i
23// NOASMANG10: @_Z2ffPU9CLprivatei
24// NOASMANG20: @_Z2ffPU9CLgenerici
25// OCL-20-DAG: @_Z2ffPU3AS4i
26// OCL-12-DAG: @_Z2ffPi
27
28__attribute__((overloadable))
29void f(private int *arg) { }
30// ASMANG: @_Z1fPi
31// NOASMANG: @_Z1fPU9CLprivatei
32// OCL-20-DAG: @_Z1fPi
33// OCL-12-DAG: @_Z1fPi
34
35__attribute__((overloadable))
36void f(global int *arg) { }
37// ASMANG: @_Z1fPU3AS1i
38// NOASMANG: @_Z1fPU8CLglobali
39// OCL-20-DAG: @_Z1fPU3AS1i
40// OCL-12-DAG: @_Z1fPU3AS1i
41
42__attribute__((overloadable))
43void f(local int *arg) { }
44// ASMANG: @_Z1fPU3AS3i
45// NOASMANG: @_Z1fPU7CLlocali
46// OCL-20-DAG: @_Z1fPU3AS3i
47// OCL-12-DAG: @_Z1fPU3AS3i
48
49__attribute__((overloadable))
50void f(constant int *arg) { }
51// ASMANG: @_Z1fPU3AS2i
52// NOASMANG: @_Z1fPU10CLconstanti
53// OCL-20-DAG: @_Z1fPU3AS2i
54// OCL-12-DAG: @_Z1fPU3AS2i
55
56#if (__OPENCL_C_VERSION__ == 200) || defined(__opencl_c_generic_address_space)
57__attribute__((overloadable))
58void f(generic int *arg) { }
59// ASMANG20: @_Z1fPU3AS4i
60// NOASMANG20: @_Z1fPU9CLgenerici
61// OCL-20-DAG: @_Z1fPU3AS4i
62#endif
63