/* * $Id$ * * Copyright (C) 2003-2014 JNode.org * * This library is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public * License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this library; If not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ package org.jnode.vm.compiler.ir; /** * @author Levente S\u00e1ntha */ public class PrimitiveTest { /** * ****** INT ****************************** */ public static int appel() { int i, j, k; i = 1; j = 1; k = 0; while (k < 100) { if (j < 20) { j = i; k = k + 1; } else { j = k; k = k + 2; } } return j; } public static int trivial1(int a) { int ret = 0; if (a > ret) { ret = a; } return ret; } public static int trivial1_(int a) { int b = 1 + a; int c = b + 1; return a; } public static int trivial2() { return 1 == 1 ? 3 : 7; } public static int trivial1_() { int a = 0; while (a < 10) a++; return a; } public static void main(String[] argv) { //System.out.println(trivial1()); } public static int arithOptLoop(int a0, int a1, int a2) { int l3 = 1; int l4 = 3 * a1; for (int l5 = 10; l5 > 0; l5 -= 1) { l3 += 2 * a0 + l4; l4 += 1; } return l3; } public static int arithOptIntx(int a0, int a1, int a2) { return a0 + a1; } public static int discriminant(int a0, int a1, int a2) { return a1 * a1 - 4 * a0 * a2; } public static int simple(int a0, int a1) { int l0 = a1; return -l0; } public static int const0(int a0, int a1) { int l0 = 0; if (a0 == 0) { l0 = -1; } if (a0 > 0) { l0 = 1; } return l0; } public static int ifElse(int a0) { int l0; if (a0 == 0) { l0 = 1; } else { l0 = -1; } return l0; } public static int simpleWhile(int a0) { int l0 = 1; while (l0 < 10) { l0 += 1; } return l0; } public static int const12(int a0, int a1) { int l0 = 10, l1 = 0; while (l0 > 0) { l1 = a1 * l1 + a0; l0 = l0 - 1; } return l1; } //compile it with no optimisation (see kjc -O0 - the kopi compiler) public static int unconditionalJump(int a0, int a1) { int l0 = 1; for (;;) { l0 = a0 + a1 + l0; for (;;) { l0 = a0 + a1 + l0; for (;;) { l0 = a0 + a1 + l0; break; } break; } break; } return l0; } public static int const6(int a0, int a1) { int l1 = a1 | a0; int l2 = a0 & a1; return l1 ^ l1 + l2 ^ l2 - 2 * l1 * l2; } void const5() { int l1 = 0, l2 = 1, l3 = 3; l3 = l1 + l2; } public static int const4(int a0, int a1) { int l1 = a1 + a0; int l2 = a0 * a1; return l1 * l1 + l2 * l2 + 2 * l1 * l2; } public static int const3(int a0, int a1) { //int l1 = -134; //int l2 = 2; //int l3 = 3; //return (int)(1 + 2 * 3.5 + 1) % 6 ; //return - ((l1 + l2 + l3 + l1* l2* l3) / l2); return a1 + a1 + a0; } public static int const2(int a0, int a1) { //int l1 = -134; //int l2 = 2; //int l3 = 3; //return (int)(1 + 2 * 3.5 + 1) % 6 ; //return - ((l1 + l2 + l3 + l1* l2* l3) / l2); return (byte) 2 + a1; } public static int erro1(int a0, int a1) { return a0 < a1 ? a0 : a1; } public static int ifTest(int a0, int a1) { int l0; if (a0 > a1) l0 = a0; else l0 = a1; return l0; } public static int const13(int a0, int a1) { int l0 = 1; for (;;) { //l0 = a0 + a1 + l0; if (l0 > 0) break; l0++; } return a0; } public static int const1(int a0, int a1) { int i0 = a0; while (i0 > 0) { i0 = i0 - 1; a1 = a1 + 1; } return a1; } public static int const10(int a0, int a1) { //while(a0-- >0) a1++; return a1 + 1 + a0 * (1 + 3 * a1 + 2 * a0); } public static int terniary1(int a0, int a1) { return 1; } public static int terniary2(int a0, int a1) { return a0 < 0 ? a0 : a1; } public static int terniary3(int a0, int a1) { int l0 = a0 + a0; int l1 = a1 * a1; return l0 < l1 ? a0 : a1; } public static int const9(int a0, int a1) { int l1 = a1 + a0; int l2 = a0 * a1; return l1 * l1 + l2 * l2 + 2 * l1 * l2; } public static int terniary0(int a0, int a1) { int l1 = 2; int l2 = 3; int l3 = 4; int l4 = l1 + a0; int l5 = l4 + l2 + a0; int l6 = l5 + l3; int l7 = a0 + a1; int l8 = a0 * a1; int l9 = a0 * a1 + a0; int l10 = a0 * a1 + a1; return 1111117 * a0 + a1 * l6 + l7 + l8 + l9 + l10; } public static int terniary10(int a0, int a1) { int l0 = a0 + a1; int l1 = a1 - a0 - 1; return l0 % l1; } public static int terniary11(int a0, int a1) { return a0 << a1; } public static int terniary12(int a0, int a1) { short s = (short) (2 * a0); byte b = (byte) (a1 * 2); char c = (char) (a1 + a0); int l1 = a0 + s; int l2 = a1 + b; return l1 + l2 + c; } public static int terniary13(int a0, int a1) { byte b = (byte) (a1 + 1); return b; } // todo // public static float terniary14(float a0, float a1) { // return 1 + a0 + a1; // } public static int terniary14(int a0, int a1) { return 1 + a0 + a1; } public static int terniary15(int a0, int a1) { return a0 * a1 + a0 * a1; } //error public static int terniary16(int a0, int a1) { int s = 0; for (int i = 0; i < 10000; i++) s = a0 * s + a1 * s + i + 1; return s; } public static int terniary18(int a0, int a1) { return (a0 / a1 + a1 / a0 + (a0 - a1) / (a0 + a1) + (a0 + a1) / (a0 * a1)) / (a0 * a1 / (a0 + a1) + 1); } public static int terniary17(int a0, int a1) { return (a0 * a0 + a1 * a1 + a1 * a0) / ((a0 + a1) + (a0 + a1) / (a0 + a0)); } public static int terniary20(int a0, int a1) { int l0 = a0 / a1; int l1 = (a0 + a1) / 2; int l2 = (a0 * a1) / (a0 + a1); int l3 = (l0 + l1 + l2) / (a0 + a1); return ((1 + l0) / (1 + l1) + (2 + l0) / (1 + l2) + (3 + l0) / (1 + l3) + (4 + l1) / (1 + l2) + (5 + l2) / (1 + l3)) / (a0 - a1); } public static int terniary19(int a0, int a1) { int l1 = a0; int l3 = a0 + a0; return 1 / (1 + a0) + (1 + l1) / (1 + l1) + (1 + l1) / (1 + l3); } public static int terniary21(int a0, int a1) { return (1 * a0) / (1 * a0) + (1 * a0) / (1 * a0) + (1 * a0) / (1 * a0); // + (1 * a0)/(1 * a0) + //(1 * a0)/(1 * a0 ); } //failure public static int terniary22(int a0, int a1) { int l0 = a0 + a1; int l1 = a0 + a1; int l2 = a0 + a1; int l3 = a0 + a1; int l4 = a0 + a1; int l5 = a0 + a1; int l6 = a0 + a1; int l7 = a0 + a1; int l8 = a0 + a1; //int l9 = a0 + a1; return l0 + l1 + l2 + l3 + l4 + l5 + l6 + l7 + l8; // + l9; } public static int terniary23(int a0, int a1) { return ((((((a0 * a1 + a1) << a1) / a0) >>> a0) + a0 * a1) >> (a1 - 2)) + (((17 * a0 * a1) << 3) % (a0 + a1 + 1)); } public static float terniary24(float a0, float a1) { // float l0 = a0 + a1; // float l1 = a0 + a1; // int l2 = (int)l0 + 2; // float l3 = l1 + (float)l2; return a0; //l3; } public static int terniary(int a0, int a1) { float f0 = a0; // + 1.3f; float f1 = a1; // + 1.7f; // float f2 = f0 / f1; // float f3 = f0 * f1; return (int) (f0 / f1); } public static int terniary25(int a0, int a1) { return a0 / a1; } // //todo // public static long laddl(long a0, long a1) { // long l = a0; // return l + a1; // } // public static long ladd(long a0, long a1) { // return a0 + a1; // } // // public static long lsub(long a0, long a1) { // return a0 - a1; // } // // public static long lmul(long a0, long a1) { // return a0 * a1; // } // // public static long ldiv(long a0, long a1) { // return a0 / a1; // } // // public static long land(long a0, long a1) { // return a0 & a1; // } // // public static long lor(long a0, long a1) { // return a0 | a1; // } // // public static long lxor(long a0, long a1) { // return a0 ^ a1; // } public static int add(int a0, int a1) { return a0 + a1; } public static int sub(int a0, int a1) { return a0 - a1; } public static int mul(int a0, int a1) { return a0 * a1; } public static int div(int a0, int a1) { return a0 / a1; } public static int and(int a0, int a1) { return a0 & a1; } public static int or(int a0, int a1) { return a0 | a1; } public static int xor(int a0, int a1) { return a0 ^ a1; } //misc public static int test1() { return 1; } public int test2() { return 1; } public static int sum1(int a) { int sum = 0; for (int i = 1; i <= a; i++) { sum += i; } return sum; } public int sum2(int a) { int sum = 0; for (int i = 1; i <= a; i++) { sum += i; } return sum; } }