Lines Matching defs:VRegister
81 // Some CPURegister methods can return Register and VRegister types, so we
84 class VRegister;
165 // as Is8B(), Is1D(), etc. in the VRegister class.
174 VRegister VReg() const;
178 VRegister V() const;
179 VRegister B() const;
180 VRegister H() const;
181 VRegister D() const;
182 VRegister S() const;
183 VRegister Q() const;
317 class VRegister : public CPURegister {
319 static constexpr VRegister no_reg() {
320 return VRegister(CPURegister::no_reg(), 0);
323 static constexpr VRegister Create(int code, int size, int lane_count = 1) {
325 return VRegister(CPURegister::Create(code, size, CPURegister::kVRegister),
329 static VRegister Create(int reg_code, VectorFormat format) {
332 return VRegister::Create(reg_code, reg_size, reg_count);
335 static VRegister BRegFromCode(unsigned code);
336 static VRegister HRegFromCode(unsigned code);
337 static VRegister SRegFromCode(unsigned code);
338 static VRegister DRegFromCode(unsigned code);
339 static VRegister QRegFromCode(unsigned code);
340 static VRegister VRegFromCode(unsigned code);
342 VRegister V8B() const {
343 return VRegister::Create(code(), kDRegSizeInBits, 8);
345 VRegister V16B() const {
346 return VRegister::Create(code(), kQRegSizeInBits, 16);
348 VRegister V4H() const {
349 return VRegister::Create(code(), kDRegSizeInBits, 4);
351 VRegister V8H() const {
352 return VRegister::Create(code(), kQRegSizeInBits, 8);
354 VRegister V2S() const {
355 return VRegister::Create(code(), kDRegSizeInBits, 2);
357 VRegister V4S() const {
358 return VRegister::Create(code(), kQRegSizeInBits, 4);
360 VRegister V2D() const {
361 return VRegister::Create(code(), kQRegSizeInBits, 2);
363 VRegister V1D() const {
364 return VRegister::Create(code(), kDRegSizeInBits, 1);
367 VRegister Format(VectorFormat f) const {
368 return VRegister::Create(code(), f);
404 bool IsSameFormat(const VRegister& other) const {
417 static constexpr VRegister from_code(int code) {
419 return VRegister::Create(code, kDRegSizeInBits);
425 constexpr explicit VRegister(const CPURegister& r, int lane_count)
433 ASSERT_TRIVIALLY_COPYABLE(VRegister);
434 static_assert(sizeof(VRegister) <= sizeof(int),
435 "VRegister can efficiently be passed by value");
438 // these all compare equal. The Register and VRegister variants are provided for
441 constexpr VRegister NoVReg = VRegister::no_reg();
444 constexpr VRegister no_dreg = NoVReg;
461 DEFINE_REGISTER(VRegister, b##N, N, kBRegSizeInBits); \
462 DEFINE_REGISTER(VRegister, h##N, N, kHRegSizeInBits); \
463 DEFINE_REGISTER(VRegister, s##N, N, kSRegSizeInBits); \
464 DEFINE_REGISTER(VRegister, d##N, N, kDRegSizeInBits); \
465 DEFINE_REGISTER(VRegister, q##N, N, kQRegSizeInBits); \
466 DEFINE_REGISTER(VRegister, v##N, N, kQRegSizeInBits);
473 ALIAS_REGISTER(VRegister, v8_, v8); // Avoid conflicts with namespace v8.
498 ALIAS_REGISTER(VRegister, fp_zero, d15);
501 ALIAS_REGISTER(VRegister, fp_fixed1, d27);
502 ALIAS_REGISTER(VRegister, fp_fixed2, d28);
505 ALIAS_REGISTER(VRegister, fp_scratch, d30);
506 ALIAS_REGISTER(VRegister, fp_scratch1, d30);
507 ALIAS_REGISTER(VRegister, fp_scratch2, d31);
532 bool AreSameFormat(const VRegister& reg1, const VRegister& reg2,
533 const VRegister& reg3 = NoVReg,
534 const VRegister& reg4 = NoVReg);
540 V8_EXPORT_PRIVATE bool AreConsecutive(const VRegister& reg1,
541 const VRegister& reg2,
542 const VRegister& reg3 = NoVReg,
543 const VRegister& reg4 = NoVReg);
545 using FloatRegister = VRegister;
546 using DoubleRegister = VRegister;
547 using Simd128Register = VRegister;
549 // Define a {RegisterName} method for {Register} and {VRegister}.
551 DEFINE_REGISTER_NAMES(VRegister, VECTOR_REGISTERS)