1751 FLAG_SET_DEFAULT(UseFastStosb, false);
1752 }
1753
1754 // For AMD Processors use XMM/YMM MOVDQU instructions
1755 // for Object Initialization as default
1756 if (is_amd() && cpu_family() >= 0x19) {
1757 if (FLAG_IS_DEFAULT(UseFastStosb)) {
1758 UseFastStosb = false;
1759 }
1760 }
1761
1762 #ifdef COMPILER2
1763 if (is_intel() && MaxVectorSize > 16) {
1764 if (FLAG_IS_DEFAULT(UseFastStosb)) {
1765 UseFastStosb = false;
1766 }
1767 }
1768 #endif
1769
1770 // Use XMM/YMM MOVDQU instruction for Object Initialization
1771 if (!UseFastStosb && UseUnalignedLoadStores) {
1772 if (FLAG_IS_DEFAULT(UseXMMForObjInit)) {
1773 UseXMMForObjInit = true;
1774 }
1775 } else if (UseXMMForObjInit) {
1776 warning("UseXMMForObjInit requires SSE2 and unaligned load/stores. Feature is switched off.");
1777 FLAG_SET_DEFAULT(UseXMMForObjInit, false);
1778 }
1779
1780 #ifdef COMPILER2
1781 if (FLAG_IS_DEFAULT(AlignVector)) {
1782 // Modern processors allow misaligned memory operations for vectors.
1783 AlignVector = !UseUnalignedLoadStores;
1784 }
1785 #endif // COMPILER2
1786
1787 if (FLAG_IS_DEFAULT(AllocatePrefetchInstr)) {
1788 if (AllocatePrefetchInstr == 3 && !supports_3dnow_prefetch()) {
1789 FLAG_SET_DEFAULT(AllocatePrefetchInstr, 0);
1790 } else if (!supports_sse() && supports_3dnow_prefetch()) {
1791 FLAG_SET_DEFAULT(AllocatePrefetchInstr, 3);
|
1751 FLAG_SET_DEFAULT(UseFastStosb, false);
1752 }
1753
1754 // For AMD Processors use XMM/YMM MOVDQU instructions
1755 // for Object Initialization as default
1756 if (is_amd() && cpu_family() >= 0x19) {
1757 if (FLAG_IS_DEFAULT(UseFastStosb)) {
1758 UseFastStosb = false;
1759 }
1760 }
1761
1762 #ifdef COMPILER2
1763 if (is_intel() && MaxVectorSize > 16) {
1764 if (FLAG_IS_DEFAULT(UseFastStosb)) {
1765 UseFastStosb = false;
1766 }
1767 }
1768 #endif
1769
1770 // Use XMM/YMM MOVDQU instruction for Object Initialization
1771 if (UseUnalignedLoadStores) {
1772 if (FLAG_IS_DEFAULT(UseXMMForObjInit)) {
1773 UseXMMForObjInit = true;
1774 }
1775 } else if (UseXMMForObjInit) {
1776 warning("UseXMMForObjInit requires SSE2 and unaligned load/stores. Feature is switched off.");
1777 FLAG_SET_DEFAULT(UseXMMForObjInit, false);
1778 }
1779
1780 #ifdef COMPILER2
1781 if (FLAG_IS_DEFAULT(AlignVector)) {
1782 // Modern processors allow misaligned memory operations for vectors.
1783 AlignVector = !UseUnalignedLoadStores;
1784 }
1785 #endif // COMPILER2
1786
1787 if (FLAG_IS_DEFAULT(AllocatePrefetchInstr)) {
1788 if (AllocatePrefetchInstr == 3 && !supports_3dnow_prefetch()) {
1789 FLAG_SET_DEFAULT(AllocatePrefetchInstr, 0);
1790 } else if (!supports_sse() && supports_3dnow_prefetch()) {
1791 FLAG_SET_DEFAULT(AllocatePrefetchInstr, 3);
|