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
|
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. |