[cfe-commits] [PATCH] OpenCL Kernel arg info metadata

Anton Lokhmotov Anton.Lokhmotov at arm.com
Thu Jun 28 08:32:26 PDT 2012


Hi Tanya,

Please see minor comments below.  Would it be possible for you to merge your
patch after
http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20120625/059814.h
tml?

Many thanks,
Anton.


+  unsigned EmitOpenCLArgMetadata : 1; /// Emit OpenCL kernel arg metadata.
///< Emit OpenCL kernel arg info metadata.
(Note the opening angle bracket.)


+// OpenCL v1.2 s5.6.4.6 allows the compiler to store kernel arg
+// information in the program executeable. The argument information store
+// includes the argument name, its type, the address and access qualifiers
used.
arg -> argument
executeable -> executable
information store -> information stored


+static void GenOpenCLArgMetaData(const FunctionDecl *FD, llvm::Function
*Fn,
GenOpenCLArgInfoMetadata (the only place where 'Metadata' is spelled as
'MetaData').


+  // Create MDNodes that represents the kernel arg metadata.
+  // Each MDNode is a list in the form of "key", N number of values which
is
+  // the same number of values as their are kernel arguments.
// Create MDNodes that represent the kernel argument info.
// Each MDNode is a list in the form of a key (e.g. "kernel_arg_names") 
// followed by one metadata value per each kernel argument.


+  // Metadata for arg name.
+  SmallVector<llvm::Value*, 8> argNames;
+  argNames.push_back(llvm::MDString::get(Context, "kernel_arg_name"));

// MDNode for the kernel argument names.
SmallVector<llvm::Value*, 8> argNames;
argNames.push_back(llvm::MDString::get(Context, "kernel_arg_names"));


+  for (unsigned i = 0, e = FD->getNumParams(); i != e; ++i) {
+    
+    const ParmVarDecl *parm = FD->getParamDecl(i);
+    
+    // Get arg name.
+    argNames.push_back(llvm::MDString::get(Context, parm->getName()));
+    
+  }

How about shortening this to:

  for (unsigned i = 0, e = FD->getNumParams(); i != e; ++i)
    argNames.push_back(llvm::MDString::get(Context, 
                                           FD->getParamDecl(i)->getName()));







More information about the cfe-commits mailing list