ENH: Add more L2 flags
This commit is contained in:
parent
75ea24cdea
commit
e91b0216cd
|
@ -1,9 +1,5 @@
|
||||||
# Ordered As per https://netlib.org/blas/blasqr.pdf
|
# Ordered As per https://netlib.org/blas/blasqr.pdf
|
||||||
# NOTE: xROTG xROTMG xROTM have no kernels?
|
# NOTE: xROTG xROTMG xROTM have no kernels?
|
||||||
_kinds = []
|
|
||||||
_rk = ['s', 'd']
|
|
||||||
_ck = ['c', 'z']
|
|
||||||
_std_dk = _rk + _ck # Standard precisions
|
|
||||||
# TODO: Actually test and set this
|
# TODO: Actually test and set this
|
||||||
if true
|
if true
|
||||||
fma3_flag = '-mfma'
|
fma3_flag = '-mfma'
|
||||||
|
@ -11,264 +7,394 @@ endif
|
||||||
# TODO: This is currently following x86_64 generic for src and dir, but it needs
|
# TODO: This is currently following x86_64 generic for src and dir, but it needs
|
||||||
# to diversify
|
# to diversify
|
||||||
# NOTE: The def and undefs are from Makefile.L1
|
# NOTE: The def and undefs are from Makefile.L1
|
||||||
# Construct all PRECsymbKERNEL from src and dir via files(dir + src)
|
# Construct all ModesymbKERNEL from src and dir via files(dir + src)
|
||||||
# For the precs array, the following mapping is used for c_args:
|
# For the modes array, the following mapping is used for c_args:
|
||||||
# addl --> passed AS IS
|
# addl --> passed AS IS
|
||||||
base_kops = [
|
base_kops = [
|
||||||
# Level 1 BLAS
|
# Level 1 BLAS
|
||||||
{
|
{
|
||||||
'base': 'rot',
|
'base': 'rot',
|
||||||
'precs': {
|
'modes': {
|
||||||
's' : {
|
's' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'rot.c',
|
'kernel': 'rot.c',
|
||||||
'addl': [fma3_flag],
|
'addl': [fma3_flag],
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'd' : {
|
'd' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'rot.c',
|
'kernel': 'rot.c',
|
||||||
'addl': [fma3_flag],
|
'addl': [fma3_flag],
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'q' : {
|
'q' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zrot.c',
|
'kernel': 'zrot.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'cs' : {
|
'cs' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zrot.c',
|
'kernel': 'zrot.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'zd' : {
|
'zd' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zrot.c',
|
'kernel': 'zrot.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'xq' : {
|
'xq' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zrot.c',
|
'kernel': 'zrot.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{'base': 'swap',
|
{'base': 'swap',
|
||||||
'precs': {
|
'modes': {
|
||||||
's' : {
|
's' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'swap.c',
|
'kernel': 'swap.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'd' : {
|
'd' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'swap.c',
|
'kernel': 'swap.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'q' : {
|
'q' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zswap.c',
|
'kernel': 'zswap.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'c' : {
|
'c' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zswap.c',
|
'kernel': 'zswap.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'z' : {
|
'z' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zswap.c',
|
'kernel': 'zswap.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'x' : {
|
'x' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zswap.c',
|
'kernel': 'zswap.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{'base': 'scal',
|
{'base': 'scal',
|
||||||
'precs': {
|
'modes': {
|
||||||
's' : {
|
's' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'scal.c',
|
'kernel': 'scal.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'd' : {
|
'd' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'scal.c',
|
'kernel': 'scal.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'q' : {
|
'q' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zscal.c',
|
'kernel': 'zscal.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'c' : {
|
'c' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zscal.c',
|
'kernel': 'zscal.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'z' : {
|
'z' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zscal.c',
|
'kernel': 'zscal.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'x' : {
|
'x' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zscal.c',
|
'kernel': 'zscal.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{'base': 'copy',
|
{'base': 'copy',
|
||||||
'precs': {
|
'modes': {
|
||||||
's' : {
|
's' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'copy.c',
|
'kernel': 'copy.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'd' : {
|
'd' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'copy.c',
|
'kernel': 'copy.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'q' : {
|
'q' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zcopy.c',
|
'kernel': 'zcopy.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'c' : {
|
'c' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zcopy.c',
|
'kernel': 'zcopy.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'z' : {
|
'z' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zcopy.c',
|
'kernel': 'zcopy.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'x' : {
|
'x' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zcopy.c',
|
'kernel': 'zcopy.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{'base': 'axpy',
|
{'base': 'axpy',
|
||||||
'precs': {
|
'modes': {
|
||||||
's' : {
|
's' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'axpy.c',
|
'kernel': 'axpy.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'd' : {
|
'd' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'axpy.c',
|
'kernel': 'axpy.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'q' : {
|
'q' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zaxpy.c',
|
'kernel': 'zaxpy.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'c' : {
|
'c' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zaxpy.c',
|
'kernel': 'zaxpy.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'z' : {
|
'z' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zaxpy.c',
|
'kernel': 'zaxpy.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'x' : {
|
'x' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zaxpy.c',
|
'kernel': 'zaxpy.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{'base': 'dot',
|
{'base': 'dot',
|
||||||
'precs': {
|
'modes': {
|
||||||
's' : {
|
's' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'dot.c',
|
'kernel': 'dot.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'd' : {
|
'd' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'dot.c',
|
'kernel': 'dot.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'q' : {
|
'q' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zdot.c',
|
'kernel': 'zdot.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'c' : {
|
'c' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zdot.c',
|
'kernel': 'zdot.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'z' : {
|
'z' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zdot.c',
|
'kernel': 'zdot.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'x' : {
|
'x' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zdot.c',
|
'kernel': 'zdot.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
# xDOTU xDOTC xxDOT aren't present
|
# xDOTU xDOTC xxDOT aren't present
|
||||||
{'base': 'nrm2',
|
{'base': 'nrm2',
|
||||||
'precs': {
|
'modes': {
|
||||||
's' : {
|
's' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'nrm2.c',
|
'kernel': 'nrm2.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'd' : {
|
'd' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'nrm2.c',
|
'kernel': 'nrm2.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'q' : {
|
'q' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'znrm2.c',
|
'kernel': 'znrm2.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'c' : {
|
'c' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'znrm2.c',
|
'kernel': 'znrm2.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'z' : {
|
'z' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'znrm2.c',
|
'kernel': 'znrm2.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'x' : {
|
'x' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'znrm2.c',
|
'kernel': 'znrm2.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{'base': 'asum',
|
{'base': 'asum',
|
||||||
'precs': {
|
'modes': {
|
||||||
's' : {
|
's' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'asum.c',
|
'kernel': 'asum.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'd' : {
|
'd' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'asum.c',
|
'kernel': 'asum.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'q' : {
|
'q' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zasum.c',
|
'kernel': 'zasum.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'c' : {
|
'c' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zasum.c',
|
'kernel': 'zasum.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'z' : {
|
'z' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zasum.c',
|
'kernel': 'zasum.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'x' : {
|
'x' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zasum.c',
|
'kernel': 'zasum.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{'base': 'amax',
|
{'base': 'amax',
|
||||||
'precs': {
|
'modes': {
|
||||||
's' : {
|
's' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'amax.c',
|
'kernel': 'amax.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'd' : {
|
'd' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'amax.c',
|
'kernel': 'amax.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'q' : {
|
'q' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zamax.c',
|
'kernel': 'zamax.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'c' : {
|
'c' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zamax.c',
|
'kernel': 'zamax.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'z' : {
|
'z' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zamax.c',
|
'kernel': 'zamax.c',
|
||||||
|
'exts': ['_k'],
|
||||||
},
|
},
|
||||||
'x' : {
|
'x' : {
|
||||||
'dir': 'arm',
|
'dir': 'arm',
|
||||||
'kernel': 'zamax.c',
|
'kernel': 'zamax.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': 'zgemv_n.c',
|
||||||
|
'exts': ['_n', '_t'],
|
||||||
|
},
|
||||||
|
'c' : {
|
||||||
|
'dir': 'arm',
|
||||||
|
'kernel': 'zgemv_n.c',
|
||||||
|
'exts': ['_n', '_t', '_r', '_c', '_u', '_s', '_d'],
|
||||||
|
},
|
||||||
|
'z' : {
|
||||||
|
'dir': 'arm',
|
||||||
|
'kernel': 'zgemv_n.c',
|
||||||
|
'exts': ['_n', '_t', '_r', '_c', '_u', '_s', '_d'],
|
||||||
|
},
|
||||||
|
'x' : {
|
||||||
|
'dir': 'arm',
|
||||||
|
'kernel': 'zgemv_n.c',
|
||||||
|
'exts': ['_n', '_t', '_r', '_c', '_u', '_s', '_d'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{'base': 'gemm_beta',
|
||||||
|
'modes': {
|
||||||
|
's' : {
|
||||||
|
'dir': 'generic',
|
||||||
|
'kernel': 'gemm_beta.c',
|
||||||
|
'exts': ['_n', '_t'],
|
||||||
|
},
|
||||||
|
'd' : {
|
||||||
|
'dir': 'generic',
|
||||||
|
'kernel': 'gemm_beta.c',
|
||||||
|
'exts': ['_n', '_t'],
|
||||||
|
},
|
||||||
|
'q' : {
|
||||||
|
'dir': 'generic',
|
||||||
|
'kernel': 'zgemm_beta.c',
|
||||||
|
'exts': ['_n', '_t'],
|
||||||
|
},
|
||||||
|
'c' : {
|
||||||
|
'dir': 'generic',
|
||||||
|
'kernel': 'zgemm_beta.c',
|
||||||
|
'exts': ['_n', '_t', '_r', '_c', '_u', '_s', '_d'],
|
||||||
|
},
|
||||||
|
'z' : {
|
||||||
|
'dir': 'generic',
|
||||||
|
'kernel': 'zgemm_beta.c',
|
||||||
|
'exts': ['_n', '_t', '_r', '_c', '_u', '_s', '_d'],
|
||||||
|
},
|
||||||
|
'x' : {
|
||||||
|
'dir': 'generic',
|
||||||
|
'kernel': 'zgemm_beta.c',
|
||||||
|
'exts': ['_n', '_t', '_r', '_c', '_u', '_s', '_d'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -276,52 +402,341 @@ base_kops = [
|
||||||
|
|
||||||
kernel_confs = []
|
kernel_confs = []
|
||||||
|
|
||||||
# For the precs array, the following mapping is used for c_args:
|
# For the modes array, the following mapping is used for c_args:
|
||||||
# undef --> -Uwhatever
|
# undef --> -Uwhatever
|
||||||
# def --> -Dwhatever
|
# def --> -Dwhatever
|
||||||
foreach _kop : base_kops
|
foreach _kop : base_kops
|
||||||
foreach pkey, pval : _kop['precs']
|
foreach pkey, pval : _kop['modes']
|
||||||
|
# TODO: This srcs should be in files() after this is ready
|
||||||
|
# dictionaries with files can't be printed with message
|
||||||
kcfg = {
|
kcfg = {
|
||||||
'name': pkey + _kop['base'] + '_k',
|
|
||||||
# TODO: This should probably be in files() after this is ready
|
|
||||||
# dictionaries with files can't be printed with message
|
|
||||||
'src': pval['dir'] + '/' + pval['kernel'],
|
'src': pval['dir'] + '/' + pval['kernel'],
|
||||||
}
|
}
|
||||||
if pval.has_key('addl')
|
if pval.has_key('addl')
|
||||||
kcfg += {'addl': pval['addl']}
|
kcfg += {'addl': pval['addl']}
|
||||||
endif
|
endif
|
||||||
if 's' == pkey
|
if 's' == pkey
|
||||||
kcfg += {'undef': ['COMPLEX', 'DOUBLE']}
|
foreach ext : pval['exts']
|
||||||
|
kcfg += {'name': pkey + _kop['base'] + ext}
|
||||||
|
# Level 1
|
||||||
|
if '_k' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['COMPLEX', 'DOUBLE']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
# Level 2
|
||||||
|
if '_n' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['DOUBLE', 'COMPLEX', 'TRANS'],
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_t' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['DOUBLE', 'COMPLEX'],
|
||||||
|
'def': ['TRANS']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_U' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['DOUBLE', 'COMPLEX', 'LOWER'],
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_L' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['DOUBLE', 'COMPLEX'],
|
||||||
|
'def': ['LOWER']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
endif
|
endif
|
||||||
if 'd' == pkey
|
if 'd' == pkey
|
||||||
kcfg += {
|
foreach ext : pval['exts']
|
||||||
'undef': ['COMPLEX'],
|
kcfg += {'name': pkey + _kop['base'] + ext}
|
||||||
'def': ['DOUBLE'],
|
# Level 1
|
||||||
}
|
if '_k' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['COMPLEX'],
|
||||||
|
'def': ['DOUBLE'],
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
# Level 2
|
||||||
|
if '_n' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['COMPLEX', 'TRANS'],
|
||||||
|
'def': ['DOUBLE']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_t' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['COMPLEX'],
|
||||||
|
'def': ['DOUBLE', 'TRANS']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_U' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['COMPLEX', 'LOWER'],
|
||||||
|
'def': ['DOUBLE']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_L' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['COMPLEX'],
|
||||||
|
'def': ['DOUBLE', 'LOWER']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
endif
|
endif
|
||||||
if 'q' == pkey
|
if 'q' == pkey
|
||||||
kcfg += {
|
foreach ext : pval['exts']
|
||||||
'undef': ['COMPLEX'],
|
kcfg += {'name': pkey + _kop['base'] + ext}
|
||||||
'def': ['DXDOUBLE'],
|
# Level 1
|
||||||
}
|
if '_k' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['COMPLEX'],
|
||||||
|
'def': ['XDOUBLE'],
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
# Level 2
|
||||||
|
if '_n' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['COMPLEX', 'TRANS'],
|
||||||
|
'def': ['XDOUBLE']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_t' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['COMPLEX'],
|
||||||
|
'def': ['XDOUBLE', 'TRANS']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_U' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['COMPLEX', 'LOWER'],
|
||||||
|
'def': ['XDOUBLE']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_L' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['COMPLEX'],
|
||||||
|
'def': ['XDOUBLE', 'LOWER']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
endif
|
endif
|
||||||
# TODO: rot is nonstandard in this instance, taking cs zd xq
|
# TODO: rot is nonstandard in this instance, taking cs zd xq
|
||||||
# The others (scal, swap) take c z x, so we need to use in
|
# The others (scal, swap) take c z x, so we need to use in
|
||||||
if 'c' in pkey
|
if 'c' in pkey
|
||||||
kcfg += {
|
foreach ext : pval['exts']
|
||||||
'undef': ['DOUBLE'],
|
kcfg += {'name': pkey + _kop['base'] + ext}
|
||||||
'def': ['COMPLEX'],
|
# Level 1
|
||||||
}
|
if '_k' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['DOUBLE'],
|
||||||
|
'def': ['COMPLEX'],
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
# Level 2
|
||||||
|
if '_n' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['DOUBLE', 'TRANS', 'CONJ', 'XCONJ'],
|
||||||
|
'def': ['COMPLEX']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_t' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['DOUBLE', 'CONJ', 'XCONJ'],
|
||||||
|
'def': ['COMPLEX', 'TRANS']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_r' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['DOUBLE', 'TRANS', 'XCONJ'],
|
||||||
|
'def': ['COMPLEX', 'CONJ']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_c' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['DOUBLE', 'XCONJ'],
|
||||||
|
'def': ['COMPLEX', 'TRANS', 'CONJ']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_o' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['DOUBLE', 'TRANS', 'CONJ'],
|
||||||
|
'def': ['COMPLEX', 'XCONJ']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_u' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['DOUBLE', 'CONJ'],
|
||||||
|
'def': ['COMPLEX', 'TRANS', 'XCONJ']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_s' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['DOUBLE', 'TRANS'],
|
||||||
|
'def': ['COMPLEX', 'CONJ', 'XCONJ']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_d' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['DOUBLE'],
|
||||||
|
'def': ['COMPLEX', 'TRANS', 'CONJ', 'XCONJ']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_U' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['DOUBLE', 'LOWER'],
|
||||||
|
'def': ['COMPLEX']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_L' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['DOUBLE'],
|
||||||
|
'def': ['COMPLEX', 'LOWER']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
endif
|
endif
|
||||||
if 'z' in pkey
|
if 'z' in pkey
|
||||||
kcfg += {
|
foreach ext : pval['exts']
|
||||||
'def': ['COMPLEX', 'DOUBLE'],
|
kcfg += {'name': pkey + _kop['base'] + ext}
|
||||||
}
|
# Level 1
|
||||||
|
if '_k' == ext
|
||||||
|
kcfg += {
|
||||||
|
'def': ['COMPLEX', 'DOUBLE'],
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
# Level 2
|
||||||
|
if '_n' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['CONJ', 'XCONJ', 'TRANS'],
|
||||||
|
'def': ['COMPLEX', 'DOUBLE'],
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_t' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['CONJ', 'XCONJ'],
|
||||||
|
'def': ['COMPLEX', 'DOUBLE', 'TRANS']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_r' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['TRANS', 'XCONJ'],
|
||||||
|
'def': ['COMPLEX', 'DOUBLE', 'CONJ']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_c' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['XCONJ'],
|
||||||
|
'def': ['COMPLEX', 'DOUBLE', 'TRANS', 'CONJ']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_o' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['CONJ', 'TRANS'],
|
||||||
|
'def': ['COMPLEX', 'DOUBLE', 'XCONJ']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_u' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['CONJ'],
|
||||||
|
'def': ['COMPLEX', 'DOUBLE', 'TRANS', 'XCONJ']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_s' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['TRANS'],
|
||||||
|
'def': ['COMPLEX', 'DOUBLE', 'CONJ', 'XCONJ']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_d' == ext
|
||||||
|
kcfg += {
|
||||||
|
'def': ['COMPLEX', 'DOUBLE', 'TRANS', 'CONJ', 'XCONJ']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_U' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['LOWER'],
|
||||||
|
'def': ['COMPLEX', 'DOUBLE']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_L' == ext
|
||||||
|
kcfg += {
|
||||||
|
'def': ['COMPLEX', 'DOUBLE', 'LOWER']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
endif
|
endif
|
||||||
if 'x' in pkey
|
if 'x' in pkey
|
||||||
kcfg += {
|
foreach ext : pval['exts']
|
||||||
'def': ['COMPLEX', 'DXDOUBLE'],
|
kcfg += {'name': pkey + _kop['base'] + ext}
|
||||||
}
|
# Level 1
|
||||||
|
if '_k' == ext
|
||||||
|
kcfg += {
|
||||||
|
'def': ['COMPLEX', 'XDOUBLE'],
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
# Level 2
|
||||||
|
if '_n' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['XCONJ', 'CONJ', 'TRANS'],
|
||||||
|
'def': ['XDOUBLE', 'COMPLEX'],
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_t' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['CONJ', 'XCONJ'],
|
||||||
|
'def': ['XDOUBLE', 'COMPLEX', 'TRANS']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_r' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['TRANS', 'XCONJ'],
|
||||||
|
'def': ['XDOUBLE', 'COMPLEX', 'CONJ']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_c' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['XCONJ'],
|
||||||
|
'def': ['XDOUBLE', 'COMPLEX', 'TRANS', 'CONJ']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_o' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['TRANS', 'CONJ'],
|
||||||
|
'def': ['XDOUBLE', 'COMPLEX', 'XCONJ']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_u' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['CONJ'],
|
||||||
|
'def': ['XDOUBLE', 'COMPLEX', 'TRANS', 'XCONJ']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_s' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['TRANS'],
|
||||||
|
'def': ['XDOUBLE', 'COMPLEX', 'CONJ', 'XCONJ']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_d' == ext
|
||||||
|
kcfg += {
|
||||||
|
'def': ['XDOUBLE', 'COMPLEX', 'TRANS', 'CONJ', 'XCONJ']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_U' == ext
|
||||||
|
kcfg += {
|
||||||
|
'undef': ['LOWER'],
|
||||||
|
'def': ['COMPLEX', 'XDOUBLE']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
if '_L' == ext
|
||||||
|
kcfg += {
|
||||||
|
'def': ['COMPLEX', 'XDOUBLE', 'LOWER']
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
endif
|
endif
|
||||||
message(kcfg)
|
message(kcfg)
|
||||||
endforeach
|
endforeach
|
||||||
|
|
Loading…
Reference in New Issue