Commit Graph

1509 Commits

Author SHA1 Message Date
bjorn3
f1ede97b14 Update portable-simd test and implement new simd_* platform intrinsics 2023-10-02 14:44:10 +00:00
bjorn3
c974bc89b8 Update regex and implement necessary AArch64 vendor intrinsics
Upstream has removed the shootout-regex-dna example.
2023-10-02 13:45:48 +00:00
bjorn3
654bc614dd Fix simd_shuffle_generic intrinsic 2023-10-02 13:06:07 +00:00
bjorn3
aeeed8a683 Sync from rust e0d7ed1f45 2023-10-02 12:52:42 +00:00
bors
81d219a27d Auto merge of #115933 - oli-obk:simd_shuffle_const, r=workingjubilee
Prototype using const generic for simd_shuffle IDX array

cc https://github.com/rust-lang/rust/issues/85229

r? `@workingjubilee` on the design

TLDR: there is now a `fn simd_shuffle_generic<T, U, const IDX: &'static [u32]>(x: T, y: T) -> U;` intrinsic that allows replacing

```rust
simd_shuffle(a, b, const { stuff })
```

with

```rust
simd_shuffle_generic::<_, _, {&stuff}>(a, b)
```

which makes the compiler implementations much simpler, if we manage to at some point eliminate `simd_shuffle`.

There are some issues with this today though (can't do math without bubbling it up in the generic arguments). With this change, we can start porting the simple cases and get better data on the others.
2023-09-30 04:05:26 +00:00
Oli Scherer
809cd20618 Skip reinterning if nothing changed 2023-09-28 16:13:38 +00:00
Oli Scherer
17d7821a2a Strip OpaqueCast during RevealAll. 2023-09-28 16:13:38 +00:00
bjorn3
cb55ce11dc Fix potential crash on large constant ZST slice 2023-09-26 16:52:08 +00:00
bjorn3
b03d0b8512 Sync from rust 0288f2e195 2023-09-26 15:12:11 +00:00
lcnr
159293cdbf subst -> instantiate 2023-09-26 09:37:55 +02:00
bjorn3
8071ec78ea Always explicitly set the preserve_frame_pointers value 2023-09-21 15:03:46 +00:00
bjorn3
02dec62de5 Update to Cranelift 0.100
This skips Cranelift 0.99 as it depends on an object version that is broken on
macOS.
2023-09-21 13:33:30 +00:00
Guillaume Gomez
1351de36ee Rollup merge of #115972 - RalfJung:const-consistency, r=oli-obk
rename mir::Constant -> mir::ConstOperand, mir::ConstKind -> mir::Const

Also, be more consistent with the `to/eval_bits` methods... we had some that take a type and some that take a size, and then sometimes the one that takes a type is called `bits_for_ty`.

Turns out that `ty::Const`/`mir::ConstKind` carry their type with them, so we don't need to even pass the type to those `eval_bits` functions at all.

However this is not properly consistent yet: in `ty` we have most of the methods on `ty::Const`, but in `mir` we have them on `mir::ConstKind`. And indeed those two types are the ones that correspond to each other. So `mir::ConstantKind` should actually be renamed to `mir::Const`. But what to do with `mir::Constant`? It carries around a span, that's really more like a constant operand that appears as a MIR operand... it's more suited for `syntax.rs` than `consts.rs`, but the bigger question is, which name should it get if we want to align the `mir` and `ty` types? `ConstOperand`? `ConstOp`? `Literal`? It's not a literal but it has a field called `literal` so it would at least be consistently wrong-ish...

``@oli-obk`` any ideas?
2023-09-21 13:25:39 +02:00
Ralf Jung
0e02cab8ba rename mir::Constant -> mir::ConstOperand, mir::ConstKind -> mir::Const 2023-09-21 08:12:30 +02:00
Ralf Jung
dd48b5e393 adjust constValue::Slice to work for arbitrary slice types 2023-09-19 20:17:43 +02:00
bjorn3
9b855a9f61 Add missing with_no_trimmed_paths to CommentWriter::new() 2023-09-19 12:44:31 +00:00
bjorn3
baee5ce1fc Rustup to rustc 1.74.0-nightly (65ea825f4 2023-09-18) 2023-09-19 12:34:26 +00:00
bjorn3
5f3b867831 Sync from rust 65ea825f40 2023-09-19 12:25:47 +00:00
Ralf Jung
247d38d174 move ConstValue into mir
this way we have mir::ConstValue and ty::ValTree as reasonably parallel
2023-09-19 11:11:02 +02:00
bors
46b55ae176 Auto merge of #115748 - RalfJung:post-mono, r=oli-obk
move required_consts check to general post-mono-check function

This factors some code that is common between the interpreter and the codegen backends into shared helper functions. Also as a side-effect the interpreter now uses the same `eval` functions as everyone else to get the evaluated MIR constants.

Also this is in preparation for another post-mono check that will be needed for (the current hackfix for) https://github.com/rust-lang/rust/issues/115709: ensuring that all locals are dynamically sized.

I didn't expect this to change diagnostics, but it's just cycle errors that change.

r? `@oli-obk`
2023-09-18 19:41:21 +00:00
Oli Scherer
6fd5dc8860 Prototype using const generic for simd_shuffle IDX array 2023-09-18 15:10:28 +00:00
Ralf Jung
f9f8bffaec fix gcc, cranelift build 2023-09-15 10:43:44 +02:00
Ralf Jung
89f0d18bc8 clarify PassMode::Indirect as well 2023-09-15 10:43:44 +02:00
Ralf Jung
b7cc765b60 don't point at const usage site for resolution-time errors
also share the code that emits the actual error
2023-09-14 22:34:05 +02:00
Ralf Jung
3113fef3a3 move required_consts check to general post-mono-check function 2023-09-14 22:30:42 +02:00
onur-ozkan
e048674ea5 organize import sections with rustfmt group_imports
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-09-14 18:45:33 +00:00
bjorn3
d8c1393557 Avoid mir_operand_get_const_val for simd_shuffle and cmpps and cmppd 2023-09-14 18:35:34 +00:00
Ralf Jung
90d894e122 make it more clear which functions create fresh AllocId 2023-09-14 07:27:31 +02:00
Ralf Jung
a5b81faef0 cleanup op_to_const a bit; rename ConstValue::ByRef → Indirect 2023-09-14 07:27:30 +02:00
Ralf Jung
d1ea6997e8 use AllocId instead of Allocation in ConstValue::ByRef 2023-09-14 07:26:24 +02:00
Matthias Krüger
1956fb84f3 Rollup merge of #115798 - RalfJung:non_1zst_field, r=wesleywiser
add helper method for finding the one non-1-ZST field
2023-09-13 18:37:42 +02:00
Matthias Krüger
9475cdb02d Rollup merge of #115736 - Zoxc:time-cleanup, r=wesleywiser
Remove `verbose_generic_activity_with_arg`

This removes `verbose_generic_activity_with_arg` and changes users to `generic_activity_with_arg`. This keeps the output of `-Z time` readable while these repeated events are still available with the self profiling mechanism.
2023-09-13 18:37:41 +02:00
Ralf Jung
8e6f68be39 make the eval() functions on our const types return the resulting value 2023-09-13 07:29:34 +02:00
Ralf Jung
72fb4b8f31 add helper method for finding the one non-1-ZST field 2023-09-12 20:52:05 +02:00
John Kåre Alsaker
4f6e9fd8d3 Remove verbose_generic_activity_with_arg 2023-09-10 17:47:16 +02:00
John Kåre Alsaker
4ecfd30a86 Use Freeze for SourceFile.lines 2023-09-07 13:05:05 +02:00
bors
d4f12a5ed3 Auto merge of #115580 - eduardosm:stdarch-intrinsics, r=davidtwco,bjorn3
Update stdarch submodule and remove special handling in cranelift codegen for some AVX and SSE2 LLVM intrinsics

https://github.com/rust-lang/stdarch/pull/1463 reimplemented some x86 intrinsics to avoid using some x86-specific LLVM intrinsics:

* Store unaligned (`_mm*_storeu_*`) use `<*mut _>::write_unaligned` instead of `llvm.x86.*.storeu.*`.
* Shift by immediate (`_mm*_s{ll,rl,ra}i_epi*`) use `if` (srl, sll) or `min` (sra) to simulate the behaviour when the RHS is out of range. RHS is constant, so the `if`/`min` will be optimized away.

This PR updates the stdarch submodule to pull these changes and removes special handling for those LLVM intrinsics from cranelift codegen. I left gcc codegen untouched because there are some autogenerated lists.
2023-09-06 22:26:37 +00:00
Eduardo Sánchez Muñoz
4cd5177015 Remove special handling in codegen for some AVX and SSE2 shift by immediate intrinsics
Those were removed from stdarch in https://github.com/rust-lang/stdarch/pull/1463 (`simd_shl` and `simd_shr` are used instead)
2023-09-05 20:17:01 +02:00
Eduardo Sánchez Muñoz
9f562f290d Remove special handling in codegen for some SSE2 "storeu" intrinsics
Those were removed from stdarch in https://github.com/rust-lang/stdarch/pull/1463 (`<*mut _>::write_unaligned` is used instead)
2023-09-05 20:06:50 +02:00
Camille GILLOT
61a0b77e17 Use relative positions inside a SourceFile. 2023-09-03 12:56:10 +00:00
Matthias Krüger
65d75fdc38 Rollup merge of #111580 - atsuzaki:layout-ice, r=oli-obk
Don't ICE on layout computation failure

Fixes #111176 regression.

r? `@oli-obk`
2023-08-29 20:49:02 +02:00
Ralf Jung
833592766f const_eval and codegen: audit uses of is_zst 2023-08-29 09:03:46 +02:00
Katherine Philip
b88dfcfcd5 Don't ICE on layout computation failure 2023-08-28 12:40:39 -07:00
Scott McMurray
25a2ba2ee4 Use preserve_mostcc for extern "rust-cold"
As experimentation in 115242 has shown looks better than `coldcc`.

And *don't* use a different convention for cold on Windows, because that actually ends up making things worse.

cc tracking issue 97544
2023-08-26 17:42:59 -07:00
Ralf Jung
3f4145e169 when terminating during unwinding, show the reason why 2023-08-24 13:28:26 +02:00
Ralf Jung
18658cb0c9 give some unwind-related terminators a more clear name 2023-08-20 15:52:38 +02:00
Michael Goulet
b705d2dcbd Rollup merge of #114622 - petrochenkov:noplugin, r=oli-obk
rustc: Move `crate_types` and `stable_crate_id` from `Session` to `GlobalCtxt`

Removes two pieces of mutable state.
Follow up to https://github.com/rust-lang/rust/pull/114578.
2023-08-10 21:17:07 -07:00
bors
0777ae620b Auto merge of #114673 - matthiaskrgr:rollup-9kroqpp, r=matthiaskrgr
Rollup of 6 pull requests

Successful merges:

 - #110435 (rustdoc-json: Add test for field ordering.)
 - #111891 (feat: `riscv-interrupt-{m,s}` calling conventions)
 - #114377 (test_get_dbpath_for_term(): handle non-utf8 paths (fix FIXME))
 - #114469 (Detect method not found on arbitrary self type with different mutability)
 - #114587 (Convert Const to Allocation in smir)
 - #114670 (Don't use `type_of` to determine if item has intrinsic shim)

Failed merges:

 - #114599 (Add impl trait declarations to SMIR)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-08-09 23:27:46 +00:00
bjorn3
59cabd7032 Merge commit '8f9ac9c22d6594cf059d8e6c71d414cc5ccd7975' into sync_cg_clif-2023-08-09 2023-08-09 18:20:12 +00:00
Vadim Petrochenkov
b107241218 rustc: Move crate_types from Session to GlobalCtxt
Removes a piece of mutable state.
Follow up to #114578.
2023-08-09 14:17:54 +08:00