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.SPARCOp
Assembler.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, xorcc
bind, close, createLabelName, emitByte, emitByte, emitInt, emitInt, emitLong, emitLong, emitShort, emitShort, emitString, emitString, emitString0, getByte, getInt, getShort, nameOf, position, requestLabelHint, reset
private 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)
immediateConstantLoad
protected final void patchJumpTarget(int branch, int branchTarget)
patchJumpTarget
in class Assembler
public AbstractAddress makeAddress(Register base, int displacement)
Assembler
StackSlot
to an
AbstractAddress
.makeAddress
in class Assembler
public AbstractAddress getPlaceholder()
Assembler
getPlaceholder
in class Assembler
public final void ensureUniquePC()
Assembler
ensureUniquePC
in class Assembler
public 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()