agora inbox for [email protected]
help / color / mirror / Atom feed[PATCH v2a 4/4] Extra tests
68+ messages / 4 participants
[nested] [flat]
* [PATCH v2a 4/4] Extra tests
@ 2025-09-04 16:28 Nikolay Shaplov <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nikolay Shaplov @ 2025-09-04 16:28 UTC (permalink / raw)
Add more tests for ternary reloptions in dummy_index_am module
---
src/test/modules/dummy_index_am/README | 1 +
.../modules/dummy_index_am/dummy_index_am.c | 36 +++++++++++++-----
.../dummy_index_am/expected/reloptions.out | 38 +++++++++++++++++--
.../modules/dummy_index_am/sql/reloptions.sql | 16 ++++++++
src/test/regress/expected/reloptions.out | 4 +-
src/test/regress/sql/reloptions.sql | 4 +-
6 files changed, 81 insertions(+), 18 deletions(-)
diff --git a/src/test/modules/dummy_index_am/README b/src/test/modules/dummy_index_am/README
index 61510f02fa..d80aff0db1 100644
--- a/src/test/modules/dummy_index_am/README
+++ b/src/test/modules/dummy_index_am/README
@@ -6,6 +6,7 @@ access method, whose code is kept a maximum simple.
This includes tests for all relation option types:
- boolean
+- ternary
- enum
- integer
- real
diff --git a/src/test/modules/dummy_index_am/dummy_index_am.c b/src/test/modules/dummy_index_am/dummy_index_am.c
index 94ef639b6f..bf8446ddc6 100644
--- a/src/test/modules/dummy_index_am/dummy_index_am.c
+++ b/src/test/modules/dummy_index_am/dummy_index_am.c
@@ -22,7 +22,7 @@
PG_MODULE_MAGIC;
/* parse table for fillRelOptions */
-static relopt_parse_elt di_relopt_tab[6];
+static relopt_parse_elt di_relopt_tab[8];
/* Kind of relation options for dummy index */
static relopt_kind di_relopt_kind;
@@ -40,6 +40,8 @@ typedef struct DummyIndexOptions
int option_int;
double option_real;
bool option_bool;
+ ternary option_ternary1;
+ ternary option_ternary2;
DummyAmEnum option_enum;
int option_string_val_offset;
int option_string_null_offset;
@@ -96,23 +98,37 @@ create_reloptions_table(void)
di_relopt_tab[2].opttype = RELOPT_TYPE_BOOL;
di_relopt_tab[2].offset = offsetof(DummyIndexOptions, option_bool);
+ add_ternary_reloption(di_relopt_kind, "option_ternary1",
+ "First ternary option for dummy_index_am",
+ TERNARY_UNSET, NULL, AccessExclusiveLock);
+ di_relopt_tab[3].optname = "option_ternary1";
+ di_relopt_tab[3].opttype = RELOPT_TYPE_TERNARY;
+ di_relopt_tab[3].offset = offsetof(DummyIndexOptions, option_ternary1);
+
+ add_ternary_reloption(di_relopt_kind, "option_ternary2",
+ "Second ternary option for dummy_index_am",
+ TERNARY_TRUE, "do_not_know_yet", AccessExclusiveLock);
+ di_relopt_tab[4].optname = "option_ternary2";
+ di_relopt_tab[4].opttype = RELOPT_TYPE_TERNARY;
+ di_relopt_tab[4].offset = offsetof(DummyIndexOptions, option_ternary2);
+
add_enum_reloption(di_relopt_kind, "option_enum",
"Enum option for dummy_index_am",
dummyAmEnumValues,
DUMMY_AM_ENUM_ONE,
"Valid values are \"one\" and \"two\".",
AccessExclusiveLock);
- di_relopt_tab[3].optname = "option_enum";
- di_relopt_tab[3].opttype = RELOPT_TYPE_ENUM;
- di_relopt_tab[3].offset = offsetof(DummyIndexOptions, option_enum);
+ di_relopt_tab[5].optname = "option_enum";
+ di_relopt_tab[5].opttype = RELOPT_TYPE_ENUM;
+ di_relopt_tab[5].offset = offsetof(DummyIndexOptions, option_enum);
add_string_reloption(di_relopt_kind, "option_string_val",
"String option for dummy_index_am with non-NULL default",
"DefaultValue", &validate_string_option,
AccessExclusiveLock);
- di_relopt_tab[4].optname = "option_string_val";
- di_relopt_tab[4].opttype = RELOPT_TYPE_STRING;
- di_relopt_tab[4].offset = offsetof(DummyIndexOptions,
+ di_relopt_tab[6].optname = "option_string_val";
+ di_relopt_tab[6].opttype = RELOPT_TYPE_STRING;
+ di_relopt_tab[6].offset = offsetof(DummyIndexOptions,
option_string_val_offset);
/*
@@ -123,9 +139,9 @@ create_reloptions_table(void)
NULL, /* description */
NULL, &validate_string_option,
AccessExclusiveLock);
- di_relopt_tab[5].optname = "option_string_null";
- di_relopt_tab[5].opttype = RELOPT_TYPE_STRING;
- di_relopt_tab[5].offset = offsetof(DummyIndexOptions,
+ di_relopt_tab[7].optname = "option_string_null";
+ di_relopt_tab[7].opttype = RELOPT_TYPE_STRING;
+ di_relopt_tab[7].offset = offsetof(DummyIndexOptions,
option_string_null_offset);
}
diff --git a/src/test/modules/dummy_index_am/expected/reloptions.out b/src/test/modules/dummy_index_am/expected/reloptions.out
index c873a80bb7..ad1b2ea639 100644
--- a/src/test/modules/dummy_index_am/expected/reloptions.out
+++ b/src/test/modules/dummy_index_am/expected/reloptions.out
@@ -18,6 +18,8 @@ SET client_min_messages TO 'notice';
CREATE INDEX dummy_test_idx ON dummy_test_tab
USING dummy_index_am (i) WITH (
option_bool = false,
+ option_ternary1,
+ option_ternary2 = off,
option_int = 5,
option_real = 3.1,
option_enum = 'two',
@@ -31,16 +33,20 @@ SELECT unnest(reloptions) FROM pg_class WHERE relname = 'dummy_test_idx';
unnest
------------------------
option_bool=false
+ option_ternary1=true
+ option_ternary2=off
option_int=5
option_real=3.1
option_enum=two
option_string_val=null
option_string_null=val
-(6 rows)
+(8 rows)
-- ALTER INDEX .. SET
ALTER INDEX dummy_test_idx SET (option_int = 10);
ALTER INDEX dummy_test_idx SET (option_bool = true);
+ALTER INDEX dummy_test_idx SET (option_ternary1 = false);
+ALTER INDEX dummy_test_idx SET (option_ternary2 = Do_Not_Know_YET);
ALTER INDEX dummy_test_idx SET (option_real = 3.2);
ALTER INDEX dummy_test_idx SET (option_string_val = 'val2');
ALTER INDEX dummy_test_idx SET (option_string_null = NULL);
@@ -49,19 +55,23 @@ ALTER INDEX dummy_test_idx SET (option_enum = 'three');
ERROR: invalid value for enum option "option_enum": three
DETAIL: Valid values are "one" and "two".
SELECT unnest(reloptions) FROM pg_class WHERE relname = 'dummy_test_idx';
- unnest
--------------------------
+ unnest
+---------------------------------
option_int=10
option_bool=true
+ option_ternary1=false
+ option_ternary2=do_not_know_yet
option_real=3.2
option_string_val=val2
option_string_null=null
option_enum=one
-(6 rows)
+(8 rows)
-- ALTER INDEX .. RESET
ALTER INDEX dummy_test_idx RESET (option_int);
ALTER INDEX dummy_test_idx RESET (option_bool);
+ALTER INDEX dummy_test_idx RESET (option_ternary1);
+ALTER INDEX dummy_test_idx RESET (option_ternary2);
ALTER INDEX dummy_test_idx RESET (option_real);
ALTER INDEX dummy_test_idx RESET (option_enum);
ALTER INDEX dummy_test_idx RESET (option_string_val);
@@ -100,6 +110,26 @@ SELECT unnest(reloptions) FROM pg_class WHERE relname = 'dummy_test_idx';
(1 row)
ALTER INDEX dummy_test_idx RESET (option_bool);
+-- Ternary
+ALTER INDEX dummy_test_idx SET (option_ternary1 = 4); -- error
+ERROR: invalid value for ternary option "option_ternary1": 4
+ALTER INDEX dummy_test_idx SET (option_ternary1 = 1); -- ok, as true
+ALTER INDEX dummy_test_idx SET (option_ternary1 = 3.4); -- error
+ERROR: invalid value for ternary option "option_ternary1": 3.4
+ALTER INDEX dummy_test_idx SET (option_ternary1 = 'val4'); -- error
+ERROR: invalid value for ternary option "option_ternary1": val4
+ALTER INDEX dummy_test_idx SET (option_ternary1 = 'do_not_know_yet'); -- error. Valid for ternary2 not for ternary1
+ERROR: invalid value for ternary option "option_ternary1": do_not_know_yet
+ALTER INDEX dummy_test_idx SET (option_ternary2 = 'do_not_know_yet'); -- ok
+SELECT unnest(reloptions) FROM pg_class WHERE relname = 'dummy_test_idx';
+ unnest
+---------------------------------
+ option_ternary1=1
+ option_ternary2=do_not_know_yet
+(2 rows)
+
+ALTER INDEX dummy_test_idx RESET (option_ternary1);
+ALTER INDEX dummy_test_idx RESET (option_ternary2);
-- Float
ALTER INDEX dummy_test_idx SET (option_real = 4); -- ok
ALTER INDEX dummy_test_idx SET (option_real = true); -- error
diff --git a/src/test/modules/dummy_index_am/sql/reloptions.sql b/src/test/modules/dummy_index_am/sql/reloptions.sql
index 6749d763e6..123540905a 100644
--- a/src/test/modules/dummy_index_am/sql/reloptions.sql
+++ b/src/test/modules/dummy_index_am/sql/reloptions.sql
@@ -18,6 +18,8 @@ SET client_min_messages TO 'notice';
CREATE INDEX dummy_test_idx ON dummy_test_tab
USING dummy_index_am (i) WITH (
option_bool = false,
+ option_ternary1,
+ option_ternary2 = off,
option_int = 5,
option_real = 3.1,
option_enum = 'two',
@@ -30,6 +32,8 @@ SELECT unnest(reloptions) FROM pg_class WHERE relname = 'dummy_test_idx';
-- ALTER INDEX .. SET
ALTER INDEX dummy_test_idx SET (option_int = 10);
ALTER INDEX dummy_test_idx SET (option_bool = true);
+ALTER INDEX dummy_test_idx SET (option_ternary1 = false);
+ALTER INDEX dummy_test_idx SET (option_ternary2 = Do_Not_Know_YET);
ALTER INDEX dummy_test_idx SET (option_real = 3.2);
ALTER INDEX dummy_test_idx SET (option_string_val = 'val2');
ALTER INDEX dummy_test_idx SET (option_string_null = NULL);
@@ -40,6 +44,8 @@ SELECT unnest(reloptions) FROM pg_class WHERE relname = 'dummy_test_idx';
-- ALTER INDEX .. RESET
ALTER INDEX dummy_test_idx RESET (option_int);
ALTER INDEX dummy_test_idx RESET (option_bool);
+ALTER INDEX dummy_test_idx RESET (option_ternary1);
+ALTER INDEX dummy_test_idx RESET (option_ternary2);
ALTER INDEX dummy_test_idx RESET (option_real);
ALTER INDEX dummy_test_idx RESET (option_enum);
ALTER INDEX dummy_test_idx RESET (option_string_val);
@@ -60,6 +66,16 @@ ALTER INDEX dummy_test_idx SET (option_bool = 3.4); -- error
ALTER INDEX dummy_test_idx SET (option_bool = 'val4'); -- error
SELECT unnest(reloptions) FROM pg_class WHERE relname = 'dummy_test_idx';
ALTER INDEX dummy_test_idx RESET (option_bool);
+-- Ternary
+ALTER INDEX dummy_test_idx SET (option_ternary1 = 4); -- error
+ALTER INDEX dummy_test_idx SET (option_ternary1 = 1); -- ok, as true
+ALTER INDEX dummy_test_idx SET (option_ternary1 = 3.4); -- error
+ALTER INDEX dummy_test_idx SET (option_ternary1 = 'val4'); -- error
+ALTER INDEX dummy_test_idx SET (option_ternary1 = 'do_not_know_yet'); -- error. Valid for ternary2 not for ternary1
+ALTER INDEX dummy_test_idx SET (option_ternary2 = 'do_not_know_yet'); -- ok
+SELECT unnest(reloptions) FROM pg_class WHERE relname = 'dummy_test_idx';
+ALTER INDEX dummy_test_idx RESET (option_ternary1);
+ALTER INDEX dummy_test_idx RESET (option_ternary2);
-- Float
ALTER INDEX dummy_test_idx SET (option_real = 4); -- ok
ALTER INDEX dummy_test_idx SET (option_real = true); -- error
diff --git a/src/test/regress/expected/reloptions.out b/src/test/regress/expected/reloptions.out
index 1c99f79ab0..6e65cd5c3d 100644
--- a/src/test/regress/expected/reloptions.out
+++ b/src/test/regress/expected/reloptions.out
@@ -98,7 +98,7 @@ SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test'::regclass;
{fillfactor=13,autovacuum_enabled=false}
(1 row)
--- Tests for future (FIXME) ternary options
+-- Tests for ternary options
-- behave as boolean option: accept unassigned name and truncated value
DROP TABLE reloptions_test;
CREATE TABLE reloptions_test(i INT) WITH (vacuum_truncate);
@@ -116,7 +116,7 @@ SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test'::regclass;
{vacuum_truncate=fals}
(1 row)
--- preferred "true" alias is used when storing
+-- preferred "true" alias is stored in pg_class
DROP TABLE reloptions_test;
CREATE TABLE reloptions_test(i INT) WITH (vacuum_index_cleanup=on);
SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test'::regclass;
diff --git a/src/test/regress/sql/reloptions.sql b/src/test/regress/sql/reloptions.sql
index f5980dafcb..c99673db9e 100644
--- a/src/test/regress/sql/reloptions.sql
+++ b/src/test/regress/sql/reloptions.sql
@@ -59,7 +59,7 @@ UPDATE pg_class
ALTER TABLE reloptions_test RESET (illegal_option);
SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test'::regclass;
--- Tests for future (FIXME) ternary options
+-- Tests for ternary options
-- behave as boolean option: accept unassigned name and truncated value
DROP TABLE reloptions_test;
@@ -70,7 +70,7 @@ DROP TABLE reloptions_test;
CREATE TABLE reloptions_test(i INT) WITH (vacuum_truncate=FaLS);
SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test'::regclass;
--- preferred "true" alias is used when storing
+-- preferred "true" alias is stored in pg_class
DROP TABLE reloptions_test;
CREATE TABLE reloptions_test(i INT) WITH (vacuum_index_cleanup=on);
SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test'::regclass;
--
2.39.2
--nextPart4155600.3ZeAukHxDK--
--nextPart4961315.687JKscXgg
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part.
Content-Transfer-Encoding: 7Bit
-----BEGIN PGP SIGNATURE-----
iQEzBAABCgAdFiEE+sk3ebqQKlezKOi8PMbfuIHAGpgFAmjGgZ4ACgkQPMbfuIHA
GpgHFgf/dwjUCCKw4wFDpFssAUVnClknwo+DYhgbni6DfBlLM8bjB0CWwZsNGUEv
dGueFJY9q4+3YPon9sqb1KIqBZDtLaGj69U+K+ZtLkjOc8WV4VOmUyZuuSaZh9lw
JFM+d8RZNTemYQ5Nc82YuF+4MDiiM3480vhAr412LMRd/6P4dk+vKDL2kopodhB+
xbZYtARolC/bZaMTla68L/4X5qidfsd4zd+QZjf8JXwv1mq2MZCuHvsuMMViWp3Z
Hf7r4bj407BjEYH/UNpE70iWa65xDCHpRSOYJ6QKFxRnAEYBim6u3G7t85jnHz7O
mVGvRJLeVMgh2l6TCxG7fSJGwh/Qrg==
=Agrf
-----END PGP SIGNATURE-----
--nextPart4961315.687JKscXgg--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:30 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:30 UTC (permalink / raw)
---
src/include/port/simd.h | 29 +++--------------------------
1 file changed, 3 insertions(+), 26 deletions(-)
diff --git a/src/include/port/simd.h b/src/include/port/simd.h
index 50615aec7f4..25a26c81cce 100644
--- a/src/include/port/simd.h
+++ b/src/include/port/simd.h
@@ -548,10 +548,6 @@ vector8_pack_16(const Vector8 v1, const Vector8 v2)
/*
* Unsigned shift left of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -560,24 +556,13 @@ vector8_shift_left(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_slli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshlq_n_u32((Vector32) v1, 4);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(i));
#endif
}
#endif /* ! USE_NO_SIMD */
/*
* Unsigned shift right of each 32-bit element in the vector by "i" bits.
- *
- * XXX AArch64 requires an integer literal, so we have to list all expected
- * values of "i" from all callers in a switch statement. If you add a new
- * caller, be sure your expected values of "i" are handled.
*/
#ifndef USE_NO_SIMD
static inline Vector8
@@ -586,16 +571,8 @@ vector8_shift_right(const Vector8 v1, int i)
#ifdef USE_SSE2
return _mm_srli_epi32(v1, i);
#elif defined(USE_NEON)
- switch (i)
- {
- case 4:
- return (Vector8) vshrq_n_u32((Vector32) v1, 4);
- case 8:
- return (Vector8) vshrq_n_u32((Vector32) v1, 8);
- default:
- Assert(false);
- return vector8_broadcast(0);
- }
+ /* negative shift count means right shift */
+ return (Vector8) vshlq_u32((Vector32) v1, vdupq_n_s32(-i));
#endif
}
#endif /* ! USE_NO_SIMD */
--
2.50.1 (Apple Git-155)
--9YipY07vKHAnXga/--
^ permalink raw reply [nested|flat] 68+ messages in thread
* remove switch statement in vector8_shift_{left,right}
@ 2026-07-02 00:32 Nathan Bossart <[email protected]>
2026-07-02 05:28 ` Re: remove switch statement in vector8_shift_{left,right} John Naylor <[email protected]>
0 siblings, 1 reply; 68+ messages in thread
From: Nathan Bossart @ 2026-07-02 00:32 UTC (permalink / raw)
To: pgsql-hackers; +Cc: [email protected]
In commit ec8719ccbf, I added a switch statement with all expected shift
counts for vector8_shift_{left,right} because AArch64's vshlq_n_u32 and
vshrq_n_u32 require an integer literal. I discovered that we can use
vshlq_u32 instead for both cases, which avoids the need for the switch
statement and compiles to the same machine code on recent gcc/clang.
--
nathan
^ permalink raw reply [nested|flat] 68+ messages in thread
* Re: remove switch statement in vector8_shift_{left,right}
2026-07-02 00:32 remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
@ 2026-07-02 05:28 ` John Naylor <[email protected]>
2026-07-06 16:40 ` Re: remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
0 siblings, 1 reply; 68+ messages in thread
From: John Naylor @ 2026-07-02 05:28 UTC (permalink / raw)
To: Nathan Bossart <[email protected]>; +Cc: pgsql-hackers
On Thu, Jul 2, 2026 at 7:32 AM Nathan Bossart <[email protected]> wrote:
> In commit ec8719ccbf, I added a switch statement with all expected shift
> counts for vector8_shift_{left,right} because AArch64's vshlq_n_u32 and
> vshrq_n_u32 require an integer literal. I discovered that we can use
> vshlq_u32 instead for both cases, which avoids the need for the switch
> statement and compiles to the same machine code on recent gcc/clang.
Hmm! +1
--
John Naylor
Amazon Web Services
^ permalink raw reply [nested|flat] 68+ messages in thread
* Re: remove switch statement in vector8_shift_{left,right}
2026-07-02 00:32 remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 05:28 ` Re: remove switch statement in vector8_shift_{left,right} John Naylor <[email protected]>
@ 2026-07-06 16:40 ` Nathan Bossart <[email protected]>
0 siblings, 0 replies; 68+ messages in thread
From: Nathan Bossart @ 2026-07-06 16:40 UTC (permalink / raw)
To: John Naylor <[email protected]>; +Cc: pgsql-hackers
Committed.
--
nathan
^ permalink raw reply [nested|flat] 68+ messages in thread
end of thread, other threads:[~2026-07-06 16:40 UTC | newest]
Thread overview: 68+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2025-09-04 16:28 [PATCH v2a 4/4] Extra tests Nikolay Shaplov <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:30 [PATCH v1 1/1] remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 00:32 remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
2026-07-02 05:28 ` Re: remove switch statement in vector8_shift_{left,right} John Naylor <[email protected]>
2026-07-06 16:40 ` Re: remove switch statement in vector8_shift_{left,right} Nathan Bossart <[email protected]>
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox