macro_rules! is_riscv_feature_detected {
    ("rv32i") => { ... };
    ("zifencei") => { ... };
    ("zihintpause") => { ... };
    ("rv64i") => { ... };
    ("m") => { ... };
    ("a") => { ... };
    ("zicsr") => { ... };
    ("zicntr") => { ... };
    ("zihpm") => { ... };
    ("f") => { ... };
    ("d") => { ... };
    ("q") => { ... };
    ("c") => { ... };
    ("zfinx") => { ... };
    ("zdinx") => { ... };
    ("zhinx") => { ... };
    ("zhinxmin") => { ... };
    ("ztso") => { ... };
    ("rv32e") => { ... };
    ("rv128i") => { ... };
    ("zfh") => { ... };
    ("zfhmin") => { ... };
    ("b") => { ... };
    ("j") => { ... };
    ("p") => { ... };
    ("v") => { ... };
    ("zam") => { ... };
    ("s") => { ... };
    ("svnapot") => { ... };
    ("svpbmt") => { ... };
    ("svinval") => { ... };
    ("h") => { ... };
    ("zba") => { ... };
    ("zbb") => { ... };
    ("zbc") => { ... };
    ("zbs") => { ... };
    ("zbkb") => { ... };
    ("zbkc") => { ... };
    ("zbkx") => { ... };
    ("zknd") => { ... };
    ("zkne") => { ... };
    ("zknh") => { ... };
    ("zksed") => { ... };
    ("zksh") => { ... };
    ("zkr") => { ... };
    ("zkn") => { ... };
    ("zks") => { ... };
    ("zk") => { ... };
    ("zkt") => { ... };
    ($t:tt,) => { ... };
    ($t:tt) => { ... };
}
🔬This is a nightly-only experimental API. (stdsimd #27731)
Available on RISC-V RV32 or RISC-V RV64 only.
Expand description

在运行时测试指令集在 RISC-V 平台上是否可用的宏。

RISC-V 标准定义了基本集和扩展集。 基本套件为 RV32I、RV64I、RV32E 或 RV128I。 任何 RISC-V 平台都必须支持一个基本集或者多个扩展集。

任何 RISC-V 标准指令集都可以处于批准、冻结或草案状态。 当前标准指令集的版本和状态可以从 ISA 手册 的前言部分查看。

平台可以定义和支持他们自己的带有 ISA 前缀 X 的自定义指令集。 这些集合是高度特定于平台的,应该使用它们自己的平台支持 crates 来检测。

非特权规范

支持的已批准 RISC-V 指令集如下:

  • RV32I: "rv32i"
  • Zifencei: "zifencei"
  • Zihintpause: "zihintpause"
  • RV64I: "rv64i"
  • M: "m"
  • A: "a"
  • Zicsr: "zicsr"
  • Zicntr: "zicntr"
  • Zihpm: "zihpm"
  • F: "f"
  • D: "d"
  • Q: "q"
  • C: "c"

还有一些基础和扩展标记为标准指令集,但它们处于冻结或草稿状态。 这些指令集也由这个宏保留,可以在未来的平台中检测到。

冻结的 RISC-V 指令集:

  • Zfinx: "zfinx"
  • Zdinx: "zdinx"
  • Zhinx: "zhinx"
  • Zhinxmin: "zhinxmin"
  • Ztso: "ztso"

RISC-V 指令集草案:

  • RV32E: "rv32e"
  • RV128I: "rv128i"
  • Zfh: "zfh"
  • Zfhmin: "zfhmin"
  • B: "b"
  • J: "j"
  • P: "p"
  • V: "v"
  • Zam: "zam"

由特权规范定义:

  • Supervisor: "s"
  • Svnapot: "svnapot"
  • Svpbmt: "svpbmt"
  • Svinval: "svinval"
  • Hypervisor: "h"

RISC-V 位操作 ISA 扩展

本文档定义了以下扩展:

  • Zba: "zba"
  • Zbb: "zbb"
  • Zbc: "zbc"
  • Zbs: "zbs"

RISC-V 加密扩展

这些扩展在第一卷,标量和熵源说明中定义:

  • Zbkb: "zbkb"
  • Zbkc: "zbkc"
  • Zbkx: "zbkx"
  • Zknd: "zknd"
  • Zkne: "zkne"
  • Zknh: "zknh"
  • Zksed: "zksed"
  • Zksh: "zksh"
  • Zkr: "zkr"
  • Zkn: "zkn"
  • Zks: "zks"
  • Zk: "zk"
  • Zkt: "zkt"