brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · ecd2c25 Raw
43 lines · c
1// RUN: %clang_cc1 -triple amdgcn---amdgiz -emit-llvm < %s | FileCheck -check-prefixes=CHECK %s2 3// CHECK-DAG: @foo ={{.*}} addrspace(1) global i32 04int foo;5 6// CHECK-DAG: @ban ={{.*}} addrspace(1) global [10 x i32] zeroinitializer7int ban[10];8 9// CHECK-DAG: @A ={{.*}} addrspace(1) global ptr null10// CHECK-DAG: @B ={{.*}} addrspace(1) global ptr null11int *A;12int *B;13 14// CHECK-LABEL: define{{.*}} i32 @test1()15// CHECK: load i32, ptr addrspacecast{{[^@]+}} @foo16int test1(void) { return foo; }17 18// CHECK-LABEL: define{{.*}} i32 @test2(i32 noundef %i)19// CHECK: %[[addr:.*]] = getelementptr20// CHECK: load i32, ptr %[[addr]]21// CHECK-NEXT: ret i3222int test2(int i) { return ban[i]; }23 24// CHECK-LABEL: define{{.*}} void @test3()25// CHECK: load ptr, ptr addrspacecast{{.*}} @B26// CHECK: load i32, ptr27// CHECK: load ptr, ptr addrspacecast{{.*}} @A28// CHECK: store i32 {{.*}}, ptr29void test3(void) {30  *A = *B;31}32 33// CHECK-LABEL: define{{.*}} void @test4(ptr noundef %a)34// CHECK: %[[alloca:.*]] = alloca ptr, align 8, addrspace(5)35// CHECK: %[[a_addr:.*]] ={{.*}} addrspacecast{{.*}} %[[alloca]] to ptr36// CHECK: store ptr %a, ptr %[[a_addr]]37// CHECK: %[[r0:.*]] = load ptr, ptr %[[a_addr]]38// CHECK: %[[arrayidx:.*]] = getelementptr inbounds i32, ptr %[[r0]]39// CHECK: store i32 0, ptr %[[arrayidx]]40void test4(int *a) {41  a[0] = 0;42}43