================
@@ -6966,14 +6975,32 @@ void Verifier::visitIntrinsicCall(Intrinsic::ID ID,
CallBase &Call) {
&Call, PtrArg);
// Last argument must be a MD string
- auto *Op = cast<MetadataAsValue>(Call.getArgOperand(Call.arg_size() - 1));
- MDNode *MD = cast<MDNode>(Op->getMetadata());
- Check((MD->getNumOperands() == 1) && isa<MDString>(MD->getOperand(0)),
+ auto *Op =
+ dyn_cast<MetadataAsValue>(Call.getArgOperand(Call.arg_size() - 1));
+ Check(getMetadataValueAsString(Op) != nullptr,
"cooperative atomic intrinsics require that the last argument is a "
"metadata string",
&Call, Op);
break;
}
+ case Intrinsic::amdgcn_global_load_b128:
+ case Intrinsic::amdgcn_global_store_b128: {
+ auto *Op =
+ dyn_cast<MetadataAsValue>(Call.getArgOperand(Call.arg_size() - 1));
+ MDString *MDStr = getMetadataValueAsString(Op);
+ Check(MDStr != nullptr,
+ "global load/store intrinsics require that the last argument is a "
+ "metadata string",
+ &Call, Op);
+
+ StringRef Scope = MDStr->getString();
+ Check(Scope == "" || Scope == "agent" || Scope == "workgroup" ||
+ Scope == "wavefront",
+ "'" + Scope +
+ "' is not a valid scope for global load/store intrinsics",
+ &Call, Op);
----------------
arsenm wrote:
We probably should pull the recognized scope names out of
AMDGPUMachineModuleInfo and move them into TargetParser
https://github.com/llvm/llvm-project/pull/172090
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits