1778 FLAG_SET_DEFAULT(UseFastStosb, false);
1779 }
1780
1781 // For AMD Processors use XMM/YMM MOVDQU instructions
1782 // for Object Initialization as default
1783 if (is_amd() && cpu_family() >= 0x19) {
1784 if (FLAG_IS_DEFAULT(UseFastStosb)) {
1785 UseFastStosb = false;
1786 }
1787 }
1788
1789 #ifdef COMPILER2
1790 if (is_intel() && MaxVectorSize > 16) {
1791 if (FLAG_IS_DEFAULT(UseFastStosb)) {
1792 UseFastStosb = false;
1793 }
1794 }
1795 #endif
1796
1797 // Use XMM/YMM MOVDQU instruction for Object Initialization
1798 if (!UseFastStosb && UseSSE >= 2 && UseUnalignedLoadStores) {
1799 if (FLAG_IS_DEFAULT(UseXMMForObjInit)) {
1800 UseXMMForObjInit = true;
1801 }
1802 } else if (UseXMMForObjInit) {
1803 warning("UseXMMForObjInit requires SSE2 and unaligned load/stores. Feature is switched off.");
1804 FLAG_SET_DEFAULT(UseXMMForObjInit, false);
1805 }
1806
1807 #ifdef COMPILER2
1808 if (FLAG_IS_DEFAULT(AlignVector)) {
1809 // Modern processors allow misaligned memory operations for vectors.
1810 AlignVector = !UseUnalignedLoadStores;
1811 }
1812 #endif // COMPILER2
1813
1814 if (FLAG_IS_DEFAULT(AllocatePrefetchInstr)) {
1815 if (AllocatePrefetchInstr == 3 && !supports_3dnow_prefetch()) {
1816 FLAG_SET_DEFAULT(AllocatePrefetchInstr, 0);
1817 } else if (!supports_sse() && supports_3dnow_prefetch()) {
1818 FLAG_SET_DEFAULT(AllocatePrefetchInstr, 3);
|
1778 FLAG_SET_DEFAULT(UseFastStosb, false);
1779 }
1780
1781 // For AMD Processors use XMM/YMM MOVDQU instructions
1782 // for Object Initialization as default
1783 if (is_amd() && cpu_family() >= 0x19) {
1784 if (FLAG_IS_DEFAULT(UseFastStosb)) {
1785 UseFastStosb = false;
1786 }
1787 }
1788
1789 #ifdef COMPILER2
1790 if (is_intel() && MaxVectorSize > 16) {
1791 if (FLAG_IS_DEFAULT(UseFastStosb)) {
1792 UseFastStosb = false;
1793 }
1794 }
1795 #endif
1796
1797 // Use XMM/YMM MOVDQU instruction for Object Initialization
1798 if (UseSSE >= 2 && UseUnalignedLoadStores) {
1799 if (FLAG_IS_DEFAULT(UseXMMForObjInit)) {
1800 UseXMMForObjInit = true;
1801 }
1802 } else if (UseXMMForObjInit) {
1803 warning("UseXMMForObjInit requires SSE2 and unaligned load/stores. Feature is switched off.");
1804 FLAG_SET_DEFAULT(UseXMMForObjInit, false);
1805 }
1806
1807 #ifdef COMPILER2
1808 if (FLAG_IS_DEFAULT(AlignVector)) {
1809 // Modern processors allow misaligned memory operations for vectors.
1810 AlignVector = !UseUnalignedLoadStores;
1811 }
1812 #endif // COMPILER2
1813
1814 if (FLAG_IS_DEFAULT(AllocatePrefetchInstr)) {
1815 if (AllocatePrefetchInstr == 3 && !supports_3dnow_prefetch()) {
1816 FLAG_SET_DEFAULT(AllocatePrefetchInstr, 0);
1817 } else if (!supports_sse() && supports_3dnow_prefetch()) {
1818 FLAG_SET_DEFAULT(AllocatePrefetchInstr, 3);
|