diff options
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/CodeGen/address-space.c | 13 | ||||
-rw-r--r-- | clang/test/CodeGen/default-address-space.c | 58 | ||||
-rw-r--r-- | clang/test/CodeGenOpenCL/address-spaces.cl | 31 | ||||
-rw-r--r-- | clang/test/CodeGenOpenCL/amdgpu-env-amdgiz.cl | 2 | ||||
-rw-r--r-- | clang/test/CodeGenOpenCL/vla.cl | 12 | ||||
-rw-r--r-- | clang/test/Sema/address_spaces.c | 2 | ||||
-rw-r--r-- | clang/test/SemaOpenCL/invalid-assignment-constant-address-space.cl (renamed from clang/test/Sema/invalid-assignment-constant-address-space.c) | 3 |
7 files changed, 101 insertions, 20 deletions
diff --git a/clang/test/CodeGen/address-space.c b/clang/test/CodeGen/address-space.c index 61deb262533..5d57d5b6ebe 100644 --- a/clang/test/CodeGen/address-space.c +++ b/clang/test/CodeGen/address-space.c @@ -1,4 +1,6 @@ -// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm < %s | FileCheck %s +// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm < %s | FileCheck -check-prefixes=CHECK,GIZ %s +// RUN: %clang_cc1 -triple amdgcn -emit-llvm < %s | FileCheck -check-prefixes=CHECK,PIZ %s +// RUN: %clang_cc1 -triple amdgcn---amdgiz -emit-llvm < %s | FileCheck -check-prefixes=CHeCK,GIZ %s // CHECK: @foo = common addrspace(1) global int foo __attribute__((address_space(1))); @@ -6,6 +8,9 @@ int foo __attribute__((address_space(1))); // CHECK: @ban = common addrspace(1) global int ban[10] __attribute__((address_space(1))); +// CHECK: @a = common global +int a __attribute__((address_space(0))); + // CHECK-LABEL: define i32 @test1() // CHECK: load i32, i32 addrspace(1)* @foo int test1() { return foo; } @@ -19,9 +24,11 @@ int test2(int i) { return ban[i]; } __attribute__((address_space(2))) int *A, *B; // CHECK-LABEL: define void @test3() -// CHECK: load i32 addrspace(2)*, i32 addrspace(2)** @B +// GIZ: load i32 addrspace(2)*, i32 addrspace(2)** @B +// PIZ: load i32 addrspace(2)*, i32 addrspace(2)* addrspace(4)* @B // CHECK: load i32, i32 addrspace(2)* -// CHECK: load i32 addrspace(2)*, i32 addrspace(2)** @A +// GIZ: load i32 addrspace(2)*, i32 addrspace(2)** @A +// PIZ: load i32 addrspace(2)*, i32 addrspace(2)* addrspace(4)* @A // CHECK: store i32 {{.*}}, i32 addrspace(2)* void test3() { *A = *B; diff --git a/clang/test/CodeGen/default-address-space.c b/clang/test/CodeGen/default-address-space.c new file mode 100644 index 00000000000..07ddf48fac2 --- /dev/null +++ b/clang/test/CodeGen/default-address-space.c @@ -0,0 +1,58 @@ +// RUN: %clang_cc1 -triple amdgcn -emit-llvm < %s | FileCheck -check-prefixes=PIZ,COM %s +// RUN: %clang_cc1 -triple amdgcn---amdgiz -emit-llvm < %s | FileCheck -check-prefixes=CHECK,COM %s + +// PIZ-DAG: @foo = common addrspace(4) global i32 0 +// CHECK-DAG: @foo = common global i32 0 +int foo; + +// PIZ-DAG: @ban = common addrspace(4) global [10 x i32] zeroinitializer +// CHECK-DAG: @ban = common global [10 x i32] zeroinitializer +int ban[10]; + +// PIZ-DAG: @A = common addrspace(4) global i32 addrspace(4)* null +// PIZ-DAG: @B = common addrspace(4) global i32 addrspace(4)* null +// CHECK-DAG: @A = common global i32* null +// CHECK-DAG: @B = common global i32* null +int *A; +int *B; + +// COM-LABEL: define i32 @test1() +// PIZ: load i32, i32 addrspace(4)* @foo +// CHECK: load i32, i32* @foo +int test1() { return foo; } + +// COM-LABEL: define i32 @test2(i32 %i) +// PIZ: load i32, i32 addrspace(4)* +// PIZ-NEXT: ret i32 +// CHECK: load i32, i32* +// CHECK-NEXT: ret i32 +int test2(int i) { return ban[i]; } + +// COM-LABEL: define void @test3() +// PIZ: load i32 addrspace(4)*, i32 addrspace(4)* addrspace(4)* @B +// PIZ: load i32, i32 addrspace(4)* +// PIZ: load i32 addrspace(4)*, i32 addrspace(4)* addrspace(4)* @A +// PIZ: store i32 {{.*}}, i32 addrspace(4)* +// CHECK: load i32*, i32** @B +// CHECK: load i32, i32* +// CHECK: load i32*, i32** @A +// CHECK: store i32 {{.*}}, i32* +void test3() { + *A = *B; +} + +// PIZ-LABEL: define void @test4(i32 addrspace(4)* %a) +// PIZ: %[[a_addr:.*]] = alloca i32 addrspace(4)* +// PIZ: store i32 addrspace(4)* %a, i32 addrspace(4)** %[[a_addr]] +// PIZ: %[[r0:.*]] = load i32 addrspace(4)*, i32 addrspace(4)** %[[a_addr]] +// PIZ: %[[arrayidx:.*]] = getelementptr inbounds i32, i32 addrspace(4)* %[[r0]] +// PIZ: store i32 0, i32 addrspace(4)* %[[arrayidx]] +// CHECK-LABEL: define void @test4(i32* %a) +// CHECK: %[[a_addr:.*]] = alloca i32*, align 4, addrspace(5) +// CHECK: store i32* %a, i32* addrspace(5)* %[[a_addr]] +// CHECK: %[[r0:.*]] = load i32*, i32* addrspace(5)* %[[a_addr]] +// CHECK: %[[arrayidx:.*]] = getelementptr inbounds i32, i32* %[[r0]] +// CHECK: store i32 0, i32* %[[arrayidx]] +void test4(int *a) { + a[0] = 0; +} diff --git a/clang/test/CodeGenOpenCL/address-spaces.cl b/clang/test/CodeGenOpenCL/address-spaces.cl index 3b34986d893..7c665286547 100644 --- a/clang/test/CodeGenOpenCL/address-spaces.cl +++ b/clang/test/CodeGenOpenCL/address-spaces.cl @@ -1,7 +1,12 @@ -// RUN: %clang_cc1 %s -O0 -ffake-address-space-map -emit-llvm -o - | FileCheck %s -// RUN: %clang_cc1 %s -O0 -DCL20 -cl-std=CL2.0 -ffake-address-space-map -emit-llvm -o - | FileCheck %s --check-prefix=CL20 - -// CHECK: i32* %arg +// RUN: %clang_cc1 %s -O0 -ffake-address-space-map -emit-llvm -o - | FileCheck %s --check-prefixes=CHECK,SPIR +// RUN: %clang_cc1 %s -O0 -DCL20 -cl-std=CL2.0 -ffake-address-space-map -emit-llvm -o - | FileCheck %s --check-prefixes=CL20,CL20SPIR +// RUN: %clang_cc1 %s -O0 -triple amdgcn-amd-amdhsa-opencl -emit-llvm -o - | FileCheck --check-prefixes=CHECK,SPIR %s +// RUN: %clang_cc1 %s -O0 -triple amdgcn-amd-amdhsa-opencl -DCL20 -cl-std=CL2.0 -emit-llvm -o - | FileCheck %s --check-prefixes=CL20,CL20SPIR +// RUN: %clang_cc1 %s -O0 -triple amdgcn-amd-amdhsa-amdgizcl -emit-llvm -o - | FileCheck %s -check-prefixes=CHECK,GIZ +// RUN: %clang_cc1 %s -O0 -triple amdgcn-amd-amdhsa-amdgizcl -DCL20 -cl-std=CL2.0 -emit-llvm -o - | FileCheck %s --check-prefixes=CL20,CL20GIZ + +// SPIR: i32* %arg +// GIZ: i32 addrspace(5)* %arg void f__p(__private int *arg) {} // CHECK: i32 addrspace(1)* %arg @@ -13,7 +18,8 @@ void f__l(__local int *arg) {} // CHECK: i32 addrspace(2)* %arg void f__c(__constant int *arg) {} -// CHECK: i32* %arg +// SPIR: i32* %arg +// GIZ: i32 addrspace(5)* %arg void fp(private int *arg) {} // CHECK: i32 addrspace(1)* %arg @@ -29,16 +35,21 @@ void fc(constant int *arg) {} int i; // CL20-DAG: @i = common addrspace(1) global i32 0 int *ptr; -// CL20-DAG: @ptr = common addrspace(1) global i32 addrspace(4)* null +// CL20SPIR-DAG: @ptr = common addrspace(1) global i32 addrspace(4)* null +// CL20GIZ-DAG: @ptr = common addrspace(1) global i32* null #endif -// CHECK: i32* %arg -// CL20-DAG: i32 addrspace(4)* %arg +// SPIR: i32* %arg +// GIZ: i32 addrspace(5)* %arg +// CL20SPIR-DAG: i32 addrspace(4)* %arg +// CL20GIZ-DAG: i32* %arg void f(int *arg) { int i; -// CHECK: %i = alloca i32, -// CL20-DAG: %i = alloca i32, +// SPIR: %i = alloca i32, +// GIZ: %i = alloca i32{{.*}}addrspace(5) +// CL20SPIR-DAG: %i = alloca i32, +// CL20GIZ-DAG: %i = alloca i32{{.*}}addrspace(5) #ifdef CL20 static int ii; diff --git a/clang/test/CodeGenOpenCL/amdgpu-env-amdgiz.cl b/clang/test/CodeGenOpenCL/amdgpu-env-amdgiz.cl index d52fd5dff01..4cb8d95fa09 100644 --- a/clang/test/CodeGenOpenCL/amdgpu-env-amdgiz.cl +++ b/clang/test/CodeGenOpenCL/amdgpu-env-amdgiz.cl @@ -4,6 +4,6 @@ // RUN: %clang_cc1 %s -O0 -triple amdgcn---amdgizcl -emit-llvm -o - | FileCheck -check-prefix=GIZ %s // CHECK: target datalayout = "e-p:32:32-p1:64:64-p2:64:64-p3:32:32-p4:64:64-p5:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64" -// GIZ: target datalayout = "e-p:64:64-p1:64:64-p2:64:64-p3:32:32-p4:32:32-p5:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64" +// GIZ: target datalayout = "e-p:64:64-p1:64:64-p2:64:64-p3:32:32-p4:32:32-p5:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64-A5" void foo(void) {} diff --git a/clang/test/CodeGenOpenCL/vla.cl b/clang/test/CodeGenOpenCL/vla.cl index cbf98445ce0..5d3599fc3cc 100644 --- a/clang/test/CodeGenOpenCL/vla.cl +++ b/clang/test/CodeGenOpenCL/vla.cl @@ -1,4 +1,6 @@ -// RUN: %clang_cc1 -emit-llvm -triple "spir-unknown-unknown" -O0 -cl-std=CL2.0 -o - %s | FileCheck %s +// RUN: %clang_cc1 -emit-llvm -triple "spir-unknown-unknown" -O0 -cl-std=CL2.0 -o - %s | FileCheck -check-prefixes=CHECK,SPIR %s +// RUN: %clang_cc1 -emit-llvm -triple amdgcn-amd-amdhsa-opencl -O0 -cl-std=CL2.0 -o - %s | FileCheck -check-prefixes=CHECK,SPIR %s +// RUN: %clang_cc1 -emit-llvm -triple amdgcn-amd-amdhsa-amdgizcl -O0 -cl-std=CL2.0 -o - %s | FileCheck -check-prefixes=CHECK,GIZ %s constant int sz0 = 5; // CHECK: @sz0 = addrspace(2) constant i32 5 @@ -11,8 +13,12 @@ const constant int sz2 = 8; kernel void testvla() { int vla0[sz0]; -// CHECK: %vla0 = alloca [5 x i32] +// SPIR: %vla0 = alloca [5 x i32] +// SPIR-NOT: %vla0 = alloca [5 x i32]{{.*}}addrspace +// GIZ: %vla0 = alloca [5 x i32]{{.*}}addrspace(5) char vla1[sz1]; -// CHECK: %vla1 = alloca [16 x i8] +// SPIR: %vla1 = alloca [16 x i8] +// SPIR-NOT: %vla1 = alloca [16 x i8]{{.*}}addrspace +// GIZ: %vla1 = alloca [16 x i8]{{.*}}addrspace(5) local short vla2[sz2]; } diff --git a/clang/test/Sema/address_spaces.c b/clang/test/Sema/address_spaces.c index 3fe93155451..018a8521bfc 100644 --- a/clang/test/Sema/address_spaces.c +++ b/clang/test/Sema/address_spaces.c @@ -20,7 +20,7 @@ void foo(_AS3 float *a, _AS1 int arrarr[5][5]; // expected-error {{automatic variable qualified with an address space}} __attribute__((address_space(-1))) int *_boundsA; // expected-error {{address space is negative}} - __attribute__((address_space(0x7FFFFF))) int *_boundsB; + __attribute__((address_space(0x7FFFFF))) int *_boundsB; // expected-error {{address space is larger than the maximum supported}} __attribute__((address_space(0x1000000))) int *_boundsC; // expected-error {{address space is larger than the maximum supported}} // chosen specifically to overflow 32 bits and come out reasonable __attribute__((address_space(4294967500))) int *_boundsD; // expected-error {{address space is larger than the maximum supported}} diff --git a/clang/test/Sema/invalid-assignment-constant-address-space.c b/clang/test/SemaOpenCL/invalid-assignment-constant-address-space.cl index 77d6b331c20..32917c493ce 100644 --- a/clang/test/Sema/invalid-assignment-constant-address-space.c +++ b/clang/test/SemaOpenCL/invalid-assignment-constant-address-space.cl @@ -1,7 +1,6 @@ // RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -#define OPENCL_CONSTANT 8388354 -int __attribute__((address_space(OPENCL_CONSTANT))) c[3] = {0}; +int constant c[3] = {0}; void foo() { c[0] = 1; //expected-error{{read-only variable is not assignable}} |