Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
simde
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
simde
Commits
2015796f
Commit
2015796f
authored
Jan 06, 2021
by
Evan Nemerson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
xop: add a bunch of NEON implementations
This isn't complete, it's just to the point I got tired of working on it.
parent
214b02a5
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
450 additions
and
230 deletions
+450
-230
x86/xop.h
x86/xop.h
+450
-230
No files found.
x86/xop.h
View file @
2015796f
...
@@ -122,7 +122,9 @@ simde_mm_comeq_epi8 (simde__m128i a, simde__m128i b) {
...
@@ -122,7 +122,9 @@ simde_mm_comeq_epi8 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u8
=
vceqq_s8
(
a_
.
neon_i8
,
b_
.
neon_i8
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i8
),
a_
.
i8
==
b_
.
i8
);
r_
.
i8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i8
),
a_
.
i8
==
b_
.
i8
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -151,7 +153,9 @@ simde_mm_comeq_epi16 (simde__m128i a, simde__m128i b) {
...
@@ -151,7 +153,9 @@ simde_mm_comeq_epi16 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u16
=
vceqq_s16
(
a_
.
neon_i16
,
b_
.
neon_i16
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i16
),
a_
.
i16
==
b_
.
i16
);
r_
.
i16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i16
),
a_
.
i16
==
b_
.
i16
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -180,7 +184,9 @@ simde_mm_comeq_epi32 (simde__m128i a, simde__m128i b) {
...
@@ -180,7 +184,9 @@ simde_mm_comeq_epi32 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u32
=
vceqq_s32
(
a_
.
neon_i32
,
b_
.
neon_i32
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i32
),
a_
.
i32
==
b_
.
i32
);
r_
.
i32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i32
),
a_
.
i32
==
b_
.
i32
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -209,7 +215,9 @@ simde_mm_comeq_epi64 (simde__m128i a, simde__m128i b) {
...
@@ -209,7 +215,9 @@ simde_mm_comeq_epi64 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
r_
.
neon_u64
=
vceqq_s64
(
a_
.
neon_i64
,
b_
.
neon_i64
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i64
),
a_
.
i64
==
b_
.
i64
);
r_
.
i64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i64
),
a_
.
i64
==
b_
.
i64
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -238,7 +246,9 @@ simde_mm_comeq_epu8 (simde__m128i a, simde__m128i b) {
...
@@ -238,7 +246,9 @@ simde_mm_comeq_epu8 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u8
=
vceqq_u8
(
a_
.
neon_u8
,
b_
.
neon_u8
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u8
),
a_
.
u8
==
b_
.
u8
);
r_
.
u8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u8
),
a_
.
u8
==
b_
.
u8
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -267,7 +277,9 @@ simde_mm_comeq_epu16 (simde__m128i a, simde__m128i b) {
...
@@ -267,7 +277,9 @@ simde_mm_comeq_epu16 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u16
=
vceqq_u16
(
a_
.
neon_u16
,
b_
.
neon_u16
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u16
),
a_
.
u16
==
b_
.
u16
);
r_
.
u16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u16
),
a_
.
u16
==
b_
.
u16
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -296,7 +308,9 @@ simde_mm_comeq_epu32 (simde__m128i a, simde__m128i b) {
...
@@ -296,7 +308,9 @@ simde_mm_comeq_epu32 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u32
=
vceqq_u32
(
a_
.
neon_u32
,
b_
.
neon_u32
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u32
),
a_
.
u32
==
b_
.
u32
);
r_
.
u32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u32
),
a_
.
u32
==
b_
.
u32
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -325,7 +339,9 @@ simde_mm_comeq_epu64 (simde__m128i a, simde__m128i b) {
...
@@ -325,7 +339,9 @@ simde_mm_comeq_epu64 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
r_
.
neon_u64
=
vceqq_u64
(
a_
.
neon_u64
,
b_
.
neon_u64
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u64
),
a_
.
u64
==
b_
.
u64
);
r_
.
u64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u64
),
a_
.
u64
==
b_
.
u64
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -354,7 +370,9 @@ simde_mm_comge_epi8 (simde__m128i a, simde__m128i b) {
...
@@ -354,7 +370,9 @@ simde_mm_comge_epi8 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u8
=
vcgeq_s8
(
a_
.
neon_i8
,
b_
.
neon_i8
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i8
),
a_
.
i8
>=
b_
.
i8
);
r_
.
i8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i8
),
a_
.
i8
>=
b_
.
i8
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -383,7 +401,9 @@ simde_mm_comge_epi16 (simde__m128i a, simde__m128i b) {
...
@@ -383,7 +401,9 @@ simde_mm_comge_epi16 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u16
=
vcgeq_s16
(
a_
.
neon_i16
,
b_
.
neon_i16
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i16
),
a_
.
i16
>=
b_
.
i16
);
r_
.
i16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i16
),
a_
.
i16
>=
b_
.
i16
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -412,7 +432,9 @@ simde_mm_comge_epi32 (simde__m128i a, simde__m128i b) {
...
@@ -412,7 +432,9 @@ simde_mm_comge_epi32 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u32
=
vcgeq_s32
(
a_
.
neon_i32
,
b_
.
neon_i32
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i32
),
a_
.
i32
>=
b_
.
i32
);
r_
.
i32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i32
),
a_
.
i32
>=
b_
.
i32
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -441,7 +463,9 @@ simde_mm_comge_epi64 (simde__m128i a, simde__m128i b) {
...
@@ -441,7 +463,9 @@ simde_mm_comge_epi64 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
r_
.
neon_u64
=
vcgeq_s64
(
a_
.
neon_i64
,
b_
.
neon_i64
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i64
),
a_
.
i64
>=
b_
.
i64
);
r_
.
i64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i64
),
a_
.
i64
>=
b_
.
i64
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -470,7 +494,9 @@ simde_mm_comge_epu8 (simde__m128i a, simde__m128i b) {
...
@@ -470,7 +494,9 @@ simde_mm_comge_epu8 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u8
=
vcgeq_u8
(
a_
.
neon_u8
,
b_
.
neon_u8
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u8
),
a_
.
u8
>=
b_
.
u8
);
r_
.
u8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u8
),
a_
.
u8
>=
b_
.
u8
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -499,7 +525,9 @@ simde_mm_comge_epu16 (simde__m128i a, simde__m128i b) {
...
@@ -499,7 +525,9 @@ simde_mm_comge_epu16 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u16
=
vcgeq_u16
(
a_
.
neon_u16
,
b_
.
neon_u16
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u16
),
a_
.
u16
>=
b_
.
u16
);
r_
.
u16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u16
),
a_
.
u16
>=
b_
.
u16
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -528,7 +556,9 @@ simde_mm_comge_epu32 (simde__m128i a, simde__m128i b) {
...
@@ -528,7 +556,9 @@ simde_mm_comge_epu32 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u32
=
vcgeq_u32
(
a_
.
neon_u32
,
b_
.
neon_u32
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u32
),
a_
.
u32
>=
b_
.
u32
);
r_
.
u32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u32
),
a_
.
u32
>=
b_
.
u32
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -557,7 +587,9 @@ simde_mm_comge_epu64 (simde__m128i a, simde__m128i b) {
...
@@ -557,7 +587,9 @@ simde_mm_comge_epu64 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
r_
.
neon_u64
=
vcgeq_u64
(
a_
.
neon_u64
,
b_
.
neon_u64
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u64
),
a_
.
u64
>=
b_
.
u64
);
r_
.
u64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u64
),
a_
.
u64
>=
b_
.
u64
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -586,7 +618,9 @@ simde_mm_comgt_epi8 (simde__m128i a, simde__m128i b) {
...
@@ -586,7 +618,9 @@ simde_mm_comgt_epi8 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u8
=
vcgtq_s8
(
a_
.
neon_i8
,
b_
.
neon_i8
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i8
),
a_
.
i8
>
b_
.
i8
);
r_
.
i8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i8
),
a_
.
i8
>
b_
.
i8
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -615,7 +649,9 @@ simde_mm_comgt_epi16 (simde__m128i a, simde__m128i b) {
...
@@ -615,7 +649,9 @@ simde_mm_comgt_epi16 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u16
=
vcgtq_s16
(
a_
.
neon_i16
,
b_
.
neon_i16
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i16
),
a_
.
i16
>
b_
.
i16
);
r_
.
i16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i16
),
a_
.
i16
>
b_
.
i16
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -644,7 +680,9 @@ simde_mm_comgt_epi32 (simde__m128i a, simde__m128i b) {
...
@@ -644,7 +680,9 @@ simde_mm_comgt_epi32 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u32
=
vcgtq_s32
(
a_
.
neon_i32
,
b_
.
neon_i32
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i32
),
a_
.
i32
>
b_
.
i32
);
r_
.
i32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i32
),
a_
.
i32
>
b_
.
i32
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -673,7 +711,9 @@ simde_mm_comgt_epi64 (simde__m128i a, simde__m128i b) {
...
@@ -673,7 +711,9 @@ simde_mm_comgt_epi64 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
r_
.
neon_u64
=
vcgtq_s64
(
a_
.
neon_i64
,
b_
.
neon_i64
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i64
),
a_
.
i64
>
b_
.
i64
);
r_
.
i64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i64
),
a_
.
i64
>
b_
.
i64
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -702,7 +742,9 @@ simde_mm_comgt_epu8 (simde__m128i a, simde__m128i b) {
...
@@ -702,7 +742,9 @@ simde_mm_comgt_epu8 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u8
=
vcgtq_u8
(
a_
.
neon_u8
,
b_
.
neon_u8
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u8
),
a_
.
u8
>
b_
.
u8
);
r_
.
u8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u8
),
a_
.
u8
>
b_
.
u8
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -731,7 +773,9 @@ simde_mm_comgt_epu16 (simde__m128i a, simde__m128i b) {
...
@@ -731,7 +773,9 @@ simde_mm_comgt_epu16 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u16
=
vcgtq_u16
(
a_
.
neon_u16
,
b_
.
neon_u16
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u16
),
a_
.
u16
>
b_
.
u16
);
r_
.
u16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u16
),
a_
.
u16
>
b_
.
u16
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -760,7 +804,9 @@ simde_mm_comgt_epu32 (simde__m128i a, simde__m128i b) {
...
@@ -760,7 +804,9 @@ simde_mm_comgt_epu32 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u32
=
vcgtq_u32
(
a_
.
neon_u32
,
b_
.
neon_u32
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u32
),
a_
.
u32
>
b_
.
u32
);
r_
.
u32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u32
),
a_
.
u32
>
b_
.
u32
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -789,7 +835,9 @@ simde_mm_comgt_epu64 (simde__m128i a, simde__m128i b) {
...
@@ -789,7 +835,9 @@ simde_mm_comgt_epu64 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
r_
.
neon_u64
=
vcgtq_u64
(
a_
.
neon_u64
,
b_
.
neon_u64
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u64
),
a_
.
u64
>
b_
.
u64
);
r_
.
u64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u64
),
a_
.
u64
>
b_
.
u64
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -818,7 +866,9 @@ simde_mm_comle_epi8 (simde__m128i a, simde__m128i b) {
...
@@ -818,7 +866,9 @@ simde_mm_comle_epi8 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u8
=
vcleq_s8
(
a_
.
neon_i8
,
b_
.
neon_i8
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i8
),
a_
.
i8
<=
b_
.
i8
);
r_
.
i8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i8
),
a_
.
i8
<=
b_
.
i8
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -876,7 +926,9 @@ simde_mm_comle_epi32 (simde__m128i a, simde__m128i b) {
...
@@ -876,7 +926,9 @@ simde_mm_comle_epi32 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u32
=
vcleq_s32
(
a_
.
neon_i32
,
b_
.
neon_i32
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i32
),
a_
.
i32
<=
b_
.
i32
);
r_
.
i32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i32
),
a_
.
i32
<=
b_
.
i32
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -905,7 +957,9 @@ simde_mm_comle_epi64 (simde__m128i a, simde__m128i b) {
...
@@ -905,7 +957,9 @@ simde_mm_comle_epi64 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
r_
.
neon_u64
=
vcleq_s64
(
a_
.
neon_i64
,
b_
.
neon_i64
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i64
),
a_
.
i64
<=
b_
.
i64
);
r_
.
i64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i64
),
a_
.
i64
<=
b_
.
i64
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -934,7 +988,9 @@ simde_mm_comle_epu8 (simde__m128i a, simde__m128i b) {
...
@@ -934,7 +988,9 @@ simde_mm_comle_epu8 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u8
=
vcleq_u8
(
a_
.
neon_u8
,
b_
.
neon_u8
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u8
),
a_
.
u8
<=
b_
.
u8
);
r_
.
u8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u8
),
a_
.
u8
<=
b_
.
u8
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -963,7 +1019,9 @@ simde_mm_comle_epu16 (simde__m128i a, simde__m128i b) {
...
@@ -963,7 +1019,9 @@ simde_mm_comle_epu16 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u16
=
vcleq_u16
(
a_
.
neon_u16
,
b_
.
neon_u16
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u16
),
a_
.
u16
<=
b_
.
u16
);
r_
.
u16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u16
),
a_
.
u16
<=
b_
.
u16
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -992,7 +1050,9 @@ simde_mm_comle_epu32 (simde__m128i a, simde__m128i b) {
...
@@ -992,7 +1050,9 @@ simde_mm_comle_epu32 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u32
=
vcleq_u32
(
a_
.
neon_u32
,
b_
.
neon_u32
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u32
),
a_
.
u32
<=
b_
.
u32
);
r_
.
u32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u32
),
a_
.
u32
<=
b_
.
u32
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -1021,7 +1081,9 @@ simde_mm_comle_epu64 (simde__m128i a, simde__m128i b) {
...
@@ -1021,7 +1081,9 @@ simde_mm_comle_epu64 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
r_
.
neon_u64
=
vcleq_u64
(
a_
.
neon_u64
,
b_
.
neon_u64
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u64
),
a_
.
u64
<=
b_
.
u64
);
r_
.
u64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u64
),
a_
.
u64
<=
b_
.
u64
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -1050,7 +1112,9 @@ simde_mm_comlt_epi8 (simde__m128i a, simde__m128i b) {
...
@@ -1050,7 +1112,9 @@ simde_mm_comlt_epi8 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u8
=
vcltq_s8
(
a_
.
neon_i8
,
b_
.
neon_i8
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i8
),
a_
.
i8
<
b_
.
i8
);
r_
.
i8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i8
),
a_
.
i8
<
b_
.
i8
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -1079,7 +1143,9 @@ simde_mm_comlt_epi16 (simde__m128i a, simde__m128i b) {
...
@@ -1079,7 +1143,9 @@ simde_mm_comlt_epi16 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u16
=
vcltq_s16
(
a_
.
neon_i16
,
b_
.
neon_i16
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i16
),
a_
.
i16
<
b_
.
i16
);
r_
.
i16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i16
),
a_
.
i16
<
b_
.
i16
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -1108,7 +1174,9 @@ simde_mm_comlt_epi32 (simde__m128i a, simde__m128i b) {
...
@@ -1108,7 +1174,9 @@ simde_mm_comlt_epi32 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u32
=
vcltq_s32
(
a_
.
neon_i32
,
b_
.
neon_i32
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i32
),
a_
.
i32
<
b_
.
i32
);
r_
.
i32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i32
),
a_
.
i32
<
b_
.
i32
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -1137,7 +1205,9 @@ simde_mm_comlt_epi64 (simde__m128i a, simde__m128i b) {
...
@@ -1137,7 +1205,9 @@ simde_mm_comlt_epi64 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
r_
.
neon_u64
=
vcltq_s64
(
a_
.
neon_i64
,
b_
.
neon_i64
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i64
),
a_
.
i64
<
b_
.
i64
);
r_
.
i64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i64
),
a_
.
i64
<
b_
.
i64
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -1166,7 +1236,9 @@ simde_mm_comlt_epu8 (simde__m128i a, simde__m128i b) {
...
@@ -1166,7 +1236,9 @@ simde_mm_comlt_epu8 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u8
=
vcltq_u8
(
a_
.
neon_u8
,
b_
.
neon_u8
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u8
),
a_
.
u8
<
b_
.
u8
);
r_
.
u8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u8
),
a_
.
u8
<
b_
.
u8
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -1195,7 +1267,9 @@ simde_mm_comlt_epu16 (simde__m128i a, simde__m128i b) {
...
@@ -1195,7 +1267,9 @@ simde_mm_comlt_epu16 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u16
=
vcltq_u16
(
a_
.
neon_u16
,
b_
.
neon_u16
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u16
),
a_
.
u16
<
b_
.
u16
);
r_
.
u16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u16
),
a_
.
u16
<
b_
.
u16
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -1224,7 +1298,9 @@ simde_mm_comlt_epu32 (simde__m128i a, simde__m128i b) {
...
@@ -1224,7 +1298,9 @@ simde_mm_comlt_epu32 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u32
=
vcltq_u32
(
a_
.
neon_u32
,
b_
.
neon_u32
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u32
),
a_
.
u32
<
b_
.
u32
);
r_
.
u32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u32
),
a_
.
u32
<
b_
.
u32
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -1253,7 +1329,9 @@ simde_mm_comlt_epu64 (simde__m128i a, simde__m128i b) {
...
@@ -1253,7 +1329,9 @@ simde_mm_comlt_epu64 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
r_
.
neon_u64
=
vcltq_u64
(
a_
.
neon_u64
,
b_
.
neon_u64
);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u64
),
a_
.
u64
<
b_
.
u64
);
r_
.
u64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u64
),
a_
.
u64
<
b_
.
u64
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -1282,7 +1360,9 @@ simde_mm_comneq_epi8 (simde__m128i a, simde__m128i b) {
...
@@ -1282,7 +1360,9 @@ simde_mm_comneq_epi8 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u8
=
vmvnq_u8
(
vceqq_s8
(
a_
.
neon_i8
,
b_
.
neon_i8
));
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i8
),
a_
.
i8
!=
b_
.
i8
);
r_
.
i8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i8
),
a_
.
i8
!=
b_
.
i8
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -1311,7 +1391,9 @@ simde_mm_comneq_epi16 (simde__m128i a, simde__m128i b) {
...
@@ -1311,7 +1391,9 @@ simde_mm_comneq_epi16 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u16
=
vmvnq_u16
(
vceqq_s16
(
a_
.
neon_i16
,
b_
.
neon_i16
));
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i16
),
a_
.
i16
!=
b_
.
i16
);
r_
.
i16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i16
),
a_
.
i16
!=
b_
.
i16
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -1340,7 +1422,9 @@ simde_mm_comneq_epi32 (simde__m128i a, simde__m128i b) {
...
@@ -1340,7 +1422,9 @@ simde_mm_comneq_epi32 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u32
=
vmvnq_u32
(
vceqq_s32
(
a_
.
neon_i32
,
b_
.
neon_i32
));
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i32
),
a_
.
i32
!=
b_
.
i32
);
r_
.
i32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i32
),
a_
.
i32
!=
b_
.
i32
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -1369,7 +1453,9 @@ simde_mm_comneq_epi64 (simde__m128i a, simde__m128i b) {
...
@@ -1369,7 +1453,9 @@ simde_mm_comneq_epi64 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
r_
.
neon_u32
=
vmvnq_u32
(
vreinterpretq_u32_u64
(
vceqq_s64
(
a_
.
neon_i64
,
b_
.
neon_i64
)));
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
i64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i64
),
a_
.
i64
!=
b_
.
i64
);
r_
.
i64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
i64
),
a_
.
i64
!=
b_
.
i64
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -1398,7 +1484,9 @@ simde_mm_comneq_epu8 (simde__m128i a, simde__m128i b) {
...
@@ -1398,7 +1484,9 @@ simde_mm_comneq_epu8 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u8
=
vmvnq_u8
(
vceqq_u8
(
a_
.
neon_u8
,
b_
.
neon_u8
));
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u8
),
a_
.
u8
!=
b_
.
u8
);
r_
.
u8
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u8
),
a_
.
u8
!=
b_
.
u8
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -1427,7 +1515,9 @@ simde_mm_comneq_epu16 (simde__m128i a, simde__m128i b) {
...
@@ -1427,7 +1515,9 @@ simde_mm_comneq_epu16 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u16
=
vmvnq_u16
(
vceqq_u16
(
a_
.
neon_u16
,
b_
.
neon_u16
));
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u16
),
a_
.
u16
!=
b_
.
u16
);
r_
.
u16
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u16
),
a_
.
u16
!=
b_
.
u16
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -1456,7 +1546,9 @@ simde_mm_comneq_epu32 (simde__m128i a, simde__m128i b) {
...
@@ -1456,7 +1546,9 @@ simde_mm_comneq_epu32 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
r_
.
neon_u32
=
vmvnq_u32
(
vceqq_u32
(
a_
.
neon_u32
,
b_
.
neon_u32
));
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u32
),
a_
.
u32
!=
b_
.
u32
);
r_
.
u32
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u32
),
a_
.
u32
!=
b_
.
u32
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -1485,7 +1577,9 @@ simde_mm_comneq_epu64 (simde__m128i a, simde__m128i b) {
...
@@ -1485,7 +1577,9 @@ simde_mm_comneq_epu64 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
r_
.
neon_u32
=
vmvnq_u32
(
vreinterpretq_u32_u64
(
vceqq_u64
(
a_
.
neon_u64
,
b_
.
neon_u64
)));
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_
.
u64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u64
),
a_
.
u64
!=
b_
.
u64
);
r_
.
u64
=
HEDLEY_REINTERPRET_CAST
(
__typeof__
(
r_
.
u64
),
a_
.
u64
!=
b_
.
u64
);
#else
#else
SIMDE_VECTORIZE
SIMDE_VECTORIZE
...
@@ -2143,10 +2237,14 @@ simde_mm_haddw_epi8 (simde__m128i a) {
...
@@ -2143,10 +2237,14 @@ simde_mm_haddw_epi8 (simde__m128i a) {
r_
,
r_
,
a_
=
simde__m128i_to_private
(
a
);
a_
=
simde__m128i_to_private
(
a
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i16
)
/
sizeof
(
r_
.
i16
[
0
]))
;
i
++
)
{
r_
.
neon_i16
=
vpaddlq_s8
(
a_
.
neon_i8
);
r_
.
i16
[
i
]
=
HEDLEY_STATIC_CAST
(
int16_t
,
a_
.
i8
[
i
*
2
])
+
HEDLEY_STATIC_CAST
(
int16_t
,
a_
.
i8
[(
i
*
2
)
+
1
]);
#else
}
SIMDE_VECTORIZE
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i16
)
/
sizeof
(
r_
.
i16
[
0
]))
;
i
++
)
{
r_
.
i16
[
i
]
=
HEDLEY_STATIC_CAST
(
int16_t
,
a_
.
i8
[
i
*
2
])
+
HEDLEY_STATIC_CAST
(
int16_t
,
a_
.
i8
[(
i
*
2
)
+
1
]);
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2165,10 +2263,14 @@ simde_mm_haddw_epu8 (simde__m128i a) {
...
@@ -2165,10 +2263,14 @@ simde_mm_haddw_epu8 (simde__m128i a) {
r_
,
r_
,
a_
=
simde__m128i_to_private
(
a
);
a_
=
simde__m128i_to_private
(
a
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
u16
)
/
sizeof
(
r_
.
u16
[
0
]))
;
i
++
)
{
r_
.
neon_u16
=
vpaddlq_u8
(
a_
.
neon_u8
);
r_
.
u16
[
i
]
=
HEDLEY_STATIC_CAST
(
uint16_t
,
a_
.
u8
[
i
*
2
])
+
HEDLEY_STATIC_CAST
(
uint16_t
,
a_
.
u8
[(
i
*
2
)
+
1
]);
#else
}
SIMDE_VECTORIZE
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
u16
)
/
sizeof
(
r_
.
u16
[
0
]))
;
i
++
)
{
r_
.
u16
[
i
]
=
HEDLEY_STATIC_CAST
(
uint16_t
,
a_
.
u8
[
i
*
2
])
+
HEDLEY_STATIC_CAST
(
uint16_t
,
a_
.
u8
[(
i
*
2
)
+
1
]);
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2187,12 +2289,16 @@ simde_mm_haddd_epi8 (simde__m128i a) {
...
@@ -2187,12 +2289,16 @@ simde_mm_haddd_epi8 (simde__m128i a) {
r_
,
r_
,
a_
=
simde__m128i_to_private
(
a
);
a_
=
simde__m128i_to_private
(
a
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i32
)
/
sizeof
(
r_
.
i32
[
0
]))
;
i
++
)
{
r_
.
neon_i32
=
vpaddlq_s16
(
vpaddlq_s8
(
a_
.
neon_i8
));
r_
.
i32
[
i
]
=
#else
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i8
[(
i
*
4
)
])
+
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i8
[(
i
*
4
)
+
1
])
+
SIMDE_VECTORIZE
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i8
[(
i
*
4
)
+
2
])
+
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i8
[(
i
*
4
)
+
3
]);
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i32
)
/
sizeof
(
r_
.
i32
[
0
]))
;
i
++
)
{
}
r_
.
i32
[
i
]
=
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i8
[(
i
*
4
)
])
+
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i8
[(
i
*
4
)
+
1
])
+
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i8
[(
i
*
4
)
+
2
])
+
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i8
[(
i
*
4
)
+
3
]);
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2211,11 +2317,15 @@ simde_mm_haddd_epi16 (simde__m128i a) {
...
@@ -2211,11 +2317,15 @@ simde_mm_haddd_epi16 (simde__m128i a) {
r_
,
r_
,
a_
=
simde__m128i_to_private
(
a
);
a_
=
simde__m128i_to_private
(
a
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i32
)
/
sizeof
(
r_
.
i32
[
0
]))
;
i
++
)
{
r_
.
neon_i32
=
vpaddlq_s16
(
a_
.
neon_i16
);
r_
.
i32
[
i
]
=
#else
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i16
[(
i
*
2
)
])
+
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i16
[(
i
*
2
)
+
1
]);
SIMDE_VECTORIZE
}
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i32
)
/
sizeof
(
r_
.
i32
[
0
]))
;
i
++
)
{
r_
.
i32
[
i
]
=
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i16
[(
i
*
2
)
])
+
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i16
[(
i
*
2
)
+
1
]);
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2234,12 +2344,16 @@ simde_mm_haddd_epu8 (simde__m128i a) {
...
@@ -2234,12 +2344,16 @@ simde_mm_haddd_epu8 (simde__m128i a) {
r_
,
r_
,
a_
=
simde__m128i_to_private
(
a
);
a_
=
simde__m128i_to_private
(
a
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
u32
)
/
sizeof
(
r_
.
u32
[
0
]))
;
i
++
)
{
r_
.
neon_u32
=
vpaddlq_u16
(
vpaddlq_u8
(
a_
.
neon_u8
));
r_
.
u32
[
i
]
=
#else
HEDLEY_STATIC_CAST
(
uint32_t
,
a_
.
u8
[(
i
*
4
)
])
+
HEDLEY_STATIC_CAST
(
uint32_t
,
a_
.
u8
[(
i
*
4
)
+
1
])
+
SIMDE_VECTORIZE
HEDLEY_STATIC_CAST
(
uint32_t
,
a_
.
u8
[(
i
*
4
)
+
2
])
+
HEDLEY_STATIC_CAST
(
uint32_t
,
a_
.
u8
[(
i
*
4
)
+
3
]);
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
u32
)
/
sizeof
(
r_
.
u32
[
0
]))
;
i
++
)
{
}
r_
.
u32
[
i
]
=
HEDLEY_STATIC_CAST
(
uint32_t
,
a_
.
u8
[(
i
*
4
)
])
+
HEDLEY_STATIC_CAST
(
uint32_t
,
a_
.
u8
[(
i
*
4
)
+
1
])
+
HEDLEY_STATIC_CAST
(
uint32_t
,
a_
.
u8
[(
i
*
4
)
+
2
])
+
HEDLEY_STATIC_CAST
(
uint32_t
,
a_
.
u8
[(
i
*
4
)
+
3
]);
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2258,11 +2372,15 @@ simde_mm_haddd_epu16 (simde__m128i a) {
...
@@ -2258,11 +2372,15 @@ simde_mm_haddd_epu16 (simde__m128i a) {
r_
,
r_
,
a_
=
simde__m128i_to_private
(
a
);
a_
=
simde__m128i_to_private
(
a
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
u32
)
/
sizeof
(
r_
.
u32
[
0
]))
;
i
++
)
{
r_
.
neon_u32
=
vpaddlq_u16
(
a_
.
neon_u16
);
r_
.
u32
[
i
]
=
#else
HEDLEY_STATIC_CAST
(
uint32_t
,
a_
.
u16
[(
i
*
2
)
])
+
HEDLEY_STATIC_CAST
(
uint32_t
,
a_
.
u16
[(
i
*
2
)
+
1
]);
SIMDE_VECTORIZE
}
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
u32
)
/
sizeof
(
r_
.
u32
[
0
]))
;
i
++
)
{
r_
.
u32
[
i
]
=
HEDLEY_STATIC_CAST
(
uint32_t
,
a_
.
u16
[(
i
*
2
)
])
+
HEDLEY_STATIC_CAST
(
uint32_t
,
a_
.
u16
[(
i
*
2
)
+
1
]);
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2281,14 +2399,18 @@ simde_mm_haddq_epi8 (simde__m128i a) {
...
@@ -2281,14 +2399,18 @@ simde_mm_haddq_epi8 (simde__m128i a) {
r_
,
r_
,
a_
=
simde__m128i_to_private
(
a
);
a_
=
simde__m128i_to_private
(
a
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i64
)
/
sizeof
(
r_
.
i64
[
0
]))
;
i
++
)
{
r_
.
neon_i64
=
vpaddlq_s32
(
vpaddlq_s16
(
vpaddlq_s8
(
a_
.
neon_i8
)));
r_
.
i64
[
i
]
=
#else
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i8
[(
i
*
8
)
])
+
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i8
[(
i
*
8
)
+
1
])
+
SIMDE_VECTORIZE
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i8
[(
i
*
8
)
+
2
])
+
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i8
[(
i
*
8
)
+
3
])
+
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i64
)
/
sizeof
(
r_
.
i64
[
0
]))
;
i
++
)
{
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i8
[(
i
*
8
)
+
4
])
+
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i8
[(
i
*
8
)
+
5
])
+
r_
.
i64
[
i
]
=
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i8
[(
i
*
8
)
+
6
])
+
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i8
[(
i
*
8
)
+
7
]);
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i8
[(
i
*
8
)
])
+
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i8
[(
i
*
8
)
+
1
])
+
}
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i8
[(
i
*
8
)
+
2
])
+
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i8
[(
i
*
8
)
+
3
])
+
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i8
[(
i
*
8
)
+
4
])
+
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i8
[(
i
*
8
)
+
5
])
+
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i8
[(
i
*
8
)
+
6
])
+
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i8
[(
i
*
8
)
+
7
]);
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2307,12 +2429,16 @@ simde_mm_haddq_epi16 (simde__m128i a) {
...
@@ -2307,12 +2429,16 @@ simde_mm_haddq_epi16 (simde__m128i a) {
r_
,
r_
,
a_
=
simde__m128i_to_private
(
a
);
a_
=
simde__m128i_to_private
(
a
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i64
)
/
sizeof
(
r_
.
i64
[
0
]))
;
i
++
)
{
r_
.
neon_i64
=
vpaddlq_s32
(
vpaddlq_s16
(
a_
.
neon_i16
));
r_
.
i64
[
i
]
=
#else
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i16
[(
i
*
4
)
])
+
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i16
[(
i
*
4
)
+
1
])
+
SIMDE_VECTORIZE
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i16
[(
i
*
4
)
+
2
])
+
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i16
[(
i
*
4
)
+
3
]);
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i64
)
/
sizeof
(
r_
.
i64
[
0
]))
;
i
++
)
{
}
r_
.
i64
[
i
]
=
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i16
[(
i
*
4
)
])
+
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i16
[(
i
*
4
)
+
1
])
+
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i16
[(
i
*
4
)
+
2
])
+
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i16
[(
i
*
4
)
+
3
]);
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2331,10 +2457,14 @@ simde_mm_haddq_epi32 (simde__m128i a) {
...
@@ -2331,10 +2457,14 @@ simde_mm_haddq_epi32 (simde__m128i a) {
r_
,
r_
,
a_
=
simde__m128i_to_private
(
a
);
a_
=
simde__m128i_to_private
(
a
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i64
)
/
sizeof
(
r_
.
i64
[
0
]))
;
i
++
)
{
r_
.
neon_i64
=
vpaddlq_s32
(
a_
.
neon_i32
);
r_
.
i64
[
i
]
=
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i32
[(
i
*
2
)
])
+
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i32
[(
i
*
2
)
+
1
]);
#else
}
SIMDE_VECTORIZE
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i64
)
/
sizeof
(
r_
.
i64
[
0
]))
;
i
++
)
{
r_
.
i64
[
i
]
=
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i32
[(
i
*
2
)
])
+
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i32
[(
i
*
2
)
+
1
]);
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2353,14 +2483,18 @@ simde_mm_haddq_epu8 (simde__m128i a) {
...
@@ -2353,14 +2483,18 @@ simde_mm_haddq_epu8 (simde__m128i a) {
r_
,
r_
,
a_
=
simde__m128i_to_private
(
a
);
a_
=
simde__m128i_to_private
(
a
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i64
)
/
sizeof
(
r_
.
i64
[
0
]))
;
i
++
)
{
r_
.
neon_u64
=
vpaddlq_u32
(
vpaddlq_u16
(
vpaddlq_u8
(
a_
.
neon_u8
)));
r_
.
u64
[
i
]
=
#else
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u8
[(
i
*
8
)
])
+
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u8
[(
i
*
8
)
+
1
])
+
SIMDE_VECTORIZE
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u8
[(
i
*
8
)
+
2
])
+
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u8
[(
i
*
8
)
+
3
])
+
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i64
)
/
sizeof
(
r_
.
i64
[
0
]))
;
i
++
)
{
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u8
[(
i
*
8
)
+
4
])
+
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u8
[(
i
*
8
)
+
5
])
+
r_
.
u64
[
i
]
=
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u8
[(
i
*
8
)
+
6
])
+
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u8
[(
i
*
8
)
+
7
]);
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u8
[(
i
*
8
)
])
+
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u8
[(
i
*
8
)
+
1
])
+
}
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u8
[(
i
*
8
)
+
2
])
+
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u8
[(
i
*
8
)
+
3
])
+
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u8
[(
i
*
8
)
+
4
])
+
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u8
[(
i
*
8
)
+
5
])
+
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u8
[(
i
*
8
)
+
6
])
+
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u8
[(
i
*
8
)
+
7
]);
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2379,12 +2513,16 @@ simde_mm_haddq_epu16 (simde__m128i a) {
...
@@ -2379,12 +2513,16 @@ simde_mm_haddq_epu16 (simde__m128i a) {
r_
,
r_
,
a_
=
simde__m128i_to_private
(
a
);
a_
=
simde__m128i_to_private
(
a
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i64
)
/
sizeof
(
r_
.
i64
[
0
]))
;
i
++
)
{
r_
.
neon_u64
=
vpaddlq_u32
(
vpaddlq_u16
(
a_
.
neon_u16
));
r_
.
u64
[
i
]
=
#else
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u16
[(
i
*
4
)
])
+
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u16
[(
i
*
4
)
+
1
])
+
SIMDE_VECTORIZE
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u16
[(
i
*
4
)
+
2
])
+
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u16
[(
i
*
4
)
+
3
]);
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i64
)
/
sizeof
(
r_
.
i64
[
0
]))
;
i
++
)
{
}
r_
.
u64
[
i
]
=
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u16
[(
i
*
4
)
])
+
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u16
[(
i
*
4
)
+
1
])
+
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u16
[(
i
*
4
)
+
2
])
+
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u16
[(
i
*
4
)
+
3
]);
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2403,10 +2541,14 @@ simde_mm_haddq_epu32 (simde__m128i a) {
...
@@ -2403,10 +2541,14 @@ simde_mm_haddq_epu32 (simde__m128i a) {
r_
,
r_
,
a_
=
simde__m128i_to_private
(
a
);
a_
=
simde__m128i_to_private
(
a
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i64
)
/
sizeof
(
r_
.
i64
[
0
]))
;
i
++
)
{
r_
.
neon_u64
=
vpaddlq_u32
(
a_
.
neon_u32
);
r_
.
u64
[
i
]
=
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u32
[(
i
*
2
)
])
+
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u32
[(
i
*
2
)
+
1
]);
#else
}
SIMDE_VECTORIZE
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i64
)
/
sizeof
(
r_
.
i64
[
0
]))
;
i
++
)
{
r_
.
u64
[
i
]
=
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u32
[(
i
*
2
)
])
+
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u32
[(
i
*
2
)
+
1
]);
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2494,10 +2636,14 @@ simde_mm_macc_epi16 (simde__m128i a, simde__m128i b, simde__m128i c) {
...
@@ -2494,10 +2636,14 @@ simde_mm_macc_epi16 (simde__m128i a, simde__m128i b, simde__m128i c) {
b_
=
simde__m128i_to_private
(
b
),
b_
=
simde__m128i_to_private
(
b
),
c_
=
simde__m128i_to_private
(
c
);
c_
=
simde__m128i_to_private
(
c
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i16
)
/
sizeof
(
r_
.
i16
[
0
]))
;
i
++
)
{
r_
.
neon_i16
=
vmlaq_s16
(
c_
.
neon_i16
,
a_
.
neon_i16
,
b_
.
neon_i16
);
r_
.
i16
[
i
]
=
(
a_
.
i16
[
i
]
*
b_
.
i16
[
i
])
+
c_
.
i16
[
i
];
#else
}
SIMDE_VECTORIZE
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i16
)
/
sizeof
(
r_
.
i16
[
0
]))
;
i
++
)
{
r_
.
i16
[
i
]
=
(
a_
.
i16
[
i
]
*
b_
.
i16
[
i
])
+
c_
.
i16
[
i
];
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2518,10 +2664,14 @@ simde_mm_macc_epi32 (simde__m128i a, simde__m128i b, simde__m128i c) {
...
@@ -2518,10 +2664,14 @@ simde_mm_macc_epi32 (simde__m128i a, simde__m128i b, simde__m128i c) {
b_
=
simde__m128i_to_private
(
b
),
b_
=
simde__m128i_to_private
(
b
),
c_
=
simde__m128i_to_private
(
c
);
c_
=
simde__m128i_to_private
(
c
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i32
)
/
sizeof
(
r_
.
i32
[
0
]))
;
i
++
)
{
r_
.
neon_i32
=
vmlaq_s32
(
c_
.
neon_i32
,
a_
.
neon_i32
,
b_
.
neon_i32
);
r_
.
i32
[
i
]
=
(
a_
.
i32
[
i
]
*
b_
.
i32
[
i
])
+
c_
.
i32
[
i
];
#else
}
SIMDE_VECTORIZE
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i32
)
/
sizeof
(
r_
.
i32
[
0
]))
;
i
++
)
{
r_
.
i32
[
i
]
=
(
a_
.
i32
[
i
]
*
b_
.
i32
[
i
])
+
c_
.
i32
[
i
];
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2542,10 +2692,17 @@ simde_mm_maccd_epi16 (simde__m128i a, simde__m128i b, simde__m128i c) {
...
@@ -2542,10 +2692,17 @@ simde_mm_maccd_epi16 (simde__m128i a, simde__m128i b, simde__m128i c) {
b_
=
simde__m128i_to_private
(
b
),
b_
=
simde__m128i_to_private
(
b
),
c_
=
simde__m128i_to_private
(
c
);
c_
=
simde__m128i_to_private
(
c
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i32
)
/
sizeof
(
r_
.
i32
[
0
]))
;
i
++
)
{
int16x8_t
even
=
vuzp1q_s16
(
a_
.
neon_i16
,
b_
.
neon_i16
);
r_
.
i32
[
i
]
=
(
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i16
[
i
*
2
])
*
HEDLEY_STATIC_CAST
(
int32_t
,
b_
.
i16
[
i
*
2
]))
+
c_
.
i32
[
i
];
int32x4_t
a_even
=
vmovl_s16
(
vget_low_s16
(
even
));
}
int32x4_t
b_even
=
vmovl_high_s16
(
even
);
r_
.
neon_i32
=
vmlaq_s32
(
c_
.
neon_i32
,
a_even
,
b_even
);
#else
SIMDE_VECTORIZE
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i32
)
/
sizeof
(
r_
.
i32
[
0
]))
;
i
++
)
{
r_
.
i32
[
i
]
=
(
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i16
[
i
*
2
])
*
HEDLEY_STATIC_CAST
(
int32_t
,
b_
.
i16
[
i
*
2
]))
+
c_
.
i32
[
i
];
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2566,10 +2723,15 @@ simde_mm_macclo_epi32 (simde__m128i a, simde__m128i b, simde__m128i c) {
...
@@ -2566,10 +2723,15 @@ simde_mm_macclo_epi32 (simde__m128i a, simde__m128i b, simde__m128i c) {
b_
=
simde__m128i_to_private
(
b
),
b_
=
simde__m128i_to_private
(
b
),
c_
=
simde__m128i_to_private
(
c
);
c_
=
simde__m128i_to_private
(
c
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i64
)
/
sizeof
(
r_
.
i64
[
0
]))
;
i
++
)
{
int32x4_t
even
=
vuzp1q_s32
(
a_
.
neon_i32
,
b_
.
neon_i32
);
r_
.
i64
[
i
]
=
(
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i32
[(
i
*
2
)
+
0
])
*
HEDLEY_STATIC_CAST
(
int64_t
,
b_
.
i32
[(
i
*
2
)
+
0
]))
+
c_
.
i64
[
i
];
r_
.
neon_i64
=
vaddq_s64
(
vmull_s32
(
vget_low_s32
(
even
),
vget_high_s32
(
even
)),
c_
.
neon_i64
);
}
#else
SIMDE_VECTORIZE
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i64
)
/
sizeof
(
r_
.
i64
[
0
]))
;
i
++
)
{
r_
.
i64
[
i
]
=
(
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i32
[(
i
*
2
)
+
0
])
*
HEDLEY_STATIC_CAST
(
int64_t
,
b_
.
i32
[(
i
*
2
)
+
0
]))
+
c_
.
i64
[
i
];
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2590,10 +2752,15 @@ simde_mm_macchi_epi32 (simde__m128i a, simde__m128i b, simde__m128i c) {
...
@@ -2590,10 +2752,15 @@ simde_mm_macchi_epi32 (simde__m128i a, simde__m128i b, simde__m128i c) {
b_
=
simde__m128i_to_private
(
b
),
b_
=
simde__m128i_to_private
(
b
),
c_
=
simde__m128i_to_private
(
c
);
c_
=
simde__m128i_to_private
(
c
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i64
)
/
sizeof
(
r_
.
i64
[
0
]))
;
i
++
)
{
int32x4_t
even
=
vuzp2q_s32
(
a_
.
neon_i32
,
b_
.
neon_i32
);
r_
.
i64
[
i
]
=
(
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i32
[(
i
*
2
)
+
1
])
*
HEDLEY_STATIC_CAST
(
int64_t
,
b_
.
i32
[(
i
*
2
)
+
1
]))
+
c_
.
i64
[
i
];
r_
.
neon_i64
=
vaddq_s64
(
vmull_s32
(
vget_low_s32
(
even
),
vget_high_s32
(
even
)),
c_
.
neon_i64
);
}
#else
SIMDE_VECTORIZE
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i64
)
/
sizeof
(
r_
.
i64
[
0
]))
;
i
++
)
{
r_
.
i64
[
i
]
=
(
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i32
[(
i
*
2
)
+
1
])
*
HEDLEY_STATIC_CAST
(
int64_t
,
b_
.
i32
[(
i
*
2
)
+
1
]))
+
c_
.
i64
[
i
];
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2614,17 +2781,25 @@ simde_mm_maccs_epi16 (simde__m128i a, simde__m128i b, simde__m128i c) {
...
@@ -2614,17 +2781,25 @@ simde_mm_maccs_epi16 (simde__m128i a, simde__m128i b, simde__m128i c) {
b_
=
simde__m128i_to_private
(
b
),
b_
=
simde__m128i_to_private
(
b
),
c_
=
simde__m128i_to_private
(
c
);
c_
=
simde__m128i_to_private
(
c
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i16
)
/
sizeof
(
r_
.
i16
[
0
]))
;
i
++
)
{
int32x4_t
c_lo
=
vmovl_s16
(
vget_low_s16
(
c_
.
i16
));
int32_t
tmp
=
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i16
[
i
])
*
HEDLEY_STATIC_CAST
(
int32_t
,
b_
.
i16
[
i
]);
int32x4_t
c_hi
=
vmovl_high_s16
(
c_
.
i16
);
tmp
+=
c_
.
i16
[
i
];
int32x4_t
lo
=
vmlal_s16
(
c_lo
,
vget_low_s16
(
a_
.
neon_i16
),
vget_low_s16
(
b_
.
neon_i16
));
if
(
tmp
>
INT16_MAX
)
int32x4_t
hi
=
vmlal_high_s16
(
c_hi
,
a_
.
neon_i16
,
b_
.
neon_i16
);
r_
.
i16
[
i
]
=
INT16_MAX
;
r_
.
neon_i16
=
vcombine_s16
(
vqmovn_s32
(
lo
),
vqmovn_s32
(
hi
));
else
if
(
tmp
<
INT16_MIN
)
#else
r_
.
i16
[
i
]
=
INT16_MIN
;
SIMDE_VECTORIZE
else
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i16
)
/
sizeof
(
r_
.
i16
[
0
]))
;
i
++
)
{
r_
.
i16
[
i
]
=
HEDLEY_STATIC_CAST
(
int16_t
,
tmp
);
int32_t
tmp
=
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i16
[
i
])
*
HEDLEY_STATIC_CAST
(
int32_t
,
b_
.
i16
[
i
]);
}
tmp
+=
c_
.
i16
[
i
];
if
(
tmp
>
INT16_MAX
)
r_
.
i16
[
i
]
=
INT16_MAX
;
else
if
(
tmp
<
INT16_MIN
)
r_
.
i16
[
i
]
=
INT16_MIN
;
else
r_
.
i16
[
i
]
=
HEDLEY_STATIC_CAST
(
int16_t
,
tmp
);
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2645,17 +2820,25 @@ simde_mm_maccs_epi32 (simde__m128i a, simde__m128i b, simde__m128i c) {
...
@@ -2645,17 +2820,25 @@ simde_mm_maccs_epi32 (simde__m128i a, simde__m128i b, simde__m128i c) {
b_
=
simde__m128i_to_private
(
b
),
b_
=
simde__m128i_to_private
(
b
),
c_
=
simde__m128i_to_private
(
c
);
c_
=
simde__m128i_to_private
(
c
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i32
)
/
sizeof
(
r_
.
i32
[
0
]))
;
i
++
)
{
int64x2_t
c_lo
=
vmovl_s32
(
vget_low_s32
(
c_
.
i32
));
int64_t
tmp
=
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i32
[
i
])
*
HEDLEY_STATIC_CAST
(
int64_t
,
b_
.
i32
[
i
]);
int64x2_t
c_hi
=
vmovl_high_s32
(
c_
.
i32
);
tmp
+=
HEDLEY_STATIC_CAST
(
int64_t
,
c_
.
i32
[
i
]);
int64x2_t
lo
=
vmlal_s32
(
c_lo
,
vget_low_s32
(
a_
.
neon_i32
),
vget_low_s32
(
b_
.
neon_i32
));
if
(
tmp
>
INT32_MAX
)
int64x2_t
hi
=
vmlal_high_s32
(
c_hi
,
a_
.
neon_i32
,
b_
.
neon_i32
);
r_
.
i32
[
i
]
=
INT32_MAX
;
r_
.
neon_i32
=
vcombine_s32
(
vqmovn_s64
(
lo
),
vqmovn_s64
(
hi
));
else
if
(
tmp
<
INT32_MIN
)
#else
r_
.
i32
[
i
]
=
INT32_MIN
;
SIMDE_VECTORIZE
else
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i32
)
/
sizeof
(
r_
.
i32
[
0
]))
;
i
++
)
{
r_
.
i32
[
i
]
=
HEDLEY_STATIC_CAST
(
int32_t
,
tmp
);
int64_t
tmp
=
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i32
[
i
])
*
HEDLEY_STATIC_CAST
(
int64_t
,
b_
.
i32
[
i
]);
}
tmp
+=
HEDLEY_STATIC_CAST
(
int64_t
,
c_
.
i32
[
i
]);
if
(
tmp
>
INT32_MAX
)
r_
.
i32
[
i
]
=
INT32_MAX
;
else
if
(
tmp
<
INT32_MIN
)
r_
.
i32
[
i
]
=
INT32_MIN
;
else
r_
.
i32
[
i
]
=
HEDLEY_STATIC_CAST
(
int32_t
,
tmp
);
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2676,17 +2859,22 @@ simde_mm_maccsd_epi16 (simde__m128i a, simde__m128i b, simde__m128i c) {
...
@@ -2676,17 +2859,22 @@ simde_mm_maccsd_epi16 (simde__m128i a, simde__m128i b, simde__m128i c) {
b_
=
simde__m128i_to_private
(
b
),
b_
=
simde__m128i_to_private
(
b
),
c_
=
simde__m128i_to_private
(
c
);
c_
=
simde__m128i_to_private
(
c
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i32
)
/
sizeof
(
r_
.
i32
[
0
]))
;
i
++
)
{
int16x8_t
even
=
vuzp1q_s16
(
a_
.
neon_i16
,
b_
.
neon_i16
);
int64_t
tmp
=
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i16
[
i
*
2
])
*
HEDLEY_STATIC_CAST
(
int32_t
,
b_
.
i16
[
i
*
2
]);
r_
.
neon_i32
=
vmlal_s16
(
c_
.
neon_i32
,
vget_low_s16
(
even
),
vget_high_s16
(
even
));
tmp
+=
c_
.
i32
[
i
];
#else
if
(
tmp
>
INT32_MAX
)
SIMDE_VECTORIZE
r_
.
i32
[
i
]
=
INT32_MAX
;
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i32
)
/
sizeof
(
r_
.
i32
[
0
]))
;
i
++
)
{
else
if
(
tmp
<
INT32_MIN
)
int64_t
tmp
=
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i16
[
i
*
2
])
*
HEDLEY_STATIC_CAST
(
int32_t
,
b_
.
i16
[
i
*
2
]);
r_
.
i32
[
i
]
=
INT32_MIN
;
tmp
+=
c_
.
i32
[
i
];
else
if
(
tmp
>
INT32_MAX
)
r_
.
i32
[
i
]
=
HEDLEY_STATIC_CAST
(
int32_t
,
tmp
);
r_
.
i32
[
i
]
=
INT32_MAX
;
}
else
if
(
tmp
<
INT32_MIN
)
r_
.
i32
[
i
]
=
INT32_MIN
;
else
r_
.
i32
[
i
]
=
HEDLEY_STATIC_CAST
(
int32_t
,
tmp
);
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2813,14 +3001,18 @@ simde_mm_sha_epi8 (simde__m128i a, simde__m128i b) {
...
@@ -2813,14 +3001,18 @@ simde_mm_sha_epi8 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i8
)
/
sizeof
(
r_
.
i8
[
0
]))
;
i
++
)
{
r_
.
neon_i8
=
vshlq_s8
(
a_
.
neon_i8
,
b_
.
neon_i8
);
if
(
b_
.
i8
[
i
]
<
0
)
{
#else
r_
.
i8
[
i
]
=
HEDLEY_STATIC_CAST
(
int8_t
,
a_
.
i8
[
i
]
>>
-
b_
.
i8
[
i
]);
SIMDE_VECTORIZE
}
else
{
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i8
)
/
sizeof
(
r_
.
i8
[
0
]))
;
i
++
)
{
r_
.
i8
[
i
]
=
HEDLEY_STATIC_CAST
(
int8_t
,
a_
.
i8
[
i
]
<<
b_
.
i8
[
i
]);
if
(
b_
.
i8
[
i
]
<
0
)
{
r_
.
i8
[
i
]
=
HEDLEY_STATIC_CAST
(
int8_t
,
a_
.
i8
[
i
]
>>
-
b_
.
i8
[
i
]);
}
else
{
r_
.
i8
[
i
]
=
HEDLEY_STATIC_CAST
(
int8_t
,
a_
.
i8
[
i
]
<<
b_
.
i8
[
i
]);
}
}
}
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2840,14 +3032,18 @@ simde_mm_sha_epi16 (simde__m128i a, simde__m128i b) {
...
@@ -2840,14 +3032,18 @@ simde_mm_sha_epi16 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i16
)
/
sizeof
(
r_
.
i16
[
0
]))
;
i
++
)
{
r_
.
neon_i16
=
vshlq_s16
(
a_
.
neon_i16
,
b_
.
neon_i16
);
if
(
b_
.
i16
[
i
]
<
0
)
{
#else
r_
.
i16
[
i
]
=
HEDLEY_STATIC_CAST
(
int16_t
,
a_
.
i16
[
i
]
>>
-
b_
.
i16
[
i
]);
SIMDE_VECTORIZE
}
else
{
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i16
)
/
sizeof
(
r_
.
i16
[
0
]))
;
i
++
)
{
r_
.
i16
[
i
]
=
HEDLEY_STATIC_CAST
(
int16_t
,
a_
.
i16
[
i
]
<<
b_
.
i16
[
i
]);
if
(
b_
.
i16
[
i
]
<
0
)
{
r_
.
i16
[
i
]
=
HEDLEY_STATIC_CAST
(
int16_t
,
a_
.
i16
[
i
]
>>
-
b_
.
i16
[
i
]);
}
else
{
r_
.
i16
[
i
]
=
HEDLEY_STATIC_CAST
(
int16_t
,
a_
.
i16
[
i
]
<<
b_
.
i16
[
i
]);
}
}
}
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2867,14 +3063,18 @@ simde_mm_sha_epi32 (simde__m128i a, simde__m128i b) {
...
@@ -2867,14 +3063,18 @@ simde_mm_sha_epi32 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i32
)
/
sizeof
(
r_
.
i32
[
0
]))
;
i
++
)
{
r_
.
neon_i32
=
vshlq_s32
(
a_
.
neon_i32
,
b_
.
neon_i32
);
if
(
b_
.
i32
[
i
]
<
0
)
{
#else
r_
.
i32
[
i
]
=
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i32
[
i
]
>>
-
b_
.
i32
[
i
]);
SIMDE_VECTORIZE
}
else
{
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i32
)
/
sizeof
(
r_
.
i32
[
0
]))
;
i
++
)
{
r_
.
i32
[
i
]
=
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i32
[
i
]
<<
b_
.
i32
[
i
]);
if
(
b_
.
i32
[
i
]
<
0
)
{
r_
.
i32
[
i
]
=
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i32
[
i
]
>>
-
b_
.
i32
[
i
]);
}
else
{
r_
.
i32
[
i
]
=
HEDLEY_STATIC_CAST
(
int32_t
,
a_
.
i32
[
i
]
<<
b_
.
i32
[
i
]);
}
}
}
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2894,14 +3094,18 @@ simde_mm_sha_epi64 (simde__m128i a, simde__m128i b) {
...
@@ -2894,14 +3094,18 @@ simde_mm_sha_epi64 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i64
)
/
sizeof
(
r_
.
i64
[
0
]))
;
i
++
)
{
r_
.
neon_i64
=
vshlq_s64
(
a_
.
neon_i64
,
b_
.
neon_i64
);
if
(
b_
.
i64
[
i
]
<
0
)
{
#else
r_
.
i64
[
i
]
=
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i64
[
i
]
>>
-
b_
.
i64
[
i
]);
SIMDE_VECTORIZE
}
else
{
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i64
)
/
sizeof
(
r_
.
i64
[
0
]))
;
i
++
)
{
r_
.
i64
[
i
]
=
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i64
[
i
]
<<
b_
.
i64
[
i
]);
if
(
b_
.
i64
[
i
]
<
0
)
{
r_
.
i64
[
i
]
=
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i64
[
i
]
>>
-
b_
.
i64
[
i
]);
}
else
{
r_
.
i64
[
i
]
=
HEDLEY_STATIC_CAST
(
int64_t
,
a_
.
i64
[
i
]
<<
b_
.
i64
[
i
]);
}
}
}
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2921,18 +3125,22 @@ simde_mm_shl_epi8 (simde__m128i a, simde__m128i b) {
...
@@ -2921,18 +3125,22 @@ simde_mm_shl_epi8 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
u8
)
/
sizeof
(
r_
.
u8
[
0
]))
;
i
++
)
{
r_
.
neon_u8
=
vshlq_u8
(
a_
.
neon_u8
,
b_
.
neon_i8
);
if
(
HEDLEY_UNLIKELY
(
b_
.
i8
[
i
]
<
-
7
||
b_
.
i8
[
i
]
>
7
))
{
#else
r_
.
u8
[
i
]
=
0
;
SIMDE_VECTORIZE
}
else
{
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
u8
)
/
sizeof
(
r_
.
u8
[
0
]))
;
i
++
)
{
if
(
b_
.
i8
[
i
]
<
0
)
{
if
(
HEDLEY_UNLIKELY
(
b_
.
i8
[
i
]
<
-
7
||
b_
.
i8
[
i
]
>
7
)
)
{
r_
.
u8
[
i
]
=
HEDLEY_STATIC_CAST
(
uint8_t
,
a_
.
u8
[
i
]
>>
-
b_
.
i8
[
i
])
;
r_
.
u8
[
i
]
=
0
;
}
else
{
}
else
{
r_
.
u8
[
i
]
=
HEDLEY_STATIC_CAST
(
uint8_t
,
a_
.
u8
[
i
]
<<
b_
.
i8
[
i
]);
if
(
b_
.
i8
[
i
]
<
0
)
{
r_
.
u8
[
i
]
=
HEDLEY_STATIC_CAST
(
uint8_t
,
a_
.
u8
[
i
]
>>
-
b_
.
i8
[
i
]);
}
else
{
r_
.
u8
[
i
]
=
HEDLEY_STATIC_CAST
(
uint8_t
,
a_
.
u8
[
i
]
<<
b_
.
i8
[
i
]);
}
}
}
}
}
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2952,18 +3160,22 @@ simde_mm_shl_epi16 (simde__m128i a, simde__m128i b) {
...
@@ -2952,18 +3160,22 @@ simde_mm_shl_epi16 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
u16
)
/
sizeof
(
r_
.
u16
[
0
]))
;
i
++
)
{
r_
.
neon_u16
=
vshlq_u16
(
a_
.
neon_u16
,
b_
.
neon_i16
);
if
(
HEDLEY_UNLIKELY
(
b_
.
i16
[
i
]
<
-
15
||
b_
.
i16
[
i
]
>
15
))
{
#else
r_
.
u16
[
i
]
=
0
;
SIMDE_VECTORIZE
}
else
{
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
u16
)
/
sizeof
(
r_
.
u16
[
0
]))
;
i
++
)
{
if
(
b_
.
i16
[
i
]
<
0
)
{
if
(
HEDLEY_UNLIKELY
(
b_
.
i16
[
i
]
<
-
15
||
b_
.
i16
[
i
]
>
15
)
)
{
r_
.
u16
[
i
]
=
HEDLEY_STATIC_CAST
(
uint16_t
,
a_
.
u16
[
i
]
>>
-
b_
.
i16
[
i
])
;
r_
.
u16
[
i
]
=
0
;
}
else
{
}
else
{
r_
.
u16
[
i
]
=
HEDLEY_STATIC_CAST
(
uint16_t
,
a_
.
u16
[
i
]
<<
b_
.
i16
[
i
]);
if
(
b_
.
i16
[
i
]
<
0
)
{
r_
.
u16
[
i
]
=
HEDLEY_STATIC_CAST
(
uint16_t
,
a_
.
u16
[
i
]
>>
-
b_
.
i16
[
i
]);
}
else
{
r_
.
u16
[
i
]
=
HEDLEY_STATIC_CAST
(
uint16_t
,
a_
.
u16
[
i
]
<<
b_
.
i16
[
i
]);
}
}
}
}
}
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -2983,18 +3195,22 @@ simde_mm_shl_epi32 (simde__m128i a, simde__m128i b) {
...
@@ -2983,18 +3195,22 @@ simde_mm_shl_epi32 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
u32
)
/
sizeof
(
r_
.
u32
[
0
]))
;
i
++
)
{
r_
.
neon_u32
=
vshlq_u32
(
a_
.
neon_u32
,
b_
.
neon_i32
);
if
(
HEDLEY_UNLIKELY
(
b_
.
i32
[
i
]
<
-
31
||
b_
.
i32
[
i
]
>
31
))
{
#else
r_
.
u32
[
i
]
=
0
;
SIMDE_VECTORIZE
}
else
{
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
u32
)
/
sizeof
(
r_
.
u32
[
0
]))
;
i
++
)
{
if
(
b_
.
i32
[
i
]
<
0
)
{
if
(
HEDLEY_UNLIKELY
(
b_
.
i32
[
i
]
<
-
31
||
b_
.
i32
[
i
]
>
31
)
)
{
r_
.
u32
[
i
]
=
HEDLEY_STATIC_CAST
(
uint32_t
,
a_
.
u32
[
i
]
>>
-
b_
.
i32
[
i
])
;
r_
.
u32
[
i
]
=
0
;
}
else
{
}
else
{
r_
.
u32
[
i
]
=
HEDLEY_STATIC_CAST
(
uint32_t
,
a_
.
u32
[
i
]
<<
b_
.
i32
[
i
]);
if
(
b_
.
i32
[
i
]
<
0
)
{
r_
.
u32
[
i
]
=
HEDLEY_STATIC_CAST
(
uint32_t
,
a_
.
u32
[
i
]
>>
-
b_
.
i32
[
i
]);
}
else
{
r_
.
u32
[
i
]
=
HEDLEY_STATIC_CAST
(
uint32_t
,
a_
.
u32
[
i
]
<<
b_
.
i32
[
i
]);
}
}
}
}
}
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
@@ -3014,18 +3230,22 @@ simde_mm_shl_epi64 (simde__m128i a, simde__m128i b) {
...
@@ -3014,18 +3230,22 @@ simde_mm_shl_epi64 (simde__m128i a, simde__m128i b) {
a_
=
simde__m128i_to_private
(
a
),
a_
=
simde__m128i_to_private
(
a
),
b_
=
simde__m128i_to_private
(
b
);
b_
=
simde__m128i_to_private
(
b
);
SIMDE_VECTORIZE
#if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
u64
)
/
sizeof
(
r_
.
u64
[
0
]))
;
i
++
)
{
r_
.
neon_u64
=
vshlq_u64
(
a_
.
neon_u64
,
b_
.
neon_i64
);
if
(
HEDLEY_UNLIKELY
(
b_
.
i64
[
i
]
<
-
63
||
b_
.
i64
[
i
]
>
63
))
{
#else
r_
.
u64
[
i
]
=
0
;
SIMDE_VECTORIZE
}
else
{
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
u64
)
/
sizeof
(
r_
.
u64
[
0
]))
;
i
++
)
{
if
(
b_
.
i64
[
i
]
<
0
)
{
if
(
HEDLEY_UNLIKELY
(
b_
.
i64
[
i
]
<
-
63
||
b_
.
i64
[
i
]
>
63
)
)
{
r_
.
u64
[
i
]
=
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u64
[
i
]
>>
-
b_
.
i64
[
i
])
;
r_
.
u64
[
i
]
=
0
;
}
else
{
}
else
{
r_
.
u64
[
i
]
=
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u64
[
i
]
<<
b_
.
i64
[
i
]);
if
(
b_
.
i64
[
i
]
<
0
)
{
r_
.
u64
[
i
]
=
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u64
[
i
]
>>
-
b_
.
i64
[
i
]);
}
else
{
r_
.
u64
[
i
]
=
HEDLEY_STATIC_CAST
(
uint64_t
,
a_
.
u64
[
i
]
<<
b_
.
i64
[
i
]);
}
}
}
}
}
}
#endif
return
simde__m128i_from_private
(
r_
);
return
simde__m128i_from_private
(
r_
);
#endif
#endif
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment