21 Commits

Author SHA1 Message Date
Jacob Pratt
03aa3b8489
Rollup merge of #145415 - a4lg:riscv-implication-to-c, r=Amanieu
std_detect: RISC-V: implement implication to "C"

Just like we implemented relatively complex rules to imply other extensions **from** "C" (and some others), this commit implements implication **to** the "C" extension from others, complying the following text in the ISA Manual (although there's no direct imply/depend references).

> The C extension is the superset of the following extensions:
>
> - Zca
> - Zcf if F is specified (RV32 only)
> - Zcd if D is specified

This is formally verified so that no other extension combinations (*not* in this implementation) can (currently) imply the "C" extension.

Note: this is a `std_detect` change and not main target feature handling.
2025-08-21 01:12:18 -04:00
Jacob Pratt
84c5d20fe7
Rollup merge of #145619 - joshtriplett:use-the-right-core, r=tgross35
`std_detect`: Use `rustc-std-workspace-*` to pull in `compiler-builtins`

https://github.com/rust-lang/rust/pull/145489 changed `std_detect` to no
longer depend on `cfg-if`, which meant it no longer indirectly pulled in
`rustc-std-workspace-core` via `cfg-if`. That caused it to no longer
depend on `compiler-builtins`.

Change `std_detect` to use `rustc-std-workspace-core` and
`rustc-std-workspace-alloc`, to integrate with the rustc workspace. This
also pulls in `compiler-builtins` via `rustc-std-workspace-core`.

Closes: https://github.com/rust-lang/rust/issues/145594
2025-08-20 00:45:58 -04:00
Jacob Pratt
b0600b2326
Rollup merge of #145531 - sayantn:detect-apxf-avx10, r=Amanieu
Add runtime detection for APX-F and AVX10

This was missed in rust-lang/rust#139534 and rust-lang/rust#139675

`@rustbot` label O-x86_64 O-x86_32 A-target-feature
r? `@Amanieu`
2025-08-20 00:45:57 -04:00
Jacob Pratt
9261fcf159
Rollup merge of #145417 - a4lg:riscv-arch-platform-guide-ch2, r=Amanieu
std_detect: RISC-V platform guide documentation

This is practically a revert of a revert, making the commit e907456b2e10622ccd854a3bba8d02ce170b5dbb on `stdarch` come around again with minor fixes, enhancements and adjustments.

An excerpt from the original commit message follows:

Since there's no architectural feature detection on RISC-V (unlike `CPUID` on x86 architectures and some system registers on Arm/AArch64), runtime feature detection entirely depends on the platform-specific facility.

As a result, availability of each feature heavily depends on the platform and its version.

To help users make a decision for feature checking on a RISC-V system, this commit adds a platform guide with minimum supported platform versions.
2025-08-20 00:45:57 -04:00
Josh Triplett
a971238175 std_detect: Use rustc-std-workspace-* to pull in compiler-builtins
https://github.com/rust-lang/rust/pull/145489 changed `std_detect` to no
longer depend on `cfg-if`, which meant it no longer indirectly pulled in
`rustc-std-workspace-core` via `cfg-if`. That caused it to no longer
depend on `compiler-builtins`.

Change `std_detect` to use `rustc-std-workspace-core` and
`rustc-std-workspace-alloc`, to integrate with the rustc workspace. This
also pulls in `compiler-builtins` via `rustc-std-workspace-core`.

Closes: https://github.com/rust-lang/rust/issues/145594
2025-08-19 11:17:35 -07:00
许杰友 Jieyou Xu (Joe)
bdd3bc82c8
Rollup merge of #145099 - heiher:loong-32s, r=folkertdev
rustc_target: Add the `32s` target feature for LoongArch

LLVM: https://github.com/llvm/llvm-project/pull/139695
2025-08-19 19:42:08 +08:00
Tsukasa OI
ee7627ee40 std_detect: RISC-V: implement implication to "C"
Just like we implemented relatively complex rules to imply other extensions
**from** "C" (and some others), this commit implements implication
**to** the "C" extension from others, complying the following text
in the ISA Manual (although there's no direct imply/depend references).

> The C extension is the superset of the following extensions:
>
> - Zca
> - Zcf if F is specified (RV32 only)
> - Zcd if D is specified

This is formally verified so that no other extension combinations
(*not* in this implementation) can (currently) imply the "C" extension.
2025-08-19 01:38:27 +00:00
sayantn
40fc7df963
Add runtime detection for APX-F and AVX10 2025-08-17 19:34:18 +05:30
Josh Triplett
1ae4a0cc34 library: Migrate from cfg_if to cfg_select
Migrate the standard library from using the external `cfg_if` crate to
using the now-built-in `cfg_select` macro.

This does not yet eliminate the dependency from
`library/std/Cargo.toml`, because while the standard library itself no
longer uses `cfg_if`, it also incorporates the `backtrace` crate, which
does.

Migration assisted by the following vim command (after selecting the
full `cfg_if!` invocation):

```
'<,'>s/\(cfg_if::\)\?cfg_if/cfg_select/ | '<,'>s/^\( *\)} else {/\1}\r\1_ => {/c | '<,'>s/^\( *\)} else if #\[cfg(\(.*\))\] /\1}\r\1\2 => /e | '<,'>s/if #\[cfg(\(.*\))\] {/\1 => {/e
```

This is imperfect, but substantially accelerated the process. This
prompts for confirmation on the `} else {` since that can also appear
inside one of the arms. This also requires manual intervention to handle
any multi-line conditions.
2025-08-16 05:28:31 -07:00
Tsukasa OI
bec399e5a0 std_detect: RISC-V platform guide documentation
This is practically a revert of a revert, making the
commit e907456b2e10622ccd854a3bba8d02ce170b5dbb on `stdarch` come around
again with minor fixes, enhancements and adjustments.

An excerpt from the original commit message follows:

Since there's no architectural feature detection on RISC-V (unlike `CPUID`
on x86 architectures and some system registers on Arm/AArch64), runtime
feature detection entirely depends on the platform-specific facility.

As a result, availability of each feature heavily depends on the platform
and its version.

To help users make a decision for feature checking on a RISC-V system, this
commit adds a platform guide with minimum supported platform versions.
2025-08-15 02:34:17 +00:00
WANG Rui
0246245420 rustc_target: Add the 32s target feature for LoongArch 2025-08-09 13:54:09 +08:00
Tsukasa OI
c51e5ce452 std_detect: Linux 6.16 support for RISC-V
It adds feature detection of 1 extension (new in std_detect).

New RISC-V Extension:

1.  "Zabha"
2025-07-31 07:39:10 +00:00
bjorn3
b481c5b8ba std_detect testing improvements
* Fix riscv testing. Previously the mod tests; would be looking for
  src/detect/os/tests.rs.
* Replace a test with an unnamed const item. It is testing that no
  warnings are emitted. It doesn't contain any checks that need to run
  at runtime. Replacing the test allows removing the tidy:skip directive
  for test locations.
2025-07-24 13:01:08 +00:00
Jakub Beránek
9a1179c4de
Embed auxv files directly into the test binary 2025-07-22 20:22:16 +02:00
Jakub Beránek
81d90d8257
Improve error messages of auxv loading 2025-07-22 20:22:16 +02:00
Jakub Beránek
5e52677a82
Remove licenses from std-detect
They are subsumed by the main repo licenses.
2025-07-22 20:22:16 +02:00
Jakub Beránek
ffa97a647e
Fix warning 2025-07-22 20:22:16 +02:00
Jakub Beránek
e07a1bbb79
Move tests around to appease tidy 2025-07-22 20:22:16 +02:00
Jakub Beránek
ee6f2c5276
Reformat std_detect 2025-07-22 20:17:46 +02:00
Jakub Beránek
b23ab7888a
Make std_detect a direct dependency of std 2025-07-22 20:17:23 +02:00
Jakub Beránek
5b2de8ab27
Move std_detect from library/stdarch to library 2025-07-22 20:17:06 +02:00