Lines Matching refs:reg
99 static const uint16_t kHighRegNumMask = 0x001f; // 0..31 for high reg
106 // Reg is [F][LLLLL], will override any existing shape and use rs_kind.
107 constexpr RegStorage(RegStorageKind rs_kind, int reg)
111 kValid | rs_kind | (reg & kRegTypeMask)) {
119 << "High reg must be in 0..31: " << high_reg, false)
126 // We do not provide a general operator overload for equality of reg storage, as this is
183 static constexpr bool IsFloat(uint16_t reg) {
184 return ((reg & kFloatingPoint) == kFloatingPoint);
187 static constexpr bool IsDouble(uint16_t reg) {
188 return (reg & (kFloatingPoint | k64BitMask)) == (kFloatingPoint | k64Bits);
191 static constexpr bool IsSingle(uint16_t reg) {
192 return (reg & (kFloatingPoint | k64BitMask)) == kFloatingPoint;
195 static constexpr bool Is32Bit(uint16_t reg) {
196 return ((reg & kShapeMask) == k32BitSolo);
199 static constexpr bool Is64Bit(uint16_t reg) {
200 return ((reg & k64BitMask) == k64Bits);
203 static constexpr bool Is64BitSolo(uint16_t reg) {
204 return ((reg & kShapeMask) == k64BitSolo);
214 void SetReg(int reg) {
217 reg_ = (reg_ & ~kRegValMask) | reg;
220 // Set the reg number and type only, target remain 64-bit pair.
221 void SetLowReg(int reg) {
223 reg_ = (reg_ & ~kRegTypeMask) | (reg & kRegTypeMask);
232 // Create a stand-alone RegStorage from the low reg of a pair.
244 // Create a stand-alone RegStorage from the high reg of a pair.
250 void SetHighReg(int reg) {
252 reg_ = (reg_ & ~kHighRegMask) | ((reg & kHighRegNumMask) << kHighRegShift);