brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.4 KiB · 05b7a9b Raw
92 lines · plain
1// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 62 // REQUIRES: amdgpu-registered-target3 // RUN: %clang_cc1 -triple amdgcn-unknown-unknown -target-cpu verde -emit-llvm -o - %s | FileCheck %s4 5typedef struct AA_ty {6  int x;7  __amdgpu_buffer_rsrc_t r;8} AA;9 10AA getAA(void *p);11__amdgpu_buffer_rsrc_t getBufferImpl(void *p);12void consumeBuffer(__amdgpu_buffer_rsrc_t);13 14// CHECK-LABEL: define dso_local ptr addrspace(8) @getBuffer(15// CHECK-SAME: ptr addrspace(5) noundef [[P:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {16// CHECK-NEXT:  [[ENTRY:.*:]]17// CHECK-NEXT:    [[CALL:%.*]] = tail call ptr addrspace(8) @getBufferImpl(ptr addrspace(5) noundef [[P]]) #[[ATTR2:[0-9]+]]18// CHECK-NEXT:    ret ptr addrspace(8) [[CALL]]19//20__amdgpu_buffer_rsrc_t getBuffer(void *p) {21  return getBufferImpl(p);22}23 24// CHECK-LABEL: define dso_local void @consumeBufferPtr(25// CHECK-SAME: ptr addrspace(5) noundef readonly captures(address) [[P:%.*]]) local_unnamed_addr #[[ATTR0]] {26// CHECK-NEXT:  [[ENTRY:.*:]]27// CHECK-NEXT:    [[TOBOOL_NOT:%.*]] = icmp eq ptr addrspace(5) [[P]], addrspacecast (ptr null to ptr addrspace(5))28// CHECK-NEXT:    br i1 [[TOBOOL_NOT]], label %[[IF_END:.*]], label %[[IF_THEN:.*]]29// CHECK:       [[IF_THEN]]:30// CHECK-NEXT:    [[TMP0:%.*]] = load ptr addrspace(8), ptr addrspace(5) [[P]], align 16, !tbaa [[__AMDGPU_BUFFER_RSRC_T_TBAA8:![0-9]+]]31// CHECK-NEXT:    tail call void @consumeBuffer(ptr addrspace(8) [[TMP0]]) #[[ATTR2]]32// CHECK-NEXT:    br label %[[IF_END]]33// CHECK:       [[IF_END]]:34// CHECK-NEXT:    ret void35//36void consumeBufferPtr(__amdgpu_buffer_rsrc_t *p) {37  if (p)38    consumeBuffer(*p);39}40 41// CHECK-LABEL: define dso_local void @test(42// CHECK-SAME: ptr addrspace(5) noundef readonly captures(address) [[A:%.*]]) local_unnamed_addr #[[ATTR0]] {43// CHECK-NEXT:  [[ENTRY:.*:]]44// CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr addrspace(5) [[A]], align 16, !tbaa [[INT_TBAA10:![0-9]+]]45// CHECK-NEXT:    [[TOBOOL_NOT:%.*]] = icmp eq i32 [[TMP0]], 046// CHECK-NEXT:    [[TOBOOL_NOT_I:%.*]] = icmp eq ptr addrspace(5) [[A]], addrspacecast (ptr null to ptr addrspace(5))47// CHECK-NEXT:    [[OR_COND:%.*]] = select i1 [[TOBOOL_NOT]], i1 true, i1 [[TOBOOL_NOT_I]]48// CHECK-NEXT:    br i1 [[OR_COND]], label %[[IF_END:.*]], label %[[IF_THEN_I:.*]]49// CHECK:       [[IF_THEN_I]]:50// CHECK-NEXT:    [[R:%.*]] = getelementptr inbounds nuw i8, ptr addrspace(5) [[A]], i32 1651// CHECK-NEXT:    [[TMP1:%.*]] = load ptr addrspace(8), ptr addrspace(5) [[R]], align 16, !tbaa [[__AMDGPU_BUFFER_RSRC_T_TBAA8]]52// CHECK-NEXT:    tail call void @consumeBuffer(ptr addrspace(8) [[TMP1]]) #[[ATTR2]]53// CHECK-NEXT:    br label %[[IF_END]]54// CHECK:       [[IF_END]]:55// CHECK-NEXT:    ret void56//57void test(AA *a) {58  if (a->x)59    consumeBufferPtr(&(a->r));60}61 62// CHECK-LABEL: define dso_local %struct.AA_ty @bar(63// CHECK-SAME: ptr addrspace(5) noundef [[P:%.*]]) local_unnamed_addr #[[ATTR0]] {64// CHECK-NEXT:  [[ENTRY:.*:]]65// CHECK-NEXT:    [[CALL:%.*]] = tail call [[STRUCT_AA_TY:%.*]] @[[GETAA:[a-zA-Z0-9_$\"\\.-]*[a-zA-Z_$\"\\.-][a-zA-Z0-9_$\"\\.-]*]](ptr addrspace(5) noundef [[P]]) #[[ATTR2]]66// CHECK-NEXT:    [[TMP0:%.*]] = extractvalue [[STRUCT_AA_TY]] [[CALL]], 067// CHECK-NEXT:    [[CALL_I:%.*]] = tail call ptr addrspace(8) @getBufferImpl(ptr addrspace(5) noundef [[P]]) #[[ATTR2]]68// CHECK-NEXT:    [[TOBOOL_NOT_I:%.*]] = icmp eq i32 [[TMP0]], 069// CHECK-NEXT:    br i1 [[TOBOOL_NOT_I]], label %[[TEST_EXIT:.*]], label %[[IF_THEN_I_I:.*]]70// CHECK:       [[IF_THEN_I_I]]:71// CHECK-NEXT:    tail call void @consumeBuffer(ptr addrspace(8) [[CALL_I]]) #[[ATTR2]]72// CHECK-NEXT:    br label %[[TEST_EXIT]]73// CHECK:       [[TEST_EXIT]]:74// CHECK-NEXT:    [[DOTFCA_1_INSERT:%.*]] = insertvalue [[STRUCT_AA_TY]] [[CALL]], ptr addrspace(8) [[CALL_I]], 175// CHECK-NEXT:    ret [[STRUCT_AA_TY]] [[DOTFCA_1_INSERT]]76//77AA bar(void *p) {78  AA a = getAA(p);79  a.r = getBuffer(p);80  test(&a);81  return a;82}83//.84// CHECK: [[META5:![0-9]+]] = !{!"int", [[META6:![0-9]+]], i64 0}85// CHECK: [[META6]] = !{!"omnipotent char", [[META7:![0-9]+]], i64 0}86// CHECK: [[META7]] = !{!"Simple C/C++ TBAA"}87// CHECK: [[__AMDGPU_BUFFER_RSRC_T_TBAA8]] = !{[[META9:![0-9]+]], [[META9]], i64 0}88// CHECK: [[META9]] = !{!"__amdgpu_buffer_rsrc_t", [[META6]], i64 0}89// CHECK: [[INT_TBAA10]] = !{[[META11:![0-9]+]], [[META5]], i64 0}90// CHECK: [[META11]] = !{!"AA_ty", [[META5]], i64 0, [[META9]], i64 16}91//.92