2264 Commits

Author SHA1 Message Date
bjorn3
c6564f814e Fix float min and max operations in presence of NaN
Cranelift's fmin and fmax instructions propagate NaN, while Rust's min
and max don't.

Fixes #1049
2021-07-29 15:21:14 +02:00
bjorn3
e0b9f3b3cc Support storing return values in register places for all pass modes 2021-07-28 18:54:21 +02:00
bjorn3
b7881bb08d Remove CPlace::no_place
It is never the right function
2021-07-28 18:31:27 +02:00
bjorn3
8704a66922 Allow returning PassMode::Cast directly to an ssa var 2021-07-28 18:27:06 +02:00
bjorn3
bab224d254 Remove outdated FIXME 2021-07-28 18:26:03 +02:00
bjorn3
2e62516496 Remove workarounds for things unimplemented in Cranelift
Many are now implemented, so it is much nicer to directly use the
respective Cranelift instructions
2021-07-28 17:30:39 +02:00
bjorn3
8a6ff90a3a Use __muloti4 instead of __rust_i128_mulo
Fixes #1126
2021-07-28 14:54:31 +02:00
bjorn3
f4ba61eee5 Rustup to rustc 1.56.0-nightly (08095fc1f 2021-07-26) 2021-07-27 15:22:50 +02:00
bjorn3
bcf532ce1d Update dependencies 2021-07-27 12:54:58 +02:00
bjorn3
c2464ebeb0 Update Cranelift, gimli and object 2021-07-27 12:42:16 +02:00
bjorn3
a2b17e4e4f Enable a working libcore test 2021-07-26 19:34:23 +02:00
bjorn3
641e13e021 Replace pointer_ty() with fx.pointer_type where possible 2021-07-26 19:21:45 +02:00
bjorn3
472f9f9d62 Update compiler_builtins version in setup_rust_fork.sh 2021-07-26 19:19:57 +02:00
bjorn3
e387ec9cbf Fix ABI for Indirect arguments
In case of PassMode::Indirect, the ownership of the backing storage is
transfered to the callee. This means that the caller must copy the
argument if it wants to use it again later.

Fixes #691
2021-07-26 18:57:48 +02:00
bjorn3
2abc12daad Fix y.rs build --sysroot llvm 2021-07-26 16:11:24 +02:00
bjorn3
405642b853 Handle the extra argument for #[track_caller] earlier 2021-07-26 15:01:50 +02:00
bjorn3
3361e349fa Don't return anything from codegen_with_call_return_arg 2021-07-26 14:55:13 +02:00
bjorn3
83da1e0d5a Simplify logic around first_arg 2021-07-26 14:49:17 +02:00
bjorn3
050b417a74 Introduce the CallTarget enum 2021-07-26 14:40:27 +02:00
bjorn3
02db151b00 Add stdsimd to .gitignore and clean_all.sh 2021-07-26 14:13:05 +02:00
bjorn3
424a8c3a56 Implement "default_alloc_error_handler" feature
Fixes #1182
2021-07-26 14:11:19 +02:00
bjorn3
1f70802465
Merge pull request #1189 from bjorn3/stdsimd_fixes
Improve stdsimd support
2021-07-26 11:09:13 +02:00
bjorn3
581e38b97c Add fixme 2021-07-25 19:12:31 +02:00
bjorn3
a0fb0facdc Run stdsimd test suite 2021-07-25 18:45:56 +02:00
bjorn3
6d2221d1bb Fix simd_round implementation 2021-07-25 18:44:42 +02:00
bjorn3
90e4493b98 Implement more simd intrinsics 2021-07-24 15:25:32 +02:00
bjorn3
344cbac150 Fix simd_reduce_* intrinsics 2021-07-24 15:24:06 +02:00
bjorn3
a7b06e81fc Fix two type mismatch bugs 2021-07-23 18:29:47 +02:00
bjorn3
c42be7975f Support repr(simd) on ADTs containing a single array field
This is the cg_clif half of rust PR 78863
2021-07-23 18:28:33 +02:00
bjorn3
356360836e Avoid call to pointer_ty 2021-07-19 15:34:33 +02:00
bjorn3
0ebb4839f6 Rustup to rustc 1.55.0-nightly (59216858a 2021-07-18) 2021-07-19 15:32:22 +02:00
bjorn3
c151bb4ac5 Sync from rust 8df945c4717ffaf923b57bf30c473df6fc98bc85 2021-07-19 15:23:20 +02:00
Yuki Okushi
d7c3c45d68 Rollup merge of #87092 - ricobbe:fix-raw-dylib-multiple-definitions, r=petrochenkov
Remove nondeterminism in multiple-definitions test

Compare all fields in `DllImport` when sorting to avoid nondeterminism in the error for multiple inconsistent definitions of an extern function.  Restore the multiple-definitions test.

Resolves #87084.
2021-07-18 14:21:56 +09:00
bjorn3
bd2f72f398
Merge pull request #1187 from bjorn3/feature_gating
Preparations for building as part of rustc
2021-07-17 17:55:57 +02:00
bjorn3
c2a9839686 Disable jit and inline-asm when building as part of rustc
Both features are not yet ready. Inline-asm is only supported on Linux
and requires explicitly specifying registers instead of register
classes. The jit has usability issues and may require the cg_clif
executable in the future.
2021-07-17 16:40:54 +02:00
bjorn3
80b9e36709 Put all cg_clif specific options behind -Zunstable-features 2021-07-17 16:32:55 +02:00
bjorn3
60340d44d8 Don't panic when the target is not supported by Cranelift 2021-07-17 16:07:27 +02:00
bjorn3
ede41d1b98 [CI] Update package list before installing packages 2021-07-17 15:03:18 +02:00
bjorn3
6dc386e192 Don't truncate the shift amount
It isn't actually necessary
2021-07-17 14:34:58 +02:00
bjorn3
f7cfb9d6d5 Remove shl/shr special handling for 128bit ints
Cranelift now natively supports 128bit int shifting
2021-07-17 14:34:58 +02:00
bjorn3
17eaf432b7 Update Cranelift 2021-07-17 14:34:58 +02:00
Richard Cobbe
b47198aaa1 Consider all fields when comparing DllImports, to remove nondetermininsm in multiple-definitions test 2021-07-16 11:10:31 -07:00
Ralf Jung
e643b8b561 fix cranelift 2021-07-14 18:17:49 +02:00
bjorn3
e7a4323674 Remove explicit branch="main" form Cargo.toml 2021-07-13 21:32:28 +02:00
Scott McMurray
e3091d74d8 Use cranelift's Type::int instead of doing the match myself
<https://docs.rs/cranelift-codegen/0.74.0/cranelift_codegen/ir/types/struct.Type.html#method.int>
2021-07-08 14:55:58 -07:00
Scott McMurray
7a0574d826 PR Feedback: Don't put SSA-only types in CValues 2021-07-08 14:55:58 -07:00
Scott McMurray
ea8d9aefda Implement the raw_eq intrinsic in codegen_cranelift 2021-07-08 14:55:57 -07:00
bjorn3
ab4da1174c Rustup to rustc 1.55.0-nightly (d2b04f075 2021-07-07) 2021-07-08 18:03:50 +02:00
bjorn3
7167f4c9a4 Sync from rust 0deb536ff987d7200f5ea35634781e9df9d5b666 2021-07-08 18:03:33 +02:00
bjorn3
fb92375755 Merge commit '3a31c6d8272c14388a34622193baf553636fe470' into sync_cg_clif-2021-07-07 2021-07-07 11:14:20 +02:00