[pypy-commit] pypy vecopt: pblendw_xxi -> only tests byte for the i argument
plan_rich
noreply at buildbot.pypy.org
Wed Jul 29 09:31:10 CEST 2015
Author: Richard Plangger <rich at pasra.at>
Branch: vecopt
Changeset: r78700:1544d293e4b7
Date: 2015-07-29 08:56 +0200
http://bitbucket.org/pypy/pypy/changeset/1544d293e4b7/
Log: pblendw_xxi -> only tests byte for the i argument last two tests in
test_vectorize
diff --git a/rpython/jit/backend/x86/test/test_rx86_32_auto_encoding.py b/rpython/jit/backend/x86/test/test_rx86_32_auto_encoding.py
--- a/rpython/jit/backend/x86/test/test_rx86_32_auto_encoding.py
+++ b/rpython/jit/backend/x86/test/test_rx86_32_auto_encoding.py
@@ -388,7 +388,8 @@
instrname.find('INSERT') != -1 or \
instrname.find('EXTRACT') != -1 or \
instrname.find('SRLDQ') != -1 or \
- instrname.find('SHUF') != -1:
+ instrname.find('SHUF') != -1 or \
+ instrname.find('PBLEND') != -1:
realargmodes = []
for mode in argmodes:
if mode == 'i':
diff --git a/rpython/jit/metainterp/history.py b/rpython/jit/metainterp/history.py
--- a/rpython/jit/metainterp/history.py
+++ b/rpython/jit/metainterp/history.py
@@ -734,13 +734,16 @@
def repr_of_descr(self):
return 'TargetToken(%d)' % compute_unique_id(self)
-def index_of_first(opnum, operations):
+def index_of_first(opnum, operations, pass_by=0):
""" returns the position of the first operation matching the opnum.
Or -1 if non is found
"""
for i,op in enumerate(operations):
if op.getopnum() == opnum:
- return i
+ if pass_by == 0:
+ return i
+ else:
+ pass_by -= 1
return -1
@@ -849,9 +852,9 @@
def get_operations(self):
return self.operations
- def find_first_index(self, opnum):
+ def find_first_index(self, opnum, pass_by=0):
""" return the first operation having the same opnum or -1 """
- return index_of_first(opnum, self.operations)
+ return index_of_first(opnum, self.operations, pass_by)
def snapshot(self):
version = LoopVersion(self.copy_operations())
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py b/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py
@@ -357,17 +357,13 @@
i1 = int_add(i0,1)
jump(p0,i1)
"""
- vopt = self.vectoroptimizer_unrolled(self.parse_loop(ops),1)
- self.assert_edges(vopt.dependency_graph,
- [ [1,2,3,5], [5], [3,4], [5], [5], [] ], {})
-
+ loop = self.parse_loop(ops)
+ vopt = self.vectoroptimizer_unrolled(loop,1)
vopt.find_adjacent_memory_refs()
- self.assert_has_memory_ref_at(1)
- self.assert_has_memory_ref_at(3)
assert len(vopt.dependency_graph.memory_refs) == 2
- mref1 = self.getmemref(1)
- mref3 = self.getmemref(3)
+ mref1 = self.getmemref(loop.find_first_index(rop.RAW_LOAD))
+ mref3 = self.getmemref(loop.find_first_index(rop.RAW_LOAD,1))
assert isinstance(mref1, MemoryRef)
assert isinstance(mref3, MemoryRef)
@@ -493,37 +489,17 @@
i6 = int_add(i4,1)
jump(p0,i1,i6)
"""
- ops2 = """
- [p0,i0,i4]
- i3 = raw_load(p0,i0,descr=chararraydescr)
- i1 = int_add(i0,1)
- i5 = raw_load(p0,i4,descr=chararraydescr)
- i6 = int_add(i4,1)
- i3 = raw_load(p0,i1,descr=chararraydescr)
- i8 = int_add(i1,1)
- i9 = raw_load(p0,i6,descr=chararraydescr)
- i7 = int_add(i6,1)
- jump(p0,i8,i7)
- """
-
- vopt = self.vectoroptimizer_unrolled(self.parse_loop(ops),1)
- self.assert_edges(vopt.dependency_graph,
- [ [1,2,3,4,5,7,9],
- [9], [5,6], [9], [7,8],
- [9], [9], [9], [9],
- [],
- ], {})
-
+ loop = self.parse_loop(ops)
+ vopt = self.vectoroptimizer_unrolled(loop,1)
vopt.find_adjacent_memory_refs()
- for i in [1,3,5,7]:
+ f = lambda x: loop.find_first_index(rop.RAW_LOAD, x)
+ indices = [f(0),f(1),f(2),f(3)]
+ for i in indices:
self.assert_has_memory_ref_at(i)
assert len(vopt.dependency_graph.memory_refs) == 4
- mref1 = self.getmemref(1)
- mref3 = self.getmemref(3)
- mref5 = self.getmemref(5)
- mref7 = self.getmemref(7)
+ mref1, mref3, mref5, mref7 = [self.getmemref(i) for i in indices]
assert isinstance(mref1, MemoryRef)
assert isinstance(mref3, MemoryRef)
assert isinstance(mref5, MemoryRef)
@@ -1056,27 +1032,6 @@
assert opt.loop.inputargs[2] in opt.packset.accum_vars
self.debug_print_operations(opt.loop)
- def test_accumulate_int16(self):
- py.test.skip("only sum int64 on x64 is supported")
- trace = """
- [p3, i4, p1, i5, i6, i7, i8]
- guard_early_exit() [p1, i4, i5, i6, p3]
- i9 = raw_load(i7, i5, descr=int16arraydescr)
- guard_not_invalidated() [p1, i9, i4, i5, i6, p3]
- i10 = int_add(i6, i9)
- i12 = int_add(i4, 1)
- i14 = int_add(i5, 2)
- i15 = int_ge(i12, i8)
- guard_false(i15) [p1, i14, i10, i12, None, None, None, p3]
- jump(p3, i12, p1, i14, i10, i7, i8)
- """
- opt = self.schedule(self.parse_loop(trace))
- assert len(opt.packset.packs) == 2
- assert len(opt.packset.accum_vars) == 1
- assert opt.loop.inputargs[4] in opt.packset.accum_vars
- self.debug_print_operations(opt.loop)
-
-
def test_element_f45_in_guard_failargs(self):
ops = """
[p36, i28, p9, i37, p14, f34, p12, p38, f35, p39, i40, i41, p42, i43, i44, i21, i4, i0, i18]
More information about the pypy-commit
mailing list