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