From ed93fa5ffab19292ee1c4676650cfc0875cd3104 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Tue, 26 May 2026 14:31:41 +0200 Subject: [PATCH 1/3] Add reproducers --- .../issue-1157-single-target-suffix.out | 17 ++++++++++ .../issue-1157-single-target-suffix.rs | 10 ++++++ .../multi-target/issue-1158-partial-dedup.out | 33 +++++++++++++++++++ .../multi-target/issue-1158-partial-dedup.rs | 15 +++++++++ .../ui/multi-target/multi-targets-file-ids.rs | 17 +++------- 5 files changed, 80 insertions(+), 12 deletions(-) create mode 100644 charon/tests/ui/multi-target/issue-1157-single-target-suffix.out create mode 100644 charon/tests/ui/multi-target/issue-1157-single-target-suffix.rs create mode 100644 charon/tests/ui/multi-target/issue-1158-partial-dedup.out create mode 100644 charon/tests/ui/multi-target/issue-1158-partial-dedup.rs diff --git a/charon/tests/ui/multi-target/issue-1157-single-target-suffix.out b/charon/tests/ui/multi-target/issue-1157-single-target-suffix.out new file mode 100644 index 000000000..cd22db707 --- /dev/null +++ b/charon/tests/ui/multi-target/issue-1157-single-target-suffix.out @@ -0,0 +1,17 @@ +fn test_crate::aarch64_only::aarch64-apple-darwin() -> u32 +{ + let _0: u32; // return + + _0 = const 1 : u32 + return +} + +fn test_crate::x86_64_only::x86_64-pc-windows-msvc() -> u32 +{ + let _0: u32; // return + + _0 = const 2 : u32 + return +} + + diff --git a/charon/tests/ui/multi-target/issue-1157-single-target-suffix.rs b/charon/tests/ui/multi-target/issue-1157-single-target-suffix.rs new file mode 100644 index 000000000..35d99861e --- /dev/null +++ b/charon/tests/ui/multi-target/issue-1157-single-target-suffix.rs @@ -0,0 +1,10 @@ +//@ charon-args=--targets=x86_64-pc-windows-msvc,aarch64-apple-darwin,i686-unknown-linux-gnu +#[cfg(target_arch = "aarch64")] +fn aarch64_only() -> u32 { + 1 +} + +#[cfg(target_arch = "x86_64")] +fn x86_64_only() -> u32 { + 2 +} diff --git a/charon/tests/ui/multi-target/issue-1158-partial-dedup.out b/charon/tests/ui/multi-target/issue-1158-partial-dedup.out new file mode 100644 index 000000000..ba87f4374 --- /dev/null +++ b/charon/tests/ui/multi-target/issue-1158-partial-dedup.out @@ -0,0 +1,33 @@ +fn test_crate::x86_common::x86_64-pc-windows-msvc() -> u32 +{ + let _0: u32; // return + + _0 = const 42 : u32 + return +} + +fn test_crate::x86_common::i686-unknown-linux-gnu() -> u32 +{ + let _0: u32; // return + + _0 = const 42 : u32 + return +} + +fn test_crate::x86_different::x86_64-pc-windows-msvc() -> u32 +{ + let _0: u32; // return + + _0 = const 64 : u32 + return +} + +fn test_crate::x86_different::i686-unknown-linux-gnu() -> u32 +{ + let _0: u32; // return + + _0 = const 32 : u32 + return +} + + diff --git a/charon/tests/ui/multi-target/issue-1158-partial-dedup.rs b/charon/tests/ui/multi-target/issue-1158-partial-dedup.rs new file mode 100644 index 000000000..3a0fdb6b6 --- /dev/null +++ b/charon/tests/ui/multi-target/issue-1158-partial-dedup.rs @@ -0,0 +1,15 @@ +//@ charon-args=--targets=x86_64-pc-windows-msvc,aarch64-apple-darwin,i686-unknown-linux-gnu +#[cfg(any(target_arch = "x86_64", target_arch = "x86"))] +fn x86_common() -> u32 { + 42 +} + +#[cfg(target_arch = "x86_64")] +fn x86_different() -> u32 { + 64 +} + +#[cfg(target_arch = "x86")] +fn x86_different() -> u32 { + 32 +} diff --git a/charon/tests/ui/multi-target/multi-targets-file-ids.rs b/charon/tests/ui/multi-target/multi-targets-file-ids.rs index 3f06f72fb..445d30edd 100644 --- a/charon/tests/ui/multi-target/multi-targets-file-ids.rs +++ b/charon/tests/ui/multi-target/multi-targets-file-ids.rs @@ -1,14 +1,5 @@ //@ charon-args=--targets=x86_64-apple-darwin,aarch64-apple-darwin //! Regression test for multi-target file-id remapping. -//! -//! When merging per-target crates, files unique to some targets get pushed into the -//! merged file table at new positions: the corresponding file ids need to be properly -//! updated. -//! -//! This test uses enough architecture-specific intrinsics to pull in different header -//! files for each target. -#![allow(unused, non_camel_case_types)] - trait SimdOps { type V128: Copy; fn load(src: &[u16; 8]) -> Self::V128; @@ -18,8 +9,8 @@ trait SimdOps { #[cfg(target_arch = "x86_64")] mod x86 { - use core::arch::x86_64::*; use super::SimdOps; + use core::arch::x86_64::*; pub struct Sse2; impl SimdOps for Sse2 { @@ -38,8 +29,8 @@ mod x86 { #[cfg(target_arch = "aarch64")] mod arm { - use core::arch::aarch64::*; use super::SimdOps; + use core::arch::aarch64::*; pub struct Neon; impl SimdOps for Neon { @@ -68,7 +59,9 @@ fn add_scalar(a: &mut [u16; 8], b: &[u16; 8]) { } } -fn cpu_features_present(_mask: u32) -> bool { true } +fn cpu_features_present(_mask: u32) -> bool { + true +} fn add_dispatch(a: &mut [u16; 8], b: &[u16; 8]) { #[cfg(target_arch = "x86_64")] From 01e8503c8b03bebf4d30a0cb504b10d8ae37ef94 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Tue, 26 May 2026 14:48:56 +0200 Subject: [PATCH 2/3] multi-target: handle items that aren't define on all targets --- charon/src/export/multi_target.rs | 10 +- charon/tests/cargo/multi-targets.out | 26 +-- .../ui/ml-multi-target-name-matcher-tests.out | 4 +- .../issue-1157-single-target-suffix.out | 4 +- .../multi-target/issue-1158-partial-dedup.out | 16 +- .../multi-target-from-symcrypt.out | 160 +++++++++--------- .../multi-target/multi-targets-file-ids.out | 160 +++++++++--------- 7 files changed, 178 insertions(+), 202 deletions(-) diff --git a/charon/src/export/multi_target.rs b/charon/src/export/multi_target.rs index 85ae96394..184a7cad8 100644 --- a/charon/src/export/multi_target.rs +++ b/charon/src/export/multi_target.rs @@ -360,12 +360,12 @@ impl<'a> ItemDeduplicator<'a> { this.apply_merge_decisions(decisions); } - /// Group items by (base_name, item_kind), keeping only groups that have items in all targets. + /// Group items by (base_name, item_kind). Each group contains the versions of that item + /// across all targets where it exists. fn discover_groups( krate: &TranslatedCrate, _errors: &mut ErrorCtx, ) -> IndexVec { - let num_targets = krate.target_information.len(); let mut groups_map: SeqHashMap< (Name, std::mem::Discriminant), SeqHashMap, @@ -388,7 +388,7 @@ impl<'a> ItemDeduplicator<'a> { let prev_len = groups_map.len(); let remap: HashMap = groups_map .values() - .filter(|ids| ids.len() == num_targets) + .filter(|ids| !ids.is_empty()) .cloned() .map(|ids| TargetGroup { ids }) .flat_map(|g| g.into_remap_entries()) @@ -408,14 +408,14 @@ impl<'a> ItemDeduplicator<'a> { } } } - groups_map.retain(|_, v| v.len() == num_targets); + // Remove empty groups (from collisions) and check for convergence. + groups_map.retain(|_, v| !v.is_empty()); if prev_len == groups_map.len() { break; } } let groups: IndexVec = groups_map .into_values() - .filter(|per_target| per_target.len() == num_targets) .map(|ids| TargetGroup { ids }) .collect(); groups diff --git a/charon/tests/cargo/multi-targets.out b/charon/tests/cargo/multi-targets.out index e3f36449b..ef98e938d 100644 --- a/charon/tests/cargo/multi-targets.out +++ b/charon/tests/cargo/multi-targets.out @@ -1,4 +1,4 @@ -pub fn multi_targets::no_os::riscv64gc-unknown-none-elf(left_1: u64, right_2: u64) -> u64 +pub fn multi_targets::no_os(left_1: u64, right_2: u64) -> u64 { let _0: u64; // return let left_1: u64; // arg #1 @@ -20,29 +20,7 @@ pub fn multi_targets::no_os::riscv64gc-unknown-none-elf(left_1: u64, right_2: u6 return } -pub fn multi_targets::on_unix::i686-unknown-linux-gnu(left_1: u64, right_2: u64) -> u64 -{ - let _0: u64; // return - let left_1: u64; // arg #1 - let right_2: u64; // arg #2 - let _3: u64; // anonymous local - let _4: u64; // anonymous local - let _5: (u64, bool); // anonymous local - - storage_live(_5) - storage_live(_3) - _3 = copy left_1 - storage_live(_4) - _4 = copy right_2 - _5 = copy _3 checked.+ copy _4 - assert(move _5.1 == false) (overflow) else panic - _0 = move _5.0 - storage_dead(_4) - storage_dead(_3) - return -} - -pub fn multi_targets::on_unix::x86_64-apple-darwin(left_1: u64, right_2: u64) -> u64 +pub fn multi_targets::on_unix(left_1: u64, right_2: u64) -> u64 { let _0: u64; // return let left_1: u64; // arg #1 diff --git a/charon/tests/ui/ml-multi-target-name-matcher-tests.out b/charon/tests/ui/ml-multi-target-name-matcher-tests.out index 236ad8fbb..3965ae5e4 100644 --- a/charon/tests/ui/ml-multi-target-name-matcher-tests.out +++ b/charon/tests/ui/ml-multi-target-name-matcher-tests.out @@ -1,4 +1,4 @@ -fn test_crate::x86_only::x86_64-apple-darwin() -> u64 +fn test_crate::x86_only() -> u64 { let _0: u64; // return @@ -6,7 +6,7 @@ fn test_crate::x86_only::x86_64-apple-darwin() -> u64 return } -fn test_crate::arm_only::aarch64-apple-darwin() -> u64 +fn test_crate::arm_only() -> u64 { let _0: u64; // return diff --git a/charon/tests/ui/multi-target/issue-1157-single-target-suffix.out b/charon/tests/ui/multi-target/issue-1157-single-target-suffix.out index cd22db707..d394b7fe3 100644 --- a/charon/tests/ui/multi-target/issue-1157-single-target-suffix.out +++ b/charon/tests/ui/multi-target/issue-1157-single-target-suffix.out @@ -1,4 +1,4 @@ -fn test_crate::aarch64_only::aarch64-apple-darwin() -> u32 +fn test_crate::aarch64_only() -> u32 { let _0: u32; // return @@ -6,7 +6,7 @@ fn test_crate::aarch64_only::aarch64-apple-darwin() -> u32 return } -fn test_crate::x86_64_only::x86_64-pc-windows-msvc() -> u32 +fn test_crate::x86_64_only() -> u32 { let _0: u32; // return diff --git a/charon/tests/ui/multi-target/issue-1158-partial-dedup.out b/charon/tests/ui/multi-target/issue-1158-partial-dedup.out index ba87f4374..6618a3e64 100644 --- a/charon/tests/ui/multi-target/issue-1158-partial-dedup.out +++ b/charon/tests/ui/multi-target/issue-1158-partial-dedup.out @@ -1,12 +1,4 @@ -fn test_crate::x86_common::x86_64-pc-windows-msvc() -> u32 -{ - let _0: u32; // return - - _0 = const 42 : u32 - return -} - -fn test_crate::x86_common::i686-unknown-linux-gnu() -> u32 +fn test_crate::x86_common() -> u32 { let _0: u32; // return @@ -30,4 +22,10 @@ fn test_crate::x86_different::i686-unknown-linux-gnu() -> u32 return } +fn test_crate::x86_different() -> u32 += target_dispatch { + x86_64-pc-windows-msvc => test_crate::x86_different::x86_64-pc-windows-msvc, + i686-unknown-linux-gnu => test_crate::x86_different::i686-unknown-linux-gnu, +} + diff --git a/charon/tests/ui/multi-target/multi-target-from-symcrypt.out b/charon/tests/ui/multi-target/multi-target-from-symcrypt.out index b4554b6fd..c0eb5bec7 100644 --- a/charon/tests/ui/multi-target/multi-target-from-symcrypt.out +++ b/charon/tests/ui/multi-target/multi-target-from-symcrypt.out @@ -1,12 +1,12 @@ -pub opaque type core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin +pub opaque type core::core_arch::arm_shared::neon::uint16x8_t -pub unsafe fn core::core_arch::aarch64::neon::generated::vld1q_u16::aarch64-apple-darwin(_1: *const u16) -> core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin +pub unsafe fn core::core_arch::aarch64::neon::generated::vld1q_u16(_1: *const u16) -> core::core_arch::arm_shared::neon::uint16x8_t = -pub unsafe fn core::core_arch::aarch64::neon::generated::vst1q_u16::aarch64-apple-darwin(_1: *mut u16, _2: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin) +pub unsafe fn core::core_arch::aarch64::neon::generated::vst1q_u16(_1: *mut u16, _2: core::core_arch::arm_shared::neon::uint16x8_t) = -pub unsafe fn core::core_arch::arm_shared::neon::generated::vaddq_u16::aarch64-apple-darwin(_1: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin, _2: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin) -> core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin +pub unsafe fn core::core_arch::arm_shared::neon::generated::vaddq_u16(_1: core::core_arch::arm_shared::neon::uint16x8_t, _2: core::core_arch::arm_shared::neon::uint16x8_t) -> core::core_arch::arm_shared::neon::uint16x8_t = #[lang_item("meta_sized")] @@ -35,49 +35,49 @@ pub trait core::marker::Copy non-dyn-compatible } -pub opaque type core::core_arch::x86::__m128i::x86_64-apple-darwin +pub opaque type core::core_arch::x86::__m128i -pub fn core::core_arch::x86::{impl core::clone::Clone for core::core_arch::x86::__m128i::x86_64-apple-darwin}::clone::x86_64-apple-darwin<'_0>(_1: &'_0 core::core_arch::x86::__m128i::x86_64-apple-darwin) -> core::core_arch::x86::__m128i::x86_64-apple-darwin +pub fn core::core_arch::x86::{impl core::clone::Clone for core::core_arch::x86::__m128i}::clone<'_0>(_1: &'_0 core::core_arch::x86::__m128i) -> core::core_arch::x86::__m128i = -// Full name: core::core_arch::x86::{impl core::clone::Clone for core::core_arch::x86::__m128i::x86_64-apple-darwin}::x86_64-apple-darwin -impl core::clone::Clone for core::core_arch::x86::__m128i::x86_64-apple-darwin { - parent_clause0 = {built_in impl core::marker::Sized for core::core_arch::x86::__m128i::x86_64-apple-darwin} - fn clone<'_0_1> = core::core_arch::x86::{impl core::clone::Clone for core::core_arch::x86::__m128i::x86_64-apple-darwin}::clone::x86_64-apple-darwin<'_0_1> +// Full name: core::core_arch::x86::{impl core::clone::Clone for core::core_arch::x86::__m128i} +impl core::clone::Clone for core::core_arch::x86::__m128i { + parent_clause0 = {built_in impl core::marker::Sized for core::core_arch::x86::__m128i} + fn clone<'_0_1> = core::core_arch::x86::{impl core::clone::Clone for core::core_arch::x86::__m128i}::clone<'_0_1> non-dyn-compatible } -// Full name: core::core_arch::x86::{impl core::marker::Copy for core::core_arch::x86::__m128i::x86_64-apple-darwin}::x86_64-apple-darwin -impl core::marker::Copy for core::core_arch::x86::__m128i::x86_64-apple-darwin { - parent_clause0 = {built_in impl core::marker::MetaSized for core::core_arch::x86::__m128i::x86_64-apple-darwin} - parent_clause1 = core::core_arch::x86::{impl core::clone::Clone for core::core_arch::x86::__m128i::x86_64-apple-darwin}::x86_64-apple-darwin +// Full name: core::core_arch::x86::{impl core::marker::Copy for core::core_arch::x86::__m128i} +impl core::marker::Copy for core::core_arch::x86::__m128i { + parent_clause0 = {built_in impl core::marker::MetaSized for core::core_arch::x86::__m128i} + parent_clause1 = core::core_arch::x86::{impl core::clone::Clone for core::core_arch::x86::__m128i} non-dyn-compatible } -pub fn core::core_arch::arm_shared::neon::{impl core::clone::Clone for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin}::clone::aarch64-apple-darwin<'_0>(_1: &'_0 core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin) -> core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin +pub fn core::core_arch::arm_shared::neon::{impl core::clone::Clone for core::core_arch::arm_shared::neon::uint16x8_t}::clone<'_0>(_1: &'_0 core::core_arch::arm_shared::neon::uint16x8_t) -> core::core_arch::arm_shared::neon::uint16x8_t = -// Full name: core::core_arch::arm_shared::neon::{impl core::clone::Clone for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin}::aarch64-apple-darwin -impl core::clone::Clone for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin { - parent_clause0 = {built_in impl core::marker::Sized for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin} - fn clone<'_0_1> = core::core_arch::arm_shared::neon::{impl core::clone::Clone for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin}::clone::aarch64-apple-darwin<'_0_1> +// Full name: core::core_arch::arm_shared::neon::{impl core::clone::Clone for core::core_arch::arm_shared::neon::uint16x8_t} +impl core::clone::Clone for core::core_arch::arm_shared::neon::uint16x8_t { + parent_clause0 = {built_in impl core::marker::Sized for core::core_arch::arm_shared::neon::uint16x8_t} + fn clone<'_0_1> = core::core_arch::arm_shared::neon::{impl core::clone::Clone for core::core_arch::arm_shared::neon::uint16x8_t}::clone<'_0_1> non-dyn-compatible } -// Full name: core::core_arch::arm_shared::neon::{impl core::marker::Copy for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin}::aarch64-apple-darwin -impl core::marker::Copy for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin { - parent_clause0 = {built_in impl core::marker::MetaSized for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin} - parent_clause1 = core::core_arch::arm_shared::neon::{impl core::clone::Clone for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin}::aarch64-apple-darwin +// Full name: core::core_arch::arm_shared::neon::{impl core::marker::Copy for core::core_arch::arm_shared::neon::uint16x8_t} +impl core::marker::Copy for core::core_arch::arm_shared::neon::uint16x8_t { + parent_clause0 = {built_in impl core::marker::MetaSized for core::core_arch::arm_shared::neon::uint16x8_t} + parent_clause1 = core::core_arch::arm_shared::neon::{impl core::clone::Clone for core::core_arch::arm_shared::neon::uint16x8_t} non-dyn-compatible } -pub unsafe fn core::core_arch::x86::sse2::_mm_add_epi16::x86_64-apple-darwin(_1: core::core_arch::x86::__m128i::x86_64-apple-darwin, _2: core::core_arch::x86::__m128i::x86_64-apple-darwin) -> core::core_arch::x86::__m128i::x86_64-apple-darwin +pub unsafe fn core::core_arch::x86::sse2::_mm_add_epi16(_1: core::core_arch::x86::__m128i, _2: core::core_arch::x86::__m128i) -> core::core_arch::x86::__m128i = -pub unsafe fn core::core_arch::x86::sse2::_mm_loadu_si128::x86_64-apple-darwin(_1: *const core::core_arch::x86::__m128i::x86_64-apple-darwin) -> core::core_arch::x86::__m128i::x86_64-apple-darwin +pub unsafe fn core::core_arch::x86::sse2::_mm_loadu_si128(_1: *const core::core_arch::x86::__m128i) -> core::core_arch::x86::__m128i = -pub unsafe fn core::core_arch::x86::sse2::_mm_storeu_si128::x86_64-apple-darwin(_1: *mut core::core_arch::x86::__m128i::x86_64-apple-darwin, _2: core::core_arch::x86::__m128i::x86_64-apple-darwin) +pub unsafe fn core::core_arch::x86::sse2::_mm_storeu_si128(_1: *mut core::core_arch::x86::__m128i, _2: core::core_arch::x86::__m128i) = #[lang_item("clone_fn")] @@ -295,36 +295,36 @@ where [@TraitClause0]: test_crate::NttIntrinsicsInterface, = -pub struct test_crate::ntt_xmm::NttIntrinsicsXmm::x86_64-apple-darwin {} +pub struct test_crate::ntt_xmm::NttIntrinsicsXmm {} -fn test_crate::ntt_xmm::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_xmm::NttIntrinsicsXmm::x86_64-apple-darwin}::vec128_add::x86_64-apple-darwin(a_1: core::core_arch::x86::__m128i::x86_64-apple-darwin, b_2: core::core_arch::x86::__m128i::x86_64-apple-darwin) -> core::core_arch::x86::__m128i::x86_64-apple-darwin +fn test_crate::ntt_xmm::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_xmm::NttIntrinsicsXmm}::vec128_add(a_1: core::core_arch::x86::__m128i, b_2: core::core_arch::x86::__m128i) -> core::core_arch::x86::__m128i { - let _0: core::core_arch::x86::__m128i::x86_64-apple-darwin; // return - let a_1: core::core_arch::x86::__m128i::x86_64-apple-darwin; // arg #1 - let b_2: core::core_arch::x86::__m128i::x86_64-apple-darwin; // arg #2 - let _3: core::core_arch::x86::__m128i::x86_64-apple-darwin; // anonymous local - let _4: core::core_arch::x86::__m128i::x86_64-apple-darwin; // anonymous local + let _0: core::core_arch::x86::__m128i; // return + let a_1: core::core_arch::x86::__m128i; // arg #1 + let b_2: core::core_arch::x86::__m128i; // arg #2 + let _3: core::core_arch::x86::__m128i; // anonymous local + let _4: core::core_arch::x86::__m128i; // anonymous local storage_live(_3) _3 = copy a_1 storage_live(_4) _4 = copy b_2 - _0 = core::core_arch::x86::sse2::_mm_add_epi16::x86_64-apple-darwin(move _3, move _4) + _0 = core::core_arch::x86::sse2::_mm_add_epi16(move _3, move _4) storage_dead(_4) storage_dead(_3) return } -fn test_crate::ntt_xmm::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_xmm::NttIntrinsicsXmm::x86_64-apple-darwin}::vec128_store::x86_64-apple-darwin<'_0>(dst_1: &'_0 mut [u16; 8 : usize], val_2: core::core_arch::x86::__m128i::x86_64-apple-darwin) +fn test_crate::ntt_xmm::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_xmm::NttIntrinsicsXmm}::vec128_store<'_0>(dst_1: &'_0 mut [u16; 8 : usize], val_2: core::core_arch::x86::__m128i) { let _0: (); // return let dst_1: &'1 mut [u16; 8 : usize]; // arg #1 - let val_2: core::core_arch::x86::__m128i::x86_64-apple-darwin; // arg #2 - let _3: *mut core::core_arch::x86::__m128i::x86_64-apple-darwin; // anonymous local + let val_2: core::core_arch::x86::__m128i; // arg #2 + let _3: *mut core::core_arch::x86::__m128i; // anonymous local let _4: *mut u16; // anonymous local let _5: &'3 mut [u16]; // anonymous local let _6: &'4 mut [u16; 8 : usize]; // anonymous local - let _7: core::core_arch::x86::__m128i::x86_64-apple-darwin; // anonymous local + let _7: core::core_arch::x86::__m128i; // anonymous local _0 = () storage_live(_3) @@ -336,21 +336,21 @@ fn test_crate::ntt_xmm::{impl test_crate::NttIntrinsicsInterface for test_crate: storage_dead(_6) _4 = core::slice::{[T]}::as_mut_ptr<'7, u16>[{built_in impl core::marker::Sized for u16}](move _5) storage_dead(_5) - _3 = cast<*mut u16, *mut core::core_arch::x86::__m128i::x86_64-apple-darwin>(move _4) + _3 = cast<*mut u16, *mut core::core_arch::x86::__m128i>(move _4) storage_dead(_4) storage_live(_7) _7 = copy val_2 - _0 = core::core_arch::x86::sse2::_mm_storeu_si128::x86_64-apple-darwin(move _3, move _7) + _0 = core::core_arch::x86::sse2::_mm_storeu_si128(move _3, move _7) storage_dead(_7) storage_dead(_3) return } -fn test_crate::ntt_xmm::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_xmm::NttIntrinsicsXmm::x86_64-apple-darwin}::vec128_load::x86_64-apple-darwin<'_0>(src_1: &'_0 [u16; 8 : usize]) -> core::core_arch::x86::__m128i::x86_64-apple-darwin +fn test_crate::ntt_xmm::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_xmm::NttIntrinsicsXmm}::vec128_load<'_0>(src_1: &'_0 [u16; 8 : usize]) -> core::core_arch::x86::__m128i { - let _0: core::core_arch::x86::__m128i::x86_64-apple-darwin; // return + let _0: core::core_arch::x86::__m128i; // return let src_1: &'1 [u16; 8 : usize]; // arg #1 - let _2: *const core::core_arch::x86::__m128i::x86_64-apple-darwin; // anonymous local + let _2: *const core::core_arch::x86::__m128i; // anonymous local let _3: *const u16; // anonymous local let _4: &'3 [u16]; // anonymous local let _5: &'4 [u16; 8 : usize]; // anonymous local @@ -364,54 +364,54 @@ fn test_crate::ntt_xmm::{impl test_crate::NttIntrinsicsInterface for test_crate: storage_dead(_5) _3 = core::slice::{[T]}::as_ptr<'7, u16>[{built_in impl core::marker::Sized for u16}](move _4) storage_dead(_4) - _2 = cast<*const u16, *const core::core_arch::x86::__m128i::x86_64-apple-darwin>(move _3) + _2 = cast<*const u16, *const core::core_arch::x86::__m128i>(move _3) storage_dead(_3) - _0 = core::core_arch::x86::sse2::_mm_loadu_si128::x86_64-apple-darwin(move _2) + _0 = core::core_arch::x86::sse2::_mm_loadu_si128(move _2) storage_dead(_2) return } -// Full name: test_crate::ntt_xmm::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_xmm::NttIntrinsicsXmm::x86_64-apple-darwin}::x86_64-apple-darwin -impl test_crate::NttIntrinsicsInterface for test_crate::ntt_xmm::NttIntrinsicsXmm::x86_64-apple-darwin { - parent_clause0 = {built_in impl core::marker::MetaSized for test_crate::ntt_xmm::NttIntrinsicsXmm::x86_64-apple-darwin} - parent_clause1 = {built_in impl core::marker::Sized for core::core_arch::x86::__m128i::x86_64-apple-darwin} - parent_clause2 = core::core_arch::x86::{impl core::marker::Copy for core::core_arch::x86::__m128i::x86_64-apple-darwin}::x86_64-apple-darwin - type Vec128 = core::core_arch::x86::__m128i::x86_64-apple-darwin - fn vec128_load<'_0_1> = test_crate::ntt_xmm::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_xmm::NttIntrinsicsXmm::x86_64-apple-darwin}::vec128_load::x86_64-apple-darwin<'_0_1> - fn vec128_store<'_0_1> = test_crate::ntt_xmm::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_xmm::NttIntrinsicsXmm::x86_64-apple-darwin}::vec128_store::x86_64-apple-darwin<'_0_1> - fn vec128_add = test_crate::ntt_xmm::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_xmm::NttIntrinsicsXmm::x86_64-apple-darwin}::vec128_add::x86_64-apple-darwin +// Full name: test_crate::ntt_xmm::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_xmm::NttIntrinsicsXmm} +impl test_crate::NttIntrinsicsInterface for test_crate::ntt_xmm::NttIntrinsicsXmm { + parent_clause0 = {built_in impl core::marker::MetaSized for test_crate::ntt_xmm::NttIntrinsicsXmm} + parent_clause1 = {built_in impl core::marker::Sized for core::core_arch::x86::__m128i} + parent_clause2 = core::core_arch::x86::{impl core::marker::Copy for core::core_arch::x86::__m128i} + type Vec128 = core::core_arch::x86::__m128i + fn vec128_load<'_0_1> = test_crate::ntt_xmm::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_xmm::NttIntrinsicsXmm}::vec128_load<'_0_1> + fn vec128_store<'_0_1> = test_crate::ntt_xmm::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_xmm::NttIntrinsicsXmm}::vec128_store<'_0_1> + fn vec128_add = test_crate::ntt_xmm::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_xmm::NttIntrinsicsXmm}::vec128_add non-dyn-compatible } -pub struct test_crate::ntt_neon::NttIntrinsicsNeon::aarch64-apple-darwin {} +pub struct test_crate::ntt_neon::NttIntrinsicsNeon {} -fn test_crate::ntt_neon::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_neon::NttIntrinsicsNeon::aarch64-apple-darwin}::vec128_add::aarch64-apple-darwin(a_1: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin, b_2: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin) -> core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin +fn test_crate::ntt_neon::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_neon::NttIntrinsicsNeon}::vec128_add(a_1: core::core_arch::arm_shared::neon::uint16x8_t, b_2: core::core_arch::arm_shared::neon::uint16x8_t) -> core::core_arch::arm_shared::neon::uint16x8_t { - let _0: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin; // return - let a_1: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin; // arg #1 - let b_2: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin; // arg #2 - let _3: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin; // anonymous local - let _4: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin; // anonymous local + let _0: core::core_arch::arm_shared::neon::uint16x8_t; // return + let a_1: core::core_arch::arm_shared::neon::uint16x8_t; // arg #1 + let b_2: core::core_arch::arm_shared::neon::uint16x8_t; // arg #2 + let _3: core::core_arch::arm_shared::neon::uint16x8_t; // anonymous local + let _4: core::core_arch::arm_shared::neon::uint16x8_t; // anonymous local storage_live(_3) _3 = copy a_1 storage_live(_4) _4 = copy b_2 - _0 = core::core_arch::arm_shared::neon::generated::vaddq_u16::aarch64-apple-darwin(move _3, move _4) + _0 = core::core_arch::arm_shared::neon::generated::vaddq_u16(move _3, move _4) storage_dead(_4) storage_dead(_3) return } -fn test_crate::ntt_neon::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_neon::NttIntrinsicsNeon::aarch64-apple-darwin}::vec128_store::aarch64-apple-darwin<'_0>(dst_1: &'_0 mut [u16; 8 : usize], val_2: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin) +fn test_crate::ntt_neon::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_neon::NttIntrinsicsNeon}::vec128_store<'_0>(dst_1: &'_0 mut [u16; 8 : usize], val_2: core::core_arch::arm_shared::neon::uint16x8_t) { let _0: (); // return let dst_1: &'1 mut [u16; 8 : usize]; // arg #1 - let val_2: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin; // arg #2 + let val_2: core::core_arch::arm_shared::neon::uint16x8_t; // arg #2 let _3: *mut u16; // anonymous local let _4: &'3 mut [u16]; // anonymous local let _5: &'4 mut [u16; 8 : usize]; // anonymous local - let _6: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin; // anonymous local + let _6: core::core_arch::arm_shared::neon::uint16x8_t; // anonymous local _0 = () storage_live(_3) @@ -424,15 +424,15 @@ fn test_crate::ntt_neon::{impl test_crate::NttIntrinsicsInterface for test_crate storage_dead(_4) storage_live(_6) _6 = copy val_2 - _0 = core::core_arch::aarch64::neon::generated::vst1q_u16::aarch64-apple-darwin(move _3, move _6) + _0 = core::core_arch::aarch64::neon::generated::vst1q_u16(move _3, move _6) storage_dead(_6) storage_dead(_3) return } -fn test_crate::ntt_neon::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_neon::NttIntrinsicsNeon::aarch64-apple-darwin}::vec128_load::aarch64-apple-darwin<'_0>(src_1: &'_0 [u16; 8 : usize]) -> core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin +fn test_crate::ntt_neon::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_neon::NttIntrinsicsNeon}::vec128_load<'_0>(src_1: &'_0 [u16; 8 : usize]) -> core::core_arch::arm_shared::neon::uint16x8_t { - let _0: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin; // return + let _0: core::core_arch::arm_shared::neon::uint16x8_t; // return let src_1: &'1 [u16; 8 : usize]; // arg #1 let _2: *const u16; // anonymous local let _3: &'3 [u16]; // anonymous local @@ -446,20 +446,20 @@ fn test_crate::ntt_neon::{impl test_crate::NttIntrinsicsInterface for test_crate storage_dead(_4) _2 = core::slice::{[T]}::as_ptr<'7, u16>[{built_in impl core::marker::Sized for u16}](move _3) storage_dead(_3) - _0 = core::core_arch::aarch64::neon::generated::vld1q_u16::aarch64-apple-darwin(move _2) + _0 = core::core_arch::aarch64::neon::generated::vld1q_u16(move _2) storage_dead(_2) return } -// Full name: test_crate::ntt_neon::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_neon::NttIntrinsicsNeon::aarch64-apple-darwin}::aarch64-apple-darwin -impl test_crate::NttIntrinsicsInterface for test_crate::ntt_neon::NttIntrinsicsNeon::aarch64-apple-darwin { - parent_clause0 = {built_in impl core::marker::MetaSized for test_crate::ntt_neon::NttIntrinsicsNeon::aarch64-apple-darwin} - parent_clause1 = {built_in impl core::marker::Sized for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin} - parent_clause2 = core::core_arch::arm_shared::neon::{impl core::marker::Copy for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin}::aarch64-apple-darwin - type Vec128 = core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin - fn vec128_load<'_0_1> = test_crate::ntt_neon::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_neon::NttIntrinsicsNeon::aarch64-apple-darwin}::vec128_load::aarch64-apple-darwin<'_0_1> - fn vec128_store<'_0_1> = test_crate::ntt_neon::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_neon::NttIntrinsicsNeon::aarch64-apple-darwin}::vec128_store::aarch64-apple-darwin<'_0_1> - fn vec128_add = test_crate::ntt_neon::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_neon::NttIntrinsicsNeon::aarch64-apple-darwin}::vec128_add::aarch64-apple-darwin +// Full name: test_crate::ntt_neon::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_neon::NttIntrinsicsNeon} +impl test_crate::NttIntrinsicsInterface for test_crate::ntt_neon::NttIntrinsicsNeon { + parent_clause0 = {built_in impl core::marker::MetaSized for test_crate::ntt_neon::NttIntrinsicsNeon} + parent_clause1 = {built_in impl core::marker::Sized for core::core_arch::arm_shared::neon::uint16x8_t} + parent_clause2 = core::core_arch::arm_shared::neon::{impl core::marker::Copy for core::core_arch::arm_shared::neon::uint16x8_t} + type Vec128 = core::core_arch::arm_shared::neon::uint16x8_t + fn vec128_load<'_0_1> = test_crate::ntt_neon::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_neon::NttIntrinsicsNeon}::vec128_load<'_0_1> + fn vec128_store<'_0_1> = test_crate::ntt_neon::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_neon::NttIntrinsicsNeon}::vec128_store<'_0_1> + fn vec128_add = test_crate::ntt_neon::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_neon::NttIntrinsicsNeon}::vec128_add non-dyn-compatible } @@ -662,7 +662,7 @@ fn test_crate::poly_element_ntt_layer::x86_64-apple-darwin<'_0, '_1>(a_1: &'_0 m _5 = &two-phase-mut (*a_1) storage_live(_6) _6 = &(*b_2) - _4 = test_crate::ntt_layer_vec128<'10, '11, test_crate::ntt_xmm::NttIntrinsicsXmm::x86_64-apple-darwin>[{built_in impl core::marker::Sized for test_crate::ntt_xmm::NttIntrinsicsXmm::x86_64-apple-darwin}, test_crate::ntt_xmm::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_xmm::NttIntrinsicsXmm::x86_64-apple-darwin}::x86_64-apple-darwin](move _5, move _6) + _4 = test_crate::ntt_layer_vec128<'10, '11, test_crate::ntt_xmm::NttIntrinsicsXmm>[{built_in impl core::marker::Sized for test_crate::ntt_xmm::NttIntrinsicsXmm}, test_crate::ntt_xmm::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_xmm::NttIntrinsicsXmm}](move _5, move _6) storage_dead(_6) storage_dead(_5) storage_dead(_4) @@ -705,7 +705,7 @@ fn test_crate::poly_element_ntt_layer::aarch64-apple-darwin<'_0, '_1>(a_1: &'_0 _5 = &two-phase-mut (*a_1) storage_live(_6) _6 = &(*b_2) - _4 = test_crate::ntt_layer_vec128<'10, '11, test_crate::ntt_neon::NttIntrinsicsNeon::aarch64-apple-darwin>[{built_in impl core::marker::Sized for test_crate::ntt_neon::NttIntrinsicsNeon::aarch64-apple-darwin}, test_crate::ntt_neon::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_neon::NttIntrinsicsNeon::aarch64-apple-darwin}::aarch64-apple-darwin](move _5, move _6) + _4 = test_crate::ntt_layer_vec128<'10, '11, test_crate::ntt_neon::NttIntrinsicsNeon>[{built_in impl core::marker::Sized for test_crate::ntt_neon::NttIntrinsicsNeon}, test_crate::ntt_neon::{impl test_crate::NttIntrinsicsInterface for test_crate::ntt_neon::NttIntrinsicsNeon}](move _5, move _6) storage_dead(_6) storage_dead(_5) storage_dead(_4) diff --git a/charon/tests/ui/multi-target/multi-targets-file-ids.out b/charon/tests/ui/multi-target/multi-targets-file-ids.out index 30fb30936..4800615d8 100644 --- a/charon/tests/ui/multi-target/multi-targets-file-ids.out +++ b/charon/tests/ui/multi-target/multi-targets-file-ids.out @@ -1,12 +1,12 @@ -pub opaque type core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin +pub opaque type core::core_arch::arm_shared::neon::uint16x8_t -pub unsafe fn core::core_arch::aarch64::neon::generated::vld1q_u16::aarch64-apple-darwin(_1: *const u16) -> core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin +pub unsafe fn core::core_arch::aarch64::neon::generated::vld1q_u16(_1: *const u16) -> core::core_arch::arm_shared::neon::uint16x8_t = -pub unsafe fn core::core_arch::aarch64::neon::generated::vst1q_u16::aarch64-apple-darwin(_1: *mut u16, _2: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin) +pub unsafe fn core::core_arch::aarch64::neon::generated::vst1q_u16(_1: *mut u16, _2: core::core_arch::arm_shared::neon::uint16x8_t) = -pub unsafe fn core::core_arch::arm_shared::neon::generated::vaddq_u16::aarch64-apple-darwin(_1: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin, _2: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin) -> core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin +pub unsafe fn core::core_arch::arm_shared::neon::generated::vaddq_u16(_1: core::core_arch::arm_shared::neon::uint16x8_t, _2: core::core_arch::arm_shared::neon::uint16x8_t) -> core::core_arch::arm_shared::neon::uint16x8_t = #[lang_item("meta_sized")] @@ -35,49 +35,49 @@ pub trait core::marker::Copy non-dyn-compatible } -pub opaque type core::core_arch::x86::__m128i::x86_64-apple-darwin +pub opaque type core::core_arch::x86::__m128i -pub fn core::core_arch::x86::{impl core::clone::Clone for core::core_arch::x86::__m128i::x86_64-apple-darwin}::clone::x86_64-apple-darwin<'_0>(_1: &'_0 core::core_arch::x86::__m128i::x86_64-apple-darwin) -> core::core_arch::x86::__m128i::x86_64-apple-darwin +pub fn core::core_arch::x86::{impl core::clone::Clone for core::core_arch::x86::__m128i}::clone<'_0>(_1: &'_0 core::core_arch::x86::__m128i) -> core::core_arch::x86::__m128i = -// Full name: core::core_arch::x86::{impl core::clone::Clone for core::core_arch::x86::__m128i::x86_64-apple-darwin}::x86_64-apple-darwin -impl core::clone::Clone for core::core_arch::x86::__m128i::x86_64-apple-darwin { - parent_clause0 = {built_in impl core::marker::Sized for core::core_arch::x86::__m128i::x86_64-apple-darwin} - fn clone<'_0_1> = core::core_arch::x86::{impl core::clone::Clone for core::core_arch::x86::__m128i::x86_64-apple-darwin}::clone::x86_64-apple-darwin<'_0_1> +// Full name: core::core_arch::x86::{impl core::clone::Clone for core::core_arch::x86::__m128i} +impl core::clone::Clone for core::core_arch::x86::__m128i { + parent_clause0 = {built_in impl core::marker::Sized for core::core_arch::x86::__m128i} + fn clone<'_0_1> = core::core_arch::x86::{impl core::clone::Clone for core::core_arch::x86::__m128i}::clone<'_0_1> non-dyn-compatible } -// Full name: core::core_arch::x86::{impl core::marker::Copy for core::core_arch::x86::__m128i::x86_64-apple-darwin}::x86_64-apple-darwin -impl core::marker::Copy for core::core_arch::x86::__m128i::x86_64-apple-darwin { - parent_clause0 = {built_in impl core::marker::MetaSized for core::core_arch::x86::__m128i::x86_64-apple-darwin} - parent_clause1 = core::core_arch::x86::{impl core::clone::Clone for core::core_arch::x86::__m128i::x86_64-apple-darwin}::x86_64-apple-darwin +// Full name: core::core_arch::x86::{impl core::marker::Copy for core::core_arch::x86::__m128i} +impl core::marker::Copy for core::core_arch::x86::__m128i { + parent_clause0 = {built_in impl core::marker::MetaSized for core::core_arch::x86::__m128i} + parent_clause1 = core::core_arch::x86::{impl core::clone::Clone for core::core_arch::x86::__m128i} non-dyn-compatible } -pub fn core::core_arch::arm_shared::neon::{impl core::clone::Clone for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin}::clone::aarch64-apple-darwin<'_0>(_1: &'_0 core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin) -> core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin +pub fn core::core_arch::arm_shared::neon::{impl core::clone::Clone for core::core_arch::arm_shared::neon::uint16x8_t}::clone<'_0>(_1: &'_0 core::core_arch::arm_shared::neon::uint16x8_t) -> core::core_arch::arm_shared::neon::uint16x8_t = -// Full name: core::core_arch::arm_shared::neon::{impl core::clone::Clone for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin}::aarch64-apple-darwin -impl core::clone::Clone for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin { - parent_clause0 = {built_in impl core::marker::Sized for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin} - fn clone<'_0_1> = core::core_arch::arm_shared::neon::{impl core::clone::Clone for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin}::clone::aarch64-apple-darwin<'_0_1> +// Full name: core::core_arch::arm_shared::neon::{impl core::clone::Clone for core::core_arch::arm_shared::neon::uint16x8_t} +impl core::clone::Clone for core::core_arch::arm_shared::neon::uint16x8_t { + parent_clause0 = {built_in impl core::marker::Sized for core::core_arch::arm_shared::neon::uint16x8_t} + fn clone<'_0_1> = core::core_arch::arm_shared::neon::{impl core::clone::Clone for core::core_arch::arm_shared::neon::uint16x8_t}::clone<'_0_1> non-dyn-compatible } -// Full name: core::core_arch::arm_shared::neon::{impl core::marker::Copy for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin}::aarch64-apple-darwin -impl core::marker::Copy for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin { - parent_clause0 = {built_in impl core::marker::MetaSized for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin} - parent_clause1 = core::core_arch::arm_shared::neon::{impl core::clone::Clone for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin}::aarch64-apple-darwin +// Full name: core::core_arch::arm_shared::neon::{impl core::marker::Copy for core::core_arch::arm_shared::neon::uint16x8_t} +impl core::marker::Copy for core::core_arch::arm_shared::neon::uint16x8_t { + parent_clause0 = {built_in impl core::marker::MetaSized for core::core_arch::arm_shared::neon::uint16x8_t} + parent_clause1 = core::core_arch::arm_shared::neon::{impl core::clone::Clone for core::core_arch::arm_shared::neon::uint16x8_t} non-dyn-compatible } -pub unsafe fn core::core_arch::x86::sse2::_mm_add_epi16::x86_64-apple-darwin(_1: core::core_arch::x86::__m128i::x86_64-apple-darwin, _2: core::core_arch::x86::__m128i::x86_64-apple-darwin) -> core::core_arch::x86::__m128i::x86_64-apple-darwin +pub unsafe fn core::core_arch::x86::sse2::_mm_add_epi16(_1: core::core_arch::x86::__m128i, _2: core::core_arch::x86::__m128i) -> core::core_arch::x86::__m128i = -pub unsafe fn core::core_arch::x86::sse2::_mm_loadu_si128::x86_64-apple-darwin(_1: *const core::core_arch::x86::__m128i::x86_64-apple-darwin) -> core::core_arch::x86::__m128i::x86_64-apple-darwin +pub unsafe fn core::core_arch::x86::sse2::_mm_loadu_si128(_1: *const core::core_arch::x86::__m128i) -> core::core_arch::x86::__m128i = -pub unsafe fn core::core_arch::x86::sse2::_mm_storeu_si128::x86_64-apple-darwin(_1: *mut core::core_arch::x86::__m128i::x86_64-apple-darwin, _2: core::core_arch::x86::__m128i::x86_64-apple-darwin) +pub unsafe fn core::core_arch::x86::sse2::_mm_storeu_si128(_1: *mut core::core_arch::x86::__m128i, _2: core::core_arch::x86::__m128i) = #[lang_item("clone_fn")] @@ -295,36 +295,36 @@ where [@TraitClause0]: test_crate::SimdOps, = -pub struct test_crate::x86::Sse2::x86_64-apple-darwin {} +pub struct test_crate::x86::Sse2 {} -fn test_crate::x86::{impl test_crate::SimdOps for test_crate::x86::Sse2::x86_64-apple-darwin}::add::x86_64-apple-darwin(a_1: core::core_arch::x86::__m128i::x86_64-apple-darwin, b_2: core::core_arch::x86::__m128i::x86_64-apple-darwin) -> core::core_arch::x86::__m128i::x86_64-apple-darwin +fn test_crate::x86::{impl test_crate::SimdOps for test_crate::x86::Sse2}::add(a_1: core::core_arch::x86::__m128i, b_2: core::core_arch::x86::__m128i) -> core::core_arch::x86::__m128i { - let _0: core::core_arch::x86::__m128i::x86_64-apple-darwin; // return - let a_1: core::core_arch::x86::__m128i::x86_64-apple-darwin; // arg #1 - let b_2: core::core_arch::x86::__m128i::x86_64-apple-darwin; // arg #2 - let _3: core::core_arch::x86::__m128i::x86_64-apple-darwin; // anonymous local - let _4: core::core_arch::x86::__m128i::x86_64-apple-darwin; // anonymous local + let _0: core::core_arch::x86::__m128i; // return + let a_1: core::core_arch::x86::__m128i; // arg #1 + let b_2: core::core_arch::x86::__m128i; // arg #2 + let _3: core::core_arch::x86::__m128i; // anonymous local + let _4: core::core_arch::x86::__m128i; // anonymous local storage_live(_3) _3 = copy a_1 storage_live(_4) _4 = copy b_2 - _0 = core::core_arch::x86::sse2::_mm_add_epi16::x86_64-apple-darwin(move _3, move _4) + _0 = core::core_arch::x86::sse2::_mm_add_epi16(move _3, move _4) storage_dead(_4) storage_dead(_3) return } -fn test_crate::x86::{impl test_crate::SimdOps for test_crate::x86::Sse2::x86_64-apple-darwin}::store::x86_64-apple-darwin<'_0>(dst_1: &'_0 mut [u16; 8 : usize], val_2: core::core_arch::x86::__m128i::x86_64-apple-darwin) +fn test_crate::x86::{impl test_crate::SimdOps for test_crate::x86::Sse2}::store<'_0>(dst_1: &'_0 mut [u16; 8 : usize], val_2: core::core_arch::x86::__m128i) { let _0: (); // return let dst_1: &'1 mut [u16; 8 : usize]; // arg #1 - let val_2: core::core_arch::x86::__m128i::x86_64-apple-darwin; // arg #2 - let _3: *mut core::core_arch::x86::__m128i::x86_64-apple-darwin; // anonymous local + let val_2: core::core_arch::x86::__m128i; // arg #2 + let _3: *mut core::core_arch::x86::__m128i; // anonymous local let _4: *mut u16; // anonymous local let _5: &'3 mut [u16]; // anonymous local let _6: &'4 mut [u16; 8 : usize]; // anonymous local - let _7: core::core_arch::x86::__m128i::x86_64-apple-darwin; // anonymous local + let _7: core::core_arch::x86::__m128i; // anonymous local _0 = () storage_live(_3) @@ -336,21 +336,21 @@ fn test_crate::x86::{impl test_crate::SimdOps for test_crate::x86::Sse2::x86_64- storage_dead(_6) _4 = core::slice::{[T]}::as_mut_ptr<'7, u16>[{built_in impl core::marker::Sized for u16}](move _5) storage_dead(_5) - _3 = cast<*mut u16, *mut core::core_arch::x86::__m128i::x86_64-apple-darwin>(move _4) + _3 = cast<*mut u16, *mut core::core_arch::x86::__m128i>(move _4) storage_dead(_4) storage_live(_7) _7 = copy val_2 - _0 = core::core_arch::x86::sse2::_mm_storeu_si128::x86_64-apple-darwin(move _3, move _7) + _0 = core::core_arch::x86::sse2::_mm_storeu_si128(move _3, move _7) storage_dead(_7) storage_dead(_3) return } -fn test_crate::x86::{impl test_crate::SimdOps for test_crate::x86::Sse2::x86_64-apple-darwin}::load::x86_64-apple-darwin<'_0>(src_1: &'_0 [u16; 8 : usize]) -> core::core_arch::x86::__m128i::x86_64-apple-darwin +fn test_crate::x86::{impl test_crate::SimdOps for test_crate::x86::Sse2}::load<'_0>(src_1: &'_0 [u16; 8 : usize]) -> core::core_arch::x86::__m128i { - let _0: core::core_arch::x86::__m128i::x86_64-apple-darwin; // return + let _0: core::core_arch::x86::__m128i; // return let src_1: &'1 [u16; 8 : usize]; // arg #1 - let _2: *const core::core_arch::x86::__m128i::x86_64-apple-darwin; // anonymous local + let _2: *const core::core_arch::x86::__m128i; // anonymous local let _3: *const u16; // anonymous local let _4: &'3 [u16]; // anonymous local let _5: &'4 [u16; 8 : usize]; // anonymous local @@ -364,54 +364,54 @@ fn test_crate::x86::{impl test_crate::SimdOps for test_crate::x86::Sse2::x86_64- storage_dead(_5) _3 = core::slice::{[T]}::as_ptr<'7, u16>[{built_in impl core::marker::Sized for u16}](move _4) storage_dead(_4) - _2 = cast<*const u16, *const core::core_arch::x86::__m128i::x86_64-apple-darwin>(move _3) + _2 = cast<*const u16, *const core::core_arch::x86::__m128i>(move _3) storage_dead(_3) - _0 = core::core_arch::x86::sse2::_mm_loadu_si128::x86_64-apple-darwin(move _2) + _0 = core::core_arch::x86::sse2::_mm_loadu_si128(move _2) storage_dead(_2) return } -// Full name: test_crate::x86::{impl test_crate::SimdOps for test_crate::x86::Sse2::x86_64-apple-darwin}::x86_64-apple-darwin -impl test_crate::SimdOps for test_crate::x86::Sse2::x86_64-apple-darwin { - parent_clause0 = {built_in impl core::marker::MetaSized for test_crate::x86::Sse2::x86_64-apple-darwin} - parent_clause1 = {built_in impl core::marker::Sized for core::core_arch::x86::__m128i::x86_64-apple-darwin} - parent_clause2 = core::core_arch::x86::{impl core::marker::Copy for core::core_arch::x86::__m128i::x86_64-apple-darwin}::x86_64-apple-darwin - type V128 = core::core_arch::x86::__m128i::x86_64-apple-darwin - fn load<'_0_1> = test_crate::x86::{impl test_crate::SimdOps for test_crate::x86::Sse2::x86_64-apple-darwin}::load::x86_64-apple-darwin<'_0_1> - fn store<'_0_1> = test_crate::x86::{impl test_crate::SimdOps for test_crate::x86::Sse2::x86_64-apple-darwin}::store::x86_64-apple-darwin<'_0_1> - fn add = test_crate::x86::{impl test_crate::SimdOps for test_crate::x86::Sse2::x86_64-apple-darwin}::add::x86_64-apple-darwin +// Full name: test_crate::x86::{impl test_crate::SimdOps for test_crate::x86::Sse2} +impl test_crate::SimdOps for test_crate::x86::Sse2 { + parent_clause0 = {built_in impl core::marker::MetaSized for test_crate::x86::Sse2} + parent_clause1 = {built_in impl core::marker::Sized for core::core_arch::x86::__m128i} + parent_clause2 = core::core_arch::x86::{impl core::marker::Copy for core::core_arch::x86::__m128i} + type V128 = core::core_arch::x86::__m128i + fn load<'_0_1> = test_crate::x86::{impl test_crate::SimdOps for test_crate::x86::Sse2}::load<'_0_1> + fn store<'_0_1> = test_crate::x86::{impl test_crate::SimdOps for test_crate::x86::Sse2}::store<'_0_1> + fn add = test_crate::x86::{impl test_crate::SimdOps for test_crate::x86::Sse2}::add non-dyn-compatible } -pub struct test_crate::arm::Neon::aarch64-apple-darwin {} +pub struct test_crate::arm::Neon {} -fn test_crate::arm::{impl test_crate::SimdOps for test_crate::arm::Neon::aarch64-apple-darwin}::add::aarch64-apple-darwin(a_1: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin, b_2: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin) -> core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin +fn test_crate::arm::{impl test_crate::SimdOps for test_crate::arm::Neon}::add(a_1: core::core_arch::arm_shared::neon::uint16x8_t, b_2: core::core_arch::arm_shared::neon::uint16x8_t) -> core::core_arch::arm_shared::neon::uint16x8_t { - let _0: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin; // return - let a_1: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin; // arg #1 - let b_2: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin; // arg #2 - let _3: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin; // anonymous local - let _4: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin; // anonymous local + let _0: core::core_arch::arm_shared::neon::uint16x8_t; // return + let a_1: core::core_arch::arm_shared::neon::uint16x8_t; // arg #1 + let b_2: core::core_arch::arm_shared::neon::uint16x8_t; // arg #2 + let _3: core::core_arch::arm_shared::neon::uint16x8_t; // anonymous local + let _4: core::core_arch::arm_shared::neon::uint16x8_t; // anonymous local storage_live(_3) _3 = copy a_1 storage_live(_4) _4 = copy b_2 - _0 = core::core_arch::arm_shared::neon::generated::vaddq_u16::aarch64-apple-darwin(move _3, move _4) + _0 = core::core_arch::arm_shared::neon::generated::vaddq_u16(move _3, move _4) storage_dead(_4) storage_dead(_3) return } -fn test_crate::arm::{impl test_crate::SimdOps for test_crate::arm::Neon::aarch64-apple-darwin}::store::aarch64-apple-darwin<'_0>(dst_1: &'_0 mut [u16; 8 : usize], val_2: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin) +fn test_crate::arm::{impl test_crate::SimdOps for test_crate::arm::Neon}::store<'_0>(dst_1: &'_0 mut [u16; 8 : usize], val_2: core::core_arch::arm_shared::neon::uint16x8_t) { let _0: (); // return let dst_1: &'1 mut [u16; 8 : usize]; // arg #1 - let val_2: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin; // arg #2 + let val_2: core::core_arch::arm_shared::neon::uint16x8_t; // arg #2 let _3: *mut u16; // anonymous local let _4: &'3 mut [u16]; // anonymous local let _5: &'4 mut [u16; 8 : usize]; // anonymous local - let _6: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin; // anonymous local + let _6: core::core_arch::arm_shared::neon::uint16x8_t; // anonymous local _0 = () storage_live(_3) @@ -424,15 +424,15 @@ fn test_crate::arm::{impl test_crate::SimdOps for test_crate::arm::Neon::aarch64 storage_dead(_4) storage_live(_6) _6 = copy val_2 - _0 = core::core_arch::aarch64::neon::generated::vst1q_u16::aarch64-apple-darwin(move _3, move _6) + _0 = core::core_arch::aarch64::neon::generated::vst1q_u16(move _3, move _6) storage_dead(_6) storage_dead(_3) return } -fn test_crate::arm::{impl test_crate::SimdOps for test_crate::arm::Neon::aarch64-apple-darwin}::load::aarch64-apple-darwin<'_0>(src_1: &'_0 [u16; 8 : usize]) -> core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin +fn test_crate::arm::{impl test_crate::SimdOps for test_crate::arm::Neon}::load<'_0>(src_1: &'_0 [u16; 8 : usize]) -> core::core_arch::arm_shared::neon::uint16x8_t { - let _0: core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin; // return + let _0: core::core_arch::arm_shared::neon::uint16x8_t; // return let src_1: &'1 [u16; 8 : usize]; // arg #1 let _2: *const u16; // anonymous local let _3: &'3 [u16]; // anonymous local @@ -446,20 +446,20 @@ fn test_crate::arm::{impl test_crate::SimdOps for test_crate::arm::Neon::aarch64 storage_dead(_4) _2 = core::slice::{[T]}::as_ptr<'7, u16>[{built_in impl core::marker::Sized for u16}](move _3) storage_dead(_3) - _0 = core::core_arch::aarch64::neon::generated::vld1q_u16::aarch64-apple-darwin(move _2) + _0 = core::core_arch::aarch64::neon::generated::vld1q_u16(move _2) storage_dead(_2) return } -// Full name: test_crate::arm::{impl test_crate::SimdOps for test_crate::arm::Neon::aarch64-apple-darwin}::aarch64-apple-darwin -impl test_crate::SimdOps for test_crate::arm::Neon::aarch64-apple-darwin { - parent_clause0 = {built_in impl core::marker::MetaSized for test_crate::arm::Neon::aarch64-apple-darwin} - parent_clause1 = {built_in impl core::marker::Sized for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin} - parent_clause2 = core::core_arch::arm_shared::neon::{impl core::marker::Copy for core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin}::aarch64-apple-darwin - type V128 = core::core_arch::arm_shared::neon::uint16x8_t::aarch64-apple-darwin - fn load<'_0_1> = test_crate::arm::{impl test_crate::SimdOps for test_crate::arm::Neon::aarch64-apple-darwin}::load::aarch64-apple-darwin<'_0_1> - fn store<'_0_1> = test_crate::arm::{impl test_crate::SimdOps for test_crate::arm::Neon::aarch64-apple-darwin}::store::aarch64-apple-darwin<'_0_1> - fn add = test_crate::arm::{impl test_crate::SimdOps for test_crate::arm::Neon::aarch64-apple-darwin}::add::aarch64-apple-darwin +// Full name: test_crate::arm::{impl test_crate::SimdOps for test_crate::arm::Neon} +impl test_crate::SimdOps for test_crate::arm::Neon { + parent_clause0 = {built_in impl core::marker::MetaSized for test_crate::arm::Neon} + parent_clause1 = {built_in impl core::marker::Sized for core::core_arch::arm_shared::neon::uint16x8_t} + parent_clause2 = core::core_arch::arm_shared::neon::{impl core::marker::Copy for core::core_arch::arm_shared::neon::uint16x8_t} + type V128 = core::core_arch::arm_shared::neon::uint16x8_t + fn load<'_0_1> = test_crate::arm::{impl test_crate::SimdOps for test_crate::arm::Neon}::load<'_0_1> + fn store<'_0_1> = test_crate::arm::{impl test_crate::SimdOps for test_crate::arm::Neon}::store<'_0_1> + fn add = test_crate::arm::{impl test_crate::SimdOps for test_crate::arm::Neon}::add non-dyn-compatible } @@ -638,7 +638,7 @@ fn test_crate::add_dispatch::x86_64-apple-darwin<'_0, '_1>(a_1: &'_0 mut [u16; 8 _5 = &two-phase-mut (*a_1) storage_live(_6) _6 = &(*b_2) - _4 = test_crate::add_generic<'10, '11, test_crate::x86::Sse2::x86_64-apple-darwin>[{built_in impl core::marker::Sized for test_crate::x86::Sse2::x86_64-apple-darwin}, test_crate::x86::{impl test_crate::SimdOps for test_crate::x86::Sse2::x86_64-apple-darwin}::x86_64-apple-darwin](move _5, move _6) + _4 = test_crate::add_generic<'10, '11, test_crate::x86::Sse2>[{built_in impl core::marker::Sized for test_crate::x86::Sse2}, test_crate::x86::{impl test_crate::SimdOps for test_crate::x86::Sse2}](move _5, move _6) storage_dead(_6) storage_dead(_5) storage_dead(_4) @@ -681,7 +681,7 @@ fn test_crate::add_dispatch::aarch64-apple-darwin<'_0, '_1>(a_1: &'_0 mut [u16; _5 = &two-phase-mut (*a_1) storage_live(_6) _6 = &(*b_2) - _4 = test_crate::add_generic<'10, '11, test_crate::arm::Neon::aarch64-apple-darwin>[{built_in impl core::marker::Sized for test_crate::arm::Neon::aarch64-apple-darwin}, test_crate::arm::{impl test_crate::SimdOps for test_crate::arm::Neon::aarch64-apple-darwin}::aarch64-apple-darwin](move _5, move _6) + _4 = test_crate::add_generic<'10, '11, test_crate::arm::Neon>[{built_in impl core::marker::Sized for test_crate::arm::Neon}, test_crate::arm::{impl test_crate::SimdOps for test_crate::arm::Neon}](move _5, move _6) storage_dead(_6) storage_dead(_5) storage_dead(_4) From 09043b10a0de68a87e55f8789cb98e1f16fe5b11 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Tue, 26 May 2026 16:10:31 +0200 Subject: [PATCH 3/3] Fix name matcher tests --- charon/tests/ui/ml-multi-target-name-matcher-tests.rs | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/charon/tests/ui/ml-multi-target-name-matcher-tests.rs b/charon/tests/ui/ml-multi-target-name-matcher-tests.rs index 42e54e6fc..82631bf97 100644 --- a/charon/tests/ui/ml-multi-target-name-matcher-tests.rs +++ b/charon/tests/ui/ml-multi-target-name-matcher-tests.rs @@ -4,20 +4,17 @@ //! target-specific items get a `PeTarget` path element appended to their name. The name //! matcher should handle these correctly. -// Target-specific functions get a PeTarget path element after multi-target merging. #[cfg(target_arch = "x86_64")] -#[pattern::pass("test_crate::x86_only::x86_64-apple-darwin")] -#[pattern::pass("test_crate::x86_only::_")] -#[pattern::fail("test_crate::x86_only")] +#[pattern::pass("test_crate::x86_only")] #[pattern::fail("test_crate::x86_only::aarch64-apple-darwin")] +#[pattern::fail("test_crate::x86_only::x86_64-apple-darwin")] fn x86_only() -> u64 { 42 } #[cfg(target_arch = "aarch64")] -#[pattern::pass("test_crate::arm_only::aarch64-apple-darwin")] -#[pattern::pass("test_crate::arm_only::_")] -#[pattern::fail("test_crate::arm_only")] +#[pattern::pass("test_crate::arm_only")] +#[pattern::fail("test_crate::arm_only::aarch64-apple-darwin")] #[pattern::fail("test_crate::arm_only::x86_64-apple-darwin")] fn arm_only() -> u64 { 99