================
@@ -588,11 +588,34 @@ bool SemaRISCV::CheckBuiltinFunctionCall(const TargetInfo
&TI,
<< /* IsExtension */ true << TheCall->getSourceRange() << RF;
}
+ auto CheckRequiredExtension = [&](StringRef RequiredExt) -> bool {
+ if (TI.hasFeature(RequiredExt) || FunctionFeatureMap.lookup(RequiredExt))
+ return false;
+ return Diag(TheCall->getBeginLoc(),
+ diag::err_riscv_builtin_requires_extension)
+ << /* IsExtension */ true << TheCall->getSourceRange()
+ << RequiredExt;
+ };
+
// vmulh.vv, vmulh.vx, vmulhu.vv, vmulhu.vx, vmulhsu.vv, vmulhsu.vx,
// vsmul.vv, vsmul.vx are not included for EEW=64 in Zve64*.
switch (BuiltinID) {
default:
break;
+ case RISCV::BI__builtin_riscv_cv_bitmanip_extract:
+ case RISCV::BI__builtin_riscv_cv_bitmanip_extractu:
+ case RISCV::BI__builtin_riscv_cv_bitmanip_insert:
+ case RISCV::BI__builtin_riscv_cv_bitmanip_bclr:
+ case RISCV::BI__builtin_riscv_cv_bitmanip_bset:
+ case RISCV::BI__builtin_riscv_cv_bitmanip_ff1:
+ case RISCV::BI__builtin_riscv_cv_bitmanip_fl1:
+ case RISCV::BI__builtin_riscv_cv_bitmanip_clb:
+ case RISCV::BI__builtin_riscv_cv_bitmanip_cnt:
+ case RISCV::BI__builtin_riscv_cv_bitmanip_ror:
+ case RISCV::BI__builtin_riscv_cv_bitmanip_bitrev:
+ if (CheckRequiredExtension("xcvbitmanip"))
----------------
topperc wrote:
Doesn't the use of "xcvbitmanip" in BuiltinsRISCVXCV.td already do this?
https://github.com/llvm/llvm-project/pull/202564
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits