Skip to content

Commit 6209f35

Browse files
authored
Merge pull request #1964 from CrooseGit/dev/reucru01/arm-intrinsics-debug
Fixes issue with arm intrinsics not compiling in dev profile
2 parents 50134e1 + f564a01 commit 6209f35

File tree

8 files changed

+994
-958
lines changed

8 files changed

+994
-958
lines changed

ci/intrinsic-test.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ case ${TARGET} in
5656

5757
aarch64_be-unknown-linux-gnu*)
5858
TEST_CPPFLAGS="-fuse-ld=lld"
59-
TEST_SKIP_INTRINSICS=crates/intrinsic-test/missing_aarch64.txt
59+
TEST_SKIP_INTRINSICS=crates/intrinsic-test/missing_aarch64_be.txt
6060
TEST_CXX_COMPILER="clang++"
6161
TEST_RUNNER="${CARGO_TARGET_AARCH64_BE_UNKNOWN_LINUX_GNU_RUNNER}"
6262
: "${TEST_SAMPLE_INTRINSICS_PERCENTAGE:=100}"

crates/core_arch/src/aarch64/neon/generated.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9500,10 +9500,10 @@ pub fn vdivh_f16(a: f16, b: f16) -> f16 {
95009500
#[unstable(feature = "stdarch_neon_dotprod", issue = "117224")]
95019501
pub fn vdot_laneq_s32<const LANE: i32>(a: int32x2_t, b: int8x8_t, c: int8x16_t) -> int32x2_t {
95029502
static_assert_uimm_bits!(LANE, 2);
9503+
let c: int32x4_t = vreinterpretq_s32_s8(c);
95039504
unsafe {
9504-
let c: int32x4_t = transmute(c);
95059505
let c: int32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
9506-
vdot_s32(a, b, transmute(c))
9506+
vdot_s32(a, b, vreinterpret_s8_s32(c))
95079507
}
95089508
}
95099509
#[doc = "Dot product arithmetic (indexed)"]
@@ -9515,11 +9515,11 @@ pub fn vdot_laneq_s32<const LANE: i32>(a: int32x2_t, b: int8x8_t, c: int8x16_t)
95159515
#[unstable(feature = "stdarch_neon_dotprod", issue = "117224")]
95169516
pub fn vdotq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int8x16_t, c: int8x16_t) -> int32x4_t {
95179517
static_assert_uimm_bits!(LANE, 2);
9518+
let c: int32x4_t = vreinterpretq_s32_s8(c);
95189519
unsafe {
9519-
let c: int32x4_t = transmute(c);
95209520
let c: int32x4_t =
95219521
simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
9522-
vdotq_s32(a, b, transmute(c))
9522+
vdotq_s32(a, b, vreinterpretq_s8_s32(c))
95239523
}
95249524
}
95259525
#[doc = "Dot product arithmetic (indexed)"]
@@ -9531,10 +9531,10 @@ pub fn vdotq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int8x16_t, c: int8x16_t
95319531
#[unstable(feature = "stdarch_neon_dotprod", issue = "117224")]
95329532
pub fn vdot_laneq_u32<const LANE: i32>(a: uint32x2_t, b: uint8x8_t, c: uint8x16_t) -> uint32x2_t {
95339533
static_assert_uimm_bits!(LANE, 2);
9534+
let c: uint32x4_t = vreinterpretq_u32_u8(c);
95349535
unsafe {
9535-
let c: uint32x4_t = transmute(c);
95369536
let c: uint32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
9537-
vdot_u32(a, b, transmute(c))
9537+
vdot_u32(a, b, vreinterpret_u8_u32(c))
95389538
}
95399539
}
95409540
#[doc = "Dot product arithmetic (indexed)"]
@@ -9546,11 +9546,11 @@ pub fn vdot_laneq_u32<const LANE: i32>(a: uint32x2_t, b: uint8x8_t, c: uint8x16_
95469546
#[unstable(feature = "stdarch_neon_dotprod", issue = "117224")]
95479547
pub fn vdotq_laneq_u32<const LANE: i32>(a: uint32x4_t, b: uint8x16_t, c: uint8x16_t) -> uint32x4_t {
95489548
static_assert_uimm_bits!(LANE, 2);
9549+
let c: uint32x4_t = vreinterpretq_u32_u8(c);
95499550
unsafe {
9550-
let c: uint32x4_t = transmute(c);
95519551
let c: uint32x4_t =
95529552
simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
9553-
vdotq_u32(a, b, transmute(c))
9553+
vdotq_u32(a, b, vreinterpretq_u8_u32(c))
95549554
}
95559555
}
95569556
#[doc = "Set all vector lanes to the same value"]
@@ -28283,10 +28283,10 @@ pub fn vuqadds_s32(a: i32, b: u32) -> i32 {
2828328283
#[unstable(feature = "stdarch_neon_i8mm", issue = "117223")]
2828428284
pub fn vusdot_laneq_s32<const LANE: i32>(a: int32x2_t, b: uint8x8_t, c: int8x16_t) -> int32x2_t {
2828528285
static_assert_uimm_bits!(LANE, 2);
28286+
let c: int32x4_t = vreinterpretq_s32_s8(c);
2828628287
unsafe {
28287-
let c: int32x4_t = transmute(c);
2828828288
let c: int32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
28289-
vusdot_s32(a, b, transmute(c))
28289+
vusdot_s32(a, b, vreinterpret_s8_s32(c))
2829028290
}
2829128291
}
2829228292
#[doc = "Dot product index form with unsigned and signed integers"]
@@ -28298,11 +28298,11 @@ pub fn vusdot_laneq_s32<const LANE: i32>(a: int32x2_t, b: uint8x8_t, c: int8x16_
2829828298
#[unstable(feature = "stdarch_neon_i8mm", issue = "117223")]
2829928299
pub fn vusdotq_laneq_s32<const LANE: i32>(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t {
2830028300
static_assert_uimm_bits!(LANE, 2);
28301+
let c: int32x4_t = vreinterpretq_s32_s8(c);
2830128302
unsafe {
28302-
let c: int32x4_t = transmute(c);
2830328303
let c: int32x4_t =
2830428304
simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
28305-
vusdotq_s32(a, b, transmute(c))
28305+
vusdotq_s32(a, b, vreinterpretq_s8_s32(c))
2830628306
}
2830728307
}
2830828308
#[doc = "Unzip vectors"]

0 commit comments

Comments
 (0)