load("@heir//tests/Examples/benchmark:benchmark.bzl", "heir_benchmark_test")
load("@heir//tests/llvm_runner:llvm_runner.bzl", "llvm_runner_test")
load("@rules_python//python:py_binary.bzl", "py_binary")

package(default_applicable_licenses = ["@heir//:license"])

py_binary(
    name = "generate_test_cases",
    srcs = [
        "generate_test_cases.py",
    ],
    deps = [
        "@heir_pip_deps//sympy",
        "@heir_pip_deps//tomli",
    ],
)

heir_benchmark_test(
    name = "ntt_benchmark_test",
    heir_opt_flags = ["--heir-polynomial-to-llvm"],
    mlir_src = "ntt_benchmark.mlir",
    test_src = ["ntt_benchmark_test.cc"],
    deps = [
        "@google_benchmark//:benchmark_main",
        "@heir//tests/Examples/benchmark:Memref",
    ],
)

llvm_runner_test(
    name = "lower_add",
    heir_opt_flags = [
        "--emit-c-interface",
        "--heir-polynomial-to-llvm",
    ],
    main_c_src = "lower_add_test.cc",
    mlir_src = "lower_add.mlir",
)

llvm_runner_test(
    name = "lower_intt",
    heir_opt_flags = [
        "--emit-c-interface",
        "--heir-polynomial-to-llvm",
    ],
    main_c_src = "lower_intt_test.cc",
    mlir_src = "lower_intt.mlir",
)

llvm_runner_test(
    name = "lower_leading_term",
    heir_opt_flags = [
        "--emit-c-interface",
        "--heir-polynomial-to-llvm",
    ],
    main_c_src = "lower_leading_term_test.cc",
    mlir_src = "lower_leading_term.mlir",
)

llvm_runner_test(
    name = "lower_mul",
    heir_opt_flags = [
        "--emit-c-interface",
        "--heir-polynomial-to-llvm",
    ],
    main_c_src = "lower_mul_test.cc",
    mlir_src = "lower_mul.mlir",
)

llvm_runner_test(
    name = "lower_mul_ntt_roundtrip",
    heir_opt_flags = [
        "--attach-ntt-roots",
        "--emit-c-interface",
        "--heir-polynomial-to-llvm",
    ],
    main_c_src = "lower_mul_ntt_roundtrip_test.cc",
    mlir_src = "lower_mul_ntt_roundtrip.mlir",
)

llvm_runner_test(
    name = "lower_ntt",
    heir_opt_flags = [
        "--emit-c-interface",
        "--heir-polynomial-to-llvm",
    ],
    main_c_src = "lower_ntt_test.cc",
    mlir_src = "lower_ntt.mlir",
)

llvm_runner_test(
    name = "lower_ntt_rns",
    heir_opt_flags = [
        "--emit-c-interface",
        "--heir-polynomial-to-llvm",
    ],
    main_c_src = "lower_ntt_rns_test.cc",
    mlir_src = "lower_ntt_rns.mlir",
)

llvm_runner_test(
    name = "lower_intt_rns",
    heir_opt_flags = [
        "--emit-c-interface",
        "--heir-polynomial-to-llvm",
    ],
    main_c_src = "lower_intt_rns_test.cc",
    mlir_src = "lower_intt_rns.mlir",
)

# -- AUTOGENERATED_BELOW

llvm_runner_test(
    name = "lower_mul_0",
    heir_opt_flags = [
        "--emit-c-interface",
        "--heir-polynomial-to-llvm",
    ],
    main_c_src = "lower_mul_0_test.cc",
    mlir_src = "lower_mul_0.mlir",
)

llvm_runner_test(
    name = "lower_mul_1",
    heir_opt_flags = [
        "--emit-c-interface",
        "--heir-polynomial-to-llvm",
    ],
    main_c_src = "lower_mul_1_test.cc",
    mlir_src = "lower_mul_1.mlir",
)

llvm_runner_test(
    name = "lower_mul_2",
    heir_opt_flags = [
        "--emit-c-interface",
        "--heir-polynomial-to-llvm",
    ],
    main_c_src = "lower_mul_2_test.cc",
    mlir_src = "lower_mul_2.mlir",
)

llvm_runner_test(
    name = "lower_mul_3",
    heir_opt_flags = [
        "--emit-c-interface",
        "--heir-polynomial-to-llvm",
    ],
    main_c_src = "lower_mul_3_test.cc",
    mlir_src = "lower_mul_3.mlir",
)

llvm_runner_test(
    name = "lower_mul_4",
    heir_opt_flags = [
        "--emit-c-interface",
        "--heir-polynomial-to-llvm",
    ],
    main_c_src = "lower_mul_4_test.cc",
    mlir_src = "lower_mul_4.mlir",
)

llvm_runner_test(
    name = "lower_mul_5",
    heir_opt_flags = [
        "--emit-c-interface",
        "--heir-polynomial-to-llvm",
    ],
    main_c_src = "lower_mul_5_test.cc",
    mlir_src = "lower_mul_5.mlir",
)

llvm_runner_test(
    name = "lower_mul_6",
    heir_opt_flags = [
        "--emit-c-interface",
        "--heir-polynomial-to-llvm",
    ],
    main_c_src = "lower_mul_6_test.cc",
    mlir_src = "lower_mul_6.mlir",
)

llvm_runner_test(
    name = "lower_mul_7",
    heir_opt_flags = [
        "--emit-c-interface",
        "--heir-polynomial-to-llvm",
    ],
    main_c_src = "lower_mul_7_test.cc",
    mlir_src = "lower_mul_7.mlir",
)

llvm_runner_test(
    name = "lower_mul_8",
    heir_opt_flags = [
        "--emit-c-interface",
        "--heir-polynomial-to-llvm",
    ],
    main_c_src = "lower_mul_8_test.cc",
    mlir_src = "lower_mul_8.mlir",
)

llvm_runner_test(
    name = "lower_mul_9",
    heir_opt_flags = [
        "--emit-c-interface",
        "--heir-polynomial-to-llvm",
    ],
    main_c_src = "lower_mul_9_test.cc",
    mlir_src = "lower_mul_9.mlir",
)

llvm_runner_test(
    name = "lower_poly_eval",
    heir_opt_flags = [
        "--emit-c-interface",
        "--heir-polynomial-to-llvm",
    ],
    main_c_src = "lower_poly_eval_test.cc",
    mlir_src = "lower_poly_eval.mlir",
)
