xref: /OK3568_Linux_fs/u-boot/lib/dhry/dhry_2.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * (C) Copyright 2015 Google, Inc
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * SPDX-License-Identifier:     GPL-2.0+
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  * Dhrystone is widely available in the public domain. A GPL license is
7*4882a593Smuzhiyun  * chosen for U-Boot.
8*4882a593Smuzhiyun  */
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun /*****************************************************************************
11*4882a593Smuzhiyun  *  The BYTE UNIX Benchmarks - Release 3
12*4882a593Smuzhiyun  *          Module: dhry_2.c   SID: 3.4 5/15/91 19:30:22
13*4882a593Smuzhiyun  *
14*4882a593Smuzhiyun  *****************************************************************************
15*4882a593Smuzhiyun  * Bug reports, patches, comments, suggestions should be sent to:
16*4882a593Smuzhiyun  *
17*4882a593Smuzhiyun  *	Ben Smith, Rick Grehan or Tom Yager
18*4882a593Smuzhiyun  *	ben@bytepb.byte.com   rick_g@bytepb.byte.com   tyager@bytepb.byte.com
19*4882a593Smuzhiyun  *
20*4882a593Smuzhiyun  *****************************************************************************
21*4882a593Smuzhiyun  *  Modification Log:
22*4882a593Smuzhiyun  *  10/22/97 - code cleanup to remove ANSI C compiler warnings
23*4882a593Smuzhiyun  *             Andy Kahn <kahn@zk3.dec.com>
24*4882a593Smuzhiyun  *
25*4882a593Smuzhiyun  *  Adapted from:
26*4882a593Smuzhiyun  *
27*4882a593Smuzhiyun  *                   "DHRYSTONE" Benchmark Program
28*4882a593Smuzhiyun  *                   -----------------------------
29*4882a593Smuzhiyun  *
30*4882a593Smuzhiyun  * **** WARNING **** See warning in n.dhry_1.c
31*4882a593Smuzhiyun  *
32*4882a593Smuzhiyun  *  Version:    C, Version 2.1
33*4882a593Smuzhiyun  *
34*4882a593Smuzhiyun  *  File:       dhry_2.c (part 3 of 3)
35*4882a593Smuzhiyun  *
36*4882a593Smuzhiyun  *  Date:       May 25, 1988
37*4882a593Smuzhiyun  *
38*4882a593Smuzhiyun  *  Author:     Reinhold P. Weicker
39*4882a593Smuzhiyun  *
40*4882a593Smuzhiyun  ****************************************************************************/
41*4882a593Smuzhiyun /* SCCSid is defined in dhry_1.c */
42*4882a593Smuzhiyun 
43*4882a593Smuzhiyun #include <common.h>
44*4882a593Smuzhiyun #include "dhry.h"
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun #ifndef REG
47*4882a593Smuzhiyun #define REG
48*4882a593Smuzhiyun         /* REG becomes defined as empty */
49*4882a593Smuzhiyun         /* i.e. no register variables   */
50*4882a593Smuzhiyun #endif
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun extern  int     Int_Glob;
53*4882a593Smuzhiyun extern  char    Ch_1_Glob;
54*4882a593Smuzhiyun 
55*4882a593Smuzhiyun void Proc_6(Enumeration, Enumeration *);
56*4882a593Smuzhiyun void Proc_7(One_Fifty, One_Fifty, One_Fifty *);
57*4882a593Smuzhiyun void Proc_8(Arr_1_Dim, Arr_2_Dim, int, int);
58*4882a593Smuzhiyun Enumeration Func_1(Capital_Letter, Capital_Letter);
59*4882a593Smuzhiyun Boolean Func_2(Str_30, Str_30);
60*4882a593Smuzhiyun Boolean Func_3(Enumeration);
61*4882a593Smuzhiyun 
Proc_6(Enumeration Enum_Val_Par,Enumeration * Enum_Ref_Par)62*4882a593Smuzhiyun void Proc_6 (Enumeration Enum_Val_Par, Enumeration *Enum_Ref_Par)
63*4882a593Smuzhiyun     /* executed once */
64*4882a593Smuzhiyun     /* Enum_Val_Par == Ident_3, Enum_Ref_Par becomes Ident_2 */
65*4882a593Smuzhiyun {
66*4882a593Smuzhiyun   *Enum_Ref_Par = Enum_Val_Par;
67*4882a593Smuzhiyun   if (! Func_3 (Enum_Val_Par))
68*4882a593Smuzhiyun     /* then, not executed */
69*4882a593Smuzhiyun     *Enum_Ref_Par = Ident_4;
70*4882a593Smuzhiyun   switch (Enum_Val_Par)
71*4882a593Smuzhiyun   {
72*4882a593Smuzhiyun     case Ident_1:
73*4882a593Smuzhiyun       *Enum_Ref_Par = Ident_1;
74*4882a593Smuzhiyun       break;
75*4882a593Smuzhiyun     case Ident_2:
76*4882a593Smuzhiyun       if (Int_Glob > 100)
77*4882a593Smuzhiyun         /* then */
78*4882a593Smuzhiyun       *Enum_Ref_Par = Ident_1;
79*4882a593Smuzhiyun       else *Enum_Ref_Par = Ident_4;
80*4882a593Smuzhiyun       break;
81*4882a593Smuzhiyun     case Ident_3: /* executed */
82*4882a593Smuzhiyun       *Enum_Ref_Par = Ident_2;
83*4882a593Smuzhiyun       break;
84*4882a593Smuzhiyun     case Ident_4: break;
85*4882a593Smuzhiyun     case Ident_5:
86*4882a593Smuzhiyun       *Enum_Ref_Par = Ident_3;
87*4882a593Smuzhiyun       break;
88*4882a593Smuzhiyun   } /* switch */
89*4882a593Smuzhiyun } /* Proc_6 */
90*4882a593Smuzhiyun 
Proc_7(Int_1_Par_Val,Int_2_Par_Val,Int_Par_Ref)91*4882a593Smuzhiyun void Proc_7 (Int_1_Par_Val, Int_2_Par_Val, Int_Par_Ref)
92*4882a593Smuzhiyun One_Fifty       Int_1_Par_Val;
93*4882a593Smuzhiyun One_Fifty       Int_2_Par_Val;
94*4882a593Smuzhiyun One_Fifty      *Int_Par_Ref;
95*4882a593Smuzhiyun /**********************************************/
96*4882a593Smuzhiyun     /* executed three times                                      */
97*4882a593Smuzhiyun     /* first call:      Int_1_Par_Val == 2, Int_2_Par_Val == 3,  */
98*4882a593Smuzhiyun     /*                  Int_Par_Ref becomes 7                    */
99*4882a593Smuzhiyun     /* second call:     Int_1_Par_Val == 10, Int_2_Par_Val == 5, */
100*4882a593Smuzhiyun     /*                  Int_Par_Ref becomes 17                   */
101*4882a593Smuzhiyun     /* third call:      Int_1_Par_Val == 6, Int_2_Par_Val == 10, */
102*4882a593Smuzhiyun     /*                  Int_Par_Ref becomes 18                   */
103*4882a593Smuzhiyun {
104*4882a593Smuzhiyun   One_Fifty Int_Loc;
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun   Int_Loc = Int_1_Par_Val + 2;
107*4882a593Smuzhiyun   *Int_Par_Ref = Int_2_Par_Val + Int_Loc;
108*4882a593Smuzhiyun } /* Proc_7 */
109*4882a593Smuzhiyun 
110*4882a593Smuzhiyun 
Proc_8(Arr_1_Par_Ref,Arr_2_Par_Ref,Int_1_Par_Val,Int_2_Par_Val)111*4882a593Smuzhiyun void Proc_8 (Arr_1_Par_Ref, Arr_2_Par_Ref, Int_1_Par_Val, Int_2_Par_Val)
112*4882a593Smuzhiyun /*********************************************************************/
113*4882a593Smuzhiyun     /* executed once      */
114*4882a593Smuzhiyun     /* Int_Par_Val_1 == 3 */
115*4882a593Smuzhiyun     /* Int_Par_Val_2 == 7 */
116*4882a593Smuzhiyun Arr_1_Dim       Arr_1_Par_Ref;
117*4882a593Smuzhiyun Arr_2_Dim       Arr_2_Par_Ref;
118*4882a593Smuzhiyun int             Int_1_Par_Val;
119*4882a593Smuzhiyun int             Int_2_Par_Val;
120*4882a593Smuzhiyun {
121*4882a593Smuzhiyun   REG One_Fifty Int_Index;
122*4882a593Smuzhiyun   REG One_Fifty Int_Loc;
123*4882a593Smuzhiyun 
124*4882a593Smuzhiyun   Int_Loc = Int_1_Par_Val + 5;
125*4882a593Smuzhiyun   Arr_1_Par_Ref [Int_Loc] = Int_2_Par_Val;
126*4882a593Smuzhiyun   Arr_1_Par_Ref [Int_Loc+1] = Arr_1_Par_Ref [Int_Loc];
127*4882a593Smuzhiyun   Arr_1_Par_Ref [Int_Loc+30] = Int_Loc;
128*4882a593Smuzhiyun   for (Int_Index = Int_Loc; Int_Index <= Int_Loc+1; ++Int_Index)
129*4882a593Smuzhiyun     Arr_2_Par_Ref [Int_Loc] [Int_Index] = Int_Loc;
130*4882a593Smuzhiyun   Arr_2_Par_Ref [Int_Loc] [Int_Loc-1] += 1;
131*4882a593Smuzhiyun   Arr_2_Par_Ref [Int_Loc+20] [Int_Loc] = Arr_1_Par_Ref [Int_Loc];
132*4882a593Smuzhiyun   Int_Glob = 5;
133*4882a593Smuzhiyun } /* Proc_8 */
134*4882a593Smuzhiyun 
135*4882a593Smuzhiyun 
Func_1(Capital_Letter Ch_1_Par_Val,Capital_Letter Ch_2_Par_Val)136*4882a593Smuzhiyun Enumeration Func_1 (Capital_Letter Ch_1_Par_Val, Capital_Letter Ch_2_Par_Val)
137*4882a593Smuzhiyun /*************************************************/
138*4882a593Smuzhiyun     /* executed three times                                         */
139*4882a593Smuzhiyun     /* first call:      Ch_1_Par_Val == 'H', Ch_2_Par_Val == 'R'    */
140*4882a593Smuzhiyun     /* second call:     Ch_1_Par_Val == 'A', Ch_2_Par_Val == 'C'    */
141*4882a593Smuzhiyun     /* third call:      Ch_1_Par_Val == 'B', Ch_2_Par_Val == 'C'    */
142*4882a593Smuzhiyun {
143*4882a593Smuzhiyun   Capital_Letter        Ch_1_Loc;
144*4882a593Smuzhiyun   Capital_Letter        Ch_2_Loc;
145*4882a593Smuzhiyun 
146*4882a593Smuzhiyun   Ch_1_Loc = Ch_1_Par_Val;
147*4882a593Smuzhiyun   Ch_2_Loc = Ch_1_Loc;
148*4882a593Smuzhiyun   if (Ch_2_Loc != Ch_2_Par_Val)
149*4882a593Smuzhiyun     /* then, executed */
150*4882a593Smuzhiyun     return (Ident_1);
151*4882a593Smuzhiyun   else  /* not executed */
152*4882a593Smuzhiyun   {
153*4882a593Smuzhiyun     Ch_1_Glob = Ch_1_Loc;
154*4882a593Smuzhiyun     return (Ident_2);
155*4882a593Smuzhiyun    }
156*4882a593Smuzhiyun } /* Func_1 */
157*4882a593Smuzhiyun 
158*4882a593Smuzhiyun 
159*4882a593Smuzhiyun 
Func_2(Str_1_Par_Ref,Str_2_Par_Ref)160*4882a593Smuzhiyun Boolean Func_2 (Str_1_Par_Ref, Str_2_Par_Ref)
161*4882a593Smuzhiyun /*************************************************/
162*4882a593Smuzhiyun     /* executed once */
163*4882a593Smuzhiyun     /* Str_1_Par_Ref == "DHRYSTONE PROGRAM, 1'ST STRING" */
164*4882a593Smuzhiyun     /* Str_2_Par_Ref == "DHRYSTONE PROGRAM, 2'ND STRING" */
165*4882a593Smuzhiyun 
166*4882a593Smuzhiyun Str_30  Str_1_Par_Ref;
167*4882a593Smuzhiyun Str_30  Str_2_Par_Ref;
168*4882a593Smuzhiyun {
169*4882a593Smuzhiyun   REG One_Thirty        Int_Loc;
170*4882a593Smuzhiyun       Capital_Letter    Ch_Loc;
171*4882a593Smuzhiyun 
172*4882a593Smuzhiyun   Ch_Loc = 'A';
173*4882a593Smuzhiyun   Int_Loc = 2;
174*4882a593Smuzhiyun   while (Int_Loc <= 2) /* loop body executed once */
175*4882a593Smuzhiyun     if (Func_1 (Str_1_Par_Ref[Int_Loc],
176*4882a593Smuzhiyun                 Str_2_Par_Ref[Int_Loc+1]) == Ident_1)
177*4882a593Smuzhiyun       /* then, executed */
178*4882a593Smuzhiyun     {
179*4882a593Smuzhiyun       Ch_Loc = 'A';
180*4882a593Smuzhiyun       Int_Loc += 1;
181*4882a593Smuzhiyun     } /* if, while */
182*4882a593Smuzhiyun   if (Ch_Loc >= 'W' && Ch_Loc < 'Z')
183*4882a593Smuzhiyun     /* then, not executed */
184*4882a593Smuzhiyun     Int_Loc = 7;
185*4882a593Smuzhiyun   if (Ch_Loc == 'R')
186*4882a593Smuzhiyun     /* then, not executed */
187*4882a593Smuzhiyun     return (true);
188*4882a593Smuzhiyun   else /* executed */
189*4882a593Smuzhiyun   {
190*4882a593Smuzhiyun     if (strcmp (Str_1_Par_Ref, Str_2_Par_Ref) > 0)
191*4882a593Smuzhiyun       /* then, not executed */
192*4882a593Smuzhiyun     {
193*4882a593Smuzhiyun       Int_Loc += 7;
194*4882a593Smuzhiyun       Int_Glob = Int_Loc;
195*4882a593Smuzhiyun       return (true);
196*4882a593Smuzhiyun     }
197*4882a593Smuzhiyun     else /* executed */
198*4882a593Smuzhiyun       return (false);
199*4882a593Smuzhiyun   } /* if Ch_Loc */
200*4882a593Smuzhiyun } /* Func_2 */
201*4882a593Smuzhiyun 
202*4882a593Smuzhiyun 
Func_3(Enum_Par_Val)203*4882a593Smuzhiyun Boolean Func_3 (Enum_Par_Val)
204*4882a593Smuzhiyun /***************************/
205*4882a593Smuzhiyun     /* executed once        */
206*4882a593Smuzhiyun     /* Enum_Par_Val == Ident_3 */
207*4882a593Smuzhiyun Enumeration Enum_Par_Val;
208*4882a593Smuzhiyun {
209*4882a593Smuzhiyun   Enumeration Enum_Loc;
210*4882a593Smuzhiyun 
211*4882a593Smuzhiyun   Enum_Loc = Enum_Par_Val;
212*4882a593Smuzhiyun   if (Enum_Loc == Ident_3)
213*4882a593Smuzhiyun     /* then, executed */
214*4882a593Smuzhiyun     return (true);
215*4882a593Smuzhiyun   else /* not executed */
216*4882a593Smuzhiyun     return (false);
217*4882a593Smuzhiyun } /* Func_3 */
218