This patch LGTM, although just as we discussed, this patch
will not accelerate most of the builtin vector function's
compilation. As those functions are precompiled with normal
optimization options, and the for loop will be unrolled by
default.
We may need to change the precompilation logic and don't
use the default compilation option in the future.
On Fri, Oct 10, 2014 at 03:01:27PM +0800, Ruiling Song wrote:
> This reverts commit c65c0087166a2194ece457d8739d06e86a857dbe.
>
> As we have handled wide integers, we can enable it now.
> ---
> backend/src/libocl/script/gen_vector.py | 45
> ++++++++++++++++++++++++++-----
> 1 file changed, 39 insertions(+), 6 deletions(-)
>
> diff --git a/backend/src/libocl/script/gen_vector.py
> b/backend/src/libocl/script/gen_vector.py
> index a91dfcf..de28552 100755
> --- a/backend/src/libocl/script/gen_vector.py
> +++ b/backend/src/libocl/script/gen_vector.py
> @@ -289,9 +289,42 @@ class builtinProto():
> formatStr += ';'
> self.append(formatStr)
> return formatStr
> - formatStr = self.append(formatStr, '{{return
> ({0}{1})('.format(vtype[0], vtype[1]))
> - self.indent = len(formatStr)
> - for j in range(0, vtype[1]):
> + if self.functionName != 'select' and ptypeSeqs[0] ==
> ptypeSeqs[self.paramCount-1] and ptype[1] > 4:
> + formatStr += '\n{ \n union{'
> + formatStr = self.append(formatStr, ' {0}
> va[{1}];'.format(vtype[0], vtype[1]))
> + formatStr = self.append(formatStr, ' {0}{1}
> vv{2};'.format(vtype[0], vtype[1], vtype[1]))
> + formatStr += '\n }uret;'
> + formatStr += '\n union{'
> + formatStr = self.append(formatStr, ' {0}
> pa[{1}];'.format(ptype[0], ptype[1]))
> + formatStr = self.append(formatStr, ' {0}{1}
> pv{2};'.format(ptype[0], ptype[1], ptype[1]))
> + formatStr += '\n }'
> + for n in range(0, self.paramCount):
> + formatStr += 'usrc{0}'.format(n)
> + if n+1 != self.paramCount:
> + formatStr +=', '
> + formatStr += ';'
> +
> + for n in range(0, self.paramCount):
> + formatStr = self.append(formatStr, ' usrc{0}.pv{1} =
> param{2};'.format(n, ptype[1], n))
> + formatStr = self.append(formatStr, ' for(int i =0; i < {0};
> i++)'.format(ptype[1]))
> + formatStr += '\n uret.va[i] = '
> + if self.prefix == 'relational' and self.functionName !=
> 'bitselect' and self.functionName != 'select':
> + formatStr += '-'
> + formatStr += '{0}('.format(self.functionName)
> +
> + for n in range(0, self.paramCount):
> + formatStr += 'usrc{0}.pa[i]'.format(n)
> + if n+1 != self.paramCount:
> + formatStr +=', '
> + formatStr += ');'
> + formatStr = self.append(formatStr, ' return
> uret.vv{0};'.format(vtype[1]))
> + formatStr += '\n}'
> + formatStr = self.append(formatStr)
> + return formatStr
> + else:
> + formatStr = self.append(formatStr, '{{return
> ({0}{1})('.format(vtype[0], vtype[1]))
> + self.indent = len(formatStr)
> + for j in range(0, vtype[1]):
> if (j != 0):
> formatStr += ','
> if (j + 1) % 2 == 0:
> @@ -326,10 +359,10 @@ class builtinProto():
>
> formatStr += ')'
>
> - formatStr += '); }\n'
> - self.append(formatStr)
> + formatStr += '); }\n'
> + self.append(formatStr)
>
> - return formatStr
> + return formatStr
>
> def output(self):
> for line in self.outputStr:
> --
> 1.7.10.4
>
> _______________________________________________
> Beignet mailing list
> [email protected]
> http://lists.freedesktop.org/mailman/listinfo/beignet
_______________________________________________
Beignet mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/beignet