# Benchmark regression profile structure is defined as:
#
# [<tfhe-rs_backend>.<regression_profile_name>]
# target.<target_name> = ["<operation_name>", ]
# env.<variable_name> = "<variable_value>"
# slab.backend = "<provider_name>"
# slab.profile = "<slab_profile_name>"
#
# Each tfhe-rs_backend **must** have one regression_profile_name named `default`.
#
# Details:
# --------
#
# > tfhe-rs_backend: name of the backend to use to run the benchmarks
#   Possible values are:
#       * cpu
#       * gpu
#       * hpu
#
# > regression_profile_name: any string (containing only dash or underscore as special chars)
#   Each tfhe-rs backend should have a default profile.
#
# > target.<target_name>: list of operations to benchmark on the given tfhe-rs benchmark target
#   A profile can have multiple targets.
#   Possible values for target_name are listed in tfhe-benchmark/Cargo.toml file under `[[bench]]` section in the
#   `name` field.
#
# > parameters_filter: a parameters' set name pattern to filter against when performing data extraction
#
# > env.<variable_name>: environment variable that will be used to alter benchmark execution enviroment
#   Possible values for variable_name are (case-insensitive):
#       * FAST_BENCH
#       * BENCH_OP_FLAVOR
#       * BENCH_TYPE
#       * BENCH_PARAM_TYPE
#       * BENCH_PARAMS_SET
#
# > slab.backend: name of on-demand instance provider 
#   Possible values are:
#       * aws
#       * hyperstack
#
# > slab.profile: on-demand instance profile to use for the benchmark
#   See ci/slab.toml file to have the list of all supported profiles.

[gpu.default]
target.integer = [
    "add",
    "mul",
    "div_rem",
    "bitand",
    "bitnot",
    "left_shift",
    "rotate_left",
    "max",
    "eq",
    "gt",
    "if_then_else",
    "neg",
    "leading_zeros",
    "ilog2",
]
target.hlapi-dex = [
    "swap_request::whitepaper",
    "swap_request::no_cmux",
    "swap_claim::whitepaper",
    "swap_claim::no_cmux"
]
target.hlapi-erc20 = ["transfer::whitepaper", "transfer::no_cmux"]
target.core_crypto-ks = ["keyswitch"]
target.core_crypto-pbs = ["multi_bit_pbs"]
parameters_filter = "PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128"
slab.backend = "hyperstack"
slab.profile = "multi-h100-sxm5"
env.fast_bench = "TRUE"
env.bench_param_type = "MULTI_BIT"

[cpu.default]
target.integer = [
    "add_parallelized",
    "mul_parallelized",
    "div_rem_parallelized",
    "bitand_parallelized",
    "bitnot",
    "left_shift_parallelized",
    "rotate_left_parallelized",
    "max_parallelized",
    "eq_parallelized",
    "gt_parallelized",
    "if_then_else_parallelized",
    "flip_parallelized",
    "neg_parallelized",
    "leading_zeros_parallelized",
    "ilog2_parallelized",
]
target.hlapi-dex = [
    "swap_request::whitepaper",
    "swap_request::no_cmux",
    "swap_claim::whitepaper",
    "swap_claim::no_cmux"
]
target.hlapi-erc20 = ["transfer::whitepaper", "transfer::no_cmux"]
target.shortint = ["bitand"]
target.core_crypto-ks = ["keyswitch"]
target.core_crypto-pbs = [ "pbs_mem_optimized"]
parameters_filter = "PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128"
slab.backend = "aws"
slab.profile = "bench"
env.fast_bench = "TRUE"
