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