Skip to content

Commit f14ce23

Browse files
committed
Fix build on ARM
1 parent 3b3caba commit f14ce23

File tree

5 files changed

+54
-37
lines changed

5 files changed

+54
-37
lines changed

crates/core_arch/src/acle/crypto.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ pub unsafe fn vsha256su1q_u32(
191191

192192
#[cfg(test)]
193193
mod tests {
194+
use super::*;
194195
use crate::core_arch::{arm::*, simd::*};
195196
use std::mem;
196197
use stdarch_test::simd_test;

crates/core_arch/src/acle/mod.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,19 +68,17 @@ mod ex;
6868

6969
pub use self::ex::*;
7070

71-
#[cfg(any(target_arch = "aarch64", target_feature = "v7", doc))]
71+
#[cfg(any(target_feature = "v7", doc))]
7272
mod crc;
73-
#[cfg(any(target_arch = "aarch64", target_feature = "v7", doc))]
73+
#[cfg(any(target_feature = "v7", doc))]
7474
pub use crc::*;
7575

76-
#[cfg(any(target_arch = "aarch64", target_feature = "v7", doc))]
76+
#[cfg(any(target_feature = "v7", doc))]
7777
mod crypto;
78-
#[cfg(any(target_arch = "aarch64", target_feature = "v7", doc))]
78+
#[cfg(any(arget_feature = "v7", doc))]
7979
pub use self::crypto::*;
8080

81-
#[cfg(any(target_arch = "aarch64", target_feature = "v7", doc))]
8281
pub(crate) mod neon;
83-
#[cfg(any(target_arch = "aarch64", target_feature = "v7", doc))]
8482
pub use self::neon::*;
8583

8684
mod sealed {

crates/core_arch/src/acle/neon/mod.rs

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -646,8 +646,13 @@ pub unsafe fn vld1q_dup_s32(ptr: *const i32) -> int32x4_t {
646646
#[cfg_attr(all(test, target_arch = "aarch64"), assert_instr(ldr))]
647647
pub unsafe fn vld1_dup_s64(ptr: *const i64) -> int64x1_t {
648648
#[cfg(target_arch = "aarch64")]
649-
use crate::core_arch::aarch64::vld1_s64;
650-
vld1_s64(ptr)
649+
{
650+
crate::core_arch::aarch64::vld1_s64(ptr)
651+
}
652+
#[cfg(target_arch = "arm")]
653+
{
654+
crate::core_arch::arm::vld1_s64(ptr)
655+
}
651656
}
652657

653658
/// Load one single-element structure and Replicate to all lanes (of one register).
@@ -735,8 +740,13 @@ pub unsafe fn vld1q_dup_u32(ptr: *const u32) -> uint32x4_t {
735740
#[cfg_attr(all(test, target_arch = "aarch64"), assert_instr(ldr))]
736741
pub unsafe fn vld1_dup_u64(ptr: *const u64) -> uint64x1_t {
737742
#[cfg(target_arch = "aarch64")]
738-
use crate::core_arch::aarch64::vld1_u64;
739-
vld1_u64(ptr)
743+
{
744+
crate::core_arch::aarch64::vld1_u64(ptr)
745+
}
746+
#[cfg(target_arch = "arm")]
747+
{
748+
crate::core_arch::arm::vld1_u64(ptr)
749+
}
740750
}
741751

742752
/// Load one single-element structure and Replicate to all lanes (of one register).
@@ -4065,7 +4075,7 @@ pub unsafe fn vrev64q_p16(a: poly16x8_t) -> poly16x8_t {
40654075
pub unsafe fn vpadal_s8(a: int16x4_t, b: int8x8_t) -> int16x4_t {
40664076
#[cfg(target_arch = "arm")]
40674077
{
4068-
vpadal_s8_(a, b)
4078+
crate::core_arch::arm::neon::vpadal_s8_(a, b)
40694079
}
40704080
#[cfg(target_arch = "aarch64")]
40714081
{
@@ -4082,7 +4092,7 @@ pub unsafe fn vpadal_s8(a: int16x4_t, b: int8x8_t) -> int16x4_t {
40824092
pub unsafe fn vpadal_s16(a: int32x2_t, b: int16x4_t) -> int32x2_t {
40834093
#[cfg(target_arch = "arm")]
40844094
{
4085-
vpadal_s16_(a, b)
4095+
crate::core_arch::arm::neon::vpadal_s16_(a, b)
40864096
}
40874097
#[cfg(target_arch = "aarch64")]
40884098
{
@@ -4099,7 +4109,7 @@ pub unsafe fn vpadal_s16(a: int32x2_t, b: int16x4_t) -> int32x2_t {
40994109
pub unsafe fn vpadal_s32(a: int64x1_t, b: int32x2_t) -> int64x1_t {
41004110
#[cfg(target_arch = "arm")]
41014111
{
4102-
vpadal_s32_(a, b)
4112+
crate::core_arch::arm::neon::vpadal_s32_(a, b)
41034113
}
41044114
#[cfg(target_arch = "aarch64")]
41054115
{
@@ -4116,7 +4126,7 @@ pub unsafe fn vpadal_s32(a: int64x1_t, b: int32x2_t) -> int64x1_t {
41164126
pub unsafe fn vpadalq_s8(a: int16x8_t, b: int8x16_t) -> int16x8_t {
41174127
#[cfg(target_arch = "arm")]
41184128
{
4119-
vpadalq_s8_(a, b)
4129+
crate::core_arch::arm::neon::vpadalq_s8_(a, b)
41204130
}
41214131
#[cfg(target_arch = "aarch64")]
41224132
{
@@ -4133,7 +4143,7 @@ pub unsafe fn vpadalq_s8(a: int16x8_t, b: int8x16_t) -> int16x8_t {
41334143
pub unsafe fn vpadalq_s16(a: int32x4_t, b: int16x8_t) -> int32x4_t {
41344144
#[cfg(target_arch = "arm")]
41354145
{
4136-
vpadalq_s16_(a, b)
4146+
crate::core_arch::arm::neon::vpadalq_s16_(a, b)
41374147
}
41384148
#[cfg(target_arch = "aarch64")]
41394149
{
@@ -4150,7 +4160,7 @@ pub unsafe fn vpadalq_s16(a: int32x4_t, b: int16x8_t) -> int32x4_t {
41504160
pub unsafe fn vpadalq_s32(a: int64x2_t, b: int32x4_t) -> int64x2_t {
41514161
#[cfg(target_arch = "arm")]
41524162
{
4153-
vpadalq_s32_(a, b)
4163+
crate::core_arch::arm::neon::vpadalq_s32_(a, b)
41544164
}
41554165
#[cfg(target_arch = "aarch64")]
41564166
{
@@ -4167,7 +4177,7 @@ pub unsafe fn vpadalq_s32(a: int64x2_t, b: int32x4_t) -> int64x2_t {
41674177
pub unsafe fn vpadal_u8(a: uint16x4_t, b: uint8x8_t) -> uint16x4_t {
41684178
#[cfg(target_arch = "arm")]
41694179
{
4170-
vpadal_u8_(a, b)
4180+
crate::core_arch::arm::neon::vpadal_u8_(a, b)
41714181
}
41724182
#[cfg(target_arch = "aarch64")]
41734183
{
@@ -4184,7 +4194,7 @@ pub unsafe fn vpadal_u8(a: uint16x4_t, b: uint8x8_t) -> uint16x4_t {
41844194
pub unsafe fn vpadal_u16(a: uint32x2_t, b: uint16x4_t) -> uint32x2_t {
41854195
#[cfg(target_arch = "arm")]
41864196
{
4187-
vpadal_u16_(a, b)
4197+
crate::core_arch::arm::neon::vpadal_u16_(a, b)
41884198
}
41894199
#[cfg(target_arch = "aarch64")]
41904200
{
@@ -4201,7 +4211,7 @@ pub unsafe fn vpadal_u16(a: uint32x2_t, b: uint16x4_t) -> uint32x2_t {
42014211
pub unsafe fn vpadal_u32(a: uint64x1_t, b: uint32x2_t) -> uint64x1_t {
42024212
#[cfg(target_arch = "arm")]
42034213
{
4204-
vpadal_u32_(a, b)
4214+
crate::core_arch::arm::neon::vpadal_u32_(a, b)
42054215
}
42064216
#[cfg(target_arch = "aarch64")]
42074217
{
@@ -4218,7 +4228,7 @@ pub unsafe fn vpadal_u32(a: uint64x1_t, b: uint32x2_t) -> uint64x1_t {
42184228
pub unsafe fn vpadalq_u8(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t {
42194229
#[cfg(target_arch = "arm")]
42204230
{
4221-
vpadalq_u8_(a, b)
4231+
crate::core_arch::arm::neon::vpadalq_u8_(a, b)
42224232
}
42234233
#[cfg(target_arch = "aarch64")]
42244234
{
@@ -4235,7 +4245,7 @@ pub unsafe fn vpadalq_u8(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t {
42354245
pub unsafe fn vpadalq_u16(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t {
42364246
#[cfg(target_arch = "arm")]
42374247
{
4238-
vpadalq_u16_(a, b)
4248+
crate::core_arch::arm::neon::vpadalq_u16_(a, b)
42394249
}
42404250
#[cfg(target_arch = "aarch64")]
42414251
{
@@ -4252,7 +4262,7 @@ pub unsafe fn vpadalq_u16(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t {
42524262
pub unsafe fn vpadalq_u32(a: uint64x2_t, b: uint32x4_t) -> uint64x2_t {
42534263
#[cfg(target_arch = "arm")]
42544264
{
4255-
vpadalq_u32_(a, b)
4265+
crate::core_arch::arm::neon::vpadalq_u32_(a, b)
42564266
}
42574267
#[cfg(target_arch = "aarch64")]
42584268
{
@@ -4264,7 +4274,11 @@ pub unsafe fn vpadalq_u32(a: uint64x2_t, b: uint32x4_t) -> uint64x2_t {
42644274
mod tests {
42654275
use super::*;
42664276
use crate::core_arch::arm::test_support::*;
4267-
use crate::core_arch::{arm::*, simd::*};
4277+
use crate::core_arch::simd::*;
4278+
#[cfg(target_arch = "arm")]
4279+
use crate::core_arch::arm::*;
4280+
#[cfg(target_arch = "aarch64")]
4281+
use crate::core_arch::aarch64::*;
42684282
use std::{i16, i32, i8, mem::transmute, u16, u32, u8, vec::Vec};
42694283
use stdarch_test::simd_test;
42704284

crates/core_arch/src/arm/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ pub use crate::core_arch::acle::*;
8080
#[cfg(test)]
8181
use stdarch_test::assert_instr;
8282

83-
mod neon;
83+
pub(crate) mod neon;
8484
pub use neon::*;
8585

8686
/// Generates the trap instruction `UDF`
@@ -92,5 +92,4 @@ pub unsafe fn udf() -> ! {
9292
}
9393

9494
#[cfg(test)]
95-
#[cfg(any(target_arch = "aarch64", target_feature = "v7"))]
9695
pub(crate) mod test_support;

crates/core_arch/src/arm/neon.rs

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,30 +26,30 @@ extern "C" {
2626
#[link_name = "llvm.arm.neon.vbsl.v16i8"]
2727
fn vbslq_s8_(a: int8x16_t, b: int8x16_t, c: int8x16_t) -> int8x16_t;
2828
#[link_name = "llvm.arm.neon.vpadals.v4i16.v8i8"]
29-
fn vpadal_s8_(a: int16x4_t, b: int8x8_t) -> int16x4_t;
29+
pub(crate) fn vpadal_s8_(a: int16x4_t, b: int8x8_t) -> int16x4_t;
3030
#[link_name = "llvm.arm.neon.vpadals.v2i32.v4i16"]
31-
fn vpadal_s16_(a: int32x2_t, b: int16x4_t) -> int32x2_t;
31+
pub(crate) fn vpadal_s16_(a: int32x2_t, b: int16x4_t) -> int32x2_t;
3232
#[link_name = "llvm.arm.neon.vpadals.v1i64.v2i32"]
33-
fn vpadal_s32_(a: int64x1_t, b: int32x2_t) -> int64x1_t;
33+
pub(crate) fn vpadal_s32_(a: int64x1_t, b: int32x2_t) -> int64x1_t;
3434
#[link_name = "llvm.arm.neon.vpadals.v8i16.v16i8"]
35-
fn vpadalq_s8_(a: int16x8_t, b: int8x16_t) -> int16x8_t;
35+
pub(crate) fn vpadalq_s8_(a: int16x8_t, b: int8x16_t) -> int16x8_t;
3636
#[link_name = "llvm.arm.neon.vpadals.v4i32.v8i16"]
37-
fn vpadalq_s16_(a: int32x4_t, b: int16x8_t) -> int32x4_t;
37+
pub(crate) fn vpadalq_s16_(a: int32x4_t, b: int16x8_t) -> int32x4_t;
3838
#[link_name = "llvm.arm.neon.vpadals.v2i64.v4i32"]
39-
fn vpadalq_s32_(a: int64x2_t, b: int32x4_t) -> int64x2_t;
39+
pub(crate) fn vpadalq_s32_(a: int64x2_t, b: int32x4_t) -> int64x2_t;
4040

4141
#[link_name = "llvm.arm.neon.vpadalu.v4i16.v8i8"]
42-
fn vpadal_u8_(a: uint16x4_t, b: uint8x8_t) -> uint16x4_t;
42+
pub(crate) fn vpadal_u8_(a: uint16x4_t, b: uint8x8_t) -> uint16x4_t;
4343
#[link_name = "llvm.arm.neon.vpadalu.v2i32.v4i16"]
44-
fn vpadal_u16_(a: uint32x2_t, b: uint16x4_t) -> uint32x2_t;
44+
pub(crate) fn vpadal_u16_(a: uint32x2_t, b: uint16x4_t) -> uint32x2_t;
4545
#[link_name = "llvm.arm.neon.vpadalu.v1i64.v2i32"]
46-
fn vpadal_u32_(a: uint64x1_t, b: uint32x2_t) -> uint64x1_t;
46+
pub(crate) fn vpadal_u32_(a: uint64x1_t, b: uint32x2_t) -> uint64x1_t;
4747
#[link_name = "llvm.arm.neon.vpadalu.v8i16.v16i8"]
48-
fn vpadalq_u8_(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t;
48+
pub(crate) fn vpadalq_u8_(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t;
4949
#[link_name = "llvm.arm.neon.vpadalu.v4i32.v8i16"]
50-
fn vpadalq_u16_(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t;
50+
pub(crate) fn vpadalq_u16_(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t;
5151
#[link_name = "llvm.arm.neon.vpadalu.v2i64.v4i32"]
52-
fn vpadalq_u32_(a: uint64x2_t, b: uint32x4_t) -> uint64x2_t;
52+
pub(crate) fn vpadalq_u32_(a: uint64x2_t, b: uint32x4_t) -> uint64x2_t;
5353

5454
#[link_name = "llvm.arm.neon.vtbl1"]
5555
fn vtbl1(a: int8x8_t, b: int8x8_t) -> int8x8_t;
@@ -1162,6 +1162,11 @@ pub unsafe fn vsriq_n_p16<const N: i32>(a: poly16x8_t, b: poly16x8_t) -> poly16x
11621162

11631163
#[cfg(test)]
11641164
mod tests {
1165+
use super::*;
1166+
use crate::core_arch::{arm::*, simd::*};
1167+
use stdarch_test::simd_test;
1168+
use crate::mem::transmute;
1169+
11651170
#[cfg(target_arch = "arm")]
11661171
#[simd_test(enable = "neon")]
11671172
unsafe fn test_vcvtq_s32_f32() {

0 commit comments

Comments
 (0)