summaryrefslogtreecommitdiff
path: root/src/main/java/com/seaofnodes/simple/Machine.java
blob: b29e9aba75037545d6429deecc05587bb03617f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.seaofnodes.simple;

import com.seaofnodes.simple.RegMask;
import com.seaofnodes.simple.node.CFGNode;
import com.seaofnodes.simple.node.IfNode;
import com.seaofnodes.simple.node.Node;

abstract public class Machine {
    // Human readable machine name.  Something like "x86-64" or "arm" or "risc5"
    public abstract String name();
    // Human-readable name for a register number, e.g. "RAX" or "R0"
    public abstract String reg( int reg );
    // Create a split op; any register to any register, including stack slots
    public abstract Node split();
    // Return a MachNode unconditional branch
    public abstract CFGNode jump();
    // Break an infinite loop
    public abstract IfNode never( CFGNode ctrl );
    // Instruction select from ideal nodes
    public abstract Node instSelect( Node n );
}