blob: 91222ddb2002811d5c99399610dcec52ea63e54e [file]
# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# This contains the test projects for the decoder.
load("//mpact/sim/decoder:mpact_sim_isa.bzl", "mpact_cc_library", "mpact_cc_test", "mpact_isa_decoder")
package(
default_applicable_licenses = ["//:license"],
)
mpact_cc_test(
name = "instruction_set_test",
size = "small",
srcs = [
"instruction_set_test.cc",
],
deps = [
"//mpact/sim/decoder:isa_parser",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
mpact_cc_test(
name = "bundle_test",
size = "small",
srcs = [
"bundle_test.cc",
],
deps = [
"//mpact/sim/decoder:isa_parser",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
mpact_cc_test(
name = "slot_test",
size = "small",
srcs = [
"slot_test.cc",
],
deps = [
"//mpact/sim/decoder:isa_parser",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
mpact_cc_test(
name = "opcode_test",
size = "small",
srcs = [
"opcode_test.cc",
],
deps = [
"//mpact/sim/decoder:isa_parser",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
mpact_cc_test(
name = "resource_test",
size = "small",
srcs = [
"resource_test.cc",
],
deps = [
"//mpact/sim/decoder:isa_parser",
"@com_google_absl//absl/container:btree",
"@com_google_absl//absl/status:statusor",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
mpact_cc_test(
name = "template_expression_test",
size = "small",
srcs = [
"template_expression_test.cc",
],
deps = [
"//mpact/sim/decoder:isa_parser",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/types:variant",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
mpact_cc_test(
name = "instruction_set_visitor_test",
size = "small",
srcs = [
"instruction_set_visitor_test.cc",
],
data = [
# Local include files.
"testfiles/empty_file.isa",
"testfiles/example.isa",
"testfiles/bundle_b.isa",
"testfiles/example_with_recursive_include.isa",
"testfiles/recursive_include.isa",
# Project exported include files.
"//mpact/sim/decoder/test/testfiles/include:empty_include.isa",
"//mpact/sim/decoder/test/testfiles/include:bundle_a.isa",
],
deps = [
"//mpact/sim/decoder:isa_parser",
"@com_google_absl//absl/flags:flag",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
mpact_isa_decoder(
name = "example_isa",
src = "testfiles/example.isa",
includes = [
":testfiles/bundle_b.isa",
"//mpact/sim/decoder/test/testfiles/include:bundle_a.isa",
"//mpact/sim/decoder/test/testfiles/include:empty_include.isa",
],
isa_name = "Example",
)
mpact_isa_decoder(
name = "combined_isa",
srcs = [
"testfiles/bundle_b.isa",
"testfiles/part1.isa",
],
includes = [
"//mpact/sim/decoder/test/testfiles/include:bundle_a.isa",
"//mpact/sim/decoder/test/testfiles/include:empty_include.isa",
],
isa_name = "Example",
)
mpact_cc_library(
name = "riscv32i",
hdrs = ["testfiles/riscv32i.h"],
deps = [
"//mpact/sim/generic:instruction",
],
)
mpact_isa_decoder(
name = "derived_isa",
src = "testfiles/derived.isa",
includes = [
":testfiles/base.isa",
],
isa_name = "RiscV32I",
deps = ["riscv32i"],
)
# The point of this test is to actually run the generator on the
# testfiles/example.isa grammar file, generate source files, and then compile
# the generated files and link into this test case. Provided that succeeds,
# this test case succeeds. See the :example_isa build rule for build options.
mpact_cc_test(
name = "example_decoder_test",
size = "small",
srcs = [
"example_decoder_test.cc",
],
deps = [
":example_isa",
"//mpact/sim/generic:arch_state",
"//mpact/sim/generic:instruction",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
# The point of this test is to actually run the generator on the
# testfiles/part1.isa grammar file, generate source files, and then compile
# the generated files and link into this test case. Provided that succeeds,
# this test case succeeds. See the :example_isa build rule for build options.
mpact_cc_test(
name = "combined_decoder_test",
size = "small",
srcs = [
"combined_decoder_test.cc",
],
deps = [
":combined_isa",
"//mpact/sim/generic:arch_state",
"//mpact/sim/generic:instruction",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
mpact_cc_test(
name = "extract_bits_test",
size = "small",
srcs = [
"extract_bits_test.cc",
],
deps = [
"@com_google_absl//absl/numeric:bits",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
mpact_cc_test(
name = "extract_test",
size = "small",
srcs = [
"extract_test.cc",
],
deps = [
"//mpact/sim/decoder:bin_format_visitor",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
mpact_cc_test(
name = "overlay_test",
size = "small",
srcs = [
"overlay_test.cc",
],
deps = [
"//mpact/sim/decoder:bin_format_visitor",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
mpact_cc_test(
name = "format_test",
size = "small",
srcs = [
"format_test.cc",
],
deps = [
"//mpact/sim/decoder:bin_format_visitor",
"//mpact/sim/decoder:decoder_error_listener",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
mpact_cc_test(
name = "bin_encoding_info_test",
size = "small",
srcs = [
"bin_encoding_info_test.cc",
],
deps = [
"//mpact/sim/decoder:bin_format_visitor",
"//mpact/sim/decoder:decoder_error_listener",
"@com_google_absl//absl/container:btree",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
mpact_cc_test(
name = "instruction_encoding_test",
size = "small",
srcs = [
"instruction_encoding_test.cc",
],
deps = [
"//mpact/sim/decoder:bin_format_visitor",
"//mpact/sim/decoder:decoder_error_listener",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
mpact_cc_test(
name = "bin_format_visitor_test",
size = "small",
srcs = [
"bin_format_visitor_test.cc",
],
data = [
# Local include files.
"testfiles/empty_file.bin_fmt",
"testfiles/riscv32_top.bin_fmt",
"testfiles/riscv32g.bin_fmt",
"testfiles/riscv32c.bin_fmt",
],
deps = [
"//mpact/sim/decoder:bin_format_visitor",
"@com_google_absl//absl/flags:flag",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)