1707 FLAG_SET_DEFAULT(UseFastStosb, false);
1708 }
1709
1710 // For AMD Processors use XMM/YMM MOVDQU instructions
1711 // for Object Initialization as default
1712 if (is_amd() && cpu_family() >= 0x19) {
1713 if (FLAG_IS_DEFAULT(UseFastStosb)) {
1714 UseFastStosb = false;
1715 }
1716 }
1717
1718 #ifdef COMPILER2
1719 if (is_intel() && MaxVectorSize > 16) {
1720 if (FLAG_IS_DEFAULT(UseFastStosb)) {
1721 UseFastStosb = false;
1722 }
1723 }
1724 #endif
1725
1726 // Use XMM/YMM MOVDQU instruction for Object Initialization
1727 if (!UseFastStosb && UseUnalignedLoadStores) {
1728 if (FLAG_IS_DEFAULT(UseXMMForObjInit)) {
1729 UseXMMForObjInit = true;
1730 }
1731 } else if (UseXMMForObjInit) {
1732 if (!FLAG_IS_DEFAULT(UseXMMForObjInit)) {
1733 warning("UseXMMForObjInit requires SSE2 and unaligned load/stores. Feature is switched off.");
1734 }
1735 FLAG_SET_DEFAULT(UseXMMForObjInit, false);
1736 }
1737
1738 #ifdef COMPILER2
1739 if (FLAG_IS_DEFAULT(AlignVector)) {
1740 // Modern processors allow misaligned memory operations for vectors.
1741 AlignVector = !UseUnalignedLoadStores;
1742 }
1743 #endif // COMPILER2
1744
1745 if (FLAG_IS_DEFAULT(AllocatePrefetchInstr)) {
1746 if (AllocatePrefetchInstr == 3 && !supports_3dnow_prefetch()) {
1747 FLAG_SET_DEFAULT(AllocatePrefetchInstr, 0);
|
1707 FLAG_SET_DEFAULT(UseFastStosb, false);
1708 }
1709
1710 // For AMD Processors use XMM/YMM MOVDQU instructions
1711 // for Object Initialization as default
1712 if (is_amd() && cpu_family() >= 0x19) {
1713 if (FLAG_IS_DEFAULT(UseFastStosb)) {
1714 UseFastStosb = false;
1715 }
1716 }
1717
1718 #ifdef COMPILER2
1719 if (is_intel() && MaxVectorSize > 16) {
1720 if (FLAG_IS_DEFAULT(UseFastStosb)) {
1721 UseFastStosb = false;
1722 }
1723 }
1724 #endif
1725
1726 // Use XMM/YMM MOVDQU instruction for Object Initialization
1727 if (UseUnalignedLoadStores) {
1728 if (FLAG_IS_DEFAULT(UseXMMForObjInit)) {
1729 UseXMMForObjInit = true;
1730 }
1731 } else if (UseXMMForObjInit) {
1732 if (!FLAG_IS_DEFAULT(UseXMMForObjInit)) {
1733 warning("UseXMMForObjInit requires SSE2 and unaligned load/stores. Feature is switched off.");
1734 }
1735 FLAG_SET_DEFAULT(UseXMMForObjInit, false);
1736 }
1737
1738 #ifdef COMPILER2
1739 if (FLAG_IS_DEFAULT(AlignVector)) {
1740 // Modern processors allow misaligned memory operations for vectors.
1741 AlignVector = !UseUnalignedLoadStores;
1742 }
1743 #endif // COMPILER2
1744
1745 if (FLAG_IS_DEFAULT(AllocatePrefetchInstr)) {
1746 if (AllocatePrefetchInstr == 3 && !supports_3dnow_prefetch()) {
1747 FLAG_SET_DEFAULT(AllocatePrefetchInstr, 0);
|