|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectdspl.backend.ArithmaticInstructionProcessor
dspl.backend.x86.X86ArithmaticInstructionrProcessor
public class X86ArithmaticInstructionrProcessor
x86 Implementation of the ArithmaticInstructionProcessor
| Constructor Summary | |
|---|---|
X86ArithmaticInstructionrProcessor()
|
|
| Method Summary | |
|---|---|
void |
processAddition(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg)
Convert an addition operation into the necessary x86 asm instruction(s) |
void |
processAssignment(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg)
x86 assignment. |
private void |
processAtomicFPInstruction(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg,
java.lang.String fpOp)
|
private void |
processAtomicInstruction(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg,
java.lang.String atomicOp,
boolean explicitlyStateEax)
|
void |
processConversion(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg)
Conversion of natural numbers (ubyte,byte,int,uint) is based upon gcc output... |
void |
processConvolution(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg)
Process a Convolution Operation |
void |
processDivision(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg)
Process a Divison Operation |
void |
processMultiplication(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg)
Process a Multiplication Operation |
private void |
processNonVectorizedArrayArithmatic(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg,
java.lang.String arithInst,
boolean explicitlyStateEax)
Helper function to process arithmatic instructions on arrays which cannot be performed with vectorized instructions and thus require a loop-based single value computation for each element in the arrays |
void |
processSubtraction(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg)
Process a Subtraction Operation |
private void |
processVectorFPDiv(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg)
|
private void |
processVectorInstruction(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg,
java.lang.String sseOp)
Code Overview: Example: "iC = iA + iB;" where all three are integer arrays of same length. |
| Methods inherited from class dspl.backend.ArithmaticInstructionProcessor |
|---|
processArithmaticInstructor |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public X86ArithmaticInstructionrProcessor()
| Method Detail |
|---|
private void processVectorInstruction(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg,
java.lang.String sseOp)
instr - st - afg - sseOp -
private void processVectorFPDiv(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg)
private void processAtomicInstruction(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg,
java.lang.String atomicOp,
boolean explicitlyStateEax)
private void processAtomicFPInstruction(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg,
java.lang.String fpOp)
private void processNonVectorizedArrayArithmatic(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg,
java.lang.String arithInst,
boolean explicitlyStateEax)
instr - st - afg - instruction - explicitlyStateEax - For some instructions (for division its mandatory, for mul its optional), it is implicit and forced that %eax is used as the source for the op, for others subtraction, both source and dest must be explicitly stated
public void processAddition(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg)
processAddition in class ArithmaticInstructionProcessor
public void processAssignment(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg)
Many seperate cases that need to be handled, based on dest's and arg's element size (array or atomic),
argument type (constant or another variable).
processAssignment in class ArithmaticInstructionProcessor
public void processConversion(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg)
processConversion in class ArithmaticInstructionProcessor
public void processConvolution(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg)
ArithmaticInstructionProcessor
processConvolution in class ArithmaticInstructionProcessor
public void processDivision(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg)
ArithmaticInstructionProcessor
processDivision in class ArithmaticInstructionProcessor
public void processMultiplication(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg)
ArithmaticInstructionProcessor
processMultiplication in class ArithmaticInstructionProcessor
public void processSubtraction(ArithmaticInstruction instr,
SymbolTable st,
AssemblyfileGenerator afg)
ArithmaticInstructionProcessor
processSubtraction in class ArithmaticInstructionProcessor
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||