| @@ -0,0 +1,51 @@ | |||||
| # Naming conventions can be read from here: | |||||
| # https://click.rgoswami.me/intel_blas_names | |||||
| # Ported in order from the Makefile | |||||
| driver_kops = [ | |||||
| { 'base': '?gbmv', | |||||
| 'sources': { | |||||
| 'gbmv_k.c': {'mode': ['s', 'd', 'q'], 'exts': ['_n', '_t']}, | |||||
| 'zgbmv_k.c': {'mode': ['c', 'z', 'x'], | |||||
| 'exts': ['_n', '_t', '_r', '_c', | |||||
| '_o', '_u', '_s', '_d']}, | |||||
| } | |||||
| }, | |||||
| { 'base': '?gbmv_thread', | |||||
| 'sources': { | |||||
| 'gbmv_thread.c': {'mode': ['s', 'd', 'q', | |||||
| 'c', 'z', 'x'], | |||||
| 'exts': ['_n', '_t', '_r', '_c', | |||||
| '_o', '_u', '_s', '_d']}, | |||||
| } | |||||
| }, | |||||
| { 'base': '?gemv_thread', | |||||
| 'sources': { | |||||
| 'gemv_thread.c': {'mode': ['s', 'd', 'q', | |||||
| 'c', 'z', 'x'], | |||||
| 'exts': ['_n', '_t', '_r', '_c', | |||||
| '_o', '_u', '_s', '_d']}, | |||||
| } | |||||
| }, | |||||
| { 'base': '?ger_thread', | |||||
| 'sources': { | |||||
| 'ger_thread.c': {'mode': ['s', 'd', 'q'], 'exts': ['']}, | |||||
| 'ger_thread.c': {'mode': ['c', 'z', 'x'], | |||||
| 'exts': ['_U', '_C', | |||||
| '_V', '_D']}, | |||||
| } | |||||
| }, | |||||
| { 'base': '?symv_thread', | |||||
| 'sources': { | |||||
| 'symv_thread.c': {'mode': ['s', 'd', 'q', | |||||
| 'c', 'z', 'x'], | |||||
| 'exts': ['_U', '_L']}, | |||||
| } | |||||
| }, | |||||
| { 'base': '?hemv_thread', | |||||
| 'sources': { | |||||
| 'symv_thread.c': {'mode': ['c', 'z'], | |||||
| 'exts': ['_U', '_L', | |||||
| '_V', '_M']}, | |||||
| }, | |||||
| }, | |||||
| ] | |||||
| @@ -0,0 +1 @@ | |||||
| # Generic | |||||
| @@ -357,16 +357,16 @@ base_kops = [ | |||||
| }, | }, | ||||
| # Level 3 symbols | # Level 3 symbols | ||||
| # TODO(rg): Handle the if defines set in arch | # TODO(rg): Handle the if defines set in arch | ||||
| { 'base': '?gemm_beta', | |||||
| 'modes': { | |||||
| 's': {'exts': {'': {'dir': 'x86_64', 'kernel': 'gemm_beta.S'}}}, | |||||
| 'd': {'exts': {'': {'dir': 'x86_64', 'kernel': 'gemm_beta.S'}}}, | |||||
| 'c': {'exts': {'': {'dir': 'x86_64', 'kernel': 'zgemm_beta.S'}}}, | |||||
| 'z': {'exts': {'': {'dir': 'x86_64', 'kernel': 'zgemm_beta.S'}}}, | |||||
| # 'q': {'exts': {'': {'dir': 'generic', 'kernel': 'gemm_beta.c'}}}, | |||||
| # 'x': {'exts': {'': {'dir': 'generic', 'kernel': 'zgemm_beta.c'}}}, | |||||
| }, | |||||
| }, | |||||
| # { 'base': '?gemm_beta', # This is a bfloat16 symbol, skipping for now | |||||
| # 'modes': { | |||||
| # 's': {'exts': {'': {'dir': 'x86_64', 'kernel': 'gemm_beta.S'}}}, | |||||
| # 'd': {'exts': {'': {'dir': 'x86_64', 'kernel': 'gemm_beta.S'}}}, | |||||
| # 'c': {'exts': {'': {'dir': 'x86_64', 'kernel': 'zgemm_beta.S'}}}, | |||||
| # 'z': {'exts': {'': {'dir': 'x86_64', 'kernel': 'zgemm_beta.S'}}}, | |||||
| # # 'q': {'exts': {'': {'dir': 'generic', 'kernel': 'gemm_beta.c'}}}, | |||||
| # # 'x': {'exts': {'': {'dir': 'generic', 'kernel': 'zgemm_beta.c'}}}, | |||||
| # }, | |||||
| # }, | |||||
| ] | ] | ||||
| kernel_confs = [] | kernel_confs = [] | ||||
| @@ -253,20 +253,28 @@ precision_mappings = { | |||||
| } | } | ||||
| ext_mappings = { | ext_mappings = { | ||||
| # TRANSA is only in drivers level2, kernel uses TRANS | |||||
| # LOWER is not there for only for ?ger_thread_U in drivers level2 | |||||
| # TODO(rg): Does that, i.e. having (un)used symbols (un)defined matter? | |||||
| '': {}, # special case | '': {}, # special case | ||||
| '_k': {}, | '_k': {}, | ||||
| '_U': {'undef': ['LOWER']}, | |||||
| '_U': {'undef': ['LOWER', 'CONJ', 'XCONJ']}, | |||||
| '_C': {'def': ['CONJ'], 'undef': ['XCONJ']}, | |||||
| '_V': {'def': ['XCONJ'], 'undef': ['CONJ']}, | |||||
| '_D': {'def': ['CONJ', 'XCONJ']}, | |||||
| '_L': {'def': ['LOWER']}, | '_L': {'def': ['LOWER']}, | ||||
| '_LN': {'def': ['LEFT'], 'undef': ['TRANSA']}, | |||||
| # Handle HEMV and HEMVREV better | |||||
| '_V': {'def': ['HEMV', 'HEMVREV'], 'undef': ['LOWER']}, | '_V': {'def': ['HEMV', 'HEMVREV'], 'undef': ['LOWER']}, | ||||
| '_M': {'def': ['HEMV', 'HEMVREV', 'LOWER']}, | '_M': {'def': ['HEMV', 'HEMVREV', 'LOWER']}, | ||||
| '_n': {'undef': ['TRANS', 'CONJ', 'XCONJ']}, | |||||
| '_t': {'def': ['TRANS'], 'undef': ['CONJ', 'XCONJ']}, | |||||
| '_r': {'def': ['CONJ'], 'undef': ['TRANS', 'XCONJ']}, | |||||
| '_c': {'def': ['TRANS', 'CONJ'], 'undef': ['XCONJ']}, | |||||
| '_o': {'def': ['XCONJ'], 'undef': ['TRANS', 'CONJ']}, | |||||
| '_u': {'def': ['TRANS', 'XCONJ'], 'undef': ['CONJ']}, | |||||
| '_s': {'def': ['CONJ', 'XCONJ'], 'undef': ['TRANS']}, | |||||
| '_d': {'def': ['TRANS', 'CONJ', 'XCONJ']}, | |||||
| '_n': {'undef': ['TRANS', 'TRANSA', 'CONJ', 'XCONJ']}, | |||||
| '_t': {'def': ['TRANS', 'TRANSA'], 'undef': ['CONJ', 'XCONJ']}, | |||||
| '_r': {'def': ['CONJ'], 'undef': ['TRANS', 'TRANSA', 'XCONJ']}, | |||||
| '_c': {'def': ['TRANS', 'TRANSA', 'CONJ'], 'undef': ['XCONJ']}, | |||||
| '_o': {'def': ['XCONJ'], 'undef': ['TRANS', 'TRANSA', 'CONJ']}, | |||||
| '_u': {'def': ['TRANS', 'TRANSA', 'XCONJ'], 'undef': ['CONJ']}, | |||||
| '_s': {'def': ['CONJ', 'XCONJ'], 'undef': ['TRANS', 'TRANSA']}, | |||||
| '_d': {'def': ['TRANS', 'TRANSA', 'CONJ', 'XCONJ']}, | |||||
| } | } | ||||
| symb_defs = { | symb_defs = { | ||||
| @@ -297,6 +305,7 @@ symb_defs = { | |||||
| _inc = [include_directories('.')] | _inc = [include_directories('.')] | ||||
| # subdir('lapack-netlib') | # subdir('lapack-netlib') | ||||
| subdir('interface') | subdir('interface') | ||||
| subdir('driver/level2') | |||||
| subdir('kernel') | subdir('kernel') | ||||
| _openblas = static_library('openblas', | _openblas = static_library('openblas', | ||||