1726 FLAG_SET_DEFAULT(UseFastStosb, false);
1727 }
1728
1729 // For AMD Processors use XMM/YMM MOVDQU instructions
1730 // for Object Initialization as default
1731 if (is_amd() && cpu_family() >= 0x19) {
1732 if (FLAG_IS_DEFAULT(UseFastStosb)) {
1733 UseFastStosb = false;
1734 }
1735 }
1736
1737 #ifdef COMPILER2
1738 if (is_intel() && MaxVectorSize > 16) {
1739 if (FLAG_IS_DEFAULT(UseFastStosb)) {
1740 UseFastStosb = false;
1741 }
1742 }
1743 #endif
1744
1745 // Use XMM/YMM MOVDQU instruction for Object Initialization
1746 if (!UseFastStosb && UseUnalignedLoadStores) {
1747 if (FLAG_IS_DEFAULT(UseXMMForObjInit)) {
1748 UseXMMForObjInit = true;
1749 }
1750 } else if (UseXMMForObjInit) {
1751 if (!FLAG_IS_DEFAULT(UseXMMForObjInit)) {
1752 warning("UseXMMForObjInit requires SSE2 and unaligned load/stores. Feature is switched off.");
1753 }
1754 FLAG_SET_DEFAULT(UseXMMForObjInit, false);
1755 }
1756
1757 #ifdef COMPILER2
1758 if (FLAG_IS_DEFAULT(AlignVector)) {
1759 // Modern processors allow misaligned memory operations for vectors.
1760 AlignVector = !UseUnalignedLoadStores;
1761 }
1762 #endif // COMPILER2
1763
1764 if (FLAG_IS_DEFAULT(AllocatePrefetchInstr)) {
1765 if (AllocatePrefetchInstr == 3 && !supports_3dnow_prefetch()) {
1766 FLAG_SET_DEFAULT(AllocatePrefetchInstr, 0);
|
1726 FLAG_SET_DEFAULT(UseFastStosb, false);
1727 }
1728
1729 // For AMD Processors use XMM/YMM MOVDQU instructions
1730 // for Object Initialization as default
1731 if (is_amd() && cpu_family() >= 0x19) {
1732 if (FLAG_IS_DEFAULT(UseFastStosb)) {
1733 UseFastStosb = false;
1734 }
1735 }
1736
1737 #ifdef COMPILER2
1738 if (is_intel() && MaxVectorSize > 16) {
1739 if (FLAG_IS_DEFAULT(UseFastStosb)) {
1740 UseFastStosb = false;
1741 }
1742 }
1743 #endif
1744
1745 // Use XMM/YMM MOVDQU instruction for Object Initialization
1746 if (UseUnalignedLoadStores) {
1747 if (FLAG_IS_DEFAULT(UseXMMForObjInit)) {
1748 UseXMMForObjInit = true;
1749 }
1750 } else if (UseXMMForObjInit) {
1751 if (!FLAG_IS_DEFAULT(UseXMMForObjInit)) {
1752 warning("UseXMMForObjInit requires SSE2 and unaligned load/stores. Feature is switched off.");
1753 }
1754 FLAG_SET_DEFAULT(UseXMMForObjInit, false);
1755 }
1756
1757 #ifdef COMPILER2
1758 if (FLAG_IS_DEFAULT(AlignVector)) {
1759 // Modern processors allow misaligned memory operations for vectors.
1760 AlignVector = !UseUnalignedLoadStores;
1761 }
1762 #endif // COMPILER2
1763
1764 if (FLAG_IS_DEFAULT(AllocatePrefetchInstr)) {
1765 if (AllocatePrefetchInstr == 3 && !supports_3dnow_prefetch()) {
1766 FLAG_SET_DEFAULT(AllocatePrefetchInstr, 0);
|