Changeset - r21122:bb3972c9fc84
[Not reviewed]
master
0 3 0
rubidium - 10 years ago 2014-01-02 18:52:54
rubidium@openttd.org
(svn r26207) -Codechange: move the CPUID flag detection into cpu.cpp
3 files changed with 23 insertions and 8 deletions:
0 comments (0 inline, 0 general)
src/cpu.cpp
Show inline comments
 
@@ -7,9 +7,10 @@
 
 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
 
 */
 

	
 
/** @file cpu.cpp OS/CPU/compiler dependant real time tick sampling. */
 
/** @file cpu.cpp OS/CPU/compiler dependant CPU specific calls. */
 

	
 
#include "stdafx.h"
 
#include "core/bitmath_func.hpp"
 

	
 
#undef RDTSC_AVAILABLE
 

	
 
@@ -107,3 +108,14 @@ void ottd_cpuid(int info[4], int type)
 
	info[0] = info[1] = info[2] = info[3] = 0;
 
}
 
#endif
 

	
 
bool HasCPUIDFlag(uint type, uint index, uint bit)
 
{
 
	int cpu_info[4] = {-1};
 
	ottd_cpuid(cpu_info, 0);
 
	uint max_info_type = cpu_info[0];
 
	if (max_info_type < type) return false;
 

	
 
	ottd_cpuid(cpu_info, type);
 
	return HasBit(cpu_info[index], bit);
 
}
src/cpu.h
Show inline comments
 
@@ -25,4 +25,13 @@ uint64 ottd_rdtsc();
 
 */
 
void ottd_cpuid(int info[4], int type);
 

	
 
/**
 
 * Check whether the current CPU has the given flag.
 
 * @param type  The type to be passing to cpuid (usually 1).
 
 * @param index The index in the returned info array.
 
 * @param bit   The bit index that needs to be set.
 
 * @return The value of the bit, or false when there is no CPUID or the type is not available.
 
 */
 
bool HasCPUIDFlag(uint type, uint index, uint bit);
 

	
 
#endif /* CPU_H */
src/viewport_sprite_sorter_sse4.cpp
Show inline comments
 
@@ -97,13 +97,7 @@ void ViewportSortParentSpritesSSE41(Pare
 
 */
 
bool ViewportSortParentSpritesSSE41Checker()
 
{
 
	int cpu_info[4] = {-1};
 
	ottd_cpuid(cpu_info, 0);
 
	unsigned int max_info_type = cpu_info[0];
 
	if (max_info_type < 1) return false;
 

	
 
	ottd_cpuid(cpu_info, 1);
 
	return (cpu_info[2] & (1 << 19)) != 0;
 
	return HasCPUIDFlag(1, 2, 19);
 
}
 

	
 
#endif /* WITH_SSE */
0 comments (0 inline, 0 general)