|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcoins.backend.gen.CodeGenerator
coins.backend.gen.CodeGenerator_arm
| Nested Class Summary | |
(package private) class |
CodeGenerator_arm.Arm
|
(package private) static class |
CodeGenerator_arm.ArmAttr
Arm's function attribute |
(package private) class |
CodeGenerator_arm.ArmConst
Arm constant |
(package private) class |
CodeGenerator_arm.JumpcEntry
|
(package private) class |
CodeGenerator_arm.JumpcKey
|
(package private) class |
CodeGenerator_arm.PeepHoleOp
|
(package private) class |
CodeGenerator_arm.RewrState
State label for rewriting engine. |
(package private) class |
CodeGenerator_arm.State
State label for instruction selection engine. |
| Nested classes inherited from class coins.backend.gen.CodeGenerator |
CodeGenerator.FunctionAttr, CodeGenerator.LexpToString, CodeGenerator.Match |
| Field Summary | |
(package private) static int |
CALLEE_SAVE
|
(package private) java.util.Map |
conditionalExec
|
(package private) CodeGenerator_arm.PeepHoleOp |
decompAdd
|
(package private) CodeGenerator_arm.PeepHoleOp |
decompBic
|
(package private) int |
decompMax
|
(package private) CodeGenerator_arm.PeepHoleOp |
decompMov
|
(package private) CodeGenerator_arm.PeepHoleOp |
decompOr
|
(package private) static int |
F32
|
(package private) static int |
F64
|
(package private) static java.util.Map |
flipCc
|
(package private) static int |
I16
|
(package private) static int |
I32
|
(package private) static int |
I64
|
(package private) static int |
I8
|
(package private) boolean |
isSimulate
|
(package private) java.util.Map |
jumpcInfo
|
(package private) static int |
MAXREGPARAM
|
(package private) static java.lang.String |
NEED_OFFSET_REWRITE
|
(package private) static java.lang.String[] |
paramRegv
|
(package private) ImList |
regCallClobbers
|
(package private) static int |
REGWIDTH
|
(package private) CodeGenerator_arm.State[] |
stateVec
State vector for labeling LIR nodes. |
(package private) LocalTransformer |
testJumpcTrig
Examine conditional jump |
(package private) int |
tmpCnt
|
(package private) CodeGenerator_arm.ArmConst |
ximm
decompose immediate |
| Fields inherited from class coins.backend.gen.CodeGenerator |
addrType, asmWriter, convention, debOut, disableRewrite, F128, func, funcAttrTbl, INLINECOPYUNIT, lexpConv, lir, localEarlyRewritingTrig, localLateRewritingTrig, machineName, machineParams, module, optSpeed, ProcessFramesTrig, root, typeParamWord |
| Constructor Summary | |
CodeGenerator_arm()
Create code generator engine. |
|
| Method Summary | |
(package private) ImList |
addCc(java.lang.Object cc,
ImList inst)
|
(package private) boolean |
checkBody(BasicBlk bb)
|
(package private) boolean |
checkPred(BiLink q,
BasicBlk bb)
|
(package private) boolean |
checkSucc(BiLink p,
BasicBlk bb)
|
(package private) boolean |
checkTarget(Label lab,
BiLink q)
|
(package private) ImList |
clcvnClobbers()
Return clobber list |
(package private) LirNode |
clcvnParamMem(int type,
int location,
boolean caller)
Return parameter memory |
(package private) int |
clcvnParamOffset(int location)
Return offset of parameter (callee side) |
(package private) LirNode |
clcvnParamReg(int type,
int location,
boolean caller)
Return parameter register |
(package private) LirNode |
clcvnParamWord(int type,
int location,
boolean caller)
Return parameter word |
(package private) LirNode |
clcvnPartialWord(LirNode exp,
int part)
Return partial word of integer object |
(package private) void |
clcvnPassFloatRegMem(int location,
LirNode arg,
BiLink memp,
BiLink regp,
BiList alist)
Pass floating point number to register/ register and memory. |
(package private) int |
clcvnRegLimit()
Return number of registers multiply word-size. |
(package private) LirNode |
clcvnReturnValue(int type)
Return return register |
(package private) LirNode |
clcvnSetPartialWord(LirNode lhs,
int part,
LirNode rhs)
Set partial word of integer object |
(package private) boolean |
clcvnStructReturnAsFirst()
Return true if struct return address |
(package private) java.lang.String |
defaultRegsetForType(int type)
Return default register set for type. |
(package private) void |
emitAlign(java.io.PrintWriter out,
int align)
Emit data align |
(package private) java.lang.String |
emitAsmCode(java.lang.String format,
ImList args)
Emit asm instruction. |
(package private) void |
emitBeginningOfSegment(java.io.PrintWriter out,
java.lang.String segment)
Emit beginning of segment |
(package private) void |
emitCodeLabel(java.io.PrintWriter out,
java.lang.String label)
Emit label for code |
(package private) void |
emitComment(java.io.PrintWriter out,
java.lang.String comment)
print comment in assembly language. |
(package private) void |
emitCommon(java.io.PrintWriter out,
SymStatic symbol,
int bytes)
Emit data common |
(package private) void |
emitData(java.io.PrintWriter out,
int type,
LirNode node)
Emit data |
(package private) void |
emitDataLabel(java.io.PrintWriter out,
java.lang.String label)
Emit label for data |
(package private) void |
emitEndOfSegment(java.io.PrintWriter out,
java.lang.String segment)
Emit end of segment |
(package private) void |
emitLinkage(java.io.PrintWriter out,
SymStatic symbol)
Emit linkage information of symbol |
(package private) java.lang.String |
emitLir(LirNode node)
Expand emit-macro for LirNode. |
(package private) java.lang.String |
emitList(ImList form,
boolean topLevel)
Expand emit-macro for list form. |
(package private) void |
emitZeros(java.io.PrintWriter out,
int bytes)
Emit data zeros |
(package private) boolean |
equalArg(LirNode x,
LirNode y)
Return true if variable x and y are same. |
(package private) void |
examineJUMPC(BiLink p,
LirNode node)
|
(package private) java.lang.Object |
expandBuildMacro(ImList form)
Expand building-macro. |
(package private) int |
getCost1(LirNode t,
int goal)
Return the cost for LIR node t and goal nonterminal goal. |
(package private) int |
getCost2(LirNode t,
int goal)
|
(package private) Rule |
getRule(LirNode t,
int goal)
Return the chosen rule for LIR node t and goal nonterminal goal. |
(package private) void |
initializeMachineDep()
Do Machine-dependent initialization (subclass may override this). |
(package private) void |
initLabeling(LirFactory lir)
Initialize for labeling. |
(package private) void |
initRewriteLabeling()
Initialization for rewriting. |
(package private) java.io.OutputStream |
insertPostProcessor(java.io.OutputStream out)
Run Literal and Branch post processor after generating assembly code. |
(package private) boolean |
isConv(int op)
|
(package private) boolean |
isImm8r(long val)
|
(package private) boolean |
isOp(java.lang.String op,
ImList inst)
|
(package private) boolean |
isVirtual(LirNode node)
|
(package private) boolean |
isXimm(long val)
|
(package private) java.lang.String |
jmac1(java.lang.String x)
|
(package private) java.lang.String |
jmac10(java.lang.String x,
java.lang.String y)
|
(package private) java.lang.String |
jmac11(java.lang.String x,
java.lang.String y)
|
(package private) java.lang.String |
jmac12(java.lang.String x,
java.lang.String y)
|
(package private) java.lang.String |
jmac13(java.lang.String x)
|
(package private) java.lang.String |
jmac14(java.lang.String x)
|
(package private) java.lang.Object |
jmac15(java.lang.Object x)
|
(package private) java.lang.Object |
jmac16(java.lang.Object x)
|
(package private) java.lang.Object |
jmac17(java.lang.Object x)
|
(package private) java.lang.Object |
jmac18(java.lang.Object x)
|
(package private) java.lang.String |
jmac19(java.lang.String x)
|
(package private) java.lang.String |
jmac2(java.lang.String x)
|
(package private) java.lang.String |
jmac20(java.lang.String x)
|
(package private) java.lang.String |
jmac21(java.lang.String x)
|
(package private) java.lang.String |
jmac22(java.lang.String x)
|
(package private) java.lang.String |
jmac23(java.lang.String x,
java.lang.String y)
|
(package private) java.lang.String |
jmac24(java.lang.String x,
java.lang.String y)
|
(package private) java.lang.String |
jmac25(java.lang.String x)
|
(package private) java.lang.String |
jmac26(java.lang.String x)
Return lower half register name. |
(package private) java.lang.String |
jmac27(java.lang.String x)
Return lowest byte register name. |
(package private) java.lang.String |
jmac28(java.lang.Object f)
Generate prologue sequence. |
(package private) java.lang.String |
jmac29(java.lang.Object f,
java.lang.String rettype)
Generate epilogue sequence. |
(package private) java.lang.String |
jmac3(java.lang.String x)
|
(package private) java.lang.String |
jmac30(java.lang.String x)
|
(package private) java.lang.String |
jmac31(java.lang.String x)
|
(package private) java.lang.String |
jmac32(java.lang.String format,
java.lang.Object args)
|
(package private) java.lang.String |
jmac4(java.lang.String x)
|
(package private) java.lang.String |
jmac5(java.lang.String x)
|
(package private) java.lang.String |
jmac6(java.lang.String x)
|
(package private) java.lang.String |
jmac7(java.lang.String x)
|
(package private) java.lang.String |
jmac8(java.lang.String x,
java.lang.String y)
|
(package private) java.lang.String |
jmac9(java.lang.String x,
java.lang.String y)
|
(package private) void |
labelTree(LirNode t)
Label LIR tree t. |
Transformer[] |
lateRewritingSequence()
Return late time pre-rewriting sequence. |
(package private) void |
logop(ImList inst,
BiLink l,
boolean cpl)
|
(package private) int |
makeVaStart(LirNode arg)
Return offset for va_start position. |
(package private) CodeGenerator.FunctionAttr |
newFunctionAttr(Function func)
Prepare new function attribute information. |
(package private) int |
nofBytes(long val)
|
(package private) void |
notifyEndToPostProcessor()
Notify end of assembly to post-processor. |
(package private) java.lang.Object |
nth(ImList l,
int n)
|
(package private) java.lang.String |
op2cc(int op)
|
(package private) void |
peepHoleOpt(BiList list)
Peep-hole optimizer. |
(package private) java.lang.Object |
quiltLir(LirNode node)
Expand building-macro, for LirNode |
(package private) boolean |
rewriteCondExec(BiLink p)
|
(package private) LirNode |
rewriteFrame(LirNode node)
Rewrite FRAME node to target machine form. |
(package private) LirNode |
rewriteTree(LirNode tree,
java.lang.String phase,
BiList pre,
BiList post)
Rewrite L-expression. |
(package private) java.lang.String |
showLabel(LirNode t)
Return label state |
(package private) int |
startNT()
Return start nonterminal symbol. |
(package private) ImList |
toComment(java.lang.String prefix,
ImList inst)
|
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
CodeGenerator_arm.State[] stateVec
boolean isSimulate
final LocalTransformer testJumpcTrig
ImList regCallClobbers
int decompMax
int tmpCnt
java.util.Map conditionalExec
java.util.Map jumpcInfo
static final int I64
static final int I32
static final int I16
static final int I8
static final int F64
static final int F32
static final int MAXREGPARAM
static final int REGWIDTH
static final int CALLEE_SAVE
static final java.lang.String NEED_OFFSET_REWRITE
static final java.lang.String[] paramRegv
static final java.util.Map flipCc
CodeGenerator_arm.ArmConst ximm
CodeGenerator_arm.PeepHoleOp decompMov
CodeGenerator_arm.PeepHoleOp decompAdd
CodeGenerator_arm.PeepHoleOp decompOr
CodeGenerator_arm.PeepHoleOp decompBic
| Constructor Detail |
public CodeGenerator_arm()
| Method Detail |
void initRewriteLabeling()
CodeGenerator
initRewriteLabeling in class CodeGenerator
LirNode rewriteTree(LirNode tree,
java.lang.String phase,
BiList pre,
BiList post)
rewriteTree in class CodeGeneratorjava.lang.String defaultRegsetForType(int type)
defaultRegsetForType in class CodeGeneratorvoid initLabeling(LirFactory lir)
CodeGenerator
initLabeling in class CodeGeneratorjava.lang.String showLabel(LirNode t)
CodeGenerator
showLabel in class CodeGeneratorvoid labelTree(LirNode t)
CodeGenerator
labelTree in class CodeGenerator
Rule getRule(LirNode t,
int goal)
CodeGenerator
getRule in class CodeGenerator
int getCost1(LirNode t,
int goal)
CodeGenerator
getCost1 in class CodeGenerator
int getCost2(LirNode t,
int goal)
getCost2 in class CodeGeneratorint startNT()
CodeGenerator
startNT in class CodeGeneratorjava.lang.Object expandBuildMacro(ImList form)
expandBuildMacro in class CodeGeneratorjava.lang.Object quiltLir(LirNode node)
quiltLir in class CodeGenerator
java.lang.String emitList(ImList form,
boolean topLevel)
emitList in class CodeGeneratorjava.lang.String emitLir(LirNode node)
emitLir in class CodeGeneratorvoid initializeMachineDep()
CodeGenerator
initializeMachineDep in class CodeGeneratorpublic Transformer[] lateRewritingSequence()
lateRewritingSequence in class CodeGenerator
boolean checkPred(BiLink q,
BasicBlk bb)
boolean checkTarget(Label lab,
BiLink q)
boolean checkSucc(BiLink p,
BasicBlk bb)
boolean checkBody(BasicBlk bb)
void examineJUMPC(BiLink p,
LirNode node)
java.io.OutputStream insertPostProcessor(java.io.OutputStream out)
insertPostProcessor in class CodeGeneratorvoid notifyEndToPostProcessor()
CodeGenerator
notifyEndToPostProcessor in class CodeGeneratorCodeGenerator.FunctionAttr newFunctionAttr(Function func)
CodeGenerator
newFunctionAttr in class CodeGeneratorboolean isImm8r(long val)
boolean isXimm(long val)
int nofBytes(long val)
boolean isConv(int op)
boolean equalArg(LirNode x,
LirNode y)
CodeGenerator
equalArg in class CodeGeneratorint makeVaStart(LirNode arg)
int clcvnRegLimit()
clcvnRegLimit in class CodeGenerator
LirNode clcvnParamWord(int type,
int location,
boolean caller)
clcvnParamWord in class CodeGenerator
LirNode clcvnParamReg(int type,
int location,
boolean caller)
clcvnParamReg in class CodeGenerator
LirNode clcvnParamMem(int type,
int location,
boolean caller)
clcvnParamMem in class CodeGeneratorint clcvnParamOffset(int location)
clcvnParamOffset in class CodeGenerator
void clcvnPassFloatRegMem(int location,
LirNode arg,
BiLink memp,
BiLink regp,
BiList alist)
clcvnPassFloatRegMem in class CodeGeneratorLirNode clcvnReturnValue(int type)
clcvnReturnValue in class CodeGenerator
LirNode clcvnPartialWord(LirNode exp,
int part)
clcvnPartialWord in class CodeGenerator
LirNode clcvnSetPartialWord(LirNode lhs,
int part,
LirNode rhs)
clcvnSetPartialWord in class CodeGeneratorImList clcvnClobbers()
clcvnClobbers in class CodeGeneratorboolean clcvnStructReturnAsFirst()
clcvnStructReturnAsFirst in class CodeGeneratorLirNode rewriteFrame(LirNode node)
rewriteFrame in class CodeGeneratorjava.lang.String op2cc(int op)
java.lang.String jmac1(java.lang.String x)
java.lang.String jmac2(java.lang.String x)
java.lang.String jmac3(java.lang.String x)
java.lang.String jmac4(java.lang.String x)
java.lang.String jmac5(java.lang.String x)
java.lang.String jmac6(java.lang.String x)
java.lang.String jmac7(java.lang.String x)
java.lang.String jmac8(java.lang.String x,
java.lang.String y)
java.lang.String jmac9(java.lang.String x,
java.lang.String y)
java.lang.String jmac10(java.lang.String x,
java.lang.String y)
java.lang.String jmac11(java.lang.String x,
java.lang.String y)
java.lang.String jmac12(java.lang.String x,
java.lang.String y)
java.lang.String jmac13(java.lang.String x)
java.lang.String jmac14(java.lang.String x)
java.lang.Object jmac15(java.lang.Object x)
java.lang.Object jmac16(java.lang.Object x)
java.lang.Object jmac17(java.lang.Object x)
java.lang.Object jmac18(java.lang.Object x)
java.lang.String jmac19(java.lang.String x)
java.lang.String jmac20(java.lang.String x)
java.lang.String jmac21(java.lang.String x)
java.lang.String jmac22(java.lang.String x)
java.lang.String jmac23(java.lang.String x,
java.lang.String y)
java.lang.String jmac24(java.lang.String x,
java.lang.String y)
java.lang.String jmac25(java.lang.String x)
java.lang.String jmac26(java.lang.String x)
java.lang.String jmac27(java.lang.String x)
java.lang.String jmac28(java.lang.Object f)
java.lang.String jmac29(java.lang.Object f,
java.lang.String rettype)
java.lang.String jmac30(java.lang.String x)
java.lang.String jmac31(java.lang.String x)
java.lang.String jmac32(java.lang.String format,
java.lang.Object args)
void emitComment(java.io.PrintWriter out,
java.lang.String comment)
CodeGenerator
emitComment in class CodeGenerator
void emitBeginningOfSegment(java.io.PrintWriter out,
java.lang.String segment)
CodeGenerator
emitBeginningOfSegment in class CodeGenerator
void emitEndOfSegment(java.io.PrintWriter out,
java.lang.String segment)
CodeGenerator
emitEndOfSegment in class CodeGenerator
void emitDataLabel(java.io.PrintWriter out,
java.lang.String label)
CodeGenerator
emitDataLabel in class CodeGenerator
void emitCodeLabel(java.io.PrintWriter out,
java.lang.String label)
CodeGenerator
emitCodeLabel in class CodeGenerator
void emitAlign(java.io.PrintWriter out,
int align)
emitAlign in class CodeGenerator
void emitCommon(java.io.PrintWriter out,
SymStatic symbol,
int bytes)
emitCommon in class CodeGenerator
void emitLinkage(java.io.PrintWriter out,
SymStatic symbol)
emitLinkage in class CodeGenerator
void emitZeros(java.io.PrintWriter out,
int bytes)
emitZeros in class CodeGenerator
void emitData(java.io.PrintWriter out,
int type,
LirNode node)
emitData in class CodeGenerator
java.lang.String emitAsmCode(java.lang.String format,
ImList args)
emitAsmCode in class CodeGenerator
ImList addCc(java.lang.Object cc,
ImList inst)
ImList toComment(java.lang.String prefix,
ImList inst)
boolean isOp(java.lang.String op,
ImList inst)
boolean rewriteCondExec(BiLink p)
java.lang.Object nth(ImList l,
int n)
void logop(ImList inst,
BiLink l,
boolean cpl)
void peepHoleOpt(BiList list)
CodeGenerator
peepHoleOpt in class CodeGeneratorboolean isVirtual(LirNode node)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||