https://github.com/python/cpython/commit/1f5682f3a27516833f7c317707dd359280dba6e7
commit: 1f5682f3a27516833f7c317707dd359280dba6e7
branch: main
author: mpage <mp...@meta.com>
committer: mpage <mp...@cs.stanford.edu>
date: 2025-04-09T10:34:12-07:00
summary:

gh-129987: Disable GCC SLP autovectorization for the interpreter loop on x86-64 
(#132295)

The SLP autovectorizer can cause poor code generation for opcode dispatch, 
negating any benefit we get from vectorization elsewhere in the interpreter 
loop.

files:
M Python/ceval.c

diff --git a/Python/ceval.c b/Python/ceval.c
index a59b2b7a16866d..47d068edac2743 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -948,7 +948,18 @@ _PyObjectArray_Free(PyObject **array, PyObject **scratch)
 #include "generated_cases.c.h"
 #endif
 
-PyObject* _Py_HOT_FUNCTION
+#if (defined(__GNUC__) && !defined(__clang__)) && defined(__x86_64__)
+/*
+ * gh-129987: The SLP autovectorizer can cause poor code generation for opcode
+ * dispatch, negating any benefit we get from vectorization elsewhere in the
+ * interpreter loop.
+ */
+#define DONT_SLP_VECTORIZE __attribute__((optimize ("no-tree-slp-vectorize")))
+#else
+#define DONT_SLP_VECTORIZE
+#endif
+
+PyObject* _Py_HOT_FUNCTION DONT_SLP_VECTORIZE
 _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, 
int throwflag)
 {
     _Py_EnsureTstateNotNULL(tstate);

_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-le...@python.org
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: arch...@mail-archive.com

Reply via email to