Commit 24be11d0 authored by Michael R. Crusoe's avatar Michael R. Crusoe Committed by Michael R. Crusoe

gh-actions: test mips64el using qemu on gcc12/clang16

parent f0bd155c
...@@ -37,16 +37,15 @@ SIMDE_FUNCTION_ATTRIBUTES ...@@ -37,16 +37,15 @@ SIMDE_FUNCTION_ATTRIBUTES
simde_v16i8 simde_v16i8
simde_msa_ld_b(const void * rs, const int s10) simde_msa_ld_b(const void * rs, const int s10)
SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023) { SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023) {
#if defined(SIMDE_MIPS_MSA_NATIVE)
return __msa_ld_b(rs, s10);
#else
simde_v16i8 r; simde_v16i8 r;
simde_memcpy(&r, &(HEDLEY_REINTERPRET_CAST(const int8_t*, rs)[s10]), sizeof(r)); simde_memcpy(&r, &(HEDLEY_REINTERPRET_CAST(const int8_t*, rs)[s10]), sizeof(r));
return r; return r;
#endif
} }
#if defined(SIMDE_MIPS_MSA_NATIVE)
#define simde_msa_ld_b(rs, s10) __msa_ld_b((rs), (s10))
#endif
#if defined(SIMDE_MIPS_MSA_ENABLE_NATIVE_ALIASES) #if defined(SIMDE_MIPS_MSA_ENABLE_NATIVE_ALIASES)
#undef __msa_ld_b #undef __msa_ld_b
#define __msa_ld_b(rs, s10) simde_msa_ld_b((rs), (s10)) #define __msa_ld_b(rs, s10) simde_msa_ld_b((rs), (s10))
...@@ -57,16 +56,15 @@ simde_v8i16 ...@@ -57,16 +56,15 @@ simde_v8i16
simde_msa_ld_h(const void * rs, const int s10) simde_msa_ld_h(const void * rs, const int s10)
SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023) SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023)
HEDLEY_REQUIRE_MSG((s10 % sizeof(int16_t)) == 0, "`s10' must be a multiple of sizeof(int16_t)") { HEDLEY_REQUIRE_MSG((s10 % sizeof(int16_t)) == 0, "`s10' must be a multiple of sizeof(int16_t)") {
#if defined(SIMDE_MIPS_MSA_NATIVE)
return __msa_ld_h(rs, s10);
#else
simde_v8i16 r; simde_v8i16 r;
simde_memcpy(&r, &(HEDLEY_REINTERPRET_CAST(const int8_t*, rs)[s10]), sizeof(r)); simde_memcpy(&r, &(HEDLEY_REINTERPRET_CAST(const int8_t*, rs)[s10]), sizeof(r));
return r; return r;
#endif
} }
#if defined(SIMDE_MIPS_MSA_NATIVE)
#define simde_msa_ld_h(rs, s10) __msa_ld_h((rs), (s10))
#endif
#if defined(SIMDE_MIPS_MSA_ENABLE_NATIVE_ALIASES) #if defined(SIMDE_MIPS_MSA_ENABLE_NATIVE_ALIASES)
#undef __msa_ld_h #undef __msa_ld_h
#define __msa_ld_h(rs, s10) simde_msa_ld_h((rs), (s10)) #define __msa_ld_h(rs, s10) simde_msa_ld_h((rs), (s10))
...@@ -77,16 +75,15 @@ simde_v4i32 ...@@ -77,16 +75,15 @@ simde_v4i32
simde_msa_ld_w(const void * rs, const int s10) simde_msa_ld_w(const void * rs, const int s10)
SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023) SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023)
HEDLEY_REQUIRE_MSG((s10 % sizeof(int32_t)) == 0, "`s10' must be a multiple of sizeof(int32_t)") { HEDLEY_REQUIRE_MSG((s10 % sizeof(int32_t)) == 0, "`s10' must be a multiple of sizeof(int32_t)") {
#if defined(SIMDE_MIPS_MSA_NATIVE)
return __msa_ld_w(rs, s10);
#else
simde_v4i32 r; simde_v4i32 r;
simde_memcpy(&r, &(HEDLEY_REINTERPRET_CAST(const int8_t*, rs)[s10]), sizeof(r)); simde_memcpy(&r, &(HEDLEY_REINTERPRET_CAST(const int8_t*, rs)[s10]), sizeof(r));
return r; return r;
#endif
} }
#if defined(SIMDE_MIPS_MSA_NATIVE)
#define simde_msa_ld_w(rs, s10) __msa_ld_w((rs), (s10))
#endif
#if defined(SIMDE_MIPS_MSA_ENABLE_NATIVE_ALIASES) #if defined(SIMDE_MIPS_MSA_ENABLE_NATIVE_ALIASES)
#undef __msa_ld_w #undef __msa_ld_w
#define __msa_ld_w(rs, s10) simde_msa_ld_w((rs), (s10)) #define __msa_ld_w(rs, s10) simde_msa_ld_w((rs), (s10))
...@@ -97,16 +94,15 @@ simde_v2i64 ...@@ -97,16 +94,15 @@ simde_v2i64
simde_msa_ld_d(const void * rs, const int s10) simde_msa_ld_d(const void * rs, const int s10)
SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023) SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023)
HEDLEY_REQUIRE_MSG((s10 % sizeof(int64_t)) == 0, "`s10' must be a multiple of sizeof(int64_t)") { HEDLEY_REQUIRE_MSG((s10 % sizeof(int64_t)) == 0, "`s10' must be a multiple of sizeof(int64_t)") {
#if defined(SIMDE_MIPS_MSA_NATIVE)
return __msa_ld_d(rs, s10);
#else
simde_v2i64 r; simde_v2i64 r;
simde_memcpy(&r, &(HEDLEY_REINTERPRET_CAST(const int8_t*, rs)[s10]), sizeof(r)); simde_memcpy(&r, &(HEDLEY_REINTERPRET_CAST(const int8_t*, rs)[s10]), sizeof(r));
return r; return r;
#endif
} }
#if defined(SIMDE_MIPS_MSA_NATIVE)
#define simde_msa_ld_d(rs, s10) __msa_ld_d((rs), (s10))
#endif
#if defined(SIMDE_MIPS_MSA_ENABLE_NATIVE_ALIASES) #if defined(SIMDE_MIPS_MSA_ENABLE_NATIVE_ALIASES)
#undef __msa_ld_d #undef __msa_ld_d
#define __msa_ld_d(rs, s10) simde_msa_ld_d((rs), (s10)) #define __msa_ld_d(rs, s10) simde_msa_ld_d((rs), (s10))
...@@ -116,96 +112,90 @@ SIMDE_FUNCTION_ATTRIBUTES ...@@ -116,96 +112,90 @@ SIMDE_FUNCTION_ATTRIBUTES
simde_v16u8 simde_v16u8
simde_x_msa_ld_u_b(const void * rs, const int s10) simde_x_msa_ld_u_b(const void * rs, const int s10)
SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023) { SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023) {
#if defined(SIMDE_MIPS_MSA_NATIVE)
return HEDLEY_REINTERPRET_CAST(simde_v16u8, __msa_ld_b(rs, s10));
#else
simde_v16u8 r; simde_v16u8 r;
simde_memcpy(&r, &(HEDLEY_REINTERPRET_CAST(const int8_t*, rs)[s10]), sizeof(r)); simde_memcpy(&r, &(HEDLEY_REINTERPRET_CAST(const int8_t*, rs)[s10]), sizeof(r));
return r; return r;
#endif
} }
#if defined(SIMDE_MIPS_MSA_NATIVE)
#define simde_x_msa_ld_u_b(rs, s10) HEDLEY_REINTERPRET_CAST(simde_v16u8, __msa_ld_b((rs), (s10)))
#endif
SIMDE_FUNCTION_ATTRIBUTES SIMDE_FUNCTION_ATTRIBUTES
simde_v8u16 simde_v8u16
simde_x_msa_ld_u_h(const void * rs, const int s10) simde_x_msa_ld_u_h(const void * rs, const int s10)
SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023) SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023)
HEDLEY_REQUIRE_MSG((s10 % sizeof(int16_t)) == 0, "`s10' must be a multiple of sizeof(int16_t)") { HEDLEY_REQUIRE_MSG((s10 % sizeof(int16_t)) == 0, "`s10' must be a multiple of sizeof(int16_t)") {
#if defined(SIMDE_MIPS_MSA_NATIVE)
return HEDLEY_REINTERPRET_CAST(simde_v8u16, __msa_ld_b(rs, s10));
#else
simde_v8u16 r; simde_v8u16 r;
simde_memcpy(&r, &(HEDLEY_REINTERPRET_CAST(const int8_t*, rs)[s10]), sizeof(r)); simde_memcpy(&r, &(HEDLEY_REINTERPRET_CAST(const int8_t*, rs)[s10]), sizeof(r));
return r; return r;
#endif
} }
#if defined(SIMDE_MIPS_MSA_NATIVE)
#define simde_x_msa_ld_u_h(rs, s10) HEDLEY_REINTERPRET_CAST(simde_v8u16, __msa_ld_b((rs), (s10)))
#endif
SIMDE_FUNCTION_ATTRIBUTES SIMDE_FUNCTION_ATTRIBUTES
simde_v4u32 simde_v4u32
simde_x_msa_ld_u_w(const void * rs, const int s10) simde_x_msa_ld_u_w(const void * rs, const int s10)
SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023) SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023)
HEDLEY_REQUIRE_MSG((s10 % sizeof(int32_t)) == 0, "`s10' must be a multiple of sizeof(int32_t)") { HEDLEY_REQUIRE_MSG((s10 % sizeof(int32_t)) == 0, "`s10' must be a multiple of sizeof(int32_t)") {
#if defined(SIMDE_MIPS_MSA_NATIVE)
return HEDLEY_REINTERPRET_CAST(simde_v4u32, __msa_ld_b(rs, s10));
#else
simde_v4u32 r; simde_v4u32 r;
simde_memcpy(&r, &(HEDLEY_REINTERPRET_CAST(const int8_t*, rs)[s10]), sizeof(r)); simde_memcpy(&r, &(HEDLEY_REINTERPRET_CAST(const int8_t*, rs)[s10]), sizeof(r));
return r; return r;
#endif
} }
#if defined(SIMDE_MIPS_MSA_NATIVE)
#define simde_x_msa_ld_u_w(rs, s10) HEDLEY_REINTERPRET_CAST(simde_v4u32, __msa_ld_b((rs), (s10)))
#endif
SIMDE_FUNCTION_ATTRIBUTES SIMDE_FUNCTION_ATTRIBUTES
simde_v2u64 simde_v2u64
simde_x_msa_ld_u_d(const void * rs, const int s10) simde_x_msa_ld_u_d(const void * rs, const int s10)
SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023) SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023)
HEDLEY_REQUIRE_MSG((s10 % sizeof(int64_t)) == 0, "`s10' must be a multiple of sizeof(int64_t)") { HEDLEY_REQUIRE_MSG((s10 % sizeof(int64_t)) == 0, "`s10' must be a multiple of sizeof(int64_t)") {
#if defined(SIMDE_MIPS_MSA_NATIVE)
return HEDLEY_REINTERPRET_CAST(simde_v2u64, __msa_ld_b(rs, s10));
#else
simde_v2u64 r; simde_v2u64 r;
simde_memcpy(&r, &(HEDLEY_REINTERPRET_CAST(const int8_t*, rs)[s10]), sizeof(r)); simde_memcpy(&r, &(HEDLEY_REINTERPRET_CAST(const int8_t*, rs)[s10]), sizeof(r));
return r; return r;
#endif
} }
#if defined(SIMDE_MIPS_MSA_NATIVE)
#define simde_x_msa_ld_u_d(rs, s10) HEDLEY_REINTERPRET_CAST(simde_v2u64, __msa_ld_b((rs), (s10)))
#endif
SIMDE_FUNCTION_ATTRIBUTES SIMDE_FUNCTION_ATTRIBUTES
simde_v4f32 simde_v4f32
simde_x_msa_fld_w(const void * rs, const int s10) simde_x_msa_fld_w(const void * rs, const int s10)
SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023) SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023)
HEDLEY_REQUIRE_MSG((s10 % sizeof(int32_t)) == 0, "`s10' must be a multiple of sizeof(int32_t)") { HEDLEY_REQUIRE_MSG((s10 % sizeof(int32_t)) == 0, "`s10' must be a multiple of sizeof(int32_t)") {
#if defined(SIMDE_MIPS_MSA_NATIVE)
return HEDLEY_REINTERPRET_CAST(simde_v4f32, __msa_ld_b(rs, s10));
#else
simde_v4f32 r; simde_v4f32 r;
simde_memcpy(&r, &(HEDLEY_REINTERPRET_CAST(const int8_t*, rs)[s10]), sizeof(r)); simde_memcpy(&r, &(HEDLEY_REINTERPRET_CAST(const int8_t*, rs)[s10]), sizeof(r));
return r; return r;
#endif
} }
#if defined(SIMDE_MIPS_MSA_NATIVE)
#define simde_x_msa_fld_w(rs, s10) HEDLEY_REINTERPRET_CAST(simde_v4f32, __msa_ld_b((rs), (s10)))
#endif
SIMDE_FUNCTION_ATTRIBUTES SIMDE_FUNCTION_ATTRIBUTES
simde_v2f64 simde_v2f64
simde_x_msa_fld_d(const void * rs, const int s10) simde_x_msa_fld_d(const void * rs, const int s10)
SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023) SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023)
HEDLEY_REQUIRE_MSG((s10 % sizeof(int64_t)) == 0, "`s10' must be a multiple of sizeof(int64_t)") { HEDLEY_REQUIRE_MSG((s10 % sizeof(int64_t)) == 0, "`s10' must be a multiple of sizeof(int64_t)") {
#if defined(SIMDE_MIPS_MSA_NATIVE)
return HEDLEY_REINTERPRET_CAST(simde_v2f64, __msa_ld_b(rs, s10));
#else
simde_v2f64 r; simde_v2f64 r;
simde_memcpy(&r, &(HEDLEY_REINTERPRET_CAST(const int8_t*, rs)[s10]), sizeof(r)); simde_memcpy(&r, &(HEDLEY_REINTERPRET_CAST(const int8_t*, rs)[s10]), sizeof(r));
return r; return r;
#endif
} }
#if defined(SIMDE_MIPS_MSA_NATIVE)
#define simde_x_msa_fld_d(rs, s10) HEDLEY_REINTERPRET_CAST(simde_v2f64, __msa_ld_b((rs), (s10)))
#endif
SIMDE_END_DECLS_ SIMDE_END_DECLS_
HEDLEY_DIAGNOSTIC_POP HEDLEY_DIAGNOSTIC_POP
......
...@@ -37,12 +37,11 @@ SIMDE_FUNCTION_ATTRIBUTES ...@@ -37,12 +37,11 @@ SIMDE_FUNCTION_ATTRIBUTES
void void
simde_msa_st_b(simde_v16i8 a, void * rs, const int s10) simde_msa_st_b(simde_v16i8 a, void * rs, const int s10)
SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023) { SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023) {
#if defined(SIMDE_MIPS_MSA_NATIVE)
return __msa_st_b(a, rs, s10);
#else
simde_memcpy(&(HEDLEY_REINTERPRET_CAST(int8_t*, rs)[s10]), &a, sizeof(a)); simde_memcpy(&(HEDLEY_REINTERPRET_CAST(int8_t*, rs)[s10]), &a, sizeof(a));
#endif
} }
#if defined(SIMDE_MIPS_MSA_NATIVE)
#define simde_msa_st_b(a, rs, s10) __msa_st_b((a), (rs), (s10));
#endif
#if defined(SIMDE_MIPS_MSA_ENABLE_NATIVE_ALIASES) #if defined(SIMDE_MIPS_MSA_ENABLE_NATIVE_ALIASES)
#undef __msa_st_b #undef __msa_st_b
#define __msa_st_b(a, rs, s10) simde_msa_st_b((a), (rs), (s10)) #define __msa_st_b(a, rs, s10) simde_msa_st_b((a), (rs), (s10))
...@@ -53,12 +52,11 @@ void ...@@ -53,12 +52,11 @@ void
simde_msa_st_h(simde_v8i16 a, void * rs, const int s10) simde_msa_st_h(simde_v8i16 a, void * rs, const int s10)
SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023) SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023)
HEDLEY_REQUIRE_MSG((s10 % sizeof(int16_t)) == 0, "`s10' must be a multiple of sizeof(int16_t)") { HEDLEY_REQUIRE_MSG((s10 % sizeof(int16_t)) == 0, "`s10' must be a multiple of sizeof(int16_t)") {
#if defined(SIMDE_MIPS_MSA_NATIVE)
return __msa_st_h(a, rs, s10);
#else
simde_memcpy(&(HEDLEY_REINTERPRET_CAST(int8_t*, rs)[s10]), &a, sizeof(a)); simde_memcpy(&(HEDLEY_REINTERPRET_CAST(int8_t*, rs)[s10]), &a, sizeof(a));
#endif
} }
#if defined(SIMDE_MIPS_MSA_NATIVE)
#define simde_msa_st_h(a, rs, s10) __msa_st_h((a), (rs), (s10));
#endif
#if defined(SIMDE_MIPS_MSA_ENABLE_NATIVE_ALIASES) #if defined(SIMDE_MIPS_MSA_ENABLE_NATIVE_ALIASES)
#undef __msa_st_h #undef __msa_st_h
#define __msa_st_h(a, rs, s10) simde_msa_st_h((a), (rs), (s10)) #define __msa_st_h(a, rs, s10) simde_msa_st_h((a), (rs), (s10))
...@@ -69,12 +67,11 @@ void ...@@ -69,12 +67,11 @@ void
simde_msa_st_w(simde_v4i32 a, void * rs, const int s10) simde_msa_st_w(simde_v4i32 a, void * rs, const int s10)
SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023) SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023)
HEDLEY_REQUIRE_MSG((s10 % sizeof(int32_t)) == 0, "`s10' must be a multiple of sizeof(int32_t)") { HEDLEY_REQUIRE_MSG((s10 % sizeof(int32_t)) == 0, "`s10' must be a multiple of sizeof(int32_t)") {
#if defined(SIMDE_MIPS_MSA_NATIVE)
return __msa_st_w(a, rs, s10);
#else
simde_memcpy(&(HEDLEY_REINTERPRET_CAST(int8_t*, rs)[s10]), &a, sizeof(a)); simde_memcpy(&(HEDLEY_REINTERPRET_CAST(int8_t*, rs)[s10]), &a, sizeof(a));
#endif
} }
#if defined(SIMDE_MIPS_MSA_NATIVE)
#define simde_msa_st_w(a, rs, s10) __msa_st_w((a), (rs), (s10));
#endif
#if defined(SIMDE_MIPS_MSA_ENABLE_NATIVE_ALIASES) #if defined(SIMDE_MIPS_MSA_ENABLE_NATIVE_ALIASES)
#undef __msa_st_w #undef __msa_st_w
#define __msa_st_w(a, rs, s10) simde_msa_st_w((a), (rs), (s10)) #define __msa_st_w(a, rs, s10) simde_msa_st_w((a), (rs), (s10))
...@@ -85,12 +82,11 @@ void ...@@ -85,12 +82,11 @@ void
simde_msa_st_d(simde_v2i64 a, void * rs, const int s10) simde_msa_st_d(simde_v2i64 a, void * rs, const int s10)
SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023) SIMDE_REQUIRE_CONSTANT_RANGE(s10, 0, 1023)
HEDLEY_REQUIRE_MSG((s10 % sizeof(int64_t)) == 0, "`s10' must be a multiple of sizeof(int64_t)") { HEDLEY_REQUIRE_MSG((s10 % sizeof(int64_t)) == 0, "`s10' must be a multiple of sizeof(int64_t)") {
#if defined(SIMDE_MIPS_MSA_NATIVE)
return __msa_st_d(a, rs, s10);
#else
simde_memcpy(&(HEDLEY_REINTERPRET_CAST(int8_t*, rs)[s10]), &a, sizeof(a)); simde_memcpy(&(HEDLEY_REINTERPRET_CAST(int8_t*, rs)[s10]), &a, sizeof(a));
#endif
} }
#if defined(SIMDE_MIPS_MSA_NATIVE)
#define simde_msa_st_d(a, rs, s10) __msa_st_d((a), (rs), (s10));
#endif
#if defined(SIMDE_MIPS_MSA_ENABLE_NATIVE_ALIASES) #if defined(SIMDE_MIPS_MSA_ENABLE_NATIVE_ALIASES)
#undef __msa_st_d #undef __msa_st_d
#define __msa_st_d(a, rs, s10) simde_msa_st_d((a), (rs), (s10)) #define __msa_st_d(a, rs, s10) simde_msa_st_d((a), (rs), (s10))
......
...@@ -69,6 +69,7 @@ SIMDE_BEGIN_DECLS_ ...@@ -69,6 +69,7 @@ SIMDE_BEGIN_DECLS_
#define SIMDE_FLOAT16_API SIMDE_FLOAT16_API_FP16 #define SIMDE_FLOAT16_API SIMDE_FLOAT16_API_FP16
#elif !defined(__EMSCRIPTEN__) && !(defined(__clang__) && defined(SIMDE_ARCH_POWER)) && \ #elif !defined(__EMSCRIPTEN__) && !(defined(__clang__) && defined(SIMDE_ARCH_POWER)) && \
!(defined(HEDLEY_MSVC_VERSION) && defined(__clang__)) && \ !(defined(HEDLEY_MSVC_VERSION) && defined(__clang__)) && \
!(defined(SIMDE_ARCH_MIPS) && defined(__clang__)) && \
!(defined(__clang__) && defined(SIMDE_ARCH_RISCV64)) && ( \ !(defined(__clang__) && defined(SIMDE_ARCH_RISCV64)) && ( \
defined(SIMDE_X86_AVX512FP16_NATIVE) || \ defined(SIMDE_X86_AVX512FP16_NATIVE) || \
(defined(SIMDE_ARCH_X86_SSE2) && HEDLEY_GCC_VERSION_CHECK(12,0,0)) || \ (defined(SIMDE_ARCH_X86_SSE2) && HEDLEY_GCC_VERSION_CHECK(12,0,0)) || \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment