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
|
||||
# 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
|
||||
if true
|
||||
fma3_flag = '-mfma'
|
||||
|
@ -11,264 +7,394 @@ endif
|
|||
# TODO: This is currently following x86_64 generic for src and dir, but it needs
|
||||
# to diversify
|
||||
# NOTE: The def and undefs are from Makefile.L1
|
||||
# Construct all PRECsymbKERNEL from src and dir via files(dir + src)
|
||||
# For the precs array, the following mapping is used for c_args:
|
||||
# Construct all ModesymbKERNEL from src and dir via files(dir + src)
|
||||
# For the modes array, the following mapping is used for c_args:
|
||||
# addl --> passed AS IS
|
||||
base_kops = [
|
||||
# Level 1 BLAS
|
||||
{
|
||||
'base': 'rot',
|
||||
'precs': {
|
||||
'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'],
|
||||
},
|
||||
},
|
||||
},
|
||||
{'base': 'swap',
|
||||
'precs': {
|
||||
'modes': {
|
||||
's' : {
|
||||
'dir': 'arm',
|
||||
'kernel': 'swap.c',
|
||||
'exts': ['_k'],
|
||||
},
|
||||
'd' : {
|
||||
'dir': 'arm',
|
||||
'kernel': 'swap.c',
|
||||
'exts': ['_k'],
|
||||
},
|
||||
'q' : {
|
||||
'dir': 'arm',
|
||||
'kernel': 'zswap.c',
|
||||
'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',
|
||||
'precs': {
|
||||
'modes': {
|
||||
's' : {
|
||||
'dir': 'arm',
|
||||
'kernel': 'scal.c',
|
||||
'exts': ['_k'],
|
||||
},
|
||||
'd' : {
|
||||
'dir': 'arm',
|
||||
'kernel': 'scal.c',
|
||||
'exts': ['_k'],
|
||||
},
|
||||
'q' : {
|
||||
'dir': 'arm',
|
||||
'kernel': 'zscal.c',
|
||||
'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',
|
||||
'precs': {
|
||||
'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'],
|
||||
},
|
||||
},
|
||||
},
|
||||
{'base': 'axpy',
|
||||
'precs': {
|
||||
'modes': {
|
||||
's' : {
|
||||
'dir': 'arm',
|
||||
'kernel': 'axpy.c',
|
||||
'exts': ['_k'],
|
||||
},
|
||||
'd' : {
|
||||
'dir': 'arm',
|
||||
'kernel': 'axpy.c',
|
||||
'exts': ['_k'],
|
||||
},
|
||||
'q' : {
|
||||
'dir': 'arm',
|
||||
'kernel': 'zaxpy.c',
|
||||
'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',
|
||||
'precs': {
|
||||
'modes': {
|
||||
's' : {
|
||||
'dir': 'arm',
|
||||
'kernel': 'dot.c',
|
||||
'exts': ['_k'],
|
||||
},
|
||||
'd' : {
|
||||
'dir': 'arm',
|
||||
'kernel': 'dot.c',
|
||||
'exts': ['_k'],
|
||||
},
|
||||
'q' : {
|
||||
'dir': 'arm',
|
||||
'kernel': 'zdot.c',
|
||||
'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
|
||||
{'base': 'nrm2',
|
||||
'precs': {
|
||||
'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'],
|
||||
},
|
||||
},
|
||||
},
|
||||
{'base': 'asum',
|
||||
'precs': {
|
||||
'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'],
|
||||
},
|
||||
},
|
||||
},
|
||||
{'base': 'amax',
|
||||
'precs': {
|
||||
'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'],
|
||||
},
|
||||
},
|
||||
},
|
||||
# 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,53 +402,342 @@ base_kops = [
|
|||
|
||||
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
|
||||
# def --> -Dwhatever
|
||||
foreach _kop : base_kops
|
||||
foreach pkey, pval : _kop['precs']
|
||||
kcfg = {
|
||||
'name': pkey + _kop['base'] + '_k',
|
||||
# TODO: This should probably be in files() after this is ready
|
||||
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 = {
|
||||
'src': pval['dir'] + '/' + pval['kernel'],
|
||||
}
|
||||
if pval.has_key('addl')
|
||||
kcfg += {'addl': pval['addl']}
|
||||
endif
|
||||
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
|
||||
if 'd' == pkey
|
||||
foreach ext : pval['exts']
|
||||
kcfg += {'name': pkey + _kop['base'] + ext}
|
||||
# Level 1
|
||||
if '_k' == ext
|
||||
kcfg += {
|
||||
'undef': ['COMPLEX'],
|
||||
'def': ['DOUBLE'],
|
||||
}
|
||||
endif
|
||||
if 'q' == pkey
|
||||
# Level 2
|
||||
if '_n' == ext
|
||||
kcfg += {
|
||||
'undef': ['COMPLEX', 'TRANS'],
|
||||
'def': ['DOUBLE']
|
||||
}
|
||||
endif
|
||||
if '_t' == ext
|
||||
kcfg += {
|
||||
'undef': ['COMPLEX'],
|
||||
'def': ['DXDOUBLE'],
|
||||
'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
|
||||
if 'q' == pkey
|
||||
foreach ext : pval['exts']
|
||||
kcfg += {'name': pkey + _kop['base'] + ext}
|
||||
# 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
|
||||
# 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
|
||||
if 'c' in pkey
|
||||
foreach ext : pval['exts']
|
||||
kcfg += {'name': pkey + _kop['base'] + ext}
|
||||
# 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
|
||||
if 'z' in pkey
|
||||
foreach ext : pval['exts']
|
||||
kcfg += {'name': pkey + _kop['base'] + ext}
|
||||
# Level 1
|
||||
if '_k' == ext
|
||||
kcfg += {
|
||||
'def': ['COMPLEX', 'DOUBLE'],
|
||||
}
|
||||
endif
|
||||
if 'x' in pkey
|
||||
# Level 2
|
||||
if '_n' == ext
|
||||
kcfg += {
|
||||
'def': ['COMPLEX', 'DXDOUBLE'],
|
||||
'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
|
||||
if 'x' in pkey
|
||||
foreach ext : pval['exts']
|
||||
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
|
||||
message(kcfg)
|
||||
endforeach
|
||||
endforeach
|
||||
|
|
Loading…
Reference in New Issue