Josh Stone
6fd8a50680
Update the minimum external LLVM to 18
2024-09-18 13:53:31 -07:00
Ralf Jung
60ee1b7ac6
simd_shuffle: require index argument to be a vector
2024-09-14 14:43:24 +02:00
Scott McMurray
d2309c2a9d
Ban non-array SIMD
2024-09-09 19:39:43 -07:00
Ralf Jung
194baa820d
simd_shuffle intrinsic: allow argument to be passed as vector (not just as array)
2024-08-13 07:51:17 +02:00
Esteban Küber
850faea030
Do not use question as label
...
We don't want to have questions in the diagnostic output. Instead, we use wording that communicates uncertainty, like "might":
```
error[E0432]: unresolved import `spam`
--> $DIR/import-from-missing-star-3.rs:2:9
|
LL | use spam::*;
| ^^^^ you might be missing crate `spam`
|
= help: consider adding `extern crate spam` to use the `spam` crate
```
2024-07-24 21:03:27 +00:00
Boxy
d0c11bf6e3
Split part of adt_const_params
into unsized_const_params
2024-07-17 11:01:29 +01:00
bors
51917ba8f2
Auto merge of #126171 - RalfJung:simd_bitmask_multibyte, r=workingjubilee
...
simd_bitmask intrinsic: add a non-power-of-2 multi-byte example
r? `@calebzulawski` `@workingjubilee`
2024-07-05 01:58:22 +00:00
Ralf Jung
e9dd39cda4
fix simd_bitmask return type for non-power-of-two inputs, and add tests
2024-07-01 17:25:14 +02:00
Jubilee Young
ac670721c9
test: dont optimize to invalid bitcasts
2024-06-24 16:54:18 -07:00
Jubilee
ca9dd62c05
Rollup merge of #125311 - calebzulawski:repr-packed-simd-intrinsics, r=workingjubilee
...
Make repr(packed) vectors work with SIMD intrinsics
In #117116 I fixed `#[repr(packed, simd)]` by doing the expected thing and removing padding from the layout. This should be the last step in providing a solution to rust-lang/portable-simd#319
2024-06-02 05:06:47 -07:00
Caleb Zulawski
9bdc5b2455
Improve documentation
2024-06-01 14:17:16 -04:00
Caleb Zulawski
86158f581d
Make repr(packed) vectors work with SIMD intrinsics
2024-05-20 01:09:29 -04:00
Jubilee Young
1914c722b5
compiler: add simd_ctpop intrinsic
2024-05-18 18:11:20 -07:00
Gary Guo
cfee72aa24
Fix tests and bless
2024-04-24 13:12:33 +01:00
joboet
989660c3e6
rename expose_addr
to expose_provenance
2024-04-03 16:00:38 +02:00
Jacob Pratt
e9ef8e1efa
Rollup merge of #122935 - RalfJung:with-exposed-provenance, r=Amanieu
...
rename ptr::from_exposed_addr -> ptr::with_exposed_provenance
As discussed on [Zulip](https://rust-lang.zulipchat.com/#narrow/stream/136281-t-opsem/topic/To.20expose.20or.20not.20to.20expose/near/427757066 ).
The old name, `from_exposed_addr`, makes little sense as it's not the address that is exposed, it's the provenance. (`ptr.expose_addr()` stays unchanged as we haven't found a better option yet. The intended interpretation is "expose the provenance and return the address".)
The new name nicely matches `ptr::without_provenance`.
2024-04-02 20:37:39 -04:00
Ralf Jung
f2cff5ebb9
also rename the SIMD intrinsic
2024-03-23 23:03:37 +01:00
Ralf Jung
67b9d7d184
rename ptr::from_exposed_addr -> ptr::with_exposed_provenance
2024-03-23 13:18:33 +01:00
Esteban Küber
6b24fdf811
Provide structured suggestion for unconstrained generic constant
...
```
error: unconstrained generic constant
--> $DIR/const-argument-if-length.rs:18:10
|
LL | pad: [u8; is_zst::<T>()],
| ^^^^^^^^^^^^^^^^^^^
|
help: try adding a `where` bound
|
LL | pub struct AtLeastByte<T: ?Sized> where [(); is_zst::<T>()]: {
| ++++++++++++++++++++++++++
```
Detect when the constant expression isn't `usize` and suggest casting:
```
error: unconstrained generic constant
--> f300.rs:6:10
|
6 | bb::<{!N}>();
| ^^^^
-Ztrack-diagnostics: created at compiler/rustc_trait_selection/src/traits/error_reporting/type_err_ctxt_ext.rs:3539:36
|
help: try adding a `where` bound
|
5 | fn b<const N: bool>() where [(); {!N} as usize]: {
| ++++++++++++++++++++++++++
```
Fix #122395 .
2024-03-21 00:03:59 +00:00
Ralf Jung
48f2f0d725
preserve span when evaluating mir::ConstOperand
2024-03-14 21:55:07 +01:00
Matthias Krüger
6a4dd19ade
Rollup merge of #122287 - RalfJung:simd-static-assert, r=pnkfelix
...
add test ensuring simd codegen checks don't run when a static assertion failed
stdarch relies on this to ensure that SIMD indices are in bounds.
I would love to know why this works, but I can't figure out where codegen decides to not codegen a function if a required-const does not evaluate. `@oli-obk` `@bjorn3` do you have any idea?
2024-03-14 15:44:33 +01:00
Alex Crichton
cf6d6050f7
Update test directives for wasm32-wasip1
...
* The WASI targets deal with the `main` symbol a bit differently than
native so some `codegen` and `assembly` tests have been ignored.
* All `ignore-emscripten` directives have been updated to
`ignore-wasm32` to be more clear that all wasm targets are ignored and
it's not just Emscripten.
* Most `ignore-wasm32-bare` directives are now gone.
* Some ignore directives for wasm were switched to `needs-unwind`
instead.
* Many `ignore-wasm32*` directives are removed as the tests work with
WASI as opposed to `wasm32-unknown-unknown`.
2024-03-11 09:36:35 -07:00
Ralf Jung
39db6a0972
add test ensuring simd codegen checks don't run when a static assertion failed
2024-03-10 12:37:10 +01:00
Ralf Jung
c1d0e489e5
fix use of platform_intrinsics in tests
2024-02-25 08:15:44 +01:00
Ralf Jung
8e0dd993d6
check that simd_insert/extract indices are in-bounds
2024-02-23 19:43:59 +01:00
bors
52dba5ffe7
Auto merge of #121225 - RalfJung:simd-extract-insert-const-idx, r=oli-obk,Amanieu
...
require simd_insert, simd_extract indices to be constants
As discussed in https://github.com/rust-lang/rust/issues/77477 (see in particular [here](https://github.com/rust-lang/rust/issues/77477#issuecomment-703149102 )). This PR doesn't touch codegen yet -- the first step is to ensure that the indices are always constants; the second step is to then make use of this fact in backends.
Blocked on https://github.com/rust-lang/stdarch/pull/1530 propagating to the rustc repo.
2024-02-22 09:59:41 +00:00
Ralf Jung
07b6240947
remove simd_reduce_{min,max}_nanless
2024-02-21 20:50:47 +01:00
Ralf Jung
90f5fed05b
update tests
2024-02-20 07:58:18 +01:00
许杰友 Jieyou Xu (Joe)
ec2cc761bc
[AUTO-GENERATED] Migrate ui tests from //
to //@
directives
2024-02-16 20:02:50 +00:00
Oli Scherer
5f6390f947
Continue compilation after check_mod_type_wf errors
2024-02-14 11:00:30 +00:00
Matthew Jasper
982b49494e
Remove revisions for THIR unsafeck
...
This is to make the diff when stabilizing it easier to review.
2024-01-05 09:30:27 +00:00
bors
8b1ba11cb1
Auto merge of #117116 - calebzulawski:repr-simd-packed, r=workingjubilee
...
Implement repr(packed) for repr(simd)
This allows creating vectors with non-power-of-2 lengths that do not have padding. See rust-lang/portable-simd#319
2023-12-11 08:07:20 +00:00
Jakub Okoński
97ae5095f5
Add simd_masked_{load,store} platform-intrinsics
...
This maps to the LLVM intrinsics: llvm.masked.load and llvm.masked.store
2023-12-09 12:36:08 +01:00
Caleb Zulawski
20413b1947
Add test using non-power-of-two vector
2023-12-02 10:53:19 -05:00
Caleb Zulawski
329412dad3
Implement repr(packed) for repr(simd)
2023-12-02 10:53:19 -05:00
Caleb Zulawski
4d9607869a
Update std::simd usage and test outputs
2023-11-26 09:02:25 -05:00
Nilstrieb
41e8d152dc
Show number in error message even for one error
...
Co-authored-by: Adrian <adrian.iosdev@gmail.com>
2023-11-24 19:15:52 +01:00
Esteban Küber
ec50f1c90b
When failing to import core
, suggest std
2023-11-22 19:30:47 +00:00
Oli Scherer
beaf46f7e5
Work around the fact that check_mod_type_wf
may spuriously return ErrorGuaranteed
, even if that error is only emitted by check_modwitem_types
2023-10-25 12:04:54 +00:00
Oli Scherer
1a01e57d27
Prototype using const generic for simd_shuffle IDX array
2023-09-18 15:10:28 +00:00
Oli Scherer
4457ef2c6d
Forbid old-style simd_shuffleN
intrinsics
2023-08-03 09:29:00 +00:00
Caleb Zulawski
77ed437de8
Fix simd_bswap for i8/u8
2023-07-30 15:40:32 -04:00
Caleb Zulawski
4709ca2bed
Format test
2023-07-28 00:09:04 -04:00
Caleb Zulawski
4c02b4cf4c
Add SIMD bitreverse, ctlz, cttz intrinsics
2023-07-27 23:53:45 -04:00
Caleb Zulawski
3ea0e6e3fb
Add simd_bswap intrinsic
2023-07-27 23:04:14 -04:00
Matthias Krüger
8c17e0701e
Rollup merge of #113529 - oli-obk:simd_shuffle_evaluated, r=wesleywiser
...
Permit pre-evaluated constants in simd_shuffle
fixes https://github.com/rust-lang/rust/issues/113500
2023-07-20 17:19:32 +02:00
Oli Scherer
c7428d5052
Monomorphize constants before inspecting them
2023-07-20 08:53:09 +00:00
chenx97
c6e03cd951
support for mips64r6 as a target_arch value
2023-07-18 18:58:18 +08:00
Oli Scherer
9e5a67e57f
Permit pre-evaluated constants in simd_shuffle
2023-07-18 08:13:55 +00:00
Luqman Aden
7b1eedaae8
Switch test back to run-pass.
2023-05-05 14:58:52 -07:00