1*760c253cSXin Li#!/bin/bash -x 2*760c253cSXin Li 3*760c253cSXin Licd examples/omnetpp/cpu2006-redhat-ia32 4*760c253cSXin Li 5*760c253cSXin Li# Contains the optimization flags. 6*760c253cSXin Liflags='' 7*760c253cSXin Li 8*760c253cSXin Li# The index of the parameter. 9*760c253cSXin Lii=1 10*760c253cSXin Li 11*760c253cSXin Li# Indicate whether it is parsing the gcc param. 12*760c253cSXin Liin_gcc_param=false 13*760c253cSXin Li 14*760c253cSXin Lifor parameter in "$@" 15*760c253cSXin Li do 16*760c253cSXin Li # The last parameter is the file name. 17*760c253cSXin Li if [ "$i" == "$#" ]; then 18*760c253cSXin Li file=$parameter 19*760c253cSXin Li break 20*760c253cSXin Li fi 21*760c253cSXin Li 22*760c253cSXin Li # The param is not a flag, it combines with the flag that comes right after. 23*760c253cSXin Li # For example, --param max-inline-insns-single 24*760c253cSXin Li if [ "$parameter" == "-param" ]; then 25*760c253cSXin Li in_gcc_param=true 26*760c253cSXin Li flags+=-$parameter' ' 27*760c253cSXin Li let i++ 28*760c253cSXin Li continue 29*760c253cSXin Li fi 30*760c253cSXin Li 31*760c253cSXin Li # In in_gcc_param section, this flag follows the key word '--param'. 32*760c253cSXin Li if [ $in_gcc_param == true ]; then 33*760c253cSXin Li flags+=$parameter' ' 34*760c253cSXin Li let i++ 35*760c253cSXin Li in_gcc_param=false 36*760c253cSXin Li continue 37*760c253cSXin Li fi 38*760c253cSXin Li 39*760c253cSXin Li # Normal flags. 40*760c253cSXin Li flags+=-$parameter' ' 41*760c253cSXin Li let i++ 42*760c253cSXin Li done 43*760c253cSXin Li 44*760c253cSXin Li# Change the configuration file. 45*760c253cSXin Licontent=$(sed s/amd64-m64-gcc41-kk/test$file/ config/linux64-amd64-pgi.cfg) 46*760c253cSXin Liecho "$content" | sed s/-O2/-O1\ "$flags"/ >config/linux64-amd64-pgi$file.cfg 47*760c253cSXin Li. ./shrc 48*760c253cSXin Li/usr/bin/time -o temp$file runspec --config linux64-amd64-pgi$file -D --action=build 471.omnetpp 49*760c253cSXin Li 50*760c253cSXin Listate=$? 51*760c253cSXin Li 52*760c253cSXin Lioutfile="./benchspec/CPU2006/471.omnetpp/run/build_base_test$file.0000/omnetpp" 53*760c253cSXin Li 54*760c253cSXin Liif [ $state -eq 0 ];then 55*760c253cSXin Li user_time=$(cat build_timer$file | grep "user" | cut -d "u" -f 1) 56*760c253cSXin Li output_file="$file" 57*760c253cSXin Li 58*760c253cSXin Li checksum=$(readelf -x .text $outfile | md5sum | cut -d " " -f 1) 59*760c253cSXin Li file_size=$(ls -l $outfile | cut -d " " -f 5) 60*760c253cSXin Li text_section=$(readelf -SW $outfile | grep ".text") 61*760c253cSXin Li size_hex=$(echo $text_section | sed "s/\s\{1,\}/\ /g" | cut -d ' ' -f 6) 62*760c253cSXin Li size=$(echo $size_hex | ( echo "ibase=16" ; tr '[:lower:]' '[:upper:]') | bc) 63*760c253cSXin Li 64*760c253cSXin Li echo $checksum $user_time $output_file $file_size $size 65*760c253cSXin Lielse 66*760c253cSXin Li echo "error" "error" "error" "error" "error" 67*760c253cSXin Lifi 68*760c253cSXin Li 69*760c253cSXin Lireturn $state