Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nontemporal_store: make sure that the intrinsic is truly just a hint #128149

Merged
merged 3 commits into from
Aug 12, 2024

Conversation

RalfJung
Copy link
Member

@RalfJung RalfJung commented Jul 24, 2024

The !nontemporal flag for stores in LLVM sounds like it is just a hint, but actually, it is not -- at least on x86, non-temporal stores need very special treatment by the programmer or else the Rust memory model breaks down. LLVM still treats these stores as-if they were normal stores for optimizations, which is highly dubious. Let's avoid all that dubiousness by making our own non-temporal stores be truly just a hint, which is possible on some targets (e.g. ARM). On all other targets, non-temporal stores become regular stores.

Blocked on rust-lang/stdarch#1541 propagating to the rustc repo, to make sure the _mm_stream intrinsics are unaffected by this change.

Fixes #114582
Cc @Amanieu @workingjubilee

@rustbot
Copy link
Collaborator

rustbot commented Jul 24, 2024

r? @fmease

rustbot has assigned @fmease.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. labels Jul 24, 2024
@rustbot
Copy link
Collaborator

rustbot commented Jul 24, 2024

Some changes occurred in compiler/rustc_codegen_cranelift

cc @bjorn3

Some changes occurred in compiler/rustc_codegen_gcc

cc @antoyo, @GuillaumeGomez

@rust-log-analyzer

This comment has been minimized.

@RalfJung RalfJung force-pushed the nontemporal_store branch 2 times, most recently from e2efa65 to d1e92af Compare July 24, 2024 20:03
@Kobzol
Copy link
Contributor

Kobzol commented Jul 24, 2024

It's a bit sad if this becomes an actual no-op on x86, nontemporal stores can be (very rarely) very useful. Is this usable through anything else than mm_stream_* and friends? These functions already contain a safety note that a fence has to be used after them.

@workingjubilee
Copy link
Member

It's a bit sad if this becomes an actual no-op on x86, nontemporal stores can be (very rarely) very useful. Is this usable through anything else than mm_stream_* and friends? These functions already contain a safety note that a fence has to be used after them.

Those intrinsic functions are, in the latest commits to std::arch, internally assembly. They should behave identically to how they did before, please file a bug if they emit notably worse codegen. The distinction is that, in general, LLVM does not try to perform store deduplication into assembly code.

@Kobzol
Copy link
Contributor

Kobzol commented Jul 25, 2024

So mm_stream will still emit nontemporal instructions on x86? Thanks for clarifying!

@RalfJung
Copy link
Member Author

Yes it will, that's why rust-lang/stdarch#1541 needs to propagate first.

@Kobzol
Copy link
Contributor

Kobzol commented Jul 25, 2024

Ok, great, then I misunderstood this change, sorry!

@workingjubilee
Copy link
Member

Thank you, @RalfJung.

@RalfJung
Copy link
Member Author

RalfJung commented Aug 5, 2024

rust-lang/stdarch#1541 has propagated, so this should be good to go. We haven't heard from @fmease though so let's re-roll the reviewer dice.

r? compiler

@rustbot rustbot assigned TaKO8Ki and unassigned fmease Aug 5, 2024
Copy link
Member

@jieyouxu jieyouxu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! The changes themselves look good based on the prior discussions. Just a question about the codegen test with regards to target coverage.

Comment on lines +740 to +741
const WELL_BEHAVED_NONTEMPORAL_ARCHS: &[&str] =
&["aarch64", "arm", "riscv32", "riscv64"];
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Question [REV1 (2/2)]: If I understand it correctly, the codegen test is modified such that it only codegens for aarch64-unknown-linux-gnu target, but here we have 4 "well-behaved" architectures that we do emit !nontemporal for.

tests/codegen/intrinsics/nontemporal.rs Outdated Show resolved Hide resolved
@jieyouxu
Copy link
Member

r? jieyouxu

@rustbot rustbot assigned jieyouxu and unassigned TaKO8Ki Aug 11, 2024
Copy link
Member

@jieyouxu jieyouxu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, feel free to r=me,Amanieu,Jubilee after maybe fixing the nit :3

tests/codegen/intrinsics/nontemporal.rs Outdated Show resolved Hide resolved
@RalfJung
Copy link
Member Author

@bors r=jieyouxu,Amanieu,Jubilee

@bors
Copy link
Contributor

bors commented Aug 12, 2024

📌 Commit 5be6c7d has been approved by jieyouxu,Amanieu,Jubilee

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Aug 12, 2024
@RalfJung
Copy link
Member Author

@bors r=jieyouxu,Amanieu,Jubilee

@bors
Copy link
Contributor

bors commented Aug 12, 2024

📌 Commit 75743dc has been approved by jieyouxu,Amanieu,Jubilee

It is now in the queue for this repository.

bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 12, 2024
…llaumeGomez

Rollup of 10 pull requests

Successful merges:

 - rust-lang#128149 (nontemporal_store: make sure that the intrinsic is truly just a hint)
 - rust-lang#128394 (Unify run button display with "copy code" button and with mdbook buttons)
 - rust-lang#128537 (const vector passed through to codegen)
 - rust-lang#128632 (std: do not overwrite style in `get_backtrace_style`)
 - rust-lang#128878 (Slightly refactor `Flags` in bootstrap)
 - rust-lang#128886 (Get rid of some `#[allow(rustc::untranslatable_diagnostic)]`)
 - rust-lang#128929 (Fix codegen-units tests that were disabled 8 years ago)
 - rust-lang#128937 (Fix warnings in rmake tests on `x86_64-unknown-linux-gnu`)
 - rust-lang#128978 (Use `assert_matches` around the compiler more)
 - rust-lang#128994 (Fix bug in `Parser::look_ahead`.)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 095ca33 into rust-lang:master Aug 12, 2024
6 checks passed
@rustbot rustbot added this to the 1.82.0 milestone Aug 12, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Aug 12, 2024
Rollup merge of rust-lang#128149 - RalfJung:nontemporal_store, r=jieyouxu,Amanieu,Jubilee

nontemporal_store: make sure that the intrinsic is truly just a hint

The `!nontemporal` flag for stores in LLVM *sounds* like it is just a hint, but actually, it is not -- at least on x86, non-temporal stores need very special treatment by the programmer or else the Rust memory model breaks down. LLVM still treats these stores as-if they were normal stores for optimizations, which is [highly dubious](llvm/llvm-project#64521). Let's avoid all that dubiousness by making our own non-temporal stores be truly just a hint, which is possible on some targets (e.g. ARM). On all other targets, non-temporal stores become regular stores.

~~Blocked on rust-lang/stdarch#1541 propagating to the rustc repo, to make sure the `_mm_stream` intrinsics are unaffected by this change.~~

Fixes rust-lang#114582
Cc `@Amanieu` `@workingjubilee`
@RalfJung RalfJung deleted the nontemporal_store branch August 14, 2024 12:15
carolynzech added a commit to carolynzech/verify-rust-std that referenced this pull request Aug 28, 2024
febaf22f00e Rollup merge of rust-lang#129592 - saethlin:core-cfg-test, r=tgross35
77a1318f7f7 Rollup merge of rust-lang#129588 - hermit-os:sleep-micros, r=workingjubilee
12fe23bd5dc Rollup merge of rust-lang#129539 - oconnor663:poll_link, r=tgross35
864e465be7b Rollup merge of rust-lang#129377 - chorman0773:unbounded-shifts-impl, r=scottmcm
d958260763a Auto merge of rust-lang#129595 - matthiaskrgr:rollup-4udn7nn, r=matthiaskrgr
8dd3363de6a Remove cfg(test) from library/core
cd554e2b4ea Rollup merge of rust-lang#129544 - mu001999-contrib:dead-code/clean, r=compiler-errors
ff769eef88a Rollup merge of rust-lang#129525 - notriddle:notriddle/fake-variadic-tuple-array, r=GuillaumeGomez
4d22c1c6b37 Auto merge of rust-lang#129488 - saethlin:alignment-precondition, r=workingjubilee
c688deff96a pal/hermit: saturate `usleep` microseconds at `u64::MAX`
8ea71ae5647 Auto merge of rust-lang#129563 - matthiaskrgr:rollup-t6bai2d, r=matthiaskrgr
fdb5fc1fca6 pal/hermit: correctly round up microseconds in `Thread::sleep`
22ec8977a9a link to Future::poll from the Poll docs
a994fbbca83 Rollup merge of rust-lang#129487 - GrigorenkoPV:repr_transparent_external_private_fields, r=compiler-errors
3a339226a95 Rollup merge of rust-lang#129416 - workingjubilee:partial-move-from-stabilization, r=dtolnay
3a8de952989 Rollup merge of rust-lang#129091 - RalfJung:box_as_ptr, r=Amanieu
4de4debd1eb Auto merge of rust-lang#129295 - Zalathar:profiler-builtins, r=Kobzol
8dafd337e12 Auto merge of rust-lang#129521 - matthiaskrgr:rollup-uigv77m, r=matthiaskrgr
d9e489b48ce Removes dead code from the compiler
c14cf57e404 Rollup merge of rust-lang#129481 - scottmcm:update-cb, r=tgross35
acf6f03b6fa Rollup merge of rust-lang#129449 - coolreader18:pin-as_deref_mut-signature, r=dtolnay
112ebc4d5a9 Rollup merge of rust-lang#128735 - jieyouxu:pr-120176-revive, r=cjgillot
49aa496c5bb rustdoc: clean up tuple <-> primitive conversion docs
0fe374666ac Rollup merge of rust-lang#129501 - RalfJung:miri-rust-backtrace, r=Noratrieb
7d5cf38931b Rollup merge of rust-lang#129500 - fee1-dead-contrib:fxrel, r=compiler-errors
e91d825f826 Rollup merge of rust-lang#129323 - Urgau:ptr_fn_addr_eq, r=Mark-Simulacrum
f6470795864 Rollup merge of rust-lang#128596 - RalfJung:const_fn_floating_point_arithmetic, r=nnethercote
f965950f05e New `#[rustc_pub_transparent]` attribute
a6ea125cb0e panicking: improve hint for Miri's RUST_BACKTRACE behavior
a437005e6f3 Build `library/profiler_builtins` from `ci-llvm` if appropriate
693477a3f65 remove invalid `TyCompat` relation for effects
82fc74f6f1a library: Move unstable API of new_uninit to new features
3ee2e18c8dc Enable Alignment::new_unchecked precondition check
0803686e7fb Change `f16` doctests in core to run on x86-64 linux
9359a126d41 Update `compiler_builtins` to `0.1.121`
da02e8b5609 Enable `f16` tests on x86 and x86-64
976fb4aeefc Move into_inner_unchecked back to the bottom of the impl block
2741e8dacb4 Put Pin::as_deref_mut in impl Pin<Ptr>
f670207d0f4 Auto merge of rust-lang#129464 - GuillaumeGomez:rollup-ckfqd7h, r=GuillaumeGomez
5bf661cc64f Rollup merge of rust-lang#129276 - eduardosm:stabilize-char_indices_offset, r=Amanieu
e2614f24b27 Rollup merge of rust-lang#129400 - Amjad50:update-compiler-builtins, r=tgross35
2c06146be10 Rollup merge of rust-lang#127623 - lolbinarycat:fix_remove_dir_all, r=Amanieu
eb747e53dd0 Check that `library/profiler_builtins` actually found some source files
fe33d2c256c fix: fs::remove_dir_all: treat ENOENT as success
3fd591ebdef feat(core): Make `unbounded_shl{l,r}` unstably const and remove `rustc_allow_const_fn_unstable`
2168ce32967 Auto merge of rust-lang#129398 - matthiaskrgr:rollup-50l01ry, r=matthiaskrgr
12944c76047 Update `compiler_builtins` to `0.1.120`
7496478b7a5 stabilize const_fn_floating_point_arithmetic
6f534f94217 Rollup merge of rust-lang#129382 - tgross35:once-cell-const-into-inner, r=Noratrieb
2535017098e Rollup merge of rust-lang#129376 - ChaiTRex:assert_unsafe_precondition_check_language_ub, r=workingjubilee,the8472
4ec19afe669 Rollup merge of rust-lang#129374 - ChaiTRex:digit_unchecked_assert_unsafe_precondition, r=scottmcm
024ec3c0f62 Rollup merge of rust-lang#128432 - g0djan:godjan/wasi_prohibit_implicit_unsafe, r=tgross35
f671c1129b9 Auto merge of rust-lang#129365 - matthiaskrgr:rollup-ebwx6ya, r=matthiaskrgr
5299ef149b1 fix(core): Use correct operations/values in `unbounded_shr` doctests
84230062104 chore: `x fmt`
cbe7338e1f3 fix(core): Add `#![feature(unbounded_shifts)]` to doctests for `unbounded_shr`/`unbounded_shl`
863123bd7c4 Add `const_cell_into_inner` to `OnceCell`
6fd539327d2 chore: `x fmt` and hopefully fix the tidy issue
9d2bb976994 Change `assert_unsafe_precondition` docs to refer to `check_language_ub`
32bd5dfb369 chore: Also format the control flow
5f8cf71d7d6 Manually format functions and use `rhs` instead of `v` from my CE testing
700af565751 feat(core): Add implementations for `unbounded_shl`/`unbounded_shr`
a9ad57eb6a1 Use `assert_unsafe_precondition!` in `AsciiChar::digit_unchecked`
77bd65fdedc Rollup merge of rust-lang#129321 - krtab:float_sum, r=workingjubilee
cc219788b51 Rollup merge of rust-lang#129232 - ivmarkov:master, r=workingjubilee
c9cf844ccd3 Rollup merge of rust-lang#127945 - tgross35:debug-more-non-exhaustive, r=Noratrieb
d37ebfea900 Rollup merge of rust-lang#129332 - cuviper:cstr-cast, r=compiler-errors
6d01ed8b3bd Rollup merge of rust-lang#129312 - tbu-:pr_str_not_impl_error, r=Noratrieb
93319c80754 Fix stability attribute of `impl !Error for &str`
7f8bdd574b6 Auto merge of rust-lang#126556 - saethlin:layout-precondition, r=joboet
9e9141f54eb Auto merge of rust-lang#128866 - scottmcm:update-stdarch, r=tgross35
d47cfba89b7 Update stdarch submodule
b507a8bfeb9 Try to golf down the amount of code in Layout
32b574e848f Avoid extra `cast()`s after `CStr::as_ptr()`
9d4113ff24d Rollup merge of rust-lang#129294 - scottmcm:stabilize-repeat-n, r=Noratrieb
62d240d9b6a Implement `ptr::fn_addr_eq`
529e33acb80 Change neutral element of <fNN as iter::Sum> to neg_zero
126935f7257 Stabilize `iter::repeat_n`
91439ce7b58 Auto merge of rust-lang#129226 - RalfJung:libc, r=Mark-Simulacrum
bef7be0e71e Add a precondition check for Layout::from_size_align_unchecked
a55ab85ad47 Stabilize feature `char_indices_offset`
7f45dcfa195 library: bump libc dependency
ebe99f3b8b6 Rollup merge of rust-lang#128902 - evanj:evan.jones/env-var-doc, r=workingjubilee
8bdd95ba4da soft-deprecate the addr_of macros
23b0aadc2ce code review improvements
0b0dad4af6f Fix for issue rust-lang#129212 for the ESP-IDF
bd7aa576572 Auto merge of rust-lang#126877 - GrigorenkoPV:clone_to_uninit, r=dtolnay
d3c08f8f8ac Auto merge of rust-lang#128598 - RalfJung:float-comments, r=workingjubilee
dc5fed53253 Auto merge of rust-lang#106943 - mina86:exact_size_take_repeat, r=dtolnay
88927ac26eb Auto merge of rust-lang#116528 - daxpedda:stabilize-ready-into-inner, r=dtolnay
9952947d86b Rollup merge of rust-lang#129161 - dtolnay:spawnunck, r=Noratrieb
db3abec9727 Rollup merge of rust-lang#129086 - slanterns:is_none_or, r=dtolnay
44a558dc7dc Stabilize std::thread::Builder::spawn_unchecked
5c553c41134 float to/from bits and classify: update comments regarding non-conformant hardware
9704e2df60c Rollup merge of rust-lang#128064 - ijackson:noop-waker-doc, r=workingjubilee
0497f0c6c91 Add cautionary paragraph about noop wakers.
16dd42669a2 Rollup merge of rust-lang#128946 - orlp:faster-ip-hash, r=joboet
383c4db14b0 Rollup merge of rust-lang#128925 - dingxiangfei2009:smart-ptr-helper-attr, r=compiler-errors
ba3a942d5de Rollup merge of rust-lang#125970 - RalfJung:before_exec, r=m-ou-se
0dbf8cff9de Rollup merge of rust-lang#128954 - zachs18:fromresidual-no-default, r=scottmcm
4f0959927f2 Rollup merge of rust-lang#128570 - folkertdev:stabilize-asm-const, r=Amanieu
b6c9e44d2a6 add Box::as_ptr and Box::as_mut_ptr methods
23d1309b02e CommandExt::before_exec: deprecate safety in edition 2024
9858d49b168 stabilize `is_none_or`
fd2b339c5a6 Auto merge of rust-lang#129060 - matthiaskrgr:rollup-s72gpif, r=matthiaskrgr
3b8aab7df81 Rollup merge of rust-lang#129001 - cblh:fix/128713, r=Noratrieb
16edf695130 Rollup merge of rust-lang#128873 - ChrisDenton:windows-targets, r=Mark-Simulacrum
0199b00c91f Rollup merge of rust-lang#128759 - notriddle:notriddle/spec-to-string, r=workingjubilee,compiler-errors
c6dc243b917 stabilize `asm_const`
b4bfc215048 Rollup merge of rust-lang#129034 - henryksloan:coroutine-must-use, r=joboet
b56fdcb2730 Rollup merge of rust-lang#127857 - tbu-:pr_deprecated_safe_todo, r=petrochenkov
77f462da866 Rollup merge of rust-lang#122884 - mzabaluev:pow-remove-exit-branch, r=Amanieu
0a6a74bce1a Reduce merged doctest source code size
a83dde61642 Mark location doctest as standalone since file information will not work in merged doctest file
7334c7178ce Auto merge of rust-lang#129046 - matthiaskrgr:rollup-9x4xgak, r=matthiaskrgr
9ed72103664 Rollup merge of rust-lang#128745 - dtolnay:spawnunchecked, r=workingjubilee
c39d90e4d51 Rollup merge of rust-lang#128655 - joboet:play_with_the_dice, r=ChrisDenton
f81c96a863e `#[deprecated_safe_2024]`: Also use the `// TODO:` hint in the compiler error
23a19685c9b Allow to customize `// TODO:` comment for deprecated safe autofix
37017c0f6f6 Auto merge of rust-lang#128962 - devnexen:fs_get_mode_haiku, r=workingjubilee
8a2671a2889 Revert to original loop for const pow exponents
c5e81895dfb Auto merge of rust-lang#128742 - RalfJung:miri-vtable-uniqueness, r=saethlin
ac682f19873 Add must_use attribute to Coroutine trait
658904d1a9a chore(lib): fmt core::fmt::Formatter's write_fmt method
7eb73762bb3 trying common codepath for every unixes
5fabf93c765 std::fs: get_mode implementation for haiku.
e3da824e62c Rollup merge of rust-lang#129017 - its-the-shrimp:core_fmt_from_fn, r=Noratrieb
b247d9a7a9a derive(SmartPointer): register helper attributes
aa854485cea Explicitly specify type parameter on FromResidual impls in stdlib.
262a4f6b641 std::fmt::FormatterFn -> std::fmt::FromFn
ceceae30ced Rollup merge of rust-lang#128632 - joboet:dont_overwrite_style, r=Amanieu
e8f7afeb117 Rollup merge of rust-lang#128149 - RalfJung:nontemporal_store, r=jieyouxu,Amanieu,Jubilee
7dd208356e1 chore(lib): Enhance documentation for core::fmt::Formatter's write_fmt method
048efd0bcec ignore some vtable/fn ptr equality tests in Miri, their result is not fully predictable
a367a12df0a std: use `/scheme/rand` on Redox
1ca6b42583f std: do not overwrite style in `get_backtrace_style`
91477777de1 Auto merge of rust-lang#128862 - cblh:fix/128855, r=scottmcm
56e1afe0810 Auto merge of rust-lang#126793 - saethlin:mono-rawvec, r=scottmcm
ec7a585087c Do not use unnecessary endian conversion.
f48facfed72 Rollup merge of rust-lang#128882 - RalfJung:local-waker-will-wake, r=cuviper
b581949746c Rollup merge of rust-lang#120314 - mina86:i, r=Mark-Simulacrum
451feca66ac Fix stability annotation and expand comment
2e34ac388e0 Hash Ipv*Addr as an integer
b8b61e1e931 Auto merge of rust-lang#128927 - GuillaumeGomez:rollup-ei2lr0f, r=GuillaumeGomez
44f5b4fe515 Rollup merge of rust-lang#128273 - Voultapher:improve-ord-violation-help, r=workingjubilee
3d7afa0e721 Update std and compiler
971df1c2948 Stabilize `min_exhaustive_patterns`
c37c6665b9b Add an optimizer hint for the capacity that with_capacity_in returns
c8cbd5c499c Hoist IS_ZST check out of RawVecInner::from_*_in
e843f7103a0 Polymorphize RawVec
dc39cbf9234 core: optimise Debug impl for ascii::Char
9668691af5d doc: std::env::var: Returns None for names with '=' or NUL byte
5d5d8bc73a9 Rollup merge of rust-lang#128859 - MinxuanZ:mips-sig, r=Amanieu
825def017bc Rollup merge of rust-lang#128817 - biabbas:vxworks_update, r=tgross35
6e933a82c90 make LocalWaker::will_wake consistent with Waker::will_wake
118c71296c8 Fix linkchecker issue
b1460b93704 Exclude windows-targets from the workspace
a3a6a9856c2 Add windows-targets crate to std's sysroot
f74940d94c2 Rollup merge of rust-lang#128824 - GuillaumeGomez:update-compiler-builtins, r=Amanieu
39b1eafc08c VxWorks: Add safety comment for vxCpuEnabledGet
8b0a25df983 fix: Ensure `Guard`'s `drop` method is removed at `opt-level=s` for `Copy` types
c54958c5dad delete space
dadbd585cb3 fix format
7c34ebf93de [SPARC] fix the name of signal 19 in sparc arch
b75648a7515 [MIPS] fix the name of signal 19 in mips
3840b09aae3 Rollup merge of rust-lang#128818 - RalfJung:std-miri-floats, r=tgross35
d03bb5e33a9 Rollup merge of rust-lang#128640 - RalfJung:rwlock-macos-miri, r=joboet
7680a3c7598 Rollup merge of rust-lang#128749 - tgross35:float-inline, r=scottmcm
9df61adfaa1 Rollup merge of rust-lang#128306 - WiktorPrzetacznik:WiktorPrzetacznik-nonnull-alignoffset-update, r=Amanieu
39860ad52d1 Update compiler-builtins version to 0.1.118
42811859e46 std float tests: special-case Miri in feature detection
4d6b36adfe6 Vxworks: Extern taskNameSet and fix build errors
e24a6ca11fa rwlock: disable 'frob' test in Miri on macOS
c21ba971a8a Fix VxWorks available parallelism: Move nonzero::uncheked into unsafe block
249541802ec Rollup merge of rust-lang#128800 - clarfonthey:core-pattern-type, r=compiler-errors
79cd72af482 Rollup merge of rust-lang#128691 - tgross35:update-builtins, r=Amanieu
8f840157d66 Add tracking issue to core-pattern-type
b8f7f384f75 Stabilize `Ready::into_inner()`
62ccdeb315d Rollup merge of rust-lang#128261 - clarfonthey:iter-default, r=dtolnay
b4e53303f07 alloc: make `to_string_str!` a bit less complex
ec74467d64c Mark `{f32,f64}::{next_up,next_down,midpoint}` inline
b90a026d6f8 Rollup merge of rust-lang#128766 - Monadic-Cat:patch-1, r=tgross35
5d7906c0270 Rollup merge of rust-lang#128417 - tgross35:f16-f128-math, r=dtolnay
83d1d167737 Trivial grammar fix in const keyword docs
97384fa701b Update `compiler-builtins` to 0.1.117
6dc79bb6235 Rollup merge of rust-lang#128751 - devnexen:vxworks_set_thread_name, r=tgross35
432425d28f7 Rollup merge of rust-lang#128539 - biabbas:deny_unsafe, r=workingjubilee
1bd5338eadf Rollup merge of rust-lang#128406 - lolbinarycat:bufreader_peek, r=Mark-Simulacrum
e20aa6430f1 Rollup merge of rust-lang#125048 - dingxiangfei2009:stable-deref, r=amanieu
bc13c6ca57a alloc: add ToString specialization for `&&str`
14fe723f6b9 std::thread: set_name implementation proposal for vxWorks.
67fa603356d Remove unused lifetime parameter from spawn_unchecked
4a3da122172 Add a special case for CStr/CString in the improper_ctypes lint
51ec2bb7ea2 implement BufReader::peek
e6aede2233f nontemporal_store: make sure that the intrinsic is truly just a hint
a300df74d13 WASI fixing unsafe_op_in_unsafe_fn for std::{os, sys}
59436fcc0b1 std: refactor UNIX random data generation
6fafc6b5d92 Apply review comments to PartialOrd section
7850a64f5bb Forbid unsafe_op_in_unsafe_fn in vxworks specific os and sys files
e844efffe8f Add a disclaimer about x86 `f128` math functions
21d297b29ad Update comments for `{f16, f32, f64, f128}::midpoint`
ad27d08e73e Add `core` functions for `f16` and `f128` that require math routines
c6407b0bfa7 Add math functions for `f16` and `f128`
d9b1de5180d Add math intrinsics for `f16` and `f128`
3c1586b3ce8 Hide internal sort module
21887129721 Apply review comments
2ebe00aa0ba PinCoerceUnsized trait into core
569ab6a3a03 CloneToUninit: use a private specialization trait
26874cc98cc Sparkle some attributes over `CloneToUninit` stuff
e8c37187b60 impl CloneToUninit for Path and OsStr
ef8c591ec02 impl CloneToUninit for str and CStr
65c6173bfe1 Update NonNull::align_offset quarantees
b014b0d7b74 Improve panic sections for sort*, sort_unstable* and select_nth_unstable*
9bcfe84e72b Improve panic message and surrounding documentation for Ord violations
7e55abb1837 Okay, I guess I have to give these a different feature name
bdc18e2ea2b impl Default for collection iterators that don't already have it
971aa37f27b LocalWaker docs: Make long-ago omitted but probably intended changes
c4fdac9fe60 Docs for Waker and LocalWaker: Add cross-refs in comment
9c299bc6b10 Implement `debug_more_non_exhaustive`
b405024dc09 Make use of raw strings in `core::fmt::builders`
20e64bd6cd3 Use is_val_statically_known to optimize pow
05ee32298cb Explicitly unroll integer pow for small exponents
4cfe24a3555 Optimize integer pow by removing exit branch
7c219da2111 Implement DoubleEnded and ExactSize for Take<Repeat> and Take<RepeatWith>

git-subtree-dir: library
git-subtree-split: febaf22f00e7290f42d3f6f50c4a9dbe8b4cbe5f
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Non-temporal stores (and _mm_stream operations in stdarch) break our memory model
10 participants