1*795d594fSAndroid Build Coastguard Worker /* 2*795d594fSAndroid Build Coastguard Worker * Copyright (C) 2014 The Android Open Source Project 3*795d594fSAndroid Build Coastguard Worker * 4*795d594fSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*795d594fSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*795d594fSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*795d594fSAndroid Build Coastguard Worker * 8*795d594fSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*795d594fSAndroid Build Coastguard Worker * 10*795d594fSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*795d594fSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*795d594fSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*795d594fSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*795d594fSAndroid Build Coastguard Worker * limitations under the License. 15*795d594fSAndroid Build Coastguard Worker */ 16*795d594fSAndroid Build Coastguard Worker 17*795d594fSAndroid Build Coastguard Worker public class Main { main(String[] args)18*795d594fSAndroid Build Coastguard Worker public static void main(String[] args) { 19*795d594fSAndroid Build Coastguard Worker assertEquals(4.2f, returnFloat()); 20*795d594fSAndroid Build Coastguard Worker float[] a = new float[2]; 21*795d594fSAndroid Build Coastguard Worker a[0] = 42.2f; 22*795d594fSAndroid Build Coastguard Worker a[1] = 3.2f; 23*795d594fSAndroid Build Coastguard Worker assertEquals(45.4f, returnFloat(a)); 24*795d594fSAndroid Build Coastguard Worker 25*795d594fSAndroid Build Coastguard Worker assertEquals(4.4, returnDouble()); 26*795d594fSAndroid Build Coastguard Worker double[] b = new double[1]; 27*795d594fSAndroid Build Coastguard Worker b[0] = 42.4; 28*795d594fSAndroid Build Coastguard Worker assertEquals(42.4, returnDouble(b)); 29*795d594fSAndroid Build Coastguard Worker 30*795d594fSAndroid Build Coastguard Worker assertEquals(4.2f, invokeReturnFloat()); 31*795d594fSAndroid Build Coastguard Worker assertEquals(4.4, invokeReturnDouble()); 32*795d594fSAndroid Build Coastguard Worker assertEquals(4.2f, takeAFloat(4.2f)); 33*795d594fSAndroid Build Coastguard Worker assertEquals(3.1, takeADouble(3.1)); 34*795d594fSAndroid Build Coastguard Worker assertEquals(12.7, takeThreeDouble(3.1, 4.4, 5.2)); 35*795d594fSAndroid Build Coastguard Worker assertEquals(12.7f, takeThreeFloat(3.1f, 4.4f, 5.2f)); 36*795d594fSAndroid Build Coastguard Worker assertEquals(4.2f, invokeTakeAFloat(4.2f)); 37*795d594fSAndroid Build Coastguard Worker assertEquals(3.1, invokeTakeADouble(3.1)); 38*795d594fSAndroid Build Coastguard Worker assertEquals(12.7, invokeTakeThreeDouble(3.1, 4.4, 5.2)); 39*795d594fSAndroid Build Coastguard Worker assertEquals(12.7f, invokeTakeThreeFloat(3.1f, 4.4f, 5.2f)); 40*795d594fSAndroid Build Coastguard Worker 41*795d594fSAndroid Build Coastguard Worker testArrayOperations(new float[2], 0, 1.2f, 3.4f); 42*795d594fSAndroid Build Coastguard Worker testArrayOperations(new double[2], 0, 4.1, 7.6); 43*795d594fSAndroid Build Coastguard Worker } 44*795d594fSAndroid Build Coastguard Worker invokeReturnFloat()45*795d594fSAndroid Build Coastguard Worker public static float invokeReturnFloat() { 46*795d594fSAndroid Build Coastguard Worker return returnFloat(); 47*795d594fSAndroid Build Coastguard Worker } 48*795d594fSAndroid Build Coastguard Worker invokeReturnDouble()49*795d594fSAndroid Build Coastguard Worker public static double invokeReturnDouble() { 50*795d594fSAndroid Build Coastguard Worker return returnDouble(); 51*795d594fSAndroid Build Coastguard Worker } 52*795d594fSAndroid Build Coastguard Worker returnFloat()53*795d594fSAndroid Build Coastguard Worker public static float returnFloat() { 54*795d594fSAndroid Build Coastguard Worker return 4.2f; 55*795d594fSAndroid Build Coastguard Worker } 56*795d594fSAndroid Build Coastguard Worker returnFloat(float[] a)57*795d594fSAndroid Build Coastguard Worker public static float returnFloat(float[] a) { 58*795d594fSAndroid Build Coastguard Worker return a[0] + a[1]; 59*795d594fSAndroid Build Coastguard Worker } 60*795d594fSAndroid Build Coastguard Worker returnDouble()61*795d594fSAndroid Build Coastguard Worker public static double returnDouble() { 62*795d594fSAndroid Build Coastguard Worker return 4.4; 63*795d594fSAndroid Build Coastguard Worker } 64*795d594fSAndroid Build Coastguard Worker returnDouble(double[] a)65*795d594fSAndroid Build Coastguard Worker public static double returnDouble(double[] a) { 66*795d594fSAndroid Build Coastguard Worker return a[0]; 67*795d594fSAndroid Build Coastguard Worker } 68*795d594fSAndroid Build Coastguard Worker takeAFloat(float a)69*795d594fSAndroid Build Coastguard Worker public static float takeAFloat(float a) { 70*795d594fSAndroid Build Coastguard Worker return a; 71*795d594fSAndroid Build Coastguard Worker } 72*795d594fSAndroid Build Coastguard Worker takeADouble(double a)73*795d594fSAndroid Build Coastguard Worker public static double takeADouble(double a) { 74*795d594fSAndroid Build Coastguard Worker return a; 75*795d594fSAndroid Build Coastguard Worker } 76*795d594fSAndroid Build Coastguard Worker takeThreeDouble(double a, double b, double c)77*795d594fSAndroid Build Coastguard Worker public static double takeThreeDouble(double a, double b, double c) { 78*795d594fSAndroid Build Coastguard Worker return a + b + c; 79*795d594fSAndroid Build Coastguard Worker } 80*795d594fSAndroid Build Coastguard Worker takeThreeFloat(float a, float b, float c)81*795d594fSAndroid Build Coastguard Worker public static float takeThreeFloat(float a, float b, float c) { 82*795d594fSAndroid Build Coastguard Worker return a + b + c; 83*795d594fSAndroid Build Coastguard Worker } 84*795d594fSAndroid Build Coastguard Worker invokeTakeAFloat(float a)85*795d594fSAndroid Build Coastguard Worker public static float invokeTakeAFloat(float a) { 86*795d594fSAndroid Build Coastguard Worker return takeAFloat(a); 87*795d594fSAndroid Build Coastguard Worker } 88*795d594fSAndroid Build Coastguard Worker invokeTakeADouble(double a)89*795d594fSAndroid Build Coastguard Worker public static double invokeTakeADouble(double a) { 90*795d594fSAndroid Build Coastguard Worker return takeADouble(a); 91*795d594fSAndroid Build Coastguard Worker } 92*795d594fSAndroid Build Coastguard Worker invokeTakeThreeDouble(double a, double b, double c)93*795d594fSAndroid Build Coastguard Worker public static double invokeTakeThreeDouble(double a, double b, double c) { 94*795d594fSAndroid Build Coastguard Worker return takeThreeDouble(a, b, c); 95*795d594fSAndroid Build Coastguard Worker } 96*795d594fSAndroid Build Coastguard Worker invokeTakeThreeFloat(float a, float b, float c)97*795d594fSAndroid Build Coastguard Worker public static float invokeTakeThreeFloat(float a, float b, float c) { 98*795d594fSAndroid Build Coastguard Worker return takeThreeFloat(a, b, c); 99*795d594fSAndroid Build Coastguard Worker } 100*795d594fSAndroid Build Coastguard Worker 101*795d594fSAndroid Build Coastguard Worker // Test simple operations on a float array to ensure the register allocator works 102*795d594fSAndroid Build Coastguard Worker // properly. testArrayOperations(float[] a, int index, float value1, float value2)103*795d594fSAndroid Build Coastguard Worker public static void testArrayOperations(float[] a, int index, float value1, float value2) { 104*795d594fSAndroid Build Coastguard Worker a[0] = value1; 105*795d594fSAndroid Build Coastguard Worker a[1] = value2; 106*795d594fSAndroid Build Coastguard Worker assertEquals(value1 + value2, a[0] + a[1]); 107*795d594fSAndroid Build Coastguard Worker a[0] = 0.0f; 108*795d594fSAndroid Build Coastguard Worker a[1] = 0.0f; 109*795d594fSAndroid Build Coastguard Worker assertEquals(0.0f, a[0] + a[1]); 110*795d594fSAndroid Build Coastguard Worker a[index] = value1; 111*795d594fSAndroid Build Coastguard Worker a[index + 1] = value2; 112*795d594fSAndroid Build Coastguard Worker assertEquals(value1 + value2, a[0] + a[1]); 113*795d594fSAndroid Build Coastguard Worker } 114*795d594fSAndroid Build Coastguard Worker 115*795d594fSAndroid Build Coastguard Worker // Test simple operations on a double array to ensure the register allocator works 116*795d594fSAndroid Build Coastguard Worker // properly. testArrayOperations(double[] a, int index, double value1, double value2)117*795d594fSAndroid Build Coastguard Worker public static void testArrayOperations(double[] a, int index, double value1, double value2) { 118*795d594fSAndroid Build Coastguard Worker a[0] = value1; 119*795d594fSAndroid Build Coastguard Worker a[1] = value2; 120*795d594fSAndroid Build Coastguard Worker assertEquals(value1 + value2, a[0] + a[1]); 121*795d594fSAndroid Build Coastguard Worker a[0] = 0.0; 122*795d594fSAndroid Build Coastguard Worker a[1] = 0.0; 123*795d594fSAndroid Build Coastguard Worker assertEquals(0.0, a[0] + a[1]); 124*795d594fSAndroid Build Coastguard Worker a[index] = value1; 125*795d594fSAndroid Build Coastguard Worker a[index + 1] = value2; 126*795d594fSAndroid Build Coastguard Worker assertEquals(value1 + value2, a[0] + a[1]); 127*795d594fSAndroid Build Coastguard Worker } 128*795d594fSAndroid Build Coastguard Worker assertEquals(float expected, float actual)129*795d594fSAndroid Build Coastguard Worker public static void assertEquals(float expected, float actual) { 130*795d594fSAndroid Build Coastguard Worker if (expected != actual) { 131*795d594fSAndroid Build Coastguard Worker throw new AssertionError("Expected " + expected + " got " + actual); 132*795d594fSAndroid Build Coastguard Worker } 133*795d594fSAndroid Build Coastguard Worker } 134*795d594fSAndroid Build Coastguard Worker assertEquals(double expected, double actual)135*795d594fSAndroid Build Coastguard Worker public static void assertEquals(double expected, double actual) { 136*795d594fSAndroid Build Coastguard Worker if (expected != actual) { 137*795d594fSAndroid Build Coastguard Worker throw new AssertionError("Expected " + expected + " got " + actual); 138*795d594fSAndroid Build Coastguard Worker } 139*795d594fSAndroid Build Coastguard Worker } 140*795d594fSAndroid Build Coastguard Worker } 141