diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2024-08-12 17:09:14 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-12 17:09:14 +0200 |
| commit | c5172fd0a76302a8d5ba5b63961ab321abc52d2c (patch) | |
| tree | e0e840091592192f32527776cf7d85280afee48e /tests/codegen/patchable-function-entry | |
| parent | 18c7d54993023b25f77bf48355a3659e8838e61d (diff) | |
| parent | 1361fdc58cf7aa6e7196a0ef66e387812db930a5 (diff) | |
| download | rust-c5172fd0a76302a8d5ba5b63961ab321abc52d2c.tar.gz rust-c5172fd0a76302a8d5ba5b63961ab321abc52d2c.zip | |
Rollup merge of #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](https://github.com/llvm/llvm-project/issues/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 https://github.com/rust-lang/stdarch/pull/1541 propagating to the rustc repo, to make sure the `_mm_stream` intrinsics are unaffected by this change.~~ Fixes https://github.com/rust-lang/rust/issues/114582 Cc `@Amanieu` `@workingjubilee`
Diffstat (limited to 'tests/codegen/patchable-function-entry')
0 files changed, 0 insertions, 0 deletions
