[clang] [llvm] [RISCV] Add Clang builtins for XCVbitmanip (PR #202564)

Craig Topper via cfe-commits cfe-commits at lists.llvm.org
Tue Jun 9 07:53:18 PDT 2026


================
@@ -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


More information about the cfe-commits mailing list