brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · 0e3d179 Raw
77 lines · cpp
1// RUN: %clang_cc1 %s -triple=amdgcn-amd-amdhsa -emit-llvm -o - | FileCheck %s2 3#define __private__ __attribute__((address_space(5)))4 5void func_pchar(__private__ char *x);6void func_pvoid(__private__ void *x);7void func_pint(__private__ int *x);8 9class Base {10};11 12class Derived : public Base {13};14 15void fn(Derived *p) {16  __private__ Base *b = (__private__ Base *)p;17}18 19// CHECK-LABEL: test_cast20void test_cast(char *gen_char_ptr, void *gen_void_ptr, int *gen_int_ptr) {21  // CHECK: %[[cast:.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(5)22  // CHECK-NEXT: store ptr addrspace(5) %[[cast]]23  __private__ char *priv_char_ptr = (__private__ char *)gen_char_ptr;24 25  // CHECK: %[[cast:.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(5)26  // CHECK-NEXT: store ptr addrspace(5) %[[cast]]27  priv_char_ptr = (__private__ char *)gen_void_ptr;28 29  // CHECK: %[[cast:.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(5)30  // CHECK-NEXT: store ptr addrspace(5) %[[cast]]31  priv_char_ptr = (__private__ char *)gen_int_ptr;32 33  // CHECK: %[[cast:.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(5)34  // CHECK-NEXT: store ptr addrspace(5) %[[cast]]35  __private__ void *priv_void_ptr = (__private__ void *)gen_char_ptr;36 37  // CHECK: %[[cast:.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(5)38  // CHECK-NEXT: store ptr addrspace(5) %[[cast]]39  priv_void_ptr = (__private__ void *)gen_void_ptr;40 41  // CHECK: %[[cast:.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(5)42  // CHECK-NEXT: store ptr addrspace(5) %[[cast]]43  priv_void_ptr = (__private__ void *)gen_int_ptr;44 45  // CHECK: %[[cast:.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(5)46  // CHECK-NEXT: store ptr addrspace(5) %[[cast]]47  __private__ int *priv_int_ptr = (__private__ int *)gen_void_ptr;48 49  // CHECK: %[[cast:.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(5)50  // CHECK-NEXT: call void @_Z10func_pcharPU3AS5c(ptr addrspace(5) noundef %[[cast]])51  func_pchar((__private__ char *)gen_char_ptr);52 53  // CHECK: %[[cast:.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(5)54  // CHECK-NEXT: call void @_Z10func_pcharPU3AS5c(ptr addrspace(5) noundef %[[cast]])55  func_pchar((__private__ char *)gen_void_ptr);56 57  // CHECK: %[[cast:.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(5)58  // CHECK-NEXT: call void @_Z10func_pcharPU3AS5c(ptr addrspace(5) noundef %[[cast]])59  func_pchar((__private__ char *)gen_int_ptr);60 61  // CHECK: %[[cast:.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(5)62  // CHECK-NEXT: call void @_Z10func_pvoidPU3AS5v(ptr addrspace(5) noundef %[[cast]])63  func_pvoid((__private__ void *)gen_char_ptr);64 65  // CHECK: %[[cast:.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(5)66  // CHECK-NEXT: call void @_Z10func_pvoidPU3AS5v(ptr addrspace(5) noundef %[[cast]])67  func_pvoid((__private__ void *)gen_void_ptr);68 69  // CHECK: %[[cast:.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(5)70  // CHECK-NEXT: call void @_Z10func_pvoidPU3AS5v(ptr addrspace(5) noundef %[[cast]])71  func_pvoid((__private__ void *)gen_int_ptr);72 73  // CHECK: %[[cast:.*]] = addrspacecast ptr %{{.*}} to ptr addrspace(5)74  // CHECK-NEXT: call void @_Z9func_pintPU3AS5i(ptr addrspace(5) noundef %[[cast]])75  func_pint((__private__ int *)gen_void_ptr);76}77