1831 FLAG_SET_DEFAULT(UseFastStosb, false);
1832 }
1833
1834 // For AMD Processors use XMM/YMM MOVDQU instructions
1835 // for Object Initialization as default
1836 if (is_amd() && cpu_family() >= 0x19) {
1837 if (FLAG_IS_DEFAULT(UseFastStosb)) {
1838 UseFastStosb = false;
1839 }
1840 }
1841
1842 #ifdef COMPILER2
1843 if (is_intel() && MaxVectorSize > 16) {
1844 if (FLAG_IS_DEFAULT(UseFastStosb)) {
1845 UseFastStosb = false;
1846 }
1847 }
1848 #endif
1849
1850 // Use XMM/YMM MOVDQU instruction for Object Initialization
1851 if (!UseFastStosb && UseSSE >= 2 && UseUnalignedLoadStores) {
1852 if (FLAG_IS_DEFAULT(UseXMMForObjInit)) {
1853 UseXMMForObjInit = true;
1854 }
1855 } else if (UseXMMForObjInit) {
1856 warning("UseXMMForObjInit requires SSE2 and unaligned load/stores. Feature is switched off.");
1857 FLAG_SET_DEFAULT(UseXMMForObjInit, false);
1858 }
1859
1860 #ifdef COMPILER2
1861 if (FLAG_IS_DEFAULT(AlignVector)) {
1862 // Modern processors allow misaligned memory operations for vectors.
1863 AlignVector = !UseUnalignedLoadStores;
1864 }
1865 #endif // COMPILER2
1866
1867 if (FLAG_IS_DEFAULT(AllocatePrefetchInstr)) {
1868 if (AllocatePrefetchInstr == 3 && !supports_3dnow_prefetch()) {
1869 FLAG_SET_DEFAULT(AllocatePrefetchInstr, 0);
1870 } else if (!supports_sse() && supports_3dnow_prefetch()) {
1871 FLAG_SET_DEFAULT(AllocatePrefetchInstr, 3);
|
1831 FLAG_SET_DEFAULT(UseFastStosb, false);
1832 }
1833
1834 // For AMD Processors use XMM/YMM MOVDQU instructions
1835 // for Object Initialization as default
1836 if (is_amd() && cpu_family() >= 0x19) {
1837 if (FLAG_IS_DEFAULT(UseFastStosb)) {
1838 UseFastStosb = false;
1839 }
1840 }
1841
1842 #ifdef COMPILER2
1843 if (is_intel() && MaxVectorSize > 16) {
1844 if (FLAG_IS_DEFAULT(UseFastStosb)) {
1845 UseFastStosb = false;
1846 }
1847 }
1848 #endif
1849
1850 // Use XMM/YMM MOVDQU instruction for Object Initialization
1851 if (UseSSE >= 2 && UseUnalignedLoadStores) {
1852 if (FLAG_IS_DEFAULT(UseXMMForObjInit)) {
1853 UseXMMForObjInit = true;
1854 }
1855 } else if (UseXMMForObjInit) {
1856 warning("UseXMMForObjInit requires SSE2 and unaligned load/stores. Feature is switched off.");
1857 FLAG_SET_DEFAULT(UseXMMForObjInit, false);
1858 }
1859
1860 #ifdef COMPILER2
1861 if (FLAG_IS_DEFAULT(AlignVector)) {
1862 // Modern processors allow misaligned memory operations for vectors.
1863 AlignVector = !UseUnalignedLoadStores;
1864 }
1865 #endif // COMPILER2
1866
1867 if (FLAG_IS_DEFAULT(AllocatePrefetchInstr)) {
1868 if (AllocatePrefetchInstr == 3 && !supports_3dnow_prefetch()) {
1869 FLAG_SET_DEFAULT(AllocatePrefetchInstr, 0);
1870 } else if (!supports_sse() && supports_3dnow_prefetch()) {
1871 FLAG_SET_DEFAULT(AllocatePrefetchInstr, 3);
|