LGTM. Thanks.
On Fri, Aug 01, 2014 at 09:40:09AM +0800, [email protected] wrote: > From: LuoXionghu <[email protected]> > > expand the gentypen with loop to reduce the redundant inline for more > than 4 components type. > > v2: add the greater than 4 componets conditon to avoid performace > degration. > > Signed-off-by: Luo Xionghu <[email protected]> > --- > backend/src/gen_builtin_vector.py | 42 > +++++++++++++++++++++++++++++++++------ > 1 file changed, 36 insertions(+), 6 deletions(-) > > diff --git a/backend/src/gen_builtin_vector.py > b/backend/src/gen_builtin_vector.py > index b100bbf..15dbaf4 100755 > --- a/backend/src/gen_builtin_vector.py > +++ b/backend/src/gen_builtin_vector.py > @@ -283,9 +283,39 @@ class builtinProto(): > formatStr += '{0} {1}param{2}'.format(ptype[0], pointerStr, > n) > > 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 = self.append(formatStr, ' uret.va[i] = > {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: > @@ -320,10 +350,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.8.1.2 > > _______________________________________________ > Beignet mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
