Commit ca1e942d authored by Ruhung's avatar Ruhung Committed by GitHub

neon riscv64: Enable RVV segment load/store only when we have `__riscv_zvlsseg` flag. (#1285)

Co-authored-by: default avatarJuhung Li <jhlee755@andestech.com>
Co-authored-by: default avatarMichael R. Crusoe <1330696+mr-c@users.noreply.github.com>
parent cf8e6a73
...@@ -59,7 +59,7 @@ simde_vld2_s8(int8_t const ptr[HEDLEY_ARRAY_PARAM(16)]) { ...@@ -59,7 +59,7 @@ simde_vld2_s8(int8_t const ptr[HEDLEY_ARRAY_PARAM(16)]) {
simde_vget_high_s8(q) simde_vget_high_s8(q)
}; };
return u; return u;
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_int8x8_private a_[2]; simde_int8x8_private a_[2];
vint8m1x2_t dest = __riscv_vlseg2e8_v_i8m1x2(&ptr[0], 8); vint8m1x2_t dest = __riscv_vlseg2e8_v_i8m1x2(&ptr[0], 8);
a_[0].sv64 = __riscv_vget_v_i8m1x2_i8m1(dest, 0); a_[0].sv64 = __riscv_vget_v_i8m1x2_i8m1(dest, 0);
...@@ -102,7 +102,7 @@ simde_int16x4x2_t ...@@ -102,7 +102,7 @@ simde_int16x4x2_t
simde_vld2_s16(int16_t const ptr[HEDLEY_ARRAY_PARAM(8)]) { simde_vld2_s16(int16_t const ptr[HEDLEY_ARRAY_PARAM(8)]) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
return vld2_s16(ptr); return vld2_s16(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_int16x4_private a_[2]; simde_int16x4_private a_[2];
vint16m1x2_t dest = __riscv_vlseg2e16_v_i16m1x2(&ptr[0], 4); vint16m1x2_t dest = __riscv_vlseg2e16_v_i16m1x2(&ptr[0], 4);
a_[0].sv64 = __riscv_vget_v_i16m1x2_i16m1(dest, 0); a_[0].sv64 = __riscv_vget_v_i16m1x2_i16m1(dest, 0);
...@@ -152,7 +152,7 @@ simde_int32x2x2_t ...@@ -152,7 +152,7 @@ simde_int32x2x2_t
simde_vld2_s32(int32_t const ptr[HEDLEY_ARRAY_PARAM(4)]) { simde_vld2_s32(int32_t const ptr[HEDLEY_ARRAY_PARAM(4)]) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
return vld2_s32(ptr); return vld2_s32(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_int32x2_private a_[2]; simde_int32x2_private a_[2];
vint32m1x2_t dest = __riscv_vlseg2e32_v_i32m1x2(&ptr[0], 2); vint32m1x2_t dest = __riscv_vlseg2e32_v_i32m1x2(&ptr[0], 2);
a_[0].sv64 = __riscv_vget_v_i32m1x2_i32m1(dest, 0); a_[0].sv64 = __riscv_vget_v_i32m1x2_i32m1(dest, 0);
...@@ -195,7 +195,7 @@ simde_int64x1x2_t ...@@ -195,7 +195,7 @@ simde_int64x1x2_t
simde_vld2_s64(int64_t const ptr[HEDLEY_ARRAY_PARAM(2)]) { simde_vld2_s64(int64_t const ptr[HEDLEY_ARRAY_PARAM(2)]) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
return vld2_s64(ptr); return vld2_s64(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_int64x1_private a_[2]; simde_int64x1_private a_[2];
vint64m1x2_t dest = __riscv_vlseg2e64_v_i64m1x2(&ptr[0], 1); vint64m1x2_t dest = __riscv_vlseg2e64_v_i64m1x2(&ptr[0], 1);
a_[0].sv64 = __riscv_vget_v_i64m1x2_i64m1(dest, 0); a_[0].sv64 = __riscv_vget_v_i64m1x2_i64m1(dest, 0);
...@@ -249,7 +249,7 @@ simde_vld2_u8(uint8_t const ptr[HEDLEY_ARRAY_PARAM(16)]) { ...@@ -249,7 +249,7 @@ simde_vld2_u8(uint8_t const ptr[HEDLEY_ARRAY_PARAM(16)]) {
simde_vget_high_u8(q) simde_vget_high_u8(q)
}; };
return u; return u;
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_uint8x8_private a_[2]; simde_uint8x8_private a_[2];
vuint8m1x2_t dest = __riscv_vlseg2e8_v_u8m1x2(&ptr[0], 8); vuint8m1x2_t dest = __riscv_vlseg2e8_v_u8m1x2(&ptr[0], 8);
a_[0].sv64 = __riscv_vget_v_u8m1x2_u8m1(dest, 0); a_[0].sv64 = __riscv_vget_v_u8m1x2_u8m1(dest, 0);
...@@ -292,7 +292,7 @@ simde_uint16x4x2_t ...@@ -292,7 +292,7 @@ simde_uint16x4x2_t
simde_vld2_u16(uint16_t const ptr[HEDLEY_ARRAY_PARAM(8)]) { simde_vld2_u16(uint16_t const ptr[HEDLEY_ARRAY_PARAM(8)]) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
return vld2_u16(ptr); return vld2_u16(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_uint16x4_private a_[2]; simde_uint16x4_private a_[2];
vuint16m1x2_t dest = __riscv_vlseg2e16_v_u16m1x2(&ptr[0], 4); vuint16m1x2_t dest = __riscv_vlseg2e16_v_u16m1x2(&ptr[0], 4);
a_[0].sv64 = __riscv_vget_v_u16m1x2_u16m1(dest, 0); a_[0].sv64 = __riscv_vget_v_u16m1x2_u16m1(dest, 0);
...@@ -342,7 +342,7 @@ simde_uint32x2x2_t ...@@ -342,7 +342,7 @@ simde_uint32x2x2_t
simde_vld2_u32(uint32_t const ptr[HEDLEY_ARRAY_PARAM(4)]) { simde_vld2_u32(uint32_t const ptr[HEDLEY_ARRAY_PARAM(4)]) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
return vld2_u32(ptr); return vld2_u32(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_uint32x2_private a_[2]; simde_uint32x2_private a_[2];
vuint32m1x2_t dest = __riscv_vlseg2e32_v_u32m1x2(&ptr[0], 2); vuint32m1x2_t dest = __riscv_vlseg2e32_v_u32m1x2(&ptr[0], 2);
a_[0].sv64 = __riscv_vget_v_u32m1x2_u32m1(dest, 0); a_[0].sv64 = __riscv_vget_v_u32m1x2_u32m1(dest, 0);
...@@ -385,7 +385,7 @@ simde_uint64x1x2_t ...@@ -385,7 +385,7 @@ simde_uint64x1x2_t
simde_vld2_u64(uint64_t const ptr[HEDLEY_ARRAY_PARAM(2)]) { simde_vld2_u64(uint64_t const ptr[HEDLEY_ARRAY_PARAM(2)]) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
return vld2_u64(ptr); return vld2_u64(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_uint64x1_private a_[2]; simde_uint64x1_private a_[2];
vuint64m1x2_t dest = __riscv_vlseg2e64_v_u64m1x2(&ptr[0], 1); vuint64m1x2_t dest = __riscv_vlseg2e64_v_u64m1x2(&ptr[0], 1);
a_[0].sv64 = __riscv_vget_v_u64m1x2_u64m1(dest, 0); a_[0].sv64 = __riscv_vget_v_u64m1x2_u64m1(dest, 0);
...@@ -428,7 +428,8 @@ simde_float16x4x2_t ...@@ -428,7 +428,8 @@ simde_float16x4x2_t
simde_vld2_f16(simde_float16_t const ptr[HEDLEY_ARRAY_PARAM(8)]) { simde_vld2_f16(simde_float16_t const ptr[HEDLEY_ARRAY_PARAM(8)]) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) && defined(SIMDE_ARM_NEON_FP16) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE) && defined(SIMDE_ARM_NEON_FP16)
return vld2_f16(ptr); return vld2_f16(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) && SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG) \
&& SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128)
simde_float16x4_private r_[2]; simde_float16x4_private r_[2];
vfloat16m1x2_t dest = __riscv_vlseg2e16_v_f16m1x2((_Float16 *)&ptr[0], 4); vfloat16m1x2_t dest = __riscv_vlseg2e16_v_f16m1x2((_Float16 *)&ptr[0], 4);
r_[0].sv64 = __riscv_vget_v_f16m1x2_f16m1(dest, 0); r_[0].sv64 = __riscv_vget_v_f16m1x2_f16m1(dest, 0);
...@@ -466,7 +467,7 @@ simde_float32x2x2_t ...@@ -466,7 +467,7 @@ simde_float32x2x2_t
simde_vld2_f32(simde_float32_t const ptr[HEDLEY_ARRAY_PARAM(4)]) { simde_vld2_f32(simde_float32_t const ptr[HEDLEY_ARRAY_PARAM(4)]) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
return vld2_f32(ptr); return vld2_f32(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_float32x2_private r_[2]; simde_float32x2_private r_[2];
vfloat32m1x2_t dest = __riscv_vlseg2e32_v_f32m1x2(&ptr[0], 2); vfloat32m1x2_t dest = __riscv_vlseg2e32_v_f32m1x2(&ptr[0], 2);
r_[0].sv64 = __riscv_vget_v_f32m1x2_f32m1(dest, 0); r_[0].sv64 = __riscv_vget_v_f32m1x2_f32m1(dest, 0);
...@@ -509,7 +510,7 @@ simde_float64x1x2_t ...@@ -509,7 +510,7 @@ simde_float64x1x2_t
simde_vld2_f64(simde_float64_t const ptr[HEDLEY_ARRAY_PARAM(2)]) { simde_vld2_f64(simde_float64_t const ptr[HEDLEY_ARRAY_PARAM(2)]) {
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE) #if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
return vld2_f64(ptr); return vld2_f64(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_float64x1_private r_[2]; simde_float64x1_private r_[2];
vfloat64m1x2_t dest = __riscv_vlseg2e64_v_f64m1x2(&ptr[0], 1); vfloat64m1x2_t dest = __riscv_vlseg2e64_v_f64m1x2(&ptr[0], 1);
r_[0].sv64 = __riscv_vget_v_f64m1x2_f64m1(dest, 0); r_[0].sv64 = __riscv_vget_v_f64m1x2_f64m1(dest, 0);
...@@ -552,7 +553,7 @@ simde_int8x16x2_t ...@@ -552,7 +553,7 @@ simde_int8x16x2_t
simde_vld2q_s8(int8_t const ptr[HEDLEY_ARRAY_PARAM(32)]) { simde_vld2q_s8(int8_t const ptr[HEDLEY_ARRAY_PARAM(32)]) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
return vld2q_s8(ptr); return vld2q_s8(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_int8x16_private a_[2]; simde_int8x16_private a_[2];
vint8m1x2_t dest = __riscv_vlseg2e8_v_i8m1x2(&ptr[0], 16); vint8m1x2_t dest = __riscv_vlseg2e8_v_i8m1x2(&ptr[0], 16);
a_[0].sv128 = __riscv_vget_v_i8m1x2_i8m1(dest, 0); a_[0].sv128 = __riscv_vget_v_i8m1x2_i8m1(dest, 0);
...@@ -602,7 +603,7 @@ simde_int32x4x2_t ...@@ -602,7 +603,7 @@ simde_int32x4x2_t
simde_vld2q_s32(int32_t const ptr[HEDLEY_ARRAY_PARAM(8)]) { simde_vld2q_s32(int32_t const ptr[HEDLEY_ARRAY_PARAM(8)]) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
return vld2q_s32(ptr); return vld2q_s32(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_int32x4_private a_[2]; simde_int32x4_private a_[2];
vint32m1x2_t dest = __riscv_vlseg2e32_v_i32m1x2(&ptr[0], 4); vint32m1x2_t dest = __riscv_vlseg2e32_v_i32m1x2(&ptr[0], 4);
a_[0].sv128 = __riscv_vget_v_i32m1x2_i32m1(dest, 0); a_[0].sv128 = __riscv_vget_v_i32m1x2_i32m1(dest, 0);
...@@ -652,7 +653,7 @@ simde_int16x8x2_t ...@@ -652,7 +653,7 @@ simde_int16x8x2_t
simde_vld2q_s16(int16_t const ptr[HEDLEY_ARRAY_PARAM(16)]) { simde_vld2q_s16(int16_t const ptr[HEDLEY_ARRAY_PARAM(16)]) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
return vld2q_s16(ptr); return vld2q_s16(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_int16x8_private r_[2]; simde_int16x8_private r_[2];
vint16m1x2_t dest = __riscv_vlseg2e16_v_i16m1x2(&ptr[0], 8); vint16m1x2_t dest = __riscv_vlseg2e16_v_i16m1x2(&ptr[0], 8);
r_[0].sv128 = __riscv_vget_v_i16m1x2_i16m1(dest, 0); r_[0].sv128 = __riscv_vget_v_i16m1x2_i16m1(dest, 0);
...@@ -702,7 +703,7 @@ simde_int64x2x2_t ...@@ -702,7 +703,7 @@ simde_int64x2x2_t
simde_vld2q_s64(int64_t const ptr[HEDLEY_ARRAY_PARAM(4)]) { simde_vld2q_s64(int64_t const ptr[HEDLEY_ARRAY_PARAM(4)]) {
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE) #if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
return vld2q_s64(ptr); return vld2q_s64(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_int64x2_private r_[2]; simde_int64x2_private r_[2];
vint64m1x2_t dest = __riscv_vlseg2e64_v_i64m1x2(&ptr[0], 2); vint64m1x2_t dest = __riscv_vlseg2e64_v_i64m1x2(&ptr[0], 2);
r_[0].sv128 = __riscv_vget_v_i64m1x2_i64m1(dest, 0); r_[0].sv128 = __riscv_vget_v_i64m1x2_i64m1(dest, 0);
...@@ -739,7 +740,7 @@ simde_uint8x16x2_t ...@@ -739,7 +740,7 @@ simde_uint8x16x2_t
simde_vld2q_u8(uint8_t const ptr[HEDLEY_ARRAY_PARAM(32)]) { simde_vld2q_u8(uint8_t const ptr[HEDLEY_ARRAY_PARAM(32)]) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
return vld2q_u8(ptr); return vld2q_u8(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_uint8x16_private r_[2]; simde_uint8x16_private r_[2];
vuint8m1x2_t dest = __riscv_vlseg2e8_v_u8m1x2(&ptr[0], 16); vuint8m1x2_t dest = __riscv_vlseg2e8_v_u8m1x2(&ptr[0], 16);
r_[0].sv128 = __riscv_vget_v_u8m1x2_u8m1(dest, 0); r_[0].sv128 = __riscv_vget_v_u8m1x2_u8m1(dest, 0);
...@@ -789,7 +790,7 @@ simde_uint16x8x2_t ...@@ -789,7 +790,7 @@ simde_uint16x8x2_t
simde_vld2q_u16(uint16_t const ptr[HEDLEY_ARRAY_PARAM(16)]) { simde_vld2q_u16(uint16_t const ptr[HEDLEY_ARRAY_PARAM(16)]) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
return vld2q_u16(ptr); return vld2q_u16(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_uint16x8_private r_[2]; simde_uint16x8_private r_[2];
vuint16m1x2_t dest = __riscv_vlseg2e16_v_u16m1x2(&ptr[0], 8); vuint16m1x2_t dest = __riscv_vlseg2e16_v_u16m1x2(&ptr[0], 8);
r_[0].sv128 = __riscv_vget_v_u16m1x2_u16m1(dest, 0); r_[0].sv128 = __riscv_vget_v_u16m1x2_u16m1(dest, 0);
...@@ -839,7 +840,7 @@ simde_uint32x4x2_t ...@@ -839,7 +840,7 @@ simde_uint32x4x2_t
simde_vld2q_u32(uint32_t const ptr[HEDLEY_ARRAY_PARAM(8)]) { simde_vld2q_u32(uint32_t const ptr[HEDLEY_ARRAY_PARAM(8)]) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
return vld2q_u32(ptr); return vld2q_u32(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_uint32x4_private r_[2]; simde_uint32x4_private r_[2];
vuint32m1x2_t dest = __riscv_vlseg2e32_v_u32m1x2(&ptr[0], 4); vuint32m1x2_t dest = __riscv_vlseg2e32_v_u32m1x2(&ptr[0], 4);
r_[0].sv128 = __riscv_vget_v_u32m1x2_u32m1(dest, 0); r_[0].sv128 = __riscv_vget_v_u32m1x2_u32m1(dest, 0);
...@@ -889,7 +890,7 @@ simde_uint64x2x2_t ...@@ -889,7 +890,7 @@ simde_uint64x2x2_t
simde_vld2q_u64(uint64_t const ptr[HEDLEY_ARRAY_PARAM(4)]) { simde_vld2q_u64(uint64_t const ptr[HEDLEY_ARRAY_PARAM(4)]) {
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE) #if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
return vld2q_u64(ptr); return vld2q_u64(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_uint64x2_private r_[2]; simde_uint64x2_private r_[2];
vuint64m1x2_t dest = __riscv_vlseg2e64_v_u64m1x2(&ptr[0], 2); vuint64m1x2_t dest = __riscv_vlseg2e64_v_u64m1x2(&ptr[0], 2);
r_[0].sv128 = __riscv_vget_v_u64m1x2_u64m1(dest, 0); r_[0].sv128 = __riscv_vget_v_u64m1x2_u64m1(dest, 0);
...@@ -926,7 +927,8 @@ simde_float16x8x2_t ...@@ -926,7 +927,8 @@ simde_float16x8x2_t
simde_vld2q_f16(simde_float16_t const ptr[HEDLEY_ARRAY_PARAM(16)]) { simde_vld2q_f16(simde_float16_t const ptr[HEDLEY_ARRAY_PARAM(16)]) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) && defined(SIMDE_ARM_NEON_FP16) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE) && defined(SIMDE_ARM_NEON_FP16)
return vld2q_f16(ptr); return vld2q_f16(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) && SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG) \
&& SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128)
simde_float16x8_private r_[2]; simde_float16x8_private r_[2];
vfloat16m1x2_t dest = __riscv_vlseg2e16_v_f16m1x2((_Float16 *)&ptr[0], 8); vfloat16m1x2_t dest = __riscv_vlseg2e16_v_f16m1x2((_Float16 *)&ptr[0], 8);
r_[0].sv128 = __riscv_vget_v_f16m1x2_f16m1(dest, 0); r_[0].sv128 = __riscv_vget_v_f16m1x2_f16m1(dest, 0);
...@@ -971,7 +973,7 @@ simde_float32x4x2_t ...@@ -971,7 +973,7 @@ simde_float32x4x2_t
simde_vld2q_f32(simde_float32_t const ptr[HEDLEY_ARRAY_PARAM(8)]) { simde_vld2q_f32(simde_float32_t const ptr[HEDLEY_ARRAY_PARAM(8)]) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
return vld2q_f32(ptr); return vld2q_f32(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_float32x4_private r_[2]; simde_float32x4_private r_[2];
vfloat32m1x2_t dest = __riscv_vlseg2e32_v_f32m1x2(&ptr[0], 4); vfloat32m1x2_t dest = __riscv_vlseg2e32_v_f32m1x2(&ptr[0], 4);
r_[0].sv128 = __riscv_vget_v_f32m1x2_f32m1(dest, 0); r_[0].sv128 = __riscv_vget_v_f32m1x2_f32m1(dest, 0);
...@@ -1021,7 +1023,7 @@ simde_float64x2x2_t ...@@ -1021,7 +1023,7 @@ simde_float64x2x2_t
simde_vld2q_f64(simde_float64_t const ptr[HEDLEY_ARRAY_PARAM(4)]) { simde_vld2q_f64(simde_float64_t const ptr[HEDLEY_ARRAY_PARAM(4)]) {
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE) #if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
return vld2q_f64(ptr); return vld2q_f64(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_float64x2_private r_[2]; simde_float64x2_private r_[2];
vfloat64m1x2_t dest = __riscv_vlseg2e64_v_f64m1x2(&ptr[0], 2); vfloat64m1x2_t dest = __riscv_vlseg2e64_v_f64m1x2(&ptr[0], 2);
r_[0].sv128 = __riscv_vget_v_f64m1x2_f64m1(dest, 0); r_[0].sv128 = __riscv_vget_v_f64m1x2_f64m1(dest, 0);
...@@ -1060,7 +1062,7 @@ simde_vld2_p8(simde_poly8_t const ptr[HEDLEY_ARRAY_PARAM(16)]) { ...@@ -1060,7 +1062,7 @@ simde_vld2_p8(simde_poly8_t const ptr[HEDLEY_ARRAY_PARAM(16)]) {
return vld2_p8(ptr); return vld2_p8(ptr);
#else #else
simde_poly8x8_private r_[2]; simde_poly8x8_private r_[2];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint8m1x2_t dest = __riscv_vlseg2e8_v_u8m1x2(&ptr[0], 8); vuint8m1x2_t dest = __riscv_vlseg2e8_v_u8m1x2(&ptr[0], 8);
r_[0].sv64 = __riscv_vget_v_u8m1x2_u8m1(dest, 0); r_[0].sv64 = __riscv_vget_v_u8m1x2_u8m1(dest, 0);
r_[1].sv64 = __riscv_vget_v_u8m1x2_u8m1(dest, 1); r_[1].sv64 = __riscv_vget_v_u8m1x2_u8m1(dest, 1);
...@@ -1095,7 +1097,7 @@ simde_vld2_p16(simde_poly16_t const ptr[HEDLEY_ARRAY_PARAM(8)]) { ...@@ -1095,7 +1097,7 @@ simde_vld2_p16(simde_poly16_t const ptr[HEDLEY_ARRAY_PARAM(8)]) {
SIMDE_DIAGNOSTIC_DISABLE_UNINITIALIZED_ SIMDE_DIAGNOSTIC_DISABLE_UNINITIALIZED_
#endif #endif
simde_poly16x4_private r_[2]; simde_poly16x4_private r_[2];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint16m1x2_t dest = __riscv_vlseg2e16_v_u16m1x2(&ptr[0], 4); vuint16m1x2_t dest = __riscv_vlseg2e16_v_u16m1x2(&ptr[0], 4);
r_[0].sv64 = __riscv_vget_v_u16m1x2_u16m1(dest, 0); r_[0].sv64 = __riscv_vget_v_u16m1x2_u16m1(dest, 0);
r_[1].sv64 = __riscv_vget_v_u16m1x2_u16m1(dest, 1); r_[1].sv64 = __riscv_vget_v_u16m1x2_u16m1(dest, 1);
...@@ -1131,7 +1133,7 @@ simde_vld2_p64(simde_poly64_t const ptr[HEDLEY_ARRAY_PARAM(2)]) { ...@@ -1131,7 +1133,7 @@ simde_vld2_p64(simde_poly64_t const ptr[HEDLEY_ARRAY_PARAM(2)]) {
#else #else
simde_poly64x1_private r_[2]; simde_poly64x1_private r_[2];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint64m1x2_t dest = __riscv_vlseg2e64_v_u64m1x2(&ptr[0], 1); vuint64m1x2_t dest = __riscv_vlseg2e64_v_u64m1x2(&ptr[0], 1);
r_[0].sv64 = __riscv_vget_v_u64m1x2_u64m1(dest, 0); r_[0].sv64 = __riscv_vget_v_u64m1x2_u64m1(dest, 0);
r_[1].sv64 = __riscv_vget_v_u64m1x2_u64m1(dest, 1); r_[1].sv64 = __riscv_vget_v_u64m1x2_u64m1(dest, 1);
...@@ -1168,7 +1170,7 @@ simde_vld2q_p8(simde_poly8_t const ptr[HEDLEY_ARRAY_PARAM(32)]) { ...@@ -1168,7 +1170,7 @@ simde_vld2q_p8(simde_poly8_t const ptr[HEDLEY_ARRAY_PARAM(32)]) {
#endif #endif
simde_poly8x16_private r_[2]; simde_poly8x16_private r_[2];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint8m1x2_t dest = __riscv_vlseg2e8_v_u8m1x2(&ptr[0], 16); vuint8m1x2_t dest = __riscv_vlseg2e8_v_u8m1x2(&ptr[0], 16);
r_[0].sv128 = __riscv_vget_v_u8m1x2_u8m1(dest, 0); r_[0].sv128 = __riscv_vget_v_u8m1x2_u8m1(dest, 0);
r_[1].sv128 = __riscv_vget_v_u8m1x2_u8m1(dest, 1); r_[1].sv128 = __riscv_vget_v_u8m1x2_u8m1(dest, 1);
...@@ -1208,7 +1210,7 @@ simde_vld2q_p16(simde_poly16_t const ptr[HEDLEY_ARRAY_PARAM(16)]) { ...@@ -1208,7 +1210,7 @@ simde_vld2q_p16(simde_poly16_t const ptr[HEDLEY_ARRAY_PARAM(16)]) {
#endif #endif
simde_poly16x8_private r_[2]; simde_poly16x8_private r_[2];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint16m1x2_t dest = __riscv_vlseg2e16_v_u16m1x2(&ptr[0], 8); vuint16m1x2_t dest = __riscv_vlseg2e16_v_u16m1x2(&ptr[0], 8);
r_[0].sv128 = __riscv_vget_v_u16m1x2_u16m1(dest, 0); r_[0].sv128 = __riscv_vget_v_u16m1x2_u16m1(dest, 0);
r_[1].sv128 = __riscv_vget_v_u16m1x2_u16m1(dest, 1); r_[1].sv128 = __riscv_vget_v_u16m1x2_u16m1(dest, 1);
...@@ -1244,7 +1246,7 @@ simde_vld2q_p64(simde_poly64_t const ptr[HEDLEY_ARRAY_PARAM(4)]) { ...@@ -1244,7 +1246,7 @@ simde_vld2q_p64(simde_poly64_t const ptr[HEDLEY_ARRAY_PARAM(4)]) {
#else #else
simde_poly64x2_private r_[2]; simde_poly64x2_private r_[2];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint64m1x2_t dest = __riscv_vlseg2e64_v_u64m1x2(&ptr[0], 2); vuint64m1x2_t dest = __riscv_vlseg2e64_v_u64m1x2(&ptr[0], 2);
r_[0].sv128 = __riscv_vget_v_u64m1x2_u64m1(dest, 0); r_[0].sv128 = __riscv_vget_v_u64m1x2_u64m1(dest, 0);
r_[1].sv128 = __riscv_vget_v_u64m1x2_u64m1(dest, 1); r_[1].sv128 = __riscv_vget_v_u64m1x2_u64m1(dest, 1);
......
...@@ -49,7 +49,8 @@ simde_vld3_f16(simde_float16_t const *ptr) { ...@@ -49,7 +49,8 @@ simde_vld3_f16(simde_float16_t const *ptr) {
return vld3_f16(ptr); return vld3_f16(ptr);
#else #else
simde_float16x4_private r_[3]; simde_float16x4_private r_[3];
#if defined(SIMDE_RISCV_V_NATIVE) && SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG) && \
SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128)
vfloat16m1x3_t dest = __riscv_vlseg3e16_v_f16m1x3((_Float16 *)&ptr[0], 4); vfloat16m1x3_t dest = __riscv_vlseg3e16_v_f16m1x3((_Float16 *)&ptr[0], 4);
r_[0].sv64 = __riscv_vget_v_f16m1x3_f16m1(dest, 0); r_[0].sv64 = __riscv_vget_v_f16m1x3_f16m1(dest, 0);
r_[1].sv64 = __riscv_vget_v_f16m1x3_f16m1(dest, 1); r_[1].sv64 = __riscv_vget_v_f16m1x3_f16m1(dest, 1);
...@@ -83,7 +84,7 @@ simde_vld3_f32(simde_float32 const *ptr) { ...@@ -83,7 +84,7 @@ simde_vld3_f32(simde_float32 const *ptr) {
return vld3_f32(ptr); return vld3_f32(ptr);
#else #else
simde_float32x2_private r_[3]; simde_float32x2_private r_[3];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vfloat32m1x3_t dest = __riscv_vlseg3e32_v_f32m1x3(&ptr[0], 2); vfloat32m1x3_t dest = __riscv_vlseg3e32_v_f32m1x3(&ptr[0], 2);
r_[0].sv64 = __riscv_vget_v_f32m1x3_f32m1(dest, 0); r_[0].sv64 = __riscv_vget_v_f32m1x3_f32m1(dest, 0);
r_[1].sv64 = __riscv_vget_v_f32m1x3_f32m1(dest, 1); r_[1].sv64 = __riscv_vget_v_f32m1x3_f32m1(dest, 1);
...@@ -116,7 +117,7 @@ simde_vld3_f64(simde_float64 const *ptr) { ...@@ -116,7 +117,7 @@ simde_vld3_f64(simde_float64 const *ptr) {
return vld3_f64(ptr); return vld3_f64(ptr);
#else #else
simde_float64x1_private r_[3]; simde_float64x1_private r_[3];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vfloat64m1x3_t dest = __riscv_vlseg3e64_v_f64m1x3(&ptr[0], 1); vfloat64m1x3_t dest = __riscv_vlseg3e64_v_f64m1x3(&ptr[0], 1);
r_[0].sv64 = __riscv_vget_v_f64m1x3_f64m1(dest, 0); r_[0].sv64 = __riscv_vget_v_f64m1x3_f64m1(dest, 0);
r_[1].sv64 = __riscv_vget_v_f64m1x3_f64m1(dest, 1); r_[1].sv64 = __riscv_vget_v_f64m1x3_f64m1(dest, 1);
...@@ -149,7 +150,7 @@ simde_vld3_s8(int8_t const *ptr) { ...@@ -149,7 +150,7 @@ simde_vld3_s8(int8_t const *ptr) {
return vld3_s8(ptr); return vld3_s8(ptr);
#else #else
simde_int8x8_private r_[3]; simde_int8x8_private r_[3];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint8m1x3_t dest = __riscv_vlseg3e8_v_i8m1x3(&ptr[0], 8); vint8m1x3_t dest = __riscv_vlseg3e8_v_i8m1x3(&ptr[0], 8);
r_[0].sv64 = __riscv_vget_v_i8m1x3_i8m1(dest, 0); r_[0].sv64 = __riscv_vget_v_i8m1x3_i8m1(dest, 0);
r_[1].sv64 = __riscv_vget_v_i8m1x3_i8m1(dest, 1); r_[1].sv64 = __riscv_vget_v_i8m1x3_i8m1(dest, 1);
...@@ -182,7 +183,7 @@ simde_vld3_s16(int16_t const *ptr) { ...@@ -182,7 +183,7 @@ simde_vld3_s16(int16_t const *ptr) {
return vld3_s16(ptr); return vld3_s16(ptr);
#else #else
simde_int16x4_private r_[3]; simde_int16x4_private r_[3];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint16m1x3_t dest = __riscv_vlseg3e16_v_i16m1x3(&ptr[0], 4); vint16m1x3_t dest = __riscv_vlseg3e16_v_i16m1x3(&ptr[0], 4);
r_[0].sv64 = __riscv_vget_v_i16m1x3_i16m1(dest, 0); r_[0].sv64 = __riscv_vget_v_i16m1x3_i16m1(dest, 0);
r_[1].sv64 = __riscv_vget_v_i16m1x3_i16m1(dest, 1); r_[1].sv64 = __riscv_vget_v_i16m1x3_i16m1(dest, 1);
...@@ -215,7 +216,7 @@ simde_vld3_s32(int32_t const *ptr) { ...@@ -215,7 +216,7 @@ simde_vld3_s32(int32_t const *ptr) {
return vld3_s32(ptr); return vld3_s32(ptr);
#else #else
simde_int32x2_private r_[3]; simde_int32x2_private r_[3];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint32m1x3_t dest = __riscv_vlseg3e32_v_i32m1x3(&ptr[0], 2); vint32m1x3_t dest = __riscv_vlseg3e32_v_i32m1x3(&ptr[0], 2);
r_[0].sv64 = __riscv_vget_v_i32m1x3_i32m1(dest, 0); r_[0].sv64 = __riscv_vget_v_i32m1x3_i32m1(dest, 0);
r_[1].sv64 = __riscv_vget_v_i32m1x3_i32m1(dest, 1); r_[1].sv64 = __riscv_vget_v_i32m1x3_i32m1(dest, 1);
...@@ -248,7 +249,7 @@ simde_vld3_s64(int64_t const *ptr) { ...@@ -248,7 +249,7 @@ simde_vld3_s64(int64_t const *ptr) {
return vld3_s64(ptr); return vld3_s64(ptr);
#else #else
simde_int64x1_private r_[3]; simde_int64x1_private r_[3];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint64m1x3_t dest = __riscv_vlseg3e64_v_i64m1x3(&ptr[0], 1); vint64m1x3_t dest = __riscv_vlseg3e64_v_i64m1x3(&ptr[0], 1);
r_[0].sv64 = __riscv_vget_v_i64m1x3_i64m1(dest, 0); r_[0].sv64 = __riscv_vget_v_i64m1x3_i64m1(dest, 0);
r_[1].sv64 = __riscv_vget_v_i64m1x3_i64m1(dest, 1); r_[1].sv64 = __riscv_vget_v_i64m1x3_i64m1(dest, 1);
...@@ -281,7 +282,7 @@ simde_vld3_u8(uint8_t const *ptr) { ...@@ -281,7 +282,7 @@ simde_vld3_u8(uint8_t const *ptr) {
return vld3_u8(ptr); return vld3_u8(ptr);
#else #else
simde_uint8x8_private r_[3]; simde_uint8x8_private r_[3];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint8m1x3_t dest = __riscv_vlseg3e8_v_u8m1x3(&ptr[0], 8); vuint8m1x3_t dest = __riscv_vlseg3e8_v_u8m1x3(&ptr[0], 8);
r_[0].sv64 = __riscv_vget_v_u8m1x3_u8m1(dest, 0); r_[0].sv64 = __riscv_vget_v_u8m1x3_u8m1(dest, 0);
r_[1].sv64 = __riscv_vget_v_u8m1x3_u8m1(dest, 1); r_[1].sv64 = __riscv_vget_v_u8m1x3_u8m1(dest, 1);
...@@ -314,7 +315,7 @@ simde_vld3_u16(uint16_t const *ptr) { ...@@ -314,7 +315,7 @@ simde_vld3_u16(uint16_t const *ptr) {
return vld3_u16(ptr); return vld3_u16(ptr);
#else #else
simde_uint16x4_private r_[3]; simde_uint16x4_private r_[3];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint16m1x3_t dest = __riscv_vlseg3e16_v_u16m1x3(&ptr[0], 4); vuint16m1x3_t dest = __riscv_vlseg3e16_v_u16m1x3(&ptr[0], 4);
r_[0].sv64 = __riscv_vget_v_u16m1x3_u16m1(dest, 0); r_[0].sv64 = __riscv_vget_v_u16m1x3_u16m1(dest, 0);
r_[1].sv64 = __riscv_vget_v_u16m1x3_u16m1(dest, 1); r_[1].sv64 = __riscv_vget_v_u16m1x3_u16m1(dest, 1);
...@@ -347,7 +348,7 @@ simde_vld3_u32(uint32_t const *ptr) { ...@@ -347,7 +348,7 @@ simde_vld3_u32(uint32_t const *ptr) {
return vld3_u32(ptr); return vld3_u32(ptr);
#else #else
simde_uint32x2_private r_[3]; simde_uint32x2_private r_[3];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint32m1x3_t dest = __riscv_vlseg3e32_v_u32m1x3(&ptr[0], 2); vuint32m1x3_t dest = __riscv_vlseg3e32_v_u32m1x3(&ptr[0], 2);
r_[0].sv64 = __riscv_vget_v_u32m1x3_u32m1(dest, 0); r_[0].sv64 = __riscv_vget_v_u32m1x3_u32m1(dest, 0);
r_[1].sv64 = __riscv_vget_v_u32m1x3_u32m1(dest, 1); r_[1].sv64 = __riscv_vget_v_u32m1x3_u32m1(dest, 1);
...@@ -380,7 +381,7 @@ simde_vld3_u64(uint64_t const *ptr) { ...@@ -380,7 +381,7 @@ simde_vld3_u64(uint64_t const *ptr) {
return vld3_u64(ptr); return vld3_u64(ptr);
#else #else
simde_uint64x1_private r_[3]; simde_uint64x1_private r_[3];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint64m1x3_t dest = __riscv_vlseg3e64_v_u64m1x3(&ptr[0], 1); vuint64m1x3_t dest = __riscv_vlseg3e64_v_u64m1x3(&ptr[0], 1);
r_[0].sv64 = __riscv_vget_v_u64m1x3_u64m1(dest, 0); r_[0].sv64 = __riscv_vget_v_u64m1x3_u64m1(dest, 0);
r_[1].sv64 = __riscv_vget_v_u64m1x3_u64m1(dest, 1); r_[1].sv64 = __riscv_vget_v_u64m1x3_u64m1(dest, 1);
...@@ -413,7 +414,8 @@ simde_vld3q_f16(simde_float16_t const *ptr) { ...@@ -413,7 +414,8 @@ simde_vld3q_f16(simde_float16_t const *ptr) {
return vld3q_f16(ptr); return vld3q_f16(ptr);
#else #else
simde_float16x8_private r_[3]; simde_float16x8_private r_[3];
#if defined(SIMDE_RISCV_V_NATIVE) && SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG) \
&& SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128)
vfloat16m1x3_t dest = __riscv_vlseg3e16_v_f16m1x3((_Float16 *)&ptr[0], 8); vfloat16m1x3_t dest = __riscv_vlseg3e16_v_f16m1x3((_Float16 *)&ptr[0], 8);
r_[0].sv128 = __riscv_vget_v_f16m1x3_f16m1(dest, 0); r_[0].sv128 = __riscv_vget_v_f16m1x3_f16m1(dest, 0);
r_[1].sv128 = __riscv_vget_v_f16m1x3_f16m1(dest, 1); r_[1].sv128 = __riscv_vget_v_f16m1x3_f16m1(dest, 1);
...@@ -445,7 +447,7 @@ simde_float32x4x3_t ...@@ -445,7 +447,7 @@ simde_float32x4x3_t
simde_vld3q_f32(simde_float32 const *ptr) { simde_vld3q_f32(simde_float32 const *ptr) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
return vld3q_f32(ptr); return vld3q_f32(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_float32x4_private r_[3]; simde_float32x4_private r_[3];
vfloat32m1x3_t dest = __riscv_vlseg3e32_v_f32m1x3(&ptr[0], 4); vfloat32m1x3_t dest = __riscv_vlseg3e32_v_f32m1x3(&ptr[0], 4);
r_[0].sv128 = __riscv_vget_v_f32m1x3_f32m1(dest, 0); r_[0].sv128 = __riscv_vget_v_f32m1x3_f32m1(dest, 0);
...@@ -485,7 +487,7 @@ simde_float64x2x3_t ...@@ -485,7 +487,7 @@ simde_float64x2x3_t
simde_vld3q_f64(simde_float64 const *ptr) { simde_vld3q_f64(simde_float64 const *ptr) {
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE) #if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
return vld3q_f64(ptr); return vld3q_f64(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_float64x2_private r_[3]; simde_float64x2_private r_[3];
vfloat64m1x3_t dest = __riscv_vlseg3e64_v_f64m1x3(&ptr[0], 2); vfloat64m1x3_t dest = __riscv_vlseg3e64_v_f64m1x3(&ptr[0], 2);
r_[0].sv128 = __riscv_vget_v_f64m1x3_f64m1(dest, 0); r_[0].sv128 = __riscv_vget_v_f64m1x3_f64m1(dest, 0);
...@@ -525,7 +527,7 @@ simde_int8x16x3_t ...@@ -525,7 +527,7 @@ simde_int8x16x3_t
simde_vld3q_s8(int8_t const *ptr) { simde_vld3q_s8(int8_t const *ptr) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
return vld3q_s8(ptr); return vld3q_s8(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_int8x16_private r_[3]; simde_int8x16_private r_[3];
vint8m1x3_t dest = __riscv_vlseg3e8_v_i8m1x3(&ptr[0], 16); vint8m1x3_t dest = __riscv_vlseg3e8_v_i8m1x3(&ptr[0], 16);
r_[0].sv128 = __riscv_vget_v_i8m1x3_i8m1(dest, 0); r_[0].sv128 = __riscv_vget_v_i8m1x3_i8m1(dest, 0);
...@@ -565,7 +567,7 @@ simde_int16x8x3_t ...@@ -565,7 +567,7 @@ simde_int16x8x3_t
simde_vld3q_s16(int16_t const *ptr) { simde_vld3q_s16(int16_t const *ptr) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
return vld3q_s16(ptr); return vld3q_s16(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_int16x8_private r_[3]; simde_int16x8_private r_[3];
vint16m1x3_t dest = __riscv_vlseg3e16_v_i16m1x3(&ptr[0], 8); vint16m1x3_t dest = __riscv_vlseg3e16_v_i16m1x3(&ptr[0], 8);
r_[0].sv128 = __riscv_vget_v_i16m1x3_i16m1(dest, 0); r_[0].sv128 = __riscv_vget_v_i16m1x3_i16m1(dest, 0);
...@@ -605,7 +607,7 @@ simde_int32x4x3_t ...@@ -605,7 +607,7 @@ simde_int32x4x3_t
simde_vld3q_s32(int32_t const *ptr) { simde_vld3q_s32(int32_t const *ptr) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
return vld3q_s32(ptr); return vld3q_s32(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_int32x4_private r_[3]; simde_int32x4_private r_[3];
vint32m1x3_t dest = __riscv_vlseg3e32_v_i32m1x3(&ptr[0], 4); vint32m1x3_t dest = __riscv_vlseg3e32_v_i32m1x3(&ptr[0], 4);
r_[0].sv128 = __riscv_vget_v_i32m1x3_i32m1(dest, 0); r_[0].sv128 = __riscv_vget_v_i32m1x3_i32m1(dest, 0);
...@@ -645,7 +647,7 @@ simde_int64x2x3_t ...@@ -645,7 +647,7 @@ simde_int64x2x3_t
simde_vld3q_s64(int64_t const *ptr) { simde_vld3q_s64(int64_t const *ptr) {
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE) #if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
return vld3q_s64(ptr); return vld3q_s64(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_int64x2_private r_[3]; simde_int64x2_private r_[3];
vint64m1x3_t dest = __riscv_vlseg3e64_v_i64m1x3(&ptr[0], 2); vint64m1x3_t dest = __riscv_vlseg3e64_v_i64m1x3(&ptr[0], 2);
r_[0].sv128 = __riscv_vget_v_i64m1x3_i64m1(dest, 0); r_[0].sv128 = __riscv_vget_v_i64m1x3_i64m1(dest, 0);
...@@ -686,7 +688,7 @@ simde_uint8x16x3_t ...@@ -686,7 +688,7 @@ simde_uint8x16x3_t
simde_vld3q_u8(uint8_t const *ptr) { simde_vld3q_u8(uint8_t const *ptr) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
return vld3q_u8(ptr); return vld3q_u8(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_uint8x16_private r_[3]; simde_uint8x16_private r_[3];
vuint8m1x3_t dest = __riscv_vlseg3e8_v_u8m1x3(&ptr[0], 16); vuint8m1x3_t dest = __riscv_vlseg3e8_v_u8m1x3(&ptr[0], 16);
r_[0].sv128 = __riscv_vget_v_u8m1x3_u8m1(dest, 0); r_[0].sv128 = __riscv_vget_v_u8m1x3_u8m1(dest, 0);
...@@ -726,7 +728,7 @@ simde_uint16x8x3_t ...@@ -726,7 +728,7 @@ simde_uint16x8x3_t
simde_vld3q_u16(uint16_t const *ptr) { simde_vld3q_u16(uint16_t const *ptr) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
return vld3q_u16(ptr); return vld3q_u16(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_uint16x8_private r_[3]; simde_uint16x8_private r_[3];
vuint16m1x3_t dest = __riscv_vlseg3e16_v_u16m1x3(&ptr[0], 8); vuint16m1x3_t dest = __riscv_vlseg3e16_v_u16m1x3(&ptr[0], 8);
r_[0].sv128 = __riscv_vget_v_u16m1x3_u16m1(dest, 0); r_[0].sv128 = __riscv_vget_v_u16m1x3_u16m1(dest, 0);
...@@ -766,7 +768,7 @@ simde_uint32x4x3_t ...@@ -766,7 +768,7 @@ simde_uint32x4x3_t
simde_vld3q_u32(uint32_t const *ptr) { simde_vld3q_u32(uint32_t const *ptr) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
return vld3q_u32(ptr); return vld3q_u32(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_uint32x4_private r_[3]; simde_uint32x4_private r_[3];
vuint32m1x3_t dest = __riscv_vlseg3e32_v_u32m1x3(&ptr[0], 4); vuint32m1x3_t dest = __riscv_vlseg3e32_v_u32m1x3(&ptr[0], 4);
r_[0].sv128 = __riscv_vget_v_u32m1x3_u32m1(dest, 0); r_[0].sv128 = __riscv_vget_v_u32m1x3_u32m1(dest, 0);
...@@ -806,7 +808,7 @@ simde_uint64x2x3_t ...@@ -806,7 +808,7 @@ simde_uint64x2x3_t
simde_vld3q_u64(uint64_t const *ptr) { simde_vld3q_u64(uint64_t const *ptr) {
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE) #if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
return vld3q_u64(ptr); return vld3q_u64(ptr);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_uint64x2_private r_[3]; simde_uint64x2_private r_[3];
vuint64m1x3_t dest = __riscv_vlseg3e64_v_u64m1x3(&ptr[0], 2); vuint64m1x3_t dest = __riscv_vlseg3e64_v_u64m1x3(&ptr[0], 2);
r_[0].sv128 = __riscv_vget_v_u64m1x3_u64m1(dest, 0); r_[0].sv128 = __riscv_vget_v_u64m1x3_u64m1(dest, 0);
...@@ -849,7 +851,7 @@ simde_vld3_p8(simde_poly8_t const *ptr) { ...@@ -849,7 +851,7 @@ simde_vld3_p8(simde_poly8_t const *ptr) {
#else #else
simde_poly8x8_private r_[3]; simde_poly8x8_private r_[3];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint8m1x3_t dest = __riscv_vlseg3e8_v_u8m1x3(&ptr[0], 8); vuint8m1x3_t dest = __riscv_vlseg3e8_v_u8m1x3(&ptr[0], 8);
r_[0].sv64 = __riscv_vget_v_u8m1x3_u8m1(dest, 0); r_[0].sv64 = __riscv_vget_v_u8m1x3_u8m1(dest, 0);
r_[1].sv64 = __riscv_vget_v_u8m1x3_u8m1(dest, 1); r_[1].sv64 = __riscv_vget_v_u8m1x3_u8m1(dest, 1);
...@@ -884,7 +886,7 @@ simde_vld3_p16(simde_poly16_t const *ptr) { ...@@ -884,7 +886,7 @@ simde_vld3_p16(simde_poly16_t const *ptr) {
#else #else
simde_poly16x4_private r_[3]; simde_poly16x4_private r_[3];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint16m1x3_t dest = __riscv_vlseg3e16_v_u16m1x3(&ptr[0], 4); vuint16m1x3_t dest = __riscv_vlseg3e16_v_u16m1x3(&ptr[0], 4);
r_[0].sv64 = __riscv_vget_v_u16m1x3_u16m1(dest, 0); r_[0].sv64 = __riscv_vget_v_u16m1x3_u16m1(dest, 0);
r_[1].sv64 = __riscv_vget_v_u16m1x3_u16m1(dest, 1); r_[1].sv64 = __riscv_vget_v_u16m1x3_u16m1(dest, 1);
...@@ -919,7 +921,7 @@ simde_vld3_p64(simde_poly64_t const *ptr) { ...@@ -919,7 +921,7 @@ simde_vld3_p64(simde_poly64_t const *ptr) {
#else #else
simde_poly64x1_private r_[3]; simde_poly64x1_private r_[3];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint64m1x3_t dest = __riscv_vlseg3e64_v_u64m1x3(&ptr[0], 1); vuint64m1x3_t dest = __riscv_vlseg3e64_v_u64m1x3(&ptr[0], 1);
r_[0].sv64 = __riscv_vget_v_u64m1x3_u64m1(dest, 0); r_[0].sv64 = __riscv_vget_v_u64m1x3_u64m1(dest, 0);
r_[1].sv64 = __riscv_vget_v_u64m1x3_u64m1(dest, 1); r_[1].sv64 = __riscv_vget_v_u64m1x3_u64m1(dest, 1);
...@@ -954,7 +956,7 @@ simde_vld3q_p8(simde_poly8_t const *ptr) { ...@@ -954,7 +956,7 @@ simde_vld3q_p8(simde_poly8_t const *ptr) {
#else #else
simde_poly8x16_private r_[3]; simde_poly8x16_private r_[3];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint8m1x3_t dest = __riscv_vlseg3e8_v_u8m1x3(&ptr[0], 16); vuint8m1x3_t dest = __riscv_vlseg3e8_v_u8m1x3(&ptr[0], 16);
r_[0].sv128 = __riscv_vget_v_u8m1x3_u8m1(dest, 0); r_[0].sv128 = __riscv_vget_v_u8m1x3_u8m1(dest, 0);
r_[1].sv128 = __riscv_vget_v_u8m1x3_u8m1(dest, 1); r_[1].sv128 = __riscv_vget_v_u8m1x3_u8m1(dest, 1);
...@@ -989,7 +991,7 @@ simde_vld3q_p16(simde_poly16_t const *ptr) { ...@@ -989,7 +991,7 @@ simde_vld3q_p16(simde_poly16_t const *ptr) {
#else #else
simde_poly16x8_private r_[3]; simde_poly16x8_private r_[3];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint16m1x3_t dest = __riscv_vlseg3e16_v_u16m1x3(&ptr[0], 8); vuint16m1x3_t dest = __riscv_vlseg3e16_v_u16m1x3(&ptr[0], 8);
r_[0].sv128 = __riscv_vget_v_u16m1x3_u16m1(dest, 0); r_[0].sv128 = __riscv_vget_v_u16m1x3_u16m1(dest, 0);
r_[1].sv128 = __riscv_vget_v_u16m1x3_u16m1(dest, 1); r_[1].sv128 = __riscv_vget_v_u16m1x3_u16m1(dest, 1);
...@@ -1024,7 +1026,7 @@ simde_vld3q_p64(simde_poly64_t const *ptr) { ...@@ -1024,7 +1026,7 @@ simde_vld3q_p64(simde_poly64_t const *ptr) {
#else #else
simde_poly64x2_private r_[3]; simde_poly64x2_private r_[3];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint64m1x3_t dest = __riscv_vlseg3e64_v_u64m1x3(&ptr[0], 2); vuint64m1x3_t dest = __riscv_vlseg3e64_v_u64m1x3(&ptr[0], 2);
r_[0].sv128 = __riscv_vget_v_u64m1x3_u64m1(dest, 0); r_[0].sv128 = __riscv_vget_v_u64m1x3_u64m1(dest, 0);
r_[1].sv128 = __riscv_vget_v_u64m1x3_u64m1(dest, 1); r_[1].sv128 = __riscv_vget_v_u64m1x3_u64m1(dest, 1);
......
...@@ -48,7 +48,8 @@ simde_vld4_f16(simde_float16_t const ptr[HEDLEY_ARRAY_PARAM(16)]) { ...@@ -48,7 +48,8 @@ simde_vld4_f16(simde_float16_t const ptr[HEDLEY_ARRAY_PARAM(16)]) {
return vld4_f16(ptr); return vld4_f16(ptr);
#else #else
simde_float16x4_private a_[4]; simde_float16x4_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) && SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG) \
&& SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128)
vfloat16m1x4_t dest = __riscv_vlseg4e16_v_f16m1x4((_Float16 *)&ptr[0], 4); vfloat16m1x4_t dest = __riscv_vlseg4e16_v_f16m1x4((_Float16 *)&ptr[0], 4);
a_[0].sv64 = __riscv_vget_v_f16m1x4_f16m1(dest, 0); a_[0].sv64 = __riscv_vget_v_f16m1x4_f16m1(dest, 0);
a_[1].sv64 = __riscv_vget_v_f16m1x4_f16m1(dest, 1); a_[1].sv64 = __riscv_vget_v_f16m1x4_f16m1(dest, 1);
...@@ -77,7 +78,7 @@ simde_vld4_f32(simde_float32 const ptr[HEDLEY_ARRAY_PARAM(8)]) { ...@@ -77,7 +78,7 @@ simde_vld4_f32(simde_float32 const ptr[HEDLEY_ARRAY_PARAM(8)]) {
return vld4_f32(ptr); return vld4_f32(ptr);
#else #else
simde_float32x2_private a_[4]; simde_float32x2_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vfloat32m1x4_t dest = __riscv_vlseg4e32_v_f32m1x4(&ptr[0], 2); vfloat32m1x4_t dest = __riscv_vlseg4e32_v_f32m1x4(&ptr[0], 2);
a_[0].sv64 = __riscv_vget_v_f32m1x4_f32m1(dest, 0); a_[0].sv64 = __riscv_vget_v_f32m1x4_f32m1(dest, 0);
a_[1].sv64 = __riscv_vget_v_f32m1x4_f32m1(dest, 1); a_[1].sv64 = __riscv_vget_v_f32m1x4_f32m1(dest, 1);
...@@ -105,7 +106,7 @@ simde_vld4_f64(simde_float64 const ptr[HEDLEY_ARRAY_PARAM(4)]) { ...@@ -105,7 +106,7 @@ simde_vld4_f64(simde_float64 const ptr[HEDLEY_ARRAY_PARAM(4)]) {
return vld4_f64(ptr); return vld4_f64(ptr);
#else #else
simde_float64x1_private a_[4]; simde_float64x1_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vfloat64m1x4_t dest = __riscv_vlseg4e64_v_f64m1x4(&ptr[0], 1); vfloat64m1x4_t dest = __riscv_vlseg4e64_v_f64m1x4(&ptr[0], 1);
a_[0].sv64 = __riscv_vget_v_f64m1x4_f64m1(dest, 0); a_[0].sv64 = __riscv_vget_v_f64m1x4_f64m1(dest, 0);
a_[1].sv64 = __riscv_vget_v_f64m1x4_f64m1(dest, 1); a_[1].sv64 = __riscv_vget_v_f64m1x4_f64m1(dest, 1);
...@@ -133,7 +134,7 @@ simde_vld4_s8(int8_t const ptr[HEDLEY_ARRAY_PARAM(32)]) { ...@@ -133,7 +134,7 @@ simde_vld4_s8(int8_t const ptr[HEDLEY_ARRAY_PARAM(32)]) {
return vld4_s8(ptr); return vld4_s8(ptr);
#else #else
simde_int8x8_private a_[4]; simde_int8x8_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint8m1x4_t dest = __riscv_vlseg4e8_v_i8m1x4(&ptr[0], 8); vint8m1x4_t dest = __riscv_vlseg4e8_v_i8m1x4(&ptr[0], 8);
a_[0].sv64 = __riscv_vget_v_i8m1x4_i8m1(dest, 0); a_[0].sv64 = __riscv_vget_v_i8m1x4_i8m1(dest, 0);
a_[1].sv64 = __riscv_vget_v_i8m1x4_i8m1(dest, 1); a_[1].sv64 = __riscv_vget_v_i8m1x4_i8m1(dest, 1);
...@@ -161,7 +162,7 @@ simde_vld4_s16(int16_t const ptr[HEDLEY_ARRAY_PARAM(16)]) { ...@@ -161,7 +162,7 @@ simde_vld4_s16(int16_t const ptr[HEDLEY_ARRAY_PARAM(16)]) {
return vld4_s16(ptr); return vld4_s16(ptr);
#else #else
simde_int16x4_private a_[4]; simde_int16x4_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint16m1x4_t dest = __riscv_vlseg4e16_v_i16m1x4(&ptr[0], 4); vint16m1x4_t dest = __riscv_vlseg4e16_v_i16m1x4(&ptr[0], 4);
a_[0].sv64 = __riscv_vget_v_i16m1x4_i16m1(dest, 0); a_[0].sv64 = __riscv_vget_v_i16m1x4_i16m1(dest, 0);
a_[1].sv64 = __riscv_vget_v_i16m1x4_i16m1(dest, 1); a_[1].sv64 = __riscv_vget_v_i16m1x4_i16m1(dest, 1);
...@@ -189,7 +190,7 @@ simde_vld4_s32(int32_t const ptr[HEDLEY_ARRAY_PARAM(8)]) { ...@@ -189,7 +190,7 @@ simde_vld4_s32(int32_t const ptr[HEDLEY_ARRAY_PARAM(8)]) {
return vld4_s32(ptr); return vld4_s32(ptr);
#else #else
simde_int32x2_private a_[4]; simde_int32x2_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint32m1x4_t dest = __riscv_vlseg4e32_v_i32m1x4(&ptr[0], 2); vint32m1x4_t dest = __riscv_vlseg4e32_v_i32m1x4(&ptr[0], 2);
a_[0].sv64 = __riscv_vget_v_i32m1x4_i32m1(dest, 0); a_[0].sv64 = __riscv_vget_v_i32m1x4_i32m1(dest, 0);
a_[1].sv64 = __riscv_vget_v_i32m1x4_i32m1(dest, 1); a_[1].sv64 = __riscv_vget_v_i32m1x4_i32m1(dest, 1);
...@@ -217,7 +218,7 @@ simde_vld4_s64(int64_t const ptr[HEDLEY_ARRAY_PARAM(4)]) { ...@@ -217,7 +218,7 @@ simde_vld4_s64(int64_t const ptr[HEDLEY_ARRAY_PARAM(4)]) {
return vld4_s64(ptr); return vld4_s64(ptr);
#else #else
simde_int64x1_private a_[4]; simde_int64x1_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint64m1x4_t dest = __riscv_vlseg4e64_v_i64m1x4(&ptr[0], 1); vint64m1x4_t dest = __riscv_vlseg4e64_v_i64m1x4(&ptr[0], 1);
a_[0].sv64 = __riscv_vget_v_i64m1x4_i64m1(dest, 0); a_[0].sv64 = __riscv_vget_v_i64m1x4_i64m1(dest, 0);
a_[1].sv64 = __riscv_vget_v_i64m1x4_i64m1(dest, 1); a_[1].sv64 = __riscv_vget_v_i64m1x4_i64m1(dest, 1);
...@@ -245,7 +246,7 @@ simde_vld4_u8(uint8_t const ptr[HEDLEY_ARRAY_PARAM(32)]) { ...@@ -245,7 +246,7 @@ simde_vld4_u8(uint8_t const ptr[HEDLEY_ARRAY_PARAM(32)]) {
return vld4_u8(ptr); return vld4_u8(ptr);
#else #else
simde_uint8x8_private a_[4]; simde_uint8x8_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint8m1x4_t dest = __riscv_vlseg4e8_v_u8m1x4(&ptr[0], 8); vuint8m1x4_t dest = __riscv_vlseg4e8_v_u8m1x4(&ptr[0], 8);
a_[0].sv64 = __riscv_vget_v_u8m1x4_u8m1(dest, 0); a_[0].sv64 = __riscv_vget_v_u8m1x4_u8m1(dest, 0);
a_[1].sv64 = __riscv_vget_v_u8m1x4_u8m1(dest, 1); a_[1].sv64 = __riscv_vget_v_u8m1x4_u8m1(dest, 1);
...@@ -273,7 +274,7 @@ simde_vld4_u16(uint16_t const ptr[HEDLEY_ARRAY_PARAM(16)]) { ...@@ -273,7 +274,7 @@ simde_vld4_u16(uint16_t const ptr[HEDLEY_ARRAY_PARAM(16)]) {
return vld4_u16(ptr); return vld4_u16(ptr);
#else #else
simde_uint16x4_private a_[4]; simde_uint16x4_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint16m1x4_t dest = __riscv_vlseg4e16_v_u16m1x4(&ptr[0], 4); vuint16m1x4_t dest = __riscv_vlseg4e16_v_u16m1x4(&ptr[0], 4);
a_[0].sv64 = __riscv_vget_v_u16m1x4_u16m1(dest, 0); a_[0].sv64 = __riscv_vget_v_u16m1x4_u16m1(dest, 0);
a_[1].sv64 = __riscv_vget_v_u16m1x4_u16m1(dest, 1); a_[1].sv64 = __riscv_vget_v_u16m1x4_u16m1(dest, 1);
...@@ -301,7 +302,7 @@ simde_vld4_u32(uint32_t const ptr[HEDLEY_ARRAY_PARAM(8)]) { ...@@ -301,7 +302,7 @@ simde_vld4_u32(uint32_t const ptr[HEDLEY_ARRAY_PARAM(8)]) {
return vld4_u32(ptr); return vld4_u32(ptr);
#else #else
simde_uint32x2_private a_[4]; simde_uint32x2_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint32m1x4_t dest = __riscv_vlseg4e32_v_u32m1x4(&ptr[0], 2); vuint32m1x4_t dest = __riscv_vlseg4e32_v_u32m1x4(&ptr[0], 2);
a_[0].sv64 = __riscv_vget_v_u32m1x4_u32m1(dest, 0); a_[0].sv64 = __riscv_vget_v_u32m1x4_u32m1(dest, 0);
a_[1].sv64 = __riscv_vget_v_u32m1x4_u32m1(dest, 1); a_[1].sv64 = __riscv_vget_v_u32m1x4_u32m1(dest, 1);
...@@ -329,7 +330,7 @@ simde_vld4_u64(uint64_t const ptr[HEDLEY_ARRAY_PARAM(4)]) { ...@@ -329,7 +330,7 @@ simde_vld4_u64(uint64_t const ptr[HEDLEY_ARRAY_PARAM(4)]) {
return vld4_u64(ptr); return vld4_u64(ptr);
#else #else
simde_uint64x1_private a_[4]; simde_uint64x1_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint64m1x4_t dest = __riscv_vlseg4e64_v_u64m1x4(&ptr[0], 1); vuint64m1x4_t dest = __riscv_vlseg4e64_v_u64m1x4(&ptr[0], 1);
a_[0].sv64 = __riscv_vget_v_u64m1x4_u64m1(dest, 0); a_[0].sv64 = __riscv_vget_v_u64m1x4_u64m1(dest, 0);
a_[1].sv64 = __riscv_vget_v_u64m1x4_u64m1(dest, 1); a_[1].sv64 = __riscv_vget_v_u64m1x4_u64m1(dest, 1);
...@@ -357,7 +358,8 @@ simde_vld4q_f16(simde_float16_t const ptr[HEDLEY_ARRAY_PARAM(32)]) { ...@@ -357,7 +358,8 @@ simde_vld4q_f16(simde_float16_t const ptr[HEDLEY_ARRAY_PARAM(32)]) {
return vld4q_f16(ptr); return vld4q_f16(ptr);
#else #else
simde_float16x8_private a_[4]; simde_float16x8_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) && SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG) \
&& SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128)
vfloat16m1x4_t dest = __riscv_vlseg4e16_v_f16m1x4((_Float16 *)&ptr[0], 8); vfloat16m1x4_t dest = __riscv_vlseg4e16_v_f16m1x4((_Float16 *)&ptr[0], 8);
a_[0].sv128 = __riscv_vget_v_f16m1x4_f16m1(dest, 0); a_[0].sv128 = __riscv_vget_v_f16m1x4_f16m1(dest, 0);
a_[1].sv128 = __riscv_vget_v_f16m1x4_f16m1(dest, 1); a_[1].sv128 = __riscv_vget_v_f16m1x4_f16m1(dest, 1);
...@@ -386,7 +388,7 @@ simde_vld4q_f32(simde_float32 const ptr[HEDLEY_ARRAY_PARAM(16)]) { ...@@ -386,7 +388,7 @@ simde_vld4q_f32(simde_float32 const ptr[HEDLEY_ARRAY_PARAM(16)]) {
return vld4q_f32(ptr); return vld4q_f32(ptr);
#else #else
simde_float32x4_private a_[4]; simde_float32x4_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vfloat32m1x4_t dest = __riscv_vlseg4e32_v_f32m1x4(&ptr[0], 4); vfloat32m1x4_t dest = __riscv_vlseg4e32_v_f32m1x4(&ptr[0], 4);
a_[0].sv128 = __riscv_vget_v_f32m1x4_f32m1(dest, 0); a_[0].sv128 = __riscv_vget_v_f32m1x4_f32m1(dest, 0);
a_[1].sv128 = __riscv_vget_v_f32m1x4_f32m1(dest, 1); a_[1].sv128 = __riscv_vget_v_f32m1x4_f32m1(dest, 1);
...@@ -414,7 +416,7 @@ simde_vld4q_f64(simde_float64 const ptr[HEDLEY_ARRAY_PARAM(8)]) { ...@@ -414,7 +416,7 @@ simde_vld4q_f64(simde_float64 const ptr[HEDLEY_ARRAY_PARAM(8)]) {
return vld4q_f64(ptr); return vld4q_f64(ptr);
#else #else
simde_float64x2_private a_[4]; simde_float64x2_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vfloat64m1x4_t dest = __riscv_vlseg4e64_v_f64m1x4(&ptr[0], 2); vfloat64m1x4_t dest = __riscv_vlseg4e64_v_f64m1x4(&ptr[0], 2);
a_[0].sv128 = __riscv_vget_v_f64m1x4_f64m1(dest, 0); a_[0].sv128 = __riscv_vget_v_f64m1x4_f64m1(dest, 0);
a_[1].sv128 = __riscv_vget_v_f64m1x4_f64m1(dest, 1); a_[1].sv128 = __riscv_vget_v_f64m1x4_f64m1(dest, 1);
...@@ -442,7 +444,7 @@ simde_vld4q_s8(int8_t const ptr[HEDLEY_ARRAY_PARAM(64)]) { ...@@ -442,7 +444,7 @@ simde_vld4q_s8(int8_t const ptr[HEDLEY_ARRAY_PARAM(64)]) {
return vld4q_s8(ptr); return vld4q_s8(ptr);
#else #else
simde_int8x16_private a_[4]; simde_int8x16_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint8m1x4_t dest = __riscv_vlseg4e8_v_i8m1x4(&ptr[0], 16); vint8m1x4_t dest = __riscv_vlseg4e8_v_i8m1x4(&ptr[0], 16);
a_[0].sv128 = __riscv_vget_v_i8m1x4_i8m1(dest, 0); a_[0].sv128 = __riscv_vget_v_i8m1x4_i8m1(dest, 0);
a_[1].sv128 = __riscv_vget_v_i8m1x4_i8m1(dest, 1); a_[1].sv128 = __riscv_vget_v_i8m1x4_i8m1(dest, 1);
...@@ -470,7 +472,7 @@ simde_vld4q_s16(int16_t const ptr[HEDLEY_ARRAY_PARAM(32)]) { ...@@ -470,7 +472,7 @@ simde_vld4q_s16(int16_t const ptr[HEDLEY_ARRAY_PARAM(32)]) {
return vld4q_s16(ptr); return vld4q_s16(ptr);
#else #else
simde_int16x8_private a_[4]; simde_int16x8_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint16m1x4_t dest = __riscv_vlseg4e16_v_i16m1x4(&ptr[0], 8); vint16m1x4_t dest = __riscv_vlseg4e16_v_i16m1x4(&ptr[0], 8);
a_[0].sv128 = __riscv_vget_v_i16m1x4_i16m1(dest, 0); a_[0].sv128 = __riscv_vget_v_i16m1x4_i16m1(dest, 0);
a_[1].sv128 = __riscv_vget_v_i16m1x4_i16m1(dest, 1); a_[1].sv128 = __riscv_vget_v_i16m1x4_i16m1(dest, 1);
...@@ -498,7 +500,7 @@ simde_vld4q_s32(int32_t const ptr[HEDLEY_ARRAY_PARAM(16)]) { ...@@ -498,7 +500,7 @@ simde_vld4q_s32(int32_t const ptr[HEDLEY_ARRAY_PARAM(16)]) {
return vld4q_s32(ptr); return vld4q_s32(ptr);
#else #else
simde_int32x4_private a_[4]; simde_int32x4_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint32m1x4_t dest = __riscv_vlseg4e32_v_i32m1x4(&ptr[0], 4); vint32m1x4_t dest = __riscv_vlseg4e32_v_i32m1x4(&ptr[0], 4);
a_[0].sv128 = __riscv_vget_v_i32m1x4_i32m1(dest, 0); a_[0].sv128 = __riscv_vget_v_i32m1x4_i32m1(dest, 0);
a_[1].sv128 = __riscv_vget_v_i32m1x4_i32m1(dest, 1); a_[1].sv128 = __riscv_vget_v_i32m1x4_i32m1(dest, 1);
...@@ -526,7 +528,7 @@ simde_vld4q_s64(int64_t const ptr[HEDLEY_ARRAY_PARAM(8)]) { ...@@ -526,7 +528,7 @@ simde_vld4q_s64(int64_t const ptr[HEDLEY_ARRAY_PARAM(8)]) {
return vld4q_s64(ptr); return vld4q_s64(ptr);
#else #else
simde_int64x2_private a_[4]; simde_int64x2_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint64m1x4_t dest = __riscv_vlseg4e64_v_i64m1x4(&ptr[0], 2); vint64m1x4_t dest = __riscv_vlseg4e64_v_i64m1x4(&ptr[0], 2);
a_[0].sv128 = __riscv_vget_v_i64m1x4_i64m1(dest, 0); a_[0].sv128 = __riscv_vget_v_i64m1x4_i64m1(dest, 0);
a_[1].sv128 = __riscv_vget_v_i64m1x4_i64m1(dest, 1); a_[1].sv128 = __riscv_vget_v_i64m1x4_i64m1(dest, 1);
...@@ -590,7 +592,7 @@ simde_vld4q_u8(uint8_t const ptr[HEDLEY_ARRAY_PARAM(64)]) { ...@@ -590,7 +592,7 @@ simde_vld4q_u8(uint8_t const ptr[HEDLEY_ARRAY_PARAM(64)]) {
simde_uint8x16_from_private(r_[2]), simde_uint8x16_from_private(r_[2]),
simde_uint8x16_from_private(r_[3])}}; simde_uint8x16_from_private(r_[3])}};
return s_; return s_;
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_uint8x16_private r_[4]; simde_uint8x16_private r_[4];
vuint8m1x4_t dest = __riscv_vlseg4e8_v_u8m1x4(&ptr[0], 16); vuint8m1x4_t dest = __riscv_vlseg4e8_v_u8m1x4(&ptr[0], 16);
r_[0].sv128 = __riscv_vget_v_u8m1x4_u8m1(dest, 0); r_[0].sv128 = __riscv_vget_v_u8m1x4_u8m1(dest, 0);
...@@ -626,7 +628,7 @@ simde_vld4q_u16(uint16_t const ptr[HEDLEY_ARRAY_PARAM(32)]) { ...@@ -626,7 +628,7 @@ simde_vld4q_u16(uint16_t const ptr[HEDLEY_ARRAY_PARAM(32)]) {
return vld4q_u16(ptr); return vld4q_u16(ptr);
#else #else
simde_uint16x8_private a_[4]; simde_uint16x8_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint16m1x4_t dest = __riscv_vlseg4e16_v_u16m1x4(&ptr[0], 8); vuint16m1x4_t dest = __riscv_vlseg4e16_v_u16m1x4(&ptr[0], 8);
a_[0].sv128 = __riscv_vget_v_u16m1x4_u16m1(dest, 0); a_[0].sv128 = __riscv_vget_v_u16m1x4_u16m1(dest, 0);
a_[1].sv128 = __riscv_vget_v_u16m1x4_u16m1(dest, 1); a_[1].sv128 = __riscv_vget_v_u16m1x4_u16m1(dest, 1);
...@@ -654,7 +656,7 @@ simde_vld4q_u32(uint32_t const ptr[HEDLEY_ARRAY_PARAM(16)]) { ...@@ -654,7 +656,7 @@ simde_vld4q_u32(uint32_t const ptr[HEDLEY_ARRAY_PARAM(16)]) {
return vld4q_u32(ptr); return vld4q_u32(ptr);
#else #else
simde_uint32x4_private a_[4]; simde_uint32x4_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint32m1x4_t dest = __riscv_vlseg4e32_v_u32m1x4(&ptr[0], 4); vuint32m1x4_t dest = __riscv_vlseg4e32_v_u32m1x4(&ptr[0], 4);
a_[0].sv128 = __riscv_vget_v_u32m1x4_u32m1(dest, 0); a_[0].sv128 = __riscv_vget_v_u32m1x4_u32m1(dest, 0);
a_[1].sv128 = __riscv_vget_v_u32m1x4_u32m1(dest, 1); a_[1].sv128 = __riscv_vget_v_u32m1x4_u32m1(dest, 1);
...@@ -682,7 +684,7 @@ simde_vld4q_u64(uint64_t const ptr[HEDLEY_ARRAY_PARAM(8)]) { ...@@ -682,7 +684,7 @@ simde_vld4q_u64(uint64_t const ptr[HEDLEY_ARRAY_PARAM(8)]) {
return vld4q_u64(ptr); return vld4q_u64(ptr);
#else #else
simde_uint64x2_private a_[4]; simde_uint64x2_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint64m1x4_t dest = __riscv_vlseg4e64_v_u64m1x4(&ptr[0], 2); vuint64m1x4_t dest = __riscv_vlseg4e64_v_u64m1x4(&ptr[0], 2);
a_[0].sv128 = __riscv_vget_v_u64m1x4_u64m1(dest, 0); a_[0].sv128 = __riscv_vget_v_u64m1x4_u64m1(dest, 0);
a_[1].sv128 = __riscv_vget_v_u64m1x4_u64m1(dest, 1); a_[1].sv128 = __riscv_vget_v_u64m1x4_u64m1(dest, 1);
...@@ -710,7 +712,7 @@ simde_vld4_p8(simde_poly8_t const ptr[HEDLEY_ARRAY_PARAM(32)]) { ...@@ -710,7 +712,7 @@ simde_vld4_p8(simde_poly8_t const ptr[HEDLEY_ARRAY_PARAM(32)]) {
return vld4_p8(ptr); return vld4_p8(ptr);
#else #else
simde_poly8x8_private a_[4]; simde_poly8x8_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint8m1x4_t dest = __riscv_vlseg4e8_v_u8m1x4(&ptr[0], 8); vuint8m1x4_t dest = __riscv_vlseg4e8_v_u8m1x4(&ptr[0], 8);
a_[0].sv64 = __riscv_vget_v_u8m1x4_u8m1(dest, 0); a_[0].sv64 = __riscv_vget_v_u8m1x4_u8m1(dest, 0);
a_[1].sv64 = __riscv_vget_v_u8m1x4_u8m1(dest, 1); a_[1].sv64 = __riscv_vget_v_u8m1x4_u8m1(dest, 1);
...@@ -738,7 +740,7 @@ simde_vld4_p16(simde_poly16_t const ptr[HEDLEY_ARRAY_PARAM(16)]) { ...@@ -738,7 +740,7 @@ simde_vld4_p16(simde_poly16_t const ptr[HEDLEY_ARRAY_PARAM(16)]) {
return vld4_p16(ptr); return vld4_p16(ptr);
#else #else
simde_poly16x4_private a_[4]; simde_poly16x4_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint16m1x4_t dest = __riscv_vlseg4e16_v_u16m1x4(&ptr[0], 4); vuint16m1x4_t dest = __riscv_vlseg4e16_v_u16m1x4(&ptr[0], 4);
a_[0].sv64 = __riscv_vget_v_u16m1x4_u16m1(dest, 0); a_[0].sv64 = __riscv_vget_v_u16m1x4_u16m1(dest, 0);
a_[1].sv64 = __riscv_vget_v_u16m1x4_u16m1(dest, 1); a_[1].sv64 = __riscv_vget_v_u16m1x4_u16m1(dest, 1);
...@@ -766,7 +768,7 @@ simde_vld4_p64(simde_poly64_t const ptr[HEDLEY_ARRAY_PARAM(4)]) { ...@@ -766,7 +768,7 @@ simde_vld4_p64(simde_poly64_t const ptr[HEDLEY_ARRAY_PARAM(4)]) {
return vld4_p64(ptr); return vld4_p64(ptr);
#else #else
simde_poly64x1_private a_[4]; simde_poly64x1_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint64m1x4_t dest = __riscv_vlseg4e64_v_u64m1x4(&ptr[0], 1); vuint64m1x4_t dest = __riscv_vlseg4e64_v_u64m1x4(&ptr[0], 1);
a_[0].sv64 = __riscv_vget_v_u64m1x4_u64m1(dest, 0); a_[0].sv64 = __riscv_vget_v_u64m1x4_u64m1(dest, 0);
a_[1].sv64 = __riscv_vget_v_u64m1x4_u64m1(dest, 1); a_[1].sv64 = __riscv_vget_v_u64m1x4_u64m1(dest, 1);
...@@ -794,7 +796,7 @@ simde_vld4q_p8(simde_poly8_t const ptr[HEDLEY_ARRAY_PARAM(64)]) { ...@@ -794,7 +796,7 @@ simde_vld4q_p8(simde_poly8_t const ptr[HEDLEY_ARRAY_PARAM(64)]) {
return vld4q_p8(ptr); return vld4q_p8(ptr);
#else #else
simde_poly8x16_private a_[4]; simde_poly8x16_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint8m1x4_t dest = __riscv_vlseg4e8_v_u8m1x4(&ptr[0], 16); vuint8m1x4_t dest = __riscv_vlseg4e8_v_u8m1x4(&ptr[0], 16);
a_[0].sv128 = __riscv_vget_v_u8m1x4_u8m1(dest, 0); a_[0].sv128 = __riscv_vget_v_u8m1x4_u8m1(dest, 0);
a_[1].sv128 = __riscv_vget_v_u8m1x4_u8m1(dest, 1); a_[1].sv128 = __riscv_vget_v_u8m1x4_u8m1(dest, 1);
...@@ -822,7 +824,7 @@ simde_vld4q_p16(simde_poly16_t const ptr[HEDLEY_ARRAY_PARAM(32)]) { ...@@ -822,7 +824,7 @@ simde_vld4q_p16(simde_poly16_t const ptr[HEDLEY_ARRAY_PARAM(32)]) {
return vld4q_p16(ptr); return vld4q_p16(ptr);
#else #else
simde_poly16x8_private a_[4]; simde_poly16x8_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint16m1x4_t dest = __riscv_vlseg4e16_v_u16m1x4(&ptr[0], 8); vuint16m1x4_t dest = __riscv_vlseg4e16_v_u16m1x4(&ptr[0], 8);
a_[0].sv128 = __riscv_vget_v_u16m1x4_u16m1(dest, 0); a_[0].sv128 = __riscv_vget_v_u16m1x4_u16m1(dest, 0);
a_[1].sv128 = __riscv_vget_v_u16m1x4_u16m1(dest, 1); a_[1].sv128 = __riscv_vget_v_u16m1x4_u16m1(dest, 1);
...@@ -850,7 +852,7 @@ simde_vld4q_p64(simde_poly64_t const ptr[HEDLEY_ARRAY_PARAM(8)]) { ...@@ -850,7 +852,7 @@ simde_vld4q_p64(simde_poly64_t const ptr[HEDLEY_ARRAY_PARAM(8)]) {
return vld4q_p64(ptr); return vld4q_p64(ptr);
#else #else
simde_poly64x2_private a_[4]; simde_poly64x2_private a_[4];
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint64m1x4_t dest = __riscv_vlseg4e64_v_u64m1x4(&ptr[0], 2); vuint64m1x4_t dest = __riscv_vlseg4e64_v_u64m1x4(&ptr[0], 2);
a_[0].sv128 = __riscv_vget_v_u64m1x4_u64m1(dest, 0); a_[0].sv128 = __riscv_vget_v_u64m1x4_u64m1(dest, 0);
a_[1].sv128 = __riscv_vget_v_u64m1x4_u64m1(dest, 1); a_[1].sv128 = __riscv_vget_v_u64m1x4_u64m1(dest, 1);
......
...@@ -48,7 +48,8 @@ simde_vst2_f16(simde_float16_t *ptr, simde_float16x4x2_t val) { ...@@ -48,7 +48,8 @@ simde_vst2_f16(simde_float16_t *ptr, simde_float16x4x2_t val) {
#else #else
simde_float16x4_private a_[2] = {simde_float16x4_to_private(val.val[0]), simde_float16x4_private a_[2] = {simde_float16x4_to_private(val.val[0]),
simde_float16x4_to_private(val.val[1])}; simde_float16x4_to_private(val.val[1])};
#if defined(SIMDE_RISCV_V_NATIVE) && SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG) \
&& SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128)
vfloat16m1x2_t dest = __riscv_vlseg2e16_v_f16m1x2((_Float16 *)ptr, 4); vfloat16m1x2_t dest = __riscv_vlseg2e16_v_f16m1x2((_Float16 *)ptr, 4);
dest = __riscv_vset_v_f16m1_f16m1x2 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_f16m1_f16m1x2 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_f16m1_f16m1x2 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_f16m1_f16m1x2 (dest, 1, a_[1].sv64);
...@@ -76,7 +77,7 @@ simde_vst2_f32(simde_float32_t *ptr, simde_float32x2x2_t val) { ...@@ -76,7 +77,7 @@ simde_vst2_f32(simde_float32_t *ptr, simde_float32x2x2_t val) {
#else #else
simde_float32x2_private a_[2] = {simde_float32x2_to_private(val.val[0]), simde_float32x2_private a_[2] = {simde_float32x2_to_private(val.val[0]),
simde_float32x2_to_private(val.val[1])}; simde_float32x2_to_private(val.val[1])};
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vfloat32m1x2_t dest = __riscv_vlseg2e32_v_f32m1x2(ptr, 2); vfloat32m1x2_t dest = __riscv_vlseg2e32_v_f32m1x2(ptr, 2);
dest = __riscv_vset_v_f32m1_f32m1x2 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_f32m1_f32m1x2 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_f32m1_f32m1x2 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_f32m1_f32m1x2 (dest, 1, a_[1].sv64);
...@@ -103,7 +104,7 @@ simde_vst2_f64(simde_float64_t *ptr, simde_float64x1x2_t val) { ...@@ -103,7 +104,7 @@ simde_vst2_f64(simde_float64_t *ptr, simde_float64x1x2_t val) {
#else #else
simde_float64x1_private a_[2] = {simde_float64x1_to_private(val.val[0]), simde_float64x1_private a_[2] = {simde_float64x1_to_private(val.val[0]),
simde_float64x1_to_private(val.val[1])}; simde_float64x1_to_private(val.val[1])};
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vfloat64m1x2_t dest = __riscv_vlseg2e64_v_f64m1x2(ptr, 1); vfloat64m1x2_t dest = __riscv_vlseg2e64_v_f64m1x2(ptr, 1);
dest = __riscv_vset_v_f64m1_f64m1x2 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_f64m1_f64m1x2 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_f64m1_f64m1x2 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_f64m1_f64m1x2 (dest, 1, a_[1].sv64);
...@@ -130,7 +131,7 @@ simde_vst2_s8(int8_t *ptr, simde_int8x8x2_t val) { ...@@ -130,7 +131,7 @@ simde_vst2_s8(int8_t *ptr, simde_int8x8x2_t val) {
#else #else
simde_int8x8_private a_[2] = {simde_int8x8_to_private(val.val[0]), simde_int8x8_private a_[2] = {simde_int8x8_to_private(val.val[0]),
simde_int8x8_to_private(val.val[1])}; simde_int8x8_to_private(val.val[1])};
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint8m1x2_t dest = __riscv_vlseg2e8_v_i8m1x2(ptr, 8); vint8m1x2_t dest = __riscv_vlseg2e8_v_i8m1x2(ptr, 8);
dest = __riscv_vset_v_i8m1_i8m1x2 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_i8m1_i8m1x2 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_i8m1_i8m1x2 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_i8m1_i8m1x2 (dest, 1, a_[1].sv64);
...@@ -157,7 +158,7 @@ simde_vst2_s16(int16_t *ptr, simde_int16x4x2_t val) { ...@@ -157,7 +158,7 @@ simde_vst2_s16(int16_t *ptr, simde_int16x4x2_t val) {
#else #else
simde_int16x4_private a_[2] = {simde_int16x4_to_private(val.val[0]), simde_int16x4_private a_[2] = {simde_int16x4_to_private(val.val[0]),
simde_int16x4_to_private(val.val[1])}; simde_int16x4_to_private(val.val[1])};
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint16m1x2_t dest = __riscv_vlseg2e16_v_i16m1x2(ptr, 4); vint16m1x2_t dest = __riscv_vlseg2e16_v_i16m1x2(ptr, 4);
dest = __riscv_vset_v_i16m1_i16m1x2 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_i16m1_i16m1x2 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_i16m1_i16m1x2 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_i16m1_i16m1x2 (dest, 1, a_[1].sv64);
...@@ -184,7 +185,7 @@ simde_vst2_s32(int32_t *ptr, simde_int32x2x2_t val) { ...@@ -184,7 +185,7 @@ simde_vst2_s32(int32_t *ptr, simde_int32x2x2_t val) {
#else #else
simde_int32x2_private a_[2] = {simde_int32x2_to_private(val.val[0]), simde_int32x2_private a_[2] = {simde_int32x2_to_private(val.val[0]),
simde_int32x2_to_private(val.val[1])}; simde_int32x2_to_private(val.val[1])};
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint32m1x2_t dest = __riscv_vlseg2e32_v_i32m1x2(ptr, 2); vint32m1x2_t dest = __riscv_vlseg2e32_v_i32m1x2(ptr, 2);
dest = __riscv_vset_v_i32m1_i32m1x2 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_i32m1_i32m1x2 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_i32m1_i32m1x2 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_i32m1_i32m1x2 (dest, 1, a_[1].sv64);
...@@ -211,7 +212,7 @@ simde_vst2_s64(int64_t *ptr, simde_int64x1x2_t val) { ...@@ -211,7 +212,7 @@ simde_vst2_s64(int64_t *ptr, simde_int64x1x2_t val) {
#else #else
simde_int64x1_private a_[2] = {simde_int64x1_to_private(val.val[0]), simde_int64x1_private a_[2] = {simde_int64x1_to_private(val.val[0]),
simde_int64x1_to_private(val.val[1])}; simde_int64x1_to_private(val.val[1])};
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint64m1x2_t dest = __riscv_vlseg2e64_v_i64m1x2(ptr, 1); vint64m1x2_t dest = __riscv_vlseg2e64_v_i64m1x2(ptr, 1);
dest = __riscv_vset_v_i64m1_i64m1x2 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_i64m1_i64m1x2 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_i64m1_i64m1x2 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_i64m1_i64m1x2 (dest, 1, a_[1].sv64);
...@@ -254,7 +255,7 @@ simde_vst2_u8(uint8_t *ptr, simde_uint8x8x2_t val) { ...@@ -254,7 +255,7 @@ simde_vst2_u8(uint8_t *ptr, simde_uint8x8x2_t val) {
#else #else
simde_uint8x8_private a_[2] = {simde_uint8x8_to_private(val.val[0]), simde_uint8x8_private a_[2] = {simde_uint8x8_to_private(val.val[0]),
simde_uint8x8_to_private(val.val[1])}; simde_uint8x8_to_private(val.val[1])};
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint8m1x2_t dest = __riscv_vlseg2e8_v_u8m1x2(ptr, 8); vuint8m1x2_t dest = __riscv_vlseg2e8_v_u8m1x2(ptr, 8);
dest = __riscv_vset_v_u8m1_u8m1x2 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_u8m1_u8m1x2 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_u8m1_u8m1x2 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_u8m1_u8m1x2 (dest, 1, a_[1].sv64);
...@@ -281,7 +282,7 @@ simde_vst2_u16(uint16_t *ptr, simde_uint16x4x2_t val) { ...@@ -281,7 +282,7 @@ simde_vst2_u16(uint16_t *ptr, simde_uint16x4x2_t val) {
#else #else
simde_uint16x4_private a_[2] = {simde_uint16x4_to_private(val.val[0]), simde_uint16x4_private a_[2] = {simde_uint16x4_to_private(val.val[0]),
simde_uint16x4_to_private(val.val[1])}; simde_uint16x4_to_private(val.val[1])};
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint16m1x2_t dest = __riscv_vlseg2e16_v_u16m1x2(ptr, 4); vuint16m1x2_t dest = __riscv_vlseg2e16_v_u16m1x2(ptr, 4);
dest = __riscv_vset_v_u16m1_u16m1x2 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_u16m1_u16m1x2 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_u16m1_u16m1x2 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_u16m1_u16m1x2 (dest, 1, a_[1].sv64);
...@@ -308,7 +309,7 @@ simde_vst2_u32(uint32_t *ptr, simde_uint32x2x2_t val) { ...@@ -308,7 +309,7 @@ simde_vst2_u32(uint32_t *ptr, simde_uint32x2x2_t val) {
#else #else
simde_uint32x2_private a_[2] = {simde_uint32x2_to_private(val.val[0]), simde_uint32x2_private a_[2] = {simde_uint32x2_to_private(val.val[0]),
simde_uint32x2_to_private(val.val[1])}; simde_uint32x2_to_private(val.val[1])};
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint32m1x2_t dest = __riscv_vlseg2e32_v_u32m1x2(ptr, 2); vuint32m1x2_t dest = __riscv_vlseg2e32_v_u32m1x2(ptr, 2);
dest = __riscv_vset_v_u32m1_u32m1x2 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_u32m1_u32m1x2 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_u32m1_u32m1x2 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_u32m1_u32m1x2 (dest, 1, a_[1].sv64);
...@@ -335,7 +336,7 @@ simde_vst2_u64(uint64_t *ptr, simde_uint64x1x2_t val) { ...@@ -335,7 +336,7 @@ simde_vst2_u64(uint64_t *ptr, simde_uint64x1x2_t val) {
#else #else
simde_uint64x1_private a_[2] = {simde_uint64x1_to_private(val.val[0]), simde_uint64x1_private a_[2] = {simde_uint64x1_to_private(val.val[0]),
simde_uint64x1_to_private(val.val[1])}; simde_uint64x1_to_private(val.val[1])};
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint64m1x2_t dest = __riscv_vlseg2e64_v_u64m1x2(ptr, 1); vuint64m1x2_t dest = __riscv_vlseg2e64_v_u64m1x2(ptr, 1);
dest = __riscv_vset_v_u64m1_u64m1x2 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_u64m1_u64m1x2 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_u64m1_u64m1x2 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_u64m1_u64m1x2 (dest, 1, a_[1].sv64);
...@@ -359,7 +360,8 @@ void ...@@ -359,7 +360,8 @@ void
simde_vst2q_f16(simde_float16_t *ptr, simde_float16x8x2_t val) { simde_vst2q_f16(simde_float16_t *ptr, simde_float16x8x2_t val) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) && defined(SIMDE_ARM_NEON_FP16) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE) && defined(SIMDE_ARM_NEON_FP16)
vst2q_f16(ptr, val); vst2q_f16(ptr, val);
#elif defined(SIMDE_RISCV_V_NATIVE) && SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG) \
&& SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128)
simde_float16x8_private a_[2] = {simde_float16x8_to_private(val.val[0]), simde_float16x8_private a_[2] = {simde_float16x8_to_private(val.val[0]),
simde_float16x8_to_private(val.val[1])}; simde_float16x8_to_private(val.val[1])};
vfloat16m1x2_t dest = __riscv_vlseg2e16_v_f16m1x2((_Float16 *)ptr, 8); vfloat16m1x2_t dest = __riscv_vlseg2e16_v_f16m1x2((_Float16 *)ptr, 8);
...@@ -383,7 +385,7 @@ void ...@@ -383,7 +385,7 @@ void
simde_vst2q_f32(simde_float32_t *ptr, simde_float32x4x2_t val) { simde_vst2q_f32(simde_float32_t *ptr, simde_float32x4x2_t val) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
vst2q_f32(ptr, val); vst2q_f32(ptr, val);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_float32x4_private a_[2] = {simde_float32x4_to_private(val.val[0]), simde_float32x4_private a_[2] = {simde_float32x4_to_private(val.val[0]),
simde_float32x4_to_private(val.val[1])}; simde_float32x4_to_private(val.val[1])};
vfloat32m1x2_t dest = __riscv_vlseg2e32_v_f32m1x2(ptr, 4); vfloat32m1x2_t dest = __riscv_vlseg2e32_v_f32m1x2(ptr, 4);
...@@ -409,7 +411,7 @@ simde_vst2q_f64(simde_float64_t *ptr, simde_float64x2x2_t val) { ...@@ -409,7 +411,7 @@ simde_vst2q_f64(simde_float64_t *ptr, simde_float64x2x2_t val) {
#else #else
simde_float64x2_private a_[2] = {simde_float64x2_to_private(val.val[0]), simde_float64x2_private a_[2] = {simde_float64x2_to_private(val.val[0]),
simde_float64x2_to_private(val.val[1])}; simde_float64x2_to_private(val.val[1])};
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vfloat64m1x2_t dest = __riscv_vlseg2e64_v_f64m1x2(ptr, 2); vfloat64m1x2_t dest = __riscv_vlseg2e64_v_f64m1x2(ptr, 2);
dest = __riscv_vset_v_f64m1_f64m1x2 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_f64m1_f64m1x2 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_f64m1_f64m1x2 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_f64m1_f64m1x2 (dest, 1, a_[1].sv128);
...@@ -433,7 +435,7 @@ void ...@@ -433,7 +435,7 @@ void
simde_vst2q_s8(int8_t *ptr, simde_int8x16x2_t val) { simde_vst2q_s8(int8_t *ptr, simde_int8x16x2_t val) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
vst2q_s8(ptr, val); vst2q_s8(ptr, val);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_int8x16_private a_[2] = {simde_int8x16_to_private(val.val[0]), simde_int8x16_private a_[2] = {simde_int8x16_to_private(val.val[0]),
simde_int8x16_to_private(val.val[1])}; simde_int8x16_to_private(val.val[1])};
vint8m1x2_t dest = __riscv_vlseg2e8_v_i8m1x2(ptr, 16); vint8m1x2_t dest = __riscv_vlseg2e8_v_i8m1x2(ptr, 16);
...@@ -456,7 +458,7 @@ void ...@@ -456,7 +458,7 @@ void
simde_vst2q_s16(int16_t *ptr, simde_int16x8x2_t val) { simde_vst2q_s16(int16_t *ptr, simde_int16x8x2_t val) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
vst2q_s16(ptr, val); vst2q_s16(ptr, val);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_int16x8_private a_[2] = {simde_int16x8_to_private(val.val[0]), simde_int16x8_private a_[2] = {simde_int16x8_to_private(val.val[0]),
simde_int16x8_to_private(val.val[1])}; simde_int16x8_to_private(val.val[1])};
vint16m1x2_t dest = __riscv_vlseg2e16_v_i16m1x2(ptr, 8); vint16m1x2_t dest = __riscv_vlseg2e16_v_i16m1x2(ptr, 8);
...@@ -479,7 +481,7 @@ void ...@@ -479,7 +481,7 @@ void
simde_vst2q_s32(int32_t *ptr, simde_int32x4x2_t val) { simde_vst2q_s32(int32_t *ptr, simde_int32x4x2_t val) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
vst2q_s32(ptr, val); vst2q_s32(ptr, val);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_int32x4_private a_[2] = {simde_int32x4_to_private(val.val[0]), simde_int32x4_private a_[2] = {simde_int32x4_to_private(val.val[0]),
simde_int32x4_to_private(val.val[1])}; simde_int32x4_to_private(val.val[1])};
vint32m1x2_t dest = __riscv_vlseg2e32_v_i32m1x2(ptr, 4); vint32m1x2_t dest = __riscv_vlseg2e32_v_i32m1x2(ptr, 4);
...@@ -502,7 +504,7 @@ void ...@@ -502,7 +504,7 @@ void
simde_vst2q_s64(int64_t *ptr, simde_int64x2x2_t val) { simde_vst2q_s64(int64_t *ptr, simde_int64x2x2_t val) {
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE) #if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
vst2q_s64(ptr, val); vst2q_s64(ptr, val);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_int64x2_private a_[2] = {simde_int64x2_to_private(val.val[0]), simde_int64x2_private a_[2] = {simde_int64x2_to_private(val.val[0]),
simde_int64x2_to_private(val.val[1])}; simde_int64x2_to_private(val.val[1])};
vint64m1x2_t dest = __riscv_vlseg2e64_v_i64m1x2(ptr, 2); vint64m1x2_t dest = __riscv_vlseg2e64_v_i64m1x2(ptr, 2);
...@@ -529,7 +531,7 @@ void ...@@ -529,7 +531,7 @@ void
simde_vst2q_u8(uint8_t *ptr, simde_uint8x16x2_t val) { simde_vst2q_u8(uint8_t *ptr, simde_uint8x16x2_t val) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
vst2q_u8(ptr, val); vst2q_u8(ptr, val);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_uint8x16_private a_[2] = {simde_uint8x16_to_private(val.val[0]), simde_uint8x16_private a_[2] = {simde_uint8x16_to_private(val.val[0]),
simde_uint8x16_to_private(val.val[1])}; simde_uint8x16_to_private(val.val[1])};
vuint8m1x2_t dest = __riscv_vlseg2e8_v_u8m1x2(ptr, 16); vuint8m1x2_t dest = __riscv_vlseg2e8_v_u8m1x2(ptr, 16);
...@@ -552,7 +554,7 @@ void ...@@ -552,7 +554,7 @@ void
simde_vst2q_u16(uint16_t *ptr, simde_uint16x8x2_t val) { simde_vst2q_u16(uint16_t *ptr, simde_uint16x8x2_t val) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
vst2q_u16(ptr, val); vst2q_u16(ptr, val);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_uint16x8_private a_[2] = {simde_uint16x8_to_private(val.val[0]), simde_uint16x8_private a_[2] = {simde_uint16x8_to_private(val.val[0]),
simde_uint16x8_to_private(val.val[1])}; simde_uint16x8_to_private(val.val[1])};
vuint16m1x2_t dest = __riscv_vlseg2e16_v_u16m1x2(ptr, 8); vuint16m1x2_t dest = __riscv_vlseg2e16_v_u16m1x2(ptr, 8);
...@@ -575,7 +577,7 @@ void ...@@ -575,7 +577,7 @@ void
simde_vst2q_u32(uint32_t *ptr, simde_uint32x4x2_t val) { simde_vst2q_u32(uint32_t *ptr, simde_uint32x4x2_t val) {
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE) #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
vst2q_u32(ptr, val); vst2q_u32(ptr, val);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
simde_uint32x4_private a_[2] = {simde_uint32x4_to_private(val.val[0]), simde_uint32x4_private a_[2] = {simde_uint32x4_to_private(val.val[0]),
simde_uint32x4_to_private(val.val[1])}; simde_uint32x4_to_private(val.val[1])};
vuint32m1x2_t dest = __riscv_vlseg2e32_v_u32m1x2(ptr, 4); vuint32m1x2_t dest = __riscv_vlseg2e32_v_u32m1x2(ptr, 4);
...@@ -601,7 +603,7 @@ simde_vst2q_u64(uint64_t *ptr, simde_uint64x2x2_t val) { ...@@ -601,7 +603,7 @@ simde_vst2q_u64(uint64_t *ptr, simde_uint64x2x2_t val) {
#else #else
simde_uint64x2_private a_[2] = {simde_uint64x2_to_private(val.val[0]), simde_uint64x2_private a_[2] = {simde_uint64x2_to_private(val.val[0]),
simde_uint64x2_to_private(val.val[1])}; simde_uint64x2_to_private(val.val[1])};
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint64m1x2_t dest = __riscv_vlseg2e64_v_u64m1x2(ptr, 2); vuint64m1x2_t dest = __riscv_vlseg2e64_v_u64m1x2(ptr, 2);
dest = __riscv_vset_v_u64m1_u64m1x2 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_u64m1_u64m1x2 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_u64m1_u64m1x2 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_u64m1_u64m1x2 (dest, 1, a_[1].sv128);
...@@ -628,7 +630,7 @@ simde_vst2_p8(simde_poly8_t *ptr, simde_poly8x8x2_t val) { ...@@ -628,7 +630,7 @@ simde_vst2_p8(simde_poly8_t *ptr, simde_poly8x8x2_t val) {
#else #else
simde_poly8x8_private a_[2] = {simde_poly8x8_to_private(val.val[0]), simde_poly8x8_private a_[2] = {simde_poly8x8_to_private(val.val[0]),
simde_poly8x8_to_private(val.val[1])}; simde_poly8x8_to_private(val.val[1])};
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint8m1x2_t dest = __riscv_vlseg2e8_v_u8m1x2(ptr, 8); vuint8m1x2_t dest = __riscv_vlseg2e8_v_u8m1x2(ptr, 8);
dest = __riscv_vset_v_u8m1_u8m1x2 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_u8m1_u8m1x2 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_u8m1_u8m1x2 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_u8m1_u8m1x2 (dest, 1, a_[1].sv64);
...@@ -655,7 +657,7 @@ simde_vst2_p16(simde_poly16_t *ptr, simde_poly16x4x2_t val) { ...@@ -655,7 +657,7 @@ simde_vst2_p16(simde_poly16_t *ptr, simde_poly16x4x2_t val) {
#else #else
simde_poly16x4_private a_[2] = {simde_poly16x4_to_private(val.val[0]), simde_poly16x4_private a_[2] = {simde_poly16x4_to_private(val.val[0]),
simde_poly16x4_to_private(val.val[1])}; simde_poly16x4_to_private(val.val[1])};
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint16m1x2_t dest = __riscv_vlseg2e16_v_u16m1x2(ptr, 4); vuint16m1x2_t dest = __riscv_vlseg2e16_v_u16m1x2(ptr, 4);
dest = __riscv_vset_v_u16m1_u16m1x2 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_u16m1_u16m1x2 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_u16m1_u16m1x2 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_u16m1_u16m1x2 (dest, 1, a_[1].sv64);
...@@ -682,7 +684,7 @@ simde_vst2_p64(simde_poly64_t *ptr, simde_poly64x1x2_t val) { ...@@ -682,7 +684,7 @@ simde_vst2_p64(simde_poly64_t *ptr, simde_poly64x1x2_t val) {
#else #else
simde_poly64x1_private a_[2] = {simde_poly64x1_to_private(val.val[0]), simde_poly64x1_private a_[2] = {simde_poly64x1_to_private(val.val[0]),
simde_poly64x1_to_private(val.val[1])}; simde_poly64x1_to_private(val.val[1])};
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint64m1x2_t dest = __riscv_vlseg2e64_v_u64m1x2(ptr, 1); vuint64m1x2_t dest = __riscv_vlseg2e64_v_u64m1x2(ptr, 1);
dest = __riscv_vset_v_u64m1_u64m1x2 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_u64m1_u64m1x2 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_u64m1_u64m1x2 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_u64m1_u64m1x2 (dest, 1, a_[1].sv64);
...@@ -709,7 +711,7 @@ simde_vst2q_p8(simde_poly8_t *ptr, simde_poly8x16x2_t val) { ...@@ -709,7 +711,7 @@ simde_vst2q_p8(simde_poly8_t *ptr, simde_poly8x16x2_t val) {
#else #else
simde_poly8x16_private a_[2] = {simde_poly8x16_to_private(val.val[0]), simde_poly8x16_private a_[2] = {simde_poly8x16_to_private(val.val[0]),
simde_poly8x16_to_private(val.val[1])}; simde_poly8x16_to_private(val.val[1])};
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint8m1x2_t dest = __riscv_vlseg2e8_v_u8m1x2(ptr, 16); vuint8m1x2_t dest = __riscv_vlseg2e8_v_u8m1x2(ptr, 16);
dest = __riscv_vset_v_u8m1_u8m1x2 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_u8m1_u8m1x2 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_u8m1_u8m1x2 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_u8m1_u8m1x2 (dest, 1, a_[1].sv128);
...@@ -736,7 +738,7 @@ simde_vst2q_p16(simde_poly16_t *ptr, simde_poly16x8x2_t val) { ...@@ -736,7 +738,7 @@ simde_vst2q_p16(simde_poly16_t *ptr, simde_poly16x8x2_t val) {
#else #else
simde_poly16x8_private a_[2] = {simde_poly16x8_to_private(val.val[0]), simde_poly16x8_private a_[2] = {simde_poly16x8_to_private(val.val[0]),
simde_poly16x8_to_private(val.val[1])}; simde_poly16x8_to_private(val.val[1])};
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint16m1x2_t dest = __riscv_vlseg2e16_v_u16m1x2(ptr, 8); vuint16m1x2_t dest = __riscv_vlseg2e16_v_u16m1x2(ptr, 8);
dest = __riscv_vset_v_u16m1_u16m1x2 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_u16m1_u16m1x2 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_u16m1_u16m1x2 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_u16m1_u16m1x2 (dest, 1, a_[1].sv128);
...@@ -763,7 +765,7 @@ simde_vst2q_p64(simde_poly64_t *ptr, simde_poly64x2x2_t val) { ...@@ -763,7 +765,7 @@ simde_vst2q_p64(simde_poly64_t *ptr, simde_poly64x2x2_t val) {
#else #else
simde_poly64x2_private a_[2] = {simde_poly64x2_to_private(val.val[0]), simde_poly64x2_private a_[2] = {simde_poly64x2_to_private(val.val[0]),
simde_poly64x2_to_private(val.val[1])}; simde_poly64x2_to_private(val.val[1])};
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint64m1x2_t dest = __riscv_vlseg2e64_v_u64m1x2(ptr, 2); vuint64m1x2_t dest = __riscv_vlseg2e64_v_u64m1x2(ptr, 2);
dest = __riscv_vset_v_u64m1_u64m1x2 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_u64m1_u64m1x2 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_u64m1_u64m1x2 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_u64m1_u64m1x2 (dest, 1, a_[1].sv128);
......
...@@ -48,7 +48,8 @@ simde_vst3_f16(simde_float16_t ptr[HEDLEY_ARRAY_PARAM(12)], simde_float16x4x3_t ...@@ -48,7 +48,8 @@ simde_vst3_f16(simde_float16_t ptr[HEDLEY_ARRAY_PARAM(12)], simde_float16x4x3_t
simde_float16x4_private a[3] = { simde_float16x4_to_private(val.val[0]), simde_float16x4_private a[3] = { simde_float16x4_to_private(val.val[0]),
simde_float16x4_to_private(val.val[1]), simde_float16x4_to_private(val.val[1]),
simde_float16x4_to_private(val.val[2]) }; simde_float16x4_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) && SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG) \
&& SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128)
vfloat16m1x3_t dest = __riscv_vlseg3e16_v_f16m1x3((_Float16 *)ptr, 4); vfloat16m1x3_t dest = __riscv_vlseg3e16_v_f16m1x3((_Float16 *)ptr, 4);
dest = __riscv_vset_v_f16m1_f16m1x3 (dest, 0, a[0].sv64); dest = __riscv_vset_v_f16m1_f16m1x3 (dest, 0, a[0].sv64);
dest = __riscv_vset_v_f16m1_f16m1x3 (dest, 1, a[1].sv64); dest = __riscv_vset_v_f16m1_f16m1x3 (dest, 1, a[1].sv64);
...@@ -78,7 +79,7 @@ simde_vst3_f32(simde_float32_t ptr[HEDLEY_ARRAY_PARAM(6)], simde_float32x2x3_t v ...@@ -78,7 +79,7 @@ simde_vst3_f32(simde_float32_t ptr[HEDLEY_ARRAY_PARAM(6)], simde_float32x2x3_t v
simde_float32x2_private a[3] = { simde_float32x2_to_private(val.val[0]), simde_float32x2_private a[3] = { simde_float32x2_to_private(val.val[0]),
simde_float32x2_to_private(val.val[1]), simde_float32x2_to_private(val.val[1]),
simde_float32x2_to_private(val.val[2]) }; simde_float32x2_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vfloat32m1x3_t dest = __riscv_vlseg3e32_v_f32m1x3(ptr, 2); vfloat32m1x3_t dest = __riscv_vlseg3e32_v_f32m1x3(ptr, 2);
dest = __riscv_vset_v_f32m1_f32m1x3 (dest, 0, a[0].sv64); dest = __riscv_vset_v_f32m1_f32m1x3 (dest, 0, a[0].sv64);
dest = __riscv_vset_v_f32m1_f32m1x3 (dest, 1, a[1].sv64); dest = __riscv_vset_v_f32m1_f32m1x3 (dest, 1, a[1].sv64);
...@@ -114,7 +115,7 @@ simde_vst3_f64(simde_float64_t ptr[HEDLEY_ARRAY_PARAM(3)], simde_float64x1x3_t v ...@@ -114,7 +115,7 @@ simde_vst3_f64(simde_float64_t ptr[HEDLEY_ARRAY_PARAM(3)], simde_float64x1x3_t v
simde_float64x1_private a_[3] = { simde_float64x1_to_private(val.val[0]), simde_float64x1_private a_[3] = { simde_float64x1_to_private(val.val[0]),
simde_float64x1_to_private(val.val[1]), simde_float64x1_to_private(val.val[1]),
simde_float64x1_to_private(val.val[2]) }; simde_float64x1_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vfloat64m1x3_t dest = __riscv_vlseg3e64_v_f64m1x3(ptr, 1); vfloat64m1x3_t dest = __riscv_vlseg3e64_v_f64m1x3(ptr, 1);
dest = __riscv_vset_v_f64m1_f64m1x3 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_f64m1_f64m1x3 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_f64m1_f64m1x3 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_f64m1_f64m1x3 (dest, 1, a_[1].sv64);
...@@ -141,7 +142,7 @@ simde_vst3_s8(int8_t ptr[HEDLEY_ARRAY_PARAM(24)], simde_int8x8x3_t val) { ...@@ -141,7 +142,7 @@ simde_vst3_s8(int8_t ptr[HEDLEY_ARRAY_PARAM(24)], simde_int8x8x3_t val) {
simde_int8x8_private a_[3] = { simde_int8x8_to_private(val.val[0]), simde_int8x8_private a_[3] = { simde_int8x8_to_private(val.val[0]),
simde_int8x8_to_private(val.val[1]), simde_int8x8_to_private(val.val[1]),
simde_int8x8_to_private(val.val[2]) }; simde_int8x8_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint8m1x3_t dest = __riscv_vlseg3e8_v_i8m1x3(ptr, 8); vint8m1x3_t dest = __riscv_vlseg3e8_v_i8m1x3(ptr, 8);
dest = __riscv_vset_v_i8m1_i8m1x3 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_i8m1_i8m1x3 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_i8m1_i8m1x3 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_i8m1_i8m1x3 (dest, 1, a_[1].sv64);
...@@ -188,7 +189,7 @@ simde_vst3_s16(int16_t ptr[HEDLEY_ARRAY_PARAM(12)], simde_int16x4x3_t val) { ...@@ -188,7 +189,7 @@ simde_vst3_s16(int16_t ptr[HEDLEY_ARRAY_PARAM(12)], simde_int16x4x3_t val) {
simde_int16x4_private a_[3] = { simde_int16x4_to_private(val.val[0]), simde_int16x4_private a_[3] = { simde_int16x4_to_private(val.val[0]),
simde_int16x4_to_private(val.val[1]), simde_int16x4_to_private(val.val[1]),
simde_int16x4_to_private(val.val[2]) }; simde_int16x4_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint16m1x3_t dest = __riscv_vlseg3e16_v_i16m1x3(ptr, 4); vint16m1x3_t dest = __riscv_vlseg3e16_v_i16m1x3(ptr, 4);
dest = __riscv_vset_v_i16m1_i16m1x3 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_i16m1_i16m1x3 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_i16m1_i16m1x3 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_i16m1_i16m1x3 (dest, 1, a_[1].sv64);
...@@ -235,7 +236,7 @@ simde_vst3_s32(int32_t ptr[HEDLEY_ARRAY_PARAM(6)], simde_int32x2x3_t val) { ...@@ -235,7 +236,7 @@ simde_vst3_s32(int32_t ptr[HEDLEY_ARRAY_PARAM(6)], simde_int32x2x3_t val) {
simde_int32x2_private a[3] = { simde_int32x2_to_private(val.val[0]), simde_int32x2_private a[3] = { simde_int32x2_to_private(val.val[0]),
simde_int32x2_to_private(val.val[1]), simde_int32x2_to_private(val.val[1]),
simde_int32x2_to_private(val.val[2]) }; simde_int32x2_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint32m1x3_t dest = __riscv_vlseg3e32_v_i32m1x3(ptr, 2); vint32m1x3_t dest = __riscv_vlseg3e32_v_i32m1x3(ptr, 2);
dest = __riscv_vset_v_i32m1_i32m1x3 (dest, 0, a[0].sv64); dest = __riscv_vset_v_i32m1_i32m1x3 (dest, 0, a[0].sv64);
dest = __riscv_vset_v_i32m1_i32m1x3 (dest, 1, a[1].sv64); dest = __riscv_vset_v_i32m1_i32m1x3 (dest, 1, a[1].sv64);
...@@ -271,7 +272,7 @@ simde_vst3_s64(int64_t ptr[HEDLEY_ARRAY_PARAM(3)], simde_int64x1x3_t val) { ...@@ -271,7 +272,7 @@ simde_vst3_s64(int64_t ptr[HEDLEY_ARRAY_PARAM(3)], simde_int64x1x3_t val) {
simde_int64x1_private a_[3] = { simde_int64x1_to_private(val.val[0]), simde_int64x1_private a_[3] = { simde_int64x1_to_private(val.val[0]),
simde_int64x1_to_private(val.val[1]), simde_int64x1_to_private(val.val[1]),
simde_int64x1_to_private(val.val[2]) }; simde_int64x1_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint64m1x3_t dest = __riscv_vlseg3e64_v_i64m1x3(ptr, 1); vint64m1x3_t dest = __riscv_vlseg3e64_v_i64m1x3(ptr, 1);
dest = __riscv_vset_v_i64m1_i64m1x3 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_i64m1_i64m1x3 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_i64m1_i64m1x3 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_i64m1_i64m1x3 (dest, 1, a_[1].sv64);
...@@ -298,7 +299,7 @@ simde_vst3_u8(uint8_t ptr[HEDLEY_ARRAY_PARAM(24)], simde_uint8x8x3_t val) { ...@@ -298,7 +299,7 @@ simde_vst3_u8(uint8_t ptr[HEDLEY_ARRAY_PARAM(24)], simde_uint8x8x3_t val) {
simde_uint8x8_private a_[3] = { simde_uint8x8_to_private(val.val[0]), simde_uint8x8_private a_[3] = { simde_uint8x8_to_private(val.val[0]),
simde_uint8x8_to_private(val.val[1]), simde_uint8x8_to_private(val.val[1]),
simde_uint8x8_to_private(val.val[2]) }; simde_uint8x8_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint8m1x3_t dest = __riscv_vlseg3e8_v_u8m1x3(ptr, 8); vuint8m1x3_t dest = __riscv_vlseg3e8_v_u8m1x3(ptr, 8);
dest = __riscv_vset_v_u8m1_u8m1x3 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_u8m1_u8m1x3 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_u8m1_u8m1x3 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_u8m1_u8m1x3 (dest, 1, a_[1].sv64);
...@@ -345,7 +346,7 @@ simde_vst3_u16(uint16_t ptr[HEDLEY_ARRAY_PARAM(12)], simde_uint16x4x3_t val) { ...@@ -345,7 +346,7 @@ simde_vst3_u16(uint16_t ptr[HEDLEY_ARRAY_PARAM(12)], simde_uint16x4x3_t val) {
simde_uint16x4_private a_[3] = { simde_uint16x4_to_private(val.val[0]), simde_uint16x4_private a_[3] = { simde_uint16x4_to_private(val.val[0]),
simde_uint16x4_to_private(val.val[1]), simde_uint16x4_to_private(val.val[1]),
simde_uint16x4_to_private(val.val[2]) }; simde_uint16x4_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint16m1x3_t dest = __riscv_vlseg3e16_v_u16m1x3(ptr, 4); vuint16m1x3_t dest = __riscv_vlseg3e16_v_u16m1x3(ptr, 4);
dest = __riscv_vset_v_u16m1_u16m1x3 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_u16m1_u16m1x3 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_u16m1_u16m1x3 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_u16m1_u16m1x3 (dest, 1, a_[1].sv64);
...@@ -392,7 +393,7 @@ simde_vst3_u32(uint32_t ptr[HEDLEY_ARRAY_PARAM(6)], simde_uint32x2x3_t val) { ...@@ -392,7 +393,7 @@ simde_vst3_u32(uint32_t ptr[HEDLEY_ARRAY_PARAM(6)], simde_uint32x2x3_t val) {
simde_uint32x2_private a[3] = { simde_uint32x2_to_private(val.val[0]), simde_uint32x2_private a[3] = { simde_uint32x2_to_private(val.val[0]),
simde_uint32x2_to_private(val.val[1]), simde_uint32x2_to_private(val.val[1]),
simde_uint32x2_to_private(val.val[2]) }; simde_uint32x2_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint32m1x3_t dest = __riscv_vlseg3e32_v_u32m1x3(ptr, 2); vuint32m1x3_t dest = __riscv_vlseg3e32_v_u32m1x3(ptr, 2);
dest = __riscv_vset_v_u32m1_u32m1x3 (dest, 0, a[0].sv64); dest = __riscv_vset_v_u32m1_u32m1x3 (dest, 0, a[0].sv64);
dest = __riscv_vset_v_u32m1_u32m1x3 (dest, 1, a[1].sv64); dest = __riscv_vset_v_u32m1_u32m1x3 (dest, 1, a[1].sv64);
...@@ -428,7 +429,7 @@ simde_vst3_u64(uint64_t ptr[HEDLEY_ARRAY_PARAM(3)], simde_uint64x1x3_t val) { ...@@ -428,7 +429,7 @@ simde_vst3_u64(uint64_t ptr[HEDLEY_ARRAY_PARAM(3)], simde_uint64x1x3_t val) {
simde_uint64x1_private a_[3] = { simde_uint64x1_to_private(val.val[0]), simde_uint64x1_private a_[3] = { simde_uint64x1_to_private(val.val[0]),
simde_uint64x1_to_private(val.val[1]), simde_uint64x1_to_private(val.val[1]),
simde_uint64x1_to_private(val.val[2]) }; simde_uint64x1_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint64m1x3_t dest = __riscv_vlseg3e64_v_u64m1x3(ptr, 1); vuint64m1x3_t dest = __riscv_vlseg3e64_v_u64m1x3(ptr, 1);
dest = __riscv_vset_v_u64m1_u64m1x3 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_u64m1_u64m1x3 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_u64m1_u64m1x3 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_u64m1_u64m1x3 (dest, 1, a_[1].sv64);
...@@ -455,7 +456,8 @@ simde_vst3q_f16(simde_float16_t ptr[HEDLEY_ARRAY_PARAM(24)], simde_float16x8x3_t ...@@ -455,7 +456,8 @@ simde_vst3q_f16(simde_float16_t ptr[HEDLEY_ARRAY_PARAM(24)], simde_float16x8x3_t
simde_float16x8_private a_[3] = { simde_float16x8_to_private(val.val[0]), simde_float16x8_private a_[3] = { simde_float16x8_to_private(val.val[0]),
simde_float16x8_to_private(val.val[1]), simde_float16x8_to_private(val.val[1]),
simde_float16x8_to_private(val.val[2]) }; simde_float16x8_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) && SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG) \
&& SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128)
vfloat16m1x3_t dest = __riscv_vlseg3e16_v_f16m1x3((_Float16 *)ptr, 8); vfloat16m1x3_t dest = __riscv_vlseg3e16_v_f16m1x3((_Float16 *)ptr, 8);
dest = __riscv_vset_v_f16m1_f16m1x3 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_f16m1_f16m1x3 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_f16m1_f16m1x3 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_f16m1_f16m1x3 (dest, 1, a_[1].sv128);
...@@ -485,7 +487,7 @@ simde_vst3q_f32(simde_float32_t ptr[HEDLEY_ARRAY_PARAM(12)], simde_float32x4x3_t ...@@ -485,7 +487,7 @@ simde_vst3q_f32(simde_float32_t ptr[HEDLEY_ARRAY_PARAM(12)], simde_float32x4x3_t
simde_float32x4_private a_[3] = { simde_float32x4_to_private(val.val[0]), simde_float32x4_private a_[3] = { simde_float32x4_to_private(val.val[0]),
simde_float32x4_to_private(val.val[1]), simde_float32x4_to_private(val.val[1]),
simde_float32x4_to_private(val.val[2]) }; simde_float32x4_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vfloat32m1x3_t dest = __riscv_vlseg3e32_v_f32m1x3(ptr, 4); vfloat32m1x3_t dest = __riscv_vlseg3e32_v_f32m1x3(ptr, 4);
dest = __riscv_vset_v_f32m1_f32m1x3 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_f32m1_f32m1x3 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_f32m1_f32m1x3 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_f32m1_f32m1x3 (dest, 1, a_[1].sv128);
...@@ -532,7 +534,7 @@ simde_vst3q_f64(simde_float64_t ptr[HEDLEY_ARRAY_PARAM(6)], simde_float64x2x3_t ...@@ -532,7 +534,7 @@ simde_vst3q_f64(simde_float64_t ptr[HEDLEY_ARRAY_PARAM(6)], simde_float64x2x3_t
simde_float64x2_private a[3] = { simde_float64x2_to_private(val.val[0]), simde_float64x2_private a[3] = { simde_float64x2_to_private(val.val[0]),
simde_float64x2_to_private(val.val[1]), simde_float64x2_to_private(val.val[1]),
simde_float64x2_to_private(val.val[2]) }; simde_float64x2_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vfloat64m1x3_t dest = __riscv_vlseg3e64_v_f64m1x3(ptr, 2); vfloat64m1x3_t dest = __riscv_vlseg3e64_v_f64m1x3(ptr, 2);
dest = __riscv_vset_v_f64m1_f64m1x3 (dest, 0, a[0].sv128); dest = __riscv_vset_v_f64m1_f64m1x3 (dest, 0, a[0].sv128);
dest = __riscv_vset_v_f64m1_f64m1x3 (dest, 1, a[1].sv128); dest = __riscv_vset_v_f64m1_f64m1x3 (dest, 1, a[1].sv128);
...@@ -568,7 +570,7 @@ simde_vst3q_s8(int8_t ptr[HEDLEY_ARRAY_PARAM(48)], simde_int8x16x3_t val) { ...@@ -568,7 +570,7 @@ simde_vst3q_s8(int8_t ptr[HEDLEY_ARRAY_PARAM(48)], simde_int8x16x3_t val) {
simde_int8x16_private a_[3] = { simde_int8x16_to_private(val.val[0]), simde_int8x16_private a_[3] = { simde_int8x16_to_private(val.val[0]),
simde_int8x16_to_private(val.val[1]), simde_int8x16_to_private(val.val[1]),
simde_int8x16_to_private(val.val[2]) }; simde_int8x16_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint8m1x3_t dest = __riscv_vlseg3e8_v_i8m1x3(ptr, 16); vint8m1x3_t dest = __riscv_vlseg3e8_v_i8m1x3(ptr, 16);
dest = __riscv_vset_v_i8m1_i8m1x3 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_i8m1_i8m1x3 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_i8m1_i8m1x3 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_i8m1_i8m1x3 (dest, 1, a_[1].sv128);
...@@ -620,7 +622,7 @@ simde_vst3q_s16(int16_t ptr[HEDLEY_ARRAY_PARAM(24)], simde_int16x8x3_t val) { ...@@ -620,7 +622,7 @@ simde_vst3q_s16(int16_t ptr[HEDLEY_ARRAY_PARAM(24)], simde_int16x8x3_t val) {
simde_int16x8_private a_[3] = { simde_int16x8_to_private(val.val[0]), simde_int16x8_private a_[3] = { simde_int16x8_to_private(val.val[0]),
simde_int16x8_to_private(val.val[1]), simde_int16x8_to_private(val.val[1]),
simde_int16x8_to_private(val.val[2]) }; simde_int16x8_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint16m1x3_t dest = __riscv_vlseg3e16_v_i16m1x3(ptr, 8); vint16m1x3_t dest = __riscv_vlseg3e16_v_i16m1x3(ptr, 8);
dest = __riscv_vset_v_i16m1_i16m1x3 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_i16m1_i16m1x3 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_i16m1_i16m1x3 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_i16m1_i16m1x3 (dest, 1, a_[1].sv128);
...@@ -667,7 +669,7 @@ simde_vst3q_s32(int32_t ptr[HEDLEY_ARRAY_PARAM(12)], simde_int32x4x3_t val) { ...@@ -667,7 +669,7 @@ simde_vst3q_s32(int32_t ptr[HEDLEY_ARRAY_PARAM(12)], simde_int32x4x3_t val) {
simde_int32x4_private a_[3] = { simde_int32x4_to_private(val.val[0]), simde_int32x4_private a_[3] = { simde_int32x4_to_private(val.val[0]),
simde_int32x4_to_private(val.val[1]), simde_int32x4_to_private(val.val[1]),
simde_int32x4_to_private(val.val[2]) }; simde_int32x4_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint32m1x3_t dest = __riscv_vlseg3e32_v_i32m1x3(ptr, 4); vint32m1x3_t dest = __riscv_vlseg3e32_v_i32m1x3(ptr, 4);
dest = __riscv_vset_v_i32m1_i32m1x3 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_i32m1_i32m1x3 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_i32m1_i32m1x3 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_i32m1_i32m1x3 (dest, 1, a_[1].sv128);
...@@ -714,7 +716,7 @@ simde_vst3q_s64(int64_t ptr[HEDLEY_ARRAY_PARAM(6)], simde_int64x2x3_t val) { ...@@ -714,7 +716,7 @@ simde_vst3q_s64(int64_t ptr[HEDLEY_ARRAY_PARAM(6)], simde_int64x2x3_t val) {
simde_int64x2_private a[3] = { simde_int64x2_to_private(val.val[0]), simde_int64x2_private a[3] = { simde_int64x2_to_private(val.val[0]),
simde_int64x2_to_private(val.val[1]), simde_int64x2_to_private(val.val[1]),
simde_int64x2_to_private(val.val[2]) }; simde_int64x2_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint64m1x3_t dest = __riscv_vlseg3e64_v_i64m1x3(ptr, 2); vint64m1x3_t dest = __riscv_vlseg3e64_v_i64m1x3(ptr, 2);
dest = __riscv_vset_v_i64m1_i64m1x3 (dest, 0, a[0].sv128); dest = __riscv_vset_v_i64m1_i64m1x3 (dest, 0, a[0].sv128);
dest = __riscv_vset_v_i64m1_i64m1x3 (dest, 1, a[1].sv128); dest = __riscv_vset_v_i64m1_i64m1x3 (dest, 1, a[1].sv128);
...@@ -782,7 +784,7 @@ simde_vst3q_u8(uint8_t ptr[HEDLEY_ARRAY_PARAM(48)], simde_uint8x16x3_t val) { ...@@ -782,7 +784,7 @@ simde_vst3q_u8(uint8_t ptr[HEDLEY_ARRAY_PARAM(48)], simde_uint8x16x3_t val) {
v128_t m2 = wasm_i8x16_shuffle(r2, r1, 0, 1, 18, 3, 4, 21, 6, 7, 24, 9, 10, v128_t m2 = wasm_i8x16_shuffle(r2, r1, 0, 1, 18, 3, 4, 21, 6, 7, 24, 9, 10,
27, 12, 13, 30, 15); 27, 12, 13, 30, 15);
wasm_v128_store(ptr + 32, m2); wasm_v128_store(ptr + 32, m2);
#elif defined(SIMDE_RISCV_V_NATIVE) #elif defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint8m1x3_t dest = __riscv_vlseg3e8_v_u8m1x3(ptr, 16); vuint8m1x3_t dest = __riscv_vlseg3e8_v_u8m1x3(ptr, 16);
dest = __riscv_vset_v_u8m1_u8m1x3 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_u8m1_u8m1x3 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_u8m1_u8m1x3 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_u8m1_u8m1x3 (dest, 1, a_[1].sv128);
...@@ -835,7 +837,7 @@ simde_vst3q_u16(uint16_t ptr[HEDLEY_ARRAY_PARAM(24)], simde_uint16x8x3_t val) { ...@@ -835,7 +837,7 @@ simde_vst3q_u16(uint16_t ptr[HEDLEY_ARRAY_PARAM(24)], simde_uint16x8x3_t val) {
simde_uint16x8_to_private(val.val[1]), simde_uint16x8_to_private(val.val[1]),
simde_uint16x8_to_private(val.val[2]) }; simde_uint16x8_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint16m1x3_t dest = __riscv_vlseg3e16_v_u16m1x3(ptr, 8); vuint16m1x3_t dest = __riscv_vlseg3e16_v_u16m1x3(ptr, 8);
dest = __riscv_vset_v_u16m1_u16m1x3 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_u16m1_u16m1x3 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_u16m1_u16m1x3 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_u16m1_u16m1x3 (dest, 1, a_[1].sv128);
...@@ -883,7 +885,7 @@ simde_vst3q_u32(uint32_t ptr[HEDLEY_ARRAY_PARAM(12)], simde_uint32x4x3_t val) { ...@@ -883,7 +885,7 @@ simde_vst3q_u32(uint32_t ptr[HEDLEY_ARRAY_PARAM(12)], simde_uint32x4x3_t val) {
simde_uint32x4_to_private(val.val[1]), simde_uint32x4_to_private(val.val[1]),
simde_uint32x4_to_private(val.val[2]) }; simde_uint32x4_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint32m1x3_t dest = __riscv_vlseg3e32_v_u32m1x3(ptr, 4); vuint32m1x3_t dest = __riscv_vlseg3e32_v_u32m1x3(ptr, 4);
dest = __riscv_vset_v_u32m1_u32m1x3 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_u32m1_u32m1x3 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_u32m1_u32m1x3 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_u32m1_u32m1x3 (dest, 1, a_[1].sv128);
...@@ -930,7 +932,7 @@ simde_vst3q_u64(uint64_t ptr[HEDLEY_ARRAY_PARAM(6)], simde_uint64x2x3_t val) { ...@@ -930,7 +932,7 @@ simde_vst3q_u64(uint64_t ptr[HEDLEY_ARRAY_PARAM(6)], simde_uint64x2x3_t val) {
simde_uint64x2_private a[3] = { simde_uint64x2_to_private(val.val[0]), simde_uint64x2_private a[3] = { simde_uint64x2_to_private(val.val[0]),
simde_uint64x2_to_private(val.val[1]), simde_uint64x2_to_private(val.val[1]),
simde_uint64x2_to_private(val.val[2]) }; simde_uint64x2_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint64m1x3_t dest = __riscv_vlseg3e64_v_u64m1x3(ptr, 2); vuint64m1x3_t dest = __riscv_vlseg3e64_v_u64m1x3(ptr, 2);
dest = __riscv_vset_v_u64m1_u64m1x3 (dest, 0, a[0].sv128); dest = __riscv_vset_v_u64m1_u64m1x3 (dest, 0, a[0].sv128);
dest = __riscv_vset_v_u64m1_u64m1x3 (dest, 1, a[1].sv128); dest = __riscv_vset_v_u64m1_u64m1x3 (dest, 1, a[1].sv128);
...@@ -966,7 +968,7 @@ simde_vst3_p8(simde_poly8_t ptr[HEDLEY_ARRAY_PARAM(24)], simde_poly8x8x3_t val) ...@@ -966,7 +968,7 @@ simde_vst3_p8(simde_poly8_t ptr[HEDLEY_ARRAY_PARAM(24)], simde_poly8x8x3_t val)
simde_poly8x8_private a_[3] = { simde_poly8x8_to_private(val.val[0]), simde_poly8x8_private a_[3] = { simde_poly8x8_to_private(val.val[0]),
simde_poly8x8_to_private(val.val[1]), simde_poly8x8_to_private(val.val[1]),
simde_poly8x8_to_private(val.val[2]) }; simde_poly8x8_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint8m1x3_t dest = __riscv_vlseg3e8_v_u8m1x3(ptr, 8); vuint8m1x3_t dest = __riscv_vlseg3e8_v_u8m1x3(ptr, 8);
dest = __riscv_vset_v_u8m1_u8m1x3 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_u8m1_u8m1x3 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_u8m1_u8m1x3 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_u8m1_u8m1x3 (dest, 1, a_[1].sv64);
...@@ -995,7 +997,7 @@ simde_vst3_p16(simde_poly16_t ptr[HEDLEY_ARRAY_PARAM(12)], simde_poly16x4x3_t va ...@@ -995,7 +997,7 @@ simde_vst3_p16(simde_poly16_t ptr[HEDLEY_ARRAY_PARAM(12)], simde_poly16x4x3_t va
simde_poly16x4_private a_[3] = { simde_poly16x4_to_private(val.val[0]), simde_poly16x4_private a_[3] = { simde_poly16x4_to_private(val.val[0]),
simde_poly16x4_to_private(val.val[1]), simde_poly16x4_to_private(val.val[1]),
simde_poly16x4_to_private(val.val[2]) }; simde_poly16x4_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint16m1x3_t dest = __riscv_vlseg3e16_v_u16m1x3(ptr, 4); vuint16m1x3_t dest = __riscv_vlseg3e16_v_u16m1x3(ptr, 4);
dest = __riscv_vset_v_u16m1_u16m1x3 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_u16m1_u16m1x3 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_u16m1_u16m1x3 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_u16m1_u16m1x3 (dest, 1, a_[1].sv64);
...@@ -1024,7 +1026,7 @@ simde_vst3_p64(simde_poly64_t ptr[HEDLEY_ARRAY_PARAM(3)], simde_poly64x1x3_t val ...@@ -1024,7 +1026,7 @@ simde_vst3_p64(simde_poly64_t ptr[HEDLEY_ARRAY_PARAM(3)], simde_poly64x1x3_t val
simde_poly64x1_private a_[3] = { simde_poly64x1_to_private(val.val[0]), simde_poly64x1_private a_[3] = { simde_poly64x1_to_private(val.val[0]),
simde_poly64x1_to_private(val.val[1]), simde_poly64x1_to_private(val.val[1]),
simde_poly64x1_to_private(val.val[2]) }; simde_poly64x1_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint64m1x3_t dest = __riscv_vlseg3e64_v_u64m1x3(ptr, 1); vuint64m1x3_t dest = __riscv_vlseg3e64_v_u64m1x3(ptr, 1);
dest = __riscv_vset_v_u64m1_u64m1x3 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_u64m1_u64m1x3 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_u64m1_u64m1x3 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_u64m1_u64m1x3 (dest, 1, a_[1].sv64);
...@@ -1051,7 +1053,7 @@ simde_vst3q_p8(simde_poly8_t ptr[HEDLEY_ARRAY_PARAM(48)], simde_poly8x16x3_t val ...@@ -1051,7 +1053,7 @@ simde_vst3q_p8(simde_poly8_t ptr[HEDLEY_ARRAY_PARAM(48)], simde_poly8x16x3_t val
simde_poly8x16_private a_[3] = {simde_poly8x16_to_private(val.val[0]), simde_poly8x16_private a_[3] = {simde_poly8x16_to_private(val.val[0]),
simde_poly8x16_to_private(val.val[1]), simde_poly8x16_to_private(val.val[1]),
simde_poly8x16_to_private(val.val[2])}; simde_poly8x16_to_private(val.val[2])};
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint8m1x3_t dest = __riscv_vlseg3e8_v_u8m1x3(ptr, 16); vuint8m1x3_t dest = __riscv_vlseg3e8_v_u8m1x3(ptr, 16);
dest = __riscv_vset_v_u8m1_u8m1x3 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_u8m1_u8m1x3 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_u8m1_u8m1x3 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_u8m1_u8m1x3 (dest, 1, a_[1].sv128);
...@@ -1081,7 +1083,7 @@ simde_vst3q_p16(simde_poly16_t ptr[HEDLEY_ARRAY_PARAM(24)], simde_poly16x8x3_t v ...@@ -1081,7 +1083,7 @@ simde_vst3q_p16(simde_poly16_t ptr[HEDLEY_ARRAY_PARAM(24)], simde_poly16x8x3_t v
simde_poly16x8_to_private(val.val[1]), simde_poly16x8_to_private(val.val[1]),
simde_poly16x8_to_private(val.val[2]) }; simde_poly16x8_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint16m1x3_t dest = __riscv_vlseg3e16_v_u16m1x3(ptr, 8); vuint16m1x3_t dest = __riscv_vlseg3e16_v_u16m1x3(ptr, 8);
dest = __riscv_vset_v_u16m1_u16m1x3 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_u16m1_u16m1x3 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_u16m1_u16m1x3 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_u16m1_u16m1x3 (dest, 1, a_[1].sv128);
...@@ -1110,7 +1112,7 @@ simde_vst3q_p64(simde_poly64_t ptr[HEDLEY_ARRAY_PARAM(6)], simde_poly64x2x3_t va ...@@ -1110,7 +1112,7 @@ simde_vst3q_p64(simde_poly64_t ptr[HEDLEY_ARRAY_PARAM(6)], simde_poly64x2x3_t va
simde_poly64x2_private a_[3] = { simde_poly64x2_to_private(val.val[0]), simde_poly64x2_private a_[3] = { simde_poly64x2_to_private(val.val[0]),
simde_poly64x2_to_private(val.val[1]), simde_poly64x2_to_private(val.val[1]),
simde_poly64x2_to_private(val.val[2]) }; simde_poly64x2_to_private(val.val[2]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint64m1x3_t dest = __riscv_vlseg3e64_v_u64m1x3(ptr, 2); vuint64m1x3_t dest = __riscv_vlseg3e64_v_u64m1x3(ptr, 2);
dest = __riscv_vset_v_u64m1_u64m1x3 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_u64m1_u64m1x3 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_u64m1_u64m1x3 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_u64m1_u64m1x3 (dest, 1, a_[1].sv128);
......
...@@ -46,7 +46,8 @@ simde_vst4_f16(simde_float16_t *ptr, simde_float16x4x4_t val) { ...@@ -46,7 +46,8 @@ simde_vst4_f16(simde_float16_t *ptr, simde_float16x4x4_t val) {
#else #else
simde_float16x4_private a_[4] = { simde_float16x4_to_private(val.val[0]), simde_float16x4_to_private(val.val[1]), simde_float16x4_private a_[4] = { simde_float16x4_to_private(val.val[0]), simde_float16x4_to_private(val.val[1]),
simde_float16x4_to_private(val.val[2]), simde_float16x4_to_private(val.val[3]) }; simde_float16x4_to_private(val.val[2]), simde_float16x4_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) && SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG) \
&& SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128)
vfloat16m1x4_t dest = __riscv_vlseg4e16_v_f16m1x4((_Float16 *)ptr, 4); vfloat16m1x4_t dest = __riscv_vlseg4e16_v_f16m1x4((_Float16 *)ptr, 4);
dest = __riscv_vset_v_f16m1_f16m1x4 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_f16m1_f16m1x4 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_f16m1_f16m1x4 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_f16m1_f16m1x4 (dest, 1, a_[1].sv64);
...@@ -76,7 +77,7 @@ simde_vst4_f32(simde_float32_t *ptr, simde_float32x2x4_t val) { ...@@ -76,7 +77,7 @@ simde_vst4_f32(simde_float32_t *ptr, simde_float32x2x4_t val) {
#else #else
simde_float32x2_private a_[4] = { simde_float32x2_to_private(val.val[0]), simde_float32x2_to_private(val.val[1]), simde_float32x2_private a_[4] = { simde_float32x2_to_private(val.val[0]), simde_float32x2_to_private(val.val[1]),
simde_float32x2_to_private(val.val[2]), simde_float32x2_to_private(val.val[3]) }; simde_float32x2_to_private(val.val[2]), simde_float32x2_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vfloat32m1x4_t dest = __riscv_vlseg4e32_v_f32m1x4(ptr, 2); vfloat32m1x4_t dest = __riscv_vlseg4e32_v_f32m1x4(ptr, 2);
dest = __riscv_vset_v_f32m1_f32m1x4 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_f32m1_f32m1x4 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_f32m1_f32m1x4 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_f32m1_f32m1x4 (dest, 1, a_[1].sv64);
...@@ -105,7 +106,7 @@ simde_vst4_f64(simde_float64_t *ptr, simde_float64x1x4_t val) { ...@@ -105,7 +106,7 @@ simde_vst4_f64(simde_float64_t *ptr, simde_float64x1x4_t val) {
#else #else
simde_float64x1_private a_[4] = { simde_float64x1_to_private(val.val[0]), simde_float64x1_to_private(val.val[1]), simde_float64x1_private a_[4] = { simde_float64x1_to_private(val.val[0]), simde_float64x1_to_private(val.val[1]),
simde_float64x1_to_private(val.val[2]), simde_float64x1_to_private(val.val[3]) }; simde_float64x1_to_private(val.val[2]), simde_float64x1_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vfloat64m1x4_t dest = __riscv_vlseg4e64_v_f64m1x4(ptr, 1); vfloat64m1x4_t dest = __riscv_vlseg4e64_v_f64m1x4(ptr, 1);
dest = __riscv_vset_v_f64m1_f64m1x4 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_f64m1_f64m1x4 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_f64m1_f64m1x4 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_f64m1_f64m1x4 (dest, 1, a_[1].sv64);
...@@ -134,7 +135,7 @@ simde_vst4_s8(int8_t *ptr, simde_int8x8x4_t val) { ...@@ -134,7 +135,7 @@ simde_vst4_s8(int8_t *ptr, simde_int8x8x4_t val) {
#else #else
simde_int8x8_private a_[4] = { simde_int8x8_to_private(val.val[0]), simde_int8x8_to_private(val.val[1]), simde_int8x8_private a_[4] = { simde_int8x8_to_private(val.val[0]), simde_int8x8_to_private(val.val[1]),
simde_int8x8_to_private(val.val[2]), simde_int8x8_to_private(val.val[3]) }; simde_int8x8_to_private(val.val[2]), simde_int8x8_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint8m1x4_t dest = __riscv_vlseg4e8_v_i8m1x4(ptr, 8); vint8m1x4_t dest = __riscv_vlseg4e8_v_i8m1x4(ptr, 8);
dest = __riscv_vset_v_i8m1_i8m1x4 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_i8m1_i8m1x4 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_i8m1_i8m1x4 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_i8m1_i8m1x4 (dest, 1, a_[1].sv64);
...@@ -163,7 +164,7 @@ simde_vst4_s16(int16_t *ptr, simde_int16x4x4_t val) { ...@@ -163,7 +164,7 @@ simde_vst4_s16(int16_t *ptr, simde_int16x4x4_t val) {
#else #else
simde_int16x4_private a_[4] = { simde_int16x4_to_private(val.val[0]), simde_int16x4_to_private(val.val[1]), simde_int16x4_private a_[4] = { simde_int16x4_to_private(val.val[0]), simde_int16x4_to_private(val.val[1]),
simde_int16x4_to_private(val.val[2]), simde_int16x4_to_private(val.val[3]) }; simde_int16x4_to_private(val.val[2]), simde_int16x4_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint16m1x4_t dest = __riscv_vlseg4e16_v_i16m1x4(ptr, 4); vint16m1x4_t dest = __riscv_vlseg4e16_v_i16m1x4(ptr, 4);
dest = __riscv_vset_v_i16m1_i16m1x4 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_i16m1_i16m1x4 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_i16m1_i16m1x4 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_i16m1_i16m1x4 (dest, 1, a_[1].sv64);
...@@ -192,7 +193,7 @@ simde_vst4_s32(int32_t *ptr, simde_int32x2x4_t val) { ...@@ -192,7 +193,7 @@ simde_vst4_s32(int32_t *ptr, simde_int32x2x4_t val) {
#else #else
simde_int32x2_private a_[4] = { simde_int32x2_to_private(val.val[0]), simde_int32x2_to_private(val.val[1]), simde_int32x2_private a_[4] = { simde_int32x2_to_private(val.val[0]), simde_int32x2_to_private(val.val[1]),
simde_int32x2_to_private(val.val[2]), simde_int32x2_to_private(val.val[3]) }; simde_int32x2_to_private(val.val[2]), simde_int32x2_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint32m1x4_t dest = __riscv_vlseg4e32_v_i32m1x4(ptr, 2); vint32m1x4_t dest = __riscv_vlseg4e32_v_i32m1x4(ptr, 2);
dest = __riscv_vset_v_i32m1_i32m1x4 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_i32m1_i32m1x4 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_i32m1_i32m1x4 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_i32m1_i32m1x4 (dest, 1, a_[1].sv64);
...@@ -221,7 +222,7 @@ simde_vst4_s64(int64_t *ptr, simde_int64x1x4_t val) { ...@@ -221,7 +222,7 @@ simde_vst4_s64(int64_t *ptr, simde_int64x1x4_t val) {
#else #else
simde_int64x1_private a_[4] = { simde_int64x1_to_private(val.val[0]), simde_int64x1_to_private(val.val[1]), simde_int64x1_private a_[4] = { simde_int64x1_to_private(val.val[0]), simde_int64x1_to_private(val.val[1]),
simde_int64x1_to_private(val.val[2]), simde_int64x1_to_private(val.val[3]) }; simde_int64x1_to_private(val.val[2]), simde_int64x1_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint64m1x4_t dest = __riscv_vlseg4e64_v_i64m1x4(ptr, 1); vint64m1x4_t dest = __riscv_vlseg4e64_v_i64m1x4(ptr, 1);
dest = __riscv_vset_v_i64m1_i64m1x4 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_i64m1_i64m1x4 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_i64m1_i64m1x4 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_i64m1_i64m1x4 (dest, 1, a_[1].sv64);
...@@ -271,7 +272,7 @@ simde_vst4_u8(uint8_t *ptr, simde_uint8x8x4_t val) { ...@@ -271,7 +272,7 @@ simde_vst4_u8(uint8_t *ptr, simde_uint8x8x4_t val) {
#else #else
simde_uint8x8_private a_[4] = { simde_uint8x8_to_private(val.val[0]), simde_uint8x8_to_private(val.val[1]), simde_uint8x8_private a_[4] = { simde_uint8x8_to_private(val.val[0]), simde_uint8x8_to_private(val.val[1]),
simde_uint8x8_to_private(val.val[2]), simde_uint8x8_to_private(val.val[3]) }; simde_uint8x8_to_private(val.val[2]), simde_uint8x8_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint8m1x4_t dest = __riscv_vlseg4e8_v_u8m1x4(ptr, 8); vuint8m1x4_t dest = __riscv_vlseg4e8_v_u8m1x4(ptr, 8);
dest = __riscv_vset_v_u8m1_u8m1x4 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_u8m1_u8m1x4 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_u8m1_u8m1x4 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_u8m1_u8m1x4 (dest, 1, a_[1].sv64);
...@@ -300,7 +301,7 @@ simde_vst4_u16(uint16_t *ptr, simde_uint16x4x4_t val) { ...@@ -300,7 +301,7 @@ simde_vst4_u16(uint16_t *ptr, simde_uint16x4x4_t val) {
#else #else
simde_uint16x4_private a_[4] = { simde_uint16x4_to_private(val.val[0]), simde_uint16x4_to_private(val.val[1]), simde_uint16x4_private a_[4] = { simde_uint16x4_to_private(val.val[0]), simde_uint16x4_to_private(val.val[1]),
simde_uint16x4_to_private(val.val[2]), simde_uint16x4_to_private(val.val[3]) }; simde_uint16x4_to_private(val.val[2]), simde_uint16x4_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint16m1x4_t dest = __riscv_vlseg4e16_v_u16m1x4(ptr, 4); vuint16m1x4_t dest = __riscv_vlseg4e16_v_u16m1x4(ptr, 4);
dest = __riscv_vset_v_u16m1_u16m1x4 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_u16m1_u16m1x4 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_u16m1_u16m1x4 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_u16m1_u16m1x4 (dest, 1, a_[1].sv64);
...@@ -329,7 +330,7 @@ simde_vst4_u32(uint32_t *ptr, simde_uint32x2x4_t val) { ...@@ -329,7 +330,7 @@ simde_vst4_u32(uint32_t *ptr, simde_uint32x2x4_t val) {
#else #else
simde_uint32x2_private a_[4] = { simde_uint32x2_to_private(val.val[0]), simde_uint32x2_to_private(val.val[1]), simde_uint32x2_private a_[4] = { simde_uint32x2_to_private(val.val[0]), simde_uint32x2_to_private(val.val[1]),
simde_uint32x2_to_private(val.val[2]), simde_uint32x2_to_private(val.val[3]) }; simde_uint32x2_to_private(val.val[2]), simde_uint32x2_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint32m1x4_t dest = __riscv_vlseg4e32_v_u32m1x4(ptr, 2); vuint32m1x4_t dest = __riscv_vlseg4e32_v_u32m1x4(ptr, 2);
dest = __riscv_vset_v_u32m1_u32m1x4 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_u32m1_u32m1x4 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_u32m1_u32m1x4 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_u32m1_u32m1x4 (dest, 1, a_[1].sv64);
...@@ -358,7 +359,7 @@ simde_vst4_u64(uint64_t *ptr, simde_uint64x1x4_t val) { ...@@ -358,7 +359,7 @@ simde_vst4_u64(uint64_t *ptr, simde_uint64x1x4_t val) {
#else #else
simde_uint64x1_private a_[4] = { simde_uint64x1_to_private(val.val[0]), simde_uint64x1_to_private(val.val[1]), simde_uint64x1_private a_[4] = { simde_uint64x1_to_private(val.val[0]), simde_uint64x1_to_private(val.val[1]),
simde_uint64x1_to_private(val.val[2]), simde_uint64x1_to_private(val.val[3]) }; simde_uint64x1_to_private(val.val[2]), simde_uint64x1_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint64m1x4_t dest = __riscv_vlseg4e64_v_u64m1x4(ptr, 1); vuint64m1x4_t dest = __riscv_vlseg4e64_v_u64m1x4(ptr, 1);
dest = __riscv_vset_v_u64m1_u64m1x4 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_u64m1_u64m1x4 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_u64m1_u64m1x4 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_u64m1_u64m1x4 (dest, 1, a_[1].sv64);
...@@ -387,7 +388,8 @@ simde_vst4q_f16(simde_float16_t *ptr, simde_float16x8x4_t val) { ...@@ -387,7 +388,8 @@ simde_vst4q_f16(simde_float16_t *ptr, simde_float16x8x4_t val) {
#else #else
simde_float16x8_private a_[4] = { simde_float16x8_to_private(val.val[0]), simde_float16x8_to_private(val.val[1]), simde_float16x8_private a_[4] = { simde_float16x8_to_private(val.val[0]), simde_float16x8_to_private(val.val[1]),
simde_float16x8_to_private(val.val[2]), simde_float16x8_to_private(val.val[3]) }; simde_float16x8_to_private(val.val[2]), simde_float16x8_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) && SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG) \
&& SIMDE_ARCH_RISCV_ZVFH && (SIMDE_NATURAL_VECTOR_SIZE >= 128)
vfloat16m1x4_t dest = __riscv_vlseg4e16_v_f16m1x4((_Float16 *)ptr, 8); vfloat16m1x4_t dest = __riscv_vlseg4e16_v_f16m1x4((_Float16 *)ptr, 8);
dest = __riscv_vset_v_f16m1_f16m1x4 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_f16m1_f16m1x4 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_f16m1_f16m1x4 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_f16m1_f16m1x4 (dest, 1, a_[1].sv128);
...@@ -417,7 +419,7 @@ simde_vst4q_f32(simde_float32_t *ptr, simde_float32x4x4_t val) { ...@@ -417,7 +419,7 @@ simde_vst4q_f32(simde_float32_t *ptr, simde_float32x4x4_t val) {
#else #else
simde_float32x4_private a_[4] = { simde_float32x4_to_private(val.val[0]), simde_float32x4_to_private(val.val[1]), simde_float32x4_private a_[4] = { simde_float32x4_to_private(val.val[0]), simde_float32x4_to_private(val.val[1]),
simde_float32x4_to_private(val.val[2]), simde_float32x4_to_private(val.val[3]) }; simde_float32x4_to_private(val.val[2]), simde_float32x4_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vfloat32m1x4_t dest = __riscv_vlseg4e32_v_f32m1x4(ptr, 4); vfloat32m1x4_t dest = __riscv_vlseg4e32_v_f32m1x4(ptr, 4);
dest = __riscv_vset_v_f32m1_f32m1x4 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_f32m1_f32m1x4 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_f32m1_f32m1x4 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_f32m1_f32m1x4 (dest, 1, a_[1].sv128);
...@@ -446,7 +448,7 @@ simde_vst4q_f64(simde_float64_t *ptr, simde_float64x2x4_t val) { ...@@ -446,7 +448,7 @@ simde_vst4q_f64(simde_float64_t *ptr, simde_float64x2x4_t val) {
#else #else
simde_float64x2_private a_[4] = { simde_float64x2_to_private(val.val[0]), simde_float64x2_to_private(val.val[1]), simde_float64x2_private a_[4] = { simde_float64x2_to_private(val.val[0]), simde_float64x2_to_private(val.val[1]),
simde_float64x2_to_private(val.val[2]), simde_float64x2_to_private(val.val[3]) }; simde_float64x2_to_private(val.val[2]), simde_float64x2_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vfloat64m1x4_t dest = __riscv_vlseg4e64_v_f64m1x4(ptr, 2); vfloat64m1x4_t dest = __riscv_vlseg4e64_v_f64m1x4(ptr, 2);
dest = __riscv_vset_v_f64m1_f64m1x4 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_f64m1_f64m1x4 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_f64m1_f64m1x4 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_f64m1_f64m1x4 (dest, 1, a_[1].sv128);
...@@ -475,7 +477,7 @@ simde_vst4q_s8(int8_t *ptr, simde_int8x16x4_t val) { ...@@ -475,7 +477,7 @@ simde_vst4q_s8(int8_t *ptr, simde_int8x16x4_t val) {
#else #else
simde_int8x16_private a_[4] = { simde_int8x16_to_private(val.val[0]), simde_int8x16_to_private(val.val[1]), simde_int8x16_private a_[4] = { simde_int8x16_to_private(val.val[0]), simde_int8x16_to_private(val.val[1]),
simde_int8x16_to_private(val.val[2]), simde_int8x16_to_private(val.val[3]) }; simde_int8x16_to_private(val.val[2]), simde_int8x16_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint8m1x4_t dest = __riscv_vlseg4e8_v_i8m1x4(ptr, 16); vint8m1x4_t dest = __riscv_vlseg4e8_v_i8m1x4(ptr, 16);
dest = __riscv_vset_v_i8m1_i8m1x4 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_i8m1_i8m1x4 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_i8m1_i8m1x4 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_i8m1_i8m1x4 (dest, 1, a_[1].sv128);
...@@ -504,7 +506,7 @@ simde_vst4q_s16(int16_t *ptr, simde_int16x8x4_t val) { ...@@ -504,7 +506,7 @@ simde_vst4q_s16(int16_t *ptr, simde_int16x8x4_t val) {
#else #else
simde_int16x8_private a_[4] = { simde_int16x8_to_private(val.val[0]), simde_int16x8_to_private(val.val[1]), simde_int16x8_private a_[4] = { simde_int16x8_to_private(val.val[0]), simde_int16x8_to_private(val.val[1]),
simde_int16x8_to_private(val.val[2]), simde_int16x8_to_private(val.val[3]) }; simde_int16x8_to_private(val.val[2]), simde_int16x8_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint16m1x4_t dest = __riscv_vlseg4e16_v_i16m1x4(ptr, 8); vint16m1x4_t dest = __riscv_vlseg4e16_v_i16m1x4(ptr, 8);
dest = __riscv_vset_v_i16m1_i16m1x4 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_i16m1_i16m1x4 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_i16m1_i16m1x4 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_i16m1_i16m1x4 (dest, 1, a_[1].sv128);
...@@ -533,7 +535,7 @@ simde_vst4q_s32(int32_t *ptr, simde_int32x4x4_t val) { ...@@ -533,7 +535,7 @@ simde_vst4q_s32(int32_t *ptr, simde_int32x4x4_t val) {
#else #else
simde_int32x4_private a_[4] = { simde_int32x4_to_private(val.val[0]), simde_int32x4_to_private(val.val[1]), simde_int32x4_private a_[4] = { simde_int32x4_to_private(val.val[0]), simde_int32x4_to_private(val.val[1]),
simde_int32x4_to_private(val.val[2]), simde_int32x4_to_private(val.val[3]) }; simde_int32x4_to_private(val.val[2]), simde_int32x4_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint32m1x4_t dest = __riscv_vlseg4e32_v_i32m1x4(ptr, 4); vint32m1x4_t dest = __riscv_vlseg4e32_v_i32m1x4(ptr, 4);
dest = __riscv_vset_v_i32m1_i32m1x4 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_i32m1_i32m1x4 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_i32m1_i32m1x4 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_i32m1_i32m1x4 (dest, 1, a_[1].sv128);
...@@ -562,7 +564,7 @@ simde_vst4q_s64(int64_t *ptr, simde_int64x2x4_t val) { ...@@ -562,7 +564,7 @@ simde_vst4q_s64(int64_t *ptr, simde_int64x2x4_t val) {
#else #else
simde_int64x2_private a_[4] = { simde_int64x2_to_private(val.val[0]), simde_int64x2_to_private(val.val[1]), simde_int64x2_private a_[4] = { simde_int64x2_to_private(val.val[0]), simde_int64x2_to_private(val.val[1]),
simde_int64x2_to_private(val.val[2]), simde_int64x2_to_private(val.val[3]) }; simde_int64x2_to_private(val.val[2]), simde_int64x2_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vint64m1x4_t dest = __riscv_vlseg4e64_v_i64m1x4(ptr, 2); vint64m1x4_t dest = __riscv_vlseg4e64_v_i64m1x4(ptr, 2);
dest = __riscv_vset_v_i64m1_i64m1x4 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_i64m1_i64m1x4 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_i64m1_i64m1x4 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_i64m1_i64m1x4 (dest, 1, a_[1].sv128);
...@@ -592,7 +594,7 @@ simde_vst4q_u8(uint8_t *ptr, simde_uint8x16x4_t val) { ...@@ -592,7 +594,7 @@ simde_vst4q_u8(uint8_t *ptr, simde_uint8x16x4_t val) {
#else #else
simde_uint8x16_private a_[4] = { simde_uint8x16_to_private(val.val[0]), simde_uint8x16_to_private(val.val[1]), simde_uint8x16_private a_[4] = { simde_uint8x16_to_private(val.val[0]), simde_uint8x16_to_private(val.val[1]),
simde_uint8x16_to_private(val.val[2]), simde_uint8x16_to_private(val.val[3]) }; simde_uint8x16_to_private(val.val[2]), simde_uint8x16_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint8m1x4_t dest = __riscv_vlseg4e8_v_u8m1x4(ptr, 16); vuint8m1x4_t dest = __riscv_vlseg4e8_v_u8m1x4(ptr, 16);
dest = __riscv_vset_v_u8m1_u8m1x4 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_u8m1_u8m1x4 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_u8m1_u8m1x4 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_u8m1_u8m1x4 (dest, 1, a_[1].sv128);
...@@ -621,7 +623,7 @@ simde_vst4q_u16(uint16_t *ptr, simde_uint16x8x4_t val) { ...@@ -621,7 +623,7 @@ simde_vst4q_u16(uint16_t *ptr, simde_uint16x8x4_t val) {
#else #else
simde_uint16x8_private a_[4] = { simde_uint16x8_to_private(val.val[0]), simde_uint16x8_to_private(val.val[1]), simde_uint16x8_private a_[4] = { simde_uint16x8_to_private(val.val[0]), simde_uint16x8_to_private(val.val[1]),
simde_uint16x8_to_private(val.val[2]), simde_uint16x8_to_private(val.val[3]) }; simde_uint16x8_to_private(val.val[2]), simde_uint16x8_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint16m1x4_t dest = __riscv_vlseg4e16_v_u16m1x4(ptr, 8); vuint16m1x4_t dest = __riscv_vlseg4e16_v_u16m1x4(ptr, 8);
dest = __riscv_vset_v_u16m1_u16m1x4 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_u16m1_u16m1x4 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_u16m1_u16m1x4 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_u16m1_u16m1x4 (dest, 1, a_[1].sv128);
...@@ -650,7 +652,7 @@ simde_vst4q_u32(uint32_t *ptr, simde_uint32x4x4_t val) { ...@@ -650,7 +652,7 @@ simde_vst4q_u32(uint32_t *ptr, simde_uint32x4x4_t val) {
#else #else
simde_uint32x4_private a_[4] = { simde_uint32x4_to_private(val.val[0]), simde_uint32x4_to_private(val.val[1]), simde_uint32x4_private a_[4] = { simde_uint32x4_to_private(val.val[0]), simde_uint32x4_to_private(val.val[1]),
simde_uint32x4_to_private(val.val[2]), simde_uint32x4_to_private(val.val[3]) }; simde_uint32x4_to_private(val.val[2]), simde_uint32x4_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint32m1x4_t dest = __riscv_vlseg4e32_v_u32m1x4(ptr, 4); vuint32m1x4_t dest = __riscv_vlseg4e32_v_u32m1x4(ptr, 4);
dest = __riscv_vset_v_u32m1_u32m1x4 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_u32m1_u32m1x4 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_u32m1_u32m1x4 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_u32m1_u32m1x4 (dest, 1, a_[1].sv128);
...@@ -679,7 +681,7 @@ simde_vst4q_u64(uint64_t *ptr, simde_uint64x2x4_t val) { ...@@ -679,7 +681,7 @@ simde_vst4q_u64(uint64_t *ptr, simde_uint64x2x4_t val) {
#else #else
simde_uint64x2_private a_[4] = { simde_uint64x2_to_private(val.val[0]), simde_uint64x2_to_private(val.val[1]), simde_uint64x2_private a_[4] = { simde_uint64x2_to_private(val.val[0]), simde_uint64x2_to_private(val.val[1]),
simde_uint64x2_to_private(val.val[2]), simde_uint64x2_to_private(val.val[3]) }; simde_uint64x2_to_private(val.val[2]), simde_uint64x2_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint64m1x4_t dest = __riscv_vlseg4e64_v_u64m1x4(ptr, 2); vuint64m1x4_t dest = __riscv_vlseg4e64_v_u64m1x4(ptr, 2);
dest = __riscv_vset_v_u64m1_u64m1x4 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_u64m1_u64m1x4 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_u64m1_u64m1x4 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_u64m1_u64m1x4 (dest, 1, a_[1].sv128);
...@@ -708,7 +710,7 @@ simde_vst4_p8(simde_poly8_t *ptr, simde_poly8x8x4_t val) { ...@@ -708,7 +710,7 @@ simde_vst4_p8(simde_poly8_t *ptr, simde_poly8x8x4_t val) {
#else #else
simde_poly8x8_private a_[4] = { simde_poly8x8_to_private(val.val[0]), simde_poly8x8_to_private(val.val[1]), simde_poly8x8_private a_[4] = { simde_poly8x8_to_private(val.val[0]), simde_poly8x8_to_private(val.val[1]),
simde_poly8x8_to_private(val.val[2]), simde_poly8x8_to_private(val.val[3]) }; simde_poly8x8_to_private(val.val[2]), simde_poly8x8_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint8m1x4_t dest = __riscv_vlseg4e8_v_u8m1x4(ptr, 8); vuint8m1x4_t dest = __riscv_vlseg4e8_v_u8m1x4(ptr, 8);
dest = __riscv_vset_v_u8m1_u8m1x4 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_u8m1_u8m1x4 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_u8m1_u8m1x4 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_u8m1_u8m1x4 (dest, 1, a_[1].sv64);
...@@ -737,7 +739,7 @@ simde_vst4_p16(simde_poly16_t *ptr, simde_poly16x4x4_t val) { ...@@ -737,7 +739,7 @@ simde_vst4_p16(simde_poly16_t *ptr, simde_poly16x4x4_t val) {
#else #else
simde_poly16x4_private a_[4] = { simde_poly16x4_to_private(val.val[0]), simde_poly16x4_to_private(val.val[1]), simde_poly16x4_private a_[4] = { simde_poly16x4_to_private(val.val[0]), simde_poly16x4_to_private(val.val[1]),
simde_poly16x4_to_private(val.val[2]), simde_poly16x4_to_private(val.val[3]) }; simde_poly16x4_to_private(val.val[2]), simde_poly16x4_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint16m1x4_t dest = __riscv_vlseg4e16_v_u16m1x4(ptr, 4); vuint16m1x4_t dest = __riscv_vlseg4e16_v_u16m1x4(ptr, 4);
dest = __riscv_vset_v_u16m1_u16m1x4 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_u16m1_u16m1x4 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_u16m1_u16m1x4 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_u16m1_u16m1x4 (dest, 1, a_[1].sv64);
...@@ -766,7 +768,7 @@ simde_vst4_p64(simde_poly64_t *ptr, simde_poly64x1x4_t val) { ...@@ -766,7 +768,7 @@ simde_vst4_p64(simde_poly64_t *ptr, simde_poly64x1x4_t val) {
#else #else
simde_poly64x1_private a_[4] = { simde_poly64x1_to_private(val.val[0]), simde_poly64x1_to_private(val.val[1]), simde_poly64x1_private a_[4] = { simde_poly64x1_to_private(val.val[0]), simde_poly64x1_to_private(val.val[1]),
simde_poly64x1_to_private(val.val[2]), simde_poly64x1_to_private(val.val[3]) }; simde_poly64x1_to_private(val.val[2]), simde_poly64x1_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint64m1x4_t dest = __riscv_vlseg4e64_v_u64m1x4(ptr, 1); vuint64m1x4_t dest = __riscv_vlseg4e64_v_u64m1x4(ptr, 1);
dest = __riscv_vset_v_u64m1_u64m1x4 (dest, 0, a_[0].sv64); dest = __riscv_vset_v_u64m1_u64m1x4 (dest, 0, a_[0].sv64);
dest = __riscv_vset_v_u64m1_u64m1x4 (dest, 1, a_[1].sv64); dest = __riscv_vset_v_u64m1_u64m1x4 (dest, 1, a_[1].sv64);
...@@ -795,7 +797,7 @@ simde_vst4q_p8(simde_poly8_t *ptr, simde_poly8x16x4_t val) { ...@@ -795,7 +797,7 @@ simde_vst4q_p8(simde_poly8_t *ptr, simde_poly8x16x4_t val) {
#else #else
simde_poly8x16_private a_[4] = { simde_poly8x16_to_private(val.val[0]), simde_poly8x16_to_private(val.val[1]), simde_poly8x16_private a_[4] = { simde_poly8x16_to_private(val.val[0]), simde_poly8x16_to_private(val.val[1]),
simde_poly8x16_to_private(val.val[2]), simde_poly8x16_to_private(val.val[3]) }; simde_poly8x16_to_private(val.val[2]), simde_poly8x16_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint8m1x4_t dest = __riscv_vlseg4e8_v_u8m1x4(ptr, 16); vuint8m1x4_t dest = __riscv_vlseg4e8_v_u8m1x4(ptr, 16);
dest = __riscv_vset_v_u8m1_u8m1x4 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_u8m1_u8m1x4 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_u8m1_u8m1x4 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_u8m1_u8m1x4 (dest, 1, a_[1].sv128);
...@@ -824,7 +826,7 @@ simde_vst4q_p16(simde_poly16_t *ptr, simde_poly16x8x4_t val) { ...@@ -824,7 +826,7 @@ simde_vst4q_p16(simde_poly16_t *ptr, simde_poly16x8x4_t val) {
#else #else
simde_poly16x8_private a_[4] = { simde_poly16x8_to_private(val.val[0]), simde_poly16x8_to_private(val.val[1]), simde_poly16x8_private a_[4] = { simde_poly16x8_to_private(val.val[0]), simde_poly16x8_to_private(val.val[1]),
simde_poly16x8_to_private(val.val[2]), simde_poly16x8_to_private(val.val[3]) }; simde_poly16x8_to_private(val.val[2]), simde_poly16x8_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint16m1x4_t dest = __riscv_vlseg4e16_v_u16m1x4(ptr, 8); vuint16m1x4_t dest = __riscv_vlseg4e16_v_u16m1x4(ptr, 8);
dest = __riscv_vset_v_u16m1_u16m1x4 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_u16m1_u16m1x4 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_u16m1_u16m1x4 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_u16m1_u16m1x4 (dest, 1, a_[1].sv128);
...@@ -853,7 +855,7 @@ simde_vst4q_p64(simde_poly64_t *ptr, simde_poly64x2x4_t val) { ...@@ -853,7 +855,7 @@ simde_vst4q_p64(simde_poly64_t *ptr, simde_poly64x2x4_t val) {
#else #else
simde_poly64x2_private a_[4] = { simde_poly64x2_to_private(val.val[0]), simde_poly64x2_to_private(val.val[1]), simde_poly64x2_private a_[4] = { simde_poly64x2_to_private(val.val[0]), simde_poly64x2_to_private(val.val[1]),
simde_poly64x2_to_private(val.val[2]), simde_poly64x2_to_private(val.val[3]) }; simde_poly64x2_to_private(val.val[2]), simde_poly64x2_to_private(val.val[3]) };
#if defined(SIMDE_RISCV_V_NATIVE) #if defined(SIMDE_RISCV_V_NATIVE) && defined(SIMDE_ARCH_RISCV_ZVLSSEG)
vuint64m1x4_t dest = __riscv_vlseg4e64_v_u64m1x4(ptr, 2); vuint64m1x4_t dest = __riscv_vlseg4e64_v_u64m1x4(ptr, 2);
dest = __riscv_vset_v_u64m1_u64m1x4 (dest, 0, a_[0].sv128); dest = __riscv_vset_v_u64m1_u64m1x4 (dest, 0, a_[0].sv128);
dest = __riscv_vset_v_u64m1_u64m1x4 (dest, 1, a_[1].sv128); dest = __riscv_vset_v_u64m1_u64m1x4 (dest, 1, a_[1].sv128);
......
...@@ -550,6 +550,9 @@ ...@@ -550,6 +550,9 @@
#if defined(__riscv_zvfhmin) #if defined(__riscv_zvfhmin)
# define SIMDE_ARCH_RISCV_ZVFHMIN 1 # define SIMDE_ARCH_RISCV_ZVFHMIN 1
#endif #endif
#if defined(__riscv_zvlsseg) || defined(__riscv_v)
# define SIMDE_ARCH_RISCV_ZVLSSEG 1
#endif
/* SPARC /* SPARC
<https://en.wikipedia.org/wiki/SPARC> */ <https://en.wikipedia.org/wiki/SPARC> */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment