update aarch64/arm64ec assembly tests I believe this is effectively equivalent, just a different spelling of the same semantics
diff --git a/library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs b/library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs index b371530..3a47ede 100644 --- a/library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs +++ b/library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs
@@ -15285,11 +15285,17 @@ pub fn vget_low_f16(a: float16x8_t) -> float16x4_t { #[cfg(target_endian = "little")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15307,11 +15313,17 @@ pub fn vget_high_f32(a: float32x4_t) -> float32x2_t { #[cfg(target_endian = "big")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15333,11 +15345,17 @@ pub fn vget_high_f32(a: float32x4_t) -> float32x2_t { #[cfg(target_endian = "little")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15355,11 +15373,17 @@ pub fn vget_high_p16(a: poly16x8_t) -> poly16x4_t { #[cfg(target_endian = "big")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15381,11 +15405,17 @@ pub fn vget_high_p16(a: poly16x8_t) -> poly16x4_t { #[cfg(target_endian = "little")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15403,11 +15433,17 @@ pub fn vget_high_p8(a: poly8x16_t) -> poly8x8_t { #[cfg(target_endian = "big")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15430,11 +15466,17 @@ pub fn vget_high_p8(a: poly8x16_t) -> poly8x8_t { #[cfg(target_endian = "little")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15452,11 +15494,17 @@ pub fn vget_high_s16(a: int16x8_t) -> int16x4_t { #[cfg(target_endian = "big")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15478,11 +15526,17 @@ pub fn vget_high_s16(a: int16x8_t) -> int16x4_t { #[cfg(target_endian = "little")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15500,11 +15554,17 @@ pub fn vget_high_s32(a: int32x4_t) -> int32x2_t { #[cfg(target_endian = "big")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15526,11 +15586,17 @@ pub fn vget_high_s32(a: int32x4_t) -> int32x2_t { #[cfg(target_endian = "little")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15548,11 +15614,17 @@ pub fn vget_high_s8(a: int8x16_t) -> int8x8_t { #[cfg(target_endian = "big")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15575,11 +15647,17 @@ pub fn vget_high_s8(a: int8x16_t) -> int8x8_t { #[cfg(target_endian = "little")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15597,11 +15675,17 @@ pub fn vget_high_u16(a: uint16x8_t) -> uint16x4_t { #[cfg(target_endian = "big")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15623,11 +15707,17 @@ pub fn vget_high_u16(a: uint16x8_t) -> uint16x4_t { #[cfg(target_endian = "little")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15645,11 +15735,17 @@ pub fn vget_high_u32(a: uint32x4_t) -> uint32x2_t { #[cfg(target_endian = "big")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15671,11 +15767,17 @@ pub fn vget_high_u32(a: uint32x4_t) -> uint32x2_t { #[cfg(target_endian = "little")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15693,11 +15795,17 @@ pub fn vget_high_u8(a: uint8x16_t) -> uint8x8_t { #[cfg(target_endian = "big")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15720,11 +15828,17 @@ pub fn vget_high_u8(a: uint8x16_t) -> uint8x8_t { #[cfg(target_endian = "little")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15742,11 +15856,17 @@ pub fn vget_high_p64(a: poly64x2_t) -> poly64x1_t { #[cfg(target_endian = "big")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15767,11 +15887,17 @@ pub fn vget_high_p64(a: poly64x2_t) -> poly64x1_t { #[cfg(target_endian = "little")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15789,11 +15915,17 @@ pub fn vget_high_s64(a: int64x2_t) -> int64x1_t { #[cfg(target_endian = "big")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15814,11 +15946,17 @@ pub fn vget_high_s64(a: int64x2_t) -> int64x1_t { #[cfg(target_endian = "little")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0") @@ -15836,11 +15974,17 @@ pub fn vget_high_u64(a: uint64x2_t) -> uint64x1_t { #[cfg(target_endian = "big")] #[target_feature(enable = "neon")] #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))] -#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))] +#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov))] #[cfg_attr( - all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), + all(test, target_arch = "aarch64", target_endian = "little", not(windows)), + assert_instr(mov) +)] +#[cfg_attr( + all(test, target_arch = "aarch64", target_endian = "big"), assert_instr(ext) )] +#[cfg_attr(all(test, target_arch = "arm64ec"), assert_instr(dup))] +#[cfg_attr(all(test, target_arch = "aarch64", windows), assert_instr(dup))] #[cfg_attr( not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0")
diff --git a/library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml b/library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml index 7473742..7a7656e 100644 --- a/library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml +++ b/library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml
@@ -55,6 +55,18 @@ neon-target-aarch64-arm64ec: &neon-target-aarch64-arm64ec FnCall: [all, [test, {FnCall: [any, ['target_arch = "aarch64"', 'target_arch = "arm64ec"']]}]] +neon-target-aarch64-le: &neon-target-aarch64-le + FnCall: [all, [test, 'target_arch = "aarch64"', 'target_endian = "little"', {FnCall: [not, [windows]]}]] + +neon-target-aarch64-be: &neon-target-aarch64-be + FnCall: [all, [test, 'target_arch = "aarch64"', 'target_endian = "big"']] + +neon-target-arm64ec: &neon-target-arm64ec + FnCall: [all, [test, 'target_arch = "arm64ec"']] + +neon-target-aarch64-windows: &neon-target-aarch64-windows + FnCall: [all, [test, 'target_arch = "aarch64"', windows]] + # #[cfg_attr(not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0"))] neon-not-arm-stable: &neon-not-arm-stable FnCall: [cfg_attr, [{ FnCall: [not, ['target_arch = "arm"']]}, {FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]}]] @@ -15076,18 +15088,21 @@ return_type: "{neon_type[2]}" attr: - *neon-v7 - - FnCall: [cfg_attr, [*test-is-arm, { FnCall: [assert_instr, ['"{type[3]}"']]}]] - - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, ['{type[4]}']]}]] + - FnCall: [cfg_attr, [*test-is-arm, { FnCall: [assert_instr, ['vmov']]}]] + - FnCall: [cfg_attr, [*neon-target-aarch64-le, {FnCall: [assert_instr, ['mov']]}]] + - FnCall: [cfg_attr, [*neon-target-aarch64-be, {FnCall: [assert_instr, ['ext']]}]] + - FnCall: [cfg_attr, [*neon-target-arm64ec, {FnCall: [assert_instr, ['dup']]}]] + - FnCall: [cfg_attr, [*neon-target-aarch64-windows, {FnCall: [assert_instr, ['dup']]}]] - *neon-not-arm-stable - *neon-cfg-arm-unstable safety: safe big_endian_inverse: true types: - - ['vget_high_s64', 'int64x2_t', 'int64x1_t', 'vmov', 'ext', 'int64x1_t([simd_extract!(a, 1)])'] - - ['vget_high_u64', 'uint64x2_t', 'uint64x1_t', 'vmov', 'ext', 'uint64x1_t([simd_extract!(a, 1)])'] - - ['vget_high_p64', 'poly64x2_t', 'poly64x1_t', 'vmov', 'ext', 'transmute(u64x1::new(simd_extract!(a, 1)))'] + - ['vget_high_s64', 'int64x2_t', 'int64x1_t', 'int64x1_t([simd_extract!(a, 1)])'] + - ['vget_high_u64', 'uint64x2_t', 'uint64x1_t', 'uint64x1_t([simd_extract!(a, 1)])'] + - ['vget_high_p64', 'poly64x2_t', 'poly64x1_t', 'transmute(u64x1::new(simd_extract!(a, 1)))'] compose: - - Identifier: ['{type[5]}', UnsafeSymbol] + - Identifier: ['{type[3]}', UnsafeSymbol] - name: "{type[0]}" doc: "Duplicate vector element to vector or scalar" @@ -15113,24 +15128,27 @@ return_type: "{neon_type[2]}" attr: - *neon-v7 - - FnCall: [cfg_attr, [*test-is-arm, { FnCall: [assert_instr, ['"{type[3]}"']]}]] - - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, ['{type[4]}']]}]] + - FnCall: [cfg_attr, [*test-is-arm, { FnCall: [assert_instr, ['vmov']]}]] + - FnCall: [cfg_attr, [*neon-target-aarch64-le, {FnCall: [assert_instr, ['mov']]}]] + - FnCall: [cfg_attr, [*neon-target-aarch64-be, {FnCall: [assert_instr, ['ext']]}]] + - FnCall: [cfg_attr, [*neon-target-arm64ec, {FnCall: [assert_instr, ['dup']]}]] + - FnCall: [cfg_attr, [*neon-target-aarch64-windows, {FnCall: [assert_instr, ['dup']]}]] - *neon-not-arm-stable - *neon-cfg-arm-unstable safety: safe big_endian_inverse: true types: - - ['vget_high_s8', 'int8x16_t', 'int8x8_t', 'vmov', 'ext', '[8, 9, 10, 11, 12, 13, 14, 15]'] - - ['vget_high_u8', 'uint8x16_t', 'uint8x8_t', 'vmov', 'ext', '[8, 9, 10, 11, 12, 13, 14, 15]'] - - ['vget_high_p8', 'poly8x16_t', 'poly8x8_t', 'vmov', 'ext', '[8, 9, 10, 11, 12, 13, 14, 15]'] - - ['vget_high_s16', 'int16x8_t', 'int16x4_t', 'vmov', 'ext', '[4, 5, 6, 7]'] - - ['vget_high_u16', 'uint16x8_t', 'uint16x4_t', 'vmov', 'ext', '[4, 5, 6, 7]'] - - ['vget_high_p16', 'poly16x8_t', 'poly16x4_t', 'vmov', 'ext', '[4, 5, 6, 7]'] - - ['vget_high_s32', 'int32x4_t', 'int32x2_t', 'vmov', 'ext', '[2, 3]'] - - ['vget_high_u32', 'uint32x4_t', 'uint32x2_t', 'vmov', 'ext', '[2, 3]'] - - ['vget_high_f32', 'float32x4_t', 'float32x2_t', 'vmov', 'ext', '[2, 3]'] + - ['vget_high_s8', 'int8x16_t', 'int8x8_t', '[8, 9, 10, 11, 12, 13, 14, 15]'] + - ['vget_high_u8', 'uint8x16_t', 'uint8x8_t', '[8, 9, 10, 11, 12, 13, 14, 15]'] + - ['vget_high_p8', 'poly8x16_t', 'poly8x8_t', '[8, 9, 10, 11, 12, 13, 14, 15]'] + - ['vget_high_s16', 'int16x8_t', 'int16x4_t', '[4, 5, 6, 7]'] + - ['vget_high_u16', 'uint16x8_t', 'uint16x4_t', '[4, 5, 6, 7]'] + - ['vget_high_p16', 'poly16x8_t', 'poly16x4_t', '[4, 5, 6, 7]'] + - ['vget_high_s32', 'int32x4_t', 'int32x2_t', '[2, 3]'] + - ['vget_high_u32', 'uint32x4_t', 'uint32x2_t', '[2, 3]'] + - ['vget_high_f32', 'float32x4_t', 'float32x2_t', '[2, 3]'] compose: - - FnCall: ['simd_shuffle!', [a, a, '{type[5]}']] + - FnCall: ['simd_shuffle!', [a, a, '{type[3]}']] - name: "{type[0]}" doc: "Duplicate vector element to vector or scalar"