Skip to content

Make sure intrinsics for all architectures appear in rustdoc #1055

Open
@Amanieu

Description

@Amanieu

Conceptually this is quite simple, wherever there is a cfg that checks for a particular target_arch, we also need to enable it if doc is true. We then need to tell rustdoc that the intrinsic is only available on a particular architecture with #[cfg(doc(target_arch = "..."))].

Basically we turn this:

#[cfg(target_arch = "arm")]

Into this:

#[cfg(any(target_arch = "arm", doc))]
#[doc(cfg(target_arch = "arm"))]

A quick search shows the following uses of target_arch that need to be fixed:

crates/core_arch/src/acle/hints.rs:
   12: #[cfg(any(target_feature = "v6", target_arch = "aarch64"))]
   25: #[cfg(any(target_feature = "v6", target_arch = "aarch64"))]
   37: #[cfg(any(target_feature = "v6", target_arch = "aarch64"))]
   65: #[cfg(any(target_feature = "v6", target_arch = "aarch64"))]

crates/core_arch/src/acle/mod.rs:
  94: #[cfg(all(not(target_arch = "aarch64"), target_feature = "v6",))]
  97: #[cfg(all(not(target_arch = "aarch64"), target_feature = "v6",))]

crates/core_arch/src/acle/barrier/mod.rs:
  59: #[cfg(any(target_arch = "aarch64", target_feature = "v7",))]
  62: #[cfg(any(target_arch = "aarch64", target_feature = "v7",))]
  65: #[cfg(target_arch = "aarch64")]
  68: #[cfg(target_arch = "aarch64")]

crates/core_arch/src/acle/registers/mod.rs:
   61: #[cfg(not(target_arch = "aarch64"))]
   64: #[cfg(not(target_arch = "aarch64"))]
   77: #[cfg(target_arch = "aarch64")]
  105: #[cfg(target_arch = "aarch64")]

crates/core_arch/src/arm/mod.rs:
  17: #[cfg(any(target_arch = "aarch64", target_feature = "v7"))]
  19: #[cfg(any(target_arch = "aarch64", target_feature = "v7"))]
  22: #[cfg(any(target_arch = "aarch64", target_feature = "v7", doc))]
  24: #[cfg(any(target_arch = "aarch64", target_feature = "v7", doc))]
  27: #[cfg(any(target_arch = "aarch64", target_feature = "v7"))]
  29: #[cfg(any(target_arch = "aarch64", target_feature = "v7"))]
  32: #[cfg(any(target_arch = "aarch64", target_feature = "v7"))]
  34: #[cfg(any(target_arch = "aarch64", target_feature = "v7"))]
  43: #[cfg(target_arch = "arm")]
  51: #[cfg(any(target_arch = "aarch64", target_feature = "v7"))]

crates/core_arch/src/arm/neon/load_tests.rs:
    7: #[cfg(target_arch = "arm")]
   10: #[cfg(target_arch = "aarch64")]
  192: #[cfg(target_arch = "aarch64")]
  201: #[cfg(target_arch = "aarch64")]

crates/core_arch/src/arm/neon/mod.rs:
     8: #[cfg(target_arch = "arm")]
   297: #[cfg(target_arch = "arm")]
   392: #[cfg(target_arch = "arm")]
   401: #[cfg(target_arch = "arm")]
   410: #[cfg(target_arch = "arm")]
   419: #[cfg(target_arch = "arm")]
   428: #[cfg(target_arch = "arm")]
   437: #[cfg(target_arch = "arm")]
   446: #[cfg(target_arch = "arm")]
   455: #[cfg(target_arch = "arm")]
   464: #[cfg(target_arch = "arm")]
   473: #[cfg(target_arch = "arm")]
   482: #[cfg(target_arch = "arm")]
   491: #[cfg(target_arch = "arm")]
   500: #[cfg(target_arch = "arm")]
   509: #[cfg(target_arch = "arm")]
   518: #[cfg(target_arch = "arm")]
   527: #[cfg(target_arch = "arm")]
   536: #[cfg(target_arch = "arm")]
   545: #[cfg(target_arch = "arm")]
   554: #[cfg(target_arch = "arm")]
   563: #[cfg(target_arch = "arm")]
   572: #[cfg(target_arch = "arm")]
   581: #[cfg(target_arch = "arm")]
  3039: #[cfg(target_arch = "arm")]
  3049: #[cfg(target_arch = "arm")]
  3059: #[cfg(target_arch = "arm")]
  3069: #[cfg(target_arch = "arm")]
  3079: #[cfg(target_arch = "arm")]
  3089: #[cfg(target_arch = "arm")]
  3099: #[cfg(target_arch = "arm")]
  3109: #[cfg(target_arch = "arm")]
  3124: #[cfg(target_arch = "arm")]
  3139: #[cfg(target_arch = "arm")]
  3149: #[cfg(target_arch = "arm")]
  3165: #[cfg(target_arch = "arm")]
  3181: #[cfg(target_arch = "arm")]
  3191: #[cfg(target_arch = "arm")]
  3201: #[cfg(target_arch = "arm")]
  3211: #[cfg(target_arch = "arm")]
  3221: #[cfg(target_arch = "arm")]
  3236: #[cfg(target_arch = "arm")]
  3251: #[cfg(target_arch = "arm")]
  3261: #[cfg(target_arch = "arm")]
  3277: #[cfg(target_arch = "arm")]
  3293: #[cfg(target_arch = "arm")]
  3303: #[cfg(target_arch = "arm")]
  3320: #[cfg(target_arch = "arm")]
  3783: #[cfg(target_arch = "arm")]
  3793: #[cfg(target_arch = "arm")]
  3858: #[cfg(target_arch = "arm")]
  3869: #[cfg(target_arch = "arm")]
  3884: #[cfg(target_arch = "arm")]
  3895: #[cfg(target_arch = "arm")]
  3906: #[cfg(target_arch = "arm")]
  3916: #[cfg(target_arch = "arm")]
  3926: #[cfg(target_arch = "arm")]
  3936: #[cfg(target_arch = "arm")]
  3946: #[cfg(target_arch = "arm")]
  3961: #[cfg(target_arch = "arm")]
  3976: #[cfg(target_arch = "arm")]
  3991: #[cfg(target_arch = "arm")]
  4006: #[cfg(target_arch = "arm")]
  4016: #[cfg(target_arch = "arm")]
  4030: #[cfg(target_arch = "arm")]
  4044: #[cfg(target_arch = "arm")]
  4058: #[cfg(target_arch = "arm")]
  4073: #[cfg(target_arch = "arm")]
  4088: #[cfg(target_arch = "arm")]
  4103: #[cfg(target_arch = "arm")]
  4119: #[cfg(target_arch = "arm")]
  4130: #[cfg(target_arch = "arm")]
  4145: #[cfg(target_arch = "arm")]
  4156: #[cfg(target_arch = "arm")]
  4167: #[cfg(target_arch = "arm")]
  4177: #[cfg(target_arch = "arm")]
  4187: #[cfg(target_arch = "arm")]
  4197: #[cfg(target_arch = "arm")]
  4207: #[cfg(target_arch = "arm")]
  4222: #[cfg(target_arch = "arm")]
  4237: #[cfg(target_arch = "arm")]
  4252: #[cfg(target_arch = "arm")]
  4267: #[cfg(target_arch = "arm")]
  4281: #[cfg(target_arch = "arm")]
  4295: #[cfg(target_arch = "arm")]
  4309: #[cfg(target_arch = "arm")]
  4323: #[cfg(target_arch = "arm")]
  4338: #[cfg(target_arch = "arm")]
  4353: #[cfg(target_arch = "arm")]
  4368: #[cfg(target_arch = "arm")]

crates/core_arch/src/x86/tbm.rs:
   84: #[cfg(not(target_arch = "x86"))] // generates lots of instructions
  107: #[cfg(not(target_arch = "x86"))] // generates lots of instructions
  130: #[cfg(not(target_arch = "x86"))] // generates lots of instructions
  155: #[cfg(not(target_arch = "x86"))] // generates lots of instructions
  178: #[cfg(not(target_arch = "x86"))] // generates lots of instructions
  201: #[cfg(not(target_arch = "x86"))] // generates lots of instructions
  224: #[cfg(not(target_arch = "x86"))] // generates lots of instructions
  249: #[cfg(not(target_arch = "x86"))] // generates lots of instructions
  274: #[cfg(not(target_arch = "x86"))] // generates lots of instructions

crates/core_arch/src/x86_64/bmi.rs:
  22: #[cfg(not(target_arch = "x86"))]
  38: #[cfg(not(target_arch = "x86"))]
  61: #[cfg(not(target_arch = "x86"))] // generates lots of instructions
  73: #[cfg(not(target_arch = "x86"))] // generates lots of instructions
  87: #[cfg(not(target_arch = "x86"))] // generates lots of instructions

crates/core_arch/src/x86_64/bmi2.rs:
  25: #[cfg(not(target_arch = "x86"))] // calls an intrinsic
  39: #[cfg(not(target_arch = "x86"))]
  52: #[cfg(not(target_arch = "x86"))]
  65: #[cfg(not(target_arch = "x86"))]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions