Some of the svdup tests expand to a SEL between two constant vectors.
This patch allows the constants to be formed in either order.
gcc/testsuite/
* gcc.target/aarch64/sve/acle/asm/dup_s16.c: When using SEL to select
between two constant vectors, allow the constant moves to appear in
either order.
* gcc.target/aarch64/sve/acle/asm/dup_s32.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/dup_s64.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/dup_u16.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/dup_u32.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/dup_u64.c: Likewise.
/*
** dup_128_s16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.h), #128
** sel z0\.h, p0, \2, \1\.h
+** |
+** mov (z[0-9]+\.h), #128
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_128_s16_z, svint16_t,
/*
** dup_254_s16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.h), #254
** sel z0\.h, p0, \2, \1\.h
+** |
+** mov (z[0-9]+\.h), #254
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_254_s16_z, svint16_t,
/*
** dup_255_s16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.h), #255
** sel z0\.h, p0, \2, \1\.h
+** |
+** mov (z[0-9]+\.h), #255
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_255_s16_z, svint16_t,
/*
** dup_257_s16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+)\.b, #1
** sel z0\.h, p0, \2\.h, \1\.h
+** |
+** mov (z[0-9]+)\.b, #1
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3\.h, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_257_s16_z, svint16_t,
/*
** dup_7ffe_s16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.h), #32766
** sel z0\.h, p0, \2, \1\.h
+** |
+** mov (z[0-9]+\.h), #32766
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_7ffe_s16_z, svint16_t,
/*
** dup_7fff_s16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.h), #32767
** sel z0\.h, p0, \2, \1\.h
+** |
+** mov (z[0-9]+\.h), #32767
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_7fff_s16_z, svint16_t,
/*
** dup_m129_s16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.h), #-129
** sel z0\.h, p0, \2, \1\.h
+** |
+** mov (z[0-9]+\.h), #-129
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m129_s16_z, svint16_t,
/*
** dup_m255_s16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.h), #-255
** sel z0\.h, p0, \2, \1\.h
+** |
+** mov (z[0-9]+\.h), #-255
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m255_s16_z, svint16_t,
/*
** dup_m257_s16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.h), #-257
** sel z0\.h, p0, \2, \1\.h
+** |
+** mov (z[0-9]+\.h), #-257
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m257_s16_z, svint16_t,
/*
** dup_m258_s16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+)\.b, #-2
** sel z0\.h, p0, \2\.h, \1\.h
+** |
+** mov (z[0-9]+)\.b, #-2
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3\.h, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m258_s16_z, svint16_t,
/*
** dup_m7f01_s16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.h), #-32513
** sel z0\.h, p0, \2, \1\.h
+** |
+** mov (z[0-9]+\.h), #-32513
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m7f01_s16_z, svint16_t,
/*
** dup_m7fff_s16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.h), #-32767
** sel z0\.h, p0, \2, \1\.h
+** |
+** mov (z[0-9]+\.h), #-32767
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m7fff_s16_z, svint16_t,
/*
** dup_128_s32_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.s), #128
** sel z0\.s, p0, \2, \1\.s
+** |
+** mov (z[0-9]+\.s), #128
+** mov (z[0-9]+)\.b, #0
+** sel z0\.s, p0, \3, \4\.s
+** )
** ret
*/
TEST_UNIFORM_Z (dup_128_s32_z, svint32_t,
/*
** dup_254_s32_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.s), #254
** sel z0\.s, p0, \2, \1\.s
+** |
+** mov (z[0-9]+\.s), #254
+** mov (z[0-9]+)\.b, #0
+** sel z0\.s, p0, \3, \4\.s
+** )
** ret
*/
TEST_UNIFORM_Z (dup_254_s32_z, svint32_t,
/*
** dup_255_s32_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.s), #255
** sel z0\.s, p0, \2, \1\.s
+** |
+** mov (z[0-9]+\.s), #255
+** mov (z[0-9]+)\.b, #0
+** sel z0\.s, p0, \3, \4\.s
+** )
** ret
*/
TEST_UNIFORM_Z (dup_255_s32_z, svint32_t,
/*
** dup_7ffe_s32_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.s), #32766
** sel z0\.s, p0, \2, \1\.s
+** |
+** mov (z[0-9]+\.s), #32766
+** mov (z[0-9]+)\.b, #0
+** sel z0\.s, p0, \3, \4\.s
+** )
** ret
*/
TEST_UNIFORM_Z (dup_7ffe_s32_z, svint32_t,
/*
** dup_7fff_s32_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.s), #32767
** sel z0\.s, p0, \2, \1\.s
+** |
+** mov (z[0-9]+\.s), #32767
+** mov (z[0-9]+)\.b, #0
+** sel z0\.s, p0, \3, \4\.s
+** )
** ret
*/
TEST_UNIFORM_Z (dup_7fff_s32_z, svint32_t,
/*
** dup_m129_s32_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.s), #-129
** sel z0\.s, p0, \2, \1\.s
+** |
+** mov (z[0-9]+\.s), #-129
+** mov (z[0-9]+)\.b, #0
+** sel z0\.s, p0, \3, \4\.s
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m129_s32_z, svint32_t,
/*
** dup_m255_s32_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.s), #-255
** sel z0\.s, p0, \2, \1\.s
+** |
+** mov (z[0-9]+\.s), #-255
+** mov (z[0-9]+)\.b, #0
+** sel z0\.s, p0, \3, \4\.s
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m255_s32_z, svint32_t,
/*
** dup_m257_s32_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.s), #-257
** sel z0\.s, p0, \2, \1\.s
+** |
+** mov (z[0-9]+\.s), #-257
+** mov (z[0-9]+)\.b, #0
+** sel z0\.s, p0, \3, \4\.s
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m257_s32_z, svint32_t,
/*
** dup_m7f01_s32_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.s), #-32513
** sel z0\.s, p0, \2, \1\.s
+** |
+** mov (z[0-9]+\.s), #-32513
+** mov (z[0-9]+)\.b, #0
+** sel z0\.s, p0, \3, \4\.s
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m7f01_s32_z, svint32_t,
/*
** dup_m7fff_s32_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.s), #-32767
** sel z0\.s, p0, \2, \1\.s
+** |
+** mov (z[0-9]+\.s), #-32767
+** mov (z[0-9]+)\.b, #0
+** sel z0\.s, p0, \3, \4\.s
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m7fff_s32_z, svint32_t,
/*
** dup_128_s64_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.d), #128
** sel z0\.d, p0, \2, \1\.d
+** |
+** mov (z[0-9]+\.d), #128
+** mov (z[0-9]+)\.b, #0
+** sel z0\.d, p0, \3, \4\.d
+** )
** ret
*/
TEST_UNIFORM_Z (dup_128_s64_z, svint64_t,
/*
** dup_254_s64_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.d), #254
** sel z0\.d, p0, \2, \1\.d
+** |
+** mov (z[0-9]+\.d), #254
+** mov (z[0-9]+)\.b, #0
+** sel z0\.d, p0, \3, \4\.d
+** )
** ret
*/
TEST_UNIFORM_Z (dup_254_s64_z, svint64_t,
/*
** dup_255_s64_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.d), #255
** sel z0\.d, p0, \2, \1\.d
+** |
+** mov (z[0-9]+\.d), #255
+** mov (z[0-9]+)\.b, #0
+** sel z0\.d, p0, \3, \4\.d
+** )
** ret
*/
TEST_UNIFORM_Z (dup_255_s64_z, svint64_t,
/*
** dup_7ffe_s64_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.d), #32766
** sel z0\.d, p0, \2, \1\.d
+** |
+** mov (z[0-9]+\.d), #32766
+** mov (z[0-9]+)\.b, #0
+** sel z0\.d, p0, \3, \4\.d
+** )
** ret
*/
TEST_UNIFORM_Z (dup_7ffe_s64_z, svint64_t,
/*
** dup_7fff_s64_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.d), #32767
** sel z0\.d, p0, \2, \1\.d
+** |
+** mov (z[0-9]+\.d), #32767
+** mov (z[0-9]+)\.b, #0
+** sel z0\.d, p0, \3, \4\.d
+** )
** ret
*/
TEST_UNIFORM_Z (dup_7fff_s64_z, svint64_t,
/*
** dup_m129_s64_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.d), #-129
** sel z0\.d, p0, \2, \1\.d
+** |
+** mov (z[0-9]+\.d), #-129
+** mov (z[0-9]+)\.b, #0
+** sel z0\.d, p0, \3, \4\.d
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m129_s64_z, svint64_t,
/*
** dup_m255_s64_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.d), #-255
** sel z0\.d, p0, \2, \1\.d
+** |
+** mov (z[0-9]+\.d), #-255
+** mov (z[0-9]+)\.b, #0
+** sel z0\.d, p0, \3, \4\.d
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m255_s64_z, svint64_t,
/*
** dup_m257_s64_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.d), #-257
** sel z0\.d, p0, \2, \1\.d
+** |
+** mov (z[0-9]+\.d), #-257
+** mov (z[0-9]+)\.b, #0
+** sel z0\.d, p0, \3, \4\.d
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m257_s64_z, svint64_t,
/*
** dup_m7f01_s64_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.d), #-32513
** sel z0\.d, p0, \2, \1\.d
+** |
+** mov (z[0-9]+\.d), #-32513
+** mov (z[0-9]+)\.b, #0
+** sel z0\.d, p0, \3, \4\.d
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m7f01_s64_z, svint64_t,
/*
** dup_m7fff_s64_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.d), #-32767
** sel z0\.d, p0, \2, \1\.d
+** |
+** mov (z[0-9]+\.d), #-32767
+** mov (z[0-9]+)\.b, #0
+** sel z0\.d, p0, \3, \4\.d
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m7fff_s64_z, svint64_t,
/*
** dup_128_u16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.h), #128
** sel z0\.h, p0, \2, \1\.h
+** |
+** mov (z[0-9]+\.h), #128
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_128_u16_z, svuint16_t,
/*
** dup_254_u16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.h), #254
** sel z0\.h, p0, \2, \1\.h
+** |
+** mov (z[0-9]+\.h), #254
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_254_u16_z, svuint16_t,
/*
** dup_255_u16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.h), #255
** sel z0\.h, p0, \2, \1\.h
+** |
+** mov (z[0-9]+\.h), #255
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_255_u16_z, svuint16_t,
/*
** dup_257_u16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+)\.b, #1
** sel z0\.h, p0, \2\.h, \1\.h
+** |
+** mov (z[0-9]+)\.b, #1
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3\.h, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_257_u16_z, svuint16_t,
/*
** dup_7ffe_u16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.h), #32766
** sel z0\.h, p0, \2, \1\.h
+** |
+** mov (z[0-9]+\.h), #32766
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_7ffe_u16_z, svuint16_t,
/*
** dup_7fff_u16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.h), #32767
** sel z0\.h, p0, \2, \1\.h
+** |
+** mov (z[0-9]+\.h), #32767
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_7fff_u16_z, svuint16_t,
/*
** dup_m129_u16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.h), #-129
** sel z0\.h, p0, \2, \1\.h
+** |
+** mov (z[0-9]+\.h), #-129
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m129_u16_z, svuint16_t,
/*
** dup_m255_u16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.h), #-255
** sel z0\.h, p0, \2, \1\.h
+** |
+** mov (z[0-9]+\.h), #-255
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m255_u16_z, svuint16_t,
/*
** dup_m257_u16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.h), #-257
** sel z0\.h, p0, \2, \1\.h
+** |
+** mov (z[0-9]+\.h), #-257
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m257_u16_z, svuint16_t,
/*
** dup_m258_u16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+)\.b, #-2
** sel z0\.h, p0, \2\.h, \1\.h
+** |
+** mov (z[0-9]+)\.b, #-2
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3\.h, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m258_u16_z, svuint16_t,
/*
** dup_m7f01_u16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.h), #-32513
** sel z0\.h, p0, \2, \1\.h
+** |
+** mov (z[0-9]+\.h), #-32513
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m7f01_u16_z, svuint16_t,
/*
** dup_m7fff_u16_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.h), #-32767
** sel z0\.h, p0, \2, \1\.h
+** |
+** mov (z[0-9]+\.h), #-32767
+** mov (z[0-9]+)\.b, #0
+** sel z0\.h, p0, \3, \4\.h
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m7fff_u16_z, svuint16_t,
/*
** dup_128_u32_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.s), #128
** sel z0\.s, p0, \2, \1\.s
+** |
+** mov (z[0-9]+\.s), #128
+** mov (z[0-9]+)\.b, #0
+** sel z0\.s, p0, \3, \4\.s
+** )
** ret
*/
TEST_UNIFORM_Z (dup_128_u32_z, svuint32_t,
/*
** dup_254_u32_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.s), #254
** sel z0\.s, p0, \2, \1\.s
+** |
+** mov (z[0-9]+\.s), #254
+** mov (z[0-9]+)\.b, #0
+** sel z0\.s, p0, \3, \4\.s
+** )
** ret
*/
TEST_UNIFORM_Z (dup_254_u32_z, svuint32_t,
/*
** dup_255_u32_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.s), #255
** sel z0\.s, p0, \2, \1\.s
+** |
+** mov (z[0-9]+\.s), #255
+** mov (z[0-9]+)\.b, #0
+** sel z0\.s, p0, \3, \4\.s
+** )
** ret
*/
TEST_UNIFORM_Z (dup_255_u32_z, svuint32_t,
/*
** dup_7ffe_u32_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.s), #32766
** sel z0\.s, p0, \2, \1\.s
+** |
+** mov (z[0-9]+\.s), #32766
+** mov (z[0-9]+)\.b, #0
+** sel z0\.s, p0, \3, \4\.s
+** )
** ret
*/
TEST_UNIFORM_Z (dup_7ffe_u32_z, svuint32_t,
/*
** dup_7fff_u32_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.s), #32767
** sel z0\.s, p0, \2, \1\.s
+** |
+** mov (z[0-9]+\.s), #32767
+** mov (z[0-9]+)\.b, #0
+** sel z0\.s, p0, \3, \4\.s
+** )
** ret
*/
TEST_UNIFORM_Z (dup_7fff_u32_z, svuint32_t,
/*
** dup_m129_u32_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.s), #-129
** sel z0\.s, p0, \2, \1\.s
+** |
+** mov (z[0-9]+\.s), #-129
+** mov (z[0-9]+)\.b, #0
+** sel z0\.s, p0, \3, \4\.s
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m129_u32_z, svuint32_t,
/*
** dup_m255_u32_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.s), #-255
** sel z0\.s, p0, \2, \1\.s
+** |
+** mov (z[0-9]+\.s), #-255
+** mov (z[0-9]+)\.b, #0
+** sel z0\.s, p0, \3, \4\.s
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m255_u32_z, svuint32_t,
/*
** dup_m257_u32_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.s), #-257
** sel z0\.s, p0, \2, \1\.s
+** |
+** mov (z[0-9]+\.s), #-257
+** mov (z[0-9]+)\.b, #0
+** sel z0\.s, p0, \3, \4\.s
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m257_u32_z, svuint32_t,
/*
** dup_m7f01_u32_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.s), #-32513
** sel z0\.s, p0, \2, \1\.s
+** |
+** mov (z[0-9]+\.s), #-32513
+** mov (z[0-9]+)\.b, #0
+** sel z0\.s, p0, \3, \4\.s
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m7f01_u32_z, svuint32_t,
/*
** dup_m7fff_u32_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.s), #-32767
** sel z0\.s, p0, \2, \1\.s
+** |
+** mov (z[0-9]+\.s), #-32767
+** mov (z[0-9]+)\.b, #0
+** sel z0\.s, p0, \3, \4\.s
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m7fff_u32_z, svuint32_t,
/*
** dup_128_u64_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.d), #128
** sel z0\.d, p0, \2, \1\.d
+** |
+** mov (z[0-9]+\.d), #128
+** mov (z[0-9]+)\.b, #0
+** sel z0\.d, p0, \3, \4\.d
+** )
** ret
*/
TEST_UNIFORM_Z (dup_128_u64_z, svuint64_t,
/*
** dup_254_u64_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.d), #254
** sel z0\.d, p0, \2, \1\.d
+** |
+** mov (z[0-9]+\.d), #254
+** mov (z[0-9]+)\.b, #0
+** sel z0\.d, p0, \3, \4\.d
+** )
** ret
*/
TEST_UNIFORM_Z (dup_254_u64_z, svuint64_t,
/*
** dup_255_u64_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.d), #255
** sel z0\.d, p0, \2, \1\.d
+** |
+** mov (z[0-9]+\.d), #255
+** mov (z[0-9]+)\.b, #0
+** sel z0\.d, p0, \3, \4\.d
+** )
** ret
*/
TEST_UNIFORM_Z (dup_255_u64_z, svuint64_t,
/*
** dup_7ffe_u64_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.d), #32766
** sel z0\.d, p0, \2, \1\.d
+** |
+** mov (z[0-9]+\.d), #32766
+** mov (z[0-9]+)\.b, #0
+** sel z0\.d, p0, \3, \4\.d
+** )
** ret
*/
TEST_UNIFORM_Z (dup_7ffe_u64_z, svuint64_t,
/*
** dup_7fff_u64_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.d), #32767
** sel z0\.d, p0, \2, \1\.d
+** |
+** mov (z[0-9]+\.d), #32767
+** mov (z[0-9]+)\.b, #0
+** sel z0\.d, p0, \3, \4\.d
+** )
** ret
*/
TEST_UNIFORM_Z (dup_7fff_u64_z, svuint64_t,
/*
** dup_m129_u64_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.d), #-129
** sel z0\.d, p0, \2, \1\.d
+** |
+** mov (z[0-9]+\.d), #-129
+** mov (z[0-9]+)\.b, #0
+** sel z0\.d, p0, \3, \4\.d
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m129_u64_z, svuint64_t,
/*
** dup_m255_u64_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.d), #-255
** sel z0\.d, p0, \2, \1\.d
+** |
+** mov (z[0-9]+\.d), #-255
+** mov (z[0-9]+)\.b, #0
+** sel z0\.d, p0, \3, \4\.d
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m255_u64_z, svuint64_t,
/*
** dup_m257_u64_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.d), #-257
** sel z0\.d, p0, \2, \1\.d
+** |
+** mov (z[0-9]+\.d), #-257
+** mov (z[0-9]+)\.b, #0
+** sel z0\.d, p0, \3, \4\.d
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m257_u64_z, svuint64_t,
/*
** dup_m7f01_u64_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.d), #-32513
** sel z0\.d, p0, \2, \1\.d
+** |
+** mov (z[0-9]+\.d), #-32513
+** mov (z[0-9]+)\.b, #0
+** sel z0\.d, p0, \3, \4\.d
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m7f01_u64_z, svuint64_t,
/*
** dup_m7fff_u64_z:
+** (
** mov (z[0-9]+)\.b, #0
** mov (z[0-9]+\.d), #-32767
** sel z0\.d, p0, \2, \1\.d
+** |
+** mov (z[0-9]+\.d), #-32767
+** mov (z[0-9]+)\.b, #0
+** sel z0\.d, p0, \3, \4\.d
+** )
** ret
*/
TEST_UNIFORM_Z (dup_m7fff_u64_z, svuint64_t,