diff options
| author | Scott McMurray <scottmcm@users.noreply.github.com> | 2024-11-29 21:32:03 -0800 |
|---|---|---|
| committer | Scott McMurray <scottmcm@users.noreply.github.com> | 2024-12-27 08:17:40 -0800 |
| commit | 2c0c9123fc45343eeda185c2b95e48bc4580c8c2 (patch) | |
| tree | 8b79425397eb748868df546f4f0ce8132887f5d7 /compiler/rustc_hir_analysis/src | |
| parent | 78af7da26d50d79b7f527b40182e4aaf541f1b37 (diff) | |
| download | rust-2c0c9123fc45343eeda185c2b95e48bc4580c8c2.tar.gz rust-2c0c9123fc45343eeda185c2b95e48bc4580c8c2.zip | |
Move `{widening, carrying}_mul` to an intrinsic with fallback MIR
Including implementing it for `u128`, so it can be defined in `uint_impl!`. This way it works for all backends, including CTFE.
Diffstat (limited to 'compiler/rustc_hir_analysis/src')
| -rw-r--r-- | compiler/rustc_hir_analysis/src/check/intrinsic.rs | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/compiler/rustc_hir_analysis/src/check/intrinsic.rs b/compiler/rustc_hir_analysis/src/check/intrinsic.rs index 39479401910..427ef141c72 100644 --- a/compiler/rustc_hir_analysis/src/check/intrinsic.rs +++ b/compiler/rustc_hir_analysis/src/check/intrinsic.rs @@ -94,6 +94,7 @@ pub fn intrinsic_operation_unsafety(tcx: TyCtxt<'_>, intrinsic_id: LocalDefId) - | sym::add_with_overflow | sym::sub_with_overflow | sym::mul_with_overflow + | sym::carrying_mul_add | sym::wrapping_add | sym::wrapping_sub | sym::wrapping_mul @@ -436,6 +437,10 @@ pub fn check_intrinsic_type( (1, 0, vec![param(0), param(0)], Ty::new_tup(tcx, &[param(0), tcx.types.bool])) } + sym::carrying_mul_add => { + (2, 0, vec![param(0); 4], Ty::new_tup(tcx, &[param(1), param(0)])) + } + sym::ptr_guaranteed_cmp => ( 1, 0, |
