1// RUN: %clang_cc1 %s -O0 -ffake-address-space-map -emit-llvm -o - | FileCheck %s --check-prefixes=CHECK,SPIR 2// RUN: %clang_cc1 %s -O0 -DCL20 -cl-std=CL2.0 -ffake-address-space-map -emit-llvm -o - | FileCheck %s --check-prefixes=CL20,CL20SPIR 3// RUN: %clang_cc1 %s -O0 -triple amdgcn-amd-amdhsa-opencl -emit-llvm -o - | FileCheck --check-prefixes=CHECK,SPIR %s 4// RUN: %clang_cc1 %s -O0 -triple amdgcn-amd-amdhsa-opencl -DCL20 -cl-std=CL2.0 -emit-llvm -o - | FileCheck %s --check-prefixes=CL20,CL20SPIR 5// RUN: %clang_cc1 %s -O0 -triple amdgcn-amd-amdhsa-amdgizcl -emit-llvm -o - | FileCheck %s -check-prefixes=CHECK,GIZ 6// RUN: %clang_cc1 %s -O0 -triple amdgcn-amd-amdhsa-amdgizcl -DCL20 -cl-std=CL2.0 -emit-llvm -o - | FileCheck %s --check-prefixes=CL20,CL20GIZ 7 8// SPIR: i32* %arg 9// GIZ: i32 addrspace(5)* %arg 10void f__p(__private int *arg) {} 11 12// CHECK: i32 addrspace(1)* %arg 13void f__g(__global int *arg) {} 14 15// CHECK: i32 addrspace(3)* %arg 16void f__l(__local int *arg) {} 17 18// CHECK: i32 addrspace(2)* %arg 19void f__c(__constant int *arg) {} 20 21// SPIR: i32* %arg 22// GIZ: i32 addrspace(5)* %arg 23void fp(private int *arg) {} 24 25// CHECK: i32 addrspace(1)* %arg 26void fg(global int *arg) {} 27 28// CHECK: i32 addrspace(3)* %arg 29void fl(local int *arg) {} 30 31// CHECK: i32 addrspace(2)* %arg 32void fc(constant int *arg) {} 33 34#ifdef CL20 35int i; 36// CL20-DAG: @i = common addrspace(1) global i32 0 37int *ptr; 38// CL20SPIR-DAG: @ptr = common addrspace(1) global i32 addrspace(4)* null 39// CL20GIZ-DAG: @ptr = common addrspace(1) global i32* null 40#endif 41 42// SPIR: i32* %arg 43// GIZ: i32 addrspace(5)* %arg 44// CL20SPIR-DAG: i32 addrspace(4)* %arg 45// CL20GIZ-DAG: i32* %arg 46void f(int *arg) { 47 48 int i; 49// SPIR: %i = alloca i32, 50// GIZ: %i = alloca i32{{.*}}addrspace(5) 51// CL20SPIR-DAG: %i = alloca i32, 52// CL20GIZ-DAG: %i = alloca i32{{.*}}addrspace(5) 53 54#ifdef CL20 55 static int ii; 56// CL20-DAG: @f.ii = internal addrspace(1) global i32 0 57#endif 58} 59