projects / phoronix-test-suite.git / commitdiff
Build Results
 
Summary

Description: Phoronix Test Suite open-source benchmarking development
Last Change: Fri 5/17/13 22:52

Recent Commits
Time
Signed-Off By
Description
Commit Diff
Fri 5/17/13 22:52
Michael Larabel  
phodevi: Report CPU... 
Wed 5/15/13 21:50
Michael Larabel  
Phoronix Test Suite... 
Wed 5/15/13 21:39
Michael Larabel  
pts-core: DragonFlyBSD... 
Wed 5/15/13 15:47
Michael Larabel  
pts-core: Updates from... 
Wed 5/15/13 15:43
Michael Larabel  
 
Sat 5/11/13 13:55
Michael Larabel  
pts-core: Fix for... 
 
> --git a/pts-core/commands/ob_test_profile_analyze.php b/pts-core/commands/ob_test_profile_analyze.php
index fcd5ef3
..b28dc05 100644
--- a/pts-core/commands/ob_test_profile_analyze.php
+++ b/pts-core/commands/ob_test_profile_analyze.php
@@ -33,+33,@@ class ob_test_profile_analyze implements pts_option_interface
             
echo PHP_EOL 'You must first be logged into an OpenBenchmarking.org account.' PHP_EOL;
             echo 
PHP_EOL 'Create An Account: http://openbenchmarking.org/';
             echo 
PHP_EOL 'Log-In Command: phoronix-test-suite openbenchmarking-setup' PHP_EOL PHP_EOL;
-            
//return false;
+            return false;
         }

         
ini_set('memory_limit''2048M');
@@ -
93,+93,@@ var_dump($screenshots);

                     
$ss_delta pts_image::gd_image_delta_composite($reference_ss$screenshots_gd[$ss_file], true);

-                    if(
count($ss_delta) < floor(imagesx($reference_ss) / 2) || filesize($ss_file) > 2097152)
+                    if(
count($ss_delta) < floor(imagesx($reference_ss) * 0.56) || filesize($ss_file) > 2097152)
                     {
-                        
// If less than half of the pixels are changing on X, then likely not much to show off... (CLI only likely)
+                        // If less than 56% of the pixels are changing on X, then likely not much to show off... (CLI only likely)
                         // Or if filesize of image is beyond 2MB
                         //echo 'dropping' . $ss_file . PHP_EOL;
                         
unset($screenshots_gd[$ss_file]);
@@ -
106,+106,@@ var_dump($screenshots);
                 
$ss_files array_keys($screenshots_gd);
                 
shuffle($ss_files);

-                
// Don't upload more than 7MB worth of screenshots
-                while(pts_file_io::array_filesize($ss_files) > (1048576 7))
+                
// Don't upload more than 8MB worth of screenshots
+                while(pts_file_io::array_filesize($ss_files) > (1048576 4))
                 {
                     
$f array_pop($ss_files);
                     
unlink($f);
@@ -
137,52 +137,13 @@ var_dump($screenshots);
                     {
                     
//    pts_file_io::unlink($file);
                     
}
-                
//    pts_file_io::unlink($ss_zip_file);
                 
}
             }

-            
$test_profile_launcher $test_profile->get_test_executable_dir() . $test_profile->get_test_executable();
-
-            if(!
is_file($test_profile_launcher))
-            {
-                echo 
PHP_EOL $test_profile_launcher ' not found.' PHP_EOL;
-                return 
false;
-            }
-
-            
$original_launcher_contents file_get_contents($test_profile_launcher);
-            
$test_binary false;
-
-            if((
$s strpos($original_launcher_contents'$LOG_FILE')))
-            {
-                
$launcher_contents substr($original_launcher_contents0$s);
-                
$test_binary pts_strings::first_in_string(trim(str_replace(array('    ''   ''mpirun''mpiexec''./'), ''substr($launcher_contentsstrrpos($launcher_contentsPHP_EOL) + 1))));
-            }
-
-            if(
strpos($test_binary'.app') && strpos($original_launcher_contents'$LOG_FILE') != ($s strrpos($original_launcher_contents'$LOG_FILE')))
-            {
-                
$launcher_contents substr($original_launcher_contents0$s);
-                
$test_binary pts_strings::first_in_string(trim(str_replace(array('    ''   ''mpirun''mpiexec''./'), ''substr($launcher_contentsstrrpos($launcher_contentsPHP_EOL) + 1))));
-            }
-
-            if(
$test_binary)
-            {
-                if(
is_executable($test_profile->get_test_executable_dir() . '/' $test_binary))
-                {
-                    
$test_binary $test_profile->get_test_executable_dir() . '/' $test_binary;
-                }
-                else if((
$s strpos($launcher_contentsPHP_EOL 'cd ')))
-                {
-                    
$cd = (substr($launcher_contents, ($s 4)));
-                    
$cd substr($cd0strpos($cdPHP_EOL));
-
-                    if(
is_executable($test_profile->get_test_executable_dir() . '/' $cd '/' $test_binary))
-                    {
-                        
$test_binary $test_profile->get_test_executable_dir() . '/' $cd '/' $test_binary;
-                    }
-                }
-            }
+            
$test_binary self::locate_test_profile_lead_binary($test_profile);

             
$shared_library_dependencies = array();
+            
$instruction_usage = array();

             if(
is_executable($test_binary))
             {
@@ -
201,44 +162,25 @@ var_dump($screenshots);
                 echo 
PHP_EOL 'SHARED LIBRARY DEPENDENCIES: ' PHP_EOL;
                 
print_r($shared_library_dependencies);

-                
// Based on data from https://github.com/dirtyepic/scripts/blob/master/analyze-x86
-                $instruction_checks = array(
-                    
'MMX' => array('emms''maskmovq''movq''movntq''packssdw''packsswb''packuswb''paddb''paddd''paddsb''paddsw''paddusb''paddusw''paddw''pand''pandn''pavgusb''pavgb''pavgw''pcmpeqb''pcmpeqd''pcmpeqw''pcmpgtb''pcmpgtd''pcmpgtw''pextrw''pinsrw''pmaddwd''pmaxsw''pmaxub''pminsw''pminub''pmovmskb''pmulhw''pmullw''pmulhuw''por''psadbw''pshufw''pslld''psllq''psllw''psrad''psraw''psrld''psrlq''psrlw''psubb''psubd''psubsb''psubsw''psubusb''psubusw''psubw''punpckhbw''punpckhdq''punpckhwd''punpcklbw''punpckldq''punpcklwd''pxor'),
-                    
'SSE' => array('addps''addss''andnps''andps''cmpeqps''cmpeqss''cmpleps''cmpless''cmpltps''cmpltss''cmpneqps''cmpneqss''cmpnleps''cmpnless''cmpnltps''cmpnltss''cmpordps''cmpordss''cmpps''cmpss''cmpunordps''cmpunordss''comiss''cvtpi2ps''cvtps2pi''cvtsi2ss''cvtss2si''cvttps2pi''cvttss2si''divps''divss''ldmxcsr''maxps''maxss''minps''minss''movaps''movhlps''movhps''movlhps''movlps''movmskps''movntps''movss''movups''mulps''mulss''orps''rcpps''rcpss''rsqrtps''rsqrtss''shufps''sqrtps''sqrtss''stmxcsr''subps''subss''ucomiss''unpckhps''unpcklps''xorps'),
-                    
'SSE2' => array('addpd''addsd''andnpd''andpd''clflush''cmpeqpd''cmpeqsd''cmplepd''cmplesd''cmpltpd''cmpltsd''cmpneqpd''cmpneqsd''cmpnlepd''cmpnlesd''cmpnltpd''cmpnltsd''cmpordpd''cmpordsd''cmppd''cmpunordpd''cmpunordsd''comisd''cvtdq2pd''cvtdq2ps''cvtpd2dq''cvtpd2pi''cvtpd2ps''cvtpi2pd''cvtps2dq''cvtps2pd''cvtsd2si''cvtsd2ss''cvtsi2sd''cvtss2sd''cvttpd2dq''cvttpd2pi''cvttps2dq''cvttsd2si''divpd''divsd''maskmovdqu''maxpd''maxsd''minpd''minsd''movapd''movdq2q''movdqa''movdqu''movhpd''movlpd''movmskpd''movntdq''movnti''movntpd''movq2dq''movupd''mulpd''mulsd''orpd''paddq''pmuludq''pshufd''pshufhw''pshuflw''pslldq''psrldq''psubq''punpckhqdq''punpcklqdq''shufpd''sqrtpd''sqrtsd''subpd''subsd''ucomisd''unpckhpd''unpcklpd''xorpd''movd'),
-                    
'SSE3' => array('addsubpd''addsubps''fisttp''haddpd''haddps''hsubpd''hsubps''lddqu''monitor''movddup''movshdup''movsldup''mwait'),
-                    
'SSSE3' => array('pabsb''pabsd''pabsw''palignr''phaddd''phaddsw''phaddw''phsubd''phsubsw''phsubw''pmaddubsw''pmulhrsw''pshufb''psignb''psignd''psignw'),
-                    
'SSE4_1' => array('blendpd''blendps''blendvpd''blendvps''dppd''dpps''extractps''insertps''movntdqa''mpsadbw''packusdw''pblendvb''pblendw''pcmpeqq''pextrb''pextrd''pextrq''phminposuw''pinsrb''pinsrd''pinsrq''pmaxsb''pmaxsd''pmaxud''pmaxuw''pminsb''pminsd''pminud''pminuw''pmovsxbd''pmovsxbq''pmovsxbw''pmovsxdq''pmovsxwd''pmovsxwq''pmovzxbd''pmovzxbq''pmovzxbw''pmovzxdq''pmovzxwd''pmovzxwq''pmuldq''pmulld''ptest''roundpd''roundps''roundsd''roundss'),
-                    
'SSE4_2' => array('crc32''pcmpestri''pcmpestrm''pcmpgtq''pcmpistri''pcmpistrm''popcnt'),
-                    
'SSE4A' => array('extrq''insertq''movntsd''movntss'),
-                    
'AVX' => array('pclmulhqhqdq''pclmulhqlqdq''pclmullqhqdq''pclmullqlqdq''pclmulqdq''vaddpd''vaddps''vaddsd''vaddss''vaddsubpd''vaddsubps''vaesdec''vaesdeclast''vaesenc''vaesenclast''vaesimc''vaeskeygenassist''vandnpd''vandnps''vandpd''vandps''vblendpd''vblendps''vblendvpd''vblendvps''vbroadcastf128''vbroadcastsd''vbroadcastss''vcmpeq_ospd''vcmpeq_osps''vcmpeq_ossd''vcmpeq_osss''vcmpeqpd''vcmpeqps''vcmpeqsd''vcmpeqss''vcmpeq_uqpd''vcmpeq_uqps''vcmpeq_uqsd''vcmpeq_uqss''vcmpeq_uspd''vcmpeq_usps''vcmpeq_ussd''vcmpeq_usss''vcmpfalse_oqpd''vcmpfalse_oqps''vcmpfalse_oqsd''vcmpfalse_oqss''vcmpfalse_ospd''vcmpfalse_osps''vcmpfalse_ossd''vcmpfalse_osss''vcmpfalsepd''vcmpfalseps''vcmpfalsesd''vcmpfalsess''vcmpge_oqpd''vcmpge_oqps''vcmpge_oqsd''vcmpge_oqss''vcmpge_ospd''vcmpge_osps''vcmpge_ossd''vcmpge_osss''vcmpgepd''vcmpgeps''vcmpgesd''vcmpgess''vcmpgt_oqpd''vcmpgt_oqps''vcmpgt_oqsd''vcmpgt_oqss''vcmpgt_ospd''vcmpgt_osps''vcmpgt_ossd''vcmpgt_osss''vcmpgtpd''vcmpgtps''vcmpgtsd''vcmpgtss''vcmple_oqpd''vcmple_oqps''vcmple_oqsd''vcmple_oqss''vcmple_ospd''vcmple_osps''vcmple_ossd''vcmple_osss''vcmplepd''vcmpleps''vcmplesd''vcmpless''vcmplt_oqpd''vcmplt_oqps''vcmplt_oqsd''vcmplt_oqss''vcmplt_ospd''vcmplt_osps''vcmplt_ossd''vcmplt_osss''vcmpltpd''vcmpltps''vcmpltsd''vcmpltss''vcmpneq_oqpd''vcmpneq_oqps''vcmpneq_oqsd''vcmpneq_oqss''vcmpneq_ospd''vcmpneq_osps''vcmpneq_ossd''vcmpneq_osss''vcmpneqpd''vcmpneqps''vcmpneqsd''vcmpneqss''vcmpneq_uqpd''vcmpneq_uqps''vcmpneq_uqsd''vcmpneq_uqss''vcmpneq_uspd''vcmpneq_usps''vcmpneq_ussd''vcmpneq_usss''vcmpngepd''vcmpngeps''vcmpngesd''vcmpngess''vcmpnge_uqpd''vcmpnge_uqps''vcmpnge_uqsd''vcmpnge_uqss''vcmpnge_uspd''vcmpnge_usps''vcmpnge_ussd''vcmpnge_usss''vcmpngtpd''vcmpngtps''vcmpngtsd''vcmpngtss''vcmpngt_uqpd''vcmpngt_uqps''vcmpngt_uqsd''vcmpngt_uqss''vcmpngt_uspd''vcmpngt_usps''vcmpngt_ussd''vcmpngt_usss''vcmpnlepd''vcmpnleps''vcmpnlesd''vcmpnless''vcmpnle_uqpd''vcmpnle_uqps''vcmpnle_uqsd''vcmpnle_uqss''vcmpnle_uspd''vcmpnle_usps''vcmpnle_ussd''vcmpnle_usss''vcmpnltpd''vcmpnltps''vcmpnltsd''vcmpnltss''vcmpnlt_uqpd''vcmpnlt_uqps''vcmpnlt_uqsd''vcmpnlt_uqss''vcmpnlt_uspd''vcmpnlt_usps''vcmpnlt_ussd''vcmpnlt_usss''vcmpordpd''vcmpordps''vcmpord_qpd''vcmpord_qps''vcmpord_qsd''vcmpord_qss''vcmpordsd''vcmpord_spd''vcmpord_sps''vcmpordss''vcmpord_ssd''vcmpord_sss''vcmppd''vcmpps''vcmpsd''vcmpss''vcmptruepd''vcmptrueps''vcmptruesd''vcmptruess''vcmptrue_uqpd''vcmptrue_uqps''vcmptrue_uqsd''vcmptrue_uqss''vcmptrue_uspd''vcmptrue_usps''vcmptrue_ussd''vcmptrue_usss''vcmpunordpd''vcmpunordps''vcmpunord_qpd''vcmpunord_qps''vcmpunord_qsd''vcmpunord_qss''vcmpunordsd''vcmpunord_spd''vcmpunord_sps''vcmpunordss''vcmpunord_ssd''vcmpunord_sss''vcomisd''vcomiss''vcvtdq2pd''vcvtdq2ps''vcvtpd2dq''vcvtpd2ps''vcvtps2dq''vcvtps2pd''vcvtsd2si''vcvtsd2ss''vcvtsi2sd''vcvtsi2ss''vcvtss2sd''vcvtss2si''vcvttpd2dq''vcvttps2dq''vcvttsd2si''vcvttss2si''vdivpd''vdivps''vdivsd''vdivss''vdppd''vdpps''vextractf128''vextractps''vhaddpd''vhaddps''vhsubpd''vhsubps''vinsertf128''vinsertps''vlddqu''vldmxcsr''vldqqu''vmaskmovdqu''vmaskmovpd''vmaskmovps''vmaxpd''vmaxps''vmaxsd''vmaxss''vminpd''vminps''vminsd''vminss''vmovapd''vmovaps''vmovd''vmovddup''vmovdqa''vmovdqu''vmovhlps''vmovhpd''vmovhps''vmovlhps''vmovlpd''vmovlps''vmovmskpd''vmovmskps''vmovntdq''vmovntdqa''vmovntpd''vmovntps''vmovntqq''vmovq''vmovqqa''vmovqqu''vmovsd''vmovshdup''vmovsldup''vmovss''vmovupd''vmovups''vmpsadbw''vmulpd''vmulps''vmulsd''vmulss''vorpd''vorps''vpabsb''vpabsd''vpabsw''vpackssdw''vpacksswb''vpackusdw''vpackuswb''vpaddb''vpaddd''vpaddq''vpaddsb''vpaddsw''vpaddusb''vpaddusw''vpaddw''vpalignr''vpand''vpandn''vpavgb''vpavgw''vpblendvb''vpblendw''vpclmulhqhqdq''vpclmulhqlqdq''vpclmullqhqdq''vpclmullqlqdq''vpclmulqdq''vpcmpeqb''vpcmpeqd''vpcmpeqq''vpcmpeqw''vpcmpestri''vpcmpestrm''vpcmpgtb''vpcmpgtd''vpcmpgtq''vpcmpgtw''vpcmpistri''vpcmpistrm''vperm2f128''vpermilpd''vpermilps''vpextrb''vpextrd''vpextrq''vpextrw''vphaddd''vphaddsw''vphaddw''vphminposuw''vphsubd''vphsubsw''vphsubw''vpinsrb''vpinsrd''vpinsrq''vpinsrw''vpmaddubsw''vpmaddwd''vpmaxsb''vpmaxsd''vpmaxsw''vpmaxub''vpmaxud''vpmaxuw''vpminsb''vpminsd''vpminsw''vpminub''vpminud''vpminuw''vpmovmskb''vpmovsxbd''vpmovsxbq''vpmovsxbw''vpmovsxdq''vpmovsxwd''vpmovsxwq''vpmovzxbd''vpmovzxbq''vpmovzxbw''vpmovzxdq''vpmovzxwd''vpmovzxwq''vpmuldq''vpmulhrsw''vpmulhuw''vpmulhw''vpmulld''vpmullw''vpmuludq''vpor''vpsadbw''vpshufb''vpshufd''vpshufhw''vpshuflw''vpsignb''vpsignd''vpsignw''vpslld''vpslldq''vpsllq''vpsllw''vpsrad''vpsraw''vpsrld''vpsrldq''vpsrlq''vpsrlw''vpsubb''vpsubd''vpsubq''vpsubsb''vpsubsw''vpsubusb''vpsubusw''vpsubw''vptest''vpunpckhbw''vpunpckhdq''vpunpckhqdq''vpunpckhwd''vpunpcklbw''vpunpckldq''vpunpcklqdq''vpunpcklwd''vpxor''vrcpps''vrcpss''vroundpd''vroundps''vroundsd''vroundss''vrsqrtps''vrsqrtss''vshufpd''vshufps''vsqrtpd''vsqrtps''vsqrtsd''vsqrtss''vstmxcsr''vsubpd''vsubps''vsubsd''vsubss''vtestpd''vtestps''vucomisd''vucomiss''vunpckhpd''vunpckhps''vunpcklpd''vunpcklps''vxorpd''vxorps''vzeroall''vzeroupper'),
-                    
'FMA' => array('vfmadd123pd''vfmadd123ps''vfmadd123sd''vfmadd123ss''vfmadd132pd''vfmadd132ps''vfmadd132sd''vfmadd132ss''vfmadd213pd''vfmadd213ps''vfmadd213sd''vfmadd213ss''vfmadd231pd''vfmadd231ps''vfmadd231sd''vfmadd231ss''vfmadd312pd''vfmadd312ps''vfmadd312sd''vfmadd312ss''vfmadd321pd''vfmadd321ps''vfmadd321sd''vfmadd321ss''vfmaddsub123pd''vfmaddsub123ps''vfmaddsub132pd''vfmaddsub132ps''vfmaddsub213pd''vfmaddsub213ps''vfmaddsub231pd''vfmaddsub231ps''vfmaddsub312pd''vfmaddsub312ps''vfmaddsub321pd''vfmaddsub321ps''vfmsub123pd''vfmsub123ps''vfmsub123sd''vfmsub123ss''vfmsub132pd''vfmsub132ps''vfmsub132sd''vfmsub132ss''vfmsub213pd''vfmsub213ps''vfmsub213sd''vfmsub213ss''vfmsub231pd''vfmsub231ps''vfmsub231sd''vfmsub231ss''vfmsub312pd''vfmsub312ps''vfmsub312sd''vfmsub312ss''vfmsub321pd''vfmsub321ps''vfmsub321sd''vfmsub321ss''vfmsubadd123pd''vfmsubadd123ps''vfmsubadd132pd''vfmsubadd132ps''vfmsubadd213pd''vfmsubadd213ps''vfmsubadd231pd''vfmsubadd231ps''vfmsubadd312pd''vfmsubadd312ps''vfmsubadd321pd''vfmsubadd321ps''vfnmadd123pd''vfnmadd123ps''vfnmadd123sd''vfnmadd123ss''vfnmadd132pd''vfnmadd132ps''vfnmadd132sd''vfnmadd132ss''vfnmadd213pd''vfnmadd213ps''vfnmadd213sd''vfnmadd213ss''vfnmadd231pd''vfnmadd231ps''vfnmadd231sd''vfnmadd231ss''vfnmadd312pd''vfnmadd312ps''vfnmadd312sd''vfnmadd312ss''vfnmadd321pd''vfnmadd321ps''vfnmadd321sd''vfnmadd321ss''vfnmsub123pd''vfnmsub123ps''vfnmsub123sd''vfnmsub123ss''vfnmsub132pd''vfnmsub132ps''vfnmsub132sd''vfnmsub132ss''vfnmsub213pd''vfnmsub213ps''vfnmsub213sd''vfnmsub213ss''vfnmsub231pd''vfnmsub231ps''vfnmsub231sd''vfnmsub231ss''vfnmsub312pd''vfnmsub312ps''vfnmsub312sd''vfnmsub312ss''vfnmsub321pd''vfnmsub321ps''vfnmsub321sd''vfnmsub321ss'),
-                    
'FMA4' => array('vfmaddpd''vfmaddps''vfmaddsd''vfmaddss''vfmaddsubpd''vfmaddsubps''vfmsubaddpd''vfmsubaddps''vfmsubpd''vfmsubps''vfmsubsd''vfmsubss''vfnmaddpd''vfnmaddps''vfnmaddsd''vfnmaddss''vfnmsubpd''vfnmsubps''vfnmsubsd''vfnmsubss''vfrczpd''vfrczps''vfrczsd''vfrczss''vpcmov''vpcomb''vpcomd''vpcomq''vpcomub''vpcomud''vpcomuq''vpcomuw''vpcomw''vphaddbd''vphaddbq''vphaddbw''vphadddq''vphaddubd''vphaddubq''vphaddubw''vphaddudq''vphadduwd''vphadduwq''vphaddwd''vphaddwq''vphsubbw''vphsubdq''vphsubwd''vpmacsdd''vpmacsdqh''vpmacsdql''vpmacssdd''vpmacssdqh''vpmacssdql''vpmacsswd''vpmacssww''vpmacswd''vpmacsww''vpmadcsswd''vpmadcswd''vpperm''vprotb''vprotd''vprotq''vprotw''vpshab''vpshad''vpshaq''vpshaw''vpshlb''vpshld''vpshlq''vpshlw'),
-                    );
-
-                foreach(
array_keys($instruction_checks) as $set)
+                foreach(array(
'core-avx-i''bdver2') as $march)
                 {
-                    
$instruction_usage[$set] = 0;
-                }
-                
$instruction_usage['OTHER'] = 0;
+                    
// So for any compiling tasks they will try to use the most aggressive instructions possible
+                    putenv('CFLAGS=-march=' $march ' -O3');
+                    
putenv('CXXFLAGS=-march=' $march ' -O3');
+                    
pts_test_installer::standard_install($qualified_identifierpts_c::force_install);
+                    
$instruction_usage[$march] = self::analyze_binary_instruction_usage($test_binary);

-                foreach(
explode(PHP_EOL shell_exec('objdump -d ' $test_binary ' | cut -f3 | cut -d\' \' -f1')) as $instruction)
-                {
-                    
$matched_instruction false;
-                    foreach(
$instruction_checks as $set => $instructions)
+                    if(
$instruction_usage[$march] == null)
                     {
-                        if(
in_array(trim($instruction), $instructions))
-                        {
-                            
$instruction_usage[$set] += 1;
-                            
$matched_instruction true;
-                            break;
-                        }
+                        unset(
$instruction_usage[$march]);
                     }
+                }

-                    if(
$matched_instruction == false)
-                    {
-                        
$instruction_usage['OTHER'] += 1;
-                    }
+                if(!empty(
$instruction_usage) && count(array_unique($instruction_usage)) == 1)
+                {
+                    
$generic array_pop($instruction_usage);
+
+                    
$instruction_usage = array('generic' => $generic);
                 }
                 
var_dump($instruction_usage);
             }
@@ -
246,+188,121 @@ var_dump($screenshots);
             {
                 echo 
PHP_EOL $test_binary;
                 echo 
PHP_EOL 'Test binary could not be found.' PHP_EOL;
+        
//        return false;
             
}
         }
+            
sleep(10);
+
+    
var_dump($shared_library_dependencies);
+        
var_dump($instruction_usage);
+
+        
$server_response pts_openbenchmarking::make_openbenchmarking_request('upload_test_meta', array(
+            
'i' => $test_profile->get_identifier(),
+            
'screenshots_zip' => ($ss_zip_conts base64_encode(file_get_contents($ss_zip_file))),
+            
'screenshots_zip_sha1' => sha1($ss_zip_conts),
+            
'ldd_libraries' => implode(','$shared_library_dependencies),
+            
'instruction_set_usage' => base64_encode(json_encode($instruction_usage))
+            ));
+
var_dump($server_response);
+            
$json json_decode($server_responsetrue);
+
+        
pts_file_io::unlink($ss_zip_file);
+    }
+    public static function 
locate_test_profile_lead_binary(&$test_profile)
+    {
+        
$test_profile_launcher $test_profile->get_test_executable_dir() . $test_profile->get_test_executable();
+
+        if(!
is_file($test_profile_launcher))
+        {
+            echo 
PHP_EOL $test_profile_launcher ' not found.' PHP_EOL;
+            return 
false;
+        }
+        
$original_launcher_contents file_get_contents($test_profile_launcher);
+        
$test_binary false;
+
+        if((
$s strpos($original_launcher_contents'$LOG_FILE')))
+        {
+            
$launcher_contents substr($original_launcher_contents0$s);
+            
$test_binary pts_strings::first_in_string(trim(str_replace(array('    ''   ''mpirun''mpiexec''./'), ''substr($launcher_contentsstrrpos($launcher_contentsPHP_EOL) + 1))));
+        }
+
+        if(
strpos($test_binary'.app') && strpos($original_launcher_contents'$LOG_FILE') != ($s strrpos($original_launcher_contents'$LOG_FILE')))
+        {
+            
$launcher_contents substr($original_launcher_contents0$s);
+            
$test_binary pts_strings::first_in_string(trim(str_replace(array('    ''   ''mpirun''mpiexec''./'), ''substr($launcher_contentsstrrpos($launcher_contentsPHP_EOL) + 1))));
+        }
+
+        if(
$test_binary)
+        {
+            if(
is_executable($test_profile->get_test_executable_dir() . '/' $test_binary))
+            {
+                
$test_binary $test_profile->get_test_executable_dir() . '/' $test_binary;
+            }
+            else if((
$s strpos($launcher_contentsPHP_EOL 'cd ')))
+            {
+                
$cd = (substr($launcher_contents, ($s 4)));
+                
$cd substr($cd0strpos($cdPHP_EOL));
+
+                if(
is_executable($test_profile->get_test_executable_dir() . '/' $cd '/' $test_binary))
+                {
+                    
$test_binary $test_profile->get_test_executable_dir() . '/' $cd '/' $test_binary;
+                }
+            }
+        }
+
+        return 
$test_binary;
+    }
+    public static function 
analyze_binary_instruction_usage(&$binary)
+    {
+        
// Based on data from https://github.com/dirtyepic/scripts/blob/master/analyze-x86
+        $instruction_checks = array(
+        
'MMX' => array('emms''maskmovq''movq''movntq''packssdw''packsswb''packuswb''paddb''paddd''paddsb''paddsw''paddusb''paddusw''paddw''pand''pandn''pavgusb''pavgb''pavgw''pcmpeqb''pcmpeqd''pcmpeqw''pcmpgtb''pcmpgtd''pcmpgtw''pextrw''pinsrw''pmaddwd''pmaxsw''pmaxub''pminsw''pminub''pmovmskb''pmulhw''pmullw''pmulhuw''por''psadbw''pshufw''pslld''psllq''psllw''psrad''psraw''psrld''psrlq''psrlw''psubb''psubd''psubsb''psubsw''psubusb''psubusw''psubw''punpckhbw''punpckhdq''punpckhwd''punpcklbw''punpckldq''punpcklwd''pxor'),
+        
'SSE' => array('addps''addss''andnps''andps''cmpeqps''cmpeqss''cmpleps''cmpless''cmpltps''cmpltss''cmpneqps''cmpneqss''cmpnleps''cmpnless''cmpnltps''cmpnltss''cmpordps''cmpordss''cmpps''cmpss''cmpunordps''cmpunordss''comiss''cvtpi2ps''cvtps2pi''cvtsi2ss''cvtss2si''cvttps2pi''cvttss2si''divps''divss''ldmxcsr''maxps''maxss''minps''minss''movaps''movhlps''movhps''movlhps''movlps''movmskps''movntps''movss''movups''mulps''mulss''orps''rcpps''rcpss''rsqrtps''rsqrtss''shufps''sqrtps''sqrtss''stmxcsr''subps''subss''ucomiss''unpckhps''unpcklps''xorps'),
+        
'SSE2' => array('addpd''addsd''andnpd''andpd''clflush''cmpeqpd''cmpeqsd''cmplepd''cmplesd''cmpltpd''cmpltsd''cmpneqpd''cmpneqsd''cmpnlepd''cmpnlesd''cmpnltpd''cmpnltsd''cmpordpd''cmpordsd''cmppd''cmpunordpd''cmpunordsd''comisd''cvtdq2pd''cvtdq2ps''cvtpd2dq''cvtpd2pi''cvtpd2ps''cvtpi2pd''cvtps2dq''cvtps2pd''cvtsd2si''cvtsd2ss''cvtsi2sd''cvtss2sd''cvttpd2dq''cvttpd2pi''cvttps2dq''cvttsd2si''divpd''divsd''maskmovdqu''maxpd''maxsd''minpd''minsd''movapd''movdq2q''movdqa''movdqu''movhpd''movlpd''movmskpd''movntdq''movnti''movntpd''movq2dq''movupd''mulpd''mulsd''orpd''paddq''pmuludq''pshufd''pshufhw''pshuflw''pslldq''psrldq''psubq''punpckhqdq''punpcklqdq''shufpd''sqrtpd''sqrtsd''subpd''subsd''ucomisd''unpckhpd''unpcklpd''xorpd''movd'),
+        
'SSE3' => array('addsubpd''addsubps''fisttp''haddpd''haddps''hsubpd''hsubps''lddqu''monitor''movddup''movshdup''movsldup''mwait'),
+        
'SSSE3' => array('pabsb''pabsd''pabsw''palignr''phaddd''phaddsw''phaddw''phsubd''phsubsw''phsubw''pmaddubsw''pmulhrsw''pshufb''psignb''psignd''psignw'),
+        
'SSE4_1' => array('blendpd''blendps''blendvpd''blendvps''dppd''dpps''extractps''insertps''movntdqa''mpsadbw''packusdw''pblendvb''pblendw''pcmpeqq''pextrb''pextrd''pextrq''phminposuw''pinsrb''pinsrd''pinsrq''pmaxsb''pmaxsd''pmaxud''pmaxuw''pminsb''pminsd''pminud''pminuw''pmovsxbd''pmovsxbq''pmovsxbw''pmovsxdq''pmovsxwd''pmovsxwq''pmovzxbd''pmovzxbq''pmovzxbw''pmovzxdq''pmovzxwd''pmovzxwq''pmuldq''pmulld''ptest''roundpd''roundps''roundsd''roundss'),
+        
'SSE4_2' => array('crc32''pcmpestri''pcmpestrm''pcmpgtq''pcmpistri''pcmpistrm''popcnt'),
+        
'SSE4A' => array('extrq''insertq''movntsd''movntss'),
+        
'AVX' => array('pclmulhqhqdq''pclmulhqlqdq''pclmullqhqdq''pclmullqlqdq''pclmulqdq''vaddpd''vaddps''vaddsd''vaddss''vaddsubpd''vaddsubps''vaesdec''vaesdeclast''vaesenc''vaesenclast''vaesimc''vaeskeygenassist''vandnpd''vandnps''vandpd''vandps''vblendpd''vblendps''vblendvpd''vblendvps''vbroadcastf128''vbroadcastsd''vbroadcastss''vcmpeq_ospd''vcmpeq_osps''vcmpeq_ossd''vcmpeq_osss''vcmpeqpd''vcmpeqps''vcmpeqsd''vcmpeqss''vcmpeq_uqpd''vcmpeq_uqps''vcmpeq_uqsd''vcmpeq_uqss''vcmpeq_uspd''vcmpeq_usps''vcmpeq_ussd''vcmpeq_usss''vcmpfalse_oqpd''vcmpfalse_oqps''vcmpfalse_oqsd''vcmpfalse_oqss''vcmpfalse_ospd''vcmpfalse_osps''vcmpfalse_ossd''vcmpfalse_osss''vcmpfalsepd''vcmpfalseps''vcmpfalsesd''vcmpfalsess''vcmpge_oqpd''vcmpge_oqps''vcmpge_oqsd''vcmpge_oqss''vcmpge_ospd''vcmpge_osps''vcmpge_ossd''vcmpge_osss''vcmpgepd''vcmpgeps''vcmpgesd''vcmpgess''vcmpgt_oqpd''vcmpgt_oqps''vcmpgt_oqsd''vcmpgt_oqss''vcmpgt_ospd''vcmpgt_osps''vcmpgt_ossd''vcmpgt_osss''vcmpgtpd''vcmpgtps''vcmpgtsd''vcmpgtss''vcmple_oqpd''vcmple_oqps''vcmple_oqsd''vcmple_oqss''vcmple_ospd''vcmple_osps''vcmple_ossd''vcmple_osss''vcmplepd''vcmpleps''vcmplesd''vcmpless''vcmplt_oqpd''vcmplt_oqps''vcmplt_oqsd''vcmplt_oqss''vcmplt_ospd''vcmplt_osps''vcmplt_ossd''vcmplt_osss''vcmpltpd''vcmpltps''vcmpltsd''vcmpltss''vcmpneq_oqpd''vcmpneq_oqps''vcmpneq_oqsd''vcmpneq_oqss''vcmpneq_ospd''vcmpneq_osps''vcmpneq_ossd''vcmpneq_osss''vcmpneqpd''vcmpneqps''vcmpneqsd''vcmpneqss''vcmpneq_uqpd''vcmpneq_uqps''vcmpneq_uqsd''vcmpneq_uqss''vcmpneq_uspd''vcmpneq_usps''vcmpneq_ussd''vcmpneq_usss''vcmpngepd''vcmpngeps''vcmpngesd''vcmpngess''vcmpnge_uqpd''vcmpnge_uqps''vcmpnge_uqsd''vcmpnge_uqss''vcmpnge_uspd''vcmpnge_usps''vcmpnge_ussd''vcmpnge_usss''vcmpngtpd''vcmpngtps''vcmpngtsd''vcmpngtss''vcmpngt_uqpd''vcmpngt_uqps''vcmpngt_uqsd''vcmpngt_uqss''vcmpngt_uspd''vcmpngt_usps''vcmpngt_ussd''vcmpngt_usss''vcmpnlepd''vcmpnleps''vcmpnlesd''vcmpnless''vcmpnle_uqpd''vcmpnle_uqps''vcmpnle_uqsd''vcmpnle_uqss''vcmpnle_uspd''vcmpnle_usps''vcmpnle_ussd''vcmpnle_usss''vcmpnltpd''vcmpnltps''vcmpnltsd''vcmpnltss''vcmpnlt_uqpd''vcmpnlt_uqps''vcmpnlt_uqsd''vcmpnlt_uqss''vcmpnlt_uspd''vcmpnlt_usps''vcmpnlt_ussd''vcmpnlt_usss''vcmpordpd''vcmpordps''vcmpord_qpd''vcmpord_qps''vcmpord_qsd''vcmpord_qss''vcmpordsd''vcmpord_spd''vcmpord_sps''vcmpordss''vcmpord_ssd''vcmpord_sss''vcmppd''vcmpps''vcmpsd''vcmpss''vcmptruepd''vcmptrueps''vcmptruesd''vcmptruess''vcmptrue_uqpd''vcmptrue_uqps''vcmptrue_uqsd''vcmptrue_uqss''vcmptrue_uspd''vcmptrue_usps''vcmptrue_ussd''vcmptrue_usss''vcmpunordpd''vcmpunordps''vcmpunord_qpd''vcmpunord_qps''vcmpunord_qsd''vcmpunord_qss''vcmpunordsd''vcmpunord_spd''vcmpunord_sps''vcmpunordss''vcmpunord_ssd''vcmpunord_sss''vcomisd''vcomiss''vcvtdq2pd''vcvtdq2ps''vcvtpd2dq''vcvtpd2ps''vcvtps2dq''vcvtps2pd''vcvtsd2si''vcvtsd2ss''vcvtsi2sd''vcvtsi2ss''vcvtss2sd''vcvtss2si''vcvttpd2dq''vcvttps2dq''vcvttsd2si''vcvttss2si''vdivpd''vdivps''vdivsd''vdivss''vdppd''vdpps''vextractf128''vextractps''vhaddpd''vhaddps''vhsubpd''vhsubps''vinsertf128''vinsertps''vlddqu''vldmxcsr''vldqqu''vmaskmovdqu''vmaskmovpd''vmaskmovps''vmaxpd''vmaxps''vmaxsd''vmaxss''vminpd''vminps''vminsd''vminss''vmovapd''vmovaps''vmovd''vmovddup''vmovdqa''vmovdqu''vmovhlps''vmovhpd''vmovhps''vmovlhps''vmovlpd''vmovlps''vmovmskpd''vmovmskps''vmovntdq''vmovntdqa''vmovntpd''vmovntps''vmovntqq''vmovq''vmovqqa''vmovqqu''vmovsd''vmovshdup''vmovsldup''vmovss''vmovupd''vmovups''vmpsadbw''vmulpd''vmulps''vmulsd''vmulss''vorpd''vorps''vpabsb''vpabsd''vpabsw''vpackssdw''vpacksswb''vpackusdw''vpackuswb''vpaddb''vpaddd''vpaddq''vpaddsb''vpaddsw''vpaddusb''vpaddusw''vpaddw''vpalignr''vpand''vpandn''vpavgb''vpavgw''vpblendvb''vpblendw''vpclmulhqhqdq''vpclmulhqlqdq''vpclmullqhqdq''vpclmullqlqdq''vpclmulqdq''vpcmpeqb''vpcmpeqd''vpcmpeqq''vpcmpeqw''vpcmpestri''vpcmpestrm''vpcmpgtb''vpcmpgtd''vpcmpgtq''vpcmpgtw''vpcmpistri''vpcmpistrm''vperm2f128''vpermilpd''vpermilps''vpextrb''vpextrd''vpextrq''vpextrw''vphaddd''vphaddsw''vphaddw''vphminposuw''vphsubd''vphsubsw''vphsubw''vpinsrb''vpinsrd''vpinsrq''vpinsrw''vpmaddubsw''vpmaddwd''vpmaxsb''vpmaxsd''vpmaxsw''vpmaxub''vpmaxud''vpmaxuw''vpminsb''vpminsd''vpminsw''vpminub''vpminud''vpminuw''vpmovmskb''vpmovsxbd''vpmovsxbq''vpmovsxbw''vpmovsxdq''vpmovsxwd''vpmovsxwq''vpmovzxbd''vpmovzxbq''vpmovzxbw''vpmovzxdq''vpmovzxwd''vpmovzxwq''vpmuldq''vpmulhrsw''vpmulhuw''vpmulhw''vpmulld''vpmullw''vpmuludq''vpor''vpsadbw''vpshufb''vpshufd''vpshufhw''vpshuflw''vpsignb''vpsignd''vpsignw''vpslld''vpslldq''vpsllq''vpsllw''vpsrad''vpsraw''vpsrld''vpsrldq''vpsrlq''vpsrlw''vpsubb''vpsubd''vpsubq''vpsubsb''vpsubsw''vpsubusb''vpsubusw''vpsubw''vptest''vpunpckhbw''vpunpckhdq''vpunpckhqdq''vpunpckhwd''vpunpcklbw''vpunpckldq''vpunpcklqdq''vpunpcklwd''vpxor''vrcpps''vrcpss''vroundpd''vroundps''vroundsd''vroundss''vrsqrtps''vrsqrtss''vshufpd''vshufps''vsqrtpd''vsqrtps''vsqrtsd''vsqrtss''vstmxcsr''vsubpd''vsubps''vsubsd''vsubss''vtestpd''vtestps''vucomisd''vucomiss''vunpckhpd''vunpckhps''vunpcklpd''vunpcklps''vxorpd''vxorps''vzeroall''vzeroupper'),
+        
'FMA' => array('vfmadd123pd''vfmadd123ps''vfmadd123sd''vfmadd123ss''vfmadd132pd''vfmadd132ps''vfmadd132sd''vfmadd132ss''vfmadd213pd''vfmadd213ps''vfmadd213sd''vfmadd213ss''vfmadd231pd''vfmadd231ps''vfmadd231sd''vfmadd231ss''vfmadd312pd''vfmadd312ps''vfmadd312sd''vfmadd312ss''vfmadd321pd''vfmadd321ps''vfmadd321sd''vfmadd321ss''vfmaddsub123pd''vfmaddsub123ps''vfmaddsub132pd''vfmaddsub132ps''vfmaddsub213pd''vfmaddsub213ps''vfmaddsub231pd''vfmaddsub231ps''vfmaddsub312pd''vfmaddsub312ps''vfmaddsub321pd''vfmaddsub321ps''vfmsub123pd''vfmsub123ps''vfmsub123sd''vfmsub123ss''vfmsub132pd''vfmsub132ps''vfmsub132sd''vfmsub132ss''vfmsub213pd''vfmsub213ps''vfmsub213sd''vfmsub213ss''vfmsub231pd''vfmsub231ps''vfmsub231sd''vfmsub231ss''vfmsub312pd''vfmsub312ps''vfmsub312sd''vfmsub312ss''vfmsub321pd''vfmsub321ps''vfmsub321sd''vfmsub321ss''vfmsubadd123pd''vfmsubadd123ps''vfmsubadd132pd''vfmsubadd132ps''vfmsubadd213pd''vfmsubadd213ps''vfmsubadd231pd''vfmsubadd231ps''vfmsubadd312pd''vfmsubadd312ps''vfmsubadd321pd''vfmsubadd321ps''vfnmadd123pd''vfnmadd123ps''vfnmadd123sd''vfnmadd123ss''vfnmadd132pd''vfnmadd132ps''vfnmadd132sd''vfnmadd132ss''vfnmadd213pd''vfnmadd213ps''vfnmadd213sd''vfnmadd213ss''vfnmadd231pd''vfnmadd231ps''vfnmadd231sd''vfnmadd231ss''vfnmadd312pd''vfnmadd312ps''vfnmadd312sd''vfnmadd312ss''vfnmadd321pd''vfnmadd321ps''vfnmadd321sd''vfnmadd321ss''vfnmsub123pd''vfnmsub123ps''vfnmsub123sd''vfnmsub123ss''vfnmsub132pd''vfnmsub132ps''vfnmsub132sd''vfnmsub132ss''vfnmsub213pd''vfnmsub213ps''vfnmsub213sd''vfnmsub213ss''vfnmsub231pd''vfnmsub231ps''vfnmsub231sd''vfnmsub231ss''vfnmsub312pd''vfnmsub312ps''vfnmsub312sd''vfnmsub312ss''vfnmsub321pd''vfnmsub321ps''vfnmsub321sd''vfnmsub321ss'),
+        
'FMA4' => array('vfmaddpd''vfmaddps''vfmaddsd''vfmaddss''vfmaddsubpd''vfmaddsubps''vfmsubaddpd''vfmsubaddps''vfmsubpd''vfmsubps''vfmsubsd''vfmsubss''vfnmaddpd''vfnmaddps''vfnmaddsd''vfnmaddss''vfnmsubpd''vfnmsubps''vfnmsubsd''vfnmsubss''vfrczpd''vfrczps''vfrczsd''vfrczss''vpcmov''vpcomb''vpcomd''vpcomq''vpcomub''vpcomud''vpcomuq''vpcomuw''vpcomw''vphaddbd''vphaddbq''vphaddbw''vphadddq''vphaddubd''vphaddubq''vphaddubw''vphaddudq''vphadduwd''vphadduwq''vphaddwd''vphaddwq''vphsubbw''vphsubdq''vphsubwd''vpmacsdd''vpmacsdqh''vpmacsdql''vpmacssdd''vpmacssdqh''vpmacssdql''vpmacsswd''vpmacssww''vpmacswd''vpmacsww''vpmadcsswd''vpmadcswd''vpperm''vprotb''vprotd''vprotq''vprotw''vpshab''vpshad''vpshaq''vpshaw''vpshlb''vpshld''vpshlq''vpshlw'),
+        );
+
+        foreach(
array_keys($instruction_checks) as $set)
+        {
+            
$instruction_usage[$set] = 0;
+        }
+        
$instruction_usage['OTHER'] = 0;
+
+        foreach(
explode(PHP_EOL shell_exec('objdump -d ' $binary ' | cut -f3 | cut -d\' \' -f1')) as $instruction)
+        {
+            
$matched_instruction false;
+            foreach(
$instruction_checks as $set => $instructions)
+            {
+                if(
in_array(trim($instruction), $instructions))
+                {
+                    
$instruction_usage[$set] += 1;
+                    
$matched_instruction true;
+                    break;
+                }
+            }
+
+            if(
$matched_instruction == false)
+            {
+                
$instruction_usage['OTHER'] += 1;
+            }
+        }
+
+        foreach(
$instruction_usage as $instruction => $usage)
+        {
+            if(
$usage 2)
+            {
+                unset(
$instruction_usage[$instruction]);
+            }
+        }
+
+        return 
$instruction_usage;
     }
 }

diff --git a/pts-core/objects/client/pts_client.php b/pts-core/objects/client/pts_client.php
index c62fbca
..8e8db5f 100644
--- a/pts-core/objects/client/pts_client.php
+++ b/pts-core/objects/client/pts_client.php
@@ -1459,+1459,11 @@ class pts_client
     
}
     public static function 
pts_set_environmental_variable($name$value)
     {
-        
// TODO XXX: rename pts_set_environmental_variable to set_environment_variable
+        // TODO XXX: programs calling this should be updated to use environment_variable
+        self::pts_set_environment_variable($name$value);
+    }
+    public static function 
pts_set_environment_variable($name$value)
+    {
         
// Sets an environmental variable
         
return getenv($name) == false && putenv($name '=' $value);
     }
diff --git a/pts-core/objects/client/pts_test_run_manager.php b/pts-core/objects/client/pts_test_run_manager.php
index 482d2aa
..78b6342 100644
--- a/pts-core/objects/client/pts_test_run_manager.php
+++ b/pts-core/objects/client/pts_test_run_manager.php
@@ -845,+845,10 @@ class pts_test_run_manager

                     
if(!empty($upload_url))
                     {
-                        
pts_client::display_web_page($upload_url'Do you want to launch OpenBenchmarking.org'true);
+                        if((
pts_c::$test_flags pts_c::auto_mode) && pts_openbenchmarking_client::auto_upload_results() == false)
+                        {
+                            
pts_client::display_web_page($upload_url'Do you want to launch OpenBenchmarking.org'true);
+                        }
                     }
                     else
                     {
<
 
Phoronix.com
Linux Driver Forums
Copyright © 2013 by Phoronix Media