On Fri, 2017-09-08 at 11:32 -0700, Dylan Baker wrote: > Quoting Jan Vesely (2017-09-01 12:30:52) > [snip] > > diff --git a/generated_tests/gen_cl_shuffle2_builtins.py > > b/generated_tests/gen_cl_shuffle2_builtins.py > > new file mode 100644 > > index 000000000..677917210 > > --- /dev/null > > +++ b/generated_tests/gen_cl_shuffle2_builtins.py > > @@ -0,0 +1,154 @@ > > +# Copyright 2013 Advanced Micro Devices, Inc. > > This also seems copy-n-pasted, probably on the other patch as well. > > > +# > > +# Permission is hereby granted, free of charge, to any person obtaining a > > +# copy of this software and associated documentation files (the > > "Software"), > > +# to deal in the Software without restriction, including without limitation > > +# the rights to use, copy, modify, merge, publish, distribute, sublicense, > > +# and/or sell copies of the Software, and to permit persons to whom the > > +# Software is furnished to do so, subject to the following conditions: > > +# > > +# The above copyright notice and this permission notice (including the next > > +# paragraph) shall be included in all copies or substantial portions of the > > +# Software. > > +# > > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > > OR > > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL > > +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR > > OTHER > > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > > FROM, > > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS > > IN THE > > +# SOFTWARE. > > +# > > +# Authors: Tom Stellard <thomas.stell...@amd.com> > > same comment on this one as the other patch
I never know what the rules are if I take an existing file and modify it. In this case there isn't much of the original left so I dropped these (both author and license) > > > +# > > +# > > + > > +from __future__ import print_function, division, absolute_import > > +import os > > +import random > > +import textwrap > > + > > +from six.moves import range > > + > > +from modules import utils > > +from genclbuiltins import MAX_VALUES > > + > > +TYPES = { > > + 'char': 'uchar', > > + 'uchar': 'uchar', > > + 'short': 'ushort', > > + 'ushort': 'ushort', > > + 'half': 'ushort', > > + 'int': 'uint', > > + 'uint': 'uint', > > + 'float': 'uint', > > + 'long': 'ulong', > > + 'ulong': 'ulong', > > + 'double': 'ulong' > > +} > > + > > +VEC_SIZES = ['2', '4', '8', '16'] > > +ELEMENTS = 8 > > + > > +DIR_NAME = os.path.join("cl", "builtin", "misc") > > + > > + > > +def gen_array(size, m): > > + return [random.randint(0, m) for i in range(size)] > > + > > + > > +def permute(data1, data2, mask, ssize, dsize): > > + ret = [] > > + for i in range(len(mask)): > > + idx = mask[i] % (2 * ssize) > > + src = data1 if idx < ssize else data2 > > + idx = mask[i] % ssize > > + ret.append(src[idx + ((i // dsize) * ssize)]) > > + return ret > > please use use enumerate here, I don't know if the list comprehension would be > very readable here, so just enumerate would be good. > > > + > > + > > +def ext_req(type_name): > > + if type_name[:6] == "double": > > + return "require_device_extensions: cl_khr_fp64" > > + if type_name[:4] == "half": > > + return "require_device_extensions: cl_khr_fp16" > > + return "" > > + > > + > > +def print_config(f, type_name, utype_name): > > + f.write(textwrap.dedent(("""\ > > + /*! > > + [config] > > + name: shuffle2 {type_name} {utype_name} > > + dimensions: 1 > > + """ + ext_req(type_name)) > > + .format(type_name=type_name, utype_name=utype_name))) > > + > > + > > +def begin_test(type_name, utype_name): > > + fileName = os.path.join(DIR_NAME, > > 'builtin-shuffle2-{}-{}.cl'.format(type_name, utype_name)) > > + print(fileName) > > + f = open(fileName, 'w') > > + print_config(f, type_name, utype_name) > > + return f > > + > > + > > +def main(): > > + random.seed(0) > > + utils.safe_makedirs(DIR_NAME) > > + > > + for t, ut in TYPES.items(): > > consider: > for t, ut in six.iteritems(TYPES), which will ensure consitent behavior > between > python2 and python3. > > > + f = begin_test(t, ut) > > + for ss in VEC_SIZES: > > + for ds in VEC_SIZES: > > consider itertools.product here as well thanks. I learn new things about python every time. I applied the recommendation in few more locations. Does the RB extend to shuffle2 as well? I can repost if you want to see the modified versions. It's also available here: https://github.com/jvesely/piglit thanks, Jan > > > + ssize = int(ss) * ELEMENTS > > + dsize = int(ds) * ELEMENTS > > + stype_name = t + ss > > + dtype_name = t + ds > > + utype_name = ut + ds > > + data1 = gen_array(ssize, MAX_VALUES['ushort']) > > + data2 = gen_array(ssize, MAX_VALUES['ushort']) > > + mask = gen_array(dsize, MAX_VALUES[ut]) > > + perm = permute(data1, data2, mask, int(ss), int(ds)) > > + f.write(textwrap.dedent(""" > > + [test] > > + name: shuffle2 {stype_name} {utype_name} > > + global_size: {elements} 0 0 > > + kernel_name: test_shuffle2_{stype_name}_{utype_name} > > + arg_out: 0 buffer {dtype_name}[{elements}] {perm} > > + arg_in: 1 buffer {stype_name}[{elements}] {data1} > > + arg_in: 2 buffer {stype_name}[{elements}] {data2} > > + arg_in: 3 buffer {utype_name}[{elements}] {mask} > > + """.format(stype_name=stype_name, utype_name=utype_name, > > + dtype_name=dtype_name, elements=ELEMENTS, > > + perm=' '.join([str(x) for x in perm]), > > + data1=' '.join([str(x) for x in data1]), > > + data2=' '.join([str(x) for x in data2]), > > + mask=' '.join([str(x) for x in mask])))) > > + > > + f.write(textwrap.dedent("""!*/""")) > > + > > + if t == "double": > > + f.write(textwrap.dedent(""" > > + #pragma OPENCL EXTENSION cl_khr_fp64: enable > > + """)) > > + if t == "half": > > + f.write(textwrap.dedent(""" > > + #pragma OPENCL EXTENSION cl_khr_fp16: enable > > + """)) > > + > > + for ss in VEC_SIZES: > > + for ds in VEC_SIZES: > > + type_name = t + ss > > + utype_name = ut + ds > > + f.write(textwrap.dedent(""" > > + kernel void > > test_shuffle2_{type_name}{ssize}_{utype_name}{dsize}(global {type_name}* > > out, global {type_name}* in1, global {type_name}* in2, global {utype_name}* > > mask) {{ > > + vstore{dsize}(shuffle2(vload{ssize}(get_global_id(0), > > in1), vload{ssize}(get_global_id(0), in2), vload{dsize}(get_global_id(0), > > mask)), get_global_id(0), out); > > + }} > > + """.format(type_name=t, utype_name=ut, ssize=ss, > > dsize=ds))) > > + > > + f.close() > > + > > + > > +if __name__ == '__main__': > > + main() > > -- > > 2.13.5 > > > > _______________________________________________ > > Piglit mailing list > > Piglit@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/piglit
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit