ENH: Use the kernel style
Necessary to extend this to L2/L3
This commit is contained in:
parent
cced76830e
commit
01717ce320
|
@ -12,390 +12,171 @@ endif
|
||||||
# addl --> passed AS IS
|
# addl --> passed AS IS
|
||||||
base_kops = [
|
base_kops = [
|
||||||
# Level 1 BLAS
|
# Level 1 BLAS
|
||||||
{
|
{ 'base': 'rot',
|
||||||
'base': 'rot',
|
|
||||||
'modes': {
|
'modes': {
|
||||||
's' : {
|
's': {'exts': {'_k': {'dir': 'arm', 'kernel': 'rot.c', 'addl': [fma3_flag]}}},
|
||||||
'dir': 'arm',
|
'd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'rot.c', 'addl': [fma3_flag]}}},
|
||||||
'kernel': 'rot.c',
|
'q': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zrot.c'}}},
|
||||||
'addl': [fma3_flag],
|
'cs': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zrot.c'}}},
|
||||||
'exts': ['_k'],
|
'zd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zrot.c'}}},
|
||||||
},
|
'xq': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zrot.c'}}},
|
||||||
'd' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'rot.c',
|
|
||||||
'addl': [fma3_flag],
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'q' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zrot.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'cs' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zrot.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'zd' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zrot.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'xq' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zrot.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{'base': 'swap',
|
{ 'base': 'swap',
|
||||||
'modes': {
|
'modes': {
|
||||||
's' : {
|
's': {'exts': {'_k': {'dir': 'arm', 'kernel': 'swap.c'}}},
|
||||||
'dir': 'arm',
|
'd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'swap.c'}}},
|
||||||
'kernel': 'swap.c',
|
'q': {'exts': {'_k': {'dir': 'x86_64', 'kernel': 'swap.S'}}},
|
||||||
'exts': ['_k'],
|
'c': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zswap.c'}}},
|
||||||
},
|
'z': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zswap.c'}}},
|
||||||
'd' : {
|
'x': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zswap.c'}}},
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'swap.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'q' : {
|
|
||||||
'dir': 'x86_64',
|
|
||||||
'kernel': 'swap.S',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'c' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zswap.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'z' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zswap.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'x' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zswap.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{'base': 'scal',
|
{ 'base': 'scal',
|
||||||
'modes': {
|
'modes': {
|
||||||
's' : {
|
's': {'exts': {'_k': {'dir': 'arm', 'kernel': 'scal.c'}}},
|
||||||
'dir': 'arm',
|
'd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'scal.c'}}},
|
||||||
'kernel': 'scal.c',
|
'q': {'exts': {'_k': {'dir': 'x86_64', 'kernel': 'scal.S'}}},
|
||||||
'exts': ['_k'],
|
'c': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zscal.c'}}},
|
||||||
},
|
'z': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zscal.c'}}},
|
||||||
'd' : {
|
'x': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zscal.c'}}},
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'scal.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'q' : {
|
|
||||||
'dir': 'x86_64',
|
|
||||||
'kernel': 'scal.S',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'c' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zscal.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'z' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zscal.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'x' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zscal.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{'base': 'copy',
|
{ 'base': 'copy',
|
||||||
'modes': {
|
'modes': {
|
||||||
's' : {
|
's': {'exts': {'_k': {'dir': 'arm', 'kernel': 'copy.c'}}},
|
||||||
'dir': 'arm',
|
'd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'copy.c'}}},
|
||||||
'kernel': 'copy.c',
|
'q': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zcopy.c'}}},
|
||||||
'exts': ['_k'],
|
'c': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zcopy.c'}}},
|
||||||
},
|
'z': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zcopy.c'}}},
|
||||||
'd' : {
|
'x': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zcopy.c'}}},
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'copy.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'q' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zcopy.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'c' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zcopy.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'z' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zcopy.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'x' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zcopy.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{'base': 'axpy',
|
{ 'base': 'axpy',
|
||||||
'modes': {
|
'modes': {
|
||||||
's' : {
|
's': {'exts': {'_k': {'dir': 'arm', 'kernel': 'axpy.c'}}},
|
||||||
'dir': 'arm',
|
'd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'axpy.c'}}},
|
||||||
'kernel': 'axpy.c',
|
'q': {'exts': {'_k': {'dir': 'x86_64', 'kernel': 'axpy.S'}}},
|
||||||
'exts': ['_k'],
|
'c': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zaxpy.c'}}},
|
||||||
},
|
'z': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zaxpy.c'}}},
|
||||||
'd' : {
|
'x': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zaxpy.c'}}},
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'axpy.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'q' : {
|
|
||||||
'dir': 'x86_64',
|
|
||||||
'kernel': 'axpy.S',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'c' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zaxpy.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'z' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zaxpy.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'x' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zaxpy.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{'base': 'dot',
|
{ 'base': 'dot',
|
||||||
'modes': {
|
'modes': {
|
||||||
's' : {
|
's': {'exts': {'_k': {'dir': 'arm', 'kernel': 'dot.c'}}},
|
||||||
'dir': 'arm',
|
'd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'dot.c'}}},
|
||||||
'kernel': 'dot.c',
|
'q': {'exts': {'_k': {'dir': 'x86_64', 'kernel': 'dot.S'}}},
|
||||||
'exts': ['_k'],
|
'c': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zdot.c'}}},
|
||||||
},
|
'z': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zdot.c'}}},
|
||||||
'd' : {
|
'x': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zdot.c'}}},
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'dot.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'q' : {
|
|
||||||
'dir': 'x86_64',
|
|
||||||
'kernel': 'dot.S',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'c' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zdot.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'z' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zdot.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'x' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zdot.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
# xDOTU xDOTC xxDOT aren't present
|
# xDOTU xDOTC xxDOT aren't present
|
||||||
{'base': 'nrm2',
|
{ 'base': 'nrm2',
|
||||||
'modes': {
|
'modes': {
|
||||||
's' : {
|
's': {'exts': {'_k': {'dir': 'arm', 'kernel': 'nrm2.c'}}},
|
||||||
'dir': 'arm',
|
'd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'nrm2.c'}}},
|
||||||
'kernel': 'nrm2.c',
|
'q': {'exts': {'_k': {'dir': 'arm', 'kernel': 'znrm2.c'}}},
|
||||||
'exts': ['_k'],
|
'c': {'exts': {'_k': {'dir': 'arm', 'kernel': 'znrm2.c'}}},
|
||||||
},
|
'z': {'exts': {'_k': {'dir': 'arm', 'kernel': 'znrm2.c'}}},
|
||||||
'd' : {
|
'x': {'exts': {'_k': {'dir': 'arm', 'kernel': 'znrm2.c'}}},
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'nrm2.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'q' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'znrm2.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'c' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'znrm2.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'z' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'znrm2.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'x' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'znrm2.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{'base': 'asum',
|
{ 'base': 'asum',
|
||||||
'modes': {
|
'modes': {
|
||||||
's' : {
|
's': {'exts': {'_k': {'dir': 'arm', 'kernel': 'asum.c'}}},
|
||||||
'dir': 'arm',
|
'd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'asum.c'}}},
|
||||||
'kernel': 'asum.c',
|
'q': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zasum.c'}}},
|
||||||
'exts': ['_k'],
|
'c': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zasum.c'}}},
|
||||||
},
|
'z': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zasum.c'}}},
|
||||||
'd' : {
|
'x': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zasum.c'}}},
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'asum.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'q' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zasum.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'c' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zasum.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'z' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zasum.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'x' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zasum.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{'base': 'amax',
|
{ 'base': 'amax',
|
||||||
'modes': {
|
'modes': {
|
||||||
's' : {
|
's': {'exts': {'_k': {'dir': 'arm', 'kernel': 'amax.c'}}},
|
||||||
'dir': 'arm',
|
'd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'amax.c'}}},
|
||||||
'kernel': 'amax.c',
|
'q': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zamax.c'}}},
|
||||||
'exts': ['_k'],
|
'c': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zamax.c'}}},
|
||||||
},
|
'z': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zamax.c'}}},
|
||||||
'd' : {
|
'x': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zamax.c'}}},
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'amax.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'q' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zamax.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'c' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zamax.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'z' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zamax.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
'x' : {
|
|
||||||
'dir': 'arm',
|
|
||||||
'kernel': 'zamax.c',
|
|
||||||
'exts': ['_k'],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
# # TODO: Handle the i*amax style
|
# # # TODO: Handle the i*amax style
|
||||||
# {'base': 'axpby',
|
# # {'base': 'axpby',
|
||||||
# 'modes': {'s': {'dir': 'arm', 'kernel': 'axpby.c', 'exts': ['_k']},
|
# # 'modes': {'s': {'dir': 'arm', 'kernel': 'axpby.c', 'exts': ['_k']},
|
||||||
# 'd': {'dir': 'arm', 'kernel': 'axpby.c', 'exts': ['_k']},
|
# # 'd': {'dir': 'arm', 'kernel': 'axpby.c', 'exts': ['_k']},
|
||||||
# 'c': {'dir': 'arm', 'kernel': 'axpby.c', 'exts': ['_k']},
|
# # 'c': {'dir': 'arm', 'kernel': 'axpby.c', 'exts': ['_k']},
|
||||||
# 'z': {'dir': 'arm', 'kernel': 'axpby.c', 'exts': ['_k']},
|
# # 'z': {'dir': 'arm', 'kernel': 'axpby.c', 'exts': ['_k']},
|
||||||
# },
|
# # },
|
||||||
# },
|
# # },
|
||||||
# # Level 2 BLAS
|
# # # Level 2 BLAS
|
||||||
# # There are additional sources so now we have srcs
|
# # # There are additional sources so now we have srcs
|
||||||
# # Ordered as per KERNEL.generic and Makefile.L2
|
# # # Ordered as per KERNEL.generic and Makefile.L2
|
||||||
# # exts are used to find the flags for each modality
|
# # # exts are used to find the flags for each modality
|
||||||
# # ext is attached to base (only useful from Level 2)
|
# # # ext is attached to base (only useful from Level 2)
|
||||||
# # i.e. baseext (e.g., gemv_n, gemv_t, cgeru_k, cgerc_k)
|
# # # i.e. baseext (e.g., gemv_n, gemv_t, cgeru_k, cgerc_k)
|
||||||
# {'base': 'gemv',
|
# # {'base': 'gemv',
|
||||||
# 'modes': {'s': {'dir': 'arm', 'kernel': 'gemv_n.c', 'exts': ['_n', '_t']},
|
# # 'modes': {'s': {'dir': 'arm', 'kernel': 'gemv_n.c', 'exts': ['_n', '_t']},
|
||||||
# 'd': {'dir': 'arm', 'kernel': 'gemv_n.c',
|
# # 'd': {'dir': 'arm', 'kernel': 'gemv_n.c',
|
||||||
# # TODO: _t should take fmaflag, but then we need a dictionary..
|
# # # TODO: _t should take fmaflag, but then we need a dictionary..
|
||||||
# # From Makefile.L2
|
# # # From Makefile.L2
|
||||||
# 'exts': ['_n', '_t']},
|
# # 'exts': ['_n', '_t']},
|
||||||
# 'q': {'dir': 'arm', 'kernel': 'gemv_n.c', 'exts': ['_n', '_t']},
|
# # 'q': {'dir': 'arm', 'kernel': 'gemv_n.c', 'exts': ['_n', '_t']},
|
||||||
# 'c': {'dir': 'arm', 'kernel': 'zgemv_n.c',
|
# # 'c': {'dir': 'arm', 'kernel': 'zgemv_n.c',
|
||||||
# 'exts': ['_n', '_t', '_r', '_c', '_o', '_u', '_s', '_d']},
|
# # 'exts': ['_n', '_t', '_r', '_c', '_o', '_u', '_s', '_d']},
|
||||||
# 'z': {'dir': 'arm', 'kernel': 'zgemv_n.c',
|
# # 'z': {'dir': 'arm', 'kernel': 'zgemv_n.c',
|
||||||
# 'exts': ['_n', '_t', '_r', '_c', '_o', '_u', '_s', '_d']},
|
# # 'exts': ['_n', '_t', '_r', '_c', '_o', '_u', '_s', '_d']},
|
||||||
# 'x': {'dir': 'arm', 'kernel': 'zgemv_n.c',
|
# # 'x': {'dir': 'arm', 'kernel': 'zgemv_n.c',
|
||||||
# 'exts': ['_n', '_t', '_r', '_c', '_o', '_u', '_s', '_d']},
|
# # 'exts': ['_n', '_t', '_r', '_c', '_o', '_u', '_s', '_d']},
|
||||||
# },
|
# # },
|
||||||
# },
|
# # },
|
||||||
# {'base': 'symv',
|
# # {'base': 'symv',
|
||||||
# 'modes': {'s': {'dir': 'generic', 'kernel': 'symv_k.c', 'exts': ['_U', '_L']},
|
# # 'modes': {'s': {'dir': 'generic', 'kernel': 'symv_k.c', 'exts': ['_U', '_L']},
|
||||||
# 'd': {'dir': 'generic', 'kernel': 'symv_k.c', 'exts': ['_U', '_L']},
|
# # 'd': {'dir': 'generic', 'kernel': 'symv_k.c', 'exts': ['_U', '_L']},
|
||||||
# 'q': {'dir': 'generic', 'kernel': 'symv_k.c', 'exts': ['_U', '_L']},
|
# # 'q': {'dir': 'generic', 'kernel': 'symv_k.c', 'exts': ['_U', '_L']},
|
||||||
# 'c': {'dir': 'generic', 'kernel': 'symv_k.c', 'exts': ['_U', '_L']},
|
# # 'c': {'dir': 'generic', 'kernel': 'symv_k.c', 'exts': ['_U', '_L']},
|
||||||
# 'z': {'dir': 'generic', 'kernel': 'symv_k.c', 'exts': ['_U', '_L']},
|
# # 'z': {'dir': 'generic', 'kernel': 'symv_k.c', 'exts': ['_U', '_L']},
|
||||||
# 'x': {'dir': 'generic', 'kernel': 'symv_k.c', 'exts': ['_U', '_L']},
|
# # 'x': {'dir': 'generic', 'kernel': 'symv_k.c', 'exts': ['_U', '_L']},
|
||||||
# },
|
# # },
|
||||||
# },
|
# # },
|
||||||
# {'base': 'ger',
|
# # {'base': 'ger',
|
||||||
# 'modes': {'s': {'dir': 'generic', 'kernel': 'ger.c', 'exts': ['_k']},
|
# # 'modes': {'s': {'dir': 'generic', 'kernel': 'ger.c', 'exts': ['_k']},
|
||||||
# 'd': {'dir': 'generic', 'kernel': 'ger.c', 'exts': ['_k']},
|
# # 'd': {'dir': 'generic', 'kernel': 'ger.c', 'exts': ['_k']},
|
||||||
# 'q': {'dir': 'generic', 'kernel': 'ger.c', 'exts': ['_k']}
|
# # 'q': {'dir': 'generic', 'kernel': 'ger.c', 'exts': ['_k']}
|
||||||
# },
|
# # },
|
||||||
# },
|
# # },
|
||||||
# {'base': 'geru',
|
# # {'base': 'geru',
|
||||||
# 'modes': {'c': {'dir': 'generic', 'kernel': 'zger.c', 'exts': ['_k']},
|
# # 'modes': {'c': {'dir': 'generic', 'kernel': 'zger.c', 'exts': ['_k']},
|
||||||
# 'z': {'dir': 'generic', 'kernel': 'zger.c', 'exts': ['_k']},
|
# # 'z': {'dir': 'generic', 'kernel': 'zger.c', 'exts': ['_k']},
|
||||||
# 'x': {'dir': 'generic', 'kernel': 'zger.c', 'exts': ['_k']}
|
# # 'x': {'dir': 'generic', 'kernel': 'zger.c', 'exts': ['_k']}
|
||||||
# }
|
# # }
|
||||||
# },
|
# # },
|
||||||
# {'base': 'gerc',
|
# # {'base': 'gerc',
|
||||||
# 'modes': {'c': {'dir': 'generic', 'kernel': 'zger.c', 'exts': ['_k']},
|
# # 'modes': {'c': {'dir': 'generic', 'kernel': 'zger.c', 'exts': ['_k']},
|
||||||
# 'z': {'dir': 'generic', 'kernel': 'zger.c', 'exts': ['_k']},
|
# # 'z': {'dir': 'generic', 'kernel': 'zger.c', 'exts': ['_k']},
|
||||||
# 'x': {'dir': 'generic', 'kernel': 'zger.c', 'exts': ['_k']},
|
# # 'x': {'dir': 'generic', 'kernel': 'zger.c', 'exts': ['_k']},
|
||||||
# },
|
# # },
|
||||||
# },
|
# # },
|
||||||
# {'base': 'hemv',
|
# # {'base': 'hemv',
|
||||||
# 'modes': {'c': {'dir': 'generic',
|
# # 'modes': {'c': {'dir': 'generic',
|
||||||
# 'kernel': 'zhemv_k.c',
|
# # 'kernel': 'zhemv_k.c',
|
||||||
# 'exts': ['_U', '_L', '_V', '_M']},
|
# # 'exts': ['_U', '_L', '_V', '_M']},
|
||||||
# 'z': {'dir': 'generic',
|
# # 'z': {'dir': 'generic',
|
||||||
# 'kernel': 'zhemv_k.c',
|
# # 'kernel': 'zhemv_k.c',
|
||||||
# 'exts': ['_U', '_L', '_V', '_M']},
|
# # 'exts': ['_U', '_L', '_V', '_M']},
|
||||||
# 'x': {'dir': 'generic',
|
# # 'x': {'dir': 'generic',
|
||||||
# 'kernel': 'zhemv_k.c',
|
# # 'kernel': 'zhemv_k.c',
|
||||||
# 'exts': ['_U', '_L', '_V', '_M']},
|
# # 'exts': ['_U', '_L', '_V', '_M']},
|
||||||
# },
|
# # },
|
||||||
# },
|
# # },
|
||||||
# {'base': 'bgemv',
|
# # {'base': 'bgemv',
|
||||||
# 'modes': {'s': {'dir': 'x86_64',
|
# # 'modes': {'s': {'dir': 'x86_64',
|
||||||
# 'kernel': 'sbgemv_n.c',
|
# # 'kernel': 'sbgemv_n.c',
|
||||||
# 'exts': ['_n', '_t']}
|
# # 'exts': ['_n', '_t']}
|
||||||
# },
|
# # },
|
||||||
# },
|
# # },
|
||||||
]
|
]
|
||||||
|
|
||||||
kernel_confs = []
|
kernel_confs = []
|
||||||
|
@ -405,7 +186,6 @@ foreach _kop : base_kops
|
||||||
foreach mode, details : modes
|
foreach mode, details : modes
|
||||||
__cargs = _cargs
|
__cargs = _cargs
|
||||||
prec_mode = precision_mappings[mode]
|
prec_mode = precision_mappings[mode]
|
||||||
src = join_paths(details['dir'], details['kernel'])
|
|
||||||
# Generate the mapping for the type
|
# Generate the mapping for the type
|
||||||
if prec_mode.has_key('def')
|
if prec_mode.has_key('def')
|
||||||
foreach _d : prec_mode['def']
|
foreach _d : prec_mode['def']
|
||||||
|
@ -417,8 +197,8 @@ foreach _kop : base_kops
|
||||||
__cargs += ('-U' + _u)
|
__cargs += ('-U' + _u)
|
||||||
endforeach
|
endforeach
|
||||||
endif
|
endif
|
||||||
# Now the rest, one run for each ext
|
# Now the rest, one run for each ext, to get the final symbols
|
||||||
foreach ext : details['exts']
|
foreach ext, extdat : details['exts']
|
||||||
extmap = ext_mappings[ext]
|
extmap = ext_mappings[ext]
|
||||||
if extmap.has_key('def')
|
if extmap.has_key('def')
|
||||||
foreach _d : extmap['def']
|
foreach _d : extmap['def']
|
||||||
|
@ -430,6 +210,11 @@ foreach _kop : base_kops
|
||||||
__cargs += ('-U' + _u)
|
__cargs += ('-U' + _u)
|
||||||
endforeach
|
endforeach
|
||||||
endif
|
endif
|
||||||
|
# Construct the final paths
|
||||||
|
src = join_paths(extdat['dir'], extdat['kernel'])
|
||||||
|
if extdat.has_key('addl')
|
||||||
|
__cargs += extdat['addl']
|
||||||
|
endif
|
||||||
message(mode + base + ext)
|
message(mode + base + ext)
|
||||||
sym_name = mode + base + ext
|
sym_name = mode + base + ext
|
||||||
sym_underscored = f'@sym_name@_'
|
sym_underscored = f'@sym_name@_'
|
||||||
|
|
Loading…
Reference in New Issue