| // Copyright (C) 2023 The Android Open Source Project |
| // |
| // 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 |
| // |
| // http://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. |
| // |
| |
| package { |
| default_applicable_licenses: ["Android-Apache-2.0"], |
| } |
| |
| python_binary_host { |
| name: "berberis_gen_lir", |
| main: "gen_lir.py", |
| srcs: ["gen_lir.py"], |
| libs: ["gen_lir_lib"], |
| } |
| |
| python_library_host { |
| name: "gen_lir_lib", |
| srcs: ["gen_lir_lib.py"], |
| libs: ["asm_defs_lib"], |
| } |
| |
| python_binary_host { |
| name: "berberis_gen_reg_class", |
| main: "gen_reg_class.py", |
| srcs: ["gen_reg_class.py"], |
| libs: ["gen_reg_class_lib"], |
| } |
| |
| python_library_host { |
| name: "gen_reg_class_lib", |
| srcs: ["gen_reg_class_lib.py"], |
| } |
| |
| filegroup { |
| name: "libberberis_backend_machine_ir_gen_inputs_x86_64", |
| srcs: ["x86_64/lir_instructions.json"], |
| } |
| |
| filegroup { |
| name: "libberberis_backend_reg_class_gen_inputs_x86_64", |
| srcs: ["x86_64/reg_class_def.json"], |
| } |
| |
| filegroup { |
| name: "libberberis_backend_gen_inputs_riscv64_to_x86_64", |
| srcs: [ |
| ":libberberis_backend_machine_ir_gen_inputs_x86_64", |
| ":libberberis_machine_ir_intrinsic_binding_riscv64_to_x86_64", |
| ":libberberis_assembler_gen_inputs_x86_64", |
| ":libberberis_macro_assembler_gen_inputs_riscv64_to_x86_64", |
| ], |
| } |
| |
| genrule_defaults { |
| name: "berberis_backend_machine_ir_gen_headers_x86_64_defaults", |
| out: [ |
| "insn-inl_x86_64.h", |
| "machine_info_x86_64-inl.h", |
| "machine_opcode_x86_64-inl.h", |
| "gen_machine_ir_x86_64-inl.h", |
| ], |
| tools: ["berberis_gen_lir"], |
| cmd: "$(location berberis_gen_lir) --headers $(out) $(in)", |
| // Targets using these defaults must provide the following guest-specific |
| // fields. lir instructions MUST end with `lir_instructions.json` and |
| // machine ir instrinsic bindngs MUST end with |
| // `machine_ir_intrinsice_binding.json`. Order matters and def's have no |
| // naming requirements: |
| // srcs: [ |
| // <lir_instructions.json> |
| // ... |
| // <machine_ir_intrinsic_binding.json> |
| // ... |
| // <def> |
| // ... |
| // ], |
| } |
| |
| genrule { |
| name: "libberberis_backend_machine_ir_gen_headers_riscv64_to_x86_64", |
| defaults: ["berberis_backend_machine_ir_gen_headers_x86_64_defaults"], |
| srcs: [":libberberis_backend_gen_inputs_riscv64_to_x86_64"], |
| } |
| |
| genrule_defaults { |
| name: "libberberis_backend_machine_ir_gen_sources_x86_64_defaults", |
| out: [ |
| "gen_code_emit_x86_64.cc", |
| "gen_code_debug_x86_64.cc", |
| ], |
| tools: ["berberis_gen_lir"], |
| cmd: "$(location berberis_gen_lir) --sources $(out) $(in)", |
| // Targets using these defaults must provide the following guest-specific |
| // fields. lir instructions MUST end with `lir_instructions.json` and |
| // machine ir instrinsic bindngs MUST end with |
| // `machine_ir_intrinsice_binding.json`. Order matters and def's have no |
| // naming requirements: |
| // srcs: [ |
| // <lir_instructions.json> |
| // ... |
| // <machine_ir_intrinsic_binding.json> |
| // ... |
| // <def> |
| // ... |
| // ], |
| } |
| |
| genrule { |
| name: "libberberis_backend_machine_ir_gen_sources_riscv64_to_x86_64", |
| defaults: ["libberberis_backend_machine_ir_gen_sources_x86_64_defaults"], |
| srcs: [":libberberis_backend_gen_inputs_riscv64_to_x86_64"], |
| } |
| |
| genrule { |
| name: "libberberis_backend_reg_class_gen_headers_x86_64", |
| out: ["machine_reg_class_x86_64-inl.h"], |
| srcs: [":libberberis_backend_reg_class_gen_inputs_x86_64"], |
| tools: ["berberis_gen_reg_class"], |
| cmd: "$(location berberis_gen_reg_class) $(out) $(in)", |
| } |
| |
| cc_library_headers { |
| name: "libberberis_backend_headers", |
| defaults: ["berberis_defaults"], |
| host_supported: true, |
| export_include_dirs: ["include"], |
| header_libs: [ |
| "libberberis_assembler_headers", |
| "libberberis_base_headers", |
| ], |
| export_header_lib_headers: [ |
| "libberberis_assembler_headers", |
| "libberberis_base_headers", |
| ], |
| } |
| |
| cc_library_headers { |
| name: "libberberis_backend_headers_riscv64_to_x86_64", |
| defaults: ["berberis_defaults_64"], |
| host_supported: true, |
| header_libs: [ |
| "libberberis_backend_headers", |
| "libberberis_guest_state_riscv64_headers", |
| "libberberis_macro_assembler_headers_riscv64_to_x86_64", |
| ], |
| export_header_lib_headers: [ |
| "libberberis_backend_headers", |
| "libberberis_guest_state_riscv64_headers", |
| "libberberis_macro_assembler_headers_riscv64_to_x86_64", |
| ], |
| generated_headers: [ |
| "libberberis_backend_machine_ir_gen_headers_riscv64_to_x86_64", |
| "libberberis_backend_reg_class_gen_headers_x86_64", |
| ], |
| export_generated_headers: [ |
| "libberberis_backend_machine_ir_gen_headers_riscv64_to_x86_64", |
| "libberberis_backend_reg_class_gen_headers_x86_64", |
| ], |
| } |
| |
| filegroup { |
| name: "berberis_backend_srcs", |
| srcs: [ |
| "common/lifetime_analysis.cc", |
| "common/machine_ir_debug.cc", |
| "common/machine_ir_opt.cc", |
| "common/reg_alloc.cc", |
| "x86_64/code.cc", |
| "x86_64/code_debug.cc", |
| "x86_64/code_emit.cc", |
| "x86_64/context_liveness_analyzer.cc", |
| "x86_64/insn_folding.cc", |
| "x86_64/liveness_analyzer.cc", |
| "x86_64/local_guest_context_optimizer.cc", |
| "x86_64/loop_guest_context_optimizer.cc", |
| "x86_64/machine_ir_analysis.cc", |
| "x86_64/machine_ir_check.cc", |
| "x86_64/machine_ir_opt.cc", |
| "x86_64/rename_copy_uses.cc", |
| "x86_64/rename_vregs.cc", |
| "x86_64/rename_vregs_local.cc", |
| ], |
| } |
| |
| cc_defaults { |
| name: "berberis_backend_defaults", |
| srcs: [ |
| ":berberis_backend_srcs", |
| ], |
| header_libs: [ |
| "libberberis_base_headers", |
| "libberberis_code_gen_lib_headers", |
| "libberberis_runtime_primitives_headers", |
| ], |
| } |
| |
| cc_library_static { |
| name: "libberberis_backend_riscv64_to_x86_64", |
| defaults: [ |
| "berberis_defaults_64", |
| "berberis_backend_defaults", |
| ], |
| host_supported: true, |
| generated_sources: [ |
| "libberberis_backend_machine_ir_gen_sources_riscv64_to_x86_64", |
| ], |
| header_libs: [ |
| "libberberis_backend_headers_riscv64_to_x86_64", |
| ], |
| srcs: [ |
| "riscv64_to_x86_64/code_gen.cc", |
| ], |
| } |
| |
| cc_library_headers { |
| name: "libberberis_backend_testing_x86_64_headers", |
| defaults: ["berberis_defaults_64"], |
| export_include_dirs: ["testing/include"], |
| host_supported: true, |
| } |
| |
| filegroup { |
| name: "libberberis_backend_x86_64_test_srcs", |
| srcs: [ |
| "common/machine_ir_test.cc", |
| "x86_64/context_liveness_analyzer_test.cc", |
| "x86_64/insn_folding_test.cc", |
| "x86_64/liveness_analyzer_test.cc", |
| "x86_64/local_guest_context_optimizer_test.cc", |
| "x86_64/loop_guest_context_optimizer_test.cc", |
| "x86_64/machine_ir_analysis_test.cc", |
| "x86_64/machine_ir_check_test.cc", |
| "x86_64/machine_ir_exec_test.cc", |
| "x86_64/machine_ir_opt_test.cc", |
| "x86_64/machine_ir_test.cc", |
| "x86_64/machine_ir_test_corpus.cc", |
| "x86_64/rename_copy_uses_test.cc", |
| "x86_64/rename_vregs_test.cc", |
| "x86_64/rename_vregs_local_test.cc", |
| ], |
| } |
| |
| cc_defaults { |
| name: "libberberis_backend_x86_64_test_defaults", |
| srcs: [":libberberis_backend_x86_64_test_srcs"], |
| header_libs: [ |
| "libberberis_backend_testing_x86_64_headers", |
| "libberberis_code_gen_lib_headers", |
| "libberberis_guest_state_headers", |
| "berberis_test_utils_headers", |
| ], |
| // Targets using these defaults must provide the following guest-specific fields: |
| // header_libs: [ |
| // "libberberis_backend_headers_<guest>_to_x86_64", |
| // "libberberis_guest_state_<guest>_headers", |
| // ], |
| } |
| |
| cc_test_library { |
| name: "libberberis_backend_riscv64_to_x86_64_unit_tests", |
| defaults: [ |
| "berberis_defaults_64", |
| "libberberis_backend_x86_64_test_defaults", |
| ], |
| host_supported: true, |
| header_libs: [ |
| "libberberis_backend_headers_riscv64_to_x86_64", |
| "libberberis_guest_state_riscv64_headers", |
| ], |
| shared: { |
| enabled: false, |
| }, |
| } |