Skip to content

Commit f866c0a

Browse files
committed
Merge remote-tracking branch 'origin/master'
2 parents 6be7f85 + 7580265 commit f866c0a

File tree

8 files changed

+1774
-42
lines changed

8 files changed

+1774
-42
lines changed

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

Lines changed: 576 additions & 0 deletions
Large diffs are not rendered by default.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ pub use self::generated::*;
1111

1212
use crate::{
1313
core_arch::{arm::*, simd::*, simd_llvm::*},
14+
hint::unreachable_unchecked,
1415
mem::{transmute, zeroed},
1516
};
1617
#[cfg(test)]
1718
use stdarch_test::assert_instr;
18-
use core::hint::unreachable_unchecked;
1919

2020
types! {
2121
/// ARM-specific 64-bit wide vector of one packed `f64`.

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

Lines changed: 880 additions & 0 deletions
Large diffs are not rendered by default.

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ mod generated;
66
pub use self::generated::*;
77

88
use crate::{
9-
core_arch::simd::*, core_arch::simd_llvm::*, hint::unreachable_unchecked, mem::transmute,
9+
convert::TryInto, core_arch::simd::*, core_arch::simd_llvm::*, hint::unreachable_unchecked,
10+
mem::transmute,
1011
};
11-
use core::convert::TryInto;
1212
#[cfg(test)]
1313
use stdarch_test::assert_instr;
1414

crates/core_arch/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,4 +75,4 @@ mod core_arch;
7575
pub use self::core_arch::arch;
7676

7777
#[allow(unused_imports)]
78-
use core::{ffi, hint, intrinsics, marker, mem, ops, ptr, sync};
78+
use core::{convert, ffi, hint, intrinsics, marker, mem, ops, ptr, sync};

crates/stdarch-gen/neon.spec

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -890,6 +890,148 @@ aarch64 = fcvtpu
890890
link-aarch64 = fcvtpu._EXT2_._EXT_
891891
generate float32x2_t:uint32x2_t, float32x4_t:uint32x4_t, float64x1_t:uint64x1_t, float64x2_t:uint64x2_t
892892

893+
/// Set all vector lanes to the same value
894+
name = vdup
895+
lane-suffixes
896+
constn = N
897+
multi_fn = static_assert_imm-in_exp_len-N
898+
multi_fn = simd_shuffle-out_len-noext, a, a, {dup-out_len-N as u32}
899+
a = 1, 1, 1, 4, 1, 6, 7, 8, 1, 10, 11, 12, 13, 14, 15, 16
900+
n = HFLEN
901+
validate 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
902+
903+
aarch64 = dup
904+
generate poly64x2_t, poly64x1_t:poly64x2_t
905+
906+
arm = vdup.l
907+
generate int*_t
908+
generate int8x16_t:int8x8_t, int16x8_t:int16x4_t, int32x4_t:int32x2_t
909+
generate int8x8_t:int8x16_t, int16x4_t:int16x8_t, int32x2_t:int32x4_t
910+
911+
generate uint*_t
912+
generate uint8x16_t:uint8x8_t, uint16x8_t:uint16x4_t, uint32x4_t:uint32x2_t
913+
generate uint8x8_t:uint8x16_t, uint16x4_t:uint16x8_t, uint32x2_t:uint32x4_t
914+
915+
generate poly8x8_t, poly8x16_t, poly16x4_t, poly16x8_t
916+
generate poly8x16_t:poly8x8_t, poly16x8_t:poly16x4_t
917+
generate poly8x8_t:poly8x16_t, poly16x4_t:poly16x8_t
918+
919+
/// Set all vector lanes to the same value
920+
name = vdup
921+
lane-suffixes
922+
constn = N
923+
multi_fn = static_assert_imm-in_exp_len-N
924+
multi_fn = simd_shuffle-out_len-noext, a, a, {dup-out_len-N as u32}
925+
a = 1, 1, 1, 4, 1, 6, 7, 8, 1, 10, 11, 12, 13, 14, 15, 16
926+
n = HFLEN
927+
validate 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
928+
929+
aarch64 = dup
930+
arm = vmov
931+
generate int64x2_t, int64x1_t:int64x2_t, uint64x2_t, uint64x1_t:uint64x2_t
932+
933+
/// Set all vector lanes to the same value
934+
name = vdup
935+
lane-suffixes
936+
constn = N
937+
multi_fn = static_assert_imm-in_exp_len-N
938+
multi_fn = simd_shuffle-out_len-noext, a, a, {dup-out_len-N as u32}
939+
a = 1., 1., 1., 4.
940+
n = HFLEN
941+
validate 1., 1., 1., 1.
942+
943+
aarch64 = dup
944+
generate float64x2_t, float64x1_t:float64x2_t
945+
946+
arm = vdup.l
947+
generate float*_t, float32x4_t:float32x2_t, float32x2_t:float32x4_t
948+
949+
/// Set all vector lanes to the same value
950+
name = vdup
951+
lane-suffixes
952+
constn = N
953+
multi_fn = static_assert_imm-in_exp_len-N
954+
multi_fn = a
955+
a = 0
956+
n = HFLEN
957+
validate 0
958+
959+
aarch64 = nop
960+
generate poly64x1_t
961+
962+
arm = nop
963+
generate int64x1_t, uint64x1_t
964+
965+
/// Set all vector lanes to the same value
966+
name = vdup
967+
lane-suffixes
968+
constn = N
969+
multi_fn = static_assert_imm-in_exp_len-N
970+
multi_fn = a
971+
a = 0.
972+
n = HFLEN
973+
validate 0.
974+
975+
aarch64 = nop
976+
generate float64x1_t
977+
978+
/// Set all vector lanes to the same value
979+
name = vdup
980+
lane-suffixes
981+
constn = N
982+
multi_fn = static_assert_imm-in_exp_len-N
983+
multi_fn = transmute--<element_t _>, {simd_extract, a, N as u32}
984+
a = 0, 1
985+
n = HFLEN
986+
validate 1
987+
988+
aarch64 = nop
989+
generate poly64x2_t:poly64x1_t
990+
991+
arm = vmov
992+
generate int64x2_t:int64x1_t, uint64x2_t:uint64x1_t
993+
994+
/// Set all vector lanes to the same value
995+
name = vdup
996+
lane-suffixes
997+
constn = N
998+
multi_fn = static_assert_imm-in_exp_len-N
999+
multi_fn = transmute--<element_t _>, {simd_extract, a, N as u32}
1000+
a = 0., 1.
1001+
n = HFLEN
1002+
validate 1.
1003+
1004+
aarch64 = nop
1005+
generate float64x2_t:float64x1_t
1006+
1007+
/// Set all vector lanes to the same value
1008+
name = vdup
1009+
lane-suffixes
1010+
constn = N
1011+
multi_fn = static_assert_imm-in_exp_len-N
1012+
multi_fn = simd_extract, a, N as u32
1013+
a = 1, 1, 1, 4, 1, 6, 7, 8, 1, 10, 11, 12, 13, 14, 15, 16
1014+
n = HFLEN
1015+
validate 1
1016+
1017+
aarch64 = nop
1018+
generate int8x8_t:i8, int8x16_t:i8, int16x4_t:i16, int16x8_t:i16, int32x2_t:i32, int32x4_t:i32, int64x1_t:i64, int64x2_t:i64
1019+
generate uint8x8_t:u8, uint8x16_t:u8, uint16x4_t:u16, uint16x8_t:u16, uint32x2_t:u32, uint32x4_t:u32, uint64x1_t:u64, uint64x2_t:u64
1020+
generate poly8x8_t:p8, poly8x16_t:p8, poly16x4_t:p16, poly16x8_t:p16
1021+
1022+
/// Set all vector lanes to the same value
1023+
name = vdup
1024+
lane-suffixes
1025+
constn = N
1026+
multi_fn = static_assert_imm-in_exp_len-N
1027+
multi_fn = simd_extract, a, N as u32
1028+
a = 1., 1., 1., 4.
1029+
n = HFLEN
1030+
validate 1.
1031+
1032+
aarch64 = nop
1033+
generate float32x2_t:f32, float32x4_t:f32, float64x1_t:f64, float64x2_t:f64
1034+
8931035
/// Extract vector from pair of vectors
8941036
name = vext
8951037
constn = N

0 commit comments

Comments
 (0)