public class SPARCMacroAssembler extends SPARCAssembler
| Modifier and Type | Class and Description |
|---|---|
class |
SPARCMacroAssembler.ScratchRegister |
static class |
SPARCMacroAssembler.Sethix
This instruction is like sethi but for 64-bit values.
|
static class |
SPARCMacroAssembler.Setx |
SPARCAssembler.Annul, SPARCAssembler.Asi, SPARCAssembler.BitKey, SPARCAssembler.BitKeyIndex, SPARCAssembler.BitSpec, SPARCAssembler.Bpcc, SPARCAssembler.Bpr, SPARCAssembler.Br, SPARCAssembler.BranchPredict, SPARCAssembler.CBCond, SPARCAssembler.CC, SPARCAssembler.CompositeBitSpec, SPARCAssembler.ConditionFlag, SPARCAssembler.ContinousBitSpec, SPARCAssembler.ControlTransferOp, SPARCAssembler.Fcn, SPARCAssembler.MembarMask, SPARCAssembler.Op2Op, SPARCAssembler.Op2s, SPARCAssembler.Op3Op, SPARCAssembler.Op3s, SPARCAssembler.Opfs, SPARCAssembler.Ops, SPARCAssembler.RCondition, SPARCAssembler.Sethi, SPARCAssembler.SPARCOpAssembler.InstructionCounter, Assembler.LabelHint| Modifier and Type | Field and Description |
|---|---|
private boolean |
immediateConstantLoad
Use ld [reg+simm13], reg for loading constants (User has to make sure, that the size of the
constant table does not exceed simm13).
|
private int |
nextFreeScratchRegister |
private static SPARCAddress |
Placeholder
A sentinel value used as a place holder in an instruction stream for an address that will be
patched.
|
private SPARCMacroAssembler.ScratchRegister[] |
scratchRegister |
BPCC, BPR, BR, BRANCH, CALL, CBCOND, CCR_ICC_SHIFT, CCR_V_SHIFT, CCR_XCC_SHIFT, D10HI_MASK, D10HI_SHIFT, D10LO_MASK, D10LO_SHIFT, D16HI_MASK, D16HI_SHIFT, D16LO_MASK, D16LO_SHIFT, DISP19_MASK, DISP19_SHIFT, DISP22_MASK, DISP22_SHIFT, FBPCC, LDST, OP2_MASK, OP2_SHIFT, OP3, PC_RETURN_OFFSET, SETHI| Constructor and Description |
|---|
SPARCMacroAssembler(TargetDescription target,
RegisterConfig registerConfig) |
| Modifier and Type | Method and Description |
|---|---|
void |
align(int modulus) |
void |
cas(Register rs1,
Register rs2,
Register rd) |
void |
casx(Register rs1,
Register rs2,
Register rd) |
void |
clr(Register dst) |
void |
clrb(SPARCAddress addr) |
void |
clrh(SPARCAddress addr) |
void |
clrx(SPARCAddress addr) |
void |
cmp(Register rs1,
int simm13) |
void |
cmp(Register rs1,
Register rs2) |
void |
dec(int simm13,
Register rd) |
void |
dec(Register rd) |
void |
ensureUniquePC()
Emits a NOP instruction to advance the current PC.
|
AbstractAddress |
getPlaceholder()
Returns a target specific placeholder address that can be used for code patching.
|
SPARCMacroAssembler.ScratchRegister |
getScratchRegister() |
boolean |
isImmediateConstantLoad() |
void |
jmp(Label l) |
void |
jmp(Register rd) |
void |
jmp(SPARCAddress address) |
AbstractAddress |
makeAddress(Register base,
int displacement)
This is used by the CompilationResultBuilder to convert a
StackSlot to an
AbstractAddress. |
void |
mov(int simm13,
Register rd) |
void |
mov(Register rs,
Register rd) |
void |
neg(Register rd) |
void |
neg(Register rs1,
Register rd) |
void |
not(Register rd) |
void |
not(Register rs1,
Register rd) |
protected void |
patchJumpTarget(int branch,
int branchTarget) |
void |
restoreWindow() |
void |
ret() |
void |
setImmediateConstantLoad(boolean immediateConstantLoad) |
void |
signx(Register rd) |
void |
signx(Register rs,
Register rd) |
add, add, addc, addc, addcc, addcc, and, and, andcc, andcc, andn, andn, andncc, andncc, bicc, bpcc, bpr, call, casa, casxa, cbcondw, cbcondw, cbcondx, cbcondx, fabsd, fabss, faddd, faddq, fadds, fandd, fbcc, fbpcc, fcmp, fdivd, fdivs, fdtoi, fdtos, fdtox, fitod, fitos, flushw, fmovd, fmovdcc, fmovs, fmovscc, fmt, fmt00, fmt10, fmuld, fmuls, fnegd, fnegs, fpadd32, fsmuld, fsqrtd, fsqrts, fsrc2d, fsrc2s, fstod, fstoi, fstox, fsubd, fsubs, fxtod, fxtos, fzerod, fzeros, getBits, getInstructionCounter, getSPARCOp, hasFeature, hi22, illtrap, insertNopAfterCBCond, isCBCond, isImm, isSimm, isSimm10, isSimm11, isSimm11, isSimm13, isSimm13, isSimm13, isSimm5, isWordDisp30, jmpl, jmpl, ld, ld, ld, lddf, ldf, ldsb, ldsh, ldsw, ldub, lduh, lduw, lduwa, ldx, ldxa, lo10, maxSimm, membar, minSimm, movcc, movcc, movdtox, movstosw, movstouw, movwtos, movxtod, mulx, mulx, nop, op3, op3, or, or, patchAddImmediate, patchUnbound, peephole, popc, popc, prefetch, rdpc, restore, save, save, sdivx, sdivx, sethi, simm, sll, sll, sllx, sllx, sra, sra, srax, srax, srl, srl, srlx, srlx, st, stb, stdf, stf, sth, stw, stx, sub, sub, subcc, subcc, ta, tcc, udivx, udivx, umulxhi, wrccr, wrccr, xnor, xnor, xor, xor, xorcc, xorccbind, close, createLabelName, emitByte, emitByte, emitInt, emitInt, emitLong, emitLong, emitShort, emitShort, emitString, emitString, emitString0, getByte, getInt, getShort, nameOf, position, requestLabelHint, resetprivate static final SPARCAddress Placeholder
private final SPARCMacroAssembler.ScratchRegister[] scratchRegister
private int nextFreeScratchRegister
private boolean immediateConstantLoad
public SPARCMacroAssembler(TargetDescription target, RegisterConfig registerConfig)
public void setImmediateConstantLoad(boolean immediateConstantLoad)
immediateConstantLoadprotected final void patchJumpTarget(int branch, int branchTarget)
patchJumpTarget in class Assemblerpublic AbstractAddress makeAddress(Register base, int displacement)
AssemblerStackSlot to an
AbstractAddress.makeAddress in class Assemblerpublic AbstractAddress getPlaceholder()
AssemblergetPlaceholder in class Assemblerpublic final void ensureUniquePC()
AssemblerensureUniquePC in class Assemblerpublic void clrb(SPARCAddress addr)
public void clrh(SPARCAddress addr)
public void clrx(SPARCAddress addr)
public void jmp(SPARCAddress address)
public void restoreWindow()
public void ret()
public boolean isImmediateConstantLoad()
public SPARCMacroAssembler.ScratchRegister getScratchRegister()