brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.7 KiB · 3c2a624 Raw
160 lines · cpp
1// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py2// RUN: %clang_cc1 -O0 -triple amdgcn---amdgiz -emit-llvm %s -o - | FileCheck %s3 4// CHECK-LABEL: @_Z5func1Pi(5// CHECK-NEXT:  entry:6// CHECK-NEXT:    [[X_ADDR:%.*]] = alloca ptr, align 8, addrspace(5)7// CHECK-NEXT:    [[X_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[X_ADDR]] to ptr8// CHECK-NEXT:    store ptr [[X:%.*]], ptr [[X_ADDR_ASCAST]], align 89// CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[X_ADDR_ASCAST]], align 810// CHECK-NEXT:    store i32 1, ptr [[TMP0]], align 411// CHECK-NEXT:    ret void12//13void func1(int *x) {14  *x = 1;15}16 17// CHECK-LABEL: @_Z5func2v(18// CHECK-NEXT:  entry:19// CHECK-NEXT:    [[LV1:%.*]] = alloca i32, align 4, addrspace(5)20// CHECK-NEXT:    [[LV2:%.*]] = alloca i32, align 4, addrspace(5)21// CHECK-NEXT:    [[LA:%.*]] = alloca [100 x i32], align 4, addrspace(5)22// CHECK-NEXT:    [[LP1:%.*]] = alloca ptr, align 8, addrspace(5)23// CHECK-NEXT:    [[LP2:%.*]] = alloca ptr, align 8, addrspace(5)24// CHECK-NEXT:    [[LVC:%.*]] = alloca i32, align 4, addrspace(5)25// CHECK-NEXT:    [[LV1_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[LV1]] to ptr26// CHECK-NEXT:    [[LV2_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[LV2]] to ptr27// CHECK-NEXT:    [[LA_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[LA]] to ptr28// CHECK-NEXT:    [[LP1_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[LP1]] to ptr29// CHECK-NEXT:    [[LP2_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[LP2]] to ptr30// CHECK-NEXT:    [[LVC_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[LVC]] to ptr31// CHECK-NEXT:    store i32 1, ptr [[LV1_ASCAST]], align 432// CHECK-NEXT:    store i32 2, ptr [[LV2_ASCAST]], align 433// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [100 x i32], ptr [[LA_ASCAST]], i64 0, i64 034// CHECK-NEXT:    store i32 3, ptr [[ARRAYIDX]], align 435// CHECK-NEXT:    store ptr [[LV1_ASCAST]], ptr [[LP1_ASCAST]], align 836// CHECK-NEXT:    [[ARRAYDECAY:%.*]] = getelementptr inbounds [100 x i32], ptr [[LA_ASCAST]], i64 0, i64 037// CHECK-NEXT:    store ptr [[ARRAYDECAY]], ptr [[LP2_ASCAST]], align 838// CHECK-NEXT:    call void @_Z5func1Pi(ptr noundef [[LV1_ASCAST]])39// CHECK-NEXT:    store i32 4, ptr [[LVC_ASCAST]], align 440// CHECK-NEXT:    store i32 4, ptr [[LV1_ASCAST]], align 441// CHECK-NEXT:    ret void42//43void func2(void) {44 45  int lv1;46  lv1 = 1;47  int lv2 = 2;48 49  int la[100];50  la[0] = 3;51 52  int *lp1 = &lv1;53 54  int *lp2 = la;55 56  func1(&lv1);57 58  const int lvc = 4;59  lv1 = lvc;60}61 62void destroy(int x);63 64class A {65int x;66public:67  A():x(0) {}68  ~A() {69   destroy(x);70  }71};72 73// CHECK-LABEL: @_Z5func3v(74// CHECK-NEXT:  entry:75// CHECK-NEXT:    [[A:%.*]] = alloca [[CLASS_A:%.*]], align 4, addrspace(5)76// CHECK-NEXT:    [[A_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[A]] to ptr77// CHECK-NEXT:    call void @_ZN1AC1Ev(ptr noundef nonnull align 4 dereferenceable(4) [[A_ASCAST]])78// CHECK-NEXT:    call void @_ZN1AD1Ev(ptr noundef nonnull align 4 dereferenceable(4) [[A_ASCAST]])79// CHECK-NEXT:    ret void80//81void func3() {82  A a;83}84 85// CHECK-LABEL: @_Z5func4i(86// CHECK-NEXT:  entry:87// CHECK-NEXT:    [[X_ADDR:%.*]] = alloca i32, align 4, addrspace(5)88// CHECK-NEXT:    [[X_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[X_ADDR]] to ptr89// CHECK-NEXT:    store i32 [[X:%.*]], ptr [[X_ADDR_ASCAST]], align 490// CHECK-NEXT:    call void @_Z5func1Pi(ptr noundef [[X_ADDR_ASCAST]])91// CHECK-NEXT:    ret void92//93void func4(int x) {94  func1(&x);95}96 97// CHECK-LABEL: @_Z5func5v(98// CHECK-NEXT:  entry:99// CHECK-NEXT:    [[X:%.*]] = alloca i32, align 4, addrspace(5)100// CHECK-NEXT:    [[X_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[X]] to ptr101// CHECK-NEXT:    ret void102//103void func5() {104  return;105  int x = 0;106}107 108// CHECK-LABEL: @_Z5func6v(109// CHECK-NEXT:  entry:110// CHECK-NEXT:    [[X:%.*]] = alloca i32, align 4, addrspace(5)111// CHECK-NEXT:    [[X_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[X]] to ptr112// CHECK-NEXT:    ret void113//114void func6() {115  return;116  int x;117}118 119extern void use(int *);120// CHECK-LABEL: @_Z5func7v(121// CHECK-NEXT:  entry:122// CHECK-NEXT:    [[X:%.*]] = alloca i32, align 4, addrspace(5)123// CHECK-NEXT:    [[X_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[X]] to ptr124// CHECK-NEXT:    br label [[LATER:%.*]]125// CHECK:       later:126// CHECK-NEXT:    call void @_Z3usePi(ptr noundef [[X_ASCAST]])127// CHECK-NEXT:    ret void128//129void func7() {130  goto later;131  int x;132later:133  use(&x);134}135 136#define __private __attribute__((opencl_private))137 138// CHECK-LABEL: @_Z34explicit_private_address_space_ptrv(139// CHECK-NEXT:  entry:140// CHECK-NEXT:    [[VAR:%.*]] = alloca i64, align 8, addrspace(5)141// CHECK-NEXT:    [[ALLOCA_ADDR:%.*]] = alloca ptr, align 8, addrspace(5)142// CHECK-NEXT:    [[ALLOCA_ADDR_AS_PRIVATE:%.*]] = alloca ptr addrspace(5), align 4, addrspace(5)143// CHECK-NEXT:    [[VAR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[VAR]] to ptr144// CHECK-NEXT:    [[ALLOCA_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[ALLOCA_ADDR]] to ptr145// CHECK-NEXT:    [[ALLOCA_ADDR_AS_PRIVATE_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[ALLOCA_ADDR_AS_PRIVATE]] to ptr146// CHECK-NEXT:    store ptr [[VAR_ASCAST]], ptr [[ALLOCA_ADDR_ASCAST]], align 8147// CHECK-NEXT:    [[VAR_ASCAST_ASCAST:%.*]] = addrspacecast ptr [[VAR_ASCAST]] to ptr addrspace(5)148// CHECK-NEXT:    store ptr addrspace(5) [[VAR_ASCAST_ASCAST]], ptr [[ALLOCA_ADDR_AS_PRIVATE_ASCAST]], align 4149// CHECK-NEXT:    [[TMP0:%.*]] = load ptr addrspace(5), ptr [[ALLOCA_ADDR_AS_PRIVATE_ASCAST]], align 4150// CHECK-NEXT:    store i64 8, ptr addrspace(5) [[TMP0]], align 8151// CHECK-NEXT:    ret void152//153void explicit_private_address_space_ptr() {154  long var;155  long *alloca_addr = &var;156 157  __private long *alloca_addr_as_private = (__private long *)&var;158  *alloca_addr_as_private = 8;159}160