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