2017-11-26 12:39:27 +01:00
|
|
|
add_library(dynarmic
|
2018-01-04 22:12:02 +01:00
|
|
|
../include/dynarmic/A32/a32.h
|
2018-01-27 23:36:55 +01:00
|
|
|
../include/dynarmic/A32/config.h
|
2018-01-04 22:12:02 +01:00
|
|
|
../include/dynarmic/A32/coprocessor.h
|
|
|
|
../include/dynarmic/A32/coprocessor_util.h
|
|
|
|
../include/dynarmic/A32/disassembler.h
|
2018-06-05 13:25:16 +02:00
|
|
|
../include/dynarmic/A64/a64.h
|
|
|
|
../include/dynarmic/A64/config.h
|
2018-06-05 13:27:37 +02:00
|
|
|
../include/dynarmic/A64/exclusive_monitor.h
|
2017-02-16 19:18:29 +01:00
|
|
|
common/address_range.h
|
2018-01-30 13:56:18 +01:00
|
|
|
common/aes.cpp
|
|
|
|
common/aes.h
|
2016-07-04 11:22:11 +02:00
|
|
|
common/assert.h
|
|
|
|
common/bit_util.h
|
2018-02-07 13:22:35 +01:00
|
|
|
common/cast_util.h
|
2016-07-04 11:22:11 +02:00
|
|
|
common/common_types.h
|
2018-01-29 18:31:50 +01:00
|
|
|
common/crc32.cpp
|
|
|
|
common/crc32.h
|
2018-07-17 20:53:21 +02:00
|
|
|
common/fp/fpcr.h
|
2018-06-26 21:51:25 +02:00
|
|
|
common/fp/fpsr.h
|
2018-07-23 17:22:16 +02:00
|
|
|
common/fp/fused.cpp
|
|
|
|
common/fp/fused.h
|
2018-07-14 10:41:36 +02:00
|
|
|
common/fp/info.h
|
2018-06-29 19:52:48 +02:00
|
|
|
common/fp/mantissa_util.h
|
2018-06-29 20:34:46 +02:00
|
|
|
common/fp/op.h
|
2018-07-23 17:22:16 +02:00
|
|
|
common/fp/op/FPMulAdd.cpp
|
|
|
|
common/fp/op/FPMulAdd.h
|
2018-07-16 14:48:30 +02:00
|
|
|
common/fp/op/FPRoundInt.cpp
|
|
|
|
common/fp/op/FPRoundInt.h
|
2018-07-22 19:18:22 +02:00
|
|
|
common/fp/op/FPRSqrtEstimate.cpp
|
|
|
|
common/fp/op/FPRSqrtEstimate.h
|
2018-07-16 13:51:36 +02:00
|
|
|
common/fp/op/FPToFixed.cpp
|
|
|
|
common/fp/op/FPToFixed.h
|
2018-06-27 14:51:39 +02:00
|
|
|
common/fp/process_exception.cpp
|
|
|
|
common/fp/process_exception.h
|
2018-07-16 14:48:13 +02:00
|
|
|
common/fp/process_nan.cpp
|
|
|
|
common/fp/process_nan.h
|
2018-06-26 16:10:44 +02:00
|
|
|
common/fp/rounding_mode.h
|
2018-06-27 14:52:20 +02:00
|
|
|
common/fp/unpacked.cpp
|
|
|
|
common/fp/unpacked.h
|
2018-06-26 21:54:42 +02:00
|
|
|
common/fp/util.h
|
2016-08-06 23:23:01 +02:00
|
|
|
common/intrusive_list.h
|
2016-08-24 21:07:08 +02:00
|
|
|
common/iterator_util.h
|
2018-02-18 12:20:43 +01:00
|
|
|
common/llvm_disassemble.cpp
|
|
|
|
common/llvm_disassemble.h
|
2018-03-12 19:52:27 +01:00
|
|
|
common/macro_util.h
|
|
|
|
common/math_util.h
|
2018-01-01 16:23:56 +01:00
|
|
|
common/memory_pool.cpp
|
2016-08-06 21:41:00 +02:00
|
|
|
common/memory_pool.h
|
2016-07-04 11:22:11 +02:00
|
|
|
common/mp.h
|
2018-07-15 15:25:31 +02:00
|
|
|
common/mp/append.h
|
|
|
|
common/mp/bind.h
|
|
|
|
common/mp/cartesian_product.h
|
|
|
|
common/mp/concat.h
|
|
|
|
common/mp/fapply.h
|
|
|
|
common/mp/fmap.h
|
|
|
|
common/mp/list.h
|
|
|
|
common/mp/lut.h
|
|
|
|
common/mp/to_tuple.h
|
|
|
|
common/mp/vlift.h
|
|
|
|
common/mp/vllift.h
|
2018-06-28 22:45:13 +02:00
|
|
|
common/safe_ops.h
|
2016-07-04 11:22:11 +02:00
|
|
|
common/scope_exit.h
|
2018-05-07 14:29:12 +02:00
|
|
|
common/sm4.cpp
|
|
|
|
common/sm4.h
|
2016-07-04 11:22:11 +02:00
|
|
|
common/string_util.h
|
2018-06-28 22:44:21 +02:00
|
|
|
common/u128.cpp
|
|
|
|
common/u128.h
|
2017-02-16 20:30:56 +01:00
|
|
|
common/variant_util.h
|
2018-01-01 16:23:56 +01:00
|
|
|
frontend/A32/decoder/arm.h
|
|
|
|
frontend/A32/decoder/thumb16.h
|
|
|
|
frontend/A32/decoder/thumb32.h
|
|
|
|
frontend/A32/decoder/vfp2.h
|
|
|
|
frontend/A32/disassembler/disassembler.h
|
|
|
|
frontend/A32/disassembler/disassembler_arm.cpp
|
|
|
|
frontend/A32/disassembler/disassembler_thumb.cpp
|
|
|
|
frontend/A32/FPSCR.h
|
2018-01-01 16:47:56 +01:00
|
|
|
frontend/A32/ir_emitter.cpp
|
|
|
|
frontend/A32/ir_emitter.h
|
2018-01-01 16:23:56 +01:00
|
|
|
frontend/A32/location_descriptor.cpp
|
|
|
|
frontend/A32/location_descriptor.h
|
|
|
|
frontend/A32/PSR.h
|
|
|
|
frontend/A32/translate/translate.cpp
|
|
|
|
frontend/A32/translate/translate.h
|
|
|
|
frontend/A32/translate/translate_arm.cpp
|
|
|
|
frontend/A32/translate/translate_arm/branch.cpp
|
|
|
|
frontend/A32/translate/translate_arm/coprocessor.cpp
|
|
|
|
frontend/A32/translate/translate_arm/data_processing.cpp
|
|
|
|
frontend/A32/translate/translate_arm/exception_generating.cpp
|
|
|
|
frontend/A32/translate/translate_arm/extension.cpp
|
|
|
|
frontend/A32/translate/translate_arm/load_store.cpp
|
|
|
|
frontend/A32/translate/translate_arm/misc.cpp
|
|
|
|
frontend/A32/translate/translate_arm/multiply.cpp
|
|
|
|
frontend/A32/translate/translate_arm/packing.cpp
|
|
|
|
frontend/A32/translate/translate_arm/parallel.cpp
|
|
|
|
frontend/A32/translate/translate_arm/reversal.cpp
|
|
|
|
frontend/A32/translate/translate_arm/saturated.cpp
|
|
|
|
frontend/A32/translate/translate_arm/status_register_access.cpp
|
|
|
|
frontend/A32/translate/translate_arm/synchronization.cpp
|
|
|
|
frontend/A32/translate/translate_arm/translate_arm.h
|
|
|
|
frontend/A32/translate/translate_arm/vfp2.cpp
|
|
|
|
frontend/A32/translate/translate_thumb.cpp
|
|
|
|
frontend/A32/types.cpp
|
|
|
|
frontend/A32/types.h
|
2018-01-05 00:05:27 +01:00
|
|
|
frontend/A64/decoder/a64.h
|
2018-01-11 14:02:15 +01:00
|
|
|
frontend/A64/decoder/a64.inc
|
2018-01-05 00:05:27 +01:00
|
|
|
frontend/A64/imm.h
|
2018-01-07 01:11:57 +01:00
|
|
|
frontend/A64/ir_emitter.cpp
|
|
|
|
frontend/A64/ir_emitter.h
|
2018-01-05 00:05:27 +01:00
|
|
|
frontend/A64/location_descriptor.cpp
|
|
|
|
frontend/A64/location_descriptor.h
|
2018-01-07 14:42:11 +01:00
|
|
|
frontend/A64/translate/impl/branch.cpp
|
2018-01-07 01:11:57 +01:00
|
|
|
frontend/A64/translate/impl/data_processing_addsub.cpp
|
2018-01-17 01:10:28 +01:00
|
|
|
frontend/A64/translate/impl/data_processing_bitfield.cpp
|
2018-02-05 00:08:16 +01:00
|
|
|
frontend/A64/translate/impl/data_processing_conditional_compare.cpp
|
2018-01-18 12:37:17 +01:00
|
|
|
frontend/A64/translate/impl/data_processing_conditional_select.cpp
|
2018-01-25 18:51:45 +01:00
|
|
|
frontend/A64/translate/impl/data_processing_crc32.cpp
|
2018-01-07 13:52:12 +01:00
|
|
|
frontend/A64/translate/impl/data_processing_logical.cpp
|
2018-01-23 15:51:57 +01:00
|
|
|
frontend/A64/translate/impl/data_processing_multiply.cpp
|
2018-01-07 12:41:17 +01:00
|
|
|
frontend/A64/translate/impl/data_processing_pcrel.cpp
|
2018-01-21 13:17:47 +01:00
|
|
|
frontend/A64/translate/impl/data_processing_register.cpp
|
2018-01-22 04:28:24 +01:00
|
|
|
frontend/A64/translate/impl/data_processing_shift.cpp
|
2018-01-08 23:03:03 +01:00
|
|
|
frontend/A64/translate/impl/exception_generating.cpp
|
2018-02-02 23:25:51 +01:00
|
|
|
frontend/A64/translate/impl/floating_point_compare.cpp
|
2018-02-05 13:25:04 +01:00
|
|
|
frontend/A64/translate/impl/floating_point_conditional_compare.cpp
|
2018-02-04 14:40:37 +01:00
|
|
|
frontend/A64/translate/impl/floating_point_conditional_select.cpp
|
2018-06-05 13:25:16 +02:00
|
|
|
frontend/A64/translate/impl/floating_point_conversion_fixed_point.cpp
|
|
|
|
frontend/A64/translate/impl/floating_point_conversion_integer.cpp
|
2018-02-03 01:52:48 +01:00
|
|
|
frontend/A64/translate/impl/floating_point_data_processing_one_register.cpp
|
2018-06-06 21:03:12 +02:00
|
|
|
frontend/A64/translate/impl/floating_point_data_processing_three_register.cpp
|
2018-02-02 23:04:09 +01:00
|
|
|
frontend/A64/translate/impl/floating_point_data_processing_two_register.cpp
|
2018-01-07 01:11:57 +01:00
|
|
|
frontend/A64/translate/impl/impl.cpp
|
2018-01-05 00:05:27 +01:00
|
|
|
frontend/A64/translate/impl/impl.h
|
2018-02-05 02:10:52 +01:00
|
|
|
frontend/A64/translate/impl/load_store_exclusive.cpp
|
2018-01-10 02:13:23 +01:00
|
|
|
frontend/A64/translate/impl/load_store_load_literal.cpp
|
2018-02-02 22:07:51 +01:00
|
|
|
frontend/A64/translate/impl/load_store_multiple_structures.cpp
|
2018-01-10 02:13:23 +01:00
|
|
|
frontend/A64/translate/impl/load_store_register_immediate.cpp
|
2018-01-10 03:05:08 +01:00
|
|
|
frontend/A64/translate/impl/load_store_register_pair.cpp
|
2018-02-04 13:18:57 +01:00
|
|
|
frontend/A64/translate/impl/load_store_register_register_offset.cpp
|
2018-01-22 08:37:27 +01:00
|
|
|
frontend/A64/translate/impl/load_store_register_unprivileged.cpp
|
A64: Implement load/store single structure instructions
Implements LD{1, 2, 3, 4}, LD{1, 2, 3, 4}R, and ST{1, 2, 3, 4} single
structure variants.
2018-07-04 20:05:53 +02:00
|
|
|
frontend/A64/translate/impl/load_store_single_structure.cpp
|
2018-01-15 22:47:28 +01:00
|
|
|
frontend/A64/translate/impl/move_wide.cpp
|
2018-07-14 03:01:57 +02:00
|
|
|
frontend/A64/translate/impl/simd_across_lanes.cpp
|
2018-01-30 13:56:18 +01:00
|
|
|
frontend/A64/translate/impl/simd_aes.cpp
|
2018-01-24 13:00:56 +01:00
|
|
|
frontend/A64/translate/impl/simd_copy.cpp
|
2018-01-26 03:28:03 +01:00
|
|
|
frontend/A64/translate/impl/simd_crypto_four_register.cpp
|
2018-04-09 02:49:43 +02:00
|
|
|
frontend/A64/translate/impl/simd_crypto_three_register.cpp
|
2018-04-02 23:10:28 +02:00
|
|
|
frontend/A64/translate/impl/simd_extract.cpp
|
2018-02-07 00:05:29 +01:00
|
|
|
frontend/A64/translate/impl/simd_modified_immediate.cpp
|
2018-02-05 04:29:14 +01:00
|
|
|
frontend/A64/translate/impl/simd_permute.cpp
|
2018-02-19 00:55:38 +01:00
|
|
|
frontend/A64/translate/impl/simd_scalar_pairwise.cpp
|
2018-04-12 15:40:44 +02:00
|
|
|
frontend/A64/translate/impl/simd_scalar_shift_by_immediate.cpp
|
2018-02-06 23:09:39 +01:00
|
|
|
frontend/A64/translate/impl/simd_scalar_three_same.cpp
|
2018-02-20 20:04:56 +01:00
|
|
|
frontend/A64/translate/impl/simd_scalar_two_register_misc.cpp
|
2018-03-29 22:41:42 +02:00
|
|
|
frontend/A64/translate/impl/simd_sha.cpp
|
2018-04-03 14:12:13 +02:00
|
|
|
frontend/A64/translate/impl/simd_sha512.cpp
|
2018-02-10 10:49:55 +01:00
|
|
|
frontend/A64/translate/impl/simd_shift_by_immediate.cpp
|
2018-04-02 22:15:51 +02:00
|
|
|
frontend/A64/translate/impl/simd_three_different.cpp
|
2018-01-21 18:45:43 +01:00
|
|
|
frontend/A64/translate/impl/simd_three_same.cpp
|
2018-02-10 17:47:50 +01:00
|
|
|
frontend/A64/translate/impl/simd_two_register_misc.cpp
|
2018-04-18 22:39:03 +02:00
|
|
|
frontend/A64/translate/impl/simd_vector_x_indexed_element.cpp
|
2018-02-11 23:53:46 +01:00
|
|
|
frontend/A64/translate/impl/sys_dc.cpp
|
2018-01-22 01:50:31 +01:00
|
|
|
frontend/A64/translate/impl/system.cpp
|
2018-01-05 00:05:27 +01:00
|
|
|
frontend/A64/translate/translate.cpp
|
|
|
|
frontend/A64/translate/translate.h
|
|
|
|
frontend/A64/types.cpp
|
|
|
|
frontend/A64/types.h
|
2016-07-04 11:22:11 +02:00
|
|
|
frontend/decoder/decoder_detail.h
|
2016-09-17 10:48:18 +02:00
|
|
|
frontend/decoder/matcher.h
|
2018-01-01 16:23:56 +01:00
|
|
|
frontend/ir/basic_block.cpp
|
2016-08-17 16:53:36 +02:00
|
|
|
frontend/ir/basic_block.h
|
2018-01-01 16:23:56 +01:00
|
|
|
frontend/ir/ir_emitter.cpp
|
2016-07-14 15:39:43 +02:00
|
|
|
frontend/ir/ir_emitter.h
|
2018-01-01 16:23:56 +01:00
|
|
|
frontend/ir/location_descriptor.cpp
|
2016-09-05 12:54:09 +02:00
|
|
|
frontend/ir/location_descriptor.h
|
2018-01-01 16:23:56 +01:00
|
|
|
frontend/ir/microinstruction.cpp
|
2016-08-17 16:53:36 +02:00
|
|
|
frontend/ir/microinstruction.h
|
2018-01-01 16:23:56 +01:00
|
|
|
frontend/ir/opcodes.cpp
|
2016-07-04 11:22:11 +02:00
|
|
|
frontend/ir/opcodes.h
|
2018-01-24 20:37:11 +01:00
|
|
|
frontend/ir/opcodes.inc
|
2016-08-17 16:53:36 +02:00
|
|
|
frontend/ir/terminal.h
|
2018-02-11 12:46:18 +01:00
|
|
|
frontend/ir/type.cpp
|
|
|
|
frontend/ir/type.h
|
2018-01-01 16:23:56 +01:00
|
|
|
frontend/ir/value.cpp
|
2016-08-17 16:53:36 +02:00
|
|
|
frontend/ir/value.h
|
2018-01-10 20:24:19 +01:00
|
|
|
ir_opt/a32_constant_memory_reads_pass.cpp
|
|
|
|
ir_opt/a32_get_set_elimination_pass.cpp
|
2018-02-11 23:53:46 +01:00
|
|
|
ir_opt/a64_callback_config_pass.cpp
|
2018-01-27 00:37:54 +01:00
|
|
|
ir_opt/a64_get_set_elimination_pass.cpp
|
2018-01-13 22:51:13 +01:00
|
|
|
ir_opt/a64_merge_interpret_blocks.cpp
|
2018-01-01 16:23:56 +01:00
|
|
|
ir_opt/constant_propagation_pass.cpp
|
|
|
|
ir_opt/dead_code_elimination_pass.cpp
|
2016-07-21 22:48:45 +02:00
|
|
|
ir_opt/passes.h
|
2018-01-01 16:23:56 +01:00
|
|
|
ir_opt/verification_pass.cpp
|
2017-11-26 12:39:27 +01:00
|
|
|
)
|
2016-07-04 11:22:11 +02:00
|
|
|
|
2016-12-11 16:35:26 +01:00
|
|
|
if (ARCHITECTURE_x86_64)
|
2017-11-26 12:39:27 +01:00
|
|
|
target_sources(dynarmic PRIVATE
|
2018-01-01 23:34:05 +01:00
|
|
|
backend_x64/a32_emit_x64.cpp
|
|
|
|
backend_x64/a32_emit_x64.h
|
2018-01-04 22:12:02 +01:00
|
|
|
backend_x64/a32_interface.cpp
|
2018-01-01 23:49:17 +01:00
|
|
|
backend_x64/a32_jitstate.cpp
|
|
|
|
backend_x64/a32_jitstate.h
|
2018-01-06 22:15:25 +01:00
|
|
|
backend_x64/a64_emit_x64.cpp
|
|
|
|
backend_x64/a64_emit_x64.h
|
2018-06-05 13:27:37 +02:00
|
|
|
backend_x64/a64_exclusive_monitor.cpp
|
2018-01-06 22:15:25 +01:00
|
|
|
backend_x64/a64_interface.cpp
|
|
|
|
backend_x64/a64_jitstate.cpp
|
|
|
|
backend_x64/a64_jitstate.h
|
2016-12-11 16:35:26 +01:00
|
|
|
backend_x64/abi.cpp
|
2018-01-01 16:23:56 +01:00
|
|
|
backend_x64/abi.h
|
2016-12-11 16:35:26 +01:00
|
|
|
backend_x64/block_of_code.cpp
|
2018-01-01 16:23:56 +01:00
|
|
|
backend_x64/block_of_code.h
|
2018-01-23 20:16:39 +01:00
|
|
|
backend_x64/block_range_information.cpp
|
|
|
|
backend_x64/block_range_information.h
|
2018-01-06 22:15:25 +01:00
|
|
|
backend_x64/callback.cpp
|
|
|
|
backend_x64/callback.h
|
2017-03-18 18:20:21 +01:00
|
|
|
backend_x64/constant_pool.cpp
|
2018-01-01 16:23:56 +01:00
|
|
|
backend_x64/constant_pool.h
|
2018-01-28 18:56:26 +01:00
|
|
|
backend_x64/devirtualize.h
|
2016-12-11 16:35:26 +01:00
|
|
|
backend_x64/emit_x64.cpp
|
2018-01-01 16:23:56 +01:00
|
|
|
backend_x64/emit_x64.h
|
2018-01-30 13:56:18 +01:00
|
|
|
backend_x64/emit_x64_aes.cpp
|
2018-01-25 18:51:45 +01:00
|
|
|
backend_x64/emit_x64_crc32.cpp
|
2018-01-23 14:21:10 +01:00
|
|
|
backend_x64/emit_x64_data_processing.cpp
|
|
|
|
backend_x64/emit_x64_floating_point.cpp
|
|
|
|
backend_x64/emit_x64_packed.cpp
|
|
|
|
backend_x64/emit_x64_saturation.cpp
|
2018-05-07 14:29:12 +02:00
|
|
|
backend_x64/emit_x64_sm4.cpp
|
2018-01-23 14:21:10 +01:00
|
|
|
backend_x64/emit_x64_vector.cpp
|
2018-02-11 13:17:53 +01:00
|
|
|
backend_x64/emit_x64_vector_floating_point.cpp
|
2016-12-11 16:35:26 +01:00
|
|
|
backend_x64/hostloc.cpp
|
2018-01-01 16:23:56 +01:00
|
|
|
backend_x64/hostloc.h
|
2018-01-04 22:12:02 +01:00
|
|
|
backend_x64/jitstate_info.h
|
2017-02-22 00:38:36 +01:00
|
|
|
backend_x64/oparg.h
|
2018-01-01 16:23:56 +01:00
|
|
|
backend_x64/reg_alloc.cpp
|
2016-12-11 16:35:26 +01:00
|
|
|
backend_x64/reg_alloc.h
|
2017-11-26 12:39:27 +01:00
|
|
|
)
|
2016-12-11 16:38:00 +01:00
|
|
|
|
|
|
|
if (WIN32)
|
2017-11-26 12:39:27 +01:00
|
|
|
target_sources(dynarmic PRIVATE backend_x64/exception_handler_windows.cpp)
|
2016-12-11 16:38:00 +01:00
|
|
|
else()
|
2017-11-26 12:39:27 +01:00
|
|
|
target_sources(dynarmic PRIVATE backend_x64/exception_handler_generic.cpp)
|
2016-12-11 16:38:00 +01:00
|
|
|
endif()
|
2016-12-11 16:35:26 +01:00
|
|
|
else()
|
|
|
|
message(FATAL_ERROR "Unsupported architecture")
|
|
|
|
endif()
|
|
|
|
|
2016-08-25 19:22:08 +02:00
|
|
|
include(CreateDirectoryGroups)
|
2017-11-26 12:39:27 +01:00
|
|
|
create_target_directory_groups(dynarmic)
|
2016-08-25 19:22:08 +02:00
|
|
|
|
|
|
|
target_include_directories(dynarmic
|
|
|
|
PUBLIC ../include
|
|
|
|
PRIVATE .)
|
2016-12-19 01:41:21 +01:00
|
|
|
target_compile_options(dynarmic PRIVATE ${DYNARMIC_CXX_FLAGS})
|
2017-03-07 22:53:33 +01:00
|
|
|
target_link_libraries(dynarmic
|
2017-12-07 21:28:33 +01:00
|
|
|
PUBLIC
|
2017-03-07 22:53:33 +01:00
|
|
|
boost
|
2017-12-07 21:28:33 +01:00
|
|
|
PRIVATE
|
2017-08-27 20:50:19 +02:00
|
|
|
fmt::fmt
|
2017-03-07 22:53:33 +01:00
|
|
|
xbyak
|
|
|
|
$<$<BOOL:DYNARMIC_USE_LLVM>:${llvm_libs}>
|
|
|
|
)
|
2018-01-24 20:14:19 +01:00
|
|
|
if (DYNARMIC_ENABLE_CPU_FEATURE_DETECTION)
|
|
|
|
target_compile_definitions(dynarmic PRIVATE DYNARMIC_ENABLE_CPU_FEATURE_DETECTION=1)
|
|
|
|
endif()
|
2016-08-25 23:21:19 +02:00
|
|
|
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
|
|
|
target_compile_definitions(dynarmic PRIVATE FMT_USE_WINDOWS_H=0)
|
|
|
|
endif()
|