scale.backend.sparc
Class SparcRegisterSet

java.lang.Object
  extended by scale.backend.RegisterSet
      extended by scale.backend.sparc.SparcRegisterSet
Direct Known Subclasses:
SparcV8RegisterSet, SparcV9RegisterSet

public abstract class SparcRegisterSet
extends RegisterSet

This class describes the register set of the Sparc.

$Id: SparcRegisterSet.java,v 1.13 2005-02-07 21:27:39 burrill Exp $

Copyright 2005 by the Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.

The Sparc has 96 programmable registers. The registers 0..31 are used for integer values and addresses. This includes the stack pointer and other housekeeping registers. Registers 0 contains a hardwired 0 value.

Registers 32 through 63 are used for single precision floating point values. Registers 64 through 95 are used for double precision floating point values. Registers 96 through 111 are used for quad precision floating point values. Note that registers [32:63] overlap registers [64:79] and [96:103]. This is handled in register allocation by the rangebegin() and rangeEnd() methods.


Field Summary
static int D0_REG
          Floating point double-precision register %d0.
static int D2_REG
          Floating point double-precision register %d2.
static int F0_REG
          Floating point register %f0.
static int F1_REG
          Floating point register %f1.
static int FP_REG
          Frame pointer register.
static int G0_REG
          Integer global register %g0.
static int G1_REG
          Integer global register %g1.
static int G2_REG
          Integer global register %g2.
static int G3_REG
          Integer global register %g3.
static int G4_REG
          Integer global register %g4.
static int G5_REG
          Integer global register %g5.
static int G6_REG
          Integer global register %g6.
static int G7_REG
          Integer global register %g7.
static int I0_REG
          Integer global register %i0.
static int I1_REG
          Integer global register %i1.
static int I2_REG
          Integer global register %i2.
static int I3_REG
          Integer global register %i3.
static int I4_REG
          Integer global register %i4.
static int I5_REG
          Integer global register %i5.
static int I6_REG
          Integer global register %i6.
static int I7_REG
          Integer global register %i7.
static int L0_REG
          Integer global register %l0.
static int L1_REG
          Integer global register %l1.
static int L2_REG
          Integer global register %l2.
static int L3_REG
          Integer global register %l3.
static int L4_REG
          Integer global register %l4.
static int L5_REG
          Integer global register %l5.
static int L6_REG
          Integer global register %l6.
static int L7_REG
          Integer global register %l7.
static int O0_REG
          Integer global register %o0.
static int O1_REG
          Integer global register %o1.
static int O2_REG
          Integer global register %o2.
static int O3_REG
          Integer global register %o3.
static int O4_REG
          Integer global register %o4.
static int O5_REG
          Integer global register %o5.
static int O6_REG
          Integer global register %o6.
static int O7_REG
          Integer global register %o7.
static int Q0_REG
          Floating point quad-precision register %q0.
static int Q2_REG
          Floating point quad-precision register %q4.
static int SP_REG
          Stack pointer register
 
Fields inherited from class scale.backend.RegisterSet
ADRREG, AFIREG, AIREG, checkMask, CNTREG, DBLEREG, FIREG, FLTREG, INTREG, nextRegister, PAIRREG, QUADREG, RDREG, registers, sizeMask, SPCREG, typeMask
 
Constructor Summary
SparcRegisterSet(short[] actualRegisters)
           
 
Method Summary
 int numAllocatableRegisters()
          Return the number of unique registers that can hold programmer values.
 int registerSize(int reg)
          Return the size of the register in bytes.
 int tempRegisterType(Type type, long bs)
          Return the register type with the size information added.
 
Methods inherited from class scale.backend.RegisterSet
actualRegister, adrRegister, compatible, compatibleNS, continueRegister, display, doubleRegister, floatRegister, getCalleeSaves, getCalleeUses, getPreferredOrder, getResultRegister, getType, initialize, intRegister, isAdrType, isContinueType, isDoubleType, isFloatType, isIntType, isModType, isPairType, isQuadType, isReadOnlyType, isSpecialType, lastRegister, modRegister, newTempRegister, numContiguousRegisters, numContiguousType, numRealRegisters, numRegisters, pairRegister, quadRegister, rangeBegin, rangeEnd, readOnlyRegister, registerName, setResultRegister, specialRegister, tempRegister, tempRegisterType, useContiguous, virtualRegister
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

G0_REG

public static final int G0_REG
Integer global register %g0.

See Also:
Constant Field Values

G1_REG

public static final int G1_REG
Integer global register %g1.

See Also:
Constant Field Values

G2_REG

public static final int G2_REG
Integer global register %g2.

See Also:
Constant Field Values

G3_REG

public static final int G3_REG
Integer global register %g3.

See Also:
Constant Field Values

G4_REG

public static final int G4_REG
Integer global register %g4.

See Also:
Constant Field Values

G5_REG

public static final int G5_REG
Integer global register %g5.

See Also:
Constant Field Values

G6_REG

public static final int G6_REG
Integer global register %g6.

See Also:
Constant Field Values

G7_REG

public static final int G7_REG
Integer global register %g7.

See Also:
Constant Field Values

O0_REG

public static final int O0_REG
Integer global register %o0.

See Also:
Constant Field Values

O1_REG

public static final int O1_REG
Integer global register %o1.

See Also:
Constant Field Values

O2_REG

public static final int O2_REG
Integer global register %o2.

See Also:
Constant Field Values

O3_REG

public static final int O3_REG
Integer global register %o3.

See Also:
Constant Field Values

O4_REG

public static final int O4_REG
Integer global register %o4.

See Also:
Constant Field Values

O5_REG

public static final int O5_REG
Integer global register %o5.

See Also:
Constant Field Values

O6_REG

public static final int O6_REG
Integer global register %o6.

See Also:
Constant Field Values

O7_REG

public static final int O7_REG
Integer global register %o7.

See Also:
Constant Field Values

L0_REG

public static final int L0_REG
Integer global register %l0.

See Also:
Constant Field Values

L1_REG

public static final int L1_REG
Integer global register %l1.

See Also:
Constant Field Values

L2_REG

public static final int L2_REG
Integer global register %l2.

See Also:
Constant Field Values

L3_REG

public static final int L3_REG
Integer global register %l3.

See Also:
Constant Field Values

L4_REG

public static final int L4_REG
Integer global register %l4.

See Also:
Constant Field Values

L5_REG

public static final int L5_REG
Integer global register %l5.

See Also:
Constant Field Values

L6_REG

public static final int L6_REG
Integer global register %l6.

See Also:
Constant Field Values

L7_REG

public static final int L7_REG
Integer global register %l7.

See Also:
Constant Field Values

I0_REG

public static final int I0_REG
Integer global register %i0.

See Also:
Constant Field Values

I1_REG

public static final int I1_REG
Integer global register %i1.

See Also:
Constant Field Values

I2_REG

public static final int I2_REG
Integer global register %i2.

See Also:
Constant Field Values

I3_REG

public static final int I3_REG
Integer global register %i3.

See Also:
Constant Field Values

I4_REG

public static final int I4_REG
Integer global register %i4.

See Also:
Constant Field Values

I5_REG

public static final int I5_REG
Integer global register %i5.

See Also:
Constant Field Values

I6_REG

public static final int I6_REG
Integer global register %i6.

See Also:
Constant Field Values

I7_REG

public static final int I7_REG
Integer global register %i7.

See Also:
Constant Field Values

F0_REG

public static final int F0_REG
Floating point register %f0.

See Also:
Constant Field Values

F1_REG

public static final int F1_REG
Floating point register %f1.

See Also:
Constant Field Values

FP_REG

public static final int FP_REG
Frame pointer register.

See Also:
Constant Field Values

SP_REG

public static final int SP_REG
Stack pointer register

See Also:
Constant Field Values

D0_REG

public static final int D0_REG
Floating point double-precision register %d0.

See Also:
Constant Field Values

D2_REG

public static final int D2_REG
Floating point double-precision register %d2.

See Also:
Constant Field Values

Q0_REG

public static final int Q0_REG
Floating point quad-precision register %q0.

See Also:
Constant Field Values

Q2_REG

public static final int Q2_REG
Floating point quad-precision register %q4.

See Also:
Constant Field Values
Constructor Detail

SparcRegisterSet

public SparcRegisterSet(short[] actualRegisters)
Method Detail

registerSize

public int registerSize(int reg)
Return the size of the register in bytes.

Specified by:
registerSize in class RegisterSet

numAllocatableRegisters

public int numAllocatableRegisters()
Return the number of unique registers that can hold programmer values.

Specified by:
numAllocatableRegisters in class RegisterSet
Returns:
the number of unique registers that can hold programmer values.

tempRegisterType

public int tempRegisterType(Type type,
                            long bs)
Return the register type with the size information added.

Specified by:
tempRegisterType in class RegisterSet
Parameters:
type - is the type required
bs - is the size required