# --------------------------------------------------------------------------
#
#  input.operations
#  BLIS test suite
#
#  This file contains input values that control which BLIS operations are
#  tested as well as how those test runs are parameterized. We will now
#  describe how each section or line type may be edited.
#
#  ENABLING/DISABLING ENTIRE SECTIONS
#    The values in the "Section overrides" section allow you to disable
#    all operations in a given "level". Enabling a level here by itself
#    does not enable every operation in that level; it simply means that
#    the individual switches for each operation (in that level) determine
#    whether or not the tests are executed.
#
#  ENABLING/DISABLING INDIVIDUAL OPERATION TESTS
#    Given that an operation's section override switch is set to 1
#    (enabled, whether or not that operation will get tested is determined
#    by its local switch. For example, if the level-1v section override is
#    set to 1, and there is a 1 on the line marked "addv", then the addv
#    operation will be tested. NOTE: You may ignore the lines marked "test
#    sequential front-end." These lines are for future use, to distinguish
#    tests of the sequential implementation from tests of the
#    multithreaded implementation. For now, BLIS only contains sequential
#    codes, so these should be left set to 1.
#
#  CHANGING PROBLEM SIZE/SHAPES TESTED
#    The problem sizes tested by an operation are determined by the
#    dimension specifiers on the line marked "dimensions: <spec_labels>".
#    If, for example, <spec_labels> contains two dimension labels (e.g.
#    "m n"), then the line should begin with two dimension specifiers.
#    Dimension specifiers of -1 cause the corresponding dimension to be
#    bound to the problem size, which is determined by values set in
#    input.general. Positive values cause the corresponding dimension to
#    be fixed to that value and held constant.
#
#    Examples of dimension specifiers (where the dimensions are m and n):
#
#       -1 -1     Dimensions m and n grow with problem size (resulting in
#                 square matrices).
#       -1 150    Dimension m grows with problem size and n is fixed at
#                 150.
#       -1 -2     Dimension m grows with problem size and n grows
#                 proportional to half the problem size.
#
#  CHANGING PARAMTER COMBINATIONS TESTED
#    The parameter combinations tested by an operation are determined by
#    the parameter specifier characters on the line marked "parameters:
#    <param_labels>". If, for example, <param_labels> contains two
#    parameter labels (e.g. "transa conjx"), then the line should contain
#    two parameter specifier characters. The '?' specifier character
#    serves as a wildcard--it causes all possible values of that parameter
#    to be tested. A character such as 'n' or 't' causes only that value
#    to be tested.
#
#    Examples of parameter specifiers (where the parameters are transa
#    and conjx):
#
#       ??        All combinations of the transa and conjx parameters are
#                 tested: nn, nc, tn, tc, cn, cc, hn, hc.
#       ?n        conjx is fixed to "no conjugate" but transa is allowed
#                 to vary: nn, tn, cn, hn.
#       hc        Only the case where transa is "Hermitian-transpose" and
#                 conjx is "conjugate" is tested.
#
#    Here is a full list of the parameter types used by the various BLIS
#    operations along with their possible character encodings:
#
#       side:   l,r      left, right
#       uplo:   l,u      lower, upper
#       trans:  n,t,c,h  no transpose, transpose, conjugate, Hermitian-
#                        transpose (i.e. conjugate-transpose)
#       conj:   n,c      no conjugate, conjugate
#       diag:   n,u      non-unit diagonal, unit diagonal
#

# --- Section overrides ----------------------------------------------------

1        # Utility
1        # Level-1v
1        # Level-1m
1        # Level-1f kernels
1        # Level-2
1        # Level-3 micro-kernels
1        # Level-3


# --- Utility --------------------------------------------------------------

1        # randv
1        #   test sequential front-end
-1       #   dimensions: m

1        # randm
1        #   test sequential front-end
-1 -1    #   dimensions: m n


# --- Level-1v -------------------------------------------------------------

1        # addv
1        #   test sequential front-end
-1       #   dimensions: m
?        #   parameters: conjx

1        # axpyv
1        #   test sequential front-end
-1       #   dimensions: m
?        #   parameters: conjx

1        # copyv
1        #   test sequential front-end
-1       #   dimensions: m
?        #   parameters: conjx

1        # dotv
1        #   test sequential front-end
-1       #   dimensions: m
??       #   parameters: conjx conjy

1        # dotxv
1        #   test sequential front-end
-1       #   dimensions: m
??       #   parameters: conjx conjy

1        # normfv
1        #   test sequential front-end
-1       #   dimensions: m

1        # scalv
1        #   test sequential front-end
-1       #   dimensions: m
?        #   parameters: conjbeta

1        # scal2v
1        #   test sequential front-end
-1       #   dimensions: m
?        #   parameters: conjx

1        # setv
1        #   test sequential front-end
-1       #   dimensions: m

1        # subv
1        #   test sequential front-end
-1       #   dimensions: m
?        #   parameters: conjx


# --- Level-1m -------------------------------------------------------------

1        # addm
1        #   test sequential front-end
-1 -2    #   dimensions: m n
?        #   parameters: transa

1        # axpym
1        #   test sequential front-end
-1 -1    #   dimensions: m n
?        #   parameters: transa

1        # copym
1        #   test sequential front-end
-1 -2    #   dimensions: m n
?        #   parameters: transa

1        # normfm
1        #   test sequential front-end
-1 -2    #   dimensions: m n

1        # scalm
1        #   test sequential front-end
-1 -2    #   dimensions: m n
?        #   parameters: conjbeta

1        # scal2m
1        #   test sequential front-end
-1 -2    #   dimensions: m n
?        #   parameters: transa

1        # setm
1        #   test sequential front-end
-1 -2    #   dimensions: m n

1        # subm
1        #   test sequential front-end
-1 -2    #   dimensions: m n
?        #   parameters: transa


# --- Level-1f kernels -----------------------------------------------------

1        # axpy2v
1        #   test sequential front-end
-1       #   dimensions: m
??       #   parameters: conjx conjy

1        # dotaxpyv
1        #   test sequential front-end
-1       #   dimensions: m
???      #   parameters: conjxt conjx conjy

1        # axpyf
1        #   test sequential front-end
-1       #   dimensions: m
??       #   parameters: conja conjx

1        # dotxf
1        #   test sequential front-end
-1       #   dimensions: m
??       #   parameters: conjat conjx

1        # dotxaxpyf
1        #   test sequential front-end
-1       #   dimensions: m
????     #   parameters: conjat conja conjw conjx


# --- Level-2 --------------------------------------------------------------

1        # gemv
1        #   test sequential front-end
-1 -2    #   dimensions: m n
??       #   parameters: transa conjx

1        # ger
1        #   test sequential front-end
-1 -2    #   dimensions: m n
??       #   parameters: conjx conjy

1        # hemv
1        #   test sequential front-end
-1       #   dimensions: m
???      #   parameters: uploa conja conjx

1        # her
1        #   test sequential front-end
-1       #   dimensions: m
??       #   parameters: uploc conjx

1        # her2
1        #   test sequential front-end
-1       #   dimensions: m
???      #   parameters: uploc conjx conjy

1        # symv
1        #   test sequential front-end
-1       #   dimensions: m
???      #   parameters: uploa conja conjx

1        # syr
1        #   test sequential front-end
-1       #   dimensions: m
??       #   parameters: uploc conjx

1        # syr2
1        #   test sequential front-end
-1       #   dimensions: m
???      #   parameters: uploc conjx conjy

1        # trmv
1        #   test sequential front-end
-1       #   dimensions: m
???      #   parameters: uploa transa diaga

1        # trsv
1        #   test sequential front-end
-1       #   dimensions: m
???      #   parameters: uploa transa diaga


# --- Level-3 micro-kernels ------------------------------------------------

1        # gemm
1        #   test sequential micro-kernel
-1       #   dimensions: k

1        # trsm
1        #   test sequential micro-kernel
?        #   parameters: uploa

1        # gemmtrsm
1        #   test sequential micro-kernel
-1       #   dimensions: k
?        #   parameters: uploa


# --- Level-3 --------------------------------------------------------------

1        # gemm
1        #   test sequential front-end
-1 -1 -1 #   dimensions: m n k
??       #   parameters: transa transb

1        # hemm
1        #   test sequential front-end
-1 -1    #   dimensions: m n
????     #   parameters: side uploa conja transb

1        # herk
1        #   test sequential front-end
-1 -1    #   dimensions: m k
??       #   parameters: uploc transa

1        # her2k
1        #   test sequential front-end
-1 -1    #   dimensions: m k
???      #   parameters: uploc transa transb

1        # symm
1        #   test sequential front-end
-1 -1    #   dimensions: m n
????     #   parameters: side uploa conja transb

1        # syrk
1        #   test sequential front-end
-1 -1    #   dimensions: m k
??       #   parameters: uploc transa

1        # syr2k
1        #   test sequential front-end
-1 -1    #   dimensions: m k
???      #   parameters: uploc transa transb

1        # trmm
1        #   test sequential front-end
-1 -1    #   dimensions: m n
????     #   parameters: side uploa transa diaga

1        # trmm3
1        #   test sequential front-end
-1 -1    #   dimensions: m n
?????    #   parameters: side uploa transa diaga transb

1        # trsm
1        #   test sequential front-end
-1 -1    #   dimensions: m n
????     #   parameters: side uploa transa diaga

