[pypy-commit] pypy vecopt: tested insert x86 opcodes

plan_rich noreply at buildbot.pypy.org
Mon Jun 8 08:39:18 CEST 2015


Author: Richard Plangger <rich at pasra.at>
Branch: vecopt
Changeset: r77946:815c8b4a7c5b
Date: 2015-06-08 08:39 +0200
http://bitbucket.org/pypy/pypy/changeset/815c8b4a7c5b/

Log:	tested insert x86 opcodes

diff --git a/rpython/jit/backend/x86/rx86.py b/rpython/jit/backend/x86/rx86.py
--- a/rpython/jit/backend/x86/rx86.py
+++ b/rpython/jit/backend/x86/rx86.py
@@ -756,9 +756,9 @@
     PEXTRB_rxi = xmminsn('\x66', rex_nw, '\x0F\x3A\x14', register(1), register(2,8), '\xC0', immediate(3, 'b'))
     EXTRACTPS_rxi = xmminsn('\x66', rex_nw, '\x0F\x3A\x17', register(1), register(2,8), '\xC0', immediate(3, 'b'))
     
-    PINSRQ_xri = xmminsn('\x66', rex_w, '\x0F\x3A\x22', register(1,8), register(2,8), '\xC0', immediate(3, 'b'))
-    PINSRD_xri = xmminsn('\x66', rex_nw, '\x0F\x3A\x22', register(1,8), register(2,8), '\xC0', immediate(3, 'b'))
-    PINSRW_xri = xmminsn('\x66', rex_nw, '\x0F\xC4', register(1,8), register(2,8), '\xC0', immediate(3, 'b'))
+    PINSRQ_xri = xmminsn('\x66', rex_w, '\x0F\x3A\x22', register(1,8), register(2), '\xC0', immediate(3, 'b'))
+    PINSRD_xri = xmminsn('\x66', rex_nw, '\x0F\x3A\x22', register(1,8), register(2), '\xC0', immediate(3, 'b'))
+    PINSRW_xri = xmminsn('\x66', rex_nw, '\x0F\xC4', register(1,8), register(2), '\xC0', immediate(3, 'b'))
     PINSRB_xri = xmminsn('\x66', rex_nw, '\x0F\x3A\x20', register(1,8), register(2), '\xC0', immediate(3, 'b'))
     INSERTPS_xxi = xmminsn('\x66', rex_nw, '\x0F\x3A\x21', register(1,8), register(2), '\xC0', immediate(3, 'b'))
 
diff --git a/rpython/jit/backend/x86/test/test_rx86.py b/rpython/jit/backend/x86/test/test_rx86.py
--- a/rpython/jit/backend/x86/test/test_rx86.py
+++ b/rpython/jit/backend/x86/test/test_rx86.py
@@ -276,3 +276,46 @@
     s.clear()
     s.EXTRACTPS_rxi(R.r11, R.xmm0, 1)
     assert s.getvalue() == '\x66\x41\x0f\x3a\x17\xc3\x01'
+    s.clear()
+    s.EXTRACTPS_rxi(R.eax, R.xmm0, 1)
+    assert s.getvalue() == '\x66\x0f\x3a\x17\xc0\x01'
+    s.clear()
+    s.EXTRACTPS_rxi(R.r15, R.xmm15, 4)
+    assert s.getvalue() == '\x66\x45\x0f\x3a\x17\xff\x04'
+
+def test_pinsr():
+    s = CodeBuilder64()
+    s.PINSRW_xri(R.xmm0, R.r11,0)
+    assert s.getvalue() == '\x66\x41\x0f\xc4\xc3\x00'
+    s.clear()
+    s.PINSRW_xri(R.xmm15, R.edi, 15)
+    assert s.getvalue() == '\x66\x44\x0f\xc4\xff\x0f'
+    s.clear()
+    s.PINSRD_xri(R.xmm11, R.eax, 2)
+    assert s.getvalue() == '\x66\x44\x0f\x3a\x22\xd8\x02'
+    s.clear()
+    s.PINSRD_xri(R.xmm5, R.r11, 2)
+    assert s.getvalue() == '\x66\x41\x0f\x3a\x22\xeb\x02'
+    s.clear()
+    s.PINSRQ_xri(R.xmm0, R.ebp, 7)
+    assert s.getvalue() == '\x66\x48\x0f\x3a\x22\xc5\x07'
+    # BYTE
+    s.clear()
+    s.PINSRB_xri(R.xmm13, R.eax, 24)
+    assert s.getvalue() == '\x66\x44\x0f\x3a\x20\xe8\x18'
+    s.clear()
+    s.PINSRB_xri(R.xmm5, R.r15, 33)
+    assert s.getvalue() == '\x66\x41\x0f\x3a\x20\xef\x21'
+    # EXTR SINGLE FLOAT
+    s.clear()
+    s.INSERTPS_xxi(R.xmm15, R.xmm0, 2)
+    assert s.getvalue() == '\x66\x44\x0f\x3a\x21\xf8\x02'
+    s.clear()
+    s.INSERTPS_xxi(R.xmm0, R.xmm11, 1)
+    assert s.getvalue() == '\x66\x41\x0f\x3a\x21\xc3\x01'
+    s.clear()
+    s.INSERTPS_xxi(R.xmm0, R.xmm0, 1)
+    assert s.getvalue() == '\x66\x0f\x3a\x21\xc0\x01'
+    s.clear()
+    s.INSERTPS_xxi(R.xmm15, R.xmm15, 4)
+    assert s.getvalue() == '\x66\x45\x0f\x3a\x21\xff\x04'


More information about the pypy-commit mailing list