675 Commits

Author SHA1 Message Date
Guillaume Gomez
b3198c72db Add missing register class conversion for inline asm 2022-10-18 16:29:33 +02:00
Antoni Boucher
173db39f91 Fix simd_select 2022-10-09 14:24:35 -04:00
Antoni Boucher
e5ce7a9846 Fix simd_select_bitmask 2022-10-09 14:24:35 -04:00
Antoni Boucher
f73dea7e55 Fix simd_bitmask 2022-10-09 11:42:12 -04:00
Antoni Boucher
1fa8b26426 Fix vector_select 2022-10-09 11:25:40 -04:00
Antoni Boucher
74dac5d970 Fix vfmadd 2022-10-08 15:05:23 -04:00
Antoni Boucher
c573621812 Fix some vfmaddsub intrinsics 2022-10-08 14:45:17 -04:00
Antoni Boucher
23a1a86835 More debug options 2022-10-08 14:37:19 -04:00
Andy Sadler
436710fa9b
simd: enable simd_as intrinsic
The method context.convert_vector, added to libgccjit for simd_cast,
appears to give the correct behavior for simd_as.  Instead of
special-casing simd_as, re-use simd_cast's impl for simd_as.

Signed-off-by: Andy Sadler <andrewsadler122@gmail.com>
2022-10-02 19:04:49 -05:00
bjorn3
413edf6771 Remove type argument of array_alloca and rename to byte_array_alloca 2022-10-02 13:42:14 +00:00
bjorn3
af0b18b454 Remove dynamic_alloca from BuilderMethods 2022-10-02 13:42:02 +00:00
Antoni Boucher
a0654b398b Implement llvm.prefetch 2022-10-01 15:18:51 -04:00
bjorn3
3f43ee2407 Merge apply_attrs_callsite into call and invoke
Some codegen backends are not able to apply callsite attrs after the fact.
2022-10-01 17:01:31 +00:00
bjorn3
69a065ef81 Remove unused target_cpu and tune_cpu methods from ExtraBackendMethods 2022-10-01 16:45:33 +00:00
bjorn3
29edc888bd Remove several unused methods from MiscMethods 2022-10-01 16:45:07 +00:00
bjorn3
2db7a873de Remove unused Context assoc type from WriteBackendMethods 2022-10-01 16:34:45 +00:00
Antoni Boucher
908304e257 Rewrite inbounds_gep with a loop 2022-10-01 12:31:39 -04:00
Antoni Boucher
6b7e16f87e Add more debugging options 2022-10-01 12:31:39 -04:00
Antoni Boucher
ed570f6678 Fix gep 2022-10-01 12:31:39 -04:00
Antoni Boucher
12105bc0d7 Fix pointer comparison 2022-09-30 18:23:37 -04:00
Ellis Hoag
5ae3bf2ed3 print <signal> when ranlib failed without an exit code 2022-09-28 19:02:38 -07:00
Andy Sadler
688f742658
simd: implement float math intrinsics
Implements the intrinsics required to pass float-math-pass and
libm_std_can_float ui tests.

Signed-off-by: Andy Sadler <andrewsadler122@gmail.com>
2022-09-27 21:58:55 -05:00
Ellis Hoag
277b997adc lint and remove unused diagnostic 2022-09-26 19:57:40 -07:00
Ellis Hoag
d1741f6d62 remove comment 2022-09-24 15:03:14 -07:00
Ellis Hoag
0ae1e27b17 fix lifetime error 2022-09-24 11:36:16 -07:00
Ellis Hoag
43b3206571 rebase and update trait names 2022-09-24 11:06:05 -07:00
Ellis Hoag
5c839d995b impl SessionDiagnostic for LayoutError and Spanned<T> 2022-09-24 10:25:19 -07:00
Ellis Hoag
059326c4bd Add monomorphization errors 2022-09-24 10:24:48 -07:00
Ellis Hoag
70ab0548a0 lint type 2022-09-24 10:24:48 -07:00
Ellis Hoag
d3bb849fe9 Add wrapper type for ExitCode for use in RanlibFailure 2022-09-24 10:24:48 -07:00
Ellis Hoag
ff9bf7b6b3 remove IntoDiagnosticArg impl for Option 2022-09-24 10:24:48 -07:00
Ellis Hoag
1f3ae14c83 Lint against untranslatable diagnostics in rustc_codegen_gcc 2022-09-24 10:24:48 -07:00
Ellis Hoag
534ce39aac Add LayoutSizeOverflow 2022-09-24 10:24:48 -07:00
Ellis Hoag
33b58ebf22 Add LTONotSupported 2022-09-24 10:24:48 -07:00
Ellis Hoag
7fc07caf67 Add UnwindingInlineAsm 2022-09-24 10:24:48 -07:00
Ellis Hoag
7277046d84 Add LinkageConstOrMutType 2022-09-24 10:24:48 -07:00
Ellis Hoag
23eae52d45 Add RanlibFailure 2022-09-24 10:24:48 -07:00
Andy Sadler
d7d820fc47
simd: impl extract_element for vector types
This fixes some tests that needed vector element extraction.

Signed-off-by: Andy Sadler <andrewsadler122@gmail.com>
2022-09-09 10:07:36 -05:00
Oli Scherer
c3dce60ac7 Remove dead broken code from const zst handling in backends 2022-09-06 14:09:49 +00:00
Andy Sadler
1d3ca135d0
simd: implement simd_fmin/fmax
This implements simd_fmin/fmax in a largely-optimal method.

Signed-off-by: Andy Sadler <andrewsadler122@gmail.com>
2022-08-30 19:34:27 -05:00
Dylan DPC
ecb861316e Rollup merge of #100653 - cuviper:fptoint_sat, r=michaelwoerister,antoyo
Move the cast_float_to_int fallback code to GCC

Now that we require at least LLVM 13, that codegen backend is always
using its intrinsic `fptosi.sat` and `fptoui.sat` conversions, so it
doesn't need the manual implementation. However, the GCC backend still
needs it, so we can move all of that code down there.
2022-08-30 16:56:09 +05:30
Dylan DPC
f2d73af6d7 Rollup merge of #101101 - RalfJung:read-pointer-as-bytes, r=oli-obk
interpret: make read-pointer-as-bytes a CTFE-only error with extra information

Next step in the reaction to https://github.com/rust-lang/rust/issues/99923. Also teaches Miri to implicitly strip provenance in more situations when transmuting pointers to integers, which fixes https://github.com/rust-lang/miri/issues/2456.

Pointer-to-int transmutation during CTFE now produces a message like this:
```
   = help: this code performed an operation that depends on the underlying bytes representing a pointer
   = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported
```

r? ``@oli-obk``
2022-08-30 11:26:51 +05:30
Antoni Boucher
45ec5f2676 Fix bitcast to a type of a different size 2022-08-28 20:58:11 -04:00
bors
7006047b2d Auto merge of #96946 - WaffleLapkin:ptr_mask, r=scottmcm
Add pointer masking convenience functions

This PR adds the following public API:
```rust
impl<T: ?Sized> *const T {
    fn mask(self, mask: usize) -> *const T;
}

impl<T: ?Sized> *mut T {
    fn mask(self, mask: usize) -> *const T;
}

// mod intrinsics
fn mask<T>(ptr: *const T, mask: usize) -> *const T
```
This is equivalent to `ptr.map_addr(|a| a & mask)` but also uses a cool llvm intrinsic.

Proposed in https://github.com/rust-lang/rust/pull/95643#issuecomment-1121562352

cc `@Gankra` `@scottmcm` `@RalfJung`

r? rust-lang/libs-api
2022-08-28 01:34:47 +00:00
Antoni Boucher
fc56c54416 Remove extra newline in asm 2022-08-27 19:41:37 -04:00
antoyo
06b6ec0ebe
Merge pull request #211 from rust-lang/fix/used-function-attribute-inline-asm
Add used function attribute from inline asm
2022-08-27 18:42:26 -04:00
Antoni Boucher
5c2dec038c Add used function attribute from inline asm 2022-08-27 17:26:46 -04:00
Guillaume Gomez
e82c6a07ff Regen intrinsics 2022-08-27 21:05:25 +02:00
Ralf Jung
c32ad5c229 interpret: rename relocation → provenance 2022-08-27 14:11:19 -04:00
Andy Sadler
4df874f73d simd: Implement missing reduction intrinsics
Implements the following simd reduction intrinsics:
- simd_reduce_add_ordered
- simd_reduce_mul_ordered
- simd_reduce_min_nanless
- simd_reduce_max_nanless
- simd_reduce_xor
- simd_reduce_any
- simd_reduce_all

Also fixes the ordering of simd_reduce_min and simd_reduce_max,
which were tested to be flipped.

Both simd_reduce_min_nanless and simd_reduce_max_nanless are identical
to their non-nanless variants for the time being.  An attempt was made
at a more optimal codegen solution based on vector_reduce_op.  However,
this approach ran into masking issues for floating-point vector types,
which appears to be broken for the same reason that comparison
operations such as simd_lt are broken for floating-point vector types.
More investigation is required, however, to determine a root cause and
appropriate fix.

This should be enough to pass the generic-reduction-pass.rs ui tests
with the 'master' feature enabled.

Signed-off-by: Andy Sadler <andrewsadler122@gmail.com>
2022-08-27 12:16:37 -05:00