hotspot/src/cpu/ppc/vm/register_ppc.hpp
changeset 39236 c9d756fa846e
parent 35594 cc13089c6327
child 40071 53e12df44b7b
equal deleted inserted replaced
39235:0a8a53391399 39236:c9d756fa846e
   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.