AMDGPU: Split x8 and x16 vector loads instead of scalarize
[oota-llvm.git] / lib / Target / AMDGPU / AMDGPUOpenCLImageTypeLoweringPass.cpp
index 086493bcad43a484b3bc16b9a7594a4e329f5779..554bf1da81f5274b9fd4753e7b8bf659c72a308d 100644 (file)
@@ -54,7 +54,7 @@ StringRef KernelArgMDNodeNames[] = {
   "kernel_arg_type",
   "kernel_arg_base_type",
   "kernel_arg_type_qual"};
-constexpr unsigned NumKernelArgMDNodes = array_lengthof(KernelArgMDNodeNames);
+const unsigned NumKernelArgMDNodes = 5;
 
 typedef SmallVector<Metadata *, 8> MDVector;
 struct KernelArgMD {
@@ -94,8 +94,12 @@ GetFunctionFromMDNode(MDNode *Node) {
       return nullptr;
     if (!ArgNode->getOperand(0))
       return nullptr;
-    assert(cast<MDString>(ArgNode->getOperand(0))->getString() ==
-           KernelArgMDNodeNames[i] && "Wrong kernel arg metadata name");
+
+    // FIXME: It should be possible to do image lowering when some metadata
+    // args missing or not in the expected order.
+    MDString *StringNode = dyn_cast<MDString>(ArgNode->getOperand(0));
+    if (!StringNode || StringNode->getString() != KernelArgMDNodeNames[i])
+      return nullptr;
   }
 
   return F;