1*d1389403SSimon Glass /* 2*d1389403SSimon Glass * (C) Copyright 2015 Google, Inc 3*d1389403SSimon Glass * 4*d1389403SSimon Glass * SPDX-License-Identifier: GPL-2.0+ 5*d1389403SSimon Glass * 6*d1389403SSimon Glass * Dhrystone is widely available in the public domain. A GPL license is 7*d1389403SSimon Glass * chosen for U-Boot. 8*d1389403SSimon Glass */ 9*d1389403SSimon Glass 10*d1389403SSimon Glass /***************************************************************************** 11*d1389403SSimon Glass * The BYTE UNIX Benchmarks - Release 3 12*d1389403SSimon Glass * Module: dhry.h SID: 3.4 5/15/91 19:30:21 13*d1389403SSimon Glass * 14*d1389403SSimon Glass ***************************************************************************** 15*d1389403SSimon Glass * Bug reports, patches, comments, suggestions should be sent to: 16*d1389403SSimon Glass * 17*d1389403SSimon Glass * Ben Smith, Rick Grehan or Tom Yager 18*d1389403SSimon Glass * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com 19*d1389403SSimon Glass * 20*d1389403SSimon Glass ***************************************************************************** 21*d1389403SSimon Glass * Modification Log: 22*d1389403SSimon Glass * addapted from: 23*d1389403SSimon Glass * 24*d1389403SSimon Glass * 25*d1389403SSimon Glass * "DHRYSTONE" Benchmark Program 26*d1389403SSimon Glass * ----------------------------- 27*d1389403SSimon Glass * 28*d1389403SSimon Glass * Version: C, Version 2.1 29*d1389403SSimon Glass * 30*d1389403SSimon Glass * File: dhry.h (part 1 of 3) 31*d1389403SSimon Glass * 32*d1389403SSimon Glass * Date: May 25, 1988 33*d1389403SSimon Glass * 34*d1389403SSimon Glass * Author: Reinhold P. Weicker 35*d1389403SSimon Glass * Siemens AG, AUT E 51 36*d1389403SSimon Glass * Postfach 3220 37*d1389403SSimon Glass * 8520 Erlangen 38*d1389403SSimon Glass * Germany (West) 39*d1389403SSimon Glass * Phone: [+49]-9131-7-20330 40*d1389403SSimon Glass * (8-17 Central European Time) 41*d1389403SSimon Glass * Usenet: ..!mcvax!unido!estevax!weicker 42*d1389403SSimon Glass * 43*d1389403SSimon Glass * Original Version (in Ada) published in 44*d1389403SSimon Glass * "Communications of the ACM" vol. 27., no. 10 (Oct. 1984), 45*d1389403SSimon Glass * pp. 1013 - 1030, together with the statistics 46*d1389403SSimon Glass * on which the distribution of statements etc. is based. 47*d1389403SSimon Glass * 48*d1389403SSimon Glass * In this C version, the following C library functions are used: 49*d1389403SSimon Glass * - strcpy, strcmp (inside the measurement loop) 50*d1389403SSimon Glass * - printf, scanf (outside the measurement loop) 51*d1389403SSimon Glass * In addition, Berkeley UNIX system calls "times ()" or "time ()" 52*d1389403SSimon Glass * are used for execution time measurement. For measurements 53*d1389403SSimon Glass * on other systems, these calls have to be changed. 54*d1389403SSimon Glass * 55*d1389403SSimon Glass * Collection of Results: 56*d1389403SSimon Glass * Reinhold Weicker (address see above) and 57*d1389403SSimon Glass * 58*d1389403SSimon Glass * Rick Richardson 59*d1389403SSimon Glass * PC Research. Inc. 60*d1389403SSimon Glass * 94 Apple Orchard Drive 61*d1389403SSimon Glass * Tinton Falls, NJ 07724 62*d1389403SSimon Glass * Phone: (201) 834-1378 (9-17 EST) 63*d1389403SSimon Glass * Usenet: ...!seismo!uunet!pcrat!rick 64*d1389403SSimon Glass * 65*d1389403SSimon Glass * Please send results to Rick Richardson and/or Reinhold Weicker. 66*d1389403SSimon Glass * Complete information should be given on hardware and software used. 67*d1389403SSimon Glass * Hardware information includes: Machine type, CPU, type and size 68*d1389403SSimon Glass * of caches; for microprocessors: clock frequency, memory speed 69*d1389403SSimon Glass * (number of wait states). 70*d1389403SSimon Glass * Software information includes: Compiler (and runtime library) 71*d1389403SSimon Glass * manufacturer and version, compilation switches, OS version. 72*d1389403SSimon Glass * The Operating System version may give an indication about the 73*d1389403SSimon Glass * compiler; Dhrystone itself performs no OS calls in the measurement loop. 74*d1389403SSimon Glass * 75*d1389403SSimon Glass * The complete output generated by the program should be mailed 76*d1389403SSimon Glass * such that at least some checks for correctness can be made. 77*d1389403SSimon Glass * 78*d1389403SSimon Glass *************************************************************************** 79*d1389403SSimon Glass * 80*d1389403SSimon Glass * History: This version C/2.1 has been made for two reasons: 81*d1389403SSimon Glass * 82*d1389403SSimon Glass * 1) There is an obvious need for a common C version of 83*d1389403SSimon Glass * Dhrystone, since C is at present the most popular system 84*d1389403SSimon Glass * programming language for the class of processors 85*d1389403SSimon Glass * (microcomputers, minicomputers) where Dhrystone is used most. 86*d1389403SSimon Glass * There should be, as far as possible, only one C version of 87*d1389403SSimon Glass * Dhrystone such that results can be compared without 88*d1389403SSimon Glass * restrictions. In the past, the C versions distributed 89*d1389403SSimon Glass * by Rick Richardson (Version 1.1) and by Reinhold Weicker 90*d1389403SSimon Glass * had small (though not significant) differences. 91*d1389403SSimon Glass * 92*d1389403SSimon Glass * 2) As far as it is possible without changes to the Dhrystone 93*d1389403SSimon Glass * statistics, optimizing compilers should be prevented from 94*d1389403SSimon Glass * removing significant statements. 95*d1389403SSimon Glass * 96*d1389403SSimon Glass * This C version has been developed in cooperation with 97*d1389403SSimon Glass * Rick Richardson (Tinton Falls, NJ), it incorporates many 98*d1389403SSimon Glass * ideas from the "Version 1.1" distributed previously by 99*d1389403SSimon Glass * him over the UNIX network Usenet. 100*d1389403SSimon Glass * I also thank Chaim Benedelac (National Semiconductor), 101*d1389403SSimon Glass * David Ditzel (SUN), Earl Killian and John Mashey (MIPS), 102*d1389403SSimon Glass * Alan Smith and Rafael Saavedra-Barrera (UC at Berkeley) 103*d1389403SSimon Glass * for their help with comments on earlier versions of the 104*d1389403SSimon Glass * benchmark. 105*d1389403SSimon Glass * 106*d1389403SSimon Glass * Changes: In the initialization part, this version follows mostly 107*d1389403SSimon Glass * Rick Richardson's version distributed via Usenet, not the 108*d1389403SSimon Glass * version distributed earlier via floppy disk by Reinhold Weicker. 109*d1389403SSimon Glass * As a concession to older compilers, names have been made 110*d1389403SSimon Glass * unique within the first 8 characters. 111*d1389403SSimon Glass * Inside the measurement loop, this version follows the 112*d1389403SSimon Glass * version previously distributed by Reinhold Weicker. 113*d1389403SSimon Glass * 114*d1389403SSimon Glass * At several places in the benchmark, code has been added, 115*d1389403SSimon Glass * but within the measurement loop only in branches that 116*d1389403SSimon Glass * are not executed. The intention is that optimizing compilers 117*d1389403SSimon Glass * should be prevented from moving code out of the measurement 118*d1389403SSimon Glass * loop, or from removing code altogether. Since the statements 119*d1389403SSimon Glass * that are executed within the measurement loop have NOT been 120*d1389403SSimon Glass * changed, the numbers defining the "Dhrystone distribution" 121*d1389403SSimon Glass * (distribution of statements, operand types and locality) 122*d1389403SSimon Glass * still hold. Except for sophisticated optimizing compilers, 123*d1389403SSimon Glass * execution times for this version should be the same as 124*d1389403SSimon Glass * for previous versions. 125*d1389403SSimon Glass * 126*d1389403SSimon Glass * Since it has proven difficult to subtract the time for the 127*d1389403SSimon Glass * measurement loop overhead in a correct way, the loop check 128*d1389403SSimon Glass * has been made a part of the benchmark. This does have 129*d1389403SSimon Glass * an impact - though a very minor one - on the distribution 130*d1389403SSimon Glass * statistics which have been updated for this version. 131*d1389403SSimon Glass * 132*d1389403SSimon Glass * All changes within the measurement loop are described 133*d1389403SSimon Glass * and discussed in the companion paper "Rationale for 134*d1389403SSimon Glass * Dhrystone version 2". 135*d1389403SSimon Glass * 136*d1389403SSimon Glass * Because of the self-imposed limitation that the order and 137*d1389403SSimon Glass * distribution of the executed statements should not be 138*d1389403SSimon Glass * changed, there are still cases where optimizing compilers 139*d1389403SSimon Glass * may not generate code for some statements. To a certain 140*d1389403SSimon Glass * degree, this is unavoidable for small synthetic benchmarks. 141*d1389403SSimon Glass * Users of the benchmark are advised to check code listings 142*d1389403SSimon Glass * whether code is generated for all statements of Dhrystone. 143*d1389403SSimon Glass * 144*d1389403SSimon Glass * Version 2.1 is identical to version 2.0 distributed via 145*d1389403SSimon Glass * the UNIX network Usenet in March 1988 except that it corrects 146*d1389403SSimon Glass * some minor deficiencies that were found by users of version 2.0. 147*d1389403SSimon Glass * The only change within the measurement loop is that a 148*d1389403SSimon Glass * non-executed "else" part was added to the "if" statement in 149*d1389403SSimon Glass * Func_3, and a non-executed "else" part removed from Proc_3. 150*d1389403SSimon Glass * 151*d1389403SSimon Glass *************************************************************************** 152*d1389403SSimon Glass * 153*d1389403SSimon Glass * Defines: The following "Defines" are possible: 154*d1389403SSimon Glass * -DREG=register (default: Not defined) 155*d1389403SSimon Glass * As an approximation to what an average C programmer 156*d1389403SSimon Glass * might do, the "register" storage class is applied 157*d1389403SSimon Glass * (if enabled by -DREG=register) 158*d1389403SSimon Glass * - for local variables, if they are used (dynamically) 159*d1389403SSimon Glass * five or more times 160*d1389403SSimon Glass * - for parameters if they are used (dynamically) 161*d1389403SSimon Glass * six or more times 162*d1389403SSimon Glass * Note that an optimal "register" strategy is 163*d1389403SSimon Glass * compiler-dependent, and that "register" declarations 164*d1389403SSimon Glass * do not necessarily lead to faster execution. 165*d1389403SSimon Glass * -DNOSTRUCTASSIGN (default: Not defined) 166*d1389403SSimon Glass * Define if the C compiler does not support 167*d1389403SSimon Glass * assignment of structures. 168*d1389403SSimon Glass * -DNOENUMS (default: Not defined) 169*d1389403SSimon Glass * Define if the C compiler does not support 170*d1389403SSimon Glass * enumeration types. 171*d1389403SSimon Glass * -DTIMES (default) 172*d1389403SSimon Glass * -DTIME 173*d1389403SSimon Glass * The "times" function of UNIX (returning process times) 174*d1389403SSimon Glass * or the "time" function (returning wallclock time) 175*d1389403SSimon Glass * is used for measurement. 176*d1389403SSimon Glass * For single user machines, "time ()" is adequate. For 177*d1389403SSimon Glass * multi-user machines where you cannot get single-user 178*d1389403SSimon Glass * access, use the "times ()" function. If you have 179*d1389403SSimon Glass * neither, use a stopwatch in the dead of night. 180*d1389403SSimon Glass * "printf"s are provided marking the points "Start Timer" 181*d1389403SSimon Glass * and "Stop Timer". DO NOT use the UNIX "time(1)" 182*d1389403SSimon Glass * command, as this will measure the total time to 183*d1389403SSimon Glass * run this program, which will (erroneously) include 184*d1389403SSimon Glass * the time to allocate storage (malloc) and to perform 185*d1389403SSimon Glass * the initialization. 186*d1389403SSimon Glass * -DHZ=nnn 187*d1389403SSimon Glass * In Berkeley UNIX, the function "times" returns process 188*d1389403SSimon Glass * time in 1/HZ seconds, with HZ = 60 for most systems. 189*d1389403SSimon Glass * CHECK YOUR SYSTEM DESCRIPTION BEFORE YOU JUST APPLY 190*d1389403SSimon Glass * A VALUE. 191*d1389403SSimon Glass * 192*d1389403SSimon Glass *************************************************************************** 193*d1389403SSimon Glass * 194*d1389403SSimon Glass * Compilation model and measurement (IMPORTANT): 195*d1389403SSimon Glass * 196*d1389403SSimon Glass * This C version of Dhrystone consists of three files: 197*d1389403SSimon Glass * - dhry.h (this file, containing global definitions and comments) 198*d1389403SSimon Glass * - dhry_1.c (containing the code corresponding to Ada package Pack_1) 199*d1389403SSimon Glass * - dhry_2.c (containing the code corresponding to Ada package Pack_2) 200*d1389403SSimon Glass * 201*d1389403SSimon Glass * The following "ground rules" apply for measurements: 202*d1389403SSimon Glass * - Separate compilation 203*d1389403SSimon Glass * - No procedure merging 204*d1389403SSimon Glass * - Otherwise, compiler optimizations are allowed but should be indicated 205*d1389403SSimon Glass * - Default results are those without register declarations 206*d1389403SSimon Glass * See the companion paper "Rationale for Dhrystone Version 2" for a more 207*d1389403SSimon Glass * detailed discussion of these ground rules. 208*d1389403SSimon Glass * 209*d1389403SSimon Glass * For 16-Bit processors (e.g. 80186, 80286), times for all compilation 210*d1389403SSimon Glass * models ("small", "medium", "large" etc.) should be given if possible, 211*d1389403SSimon Glass * together with a definition of these models for the compiler system used. 212*d1389403SSimon Glass * 213*d1389403SSimon Glass ************************************************************************** 214*d1389403SSimon Glass * 215*d1389403SSimon Glass * Dhrystone (C version) statistics: 216*d1389403SSimon Glass * 217*d1389403SSimon Glass * [Comment from the first distribution, updated for version 2. 218*d1389403SSimon Glass * Note that because of language differences, the numbers are slightly 219*d1389403SSimon Glass * different from the Ada version.] 220*d1389403SSimon Glass * 221*d1389403SSimon Glass * The following program contains statements of a high level programming 222*d1389403SSimon Glass * language (here: C) in a distribution considered representative: 223*d1389403SSimon Glass * 224*d1389403SSimon Glass * assignments 52 (51.0 %) 225*d1389403SSimon Glass * control statements 33 (32.4 %) 226*d1389403SSimon Glass * procedure, function calls 17 (16.7 %) 227*d1389403SSimon Glass * 228*d1389403SSimon Glass * 103 statements are dynamically executed. The program is balanced with 229*d1389403SSimon Glass * respect to the three aspects: 230*d1389403SSimon Glass * 231*d1389403SSimon Glass * - statement type 232*d1389403SSimon Glass * - operand type 233*d1389403SSimon Glass * - operand locality 234*d1389403SSimon Glass * operand global, local, parameter, or constant. 235*d1389403SSimon Glass * 236*d1389403SSimon Glass * The combination of these three aspects is balanced only approximately. 237*d1389403SSimon Glass * 238*d1389403SSimon Glass * 1. Statement Type: 239*d1389403SSimon Glass * ----------------- number 240*d1389403SSimon Glass * 241*d1389403SSimon Glass * V1 = V2 9 242*d1389403SSimon Glass * (incl. V1 = F(..) 243*d1389403SSimon Glass * V = Constant 12 244*d1389403SSimon Glass * Assignment, 7 245*d1389403SSimon Glass * with array element 246*d1389403SSimon Glass * Assignment, 6 247*d1389403SSimon Glass * with record component 248*d1389403SSimon Glass * -- 249*d1389403SSimon Glass * 34 34 250*d1389403SSimon Glass * 251*d1389403SSimon Glass * X = Y +|-|"&&"|"|" Z 5 252*d1389403SSimon Glass * X = Y +|-|"==" Constant 6 253*d1389403SSimon Glass * X = X +|- 1 3 254*d1389403SSimon Glass * X = Y *|/ Z 2 255*d1389403SSimon Glass * X = Expression, 1 256*d1389403SSimon Glass * two operators 257*d1389403SSimon Glass * X = Expression, 1 258*d1389403SSimon Glass * three operators 259*d1389403SSimon Glass * -- 260*d1389403SSimon Glass * 18 18 261*d1389403SSimon Glass * 262*d1389403SSimon Glass * if .... 14 263*d1389403SSimon Glass * with "else" 7 264*d1389403SSimon Glass * without "else" 7 265*d1389403SSimon Glass * executed 3 266*d1389403SSimon Glass * not executed 4 267*d1389403SSimon Glass * for ... 7 | counted every time 268*d1389403SSimon Glass * while ... 4 | the loop condition 269*d1389403SSimon Glass * do ... while 1 | is evaluated 270*d1389403SSimon Glass * switch ... 1 271*d1389403SSimon Glass * break 1 272*d1389403SSimon Glass * declaration with 1 273*d1389403SSimon Glass * initialization 274*d1389403SSimon Glass * -- 275*d1389403SSimon Glass * 34 34 276*d1389403SSimon Glass * 277*d1389403SSimon Glass * P (...) procedure call 11 278*d1389403SSimon Glass * user procedure 10 279*d1389403SSimon Glass * library procedure 1 280*d1389403SSimon Glass * X = F (...) 281*d1389403SSimon Glass * function call 6 282*d1389403SSimon Glass * user function 5 283*d1389403SSimon Glass * library function 1 284*d1389403SSimon Glass * -- 285*d1389403SSimon Glass * 17 17 286*d1389403SSimon Glass * --- 287*d1389403SSimon Glass * 103 288*d1389403SSimon Glass * 289*d1389403SSimon Glass * The average number of parameters in procedure or function calls 290*d1389403SSimon Glass * is 1.82 (not counting the function values as implicit parameters). 291*d1389403SSimon Glass * 292*d1389403SSimon Glass * 293*d1389403SSimon Glass * 2. Operators 294*d1389403SSimon Glass * ------------ 295*d1389403SSimon Glass * number approximate 296*d1389403SSimon Glass * percentage 297*d1389403SSimon Glass * 298*d1389403SSimon Glass * Arithmetic 32 50.8 299*d1389403SSimon Glass * 300*d1389403SSimon Glass * + 21 33.3 301*d1389403SSimon Glass * - 7 11.1 302*d1389403SSimon Glass * * 3 4.8 303*d1389403SSimon Glass * / (int div) 1 1.6 304*d1389403SSimon Glass * 305*d1389403SSimon Glass * Comparison 27 42.8 306*d1389403SSimon Glass * 307*d1389403SSimon Glass * == 9 14.3 308*d1389403SSimon Glass * /= 4 6.3 309*d1389403SSimon Glass * > 1 1.6 310*d1389403SSimon Glass * < 3 4.8 311*d1389403SSimon Glass * >= 1 1.6 312*d1389403SSimon Glass * <= 9 14.3 313*d1389403SSimon Glass * 314*d1389403SSimon Glass * Logic 4 6.3 315*d1389403SSimon Glass * 316*d1389403SSimon Glass * && (AND-THEN) 1 1.6 317*d1389403SSimon Glass * | (OR) 1 1.6 318*d1389403SSimon Glass * ! (NOT) 2 3.2 319*d1389403SSimon Glass * 320*d1389403SSimon Glass * -- ----- 321*d1389403SSimon Glass * 63 100.1 322*d1389403SSimon Glass * 323*d1389403SSimon Glass * 324*d1389403SSimon Glass * 3. Operand Type (counted once per operand reference): 325*d1389403SSimon Glass * --------------- 326*d1389403SSimon Glass * number approximate 327*d1389403SSimon Glass * percentage 328*d1389403SSimon Glass * 329*d1389403SSimon Glass * Integer 175 72.3 % 330*d1389403SSimon Glass * Character 45 18.6 % 331*d1389403SSimon Glass * Pointer 12 5.0 % 332*d1389403SSimon Glass * String30 6 2.5 % 333*d1389403SSimon Glass * Array 2 0.8 % 334*d1389403SSimon Glass * Record 2 0.8 % 335*d1389403SSimon Glass * --- ------- 336*d1389403SSimon Glass * 242 100.0 % 337*d1389403SSimon Glass * 338*d1389403SSimon Glass * When there is an access path leading to the final operand (e.g. a record 339*d1389403SSimon Glass * component), only the final data type on the access path is counted. 340*d1389403SSimon Glass * 341*d1389403SSimon Glass * 342*d1389403SSimon Glass * 4. Operand Locality: 343*d1389403SSimon Glass * ------------------- 344*d1389403SSimon Glass * number approximate 345*d1389403SSimon Glass * percentage 346*d1389403SSimon Glass * 347*d1389403SSimon Glass * local variable 114 47.1 % 348*d1389403SSimon Glass * global variable 22 9.1 % 349*d1389403SSimon Glass * parameter 45 18.6 % 350*d1389403SSimon Glass * value 23 9.5 % 351*d1389403SSimon Glass * reference 22 9.1 % 352*d1389403SSimon Glass * function result 6 2.5 % 353*d1389403SSimon Glass * constant 55 22.7 % 354*d1389403SSimon Glass * --- ------- 355*d1389403SSimon Glass * 242 100.0 % 356*d1389403SSimon Glass * 357*d1389403SSimon Glass * 358*d1389403SSimon Glass * The program does not compute anything meaningful, but it is syntactically 359*d1389403SSimon Glass * and semantically correct. All variables have a value assigned to them 360*d1389403SSimon Glass * before they are used as a source operand. 361*d1389403SSimon Glass * 362*d1389403SSimon Glass * There has been no explicit effort to account for the effects of a 363*d1389403SSimon Glass * cache, or to balance the use of long or short displacements for code or 364*d1389403SSimon Glass * data. 365*d1389403SSimon Glass * 366*d1389403SSimon Glass *************************************************************************** 367*d1389403SSimon Glass */ 368*d1389403SSimon Glass 369*d1389403SSimon Glass 370*d1389403SSimon Glass /* Compiler and system dependent definitions: */ 371*d1389403SSimon Glass 372*d1389403SSimon Glass #ifndef TIME 373*d1389403SSimon Glass #define TIMES 374*d1389403SSimon Glass #endif 375*d1389403SSimon Glass /* Use times(2) time function unless */ 376*d1389403SSimon Glass /* explicitly defined otherwise */ 377*d1389403SSimon Glass 378*d1389403SSimon Glass #define Mic_secs_Per_Second 1000000.0 379*d1389403SSimon Glass /* Berkeley UNIX C returns process times in seconds/HZ */ 380*d1389403SSimon Glass 381*d1389403SSimon Glass #ifdef NOSTRUCTASSIGN 382*d1389403SSimon Glass #define structassign(d, s) memcpy(&(d), &(s), sizeof(d)) 383*d1389403SSimon Glass #else 384*d1389403SSimon Glass #define structassign(d, s) d = s 385*d1389403SSimon Glass #endif 386*d1389403SSimon Glass 387*d1389403SSimon Glass #ifdef NOENUM 388*d1389403SSimon Glass #define Ident_1 0 389*d1389403SSimon Glass #define Ident_2 1 390*d1389403SSimon Glass #define Ident_3 2 391*d1389403SSimon Glass #define Ident_4 3 392*d1389403SSimon Glass #define Ident_5 4 393*d1389403SSimon Glass typedef int Enumeration; 394*d1389403SSimon Glass #else 395*d1389403SSimon Glass typedef enum {Ident_1, Ident_2, Ident_3, Ident_4, Ident_5} 396*d1389403SSimon Glass Enumeration; 397*d1389403SSimon Glass #endif 398*d1389403SSimon Glass /* for boolean and enumeration types in Ada, Pascal */ 399*d1389403SSimon Glass 400*d1389403SSimon Glass /* General definitions: */ 401*d1389403SSimon Glass 402*d1389403SSimon Glass #define Null 0 403*d1389403SSimon Glass /* Value of a Null pointer */ 404*d1389403SSimon Glass #define true 1 405*d1389403SSimon Glass #define false 0 406*d1389403SSimon Glass 407*d1389403SSimon Glass typedef int One_Thirty; 408*d1389403SSimon Glass typedef int One_Fifty; 409*d1389403SSimon Glass typedef char Capital_Letter; 410*d1389403SSimon Glass typedef int Boolean; 411*d1389403SSimon Glass typedef char Str_30 [31]; 412*d1389403SSimon Glass typedef int Arr_1_Dim [50]; 413*d1389403SSimon Glass typedef int Arr_2_Dim [50] [50]; 414*d1389403SSimon Glass 415*d1389403SSimon Glass typedef struct record 416*d1389403SSimon Glass { 417*d1389403SSimon Glass struct record *Ptr_Comp; 418*d1389403SSimon Glass Enumeration Discr; 419*d1389403SSimon Glass union { 420*d1389403SSimon Glass struct { 421*d1389403SSimon Glass Enumeration Enum_Comp; 422*d1389403SSimon Glass int Int_Comp; 423*d1389403SSimon Glass char Str_Comp [31]; 424*d1389403SSimon Glass } var_1; 425*d1389403SSimon Glass struct { 426*d1389403SSimon Glass Enumeration E_Comp_2; 427*d1389403SSimon Glass char Str_2_Comp [31]; 428*d1389403SSimon Glass } var_2; 429*d1389403SSimon Glass struct { 430*d1389403SSimon Glass char Ch_1_Comp; 431*d1389403SSimon Glass char Ch_2_Comp; 432*d1389403SSimon Glass } var_3; 433*d1389403SSimon Glass } variant; 434*d1389403SSimon Glass } Rec_Type, *Rec_Pointer; 435*d1389403SSimon Glass 436*d1389403SSimon Glass 437*d1389403SSimon Glass /* 438*d1389403SSimon Glass * dhry() - run dhrystone for a given number of iterations 439*d1389403SSimon Glass * 440*d1389403SSimon Glass * @iterations: Number of iterations to run 441*d1389403SSimon Glass */ 442*d1389403SSimon Glass void dhry(int iterations); 443