CPUFeatures plug-in: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
LoRd MuldeR (talk | contribs) |
LoRd MuldeR (talk | contribs) |
||
Line 14: | Line 14: | ||
ShowInstDetails show | ShowInstDetails show | ||
; Get CPU flags (this is for debugging!) | ; Get CPU flags (this is for debugging!) + CPU count | ||
Section | Section | ||
${CPUFeatures.GetFlags} $0 | ${CPUFeatures.GetFlags} $0 | ||
Line 39: | Line 39: | ||
${CPUFeatures.CheckFeature} "MMX2" $0 | ${CPUFeatures.CheckFeature} "MMX2" $0 | ||
DetailPrint "Has | DetailPrint "Has MMX2: $0" | ||
${CPUFeatures.CheckFeature} "SSE1" $0 | ${CPUFeatures.CheckFeature} "SSE1" $0 | ||
Line 57: | Line 57: | ||
${CPUFeatures.CheckFeature} "AVX1" $0 | ${CPUFeatures.CheckFeature} "AVX1" $0 | ||
DetailPrint "Has | DetailPrint "Has AVX: $0" | ||
${CPUFeatures.CheckFeature} "AVX2" $0 | ${CPUFeatures.CheckFeature} "AVX2" $0 | ||
Line 77: | Line 77: | ||
${CPUFeatures.CheckFeature} "SSE7" $0 | ${CPUFeatures.CheckFeature} "SSE7" $0 | ||
DetailPrint "Has SSE7: $0" | DetailPrint "Has SSE7: $0" | ||
SectionEnd | |||
; Check multiple features at once | |||
; Returns only "yes", if *all* features are supported | |||
Section | |||
${CPUFeatures.CheckAllFeatures} "MMX1,SSE1" $0 | |||
DetailPrint "Has MMX+SSE: $0" | |||
${CPUFeatures.CheckAllFeatures} "MMX1,3DNOW" $0 | |||
DetailPrint "Has MMX1+3DNOW: $0" | |||
${CPUFeatures.CheckAllFeatures} "MMX1,SSE1,SSE2,SSE3,SSSE3" $0 | |||
DetailPrint "Has MMX+SSE+SSE2+SSE3+SSSE3: $0" | |||
${CPUFeatures.CheckAllFeatures} "MMX1,SSE1,SSE2,SSE3,SSSE3,SSE4" $0 | |||
DetailPrint "Has MMX+SSE+SSE2+SSE3+SSSE3+SSE4: $0" | |||
; Next call is supposed to fail! | |||
${CPUFeatures.CheckAllFeatures} "MMX1,SSE1,SSE2,SSE3,SSSE3,SSE7" $0 | |||
DetailPrint "Has MMX+SSE+SSE2+SSE3+SSSE3+SSE7: $0" | |||
SectionEnd</highlight-nsis> | SectionEnd</highlight-nsis> | ||
Revision as of 19:09, 22 February 2013
Author: LoRd MuldeR (talk, contrib) |
This very simple plug-in can detect the supported CPU features (MMX, SSE, AVX, etc) at runtime.
It is based on CPU detection code from the x264 project.
Example
How to use the CPUFeatures plug-in:
!include "CPUFeatures.nsh" RequestExecutionLevel user ShowInstDetails show ; Get CPU flags (this is for debugging!) + CPU count Section ${CPUFeatures.GetFlags} $0 DetailPrint "CPU Flags: $0" ${CPUFeatures.GetCount} $0 DetailPrint "CPU Count: $0" SectionEnd ; Get all supported features + vendor name Section ${CPUFeatures.GetFeatures} $0 DetailPrint "CPU Features: $0" ${CPUFeatures.GetVendor} $0 DetailPrint "CPU Vendor: $0" SectionEnd ; Check individual feature flags ; Find a list of supported feature flags in CPUFeatures.nsh! Section ${CPUFeatures.CheckFeature} "MMX1" $0 DetailPrint "Has MMX: $0" ${CPUFeatures.CheckFeature} "MMX2" $0 DetailPrint "Has MMX2: $0" ${CPUFeatures.CheckFeature} "SSE1" $0 DetailPrint "Has SSE: $0" ${CPUFeatures.CheckFeature} "SSE2" $0 DetailPrint "Has SSE2: $0" ${CPUFeatures.CheckFeature} "SSE3" $0 DetailPrint "Has SSE3: $0" ${CPUFeatures.CheckFeature} "SSSE3" $0 DetailPrint "Has SSSE3: $0" ${CPUFeatures.CheckFeature} "SSE4.2" $0 DetailPrint "Has SSE4.2: $0" ${CPUFeatures.CheckFeature} "AVX1" $0 DetailPrint "Has AVX: $0" ${CPUFeatures.CheckFeature} "AVX2" $0 DetailPrint "Has AVX2: $0" ${CPUFeatures.CheckFeature} "3DNOW" $0 DetailPrint "Has 3DNOW: $0" ${CPUFeatures.CheckFeature} "3DNOW_EX" $0 DetailPrint "Has 3DNOW_EX: $0" ${CPUFeatures.CheckFeature} "FMA3" $0 DetailPrint "Has FMA3: $0" ${CPUFeatures.CheckFeature} "FMA4" $0 DetailPrint "Has FMA4: $0" ; Next call is supposed to fail! ${CPUFeatures.CheckFeature} "SSE7" $0 DetailPrint "Has SSE7: $0" SectionEnd ; Check multiple features at once ; Returns only "yes", if *all* features are supported Section ${CPUFeatures.CheckAllFeatures} "MMX1,SSE1" $0 DetailPrint "Has MMX+SSE: $0" ${CPUFeatures.CheckAllFeatures} "MMX1,3DNOW" $0 DetailPrint "Has MMX1+3DNOW: $0" ${CPUFeatures.CheckAllFeatures} "MMX1,SSE1,SSE2,SSE3,SSSE3" $0 DetailPrint "Has MMX+SSE+SSE2+SSE3+SSSE3: $0" ${CPUFeatures.CheckAllFeatures} "MMX1,SSE1,SSE2,SSE3,SSSE3,SSE4" $0 DetailPrint "Has MMX+SSE+SSE2+SSE3+SSSE3+SSE4: $0" ; Next call is supposed to fail! ${CPUFeatures.CheckAllFeatures} "MMX1,SSE1,SSE2,SSE3,SSSE3,SSE7" $0 DetailPrint "Has MMX+SSE+SSE2+SSE3+SSSE3+SSE7: $0" SectionEnd
License
CPUFeatures plug-in for NSIS Copyright (C) 2013 LoRd_MuldeR <mulder2@gmx.de> Copyright (C) 2003-2013 x264 project This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Please see the GNU General Public License for details!
Download
Download current version:
CPUFeatures.2013-02-22.zip (89 KB)
Source Code
Public Git Repository:
git://github.com/lordmulder/CPUFeaturesLib.git (Browse)
Public SVN Repository:
http://code.google.com/p/mulder/source/browse/trunk/Utils/CPUFeatures/
Support
Discussion:
http://forums.winamp.com/showthread.php?t=355951
E-Mail:
MuldeR2 (at) gmx (dot) de