1/* 2 * Copyright 2014, NICTA 3 * 4 * This software may be distributed and modified according to the terms of 5 * the BSD 2-Clause license. Note that NO WARRANTY is provided. 6 * See "LICENSE_BSD2.txt" for details. 7 * 8 * @TAG(NICTA_BSD) 9 */ 10 11/* 12 * More test cases for word abstraction. 13 */ 14 15int callee_flat_s(int bla) { 16 return bla + 1; 17} 18int caller_flat_s(int bla) { 19 return callee_flat_s(bla); 20} 21 22unsigned callee_flat_u_abs(unsigned bla) { 23 return bla + 1; 24} 25unsigned callee_flat_u_noabs(unsigned bla) { 26 return bla + 1; 27} 28 29unsigned caller_flat_u_aa(unsigned bla) { 30 return callee_flat_u_abs(bla); 31} 32unsigned caller_flat_u_an(unsigned bla) { 33 return callee_flat_u_noabs(bla); 34} 35unsigned caller_flat_u_na(unsigned bla) { 36 return callee_flat_u_abs(bla); 37} 38unsigned caller_flat_u_nn(unsigned bla) { 39 return callee_flat_u_noabs(bla); 40} 41 42int callee_deep_s(int bla) { 43 return callee_deep_s(bla + 1); 44} 45int caller_deep_s(int bla) { 46 return callee_deep_s(bla); 47} 48 49unsigned callee_deep_u(unsigned bla) { 50 return callee_deep_u(bla + 1); 51} 52unsigned caller_deep_u(unsigned bla) { 53 return callee_deep_u(bla); 54} 55 56int mutual_s2(int); 57int mutual_s1(int bla) { 58 return mutual_s2(bla + 1); 59} 60int mutual_s2(int bla) { 61 return mutual_s1(bla - 1); 62} 63 64int cross(int a, int b, int c, int d) { 65 return a * c - b * d; 66} 67int gcd_s_rec(int a, int b) { 68 if (a < 0) return gcd_s_rec(-a, b); 69 if (b < 0) return gcd_s_rec(a, -b); 70 if (a > b) return gcd_s_rec(b, a); 71 if (a == 0) return b; 72 return gcd_s_rec(a, b % a); 73} 74int gcd_s_loop(int a, int b) { 75 int c; 76 if (a < 0) a = -a; 77 if (b < 0) b = -b; 78 while (a != 0) { 79 c = a; 80 a = b % a; 81 b = c; 82 } 83 return b; 84} 85 86int sum(int *a, unsigned n) { 87 int s = 0; 88 unsigned i; 89 for (i = 0; i < n; i++) { 90 s += a[i]; 91 } 92 return s; 93} 94