[PATCH] D32091: [AMDGPU] set read_only access qualifier for pointers

Stanislav Mekhanoshin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 14 12:24:27 PDT 2017


This revision was automatically updated to reflect the committed changes.
Closed by commit rL300362: [AMDGPU] set read_only access qualifier for pointers (authored by rampitec).

Changed prior to commit:
  https://reviews.llvm.org/D32091?vs=95329&id=95332#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D32091

Files:
  llvm/trunk/lib/Target/AMDGPU/MCTargetDesc/AMDGPUCodeObjectMetadataStreamer.cpp
  llvm/trunk/test/CodeGen/AMDGPU/code-object-metadata-deduce-ro-arg.ll


Index: llvm/trunk/test/CodeGen/AMDGPU/code-object-metadata-deduce-ro-arg.ll
===================================================================
--- llvm/trunk/test/CodeGen/AMDGPU/code-object-metadata-deduce-ro-arg.ll
+++ llvm/trunk/test/CodeGen/AMDGPU/code-object-metadata-deduce-ro-arg.ll
@@ -0,0 +1,33 @@
+; RUN: llc -mtriple=amdgcn-amd-amdhsa -filetype=obj -o - < %s | llvm-readobj -amdgpu-code-object-metadata -elf-output-style=GNU -notes | FileCheck %s
+
+; CHECK:      - Name:            test_ro_arg
+; CHECK:        Args:
+; CHECK-NEXT: - Size:            8
+; CHECK-NEXT:   Align:           8
+; CHECK-NEXT:   ValueKind:       GlobalBuffer
+; CHECK-NEXT:   ValueType:       F32
+; CHECK-NEXT:   AccQual:         ReadOnly
+; CHECK-NEXT:   AddrSpaceQual:   Global
+; CHECK-NEXT:   IsConst:         true
+; CHECK-NEXT:   IsRestrict:      true
+; CHECK-NEXT:   TypeName:        'float*'
+
+; CHECK-NEXT: - Size:            8
+; CHECK-NEXT:   Align:           8
+; CHECK-NEXT:   ValueKind:       GlobalBuffer
+; CHECK-NEXT:   ValueType:       F32
+; CHECK-NEXT:   AccQual:         Default
+; CHECK-NEXT:   AddrSpaceQual:   Global
+; CHECK-NEXT:   TypeName:        'float*'
+
+define amdgpu_kernel void @test_ro_arg(float addrspace(1)* noalias readonly %in, float addrspace(1)* %out)
+    !kernel_arg_addr_space !0 !kernel_arg_access_qual !1 !kernel_arg_type !2
+    !kernel_arg_base_type !2 !kernel_arg_type_qual !3 {
+  ret void
+}
+
+!0 = !{i32 1, i32 1}
+!1 = !{!"none", !"none"}
+!2 = !{!"float*", !"float*"}
+!3 = !{!"const restrict", !""}
+
Index: llvm/trunk/lib/Target/AMDGPU/MCTargetDesc/AMDGPUCodeObjectMetadataStreamer.cpp
===================================================================
--- llvm/trunk/lib/Target/AMDGPU/MCTargetDesc/AMDGPUCodeObjectMetadataStreamer.cpp
+++ llvm/trunk/lib/Target/AMDGPU/MCTargetDesc/AMDGPUCodeObjectMetadataStreamer.cpp
@@ -478,9 +478,14 @@
     BaseTypeName = cast<MDString>(Node->getOperand(ArgNo))->getString();
 
   StringRef AccQual;
-  Node = Func->getMetadata("kernel_arg_access_qual");
-  if (Node && ArgNo < Node->getNumOperands())
-    AccQual = cast<MDString>(Node->getOperand(ArgNo))->getString();
+  if (Arg.getType()->isPointerTy() && Arg.onlyReadsMemory() &&
+      Arg.hasNoAliasAttr()) {
+    AccQual = "read_only";
+  } else {
+    Node = Func->getMetadata("kernel_arg_access_qual");
+    if (Node && ArgNo < Node->getNumOperands())
+      AccQual = cast<MDString>(Node->getOperand(ArgNo))->getString();
+  }
 
   StringRef Name;
   Node = Func->getMetadata("kernel_arg_name");


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D32091.95332.patch
Type: text/x-patch
Size: 2546 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170414/07e75764/attachment.bin>


More information about the llvm-commits mailing list