mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-05-30 08:27:39 +00:00
Sunset SDL_HasRDTSC
This commit is contained in:
parent
513025b182
commit
b0a5182e84
10 changed files with 22 additions and 133 deletions
|
@ -373,7 +373,6 @@ set_option(SDL_ASSEMBLY "Enable assembly routines" ${SDL_ASSEMBLY_DEF
|
||||||
dep_option(SDL_AVX "Use AVX assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF)
|
dep_option(SDL_AVX "Use AVX assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF)
|
||||||
dep_option(SDL_AVX2 "Use AVX2 assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF)
|
dep_option(SDL_AVX2 "Use AVX2 assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF)
|
||||||
dep_option(SDL_AVX512 "Use AVX512 assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF)
|
dep_option(SDL_AVX512 "Use AVX512 assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF)
|
||||||
dep_option(SDL_RDTSC "Use RDTSC assembly routine(s)" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF)
|
|
||||||
dep_option(SDL_SSE "Use SSE assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF)
|
dep_option(SDL_SSE "Use SSE assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF)
|
||||||
dep_option(SDL_SSE2 "Use SSE2 assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF)
|
dep_option(SDL_SSE2 "Use SSE2 assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF)
|
||||||
dep_option(SDL_SSE3 "Use SSE3 assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF)
|
dep_option(SDL_SSE3 "Use SSE3 assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF)
|
||||||
|
@ -734,20 +733,6 @@ endif()
|
||||||
if(SDL_ASSEMBLY)
|
if(SDL_ASSEMBLY)
|
||||||
set(HAVE_ASSEMBLY TRUE)
|
set(HAVE_ASSEMBLY TRUE)
|
||||||
|
|
||||||
if(SDL_RDTSC)
|
|
||||||
check_c_source_compiles("
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
# include <intrin.h>
|
|
||||||
#else
|
|
||||||
# include <x86intrin.h>
|
|
||||||
#endif
|
|
||||||
int main(int argc, char *argv[]) {
|
|
||||||
return (int)__rdtsc();
|
|
||||||
}" COMPILER_SUPPORTS_RDTSC)
|
|
||||||
if(COMPILER_SUPPORTS_RDTSC)
|
|
||||||
set(HAVE_RDTSC TRUE)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
if(SDL_MMX)
|
if(SDL_MMX)
|
||||||
cmake_push_check_state()
|
cmake_push_check_state()
|
||||||
if(USE_GCC OR USE_CLANG OR USE_INTELCC)
|
if(USE_GCC OR USE_CLANG OR USE_INTELCC)
|
||||||
|
@ -1062,10 +1047,6 @@ if(SDL_ASSEMBLY)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT HAVE_RDTSC)
|
|
||||||
set(SDL_DISABLE_RDTSC 1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT HAVE_MMX)
|
if(NOT HAVE_MMX)
|
||||||
set(SDL_DISABLE_MMX 1)
|
set(SDL_DISABLE_MMX 1)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -66,27 +66,6 @@ extern DECLSPEC int SDLCALL SDL_GetCPUCount(void);
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC int SDLCALL SDL_GetCPUCacheLineSize(void);
|
extern DECLSPEC int SDLCALL SDL_GetCPUCacheLineSize(void);
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine whether the CPU has the RDTSC instruction.
|
|
||||||
*
|
|
||||||
* This always returns false on CPUs that aren't using Intel instruction sets.
|
|
||||||
*
|
|
||||||
* \returns SDL_TRUE if the CPU has the RDTSC instruction or SDL_FALSE if not.
|
|
||||||
*
|
|
||||||
* \since This function is available since SDL 3.0.0.
|
|
||||||
*
|
|
||||||
* \sa SDL_HasAltiVec
|
|
||||||
* \sa SDL_HasAVX
|
|
||||||
* \sa SDL_HasAVX2
|
|
||||||
* \sa SDL_HasMMX
|
|
||||||
* \sa SDL_HasSSE
|
|
||||||
* \sa SDL_HasSSE2
|
|
||||||
* \sa SDL_HasSSE3
|
|
||||||
* \sa SDL_HasSSE41
|
|
||||||
* \sa SDL_HasSSE42
|
|
||||||
*/
|
|
||||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine whether the CPU has AltiVec features.
|
* Determine whether the CPU has AltiVec features.
|
||||||
*
|
*
|
||||||
|
@ -100,7 +79,6 @@ extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void);
|
||||||
* \sa SDL_HasAVX
|
* \sa SDL_HasAVX
|
||||||
* \sa SDL_HasAVX2
|
* \sa SDL_HasAVX2
|
||||||
* \sa SDL_HasMMX
|
* \sa SDL_HasMMX
|
||||||
* \sa SDL_HasRDTSC
|
|
||||||
* \sa SDL_HasSSE
|
* \sa SDL_HasSSE
|
||||||
* \sa SDL_HasSSE2
|
* \sa SDL_HasSSE2
|
||||||
* \sa SDL_HasSSE3
|
* \sa SDL_HasSSE3
|
||||||
|
@ -121,7 +99,6 @@ extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void);
|
||||||
* \sa SDL_HasAltiVec
|
* \sa SDL_HasAltiVec
|
||||||
* \sa SDL_HasAVX
|
* \sa SDL_HasAVX
|
||||||
* \sa SDL_HasAVX2
|
* \sa SDL_HasAVX2
|
||||||
* \sa SDL_HasRDTSC
|
|
||||||
* \sa SDL_HasSSE
|
* \sa SDL_HasSSE
|
||||||
* \sa SDL_HasSSE2
|
* \sa SDL_HasSSE2
|
||||||
* \sa SDL_HasSSE3
|
* \sa SDL_HasSSE3
|
||||||
|
@ -143,7 +120,6 @@ extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void);
|
||||||
* \sa SDL_HasAVX
|
* \sa SDL_HasAVX
|
||||||
* \sa SDL_HasAVX2
|
* \sa SDL_HasAVX2
|
||||||
* \sa SDL_HasMMX
|
* \sa SDL_HasMMX
|
||||||
* \sa SDL_HasRDTSC
|
|
||||||
* \sa SDL_HasSSE2
|
* \sa SDL_HasSSE2
|
||||||
* \sa SDL_HasSSE3
|
* \sa SDL_HasSSE3
|
||||||
* \sa SDL_HasSSE41
|
* \sa SDL_HasSSE41
|
||||||
|
@ -164,7 +140,6 @@ extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void);
|
||||||
* \sa SDL_HasAVX
|
* \sa SDL_HasAVX
|
||||||
* \sa SDL_HasAVX2
|
* \sa SDL_HasAVX2
|
||||||
* \sa SDL_HasMMX
|
* \sa SDL_HasMMX
|
||||||
* \sa SDL_HasRDTSC
|
|
||||||
* \sa SDL_HasSSE
|
* \sa SDL_HasSSE
|
||||||
* \sa SDL_HasSSE3
|
* \sa SDL_HasSSE3
|
||||||
* \sa SDL_HasSSE41
|
* \sa SDL_HasSSE41
|
||||||
|
@ -185,7 +160,6 @@ extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void);
|
||||||
* \sa SDL_HasAVX
|
* \sa SDL_HasAVX
|
||||||
* \sa SDL_HasAVX2
|
* \sa SDL_HasAVX2
|
||||||
* \sa SDL_HasMMX
|
* \sa SDL_HasMMX
|
||||||
* \sa SDL_HasRDTSC
|
|
||||||
* \sa SDL_HasSSE
|
* \sa SDL_HasSSE
|
||||||
* \sa SDL_HasSSE2
|
* \sa SDL_HasSSE2
|
||||||
* \sa SDL_HasSSE41
|
* \sa SDL_HasSSE41
|
||||||
|
@ -206,7 +180,6 @@ extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE3(void);
|
||||||
* \sa SDL_HasAVX
|
* \sa SDL_HasAVX
|
||||||
* \sa SDL_HasAVX2
|
* \sa SDL_HasAVX2
|
||||||
* \sa SDL_HasMMX
|
* \sa SDL_HasMMX
|
||||||
* \sa SDL_HasRDTSC
|
|
||||||
* \sa SDL_HasSSE
|
* \sa SDL_HasSSE
|
||||||
* \sa SDL_HasSSE2
|
* \sa SDL_HasSSE2
|
||||||
* \sa SDL_HasSSE3
|
* \sa SDL_HasSSE3
|
||||||
|
@ -227,7 +200,6 @@ extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE41(void);
|
||||||
* \sa SDL_HasAVX
|
* \sa SDL_HasAVX
|
||||||
* \sa SDL_HasAVX2
|
* \sa SDL_HasAVX2
|
||||||
* \sa SDL_HasMMX
|
* \sa SDL_HasMMX
|
||||||
* \sa SDL_HasRDTSC
|
|
||||||
* \sa SDL_HasSSE
|
* \sa SDL_HasSSE
|
||||||
* \sa SDL_HasSSE2
|
* \sa SDL_HasSSE2
|
||||||
* \sa SDL_HasSSE3
|
* \sa SDL_HasSSE3
|
||||||
|
@ -247,7 +219,6 @@ extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE42(void);
|
||||||
* \sa SDL_HasAltiVec
|
* \sa SDL_HasAltiVec
|
||||||
* \sa SDL_HasAVX2
|
* \sa SDL_HasAVX2
|
||||||
* \sa SDL_HasMMX
|
* \sa SDL_HasMMX
|
||||||
* \sa SDL_HasRDTSC
|
|
||||||
* \sa SDL_HasSSE
|
* \sa SDL_HasSSE
|
||||||
* \sa SDL_HasSSE2
|
* \sa SDL_HasSSE2
|
||||||
* \sa SDL_HasSSE3
|
* \sa SDL_HasSSE3
|
||||||
|
@ -268,7 +239,6 @@ extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX(void);
|
||||||
* \sa SDL_HasAltiVec
|
* \sa SDL_HasAltiVec
|
||||||
* \sa SDL_HasAVX
|
* \sa SDL_HasAVX
|
||||||
* \sa SDL_HasMMX
|
* \sa SDL_HasMMX
|
||||||
* \sa SDL_HasRDTSC
|
|
||||||
* \sa SDL_HasSSE
|
* \sa SDL_HasSSE
|
||||||
* \sa SDL_HasSSE2
|
* \sa SDL_HasSSE2
|
||||||
* \sa SDL_HasSSE3
|
* \sa SDL_HasSSE3
|
||||||
|
|
|
@ -585,7 +585,6 @@ typedef unsigned int uintptr_t;
|
||||||
#endif /* !_STDINT_H_ && !HAVE_STDINT_H */
|
#endif /* !_STDINT_H_ && !HAVE_STDINT_H */
|
||||||
|
|
||||||
/* Configure use of intrinsics */
|
/* Configure use of intrinsics */
|
||||||
#cmakedefine SDL_DISABLE_RDTSC 1
|
|
||||||
#cmakedefine SDL_DISABLE_SSE 1
|
#cmakedefine SDL_DISABLE_SSE 1
|
||||||
#cmakedefine SDL_DISABLE_SSE2 1
|
#cmakedefine SDL_DISABLE_SSE2 1
|
||||||
#cmakedefine SDL_DISABLE_SSE3 1
|
#cmakedefine SDL_DISABLE_SSE3 1
|
||||||
|
|
|
@ -87,21 +87,20 @@
|
||||||
#include <kernel/OS.h>
|
#include <kernel/OS.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CPU_HAS_RDTSC (1 << 0)
|
#define CPU_HAS_ALTIVEC (1 << 0)
|
||||||
#define CPU_HAS_ALTIVEC (1 << 1)
|
#define CPU_HAS_MMX (1 << 1)
|
||||||
#define CPU_HAS_MMX (1 << 2)
|
#define CPU_HAS_SSE (1 << 2)
|
||||||
#define CPU_HAS_SSE (1 << 3)
|
#define CPU_HAS_SSE2 (1 << 3)
|
||||||
#define CPU_HAS_SSE2 (1 << 4)
|
#define CPU_HAS_SSE3 (1 << 4)
|
||||||
#define CPU_HAS_SSE3 (1 << 5)
|
#define CPU_HAS_SSE41 (1 << 5)
|
||||||
#define CPU_HAS_SSE41 (1 << 6)
|
#define CPU_HAS_SSE42 (1 << 6)
|
||||||
#define CPU_HAS_SSE42 (1 << 7)
|
#define CPU_HAS_AVX (1 << 7)
|
||||||
#define CPU_HAS_AVX (1 << 8)
|
#define CPU_HAS_AVX2 (1 << 8)
|
||||||
#define CPU_HAS_AVX2 (1 << 9)
|
#define CPU_HAS_NEON (1 << 9)
|
||||||
#define CPU_HAS_NEON (1 << 10)
|
#define CPU_HAS_AVX512F (1 << 10)
|
||||||
#define CPU_HAS_AVX512F (1 << 11)
|
#define CPU_HAS_ARM_SIMD (1 << 11)
|
||||||
#define CPU_HAS_ARM_SIMD (1 << 12)
|
#define CPU_HAS_LSX (1 << 12)
|
||||||
#define CPU_HAS_LSX (1 << 13)
|
#define CPU_HAS_LASX (1 << 13)
|
||||||
#define CPU_HAS_LASX (1 << 14)
|
|
||||||
|
|
||||||
#define CPU_CFG2 0x2
|
#define CPU_CFG2 0x2
|
||||||
#define CPU_CFG2_LSX (1 << 6)
|
#define CPU_CFG2_LSX (1 << 6)
|
||||||
|
@ -521,7 +520,6 @@ static int CPU_readCPUCFG(void)
|
||||||
#define CPU_haveLASX() (CPU_readCPUCFG() & CPU_CFG2_LASX)
|
#define CPU_haveLASX() (CPU_readCPUCFG() & CPU_CFG2_LASX)
|
||||||
|
|
||||||
#if defined(__e2k__)
|
#if defined(__e2k__)
|
||||||
#define CPU_haveRDTSC() (0)
|
|
||||||
#if defined(__MMX__)
|
#if defined(__MMX__)
|
||||||
#define CPU_haveMMX() (1)
|
#define CPU_haveMMX() (1)
|
||||||
#else
|
#else
|
||||||
|
@ -558,7 +556,6 @@ static int CPU_readCPUCFG(void)
|
||||||
#define CPU_haveAVX() (0)
|
#define CPU_haveAVX() (0)
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
#define CPU_haveRDTSC() (CPU_CPUIDFeatures[3] & 0x00000010)
|
|
||||||
#define CPU_haveMMX() (CPU_CPUIDFeatures[3] & 0x00800000)
|
#define CPU_haveMMX() (CPU_CPUIDFeatures[3] & 0x00800000)
|
||||||
#define CPU_haveSSE() (CPU_CPUIDFeatures[3] & 0x02000000)
|
#define CPU_haveSSE() (CPU_CPUIDFeatures[3] & 0x02000000)
|
||||||
#define CPU_haveSSE2() (CPU_CPUIDFeatures[3] & 0x04000000)
|
#define CPU_haveSSE2() (CPU_CPUIDFeatures[3] & 0x04000000)
|
||||||
|
@ -869,9 +866,6 @@ static Uint32 SDL_GetCPUFeatures(void)
|
||||||
CPU_calcCPUIDFeatures();
|
CPU_calcCPUIDFeatures();
|
||||||
SDL_CPUFeatures = 0;
|
SDL_CPUFeatures = 0;
|
||||||
SDL_SIMDAlignment = sizeof(void *); /* a good safe base value */
|
SDL_SIMDAlignment = sizeof(void *); /* a good safe base value */
|
||||||
if (CPU_haveRDTSC()) {
|
|
||||||
SDL_CPUFeatures |= CPU_HAS_RDTSC;
|
|
||||||
}
|
|
||||||
if (CPU_haveAltiVec()) {
|
if (CPU_haveAltiVec()) {
|
||||||
SDL_CPUFeatures |= CPU_HAS_ALTIVEC;
|
SDL_CPUFeatures |= CPU_HAS_ALTIVEC;
|
||||||
SDL_SIMDAlignment = SDL_max(SDL_SIMDAlignment, 16);
|
SDL_SIMDAlignment = SDL_max(SDL_SIMDAlignment, 16);
|
||||||
|
@ -934,11 +928,6 @@ static Uint32 SDL_GetCPUFeatures(void)
|
||||||
|
|
||||||
#define CPU_FEATURE_AVAILABLE(f) ((SDL_GetCPUFeatures() & (f)) ? SDL_TRUE : SDL_FALSE)
|
#define CPU_FEATURE_AVAILABLE(f) ((SDL_GetCPUFeatures() & (f)) ? SDL_TRUE : SDL_FALSE)
|
||||||
|
|
||||||
SDL_bool SDL_HasRDTSC(void)
|
|
||||||
{
|
|
||||||
return CPU_FEATURE_AVAILABLE(CPU_HAS_RDTSC);
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_bool
|
SDL_bool
|
||||||
SDL_HasAltiVec(void)
|
SDL_HasAltiVec(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -404,7 +404,6 @@ SDL3_0.0.0 {
|
||||||
SDL_HasMMX;
|
SDL_HasMMX;
|
||||||
SDL_HasNEON;
|
SDL_HasNEON;
|
||||||
SDL_HasPrimarySelectionText;
|
SDL_HasPrimarySelectionText;
|
||||||
SDL_HasRDTSC;
|
|
||||||
SDL_HasRectIntersection;
|
SDL_HasRectIntersection;
|
||||||
SDL_HasRectIntersectionFloat;
|
SDL_HasRectIntersectionFloat;
|
||||||
SDL_HasSSE2;
|
SDL_HasSSE2;
|
||||||
|
|
|
@ -428,7 +428,6 @@
|
||||||
#define SDL_HasMMX SDL_HasMMX_REAL
|
#define SDL_HasMMX SDL_HasMMX_REAL
|
||||||
#define SDL_HasNEON SDL_HasNEON_REAL
|
#define SDL_HasNEON SDL_HasNEON_REAL
|
||||||
#define SDL_HasPrimarySelectionText SDL_HasPrimarySelectionText_REAL
|
#define SDL_HasPrimarySelectionText SDL_HasPrimarySelectionText_REAL
|
||||||
#define SDL_HasRDTSC SDL_HasRDTSC_REAL
|
|
||||||
#define SDL_HasRectIntersection SDL_HasRectIntersection_REAL
|
#define SDL_HasRectIntersection SDL_HasRectIntersection_REAL
|
||||||
#define SDL_HasRectIntersectionFloat SDL_HasRectIntersectionFloat_REAL
|
#define SDL_HasRectIntersectionFloat SDL_HasRectIntersectionFloat_REAL
|
||||||
#define SDL_HasSSE SDL_HasSSE_REAL
|
#define SDL_HasSSE SDL_HasSSE_REAL
|
||||||
|
|
|
@ -500,7 +500,6 @@ SDL_DYNAPI_PROC(SDL_bool,SDL_HasLSX,(void),(),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_HasMMX,(void),(),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_HasMMX,(void),(),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_HasNEON,(void),(),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_HasNEON,(void),(),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_HasPrimarySelectionText,(void),(),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_HasPrimarySelectionText,(void),(),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_HasRDTSC,(void),(),return)
|
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_HasRectIntersection,(const SDL_Rect *a, const SDL_Rect *b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_HasRectIntersection,(const SDL_Rect *a, const SDL_Rect *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_HasRectIntersectionFloat,(const SDL_FRect *a, const SDL_FRect *b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_HasRectIntersectionFloat,(const SDL_FRect *a, const SDL_FRect *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_HasSSE,(void),(),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_HasSSE,(void),(),return)
|
||||||
|
|
|
@ -10,19 +10,6 @@
|
||||||
#include <SDL3/SDL_test.h>
|
#include <SDL3/SDL_test.h>
|
||||||
#include "testautomation_suites.h"
|
#include "testautomation_suites.h"
|
||||||
|
|
||||||
#if (defined(_MSC_VER) \
|
|
||||||
|| (defined(__GNUC__) && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 5)) \
|
|
||||||
|| (defined(__clang__) && (__clang_major__ > 3 || __clang_major__ == 3 && __clang_minor__ >= 5)) \
|
|
||||||
|| defined(__ICC)) && !defined(SDL_DISABLE_RDTSC)
|
|
||||||
# define SDL_RDTSC_INTRINSICS 1
|
|
||||||
# if defined(_MSC_VER)
|
|
||||||
# include <intrin.h>
|
|
||||||
# else
|
|
||||||
# include <x86intrin.h>
|
|
||||||
# endif
|
|
||||||
# define SDLTest_rdtsc __rdtsc
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// FIXME: missing tests for loongarch lsx/lasx
|
// FIXME: missing tests for loongarch lsx/lasx
|
||||||
// FIXME: missing tests for powerpc altivec
|
// FIXME: missing tests for powerpc altivec
|
||||||
|
|
||||||
|
@ -373,30 +360,6 @@ static int intrinsics_selftest(void *arg)
|
||||||
return TEST_COMPLETED;
|
return TEST_COMPLETED;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int intrinsics_testRDTSC(void *arg)
|
|
||||||
{
|
|
||||||
if (SDL_HasRDTSC()) {
|
|
||||||
SDLTest_AssertCheck(SDL_TRUE, "CPU of test machine has RDTSC support.");
|
|
||||||
#if SDL_RDTSC_INTRINSICS
|
|
||||||
{
|
|
||||||
Sint64 ticks;
|
|
||||||
|
|
||||||
ticks = SDLTest_rdtsc();
|
|
||||||
|
|
||||||
SDLTest_AssertCheck(SDL_TRUE, "rdtsc returned: %" SDL_PRIu64 " ticks", ticks);
|
|
||||||
|
|
||||||
return TEST_COMPLETED;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
SDLTest_AssertCheck(SDL_TRUE, "Test executable does NOT use RDTSC intrinsics.");
|
|
||||||
#endif
|
|
||||||
} else {
|
|
||||||
SDLTest_AssertCheck(SDL_TRUE, "CPU of test machine has NO RDTSC support.");
|
|
||||||
}
|
|
||||||
|
|
||||||
return TEST_SKIPPED;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int intrinsics_testMMX(void *arg)
|
static int intrinsics_testMMX(void *arg)
|
||||||
{
|
{
|
||||||
if (SDL_HasMMX()) {
|
if (SDL_HasMMX()) {
|
||||||
|
@ -666,42 +629,38 @@ static const SDLTest_TestCaseReference intrinsicsTest1 = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const SDLTest_TestCaseReference intrinsicsTest2 = {
|
static const SDLTest_TestCaseReference intrinsicsTest2 = {
|
||||||
(SDLTest_TestCaseFp)intrinsics_testRDTSC, "intrinsics_rdtsc", "Tests RDTC intrinsic", TEST_ENABLED
|
|
||||||
};
|
|
||||||
|
|
||||||
static const SDLTest_TestCaseReference intrinsicsTest3 = {
|
|
||||||
(SDLTest_TestCaseFp)intrinsics_testMMX, "intrinsics_testMMX", "Tests MMX intrinsics", TEST_ENABLED
|
(SDLTest_TestCaseFp)intrinsics_testMMX, "intrinsics_testMMX", "Tests MMX intrinsics", TEST_ENABLED
|
||||||
};
|
};
|
||||||
|
|
||||||
static const SDLTest_TestCaseReference intrinsicsTest4 = {
|
static const SDLTest_TestCaseReference intrinsicsTest3 = {
|
||||||
(SDLTest_TestCaseFp)intrinsics_testSSE, "intrinsics_testSSE", "Tests SSE intrinsics", TEST_ENABLED
|
(SDLTest_TestCaseFp)intrinsics_testSSE, "intrinsics_testSSE", "Tests SSE intrinsics", TEST_ENABLED
|
||||||
};
|
};
|
||||||
|
|
||||||
static const SDLTest_TestCaseReference intrinsicsTest5 = {
|
static const SDLTest_TestCaseReference intrinsicsTest4 = {
|
||||||
(SDLTest_TestCaseFp)intrinsics_testSSE2, "intrinsics_testSSE2", "Tests SSE2 intrinsics", TEST_ENABLED
|
(SDLTest_TestCaseFp)intrinsics_testSSE2, "intrinsics_testSSE2", "Tests SSE2 intrinsics", TEST_ENABLED
|
||||||
};
|
};
|
||||||
|
|
||||||
static const SDLTest_TestCaseReference intrinsicsTest6 = {
|
static const SDLTest_TestCaseReference intrinsicsTest5 = {
|
||||||
(SDLTest_TestCaseFp)intrinsics_testSSE3, "intrinsics_testSSE3", "Tests SSE3 intrinsics", TEST_ENABLED
|
(SDLTest_TestCaseFp)intrinsics_testSSE3, "intrinsics_testSSE3", "Tests SSE3 intrinsics", TEST_ENABLED
|
||||||
};
|
};
|
||||||
|
|
||||||
static const SDLTest_TestCaseReference intrinsicsTest7 = {
|
static const SDLTest_TestCaseReference intrinsicsTest6 = {
|
||||||
(SDLTest_TestCaseFp)intrinsics_testSSE4_1, "intrinsics_testSSE4.1", "Tests SSE4.1 intrinsics", TEST_ENABLED
|
(SDLTest_TestCaseFp)intrinsics_testSSE4_1, "intrinsics_testSSE4.1", "Tests SSE4.1 intrinsics", TEST_ENABLED
|
||||||
};
|
};
|
||||||
|
|
||||||
static const SDLTest_TestCaseReference intrinsicsTest8 = {
|
static const SDLTest_TestCaseReference intrinsicsTest7 = {
|
||||||
(SDLTest_TestCaseFp)intrinsics_testSSE4_2, "intrinsics_testSSE4.2", "Tests SSE4.2 intrinsics", TEST_ENABLED
|
(SDLTest_TestCaseFp)intrinsics_testSSE4_2, "intrinsics_testSSE4.2", "Tests SSE4.2 intrinsics", TEST_ENABLED
|
||||||
};
|
};
|
||||||
|
|
||||||
static const SDLTest_TestCaseReference intrinsicsTest9 = {
|
static const SDLTest_TestCaseReference intrinsicsTest8 = {
|
||||||
(SDLTest_TestCaseFp)intrinsics_testAVX, "intrinsics_testAVX", "Tests AVX intrinsics", TEST_ENABLED
|
(SDLTest_TestCaseFp)intrinsics_testAVX, "intrinsics_testAVX", "Tests AVX intrinsics", TEST_ENABLED
|
||||||
};
|
};
|
||||||
|
|
||||||
static const SDLTest_TestCaseReference intrinsicsTest10 = {
|
static const SDLTest_TestCaseReference intrinsicsTest9 = {
|
||||||
(SDLTest_TestCaseFp)intrinsics_testAVX2, "intrinsics_testAVX2", "Tests AVX2 intrinsics", TEST_ENABLED
|
(SDLTest_TestCaseFp)intrinsics_testAVX2, "intrinsics_testAVX2", "Tests AVX2 intrinsics", TEST_ENABLED
|
||||||
};
|
};
|
||||||
|
|
||||||
static const SDLTest_TestCaseReference intrinsicsTest11 = {
|
static const SDLTest_TestCaseReference intrinsicsTest10 = {
|
||||||
(SDLTest_TestCaseFp)intrinsics_testAVX512F, "intrinsics_testAVX512F", "Tests AVX512F intrinsics", TEST_ENABLED
|
(SDLTest_TestCaseFp)intrinsics_testAVX512F, "intrinsics_testAVX512F", "Tests AVX512F intrinsics", TEST_ENABLED
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -717,7 +676,6 @@ static const SDLTest_TestCaseReference *platformTests[] = {
|
||||||
&intrinsicsTest8,
|
&intrinsicsTest8,
|
||||||
&intrinsicsTest9,
|
&intrinsicsTest9,
|
||||||
&intrinsicsTest10,
|
&intrinsicsTest10,
|
||||||
&intrinsicsTest11,
|
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -165,7 +165,6 @@ static int platform_testGetFunctions(void *arg)
|
||||||
* \brief Tests SDL_HasXYZ() functions
|
* \brief Tests SDL_HasXYZ() functions
|
||||||
* \sa SDL_HasAltiVec
|
* \sa SDL_HasAltiVec
|
||||||
* \sa SDL_HasMMX
|
* \sa SDL_HasMMX
|
||||||
* \sa SDL_HasRDTSC
|
|
||||||
* \sa SDL_HasSSE
|
* \sa SDL_HasSSE
|
||||||
* \sa SDL_HasSSE2
|
* \sa SDL_HasSSE2
|
||||||
* \sa SDL_HasSSE3
|
* \sa SDL_HasSSE3
|
||||||
|
@ -177,9 +176,6 @@ static int platform_testHasFunctions(void *arg)
|
||||||
{
|
{
|
||||||
/* TODO: independently determine and compare values as well */
|
/* TODO: independently determine and compare values as well */
|
||||||
|
|
||||||
SDL_HasRDTSC();
|
|
||||||
SDLTest_AssertPass("SDL_HasRDTSC()");
|
|
||||||
|
|
||||||
SDL_HasAltiVec();
|
SDL_HasAltiVec();
|
||||||
SDLTest_AssertPass("SDL_HasAltiVec()");
|
SDLTest_AssertPass("SDL_HasAltiVec()");
|
||||||
|
|
||||||
|
|
|
@ -391,7 +391,6 @@ static int TestCPUInfo(SDL_bool verbose)
|
||||||
if (verbose) {
|
if (verbose) {
|
||||||
SDL_Log("CPU count: %d\n", SDL_GetCPUCount());
|
SDL_Log("CPU count: %d\n", SDL_GetCPUCount());
|
||||||
SDL_Log("CPU cache line size: %d\n", SDL_GetCPUCacheLineSize());
|
SDL_Log("CPU cache line size: %d\n", SDL_GetCPUCacheLineSize());
|
||||||
SDL_Log("RDTSC %s\n", SDL_HasRDTSC() ? "detected" : "not detected");
|
|
||||||
SDL_Log("AltiVec %s\n", SDL_HasAltiVec() ? "detected" : "not detected");
|
SDL_Log("AltiVec %s\n", SDL_HasAltiVec() ? "detected" : "not detected");
|
||||||
SDL_Log("MMX %s\n", SDL_HasMMX() ? "detected" : "not detected");
|
SDL_Log("MMX %s\n", SDL_HasMMX() ? "detected" : "not detected");
|
||||||
SDL_Log("SSE %s\n", SDL_HasSSE() ? "detected" : "not detected");
|
SDL_Log("SSE %s\n", SDL_HasSSE() ? "detected" : "not detected");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue