69 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/bin/bash -x
 | |
| 
 | |
| cd examples/omnetpp/cpu2006-redhat-ia32
 | |
| 
 | |
| # Contains the optimization flags.
 | |
| flags=''
 | |
| 
 | |
| # The index of the parameter.
 | |
| i=1
 | |
| 
 | |
| # Indicate whether it is parsing the gcc param.
 | |
| in_gcc_param=false
 | |
| 
 | |
| for parameter in "$@"
 | |
|   do
 | |
|     #  The last parameter is the file name.
 | |
|     if [ "$i" == "$#" ]; then
 | |
|       file=$parameter
 | |
|       break
 | |
|     fi
 | |
| 
 | |
|     # The param is not a flag, it combines with the flag that comes right after.
 | |
|     # For example, --param max-inline-insns-single 
 | |
|     if [ "$parameter" == "-param" ]; then
 | |
|       in_gcc_param=true
 | |
|       flags+=-$parameter' '
 | |
|       let i++
 | |
|       continue
 | |
|     fi
 | |
| 
 | |
|     # In in_gcc_param section, this flag follows the key word '--param'.
 | |
|     if [ $in_gcc_param == true ]; then
 | |
|       flags+=$parameter' '
 | |
|       let i++
 | |
|       in_gcc_param=false
 | |
|       continue
 | |
|     fi
 | |
| 
 | |
|     # Normal flags.
 | |
|     flags+=-$parameter' '
 | |
|     let i++
 | |
|   done
 | |
| 
 | |
| # Change the configuration file.
 | |
| content=$(sed s/amd64-m64-gcc41-kk/test$file/ config/linux64-amd64-pgi.cfg)
 | |
| echo "$content" | sed s/-O2/-O1\ "$flags"/ >config/linux64-amd64-pgi$file.cfg
 | |
| . ./shrc
 | |
| /usr/bin/time -o temp$file runspec --config linux64-amd64-pgi$file -D --action=build  471.omnetpp
 | |
| 
 | |
| state=$?
 | |
| 
 | |
| outfile="./benchspec/CPU2006/471.omnetpp/run/build_base_test$file.0000/omnetpp"
 | |
| 
 | |
| if [ $state -eq 0 ];then
 | |
|   user_time=$(cat build_timer$file | grep "user" | cut -d "u" -f 1)
 | |
|   output_file="$file"
 | |
| 
 | |
|   checksum=$(readelf -x .text $outfile | md5sum | cut -d " " -f 1)
 | |
|   file_size=$(ls -l $outfile | cut -d " " -f 5)
 | |
|   text_section=$(readelf -SW $outfile | grep ".text")
 | |
|   size_hex=$(echo $text_section | sed "s/\s\{1,\}/\ /g" | cut -d ' ' -f 6)
 | |
|   size=$(echo $size_hex | ( echo "ibase=16" ; tr '[:lower:]' '[:upper:]') | bc)
 | |
| 
 | |
|   echo $checksum $user_time $output_file $file_size $size
 | |
| else
 | |
|   echo "error" "error" "error" "error" "error"
 | |
| fi
 | |
| 
 | |
| return $state |