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 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 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 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 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 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 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