Lines Matching +full:odd +full:- +full:numbered

1 //===-- ARMRegisterInfo.td - ARM Register defs -------------*- tablegen -*-===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
11 //===----------------------------------------------------------------------===//
13 //===----------------------------------------------------------------------===//
15 // Registers are identified with 4-bit ID numbers.
21 // All bits of ARM registers with sub-registers are covered by sub-registers.
87 // These require 32-bit instructions.
119 // Aliases of the F* registers used to hold 64-bit fp values (doubles)
157 // Advanced SIMD (NEON) defines 16 quad-word aliases
194 // Special Registers - only available in privileged mode.
222 // r7 == Frame Pointer (thumb-style backtraces)
224 // r11 == Frame Pointer (arm-style backtraces)
243 // This is used for pseudo-instructions that are actually implemented using a
313 // GPRsp - Only the SP is legal. Used by Thumb1 instructions that want the
322 // GPRlr - Only LR is legal. Used by ARMv8.1-M Low Overhead Loop instructions
329 // via the BadReg() pseudo-code description.
350 // Thumb registers are R0-R7 normally. Some instructions can still use
356 // Thumb registers R0-R7 and the PC. Some instructions like TBB or THH allow
360 // The high registers in thumb mode, R8-R15.
365 // For tail calls, we can't use callee-saved registers, as they are restored
392 "operand must be an odd-numbered register in range [r1,r11]";
400 let DiagnosticString = "operand must be an even-numbered register";
405 let CopyCost = -1; // Don't allow copying of status registers.
411 // let CopyCost = -1; // Don't allow copying of status registers.
420 // to avoid partial-write dependencies on D or Q (depending on platform)
446 // Subset of SPR which can be used as a source of NEON scalars for 16-bit
452 // Scalar double precision floating point / generic 64-bit vector register
455 // is double-word alignment though.
458 // Allocate non-VFP2 registers D16-D31 first, and prefer even registers on
476 // 32-bit SPR subregs).
482 // Subset of DPR which can be used as a source of NEON scalars for 16-bit
489 // Generic 128-bit vector register class.
492 // Allocate non-VFP2 aliases Q8-Q15 first.
500 // Subset of QPR that have 32-bit SPR subregs.
512 // MVE 128-bit vector register class. This class is only really needed for
518 // Pseudo-registers representing odd-even pairs of D registers. The even-odd
527 // Use the Q registers for the even-odd pairs.
530 // Allocate starting at non-VFP2 registers D16-D31 first.
531 // Prefer even-odd pairs as they are easier to copy.
539 // Pseudo-registers representing even-odd pairs of GPRs from R1 to R13/SP.
540 // These are needed by instructions (e.g. ldrexd/strexd) requiring even-odd GPRs.
548 // Register class representing a pair of even-odd GPRs.
553 // Register class representing a pair of even-odd GPRs, except (R12, SP).
558 // Pseudo-registers representing 3 consecutive D registers.
569 // Pseudo 256-bit registers to represent pairs of Q registers. These should
574 // Pseudo 256-bit vector register class to model pairs of Q registers
577 // Allocate non-VFP2 aliases first.
582 // Same as QQPR but for MVE, containing the 7 register pairs made up from Q0-Q7.
596 // Pseudo 512-bit registers to represent four consecutive Q registers.
600 // Pseudo 512-bit vector register class to model 4 consecutive Q registers
603 // Allocate non-VFP2 aliases first.
608 // Same as QQPR but for MVE, containing the 5 register quads made up from Q0-Q7.
612 // Pseudo-registers representing 2-spaced consecutive D registers.