coins.ffront
Class IntrinsicUtility

java.lang.Object
  extended bycoins.ffront.IntrinsicUtility

public class IntrinsicUtility
extends java.lang.Object

Intrinsic Utility


Nested Class Summary
(package private)  class IntrinsicUtility.NameAndType
          Intrinsic function's name and type.
 
Field Summary
(package private) static int ABS
           
(package private) static int COMPLEX_LIB
           
(package private) static int CONJUGATE
           
(package private) static int CONV_TO_CHAR
           
(package private) static int CONV_TO_COMPLEX
           
(package private) static int CONV_TO_DOUBLE
           
(package private) static int CONV_TO_INTEGER
           
(package private) static int CONV_TO_REAL
           
(package private) static int DCONJUGATE
           
(package private) static int DIM
           
(package private) static int DIMAGINARY_PART
           
(package private) static int DPROD
           
(package private)  DeclManager fDeclMgr
           
(package private)  ExecStmtManager fESMgr
           
(package private)  FirToHir fHir
           
(package private)  HirUtility fHirUtil
           
(package private)  TypeUtility fTypeUtil
           
(package private)  HIR hir
           
(package private) static int IMAGINARY_PART
           
(package private) static int INDEX
           
(package private) static IntrinsicUtility.NameAndType[] intrinsicTable
           
(package private) static int LENGTH
           
(package private) static int MATH_LIB
           
(package private) static int MATH_LIB2
           
(package private) static int MAX
           
(package private) static int MAX_I
           
(package private) static int MAX_R
           
(package private) static int MIN
           
(package private) static int MIN_I
           
(package private) static int MIN_R
           
(package private) static int MOD
           
(package private) static int NEAREST
           
(package private) static int NEAREST_INT
           
(package private) static int NOT_YET
           
(package private) static int POWER
           
(package private) static int SIGN
           
(package private)  Sym sym
           
(package private) static int TRUNCATE
           
(package private) static int TYPE_CHARACTER
           
(package private) static int TYPE_COMPLEX
           
(package private) static int TYPE_DCOMPLEX
           
(package private) static int TYPE_DOUBLE
           
(package private) static int TYPE_FC
           
(package private) static int TYPE_FI
           
(package private) static int TYPE_FLOAT
           
(package private) static int TYPE_INT
           
(package private) static int TYPE_NO
           
(package private) static int TYPE_NUMBER
           
(package private) static int TYPE_ONE_OR_TWO
           
(package private) static int TYPE_OVER_TWO
           
(package private) static int TYPE_REAL
           
 
Constructor Summary
IntrinsicUtility(FirToHir fth)
           
 
Method Summary
(package private)  boolean argsTypeCheck(IntrinsicUtility.NameAndType nat, IrList argsExps)
           
(package private)  Exp complexPowExp(Exp e1, Exp e2)
           
(package private)  Exp convertTo(Exp exp, Type type)
           
(package private)  void dp(java.lang.String msg)
           
(package private)  Exp funcMAX(IrList args)
           max(x,y,...) => temp = x; if(temp < y){ temp = y; }
(package private)  Exp funcMIN(IrList args)
           min(x,y,...) => temp = x; if(temp > y){ temp = y; }
(package private)  Exp funcNEAREST(Exp arg)
          int(a+.5) if a>=0 int(a-.5) if a<0
(package private)  void init_intrinsicTable()
           
(package private)  Exp intPowExp(Exp e1, Exp e2)
          x ** y (x,y: Integer) if(y <= 4){ (x * ...) else{ ipow(x,y) }
(package private)  boolean isIntrinsicCall(java.lang.String id)
           
(package private)  Stmt makeAssignStmt(Exp e1, Exp e2)
           
(package private)  void makeComplexCall(java.lang.String name, Exp src, Exp dst)
           
(package private)  Exp makeIntrinsicCall(java.lang.String ident, FirList args)
          Make Exp node for intrinsic function call.
(package private)  Exp makeIntrinsicCallCont(Exp expArg, Exp expArg2, IrList argExps, int index, Node hint, Node hint2)
           
(package private)  Exp makeLibCall(java.lang.String name, Exp pExp, int type)
          Make Exp node for library-function call with one parameter.
(package private)  Exp makeLibCall2(java.lang.String name, Exp pExp1, Exp pExp2, int type)
          Make Exp node for library-function call with two parameters.
(package private)  int searchFuncName(java.lang.String name)
          Search a function name in intrinsicTable.
(package private)  Exp tempVarNode(java.lang.String str, Type type)
           
(package private)  boolean typeCheck(Type type, int expected_type)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

intrinsicTable

static IntrinsicUtility.NameAndType[] intrinsicTable

fHir

FirToHir fHir

hir

HIR hir

sym

Sym sym

fHirUtil

HirUtility fHirUtil

fTypeUtil

TypeUtility fTypeUtil

fDeclMgr

DeclManager fDeclMgr

fESMgr

ExecStmtManager fESMgr

NOT_YET

static final int NOT_YET
See Also:
Constant Field Values

MATH_LIB

static final int MATH_LIB
See Also:
Constant Field Values

MATH_LIB2

static final int MATH_LIB2
See Also:
Constant Field Values

CONV_TO_REAL

static final int CONV_TO_REAL
See Also:
Constant Field Values

CONV_TO_INTEGER

static final int CONV_TO_INTEGER
See Also:
Constant Field Values

CONV_TO_DOUBLE

static final int CONV_TO_DOUBLE
See Also:
Constant Field Values

CONV_TO_COMPLEX

static final int CONV_TO_COMPLEX
See Also:
Constant Field Values

CONV_TO_CHAR

static final int CONV_TO_CHAR
See Also:
Constant Field Values

ABS

static final int ABS
See Also:
Constant Field Values

POWER

static final int POWER
See Also:
Constant Field Values

TRUNCATE

static final int TRUNCATE
See Also:
Constant Field Values

NEAREST

static final int NEAREST
See Also:
Constant Field Values

NEAREST_INT

static final int NEAREST_INT
See Also:
Constant Field Values

LENGTH

static final int LENGTH
See Also:
Constant Field Values

IMAGINARY_PART

static final int IMAGINARY_PART
See Also:
Constant Field Values

CONJUGATE

static final int CONJUGATE
See Also:
Constant Field Values

DIMAGINARY_PART

static final int DIMAGINARY_PART
See Also:
Constant Field Values

DCONJUGATE

static final int DCONJUGATE
See Also:
Constant Field Values

COMPLEX_LIB

static final int COMPLEX_LIB
See Also:
Constant Field Values

SIGN

static final int SIGN
See Also:
Constant Field Values

DIM

static final int DIM
See Also:
Constant Field Values

DPROD

static final int DPROD
See Also:
Constant Field Values

MOD

static final int MOD
See Also:
Constant Field Values

MAX

static final int MAX
See Also:
Constant Field Values

MAX_R

static final int MAX_R
See Also:
Constant Field Values

MAX_I

static final int MAX_I
See Also:
Constant Field Values

MIN

static final int MIN
See Also:
Constant Field Values

MIN_R

static final int MIN_R
See Also:
Constant Field Values

MIN_I

static final int MIN_I
See Also:
Constant Field Values

INDEX

static final int INDEX
See Also:
Constant Field Values

TYPE_NO

static final int TYPE_NO
See Also:
Constant Field Values

TYPE_REAL

static final int TYPE_REAL
See Also:
Constant Field Values

TYPE_DOUBLE

static final int TYPE_DOUBLE
See Also:
Constant Field Values

TYPE_INT

static final int TYPE_INT
See Also:
Constant Field Values

TYPE_COMPLEX

static final int TYPE_COMPLEX
See Also:
Constant Field Values

TYPE_DCOMPLEX

static final int TYPE_DCOMPLEX
See Also:
Constant Field Values

TYPE_CHARACTER

static final int TYPE_CHARACTER
See Also:
Constant Field Values

TYPE_FLOAT

static final int TYPE_FLOAT
See Also:
Constant Field Values

TYPE_NUMBER

static final int TYPE_NUMBER
See Also:
Constant Field Values

TYPE_FC

static final int TYPE_FC
See Also:
Constant Field Values

TYPE_FI

static final int TYPE_FI
See Also:
Constant Field Values

TYPE_ONE_OR_TWO

static final int TYPE_ONE_OR_TWO
See Also:
Constant Field Values

TYPE_OVER_TWO

static final int TYPE_OVER_TWO
See Also:
Constant Field Values
Constructor Detail

IntrinsicUtility

public IntrinsicUtility(FirToHir fth)
Method Detail

searchFuncName

int searchFuncName(java.lang.String name)
Search a function name in intrinsicTable.

Parameters:
name -
Returns:
index of intrinsicTable if intrinsic function name else -1

isIntrinsicCall

boolean isIntrinsicCall(java.lang.String id)

makeIntrinsicCall

Exp makeIntrinsicCall(java.lang.String ident,
                      FirList args)
Make Exp node for intrinsic function call.

Returns:
intrinsic function call Exp.

makeIntrinsicCallCont

Exp makeIntrinsicCallCont(Exp expArg,
                          Exp expArg2,
                          IrList argExps,
                          int index,
                          Node hint,
                          Node hint2)

tempVarNode

Exp tempVarNode(java.lang.String str,
                Type type)

makeAssignStmt

Stmt makeAssignStmt(Exp e1,
                    Exp e2)

intPowExp

Exp intPowExp(Exp e1,
              Exp e2)
x ** y (x,y: Integer) if(y <= 4){ (x * ...) else{ ipow(x,y) }


complexPowExp

Exp complexPowExp(Exp e1,
                  Exp e2)

funcNEAREST

Exp funcNEAREST(Exp arg)
int(a+.5) if a>=0 int(a-.5) if a<0


funcMAX

Exp funcMAX(IrList args)
    max(x,y,...)
    =>
    temp = x;
    if(temp < y){
      temp = y;
    }

Returns:
Exp(temp)

funcMIN

Exp funcMIN(IrList args)
    min(x,y,...)
    =>
    temp = x;
    if(temp > y){
      temp = y;
    }

Returns:
Exp(temp)

makeLibCall

Exp makeLibCall(java.lang.String name,
                Exp pExp,
                int type)
Make Exp node for library-function call with one parameter. A -> A

Parameters:
name - library function name
pExp - actual parameter
type - return type
Returns:
library function call Exp.

makeLibCall2

Exp makeLibCall2(java.lang.String name,
                 Exp pExp1,
                 Exp pExp2,
                 int type)
Make Exp node for library-function call with two parameters. A -> A -> A

Parameters:
name - library function name
type - return type
Returns:
library function call.

convertTo

Exp convertTo(Exp exp,
              Type type)

makeComplexCall

void makeComplexCall(java.lang.String name,
                     Exp src,
                     Exp dst)

typeCheck

boolean typeCheck(Type type,
                  int expected_type)

argsTypeCheck

boolean argsTypeCheck(IntrinsicUtility.NameAndType nat,
                      IrList argsExps)

init_intrinsicTable

void init_intrinsicTable()

dp

void dp(java.lang.String msg)