[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