Register Names

All registers have predefined names, which are listed in Appendix A. Predefined register names are not case-sensitive. You can assign new register names to some of the predefined registers with a register assignment statement, or a rotating register directive. See the Assignment Statements, Equate Statements, and Rotating Register Directives sections, for more details. Registers that use the value of a specified general-purpose register as an index into the register file consist of the register file name followed by the name of a general register enclosed in brackets, such as pmc[r].

The assembler determines the register type according to the form of its name, as shown in the following table. Some registers appear in name and number form. For example, ar.bsp is the name form of an application register, which also has a number form, ar17.

Register Number and Name Forms

Register Form

Register Name

Register Type

Number form

r0 - r127

in0 - in95

loc0 - loc95

out0 - out95

f0 - f127

p0 - p63

b0 - b7

ar0 - ar127

cr0 - cr127

General-purpose 64-bit registers

 

 

 

Floating-point registers

Predicate registers (1-bit)

Branch registers

Application registers

Control registers

Name form

e.g. ar.bsp

e.g. cr.dcr

pr

pr.rot

ip

psr.l

psr.um

Named application registers

Named control registers

All-predicate register (64-bits)

All rotating registers

Instruction pointer

Processor-status registers

Indirect file registers

e.g. pmc[r2]

Register file with general-purpose register as index.

User-defined registers

 

user-name

Registers assigned new names with assignment statements or rotating register directives.