[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