Skip to content

Commit f21b880

Browse files
committed
Add cpyext test using required ASM intrinsic.
1 parent 485066a commit f21b880

File tree

1 file changed

+24
-0
lines changed
  • graalpython/com.oracle.graal.python.test/src/tests/cpyext

1 file changed

+24
-0
lines changed

graalpython/com.oracle.graal.python.test/src/tests/cpyext/test_misc.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,3 +150,27 @@ def compile_module(self, name):
150150
arguments=["char* name", "PyObject* globals", "PyObject* locals", "PyObject* fromlist", "int level"],
151151
cmpfunc=unhandled_error_compare
152152
)
153+
154+
test_PyTruffle_Intrinsic_Pmovmskb = CPyExtFunction(
155+
lambda args: True,
156+
lambda: (
157+
(0xffffcafebabe, 0xefffdeadbeef),
158+
),
159+
code="""
160+
#include <emmintrin.h>
161+
PyObject* PyTruffle_Intrinsic_Pmovmskb(PyObject* arg0, PyObject* arg1) {
162+
int r;
163+
int64_t a = (int64_t) PyLong_AsSsize_t(arg0);
164+
int64_t b = (int64_t) PyLong_AsSsize_t(arg1);
165+
__m128i zero = _mm_setzero_si128();
166+
__m128i v = _mm_set_epi64(_m_from_int64(b), _m_from_int64(a));
167+
v = _mm_cmpeq_epi8(v, zero);
168+
r = _mm_movemask_epi8(v);
169+
return (r == 0 || r == 49344) ? Py_True : Py_False;
170+
}
171+
""",
172+
resultspec="O",
173+
argspec="OO",
174+
arguments=["PyObject* arg0", "PyObject* arg1"],
175+
cmpfunc=unhandled_error_compare
176+
)

0 commit comments

Comments
 (0)