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