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
391b06b1
Commit
391b06b1
authored
Feb 08, 2021
by
makise-homura
Committed by
Evan Nemerson
Feb 08, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
e2k, ppc: Make shifts unsigned
parent
5c2edbfc
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
21 additions
and
11 deletions
+21
-11
simde-common.h
simde-common.h
+10
-0
x86/avx2.h
x86/avx2.h
+6
-6
x86/avx512/srli.h
x86/avx512/srli.h
+1
-1
x86/sse2.h
x86/sse2.h
+4
-4
No files found.
simde-common.h
View file @
391b06b1
...
...
@@ -914,4 +914,14 @@ HEDLEY_DIAGNOSTIC_POP
# define SIMDE_BUG_IGNORE_SIGN_CONVERSION(expr) (expr)
#endif
/* Usually the shift count is signed (for example, NEON or SSE).
* OTOH, unsigned is good for PPC (vec_srl uses unsigned), and the only option for E2K.
* Further info: https://github.com/simd-everywhere/simde/pull/700
*/
#if defined(SIMDE_ARCH_E2K) || defined(SIMDE_ARCH_POWER)
#define SIMDE_CAST_VECTOR_SHIFT_COUNT(width, value) HEDLEY_STATIC_CAST(uint##width##_t, (value))
#else
#define SIMDE_CAST_VECTOR_SHIFT_COUNT(width, value) HEDLEY_STATIC_CAST(int##width##_t, (value))
#endif
#endif
/* !defined(SIMDE_COMMON_H) */
x86/avx2.h
View file @
391b06b1
...
...
@@ -4716,7 +4716,7 @@ simde_mm256_srl_epi16 (simde__m256i a, simde__m128i count) {
uint64_t
shift
=
HEDLEY_STATIC_CAST
(
uint64_t
,
(
count_
.
i64
[
0
]
>
16
?
16
:
count_
.
i64
[
0
]));
#if defined(SIMDE_VECTOR_SUBSCRIPT_SCALAR)
r_
.
u16
=
a_
.
u16
>>
HEDLEY_STATIC_CAST
(
int16_t
,
shift
);
r_
.
u16
=
a_
.
u16
>>
SIMDE_CAST_VECTOR_SHIFT_COUNT
(
16
,
shift
);
#else
SIMDE_VECTORIZE
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i16
)
/
sizeof
(
r_
.
i16
[
0
]))
;
i
++
)
{
...
...
@@ -4753,7 +4753,7 @@ simde_mm256_srl_epi32 (simde__m256i a, simde__m128i count) {
uint64_t
shift
=
HEDLEY_STATIC_CAST
(
uint64_t
,
(
count_
.
i64
[
0
]
>
32
?
32
:
count_
.
i64
[
0
]));
#if defined(SIMDE_VECTOR_SUBSCRIPT_SCALAR)
r_
.
u32
=
a_
.
u32
>>
HEDLEY_STATIC_CAST
(
int32_t
,
shift
);
r_
.
u32
=
a_
.
u32
>>
SIMDE_CAST_VECTOR_SHIFT_COUNT
(
32
,
shift
);
#else
SIMDE_VECTORIZE
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i32
)
/
sizeof
(
r_
.
i32
[
0
]))
;
i
++
)
{
...
...
@@ -4790,7 +4790,7 @@ simde_mm256_srl_epi64 (simde__m256i a, simde__m128i count) {
uint64_t
shift
=
HEDLEY_STATIC_CAST
(
uint64_t
,
(
count_
.
i64
[
0
]
>
64
?
64
:
count_
.
i64
[
0
]));
#if defined(SIMDE_VECTOR_SUBSCRIPT_SCALAR)
r_
.
u64
=
a_
.
u64
>>
HEDLEY_STATIC_CAST
(
int64_t
,
shift
);
r_
.
u64
=
a_
.
u64
>>
SIMDE_CAST_VECTOR_SHIFT_COUNT
(
64
,
shift
);
#else
SIMDE_VECTORIZE
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i64
)
/
sizeof
(
r_
.
i64
[
0
]))
;
i
++
)
{
...
...
@@ -4828,7 +4828,7 @@ simde_mm256_srli_epi16 (simde__m256i a, const int imm8)
simde_memset
(
&
r_
,
0
,
sizeof
(
r_
));
}
else
{
#if defined(SIMDE_VECTOR_SUBSCRIPT_SCALAR)
r_
.
u16
=
a_
.
u16
>>
HEDLEY_STATIC_CAST
(
int16_t
,
imm8
);
r_
.
u16
=
a_
.
u16
>>
SIMDE_CAST_VECTOR_SHIFT_COUNT
(
16
,
imm8
);
#else
SIMDE_VECTORIZE
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
u16
)
/
sizeof
(
r_
.
u16
[
0
]))
;
i
++
)
{
...
...
@@ -4867,7 +4867,7 @@ simde_mm256_srli_epi32 (simde__m256i a, const int imm8)
r_
.
altivec_u32
[
i
]
=
vec_sr
(
a_
.
altivec_u32
[
i
],
sv
);
}
#elif defined(SIMDE_VECTOR_SUBSCRIPT_SCALAR)
r_
.
u32
=
a_
.
u32
>>
HEDLEY_STATIC_CAST
(
int16_t
,
imm8
);
r_
.
u32
=
a_
.
u32
>>
SIMDE_CAST_VECTOR_SHIFT_COUNT
(
16
,
imm8
);
#else
SIMDE_VECTORIZE
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
u32
)
/
sizeof
(
r_
.
u32
[
0
]))
;
i
++
)
{
...
...
@@ -4899,7 +4899,7 @@ simde_mm256_srli_epi64 (simde__m256i a, const int imm8)
a_
=
simde__m256i_to_private
(
a
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_SCALAR)
r_
.
u64
=
a_
.
u64
>>
HEDLEY_STATIC_CAST
(
int32_t
,
imm8
);
r_
.
u64
=
a_
.
u64
>>
SIMDE_CAST_VECTOR_SHIFT_COUNT
(
32
,
imm8
);
#else
SIMDE_VECTORIZE
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
u64
)
/
sizeof
(
r_
.
u64
[
0
]))
;
i
++
)
{
...
...
x86/avx512/srli.h
View file @
391b06b1
...
...
@@ -58,7 +58,7 @@ simde_mm512_srli_epi16 (simde__m512i a, const unsigned int imm8)
return
simde_mm512_setzero_si512
();
#if defined(SIMDE_VECTOR_SUBSCRIPT_SCALAR)
r_
.
u16
=
a_
.
u16
>>
HEDLEY_STATIC_CAST
(
int16_t
,
imm8
);
r_
.
u16
=
a_
.
u16
>>
SIMDE_CAST_VECTOR_SHIFT_COUNT
(
16
,
imm8
);
#else
SIMDE_VECTORIZE
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
u16
)
/
sizeof
(
r_
.
u16
[
0
]))
;
i
++
)
{
...
...
x86/sse2.h
View file @
391b06b1
...
...
@@ -5722,7 +5722,7 @@ simde_mm_slli_epi16 (simde__m128i a, const int imm8)
a_
=
simde__m128i_to_private
(
a
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_SCALAR)
r_
.
i16
=
a_
.
i16
<<
(
imm8
&
0xff
);
r_
.
i16
=
a_
.
i16
<<
SIMDE_CAST_VECTOR_SHIFT_COUNT
(
8
,
imm8
&
0xff
);
#else
const
int
s
=
(
imm8
>
HEDLEY_STATIC_CAST
(
int
,
sizeof
(
r_
.
i16
[
0
])
*
CHAR_BIT
)
-
1
)
?
0
:
imm8
;
SIMDE_VECTORIZE
...
...
@@ -5879,7 +5879,7 @@ simde_mm_srli_epi16 (simde__m128i a, const int imm8)
a_
=
simde__m128i_to_private
(
a
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_SCALAR)
r_
.
u16
=
a_
.
u16
>>
imm8
;
r_
.
u16
=
a_
.
u16
>>
SIMDE_CAST_VECTOR_SHIFT_COUNT
(
8
,
imm8
)
;
#else
SIMDE_VECTORIZE
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i16
)
/
sizeof
(
r_
.
i16
[
0
]))
;
i
++
)
{
...
...
@@ -5928,7 +5928,7 @@ simde_mm_srli_epi32 (simde__m128i a, const int imm8)
a_
=
simde__m128i_to_private
(
a
);
#if defined(SIMDE_VECTOR_SUBSCRIPT_SCALAR)
r_
.
u32
=
a_
.
u32
>>
(
imm8
&
0xff
);
r_
.
u32
=
a_
.
u32
>>
SIMDE_CAST_VECTOR_SHIFT_COUNT
(
8
,
imm8
&
0xff
);
#else
SIMDE_VECTORIZE
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i32
)
/
sizeof
(
r_
.
i32
[
0
]))
;
i
++
)
{
...
...
@@ -5992,7 +5992,7 @@ simde_mm_srli_epi64 (simde__m128i a, const int imm8)
r_
.
neon_u64
=
vshlq_u64
(
a_
.
neon_u64
,
vdupq_n_s64
(
-
imm8
));
#else
#if defined(SIMDE_VECTOR_SUBSCRIPT_SCALAR) && !defined(SIMDE_BUG_GCC_94488)
r_
.
u64
=
a_
.
u64
>>
imm8
;
r_
.
u64
=
a_
.
u64
>>
SIMDE_CAST_VECTOR_SHIFT_COUNT
(
8
,
imm8
)
;
#else
SIMDE_VECTORIZE
for
(
size_t
i
=
0
;
i
<
(
sizeof
(
r_
.
i64
)
/
sizeof
(
r_
.
i64
[
0
]))
;
i
++
)
{
...
...
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