1
Fork 0
Empowering everyone to build reliable and efficient software. Gabriel's commits. https://www.rust-lang.org/
Find a file
Jörn Horstmann 3779b8e32e Consistently use the most significant bit of vector masks
This improves the codegen for vector `select`, `gather`, `scatter` and
boolean reduction intrinsics and fixes rust-lang/portable-simd#316.

The current behavior of most mask operations during llvm codegen is to
truncate the mask vector to <N x i1>, telling llvm to use the least
significat bit. The exception is the `simd_bitmask` intrinsics, which
already used the most signifiant bit.

Since sse/avx instructions are defined to use the most significant bit,
truncating means that llvm has to insert a left shift to move the bit
into the most significant position, before the mask can actually be
used.

Similarly on aarch64, mask operations like blend work bit by bit,
repeating the least significant bit across the whole lane involves
shifting it into the sign position and then comparing against zero.

By shifting before truncating to <N x i1>, we tell llvm that we only
consider the most significant bit, removing the need for additional
shift instructions in the assembly.
2025-01-26 16:44:23 +01:00
.github CI: free disk with in-tree script instead of GitHub Action 2025-01-21 16:19:11 +01:00
compiler Consistently use the most significant bit of vector masks 2025-01-26 16:44:23 +01:00
library Rollup merge of #135948 - bjorn3:update_emscripten_std_tests, r=Mark-Simulacrum 2025-01-25 23:27:00 -05:00
LICENSES
src Rollup merge of #135948 - bjorn3:update_emscripten_std_tests, r=Mark-Simulacrum 2025-01-25 23:27:00 -05:00
tests Consistently use the most significant bit of vector masks 2025-01-26 16:44:23 +01:00
.clang-format
.editorconfig
.git-blame-ignore-revs
.gitattributes Revert "Stop git from merging generated files" 2024-12-12 07:20:11 +01:00
.gitignore Ignore mermaid.min.js 2025-01-20 16:08:08 -05:00
.gitmodules Removed rustc-dev-guide as a submodule 2025-01-01 17:05:53 +01:00
.ignore
.mailmap Rollup merge of #134965 - Noratrieb:slightly-late-for-boxing-day-sadly-but-still-almost, r=BoxyUwU 2025-01-03 22:12:42 +01:00
Cargo.lock Shorten linker output even more when --verbose is not present 2025-01-25 16:04:52 -05:00
Cargo.toml Merge commit 'e39eacd2d4' into sync_cg_clif-2025-01-10 2025-01-10 09:02:07 +00:00
CODE_OF_CONDUCT.md
config.example.toml add optimized-compiler-builtins to target specific section 2025-01-10 11:47:06 +03:00
configure
CONTRIBUTING.md docs: update contributing docs for submodule/subtree changes 2025-01-20 21:53:59 +08:00
COPYRIGHT dist: Re-work how we describe the licence of Rust in our distributions 2024-12-09 10:18:55 +00:00
INSTALL.md
LICENSE-APACHE
license-metadata.json
LICENSE-MIT dist: Re-work how we describe the licence of Rust in our distributions 2024-12-09 10:18:55 +00:00
README.md Grammar fixes 2024-12-09 17:17:27 -05:00
RELEASES.md update release notes 2025-01-23 15:39:11 +01:00
REUSE.toml
rust-bors.toml
rustfmt.toml Use field init shorthand where possible 2024-12-17 14:33:10 -08:00
triagebot.toml Add Kobzol on vacation 2025-01-21 10:23:14 +01:00
x
x.ps1
x.py

This is the main source code repository for Rust. It contains the compiler, standard library, and documentation.

Why Rust?

  • Performance: Fast and memory-efficient, suitable for critical services, embedded devices, and easily integrated with other languages.

  • Reliability: Our rich type system and ownership model ensure memory and thread safety, reducing bugs at compile-time.

  • Productivity: Comprehensive documentation, a compiler committed to providing great diagnostics, and advanced tooling including package manager and build tool (Cargo), auto-formatter (rustfmt), linter (Clippy) and editor support (rust-analyzer).

Quick Start

Read "Installation" from The Book.

Installing from Source

If you really want to install from source (though this is not recommended), see INSTALL.md.

Getting Help

See https://www.rust-lang.org/community for a list of chat platforms and forums.

Contributing

See CONTRIBUTING.md.

License

Rust is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0), with portions covered by various BSD-like licenses.

See LICENSE-APACHE, LICENSE-MIT, and COPYRIGHT for details.

Trademark

The Rust Foundation owns and protects the Rust and Cargo trademarks and logos (the "Rust Trademarks").

If you want to use these names or brands, please read the media guide.

Third-party logos may be subject to third-party copyrights and trademarks. See Licenses for details.