[Piglit] [PATCH 24/26] generate-cl-int-builtins.py: PEP8 compliance
Dylan Baker
baker.dylan.c at gmail.com
Wed Jul 10 15:19:15 PDT 2013
---
generated_tests/generate-cl-int-builtins.py | 690 ++++++++++++++--------------
1 file changed, 351 insertions(+), 339 deletions(-)
diff --git a/generated_tests/generate-cl-int-builtins.py b/generated_tests/generate-cl-int-builtins.py
index ae60ad2..3734031 100755
--- a/generated_tests/generate-cl-int-builtins.py
+++ b/generated_tests/generate-cl-int-builtins.py
@@ -1,34 +1,34 @@
-#!/usr/bin/env python
+# !/usr/bin/env python
import os
-#Builtins is a data structure of the following:
-# builtins = {
-# '{data_type}': { #data type is any of [u]char, [u]short, [u]int, [u]long
-# '{builtin_function_name}': {
-# 'arg_types': ['{data_type}', '{data_type}', ...],
-# 'function_type': 'ttt'|'tss',
-# #ttt = all arguments are same-length vectors
-# #tss = all arguments are either same-length vectors,
+# Builtins is a data structure of the following:
+# builtins = {
+# '{data_type}': { # data type is any of [u]char, [u]short, [u]int, [u]long
+# '{builtin_function_name}': {
+# 'arg_types': ['{data_type}', '{data_type}', ...],
+# 'function_type': 'ttt'|'tss',
+# ttt = all arguments are same-length vectors
+# tss = all arguments are either same-length vectors,
# or a vector followed by scalars
-# 'values': [
-# [array of test output (arg0) values],
-# [array of arg1 values],
-# [array of arg2 values],
-# ...
-# ]
-# },
-# '{next_function}': {...},
-# ...
-# },
-# '{next_type}': {...},
-# ...
-# }
+# 'values': [
+# [array of test output (arg0) values],
+# [array of arg1 values],
+# [array of arg2 values],
+# ...
+# ]
+# },
+# '{next_function}': {...},
+# ...
+# },
+# '{next_type}': {...},
+# ...
+# }
#
-# The builtins_generic, builtins_signed/unsigned are the same, but lack the
-# {datatype} layer
+# The builtins_generic, builtins_signed/unsigned are the same, but lack the
+# {datatype} layer
-#Define placeholders to reduce magic number usage
+# Define placeholders to reduce magic number usage
MAX = 'MAX_VAL'
MIN = 'MIN_VAL'
@@ -36,78 +36,78 @@ SIGNED_TYPES = ['char', 'short', 'int', 'long']
UNSIGNED_TYPES = ['uchar', 'ushort', 'uint', 'ulong']
DATA_TYPES = SIGNED_TYPES + UNSIGNED_TYPES
DATA_SIZES = {
- 'char' : 8,
- 'uchar' : 8,
- 'short' : 16,
+ 'char': 8,
+ 'uchar': 8,
+ 'short': 16,
'ushort': 16,
- 'int' : 32,
- 'uint' : 32,
- 'long' : 64,
- 'ulong' : 64
+ 'int': 32,
+ 'uint': 32,
+ 'long': 64,
+ 'ulong': 64
}
-#By default, just test what is part of the CL1.1 spec, leave vec3 for later
-#VEC_WIDTHS = (2, 3, 4, 8, 16)
+# By default, just test what is part of the CL1.1 spec, leave vec3 for later
+# VEC_WIDTHS = (2, 3, 4, 8, 16)
VEC_WIDTHS = (2, 4, 8, 16)
-#ALL_WIDTHS = [1, 2, 3, 4, 8, 16]
+# ALL_WIDTHS = [1, 2, 3, 4, 8, 16]
ALL_WIDTHS = [1, 2, 4, 8, 16]
MIN_VALUES = {
- 'char' : -128,
- 'uchar' : 0,
- 'short' : -32768,
- 'ushort' : 0,
- 'int' : -2147483648,
- 'uint' : 0,
- 'long' : -9223372036854775808,
- 'ulong' : 0
+ 'char': -128,
+ 'uchar': 0,
+ 'short': -32768,
+ 'ushort': 0,
+ 'int': -2147483648,
+ 'uint': 0,
+ 'long': -9223372036854775808,
+ 'ulong': 0
}
MAX_VALUES = {
- 'char' : 127,
- 'uchar' : 255,
- 'short' : 32767,
- 'ushort' : 65535,
- 'int' : 2147483647,
- 'uint' : 4294967295,
- 'long' : 9223372036854775807,
- 'ulong' : 18446744073709551615
+ 'char': 127,
+ 'uchar': 255,
+ 'short': 32767,
+ 'ushort': 65535,
+ 'int': 2147483647,
+ 'uint': 4294967295,
+ 'long': 9223372036854775807,
+ 'ulong': 18446744073709551615
}
-#Identity type list
+# Identity type list
T = {
- 'char' : 'char',
- 'uchar' : 'uchar',
- 'short' : 'short',
+ 'char': 'char',
+ 'uchar': 'uchar',
+ 'short': 'short',
'ushort': 'ushort',
- 'int' : 'int',
- 'uint' : 'uint',
- 'long' : 'long',
- 'ulong' : 'ulong'
+ 'int': 'int',
+ 'uint': 'uint',
+ 'long': 'long',
+ 'ulong': 'ulong'
}
-#Signed type for each type
+# Signed type for each type
SIGNED = {
- 'char' : 'char',
- 'uchar' : 'char',
- 'short' : 'short',
+ 'char': 'char',
+ 'uchar': 'char',
+ 'short': 'short',
'ushort': 'short',
- 'int' : 'int',
- 'uint' : 'int',
- 'long' : 'long',
- 'ulong' : 'long'
+ 'int': 'int',
+ 'uint': 'int',
+ 'long': 'long',
+ 'ulong': 'long'
}
-#Unsigned type for each source type
+# Unsigned type for each source type
U = {
- 'char' : 'uchar',
- 'uchar' : 'uchar',
- 'short' : 'ushort',
+ 'char': 'uchar',
+ 'uchar': 'uchar',
+ 'short': 'ushort',
'ushort': 'ushort',
- 'int' : 'uint',
- 'uint' : 'uint',
- 'long' : 'ulong',
- 'ulong' : 'ulong'
+ 'int': 'uint',
+ 'uint': 'uint',
+ 'long': 'ulong',
+ 'ulong': 'ulong'
}
-#Next larger type with same signedness
+# Next larger type with same signedness
B = {
'char': 'short',
'uchar': 'ushort',
@@ -127,100 +127,113 @@ TYPE = 'TYPE'
SIZE = 'SIZE'
CLC_VERSION_MIN = {
- 'abs' : 10,
- 'abs_diff' : 10,
- 'add_sat' : 10,
- 'hadd' : 10,
- 'rhadd' : 10,
- 'clz' : 10,
- 'clamp' : 11,
- 'mad_hi' : 10,
- 'mad_sat' : 10,
- 'max' : 11, #max/min are only same-size in CL1.0, but TSS in CL1.1
- 'min' : 11,
- 'mul_hi' : 10,
- 'rotate' : 10,
- 'sub_sat' : 10,
- 'upsample' : 10,
- 'mad24' : 10,
- 'mul24' : 10
-}
+ 'abs': 10,
+ 'abs_diff': 10,
+ 'add_sat': 10,
+ 'hadd': 10,
+ 'rhadd': 10,
+ 'clz': 10,
+ 'clamp': 11,
+ 'mad_hi': 10,
+ 'mad_sat': 10,
+ 'max': 11, # max/min are only same-size in CL1.0, but TSS in CL1.1
+ 'min': 11,
+ 'mul_hi': 10,
+ 'rotate': 10,
+ 'sub_sat': 10,
+ 'upsample': 10,
+ 'mad24': 10,
+ 'mul24': 10}
+
def abs(val):
if (val < 0):
return val*-1
return val
+
def add(val1, val2):
return val1+val2
-#Given a data type, return the next bigger type of given signedness.
+
+# Given a data type, return the next bigger type of given signedness.
def big(type):
return B[type]
+
def clz(type, val):
if (val < 0):
return 0
else:
- #Count the number of times that we can right shift before value = 0 then
- #subtract that from (data_size - 1)
- count=0
+ # Count the number of times that we can right shift before value = 0
+ # then subtract that from (data_size - 1)
+ count = 0
while(val > 0):
if (val > 0):
val = val >> 1
count = count + 1
return DATA_SIZES[type] - count
+
def div(val1, val2):
return val1 / val2
+
def mad_hi(x, y, z, type):
res = (x*y) >> DATA_SIZES[type]
res = res + z
- while (res > MAX_VALUES[type]): #Emulate overflow... Necessary?
+ while (res > MAX_VALUES[type]): # Emulate overflow... Necessary?
res = res - (2**DATA_SIZES[type])
return res
+
def mul(val1, val2):
return val1 * val2
-def mul_hi(x,y,type):
+
+def mul_hi(x, y, type):
res = (x*y) >> DATA_SIZES[type]
return res
-#def pop(val,type):
-# #TODO: Calculate number of non-zero bits in value (CLC 1.2)
-# return 0
+# def pop(val,type):
+# # TODO: Calculate number of non-zero bits in value (CLC 1.2)
+# return 0
+
-def pow(val,pow):
+def pow(val, pow):
return val ** pow
+
def rotate_right(x, n, bits):
- #Find all bits that will wrap
+ # Find all bits that will wrap
mask = (2L**n) - 1
wrapped_bits = x & mask
- #sign extension needs to be masked out
- se_mask = (1 << (bits - n)) - 1;
- unwrapped_bits = x >> n;
- unwrapped_bits &= se_mask;
+ # sign extension needs to be masked out
+ se_mask = (1 << (bits - n)) - 1
+ unwrapped_bits = x >> n
+ unwrapped_bits &= se_mask
return unwrapped_bits | (wrapped_bits << (bits - n))
+
def rotate_left(x, n, bits):
return rotate_right(x, bits - n, bits)
+
def rot(x, n, bits):
if (n < 0):
return rotate_right(x, -1*n, bits)
else:
return rotate_left(x, n, bits)
+
def sub(val1, val2):
return val1-val2
+
def getValue(type, val):
- #Check if val is a str, list, or value
+ # Check if val is a str, list, or value
if (isinstance(val, str)):
if (val == MIN):
return MIN_VALUES[type]
@@ -243,108 +256,103 @@ def getValue(type, val):
elif (val == SIZE):
return DATA_SIZES[type]
else:
- print('Unknown string value: '+val+'\n')
+ print('Unknown string value: ' + val + '\n')
elif (isinstance(val, list)):
- #The list should be of the format: [op, arg1, ... argN] where op is a Fn
- #ref and arg[1-n] are either MIN/MAX or numbers (They could be nested
- #lists). The exception for arg1 is TYPE, which means to substitute the
- #data type
+ # The list should be of the format: [op, arg1, ... argN] where op is a
+ # Fn ref and arg[1-n] are either MIN/MAX or numbers (They could be
+ # nested lists). The exception for arg1 is TYPE, which means to
+ # substitute the data type
- #Evaluate the value of the requested function and arguments
- #TODO: Change to varargs calls after unshifting the first list element
+ # Evaluate the value of the requested function and arguments
+ # TODO: Change to varargs calls after unshifting the first list element
if (len(val) == 2):
- return (val[0])(getValue(type,val[1]))
+ return (val[0])(getValue(type, val[1]))
elif (len(val) == 3):
- return (val[0])(getValue(type,val[1]), getValue(type, val[2]))
+ return (val[0])(getValue(type, val[1]), getValue(type, val[2]))
elif (len(val) == 4):
- return (val[0])(getValue(type,val[1]), getValue(type, val[2]), \
- getValue(type, val[3]))
+ return (val[0])(getValue(type, val[1]), getValue(type, val[2]),
+ getValue(type, val[3]))
else:
- return (val[0])(getValue(type,val[1]), getValue(type, val[2]), \
- getValue(type, val[3]), getValue(type, val[4]))
+ return (val[0])(getValue(type, val[1]), getValue(type, val[2]),
+ getValue(type, val[3]), getValue(type, val[4]))
- #At this point, we should have been passed a number
+ # At this point, we should have been passed a number
if (isinstance(val, (int, long))):
- return val;
+ return val
print('Invalid value '+repr(val)+' encountered in getValue\n')
+
def getStrVal(type, val):
- return str(getValue(type,val))
+ return str(getValue(type, val))
+
-#Tests which don't depend on the signedness or bit-width of the inputs
+# Tests which don't depend on the signedness or bit-width of the inputs
generic_tests = {
'abs': {
'arg_types': [U, T],
'function_type': 'ttt',
'values': [
- [0, 2, [abs,MIN], [abs,MAX]],
- [0, 2, MIN, MAX]
+ [0, 2, [abs, MIN], [abs, MAX]],
+ [0, 2, MIN, MAX]
]
},
'abs_diff': {
- 'arg_types': [U, T, T],
- 'function_type': 'ttt',
- 'values': [
- [0, 1, 1, UMAX, UMAX],
- [0, 1, 0, MIN, MAX],
- [0, 0, 1, MAX, MIN]
- ]
+ 'arg_types': [U, T, T],
+ 'function_type': 'ttt',
+ 'values': [
+ [0, 1, 1, UMAX, UMAX],
+ [0, 1, 0, MIN, MAX],
+ [0, 0, 1, MAX, MIN]
+ ]
},
'add_sat': {
'arg_types': [T, T, T],
'function_type': 'ttt',
'values': [
- [MAX, MAX ],
- [MAX, [sub,MAX,1]],
- [ 64, 50 ]
+ [MAX, MAX],
+ [MAX, [sub, MAX, 1]],
+ [64, 50]
]
},
'hadd': {
'arg_types': [T, T, T],
'function_type': 'ttt',
'values': [
- [32, 0, 10, MAX, MIN,
- [div,[add,MAX,MIN], 2],
- [div,[add,MIN,MAX], 2]
- ],
+ [32, 0, 10, MAX, MIN, [div, [add, MAX, MIN], 2],
+ [div, [add, MIN, MAX], 2]],
[32, 1, 12, MAX, MIN, MAX, MIN],
- [33, 0, 8, MAX, MIN, MIN, MAX]
+ [33, 0, 8, MAX, MIN, MIN, MAX]
]
},
'clz': {
'arg_types': [T, T],
'function_type': 'ttt',
'values': [
- [ [clz,TYPE,1], [clz,TYPE,64], [clz,TYPE,0], [clz,TYPE, MAX],
- [clz,TYPE,MIN]
- ],
- [ 1 , 64 , 0 , MAX ,
- MIN
- ]
- ]
+ [[clz, TYPE, 1], [clz, TYPE, 64], [clz, TYPE, 0], [clz, TYPE, MAX],
+ [clz, TYPE, MIN]], [1, 64, 0, MAX, MIN]]
},
'clamp': {
'arg_types': [T, T, T, T],
'function_type': 'tss',
'values': [
- [64, [div, MIN, 2], 1],
- [92, MIN, 64],
- [ 0, [div, MIN, 2], 0],
- [64, 0, 1]
+ [64, [div, MIN, 2], 1],
+ [92, MIN, 64],
+ [0, [div, MIN, 2], 0],
+ [64, 0, 1]
]
},
'mad_hi': {
'arg_types': [T, T, T, T],
'function_type': 'ttt',
'values': [
- [ [mad_hi,[div,MAX,2],3,1,TYPE], [mad_hi,MIN,2,2,TYPE], 4, 1,
- [mad_hi,MAX,MAX,MAX,TYPE], [mad_hi,MIN,MIN,MIN,TYPE],
- [mad_hi,MIN,MAX,MAX,TYPE], [mad_hi,MAX, 2, 2,TYPE]
- ],
- [ [div,MAX,2], MIN, 12, MAX, MAX, MIN, MIN, MAX],
- [ 3, 2, 4, 1, MAX, MIN, MAX, 2],
- [ 1, 2, 4, 1, MAX, MIN, MAX, 2]
+ [[mad_hi, [div, MAX, 2], 3, 1, TYPE], [mad_hi, MIN, 2, 2, TYPE],
+ 4, 1, [mad_hi, MAX, MAX, MAX, TYPE],
+ [mad_hi, MIN, MIN, MIN, TYPE], [mad_hi, MIN, MAX, MAX, TYPE],
+ [mad_hi, MAX, 2, 2, TYPE]],
+ [[div, MAX, 2], MIN, 12, MAX, MAX, MIN, MIN, MAX],
+ [3, 2, 4, 1, MAX, MIN, MAX, 2],
+ [1, 2, 4, 1, MAX, MIN, MAX, 2]
]
},
'mad_sat': {
@@ -353,37 +361,36 @@ generic_tests = {
'values': [
[52, MAX, 93, 0, MAX, MAX],
[12, MAX, 92, 0, MAX, MAX],
- [ 4, 1, 1, 0, 2, MAX],
- [ 4, 1, 1, 0, 2, MAX]
+ [4, 1, 1, 0, 2, MAX],
+ [4, 1, 1, 0, 2, MAX]
]
},
'max': {
'arg_types': [T, T, T],
'function_type': 'tss',
'values': [
- [92, 2, 12, MAX, 1, MAX, MIN, MAX, MAX, 0],
- [92, 2, 12, MAX, MIN, MAX, MIN, MIN, MAX, 0],
- [ 2, MIN, 4, 1, 1, MAX, MIN, MAX, MIN, 0]
+ [92, 2, 12, MAX, 1, MAX, MIN, MAX, MAX, 0],
+ [92, 2, 12, MAX, MIN, MAX, MIN, MIN, MAX, 0],
+ [2, MIN, 4, 1, 1, MAX, MIN, MAX, MIN, 0]
]
},
'min': {
'arg_types': [T, T, T],
'function_type': 'tss',
'values': [
- [ 2, 1, MIN, 4, 1, MIN, MAX, MIN, MIN, 0, MAX],
- [92, 64, 2, 12, MAX, MIN, MAX, MIN, MIN, 0, MAX],
- [ 2, 1, MIN, 4, 1, 1, MAX, MIN, MAX, 0, MAX]
+ [2, 1, MIN, 4, 1, MIN, MAX, MIN, MIN, 0, MAX],
+ [92, 64, 2, 12, MAX, MIN, MAX, MIN, MIN, 0, MAX],
+ [2, 1, MIN, 4, 1, 1, MAX, MIN, MAX, 0, MAX]
]
},
'mul_hi': {
'arg_types': [T, T, T],
'function_type': 'ttt',
'values': [
- [0, 0, 0, [mul_hi,MAX,MAX,TYPE], [mul_hi,MIN,MIN,TYPE], 0,
- [mul_hi,MAX,2,TYPE], [div,MIN,2]
- ],
+ [0, 0, 0, [mul_hi, MAX, MAX, TYPE], [mul_hi, MIN, MIN, TYPE], 0,
+ [mul_hi, MAX, 2, TYPE], [div, MIN, 2]],
[0, 92, MAX, MAX, MIN, 92, MAX, MIN],
- [0, 2, 1, MAX, MIN, 1, 2, MAX]
+ [0, 2, 1, MAX, MIN, 1, 2, MAX]
]
},
'rhadd': {
@@ -392,76 +399,77 @@ generic_tests = {
'values': [
[33, 1, 10],
[32, 1, 12],
- [33, 0, 8]
+ [33, 0, 8]
]
},
'rotate': {
'arg_types': [T, T, T],
'function_type': 'ttt',
'values': [
- [1, 8, 1, 2, 1],
- [1, 1, 1, 1, 1],
- [0, 3, SIZE, [add,SIZE,1], [mul,SIZE,10]]
+ [1, 8, 1, 2, 1],
+ [1, 1, 1, 1, 1],
+ [0, 3, SIZE, [add, SIZE, 1], [mul, SIZE, 10]]
]
},
'sub_sat': {
'arg_types': [T, T, T],
'function_type': 'ttt',
'values': [
- [1, 25, MAX, 0, 0, MIN, MIN],
- [1, 57, MAX, MAX, MIN, MIN, [div,MIN,2]],
- [0, 32, MIN, MAX, MIN, MAX, [add,[div,MAX,2],1]]
+ [1, 25, MAX, 0, 0, MIN, MIN],
+ [1, 57, MAX, MAX, MIN, MIN, [div, MIN, 2]],
+ [0, 32, MIN, MAX, MIN, MAX, [add, [div, MAX, 2], 1]]
]
},
'upsample': {
- 'arg_types': [B,T,U],
+ 'arg_types': [B, T, U],
'function_type': 'ttt',
'values': [
- [[pow,2,SIZE], [add,[pow,2,SIZE],1], BMAX, 0, MAX,
- [add,[pow,2,SIZE],7]
- ],
- [ 1, 1, MAX, 0, 0, 1],
- [ 0, 1, UMAX, 0, MAX, 7]
+ [[pow, 2, SIZE],
+ [add, [pow, 2, SIZE], 1],
+ BMAX, 0, MAX,
+ [add, [pow, 2, SIZE], 7]],
+ [1, 1, MAX, 0, 0, 1],
+ [0, 1, UMAX, 0, MAX, 7]
]
}
}
-#Any test that conceivably includes a negative number as input/output
+# Any test that conceivably includes a negative number as input/output
signed_generic_tests = {
'abs': {
'arg_types': [U, T],
'function_type': 'ttt',
'values': [
- [ 1, 13],
- [-1, -13]
+ [1, 13],
+ [-1, -13]
]
},
'abs_diff': {
- 'arg_types': [U, T, T],
- 'function_type': 'ttt',
- 'values': [
- [1, 15],
- [0, -8],
- [1, 7]
- ]
+ 'arg_types': [U, T, T],
+ 'function_type': 'ttt',
+ 'values': [
+ [1, 15],
+ [0, -8],
+ [1, 7]
+ ]
},
'add_sat': {
'arg_types': [T, T, T],
'function_type': 'ttt',
'values': [
- [ 0, -2, [sub,MAX,63], MIN, MIN ],
- [ 32, -8, MAX, MIN, [add,MIN,10]],
- [-32, 6, -63, -12, -50 ]
+ [0, -2, [sub, MAX, 63], MIN, MIN],
+ [32, -8, MAX, MIN, [add, MIN, 10]],
+ [-32, 6, -63, -12, -50]
]
},
'clamp': {
'arg_types': [T, T, T, T],
'function_type': 'tss',
'values': [
- [ -64, 0],
+ [-64, 0],
[-128, -1],
- [ -64, 0],
- [ 0, 1]
+ [-64, 0],
+ [0, 1]
]
},
'mad_hi': {
@@ -469,7 +477,7 @@ signed_generic_tests = {
'function_type': 'ttt',
'values': [
[MIN, -2],
- [ -1, 1],
+ [-1, 1],
[MIN, -1],
[MIN, -1]
]
@@ -478,19 +486,19 @@ signed_generic_tests = {
'arg_types': [T, T, T, T],
'function_type': 'ttt',
'values': [
- [ 0, MIN, MIN, MAX, MIN, -2],
- [ -1, MIN, MIN, MIN, MIN, 1],
- [ MIN, 2, 1, MIN, MAX, -1],
- [ MIN, 2, -1, MIN, MAX, -1]
+ [0, MIN, MIN, MAX, MIN, -2],
+ [-1, MIN, MIN, MIN, MIN, 1],
+ [MIN, 2, 1, MIN, MAX, -1],
+ [MIN, 2, -1, MIN, MAX, -1]
]
},
'max': {
'arg_types': [T, T, T],
'function_type': 'tss',
'values': [
- [ -1, 1],
- [ -1, 1],
- [ MIN, -1]
+ [-1, 1],
+ [-1, 1],
+ [MIN, -1]
]
},
'min': {
@@ -498,17 +506,17 @@ signed_generic_tests = {
'function_type': 'tss',
'values': [
[MIN, -1, MIN],
- [ -1, 1, MIN],
- [MIN, -1, -1]
+ [-1, 1, MIN],
+ [MIN, -1, -1]
]
},
'mul_hi': {
'arg_types': [T, T, T],
'function_type': 'ttt',
'values': [
- [ 0, -1, -1, -1],
- [ -1, MIN, MIN, 1],
- [MIN, 2, 1, -1]
+ [0, -1, -1, -1],
+ [-1, MIN, MIN, 1],
+ [MIN, 2, 1, -1]
]
},
'rhadd': {
@@ -524,63 +532,61 @@ signed_generic_tests = {
'arg_types': [T, T, T],
'function_type': 'ttt',
'values': [
- [ MIN, MIN, [rot,1,-3,SIZE], 1,
- MIN, [pow,2,[sub,SIZE,2]], MIN, [rot,-2,-1,SIZE]],
- [ 1, 1, 1, 1,
- 1, 1, 1, -2],
- [[sub,SIZE,1], -1, -3, [mul,SIZE,-1],
- [mul,[add,SIZE,1],-1], [mul,[add,SIZE,2],-1], [sub,SIZE,1], -1]
+ [MIN, MIN, [rot, 1, -3, SIZE], 1, MIN, [pow, 2, [sub, SIZE, 2]],
+ MIN, [rot, -2, -1, SIZE]], [1, 1, 1, 1, 1, 1, 1, -2],
+ [[sub, SIZE, 1], -1, -3, [mul, SIZE, -1],
+ [mul, [add, SIZE, 1], -1],
+ [mul, [add, SIZE, 2], -1], [sub, SIZE, 1], -1]
]
},
'sub_sat': {
'arg_types': [T, T, T],
'function_type': 'ttt',
'values': [
- [ MAX , 81],
- [[sub,MAX,8], 1],
- [ -32 , -80]
+ [MAX, 81],
+ [[sub, MAX, 8], 1],
+ [-32, -80]
]
},
'upsample': {
- 'arg_types': [B,T,U],
+ 'arg_types': [B, T, U],
'function_type': 'ttt',
'values': [
- [ -1, [mul,[pow,2,SIZE],-1]],
- [ -1, -1],
- [ UMAX, 0]
+ [-1, [mul, [pow, 2, SIZE], -1]],
+ [-1, -1],
+ [UMAX, 0]
]
}
}
-#This list contains all numeric tests which never include negative integers
-#that can't go into generic_tests.
+# This list contains all numeric tests which never include negative integers
+# that can't go into generic_tests.
unsigned_generic_tests = {
'mad_sat': {
'arg_types': [T, T, T, T],
'function_type': 'ttt',
'values': [
- [ 2, MIN, MAX],
+ [2, MIN, MAX],
[MIN, MIN, MIN],
- [ 2, MIN, MAX],
- [ 2, MIN, MAX]
+ [2, MIN, MAX],
+ [2, MIN, MAX]
]
},
'rotate': {
'arg_types': [T, T, T],
'function_type': 'ttt',
'values': [
- [[div,[add,MAX,1],2], [div,[add,MAX,1],2]],
- [ 1, 1],
- [ [sub,SIZE,1], [sub,SIZE,1]]
+ [[div, [add, MAX, 1], 2], [div, [add, MAX, 1], 2]],
+ [1, 1], [[sub, SIZE, 1], [sub, SIZE, 1]]
]
},
}
-#Hand-coded tests which are data type specific.
+# Hand-coded tests which are data type specific.
builtins = {
'int': {
- 'mad24':{
+ 'mad24': {
'arg_types': [T, T, T, T],
'function_type': 'ttt',
'values': [
@@ -590,18 +596,18 @@ builtins = {
[0, 1, -1, 8]
]
},
- 'mul24':{
+ 'mul24': {
'arg_types': [T, T, T],
'function_type': 'ttt',
'values': [
- [0,1, 1, 512, 4278190081],
- [0,1,-1, 32, 2**23-1],
- [0,1,-1, 16, 2**23-1]
+ [0, 1, 1, 512, 4278190081],
+ [0, 1, -1, 32, 2**23-1],
+ [0, 1, -1, 16, 2**23-1]
]
}
},
'uint': {
- 'mad24':{
+ 'mad24': {
'arg_types': [T, T, T, T],
'function_type': 'ttt',
'values': [
@@ -611,19 +617,21 @@ builtins = {
[0, 1, 2**24-1, 8]
]
},
- 'mul24':{
+ 'mul24': {
'arg_types': [T, T, T],
'function_type': 'ttt',
'values': [
- [0,1,4261412865, 512],
- [0,1, 2**24-1, 32],
- [0,1, 2**24-1, 16]
+ [0, 1, 4261412865, 512],
+ [0, 1, 2**24-1, 32],
+ [0, 1, 2**24-1, 16]
]
}
}
}
-#### Define helper functions ####
+
+# # # # Define helper functions # # # #
+
def addTestValues(origDef, origValues):
fnDef = dict(origDef)
@@ -632,14 +640,14 @@ def addTestValues(origDef, origValues):
fnDef['values'] = []
for idx in range(0, len(values)):
fnDef['values'].append(list(values[idx]))
-
else:
for arg in range(0, len(values)):
fnDef['values'][arg] += values[arg]
return fnDef
-#Given a data type and function name, create one set of combined applicable
-#test definitions.
+
+# Given a data type and function name, create one set of combined applicable
+# test definitions.
def mergedTestDefinition(dataType, fnName):
mergedTest = dict()
@@ -660,6 +668,7 @@ def mergedTestDefinition(dataType, fnName):
mergedTest = addTestValues(dict(mergedTest), list(fnDef['values']))
return mergedTest
+
def getFnNames():
fnNames = []
fnNames += generic_tests.keys()
@@ -669,15 +678,15 @@ def getFnNames():
if (type in builtins):
fnNames += builtins[type].keys()
- #Get the sorted unique set of function names
+ # Get the sorted unique set of function names
return sorted(list(set(fnNames)))
-#vecSizes has the layout [in0width, ..., inNwidth] where outType width is
-#assumed to match the width of the first input
+
+# vecSizes has the layout [in0width, ..., inNwidth] where outType width is
+# assumed to match the width of the first input
def gen_kernel(f, fnName, inTypes, outType, vecSizes, typePrefix):
- f.write( \
- 'kernel void test_' + typePrefix + str(vecSizes[0]) + '_' + fnName + \
- '_' + inTypes[0]+'(global '+outType+'* out')
+ f.write('kernel void test_' + typePrefix + str(vecSizes[0]) + '_' + fnName
+ + '_' + inTypes[0]+'(global '+outType+'* out')
for arg in range(0, len(inTypes)):
f.write(', global '+inTypes[arg]+'* in'+str(arg))
f.write('){\n')
@@ -695,7 +704,7 @@ def gen_kernel(f, fnName, inTypes, outType, vecSizes, typePrefix):
for arg in range(0, len(inTypes)):
if (arg > 0):
f.write(', ')
- #if scalar, don't print vload/vstore
+ # if scalar, don't print vload/vstore
if (vecSizes[arg] == 1):
f.write('*in'+str(arg))
else:
@@ -705,47 +714,47 @@ def gen_kernel(f, fnName, inTypes, outType, vecSizes, typePrefix):
def getArgType(baseType, argType):
- #If the argType is a string, it's a literal data type... return it
+ # If the argType is a string, it's a literal data type... return it
if (isinstance(argType, str)):
return argType
- #otherwise it's a list to pick from
+ # otherwise it's a list to pick from
return argType[baseType]
+
def getArgTypes(baseType, argTypes):
ret = []
for argType in argTypes:
- ret.append(getArgType(baseType,argType))
+ ret.append(getArgType(baseType, argType))
return ret
-#Print a test with all-vector inputs/outputs and/or mixed vector/scalar args
+
+# Print a test with all-vector inputs/outputs and/or mixed vector/scalar args
def print_test(f, fnName, argType, functionDef, tests, testIdx, vecSize, tss):
- #If the test allows mixed vector/scalar arguments, handle the case with
- #only vector arguments through a recursive call.
+ # If the test allows mixed vector/scalar arguments, handle the case with
+ # only vector arguments through a recursive call.
if (tss):
- print_test(f, fnName, argType, functionDef, tests, testIdx, vecSize, \
- False)
+ print_test(f, fnName, argType, functionDef, tests, testIdx, vecSize,
+ False)
- #The tss && vecSize==1 case is handled in the non-tss case.
+ # The tss && vecSize==1 case is handled in the non-tss case.
if (tss and vecSize == 1):
return
- #If we're handling mixed vector/scalar input widths, the kernels have
- #different names than when the vector widths match
+ # If we're handling mixed vector/scalar input widths, the kernels have
+ # different names than when the vector widths match
tssStr = 'tss_'
if (not tss):
tssStr = ''
- #Write the test header
- f.write('[test]\n' + \
- 'name: ' + fnName + ' ' + argType + str(vecSize) + '\n' + \
- 'kernel_name: test_'+ tssStr + str(vecSize) + '_' + fnName + '_' + \
- argType + '\n'
- )
+ # Write the test header
+ f.write('[test]\n' + 'name: ' + fnName + ' ' + argType + str(vecSize) +
+ '\n' + 'kernel_name: test_' + tssStr + str(vecSize) + '_' + fnName
+ + '_' + argType + '\n')
argTypes = getArgTypes(argType, functionDef['arg_types'])
argCount = len(argTypes)
- #For each argument, write a line containing its type, index, and values
+ # For each argument, write a line containing its type, index, and values
for arg in range(0, argCount):
argInOut = ''
argVal = getStrVal(argType, tests[arg][testIdx])
@@ -754,70 +763,75 @@ def print_test(f, fnName, argType, functionDef, tests, testIdx, vecSize, tss):
else:
argInOut = 'arg_in: '
- #The output argument and first tss argument are vectors, any that follow
- #are scalar. If !tss, then everything has a matching vector width
+ # The output argument and first tss argument are vectors, any that
+ # follow are scalar. If !tss, then everything has a matching vector
+ # width
if (arg < 2 or not tss):
- f.write(argInOut + str(arg) + ' buffer ' + argTypes[arg] + \
- '[' + str(vecSize) + '] ' + \
- ' '.join([argVal]*vecSize) + \
- '\n'
- )
+ f.write(argInOut + str(arg) + ' buffer ' + argTypes[arg] +
+ '[' + str(vecSize) + '] ' + ' '.join([argVal]*vecSize) +
+ '\n')
else:
argInOut = 'arg_in: '
- f.write(argInOut + str(arg) + ' buffer ' + argTypes[arg] + \
- '[1] ' + argVal + '\n'
- )
+ f.write(argInOut + str(arg) + ' buffer ' + argTypes[arg] + '[1] ' +
+ argVal + '\n')
- #Blank line between tests for formatting reasons
+ # Blank line between tests for formatting reasons
f.write('\n')
+
def gen_kernel_1_arg(f, fnName, inType, outType):
for vecSize in ALL_WIDTHS:
gen_kernel(f, fnName, [inType], outType, [vecSize], '')
-# 2 argument kernel with input types that match
+
+# 2 argument kernel with input types that match
def gen_kernel_2_arg_same_type(f, fnName, inType, outType):
for vecSize in ALL_WIDTHS:
- gen_kernel(f, fnName, [inType, inType], outType, [vecSize, vecSize], '')
+ gen_kernel(f, fnName, [inType, inType], outType, [vecSize, vecSize],
+ '')
+
-# 2 argument kernel with 1 vector and one scalar input argument
+# 2 argument kernel with 1 vector and one scalar input argument
def gen_kernel_2_arg_mixed_size(f, fnName, inType, outType):
for vecSize in VEC_WIDTHS:
gen_kernel(f, fnName, [inType, inType], outType, [vecSize, 1], 'tss_')
-# 2 argument kernel with 1 vector and one scalar input argument with multiple
-# input data types
+
+# 2 argument kernel with 1 vector and one scalar input argument with multiple
+# input data types
def gen_kernel_2_arg_mixed_sign(f, fnName, inType1, inType2, outType):
for vecSize in ALL_WIDTHS:
- gen_kernel(f, fnName, [inType1, inType2], outType, [vecSize, vecSize], \
- '')
+ gen_kernel(f, fnName, [inType1, inType2], outType, [vecSize, vecSize],
+ '')
+
+
+# 3-argument built-in functions
-# 3-argument built-in functions
def gen_kernel_3_arg_same_type(f, fnName, inType, outType):
for vecSize in ALL_WIDTHS:
- gen_kernel(f, fnName, [inType, inType, inType], outType, \
- [vecSize, vecSize, vecSize], '')
+ gen_kernel(f, fnName, [inType, inType, inType], outType,
+ [vecSize, vecSize, vecSize], '')
+
def gen_kernel_3_arg_mixed_size_vector(f, fnName, inType, outType, vecSize):
- f.write( \
- 'kernel void test_tss_' + vecSize + '_' + fnName + '_' + inType + \
- '(global ' + outType + '* out, global ' + inType + '* in1, global ' + \
- inType+'* in2, global '+inType+'* in3){\n' + \
- ' vstore' + vecSize + '(' + fnName + '(vload' + vecSize + \
- '(0, in1), *in2, *in3), 0, out);\n' + \
- '}\n\n'
- )
+ f.write('kernel void test_tss_' + vecSize + '_' + fnName + '_' + inType +
+ '(global ' + outType + '* out, global ' + inType + '* in1, global '
+ + inType+'* in2, global '+inType+'* in3){\n' + ' vstore' + vecSize
+ + '(' + fnName + '(vload' + vecSize +
+ '(0, in1), *in2, *in3), 0, out);\n' + '}\n\n')
+
def gen_kernel_3_arg_mixed_size(f, fnName, inType, outType):
for vecSize in VEC_WIDTHS:
- gen_kernel(f, fnName, [inType, inType, inType], outType, \
- [vecSize, 1, 1], 'tss_')
+ gen_kernel(f, fnName, [inType, inType, inType], outType,
+ [vecSize, 1, 1], 'tss_')
+
def generate_kernels(f, dataType, fnName, fnDef):
- argTypes = getArgTypes(dataType,fnDef['arg_types'])
+ argTypes = getArgTypes(dataType, fnDef['arg_types'])
- #For len(argTypes), remember that this includes the output arg
+ # For len(argTypes), remember that this includes the output arg
if (len(argTypes) == 2):
gen_kernel_1_arg(f, fnName, argTypes[1], argTypes[0])
return
@@ -835,29 +849,29 @@ def generate_kernels(f, dataType, fnName, fnDef):
return
if (fnName is 'upsample'):
- gen_kernel_2_arg_mixed_sign(f, fnName, argTypes[1], argTypes[2], \
- argTypes[0])
+ gen_kernel_2_arg_mixed_sign(f, fnName, argTypes[1], argTypes[2],
+ argTypes[0])
return
-#### Main logic start ####
def main():
- #Create the output directory if required
- dirName = os.path.join( "cl", "builtin", "int")
+ # Create the output directory if required
+ dirName = os.path.join("cl", "builtin", "int")
if not os.path.exists(dirName):
os.makedirs(dirName)
- #Loop over all data types being tested. Create one output file per data type
+ # Loop over all data types being tested. Create one output file per data
+ # type
for dataType in DATA_TYPES:
- functions = getFnNames() #List of all built-in functions
+ functions = getFnNames() # List of all built-in functions
for fnName in functions:
- if (fnName is 'upsample' and (dataType is 'long' \
- or dataType is 'ulong')):
+ if (fnName is 'upsample' and
+ (dataType is 'long' or dataType is 'ulong')):
continue
- #Merge all of the generic/signed/unsigned/custom test definitions
+ # Merge all of the generic/signed/unsigned/custom test definitions
functionDef = mergedTestDefinition(dataType, fnName)
- #Check if the function actually exists for this data type
+ # Check if the function actually exists for this data type
if (not functionDef.keys()):
continue
@@ -870,17 +884,15 @@ def main():
f = open(fileName, 'w')
print(fileName)
- #Write the file header
- f.write( \
- '/*!\n' + \
- '[config]\n' + \
- 'name: Test '+dataType+' '+fnName+' built-in on CL 1.1\n'+ \
- 'clc_version_min: '+str(clcVersionMin)+'\n' + \
- 'dimensions: 1\n' + \
- 'global_size: 1 0 0\n\n'
- )
-
- #Write all tests for the built-in function
+ # Write the file header
+ f.write('/*!\n' +
+ '[config]\n' +
+ 'name: Test '+dataType+' '+fnName+' built-in on CL 1.1\n' +
+ 'clc_version_min: '+str(clcVersionMin)+'\n' +
+ 'dimensions: 1\n' +
+ 'global_size: 1 0 0\n\n')
+
+ # Write all tests for the built-in function
tests = functionDef['values']
argCount = len(functionDef['arg_types'])
fnType = functionDef['function_type']
@@ -888,20 +900,20 @@ def main():
outputValues = tests[0]
numTests = len(outputValues)
- #Handle all available scalar/vector widths
+ # Handle all available scalar/vector widths
sizes = sorted(VEC_WIDTHS)
- sizes.insert(0,1) #Add 1-wide scalar to the vector widths
+ sizes.insert(0, 1) # Add 1-wide scalar to the vector widths
for vecSize in sizes:
for testIdx in range(0, numTests):
- print_test(f, fnName, dataType, functionDef, tests, \
- testIdx, vecSize, (fnType is 'tss'))
+ print_test(f, fnName, dataType, functionDef, tests,
+ testIdx, vecSize, (fnType is 'tss'))
- #Terminate the header section
+ # Terminate the header section
f.write('!*/\n\n')
- #Generate the actual kernels
+ # Generate the actual kernels
generate_kernels(f, dataType, fnName, functionDef)
- #Hopefully this next part is obvious :)
f.close()
+
main()
--
1.8.3.1
More information about the Piglit
mailing list