Zachary S
7ba3d7b54e
Remove BackendRepr::Uninhabited
, replaced with an uninhabited: bool
field in LayoutData
.
...
Also update comments that refered to BackendRepr::Uninhabited.
2025-02-20 13:27:32 -06:00
Scott McMurray
6f9cfd694d
Rework OperandRef::extract_field
to stop calling to_immediate_scalar
on things which are already immediates
...
That means it stops trying to truncate things that are already `i1`s.
2025-02-19 12:03:40 -08:00
bjorn3
1fcae03369
Rustfmt
2025-02-08 22:12:13 +00:00
Jubilee Young
e42cb3bedc
cg_gcc: Directly use rustc_abi instead of reexports
2025-02-04 22:31:56 -08:00
Trevor Gross
a911da13dd
Use a C-safe return type for __rust_[ui]128_*
overflowing intrinsics
...
Combined with [1], this will change the overflowing multiplication
operations to return an `extern "C"`-safe type.
Link: https://github.com/rust-lang/compiler-builtins/pull/735 [1]
2025-01-15 03:49:39 +00:00
Antoni Boucher
cf2f17aeb6
Fix formatting
2025-01-13 11:48:14 -05:00
Antoni Boucher
06f0a9bc78
Merge commit '59a81c2ca1edc88ad3ac4b27a8e03977ffb8e73a' into subtree-update_cg_gcc_2025_01_12
2025-01-13 10:53:58 -05:00
acceptacross
6734a04c0a
chore: fix some typos
...
Signed-off-by: acceptacross <csqcqs@gmail.com>
2024-12-18 23:23:44 +08:00
Caleb Zulawski
e73e9f9af2
Add simd_relaxed_fma intrinsic
2024-11-23 14:39:42 -05:00
lcnr
9cba14b95b
use TypingEnv
when no infcx
is available
...
the behavior of the type system not only depends on the current
assumptions, but also the currentnphase of the compiler. This is
mostly necessary as we need to decide whether and how to reveal
opaque types. We track this via the `TypingMode`.
2024-11-18 10:38:56 +01:00
Jiri Bobek
777003ae9f
Likely unlikely fix
2024-11-17 21:49:10 +01:00
Jubilee Young
0349209901
cg_gcc: rustc_abi::Abi
=> BackendRepr
2024-10-29 15:01:01 -07:00
Michael Goulet
5cf8107aa6
Fix tests
2024-10-19 18:07:35 +00:00
Jed Brown
0d8a978e8a
intrinsics.fmuladdf{16,32,64,128}: expose llvm.fmuladd.* semantics
...
Add intrinsics `fmuladd{f16,f32,f64,f128}`. This computes `(a * b) +
c`, to be fused if the code generator determines that (i) the target
instruction set has support for a fused operation, and (ii) that the
fused operation is more efficient than the equivalent, separate pair
of `mul` and `add` instructions.
https://llvm.org/docs/LangRef.html#llvm-fmuladd-intrinsic
MIRI support is included for f32 and f64.
The codegen_cranelift uses the `fma` function from libc, which is a
correct implementation, but without the desired performance semantic. I
think this requires an update to cranelift to expose a suitable
instruction in its IR.
I have not tested with codegen_gcc, but it should behave the same
way (using `fma` from libc).
2024-10-11 15:32:56 -06:00
Urgau
018ba0528f
Use wide pointers consistenly across the compiler
2024-10-04 14:06:48 +02:00
Guillaume Gomez
7cde7db1fc
Fmt
2024-09-27 22:09:18 +02:00
Guillaume Gomez
325b70890a
Merge commit '3187d32079b817522cc17413ec9185b130daf693' into subtree-update
2024-09-27 22:00:17 +02:00
Michael Goulet
c682aa162b
Reformat using the new identifier sorting from rustfmt
2024-09-22 19:11:29 -04:00
Nicholas Nethercote
a8d22eb39e
Rename supertraits of CodegenMethods
.
...
Supertraits of `BuilderMethods` are all called `XyzBuilderMethods`.
Supertraits of `CodegenMethods` are all called `XyzMethods`. This commit
changes the latter to `XyzCodegenMethods`, for consistency.
2024-09-17 10:24:43 +10:00
Nicholas Nethercote
410a2de0c0
Rename {ArgAbi,IntrinsicCall}Methods
.
...
They both are part of `BuilderMethods`, and so should have `Builder` in
their name like all the other traits in `BuilderMethods`.
2024-09-17 10:24:43 +10:00
Ralf Jung
60ee1b7ac6
simd_shuffle: require index argument to be a vector
2024-09-14 14:43:24 +02:00
Ralf Jung
194baa820d
simd_shuffle intrinsic: allow argument to be passed as vector (not just as array)
2024-08-13 07:51:17 +02:00
Nicholas Nethercote
84ac80f192
Reformat use
declarations.
...
The previous commit updated `rustfmt.toml` appropriately. This commit is
the outcome of running `x fmt --all` with the new formatting options.
2024-07-29 08:26:52 +10:00
Guillaume Gomez
7cbe50e209
Merge commit '98ed962c7d3eebe12c97588e61245273d265e72f' into master
2024-07-10 12:44:23 +02:00
Scott McMurray
8ee3d29cd9
Stop using to_hir_binop
in codegen
2024-05-22 01:34:26 -07:00
Santiago Pastorino
6b46a919e1
Rename Unsafe to Safety
2024-05-17 18:33:37 -03:00
Waffle Lapkin
698d7a031e
Inline & delete Ty::new_unit
, since it's just a field access
2024-05-02 17:49:23 +02:00
bors
29a56a3b1c
Auto merge of #122053 - erikdesjardins:alloca, r=nikic
...
Stop using LLVM struct types for alloca
The alloca type has no semantic meaning, only the size (and alignment, but we specify it explicitly) matter. Using `[N x i8]` is a more direct way to specify that we want `N` bytes, and avoids relying on LLVM's struct layout. It is likely that a future LLVM version will change to an untyped alloca representation.
Split out from #121577 .
r? `@ghost`
2024-04-24 03:00:44 +00:00
Erik Desjardins
f4426c189f
use [N x i8] for alloca types
2024-04-11 21:42:35 -04:00
Scott McMurray
3596098823
Put PlaceValue
into OperandValue::Ref
, rather than 3 tuple fields
2024-04-11 00:10:10 -07:00
Scott McMurray
89502e584b
Make PlaceRef
hold a PlaceValue
for the non-layout fields (like OperandRef
does)
2024-04-11 00:10:10 -07:00
Matthew Maurer
7967915c7b
CFI: Use Instance at callsites
...
We already use `Instance` at declaration sites when available to glean
additional information about possible abstractions of the type in use.
This does the same when possible at callsites as well.
The primary purpose of this change is to allow CFI to alter how it
generates type information for indirect calls through `Virtual`
instances.
2024-03-23 18:30:39 +00:00
Michael Goulet
7be0dbe772
Make RawPtr take Ty and Mutbl separately
2024-03-22 11:13:29 -04:00
Guillaume Gomez
0d359efbe6
Merge commit 'b385428e3ddf330805241e7758e773f933357c4b' into subtree-update_cg_gcc_2024-03-05
2024-03-05 19:58:36 +01:00
Ralf Jung
b4ca582b89
rename 'try' intrinsic to 'catch_unwind'
2024-02-26 11:10:18 +01:00
Ralf Jung
07b6240947
remove simd_reduce_{min,max}_nanless
2024-02-21 20:50:47 +01:00
Ralf Jung
3dc631a61a
make simd_reduce_{mul,add}_unordered use only the 'reassoc' flag, not all fast-math flags
2024-02-21 16:28:20 +01:00
Oli Scherer
9a0743747f
Teach llvm backend how to fall back to default bodies
2024-02-12 17:50:39 +00:00
Nicholas Thompson
971e37ff7e
Further Implement is_val_statically_known
2024-01-23 12:02:31 -05:00
Nicholas Nethercote
99472c7049
Remove Session
methods that duplicate DiagCtxt
methods.
...
Also add some `dcx` methods to types that wrap `TyCtxt`, for easier
access.
2023-12-24 08:05:28 +11:00
Antoni Boucher
c797cccda6
Merge commit 'e4fe941b11a55c5005630696e9b6d81c65f7bd04' into subtree-update_cg_gcc_2023-10-25
2023-10-26 17:42:02 -04:00
Antoni Boucher
30290c8b41
Merge commit '11a0cceab966e5ff1058ddbcab5977e8a1d6d290' into subtree-update_cg_gcc_2023-10-09
2023-10-09 15:53:34 -04:00
Ralf Jung
29a4b7b971
fix gcc, cranelift build
2023-09-15 10:43:44 +02:00
Ralf Jung
89139d4c46
clarify PassMode::Indirect as well
2023-09-15 10:43:44 +02:00
scottmcm
75277a6606
Apply suggestions from code review
...
Co-authored-by: Ralf Jung <post@ralfj.de>
2023-08-06 15:47:40 -07:00
Scott McMurray
502af03445
Add a new compare_bytes
intrinsic instead of calling memcmp
directly
2023-08-06 15:47:40 -07:00
Oli Scherer
4457ef2c6d
Forbid old-style simd_shuffleN
intrinsics
2023-08-03 09:29:00 +00:00
Erik Desjardins
04303cfb3a
cg_ssa: remove pointee types and pointercast/bitcast-of-ptr
2023-07-29 13:18:20 -04:00
Jhonny Bill Mena
7a888fb56e
UPDATE - replace expected_simd error with one from codegen_ssa
...
Here I am assuming we want to treat these parameters (input, first, second, third, return) as translatable
2023-07-20 00:20:00 -04:00
Jhonny Bill Mena
051615e198
UPDATE - replace gcc monomorphization errors with ssa ones
...
Reduces error duplication and makes it more consistent across backends
2023-07-19 23:40:08 -04:00