rust/compiler
bors 481ba16439 Auto merge of #84339 - alexcrichton:llvm-fptoint-sat, r=nagisa
rustc: Use LLVM's new saturating float-to-int intrinsics

This commit updates rustc, with an applicable LLVM version, to use
LLVM's new `llvm.fpto{u,s}i.sat.*.*` intrinsics to implement saturating
floating-point-to-int conversions. This results in a little bit tighter
codegen for x86/x86_64, but the main purpose of this is to prepare for
upcoming changes to the WebAssembly backend in LLVM where wasm's
saturating float-to-int instructions will now be implemented with these
intrinsics.

This change allows simplifying a good deal of surrounding code, namely
removing a lot of wasm-specific behavior. WebAssembly no longer has any
special-casing of saturating arithmetic instructions and the need for
`fptoint_may_trap` is gone and all handling code for that is now
removed. This means that the only wasm-specific logic is in the
`fpto{s,u}i` instructions which only get used for "out of bounds is
undefined behavior". This does mean that for the WebAssembly target
specifically the Rust compiler will no longer be 100% compatible with
pre-LLVM 12 versions, but it seems like that's unlikely to be relied on
by too many folks.

Note that this change does immediately regress the codegen of saturating
float-to-int casts on WebAssembly due to the specialization of the LLVM
intrinsic not being present in our LLVM fork just yet. I'll be following
up with an LLVM update to pull in those patches, but affects a few other
SIMD things in flight for WebAssembly so I wanted to separate this change.

Eventually the entire `cast_float_to_int` function can be removed when
LLVM 12 is the minimum version, but that will require sinking the
complexity of it into other backends such as Cranelfit.
2021-04-23 18:35:49 +00:00
..
rustc use jemallocator in rustc/rustdoc 2021-04-04 14:10:26 -07:00
rustc_apfloat Use iter::zip in compiler/ 2021-03-26 09:32:31 -07:00
rustc_arena Remove (lots of) dead code 2021-03-27 22:16:33 -04:00
rustc_ast Auto merge of #84334 - klensy:typo-compiler, r=jyn514 2021-04-20 00:16:45 +00:00
rustc_ast_lowering Lower async fn in traits. 2021-04-13 20:57:44 +02:00
rustc_ast_passes Review comments 2021-04-21 11:49:59 -04:00
rustc_ast_pretty Use AnonConst for asm! constants 2021-04-06 12:35:41 +01:00
rustc_attr Allow specifying alignment for functions 2021-04-05 17:36:51 -04:00
rustc_builtin_macros builtin derive macros: fix error with const generics default 2021-04-16 16:29:11 +02:00
rustc_codegen_cranelift Add more SIMD math.h intrinsics 2021-04-14 15:25:06 -07:00
rustc_codegen_llvm Disable LLVM's new fptoint intrinsics on riscv64 2021-04-23 07:45:23 -07:00
rustc_codegen_ssa Auto merge of #84339 - alexcrichton:llvm-fptoint-sat, r=nagisa 2021-04-23 18:35:49 +00:00
rustc_data_structures Use arrayvec 0.7, drop smallvec 0.6 2021-04-21 22:39:08 -07:00
rustc_driver Rollup merge of #83895 - eggyal:issue-83883, r=jyn514 2021-04-06 17:42:31 +02:00
rustc_error_codes Auto merge of #83799 - crlf0710:stablize_non_ascii_idents, r=Manishearth 2021-04-18 23:28:43 +00:00
rustc_errors fix few typos 2021-04-19 15:57:08 +03:00
rustc_expand fix few typos 2021-04-19 15:57:08 +03:00
rustc_feature Auto merge of #84091 - tmiasko:check-attrs-sym, r=davidtwco 2021-04-19 18:05:44 +00:00
rustc_fs_util
rustc_graphviz Remove (lots of) dead code 2021-03-27 22:16:33 -04:00
rustc_hir Rollup merge of #83980 - pierwill:fix-compiler-librustc-names, r=davidtwco 2021-04-08 20:29:58 +02:00
rustc_hir_pretty Use AnonConst for asm! constants 2021-04-06 12:35:41 +01:00
rustc_incremental Also profile finishing the encoding. 2021-03-30 18:10:08 +02:00
rustc_index Use arrayvec 0.7, drop smallvec 0.6 2021-04-21 22:39:08 -07:00
rustc_infer fix few typos 2021-04-19 15:57:08 +03:00
rustc_interface Track -C link-dead-code during incremental compilation 2021-04-15 15:05:26 -04:00
rustc_lexer Fix outdated crate names in compiler docs 2021-04-08 11:12:14 -05:00
rustc_lint fix few typos 2021-04-19 15:57:08 +03:00
rustc_lint_defs fix few typos 2021-04-19 15:57:08 +03:00
rustc_llvm RustWrapper: work around unification of diagnostic handlers 2021-04-22 15:46:47 -04:00
rustc_macros Use iter::zip in compiler/ 2021-03-26 09:32:31 -07:00
rustc_metadata Rollup merge of #83820 - petrochenkov:nolinkargs, r=nagisa 2021-04-05 00:24:33 +02:00
rustc_middle Rollup merge of #84343 - camsteffen:closure-tree, r=varkor 2021-04-22 18:14:32 +02:00
rustc_mir Auto merge of #84353 - estebank:as-ref-mir, r=davidtwco 2021-04-20 14:05:12 +00:00
rustc_mir_build Auto merge of #84295 - richkadel:continue-coverage, r=tmandry 2021-04-20 03:08:24 +00:00
rustc_parse fix few typos 2021-04-19 15:57:08 +03:00
rustc_parse_format Rollup merge of #83348 - osa1:issue83344, r=jackh726 2021-03-28 01:33:13 +09:00
rustc_passes Rollup merge of #84343 - camsteffen:closure-tree, r=varkor 2021-04-22 18:14:32 +02:00
rustc_plugin_impl
rustc_privacy fix few typos 2021-04-19 15:57:08 +03:00
rustc_query_impl Introduce CompileMonoItem DepNode 2021-04-12 13:58:12 +02:00
rustc_query_system Fix outdated crate names in compiler docs 2021-04-08 11:12:14 -05:00
rustc_resolve More review changes 2021-04-21 12:26:19 -04:00
rustc_save_analysis Remove hir::CrateItem. 2021-03-30 20:31:06 +02:00
rustc_serialize Auto merge of #83465 - michaelwoerister:safe-read_raw_bytes, r=cjgillot 2021-03-26 01:28:59 +00:00
rustc_session Improve the docstrings of the Lto struct. 2021-04-20 10:28:17 +01:00
rustc_span Auto merge of #84339 - alexcrichton:llvm-fptoint-sat, r=nagisa 2021-04-23 18:35:49 +00:00
rustc_symbol_mangling Rollup merge of #80525 - devsnek:wasm64, r=nagisa 2021-04-05 00:24:23 +02:00
rustc_target Auto merge of #84334 - klensy:typo-compiler, r=jyn514 2021-04-20 00:16:45 +00:00
rustc_trait_selection Rollup merge of #84343 - camsteffen:closure-tree, r=varkor 2021-04-22 18:14:32 +02:00
rustc_traits Auto merge of #83207 - oli-obk:valtree2, r=lcnr 2021-04-02 10:28:12 +00:00
rustc_ty_utils resolve conflicts 2021-04-05 22:58:11 +08:00
rustc_type_ir Remove nightly features in rustc_type_ir 2021-04-03 10:00:09 +02:00
rustc_typeck Rollup merge of #84404 - tmiasko:intrinsics-in-coercion-lub, r=Mark-Simulacrum 2021-04-22 18:14:42 +02:00