rust/compiler
Dylan DPC 67d6cc6ef3
Rollup merge of #91608 - workingjubilee:fold-neon-fp, r=nagisa,Amanieu
Fold aarch64 feature +fp into +neon

Arm's FEAT_FP and Feat_AdvSIMD describe the same thing on AArch64:
The Neon unit, which handles both floating point and SIMD instructions.
Moreover, a configuration for AArch64 must include both or neither.
Arm says "entirely proprietary" toolchains may omit floating point:
https://developer.arm.com/documentation/102374/0101/Data-processing---floating-point
In the Programmer's Guide for Armv8-A, Arm says AArch64 can have
both FP and Neon or neither in custom implementations:
https://developer.arm.com/documentation/den0024/a/AArch64-Floating-point-and-NEON

In "Bare metal boot code for Armv8-A", enabling Neon and FP
is just disabling the same trap flag:
https://developer.arm.com/documentation/dai0527/a

In an unlikely future where "Neon and FP" become unrelated,
we can add "[+-]fp" as its own feature flag.
Until then, we can simplify programming with Rust on AArch64 by
folding both into "[+-]neon", which is valid as it supersets both.

"[+-]neon" is retained for niche uses such as firmware, kernels,
"I just hate floats", and so on.

I am... pretty sure no one is relying on this.

An argument could be made that, as we are not an "entirely proprietary" toolchain, we should not support AArch64 without floats at all. I think that's a bit excessive. However, I want to recognize the intent: programming for AArch64 should be simplified where possible. For x86-64, programmers regularly set up illegal feature configurations because it's hard to understand them, see https://github.com/rust-lang/rust/issues/89586. And per the above notes, plus the discussion in https://github.com/rust-lang/rust/issues/86941, there should be no real use cases for leaving these features split: the two should in fact always go together.

- Fixes rust-lang/rust#95002.
- Fixes rust-lang/rust#95064.
- Fixes rust-lang/rust#95122.
2022-03-23 03:05:28 +01:00
..
rustc remove unused jemallocator crate 2022-01-28 16:56:05 +01:00
rustc_apfloat Stabilize iter::zip. 2021-12-14 18:50:31 -04:00
rustc_arena Remove unused dep from rustc_arena 2022-02-02 17:37:14 +01:00
rustc_ast Auto merge of #94584 - pnkfelix:inject-use-suggestion-sites, r=ekuber 2022-03-15 03:56:33 +00:00
rustc_ast_lowering Rollup merge of #94960 - codehorseman:master, r=oli-obk 2022-03-17 22:55:05 +01:00
rustc_ast_passes rustc_error: make ErrorReported impossible to construct 2022-03-16 10:35:24 -05:00
rustc_ast_pretty Change syntax for TyAlias where clauses 2022-03-05 13:13:45 -05:00
rustc_attr Rollup merge of #94948 - jhpratt:rustc_deprecated, r=Dylan-DPC 2022-03-20 09:14:59 +01:00
rustc_borrowck diagnostics: do not give Option::as_ref suggestion for complex match 2022-03-19 15:54:30 -07:00
rustc_builtin_macros Auto merge of #94584 - pnkfelix:inject-use-suggestion-sites, r=ekuber 2022-03-15 03:56:33 +00:00
rustc_codegen_cranelift Merge commit '370c397ec9169809e5ad270079712e0043514240' into sync_cg_clif-2022-03-20 2022-03-20 16:55:21 +01:00
rustc_codegen_gcc Auto merge of #88098 - Amanieu:oom_panic, r=nagisa 2022-03-18 03:01:46 +00:00
rustc_codegen_llvm Rollup merge of #91608 - workingjubilee:fold-neon-fp, r=nagisa,Amanieu 2022-03-23 03:05:28 +01:00
rustc_codegen_ssa Rollup merge of #91608 - workingjubilee:fold-neon-fp, r=nagisa,Amanieu 2022-03-23 03:05:28 +01:00
rustc_const_eval rename LocalState::Uninitialized to Unallocated 2022-03-21 22:48:11 -04:00
rustc_data_structures add #[rustc_pass_by_value] to more types 2022-03-08 15:39:52 +01:00
rustc_driver rustc_error: make ErrorReported impossible to construct 2022-03-16 10:35:24 -05:00
rustc_error_codes Rollup merge of #94555 - cuishuang:master, r=oli-obk 2022-03-03 20:01:48 +01:00
rustc_errors rustc_error: make ErrorReported impossible to construct 2022-03-16 10:35:24 -05:00
rustc_expand Auto merge of #95159 - nnethercote:TtParser, r=petrochenkov 2022-03-22 21:46:57 +00:00
rustc_feature move adt_const_params to its own tracking issue 2022-03-21 16:33:42 +01:00
rustc_fs_util
rustc_graphviz eplace usages of vec![].into_iter with [].into_iter 2022-01-09 14:09:25 +11:00
rustc_hir Give more details in Display for hir::Target 2022-03-19 02:03:37 -07:00
rustc_hir_pretty resolve: Fix incorrect results of opt_def_kind query for some built-in macros 2022-02-24 22:54:36 +03:00
rustc_incremental rustc_error: make ErrorReported impossible to construct 2022-03-16 10:35:24 -05:00
rustc_index Fix small typo in FIXME 2022-03-15 12:04:23 +01:00
rustc_infer rustc_error: make ErrorReported impossible to construct 2022-03-16 10:35:24 -05:00
rustc_interface Auto merge of #88098 - Amanieu:oom_panic, r=nagisa 2022-03-18 03:01:46 +00:00
rustc_lexer Add test for >65535 hashes in lexing raw string 2022-03-16 06:37:41 +01:00
rustc_lint rustc_error: make ErrorReported impossible to construct 2022-03-16 10:35:24 -05:00
rustc_lint_defs resolve the conflict in compiler/rustc_session/src/parse.rs 2022-03-16 20:12:30 +08:00
rustc_llvm RustWrapper: add missing include 2022-03-10 11:16:33 -05:00
rustc_log Make rustc_log doc test runnable 2022-01-03 22:31:56 -08:00
rustc_macros add #[rustc_pass_by_value] to more types 2022-03-08 15:39:52 +01:00
rustc_metadata rustc_error: make ErrorReported impossible to construct 2022-03-16 10:35:24 -05:00
rustc_middle fix two comments referring to moved code (rustc_mir_transform::generator) 2022-03-20 23:31:04 +01:00
rustc_mir_build Rollup merge of #94960 - codehorseman:master, r=oli-obk 2022-03-17 22:55:05 +01:00
rustc_mir_dataflow Improve AdtDef interning. 2022-03-11 13:31:24 +11:00
rustc_mir_transform Rollup merge of #95196 - RalfJung:unalloc-not-uninit, r=oli-obk 2022-03-22 19:07:34 +01:00
rustc_monomorphize rustc_error: make ErrorReported impossible to construct 2022-03-16 10:35:24 -05:00
rustc_parse Auto merge of #95215 - Dylan-DPC:rollup-l9f9t7l, r=Dylan-DPC 2022-03-22 19:06:04 +00:00
rustc_parse_format Correctly mark the span of captured arguments in format_args!() 2022-02-16 07:34:06 +00:00
rustc_passes use format-args-capture and remove unnecessary nested if blocks in some parts of rustc_passes 2022-03-22 00:02:18 +09:00
rustc_plugin_impl replace dynamic library module with libloading 2021-12-06 12:03:47 -05:00
rustc_privacy rustc_error: make ErrorReported impossible to construct 2022-03-16 10:35:24 -05:00
rustc_query_impl Auto merge of #94084 - Mark-Simulacrum:drop-sharded, r=cjgillot 2022-02-27 14:04:07 +00:00
rustc_query_system rename ErrorReported -> ErrorGuaranteed 2022-03-02 09:45:25 -06:00
rustc_resolve Return err instead of ICE 2022-03-21 19:56:23 +03:00
rustc_save_analysis Improve AdtDef interning. 2022-03-11 13:31:24 +11:00
rustc_serialize Delete Decoder::read_unit 2022-02-22 18:14:51 -05:00
rustc_session Auto merge of #88098 - Amanieu:oom_panic, r=nagisa 2022-03-18 03:01:46 +00:00
rustc_span Add deprecated_safe feature gate and attribute, cc #94978 2022-03-15 19:48:52 -03:00
rustc_symbol_mangling resolve the conflict in compiler/rustc_session/src/parse.rs 2022-03-16 20:12:30 +08:00
rustc_target Rollup merge of #91608 - workingjubilee:fold-neon-fp, r=nagisa,Amanieu 2022-03-23 03:05:28 +01:00
rustc_trait_selection Rollup merge of #95039 - spastorino:overlap-super-predicates, r=nikomatsakis 2022-03-18 05:21:55 +01:00
rustc_traits Improve AdtDef interning. 2022-03-11 13:31:24 +11:00
rustc_ty_utils Rollup merge of #94960 - codehorseman:master, r=oli-obk 2022-03-17 22:55:05 +01:00
rustc_type_ir Inline UnifyKey::index and UnifyKey::from_index 2022-02-15 19:07:06 +01:00
rustc_typeck suggest constraining param for unary ops when missing trait impl 2022-03-22 12:17:30 +08:00