Disable AVX.
authorfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 18 Apr 2016 22:09:27 +0000 (22:09 +0000)
committerfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 18 Apr 2016 22:09:27 +0000 (22:09 +0000)
Rubber stampted by Benjamin Poulain.

AVX is silly. If you use it and some of your other code isn't careful with float register bits, you
will run 10x slower. We could fix the underlying issue, but it's better to stay away from this odd
instruction subset.

This fixes a massive regression on some real code.

* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::supportsAVX):
(JSC::MacroAssemblerX86Common::updateEax1EcxFlags):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@199690 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h

index da5470c..da57dd8 100644 (file)
@@ -1,5 +1,21 @@
 2016-04-18  Filip Pizlo  <fpizlo@apple.com>
 
+        Disable AVX.
+
+        Rubber stampted by Benjamin Poulain.
+
+        AVX is silly. If you use it and some of your other code isn't careful with float register bits, you
+        will run 10x slower. We could fix the underlying issue, but it's better to stay away from this odd
+        instruction subset.
+
+        This fixes a massive regression on some real code.
+
+        * assembler/MacroAssemblerX86Common.h:
+        (JSC::MacroAssemblerX86Common::supportsAVX):
+        (JSC::MacroAssemblerX86Common::updateEax1EcxFlags):
+
+2016-04-18  Filip Pizlo  <fpizlo@apple.com>
+
         ToThis should have a fast path based on type info flags
         https://bugs.webkit.org/show_bug.cgi?id=156712
 
index d6785d8..3429f23 100644 (file)
@@ -2620,9 +2620,8 @@ public:
 
     static bool supportsAVX()
     {
-        if (s_avxCheckState == CPUIDCheckState::NotChecked)
-            updateEax1EcxFlags();
-        return s_avxCheckState == CPUIDCheckState::Set;
+        // AVX still causes mysterious regressions and those regressions can be massive.
+        return false;
     }
 
     static void updateEax1EcxFlags()