Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
videolan
vlc
Commits
06365630
Commit
06365630
authored
Aug 16, 2009
by
Rémi Denis-Courmont
Committed by
Christophe Mutricy
Sep 07, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Factor CPU detection a little
Signed-off-by:
Christophe Mutricy
<
xtophe@videolan.org
>
parent
ced7181b
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
19 additions
and
53 deletions
+19
-53
src/misc/cpu.c
src/misc/cpu.c
+19
-53
No files found.
src/misc/cpu.c
View file @
06365630
...
...
@@ -71,20 +71,7 @@ uint32_t CPUCapabilities( void )
{
volatile
uint32_t
i_capabilities
=
CPU_CAPABILITY_NONE
;
#if defined(__APPLE__) && (defined(__ppc__) || defined(__ppc64__))
int
selectors
[
2
]
=
{
CTL_HW
,
HW_VECTORUNIT
};
int
i_has_altivec
=
0
;
size_t
i_length
=
sizeof
(
i_has_altivec
);
int
i_error
=
sysctl
(
selectors
,
2
,
&
i_has_altivec
,
&
i_length
,
NULL
,
0
);
i_capabilities
|=
CPU_CAPABILITY_FPU
;
if
(
i_error
==
0
&&
i_has_altivec
!=
0
)
i_capabilities
|=
CPU_CAPABILITY_ALTIVEC
;
return
i_capabilities
;
#elif defined( __i386__ ) || defined( __x86_64__ )
#if defined( __i386__ ) || defined( __x86_64__ )
volatile
unsigned
int
i_eax
,
i_ebx
,
i_ecx
,
i_edx
;
volatile
bool
b_amd
;
...
...
@@ -138,12 +125,7 @@ uint32_t CPUCapabilities( void )
:
"cc"
);
if
(
i_eax
==
i_ebx
)
{
# if defined( CAN_COMPILE_SSE ) || defined ( CAN_COMPILE_3DNOW )
signal
(
SIGILL
,
pf_sigill
);
# endif
return
i_capabilities
;
}
goto
out
;
# else
/* x86_64 supports cpuid instruction, so we dont need to check it */
# endif
...
...
@@ -154,12 +136,7 @@ uint32_t CPUCapabilities( void )
cpuid
(
0x00000000
);
if
(
!
i_eax
)
{
# if defined( CAN_COMPILE_SSE ) || defined ( CAN_COMPILE_3DNOW )
signal
(
SIGILL
,
pf_sigill
);
# endif
return
i_capabilities
;
}
goto
out
;
/* FIXME: this isn't correct, since some 486s have cpuid */
i_capabilities
|=
CPU_CAPABILITY_586
;
...
...
@@ -172,12 +149,7 @@ uint32_t CPUCapabilities( void )
cpuid
(
0x00000001
);
if
(
!
(
i_edx
&
0x00800000
)
)
{
# if defined( CAN_COMPILE_SSE ) || defined ( CAN_COMPILE_3DNOW )
signal
(
SIGILL
,
pf_sigill
);
# endif
return
i_capabilities
;
}
goto
out
;
i_capabilities
|=
CPU_CAPABILITY_MMX
;
...
...
@@ -225,12 +197,7 @@ uint32_t CPUCapabilities( void )
cpuid
(
0x80000000
);
if
(
i_eax
<
0x80000001
)
{
# if defined( CAN_COMPILE_SSE ) || defined ( CAN_COMPILE_3DNOW )
signal
(
SIGILL
,
pf_sigill
);
# endif
return
i_capabilities
;
}
goto
out
;
/* list these additional capabilities */
cpuid
(
0x80000001
);
...
...
@@ -258,10 +225,10 @@ uint32_t CPUCapabilities( void )
i_capabilities
|=
CPU_CAPABILITY_MMXEXT
;
}
out:
# if defined( CAN_COMPILE_SSE ) || defined ( CAN_COMPILE_3DNOW )
signal
(
SIGILL
,
pf_sigill
);
# endif
return
i_capabilities
;
#elif defined( __arm__ )
# if defined( __ARM_EABI__ ) && !defined( __SOFTFP__ )
...
...
@@ -271,11 +238,20 @@ uint32_t CPUCapabilities( void )
#elif defined( __powerpc__ ) || defined( __ppc__ ) || defined( __ppc64__ )
# ifdef CAN_COMPILE_ALTIVEC
void
(
*
pf_sigill
)
(
int
)
=
signal
(
SIGILL
,
SigHandler
);
i_capabilities
|=
CPU_CAPABILITY_FPU
;
# if defined(__APPLE__)
int
selectors
[
2
]
=
{
CTL_HW
,
HW_VECTORUNIT
};
int
i_has_altivec
=
0
;
size_t
i_length
=
sizeof
(
i_has_altivec
);
int
i_error
=
sysctl
(
selectors
,
2
,
&
i_has_altivec
,
&
i_length
,
NULL
,
0
);
if
(
i_error
==
0
&&
i_has_altivec
!=
0
)
i_capabilities
|=
CPU_CAPABILITY_ALTIVEC
;
# elif defined( CAN_COMPILE_ALTIVEC )
void
(
*
pf_sigill
)
(
int
)
=
signal
(
SIGILL
,
SigHandler
);
i_illegal
=
0
;
if
(
setjmp
(
env
)
==
0
)
...
...
@@ -287,31 +263,21 @@ uint32_t CPUCapabilities( void )
}
if
(
i_illegal
==
0
)
{
i_capabilities
|=
CPU_CAPABILITY_ALTIVEC
;
}
signal
(
SIGILL
,
pf_sigill
);
# else
(
void
)
SigHandler
;
/* Don't complain about dead code here */
# endif
return
i_capabilities
;
#elif defined( __sparc__ )
i_capabilities
|=
CPU_CAPABILITY_FPU
;
return
i_capabilities
;
#elif defined( _MSC_VER ) && !defined( UNDER_CE )
i_capabilities
|=
CPU_CAPABILITY_FPU
;
return
i_capabilities
;
#else
/* default behaviour */
return
i_capabilities
;
#endif
return
i_capabilities
;
}
/*****************************************************************************
...
...
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