c1/tests/java/src/jv/dragonfly/c1/tests/C1CompilerJavaTests.java
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 15 Aug 2016 17:30:36 +0100
changeset 44 2bf743f565e6
parent 41 41896fd2e6bf
permissions -rw-r--r--
C1: Added support for branching In order to implement braning, a method is first pre-scanned for basic blocks by `C1BasicBlockAnalyzer*`. It returns an entry block (as `C1BasicBlock` instance) which is eventually linked to other blocks by its `successors` blocks. The compilation process then maps 1-to-1 each "C1" basic block to an LLVM basic block. When compiling, it starts with entry block and then recursivelly proceeds with successors.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
39
e6fd7b4f1bc9 Moved tests to `jv:dragondfly/c1/tests` subpackage.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
package jv.dragonfly.c1.tests;
e6fd7b4f1bc9 Moved tests to `jv:dragondfly/c1/tests` subpackage.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
e6fd7b4f1bc9 Moved tests to `jv:dragondfly/c1/tests` subpackage.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
//import java.util.*;
e6fd7b4f1bc9 Moved tests to `jv:dragondfly/c1/tests` subpackage.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
e6fd7b4f1bc9 Moved tests to `jv:dragondfly/c1/tests` subpackage.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
import static org.junit.Assert.*;
e6fd7b4f1bc9 Moved tests to `jv:dragondfly/c1/tests` subpackage.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
import org.junit.Test;     
e6fd7b4f1bc9 Moved tests to `jv:dragondfly/c1/tests` subpackage.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
import stx.libjava.annotation.Package;
e6fd7b4f1bc9 Moved tests to `jv:dragondfly/c1/tests` subpackage.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
e6fd7b4f1bc9 Moved tests to `jv:dragondfly/c1/tests` subpackage.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
@Package("jv:dragonfly/c1/tests")
e6fd7b4f1bc9 Moved tests to `jv:dragondfly/c1/tests` subpackage.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
public class C1CompilerJavaTests {
e6fd7b4f1bc9 Moved tests to `jv:dragondfly/c1/tests` subpackage.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
    public int m01a() {
e6fd7b4f1bc9 Moved tests to `jv:dragondfly/c1/tests` subpackage.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
        return 15;
e6fd7b4f1bc9 Moved tests to `jv:dragondfly/c1/tests` subpackage.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
    }
e6fd7b4f1bc9 Moved tests to `jv:dragondfly/c1/tests` subpackage.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
e6fd7b4f1bc9 Moved tests to `jv:dragondfly/c1/tests` subpackage.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
    public int m02a(int a) {
e6fd7b4f1bc9 Moved tests to `jv:dragondfly/c1/tests` subpackage.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
        return a;
e6fd7b4f1bc9 Moved tests to `jv:dragondfly/c1/tests` subpackage.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
    }
e6fd7b4f1bc9 Moved tests to `jv:dragondfly/c1/tests` subpackage.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
41
41896fd2e6bf Added tests for integer arithmetics
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
    19
    public int m03a(int a, int b) {
41896fd2e6bf Added tests for integer arithmetics
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
    20
        return a + b;
41896fd2e6bf Added tests for integer arithmetics
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
    21
    }
41896fd2e6bf Added tests for integer arithmetics
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
    22
44
2bf743f565e6 C1: Added support for branching
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    23
    public int m04a(int a) {
2bf743f565e6 C1: Added support for branching
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    24
        if (a < 0) {
2bf743f565e6 C1: Added support for branching
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    25
            return -1;
2bf743f565e6 C1: Added support for branching
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    26
        } else {
2bf743f565e6 C1: Added support for branching
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    27
            if (a > 0) {
2bf743f565e6 C1: Added support for branching
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    28
                return 1;
2bf743f565e6 C1: Added support for branching
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    29
            } else {
2bf743f565e6 C1: Added support for branching
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    30
                return 0;
2bf743f565e6 C1: Added support for branching
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    31
            }
2bf743f565e6 C1: Added support for branching
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    32
        }
2bf743f565e6 C1: Added support for branching
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    33
    }
2bf743f565e6 C1: Added support for branching
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    34
2bf743f565e6 C1: Added support for branching
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    35
    public int m04b(int a) {
2bf743f565e6 C1: Added support for branching
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    36
        int r = 1;
2bf743f565e6 C1: Added support for branching
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    37
        do {
2bf743f565e6 C1: Added support for branching
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    38
            r = r * a--;
2bf743f565e6 C1: Added support for branching
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    39
        } while (a > 0);
2bf743f565e6 C1: Added support for branching
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    40
        return r;
2bf743f565e6 C1: Added support for branching
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    41
    } 
39
e6fd7b4f1bc9 Moved tests to `jv:dragondfly/c1/tests` subpackage.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
}