17 Commits

Author SHA1 Message Date
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
Antoni Boucher
081eb744d2 Merge branch 'master' into 2022-08-26_sync_from_rust 2022-08-26 20:00:56 -04:00
Antoni Boucher
5f630f3c81 Cleanup regarding handling of recursive types 2022-07-23 20:37:55 -04:00
Ramon de C Valle
bfe3c24e9a Add fine-grained LLVM CFI support to the Rust compiler
This commit improves the LLVM Control Flow Integrity (CFI) support in
the Rust compiler by providing forward-edge control flow protection for
Rust-compiled code only by aggregating function pointers in groups
identified by their return and parameter types.

Forward-edge control flow protection for C or C++ and Rust -compiled
code "mixed binaries" (i.e., for when C or C++ and Rust -compiled code
share the same virtual address space) will be provided in later work as
part of this project by identifying C char and integer type uses at the
time types are encoded (see Type metadata in the design document in the
tracking issue #89653).

LLVM CFI can be enabled with -Zsanitizer=cfi and requires LTO (i.e.,
-Clto).
2022-07-23 10:51:34 -07:00
Antoni Boucher
fac57d9a06 Merge commit 'e8dca3e87d164d2806098c462c6ce41301341f68' into sync_from_cg_gcc 2022-06-06 22:04:37 -04:00
Antoni Boucher
ddc152b04d Add more SIMD 2022-05-03 17:47:46 -04:00
Antoni Boucher
4d7de81199 Add feature for future libgccjit 12 release 2022-04-13 23:01:01 -04:00
Antoni Boucher
927eea3860 Add support for packed struct 2022-03-29 22:52:25 -04:00
Antoni Boucher
02970a6ca8 Add support for target builtins 2022-03-29 21:41:17 -04:00
bjorn3
3888aafe3a Merge commit '39683d8eb7a32a74bea96ecbf1e87675d3338506' into sync_cg_gcc-2022-03-26 2022-03-26 18:29:37 +01:00
bjorn3
9c3a1235c5 Fix type_kind implementation 2022-02-01 17:58:03 +01:00
antoyo
41f20fa3a5
Support 128-bit integers on platforms without native support (#103)
* Use sized integer types

* Add support for integer types not supported on some platforms

* Add feature to test non-native integers in CI
2022-01-30 21:45:14 -05:00
bjorn3
54d2ec1a82 Merge commit '1411a98352ba6bee8ba3b0131c9243e5db1e6a2e' into sync_cg_clif-2021-12-31 2021-12-31 16:26:32 +01:00
antoyo
2989a25273
Feature/global rvalue initialization petter tomner (#111)
* Use new initialization functions

* Fix for new reflection patch

* Fix for new TLS patch
2021-12-15 23:48:10 -05:00
antoyo
e228f0c16e
Cleanup (#67) 2021-08-15 08:28:46 -04:00
antoyo
0c89065b93
Update to nightly-2021-08-12 (#61) 2021-08-14 10:05:49 -04:00
Antoni Boucher
afae271d5d Initial commit 2021-08-12 21:46:50 -04:00