489 #define VR30 ((VectorRegister)( VR30_VectorRegisterEnumValue)) |
489 #define VR30 ((VectorRegister)( VR30_VectorRegisterEnumValue)) |
490 #define VR31 ((VectorRegister)( VR31_VectorRegisterEnumValue)) |
490 #define VR31 ((VectorRegister)( VR31_VectorRegisterEnumValue)) |
491 #endif // DONT_USE_REGISTER_DEFINES |
491 #endif // DONT_USE_REGISTER_DEFINES |
492 |
492 |
493 |
493 |
|
494 // Use VectorSRegister as a shortcut. |
|
495 class VectorSRegisterImpl; |
|
496 typedef VectorSRegisterImpl* VectorSRegister; |
|
497 |
|
498 inline VectorSRegister as_VectorSRegister(int encoding) { |
|
499 return (VectorSRegister)(intptr_t)encoding; |
|
500 } |
|
501 |
|
502 // The implementation of Vector-Scalar (VSX) registers on POWER architecture. |
|
503 class VectorSRegisterImpl: public AbstractRegisterImpl { |
|
504 public: |
|
505 enum { |
|
506 number_of_registers = 32 |
|
507 }; |
|
508 |
|
509 // construction |
|
510 inline friend VectorSRegister as_VectorSRegister(int encoding); |
|
511 |
|
512 // accessors |
|
513 int encoding() const { assert(is_valid(), "invalid register"); return value(); } |
|
514 |
|
515 // testers |
|
516 bool is_valid() const { return 0 <= value() && value() < number_of_registers; } |
|
517 |
|
518 const char* name() const; |
|
519 }; |
|
520 |
|
521 // The Vector-Scalar (VSX) registers of the POWER architecture. |
|
522 |
|
523 CONSTANT_REGISTER_DECLARATION(VectorSRegister, vsnoreg, (-1)); |
|
524 |
|
525 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR0, ( 0)); |
|
526 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR1, ( 1)); |
|
527 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR2, ( 2)); |
|
528 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR3, ( 3)); |
|
529 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR4, ( 4)); |
|
530 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR5, ( 5)); |
|
531 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR6, ( 6)); |
|
532 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR7, ( 7)); |
|
533 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR8, ( 8)); |
|
534 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR9, ( 9)); |
|
535 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR10, (10)); |
|
536 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR11, (11)); |
|
537 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR12, (12)); |
|
538 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR13, (13)); |
|
539 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR14, (14)); |
|
540 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR15, (15)); |
|
541 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR16, (16)); |
|
542 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR17, (17)); |
|
543 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR18, (18)); |
|
544 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR19, (19)); |
|
545 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR20, (20)); |
|
546 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR21, (21)); |
|
547 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR22, (22)); |
|
548 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR23, (23)); |
|
549 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR24, (24)); |
|
550 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR25, (25)); |
|
551 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR26, (26)); |
|
552 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR27, (27)); |
|
553 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR28, (28)); |
|
554 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR29, (29)); |
|
555 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR30, (30)); |
|
556 CONSTANT_REGISTER_DECLARATION(VectorSRegister, VSR31, (31)); |
|
557 |
|
558 #ifndef DONT_USE_REGISTER_DEFINES |
|
559 #define vsnoregi ((VectorSRegister)(vsnoreg_VectorSRegisterEnumValue)) |
|
560 #define VSR0 ((VectorSRegister)( VSR0_VectorSRegisterEnumValue)) |
|
561 #define VSR1 ((VectorSRegister)( VSR1_VectorSRegisterEnumValue)) |
|
562 #define VSR2 ((VectorSRegister)( VSR2_VectorSRegisterEnumValue)) |
|
563 #define VSR3 ((VectorSRegister)( VSR3_VectorSRegisterEnumValue)) |
|
564 #define VSR4 ((VectorSRegister)( VSR4_VectorSRegisterEnumValue)) |
|
565 #define VSR5 ((VectorSRegister)( VSR5_VectorSRegisterEnumValue)) |
|
566 #define VSR6 ((VectorSRegister)( VSR6_VectorSRegisterEnumValue)) |
|
567 #define VSR7 ((VectorSRegister)( VSR7_VectorSRegisterEnumValue)) |
|
568 #define VSR8 ((VectorSRegister)( VSR8_VectorSRegisterEnumValue)) |
|
569 #define VSR9 ((VectorSRegister)( VSR9_VectorSRegisterEnumValue)) |
|
570 #define VSR10 ((VectorSRegister)( VSR10_VectorSRegisterEnumValue)) |
|
571 #define VSR11 ((VectorSRegister)( VSR11_VectorSRegisterEnumValue)) |
|
572 #define VSR12 ((VectorSRegister)( VSR12_VectorSRegisterEnumValue)) |
|
573 #define VSR13 ((VectorSRegister)( VSR13_VectorSRegisterEnumValue)) |
|
574 #define VSR14 ((VectorSRegister)( VSR14_VectorSRegisterEnumValue)) |
|
575 #define VSR15 ((VectorSRegister)( VSR15_VectorSRegisterEnumValue)) |
|
576 #define VSR16 ((VectorSRegister)( VSR16_VectorSRegisterEnumValue)) |
|
577 #define VSR17 ((VectorSRegister)( VSR17_VectorSRegisterEnumValue)) |
|
578 #define VSR18 ((VectorSRegister)( VSR18_VectorSRegisterEnumValue)) |
|
579 #define VSR19 ((VectorSRegister)( VSR19_VectorSRegisterEnumValue)) |
|
580 #define VSR20 ((VectorSRegister)( VSR20_VectorSRegisterEnumValue)) |
|
581 #define VSR21 ((VectorSRegister)( VSR21_VectorSRegisterEnumValue)) |
|
582 #define VSR22 ((VectorSRegister)( VSR22_VectorSRegisterEnumValue)) |
|
583 #define VSR23 ((VectorSRegister)( VSR23_VectorSRegisterEnumValue)) |
|
584 #define VSR24 ((VectorSRegister)( VSR24_VectorSRegisterEnumValue)) |
|
585 #define VSR25 ((VectorSRegister)( VSR25_VectorSRegisterEnumValue)) |
|
586 #define VSR26 ((VectorSRegister)( VSR26_VectorSRegisterEnumValue)) |
|
587 #define VSR27 ((VectorSRegister)( VSR27_VectorSRegisterEnumValue)) |
|
588 #define VSR28 ((VectorSRegister)( VSR28_VectorSRegisterEnumValue)) |
|
589 #define VSR29 ((VectorSRegister)( VSR29_VectorSRegisterEnumValue)) |
|
590 #define VSR30 ((VectorSRegister)( VSR30_VectorSRegisterEnumValue)) |
|
591 #define VSR31 ((VectorSRegister)( VSR31_VectorSRegisterEnumValue)) |
|
592 #endif // DONT_USE_REGISTER_DEFINES |
|
593 |
494 // Maximum number of incoming arguments that can be passed in i registers. |
594 // Maximum number of incoming arguments that can be passed in i registers. |
495 const int PPC_ARGS_IN_REGS_NUM = 8; |
595 const int PPC_ARGS_IN_REGS_NUM = 8; |
496 |
596 |
497 |
597 |
498 // Need to know the total number of registers of all sorts for SharedInfo. |
598 // Need to know the total number of registers of all sorts for SharedInfo. |