SPEC CPU2000: Details of Benchmark Changes in V1.2Last updated: 28-Nov-2001 jh |
(To check for possible updates to this document, please see http://www.spec.org/cpu2000/docs/)
This document provides complete details about changes to the benchmarks in SPEC CPU2000 V1.2. For a summary, see http://www.spec.org/cpu2000/docs/changes_in_V1.2.html
Most changes were made in order to support systems with a "P64" programming model: pointers are 64 bits, but longs are only 32 bits. These changes are accessed by setting -DSPEC_CPU2000_P64. It is assumed that such systems provide a 64-bit datatype called &uot;__int64".
The changes are presented as an annotated diff of the V1.1 benchspec directory tree vs. the V1.2 benchspec directory tree. The diff output shows lines that have been removed with the left angle bracket, "<", at the beginning of the line, and it shows lines that have been added with the right angle bracket,">", at the beginning of the line. Strings of numbers with a "c" in the middle indicate line numbers; for example, the first listed change for Makefile.defaults is "192c192,195", which indicates that line 192 in the old file is replaced by lines 192 through 195 in the new file.
For readability, white space has been liberally adjusted in the diff output, and some lines have been wrapped (so as to fit narrow browser windows or narrow pieces of paper when printing).
Fix Makefile.defaults to only attempt to remove objectnames if such a file was actually used.
diff -r v1.1/benchspec/Makefile.defaults v1.2/benchspec/Makefile.defaults 192c192,195 < -$(RMRF) $(EXEBASE) $(EXEBASE).exe *$(OBJ) $(EXTRA_RMFILES) core *.err *.out objectnames --- > -$(RMRF) $(EXEBASE) $(EXEBASE).exe *$(OBJ) $(EXTRA_RMFILES) core *.err *.out > ifdef NEEDATFILE > -$(RMRF) objectnames > endif diff -r v1.1/benchspec/version v1.2/benchspec/version 1c1 < 1.1 --- > 1.2
In the facerec docs directory, correct the author's contact information.
diff -r v1.1/benchspec/CFP2000/187.facerec/version v1.2/benchspec/CFP2000/187.facerec/version 1c1 < 103 --- > 109 diff -r v1.1/benchspec/CFP2000/187.facerec/docs/187.facerec.html v1.2/benchspec/CFP2000/187.facerec/docs/187.facerec.html 18c18 < <P>Jan C. Vorbrüeggen (Jan.Vorbrueggen@neuroinformatik.ruhr-uni-bochum.de)</P> --- > <P>Jan C. Vorbrüggen (jvorbrueggen@mediasec.de)</P> 207c207 < <P>Last Updated: 16 August 2000</P> --- > <P>Last Updated: 1 November 2001</P> diff -r v1.1/benchspec/CFP2000/187.facerec/docs/187.facerec.txt v1.2/benchspec/CFP2000/187.facerec/docs/187.facerec.txt 5,6c5,6 < Benchmark Author: Jan C. Vorbrueggen < (Jan.Vorbrueggen@neuroinformatik.ruhr-uni-bochum.de) --- > Benchmark Author: Jan C. Vorbrüggen > (jvorbrueggen@mediasec.de)
In the facerec src directory, correct the perl scripts that encode and decode faces for better NT compatibility. (These scripts are not actually used during running of the benchmark.)
diff -r v1.1/benchspec/CFP2000/187.facerec/src/decode_256 v1.2/benchspec/CFP2000/187.facerec/src/decode_256 11a12 > binmode OUTPUT; diff -r v1.1/benchspec/CFP2000/187.facerec/src/encode v1.2/benchspec/CFP2000/187.facerec/src/encode 16a17 > binmode OUTPUT;
For vpr, fix "Align" to use a pointer-sized variable (that is, "size_t") instead of a long, because some systems may not be able to store a pointer in a variable of size long.
diff -r v1.1/benchspec/CINT2000/175.vpr/version v1.2/benchspec/CINT2000/175.vpr/version 1c1 < 80 --- > 109 diff -r v1.1/benchspec/CINT2000/175.vpr/src/util.c v1.2/benchspec/CINT2000/175.vpr/src/util.c 93c93 < typedef long Align; --- > typedef size_t Align;
For mcf's defines.h, ensure that "mark" can hold pointers, even if they are bigger than longs.
diff -r v1.1/benchspec/CINT2000/181.mcf/version v1.2/benchspec/CINT2000/181.mcf/version 1c1 < 104 --- > 109 diff -r v1.1/benchspec/CINT2000/181.mcf/src/defines.h v1.2/benchspec/CINT2000/181.mcf/src/defines.h 102c102 < long mark; --- > size_t mark;
In mcf's implicit.c, "off" needs a 64-bit (signed) variable, so the first three changes below substitute "__int64" where the original code had "long". The final change is to avoid casting first_of_sparse_list to a long, which could truncate it on a system where pointers are larger than longs.
diff -r v1.1/benchspec/CINT2000/181.mcf/src/implicit.c v1.2/benchspec/CINT2000/181.mcf/src/implicit.c 31a32,34 > #ifdef SPEC_CPU2000_P64 > __int64 off; > #else 32a36 > #endif 51a56,58 > #ifdef SPEC_CPU2000_P64 > off = (__int64)arc - (__int64)net->arcs; > #else 52a60 > #endif 59a68,70 > #ifdef SPEC_CPU2000_P64 > node->basic_arc = (arc_t *)((__int64)node->basic_arc + off); > #else 61c72 < --- > #endif 232c243 < arcout->head->firstout->head->mark = (long)first_of_sparse_list; --- > arcout->head->firstout->head->mark = (size_t)first_of_sparse_list;
In SPEC CPU2000 V1.0, crafty had a missing close-comment delimiter. For V1.1, this problem was corrected in a "src.alt" - that is, you could optionally use the corrected version. For V1.2, the fix has been promoted to the regular source directory.
Prior to this fix, some compilers included the lines that followed the #endif, whereas others excluded all source lines up until the next end comment symbol. As a result, some systems were running a slightly different benchmark than others. (Measurements indicate that the performance difference was very small.)
The fix for the dangling comment ensures that the C preprocessor will present the same source code to all compilers.
diff -r v1.1/benchspec/CINT2000/186.crafty/version v1.2/benchspec/CINT2000/186.crafty/version 1c1 < 107 --- > 109 diff -r v1.1/benchspec/CINT2000/186.crafty/src/main.c v1.2/benchspec/CINT2000/186.crafty/src/main.c 1984c1984 < #endif /* SPEC_CPU2000 --- > #endif /* SPEC_CPU2000 */ Only in v1.1/benchspec/CINT2000/186.crafty/src: src.alt
In eon's eon.cc, provide an explicit cast for the return from strlen, resolving an ambiguity for which conversion to apply.
diff -r v1.1/benchspec/CINT2000/252.eon/version v1.2/benchspec/CINT2000/252.eon/version 1c1 < 104 --- > 110 diff -r v1.1/benchspec/CINT2000/252.eon/src/eon.cc v1.2/benchspec/CINT2000/252.eon/src/eon.cc 79a80,82 > #ifdef SPEC_CPU2000_P64 > cerr << "pixel output filename length is " << (int)strlen(argv[6]) << ". This value must be between 1 and 255. Aborting."; > #else 80a84 > #endif /* SPEC_CPU2000_P64 */
In eon's ggFrame2 and ggFrame3, there is a line of code that relies on a non-standard behavior, apparently attempting to read into string literals. (!) The 17 lines of replacement code (plus 1 line of declaration) provide a standards-compliant solution, if the program is compiled with -DSPEC_STDCPP.
Note that when SPEC_STDCPP is not set, SPEC_SETSTATE becomes a no-op. This is because non-standards compliant compilers do not necessarily implement an externally-visible setstate method for input streams. In this case the code is slightly broken; error conditions in the input would not be detected right away. SPEC feels that this is an acceptable compromise as the code in question is never executed during the course of a benchmark run.
diff -r v1.1/benchspec/CINT2000/252.eon/src/ggFrame2.cc v1.2/benchspec/CINT2000/252.eon/src/ggFrame2.cc 55a56,60 > #if defined(SPEC_STDCPP) > # define SPEC_SETSTATE(x,y) (x).setstate((y)); > #else > # define SPEC_SETSTATE(x,y) > #endif 62a68 > char c; 64c70,86 < is >> "(" >> input_p >> "," >> input_onb2 >> ")"; --- > is >> c; > if (c != '(') { > SPEC_SETSTATE(is,ios::failbit) > return is; > } > is >> input_p; > is >> c; > if (c != ',') { > SPEC_SETSTATE(is,ios::failbit) > return is; > } > is >> input_onb2; > is >> c; > if (c != ')') { > SPEC_SETSTATE(is,ios::failbit) > return is; > } diff -r v1.1/benchspec/CINT2000/252.eon/src/ggFrame3.cc v1.2/benchspec/CINT2000/252.eon/src/ggFrame3.cc 54a55,59 > #if defined(SPEC_STDCPP) > # define SPEC_SETSTATE(x,y) (x).setstate((y)); > #else > # define SPEC_SETSTATE(x,y) > #endif 61a67 > char c; 63c69,85 < is >> "(" >> input_p >> "," >> input_onb3 >> ")"; --- > is >> c; > if (c != '(') { > SPEC_SETSTATE(is,ios::failbit) > return is; > } > is >> input_p; > is >> c; > if (c != ',') { > SPEC_SETSTATE(is,ios::failbit) > return is; > } > is >> input_onb3; > is >> c; > if (c != ')') { > SPEC_SETSTATE(is,ios::failbit) > return is; > }
Although the changes to perlbmk may appear to be extensive, they actually break down into some simple categories. Note that the diff of spec_config.h, below, has been re-ordered to reflect these categories!
diff -r v1.1/benchspec/CINT2000/253.perlbmk/version v1.2/benchspec/CINT2000/253.perlbmk/version 1c1 < 103 --- > 110
For glibc 2.2 and later, include time.h, so that struct tm is properly declared.
diff -r v1.1/benchspec/CINT2000/253.perlbmk/src/pp_sys.c v1.2/benchspec/CINT2000/253.perlbmk/src/pp_sys.c 18a19,22 > #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2) || \ > defined(SPEC_CPU2000_NEED_TIME_H) > # include <time.h> > #endif 19a24 > diff -r v1.1/benchspec/CINT2000/253.perlbmk/src/spec_config.h v1.2/benchspec/CINT2000/253.perlbmk/src/spec_config.h
Add support for Linux on IBM System 390
40a41,42 > * SPEC_CPU2000_LINUX_S390 > * SPEC_CPU2000_LINUX_S390X 105c107,108 < * --- > * > * May-01 Eberhard Pasch added defines for LINUX_S390 and LINUX_S390X. 123a127,128 > || defined(SPEC_CPU2000_LINUX_S390) \ > || defined(SPEC_CPU2000_LINUX_S390X) \ 128c133,134 < #if defined(SPEC_CPU2000_LINUX_ALPHA) --- > #if defined(SPEC_CPU2000_LINUX_ALPHA) \ > || defined(SPEC_CPU2000_LINUX_S390X) 210a224,225 > || defined(SPEC_CPU2000_LINUX_S390) \ > || defined(SPEC_CPU2000_LINUX_S390X) \
Add support for P64 data model (longs 4 bytes, pointers 8)
161a168,170 > #elif defined(SPEC_CPU2000_P64) > #define LONGSIZE 4 > #define PTRSIZE 8 188c197,201 < #undef HAS_LONG_LONG --- > /*#undef HAS_LONG_LONG*/ > #if defined(SPEC_CPU2000_NTOS) && defined(SPEC_CPU2000_P64) > # define HAS_LONG_LONG > #endif /* SPEC_CPU2000_NTOS && SPEC_CPU2000_P64 */ > 1964a1986,1988 > #ifdef SPEC_CPU2000_P64 > #define SSize_t __int64 /* signed count of bytes */ > #else 1965a1990 > #endif /* SPEC_CPU2000_P64 */
For glibc 2.2 and later, we need to define HAS_FGETPOS and HAS_FSETPOS, in order to avoid perl declaring its own function that uses the wrong type of argument to fseek (fpos_t is now a struct).
595c610,613 < #undef HAS_FGETPOS --- > /*#undef HAS_FGETPOS*/ > #if defined(SPEC_CPU2000_GLIBC22) > # define HAS_FGETPOS > #endif 621c639,642 < #undef HAS_FSETPOS --- > /*#undef HAS_FSETPOS*/ > #if defined(SPEC_CPU2000_GLIBC22) > # define HAS_FSETPOS > #endif
In spec_config.h, we used to explicitly #undef everything that is not used. Change this to just not mention the unused features; that way, if a new platform needs to set one, it will be able to do so. Because of the number of changes of this type, the line numbers are omitted from the following output, and it is has been re-sorted by variable name.
< #undef BINCOMPAT3 > /*#undef BINCOMPAT3*/ < #undef CASTI32 > /*#undef CASTI32*/ < #undef CASTNEGFLOAT > /*#undef CASTNEGFLOAT*/ < #undef CSH > /*#undef CSH*/ < #undef DIRNAMLEN > /*#undef DIRNAMLEN*/ < #undef DLSYM_NEEDS_UNDERSCORE > /*#undef DLSYM_NEEDS_UNDERSCORE*/ < #undef GRPASSWD > /*#undef GRPASSWD*/ < #undef HASATTRIBUTE > /*#undef HASATTRIBUTE*/ < #undef HAS_ALARM > /*#undef HAS_ALARM*/ < #undef HAS_BCMP > /*#undef HAS_BCMP*/ < #undef HAS_BCOPY > /*#undef HAS_BCOPY*/ < #undef HAS_BZERO > /*#undef HAS_BZERO*/ < #undef HAS_CHOWN > /*#undef HAS_CHOWN*/ < #undef HAS_CHROOT > /*#undef HAS_CHROOT*/ < #undef HAS_CHSIZE > /*#undef HAS_CHSIZE*/ < #undef HAS_CRYPT > /*#undef HAS_CRYPT*/ < #undef HAS_CUSERID > /*#undef HAS_CUSERID*/ < #undef HAS_DBL_DIG > /*#undef HAS_DBL_DIG*/ < #undef HAS_DIFFTIME > /*#undef HAS_DIFFTIME*/ < #undef HAS_DLERROR > /*#undef HAS_DLERROR*/ < #undef HAS_DUP2 > /*#undef HAS_DUP2*/ < #undef HAS_ENDGRENT > /*#undef HAS_ENDGRENT*/ < #undef HAS_ENDHOSTENT > /*#undef HAS_ENDHOSTENT*/ < #undef HAS_ENDNETENT > /*#undef HAS_ENDNETENT*/ < #undef HAS_ENDPROTOENT > /*#undef HAS_ENDPROTOENT*/ < #undef HAS_ENDPWENT > /*#undef HAS_ENDPWENT*/ < #undef HAS_ENDSERVENT > /*#undef HAS_ENDSERVENT*/ < #undef HAS_FCHMOD > /*#undef HAS_FCHMOD*/ < #undef HAS_FCHOWN > /*#undef HAS_FCHOWN*/ < #undef HAS_FLOCK > /*#undef HAS_FLOCK*/ < #undef HAS_FPATHCONF > /*#undef HAS_FPATHCONF */ < #undef HAS_FSTATFS > /*#undef HAS_FSTATFS*/ < #undef HAS_FSTATVFS > /*#undef HAS_FSTATVFS*/ < #undef HAS_GETGRENT > /*#undef HAS_GETGRENT*/ < #undef HAS_GETGROUPS > /*#undef HAS_GETGROUPS*/ < #undef HAS_GETHOSTBYADDR > /*#undef HAS_GETHOSTBYADDR*/ < #undef HAS_GETHOSTBYNAME > /*#undef HAS_GETHOSTBYNAME*/ < #undef HAS_GETHOSTENT > /*#undef HAS_GETHOSTENT*/ < #undef HAS_GETHOST_PROTOS > /*#undef HAS_GETHOST_PROTOS*/ < #undef HAS_GETLOGIN > /*#undef HAS_GETLOGIN*/ < #undef HAS_GETMNTENT > /*#undef HAS_GETMNTENT*/ < #undef HAS_GETNETBYADDR > /*#undef HAS_GETNETBYADDR*/ < #undef HAS_GETNETBYNAME > /*#undef HAS_GETNETBYNAME*/ < #undef HAS_GETNETENT > /*#undef HAS_GETNETENT*/ < #undef HAS_GETNET_PROTOS > /*#undef HAS_GETNET_PROTOS*/ < #undef HAS_GETPGID > /*#undef HAS_GETPGID*/ < #undef HAS_GETPGRP > /*#undef HAS_GETPGRP*/ < #undef HAS_GETPGRP2 > /*#undef HAS_GETPGRP2*/ < #undef HAS_GETPPID > /*#undef HAS_GETPPID*/ < #undef HAS_GETPRIORITY > /*#undef HAS_GETPRIORITY*/ < #undef HAS_GETPROTOBYNAME > /*#undef HAS_GETPROTOBYNAME*/ < #undef HAS_GETPROTOBYNUMBER > /*#undef HAS_GETPROTOBYNUMBER*/ < #undef HAS_GETPROTOENT > /*#undef HAS_GETPROTOENT*/ < #undef HAS_GETPROTO_PROTOS > /*#undef HAS_GETPROTO_PROTOS*/ < #undef HAS_GETPWENT > /*#undef HAS_GETPWENT*/ < #undef HAS_GETSERVBYNAME > /*#undef HAS_GETSERVBYNAME*/ < #undef HAS_GETSERVBYPORT > /*#undef HAS_GETSERVBYPORT*/ < #undef HAS_GETSERVENT > /*#undef HAS_GETSERVENT*/ < #undef HAS_GETSERV_PROTOS > /*#undef HAS_GETSERV_PROTOS*/ < #undef HAS_GETTIMEOFDAY > /*#undef HAS_GETTIMEOFDAY*/ < #undef HAS_GNULIBC > /*#undef HAS_GNULIBC*/ < #undef HAS_HASMNTOPT > /*#undef HAS_HASMNTOPT*/ < #undef HAS_HTONL > /*#undef HAS_HTONL*/ < #undef HAS_HTONS > /*#undef HAS_HTONS*/ < #undef HAS_INDEX > /*#undef HAS_INDEX*/ < #undef HAS_INET_ATON > /*#undef HAS_INET_ATON*/ < #undef HAS_KILLPG > /*#undef HAS_KILLPG*/ < #undef HAS_LCHOWN > /*#undef HAS_LCHOWN*/ < #undef HAS_LINK > /*#undef HAS_LINK*/ < #undef HAS_LOCALECONV > /*#undef HAS_LOCALECONV*/ < #undef HAS_LOCKF > /*#undef HAS_LOCKF*/ < #undef HAS_LONG_DOUBLE > /*#undef HAS_LONG_DOUBLE*/ < #undef HAS_LSTAT > /*#undef HAS_LSTAT*/ < #undef HAS_MBLEN > /*#undef HAS_MBLEN*/ < #undef HAS_MBSTOWCS > /*#undef HAS_MBSTOWCS*/ < #undef HAS_MBTOWC > /*#undef HAS_MBTOWC*/ < #undef HAS_MEMCMP > /*#undef HAS_MEMCMP*/ < #undef HAS_MEMCPY > /*#undef HAS_MEMCPY*/ < #undef HAS_MEMMOVE > /*#undef HAS_MEMMOVE*/ < #undef HAS_MKFIFO > /*#undef HAS_MKFIFO*/ < #undef HAS_MKTIME > /*#undef HAS_MKTIME*/ < #undef HAS_MSG > /*#undef HAS_MSG*/ < #undef HAS_NICE > /*#undef HAS_NICE*/ < #undef HAS_NTOHL > /*#undef HAS_NTOHL */ < #undef HAS_NTOHS > /*#undef HAS_NTOHS */ < #undef HAS_OPEN3 > /*#undef HAS_OPEN3*/ < #undef HAS_PATHCONF > /*#undef HAS_PATHCONF*/ < #undef HAS_PAUSE > /*#undef HAS_PAUSE*/ < #undef HAS_POLL > /*#undef HAS_POLL*/ < #undef HAS_PTHREAD_YIELD > /*#undef HAS_PTHREAD_YIELD*/ < #undef HAS_READDIR > /*#undef HAS_READDIR*/ < #undef HAS_READLINK > /*#undef HAS_READLINK*/ < #undef HAS_REWINDDIR > /*#undef HAS_REWINDDIR*/ < #undef HAS_SAFE_BCOPY > /*#undef HAS_SAFE_BCOPY*/ < #undef HAS_SAFE_MEMCPY > /*#undef HAS_SAFE_MEMCPY*/ < #undef HAS_SANE_MEMCMP > /*#undef HAS_SANE_MEMCMP*/ < #undef HAS_SCHED_YIELD > /*#undef HAS_SCHED_YIELD*/ < #undef HAS_SEEKDIR > /*#undef HAS_SEEKDIR*/ < #undef HAS_SEM > /*#undef HAS_SEM*/ < #undef HAS_SETEGID > /*#undef HAS_SETEGID*/ < #undef HAS_SETEUID > /*#undef HAS_SETEUID*/ < #undef HAS_SETGRENT > /*#undef HAS_SETGRENT*/ < #undef HAS_SETGROUPS > /*#undef HAS_SETGROUPS*/ < #undef HAS_SETHOSTENT > /*#undef HAS_SETHOSTENT*/ < #undef HAS_SETLINEBUF > /*#undef HAS_SETLINEBUF*/ < #undef HAS_SETLOCALE > /*#undef HAS_SETLOCALE*/ < #undef HAS_SETNETENT > /*#undef HAS_SETNETENT*/ < #undef HAS_SETPGID > /*#undef HAS_SETPGID*/ < #undef HAS_SETPGRP > /*#undef HAS_SETPGRP*/ < #undef HAS_SETPGRP2 > /*#undef HAS_SETPGRP2*/ < #undef HAS_SETPRIORITY > /*#undef HAS_SETPRIORITY*/ < #undef HAS_SETPROTOENT > /*#undef HAS_SETPROTOENT*/ < #undef HAS_SETPWENT > /*#undef HAS_SETPWENT*/ < #undef HAS_SETREGID > /*#undef HAS_SETREGID*/ < #undef HAS_SETRESGID > /*#undef HAS_SETRESGID*/ < #undef HAS_SETRESUID > /*#undef HAS_SETRESUID*/ < #undef HAS_SETREUID > /*#undef HAS_SETREUID*/ < #undef HAS_SETRGID > /*#undef HAS_SETRGID*/ < #undef HAS_SETRUID > /*#undef HAS_SETRUID*/ < #undef HAS_SETSERVENT > /*#undef HAS_SETSERVENT*/ < #undef HAS_SETSID > /*#undef HAS_SETSID*/ < #undef HAS_SETVBUF > /*#undef HAS_SETVBUF*/ < #undef HAS_SHM > /*#undef HAS_SHM*/ < #undef HAS_SHMAT_PROTOTYPE > /*#undef HAS_SHMAT_PROTOTYPE*/ < #undef HAS_SIGACTION > /*#undef HAS_SIGACTION*/ < #undef HAS_SIGSETJMP > /*#undef HAS_SIGSETJMP*/ < #undef HAS_SOCKET > /*#undef HAS_SOCKET*/ < #undef HAS_SOCKETPAIR > /*#undef HAS_SOCKETPAIR*/ < #undef HAS_STRCHR > /*#undef HAS_STRCHR*/ < #undef HAS_STRCOLL > /*#undef HAS_STRCOLL*/ < #undef HAS_STRTOD > /*#undef HAS_STRTOD*/ < #undef HAS_STRTOL > /*#undef HAS_STRTOL*/ < #undef HAS_STRTOUL > /*#undef HAS_STRTOUL*/ < #undef HAS_STRUCT_STATFS_FLAGS > /*#undef HAS_STRUCT_STATFS_FLAGS*/ < #undef HAS_STRXFRM > /*#undef HAS_STRXFRM*/ < #undef HAS_SYMLINK > /*#undef HAS_SYMLINK*/ < #undef HAS_SYSCALL > /*#undef HAS_SYSCALL*/ < #undef HAS_SYSCONF > /*#undef HAS_SYSCONF*/ < #undef HAS_SYSTEM > /*#undef HAS_SYSTEM*/ < #undef HAS_TCGETPGRP > /*#undef HAS_TCGETPGRP*/ < #undef HAS_TCSETPGRP > /*#undef HAS_TCSETPGRP*/ < #undef HAS_TELLDIR > /*#undef HAS_TELLDIR*/ < #undef HAS_TZNAME > /*#undef HAS_TZNAME*/ < #undef HAS_UNAME > /*#undef HAS_UNAME*/ < #undef HAS_UNION_SEMUN > /*#undef HAS_UNION_SEMUN*/ < #undef HAS_VFORK > /*#undef HAS_VFORK*/ < #undef HAS_VPRINTF > /*#undef HAS_VPRINTF*/ < #undef HAS_WAIT4 > /*#undef HAS_WAIT4*/ < #undef HAS_WAITPID > /*#undef HAS_WAITPID*/ < #undef HAS_WCSTOMBS > /*#undef HAS_WCSTOMBS*/ < #undef HAS_WCTOMB > /*#undef HAS_WCTOMB*/ < #undef I_ARPA_INET > /*#undef I_ARPA_INET*/ < #undef I_DBM > /*#undef I_DBM*/ < #undef I_DLFCN > /*#undef I_DLFCN*/ < #undef I_MACH_CTHREADS > /*#undef I_MACH_CTHREADS*/ < #undef I_MEMORY > /*#undef I_MEMORY*/ < #undef I_MNTENT > /*#undef I_MNTENT*/ < #undef I_NDBM > /*#undef I_NDBM*/ < #undef I_NETDB > /*#undef I_NETDB*/ < #undef I_NET_ERRNO > /*#undef I_NET_ERRNO*/ < #undef I_PTHREAD > /*#undef I_PTHREAD*/ < #undef I_RPCSVC_DBM > /*#undef I_RPCSVC_DBM*/ < #undef I_SFIO > /*#undef I_SFIO*/ < #undef I_SGTTY > /*#undef I_SGTTY*/ < #undef I_SYS_DIR > /*#undef I_SYS_DIR*/ < #undef I_SYS_FILE > /*#undef I_SYS_FILE*/ < #undef I_SYS_IOCTL > /*#undef I_SYS_IOCTL*/ < #undef I_SYS_MOUNT > /*#undef I_SYS_MOUNT*/ < #undef I_SYS_NDIR > /*#undef I_SYS_NDIR*/ < #undef I_SYS_PARAM > /*#undef I_SYS_PARAM*/ < #undef I_SYS_RESOURCE > /*#undef I_SYS_RESOURCE*/ < #undef I_SYS_SELECT > /*#undef I_SYS_SELECT*/ < #undef I_SYS_STATVFS < #undef I_SYS_STATVFS > /*#undef I_SYS_STATVFS*/ > /*#undef I_SYS_STATVFS*/ < #undef I_SYS_TIMES > /*#undef I_SYS_TIMES*/ < #undef I_SYS_TIME_KERNEL > /*#undef I_SYS_TIME_KERNEL*/ < #undef I_SYS_UN > /*#undef I_SYS_UN*/ < #undef I_SYS_WAIT > /*#undef I_SYS_WAIT*/ < #undef I_TERMIO > /*#undef I_TERMIO*/ < #undef I_TERMIOS > /*#undef I_TERMIOS*/ < #undef I_UNISTD > /*#undef I_UNISTD*/ < #undef I_VALUES > /*#undef I_VALUES*/ < #undef I_VARARGS > /*#undef I_VARARGS*/ < #undef I_VFORK > /*#undef I_VFORK*/ < #undef LOC_SED > /*#undef LOC_SED*/ < #undef LONG_DOUBLESIZE > /*#undef LONG_DOUBLESIZE*/ < #undef OLD_PTHREADS_API > /*#undef OLD_PTHREADS_API*/ < #undef PTHREADS_CREATED_JOINABLE > /*#undef PTHREADS_CREATED_JOINABLE*/ < #undef PWAGE > /*#undef PWAGE*/ < #undef PWCHANGE > /*#undef PWCHANGE*/ < #undef PWCLASS > /*#undef PWCLASS*/ < #undef PWCOMMENT > /*#undef PWCOMMENT*/ < #undef PWEXPIRE > /*#undef PWEXPIRE*/ < #undef PWGECOS > /*#undef PWGECOS*/ < #undef PWPASSWD > /*#undef PWPASSWD*/ < #undef PWQUOTA > /*#undef PWQUOTA*/ < #undef STDIO_CNT_LVALUE > /*#undef STDIO_CNT_LVALUE*/ < #undef USE_BSDPGRP > /*#undef USE_BSDPGRP*/ < #undef USE_BSD_GETPGRP > /*#undef USE_BSD_GETPGRP*/ < #undef USE_BSD_SETPGRP > /*#undef USE_BSD_SETPGRP*/ < #undef USE_CHAR_VSPRINTF > /*#undef USE_CHAR_VSPRINTF*/ < #undef USE_SEMCTL_SEMID_DS > /*#undef USE_SEMCTL_SEMID_DS*/ < #undef USE_SEMCTL_SEMUN > /*#undef USE_SEMCTL_SEMUN*/ < #undef USE_SFIO > /*#undef USE_SFIO*/ < #undef USE_STAT_BLOCKS < #undef USE_STAT_BLOCKS > /*#undef USE_STAT_BLOCKS*/ > /*#undef USE_STAT_BLOCKS*/ < #undef USE_STDIO_BASE > /*#undef USE_STDIO_BASE*/ < #undef USE_STDIO_PTR > /*#undef USE_STDIO_PTR*/ < #undef USE_THREADS > /*#undef USE_THREADS*/ < #undef VOID_CLOSEDIR > /*#undef VOID_CLOSEDIR*/ < # undef EBCDIC > /*# undef EBCDIC*/
The changes for gap fall into two categories:
Regarding the latter point, it was noted during SPEC's discussions that this benchmark basically needs to be an LP64 benchmark - a true port to P64 would necessitate approximately 4900 lines of changes. Rather than perform that level of surgery, the committee felt that it would be better to simply make the wholesale change of long to __int64.
diff -r v1.1/benchspec/CINT2000/254.gap/version v1.2/benchspec/CINT2000/254.gap/version 1c1 < 100 --- > 109 diff -r v1.1/benchspec/CINT2000/254.gap/src/agcollec.h v1.2/benchspec/CINT2000/254.gap/src/agcollec.h 36a37,39 > #ifdef SPEC_CPU2000_P64 > #define long __int64 > #endif /* SPEC_CPU2000_P64 */ diff -r v1.1/benchspec/CINT2000/254.gap/src/aggroup.h v1.2/benchspec/CINT2000/254.gap/src/aggroup.h 20a21,23 > #ifdef SPEC_CPU2000_P64 > #define long __int64 > #endif /* SPEC_CPU2000_P64 */ diff -r v1.1/benchspec/CINT2000/254.gap/src/blister.c v1.2/benchspec/CINT2000/254.gap/src/blister.c 554c554 < for ( j=start%BIPEB; j<BIPEB && (ptBlist[i]&(1L<<j))==0; j++ ) --- > for ( j=start%BIPEB; j<BIPEB && (ptBlist[i]&((size_t)1<<j))==0; j++ ) 560c560,561 < for ( j=0; j<BIPEB && (ptBlist[i]&(1L<<j))==0; j++ ) --- > for ( j=0; j<BIPEB && (ptBlist[i]&((size_t)1<<j))==0; j++ ) > 571c572 < for ( j=start%BIPEB; j<BIPEB && (~ptBlist[i]&(1L<<j))==0; j++ ) --- > for ( j=start%BIPEB; j<BIPEB && (~ptBlist[i]&((size_t)1<<j))==0; j++ ) 577c578 < for ( j=0; j<BIPEB && (~ptBlist[i]&(1L<<j))==0; j++ ) --- > for ( j=0; j<BIPEB && (~ptBlist[i]&((size_t)1<<j))==0; j++ ) 848c849 < ptBlist[(k-1)/BIPEB] |= (1L << (k-1)%BIPEB); --- > ptBlist[(k-1)/BIPEB] |= ((size_t)1 << (k-1)%BIPEB); 852c853 < ptBlist[(k-1)/BIPEB] |= (1L << (k-1)%BIPEB); --- > ptBlist[(k-1)/BIPEB] |= ((size_t)1 << (k-1)%BIPEB); 877c878 < ptBlist[(t-1)/BIPEB] |= (1L << (t-1)%BIPEB); --- > ptBlist[(t-1)/BIPEB] |= ((size_t)1 << (t-1)%BIPEB); 884c885 < ptBlist[(k-1)/BIPEB] |= (1L << (k-1)%BIPEB); --- > ptBlist[(k-1)/BIPEB] |= ((size_t)1 << (k-1)%BIPEB); 927c928 < |= (1L << (k-1)%BIPEB); --- > |= ((size_t)1 << (k-1)%BIPEB); diff -r v1.1/benchspec/CINT2000/254.gap/src/blister.h v1.2/benchspec/CINT2000/254.gap/src/blister.h 57a58,60 > #ifdef SPEC_CPU2000_P64 > #define long __int64 > #endif /* SPEC_CPU2000_P64 */ 134a138 > 136c140 < (((unsigned long*)(PTR(LIST)+1))[((POS)-1)/ BIPEB]&(1L<<((POS)-1)%BIPEB) ? \ --- > (((unsigned long*)(PTR(LIST)+1))[((POS)-1)/ BIPEB]&((size_t)1<<((POS)-1)%BIPEB) ? \ 151a156 > 154,155c159,160 < (((unsigned long*)(PTR(LIST)+1))[((POS)-1)/ BIPEB]|=(1L<<((POS)-1)%BIPEB)):\ < (((unsigned long*)(PTR(LIST)+1))[((POS)-1)/ BIPEB]&=~(1L<<((POS)-1)%BIPEB))) --- > (((unsigned long*)(PTR(LIST)+1))[((POS)-1)/ BIPEB]|=((size_t)1<<((POS)-1)%BIPEB)):\ > (((unsigned long*)(PTR(LIST)+1))[((POS)-1)/ BIPEB]&=~((size_t)1<<((POS)-1)%BIPEB))) diff -r v1.1/benchspec/CINT2000/254.gap/src/coding.h v1.2/benchspec/CINT2000/254.gap/src/coding.h 13a14,16 > #ifdef SPEC_CPU2000_P64 > #define long __int64 > #endif /* SPEC_CPU2000_P64 */ diff -r v1.1/benchspec/CINT2000/254.gap/src/costab.h v1.2/benchspec/CINT2000/254.gap/src/costab.h 25a26,28 > #ifdef SPEC_CPU2000_P64 > #define long __int64 > #endif /* SPEC_CPU2000_P64 */ diff -r v1.1/benchspec/CINT2000/254.gap/src/eval.h v1.2/benchspec/CINT2000/254.gap/src/eval.h 21a22,24 > #ifdef SPEC_CPU2000_P64 > #define long __int64 > #endif /* SPEC_CPU2000_P64 */ diff -r v1.1/benchspec/CINT2000/254.gap/src/finfield.h v1.2/benchspec/CINT2000/254.gap/src/finfield.h 33a34,36 > #ifdef SPEC_CPU2000_P64 > #define long __int64 > #endif /* SPEC_CPU2000_P64 */ diff -r v1.1/benchspec/CINT2000/254.gap/src/gasman.c v1.2/benchspec/CINT2000/254.gap/src/gasman.c 775c775 < #ifdef SPEC_CPU2000_LP64 --- > #if defined(SPEC_CPU2000_LP64) || defined(SPEC_CPU2000_P64) 785c785 < #ifdef SPEC_CPU2000_LP64 --- > #if defined(SPEC_CPU2000_LP64) || defined(SPEC_CPU2000_P64) 801c801 < #ifdef SPEC_CPU2000_LP64 --- > #if defined(SPEC_CPU2000_LP64) || defined(SPEC_CPU2000_P64) 820c820 < #ifdef SPEC_CPU2000_LP64 --- > #if defined(SPEC_CPU2000_LP64) || defined(SPEC_CPU2000_P64) 1094c1094 < #ifdef SPEC_CPU2000_LP64 --- > #if defined(SPEC_CPU2000_LP64) || defined(SPEC_CPU2000_P64) 1117c1117 < #ifdef SPEC_CPU2000_LP64 --- > #if defined(SPEC_CPU2000_LP64) || defined(SPEC_CPU2000_P64) 1151c1151 < #ifdef SPEC_CPU2000_LP64 --- > #if defined(SPEC_CPU2000_LP64) || defined(SPEC_CPU2000_P64) diff -r v1.1/benchspec/CINT2000/254.gap/src/gasman.h v1.2/benchspec/CINT2000/254.gap/src/gasman.h 87a88,90 > #ifdef SPEC_CPU2000_P64 > #define long __int64 > #endif /* SPEC_CPU2000_P64 */ diff -r v1.1/benchspec/CINT2000/254.gap/src/idents.h v1.2/benchspec/CINT2000/254.gap/src/idents.h 18a19,21 > #ifdef SPEC_CPU2000_P64 > #define long __int64 > #endif /* SPEC_CPU2000_P64 */ diff -r v1.1/benchspec/CINT2000/254.gap/src/list.h v1.2/benchspec/CINT2000/254.gap/src/list.h 50a51,53 > #ifdef SPEC_CPU2000_P64 > #define long __int64 > #endif /* SPEC_CPU2000_P64 */ diff -r v1.1/benchspec/CINT2000/254.gap/src/plist.h v1.2/benchspec/CINT2000/254.gap/src/plist.h 57a58,60 > #ifdef SPEC_CPU2000_P64 > #define long __int64 > #endif /* SPEC_CPU2000_P64 */ diff -r v1.1/benchspec/CINT2000/254.gap/src/polynom.h v1.2/benchspec/CINT2000/254.gap/src/polynom.h 22a23,25 > #ifdef SPEC_CPU2000_P64 > #define long __int64 > #endif /* SPEC_CPU2000_P64 */ diff -r v1.1/benchspec/CINT2000/254.gap/src/range.h v1.2/benchspec/CINT2000/254.gap/src/range.h 47a48,50 > #ifdef SPEC_CPU2000_P64 > #define long __int64 > #endif /* SPEC_CPU2000_P64 */ diff -r v1.1/benchspec/CINT2000/254.gap/src/record.h v1.2/benchspec/CINT2000/254.gap/src/record.h 33a34,36 > #ifdef SPEC_CPU2000_P64 > #define long __int64 > #endif /* SPEC_CPU2000_P64 */ diff -r v1.1/benchspec/CINT2000/254.gap/src/scanner.h v1.2/benchspec/CINT2000/254.gap/src/scanner.h 40a41,43 > #ifdef SPEC_CPU2000_P64 > #define long __int64 > #endif /* SPEC_CPU2000_P64 */ diff -r v1.1/benchspec/CINT2000/254.gap/src/set.h v1.2/benchspec/CINT2000/254.gap/src/set.h 74a75,77 > #ifdef SPEC_CPU2000_P64 > #define long __int64 > #endif /* SPEC_CPU2000_P64 */ diff -r v1.1/benchspec/CINT2000/254.gap/src/string.c v1.2/benchspec/CINT2000/254.gap/src/string.c 758c758 < HdChars[i] = NewBag( T_CHAR, 1L ); --- > HdChars[i] = NewBag( T_CHAR, (size_t)1 ); diff -r v1.1/benchspec/CINT2000/254.gap/src/string.h v1.2/benchspec/CINT2000/254.gap/src/string.h 42a43,45 > #ifdef SPEC_CPU2000_P64 > #define long __int64 > #endif /* SPEC_CPU2000_P64 */ diff -r v1.1/benchspec/CINT2000/254.gap/src/system.c v1.2/benchspec/CINT2000/254.gap/src/system.c 2913c2913 < return 1L; --- > return (size_t)1; 4638c4638 < #ifdef SPEC_CPU2000_LP64 --- > #if defined(SPEC_CPU2000_LP64) || defined(SPEC_CPU2000_P64) 4659c4659 < #ifdef SPEC_CPU2000_LP64 --- > #if defined(SPEC_CPU2000_LP64) || defined(SPEC_CPU2000_P64) 4696c4696 < #ifdef SPEC_CPU2000_LP64 --- > #if defined(SPEC_CPU2000_LP64) || defined(SPEC_CPU2000_P64) diff -r v1.1/benchspec/CINT2000/254.gap/src/system.h v1.2/benchspec/CINT2000/254.gap/src/system.h 57a58,60 > #ifdef SPEC_CPU2000_P64 > #define long __int64 > #endif /* SPEC_CPU2000_P64 */ diff -r v1.1/benchspec/CINT2000/254.gap/src/vecffe.c v1.2/benchspec/CINT2000/254.gap/src/vecffe.c 2626c2626,2627 < k = 1L << 31; --- > k = (size_t)1 << 31; > 2642c2643 < k = 1L << (8*sizeof(TypDigit)); --- > k = (size_t)1 << (8*sizeof(TypDigit)); diff -r v1.1/benchspec/CINT2000/254.gap/src/vecffe.h v1.2/benchspec/CINT2000/254.gap/src/vecffe.h 46a47,49 > #ifdef SPEC_CPU2000_P64 > #define long __int64 > #endif /* SPEC_CPU2000_P64 */ diff -r v1.1/benchspec/CINT2000/254.gap/src/vector.c v1.2/benchspec/CINT2000/254.gap/src/vector.c 1579c1579 < k = 1L << 31; --- > k = (size_t)1 << 31; 1595c1595 < k = 1L << (8*sizeof(TypDigit)); --- > k = (size_t)1 << (8*sizeof(TypDigit)); diff -r v1.1/benchspec/CINT2000/254.gap/src/vector.h v1.2/benchspec/CINT2000/254.gap/src/vector.h 63a64,66 > #ifdef SPEC_CPU2000_P64 > #define long __int64 > #endif /* SPEC_CPU2000_P64 */ diff -r v1.1/benchspec/CINT2000/254.gap/src/word.h v1.2/benchspec/CINT2000/254.gap/src/word.h 23a24,26 > #ifdef SPEC_CPU2000_P64 > #define long __int64 > #endif /* SPEC_CPU2000_P64 */
The changes for vortex are:
diff -r v1.1/benchspec/CINT2000/255.vortex/version v1.2/benchspec/CINT2000/255.vortex/version 1c1 < 106 --- > 109 diff -r v1.1/benchspec/CINT2000/255.vortex/src/bmt.c v1.2/benchspec/CINT2000/255.vortex/src/bmt.c 133c133 < #ifndef SPEC_CPU2000_LP64 --- > #if !defined(SPEC_CPU2000_LP64) && !defined(SPEC_CPU2000_P64) 146c146 < #endif /* SPEC_CPU2000_LP64 */ --- > #endif /* SPEC_CPU2000_LP64 and SPEC_CPU2000_P64*/ 351c351 < #ifndef SPEC_CPU2000_LP64 --- > #if !defined(SPEC_CPU2000_LP64) && !defined(SPEC_CPU2000_P64) 354c354 < #endif /* SPEC_CPU2000_LP */ --- > #endif /* SPEC_CPU2000_P64 and SPEC_CPU2000_LP64 */ diff -r v1.1/benchspec/CINT2000/255.vortex/src/defines.h v1.2/benchspec/CINT2000/255.vortex/src/defines.h 178c178 < #ifdef SPEC_CPU2000_LP64 /* a long is 8 bytes */ --- > #if defined(SPEC_CPU2000_LP64) || defined(SPEC_CPU2000_P64) /* a long is 8 bytes */ diff -r v1.1/benchspec/CINT2000/255.vortex/src/domain.c v1.2/benchspec/CINT2000/255.vortex/src/domain.c 35c35 < extern boolean Mem_AssignXmemFile --- > extern void Mem_AssignXmemFile 200a201,206 > #ifdef SPEC_CPU2000_P64 > sprintf (Msg, " SPEC_CPU2000_P64 := True \n"); > #else > sprintf (Msg, " SPEC_CPU2000_P64 := False \n"); > #endif > TraceMsg (0, Msg); 714c720 < #ifdef SPEC_CPU2000_LP64 --- > #if defined(SPEC_CPU2000_LP64) || defined(SPEC_CPU2000_P64) 718c724 < #endif /* SPEC_CPU2000_LP64 */ --- > #endif /* SPEC_CPU2000_LP64 and SPEC_CPU2000_P64*/ 719a726 > diff -r v1.1/benchspec/CINT2000/255.vortex/src/grp.h v1.2/benchspec/CINT2000/255.vortex/src/grp.h 102c102 < #ifndef SPEC_CPU2000_LP64 --- > #if !defined(SPEC_CPU2000_LP64) && !defined(SPEC_CPU2000_P64) 115c115 < #endif /* SPEC_CPU2000_LP64 */ --- > #endif /* SPEC_CPU2000_P64 and SPEC_CPU2000_LP64 */ diff -r v1.1/benchspec/CINT2000/255.vortex/src/hm.h v1.2/benchspec/CINT2000/255.vortex/src/hm.h 173c173 < #ifndef SPEC_CPU2000_LP64 --- > #if !defined(SPEC_CPU2000_LP64) && !defined(SPEC_CPU2000_P64) 186c186 < #endif /* SPEC_CPU2000_LP64 */ --- > #endif /* SPEC_CPU2000_P64 and SPEC_CPU2000_LP64*/ 355c355 < #ifndef SPEC_CPU2000_LP64 --- > #if !defined(SPEC_CPU2000_LP64) && !defined(SPEC_CPU2000_P64) 359c359 < #endif /* SPEC_CPU2000_LP64 */ --- > #endif /* SPEC_CPU2000_P64 and SPEC_CPU2000_LP64 */ diff -r v1.1/benchspec/CINT2000/255.vortex/src/list01.c v1.2/benchspec/CINT2000/255.vortex/src/list01.c 48c48 < extern numtype Env_GetClassId (char *ClassName, --- > extern boolean Env_GetClassId (char *ClassName, diff -r v1.1/benchspec/CINT2000/255.vortex/src/odbm.h v1.2/benchspec/CINT2000/255.vortex/src/odbm.h 112c112 < #ifndef SPEC_CPU2000_LP64 --- > #if !defined(SPEC_CPU2000_LP64) && !defined(SPEC_CPU2000_P64) 125c125 < #endif /* SPEC_CPU2000_LP64 */ --- > #endif /* SPEC_CPU2000_P64 and SPEC_CPU2000_LP64 */ diff -r v1.1/benchspec/CINT2000/255.vortex/src/typedefs.h v1.2/benchspec/CINT2000/255.vortex/src/typedefs.h 23c23 < #ifdef SPEC_CPU2000_LP64 --- > #if defined(SPEC_CPU2000_LP64) || defined(SPEC_CPU2000_P64) 31c31 < typedef unsigned long longaddr; --- > typedef size_t longaddr;
Copyright (C) 1999-2001 Standard Performance Evaluation Corporation. All Rights Reserved