< prev index next >

src/cpu/x86/vm/vm_version_x86.cpp

Print this page
rev 8502 : 8046943: Leverage CPU Instructions for GHASH and RSA
Summary: Add montgomeryMultiply intrinsics
Reviewed-by: kvn


 779         tty->print("YMM%s:", ymm_name[i]);
 780         for (int j = 7; j >=0; j--) {
 781           tty->print(" %x", _cpuid_info.ymm_save[i*8 + j]);
 782         }
 783         tty->cr();
 784       }
 785     }
 786 #endif
 787   }
 788 
 789 #ifdef _LP64
 790   if (FLAG_IS_DEFAULT(UseMultiplyToLenIntrinsic)) {
 791     UseMultiplyToLenIntrinsic = true;
 792   }
 793   if (FLAG_IS_DEFAULT(UseSquareToLenIntrinsic)) {
 794     UseSquareToLenIntrinsic = true;
 795   }
 796   if (FLAG_IS_DEFAULT(UseMulAddIntrinsic)) {
 797     UseMulAddIntrinsic = true;
 798   }






 799 #else
 800   if (UseMultiplyToLenIntrinsic) {
 801     if (!FLAG_IS_DEFAULT(UseMultiplyToLenIntrinsic)) {
 802       warning("multiplyToLen intrinsic is not available in 32-bit VM");
 803     }
 804     FLAG_SET_DEFAULT(UseMultiplyToLenIntrinsic, false);
 805   }












 806   if (UseSquareToLenIntrinsic) {
 807     if (!FLAG_IS_DEFAULT(UseSquareToLenIntrinsic)) {
 808       warning("squareToLen intrinsic is not available in 32-bit VM");
 809     }
 810     FLAG_SET_DEFAULT(UseSquareToLenIntrinsic, false);
 811   }
 812   if (UseMulAddIntrinsic) {
 813     if (!FLAG_IS_DEFAULT(UseMulAddIntrinsic)) {
 814       warning("mulAdd intrinsic is not available in 32-bit VM");
 815     }
 816     FLAG_SET_DEFAULT(UseMulAddIntrinsic, false);
 817   }
 818 #endif
 819 #endif // COMPILER2
 820 
 821   // On new cpus instructions which update whole XMM register should be used
 822   // to prevent partial register stall due to dependencies on high half.
 823   //
 824   // UseXmmLoadAndClearUpper == true  --> movsd(xmm, mem)
 825   // UseXmmLoadAndClearUpper == false --> movlpd(xmm, mem)




 779         tty->print("YMM%s:", ymm_name[i]);
 780         for (int j = 7; j >=0; j--) {
 781           tty->print(" %x", _cpuid_info.ymm_save[i*8 + j]);
 782         }
 783         tty->cr();
 784       }
 785     }
 786 #endif
 787   }
 788 
 789 #ifdef _LP64
 790   if (FLAG_IS_DEFAULT(UseMultiplyToLenIntrinsic)) {
 791     UseMultiplyToLenIntrinsic = true;
 792   }
 793   if (FLAG_IS_DEFAULT(UseSquareToLenIntrinsic)) {
 794     UseSquareToLenIntrinsic = true;
 795   }
 796   if (FLAG_IS_DEFAULT(UseMulAddIntrinsic)) {
 797     UseMulAddIntrinsic = true;
 798   }
 799   if (FLAG_IS_DEFAULT(UseMontgomeryMultiplyIntrinsic)) {
 800     UseMontgomeryMultiplyIntrinsic = true;
 801   }
 802   if (FLAG_IS_DEFAULT(UseMontgomerySquareIntrinsic)) {
 803     UseMontgomerySquareIntrinsic = true;
 804   }
 805 #else
 806   if (UseMultiplyToLenIntrinsic) {
 807     if (!FLAG_IS_DEFAULT(UseMultiplyToLenIntrinsic)) {
 808       warning("multiplyToLen intrinsic is not available in 32-bit VM");
 809     }
 810     FLAG_SET_DEFAULT(UseMultiplyToLenIntrinsic, false);
 811   }
 812   if (UseMontgomeryMultiplyIntrinsic) {
 813     if (!FLAG_IS_DEFAULT(UseMontgomeryMultiplyIntrinsic)) {
 814       warning("montgomeryMultiply intrinsic is not available in 32-bit VM");
 815     }
 816     FLAG_SET_DEFAULT(UseMontgomeryMultiplyIntrinsic, false);
 817   }
 818   if (UseMontgomerySquareIntrinsic) {
 819     if (!FLAG_IS_DEFAULT(UseMontgomerySquareIntrinsic)) {
 820       warning("montgomerySquare intrinsic is not available in 32-bit VM");
 821     }
 822     FLAG_SET_DEFAULT(UseMontgomerySquareIntrinsic, false);
 823   }
 824   if (UseSquareToLenIntrinsic) {
 825     if (!FLAG_IS_DEFAULT(UseSquareToLenIntrinsic)) {
 826       warning("squareToLen intrinsic is not available in 32-bit VM");
 827     }
 828     FLAG_SET_DEFAULT(UseSquareToLenIntrinsic, false);
 829   }
 830   if (UseMulAddIntrinsic) {
 831     if (!FLAG_IS_DEFAULT(UseMulAddIntrinsic)) {
 832       warning("mulAdd intrinsic is not available in 32-bit VM");
 833     }
 834     FLAG_SET_DEFAULT(UseMulAddIntrinsic, false);
 835   }
 836 #endif
 837 #endif // COMPILER2
 838 
 839   // On new cpus instructions which update whole XMM register should be used
 840   // to prevent partial register stall due to dependencies on high half.
 841   //
 842   // UseXmmLoadAndClearUpper == true  --> movsd(xmm, mem)
 843   // UseXmmLoadAndClearUpper == false --> movlpd(xmm, mem)


< prev index next >