Skip to content

Commit 7fb504f

Browse files
authored
Merge pull request #1965 from folkertdev/s390x-shuffle
s390x: use `simd_shuffle!` macro
2 parents 3d86dcf + 1105394 commit 7fb504f

File tree

1 file changed

+11
-13
lines changed

1 file changed

+11
-13
lines changed

crates/core_arch/src/s390x/vector.rs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -896,31 +896,31 @@ mod sealed {
896896
#[cfg_attr(test, assert_instr(vrepb, IMM2 = 1))]
897897
unsafe fn vrepb<const IMM2: u32>(a: vector_signed_char) -> vector_signed_char {
898898
static_assert_uimm_bits!(IMM2, 4);
899-
simd_shuffle(a, a, const { u32x16::from_array([IMM2; 16]) })
899+
simd_shuffle!(a, a, [IMM2; 16])
900900
}
901901

902902
#[inline]
903903
#[target_feature(enable = "vector")]
904904
#[cfg_attr(test, assert_instr(vreph, IMM2 = 1))]
905905
unsafe fn vreph<const IMM2: u32>(a: vector_signed_short) -> vector_signed_short {
906906
static_assert_uimm_bits!(IMM2, 3);
907-
simd_shuffle(a, a, const { u32x8::from_array([IMM2; 8]) })
907+
simd_shuffle!(a, a, [IMM2; 8])
908908
}
909909

910910
#[inline]
911911
#[target_feature(enable = "vector")]
912912
#[cfg_attr(test, assert_instr(vrepf, IMM2 = 1))]
913913
unsafe fn vrepf<const IMM2: u32>(a: vector_signed_int) -> vector_signed_int {
914914
static_assert_uimm_bits!(IMM2, 2);
915-
simd_shuffle(a, a, const { u32x4::from_array([IMM2; 4]) })
915+
simd_shuffle!(a, a, [IMM2; 4])
916916
}
917917

918918
#[inline]
919919
#[target_feature(enable = "vector")]
920920
#[cfg_attr(test, assert_instr(vrepg, IMM2 = 1))]
921921
unsafe fn vrepg<const IMM2: u32>(a: vector_signed_long_long) -> vector_signed_long_long {
922922
static_assert_uimm_bits!(IMM2, 1);
923-
simd_shuffle(a, a, const { u32x2::from_array([IMM2; 2]) })
923+
simd_shuffle!(a, a, [IMM2; 2])
924924
}
925925

926926
macro_rules! impl_vec_splat {
@@ -5307,11 +5307,13 @@ pub unsafe fn vec_search_string_until_zero_cc<T: sealed::VectorSearchString>(
53075307
#[inline]
53085308
#[target_feature(enable = "vector-enhancements-1")]
53095309
#[unstable(feature = "stdarch_s390x", issue = "135681")]
5310-
// FIXME: this emits `vflls` where `vldeb` is expected
5311-
// #[cfg_attr(all(test, target_feature = "vector-enhancements-1"), assert_instr(vldeb))]
5310+
// NOTE: `vflls` and `vldeb` are equivalent; our disassmbler prefers vflls.
5311+
#[cfg_attr(
5312+
all(test, target_feature = "vector-enhancements-1"),
5313+
assert_instr(vflls)
5314+
)]
53125315
pub unsafe fn vec_doublee(a: vector_float) -> vector_double {
5313-
let even = simd_shuffle::<_, _, f32x2>(a, a, const { u32x2::from_array([0, 2]) });
5314-
simd_as(even)
5316+
simd_as::<f32x2, vector_double>(simd_shuffle!(a, a, [0, 2]))
53155317
}
53165318

53175319
/// Vector Convert from double to float (even elements)
@@ -5322,11 +5324,7 @@ pub unsafe fn vec_doublee(a: vector_float) -> vector_double {
53225324
// #[cfg_attr(all(test, target_feature = "vector-enhancements-1"), assert_instr(vledb))]
53235325
pub unsafe fn vec_floate(a: vector_double) -> vector_float {
53245326
let truncated: f32x2 = simd_as(a);
5325-
simd_shuffle(
5326-
truncated,
5327-
truncated,
5328-
const { u32x4::from_array([0, 0, 1, 1]) },
5329-
)
5327+
simd_shuffle!(truncated, truncated, [0, 0, 1, 1])
53305328
}
53315329

53325330
/// Vector Convert from int to float

0 commit comments

Comments
 (0)