; }` -> one def per name."""
+ extra = []
+ for m in re.finditer(r"foreach\s+(\w+)\s*=\s*\[([^\]]*)\]\s*in\s*\{(.*?)\n\}", t, re.S):
+ var, body = m.group(1), m.group(3)
+ for name in re.findall(r'"([^"]+)"', m.group(2)):
+ extra.append(re.sub(r"<\s*" + var + r"\s*,", f'<"{name}",', body))
+ return t + "\n" + "\n".join(extra)
+
+
+def split_top(s):
+ parts, depth, cur = [], 0, ""
+ for ch in s:
+ if ch in "([<":
+ depth += 1
+ elif ch in ")]>":
+ depth -= 1
+ if ch == "," and depth == 0:
+ parts.append(cur)
+ cur = ""
+ else:
+ cur += ch
+ parts.append(cur)
+ return parts
+
+
+def resolve(text):
+ """Every processor -> set of LLVM feature names (implied features included)."""
+ t = expand_foreach(strip_comments(text))
+ features = {}
+ # Every feature-like def: the NAME is its first string argument, and the
+ # IMPLIED features are its first plain list argument. That holds for
+ # SubtargetFeature
".join(row["primitives"][p]) or "—" for p in PRIM_ORDER]
+ lines.append("| " + " | ".join(cells) + " |")
+ lines.append("")
+ return "\n".join(lines)
+
+
+def rust_to_llvm_names(llvm_util_rs):
+ """rustc's own Rust-name -> LLVM-name table, parsed from `to_llvm_features`."""
+ body = llvm_util_rs[llvm_util_rs.index("fn to_llvm_features"):]
+ table = {}
+ for arch, marker in (("aarch64", "Arch::AArch64"), ("x86", "Arch::X86")):
+ start = body.index(marker)
+ end = body.index("Arch::", start + len(marker) + 20)
+ section = body[start:end]
+ table[arch] = {r: l for r, l in re.findall(
+ r'"([^"]+)"\s*=>\s*Some\(LLVMFeature::(?:new|with_dependencies)\(\s*"([^"]+)"', section)}
+ return table
+
+
+def verify_rustc(inv, names):
+ """Compare every CPU with rustc's `--print cfg`, over the features stable rustc prints."""
+ bad = 0
+ for arch, cpus in inv["arch"].items():
+ to_rust = {}
+ for r, l in names[arch].items():
+ to_rust.setdefault(l, set()).add(r)
+ cfg = {}
+ for cpu in cpus:
+ try:
+ out = rustc("--print", "cfg", "--target", RUST_TARGET[arch], "-C", f"target-cpu={cpu}")
+ except subprocess.CalledProcessError:
+ print(f" {arch}/{cpu}: rustc rejects this cpu name (skipped)")
+ continue
+ cfg[cpu] = set(re.findall(r'target_feature="([^"]+)"', out))
+ exposed = set().union(*cfg.values()) # features stable rustc can print at all
+ # Features rustc prints for EVERY cpu are target-level, not per-cpu:
+ # the x86_64 ABI requires sse/sse2, so rustc reports them even for
+ # LLVM's featureless `generic`. They come from the target, not from
+ # any processor list, so they are added to both sides.
+ baseline = set.intersection(*cfg.values())
+ for cpu, rust in cfg.items():
+ mine = ({r for f in cpus[cpu]["features"] for r in to_rust.get(f, {f})} & exposed) | baseline
+ if mine != rust:
+ bad += 1
+ print(f" MISMATCH {arch}/{cpu}: llvm-only={sorted(mine - rust)} rustc-only={sorted(rust - mine)}")
+ print(f"{arch}: {len(cfg)} CPUs compared against rustc over {len(exposed)} exposed features")
+ return bad
+
+
+def main():
+ ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
+ ap.add_argument("--write", action="store_true", help="write the generated outputs")
+ ap.add_argument("--verify-rustc", action="store_true", help="compare every CPU with rustc's table")
+ ap.add_argument("--tag", help="llvm-project tag (default: from rustc -vV)")
+ ap.add_argument("--llvm-src", help="local llvm-project checkout instead of fetching")
+ a = ap.parse_args()
+
+ tag = a.tag or llvm_tag()
+ inv = build(tag, load(tag, a.llvm_src))
+ js = json.dumps(inv, indent=1, sort_keys=True) + "\n"
+ md = render_md(inv)
+
+ if a.verify_rustc:
+ release = re.search(r"release: (\S+)", rustc("-vV")).group(1)
+ cached = CACHE / f"rust-{release}" / "llvm_util.rs"
+ if not cached.exists():
+ cached.parent.mkdir(parents=True, exist_ok=True)
+ url = ("https://raw.githubusercontent.com/rust-lang/rust/"
+ f"{release}/compiler/rustc_codegen_llvm/src/llvm_util.rs")
+ with urllib.request.urlopen(url, timeout=60) as r:
+ cached.write_bytes(r.read())
+ bad = verify_rustc(inv, rust_to_llvm_names(cached.read_text()))
+ print("rustc agrees on every compared CPU" if not bad else f"{bad} CPU(s) disagree")
+ if bad:
+ sys.exit(1)
+ if a.write:
+ OUT_JSON.parent.mkdir(parents=True, exist_ok=True)
+ OUT_JSON.write_text(js)
+ OUT_MD.write_text(md)
+ n = {k: len(v) for k, v in inv["arch"].items()}
+ print(f"wrote {OUT_JSON.relative_to(ROOT)} and {OUT_MD.relative_to(ROOT)} ({tag}, {n})")
+ elif not a.verify_rustc:
+ stale = [p for p, want in ((OUT_JSON, js), (OUT_MD, md))
+ if not p.exists() or p.read_text() != want]
+ if stale:
+ sys.exit("stale: " + ", ".join(str(p.relative_to(ROOT)) for p in stale)
+ + " (run with --write)")
+ print(f"inventory is current ({tag})")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/tools/llvm-inventory/inventory.json b/tools/llvm-inventory/inventory.json
new file mode 100644
index 00000000..7c703690
--- /dev/null
+++ b/tools/llvm-inventory/inventory.json
@@ -0,0 +1,12484 @@
+{
+ "arch": {
+ "aarch64": {
+ "a64fx": {
+ "backend": "simd_neon",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "aggressive-fma",
+ "arith-bcc-fusion",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-unpredicated-ld-st-lower",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "fullfp16",
+ "lor",
+ "lse",
+ "max-interleave-factor-4",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "perfmon",
+ "predictable-select-expensive",
+ "ras",
+ "rdm",
+ "sha2",
+ "store-pair-suppress",
+ "sve",
+ "uaops",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "ampere1": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "aggressive-fma",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "amvs",
+ "arith-bcc-fusion",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "cmp-bcc-fusion",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fptoint",
+ "fullfp16",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-literals",
+ "i8mm",
+ "jsconv",
+ "ldp-aligned-only",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "rand",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "specrestrict",
+ "ssbs",
+ "store-pair-suppress",
+ "stp-aligned-only",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "ampere1a": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "aggressive-fma",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "amvs",
+ "arith-bcc-fusion",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "cmp-bcc-fusion",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fptoint",
+ "fullfp16",
+ "fuse-address",
+ "fuse-addsub-2reg-const1",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-literals",
+ "i8mm",
+ "jsconv",
+ "ldp-aligned-only",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "rand",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "sm4",
+ "specrestrict",
+ "ssbs",
+ "store-pair-suppress",
+ "stp-aligned-only",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "ampere1b": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "aggressive-fma",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "amvs",
+ "arith-bcc-fusion",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "cmp-bcc-fusion",
+ "complxnum",
+ "crc",
+ "cssc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fptoint",
+ "fullfp16",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-literals",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "ldp-aligned-only",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "rand",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "sm4",
+ "spe-eef",
+ "specrestrict",
+ "ssbs",
+ "store-pair-suppress",
+ "stp-aligned-only",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "use-postra-scheduler",
+ "vh",
+ "wfxt",
+ "xs"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "ampere1c": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "aggressive-fma",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "amvs",
+ "arith-bcc-fusion",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "cmp-bcc-fusion",
+ "complxnum",
+ "crc",
+ "cssc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "faminmax",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fp8",
+ "fp8fma",
+ "fptoint",
+ "fullfp16",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-literals",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "lut",
+ "max-interleave-factor-4",
+ "mec",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "rand",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "rme",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "sm4",
+ "spe-eef",
+ "specrestrict",
+ "ssbs",
+ "store-pair-suppress",
+ "sve",
+ "sve-aes",
+ "sve-b16b16",
+ "sve-sha3",
+ "sve-sm4",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "use-postra-scheduler",
+ "vh",
+ "wfxt",
+ "xs"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-a10": {
+ "backend": "simd_neon",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "fuse-aes",
+ "fuse-crypto-eor",
+ "lor",
+ "neon",
+ "no-zcz-fpr64",
+ "pan",
+ "perfmon",
+ "rdm",
+ "sha2",
+ "store-pair-suppress",
+ "vh",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-a11": {
+ "backend": "simd_neon",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "ccpp",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "fullfp16",
+ "fuse-aes",
+ "fuse-crypto-eor",
+ "lor",
+ "lse",
+ "neon",
+ "no-zcz-fpr64",
+ "pan",
+ "pan-rwv",
+ "perfmon",
+ "ras",
+ "rdm",
+ "sha2",
+ "store-pair-suppress",
+ "uaops",
+ "vh",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-a12": {
+ "backend": "simd_neon",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "fullfp16",
+ "fuse-aes",
+ "fuse-crypto-eor",
+ "jsconv",
+ "lor",
+ "lse",
+ "neon",
+ "no-zcz-fpr64",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "ras",
+ "rcpc",
+ "rdm",
+ "sha2",
+ "store-pair-suppress",
+ "uaops",
+ "vh",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-a13": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "am",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "dit",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fullfp16",
+ "fuse-aes",
+ "fuse-crypto-eor",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mpam",
+ "neon",
+ "no-zcz-fpr64",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sel2",
+ "sha2",
+ "sha3",
+ "store-pair-suppress",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "vh",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-a14": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "aggressive-fma",
+ "alternate-sextload-cvt-f32-pattern",
+ "altnzcv",
+ "am",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "dit",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fptoint",
+ "fullfp16",
+ "fuse-address",
+ "fuse-aes",
+ "fuse-arith-logic",
+ "fuse-crypto-eor",
+ "fuse-csel",
+ "fuse-literals",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "neon",
+ "no-zcz-fpr64",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "specrestrict",
+ "ssbs",
+ "store-pair-suppress",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "vh",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-a15": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "altnzcv",
+ "am",
+ "amvs",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-arith-logic",
+ "fuse-crypto-eor",
+ "fuse-csel",
+ "fuse-literals",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "neon",
+ "no-zcz-fpr64",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "specrestrict",
+ "ssbs",
+ "store-pair-suppress",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "vh",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-a16": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "altnzcv",
+ "am",
+ "amvs",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-arith-logic",
+ "fuse-crypto-eor",
+ "fuse-csel",
+ "fuse-literals",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "neon",
+ "no-zcz-fpr64",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "specrestrict",
+ "ssbs",
+ "store-pair-suppress",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "vh",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-a17": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "altnzcv",
+ "am",
+ "amvs",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-arith-logic",
+ "fuse-crypto-eor",
+ "fuse-csel",
+ "fuse-literals",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "neon",
+ "no-zcz-fpr64",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "specrestrict",
+ "ssbs",
+ "store-pair-suppress",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "vh",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-a18": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "altnzcv",
+ "am",
+ "amvs",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-arith-logic",
+ "fuse-crypto-eor",
+ "fuse-csel",
+ "fuse-literals",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "neon",
+ "no-zcz-fpr64",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "sme",
+ "sme-f64f64",
+ "sme-i16i64",
+ "sme2",
+ "spe-eef",
+ "specrestrict",
+ "ssbs",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "vh",
+ "wfxt",
+ "xs",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-a19": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "altnzcv",
+ "am",
+ "amvs",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "cssc",
+ "disable-latency-sched-heuristic",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-arith-logic",
+ "fuse-crypto-eor",
+ "fuse-csel",
+ "fuse-literals",
+ "hbc",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "mte",
+ "neon",
+ "no-zcz-fpr64",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "sme",
+ "sme-b16b16",
+ "sme-f16f16",
+ "sme-f64f64",
+ "sme-i16i64",
+ "sme2",
+ "sme2p1",
+ "spe-eef",
+ "specres2",
+ "specrestrict",
+ "ssbs",
+ "sve-b16b16",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "vh",
+ "wfxt",
+ "xs",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-a7": {
+ "backend": "simd_neon",
+ "features": [
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "disable-latency-sched-heuristic",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "fuse-aes",
+ "fuse-crypto-eor",
+ "neon",
+ "no-zcz-fpr64",
+ "perfmon",
+ "sha2",
+ "store-pair-suppress",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fp-workaround",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-a8": {
+ "backend": "simd_neon",
+ "features": [
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "disable-latency-sched-heuristic",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "fuse-aes",
+ "fuse-crypto-eor",
+ "neon",
+ "no-zcz-fpr64",
+ "perfmon",
+ "sha2",
+ "store-pair-suppress",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fp-workaround",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-a9": {
+ "backend": "simd_neon",
+ "features": [
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "disable-latency-sched-heuristic",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "fuse-aes",
+ "fuse-crypto-eor",
+ "neon",
+ "no-zcz-fpr64",
+ "perfmon",
+ "sha2",
+ "store-pair-suppress",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fp-workaround",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-latest": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "altnzcv",
+ "am",
+ "amvs",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "cssc",
+ "disable-latency-sched-heuristic",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-arith-logic",
+ "fuse-crypto-eor",
+ "fuse-csel",
+ "fuse-literals",
+ "hbc",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "mte",
+ "neon",
+ "no-zcz-fpr64",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "sme",
+ "sme-b16b16",
+ "sme-f16f16",
+ "sme-f64f64",
+ "sme-i16i64",
+ "sme2",
+ "sme2p1",
+ "spe-eef",
+ "specres2",
+ "specrestrict",
+ "ssbs",
+ "sve-b16b16",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "vh",
+ "wfxt",
+ "xs",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-m1": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "aggressive-fma",
+ "alternate-sextload-cvt-f32-pattern",
+ "altnzcv",
+ "am",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "dit",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fptoint",
+ "fullfp16",
+ "fuse-address",
+ "fuse-aes",
+ "fuse-arith-logic",
+ "fuse-crypto-eor",
+ "fuse-csel",
+ "fuse-literals",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "neon",
+ "no-zcz-fpr64",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "specrestrict",
+ "ssbs",
+ "store-pair-suppress",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "vh",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-m2": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "altnzcv",
+ "am",
+ "amvs",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-arith-logic",
+ "fuse-crypto-eor",
+ "fuse-csel",
+ "fuse-literals",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "neon",
+ "no-zcz-fpr64",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "specrestrict",
+ "ssbs",
+ "store-pair-suppress",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "vh",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-m3": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "altnzcv",
+ "am",
+ "amvs",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-arith-logic",
+ "fuse-crypto-eor",
+ "fuse-csel",
+ "fuse-literals",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "neon",
+ "no-zcz-fpr64",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "specrestrict",
+ "ssbs",
+ "store-pair-suppress",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "vh",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-m4": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "altnzcv",
+ "am",
+ "amvs",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-arith-logic",
+ "fuse-crypto-eor",
+ "fuse-csel",
+ "fuse-literals",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "neon",
+ "no-zcz-fpr64",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "sme",
+ "sme-f64f64",
+ "sme-i16i64",
+ "sme2",
+ "spe-eef",
+ "specrestrict",
+ "ssbs",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "vh",
+ "wfxt",
+ "xs",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-m5": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "altnzcv",
+ "am",
+ "amvs",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "cssc",
+ "disable-latency-sched-heuristic",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-arith-logic",
+ "fuse-crypto-eor",
+ "fuse-csel",
+ "fuse-literals",
+ "hbc",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "mte",
+ "neon",
+ "no-zcz-fpr64",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "sme",
+ "sme-b16b16",
+ "sme-f16f16",
+ "sme-f64f64",
+ "sme-i16i64",
+ "sme2",
+ "sme2p1",
+ "spe-eef",
+ "specres2",
+ "specrestrict",
+ "ssbs",
+ "sve-b16b16",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "vh",
+ "wfxt",
+ "xs",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-s10": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "altnzcv",
+ "am",
+ "amvs",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-arith-logic",
+ "fuse-crypto-eor",
+ "fuse-csel",
+ "fuse-literals",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "neon",
+ "no-zcz-fpr64",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "specrestrict",
+ "ssbs",
+ "store-pair-suppress",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "vh",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-s4": {
+ "backend": "simd_neon",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "fullfp16",
+ "fuse-aes",
+ "fuse-crypto-eor",
+ "jsconv",
+ "lor",
+ "lse",
+ "neon",
+ "no-zcz-fpr64",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "ras",
+ "rcpc",
+ "rdm",
+ "sha2",
+ "store-pair-suppress",
+ "uaops",
+ "vh",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-s5": {
+ "backend": "simd_neon",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "fullfp16",
+ "fuse-aes",
+ "fuse-crypto-eor",
+ "jsconv",
+ "lor",
+ "lse",
+ "neon",
+ "no-zcz-fpr64",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "ras",
+ "rcpc",
+ "rdm",
+ "sha2",
+ "store-pair-suppress",
+ "uaops",
+ "vh",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-s6": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "am",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "dit",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fullfp16",
+ "fuse-aes",
+ "fuse-crypto-eor",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mpam",
+ "neon",
+ "no-zcz-fpr64",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sel2",
+ "sha2",
+ "sha3",
+ "store-pair-suppress",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "vh",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-s7": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "am",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "dit",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fullfp16",
+ "fuse-aes",
+ "fuse-crypto-eor",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mpam",
+ "neon",
+ "no-zcz-fpr64",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sel2",
+ "sha2",
+ "sha3",
+ "store-pair-suppress",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "vh",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-s8": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "am",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "dit",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fullfp16",
+ "fuse-aes",
+ "fuse-crypto-eor",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mpam",
+ "neon",
+ "no-zcz-fpr64",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sel2",
+ "sha2",
+ "sha3",
+ "store-pair-suppress",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "vh",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "apple-s9": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "altnzcv",
+ "am",
+ "amvs",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-arith-logic",
+ "fuse-crypto-eor",
+ "fuse-csel",
+ "fuse-literals",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "neon",
+ "no-zcz-fpr64",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "specrestrict",
+ "ssbs",
+ "store-pair-suppress",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "vh",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "c1-nano": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "am",
+ "amvs",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "chk",
+ "clrbhb",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "ete",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "hbc",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mec",
+ "mops",
+ "mpam",
+ "mte",
+ "neon",
+ "nmi",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rcpc3",
+ "rdm",
+ "rme",
+ "sb",
+ "sel2",
+ "sme",
+ "sme2",
+ "spe-eef",
+ "specres2",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-fixed-over-scalable-if-equal-cost",
+ "use-postra-scheduler",
+ "use-wzr-to-vec-move",
+ "vh",
+ "wfxt",
+ "xs"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "c1-premium": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "amvs",
+ "avoid-ldapur",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "chk",
+ "clrbhb",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "hbc",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mec",
+ "mops",
+ "mpam",
+ "mte",
+ "neon",
+ "nmi",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rcpc3",
+ "rdm",
+ "rme",
+ "sb",
+ "sel2",
+ "sme",
+ "sme2",
+ "spe",
+ "spe-eef",
+ "specres2",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-fixed-over-scalable-if-equal-cost",
+ "use-postra-scheduler",
+ "vh",
+ "wfxt",
+ "xs"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "c1-pro": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "amvs",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "chk",
+ "clrbhb",
+ "cmp-bcc-fusion",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "hbc",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mec",
+ "mops",
+ "mpam",
+ "mte",
+ "neon",
+ "nmi",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rcpc3",
+ "rdm",
+ "rme",
+ "sb",
+ "sel2",
+ "sme",
+ "sme2",
+ "spe",
+ "spe-eef",
+ "specres2",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-postra-scheduler",
+ "vh",
+ "wfxt",
+ "xs"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "c1-ultra": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "amvs",
+ "avoid-ldapur",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "chk",
+ "clrbhb",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "hbc",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mec",
+ "mops",
+ "mpam",
+ "mte",
+ "neon",
+ "nmi",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rcpc3",
+ "rdm",
+ "rme",
+ "sb",
+ "sel2",
+ "sme",
+ "sme2",
+ "spe",
+ "spe-eef",
+ "specres2",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-fixed-over-scalable-if-equal-cost",
+ "use-postra-scheduler",
+ "vh",
+ "wfxt",
+ "xs"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "carmel": {
+ "backend": "simd_neon",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "ccpp",
+ "crc",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "fullfp16",
+ "lor",
+ "lse",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "ras",
+ "rdm",
+ "sha2",
+ "uaops",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cobalt-100": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-maximize-scalable-bandwidth",
+ "dit",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a320": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aggressive-interleaving",
+ "altnzcv",
+ "am",
+ "amvs",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "ete",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mec",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "rme",
+ "sb",
+ "sel2",
+ "spe-eef",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-fixed-over-scalable-if-equal-cost",
+ "use-postra-scheduler",
+ "use-wzr-to-vec-move",
+ "vh",
+ "wfxt",
+ "xs"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a34": {
+ "backend": "simd_neon",
+ "features": [
+ "a",
+ "aes",
+ "crc",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "neon",
+ "perfmon",
+ "sha2"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a35": {
+ "backend": "simd_neon",
+ "features": [
+ "a",
+ "aes",
+ "crc",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "neon",
+ "perfmon",
+ "sha2"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a510": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "am",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "ete",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-fixed-over-scalable-if-equal-cost",
+ "use-postra-scheduler",
+ "use-wzr-to-vec-move",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a520": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "am",
+ "amvs",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "ete",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mec",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "rme",
+ "sb",
+ "sel2",
+ "spe-eef",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-fixed-over-scalable-if-equal-cost",
+ "use-postra-scheduler",
+ "use-wzr-to-vec-move",
+ "vh",
+ "wfxt",
+ "xs"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a520ae": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "am",
+ "amvs",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "ete",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mec",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "rme",
+ "sb",
+ "sel2",
+ "spe-eef",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-postra-scheduler",
+ "use-wzr-to-vec-move",
+ "vh",
+ "wfxt",
+ "xs"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a53": {
+ "backend": "simd_neon",
+ "features": [
+ "a",
+ "aes",
+ "balance-fp-ops",
+ "crc",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "neon",
+ "perfmon",
+ "sha2",
+ "use-postra-scheduler",
+ "use-wzr-to-vec-move"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a55": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "ccpp",
+ "crc",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "fullfp16",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "lor",
+ "lse",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "perfmon",
+ "ras",
+ "rcpc",
+ "rdm",
+ "sha2",
+ "uaops",
+ "use-postra-scheduler",
+ "use-wzr-to-vec-move",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a57": {
+ "backend": "simd_neon",
+ "features": [
+ "a",
+ "addr-lsl-slow-14",
+ "aes",
+ "balance-fp-ops",
+ "crc",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "fp-armv8",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-literals",
+ "max-interleave-factor-4",
+ "neon",
+ "perfmon",
+ "predictable-select-expensive",
+ "sha2",
+ "use-postra-scheduler"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a65": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "ccpp",
+ "crc",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "fp-armv8",
+ "fullfp16",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-literals",
+ "lor",
+ "lse",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "perfmon",
+ "predictable-select-expensive",
+ "ras",
+ "rcpc",
+ "rdm",
+ "sha2",
+ "ssbs",
+ "uaops",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a65ae": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "ccpp",
+ "crc",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "fp-armv8",
+ "fullfp16",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-literals",
+ "lor",
+ "lse",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "perfmon",
+ "predictable-select-expensive",
+ "ras",
+ "rcpc",
+ "rdm",
+ "sha2",
+ "ssbs",
+ "uaops",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a710": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "cmp-bcc-fusion",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a715": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "cmp-bcc-fusion",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "spe",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a72": {
+ "backend": "simd_neon",
+ "features": [
+ "a",
+ "addr-lsl-slow-14",
+ "aes",
+ "crc",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "fp-armv8",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-literals",
+ "neon",
+ "perfmon",
+ "predictable-select-expensive",
+ "sha2"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a720": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "amvs",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "cmp-bcc-fusion",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mec",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "rme",
+ "sb",
+ "sel2",
+ "spe",
+ "spe-eef",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-postra-scheduler",
+ "vh",
+ "wfxt",
+ "xs"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a720ae": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "amvs",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "cmp-bcc-fusion",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mec",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "rme",
+ "sb",
+ "sel2",
+ "spe",
+ "spe-eef",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-postra-scheduler",
+ "vh",
+ "wfxt",
+ "xs"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a725": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "amvs",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "cmp-bcc-fusion",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mec",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "rme",
+ "sb",
+ "sel2",
+ "spe",
+ "spe-eef",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-postra-scheduler",
+ "vh",
+ "wfxt",
+ "xs"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a73": {
+ "backend": "simd_neon",
+ "features": [
+ "a",
+ "addr-lsl-slow-14",
+ "aes",
+ "crc",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "fp-armv8",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "neon",
+ "perfmon",
+ "predictable-select-expensive",
+ "sha2"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a75": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "addr-lsl-slow-14",
+ "aes",
+ "ccpp",
+ "crc",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "fp-armv8",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "lor",
+ "lse",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "perfmon",
+ "predictable-select-expensive",
+ "ras",
+ "rcpc",
+ "rdm",
+ "sha2",
+ "uaops",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a76": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "addr-lsl-slow-14",
+ "aes",
+ "alu-lsl-fast",
+ "ccpp",
+ "crc",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "fp-armv8",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "lor",
+ "lse",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "perfmon",
+ "predictable-select-expensive",
+ "ras",
+ "rcpc",
+ "rdm",
+ "sha2",
+ "ssbs",
+ "uaops",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a76ae": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "addr-lsl-slow-14",
+ "aes",
+ "alu-lsl-fast",
+ "ccpp",
+ "crc",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "fp-armv8",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "lor",
+ "lse",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "perfmon",
+ "predictable-select-expensive",
+ "ras",
+ "rcpc",
+ "rdm",
+ "sha2",
+ "ssbs",
+ "uaops",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a77": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "addr-lsl-slow-14",
+ "aes",
+ "alu-lsl-fast",
+ "ccpp",
+ "cmp-bcc-fusion",
+ "crc",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "fp-armv8",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "lor",
+ "lse",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "perfmon",
+ "predictable-select-expensive",
+ "ras",
+ "rcpc",
+ "rdm",
+ "sha2",
+ "ssbs",
+ "uaops",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a78": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "addr-lsl-slow-14",
+ "aes",
+ "alu-lsl-fast",
+ "ccpp",
+ "cmp-bcc-fusion",
+ "crc",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "fp-armv8",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "lor",
+ "lse",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "perfmon",
+ "predictable-select-expensive",
+ "ras",
+ "rcpc",
+ "rdm",
+ "sha2",
+ "spe",
+ "ssbs",
+ "uaops",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a78ae": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "addr-lsl-slow-14",
+ "aes",
+ "alu-lsl-fast",
+ "ccpp",
+ "cmp-bcc-fusion",
+ "crc",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "fp-armv8",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "lor",
+ "lse",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "perfmon",
+ "predictable-select-expensive",
+ "ras",
+ "rcpc",
+ "rdm",
+ "sha2",
+ "spe",
+ "ssbs",
+ "uaops",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-a78c": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "addr-lsl-slow-14",
+ "aes",
+ "alu-lsl-fast",
+ "ccpp",
+ "cmp-bcc-fusion",
+ "crc",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "flagm",
+ "fp-armv8",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "lor",
+ "lse",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "ras",
+ "rcpc",
+ "rdm",
+ "sha2",
+ "spe",
+ "ssbs",
+ "uaops",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-r82": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fullfp16",
+ "jsconv",
+ "lse",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "r",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "specrestrict",
+ "ssbs",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "use-postra-scheduler"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-r82ae": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fullfp16",
+ "jsconv",
+ "lse",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "r",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "specrestrict",
+ "ssbs",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "use-postra-scheduler"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-x1": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "addr-lsl-slow-14",
+ "aes",
+ "alu-lsl-fast",
+ "ccpp",
+ "cmp-bcc-fusion",
+ "crc",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "fp-armv8",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "lor",
+ "lse",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "perfmon",
+ "predictable-select-expensive",
+ "ras",
+ "rcpc",
+ "rdm",
+ "sha2",
+ "spe",
+ "ssbs",
+ "uaops",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-x1c": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "addr-lsl-slow-14",
+ "aes",
+ "alu-lsl-fast",
+ "ccpp",
+ "cmp-bcc-fusion",
+ "crc",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "flagm",
+ "fp-armv8",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "lor",
+ "lse",
+ "lse2",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sha2",
+ "spe",
+ "ssbs",
+ "uaops",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-x2": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "cmp-bcc-fusion",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-fixed-over-scalable-if-equal-cost",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-x3": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "avoid-ldapur",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "spe",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-fixed-over-scalable-if-equal-cost",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-x4": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "amvs",
+ "avoid-ldapur",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mec",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "rme",
+ "sb",
+ "sel2",
+ "spe",
+ "spe-eef",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-fixed-over-scalable-if-equal-cost",
+ "use-postra-scheduler",
+ "vh",
+ "wfxt",
+ "xs"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cortex-x925": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "amvs",
+ "avoid-ldapur",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mec",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "rme",
+ "sb",
+ "sel2",
+ "spe",
+ "spe-eef",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-fixed-over-scalable-if-equal-cost",
+ "use-postra-scheduler",
+ "vh",
+ "wfxt",
+ "xs"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "cyclone": {
+ "backend": "simd_neon",
+ "features": [
+ "a",
+ "aes",
+ "alternate-sextload-cvt-f32-pattern",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "disable-latency-sched-heuristic",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "fuse-aes",
+ "fuse-crypto-eor",
+ "neon",
+ "no-zcz-fpr64",
+ "perfmon",
+ "sha2",
+ "store-pair-suppress",
+ "zcm-fpr128",
+ "zcm-gpr64",
+ "zcz-fp-workaround",
+ "zcz-fpr128",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "exynos-m3": {
+ "backend": "simd_neon",
+ "features": [
+ "a",
+ "aes",
+ "alu-lsl-fast",
+ "crc",
+ "el2vmsa",
+ "el3",
+ "exynos-cheap-as-move",
+ "force-32bit-jump-tables",
+ "fp-armv8",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-literals",
+ "max-interleave-factor-4",
+ "neon",
+ "perfmon",
+ "predictable-select-expensive",
+ "sha2",
+ "store-pair-suppress",
+ "use-postra-scheduler"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "exynos-m4": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alu-lsl-fast",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "ccpp",
+ "crc",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "exynos-cheap-as-move",
+ "force-32bit-jump-tables",
+ "fp-armv8",
+ "fullfp16",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-arith-logic",
+ "fuse-csel",
+ "fuse-literals",
+ "lor",
+ "lse",
+ "max-interleave-factor-4",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "perfmon",
+ "ras",
+ "rdm",
+ "sha2",
+ "store-pair-suppress",
+ "uaops",
+ "use-postra-scheduler",
+ "vh",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "exynos-m5": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alu-lsl-fast",
+ "arith-bcc-fusion",
+ "arith-cbz-fusion",
+ "ccpp",
+ "crc",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "exynos-cheap-as-move",
+ "force-32bit-jump-tables",
+ "fp-armv8",
+ "fullfp16",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-arith-logic",
+ "fuse-csel",
+ "fuse-literals",
+ "lor",
+ "lse",
+ "max-interleave-factor-4",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "perfmon",
+ "ras",
+ "rdm",
+ "sha2",
+ "store-pair-suppress",
+ "uaops",
+ "use-postra-scheduler",
+ "vh",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "falkor": {
+ "backend": "simd_neon",
+ "features": [
+ "a",
+ "aes",
+ "alu-lsl-fast",
+ "crc",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "max-interleave-factor-4",
+ "neon",
+ "perfmon",
+ "predictable-select-expensive",
+ "rdm",
+ "sha2",
+ "slow-strqro-store",
+ "store-pair-suppress",
+ "use-postra-scheduler",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "fujitsu-monaka": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "altnzcv",
+ "am",
+ "amvs",
+ "arith-bcc-fusion",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "clrbhb",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "faminmax",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fp8",
+ "fp8dot2",
+ "fp8dot4",
+ "fp8fma",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "hbc",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "ls64",
+ "lse",
+ "lse2",
+ "lut",
+ "mec",
+ "mops",
+ "mpam",
+ "neon",
+ "nmi",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "rand",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "rme",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "sm4",
+ "spe-eef",
+ "specres2",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-aes",
+ "sve-bitperm",
+ "sve-sha3",
+ "sve-sm4",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-postra-scheduler",
+ "vh",
+ "wfxt",
+ "xs"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "gb10": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "amvs",
+ "avoid-ldapur",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mec",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "rme",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "sm4",
+ "spe",
+ "spe-eef",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-aes",
+ "sve-bitperm",
+ "sve-sha3",
+ "sve-sm4",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-fixed-over-scalable-if-equal-cost",
+ "use-postra-scheduler",
+ "vh",
+ "wfxt",
+ "xs"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "generic": {
+ "backend": "simd_neon",
+ "features": [
+ "enable-select-opt",
+ "ete",
+ "fp-armv8",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "neon",
+ "trbe",
+ "use-postra-scheduler"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "grace": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "avoid-ldapur",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "cmp-bcc-fusion",
+ "complxnum",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "dit",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "sm4",
+ "spe",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-aes",
+ "sve-bitperm",
+ "sve-sha3",
+ "sve-sm4",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-fixed-over-scalable-if-equal-cost",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "kryo": {
+ "backend": "simd_neon",
+ "features": [
+ "a",
+ "aes",
+ "alu-lsl-fast",
+ "crc",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "max-interleave-factor-4",
+ "neon",
+ "perfmon",
+ "predictable-select-expensive",
+ "sha2",
+ "store-pair-suppress",
+ "use-postra-scheduler",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "neoverse-512tvb": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alu-lsl-fast",
+ "am",
+ "bf16",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "rand",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sel2",
+ "sha2",
+ "sha3",
+ "sm4",
+ "spe",
+ "ssbs",
+ "sve",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "neoverse-e1": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "ccpp",
+ "crc",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "lor",
+ "lse",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "perfmon",
+ "ras",
+ "rcpc",
+ "rdm",
+ "sha2",
+ "ssbs",
+ "uaops",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "neoverse-n1": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "addr-lsl-slow-14",
+ "aes",
+ "alu-lsl-fast",
+ "ccpp",
+ "crc",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "fp-armv8",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "lor",
+ "lse",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "perfmon",
+ "predictable-select-expensive",
+ "ras",
+ "rcpc",
+ "rdm",
+ "sha2",
+ "spe",
+ "ssbs",
+ "uaops",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "neoverse-n2": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-maximize-scalable-bandwidth",
+ "dit",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "neoverse-n3": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "amvs",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mec",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "rand",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "rme",
+ "sb",
+ "sel2",
+ "spe",
+ "spe-eef",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-postra-scheduler",
+ "vh",
+ "wfxt",
+ "xs"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "neoverse-v1": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "addr-lsl-slow-14",
+ "aes",
+ "alu-lsl-fast",
+ "am",
+ "bf16",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "disable-maximize-scalable-bandwidth",
+ "dit",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "mpam",
+ "neon",
+ "no-sve-fp-ld1r",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "rand",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sel2",
+ "sha2",
+ "sha3",
+ "sm4",
+ "spe",
+ "ssbs",
+ "sve",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "neoverse-v2": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "avoid-ldapur",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "cmp-bcc-fusion",
+ "complxnum",
+ "crc",
+ "disable-latency-sched-heuristic",
+ "dit",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "rand",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "spe",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-fixed-over-scalable-if-equal-cost",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "neoverse-v3": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "amvs",
+ "avoid-ldapur",
+ "bf16",
+ "brbe",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "ls64",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mec",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "rand",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "rme",
+ "sb",
+ "sel2",
+ "spe",
+ "spe-eef",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-postra-scheduler",
+ "vh",
+ "wfxt",
+ "xs"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "neoverse-v3ae": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "amvs",
+ "avoid-ldapur",
+ "bf16",
+ "brbe",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-csel",
+ "fuse-cset",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "ls64",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mec",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "rand",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "rme",
+ "sb",
+ "sel2",
+ "spe",
+ "spe-eef",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-bitperm",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-postra-scheduler",
+ "vh",
+ "wfxt",
+ "xs"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "olympus": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "altnzcv",
+ "alu-lsl-fast",
+ "am",
+ "amvs",
+ "bf16",
+ "brbe",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "chk",
+ "cmp-bcc-fusion",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "ete",
+ "faminmax",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fp8",
+ "fp8dot2",
+ "fp8dot4",
+ "fp8fma",
+ "fpac",
+ "fptoint",
+ "fullfp16",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "hcx",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "ls64",
+ "lse",
+ "lse2",
+ "lut",
+ "max-interleave-factor-4",
+ "mec",
+ "mpam",
+ "mte",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "predres",
+ "rand",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "rme",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "sm4",
+ "spe",
+ "spe-eef",
+ "specrestrict",
+ "ssbs",
+ "sve",
+ "sve-aes",
+ "sve-bitperm",
+ "sve-sha3",
+ "sve-sm4",
+ "sve2",
+ "tlb-rmi",
+ "tracev8.4",
+ "trbe",
+ "uaops",
+ "use-fixed-over-scalable-if-equal-cost",
+ "use-postra-scheduler",
+ "vh",
+ "wfxt",
+ "xs"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "oryon-1": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "altnzcv",
+ "am",
+ "amvs",
+ "bf16",
+ "bti",
+ "ccdp",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "ecv",
+ "el2vmsa",
+ "el3",
+ "enable-select-opt",
+ "fgt",
+ "flagm",
+ "fp-armv8",
+ "fp16fml",
+ "fptoint",
+ "fullfp16",
+ "fuse-address",
+ "fuse-adrp-add",
+ "fuse-aes",
+ "fuse-crypto-eor",
+ "i8mm",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predres",
+ "rand",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sb",
+ "sel2",
+ "sha2",
+ "sha3",
+ "sm4",
+ "spe",
+ "specrestrict",
+ "ssbs",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "saphira": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "alu-lsl-fast",
+ "am",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "dit",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "flagm",
+ "fp-armv8",
+ "jsconv",
+ "lor",
+ "lse",
+ "lse2",
+ "max-interleave-factor-4",
+ "mpam",
+ "neon",
+ "nv",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "ras",
+ "rcpc",
+ "rcpc-immo",
+ "rdm",
+ "sel2",
+ "sha2",
+ "spe",
+ "store-pair-suppress",
+ "tlb-rmi",
+ "tracev8.4",
+ "uaops",
+ "use-postra-scheduler",
+ "vh",
+ "zcz-gpr32",
+ "zcz-gpr64"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "thunderx": {
+ "backend": "simd_neon",
+ "features": [
+ "a",
+ "aes",
+ "crc",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "neon",
+ "perfmon",
+ "predictable-select-expensive",
+ "sha2",
+ "store-pair-suppress",
+ "use-postra-scheduler"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "thunderx2t99": {
+ "backend": "simd_neon",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "aggressive-fma",
+ "arith-bcc-fusion",
+ "crc",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "lor",
+ "lse",
+ "max-interleave-factor-4",
+ "neon",
+ "pan",
+ "predictable-select-expensive",
+ "rdm",
+ "sha2",
+ "store-pair-suppress",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "thunderx3t110": {
+ "backend": "simd_neon",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "aggressive-fma",
+ "arith-bcc-fusion",
+ "balance-fp-ops",
+ "ccidx",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "jsconv",
+ "lor",
+ "lse",
+ "max-interleave-factor-4",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "pauth",
+ "perfmon",
+ "predictable-select-expensive",
+ "ras",
+ "rcpc",
+ "rdm",
+ "sha2",
+ "store-pair-suppress",
+ "strict-align",
+ "uaops",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "thunderxt81": {
+ "backend": "simd_neon",
+ "features": [
+ "a",
+ "aes",
+ "crc",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "neon",
+ "perfmon",
+ "predictable-select-expensive",
+ "sha2",
+ "store-pair-suppress",
+ "use-postra-scheduler"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "thunderxt83": {
+ "backend": "simd_neon",
+ "features": [
+ "a",
+ "aes",
+ "crc",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "neon",
+ "perfmon",
+ "predictable-select-expensive",
+ "sha2",
+ "store-pair-suppress",
+ "use-postra-scheduler"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "thunderxt88": {
+ "backend": "simd_neon",
+ "features": [
+ "a",
+ "aes",
+ "crc",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "neon",
+ "perfmon",
+ "predictable-select-expensive",
+ "sha2",
+ "store-pair-suppress",
+ "use-postra-scheduler"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ },
+ "tsv110": {
+ "backend": "simd_neon +dotprod",
+ "features": [
+ "CONTEXTIDREL2",
+ "a",
+ "aes",
+ "ccpp",
+ "complxnum",
+ "crc",
+ "dotprod",
+ "el2vmsa",
+ "el3",
+ "fp-armv8",
+ "fp16fml",
+ "fullfp16",
+ "fuse-aes",
+ "jsconv",
+ "lor",
+ "lse",
+ "neon",
+ "pan",
+ "pan-rwv",
+ "perfmon",
+ "ras",
+ "rdm",
+ "sha2",
+ "spe",
+ "store-pair-suppress",
+ "uaops",
+ "use-postra-scheduler",
+ "vh"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESE + AESMC"
+ ],
+ "clmul": [
+ "PMULL (64x64->128)"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "UMULL / UMULL2"
+ ],
+ "permute_var_u32": [
+ "TBL"
+ ],
+ "shift_var_u32": [
+ "USHL"
+ ]
+ }
+ }
+ },
+ "x86": {
+ "alderlake": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avxvnni",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "gfni",
+ "hreset",
+ "invpcid",
+ "kl",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "ptwrite",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "serialize",
+ "sha",
+ "shstk",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "vaes",
+ "vpclmulqdq",
+ "waitpkg",
+ "widekl",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "arrowlake": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avxifma",
+ "avxneconvert",
+ "avxvnni",
+ "avxvnniint8",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "cmpccxadd",
+ "crc32",
+ "cx16",
+ "cx8",
+ "enqcmd",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "gfni",
+ "hreset",
+ "invpcid",
+ "kl",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "ptwrite",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "serialize",
+ "sha",
+ "shstk",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "uintr",
+ "vaes",
+ "vpclmulqdq",
+ "waitpkg",
+ "widekl",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (VEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "arrowlake-s": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avxifma",
+ "avxneconvert",
+ "avxvnni",
+ "avxvnniint16",
+ "avxvnniint8",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "cmpccxadd",
+ "crc32",
+ "cx16",
+ "cx8",
+ "enqcmd",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "gfni",
+ "hreset",
+ "invpcid",
+ "kl",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "ptwrite",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "serialize",
+ "sha",
+ "sha512",
+ "shstk",
+ "sm3",
+ "sm4",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "uintr",
+ "vaes",
+ "vpclmulqdq",
+ "waitpkg",
+ "widekl",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (VEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "arrowlake_s": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avxifma",
+ "avxneconvert",
+ "avxvnni",
+ "avxvnniint16",
+ "avxvnniint8",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "cmpccxadd",
+ "crc32",
+ "cx16",
+ "cx8",
+ "enqcmd",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "gfni",
+ "hreset",
+ "invpcid",
+ "kl",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "ptwrite",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "serialize",
+ "sha",
+ "sha512",
+ "shstk",
+ "sm3",
+ "sm4",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "uintr",
+ "vaes",
+ "vpclmulqdq",
+ "waitpkg",
+ "widekl",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (VEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "atom": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "",
+ "64bit",
+ "cmov",
+ "cx16",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "movbe",
+ "nopl",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "ssse3",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "atom_sse4_2": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "rdrnd",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "atom_sse4_2_movbe": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "aes",
+ "clflushopt",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "fsgsbase",
+ "fxsr",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sha",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "bdver1": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "aes",
+ "avx",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "fma4",
+ "fxsr",
+ "lwp",
+ "lzcnt",
+ "mmx",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "sse4a",
+ "ssse3",
+ "x87",
+ "xop",
+ "xsave"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "bdver2": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "aes",
+ "avx",
+ "bmi",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "f16c",
+ "fma",
+ "fma4",
+ "fxsr",
+ "lwp",
+ "lzcnt",
+ "mmx",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "sse4a",
+ "ssse3",
+ "tbm",
+ "x87",
+ "xop",
+ "xsave"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "bdver3": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "aes",
+ "avx",
+ "bmi",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "f16c",
+ "fma",
+ "fma4",
+ "fsgsbase",
+ "fxsr",
+ "lwp",
+ "lzcnt",
+ "mmx",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "sse4a",
+ "ssse3",
+ "tbm",
+ "x87",
+ "xop",
+ "xsave",
+ "xsaveopt"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "bdver4": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "aes",
+ "avx",
+ "avx2",
+ "bmi",
+ "bmi2",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "f16c",
+ "fma",
+ "fma4",
+ "fsgsbase",
+ "fxsr",
+ "lwp",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "mwaitx",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "rdrnd",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "sse4a",
+ "ssse3",
+ "tbm",
+ "x87",
+ "xop",
+ "xsave",
+ "xsaveopt"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "bonnell": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "",
+ "64bit",
+ "cmov",
+ "cx16",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "movbe",
+ "nopl",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "ssse3",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "broadwell": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "adx",
+ "avx",
+ "avx2",
+ "bmi",
+ "bmi2",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsaveopt"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "btver2": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "aes",
+ "avx",
+ "bmi",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "f16c",
+ "fxsr",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "sse4a",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsaveopt"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "cannonlake": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512ifma",
+ "avx512vbmi",
+ "avx512vl",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sha",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (EVEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "cascadelake": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512vl",
+ "avx512vnni",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "clearwaterforest": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avxifma",
+ "avxneconvert",
+ "avxvnni",
+ "avxvnniint16",
+ "avxvnniint8",
+ "bmi",
+ "bmi2",
+ "cldemote",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "cmpccxadd",
+ "crc32",
+ "cx16",
+ "cx8",
+ "enqcmd",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "gfni",
+ "hreset",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "prefetchi",
+ "prfchw",
+ "ptwrite",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "serialize",
+ "sha",
+ "sha512",
+ "shstk",
+ "sm3",
+ "sm4",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "uintr",
+ "usermsr",
+ "vaes",
+ "vpclmulqdq",
+ "waitpkg",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (VEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "cooperlake": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avx512bf16",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512vl",
+ "avx512vnni",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "core-avx-i": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "avx",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "f16c",
+ "fsgsbase",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "rdrnd",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsaveopt"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "core-avx2": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "avx",
+ "avx2",
+ "bmi",
+ "bmi2",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "rdrnd",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsaveopt"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "core2": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "cmov",
+ "cx16",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "ssse3",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "core_2_duo_sse4_1": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "cmov",
+ "cx16",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "ssse3",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "core_2_duo_ssse3": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "cmov",
+ "cx16",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "ssse3",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "core_2nd_gen_avx": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "avx",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsaveopt"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "core_3rd_gen_avx": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "avx",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "f16c",
+ "fsgsbase",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "rdrnd",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsaveopt"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "core_4th_gen_avx": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "avx",
+ "avx2",
+ "bmi",
+ "bmi2",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "rdrnd",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsaveopt"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "core_4th_gen_avx_tsx": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "avx",
+ "avx2",
+ "bmi",
+ "bmi2",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "rdrnd",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsaveopt"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "core_5th_gen_avx": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "adx",
+ "avx",
+ "avx2",
+ "bmi",
+ "bmi2",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsaveopt"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "core_5th_gen_avx_tsx": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "adx",
+ "avx",
+ "avx2",
+ "bmi",
+ "bmi2",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsaveopt"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "core_aes_pclmulqdq": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "core_i7_sse4_2": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "popcnt",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "corei7": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "popcnt",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "corei7-avx": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "avx",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsaveopt"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "diamondrapids": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "amx-avx512",
+ "amx-bf16",
+ "amx-complex",
+ "amx-fp16",
+ "amx-fp8",
+ "amx-int8",
+ "amx-movrs",
+ "amx-tf32",
+ "amx-tile",
+ "avx",
+ "avx10.1",
+ "avx10.2",
+ "avx2",
+ "avx512bf16",
+ "avx512bitalg",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512fp16",
+ "avx512ifma",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "avx512vl",
+ "avx512vnni",
+ "avx512vpopcntdq",
+ "avxifma",
+ "avxneconvert",
+ "avxvnni",
+ "avxvnniint16",
+ "avxvnniint8",
+ "bmi",
+ "bmi2",
+ "ccmp",
+ "cldemote",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "cmpccxadd",
+ "crc32",
+ "cx16",
+ "cx8",
+ "egpr",
+ "enqcmd",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fsrm",
+ "fxsr",
+ "gfni",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "movrs",
+ "ndd",
+ "nf",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "ppx",
+ "prefetchi",
+ "prfchw",
+ "ptwrite",
+ "push2pop2",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "serialize",
+ "sha",
+ "sha512",
+ "shstk",
+ "sm3",
+ "sm4",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "tsxldtrk",
+ "uintr",
+ "vaes",
+ "vpclmulqdq",
+ "waitpkg",
+ "wbnoinvd",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves",
+ "zu"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC",
+ "VAESENC (zmm)"
+ ],
+ "clmul": [
+ "PCLMULQDQ",
+ "VPCLMULQDQ (zmm)"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (EVEX)",
+ "VPMADD52LUQ/HUQ (VEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "emeraldrapids": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "amx-bf16",
+ "amx-int8",
+ "amx-tile",
+ "avx",
+ "avx2",
+ "avx512bf16",
+ "avx512bitalg",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512fp16",
+ "avx512ifma",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "avx512vl",
+ "avx512vnni",
+ "avx512vpopcntdq",
+ "avxvnni",
+ "bmi",
+ "bmi2",
+ "cldemote",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "enqcmd",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fsrm",
+ "fxsr",
+ "gfni",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "ptwrite",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "serialize",
+ "sha",
+ "shstk",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "tsxldtrk",
+ "uintr",
+ "vaes",
+ "vpclmulqdq",
+ "waitpkg",
+ "wbnoinvd",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC",
+ "VAESENC (zmm)"
+ ],
+ "clmul": [
+ "PCLMULQDQ",
+ "VPCLMULQDQ (zmm)"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (EVEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "generic": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "cx8",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "goldmont": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "aes",
+ "clflushopt",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "fsgsbase",
+ "fxsr",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sha",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "goldmont-plus": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "aes",
+ "clflushopt",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "fsgsbase",
+ "fxsr",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "ptwrite",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sha",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "goldmont_plus": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "aes",
+ "clflushopt",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "fsgsbase",
+ "fxsr",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "ptwrite",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sha",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "gracemont": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avxvnni",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "gfni",
+ "hreset",
+ "invpcid",
+ "kl",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "ptwrite",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "serialize",
+ "sha",
+ "shstk",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "vaes",
+ "vpclmulqdq",
+ "waitpkg",
+ "widekl",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "grandridge": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avxifma",
+ "avxneconvert",
+ "avxvnni",
+ "avxvnniint8",
+ "bmi",
+ "bmi2",
+ "cldemote",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "cmpccxadd",
+ "crc32",
+ "cx16",
+ "cx8",
+ "enqcmd",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "gfni",
+ "hreset",
+ "invpcid",
+ "kl",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "ptwrite",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "serialize",
+ "sha",
+ "shstk",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "uintr",
+ "vaes",
+ "vpclmulqdq",
+ "waitpkg",
+ "widekl",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (VEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "graniterapids": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "amx-bf16",
+ "amx-fp16",
+ "amx-int8",
+ "amx-tile",
+ "avx",
+ "avx2",
+ "avx512bf16",
+ "avx512bitalg",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512fp16",
+ "avx512ifma",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "avx512vl",
+ "avx512vnni",
+ "avx512vpopcntdq",
+ "avxvnni",
+ "bmi",
+ "bmi2",
+ "cldemote",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "enqcmd",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fsrm",
+ "fxsr",
+ "gfni",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "prefetchi",
+ "prfchw",
+ "ptwrite",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "serialize",
+ "sha",
+ "shstk",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "tsxldtrk",
+ "uintr",
+ "vaes",
+ "vpclmulqdq",
+ "waitpkg",
+ "wbnoinvd",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC",
+ "VAESENC (zmm)"
+ ],
+ "clmul": [
+ "PCLMULQDQ",
+ "VPCLMULQDQ (zmm)"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (EVEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "graniterapids-d": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "amx-bf16",
+ "amx-complex",
+ "amx-fp16",
+ "amx-int8",
+ "amx-tile",
+ "avx",
+ "avx2",
+ "avx512bf16",
+ "avx512bitalg",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512fp16",
+ "avx512ifma",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "avx512vl",
+ "avx512vnni",
+ "avx512vpopcntdq",
+ "avxvnni",
+ "bmi",
+ "bmi2",
+ "cldemote",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "enqcmd",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fsrm",
+ "fxsr",
+ "gfni",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "prefetchi",
+ "prfchw",
+ "ptwrite",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "serialize",
+ "sha",
+ "shstk",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "tsxldtrk",
+ "uintr",
+ "vaes",
+ "vpclmulqdq",
+ "waitpkg",
+ "wbnoinvd",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC",
+ "VAESENC (zmm)"
+ ],
+ "clmul": [
+ "PCLMULQDQ",
+ "VPCLMULQDQ (zmm)"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (EVEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "graniterapids_d": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "amx-bf16",
+ "amx-complex",
+ "amx-fp16",
+ "amx-int8",
+ "amx-tile",
+ "avx",
+ "avx2",
+ "avx512bf16",
+ "avx512bitalg",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512fp16",
+ "avx512ifma",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "avx512vl",
+ "avx512vnni",
+ "avx512vpopcntdq",
+ "avxvnni",
+ "bmi",
+ "bmi2",
+ "cldemote",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "enqcmd",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fsrm",
+ "fxsr",
+ "gfni",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "prefetchi",
+ "prfchw",
+ "ptwrite",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "serialize",
+ "sha",
+ "shstk",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "tsxldtrk",
+ "uintr",
+ "vaes",
+ "vpclmulqdq",
+ "waitpkg",
+ "wbnoinvd",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC",
+ "VAESENC (zmm)"
+ ],
+ "clmul": [
+ "PCLMULQDQ",
+ "VPCLMULQDQ (zmm)"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (EVEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "haswell": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "avx",
+ "avx2",
+ "bmi",
+ "bmi2",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "rdrnd",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsaveopt"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "icelake-client": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avx512bitalg",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512ifma",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "avx512vl",
+ "avx512vnni",
+ "avx512vpopcntdq",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fsrm",
+ "fxsr",
+ "gfni",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sha",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "vaes",
+ "vpclmulqdq",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC",
+ "VAESENC (zmm)"
+ ],
+ "clmul": [
+ "PCLMULQDQ",
+ "VPCLMULQDQ (zmm)"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (EVEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "icelake-server": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avx512bitalg",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512ifma",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "avx512vl",
+ "avx512vnni",
+ "avx512vpopcntdq",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fsrm",
+ "fxsr",
+ "gfni",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sha",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "vaes",
+ "vpclmulqdq",
+ "wbnoinvd",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC",
+ "VAESENC (zmm)"
+ ],
+ "clmul": [
+ "PCLMULQDQ",
+ "VPCLMULQDQ (zmm)"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (EVEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "icelake_client": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avx512bitalg",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512ifma",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "avx512vl",
+ "avx512vnni",
+ "avx512vpopcntdq",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fsrm",
+ "fxsr",
+ "gfni",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sha",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "vaes",
+ "vpclmulqdq",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC",
+ "VAESENC (zmm)"
+ ],
+ "clmul": [
+ "PCLMULQDQ",
+ "VPCLMULQDQ (zmm)"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (EVEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "icelake_server": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avx512bitalg",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512ifma",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "avx512vl",
+ "avx512vnni",
+ "avx512vpopcntdq",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fsrm",
+ "fxsr",
+ "gfni",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sha",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "vaes",
+ "vpclmulqdq",
+ "wbnoinvd",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC",
+ "VAESENC (zmm)"
+ ],
+ "clmul": [
+ "PCLMULQDQ",
+ "VPCLMULQDQ (zmm)"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (EVEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "ivybridge": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "avx",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "f16c",
+ "fsgsbase",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "rdrnd",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsaveopt"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "knl": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avx512cd",
+ "avx512f",
+ "bmi",
+ "bmi2",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsaveopt"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "knm": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avx512cd",
+ "avx512f",
+ "avx512vpopcntdq",
+ "bmi",
+ "bmi2",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsaveopt"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "lunarlake": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avxifma",
+ "avxneconvert",
+ "avxvnni",
+ "avxvnniint16",
+ "avxvnniint8",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "cmpccxadd",
+ "crc32",
+ "cx16",
+ "cx8",
+ "enqcmd",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "gfni",
+ "hreset",
+ "invpcid",
+ "kl",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "ptwrite",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "serialize",
+ "sha",
+ "sha512",
+ "shstk",
+ "sm3",
+ "sm4",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "uintr",
+ "vaes",
+ "vpclmulqdq",
+ "waitpkg",
+ "widekl",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (VEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "meteorlake": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avxvnni",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "gfni",
+ "hreset",
+ "invpcid",
+ "kl",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "ptwrite",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "serialize",
+ "sha",
+ "shstk",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "vaes",
+ "vpclmulqdq",
+ "waitpkg",
+ "widekl",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "mic_avx512": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avx512cd",
+ "avx512f",
+ "bmi",
+ "bmi2",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsaveopt"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "nehalem": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "popcnt",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "nocona": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "cmov",
+ "cx16",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "sse",
+ "sse2",
+ "sse3",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "novalake": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx10.1",
+ "avx10.2",
+ "avx2",
+ "avx512bf16",
+ "avx512bitalg",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512fp16",
+ "avx512ifma",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "avx512vl",
+ "avx512vnni",
+ "avx512vpopcntdq",
+ "avxifma",
+ "avxneconvert",
+ "avxvnni",
+ "avxvnniint16",
+ "avxvnniint8",
+ "bmi",
+ "bmi2",
+ "ccmp",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "cmpccxadd",
+ "crc32",
+ "cx16",
+ "cx8",
+ "egpr",
+ "enqcmd",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "gfni",
+ "hreset",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "movrs",
+ "ndd",
+ "nf",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "ppx",
+ "prefetchi",
+ "prfchw",
+ "ptwrite",
+ "push2pop2",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "serialize",
+ "sha",
+ "sha512",
+ "shstk",
+ "sm3",
+ "sm4",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "uintr",
+ "vaes",
+ "vpclmulqdq",
+ "waitpkg",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves",
+ "zu"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC",
+ "VAESENC (zmm)"
+ ],
+ "clmul": [
+ "PCLMULQDQ",
+ "VPCLMULQDQ (zmm)"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (EVEX)",
+ "VPMADD52LUQ/HUQ (VEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "pantherlake": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avxifma",
+ "avxneconvert",
+ "avxvnni",
+ "avxvnniint16",
+ "avxvnniint8",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "cmpccxadd",
+ "crc32",
+ "cx16",
+ "cx8",
+ "enqcmd",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "gfni",
+ "hreset",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "ptwrite",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "serialize",
+ "sha",
+ "sha512",
+ "shstk",
+ "sm3",
+ "sm4",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "uintr",
+ "vaes",
+ "vpclmulqdq",
+ "waitpkg",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (VEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "penryn": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "cmov",
+ "cx16",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "ssse3",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "pentium-m": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "cmov",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "sse",
+ "sse2",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "pentium4": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "cmov",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "sse",
+ "sse2",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "pentium4m": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "cmov",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "sse",
+ "sse2",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "pentium_4": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "cmov",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "sse",
+ "sse2",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "pentium_4_sse3": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "cmov",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "sse",
+ "sse2",
+ "sse3",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "pentium_m": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "cmov",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "sse",
+ "sse2",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "prescott": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "cmov",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "sse",
+ "sse2",
+ "sse3",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "raptorlake": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avxvnni",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "gfni",
+ "hreset",
+ "invpcid",
+ "kl",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "ptwrite",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "serialize",
+ "sha",
+ "shstk",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "vaes",
+ "vpclmulqdq",
+ "waitpkg",
+ "widekl",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "rocketlake": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avx512bitalg",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512ifma",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "avx512vl",
+ "avx512vnni",
+ "avx512vpopcntdq",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fsrm",
+ "fxsr",
+ "gfni",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sha",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "vaes",
+ "vpclmulqdq",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC",
+ "VAESENC (zmm)"
+ ],
+ "clmul": [
+ "PCLMULQDQ",
+ "VPCLMULQDQ (zmm)"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (EVEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "sandybridge": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "avx",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsaveopt"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "sapphirerapids": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "amx-bf16",
+ "amx-int8",
+ "amx-tile",
+ "avx",
+ "avx2",
+ "avx512bf16",
+ "avx512bitalg",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512fp16",
+ "avx512ifma",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "avx512vl",
+ "avx512vnni",
+ "avx512vpopcntdq",
+ "avxvnni",
+ "bmi",
+ "bmi2",
+ "cldemote",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "enqcmd",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fsrm",
+ "fxsr",
+ "gfni",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "ptwrite",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "serialize",
+ "sha",
+ "shstk",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "tsxldtrk",
+ "uintr",
+ "vaes",
+ "vpclmulqdq",
+ "waitpkg",
+ "wbnoinvd",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC",
+ "VAESENC (zmm)"
+ ],
+ "clmul": [
+ "PCLMULQDQ",
+ "VPCLMULQDQ (zmm)"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (EVEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "sierraforest": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avxifma",
+ "avxneconvert",
+ "avxvnni",
+ "avxvnniint8",
+ "bmi",
+ "bmi2",
+ "cldemote",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "cmpccxadd",
+ "crc32",
+ "cx16",
+ "cx8",
+ "enqcmd",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "gfni",
+ "hreset",
+ "invpcid",
+ "kl",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "ptwrite",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "serialize",
+ "sha",
+ "shstk",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "uintr",
+ "vaes",
+ "vpclmulqdq",
+ "waitpkg",
+ "widekl",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (VEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "silvermont": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "rdrnd",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "skx": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512vl",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "skylake": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "skylake-avx512": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512vl",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "skylake_avx512": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512vl",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "slm": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "rdrnd",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "tigerlake": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avx512bitalg",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512ifma",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "avx512vl",
+ "avx512vnni",
+ "avx512vp2intersect",
+ "avx512vpopcntdq",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "ermsb",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fsrm",
+ "fxsr",
+ "gfni",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "nopl",
+ "pclmul",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sha",
+ "shstk",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "vaes",
+ "vpclmulqdq",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC",
+ "VAESENC (zmm)"
+ ],
+ "clmul": [
+ "PCLMULQDQ",
+ "VPCLMULQDQ (zmm)"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (EVEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "tremont": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "aes",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "fsgsbase",
+ "fxsr",
+ "gfni",
+ "mmx",
+ "movbe",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "ptwrite",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sha",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "westmere": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "wildcatlake": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avxifma",
+ "avxneconvert",
+ "avxvnni",
+ "avxvnniint16",
+ "avxvnniint8",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "cmov",
+ "cmpccxadd",
+ "crc32",
+ "cx16",
+ "cx8",
+ "enqcmd",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "gfni",
+ "hreset",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "nopl",
+ "pclmul",
+ "pconfig",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "ptwrite",
+ "rdpid",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "serialize",
+ "sha",
+ "sha512",
+ "shstk",
+ "sm3",
+ "sm4",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "uintr",
+ "vaes",
+ "vpclmulqdq",
+ "waitpkg",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (VEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "x86-64": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "cmov",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "sse",
+ "sse2",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "x86-64-v2": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "64bit",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "popcnt",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "x86-64-v3": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "avx",
+ "avx2",
+ "bmi",
+ "bmi2",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "f16c",
+ "fma",
+ "fxsr",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "popcnt",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "x86-64-v4": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "avx",
+ "avx2",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512vl",
+ "bmi",
+ "bmi2",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "f16c",
+ "fma",
+ "fxsr",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "nopl",
+ "popcnt",
+ "sahf",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "ssse3",
+ "x87",
+ "xsave"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "yonah": {
+ "backend": "simd_avx2 (no avx2: array polyfill)",
+ "features": [
+ "cmov",
+ "cx8",
+ "fxsr",
+ "mmx",
+ "nopl",
+ "sse",
+ "sse2",
+ "sse3",
+ "x87"
+ ],
+ "primitives": {
+ "aes_round": [],
+ "clmul": [],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)"
+ ],
+ "permute_var_u32": [],
+ "shift_var_u32": []
+ }
+ },
+ "znver1": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clzero",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "mwaitx",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sha",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "sse4a",
+ "ssse3",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "znver2": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "clzero",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fxsr",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "mwaitx",
+ "nopl",
+ "pclmul",
+ "popcnt",
+ "prfchw",
+ "rdpid",
+ "rdpru",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sha",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "sse4a",
+ "ssse3",
+ "wbnoinvd",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "znver3": {
+ "backend": "simd_avx2",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "clzero",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fsrm",
+ "fxsr",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "mwaitx",
+ "nopl",
+ "pclmul",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "rdpid",
+ "rdpru",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sha",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "sse4a",
+ "ssse3",
+ "vaes",
+ "vpclmulqdq",
+ "wbnoinvd",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC"
+ ],
+ "clmul": [
+ "PCLMULQDQ"
+ ],
+ "ifma52": [],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "znver4": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avx512bf16",
+ "avx512bitalg",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512ifma",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "avx512vl",
+ "avx512vnni",
+ "avx512vpopcntdq",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "clzero",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fsrm",
+ "fxsr",
+ "gfni",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "mwaitx",
+ "nopl",
+ "pclmul",
+ "pku",
+ "popcnt",
+ "prfchw",
+ "rdpid",
+ "rdpru",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sha",
+ "shstk",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "sse4a",
+ "ssse3",
+ "vaes",
+ "vpclmulqdq",
+ "wbnoinvd",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC",
+ "VAESENC (zmm)"
+ ],
+ "clmul": [
+ "PCLMULQDQ",
+ "VPCLMULQDQ (zmm)"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (EVEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ },
+ "znver5": {
+ "backend": "simd_avx512",
+ "features": [
+ "64bit",
+ "adx",
+ "aes",
+ "avx",
+ "avx2",
+ "avx512bf16",
+ "avx512bitalg",
+ "avx512bw",
+ "avx512cd",
+ "avx512dq",
+ "avx512f",
+ "avx512ifma",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "avx512vl",
+ "avx512vnni",
+ "avx512vp2intersect",
+ "avx512vpopcntdq",
+ "avxvnni",
+ "bmi",
+ "bmi2",
+ "clflushopt",
+ "clwb",
+ "clzero",
+ "cmov",
+ "crc32",
+ "cx16",
+ "cx8",
+ "f16c",
+ "fma",
+ "fsgsbase",
+ "fsrm",
+ "fxsr",
+ "gfni",
+ "invpcid",
+ "lzcnt",
+ "mmx",
+ "movbe",
+ "movdir64b",
+ "movdiri",
+ "mwaitx",
+ "nopl",
+ "pclmul",
+ "pku",
+ "popcnt",
+ "prefetchi",
+ "prfchw",
+ "rdpid",
+ "rdpru",
+ "rdrnd",
+ "rdseed",
+ "sahf",
+ "sha",
+ "shstk",
+ "sse",
+ "sse2",
+ "sse3",
+ "sse4.1",
+ "sse4.2",
+ "sse4a",
+ "ssse3",
+ "vaes",
+ "vpclmulqdq",
+ "wbnoinvd",
+ "x87",
+ "xsave",
+ "xsavec",
+ "xsaveopt",
+ "xsaves"
+ ],
+ "primitives": {
+ "aes_round": [
+ "AESENC",
+ "VAESENC (zmm)"
+ ],
+ "clmul": [
+ "PCLMULQDQ",
+ "VPCLMULQDQ (zmm)"
+ ],
+ "ifma52": [
+ "VPMADD52LUQ/HUQ (EVEX)"
+ ],
+ "mul_lo32": [
+ "PMULUDQ (xmm, SSE2)",
+ "VPMULUDQ (ymm, AVX2)",
+ "VPMULUDQ (zmm, AVX-512F)"
+ ],
+ "permute_var_u32": [
+ "VPERMD"
+ ],
+ "shift_var_u32": [
+ "VPSLLVD / VPSRLVD"
+ ]
+ }
+ }
+ }
+ },
+ "llvm_tag": "llvmorg-22.1.8"
+}