<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/compiler/rustc_codegen_cranelift/src/intrinsics, branch 1.83.0</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=1.83.0</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=1.83.0'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2024-10-11T21:32:56+00:00</updated>
<entry>
<title>intrinsics.fmuladdf{16,32,64,128}: expose llvm.fmuladd.* semantics</title>
<updated>2024-10-11T21:32:56+00:00</updated>
<author>
<name>Jed Brown</name>
<email>jed@jedbrown.org</email>
</author>
<published>2024-01-06T04:04:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=0d8a978e8a55b08778ec6ee861c2c5ed6703eb6c'/>
<id>urn:sha1:0d8a978e8a55b08778ec6ee861c2c5ed6703eb6c</id>
<content type='text'>
Add intrinsics `fmuladd{f16,f32,f64,f128}`. This computes `(a * b) +
c`, to be fused if the code generator determines that (i) the target
instruction set has support for a fused operation, and (ii) that the
fused operation is more efficient than the equivalent, separate pair
of `mul` and `add` instructions.

https://llvm.org/docs/LangRef.html#llvm-fmuladd-intrinsic

MIRI support is included for f32 and f64.

The codegen_cranelift uses the `fma` function from libc, which is a
correct implementation, but without the desired performance semantic. I
think this requires an update to cranelift to expose a suitable
instruction in its IR.

I have not tested with codegen_gcc, but it should behave the same
way (using `fma` from libc).
</content>
</entry>
<entry>
<title>Rustfmt</title>
<updated>2024-09-23T11:28:15+00:00</updated>
<author>
<name>bjorn3</name>
<email>17426603+bjorn3@users.noreply.github.com</email>
</author>
<published>2024-09-23T11:28:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=6b042f5b5d4bfe629c8440e58d4036b4dfc6ecd9'/>
<id>urn:sha1:6b042f5b5d4bfe629c8440e58d4036b4dfc6ecd9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge commit '6d35b4c9a04580366fd800692a5b5db79d766530' into sync_cg_clif-2024-09-22</title>
<updated>2024-09-23T11:20:46+00:00</updated>
<author>
<name>bjorn3</name>
<email>17426603+bjorn3@users.noreply.github.com</email>
</author>
<published>2024-09-23T11:20:46+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=b40fe1ee2826a52b2f21c31c43d06caea40885c8'/>
<id>urn:sha1:b40fe1ee2826a52b2f21c31c43d06caea40885c8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Reformat using the new identifier sorting from rustfmt</title>
<updated>2024-09-22T23:11:29+00:00</updated>
<author>
<name>Michael Goulet</name>
<email>michael@errs.io</email>
</author>
<published>2024-09-22T23:05:04+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=c682aa162b0d41e21cc6748f4fecfe01efb69d1f'/>
<id>urn:sha1:c682aa162b0d41e21cc6748f4fecfe01efb69d1f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Do not unnecessarily eval consts in codegen</title>
<updated>2024-09-21T00:38:11+00:00</updated>
<author>
<name>Michael Goulet</name>
<email>michael@errs.io</email>
</author>
<published>2024-09-21T00:38:11+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=914193c8f40528fe82696e1054828de8c399882e'/>
<id>urn:sha1:914193c8f40528fe82696e1054828de8c399882e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>simd_shuffle: require index argument to be a vector</title>
<updated>2024-09-14T12:43:24+00:00</updated>
<author>
<name>Ralf Jung</name>
<email>post@ralfj.de</email>
</author>
<published>2024-09-12T09:33:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=60ee1b7ac6e1c18679573d4a752e6fc02790d892'/>
<id>urn:sha1:60ee1b7ac6e1c18679573d4a752e6fc02790d892</id>
<content type='text'>
</content>
</entry>
<entry>
<title>simd_shuffle intrinsic: allow argument to be passed as vector (not just as array)</title>
<updated>2024-08-13T05:51:17+00:00</updated>
<author>
<name>Ralf Jung</name>
<email>post@ralfj.de</email>
</author>
<published>2024-08-06T10:25:37+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=194baa820d36926cfa9128211bbd61866d49d501'/>
<id>urn:sha1:194baa820d36926cfa9128211bbd61866d49d501</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rollup merge of #128149 - RalfJung:nontemporal_store, r=jieyouxu,Amanieu,Jubilee</title>
<updated>2024-08-12T15:09:14+00:00</updated>
<author>
<name>Guillaume Gomez</name>
<email>guillaume1.gomez@gmail.com</email>
</author>
<published>2024-08-12T15:09:14+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=095ca33bb6da3c1dd789eaf59461c99f4023b626'/>
<id>urn:sha1:095ca33bb6da3c1dd789eaf59461c99f4023b626</id>
<content type='text'>
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`
</content>
</entry>
<entry>
<title>Merge commit '69b3f5a426a5c1c05236a45b36f6679d95fbe01b' into sync_cg_clif-2024-08-09</title>
<updated>2024-08-09T17:18:46+00:00</updated>
<author>
<name>bjorn3</name>
<email>17426603+bjorn3@users.noreply.github.com</email>
</author>
<published>2024-08-09T17:18:46+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=af7ea3135deb4c2e4636d002b892c7ecf054a2e9'/>
<id>urn:sha1:af7ea3135deb4c2e4636d002b892c7ecf054a2e9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>nontemporal_store: make sure that the intrinsic is truly just a hint</title>
<updated>2024-08-05T08:57:14+00:00</updated>
<author>
<name>Ralf Jung</name>
<email>post@ralfj.de</email>
</author>
<published>2024-07-24T18:55:43+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=28e0907111075dead53a931004b0ba6f1fe0d793'/>
<id>urn:sha1:28e0907111075dead53a931004b0ba6f1fe0d793</id>
<content type='text'>
</content>
</entry>
</feed>
