Skip to content

Commit 740ee61

Browse files
committed
simde: port simde to Elbrus
1 parent ff523ab commit 740ee61

File tree

3 files changed

+53
-5
lines changed

3 files changed

+53
-5
lines changed

libobs/util/simde/simde-arch.h

+43
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,49 @@
181181
#define SIMDE_ARCH_H8300
182182
#endif
183183

184+
/* Elbrus (8S, 8SV and successors)
185+
<https://en.wikipedia.org/wiki/Elbrus-8S> */
186+
#if defined(__e2k__)
187+
#define SIMDE_ARCH_E2K
188+
#endif
189+
190+
/* SIMD ISA extensions for Elbrus (equivalent to X86 ones) */
191+
#if defined(SIMDE_ARCH_E2K)
192+
#if defined(__MMX__)
193+
#define SIMDE_ARCH_X86_MMX 1
194+
#endif
195+
#if defined(__SSE__)
196+
#define SIMDE_ARCH_X86_SSE 1
197+
#endif
198+
#if defined(__SSE2__)
199+
#define SIMDE_ARCH_X86_SSE2 1
200+
#endif
201+
#if defined(__SSE3__)
202+
#define SIMDE_ARCH_X86_SSE3 1
203+
#endif
204+
#if defined(__SSSE3__)
205+
#define SIMDE_ARCH_X86_SSSE3 1
206+
#endif
207+
#if defined(__SSE4_1__)
208+
#define SIMDE_ARCH_X86_SSE4_1 1
209+
#endif
210+
#if defined(__SSE4_2__)
211+
#define SIMDE_ARCH_X86_SSE4_2 1
212+
#endif
213+
#if defined(__AVX__)
214+
#define SIMDE_ARCH_X86_AVX 1
215+
#endif
216+
#if defined(__AVX2__)
217+
#define SIMDE_ARCH_X86_AVX2 1
218+
#endif
219+
#if defined(__FMA__)
220+
#define SIMDE_ARCH_X86_FMA 1
221+
#endif
222+
#if defined(__PCLMUL__)
223+
#define SIMDE_ARCH_X86_PCLMUL 1
224+
#endif
225+
#endif
226+
184227
/* HP/PA / PA-RISC
185228
<https://en.wikipedia.org/wiki/PA-RISC> */
186229
#if defined(__PA8000__) || defined(__HPPA20__) || defined(__RISC2_0__) || \

libobs/util/simde/simde-common.h

+5
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,11 @@ HEDLEY_DIAGNOSTIC_POP
324324
#define SIMDE_VECTORIZE_REDUCTION(r) HEDLEY_PRAGMA(omp simd reduction(r))
325325
#endif
326326
#define SIMDE_VECTORIZE_ALIGNED(a) HEDLEY_PRAGMA(omp simd aligned(a))
327+
#elif defined(__e2k__)
328+
#define SIMDE_VECTORIZE
329+
#define SIMDE_VECTORIZE_SAFELEN(l)
330+
#define SIMDE_VECTORIZE_REDUCTION(r)
331+
#define SIMDE_VECTORIZE_ALIGNED(a)
327332
#elif defined(SIMDE_ENABLE_CILKPLUS)
328333
#define SIMDE_VECTORIZE HEDLEY_PRAGMA(simd)
329334
#define SIMDE_VECTORIZE_SAFELEN(l) HEDLEY_PRAGMA(simd vectorlength(l))

libobs/util/simde/x86/sse2.h

+5-5
Original file line numberDiff line numberDiff line change
@@ -5862,7 +5862,7 @@ simde__m128i simde_mm_slli_epi16(simde__m128i a, const int imm8)
58625862
simde__m128i_private r_, a_ = simde__m128i_to_private(a);
58635863

58645864
#if defined(SIMDE_VECTOR_SUBSCRIPT_SCALAR)
5865-
r_.i16 = a_.i16 << (imm8 & 0xff);
5865+
r_.i16 = a_.i16 << (uint8_t)(imm8 & 0xff);
58665866
#else
58675867
const int s =
58685868
(imm8 >
@@ -5982,7 +5982,7 @@ simde__m128i simde_mm_slli_epi64(simde__m128i a, const int imm8)
59825982
simde__m128i_private r_, a_ = simde__m128i_to_private(a);
59835983

59845984
#if defined(SIMDE_VECTOR_SUBSCRIPT_SCALAR)
5985-
r_.i64 = a_.i64 << imm8;
5985+
r_.i64 = a_.i64 << (uint8_t)imm8;
59865986
#else
59875987
SIMDE_VECTORIZE
59885988
for (size_t i = 0; i < (sizeof(r_.i64) / sizeof(r_.i64[0])); i++) {
@@ -6028,7 +6028,7 @@ simde__m128i simde_mm_srli_epi16(simde__m128i a, const int imm8)
60286028
simde__m128i_private r_, a_ = simde__m128i_to_private(a);
60296029

60306030
#if defined(SIMDE_VECTOR_SUBSCRIPT_SCALAR)
6031-
r_.u16 = a_.u16 >> imm8;
6031+
r_.u16 = a_.u16 >> (uint8_t)imm8;
60326032
#else
60336033
SIMDE_VECTORIZE
60346034
for (size_t i = 0; i < (sizeof(r_.i16) / sizeof(r_.i16[0])); i++) {
@@ -6082,7 +6082,7 @@ simde__m128i simde_mm_srli_epi32(simde__m128i a, const int imm8)
60826082
simde__m128i_private r_, a_ = simde__m128i_to_private(a);
60836083

60846084
#if defined(SIMDE_VECTOR_SUBSCRIPT_SCALAR)
6085-
r_.u32 = a_.u32 >> (imm8 & 0xff);
6085+
r_.u32 = a_.u32 >> (uint8_t)(imm8 & 0xff);
60866086
#else
60876087
SIMDE_VECTORIZE
60886088
for (size_t i = 0; i < (sizeof(r_.i32) / sizeof(r_.i32[0])); i++) {
@@ -6148,7 +6148,7 @@ simde__m128i simde_mm_srli_epi64(simde__m128i a, const int imm8)
61486148
r_.neon_u64 = vshlq_u64(a_.neon_u64, vdupq_n_s64(-imm8));
61496149
#else
61506150
#if defined(SIMDE_VECTOR_SUBSCRIPT_SCALAR) && !defined(SIMDE_BUG_GCC_94488)
6151-
r_.u64 = a_.u64 >> imm8;
6151+
r_.u64 = a_.u64 >> (uint8_t)imm8;
61526152
#else
61536153
SIMDE_VECTORIZE
61546154
for (size_t i = 0; i < (sizeof(r_.i64) / sizeof(r_.i64[0])); i++) {

0 commit comments

Comments
 (0)